欢迎来到专利查询网! | 帮助中心 查专利用我们更专业!
专利查询网
换一换
首页 专利查询网 > 资源分类 > PDF文档下载
分享到微信 分享到微博 分享到QQ空间

循环预测器指导的循环缓冲器.pdf

  • 资源ID:507108       资源大小:3.47MB        全文页数:22页
  • 资源格式: PDF        下载积分:30金币
快捷下载 游客一键下载
账号登录下载
三方登录下载: 微信开放平台登录 QQ登录
下载资源需要30金币
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

循环预测器指导的循环缓冲器.pdf

1、10申请公布号CN104298488A43申请公布日20150121CN104298488A21申请号201410512577022申请日20140929G06F9/3220060171申请人上海兆芯集成电路有限公司地址201203上海市张江高科技园区金科路2537号301室72发明人陈国华杨梦晨高新宇巩凡工黄振华74专利代理机构北京市柳沈律师事务所11105代理人钱大勇54发明名称循环预测器指导的循环缓冲器57摘要循环预测器训练分支指令来确定循环的经训练的循环计数。当循环适合于指令缓冲器时,处理器停止从指令高速缓存取指,将循环指令从缓冲器发送到执行引擎而不从高速缓存取指循环指令,维持一循环弹

2、出计数,其指示分支指令从指令缓冲器被发送到执行引擎的次数,并且当循环弹出计数小于经训练的循环计数时预测分支指令为被采用,否则,则预测为不被采用。51INTCL权利要求书3页说明书11页附图7页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书11页附图7页10申请公布号CN104298488ACN104298488A1/3页21一种处理器,包括指令高速缓存;执行引擎;指令缓冲器;以及循环预测器,其中训练分支指令来确定循环的经训练的循环计数,其中该循环包括以该分支指令的目标开始并且以该分支指令结束的指令序列;以及判断该循环的尺寸是否不大于该指令缓冲器的尺寸;并且其中,当该循环的

3、尺寸不大于该指令缓冲器的尺寸时,处理器停止从该指令高速缓存取指;将循环指令从该指令缓冲器发送到该执行引擎而不从该指令高速缓存取指该些循环指令;维持一循环弹出计数,其指示将该分支指令从该指令缓冲器发送到该执行引擎而不从该指令高速缓存取指的次数;以及当该循环弹出计数小于该经训练的循环计数时,预测该分支指令为被采用,否则,则预测该分支指令为不被采用。2如权利要求1所述的处理器,进一步包括其中,当该循环的尺寸大于该指令缓冲器的尺寸时,处理器从该指令高速缓存取指该些循环指令,解码该些循环指令并将其发送到该执行引擎;维持一循环取指计数,其指示从该指令高速缓存取指该分支指令的次数;以及当该循环取指计数小于该

4、经训练的循环计数时,预测该分支指令为被采用,否则,则预测该分支指令为不被采用。3如权利要求2所述的处理器,进一步包括循环取指表,保存多个经训练的分支指令的每个的各自的循环取指计数。4如权利要求1所述的处理器,其中循环预测器进一步包括经训练的循环计数寄存器,该经训练的循环计数寄存器存储要与该循环弹出计数比较的该经训练的循环计数的经流水线向下输送的版本。5如权利要求1所述的处理器,其中该循环弹出计数达到阈值,该处理器在该分支指令之后的顺序下一指令处恢复从该指令高速缓存取指;其中该阈值是该经训练的循环计数减去AC/B;其中A是该处理器从该指令高速缓存获取指令、解码指令并将指令提供给该指令缓冲器所需要

5、的处理器时钟周期的预定数量;其中B是该些循环指令的数量;以及其中C是每个时钟周期该处理器能够从该指令缓冲器发送到该执行引擎的指令的数量。6如权利要求1所述的处理器,其中该指令缓冲器保存已经从该指令高速缓存取指然后被解码但是尚未发送到该执行引擎的指令。7如权利要求1所述的处理器,进一步包括循环弹出表,其保存多个经训练的分支指令的每个的各自的循环弹出计数。权利要求书CN104298488A2/3页38如权利要求1所述的处理器,进一步包括经训练的循环计数表,其保存用于多个经训练的分支指令的每个的各自的经训练的循环计数。9如权利要求1所述的处理器,进一步包括分支高速缓存,包括多个条目,其中所述多个条目

6、中的每个条目保存基于先前的该分支指令的运行的历史的该分支指令的预测;以及标志,用以指示该分支指令是否是具有该经训练的循环计数的经训练的分支指令;并且其中当所述标志该指示分支指令是该经训练的分支指令时,处理器使用该经训练的循环计数来预测该分支指令,否则,则使用该分支高速缓存的预测。10一种通过具有指令高速缓存、指令缓冲器和执行引擎的处理器执行的方法,该方法包括训练分支指令来确定循环的经训练的循环计数,其中该循环包括以该分支指令的目标开始并且以该分支指令结束的指令序列;判断该循环的尺寸是否不大于该指令缓冲器的尺寸;以及当该循环的尺寸不大于该指令缓冲器的尺寸时停止从该指令高速缓存取指;将循环指令从该

7、指令缓冲器发送到执行引擎而不从该指令高速缓存取指该些循环指令;维持一循环弹出计数,其指示该分支指令从该指令缓冲器被发送到该执行引擎而不从该指令高速缓存取指的次数;以及当该循环弹出计数小于该经训练的循环计数时,预测该分支指令为被采用,否则,则预测该分支指令为不被采用。11如权利要求10所述的方法,进一步包括当该循环的尺寸不大于该指令缓冲器的尺寸时从该指令高速缓存取指该些循环指令,解码该些循环指令并将其发送到该执行引擎;维持一循环取指计数,其指示从该指令高速缓存取指该分支指令的次数;以及当该循环取指计数小于该经训练的循环计数时,预测该分支指令为被采用,否则,则预测该分支指令为不被采用。12如权利要

8、求10所述的方法,其中当该循环的尺寸不大于该指令缓冲器的尺寸时,该方法进一步包括将该经训练的循环计数经流水线向下输送,并且将该经流水线向下输送的经训练的循环计数与该循环弹出计数比较。13如权利要求10所述的方法,进一步包括当循环弹出计数达到阈值时,在该分支指令之后的顺序下一指令处恢复从该指令高速缓存取指;其中该阈值是该经训练的循环计数减去AC/B;其中A是该处理器从该指令高速缓存获取指令、解码指令并将指令提供给该指令缓冲器所需要的处理器时钟周期的预定数量;权利要求书CN104298488A3/3页4其中B是该些循环指令的数量;以及其中C是每个时钟周期该处理器能够从该指令缓冲器发送到该执行引擎的

9、指令的数量。14如权利要求10所述的方法,进一步包括在该指令缓冲器中保存已经从该指令高速缓存取指然后解码但尚未发送到该执行引擎的指令。15如权利要求10所述的方法,其中该处理器还包括分支高速缓存,该分支高速缓存包括多个条目,其中所述多个条目中的每个条目保存基于先前的该分支指令的运行的历史的该分支指令的预测,以及用以指示该分支指令是否是具有该经训练的循环计数的经训练的分支指令的标志;其中所述方法进一步包括当所述标志指示该分支指令是该经训练的分支指令时,使用该经训练的循环计数来预测该分支指令,否则,则使用该分支高速缓存的预测。权利要求书CN104298488A1/11页5循环预测器指导的循环缓冲器

10、技术领域背景技术0001计算机程序普遍包含循环。循环是通常被称为循环本体的、重复地运行的指令序列,该循环本体重复地运行直到导致循环退出并进行到接着该循环的下一条指令的条件CONDITION发生为止。在机器语言级别,一般来说,循环以通常回到位于循环本体的开始处的指令的条件分支指令来结束,但是当条件发生时,循环不再被采用NOTTAKEN并且向下执行顺序的下一条指令。例如,条件可以是被初始化为正值然后通过循环每次递减的变量达到0。0002对于现代处理器,循环呈现潜在的性能问题,因为它们包括条件分支指令,尤其是对于流水线和/或超标量处理器。一般而言,为了足够快地取指和解码指令以将它们提供给运行指令的处

11、理器的功能单元,取指单元必须预测指令流中条件分支指令的存在并预测它们的结果,即,它们是将被采用TAKEN或是不被采用NOTTAKEN以及它们的目标地址。如果条件分支指令被误预测,则误预测必须被纠正,当流水线的前端开始在被纠正的地址处取指和解码指令时,会造成执行单元由于缺乏要执行的指令而饥饿的一个时段,常被称作流水线气泡。另外,对执行发生之前的所获取的指令的解码可能是复杂的,尤其对于一些指令集架构,并且因此引入的延迟也可能导致流水线气泡。0003现代处理器中另外关心的是功耗。这在很多环境中是存在的。例如,在诸如移动电话或笔记本电脑或平板电脑的电池供电的环境中,总是希望减少处理器功耗以便延长所需要

