《基于动态重命名的矢量寄存器堆的寄存器重新配置.pdf》由会员分享,可在线阅读,更多相关《基于动态重命名的矢量寄存器堆的寄存器重新配置.pdf(20页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104049947A43申请公布日20140917CN104049947A21申请号201410097579822申请日2014031413/837,21320130315USG06F9/3020060171申请人三星电子株式会社地址韩国京畿道72发明人布莱德利杰尼伯杰斯阿什拉夫阿赫麦德拉维伊因加尔74专利代理机构北京天昊联合知识产权代理有限公司11112代理人陈源张帆54发明名称基于动态重命名的矢量寄存器堆的寄存器重新配置57摘要本发明提供了一种利用具有多个字段的重命名表来重新配置寄存器堆的方法和相应的设备,所述多个字段表示关于具有由窄至宽的相关性的指令的源寄存器的碎片化信。
2、息。30优先权数据51INTCL权利要求书2页说明书8页附图9页19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书8页附图9页10申请公布号CN104049947ACN104049947A1/2页21一种重新配置寄存器堆的方法,所述方法包括步骤提供重命名表;以及在所述重命名表中记录关于指令的源寄存器的碎片化信息,所述碎片化信息包含关于所述源寄存器的至少一个发生器的信息。2根据权利要求1所述的方法,其中,所述源寄存器是所述指令的体系结构源寄存器,所述方法还包括步骤通过所述碎片化信息来判断所述体系结构源寄存器是否是碎片化的,其中,当所述体系结构源寄存器的内容被分散到多个物理寄存器。
3、时,判断所述体系结构源寄存器是碎片化的。3根据权利要求2所述的方法,其中,所述碎片化信息源自体系结构源标签的第一信息和所述体系结构源标签的第二信息,所述体系结构源标签的第一信息表示所述体系结构源寄存器的类型,所述体系结构源标签的第二信息表示所述体系结构源寄存器是否是碎片化的。4根据权利要求3所述的方法,其中,所述第一信息表示所述体系结构源寄存器的类型是单倍、双倍或四倍中的一种,并且其中,所述第二信息表示所述至少一个发生器是单倍、双倍或四倍。5根据权利要求3所述的方法,还包括步骤如果判断所述体系结构源寄存器是碎片化的,则生成至少一个修复微操作;以及注入所述修复微操作,以通过在所述寄存器堆中读取两。
4、个或更多发生器的两个或更多寄存器并将读取结果写入一个寄存器来修复碎片化,所述一个寄存器的尺寸大于所述两个或更多发生器的每一个寄存器的尺寸。6根据权利要求5所述的方法,还包括步骤重命名所述修复微操作。7根据权利要求5所述的方法,还包括步骤基于所述第一信息和所述第二信息来判断所述至少一个修复微操作的数量。8根据权利要求2所述的方法,还包括步骤如果判断还未被重命名并且未被调度执行的微操作的体系结构源寄存器是碎片化的,则使所述微操作停止。9根据权利要求8所述的方法,还包括步骤如果判断所述微操作的体系结构源寄存器是碎片化的,则通过在所述寄存器堆中读取两个或更多发生器的两个或更多寄存器并将读取结果写入一个。
5、寄存器来修复碎片化,所述一个寄存器的尺寸大于所述两个或更多发生器的每一个寄存器的尺寸。10根据权利要求3所述的方法,还包括步骤如果判断还未被重命名并且未被调度执行的微操作的源寄存器是碎片化的,则使所述微操作停止。11根据权利要求10所述的方法,还包括步骤如果判断所述微操作的体系结构源寄存器是碎片化的,则通过在所述寄存器堆中读取所述至少一个发生器的两个或更多寄存器并将读取结果写入一个寄存器来修复碎片化,所述一个寄存器的尺寸大于所述至少一个发生器的每一个寄存器的尺寸。12一种指令处理设备,包括提供重命名表的重命名器,其中,所述重命名器在所述重命名表中记录关于指令的源寄存器的碎片化信息,并且权利要求。
6、书CN104049947A2/2页3其中,所述碎片化信息包含关于所述源寄存器的至少一个发生器的信息。13根据权利要求12所述的设备,其中,所述源寄存器是所述指令的体系结构源寄存器,并且所述设备还包括碎片化判断器,所述碎片化判断器配置为通过所述碎片化信息来判断所述体系结构源寄存器是否是碎片化的,其中,当所述体系结构源寄存器的内容被分散到多个物理寄存器时,判断所述体系结构源寄存器是碎片化的。14根据权利要求13所述的设备,所述碎片化信息源自体系结构源标签的第一信息和所述体系结构源标签的第二信息,所述体系结构源标签的第一信息表示所述体系结构源寄存器的类型,所述体系结构源标签的第二信息表示所述体系结构。
7、源寄存器是否是碎片化的。15根据权利要求14所述的设备,其中,所述第一信息表示所述体系结构源寄存器的类型是单倍、双倍或四倍中的一种,并且其中,所述第二信息表示所述至少一个发生器是单倍、双倍或四倍。16根据权利要求14所述的设备,还包括修复状态机,所述修复状态机配置为如果判断所述体系结构源寄存器是碎片化的,则生成至少一个修复微操作;以及注入所述修复微操作,以通过在所述寄存器堆中读取两个或更多发生器的两个或更多寄存器并将读取结果写入一个寄存器来修复碎片化,所述一个寄存器的尺寸大于所述两个或更多发生器的每一个寄存器的尺寸。17根据权利要求16所述的设备,其中,所述重命名器重命名所述修复微操作。18根。
8、据权利要求16所述的设备,其中,所述修复状态机基于所述第一信息和所述第二信息来判断所述至少一个修复微操作的数量。19根据权利要求13所述的设备,还包括修复状态机,如果判断还未被重命名并且未被调度执行的微操作的体系结构源寄存器是碎片化的,则所述修复状态机使所述微操作停止。20根据权利要求19所述的设备,其中,如果判断所述微操作的体系结构源寄存器是碎片化的,则所述修复状态机通过在所述寄存器堆中读取两个或更多发生器的两个或更多寄存器并将读取结果写入一个寄存器来修复碎片化,所述一个寄存器的尺寸大于所述两个或更多发生器的每一个寄存器的尺寸。21根据权利要求14所述的设备,还包括修复状态机,如果判断还未被。
9、重命名并且未被调度执行的微操作的源寄存器是碎片化的,则所述修复状态机使所述微操作停止。22根据权利要求21所述设备,其中,如果判断所述微操作的体系结构源寄存器是碎片化的,则所述修复状态机通过在所述寄存器堆中读取所述至少一个发生器的两个或更多寄存器并将读取结果写入一个寄存器来修复碎片化,所述一个寄存器的尺寸大于所述至少一个发生器的每一个寄存器的尺寸。权利要求书CN104049947A1/8页4基于动态重命名的矢量寄存器堆的寄存器重新配置技术领域0001与本发明构思的示例性实施例一致的方法和设备涉及判断寄存器堆的碎片化以及通过修复处理器中的碎片化来重新配置寄存器堆。背景技术0002举例而言,如图1。
10、A所示,对ARMV7处理器(ARMV7为英国剑桥ARM公司的注册商标)的AARCH32布局中的向量寄存器堆(VRF)的体系结构寄存器的布局进行配置,使其在源寄存器与目标寄存器当中引入了潜在的“由窄至宽”的相关性。这种由窄至宽的相关性表现出这样一种情况其中,读取大尺寸的值会导致读取多个较小尺寸的寄存器。例如,如果一个四倍长字的发生器为多个单字或者多个双字,则读取此四倍长字会导致读取多个单倍寄存器或者多个双倍寄存器。类似地,读取一个双字会导致读取两个单倍寄存器。0003如图1A所示,在32位寄存器布局(ARMV7处理器的AARCH32布局)中,一个四倍寄存器(例如,Q15)映射到两个双倍寄存器(例。
11、如,D31与D32),而一个双倍寄存器(例如,D15)映射到两个单倍寄存器(例如,S31与S30)。如图1B所示,在64位寄存器布局(ARMV8处理器的AARCH64布局)中,每个入口(Q0,Q1,Q2,Q3)无论尺寸都映射到单倍寄存器。0004在上述示例中,具有一个四倍源寄存器的指令会需要最多四个单倍源寄存器或者单倍源寄存器和双倍源寄存器的组合。因此,如果指令中有多个四倍源寄存器,则所需要的源寄存器的真实数量会非常大,因此不能忽略在指令处理中的功率与时间消耗。0005处理由窄至宽的相关性在范围与功率方面的代价会很高,并且也会成为性能的瓶颈。另外,当读取大尺寸的值(例如,四倍长字值)需要读取多。
12、个较小尺寸的寄存器时,该大尺寸源被碎片化,处理器中的范围与功率消耗更加恶化。举例而言,碎片化会产生是因为(作为体系结构指定的)产生指令只写入整个体系结构寄存器的一部分,并且微体系结构指定这些指令以将其结果写入唯一的物理寄存器中。因此,一个体系结构寄存器的值会分散到多个物理寄存器,因此“碎片化”表现出这样一种情况其中,体系结构源寄存器的内容分散到多个物理寄存器。发明内容0006为了解决寄存器由窄至宽的相关性与碎片化的现有技术问题,一个或更多的示例性实施例提供了用于基于寄存器重命名表来重新配置寄存器堆的方法与设备。0007根据示例性实施例的一个方面,其提供了一种重新配置寄存器堆的方法,所述方法包括。
13、提供包含多个字段的重命名表;以及在所述重命名表的字段中记录关于指令的源寄存器的碎片化信息,所述碎片化信息包含关于所述源寄存器的至少一个发生器的信息。0008所述源寄存器是所述指令的体系结构源寄存器,并且所述方法还可以包括通过所述碎片化信息来判断所述体系结构源寄存器是否是碎片化的,其中,当所述体系结构源寄存器的内容被分散到多个物理寄存器时,判断所述体系结构源寄存器是碎片化的。0009所述碎片化信息可以源自体系结构源标签的第一信息和所述体系结构源标签的说明书CN104049947A2/8页5第二信息,所述体系结构源标签的第一信息表示所述体系结构源寄存器的类型,所述体系结构源标签的第二信息表示所述体。
14、系结构源寄存器是否是碎片化的。0010所述方法还可以包括如果判断所述体系结构源寄存器是碎片化的,则生成至少一个修复微操作;以及注入所述修复微操作,以通过在所述寄存器堆中读取两个或更多发生器的两个或更多寄存器并将读取结果写入一个寄存器来修复碎片化,所述一个寄存器的尺寸大于所述两个或更多发生器的每一个寄存器的尺寸。0011所述方法还可以包括重命名所述修复微操作。0012所述方法还可以包括基于所述第一信息和所述第二信息来判断所述至少一个修复微操作的数量。0013所述第一信息表示所述体系结构源寄存器的类型是单倍、双倍或四倍中的一种;所述第二信息表示所述至少一个发生器是单倍、双倍或四倍。0014所述方法。
15、还可以包括如果判断还未被重命名或者未被调度执行的微操作的体系结构源寄存器是碎片化的,则使所述微操作停止。0015根据另一个示例性实施例的一个方面,提供了一种指令处理设备,其包括提供重命名表的重命名器,其中,所述重命名器在所述重命名表中记录关于指令的源寄存器的碎片化信息,并且其中,所述碎片化信息包含关于所述源寄存器的至少一个发生器的信息。0016所述源寄存器是所述指令的体系结构源寄存器,并且所述设备还可以包括碎片化判断器,所述碎片化判断器配置为通过所述碎片化信息来判断所述体系结构源寄存器是否是碎片化的,其中,当所述体系结构源寄存器的内容被分散到多个物理寄存器时,判断所述体系结构源寄存器是碎片化的。
16、。0017所述碎片化信息可以源自体系结构源标签的第一信息和所述体系结构源标签的第二信息,所述体系结构源标签的第一信息表示所述体系结构源寄存器的类型,所述体系结构源标签的第二信息表示所述体系结构源寄存器是否是碎片化的。0018所述设备还可以包括修复状态机,所述修复状态机配置为如果判断所述体系结构源寄存器是碎片化的,则生成至少一个修复微操作;以及注入所述修复微操作,以便通过在所述寄存器堆中读取两个或更多发生器的两个或更多寄存器并将读取结果写入一个寄存器来修复碎片化,所述一个寄存器的尺寸大于所述两个或更多发生器的每一个寄存器的尺寸。0019所述重命名器可以重命名所述修复微操作。0020所述修复状态机。
17、可以基于所述第一信息和所述第二信息来判断所述至少一个修复微操作的数量。0021所述第一信息表示所述体系结构源寄存器的类型是单倍、双倍或四倍中的一种;所述第二信息表示所述至少一个发生器是单倍、双倍或四倍。0022如果判断还未被重命名或者未被调度执行的微操作的体系结构源寄存器是碎片化的,则所述修复状态机可以使所述微操作停止。附图说明0023通过以下结合附图对示例性实施例的说明,上述和/或其他方面将会变得清楚和更加易于理解,其中说明书CN104049947A3/8页60024图1A示出了32位寄存器布局(ARMV7处理器的AARCH32布局);0025图1B示出了64位寄存器布局(ARMV8处理器的。
18、AARCH64布局);0026图2示出了说明根据一个示例性实施例的处理器10的一部分的框图;0027图3A根据一个示例性实施例示出了ARMV7处理器的AARCH32布局中的重命名表的入口;0028图3B根据一个示例性实施例示出了重命名表的已更新字段;0029图3C根据一个示例性实施例示出了在重命名表中的四倍目标寄存器所需的字段;0030图3D根据一个示例性实施例示出了ARMV7处理器的AARCH32布局的重命名表中的所有重命名表入口和字段信息的尺寸。0031图4A至图4E根据一个示例性实施例示出了判断碎片化并触发碎片化的修复的序列。0032图5A至图5D根据一个示例性实施例示出了修复在图4A至。
19、图4E所示的序列中判断的碎片化的序列。0033图6根据一个示例性实施例示出了判断寄存器碎片化并生成修复微操作的序列;以及0034图7根据一个示例性实施例示出了在指令流水线图中的修复过程流程。具体实施方式0035参考附图将对本发明的示例性实施例进行详细描述,以便于本领域普通技术人员实现。然而,可以以多种不同形式来具体实现本发明,而不是限定于在此所阐述的示例性实施例。为了清楚起见将省略对众所周知的部件的描述,并且相同的附图标记将始终用于指示相同或相似的元件。0036可以使用各种方法来解决如图1所示的由于由窄至宽(NTW)的相关性在体系结构布局中所导致的碎片化源寄存器。举例而言,可以将碎片化的初始体。
20、系结构源寄存器拆分成多个物理源寄存器,或者可以利用读修改写方法来执行寄存器合并。此两种方法均有缺点由于源拆分方法会导致源的数量增加,从而导致存储更多的源标签和潜在的更多寄存器堆读取端口与重命名表读取端口;而读修改写方法则会降低性能并增加功耗。0037图2是示出了根据一个示例性实施例的处理器10的一部分的框图。处理器10包括解码器100、重命名器200和调度器300,以处理从存储器或缓存(未示出)提取的指令。重命名器200包括重命名表210、碎片化判断器220和修复状态机230。图2所示体系结构可应用于多种类型的处理器或者包括多核处理器的数据处理单元。0038在图2中,解码器100将从存储器(未。
21、示出)提取的指令解码成较低等级的微操作(MICROOPS,或指令)。因此,指令流被映射到微操作流上。所解码的微操作字段可以包括操作码,其指定要执行的行为(如加、乘、加载、存储等);源操作数,其指明了保持数据的体系结构寄存器地址;以及目标操作数,其指明了接收数据的体系结构寄存器地址。将解码的微操作通过重命名接口150发送至重命名器200。在重命名器200中,微操作的体系结构寄存器在被发送以便在调度器300处调度执行之前进行重命名与相关性检查。重命名器200利用重命名表210将体系结构寄存器重命名为寄存器堆中的物理寄存器,重说明书CN104049947A4/8页7命名表210中记录了关于微操作的寄。
22、存器的信息。根据本实施例,重命名表210被描述为包括在重命名器200中。但是,重命名表可以存储在处理器10的其他部分中。执行寄存器重命名是为了避免微操作的无序执行中的先读后写(WRITEAFTERREAD)与先写后写(WRITEAFTERWRITE)的数据冲突。在程序员的处理器的体系结构的观点中,体系结构寄存器是在指令中指定的寄存器。0039在重命名器200中,提供碎片化判断器220以通过分析从解码器100接收的源的类型信息和来自重命名表210的碎片化信息来判断微操作的体系结构源寄存器是否是碎片化的,以及是否需要修复。对于具有较大尺寸源值的微操作,如果微操作的发生器为较小尺寸的寄存器(例如,单。
23、倍寄存器),则认为该较大源值在物理寄存器堆中是碎片化的。例如,如果四倍值的发生器为单倍源或双倍源,使得内容被分散到多个物理寄存器,那么该源值在物理寄存器堆中是碎片化的。当对于给定的体系结构源寄存器判断在寄存器堆中存在碎片化时,修复状态机230使用修复微操作来修复由碎片化判断器220判断的碎片化。稍后将描述碎片化判断器220与修复状态机230的详细操作。0040图3A根据一个示例性实施例示出了关于如图1A所示的ARMV7处理器的AARCH32布局中的寄存器Q0、D0、D1、S0、S1、S2与S3的重命名表入口。在此描述的重命名表可以与图2所示的处理器10的重命名器200中使用的重命名表210相同。
24、,因此,此后该重命名表被看作与重命名表210相同。将参考图3B至图3D详细描述该重命名表。重命名器200对从解码器100解码出的微操作的每个目标寄存器进行重命名,并不管目标寄存器的尺寸为物理寄存器堆(PRF)中的每个目标寄存器分配新的入口。在图3A中,PRF入口为128位宽并且重命名表分配4个单倍寄存器入口字段(S0入口至S3入口),每个入口字段的尺寸为32位。寄存器入口的结果在PRF入口中总是右对齐的。这种重命名表入口结构干净地运作在ARMV8处理器的AARCH64布局中,并且在重命名表中存储一些附加信息位的情况下同样运作在ARMV7处理器的AARCH32布局中。ARMV7处理器的AARCH。
25、32布局与ARMV8处理器的AARCH64布局仅仅是示例性的,该重命名表入口结构可以应用到其他相似布局的体系结构中。附加信息位存储为三种“有效信息字段”和三种“通道信息字段”。这些信息字段(比如有效信字段)存储了最后一次的写入是单字(32位)、双字(64位)还是四倍字(128位)。通道信息字段存储通道读取信息,即,当从寄存器读出数据时数据需要如何对齐。记录在重命名表中的信息(比如有效信息字段内的信息)被称作“碎片化”信息,其表明寄存器堆中是否存在碎片化,如稍后将描述的那样。0041图3B根据一个示例性实施例示出了当寄存器S0至S3被重命名时,重命名表中的哪些字段会被更新。当一个或多个单倍寄存器。
26、S0至S3被映射到一个或多个物理寄存器堆入口编号(PRF入口)时,更新相应的(多个)信息字段。0042图3C根据一个示例性实施例示出了四倍目标寄存器在重命名表中所需的字段。并非所有重命名表中的入口都需要存储所有信息字段。如图1A所示,对于ARMV7处理器的AARCH32布局,四倍寄存器Q0至Q15映射至双倍寄存器上。但是,仅对于其中一半的寄存器(即Q0至Q7),每个双倍寄存器进一步映射至两个单倍寄存器中。因此根据本实施例,为了映射使用ARMV7处理器的AARCH32布局的重命名表,单倍寄存器只需映射至D0至D15/Q0至Q7,双倍寄存器只需映射至Q0至Q15,而Q16至Q31并不存在。0043。
27、图3D根据一个示例性实施例示出了ARMV7处理器的AARCH32布局中的重命名表说明书CN104049947A5/8页8的所有重命名表入口与字段信息的尺寸。在图3D中,编号0的表入口(入口0)对应于图3A至图3C中所示的表入口。单倍寄存器、双倍寄存器或四倍寄存器中的每一个被映射至对应于与图3B中的PRF入口相对应的物理寄存器标签(RTAG)。对于与编号0和7之间的重命名表入口(入口0至7)相对应的寄存器,一个四倍寄存器映射至两个双倍寄存器,并且这两个双倍寄存器中的每一个映射到两个单倍寄存器。每个有效信息的尺寸为一位。一个单通道信息(比如S1)的尺寸为一位,而双通道信息(比如S2和S3)在其中含。
28、有两位的信息。对于与编号8和15之间的重命名表入口(入口8至15)相对应的寄存器,一个四倍寄存器映射至两个双倍寄存器。在这些重命名表入口中的每一个入口内,两个双倍寄存器中只有一个双倍寄存器具有一位通道信息(比如D1)。对于与编号16和31之间的重命名表入口(入口16至31)相对应的寄存器,不存在碎片化信息位。0044图4A至图4E根据一个示例性实施例示出了在图2的处理器10内的体系结构源寄存器中判断碎片化并触发该体系结构源寄存器碎片化的修复的序列。如图4A所示,当用于对映射至RTAG32的单倍寄存器S0进行写入的第一微操作(OP0)被重命名时,重命名器200记录RTAG32的信息并更新重命名表。
29、的入口0中的不同信息字段。随后,如图4B所示,当用于对映射至RTAG33的单倍寄存器S1进行写入的第二微操作(OP1)被输入时,重命名器200记录RTAG33的信息并同样更新重命名表的相同入口0中的信息字段。类似地,如图4C至图4D所示,当用于对分别映射至RTAG34和RTAG35的单倍寄存器S2和S3进行写入的第三微操作(OP2)和第四微操作(OP3)被输入时,重命名器200记录这些信息并更新重命名表的相同入口0中的信息字段。如图4E所示,在重命名器200记录了关于寄存器S2与S3的信息之后,当从解码器接收用于读取四倍源寄存器Q0的第五微操作(OP4)时,由于Q0、D1与D0位均为无效(即四。
30、倍源数据存在于多个PRF入口),所以碎片化判断器220判断此寄存器是碎片化的。0045当从解码器到重命名器200的第五微操作(OP4)被接收时,一旦碎片化判断器220判断在体系结构源寄存器中有碎片化,则在重命名器200处不接收微操作(OP4)并且解码器100到重命名接口150被停止。与此同时,启动修复状态机230以利用一个或多个修复微操作来修复体系结构源寄存器碎片化。0046图5A至图5D根据一个示例性实施例示出了修复在图4A至图4E所示的序列中判断的碎片化的序列。在图5A至图5D内,微操作OP1、OP2和OP3均是用于合并碎片化的体系结构源寄存器的修复微操作。如图5A所示,第一修复OP1读取。
31、两个单倍寄存器S0(RTAG32)与S1(RTAG33),将结果写入具有PRF入口36(RTAG36)的双倍寄存器,并且将D0有效信息更新为1。以此方法,来自两个不同PRF入口的碎片化的两个单倍寄存器被合并至相同的入口。如图5B所示,第二修复OP2读取S2与S3,将结果写入具有PRF入口37(RTAG37)的双倍寄存器,并且将D1有效信息更新为1。如图5C所示,第三修复OP3读取两个双倍寄存器D0与D1,将结果写入具有PRF入口38(RTAG38)的四倍寄存器,并且将Q0有效信息更新为1。此时,对于一个体系结构源寄存器的修复完成。此过程将一直重复直至碎片化微操作的所有体系结构源寄存器的修复完成。
32、。一旦针对碎片化微操作的修复完成,修复状态机230则移除解码器停止。触发了修复的原始微操作(图4中的OP4)现在可被允许成功地通过重命名器200,如图5D所示。0047在以上图5A至图5D所示的修复过程中,修复微操作使用常规的微操作在重命名说明书CN104049947A6/8页9器200中使用的重命名表上的相同的读取端口,因此,这些修复微操作无需额外的读取端口。0048图6根据一个示例性实施例示出了在图2的碎片化判断器220与修复状态机230处执行的判断体系结构源寄存器碎片化以及生成修复微操作的序列。0049在一个周期内从重命名表读取针对所有微操作的重命名寄存器标签(RTAGS)都之后,碎片化。
33、判断器220判断微操作是否需要修复以处理寄存器合并。具体而言,如图6所示,当微操作进入重命名器200时,碎片化判断器220从重命名表210接收碎片化信息(S10),并且还从解码器100接收关于微操作中的体系结构源寄存器的类型(比如单倍、双倍或四倍)的信息(S20)。碎片化信息包括关于存储在重命名表中的源寄存器(Q0、D1和/或D0)的有效信息。基于接收的信息,碎片化判断器220判断体系结构源寄存器是否是碎片化的,即,体系结构源寄存器是否需要修复(S30)。如果微操作的体系结构源寄存器被标记为存在于多个PRF入口,则碎片化判断器201判断该微操作的体系结构源寄存器是碎片化的,并且需要修复(S40。
34、)。0050一旦判断体系结构源寄存器是碎片化的,则体系结构源寄存器的微操作需要修复(S40),碎片化判断器220针对该碎片化微操作以及所有更新的微操作停止重命名器接口150(S50)。然而,允许同一周期中更旧的微操作通过重命名并进入分派。此处,更新的微操作是指程序顺序中更新的微操作,而更旧的微操作是指程序顺序中更旧的微操作。0051在操作S40处判断微操作需要修复之后,修复状态机230从重命名表接收碎片化信息,即源有效信息(S60),从解码器100接收关于微操作中源寄存器的类型(单倍、双倍或四倍)的信息(S80)并且从解码器100接收源寄存器的体系结构标签(S70)。采用以上信息,修复状态机2。
35、30判断每个碎片化微操作所需的修复微操作的数量,并且生成所需数量的修复微操作以修复源寄存器的碎片化(S90)。如之前解释的那样,通过将具有不同物理寄存器堆入口编号的较小尺寸的寄存器合并,并且将各寄存器的数据写入具有另一个寄存器堆入口编号的任意较大尺寸的寄存器来执行修复。例如,如果源寄存器是由两个双倍寄存器产生的四倍寄存器,则可以合并这两个双倍寄存器并且可以将结果写入四倍寄存器。对于由两个单倍寄存器产生的双倍寄存器,可以合并这两个单倍寄存器并且可以将结果写入双倍寄存器。当微操作产生时,修复状态机230将这些修复微操作分派至重命名表以修复碎片化(S100)。一旦完成了碎片化微操作的修复,则移除解码。
36、器停止以允许解码器重新执行原始的“碎片化”微操作,该“碎片化”微操作不再碎片化并已经被修复。现在已修复的微操作成功地穿过重命名器并分派。重复地判断并产生所需数量的修复微操作,直至所有的修复微操作已被产生并被重命名(S110)。这些修复微操作通过常规的寄存器重命名过程。当完成了碎片化微操作的修复时,移除解码器停止(S120)。所描述的重复修复机制仅仅是可以如何执行修复方案的示例性实施例,还可以采用其他机制。0052根据本实施例的修复微操作为辅助指令,以读取较小尺寸的寄存器并写入较大尺寸的寄存器。例如,修复微操作读取两个单倍寄存器并写入双倍寄存器,或读取两个双倍寄存器并写入四倍寄存器。0053所需。
37、的修复微操作的数量取决于以下两方面源寄存器为四倍或为双倍;以及源数据的发生器为四倍、双倍或是单倍。例如,在图3B所示重命名表中,若源寄存器为四倍Q0,并且两个发生器双倍D1与D0均有效,则需要单个修复微操作以读取D1与D0并写入至说明书CN104049947A7/8页10四倍寄存器。如果D1与D0源寄存器中任何一个为无效,则需要两个修复微操作。即,需要第一个修复微操作以读取两个发生器S0与S1并且写入到双倍寄存器,并且需要第二个微操作以读取新形成的双倍寄存器与已存在的有效的双倍寄存器,并写入到最终的四倍寄存器。如果D1与D0均为无效,则需要三个修复微操作。即,第一个微操作读取较低的两个单倍寄存。
38、器并写入双倍寄存器,第二个微操作读取较高的两个单倍寄存器并写入另一个双倍寄存器,最后的微操作读取这两个双倍寄存器并写入最终的四倍寄存器。如果源寄存器为双倍寄存器,则需要单个修复微操作来读取两个单倍寄存器并写入到双倍寄存器。修复状态机230注入所需数量的修复微操作以执行修复。0054图7根据一个示例性实施例示出了在指令流水线图中的修复过程流程。如图7所示,称作OP0、OP1、OP2和OP3的四个微操作进入重命名器200,其中OP0在周期中是最旧的,OP3在周期中是最新的。在重命名表中记录了关于每个微操作的源寄存器的碎片化信息。通过比较此重命名表与微操作的源类型,碎片化判断器220判断碎片化修复的。
39、必要性。当OP0进入重命名器200时,如果碎片化判断器220判断在源寄存器内没有触发修复的碎片化,则OP0被分派以重命名。第二个微操作OP1被判断为需要修复。此后停止解码器并启动修复过程。0055修复状态机230判断碎片化微操作所需的修复微操作的数量,并注入所需数量的修复微操作。在图7的示例中,用于修复OP1的修复微操作所需的数量是三个。注入的修复微操作(命名为FXOP1A、FXOP1B和FXOP1C)有助于合并较小尺寸的寄存器并写入较大尺寸的寄存器。当产生用于OP1的修复微操作时,分派修复微操作FXOP1A、FXOP1B和FXOP1C并且移除解码器100中的停止。0056在完成OP1的修复之。
40、后,移除解码器停止,解码器100重新执行OP1、OP2与OP3,并且OP1被成功地重命名。第三个微操作OP2被判断为需要进行修复,并且解码器100再次停止。类似地,修复状态机230注入修复OP2所需数量的修复微操作,并且开始另一个修复过程。第四个微操作OP3同样以类似的过程进行修复。如图7所示,修复过程为流水线过程。0057微操作中的每个源寄存器有可能都将需要此修复方案。如果微操作中有三个源,则修复此微操作中的碎片化最多会需要九个修复微操作。根据一个示例性实施例,在该九个修复微操作中,在每个周期可以重命名/分派四个修复微操作。后续微操作的重命名被停止直到插入这些修复微操作。如果在同一周期内的多。
41、个微操作需要修复,则通过微操作的相对年龄来判断修复各微操作的顺序。0058上述示例性实施例公开的重命名与修复方案消除了这样一种需求,即,对于寄存器合并所需的所有裂化的源需要同时在调度器中存储多个物理源标签。此外,此方案还消除了另一种需求,即,在重命名器与物理寄存器堆中需要额外的读取端口以处理寄存器合并。此外,上述示例性实施例使用一个范围与功率效率的状态机来检测与处理用于寄存器合并的修复微操作。此外,上述示例性实施例不影响不具有由窄至宽的相关性的指令,因此在性能方面更加有效率。0059上述实施例仅仅是示例性的,且并不旨在限定本发明构思的范围。例如,用于物理寄存器的128位示例性尺寸也可以是不同的。
42、尺寸,如256位、64位或32位。单倍寄存器可以是具有较小尺寸的任何位数,如4位、16位或64位,相应地,双倍寄存器可以是具有恰好说明书CN104049947A108/8页11较大尺寸的任何位数,如8位、32位或128位,四倍寄存器可以是具有恰好更大尺寸的位数,如16位、64位或256位。此外,在示例性实施例中描述的每周期的微操作的数量可以是任何数值。此外,重命名表210、碎片化判断器220与修复状态机230在结构方面不一定必须包含在重命名器200内,相反,它们可以实现为图2中的处理器10的分离的组件。0060示例性实施例的指教没有被限定,其同样可以应用于存在NTW相关性的所有类型的体系结构寄。
43、存器。这些以及其他变化、修改、添加和改进均落入本发明构思的范围之内。因此,本发明构思的范围不是由示例性实施例的详细描述来限定的,而是由权利要求来限定,所述范围内的所有差异将被解释为包括在本发明构思中。说明书CN104049947A111/9页12图1A现有技术图1B(现有技术)说明书附图CN104049947A122/9页13图2图3A说明书附图CN104049947A133/9页14图3B图3C说明书附图CN104049947A144/9页15图3D图4A说明书附图CN104049947A155/9页16图4B图4C图4D图4E说明书附图CN104049947A166/9页17图5A图5B图5C说明书附图CN104049947A177/9页18图5D说明书附图CN104049947A188/9页19图6说明书附图CN104049947A199/9页20图7说明书附图CN104049947A20。