一种数据流指令映射方法技术

技术编号:18458540 阅读:24 留言:0更新日期:2018-07-18 12:36
本发明专利技术公开了一种数据流指令映射方法,其包括数据流图遍历子步骤和指令映射子步骤,数据流图遍历子步骤用于对数据流图中的每一节点进行遍历,指令映射子步骤用于将多个数据流指令分别映射至位于一片上网络的计算单元阵列上。本发明专利技术提供的数据流指令映射方法优化了现有的数据流指令映射方法,能够根据片上网络的拓扑结构情况和路由算法的特点,尽量使运行时的多地址共享数据路由包里的多个地址对应的PE(处理单元)位置在一条直线上,以降低因路由包的拆分造成片上网络拥堵情况,提高了数据流程序执行效率。

A method of data stream instruction mapping

The present invention discloses a data stream instruction mapping method, which includes a data stream graph traversal step and an instruction mapping sub step. The data stream graph traverses the sub steps to traverse each node in the data flow graph. The instruction mapping sub step is used to map the multiple data stream instructions to a single network. On the element array. The data stream instruction mapping method provided by the invention optimizes the existing data stream instruction mapping method, which can make the location of the PE (processing unit) corresponding to multiple addresses in the running multi address shared data routing packet on a straight line to reduce the cause, according to the topology of the network on the chip and the characteristics of the routing algorithm. The split of the routing packets causes congestion on the network and improves the execution efficiency of the data flow program.

