CN1928810A - 带有循环跳转预测单元的微处理器 - Google Patents
带有循环跳转预测单元的微处理器 Download PDFInfo
- Publication number
- CN1928810A CN1928810A CN 200510029541 CN200510029541A CN1928810A CN 1928810 A CN1928810 A CN 1928810A CN 200510029541 CN200510029541 CN 200510029541 CN 200510029541 A CN200510029541 A CN 200510029541A CN 1928810 A CN1928810 A CN 1928810A
- Authority
- CN
- China
- Prior art keywords
- instruction
- jump
- address
- partial circulating
- command
- 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
- Advance Control (AREA)
Abstract
一种带有循环跳转预测单元的微处理器,在微处理器指令地址产生电路内集成一个跳转预测单元,用于发现、记录程序中的小循环,并在随后的小循环反复执行过程中,预测到向后短跳转的发生,从而提前读取跳转目标地址的指令,避免了向后短跳转指令本身执行所花费的时间。预测单元由目标地址寄存器(存放小循环第一条指令的地址)、跳转指令地址寄存器(存放循环最后一条指令的地址)、跟随指令寄存器(存放小循环体之后首条指令的地址)、偏移量低位部分锁存器(记录小循环体的指令数量),指令计数器组成(检测小循环体的结束)等组成。本发明克服了传统跳转预测方法成本较高的缺点,以较小的代价,获得与传统方法接近的预测效果及性能提升。
Description
技术领域
本发明涉及的是一种带有循环跳转预测单元的微处理器,属于微处理器与超大规模集成电路技术领域。
背景技术
通用微处理器在工作时,所执行的指令接近六分之一是跳转指令,而跳转指令由于占用的时钟周期较多,对微处理器的性能影响很大。为了减少执行跳转指令所占用的时间,微处理器设计人员采用了各种技术,如跳转延时(BranchDelay)、跳转预测(Branch Prediction)、条件执行(Conditional execution)等等。在高性能微处理器领域,跳转预测方法被普遍采用,并在性能提升方面取得了很好的效果。但是,传统的跳转预测方法需要占用极大的硬件资源来实现,使芯片的成本提高不少,因而,在嵌入式微处理器领域,跳转预测方法很少被采用。
另一方面,很多嵌入式应用(如汽车电子、电机控制、语音处理、传真、寻呼,等等)所具有的特点是:系统工作时的很大一部分时间是在执行循环(loop)操作(高级语言中表现为for语句,或者while语句),并且这些循环往往是循环体只有几条或十几条指令的小循环(或称为短循环,short loop)。如图1所示:一般应用中,微处理器有38%的时间用于执行小循环;而在属于嵌入式领域的数字信号处理应用中,这一比例会达到80%以上。因此,仅仅提高小循环的执行速度,就可以使嵌入式微处理器的性能得到很大提升。
发明内容
本发明的目的在于利用嵌入式应用的特点,单独针对小循环引入高性能微处理器才采用的跳转预测机制,克服传统跳转预测方法成本较高的缺点,以较小的代价,获得近似的预测效果及性能提升。
本发明涉及的循环跳转预测单元的工作原理基于对小循环的识别和利用。为了定义小循环,我们首先定义向后短跳转指令:几乎所有的微处理器都支持的相对跳转指令。通常,相对跳转指令的编码由操作码及偏移量两部分组成(如图2所示)。操作码用于表明该指令是一条相对跳转指令(可以是条件跳转或者无条件跳转),偏移量用于表明跳转目标地址与当前程序地址的距离。我们进一步把相对跳转指令的偏移量分成高位和低位两部分,规定低位部分的长度为w,并且定义当高位部分为全′1′时,该跳转指令为向后短跳转指令。也即,向后短跳转指令是指偏移量为绝对值≤2w的负数的相对跳转指令。我们把向后短跳转指令作为识别小循环的标志,由此可以定义:小循环是指指令数量不超过2w条的循环体。在以下程序范例中,循环体的最后一条指令,BL1,就是一条向后短跳转指令。而紧跟其后的那条指令In+1,称为跟随指令。
//程序范例
L1:
A1 I1;
A2 I2;
:
An B L1;//向后短跳转指令
An+1 In+1;//跟随指令
本发明涉及的微处理器执行跳转指令需要2个周期。以上程序范例,通过循环跳转预测单元,避免循环体最后那条向后短跳转指令(B L1)的执行,小循环的执行将减少2m-4(m为循环次数m>2)个周期。这是因为每次循环(第一次循环和最后一次循环除外),指令B L1都可以不被执行,从而每次循环节省2个周期。如果循环次数小于等于2,则无法节省周期数,但是也不会增加周期数。
具体实现
在引入循环跳转预测单元之前,微处理器的指令地址产生单元,根据当前执行的指令是否为发生跳转,决定下一条指令的地址是PC+1还是PC+跳转偏移量(PC为当前指令的地址),
为了实现循环跳转预测,指令地址产生单元需要增加3个寄存器:目标地址寄存器-AR1(存放小循环首条指令的地址-A1)、跳转指令地址寄存器-ARn(存放小循环最后一条指令,也即向后短跳转指令的地址-An)和跟随指令寄存器IRn+1(存放小循环之后首条指令In+1)。由此,指令地址的产生,可以是PC+1或者PC+跳转偏移量,还可以是A1或者An+2。当小循环正常结束时,IRn+1用来提供下一条指令。图3显示了带有循环跳转预测单元的指令地址产生电路。
图4显示了循环跳转预测单元的状态机。状态机初始状态为空闲状态。当一条向后短跳转指令被识别到,预测单元将会使用一个独立的寄存器-Rld记录偏移量低位部分,同时,偏移量低位部分会被载入一个计数器。通过Rld,预测单元可以知道该小循环包含多少条指令。然后,如果预测单元确定循环跳转的条件满足(即跳转确实发生),状态机将进入激活状态。在激活状态下,微处理器每执行一条指令,计数器自增1。当计数器计数到0,表明一次循环结束,预测单元使用目标地址寄存器AR1的值作为下一条指令的地址,而不是PC+1。同时,计数器被重新装载Rld。这样,程序又从I0开始执行,计数器也再次计数直到0,如此反复。
当向后短跳转指令被检测到,需要知道:1、该指令是无条件跳转还是条件跳转。2、如果是条件跳转,该跳转的满足条件。在激活状态下,预测单元总是预测循环跳转将会发生,从而跳过向后短跳转指令的读取,解码和执行,直接从跳转目标地址读取指令。而当该指令为条件跳转指令且跳转条件不满足时,将发生预测错误。
在以下情况下,将导致控制器退出激活状态,回到空闲状态:
对于无条件向后短跳转,预测的准确率为100%,因此不需要预测错误恢复。仪当在循环体执行中发生跳出循环的行为时(诸如C语言的break语句),控制器将退出激活态,回到空闲态,
对于条件跳转,以下情况将导致控制器将退出激活态,回到空闲态:1、在循环体执行中发生跳出循环的行为(break)。2、向后短跳转指令条件不满足。在第二种情况下,预测错误机制工作,使程序执行循环体后续指令。
预测错误的恢复
当发现对于条件跳转的预测错误时,范例程序中的指令I0已经进入解码阶段,而指令I1也已经被读取。这样,在下一个周期,以下操作将被执行:
指令I0的执行被取消;从跟随指令寄存器(IRn+1)读取的向后短跳转指令的后续指令(In+1),并被装载入指令寄存器(IR),由指令存储器读取的指令-I1,被抛弃;从跳转指令地址寄存器读出跳转指令地址(An),并以An+2作为下一条指令的地址。
本发明只使用极少的电路资源,就实现了在小循环程序执行方面与传统高性能微处理器跳转预测电路接近的预测效果和性能提升,并且在预测错误的情况下也不会导致性能损失。图5显示了在引入循环跳转预测单元之后,微处理器在各种嵌入式应用方面的性能提升。
Claims (2)
1、一种带有循环跳转预测单元的微处理器,其特征在指令地址产生电路中集成了跳转预测电路,用于取消程序小循环中循环指令本身的执行。该预测单元由目标地址寄存器(存放小循环第一条指令的地址)、跳转指令地址寄存器(存放循环最后一条指令的地址)、跟随指令寄存器(存放小循环体之后首条指令的地址)、偏移量低位部分锁存器(记录小循环体的指令数量),指令计数器组成(检测小循环体的结束)等组成。当预测单元发现向后短跳转指令时,记录跳转指令的地址和目标地址、循环体之后首条指令的内容、以及循环体的大小。在随后的循环执行过程中,预测单元预测到循环跳转的发生,进而提前读取目标地址的指令,避免循环跳转指令被实际执行,从而节省循环体执行的周期数。
2、一种实施权利要求1的方法的装置,其预测单元始终预测跳转条件为满足,并且在预测错误的情况下,由跟随指令寄存器提供正确的目标指令,避免由预测错误导致的性能下降。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510029541 CN1928810A (zh) | 2005-09-09 | 2005-09-09 | 带有循环跳转预测单元的微处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510029541 CN1928810A (zh) | 2005-09-09 | 2005-09-09 | 带有循环跳转预测单元的微处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1928810A true CN1928810A (zh) | 2007-03-14 |
Family
ID=37858786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510029541 Pending CN1928810A (zh) | 2005-09-09 | 2005-09-09 | 带有循环跳转预测单元的微处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1928810A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012129886A1 (zh) * | 2011-04-01 | 2012-10-04 | 中兴通讯股份有限公司 | 一种跳转指令编码的方法和系统 |
CN112445520A (zh) * | 2019-08-27 | 2021-03-05 | 无锡江南计算技术研究所 | 针对循环内条件转移指令的转移预测优化方法 |
-
2005
- 2005-09-09 CN CN 200510029541 patent/CN1928810A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012129886A1 (zh) * | 2011-04-01 | 2012-10-04 | 中兴通讯股份有限公司 | 一种跳转指令编码的方法和系统 |
CN112445520A (zh) * | 2019-08-27 | 2021-03-05 | 无锡江南计算技术研究所 | 针对循环内条件转移指令的转移预测优化方法 |
CN112445520B (zh) * | 2019-08-27 | 2022-11-15 | 无锡江南计算技术研究所 | 针对循环内条件转移指令的转移预测优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108287730B (zh) | 一种处理器流水线装置 | |
CN103150146B (zh) | 基于可扩展处理器架构的专用指令集处理器及其实现方法 | |
CN1095115C (zh) | 在超标量处理器中检测和执行俘获的装置 | |
CN104731719B (zh) | 一种缓存系统和方法 | |
CN86107934A (zh) | 具有指令预取转向中断服务的数据处理器控制部件 | |
CN1189816C (zh) | 具有分支控制的数据处理系统及其方法 | |
JP5815596B2 (ja) | プロシージャリターンシーケンスを加速するための方法およびシステム | |
CN1437725A (zh) | 多线程流水线指令解码器的方法和设备 | |
CN109101276B (zh) | 在cpu中执行指令的方法 | |
CN101078979A (zh) | 具有多通道指令预取功能的存储控制电路 | |
CN102662640B (zh) | 双重分支目标缓冲器和分支目标处理系统及处理方法 | |
US20050240752A1 (en) | Thread changeover control apparatus | |
CN111124493A (zh) | 一种cpu中用于减少程序跳转开销的方法及电路 | |
CN1928810A (zh) | 带有循环跳转预测单元的微处理器 | |
US20050102659A1 (en) | Methods and apparatus for setting up hardware loops in a deeply pipelined processor | |
US7941646B2 (en) | Completion continue on thread switch based on instruction progress metric mechanism for a microprocessor | |
CN116048627B (zh) | 指令缓冲方法、装置、处理器、电子设备及可读存储介质 | |
US7234046B2 (en) | Branch prediction using precedent instruction address of relative offset determined based on branch type and enabling skipping | |
CN208580395U (zh) | 一种处理器流水线结构 | |
CN112148366A (zh) | 一种芯片降低功耗提升性能的flash加速方法 | |
US9135011B2 (en) | Next branch table for use with a branch predictor | |
US20080065870A1 (en) | Information processing apparatus | |
US8351508B1 (en) | Multithreaded descriptor based motion estimation/compensation video encoding/decoding | |
US20220121446A1 (en) | Quick predictor override | |
CN111190644A (zh) | 一种嵌入式Flash片上读指令硬件加速方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |