一种用于数据流架构的计算设备的数据处理方法

文档序号:31450378发布日期:2022-09-07 13:06阅读:54来源:国知局
一种用于数据流架构的计算设备的数据处理方法

1.本发明涉及计算机体系结构技术领域,具体来说,涉及一种用于数据流架构的计算设备的数据处理方法。


背景技术:

2.随着计算机技术研究的深入和竞争的加剧,高性能计算技术被越来越多的应用于各个领域,以解决科学研究和社会生产中所遇到的实际问题。在高性能计算领域,数据流计算体现了良好的计算性能和适用性。数据流程序是通过数据流图来表示的,数据流图中的每个节点表示一条指令,每条边表示一条指令与另一条指令之间的依赖关系,数据流指令执行的基本原则是:指令所有源操作数都准备好了,且其下游指令有空闲的数据槽可以接收数据,则该指令可以发射执行,指令执行结果不会写入共享寄存器或共享缓存,而是通过依赖边直接传递给其下游目的指令。
3.数据流架构通常都包括若干个或者几十个计算节点(processing element,pe),每个计算节点具有运算能力强、控制能力弱、且复杂度小的特点,多个计算节点间通过片上网络(network-on-chip,noc)进行互连,并由片上路由(router)负责在计算节点(pe)之间传递操作数,而操作数的传递是数据流架构中的关键路径,操作数的传输效率决定了计算节点上可执行指令的数量,从而决定了数据流架构的整体执行效率。由于数据流架构中每个计算节点通常具有多个上下游计算节点,因此数据流程序执行过程中,向片上网络发送的消息通常具备数据相同,目的地址不同的特征,为了高效的传输此类数据消息,多播共享缓存路由结构被设计提出。
4.现有的用于数据流架构的多播共享缓存路由结构相比以上传统路由结构虽然可以解决多播包拆分,以及不同缓存负载不均衡所造成的缓存空间浪费,但在多播共享缓存路由结构中,一般都是根据指令的源操作数是否都已经到达作为动态调度执行的先决条件,然后从这些满足先决条件的指令当中,根据指令的标号顺序进行轮询选择,被选中的指令被调度到计算流水线当中进行执行,没有考虑到多播共享缓存空间的占用情况,而每个路由节点中的共享缓存空间大小也是有限的,一旦一个路由节点中的共享缓存空间被填满,无法接收计算节点发送来的新消息,就会堵塞计算节点的执行,从而影响数据流架构的执行效率。


技术实现要素:

5.因此,本发明的目的在于克服上述现有技术的缺陷,提供一种用于数据流架构的计算设备的数据处理方法。
6.本发明的目的是通过以下技术方案实现的:
7.在本发明的第一方面,提供一种用于数据流架构的计算设备的数据处理方法,所述计算设备包括多个计算节点和多个路由节点,每个计算节点用于调度执行指令槽中的指令,每个路由节点包括共享缓存,所述共享缓存用于缓存指令执行后的数据,共享缓存中指
令执行后的数据被发送完毕后释放该数据占用的共享缓存空间,所述方法包括在计算节点执行如下操作:获取指令槽中所有处于就绪可执行状态的指令,对比获取到的所有指令被执行后的数据占用共享缓存后释放共享缓存空间的快慢,选择其中被执行后得到的数据占用的共享缓存空间被最快释放的优选指令进行执行。
8.在本发明的一些实施例中,所述每个路由节点还包括多个不同方向的输出缓存队列,分别用于存储对应方向待发送的消息包,并在每个路由节点执行以下操作以释放共享缓存空间:获取本地计算节点指令执行后发出的数据并将数据存入共享缓存,将包含数据在共享缓存的索引的消息包存入该数据所要发往的每个方向对应的输出缓存队列;基于调度机制将所调度方向对应的输出缓存队列中头部的消息包与关联的数据打包后发出,并在与数据关联的所有消息包被发出后释放该数据所占用的共享缓存空间。
9.在本发明的一些实施例中,所述共享缓存还用于记录数据要发往的多个目的地址和数据的复用次数,其中,数据的复用次数与数据关联的消息包的个数相同,并在每个路由节点执行以下操作以释放共享缓存空间:按照调度机制每次获取当前调度的方向对应的输出缓存队列中头部的消息包,其中,消息包中包含数据所要发送的目的地址的有效位信息;根据消息包中的索引从共享缓存中获取关联的数据,并根据消息包中的目的地址的有效位信息从共享缓存中获取该消息包所要发往的目的地址;将消息包、关联的数据和所要发往的目的地址打包后发出,其中,与数据关联的消息包每发出一个,将其对应的复用次数减少一次,当数据对应的复用次数为零时,释放该数据所占用的共享缓存空间。
10.在本发明的一些实施例中,所述计算节点通过如下方式选择优选指令进行执行:获取与计算节点直接相连的路由节点内每个方向对应的输出缓存队列中当前的消息包个数以及当前处于就绪可执行状态的每个指令的执行结果所要发往的方向;依据输出缓存队列中消息包的调度机制、当前处于就绪可执行状态的每个指令的执行结果所要发往的方向以及每个方向对应的输出缓存队列中当前的消息包个数,从当前处于就绪可执行状态的指令中选择优选指令进行执行。
11.在本发明的一些实施例中,所述输出缓存队列中消息包的调度机制为轮询机制,所述计算节点执行以下操作选择优选指令:根据当前处于就绪可执行状态的每个指令的执行结果所要发往的方向以及每个方向对应的输出缓存队列中当前的消息包个数,确定当前处于就绪可执行状态的每个指令对应的参考指标,所述参考指标为该指令的执行结果所要发往的所有方向对应的输出缓存队列中的最大消息包个数;将当前处于就绪可执行状态的所有指令中参考指标对应的数值最小的优选指令发射给计算节点的计算部件进行执行。
12.在本发明的一些实施例中,当同时存在多个优选指令时,所述计算节点执行以下操作选择指令:当优选指令的个数小于等于预设阈值,基于轮询调度机制将当前的多个优选指令依次调度并发射给计算节点的计算部件进行执行后,再确定后续的优选指令;当优选指令的个数超过预设阈值,基于轮询调度机制将当前处于就绪可执行状态的所有指令依次发射给计算节点的计算部件进行执行后,再确定后续的优选指令。
13.在本发明的一些实施例中,所述计算节点执行以下操作以完成指令的执行:执行发射的优选指令,得到执行结果,其中,执行结果包括数据、数据所要发送的多个目的地址及目的地址的有效位信息;将执行结果发送到与计算节点直接连接的路由节点,以将数据及数据所要发往的多个目的地址存入共享缓存以及将包含有目的地址的有效位信息的消
息包存入相应方向对应的输出缓存队列中。
14.在本发明的一些实施例中,在所述每个路由节点执行以下操作获得待执行指令的参考指标:检测路由节点中每个方向对应的输出缓存队列中当前的消息包个数,并将每个方向对应的消息包个数发送给与路由节点直接连接的计算节点计算参考指标。
15.在本发明第二方面,提供一种计算设备,所述计算设备包括多个计算节点和多个路由节点,每个计算节点用于调度执行指令槽中的指令,每个路由节点包括共享缓存,所述共享缓存用于缓存指令执行后的数据,其特征在于,所述每个计算节点被配置为采用本发明第一方面所述的方法从指令槽中选择被执行后得到的数据占用的共享缓存空间被最快释放的优选指令进行执行,并将执行结果发送到该计算节点直接相连的路由节点。
16.在本发明的一些实施例中,所述每个路由节点还包括多个不同方向的输出缓存队列以及缓存队列检测模块,其中:所述不同方向的输出缓存队列分别用于存储对应方向待发送的消息包;所述缓存队列检测模块被配置为用于检测路由节点中每个方向对应的输出缓存队列中当前的消息包个数,并将每个方向对应的消息包个数发送给与路由节点直接连接的计算节点。
17.在本发明的一些实施例中,所述每个计算节点还包括指令发射选择模块,其被配置为用于获取指令槽中所有处于就绪可执行状态的指令,并对比所有指令被执行后的数据占用共享缓存后释放共享缓存空间的快慢,以及选择被执行后得到的数据占用的共享缓存空间被最快释放的优选指令由计算节点进行调度执行。
18.与现有技术相比,本发明的优点在于:
19.1、本发明中计算节点在调度执行指令时,考虑指令执行后的数据占用共享缓存后释放共享缓存空间的快慢程度,在有限共享缓存空间限制下,每次调度指令时从当前处于就绪可执行状态的指令中选择优选指令进行执行,而优选指令的执行结果进入路由节点后所占用的共享缓存空间能被更快释放,以实现快速释放相应的共享缓存空间,避免共享缓存空间被填满无法接收计算节点发送来的新消息所引发的计算节点执行堵塞等问题,从而提升数据流架构的指令执行效率。
20.2、本发明还考虑部分处于就绪可执行状态的指令一直未被执行的状态,在当前时钟周期同时存在多个优选指令时,可以将当前的多个优选指令以及其他的处于就绪可执行状态的所有指令依次发射给计算节点,并在发射完后再重新确定后续的优选指令;也可以根据当优选指令的个数与预设阈值间的关系,按照轮询调度机制将当前的多个优选指令或是将当前处于就绪可执行状态的所有指令依次调度并发射给计算节点的计算部件进行执行后,再重新确定后续的优选指令。该方式既可避免重复计算以提高计算节点的效率,也可避免部分处于就绪可执行状态的指令一直未被发射执行,进而提升数据流架构的执行效率。
附图说明
21.以下参照附图对本发明实施例作进一步说明,其中:
22.图1为根据本发明一个实施例的用于数据流架构的计算设备的拓扑结构示意图;
23.图2为根据本发明一个实施例的一个路由节点和该路由节点直接连接的计算节点的结构示意图;
24.图3为根据本发明一个实施例的路由节点解析处理数据包的原理示意图;
25.图4为根据本发明一个实施例的不同时钟周期的指令状态统计表的示意图;
26.图5为根据本发明一个实施例的指令发射选择模块发射指令的原理示意图;
27.图6为根据本发明另一个实施例的指令发射选择模块发射指令的原理示意图。
具体实施方式
28.为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
29.如在背景技术部分提到的,现有的用于数据流架构的多播共享缓存路由结构相比以上传统路由结构虽然可以解决多播包拆分,以及不同缓存负载不均衡所造成的缓存空间浪费,但在多播共享缓存路由结构中,一般都是根据指令的源操作数是否都已经到达作为动态调度执行的先决条件,然后从这些满足先决条件的指令当中,根据指令的标号顺序进行轮询选择,被选中的指令被调度到计算流水线当中进行执行,没有考虑到多播共享缓存空间的占用情况,而每个路由节点中的共享缓存空间大小也是有限的,一旦一个路由节点中的共享缓存空间被填满,则无法接收计算节点发送来的新消息,就会堵塞计算节点的执行,从而影响数据流架构的执行效率。
30.为了解决上述问题,本发明提供一种能够根据共享缓存空间的占用情况动态选择被执行指令的数据处理方案,简单来说,在本发明的技术方案中,本发明在每次选择指令执行的时候,预先评估指令执行后释放共享缓存空间的快慢程度,且在每次选择当前能够最快释放共享缓存空间的优选指令进行调度执行,通过这样的方式来提高共享缓存空间的释放速度,由此提升数据流架构中指令执行的效率。
31.下面结合附图及实施例详细说明本发明。
32.采用数据流架构的计算设备一般包括多个计算节点和多个路由节点,每个计算节点直接连接一个路由节点并被关联为该路由节点对应的本地计算节点,多个路由节点以预定的拓扑结构相互连接,此处对计算设备的具体架构不做过多赘述。本发明的实施例中主要对如何在数据流架构的计算设备中选择优选指令来展开说明本发明的方案。
33.根据本发明的一个实施例,一种示意性的计算设备的结构可参见图1,包括多个计算节点和多个路由节点,每个计算节点直接连接一个路由节点(一些文献中,路由节点也称为片上路由router)并被关联为该路由节点对应的本地计算节点,多个路由节点以预定的拓扑结构相互连接,形成片上网络(noc)。由此,多个计算节点通过片上网络互连,片上网络包括多个路由节点以及路由节点之间的连接线路。目前数据流架构中应用最为广泛的noc是二维无线网络网格(即2d mesh,也称二维mesh),即图1所示的拓扑结构;其中,路由节点的数据输入输出分为东(east)、西(west)、南(south)、北(north)、本地(local)等多个方向,分别简写为e、w、s、n和l。本发明后续主要以2d mesh的结构说明本发明的技术原理,但应当理解的是,在没有技术原理冲突的情况下,本技术的技术方案仍可适用于其他任何形式的片上网络拓扑结构,比如适用于二维torus、三维torus等拓扑结构。
34.根据本发明的一个实施例,参见图2,每个路由节点设有路由计算单元routing、共享缓存buffer、多个方向(如东、西、南、北)的输出缓存队列和缓存队列检测模块,多个方向
(如东、西、南、北)的输出缓存队列分别记为equeue、wqueue、squeue、nqueue,(应当理解,此处仅为示意,路由节点的数据输入输出还可以包括东南方向、西南方向、东北方向等,可根据具体情况的需要设置对应的输出缓存队列,即输出方向增多一个对应的输出缓存队列的个数也会随之增多一个,本发明对此不作任何限制),路由计算单元routing与每一个输出缓存队列和共享缓存buffer连接,共享缓存buffer与每一个输出缓存队列连接,且输出缓存队列检测模块也与每一个输出缓存队列连接;每个路由节点对应直接连接的计算节点pe(即路由节点对应的本地计算节点processing element,pe)。计算节点包括依次连接的指令存储单元、指令发射选择模块和计算部件。其中,指令存储单元和计算部件与路由节点中的路由计算单元routing连接,指令发射选择模块与路由节点中的缓存队列检测模块连接。在计算节点中,其指令存储单元用于存储多个指令inst(如inst0、inst1等)以及指令当前处于的状态;缓存队列检测模块用于检测每个方向对应的输出缓存队列中的消息包个数并发送给指令发射选择模块;指令发射选择模块用于从指令槽(即指令存储单元)中所有处于就绪可执行状态的指令中选择其中被执行后得到的数据占用的共享缓存空间被最快释放的优选指令,并发射到计算部件;计算部件执行发射来的优选指令并将指令执行得到的数据发送到与其连接的路由节点的路由计算单元。在路由节点中,其路由计算单元将发送来的数据缓存在共享缓存中,并将与数据关联的包含有数据所要发送的目的地址的有效位信息的消息包存储在对应方向的输出缓存队列中。
35.下面基于上述的计算设备架构详细说明每个部件的工作原理。
36.一、路由节点
37.每个路由节点用于获取本地计算节点执行指令后发出的数据并将数据存入共享缓存,将包含数据在共享缓存的索引的消息包存入该数据所要发往的每个方向对应的输出缓存队列,基于调度机制将每个方向对应的输出缓存队列中头部的消息包与关联的数据打包后发出,当与数据关联的所有消息包被发出后该数据所占用的共享缓存空间才被释放。其中,在共享缓存中记录数据要发往的多个目的地址和数据的复用次数,其中,数据的复用次数与数据关联的消息包的个数相同。
38.根据本发明的一个示例,参见图3,图3展示了与路由节点相连的本地计算节点将执行指令生成的执行结果打包为数据包发送给对应路由节点,路由节点接收该数据包后对该数据包的解析处理过程。具体的处理过程包括:当路由节点接收本地计算节点发来的数据包时,将数据包拆分为数据和包头,包头中包括数据data要发往的多个目的地址(包括示例中的目的地址(1,1)、目的地址(2,2)、目的地址(3,1))和每个目的地址的有效位信息,通过路由节点的路由计算单元routing获取本地计算节点执行指令后发出的数据data并将数据data存入共享缓存buffer中,在共享缓存中记录数据data要发往的多个目的地址(包括示例中的目的地址(1,1)、目的地址(2,2)、目的地址(3,1))和数据data的复用次数,将包含数据data的目的地址的有效位信息和数据data在共享缓存的索引idx的消息包存入该数据data所要发往的每个方向对应的输出缓存队列,包括所要发往的东、南、北三个方向对应的输出缓存队列equeue、squeue、nqueue,得到三个与数据data关联的消息包,其中,数据data的复用次数与数据data关联的消息包的个数相同,因此,此时的复用次数记为3。
39.根据本发明的一个实施例,在路由节点中,基于调度机制每次获取当前调度的方向对应的输出缓存队列中头部的消息包,包括获取消息包中数据的索引和数据所要发送的
目的地址的有效位信息;根据消息包中的索引从共享缓存中获取关联的数据,并根据消息包的目的地址的有效位信息从共享缓存中获取该消息包所要发往的目的地址;将消息包、关联的数据和所要发往的目的地址打包后发出,其中,与数据关联的消息包每发出一个,将其对应的复用次数减少一次,当数据对应的复用次数为零时,释放该数据所占用的共享缓存空间。根据本发明的一个示例,仍然参见图3,若当前调度东方向,根据东方向对应的输出缓存队列equeue中头部的消息包,根据消息包的索引idx从共享缓存中获取关联的数据data,根据消息包的目的地址的有效位信息从共享缓存中获取该消息包所要发往的目的地址(2,2),将数据data、目的地址(2,2)和目的地址的有效位信息结合并打包成新的消息包发出,此时,消息包关联的数据data对应的复用次数减少一次,记为2。在每个路由节点中,当数据data对应的复用次数为零时,释放其所占用的共享缓存空间。
40.每个路由节点的缓存队列检测模块,用于检测路由节点中每个方向对应的输出缓存队列中当前的消息包个数,并将每个方向对应的消息包个数发送给本地计算节点,本地计算节点用于计算处于就绪可执行状态的指令的参考指标。
41.二、计算节点
42.每个计算节点用于获取指令槽中所有处于就绪可执行状态的指令,对比获取到的所有指令被执行后的数据占用共享缓存后释放共享缓存空间的快慢,选择其中被执行后得到的数据占用的共享缓存空间被最快释放的优选指令进行执行。
43.根据本发明的一个实施例,计算节点的计算部件用于执行选择的优选指令,得到执行结果,其中,执行结果包括数据、数据所要发送的多个目的地址及目的地址的有效位信息,最后,将执行结果发送到与计算节点直接连接的路由节点,以将数据及数据所要发往的多个目的地址存入共享缓存以及将包含有目的地址的有效位信息的消息包存入相应方向对应的输出缓存队列中。
44.根据本发明的一个实施例,计算节点的指令发射选择模块通过如下方式选择优选指令进行执行:获取计算节点直接相连的路由节点内每个方向对应的输出缓存队列中当前的消息包个数以及当前处于就绪可执行状态的每个指令的执行结果所要发往的方向;依据输出缓存队列中消息包的调度机制、当前处于就绪可执行状态的每个指令的执行结果所要发往的方向以及每个方向对应的输出缓存队列中当前的消息包个数,从当前处于就绪可执行状态的指令中选择优选指令进行执行。
45.根据本发明的一个实施例,输出缓存队列中消息包的调度机制可以为轮询调度机制或优先级调度机制等。当输出缓存队列中消息包的调度机制为轮询机制时,计算节点的指令发射选择模块通过如下方式选择优选指令进行执行:依据当前处于就绪可执行状态的每个指令的执行结果所要发往的方向以及每个方向对应的输出缓存队列中当前的消息包个数,确定当前处于就绪可执行状态的每个指令对应的参考指标,所述参考指标为该指令的执行结果所要发往的所有方向对应的输出缓存队列中的最大消息包个数;并由指令发射选择模块将当前处于就绪可执行状态的所有指令中参考指标对应的数值最小的优选指令发射给计算节点的计算部件进行执行。
46.在确定优选指令时,当前可能仅有一个优选指令,或者,也可能同时存在多个优选指令,如果每次只执行一个当前的优选指令,在极端情况下,可能会导致部分指令长期得不到执行,进一步的,根据本发明的一个实施例,所述方法包括:在当前只存在一个优选指令
时,将该优选指令发射给计算节点的计算部件进行执行;在同时存在多个优选指令时,所述计算节点执行以下操作选择指令:当优选指令的个数小于等于预设阈值,基于轮询调度机制将当前的多个优选指令依次调度并发射给计算节点的计算部件进行执行后,再确定后续的优选指令;当优选指令的个数超过预设阈值,基于轮询调度机制将当前处于就绪可执行状态的所有指令依次发射给计算节点的计算部件进行执行后,再确定后续的优选指令。应当理解的,“当优选指令的个数小于等于预设阈值,基于轮询调度机制将当前的多个优选指令依次调度并发射给计算节点的计算部件进行执行后,再确定后续的优选指令”是指在当前确定的多个优选指令被全部发射到计算部件执行前,不会计算新的优选指令。“当优选指令的个数超过预设阈值,基于轮询调度机制将当前处于就绪可执行状态的所有指令依次发射给计算节点的计算部件进行执行后,再确定后续的优选指令”是指在当前处于就绪可执行状态的所有指令被全部发射到计算部件执行前,不会计算新的优选指令。
47.当输出缓存队列中消息包的调度机制为轮询机制,当前仅有一个优选指令的情形,根据本发明的一个示例,参见图4,示例性的展示了多个时钟周期对应的指令以及指令状态的统计表,其中,指令状态分为处于等待源操作数的等待状态(对应于实施例中表述的处于等待状态)、处于源操作数都已到达的就绪可执行状态(对应于实施例中表述的处于就绪可执行状态)和处于已经被发射执行的完成状态(对应于实施例中表述的处于完成状态),分别记为wait、ready和fired,并分别简写为w、r和f。而每个时钟周期对应的各个指令在当前时钟周期处于的状态不同。如时钟周期1,inst0、inst1、inst2、inst3、inst4、inst5、inst6和inst7等指令的状态分别为r、w、r、w、r、w、w和r;时钟周期2,inst0、inst1、inst2、inst3、inst4、inst5、inst6和inst7等指令的状态分别为f、w、r、w、r、w、w和r;时钟周期3,inst0、inst1、inst2、inst3、inst4、inst5、inst6和inst7等指令的状态分别为r、w、f、w、r、w、w和r。下面基于该示例,参见图5,以图4中时钟周期1中的前五个指令为例,说明采用本发明选择优选指令的过程。其中,在时钟周期1处于就绪可执行状态的指令包括inst0、inst2和inst4,指令inst0的执行结果所要发往的目的方向包括东、西和南三个方向,简记为e&w&s;inst2的执行结果所要发往的目的方向包括西和南两个方向,简记为w&s;inst4的执行结果所要发往的目的方向包括东和北两个方向,简记为e&n。另外,在时钟周期1,缓存队列检测模块发来的信息统计表中,表示路由节点中的缓存队列检测模块检测的东(east)、西(west)、南(south)、北(north)方向分别对应的输出缓存队列中当前的消息包个数为4、1、0、2。当输出缓存队列中消息包的调度机制为轮询机制时,指令发射选择模块根据该信息统计表中的各个输出缓存队列中当前的消息包个数,确定当前处于就绪可执行状态的每个指令对应的参考指标,所述参考指标为该指令的执行结果所要发往的所有方向对应的输出缓存队列中的最大消息包个数。其中,将当前处于就绪可执行状态的每个指令对应的参考指标记为tn,通过以下方式确定参考指标:
48.tn=max(ni),
49.其中,tn表示处于就绪可执行状态且指令标号为n的指令对应的参考指标,n表示指令的指令标号,如指令inst0的标号为0,指令inst1的标号为1,i表示相应指令的执行结果所要发往的多个方向中的其中一个方向,ni表示所要发往的其中一个方向对应的输出缓存队列当前的消息包个数,max(ni)表示选择所要发往的多个方向对应的输出缓存队列中的最大消息包个数。仍然参见图5,例如确定时钟周期1中处于就绪可执行状态的每个指令
对应的参考指标,inst0对应的参考指标t0=max(4,1,0)=4,inst2对应的参考指标t2=max(1,0)=1,inst4对应的参考指标t4=max(4,2)=4,由指令发射选择部件将当前处于就绪可执行状态的所有指令中参考指标对应的数值最小的指令作为优选指令并发射。本发明中以所有指令中参考指标对应的数值最小作为优选指令并发射,参考指标对应的数值最小,说明该指令的执行结果所要发往的所有方向对应的输出缓存队列中的最大消息包个数最少,由此,可实现快速释放相应的共享缓存空间,避免共享缓存空间被填满无法接收计算节点发送来的新消息所引发的计算节点执行堵塞等问题。根据本发明的一个实施例,同样参见图5,通过以下方式获得当前处于就绪可执行状态的所有指令中参考指标对应的数值最小的指令:
50.t
min
=min[max(ni)],
[0051]
其中,t
min
表示所有处于就绪可执行状态的指令中参考指标对应的最小数值,min[max(ni)]表示在所有处于就绪可执行状态的指令中参考指标选择参考指标最小的数值。例如在上述示例中,时钟周期1中处于就绪可执行状态的每个指令中,inst0对应的参考指标为4,inst2对应的参考指标为1,inst4对应的参考指标为4,t
min
=min[inst0:4,inst2:1,inst4:2]=inst2:1,因此,指令发射选择部件选择参考指标对应数值最小的指令inst2发射给计算部件进行执行。
[0052]
当输出缓存队列中消息包的调度机制为轮询机制,同时存在多个优选指令的情形,根据本发明的另一个示例,优选指令个数的预设阈值以n表示。应当理解,n的数值大小可以根据实际的应用场景按需设置,本发明对此不作任何限制。例如,根据计算设备的硬件条件以及所要处理的任务的不同,实施者可以根据经验或者调试的结果择优设置。下面假设n设为3来进行说明(应当理解,此处仅为示意,也可以设为2、4等,可根据具体情况的需要进行设置,本发明对此不作任何限制),参见图6,以图4中的时钟周期3的前五个指令为例,当前时钟周期3中处于就绪可执行状态的指令包括inst0和inst4,指令inst0的执行结果所要发往的目的方向包括东、西和南三个方向,简记为e&w&s;inst4的执行结果所要发往的目的方向包括东和北两个方向,简记为e&n。另外,在时钟周期3,缓存队列检测模块发来的信息统计表中,表示路由节点中的缓存队列检测模块检测的东(east)、西(west)、南(south)、北(north)方向分别对应的输出缓存队列中当前的消息包个数为2、2、1、2。指令发射选择模块根据该信息统计表中的各个输出缓存队列中当前的消息包个数,确定当前处于就绪可执行状态的每个指令对应的参考指标,所述参考指标为该指令的执行结果所要发往的所有方向对应的输出缓存队列中的最大消息包个数。具体的,例如确定时钟周期3中处于就绪可执行状态的每个指令对应的参考指标,inst0对应的参考指标t0=max(2,2,1)=2,inst4对应的参考指标t4=max(2,2)=2,t
min
=min[inst0:2,inst4:2]=inst0:2或inst4:2。因此,同时存在两个优选指令inst0和inst4,此时,优选指令的个数小于预设阈值n=3,为两个优选指令维护一个待执行指令列表,将待执行指令列表里面的所有优选指令基于轮询调度机制执行完毕后,再确定后续的优选指令。例如,指令发射选择模块可以按照指令标号从小到大的轮询调度机制将当前时钟周期确定的两个优选指令inst0、inst4依次调度并发射给计算节点,即在当前时钟周期选择指令标号为0的指令inst0发射,下一时钟周期选择指令标号为4的指令inst4发射,待执行指令列表里面的所有优选指令发射完后,重新确认后续的优选指令。
[0053]
根据本发明的另一个示例,例如当前时钟周期中处于就绪可执行状态的指令包括inst0、inst1、inst2、inst3、inst4和inst5,当前时钟周期确定有四个优选指令inst0、inst1、inst3、inst4,因此,优选指令的个数超过预设阈值n=3,则基于轮询调度机制将当前处于就绪可执行状态的所有指令依次发射给计算节点的计算部件进行执行后,再确定后续的优选指令。具体的,指令发射选择模块可以按照指令标号从小到大的轮询调度机制将当前处于就绪可执行状态的所有指令依次发射给计算节点,即第一个时钟周期发射inst0、第二个时钟周期发射inst1、第三个时钟周期发射inst2、第四个时钟周期发射inst3、第五个时钟周期发射inst4、第六个时钟周期发射inst5,当前处于就绪可执行状态的所有指令发射完后,重新确认后续的优选指令。以此,可实现将当前不是优选指令但处于就绪可执行状态的指令发射出去,避免部分处于就绪可执行状态的指令一直未被发射执行的问题。
[0054]
应当理解,在同时存在多个优选指令时,调度指令的方式并不是唯一的,也可能其他方式,根据本发明的另一个实施例,当同时存在多个优选指令时,所述计算节点的指令发射选择模块执行以下操作选择指令:基于轮询调度机制将当前处于就绪可执行状态的所有指令依次发射给计算节点的计算部件进行执行后,再重新确定优选指令。具体的,指令发射选择模块可以按照指令标号从小到大的轮询调度机制将当前处于就绪可执行状态的所有指令依次发射给计算节点,当前处于就绪可执行状态的所有指令发射完后,重新确认后续的优选指令。又或者,根据本发明的另一个实施例,当同时存在多个优选指令时,所述计算节点的指令发射选择模块执行以下操作选择指令:将当前的多个优选指令以及其他的处于就绪可执行状态的指令按照轮询调度机制完全发射给计算节点的计算部件进行执行后,再重新确定优选指令,其中,优选指令调度的顺序在其他的处于就绪可执行状态的指令之前。应当理解,当同时存在多个优选指令时,可根据具体情况的需要进行发射,本发明对此不作任何限制。
[0055]
综上所述,本发明在每个计算节点,获取指令槽(指令存储单元)中所有处于就绪可执行状态的指令时,对比获取到的所有指令被执行后的数据占用共享缓存后释放共享缓存空间的快慢,选择其中被执行后得到的数据占用的共享缓存空间被最快释放的优选指令进行执行。并在计算节点调度执行指令时,考虑指令执行后的数据占用共享缓存后释放共享缓存空间的快慢,在有限共享缓存空间限制下,每次调度指令时从当前处于就绪可执行状态的指令中选择优选指令进行执行,而优选指令的执行结果进入路由节点后所占用的共享缓存空间能被更快释放,以实现快速释放相应的共享缓存空间,避免共享缓存空间被填满无法接收计算节点发送来的新消息所引发的计算节点执行堵塞等问题,从而提升数据流架构的执行效率。
[0056]
进一步的,本发明还考虑部分处于就绪可执行状态的指令一直未被执行的状态,在当前时钟周期同时存在多个优选指令时,可以将当前的多个优选指令以及其他的处于就绪可执行状态的所有指令依次发射给计算节点,并在发射完后再重新确定后续的优选指令;也可以根据当优选指令的个数与预设阈值间的关系,按照轮询调度机制将当前的多个优选指令或是将当前处于就绪可执行状态的所有指令依次调度并发射给计算节点的计算部件进行执行后,再重新确定后续的优选指令。该方式既可避免重复计算以提高计算节点的效率,也可避免部分处于就绪可执行状态的指令一直未被发射执行,进而提升数据流架构的执行效率。
[0057]
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
[0058]
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0059]
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
[0060]
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1