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

上传人:ting****789 文档编号:310027229 上传时间:2022-06-14 格式:DOCX 页数:5 大小:22.85KB
返回 下载 相关 举报
用于解决有害孪生问题的方法和结构的制作方法_第1页
第1页 / 共5页
亲,该文档总共5页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《用于解决有害孪生问题的方法和结构的制作方法》由会员分享,可在线阅读,更多相关《用于解决有害孪生问题的方法和结构的制作方法(5页珍藏版)》请在金锄头文库上搜索。

1、用于解决有害孪生问题的方法和结构的制作方法专利名称:用于解决有害孪生问题的方法和结构的制作方法技术领域:本发明大体上涉及微处理器的寄存器堆,且更明确地说,涉及同时支持多个寄存器大小的寄存器堆。背景技术:随着处理器已变得更强大,此类处理器所处理的数据单元的大小已连续增加。举例来说,较早的处理器中的一些处理器包含若干个寄存器堆,其中每一寄存器条目存储一数据字节。一些处理器中的寄存器堆中的寄存器大小是每一寄存器六十四位。通常,当引入新的处理器时,所述处理器经配置以处理针对具有较小寄存器大小的较早处理器而写入的计算机代码以及针对在新的处理器中可用的最大寄存器大小而写入的计算机代码,即,在新的处理器中维

2、持了计算机程序的向后兼容性。图1是寄存器堆 100的实例,其中寄存器的大小从一代处理器到下一代所述处理器已翻倍。举例来说,较旧的处理器利用三十二个三十二位的寄存器,f0到f31。新的处理器利用三十二个六十四位的寄存器d0到d31。如图1中所示,寄存器d0的最低有效三十二个位是寄存器f0,且寄存器d0的最高有效三十二个位是寄存器fl。因此,寄存器do包含寄存器f0和寄存器fl。本文中,将寄存器fl称为寄存器f0的双生物。寄存器d0到dl5中的每一者包含两个三十二位的寄存器,且因此寄存器d0到dl5中的每一者包含双生寄存器(twin registers) 0在六十四位寄存器的最高有效位中的三十二位

3、寄存器被称为所述六十四位寄存器的最低有效位中的三十二位寄存器的有害孪生(evil twin) 0使用寄存器堆100来用于执行使用三十二位和六十四位寄存器两者的指令可能产生问题,所述问题被称为“有害孪生”问题。如果两个指令通过六十四位寄存器的最高有效位中的三十二位寄存器而耦合, 即,通过有害孪生寄存器而耦合,那么处理器通常不会检测到所述耦合。因此,由于有害孪生问题的缘故,可能会获得不正确的结果。举例来说,用于使用六十四位操作数的指令的比较器没有将使用所述六十四位寄存器的三十二个最高有效位的指令检测为目的地。图IB是计算机程序150的片段,所述片段包含耦合的指令,但比较器并未检测到所述耦合,且因此

4、计算机程序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的结果的相依性。

5、因此, 可在加载指令Id完成之前执行浮点双精度加法指令fdadd。在此情况下,浮点双精度加法指令fdadd的结果的准确性是未知的,且很有可能是不正确的,因为指令Id的结果不在有害孪生寄存器fl中。类似地,也如图IA中所示,六十四位寄存器d8包含三十二位的寄存器fl7。浮点加法指令fadd使寄存器fl5中的值与有害孪生寄存器fl7中的值相加,并将所得的值放置在寄存器f23中。然而,寄存器7直到在浮点双精度加法指令fdadd完成之后才包含正确的值。比较器没有检测到浮点加法指令fadd对浮点双精度加法指令fdadd的结果的相依性。因此,可在浮点双精度加法指令fdadd完成之前执行浮点加法指令fadd

6、。在此情况下,浮点加法指令fadd的结果的准确性是未知的,且很有可能是不正确的,因为指令fdadd 的结果不在有害孪生寄存器f 17中。在这些例子中的每一者中,问题在于处理器不能够检测到指令对有害孪生寄存器中的值的相依性。如所注意,此问题被称为有害孪生问题。在此实例中,寄存器fl、f3中的每一者分别被称为寄存器f0、f2的有害孪生。 此有害孪生问题已经是公认的,因为不同大小的寄存器到同一寄存器堆的映射使寄存器堆所需要的面积最小化,同时允许在处理器上执行不同代的计算机代码。此外,为了避免有害孪生问题,举例来说,一些处理器直到已完成所有单精度指令之后才允许发起双精度指令, 且直到已完成所有双精度指

