用于解决有害孪生问题的方法和结构技术

技术编号:7169445 阅读:297 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种寄存器堆,其处于处理器中,所述寄存器堆包含第一多个第一大小n个位的寄存器。一种解码器使用映射,所述映射将所述寄存器堆划分为第二多个M个具有第二大小的寄存器。在连续名称空间中向具有所述第二大小的寄存器中的每一者指派不同的名称。所述第二大小的每一寄存器包含多个N个所述第一大小n个位的寄存器。向所述多个N个寄存器中的每一寄存器指派与包含所述多个N个寄存器的所述第二大小的所述寄存器相同的名称。在所述寄存器堆中为每一n位寄存器维持状态信息。通过所述连续名称空间来检测一指令对其它指令的相依性。所述状态信息允许所述处理器确定寄存器的任一部分或全部中的所述信息何时有效。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术大体上涉及微处理器的寄存器堆,且更明确地说,涉及同时支持多个寄存器大小的寄存器堆。
技术介绍
随着处理器已变得更强大,此类处理器所处理的数据单元的大小已连续增加。举例来说,较早的处理器中的一些处理器包含若干个寄存器堆,其中每一寄存器条目存储一数据字节。一些处理器中的寄存器堆中的寄存器大小是每一寄存器六十四位。通常,当引入新的处理器时,所述处理器经配置以处理针对具有较小寄存器大小的较早处理器而写入的计算机代码以及针对在新的处理器中可用的最大寄存器大小而写入的计算机代码,即,在新的处理器中维持了计算机程序的向后兼容性。图1是寄存器堆 100的实例,其中寄存器的大小从一代处理器到下一代所述处理器已翻倍。举例来说,较旧的处理器利用三十二个三十二位的寄存器,f0到f31。新的处理器利用三十二个六十四位的寄存器d0到d31。如图1中所示,寄存器d0的最低有效三十二个位是寄存器f0,且寄存器d0的最高有效三十二个位是寄存器fl。因此,寄存器do包含寄存器f0和寄存器fl。本文中,将寄存器fl称为寄存器f0的双生物。寄存器d0到dl5中的每一者包含两个三十二位的寄存器,且因此寄存器d0到dl5中的每一者包含双生寄存器(twin registers) 0在六十四位寄存器的最高有效位中的三十二位寄存器被称为所述六十四位寄存器的最低有效位中的三十二位寄存器的有害孪生(evil twin) 0使用寄存器堆100来用于执行使用三十二位和六十四位寄存器两者的指令可能产生问题,所述问题被称为“有害孪生”问题。如果两个指令通过六十四位寄存器的最高有效位中的三十二位寄存器而耦合, 即,通过有害孪生寄存器而耦合,那么处理器通常不会检测到所述耦合。因此,由于有害孪生问题的缘故,可能会获得不正确的结果。举例来说,用于使用六十四位操作数的指令的比较器没有将使用所述六十四位寄存器的三十二个最高有效位的指令检测为目的地。图IB是计算机程序150的片段,所述片段包含耦合的指令,但比较器并未检测到所述耦合,且因此计算机程序150遭受有害孪生问题。在图IB中,加载指令Id加载寄存器fl中的值,寄存器f 1是寄存器do的三十二个最高有效位,且为有害孪生寄存器。在下一行中,浮点双精度加法指令(floating pointing double precision add instruction) fdadd使寄存器dO中的值与寄存器d4中的值相加, 并将所得的值放置在寄存器d8中。如图IA中所指示,寄存器d0是六十四位寄存器,且因4此包含寄存器fl中的任何值。然而,用于确定浮点双精度加法指令fdadd所依赖的指令的比较器没有检测到浮点双精度加法指令fdadd对有害孪生寄存器fl中的加载指令Id的结果的相依性。因此, 可在加载指令Id完成之前执行浮点双精度加法指令fdadd。在此情况下,浮点双精度加法指令fdadd的结果的准确性是未知的,且很有可能是不正确的,因为指令Id的结果不在有害孪生寄存器fl中。类似地,也如图IA中所示,六十四位寄存器d8包含三十二位的寄存器fl7。浮点加法指令fadd使寄存器fl5中的值与有害孪生寄存器fl7中的值相加,并将所得的值放置在寄存器f23中。然而,寄存器Π7直到在浮点双精度加法指令fdadd完成之后才包含正确的值。比较器没有检测到浮点加法指令fadd对浮点双精度加法指令fdadd的结果的相依性。因此,可在浮点双精度加法指令fdadd完成之前执行浮点加法指令fadd。在此情况下,浮点加法指令fadd的结果的准确性是未知的,且很有可能是不正确的,因为指令fdadd 的结果不在有害孪生寄存器f 17中。在这些例子中的每一者中,问题在于处理器不能够检测到指令对有害孪生寄存器中的值的相依性。如所注意,此问题被称为有害孪生问题。在此实例中,寄存器fl、f3……中的每一者分别被称为寄存器f0、f2的有害孪生。 此有害孪生问题已经是公认的,因为不同大小的寄存器到同一寄存器堆的映射使寄存器堆所需要的面积最小化,同时允许在处理器上执行不同代的计算机代码。此外,为了避免有害孪生问题,举例来说,一些处理器直到已完成所有单精度指令之后才允许发起双精度指令, 且直到已完成所有双精度指令之后才允许发起单精度指令。发起的延迟使管线停止,直到完成对一个指令集的执行为止。
技术实现思路
在一个实施例中,一种处理器消除有害孪生问题。对有害孪生问题的解决方案(i) 使芯片上支持所述解决方案所需要的面积最小化;(ii)可在具有单个端口的内容可寻址存储器中实施;且(iii)不需要使管线停止。因此,与现有技术形成对比的是,具有不同大小的操作数和不同大小的结果的计算机程序中的指令可相互混合。在没有现有技术的用以避免有害孪生问题的特殊预防措施的情况下,恰当地执行相互混合的指令。在一个实施例中,在一种处理器中解决有害孪生问题,所述处理器支持(i)第一指令集,其具有具第一大小(η个位)的源和目的地的第一指令,其中η为整数,以及(ii) 第二指令集,其具有具第二大小(m个位)的源和目的地的第二指令,其中m为整数。第二大小(m个位)是第一大小(η个位)的偶整数倍。处理器中的寄存器堆包含第一多个具有第一大小的寄存器。解码器使用映射,所述映射将寄存器堆划分为第二多个(Μ个)具有第二大小的寄存器。所述第二大小是寄存器堆中用于存储数据的最大大小的寄存器。在所述映射中,在连续名称空间中向具有第二大小(m个位)的寄存器中的每一者指派不同的名称。具有所述第二大小的每一寄存器包含第三多个(N个)具有所述第一大小(η个位)的寄存器,其中N为偶整数。如上文所指示,整数m是整数η的偶数(N)倍。第一大小是寄存器堆中用于存储数据的最小大小的寄存器。所述映射向第三多个(N个)寄存器中的每一寄存器指派与包含所述多个寄存器的具有第二大小的寄存器相同的名称。因此,寄存器堆映射到(M*N)个η位寄存器中,使得所述第一多个寄存器为(Μ*Ν) 个寄存器。为每一η位寄存器将状态信息维持在所述寄存器堆中。在一个实施例中,通过有效位来提供所述状态信息。可存在一组大于第一大小但小于第二大小的中间大小寄存器,所述中间大小寄存器也映射到与含有所述中间大小寄存器的m位寄存器的名称相同的名称。较大的中间大小寄存器也是最小大小寄存器的偶整数倍。当向特定寄存器写入时,与所述寄存器大小相关联的所有有效位得以断言。由于具有第二大小的寄存器和包含在所述寄存器中的所有具有第一大小的寄存器具有共用名称,所以易于查明利用不同大小的寄存器的指令之间的寄存器相依性。而且, 由于将状态信息维持在用于具有第一大小的每一寄存器的寄存器堆中,所以处理器可确定利用具有第二大小的寄存器的全部或一部分的指令何时就绪,且因此可在不使管线停止的情况下在适当的时间发出指令以供执行。与状态信息组合的唯一映射消除了处理器的有害孪生问题。在一个实施例中,一种处理器包含寄存器堆,其包括多个具有第一大小的寄存器;以及解码单元。所述解码单元对来自具有具第一大小的源和目的地的第一指令集的指令以及来自具有具第二大小的源和目的地的第二指令集的指令进行解码。第二大小是第一大小的η倍,其中η是偶整数。解码单元还包含映射单元,所述映射单元用于将用于第一指令集中的指令的寄存器名称本文档来自技高网
...

【技术保护点】
1.一种处理器,其包括:寄存器堆,其包括多个第一大小的寄存器;以及解码单元,其用于对具有所述第一大小的源和目的地的第一指令以及具有第二大小的源和目的地的第二指令进行解码,其中所述第二大小是所述第一大小的偶整数n倍,所述解码单元进一步包括:映射单元,其用于将用于所述第一指令的寄存器名称和用于所述第二指令的寄存器名称映射到共用名称空间中,其中所述共用名称空间中的寄存器名称是(i)用于所述多个寄存器中的一组n个寄存器中的每一寄存器以及(ii)用于包含所述组n个寄存器的所述第二大小的寄存器的同一寄存器名称;且所述共用名称空间是用于所述寄存器堆的连续名称空间。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:沙伊伦德尔·乔杜里马克·特伦布莱
申请(专利权)人:甲骨文股份有限公司
类型:发明
国别省市:US

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1