CN100495325C - 用于按需临时寄存器重命名的方法和系统 - Google Patents

用于按需临时寄存器重命名的方法和系统 Download PDF

Info

Publication number
CN100495325C
CN100495325C CNB2007100883103A CN200710088310A CN100495325C CN 100495325 C CN100495325 C CN 100495325C CN B2007100883103 A CNB2007100883103 A CN B2007100883103A CN 200710088310 A CN200710088310 A CN 200710088310A CN 100495325 C CN100495325 C CN 100495325C
Authority
CN
China
Prior art keywords
register
instruction
rename
temporary register
additional temporary
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.)
Expired - Fee Related
Application number
CNB2007100883103A
Other languages
English (en)
Other versions
CN101046740A (zh
Inventor
W·E·伯基
A·T·威廉斯
C·M·阿伯内西
A·J·小范诺斯特兰德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101046740A publication Critical patent/CN101046740A/zh
Application granted granted Critical
Publication of CN100495325C publication Critical patent/CN100495325C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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)

Abstract

一种用于通过动态地调整来自重命名寄存器的组之中的临时寄存器的数目来执行按需临时寄存器重新分配的方法和处理器包括:从物理寄存器的集合中初始地分配一个或多个有架构的寄存器和一个或多个重命名寄存器的组;以及从重命名寄存器的组中分配初始数目的临时寄存器用于存储微代码操作。响应于检测到获取的指令需要超出初始数目以外的附加临时寄存器,从重命名寄存器的组之中重新分配选定物理寄存器作为附加临时寄存器,并且设置标志以指示重命名寄存器被分配作为附加临时寄存器。响应于确定不再需要附加临时寄存器,对附加临时寄存器解除分配并且对标志复位,使得选定物理寄存器返回到重命名寄存器的组。

Description

