CN101436122A - 一种实现指令并行执行的优化方法和装置 - Google Patents
一种实现指令并行执行的优化方法和装置 Download PDFInfo
- Publication number
- CN101436122A CN101436122A CNA2008102274602A CN200810227460A CN101436122A CN 101436122 A CN101436122 A CN 101436122A CN A2008102274602 A CNA2008102274602 A CN A2008102274602A CN 200810227460 A CN200810227460 A CN 200810227460A CN 101436122 A CN101436122 A CN 101436122A
- Authority
- CN
- China
- Prior art keywords
- instruction
- prefix
- degree
- parallelism
- instructions
- 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.)
- Pending
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种实现指令并行执行的优化方法和装置,包括:在二进制执行程序中插入前缀指令二进制码,标示其后一个或一个以上周期内指令的并行执行度,在执行所述优化后的二进制执行程序时,根据所述前缀指令的指示,在相应周期输出对应数量的指令并行执行。本发明还公开了一种实现指令并行执行的装置,包括优化单元和执行单元。本发明通过在原有指令集基础上增加一条前缀指令,标明其后若干条指令在后几个周期内的并行度,从而通过该前缀指令的具体编码指导本发明中装置进行后续指令的并行发射。该方法不需要改变编译器的原有结构就可实现指令并行执行。
Description
技术领域
本发明涉及处理器的指令集体系结构,特别是一种利用前缀指令实现指令并行执行的优化方法和装置。
背景技术
传统的标量处理器每个时钟周期只能取出一条指令并进行发射。但是随着人们对系统性能要求的不断提高,需要处理器能够在一定的时间内执行更多的指令,仅仅依靠提高时钟频率和划分更多的流水线的方法已并不足够,因此必须想办法提高处理器并行执行指令的能力,使得处理器在一个时钟周期可以取出多条指令进行发射。
一般来说,一个处理器内部包含有多个功能和运算单元,诸如算术逻辑单元(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所述编译器的原有结构,其他的步骤202~步骤205都可以通过本方法优化完成。并行执行块的大小主要由处理器一个周期可以提供的最大并行度m和paraLink指令可以指示的周期范围n决定,因此并行执行块的最大长度为n×m。
图3是通过paraLink指令实现指令并行执行的一个硬件实施例框图。图中各个部件的主要模块功能如下:
取指令模块用来从指令存储器中取出指令,将指令放入指令槽。
指令预解码模块用来解码指令的前面操作码部分,识别paraLink指令。
指令并行度控制状态机根据paraLink码的内容进行相应跳转,输出相应时刻的指令并行度。当指令不在paraLink指示范围内的时候,状态机的并行度状态为1,也就是说一个时钟只发射1条指令,相当于串行执行。
指令解码和分发模块根据指令并行度状态机的状态和指令类型发射相应并行度的指令到各个执行单元。
图中的各个执行单元中可以包含不同的功能单元,也可以是包含完全相同的功能单元构成同构的多数据通道,这主要由原始的处理器结构决定。
整个图3所示的硬件结构的执行过程如下:从指令存储器中一次读出m条指令放入指令槽,m等于处理器可以支持的最大并行度,指令槽的大小为2m。指令预解码器对指令槽中的前m条指令的操作码部分进行解码,判断有没有paraLink指令,如果没有paraLink指令,则并行状态机处于并行度为1状态,指令被1条1条分发,进入执行单元执行。如果预解码过程中发现了一个paraLink指令,其之前的指令分发完以后控制状态机被激活,随后状态机根据paraLink的编码进行跳转,告诉指令分发单元该时钟周期需要发射几条指令,指令解码和分发模块随后完成解码,并且并行发射出相应的指令到各个执行单元完成并行执行。
对于2m宽的指令槽,一旦前一个m宽的指令被分发完以后,指令槽后m个指令前移,同时取指操作有效,从程序存储器中再取出m个新指令放到指令槽的后m个空间。
图4为指令并行度控制状态机的实现原理。其状态主要有m个,分别对应m个并行度,控制状态机跳转的主要依靠一个计数器和paraLink的编码,由于paraLink指令所能覆盖的指示并行度的时钟周期数是有限的,因此根据计数器的值可以知道目前处于paraLink指令之后的第几个时钟周期,从而可以到paraLink编码的相应位置取出并行度输出给指令解码和分发模块。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (6)
1、一种实现指令并行执行的优化方法,其特征在于,包括以下步骤:
在二进制执行程序中插入前缀指令二进制码,标示其后一个或一个以上周期内指令的并行执行度,在执行所述优化后的二进制执行程序时,根据所述前缀指令的指示,在相应周期输出对应数量的指令并行执行。
2、根据权利要求1所述的方法,其特征在于,所述插入前缀指令的方法具体包括:
对所述二进制执行程序的并行度进行分析得出并行度,生成程序并行执行块并在执行块前插入前缀指令;
将插入前缀指令后的程序进行重新链接,更新调用和跳转指令的目标地址;
形成优化后的带前缀指令的二进制执行程序。
3、根据权利要求1或2所述的方法,其特征在于,所述插入前缀指令具体包括:
设置操作码部分,来标识该指令的类型为前缀指令;
将所述前缀指令的剩余部分分成一个或一个以上结构相同的段,各段分别表示该前缀指令之后一个或一个以上周期中每个周期的指令并行度。
4、根据权利要求3所述的方法,其特征在于,每个所述段占用的比特位为:
设支持的最大指令并行度为m,如果m为2的幂次方,则每个段占用的比特位数是log2m;否则,每个段占用的比特位数是int(log2m)+1。
5、一种实现指令并行执行的装置,其特征在于,包括:
优化单元,用于在二进制执行程序中插入前缀指令二进制码,标示其后一个或一个以上周期内指令的并行执行度;
执行单元,用于执行所述带有前缀指令的二进制执行程序,并在执行时根据所述前缀指令的指示,在相应周期输出对应数量的指令并行执行。
6、根据权利要求5所述的装置,其特征在于,所述执行单元具体包括:
取指令模块,用于从指令存储器中取出指令,并放入指令槽;
指令槽,用来保存取指模块取出的指令;
指令预解码模块,用于解码指令的操作码部分,并识别指令中的前缀指令;
指令并行度控制状态机,用于根据所述前缀指令的内容在相应周期输出该周期对应的指令并行度;当指令不在所述前缀指令的指示范围内时,所述指令并行度状态机在相应周期输出的指令并行度为1;
指令解码和分发模块,用于对指令解码,并根据指令并行度状态机输出的内容和指令类型发射相应并行度的指令到各个执行单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008102274602A CN101436122A (zh) | 2008-11-25 | 2008-11-25 | 一种实现指令并行执行的优化方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008102274602A CN101436122A (zh) | 2008-11-25 | 2008-11-25 | 一种实现指令并行执行的优化方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101436122A true CN101436122A (zh) | 2009-05-20 |
Family
ID=40710571
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008102274602A Pending CN101436122A (zh) | 2008-11-25 | 2008-11-25 | 一种实现指令并行执行的优化方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101436122A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183429A (zh) * | 2014-05-27 | 2015-12-23 | 想象技术有限公司 | 解码被一个或多个其它指令修改的指令 |
CN105335129A (zh) * | 2014-06-23 | 2016-02-17 | 联想(北京)有限公司 | 信息处理方法及电子设备 |
CN105634509A (zh) * | 2015-12-29 | 2016-06-01 | 中国科学院微电子研究所 | 一种维特比译码方法及装置 |
CN107748674A (zh) * | 2017-09-07 | 2018-03-02 | 中国科学院微电子研究所 | 面向比特粒度的信息处理系统 |
-
2008
- 2008-11-25 CN CNA2008102274602A patent/CN101436122A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105183429A (zh) * | 2014-05-27 | 2015-12-23 | 想象技术有限公司 | 解码被一个或多个其它指令修改的指令 |
CN105183429B (zh) * | 2014-05-27 | 2019-06-11 | 美普思技术有限责任公司 | 解码被一个或多个其它指令修改的指令 |
CN105335129A (zh) * | 2014-06-23 | 2016-02-17 | 联想(北京)有限公司 | 信息处理方法及电子设备 |
CN105335129B (zh) * | 2014-06-23 | 2019-03-29 | 联想(北京)有限公司 | 信息处理方法及电子设备 |
CN105634509A (zh) * | 2015-12-29 | 2016-06-01 | 中国科学院微电子研究所 | 一种维特比译码方法及装置 |
CN107748674A (zh) * | 2017-09-07 | 2018-03-02 | 中国科学院微电子研究所 | 面向比特粒度的信息处理系统 |
CN107748674B (zh) * | 2017-09-07 | 2021-08-31 | 中国科学院微电子研究所 | 面向比特粒度的信息处理系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7386844B2 (en) | Compiler apparatus and method of optimizing a source program by reducing a hamming distance between two instructions | |
KR100464406B1 (ko) | 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법 | |
US6948158B2 (en) | Retargetable compiling system and method | |
KR102311619B1 (ko) | 파이프라인 제어 신호들을 발생시키도록 프로세서를 인에이블링하기 위한 방법 및 장치 | |
JP4283131B2 (ja) | プロセッサ及びコンパイル方法 | |
US7082602B2 (en) | Function unit based finite state automata data structure, transitions and methods for making the same | |
EP2680132A2 (en) | Staged loop instructions | |
CN101438235B (zh) | 将硬件结束循环信息编码到指令上 | |
US7574583B2 (en) | Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor | |
CN101436122A (zh) | 一种实现指令并行执行的优化方法和装置 | |
JPH10105402A (ja) | パイプライン方式のプロセッサ | |
WO2007027025A1 (en) | Computer having dynamically-changeable instruction set in real time | |
US6115807A (en) | Static instruction decoder utilizing a circular queue to decode instructions and select instructions to be issued | |
CN100583042C (zh) | 针对程序中循环的编译方法和编译设备 | |
US8479179B2 (en) | Compiling method, compiling apparatus and computer system for a loop in a program | |
Křoustek et al. | Exploitation of scattered context grammars to model VLIW instruction constraints | |
CN111930426A (zh) | 一种可重构计算的双模指令集架构及其应用方法 | |
Finlayson et al. | Improving processor efficiency by statically pipelining instructions | |
CN109918339B (zh) | 一种针对粗粒度可重构结构的基于相似性的指令压缩方法 | |
JP4721975B2 (ja) | コンパイラ装置およびコンパイル方法 | |
CN1365047A (zh) | 在一个超长指令字中执行的子流水线和流水线 | |
Singh et al. | Design of reactive PIC microcontroller | |
US20060015704A1 (en) | Operation apparatus and instruction code executing method | |
Davis et al. | Scheduling instruction effects for a statically pipelined processor | |
Bureš | Optimalizace ASM kódu pro DLX procesor pomocí LLVM systému |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20090520 |