首页> 中国专利> 无需额外寄存器执行寄存器重命名的数据处理设备和方法

无需额外寄存器执行寄存器重命名的数据处理设备和方法

摘要

本发明提供了用于执行寄存器重命名的数据处理设备和方法。该数据处理设备具有用于响应于数据处理指令而执行数据处理操作的处理电路,数据处理指令参考逻辑寄存器。另外,提供了一组物理寄存器,用于存储供处理电路执行数据处理操作时访问的数据值。寄存器重命名存储装置存储逻辑寄存器与物理寄存器之间的一对一映射,处理电路在执行数据处理操作时访问寄存器重命名存储装置以将所参考的逻辑寄存器映射到相应的物理寄存器。设置了更新电路,该更新电路响应于处理电路执行的要求数据被写入多个逻辑寄存器的当前数据处理操作,来标识与寄存器重命名存储装置中的该多个逻辑寄存器相对应的物理寄存器。其随后改变寄存器重命名存储装置中的该多个逻辑寄存器与所标识的物理寄存器之间的一对一映射,从而使得在执行当前数据处理操作时改变后的一对一映射被采用。对于任何其它不要求多个逻辑寄存器被写入的数据处理操作,这样的重命名不会被执行。这种方法使得寄存器重命名的安全相关的优点针对特定的数据处理操作被实现,而不需要增加物理寄存器组的大小,也不需要对运行在处理电路上的软件做任何修改。

著录项

  • 公开/公告号CN103988174A

    专利类型发明专利

  • 公开/公告日2014-08-13

    原文格式PDF

  • 申请/专利权人 ARM有限公司;

    申请/专利号CN201280058902.X

  • 申请日2012-10-05

  • 分类号G06F9/38(20060101);

  • 代理机构11258 北京东方亿思知识产权代理有限责任公司;

  • 代理人李晓冬

  • 地址 英国剑桥

  • 入库时间 2023-12-17 00:55:30

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-06-22

    专利权的转移 IPC(主分类):G06F9/38 登记生效日:20180604 变更前: 变更后:

    专利申请权、专利权的转移

  • 2017-07-21

    授权

    授权

  • 2014-12-10

    实质审查的生效 IPC(主分类):G06F9/38 申请日:20121005

    实质审查的生效

  • 2014-08-13

    公开

    公开

说明书

技术领域

本发明涉及无需额外寄存器执行寄存器重命名的数据处理设备和方法, 该设备和方法可应用于多种情况(例如,与安全敏感应用有关的情况)。

背景技术

已知提供了一种数据处理设备,该数据处理设备响应于参考逻辑寄存 器(又称程序模型寄存器)的数据处理指令来执行数据处理操作,同时该 数据处理设备本身在一组物理寄存器内存储经受这些数据处理操作的数据 值。与保持逻辑寄存器和物理寄存器之间的固定映射不同,已知执行一种 被称为寄存器重命名的技术,在该技术中逻辑寄存器和物理寄存器之间的 映射是变化和更新的。

寄存器重命名可以主要基于性能方面的原因被执行,例如,当一个序 列中的数据处理指令被并行或至少乱序执行时,用以允许数据处理指令的 并行执行;寄存器重命名技术随后被用来维持给定的逻辑寄存器的不同版 本,从而使得这些数据处理指令能够被并行或乱序执行而不会出现数据冲 突。虽然寄存器重命名在性能方面有一定的优势,但必须在数据处理设备 中提供以允许这种寄存器重命名操作发生的额外硬件由于其引入的成本和 复杂性而成为缺点。该缺点使得寄存器重命名技术在相对小型、低成本、 低功耗的设备中使用的机会非常有限。

寄存器重命名也是安全敏感设备背景下的一种有价值的技术,因为该 技术使得攻击者例如,通过细粒度观测设备的功率消耗或者通过侵入性技 术来设法将值引入特定的寄存器以观察对该设备操作的影响从外部获取有 关数据处理设备的内部操作的信息变得更加困难。在期望将寄存器重命名 的优势应用于安全敏感设备时,这些设备通常被构造成小型、低成本、低 功耗的设备,因此与典型的寄存器重命名技术相关联的额外的构造要求在 传统上限制了寄存器重命名技术在这种背景中的应用机会。例如,为了使 寄存器重命名技术得以操作,很多已知的寄存器重命名技术要求物理寄存 器的数量超过逻辑寄存器的数量。因此,对于任何特殊设计的装置,支持 寄存器重命名操作所需的物理寄存器比不使用寄存器重命名所需的物理寄 存器多。在小型设备(如,小型安全微处理器)中,包含物理寄存器的寄 存器文件的大小非常大,所以所需的寄存器文件的大小的增加通常会阻碍 很多寄存器重命名技术在这些设备中的应用。

论文“Instruction Stream Mutation for Non-Deterministic Processors”, Irwin,Page and Smart,Proceedings of the IEEE International Conference on  Application-Specific Systems,Architectures,and Processors(ASAP′02),2002, 描述了可以被用于防止差分功耗分析(DPA)安全攻击的多种技术,其中 该多种技术之一涉及使用“活性表(1iveness table)”来控制寄存器重命 名的寄存器重命名技术(在文章中被称为寄存器重映射)。根据该技术, 物理寄存器的数量不需要超过逻辑寄存器的数量,但是额外的指令必须被 添加到指令流中以产生维持活性表所需的信息。因此这种方法需要修改在 该设备上运行的代码,并且由于需要执行额外指令而会对性能产生显著的 影响。

期望提出一种允许寄存器重命名的优势被应用于数据处理设备(特别 是在小型、低成本、低功耗设备的情况下)的改进技术,该技术减少了与 很多寄存器重命名技术相关的硬件需求,同时也避免了在指令流中添加额 外指令的需要。

发明内容

从第一方面看,本发明提供了一种数据处理设备,包括:处理电路, 被配置为响应于数据处理指令而执行数据处理操作,所述数据处理指令参 考逻辑寄存器;一组物理寄存器,被配置为存储供所述处理电路执行所述 数据处理操作时访问的数据值;寄存器重命名存储装置,被配置为存储所 述逻辑寄存器与所述物理寄存器之间的一对一映射,所述处理电路在执行 所述数据处理操作时访问所述寄存器重命名存储装置,以将所参考的逻辑 寄存器映射到相应的物理寄存器;更新电路,响应于由所述处理电路执行 的要求数据被写入所述逻辑寄存器中的多个逻辑寄存器的当前数据处理操 作,标识与所述寄存器重命名存储装置中的所述多个逻辑寄存器相对应的 物理寄存器,并改变所述寄存器重命名存储装置中的所述多个逻辑寄存器 与所标识的物理寄存器之间的一对一映射,从而使得改变后的一对一映射 在执行所述当前数据处理操作时被采用;并且如果所述当前数据处理操作 不要求数据被写入所述多个逻辑寄存器,那么在所述当前数据处理操作的 执行期间在所述处理电路参考所述寄存器重命名存储装置之前,所述寄存 器重命名存储装置中的一对一映射不会被改变。

根据本发明,发明人认识到寄存器重命名可以与特定的数据处理操作 相关联地被提供,而不需要相对于不支持寄存器重命名的等效设备而言增 大物理寄存器的大小,并且不需要在指令流中添加额外指令。特别地,根 据本发明,寄存器重命名在所述处理电路执行要求数据被写入所述多个逻 辑寄存器的当前数据处理操作时被使用。在该实例中,寄存器重命名存储 装置被访问以标识对应于所述多个逻辑寄存器的物理寄存器,然后所述多 个逻辑寄存器与所标识的物理寄存器之间的一对一映射被改变(即,使用 之前分配给所述多个逻辑寄存器的物理寄存器的群组,对这些逻辑寄存器 执行寄存器重命名)。重命名的定时是这样的定时,该定时使得在当前数 据处理操作的执行期间在数据被实际写入寄存器时,采用由寄存器重命名 产生的改变后的一对一映射。对于任何不需要数据被写入多个逻辑寄存器 的数据处理操作,不执行重命名,并且寄存器重命名存储装置的当前状态 被用来确定在此数据处理操作的执行期间哪个物理寄存器被实际访问。

当寄存器重命名不是针对对于物理寄存器的所有访问执行时,已经发 现本发明的方法仍可以提供对于安全攻击的显著增强的保护。此外,由于 与不提供寄存器重命名的等效设备相比较不需要增大物理寄存器的大小, 而且不需要修改该设备上运行的程序来支持寄存器重命名,所以可以用最 小的面积和性能成本实现以上效果。在安全相关设备的背景中,要求数据 被写入多个逻辑寄存器的数据处理操作发生得相对频繁,例如,因为安全 算法通常倾向于在对数据执行操作之前使用多加载指令(load multiple  instruction)来加载一系列数据值到寄存器内,并且本发明使得寄存器重命 名在每当这种操作发生时就被执行。

在一个实施例中,所述处理电路被配置为,如果当前数据处理操作要 求数据被写入多个逻辑寄存器,则向所述更新电路提供标识所述多个逻辑 寄存器的列表。然后,所述更新电路在访问所述寄存器重命名存储装置时 使用该列表,以标识与该列表中的逻辑寄存器相对应的物理寄存器。在许 多实现方式中,在执行要求多个寄存器被写入的数据处理操作时,所述处 理电路已经产生了这样的列表作为它的输出信号之一,因此很容易考虑到 将该列表提供给更新电路。

