信息处理设备和分支预测方法

文档序号:6603707阅读:162来源:国知局
专利名称:信息处理设备和分支预测方法
技术领域
这里讨论的本发明的各个实施例涉及进行分支预测的信息处理设备。
背景技术
执行管线控制操作的处理器包括分支预测机构,其用于进行关于指令分支的预 测,以有效读取指令序列,也就是说,从存储器到指令执行单元的指令提取。由于可在指令 执行之前执行指令提取,因此分支预测机构是非常重要的,特别是在执行故障控制的处理 器中。在过去提出的指令执行处理装置中,分支历史的项目涉及指令地址,并且通过由 要提取的指令的长度和指令字的最小单位长度定义的块的数目来形成所述项目。[专利文献1]日本早期公开专利申请06-089173[专利文献2]日本早期公开专利申请2004-38337对于分支预测机构,期望尽可能多地降低在分支预测处理期间消耗的功率消耗。本发明的目的是提供能够降低在分支预测处理期间的功率消耗的信息处理设备。

发明内容
信息处理设备包括存储第一对应信息的第一分支历史记录单元,其中,所述第一 对应信息是最近分支指令的指令地址与分支目的地址之间的对应信息,已完成了最近分支 指令的计算并且已针对最近分支预测跳转了分支;存储第二对应信息的第二分支历史记录 单元,其中,所述第二对应信息是包括最近分支指令的多个过去分支指令中的每个的指令 地址与分支目的地址之间的对应信息,已完成了多个过去分支指令的计算并且已针对多个 过去分支指令跳转了分支;以及分支预测控制单元,其基于对存储在第一分支历史记录单 元中的第一对应信息和存储在第二分支历史记录单元中的第二对应信息之一的搜索结果, 利用从存储器提取的指令的指令地址来进行分支预测,并且当指令序列进入循环时,停止 向第二分支历史记录单元提供时钟,并基于对第一分支历史记录单元中的第一对应信息的 搜索结果而进行分支预测。根据这里公开的信息处理设备,在分支预测处理中,当计算的指令序列进入循环 时,可降低功率消耗。


图1示出了表示信息处理设备的示例的图;图2示出了说明在正常操作模式中的分支预测单元的处理的图;图3示出了说明分支预测设备中从正常操作模式切换到降低功率消耗模式的处 理的图;图4示出了说明分支控制单元的处理的图;以及图5示出了说明响应于分支预测的成功或失败的分支预测处理操作中的状态之间的转换的图。
具体实施例方式为了降低由处理器导致的功率消耗,提出了在不执行指令的时段期间,停止向在 用于执行指令的给定时段中不使用的计算资源提供时钟。本发明的发明人研究了如下分支预测机构该分支预测机构通过搜索分支历史 (在下文中,称为“分支历史表”)中的项目来预测提取的指令是否是分支指令。在这样的 分支预测中,项目的数目越多,分支预测的准确度越高。为此,提出了使用随机存取存储器 (RAM)作为能够存储大量数据的分支历史表。此外,停止提供被提供到类似大容量RAM的计 算资源的时钟使得功率消耗显著降低。然而,在分支预测中,每次提取指令都参考分支历史表。另外,在指令执行之前频 繁地执行这样的指令提取。因此,假设几乎始终使用分支历史表。换句话说,由于不但更新 数据而且参考数据都要参考分支历史表,因此停止提供被提供到分支历史表的时钟是困难 的。另一方面,作为在程序中频繁看到的结构,存在多个指令形成单个指令序列的结 构,并且重复地执行该单个指令序列或其部分。在下文中,单个指令序列的重复执行或单个 指令序列的部分的重复执行被称为“指令进入循环”或“指令进入到循环”,并且被重复执行 的多个指令被称为“循环”。另一方面,当使得一旦进入了循环的指令序列的重复执行停止 时,这被称为“从循环取出指令”。本发明的发明人研究了以下指令提取控制单元。该指令提取控制单元能够直接提 供来自多个指令缓冲器的指令并且能够执行指令。通过使用多个指令缓冲器重复地执行包 括在循环中的多个指令来实现这样的处理。指令缓冲器检测包括在循环中的分支指令并且 将分支指令存储在其中。在这样的指令提取控制单元中,指令缓冲器预先存储指令。因此, 不必从存储器新提取指令。作为其结果,可直接执行存储在指令缓冲器中的指令。在这样 的指令提取控制单元中,不必参考分支历史表。因此,考虑可在指令缓冲器在使用中的时段 期间,实现停止提供被提供到分支历史表的时钟。然而,根据如上所述的指令提取控制单元,如果包括在循环中的指令数目超过准 备的指令缓冲器的数目,那么仅通过使用指令缓冲器不能实现循环。换句话说,当执行其长 度能够被存储在准备的指令缓冲器中的循环时,可停止向分支历史表提供时钟。为此,限制 了降低功率的机会。根据在下文中公开的图1中示出的信息处理设备,可降低分支预测处理的执行中 的功率消耗,而与指令序列的循环的长度无关。图1示出了表示根据本发明实施例的信息处理设备的示例的图。图1中的信息处理设备包括分支预测单元1、存储器2、指令提取控制单元3、指令 解码单元4、指令发出控制单元5、指令完成控制单元6、计算单元7以及分支控制单元8。图 1中的信息处理设备是基于例如超标量方法和故障控制方法而执行计算的计算机。为此,图 1中的信息处理设备包括分支预测机构。该分支预测机构包括分支预测单元1、指令提取控 制单元3以及分支控制单元8。分支预测单元1执行分支预测处理。分支预测处理是进行如下预测的一类处理由指令提取控制单元3从存储器2提取的指令是否致使跳转分支。分支预测单元1包括分 支预测器11、控制器12、单循环项目13、分支历史表14以及计数器15。分支预测器11通过使用单循环项目13或通过使用分支历史表14来执行分支预 测处理,并且将分支预测处理的结果传送到分支控制单元8。分支预测器11从指令提取控 制单元3获得指令提取地址,通过使用获得的指令提取地址来搜索单循环项目13或分支历 史表14,并且执行分支预测处理。分支预测器11通过使用从存储器2提取的指令的指令地 址,基于对单循环项目13中的第一对应信息或对分支历史表14中的第二对应信息的搜索 结果而进行分支预测。指令提取地址是由指令提取控制单元3从存储器2提取的指令的地 址。单循环项目13是存储单条第一对应信息的分支历史记录部分。第一对应信息表 示已跳转了其分支的最近分支指令的指令地址与分支目的地址之间的对应。单循环项目13仅存储表示分支指令的指令地址与分支目的地址之间的对应的单 条对应信息。换句话说,仅单个项目位于单循环项目13中。例如,触发电路用作单循环项目13。更具体地,其数目等于单个项目的比特数目的 触发电路被准备作为单循环项目13。由于存储在单循环项目13中的项目的数目是单个,因 此单循环项目13不包括诸如地址解码器等的外围电路。为此,与具有多个项目并且设置有 外围电路的分支历史表14的功率消耗相比,单循环项目13的功率消耗较低。分支历史表14是存储多条第二对应信息的分支历史记录部分。第二对应信息是 表示每个分支指令的指令地址与分支目的地址之间的对应的对应信息,其中过去已跳转了 所述每个分支指令的分支。分支历史表14存储多条对应信息的历史,每条所述对应信息表示已跳转了其分 支的分支指令的指令地址(在下文中,被称为“分支指令地址”)与分支目的地址之间的对 应。换句话说,包括存储在单循环项目13中的第一对应信息的多个项目位于分支历史表14 中。例如,静态随机存取存储器(SRAM)用作分支历史表14。由于分支历史表14存储 多个项目,因此其电路尺寸大于其项目是单个的单循环项目13的电路尺寸。另外,分支历 史表14包括外围电路,诸如写电路、读电路、地址解码器等。尽管取决于项目的数目,但是 分支历史表14的功率消耗高于单循环项目13的功率消耗。例如,分支历史表14的功率消 耗比单循环项目13的功率消耗高几百倍到几万倍。分支预测器11在正常操作模式期间搜索分支历史表14。正常操作模式是其中时 钟被提供到分支历史表14的一类操作模式。分支预测器11从控制器12接收表示操作模式 已从降低功率消耗模式切换到正常操作模式的报告,并且执行用于正常操作模式的处理。分支预测器11在降低功率消耗模式期间搜索单循环项目13。降低功率消耗模式 是其中时钟没有被提供到分支历史表14的一类操作模式。因此,分支历史表14在降低功 率消耗模式期间置于“停止状态”。分支预测器11从控制器12接收表示操作模式已从正常 操作模式切换到降低功率消耗模式的报告,并且执行用于降低功率消耗模式的处理。在正常操作模式期间,分支预测器11比较从指令提取控制单元3获得的指令提取 地址和分支历史表14中的第二对应信息所包括的分支指令地址,并且确定是否存在其中 两个地址相互一致的项目。
此后,当存在其中指令提取地址与包括在第二对应信息中的分支指令地址一致的 项目时,分支预测器11进行如下预测从指令提取地址读取的指令是分支指令并且针对该 分支指令跳转分支。响应于跳转分支的预测,分支预测器11识别如下分支目的地址该分 支目的地址包括在其中上述两个地址相互一致的项目的第二对应信息中,并且与分支指令 地址有关。换句话说,分支预测器11从分支历史表14读取与其对应的分支目的地址。此后,分支预测器11将跳转分支的预测结果和识别的分支目的地址作为分支预 测处理结果传送到分支控制单元8。另外,分支预测器11将给定的控制信号和识别的分支 目的地址作为分支预测处理结果传送到指令提取控制单元3。指令提取控制单元3接收从 分支预测器11传送的分支目的地址,并且使用接收的分支目的地址作为接下来要提取的 指令地址。当不存在其中指令提取地址与包括在第二对应信息中的分支指令地址一致的项 目时,分支预测器11进行如下预测从指令提取地址读取的指令不是分支指令,或者尽管 从指令提取地址读取的指令是分支指令,但是针对该分支指令不跳转分支。分支预测器11 将预测结果传送到分支控制单元8。在降低功率消耗模式期间,分支预测器11比较指令提取地址和单循环项目13中 的第一对应信息所包括的分支指令地址,并且确定两个地址是否相互一致。此后,当指令提取地址与包括在第一对应信息中的分支指令地址一致时,分支预 测器11预测跳转分支。响应于跳转分支的预测,分支预测器11识别如下分支目的地址该 分支目的地址包括在第一对应信息中并且与分支指令地址有关。换句话说,分支预测器11 从单循环项目13读取分支目的地址。此后,分支预测器11将跳转分支的预测结果和识别的分支目的地址作为分支预 测处理结果传送到分支控制单元8。另外,分支预测器11将给定的控制信号和识别的分支 目的地址作为分支预测处理结果传送到指令提取控制单元3。指令提取控制单元3接收从 分支预测器11传送的分支目的地址,并且使用接收的分支目的地址作为接下来提取的指 令地址。当指令提取地址与包括在第一对应信息中的分支指令地址不一致时,分支预测器 11进行如下预测从指令提取地址读取的指令不是分支指令,或者尽管从指令提取地址读 取的指令是分支指令,但是针对该分支指令不跳转分支。分支预测器11将该预测作为分支 预测处理结果传送到分支控制单元8。控制器12在正常操作模式期间将时钟提供到分支历史表14和单循环项目13。提 供的时钟由分支历史表14和单循环项目13用作操作时钟。在降低功率消耗模式期间,控制器12向单循环项目13提供时钟,并且另一方面, 控制器12停止向分支历史表14提供时钟。在降低功率消耗模式期间,时钟的提供使得单 循环项目13操作并且仅重复使用第一对应信息。因此,不参考分支历史表14,并且不必将 第二对应信息添加到分支历史表14。因此,即使停止向分支历史表14提供时钟,这也并不 影响分支预测处理。另外,控制器12包括计数器15,并且执行与由计数器15计数的值(在下文中,被 称为“计数值”)的登记和更新相关联的处理。控制器12比较已由计算单元7完成了其计 算的分支指令的指令地址和单循环项目13中的第一对应信息所包括的分支指令地址。这
7使得每当已完成了其计算的分支指令的指令地址与包括在第一对应信息中的分支指令地 址一致时,控制器12增加计数器15的计数值。此后,控制器12确定计数器15的计数值是否超过门限值。计数值的门限值是预 先指定的,并且例如基于经验而确定。计数值的门限值的使用使得有可能确定分支预测机 构的操作模式从正常操作模式切换到降低功率消耗模式的时机。当计数器15的计数值超过门限值时,控制器12确定指令序列进入循环。当经过 计算的指令序列的循环数目超过门限值时,控制器12停止向分支历史表14提供时钟。这 致使分支预测机构的操作模式从正常操作模式切换到降低功率消耗模式。控制器12向分 支预测器11报告操作模式已从正常操作模式切换到降低功率消耗模式。注意,当指令序列的循环数目没有超过门限值时,不停止向分支历史表14提供时 钟。换句话说,仅当指令序列的循环数目超过门限值时,根据向分支历史表14提供时钟来 确定指令序列进入循环。响应于操作模式从正常操作模式切换到降低功率消耗模式,分支预测器11在不 搜索分支历史表14中的第二对应信息的情况下,基于单循环项目13中的第一对应信息的 搜索结果而进行分支预测。控制器12和分支预测器11与进行分支预测的控制器的示例对应。此外,在降低功率消耗模式期间,换句话说,当停止向分支历史表14提供时钟时, 控制器12比较已经完成其计算的分支指令的指令地址和单循环项目13中的第一对应信息 所包括的分支指令地址。当两地址相互不一致时,确定已从循环取出经过计算的指令序列。 响应于已从循环取出指令序列的确定,控制器12向分支历史表14提供时钟。这使得分支 预测机构的操作模式从降低功率消耗模式切换到正常操作模式。当已从循环取出指令序列 时,控制器12更新单循环项目13中的第一对应信息,并且清除计数器15的计数值。控制 器12向分支预测器11报告操作模式已从降低功率消耗模式切换到正常操作模式。注意,存在由单个指令序列引起多个循环的情况。在以上情况下,例如,当从初始 循环取出指令序列时,更新单循环项目13中的第一对应信息,并且清除计数器15的计数 值。此后,当开始指令序列的下一循环时,参考单循环项目13中的第一对应信息,并且增加 计数器15的计数值。另外,控制器12从分支控制单元8接收表示分支预测已成功或失败的信息和是否 已跳转了分支的确定结果。更具体地,控制器12从分支控制单元8接收其中已完成计算的 指令的分支指令地址和已完成其计算的分支目的地址作为表示分支已成功的信息。控制器 12将接收的分支指令地址关联到接收的分支目的地址以对它们进行配对,存储该对作为单 循环项目13的第一对应信息并且作为分支历史表14的第二对应信息。此外,控制器12基 于表示分支预测是成功还是失败的信息并且基于是否已经跳转了分支的确定结果,更新单 循环项目13中的第一对应信息或分支历史表14中的第二对应信息。注意,还有可能配置控制器12,以使得控制器12确定当分支失败了时,指令序列 没有进入循环。另外,还有可能配置控制器12,以确定当分支成功了时指令序列没有进入循 环,并且单循环项目13中的第一对应信息所包括的分支目的地址与其中已完成计算的分 支指令的分支目的地址不一致。当控制器12确定指令序列没有进入循环时,控制器12清 除计数器15的计数值。
计数器15计算其中已完成计算的指令的指令地址与单循环项目13中的第一对应 信息所包括的分支指令地址之间的一致的数目。在增加计数器15的计数值的时段期间,也 就是说,在由计算单元7进行计算的指令序列进入循环的时段期间,不更新存储在单循环 项目13中的第一对应信息。因此,存储在单循环项目13中的第一对应信息是单个,而与指 令序列的循环的长度无关。指令提取控制单元3从存储器2提取指令。存储器2是存储指令和需要用于执行 指令的数据的存储器单元。要提取的指令是包括在由计算单元7计算的指令序列中的多个 指令中的任何指令。指令提取控制单元3包括指令缓冲器31、地址生成单元32以及选择器33。指令 缓冲器31存储提取的指令。指令提取控制单元3将提取的指令的地址传送到分支预测单 元1和分支控制单元8。地址生成单元32生成跟随当前指令提取地址的指令地址。选择器 33从分支预测单元1的分支预测器11获得分支目的地址。当预测跳转分支时,选择器33 选择从分支预测器11获得的分支目的地址。另一方面,当预测不跳转分支时,选择器33选 择由地址生成单元32生成的指令地址。指令提取控制单元3使用由选择器33选择的地址 作为接下来从存储器2提取的指令地址。注意,如稍后将参考图4详细公开的那样,作为由计算单元7执行的分支指令计算 的结果,分支控制单元8确定指令提取处的分支预测是否正确。当分支预测失败时,这是由 于关于预测的指令序列的处理是不必要的,也就是说,预测是错误的。因此,必须从存储器 2提取正确的指令序列并且再执行处理。地址生成单元32生成跟随如下指令地址的指令地址作为在分支预测失败的情况 下的指令重取地址该指令地址紧邻其分支预测已失败并且已由计算单元7完成其计算的 分支指令的指令地址。当不跳转分支的分支预测失败并且计算结果表示跳转分支时,选择 器33选择作为由指令计算单元7进行的计算的结果而获得的分支目的地址。另一方面,当 跳转分支的分支预测失败并且计算结果表示不跳转分支时,选择器33选择由地址生成单 元32生成的指令地址。指令解码单元4从指令提取控制单元3的指令缓冲器31读取指令,并且对读取的 指令进行解码。指令的解码结果包括一条表示指令是否是分支指令的信息。指令解码单元 4将指令的解码结果和解码的指令传送到指令发出控制单元5。指令发出控制单元5发出解码的指令并且将指令的解码结果传送到计算单元7。 另外,指令发出控制单元5将识别针对计算单元7而发出的指令的信息传送到指令完成控 制单元6。另外,当解码的指令是分支指令时,指令发出控制单元5将激活分支控制单元8 的控制信号传送到分支控制单元8。分支控制单元8接收控制信号并开始其操作。指令发出控制单元5控制发到计算单元7的指令的上限数目。每当指令被发到计 算单元7时,指令发出控制单元5将发到计算单元7的指令的数目加一(+1)。当发到计算 单元7的指令的数目超过上限数目时,指令发出控制单元5不向计算单元7发出指令。因 此,指令发出控制单元5能够控制发到计算单元7的指令的数目,以使得发出的指令的数目 不超过上限数目。当从以下公开的指令完成控制单元6接收到表示已完成了指令的执行的报告时, 指令发出控制单元5将发到计算单元7的指令的数目减一(-1)。作为其结果,计算单元7进入能够接收从指令发出控制单元5发出的指令的状态。当从计算单元7接收到计算完成报告时,指令完成控制单元6基于用于识别已从 指令发出控制单元5传送的指令的信息,确定是否已完成了指令的计算。响应于指令执行 的完成,指令完成控制单元6向指令发出控制单元5报告已完成了指令的执行。计算单元7对包括多个指令的指令序列执行给定计算。例如,计算单元7接收由 指令发出控制单元5发出的指令,并且从存储器2读取需要用于执行接收的指令的计算的 数据。计算单元7基于接收的指令和从存储器2读取的数据而执行给定计算。当由指令解 码单元4执行的解码的结果表示指令是分支指令时,计算单元7计算该分支指令的分支条 件和分支目的地址,并且将计算结果传送到分支控制单元8。分支控制单元8从计算单元7接收计算结果,并且将其中已完成计算的指令的分 支指令地址和已完成其计算的分支目的地址传送到分支预测单元1的控制器12。另外,分 支控制单元8从计算单元7接收计算结果,并且基于计算结果和从分支预测单元1接收的 分支预测处理的结果,确定由分支预测单元1进行的分支预测处理的结果是否正确,也就 是说,分支预测是成功的还是失败的。分支控制单元8将表示分支预测成功或失败的信息 传送到分支预测单元1的控制器12。此外,当分支预测失败时,分支控制单元8将重取指令的请求(在下文中,被称为 “指令重取请求”)传送到指令提取控制单元3。通过CPU和在CPU上执行的程序来实现图1中的信息处理设备的功能和包括 在信息处理设备中的各个处理块的功能。程序能够被存储在例如半导体存储器、硬盘、 CD-ROM(致密盘只读存储器)、DVD(数字多功能盘)等的计算机可读记录介质中,并且通过 被记录在这些记录介质上来提供,或者程序通过使用网络经由通信接口从其它信息处理设 备传送/接收来提供,所述其它信息处理设备设置有这些存储程序的记录介质。图2示出了用于说明在正常操作模式中由图1中示出的分支预测单元1执行的处 理的图。分支预测单元1的控制器12从分支控制单元8接收已由计算单元7完成其计算 的分支指令的指令地址a21 (在下文中,被称为“分支指令地址a21”)和分支目的地址a22, 并且将接收的分支指令地址a21和接收的分支目的地址a22作为第二对应信息登记在分支 历史表14上(#21)。每当控制器12从分支控制单元8接收到分支指令地址a21和分支目 的地址a22时,控制器12将接收的分支指令地址a21和接收的分支目的地址a22作为新的 第二对应信息添加到分支历史表14。注意,如稍后将参考图4公开的那样,分支预测单元1 的控制器12在给定条件下更新分支历史表14中的第二对应信息。此外,分支预测单元1的分支预测器11从指令提取控制单元3获得指令提取地址 a25,并且通过使用获得的指令提取地址a25作为关键字来搜索分支历史表14 (#22)。当指令提取地址a25与分支历史表14中的第二对应信息所包括的分支指令地址 一致时,分支预测器11进行如下预测从指令提取地址a25读取的指令是分支指令,并且针 对该分支指令跳转分支。分支预测器11获得与如下分支指令地址有关的分支目的地址该 分支指令地址与第二对应信息中的指令提取地址a25 —致,并且将获得的分支目的地址作 为预测的分支目的地址a23传送到指令提取控制单元3 (#23)。当分支预测器11预测跳转分支时,选择器33从分支预测单元1接收预测的分支目的地址a23,并且选择预测的分支目的地址a23作为下一指令提取地址。指令提取控制单 元3基于由选择器33选择的指令提取地址而从存储器2提取指令,并且将提取的指令存储 在指令缓冲器31中(#24)。作为搜索分支历史表14的结果,当指令提取地址a25与包括在第二对应信息中的 分支指令地址不一致时,分支预测器11进行如下预测从指令提取地址a25读取的指令不 是分支指令,或者尽管从指令提取地址a25读取的指令是分支指令,但是针对该分支指令 不跳转分支。分支预测器11指示指令提取控制单元3的地址生成单元32,使得跟随当前指 令提取地址a25的地址用作下一指令提取地址(#25)。从分支预测器11输出的预测结果用 于选择指令提取地址。已从分支预测器11接收到指示的地址生成单元32生成跟随当前指令提取地址 a25的地址a24,并且将它输出到选择器33。当分支预测器11预测不跳转分支时,选择器33选择由地址生成单元32生成的地 址a24作为下一指令提取地址。图3示出了用于说明图1中示出的分支预测单元1中的从正常操作模式到降低功 率消耗模式的切换处理的图。图1中的分支预测单元1的控制器12包括比较器16、更新信号生成器17以及比 较器18。另外,分支预测单元1的分支预测器11包括选择器19。分支预测单元1的控制器12从分支控制单元8接收已由计算单元7完成其计算 的分支指令地址a31和已由计算单元7完成其计算的分支目的地址a32,并且将接收的分支 指令地址a31和接收的目的地址a32作为第一对应信息登记在单循环项目13上。注意,分 支指令地址a31和分支目的地址a32是与处理#21中的分支指令地址a21和分支目的地址 a22相同的地址。分支预测单元1的比较器18比较计数器15的计数值和门限值,并且确定计数值 是否超过门限值。当比较器18确定计数值超过门限值时,控制器12确定由计算单元7计 算的指令序列进入循环。当由计算单元7计算的指令序列进入循环时,控制器12停止向分支历史表14提 供时钟(#32)。这使得分支预测机构的操作模式从正常操作模式切换到降低功率消耗模式。 响应于分支预测机构的操作模式切换到降低功率消耗模式,控制器12指示选择器19选择 作为在单循环项目13上执行的搜索的结果而输出的选择分支目的地址a33 (#33)。作为通过比较器18进行的比较的结果,当计数值没有超过门限值时,控制器12确 定由计算单元7计算的指令序列没有进入循环并且继续正常操作模式。也就是说,控制器 12指示选择器19选择作为在分支历史表14上执行的搜索的结果而输出的分支目的地址 (#33)。选择器19选择由控制器12指示的分支目的地址。分支预测器11将所选的分支 目的地址作为预测的分支目的地址a34传送到指令提取控制单元3 (#39)。另外,当控制器12从分支控制单元8接收到已完成其计算的分支指令地址a31 时,比较器16比较接收的分支指令地址a31和单循环项目13中的第一对应信息的分支指 令地址阿尔法1 ( α 1) (#34)。当接收的分支指令地址a31与第一对应信息的分支指令地址α 1 一致时,比较器16输出比较结果一致信号S31。比较结果一致信号S31是表示分支指令地址a31与分支指 令地址α 1 一致的信号。控制器12基于比较结果一致信号S31而增加计数器15的计数值 (#35)。当分支指令地址a31与分支指令地址α 1不一致时,更新信号生成器17反转比较 结果一致信号S31以生成更新信号S32。更新信号S32是指示更新单循环项目13中的第一 对应信息和指示清除计数器15的信号。控制器12基于由更新信号生成器17生成的更新信号S32,通过使用分支指令地址 a31和分支目的地址a32来更新单循环项目13中的第一对应信息(#36)。另外,控制器12 基于更新信号S32而清除计数器15 (#37)。分支预测单元1的分支预测器11响应于分支预测机构的操作模式切换到降低功 率消耗模式,执行以下公开的分支预测处理。分支预测器11从指令提取控制单元3获得指令提取地址,并且通过使用获得的指 令提取地址作为关键字来搜索单循环项目13。当指令提取地址与由存储在单循环项目13 中的第一对应信息表示的分支指令地址α 1 一致时,分支预测器11进行如下预测从指令 提取地址α 1读取的指令是分支指令,并且针对该分支指令跳转分支。分支预测器11将对 应于一致的分支指令地址α 1的分支目的地址贝它1 (β 1)作为预测的分支目的地址a33 输出到选择器19 (#38)。如在上文中所公开的那样,选择器19在降低功率消耗模式期间,根据由控制器12 做出的指示来选择分支目的地址a33。然后,分支预测器11将所选的分支目的地址作为预 测的分支目的地址a34传送到指令提取控制单元3 (#39)。当由计算单元7计算的指令序列进入图3中示出的处理中的循环时,选择通过使 用单循环项目13预测的分支目的地址。另一方面,当指令序列没有进入循环时,选择通过 使用分支历史表14预测的分支目的地址。利用在上文中公开的处理,所选的分支目的地址 用于通过指令提取控制单元3进行的指令提取。这实现了在指令序列的循环执行期间分支 预测机构的功率消耗的降低。图4示出了用于说明分支控制单元8的处理的图。当从指令提取地址a44读取的指令是分支指令时,计算单元7计算该分支指令的 分支条件和分支目的地址,并且将计算结果传送到分支控制单元8。例如,对于由指令发出 控制单元5发出的分支指令,当允许跳转分支的条件是寄存器A的值等于寄存器B的值时, 包括在计算单元7中的比较器71比较寄存器A的值和寄存器B的值(#41),并且将比较结 果传送到分支控制单元8。分支控制单元8比较从计算单元7接收的计算结果和允许跳转分支的条件,并且 确定两者是否相互一致。当分支控制单元8从计算单元7接收的计算结果与允许跳转分支 的条件一致时,分支控制单元8确定针对分支指令跳转分支(#42)。另一方面,当分支控制单元8从计算单元7接收的计算结果与允许跳转分支的条 件不一致时,分支控制单元8确定针对分支指令不跳转分支。更具体地,分支控制单元8将 针对分支指令跳转分支的确定结果输入到AND电路84 (#43)。注意,在图4示出的示例中, AND电路84是反转信号所输入的逻辑电路。分支控制单元8将针对分支指令是否跳转分支的确定结果传送到分支预测单元1的控制器12。更具体地,分支控制单元8将针对分支指令跳转分支的确定结果传送到分支 预测单元1,以输入到分支预测单元1的AND电路121 (#44)。另外,分支控制单元8从分支预测单元1接收分支预测处理的结果。更具体地,分 支控制单元8从分支预测单元1的分支预测器11接收是否跳转分支的预测和由分支预测 器11预测的分支目的地址a42。分支控制单元8通过使用图4中示出的比较器81、AND电 路82、0R电路83、AND电路84以及反相器电路85,确定针对分支指令是否跳转分支。基于 从计算单元7接收的计算结果和从分支预测单元1接收的分支预测处理的结果,执行该确 定处理。如在下文中公开的以下三种(3)情况(即,第一情况到第三情况)所公开的那样 来执行该确定处理。第一情况是如下情况分支预测单元1预测跳转分支(#45),分支控制单元8确 定针对分支指令跳转分支(#42),并且通过比较器81获得已经完成其计算的分支目的地址 a41与由分支预测单元1预测的分支目的地址a42之间的一致(#46)。在第一情况下,分支 控制单元8确定分支预测成功(#47)。更具体地,将如下结果输入到AND电路82 由分支预 测单元1做出的跳转分支的预测结果、由分支控制单元8做出的针对指令跳转分支的确定 结果以及由比较器81做出的确定结果。响应于所输入的这些结果,OR电路83输出表示分 支预测成功的信息。分支控制单元8基于由OR电路83输出的信息而确定分支预测成功。第二情况是如下情况关于分支预测单元1做出的针对分支指令不跳转分支的预 测(#48),分支控制单元8确定针对分支指令不跳转分支(#43)。在第二情况下,分支控制 单元8确定分支预测成功(#47)。更具体地,将如下信号输入到AND电路84:由分支预测 单元1做出的跳转分支的预测结果的反转信号(换句话说,不跳转分支的预测)、和由分支 控制单元8做出的针对指令跳转分支的确定结果的反转信号(换句话说,不跳转分支的确 定)。响应于所输入的这些信号,OR电路83输出表示分支预测成功的信息。分支控制单元 8基于由OR电路83输出的信息而确定分支预测成功。第三情况是不归入第一情况和第二情况的情况。在第三情况下,反相器电路85反 转OR电路83的输出,并且输出表示分支预测失败的信息。响应于此信息,分支控制单元8 基于由反相器电路85输出的信息而确定分支预测失败(#49)。通过分支控制单元8进行的分支预测的成功意味着先前执行的指令序列是正确 的。因此,指令提取控制单元3不改变而继续它的处理。另一方面,通过分支控制单元8进 行的分支预测的失败意味着先前执行的指令序列是错误的。因此,在失败的情况下,分支控 制单元8将指令重取请求传送到指令提取控制单元3 (#410)。当从分支控制单元8接收到 指令重取请求时,指令提取控制单元3取消所有先前提取的指令的执行,并且从存储器2重 取正确指令地址的指令。当通过分支控制单元8进行的分支预测失败(#49)并且跳转分支(#42)时,包括 在指令提取控制单元3中的选择器33选择作为通过计算单元7进行的计算的结果而获得 的分支目的地址a41作为用于指令重取的地址a43 (#411)。当通过分支控制单元8进行的分支预测失败(#49)并且不跳转分支时,选择器33 选择与已完成其计算的分支指令的指令地址a44紧邻的指令地址作为用于指令重取的地 址a43(#411)。更具体地,包括在指令提取控制单元3中的地址生成单元32通过例如将给 定值α加到已完成其计算的分支指令的指令地址a44,来生成与已完成其计算的分支指令的指令地址a44紧邻的指令地址。然后,选择器33选择由地址生成单元32生成的指令地 址作为用于指令重取的地址a43(#411)。接下来,将公开通过分支预测单元1进行的将对应信息登记在分支历史表14上或 在单循环项目13上或者对应信息的更新。包括在分支预测单元1中的控制器12包括AND电路121、AND电路122以及比较 器123。分支预测单元1通过使用AND电路121、AND电路122以及比较器123来将对应信 息登记在分支历史表14上或单循环项目13上,或者更新登记的对应信息。当通过分支控制单元8进行的分支预测失败(#49)并且跳转分支(#42)时,将表 示分支预测失败的确定结果和表示跳转分支的确定结果输入到AND电路121 (#412和#44)。 AND电路121输出分支历史表登记信号S41。分支历史表登记信号S41是控制信号,通过其 指示将对应信息登记在分支历史表14上。分支预测单元1的控制器12基于分支历史表登 记信号S41,将如下对应信息登记在分支历史表14上该对应信息包括被确定为引起分支 的指令的分支目的地址。当通过分支控制单元8进行的分支预测失败并且不跳转分支时,分支预测单元1 的控制器12确定是否满足用于更新或删除分支历史表14中的项目的给定条件。给定条件 包括例如关于项目的分支预测中的失败的次数等于或大于预先确定的次数。当满足用于更
新或删除分支历史表14的项目的给定条件时,控制器12更新或删除分支历史表14中的项目。另外,当分支控制单元8确定跳转分支(#42)时,将确定结果输入到AND电路 122 (#44)。比较器123比较已完成其计算的分支指令的指令地址a44和由单循环项目13中 的第一对应信息表示的分支指令地址(#413)。比较器123将表示指令提取地址a44与由第 一对应信息表示的分支指令地址不一致的信息输出到AND电路122。AND电路122基于由分 支控制单元8做出的跳转分支的确定结果和由比较器123输出的结果,输出单循环项目更 新信号S42。单循环项目更新信号S42是控制信号,通过其指示更新单循环项目13中的第 一对应信息。控制器12基于单循环项目更新信号S42,通过使用已完成其计算的分支指令 的指令地址和对应于该指令地址的分支目的地址,更新单循环项目13中的第一对应信息。图5示出了用于说明响应于分支预测的成功或失败的分支预测处理操作中的状 态之间转换的图。假设计算单元7完成了分支指令的计算(#51)。当分支控制单元8确定分支预测 成功(#52)并且跳转分支(#53)时,分支预测单元1的控制器12比较已针对其跳转分支 的分支指令地址和登记在单循环项目13上的分支指令地址,并且确定两者是否相互一致 (#54)。当已针对其跳转分支的分支指令地址与登记在单循环项目13上的分支指令地址 不一致时(#54否),控制器12通过使用已针对其跳转分支的分支指令地址来更新单循环 项目13中的第一对应信息,并且清除计数器15 (#515)。这是因为已针对其跳转分支的分 支指令地址与登记在单循环项目13上的分支指令地址之间的不一致意味着由计算单元 7计算的指令序列已从由登记在单循环项目13上的分支指令产生的循环被取出,并且已进 入由例如新分支指令产生的循环。当已针对其跳转分支的分支指令地址与登记在单循环项目13上的分支指令地址
14一致时(#54是),控制器12增加计数器15的计数值(#55)。分支预测单元1的控制器12确定计数器15的计数值是否超过门限值(#56)。当 计数器15的计数值没有超过门限值时(#56否),控制器12保持当前操作模式(#510)。当 计数器15的计数值超过门限值时(#56是),控制器12确定分支预测机构的操作模式是否 置于正常操作模式(#57)。当分支预测机构的操作模式不是正常操作模式时(#57否),换 句话说,置于降低功率消耗模式时,控制器12保持当前操作模式(#510)。当分支预测机构的操作模式是正常操作模式时(#57是),控制器12停止提供被提 供到分支历史表14的时钟(#58)。这使得分支预测机构的操作模式从正常操作模式切换到 降低功率消耗模式,并且分支预测单元1的分支预测器11通过使用单循环项目13而不通 过使用分支历史表14来执行分支预测处理(#59)。当分支控制单元8确定分支预测成功(#52)并且不跳转分支(#511)时,控制器12 保持当前操作模式(#512)。当分支控制单元8确定分支预测失败时,如以下将公开的那样,分支预测单元1的 控制器12清除计数器15。这是因为分支预测失败意味着已从由登记在单循环项目13上 的分支指令产生的循环取出由计算单元7计算的指令序列,并且指令序列已进入由例如新 分支指令产生的循环。更具体地,当分支控制单元8确定分支预测失败(#513)并且跳转分支(#514)时, 控制器12通过使用已针对其跳转分支的分支指令地址来更新单循环项目13中的第一对应 信息,清除计数器15 (#515)并且执行如以下将公开的处理(#516)。当分支控制单元8确定 分支预测失败(#513)并且不跳转分支(#517)时,控制器12清除计数器15(#518)。此后,控制器12确定当前操作模式是否置于正常操作模式(#516)。在当前操作模 式置于正常操作模式时(#516是),控制器12保持当前操作模式(#510)。在当前操作模式 没有置于正常操作模式(#516否)时,换句话说,置于降低功率消耗模式时,控制器12向分 支历史表14提供已停止提供的时钟(#519)。这使得分支预测机构的操作模式从降低功率 消耗模式切换到正常操作模式,并且分支预测单元1的分支预测器11通过使用分支历史表 14来执行分支预测处理(#520)。
权利要求
一种信息处理设备,包括存储第一对应信息的第一分支历史记录单元,其中,所述第一对应信息是最近分支指令的指令地址与分支目的地址之间的对应信息,已完成了所述最近分支指令的计算并且已针对最近分支预测跳转了分支;存储第二对应信息的第二分支历史记录单元,其中,所述第二对应信息是包括所述最近分支指令的多个过去分支指令中的每个的指令地址与分支目的地址之间的对应信息,已完成了所述多个过去分支指令的计算并且已针对所述多个过去分支指令跳转了分支;以及分支预测控制单元,其基于对存储在所述第一分支历史记录单元中的所述第一对应信息和存储在所述第二分支历史记录单元中的所述第二对应信息之一的搜索结果,利用从存储器提取的指令的指令地址来进行分支预测,并且当指令序列进入循环时,停止向所述第二分支历史记录单元提供时钟,并基于对所述第一分支历史记录单元中的所述第一对应信息的搜索结果而进行分支预测。
2.根据权利要求1所述的信息处理设备,其中所述分支预测控制单元计算已完成其计算的所述分支指令的指令地址与包括在所述 第一对应信息中的指令地址之间的一致的数目,并且当计数值超过门限值时,所述分支预 测控制单元确定计算执行中的所述指令序列进入所述循环。
3.根据权利要求1所述的信息处理设备,其中当停止向所述第二分支历史记录单元提供所述时钟时,所述分支预测控制单元确定计 算执行中的所述指令序列是否进入所述循环,并且响应于计算执行中的所述指令序列没有 进入所述循环,将已停止提供的所述时钟提供到所述第二分支历史记录单元。
4.根据权利要求3所述的信息处理设备,其中当所述分支预测失败时,所述分支预测控制单元确定计算执行中的所述指令序列没有 进入所述循环。
5.根据权利要求3所述的信息处理设备,其中当所述分支预测成功并且包括在所述第一对应信息中的分支目的地址与已完成其计 算的所述分支指令的分支目的地址不一致时,所述分支预测控制单元确定计算执行中的所 述指令序列没有进入所述循环。
6.一种分支预测方法,包括将第一对应信息存储在第一分支历史记录单元中,其中,所述第一对应信息是最近分 支指令的指令地址与分支目的地址之间的对应信息,已完成了所述最近分支指令的计算并 且已针对最近分支预测跳转了分支;将第二对应信息存储在第二分支历史记录单元中,其中,所述第二对应信息是包括所 述最近分支指令的多个过去分支指令中的每个的指令地址与分支目的地址之间的对应信 息,已完成了所述多个过去分支指令的计算并且已针对所述多个过去分支指令跳转了分 支;通过分支预测控制单元确定计算执行中的指令序列是否进入循环,所述分支预测控制 单元基于对所述第一分支历史记录单元中的所述第一对应信息和所述第二分支历史记录 单元中的所述第二对应信息之一的搜索结果,利用从存储器提取的指令的指令地址来进行 分支预测;以及当计算执行中的指令序列进入循环时,所述分支预测控制单元停止向所述第二分支历 史记录单元提供时钟,并基于对所述第一分支历史记录单元中的所述第一对应信息的搜索 结果而进行分支预测。
全文摘要
本发明公开了一种信息处理设备和分支预测方法,其中信息处理器包括存储第一信息的第一记录单元,其中,所述第一信息表示最近分支指令的指令地址与分支目的地址之间的对应,已完成了最近分支指令的计算并且已针对最近分支预测跳转了分支;存储第二信息的第二记录单元,其中,所述第二信息表示包括最近分支指令的过去分支指令中的每个的指令地址与分支目的地址之间的对应,已完成了过去分支指令的计算并且已针对过去分支指令跳转了分支;以及控制单元,其基于第一信息或第二信息而进行分支预测,并且当指令序列进入循环时,停止向第二记录单元提供时钟,并基于第一信息而进行分支预测。
文档编号G06F9/38GK101901133SQ20101019399
公开日2010年12月1日 申请日期2010年5月28日 优先权日2009年6月1日
发明者铃木崇志 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1