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

文档序号:6497457阅读:163来源:国知局
无需额外寄存器执行寄存器重命名的数据处理设备和方法【专利摘要】本发明提供了用于执行寄存器重命名的数据处理设备和方法。该数据处理设备具有用于响应于数据处理指令而执行数据处理操作的处理电路,数据处理指令参考逻辑寄存器。另外,提供了一组物理寄存器,用于存储供处理电路执行数据处理操作时访问的数据值。寄存器重命名存储装置存储逻辑寄存器与物理寄存器之间的一对一映射,处理电路在执行数据处理操作时访问寄存器重命名存储装置以将所参考的逻辑寄存器映射到相应的物理寄存器。设置了更新电路,该更新电路响应于处理电路执行的要求数据被写入多个逻辑寄存器的当前数据处理操作,来标识与寄存器重命名存储装置中的该多个逻辑寄存器相对应的物理寄存器。其随后改变寄存器重命名存储装置中的该多个逻辑寄存器与所标识的物理寄存器之间的一对一映射,从而使得在执行当前数据处理操作时改变后的一对一映射被采用。对于任何其它不要求多个逻辑寄存器被写入的数据处理操作,这样的重命名不会被执行。这种方法使得寄存器重命名的安全相关的优点针对特定的数据处理操作被实现,而不需要增加物理寄存器组的大小,也不需要对运行在处理电路上的软件做任何修改。【专利说明】无需额外寄存器执行寄存器重命名的数据处理设备和方法【
技术领域
】[0001]本发明涉及无需额外寄存器执行寄存器重命名的数据处理设备和方法,该设备和方法可应用于多种情况(例如,与安全敏感应用有关的情况)。【
背景技术
】[0002]已知提供了一种数据处理设备,该数据处理设备响应于参考逻辑寄存器(又称程序模型寄存器)的数据处理指令来执行数据处理操作,同时该数据处理设备本身在一组物理寄存器内存储经受这些数据处理操作的数据值。与保持逻辑寄存器和物理寄存器之间的固定映射不同,已知执行一种被称为寄存器重命名的技术,在该技术中逻辑寄存器和物理寄存器之间的映射是变化和更新的。[0003]寄存器重命名可以主要基于性能方面的原因被执行,例如,当一个序列中的数据处理指令被并行或至少乱序执行时,用以允许数据处理指令的并行执行;寄存器重命名技术随后被用来维持给定的逻辑寄存器的不同版本,从而使得这些数据处理指令能够被并行或乱序执行而不会出现数据冲突。虽然寄存器重命名在性能方面有一定的优势,但必须在数据处理设备中提供以允许这种寄存器重命名操作发生的额外硬件由于其引入的成本和复杂性而成为缺点。该缺点使得寄存器重命名技术在相对小型、低成本、低功耗的设备中使用的机会非常有限。[0004]寄存器重命名也是安全敏感设备背景下的一种有价值的技术,因为该技术使得攻击者例如,通过细粒度观测设备的功率消耗或者通过侵入性技术来设法将值引入特定的寄存器以观察对该设备操作的影响从外部获取有关数据处理设备的内部操作的信息变得更加困难。在期望将寄存器重命名的优势应用于安全敏感设备时,这些设备通常被构造成小型、低成本、低功耗的设备,因此与典型的寄存器重命名技术相关联的额外的构造要求在传统上限制了寄存器重命名技术在这种背景中的应用机会。例如,为了使寄存器重命名技术得以操作,很多已知的寄存器重命名技术要求物理寄存器的数量超过逻辑寄存器的数量。因此,对于任何特殊设计的装置,支持寄存器重命名操作所需的物理寄存器比不使用寄存器重命名所需的物理寄存器多。在小型设备(如,小型安全微处理器)中,包含物理寄存器的寄存器文件的大小非常大,所以所需的寄存器文件的大小的增加通常会阻碍很多寄存器重命名技术在这些设备中的应用。[0005]论文“InstructionStreamMutationforNon-DeterministicProcessors,,,Irwin,PageandSmart,ProceedingsoftheIEEEInternationalConferenceonApplication-SpecificSystems,Architectures,andProcessors(ASAPf02),2002,描述了可以被用于防止差分功耗分析(DPA)安全攻击的多种技术,其中该多种技术之一涉及使用“活性表(livenesstable)”来控制寄存器重命名的寄存器重命名技术(在文章中被称为寄存器重映射)。根据该技术,物理寄存器的数量不需要超过逻辑寄存器的数量,但是额外的指令必须被添加到指令流中以产生维持活性表所需的信息。因此这种方法需要修改在该设备上运行的代码,并且由于需要执行额外指令而会对性能产生显著的影响。[0006]期望提出一种允许寄存器重命名的优势被应用于数据处理设备(特别是在小型、低成本、低功耗设备的情况下)的改进技术,该技术减少了与很多寄存器重命名技术相关的硬件需求,同时也避免了在指令流中添加额外指令的需要。【
发明内容】[0007]从第一方面看,本发明提供了一种数据处理设备,包括:处理电路,被配置为响应于数据处理指令而执行数据处理操作,所述数据处理指令参考逻辑寄存器;一组物理寄存器,被配置为存储供所述处理电路执行所述数据处理操作时访问的数据值;寄存器重命名存储装置,被配置为存储所述逻辑寄存器与所述物理寄存器之间的一对一映射,所述处理电路在执行所述数据处理操作时访问所述寄存器重命名存储装置,以将所参考的逻辑寄存器映射到相应的物理寄存器;更新电路,响应于由所述处理电路执行的要求数据被写入所述逻辑寄存器中的多个逻辑寄存器的当前数据处理操作,标识与所述寄存器重命名存储装置中的所述多个逻辑寄存器相对应的物理寄存器,并改变所述寄存器重命名存储装置中的所述多个逻辑寄存器与所标识的物理寄存器之间的一对一映射,从而使得改变后的一对一映射在执行所述当前数据处理操作时被采用;并且如果所述当前数据处理操作不要求数据被写入所述多个逻辑寄存器,那么在所述当前数据处理操作的执行期间在所述处理电路参考所述寄存器重命名存储装置之前,所述寄存器重命名存储装置中的一对一映射不会被改变。[0008]根据本发明,发明人认识到寄存器重命名可以与特定的数据处理操作相关联地被提供,而不需要相对于不支持寄存器重命名的等效设备而言增大物理寄存器的大小,并且不需要在指令流中添加额外指令。特别地,根据本发明,寄存器重命名在所述处理电路执行要求数据被写入所述多个逻辑寄存器的当前数据处理操作时被使用。在该实例中,寄存器重命名存储装置被访问以标识对应于所述多个逻辑寄存器的物理寄存器,然后所述多个逻辑寄存器与所标识的物理寄存器之间的一对一映射被改变(即,使用之前分配给所述多个逻辑寄存器的物理寄存器的群组,对这些逻辑寄存器执行寄存器重命名)。重命名的定时是这样的定时,该定时使得在当前数据处理操作的执行期间在数据被实际写入寄存器时,采用由寄存器重命名产生的改变后的一对一映射。对于任何不需要数据被写入多个逻辑寄存器的数据处理操作,不执行重命名,并且寄存器重命名存储装置的当前状态被用来确定在此数据处理操作的执行期间哪个物理寄存器被实际访问。[0009]当寄存器重命名不是针对对于物理寄存器的所有访问执行时,已经发现本发明的方法仍可以提供对于安全攻击的显著增强的保护。此外,由于与不提供寄存器重命名的等效设备相比较不需要增大物理寄存器的大小,而且不需要修改该设备上运行的程序来支持寄存器重命名,所以可以用最小的面积和性能成本实现以上效果。在安全相关设备的背景中,要求数据被写入多个逻辑寄存器的数据处理操作发生得相对频繁,例如,因为安全算法通常倾向于在对数据执行操作之前使用多加载指令(loadmultipleinstruction)来加载一系列数据值到寄存器内,并且本发明使得寄存器重命名在每当这种操作发生时就被执行。[0010]在一个实施例中,所述处理电路被配置为,如果当前数据处理操作要求数据被写入多个逻辑寄存器,则向所述更新电路提供标识所述多个逻辑寄存器的列表。然后,所述更新电路在访问所述寄存器重命名存储装置时使用该列表,以标识与该列表中的逻辑寄存器相对应的物理寄存器。在许多实现方式中,在执行要求多个寄存器被写入的数据处理操作时,所述处理电路已经产生了这样的列表作为它的输出信号之一,因此很容易考虑到将该列表提供给更新电路。[0011]更新电路改变寄存器重命名存储装置中的多个逻辑寄存器与所标识的物理寄存器之间的一对一映射的方法可采取多种形式。例如,更新电路可以在一组预定的转换中的转换之间循环,每个转换都以预定的方式将逻辑寄存器映射到物理寄存器。然而,在一个实施例中,该数据处理设备还包括随机数发生器电路,该随机数发生器电路响应于要求数据被写入多个逻辑寄存器的当前数据处理操作,输出随机数给更新电路。更新电路然后被配置为使用随机数来控制如何改变寄存器重命名存储装置中的一对一映射。产生的随机数在一个实施例中可以是真正的随机数,而在另一个实施例中伪随机数可以被生成。通过使用从随机数发生器电路输出的随机数来控制如何改变一对一映射,进一步提高了对于安全攻击的防御,因为在寄存器被重命名的方式中没有规律的模式。[0012]改变多个逻辑寄存器与所标识的物理寄存器之间的一对一映射的定时可以根据实现方式而改变。在一个实施例中,更新电路被配置为在处理电路参考寄存器重命名存储装置来标识与所述多个逻辑寄存器中的任意一个相对应的物理寄存器之前,改变所述多个逻辑寄存器与所标识的物理寄存器之间的一对一映射。因此,根据本实施例,在任意寄存器通过当前数据处理操作被写入之前,寄存器重命名针对所有的多个逻辑寄存器被一次执行。这种方法通常可以在不考虑当前数据处理操作怎样进行对寄存器的多次写入,并且因此不考虑是顺序还是至少部分并行地执行写入的情况下被采用,所以它可以确保一对一映射被及时改变以供执行任意多寄存器写入时采用。[0013]然而,在替代实施例中,如果当前数据处理操作要求数据被顺序写入多个逻辑寄存器中的每个逻辑寄存器,那么可以使用替代方法来改变一对一映射。特别地,根据这种方法,更新电路创建空闲列表,该空闲列表最初标识出了与寄存器重命名存储装置中的多个逻辑寄存器相对应的所有的所标识的物理寄存器。在当前数据处理操作要求每个逻辑寄存器被写入时,更新电路被配置为通过为该逻辑寄存器分配空闲列表中所标识的物理寄存器之一,然后将所分配的物理寄存器从空闲列表中删除来改变该逻辑寄存器的一对一映射。根据这种方法,一对一映射的改变是与每次写入交织在一起的,所以特定逻辑寄存器的一对一映射在对该特定逻辑寄存器的写入被执行之前被改变。[0014]有各种形式的可能要求数据被写入多个逻辑寄存器的数据处理操作。在一个实施例中,要求数据被写入多个逻辑寄存器的当前数据处理操作响应于多加载指令被执行,该多加载指令标识多个逻辑寄存器并且使得数据基于寄存器重命名存储装置中存储的改变后的一对一映射被从存储器加载到一组物理寄存器中的相应的多个物理寄存器。如前所述,这样的多加载指令经常用在安全相关的应用中,因此良好的安全攻击应变水平可以通过针对这些操作执行寄存器重命名来提供。另外,进一步提高的应变力(如果需要的话)可以通过在设备上运行的软件内增加使用该多加载指令来实现。[0015]替代地,或者另外,要求数据被写入多个逻辑寄存器的当前数据处理操作可以是模式转换操作,该模式转换操作使得第一操作模式转换到第二操作模式,在模式转换期间,与第二操作模式相关的数据被从堆栈加载到该组物理寄存器中的以下物理寄存器,这些物理寄存器与寄存器重命名存储装置中存储的改变后的一对一映射所标识的所述逻辑寄存器中的多个预定的逻辑寄存器相对应。在运行安全软件时,模式转换经常发生。例如,经常出现这样的情况:在正常操作模式期间发生异常,这会使处理电路变换到安全操作模式,在该安全操作模式下异常处理例程被执行。在变换到安全操作模式期间,至少一些物理寄存器中保存的数据将被从这些物理寄存器存储到存储器的堆栈中。异常处理例程完成后,处理电路将会从安全操作模式变换回正常操作模式,以恢复发生异常时运行的程序代码中从该点开始的处理。作为变换回正常操作模式的一部分,会发生出堆操作,从而使得存储器中的堆栈中保存的数据被加载回相关的物理寄存器。因为这是要求多个寄存器被写入的操作,所以在出堆操作期间可使用本发明实施例的寄存器重命名技术。[0016]在一个实施例中,该组物理寄存器可以具有允许多个物理寄存器被同时写入的多个写入端口。在这种情况下,要求数据被写入多个逻辑寄存器的进一步的数据处理操作会发生。特别地,在这样的实施例中,这样的数据处理操可以响应于一个或多个指令的运行而被执行,该一个或多个指令使得针对被映射到寄存器重命名存储装置中的相应的两个或更多个逻辑寄存器的两个或更多个物理寄存器的同时写入经由多个写入端口被执行。例如,一些比较复杂的算法指令可以导致两项结果数据的输出通过多个写入端口被同时写入两个不同的寄存器。替代地,在一些系统中,多个指令可以在不同的运行单元中并行执行,并且因此可以分别产生将通过多个写入端口被同时写入物理寄存器的输出。示例可以是并行执行两个单加载指令,并行执行算法指令和单加载指令,并行执行两个算法指令,等等。[0017]从第二方面看,本发明提供了一种在数据处理设备中执行寄存器重命名的方法,该数据处理设备包括用于响应于数据处理指令而执行数据处理操作的处理电路、以及用于存储供所述处理电路执行所述数据处理操作时访问的数据值的一组物理寄存器,所述数据处理指令参考逻辑寄存器,该方法包括:(a)在寄存器重命名存储装置中存储所述逻辑寄存器与所述物理寄存器之间的一对一映射;(b)当执行所述数据处理操作时访问所述寄存器重命名存储装置,以将所参考的逻辑寄存器映射到相应的物理寄存器;(c)响应于由所述处理电路执行的要求数据被写入所述逻辑寄存器中的多个逻辑寄存器的当前数据处理操作,标识与所述寄存器重命名存储装置中的所述多个逻辑寄存器相对应的物理寄存器,改变所述寄存器重命名存储装置中的所述多个逻辑寄存器与所标识的物理寄存器之间的一对一映射,从而使得在所述当前数据处理操作的执行期间在步骤(b)访问所述寄存器重命名存储装置时采用改变后的一对一映射;和(d)如果所述当前数据处理操作不要求数据被写入所述多个逻辑寄存器,那么保持所述寄存器重命名存储装置中的一对一映射不变,从而使得在所述当前数据处理操作的执行期间在步骤(b)访问所述寄存器重命名存储装置时采用未改变的一对一映射。[0018]从第三方面看,本发明提供了一种数据处理设备,包括:处理部件,用于响应于数据处理指令而执行数据处理操作,所述数据处理指令参考逻辑寄存器;一组物理寄存器部件,用于存储供所述处理部件执行所述数据处理操作时访问的数据值;寄存器重命名存储装置部件,用于存储所述逻辑寄存器与所述物理寄存器部件之间的一对一映射,所述处理部件在执行所述数据处理操作时访问所述寄存器重命名存储装置部件以将所参考的逻辑寄存器映射到相应的物理寄存器部件;更新部件,用于响应于由所述处理部件执行的要求数据被写入所述逻辑寄存器中的多个逻辑寄存器的当前数据处理操作,标识与所述寄存器重命名存储装置部件中的所述多个逻辑寄存器相对应的物理寄存器部件,改变所述寄存器重命名存储装置部件中的所述多个逻辑寄存器与所标识的物理寄存器部件之间的一对一映射,从而使得在执行所述当前数据处理操作时改变后的一对一映射被采用;并且如果所述当前数据处理操作不要求数据被写入所述多个逻辑寄存器,那么在所述当前数据处理操作的执行期间在所述处理部件参考所述寄存器重命名存储装置部件之前,所述寄存器重命名存储装置部件内的一对一映射不被改变。【专利附图】【附图说明】[0019]参考附图中所示的实施例,仅通过示例来进一步描述本发明,其中:[0020]图1是根据一个实施例的数据处理设备的框图;[0021]图2A更详细地示出了根据一个实施例的图1的寄存器文件电路的一个示例;[0022]图2B示出了图2A的寄存器重命名电路中的重命名表格中保存的数据,该数据用于图2A中示出的逻辑寄存器到物理寄存器的特定映射;[0023]图3是更详细地示出根据一个实施例的图2A的寄存器重命名电路中所设置的组件的框图;[0024]图4是示出根据一个实施例的在操作执行期间物理寄存器是如何被访问的流程图;[0025]图5是提供了在执行图4的处理时寄存器重命名是怎样被执行的示例的表格;[0026]图6是示出根据替代实施例的在操作执行期间物理寄存器是如何被访问的流程图;以及[0027]图7是提供了在执行图6的处理时寄存器重命名是怎样被执行的示例的表格。【具体实施方式】[0028]图1是根据一个实施例的数据处理设备的框图。在该示例中,数据处理设备采用处理器内核5的形式,处理器内核5包括用于响应于数据处理指令而执行数据处理操作的处理电路10。还提供了包括寄存器组45(在此也称为寄存器文件)的寄存器文件电路40,该寄存器组45提供用于存储供处理电路执行数据处理操作时访问的数据值的一组物理寄存器。[0029]处理电路10可以提供用于执行所需的数据处理操作的多个数据处理单元。这些数据处理单元之一通常是加载/存储单元(LSU)30,该加载/存储单元用于将数据从存储器加载到寄存器组45中的寄存器,或者将数据从寄存器组45中的寄存器存储回存储器。其他的数据处理单元(在图1中统一标识为块20)可采取多种形式,例如,用于执行算术运算的算术逻辑单元(ALU)、用于执行浮点运算的浮点单元(FPU)、以及用于预读取指令的预读取单元等。这些其他的数据处理单元20也将在它们的数据处理操作的执行期间从寄存器组45中读取数据以及向寄存器组45中写入数据。[0030]根据所述实施例,处理电路10上执行的数据处理指令参考了逻辑寄存器,并且在某些情况中可以通过寄存器重命名电路50来改变这些逻辑寄存器到寄存器组45中的物理寄存器的映射。特别地,如会在稍后详细讨论的,如果通过处理电路10执行的当前数据处理操作要求数据被写入多个逻辑寄存器,那么寄存器重命名操作被寄存器重命名电路50执行,以在该数据处理操作的执行期间数据被写入物理寄存器之前改变逻辑寄存器与物理寄存器之间的一对一映射。然而,对于不要求数据被写入多个逻辑寄存器的任意数据处理操作,不执行这样的重命名,并且由寄存器重命名电路50维持的重命名表的当前状态被用来标识逻辑寄存器与物理寄存器之间的映射。[0031]图2A更详细地示出了图1的寄存器文件电路40。在此示例中,假设寄存器组具有一个写入端口和一个读取端口,这样在任何时间点,数据只能被写入一个寄存器并且数据只能从一个寄存器读取。当要对寄存器组45的寄存器执行写入时,逻辑寄存器的指示(在此也称为逻辑写入地址)被从处理电路10提供给寄存器文件电路40的逻辑写入地址端口,然后被从该端口经过路径72路由到寄存器重命名电路50。类似地,如果要从寄存器组45的寄存器之一执行读取,那么逻辑读取地址被从处理电路10提供给寄存器文件电路40的逻辑读取地址端口,然后被从该端口经过路径76路由到寄存器重命名电路50。寄存器重命名电路维持重命名表格,该表格提供了可以在指令中指定的逻辑寄存器与寄存器组45的实际的物理寄存器42、44、46、48、50、52、54之间的一对一映射。图2B示意性地示出了用于图2A所示的具体示例的重命名表格100。在此示例中,逻辑寄存器O被映射到物理寄存器144,逻辑寄存器I被映射到物理寄存器348,等等。[0032]对于针对寄存器组45中的寄存器执行的任意读取,寄存器重命名电路50使用逻辑读取地址来访问重命名表格以标识当前被映射到该逻辑寄存器的物理寄存器,并且经过路径80将该物理寄存器的指示(在此也称为虚拟读取地址)输出到虚拟读取地址端口,该信息被用来控制多路复用器65,以使来自适当的物理寄存器的输出作为读取数据经过路径84被路由出去,该读取数据随后被送回处理电路10。[0033]对于不要求数据被写入多个逻辑寄存器的写入操作,使用经过路径72提供的逻辑写入地址执行相似的处理,其中,通过访问重命名表格标识的虚拟写入地址经过路径78被输出,以控制多路复用器60,从而使得经过路径82提供的写入数据被从处理电路10路由到寄存器组45中的相应的物理寄存器。[0034]然而,如果由处理电路10执行的当前数据处理操作要求数据被写入多个逻辑寄存器,那么寄存器重命名电路50被设置为检测这样的情况,并且被配置为在检测到时调用寄存器重命名电路50中的更新电路以在物理寄存器被写入之前针对有关逻辑寄存器执行重命名。在这样的数据处理操作被执行的很多情况中,处理电路10将经过路径74输出指示该操作为多写入操作的信号,并且在这样的实例中还将经过路径70提供标识将被写入的逻辑寄存器的列表的寄存器列表。这样的信号由处理电路10发出的示例情况是:LSU30执行多加载(loadmultiple,LDM)指令来将数据从存储器加载到寄存器组中的多个寄存器。[0035]作为另一个示例,当处理电路变换到安全操作模式以执行异常处理例程来处理发生的异常情况时,在从正常操作模式变换到安全操作模式期间,寄存器组45的当前状态通常会被存储到存储器中的堆栈。当异常处理例程完成后,处理电路10将变换回正常操作模式,在该正常操作模式期间,出栈操作将被执行以将已经被置于堆栈上的数据加载回寄存器组45。用于该操作的寄存器列表是预先确定的,因为出堆操作将针对预定数目的寄存器执行。以下的信号将被从处理电路10发布给寄存器文件电路40,该信号指示出堆操作正被执行,该信号被解释为指示存在多写入操作。[0036]在其他实施例中,多个写入端口可以被与寄存器组相关联地提供,从而使得一个以上写入操作可以针对寄存器组45被并行执行。在这种情况下,通过处理电路执行的要求数据被写入多个逻辑寄存器的操作的数量会增加,因为处理电路10的数据处理单元中执行的各个指令本身会生成一个以上将被并行写入多个逻辑寄存器的结果数据值,或者一个处理单元中执行的产生一个输出的指令可以与另一个处理单元中执行的也产生一个输出的另一指令并行执行,并且这两个输出会被同时写入寄存器文件。在这样的实施例中,将有多于一个的逻辑写入地址端口,并且寄存器列表可以由这些端口处提供的各种逻辑写入地址构建。而且,多写入条件的存在可以通过在相同的时钟周期里出现的一个以上有效逻辑写入地址的存在被检测到。[0037]每当多写入条件被检测到时,更新电路使用寄存器列表来访问重命名表格,以标识与该寄存器列表中的多个逻辑寄存器相对应的物理寄存器。然后,其在多个逻辑寄存器当中重新分配所标识的物理寄存器,以改变寄存器重命名存储装置中的该多个逻辑寄存器与这些所标识的物理寄存器之间的一对一映射。映射改变的定时被执行,从而使得每个写入在当前数据处理操作的执行期间发生,改变后的一对一映射在标识将被写入的实际的物理寄存器时被采用。[0038]图3是更详细地示出根据一个实施例的图2A的寄存器重命名电路50中设置的组件的框图。重命名表格110被提供用于针对每个逻辑寄存器标识相关联的物理寄存器。数据可以被保存在重命名表格中以实现这种映射的格式有多种。例如,指数值可以被存储,以标识如何将标识逻辑寄存器的逻辑地址转变成标识物理寄存器的虚拟地址。[0039]重命名表格110经由逻辑到物理映射电路130被访问,其中该电路可以根据经过路径132提供的逻辑寄存器指示(在此也称为逻辑寄存器地址)在重命名表格中执行查找以标识相应的物理寄存器,并可以随后将标识将被访问的物理寄存器的虚拟地址输出到寄存器组45的相关多路复用器60和65。[0040]寄存器访问控制电路140被提供用于控制逻辑到物理映射电路130的操作,并且用于针对所选择的操作控制更新电路120的操作。特别地,对于对寄存器组的每次访问,寄存器访问控制电路接收标识该访问是读取访问还是写入访问的读取/写入信号,并且还在所要求的访问涉及数据写入多个逻辑寄存器的情况下接收多写入信号。该信号被路由到寄存器访问控制电路140中的多写入检测电路150。在不存在多写入操作时,寄存器访问控制电路140发送使能信号给逻辑到物理映射电路130,以使其根据经过路径132提供的逻辑寄存器标识符来访问重命名表格110。然而,在多写入操作的情况下,寄存器访问控制电路140首先发送使能信号给更新电路120,以使其针对重命名表格100中的某些逻辑寄存器执行重命名操作。特别地,更新电路120经过路径122接收寄存器列表并且根据该信息访问重命名表格110,以标识当前与寄存器列表中标识的多个逻辑寄存器相对应的物理寄存器。其随后改变该组所标识的物理寄存器与寄存器列表中的多个逻辑寄存器相关联的方式,从而使得寄存器访问控制电路140在这个时候使能逻辑到物理映射电路130根据经过路径132提供的逻辑寄存器标识符来执行其操作,改变后的映射被使用。[0041]更新电路120改变映射的方式有多种。例如,其可以配置有一组预定的转换来执行这样的重映射,并且可以循环通过这些转换以便在每次执行这样的更新操作时使用该组转换中的不同转换。然而,在一个实施例中,随机数发生器160被提供,该随机数发生器由寄存器访问控制电路140控制来在多写入操作存在的情况下生成随机数,该随机数作为输入被提供给更新电路120。尽管所生成的随机数可以是真随机数,但是在一个实施例中,随机数发生器160是生成伪随机数的伪随机数发生器。更新电路120随后可以使用随机数来控制如何将列表中的每个逻辑寄存器映射到所标识的物理寄存器之一。这样的方法确保了不存在重复的执行更新的模式,因而进一步提高了安全性。[0042]图4是示出根据一个实施例的图3的电路操作的流程图。在步骤200,确定存在将被执行的要求对寄存器组进行访问的操作。在步骤205中,确定该操作是否需要写入寄存器组,如果不需要,那么在步骤245中寄存器访问控制电路140促使逻辑到物理映射电路130使用经过路径132提供的逻辑寄存器地址来访问重命名表格110。这会使得重命名表格在步骤245中返回与逻辑地址匹配的虚拟地址,然后数据在步骤250中被从该虚拟地址中读取出来。接着,读取的数据被返回给处理电路。处理随后在步骤255中结束。[0043]如果在步骤205中确定该操作不需要写入寄存器组,那么在步骤210中确定该操作是否只改变一个寄存器的内容。如果是,那么在步骤215中寄存器访问控制电路140促使逻辑到物理映射电路130根据经过路径132提供的逻辑寄存器地址在重命名表格110中执行查找。在该处理期间,重命名表格不变,因此逻辑寄存器保持与之前相同的虚拟地址。然后,在步骤220中,由处理电路提供的写入数据被写入到虚拟地址所标识的物理寄存器中,然后处理在步骤255中结束。[0044]如果在步骤210中确定该操作不只改变一个寄存器(即,该操作是要求数据被写入多个逻辑寄存器的操作),那么处理分支到步骤225。在步骤225中,与要更新的逻辑寄存器相关联的X个物理寄存器被标识。该步骤由更新电路120使用经过路径122提供的寄存器列表执行,其中更新电路对重命名表格110进行访问以标识这些物理寄存器。[0045]在步骤230中,更新电路120针对寄存器列表中的每个逻辑寄存器执行物理寄存器的重新分配。特别地,对于寄存器列表中的每个逻辑寄存器,更新电路120分配所标识的物理寄存器之一并且相应地更新重命名列表,以与该逻辑寄存器相关联地标识适当的虚拟地址。[0046]—旦针对每个逻辑寄存器执行了该操作,写入操作可以继续。特别地,在步骤235中,寄存器访问控制电路140促使逻辑到物理映射电路130根据路径132上所提供的逻辑寄存器标识符来访问重命名表格以获得适当的虚拟地址(这基于更新电路的操作产生的改变后的重映射),然后数据被写入该虚拟地址中的寄存器。在步骤240中确定该操作是否完成(即,所有数据已经被写入),如果没有完成,那么针对经过路径132提供的下一个逻辑寄存器标识符步骤235被重新执行。一旦操作完成,处理在步骤255中结束。[0047]图5是示意性示出在执行样本序列的指令时如何根据图4的技术对重命名表格110进行修改的表格,其中,该样本序列的指令是影响单个寄存器的移动指令、影响多个寄存器的多加载指令(LDM)、以及仅影响一个寄存器的单加载指令。当在时间to执行移动指令时,假设逻辑寄存器与物理寄存器之间的映射是由图5中的列260指示的。因为该移动指令只更新单个寄存器的内容,所以不改变重命名表格,并且相应地在针对逻辑寄存器r0执行移动操作时物理寄存器5被访问。[0048]当在时间tl执行多加载指令时,其促使更新电路120标识在执行该多加载操作时所有要被写入的寄存器。这不仅包括目的寄存器r3到r6,还包括含有源地址的源寄存器r0,因为其将会在执行多加载操作时被更新来标识新的基址。因此,如列265所示,与目的逻辑寄存器r3到r6以及源逻辑寄存器rO相关联的这些物理寄存器被标识出来(被视为空闲,可用于重映射),相关的物理寄存器为物理寄存器0、1、2、4和5。当再次处于时间tl时(即,随后在相同的时钟周期期间),基址在逻辑寄存器rO中被更新。在把该更新交给物理寄存器之前,更新电路对逻辑寄存器rO执行重映射,并且在一个实施例中物理寄存器实际上是使用从随机数发生器160输入的随机数随机选择的。在该示例中,假设随机数输入使更新电路将逻辑寄存器O和物理寄存器O关联起来,并且如列270所示,更新后的基址被相应地存储在物理寄存器O中。[0049]根据图4的处理,所有其他逻辑寄存器在相同时间被重映射,并且这可以根据所提供的随机数再次随机执行。在该示例中,如列270所示,假设逻辑寄存器5被重映射到物理寄存器I,逻辑寄存器6被重映射到物理寄存器2,逻辑寄存器4被重映射到物理寄存器4,并且逻辑寄存器3被重映射到物理寄存器5。[0050]在时间t2、t3、t4、和t5,四个写入操作被针对逻辑寄存器r3、r4、r5和r6分别执行,并且对于这些写入操作使用了在时间tl确定的修改后的重映射。列275、280、285、290示出该修改后的重映射被使用,因此,例如在时间t2逻辑寄存器3的数据值被写入到物理寄存器5,在时间t3逻辑寄存器4的数据值被写入到物理寄存器4,等等。[0051]在多加载指令被执行后,在时间t6单加载指令被执行。因为这不涉及更新一个以上逻辑寄存器,所以重命名表格的内容不会发生改变,因此当寄存器rO被更新为存储与逻辑寄存器rl所提供的地址相关联的数据时,根据重命名表格的当前内容该数据被写入物理寄存器O中。[0052]图6是示出根据替代实施例的图3的电路是如何操作的流程图。从图4和图6的比较中可以明显看出,唯一的不同出现在A点与B点之间,所以该图的其它部分不会做进一步讨论,因为所执行的步骤已经在之前参考图4讨论过。然而,根据图6,针对要求数据被写入多个逻辑寄存器的操作所执行的步骤的顺序稍有不同,在该实施例中,假设多次写入是顺序执行的。在步骤300中,与寄存器列表中的逻辑寄存器相关联的X个物理寄存器被标识出来,并且在空闲列表中被标记为空闲。空闲列表可以以各种各样的方式被提供,并且在一个实施例中可以采用对于更新电路120来说可访问的小型存储块的形式。在步骤305中,将变量N设置为I。然后,在步骤310中,对于当前的逻辑寄存器,来自空闲列表的物理寄存器被分配给该逻辑寄存器,并且重命名表格被相应地更新以与当前的逻辑寄存器相关联地标识适当的虚拟地址。[0053]然后,在步骤315中,从空闲列表中删除已被分配的物理寄存器,随后在步骤320中步骤310中考虑的逻辑寄存器所要求的写入操作被执行。因此,在此阶段,逻辑到物理映射电路130使用经过路径132提供的逻辑寄存器地址在重命名表格110中进行查找以标识这样的虚拟地址,该虚拟地址标识出了需要被写入的物理地址。此时,作为步骤310的结果出现的改变后的重映射将被利用。[0054]然后,在步骤325中,确定变量N是否等于X,即是否对所有逻辑寄存器执行了重映射,如果没有,那么变量N在步骤330中增加,并且处理返回步骤310。该处理继续,直到在步骤325中确定所有的逻辑寄存器被重映射,并且执行了所要求的所有写入操作为止,然后处理在步骤255中结束。[0055]图7是示出当执行图6的处理时重命名表格是如何被修改的表格,图7假设完全相同的序列的指令被如之前参考图5所讨论的执行。可以看出,列360和365相当于图5中的列260和265。然而,当基址再次在时间tl被更新时,只有对逻辑寄存器O的重映射被更新,并且再次假设根据从随机数发生器输出的随机数决定将逻辑寄存器O关联到物理寄存器O。此时,物理寄存器O被从空闲列表中删除,但物理寄存器1、2、4、和5仍保留在空闲列表中。在时间t2,要求将数据值写入逻辑寄存器3,对重命名表格进行进一步的修改,以使逻辑寄存器3重映射到空闲列表中的可用物理寄存器之一。这同样可以被随机完成,并且为了与图5—致假设逻辑寄存器3被分配给物理寄存器5。此时,物理寄存器5被从空闲列表中删除,并且物理寄存器1、2和4保留在空闲列表中。因此,重命名表格现在具有由列375示意性示出的形式。[0056]如列380、385和390所示,针对多加载指令的每次进一步的写入操作重命名表格被修改,并且为了与图5相一致假设与之前参考图5讨论的相同的重映射被执行。因此,在时间t5发生最后的写入操作时,重命名表格采用由列390示出的形式,这与图5的列290所示出的形式相同。以与之前参照图5讨论的同样的方式,当随后的单加载指令被执行时,不会修改重命名表格,如列395示意性地示出的。[0057]从以上对实施例的描述可以看出,该些实施例允许针对某些操作执行寄存器重命名,同时可以避免增加物理寄存器组的大小,避免为了支持寄存器重命名需要对处理器内核上执行的程序做任何改动。因此,这使寄存器重命名在某种程度上被执行,从而以相对于不具有寄存器重命名功能的相同处理器内核相比的最小开销提供了对安全攻击的增强的鲁棒性。根据所描述的技术,每当处理电路执行要求数据被写入多个逻辑寄存器的当前数据处理操作时,寄存器重命名被执行。这样的操作在执行安全应用时经常发生,因此对于这样的操作执行寄存器重命名是非常有利的。对于任何不要求数据被写入多个逻辑寄存器的操作,不执行寄存器重命名,并且重命名表格的当前内容被用于提供逻辑寄存器和物理寄存器之间的映射。与针对每个操作执行寄存器重命名的方法相比时,这种方法通过减少动态功耗而提供了功耗收益。[0058]虽然在这里描述了本发明的特定实施例,但是很明显本发明不限于此,可以在本发明范围之内做出很多的修改和添加。例如,在不脱离本发明的范围的条件下,可以对独立权利要求的特征做出下列从属权利要求的特征的各种组合。【权利要求】1.一种数据处理设备,包括:处理电路,被配置为响应于数据处理指令而执行数据处理操作,所述数据处理指令参考逻辑寄存器;一组物理寄存器,被配置为存储供所述处理电路执行所述数据处理操作时访问的数据值;寄存器重命名存储装置,被配置为存储所述逻辑寄存器与所述物理寄存器之间的一对一映射,其中,所述处理电路在执行所述数据处理操作时访问所述寄存器重命名存储装置以将所参考的逻辑寄存器映射到相应的物理寄存器;更新电路,响应于由所述处理电路执行的要求数据被写入所述逻辑寄存器中的多个逻辑寄存器的当前数据处理操作,来标识与所述寄存器重命名存储装置内的所述多个逻辑寄存器相对应的物理寄存器,并且改变所述寄存器重命名存储装置内的所述多个逻辑寄存器与所标识的物理寄存器之间的一对一映射,从而使得改变后的一对一映射在执行所述当前数据处理操作时被采用;以及如果所述当前数据处理操作不要求数据被写入所述多个逻辑寄存器,那么在所述当前数据处理操作的执行期间在所述处理电路参考所述寄存器重命名存储装置之前,所述寄存器重命名存储装置内的一对一映射不会被改变。2.根据权利要求1所述的数据处理设备,其中:所述处理电路被配置为,如果所述当前数据处理操作要求数据被写入所述多个逻辑寄存器,则向所述更新电路提供标识所述多个逻辑寄存器的列表。3.根据权利要求1或2所述的数据处理设备,进一步包括:随机数发生器电路,响应于所述当前数据处理操作要求数据被写入所述多个逻辑寄存器,而向所述更新电路输出随机数;所述更新电路被配置为使用所述随机数来控制如何改变所述寄存器重命名存储装置内的一对一映射。4.根据权利要求3所述的数据处理设备,其中,所述随机数发生器电路输出的随机数是伪随机数。5.根据前述任一权利要求所述的数据处理设备,其中:所述更新电路被配置为在所述处理电路参考所述寄存器重命名存储装置来标识与所述多个逻辑寄存器中的任意一个相对应的物理寄存器之前,改变所述多个逻辑寄存器与所标识的物理寄存器之间的一对一映射。6.根据权利要求1至4中任一项所述的数据处理设备,其中:由所述处理电路执行的所述当前数据处理操作要求数据被顺序写入所述多个逻辑寄存器中的每个逻辑寄存器;所述更新电路创建空闲列表,所述空闲列表最初标识与所述寄存器重命名存储装置内的所述多个逻辑寄存器相对应的所有的所标识的物理寄存器;在所述当前数据处理操作要求每个逻辑寄存器被写入时,所述更新电路被配置为通过分配所述空闲列表中所标识的物理寄存器之一,然后从所述空闲列表中删除所分配的物理寄存器来改变该逻辑寄存器的一对一映射。7.根据前述任一权利要求所述的数据处理设备,其中,响应于多加载指令,要求数据被写入所述多个逻辑寄存器的所述当前数据处理操作被执行,所述多加载指令标识多个逻辑寄存器并且使得数据基于所述寄存器重命名存储装置中存储的改变后的一对一映射被从存储器加载到所述一组物理寄存器中的相应的多个物理寄存器。8.根据前述任一权利要求所述的数据处理设备,其中,要求数据被写入所述多个逻辑寄存器的所述当前数据处理操作是促使从第一操作模式转换到第二操作模式的模式转换操作,在所述模式转换操作期间,与所述第二操作模式相关的数据被从堆栈加载到所述一组物理寄存器中的以下物理寄存器,该物理寄存器对应于由所述寄存器重命名存储装置内存储的改变后的一对一映射所标识的所述逻辑寄存器中的预定的多个逻辑寄存器。9.根据前述任一权利要求所述的数据处理设备,其中:所述一组物理寄存器具有多个写入端口,该多个写入端口允许多个物理寄存器被同时写入;并且响应于一个或多个指令的执行,要求数据被写入所述多个逻辑寄存器的所述当前数据处理操作被执行,所述一个或多个指令使得针对被映射到所述寄存器重命名存储装置中的相应的两个或更多个逻辑寄存器的两个或更多个物理寄存器的同时写入经由所述多个写入端口被执行。10.一种在数据处理设备中执行寄存器重命名的方法,该数据处理设备包括用于响应于数据处理指令而执行数据处理操作的处理电路以及用于存储供所述处理电路执行所述数据处理操作时访问的数据值的一组物理寄存器,所述数据处理指令参考逻辑寄存器,该方法包括:(a)在寄存器重命名存储装置内存储所述逻辑寄存器与所述物理寄存器之间的一对一映射;(b)当执行所述数据处理操作时访问所述寄存器重命名存储装置,以将所参考的逻辑寄存器映射到相应的物理寄存器;(C)响应于由所述处理电路执行的要求数据被写入所述逻辑寄存器中的多个逻辑寄存器的当前数据处理操作,标识与所述寄存器重命名存储装置内的所述多个逻辑寄存器相对应的物理寄存器,并且改变所述寄存器重命名存储装置内的所述多个逻辑寄存器与所标识的物理寄存器之间的一对一映射,从而使得在所述当前数据处理操作的执行期间在步骤(b)访问所述寄存器重命名存储装置时改变后的一对一映射被采用;以及(d)如果所述当前数据处理操作不要求数据被写入所述多个逻辑寄存器,则保持所述寄存器重命名存储装置内的一对一映射不改变,从而使得在所述当前数据处理操作的执行期间在步骤(b)访问所述寄存器重命名存储装置时未改变的一对一映射被采用。11.一种数据处理设备,包括:处理部件,用于响应于数据处理指令而执行数据处理操作,所述数据处理指令参考逻辑寄存器;一组物理寄存器部件,用于存储供所述处理部件执行所述数据处理操作时访问的数据值;寄存器重命名存储装置部件,用于存储所述逻辑寄存器与所述物理寄存器部件之间的一对一映射,所述处理部件在执行所述数据处理操作时访问所述寄存器重命名存储装置部件,以将所参考的逻辑寄存器映射到相应的物理寄存器部件;更新部件,用于响应于由所述处理部件执行的要求数据被写入所述逻辑寄存器中的多个逻辑寄存器的当前数据处理操作,标识与所述寄存器重命名存储装置部件内的所述多个逻辑寄存器相对应的物理寄存器部件,并且改变所述寄存器重命名存储装置部件内的所述多个逻辑寄存器与所标识的物理寄存器部件之间的一对一映射,从而使得在执行所述当前数据处理操作时改变后的一对一映射被采用;如果所述当前数据处理操作不要求数据被写入所述多个逻辑寄存器,那么在所述当前数据处理操作的执行期间在所述处理部件参考所述寄存器重命名存储装置部件之前,所述寄存器重命名存储装置件内的一对一映射不会被改变。【文档编号】G06F9/38GK103988174SQ201280058902【公开日】2014年8月13日申请日期:2012年10月5日优先权日:2011年12月2日【发明者】吉恩-博迪斯特·布雷罗特,塞德里克·丹尼斯·罗伯特·艾拉德申请人:Arm有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1