一种实现指令并行执行的优化方法和装置的制作方法

文档序号:6471261阅读:209来源:国知局
专利名称:一种实现指令并行执行的优化方法和装置的制作方法
技术领域
本发明涉及处理器的指令集体系结构,特别是一种利用前缀指令实现指 令并行执行的优化方法和装置。
背景技术
传统的标量处理器每个时钟周期只能取出一条指令并进行发射。但是随 着人们对系统性能要求的不断提高,需要处理器能够在一定的时间内执行更 多的指令,仅仅依靠提高时钟频率和划分更多的流水线的方法已并不足够, 因此必须想办法提高处理器并行执行指令的能力,使得处理器在一个时钟周 期可以取出多条指令进行发射。
一般来说, 一个处理器内部包含有多个功能和运算单元,诸如算术逻辑
单元(ALU),乘法单元(MUL),数据装载/存储单元(LOAD/STORE) 等。在处理一条指令时往往只有一个功能单元在工作,其他功能单元处于空 闲状态。因此,只要指令和指令之间不存在冲突,同时发射多条指令到各个 功能单元中进行并行处理可以提高处理器的执行效率。
超标量处理器和超长指令字(VLIW)处理器是目前常用的可以在一个 周期内发射多条指令的处理器结构。它们两者的性能目标十分相似,都是期 望能达到较高的发射并行度,所不同的是超标量处理器是通过硬件来决定哪 几条指令将被并行发射,指令编码本身不包含显示并行度的信息,这也就意 味着需要非常复杂的硬件设计以及很大的硬件开销来完成指令并行度的判 决功能;而VLIW处理器的指令发射决策是在编译时由软件决定的,指令编 码中本身就有体现并行度的比特位,因此指令分发的硬件可以设计的很简单。对于单指令发射的标量处理器系统,如果想把其改造成超标量结构处理
器来提高其性能,虽然软件上和整个指令集的指令编码不需要做改动,但是 在指令读取以后进行指令分发的时候却需要增加许多复杂的解码和判断逻
辑来确定哪些指令可以并行执行,如果要达到比较好的性能,这一工作的复 杂度是非常大的。而这些判断逻辑直接影响指令执行的并行度以及处理器的 整个性能,因此往往需要花费设计人员大量的时间和精力。另一方面这样的 判断逻辑是直接和指令的编码结构相关的,对于不同的指令系统,其解码和 判断并行的逻辑都不相同,也就意味着对不同的指令系统都需要一次完全不 同的设计。
而对于VLIW结构的处理器,由于其指令编码本身就有体现并行度的比 特位,因此如果想把单指令发射的标量处理器系统改造成VLIW处理器,则 意味着从软件到硬件,从编译器到指令集编码以及硬件结构单元都需要重新 设计,其工作量相当于设计一个新的处理器。

发明内容
有鉴于此,本发明的目的在于提供实现指令并行执行的方法,用于在不 增加很大的硬件设计复杂度、不改变原有指令集编码结构、不需要改动已有 的软件编译器的前提下,实现指令的并行执行。
为实现上述目的,本发明提供了一种指令并行执行的优化方法,包括以 下步骤
在二进制执行程序中插入前缀指令二进制码,标示其后一个或一个以上 周期内指令的并行执行度,在执行所述优化后的二进制执行程序时,根据所 述前缀指令的指示,在相应周期输出对应数量的指令并行执行。
本发明还提供了一种实现指令并行执行的装置,包括
优化单元,用于在二进制执行程序中插入前缀指令二进制码,标示其后 一个或一个以上周期内指令的并行执行度;
执行单元,用于执行所述带有前缀指令的二进制执行程序,并在执行时根据所述前缀指令的指示,在相应周期输出对应数量的指令并行执行。
本发明通过在原有指令集基础上增加一条前缀指令,该指令本身不进行 任何操作,但可以标明其后若干条指令在后几个周期内的并行度,从而通过 该前缀指令的具体编码指导硬件进行后续指令的并行发射。该方法不需要改 变编译器的原有结构,其他的都可以通过一个第三方优化程序完成。另外, 利用该方法也不需要增加太大的硬件复杂度,省去了超标量结构中复杂的并 行度判决电路,而只需要 一 个指令并行度状态控制机加以控制即可