用于按需临时寄存器重命名的方法和系统
技术领域
本发明主要地涉及数据处理,并且特别地涉及处理器中的资源分配。本发明更特别地涉及一种用于处理器中按需临时寄存器重命名的方法和系统。
背景技术
典型的超级标量微处理器是高度复杂的数字集成电路,它例如包括用于存储指令和数据的一级或者多级高速缓存存储器、用于执行指令的多个执行单元、用于从存储器取回指令和向各种执行单元路由指令的指令定序逻辑以及用于存储操作数和结果数据的寄存器。在这些组件之内和之间散布有用于暂时缓冲指令、数据和控制信息的各种队列、缓冲器和锁存器。正如将会理解到的,在任一时刻,上述典型处理器都包含大量状态信息,该信息可以定义为在处理器之内存在的指令、数据和控制信息的集合。
许多微处理器实施用以将复杂指令分成较小操作(称之为内部操作或者iop)的微代码。为了在内部操作之间传递数据,现有技术解决方案将较少固定数量的通用寄存器(GPR)限定为仅由微代码使用的临时寄存器(称之为扩展GPR或者eGPR)。临时寄存器是专用于存储微代码指令操作数的存储位置。为了具有紧凑的指令编码,多数处理器指令集具有可以直接命名的特殊位置的小集。能够直接命名的这些寄存器称为重命名寄存器,并且是用于有架构的寄存器的将来状态的存储位置。寄存器重命名是指一种用来避免由于程序操作对寄存器的再使用而施加的对那些操作不必要的串行化。在无序微处理器设计中的一个具有限制性的性能因素是GPR重命名寄存器的可用性。在现有技术之下,可用重命名寄存器的总数目等于物理寄存器的总数目减去为每个线程而限定的逻辑寄存器的数目,因为必须为涌出投机性无序指令这一可能性保存最新的专用逻辑寄存器集。
就现有技术广而言之,在可用重命名寄存器与物理寄存器之间的关系是N重命名=N物理-N线程×N逻辑。然而,对于用于利用微代码(并且因此利用临时寄存器)来执行无序指令的微处理器的已知解决方案而言,该关系变成N重命名=N物理-N线程×(N逻辑+N临时)。现有技术解决方案的结果在于,对于具有多个线程的微处理器而言,可用于计算的重命名的数目可能变得显著地减少,应当对用于临时寄存器处理的现有技术解决方案有大的举措。
发明内容
一种用于通过动态地调整来自重命名寄存器的组(pool)之中的临时寄存器的数目来执行按需临时寄存器重新分配的方法和处理器,包括:从物理寄存器的集合中初始地分配一个或多个架构化寄存器和一个或多个重命名寄存器的组;以及从重命名寄存器的组中分配初始数目的临时寄存器用于存储微代码操作。响应于检测到获取的指令需要超出初始数目以外的附加临时寄存器,从重命名寄存器的组之中重新分配选定物理寄存器作为附加临时寄存器,并且设置标志以指示重命名寄存器被分配作为附加临时寄存器。响应于确定不再需要附加临时寄存器,对附加临时寄存器解除分配并且对标志复位,使得选定物理寄存器返回到重命名寄存器的组。
附图说明
在所附权利要求中阐述了被认为是本发明的特性所在的新特征。然而本发明本身及其优选实施方式、更多目的和优点将通过参照在结合附图阅读时对说明性实施例的以下具体描述而得到最佳的理解,在附图中:
图1描绘了本发明用于按需临时寄存器重命名的方法和系统可以有利地与之一起使用的数据处理系统的说明性实施例;
图2图示了根据本发明优选实施例的物理通用寄存器文件的示例性实施例;以及
图3是根据本发明优选实施例用于处理器中按需临时寄存器重命名的过程的流程图。
具体实施方式
现在参照附图,并且特别地参照图1,描绘了根据本发明用于处理指令和数据的数据处理系统的说明性实施例的高级框图。具体而言,数据处理系统180支持按需临时寄存器重命名。
数据处理系统180包括各自包括单个集成电路超级标量处理器的多个处理器10,该超级标量处理器正如下文进一步讨论的那样包括全部由数字集成电路形成的各种执行单元、寄存器、缓冲器、存储器和其它功能单元。如图1中所示,处理器10可以通过互连结构14耦合到其它设备如系统存储器12和第二处理器10,以形成更大的数据处理系统如工作站计算机系统。处理器10也包括片上多级高速缓存分级,该分级分别包括统一的二级(L2)高速缓存16以及一分为二的一级(L1)指令(I)和数据(D)高速缓存18和20。正如本领域技术人员所知,高速缓存16、18和20提供了对于与系统存储器12中的存储器位置相对应的高速缓存线的低延迟访问。
由处理器10之内的指令定序逻辑13对指令进行获取和排序以供处理。在所示实施例中,指令定序逻辑13包括含有有效地址(EA)的指令获取地址寄存器(IFAR)30,该有效地址指示了要从L1I-高速缓存18获取以供处理的指令的高速缓存线。在每个循环期间中,新指令获取地址可以从三个来源之一中加载到IFAR30中:分支预测单元(BPU)36,它提供从条件分支指令的预测中得到的投机性(speculative)目标路径地址;全局完成表(GCT)38,它提供有序路径地址;以及分支执行单元(BEU)92,它提供从对预测的条件分支指令的解析中得到的非投机性地址。如果命中/错过逻辑22在有效到真实地址转换(ERAT)32对IFAR30中所含EA的转换以及I-高速缓存目录34中真实地址(RA)的查找之后确定与IFAR30中的EA相对应的指令的高速缓存线没有驻留于L1I-高速缓存18中,则命中/错过逻辑22经由I-高速缓存请求总线24向L2高速缓存16提供RA作为请求地址。也可以由在L2高速缓存16之内的预取逻辑基于最近的访问模式来生成这样的请求地址。响应于请求地址,L2高速缓存16输出可能在通行经过可选预解码逻辑144之后经由I-高速缓存重加载总线26加载到预取缓冲器(PB)28和L1I-高速缓存18中的指令的高速缓存线。
一旦由在IFAR30中的EA所指定的高速缓存线驻留于L1高速缓存18中,L1I-高速缓存18就向分支预测单元(BPU)36和指令获取缓冲器(IFB)40输出该高速缓存线。BPU 36在指令高速缓存线中搜寻分支指令并且预测条件分支指令(如果有的话)的结果。继分支预测之后,BPU 36如上讨论的那样向IFAR 30提供投机性指令获取地址,并且向分支指令队列64传递预测,使得可以在条件分支指令随后由分支执行单元92解析时可以确定该预测的准确性。
IFB 40暂时地缓存从L1I-高速缓存18接收的指令的高速缓存线,直至指令的高速缓存线可以由指令转换单元(ITU)42转换为止。在处理器10的所示实施例中,ITU42将来自于用户指令集架构(UISA)指令(例如PowerPC指令)中的指令转换成可由处理器10的执行单元直接执行的数目可能不同的内部ISA(IISA)指令。例如可以通过参考存储于只读存储器(ROM)模板中的微代码来执行这样的转换。在至少一些实施例中,UISA到IISA的转换产生与UISA指令数目不同的IISA指令和/或与对应UISA指令长度不同的IISA指令。然后所得的IISA指令由全局完成表38分配给指令组,该指令组的成员被允许相对于彼此无序地执行。全局完成表38跟踪其执行尚未借助于至少一个关联EA完成的每个指令组,该EA优选地是指令组中最旧指令的EA。
继UISA到IISA的指令转换之后,根据指令类型将指令有序地调度到锁存器44、46、48和50其中之一。也就是,将分支指令和其它条件寄存器(CR)修改指令调度到锁存器44,将固定点和加载-存储指令调度到锁存器46和48中的任一锁存器,而将浮点指令调度到锁存器50。然后通过CR映射器52、链接和计数(LC)寄存器映射器54、异常计数器(XER)映射器56、通用寄存器(GPR)映射器58和浮点寄存器(FPR)映射器60中的适当一个在寄存器文件之内为需要重命名寄存器以便暂时存储执行结果的每个指令分配一个或多个寄存器。
然后所调度的指令被暂时地放置于CR分发队列(CRIQ)62、分支分发队列(BIQ)64、固定点分发队列(FXIQ)66和68以及浮点分发队列(FPIQ)70和72中的适当一个之中。可以从分发队列62、64、66、68、70和72机会性地(即可能无序地)将指令分发到处理器10的执行单元以供执行。然而,将指令保留在分发队列62-72中直至指令的执行完成为止,并且如果有结果数据的话则在任一指令需要重新分发的情况下写回结果数据。
如图所示,处理器10的执行单元包括用于执行CR修改指令的CR单元(CRU)90、用于执行分支指令的分支执行单元(BEU)92、用于执行固定点指令的两个固定点单元(FXU)94和100、用于执行加载和存储指令的两个加载-存储单元(LSU)96和98以及用于执行浮点指令的两个浮点单元(FPU)102和104。每个执行单元90-104优选地实施成具有多个流水线级的执行流水线。
在执行单元90-104之一内的执行期间中,指令从耦合到执行单元的在寄存器文件之内的一个或多个有架构的寄存器和/或重命名寄存器接收操作数(如果有的话)。当执行CR修改或者CR相关指令时,CRU 90和BEU 92访问CR寄存器文件80,该文件80在优选实施例中包含CR和各自包括由一个或多个比特形成的多个独特字段的多个CR重命名寄存器。在这些字段之中的是分别指示了数值(通常是指令的结果或者操作数)是否小于零、大于零或者等于零的LT、GT和EQ字段。链接和计数寄存器(LCR)寄存器文件82包含计数寄存器(CTR)、链接寄存器(LR)和重命名寄存器,BEU 92还可以通过上述每个寄存器来解析条件分支以获得路径地址。经同步的通用寄存器文件(GPR)84和86复制寄存器、存储由FXU 94和100以及LSU 96和98访问和产生的固定点和整数数值。如同GPR84和86那样也可以实施为同步寄存器复制集合的浮点寄存器文件(FPR)88包含根据由FPU102和104对浮点指令和由LSU 96和98对浮点加载指令的执行中获得的浮点数值。
在执行单元结束指令的执行之后,该执行向对按程序顺序的指令的完成进行安排的GCT 38进行通报。为了完成由CRU 90、FXU 94和100或者FPU 102和104执行的指令,GCT 38向适当的映射器发信号,该映射器设置如下指示,该指示用以指示向指令分配的一个或多个寄存器文件寄存器现在包含寄存器的有架构状态。然后从分发队列中去除该指令,并且一旦在它的指令组中的所有指令都已经完成就从GCT 38中去除该指令。然而,可以不同地完成其它类型的指令。
当BEU 92解析条件分支指令并且确定应当采用的执行路径的路径地址时,将该路径地址与由BPU 36预测的投机性路径地址做比较。如果路径地址匹配,则不需要进一步处理。然而,如果计算的路径地址与预测的路径地址不匹配,则BEU 92向IFAR 30供应正确路径地址。在任一情形下,然后可以从BIQ 64中去除分支指令,并且当在同一指令组之内的所有其它指令都已经完成时从GCT 38中去除该分支指令。
继加载指令(包括反向加载指令)的执行之后,通过执行该加载指令来计算的有效地址由数据ERAT(未示出)转换成真实地址,然后作为请求地址提供给L1D-高速缓存20。在这一点,将加载操作从FXIQ 66和68中去除并且放置于加载数据队列(LDQ)114中直至执行所指示的加载为止。如果请求地址在L1D-高速缓存20中错过,则将请求地址放置于加载错过队列(LMQ)116中,其中从L2高速缓存16中取回来自该队列的请求数据,并且在失败的情况下从另一处理器10或者从系统存储器12中取回该请求数据。
类似地利用存储队列(STQ)110来完成存储指令(包括存储条件指令),继执行存储指令之后将用于存储的有效地址加载到该存储队列中。继目标地址的有效到真实转换之后,可以将数据从STQ 110存储到L1D-高速缓存20和L2高速缓存16中的任一个或者两个高速缓存中。
正如本领域技术人员将从前面的描述中理解到的,处理器10的指令处理电路因此可以视为指令流水线,在该流水线中的指令在完成以及从GCT38中引退之前一般从高速缓存存储器流向指令定序逻辑13、流向分发队列62-72、流向执行单元90-104而对于存储器存取指令则流向队列110、114和116其中之一。
为了有助于测试,处理器10可以可选地包括在图1所示的内部逻辑与芯片封装的输入/输出(I/O)管脚之间耦合的常规测试电路120(例如符合IEEE标准1149.1的边界扫描接口)。
现在参照图2,图示了物理寄存器文件如GPR84和86的更具体描述。物理寄存器文件200由物理寄存器202-220组成。物理寄存器202-220由GPR映射器58分配作为有架构的寄存器202-210、重命名寄存器212-220和临时寄存器218-220。每个物理寄存器202-220包含用于指示该寄存器是否正在用作临时寄存器的标志比特222-240。当用作GPR 84和86时,物理寄存器202-220存储由FXU 94和100以及LSU 96和98存取和产生的固定点和整数数值。在FXU 94和100以及LSU 96和98之内的执行期间中,指令从一个或多个有架构的寄存器202-210和重命名寄存器212-220的组242中接收操作数(如果有的话),其中一些寄存器将在配置上可指定为耦合到执行单元FXU 94和100以及LSU 96和98的在物理寄存器文件200之内的临时寄存器218-220。
现在转向图3,描绘了根据本发明优选实施例用于处理器中按需临时寄存器重命名的过程的流程图。该过程始于步骤300,然后移向步骤302,该步骤描绘了GPR映射器58或者XER映射器56从物理寄存器202-220的集合中分配作为一个或多个有架构的寄存器202-210和一个或多个重命名寄存器212-220的组242,其中有初始数目的临时寄存器218-220用于存储微代码操作数。在优选实施例中,临时寄存器218-220的那一初始数目将是零。该过程然后继续到步骤304。步骤304图示了GPR映射器58等待来自指令定序逻辑13的指示已经获取指令的信号。
该过程接着移到步骤306,该步骤描绘了GPR映射器58基于来自ITU 42的输入来检测获取的指令是否以如下临时寄存器为目标,该临时寄存器需要超出临时寄存器218-220的初始分配以外的附加临时寄存器218-220。如果GPR映射器58基于来自ITU42的输入而检测到获取的指令需要超出临时寄存器218-220的初始分配以外的附加临时寄存器218-220,则该过程继续到步骤310。步骤310图示了GPR映射器58重新从重命名寄存器212-220的组242之中分配选定物理寄存器218作为附加临时寄存器218-220。该过程接着移到步骤312,该步骤描绘了GPR映射器58(例如通过设置单个比特的锁存器)在来自重命名寄存器212-220的组242之中的选定物理寄存器218上设置标志232-240以指示选定物理寄存器218用作附加临时寄存器218-220。该过程然后继续到步骤308。
返回到步骤306,如果GPR映射器58基于来自ITU 42的输入而检测到获取的指令不需要超出临时寄存器218-220的初始分配以外的附加临时寄存器218-220,则该过程继续到步骤308。步骤308图示了GPR映射器58等待来自FXU 94和100以及LSU 96和98其中之一的指示获取的指令已经完成的信号。该过程然后继续到步骤314,该步骤描绘了GPR映射器58基于来自ITU 42的输入来确定是否有任何需要超出临时寄存器218-220的初始分配以外的附加临时寄存器218-220的未执行指令保留在包括获取的指令的线程中。如果GPR映射器58基于来自ITU 42的输入而确定有任何需要超出临时寄存器218-220的初始分配以外的附加临时寄存器218-220的未执行指令保留在包括获取的指令的线程中,则该过程返回到步骤308。
返回到步骤314,GPR映射器58基于来自ITU42的输入(其指示ITU42进行的检测)而确定没有需要超出临时寄存器218-220的初始分配以外的附加临时寄存器218-220的未执行指令保留在包括获取的指令的线程中,则该过程接着移到步骤316。步骤316图示了GPR映射器58对附加临时寄存器220解除分配并且将标志240复位,使得选定物理寄存器220返回到重命名寄存器212-220的组242中。该过程然后返回到步骤304。
尽管已经参照优选实施例特别地示出和描述了本发明,但是本领域技术人员将理解到,在不脱离本发明的精神和范围时可以在实施例中做出形式和细节上的各种变化。例如,本发明不限于特定处理器架构或者限于处理器架构,而是可应用于任何处理器架构。