7、令之后才允许发起单精度指令。发起的延迟使管线停止,直到完成对一个指令集的执行为止。发明内容在一个实施例中,一种处理器消除有害孪生问题。对有害孪生问题的解决方案(i) 使芯片上支持所述解决方案所需要的面积最小化;(ii)可在具有单个端口的内容可寻址存储器中实施;且(iii)不需要使管线停止。因此,与现有技术形成对比的是,具有不同大小的操作数和不同大小的结果的计算机程序中的指令可相互混合。在没有现有技术的用以避免有害孪生问题的特殊预防措施的情况下,恰当地执行相互混合的指令。在一个实施例中,在一种处理器中解决有害孪生问题,所述处理器支持(i)第一指令集,其具有具第一大小(个位)的源和目的地的第一指令

8、,其中为整数,以及(ii) 第二指令集,其具有具第二大小(m个位)的源和目的地的第二指令,其中m为整数。第二大小(m个位)是第一大小(个位)的偶整数倍。处理器中的寄存器堆包含第一多个具有第一大小的寄存器。解码器使用映射,所述映射将寄存器堆划分为第二多个(个)具有第二大小的寄存器。所述第二大小是寄存器堆中用于存储数据的最大大小的寄存器。在所述映射中,在连续名称空间中向具有第二大小(m个位)的寄存器中的每一者指派不同的名称。具有所述第二大小的每一寄存器包含第三多个(N个)具有所述第一大小(个位)的寄存器,其中N为偶整数。如上文所指示,整数m是整数的偶数(N)倍。第一大小是寄存器堆中用于存储数据的最

9、小大小的寄存器。所述映射向第三多个(N个)寄存器中的每一寄存器指派与包含所述多个寄存器的具有第二大小的寄存器相同的名称。因此,寄存器堆映射到(M*N)个位寄存器中,使得所述第一多个寄存器为(*) 个寄存器。为每一位寄存器将状态信息维持在所述寄存器堆中。在一个实施例中,通过有效位来提供所述状态信息。可存在一组大于第一大小但小于第二大小的中间大小寄存器,所述中间大小寄存器也映射到与含有所述中间大小寄存器的m位寄存器的名称相同的名称。较大的中间大小寄存器也是最小大小寄存器的偶整数倍。当向特定寄存器写入时,与所述寄存器大小相关联的所有有效位得以断言。由于具有第二大小的寄存器和包含在所述寄存器中的所有具

10、有第一大小的寄存器具有共用名称,所以易于查明利用不同大小的寄存器的指令之间的寄存器相依性。而且, 由于将状态信息维持在用于具有第一大小的每一寄存器的寄存器堆中,所以处理器可确定利用具有第二大小的寄存器的全部或一部分的指令何时就绪,且因此可在不使管线停止的情况下在适当的时间发出指令以供执行。与状态信息组合的唯一映射消除了处理器的有害孪生问题。在一个实施例中,一种处理器包含寄存器堆,其包括多个具有第一大小的寄存器;以及解码单元。所述解码单元对来自具有具第一大小的源和目的地的第一指令集的指令以及来自具有具第二大小的源和目的地的第二指令集的指令进行解码。第二大小是第一大小的倍,其中是偶整数。解码单元还

11、包含映射单元,所述映射单元用于将用于第一指令集中的指令的寄存器名称和用于第二指令集中的指令的寄存器名称映射到共用名称空间中。所述共用名称空间中的寄存器名称是(i)用于所述多个寄存器中的一组个寄存器中的每一寄存器以及 ( )用于包含所述组个寄存器的具有第二大小的寄存器的同一名称。所述共用名称空间是用于寄存器堆的连续名称空间。具有第一大小的每一寄存器具有对应的有效位,以为所述寄存器提供状态信息。所述处理器还包含记分板,其具有用于具有第一大小的每一寄存器的条目;以及执行管,其耦合到寄存器堆。在执行管将结果写入到一组个寄存器中的仅一个寄存器后,即刻仅为所述一个寄存器断言有效位。在执行管将结果写入到一组

