CN116134417A - 用于功率节约的寄存器重命名 - Google Patents
用于功率节约的寄存器重命名 Download PDFInfo
- Publication number
- CN116134417A CN116134417A CN202180059501.5A CN202180059501A CN116134417A CN 116134417 A CN116134417 A CN 116134417A CN 202180059501 A CN202180059501 A CN 202180059501A CN 116134417 A CN116134417 A CN 116134417A
- Authority
- CN
- China
- Prior art keywords
- instruction
- data type
- register
- physical registers
- integrated circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 50
- 239000013598 vector Substances 0.000 claims description 42
- 239000011159 matrix material Substances 0.000 claims description 34
- 230000004044 response Effects 0.000 claims description 10
- 238000012546 transfer Methods 0.000 claims description 5
- 238000001514 detection method Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Power Sources (AREA)
Abstract
公开了用于寄存器重命名的系统和方法。例如,描述了集成电路,该集成电路包括第一集群,第一集群包括第一组物理寄存器和第一执行资源电路,其中,用于第一执行资源电路的操作的输入是第一数据类型;第二集群,其包括第二组物理寄存器和第二执行资源电路,其中,用于第二执行资源电路的操作的输入是不同于第一数据类型的第二数据类型;以及寄存器重命名电路,其被配置为:确定将被存储在第一逻辑寄存器中的第一指令的结果的数据类型预测;并且,基于数据类型预测匹配第一数据类型,将第一逻辑寄存器重命名以被存储在第一组物理寄存器的物理寄存器中。
Description
技术领域
本公开涉及用于功率节约的寄存器重命名。
背景技术
现代处理器经常使用物理寄存器重命名的乱序执行。先前的系统已经使用物理寄存器重命名通过针对每个产生的结果分配新的目的地寄存器来去除写后写和读后写的危险。
在一些处理器中(例如,摩托罗拉88000和RISC-V Zfinx选项),架构寄存器能够在不同时间保存不同类型的数据。例如,单个寄存器能够保存整型值或浮点值。在一些传统的处理器中,其中指令集架构允许将多种数据类型保存在同一架构寄存器中,统一的物理寄存器文件已经用于保存不同的数据类型,并且路由到处理不同数据类型的各种功能单元。
用于矩阵计算的二维结构(例如,脉动阵列)非常有效,因为操作数位于阵列中并且只需要少量移动来处理数据。然而,这些用于矩阵计算的二维结构是硬连线的并且通常用于固定功能机器。因为操作数是分布式的,所以它非常专业,并且编写微码来做正确的事情。在通用中央处理器(CPU)的不同上下文中,这些优势会丢失,并且对于访问寄存器与访问高速缓存与访问内存存在非常不同的定时。
附图说明
当结合附图阅读时,从以下详细描述中可以最好地理解本公开。需要强调的是,根据惯例,附图的各种特征不是按比例绘制的。相反,为清楚起见,任意扩大或缩小了各种特征的尺寸。
图1是针对使用基于数据类型预测的寄存器重命名来执行指令的系统的示例的框图。
图2是针对使用基于数据类型预测寄存器重命名和能够用于从错误预测中恢复的集群之间的替代数据路径来执行指令的系统的示例的框图。
图3是基于数据类型预测的寄存器重命名的过程的示例的流程图。
图4是针对通过插入微操作以将数据移动到正确的集群而从数据类型错误预测中恢复的过程的示例的流程图。
图5是针对通过使用集群之间的替代数据路径从数据类型错误预测中恢复的过程的示例的流程图。
图6是针对执行来自使用寄存器重命名的指令集的指令的系统的示例的框图。
图7是针对执行来自使用寄存器重命名的指令集的指令的系统的示例的框图。
具体实施方式
概述
本文公开了用于功率节约的寄存器重命名的实施方式。
在第一方面,本说明书中描述的主题能够体现在用于执行指令的集成电路中,该集成电路包括:第一集群,其包括第一组物理寄存器和第一执行资源电路,第一执行资源电路被配置为执行将第一组物理寄存器的一个或多个寄存器的内容作为输入的操作,其中,用于第一执行资源电路的操作的输入是第一数据类型;第二集群,其包括第二组物理寄存器和第二执行资源电路,第二执行资源电路被配置为执行将第二组物理寄存器的一个或多个寄存器的内容作为输入的操作,其中,用于第二执行资源电路的操作的输入是不同于第一数据类型的第二数据类型;以及寄存器重命名电路,其被配置为:确定将存储在第一逻辑寄存器中的第一指令的结果的数据类型预测;以及,基于数据类型预测匹配第一数据类型,将第一逻辑寄存器重命名以被存储在第一组物理寄存器的物理寄存器中。
在第二方面,本说明书中描述的主题能够体现在方法中,该方法包括:确定将存储在第一逻辑寄存器中的第一指令的结果的数据类型预测;以及,基于数据类型预测匹配第一数据类型,重命名第一逻辑寄存器以被存储在从多个集群中选择的第一集群的物理寄存器中,其中,多个集群包括:第一集群,其包括第一组物理寄存器和第一执行资源电路,第一执行资源电路被配置为执行将第一组物理寄存器的一个或多个寄存器的内容作为输入的操作,其中,用于第一执行资源电路的操作的输入是第一数据类型;以及,第二集群,其包括第二组物理寄存器和第二执行资源电路,第二执行资源电路被配置为执行将第二组物理寄存器的一个或多个寄存器的内容作为输入的操作,其中,用于第二执行资源电路的操作的输入是不同于第一数据类型的第二数据类型。
在第三方面,本说明书中描述的主题能够体现在用于执行指令的集成电路中,该集成电路包括执行资源电路,其被配置为对存储在物理寄存器中的操作数执行指令;一组物理寄存器,其包括位于执行资源电路附近的第一物理寄存器子集和位于比第一物理寄存器子集中的寄存器更远离执行资源电路的第二物理寄存器子集;以及,寄存器重命名电路,其被配置为:检测存储在指令解码缓冲器中的指令序列,指令序列包括对具有真实依赖性的第一逻辑寄存器的多个顺序引用;以及,基于对指令序列的检测,将第一逻辑寄存器重命名以被存储在第一物理寄存器子集的物理寄存器中,并且将指令序列中引用的另一个逻辑寄存器重命名以被存储在第二物理寄存器子集中的物理寄存器。
在以下详细描述、所附权利要求和附图中公开了本公开的这些和其他方面。
能够使用专门的物理结构来改进不同数据类型的存储和处理。例如,一个这样的结构是包括使用本地数据路径紧密耦合的物理寄存器文件和功能单元的组合的集群。这种方法的一个好处是能够针对目前存在于每个架构寄存器中的动态数据类型优化每个寄存器文件中数据值的表示。第二好处可能是涉及相同数据类型的计算序列被本地化到同一个集群,从而提高能量效率并且减少电路延迟。
本文描述的一些实施方式可以提供在优化的集群中提供不同数据类型的单独本地化处理的好处,即使当指令集架构要求从一组统一的架构寄存器保存和处理所有数据类型时也是如此。例如,具有统一架构寄存器文件的标量处理器能够提供两个集群,一个用于整型并且一个用于浮点型据类型。此处描述的方法动态地将值分配给集群并且基于数据类型在适当的集群中执行计算。
例如,一些实施方式基于指令操作码来确定在哪个集群中执行指令。如果空间可用,则在该集群中分配目的地并且更新映射表(否则停止解码)。检查映射表以查看源是否在正确的集群中。如果是这样,向集群派送指令。如果源位于错误的集群中(例如,加载到整型寄存器文件中,但现在作为浮点型被处理),则插入附加的微操作以将数据从一个集群移动到另一个集群,可能作为转换的一部分重新格式化数据。
当目标格式从操作码中不清楚时(例如,从存储器加载),能够进行预测。例如,一些预测选项包括:1)与同一架构寄存器的最后类型相同。观察发现,在许多代码中,尤其是循环中,相同的架构寄存器用于重复保存相同的类型。如果软件了解此预测策略,则软件能够提高此方案的性能。2)在指令缓冲器中先行进位,以观察后面的操作码是否指示使用这个源。3)随机地生成数据类型预测。4)基于程序计数器(PC)加指令编码。在编码足以确定结果类型的情况下,忽略程序计数器,否则使用程序计数器的某些部分以索引到预测表中。例如,同一架构寄存器可以在同一个循环中使用两次以保存不同类型的数据
5)以上的组合可以用于确定将存储在目的地寄存器中的指令的结果的数据类型预测。
例如,一些扩展包括:1)处理器通常提供对布尔值的操作。例如,可能返回1或0的比较指令。这些是通常用作到分支指令或其他逻辑操作的输入。能够提供专门的谓词值集群以改进这些指令的性能。这些单位值的物理存储比全宽物理寄存器少得多,并且处理这些值所需的能量也比全宽物理寄存器少得多。在逻辑运算(例如,AND、OR、XOR)的情况下,指令编码加上源数据类型用于确定使用哪个集群。分支执行通常位于处理器的关键路径上,并且将布尔值隔离到单独的集群中能够减少分支解析的电路延迟。2)半角标量(例如,64位标量中的32位宽度)可以用于通过重用物理寄存器来获得更多容量。3)可以提供标量寄存器中用于打包SIMD值的单独集群以减少非打包SIMD值的关键路径。这可以改进具有更长电路延迟的能量的打包SIMD集群。4)向量寄存器文件。
公开了用于寄存器重命名的系统和方法。集成电路(例如,处理器或微控制器)可以解码和执行指令集架构(ISA)(例如,RISC V指令集)的指令。这种用于集成电路设计的方法使用寄存器重命名以获得用于通用CPU中的矩阵计算(例如脉动阵列)的具有二维结构的固定功能机器的一些好处。例如,考虑乘加、相乘和相加矩阵。如果源和目的地相同(c<-c*a+b),则c矩阵可以保留在阵列和其他中的一个中“不动”(例如,a,然后b是唯一可能流入的东西)。
先前已经以不同的目标完成了寄存器重命名。先前的目标是去除错误的依赖关系,诸如读后写和写后写(WAR和WAW)。不过,在这里,我们针对每个正在写入的结果分配了新的物理寄存器。所以对比:rc2=rc1+ra1*rb1。现在rc2位于不同的物理寄存器中,而不是rc1。但是我们想要做的是通过覆盖它来让c1留在原地,例如rc1=rc1+ra1*rb1。
另一个区别是,重命名是基于芯片中的物理位置(例如,与算术逻辑单元(ALU)的接近程度)来执行的。先前的技术通常使用全部位于中央注册表文件中的寄存器,但此处可以执行重命名以强制到ALU的输入之一在物理上靠近ALU,这可以降低将值传输到ALU以执行后续指令所需的功率。这些功率节省对于向量或矩阵运算可能特别重要。例如,考虑指令C=A+B,其中,A、B和C是向量。在这个示例中,C可以被重新分配给标准的一维向量。例如,考虑指令F=D+E,其中,D、E和F是矩阵。在此示例中,F将是ALU旁边的二维结构。分配的寄存器的形状/大小可以基于数据和操作的类型而改变。
如本文所用,术语“电路”是指被构造为实现一个或多个功能的电子组件(例如,晶体管、电阻器、电容器和/或电感器)的布置。例如,电路可以包括互连以形成共同实现逻辑功能的逻辑门的一个或多个晶体管。
细节
图1是针对使用基于数据类型预测的寄存器重命名执行指令的系统100的示例的框图。系统100包括用于执行指令(例如RISC-V指令或x86指令)的集成电路110。集成电路110包括:第一集群120,其被配置为对第一数据类型的一个或多个输入执行操作;第二集群130,其被配置为对第二数据类型的一个或多个输入执行操作;以及寄存器重命名电路140,其被配置为重命名逻辑寄存器以基于指令结果的数据类型预测(例如,加载指令、添加指令或异或指令)映射到从一组集群中选择的集群中的物理寄存器。集成电路110可以包括附加的集群(图1中未示出),其通过采用附加的不同数据类型的输入而执行指令。在一些实施方式中,集成电路110可以包括附加的集群(图1中未示出),其通过采用第一数据类型或第二数据类型的输入而执行指令,并且,当在使用相同数据类型的多个集群中进行选择以进行寄存器重命名时,寄存器重命名可以基于附加的考虑,诸如指令序列之间的真实依赖性。集成电路110包括指令缓冲器170,其存储预期在不久的将来执行的指令。例如,集成电路110可以是微处理器或微控制器。
集成电路110包括第一集群120和第一执行资源电路122,第一集群120包括第一组物理寄存器124、126和128,第一执行资源电路122被配置为执行采用第一组物理寄存器124、126和128的一个或多个寄存器的内容作为输入的操作。第一执行资源电路122的操作的输入是第一数据类型(例如,整型、浮点型、布尔值、标量、向量或矩阵)的。例如,执行资源电路122可以包括算术逻辑单元(ALU)。例如,执行资源电路122可以包括浮点单元(FPU)。集群可以包括使得执行资源电路122能够访问作为保存输入自变量的源寄存器和/或作为保存结果的目的寄存器的第一组物理寄存器124、126和128的寄存器的数据路径。例如,第一集群120可以用于执行将存储在物理寄存器124中的值和存储在物理寄存器126中的值作为输入参数的指令(例如,加法指令),并且将结果输出到物理寄存器126。例如,第一组物理寄存器124、126和128可以紧邻第一执行资源电路122。
集成电路110包括第二集群130和第二执行资源电路132,第二集群130包括第二组物理寄存器134、136和138,第二执行资源电路132被配置为执行采用第二组物理寄存器的一个或多个寄存器的内容作为输入的操作。第二执行资源电路132的操作的输入是不同于第一数据类型的第二数据类型的。例如,第一数据类型可以是浮点型而第二数据类型可以是整型。例如,第一数据类型可以是整型而第二数据类型可以是浮点型。在一些实施方式中,第一数据类型是布尔值并且第一组物理寄存器中的寄存器是单个位大小。例如,第一执行资源电路122可以被配置为执行分支指令。分支执行通常在处理器的关键路径上,并且将布尔值隔离到单独的集群中可以减少分支解析的电路延迟。在一些实施方式中,第一数据类型是标量(例如,64位标量),并且第二数据类型是半角标量(例如,32位标量)。在一些实施方式中,第一数据类型是打包SIMD(单指令,多数据)并且第二数据类型是非打包SIMD。提供单独的集群可能会减少非打包SIMD值的关键路径。例如,打包SIMD集群可以针对具有更长电路延迟的功率节约进行定制。例如,执行资源电路132可以包括算术逻辑单元(ALU)。例如,执行资源电路132可以包括浮点单元(FPU)。集群可以包括使得执行资源电路132能够访问作为保存输入变元的源寄存器和/或作为存储结果的目的地寄存器的第一组物理寄存器134、326和138的寄存器的数据路径。例如,第二集群130可以用于执行将存储在物理寄存器136中的值和存储在物理寄存器138中的值作为输入参数的指令(例如,乘法指令),并且将结果输出到物理寄存器134。例如,第二组物理寄存器134、136和138紧邻第二执行资源电路132。
集成电路110包括寄存器重命名电路140。寄存器重命名电路140维护存储数据的重命名表150,该数据将指令集的逻辑寄存器(例如,RISC-V寄存器)与其中存储或将存储逻辑寄存器的值的一个或多个相应的物理寄存器相关联。寄存器重命名电路140包括数据类型预测器电路160,其被配置为针对将存储在目的地寄存器中的指令的结果来生成数据类型预测。
寄存器重命名电路140被配置为确定将存储在第一逻辑寄存器中的第一指令的结果的数据类型预测。第一逻辑寄存器可以被允许在适用的指令集下存储不同数据类型(例如,整型或浮点型)的数据。例如,数据类型预测器电路160可以用于确定数据类型预测。例如,第一逻辑寄存器可以是具有至少两个元素的向量并且第一组物理寄存器中的物理寄存器存储该向量。例如,第一逻辑寄存器可以是具有多行和多列元素的矩阵,并且第一组物理寄存器的物理寄存器可以存储该矩阵。在一些实施方式中,数据类型预测是基于第一指令的操作码来确定的。例如,在第一指令是浮点加法的情况下,数据类型预测可能会偏向于作为浮点型。尽管如此,可以考虑其他因素来预测依赖于结果的后续指令对结果的重新解释或类型转换。在一些实施方式中,第一指令是非类型化传输指令(例如加载指令),因此第一指令的操作码可能缺少关于结果的数据类型的信息。
例如,寄存器重命名电路140可以在指令缓冲器170中先行进位以检测将访问第一逻辑寄存器中的第一指令的结果的第二指令并且使用关于该消耗指令的信息来确定数据类型预测。例如,可以基于将访问第一指令的结果的排队指令的操作码来确定数据类型预测。排队指令可以存储在指令缓冲器170中。例如,第一指令可以作为用于发布的下一条指令172存储在指令缓冲器中,并且寄存器重命名电路140可以扫描指令缓冲器以检测接下来将访问作为源寄存器的第一逻辑寄存器的第二指令174。然后可以基于第二指令174的操作码来确定数据类型预测。
例如,可以基于当前存储在第一逻辑寄存器中的数据的当前数据类型来确定数据类型预测。观察发现,在许多代码中,尤其是循环中,相同的架构寄存器用于重复地保存相同的类型。如果软件开发人员了解此预测策略,则软件能够改进此方案的性能。例如,第一指令可能是加载指令,其可能不提供关于其结果(即,从存储器系统检索的值)的数据类型的固有信息,但软件对架构寄存器的一致使用可以提供所需提示以准确预测从存储器加载的数据的数据类型。
例如,可以基于程序计数器的值(例如,与第一指令相关联的程序计数器值)来确定数据类型预测。在一些实施方式中,数据类型预测器电路160可以维护由程序计数器值索引的预测计数器的预测表。
例如,可以基于上述因素的组合来确定数据类型预测。
寄存器重命名电路140被配置为基于数据类型预测匹配第一数据类型,重命名第一逻辑寄存器以被存储在第一组物理寄存器124、126或128的物理寄存器中。例如,重命名第一逻辑寄存器可以包括更新重命名表150的条目以将第一逻辑寄存器与第一组物理寄存器124、126或128的物理寄存器相关联。重命名第一逻辑寄存器可以使第一指令的结果存储在第一组物理寄存器124、126或128的物理寄存器中。如果数据类型预测准确,则当第二、后面的指令访问第一逻辑寄存器以访问结果时,能够使用第一集群120有效地执行第二指令。
如果数据类型预测证明不准确,则发生了错误预测。例如,可以通过在第二指令之前插入附加微操作以将第一指令的结果移动到第二指令的适当集群中的物理寄存器来解决预测错误。在一些实施方式中,寄存器重命名电路140被配置为检测错误预测,其中,将在第一指令之后执行的第二指令将作为第二数据类型的输入访问第一逻辑寄存器;并且,响应于错误预测,在第二指令之前发出微操作。微操作将存储在第一组物理寄存器的物理寄存器中的第一逻辑寄存器的值复制到第二组物理寄存器中的物理寄存器。例如,微操作可以是微架构移动指令。在一些实施方式中,微操作还可以引起重命名表150的更新以反映第一指令的结果的移动。
集成电路包括指令缓冲器170。例如,指令缓冲器170可以是集成电路110的解码缓冲器。例如,指令缓冲器170可以是集成电路110的发布缓冲器。例如,指令缓冲器170可以是集成电路110的指令高速缓存的高速缓存行。
图2是针对使用基于寄存器重命名的数据类型预测和能够用于从错误预测中恢复的集群之间的替代数据路径执行指令的系统200的示例的框图。系统200包括用于执行指令(例如RISC-V指令或x86指令)的集成电路210。集成电路210包括:第一集群120,其被配置为对第一数据类型的一个或多个输入执行操作;第二集群130,其被配置为对第二数据类型的一个或多个输入执行操作;以及寄存器重命名电路240,其被配置为重命名逻辑寄存器以基于对指令结果的数据类型预测(例如,加载指令、添加指令或异或指令)映射到从一组集群中选择的集群中的物理寄存器。集成电路210可以包括附加的集群(图2中未示出),其通过采用附加的不同数据类型的输入而执行指令。在一些实施方式中,集成电路210可以包括附加的集群(图2中未示出),其通过采用第一数据类型或第二数据类型的输入而执行指令,并且,当在使用相同数据类型的多个集群中进行选择以进行寄存器重命名时,寄存器重命名可以基于附加的考虑,诸如指令序列之间的真实依赖性。集成电路210包括指令缓冲器170,其存储预期在不久的将来执行的指令。例如,集成电路210可以是微处理器或微控制器。
集成电路210与图1的集成电路110之间的差异在于,集成电路210包括从第一组物理寄存器124、126和128的物理寄存器128到第二执行资源电路132的替代数据路径280。替代数据路径280使第二执行资源电路132能够直接地访问存储在物理寄存器128中的值,而不是必须等待集成电路210的其他资源将存储在物理寄存器128中的结果移动到第二组物理寄存器134、136、和138的物理寄存器。例如,寄存器重命名电路240可以被配置为:检测错误预测,其中,将在第一指令之后执行的第二指令将作为第二数据类型的输入访问第一逻辑寄存器;并且,响应于错误预测,使第二执行资源电路132使用替代数据路径280访问第一逻辑寄存器的值。使用替代数据路径280可能消耗更多功率以从更远的距离访问数据,但可以节省相对于插入微操作以在集群之间复制数据的时间。
图3是针对基于数据类型预测的寄存器重命名的过程300的示例的流程图。过程300包括:针对将存储在第一逻辑寄存器中的第一指令的结果确定310数据类型预测;并且,基于数据类型预测匹配第一数据类型,重命名320第一逻辑寄存器以被存储在从多个集群选择的第一集群的物理寄存器中。例如,过程300可以使用图1的集成电路110来实现。例如,过程300可以使用图2的集成电路210来实现。
过程300包括确定310针对将存储在第一逻辑寄存器中的第一指令的结果的数据类型预测。第一逻辑寄存器可以被允许在适用的指令集(例如,RISC-V指令集或x86指令集)下存储不同数据类型(例如,整型、浮点型、布尔值、标量、向量或矩阵)的数据。
在一些实施方式中,基于第一指令的操作码来确定310数据类型预测。例如,逻辑与指令的目的地寄存器可以基于产生要存储在目的地寄存器中的结果的指令的操作码被预测为布尔数据类型。例如,在第一指令是浮点加法的情况下,数据类型预测可能会偏向于浮点型。然而,可以考虑其他因素来预测依赖于结果的后续指令对结果的重新解释或类型转换。
例如,第一指令可以是非类型化传输指令(例如,加载指令)。在这种情况下,第一指令的操作码可能缺少关于如何使用结果的信息,因此可以使用其他技术来确定310第一指令的结果的数据类型预测。
例如,指令缓冲器中的先行进位可以用于识别可能访问第一逻辑寄存器中的结果的未来指令,并且因此提供关于应向结果给出什么数据类型的有用信息。在一些实施方式中,基于将访问第一指令的结果的排队指令的操作码来确定310数据类型预测。排队指令可以存储在指令缓冲器中。例如,指令缓冲器可以是解码缓冲器。例如,指令缓冲器可以是指令高速缓存的高速缓存行。例如,指令缓冲器可以是发布缓冲器。
例如,可以基于当前存储在第一逻辑寄存器中的数据的当前数据类型来确定310数据类型预测。观察发现,在许多代码段中,尤其是循环中,相同的架构寄存器用于重复地保存相同的类型。如果软件开发人员了解此预测策略,则软件能够改进此方案的性能。例如,第一指令可能是加载指令,其可能不提供关于其结果(即,从存储器系统检索的值)的数据类型的固有信息,但软件对架构寄存器的一致使用可以提供所需提示以确定310从存储器加载的数据的准确数据类型预测。
例如,可以基于程序计数器的值(例如,与第一指令相关联的程序计数器值)来确定310数据类型预测。在一些实施方式中,可以维护由程序计数器值索引的预测计数器的预测表。在一些实施方式中,可以随机地确定310数据类型预测。
例如,可以基于上述因素的组合来确定310数据类型预测,诸如第一指令的操作码、之后消费指令的操作码的先行进位、第一逻辑寄存器的当前数据类型、和/或程序计数器值。
过程300包括基于数据类型预测匹配第一数据类型,重命名320第一逻辑寄存器以被存储在从多个集群选择的第一集群的物理寄存器中。第一集群可以包括第一组物理寄存器和第一执行资源电路,第一执行资源电路被配置为执行将第一组物理寄存器的一个或多个寄存器的内容作为输入的操作。第一执行资源电路的操作输入可以是第一数据类型的。多个集群可以包括第二集群,第二集群包括第二组物理寄存器和第二执行资源电路,第二执行资源电路被配置为执行将第二组物理寄存器的一个或多个寄存器的内容作为输入的操作。第二执行资源电路的操作的输入可以是不同于第一数据类型的第二数据类型的。例如,第一数据类型可以是浮点型而第二数据类型可以是整型。例如,第一数据类型可以是整型而第二数据类型可以是浮点型。在一些实施方式中,第一数据类型是布尔值并且第一组物理寄存器的寄存器是单个位大小。例如,第一执行资源电路可以被配置为执行分支指令。在一些实施方式中,第一逻辑寄存器是具有至少两个元素的向量并且第一组物理寄存器的物理寄存器存储该向量。在一些实施方式中,第一逻辑寄存器是具有多行和多列元素的矩阵,并且第一组物理寄存器的物理寄存器存储该矩阵。在一些实施方式中,第一数据类型是标量(例如,64位标量),并且第二数据类型是半角标量(例如,32位标量)。在一些实施方式中,第一数据类型是打包SIMD(单指令,多数据)并且第二数据类型是非打包SIMD。提供单独的集群可能会减少非打包SIMD值的关键路径。
如果数据类型预测证明是不准确的,则发生了错误预测。在一些实施方式中,可以通过在第二指令之前插入附加微操作以将第一指令的结果移动到第二指令的适当集群中的物理寄存器来解决预测错误。例如,可以实施图4的过程400以处置结果的数据类型的错误预测。在一些实施方式中,可以通过使用集成电路中的替代数据路径以访问来自与不同数据类型相关联的不同集群中的一个集群的结果来解决预测错误。例如,可以实现图5的过程500以处置结果的数据类型的错误预测。
图4是针对通过插入微操作以将数据移动到正确的集群而从数据类型错误预测中恢复的过程400的示例的流程图。过程400包括检测410错误预测,其中,将在第一指令之后执行的第二指令将作为第二数据类型的输入访问第一逻辑寄存器;并且,响应于错误预测,在第二指令之前发出420微操作,以将存储在集群的物理寄存器中的第一逻辑寄存器的值复制到第二集群的物理寄存器。例如,过程400可以使用图1的集成电路110来实现。例如,过程400可以使用图2的集成电路210来实现。
过程400包括检测410错误预测,其中,将在第一指令之后执行的第二指令将作为第二数据类型的输入访问第一逻辑寄存器。例如,当第二指令位于发布缓冲器中时,通过针对具有第一逻辑寄存器作为源寄存器的指令来扫描发布缓冲器,可以检测到410错误预测。检测410错误预测还可以包括检查第一指令的结果在逻辑寄存器中的干预重写。检测410错误预测可以包括,当发现访问第一逻辑寄存器中的结果的第二指令时,检查作为第二指令的源寄存器的第一逻辑寄存器的数据类型是否与针对第一指令的结果的数据类型预测相匹配,和/或结果当前是否存储在适当的集群中以执行第二指令。
过程400包括,响应于错误预测,在第二指令之前发出420微操作。微操作将存储在第一组物理寄存器的(即第一集群的)物理寄存器中的第一逻辑寄存器的值复制到第二组物理寄存器的(即第二集群的)物理寄存器。例如,微操作可以是微架构移动指令。在一些实施方式中,微操作还可以引起重命名表(例如,重命名表150)的更新以反映第一指令的结果的移动。在第一指令的结果已经被复制到第二集群之后,第二集群可以用于执行第二指令,有效地访问第一指令的结果并且将其视为与第二集群相关联的第二数据类型的数据。
图5是针对通过使用集群之间的替代数据路径从数据类型错误预测中恢复的过程500的示例的流程图。过程500包括检测510错误预测,其中,将在第一指令之后执行的第二指令将作为第二数据类型的输入访问第一逻辑寄存器;并且,响应于错误预测,使520第二执行资源电路(例如,第二执行资源电路132)使用从第一组物理寄存器的(例如,第一集群120的)物理寄存器到第二执行资源电路的替代数据路径(例如,替代数据路径280)访问第一逻辑寄存器的值。例如,可以使用图2的集成电路210来实现过程500。
过程500包括检测510错误预测,其中,将在第一指令之后执行的第二指令将作为第二数据类型的输入访问第一逻辑寄存器。例如,当第二指令位于发布缓冲器中时,通过针对具有第一逻辑寄存器作为源寄存器的指令来扫描发布缓冲器可以检测到510错误预测。检测510错误预测还可以包括检查第一指令的结果在逻辑寄存器中的干预重写。检测510错误预测可以包括,当发现访问第一逻辑寄存器中的结果的第二指令时,检查作为第二指令的源寄存器的第一逻辑寄存器的数据类型是否与针对第一指令的结果的数据类型预测相匹配和/或结果当前是否存储在适当的集群中以执行第二指令。
过程500包括响应于错误预测,使520第二执行资源电路使用从第一组物理寄存器的(即,第一集群的)物理寄存器到第二执行资源电路的替代数据路径访问第一逻辑寄存器的值。集成电路(例如,集成电路210)包括从第一组物理寄存器的物理寄存器到第二执行资源电路的替代数据路径。替代数据路径使第二执行资源电路能够直接地访问存储在第一组物理寄存器的物理寄存器中的值,而不必等待集成电路的其他资源将存储在物理寄存器中的结果移动到第二组物理寄存器的物理寄存器。使用替代数据路径可能会消耗更多功率以从更远的距离访问数据,但可以节省相对于插入微操作以在集群之间复制数据的时间。
图6是针对使用寄存器重命名执行来自指令集的指令的系统600的示例的框图。系统600包括被配置为执行指令的集成电路610。例如,集成电路610可以是处理器或微控制器。集成电路610包括重命名表620、中央寄存器文件630和执行资源单元640。重命名表620包括将由汇编指令集(例如,RISC V指令集、x86指令集或ARM指令集)支持的逻辑寄存器映射到集成电路610的物理寄存器的条目(例如,条目622、624和626)。中央寄存器文件630包括物理寄存器,诸如物理寄存器632和物理寄存器634。执行资源单元640包括执行资源电路642和紧邻执行资源电路642的物理寄存器644、646和648。
集成电路610的特征是它包括映射到在集成电路610上不同位置的物理寄存器的重命名表620。在一些实施方式中,物理寄存器可以是不同类型的。例如,物理寄存器644、646和648可以是向量,而在物理寄存器632中可以存储标量。物理寄存器644、646和648非常靠近算术逻辑单元(ALU)642,这可以导致更高的速度、功率节省和/或更小的面积。
在一些实施方式中,重命名表620可以使得能够在执行资源电路附近使用一组异构的物理寄存器。例如,指令集架构(ISA)可以对逻辑寄存器的形状(例如,标量、向量或矩阵)进行编码。在一些实施方式中,ISA的每个逻辑寄存器名称可以编码逻辑寄存器的形状。在获取、解码、执行期间,操作数(例如,源和目的地)的形状可能是已知的。这可以使不同类型(例如,标量、向量和矩阵)的寄存器能够用于使用ISA的指令实现的等式的不同部分。在一些实施方式中,可以支持两种类型的向量,一种用于行向量,另一种用于列向量,以更好地处置二维矩阵运算。参见图7以查看矩阵功能单元附近的潜在物理寄存器类型的示例。
图7是针对使用寄存器重命名执行来自指令集的指令的系统700的示例的框图。系统700包括被配置为执行指令的集成电路710。例如,集成电路710可以是处理器或微控制器。集成电路710包括重命名表720、度量、矩阵执行单元730、标量执行单元740、向量执行单元750和物理寄存器760、762、764和766。重命名表720包括条目(例如,722、724和726),其将由汇编指令集(例如,RISCV指令集、x86指令集或ARM指令集)支持的逻辑寄存器映射到集成电路710的物理寄存器。矩阵执行单元730包括执行资源电路732和紧邻执行资源电路732的存储矩阵的物理寄存器734。标量执行单元740包括执行资源电路742和紧邻执行资源电路742的存储标量的物理寄存器744、746和748。向量执行单元750包括执行资源电路752和紧邻执行资源电路752的存储向量的物理寄存器754、756和758。
集成电路710包括四种类型的物理寄存器。请注意,一维向量的一些物理寄存器(760、762、764和766)没有功能单元,因为它们馈送给矩阵功能单元。例如,物理寄存器760、762、764和766可以存储列向量。相比之下,the、标量和矩阵具有接近的用于操作的功能单元。在一些实施方式中(图7中未示出),集成电路710可以包括接近于用于一维向量(例如,列向量)的物理寄存器760、762、764和766的一个或多个执行资源电路。图7的示例架构对于ISA可能更有效,其中,向量被指定为要进行矩阵变换或元素运算。虽然没有显示在图7中,但是可以存在多个物理矩阵寄存器。
例如,一个简单的路径是:输入所有type1,输出所有type1→分配type1寄存器(例如,所有标量或所有一维向量(例如,行向量)或加载矩阵)。如果没有可用的物理寄存器,则可以延迟指令以在合适的物理寄存器可用时调度执行。
例如,稍微更复杂的路径是:根据ISA或寄存器名称中的提示,针对每个输入/输出挑选最佳类型的物理寄存器。
例如,高级路径/更复杂的实施例是:应用分支预测类型试探法来跟踪如何使用结果并且针对输出挑选正确类型的寄存器。例如,在图7中,我们可能有两种类型的一维向量,行和列。如果结果经常存储在行向量中,但结果需要在列向量中用于以后的矩阵运算,则可能会出现效率低下的情况。反之亦然,如果结果通常存储在列向量寄存器中,但需要结果来直接执行需要移动的操作,则可能会出现效率低下的情况。因此,在这条路径上,跟踪该操作数的最近使用能够通知未来的布置。大多数循环会使用由缓冲器组成的简单的预测器来支持这一点,该缓冲器跟踪先前出现时使用的寄存器类型。所以会针对重命名表跟踪这样的东西:
重命名表 | 使用预测 |
v0 | 1D行向量 |
v1 | 标量 |
v2 | 2D矩阵 |
v3 | 1D列向量 |
v... |
其中,使用预测正是之前那个案例最后发生的事情。因此,由预测器产生的预测可能取决于最后的路径。
除了物理地理之外的另一个问题是,如果有整型ALU和另一个进行浮点计算的ALU会发生什么。因此,可用的物理寄存器的类型也可能因寄存器的一个或多个元素的精度格式而异。例如,重命名表可以扩展为跟踪或预测逻辑寄存器的元素类型,这可能导致重命名表:
重命名表 | 使用预测 | 元素类型 |
v0 | 1D行向量 | 单精度浮点 |
v1 | 标量 | 双精度浮点 |
v2 | 2D矩阵 | 整型 |
v3 | 1D列向量 | 定制 |
v... |
寄存器重命名可以与处理器中的乱序执行相关联。这种方法可以用于这两者。
例如,用于执行指令的集成电路610包括被配置为对存储在物理寄存器中的操作数执行指令的执行资源电路642;一组物理寄存器,其包括位于靠近执行资源电路的物理寄存器644、646和648的第一子集和物理寄存器的第二子集(例如中央寄存器文件630),物理寄存器的第二子集比物理寄存器644、646和648的第一子集中的寄存器更远离执行资源电路642;以及寄存器重命名电路,其被配置为:检测存储在指令解码缓冲器中的指令序列,该指令序列包括对具有真实依赖性的第一逻辑寄存器的多个顺序引用;并且,基于对指令序列的检测,重命名第一逻辑寄存器以被存储在物理寄存器644、646和648的第一子集的物理寄存器中,并且重命名在指令序列中引用的另一个逻辑寄存器以被存储在物理寄存器644、646和648的第二子集的物理寄存器中。例如,第一逻辑寄存器可以是具有至少两个元素的向量并且物理寄存器的第一子集的物理寄存器存储该向量。例如,第一逻辑寄存器可以是具有多行和多列元素的矩阵,并且第一物理寄存器子集的物理寄存器存储该矩阵。在一些实施方式中,指令序列在第一逻辑寄存器中累积和。
虽然已经结合某些实施例描述了本公开,但是应当理解,本公开不限于所公开的实施例,而是相反,旨在涵盖包括在所附权利要求的范围内的各种修改和等同布置,该范围应被给予最广泛的解释以涵盖法律允许的所有此类修改和等效结构。
Claims (42)
1.一种用于执行指令的集成电路,包括:
第一集群,所述第一集群包括第一组物理寄存器和第一执行资源电路,所述第一执行资源电路被配置为执行将所述第一组物理寄存器的一个或多个寄存器的内容作为输入的操作,其中,用于所述第一执行资源电路的操作的所述输入是第一数据类型;
第二集群,所述第二集群包括第二组物理寄存器和第二执行资源电路,所述第二执行资源电路被配置为执行将所述第二组物理寄存器的一个或多个寄存器的内容作为输入的操作,其中,用于所述第二执行资源电路的操作的所述输入是不同于所述第一数据类型的第二数据类型;以及
寄存器重命名电路,所述寄存器重命名电路被配置为:
确定将被存储在第一逻辑寄存器中的第一指令的结果的数据类型预测;以及
基于所述数据类型预测匹配所述第一数据类型,将所述第一逻辑寄存器重命名以被存储在所述第一组物理寄存器的物理寄存器中。
2.根据权利要求1所述的集成电路,其中,所述第一指令是非类型化传输指令。
3.根据权利要求1所述的集成电路,其中,所述第一指令是加载指令。
4.根据权利要求1至3中任一项所述的集成电路,其中,所述数据类型预测是基于所述第一指令的操作码来确定的。
5.根据权利要求1至4中任一项所述的集成电路,其中,基于将访问所述第一指令的所述结果的排队指令的操作码来确定所述数据类型预测,其中,所述排队指令存储在指令缓冲器中。
6.根据权利要求5所述的集成电路,其中,所述指令缓冲器是所述集成电路的解码缓冲器。
7.根据权利要求5所述的集成电路,其中,所述指令缓冲器是所述集成电路的指令高速缓存的高速缓存行。
8.根据权利要求1至7中任一项所述的集成电路,其中,所述数据类型预测是基于当前存储在所述第一逻辑寄存器中的数据的当前数据类型来确定的。
9.根据权利要求1至8中任一项所述的集成电路,其中,所述数据类型预测是基于程序计数器的值来确定的。
10.根据权利要求1至9中任一项所述的集成电路,其中,所述寄存器重命名电路被配置为:
检测错误预测,其中,将在所述第一指令之后执行的第二指令将作为所述第二数据类型的输入访问所述第一逻辑寄存器;以及
响应于所述错误预测,在所述第二指令之前发出微操作,其中,所述微操作将存储在所述第一组物理寄存器的物理寄存器中的所述第一逻辑寄存器的值复制到所述第二组物理寄存器的物理寄存器。
11.根据权利要求1至9中任一项所述的集成电路,包括从所述第一组物理寄存器的物理寄存器到所述第二执行资源电路的替代数据路径,并且其中,所述寄存器重命名电路被配置为:
检测错误预测,其中,将在所述第一指令之后执行的第二指令将作为所述第二数据类型的输入访问所述第一逻辑寄存器;以及
响应于所述错误预测,使所述第二执行资源电路使用所述替代数据路径访问所述第一逻辑寄存器的值。
12.根据权利要求1至11中任一项所述的集成电路,其中,所述第一逻辑寄存器是具有至少两个元素的向量,并且所述第一组物理寄存器的所述物理寄存器存储所述向量。
13.根据权利要求1至11中任一项所述的集成电路,其中,所述第一逻辑寄存器是具有多行和多列元素的矩阵,并且所述第一组物理寄存器的所述物理寄存器存储所述矩阵。
14.根据权利要求1至13中任一项所述的集成电路,其中,所述第一数据类型是浮点型并且所述第二数据类型是整型。
15.根据权利要求1至13中任一项所述的集成电路,其中,所述第一数据类型是整型并且所述第二数据类型是浮点型。
16.根据权利要求1至13中任一项所述的集成电路,其中,所述第一数据类型是布尔型并且所述第一组物理寄存器的寄存器是单个位大小。
17.根据权利要求16所述的集成电路,其中,所述第一执行资源电路被配置为执行分支指令。
18.根据权利要求1至13中任一项所述的集成电路,其中,所述第一数据类型是标量并且所述第二数据类型是半角标量。
19.根据权利要求1至13中任一项所述的集成电路,其中,所述第一数据类型是打包SIMD并且所述第二数据类型是非打包SIMD。
20.一种用于执行指令的方法,包括:
确定将存储在第一逻辑寄存器中的第一指令的结果的数据类型预测;以及
基于所述数据类型预测匹配第一数据类型,重命名所述第一逻辑寄存器以被存储在从多个集群中选择的第一集群的物理寄存器中,其中,所述多个集群包括:
第一集群,所述第一集群包括第一组物理寄存器和第一执行资源电路,所述第一执行资源电路被配置为执行将所述第一组物理寄存器的一个或多个寄存器的内容作为输入的操作,其中,用于所述第一执行资源电路的操作的所述输入是所述第一数据类型;以及
第二集群,所述第二集群包括第二组物理寄存器和第二执行资源电路,所述第二执行资源电路被配置为执行将所述第二组物理寄存器的一个或多个寄存器的内容作为输入的操作,其中,用于所述第二执行资源电路的操作的所述输入是不同于所述第一数据类型的第二数据类型。
21.根据权利要求20所述的方法,其中,所述第一指令是非类型化传输指令。
22.根据权利要求20所述的方法,其中,所述第一指令是加载指令。
23.根据权利要求20至22中任一项所述的方法,其中,所述数据类型预测是基于所述第一指令的操作码来确定的。
24.根据权利要求20至23中任一项所述的方法,其中,基于将访问所述第一指令的所述结果的排队指令的操作码来确定所述数据类型预测,其中,所述排队指令存储在指令缓冲器中。
25.根据权利要求24所述的方法,其中,所述指令缓冲器是解码缓冲器。
26.根据权利要求24所述的方法,其中,所述指令缓冲器是指令高速缓存的高速缓存行。
27.根据权利要求20至26中任一项所述的方法,其中,基于当前存储在所述第一逻辑寄存器中的数据的当前数据类型来确定所述数据类型预测。
28.根据权利要求20至27中任一项所述的方法,其中,所述数据类型预测是基于程序计数器的值来确定的。
29.根据权利要求20至28中任一项所述的方法,包括:
检测错误预测,其中,将在所述第一指令之后执行的第二指令将作为所述第二数据类型的输入访问所述第一逻辑寄存器;以及
响应于所述错误预测,在所述第二指令之前发出微操作,其中,所述微操作将存储在所述第一组物理寄存器的物理寄存器中的所述第一逻辑寄存器的值复制到所述第二组物理寄存器的物理寄存器。
30.根据权利要求20至28中任一项所述的方法,包括:
检测错误预测,其中,将在所述第一指令之后执行的第二指令将作为所述第二数据类型的输入访问所述第一逻辑寄存器;以及
响应于所述错误预测,使所述第二执行资源电路使用从所述第一组物理寄存器的物理寄存器到所述第二执行资源电路的替代数据路径来访问所述第一逻辑寄存器的值。
31.根据权利要求20至30中任一项所述的方法,其中,所述第一逻辑寄存器是具有至少两个元素的向量,并且所述第一组物理寄存器的所述物理寄存器存储所述向量。
32.根据权利要求20至30中任一项所述的方法,其中,所述第一逻辑寄存器是具有多行和多列元素的矩阵,并且所述第一组物理寄存器的所述物理寄存器存储所述矩阵。
33.根据权利要求20至30中任一项所述的方法,其中,所述第一数据类型是浮点型并且所述第二数据类型是整型。
34.根据权利要求20至30中任一项所述的方法,其中,所述第一数据类型是整型并且所述第二数据类型是浮点型。
35.根据权利要求20至30中任一项所述的方法,其中,所述第一数据类型是布尔值并且所述第一组物理寄存器的寄存器是单个位大小。
36.根据权利要求20至35中任一项所述的方法,其中,所述第一执行资源电路被配置为执行分支指令。
37.根据权利要求20至30中任一项所述的方法,其中,所述第一数据类型是标量并且所述第二数据类型是半角标量。
38.根据权利要求20至30中任一项所述的方法,其中,所述第一数据类型是打包SIMD并且所述第二数据类型是非打包SIMD。
39.一种用于执行指令的集成电路,包括:
执行资源电路,所述执行资源电路被配置为对存储在物理寄存器中的操作数执行指令,
一组物理寄存器,所述一组物理寄存器包括位于所述执行资源电路附近的第一物理寄存器子集和位于比所述第一物理寄存器子集中的所述寄存器更远离所述执行资源电路的第二物理寄存器子集,以及
寄存器重命名电路,所述寄存器重命名电路被配置为:
检测存储在指令解码缓冲器中的指令序列,所述指令序列包括对具有真实依赖性的第一逻辑寄存器的多个顺序引用;以及
基于对所述指令序列的检测,将所述第一逻辑寄存器重命名以被存储在所述第一物理寄存器子集的物理寄存器中,并且将所述指令序列中引用的另一个逻辑寄存器重命名以被存储在所述第二物理寄存器子集的物理寄存器中。
40.根据权利要求39所述的集成电路,其中,所述第一逻辑寄存器是具有至少两个元素的向量,并且所述第一物理寄存器子集的所述物理寄存器存储所述向量。
41.根据权利要求39所述的集成电路,其中,所述第一逻辑寄存器是具有多行和多列元素的矩阵,并且所述第一物理寄存器子集的所述物理寄存器存储所述矩阵。
42.根据权利要求39至41中任一项所述的集成电路,其中,所述指令序列在所述第一逻辑寄存器中累积和。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063056542P | 2020-07-24 | 2020-07-24 | |
US63/056,542 | 2020-07-24 | ||
PCT/US2021/042904 WO2022020681A1 (en) | 2020-07-24 | 2021-07-23 | Register renaming for power conservation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116134417A true CN116134417A (zh) | 2023-05-16 |
Family
ID=77398644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180059501.5A Pending CN116134417A (zh) | 2020-07-24 | 2021-07-23 | 用于功率节约的寄存器重命名 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20230305852A1 (zh) |
EP (1) | EP4185953A1 (zh) |
KR (1) | KR20230038799A (zh) |
CN (1) | CN116134417A (zh) |
TW (1) | TW202219746A (zh) |
WO (1) | WO2022020681A1 (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6167508A (en) * | 1998-06-02 | 2000-12-26 | Compaq Computer Corporation | Register scoreboard logic with register read availability signal to reduce instruction issue arbitration latency |
US9582322B2 (en) * | 2013-03-15 | 2017-02-28 | Soft Machines Inc. | Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping |
US11816483B2 (en) * | 2017-12-29 | 2023-11-14 | Intel Corporation | Systems, methods, and apparatuses for matrix operations |
-
2021
- 2021-07-23 WO PCT/US2021/042904 patent/WO2022020681A1/en active Application Filing
- 2021-07-23 US US18/017,792 patent/US20230305852A1/en active Pending
- 2021-07-23 KR KR1020237006179A patent/KR20230038799A/ko unknown
- 2021-07-23 TW TW110127142A patent/TW202219746A/zh unknown
- 2021-07-23 CN CN202180059501.5A patent/CN116134417A/zh active Pending
- 2021-07-23 EP EP21756105.9A patent/EP4185953A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230305852A1 (en) | 2023-09-28 |
WO2022020681A1 (en) | 2022-01-27 |
EP4185953A1 (en) | 2023-05-31 |
TW202219746A (zh) | 2022-05-16 |
KR20230038799A (ko) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6009608B2 (ja) | 条件付き命令が無条件で出力を提供するシステム及び方法 | |
US8769539B2 (en) | Scheduling scheme for load/store operations | |
US7237094B2 (en) | Instruction group formation and mechanism for SMT dispatch | |
TWI507980B (zh) | 最佳化暫存器初始化操作 | |
Kumar | The hp pa-8000 risc cpu | |
US7937561B2 (en) | Merge microinstruction for minimizing source dependencies in out-of-order execution microprocessor with variable data size macroarchitecture | |
EP0762270B1 (en) | Microprocessor with load/store operation to/from multiple registers | |
US6393555B1 (en) | Rapid execution of FCMOV following FCOMI by storing comparison result in temporary register in floating point unit | |
US6405305B1 (en) | Rapid execution of floating point load control word instructions | |
GB2524619A (en) | Method and apparatus for implementing a dynamic out-of-order processor pipeline | |
EP0638183A1 (en) | DEVICE AND METHOD FOR COMPLETING COMMANDS IN A SUPER-SCALAR PROCESSOR. | |
CN101147125A (zh) | 用于直接累积未调准数据的可写入分段字的架构型寄存器 | |
WO2015114305A1 (en) | A data processing apparatus and method for executing a vector scan instruction | |
Mittal | A survey of value prediction techniques for leveraging value locality | |
CN101438236A (zh) | 用以在微处理器内组合来自多个寄存器单元的对应半字单元的方法及系统 | |
US20220035635A1 (en) | Processor with multiple execution pipelines | |
US6370637B1 (en) | Optimized allocation of multi-pipeline executable and specific pipeline executable instructions to execution pipelines based on criteria | |
Iliakis et al. | Repurposing GPU microarchitectures with light-weight out-of-order execution | |
US20030005422A1 (en) | Technique for improving the prediction rate of dynamically unpredictable branches | |
US20230305852A1 (en) | Register renaming for power conservation | |
US5850563A (en) | Processor and method for out-of-order completion of floating-point operations during load/store multiple operations | |
Putnam et al. | Dynamic vectorization in the E2 dynamic multicore architecture | |
Shum et al. | Design and microarchitecture of the IBM System z10 microprocessor | |
Aasaraai et al. | Towards a viable out-of-order soft core: Copy-free, checkpointed register renaming | |
US6157995A (en) | Circuit and method for reducing data dependencies between instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |