建立用于子例程返回的分支目标指令高速缓冲存储器(btic)条目以减少执行管线泡,以...的制作方法

文档序号:8531857阅读:576来源:国知局
建立用于子例程返回的分支目标指令高速缓冲存储器(btic)条目以减少执行管线泡,以 ...的制作方法
【专利说明】建立用于子例程返回的分支目标指令高速缓冲存储器(BTIC)条目以减少执行管线泡,以及相关系统、方法和计算机可读媒体
[0001]优先权申请
[0002]本申请案主张2012年11月28日申请且标题为“建立用于子例程返回的分支目标指令高速缓冲存储器(BTIC)条目以减少执行管线暂停,以及相关系统、方法和计算机可读媒体(ESTABLISHING A BRANCH TARGET INSTRUCT1N CACHE (BTIC) ENTRY FOR SUBROUTINERETURNS TO REDUCE EXECUT1N PIPELINE STALLS, AND RELATED SYSTEMS, METHODS, ANDCOMPUTER-READABLE MEDIA)的第61/730,717号美国临时专利申请案的优先权,所述美国临时专利申请案通过引用以其全文结合在此。
技术领域
[0003]本发明的技术涉及计算机系统中的分支预测,且更具体地说涉及分支目标缓冲器(BTB)和/或分支目标指令高速缓冲存储器(BTIC)。
【背景技术】
[0004]指令管线化是处理技术,通过所述技术,可通过将每一指令的处置分裂为一系列步骤且在由多个级组成的执行管线中执行所述步骤而增加处理器正执行的计算机指令的处理量。如果执行管线中的所有级能够同时处理指令而当指令重定向发生时不会带来管线“泡”,那么可实现最佳处理器性能。在执行管线内处理的指令可包含分支指令,其通过将程序控制转移到指定分支目标指令而重定向程序的流。如果分支指令是条件性的,(即,直到执行时才知道是否将采取所述分支),那么可采用分支预测硬件来基于先前执行的条件性分支指令的解析而预测是否将采取所述分支。
[0005]在常规执行管线中,跟随分支指令的指令与所述分支指令的解码同时地被取入执行管线。因此,当预测将采取分支时,按顺序在分支指令之后获取的指令(即,在不采取所述分支的情况下将执行的指令)被清空。随后获取正确的分支目标指令。此过程通常被称作指令获取重定向。因为指令获取重定向可消耗一或多个时钟循环,所以在其中获取分支目标指令的同时解码级空闲的点处可能将一或多个管线泡引入到执行管线。一旦被引入,管线泡便传播穿过执行管线的后续级。
[0006]为了减少管线泡的频率,可利用分支目标指令高速缓冲存储器(BTIC)。BTIC存储一或多个分支目标指令(即,当采取分支时分支指令将程序控制转移到的目标地址处的指令)的副本。BTIC中高速缓冲存储的分支目标指令可经部分或完全解码。BTIC还可高速缓冲存储下一指令获取地址以用于获取在经高速缓冲存储分支目标指令之后的一或多个接着的后续指令。BTIC通常是在执行管线的获取级期间查询,且将分支目标指令提供到执行管线的一或多个后续级以减少或消除由于指令获取重定向而引入的管线泡的发生。
[0007]当辨识出分支指令且首先采取所述分支时针对所述分支指令建立BTIC条目。因此,当首次遇到分支指令时,BTIC条目对于所述分支指令并不存在,且BTIC高速缓冲存储器“未中”发生。在子例程返回指令(特定类型的分支指令)的特定情况中,当首先遇到子例程返回指令时,所述子例程返回指令将始终经历BTIC高速缓冲存储器未中。希望当首次遇到子例程返回指令时对应于所述子例程返回指令的BTIC条目提供正确的分支目标指令。
[0008]此外,因为子例程可能从程序内的不同点处的多个分支指令调用,所以用于子例程返回指令的BTIC条目可能经常含有不正确的分支目标指令。举例来说,当从第一调用位置调用的子例程返回时,按顺序在所述第一调用位置之后的指令执行且填充于用于子例程返回指令的BTIC条目中作为分支目标指令。如果随后从第二调用位置调用子例程,那么在子例程返回之后应执行按顺序在所述第二调用位置之后的指令。然而,在用于子例程返回指令的BTIC条目中高速缓冲存储的分支目标指令是跟随第一调用位置的指令,而不是跟随第二调用位置的指令。因此,子例程返回指令的BTIC条目不含有用于第二调用位置的正确分支目标指令。希望即使在从不同调用位置调用子例程之后子例程返回指令的BTIC条目也提供正确的分支目标指令。

【发明内容】

