基于任务数据流驱动的高效能超级计算系统的设计方法 (一)、技术领域:
本发明涉及一种高效能超级计算系统的设计方法,特别涉及一种基于任务数据流驱动的高效能超级计算系统的设计方法。
(二)、背景技术:
目前顶级超级计算机最主要特征有两点:一是计算机内部的信息流动是由指令驱动的,指令执行的顺序由指令计数器(PC)决定;二是计算机的应用主要是面向数值计算和数据处理。要使高性能计算机具有超强持续稳定的计算能力,达到较高的效费比,即让高性能计算机不仅在尖端科学计算中具有无与伦比的峰值计算速度,同时具有稳定高效的持续计算效能。众所周知采用指令流机制,通过程序并行化编译执行技术已很难实现以上目标。
纵观近些年来超级计算机研发的常规思路主要有两点:一是提高单个处理器(单个计算节点)的处理能力;二是竭尽全力研发超级计算系统的互连网络,使一台超级计算机中拥有的CPU高达数万颗到数十万颗。提高单个处理节点计算能力常用方法是通过提高时钟频率或增加单个处理器内部的核数来解决,根据摩尔定律、功耗和工艺等方面的因素分析,提高单个计算节点计算能力虽然能解决一定的计算速度问题,但始终无法解决计算的高效能问题。另一方面线性扩展处理器数量并不能获得线性增长的加速比,相反越来越严峻的存储墙、规模墙、高能耗、高成本、低利用率等瓶颈问题已制约了高性能计算机的发展。
基于传统指令控制数据信息流动的机制已很难提高其效费比,能否摆脱这种高性能计算机研发思路,研究一种高效能计算系统,真正实现等效峰值计算速度高、持续处理速度高、计算耗能低的“双高一低”的高效能计算系统,是本发明的主要目标。
(三)、发明内容:
本发明要解决的技术问题是:针对现有技术不足,提供一种基于任务数据流驱动的高效能超级计算系统的设计方法,该方法通过处理单元可配置编程、互连网络可编程,以及其它软硬件计算资源可编程来实现自适应计算,以期实现计算系统的最佳性能。
本发明的技术方案:
一种基于任务数据流驱动的高效能超级计算系统的设计方法,它采用可重构互连网络将n个处理单元、存储器阵列以及输入/输出接口互连,其中,n为大于等于1的自然数,各功能部件根据任务数据流需要可重构和可编程,以实现整个系统的协调运行,任务数据流以指令形式存放在所述存储器阵列的指令池中,处理单元通过可重构互连网络取出需执行的指令后先进行缓存,然后对其进行类型分析统计,根据类型分析统计的结果指导处理单元进行结构重构的计算,当一个任务对应的操作资源和数据可用时,取出的指令便可执行,如果执行完成的指令产生了新的数据,则通过可重构互连网络从所述存储器阵列中取需执行的对应指令,新的数据通过可重构互连网络被送入存储器阵列的相应位置。
一个任务是指完成某一具有特定逻辑功能的事务,由一组指令和数据组成。任务数据流通常包含任务内、任务间的相互关系数据,同时也包含任务的启动和终止条件等。
每个任务的执行时机由其所需的启动条件决定,启动条件中可能包含对操作数、各种资源的要求、前驱任务完成情况的要求等,任务必须先满足启动条件才能被启动执行。
任务流中每个任务的停止时机应该由其终止条件所决定,终止应该分为三种情况:正常完成、暂停和异常终止。当终止条件满足时,任务将根据上述三种情况实施正常停止、暂停或报告异常。
任务的调度及优化将由支持任务流的编译系统、操作系统以及相关的支撑软件来完成,它们根据各子任务的启动和终止条件、执行时间以及各子任务之间的依赖关系来实现任务的调度、资源的分配以及可重构配置。
在任务数据流计算机中,信息项以操作包和数据令牌形式出现。操作包由操作码、操作数和其后继指令所在地组成。令牌实质是一种表示某一操作数或参数已准备就绪的标志数据。
可重构互连网络用来传送数据令牌,把令牌中所携带地操作数送入需要它的指令或任务中。任何操作都是消耗一组数据,产生一组新的数据。除此之外本发明还包括数据流驱动机制和根据数据流重构的方法,在数据流驱动方式下指令或任务的启动取决于所需数据的可用性,与其在程序中的物理位置无关。
处理单元根据数据流可用顺序来重构计算结构,然后执行指令或任务。输入/输出接口是高效能超级计算系统与外部的信息交换接口。在这样的系统中一条指令或一项任务当且仅当所需的操作数已准备好后便可执行,而传统冯氏结构的指令流控制方式却需要由指令计数器(PC)来控制完成程序的执行。按照本发明的方法设计的并行计算机与传统指令系统兼容。
当程序开始执行时,凡已接收全部所需数据令牌的指令都被取指部件取出,加入到多条可执行指令的队列中,同时对取出的指令进行指令类型分析统计,根据分析统计的结果指导处理单元计算结构动态重构,取出指令一旦操作资源和数据可用便可执行,刚执行完成的指令若产生新的数据则生成数据令牌通过更新操作数部件通知取指部件有针对性地从存储器阵列中取对应指令。处理单元产生的新的数据令牌形成结果信息包,送到更新操作数部件将这些数据令牌按它们的目的地址,送入存储器阵列指令池中相应指令的有关部件。更新操作数部件将已收到全部必需的数据令牌的指令地址又传送给取指部件,把已具备激活条件的指令地址送取指部件。可执行的指令队列越大并行执行的效率越高。指令格式与常规标量处理计算机类似。
本发明采用监视控制器对整个计算系统的计算任务负载进行监视,实现对可重构互连网络和存储器阵列的可重构控制。
处理单元的结构重构含有静态重构和动态重构;静态重构的方式为:首先对结构逻辑的配置进行设计,然后对结构逻辑进行配置,最后按结构逻辑的配置进行计算;动态重构的方式为:首先对结构逻辑的配置进行设计,然后对结构逻辑进行配置,最后按结构逻辑的配置进行计算,在计算过程中不断按计算要求调整所配置的结构逻辑。
处理单元含有本地存储器、取指部件、指令缓冲器、数据缓冲器、主处理器和可重构协处理器,本地存储器通过所述可重构互连网络从所述存储器阵列中取出一组指令和数据,再由取指令部件从所述指令中取出相应的指令送入指令缓冲器中,相应的数据被送入数据缓冲器中,如果所述相应的数据可用便执行相应的指令,相应的指令的执行在主处理器中进行,或者在可重构协处理器中进行,具体过程主要根据指令的执行频度决定。
存储器阵列含有一系列存储器和现场可编程门阵列(FPGA),存储器作为高性能计算机的全局存储器,存储器的输入/输出口以及地址和控制总线均通过现场可编程门阵列与可重构互连网络连接,这种可重构的连接控制方式可实现存储器高带宽数据访问和灵活的数据格式变化。
可重构互连网络采用模块化结构,模块内采用变形二维环绕阵列,模块间采用二维网格结构,可重构互连网络的连接交换节点可根据信息交换的需要进行可重构配置。可重构互连网络可以根据计算结点的任务流量和路由动态重构,快速实现指令流和任务数据流的交换。
本发明的有益效果:
1、本发明采用可重构互连网络将处理单元、存储器阵列以及输入/输出接口互连,各功能部件根据任务数据流需要可重构和可编程,充分利用了计算机系统的软硬件资源,同时也使计算机系统的效率大大提高。
2、单纯的数据流驱动存在如下问题:一旦操作数可用便可启动一任务内相应指令执行,对应指令执行完成后并不能保证该任务顺利执行完成。本发明中基于任务的数据流驱动则是在一任务所需操作数均已满足时再启动该任务执行,避免了任务间的不同步,同时也改善了大量等待执行指令的排队等待。
3、本发明的设计方法中的程序和原标量机程序设计无任何区别,但执行控制方式和执行程序的顺序却完全不同,基于任务数据流的高效能超级计算机比传统计算机的并行执行效率要高许多,同时也大大降低了并行程序设计的难度。
(四)、附图说明:
图1为按照本发明的方法设计的基于任务数据流驱动的高效能超级计算系统的原理框图示意图;
图2为基于任务数据流驱动的高效能超级计算系统的信息流控制示意图;
图3为处理单元的信息流控制示意图;
图4为存储器阵列的结构示意图;
图5为可重构互连网络的结构示意图;
图6为基于任务数据流驱动的高效能超级计算机支持的一个示例的数据流图;
图7为四台处理机的数据流驱动的高效能超级计算机执行时间情况分析图;
(五)、具体实施方式:
参见图1~图7,基于任务数据流驱动的高效能超级计算系统的设计方法采用可重构互连网络将n个处理单元、存储器阵列以及输入/输出接口互连,其中,n为大于等于1的自然数,各功能部件根据任务数据流需要可重构和可编程,以实现整个系统的协调运行,任务数据流以指令形式存放在所述存储器阵列的指令池中,处理单元通过可重构互连网络取出需执行的指令后先进行缓存,然后对其进行类型分析统计,根据类型分析统计的结果指导处理单元进行结构重构的计算,当一个任务对应的操作资源和数据可用时,取出的指令便可执行,如果执行完成的指令产生了新的数据,则通过可重构互连网络从所述存储器阵列中取需执行的对应指令,新的数据通过可重构互连网络被送入存储器阵列的相应位置。
在任务数据流计算机中,信息项以操作包和数据令牌形式出现。操作包由操作码、操作数和其后继指令所在地组成。令牌实质是一种表示某一操作数或参数已准备就绪的标志数据。
可重构互连网络用来传送数据令牌,把令牌中所携带的操作数送入需要它的指令或任务中。任何操作都是消耗一组数据,产生一组新的数据。除此之外本发明还包括数据流驱动机制和根据数据流重构的方法,在数据流驱动方式下指令或任务的启动取决于所需数据的可用性,与其在程序中的物理位置无关。
当程序开始执行时,凡已接收全部所需数据令牌的指令都被取指部件取出,加入到多条可执行指令的队列中,同时对取出的指令进行指令类型分析统计,根据分析统计的结果指导处理单元计算结构动态重构,取出指令一旦操作资源和数据可用便可执行,刚执行完成的指令若产生新的数据则生成数据令牌通过更新操作数部件通知取指部件有针对性地从存储器阵列中取对应指令。处理单元产生的新的数据令牌形成结果信息包,送到更新操作数部件将这些数据令牌按它们的目的地址,送入存储器阵列指令池中相应指令的有关部件。更新操作数部件将已收到全部必需的数据令牌的指令地址又传送给取指部件,把已具备激活条件的指令地址送取指部件。可执行的指令队列越大并行执行的效率越高。指令格式与常规标量处理计算机类似。
本发明采用采用监视控制器对整个系统的计算任务负载进行监视,实现对可重构互连网络和存储器阵列的可重构控制。
处理单元的结构重构含有静态重构和动态重构;静态重构的方式为:首先对结构逻辑的配置进行设计,然后对结构逻辑进行配置,最后按结构逻辑的配置进行计算;动态重构的方式为:首先对结构逻辑的配置进行设计,然后对结构逻辑进行配置,最后按结构逻辑的配置进行计算,在计算过程中不断按计算要求调整所配置的结构逻辑。
处理单元含有本地存储器、取指部件、指令缓冲器、数据缓冲器、主处理器和可重构协处理器,本地存储器通过所述可重构互连网络从所述存储器阵列中取出一组指令和数据,再由取指令部件从所述指令中取出相应的指令送入指令缓冲器中,相应的数据被送入数据缓冲器中,如果所述相应的数据可用便执行相应的指令,相应的指令的执行在主处理器中进行,或者在可重构协处理器中进行,具体过程主要根据指令的执行频度决定。
存储器阵列含有一系列存储器和现场可编程门阵列(FPGA),存储器作为高性能计算机的全局存储器,存储器的输入/输出口以及地址和控制总线均通过现场可编程门阵列与可重构互连网络连接,这种可重构的连接控制方式可实现存储器高带宽数据访问和灵活的数据格式变化。
可重构互连网络采用模块化结构,模块内采用变形二维环绕阵列,模块间采用二维网格结构,可重构互连网络的连接交换节点可根据信息交换的需要进行可重构配置。可重构互连网络可以根据计算结点的任务流量和路由动态重构,快速实现指令流和任务数据流的交换。
现举一个基于任务数据流的高效能超级计算机执行具体程序的示例,下面给出一个循环数据相关进行除法、乘和加法运算的简单程序,如下:input d,e,f
c1=0
for i from 1 to 8 do
begin
ai=di÷ei
bi=ai×fi
ci=bi+ci
end
output a,b,c
该程序首先输入d,e,f三个8维向量,然后各分量进行相除、相乘和相加的操作,最后输出结果向量a,b,c。
图6是该程序的数据流图,表示有24条指令要执行(8条除法、8条乘法和8条加法)。假定每次加、乘和除分别需要1、2和3个周期完成操作,对于控制流单处理机,依次计算出ai、bi和ci(i=1,2,...,8),共需48个周期方可完成。
图7给出的是4台处理机的数据流驱动计算执行时间情况分析。数据流驱动计算的核心思想是一任务所需操作数已满足时即可启动该任务执行。据此分析如下:在前3个周期,4个处理机分别完成a1~a4的计算,然后1号处理机计算a5,2号处理机计b1,3号处理机计算a6,4号处理机计算a7,这样经过6个周期,a1~a7计算完毕,第7个周期,1号处理机计算c1,等等,由于c8与所有前面的ci有关,所以它的计算最后进行。此例结果表明仅需14个周期即可完成计算,相对于控制流单处理机其执行效率大大提高。
显然,采用基于任务数据流的高效能超级计算机的程序和原标量机程序设计无任何区别,但执行控制方式和执行程序的顺序却完全不同,基于任务数据流的高效能超级计算机显然比传统计算机的并行执行效率要高许多,同时也大大降低了并行程序设计的难度。