更新电路改变寄存器重命名存储装置中的多个逻辑寄存器与所标识的 物理寄存器之间的一对一映射的方法可采取多种形式。例如,更新电路可 以在一组预定的转换中的转换之间循环,每个转换都以预定的方式将逻辑 寄存器映射到物理寄存器。然而,在一个实施例中,该数据处理设备还包 括随机数发生器电路,该随机数发生器电路响应于要求数据被写入多个逻 辑寄存器的当前数据处理操作,输出随机数给更新电路。更新电路然后被 配置为使用随机数来控制如何改变寄存器重命名存储装置中的一对一映射。 产生的随机数在一个实施例中可以是真正的随机数,而在另一个实施例中 伪随机数可以被生成。通过使用从随机数发生器电路输出的随机数来控制 如何改变一对一映射,进一步提高了对于安全攻击的防御,因为在寄存器 被重命名的方式中没有规律的模式。

改变多个逻辑寄存器与所标识的物理寄存器之间的一对一映射的定时 可以根据实现方式而改变。在一个实施例中,更新电路被配置为在处理电 路参考寄存器重命名存储装置来标识与所述多个逻辑寄存器中的任意一个 相对应的物理寄存器之前,改变所述多个逻辑寄存器与所标识的物理寄存 器之间的一对一映射。因此,根据本实施例,在任意寄存器通过当前数据 处理操作被写入之前,寄存器重命名针对所有的多个逻辑寄存器被一次执 行。这种方法通常可以在不考虑当前数据处理操作怎样进行对寄存器的多 次写入,并且因此不考虑是顺序还是至少部分并行地执行写入的情况下被 采用,所以它可以确保一对一映射被及时改变以供执行任意多寄存器写入 时采用。

然而,在替代实施例中,如果当前数据处理操作要求数据被顺序写入 多个逻辑寄存器中的每个逻辑寄存器,那么可以使用替代方法来改变一对 一映射。特别地,根据这种方法,更新电路创建空闲列表,该空闲列表最 初标识出了与寄存器重命名存储装置中的多个逻辑寄存器相对应的所有的 所标识的物理寄存器。在当前数据处理操作要求每个逻辑寄存器被写入时, 更新电路被配置为通过为该逻辑寄存器分配空闲列表中所标识的物理寄存 器之一,然后将所分配的物理寄存器从空闲列表中删除来改变该逻辑寄存 器的一对一映射。根据这种方法,一对一映射的改变是与每次写入交织在 一起的,所以特定逻辑寄存器的一对一映射在对该特定逻辑寄存器的写入 被执行之前被改变。

有各种形式的可能要求数据被写入多个逻辑寄存器的数据处理操作。 在一个实施例中,要求数据被写入多个逻辑寄存器的当前数据处理操作响 应于多加载指令被执行,该多加载指令标识多个逻辑寄存器并且使得数据 基于寄存器重命名存储装置中存储的改变后的一对一映射被从存储器加载 到一组物理寄存器中的相应的多个物理寄存器。如前所述,这样的多加载 指令经常用在安全相关的应用中,因此良好的安全攻击应变水平可以通过 针对这些操作执行寄存器重命名来提供。另外,进一步提高的应变力(如 果需要的话)可以通过在设备上运行的软件内增加使用该多加载指令来实 现。

替代地,或者另外,要求数据被写入多个逻辑寄存器的当前数据处理 操作可以是模式转换操作,该模式转换操作使得第一操作模式转换到第二 操作模式,在模式转换期间,与第二操作模式相关的数据被从堆栈加载到 该组物理寄存器中的以下物理寄存器,这些物理寄存器与寄存器重命名存 储装置中存储的改变后的一对一映射所标识的所述逻辑寄存器中的多个预 定的逻辑寄存器相对应。在运行安全软件时,模式转换经常发生。例如, 经常出现这样的情况:在正常操作模式期间发生异常,这会使处理电路变 换到安全操作模式,在该安全操作模式下异常处理例程被执行。在变换到 安全操作模式期间,至少一些物理寄存器中保存的数据将被从这些物理寄 存器存储到存储器的堆栈中。异常处理例程完成后,处理电路将会从安全 操作模式变换回正常操作模式,以恢复发生异常时运行的程序代码中从该 点开始的处理。作为变换回正常操作模式的一部分,会发生出堆操作,从 而使得存储器中的堆栈中保存的数据被加载回相关的物理寄存器。因为这 是要求多个寄存器被写入的操作,所以在出堆操作期间可使用本发明实施 例的寄存器重命名技术。

在一个实施例中,该组物理寄存器可以具有允许多个物理寄存器被同 时写入的多个写入端口。在这种情况下,要求数据被写入多个逻辑寄存器 的进一步的数据处理操作会发生。特别地,在这样的实施例中,这样的数 据处理操可以响应于一个或多个指令的运行而被执行,该一个或多个指令 使得针对被映射到寄存器重命名存储装置中的相应的两个或更多个逻辑寄 存器的两个或更多个物理寄存器的同时写入经由多个写入端口被执行。例 如,一些比较复杂的算法指令可以导致两项结果数据的输出通过多个写入 端口被同时写入两个不同的寄存器。替代地,在一些系统中,多个指令可 以在不同的运行单元中并行执行,并且因此可以分别产生将通过多个写入 端口被同时写入物理寄存器的输出。示例可以是并行执行两个单加载指令, 并行执行算法指令和单加载指令,并行执行两个算法指令,等等。

从第二方面看,本发明提供了一种在数据处理设备中执行寄存器重命 名的方法,该数据处理设备包括用于响应于数据处理指令而执行数据处理 操作的处理电路、以及用于存储供所述处理电路执行所述数据处理操作时 访问的数据值的一组物理寄存器,所述数据处理指令参考逻辑寄存器,该 方法包括:(a)在寄存器重命名存储装置中存储所述逻辑寄存器与所述 物理寄存器之间的一对一映射;(b)当执行所述数据处理操作时访问所 述寄存器重命名存储装置,以将所参考的逻辑寄存器映射到相应的物理寄 存器;(c)响应于由所述处理电路执行的要求数据被写入所述逻辑寄存 器中的多个逻辑寄存器的当前数据处理操作,标识与所述寄存器重命名存 储装置中的所述多个逻辑寄存器相对应的物理寄存器,改变所述寄存器重 命名存储装置中的所述多个逻辑寄存器与所标识的物理寄存器之间的一对 一映射,从而使得在所述当前数据处理操作的执行期间在步骤(b)访问 所述寄存器重命名存储装置时采用改变后的一对一映射;和(d)如果所 述当前数据处理操作不要求数据被写入所述多个逻辑寄存器,那么保持所 述寄存器重命名存储装置中的一对一映射不变,从而使得在所述当前数据 处理操作的执行期间在步骤(b)访问所述寄存器重命名存储装置时采用 未改变的一对一映射。

从第三方面看,本发明提供了一种数据处理设备,包括:处理部件, 用于响应于数据处理指令而执行数据处理操作,所述数据处理指令参考逻 辑寄存器;一组物理寄存器部件,用于存储供所述处理部件执行所述数据 处理操作时访问的数据值;寄存器重命名存储装置部件,用于存储所述逻 辑寄存器与所述物理寄存器部件之间的一对一映射,所述处理部件在执行 所述数据处理操作时访问所述寄存器重命名存储装置部件以将所参考的逻 辑寄存器映射到相应的物理寄存器部件;更新部件,用于响应于由所述处 理部件执行的要求数据被写入所述逻辑寄存器中的多个逻辑寄存器的当前 数据处理操作,标识与所述寄存器重命名存储装置部件中的所述多个逻辑 寄存器相对应的物理寄存器部件,改变所述寄存器重命名存储装置部件中 的所述多个逻辑寄存器与所标识的物理寄存器部件之间的一对一映射,从 而使得在执行所述当前数据处理操作时改变后的一对一映射被采用;并且 如果所述当前数据处理操作不要求数据被写入所述多个逻辑寄存器,那么 在所述当前数据处理操作的执行期间在所述处理部件参考所述寄存器重命 名存储装置部件之前,所述寄存器重命名存储装置部件内的一对一映射不 被改变。

附图说明

参考附图中所示的实施例,仅通过示例来进一步描述本发明,其中:

图1是根据一个实施例的数据处理设备的框图;

图2A更详细地示出了根据一个实施例的图1的寄存器文件电路的一 个示例;

图2B示出了图2A的寄存器重命名电路中的重命名表格中保存的数据, 该数据用于图2A中示出的逻辑寄存器到物理寄存器的特定映射;

图3是更详细地示出根据一个实施例的图2A的寄存器重命名电路中 所设置的组件的框图;

图4是示出根据一个实施例的在操作执行期间物理寄存器是如何被访 问的流程图;

图5是提供了在执行图4的处理时寄存器重命名是怎样被执行的示例 的表格;

图6是示出根据替代实施例的在操作执行期间物理寄存器是如何被访 问的流程图;以及

图7是提供了在执行图6的处理时寄存器重命名是怎样被执行的示例 的表格。

具体实施方式

图1是根据一个实施例的数据处理设备的框图。在该示例中,数据处 理设备采用处理器内核5的形式,处理器内核5包括用于响应于数据处理 指令而执行数据处理操作的处理电路10。还提供了包括寄存器组45(在 此也称为寄存器文件)的寄存器文件电路40,该寄存器组45提供用于存 储供处理电路执行数据处理操作时访问的数据值的一组物理寄存器。

