用于循环分支的分支历史寄存器的制作方法

文档序号:6454204阅读:193来源:国知局
专利名称:用于循环分支的分支历史寄存器的制作方法
用于循环分支的分支历史寄存器技术领域本揭示内容一般而言涉及处理器领域且明确地说涉及一种使用多个位表示分支 历史寄存器中的循环分支的方法。
背景技术
微处理器在很多种应用中执行计算任务。几乎总期望改进的处理器性能,以允许 通过软件改变而得到更快的操作及/或增加的功能性。在常见的嵌入式应用(例如,便 携式电子装置)中,还期望节省功率。常见的现代化处理器均采用管线式架构,其中每一者具有多个执行步骤的顺序指 令在执行时重叠。为得到最大性能,指令应连续地流过管线。致使指令在管线中停止的任何情形均有害地影响性能。如果必须从管线清除并随后重新提取指令,那么性能 及功率消耗两者可遭受损失。通常,所有的真实世界程序均包含条件分支指令,且条件分支指令的实际分支行 为通常直至在管线深处评估指令时才能获知。为避免可由等待分支指令的实际评估引 起的停止,常见的现代化处理器采用某一形式的分支预测,借此在管线中较早地预测 条件分支指令的分支行为。基于预测的分支评估,处理器推测性地提取(预提取)并 执行来自预测的地址的指令,所述预测的地址是分支目标地址(如果预测采用所述分 支)或所述分支指令之后的下一顺序地址(如果预测不采用所述分支)。在确定实际 分支行为时,如果分支被错误预测,那么必须从管线清除推测性地提取的指令,且从 正确的下一地址提取新的指令。响应于错误的分支预测来预提取指令不利地影响处理 器性能及功率消耗。因此,期望改进分支预测的准确性。已知的分支预测技术包含静态及动态预测两者。 一些分支指令的可能行为可由编 程器及/或编译器静态地预测。 一个实例是错误检査例行程序。常见的代码正确地执行, 且错误极少。因此,实施"错误分支"功能的分支指令将在极高的时间百分比中评估 为"不采用"。此指令可包含操作代码中的静态分支预测位,所述静态分支预测位是 由知道分支条件的常见最可能结果的编程器或编译器设定。动态预测一般是基于正预测的分支指令及/或相同代码中的其它分支指令的分支 评估历史(且在一些情况下,分支预测准确性历史)。对实际代码的广泛分析指示, 不久以前的分支评估模式可能是未来分支指令的评估的良好指示符。图1中所描绘的一种己知形式的动态分支预测利用分支历史寄存器(BHR) 100 来存储以前的n个分支评估。在简单的实施方案中,BHR30包括移位寄存器。移入常 见的最近分支评估结果(例如,1指示釆用且O指示不采用),从而替代寄存器中最 旧的以前评估。处理器可针对每一分支指令维持本地BHR 100。另一选择为(或另外), BHR 100可含有所有条件分支指令的不久以前的评估,在此项技术中有时称为全局 BHR或GHR。如在本文中使用,BHR是指本地及全局分支历史寄存器两者。如图l中所描绘,BHR IOO可为分支预测器表(BPT) 102加索引,所述分支预 测器表同样可以是本地或全局的。BHR100可直接为BPT102加索引,或可组合有其 它信息,例如,BPT索引逻辑104中的分支指令的程序计数器(PC)。可另外地利用 到BPT索引逻辑104的其它输入。BPT索引逻辑104可级联所述输入(在此项技术中 称为gselect),对所述输入执行XOR运算(gshare),执行散列函数或以多种方式组 合或转变所述输入。作为一个实例,BPT 102可包括多个饱和计数器,所述饱和计数器的MSB充当 双模态分支预测器。例如,每一表条目可包括采取四种状态中的一者的2位计数器, 所述四种状态的每一者被指派加权预测值,例如11 -强预测采用10 -弱预测采用 01 -弱预测不采用 00 -强预测不采用每当对应的分支指令评估为"采用"时,计数器递增,而每当指令评估为"不采 用"时,计数器递减。计数器的MSB是双模态分支预测器;其将预测待采用或不采 用的分支,而不管基本预测的强度或权重如何。饱和计数器减少不频繁的分支评估方 向的预测错误。 一贯地单向评估的分支将使计数器饱和。其它方向不频繁评估将改变 计数器值(及预测的强度),但不改变双模态预测值。因此,不频繁评估将仅错误预 测一次,而非两次。饱和计数器的表仅是说明性实例; 一般来说,BHT可为含有多种 分支预测机制的表加索引。不管BPT 102中所釆用的分支预测机制如何,BHR 100单独地或组合其它信息(例 如,分支指令PC)来为BPT102加索引以获得分支预测。通过将先前分支评估存储于 BHR 100中并在分支预测中使用所述评估,使正预测的分支指令与以前的分支行为相 关-在本地BHR 100的情况下是其自己以前的行为,且在全局BHR 100的情况下是其 它分支指令的行为。至少在高度重复性代码的情况下,此相关性是准确的分支预测的 关键。注意,图1描绘正存储于BHR100中的分支评估-即,仅可在管线深处(例如, 在执行管级中)获知的条件分支指令的实际评估。虽然这是最终结果,但实际上,常 见的高性能处理器将来自BPT 102的预测的分支评估存储于BHR 100中,且如果所述 预测证明是错误的,那么稍后作为错误预测恢复操作的一部分校正BHR100。为清楚 起见,所述图式不反映此实施方案特征。
可减少采用BHR 100的分支预测器的功效的常见代码结构是循环的。循环以测试循环结束条件的条件分支指令结束,例如,无论每当穿过所述循环便递增的索引变量 是否已达到循环结束值。如果未达到,那么执行分支后退到所述循环的开始以进行另 一迭代以及另一循环结束条件分支评估。如果所述循环通大量迭代而执行,那么所述循环结束分支指令的"采用"向后分支使BHR 100部分地或完全地饱和。在所述循环迭代数目等于或超过BHR 100宽度 的情况下,在所述循环结束时,n位BHR将精确地含有n-7个J (采用)紧接单个0 (不采用),从而对应于由所述循环迭代引起的一长系列的分支采用评估,并在所述 循环终止时以单个不采用分支评估结束。这有效地破坏BHR100的功效,因为与先前 分支评估的所有相关性(对于本地或全局BHR 100)均被丢失。在此情况下,BHR 100 将很可能映射到给定分支指令的相同BPT 102条目(此取决于到BPT索引逻辑104的 其它输入),而非映射到含有反映分支指令与先前分支评估的相关性的分支预测的条 目。另外,饱和的BHR 100可增加BPT 102中的别名现象。艮卩,如果BHR100直接为BPT 102加索引,那么在具有共同迭代的循环之后的所有分支指令均将映射到相同 BPT102条目。即使在BHR100组合有其它信息,也增加别名现象的机会。这不仅不 利地影响对循环之后的分支指令的预测准确性,而且不利地影响对在BPT 102中产生 其条目别名的所有分支指令的预测准确性。如果所述循环通过比BHR IOO的宽度少的迭代而执行,那么BHR 100不会饱和 且某一先前分支评估历史得以保持。然而,表示先前分支评估历史的位在BHR 100中 被循环结束分支指令的众多"釆用"结果而替代。明确地说,在循环迭代数目变化的 情况下,此对分支预测有两个有害的影响。首先,所述分支指令将映射到BPT 102中 更大数目的条目以捕获与先前分支评估的相同的相关性,与循环结束分支不影响BHR 30的情况下将需要的相比,此需要较大BPT 102来支持相同数目的分支指令的相同准 确性。其次,BPT 102中的分支预测器将花费较长时间"训练",从而增加必须在BPT 102开始提供准确的分支预测之前执行的代码的量。受让与本专利申请案的受让人并以引用方式并入本文中的专利申请案第 11/066,508号提出抑制针对循环结束分支指令更新BHR 100。此解决了 BHR 100饱和 或部分饱和对分支预测准确性的有害影响的常见问题。然而,其不能捕获并利用可存 在于循环行为与随后分支评估之间的相关性。在常见的应用中,分支指令的评估可与前面循环的迭代数目相关。例如,科学程 序可捕获循环中的数据点,且在所述循环之后,分支到其中分析所捕获的数据的统计 分析子例程。然而,如果所述循环迭代相对较少的次数,那么捕获较少数据点并产生 小的样本,统计分析可能不可靠,且可跳过。在此情况下,分支到所述统计分析子例 程的条件指令的评估与所述数据获取循环的迭代数目强相关。在另一实例中,应用可使用循环结构来将列表,事物日志、历史文件或类似数据 结构搜索一遍。如果匹配搜索参数的项频繁地出现在列表中,那么将需要相对较少的 循环迭代来定位所述项。因此,不频繁出现的项可能需要穿过搜索循环的大量迭代。 随后分支指令的评估可与特定项在列表中出现的频率相关,且因此与定位所述项所需 的循环迭代数目相关。抑制响应于循环结束分支指令评估更新BHR 100无法捕获循环迭代数目与随后 分支指令的分支行为之间的任何相关性。另一方面,维持循环结束分支指令的全部评 估历史会使BHR 100完全地或部分地饱和,从而在所述循环之前丢失与分支指令评估 的相关性。发明内容响应于与循环相关联的条件分支指令的性质,例如,指示所述分支是循环结束分 支的性质,维持所述循环的迭代数目的计数,及将指示所述循环迭代计数的多位值存 储于BHR中。在一个实施例中,所述多位值可包括实际循环计数,在此情况下,位数 目是可变的。在另一实施例中,所述位数目是固定的(例如,两个)且通过与阈值的 比较而将循环迭代计数映射为多位值。可针对嵌套循环维持单独迭代计数,且存储于 所述BHR中的多位值可指示仅内部循环、仅外部循环或两者的循环迭代计数。一个实施例涉及一种分支预测的方法。识别与循环相关联的分支指令的性质。响 应于所述性质,将多位值存储于BHR中,所述多位值指示与所述分支指令相关联的循 环的迭代数目。另一实施例涉及一种处理器。所述处理器包含分支预测器,其操作以预测条件 分支指令的评估;及指令执行管线,其操作以基于来自所述分支预测器的预测推测性 地提取并执行指令。所述处理器还包含BHR,其操作以存储条件分支指令的所述评 估;及循环计数器,其操作以计数代码循环的迭代数目。所述处理器进一步包含控制 电路,所述控制电路操作以在所述BHR中存储指示与条件分支指令相关联的循环的迭 代数目的多位值。


