一种实现指令并行执行的优化方法和装置制造方法及图纸

技术编号:2914114 阅读:290 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种实现指令并行执行的优化方法和装置,包括:在二进制执行程序中插入前缀指令二进制码,标示其后一个或一个以上周期内指令的并行执行度,在执行所述优化后的二进制执行程序时,根据所述前缀指令的指示,在相应周期输出对应数量的指令并行执行。本发明专利技术还公开了一种实现指令并行执行的装置,包括优化单元和执行单元。本发明专利技术通过在原有指令集基础上增加一条前缀指令,标明其后若干条指令在后几个周期内的并行度,从而通过该前缀指令的具体编码指导本发明专利技术中装置进行后续指令的并行发射。该方法不需要改变编译器的原有结构就可实现指令并行执行。

【技术实现步骤摘要】

本专利技术涉及处理器的指令集体系结构,特别是一种利用前缀指令实现指令并行执行的优化方法和装置
技术介绍
传统的标量处理器每个时钟周期只能取出一条指令并进行发射。但是随着人们对系统性能要求的不断提高,需要处理器能够在一定的时间内执行更多的指令,仅仅依靠提高时钟频率和划分更多的流水线的方法已并不足够,因此必须想办法提高处理器并行执行指令的能力,使得处理器在一个时钟周期可以取出多条指令进行发射。一般来说,一个处理器内部包含有多个功能和运算单元,诸如算术逻辑单元(ALU),乘法单元(MUL),数据装载/存储单元(LOAD/STORE)等。在处理一条指令时往往只有一个功能单元在工作,其他功能单元处于空闲状态。因此,只要指令和指令之间不存在冲突,同时发射多条指令到各个功能单元中进行并行处理可以提高处理器的执行效率。超标量处理器和超长指令字(VLIW)处理器是目前常用的可以在一个周期内发射多条指令的处理器结构。它们两者的性能目标十分相似,都是期望能达到较高的发射并行度,所不同的是超标量处理器是通过硬件来决定哪几条指令将被并行发射,指令编码本身不包含显示并行度的信息,这也就意味着需要非常复杂的硬件设计以及很大的硬件开销来完成指令并行度的判决功能;而VLIW处理器的指令发射决策是在编译时由软件决定的,指令编码中本身就有体现并行度的比特位,因此指令分发的硬件可以设计的很简单。-->对于单指令发射的标量处理器系统,如果想把其改造成超标量结构处理器来提高其性能,虽然软件上和整个指令集的指令编码不需要做改动,但是在指令读取以后进行指令分发的时候却需要增加许多复杂的解码和判断逻辑来确定哪些指令可以并行执行,如果要达到比较好的性能,这一工作的复杂度是非常大的。而这些判断逻辑直接影响指令执行的并行度以及处理器的整个性能,因此往往需要花费设计人员大量的时间和精力。另一方面这样的判断逻辑是直接和指令的编码结构相关的,对于不同的指令系统,其解码和判断并行的逻辑都不相同,也就意味着对不同的指令系统都需要一次完全不同的设计。而对于VLIW结构的处理器,由于其指令编码本身就有体现并行度的比特位,因此如果想把单指令发射的标量处理器系统改造成VLIW处理器,则意味着从软件到硬件,从编译器到指令集编码以及硬件结构单元都需要重新设计,其工作量相当于设计一个新的处理器。
技术实现思路
有鉴于此,本专利技术的目的在于提供实现指令并行执行的方法,用于在不增加很大的硬件设计复杂度、不改变原有指令集编码结构、不需要改动已有的软件编译器的前提下,实现指令的并行执行。为实现上述目的,本专利技术提供了一种指令并行执行的优化方法,包括以下步骤:在二进制执行程序中插入前缀指令二进制码,标示其后一个或一个以上周期内指令的并行执行度,在执行所述优化后的二进制执行程序时,根据所述前缀指令的指示,在相应周期输出对应数量的指令并行执行。本专利技术还提供了一种实现指令并行执行的装置,包括:优化单元,用于在二进制执行程序中插入前缀指令二进制码,标示其后一个或一个以上周期内指令的并行执行度;执行单元,用于执行所述带有前缀指令的二进制执行程序,并在执行时-->根据所述前缀指令的指示,在相应周期输出对应数量的指令并行执行。本专利技术通过在原有指令集基础上增加一条前缀指令,该指令本身不进行任何操作,但可以标明其后若干条指令在后几个周期内的并行度,从而通过该前缀指令的具体编码指导硬件进行后续指令的并行发射。该方法不需要改变编译器的原有结构,其他的都可以通过一个第三方优化程序完成。另外,利用该方法也不需要增加太大的硬件复杂度,省去了超标量结构中复杂的并行度判决电路,而只需要一个指令并行度状态控制机加以控制即可附图说明图1为本专利技术的实施例中前缀指令paraLink的指令编码结构图;图2为本专利技术的实施例中实现指令并行执行的方法流程图;图3为本专利技术的实施例中通过paraLink指令实现指令并行执行的一个装置结构图;图4为本专利技术的实施例中指令并行度控制状态机的实现原理示意图。具体实施方式本专利技术实施例在原有指令集基础上增加一条前缀指令(本专利技术实施例将其命名为paraLink),该指令本身不进行任何操作,但可以标明其后若干条指令在后几个周期内的并行度,从而通过该前缀指令的具体编码指导硬件进行后续指令的并行发射。为使本专利技术的目的、技术方案和优点更加清楚,下面结合附图对本专利技术作进一步的详细描述。图1是前缀指令paraLink的指令编码结构图。整个指令的长度根据具体应用的指令集不同可以进行修改。指令的前一部分若干比特为操作码,用来标识指令的类型,在硬件进行解码过程中通过这几位操作码就可以识别出该指令为paraLink指令。其后的剩余比特被分成n个结构相同的部分,分别表示该前缀指令之后n个周期中每个周期的精确的指令并行度,n的大小由指-->令长度、操作码占用的比特数和每个部分编码占用的比特数共同决定。每个部分的编码原理相同,其所需要占用的比特位数跟处理器所能支持的最大指令并行度m有关。如果支持的最大指令并行度为2的幂次方,那么每个部分的需要的比特位数是log2m。如果支持的最大指令并行度不是2的幂次方,那么每个部分的需要的比特位数是int(log2m)+1,即log2m取整后加1。从最靠近paraLink的操作码部分开始到指令最后,每一部分表示从paraLink指令后第1个周期到第n个周期每个周期内可以并行执行的指令的数目。为了使前缀指令的编码结构和原理更易懂,以32bit编码为例进行介绍,但本专利技术思想并不仅限于32bit的编码。设处理器的最大并行度为4,那么每个指令并行度部分需要2bit来做标识。32bit编码中前8位用来做操作码,那么剩余的24bit可以分成12个2bit的模块。2bit编码01,10,11和00分别表示可以并行执行的指令数为1个,2个,3个和4个。这样通过这24bit的编码就知道了从paraLink指令之后的第1个到第12个周期中每个周期的指令并行度。12个周期后指令并行度默认为1,也就是一个时钟完成1条指令,直到下一个paraLink指令发生。基于以上前缀指令,则本专利技术实施例提供的实现指令并行执行的方法如图2所示,具体流程包括:步骤201、使用已有程序软件生成程序二进制可执行代码。步骤202、对所述二进制可执行代码进行并行度分析,得出指令可并行执行度。该步骤对已有二进制代码做并行度分析,在一定程序长度范围内判断前后指令之间是否存在诸如寄存器相关,数据相关等各种关联,从而决定可以并行执行的程序。同时对跳转类指令的目标地址进行标注便于后续步骤进行步骤203、根据指令可并行执行度形成指令并行执行块,在其头部加上paraLink指令的二进制码。步骤204、根据步骤202所做的标注,重新进行跳转和目标地址更新并-->链接生成优化后的执行代码。步骤205、将更新后带有paraLink指令的二进制代码送由本专利技术硬件装置执行。现有的软件编译汇编流程是编译器先把高级程序编译成适合处理器的汇编程序,然后再通过汇编和链接工具把指令编成二进制代码(同步骤201)。本专利技术实施例对其进行了改进优化,在执行过程中间加入了步骤202~步骤205,实现了基于前缀指令的指令并行执行。该方法不需要改变步骤201所述编译器的原有结构,本文档来自技高网
...