12、个寄存器中的所有寄存器后,即刻为所述个寄存器中的每一者断言有效位。寄存器堆包含在具有仅单个端口的内容可寻址存储器中。所述寄存器堆可为(例如)工作寄存器堆、架构寄存器堆或前述两者。种用于解决处理器中的有害孪生问题的方法,所述处理器支持具有具第一大小的源和目的地的第一指令的第一指令集,以及具有具第二大小的源和目的地的第二指令的第二指令集,所述方法包含通过处理器的解码管对第一指令和第二指令进行解码。第二大小是第一大小的倍,其中是偶整数。所述解码进一步包含将用于第一指令的寄存器名称和用于第二指令的寄存器名称映射到用于包括多个具有第一大小的寄存器的寄存器堆的共用名称空间中。所述共用名称空间中的寄存器名称

13、是(i)用于所述多个寄存器中的一组个寄存器中的每一寄存器以及(ii)用于包含所述组个寄存器的具有第二大小的寄存器的同一名称。所述共用名称空间是用于寄存器堆的连续名称空间。所述方法还包含在寄存器堆中为寄存器堆中具有第一大小的每一寄存器维持单独的状态信息。图1是现有技术的寄存器堆的映射的框图。图2是根据本发明一个实施例的包含多个核心的处理器的高级框图,其中至少一个核心包含连续名称空间映射的寄存器堆。图3是根据本发明一个实施例的图2的处理器的代表性核心的更详细的框图。图4是对根据本发明一个实施例的寄存器堆的新颖映射的说明。图5是根据本发明实施例的包含处理器的系统的框图,所述处理器包含并利用连续名称空

14、间映射的寄存器堆。在图式中,具有相同参考标号的元件是相同或等效的元件。而且,参考标号的第一个数字是所述元件第一次出现在其中的图的图号。具体实施例方式根据本发明的一个实施例,处理器200包含多个核心210-i,其中i的范围从1到 S,其中S为整数。所述多个核心210-i可具有共用寄存器堆,或者,每一核心210-i可具有其自身的寄存器堆,或者全局寄存器堆与本地寄存器堆的某一组合。无论处理器200中的寄存器堆的特定配置如何,寄存器堆中的寄存器到连续名称空间中的新颖映射都允许辨识和解决有害孪生问题。利用用于寄存器堆的连续名称空间的解决方案允许在寄存器堆实施于CAM(内容可寻址存储器)中时共享CAM端口

15、,且因此不需要额外的CAM端口。因此,如在下文更完整地描述,裸片上实施对有害孪生问题的解决方案所需要的空间量限于在解码器中实施映射所需要的空间和CAM中用于额外的有效位的少量额外空间。而且,与现有技术不同,所述解决方案不需要使管线停止直到使用特定大小的寄存器的指令已完成执行为止。在更详细地考虑对有害孪生问题的解决方案之前,考虑管线310(图3)在核心 210-i中的正常操作。管线310执行指令,并将结果写入到工作寄存器堆320。当指令退出时,所述指令在工作寄存器堆320中的结果被写入到架构寄存器堆330。如图3A中所说明,管线310还包含具有一个或一个以上级的提取管(fetch pipe)31

16、1。提取管311耦合到指令存储区318,例如,二级(U)高速缓存存储器。将提取管 311的输出提供给提取缓冲器312。在至少一个实施例中,提取缓冲器312经配置以服务于多个线程。解码管313包含用以对指令进行解码的一个或一个以上级。所述指令至少可包含来自两个不同指令集的指令。第一指令集中的指令将第一大小的寄存器用作源和目的地。 第二指令集中的指令将第二大小的寄存器用作源和目的地。用于存储对指令的输入(即, 操作数)的寄存器被称为源,而用于存储经执行指令的结果的寄存器被称为目的地。第二大小不同于第一大小。第二大小是第一大小的倍,其中是偶整数。如下文更完整地阐释,解码管313的一个级包含映射单元340,所述映射单元3407映射到连续名称空间中,以消除与至少两个不同的寄存器大小相关联的有害孪生问题。以类似的方式来映射架构寄存器堆330。解码管313耦合到指令队列314,所述指令队列314用以使解码管313从管线310的稍后级去耦。在此实例中,工作寄存器堆(WRF)320和架构寄存器堆(ARF)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号