12、的电池再充电之间的时间。又例如,在服务器环境中,除了环境考虑之外,相对大的确实有时候巨大的数量的服务器导致功耗方面非常显著的成本。如上面讨论的,包括循环本体指令的指令解码可能是复杂的,因此除了由取指逻辑和从其获取指令的指令高速缓存以及预测所获取的循环的条件分支指令的分支预测器所消耗的功率之外,解码逻辑需要消耗相当大量的功率。0004因此,理想的是提供一种装置用于处理器在运行循环时提高性能和/或减少功耗。发明内容0005在本发明的一方面中提供了一种处理器。处理器包括指令高速缓存、执行引擎、指令缓冲器和循环预测器。循环预测器训练TRAIN分支指令来确定循环的经训练的循环计数。循环包括以分支指令的目

13、标开始并以该分支指令结束的指令序列。循环预测器还判断循环的尺寸是否不大于指令缓冲器的尺寸。当循环的尺寸不大于指令缓冲器的尺寸时,处理器停止从指令高速缓存取指,将循环指令从指令缓冲器发送到执行引擎而不从指令高速缓存取指循环指令,维持一循环弹出计数,其指示分支指令从指令缓冲器被发送到执行引擎而不从指令高速缓存取指的次数,当循环弹出计数少于经训练的循环计数时预测分支指令为被采用,否则,则预测分支指令为不被采用。在另一个方面中,本发明提供了通过具有说明书CN104298488A2/11页6指令高速缓存、指令缓冲器和执行引擎的处理器执行的方法。该方法包括训练分支指令来确定循环的经训练的循环计数。循环包括

14、以分支指令的目标开始并以分支指令结束的指令序列。该方法还包括判断循环的尺寸是否不大于指令缓冲器的尺寸。该方法还包括,当循环的尺寸不大于指令缓冲器的尺寸时停止从指令高速缓存取指,将循环指令从指令缓冲器发送到执行引擎而不从指令高速缓存取指循环指令,维持一循环弹出计数,其指示分支指令从指令高速缓存发送到执行引擎而不从指令高速缓存取指的次数,当循环弹出计数少于经训练的循环计数时预测分支指令为被采用,否则,则预测分支指令为不被采用。0006本发明的上述处理器及其执行方法在循环缓冲器模式中利用循环预测器结合指令缓冲器工作的方式来潜在地精确预测循环退出,从而避免不具有循环预测器指导的循环缓冲器模式操作的优点

15、的常规处理器所经历的误预测。附图说明0007图1是示出处理器的框图。0008图2是示出图1的循环预测器的框图。0009图3是示出图1的处理器的操作的流程图。0010图4是示出图1的处理器的操作的流程图。0011被统称为图5的图5A和5B是示出图1的处理器的操作的流程图。0012图6是进一步示出根据替换实施例的图1的处理器的操作的流程图。0013图7是作为示例示出向图1的执行引擎提供嵌套循环的指令的工作在循环缓冲器模式中的图1的指令缓冲器的框图。具体实施方式0014现在参照图1,显示了示出处理器100的框图。处理器100包括取指单元108,其控制从指令高速缓存104的指令的获取,这些指令被提供到

16、指令解码单元118。解码单元118将经解码的指令提供到指令缓冲器114,在此也被称为循环缓冲器LOOPBUFFER114,指令缓冲器114将指令提供给执行引擎112用于执行。取指单元108耦接到解码单元118、指令缓冲器114和执行引擎112。处理器100还包括多个分支预测器。在一个实施例中,分支预测器包括分支历史表116、分支目标地址高速缓存BRANCHTARGETADDRESSCACHE,BTAC106和循环预测器102,其中每个耦接到取指单元108。循环预测器102还耦接到解码单元118、指令缓冲器114和执行引擎112。0015对本公开来说,一个循环是以一后向分支的条件分支指令结束并且

17、以该条件分支指令的目标指令即,条件分支指令分支所到的指令开始的指令序列。条件分支指令可以被称为循环分支指令。循环的迭代ITERATION指的是循环的全部指令的单次运行。循环的执行例程EXECUTIONINSTANCE指的是运行多次迭代直到由于它的循环分支指令的不被采用的方向而退出循环为止。如在此描述的,循环预测器102被有利地用于预测循环的退出,并且从而避免分支误预测及其伴随的性能损失。有利地,循环预测器102可以在两种模式中的每种中被用来预测循环的退出。在第一种模式中,循环太大而不能适合于循环缓冲器114,所以循环指令在被提供给执行引擎112之前被重复地从指令高速缓存104获取并通过解码单元