处理电路10可以提供用于执行所需的数据处理操作的多个数据处理 单元。这些数据处理单元之一通常是加载/存储单元(LSU)30,该加载/ 存储单元用于将数据从存储器加载到寄存器组45中的寄存器,或者将数 据从寄存器组45中的寄存器存储回存储器。其他的数据处理单元(在图1 中统一标识为块20)可采取多种形式,例如,用于执行算术运算的算术逻 辑单元(ALU)、用于执行浮点运算的浮点单元(FPU)、以及用于预读 取指令的预读取单元等。这些其他的数据处理单元20也将在它们的数据 处理操作的执行期间从寄存器组45中读取数据以及向寄存器组45中写入 数据。

根据所述实施例,处理电路10上执行的数据处理指令参考了逻辑寄 存器,并且在某些情况中可以通过寄存器重命名电路50来改变这些逻辑 寄存器到寄存器组45中的物理寄存器的映射。特别地,如会在稍后详细 讨论的,如果通过处理电路10执行的当前数据处理操作要求数据被写入 多个逻辑寄存器,那么寄存器重命名操作被寄存器重命名电路50执行, 以在该数据处理操作的执行期间数据被写入物理寄存器之前改变逻辑寄存 器与物理寄存器之间的一对一映射。然而,对于不要求数据被写入多个逻 辑寄存器的任意数据处理操作,不执行这样的重命名,并且由寄存器重命 名电路50维持的重命名表的当前状态被用来标识逻辑寄存器与物理寄存 器之间的映射。

图2A更详细地示出了图1的寄存器文件电路40。在此示例中,假设 寄存器组具有一个写入端口和一个读取端口,这样在任何时间点,数据只 能被写入一个寄存器并且数据只能从一个寄存器读取。当要对寄存器组45 的寄存器执行写入时,逻辑寄存器的指示(在此也称为逻辑写入地址)被 从处理电路10提供给寄存器文件电路40的逻辑写入地址端口,然后被从 该端口经过路径72路由到寄存器重命名电路50。类似地,如果要从寄存 器组45的寄存器之一执行读取,那么逻辑读取地址被从处理电路10提供 给寄存器文件电路40的逻辑读取地址端口,然后被从该端口经过路径76 路由到寄存器重命名电路50。寄存器重命名电路维持重命名表格,该表格 提供了可以在指令中指定的逻辑寄存器与寄存器组45的实际的物理寄存 器42、44、46、48、50、52、54之间的一对一映射。图2B示意性地示出 了用于图2A所示的具体示例的重命名表格100。在此示例中,逻辑寄存 器0被映射到物理寄存器144,逻辑寄存器1被映射到物理寄存器348, 等等。

对于针对寄存器组45中的寄存器执行的任意读取,寄存器重命名电 路50使用逻辑读取地址来访问重命名表格以标识当前被映射到该逻辑寄 存器的物理寄存器,并且经过路径80将该物理寄存器的指示(在此也称 为虚拟读取地址)输出到虚拟读取地址端口,该信息被用来控制多路复用 器65,以使来自适当的物理寄存器的输出作为读取数据经过路径84被路 由出去,该读取数据随后被送回处理电路10。

对于不要求数据被写入多个逻辑寄存器的写入操作,使用经过路径72 提供的逻辑写入地址执行相似的处理,其中,通过访问重命名表格标识的 虚拟写入地址经过路径78被输出,以控制多路复用器60,从而使得经过 路径82提供的写入数据被从处理电路10路由到寄存器组45中的相应的物 理寄存器。

然而,如果由处理电路10执行的当前数据处理操作要求数据被写入 多个逻辑寄存器,那么寄存器重命名电路50被设置为检测这样的情况, 并且被配置为在检测到时调用寄存器重命名电路50中的更新电路以在物 理寄存器被写入之前针对有关逻辑寄存器执行重命名。在这样的数据处理 操作被执行的很多情况中,处理电路10将经过路径74输出指示该操作为 多写入操作的信号,并且在这样的实例中还将经过路径70提供标识将被 写入的逻辑寄存器的列表的寄存器列表。这样的信号由处理电路10发出 的示例情况是:LSU30执行多加载(load multiple,LDM)指令来将数据 从存储器加载到寄存器组中的多个寄存器。

作为另一个示例,当处理电路变换到安全操作模式以执行异常处理例 程来处理发生的异常情况时,在从正常操作模式变换到安全操作模式期间, 寄存器组45的当前状态通常会被存储到存储器中的堆栈。当异常处理例 程完成后,处理电路10将变换回正常操作模式,在该正常操作模式期间, 出栈操作将被执行以将已经被置于堆栈上的数据加载回寄存器组45。用于 该操作的寄存器列表是预先确定的,因为出堆操作将针对预定数目的寄存 器执行。以下的信号将被从处理电路10发布给寄存器文件电路40,该信 号指示出堆操作正被执行,该信号被解释为指示存在多写入操作。