【技术实现步骤摘要】
一种数据流指令映射方法
本专利技术涉及数据流体系结构处理器优化领域,特别涉及一种利用处理器内部片上网络特点的数据流指令映射方法。
技术介绍
随着计算机体系结构的发展,领域专用的计算机体系结构成为主要发展趋势.在面向特定应用时,专用型结构利用应用特征对结构进行相应的优化,从而更好地发挥出硬件的计算性能。在高性能计算领域,数据流计算是领域专用计算结构的一个重要分支,数据流计算表现出了较好的性能和适用性。在数据流计算模式中,程序是以数据流图来表示的。数据流计算中一个关键的问题是如何将数据流图映射到多个执行单元上。数据流指令映射需要兼顾通信延迟和并发性。在发掘程序的并行性的同时,尽量缩短指令之间的通信延迟,从而提高数据流程序的执行效率。例如在TRIPS中,程序块被分配到4×4的执行单元阵列上,每个执行单元上最多可以放置8条指令,单个程序块最大为128条指令。执行单元、缓存和寄存器堆之间通过二维网格(Mesh)进行通信。当一个程序块完成计算后,调度单元将下一个程序块映射到执行单元阵列上。在最新的数据流众核结构中,大量运算的操作数需要通过片上网络传递,造成片上网络上传输消息量巨大,严重影响了数据流众核片上处理器核接收消息的延迟,并且数据流众核处理器核的性能很依赖接收操作数带宽。基于以上情况出现了将传统的单地址单数据包格式改成多地址共享数据包格式,新的路由包相比于传统的数据包可以大量减少片上网络上传输消息量,从而减少片上网络传输延迟,提高数据流众核处理器核的运算吞吐量。对于现有的数据流众核结构指令映射方法,主要考虑通信延迟,互相依赖的指令应该尽量映射到较近的执行单元或同一个执行单元上;考虑并发性,互相独立的指令应该尽量映射到不同的执行单元。但是这种指令映射方法与片上网络采用的多地址共享数据路由包结构产冲突,因为多地址共享数据路由包结构在长距离传输才起到很好的作用,而以上指令映射方法采用就近原则,造成路由包过早拆分多个路由包,造成片上网络路由包数量快速增加,使片上网络产生拥堵。
技术实现思路
对于数据流程序而言,节点产生的数据会被多个其他节点使用,因此,当前的数据流结构处理器片上网络路由包大多采用多地址共享数据路由包。多地址共享数据路由包在片上网络传输时存在拆分操作,如果拆分时机不合适,将导致片上网络中产生大量路由包,造成片上网络产生拥堵,从而影响数据流程序执行效率。本专利技术针对上述现状提供一种数据流指令映射方法,用以提高数据流程序的执行效率和降低片上网络拥堵状况。为达到上述目的,本专利技术提供了一种数据流指令映射方法,其包括数据流图遍历子步骤和指令映射子步骤,数据流图遍历子步骤用于对数据流图中的每一节点进行遍历,指令映射子步骤用于将多个数据流指令分别映射至位于一片上网络的计算单元阵列上,其中:数据流图遍历子步骤:S1:采用自顶向下、由外向内的原则对数据流图中的所有节点进行编号,同时设置一队列区和一缓冲区,其中,队列区用于记录需要遍历的节点,缓冲区用于记录节点的遍历状态;S2:从数据流图中的顶点0开始,基于图宽度优先遍历的原则将顶点0的下游节点1~n的编号插入所述队列区并将其状态标记为“就绪”,当队列区的节点遍历过之后则将对应的节点编号从队列区中删除;S3:将所述队列区中的节点编号依次读入所述缓冲区并全部标记为“未遍历”状态;S4:依次对缓冲区中的节点进行遍历,将遍历过的节点标记为“已遍历”,其中,如果欲遍历的节点的上游节点存在未遍历的情况,则将该欲遍历的节点标记为“等待”状态,接着对该欲遍历的节点的后续节点进行遍历,直至遍历到一“全遍历节点”,“全遍历节点”指的是其所有上游节点均处于“已遍历”状态的节点,则暂停遍历,执行步骤S5;S5:将步骤S4中标记为“等待”状态的节点依序遍历一遍,如果处于“等待”状态的节点的所有上游节点都遍历过,则其状态修改为“就绪”;S6:遍历完所有“等待”状态的节点之后,将“全遍历节点”从所述缓冲区删除,如果此时队列区不为空则返回步骤S4,否则结束遍历过程;。指令映射子步骤:S1′:按照数据流图遍历节点的顺序依序对数据流图中节点存储的指令进行映射;S2′:对于位于同一个数据流指令的下游的至少两个下游指令,在对该至少两个下游指令进行映射之前,统计计算单元阵列的当前映射状态、该至少一两个下游指令的上游指令的映射位置以及该至少两个下游指令的总数目并据此将该至少一个下游指令均衡的映射至最近的计算单元上;S3′:对于位于同一个数据流指令的下游的至少两个下游指令,优先将该至少两个下游指令映射在位于同一条直线上的计算单元上;S4′:对于位于至少两个上流指令的下游的数据流指令,优先将该数据流指令映射至距离该至少两个上流指令映射位置最近的计算单元上。在本专利技术的一实施例中,对于位于同一个数据流指令的下游的至少两个下游指令,在对该至少两个下游指令进行映射之前,记录该至少两个下游指令中每一指令的遍历状态,当该至少两个下游指令中每一指令均为“已遍历”状态时,则将该至少两个下游指令同时进行映射。在本专利技术的一实施例中,计算单元阵列构成一Mesh网格。本专利技术提供的数据流指令映射方法优化了现有的数据流指令映射方法,能够根据片上网络的拓扑结构情况和路由算法的特点,尽量使运行时的多地址共享数据路由包里的多个地址对应的PE(处理单元)位置在一条直线上,以降低因路由包的拆分造成片上网络拥堵情况,提高了数据流程序执行效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为数据流图遍历过程(当前遍历到指令1);图2为数据流图遍历过程(当前遍历到指令2);图3为数据流图遍历过程(当前遍历到指令3);图4为数据流图遍历过程(当前遍历到指令4);图5为数据流图遍历过程(当前遍历到指令7);图6为数据流图遍历过程(当前遍历到指令9);图7为数据流图遍历过程(当前首次遍历到指令17);图8为数据流图遍历过程(当前遍历到指令10);图9为数据流图遍历过程(当前遍历到指令11);图10为数据流图遍历过程(当前遍历到指令12);图11为数据流图遍历过程(当前遍历到指令16);图12为数据流图遍历过程(当前第二次遍历到指令17);图13为数据流图遍历过程(遍历结束);图14为数据流图中的指令映射至计算单元阵列的初始状态示意图;图15为数据流图中节点的指令与计算单元中的映射位置对应图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术中的数据流图整体遍历采用了类似图广度优先遍历算法的思想,特殊的是,遍历一个节点的前提是必须该节点的源操作数产生节点必须遍历过,否则该节点遍历暂停,此时接着遍历其他节点,直到暂停遍历的节点的遍历条件满足,则解除该节点的暂停状态并对其进行遍历。本专利技术在遍历一节点的同时还考虑该节点的所有子节本文档来自技高网
...