18、118解码。每次从指令高速缓存104获取循环分支指令时,循环预测器102说明书CN104298488A3/11页7就进行预测它是否将被采用TAKENORNOTTAKEN。循环预测器102跟踪在当前的循环执行例程期间该循环分支指令已经被执行的次数,并且也知道在循环的前一个LAST执行例程期间它被采用的次数,并且使用此信息来进行预测。在被称为“循环缓冲器模式”LOOPBUFFERMODE的第二种模式中,已经解码的循环的指令之大小可以适合于循环缓冲器114,并且从循环缓冲器114中被弹出POP用于提供给执行引擎112,而不需要重复地从指令高速缓存104中获取并通过解码单元118解码。在循环缓冲器模式

19、中,当循环分支指令从循环缓冲器114中弹出的次数已经达到在循环的前一个执行例程期间它被采用的次数之后,循环预测器102则指示循环缓冲器退出循环。0016取指单元108将指令指针或程序计数器值提供给指令高速缓存104来存取指令高速缓存104。作为响应,指令高速缓存104将指令字节区块提供给解码单元118。在一个实施例中,该区块是每个时钟周期16字节。一般而言,取指单元108取指顺序的下一指令区块;然而,在分支指令的情况中,取指单元108在分支指令的目标地址处取指指令区块。该分支目标地址可以由分支预测器102/106/116之一的预测而提供,或者在诸如为了纠正分支误预测而由执行引擎112提供。00

20、17分支历史表116存储用于先前运行的分支指令的被采用/不被采用T/NT预测,也被称为分支方向或方向。在一个实施例中,分支历史表116通过分支指令在指令高速缓存104中的获取地址与分支历史图案的布尔异或的值来索引,其中之前执行的N个分支指令中的每一个在该分支历史图案中包含一个比特,其中N是预定值,并且每个比特指示该分支指令是否被采用。在一个实施例中,分支历史表116包括与多个分支指令对应的饱和计数器,并且每个饱和计数器在当分支被采用时递增计数COUNTUP,而当分支不被采用时递减计数COUNTDOWN,并且T/NT预测基于计数器的值。0018循环预测器102存储用于先前运行的循环分支指令的一经

21、训练的循环计数,其可以用于进行先前被识别为循环分支指令的条件分支指令的T/NT预测。循环分支指令是在指令流中后向分支的条件分支指令。因此,循环分支指令在程序次序上出现在循环的末尾。例如,条件分支指令可以是包括有符号偏移的相对跳转指令,所述有符号偏移被添加到条件分支指令的指令指针值来计算分支目标地址。优选地,另外,条件分支指令在最近一次的循环执行例程中被采用的次数达到一阈值次数,才有资格被称为循环分支指令。所述经训练的循环计数指示在循环的前一个执行例程期间该循环分支指令被采用的次数,其可能是对于在循环的下一个执行例程中将采用的循环分支指令的次数的有用指示。例如,如果该经训练的循环计数是37,那么

22、循环预测器102可以预测该循环分支指令在它从指令高速缓存104被取指的前37次都将被采用,并且循环预测器102可以预测循环分支指令在它被取指的第38次将不被采用,即,循环预测器102可以预测循环将退出。0019有利地,循环预测器102也可以用在处理器100的循环缓冲器模式中。在循环缓冲器模式中,处理器100检测到它正在运行一全部暂存于循环缓冲器114中的循环。因此,处理器100停止从指令高速缓存104取指。替代为,处理器100从循环缓冲器114弹出已经解码的循环指令,用于提供给执行引擎112。有利地,循环预测器102可以用类似于循环预测器102预测从指令高速缓存104取指的循环分支指令的方向通

23、常因为循环太大而不能适合于循环缓冲器114,所以处理器100不工作在循环缓冲器模式中时所用的方式,来预测从循环缓冲器114弹出的循环分支指令何时将被采用或不被采用。有利地,当处理器说明书CN104298488A4/11页8100工作在二者的任何模式中时,循环预测器102都可以用来预测循环分支指令的方向。下面相对于图2更详细地描述循环预测器102,并且下面相对于其余图更详细地描述其操作。0020BTAC106存储用于先前执行的分支指令的方向预测和分支目标地址,并且提供分支指令的方向预测以及指令高速缓存104取指地址所选择的分支目标地址。BTAC106还存储与每个分支指令有关的其它信息。例如,其它

24、信息可以包括分支指令的类型,诸如指令是否是调用指令、返回指令、间接分支指令、条件有关分支指令、非条件有关分支指令或者循环分支指令,如在此描述的。有利地,在一个实施例中,额外的信息还包括一经训练的循环分支标志参照图2作为经训练的循环分支标志278,其该指示条件分支指令是否是一个经训练的循环分支指令。在一个实施例中,条件分支指令仅在它具有图2的经训练的循环计数表201中的有效的经训练的循环计数206的情况下才将其经训练的循环分支标志278置位,如下面更详细地描述的。在一个实施例中,分支历史表116通过作为指令高速缓存104的取指地址的值来索引。在一个实施例中,处理器100包括其它分支预测器,诸如基

25、于堆栈的调用/返回预测器。优选地,BTAC106提供来自分支历史表116、循环预测器102例如,经由经训练的循环分支标志278的设置值或BTAC106自身的预测是否应该被用来预测分支指令的指示。0021解码单元118解码从指令高速缓存104取指的指令。解码可以包括根据处理器100的指令集架构ISA将从指令高速缓存104接收的未分化的UNDIFFERENTIATED指令字节流打断BREAK为分立的DISTINCT指令。这也被称为指令格式化。例如,在一个实施例中处理器100是X86ISA处理器。X86ISA中的指令是可变长度,并且可以在存储器中的任何字节边界处开始。因此,X86指令可以跨越从指令高

26、速缓存104取指的多个区块。目前,X86ISA指令可以在1和15字节长之间。又例如,在一个实施例中,处理器100是高级RISC机器ARMISA处理器。在ARMISA处理器的某些模式中的指令也可以是可变长度。例如,在一些模式中,ARMISA指令可以是16比特长或32比特长。可以包括或不包括可变长度指令的其它ISA的实施例是预期的。0022通常,解码/格式化可变长度指令需要大量逻辑,这可能需要显著的功耗并且可能在提供经解码/格式化的指令给执行引擎112时造成延迟。更具体地,依赖于指令混合,解码单元118可能难以足够快地向指令缓冲器114提供经解码的指令来保持执行引擎112的高利用率。有利地,当工作

27、在循环缓冲器模式中时,循环缓冲器114可能能够以足够的速率将循环指令提供给执行引擎112来充分地利用执行引擎112,尤其是具有如在此描述的通过循环预测器102来预测循环分支指令的方向的额外优势,以避免当循环退出发生时的误预测,从而潜在地改善处理器100的性能。另外,有利地,当工作在循环缓冲器模式中时,可以节省大量电力,因为在循环缓冲器模式的操作期间中相当长的一段时间,可以临时关闭指令高速缓存104、取指单元108、分支历史表116和/或解码单元118。在一个实施例中,缓冲器未显示存在于指令高速缓存104和解码单元118之间用于缓冲指令字节的区块;当工作在循环缓冲器模式中时也可以关闭此缓冲器。0

28、023常规地,在循环缓冲器模式中的操作有效地总是预测循环分支指令将被采用,这意味着,在循环退出时,即,运行循环分支指令的最后一次,误预测将发生,这将必须由处理器100纠正。有利地,在此描述的实施例中,在循环缓冲器模式中循环预测器102结合循环缓冲器114工作来潜在地精确预测循环退出,并且从而避免不具有循环预测器指导的循环说明书CN104298488A5/11页9缓冲器模式操作的优点的常规处理器100所经历的误预测。0024解码也可以包括解码指令字节来生成额外的微架构控制比特,其随着它们流下处理器100流水线而变为指令的一部分。例如,额外的控制比特可以被执行引擎112用来减少执行引擎112所需要

29、的解码量,从而改善性能和/或功耗。无论ISA和/或微架构,处理器100可以从如在此描述的基于循环预测的循环缓冲器操作中受益。0025指令缓冲器114或循环缓冲器114从解码单元118接收经解码的指令,并且要求将它们提供给执行引擎112。优选地,指令缓冲器114包括构成一循环CIRCULAR队列的多个条目ENTRY,解码单元118将经解码的指令推入PUSH到这些条目中,并且执行引擎112将它们从这些条目中弹出POP。推送指针被维持用以指向指令被推入到其中的下一条目,并且弹出指针被维持用以指向从其弹出指令的下一条目。指针值被用来确定哪些条目是有效的,并且也用来确定指令缓冲器114何时是满的以及何时

30、是空的。在一个实施例中,循环缓冲器114的尺寸或长度是24个条目,即,循环缓冲器114能够保存24个经解码的指令。在这样的实施例中,包括24个指令或者更短的循环将可以完全适合于循环缓冲器114。循环缓冲器114的尺寸大于或小于24的其它实施例是预期的。0026指令缓冲器114还包括控制逻辑,其与循环预测器102合作地控制如在此描述的操作,诸如指针的更新。如在此描述的,当处理器100确定它遇到完全适合于循环缓冲器114的循环“完全适合”意思是循环的尺寸不大于循环缓冲器114的尺寸并且进入循环缓冲器模式时,暂停从指令高速缓存104的取指,这有利地避免循环缓冲器114中的循环指令被覆写。当进入循环缓

