CN105302639B - PowerPC向量协处理器译码电路中动态调度方法 - Google Patents
PowerPC向量协处理器译码电路中动态调度方法 Download PDFInfo
- Publication number
- CN105302639B CN105302639B CN201510772209.4A CN201510772209A CN105302639B CN 105302639 B CN105302639 B CN 105302639B CN 201510772209 A CN201510772209 A CN 201510772209A CN 105302639 B CN105302639 B CN 105302639B
- Authority
- CN
- China
- Prior art keywords
- instruction
- coprocessor
- primary processor
- register
- effective
- 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.)
- Expired - Fee Related
Links
Landscapes
- Advance Control (AREA)
Abstract
一种PowerPC向量协处理器译码电路中动态调度方法,当协处理器接收到一条主处理器发来的指令时,需要在协处理器接口协议规定的时钟周期返回一个确认信号,表明所接收到的指令是不是一条有效的协处理器指令。如果协处理器确认所接收到的指令是一条有效的协处理器指令,则主处理器认为协处理器应该在固定的时钟周期内完成所接收指令的执行工作,并根据协处理器接口协议,在规定的时钟周期将协处理器所需要的有效操作数传输给协处理器。当协处理器所接收指令涉及修改主处理器特殊寄存器的值时,需要在执行结束前完成相应的特殊寄存器值的修改工作。本发明能够将由于协处理器指令之间存在数据相关而对流水线的阻塞降低到最小,提高了协处理器的整体性能。
Description
技术领域
本发明涉及一种译码电路中动态调度方法。特别是涉及PowerPC向量协处理器译码电路中动态调度方法。
背景技术
为了提高处理器的性能,流水线技术已经被广泛使用在现代处理器中。然而由于处理器所执行的指令之间存在数据相关,将会阻塞流水线,显著影响处理器的执行性能。
为了尽可能地降低指令间数据相关对处理器性能的影响,现代处理器普遍采用动态调度的方法,通过检测指令间的相关性及存在相关性指令的执行情况,动态发射译码后的指令,使得后译码的指令有可能先于先译码的指令执行。在不影响程序正确性的前提下,尽可能减少因指令间数据相关对流水线的阻塞。
PowerPC主处理器和协处理器之间通过协处理器接口,以紧耦合流水线的方式进行连接,协处理器在接收主处理器发来的指令和数据后,需要按照主处理器规定的一整套协处理器接口协议,在规定的时钟周期内,将主处理器需要的指令译码信息反馈给主处理器,涉及修改主处理器特殊寄存器的指令需要在规定的时钟周期内完成对相应特殊寄存器的改写,以便后续指令正确读取相应特殊寄存器的值。
而当协处理器为了降低因指令间数据相关而产生的对流水线的阻塞,而采用了动态调度方法时,由于指令的动态调度是基于指令间的数据相关性及相关指令的执行情况,当一条指令与其他指令存在数据相关且相关指令的相关性没有及时解除时,该指令便有可能没有按照协处理器接口协议,在规定的时钟周期内完成该指令的执行操作,将主处理器需要的相关译码信息传输给主处理器,或者虽然即时将主处理器需要的译码信息传回,但却没有在规定的时钟周期内改写需要改写的主处理器中的特殊寄存器,从而影响后续指令的正确执行。
另外,由于部分协处理器指令(如Load类指令)的操作数可能来源于主处理器,当协处理器指令存在动态调度,而没有按照主处理器的预期执行时,主处理器就可能没有在正确的时钟周期将协处理器指令所需要的操作数传输给协处理器。
发明内容
本发明所要解决的技术问题是,提供一种能够使得在协处理器满足协处理器接口协议的前提下对协处理器中所执行的指令进行动态调度,尽可能降低因协处理器中数据相关对流水线造成阻塞的PowerPC向量协处理器译码电路中动态调度方法。
本发明所采用的技术方案是:一种PowerPC向量协处理器译码电路中动态调度方法,当协处理器每接收到一条来自主处理器的指令时,都要进行如下步骤:
1)判断接收到的指令是否是一条有效的协处理器指令,并将判断结果按照主处理器规定的协处理器接口协议的要求,在规定的时钟周期返回给主处理器;
2)判断当前指令与指令队列中的其他指令是否存在输出相关或反相关,即判断当前指令的目的寄存器是否等于指令队列中其他指令的源寄存器或目的寄存器,是则发送停止接收新指令信号,否则进入下一步骤;
3)判断当前指令是否涉及修改主处理器特殊寄存器,是进入下一步骤,否则不发送停止接收新指令信号,所述的特殊寄存器是主处理器中除通用寄存器以外的寄存器;
4)判断译码单元从主处理器接收的上一条指令是否为改写主处理器的特殊寄存器,是则发送停止接收新指令信号,否则进入下一步骤;
5)判断当前指令操作数是否已经准备好,是则不发送停止接收新指令信号,否则进入下一步骤;
6)判断当前指令的相关指令是否正在写回或已经写回,是则不发送停止接收新指令信号,否则发送停止接收新指令信号后返回步骤5),所述的当前指令的相关指令,是指若当前指令中的一个操作数的源寄存器等于协处理器的指令队列中一条指令的目的寄存器,则将所述指令队列中源寄存器的编号等于当前指令目的寄存器编号的指令条目中编号最小的一项设置为当前译码指令的相关指令。
步骤1)中,如果判断结果是无效协处理器指令,在协处理器接口协议规定的时钟周期返回给主处理器一个无效协处理器指令确认信号,表明所接收到的指令不是一条有效的协处理器指令;如果判断结果是有效协处理器指令,在协处理器接口协议规定的时钟周期返回给主处理器一个有效协处理器指令确认信号,表明所接收到的指令是一条有效的协处理器指令。
本发明的PowerPC向量协处理器译码电路中动态调度方法,在保证程序正确执行并且满足协处理器接口协议的基础上,对协处理器中所执行的指令进行动态调度,从而将由于协处理器指令之间存在数据相关而对流水线的阻塞降低到最小,提高了协处理器的整体性能。
附图说明
图1是本发明PowerPC向量协处理器译码电路中动态调度方法和流程图;
图2是PowerPC协处理器动态调度的一个实例。
具体实施方式
下面结合实施例和附图对本发明的PowerPC向量协处理器译码电路中动态调度方法做出详细说明。
根据PowerPC向量协处理器接口协议要求,当协处理器接收到一条主处理器发来的指令时,需要在协处理器接口协议规定的时钟周期返回一个确认信号,表明所接收到的指令是不是一条有效的协处理器指令。如果协处理器确认所接收到的指令是一条有效的协处理器指令,则主处理器认为协处理器应该在固定的时钟周期内完成所接收指令的执行工作,并根据协处理器接口协议,在规定的时钟周期将协处理器所需要的有效操作数传输给协处理器。当协处理器所接收指令涉及修改主处理器特殊寄存器的值时,需要在执行结束前完成相应的特殊寄存器值的修改工作。
如图1所示,本发明的PowerPC向量协处理器译码电路中动态调度方法,是当协处理器每接收到一条来自主处理器的指令时,都要进行如下步骤:
1)判断接收到的指令是否是一条有效的协处理器指令,并将判断结果按照主处理器规定的协处理器接口协议的要求,在规定的时钟周期返回给主处理器。其中,如果判断结果是无效协处理器指令,在协处理器接口协议规定的时钟周期返回给主处理器一个无效协处理器指令确认信号,表明所接收到的指令不是一条有效的协处理器指令;如果判断结果是有效协处理器指令,在协处理器接口协议规定的时钟周期返回给主处理器一个有效协处理器指令确认信号,表明所接收到的指令是一条有效的协处理器指令;
2)判断当前指令与指令队列中的其他指令是否存在输出相关或反相关,即判断当前指令的目的寄存器是否等于指令队列中其他指令的源寄存器或目的寄存器,是则发送停止接收新指令信号,否则进入下一步骤。
3)判断当前指令是否涉及修改主处理器特殊寄存器,是进入下一步骤,否则不发送停止接收新指令信号,所述的特殊寄存器是主处理器中除通用寄存器以外的寄存器;
4)判断译码单元从主处理器接收的上一条指令是否-改写主处理器的特殊寄存器,是则发送停止接收新指令信号,否则进入下一步骤;
5)判断当前指令操作数是否已经准备好,是则不发送停止接收新指令信号,否则进入下一步骤;
6)判断当前指令的相关指令是否正在写回或已经写回,是则不发送停止接收新指令信号,否则发送停止接收新指令信号后返回步骤5),直到当前指令的操作数已经准备好或相关指令已经写回或正在写回时,停止发送停止接收新指令信号。所述的当前指令的相关指令,是指若当前指令中的一个操作数的源寄存器等于协处理器的指令队列中一条指令的目的寄存器,则将所述指令队列中源寄存器的编号等于当前指令目的寄存器编号的指令条目中最新的一项设置为当前译码指令的相关指令。
需要说明的是,停止接收新指令信号的作用在于当停止接收新指令信号为高电平时,表明协处理器不能接收主处理器发来的新指令,此时,当主处理取指单元接收到一条非主处理器指令时,应停滞流水线,等待向量协处理器对所述非主处理器指令进行译码,以判断这条非主处理器指令是否是一条有效的协处理器指令。该信号的具体信号名由协处理器接口协议规定,可能因协处理器接口协议的不同而不同。
下面结合图2说明本发明工作过程。
如图2向量协处理器100所示,所述向量协处理器100包括一个译码单元110、一个指令队列130、一个通用寄存器堆140、若干分布式保留站150、若干功能执行单元160、以及专用数据寄存器堆170和数据总线180,其中:
译码单元110用来判断一条指令是否是有效的协处理器指令、该指令的指令类型、源、目的寄存器地址和正在译码指令与指令队列130中其他指令的数据相关性。如果经由译码单元110判断一条来自主处理器的指令是有效的协处理器指令,则根据协处理器接口协议,由译码单元110发给主处理器一个协处理器指令有效信号,否则,由译码单元110发给主处理器一个协处理器指令无效信号。
如果主处理器每个时钟周期最多向协处理器发射一条指令,则由译码单元110译码后的指令将写入指令队列130的空余项中编号最小的一项,如果主处理器每个时钟周期最多向协处理器发射多条指令,则由译码单元110译码后的第一条指令将写入指令队列130的空余项中编号最小的一项,由译码单元110译码后的第二条指令将写入指令队列130的空余项中编号次小的一项,以此类推。如果指令队列130没有空余项,则向主处理器发送停止接收新指令信号,停滞主处理器流水线,等待指令队列释放资源后再写入译码后的指令。此外,译码单元110还将判断当前译码指令和指令队列130中所存放其他指令的数据相关性,若当前指令某操作数的源寄存器等于指令队列130中某条指令的目的寄存器,则将目的寄存器等于当前指令操作数源寄存器的指令队列130条目中最新的一项设置为当前译码指令的相关指令,并记录相关指令所在的指令队列号。由译码单元110向主处理器发送停止接收新指令信号,直到该指令的操作数全部准备好,停止发送停止接收新指令信号。
所述最新指令是指满足上述条件指令队列130中的全部指令中,编号最大的一项。
指令队列130用来存放译码后指令120的状态和控制信号,包括源、目的寄存器地址,与所存放指令存在数据相关的相关指令的指令队列130编号,当前指令和相关指令的执行状态。
指令的执行状态反映了指令队列130中各项指令所处的流水线级,包括空闲、指令队列级、保留站级、执行单元级。
当指令队列130中某项指令的状态非空闲时,该指令为有效指令,该指令队列项不可写入新的指令,当指令状态处于空闲时,该项中指令为无效指令,该指令队列项可以写入新的指令。
当译码后的指令存放到指令队列130中而未发射到保留站150之前,该指令处于指令队列级,之后,指令队列130会检测该指令全部源操作数的准备情况,待该指令的全部源操作数都已准备好或正在写回时,将该指令发射到保留站150中,需要注意的是,将一条指令由指令队列130发射到保留站150中并不会清空指令队列130的相应项,直到一条指令的执行结果写回到通用寄存器堆140中之前,这条指令的状态和控制信号会一直存放在指令队列130中。
需要说明的是,指令队列130的条目应该根据实际需要而定。当协处理器所执行指令间存在大量数据相关时,为了减少由于指令队列130条目不足而产生的对流水线的停滞,则应适当增加指令队列的条目,而当协处理器所执行指令间的数据相关不明显时,为了降低协处理器的面积开销,则应适当降低指令队列130的条目。一般情况下,根据协处理器所执行程序的不同,可以将指令队列130的条目设置为2到8条。
通用寄存器堆140用来存放向量协处理器100所执行指令的源、目的操作数,共包含32个128位寄存器。当保留站150在读取操作数时,根据相关指令的执行情况,可以从数据总线180或通用寄存器堆140来读取,若指令队列130中存在保留站150中指令的相关指令,则从数据总线180中读取操作数,否则从通用寄存器堆140中读取操作数。
分布式保留站150起到缓存指令、读取操作数的作用,当一条指令由指令队列130发到保留站150时,这条指令的源操作数均已准备好或正在写回。保留站150会根据指令源操作数所处的位置,从通用寄存器堆140或数据总线180中读取操作数。
值得注意的是,虽然图2所示实施例中有三个保留站,但在具体实施中,保留站150的数目不局限于三个,而可以根据功能单元160的划分情况而定。
功能执行单元160接收保留站140发来的指令控制信号和源操作数,执行若干个周期,并将执行结果通过数据总线180写回到通用寄存器堆140。
专用数据寄存器170保存来自主处理器的操作数,专用数据寄存器170的条目等同于指令队列130的条目,每个专用数据寄存器170条目对应一个指令队列130条目。
本领域技术人员可以理解附图只是一个优选实施例的示意图,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种PowerPC向量协处理器译码电路中动态调度方法,其特征在于,当协处理器每接收到一条来自主处理器的指令时,都要进行如下步骤:
1)判断接收到的指令是否是一条有效的协处理器指令,并将判断结果按照主处理器规定的协处理器接口协议的要求,在规定的时钟周期返回给主处理器;
2)判断当前指令与指令队列中的其他指令是否存在输出相关或反相关,即判断当前指令的目的寄存器是否等于指令队列中其他指令的源寄存器或目的寄存器,是则发送停止接收新指令信号,否则进入下一步骤;
3)判断当前指令是否涉及修改主处理器特殊寄存器,是进入下一步骤,否则不发送停止接收新指令信号,所述的特殊寄存器是主处理器中除通用寄存器以外的寄存器;
4)判断译码单元从主处理器接收的上一条指令是否为改写主处理器的特殊寄存器,是则发送停止接收新指令信号,否则进入下一步骤;
5)判断当前指令操作数是否已经准备好,是则不发送停止接收新指令信号,否则进入下一步骤;
6)判断当前指令的相关指令是否正在写回或已经写回,是则不发送停止接收新指令信号,否则发送停止接收新指令信号后返回步骤5),所述的当前指令的相关指令,是指若当前指令中的一个操作数的源寄存器等于协处理器的指令队列中一条指令的目的寄存器,则将所述指令队列中源寄存器的编号等于当前指令目的寄存器编号的指令条目中编号最小的一项设置为当前译码指令的相关指令。
2.根据权利要求1所述的PowerPC向量协处理器译码电路中动态调度方法,其特征在于,步骤1)中,如果判断结果是无效协处理器指令,在协处理器接口协议规定的时钟周期返回给主处理器一个无效协处理器指令确认信号,表明所接收到的指令不是一条有效的协处理器指令;如果判断结果是有效协处理器指令,在协处理器接口协议规定的时钟周期返回给主处理器一个有效协处理器指令确认信号,表明所接收到的指令是一条有效的协处理器指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510772209.4A CN105302639B (zh) | 2015-11-12 | 2015-11-12 | PowerPC向量协处理器译码电路中动态调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510772209.4A CN105302639B (zh) | 2015-11-12 | 2015-11-12 | PowerPC向量协处理器译码电路中动态调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105302639A CN105302639A (zh) | 2016-02-03 |
CN105302639B true CN105302639B (zh) | 2019-04-30 |
Family
ID=55199933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510772209.4A Expired - Fee Related CN105302639B (zh) | 2015-11-12 | 2015-11-12 | PowerPC向量协处理器译码电路中动态调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105302639B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112306558A (zh) * | 2019-08-01 | 2021-02-02 | 杭州中天微系统有限公司 | 处理单元、处理器、处理系统、电子设备和处理方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4782441A (en) * | 1985-06-14 | 1988-11-01 | Hitachi, Ltd. | Vector processor capable of parallely executing instructions and reserving execution status order for restarting interrupted executions |
CN103793263A (zh) * | 2014-01-24 | 2014-05-14 | 天津大学 | 一种基于PowerPC处理器的DMA事务级建模方法 |
-
2015
- 2015-11-12 CN CN201510772209.4A patent/CN105302639B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4782441A (en) * | 1985-06-14 | 1988-11-01 | Hitachi, Ltd. | Vector processor capable of parallely executing instructions and reserving execution status order for restarting interrupted executions |
CN103793263A (zh) * | 2014-01-24 | 2014-05-14 | 天津大学 | 一种基于PowerPC处理器的DMA事务级建模方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105302639A (zh) | 2016-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4105684B2 (ja) | ロード操作の推測結果をレジスタ値にリンクするためのシステムおよび方法 | |
US7024537B2 (en) | Data speculation based on addressing patterns identifying dual-purpose register | |
US6728866B1 (en) | Partitioned issue queue and allocation strategy | |
JP3866261B2 (ja) | ロード/ストア操作をバイパスするために投機的ソースオペランドを使用するシステムおよび方法 | |
US6308318B2 (en) | Method and apparatus for handling asynchronous exceptions in a dynamic translation system | |
US9569214B2 (en) | Execution pipeline data forwarding | |
US20050149689A1 (en) | Method and apparatus for rescheduling operations in a processor | |
US20100058034A1 (en) | Creating register dependencies to model hazardous memory dependencies | |
US7711934B2 (en) | Processor core and method for managing branch misprediction in an out-of-order processor pipeline | |
US5740393A (en) | Instruction pointer limits in processor that performs speculative out-of-order instruction execution | |
US9354888B2 (en) | Performing predecode-time optimized instructions in conjunction with predecode time optimized instruction sequence caching | |
US7363477B2 (en) | Method and apparatus to reduce misprediction penalty by exploiting exact convergence | |
CN108920190B (zh) | 用于确定从其恢复指令执行的恢复点的装置和方法 | |
CN116661870A (zh) | 一种基于risc-v架构的高性能嵌入式处理器 | |
US20150227371A1 (en) | Processors with Support for Compact Branch Instructions & Methods | |
US9841974B2 (en) | Renaming with generation numbers | |
US8037366B2 (en) | Issuing instructions in-order in an out-of-order processor using false dependencies | |
CN105302639B (zh) | PowerPC向量协处理器译码电路中动态调度方法 | |
US20100306513A1 (en) | Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline | |
US6711670B1 (en) | System and method for detecting data hazards within an instruction group of a compiled computer program | |
US7822950B1 (en) | Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls | |
US6959377B2 (en) | Method and system for managing registers | |
CN105573714A (zh) | 用以改善在处理器中重新执行加载的装置与方法 | |
US9983932B2 (en) | Pipeline processor and an equal model compensator method and apparatus to store the processing result | |
JP2001134442A (ja) | コンピュータ・プログラムのハザードを検出するシステム |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190430 Termination date: 20201112 |
|
CF01 | Termination of patent right due to non-payment of annual fee |