在其他实施例中,多个写入端口可以被与寄存器组相关联地提供,从 而使得一个以上写入操作可以针对寄存器组45被并行执行。在这种情况 下,通过处理电路执行的要求数据被写入多个逻辑寄存器的操作的数量会 增加,因为处理电路10的数据处理单元中执行的各个指令本身会生成一 个以上将被并行写入多个逻辑寄存器的结果数据值,或者一个处理单元中 执行的产生一个输出的指令可以与另一个处理单元中执行的也产生一个输 出的另一指令并行执行,并且这两个输出会被同时写入寄存器文件。在这 样的实施例中,将有多于一个的逻辑写入地址端口,并且寄存器列表可以 由这些端口处提供的各种逻辑写入地址构建。而且,多写入条件的存在可 以通过在相同的时钟周期里出现的一个以上有效逻辑写入地址的存在被检 测到。

每当多写入条件被检测到时,更新电路使用寄存器列表来访问重命名 表格,以标识与该寄存器列表中的多个逻辑寄存器相对应的物理寄存器。 然后,其在多个逻辑寄存器当中重新分配所标识的物理寄存器,以改变寄 存器重命名存储装置中的该多个逻辑寄存器与这些所标识的物理寄存器之 间的一对一映射。映射改变的定时被执行,从而使得每个写入在当前数据 处理操作的执行期间发生,改变后的一对一映射在标识将被写入的实际的 物理寄存器时被采用。

图3是更详细地示出根据一个实施例的图2A的寄存器重命名电路50 中设置的组件的框图。重命名表格110被提供用于针对每个逻辑寄存器标 识相关联的物理寄存器。数据可以被保存在重命名表格中以实现这种映射 的格式有多种。例如,指数值可以被存储,以标识如何将标识逻辑寄存器 的逻辑地址转变成标识物理寄存器的虚拟地址。

重命名表格110经由逻辑到物理映射电路130被访问,其中该电路可 以根据经过路径132提供的逻辑寄存器指示(在此也称为逻辑寄存器地址) 在重命名表格中执行查找以标识相应的物理寄存器,并可以随后将标识将 被访问的物理寄存器的虚拟地址输出到寄存器组45的相关多路复用器60 和65。

寄存器访问控制电路140被提供用于控制逻辑到物理映射电路130的 操作,并且用于针对所选择的操作控制更新电路120的操作。特别地,对 于对寄存器组的每次访问,寄存器访问控制电路接收标识该访问是读取访 问还是写入访问的读取/写入信号,并且还在所要求的访问涉及数据写入多 个逻辑寄存器的情况下接收多写入信号。该信号被路由到寄存器访问控制 电路140中的多写入检测电路150。在不存在多写入操作时,寄存器访问 控制电路140发送使能信号给逻辑到物理映射电路130,以使其根据经过 路径132提供的逻辑寄存器标识符来访问重命名表格110。然而,在多写 入操作的情况下,寄存器访问控制电路140首先发送使能信号给更新电路 120,以使其针对重命名表格100中的某些逻辑寄存器执行重命名操作。 特别地,更新电路120经过路径122接收寄存器列表并且根据该信息访问 重命名表格110,以标识当前与寄存器列表中标识的多个逻辑寄存器相对 应的物理寄存器。其随后改变该组所标识的物理寄存器与寄存器列表中的 多个逻辑寄存器相关联的方式,从而使得寄存器访问控制电路140在这个 时候使能逻辑到物理映射电路130根据经过路径132提供的逻辑寄存器标 识符来执行其操作,改变后的映射被使用。

更新电路120改变映射的方式有多种。例如,其可以配置有一组预定 的转换来执行这样的重映射,并且可以循环通过这些转换以便在每次执行 这样的更新操作时使用该组转换中的不同转换。然而,在一个实施例中, 随机数发生器160被提供,该随机数发生器由寄存器访问控制电路140控 制来在多写入操作存在的情况下生成随机数,该随机数作为输入被提供给 更新电路120。尽管所生成的随机数可以是真随机数,但是在一个实施例 中,随机数发生器160是生成伪随机数的伪随机数发生器。更新电路120 随后可以使用随机数来控制如何将列表中的每个逻辑寄存器映射到所标识 的物理寄存器之一。这样的方法确保了不存在重复的执行更新的模式,因 而进一步提高了安全性。

图4是示出根据一个实施例的图3的电路操作的流程图。在步骤200, 确定存在将被执行的要求对寄存器组进行访问的操作。在步骤205中,确 定该操作是否需要写入寄存器组,如果不需要,那么在步骤245中寄存器 访问控制电路140促使逻辑到物理映射电路130使用经过路径132提供的 逻辑寄存器地址来访问重命名表格110。这会使得重命名表格在步骤245 中返回与逻辑地址匹配的虚拟地址,然后数据在步骤250中被从该虚拟地 址中读取出来。接着,读取的数据被返回给处理电路。处理随后在步骤 255中结束。

