数据流架构中利用关键路径信息进行指令动态迁移的方法与流程

文档序号:11623914阅读:279来源:国知局
数据流架构中利用关键路径信息进行指令动态迁移的方法与流程

本发明涉及数据流架构中的指令迁移,具体而言,涉及一种数据流架构中利用关键路径信息进行指令动态迁移的方法。



背景技术:

随着计算机体系结构的发展,领域专用的计算机体系结构成为主要发展趋势。在面向特定应用时,专用型结构利用应用特征对结构进行相应的优化,从而更好地发挥出硬件的计算性能。在高性能计算领域,数据流计算是领域专用计算结构的一个重要分支,数据流计算表现出了较好的性能和适用性。数据流架构通常都包括若干个或者十几个计算节点,每个计算节点都是运算能力较强但是控制能力较弱、复杂度较小的核心。数据流架构执行的过程是:通过编译器的静态映射,把一次计算所需的指令映射分配到不同的节点上,然后每个节点针对不同的数据组进行运算。在编译器静态映射的时候,会考虑节点的资源分布状况、指令计算距离、通信延迟以及互相依赖的指令尽量映射到较近的执行节点或者同一个执行节点,同时还需要考虑并发性相互独立的指令应该尽量映射到不同的执行单元,执行映射对提高数据流计算性能有着重大的作用。

静态指令映射虽然考虑了上面列出的多种因素,但是无法知晓和适应实时执行时发生的动态变化,包括网络的拥堵状况、指令依赖链条对数据延迟产生的影响等,因而无法在指令运行的过程中根据实际情况进行调整,一旦动态执行条件发生变化,则无法实时做出调整和响应,从而限制了该架构的性能被进一步优化的可能。



技术实现要素:

本发明提供一种数据流架构中利用关键路径信息进行指令动态迁移的方法,以使得数据流架构的指令映射可以动态适应负载和资源使用情况的变化,从而提高数据流架构的运行速度和计算效率。

为达到上述目的,本发明提供了一种数据流架构中利用关键路径信息进行指令动态迁移的方法,该方法应用于一数据流架构中,所述数据流架构中具有n个节点以及一指令迁移控制单元,n个节点沿相互垂直的第一方向和第二方向排列为阵列形式,每一个节点具有m个指令槽、一迁移目标地址计算单元、一关键路径检测单元、一迁移目标地址广播单元和一空闲指令槽检测单元,指令槽用于存储指令,该方法包括以下步骤:

s1:每一节点中的关键路径检测单元依次对指令槽中存储的指令进行检测,以确认其中存储的指令是否为关键路径;

s2:当一节点p1确认其中的一指令i为关键路径时,节点p1中的迁移目标地址计算单元进行计算,以得到指令i所要迁移至的节点p2并向节点p2发送一空闲询问请求;

s3:节点p2接收到所述空闲询问请求后,节点p2中的空闲指令槽检测单元开始检测其中是否有能够存储来自节点p1的指令的指令槽,若为“有”则向节点p1发送一确认迁移指令并执行步骤4,若为“没有”则返回步骤s2重新计算下一个迁移至的节点;

s4:节点p1向所述指令迁移控制单元发送一迁移请求,所述指令迁移控制单元接受所述迁移请求并将所述迁移请求排列至一迁移队列的队尾;

s5:所述指令迁移控制单元实时检测排列在所述迁移队列队头的迁移请求,并向该迁移请求对应的节点p1发送一确认迁移指令;

s6:节点p1接收到所述确认迁移指令后,节点p1中的迁移目标地址广播单元向指令i的上游节点和下游节点发送暂停操作数传输指令;

s7:指令i的上游节点和下游节点暂停操作数的传输并向节点p1发送确认反馈消息;

s8:节点p1向节点p2打包迁移指令i的相关信息;

s9:指令i迁移完成后,节点p2向节点p1发送一迁移完成消息;