Claims (12)

1.一种用于执行重新分配的方法,所述方法包括:
从物理寄存器的集合中初始地分配一个或多个架构化寄存器,和多个重命名寄存器的组;
从所述重命名寄存器的组中分配初始数目的临时寄存器用于存储微代码操作数;
响应于检测到获取的指令的目标是需要超出所述初始数目以外的附加临时寄存器的临时寄存器,从所述重命名寄存器的组之中重新分配选定物理寄存器作为所述附加临时寄存器;
设置标志以指示所述重命名寄存器被分配作为所述附加临时寄存器;以及
响应于确定不再需要所述附加临时寄存器,对所述附加临时寄存器解除分配并且将所述标志复位,使得所述选定物理寄存器返回到所述重命名寄存器的组。
2.根据权利要求1所述的方法,其中在所述从所述重命名寄存器之中重新分配所述选定物理寄存器作为所述附加临时寄存器的步骤中,在所述获取的指令的调度中从所述重命名寄存器之中重新分配选定物理寄存器作为所述附加临时寄存器。
3.根据权利要求1所述的方法,其中通过确定没有未执行的指令保留在以下线程中,确定不再需要所述附加临时寄存器,所述线程包含需要所述附加临时寄存器的所述获取的指令。
4.根据权利要求1所述的方法,其中在所述设置所述标志的步骤中,设置单个比特的锁存器。
5.根据权利要求1所述的方法,其中在所述从所述重命名寄存器的组中分配初始数目的临时寄存器用于存储微代码操作数的步骤中,从所述重命名寄存器的组中分配零个临时寄存器用于存储微代码操作数。
6.一种具有重新分配的处理器,所述处理器包括:
指令定序单元;
执行单元;
物理寄存器的集合,包括一个或多个架构化寄存器和多个重命名寄存器的组;以及
映射器,从所述重命名寄存器的组中分配初始数目的临时寄存器用于存储微代码操作数,其中响应于检测到获取的指令的目标是需要超出所述初始数目以外的附加临时寄存器的临时寄存器,所述映射器从所述重命名寄存器的组之中重新分配选定物理寄存器作为所述附加临时寄存器,并且设置标志以指示所述重命名寄存器被分配作为所述附加临时寄存器,以及其中响应于确定不再需要所述附加临时寄存器,对所述附加临时寄存器解除分配并且将所述标志复位,使得所述选定物理寄存器返回到所述重命名寄存器的组。
7.根据权利要求6所述的处理器,其中所述映射器在所述获取的指令的调度中从所述重命名寄存器之中重新分配选定物理寄存器作为所述附加临时寄存器。
8.根据权利要求6所述的处理器,还包括用于检测不再需要所述附加临时寄存器的指令转换单元。
9.根据权利要求8所述的处理器,其中所述检测不再需要所述附加临时寄存器的指令转换单元还包括用于确定没有未执行的指令保留在以下线程中的装置,所述线程包含需要所述附加临时寄存器的所述获取的指令。
10.根据权利要求6所述的处理器,还包括单个比特的锁存器,用于为被分配作为所述附加临时寄存器的所述重命名寄存器设置所述标志。
11.根据权利要求6所述的处理器,还包括指令转换单元,所述指令转换单元检测所述获取的指令需要超出所述初始数目以外的所述附加临时寄存器。
12.根据权利要求6所述的处理器,还包括在所述映射器之内用于从所述重命名寄存器的组中分配零个临时寄存器用于存储微代码操作数的装置。
CNB2007100883103A 2006-03-28 2007-03-15 用于按需临时寄存器重命名的方法和系统 Expired - Fee Related CN100495325C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/390,785 US7363469B2 (en) 2006-03-28 2006-03-28 Method and system for on-demand scratch register renaming
US11/390,785 2006-03-28