如果在步骤205中确定该操作不需要写入寄存器组,那么在步骤210 中确定该操作是否只改变一个寄存器的内容。如果是,那么在步骤215中 寄存器访问控制电路140促使逻辑到物理映射电路130根据经过路径132 提供的逻辑寄存器地址在重命名表格110中执行查找。在该处理期间,重 命名表格不变,因此逻辑寄存器保持与之前相同的虚拟地址。然后,在步 骤220中,由处理电路提供的写入数据被写入到虚拟地址所标识的物理寄 存器中,然后处理在步骤255中结束。

如果在步骤210中确定该操作不只改变一个寄存器(即,该操作是要 求数据被写入多个逻辑寄存器的操作),那么处理分支到步骤225。在步 骤225中,与要更新的逻辑寄存器相关联的X个物理寄存器被标识。该步 骤由更新电路120使用经过路径122提供的寄存器列表执行,其中更新电 路对重命名表格110进行访问以标识这些物理寄存器。

在步骤230中,更新电路120针对寄存器列表中的每个逻辑寄存器执 行物理寄存器的重新分配。特别地,对于寄存器列表中的每个逻辑寄存器, 更新电路120分配所标识的物理寄存器之一并且相应地更新重命名列表, 以与该逻辑寄存器相关联地标识适当的虚拟地址。

一旦针对每个逻辑寄存器执行了该操作,写入操作可以继续。特别地, 在步骤235中,寄存器访问控制电路140促使逻辑到物理映射电路130根 据路径132上所提供的逻辑寄存器标识符来访问重命名表格以获得适当的 虚拟地址(这基于更新电路的操作产生的改变后的重映射),然后数据被 写入该虚拟地址中的寄存器。在步骤240中确定该操作是否完成(即,所 有数据已经被写入),如果没有完成,那么针对经过路径132提供的下一 个逻辑寄存器标识符步骤235被重新执行。一旦操作完成,处理在步骤 255中结束。

图5是示意性示出在执行样本序列的指令时如何根据图4的技术对重 命名表格110进行修改的表格,其中,该样本序列的指令是影响单个寄存 器的移动指令、影响多个寄存器的多加载指令(LDM)、以及仅影响一个 寄存器的单加载指令。当在时间t0执行移动指令时,假设逻辑寄存器与物 理寄存器之间的映射是由图5中的列260指示的。因为该移动指令只更新 单个寄存器的内容,所以不改变重命名表格,并且相应地在针对逻辑寄存 器r0执行移动操作时物理寄存器5被访问。

当在时间t1执行多加载指令时,其促使更新电路120标识在执行该多 加载操作时所有要被写入的寄存器。这不仅包括目的寄存器r3到r6,还包 括含有源地址的源寄存器r0,因为其将会在执行多加载操作时被更新来标 识新的基址。因此,如列265所示,与目的逻辑寄存器r3到r6以及源逻 辑寄存器r0相关联的这些物理寄存器被标识出来(被视为空闲,可用于重 映射),相关的物理寄存器为物理寄存器0、1、2、4和5。当再次处于时 间t1时(即,随后在相同的时钟周期期间),基址在逻辑寄存器r0中被 更新。在把该更新交给物理寄存器之前,更新电路对逻辑寄存器r0执行重 映射,并且在一个实施例中物理寄存器实际上是使用从随机数发生器160 输入的随机数随机选择的。在该示例中,假设随机数输入使更新电路将逻 辑寄存器0和物理寄存器0关联起来,并且如列270所示,更新后的基址 被相应地存储在物理寄存器0中。

根据图4的处理,所有其他逻辑寄存器在相同时间被重映射,并且这 可以根据所提供的随机数再次随机执行。在该示例中,如列270所示,假 设逻辑寄存器5被重映射到物理寄存器1,逻辑寄存器6被重映射到物理 寄存器2,逻辑寄存器4被重映射到物理寄存器4,并且逻辑寄存器3被 重映射到物理寄存器5。

在时间t2、t3、t4、和t5,四个写入操作被针对逻辑寄存器r3、r4、r5 和r6分别执行,并且对于这些写入操作使用了在时间t1确定的修改后的 重映射。列275、280、285、290示出该修改后的重映射被使用,因此, 例如在时间t2逻辑寄存器3的数据值被写入到物理寄存器5,在时间t3逻 辑寄存器4的数据值被写入到物理寄存器4,等等。

