指令预取机构的制作方法

文档序号:6566828阅读:173来源:国知局

专利名称::指令预取机构的制作方法
技术领域
:本发明大体而言涉及处理器领域,且具体而言涉及一种用于预取处理器指令的具功率效率的方法。背景技水便携式电子装置提供各种各样的组织、计算、通讯和娱乐服务。这些装置在普及性和完善性两方面仍在继续提高。便携式电子装置发展的两个经久不变的趋势是功能越来越强且尺寸越来越小。越来越强的功能需要越来越强的计算能力一具体而言,越来越快和更强大的处理器。除提供先进的特征和功能(其需要更快的处理器)外,便携式电子装置本身的尺寸和重量也不断地縮减。这种趋势的主要影响是用于为装置中的处理器和其他电子器件供电的电池的尺寸越来越小。尽管电池技术的提高会部分地抵消所述问题,但电池尺寸的减小会对所有便携式电子装置器件、且尤其是对其嵌入式处理器施加严格的功率预算。因此,对于例如多数便携式电子装置等许多应用来说,需要进行处理器改进以提高性能及/或降低功率消耗。多数现代处理器使用管道架构,其中使分别具有多个执行步骤的连续指令交叠执行。为得到最大性能,所述指令应连续流过所述管道。任何会导致将指令自管道中冲出并随后重启动的情形都会不利地影响性能和功率消耗。所有的现实世界程序均包含条件转移指令,且条件转移指令的实际跳转行为直至在管道深处进行评估时才能获知。多数现代处理器使用某种形式的转移预测,从而在管道中较早地预测条件转移指令的跳转行为,且处理器基于所述转移预测而推测性地取回(预取)及执行指令。在确定实际的转移行为时,如果错误地预测转移,则必须自管道中冲出所述推测性取回的指令,且自正确的下一地址取回新指令。响应于错误的转移预测值来预取指令会不利地影响处理器性能和功率消耗。熟知的转移预测技术包括静态和动态预测二者。某些转移指令的可能行为可由程序设计器及/或编译器动态预测。一实例是错误检査例行程序。多数码均正确地执行,且错误极少。因此,实施"错误转移"功能的转移指令将在极高的时间百分比中评估为"不采用"。这种指令可以在opcode中包括静态转移预测位,所述静态转移预测位是由知晓所述转移条件的最可能结果的程序设计器或编译器设定。其他转移指令可基于其运行时间属性而静态预测。举例而言,通常采用例如循环出口评估等具有负位移的转移(也就是在代码中"向后"跳转的转移),而极少采用具有正位移的转移(在代码中"向前"跳转的转移)。因此,可以静态地预测"采用"前者而"不采用"后者。动态预测一般是基于正预测的转移指令及/或相同码中的其他转移指令的转移评估历史(及在某些情况下,转移预测精确度历史)。对实际码的广泛分析显示,新近的已往转移评估型式可以较好地指示未来转移指令的评估值。作为简单转移历史预测符的一个实例,可维持多个分别由条件转移指令的地址位做索引的1位标。在所述转移评估为"采用"时设定每一旗标,且在其评估为"不采用"时使每一旗标复位。因此,所述转移预测值可仅为相关联旗标的值。对于某些转移指令而言,这一预测符可以产生精确的预测值。与使转移预测精确度最大化紧密相关的设计目标是将错误转移预测的不利影响最小化。考虑上述"错误转移"条件,其中将1位旗标作为动态转移预测符。在正常情况下,不采用所述转移,且相关联旗标保持为零,预测对将来执行所述指令"不采用"。当确实出现错误时,所述转移被错误预测且将错误指令预取至管道内。根据熟知的转移错误预测恢复方法,处理器自错误的转移预测值(其会牺牲性能且浪费功率)恢复,且设定旗标以反映所述"采用"转移。然而,转移指令的下一次执行将仍然最可能是"不采用"。在这种情况下,1位转移评估历史导致每一异常转移评估产生两次错误预测一一次是针对所述异常的,而另一次是针对转移指令的下一次执行的。一种用于将错误预测转移预估值的不利效果最小化的熟知技术是引入强或弱预测的概念一也就是用置信因数(例如,强预测或弱预测)加权的预测(也就是采用或不采用)。其简单实例是双模态转移预测符,包括由存储器访问指令地址做索引的2位饱和计数器表格。每一计数器呈现四种状态中的一种,且分别被分配一加权预测值,例如11-强预测采用10-弱预测采用Ol-弱预测不采用00-强预测不采用每当对应的转移指令评估为"采用"时,计数器均递增,而每当所述指令评估为"不采用"时,计数器均递减。在递增停止于Obll,及递减停止于0b00时,这种递增/递减达到"饱和"。因此,所述转移预测值不仅包括结果(采用或不采用),而且还包括指示预测的强度或置信度的加权因数。通过使用饱和计数器,例如上文考虑的"错误转移"等转移指令将仅出现一次错误预测,而非如在使用l位旗标预测符时出现两次错误预测。第一转移预测将使预测符自"强不采用"移至"弱不采用"。所述实际预测值为双模态,且由MSB表示。因此,转移指令的下次出现将仍被预测为"不采用",这可能是正确的。双模态饱和计数器可以是任意尺寸。举例而言,3位计数器可被分配下述预测置信强度111-极强预测采用110-强预测采用101-预测釆用100-适度地预测采用011-适度地预测不采用010-预测不采用001-强预测不采用000-极强预测不采用当然,所述标签仅作为参考项;计数器的二进制值确定转移预测置信度的强度,其中在范围的两端处置信度较高,而朝范围的中间,置信度变低。如所属
技术领域
中所熟知,饱和计数器可追踪预测精确度以及转移评估值。饱和计数器的输出可以是"一致"或"不一致"的加权值,且所述输出与静态预测值相结合以实现加权预测值。一般而言,所属
技术领域
中已知大量的转移预测方法,包括其中预测符不是用于预测转移、而是为了从两个或更多个其他的独立预测符中选择一个预测值的方法。例如,参见ScottMcFarling在1993年所作的论文"组合转移预测符(CombiningBranchPredictors)"(DigitalWesternResearchLaboratoryTechnicalNoteTN-36),其全文以引用的方式并入本文中。尽管在预测中引入置信度量度会通过随时间追踪实际转移行为而改进转移预测精确度,但实际预测值是双模态的,由MSB表示。在现有技术中,转移被预测为"采用"或"不采用",且预取从所预测的下一地址起进行,所述下一地址是转移目标地址或转移指令的下一连续地址。换句话说,不考虑预测的加权或其强度。
发明内容在一实施例中,转移预测值的加权或强度确定处理器是否遵循条件转移指令来预取指令。为强加权转移预测值预取指令。在弱加权预测值的情形中,通过停止预取并等待在管道中评估转移条件来节约处理器资源和功率。由于弱加权转移预测值可能比强加权转移预测值的精确度低,因而响应于弱加权预测值进行预取会带来更大的错误预测与后续管道冲洗可能性。弱加权预测值可完全停止预取,或另一选择为,可仅在出现高速缓存未命中(cachemiss)的情况下停止预取。一实施例涉及一种用于在具有转移预测机构的处理器中进行指令预取的方法,其中所述转移预测机构产生多个加权转移预测值中的一者。对于强加权预测值而言,在所预测的下一地址处开始预取指令。对于弱加权预测值而言,停止指令预取直至评估转移条件为止。另一实施例涉及一种处理器。所述处理器包括指令执行管道及转移预测机构,其中转移预测机构可操作以预测条件转移指令的评估值并输出加权的转移预测值。所述处理器另外包括指令预取机构,所述指令预取机构可操作以自所预测的下一地址推测性地取回指令,且响应于来自所述转移预测机构的强加权预测值而将所述指令装载至管道中、及响应于来自所述转移预测机构的弱加权预测值而停止指令预取。另一实施例涉及一种避免对管道处理器中的错误预测转移进行高速缓存线置换的方法。条件转移指令的评估是借助指示所述预测值的加权值及所述预测的精确度的置信度等级来进行预测。遵循条件转移指令推测性地访问高速缓存以得到所预测的下一地址。如果高速缓存中的访问未命中且预测值指示较低的精确置信度,则中止响应于所述未命中的高速缓存线置换。图1是处理器的功能性方块图。图2是一种具功率效率的指令预取方法的流程图。图3是一种具功率效率的高速缓存管理方法的流程图。具体实施方式图1描绘处理器10的功能性方块图。处理器10根据控制逻辑14执行指令执行管道12中的指令。在某些实施例中,管道12可以是具有多个平行管道的超标量设计。管道12包括组织成管道段的各种寄存器或锁存器16、及一个或多个算术逻辑单元(ALU)18。通用寄存器(GPR)文件20提供构成存储器层级的顶层的寄存器。管道12自指令高速缓存(I-高速缓存)22取回指令,其中由指令侧转换后备缓冲器(ITLB)24管理存储器地址转换和许可。当在管道12中较早地解码条件转移指令时,转移预测机构23预测转移行为,并将所述预测值提供给指令预取单元25。指令预取单元25自指令高速缓存22、自为"采用"的转移预测值在管道12中计算的转移目标地址、或自被预测为"不采用"的转移的下一连续地址推测性地取回指令。在任一情形中,均将预取的指令装载至管道12中供推测性地执行。自数据高速缓存(D-高速缓存)26访问数据,其中由主转换后备缓冲器(TLB)28管理存储器地址转换和许可。在各种实施例中,ITLB可包括部分TLB的副本。或者,可将ITLB与TLB相集成。类似地,在处理器10的各种实施例中,可将I-高速缓存22和D-高速缓存26相集成或联合。在存储器接口30的控制下,I-高速缓存22及/或D-高速缓存26内的未命中会引发对主(片外)存储器32的访问。处理器10可包括输入/输出(1/0)接口34,以控制对各个外围装置36的访问。所属
技术领域
的技术人员将认识到处理器10可具有多种变化形式。例如,处理器10可包括用于I与D高速缓存22、26中任一者或二者的第二级(L2)高速缓存。另外,可自特定实施例省略处理器10内所描绘的功能块中的一个或多个。如上文论述,所属
技术领域
中已知各种转移预测方法和演算法。无论作为各种转移预测符基础的结构或方法如何,均可以直观地明显看出、且可以在统计上证明,强加权预测值比弱加权预测值更精确。换句话说,与饱和计数器加权范围的中间方向的值相比,饱和计数器的更饱和值可以更精确地预测转移行为。中间值表示其新近的评估历史处于变化中的转移指令;饱和值则表示具有恒定不变的新近评估历史的转移指令。可利用强加权转移预测值与弱加权转移预测值之间精确度的此种差异,通过仅为强预测转移指令预取指令来节约管道处理器10中的功率。参照图2,解释一实例性转移预测方法。在管道12中检测条件转移指令(块40)。这通常出现于解码管线阶段中,但在某些实施例中,可将指令在装载至I高速缓存22中之前进行预解码,且管道控制逻辑14可在指令取回时立即识别条件转移指令。一旦检测到所述指令是条件转移,则立即用具有加权值的预测值来预测其评估值(例如,"采用"或"不采用")(块42)。例如,由转移预测机构23提供这一加权预测值。评估转移预测值的权重(块44),且在强加权预测值的情形中,自I-高速缓存22处预取指令并以推测方式在管道12中执行所述指令(块46)。在弱加权预测值的情形中,指令预取单元25并不预取任何指令(块4S)。而是,预取单元25停止预取,直至在管道12中已评估相关的条件转移指令且已知其实际转移行为为止。此时,自已知的合适的下一地址继续进行指令取回。实质上,这一方法通过将第三种状态或指示添加至所述预测值来变换现有技术的双模态转移预测值(也就是"采用"或"不采用")预测转移被采用并进行预取;预测转移不被采用并进行预取;或等待实际的转移条件评估。通过不从弱预测转移目标处预取指令,在预测出现错误且不得不冲洗预取指令的可能性较高(相对于强预测转移结果)时,处理器10不会浪费为预取指令及开始其推测性执行所需的功率。在强预测转移的情形中,本发明的所述方法不影响处理器性能;如所属
技术领域
中所熟知,发生预取且转移的精确度将影响性能。在弱预测转移的情形中,当停止预取时,则对处理器性能的影响取决于预测的精确度以及相关的可能的下一地址一也就是转移目标地址或下一连续地址一是否驻留于I-高速缓存22中。性能影响总结于下述表l中。<table>tableseeoriginaldocumentpage8</column></row><table>表l:对处理器性能的影响如果弱加权的转移预测值是精确的,则停止指令预取会因在管道中引入停转而降低性能。指令执行将停转(相对于已完成预取而言)达转移指令解码及转移预测与最终转移条件评估之间的管线阶段数量。在这一情形中,将不存在功率节省,因为最终将取回和执行相同的指令。然而,如果弱加权的转移预测值是错误的,则本发明的预取停止方法不仅节省功率,而且可以改进处理器性能。如果所预测的地址驻留于I-高速缓存22中,则处理器10会招致与在精确的弱加权转移预测值情况下相同的停转。然而,控制器14无需冲洗管道12并进行其他错误预测恢复操作。在错误预测的转移需要异常情况来进行恢复时,已停止指令预取呈现比预取显著提高的处理器性能。如果弱加权的转移预测值是错误的且所预测的地址并未驻留于I-高速缓存22中,则本发明的预取停止方法会节省功率且可观地改进处理器性能。在这一情形中,预取操作在I-高速缓存22中将不命中,从而导致存储器访问和高速缓存线置换。对外部存储器的访问较慢且消耗功率,从而不利地影响性能和功率管理。然而,更糟的是,所述操作将用处理器10无需执行的指令替换整个高速缓存线。这将可能在再次取回被置换的指令时导致下一次高速缓存未命中,从而要求再一外部存储器访问的延迟和功率支出。如参照图3所述,在本发明的一个实施例中,并不响应于弱加权的转移预测值而完全停止指令预取,而是仅在I-高速缓存22中出现预取未命中时停止。如上文所阐述,检测一条件转移指令(块40),并预测其评估值(块42)。如果预测值是强加权的,则自所预测的下一地址预取指令(块46)。如果所述预测值是弱加权的,则指令预取单元25访问I-高速缓存22以确定所预测的下一地址是否驻留于其中(块50)。如果所预测地址在I-高速缓存22内命中,则预取继续进行(块52)。如果预取操作在I-高速缓存22内未命中,则终止预取操作,且停止预取直至在管道12中评估转移条件为止(块54)。在这一实施例中,避免了在精确的弱加权转移预测值情形中的停止,同时仍能防止在错误的弱加权转移预测值情况下由高速缓存线置换所招致的明显性能降级。在任一给定的实施方案中,无论弱加权的转移预测值是完全地停止指令预取还是仅在出现I-高速缓存未命中的情况下停止预取,均必须界定构成"弱"或"强"预测加权的项。在其中功率节省相等且可容忍某一程度的性能降级的应用中,强加权的预测可仅包括饱和计数器的最饱和值。换句话说,从硬件角度而言,如果所有的计数器位均一致,则预测值是强加权的且激活预取;如果任何计数器位不一致,则所述预测值可被认为是弱加权的,且完全或条件性地禁止预取。在功率节省不太重要及/或性能更重要的情况下,更灵活的方法可以在强加权的定义中包括靠近以及处于饱和水平的计数器值。作为一个非限制性实例,计数器值的上25%和下25%可被视为强加权,而中间的50%被视为弱加权。对于二进制计数器而言,这种分布的硬件角度是如果两个最有效的位一致,则预测值是强加权的。另一选择为,上三分之一和下三分之一可被视为强加权,而中间的三分之一被视为弱加权。所属
技术领域
中的技术人员将易于了解,可按可适合于特定应用的各种方式来界定强加权预测值与弱加权预测值之间的区别。如本文所使用,术语强和弱及其派生术语仅作为参考术语。具体而言,其是指任一会产生加权输出的转移预测符的输出,所述加权输出指示转移预测值及所述预测值精确度的置信度等级,其中强加权是指指示高置信度的输出,且弱加权是指指示低置信度的输出。任何响应于弱加权转移预测值而完全或条件性地停止指令预取及/或推测性指令执行的处理器io均处于本发明的范围内。尽管本文已参照本发明的特定特征、方面和实施例来描述本发明,但显而易见,在本发明的广泛范围内可存在大量的变化、修改形式和其他实施例,且相应地,所有的变化、修改形式和实施例均视为处于本发明的范围内。因此,在任何方面均应将这些实施例理解为说明性实施例而非限制性实施例,且包含在随附权利要求书的含义和等效范围内的所有变化均打算涵盖在其范围内。权利要求1、一种在具有转移预测机构的处理器中进行指令预取的方法,所述转移预测机构为条件转移指令产生多个加权转移预测值中的一者,所述方法包括-针对强加权预测,在所预测的下一地址处开始预取指令;针对弱加权预测,停止指令预取,直至已评估所述转移条件为止。2、如权利要求l所述的方法,其中所述转移预测机构包括至少一个饱和计数器。3、如权利要求2所述的方法,其进一步包括将所述饱和计数器的输出与至少一个静态预测值组合以产生所述加权的转移预测值。4、如权利要求2所述的方法,其中所述饱和计数器包括n个位,且进一步包括将强加权预测定义为其中所有n个位均一致的预测,及将弱加权预测定义为其中任何位均不一致的预测。5、如权利要求2所述的方法,其中所述饱和计数器包括多于两个位,且进一步包括-将强加权预测定义为其中两个最有效位一致的预测;及将弱加权预测定义为其中所述两个最有效位不一致的预测。6、如权利要求2所述的方法,其中所述饱和计数器包括n位二进制计数器,且进一步包括-将强加权预测定义为小于或等于N且大于或等于(2M)-N的那些计数器值;及将弱加权预测定义为大于N且小于(2")-N的那些计数器值;其中N是小于或等于(272)-2的非负整数。7、如权利要求1所述的方法,其中停止指令预取直至已评估所述转移条件为止包括停止自所述处理器外部的存储器处进行指令预取。8、一种处理器,其包括指令执行管道;转移预测机构,其可操作以预测条件转移指令的评估并输出加权的转移预测值;及指令预取机构,其可操作以自所预测的下一地址推测性地取回指令,并响应于来自所述转移预测机构的强加权预测将所述指令装载至所述管道中,及响应于来自所述转移预测机构的弱加权预测而停止指令预取。9、如权利要求8所述的处理器,其中转移预测机构包括至少一个饱和计数器。10、如权利要求9所述的处理器,其中所述转移预测机构将所述饱和计数器的输出与至少一个静态预测值相组合。11、如权利要求9所述的处理器,其中所述饱和计数器包括n个位,且其中如果所有n个位均一致,则所述预测被强加权,且如果任何位均不一致,则所述预测被弱加权。12、如权利要求9所述的处理器,其中所述饱和计数器包括多于两个位,且其中如果两个最有效的位一致,则所述预测被强加权,且如果所述两个最有效的位不一致,则所述预测被弱加权。13、如权利要求8所述的处理器,其中所述指令预取机构仅在所述所预测转移目标地址在存储指令的高速缓存内未命中时响应于弱加权预测而停止指令预取。14、一种用以避免对管道处理器中的错误预测转移进行高速缓存线置换的方法,其包括借助指示所述预测的加权值及该预测的精确度的置信度等级来预测条件转移指令的评估;遵循所述条件转移指令,推测性地访问高速缓存以得到所预测的下一地址;及如果所述访问在所述高速缓存中未命中且所述预测值指示低的精确度置信度,则响应于所述未命中而中止高速缓存线置换。15、如权利要求14所述的方法,其进一步包括在所述管道中评估所述条件转移指令,及随后遵循所述条件转移指令而访问所述高速缓存以得到所评估的下一地址。16、如权利要求14所述的方法,其中借助指示所述预测的加权值及该预测的精确度的置信度等级来预测条件转移指令的所述评估包括在所述条件转移指令评估为采用时,递增饱和计数器,且在所述条件转移指令评估为不采用时,递减所述饱和计数器。17、一种用于在处理器中进行指令预取的方法,其包括-针对每一条件转移指令,确定处于自强采用至弱采用或自不采用至强不采用的范围内的额定转移预测值,及基于所述所确定的额定预测值条件性地预取指令。18、如权利要求17所述的方法,其中如果所述所确定的额定预测值是强采用或强不采用,则在预测的下一地址处预取指令;且其中如果所述额定预测值是弱采用或弱不采用,则延迟指令预取直至在所述管道中已评估所述转移条件为止。全文摘要本发明提供一种包括条件转移指令预测机构的处理器,所述条件转移指令预测机构产生加权的转移预测值。对于往往不如强加权预测精确的弱加权预测而言,通过停止指令预取来节约与推测性填充和后续冲洗高速缓存相关联的功率。当在管道中已评估转移条件且已知实际的下一地址时,指令取回继续进行。或者,预取可在高速缓存之外继续进行。为避免用基于错误预测的转移而预取的指令取代好的高速缓存数据,可响应于在高速缓存未命中时的弱加权预测而停止预取。文档编号G06F9/38GK101147127SQ200680008992公开日2008年3月19日申请日期2006年2月3日优先权日2005年2月3日发明者托马斯·安德鲁·萨托里乌斯,杰弗里·托德·布里奇斯,维克托·罗伯特·奥格斯堡,罗德尼·韦恩·史密斯,詹姆斯·诺里斯·迪芬德尔费尔,迈克尔·斯科特·麦基尔文申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1