31、冲器模式时控制逻辑重新调整指针。具体地,弹出指针被更新为指向循环分支指令的目标。当循环预测器102有效地预测在循环迭代的末尾该循环分支指令将被采用时,控制逻辑将弹出指针更新为循环分支指令的目标。0027执行引擎112执行从指令缓冲器114接收的格式化的指令。在一个实施例中,指令缓冲器114每个时钟周期能够向执行引擎112提供多达三个指令。执行引擎112包括根据处理器100的ISA来执行指令以产生结果的执行单元。在一个实施例中,执行引擎112包括一超标量乱序运行微架构。然而,具有其它微架构的实施例也是可以预期的。在一个实施例中,执行引擎112还包括指令翻译器未显示,指令翻译器将每个格式化的ISA

32、指令翻译成被执行单元运行的一个或多个微指令。在一个实施例中,处理器100包括微指令缓冲器,指令翻译器将等待被发送到执行单元的微指令写到该微指令缓冲器中。微指令缓冲器充当不同于指令缓冲器114的循环缓冲器或者除了指令缓冲器114之外的循环缓冲器的实施例是可以预期的。执行引擎112还可以包括指令结果被写入的架构状态,诸如架构寄存器集。执行引擎112还可以包括数据操作数被写到/从其读取的存储器子系统,诸如高速缓存层级和存储器次序缓冲器。0028现在参照图2,显示更详细地示出图1的循环预测器102的框图。循环预测器102包括经训练的循环计数表201、循环取指计数器234、循环弹出计数器254、经训练的

33、循环计数寄存器242和训练计数器264。图2中还显示了经训练的循环分支标志278。经训练的循环分支标志278表示多个经训练的循环分支标志278。经训练的循环分支标志278优选地存储在与各个分支指令对应的BTAC106的条目中,并且当根据包括各个分支指令的指令高速缓存104区块的取指地址对BTAC106进行存取时,经训练的循环分支标志278被提供给循环预测器102的控制逻辑262。如在此描述的,控制逻辑262按照需要来清除和/或说明书CN104298488A6/11页10增加循环取指计数器234、循环弹出计数器254和训练计数器264。优选地,控制逻辑262包括组合和时序逻辑,其可以包括状态机器

34、。0029经训练的循环计数表201包括多个条目,每个条目包括有效比特202、标签204和经训练的循环计数206。按照需要使用训练计数器264的值来更新给定条目的该经训练的循环计数206,如下面参照图3描述的。经训练的循环计数表201通过条件分支指令地址212的索引214部分来索引。通常,当经训练的循环计数表201被读取时,分支指令地址212是用来存取指令高速缓存104和BTAC106的指令指针,例如,如在下面描述的图5的框503。通常,当经训练的循环计数表201被写入时,分支指令地址212是使用中的分支指令的地址,例如,如在下面描述的图3的框312或图4的框404处。在一些实施例中,经训练的循

35、环计数表201可以是直接映射的或集合关联的。通过第一比较器208将条件分支指令地址212的标签216部分与所选择的条目的标签204比较来生成被提供给控制逻辑262的命中HIT信号218。通过第二比较器232将所选择的经训练的循环计数206与循环取指计数器234比较来生成提供给2输入复用器272的一个输入端的第一采用/不采用T/NT指示符236。所选择的经训练的循环计数206还被提供给一经训练的循环计数寄存器242,该经训练的循环计数寄存器242存储当处理器100处于循环缓冲器模式中时使用的经训练的循环计数206的经流水线向下输送的版本PIPEDDOWNVERSION。在一个实施例中,经训练的循

36、环计数寄存器242包括用于存储多个经训练的循环计数206的多个寄存器242。通过第三比较器252将存储在经训练的循环计数寄存器242中的经训练的循环计数206的经流水线向下输送的版本与循环弹出计数器254比较来生成提供给2输入复用器272的另一输入端的第二T/NT指示符256。由控制逻辑262生成的模式指示符274控制复用器272选择输入之一以输出提供给控制逻辑262的第三T/NT指示符276。当处理器100在循环缓冲器模式下面会更详细地描述中时,控制逻辑262生成模式指示符274的值来使得复用器272选择第三比较器252的输出,否则生成模式指示符274的值来使得复用器272选择第二比较器23

37、2的输出。下面参照其余图来更详细地描述循环预测器102的操作。0030现在参照图3,显示了示出图1的处理器100的操作的流程图。流程在框302处开始。0031在框302处,执行引擎112运行后向分支的条件分支指令。即,执行引擎112确定分支指令的正确的方向和正确的目标地址。优选地,如果分支指令被误预测,即,正确的方向和目标地址不匹配于预测的方向和目标地址,则执行引擎112纠正误预测。更具体地,执行引擎112使得处理器100的前端被刷新FLUSH,并且使得取指单元108在正确的目标地址处开始取指。另外,执行引擎112将分支指令的执行通知循环预测器102。流程进行到判定框304。0032在判定框3