图1为本发明的实施例中前缀指令pamLink的指令编码结构图; 图2为本发明的实施例中实现指令并行执行的方法流程图; 图3为本发明的实施例中通过paraLink指令实现指令并行执行的 一个装 置结构图4为本发明的实施例中指令并行度控制状态机的实现原理示意图。
具体实施例方式
本发明实施例在原有指令集基础上增加一条前缀指令(本发明实施例将 其命名为paraLink ),该指令本身不进行任何操作,但可以标明其后若干条 指令在后几个周期内的并行度,从而通过该前缀指令的具体编码指导硬件进 行后续指令的并行发射。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明 作进一步的详细描述。
图1是前缀指令paraLink的指令编码结构图。整个指令的长度根据具体 应用的指令集不同可以进行修改。指令的前一部分若干比特为操作码,用来 标识指令的类型,在硬件进行解码过程中通过这几位操作码就可以识别出该 指令为paraLink指令。其后的剩余比特被分成n个结构相同的部分,分别表 示该前缀指令之后n个周期中每个周期的精确的指令并行度,n的大小由指令长度、操作码占用的比特数和每个部分编码占用的比特数共同决定。
每个部分的编码原理相同,其所需要占用的比特位数跟处理器所能支持
的最大指令并行度m有关。如果支持的最大指令并行度为2的幂次方,那 么每个部分的需要的比特位数是1og2m。如果支持的最大指令并行度不是2 的幂次方,那么每个部分的需要的比特位数是111《1(^2111)+1,即log2m取整 后加1。
从最靠近paraLink的操作码部分开始到指令最后,每一部分表示从 paraLink指令后第1个周期到第n个周期每个周期内可以并行执行的指令的 数目。为了使前缀指令的编码结构和原理更易懂,以32bit编码为例进行介 绍,但本发明思想并不仅限于32bit的编码。
设处理器的最大并行度为4,那么每个指令并行度部分需要2bit来做标 识。32bit编码中前8位用来做操作码,那么剩余的24bit可以分成12个2bit 的模块。2bit编码01, 10, 11和OO分别表示可以并行执行的指令数为l个, 2个,3个和4个。这样通过这24bit的编码就知道了从paraLink指令之后 的第l个到第12个周期中每个周期的指令并行度。12个周期后指令并行度 默认为1,也就是一个时钟完成1条指令,直到下一个paraLink指令发生。
基于以上前缀指令,则本发明实施例提供的实现指令并行执行的方法如
图2所示,具体流程包括
步骤201、使用已有程序软件生成程序二进制可执行代码。
步骤202、对所述二进制可执行代码进行并行度分析,得出指令可并行
执行度。该步骤对已有二进制代码做并行度分析,在一定程序长度范围内判
断前后指令之间是否存在诸如寄存器相关,数据相关等各种关联,从而决定
可以并行执行的程序。同时对跳转类指令的目标地址进行标注便于后续步骤
进行
步骤203、根据指令可并行执行度形成指令并行执行块,在其头部加上 paraLink指令的二进制码。
步骤204、根据步骤202所做的标注,重新进行跳转和目标地址更新并链接生成优化后的执行代码。
步骤205、将更新后带有paraLink指令的二进制代码送由本发明硬件装
置执行。
现有的软件编译汇编流程是编译器先把高级程序编译成适合处理器的 汇编程序,然后再通过汇编和链接工具把指令编成二进制代码(同步骤201 )。 本发明实施例对其进行了改进优化,在执行过程中间加入了步骤202 ~步骤 205,实现了基于前缀指令的指令并行执行。该方法不需要改变步骤201所 述编译器的原有结构,其他的步骤202 ~步骤205都可以通过本方法优化完 成。并行执行块的大小主要由处理器一个周期可以提供的最大并行度m和 paraLink指令可以指示的周期范围n决定,因此并行执行块的最大长度为n x m。
图3是通过paraLink指令实现指令并行执行的一个硬件实施例框图。图
中各个部件的主要模块功能如下
取指令模块用来从指令存储器中取出指令,将指令放入指令槽。 指令预解码模块用来解码指令的前面操作码部分,识别paraLink指令。 指令并行度控制状态机根据paraLink码的内容进行相应跳转,输出相应
时刻的指令并行度。当指令不在paraLink指示范围内的时候,状态机的并行
度状态为1,也就是说一个时钟只发射l条指令,相当于串行执行。
指令解码和分发模块根据指令并行度状态机的状态和指令类型发射相
应并行度的指令到各个执行单元。
图中的各个执行单元中可以包含不同的功能单元,也可以是包含完全相 同的功能单元构成同构的多数据通道,这主要由原始的处理器结构决定。
整个图3所示的硬件结构的执行过程如下从指令存储器中一次读出m 条指令放入指令槽,m等于处理器可以支持的最大并行度,指令槽的大小为 2m。指令预解码器对指令槽中的前m条指令的操作码部分进行解码,判断 有没有pamLink指令,如果没有paraLink指令,则并行状态机处于并行度 为l状态,指令被l条l条分发,进入执行单元执行。如果预解码过程中发现了一个paraLink指令,其之前的指令分发完以后控制状态机被激活,随后 状态机根据paraLink的编码进行跳转,告诉指令分发单元该时钟周期需要发 射几条指令,指令解码和分发模块随后完成解码,并且并行发射出相应的指 令到各个执行单元完成并行执行。
对于2m宽的指令槽, 一旦前一个m宽的指令被分发完以后,指令槽后 m个指令前移,同时取指操作有效,从程序存储器中再取出m个新指令放 到指令槽的后m个空间。
图4为指令并行度控制状态机的实现原理。其状态主要有m个,分别 对应m个并行度,控制状态机跳转的主要依靠一个计数器和paraLink的编 码,由于paraLink指令所能覆盖的指示并行度的时钟周期数是有限的,因此 根据计数器的值可以知道目前处于paraLink指令之后的第几个时钟周期,从 而可以到paraLink编码的相应位置取出并行度输出给指令解码和分发模块。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的 保护范围。
权利要求
1、一种实现指令并行执行的优化方法,其特征在于,包括以下步骤在二进制执行程序中插入前缀指令二进制码,标示其后一个或一个以上周期内指令的并行执行度,在执行所述优化后的二进制执行程序时,根据所述前缀指令的指示,在相应周期输出对应数量的指令并行执行。
2、 根据权利要求1所述的方法,其特征在于,所述插入前缀指令的方 法具体包括对所述二进制执行程序的并行度进行分析得出并行度,生成程序并行执 行块并在执行块前插入前缀指令;将插入前缀指令后的程序进行重新链接,更新调用和跳转指令的目标地址;形成优化后的带前缀指令的二进制执行程序。
3、 根据权利要求1或2所述的方法,其特征在于,所述插入前缀指令 具体包括设置操作码部分,来标识该指令的类型为前缀指令; 将所述前缀指令的剩余部分分成一个或一个以上结构相同的段,各段分 别表示该前缀指令之后一个或一个以上周期中每个周期的指令并行度。
4、 根据权利要求3所述的方法,其特征在于,每个所述段占用的比特 位为设支持的最大指令并行度为m,如果m为2的幂次方,则每个段占用 的比特位数是1og2m;否则,每个段占用的比特位数是int(log2m) + 1 。
5、 一种实现指令并行执行的装置,其特征在于,包括优化单元,用于在二进制执行程序中插入前缀指令二进制码,标示其后 一个或一个以上周期内指令的并行执行度;执行单元,用于执行所述带有前缀指令的二进制执行程序,并在执行时 根据所述前缀指令的指示,在相应周期输出对应数量的指令并行执行。
6、根据权利要求5所述的装置,其特征在于,所述执行单元具体包括 取指令模块,用于从指令存储器中取出指令,并放入指令槽; 指令槽,用来保存取指模块取出的指令;指令预解码模块,用于解码指令的操作码部分,并识别指令中的前缀指令;指令并行度控制状态机,用于根据所述前缀指令的内容在相应周期输出 该周期对应的指令并行度;当指令不在所述前缀指令的指示范围内时,所述 指令并行度状态机在相应周期输出的指令并行度为l;指令解码和分发模块,用于对指令解码,并根据指令并行度状态机输出 的内容和指令类型发射相应并行度的指令到各个执行单元。
全文摘要
本发明公开了一种实现指令并行执行的优化方法和装置,包括在二进制执行程序中插入前缀指令二进制码,标示其后一个或一个以上周期内指令的并行执行度,在执行所述优化后的二进制执行程序时,根据所述前缀指令的指示,在相应周期输出对应数量的指令并行执行。本发明还公开了一种实现指令并行执行的装置,包括优化单元和执行单元。本发明通过在原有指令集基础上增加一条前缀指令,标明其后若干条指令在后几个周期内的并行度,从而通过该前缀指令的具体编码指导本发明中装置进行后续指令的并行发射。该方法不需要改变编译器的原有结构就可实现指令并行执行。
文档编号G06F9/38GK101436122SQ200810227460
公开日2009年5月20日 申请日期2008年11月25日 优先权日2008年11月25日
发明者梁利平, 王志君 申请人:中国科学院微电子研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1