带有循环跳转预测单元的微处理器的制作方法

文档序号:6524957阅读:159来源:国知局
专利名称:带有循环跳转预测单元的微处理器的制作方法
技术领域
本发明涉及的是一种带有循环跳转预测单元的微处理器,属于微处理器与超大规模集成电路技术领域。
背景技术
通用微处理器在工作时,所执行的指令接近六分之一是跳转指令,而跳转指令由于占用的时钟周期较多,对微处理器的性能影响很大。为了减少执行跳转指令所占用的时间,微处理器设计人员采用了各种技术,如跳转延时(BranchDelay)、跳转预测(Branch Prediction)、条件执行(Conditional execution)等等。在高性能微处理器领域,跳转预测方法被普遍采用,并在性能提升方面取得了很好的效果。但是,传统的跳转预测方法需要占用极大的硬件资源来实现,使芯片的成本提高不少,因而,在嵌入式微处理器领域,跳转预测方法很少被采用。
另一方面,很多嵌入式应用(如汽车电子、电机控制、语音处理、传真、寻呼,等等)所具有的特点是系统工作时的很大一部分时间是在执行循环(loop)操作(高级语言中表现为for语句,或者while语句),并且这些循环往往是循环体只有几条或十几条指令的小循环(或称为短循环,short loop)。如

图1所示一般应用中,微处理器有38%的时间用于执行小循环;而在属于嵌入式领域的数字信号处理应用中,这一比例会达到80%以上。因此,仅仅提高小循环的执行速度,就可以使嵌入式微处理器的性能得到很大提升。

发明内容
本发明的目的在于利用嵌入式应用的特点,单独针对小循环引入高性能微处理器才采用的跳转预测机制,克服传统跳转预测方法成本较高的缺点,以较小的代价,获得近似的预测效果及性能提升。
本发明涉及的循环跳转预测单元的工作原理基于对小循环的识别和利用。为了定义小循环,我们首先定义向后短跳转指令几乎所有的微处理器都支持的相对跳转指令。通常,相对跳转指令的编码由操作码及偏移量两部分组成(如图2所示)。操作码用于表明该指令是一条相对跳转指令(可以是条件跳转或者无条件跳转),偏移量用于表明跳转目标地址与当前程序地址的距离。我们进一步把相对跳转指令的偏移量分成高位和低位两部分,规定低位部分的长度为w,并且定义当高位部分为全′1′时,该跳转指令为向后短跳转指令。也即,向后短跳转指令是指偏移量为绝对值≤2w的负数的相对跳转指令。我们把向后短跳转指令作为识别小循环的标志,由此可以定义小循环是指指令数量不超过2w条的循环体。在以下程序范例中,循环体的最后一条指令,BL1,就是一条向后短跳转指令。而紧跟其后的那条指令In+1,称为跟随指令。
//程序范例L1A1 I1;A2 I2;AnB 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显示了在引入循环跳转预测单元之后,微处理器在各种嵌入式应用方面的性能提升。
权利要求
1.一种带有循环跳转预测单元的微处理器,其特征在指令地址产生电路中集成了跳转预测电路,用于取消程序小循环中循环指令本身的执行。该预测单元由目标地址寄存器(存放小循环第一条指令的地址)、跳转指令地址寄存器(存放循环最后一条指令的地址)、跟随指令寄存器(存放小循环体之后首条指令的地址)、偏移量低位部分锁存器(记录小循环体的指令数量),指令计数器组成(检测小循环体的结束)等组成。当预测单元发现向后短跳转指令时,记录跳转指令的地址和目标地址、循环体之后首条指令的内容、以及循环体的大小。在随后的循环执行过程中,预测单元预测到循环跳转的发生,进而提前读取目标地址的指令,避免循环跳转指令被实际执行,从而节省循环体执行的周期数。
2.一种实施权利要求1的方法的装置,其预测单元始终预测跳转条件为满足,并且在预测错误的情况下,由跟随指令寄存器提供正确的目标指令,避免由预测错误导致的性能下降。
全文摘要
一种带有循环跳转预测单元的微处理器,在微处理器指令地址产生电路内集成一个跳转预测单元,用于发现、记录程序中的小循环,并在随后的小循环反复执行过程中,预测到向后短跳转的发生,从而提前读取跳转目标地址的指令,避免了向后短跳转指令本身执行所花费的时间。预测单元由目标地址寄存器(存放小循环第一条指令的地址)、跳转指令地址寄存器(存放循环最后一条指令的地址)、跟随指令寄存器(存放小循环体之后首条指令的地址)、偏移量低位部分锁存器(记录小循环体的指令数量),指令计数器组成(检测小循环体的结束)等组成。本发明克服了传统跳转预测方法成本较高的缺点,以较小的代价,获得与传统方法接近的预测效果及性能提升。
文档编号G06F9/38GK1928810SQ20051002954
公开日2007年3月14日 申请日期2005年9月9日 优先权日2005年9月9日
发明者陈新, 顾萌 申请人:上海采微电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1