CN101788901B - 使用影子寄存器的高效硬件实现的设备及其方法 - Google Patents
使用影子寄存器的高效硬件实现的设备及其方法 Download PDFInfo
- Publication number
- CN101788901B CN101788901B CN 200910002807 CN200910002807A CN101788901B CN 101788901 B CN101788901 B CN 101788901B CN 200910002807 CN200910002807 CN 200910002807 CN 200910002807 A CN200910002807 A CN 200910002807A CN 101788901 B CN101788901 B CN 101788901B
- Authority
- CN
- China
- Prior art keywords
- processor
- physical register
- register
- clauses
- subclauses
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000004044 response Effects 0.000 claims abstract description 54
- 238000013507 mapping Methods 0.000 claims description 24
- 238000005259 measurement Methods 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 9
- 238000011084 recovery Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 238000013500 data storage Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 3
- 108010022579 ATP dependent 26S protease Proteins 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 210000000352 storage cell Anatomy 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30116—Shadow registers, e.g. coupled registers, not forming part of the register space
-
- 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/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
本发明提供了使用影子寄存器的高效硬件实现设备及其方法。处理器中的寄存器系统包括一个存储数据的物理寄存器集合以及连接到其的寄存器重命名逻辑。每个物理寄存器由物理寄存器标识符标识并且具有操作状态。当处理器处于第一处理器状态时,寄存器重命名逻辑将数据存储在该物理寄存器集合中并且从其获取数据。响应于处理器从第一处理器状态进入到第二处理器状态的指示,寄存器重命名逻辑将该物理寄存器集合中的具有第一状态的物理寄存器标识为第一组寄存器并且将该物理寄存器集合中的剩余物理寄存器标识为第二组寄存器。当处理器处于第二处理器状态时,寄存器重命名逻辑将数据存储到第二组寄存器而非第一组寄存器中,并且从其获取数据。
Description
技术领域
本公开一般涉及处理器架构的领域,并且更具体地,涉及使用处理器中影子寄存器(shadow register)的寄存器重命名。
背景技术
通常,处理器是能够执行计算机程序以实施算法计算、数据置换(permutation)等的设备。微处理器是一种类型的处理器,其将处理器的所有或大部分功能集成在单个集成电路上。超标量微处理器是可以通过将多条指令同时调度到处理器中冗余的执行资源(也称为功能单元),从而在一个时钟周期期间执行不止一条指令的微处理器。当执行指令和微操作时,处理器通常从寄存器读取源操作数并且将结果或目的操作数存储在寄存器中。寄存器是处理器内的临时存储单元,对其内容的访问可以比对其他位置的可用存储器的访问更快,并且寄存器通常用于保存供处理器使用的运算和其他结果。给定的寄存器可以包含多个比特,例如8比特、16比特或32比特,并且可以通过相应的寄存器标识符,例如寄存器号,来寻址。
由处理器执行的程序通常将读取和写入指定到由指令集架构所规定的有限寄存器集合,并且该有限的寄存器集合称为架构寄存器。例如,给定的指令集架构可以规定32个均为64比特宽的整型寄存器以及32个均为64比特宽的浮点寄存器。在这种情况下,针对运行该特定指令集架构的处理器写成的程序将读取和写入的操作指定到那64个架构寄存器。
在超标量计算中,寄存器重命名逻辑通常用于将架构寄存器重命名或映射成相应的物理寄存器,从而可以发布和执行更多相关的指令,同时避免例如故障数据相关性的问题。物理寄存器的数目通常大于架构寄存器的数目。例如,在给定的处理器中,物理寄存器可能是架构寄存器的两倍。架构寄存器映射表(ARMT)和物理寄存器映射表(PRMT)用于记录架构寄存器和物理寄存器之间的映射关系。具体地,ARMT针对每个架构寄存器记录架构寄存器被重命名或映射成的物理寄存器的物理寄存器标识符。PRMT为物理寄存器集合中的每个物理寄存器记录状况、操作状态和映射关系。
影子寄存器是处理器中的物理寄存器,其通常在调试、异常和中断期间使用。它们在发生例如异常或中断之类的改变常规的指令执行流的状态时提供临时数据存储。传统地,影子寄存器通过使用两个寄存器集合或寄存器文件而实现在处理器中,其中处理器在常规状态期间使用两个寄存器集合中的第一寄存器集合,并且在例如异常或中断的非常规状态期间使用两个寄存器集合中的第二寄存器集合,例如影子寄存器。更具体地,当在非常规状态时,存储在第一寄存器集合中的数据被复制到第二寄存器集合或影子寄存器,以便处理器使用第二寄存器集合来执行指令。当处理器返回到常规状态时,存储在第二寄存器集合中的数据被复制回第一寄存器集合以便处理器对其进行操作。例如,当处理器处于常规状态时,第一寄存器集合可用于重命名多个架构寄存器。当处理器由于异常或中断而进入到非常规状态时,处理器切换到使用第二寄存器集合来重命名那些架构寄存器。当处理器再次返回到常规状态时,其切换到使用第一寄存器集合来重命名架构寄存器。
然而,在影子寄存器的常规实现中,在两个寄存器集合之间来回切换是既耗时又耗能的。特别地,当数据从一个寄存器集合复制到另一寄存器集合时,会花费时间。此外,从源寄存器读取数据、传送数据并且将数据写入目的寄存器的操作都消耗功率。而且,尽管在任意给定的时间仅一个寄存器集合被使用,但需要两个寄存器集合来实现影子寄存。因此,影子寄存器的常规实现导致硬件的低效使用,因为在任意给定的时间,两个寄存器集合中的一个寄存器集合并不被使用。
发明内容
在一个方面中,处理器中的寄存器系统包括一个存储数据的物理寄存器集合以及连接到该物理寄存器集合的寄存器重命名逻辑。每个物理寄存器由相应的物理寄存器标识符标识并且具有多种操作状态中的一种操作状态。当处理器处于第一处理器状态时,寄存器重命名逻辑将数据存储在该物理寄存器集合中并且从该物理寄存器集合获取数据。响应于处理器从第一处理器状态进入到第二处理器状态的指示,寄存器重命名逻辑将该物理寄存器集合中的具有第一操作状态的物理寄存器标识为第一组寄存器,并且将该物理寄存器集合中的剩余物理寄存器标识为第二组寄存器。当处理器处于第二处理器状态时,寄存器重命名逻辑将数据存储到第二组寄存器而非第一组寄存器中,并且从第二组寄存器而非第一组寄存器获取数据。
在一个方面中,处理器包括:一个存储数据的物理寄存器集合;具有多个ARMT条目的架构映射表(ARMT),每个ARMT条目对应于相应的架构寄存器;物理寄存器映射表(PRMT)具有多个PRMT条目,每个PRMT条目对应于相应的一个物理寄存器,以及寄存器重命名逻辑,被连接用以设置ARMT条目和PRMT条目并且将数据存储在物理寄存器中。每个物理寄存器由相应的物理寄存器标识符来标识,并且具有多种操作状态中的一种操作状态。每个ARMT条目记录相应的架构寄存器被重命名成的相应的一个物理寄存器的物理寄存器标识符。每个PRMT条目具有状态字段以及AR字段,其中状态字段指示多种操作状态中的相应物理寄存器所处于的一种操作状态,AR字段指示被重命名成相应的物理寄存器的相应架构寄存器。在处理器从第一处理器状态进入到第二处理器状态之前,寄存器重命名逻辑将处于第一操作状态中的第一组物理寄存器与处于除第一操作状态外的多种操作状态之一的第二组物理寄存器进行区分。在处理器处于第二处理器状态时,寄存器重命名逻辑将第二组物理寄存器用于架构寄存器重命名,同时保持存储在第一组物理寄存器中的数据和相应的PRMT条目不变。
在一个方面中,基于处理器的系统包括输入设备、输出设备、数据存储设备以及连接到输入设备、输出设备和数据存储设备的处理器。处理器包括一个存储数据的物理寄存器集合和连接到该物理寄存器集合的寄存器重命名逻辑。每个物理寄存器由相应的物理寄存器标识符来标识并且具有多种操作状态中的一种操作状态。当处理器处于第一处理器状态时,寄存器重命名逻辑将数据存储在该物理寄存器集合中并且从该物理寄存器集合获取数据。响应于处理器从第一处理器状态进入到第二处理器状态的指示,寄存器重命名逻辑将该物理寄存器集合中的具有第一操作状态的物理寄存器标识为第一组寄存器,并且将该物理寄存器集合中的其他物理寄存器标识为第二组寄存器。当处理器处于第二处理器状态时,寄存器重命名逻辑将数据存储在第二组寄存器中并且从第二组寄存器获取数据,同时保持存储在第一组寄存器中的数据和相应的PRMT条目不变。
在一个方面中,一种方法在处理器中使用一个物理寄存器集合来进行寄存器重命名,其中每个物理寄存器均用于存储数据。当处理器处于第一处理器状态时,所述方法改变存储在来自该物理寄存器集合的第一物理寄存器中的数据以将第一架构寄存器重命名成第一物理寄存器。该方法检测处理器从第一处理器状态进入到第二处理器状态。响应于检测到处理器从第一处理器状态进入到第二处理器状态,确定该物理寄存器集合中的每个物理寄存器的相应操作状态。响应于检测到处理器从第一处理器状态进入到第二处理器状态,该物理寄存器集合中的具有第一操作状态的那些物理寄存器被标识为第一组寄存器,而该物理寄存器集合中的具有除第一操作状态外的操作状态的那些物理寄存器被标识为第二组寄存器。当处理器处于第二处理器状态时,所述方法改变存储在来自该物理寄存器集合的第二物理寄存器中的数据,以将第二架构寄存器重命名成第二组物理寄存器中的第二物理寄存器。当处理器处于第二处理器状态时,该方法保持存储在第一组物理寄存器中的数据。
在另一方面中,一种方法在处理器中使用一个物理寄存器集合来进行寄存器重命名。当处理器处于第一处理器状态时,该方法从该物理寄存器集合选择第一物理寄存器以将第一架构寄存器重命名成第一物理寄存器。该方法在与第一物理寄存器关联的物理寄存器映射表(PRMT)条目的第一字段中记录第一架构寄存器的标识符。该方法更新与第一物理寄存器关联的PRMT条目的第二字段以指示多种操作状态中的第一物理寄存器所处于的一种操作状态。该方法检测处理器进入到第二处理器状态,并且响应于检测到处理器进入到第二处理器状态,更新与具有第一操作状态的每个所述物理寄存器关联的PRMT条目的第三字段,以标记相应的物理寄存器。当处理器处于第二处理器状态时,该方法进一步从该物理寄存器集合中选择除被标记的物理寄存器外的第二物理寄存器,以将第二架构寄存器重命名成第二物理寄存器。
附图说明
图1是处理器中的影子寄存器的常规实现的简化框图;
图2A是根据一个非限制性实施方式的处理器中的寄存器系统的简化框图;
图2B是根据一个非限制性实施方式的图2A的寄存器系统的映射表的示图;
图3是根据一个非限制性实施方式的影子寄存器的实现的简化示图;
图4是根据一个非限制性实施方式的处理器的简化框图;
图5是根据一个非限制性实施方式的基于处理器的系统的简化框图;
图6是根据一个非限制性实施方式的在处理器中使用一个物理寄存器集合以便进行寄存器重命名的处理的流程图;
图7是根据另一个非限制性实施方式的在处理器中使用一个物理寄存器集合以便进行寄存器重命名的处理的流程图。
在附图中,相同的附图标记标识类似的单元或动作。附图中单元的尺寸和相对位置不必按比例绘制。此外,所绘制的单元的具体形状不旨在传达关于具体单元的实际形状的任何信息,并且仅选择用于在附图中易于识别。
具体实施方式
在下面的描述中,阐述某些特定的细节以便提供对各种公开实施方式的准确理解。然而,相关领域的技术人员将认识到可以在没有这些具体细节中的一个或多个的情况下,或利用其他的方法、部件、材料等来实践这些实施方式。在其他情况下,与寄存器重命名系统、处理器和基于处理器的系统关联的公知结构并没有被详细示出或描述,以避免不必要地混淆这些实施方式的描述。
图1示出处理器中的影子寄存器的常规实现10。
常规实现10使用第一寄存器系统,该第一寄存器系统包括第一物理寄存器集合12、相应的物理寄存器映射表(PRMT)14以及架构寄存器映射表(ARMT)16。第一物理寄存器集合12中的每个物理寄存器可以存储数据,例如操作数或指令。每个物理寄存器由相应的物理寄存器标识符来标识。例如,第一物理寄存器集合12的16个物理寄存器均分配有相应的号码,从而这些物理寄存器被标识为物理寄存器0、物理寄存器1等等。同样地,通过相应的架构寄存器标识符来标识每个架构寄存器(未示出)。ARMT 16的每个条目对应于相应的架构寄存器,并且记录各个架构寄存器最近被重命名成的物理寄存器的物理寄存器标识符。
PRMT 14的每个条目对应于第一集合12的物理寄存器中的相应的一个,并且具有有效性字段、架构寄存器(AR)字段以及状态字段。PRMT 14的每个条目记录有效性值、重命名成第一集合12中的相应物理寄存器的架构寄存器的架构寄存器标识符,以及在多种操作状态中的相应物理寄存器所处于的操作状态。有效性字段记录有效性值,该值指示相应的物理寄存器是否是由所记录的架构寄存器标识符所标识的架构寄存器最近被重命名成的物理寄存器。例如,PRMT条目的有效性字段中的二进制值1指示相应的物理寄存器是由所记录的架构寄存器标识符所标识的架构寄存器最近被重命名成的物理寄存器,而二进制值0则做出相反的指示。AR字段记录被重命名成对应于该特定PRMT条目的第一集合12的物理寄存器的架构寄存器的架构寄存器标识符。状态字段指示相应的物理寄存器的操作状态,其基于相应的物理寄存器当前处于哪个流水线级。因此,操作状态包括空(ET)、重命名(RD)、写回(WT)和提交(CM)。
常规实现10也使用第二寄存器系统,其包括第二物理寄存器集合112、相应的PRMT 114和ARMT 116,以分别复制第一物理寄存器集合12、PRMT 14和ARMT 16。即,第二物理寄存器集合112是针对第一物理寄存器集合12的影子寄存器集合。第二物理寄存器集合112、PRMT 114和ARMT 116的每个的结构和功能均类似于它的对等方的结构和功能,并且由于简洁起见而没有再次进行描述。
当处理器处于常规操作状态时,使用第一物理寄存器集合12的物理寄存器来执行针对架构寄存器的寄存器重命名。因此,在常规状态中不使用第二集合112的物理寄存器、以及关联的PRMT 114和ARMT 116。然而,在异常或中断期间,处理器进入非常规操作状态并且切换到使用第二物理寄存器集合112的物理寄存器来重命名架构寄存器。更具体地,当检测到发生异常或中断时,指示相应的物理寄存器不处于提交状态(CM)的PRMT 14的每个条目的有效性字段被设置为0,并且那些条目中的每个条目的状态字段被设置以指示空状态(ET)。当处理器处于非常规状态时,第一物理寄存器集合12和ARMT 16被保持不变。第二寄存器系统被初始化,并且架构寄存器被重命名成第二集合112中的相应物理寄存器(例如,如果架构寄存器被重命名成第一集合12中的寄存器5,则现有被重命名成第二集合112中的寄存器5)。对应于映射到架构寄存器的第二集合112中的物理寄存器的ARMT 116的所有条目和PRMT 114的所有条目将以记录在ARMT 16和PRMT 14的相应条目中的数据进行填充。PRTM 114中对应于第二集合112的未用物理寄存器的每个条目的状态字段被设置成指示空状态(ET)。接着,处理器切换到使用第二寄存器系统以便在非常规状态中进行寄存器重命名。
在非常规状态中,使用第二物理寄存器集合112、PRMT 114和ARMT 116来执行寄存器重命名。当在非常规状态中执行的指令需要寄存器重命名时,ARMT 116的所有条目需要被重新填写。当处理器返回到常规状态时,其切换到使用第一寄存器系统来进行寄存器重命名,并且第二寄存器系统将不被使用直到处理器下次进入到非常规状态。
正如可以看出的那样,尽管在任意给定的时间仅使用一个集合,但影子寄存器的常规实现10需要两个硬件集合来实现两个物理寄存器集合和映射表。尽管第一寄存器系统和第二寄存器系统之间的切换可以通过使用多路复用器在二者间进行选择,或通过将数据从第一寄存器系统复制到第二寄存器系统来实现,但任意一种方式都不可避免地要消耗时间和功率。
图2A示出根据一个实施方式的处理器中的寄存器系统20的简化框图。
在一个实施方式中,寄存器系统20可以包括物理寄存器集合22以及寄存器重命名逻辑25。尽管在图2A中示出的物理寄存器集合22包括十六个物理寄存器,即物理寄存器0到物理寄存器15,在其他实施方式中,其可以包括不同数目的物理寄存器。集合22中的每个物理寄存器可以处于多种操作状态中的一种,这些操作状态例如包括空(ET)、重命名(RD)、写回(WT)和提交(CM)。
寄存器重命名逻辑25连接到物理寄存器集合22。在一个实施方式中,当处理器处于常规状态时,在将多个架构寄存器重命名成物理寄存器集合22中的多个物理寄存器时,寄存器重命名逻辑25将数据存储到物理寄存器集合22中的任意或所有物理寄存器中,并且从其获取数据。当检测到非常规状态开始时,寄存器重命名逻辑25将集合22中的那些处于提交状态(CM)的物理寄存器标识为第一组物理寄存器,并且将集合22中的不处于提交状态的其他物理寄存器标识为第二组物理寄存器。换言之,在检测到非常规状态开始时处于提交状态的那些物理寄存器属于第一组,在检测到非常规状态开始时处于任意其他操作状态的那些物理寄存器属于第二组。当处理器处于非常规状态时,在重命名多个架构寄存器时,寄存器重命名逻辑25仅将数据存储在第二组而非第一组的物理寄存器中并且仅从其获取数据。
因此,当处于常规状态时,整个物理寄存器集合22可以供寄存器重命名逻辑25用于重命名架构寄存器。然而,当处于非常规状态时,寄存器重命名逻辑25使用物理寄存器的子集来重命名架构寄存器,即在检测到非常规状态开始时集合22中的那些不处于提交状态的物理寄存器。当处理器处于非常规状态时,存储在第一组中的物理寄存器(即,在检测到非常规状态开始时那些处于提交状态的物理寄存器)中的数据被保持不变。通过当处理器返回到常规状态时恢复使用第一组中的那些物理寄存器以及存储在其中的数据来进行寄存器重命名,这允许处理器继续常规的指令执行流。在一个实施方式中,在这种影子寄存器的创造性实现中仅使用一个物理寄存器集合(物理寄存器集合22)。特别地,鉴于事实上通常物理寄存器比架构寄存器多两倍或更多倍并且当处理器处于非常规状态时通常使用较少的物理寄存器,寄存器重命名逻辑25在常规状态中使用集合22中的一些物理寄存器,并且在非常规状态中使用集合22中的其他一些物理寄存器以便进行寄存器重命名。因此,仅一个物理寄存器集合可以用于常规状态和非常规状态二者中,当处理器在状态之间改变时,寄存器系统20的实施方式不需要在两个物理寄存器集合之间来回切换。
图2B示出根据一个实施方式的寄存器系统20的映射表、PRMT24和ARMT 26。
在一个实施方式中,PRMT 24的每个条目具有有效性字段、锁定字段、AR字段和状态字段。有效性字段、AR字段和状态字段类似于PRMT 14中的那些并且由于简洁起见而不再次进行描述。与ARMT 16的条目类似,ARMT 26的每个条目记录相应的物理寄存器的标识符,例如物理寄存器号,相应的架构寄存器将重命名成该物理寄存器号。
图3示出根据一个实施方式的使用图2A和图2B的寄存器系统20的影子寄存器的实现30。
图3示出当物理寄存器集合22、PRMT 24和ARMT 26处于常规状态时和当处于非常规状态时它们的快照。下面将参考图2A、图2B和图3来提供对寄存器系统20的进一步描述。
由寄存器重命名逻辑25来设置PRMT 24的给定条目的锁定字段,以便标记相应的物理寄存器,从而将相应的物理寄存器与集合22中的一个或多个其他物理寄存器区分开。在一个实施方式中,寄存器重命名逻辑25将PRMT 24的每个条目的锁定字段设置成二进制值0,以便当处理器处于常规状态时解锁集合22中的所有物理寄存器。当寄存器重命名逻辑25从集合22选择物理寄存器以便将架构寄存器重命名成这些物理寄存器时,其仅选择那些处于非锁定状态的物理寄存器。因此具有通过相应的锁定字段指示的非锁定状态的那些物理寄存器可以用于选择。换言之,当处理器处于常规状态时,集合22中的所有物理寄存器可用于寄存器重命名。
当检测到非常规状态开始时,寄存器重命名逻辑25标识集合22中处于提交状态的那些物理寄存器,并且将这些标识的物理寄存器的每个的锁定字段设置成二进制值1以“锁定”这些物理寄存器。因此,当检测到非常规状态开始时,处于提交状态设置的那些物理寄存器被设置成锁定状态,而集合22中处于除提交状态以外的操作状态之一的剩余物理寄存器保持在非锁定状态。在非常规状态期间,仅处于非锁定状态的那些物理寄存器可供寄存器重命名逻辑25选择用于进行寄存器重命名。存储在那些物理寄存器中的数据被锁定,并且对应于那些锁定的物理寄存器的PRMT 24的条目在非常规状态期间保持不变。当检测到常规状态开始时,对于每个锁定的物理寄存器,寄存器重命名逻辑25将锁定字段重新设置为二进制值0,因为当处于常规状态时,集合22中的所有物理寄存器可用于寄存器重命名。
在一个实施方式中,除了当处理器在常规和非常规状态之间改变时更新锁定字段,响应于处理器从一个状态改变到另一个状态,寄存器重命名逻辑25还更新PRMT 24条目和ARMT 26条目的有效性字段和状态字段。在一个实施方式中,当检测到非常规状态开始时,对于不处于提交状态的每个物理寄存器(即,非锁定物理寄存器),寄存器重命名逻辑25将相应的有效性字段重新设置成值0。对于每个非锁定物理寄存器,寄存器重命名逻辑25还将相应的状态字段设置成指示空状态(ET)。寄存器重命名逻辑25附加地将ARMT26的条目设置成空(NULL)值,或可替换地,将ARMT 26的条目设置成集合22中的可用物理寄存器范围以外的物理寄存器标识符,以初始化这些条目。当在非常规状态中执行的指令需要架构寄存器的重命名时,将以集合22中的那些非锁定物理寄存器的适当物理寄存器标识符来重新填写ARMT 26的条目。当检测到处理器返回到常规状态时,针对每个非锁定物理寄存器,寄存器重命名逻辑25将相应的有效性字段重新设置成值0,并且设置相应的状态字段以指示空状态。这些动作连同将针对每个锁定的物理寄存器的锁定字段重新设置成值0,将恢复PRMT 24以便在常规状态中操作。
在一个实施方式中,为了准备返回到常规状态,寄存器重命名逻辑25通过使用记录在与那些锁定的物理寄存器关联的PRMT 24的条目中的互相关或重命名关系来恢复ARMT 26。具体地,寄存器重命名逻辑25可以通过在ARMT 26的给定条目中记录PRMT 24的条目的物理寄存器标识符来重新填充ARMT 26的给定条目,该PRMT 24的条目在其AR字段中记录架构寄存器标识符。寄存器重命名逻辑25可以持续地这样做,直到ARMT 26的所有条目被恢复到在处理器进入到非常规状态之前的内容。
图4示出根据一个实施方式的处理器40的简化框图;
在一个实施方式中,处理器40可以包括物理寄存器集合42、PRMT 44、ARMT 46,以及连接到物理寄存器集合42、PRMT 44、ARMT 46的寄存器重命名逻辑45。物理寄存器集合42可以类似于物理寄存器集合22。更具体地,集合42的每个物理寄存器通过相应的物理寄存器标识符来标识,并且具有多种操作状态中的一种操作状态,所述多种操作状态包括空、重命名、写回和提交。ARMT 46可以类似于ARMT 26,其中ARMT 46的每个条目记录相应的架构寄存器被重命名成的物理寄存器集合42中的对应物理寄存器的物理寄存器标识符。
在一个实施方式中,PRMT 44具有多个条目,每个条目对应于物理寄存器集合42中的相应一个物理寄存器。PRMT 44的每个条目具有指示相应的物理寄存器所处于的操作状态之一的状态字段,以及指示被重命名成对应物理寄存器的相应架构寄存器的AR字段。在一个实施方式中,PRMT 44的每个条目可以附加地具有有效性字段和锁定字段。有效性字段可以被设置成第一有效性值,例如,二进制值1,从而指示相应的物理寄存器是在AR字段中指示的架构寄存器最近被重命名成的物理寄存器。可替换地,有效性字段可以被设置成第二有效性值,例如二进制值0,从而指示相应的物理寄存器不是在AR字段中指示的架构寄存器最近被重命名成的物理寄存器。锁定字段可以被设置成指示相应的物理寄存器是否被标识为第一组物理寄存器中的物理寄存器之一。在一个实施方式中,第一组中的物理寄存器具有锁定状态,集合42中的剩余物理寄存器具有非锁定状态。
寄存器重命名逻辑45设置和更新PRMT 44和ARMT 46的条目。其还将数据存储在物理寄存器集合42中并从其获取数据。在一个实施方式中,在处理器从第一处理器状态(其一个例子是常规状态)进入到第二处理器状态(其一个例子是非常规状态)之前,寄存器重命名逻辑45区分处于第一操作状态(例如提交状态)的第一组物理寄存器与处于除第一操作状态以外的操作状态之一的第二组物理寄存器。当处理器处于第二处理器状态时,寄存器重命名逻辑45仅使用第二组物理寄存器来进行架构寄存器重命名,同时将存储在第一组物理寄存器中的数据以及PRMT 44中的相应条目保持不变。
在一个实施方式中,当寄存器重命名逻辑45接收到处理器正在从第一处理器状态进入到第二处理器状态的指示时,其针对第二组物理寄存器的每个物理寄存器,将有效性字段设置成第二有效性值。响应于接收到关于处理器正在从第一处理器状态进入第二处理器状态的指示,寄存器重命名逻辑45还设置第二组中的每个物理寄存器的PRMT 44的相应条目的状态字段,以指示空状态。
在一个实施方式中,寄存器重命名逻辑45将PRMT 44的每个条目的锁定字段设置成第一锁定值,例如二进制值0,以便当处理器处于第一处理器状态时解锁相应的PRMT条目和相应的物理寄存器。寄存器重命名逻辑45还将第一组中的每个物理寄存器的PRMT 44的相应条目的锁定字段设置成第二锁定值,例如二进制值1,以便响应于接收到关于处理器正在从第一处理器状态进入到第二处理器状态的指示,锁定相应的PRMT条目。当处理器处于第二处理器状态时,寄存器重命名逻辑45仅将数据存储到相应的PRMT条目指示对应的物理寄存器的非锁定状态的那些物理寄存器中,并且从其获取数据。
在一个实施方式中,响应于接收到关于处理器正在从第二处理器状态进入第一处理器状态的指示,在处理器从第二处理器状态进入第一处理器状态之前,寄存器重命名逻辑45设置针对第二组中的每个物理寄存器的PRMT 44的相应条目的状态字段以指示空状态。在处理器从第二处理器状态进入第一处理器状态之前,寄存器重命名逻辑45将针对第二组中的每个物理寄存器的PRMT 44的相应条目的有效性字段设置成第二有效性值。响应于接收到关于处理器正在从第二处理器状态进入第一处理器状态的指示,在处理器从第二处理器状态进入到第一处理器状态之前,寄存器重命名逻辑45将第二组物理寄存器中的每个物理寄存器的相应PRMT条目的锁定字段设置成第一锁定值,以解锁相应的PRMT条目。
在一个实施方式中,响应于接收到关于处理器正在从第一处理器状态进入第二处理器状态,寄存器重命名逻辑45在处理器从第一处理器状态进入第二处理器状态之前重新设置ARMT 46的每个条目。例如,寄存器重命名逻辑45将ARMT 46的条目设置成空值或可替换地,将ARMT 46的条目设置成集合42中的可用物理寄存器范围以外的物理寄存器标识符以初始化这些条目。响应于接收到关于处理器正在从第二处理器状态进入第一处理器状态的指示,在处理器返回到第一处理器状态之前,寄存器重命名逻辑45基于对应于第一组物理寄存器中的物理寄存器的PRMT 44的每个条目的AR字段,恢复记录在ARMT 46的每个条目中的相应物理寄存器标识符。
图5示出根据一个实施方式的包括影子寄存器实现的基于处理器的系统50的简化框图。
在一个实施方式中,基于处理器的系统50包括输入设备54、输出设备56、数据存储设备58和连接到输入设备54、输出设备56和数据存储设备58的处理器52。在一个实施方式中,处理器52可以包括图2A和图2B的寄存器系统20。具体地,处理器52可以包括物理寄存器集合22、PRMT 24、ARMT 26以及连接到物理寄存器集合22、PRMT 24、ARMT 26的寄存器重命名逻辑25。已经在上文描述了寄存器系统20的结构和操作。输入设备54、输出设备56和数据存储设备58在现有技术中也是已知的,并且为了简明起见,将不提供对这些部件的结构和操作的解释。
图6示出根据一个非限制性实施方式的在处理器中使用一个物理寄存器集合以进行寄存器重命名的处理60。
在61,当处理器处于第一处理器状态时,处理60改变存储在来自该物理寄存器集合的第一物理寄存器中的数据,以将第一架构寄存器重命名成第一物理寄存器。在62,处理60检测到处理器从第一处理器状态进入到第二处理器状态。在63,响应于检测到处理器从第一处理器状态进入到第二处理器状态,处理60确定该物理寄存器集合中的每个物理寄存器的相应的操作状态。在64,响应于检测到处理器从第一处理器状态进入到第二处理器状态,处理60将该物理寄存器集合中的具有第一操作状态的那些物理寄存器标识为第一组物理寄存器,并且将该物理寄存器集合中具有除第一操作状态以外的操作状态的那些物理寄存器标识为第二组物理寄存器。在65,当处理器处于第二处理器状态时,处理60改变存储在来自第二组物理寄存器的第二物理寄存器中的数据,以将第二架构寄存器重命名成第二组物理寄存器中的第二物理寄存器。在66,当处理器处于第二处理器状态时,处理60保持存储在第一组物理寄存器中的数据。
在一个实施方式中,响应于检测到处理器从第一处理器状态进入到第二处理器状态,处理60将第二组物理寄存器中的每个物理寄存器的相应的操作状态设置成第二操作状态。处理60可以进一步检测处理器从第二处理器状态返回到第一处理器状态,并且响应于检测到处理器从第二处理器状态返回到第一处理器状态,将第二组物理寄存器中的每个物理寄存器的相应的操作状态设置成第二操作状态。
在另一个实施方式中,在改变存储在来自该物理寄存器集合的第一物理寄存器中的数据以便将第一架构寄存器重命名成第一物理寄存器时,处理60执行多个任务。例如,处理60可以从该物理寄存器集合选择第一物理寄存器以将第一架构寄存器重命名成第一物理寄存器。第一物理寄存器的标识符被记录在与第一架构寄存器关联的ARMT条目中,并且第一架构寄存器的标识符被记录在与第一物理寄存器关联的PRMT条目中。处理60还可以将与第一架构寄存器关联的数据存储在第一物理寄存器中,并且更新与第一物理寄存器关联的PRMT条目的状态字段,以指示在多种操作状态中的第一物理寄存器所处于的操作状态。
在另一个实施方式中,当处理器处于第一处理器状态时,处理60可以设置与该物理寄存器集合中的每个物理寄存器关联的PRMT条目的锁定字段,以指示非锁定状态。在另一个实施方式中,响应于检测到处理器从第一处理器状态进入到第二处理器状态,处理60可以更新与被标识为具有第一操作状态的每个物理寄存器关联的PRMT条目的锁定字段,以指示锁定状态。在另一实施方式中,当处理器处于第二处理器状态时,在改变存储在来自第二组物理寄存器的第二物理寄存器的数据以便将第二架构寄存器重命名成第二组物理寄存器中的第二物理寄存器时,处理60执行多个任务。例如,处理60可以从第二组物理寄存器中选择第二物理寄存器以便将第二架构寄存器重命名成第二物理寄存器,在与第二架构寄存器关联的ARMT条目中记录第二物理寄存器的标识符,并且在与第二物理寄存器关联的PRMT条目中记录第二架构寄存器的标识符。处理60可以进一步将与第二架构寄存器关联的数据存储在第二物理寄存器中,并且更新与第二物理寄存器关联的PRMT条目的状态字段,以指示在多种操作状态中的第二物理寄存器所处于的操作状态。
图7示出根据另一非限制性实施方式的在处理器中使用一个物理寄存器集合以进行寄存器重命名的处理70。
在71,当处理器处于第一处理器状态时,处理70从该物理寄存器集合选择第一物理寄存器以将第一架构寄存器重命名成第一物理寄存器。在72,在与第一物理寄存器关联的PRMT条目的第一字段中记录第一架构寄存器的标识符。在73,与第一物理寄存器关联的PRMT条目的第二字段被更新以指示在多种操作状态中的第一物理寄存器所处于的操作状态。在74,处理70检测到处理器进入到第二处理器状态。在75,响应于检测到处理器进入第二处理器状态,与具有第一操作状态的每个物理寄存器关联的PRMT条目的第三字段被更新以标记相应的物理寄存器。在76,当处理器处于第二处理器状态时,选择来自该物理寄存器集合的、除被标记的物理寄存器以外的第二物理寄存器,以将第二架构寄存器重命名成第二物理寄存器。
在一个实施方式中,当处理器进入到第一处理器状态时,处理70可以将与每个物理寄存器关联的PRMT条目的第三字段设置成第一值,并且响应于检测到处理器进入到第二处理器状态,将与具有第一操作状态的每个物理寄存器关联的PRMT条目的第三字段更新成不同于第一值的第二值,以标记相应的物理寄存器。处理70还可以检测处理器从第二处理器状态返回到第一处理器状态,并且响应于检测到处理器从第二处理器状态返回到第一处理器状态,将与每个被标记的物理寄存器关联的PRMT条目的第三字段设置成第一值。此外,在处理器从第二处理器状态返回到第一处理器状态之后,处理70可以进一步从该物理寄存器集合选择第三物理寄存器,以将第三架构寄存器重命名成第三物理寄存器,并且在与第三物理寄存器关联的PRMT条目的第一字段中记录第三架构寄存器的标识符。
在另一个实施方式中,处理70可以在与第一架构寄存器关联的ARMT条目中记录第一物理寄存器的标识符,以将第一架构寄存器重命名成第一物理寄存器,并且响应于检测到处理器进入到第二处理器状态,重新设置与第一架构寄存器关联的ARMT条目。处理70还可以检测处理器从第二处理器状态返回到第一处理器状态,并且响应于此,在处理器进入到第二处理器状态之前,通过在与第一架构寄存器关联的ARMT条目中记录第一架构寄存器被重命名成的物理寄存器的标识符,恢复与第一架构寄存器关联的ARMT条目。
在另一个实施方式中,响应于检测到处理器将进入到第二处理器状态,处理70可以更新与在第三字段中具有第一值的每个物理寄存器关联的PRMT条目的第二字段。处理70可以检测处理器从第二处理器状态返回到第一处理器状态。响应于检测到处理器从第二处理器状态返回到第一处理器状态,处理70可以更新与在第三字段中具有第一值的每个物理寄存器关联的PRMT条目的第二字段,以指示第二操作状态。
因此,已经公开了在处理器(例如超标量微处理器)中实现影子寄存器的本发明方案的实施方式。根据这里公开的各种实施方式的实现方案提供优于影子寄存器的常规实现(例如在图1中示出的实现10)的多种优点。例如,在常规状态和非常规状态期间,仅一个物理寄存器集合被用于寄存器重命名,其中该集合中的一些物理寄存器被用作影子寄存器。这样不再需要复制的物理寄存器集合用作影子寄存器以及复制的相应PRMT和ARMT集合。由于在两个寄存器集合间的切换并没有浪费时间,所以可以改进处理器性能。功耗相应地也被减小。
上述对所示出的实施方式的描述(包括在摘要中所描述的内容)并不旨在穷举或将这些实施方式限于这里公开的精确形式。尽管为了说明性的目的在这里描述了特定的实施方式和例子,但正如相关技术领域的技术人员所认识到的那样,在不脱离本公开的精神和范围下可以做出各种等同修改。此处各种实施方式所提供的教导可以被应用于其他的环境,而不必是上面一般性描述的寄存器重命名的示例性环境。本领域技术人员将理解到,尽管上面描述和在附图中示出的实施方式一般是针对于寄存器重命名的环境,但涉及使用处理器中的物理寄存器的应用也可以从这里所描述的概念获益。
根据上面的详细描述,可对实施方式做出各种修改。一般而言,在下面的权利要求书中,使用的术语不应该被解释为将权利要求限定于说明书和权利要求书中所公开的特定实施方式,而是应该被理解为包括此类权利要求所享有的所有等同范围内的所有可能实施方式。因此,权利要求不受本公开的限制。
Claims (35)
1.一种处理器中的寄存器系统,包括:
一个存储数据的物理寄存器集合,每个物理寄存器由相应的物理寄存器标识符标识并且具有多种操作状态中的一种操作状态;以及
连接到所述物理寄存器集合的寄存器重命名逻辑单元,所述寄存器重命名逻辑单元可操作用于:当所述处理器处于第一处理器状态时,将数据存储在所述物理寄存器集合中并且从所述物理寄存器集合获取数据;响应于所述处理器从所述第一处理器状态进入到第二处理器状态的指示,将所述物理寄存器集合中的具有第一操作状态的物理寄存器标识为第一组寄存器,并且将所述物理寄存器集合中的剩余物理寄存器标识为第二组寄存器;以及当所述处理器处于所述第二处理器状态时,将数据存储到所述第二组寄存器而非所述第一组寄存器中,并且从所述第二组寄存器而非所述第一组寄存器获取数据。
2.根据权利要求1所述的寄存器系统,进一步包括:
具有多个架构映射表ARMT条目的架构映射表,每个ARMT条目对应于相应的架构寄存器,每个ARMT条目记录相应的架构寄存器被重命名成的相应的一个物理寄存器的物理寄存器标识符;以及
具有多个物理寄存器映射表PRMT条目的物理寄存器映射表,每个PRMT条目对应于相应的一个物理寄存器,每个PRMT条目具有状态字段以及AR字段,其中所述状态字段指示多种操作状态中的相应物理寄存器所处于的一种操作状态,所述AR字段指示被重命名成相应的物理寄存器的相应架构寄存器。
3.根据权利要求2所述的寄存器系统,其中每个PRMT条目进一步包括:
有效性字段,其具有第一有效性值或第二有效性值,其中所述第一有效性值指示相应的物理寄存器是在所述AR字段中指示的架构寄存器最近被重命名成的物理寄存器,所述第二有效性值指示相应的物理寄存器不是在所述AR字段中指示的架构寄存器最近被重命名成的物理寄存器;以及
锁定字段,指示相应的物理寄存器是否被标识为所述第一组寄存器中的物理寄存器之一。
4.根据权利要求3所述的寄存器系统,其中响应于接收到处理器正在从第一处理器状态进入到第二处理器状态的指示,所述寄存器重命名逻辑单元将第二组寄存器中的每个物理寄存器的PRMT条目的有效性字段设置成第二有效性值。
5.根据权利要求4所述的寄存器系统,其中响应于接收到处理器正在从第一处理器状态进入到第二处理器状态的指示,所述寄存器重命名逻辑单元将第二组寄存器中的每个物理寄存器的相应PRMT条目的状态字段设置成指示空状态。
6.根据权利要求3所述的寄存器系统,其中所述寄存器重命名逻辑单元将每个PRMT条目的锁定字段设置成第一锁定值,以便当处理器处于第一处理器状态时解锁相应的PRMT条目,其中响应于接收到关于处理器正在从第一处理器状态进入到第二处理器状态的指示,所述寄存器重命名逻辑单元将第一组寄存器中的每个物理寄存器的相应PRMT条目的锁定字段设置成第二锁定值,以锁定相应的PRMT条目,并且当处理器处于第二处理器状态时,所述寄存器重命名逻辑单元仅将数据存储到相应的PRMT条目是非锁定的那些物理寄存器中,并且从其获取数据。
7.根据权利要求5所述的寄存器系统,其中响应于接收到关于处理器正在从第二处理器状态进入第一处理器状态的指示,在处理器从第二处理器状态进入第一处理器状态之前,所述寄存器重命名逻辑单元将第二组寄存器中的每个物理寄存器的相应PRMT条目的状态字段设置成指示空状态,并且将第二组寄存器中的每个物理寄存器的PRMT条目的有效性字段设置成第二有效性值。
8.根据权利要求6所述的寄存器系统,其中响应于接收到关于处理器正在从第二处理器状态进入第一处理器状态的指示,在处理器将从第二处理器状态进入到第一处理器状态之前,所述寄存器重命名逻辑单元将第二组寄存器中的每个物理寄存器的相应PRMT条目的锁定字段设置成第一锁定值,以解锁相应的PRMT条目。
9.根据权利要求2所述的寄存器系统,其中响应于接收到关于处理器正在从第一处理器状态进入第二处理器状态的指示,在处理器从第一处理器状态进入第二处理器状态之前,所述寄存器重命名逻辑单元重新设置每个ARMT条目,并且响应于接收到关于处理器正在从第二处理器状态进入第一处理器状态的指示,在处理器从第二处理器状态进入到第一处理器状态之前,所述寄存器重命名逻辑单元基于对应于第一组寄存器中的物理寄存器的PRMT条目中的每个条目的AR字段,恢复记录在每个ARMT条目中的相应的物理寄存器标识符。
10.根据权利要求1所述的寄存器系统,其中所述第一处理器状态包括常规处理器状态,并且其中所述第二处理器状态包括中断和异常之一。
11.一种处理器,包括:
一个存储数据的物理寄存器集合,每个物理寄存器由相应的物理寄存器标识符标识并且具有多种操作状态中的一种操作状态;
具有多个架构映射表ARMT条目的架构映射表,每个ARMT条目对应于相应的架构寄存器,每个ARMT条目记录对应的架构寄存器被重命名成的相应的一个物理寄存器的物理寄存器标识符;
具有多个物理寄存器映射表PRMT条目的物理寄存器映射表,每个PRMT条目对应于相应的一个物理寄存器,每个PRMT条目具有状态字段以及AR字段,其中状态字段指示多种操作状态中的相应物理寄存器所处于的一种操作状态,AR字段指示被重命名成相应的物理寄存器的相应架构寄存器,
寄存器重命名逻辑单元,其可操作用于:设置ARMT条目和PRMT条目;将数据存储在物理寄存器中;在处理器从第一处理器状态进入到第二处理器状态之前,区分处于第一操作状态中的第一组物理寄存器与处于除第一操作状态之外的操作状态之一的第二组物理寄存器;以及在处理器处于第二处理器状态时,将第二组物理寄存器用于架构寄存器重命名,同时使存储在第一组物理寄存器中的数据和相应的PRMT条目保持不变。
12.根据权利要求11所述的处理器,其中每个PRMT条目进一步包括:
有效性字段,其具有第一有效性值或第二有效性值,其中第一有效性值指示相应的物理寄存器是在AR字段中指示的架构寄存器最近被重命名成的物理寄存器,第二有效性值指示相应的物理寄存器不是在AR字段中指示的架构寄存器最近被重命名成的物理寄存器;以及
锁定字段,指示相应的物理寄存器是否被标识为第一组物理寄存器中的物理寄存器之一。
13.根据权利要求12所述的处理器,其中响应于接收到处理器正在从第一处理器状态进入到第二处理器状态的指示,所述寄存器重命名逻辑单元将第二组物理寄存器中的每个物理寄存器的PRMT条目的有效性字段设置成第二有效性值。
14.根据权利要求13所述的处理器,其中响应于接收到处理器正在从第一处理器状态进入到第二处理器状态的指示,所述寄存器重命名逻辑单元将第二组物理寄存器中的每个物理寄存器的相应PRMT条目的状态字段设置成指示空状态。
15.根据权利要求12所述的处理器,其中所述寄存器重命名逻辑单元将每个PRMT条目的锁定字段设置成第一锁定值,以便当处理器处于第一处理器状态时解锁相应的PRMT条目,其中响应于接收到关于处理器正在从第一处理器状态进入到第二处理器状态的指示,所述寄存器重命名逻辑单元将第一组物理寄存器中的每个物理寄存器的相应PRMT条目的锁定字段设置成第二锁定值,以锁定相应的PRMT条目,并且其中所述寄存器重命名逻辑单元仅将数据存储到相应的PRMT条目指示相应的物理寄存器是非锁定状态的那些物理寄存器中,并且从其获取数据。
16.根据权利要求14所述的处理器,其中响应于接收到关于处理器正在从第二处理器状态进入第一处理器状态的指示,在处理器从第二处理器状态进入第一处理器状态之前,所述寄存器重命名逻辑单元将第二组物理寄存器中的每个物理寄存器的相应PRMT条目的状态字段设置成指示空状态,并且将第二组物理寄存器中的每个物理寄存器的相应PRMT条目的有效性字段设置成第二有效性值。
17.根据权利要求15所述的处理器,其中响应于接收到关于处理器正在从第二处理器状态进入第一处理器状态的指示,在处理器从第二处理器状态进入到第一处理器状态之前,所述寄存器重命名逻辑单元将第二组物理寄存器中的每个物理寄存器的相应PRMT条目的锁定字段设置成第一锁定值,以解锁相应的PRMT条目。
18.根据权利要求11所述的处理器,其中响应于接收到关于处理器正在从第一处理器状态进入第二处理器状态的指示,在处理器从第一处理器状态进入第二处理器状态之前,所述寄存器重命名逻辑单元重新设置每个ARMT条目。
19.根据权利要求18所述的处理器,其中响应于接收到关于处理器正在从第二处理器状态进入第一处理器状态的指示,在处理器从第二处理器状态进入到第一处理器状态之前,所述寄存器重命名逻辑单元基于对应于第一组物理寄存器中的物理寄存器的PRMT条目中的每个条目的AR字段,恢复记录在每个ARMT条目中的相应的物理寄存器标识符。
20.根据权利要求11所述的处理器,其中所述第一处理器状态包括常规处理器状态,并且其中所述第二处理器状态包括中断和异常之一。
21.一种在处理器中使用一个物理寄存器集合来进行寄存器重命名的方法,所述方法包括:
当处理器处于第一处理器状态时,改变存储在来自所述物理寄存器集合的第一物理寄存器中的数据,以将第一架构寄存器重命名成第一物理寄存器;
检测处理器从第一处理器状态进入到第二处理器状态;
响应于检测到处理器从第一处理器状态进入到第二处理器状态,确定所述物理寄存器集合中的每个物理寄存器的相应操作状态;
响应于检测到处理器从第一处理器状态进入到第二处理器状态,将所述物理寄存器集合中的具有第一操作状态的那些物理寄存器标识为第一组物理寄存器,而将所述物理寄存器集合中的具有除第一操作状态之外的操作状态的那些物理寄存器标识为第二组物理寄存器;
当处理器处于第二处理器状态时,改变存储在来自第二组物理寄存器的第二物理寄存器中的数据,以将第二架构寄存器重命名成第二组物理寄存器中的第二物理寄存器;以及
当处理器处于第二处理器状态时,保持存储在第一组物理寄存器中的数据。
22.根据权利要求21所述的方法,进一步包括:
响应于检测到所述处理器从第一处理器状态进入到所述第二处理器状态,将第二组物理寄存器中的每个物理寄存器的相应操作状态设置成第二操作状态。
23.根据权利要求22所述的方法,进一步包括:
检测处理器从所述第二处理器状态返回到所述第一处理器状态;以及
响应于检测到所述处理器从第二处理器状态返回到所述第一处理器状态,将所述第二组物理寄存器中的每个物理寄存器的相应操作状态设置成第二操作状态。
24.根据权利要求21所述的方法,其中改变存储在来自所述物理寄存器集合的第一物理寄存器中的数据,以将第一架构寄存器重命名成第一物理寄存器包括:
从所述物理寄存器集合选择第一物理寄存器,以将第一架构寄存器重命名成第一物理寄存器;
在与第一架构寄存器关联的架构寄存器映射表ARMT条目中记录第一物理寄存器的标识符;
在与第一物理寄存器关联的物理寄存器映射表PRMT条目中记录第一架构寄存器的标识符;
在所述第一物理寄存器中存储与所述第一架构寄存器关联的数据;以及
更新与第一物理寄存器关联的PRMT条目的状态字段,以指示多种操作状态中的第一物理寄存器所处的一种操作状态。
25.根据权利要求24所述的方法,进一步包括:
当所述处理器处于第一处理器状态时,设置与所述物理寄存器集合中的每个物理寄存器关联的PRMT条目的锁定字段,以指示非锁定状态。
26.根据权利要求25所述的方法,其中响应于检测到处理器从第一处理器状态进入到第二处理器状态,将所述物理寄存器集合中的具有第一操作状态的那些物理寄存器标识为第一组物理寄存器,而将所述物理寄存器集合中的具有除第一操作状态之外的操作状态的那些物理寄存器标识为第二组物理寄存器包括:
响应于检测到处理器从第一处理器状态进入到第二处理器状态,更新与标识为具有第一操作状态的每个物理寄存器关联的PRMT条目的锁定字段以指示锁定状态。
27.根据权利要求26所述的方法,其中当所述处理器处于第二处理器状态时,改变存储在来自第二组物理寄存器的第二物理寄存器中的数据,以将第二架构寄存器重命名成第二组物理寄存器中的第二物理寄存器包括:
从第二组物理寄存器选择第二物理寄存器,以便将第二架构寄存器重命名成第二物理寄存器;
在与第二架构寄存器关联的ARMT条目中记录第二物理寄存器的标识符;
在与第二物理寄存器关联的PRMT条目中记录第二架构寄存器的标识符;
在第二物理寄存器中存储与第二架构寄存器关联的数据;以及
更新与第二物理寄存器关联的PRMT条目的状态字段,以指示多种操作状态中的第二物理寄存器所处的一种操作状态。
28.一种在处理器中使用一个物理寄存器集合来进行寄存器重命名的方法,所述方法包括:
当处理器处于第一处理器状态时,从所述物理寄存器集合选择第一物理寄存器,以将第一架构寄存器重命名成第一物理寄存器;
在与第一物理寄存器关联的物理寄存器映射表PRMT条目的第一字段中记录第一架构寄存器的标识符;
更新与所述第一物理寄存器关联的PRMT条目的第二字段,以指示多种操作状态中的第一物理寄存器所处的一种操作状态;
检测处理器进入到第二处理器状态;
响应于检测到处理器进入到第二处理器状态,更新与具有第一操作状态的每个物理寄存器关联的PRMT条目的第三字段,以标记相应的物理寄存器;以及
当处理器处于第二处理器状态时,从所述物理寄存器集合中选择除被标记的物理寄存器之外的第二物理寄存器,以将第二架构寄存器重命名成第二物理寄存器。
29.根据权利要求28所述的方法,其中响应于检测到处理器进入到第二处理器状态,更新与具有第一操作状态的每个物理寄存器关联的PRMT条目的第三字段,以标记相应的物理寄存器包括:
当处理器进入所述第一处理器状态时,将与每个所述物理寄存器关联的PRMT条目的第三字段设置成第一值;以及
响应于检测到处理器进入到第二处理器状态,将与具有第一操作状态的每个物理寄存器关联的PRMT条目的第三字段更新成不同于第一值的第二值,以标记相应的物理寄存器。
30.根据权利要求29所述的方法,进一步包括:
检测处理器从第二处理器状态返回到第一处理器状态;以及
响应于检测到处理器从第二处理器状态返回到第一处理器状态,将与每个被标记的物理寄存器关联的PRMT条目的第三字段重新设置成第一值。
31.根据权利要求30所述的方法,进一步包括:
在所述处理器从所述第二处理器状态返回到第一处理器状态之后,从所述物理寄存器集合选择第三物理寄存器,以将第三架构寄存器重命名成第三物理寄存器;以及
在与第三物理寄存器关联的PRMT条目的第一字段中记录第三架构寄存器的标识符。
32.根据权利要求28所述的方法,进一步包括:
在与第一架构寄存器关联的架构寄存器映射表ARMT条目中记录第一物理寄存器的标识符,以将第一架构寄存器重命名成第一物理寄存器;以及
响应于检测到处理器进入到第二处理器状态,重新设置与第一架构寄存器关联的ARMT条目。
33.根据权利要求32所述的方法,进一步包括:
检测处理器从第二处理器状态返回到第一处理器状态;以及
响应于检测到处理器从第二处理器状态返回到第一处理器状态,在处理器进入到第二处理器状态之前,通过在与第一架构寄存器关联的ARMT条目中记录第一架构寄存器被重命名成的物理寄存器的标识符,恢复与第一架构寄存器关联的ARMT条目。
34.根据权利要求29所述的方法,进一步包括:
响应于检测到处理器进入到第二处理器状态,更新与在第三字段中具有第一值的每个物理寄存器关联的PRMT条目的第二字段,以指示第二操作状态。
35.根据权利要求34所述的方法,进一步包括:
检测处理器从第二处理器状态返回到第一处理器状态;以及响应于检测到处理器从第二处理器状态返回到第一处理器状态,更新与在第三字段中具有第一值的每个物理寄存器关联的PRMT条目的第二字段,以指示第二操作状态。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910002807 CN101788901B (zh) | 2009-01-24 | 2009-01-24 | 使用影子寄存器的高效硬件实现的设备及其方法 |
US12/690,719 US9015450B2 (en) | 2009-01-24 | 2010-01-20 | Apparatus utilizing efficient hardware implementation of shadow registers and method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910002807 CN101788901B (zh) | 2009-01-24 | 2009-01-24 | 使用影子寄存器的高效硬件实现的设备及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101788901A CN101788901A (zh) | 2010-07-28 |
CN101788901B true CN101788901B (zh) | 2013-09-25 |
Family
ID=42532125
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910002807 Active CN101788901B (zh) | 2009-01-24 | 2009-01-24 | 使用影子寄存器的高效硬件实现的设备及其方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9015450B2 (zh) |
CN (1) | CN101788901B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9336004B2 (en) * | 2013-02-28 | 2016-05-10 | Advanced Micro Devices, Inc. | Checkpointing registers for transactional memory |
US10572265B2 (en) | 2017-04-18 | 2020-02-25 | International Business Machines Corporation | Selecting register restoration or register reloading |
US10552164B2 (en) | 2017-04-18 | 2020-02-04 | International Business Machines Corporation | Sharing snapshots between restoration and recovery |
US10540184B2 (en) | 2017-04-18 | 2020-01-21 | International Business Machines Corporation | Coalescing store instructions for restoration |
US10489382B2 (en) | 2017-04-18 | 2019-11-26 | International Business Machines Corporation | Register restoration invalidation based on a context switch |
US11010192B2 (en) | 2017-04-18 | 2021-05-18 | International Business Machines Corporation | Register restoration using recovery buffers |
US10740108B2 (en) | 2017-04-18 | 2020-08-11 | International Business Machines Corporation | Management of store queue based on restoration operation |
US10649785B2 (en) | 2017-04-18 | 2020-05-12 | International Business Machines Corporation | Tracking changes to memory via check and recovery |
US10963261B2 (en) | 2017-04-18 | 2021-03-30 | International Business Machines Corporation | Sharing snapshots across save requests |
US10564977B2 (en) | 2017-04-18 | 2020-02-18 | International Business Machines Corporation | Selective register allocation |
US10838733B2 (en) | 2017-04-18 | 2020-11-17 | International Business Machines Corporation | Register context restoration based on rename register recovery |
US10782979B2 (en) | 2017-04-18 | 2020-09-22 | International Business Machines Corporation | Restoring saved architected registers and suppressing verification of registers to be restored |
US10545766B2 (en) * | 2017-04-18 | 2020-01-28 | International Business Machines Corporation | Register restoration using transactional memory register snapshots |
GB2577729C (en) * | 2018-10-04 | 2021-10-27 | Advanced Risc Mach Ltd | Processor with Register Bank having Banked Versions of a Register each Associated with an Operating State of the Processor |
US11544065B2 (en) | 2019-09-27 | 2023-01-03 | Advanced Micro Devices, Inc. | Bit width reconfiguration using a shadow-latch configured register file |
US11748024B2 (en) | 2020-04-01 | 2023-09-05 | Samsung Electronics Co., Ltd. | Apparatus and method of managing registers based on register group |
US11599359B2 (en) | 2020-05-18 | 2023-03-07 | Advanced Micro Devices, Inc. | Methods and systems for utilizing a master-shadow physical register file based on verified activation |
US11334293B1 (en) * | 2021-01-28 | 2022-05-17 | EMC IP Holding Company LLC | Facilitating the implementation of cluster counters on lock value blocks in distributed file systems |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6047369A (en) * | 1994-02-28 | 2000-04-04 | Intel Corporation | Flag renaming and flag masks within register alias table |
CN1581069A (zh) * | 2003-07-31 | 2005-02-16 | 英特尔公司 | 具有多位字段的寄存器的重命名 |
CN101046740A (zh) * | 2006-03-28 | 2007-10-03 | 国际商业机器公司 | 用于按需临时寄存器重命名的方法和系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6128728A (en) * | 1997-08-01 | 2000-10-03 | Micron Technology, Inc. | Virtual shadow registers and virtual register windows |
US6868490B1 (en) * | 2000-06-21 | 2005-03-15 | Pts Corporation | Methods and apparatus for providing context switching between software tasks with reconfigurable control |
US6564331B1 (en) * | 1999-09-24 | 2003-05-13 | Intel Corporation | Low power register file |
US7487339B2 (en) * | 2001-10-12 | 2009-02-03 | Mips Technologies, Inc. | Method and apparatus for binding shadow registers to vectored interrupts |
US7539879B2 (en) * | 2002-12-04 | 2009-05-26 | Nxp B.V. | Register file gating to reduce microprocessor power dissipation |
US7984269B2 (en) * | 2007-06-12 | 2011-07-19 | Arm Limited | Data processing apparatus and method for reducing issue circuitry responsibility by using a predetermined pipeline stage to schedule a next operation in a sequence of operations defined by a complex instruction |
-
2009
- 2009-01-24 CN CN 200910002807 patent/CN101788901B/zh active Active
-
2010
- 2010-01-20 US US12/690,719 patent/US9015450B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6047369A (en) * | 1994-02-28 | 2000-04-04 | Intel Corporation | Flag renaming and flag masks within register alias table |
CN1581069A (zh) * | 2003-07-31 | 2005-02-16 | 英特尔公司 | 具有多位字段的寄存器的重命名 |
CN101046740A (zh) * | 2006-03-28 | 2007-10-03 | 国际商业机器公司 | 用于按需临时寄存器重命名的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101788901A (zh) | 2010-07-28 |
US9015450B2 (en) | 2015-04-21 |
US20100205387A1 (en) | 2010-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101788901B (zh) | 使用影子寄存器的高效硬件实现的设备及其方法 | |
TWI497412B (zh) | 用於使用相依矩陣追蹤解除配置之載入指令之方法、處理器及裝置 | |
CN100449499C (zh) | 在微处理器恢复单元中进行写队列读数据的方法和装置 | |
TWI521429B (zh) | 運算元大小控制 | |
US20170097826A1 (en) | System, Method, and Apparatus for Improving Throughput of Consecutive Transactional Memory Regions | |
US9823972B2 (en) | Mobile flash storage boot partition and/or logical unit shadowing | |
CN103262028B (zh) | 用于浮点寄存器高速缓存的方法及设备 | |
US20120278596A1 (en) | Apparatus and method for checkpoint repair in a processing device | |
TWI528291B (zh) | 用於在移動消除操作中旗標追蹤之系統與方法 | |
US20060190700A1 (en) | Handling permanent and transient errors using a SIMD unit | |
CN102792265A (zh) | 基于机器状态的指令破解 | |
JPH06230961A (ja) | データ処理システムにおいてバックアップ機能を備えてレジスタ再命名を実行する方法 | |
CN103098020A (zh) | 由多个指令集使用的寄存器间映射 | |
TW201403472A (zh) | 最佳化暫存器初始化操作 | |
CN101147125A (zh) | 用于直接累积未调准数据的可写入分段字的架构型寄存器 | |
US7143271B2 (en) | Automatic register backup/restore system and method | |
US20140372732A1 (en) | Accelerated reversal of speculative state changes and resource recovery | |
CN101802779A (zh) | 具有可重新组构的浮点单元的处理器 | |
TW202138996A (zh) | 切換影堆疊指標的硬體設備以及方法 | |
WO2021236660A1 (en) | Methods and systems for utilizing a master-shadow physical register file | |
US8082423B2 (en) | Generating a flush vector from a first execution unit directly to every other execution unit of a plurality of execution units in order to block all register updates | |
TWI506542B (zh) | 使用單一表格儲存臆測結果及架構結果 | |
JP3170472B2 (ja) | レジスタ・リマップ構造を有する情報処理システム及び方法 | |
Battle et al. | Flexible register management using reference counting | |
EP3707598A1 (en) | System and method of vliw instruction processing using reduced-width vliw processor |
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 |