图1是现有技术分支预测器电路的功能框图。图2是处理器的功能框图。图3是执行分支指令的方法的流程图。图4是分支预测器电路的功能框图,所述分支预测器电路包含一个或一个以上最 后分支PC寄存器及循环计数器。
具体实施例方式
图2描绘处理器10的功能框图。处理器10根据控制逻辑14执行指令执行管线 12中的指令。在一些实施例中,管线12可以是具有多个管线的超标量设计。管线12 包含组织于管级中的各种寄存器或锁存器16以及一个或一个以上算术逻辑单元 (ALU) 18。通用寄存器(GPR)堆20提供构成存储器层次的顶部的寄存器。管线12从指令高速缓存器(I-高速缓存器)22提取指令,其中由指令侧转换后 援缓冲器(ITLB) 24管理存储器地址转换及准许。当在管线12中较早地解码条件分 支指令时,分支预测器26预测分支行为,并将预测提供给指令预提取单元28。指令 预取单元28从I-高速缓存器22、在针对"采用的"分支预测在管线12中所计算的分 支目标地址处、在针对预测为"不采用的"分支的下一顺序地址处推测性地提取指令。 在任一情况下,预提取的指令均被加载到管线12中以供进行推测性执行。分支预测器26包含分支历史寄存器(BHR) 30、分支预测器表(BPT) 32、 BPT 索引逻辑34及BHR更新逻辑36。分支预测器26可另外包含一个或一个以上最后分 支PC寄存器38,以及向BHR更新逻辑36提供输入的一个或一个以上循环计数器37。从数据高速缓存器(D-高速缓存器)40存取数据,其中由主转换后援缓冲器(TLB) 42管理存储器地址转换及准许。TLB 42可以是专用数据TLB,或可包括为指令及数 据两者管理地址转换及准许的集成式TLB。另外,在处理器IO的各种实施例中,可 将I-高速缓存器22及D-高速缓存器40集成或联合在一起。在存储器接口 46的控制 下,I-高速缓存器22及/或D-高速缓存器40中的过错导致对主(芯片外)存储器44 的存取。处理器10可包含输入/输出(I/O)接口48,以控制对各种外围装置50的存取。 所属领域的技术人员将认识到,处理器10的众多变化形式是可能的。例如,处理器 10可包含用于I及D高速缓存器22、 40中的任一者或两者的第二层级(L2)高速缓 存器。另外,可将处理器10中所描绘的一个或一个以上功能块从特定实施例中省去。循环迭代的多位指示根据一个或一个以上实施例,通过将分支评估与先前分支评估及先前循环的迭代 计数两者相关来改进分支预测准确性。这是通过将指示循环迭代计数的多位值存储于 BHR30中来完成的。通过将可能的大循环迭代计数映射为相对较少的位,保存关于所 述循环的特性信息,同时防止循环结束分支使分支预测器26中的一个或一个以上BHR 30完全地或部分地饱和。此过程描绘为图3中的流程图。提取并解码指令(块52)。如果指令不是条件分 支指令(块53),那么所述指令在管线中继续进行且过程返回以提取下一指令(块52)。 如果指令是条件分支指令(块53),那么做出分支是否是循环结束分支的确定(块54)。 如果不是,那么在分支评估(例如,在管线的执行级中)时,更新BHR 30以使用单 个位来记录分支评估(块56),即,将分支指令评估为"采用的"还是"不采用的"。 执行接着分别在分支目标地址或下一顺序地址处继续(块64)。如果分支是循环结束 分支(块54),那么递增循环迭代计数(块58)。在循环完成时(块60),将指示 循环迭代数目的多位值写入到BHR30 (块62)。接着清零循环迭代计数器(块63) 且执行在下一顺序地址处继续(块64)。可以多种方式完成两种询问(块54) -B卩,将分支指令识别为循环结束分支指令-及维持循环迭代计数(块58)。在一个实施例中,在确定为循环结束分支的条件分支 指令评估为"采用的"时,递增一个或一个以上循环计数器(LC) 37。在循环结束分 支评估为"不采用"(其指示退出循环)时,将LC37的值或从其导出的值(如在本 文中更全面的论述)写入到BHR30。同时还清零LC37。识别循环结束分支指令循环通过从循环的结束到循环的开始向后分支来迭代。根据一个实施例,假定具 有小于分支指令地址或PC的分支目标地址(g卩,向后分支)的每一条件分支指令是 循环结束分支指令。此识别循环结束分支的方法提供简单性。如在图4中所描绘,当 在管线中实际评估分支指令时,在循环结束分支检测逻辑35中将分支指令PC与分支 目标地址,(BTA)相比较。如果BTA〈PC,那么递增循环计数器(LC) 37。此实施 例在确定分支目标地址时需要地址比较,并可能因为并非所有的向后分支均是循环结 束分支而具有某种不准确性的缺点。检测循环结束分支的另一方式是辨识对同一分支指令的重复执行。在一个实施例 中,如在图4中所描绘,最后分支PC (LBPC)寄存器38存储所执行的最后分支指令 的PC。在简单循环的情况下,如果分支指令的PC匹配循环结束分支检测逻辑35中 的LBPC38,即,所述分支指令是所评估的最后分支指令,那么假定所述分支指令是 循环结束分支指令,并递增LC37。将条件分支指令包含在循环内的代码可使循环结束分支检测复杂。例如,用于搜 索阵列或链接的列表的常见算法创建循环。所述循环内的分支检查匹配且如果找到匹 配那么尽早退出所述循环,同时循环结束分支检査所述阵列或链接的列表的结束。在 此情况下,单个LBPC38不能检测循环结束分支,因为其将被两个分支PC交替地盖 写。因此,在一个实施例中,可提供两个或两个以上LBPC寄存器38 (如在图4中所 描绘),其中连续评估的分支指令的PC被存储于对应的LBPC寄存器(LBPCo、LBPd、... LBPCM) 38中。此允许即使循环内存在其它条件分支也可检测循环结束分支。还可使用编译器或汇编器静态地标记循环结束分支指令。在一个实施例中,编译 器产生仅用于循环结束分支的特定类型的分支指令,例如,"BRLP"。辨识所述BRLP 指令,且每当BRLP指令在执行管级中评估为采用时递增LC 37。在另一实施例中, 编译器或汇编器可(例如)通过将一个或一个以上预先定义的位设定于指令操作代码 中而将循环结束分支指示嵌入于分支指令中。检测所述循环结束分支位,且当所述分 支指令在执行管级中评估为采用时递增LC 37。 一般来说,可向循环结束分支检测逻 辑35提供循环结束指示符。循环结束分支的静态识别通过将循环结束识别功能移到编 译器或汇编器中而减少硬件及计算复杂性。产生并存储循环迭代数目的指示符 不管用于识别循环结束分支指令(针对内部或外部循环)的技术如何,根据一个 或一个以上实施例,将循环迭代的次数数目的指示存储于BHR 30中,以利用循环迭 代数目与随后条件分支指令评估之间的任何相关性。在一个实施例中,将循环迭代的实际计数存储于BHR30中。即,将多位计数(例 如,来自LC 37)移位到BHR 30中,以替代BHR 30的MSB中的先前分支评估。对 于极大循环,此计数将需要n个循环迭代的Zog2 "J,,以替代对应数目的先前分 支评估。然而,即使对于大循环迭代计数,二进制表示也是对存储于现有技术分支历 史寄存器中的循环结束分支行为的显著压縮f《A, 个/一紧;^单个0)。在一个实施 例中,将迭代计数积累于LC37中并移位到BHR30中。在另一实施例(未显示)中, 可将BHR 30的至少较低&个位实施为双模式移位寄存器/计数器,且可在BHR 30中 直接递增循环迭代计数(其中先前BHR30内容随着计数增长而向左移位)。在另一实施例中,将循环迭代数目的固定多位指示存储于BHR30中。例如,可 分配两个位来记录循环迭代数目的指示,其具有以下意义11 -极大数目的循环迭代10 -大数目的循环迭代01 -中等数目的循环迭代00 -小数目的循环迭代在此实例中,使用小数目与中等数目之间(00-〉01);中等数目与大数目之间 (01-> 10)及大数目与极大数目之间(10->11)的三个阈值来将实际循环迭代计数 映射为二位表示,如由阈值逻辑39所指示。在一个实施例中,所述阈值对于给定的处 理器实施方案可是固定的,例如对于其中通常已知共同循环大小的某些嵌入式应用。 在另一实施例中,所述映射可以是可縮放映射,其中所述阈值是从GPR 20、存储器 44中的表或类似物读取的。在常见应用中,循环迭代数目的固定多位指示可提供循环 迭代计数的充分指示,以允许与分支评估行为的有意义的相关性,且同时限制循环结 束分支从BHR 30替代先前分支评估的数目。当然,可将实际循环迭代计数映射为任何固定数目的位,所述固定数目的位具有 用对应数目的阈值,例如,三个位与七个阈值;四个位与十五个阈值等等,以在循环 迭代计数准确性与BHR 30中的分支评估替代之间实现所期望或所需要的平衡。嵌套循环循环可含有一个或一个以上嵌套式或内部循环。因此,在一个实施例中,提供可 对应于LBPC38寄存器的数目的多个LC计数器(LCq、 Ld、 ...LCM) 37。基于采用 评估及与相关LBPCM 38的匹配递增LC 37以维持嵌套循环的迭代计数。通过每当内部循环退出时存储所述内部循环的迭代数目的多位指示,BHR 30在 外部循环迭代相对较少次数时变得部分地或完全地饱和。因此,在一个实施例中,一 旦将循环确定为内部循环,随后迭代便进行计数,此后可抑制内部循环的初始执行更 新BHR30。在此实施例中,在外部循环退出时,BHR30将包含仅针对外部循环的第
一迭代的内部循环的迭代计数的指示,及外部循环的迭代计数的指示。在另一实施例中,可通过用外部循环迭代计数的指示盖写内部循环迭代计数在 BHR 30中的值而丢弃所述内部循环迭代计数。此保存BHR 30中的最大数目的先前分 支评估,同时允许随后分支评估与外部循环的迭代计数的相关性。在另一实施例中,可通过在外部循环退出时抑制BHR30的更新而丢弃述外部循 环迭代计数。此同样保存BHR 30中的最大数目的先前分支评估,同时允许随后分支 评估与内部循环的迭代计数的相关性,这在一些应用中可能对随后分支评估更具预测 性。条件分支指令具有常见性质,包含(例如)分支指令地址或PC,指令类型,及 操作代码中是否存在指示符位。如在本文中所使用,分支操作的性质及/或与所述分支 有关的程序的性质均视为分支指令的性质。例如,分支指令PC是否匹配一个或一个 以上LBPC寄存器38的内容以及分支目标地址是相对于分支指令PC向前还是向后是 分支指令的性质。虽然本文已关于本揭示内容的特定特征、方面及实施例描述本揭示内容,但将了 解,在本揭示内容的广泛范围内可存在许多的变化形式、修改及其它实施例,且因此, 所有的变化形式、修改及实施例均将视为在本揭示内容的范围内。因此,应在所有方 面将所述实施例理解为说明性而非限制性,且包含在所附权利要求书的意义及等效范 围内的所有改变均打算涵盖在其中。
权利要求
1、一种分支预测方法,其包括识别与循环相关联的分支指令的性质;及响应于所述性质,将多位值存储于分支历史寄存器(BHR)中,所述值指示与所述分支指令相关联的循环的迭代数目。
2、 如权利要求l所述的方法,其中所述性质是所述分支的方向。
3、 如权利要求2所述的方法,其中所述分支是向后的。
4、 如权利要求l所述的方法,其中所述分支指令是循环结束分支指令。
5、 如权利要求4所述的方法,其中所述分支指令的PC匹配存储最后分支指令的 PC的最后分支PC (LBPC)寄存器的内容以更新所述BHR。
6、 如权利要求4所述的方法,其中所述分支指令的所述PC匹配存储最后多个分 支指令的PC的多个LBPC寄存器中的任一者的内容以更新所述BHR。
7、 如权利要求4所述的方法,其中所述分支指令是由编译器产生的用于结束循 环的唯一分支指令。
8、 如权利要求4所述的方法,其中所述分支指令操作代码包含指示所述分支指 令是循环结束分支指令的一个或一个以上位。
9、 如权利要求l所述的方法,其中将多位值存储于所述BHR中包括将预定数目 的位存储于所述BHR中。
10、 如权利要求9所述的方法,其进一步包括根据所述循环迭代数目到所述多位 值的固定映射确定所述预定数目的位的值。
11、 如权利要求9所述的方法,其进一步包括根据所述循环迭代数目到所述多位 值的可縮放映射确定所述预定数目的位的值。
12、 如权利要求11所述的方法,其进一步包括读取多个阈值以确定所述循环迭 代数目到所述多位值的所述可縮放映射。
13、 如权利要求l所述的方法,其中将多位值存储于所述BHR中包括将可变数 目的位存储于所述BHR中,所述位数目响应于所述循环的所述迭代数目而变化。
14、 如权利要求13所述的方法,其进一步包括计数所述BHR的多个最低有效位 中的循环迭代。
15、 如权利要求13所述的方法,其进一步包括在循环计数器中计数循环迭代, 并在所述循环终止时将所述循环计数器的值转移到所述BHR。
16、 如权利要求1所述的方法,其中识别与循环相关联的分支指令的性质包括检 测与第一循环相关联的第一循环结束分支指令及与第二循环相关联的第二循环结束分 支指令,所述第一循环嵌套于所述第二循环内。
17、 如权利要求16所述的方法,其中将多位值存储于所述BHR中包括将指示所 述第一循环的迭代数目的多位值存储于所述BHR中,且进一步包括将指示所述第二循环的迭代数目的多位值存储于所述BHR中。
18、 如权利要求16所述的方法,其中将多位值存储于所述BHR中包括仅将指示 所述第一循环的迭代数目的多位值存储于所述BHR中。
19、 如权利要求16所述的方法,其中将多位值存储于所述BHR中包括仅将指示 所述第二循环的迭代数目的多位值存储于所述BHR中。
20、 一种处理器,其包括分支预测器,其操作以预测条件分支指令的评估;指令执行管线,其操作以基于来自所述分支预测器的预测推测性地提取并执行指令;分支历史寄存器(BHR),其操作以存储条件分支指令的所述评估; 循环计数器(LC),其操作以计数代码循环的迭代数目;及 控制电路,其操作以在所述BHR中存储多位值,所述多位值指示与条件分支指 令相关联的循环的迭代数目。
21、 如权利要求20所述的处理器,其进一步包括最后分支PC (LBPC)寄存器, 所述最后分支PC (LBPC)寄存器操作以存储条件分支指令的PC,且其中如果所述分 支指令的所述PC匹配所述LBPC寄存器的内容,那么所述控制电路确定条件分支指 令与循环相关联。
22、 如权利要求21所述的处理器,其进一步包括两个或两个以上LBPC寄存器 及对应的两个或两个以上LC,第一 LBPC操作以存储与第一循环相关联的条件分支指 令的PC且第一 LC操作以维持所述第一循环的迭代计数,且第二 LBPC操作以存储与 第二循环相关联的条件分支指令的PC且第二 LC操作以维持所述第二循环的迭代计 数,其中所述第一循环嵌套于所述第二循环内。
23、 如权利要求22所述的处理器,其中所述控制电路操作以在所述BHR中存储 指示所述第一循环的一个执行的迭代数目的多位值及指示所述第二循环的迭代数目的 多位值。
24、 如权利要求22所述的处理器,其中所述控制电路操作以在所述BHR中存储 指示所述第一循环的一个执行的迭代数目的多位值且不在所述BHR中存储所述第二 循环的迭代数目的指示。
25、 如权利要求22所述的处理器,其中所述控制电路操作以在所述BHR中存储 指示所述第二循环的迭代数目的多位值且不在所述BHR中存储所述第一循环的任一 执行的迭代数目的指示。
26、 如权利要求20所述的处理器,其中所述BHR操作以响应于与所述循环相关 联的所述条件分支指令的每一采用的评估递增多个位,从而直接维持所述BHR中的循 环迭代计数。
27、 如权利要求20所述的处理器,其进一步包括阈值逻辑,所述阈值逻辑操作 以响应于多个阈值将循环迭代计数映射为固定的多位值。
全文摘要
响应于与循环相关联的条件分支指令的性质(例如指示所述分支是循环结束分支的性质),维持所述循环的迭代数目的计数,且将指示所述循环迭代计数的多位值存储于分支历史寄存器(BHR)中。在一个实施例中,所述多位值可包括实际的循环计数,在此情况下,位数目是可变的。在另一实施例中,所述位数目是固定的(例如,两个)且通过与阈值的比较将循环迭代计数映射为固定数目的多位值(例如,四个)中的一者。可针对嵌套循环维持单独迭代计数,且存储于所述BHR中的多位值可指示仅内部循环、仅外部循环或两者的循环迭代计数。
文档编号G06F9/38GK101401065SQ200780008775
公开日2009年4月1日 申请日期2007年3月19日 优先权日2006年3月17日
发明者博胡斯拉夫·雷赫利克, 詹姆斯·诺里斯·迪芬德尔费尔 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1