38、04,循环预测器102从执行引擎112确定分支指令的正确方向是否被采用。如果被采用,则流程进行到框306;否则,流程进行到判定框308。0033在框306处,循环预测器102增加训练计数器264。流程在框306处结束。0034在判定框308处,循环预测器102确定分支指令是否满足循环分支的标准。优选地,如果该分支指令后向分支,且经训练的循环计数表201没有包括用于该分支指令的条目,并且训练计数器264的值足够大,则该分支指令满足循环分支标准。例如,在一个实施例中,训练计数器264的值必须至少为24。在一个实施例中,为了满足循环分支标准,循环说明书CN104298488A107/11页11预测器

39、102还必须确定对于该循环的至少N个连续的例程都具备相同的训练计数器264值。在一个实施例中,例如N是3。在另一个实施例中,例如N是7。如果分支指令满足标准,流程进行到框312;否则,流程结束。0035在框312处,循环预测器102在经训练的循环计数表201中分配条目。优选地,循环预测器102基于分支指令地址212的索引部分214来分配条目。优选地,分配条目包括设置条目的有效比特202。循环预测器102还使用分支指令地址212的标签部分来填充所分配的条目的标签字段204,并且使用训练计数器264值来填充所分配的条目的经训练的循环计数字段206。流程进行到框314。0036在框314处,循环预测

40、器102使得在与分支指令相关的BTAC106的条目中的经训练的循环分支标志278被设置。流程在框314处结束。0037现在参照图4,显示了进一步示出图1的处理器100的操作的流程图。流程在框402处开始。0038在框402处,执行引擎112执行了误预测的循环分支指令并通知循环预测器102。优选地,执行引擎112知道条件分支指令是循环分支指令,因为由BTAC106提供的经训练的循环分支标志278被经流水线向下输送到执行引擎112。流程进行到框404。0039在框404处,循环预测器102使与误预测的循环分支指令对应的经训练的循环计数表201中的条目无效。另外,循环预测器102使得在与循环分支指令

41、对应的BTAC106的条目中的经训练的循环分支标志278被清除。循环分支指令可以在其循环的随后的执行例程中被再次训练。流程在框404处结束。0040现在参照由图5A和图5B组成的图5,显示了进一步示出图1的处理器100的操作的流程图。流程在框502处开始。0041在框502处,取指单元108从指令高速缓存104取指分支指令。同时,以用于存取指令高速缓存104的取指地址来存取BTAC106。响应地,BTAC106向取指单元108提供分支指令的预测,并且向循环预测器102提供所取指的分支指令的经训练的循环分支标志278。流程进行到框503。0042在框503处,假设分支指令是循环分支指令并且存在一

42、经训练的循环计数206可用,循环预测器102从分支指令的经训练的循环计数表201获得其经训练的循环计数206。流程进行到判定框504。0043在判定框504处,循环预测器102通过判断经训练的循环分支标志278是否被设置来确定所取得的分支指令是已经被训练的循环分支。如果如此,则流程进行到判定框508;否则,流程进行到框506。0044在框506中,取指单元108使用由BTAC106和/或分支历史表116所提供的预测来预测分支指令。流程在框506处结束。0045在判定框508处,循环预测器102确定循环取指计数器234是否已经被分配用于该循环分支指令。如果如此,则流程进行到框514;否则,流程进

43、行到框512。0046在框512处,针对该循环分支指令,循环预测器102分配一循环取指计数器234。分配循环取指计数器包括将它重置为0。在一个实施例中,只存在一个循环取指计数器234,所以分配循环取指计数器234仅包括重置它。然而,在另一实施例中,循环预测器102包括保存多个循环取指计数器的一循环取指计数器表,在这种情况下分配循环取指计数器234说明书CN104298488A118/11页12包括选择表条目之一。优选地,该循环取指计数器表中的不同循环取指计数器通过它们各自的循环分支地址来区分。这可以适用于嵌套循环NESTEDLOOPS,该嵌套循环的多个循环分支指令均可以通过循环预测器102精确

44、地预测。流程进行到框514。0047在框514处,循环预测器102增加所分配的循环取指计数器234。流程进行到框518。0048在框518,循环预测器102确定循环的长度或尺寸。优选地,指令缓冲器114的控制逻辑为指令缓冲器114中的每个指令维持一指令指针值或一程序计数器值。如下所述,循环预测器102使用这些指令指针值来找到循环分支指令的目标指令并确定循环的尺寸。优选地,循环预测器102将BTAC106提供的循环分支指令的目标地址与所维持的指令指针值进行比较来找到匹配。在指令缓冲器114中具有匹配于该目标地址的指令指针值的、按程序次序最新的指令便是循环分支指令的目标指令。然后,循环预测器102

