CN105354117A - 超标量处理器中指令相关性检测的方法 - Google Patents
超标量处理器中指令相关性检测的方法 Download PDFInfo
- Publication number
- CN105354117A CN105354117A CN201510702707.1A CN201510702707A CN105354117A CN 105354117 A CN105354117 A CN 105354117A CN 201510702707 A CN201510702707 A CN 201510702707A CN 105354117 A CN105354117 A CN 105354117A
- Authority
- CN
- China
- Prior art keywords
- instruction
- locking
- bag
- mark
- cycle
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
- G06F11/2236—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
Abstract
超标量处理器中指令相关性检测的方法,通过设定一组锁定标识,指令解码后,将其源操作数与目的操作数分别与对应的锁定标识相比较,来判断指令的相关性与并行性;锁定标识根据每个周期指令的解码信息进行更新,每个周期更新一次;锁定标识与处理器内的通用寄存器组一一对应,每个通用寄存器都有一个对应的锁定标识;本发明不仅适用于检测同一周期内多条指令能否同时发射,也适用于检测不同流水级的各组指令之间的相关性;为实现指令的动态调度提供了基础的保证,而且该方法的实现并不会涉及很复杂的电路设计,能够很大程度上减小硬件开销。
Description
技术领域
本发明属于处理器架构设计技术领域,具体涉及超标量处理器中指令相关性检测的方法。
背景技术
在超标量处理器中,指令往往是多发射的,同一周期内最多能够发射的指令条数取决于发射槽的宽度。超标量处理器为了实现指令级并行,使用动态调度的方法。在指令的顺序执行过程中,除了发射槽的宽度之外,指令之间存在的数据相关成为了制约最大限度的指令级并行的重要因素。检测同一周期内的指令之间是否存在数据相关是实现指令动态调度的关键。在超标量处理器的体系结构设计中多采用流水线技术,实现指令级的并行后,检测相邻流水级的各组指令之间是否存在数据相关也是确保程序能够正确执行,动态调度指令的关键。
传统的检测方法使用的是寄存器依赖表,该表存储了每一条正在执行的指令的目的寄存器信息。在经过解码后,每条指令在进入下一个流水级的同时,其目的寄存器信息写入寄存器依赖表,以供判定后续指令发射的可行性。指令解码后,其源寄存器、目的寄存器必须与寄存器依赖表中的表项进行冲突检测作为该指令是否可分发的条件。这种检测方法确实可行,但是硬件开销的成本比较大,如果操作数较多时,会很大程度增加模块的面积,带来功耗的问题,相关逻辑会占用很大的资源。
发明内容
为了克服上述现有技术的缺点,本发明的目的在于提供一种硬件开销小的超标量处理器中指令相关性检测的方法,该方法不仅适用于检测同一周期内多条指令能否同时发射,也适用于检测不同流水级的各组指令之间的相关性;为实现指令的动态调度提供了基础的保证,而且方法的实现并不会涉及很复杂的电路设计,能够很大程度上减小硬件开销。
为了实现上述目的,本发明采用的技术方案是:
一种超标量处理器中指令相关性检测的方法,设定一组锁定标识,指令解码后,其源操作数与目的操作数分别与对应的锁定标识相比较,用来判断指令的相关性与并行性。锁定标识根据每个周期指令的解码信息进行更新,每个周期更新一次。锁定标识与处理器内的通用寄存器组一一对应,每个通用寄存器都有一个对应的锁定标识。锁定标识的内容是指令执行周期数减1。
超标量处理器中检测指令并行性的方法,包括如下步骤:
步骤1,获取指令包,指令包中指令的条数与发射槽的数目相等,指令包根据每个周期发射的指令条数进行相应的更新;
步骤2,将指令包中的指令分别进行解码,解码后的信息包括源寄存器编号,目的寄存器编号以及指令执行占用的周期数;
步骤3,将指令包中的第一条指令的源操作数和目的操作数分别与对应的锁定标识进行匹配;如果该条指令用到的源操作数或者目的操作数被锁定,则该指令包的所有指令均延迟一个周期发射,与下一周期更新后的锁定标识重新进行匹配;否则,第一条指令可以在这个周期发射,同时将该指令的执行周期数传递给该指令目的寄存器对应的锁定标识,其余的锁定标识保持原来的值不变;这样第一条指令经过检测后,生成了一组新的锁定标识;
步骤4,将指令包中的下一条指令的源操作数和目的操作数分别与上一条指令判别后得到的锁定标识组中的锁定标识进行匹配;如果该条指令用到的源操作数或者目的操作数被锁定,则该指令及其后所有指令不能和它前面的指令一起发射,需要延后一个周期再做判断,该指令将会成为下一周期的指令包中的第一条指令,转步骤6;否则,这两条指令与之间不存在数据相关,与上一周期同时发射的指令也不存在数据相关,进行同时发射;将该指令的执行周期数传递给锁定标识组中目的寄存器对应的锁定标识,锁定标识组中其余的锁定标识保持不变;这样每条指令经过检测后,都会获得一组新的锁定标识,而下一条指令则根据新的锁定标识进行匹配性检测;锁定标识组的编号与该指令在指令包中的顺序一一对应;
步骤5,判断指令包中的刚刚进行并行性检测的指令是否为指令包中的最后一条指令,如果不是最后一条指令,转步骤4;否则,转步骤6;
步骤6,确定每个周期内同时发射的指令条数以及这个指令条数对应的锁定标识组的编号;在下一个周期的开始,将该编号对应的锁定标识组的值各减去1赋给相应的锁定标识,实现锁定标识的更新。
和现有技术相比较,本发明具备如下优点:
本发明只需要设定一组锁定标识,将指令涉及到的寄存器与各自的锁定标识相匹配即可判断相邻指令包之间的指令以及同一指令包里的指令是否具有相关性,从而实现超标量处理器中指令并行性的检测。而现有技术则侧重于所有源操作数和目的操作数与寄存器依赖表中的表项进行逐个比较,从而得到检测结果。本发明可以很大程度上减小硬件开销,缩小模块面积,而且不会占用很多逻辑资源。
附图说明
图1是本发明检测指令相关的流程图。
图2是本发明在双发射处理器实例中实现的原理图。
图3是本发明获取指令包的示意图。
图4是双发射处理器中锁定标识更新方法的示意图。
具体实施方式
下面结合附图和实施例详细说明本发明的实施方式。
如图1所示,本实施例一种超标量处理器中指令相关性检测的方法,具体包括如下步骤:
本实施例在双发射处理器中的具体实现如图2所示,本实施例不仅可以判断指令包中的两条指令是否可以同时发射,也可以检测相邻指令包中的两组指令之间是否具有数据相关。具体实现包括以下步骤:
(1)获取指令包,获取指令包的方法如图3所示,缓存包将指令逐级传递给缓存包2和缓存包1,通过控制单元最终传递给指令包。对于双发射处理器来说,每个指令包中包含两条指令。指令包每个周期都会进行更新,更新的指令条数取决于该周期指令发射的条数。
(2)将指令包中的两条指令分别进行解码,得到第一条指令和第二条指令的源寄存器编号,目的寄存器编号以及指令执行占用的周期数。
(3)将指令包中的第一条指令的源操作数和目的操作数分别与对应的锁定标识进行匹配。如果该条指令用到的源操作数或者目的操作数被锁定,则该指令包的两条指令均延迟一个周期发射,与下一周期更新后的锁定标识重新进行匹配,该周期可同时发射的指令条数为0;否则,第一条指令可以在这个周期发射,同时将该指令的执行周期数传递给该指令目的寄存器对应的锁定标识,其余的锁定标识保持原来的值不变。这样第一条指令经过检测后,生成了一组新的锁定标识,记为锁定标识组1;
(4)将指令包中的第二条指令的源操作数和目的操作数分别与锁定标识组1中的锁定标识进行匹配;如果该条指令用到的源操作数或者目的操作数被锁定,则该指令不能和它前面的指令一起发射,需要延后一个周期再做判断,该指令将会成为下一周期的指令包中的第一条指令;这样确定了该周期可以发射的指令条数为1;否则,这两条指令与之间不存在数据相关,与上一周期同时发射的指令也不存在数据相关,可以同时发射;将该指令的执行周期数传递给锁定标识组1中目的寄存器对应的锁定标识,锁定标识组1中其余的锁定标识保持不变;这样得到了锁定标识组2,确定了该周期可同时发射的指令条数为2。
(5)如图4所示,根据步骤(3)和步骤(4)中确定的每个周期可同时发射的指令条数,并得到其对应的锁定标识组的编号。在下一个周期的开始,将该编号对应的锁定标识组的值各减去1赋给相应的锁定标识,实现锁定标识的更新。举例来说,如果该周期可同时发射的指令条数为2,则在下一个周期的开始,将锁定标识组2中的锁定标识的值减去1赋给对应的锁定标识,将锁定标识更新。
Claims (3)
1.一种超标量处理器中指令相关性检测的方法,其特征在于:设定一组锁定标识,指令解码后,将其源操作数与目的操作数分别与对应的锁定标识相比较,来判断指令的相关性与并行性;锁定标识根据每个周期指令的解码信息进行更新,每个周期更新一次;锁定标识与处理器内的通用寄存器组一一对应,每个通用寄存器都有一个对应的锁定标识;锁定标识的内容是指令执行周期数减1。
2.根据权利要求1所述一种超标量处理器中指令相关性检测的方法,其特征在于,具体包括以下步骤:
步骤1,获取指令包,指令包中指令的条数与发射槽的数目相等,指令包根据每个周期发射的指令条数进行相应的更新;
步骤2,将指令包中的指令分别进行解码,解码后的信息包括源寄存器编号,目的寄存器编号以及指令执行占用的周期数;
步骤3,将指令包中的第一条指令的源操作数和目的操作数分别与对应的锁定标识进行匹配;如果该条指令用到的源操作数或者目的操作数被锁定,则该指令包的所有指令均延迟一个周期发射,与下一周期更新后的锁定标识重新进行匹配;否则,第一条指令可以在这个周期发射,同时将该指令的执行周期数传递给该指令目的寄存器对应的锁定标识,其余的锁定标识保持原来的值不变;这样第一条指令经过检测后,生成了一组新的锁定标识;
步骤4,将指令包中的下一条指令的源操作数和目的操作数分别与上一条指令判别后得到的锁定标识组中的锁定标识进行匹配;如果该条指令用到的源操作数或者目的操作数被锁定,则该指令及其后面的所有指令不能和它前面的指令一起发射,需要延后一个周期再做判断,该指令将会成为下一周期的指令包中的第一条指令,转步骤6;否则,这两条指令之间不存在数据相关,与上一周期同时发射的指令也不存在数据相关,进行同时发射;将该指令的执行周期数传递给锁定标识组中目的寄存器对应的锁定标识,锁定标识组中其余的锁定标识保持不变;这样每条指令经过检测后,都会获得一组新的锁定标识,而下一条指令则根据新的锁定标识进行匹配性检测;锁定标识组的编号与该指令在指令包中的顺序一一对应;
步骤5,判断指令包中的刚刚进行并行性检测的指令是否为指令包中的最后一条指令,如果不是最后一条指令,转步骤4;否则,转步骤6;
步骤6,确定每个周期内可同时发射的指令条数以及这个指令条数对应的锁定标识组的编号;在下一个周期的开始,将该编号对应的锁定标识组的值各减去1赋给相应的锁定标识,实现锁定标识的更新。
3.根据权利要求2所述一种超标量处理器中指令相关性检测的方法,其特征在于,在检测指令过程中,第一条指令与初始锁定标识组中对应的锁定标识相匹配,除第一条指令外,其余指令均与上一条指令判别后生成的新锁定标识组相匹配;锁定标识组的最大编号与发射槽的数目相等。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510702707.1A CN105354117B (zh) | 2015-10-26 | 2015-10-26 | 超标量处理器中指令相关性检测的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510702707.1A CN105354117B (zh) | 2015-10-26 | 2015-10-26 | 超标量处理器中指令相关性检测的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105354117A true CN105354117A (zh) | 2016-02-24 |
CN105354117B CN105354117B (zh) | 2018-10-19 |
Family
ID=55330091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510702707.1A Active CN105354117B (zh) | 2015-10-26 | 2015-10-26 | 超标量处理器中指令相关性检测的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105354117B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108182082A (zh) * | 2017-12-06 | 2018-06-19 | 中国航空工业集团公司西安航空计算技术研究所 | 一种流水处理双发射处理器记分板电路 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010016901A1 (en) * | 2000-02-08 | 2001-08-23 | Siroyan Limited | Communicating instruction results in processors and compiling methods for processors |
CN101211256A (zh) * | 2006-12-29 | 2008-07-02 | 上海贝岭股份有限公司 | 一种专用双流水线risc指令系统及其操作方法 |
CN101866281A (zh) * | 2010-06-13 | 2010-10-20 | 清华大学 | 一种多周期指令执行方法和装置 |
CN101894013A (zh) * | 2010-07-16 | 2010-11-24 | 中国科学院计算技术研究所 | 处理器内指令级流水线控制方法及其系统 |
CN104536914A (zh) * | 2014-10-15 | 2015-04-22 | 中国航天科技集团公司第九研究院第七七一研究所 | 基于寄存器访问标记的相关处理装置和方法 |
-
2015
- 2015-10-26 CN CN201510702707.1A patent/CN105354117B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010016901A1 (en) * | 2000-02-08 | 2001-08-23 | Siroyan Limited | Communicating instruction results in processors and compiling methods for processors |
CN101211256A (zh) * | 2006-12-29 | 2008-07-02 | 上海贝岭股份有限公司 | 一种专用双流水线risc指令系统及其操作方法 |
CN101866281A (zh) * | 2010-06-13 | 2010-10-20 | 清华大学 | 一种多周期指令执行方法和装置 |
CN101894013A (zh) * | 2010-07-16 | 2010-11-24 | 中国科学院计算技术研究所 | 处理器内指令级流水线控制方法及其系统 |
CN104536914A (zh) * | 2014-10-15 | 2015-04-22 | 中国航天科技集团公司第九研究院第七七一研究所 | 基于寄存器访问标记的相关处理装置和方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108182082A (zh) * | 2017-12-06 | 2018-06-19 | 中国航空工业集团公司西安航空计算技术研究所 | 一种流水处理双发射处理器记分板电路 |
Also Published As
Publication number | Publication date |
---|---|
CN105354117B (zh) | 2018-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10296346B2 (en) | Parallelized execution of instruction sequences based on pre-monitoring | |
JP5865405B2 (ja) | 命令の制御フローの追跡 | |
KR101497214B1 (ko) | 루프 버퍼 학습 | |
US8683185B2 (en) | Ceasing parallel processing of first set of loops upon selectable number of monitored terminations and processing second set | |
US7979637B2 (en) | Processor and method for executing data transfer process | |
US20170277544A1 (en) | Run-Time Code Parallelization with Monitoring of Repetitive Instruction Sequences During Branch Mis-Prediction | |
CN106708474B (zh) | 一种基于dimt架构的统一染色阵列记分板实现架构 | |
US9348595B1 (en) | Run-time code parallelization with continuous monitoring of repetitive instruction sequences | |
CN101776989B (zh) | 乱序执行微处理器及提升效能的方法、执行方法 | |
US10496413B2 (en) | Efficient hardware-based extraction of program instructions for critical paths | |
US10545763B2 (en) | Detecting data dependencies of instructions associated with threads in a simultaneous multithreading scheme | |
US20130339689A1 (en) | Later stage read port reduction | |
CN104536914B (zh) | 基于寄存器访问标记的相关处理装置和方法 | |
TW201738734A (zh) | 用於在運行時指令的情境向量化的系統及方法 | |
CN114780149A (zh) | 用于乱序超标量处理器的操作依赖性调度方法、部件及处理器 | |
US20220206816A1 (en) | Apparatus and method for hardware-based memoization of function calls to reduce instruction execution | |
CN105354117A (zh) | 超标量处理器中指令相关性检测的方法 | |
CN104516726A (zh) | 一种指令处理的方法及装置 | |
US20220035633A1 (en) | Method and Apparatus for Back End Gather/Scatter Memory Coalescing | |
US9256497B2 (en) | Checkpoints associated with an out of order architecture | |
US20180285111A1 (en) | Method of detecting repetition of an out-of-order execution schedule, apparatus and computer-readable medium | |
US20130019085A1 (en) | Efficient Recombining for Dual Path Execution | |
US11567767B2 (en) | Method and apparatus for front end gather/scatter memory coalescing | |
US6629235B1 (en) | Condition code register architecture for supporting multiple execution units | |
WO2016156955A1 (en) | Parallelized execution of instruction sequences based on premonitoring |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |