LIU QIANG (CN)
CN102184091A | 2011-09-14 | |||
CN102087634A | 2011-06-08 | |||
CN102349051A | 2012-02-08 | |||
US20120084497A1 | 2012-04-05 |
北京同立钧成知识产权代理有限公司 (CN)
权 利 要 求 书 1、 一种指令的跳转处理方法, 其特征在于, 包括: 在当前指令为跳转指令时, 从外部存储器中预取所述当前指令对应的跳 转的目的地址, 并在缓存中缓存所述当前指令对应跳转的目的地址; 当确定所述当前指令的跳转结果为跳转时, 根据所述缓存中的所述当前 指令对应的跳转的目的地址, 对所述当前指令进行跳转处理。 2、 根据权利要求 1所述的指令的跳转处理方法, 其特征在于, 所述在当 前指令为跳转指令时, 从外部存储器中预取所述当前指令对应的跳转的目的 地址, 包括: 在所述当前指令为跳转指令时,从 BTB中查询获取所述当前指令对应的 预取地址; 从外部存储器中预取与所述预取地址对应的跳转的目的地址。 3、 根据权利要求 1或 2所述的指令的跳转处理方法, 其特征在于, 在当 前指令为跳转指令时, 所述方法还包括: 从所述外部存储器中预取所述当前指令的地址的下一跳地址; 并在所述 缓存中缓存所述当前指令的地址的下一跳地址。 4、 根据权利要求 3所述的指令的跳转处理方法, 其特征在于, 从所述外 部存储器中预取所述当前指令的地址的下一跳地址和所述当前指令对应的跳 转的目的地址之前, 所述方法还包括: 对所述当前指令进行分支预测处理, 以预测所述当前指令的跳转结果为 跳转还是不跳转; 则所述从所述外部存储器中预取所述当前指令的地址的下一跳地址和所 述当前指令对应的跳转的目的地址, 包括: 当预测所述当前指令的跳转结果为跳转时, 从所述外部存储器中预取所 述当前指令对应的跳转的目的地址, 并在预设周期后从所述外部存储器中预 取所述当前指令的地址的下一跳地址; 当预测所述当前指令的跳转结果为不跳转时, 从所述外部存储器中预取 所述当前指令的地址的下一跳地址, 并在所述预设周期后从所述外部存储器 中预取所述当前指令对应的跳转的目的地址。 5、 根据权利要求 3所述的指令的跳转处理方法, 其特征在于, 还包括: 当确定所述当前指令的跳转结果为不跳转时, 根据所述缓存中的所述当 前指令的地址的下一跳地址, 对所述当前指令进行跳转处理。 6、 一种指令的跳转处理装置, 其特征在于, 包括: 预取模块, 用于在当前指令为跳转指令时, 从外部存储器中预取所述当 前指令对应的跳转的目的地址; 缓存模块, 用于缓存所述当前指令对应跳转的目的地址; 跳转处理模块, 用于当确定所述当前指令的跳转结果为跳转时, 根据所 述缓存模块中的所述当前指令对应的跳转的目的地址, 对所述当前指令进行 跳转处理。 7、 根据权利要求 6所述的指令的跳转处理装置, 其特征在于, 所述预取 模块包括: 查询获取单元, 用于在所述当前指令为跳转指令时, 从 BTB中查询获取 所述当前指令对应的预取地址; 预取单元, 用于从外部存储器中预取与所述预取地址对应的跳转的目的 地址。 8、 根据权利要求 7所述的指令的跳转处理装置, 其特征在于, 所述预取 单元还用于从所述外部存储器中预取所述当前指令的地址的下一跳地址; 所述缓存模块还用于缓存所述当前指令的地址的下一跳地址。 9、 根据权利要求 8所述的指令的跳转处理装置, 其特征在于, 还包括: 预测模块, 用于对所述当前指令进行分支预测处理, 以预测所述当前指 令的跳转结果为跳转还是不跳转; 则所述预取单元具体用于当所述预测模块预测所述当前指令的跳转结果 为跳转时, 从所述外部存储器中预取所述当前指令对应的跳转的目的地址, 并在预设周期后从所述外部存储器中预取所述当前指令的地址的下一跳地 址; 或者, 所述预取单元具体用于当所述预测模块预测所述当前指令的跳转结果为 不跳转时, 从所述外部存储器中预取所述当前指令的地址的下一跳地址, 并 在所述预设周期后从所述外部存储器中预取所述当前指令对应的跳转的目的 地址。 10、 根据权利要求 8所述的指令的跳转处理装置, 其特征在于, 所述跳 转处理模块还用于当确定所述当前指令的跳转结果为不跳转时, 根据所述缓 存模块中的所述当前指令的地址的下一跳地址, 对所述当前指令进行跳转处 理。 11、 一种计算机, 其特征在于, 包括: 存储器, 用于存储指令; 处理器, 与所述存储器耦合, 所述处理器被配置为执行存储在所述存储 器中的指令, 且所述处理器被配置为用于执行如权利要求 1至 5任一所述的 指令的跳转处理方法。 |
技术领域
本发明涉及计算机技术, 尤其涉及一种指令的跳转处理方法和装置。 背景技术
目前, 在指令的跳转为条件跳转 (conditional jump ) 时, 指令的跳转的 开销主要来自三个方面: 第一方面, 跳转指令从 PC生成节拍 (P-stage)到生 成跳转的目的地址所造成的开销, 即指令执行完成节拍 (E-stage) 所造成的 开销; 第二方面, 跳转指令发生跳转所造成的开销, 即从当前指令 (跳转指 令) 到目的地址的跳转所造成的开销; 第三方面, 在目的地址的指令取值时 可能会发生高速缓存缺失而造成的开销。
现有技术中,处理器一般采用动态分支预测( Branch Target Buffer;简称: BTB ) 技术来减少上述第一方面和第二方面所产生的 开销。 另外, 处理器对 于现有指令预取功能也主要按照指令的执行顺 序预取, 以减少上述第三方面 所产生的开销。 具体的, 按照指令的执行顺序预取的过程主要为: 当正在执 行的第 N条指令所在的缓存块 (cache block, 还可以称之为 cache line) 命中 (hit) 时, 预取逻辑(prefetch logic)根据不同的预取策略, 自动顺序的预取 第 N+1 line, 或者 N+1 to N+2 line, 或者 N+1 to N+4 line等。 其中, 需要说 明的是, 该 prefetch logic一般在 I-stage时发起上述预取操作。
但是, 若仅是采用 BTB技术或者执行顺序预取的功能, 则还是会存在如 下三种情况的跳转开销:
第一种情况, 在跳转指令发生跳转、 分支预测正确 (即预测的目的地址 与生成的目的地址相同) , 且跳转的目的地址超出了现有预取范围时, 还会 造成在第三方面的开销;
第二种情况, 在跳转指令发生跳转、 分支预测错误 (即预测的目的地址 与生成的目的地址不相同) , 且跳转的目的地址超出了现有预取范围时, 还 会造成上述三个方面的开销。 发明内容
本发明提供一种指令的跳转处理方法和装置, 用于有效地降低了整个跳 转的开销。
本发明的第一个方面是提供一种指令的跳转处 理方法, 包括:
在当前指令为跳转指令时, 从外部存储器中预取所述当前指令对应的跳 转的目的地址, 并在缓存中缓存所述当前指令对应跳转的目的 地址;
当确定所述当前指令的跳转结果为跳转时, 根据所述缓存中的所述当前 指令对应的跳转的目的地址, 对所述当前指令进行跳转处理。
在第一个方面的第一种可能实现方式中,所述 在当前指令为跳转指令时, 从外部存储器中预取所述当前指令对应的跳转 的目的地址, 包括:
在所述当前指令为跳转指令时,从 BTB中查询获取所述当前指令对应的 预取地址;
从外部存储器中预取与所述预取地址对应的跳 转的目的地址。
结合第一个方面或第一个方面的第一种可能实 现方式, 在第一个方面的 第二种可能实现方式中, 在当前指令为跳转指令时, 所述方法还包括:
从所述外部存储器中预取所述当前指令的地址 的下一跳地址; 并在所述 缓存中缓存所述当前指令的地址的下一跳地址 。
结合第一方面的第二种可能实现方式, 在第一方面的第三种可能实现方 式中, 从所述外部存储器中预取所述当前指令的地址 的下一跳地址和所述当 前指令对应的跳转的目的地址之前, 所述方法还包括:
对所述当前指令进行分支预测处理, 以预测所述当前指令的跳转结果为 跳转还是不跳转;
则所述从所述外部存储器中预取所述当前指令 的地址的下一跳地址和所 述当前指令对应的跳转的目的地址, 包括:
当预测所述当前指令的跳转结果为跳转时, 从所述外部存储器中预取所 述当前指令对应的跳转的目的地址, 并在预设周期后从所述外部存储器中预 取所述当前指令的地址的下一跳地址;
当预测所述当前指令的跳转结果为不跳转时, 从所述外部存储器中预取 所述当前指令的地址的下一跳地址, 并在所述预设周期后从所述外部存储器 中预取所述当前指令对应的跳转的目的地址。 结合第一方面的第二种可能实现方式, 在第一方面的第四种可能实现方 式中, 还包括:
当确定所述当前指令的跳转结果为不跳转时, 根据所述缓存中的所述当 前指令的地址的下一跳地址, 对所述当前指令进行跳转处理。
本发明的第二个方面是提供一种指令的跳转处 理装置, 包括:
预取模块, 用于在当前指令为跳转指令时, 从外部存储器中预取所述当 前指令对应的跳转的目的地址;
缓存模块, 用于缓存所述当前指令对应跳转的目的地址;
跳转处理模块, 用于当确定所述当前指令的跳转结果为跳转时 , 根据所 述缓存模块中的所述当前指令对应的跳转的目 的地址, 对所述当前指令进行 跳转处理。
在第二个方面的第一种可能实现方式中, 所述预取模块包括:
查询获取单元, 用于在所述当前指令为跳转指令时, 从 BTB中查询获取 所述当前指令对应的预取地址;
预取单元, 用于从外部存储器中预取与所述预取地址对应 的跳转的目的 地址。
结合第二个方面的第一种可能实现方式中, 在第二个方面的第二种可能 实现方式中, 所述预取单元还用于从所述外部存储器中预取 所述当前指令的 地址的下一跳地址;
所述缓存模块还用于缓存所述当前指令的地址 的下一跳地址。
结合第二个方面的第二种可能实现方式, 在第二个方面的第三种可能实 现方式中, 还包括:
预测模块, 用于对所述当前指令进行分支预测处理, 以预测所述当前指 令的跳转结果为跳转还是不跳转;
则所述预取单元具体用于当所述预测模块预测 所述当前指令的跳转结果 为跳转时, 从所述外部存储器中预取所述当前指令对应的 跳转的目的地址, 并在预设周期后从所述外部存储器中预取所述 当前指令的地址的下一跳地 址; 或者,
所述预取单元具体用于当所述预测模块预测所 述当前指令的跳转结果为 不跳转时, 从所述外部存储器中预取所述当前指令的地址 的下一跳地址, 并 在所述预设周期后从所述外部存储器中预取所 述当前指令对应的跳转的目的 地址。
结合第二个方面的第二种可能实现方式, 在第二个方面的第四种可能实 现方式中, 所述跳转处理模块还用于当确定所述当前指令 的跳转结果为不跳 转时, 根据所述缓存模块中的所述当前指令的地址的 下一跳地址, 对所述当 前指令进行跳转处理。
本发明的第三个方面是提供一种计算机, 包括: 存储器, 用于存储指令; 处理器, 与所述存储器耦合, 所述处理器被配置为执行存储在所述存储 器中的指令, 且所述处理器被配置为用于执行如上述所述的 指令的跳转处理 方法。
本发明的技术效果是: 在当前指令为跳转指令时, 从外部存储器中预取 该当前指令对应的跳转的目的地址, 并在缓存中缓存该当前指令的跳转的目 的地址, 并当确定该当前指令的跳转结果为跳转时, 根据该缓存中的当前指 令对应的跳转的目的地址, 对该当前指令进行跳转处理。 由于在当前指令为 跳转指令时, 缓存中缓存了该当前指令对应的跳转的目的地 址, 因此, 即可 以不依赖于分支预测, 还可以有效地降低了在整个跳转的开销。 附图说明 图 1为本发明指 眺转处理方法的一个实施例的流程图;
图 2为本发明指 眺转处理方法的另一个实施例的流程图;
图 3为本发明指 眺转处理方法的又一个实施例的流程图;
图 4为本发明指 眺转处理装置的一个实施例的结构
图 5为本发明指 眺转处理装置的另一个实施例的结 具体实施方式 图 1为本发明指令的跳转处理方法的一个实施例 流程图,如图 1所示, 本实施例的方法包括:
步骤 101、 在当前指令为跳转指令时, 从外部存储器中预取该当前指令 对应的跳转的目的地址,并在缓存中缓存该当 前指令对应的跳转的目的地址。
在本实施例中, 在当前执行的指令为跳转指令时, 可以在当前指令的 P 阶段 (P-stage) 发起预取操作, 并在 P+1阶段 (P+1 stage) 同时发出两条命 令 (command) , 其中, 一条命令用于按照当前程序计数器 (current PC) 顺 序预取, 即从外部存储器中预取该当前指令的地址的下 一跳地址; 另一条命 令按照 BTB中目标程序计数器(Target PC)开始预取, 即从外部存储器中预 取该当前指令对应的跳转的目的地址。 举例来说, 当前指令的地址为 N, 则 当前指令的地址的下一跳地址为 N+1 , 该当前指令对应的跳转的目的地址可 以为 N+100。
步骤 102、 当确定该当前指令的跳转结果为跳转时, 根据该缓存中的该 当前指令对应的跳转的目的地址, 对该当前指令进行跳转处理。
在本实施例中, 指令的跳转的开销主要来自三个方面: 第一方面 (可以 表示为 a) , 跳转指令从 PC生成节拍 (P-stage) 到生成跳转的目的地址所造 成的开销, 即指令执行完成节拍 (E-stage ) 所造成的开销; 第二方面 (可以 表示为 b ) , 跳转指令发生跳转所造成的开销, 即从当前指令 (跳转指令) 到目的地址的跳转所造成的开销; 第三方面(可以表示为 c) , 在目的地址的 指令取值时可能会发生高速缓存缺失而造成的 开销.
另外, 在本实施例中, 针对现有技术中的第一种情况, 即在跳转指令发 生跳转、 分支预测正确 (即预测的目的地址与生成的目的地址相同) , 且跳 转的目的地址超出了现有预取范围时, 采用本实施的技术方案, 整个跳转的 开销可以为 c-1 (2 or 3 ) cycles
针对现有技术中的第二种情况, 即在跳转指令发生跳转、 分支预测错误
(即预测的目的地址与生成的目的地址不相 ) , 且跳转的目的地址超出了 现有预取范围时, 采用本实施的技术方案, 整个跳转的开销可以为 Max{(a+b),(c-l(2 or 3))}cycles 0 其中, 1(2 or 3)表示 1或 2或 3。
在本实施例中, 在当前指令为跳转指令时, 从外部存储器中预取该当前 指令对应的跳转的目的地址,并在缓存中缓存 该当前指令的跳转的目的地址, 并当确定该当前指令的跳转结果为跳转时, 根据该缓存中的当前指令对应的 跳转的目的地址, 对该当前指令进行跳转处理。 由于在当前指令为跳转指令 时, 缓存中缓存了该当前指令对应的跳转的目的地 址, 因此, 即可以不依赖 于分支预测, 还可以有效地降低了在整个跳转的开销。
图 2为本发明指令的跳转处理方法的另一个实施 的流程图, 在上述图 1所示上述例的基础上, 如图 2所示, 步骤 101的一种具体实现方式为: 步骤 101a、在该当前指令为跳转指令时,从 BTB中查询获取该当前指令 对应的预取地址。
在本实施例中, 该预取地址为当前指令对应的跳转的目的地址 。
步骤 101b、 从外部存储器中预取与该预取地址对应的跳转 的目的地址。 步骤 101c、 在缓存中缓存该当前指令对应的目的地址。
可选地, 该方法还可以包括:
步骤 103, 从该外部存储器中预取该当前指令的地址的下 一跳地址; 并 在该缓存中缓存该当前指令的地址的下一跳地 址。
在本实施例中, 需要说明的是, 可以从外部存储器中同时预取该当前指 令的地址的下一跳地址和该当前指令对应的跳 转的目的地址, 并在该缓存中 缓存该当前指令的地址的下一跳地址和该当前 指令对应的跳转的目的地址, 还可以先后从外部存储器中预取该当前指令的 地址的下一跳地址和该当前指 令对应的跳转的目的地址。
图 3为本发明指令的跳转处理方法的又一个实施 的流程图, 如图 3所 示, 该方法包括:
步骤 201、 在当前指令为跳转指令时, 对该当前指令进行分支预测处理, 以预测该当前指令的跳转结果为跳转还是不跳 转; 若预测该当前指令的跳转 结果为跳转, 则执行步骤 202; 若预测该当前指令的跳转结果为不跳转, 则 执行步骤 203。
步骤 202、 从该外部存储器中预取并缓存该当前指令对应 的跳转的目的 地址, 并在预设周期后从该外部存储器中预取并缓存 该当前指令的地址的下 一跳地址。 再执行步骤 204。
在本实施例中, 可选地, 步骤 202的一种具体实现方式为:
从 BTB中查询获取该当前指令对应的预取地址,并 从该外部存储器中预 取该当前指令对应的跳转的目的地址;
在预设周期后从该外部存储器中预取该当前指 令的地址的下一跳地址。 步骤 203、 从该外部存储器中预取并缓存该当前指令的地 址的下一跳地 址, 并在该预设周期后从该外部存储器中预取并缓 存该当前指令对应的跳转 的目的地址。 在本实施例中, 可选地, 步骤 203的一种具体实现方式为: 从该外部存储器中预取该当前指令的地址的下 一跳地址;
在预设周期后从 BTB中查询获取该当前指令对应的预取地址,并 从该外 部存储器中预取该当前指令对应的跳转的目的 地址。
另外, 该预设周期可以为 1至 2个周期之间的任意周期。
步骤 204、 确定该当前指令的跳转结果为跳转还是不跳转 , 当确定该当 前指令的跳转结果为跳转, 则执行步骤 205 ; 当确定该当前指令的跳转结果 为不跳转, 则执行步骤 206。
步骤 205、 根据该缓存中的该当前指令对应的跳转的目的 地址, 对该当 前指令进行跳转处理。 结束。
步骤 206、 根据该缓存中的该当前指令的地址的下一跳地 址, 对该当前 指令进行跳转处理。
本领域普通技术人员可以理解: 实现上述各方法实施例的全部或部分步 骤可以通过程序指令相关的硬件来完成。 前述的程序可以存储于一计算机可 读取存储介质中。 该程序在执行时, 执行包括上述各方法实施例的步骤; 而 前述的存储介质包括: ROM、 RAM,磁碟或者光盘等各种可以存储程序代码 的介质。
图 4为本发明指令的跳转处理装置的一个实施例 结构示意图, 如图 4 所示, 该装置包括: 预取模块 11、 缓存模块 12和跳转处理模块 13 ; 其中, 预取模块 11用于在当前指令为跳转指令时,从外部存储 中预取该当前指令 对应的跳转的目的地址;缓存模块 12用于缓存该当前指令对应跳转的目的地 址; 跳转处理模块 13用于当确定该当前指令的跳转结果为跳转时 根据该缓 存模块 12中的该当前指令对应的跳转的目的地址,对 当前指令进行跳转处 理。
本实施例的指令的跳转处理装置可以执行图 1所示方法实施例的技术方 案, 其实现原理相类似, 此处不再赘述。
在本实施例中, 在本实施例中, 在当前指令为跳转指令时, 从外部存储 器中预取该当前指令对应的跳转的目的地址, 并在缓存中缓存该当前指令的 跳转的目的地址, 并当确定该当前指令的跳转结果为跳转时, 根据该缓存中 的当前指令对应的跳转的目的地址, 对该当前指令进行跳转处理。 由于在当 前指令为跳转指令时, 缓存中缓存了该当前指令对应的跳转的目的地 址, 因 此, 即可以不依赖于分支预测, 还可以有效地降低了在整个跳转的开销。
图 5为本发明指令的跳转处理装置的另一个实施 的结果示意图, 在上 述图 4所示实施例的基础上, 如图 5所示, 该预取模块 11包括: 查询获取单 元 111和预取单元 112; 其中, 查询获取单元 111用于在该当前指令为跳转 指令时, 从 BTB中查询获取该当前指令对应的预取地址; 预取单元 112用于 从外部存储器中预取与该预取地址对应的跳转 的目的地址。
可选地, 装置还包括: 预测模块 14, 用于对该当前指令进行分支预测处 理, 以预测该当前指令的跳转结果为跳转还是不跳 转;
则预取单元 112具体用于当该预测模块 14预测该当前指令的跳转结果为 跳转时, 从该外部存储器中预取该当前指令对应的跳转 的目的地址, 并在预 设周期后从该外部存储器中预取该当前指令的 地址的下一跳地址; 或者, 该预取单元 112具体用于当该预测模块 14预测该当前指令的跳转结果为 不跳转时, 从该外部存储器中预取该当前指令的地址的下 一跳地址, 并在该 预设周期后从该外部存储器中预取该当前指令 对应的跳转的目的地址。
可选地,跳转处理模块 13还用于当确定该当前指令的跳转结果为不跳 时, 根据该缓存模块中的该当前指令的地址的下一 跳地址, 对该当前指令进 行跳转处理。
本实施例的指令的跳转处理装置可以执行图 2或图 3所示方法实施例的 技术方案, 其实现原理相类似, 此处不再赘述。
本发明还提供了一种计算机, 包括存储器和处理器; 其中, 存储器用于 存储指令; 处理器, 与存储器耦合, 该处理器被配置为执行存储在该存储器 中的指令, 且该处理器被配置为用于执行图 1至图 3任一所述的指令的跳转 处理方法, 其实现原理相类似, 此处不再赘述。
最后应说明的是: 以上各实施例仅用以说明本发明的技术方案, 而非对 其限制; 尽管参照前述各实施例对本发明进行了详细的 说明, 本领域的普通 技术人员应当理解:其依然可以对前述各实施 例所记载的技术方案进行修改, 或者对其中部分或者全部技术特征进行等同替 换; 而这些修改或者替换, 并 不使相应技术方案的本质脱离本发明各实施例 技术方案的范围。
Next Patent: NETWORK CONTROL METHOD AND APPARATUS