s10:节点p1中的迁移目标地址广播单元向指令i原来的上游节点和下游节点发送指令i当前所在的节点p2所在位置信息;

s11:指令i原来的上游节点和下游节点接受指令i当前所在的节点p2所在位置信息并向节点p1发送更改确认消息;

s12:节点p1向所述指令迁移控制单元发送指令迁移完毕消息;

s13:节点p1向指令i原来的上游节点中的相应指令槽发送消息,以指示重新发送数据以进行运算。

在本发明的一实施例中,于步骤s1中,判断指令为关键路径的条件为以下(1)~(4):

(1)指令对应的两个源操作数的依赖链之差超过一预设值l1;

(2)指令与下游节点之间的空间距离超过一预设值l2;

(3)指令对应的下游指令的数量超过一预设值d;

(4)指令在节点中等待被发射的时间超过一预设值t;

当指令满足上述(1)&(2)或(1)&(3)或(1)&(4)或(1)&(2)&(3)&(4)时,判断指令为关键路径。

在本发明的一实施例中,于步骤s2中,迁移目标地址计算单元优先根据以下策略(1)和/或(2)对指令i进行迁移:

(1)若n大于一设定值n1,则每次迁移的跳数大于一跳,若n小于一设定值n2,则每次只迁移一跳,其中,n2≤n1;

(2)向指令i与源操作数之间沿第一方向和第二方向中距离差大的方向迁移;

(3)若指令i所在的节点与其下游节点之间的距离为l3,则指令i的迁移距离为

在本发明的一实施例中,n=16,所述数据流架构中的16个节点排列为4×4的阵列形式。

在本发明的一实施例中,每一节点中最多保存的指令条数为128。

本发明提供的数据流架构中利用关键路径信息进行指令动态迁移的方法利用每个节点实时检测到的关键路径信息指导指令的动态迁移,从而能够使得数据流架构的指令映射可以动态适应负载、资源使用情况以及网络拥塞程度的变化,进而提高数据流架构的运行速度和计算效率。

附图说明

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

图1为数据流架构中具有16个节点的示意图;

图2为本发明提供的数据流架构中利用关键路径信息进行指令动态迁移的方法的硬件示意图;

图3为节点的结构示意图。

附图标记说明:pe0~pe15-节点;1-指令迁移控制单元;x-第一方向;y-第二方向;2-指令槽;3-迁移目标地址计算单元;4-关键路径检测单元;5-迁移目标地址广播单元;6-空闲指令槽检测单元;228-指令。

具体实施方式

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

在数据流架构当中,关键路径表示那些等待发射时间较长的、不能及时快速地切换数据上下文的指令。在传统的控制流架构当中,造成关键路径的原因可以通过单一因素进行判断,例如,在发射队列当中等待的时间很长,那么这条指令可以被认为是关键路径。但是,在数据流架构当中,由于指令映射的原因,不能通过这样的单一因素进行判断。如图1所示数据流架构中具有16个节点的示意图,pe0~pe15为节点,节点pe15中的一条指令的2个源操作数分别来自节点pe0和节点pe8,两个源操作数分别需要经过4跳和6跳的距离到达节点pe15,虽然从距离上看,节点pe0、节点pe8与下游节点pe15之间的距离相对较远,但是,一方面,两个源操作数与节点pe15之间距离(分别为4跳和6跳)相差不大;另一方面,如果依赖于这条指令结果的下游节点与pe15之间的距离不算远的话,那么这条指令很难说一定是关键路径。由此可以看出,在数据流架构当中,需要综合考虑多种因素判定一条指令是否为关键路径。