[0009]本发明的实施例提供建立用于子例程返回指令的分支目标指令高速缓冲存储器(BTIC)条目以减少执行管线泡。还揭示相关系统、方法及计算机可读媒体。常规地,响应于检测到预测将采取的分支指令,将已经获取的按顺序在所述分支指令之后(按编程次序)的指令从执行管线清空。然而,当分支指令是子例程调用指令时,那些清空的顺序指令很可能是将从由子例程调用指令调用的子例程转移回程序控制的用于所述子例程返回指令的分支目标指令。因此,本文所揭示的实施例提供响应于检测到子例程调用指令而建立用于子例程返回指令的BTIC条目。以此方式,BTIC可当首先遇到子例程返回指令时提供用于子例程返回指令的有效BTIC条目。此外,即使当从不同于先前调用位置的调用位置调用子例程时,BTIC条目也可提供用于子例程返回指令的正确分支目标指令。
[0010]在此方面,在一个实施例中,提供建立在执行管线中用于子例程返回指令的BTIC条目以减少执行管线泡的发生的方法。所述方法包括检测执行管线中的子例程调用指令。响应于检测到子例程调用指令,所述方法进一步包括通过将按顺序在子例程调用指令之后获取的至少一个顺序指令写入作为用于子例程返回指令的BTIC条目中的分支目标指令,来建立用于子例程返回指令的BTIC条目。所述方法还包括计算下一指令获取地址。所述方法另外包括将下一指令获取地址写入到用于子例程返回指令的BTIC条目中的下一指令获取地址字段中。以此方式,即使首次遇到子例程返回指令或从不同于先前调用位置的调用位置调用子例程,BTIC也可提供正确分支目标指令和用于子例程返回指令的下一指令获取地址数据。
[0011 ] 在另一实施例中,提供管线泡减少电路。所述管线泡减少电路包括子例程调用检测电路,其经配置以检测执行管线中的子例程调用指令。所述管线泡减少电路进一步包括BTIC条目建立电路,其经配置以响应于所述子例程调用检测电路检测到所述子例程调用指令而将按顺序在所述子例程调用指令之后获取的至少一个顺序指令写入作为用于子例程返回指令的BTIC条目中的分支目标指令。所述BTIC条目建立电路进一步经配置以计算下一指令获取地址。所述BTIC建立电路还经配置以将所述下一指令获取地址写入到用于所述子例程返回指令的所述BTIC条目中的下一指令获取地址字段中。
[0012]在另一实施例中,提供管线泡减少电路。所述管线泡减少电路包括用于检测执行管线中的子例程调用指令的装置。所述管线泡减少电路进一步包括用于响应于检测到所述子例程调用指令而建立用于子例程返回指令的BTIC条目的装置。所述用于建立BTIC条目的装置包括用于响应于检测到所述子例程调用指令而将按顺序在所述子例程调用指令之后获取的至少一个顺序指令写入作为用于所述子例程返回指令的所述BTIC条目中的分支目标指令的装置。所述用于建立BTIC条目的装置还包括用于响应于检测到所述子例程调用指令而计算下一指令获取地址的装置。所述用于建立BTIC条目的装置另外包括用于响应于检测到所述子例程调用指令而将所述下一指令获取地址写入到用于所述子例程返回指令的所述BTIC条目中的下一指令获取地址字段中的装置。
[0013]在另一实施例中,提供非暂时性计算机可读媒体,其具有存储于其上的计算机可执行指令以致使处理器实施建立用于执行管线中的子例程返回指令的BTIC条目以减少管线泡的发生的方法。由所述计算机可执行指令实施的方法包括检测执行管线中的子例程调用指令。由所述计算机可执行指令实施的方法进一步包括响应于检测到所述子例程调用指令,通过以下操作建立用于子例程返回指令的BTIC条目:将按顺序在所述子例程调用指令之后获取的至少一个顺序指令写入作为用于所述子例程返回指令的所述BTIC条目中的分支目标指令。由所述计算机可执行指令实施的方法还包括计算下一指令获取地址。由所述计算机可执行指令实施的方法另外包括将所述下一指令获取地址写入到用于所述子例程返回指令的所述BTIC条目中的下一指令获取地址字段中。
【附图说明】
[0014]图1是包含管线泡减少电路的示范性处理器的框图,所述管线泡减少电路经配置以建立用于子例程返回指令的分支目标指令高速缓冲存储器(BTIC)条目以减少执行管线泡的发生;
[0015]图2是提供可由图1的执行管线泡减少电路处理的示范性指令序列的图;
[0016]图3是说明由图1的示范性处理器利用BTIC处理图2的示范性指令序列的时序图,其展示由于遇到预测采取的分支的管线泡的示范性发生,以及使用图1的管线泡减少电路消除管线泡;
[0017]图4A和4B是展示在处理器中利用图1的管线泡减少电路处理图2的示范性指令序列的时序图,其说明因遇到子例程返回指令而产生的管线泡的消除;
[0018]图5是展示用于建立用于子例程返回指令的BTIC条目以减少执行管线泡的发生的示范性操作的流程图;
[0019]图6是说明用于响应于检测到子例程返回指令而消耗用于子例程返回指令的BTIC条目的示范性操作的流程图;
[0020]图7A和7B是更详细说明用于建立和消耗BTIC条目以减少管线泡的发生的示范性操作的流程图;以及
[0021]图8是可包含图1的管线泡减少电路的示范性基于处理器的系统的图,其经配置以建立用于子例程返回指令的BTIC条目以减少管线泡的发生。
【具体实施方式】
[0022]现在参看各图,描述了本发明的几个示范性实施例。词语“示范性”在本文中用以意味着“充当实例、例子或说明”。本文中被描述为“示范性”的任何实施例未必应解释为比其它实施例优选或有利。
[0023]本发明的实施例提供建立用于子例程返回指令的分支目标指令高速缓冲存储器(BTIC)条目以减少执行管线泡。还揭示相关系统、方法及计算机可读媒体。常规地,响应于检测到预测将采取的分支指令,将已经获取的按顺序在所述分支指令之后(按编程次序)的指令从执行管线清空。然而,当分支指令是子例程调用指令时,那些清空的顺序指令很可能是将从由子例程调用指令调用的子例程转移回程
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1