一种数据流架构中基于网络负载特征进行指令调度的方法与流程

文档序号:13619412阅读:141来源:国知局

本发明涉及数据流架构中的指令调度方法,具体而言,涉及一种数据流架构中基于网络负载特征进行指令调度的方法。



背景技术:

随着计算机体系结构的发展,领域专用的计算机体系结构成为主要发展趋势。在面向特定应用时,专用型结构利用应用特征对结构进行相应的优化,从而更好地发挥出硬件的计算性能。在高性能计算领域,数据流计算是领域专用计算结构的一个重要分支,数据流计算表现出了较好的性能和适用性。数据流架构通常都包括若干个或者十几个计算节点(计算节点称为processingelement,简称pe),每个计算节点都是运算能力较强但是控制能力较弱、复杂度较小的核心。每个计算节点内设置n个指令槽,每个指令槽内保存这条指令执行所需的操作数信息,当指令对应的所有源操作数都已经准备好同时该指令的下游也准备好接收结果数据时,这条指令就可以被指令调度逻辑选择进入到该计算节点的执行流水线当中。每个计算节点内的指令调度逻辑在每个时钟周期都会从那些准备好的指令当中进行选择然后发射到执行流水线当中。一般的指令调度逻辑都是选择根据指令标号顺序采用轮询(round-robin)的方式进行选择。如图1所示为轮询方式选择指令的示意图,一计算节点一共设置16个指令槽(编号分别为0~15),cycle1、cycle2和cycle3为时间轴上3个连续的时间点。在时间点cycle1时,16个指令槽当中一共存在4条指令是“ready”的,可以被调度逻辑选择发射,此时,在时间点cycle1选择2号指令槽。之后,在时间点cycle2的时候,指令槽当中的2号指令槽由于前一个时间点cycle1被选中发射到流水线当中,所以在当前时间点cycle2处于发射状态,此时,6号、9号、13号和14号指令槽都处于“ready”状态,可以被调度逻辑选择。轮询的原则是按照指令标号的顺序从所有处于“ready”状态的指令当中进行选择,所以在时间点cycle2时选择的是6号指令槽。在时间点cycle3时,采用类似的原理,选择的是9号指令槽。总结起来,传统的轮询方式有2个要素:(1)按照指令的顺序进行选择;(2)从所有“ready”的指令当中选择。

可见,传统的数据流架构当中,一般都是根据指令的源操作数是否完备作为先决条件,然后从这些满足先决条件的指令当中根据指令的顺序进行轮询选择,被选出的指令被调度到计算流水线当中执行。如果在数据流架构下,指令被映射到数据流阵列的映射算法和指令的排序同时都能够较好地考虑到各方面的均衡,这种普通的轮询调度方式也能够较好地保持计算资源和网络负载的均衡;但是如果指令在映射到数据流阵列的时候没有全面考虑到各方面均衡,可能导致连接数据流阵列的网络出现局部性繁忙,此时如果仍然采用普通的轮询策略,执行节点内部的计算流水线会出现停顿等待,计算单元的局部性利用率降低。

一般在数据流架构当中,多个计算节点采用2dmesh结构进行连接,由片上路由(router)负责在计算单元(pe)之间传递操作数。图2为一片上网络示意图,图3为图2中一个片上路由201的出口和入口示意图,如图2所示,片上网络由多个计算单元、多个片上路由构成2dmesh结构,spm为片上路由发送的系统参数报文,如图3所示,片上路由201内部有5个入口和5个出口。5个入口分别对应东、南、西、北方向和本地pe202,5个出口分别对应东、南、西、北方向和本地pe202。在片上路由201内部,来自不同入口的数据包先分别被放入到各个方向对应的输入缓存(inputbuffer)当中,然后对数据包信息进行解析,根据数据包的目的方向从对应的出口发送到下一级节点当中。每个时钟周期,每个出口可以处理1个数据包。

以上分析了传统数据流架构中的指令调度策略即轮询方式的基本过程,以及数据流架构中片上路由的工作原理。可以看出,两者并没有紧密的配合,指令调度逻辑在调度指令执行的时候并没有考虑指令执行结果的发送方向,而是仅仅考虑指令的顺序和指令的操作数是否准备好。如果指令映射的时候,在某个方向局部密集,按照原本片上路由的处理速度,该方向会导致执行速度出现瓶颈。另外,如果仍然按照原来的轮询策略调度指令,则会导致计算节点内部出现流水线的停顿和空闲。

可见,如果计算节点在调度指令的同时考虑网络拥堵状况,那么指令调度逻辑可以选择不拥堵方向上的指令进行调度,从而有助于提高计算节点内部的部件利用率和网络资源的利用率和吞吐率,这也是本领域技术人员的一个重要目标。



技术实现要素:

本发明提供一种数据流架构中基于网络负载特征进行指令调度的方法,该方法在指令调度的同时考虑网络拥堵状况,以提高计算节点内部的部件利用率和网络资源的利用率和吞吐率。

为达到上述目的,本发明提供了一种数据流架构中基于网络负载特征进行指令调度的方法,其包括以下步骤:

在每一片上路由内部均设置一拥堵检测部件,并在每一片上路由的每一出口均设置一输出缓存部件,以及在每一计算节点的内部均设置一指令选择部件;