在多加载指令被执行后,在时间t6单加载指令被执行。因为这不涉及 更新一个以上逻辑寄存器,所以重命名表格的内容不会发生改变,因此当 寄存器r0被更新为存储与逻辑寄存器r1所提供的地址相关联的数据时, 根据重命名表格的当前内容该数据被写入物理寄存器0中。

图6是示出根据替代实施例的图3的电路是如何操作的流程图。从图 4和图6的比较中可以明显看出,唯一的不同出现在A点与B点之间,所 以该图的其它部分不会做进一步讨论,因为所执行的步骤已经在之前参考 图4讨论过。然而,根据图6,针对要求数据被写入多个逻辑寄存器的操 作所执行的步骤的顺序稍有不同,在该实施例中,假设多次写入是顺序执 行的。在步骤300中,与寄存器列表中的逻辑寄存器相关联的X个物理寄 存器被标识出来,并且在空闲列表中被标记为空闲。空闲列表可以以各种 各样的方式被提供,并且在一个实施例中可以采用对于更新电路120来说 可访问的小型存储块的形式。在步骤305中,将变量N设置为1。然后, 在步骤310中,对于当前的逻辑寄存器,来自空闲列表的物理寄存器被分 配给该逻辑寄存器,并且重命名表格被相应地更新以与当前的逻辑寄存器 相关联地标识适当的虚拟地址。

然后,在步骤315中,从空闲列表中删除已被分配的物理寄存器,随 后在步骤320中步骤310中考虑的逻辑寄存器所要求的写入操作被执行。 因此,在此阶段,逻辑到物理映射电路130使用经过路径132提供的逻辑 寄存器地址在重命名表格110中进行查找以标识这样的虚拟地址,该虚拟 地址标识出了需要被写入的物理地址。此时,作为步骤310的结果出现的 改变后的重映射将被利用。

然后,在步骤325中,确定变量N是否等于X,即是否对所有逻辑寄 存器执行了重映射,如果没有,那么变量N在步骤330中增加,并且处理 返回步骤310。该处理继续,直到在步骤325中确定所有的逻辑寄存器被 重映射,并且执行了所要求的所有写入操作为止,然后处理在步骤255中 结束。

图7是示出当执行图6的处理时重命名表格是如何被修改的表格,图 7假设完全相同的序列的指令被如之前参考图5所讨论的执行。可以看出, 列360和365相当于图5中的列260和265。然而,当基址再次在时间t1 被更新时,只有对逻辑寄存器0的重映射被更新,并且再次假设根据从随 机数发生器输出的随机数决定将逻辑寄存器0关联到物理寄存器0。此时, 物理寄存器0被从空闲列表中删除,但物理寄存器1、2、4、和5仍保留 在空闲列表中。在时间t2,要求将数据值写入逻辑寄存器3,对重命名表 格进行进一步的修改,以使逻辑寄存器3重映射到空闲列表中的可用物理 寄存器之一。这同样可以被随机完成,并且为了与图5一致假设逻辑寄存 器3被分配给物理寄存器5。此时,物理寄存器5被从空闲列表中删除, 并且物理寄存器1、2和4保留在空闲列表中。因此,重命名表格现在具 有由列375示意性示出的形式。

如列380、385和390所示,针对多加载指令的每次进一步的写入操 作重命名表格被修改,并且为了与图5相一致假设与之前参考图5讨论的 相同的重映射被执行。因此,在时间t5发生最后的写入操作时,重命名表 格采用由列390示出的形式,这与图5的列290所示出的形式相同。以与 之前参照图5讨论的同样的方式,当随后的单加载指令被执行时,不会修 改重命名表格,如列395示意性地示出的。

从以上对实施例的描述可以看出,该些实施例允许针对某些操作执行 寄存器重命名,同时可以避免增加物理寄存器组的大小,避免为了支持寄 存器重命名需要对处理器内核上执行的程序做任何改动。因此,这使寄存 器重命名在某种程度上被执行,从而以相对于不具有寄存器重命名功能的 相同处理器内核相比的最小开销提供了对安全攻击的增强的鲁棒性。根据 所描述的技术,每当处理电路执行要求数据被写入多个逻辑寄存器的当前 数据处理操作时,寄存器重命名被执行。这样的操作在执行安全应用时经 常发生,因此对于这样的操作执行寄存器重命名是非常有利的。对于任何 不要求数据被写入多个逻辑寄存器的操作,不执行寄存器重命名,并且重 命名表格的当前内容被用于提供逻辑寄存器和物理寄存器之间的映射。与 针对每个操作执行寄存器重命名的方法相比时,这种方法通过减少动态功 耗而提供了功耗收益。

虽然在这里描述了本发明的特定实施例,但是很明显本发明不限于此, 可以在本发明范围之内做出很多的修改和添加。例如,在不脱离本发明的 范围的条件下,可以对独立权利要求的特征做出下列从属权利要求的特征 的各种组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号