Publications (2)

Publication Number Publication Date
CN101046740A CN101046740A (zh) 2007-10-03
CN100495325C true CN100495325C (zh) 2009-06-03

Family

ID=38560840

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2007100883103A Expired - Fee Related CN100495325C (zh) 2006-03-28 2007-03-15 用于按需临时寄存器重命名的方法和系统

Country Status (2)

Country Link
US (2) US7363469B2 (zh)
CN (1) CN100495325C (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2442499B (en) * 2006-10-03 2011-02-16 Advanced Risc Mach Ltd Register renaming in a data processing system
US7526638B1 (en) * 2008-03-16 2009-04-28 International Business Machines Corporation Hardware alteration of instructions in a microcode routine
CN101770387B (zh) * 2008-12-26 2013-03-13 北京中电华大电子设计有限责任公司 一种含有配对寄存器的寄存器分配方法
CN101788901B (zh) * 2009-01-24 2013-09-25 世意法(北京)半导体研发有限责任公司 使用影子寄存器的高效硬件实现的设备及其方法
JP4830164B2 (ja) * 2009-07-07 2011-12-07 エヌイーシーコンピュータテクノ株式会社 情報処理装置及びベクトル型情報処理装置
CN101604235B (zh) * 2009-07-10 2012-03-28 杭州电子科技大学 一种嵌入式处理器分支预测的方法
US8707015B2 (en) * 2010-07-01 2014-04-22 Advanced Micro Devices, Inc. Reclaiming physical registers renamed as microcode architectural registers to be available for renaming as instruction set architectural registers based on an active status indicator
US8725989B2 (en) * 2010-12-09 2014-05-13 Intel Corporation Performing function calls using single instruction multiple data (SIMD) registers
US20130339666A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Special case register update without execution
US9732974B2 (en) * 2012-08-14 2017-08-15 Digi International Inc. System and method for wiring-relay configuration in digital thermostats
US9841974B2 (en) * 2014-04-25 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Renaming with generation numbers
CN107408035B (zh) * 2015-03-27 2021-11-09 英特尔公司 用于缕程间通信的装置和方法
US10528355B2 (en) * 2015-12-24 2020-01-07 Arm Limited Handling move instructions via register renaming or writing to a different physical register using control flags
US10365928B2 (en) * 2017-11-01 2019-07-30 International Business Machines Corporation Suppress unnecessary mapping for scratch register
CN110503193B (zh) * 2019-07-25 2022-02-22 瑞芯微电子股份有限公司 一种基于roi的池化运算方法和电路
CN114564529A (zh) * 2022-02-25 2022-05-31 西安热工研究院有限公司 一种智能存样柜的集成管控系统及方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6854110B2 (en) * 2000-12-21 2005-02-08 Microsoft Corporation System and method for obtaining scratch registers in computer executable binaries
US7404067B2 (en) * 2003-09-08 2008-07-22 Intel Corporation Method and apparatus for efficient utilization for prescient instruction prefetch
US7206923B2 (en) * 2003-12-12 2007-04-17 International Business Machines Corporation Method and apparatus for eliminating the need for register assignment, allocation, spilling and re-filling
US7487336B2 (en) * 2003-12-12 2009-02-03 Intel Corporation Method for register allocation during instruction scheduling
US8091090B2 (en) * 2004-07-31 2012-01-03 Hewlett-Packard Development Company, L.P. Method for providing scratch registers for use by a virtual-machine monitor

Also Published As

Publication number Publication date
CN101046740A (zh) 2007-10-03
US20080127197A1 (en) 2008-05-29
US20070234011A1 (en) 2007-10-04
US7363469B2 (en) 2008-04-22

Similar Documents

Publication Publication Date Title
CN100495325C (zh) 用于按需临时寄存器重命名的方法和系统
US7003629B1 (en) System and method of identifying liveness groups within traces stored in a trace cache
EP2674856B1 (en) Zero cycle load instruction
Kessler The alpha 21264 microprocessor
US7685410B2 (en) Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects
EP2411908B1 (en) Tracking deallocated load instructions using a dependence matrix
KR100880686B1 (ko) 2개 레벨의 분기 예측 캐시를 갖는 분기 예측
US7472258B2 (en) Dynamically shared group completion table between multiple threads
KR19980079702A (ko) 저장 인스트럭션의 결과의 전달하는 방법 및 이를 구현한 프로세서
US6721877B1 (en) Branch predictor that selects between predictions based on stored prediction selector and branch predictor index generation
CN100524202C (zh) 利用改进指令目的地标记的数据处理系统、处理器和方法
TWI457827B (zh) 具有同時的無序調度之分布式調度
US9626185B2 (en) IT instruction pre-decode
US6425090B1 (en) Method for just-in-time delivery of load data utilizing alternating time intervals
US20140089638A1 (en) Multi-Destination Instruction Handling
US6389529B1 (en) Method for alternate preferred time delivery of load data
US6427204B1 (en) Method for just in-time delivery of instructions in a data processing system
US11175917B1 (en) Buffer for replayed loads in parallel with reservation station for rapid rescheduling
US7197630B1 (en) Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
US7694110B1 (en) System and method of implementing microcode operations as subroutines
US6430683B1 (en) Processor and method for just-in-time delivery of load data via time dependency field
US6721876B1 (en) Branch predictor index generation using varied bit positions or bit order reversal
US10983801B2 (en) Load/store ordering violation management
US6505277B1 (en) Method for just-in-time delivery of load data by intervening caches
US7783692B1 (en) Fast flag generation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090603

Termination date: 20120315