CN105359089A - 用于在微处理器中进行选择性重命名的方法和设备 - Google Patents
用于在微处理器中进行选择性重命名的方法和设备 Download PDFInfo
- Publication number
- CN105359089A CN105359089A CN201480038318.7A CN201480038318A CN105359089A CN 105359089 A CN105359089 A CN 105359089A CN 201480038318 A CN201480038318 A CN 201480038318A CN 105359089 A CN105359089 A CN 105359089A
- Authority
- CN
- China
- Prior art keywords
- instruction
- register
- producer
- physical register
- framework
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 112
- 238000013507 mapping Methods 0.000 claims description 28
- 238000003860 storage Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 3
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 claims description 3
- 238000004519 manufacturing process Methods 0.000 description 13
- 238000009826 distribution Methods 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000004087 circulation Effects 0.000 description 2
- 230000001351 cycling effect Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
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, 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, look ahead
- G06F9/3824—Operand accessing
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Abstract
本文揭示了用于允许乱序处理器重用在用的物理寄存器的方法和设备。所述方法和设备使用标识符,如令牌和/或在重命名映射表RMT和物理寄存器堆PRF中的其他标识符以指示是否允许或禁止将指令结果写入物理寄存器中。
Description
根据35U.S.C.§119主张优先权
本专利申请案主张于2013年7月12日申请且转让给本案受让人并以引用的方式明确并入本文中的标题为“用于在微处理器中进行选择性重命名的方法和设备”(MethodandApparatusforSelectiveRenaminginaMicroprocessor)的第61/845,476号临时申请的优先权。
技术领域
本发明的各方面一般涉及处理器,且更特别地涉及在微处理器中进行选择性重命名。
背景技术
寄存器重命名是在处理器中处理指令流时的常见进程。例如,指令根据指令集架构生成架构化寄存器。架构化寄存器被重命名为物理寄存器,其存储有指令的结果。
重命名映射表(RMT)将架构化寄存器映射至物理寄存器。随着程序执行,架构化寄存器不断地被映射至物理寄存器,且可用于存储结果的物理寄存器的数量可被快速耗尽。因此,处理器的设计必须提供许多物理寄存器以确保通过指令生成的架构化寄存器的每一个新代具有用于放置结果的物理寄存器。
这本身是有问题的,这是因为标准的解决方案要具有高度移植的大物理寄存器堆(PRF)。具有高度移植的PRF可影响处理器的循环时间、处理器的功耗以及处理器的时钟速度,即,处理器运行的多快或慢。
因此,需要用于寄存器重命名的改进的设备和方法,从而可使PRF尽可能得小。
发明内容
本发明的实例性实施方案涉及系统、方法和非临时性计算机可读存储媒体,其包含当通过机器进行存取时会使所述机器执行在微处理器(和/或处理器)中进行选择性重命名的方法的数据。例如,在一或多个实施方案中,一种操作处理器的方法通过获得第一生产者指令进行操作。所述第一生产者指令包含第一生产者指令结果。所述第一生产者指令还包含第一标识符。所述第一标识符可包含指令序列标识符。所述第一标识符可包含令牌计数。
所述方法还通过生成用于所述第一生产者指令的架构化寄存器的第一代进行操作。生成用于所述第一生产者指令的所述架构化寄存器的所述第一代包括标识重命名映射表(RMT)中与所述架构化寄存器的所述第一代相对应的用于所述第一生产者指令的条目。
所述方法进一步地通过将物理寄存器分配至所述架构化寄存器进行操作。将所述物理寄存器分配至所述架构化寄存器包括标识所述重命名映射表(RMT)中与所述架构化寄存器的所述第一代相关联的用于所述第一生产者指令的物理寄存器条目。
所述方法进一步地通过获得第二生产者指令进行操作。所述第二生产者指令包含第二生产者指令结果和第二标识符。所述第二标识符可包含指令序列标识符。所述第二标识符可包含令牌计数。
所述方法进一步地通过生成所述架构化寄存器的第二代并将所述物理寄存器分配至所述架构化寄存器的所述第二代进行操作。
所述方法进一步地通过如果所述第二标识符对应于所述第一标识符,则允许将所述第二生产者指令结果写入所述第一物理寄存器中的方式进行操作。所述方法进一步地通过如果所述第二标识符不对应于所述第一标识符,则禁止将所述第二生产者指令结果写入所述第一物理寄存器中的方式进行操作。
在一或多个实施方案中,所述方法进一步地通过将新的物理寄存器分配至所述架构化寄存器的所述第二代以及如果所述新的物理寄存器与所述物理寄存器相同,则释放所述物理寄存器的方式进行操作。
所述处理器可以是乱序处理器。所述第一生产者指令可以是潜在的管线清除指令。在一些实施方案中,所述架构化寄存器是由指令集架构所限定的。
在一或多个实施方案中,所述方通过确定所述第一生产者指令为潜在的管线清除指令并响应于关于所述第一生产者指令为潜在的管线清除指令的所述确定复位所述第一和第二标识符进行操作。
一或多个实施方案包含处理器,其被配置成在管线中处理指令以生成至少一个架构化寄存器和至少一个指令结果。所述处理器可包含重命名映射表(RMT)。RMT可包含分别将至少一个架构化寄存器映射至至少一个物理寄存器的至少一个条目。在所述RMT中的至少一个条目包含RMT标识符。
所述处理器还可包含物理寄存器堆(PRF)。PRF可包含表示所述至少一个物理寄存器的至少一个条目。在所述PRF的所述至少一个条目可包含PRF标识符。
所述处理器可包含执行模块,其被配置成如果所述PRF标识符对应于所述RMT标识符,则允许将所述指令结果写入所述物理寄存器中。所述执行模块还可在如果所述PRF标识符不对应于所述RMT标识符的情况下,禁止将所述指令结果写入所述物理寄存器中。
在替代的实施方案中,一种操作处理器的方法通过从处理器管线获得第一生产者指令进行操作。所述第一生产者指令可包含第一生产者指令结果。所述处理器可包含数据转发网络。操作所述处理器的所述方法可进一步地通过生成用于所述第一生产者指令的架构化寄存器的第一代并获得第二生产者指令进行操作。所述第二生产者指令可包含第二生产者指令结果。操作所述处理器的所述方法可进一步地通过生成所述架构化寄存器的所述第二代、将物理寄存器分配至所述架构化寄存器的所述第二代、允许将所述第二生产者指令结果写入所述物理寄存器中并允许从所述数据转发网络读取所述第一生产者指令进行操作。
提交了本发明内容,要理解的是其不用于解释或限制权利要求的范围或含义。本发明内容并不旨在识别所主张的主题的关键或必要的特性,也不旨在帮助确定所主张的主题的范围。
附图说明
附图是为了有助于描述本文所描述的技术的实施方案而提出的且仅是为了说明实施方案而非对其进行限制而提供的。
图1为根据一或多个实施方案的实例性处理器的框图。
图2为根据一或多个实施方案的更详细的关于图1中所示的实例性处理器的图。
图3示出根据一个实施方案的用于在指令重命名阶段在处理器中进行选择性重命名的方法的实例性流程图。
图4示出根据一个实施方案的用于在指令完成阶段在处理器中进行选择性重命名的方法的实例性流程图。
图5示出根据一个实施方案的用于在指令提交/撤回阶段在处理器中进行选择性重命名的方法的实例性流程图。
图6示出根据一个替代实施方案的在使用数据转发网络的处理器中进行选择性重命名的方法的实例性流程图。
具体实施方式参照了附图。在附图中,参考数字的最左边的数字(多个数字)标识参考数字最初出现的图。在所有附图中使用相同的数字以表示相同的特性和组件。
具体实施方式
通常,本文所揭示的主题的一个实施方案涉及在乱序处理器(和/或处理器)中进行选择性重命名以改善处理器的循环时间、处理器的功耗以及处理器的时钟速度,即处理器运行得多快或慢。在寄存器重命名中,当通过指令第一次生成架构化寄存器时,其基于用于特定处理器的指令集架构(ISA)被重命名为不同的名字,即物理寄存器名。当通过指令第二次生成架构化寄存器时,通常向架构化寄存器的第二代分配不同于之前分配的物理寄存器的新的物理寄存器。以这种方式,处理器现在即可按与用于新的物理寄存器的指令结果的生产和消耗相平行或乱序的方式执行用于之前的物理寄存器的指令结果的生产和消耗。这个进程往往会快加处理器的操作。
重命名映射表(RMT)将架构化寄存器的名字映射至所分配的物理寄存器,从而使用于指令结果的生产者/消费者对知道要查找到用于写入/读取的重命名的物理寄存器。当向架构化寄存器的第二代分配新的物理寄存器时,RMT相应地进行更新,从而使第二生产者/消费者对知道要查找到用于写入/读取的重命名的物理寄存器。
这个重命名进程所存在的一个问题是要向相同的架构化寄存器的每一代分配不同的物理寄存器。即,要向每个生产者/消费者对分配不同的物理寄存器。其结果是,要么处理器快速地用完物理寄存器,要么物理寄存器堆(PRF)变得相当大。
根据本文所述的一或多个实施方案,PRF的大小可以减小,这是因为在寄存器重命名期间,重用了物理寄存器。在一或多个实施方案中,物理寄存器的重用是利用潜在的管线清除(PPF)指令、潜在的恢复点或类似物而实现的。PPF指令为处理器在取指令时间推测下一条指令将是什么的指令。
条件转移指令为PPF指令的一个实例。使用条件转移指令,处理器不知道是否将进行转移直到指令实际执行为止。鉴于其不是使处理器进行等待直到实际执行为止的最佳方式,这是因为完成指令要进行许多循环,例如,转移预测器用于通过推测或猜测最终将采用哪种转移并从转移预测器所提供的目标地址取指令而使进程加速。
如果转移预测被证明是不正确的且响应于转移预测而取的指令不应该已被执行过,处理器则试图将其状态恢复至推测出错的点上。即,处理器将试图假装好像未超越PPF指令发生过什么一样且处理器将试着将其状态重建为其实际在PPF指令时的状态。
PPF指令的另一个实例是存储器操作(即,加载或存储),其在转换后备缓冲器(TLB)中遭遇遗漏并导致页面错误,并需要控制以切换至随后将正确的转换加载至TLB中的操作系统代码。
在本文所述的一或多个实施方案中,在管线中具有两个PPF指令,以及在其之间的非PPF指令。在这种情况下,没有任何理由使处理器的状态将必须再落在两个PPF指令之间。如果处理器的状态需要恢复至第一PPF指令,其将落在第一PPF指令处或如果处理器的状态需要恢复至第二PPF指令,其将落在第二PPF指令处。处理器的状态将无需恢复至在两个PPF指令之间的任何点上,如架构化寄存器被第一次重命名为物理寄存器处。
此外,如果在所分配的第一物理寄存器中写入的结果已被消耗掉,那么则无需向通常分配有不同于之前的物理寄存器的新的物理寄存器的架构化寄存器的下一代分配新的物理寄存器。根据本文所述的实施方案,架构化寄存器的下一代会重用之前的物理寄存器。即,知道在架构化寄存器的前一代和架构化寄存器的下一代之间不具有PPF指令的处理器会将之前的物理寄存器分配至出现的下一个生产者/消费者对。
要注意的是也可向通过在两个PPF指令之间出现的指令所生成的架构化寄存器的其他代分配相同的物理寄存器。因此,如果有源于多个指令的架构化寄存器的多代,每个架构化寄存器则可分配有相同的物理寄存器,而不是分配多个物理寄存器以用于多个架构化寄存器。这是本文所述的实施方案可通过其而允许减小PRF大小的机制。本文所述的实施方案还节约了处理器的功率、提高了处理器的时钟步骤等。
为了说明这个概念,假设在一种情况下第一生产者指令通过在RMT中进行查找知道第一物理寄存器已被分配至架构化寄存器的第一代。第一生产者指令因此知道要将其结果写入第一分配的物理寄存器中。同样地,第一消费者指令通过在RMT中进行查找知道要从第一分配的物理寄存器读取第一生产者指令的结果。如果第一消费者要读取的结果已被写入第一分配的物理寄存器中,第一消费者则仅读取已被第一生产者写入第一分配的物理寄存器中的结果。被写入第一分配的物理寄存器中的第一生产者结果的第一消费者已完成其任务且因此不再需要被第一生产者写入第一分配的物理寄存器中的结果。
当第一架构化寄存器的第二代出现时,则保证了第一架构化寄存器的第二代不具有针对第一生产者结果的其他消费者。此外,第一架构化寄存器的所有未来各代将查找到第二分配的物理寄存器以读取其结果,这是因为在第一分配的物理寄存器中的结果已被消费掉。再次,不再需要被第一生产者写入第一分配的物理寄存器中的结果。
在替代的情况下,一个结果的第一生产者通过在RMT中进行查找知道第一物理寄存器已被分配至第一架构化寄存器。所述结果的第一生产者因此知道要将所述结果写入第一分配的物理寄存器中。同样地,所述结果的第一消费者通过在RMT中进行查找知道要从第一分配的物理寄存器读取所述结果。然而,如果由于所述结果的第一生产者尚未完成,从而使第一消费者要读取的所述结果尚未被写入第一分配的物理寄存器中,那么所述结果的第一消费者则可等待源于第一生产者的所述结果在第一分配的物理寄存器中变为可用的。然而,除其他事项外,等待会使处理器减速。
在本文所述的一或多个实施方案中,作为使所述结果的第一消费者等待所述结果的第一生产者将其结果写入第一分配的物理寄存器中的替代,所述结果的第一消费者直接从处理器中的转发网络获得所述结果。即,所述结果的第一消费者无需从第一分配的物理寄存器读取所述结果。相反地,在将所述结果写入第一分配的物理寄存器中前,所述结果的第一消费者从处理器的转发网络的转发路径中的一个获得所述结果。
因此,当第一架构化寄存器的第二代出现时,第一消费者不需要第一分配的物理寄存器所存储的用于第一架构化寄存器的第一代的所述结果,这是因为第一消费者已在第一架构化寄存器的第二代出现时读取了存储于第一分配的物理寄存器中的所述结果(第一种情况)或者第一消费者已从转发网络获得了所述结果(第二种情况)。因此,现在第一分配的物理寄存器是空闲的以可通过第一架构化寄存器的第二代进行重用。以这种方式,第一架构化寄存器的第二代分配有与分配给第一架构化寄存器的第一代的相同的物理寄存器名。即,第一分配的物理寄存器的名字重用于第一架构化寄存器的第二代。
实例性重命名映射表(RMT)和物理寄存器堆(PRF)
图1示出根据本文所述的一或多个实施方案的实例性处理器100的框图。所示的处理器100为乱序处理器,其在指令管线中执行指令期间利用了选择性寄存器重命名。已知常规的处理器,如所示的处理器100包含从数据高速缓冲存储器接收数据和从指令高速缓冲存储器接收指令的管线。控制器通常控制在管线内的各个阶段和执行单元(如取指令阶段、解码阶段等)以进行解码和执行指令。当其完成时,源于所执行指令的结果可被存储在寄存器堆、数据高速缓冲存储器和其他缓冲器或存储器单元中。
所示的处理器100包含选择性寄存器重命名机制,其将寄存器名从架构化寄存器名变为物理寄存器名。可这样做以消除处理器性能削弱数据危害,如写后读(RAW)数据危害和写后写(WAW)数据危害。
所示的寄存器重命名机制包含重命名映射表(RMT)102。在一或多个实施方案中,RMT102为在处理器中将架构化寄存器映射至物理寄存器的任何合适的机制。RMT102能够进行动态更新以反映架构化寄存器至物理寄存器的新的映射,其包括标识符,如令牌、令牌计数、序列标识符等的动态更新。
例如,当指令为要将结果写入物理寄存器中时,在RMT102中记录用于指令结果的所分派或分配的物理寄存器的位置。当指令为要从物理寄存器读取结果时,查阅RMT102以确定要记录指令结果的所分派或分配的物理寄存器的位置。要注意的是,架构化寄存器不是处理器100内实际的物理位置。相反地,架构化寄存器为根据用于特定处理器的ISA而由处理器的指令生成的寄存器的名字。
所示的寄存器重命名机制包含物理寄存器堆(PRF)104。在一或多个实施方案中,PRF为包含在处理器100硬件中实施的物理寄存器的堆。物理寄存器保持已提交的指令的结果,以及尚未提交的后续指令的结果。通常,物理寄存器比架构化寄存器更多。
所示的RMT102包含架构化寄存器列106和物理寄存器名(PRN)。架构化寄存器列106不是物理实体。相反地,架构化寄存器列仅指示用于存取在PRN列108中的相应条目的索引。PRN列108是按架构化寄存器的名字进行索引的。
PRN列108包含物理寄存器P1-P5,然而通常物理寄存器比架构化寄存器更多。在这个实例中,架构化寄存器R1-R5被重命名为物理寄存器P1-P5。在使用标识符,如令牌和/或指令序列ID(例如,重新排序缓冲器ID、矩阵ID等)的一或多个实施方案中,架构化寄存器可重用已在用的物理寄存器。
例如,所示的RMT102包含令牌列110。在所示的实施例中,在令牌列110中的令牌为3位长,然而根据实施方案,令牌可以是任何数量的位,如1位、2位、10位等。
所示的PRF104包含物理寄存器列112。物理寄存器列112包含物理寄存器P1-P5,然而通常有更多的物理寄存器。
所示的PRF104包含按物理寄存器的名字进行索引的物理寄存器状态列114。物理寄存器状态列114指出特定的物理寄存器是否是空闲的或在用的。例如,在所示的实例中,物理寄存器状态列114指出物理寄存器P2是<在用的>且所有其他物理寄存器是<空闲的>。<在用的>命名指出物理寄存器已被分配至架构化寄存器且所生成的指令要将其结果写入所分配的物理寄存器中。根据实施方案,<在用的>的物理寄存器可由架构化寄存器的另一代进行重用。<空闲的>命名指出物理寄存器尚未被分配至架构化寄存器且可向所生成的指令分配所述物理寄存器。根据实施方案,<在用的>的物理寄存器可由架构化寄存器的另一代进行重用。
所示的PRF104包含令牌列116。在令牌列116中的令牌为3位长,然而根据实施例,令牌可以是任何数量的位,如1位、2位、10位等。用于令牌列116中的物理寄存器P2的令牌还要将其最低有效位设定为“1”。
在图1所示的实例中,箭头120指出架构化寄存器R5已被重命名为(或被映射至)物理寄存器P2,且箭头122指出用于物理寄存器P2的令牌将其最低有效位设定为“1”。
所示的处理器100包含数据转发机构124。所示的数据转发机构124允许在连续的循环中执行依靠数据的指令。例如,数据转发机构124使数据能绕过PRF直接在处理器100中的功能单元之间进行发送。
实例选择性寄存器重命名设备
从上面讨论的回想,根据实施方案,第一架构化寄存器的第二代分配有与分配给第一架构化寄存器的第一代的相同的物理寄存器。然而,通常架构化寄存器的第一代的第一生产者不知道第一分配的物理寄存器也已被分配至架构化寄存器的第二代。根据本文所述的一或多个实施方案,所示的处理器100确定在什么情况下允许生产者指令将其结果写入特定的物理寄存器中以及在什么情况下允许消费者指令从特定的物理寄存器读取结果。
图2示出根据本文所述的一或多个实施方案处理器100的框图,其中处理器确定在什么情况下允许生产者指令将其结果写入特定的物理寄存器中以及在什么情况下允许消费者指令从特定的物理寄存器读取结果。
所示的处理器100包含RMT102的几个版本:102A、102B、102C和102D。所示的处理器100还包含PRF104的几个版本:104A、104B、104C和104D。PRF为一旦生产者指令完成其执行时写入结果处的物理寄存器堆。
RMT的每个版本102A、102B、102C和102D包含各架构化寄存器列106A、106B、106C和106D。
RMT的每个版本102A、102B、102C和102D包含各PRN列108A、108B、108C和108D。PRN列108A、108B、108C和108D是按架构化寄存器(R4、R5和R6)的名字进行索引的。架构化寄存器列不是物理实体,而是指示用于存取在PRN列108A、108B、108C和108D中的相应条目的索引。在所示的实施方案中,示出三个架构化寄存器且示出三个物理寄存器。然而,通常物理寄存器比架构化寄存器更多。
RMT的每个版本102A、102B、102C和102D附有各令牌列110A、110B、110C和110D。令牌列110A、110B、110C和110D包含用于确定是否允许生产者将结果写入物理寄存器中的位。
在所示的实施方案中,在令牌列110A、110B、110C和110D中的令牌为1位长,然而根据本文所述的其他实施方案,令牌可以是任何数量的位,如3位、2位、10位等。例如,每个令牌的位的数量可取决于预计在两个PPF指令、两个可能的恢复点或类似物如转移指令之间出现的架构化寄存器的生产数量。在一些情况下,如果预计在两个PPF之间对给定的架构化寄存器只有4次重命名,那么每个令牌两位则可能是足够的。在本文所述的一或多个实施方案中,所有令牌计数从“0”开始。
RMT的每个版本102A、102B、102C和102D包含各物理寄存器列112A、112B、112C和112D。所示的物理寄存器列112A、112B、112C和112D包含三个物理寄存器P1-P3。然而,通常有更多的物理寄存器。
RMT的每个版本102A、102B、102C和102D包含各物理寄存器状态列114A、114B、114C和114D。物理寄存器状态列114A、114B、114C和114D是按物理寄存器(P1、P2和P3)的名字进行索引的。物理寄存器状态列114A、114B、114C和114D指出特定的物理寄存器是否是空闲的或在用的。
RMT的每个版本102A、102B、102C和102D包含各令牌列116A、116B、116C和116D。令牌列116A、116B、116C和116D包含用于确定是否允许生产者将结果写入物理寄存器中的位。
图2中所示的处理器100按程序顺序取指令流210并按任何顺序执行指令。在所示的实施方案中,处理器100正处理指令210A、210B、210C、210D、210E和210F。在所示的实例中,指令210B和210D为生产者指令,如通过指向指令流210中的物理寄存器P2的箭头所指示的。指令210C和210E是消费者指令,如通过指出物理寄存器P2的箭头所指示的。
在图2中所示的实例中,指令210B和指令210C构成通过物理寄存器P2所链接的生产者/消费者指令对。处理器100因此等待以确保在消费者指令210C消耗在物理寄存器P2中的结果前生产者指令210D已完成将其结果写入物理寄存器P2中。同样地,指令210D和210E构成其结果是通过物理寄存器P2所链接的另一生产者/消费者指令对。随着使用生产者/消费者对210B/210C,处理器100等待以确保在消费者指令210E消耗在物理寄存器P2中的结果前生产者指令210D已完成将其结果写入物理寄存器P2中。
此外,在图2所示的实例中,指令210A和210F为PPF指令、潜在的恢复点或类似物,其中处理器100正在进行推测。虽然指令210A和指令210F为PPF指令,但是在指令210A和指令210F之间不具有PPF指令。因此,没有任何理由使处理器100的状态将落在PPF指令210A和PPF指令210F之间。在最坏的情况下,如果状态需要恢复至PPF指令210A,处理器100的状态则将落在PPF指令210,或如果状态需要恢复至PPF指令210F,处理器100的状态则将落在PPF指令210F,但处理器100将不会恢复至指令210B、210C、210D或210E。
在所示的实施方案中,在点202上,架构化寄存器R5(列106A)已分配物理寄存器P1(列108A),且其相关联的令牌计数为“0”(列110A)。此外,在点202上,物理寄存器P2(列112A)被指示为<空闲的>(列114A)且其相关联的令牌计数为“0”(列116A)。
在遇到PPF指令(点202)后,RMT102的令牌计数立即被复位为“0”。因此,当重命名为PPF指令的指令210A时,在RMT102A中的所有令牌计数被复位为“0”。在PRF104A中的令牌计数未发生变化。虽然在图2中在PRF104A中的令牌计数被示为全都是“0”,但这仅是为了进行说明。仅有被指示为<空闲的>的物理寄存器P2需要将其令牌设置为“0”。
当在点204遇到生成架构化寄存器R5的第一生产者指令时,检查在RMT102A中与架构化寄存器R5相关联的令牌。由于在RMT102A中的令牌为“0”,生成架构化寄存器R5的第一指令分配有空闲的物理寄存器,其在图2所示的实例中为物理寄存器P2。物理寄存器P2还被输入至RMT102B以作为用于架构化寄存器R5的新的名字。在RMT102A中与架构化寄存器R5相关联的令牌被递增至“1”且生成架构化寄存器R5的第一指令携带令牌=1将其向下带至处理器100的管线中。在PRF104A中与物理寄存器P2相关联的令牌也是递增的,从而使PRF104B中用于物理寄存器P2的令牌计数=1。有了这个想法,可考虑三种情况。
在第一种情况下,在第一消费者指令到达前,生成架构化寄存器R5的第一生产者指令完成。在这种情况下,第一生产者指令被允许写入物理寄存器P2中,这是因为值为“1”的第一生产者的令牌对应于和/或匹配于其值也为“1”的与物理寄存器P2相关联的令牌。
在第二种情况下,在第一生产者指令完成前,第一消费者指令到达。在这种情况下,消费者指令可在处理器100的管线中直接跟踪结果并经数据旁路获得结果。生产者指令可仍能够将其生产写入物理寄存器P2中,但被写入物理寄存器P2中的结果则不会被使用。
在第三种情况下,第二生产者指令在点206生成架构化寄存器R5的第二代。在第一生产者指令完成前,第二生产者指令的结果到达。在这种情况下,如果与架构化寄存器R5相关联的令牌计数大于“0”,则不分配新的物理寄存器,且在RMT102中用于架构化寄存器R5的映射条目留在物理寄存器P2中。然而,在RMT102与架构化寄存器R5相关联的令牌计数是递增的(例如,至“2”)。与物理寄存器P2相关联的令牌计数也是递增的(例如,至“2”)。第二生产者指令携带值为“2”的令牌计数将其向下带至处理器100的管线中。如果第一生产者指令在未来于任何点上完成(在第二生产者指令前或后),第一生产者指令将不会被允许写入物理寄存器P2中,这是因为其值为“1”的令牌不再对应于和/或匹配于其值为“2”的与物理寄存器P2相关联的令牌。
当在点208遇到PPF指令210F时,RMT102C的令牌计数被复位为“0”,如在RMT102D所指出的,同时PRF104C的令牌计数则保持不变,如在PRF104D中所指出的。
当第一生产者指令提交时,检查架构化寄存器R5的之前的映射。由于为物理寄存器P1的之前的映射不同于为物理寄存器P2的当前的映射,释放架构化寄存器R5的之前的映射以进行重用。即,释放物理寄存器P2以进行重用。此外,与物理寄存器P2的之前的映射相关联的令牌计数被复位为“0”,如在列116A中所指出的。
当第二生产者指令提交时,检查架构化寄存器R5的之前的映射。由于架构化寄存器R5(即,物理寄存器P2)的之前的映射与当前的映射(即,物理寄存器P2)相同,架构化寄存器R5的之前的映射,即物理寄存器P2则不会被释放。
实例性在指令重命名阶段基于令牌的选择性寄存器重命名方法
图3示出根据一个实施方案的用于在指令重命名时在处理器中进行选择性重命名的方法300的实例性流程图。
在方框302中,方法300获得指令。所获得的指令生成架构化寄存器。在一或多个实施方案中,指令为生产者指令。在一个例子中,处理器100中的取指单元(未示出)从指令管线取指令并进行解码。返回图2,处理器100从管线获得指令210A。
在方框304中,方法300确定所获得的指令是否为PPF指令。如果在方框304中确定所获得的指令为PPF指令,方法300的控制则前进至方框306。如果,在另一方面,在方框304中确定所获得的指令不是PPF指令,方法300的控制则前进至方框308。
在方框306中,方法300将RMT102A中的所有令牌计数复位为“0”。将RMT102A中的所有令牌计数复位为“0”迫使方法300选择新的重命名以用于这一代和所有新的生产。与图2中所示的实例一致,指令210A为PPF指令且在点202上,列110A中的令牌计数被复位为“0”。
在方框308中,方法300标识在RMT102A中与所获得指令的架构化寄存器相应的条目。与图2中所示的实例一致,方法将在RMT102A的列106A中的架构化寄存器R5条目标识为对应于指令210A。
在方框310中,方法300标识物理寄存器和在RMT102A中用于指令的架构化寄存器的映射处的令牌计数。与图2中所示的实例一致,方法300标识在RMT102A中列108A中的物理寄存器P1以及在RMT102A中列110A中的令牌计数“0”,其对应于RMT102A中的架构化寄存器R5。
在方框312中,方法300确定用于指令的架构化寄存器的令牌计数是否=“0”。如果用于指令的架构化寄存器的令牌计数=“0”,方法300的控制则前进至方框314。
与图2中所示的实例一致,方法300确定在RMT102A的列110A中的令牌=“0”,且方法300的控制前进至方框314。
在方框314中,方法300将源于PRF104的列112A的新的当前未使用的物理寄存器分配至指令,重命名所述新的当前未使用的物理寄存器并将物理寄存器变成位于RMT102A中的位置上的重命名的物理寄存器。在一或多个实施方案中,方法300通常通过查阅空闲列表选择新的名字,即空闲的物理寄存器。例如,方法300将用于架构化寄存器的RMT102A的条目更新为重命名的物理寄存器。
与图2中所示的实例一致,方法300选择物理寄存器P2,将为未使用的(<空闲的>)(列114A)的物理寄存器P2分配至指令210A,重命名新的未使用的物理寄存器P2并使物理寄存器P1(在RMT102A中的列108A)变为P2(RMT102B中的列108B)。
在方框316中,方法300将在RMT102A位置上的用于架构化寄存器的令牌计数设置为“1”并将在PRF104A位置上的用于重命名的物理寄存器的令牌计数设置为“1”。例如,方法300使在RMT102A中用于架构化寄存器的令牌计数按“1”递增。
与图2中所示的实例一致,方法300将在RMT102A中列110A的用于架构化寄存器R5和物理寄存器P2的令牌计数设置为“1”并将在列116A中的用于物理寄存器P2的令牌计数设置为“1”。这在点204上导致在RMT102A中列110B的用于架构化寄存器R5和物理寄存器P2的令牌计数为“1”以及在PRF104B的列116B的用于物理寄存器P2的令牌计数为“1”。
在方框318中,方法300确保了所获得的指令记住物理寄存器、新的分配的物理寄存器以及其令牌计数=“1”。
与图2中所示的实例一致,方法300确保指令210A记住物理寄存器P2和在列110B中的令牌计数具有值为“1”的结果。在一或多个实施方案中,架构化寄存器R5的未来生产者(例如,指令210C)发现在RMT102B中用于R5的令牌为“1”并不试图获得新的物理寄存器。反而,未来的生产者使用相同的物理寄存器(即,P2)作为其目的地。
然而,未来的生产者不会使在RMT102B的列110B中的令牌计数按“1”递增以及使在PRF104B中列116B中的相应的物理寄存器P2递增。与图2中所示的实例一致,当方法300获得指令210C,在列110B中的令牌按“1”递增至“2”(列110C和列116C)。
如果,在另一方面,方法300在方框312中确定用于指令的架构化寄存器的令牌计数≠“0”,且方法300的控制前进至方框320。
与图2中所示的实例一致,在点204上,物理寄存器P2(列112B)被指示为<在用的>(列114A)且其相关联的令牌计数为“1”(列116B)。因此,在点204上,当所获得的指令是指令210B时,令牌计数不为“0”。令牌计数为“1”。
在方框320中,方法300不将源于PRF的新的物理寄存器分配至用于架构化寄存器的指令。重命名的物理寄存器保持与其未重命名时的一样。
与图2中所示的实例一致,在RMT102B中列110B中的用于架构化寄存器R5的令牌计数为“1”且用于物理寄存器P2的令牌计数为“1”。因此,方法300不将新的物理寄存器分配至用于指令的架构化寄存器R5。在列108B中的寄存器P2保持为P2。
在方框322中,方法300使在RMT位置上的用于架构化寄存器的令牌计数递增为“T+1”。方法300还使在PRF位置上的用于新的在用的物理寄存器的令牌计数为“T+1”。
与图2中所示的实例一致,在RMT102B位置上的用于架构化寄存器R5的令牌计数递增至“T+1”。在PRF104C位置上的用于P2的令牌计数也递增至“T+1”。这在点206上导致在RMT102C中列110C的用于架构化寄存器R5和物理寄存器P2的令牌计数为“2”以及在PRF104C的列116C的用于物理寄存器P2的令牌计数为“2”。
在方框324中,方法300确保指令记住之前的物理寄存器也是新的物理寄存器,且用于指令的令牌为“T+1”。与图2中所示的实例一致,指令210D记住物理寄存器P2仍具有名字P2且在列110C中的令牌具有值为“2”的结果。
在这一点上,释放所获得的指令以在重命名在图2中所示的架构中重用,从而进入管线并予以执行。
在此期间,当有架构化寄存器R5的第二代时,为了进行说明,假定架构化寄存器R5的状态为当前重命名的物理寄存器P2且用于物理寄存器P2的令牌不为零(例如,P2的令牌=“1”)。虽然物理寄存器P2已被用于R5的第一代,但物理寄存器P5仍被进行重用以用于R5的第二代。作为将新的物理寄存器分配至R5的第二代的替代,重命名架构重用了物理寄存器P2并将其令牌计数从“1”递增至“2”。重命名架构还使在PRF104中的令牌计数从“1”递增至“2”。
随着用于物理寄存器P2的令牌计数为“2”且用于PRF的令牌计数为“2”,进一步地假定第一生产者在这一点上完成。当第一生产者试图将其生产结果写入物理寄存器P2中时,第一生产者发现在物理寄存器P2中的令牌计数为“2”且第一生产者的令牌计数为“1”。在这些情况下,不允许第一生产者将其结果写入物理寄存器P2中,这是因为令牌计数不匹配。
实例性在指令完成阶段基于令牌的选择性寄存器重命名方法
图4示出根据一个实施方案的用于在指令完成时在处理器中进行选择性重命名的方法400的实例性流程图。如在本文所使用的,指令完成时间为当已取并执行指令但其结果尚未被写入所分配的物理寄存器中的时候。
在方框402中,方法400获得指令。与图2中所示的实例一致,方法400获得生产架构化寄存器R5的第二代的指令。生产架构化寄存器R5的第二代的指令已记住其令牌计数为“1”。
在方框404中,方法400确定经所获得的指令记住的令牌计数对应于和/或匹配于在PRF中当前与所分配的物理寄存器相关联的令牌。在方框404中,如果方法400确定经所获得的指令记住的令牌计数对应于和/或匹配于在PRF中当前与所分配的物理寄存器相关联的令牌,那么方法400的控制则前进至方框406。与图2中所示的实例一致,方法400确定值为“1”的指令的令牌计数是否对应于和/或匹配于在PRF列116B中当前与所分配的物理寄存器P2相关联的值为“1”的令牌计数。
在方框406中,由于值为“1”的指令的令牌计数对应于和/或匹配于在PRF列116B中当前与所分配的物理寄存器P2相关联的值为“1”的令牌计数,方法400容许和/或允许生产架构化寄存器R5的第二代的指令将其结果写入在PRF104中所分配的物理寄存器P2中。
在另一方面,如果在方框404中,方法400确定经所获得的指令记住的令牌计数不对应于和/或不匹配于在PRF104中当前与所分配的物理寄存器相关联的令牌,那么方法400的控制则前进至方框408。
与图2中所示的实例一致,方法400确定值为“1”的指令的令牌计数是否对应于和/或匹配于在PRF列116C中当前与物理寄存器P2相关联的值为“2”的令牌计数。因此,在方框408中,不允许生产架构化寄存器R5的第二代的指令将其结果写入物理寄存器P2中,这是因为令牌计数不匹配。
实例性在指令提交/撤回阶段基于令牌的选择性寄存器重命名方法
图5示出根据一个实施方案的用于在指令提交/撤回时在处理器中进行选择性重命名的方法500的实例性流程图。如在本文所使用的,指令提交/撤回时间为已取和执行指令、其结果已被写入分配的物理寄存器中且释放之前被分配至架构化寄存器的物理寄存器的时候。
在方框502中,方法500获得指令。在一或多个实施方案中,所获得的指令生产架构化寄存器R5的另一代,其分配有物理寄存器。
在方框504中,方法500确定所分配的物理寄存器的名字是否不同于新分配的物理寄存器。例如,如果所分配的物理寄存器的名字为P2且新分配的物理寄存器的名字为P3,在方框506中,方法500则释放在PRF104中被分配至物理寄存器P2的条目并将PRF104中用于物理寄存器P2的令牌计数复位为“0”。在一或多个实施方案中,使用已知的技术释放在PRF104中的条目。当释放物理寄存器P2时,将用于物理寄存器的令牌计数被复位为“0”(列110D)。
在另一方面,如果方法500确定所分配的物理寄存器的名字不同于新分配的物理寄存器,那么在方框508中,则不释放物理寄存器。
实例性基于指令序列ID的选择性寄存器重命名方法
在一些替代实施方案中,作为使用令牌以唯一地将架构化寄存器的特定代绑定至特定的物理寄存器的替代,也可使用任何其他的唯一标识符,如指令序列ID(例如,重新排序缓冲器ID、矩阵ID等)。在这个实施方案中,RMT102将每个条目携带单一位,其指示从上一次PPF指令开始相关联的架构化寄存器是否已进行重命名。PPF指令将这些位复位为“0”,且“0”指示要被分配至生产的新的重命名。一旦将新的重命名分配用于架构化寄存器,相应的位则被设置为“1”。位保持为“1”直到下一个PPF指令为止,且这个“1”指示无需将新的重命名分配至这个架构化寄存器。
在这个替代的实施方案中,作为令牌的替代,PRF104每个物理寄存器保持一个指令序列标识符(ID)。每个生产者指令将其序列ID发送至所分配的物理寄存器(不管其是否为新分配的物理寄存器)。生产者指令在其有效载荷中携带其指令序列ID(与传统的一样)。在完成后,如果其指令序列ID对应于和/或匹配于物理寄存器的指令序列ID,生产者指令则立即将结果写入其分配的物理寄存器中。在提交指令后,如果之前的重命名不同于当前的重命名,则立即释放之前的重命名以进行重用。每当释放物理寄存器以进行重用时,与物理寄存器相关联的指令序列ID被复位为某种可识别无效或初始状态(如“0”)。
使用数据转发网络的实例选择性寄存器重命名方法
在现代处理器硬件中,在硬件同时(即,在相同的时钟循环中)具有针对一组程序顺序连续的指令的可视性的处理器管线的前端中通常有各管线阶段。当这发生时,可在不使用RMT令牌或PRF标识符,如令牌和/或指令序列ID的情况下利用如本文所述的选择性寄存器重合名。
例如,如果在所述组程序顺序连续的指令中的两个指令生成相同的架构化寄存器且在那两个指令之间不具有PPF指令,那么两个程序顺序连续的指令中较早的一个则无需分配有物理寄存器名以保持其生产结果。反而,两个程序顺序连续的指令中较早的一个的所有消费者经数据转发网络获得生产结果。
要注意的是,较早的生产者结果的所有消费者可在相同的时钟循环中进行识别,这是因为有着在相同的时钟循环中观察到的第二生产结果。即,第一生产结果的任何消费者必须位于第一和第二生产结果之间。因此,较早的生产者及其结果的消费者不需要用完物理寄存器名。这个实施方案权衡用于实现完全的选择性重命名的额外的硬件(如令牌和令牌管理),以供越过可同时在管线阶段可见的指令而进行使用。
图6示出根据一个替代实施方案的在使用数据转发网络(旁路网络)的处理器中进行选择性重命名的方法的实例性流程图。
在方框602中,方法600从处理器管线获得第一指令。在一或多个实施方案中,指令为生产者指令。返回图2所示的选择性重命名结构,处理器100从指令管线210获得指令210A。
在方框604中,方法600生成用于第一生产者指令的架构化寄存器的第一代。第一架构化寄存器可根据用于特定处理器的ISA生成。返回图2,指令210A生成架构化寄存器R5。
在方框606中,方法600从处理器管线获得第二生产者指令。返回图2,处理器100从管线获得指令210B。
在方框608中,方法600根据用于特定处理器的ISA生成架构化寄存器的第二代。返回图2,处理器100生成架构化寄存器R5。
在方框610中,方法600将物理寄存器分配至架构化寄存器的第二代。返回图2,处理器100将物理寄存器P2分配至指令210B。
在方框612中,方法600允许将第二生产者指令结果写入所分配的物理寄存器中。返回图2,处理器100允许指令210B将其结果写入物理寄存器P2中。
在方框614中,方法600允许从数据转发网络读取第一生产者指令结果。返回图1和图2,处理器100允许从使用数据转发机构124的转发网络读取指令210B结果。
尽管在本发明中已连续地描述了各种方法的步骤和决定,这些步骤和决定中的一些可通过单独的元件组合或并行地、异步或同步地、按管线方式或以其他方式进行。没有特别要求要按与列出决定的相同的顺序进行各步骤和决定,除非明确这样指出、以其他方式可从上下文明确的或固有必须的之外。然而,还应注意的是,在所选的变型中,按上述的顺序进行各步骤和决定。此外,在根据本发明的每个实施例/变型中,不是每一个所示的步骤和决定均是必需的,而是在根据本发明的一些实施例/变型中,尚未具体示出的一些步骤和决定也可能是必需的或必要的。
本领域的技术人员将理解可使用多种不同的工艺和技术中的任何工艺和技术表示信息和信号。例如,在上述所有的描述中可能参照的数据、指令、命令、信息、信号、位、符号和码片可用电压、电流、电磁波、磁场或粒子、光场或粒子或其任何组合进行表示。
技术人员还将进一步理解结合本文所述的实施例的各种说明性逻辑块、模块、电路和算法步骤可被实施为电子硬件、计算机软件或两者的组合。为了清楚地显示这种硬件和软件的可互换性,上面已一般地按其功能性描述了各种说明性组件、块、模块、电路和步骤。这种功能是否被实施为硬件、软件或硬件和软件的组合取决于特定的应用和被施加在整个系统上的设计约束。熟练的技术人员可按变化的方式实施所述的功能以用于每个特定的应用,但这种实施方案的决定不应被解释为脱离本发明的范围。
结合本文所述的实施例的各种说明性逻辑块、模块和电路可用所设计的用于进行本文所述功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑装置、分立门或晶体管逻辑、离散硬件组件或其任何组合进行实施或执行。通用处理器可以是微处理器,但在替代方案中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器也可被实施为计算装置的组合,例如,DSP和微处理器、多个微处理器、与DSP核心相结合的一或多个微处理器或任何其他这种配置的组合。
结合本文所揭示的实施例而描述的方法或算法的步骤可直接在硬件、处理器所执行的软件模块或这两者的组合中进行具体化。软件模块可驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或在本领域中已知的任何其他形式的存储媒体中。示范性存储媒体被联接至处理器,从而使处理器能从存储媒体读取信息和将信息写入存储媒体。在替代方案中,存储媒体可集成至处理器。处理器和存储媒体可驻留在ASIC中。ASIC可驻留在接入终端中。替代地,处理器和存储媒体可按离散组件驻留在接入终端中。
提供了前面关于所揭示实施例的描述以使本领域的任何技术人员能制造或使用本发明。对于本领域的技术人员来说,对这些实施例的各种修改将是显而易见的,且在不脱离本发明的精神和范围的情况下,本文所限定的一般原理可适用于其他实施例。因此,本发明并不旨在仅局限于本文所示的实施例,但却要符合与本文所揭示的原理和新颖特性一致的最广的范围。
Claims (30)
1.一种操作处理器的方法,其包括:
获得第一生产者指令,其中所述第一生产者指令包含第一生产者指令结果,且其中所述第一生产者指令包含第一标识符;
生成用于所述第一生产者指令的架构化寄存器的第一代;
将物理寄存器分配至所述架构化寄存器;
获得第二生产者指令,其中所述第二生产者指令包含第二生产者指令结果,且其中所述第二生产者指令包含第二标识符;
生成所述架构化寄存器的第二代;
将所述物理寄存器分配至所述架构化寄存器的所述第二代;
允许将所述第二生产者指令结果写入第一物理寄存器中;以及
禁止将所述第二生产者指令结果写入所述第一物理寄存器中。
2.根据权利要求1所述的方法,其进一步包括:
将新的物理寄存器分配至所述架构化寄存器的所述第二代;以及
如果所述新的物理寄存器与所述物理寄存器不相同,则释放所述物理寄存器。
3.根据权利要求1所述的方法,其中生成用于所述第一生产者指令的所述架构化寄存器的所述第一代包含标识重命名映射表RMT中与用于所述第一生产者指令的所述架构化寄存器的所述第一代相对应的条目。
4.(原始的)根据权利要求3所述的方法,其中将所述物理寄存器分配至所述架构化寄存器包含标识所述重命名映射表RMT中与用于所述第一生产者指令的所述架构化寄存器的所述第一代相关联的物理寄存器条目。
5.根据权利要求1所述的方法,其进一步包括:
确定指令为潜在的管线清除指令;以及
响应于关于所述指令为潜在的管线清除指令的所述确定复位在所述指令中的标识符。
6.根据权利要求1所述的方法,其中所述第一标识符包含指令序列标识符。
7.根据权利要求1所述的方法,其中所述第二标识符包含指令序列标识符。
8.根据权利要求1所述的方法,其中所述第一标识符包含令牌计数。
9.根据权利要求1所述的方法,其中所述第二标识符包含令牌计数。
10.根据权利要求1所述的方法,其中所述处理器为乱序处理器。
11.根据权利要求5所述的方法,其中所述第一指令为潜在的管线清除指令。
12.根据权利要求1所述的方法,其中所述架构化寄存器的所述第一和第二代是由指令集架构所限定的。
13.一种操作处理器的方法,其包括:
从处理器管线获得第一生产者指令,其中所述第一生产者指令包含第一生产者指令结果,且其中所述处理器管线包含数据转发网络;
生成用于所述第一生产者指令的架构化寄存器的第一代;获得第二生产者指令,其中所述第二生产者指令包含第二生产者指令结果;
生成所述架构化寄存器的第二代;
将物理寄存器分配至所述架构化寄存器的所述第二代;
允许将所述第二生产者指令结果写入所述物理寄存器中;以及
允许从所述数据转发网络读取所述第一生产者指令结果。
14.根据权利要求13所述的方法,其中所述处理器为乱序处理器。
15.根据权利要求13所述的方法,其中所述架构化寄存器的所述第一和第二代是由指令集架构所限定的。
16.一种处理器,其被配置成在管线中处理指令以生成至少一个架构化寄存器和至少一个与至少一个标识符相关联的指令结果,所述处理器包括:
重命名映射表RMT,其包含分别将至少一个架构化寄存器映射至至少一个物理寄存器的至少一个条目,其中在所述RMT中的至少一个条目与RMT标识符相关联;
物理寄存器堆PRF,其包含分别表示所述至少一个物理寄存器的至少一个条目,其中在所述PRF中的所述至少一个条目包含PRF标识符;以及
执行模块,其被配置成:
如果所述PRF标识符对应于所述指令结果标识符,则允许将所述指令结果写入所述物理寄存器中;以及
如果所述PRF标识符不对应于所述RMT标识符,则禁止将所述指令结果写入所述物理寄存器中。
17.根据权利要求16所述的处理器,其中所述指令结果标识符和所述PRF标识符包含令牌计数。
18.根据权利要求16所述的处理器,其中所述指令结果标识符和所述PRF标识符包含指令序列标识符。
19.根据权利要求16所述的处理器,其中所述处理器为乱序处理器。
20.根据权利要求16所述的处理器,其中所述PRF包含关于所述至少一个物理寄存器是空闲的或在用的指示。
21.一种非临时性计算机可读存储媒体,其包含当通过机器进行存取时会使所述机器执行操作的数据,所述操作包括:
从处理器管线获得第一生产者指令,其中所述第一生产者指令包含第一生产者指令结果,且其中所述处理器管线包含数据转发网络;
生成用于所述第一生产者指令的架构化寄存器的第一代;获得第二生产者指令,其中所述第二生产者指令包含第二生产者指令结果;
生成所述架构化寄存器的第二代;
将物理寄存器分配至所述架构化的所述第二代;
允许将所述第二生产者指令结果写入所述物理寄存器中;以及
允许从所述数据转发网络读取所述第一生产者指令结果。
22.根据权利要求21所述的非临时性计算机可读存储媒体,其进一步包含当通过所述机器进行存取时会使所述机器执行操作的数据,所述操作为:
将新的物理寄存器分配至所述架构化寄存器的所述第二代;以及
如果所述新的物理寄存器与所述物理寄存器不相同,则释放所述物理寄存器。
23.根据权利要求21所述的非临时性计算机可读存储媒体,其中生成用于所述第一生产者指令的所述架构化寄存器的所述第一代包含标识重命名映射表RMT中与用于所述第一生产者指令的所述架构化寄存器的所述第一代相对应的条目。
24.根据权利要求23所述的非临时性计算机可读存储媒体,其中将所述物理寄存器分配至所述架构化寄存器包含标识所述重命名映射表RMT中与用于所述第一生产者指令的所述架构化寄存器的所述第一代相关联的物理寄存器条目。
25.根据权利要求21所述的非临时性计算机可读存储媒体,其进一步包含当通过所述机器进行存取时会使所述机器执行确定所述第一生产者指令为潜在的管线清除指令的操作的数据。
26.根据权利要求21所述的非临时性计算机可读存储媒体,其中所述第一标识符包含指令序列标识符。
27.根据权利要求21所述的非临时性计算机可读存储媒体,其中所述第二标识符包含指令序列标识符。
28.根据权利要求21所述的非临时性计算机可读存储媒体,其中所述第一标识符包含令牌计数。
29.根据权利要求21所述的非临时性计算机可读存储媒体,其中所述第二标识符包含令牌计数。
30.根据权利要求21所述的非临时性计算机可读存储媒体,其中所述处理器为乱序处理器。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361845476P | 2013-07-12 | 2013-07-12 | |
US61/845,476 | 2013-07-12 | ||
US14/091,340 | 2013-11-27 | ||
US14/091,340 US9471325B2 (en) | 2013-07-12 | 2013-11-27 | Method and apparatus for selective renaming in a microprocessor |
PCT/US2014/046297 WO2015006659A1 (en) | 2013-07-12 | 2014-07-11 | Method and apparatus for selective renaming in a microprocessor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105359089A true CN105359089A (zh) | 2016-02-24 |
CN105359089B CN105359089B (zh) | 2017-12-26 |
Family
ID=52278112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480038318.7A Expired - Fee Related CN105359089B (zh) | 2013-07-12 | 2014-07-11 | 用于在微处理器中进行选择性重命名的方法和设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9471325B2 (zh) |
EP (1) | EP3019953A1 (zh) |
JP (1) | JP2016526745A (zh) |
KR (1) | KR20160031503A (zh) |
CN (1) | CN105359089B (zh) |
WO (1) | WO2015006659A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356420A (zh) * | 2021-12-28 | 2022-04-15 | 海光信息技术股份有限公司 | 指令流水线的处理方法及装置、电子装置及存储介质 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160232006A1 (en) * | 2015-02-09 | 2016-08-11 | Qualcomm Incorporated | Fan out of result of explicit data graph execution instruction |
US11429393B2 (en) * | 2015-11-11 | 2022-08-30 | Arm Limited | Apparatus and method for supporting out-of-order program execution of instructions |
US10572265B2 (en) | 2017-04-18 | 2020-02-25 | International Business Machines Corporation | Selecting register restoration or register reloading |
US10649785B2 (en) | 2017-04-18 | 2020-05-12 | International Business Machines Corporation | Tracking changes to memory via check and recovery |
US11010192B2 (en) | 2017-04-18 | 2021-05-18 | International Business Machines Corporation | Register restoration using recovery buffers |
US10545766B2 (en) | 2017-04-18 | 2020-01-28 | International Business Machines Corporation | Register restoration using transactional memory register snapshots |
US10782979B2 (en) | 2017-04-18 | 2020-09-22 | International Business Machines Corporation | Restoring saved architected registers and suppressing verification of registers to be restored |
US10740108B2 (en) | 2017-04-18 | 2020-08-11 | International Business Machines Corporation | Management of store queue based on restoration operation |
US10963261B2 (en) | 2017-04-18 | 2021-03-30 | International Business Machines Corporation | Sharing snapshots across save requests |
US10838733B2 (en) | 2017-04-18 | 2020-11-17 | International Business Machines Corporation | Register context restoration based on rename register recovery |
US10877768B1 (en) * | 2019-09-06 | 2020-12-29 | Microsoft Technology Licensing, Llc | Minimizing traversal of a processor reorder buffer (ROB) for register rename map table (RMT) state recovery for interrupted instruction recovery in a processor |
US11061677B1 (en) | 2020-05-29 | 2021-07-13 | Microsoft Technology Licensing, Llc | Recovering register mapping state of a flushed instruction employing a snapshot of another register mapping state and traversing reorder buffer (ROB) entries in a processor |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1237072A1 (en) * | 1999-09-08 | 2002-09-04 | Hajime Seki | Register renaming system |
EP0463628B1 (en) * | 1990-06-29 | 2003-08-20 | Compaq Computer Corporation | One cycle register mapping |
CN101030192A (zh) * | 2006-03-02 | 2007-09-05 | 国际商业机器公司 | 管理处理器的寄存器的方法和系统 |
CN101169710A (zh) * | 2006-10-26 | 2008-04-30 | 中国科学院计算技术研究所 | 对状态寄存器进行重命名的方法和使用该方法的处理器 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61253544A (ja) * | 1985-05-07 | 1986-11-11 | Hitachi Ltd | 情報処理装置 |
US5694564A (en) * | 1993-01-04 | 1997-12-02 | Motorola, Inc. | Data processing system a method for performing register renaming having back-up capability |
WO1995032466A1 (en) * | 1994-05-19 | 1995-11-30 | Vlsi Technology, Inc. | Flexible register mapping scheme |
US5740414A (en) * | 1995-02-14 | 1998-04-14 | Hal Computer Systems, Inc. | Method and apparatus for coordinating the use of physical registers in a microprocessor |
US6356918B1 (en) * | 1995-07-26 | 2002-03-12 | International Business Machines Corporation | Method and system for managing registers in a data processing system supports out-of-order and speculative instruction execution |
US5764970A (en) * | 1995-11-20 | 1998-06-09 | International Business Machines Corporation | Method and apparatus for supporting speculative branch and link/branch on count instructions |
US5996068A (en) * | 1997-03-26 | 1999-11-30 | Lucent Technologies Inc. | Method and apparatus for renaming registers corresponding to multiple thread identifications |
US6061777A (en) * | 1997-10-28 | 2000-05-09 | International Business Machines Corporation | Apparatus and method for reducing the number of rename registers required in the operation of a processor |
US6092175A (en) * | 1998-04-02 | 2000-07-18 | University Of Washington | Shared register storage mechanisms for multithreaded computer systems with out-of-order execution |
JP3948615B2 (ja) * | 2002-07-05 | 2007-07-25 | 富士通株式会社 | プロセッサ及び命令制御方法 |
US7506139B2 (en) | 2006-07-12 | 2009-03-17 | International Business Machines Corporation | Method and apparatus for register renaming using multiple physical register files and avoiding associative search |
US7624253B2 (en) | 2006-10-25 | 2009-11-24 | Arm Limited | Determining register availability for register renaming |
US20080148022A1 (en) * | 2006-12-13 | 2008-06-19 | Arm Limited | Marking registers as available for register renaming |
US7809930B2 (en) | 2007-01-24 | 2010-10-05 | Arm Limited | Selective suppression of register renaming |
CN101794214B (zh) | 2009-02-04 | 2013-11-20 | 世意法(北京)半导体研发有限责任公司 | 使用多块物理寄存器映射表的寄存器重命名系统及其方法 |
US8335912B2 (en) | 2009-04-22 | 2012-12-18 | Oracle America, Inc. | Logical map table for detecting dependency conditions between instructions having varying width operand values |
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 |
US8661230B2 (en) | 2011-04-15 | 2014-02-25 | International Business Machines Corporation | Allocation of counters from a pool of counters to track mappings of logical registers to physical registers for mapper based instruction executions |
-
2013
- 2013-11-27 US US14/091,340 patent/US9471325B2/en active Active
-
2014
- 2014-07-11 KR KR1020167003105A patent/KR20160031503A/ko not_active Application Discontinuation
- 2014-07-11 JP JP2016525797A patent/JP2016526745A/ja not_active Ceased
- 2014-07-11 WO PCT/US2014/046297 patent/WO2015006659A1/en active Application Filing
- 2014-07-11 CN CN201480038318.7A patent/CN105359089B/zh not_active Expired - Fee Related
- 2014-07-11 EP EP14748346.5A patent/EP3019953A1/en not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0463628B1 (en) * | 1990-06-29 | 2003-08-20 | Compaq Computer Corporation | One cycle register mapping |
EP1237072A1 (en) * | 1999-09-08 | 2002-09-04 | Hajime Seki | Register renaming system |
CN101030192A (zh) * | 2006-03-02 | 2007-09-05 | 国际商业机器公司 | 管理处理器的寄存器的方法和系统 |
CN101169710A (zh) * | 2006-10-26 | 2008-04-30 | 中国科学院计算技术研究所 | 对状态寄存器进行重命名的方法和使用该方法的处理器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356420A (zh) * | 2021-12-28 | 2022-04-15 | 海光信息技术股份有限公司 | 指令流水线的处理方法及装置、电子装置及存储介质 |
CN114356420B (zh) * | 2021-12-28 | 2023-02-17 | 海光信息技术股份有限公司 | 指令流水线的处理方法及装置、电子装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3019953A1 (en) | 2016-05-18 |
US9471325B2 (en) | 2016-10-18 |
WO2015006659A1 (en) | 2015-01-15 |
KR20160031503A (ko) | 2016-03-22 |
US20150019843A1 (en) | 2015-01-15 |
JP2016526745A (ja) | 2016-09-05 |
CN105359089B (zh) | 2017-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105359089A (zh) | 用于在微处理器中进行选择性重命名的方法和设备 | |
CN101377736B (zh) | 乱序执行微处理器以及宏指令处理方法 | |
CN103250131B (zh) | 包括用于早期远分支预测的影子缓存的单周期多分支预测 | |
CN106406814B (zh) | 处理器和将架构指令转译成微指令的方法 | |
CN104813281B (zh) | 用于指令的快速失败处理的装置和方法 | |
US20160055004A1 (en) | Method and apparatus for non-speculative fetch and execution of control-dependent blocks | |
CN105164650A (zh) | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 | |
WO2017030692A1 (en) | Storing narrow produced values for instruction operands directly in a register map in an out-of-order processor | |
CN107077329B (zh) | 用于实现和维持判定值的栈的方法和设备 | |
KR20100003309A (ko) | 파이프라인 프로세서에서 조건 명령 실행을 촉진시키기 위해 로컬 조건 코드 레지스터를 이용하기 위한 방법 및 장치 | |
TW202125287A (zh) | 用於矩陣運算加速器之指令的裝置,方法和系統 | |
US9904554B2 (en) | Checkpoints for a simultaneous multithreading processor | |
WO2008106208A1 (en) | Parallel prediction of multiple branches | |
US20140129809A1 (en) | Byte selection and steering logic for combined byte shift and byte permute vector unit | |
WO1994016385A1 (en) | System and method for assigning tags to instructions to control instruction execution | |
US20180181398A1 (en) | Apparatus and methods of decomposing loops to improve performance and power efficiency | |
US20190220284A1 (en) | Dynamic detection and prediction for store-dependent branches | |
US7024538B2 (en) | Processor multiple function units executing cycle specifying variable length instruction block and using common target block address updated pointers | |
JP4985452B2 (ja) | ベクトル処理装置 | |
US11080063B2 (en) | Processing device and method of controlling processing device | |
US7337304B2 (en) | Processor for executing instruction control in accordance with dynamic pipeline scheduling and a method thereof | |
US20220206791A1 (en) | Methods, systems, and apparatuses to optimize cross-lane packed data instruction implementation on a partial width processor with a minimal number of micro-operations | |
US20200150963A1 (en) | Processing device and method of controlling processing device | |
WO2021055057A1 (en) | Tracking and communication of direct/indirect source dependencies of producer instructions executed in a processor to source dependent consumer instructions to facilitate processor optimizations | |
EP1251425A2 (en) | Very long instruction word information processing device and system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171226 Termination date: 20210711 |