45、减去考虑指令缓冲器114的循环性质循环分支指令的索引和匹配的目标指令的索引来计算该循环的长度。流程进行到判定框522。0049在判定框522处,循环预测器102基于在框518处确定的长度和指令缓冲器114的尺寸来确定循环是否适合于指令缓冲器114。如果循环的尺寸不大于指令缓冲器114的尺寸,则流程进行到框532;否则,流程进行到判定框524。0050在判定框524处,循环预测器102确定在框514处增加的循环取指计数器234的值是否小于在框503处获得的经训练的循环计数206的值。如果循环取指计数器234的值小于经训练的循环计数206的值,则流程进行到框526;否则,流程进行到框528。005

46、1在框526处,循环预测器102预测循环分支指令被采用,并且取指单元108重定向在由BTAC106或其它分支预测器提供的目标地址处取指。流程在框526处结束。0052在框528处,循环预测器102预测循环分支指令不被采用,并且取指单元108继续在下一连续的取指地址处取指。流程在框528处结束。0053在框532处,循环预测器102使得取指单元108停止从指令高速缓存104取指,并且使得处理器100进入循环缓冲器模式,这包括提供关于模式指示符274的值来指示如此。优选地,进入循环缓冲器模式还包括关闭处理器100流水线的前端的一些功能单元,诸如指令高速缓存104、取指单元108、解码单元118和/

47、或分支历史表116。在一个实施例中,关闭功能单元包括关闭功能单元的时钟。在一个实施例中,关闭功能单元还包括关断到功能单元的电源,尤其是如果经训练的循环计数206相当大时。在这样的实施例中,在达到经训练的循环计数206之前将电源恢复到这些功能单元。流程进行到框534。0054在框534,在框503获得的经训练的循环计数206与循环分支指令一起被经流水线向下输送,以便它可以在循环缓冲器模式期间与循环弹出计数器比较,如下面描述。优选地,经流水线向下输送的经训练的循环计数206被存储在图2的经训练的循环计数寄存器242中。流程进行到框536。0055在框536,循环预测器102将循环分支指令推入到指令

48、缓冲器114中。这里值得注意的是,循环本体指令已经在指令缓冲器114中。流程进行到框538。0056在框538处,循环预测器102分配循环弹出计数器254用于该循环分支指令。分配循环弹出计数器包括将它重置为0。在一个实施例中,只存在一个循环弹出计数器254,所以分配循环弹出计数器254仅包括重置它。然而,在另一实施例中,循环预测器102包括说明书CN104298488A129/11页13保存多个循环弹出计数器的一循环弹出计数器表,在这种情况下分配循环弹出计数器254包括选择表条目之一。优选地,循环弹出计数器表中的不同循环弹出计数器通过它们各自的循环分支地址来区分。这可以适用于可适合T于循环缓冲

49、器114之内的嵌套循环NESTEDLOOPS,该嵌套循环的多个循环分支指令均可以通过循环预测器102精确地预测,如下面相对于图7描述的。流程进行到框542。0057在框542,工作在循环缓冲器模式中的处理器100从指令缓冲器114中弹出从循环分支指令的目标处开始的循环本体的指令,并且将它们发送到执行引擎112用于执行。优选地,在框518处确定的循环的长度被提供给循环缓冲器114的控制逻辑,使得它知道多少指令要弹出并提供给执行引擎112包括在下面的框544的循环分支指令,也知道何时增加循环弹出计数器254在下面的框546处。流程进行到框544。0058在框544,处理器100从指令缓冲器114弹出循环分支指令,并且将它发送到执行引擎112用于执行,并且通知循环预测器102。流程进行到框546。0059在框546处,循环预测器102增加在框538处分配的循环弹出计数器254,因为循环分支指令已经从指令缓冲器114弹出。流程进行到判定框548。0060在判定框548处,循环预测器102判断循环弹出计数器254的值是否小于在框534处经流水线向下输送的经训练的循环计数206的值。如果是,循环预测器102有效地预测循环分支指令被采用,并且流程返回到框542以开始循环的另一次迭代;否则,流程进行到框552。0061在框552,循环预测器102有效地预测循环分支指令不被采用,并且使得取指单元1


注意事项

本文(循环预测器指导的循环缓冲器.pdf)为本站会员(00****42)主动上传,专利查询网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知专利查询网(点击联系客服),我们立即给予删除!




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1