本发明提供了一种数据流架构中利用关键路径信息进行指令动态迁移的方法,该方法应用于一数据流架构中,图2为本发明提供的数据流架构中利用关键路径信息进行指令动态迁移的方法的硬件示意图,如图2所示,数据流架构中具有16个节点pe0~pe15以及一指令迁移控制单元1,16个节点沿相互垂直的第一方向x和第二方向y排列为4×4的阵列形式,图2中还标识出了每一节点于第一方向x和第二方向y的坐标以便于计算迁移时的跳数。于另外的实施例中,数据流架构中节点的个数可以根据实际情况而调整,例如为64个或其他数目,本发明不以16个为限。图3为节点的结构示意图,如图3所示,本实施例中每一个节点具有指令槽2、一迁移目标地址计算单元3、一关键路径检测单元4、一迁移目标地址广播单元5和一空闲指令槽检测单元6,指令槽2用于存储指令,本实施例中,指令槽2中存储的指令条数为128,但不以此为限,可以根据实际需要增加或减少,该方法包括以下步骤:

s1:每一节点中的关键路径检测单元4依次对指令槽2中存储的指令进行检测,以确认其中存储的指令是否为关键路径;

其中,于步骤s1中,判断指令为关键路径的条件为以下(1)~(4):

(1)指令对应的两个源操作数的依赖链之差超过一预设值l1,例如,当源操作数为两个时,此两个源操作数到达指令所在的节点的路径之间的差值大于预设值l1;

(2)指令与下游节点之间的空间距离超过一预设值l2;

(3)指令对应的下游指令的数量超过一预设值d;

(4)指令在节点中等待被发射的时间超过一预设值t;

当指令满足上述(1)&(2)或(1)&(3)或(1)&(4)或(1)&(2)&(3)&(4)时,判断指令为关键路径,也即,(1)为判断一条指令是否为关键路径的主要因素,(2)、(3)和(4)为辅助因素。需要说明的是,l1、l2、d和t均可以自行设定。

s2:当一节点p1确认其中的一指令i为关键路径时,节点p1中的迁移目标地址计算单元3进行计算,以得到指令i所要迁移至的节点p2并向节点p2发送一空闲询问请求;

于步骤s2中,迁移目标地址计算单元优先根据以下策略(1)和/或(2)对指令i进行迁移:

(1)若n大于一设定值n1,则每次迁移的跳数大于一跳,若n小于一设定值n2,则每次只迁移一跳,其中,n2≤n1;

也就是说,当数据流架构中的节点数目较少时,每次迁移的调数可以设置的较少,例如为一跳,随着数据流架构中的节点数目增多,每次迁移的跳数可以设置的更多,以上n1、n2可以由使用者根据实际需要设定。

(2)向指令i与源操作数之间沿第一方向和第二方向中距离差大的方向迁移;

(3)若指令i所在的节点与其下游节点之间的距离为l3,则指令i的迁移距离为此处的l3为沿第一方向或沿第二方向的距离,分别为对l3向下取整或向上取整,也即,若l3不是整数,则为小于l3的最大整数,则为大于l3的最小整数。

s3:节点p2接收到空闲询问请求后,节点p2中的空闲指令槽检测单元6开始检测其中是否有能够存储来自节点p1的指令的指令槽,若为“有”则向节点p1发送一确认迁移指令并执行步骤4,若为“没有”则返回步骤s2重新计算下一个迁移至的节点;

s4:节点p1向指令迁移控制单元1发送一迁移请求,指令迁移控制单元1接受迁移请求并将迁移请求排列至一迁移队列的队尾;

s5:指令迁移控制单元1实时检测排列在迁移队列队头的迁移请求,并向该迁移请求对应的节点p1发送一确认迁移指令;

此处需要说明的是,当迁移请求排列至迁移队列的队尾后,一般需要经过一段时间才能够对其进行处理,于等待的时间中,需要处理于该迁移队列中排列在其前方的其他迁移请求,此处为了说明方便直接说明经过一段等待时间后该迁移请求被处理时的情况。

s6:节点p1接收到确认迁移指令后,节点p1中的迁移目标地址广播单元3向指令i的上游节点和下游节点发送暂停操作数传输指令;

s7:指令i的上游节点和下游节点暂停操作数的传输并向节点p1发送确认反馈消息;

