为多处理器系统设计程序的制作方法
【专利摘要】一种为包括多个散布的处理器和存储器的多处理器系统产生程序的计算机实现的方法。用户可利用程序设计语言指定或产生源代码。源代码指定多个任务和在多个任务之间的数据通信。但是,源代码可不(并且优选地不需要)1)明确指定哪个物理处理器执行各任务和2)在多个任务当中明确指定使用哪个通信机制。于是该方法能够基于源代码产生机器语言指令,其中机器语言指令设计用于在多个处理器上执行。机器语言指令的产生包括将用于执行的任务分配给相应的处理器和基于相应处理器的位置和必要的数据通信选择处理器之间的通信机制,以满足系统要求。
【专利说明】为多处理器系统设计程序
[0001]本申请是于2007年3月27日提交的、于2008年11月7日进入中国国家阶段的、PCT申请号为PCT/US2007/065268、国家申请号为200780019634.X、发明名称为“为多处理器系统设计程序”的申请之分案申请。
【技术领域】
[0002]本发明涉及一种用于为具有多处理器的计算系统设计程序的方法论和工具。
【背景技术】
[0003]由于高时钟频率处功率系数下降,所以通过增加时钟速度来增强处理器性能的传统手段将达到极限。采用多处理器的计算系统作为计算中性能定标问题(performancescaling problem)的解决方案已出现。多处理器系统的出现要求常规程序设计范例从单线程串行程序设计和顺序执行到并行程序设计和并行执行的根本变化。
[0004]从程序设计的观点,从单处理器到多处理器的硬件结构的改变要求重新考虑算法开发和使用存储器与通信的特定最佳方式。新的问题同样存在于对许多同时运转的进程的全然复杂性进行管理中。在多芯芯片上实现多处理器系统的能力急剧地改变处理、存储器存储、和通信之间的平衡。
[0005]例如,在传统的单处理器系统中,存储器倾向于大、统一、和分层。在速度和功率方面存储器访问迅速而通信相对地费用高,因此当多个常规单处理器系统连接到一起以形成多处理器系统时策略是使通信最少。在基于高度集成和连接大多芯处理器芯片的多处理器系统中,通信的费用相对地便宜。为处理器向与其它处理器或存储器的有效的通信提供丰富的通信通道,因此,这样的系统中的存储器倾向于是较小的、分布的、并且不太分层的。结果,现代多处理器系统不同的存储器结构和复杂的通信机构提出有意义的程序设计生产率挑战。
[0006]因此,需要改善的工具和改善的方法学以改善并行程序设计的生产率。
【发明内容】
[0007]发明的实施方式可在多处理器系统中使用,即在包括多处理器、存储器(统一的和/或分布的)、和通信网络资源的并行计算平台中使用。一个示例性多处理器系统包括称为HyperX结构的系统。总之,HyperX结构的中心核心构件块是可升级的基于单元体的硬件架构、HyperSlice。整个硬件结构通过复制该核心单元体以产生多芯并行处理系统而形成。各个HyperSlice包含DMR (数据存储器和路由器)和处理元件(PE)。DMR提供数据存储器、控制逻辑、寄存器、和用于到处理资源的快速路由选择服务的路由器。DMR结构允许不同可互换的PE在多处理器架构中使用,以优化用于特定应用的系统。HyperX多处理器系统可包括异类或同类阵列的PE。
[0008]开发用于这样多种可能的PE组合的并行编译器是令人不敢问津的花费高的任务。本发明的实施方式通过以下方式避开该问题:产生多个自动步骤以有效地将并行程序分解成用于系统中的每个处理器的多个常规串行程序,以便能够使用为单处理器系统编写的常规编译器。
[0009]本发明的实施方式在不需要并行程序设计中的专门知识或对机器结构的详细知识的情况下允许有效的程序开发。程序编写成结构上独立于实际处理器核心或使用的其它资源。产生的目标码能够容易地重新将系统中的任何处理器核心作为目标。自动地执行通信、到处理器的任务分配、和对程序变量的存储器分配,以满足诸如等待时间、通过量(throughput)、功率、和资源限制的系统级设计约束条件。通信通过程序中以符号形式表示的信息传递或共享存储器实现,并且不要求需要理解通信架构的硬件结构。产生通信合成过程以无死锁地将符号通信表示转换成有效的物理通信路由选择方案。设计系统具有自上而下的持续的验证流程。高级别处使用的测试能够用于验证设计流程的较低级别处的设计。
[0010]最后,本发明的实施方式提供一种机制(mechanism)来图形地或程序地表示和模型化设计中的固有并行性,以手动地或自动地优化并行性,并且图形地和交互地使并行性可视。
[0011]在一个实施方式中,描述一种为多处理器系统产生程序的计算机实现的方法。多处理器系统包括多个处理器,其中每个处理器耦联至至少一个其它的处理器,并且其中在相应的处理器之间具有多个通信机构。多处理器系统可包括耦联至处理器、例如散布在处理器中间的多个存储器。更具体而言,多处理器系统可包括耦联至、例如散布在处理器中间的多个通信单元,其中每个通信单元包括存储器和路由选择逻辑。
[0012]该方法可包括响应于用户输入的首先存储源代码,其中源代码指定第一功能性(functionality)。例如,用户可利用程序设计语言指定或产生源代码。源代码用于在多处理器上执行。源代码指定多个任务和多个任务之间的数据通信。但是,源代码可不(在一个实施方式中不要求)O明确地指定哪个处理器执行各任务和/或2)明确地指定在多个任务之中使用哪个通信机构。源代码可以符号“发送”和“接收”形式指定任务之间的通信。可能的通信机构可包括在处理器中相应的处理器之间传递的消息和在处理器中相应的处理器之间的共享变量的使用。
[0013]然后该方法基于源代码产生机器语言指令,其中机器语言指令设计用于在多个处理器上执行。换句话说,该方法将源代码编译成机器语言指令(也称为“目标码”)。机器语言指令的产生包括如果在源代码中不明确指定任务分配,则分配用于在相应处理器上执行的任务。机器语言指令的产生包括如果在源代码中不明确指定通信机构,则基于相应处理器的位置和要求的数据通信在处理器之间选择通信机构。产生的机器语言指令存储在存储器上。可在多处理器系统上执行机器语言指令,以实现由原始源代码程序指令指定的第一功能性。
[0014]机器语言指令的产生包括将局部变量分配给存储器,其中所述存储器靠近执行拥有该局部变量的任务的处理器。可基于数据量和相应通信单元内的资源可用性执行局部变量到存储器的分配。
[0015]在一个实施方式中,一个或多个任务使用共享变量,并且机器语言指令的产生包括将利用公共共享变量的任务分配给共享到相同存储器的访问的邻近处理器。优选地在分配不具有公共共享变量的任务之前执行利用公共共享变量的任务的分配。[0016]该方法可基于源代码产生性能模型,其中性能模型设计用于为等待时间、通过量、和功率中的一个或多个而优化。例如,在一个实施方式中,对于一个或多个相应通信中的每个通信,该方法确定数据的数据位置以及相应通信的发送和接收块的数据位置。然后,该方法为相应的通信产生性能模型。然后可基于性能模型选择任务或处理器之间的通信机构。通信机构的选择可包括通过将源代码中的通信需求绑定至路由选择逻辑而合成处理器之间的通信连接。可基于可用的路由选择资源的最高利用系数执行绑定,以使掠夺性能的(performance robbing)通信拥塞和冲突最少并减少致命通信死锁的潜在可能。
[0017]作为一个示例,源代码指定第一消息、用于第一消息的至少一个消息发送命令、用于第一消息的至少一个消息接收命令、用于第一消息的源信息、和用于第一消息的目的信息。源信息和目的信息可以符号术语表示,其中源信息和目的信息不指定执行至少一个消息发送命令和至少一个消息接收命令的处理器的位置。机器语言指令的产生可包括将发送和/或接收消息的任务分配给特定的处理器。机器语言指令的产生还可包括决定用于消息的最佳通信机构。
[0018]在一个实施方式中,该方法为支持多路消息传递的所有通信通道产生通信依赖图。然后,该方法确定利用相同通道的通信之间是否存在相关性。如果是这样的话,该方法可自动地重新分配路由选择通道,以便冲突通信出现在不同的物理路由上。如果重新分配不可行,则该方法可明确为通信通道调度以防止出现死锁。
[0019]在一个实施方式中,多任务无死锁地集束、列表、和分配给处理器以便串行执行。分配给相同处理器的任务之间的通信利用处理器内在任务之间共享的变量/存储器执行,在无同步系统开销的情况下导致最有效的通信形式。
[0020]在一个实施方式中,机器语言指令的产生包括将程序指令分解成用于多处理器系统中的每个处理器的多个常规串行程序。然后,该方法执行设计用于单处理器系统的常规编译器,以编译多个常规串行程序中的每个常规串行程序。
【专利附图】
【附图说明】
[0021]图1-6示出HyperX系统的处理元件(PE)和数据存储路由器(DMR)的网络;图1-6还描绘了在多处理器系统(或网络)上执行的算法的跟踪;图1-6还可表示用于指定和/或观察多处理器系统的操作的图形用户界面(GUI)。
[0022]图7是包括用于对系统(应用模型和系统模型)进行限定的期望程序的源代码的示例性图形框图。
[0023]图8a示出表示ANS1-C中的系统/算法并明确利用SPMD编程模型的示例主程序。
[0024]图8b是从王程序(图8a)提取以驱动最优化自动化的任务列表。
[0025]图8c是以源自主程序和提取的任务信息列表(图8b)的3-D示出的4_D+最佳程序模型。涵盖尺寸的最佳化包括空间的(在特定时间点使用的硬件架构资源)、时间的(在该图[O ;16,384 ;24,576 ;25,600 ;33,792]的循环计数中表示的时间线)、和系统的约束条件。该附图示出作为时间的函数响应于系统约束条件(例如通过量、等待时间、功率等等)在资源利用方面的最优化过程的结果。
[0026]图8d是来自时钟周期16,384与24,576之间的时间区域中的主程序(图8a)的程序模型(图8c)的硬件构架资源的空间过程纹理图(spatial course-grain view)。应指出的是,图7中不同的功能块(利用灰度阴影/图案)彩色地编码,并且在图Sc和8d中使用相同的彩色编码方案,以空间地和时间地跟踪功能的执行。
[0027]图9是“C”软件开发流程的概视图。
[0028]图10示出图形布局工具(GLT)/图形程序设计工具(GPT)视图,以提供具有分配的任务和通信的目标结构的低级别视图。各矩形表示PE或DMR,示出相应块的内部状态。PE与DMR之间的线表示它们之间的数据通信。该视图提供完全交互的仿真和硬件设计/调试环境,并且能够跟踪性能、功率、和其它有用的量度以帮助设计/开发。
[0029]图11示出性能捕获仿真器和开发的程序能够连接到第三方系统级开发工具,以提供系统级的极好的验证。来自系统级模型的相同输入可用于验证设计。将设计的输出与系统模型极好的输出相比较。这使得能够实现快速的开发和验证流程。
【具体实施方式】
[0030]多处理器系统是包括多处理器、存储器(统一的和/或分布的)、和通信(或通信网络)资源的并行计算平台。示例性多处理器系统包括多个处理器,其中每个处理器耦联至至少一个其它的处理器,并且其中在相应的处理器之间具有多个通信机构。多处理器系统可包括耦联至处理器的多个存储器。例如,存储器可散布在处理器中间。更具体而言,多处理器系统可包括散布在处理器中间的多个通信单元,其中每个通信单元包括存储器和路由选择逻辑。如在此使用的,术语“耦联”意味着直接或间接地连接。
[0031]这样的多处理器系统的示例是2003年6月24日提交的、专利
【发明者】T·K·恩格, J·M·比尔兹利, M·B·多尔 申请人:相干逻辑公司