CN108052347B - 一种执行指令选择的装置、方法及指令映射方法 - Google Patents
一种执行指令选择的装置、方法及指令映射方法 Download PDFInfo
- Publication number
- CN108052347B CN108052347B CN201711278806.7A CN201711278806A CN108052347B CN 108052347 B CN108052347 B CN 108052347B CN 201711278806 A CN201711278806 A CN 201711278806A CN 108052347 B CN108052347 B CN 108052347B
- Authority
- CN
- China
- Prior art keywords
- instruction
- instructions
- executable
- time
- computing unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明提供了一种执行指令选择的装置、方法及指令映射方法,该执行指令选择方法包括:在一个计算单元上同时有多条可执行指令时,选择所述多条可执行指令中较早映射的指令执行;当所述多条可执行指令中,存在多条指令映射顺序相同时,随机选择映射顺序相同的多条指令中的一条执行。该方案有效提高了计算效率,提高了计算单元时空利用率。
Description
技术领域
本发明涉及计算机体系结构领域,特别涉及数据流体系结构计算机的指令映射方法领域。
背景技术
随着基础科学的发展,大规模科学应用对计算能力提出了新要求。由于传统体系结构计算机遇到散热,能耗,工艺等瓶颈,数据流体系结构以其高并发,控制简单,低能耗等优势成为新一代高性能计算机的可靠选择。
数据流体系结构计算机一般由二维计算单元阵列组成,计算单元通过高速网络连接,计算通过数据在计算单元中计算,计算单元间传递来完成,每个计算单元上放置着一条或多条指令,当指令所需要的数据全部准备好时,该指令即进入可发射状态,如果一个计算单元上,同时有多条指令处于可发射状态,则选取其中某一条发射。
数据流指令通常用数据流图的形式表示。指令映射是指数据流图中节点与二维阵列中计算单元的对应关系。对于确定的数据流指令图,不同指令映射方式在指令执行时间,运算部件利用率等上有着较大的差距。
多上下文数据流体系结构是指:在一次计算过程里,计算阵列中同时存在多个使用同一数据流图但数据不同的程序上下文,上下文指数据流图的一次执行过程。在多上下文数据流体系结构中,不同上下文的数据通过程序入口,流水的进入计算阵列,按照相同的路径在计算阵列中流动,不同上下文维护自己的控制存储来控制各自的执行。单上下文数据流体系结构与之对应,指在一次计算过程里,计算阵列中只存在一个程序上下文。
对于多上下文数据流体系结构而言,在同一个PE上可能会同时存在多条可执行的指令,且这些指令属于不同或者相同的程序上下文,此时对执行指令的选择策略也对程序的执行过程有着较大的影响。
现有数据流体系结构指令映射算法多基于以下框架:
将指令按照某种规则进行排序
遍历所有指令,对于每条指令,在计算单元中选择一个最佳位置,将该位置作为该指令的映射位置。
而在同时有多条可发射指令时,现有体系结构一般采用随机选择的方式。
不同的执行指令的选择方法,排序方式和最佳位置选择规则会导致不同的映射结果和表现。
对于单上下文数据流体系结构而言,计算单元只服务于当前程序上下文,不存在多上下文之间对计算单元的竞争情况,指令执行情况容易预测,指令映射也主要集中在关键路径的网络代价以及可并行部分的并行优化上。以单上下文数据流体系结构TRIPS为例,其采用SPDI指令映射算法,SPDI算法按照数据流图中节点深度依次映射指令,从所有计算单元中选择一个最佳节点来来映射当前指令。最佳节点的计算方法为:对每个计算单元,计算将当前指令映射在该节点上的可执行时间。最后选择可执行时间最早的节点作为最佳节点。可执行时间依赖于输入指令(数据流图中的父节点)的可执行时间、输入指令的执行延迟和数据的路径延迟。
对于多上下文数据流体系结构,多个程序上下文之间对计算单元,网络都存在竞争,任务完成的时间不再取决于单个上下文的完成时间而是整个上下文流水线的吞吐量,同时,在同一个PE上可能会同时存在多条属于不同上下文的可发射指令,只考虑单上下文执行时间的映射算法不再适用。针对多上下文数据流体系结构,现有研究主要考虑计算单元的负载均衡和网络竞争上,以LBC算法为例,该算法也以数据流图中节点深度依次映射指令,对于每条指令分别计算计算单元阵列中所有位置的代价,取最小代价的位置作为最佳映射位置,LBC算法采用相邻节点传输延迟与已经映射的该类型指令数量的乘积作为负载代价。该算法在虽然一定程度上提高了计算效率,但是由于影响多上下文流水线计算效率的直接指标为上下文流水线的吞吐量和计算部件的利用率,由于LBC算法没有针对流水线吞吐量和计算部件的利用率进行优化,所以目前仍有较大的优化空间。
同时现有的多上下文数据流体系结构在多条可执行指令的选择方面,多采取随机选择的策略,导致程序的执行难以预测,无法确定流水线的流动过程,导致针对流水线吞吐量和计算单元利用率的优化难以进行。同时这种随机的策略也可能导致后续上下文无法及时进入流水线,导致上下文流水线在某处阻塞,对计算部件利用率和流水线吞吐量都有较大影响。
发明内容
本发明的目的是解决上述现有技术的计算效率不高的问题,提出了一种执行指令选择的方法,装置,同时针对该选择方法,提出了一种基于最早可执行时间的指令映射方法。具体而言,本发明具体提供了如下技术方案:
一方面,本发明提供了一种执行指令选择的方法,所述方法包括以下步骤:
在一个计算单元上同时有多条可执行指令时:
S1、选择所述多条可执行指令中较早映射的指令执行;
S2、当所述多条可执行指令中,存在多条指令映射顺序相同时,随机选择映射顺序相同的多条指令中的一条执行。
优选地,所述S1还包括:当前的所述计算单元对其上的所有备选指令由浅到深进行选择,并选择其中深度最浅的可发射指令后,送入执行部件。
优选地,所述映射的方法为:
S101、初始化所述计算单元的最后执行时刻数组;
S102、初始化宏指令描述数组;
S103、将数据流指令读入到宏指令描述数组;
S104、计算所述S103中的宏指令描述数组所有节点的深度信息;
S105、将具有深度信息的所述宏指令描述数组按照深度信息进行排序;
S106、遍历所述S105中排序后的宏指令描述数组,对于每一条指令i,遍历所有计算单元,并计算指令在各计算单元上的可执行时间;
S107、取可执行时间最早的计算单元映射所述指令i。
优选地,所述映射通过指令映射系统执行,所述指令映射系统部署于数据流编译器与指令分发器之间。
优选地,所述S107之后,还包括:
S108、更新S107中的所述计算单元的最后执行时间;
S109、完成所有指令的映射后,遍历所述宏指令描述数组,输出指令。
优选地,所属宏指令描述数组,其大小为指令数目,其中包括:各指令可执行时间、指令执行周期、指令深度、指令前驱节点、指令后继节点、映射位置。
优选地,所述S102中还包括:初始化上下文个数。
优选地,所述S106进一步包括:
S1061、求当前指令i的所有前驱宏指令中,所有宏指令的第一条指令的最后完成时间与该宏指令所在计算单元到当前计算单元的网络代价的和;
S1062、取所述网络代价的和中的最大值作为当前指令i在该计算单元上的理论可执行时间;
其中宏指令的第一条指令的最后完成时间为该宏指令的可执行时间与其执行周期的和;
S1063、将理论可执行时间与当前计算单元的最后执行时间比较,取其中较大值作为当前指令在当前计算单元的可执行时间。
优选地,网络代价的计算方法如下:对于两节点a、b,其网络代价如下:
netcost=abs(a.position.x-b.position.x)+abs(a.position.y-b.position.y)
其中,abs为取绝对值,(a.position.x,a.position.y)、(b.position.x,b.position.y)分别为点a、b的映射位置。
另一方面,本发明还提供了一种执行指令选择的装置,所述装置包括指令控制缓存部件、选择器、判断部件,所述判断部件为多个时,则判断部件间采用级联方式;
所述指令控制缓存部件存储若干条指令的可执行状态,所述指令控制缓存部件存储的相同指令的可执行信息连接到相同的选择器上,选择器从中选择出可执行的一条指令;
所述选择器按照指令排序,依次与一个判断部件相连,所述判断部件从当前接入的选择器中选择一条靠前端口且可执行的指令,并将其送入输出部件。
优选地,所述判断部件从当前接入的选择器中选择一条靠前端口且可执行的指令,并将其送入输出部件,并产生一输出信号,所述输出信号终止后续部件运行;
如果所述判断部件接入的指令都不可执行,则输出信号启动下一级部件进行判断。
优选地,所述装置部署在每个计算单元上;
所述判断部件由一个移位器和一个选择器电路组成。
又一个方面,本发明还提供了一种执行指令选择的指令映射方法,所述方法包括:
步骤1、初始化所有计算单元的最后执行时间;
步骤2、将所有指令按照深度排序,指令的深度指的是当前指令到根节点的最长路径长度;
步骤3、对于每一条指令,遍历所有计算单元;
步骤4、对于每个计算单元,计算当前指令映射在该计算单元上的可执行时间;
步骤5、取可执行时间最早的计算单元映射当前指令;
步骤6、更新当前计算单元的最后执行时间为步骤5中可执行时间加该指令执行所用时间与上下文个数的乘积。
优选地,所述步骤4中,计算可执行时间具体为:
步骤41、求当前指令的所有前驱宏指令第一条指令的完成时间与该宏指令所在计算单元到当前计算单元的网络代价的和,取其中最大值作为当前指令的理论可执行时间;
步骤42、将理论可执行时间与当前计算单元的最后执行时间比较,取其中较大值作为当前指令的可执行时间。
与现有技术相比,本发明技术方案有效提高了计算效率,提高了计算单元时空利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为2*2计算单元多上下文数据流体系结构的执行示例;
图2为2*2计算单元宏指令映射算法的映射结果;
图3为广度优先策略时流水线运行情况示例;
图4为深度优先策略时流水线运行情况示例;
图5为LBC映射算法的映射结果示例;
图6为采用LBC映射结合深度优先策略时流水线运行情况示例;
图7为本发明实施例的执行指令选择的装置结构图;
图8为本发明实施例的部署于4*4阵列的计算阵列示意图;
图9为本发明实施例的部署于4*4阵列的计算阵列的部署位置示意图;
图10为本发明实施例的执行指令选择装置部署在每个计算单元上的部署位置;
图11为本发明实施例的判断部件示意图;
图12为本发明实施例的基于最早可执行时间的指令映射方法流程图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。应当明确,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本领域技术人员应当知晓,下述具体实施例或具体实施方式,是本发明为进一步解释具体的发明内容而列举的一系列优化的设置方式,而该些设置方式之间均是可以相互结合或者相互关联使用的,同时,下述的具体实施例或实施方式仅作为最优化的设置方式,而不作为限定本发明的保护范围的理解。
实施例1:
本发明在进行多上下文数据流体系结构计算机上的指令映射算法优化研究时,发现现有技术缺陷是由于数据流图在执行过程中,上下文流水线的阻塞导致的,只要减少上下文的阻塞,就能在之后的执行中有效的利用计算单元,从而提高计算单元的利用率和流水线的吞吐量,提高计算效率。而随机的执行指令选择方式导致指令执行难以预测,难以针对流水线吞吐量进行分析优化。
如果能够在指令发射选择时,采取一种固定策略来选择执行指令,就能使得流水线行为可预测,进而针对流水线进行分析优化。
为了提高计算单元的利用率,本发明采取如下策略:当同一个计算单元上同时有多条可执行指令时,优先选择较早映射的指令执行,当可发射指令映射顺序相同时,随机选择一条执行,这样也就使得更多的上下文进入流水线。如此一来,一方面使得流水线行为可以预测,另一方面各上下文的指令都能顺利的进入流水线,此时计算单元上有着更多的备选指令,计算单元的闲置的概率将会大大降低,从而能够提升其利用率。由于该策略选择深度较浅的指令执行,可以称之为广度优先策略,相对的,选择深度较深的指令执行可以称为深度优先策略。
为了实现广度优先策略,可以在每个计算单元上增加一个指令选择装置。该装置当前计算单元的所有备选指令中由浅到深选择,找到深度最浅的可发射指令后送入执行部件中执行。
各上下文的数据由于其数据流图相同,所以其在计算阵列中流动的路径相同,在采用了广度优先策略后,不同上下文的同一指令在流水线表现为连续状态,如同一条长指令一样,其长度为上下文个数。为了与指令进行区别,将这样的连在一起执行的不同上下文之间的指令称为:宏指令,此时上下文流水线流动可以类比为单上下文数据流体系结构的流水线流动,只是宏指令的开始不需要其前驱宏指令完全执行完,只需要宏指令中的第一条指令可发射即可。在宏指令的第一条指令执行完成后后续指令就可以无缝衔接的继续执行。
基于上述特点,对于广度优先策略,需要设计一种能够发挥其优势的指令映射方法,在映射指令时,选择宏指令可执行时间最早的计算单元进行映射。可执行时间可以通过计算其前驱宏指令中第一条指令的执行完成时间和网络代价来得到。
以如图1所示的数据流图在2*2计算单元的的多上下文数据流体系结构计算机上执行为例为例,假设各指令执行时间都为2个单位,相邻节点之间网络传输代价为1个单位。
采用宏指令映射算法的映射结果如图2,图中椭圆代表计算单元,椭圆中数字代表映射在该单元上的指令。采用广度优先策略时流水线运行情况如图3,其横轴为时间,纵轴为计算单元,采用深度优先策略时流水线运行情况如图4。可以看出采用广度优先策略时完成计算的时间为18.5单位,远远小于采用深度优先策略的24单位。采用广度优先策略时计算单元时空利用率(图中使用的时空面积除以总时空面积)为54%,采用深度优先策略时计算单元时空利用率为41%,其时空利用率提高了13%。采用LBC映射算法的映射结果如图5,此时采用深度优先策略时流水线运行情况如图6,其运行时间为20单位,时空利用率为50%,比采用宏指令映射算法的时空利用率低4%。
下面以一具体实施方式为例,说明本发明的映射方法,以将该发明部署于4*4阵列的多上下文数据流处理器为例,计算阵列示意图如图8,对如图1所示的数据流图进行映射,上下文个数为5。
指令映射系统部署于数据流编译器与指令分发间,其输入为尚未映射的数据流指令,输出为映射完成的数据流指令。其部署位置如图9所所示。
宏指令映射算法具体实施方式如下:
步骤1:初始化计算单元最后执行时刻数组Propellers,大小为4*4,用于记录16个计算单元的最后执行时刻ectime,其在阵列中的位置x,y。ectime初始值均为0,如表1所示。
表1
peidx | ectime | x | y |
0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 |
2 | 0 | 0 | 2 |
3 | 0 | 0 | 3 |
4 | 0 | 1 | 0 |
5 | 0 | 1 | 1 |
6 | 0 | 1 | 2 |
7 | 0 | 1 | 3 |
8 | 0 | 2 | 0 |
9 | 0 | 2 | 1 |
10 | 0 | 2 | 2 |
11 | 0 | 2 | 3 |
12 | 0 | 3 | 0 |
13 | 0 | 3 | 1 |
14 | 0 | 3 | 2 |
15 | 0 | 3 | 3 |
步骤2:初始化宏指令描述数组Instructions,大小为指令数目,记录各指令可执行时间StartTime,指令执行周期cycle,指令深度h,指令前驱节点fathers,指令后继节点nexts,映射位置position。初始化上下文个数ContexCount为5。
步骤3:读入数据流指令到指令描述数组中,如下表2所示:
表2
步骤4:计算所有节点的深度信息:从根节点开始,按照广度优先的顺序遍历所有节点,标注当前节点所有子节点的深度为当前节点深度+1。计算结果如下表3所示:
表3
idx | instruction | cycle | h | fathers | nexts | position | StartTime |
0 | a | 2 | 1 | start | c | 0 | |
1 | c | 2 | 2 | a | e | 0 | |
2 | b | 2 | 1 | start | d | 0 | |
3 | d | 2 | 2 | b | e | 0 | |
4 | e | 2 | 3 | c,d | f,g | 0 | |
5 | f | 2 | 4 | e | i | 0 | |
6 | g | 2 | 4 | e | h | 0 | |
7 | h | 2 | 5 | g | i | 0 | |
8 | i | 2 | 6 | f,h | end | 0 | |
9 | end | 2 | 7 | i | 0 |
步骤5:将指令描述数组(即宏指令描述数组)按照深度排序,该排序例如可以是从小到大或者从大到小,具体方式可以依据需要或习惯进行设定,本实施例中以从小到大进行排序为例,排序后的指令描述数组如下表4所示。排序算法可以采用多种方式,例如使用快速排序算法等。
表4
步骤6:遍历指令数组(宏指令描述数组)Instructions,对于每一条指令i,遍历所有计算单元,求出指令在各计算单元上的可执行时间StartTimePi,计算方法为:求当前指令i的所有前驱宏指令fathers中所有宏指令第一条指令的最后完成时间first_out与该宏指令所在计算单元到当前计算单元的网络代价的和,取其中最大值作为当前指令i在该计算单元上的的理论可执行时间Theoretically_Time。其中宏指令的第一条指令执行时间first_out为该宏指令的可执行时间与其执行周期的和:StartTime+cycle。将理论可执行时间Theoretically_Time与当前计算单元的最后执行时间ectime比较,取其中较大值作为当前指令在当前计算单元的可执行时间StartTimePi。两节点a,b间的网络代价的计算方法为:
netcost=abs(a.position.x-b.position.x)+abs(a.position.y-b.position.y)
步骤7:取可执行时间最早的计算单元Pi映射指令i,更新i.StartTime为最早可执行时间,i.position为(Pi.x,Pi.y)
步骤8:更新当前计算单元Pi.ectime为i.StartTime+i.cycle*ContexCount,
下面以映射指令a,b,c为例,讲解上述步骤6,7,8计算过程:
映射指令a时,遍历所有计算单元,选择可执行时间最早的计算单元映射。
a的的前驱节点为start,且此时所有计算单元都为尚未映射指令,即a在所有计算单元上可执行时间都为0,随机选择一个计算单元映射,这里选择peidx=0的计算单元映射,更新peidx=0的计算单元最后执行时刻为a.cycle*ContextCount=2*5=10。
此时计算单元阵列描述数组如下表5:
表5
peidx | ectime | x | y |
0 | 10 | 0 | 0 |
1 | 0 | 0 | 1 |
2 | 0 | 0 | 2 |
3 | 0 | 0 | 3 |
4 | 0 | 1 | 0 |
5 | 0 | 1 | 1 |
6 | 0 | 1 | 2 |
7 | 0 | 1 | 3 |
8 | 0 | 2 | 0 |
9 | 0 | 2 | 1 |
10 | 0 | 2 | 2 |
11 | 0 | 2 | 3 |
12 | 0 | 3 | 0 |
13 | 0 | 3 | 1 |
14 | 0 | 3 | 2 |
15 | 0 | 3 | 3 |
指令描述数组如下表6:
表6
idx | instruction | cycle | h | fathers | nexts | position | StartTime |
0 | a | 2 | 1 | start | c | (0,0) | 0 |
1 | b | 2 | 1 | start | d | 0 | |
2 | c | 2 | 2 | a | e | 0 | |
3 | d | 2 | 2 | b | e | 0 | |
4 | e | 2 | 3 | c,d | f,g | 0 | |
5 | f | 2 | 4 | e | i | 0 | |
6 | g | 2 | 4 | e | h | 0 | |
7 | h | 2 | 5 | g | i | 0 | |
8 | i | 2 | 6 | f,h | end | 0 | |
9 | end | 2 | 7 | i | 0 |
b的前驱节点也为start,所以b在所有计算单元上的理论可执行时间Theoretically_Time都为0,此刻除了peidx=0的计算单元外,其他计算单元都没有映射任何指令故其最后执行时刻也为0,所以b在除peidx=0的计算单元外,其可执行时间都为0。idx=0的计算单元最后执行时刻ectime为10,所以指令b在计算单元peidx=0上可执行时间为10。选择可执行时间最早的计算单元映射,在这里,可以选择除了peidx=0之外的任何一个计算单元映射,这里选择peidx=1的计算单元映射指令b。更新peidx=1的计算单元最后执行时间ectime为10
此时计算单元阵列描述数组如下表7:
表7
peidx | ectime | x | y |
0 | 10 | 0 | 0 |
1 | 10 | 0 | 1 |
2 | 0 | 0 | 2 |
3 | 0 | 0 | 3 |
4 | 0 | 1 | 0 |
5 | 0 | 1 | 1 |
6 | 0 | 1 | 2 |
7 | 0 | 1 | 3 |
8 | 0 | 2 | 0 |
9 | 0 | 2 | 1 |
10 | 0 | 2 | 2 |
11 | 0 | 2 | 3 |
12 | 0 | 3 | 0 |
13 | 0 | 3 | 1 |
14 | 0 | 3 | 2 |
15 | 0 | 3 | 3 |
指令描述数组如下表8所示:
表8
C指令前驱节点为a指令,c宏指令的第一条指令执行要等a宏指令第一条指令执行完成才可以开始,此时时刻为2。a指令映射在计算单元peidx=0上,遍历所有计算单元,计算网络代价,网络代价计算方法为:
netcost=abs(a.position.x-b.position.x)+abs(a.position.y-b.position.y)
其中abs为取绝对值。
计算结果如下表9所示:
表9
其中可执行时间最早为计算单元peidx=4,可执行时间为3,故选择peidx=4的计算单元映射,更新peidx=4的计算单元执行完成时间
etctime=i.StartTime+i.cycle*ContexCount
即3+2*5=13
计算单元阵列描述数组如下表10:
表10
指令描述数组如表11所示:
表11
idx | instruction | cycle | h | fathers | nexts | position | StartTime |
0 | a | 2 | 1 | start | c | (0,0) | 0 |
1 | b | 2 | 1 | start | d | (0,1) | 0 |
2 | c | 2 | 2 | a | e | (1,0) | 3 |
3 | d | 2 | 2 | b | e | 0 | |
4 | e | 2 | 3 | c,d | f,g | 0 | |
5 | f | 2 | 4 | e | i | 0 | |
6 | g | 2 | 4 | e | h | 0 | |
7 | h | 2 | 5 | g | i | 0 | |
8 | i | 2 | 6 | f,h | end | 0 | |
9 | end | 2 | 7 | i | 0 |
步骤9:待所有指令映射完成后,遍历指令数组Instructions,输出指令。
所有指令映射完成后,指令描述数组如下表12所示:
表12
宏指令描述数组如下表13所示:
表13
idx | instruction | cycle | h | fathers | nexts | position | StartTime |
0 | a | 2 | 1 | start | c | (0,0) | 0 |
1 | b | 2 | 1 | start | d | (0,1) | 0 |
2 | c | 2 | 2 | a | e | (1,0) | 3 |
3 | d | 2 | 2 | b | e | (1,2) | 3 |
4 | e | 2 | 3 | c,d | f,g | (2,0) | 7 |
5 | f | 2 | 4 | e | i | (2,1) | 10 |
6 | g | 2 | 4 | e | h | (2,2) | 11 |
7 | h | 2 | 5 | g | i | (1,2) | 14 |
8 | i | 2 | 6 | f,h | end | (1,3) | 17 |
9 | end | 2 | 7 | i | (2,3) | 20 |
实施例2:
在另一个具体的实施例中,本发明还提供了一种执行指令选择的装置,如图7所示,该装置由四个指令控制缓存部件和若干个四选一选择器,若干判断部件组成。每个指令缓存(即指令控制缓存部件)存储若干条指令的可执行状态。四个指令缓存的相同指令的可执行信息连接到相同的4选1选择器上,4选1选择器从中选择出可执行的一条指令。每四个4选1选择器按照指令排序依次与与一个判断部件的四个端口相连,判断部件判断从当前接入的4个4选1逻辑中选择一条靠前端口且可执行的指令并将其送入输出部件,并且输出信号终止后续部件运行,如果当前四个输入端口的指令都不可执行,则输出信号启动下一级部件进行判断。通过判断部件级联的形式,能够迅速且高效的选择出深度最浅的可执行指令。在一个优选的实施方式中,该判断部件内部可采用移位器加二选一逻辑来实现。
在一个具体的实施方式中,执行指令选择装置的部署可以采用如下方式:
执行指令选择装置部署在每个计算单元上,其部署位置如图10所示。在该实例中,其中每个计算单元上128条指令,所以每个执行指令选择装置需要128个4选1选择器和32个判断部件。判断部件由一个移位器和一个选择器电路组成,其示意图如图11。移位器共有五个输入端口,一个反馈输入端口,一个输出端口。移位器接到启动信号后将指令输入端口输入的指令状态码左移一位并输出,接到反馈输入信号后,再将指令状态码左移。选择电路判断移位器的输出,如果为1,则输出对应指令,如果移位器的四个输出均为0,则向下一个指令选择装置发送启动信号。判断部件间采用级联的方式。
实施例3:
在另一个实施例中,本发明还提供了一种基于最早可执行时间的指令映射方法,该方法的流程图如图12,其步骤如下:
(1)初始化所有计算单元的最后执行时间为0,初始化所有宏指令可执行时间为0;
(2)将所有指令按照深度排序,指令深度指的是当前指令到根节点(start节点)的最长路径长度;
(3)按照深度顺序,依次映射指令。对于每一条指令,遍历所有计算单元;
(4)对于每个计算单元,计算当前指令映射在该计算单元上的可执行时间。在一个具体的实施方式中,该计算方法为:求当前指令的所有前驱宏指令第一条指令的完成时间与该宏指令所在计算单元到当前计算单元的网络代价的和,取其中最大值作为当前指令的理论可执行时间。将理论可执行时间与当前计算单元的最后执行时间比较,取其中较大值作为当前指令的可执行时间;
(5)取可执行时间最早的计算单元映射当前指令;
(6)更新当前计算单元的最后执行时间为(5)中可执行时间加该指令执行所用时间与上下文个数的乘积;
(7)当所有指令映射完成后,退出。
在一个具体的实施方式中,网络代价的计算方法如下:对于两节点a、b,其网络代价如下:
netcost=abs(a.position.x-b.position.x)+abs(a.position.y-b.position.y)
其中,abs为取绝对值,(a.position.x,a.position.y)、(b.position.x,b.position.y)分别为点a、b的映射位置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (11)
1.一种执行指令选择的方法,其特征在于,所述方法包括以下步骤:
在一个计算单元上同时有多条可执行指令时:
S1、选择所述多条可执行指令中较早映射的指令执行;
S2、当所述多条可执行指令中,存在多条指令映射顺序相同时,随机选择映射顺序相同的多条指令中的一条执行;
所述S1还包括:当前的所述计算单元对其上的所有备选指令由浅到深进行选择,并选择其中深度最浅的可发射指令后,送入执行部件;
所述映射的方法为:
S101、初始化所述计算单元的最后执行时刻数组;
S102、初始化宏指令描述数组;
S103、将数据流指令读入到宏指令描述数组;
S104、计算所述S103中的宏指令描述数组所有节点的深度信息;
S105、将具有深度信息的所述宏指令描述数组按照深度信息进行排序;
S106、遍历所述S105中排序后的宏指令描述数组,对于每一条指令i,遍历所有计算单元,并计算指令在各计算单元上的可执行时间;
S107、取可执行时间最早的计算单元映射所述指令i。
2.根据权利要求1所述的方法,其特征在于,所述映射通过指令映射系统执行,所述指令映射系统部署于数据流编译器与指令分发器之间。
3.根据权利要求1所述的方法,其特征在于,所述S107之后,还包括:
S108、更新S107中的所述计算单元的最后执行时间;
S109、完成所有指令的映射后,遍历所述宏指令描述数组,输出指令。
4.根据权利要求1所述的方法,其特征在于,所属宏指令描述数组,其大小为指令数目,其中包括:各指令可执行时间、指令执行周期、指令深度、指令前驱节点、指令后继节点、映射位置。
5.根据权利要求1所述的方法,其特征在于,所述S102中还包括:初始化上下文个数。
6.根据权利要求1所述的方法,其特征在于,所述S106进一步包括:
S1061、求当前指令i的所有前驱宏指令中,所有宏指令的第一条指令的最后完成时间与该宏指令所在计算单元到当前计算单元的网络代价的和;
S1062、取所述网络代价的和中的最大值作为当前指令i在该计算单元上的理论可执行时间;
其中宏指令的第一条指令的最后完成时间为该宏指令的可执行时间与其执行周期的和;
S1063、将理论可执行时间与当前计算单元的最后执行时间比较,取其中较大值作为当前指令在当前计算单元的可执行时间。
7.根据权利要求6所述的方法,其特征在于,网络代价的计算方法如下:对于两节点a、b,其网络代价如下:
netcost=abs(a.position.x-b.position.x)+abs(a.position.y-b.position.y)
其中,abs为取绝对值,(a.position.x,a.position.y)、(b.position.x,b.position.y)分别为点a、b的映射位置。
8.一种执行指令选择的装置,其特征在于,所述装置包括指令控制缓存部件、选择器、判断部件,所述判断部件为多个时,则判断部件间采用级联方式;
所述指令控制缓存部件存储若干条指令的可执行状态,所述指令控制缓存部件存储的相同指令的可执行信息连接到相同的选择器上,选择器从中选择出可执行的一条指令;
所述选择器按照指令排序,依次与一个判断部件相连,所述判断部件从当前接入的选择器中选择一条靠前端口且可执行的指令,并将其送入输出部件;
所述装置部署在每个计算单元上;所述判断部件由一个移位器和一个选择器电路组成。
9.根据权利要求8所述的装置,其特征在于,所述判断部件从当前接入的选择器中选择一条靠前端口且可执行的指令,并将其送入输出部件,并产生一输出信号,所述输出信号终止后续部件运行;
如果所述判断部件接入的指令都不可执行,则输出信号启动下一级部件进行判断。
10.一种执行指令选择的指令映射方法,其特征在于,所述方法包括:
步骤1、初始化所有计算单元的最后执行时间;
步骤2、将所有指令按照深度排序,指令的深度指的是当前指令到根节点的最长路径长度;
步骤3、对于每一条指令,遍历所有计算单元;
步骤4、对于每个计算单元,计算当前指令映射在该计算单元上的可执行时间;
步骤5、取可执行时间最早的计算单元映射当前指令;
步骤6、更新当前计算单元的最后执行时间为步骤5中可执行时间加该指令执行所用时间与上下文个数的乘积;
其中,在一个所述计算单元上同时有多条可执行指令时:
S1、选择所述多条可执行指令中较早映射的指令执行;
S2、当所述多条可执行指令中,存在多条指令映射顺序相同时,随机选择映射顺序相同的多条指令中的一条执行。
11.根据权利要求10所述的方法,其特征在于,所述步骤4中,计算可执行时间具体为:
步骤41、求当前指令的所有前驱宏指令第一条指令的完成时间与该宏指令所在计算单元到当前计算单元的网络代价的和,取其中最大值作为当前指令的理论可执行时间;
步骤42、将理论可执行时间与当前计算单元的最后执行时间比较,取其中较大值作为当前指令的可执行时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711278806.7A CN108052347B (zh) | 2017-12-06 | 2017-12-06 | 一种执行指令选择的装置、方法及指令映射方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711278806.7A CN108052347B (zh) | 2017-12-06 | 2017-12-06 | 一种执行指令选择的装置、方法及指令映射方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108052347A CN108052347A (zh) | 2018-05-18 |
CN108052347B true CN108052347B (zh) | 2021-07-20 |
Family
ID=62122757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711278806.7A Active CN108052347B (zh) | 2017-12-06 | 2017-12-06 | 一种执行指令选择的装置、方法及指令映射方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108052347B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189477B (zh) * | 2018-06-27 | 2021-09-28 | 北京中科睿芯科技集团有限公司 | 一种面向多上下文粗粒度数据流结构的指令发射控制方法 |
CN111079924B (zh) * | 2018-10-19 | 2021-01-08 | 中科寒武纪科技股份有限公司 | 运算方法、系统及相关产品 |
CN111078285B (zh) * | 2018-10-19 | 2021-01-26 | 中科寒武纪科技股份有限公司 | 运算方法、系统及相关产品 |
CN111079925B (zh) * | 2018-10-19 | 2021-04-09 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111367526B (zh) * | 2019-05-13 | 2023-06-02 | 辽宁工程技术大学 | 一种基于深度图分割的并行自定义指令选择方法 |
CN112540796B (zh) * | 2019-09-23 | 2024-05-07 | 阿里巴巴集团控股有限公司 | 一种指令处理装置、处理器及其处理方法 |
CN110837650B (zh) * | 2019-10-25 | 2021-08-31 | 华中科技大学 | 一种不可信网络环境下的云存储oram访问系统和方法 |
CN113778528B (zh) * | 2021-09-13 | 2023-03-24 | 北京奕斯伟计算技术股份有限公司 | 指令发送方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1308274A (zh) * | 2000-02-08 | 2001-08-15 | 斯罗扬有限公司 | 在处理器中传送指令结果及处理器的编译方法 |
CN1729446A (zh) * | 2002-11-19 | 2006-02-01 | 模拟装置公司 | 流水线安排的处理器方法和电路 |
CN101297279A (zh) * | 2005-10-26 | 2008-10-29 | 阿纳洛格装置公司 | 改善的流水线数字信号处理器 |
CN102117197A (zh) * | 2011-03-04 | 2011-07-06 | 中国电子科技集团公司第三十八研究所 | 高性能通用信号处理器指令分配装置 |
CN104657210A (zh) * | 2013-11-25 | 2015-05-27 | 三星电子株式会社 | 针对具有多个功能单元的处理器调度循环的方法 |
CN105867994A (zh) * | 2016-04-20 | 2016-08-17 | 上海交通大学 | 一种用于粗粒度可重构架构编译器的指令调度优化方法 |
CN107402745A (zh) * | 2017-07-04 | 2017-11-28 | 清华大学 | 数据流图的映射方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7652922B2 (en) * | 2005-09-30 | 2010-01-26 | Mosaid Technologies Incorporated | Multiple independent serial link memory |
CN101727434B (zh) * | 2008-10-20 | 2012-06-13 | 北京大学深圳研究生院 | 一种特定应用算法专用集成电路结构 |
US9172923B1 (en) * | 2012-12-20 | 2015-10-27 | Elemental Technologies, Inc. | Sweep dependency based graphics processing unit block scheduling |
KR20140126190A (ko) * | 2013-04-22 | 2014-10-30 | 삼성전자주식회사 | 프로세서의 긴 라우팅 처리를 지원하는 메모리 장치, 그 메모리 장치를 이용한 스케줄링 장치 및 방법 |
CN105488285B (zh) * | 2015-12-04 | 2020-05-22 | 西安电子科技大学 | 一种高效fpga技术映射方法 |
-
2017
- 2017-12-06 CN CN201711278806.7A patent/CN108052347B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1308274A (zh) * | 2000-02-08 | 2001-08-15 | 斯罗扬有限公司 | 在处理器中传送指令结果及处理器的编译方法 |
CN1729446A (zh) * | 2002-11-19 | 2006-02-01 | 模拟装置公司 | 流水线安排的处理器方法和电路 |
CN101297279A (zh) * | 2005-10-26 | 2008-10-29 | 阿纳洛格装置公司 | 改善的流水线数字信号处理器 |
CN102117197A (zh) * | 2011-03-04 | 2011-07-06 | 中国电子科技集团公司第三十八研究所 | 高性能通用信号处理器指令分配装置 |
CN104657210A (zh) * | 2013-11-25 | 2015-05-27 | 三星电子株式会社 | 针对具有多个功能单元的处理器调度循环的方法 |
CN105867994A (zh) * | 2016-04-20 | 2016-08-17 | 上海交通大学 | 一种用于粗粒度可重构架构编译器的指令调度优化方法 |
CN107402745A (zh) * | 2017-07-04 | 2017-11-28 | 清华大学 | 数据流图的映射方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108052347A (zh) | 2018-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108052347B (zh) | 一种执行指令选择的装置、方法及指令映射方法 | |
Qin et al. | An improved iterated greedy algorithm for the energy-efficient blocking hybrid flow shop scheduling problem | |
Zhang et al. | BoostGCN: A framework for optimizing GCN inference on FPGA | |
US11436258B2 (en) | Prometheus: processing-in-memory heterogenous architecture design from a multi-layer network theoretic strategy | |
CN102855153B (zh) | 面向片式多核处理器的流编译优化方法 | |
Xiao et al. | Prometheus: Processing-in-memory heterogeneous architecture design from a multi-layer network theoretic strategy | |
CN102163141A (zh) | 实现数字信号处理器的寻址模块结构 | |
CN109739833A (zh) | 一种基于fpga的国产平台数据库加速系统及方法 | |
WO2022121518A1 (zh) | 一种分布式计算作业的参数配置优化方法及系统 | |
CN104317549A (zh) | 一种实现数据排序的级联结构电路和方法 | |
Chen et al. | Dygnn: Algorithm and architecture support of dynamic pruning for graph neural networks | |
CN110941451A (zh) | 一种数据流处理器指令映射方法及系统、装置 | |
CN101593132A (zh) | 基于线程构造模块的多核并行模拟退火方法 | |
Yin et al. | DFGNet: Mapping dataflow graph onto CGRA by a deep learning approach | |
Wang et al. | WooKong: A ubiquitous accelerator for recommendation algorithms with custom instruction sets on FPGA | |
Usui et al. | A cost-effective and scalable merge sorter tree on FPGAs | |
CN115860066A (zh) | 一种基于批处理的神经网络推理流水线复用的方法 | |
Gan et al. | Tianhegraph: Customizing graph search for graph500 on tianhe supercomputer | |
Kreutz et al. | Energy and latency evaluation of noc topologies | |
CN105653243B (zh) | 一种通用图形处理器多任务并发执行的任务派发方法 | |
Tan et al. | A pipelining loop optimization method for dataflow architecture | |
US11928468B2 (en) | Systems and methods for improved mapping of computational loops on reconfigurable architectures | |
Zhang et al. | Highly efficient breadth-first search on cpu-based single-node system | |
CN113127167B (zh) | 一种基于改进遗传算法的异构资源智能并行调度方法 | |
Cheng et al. | A low-cost and energy-efficient noc architecture for GPGPUs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230506 Address after: 200120 3rd floor, building 2, No.200, zhangheng Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai Patentee after: Shanghai Ruiwu Technology Co.,Ltd. Address before: 101300 room 232, building 5, 25 shuntongdao, Shunyi District, Beijing Patentee before: BEIJING ZHONGKE RUIXIN INTELLIGENT COMPUTER INDUSTRIAL RESEARCH INSTITUTE CO.,LTD. |