拥堵检测部件实时检测片上路由每一出口的拥堵状况并将其发送至对应的计算节点,拥堵状况包括拥堵状态和非拥堵状态;

指令选择部件从指令槽中选择一优先调度指令并将其发送至对应的片上路由,选择的依据为指令处于“ready”状态并且其对应的出口方向处于非拥堵状态;

片上路由将接收到的优先调度指令暂存至对应方向的输出缓存部件中;

片上路由根据输出缓存部件中暂存的优先调度指令的目的方向将其发送至下一级片上路由。

在本发明的一实施例中,所述拥堵检测部件在每一时间点均向对应的计算节点发送一专用数据包,所述专用数据包中包含片上路由每一出口的拥堵状况。

在本发明的一实施例中,所述拥堵检测部件在每一时间点将片上路由每一出口的拥堵状况打包为一数据片段并将其附加在由片上路由向对应计算节点发送的数据包的尾部。

在本发明的一实施例中,每一片上路由均具有5个出口,分别对应东、南、西、北方向和本地计算节点。

在本发明的一实施例中,时间点指的是指令流水线中的时间拍。

本发明的数据流架构中基于网络负载特征进行指令调度的方法在指令调度的同时考虑网络拥堵状况,与传统的“轮询”方式相比,提高了计算节点内部的部件利用率和网络资源的利用率和吞吐率,并且提高了计算节点内部执行流水线的利用率以及网络带宽的利用率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为轮询方式选择指令的示意图;

图2为一片上网络示意图;

图3为图2中一个路由201的出口和入口示意图;

图4为片上路由中的输出缓冲部件示意图;

图5为片上路由和计算节点内部示意图;

图6为本发明一具体实施例的基于网络负载特征进行指令调度的示意图。

附图标记说明:201-路由;202-本地pe;1-片上路由;2-计算节点。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供了一种数据流架构中基于网络负载特征进行指令调度的方法,其包括以下步骤:

在每一片上路由内部均设置一拥堵检测部件,并在每一片上路由的每一出口均设置一输出缓存部件,以及在每一计算节点的内部均设置一指令选择部件;

图4为片上路由中的输出缓冲部件示意图,如图4所示,输出缓冲部件(outputbuffer)设置在片上路由的每一出口处,而片上路由的入口处不再设置输入缓冲。

图5为片上路由1和计算节点2内部示意图,如图5所示,拥堵检测部件与片上路由1的每一出口连接,图5仅示出了其中一个片上路由和一个计算节点的示意图,以每个片上路由1均具有5个出口为例(分别对应东、南、西、北方向和本地计算节点),在其他实施例中,根据片上网络中各节点之间的连接方式不同,每个片上路由的出口个数也不同,因此,输出缓存部件的数目也随之不同,但是,不变的是,拥堵检测部件需要与片上路由的每一个出口连接。

拥堵检测部件实时检测片上路由每一出口的拥堵状况并将其发送至对应的计算节点,拥堵状况包括拥堵状态和非拥堵状态;

指令选择部件从指令槽中选择一优先调度指令并将其发送至对应的片上路由,选择的依据为指令处于“ready”状态并且其对应的出口方向处于非拥堵状态;

片上路由将接收到的优先调度指令暂存至对应方向的输出缓存部件中;

片上路由根据输出缓存部件中暂存的优先调度指令的目的方向将其发送至下一级片上路由。

对于拥堵检测部件如何将片上路由每一出口的拥堵状况发送至计算节点,本发明有以下两种方式:

第一种方式:

拥堵检测部件在每一时间点均向对应的计算节点发送一专用数据包,专用数据包中包含片上路由每一出口的拥堵状况。

第二种方式:

拥堵检测部件在每一时间点将片上路由每一出口的拥堵状况打包为一数据片段并将其附加在由片上路由向对应计算节点发送的数据包的尾部。

在本实施例中,时间点指的是指令流水线中的时间拍。

图6为本发明一具体实施例的基于网络负载特征进行指令调度的示意图,以下分三个阶段介绍该实施例:

cyclen:

此时,计算节点中共有3条处于“ready”状态的指令,分别为instruction2、instruction4和instruction7,其各自对应的发射方向如图所示,此时,拥堵检测部件检测到以下信息:east方向拥堵、north方向拥堵、south方向正常,所以,指令选择部件从指令槽中选择处的优先调度指令为instruction7并将其发送至对应的片上路由。

cyclen+1:

此时,计算节点中共有2条处于“ready”状态的指令,分别为instruction2和instruction4,此时,拥堵检测部件检测到以下信息:east方向正常、north方向拥堵、south方向正常,所以,指令选择部件从指令槽中选择处的优先调度指令为instruction2并将其发送至对应的片上路由。

cyclen+2:

此时,计算节点中只剩余一条处于“ready”状态的指令,即instruction4,同时,拥堵检测部件检测到north方向仍然拥堵,也即,此时没有满足条件的优先调度指令,所以此时没有任何指令被调度发射至执行流水线,该时钟周期执行流水线是空转执行。

本发明的数据流架构中基于网络负载特征进行指令调度的方法在指令调度的同时考虑网络拥堵状况,与传统的“轮询”方式相比,提高了计算节点内部的部件利用率和网络资源的利用率和吞吐率,并且提高了计算节点内部执行流水线的利用率以及网络带宽的利用率。

本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1