s8:节点p1向节点p2打包迁移指令i的相关信息;

s9:指令i迁移完成后,节点p2向节点p1发送一迁移完成消息;

s10:节点p1中的迁移目标地址广播单元5向指令i原来的上游节点和下游节点发送指令i当前所在的节点p2所在位置信息;

s11:指令i原来的上游节点和下游节点接受指令i当前所在的节点p2所在位置信息并向节点p1发送更改确认消息;

s12:节点p1向指令迁移控制单元1发送指令迁移完毕消息;

s13:节点p1向指令i原来的上游节点中的相应指令槽发送消息,以指示重新发送数据以进行运算。

以下以图2为例进行说明:

s1:图2中的节点pe15中的指令228的两个源操作数分别来自节点pe1和pe13,其对应的下游节点为pe10,指令228满足上述步骤s1中判断指令为关键路径的条件(1)~(4),因此,节点pe15中的关键路径检测单元4检测到该指令228为关键路径;

s2:节点pe15中的迁移目标地址计算单元3进行计算,其中,迁移目标地址计算单元3每次迁移的条数为一跳,因而计算出该指令228所要迁移至的节点为节点pe11或pe14,此处采用y方向优先策略,因此,迁移目标地址计算单元3确定节点pe11为所要迁移至的目标节点并向节点pe11发送一空闲询问请求;

s3:节点pe11中的空闲指令槽检测单元6开始检测其中是否有能够存储来自节点pe11的指令的指令槽,经检测,节点pe11中的空闲指令槽检测单元6不具有能够存储来自节点pe15的指令的指令槽,因此,需要返回上一步骤重新计算所要迁移至的节点,经过迁移目标地址计算单元3再次计算,确定下一个所要迁移至的节点为节点pe14并向节点pe14发送一空闲询问请求,节点pe14接收到空闲询问请求后,节点pe14中的空闲指令槽检测单元6开始检测其中是否有能够存储来自节点pe15的指令的指令槽,经检测,节点pe14中的空闲指令槽检测单元6具有能够存储来自节点pe15的指令的指令槽;

s4:节点p15向指令迁移控制单元1发送一迁移请求,指令迁移控制单元1接受迁移请求并将迁移请求排列至一迁移队列的队尾;

s5:指令迁移控制单元1实时检测排列在迁移队列队头的迁移请求,当该迁移请求前方的其他迁移请求依次被处理完成以使得该迁移请求排列至迁移队列的队头时,指令迁移控制单元1向节点pe15发送一确认迁移指令;

s6:节点pe15接收到确认迁移指令后,节点pe15中的迁移目标地址广播单元3向指令228的上游节点pe1、pe13和下游节点pe10发送暂停操作数传输指令;

s7:指令228的上游节点pe1、pe13和下游节点pe10暂停操作数的传输并向节点pe15发送确认反馈消息;

s8:节点pe15向节点pe14打包迁移指令228相关信息;

s9:指令228迁移完成后,节点pe14向节点pe15发送一迁移完成消息;

s10:节点pe14中的迁移目标地址广播单元5向指令228原来的上游节点pe1、pe13和下游节点pe10发送指令228当前所在的节点pe14所在位置信息;

s11:指令228原来的上游节点pe1、pe13和下游节点pe10接受指令228当前所在的节点pe14所在位置信息并向节点pe14发送更改确认消息;

s12:节点pe15向指令迁移控制单元1发送指令迁移完毕消息;

s13:节点pe14向指令228原来的上游节点pe1、pe13中的相应指令槽发送消息,以指示重新发送数据以进行运算。

本发明提供的数据流架构中利用关键路径信息进行指令动态迁移的方法利用每个节点实时检测到的关键路径信息指导指令的动态迁移,从而能够使得数据流架构的指令映射可以动态适应负载、资源使用情况以及网络拥塞程度的变化,进而提高数据流架构的运行速度和计算效率。

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

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

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

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