基于动态重命名的矢量寄存器堆的寄存器重新配置制造技术

技术编号:10434654 阅读:136 留言:1更新日期:2014-09-17 12:02
本发明专利技术提供了一种利用具有多个字段的重命名表来重新配置寄存器堆的方法和相应的设备,所述多个字段表示关于具有由窄至宽的相关性的指令的源寄存器的碎片化信息。

【技术实现步骤摘要】
【专利摘要】本专利技术提供了一种利用具有多个字段的重命名表来重新配置寄存器堆的方法和相应的设备,所述多个字段表示关于具有由窄至宽的相关性的指令的源寄存器的碎片化信息。【专利说明】基于动态重命名的矢量寄存器堆的寄存器重新配置
与本专利技术构思的示例性实施例一致的方法和设备涉及判断寄存器堆的碎片化以及通过修复处理器中的碎片化来重新配置寄存器堆。
技术介绍
举例而言,如图1A所示,对ARMv7处理器(ARMv7为英国剑桥ARM公司的注册商标)的Aarch32布局中的向量寄存器堆(VRF)的体系结构寄存器的布局进行配置,使其在源寄存器与目标寄存器当中引入了潜在的“由窄至宽”的相关性。这种由窄至宽的相关性表现出这样一种情况:其中,读取大尺寸的值会导致读取多个较小尺寸的寄存器。例如,如果一个四倍长字的发生器为多个单字或者多个双字,则读取此四倍长字会导致读取多个单倍寄存器或者多个双倍寄存器。类似地,读取一个双字会导致读取两个单倍寄存器。 如图1A所示,在32位寄存器布局(ARMv7处理器的Aarch32布局)中,一个四倍寄存器(例如,Q15)映射到两个双倍寄存器(例如,D31与D32),而一个双倍寄存器(例如,D15)映射到两个单倍寄存器(例如,S31与S30)。如图1B所示,在64位寄存器布局(ARMv8处理器的Aarch64布局)中,每个入口(Q0,Ql, Q2,Q3…)无论尺寸都映射到单倍寄存器。 在上述示例中,具有一个四倍源寄存器的指令会需要最多四个单倍源寄存器或者单倍源寄存器和双倍源寄存器的组合。因此,如果指令中有多个四倍源寄存器,则所需要的源寄存器的真实数量会非常大,因此不能忽略在指令处理中的功率与时间消耗。 处理由窄至宽的相关性在范围与功率方面的代价会很高,并且也会成为性能的瓶颈。另外,当读取大尺寸的值(例如,四倍长字值)需要读取多个较小尺寸的寄存器时,该大尺寸源被碎片化,处理器中的范围与功率消耗更加恶化。举例而言,碎片化会产生是因为(作为体系结构指定的)产生指令只写入整个体系结构寄存器的一部分,并且微体系结构指定这些指令以将其结果写入唯一的物理寄存器中。因此,一个体系结构寄存器的值会分散到多个物理寄存器,因此“碎片化”表现出这样一种情况:其中,体系结构源寄存器的内容分散到多个物理寄存器。
技术实现思路
为了解决寄存器由窄至宽的相关性与碎片化的现有技术问题,一个或更多的示例性实施例提供了用于基于寄存器重命名表来重新配置寄存器堆的方法与设备。 根据示例性实施例的一个方面,其提供了一种重新配置寄存器堆的方法,所述方法包括:提供包含多个字段的重命名表;以及在所述重命名表的字段中记录关于指令的源寄存器的碎片化信息,所述碎片化信息包含关于所述源寄存器的至少一个发生器的信息。 所述源寄存器是所述指令的体系结构源寄存器,并且所述方法还可以包括:通过所述碎片化信息来判断所述体系结构源寄存器是否是碎片化的,其中,当所述体系结构源寄存器的内容被分散到多个物理寄存器时,判断所述体系结构源寄存器是碎片化的。 所述碎片化信息可以源自体系结构源标签的第一信息和所述体系结构源标签的第二信息,所述体系结构源标签的第一信息表示所述体系结构源寄存器的类型,所述体系结构源标签的第二信息表示所述体系结构源寄存器是否是碎片化的。 所述方法还可以包括:如果判断所述体系结构源寄存器是碎片化的,则生成至少一个修复微操作;以及注入所述修复微操作,以通过在所述寄存器堆中读取两个或更多发生器的两个或更多寄存器并将读取结果写入一个寄存器来修复碎片化,所述一个寄存器的尺寸大于所述两个或更多发生器的每一个寄存器的尺寸。 所述方法还可以包括:重命名所述修复微操作。 所述方法还可以包括:基于所述第一信息和所述第二信息来判断所述至少一个修复微操作的数量。 所述第一信息表示所述体系结构源寄存器的类型是单倍、双倍或四倍中的一种;所述第二信息表示所述至少一个发生器是单倍、双倍或四倍。 所述方法还可以包括:如果判断还未被重命名或者未被调度执行的微操作的体系结构源寄存器是碎片化的,则使所述微操作停止。 根据另一个示例性实施例的一个方面,提供了一种指令处理设备,其包括:提供重命名表的重命名器,其中,所述重命名器在所述重命名表中记录关于指令的源寄存器的碎片化信息,并且其中,所述碎片化信息包含关于所述源寄存器的至少一个发生器的信息。 所述源寄存器是所述指令的体系结构源寄存器,并且所述设备还可以包括碎片化判断器,所述碎片化判断器配置为通过所述碎片化信息来判断所述体系结构源寄存器是否是碎片化的,其中,当所述体系结构源寄存器的内容被分散到多个物理寄存器时,判断所述体系结构源寄存器是碎片化的。 所述碎片化信息可以源自体系结构源标签的第一信息和所述体系结构源标签的第二信息,所述体系结构源标签的第一信息表示所述体系结构源寄存器的类型,所述体系结构源标签的第二信息表示所述体系结构源寄存器是否是碎片化的。 所述设备还可以包括修复状态机,所述修复状态机配置为:如果判断所述体系结构源寄存器是碎片化的,则生成至少一个修复微操作;以及注入所述修复微操作,以便通过在所述寄存器堆中读取两个或更多发生器的两个或更多寄存器并将读取结果写入一个寄存器来修复碎片化,所述一个寄存器的尺寸大于所述两个或更多发生器的每一个寄存器的尺寸。 所述重命名器可以重命名所述修复微操作。 所述修复状态机可以基于所述第一信息和所述第二信息来判断所述至少一个修复微操作的数量。 所述第一信息表示所述体系结构源寄存器的类型是单倍、双倍或四倍中的一种;所述第二信息表示所述至少一个发生器是单倍、双倍或四倍。 如果判断还未被重命名或者未被调度执行的微操作的体系结构源寄存器是碎片化的,则所述修复状态机可以使所述微操作停止。 【专利附图】【附图说明】 通过以下结合附图对示例性实施例的说明,上述和/或其他方面将会变得清楚和更加易于理解,其中: 图1A示出了 32位寄存器布局(ARMv7处理器的Aarch32布局); 图1B示出了 64位寄存器布局(ARMv8处理器的Aarch64布局); 图2示出了说明根据一个示例性实施例的处理器10的一部分的框图; 图3A根据一个示例性实施例示出了 ARMv7处理器的Aarch32布局中的重命名表的入口 ; 图3B根据一个示例性实施例示出了重命名表的已更新字段; 图3C根据一个示例性实施例示出了在重命名表中的四倍目标寄存器所需的字段; 图3D根据一个不例性实施例不出了 ARMv7处理器的Aarch32布局的重命名表中的所有重命名表入口和字段信息的尺寸。 图4A至图4E根据一个示例性实施例示出了判断碎片化并触发碎片化的修复的序列。 图5A至图根据一个示例性实施例示出了修复在图4A至图4E所示的序列中判断的碎片化的序列。 图6根据一个示例性实施例示出了判断寄存器碎片化并生成修复微操作的序列;以及 图7根据一个示例性实施例示出了在指令流水线图中的修复过程流程。 【具体实施方式】 参考附图将对本专利技术的示例性实施例进行详细描述,以便于本领域普通技术人员实现。然而,可以以多种不同形式来具体实现本专利技术,而不是限定于在此所阐述的本文档来自技高网
...
基于动态重命名的矢量寄存器堆的寄存器重新配置

【技术保护点】
一种重新配置寄存器堆的方法,所述方法包括步骤:提供重命名表;以及在所述重命名表中记录关于指令的源寄存器的碎片化信息,所述碎片化信息包含关于所述源寄存器的至少一个发生器的信息。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:布莱德利·杰尼·伯杰斯阿什拉夫·阿赫麦德拉维·伊因加尔
申请(专利权)人:三星电子株式会社
类型:发明
国别省市:韩国;KR

网友询问留言 已有1条评论
  • 来自[美国加利福尼亚州圣克拉拉县山景市谷歌公司] 2015年01月14日 16:06
    重命名:给文件或文件夹等重新起一个名称。一般是右击——重命名,其快捷键:F2。
    0
1