【技术保护点】
1.一种数据流指令映射方法,其特征在于,包括数据流图遍历子步骤和指令映射子步骤,数据流图遍历子步骤用于对数据流图中的每一节点进行遍历,指令映射子步骤用于将多个数据流指令分别映射至位于一片上网络的计算单元阵列上,其中:数据流图遍历子步骤:S1:采用自顶向下、由外向内的原则对数据流图中的所有节点进行编号,同时设置一队列区和一缓冲区,其中,队列区用于记录需要遍历的节点,缓冲区用于记录节点的遍历状态;S2:从数据流图中的顶点0开始,基于图宽度优先遍历的原则将顶点0的下游节点1~n的编号插入所述队列区并将其状态标记为“就绪”,当队列区的节点遍历过之后则将对应的节点编号从队列区中删除;S3:将所述队列区中的节点编号依次读入所述缓冲区并全部标记为“未遍历”状态;S4:依次对缓冲区中的节点进行遍历,将遍历过的节点标记为“已遍历”,其中,如果欲遍历的节点的上游节点存在未遍历的情况,则将该欲遍历的节点标记为“等待”状态,接着对该欲遍历的节点的后续节点进行遍历,直至遍历到一“全遍历节点”,“全遍历节点”指的是其所有上游节点均处于“已遍历”状态的节点,则暂停遍历,执行步骤S5;S5:将步骤S4中标记为“等待”状态的节点依序遍历一遍,如果处于“等待”状态的节点的所有上游节点都遍历过,则其状态修改为“就绪”;S6:遍历完所有“等待”状态的节点之后,将“全遍历节点”从所述缓冲区删除,如果此时队列区不为空则返回步骤S4,否则结束遍历过程;。指令映射子步骤:S1′:按照数据流图遍历节点的顺序依序对数据流图中节点存储的指令进行映射;S2′:对于位于同一个数据流指令的下游的至少两个下游指令,在对该至少两个下游指令进行映射之前,统计计算单元阵列的当前映射状态、该至少一两个下游指令的上游指令的映射位置以及该至少两个下游指令的总数目并据此将该至少一个下游指令均衡的映射至最近的计算单元上;S3′:对于位于同一个数据流指令的下游的至少两个下游指令,优先将该至少两个下游指令映射在位于同一条直线上的计算单元上;S4′:对于位于至少两个上流指令的下游的数据流指令,优先将该数据流指令映射至距离该至少两个上流指令映射位置最近的计算单元上。...

【技术特征摘要】
1.一种数据流指令映射方法,其特征在于,包括数据流图遍历子步骤和指令映射子步骤,数据流图遍历子步骤用于对数据流图中的每一节点进行遍历,指令映射子步骤用于将多个数据流指令分别映射至位于一片上网络的计算单元阵列上,其中:数据流图遍历子步骤:S1:采用自顶向下、由外向内的原则对数据流图中的所有节点进行编号,同时设置一队列区和一缓冲区,其中,队列区用于记录需要遍历的节点,缓冲区用于记录节点的遍历状态;S2:从数据流图中的顶点0开始,基于图宽度优先遍历的原则将顶点0的下游节点1~n的编号插入所述队列区并将其状态标记为“就绪”,当队列区的节点遍历过之后则将对应的节点编号从队列区中删除;S3:将所述队列区中的节点编号依次读入所述缓冲区并全部标记为“未遍历”状态;S4:依次对缓冲区中的节点进行遍历,将遍历过的节点标记为“已遍历”,其中,如果欲遍历的节点的上游节点存在未遍历的情况,则将该欲遍历的节点标记为“等待”状态,接着对该欲遍历的节点的后续节点进行遍历,直至遍历到一“全遍历节点”,“全遍历节点”指的是其所有上游节点均处于“已遍历”状态的节点,则暂停遍历,执行步骤S5;S5:将步骤S4中标记为“等待”状态的节点依序遍历一遍,如果处于“等待”状态的节点的所有上游节点都遍历过,则其状态修改...

【专利技术属性】
技术研发人员:李易欧焱张浩范东睿叶笑春
申请(专利权)人:北京中科睿芯智能计算产业研究院有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1