CN101147127A - 指令预取机构 - Google Patents
指令预取机构 Download PDFInfo
- Publication number
- CN101147127A CN101147127A CNA2006800089926A CN200680008992A CN101147127A CN 101147127 A CN101147127 A CN 101147127A CN A2006800089926 A CNA2006800089926 A CN A2006800089926A CN 200680008992 A CN200680008992 A CN 200680008992A CN 101147127 A CN101147127 A CN 101147127A
- Authority
- CN
- China
- Prior art keywords
- instruction
- prediction
- branch
- value
- processor
- 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.)
- Granted
Links
- 230000007246 mechanism Effects 0.000 title claims abstract description 23
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000012546 transfer Methods 0.000 claims description 44
- 238000000034 method Methods 0.000 claims description 31
- 229920006395 saturated elastomer Polymers 0.000 claims description 21
- 230000003068 static effect Effects 0.000 claims description 7
- 230000003247 decreasing effect Effects 0.000 claims description 2
- 238000011010 flushing procedure Methods 0.000 abstract description 5
- 230000006399 behavior Effects 0.000 description 8
- 238000006073 displacement reaction Methods 0.000 description 6
- 230000002902 bimodal effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 239000003990 capacitor Substances 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005755 formation reaction Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 241000894007 species Species 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Power Sources (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种包括条件转移指令预测机构的处理器,所述条件转移指令预测机构产生加权的转移预测值。对于往往不如强加权预测精确的弱加权预测而言,通过停止指令预取来节约与推测性填充和后续冲洗高速缓存相关联的功率。当在管道中已评估转移条件且已知实际的下一地址时,指令取回继续进行。或者,预取可在高速缓存之外继续进行。为避免用基于错误预测的转移而预取的指令取代好的高速缓存数据,可响应于在高速缓存未命中时的弱加权预测而停止预取。
Description
技术领域
本发明大体而言涉及处理器领域,且具体而言涉及一种用于预取处理器指令的具功率效率的方法。
背景技术
便携式电子装置提供各种各样的组织、计算、通讯和娱乐服务。这些装置在普及性和完善性两方面仍在继续提高。便携式电子装置发展的两个经久不变的趋势是功能越来越强且尺寸越来越小。越来越强的功能需要越来越强的计算能力一具体而言,越来越快和更强大的处理器。
除提供先进的特征和功能(其需要更快的处理器)外,便携式电子装置本身的尺寸和重量也不断地缩减。这种趋势的主要影响是用于为装置中的处理器和其他电子器件供电的电池的尺寸越来越小。尽管电池技术的提高会部分地抵消所述问题,但电池尺寸的减小会对所有便携式电子装置器件、且尤其是对其嵌入式处理器施加严格的功率预算。
因此,对于例如多数便携式电子装置等许多应用来说,需要进行处理器改进以提高性能及/或降低功率消耗。多数现代处理器使用管道架构,其中使分别具有多个执行步骤的连续指令交叠执行。为得到最大性能,所述指令应连续流过所述管道。任何会导致将指令自管道中冲出并随后重启动的情形都会不利地影响性能和功率消耗。
所有的现实世界程序均包含条件转移指令,且条件转移指令的实际跳转行为直至在管道深处进行评估时才能获知。多数现代处理器使用某种形式的转移预测,从而在管道中较早地预测条件转移指令的跳转行为,且处理器基于所述转移预测而推测性地取回(预取)及执行指令。在确定实际的转移行为时,如果错误地预测转移,则必须自管道中冲出所述推测性取回的指令,且自正确的下一地址取回新指令。响应于错误的转移预测值来预取指令会不利地影响处理器性能和功率消耗。
熟知的转移预测技术包括静态和动态预测二者。某些转移指令的可能行为可由程序设计器及/或编译器动态预测。一实例是错误检查例行程序。多数码均正确地执行,且错误极少。因此,实施“错误转移”功能的转移指令将在极高的时间百分比中评估为“不采用”。这种指令可以在opcode中包括静态转移预测位,所述静态转移预测位是由知晓所述转移条件的最可能结果的程序设计器或编译器设定。其他转移指令可基于其运行时间属性而静态预测。举例而言,通常采用例如循环出口评估等具有负位移的转移(也就是在代码中“向后”跳转的转移),而极少采用具有正位移的转移(在代码中“向前”跳转的转移)。因此,可以静态地预测“采用”前者而“不采用”后者。
动态预测一般是基于正预测的转移指令及/或相同码中的其他转移指令的转移评估历史(及在某些情况下,转移预测精确度历史)。对实际码的广泛分析显示,新近的已往转移评估型式可以较好地指示未来转移指令的评估值。作为简单转移历史预测符的一个实例,可维持多个分别由条件转移指令的地址位做索引的1位标。在所述转移评估为“采用”时设定每一旗标,且在其评估为“不采用”时使每一旗标复位。因此,所述转移预测值可仅为相关联旗标的值。对于某些转移指令而言,这一预测符可以产生精确的预测值。
与使转移预测精确度最大化紧密相关的设计目标是将错误转移预测的不利影响最小化。考虑上述“错误转移”条件,其中将1位旗标作为动态转移预测符。在正常情况下,不采用所述转移,且相关联旗标保持为零,预测对将来执行所述指令“不采用”。当确实出现错误时,所述转移被错误预测且将错误指令预取至管道内。根据熟知的转移错误预测恢复方法,处理器自错误的转移预测值(其会牺牲性能且浪费功率)恢复,且设定旗标以反映所述“采用”转移。然而,转移指令的下一次执行将仍然最可能是“不采用”。在这种情况下,1位转移评估历史导致每一异常转移评估产生两次错误预测—一次是针对所述异常的,而另一次是针对转移指令的下一次执行的。
一种用于将错误预测转移预估值的不利效果最小化的熟知技术是引入强或弱预测的概念一也就是用置信因数(例如,强预测或弱预测)加权的预测(也就是采用或不采用)。其简单实例是双模态转移预测符,包括由存储器访问指令地址做索引的2位饱和计数器表格。每一计数器呈现四种状态中的一种,且分别被分配一加权预测值,例如:
11-强预测采用
10-弱预测采用
01-弱预测不采用
00-强预测不采用
每当对应的转移指令评估为“采用”时,计数器均递增,而每当所述指令评估为“不采用”时,计数器均递减。在递增停止于0b11,及递减停止于0b00时,这种递增/递减达到“饱和”。因此,所述转移预测值不仅包括结果(采用或不采用),而且还包括指示预测的强度或置信度的加权因数。
通过使用饱和计数器,例如上文考虑的“错误转移”等转移指令将仅出现一次错误预测,而非如在使用1位旗标预测符时出现两次错误预测。第一转移预测将使预测符自“强不采用”移至“弱不采用”。所述实际预测值为双模态,且由MSB表示。因此,转移指令的下次出现将仍被预测为“不采用”,这可能是正确的。
双模态饱和计数器可以是任意尺寸。举例而言,3位计数器可被分配下述预测置信强度:
111-极强预测采用
110-强预测采用
101-预测采用
100-适度地预测采用
011-适度地预测不采用
010-预测不采用
001-强预测不采用
000-极强预测不采用
当然,所述标签仅作为参考项;计数器的二进制值确定转移预测置信度的强度,其中在范围的两端处置信度较高,而朝范围的中间,置信度变低。
如所属技术领域中所熟知,饱和计数器可追踪预测精确度以及转移评估值。饱和计数器的输出可以是“一致”或“不一致”的加权值,且所述输出与静态预测值相结合以实现加权预测值。一般而言,所属技术领域中已知大量的转移预测方法,包括其中预测符不是用于预测转移、而是为了从两个或更多个其他的独立预测符中选择一个预测值的方法。例如,参见Scott McFarling在1993年所作的论文“组合转移预测符(Combining Branch Predictors)”(Digital Western Research Laboratory Technical NoteTN-36),其全文以引用的方式并入本文中。
尽管在预测中引入置信度量度会通过随时间追踪实际转移行为而改进转移预测精确度,但实际预测值是双模态的,由MSB表示。在现有技术中,转移被预测为“采用”或“不采用”,且预取从所预测的下一地址起进行,所述下一地址是转移目标地址或转移指令的下一连续地址。换句话说,不考虑预测的加权或其强度。
发明内容
在一实施例中,转移预测值的加权或强度确定处理器是否遵循条件转移指令来预取指令。为强加权转移预测值预取指令。在弱加权预测值的情形中,通过停止预取并等待在管道中评估转移条件来节约处理器资源和功率。由于弱加权转移预测值可能比强加权转移预测值的精确度低,因而响应于弱加权预测值进行预取会带来更大的错误预测与后续管道冲洗可能性。弱加权预测值可完全停止预取,或另一选择为,可仅在出现高速缓存未命中(cache miss)的情况下停止预取。
一实施例涉及一种用于在具有转移预测机构的处理器中进行指令预取的方法,其中所述转移预测机构产生多个加权转移预测值中的一者。对于强加权预测值而言,在所预测的下一地址处开始预取指令。对于弱加权预测值而言,停止指令预取直至评估转移条件为止。
另一实施例涉及一种处理器。所述处理器包括指令执行管道及转移预测机构,其中转移预测机构可操作以预测条件转移指令的评估值并输出加权的转移预测值。所述处理器另外包括指令预取机构,所述指令预取机构可操作以自所预测的下一地址推测性地取回指令,且响应于来自所述转移预测机构的强加权预测值而将所述指令装载至管道中、及响应于来自所述转移预测机构的弱加权预测值而停止指令预取。
另一实施例涉及一种避免对管道处理器中的错误预测转移进行高速缓存线置换的方法。条件转移指令的评估是借助指示所述预测值的加权值及所述预测的精确度的置信度等级来进行预测。遵循条件转移指令推测性地访问高速缓存以得到所预测的下一地址。如果高速缓存中的访问未命中且预测值指示较低的精确置信度,则中止响应于所述未命中的高速缓存线置换。
附图说明
图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可包括输入/输出(I/O)接口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并不预取任何指令(块48)。而是,预取单元25停止预取,直至在管道12中已评估相关的条件转移指令且已知其实际转移行为为止。此时,自已知的合适的下一地址继续进行指令取回。
实质上,这一方法通过将第三种状态或指示添加至所述预测值来变换现有技术的双模态转移预测值(也就是“采用”或“不采用”):预测转移被采用并进行预取;预测转移不被采用并进行预取;或等待实际的转移条件评估。通过不从弱预测转移目标处预取指令,在预测出现错误且不得不冲洗预取指令的可能性较高(相对于强预测转移结果)时,处理器10不会浪费为预取指令及开始其推测性执行所需的功率。
在强预测转移的情形中,本发明的所述方法不影响处理器性能;如所属技术领域中所熟知,发生预取且转移的精确度将影响性能。在弱预测转移的情形中,当停止预取时,则对处理器性能的影响取决于预测的精确度以及相关的可能的下一地址一也就是转移目标地址或下一连续地址一是否驻留于I-高速缓存22中。性能影响总结于下述表1中。
I-高速缓存中的预测地址命中 | I-高速缓存中的预测地址未命中 | |
弱预测精确 | 使管道停转达解码/预测与转移评估之间的管线阶段数量 | 使管道停转达解码/预测与转移评估之间的管线阶段数量 |
弱预测错误 | 避免冲洗管道并从错误预测中恢复的需要 | 避免冲洗管道并从错误预测中恢复的需要,且避免用不需要的指令取代I-高速缓存中的好数据 |
表1:对处理器性能的影响
如果弱加权的转移预测值是精确的,则停止指令预取会因在管道中引入停转而降低性能。指令执行将停转(相对于已完成预取而言)达转移指令解码及转移预测与最终转移条件评估之间的管线阶段数量。在这一情形中,将不存在功率节省,因为最终将取回和执行相同的指令。
然而,如果弱加权的转移预测值是错误的,则本发明的预取停止方法不仅节省功率,而且可以改进处理器性能。如果所预测的地址驻留于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%被视为弱加权。对于二进制计数器而言,这种分布的硬件角度是:如果两个最有效的位一致,则预测值是强加权的。另一选择为,上三分之一和下三分之一可被视为强加权,而中间的三分之一被视为弱加权。所属技术领域中的技术人员将易于了解,可按可适合于特定应用的各种方式来界定强加权预测值与弱加权预测值之间的区别。
如本文所使用,术语强和弱及其派生术语仅作为参考术语。具体而言,其是指任一会产生加权输出的转移预测符的输出,所述加权输出指示转移预测值及所述预测值精确度的置信度等级,其中强加权是指指示高置信度的输出,且弱加权是指指示低置信度的输出。任何响应于弱加权转移预测值而完全或条件性地停止指令预取及/或推测性指令执行的处理器10均处于本发明的范围内。
尽管本文已参照本发明的特定特征、方面和实施例来描述本发明,但显而易见,在本发明的广泛范围内可存在大量的变化、修改形式和其他实施例,且相应地,所有的变化、修改形式和实施例均视为处于本发明的范围内。因此,在任何方面均应将这些实施例理解为说明性实施例而非限制性实施例,且包含在随附权利要求书的含义和等效范围内的所有变化均打算涵盖在其范围内。
Claims (18)
1.一种在具有转移预测机构的处理器中进行指令预取的方法,所述转移预测机构为条件转移指令产生多个加权转移预测值中的一者,所述方法包括:
针对强加权预测,在所预测的下一地址处开始预取指令;
针对弱加权预测,停止指令预取,直至已评估所述转移条件为止。
2.如权利要求1所述的方法,其中所述转移预测机构包括至少一个饱和计数器。
3.如权利要求2所述的方法,其进一步包括将所述饱和计数器的输出与至少一个静态预测值组合以产生所述加权的转移预测值。
4.如权利要求2所述的方法,其中所述饱和计数器包括n个位,且进一步包括:
将强加权预测定义为其中所有n个位均一致的预测,及
将弱加权预测定义为其中任何位均不一致的预测。
5.如权利要求2所述的方法,其中所述饱和计数器包括多于两个位,且进一步包括:
将强加权预测定义为其中两个最有效位一致的预测;及
将弱加权预测定义为其中所述两个最有效位不一致的预测。
6.如权利要求2所述的方法,其中所述饱和计数器包括n位二进制计数器,且进一步包括:
将强加权预测定义为小于或等于N且大于或等于(2n-1)-N的那些计数器值;及
将弱加权预测定义为大于N且小于(2n-1)-N的那些计数器值;
其中N是小于或等于(2n/2)-2的非负整数。
7.如权利要求1所述的方法,其中停止指令预取直至已评估所述转移条件为止包括停止自所述处理器外部的存储器处进行指令预取。
8.一种处理器,其包括:
指令执行管道;
转移预测机构,其可操作以预测条件转移指令的评估并输出加权的转移预测值;及
指令预取机构,其可操作以自所预测的下一地址推测性地取回指令,并响应于来自所述转移预测机构的强加权预测将所述指令装载至所述管道中,及响应于来自所述转移预测机构的弱加权预测而停止指令预取。
9.如权利要求8所述的处理器,其中转移预测机构包括至少一个饱和计数器。
10.如权利要求9所述的处理器,其中所述转移预测机构将所述饱和计数器的输出与至少一个静态预测值相组合。
11.如权利要求9所述的处理器,其中所述饱和计数器包括n个位,且其中如果所有n个位均一致,则所述预测被强加权,且如果任何位均不一致,则所述预测被弱加权。
12.如权利要求9所述的处理器,其中所述饱和计数器包括多于两个位,且其中如果两个最有效的位一致,则所述预测被强加权,且如果所述两个最有效的位不一致,则所述预测被弱加权。
13.如权利要求8所述的处理器,其中所述指令预取机构仅在所述所预测转移目标地址在存储指令的高速缓存内未命中时响应于弱加权预测而停止指令预取。
14.一种用以避免对管道处理器中的错误预测转移进行高速缓存线置换的方法,其包括:
借助指示所述预测的加权值及该预测的精确度的置信度等级来预测条件转移指令的评估;
遵循所述条件转移指令,推测性地访问高速缓存以得到所预测的下一地址;及
如果所述访问在所述高速缓存中未命中且所述预测值指示低的精确度置信度,则响应于所述未命中而中止高速缓存线置换。
15.如权利要求14所述的方法,其进一步包括在所述管道中评估所述条件转移指令,及随后遵循所述条件转移指令而访问所述高速缓存以得到所评估的下一地址。
16.如权利要求14所述的方法,其中借助指示所述预测的加权值及该预测的精确度的置信度等级来预测条件转移指令的所述评估包括:在所述条件转移指令评估为采用时,递增饱和计数器,且在所述条件转移指令评估为不采用时,递减所述饱和计数器。
17.一种用于在处理器中进行指令预取的方法,其包括:
针对每一条件转移指令,确定处于自强采用至弱采用或自不采用至强不采用的范围内的额定转移预测值,及基于所述所确定的额定预测值条件性地预取指令。
18.如权利要求17所述的方法,其中如果所述所确定的额定预测值是强采用或强不采用,则在预测的下一地址处预取指令;且其中如果所述额定预测值是弱采用或弱不采用,则延迟指令预取直至在所述管道中已评估所述转移条件为止。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/050,932 | 2005-02-03 | ||
US11/050,932 US7587580B2 (en) | 2005-02-03 | 2005-02-03 | Power efficient instruction prefetch mechanism |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101147127A true CN101147127A (zh) | 2008-03-19 |
CN100547542C CN100547542C (zh) | 2009-10-07 |
Family
ID=36480912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006800089926A Expired - Fee Related CN100547542C (zh) | 2005-02-03 | 2006-02-03 | 指令预取机构 |
Country Status (9)
Country | Link |
---|---|
US (2) | US7587580B2 (zh) |
EP (2) | EP2431868B1 (zh) |
JP (2) | JP5059623B2 (zh) |
KR (1) | KR100944139B1 (zh) |
CN (1) | CN100547542C (zh) |
CA (1) | CA2596865A1 (zh) |
IL (1) | IL184986A0 (zh) |
RU (1) | RU2375745C2 (zh) |
WO (1) | WO2006084288A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927266A (zh) * | 2013-01-15 | 2014-07-16 | 想象力科技有限公司 | 预取流量的改进控制 |
CN104220980A (zh) * | 2011-12-29 | 2014-12-17 | 英特尔公司 | 经管理的指令缓存预取 |
CN110869914A (zh) * | 2017-08-30 | 2020-03-06 | 甲骨文国际公司 | 硬件预取器的基于利用率的节流 |
CN114450668A (zh) * | 2019-09-27 | 2022-05-06 | 安谋科技(中国)有限公司 | 电路和方法 |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7587580B2 (en) * | 2005-02-03 | 2009-09-08 | Qualcomm Corporated | Power efficient instruction prefetch mechanism |
US7516304B2 (en) | 2005-03-10 | 2009-04-07 | International Business Machines Corporation | Parsing-enhancement facility |
US20060230236A1 (en) * | 2005-04-08 | 2006-10-12 | Sun Microsystems, Inc. | Method and apparatus for precognitive fetching |
US7917731B2 (en) * | 2006-08-02 | 2011-03-29 | Qualcomm Incorporated | Method and apparatus for prefetching non-sequential instruction addresses |
US8566568B2 (en) * | 2006-08-16 | 2013-10-22 | Qualcomm Incorporated | Method and apparatus for executing processor instructions based on a dynamically alterable delay |
WO2008029450A1 (fr) * | 2006-09-05 | 2008-03-13 | Fujitsu Limited | Dispositif de traitement d'informations comprenant un mécanisme de correction d'erreur de prédiction d'embranchement |
US8027218B2 (en) | 2006-10-13 | 2011-09-27 | Marvell World Trade Ltd. | Processor instruction cache with dual-read modes |
US7787324B2 (en) * | 2006-10-13 | 2010-08-31 | Marvell World Trade Ltd. | Processor instruction cache with dual-read modes |
US7627742B2 (en) * | 2007-04-10 | 2009-12-01 | International Business Machines Corporation | Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system |
US8443176B2 (en) * | 2008-02-25 | 2013-05-14 | International Business Machines Corporation | Method, system, and computer program product for reducing cache memory pollution |
JP5195228B2 (ja) * | 2008-09-26 | 2013-05-08 | 富士通株式会社 | 処理プログラム、処理装置及び処理方法 |
JP5387819B2 (ja) * | 2008-12-26 | 2014-01-15 | 日本電気株式会社 | 分岐予測の信頼度見積もり回路及びその方法 |
JP2011028540A (ja) * | 2009-07-27 | 2011-02-10 | Renesas Electronics Corp | 情報処理システム、キャッシュメモリの制御方法、プログラム及びコンパイラ |
US20110047357A1 (en) * | 2009-08-19 | 2011-02-24 | Qualcomm Incorporated | Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions |
CN101887400B (zh) * | 2010-06-24 | 2015-08-12 | 中兴通讯股份有限公司 | 缓存对象老化的方法和装置 |
US9122486B2 (en) | 2010-11-08 | 2015-09-01 | Qualcomm Incorporated | Bimodal branch predictor encoded in a branch instruction |
US9836304B2 (en) * | 2010-11-15 | 2017-12-05 | Advanced Micro Devices, Inc. | Cumulative confidence fetch throttling |
RU2475822C1 (ru) * | 2011-12-08 | 2013-02-20 | Учреждение Российской академии наук Научно-исследовательский институт системных исследований РАН (НИИСИ РАН) | Подсистема памяти ядра микропроцессора |
CN104106046B (zh) * | 2012-02-14 | 2018-05-15 | 瑞萨电子株式会社 | 数据处理装置 |
US9268569B2 (en) * | 2012-02-24 | 2016-02-23 | Apple Inc. | Branch misprediction behavior suppression on zero predicate branch mispredict |
US9116686B2 (en) | 2012-04-02 | 2015-08-25 | Apple Inc. | Selective suppression of branch prediction in vector partitioning loops until dependency vector is available for predicate generating instruction |
US9389860B2 (en) | 2012-04-02 | 2016-07-12 | Apple Inc. | Prediction optimizations for Macroscalar vector partitioning loops |
US9201796B2 (en) * | 2012-09-27 | 2015-12-01 | Apple Inc. | System cache with speculative read engine |
US9389868B2 (en) * | 2012-11-01 | 2016-07-12 | International Business Machines Corporation | Confidence-driven selective predication of processor instructions |
US9304932B2 (en) * | 2012-12-20 | 2016-04-05 | Qualcomm Incorporated | Instruction cache having a multi-bit way prediction mask |
US9519586B2 (en) * | 2013-01-21 | 2016-12-13 | Qualcomm Incorporated | Methods and apparatus to reduce cache pollution caused by data prefetching |
US20140281434A1 (en) * | 2013-03-15 | 2014-09-18 | Carlos Madriles | Path profiling using hardware and software combination |
US9817663B2 (en) | 2013-03-19 | 2017-11-14 | Apple Inc. | Enhanced Macroscalar predicate operations |
US9348589B2 (en) | 2013-03-19 | 2016-05-24 | Apple Inc. | Enhanced predicate registers having predicates corresponding to element widths |
GB2515076B (en) * | 2013-06-13 | 2020-07-15 | Advanced Risc Mach Ltd | A data processing apparatus and method for handling retrieval of instructions from an instruction cache |
JP6287650B2 (ja) * | 2014-07-10 | 2018-03-07 | 富士通株式会社 | シミュレーション方法、シミュレーションプログラム |
US10496410B2 (en) * | 2014-12-23 | 2019-12-03 | Intel Corporation | Instruction and logic for suppression of hardware prefetchers |
US10296463B2 (en) * | 2016-01-07 | 2019-05-21 | Samsung Electronics Co., Ltd. | Instruction prefetcher dynamically controlled by readily available prefetcher accuracy |
US10474462B2 (en) * | 2016-02-29 | 2019-11-12 | Qualcomm Incorporated | Dynamic pipeline throttling using confidence-based weighting of in-flight branch instructions |
GB2548871B (en) * | 2016-03-31 | 2019-02-06 | Advanced Risc Mach Ltd | Instruction prefetching |
US10613867B1 (en) * | 2017-07-19 | 2020-04-07 | Apple Inc. | Suppressing pipeline redirection indications |
US10657057B2 (en) * | 2018-04-04 | 2020-05-19 | Nxp B.V. | Secure speculative instruction execution in a data processing system |
US10901743B2 (en) | 2018-07-19 | 2021-01-26 | International Business Machines Corporation | Speculative execution of both paths of a weakly predicted branch instruction |
US10489305B1 (en) * | 2018-08-14 | 2019-11-26 | Texas Instruments Incorporated | Prefetch kill and revival in an instruction cache |
CN110688160B (zh) * | 2019-09-04 | 2021-11-19 | 苏州浪潮智能科技有限公司 | 一种指令流水线处理方法、系统、设备及计算机存储介质 |
US11288209B2 (en) * | 2019-09-20 | 2022-03-29 | Arm Limited | Controlling cache entry replacement based on usefulness of cache entry |
US20210149676A1 (en) * | 2019-11-14 | 2021-05-20 | Higon Austin R&D Center Corporation | Branch Prediction Method, Branch Prediction Unit and Processor Core |
US11579884B2 (en) | 2020-06-26 | 2023-02-14 | Advanced Micro Devices, Inc. | Instruction address translation and caching for primary and alternate branch prediction paths |
US11567776B2 (en) * | 2020-11-03 | 2023-01-31 | Centaur Technology, Inc. | Branch density detection for prefetcher |
CN114116016B (zh) * | 2022-01-27 | 2022-04-22 | 广东省新一代通信与网络创新研究院 | 基于处理器的指令预取方法及装置 |
US20230418611A1 (en) * | 2022-06-23 | 2023-12-28 | Arm Limited | Prediction of number of iterations of a fetching process |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5666666A (en) * | 1995-06-07 | 1997-09-16 | Chaffen; Barry | Neckwear |
US5721864A (en) * | 1995-09-18 | 1998-02-24 | International Business Machines Corporation | Prefetching instructions between caches |
US5740417A (en) | 1995-12-05 | 1998-04-14 | Motorola, Inc. | Pipelined processor operating in different power mode based on branch prediction state of branch history bit encoded as taken weakly not taken and strongly not taken states |
US5752014A (en) * | 1996-04-29 | 1998-05-12 | International Business Machines Corporation | Automatic selection of branch prediction methodology for subsequent branch instruction based on outcome of previous branch prediction |
US5930159A (en) | 1996-10-17 | 1999-07-27 | Samsung Electronics Co., Ltd | Right-shifting an integer operand and rounding a fractional intermediate result to obtain a rounded integer result |
US6735688B1 (en) * | 1996-11-13 | 2004-05-11 | Intel Corporation | Processor having replay architecture with fast and slow replay paths |
US6092187A (en) | 1997-09-19 | 2000-07-18 | Mips Technologies, Inc. | Instruction prediction based on filtering |
US6134633A (en) * | 1997-10-31 | 2000-10-17 | U.S. Philips Corporation | Prefetch management in cache memory |
US6353883B1 (en) * | 1998-08-04 | 2002-03-05 | Intel Corporation | Method and apparatus for performing predicate prediction |
JP4111645B2 (ja) * | 1999-11-30 | 2008-07-02 | 富士通株式会社 | キャッシュミスした後のメモリバスアクセス制御方式 |
KR20010051885A (ko) | 1999-11-24 | 2001-06-25 | 메리 이. 보울러 | 피복시 박리 강도가 개선된 폴리이미드 조성물 |
US6681322B1 (en) * | 1999-11-26 | 2004-01-20 | Hewlett-Packard Development Company L.P. | Method and apparatus for emulating an instruction set extension in a digital computer system |
US6357016B1 (en) | 1999-12-09 | 2002-03-12 | Intel Corporation | Method and apparatus for disabling a clock signal within a multithreaded processor |
US6633970B1 (en) * | 1999-12-28 | 2003-10-14 | Intel Corporation | Processor with registers storing committed/speculative data and a RAT state history recovery mechanism with retire pointer |
US6615340B1 (en) * | 2000-03-22 | 2003-09-02 | Wilmot, Ii Richard Byron | Extended operand management indicator structure and method |
RU2189623C2 (ru) | 2000-06-27 | 2002-09-20 | Тюрин Сергей Феофентович | Система для программного управления технологическим оборудованием |
US6766441B2 (en) | 2001-01-19 | 2004-07-20 | International Business Machines Corporation | Prefetching instructions in mis-predicted path for low confidence branches |
RU2238584C2 (ru) | 2002-07-31 | 2004-10-20 | Муратшин Борис Фрилевич | Способ организации персистентной кэш памяти для многозадачных, в том числе симметричных многопроцессорных компьютерных систем и устройство для его осуществления |
US7587580B2 (en) * | 2005-02-03 | 2009-09-08 | Qualcomm Corporated | Power efficient instruction prefetch mechanism |
US20070186050A1 (en) | 2006-02-03 | 2007-08-09 | International Business Machines Corporation | Self prefetching L2 cache mechanism for data lines |
US7337272B2 (en) * | 2006-05-01 | 2008-02-26 | Qualcomm Incorporated | Method and apparatus for caching variable length instructions |
US8341383B2 (en) * | 2007-11-02 | 2012-12-25 | Qualcomm Incorporated | Method and a system for accelerating procedure return sequences |
US8874884B2 (en) * | 2011-11-04 | 2014-10-28 | Qualcomm Incorporated | Selective writing of branch target buffer when number of instructions in cache line containing branch instruction is less than threshold |
-
2005
- 2005-02-03 US US11/050,932 patent/US7587580B2/en not_active Expired - Fee Related
-
2006
- 2006-02-03 CA CA002596865A patent/CA2596865A1/en not_active Abandoned
- 2006-02-03 WO PCT/US2006/006993 patent/WO2006084288A2/en active Application Filing
- 2006-02-03 JP JP2007554361A patent/JP5059623B2/ja not_active Expired - Fee Related
- 2006-02-03 CN CNB2006800089926A patent/CN100547542C/zh not_active Expired - Fee Related
- 2006-02-03 KR KR1020077019940A patent/KR100944139B1/ko not_active IP Right Cessation
- 2006-02-03 EP EP11194058.1A patent/EP2431868B1/en not_active Not-in-force
- 2006-02-03 RU RU2007132861/09A patent/RU2375745C2/ru not_active IP Right Cessation
- 2006-02-03 EP EP06736335A patent/EP1851621B1/en not_active Not-in-force
-
2007
- 2007-08-01 IL IL184986A patent/IL184986A0/en unknown
-
2009
- 2009-05-04 US US12/434,804 patent/US8661229B2/en not_active Expired - Fee Related
-
2012
- 2012-03-01 JP JP2012045190A patent/JP5335946B2/ja not_active Expired - Fee Related
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104220980A (zh) * | 2011-12-29 | 2014-12-17 | 英特尔公司 | 经管理的指令缓存预取 |
CN104220980B (zh) * | 2011-12-29 | 2018-01-19 | 英特尔公司 | 经管理的指令缓存预取 |
CN103927266A (zh) * | 2013-01-15 | 2014-07-16 | 想象力科技有限公司 | 预取流量的改进控制 |
CN103927266B (zh) * | 2013-01-15 | 2018-11-09 | 美普思技术有限责任公司 | 用于预取流量的改进控制的方法和系统 |
US10754778B2 (en) | 2013-01-15 | 2020-08-25 | MIPS Tech, LLC | Control of pre-fetch traffic |
CN110869914A (zh) * | 2017-08-30 | 2020-03-06 | 甲骨文国际公司 | 硬件预取器的基于利用率的节流 |
CN110869914B (zh) * | 2017-08-30 | 2023-10-31 | 甲骨文国际公司 | 硬件预取器的基于利用率的节流 |
CN114450668A (zh) * | 2019-09-27 | 2022-05-06 | 安谋科技(中国)有限公司 | 电路和方法 |
CN114450668B (zh) * | 2019-09-27 | 2023-10-31 | 安谋科技(中国)有限公司 | 电路和方法 |
Also Published As
Publication number | Publication date |
---|---|
EP1851621A2 (en) | 2007-11-07 |
IL184986A0 (en) | 2007-12-03 |
EP2431868A2 (en) | 2012-03-21 |
EP1851621B1 (en) | 2013-04-03 |
JP2008529191A (ja) | 2008-07-31 |
RU2375745C2 (ru) | 2009-12-10 |
JP2012150824A (ja) | 2012-08-09 |
US8661229B2 (en) | 2014-02-25 |
CN100547542C (zh) | 2009-10-07 |
US20090210663A1 (en) | 2009-08-20 |
JP5335946B2 (ja) | 2013-11-06 |
KR100944139B1 (ko) | 2010-02-24 |
EP2431868A3 (en) | 2013-01-02 |
US20060174090A1 (en) | 2006-08-03 |
WO2006084288A2 (en) | 2006-08-10 |
WO2006084288A3 (en) | 2007-01-11 |
RU2007132861A (ru) | 2009-03-10 |
CA2596865A1 (en) | 2006-08-10 |
KR20070108209A (ko) | 2007-11-08 |
EP2431868B1 (en) | 2018-10-03 |
JP5059623B2 (ja) | 2012-10-24 |
US7587580B2 (en) | 2009-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100547542C (zh) | 指令预取机构 | |
CN101160561B (zh) | 通过循环结束分支来抑制分支历史寄存器的更新 | |
KR101459536B1 (ko) | 사전 통지 기법들을 사용하여 프로그램의 순차적 흐름을 변경하기 위한 방법들 및 장치 | |
TWI444892B (zh) | 用於預測未對齊之記憶體存取之方法及處理器 | |
EP2479662B1 (en) | Representing loop branches in a branch history register with multiple bits | |
US7471574B2 (en) | Branch target buffer and method of use | |
EP2946286B1 (en) | Methods and apparatus for cancelling data prefetch requests for a loop | |
US20130346727A1 (en) | Methods and Apparatus to Extend Software Branch Target Hints | |
CN101438237A (zh) | 基于区块的分支目标地址高速缓冲存储器 | |
US20080072024A1 (en) | Predicting instruction branches with bimodal, little global, big global, and loop (BgGL) branch predictors | |
US9122486B2 (en) | Bimodal branch predictor encoded in a branch instruction | |
CN103019652A (zh) | 滑动窗口、基于区块的分支目标地址高速缓冲存储器 | |
CN101681258A (zh) | 使用可变长度指令集处理器中分支目标地址缓存的分支预测 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091007 Termination date: 20210203 |