【技术保护点】
一种实现指令并行执行的优化方法,其特征在于,包括以下步骤: 在二进制执行程序中插入前缀指令二进制码,标示其后一个或一个以上周期内指令的并行执行度,在执行所述优化后的二进制执行程序时,根据所述前缀指令的指示,在相应周期输出对应数量的指令 并行执行。

【技术特征摘要】
1、一种实现指令并行执行的优化方法,其特征在于,包括以下步骤:在二进制执行程序中插入前缀指令二进制码,标示其后一个或一个以上周期内指令的并行执行度,在执行所述优化后的二进制执行程序时,根据所述前缀指令的指示,在相应周期输出对应数量的指令并行执行。2、根据权利要求1所述的方法,其特征在于,所述插入前缀指令的方法具体包括:对所述二进制执行程序的并行度进行分析得出并行度,生成程序并行执行块并在执行块前插入前缀指令;将插入前缀指令后的程序进行重新链接,更新调用和跳转指令的目标地址;形成优化后的带前缀指令的二进制执行程序。3、根据权利要求1或2所述的方法,其特征在于,所述插入前缀指令具体包括:设置操作码部分,来标识该指令的类型为前缀指令;将所述前缀指令的剩余部分分成一个或一个以上结构相同的段,各段分别表示该前缀指令之后一个或一个以上周期中每个周期的指令并行度。4、根据权利要求3所述的方法,其特征在于,每个所述段占用的比特位为:设支持的最大指令并行度为m,如果m为2的幂次方...

【专利技术属性】
技术研发人员:王志君梁利平
申请(专利权)人:中国科学院微电子研究所
类型:发明
国别省市:11[中国|北京]

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

1