CN115867888A - 用于利用主-影子物理寄存器文件的方法和系统 - Google Patents
用于利用主-影子物理寄存器文件的方法和系统 Download PDFInfo
- Publication number
- CN115867888A CN115867888A CN202180043050.6A CN202180043050A CN115867888A CN 115867888 A CN115867888 A CN 115867888A CN 202180043050 A CN202180043050 A CN 202180043050A CN 115867888 A CN115867888 A CN 115867888A
- Authority
- CN
- China
- Prior art keywords
- shadow
- storage
- primary
- data
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 31
- 230000004913 activation Effects 0.000 claims abstract description 50
- 238000012546 transfer Methods 0.000 claims abstract description 45
- 238000013500 data storage Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 5
- 238000013507 mapping Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 10
- 230000008901 benefit Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 8
- 238000011084 recovery Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 101000924727 Homo sapiens Alternative prion protein Proteins 0.000 description 1
- 101000573901 Homo sapiens Major prion protein Proteins 0.000 description 1
- 102100025818 Major prion protein Human genes 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000006266 hibernation Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/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/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C19/00—Digital stores in which the information is moved stepwise, e.g. shift registers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1036—Read-write modes for single port memories, i.e. having either a random port or a serial port using data shift 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)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明涉及一种数据处理系统中的处理器(100),该处理器包括主‑影子物理寄存器文件(151)和重命名单元(114)。该主‑影子物理寄存器文件具有耦合到影子存储装置(118)的主存储装置(117)。该重命名单元耦合到该主‑影子物理寄存器文件。基于由该重命名单元验证的影子传输激活条件的发生,将该主存储装置中的数据从该主存储装置传输到该影子存储装置以进行存储。基于影子到主传输事件的发生,数据从该影子存储装置传输回该主存储装置,该影子到主传输事件包括例如该处理器对该主存储装置的刷新。
Description
背景技术
处理器通常利用物理寄存器文件(PRF)来存储供处理器的功能单元使用的数据。PRF可支持跨指令窗口的无序(OoO)指令执行和指令的推测执行。大指令窗口允许处理器拥有高性能,但也需要相当大的PRF。此外,当处理器所支持的执行单元的数量增加时,PRF需要支持附加的读取和写入,从而需要附加的寄存器和用于每个寄存器的附加的端口。这些附加的寄存器和端口使PRF成为实现具有宽执行宽度的大指令窗口的严重的物理设计瓶颈。先前提出的适应宽执行宽度的解决方案包括复制PRF以减少每个PRF的读取端口的数量;以及分级PRF方案,这些分级PRF方案涉及具有复杂机制的PRF的分级结构以跟踪和移动PRF之间的条目。
活动PRF条目的平均寿命也影响其可重用性,并且因此影响PRF的有效大小。在OOO和推测性执行的情况下,PRF的大部分有效寿命都用于在恢复模式下等待,其中PRF没有被主动读取,并且在错误预测的推测执行的情况下处于等待状态。在处理PRF的有效寿命方面的改进有效地提高了可重用性,并且为扩大的PRF提供了一些缓解。
附图说明
通过参考附图,本公开可以被更好地理解,并且其许多特征和优点对于本领域技术人员是显而易见的。在不同附图中使用相同的附图标记表示类似或相同的项目。
图1是根据一些实施方案的处理器的框图。
图2是根据一些实施方案的图1的处理器的主-影子物理寄存器文件的框图。
图3是根据一些实施方案的图1的处理器的主-影子物理寄存器文件的主-影子元件的框图。
图4是根据一些实施方案的图1的处理器的主-影子物理寄存器文件的主-影子元件的框图。
图5是示出根据一些实施方案的用于在图1的处理器的主-影子PRF中执行数据存储的方法的流程图。
具体实施方式
图1至图5示出了用于在主-影子物理寄存器文件中实现数据存储的实施方案。主-影子物理寄存器文件包括主-影子物理寄存器,这些主-影子物理寄存器包括主存储元件(“主存储装置”)和影子存储元件(“影子存储装置”)。主存储装置是被配置为存储活动数据(例如当前在指令的执行过程中使用的数据)的存储装置。影子存储装置是耦合到存储休眠数据(例如当前未在执行的数据)的主存储装置的存储装置。为了促进数据在主-影子物理寄存器文件中的存储,数据最初被存储在主存储装置中,并且基于影子传输激活条件或多个影子传输激活事件(影子激活事件)的发生,随后被传输到主-影子物理寄存器中的影子存储装置。通过使用主存储装置和影子存储装置的组合来存储数据,与传统PRF相比,处理器具有更大的物理寄存器文件配置文件和更有效的条目,而不增加读取或写入复用器的大小。
寄存器重命名是在指令已经被解码之后将架构寄存器映射到处理器中的物理寄存器的技术。在一些实施方案中,使用架构寄存器编号(ARN)来表示架构寄存器,并且使用物理寄存器编号(PRN)来表示物理寄存器。在一些实施方案中,为了在寄存器重命名过程中已被重命名的主-影子物理寄存器中存储数据,主-影子控制器确定是否已经发生了影子传输激活条件或多个影子传输激活事件(影子激活事件)。在一些实施方案中,影子激活事件包括确定正在由处理器执行的第一指令已经完成(即,第一指令已经将操作的结果写入与第一物理寄存器编号(PRN)相关联的主-影子物理寄存器)。在一些实施方案中,影子激活事件包括确定正在由处理器的重命名单元重命名的第一指令的结果ARN(即,与在重命名过程中使用的指令相关联的结果ARN)等同于正在由处理器的重命名单元重命名的第二指令的结果ARN。在一些实施方案中,影子激活事件包括确定与主存储装置相关联的影子存储装置可用于数据存储。在另一实施方案中,影子激活事件包括例如由处理器的退出队列确定正在利用主-影子物理寄存器文件的主存储装置的第一指令已经退出。因此,在一些实施方案中,为了将数据从主存储装置传输到影子存储装置,主-影子控制器确定第一影子激活事件和第二影子激活事件是否发生。在一些实施方案中,为了将数据从主存储装置传输到影子存储装置,主-影子控制器确定影子传输激活条件是否已经发生。当主-影子控制器确定已经发生影子激活条件时,与主存储装置相关联的影子存储装置可用,并且数据从主存储装置被传输到影子存储装置。
图1示出了根据一些实施方案的利用主-影子物理寄存器文件151来存储数据的处理器100。所例示的处理器100可包括例如基于x86指令集架构(ISA)、ARM ISA等的中央处理单元(CPU)核心。在一些实施方案中,处理器100实现多个此类处理器内核,并且在不同的实施方案中,处理器在各种电子设备中的任何一种电子设备中实现,诸如笔记本计算机、台式计算机、平板计算机、服务器、支持计算的蜂窝电话、个人数字助理(PDA)、机顶盒等。
在所描绘的示例中,处理器100包括指令高速缓存106、提取单元104、解码单元108、一个或多个浮点单元110和一个或多个定点单元112(通常也称为“整数执行单元”)。在一些实施方案中,提取单元104耦合到指令高速缓存106。指令高速缓存106耦合到解码单元108。解码单元108耦合到浮点单元110和定点单元112。
指令高速缓存106存储由提取单元104响应于需求提取操作(例如,请求由程序计数器标识的指令流中的下一个指令的提取)或响应于推测性预取操作而提取的指令数据。解码单元108将由提取单元104提取的指令解码为将由浮点单元110或定点单元112执行或实行的一个或多个操作。在微编码处理器架构中,该解码包括将指令转换为一个或多个微操作(uOp),由此每个uOp由对应的操作码值标识并且可在固定点单元112内单独执行。将涉及浮点计算的那些操作调度到浮点单元110以供执行,而将涉及定点计算的操作调度到定点单元112。
定点单元112包括重命名单元114、调度器单元128、拣选器单元130、主-影子物理寄存器文件(MS-PRF 150)、加载/存储单元(LSU)120,以及一个或多个执行(EX)单元122,诸如一个或多个算术逻辑单元(ALU),以及一个或多个地址生成(AG)单元124。重命名单元114耦合到调度器单元128、拣选器单元130和退出队列113。调度器单元128和拣选器单元130耦合到MS-PRF 151。MS-PRF 151耦合到执行单元122和地址生成单元124。执行单元122和地址生成单元124耦合到LSU 120。LSU 120耦合到存储器层级结构,该存储器层级结构包括一级或多级高速缓存(例如,L1高速缓存、L2高速缓存等),系统存储器(诸如系统RAM)和一个或多个大容量存储设备(诸如固态驱动器(SSD)或光学驱动器)。
MS-PRF 151包括利用主存储装置117和影子存储装置118来存储数据的主-影子物理寄存器(在图2中描绘为MSPR 230)。在一些实施方案中,使用具有多个读取和写入端口的静态随机存取存储器(SRAM)来实现MS-PRF 151。与传统处理器中使用的PRF不同,MS-PRF151包括主存储装置117和影子存储装置118。主存储装置117是被配置为存储有效数据(即,当前在指令的执行中使用的数据)的存储装置。影子存储装置118是耦合到存储休眠数据(即,当前未在执行的数据)的主存储装置的存储装置。例如,当数据作为数据处理操作的一部分被操作时,数据被存储在主-影子物理寄存器文件150中。
重命名单元114包括主-影子控制器115、主空闲列表141、影子空闲列表142、PRN完成向量或向量143、传输指示符144和寄存器别名表(RAT)映射145(也称为推测映射)。在一些实施方案中,代替RAT映射145,重命名单元114包括RAT映射147、主-影子空闲列表146、参考向量148和线程标识符(TID)掩码149。在一些实施方案中,参考向量148是由主-影子控制器115用来确定PRN是否可用于重命名的数据结构。在一些实施方案中,当利用参考向量148时,不需要完成向量143。在一些实施方案中,参考向量148等同于完成向量143,但还包括检查调度器单元128中的引用的附加条件。主-影子控制器115用于管理主-影子物理寄存器文件151的寄存器重命名。主空闲列表141是用于指示主存储装置117中的哪些主存储元件可用于寄存器重命名的数据结构。影子空闲列表142是用于指示影子存储装置118中的哪些影子存储元件可用于从例如主存储装置117传输的数据结构。PRN完成向量143是用于指示哪些指令已经在定点单元11中完成的数据结构。传输指示符144是用于指示数据是否已经从主存储装置117传输到影子存储装置118的数据结构。在一些实施方案中,在传输指示符144中用于指示数据是否已经从主存储装置117传输到影子存储装置118的位被称为例如颜色位(表示为例如颜色位黑色或颜色位红色)。RAT映射145是在寄存器重命名过程中将架构寄存器编号(ARN)映射到物理寄存器编号(PRN)的数据结构。RAT映射147是在寄存器重命名过程中将架构寄存器编号(ARN)映射到物理寄存器编号(PRN)的数据结构的另选形式。如前所述,参考向量148是由主-影子控制器115用来确定PRN是否可用于重命名的数据结构。在一些实施方案中,TID掩码149是例如双向同时多线程(SMT)机器的每PRN包括一个位的数据结构或向量,指示主存储装置117是否与特定线程(例如,线程0或线程1)相关联或属于该特定线程。
在定点单元112的操作中,重命名单元114从解码单元108接收操作(通常以一个或多个操作码的形式)。这些调度的操作通常还包括或引用在所表示的操作的执行中使用的关联信息,诸如存储操作数数据的存储器地址、存储操作数数据的架构寄存器、一个或多个常数值(也称为“即时值”)等。
重命名单元114和调度器单元128控制EX单元122和AG单元124之间的操作的选择性分配,由此待执行的操作在调度器单元128中排队,然后由拣选器130从中拣选,以便发出到对应的EX单元或AG单元。
通常,调度器单元128的每个队列条目包括用于存储操作有效载荷或操作标识符(例如,用于操作的操作码)的字段、用于包含用于操作的源操作数的主-影子物理寄存器的地址或其他标识符的字段、用于存储将用于操作的任何即时值或位移值的字段,以及标识其中将存储对应的操作的执行结果的主-影子物理寄存器的目的地或结果字段。
拣选器130监测调度器单元128以标识准备用于执行的操作,并且在拣选可用操作并且验证其操作数准备就绪并且可用时,将操作调度到EX单元或AG单元。
拣选器130将需要检索或存储数据的操作(诸如加载、存储或加载/存储操作)调度到地址生成单元124,该地址生成单元计算与操作相关联的存储器地址并且引导LSU 120使用所生成的地址来执行对应的存储器访问。例如,对于加载操作,所计算的存储器地址被提供给LSU 120处的加载队列(未示出)。LSU 120从加载队列中检索存储器地址,并且从存储器层级结构中检索存储在存储器地址处的数据。需要数字操纵或其他算术计算的操作被调度到适当的执行单元122用于执行。
由AG单元124执行的地址生成操作和由EX单元122执行的算术运算通常利用操作数数据,其形式为存储在源寄存器中的操作数或即时/移位值中的一者或两者。在执行操作期间使用的即时/位移值与来自调度器单元128的操作一起被调度到EX/AG单元。从MS-PRF151读取存储在主-影子物理寄存器的主存储装置117中的源操作数,并且将其提供给对应的EX/AG单元以用于执行该操作。通常,通过发起对MS-PRF 151的MS-PRF读取来获得这些源操作数。在一些实施方案中,通常不期望操作数直接来源于例如影子副本。
由AG单元124/LSU 120执行的加载操作和由EX单元122执行的算术操作导致将被存储在主-影子物理寄存器中的数据被标识为加载操作或算术运算的目的地。因此,EX单元122和LSU 120中的每一者在生成结果(通过完成EX单元122的算术运算或通过从LSU 120的存储器层级结构加载数据)时发起对加载指令的目的地的MS-PRF写入,在使用图1所例示的实施方案中,该目的地是主存储装置117。
定点单元112包括退出队列113,该退出队列存储等待退出或处于退出过程中的指令。主空闲列表141和影子空闲列表142包括与主-影子物理寄存器文件151中的主-影子物理寄存器相关联的条目。如前所述,主空闲列表141和影子空闲列表142中的条目指示主-影子物理寄存器文件151中的对应的主-影子物理寄存器的主存储元件和/或影子存储元件对于寄存器重命名是“空闲的”还是“可用的”,使得主-影子物理寄存器的主存储装置117或影子存储装置118可例如被分配给所解码的指令,用于存储或其他飞行中操作。
在一些实施方案中,影子空闲列表142中的每个条目与主空闲列表141中的条目相关联。在一些实施方案中,主-影子物理寄存器文件151包括72个主-影子物理寄存器,并且因此,主空闲列表141和影子空闲列表142可包括对应于主-影子物理寄存器的多达72个条目。即,在一些实施方案中,大小主空闲列表141等于主-影子物理寄存器文件151中的主-影子元件的数量,并且指示主-影子物理寄存器文件151中的主存储装置是否可用于存储。在一些实施方案中,影子空闲列表142的大小等于主-影子物理寄存器151中的主-影子元件的数量,并且指示主-影子物理寄存器文件151中的影子存储装置是否可用于存储。
退出队列113被配置为当指令已经退出时利用退出映射190来发信号通知主空闲列表141和影子空闲列表142,使得当前被映射为由退出指令引用的目的地架构寄存器的主-影子物理寄存器可以被释放以分配给其他指令或操作,因为退出指令将新的主-影子物理寄存器映射到该架构寄存器。
在将操作存储在调度器单元128中之前,重命名单元114执行寄存器重命名,由此将外部操作数名称(即,架构寄存器名称(ARN))转换为内部操作数名称(即,物理寄存器名称(PRN))。该重命名过程包括,例如,重命名单元114评估包括待排队的操作的操作子集以标识与操作相关联的源和目的地之间的任何依赖性,然后将架构寄存器映射到主-影子物理寄存器文件151中的主-影子物理寄存器,以避免错误的依赖性并且促进独立操作的并行执行。
在操作中,在一些实施方案中,使用提取单元104提取的第一指令被解码并且从解码单元108调度并且在重命名单元114处被接收。重命名单元114从解码单元108接收用于经解码的第一指令的操作。所调度的操作包括表示存储源操作数数据的位置的架构表示的源ARN,以及标识将存储对应的操作的执行结果的ARN的目的地或结果ARN。重命名单元114通过确定主列表空闲列表141中的哪些PRN和相关联的主-影子物理寄存器可用于重命名源ARN和目的地ARN来开始重命名过程。因此,在一些实施方案中,第一指令与表示第一操作数的架构位置的第一源ARN(第一ARN)、表示第二操作数的架构位置的第二源ARN(第二ARN),以及表示将存储对应的操作的执行结果的位置的第三结果ARN(第三ARN)相关联。在一些实施方案中,根据被执行以生成结果ARN的操作,第一指令可以与更多或更少的源ARN相关联。
重命名单元114的主-影子控制器115通过评估与主空闲列表141中的PRN相关联的位是被断言还是被取消断言来确定主空闲列表141中的哪些PRN可用于重命名。例如,当断言与主空闲列表141中的PRN相关联的位时,PRN可用于存储并且在重命名过程中使用。当主空闲列表141中的PRN被取消断言时,PRN当前不可用于重命名过程。
在一些实施方案中,对于由重命名单元114接收的第一指令,从RAT映射145读取与第一源ARN(第一ARN)相关联的第一PRN,从RAT映射145读取与第二源ARN(第二ARN)相关联的第二PRN。即,从RAT映射145读取源ARN(第一源ARN和第二源ARN)的PRN。在一些实施方案中,当主-影子控制器115确定主空闲列表141中的第三PRN可用于重命名时,将第三结果ARN(第三ARN)重命名为第三PRN。换句话讲,在一些实施方案中,结果或目的地ARN(第三ARN)的PRN是从主空闲列表141弹出的唯一PRN。在弹出主空闲列表141之后,将PRN映射写入RAT映射145,使得利用所映射的PRN来引用第三ARN的后续指令。因此,引用架构寄存器(例如,第一ARN、第二ARN和第三ARN)的事务使用由重命名单元114执行的映射从主存储装置117处理(例如,写入或读取)由物理寄存器编号(例如,第一PRN、第二PRN和第三PRN)指示的主-影子物理寄存器文件151中的对应的主-影子物理寄存器。
在一些实施方案中,在固定点单元112处理第一指令并且对应于第一指令的数据已被写入主存储装置117时或在此之后,由提取单元104提取第二指令并且由解码单元108解码并且调度第二指令。类似于第一指令,在一些实施方案中,第二指令与第一源ARN、第二源ARN和第三结果ARN相关联。重命名单元114接收经解码的第二指令,并且通过确定主列表空闲列表141中的哪些PRN和相关联的主-影子物理寄存器可用于重命名来开始重命名过程。类似于第一指令的重命名过程,重命名单元114从RAT映射145读取源ARN的PRN,并且主-影子控制器115通过评估与主空闲列表141中的PRN相关联的位是被断言还是被取消断言来确定主空闲列表141中的哪些PRN可用于重命名。此外,主-影子控制器115确定存储在主存储装置117中的数据是否来自先前的指令例如第一指令的执行,是否可传输到影子存储装置118。
在一个实施方案中,为了确定存储在主存储装置117中的数据是否可传输到影子存储装置118,主-影子控制器115确定影子激活条件是否已经发生或已经被满足。在一些实施方案中,为了将存储在主存储装置117中的数据传输到影子存储装置118,发生三个影子激活事件。在一些实施方案中,影子激活事件包括确定影子存储装置118是否可用于存储,先前的指令是否已经完成(即,先前的指令是否已经将操作的结果写入与PRN相关联的主-影子物理寄存器),以及第二指令的结果ARN是否等同于第一指令的结果ARN(即,后续指令的目的地ARN是否等同于当前指令的目的地ARN)。因此,在一些实施方案中,当主-影子控制器115确定第一影子激活事件、第二影子激活事件和第三影子激活事件已经发生时,将数据从主存储装置117传输到影子存储装置118。
如前所述,主-影子控制器115通过评估影子空闲列表142中的逻辑值是被断言(不可用)还是被取消断言(可用)来确定与主存储装置118相关联的影子存储装置118是空闲的。主-影子控制器115通过评估与PRN相关联的PRN完成向量143中的逻辑值来确定第一指令是否已经完成,当被断言时,指示对与PRN相关联的主存储装置117的写入操作已经完成并且被写入主-影子物理寄存器文件151。
当主-影子控制器115确定先前的指令(在这种情况下,第一指令)已经完成(即,先前的指令已经将操作的结果写入与PRN相关联的物理寄存器)时,第二指令的结果ARN等同于第一指令的结果ARN,并且影子存储装置118可用于存储,主-影子控制器115发信号通知主-影子物理寄存器151将数据从主存储装置117传输到相关联的影子存储装置118。在一些实施方案中,PRN空间和ARN空间是正交的,即,写入与第一指令相同的ARN的第二指令不需要获得与第一指令相同的PRN。主-影子物理寄存器151将数据从主存储装置传输到相关联的影子存储装置。
在另一实施方案中,为了确定存储在主存储装置117中的数据是否可传输到影子存储装置118,主-影子控制器115确定是否已经发生了附加的影子激活事件。即,主-影子控制器115确定利用主存储装置117的第一指令是否已经退出。当主-影子控制器115确定第一指令已经退出时,主-影子控制器115发信号通知主-影子物理寄存器151将数据从主存储装置117传输到相关联的影子存储装置118。主-影子物理寄存器151将数据从主存储装置117传输到相关联的影子存储装置118。
在将数据从主存储装置117传输到相关联的影子存储装置118之后,主-影子控制器115更新主空闲列表141以指示数据已经被传输到影子存储装置118的主存储装置117现在可用于重命名和存储目的。此外,主-影子控制器115更新影子空闲列表142以指示现在包含已经从主存储装置117传输的数据的影子存储装置118不再可用。
在一些实施方案中,为了将数据从影子存储装置118传输到主存储装置117,主-影子控制器115确定是否已经发生了影子到主传输事件。即,主-影子控制器115确定与影子存储装置118相关联的主存储装置117是否已经被刷新或存在误预测。当主-影子控制器115确定主存储装置117未被刷新时,存储在主存储装置117中的数据保持在主存储装置117中,直到数据被读取或数据变为休眠。当主-影子控制器115确定主存储装置117已被刷新时,来自影子存储装置118的数据被传输到与影子存储装置118相关联的主存储装置117。已经临时存储在影子存储装置118中并且被传输回主存储装置117的数据现在可用于读取或恢复操作。
图2示出了根据一些实施方案的图1的处理器的主-影子物理寄存器文件151。主-影子物理寄存器文件(MS-PRF)151包括写入复用器(MUX)210-1至210-N、主-影子物理寄存器(MSPR)230-1至230-N,以及读取复用器(MUX)220。在图2中提供的示例的一个实施方案中,写入MUX 210-1的输出端耦合到MSPR 230-1的输入端,写入MUX 210-2的输出端耦合到MSPR 230-2的输入端,并且写入MUX 210-3的输出端耦合到MSPR 230-3的输入端。此外,MSPR 230-1的输出端耦合到读取MUX 220的输入端,MSPR 230-2的输出端耦合到读取MUX220的输入端,并且MSPR 230-3的输出端耦合到读取MUX 220的输入端。
每个MSPR 230包括多个主-影子元件(MSE),下面将参考图2详细描述。在一些实施方案中,例如,对于N位MSPR 230,在每个MSPR 230中包括N个MSE。MS-PRF 151包括多个MSPRM,其中M是待存储在MSPR中的位的数量。
对于写入操作,除了接收时钟信号263和包括影子恢复启用信号290、主写入启用信号261、影子写入启用信号262的控制信号211之外,MS-PRF 151还在MUX 210处使用写入索引270接收PRN,该写入索引指示MSPR 230是将要存储输入数据280的物理寄存器。影子恢复启用信号290是指示存储在MSPR 230的影子存储装置中的影子数据是否将被传输到MSPR230的主存储装置的信号(在图3中进一步详细描述)。主写入启用信号261是用于启用或禁用MS-PRF 151的主写入能力(即,启用对应的MSPR 230中的主存储装置)的信号。影子写入启用信号262用于启用或禁用MS-PRF 151的影子写入能力。即,影子写入启用261启用对应的MSPR 230的影子存储能力。时钟信号263是用于触发读取和写入操作的传统时钟信号,但在一些实施方案中,它与主写入启用信号261和影子写入启用信号262结合使用,以启用或禁用主存储写入和影子存储写入能力,如下面参考图3所述。
MS-PRF文件151在写入索引270处接收PRN,并且使用MUX 210选择对应的MSPR 230来存储输入数据280。在一些实施方案中,输入数据280和控制信号299被提供给已经由MUX210选择的MSPR 230。所选择的MSPR 230接收控制信号299的主写入启用信号261和时钟信号263,并且当这两个信号都处于逻辑高电平时,启用所选择的MSPR 230的主存储元件233(例如,存储元件,包括但不限于图3所描绘的多个主触发器),并且将输入数据280写入MSPR230的主存储元件。
除了时钟信号263之外,所选择的MSPR 230还接收影子写入启用信号262,该影子写入启用信号在被断言时用于指示存储在MSPR 230的主存储元件233中的数据是休眠的并且应当被传输到MSPR 230的影子存储元件234。当影子写入启用信号262和时钟信号263处于逻辑高值时,在MSPR 230的主存储元件233中的数据被存储在MSPR 230的影子存储元件234中。在存储在主存储元件233中的数据被传输到影子存储元件234之后,MSPR 230的主存储元件233可用于存储附加的输入数据280。
在一些实施方案中,当存储在影子存储元件234中的影子存储数据需要用于恢复或后续读取操作时,使用影子恢复启用信号290从影子存储元件234间接地调用影子存储数据。即,影子恢复启用信号290被断言,并且存储在所选择的MSPR 230的影子存储元件234中的数据被传输到主存储元件233。存储在所选择的MSPR 230的主存储元件233中的数据可经由MUX 220获得,并且作为读出数据281提供给读取端口272。
在一些实施方案中,当读取操作需要存储在影子存储元件234中的影子存储数据时,使用影子恢复启用信号290直接从影子存储元件234调用影子存储数据。即,影子恢复启用信号290被断言,并且存储在所选择的MSPR 230的影子存储元件234中的数据除了被直接提供给主存储元件233之外或者代替被直接提供给该主存储元件,经由MUX 220被直接提供给读取端口272作为读取输出数据281。在一些实施方案中,仅在主或影子读取复用器具有例如本地选择线时才可能将存储在影子存储元件234中的数据作为读取输出数据281提供给读取端口272。在一些实施方案中,MSPR 230被配置为提供本地选择线信息作为附加位(M+1)。
图3示出了根据一些实施方案的在图1和图2的主-影子物理寄存器文件151中使用的主-影子元件300。存储在主-影子元件300的影子存储装置中的数据在读取或恢复操作期间经由主存储装置被间接访问。尽管在图3中仅描绘了单个主-影子元件(MSE)300,但使用多个主-影子元件300允许在图2所描绘的主-影子物理寄存器230中存储多个数据,其中每个主-影子物理寄存器230具有M位数量的MSE。主-影子元件300包括写入复用器(MUX)310、“与”门341、“与”门342、主触发器320和影子触发器330。写入MUX 310由主-影子元件300用来选择将哪个数据(输入数据380或影子输出数据381)提供给MFF 320。“与”门341由主-影子元件300用来生成MFF启用信号344,该MFF启用信号基于主写入启用信号(主写入启用)361和时钟信号363的逻辑值来启用或禁用MFF 320用于数据存储。“与”门342由主-影子元件300用来生成SFF启用信号(SFF启用)345,该SFF启用信号基于影子写入启用信号362和时钟信号363的逻辑值来启用或禁用SFF 330用于数据存储。MFF 320由主-影子元件300用来基于影子恢复启用信号(影子恢复启用)390来存储输入数据380或影子输出数据381。SFF330由主-影子元件300用来基于影子写入启用信号362和时钟363的逻辑值来存储从MFF320提供的输出数据382。
主触发器320包括用于接收待存储在主触发器320中的数据值的写入输入端321,用于提供从当前存储在主触发器320中的SFF 330提供的常规数据值或影子数据值的读取输出端322,以及响应于由“与”门341输出的MFF启用信号344的写入启用输入端323。影子触发器330包括用于接收待存储在影子触发器320中的数据值(例如,输出数据382)的写入输入端331,用于提供影子输出数据值的读取输出端332(例如,从当前存储在影子触发器330中的SFF 330提供),以及响应于由“与”门342输出的SFF启用信号345的写入启用输入端333。输出数据382是从MFF 320输出的数据,当SFF 330已被启用用于影子存储时,该数据被读取并且作为输入数据提供以存储在SFF 330中。
在操作中,为了将数据写入MFF 320,将主写入启用信号361设置为逻辑高值,并且因此,当时钟信号363从逻辑低值转变为逻辑高值时,断言MFF启用信号344并且启用MFF320以用于存储。即,MFF 320可根据影子恢复启用390是被断言还是被取消断言而将输入数据380写入MFF 320或将影子输出数据381写入MFF 320。
例如,当影子恢复启用390被取消断言(例如,低逻辑电平)并且MFF启用信号344处于逻辑高电平(即,主写入启用信号361为逻辑高电平并且时钟363为逻辑高电平)时,启用MFF 320并且由写入MUX 310选择输入数据380以存储在MFF 320中。因此,存储在MFF 320中的输入数据380可用于在读取输出端322处被读取或在输入端处被提供给SFF 330。另选地,当断言影子恢复启用390并且MFF启用信号344处于逻辑高电平时,在写入MUX 310处选择影子输出数据381并且将其存储在MFF 320中。因此,先前存储在SFF 330中的数据可用于在读取输出端322处被读取。
如前所述,主-影子元件300还能够将输出数据382写入SFF 330。为了将输出数据382写入SFF 330,影子写入启用信号362被设置为逻辑高电平,并且因此,当时钟363转变为高逻辑电平时,断言SFF启用信号345(即,“与”门342的输出),并且启用SFF 330以用于存储,并且将输出数据382写入SFF 330。存储在SFF 330中的输出数据382可用于恢复操作或在MUX 310处断言影子恢复启用信号390时被读取。
在读取操作期间,当对存储在MFF 320中的数据作出读取请求时,存储在MFF 320中的数据在MFF 320的输出端处被提供为输出数据382。在一些实施方案中,输出数据382是先前未存储在SFF 330中的数据(即,由MUX 310直接输出的输入数据380)或先前已经存储在SFF 330中的数据(即,影子输出数据381)。例如,在一些实施方案中,当对存储在SFF 330中的影子数据进行恢复操作或作出读取请求时,在写入MUX 310处断言影子恢复启用390,并且,存储在SFF 330中的影子输出数据381被提供给MUX 310并且被写入MFF 320,而不是将输入数据380选择为要在写入MUX 310的输出端处提供的数据。现在可在读取输出端322处从MFF 320读取影子输出数据381作为输出数据382。
图4示出了根据一些实施方案的在图1的主-影子物理寄存器文件151中使用的主-影子元件400。在读取或恢复操作期间,从影子存储装置直接访问存储在主-影子元件300的影子存储装置中的数据。尽管在图4中仅描绘了单个主-影子元件(MSE)400,但使用多个主-影子元件400允许在图2所描绘的主-影子物理寄存器230中存储多个数据,其中每个主-影子物理寄存器230具有M位数量的MSE。主-影子元件400包括写入复用器(MUX)410、“与”门441、“与”门442、主触发器(MFF)420、影子触发器(SFF)430和MUX 470。
MUX 410由主-影子元件400用来选择将哪个数据(输入数据480或影子输出数据481)提供给MFF 420。“与”门441由主-影子元件400用来生成MFF启用信号444,该MFF启用信号基于主写入启用信号(主写入启用)461和时钟信号463的逻辑值来启用或禁用MFF 420用于数据存储。例如,当主写入启用信号461为高并且时钟信号463为高时,MFF启用信号444被断言并且MFF 420被启用以被写入。然而,当主写入启用信号461或时钟信号463为低时,MFF启用信号444为低并且MFF 420被禁用并且无法被写入。
“与”门442由主-影子元件400用来生成SFF启用信号(SFF启用)445,该SFF启用信号基于影子写入启用信号462和时钟信号463的逻辑值来启用或禁用SFF 430用于数据存储。例如,当影子写入启用信号462为高并且时钟信号463为高时,SFF启用信号445被断言并且SFF 430被启用以被写入。然而,当影子写入启用信号462或时钟信号463为低时,SFF启用信号445为低并且SFF 430被禁用并且无法被写入。MFF 420由主-影子元件400用来基于影子恢复启用信号(影子恢复启用)490来存储输入数据480或影子输出数据481。SFF 430由主-影子元件400用来基于影子写入启用信号462和时钟信号463的逻辑值来存储从MFF 420提供的MFF输出数据2。
写入MUX 470由主-影子元件400用来基于早期选择信号492的逻辑值来选择MFF输出数据482或影子输出数据481作为到MUX 470的输出。早期选择信号492与MUX 470相结合,允许直接读取影子输出数据481。因此,当早期选择信号492被断言(逻辑高)时,与图3的主-影子元件300中的SFF 330不同,主-影子元件400的SFF 430在读取操作期间直接可读。当早期选择信号492被取消断言(逻辑低)时,MFF输出数据482被选择为到MUX 470的输出。
类似于图3的主-影子元件300中的主触发器320,主触发器420包括用于接收待存储在主触发器420中的数据值的写入输入端421、用于提供从当前存储在主触发器420中的SFF 430提供的常规数据值或影子数据值的读取输出端422,以及响应于由“与”门441输出的MFF启用信号444的写入启用输入端423。影子触发器430包括用于接收待存储在影子触发器430中的数据值(例如,MFF输出数据482)的写入输入端431、用于提供影子输出数据值的读取输出端432(例如,从当前存储在影子触发器430中的SFF 430提供),以及响应于由“与”门442输出的SFF启用信号445的写入启用输入端433。MFF输出数据482是从MFF 420输出的数据,当SFF 430已被启用用于影子存储时,该数据被读取并且作为输入数据提供以存储在SFF 430中。
在操作中,为了将数据写入MFF 420,将主写入启用信号461设置为逻辑高值,并且因此,当时钟信号463从逻辑低值转变为逻辑高值时,断言MFF启用信号444并且启用MFF420以用于存储。即,MFF 420可根据影子恢复启用信号490是被断言还是被取消断言而将输入数据480写入MFF 420或将影子输出数据481写入MFF 420。
例如,当影子恢复启用信号490被取消断言(例如,低逻辑电平)并且MFF启用信号444处于逻辑高电平(即,主写入启用信号461为逻辑高电平并且时钟信号463为逻辑高电平)时,启用MFF 420并且由写入MUX 410选择输入数据480以存储在MFF 420中。因此,存储在MFF 420中的输入数据480可用于在读取输出端422处被读取或在输入端处被提供给SFF430。另选地,当断言影子恢复启用信号490并且MFF启用信号444处于逻辑高电平时,在写入MUX 410处选择影子输出数据481并且将其存储在MFF 420中。因此,先前存储在SFF 430中的数据可用于在读取输出端422处被读取。
如前所述,主-影子元件400还能够将MFF输出数据482写入SFF 430。为了将MFF输出数据482写入SFF 430,影子写入启用信号462被设置为逻辑高电平,并且因此,当时钟信号463转变为高逻辑电平时,断言SFF启用信号445(即,“与”门442的输出),并且启用SFF430以用于存储,并且将MFF输出数据482写入SFF 430。存储在SFF 430中的MFF输出数据482可用于在MUX 410处断言影子恢复启用信号490时被读取。
在一些实施方案中,在读取操作期间,当对存储在SFF 430中的数据作出读取请求时,存储在SFF 430中的数据在SFF 430的输出端处被提供为影子输出数据481。然后提供影子输出数据481作为MUX 470的输出数据483。在一些实施方案中,在读取操作期间,当对存储在MFF 420中的数据作出读取请求时,存储在MFF 420中的数据在MFF 420的输出端处被提供为MFF输出数据482。在一些实施方案中,MFF输出数据482是先前未存储在SFF 430中的数据(即,由MUX 410直接输出的输入数据480)或先前已存储在SFF 430中的数据(即,影子输出数据481)。例如,在一些实施方案中,当对存储在SFF 430中的影子数据作出读取请求时,在写入MUX 410处断言影子恢复启用信号490,并且,存储在SFF 430中的影子输出数据481被提供给MUX 410并且被写入MFF 420,而不是将输入数据480选择为要在写入MUX 410的输出端处提供的数据。现在可在读取输出端422处从MFF 420读取影子输出数据481作为MFF输出数据482,该MFF输出数据作为MUX 470的输出数据483提供。
图5是示出根据一些实施方案的用于在图1的处理系统的主-影子PRF中执行数据存储的方法500的流程图。参考图1和图2描述方法500。
方法500开始于框502,其中处理器100接收并且解码第一指令。在框504处,重命名单元114重命名第一指令。在框510处,处理器100将与第一指令相关联的数据存储在主-影子物理寄存器151的主存储装置117中。在框512处,处理器100接收并且解码第二指令。
在框520处,主-影子控制器115确定影子激活条件是否已经发生或已被满足。在一些实施方案中,第一影子激活事件包括例如已经完成的先前的指令(即,先前的指令已经将操作的结果写入与第一PRN相关联的主-影子物理寄存器)。在一些实施方案中,第二影子激活事件包括由主-影子控制器115确定由重命名单元114接收的第二指令的第三ARN等同于第一指令的第三ARN(即,由重命名单元114接收的先前的指令的目的地ARN是否等同于由重命名单元114接收的当前指令的目的地ARN)。在一些实施方案中,第三影子激活事件包括确定与存储在主存储装置中的数据相关联的PRN已退出。
在一些实施方案中,当已经满足第一影子激活条件时,即,当第一影子激活事件和第二影子激活事件都已经发生时,在框530处,将存储在主存储装置117中的数据传输到影子存储装置118。在一些实施方案中,第二激活条件已被满足,即,当第三激活事件发生时,存储在主存储装置117中的数据被传输到影子存储装置118。
在框520处,当主-影子控制器115确定影子激活条件未被满足时,例如影子激活事件未发生在主存储装置117中的数据时,在框525处,主-影子物理寄存器151保留存储在主存储装置118中的数据,直到例如影子激活事件已经发生。
在框530处,主-影子控制器115确定已经满足了影子激活条件,来自主存储装置117的数据被传输到影子存储装置118。在框532处,可选地,在一些实施方案中,重命名第二指令,使得将所得ARN映射到新的可用的主存储装置117的PRN。在框532处,数据被存储在在框532中被重命名的主存储装置117中。
在框540处,当主-影子控制器115确定已经发生影子到主传输事件时,在框550处,将数据从影子存储装置118传输或复制到主存储装置117。在框560处,在接收到读取请求时,在读取端口272处从主-影子物理寄存器文件的主存储装置117读取数据,或者可选地,在一些实施方案中,从主-影子物理寄存器文件的影子存储装置118读取数据(如图4所示)。
在一些实施方案中,在框545处,数据被保留在影子存储装置118中,直到主存储装置117被刷新或对应的指令已成功退出。在一些实施方案中,在框545处,当例如在相同的线程上操作时,影子存储数据被保留直到确定主-影子由于例如来自机器前端的错误预测的执行而被刷新为止,这通常发起写回到主存储装置中以从影子存储装置恢复数据。然而,在一些实施方案中,主存储装置117没有接收到刷新事件,并且对应的指令(具有相同目的地ARN的第二指令)已经移动到完成并且成功退出,在这种情况下,影子存储装置118也退出,这将MS-PRF的状态带回到框512(即,在例如初始重命名分配之后)。
在一些实施方案中,如与图1至图5相关并且在下面例示的,方案或实施方案被认为是主-影子物理寄存器文件或主-影子物理寄存器文件的主-影子元件的整体配置,并且变体是该方案的配置或使用方面的差异。对于例如以下例示的各种方案,参考图1至图5考虑以下示例性指令序列:
指令1:添加r1、r2、r3
指令2:添加r2、r3、r3
指令3:jnz目标//跳转到某些位置
指令4:Sub r1、r2、r2
指令5:添加r5、r4、r1
方案1:主-影子PRF 151-影子PRF 151-影子存储装置118不可直接读取
参见图1和图3,在一些实施方案中,主影子PRF 151的影子存储装置118在读取操作期间不可直接读取。在这种情况下,在试图访问影子存储装置118中的数据的读取操作期间,无法直接从影子存储装置118读取数据,而是将来自影子存储装置118的数据最先传输到主存储装置117,然后从主存储装置117读取。在一些实施方案中,当影子存储装置118不可直接读取时,主影子PRF 151和影子存储装置118与相同的线程相关联。
不存在刷新时的操作序列
在一个实施方案中,在指令1至5的执行期间没有刷新的情况下,指令1被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且被提供给重命名单元114用于重命名。在从RAT映射145读取第一PRN和第二PRN之后,重命名单元114的主-影子控制器115检查主空闲列表141以确定主存储装置117中的PRN是否可用于重命名第三ARN。对应于物理寄存器编号的传输指示符144中的颜色位从指示与在主存储装置117中传输或移动的PRN相关联的数据的第一值(例如,0或黑色)更新或翻转到指示与传输到影子存储装置118的PRN相关联的数据的第二值(例如,1或红色)。如前所述,传输指示符144是等于PRN数量的位向量。在一些实施方案中,颜色位在每个重命名上翻转,在刷新时适当地恢复,存储在映射表和退出队列中,或用于跟踪刷新恢复等。在各种实施方案中,颜色位存储在例如退出队列113中,用于标识主存储装置对的哪个型式具有与该ARN-PRN映射相关联的数据。在这种情况下,主-影子控制器115确定主存储装置117的PRN 20(颜色为黑色)可用于重命名。因此,通过主-影子控制器115检查主空闲列表141,第三ARN,即指令1的ARN r1被映射到RAT映射145中的PRNP20(颜色为黑色)。主-影子控制器115更新主空闲列表141以指示PRN 20(颜色为黑色)不再可用于重命名。
随后,指令2被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且被提供给重命名单元114用于重命名。在从RAT映射145读取第一PRN和第二PRN之后,重命名单元114的主-影子控制器115检查主空闲列表141,并且确定主存储装置117中的哪个PRN可用于分配给第三ARN。在这种情况下,主-影子控制器115确定主存储装置117的PRN 21(颜色为黑色)可用。因此,指令2的第三ARN、ARN r2被映射到RAT映射145中的PRN 21(颜色为黑色)。主-影子控制器115更新主空闲列表141以指示PRN 21(颜色为黑色)不再可用。
随后,指令3被接收并且被确定为jnz目标命令而不被采用。主-影子控制器115前进至指令4。假设此时,指令1已发出并且完成。PRN完成向量143由主-影子控制器115用例如逻辑位值1来更新,以指示指令1已经完成。指令1的结果被写入与PRN 20相关联的主存储装置117。即,与指令1的ARN r1相关联的数据被写入与PRN 20(也称为PRN 20,颜色为黑色)相关联的主存储装置117中。
随后,指令4被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且被提供给重命名单元114用于重命名。在一些实施方案中,在从RAT映射145读取第一PRN和第二PRN之后,RAT 145用于将指令4的第三ARN与先前的指令(例如,指令1至3)的第三ARN(如果有的话)进行比较,以确定第三ARN中的任一者是否等同于指令4的第三ARN。在这种情况下,指令1的第三ARN(例如,r1)等同于指令4的第三ARN(例如,r1)。主-影子控制器115继续检查对应于匹配ARN的先前的指令是否已经使用PRN完成向量143完成。
主-影子控制器115检查或者由PRN完成向量143通知指令1已经完成,并且结果已被写入主-影子物理寄存器文件151的主存储装置177。主-影子控制器115继续使用影子空闲列表142来确定与已经完成的指令的PRN相关联的影子存储装置118是否可用于存储。
在这种情况下,主-影子控制器115检查影子空闲列表142,并且确定与PRN 20相关联的影子存储装置118是否可用。影子空闲列表142指示与PRN 20相关联的影子存储装置118可用。
由于影子空闲列表142指示与PRN 20相关联的影子存储装置118可用,与PRN 20相关联的主存储装置117已被写入(即,完成位指示指令已完成),并且指令4的第三ARN等于指令1的第三ARN,因此影子激活条件(第一影子激活事件、第二影子激活事件和第三影子激活事件)已经得到满足并且存储在与PRN 20相关联的主存储装置117中的数据被传输到与PRN20相关联的影子存储装置118中。因此,在一些实施方案中,当与先前的指令相关联的第三ARN的新重命名(当两个指令具有等效的第三ARN时)发生时,先前的指令的完成发生,并且与对应的PRN相关联的影子存储装置118可用时,发生主存储装置117到影子存储装置118的移动。
一旦主存储装置117中的数据已被传输到影子存储装置118,则更新主空闲列表141以指示与PRN 20相关联的主存储装置117可用于重命名,更新影子空闲列表142以指示与影子存储装置118相关联的PRN 20不可用于存储,并且更新传输指示符144以指示主存储装置117中的数据已被移动到影子存储装置118。即,由于数据已经从主存储装置117传输到影子存储装置118(在这种情况下,与PRN 20相关联的主存储装置117和影子存储装置118),传输指示符144中对应于物理寄存器编号(在这种情况下,PRN 20)的颜色位被更新或者从指示与在主存储装置117中传输或移动的PRN 20相关联的数据的第一值(例如,0或黑色)翻转到指示与传输到影子存储装置118的PRN 20相关联的数据的第二值(例如,1或红色)。传输指示符144是数据结构,该数据结构在重命名时被读取,被写入对应于指令的退出队列113,并且当主存储装置117中的数据被移动到影子存储装置118时被更新,使得例如相同的PRN(在这种情况下,PRN 20)的连续分配交替。在一些实施方案中,传输指示符144的大小在大小上等于PRN的数量(例如,每个主-影子PRN一个位)。
重命名单元114的主-影子控制器115检查主空闲列表141以确定主存储装置117中的PRN是否可用于重命名。在这种情况下,由于数据已经从主存储装置117传输到影子存储装置118,PRN 20可用于重命名。因此,主-影子控制器115确定主存储装置117的PRN 20可用。因此,第三ARN,即指令4的ARN r1,被映射到PRN 20。颜色红色被写入对应于该指令的ROB条目,用于跟踪和刷新恢复。
随后,指令1退出。退出队列113更新退出映射190以示出第一指令的ARN r1被映射到PRN 20(颜色为黑色)。假设指令2退出。退出队列113更新退出映射190以示出第一指令的ARN r1被映射到PRN 21(颜色为黑色)。指令3和指令4退出。更新退出映射190以示出指令4的PRN已退出。
参考指令4退出,主-影子控制器115通知退出映射190更新指令4的ARN r1被映射到PRN 20(颜色为红色)。即,退出映射190现在示出指令4的ARN r1被映射到PRN 20(颜色为红色)。PRN 20(黑色)被PRN 20(红色)替代,并且与影子存储装置118中的PRN(颜色为黑色)相关联的数据不再被需要,因为它在退出映射190中已经被PRN 20(颜色为红色)替换。
在各种实施方案中,此时,主-影子控制器115具有释放影子存储装置118或使用影子存储装置118进行存储(通过从主存储装置117向影子存储装置118传输数据)的选项。因此,在一个实施方案中,主-影子控制器115在影子空闲列表142中设置对应于PRN 20的位,以指示对应的影子存储装置118可用(不再需要PRN 20(颜色为黑色))。然而,PRN 20不可用于重命名,除非对应于PRN 20的主存储装置117也使用主空闲列表141变得可用。
在另一实施方案中,主-影子控制器115将对应于PRN 20的主存储装置117中的数据移动到影子存储装置118,并且在主空闲列表117中设置对应于PRN 20的位,以指示与PRN20相关联的主存储装置117是空闲的。在一些实施方案中,由于主存储装置117的PRN 20现在可用,因此新操作可以选择PRN 20(例如,PRN 20,颜色为黑色)作为其重命名的目的地。当主-影子控制器115将主存储装置117中的数据传输到影子存储装置118时,主-影子控制器155将传输指示符144中对应于物理寄存器编号PRN 20的值翻转到红色(即,PRN 20,颜色为红色)。
误预测指令3时的操作序列
在一个实施方案中,当例如指令3被误预测时,发生以下操作序列。指令1被调度并且由解码单元108解码为第一ARN、第二ARN和第三ARN,并且提供给重命名单元114用于重命名。在从RAT映射145读取第一PRN和第二PRN之后,重命名单元114的主-影子控制器115检查主空闲列表141以确定主存储装置117中的PRN是否可用于重命名第三ARN。在这种情况下,主-影子控制器115确定主存储装置117的PRN 20(颜色为黑色)可用于重命名。因此,第三ARN,即指令1的ARN r1,被映射到RAT映射145中的PRN 20(颜色为黑色)。主-影子控制器115更新主空闲列表141以指示PRN 20(颜色为黑色)不再可用于重命名。
随后,指令2被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且被提供给重命名单元114用于重命名。重命名单元114的主-影子控制器115检查主空闲列表141,并且确定主存储装置117中的哪个PRN可用于重命名。在这种情况下,主-影子控制器115确定主存储装置117的PRN 21(颜色为黑色)可用。因此,指令2的第三ARN、ARN r2被映射到RAT映射145中的PRN 21(颜色为黑色)。主-影子控制器115更新主空闲列表141以指示PRN 21不再可用于重命名。换句话讲,在一些实施方案中,一旦PRN 21被分配给RAT映射145中的ARN,PRN 21就不可用于重命名,直到它被移动到影子并且此时颜色不改变。
指令3被预测并且不被采用。重命名单元114前进至指令4。假设此时,指令1已发出并且完成。PRN完成向量143由主-影子控制器115更新以指示指令1已经完成。指令1的结果被写入与PRN 20(颜色为黑色)相关联的主存储装置117。即,与指令1的ARN r1相关联的数据被写入与PRN 20相关联的主存储装置117中。
随后,指令4被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且被提供给重命名单元114用于重命名。
在一些实施方案中,RAT 145用于将指令4的第三ARN与先前的指令(例如,指令1至3)的第三ARN(如果有的话)进行比较,以确定第三ARN中的任一者是否等同于指令4的第三ARN。在这种情况下,指令1的第三ARN(例如,r1)等同于指令4的第三ARN(例如,r1)。主-影子控制器115继续检查对应于匹配ARN的先前的指令是否已经使用PRN完成向量143完成。
主-影子控制器115检查或者由PRN完成向量143通知指令1已经完成,并且结果已被写入主-影子物理寄存器文件151的主存储装置177。主-影子控制器115继续检查影子空闲列表142,以确定与指令1(即,已经完成的指令)的PRN相关联的影子存储装置118是否可用于存储。
在这种情况下,主-影子控制器115检查影子空闲列表142,并且确定与PRN 20相关联的影子存储装置118可用。
由于影子空闲列表142指示与PRN 20相关联的影子存储装置118可用,与PRN 20相关联的主存储装置117已被写入(即,完成位指示指令已完成),并且指令4的第三ARN等于指令1的第三ARN,因此影子激活条件(第一影子激活事件、第二影子激活事件和第三影子激活事件)已经得到满足并且存储在与PRN 20(颜色为黑色)相关联的主存储装置117中的数据被传输到与PRN 20相关联的影子存储装置118中。
一旦主存储装置117中的数据已经被传输到影子存储装置118,则更新主空闲列表141以指示与PRN 20相关联的主存储装置117可用于重命名,更新影子空闲列表141以指示与PRN 20相关联的影子存储装置118不可用于存储,并且更新传输指示符144以指示主存储装置117中的数据已经被移动到影子存储装置118。如前所述,由于数据已经从主存储装置117传输到影子存储装置118,在这种情况下,与PRN 20相关联的主存储装置117和影子存储装置118,传输指示符144中对应于物理寄存器编号(在这种情况下,PRN 20)的颜色位被更新或者从指示与在主存储装置117中传输或移动的PRN 20相关联的数据的第一值(例如,0或黑色)翻转到指示与传输到影子存储装置118的PRN 20相关联的数据的第二值(例如,1或红色)。
重命名单元114的主-影子控制器115检查主空闲列表141以确定主存储装置117中的PRN是否可用于重命名。在这种情况下,由于数据已经从主存储装置117传输到影子存储装置118,PRN 20(颜色为红色)可用于重命名。因此,主-影子控制器115确定主存储装置117的PRN 20(颜色为红色)可用。因此,第三ARN,即指令4的ARN r1,被映射到RAT表145中的PRN20(颜色为红色)。
此时,指令3被执行并且发现被采用。因此,主-影子控制器115反转或“展开”指令4的效果。为了逆转指令4的效果,刷新恢复单元181确定在指令3处用于ARN r1的有效映射是PRN 20(颜色为黑色)。主-影子控制器115检查传输指示符144,该传输指示符指示PRN 20的当前颜色为红色,这意味着来自主存储装置117位置PRN 20(颜色为黑色)的数据已经被移动到影子存储装置118,因此PRN 20(颜色为黑色)的数据在影子存储装置118中。
一旦主-影子控制器115确定PRN 20(颜色为黑色)已经被移动到影子存储装置118,主-影子控制器115就将影子存储装置118中的数据移回到用于PRN 20的主存储装置117。然后,主-影子控制器115更新对应于PRN 20的影子空闲列表142,以指示影子存储装置118现在可用。传输指示列表144中的颜色位被翻转回PRN 20的黑色。当分支的所采取的目标处的另一指令重命名为PRN 20时,主-影子控制器115将ARN分配给PRN 20(颜色为红色)。
变体1:主-影子PRF 151-影子存储装置118不可直接读取-主存储装置117和影子存储装置118映射到相同的ARN
在一些实施方案中,主存储装置117和影子存储装置118被分配给相同的ARN。在该特定变体中,RAT映射147跟踪影子存储装置118是否可用。当影子存储装置118空闲时,主存储装置117中的数据可被移动到影子存储装置118。当影子存储装置118被占用或不可用时,ARN被映射到新的PRN。在一些实施方案中,不需要传输指示符144(颜色位向量)和影子空闲列表142(影子位向量),并且控制局限于RAT映射147和主-影子空闲列表146,并且仅在调度时发生(没有退出时间主-影子移动)。主存储装置117和影子存储装置118对一直被视为单个实体。
不存在刷新时的操作序列
在一些实施方案中,作为不存在刷新时的操作序列的一部分,指令1被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且提供给重命名单元114重命名。在从RAT映射147读取第一PRN和第二PRN之后,重命名单元114的主-影子控制器115检查主-影子空闲列表146以确定与主存储装置117和影子存储装置118相关联的PRN是否可用于重命名第三ARN。在这种情况下,主-影子控制器115确定分配给主存储装置117和影子存储装置118的PRN 20可用。因此,通过检查主-影子空闲列表146,第三ARN,即指令1的ARN r1被映射到RAT映射147中的PRN 20。主-影子控制器115更新主-影子空闲列表146以指示PRN 20不再可用于重命名。
主-影子控制器115将颜色位(红色或黑色)分配给RAT映射147中的第三ARN。在一些实施方案中,颜色位被排他地保持在RAT映射147中,并且不需要每PRN向量(即,传输指示符144)。在这种情况下,主-影子控制器115将ARN r1分配给RAT映射147中的PRN 20(颜色为黑色)。
随后,指令2被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且被提供给重命名单元114用于重命名。在从RAT映射147读取第一PRN和第二PRN之后,重命名单元114的主-影子控制器115检查主-影子空闲列表146,并且确定主存储装置117中的哪个PRN可用于分配给第三ARN。在这种情况下,主-影子控制器115确定主存储装置117的PRN 21(颜色为黑色)可用。因此,指令2的第三ARN、ARN r2被映射到RAT映射147中的PRN 21(颜色为黑色)。主-影子控制器115更新主-影子空闲列表146以指示PRN 21(颜色为黑色)不再可用。
假设此时,指令1已发出并且完成。PRN完成向量143由主-影子控制器115用例如逻辑位值1来更新,以指示指令1已经完成。指令1的结果被写入与PRN 20(颜色为黑色)相关联的主存储装置117。即,与指令1的ARN r1相关联的数据被写入与PRN 20(颜色为黑色)相关联的主存储装置117中。
假设指令3不被采用。随后,指令4被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且被提供给重命名单元114用于重命名。在一些实施方案中,在从RAT映射147读取第一PRN和第二PRN之后,RAT 145用于将指令4的第三ARN与先前的指令(例如,指令1至3)的第三ARN(如果有的话)进行比较,以确定第三ARN中的任一者是否等同于指令4的第三ARN。在这种情况下,指令1的第三ARN(例如,r1)等同于指令4的第三ARN(例如,r1)。主-影子控制器115继续检查对应于匹配ARN的先前的指令是否已经使用PRN完成向量143完成。
主-影子控制器115检查或者由PRN完成向量143通知指令1已经完成,并且结果已被写入主-影子物理寄存器文件151的主存储装置177。主-影子控制器115继续使用RAT映射147来确定与已经完成的指令的PRN相关联的影子存储装置118是否可用于存储。
在这种情况下,主-影子控制器115检查RAT映射147,并且确定与PRN 20相关联的影子存储装置118是否可用。RAT映射147指示与PRN 20相关联的影子存储装置118可用。
由于RAT映射147指示与PRN 20相关联的影子存储装置118可用,与PRN 20相关联的主存储装置117已被写入(即,完成位指示指令已完成),并且指令4的第三ARN等于指令1的第三ARN,因此影子激活条件(第一影子激活事件、第二影子激活事件和第三影子激活事件)已经得到满足并且存储在与PRN 20相关联的主存储装置117中的数据被传输到与PRN20相关联的影子存储装置118中。即,影子存储装置118的PRN 20是空闲的,因此主-影子控制器115将数据从主存储装置117移动到影子存储装置118,并且在RAT映射147中将颜色位从黑色翻转到红色。由于数据已经从与PRN 20相关联的主存储装置117传输到影子存储装置118,因此与PRN 20相关联的主存储装置117现在可用于重命名,并且指令4的ARN r1被重命名为PRN 20。
RAT映射147中的ARN r1现在被映射到PRN 20(颜色为红色)。在这种情况下,红色指示PRN 20主存储装置117和影子存储装置118被占用。任何其他操作重命名ARN r1必须挑选主存储装置117和影子存储装置118两者均是空闲的不同PRN,如主-影子空闲列表146所示。
随后,指令1退出。退出队列113更新退出映射190以示出第一指令的ARN r1被映射到PRN 20(颜色为黑色)。即,指令1退出,并且退出映射147指示r1被分配给PRN 20(颜色为黑色)。假设指令2退出。退出队列113更新退出映射190以示出第一指令的ARN r1被映射到PRN 21(颜色为黑色)。指令3和指令4退出。更新退出映射190以示出指令4的PRN已退出。
参考指令4退出,主-影子控制器115通知退出映射190更新指令4的ARN r1被映射到PRN 20(颜色为红色)。即,退出映射190现在示出指令4的ARN r1被映射到PRN 20(颜色为红色)。此时,与PRN 20相关联的主存储装置117和影子存储装置118两者由主-影子控制器115释放并且可用于重命名。
误预测指令3时的操作序列
在一些实施方案中,作为在指令3被误预测时的操作序列的一部分,指令1被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且提供给重命名单元114重命名。在从RAT映射147读取第一PRN和第二PRN之后,重命名单元114的主-影子控制器115检查主-影子空闲列表146以确定与主存储装置117和影子存储装置118相关联的PRN是否可用于重命名第三ARN。在这种情况下,主-影子控制器115确定分配给主存储装置117和影子存储装置118的PRN 20(颜色为黑色)可用。因此,通过检查主-影子空闲列表146,第三ARN,即指令1的ARN r1被映射到RAT映射147中的PRN P20(颜色为黑色)。主-影子控制器115更新主-影子空闲列表146以指示PRN 20不再可用于重命名。
随后,指令2被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且被提供给重命名单元114用于重命名。重命名单元114的主-影子控制器115检查主-影子空闲列表146,并且确定主存储装置117中的哪个PRN可用。在这种情况下,主-影子控制器115确定主存储装置117的PRN 21可用。因此,指令2的第三ARN、ARN r2被映射到RAT映射147中的PRN21(颜色为黑色)。主-影子控制器115更新主-影子空闲列表146以指示PRN 21(颜色为黑色)不再可用。
假设此时,指令1已发出并且完成。PRN完成向量143由主-影子控制器115更新以指示指令1已经完成。指令1的结果被写入与PRN 20(颜色为黑色)相关联的主存储装置117。即,与指令1的ARN r1相关联的数据被写入与PRN 20(颜色为黑色)相关联的主存储装置117中。
随后,指令3被调度和误预测。指令4被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且被提供给重命名单元114用于重命名。在一些实施方案中,在从RAT映射147读取第一PRN和第二PRN之后,RAT 145用于将指令4的第三ARN与先前的指令(例如,指令1至3)的第三ARN(如果有的话)进行比较,以确定第三ARN中的任一者是否等同于指令4的第三ARN。在一些实施方案中,比较跟踪发生在寄存器重命名期间。在这种情况下,指令1的第三ARN(例如,r1)等同于指令4的第三ARN(例如,r1)。主-影子控制器115继续检查对应于匹配ARN的先前的指令是否已经使用PRN完成向量143完成。
主-影子控制器115检查或者由PRN完成向量143通知指令1已经完成,并且结果已被写入主-影子物理寄存器文件151的主存储装置177。主-影子控制器115继续使用影子空闲列表142来确定与已经完成的指令的PRN相关联的影子存储装置118是否可用于存储。
在这种情况下,主-影子控制器115检查RAT映射147,并且确定与PRN 20相关联的影子存储装置118是否可用。RAT映射147指示与PRN 20相关联的影子存储装置118可用。
由于RAT映射147指示与PRN 20相关联的影子存储装置118可用,与PRN 20相关联的主存储装置117已被写入(即,完成位指示指令已完成),并且指令4的第三ARN等于指令1的第三ARN,因此影子激活条件(第一影子激活事件、第二影子激活事件和第三影子激活事件)已经得到满足并且存储在与PRN 20相关联的主存储装置117中的数据被传输到与PRN20相关联的影子存储装置118中。由于数据已经从与PRN 20相关联的主存储装置117传输到影子存储装置118,因此与PRN 20相关联的主存储装置117现在可用于重命名,并且指令4的ARN r1被重命名为PRN 20(颜色为红色)。
指令3误预测并且刷新恢复单元181确定r1的有效映射是PRN 20(颜色为黑色)。然而,RAT映射147具有r1的映射为PRN 20(颜色为红色),这意味着主-影子控制器115将影子存储装置118中的数据恢复到主存储装置117。更新RAT映射147,使得r1被映射到PRN 20(颜色为黑色)。在这种情况下,当另一指令重新命名r1时,将数据从主存储装置117移动到影子存储装置118,并且将ARN r1分配给PRN 20(颜色为红色)。
变体2:执行主存储装置PRF 151,影子存储装置118不可读
在一些实施方案中,方案1对调度PRF起作用,但不对执行PRF起作用,除非如变体2中所公开的那样修改方案1。执行PRF之间的区别在于执行PRF在由定点单元112发出时被读取,这是无序的,而调度PRF由定点单元112在调度时以程序顺序读取。在一些实施方案中,通过执行PRF,定点单元112等待,直到调度器单元128中完成了PRN的所有读取,并且在RAT映射145中不再引用PRN,以触发主存储装置117到影子存储装置118的移动或转移。
在一些实施方案中,查找表(未示出)由主-影子控制器115检查以确定PRN是否源自调度器单元128中的操作。在一些实施方案中,参考向量148被添加为等于PRF中的元件数量,以跟踪PRN是否不再被引用。如果PRN的参考向量148被设置或断言,则主存储装置117在PRF中不再被引用,并且主存储装置117中的数据被移动到影子存储装置118。在一些实施方案中,在这种情况下不使用PRN完成向量143(例如,完成位向量),因为指令已经由参考向量148跟踪。
在一些实施方案中,利用2维(2-D)位矩阵,其中列等于调度器单元128条目的数量并且行等于PRN的数量。在一些实施方案中,当操作被写入调度器单元128时,对应于操作源的PRN的位被设置。在一些实施方案中,对行中的所有位进行“或”运算产生PRN是否正在调度器单元128中使用。
另选地,在一些实施方案中,利用2D位矩阵,其中行等于调度器条目的数量并且两列,每一列用于一个PRN(以二进制编码)。在一些实施方案中,当操作完成时,操作采用该结构的每个源PRN和CAM来确定PRN是否仍然存在。当PRN不存在时,条目由主-影子控制器115取消分配。
不存在刷新时的操作序列
在一个实施方案中,在指令1至5的执行期间没有刷新的情况下,指令1被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且被提供给重命名单元114用于重命名。在从RAT映射145读取第一PRN和第二PRN之后,将ARN r1映射到PRN 20(颜色为黑色)。主-影子控制器115更新主空闲列表141以指示PRN 20(颜色为黑色)不再可用。
随后,指令2被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且被提供给重命名单元114用于重命名。在读取第一PRN和第二PRN之后,主-影子控制器115确定主存储装置117的PRN 21可用于重命名,并且更新主空闲列表141以指示PRN 21不再可用。即,主-影子控制器115确定PRN 21可用于重命名,然后更新以指示其不可用。此外,重命名单元114将PRN 21(颜色为黑色)分配给ARN r2,然后将PRN标记为不可用。
指令3被接收并且被确定为jnz目标命令而不被采用。主-影子控制器115前进至指令4。
指令4被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且被提供给重命名单元114用于重命名。在将第一ARN和第二ARN分配给PRN之后,主-影子控制器115检查参考向量148中的参考位以确定PRN是否可用于重命名。在这种情况下,从主空闲列表141提供重命名单元114的PRN可用性。主空闲列表141,主存储装置中的数据被移动到影子存储装置。在一些实施方案中,主影子控制器115的作用是例如,当RAT映射145中不再引用主存储装置中的数据,调度程序中没有对主存储装置中的数据的引用(即,没有操作将其用作源),并且影子存储装置可用时,确保将主存储装置中的数据移动到影子存储装置。在一些实施方案中,传输独立于重命名而发生,并且当传输发生时,相关联的颜色位被翻转。在一些实施方案中,确定PRN 20或PRN 31是否可用是使用主空闲列表141来完成的。在一些实施方案中,如果主影子控制器115设置与主设备相关联的位,则PRN用于重命名。在一些实施方案中,主-影子控制器115确定PRN 31可用,因为参考向量148指示在调度器单元128中没有操作在使用PRN 31。因此,指令4的ARN r1被映射到RAT映射145中的PRN 31。
假设指令1已发出并且完成。此时,指令2仍在调度器单元128和源PRN 20中,即,ARN r1是指令2的源。因此,主-影子控制器确定PRN 20还不能被移动到影子存储装置118。
假设指令2已发出并且完成。此时,在调度器单元128中没有引用PRN 20(颜色为黑色),并且在RAT映射145中没有引用PRN 20(颜色为黑色)。因此,主-影子控制器115将数据从PRN 20的主存储装置117移动到影子存储装置118,翻转传输指示符144中的颜色位,并且更新主空闲列表141以指示主存储装置117的PRN 20可用。
指令5被重命名并且ARN r5被映射到RAT映射145中的PRN 20(颜色为红色)。在一些实施方案中,变体1的刷新恢复与先前关于主-影子PRF 151描述的变体1的刷新恢复相同。在一些实施方案中,参考向量148被动态地生成(即,每个周期重新计算),从而允许参考向量148在刷新期间对自身进行校正。
变体3:主-影子PRF
151,影子存储装置118不可读,仅在退出时间传输
在一些实施方案中,数据在退出时间从主存储装置117传输到影子存储装置118。当操作在退出映射190中退出时,主存储装置117中的数据被传输到影子存储装置118,并且主-影子控制器115更新主空闲列表141以指示主存储装置117可用于指定的PRN,即,将主存储装置117返回到主空闲列表141。
方案2-主影子PRF
151-影子存储装置118可直接读取
参见图1和图4,在一些实施方案中,主存储装置117和影子存储装置118两者在读取操作期间可被直接读取,并且利用早期选择信号492来选择是读取主存储装置117还是读取影子存储装置118。在一些实施方案中,方案2的基本操作类似于上述方案1的基本操作,除了没有使主存储装置117和影子存储装置118两者与相同的线程相关联的限制。例如,第一线程(例如,线程0)能够针对第一PRN(例如,PRN 100)将数据从主存储装置117移动到影子存储装置118,并且第二线程(例如,线程1)能够针对第一PRN(例如,PRN 100)重命名到主存储装置117。在一些实施方案中,每个条目能够彼此独立地被刷新或无效。
附加的数据结构,TID掩码149,被包括在重命名单元114中以将主存储装置117与一个或多个特定线程相关联。TID掩码149是每PRN包括一个位的向量,指示主存储装置117是与第一线程(例如,线程0)还是第二线程(例如,线程1)相关联或属于第一线程还是第二线程。当线程被选择用于调度时,应用TID掩码149,使得选择适当线程的适当条目。
在一些实施方案中,在第一场景期间,主存储装置117和影子存储装置118两者与第一线程(相同的线程)相关联。不直接读取影子存储装置118中的条目,因此在读取操作期间仅读取主存储装置117。在这种情况下,当主存储装置117与被调度的线程的第一线程(相同的线程)相关联时,主-影子控制器155利用TID掩码149来选择主存储装置117。
在一些实施方案中,在第二场景期间,主存储装置117和影子存储装置118与唯一的线程或不同线程(例如,第一线程和第二线程)相关联。在一些实施方案中,主-影子控制器115使用TID掩码149来选择待读取的适当条目。在一些实施方案中,方案2是仅针对有序操作的操作,即方案2适用于调度PRF而非执行PRF。在一些实施方案中,来自上述方案1的变体3适用于方案2。在一些实施方案中,一般操作类似于方案1的操作,不同之处在于在刷新操作的存在下操作有变化。
误预测指令3时的操作序列
在一个实施方案中,当例如指令1至5中的指令3被误预测时,发生以下顺序。指令1被调度并且由解码单元108解码为第一ARN、第二ARN和第三ARN,并且提供给重命名单元114用于重命名。在从RAT映射145读取第一PRN和第二PRN之后,重命名单元114的主-影子控制器115检查主空闲列表141以确定主存储装置117中的PRN是否可用于重命名第三ARN。在这种情况下,主-影子控制器115确定主存储装置117的PRN 20(颜色为黑色)可用于重命名。因此,第三ARN,即指令1的ARN r1,被映射到RAT映射145中的PRN 20(颜色为黑色)。主-影子控制器115更新主空闲列表141以指示PRN 20(颜色为黑色)不再可用于重命名。
随后,指令2被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且被提供给重命名单元114用于重命名。重命名单元114的主-影子控制器115检查主空闲列表141,并且确定主存储装置117中的哪个PRN可用。在这种情况下,主-影子控制器115确定主存储装置117的PRN 21(颜色为黑色)可用。因此,指令2的第三ARN、ARN r2被映射到RAT映射145中的PRN 21(颜色为黑色)。
指令3被预测并且不被采取。重命名单元114前进至指令4。假设此时,指令1已发出并且完成。PRN完成向量143由主-影子控制器115更新以指示指令1已经完成。指令1的结果被写入与PRN 20(颜色为黑色)相关联的主存储装置117。即,与指令1的ARN r1相关联的数据被写入与PRN 20(颜色为黑色)相关联的主存储装置117中。
随后,指令4被调度,由解码单元108解码为第一ARN、第二ARN和第三ARN,并且被提供给重命名单元114用于重命名。
在一些实施方案中,RAT 145用于将指令4的第三ARN与先前的指令(例如,指令1至3)的第三ARN(如果有的话)进行比较,以确定第三ARN中的任一者是否等同于指令4的第三ARN。在这种情况下,指令1的第三ARN(例如,r1)等同于指令4的第三ARN(例如,r1)。主-影子控制器115继续检查对应于匹配ARN的先前的指令是否已经使用PRN完成向量143完成。
主-影子控制器115检查或者由PRN完成向量143通知指令1已经完成,并且结果已被写入主-影子物理寄存器文件151的主存储装置177。主-影子控制器115继续检查影子空闲列表142,以确定与已经完成的指令的PRN相关联的影子存储装置118是否可用于存储。
在这种情况下,主-影子控制器115检查影子空闲列表142,并且确定与PRN 20相关联的影子存储装置118可用。
由于影子空闲列表142指示与PRN 20相关联的影子存储装置118可用,与PRN 20相关联的主存储装置117已被写入(即,完成位指示指令已完成),并且指令4的第三ARN等于指令1的第三ARN,因此影子激活条件(第一影子激活事件、第二影子激活事件和第三影子激活事件)已经得到满足并且存储在与PRN 20相关联的主存储装置117中的数据被传输到与PRN20相关联的影子存储装置118中。
一旦主存储装置117中的数据已被传输到影子存储装置118,则更新主空闲列表141以指示PRN 20可用于重命名,更新影子存储装置118以指示PRN 20不可用于存储,并且更新传输指示符144以指示主存储装置117中的数据已被移动到影子存储装置118。如前所述,由于数据已经从主存储装置117传输到影子存储装置118,在这种情况下,与PRN 20相关联的主存储装置117和影子存储装置118,传输指示符144中对应于物理寄存器编号(在这种情况下,PRN 20)的颜色位被更新或者从指示与在主存储装置117中传输或移动的PRN 20相关联的数据的第一值(例如,0或黑色)翻转到指示与传输到影子存储装置118的PRN 20相关联的数据的第二值(例如,1或红色)。
重命名单元114的主-影子控制器115检查主空闲列表141以确定主存储装置117中的PRN是否可用于重命名。在这种情况下,由于数据已经从主存储装置117传输到影子存储装置118,PRN 20可用于重命名。因此,主-影子控制器115确定主存储装置117的PRN 20可用。因此,第三ARN,即指令4的ARN r1,被映射到RAT表145中的PRNP 20,也称为PRN 20(颜色为红色)。
此时,指令3被执行并且发现被定点单元112采用。因此,定点单元112反转或“展开”指令4的效果。在一些实施方案中,刷新恢复单元181确定指令3处的ARN r1的有效映射为PRN 20(颜色为黑色)。然而,主-影子控制器115检查传输指示符144,该传输指示符指示PRN 20的当前颜色为红色,这意味着来自主存储装置117位置PRN 20(颜色为黑色)的数据已经被移动到影子存储装置118,因此PRN 20(颜色为黑色)必须在影子存储装置118中。
此时,如果主存储装置117和影子存储装置118与相同的线程(第一线程)相关联,则主-影子控制器115将传输指示符144中的颜色位从红色翻转回黑色,并且将数据从主存储装置117移动到传输存储装置118(类似于方案1)。如果主存储装置117和影子存储装置118与不同的线程(即,第一线程和第二线程)相关联,则TID掩码149适当地选择主存储装置117或影子存储装置118。当分支的所采取的目标处的另一指令重命名为PRN 20时,主-影子控制器115将ARN分配给PRN 20(颜色为红色)。
在一些实施方案中,上述装置和技术在包括一个或多个集成电路(IC)设备(也称为集成电路封装或微芯片)的系统中实现,诸如上文参考图1至图5所描述的处理器。在一些实施方案中,上述变体3也适用于方案2。电子设计自动化(EDA)和计算机辅助设计(CAD)软件工具可以在这些IC设备的设计和制造中使用。这些设计工具通常表示为一个或多个软件程序。一个或多个软件程序包括可由计算机系统执行的代码,以操纵计算机系统对代表一个或多个IC设备的电路的代码进行操作以便执行用以设计或调整制造系统以制造电路的过程的至少一部分。该代码可以包括指令、数据、或指令和数据的组合。代表设计工具或制造工具的软件指令通常存储在计算系统可访问的计算机可读存储介质中。同样,代表IC设备的设计或制造的一个或多个阶段的代码可以存储在相同计算机可读存储介质或不同计算机可读存储介质中并从其访问。
计算机可读存储介质可以包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何非暂态存储介质或非暂态存储介质的组合。此类存储介质可以包括但不限于光学介质(例如,光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓冲存储器)、非易失性存储器(例如,只读存储器(ROM)或闪存存储器)、或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可以嵌入计算系统(例如,系统RAM或ROM)中,固定地附接到计算系统(例如,磁性硬盘驱动器),可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的闪存存储器),或者经由有线或无线网络(例如,网络可访问存储装置(NAS))耦接到计算机系统。
在一些实施方案中,上述技术的某些方面可以由执行软件的处理系统的一个或多个处理器实现。软件包括可执行指令的一个或多个集合,该可执行指令存储在或以其他方式有形地体现在非暂态计算机可读存储介质上。软件可包括指令和某些数据,这些指令和数据在由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面。非暂态计算机可读存储介质可包括例如磁盘或光盘存储设备、固态存储设备诸如闪存存储器、高速缓冲存储器、随机存取存储器(RAM)或其他一个或多个非易失性存储器设备等。存储在非暂态计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码、或者被一个或多个处理器解释或以其他方式执行的其他指令格式。
应当注意,并非以上在一般描述中描述的所有活动或元件都是必需的,特定活动或设备的一部分可能不是必需的,并且可以执行一个或多个另外的活动,或者除了所描述的那些之外还包括元件。更进一步地,列出活动的顺序不一定是执行它们的顺序。另外,已经参考具体实施方案描述了这些概念。然而,本领域普通技术人员理解,在不脱离如以下权利要求中阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图被认为是说明性的而非限制性的,并且所有此类修改旨在被包括在本公开的范围内。
上文已经关于具体实施方案描述了益处、其他优点和问题的解决方案。然而,益处、优点、问题的解决方案以及可以导致任何益处、优点或解决方案出现或变得更显著的任何特征不应被解释为任何或所有权利要求的关键的、必需的或基本的特征。此外,上文公开的特定实施方案仅是说明性的,因为所公开的主题可以以受益于本文中的教导内容的本领域的技术人员显而易见的不同但等效的方式来修改和实践。除了以下权利要求书中所描述的之外,不旨在对本文所示的构造或设计的细节进行限制。因此,显而易见的是,可以改变或修改上文公开的特定实施方案,并且所有此类变化被认为是在所公开的主题的范围内。因此,本文寻求的保护如以下权利要求中所阐述。
Claims (20)
1.一种方法,包括:
将数据存储在处理器的主-影子物理寄存器文件的主存储装置中,所述主-影子物理寄存器文件具有被配置为存储活动数据的主存储装置和被配置为存储休眠数据的影子存储装置两者;以及
基于与所述主-影子物理寄存器文件的所述主存储装置相关联的影子传输激活条件的发生,将数据从所述主存储装置传输到影子存储装置。
2.根据权利要求1所述的方法,其中:
所述影子传输激活条件包括确定第二指令的第二结果架构寄存器编号(ARN)等同于第一指令的第一结果ARN,所述第二结果ARN指示将存储所述第一指令的操作的执行结果的位置,并且所述第一结果ARN指示将存储所述第一指令的操作的所述执行结果的所述位置。
3.根据权利要求2所述的方法,还包括:
将所述第二指令的所述第二结果ARN重命名为其数据已经被传输到影子存储装置的所述主存储装置的PRN的物理寄存器编号。
4.根据权利要求1所述的方法,其中:
所述影子传输激活条件包括由主-影子控制器确定所述第一指令已经完成执行以及将所述执行的结果写入所述主-影子物理寄存器文件。
5.根据权利要求1所述的方法,其中:
所述影子传输激活条件包括确定与所述主存储装置相关联的所述影子存储装置可用于数据存储,因为当前在所述影子存储装置中没有数据。
6.根据权利要求1至5中任一项所述的方法,还包括:
在已经发生至少第一影子到主传输事件之后,将所述影子存储装置中的所述数据传输到所述主存储装置。
7.根据权利要求6所述的方法,其中:
所述第一影子到主传输事件是所述主存储装置的刷新事件或是误预测。
8.根据前述权利要求中任一项所述的方法,还包括:
从所述主存储装置读取所述数据,所述数据已经从所述影子存储装置传输。
9.一种处理器,包括:
主-影子物理寄存器文件,所述主-影子物理寄存器文件具有耦合到影子存储装置的主存储装置;和
重命名单元,所述重命名单元耦合到所述主-影子物理寄存器文件,其中,基于由所述重命名单元验证的影子传输激活条件的发生,将所述主存储装置中的数据从所述主存储装置传输到所述影子存储装置以进行存储。
10.根据权利要求9所述的处理器,其中:
所述处理器被配置为在影子到主传输事件已经发生之后将所述影子存储装置中的所述数据传输到主存储装置。
11.根据权利要求9或权利要求10所述的处理器,其中:
所述影子传输激活条件包括以下各项中的至少一项:确定第二指令的第二结果架构寄存器编号(ARN)等同于第一指令的第一ARN;确定所述第一指令已经完成对与所述主存储装置相关联的所述影子存储装置可用于数据存储的确定;确定与所述主存储装置相关联的所述影子存储装置可用于数据存储。
12.根据权利要求11所述的处理器,其中:
所述第一指令的所述第一ARN被重命名为与所述主-影子物理寄存器文件中的第一主-影子物理寄存器相关联的第一物理寄存器编号(PRN)。
13.根据权利要求9所述的处理器,其中:
所述主存储装置和所述影子存储装置与单个架构寄存器编号(ARN)相关联。
14.根据权利要求9至13中任一项所述的处理器,其中:
所述处理器被配置为响应于第一指令的退出而将所述影子存储装置中的所述数据传输到主存储装置。
15.根据权利要求9至14中任一项所述的处理器,其中:
使用早期选择信号来读取所述影子存储装置。
16.根据权利要求9至14中任一项所述的处理器,其中:
位于耦合到所述重命名单元的调度器单元中的多个参考中的至少第一参考用于将数据从所述主存储装置传输到所述影子存储装置。
17.一种物理寄存器,包括:
主存储元件;和
影子存储元件,所述影子存储元件耦合到所述主存储元件,其中,基于影子写入启用信号的断言,所述主存储元件中的数据被传输以存储到所述影子存储元件。
18.根据权利要求17所述的物理寄存器,还包括:
第一“与”门,所述第一“与”门耦合到所述影子存储元件,
其中所述第一“与”门生成影子存储元件启用信号,所述影子存储元件启用信号启用所述影子存储元件以用于存储。
19.根据权利要求18所述的物理寄存器,还包括:
第二“与”门,所述第二“与”门耦合到所述主存储元件,其中所述第二“与”门生成主存储元件启用信号,所述主存储元件启用信号启用所述主存储元件以用于存储。
20.根据权利要求17至19中任一项所述的物理寄存器,还包括:
复用器,所述复用器耦合到所述主存储元件和所述影子存储元件,其中所述复用器控制存储在所述影子存储元件中的数据是否存储在所述主存储元件中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/877,112 | 2020-05-18 | ||
US16/877,112 US11599359B2 (en) | 2020-05-18 | 2020-05-18 | Methods and systems for utilizing a master-shadow physical register file based on verified activation |
PCT/US2021/032992 WO2021236660A1 (en) | 2020-05-18 | 2021-05-18 | Methods and systems for utilizing a master-shadow physical register file |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115867888A true CN115867888A (zh) | 2023-03-28 |
Family
ID=78512460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180043050.6A Pending CN115867888A (zh) | 2020-05-18 | 2021-05-18 | 用于利用主-影子物理寄存器文件的方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11599359B2 (zh) |
EP (1) | EP4154103A1 (zh) |
JP (1) | JP2023526788A (zh) |
KR (1) | KR20230025402A (zh) |
CN (1) | CN115867888A (zh) |
WO (1) | WO2021236660A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11928472B2 (en) | 2020-09-26 | 2024-03-12 | Intel Corporation | Branch prefetch mechanisms for mitigating frontend branch resteers |
US11947473B2 (en) * | 2021-10-12 | 2024-04-02 | Advanced Micro Devices, Inc. | Duplicated registers in chiplet processing units |
US20230195388A1 (en) * | 2021-12-17 | 2023-06-22 | Intel Corporation | Register file virtualization : applications and methods |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020087837A1 (en) * | 2000-12-28 | 2002-07-04 | Samra Nicholas G. | Dual state rename recovery using register usage |
US20030023836A1 (en) * | 2001-06-01 | 2003-01-30 | Michael Catherwood | Shadow register array control instructions |
US20030217249A1 (en) * | 2002-05-20 | 2003-11-20 | The Regents Of The University Of Michigan | Method and apparatus for virtual register renaming to implement an out-of-order processor |
US20050138323A1 (en) * | 2003-12-18 | 2005-06-23 | Intel Corporation, A Delaware Corporation | Accumulator shadow register systems and methods |
US20060294344A1 (en) * | 2005-06-28 | 2006-12-28 | Universal Network Machines, Inc. | Computer processor pipeline with shadow registers for context switching, and method |
CN101788901A (zh) * | 2009-01-24 | 2010-07-28 | 世意法(北京)半导体研发有限责任公司 | 使用影子寄存器的高效硬件实现的设备及其方法 |
WO2013048420A1 (en) * | 2011-09-29 | 2013-04-04 | Intel Corporation | Bi-directional copying of register content into shadow registers |
CN103970505A (zh) * | 2013-01-24 | 2014-08-06 | 想象力科技有限公司 | 具有多个子寄存器文件的寄存器文件 |
CN108694056A (zh) * | 2017-03-30 | 2018-10-23 | 英特尔公司 | 用于基于二进制翻译的微处理器的混合原子性支持 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860000A (en) | 1996-01-31 | 1999-01-12 | Hitachi Micro Systems, Inc. | Floating point unit pipeline synchronized with processor pipeline |
US5933627A (en) | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US6298431B1 (en) | 1997-12-31 | 2001-10-02 | Intel Corporation | Banked shadowed register file |
US5986962A (en) | 1998-07-23 | 1999-11-16 | International Business Machines Corporation | Internal shadow latch |
EP1004959B1 (en) * | 1998-10-06 | 2018-08-08 | Texas Instruments Incorporated | Processor with pipeline protection |
US6240031B1 (en) | 2000-03-24 | 2001-05-29 | Cypress Semiconductor Corp. | Memory architecture |
US6430083B1 (en) | 2000-06-28 | 2002-08-06 | Intel Corporation | Register file scheme |
US6877084B1 (en) | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
US6950928B2 (en) * | 2001-03-30 | 2005-09-27 | Intel Corporation | Apparatus, method and system for fast register renaming using virtual renaming, including by using rename information or a renamed register |
US6795360B2 (en) | 2001-08-23 | 2004-09-21 | Integrated Device Technology, Inc. | Fifo memory devices that support all four combinations of DDR or SDR write modes with DDR or SDR read modes |
US7134002B2 (en) | 2001-08-29 | 2006-11-07 | Intel Corporation | Apparatus and method for switching threads in multi-threading processors |
US7213134B2 (en) | 2002-03-06 | 2007-05-01 | Hewlett-Packard Development Company, L.P. | Using thread urgency in determining switch events in a temporal multithreaded processor unit |
US7127592B2 (en) * | 2003-01-08 | 2006-10-24 | Sun Microsystems, Inc. | Method and apparatus for dynamically allocating registers in a windowed architecture |
US7069411B1 (en) * | 2003-08-04 | 2006-06-27 | Advanced Micro Devices, Inc. | Mapper circuit with backup capability |
US7426728B2 (en) * | 2003-09-24 | 2008-09-16 | Hewlett-Packard Development, L.P. | Reducing latency, when accessing task priority levels |
US7343480B2 (en) | 2003-10-09 | 2008-03-11 | International Business Machines Corporation | Single cycle context switching by swapping a primary latch value and a selected secondary latch value in a register file |
US8140829B2 (en) | 2003-11-20 | 2012-03-20 | International Business Machines Corporation | Multithreaded processor and method for switching threads by swapping instructions between buffers while pausing execution |
US7398347B1 (en) | 2004-07-14 | 2008-07-08 | Altera Corporation | Methods and apparatus for dynamic instruction controlled reconfigurable register file |
US7844804B2 (en) * | 2005-11-10 | 2010-11-30 | Qualcomm Incorporated | Expansion of a stacked register file using shadow registers |
US7565513B2 (en) | 2007-02-28 | 2009-07-21 | Advanced Micro Devices, Inc. | Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations |
US20080209185A1 (en) | 2007-02-28 | 2008-08-28 | Advanced Micro Devices, Inc. | Processor with reconfigurable floating point unit |
US7778105B2 (en) | 2008-03-17 | 2010-08-17 | Oracle America, Inc. | Memory with write port configured for double pump write |
US20110241744A1 (en) | 2008-08-28 | 2011-10-06 | Aspen Acquisition Corporation | Latch-based implementation of a register file for a multi-threaded processor |
KR101408339B1 (ko) | 2009-02-18 | 2014-07-02 | 삼성테크윈 주식회사 | 디지털 영상 처리 장치 및 그 제어 방법 |
US9207943B2 (en) | 2009-03-17 | 2015-12-08 | Qualcomm Incorporated | Real time multithreaded scheduler and scheduling method |
US20110004644A1 (en) | 2009-07-03 | 2011-01-06 | Via Technologies, Inc. | Dynamic floating point register precision control |
US9639369B2 (en) | 2013-11-11 | 2017-05-02 | Apple Inc. | Split register file for operands of different sizes |
US9514842B2 (en) | 2014-09-24 | 2016-12-06 | Apple Inc. | Memory testing system |
US10241800B2 (en) * | 2015-06-16 | 2019-03-26 | International Business Machines Corporation | Split-level history buffer in a computer processing unit |
US20170060593A1 (en) * | 2015-09-02 | 2017-03-02 | Qualcomm Incorporated | Hierarchical register file system |
US10622043B2 (en) | 2017-09-11 | 2020-04-14 | Qualcomm Incorporated | Multi-pump memory system access circuits for sequentially executing parallel memory operations |
-
2020
- 2020-05-18 US US16/877,112 patent/US11599359B2/en active Active
-
2021
- 2021-05-18 JP JP2022569465A patent/JP2023526788A/ja active Pending
- 2021-05-18 CN CN202180043050.6A patent/CN115867888A/zh active Pending
- 2021-05-18 EP EP21807866.5A patent/EP4154103A1/en active Pending
- 2021-05-18 KR KR1020227044317A patent/KR20230025402A/ko active Search and Examination
- 2021-05-18 WO PCT/US2021/032992 patent/WO2021236660A1/en unknown
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020087837A1 (en) * | 2000-12-28 | 2002-07-04 | Samra Nicholas G. | Dual state rename recovery using register usage |
US20030023836A1 (en) * | 2001-06-01 | 2003-01-30 | Michael Catherwood | Shadow register array control instructions |
US20030217249A1 (en) * | 2002-05-20 | 2003-11-20 | The Regents Of The University Of Michigan | Method and apparatus for virtual register renaming to implement an out-of-order processor |
US20050138323A1 (en) * | 2003-12-18 | 2005-06-23 | Intel Corporation, A Delaware Corporation | Accumulator shadow register systems and methods |
US20060294344A1 (en) * | 2005-06-28 | 2006-12-28 | Universal Network Machines, Inc. | Computer processor pipeline with shadow registers for context switching, and method |
CN101788901A (zh) * | 2009-01-24 | 2010-07-28 | 世意法(北京)半导体研发有限责任公司 | 使用影子寄存器的高效硬件实现的设备及其方法 |
WO2013048420A1 (en) * | 2011-09-29 | 2013-04-04 | Intel Corporation | Bi-directional copying of register content into shadow registers |
CN103970505A (zh) * | 2013-01-24 | 2014-08-06 | 想象力科技有限公司 | 具有多个子寄存器文件的寄存器文件 |
CN108694056A (zh) * | 2017-03-30 | 2018-10-23 | 英特尔公司 | 用于基于二进制翻译的微处理器的混合原子性支持 |
Also Published As
Publication number | Publication date |
---|---|
US20210357222A1 (en) | 2021-11-18 |
EP4154103A1 (en) | 2023-03-29 |
KR20230025402A (ko) | 2023-02-21 |
JP2023526788A (ja) | 2023-06-23 |
WO2021236660A1 (en) | 2021-11-25 |
US11599359B2 (en) | 2023-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8549263B2 (en) | Counter-based memory disambiguation techniques for selectively predicting load/store conflicts | |
JP5894120B2 (ja) | ゼロサイクルロード | |
US8966232B2 (en) | Data processing system operable in single and multi-thread modes and having multiple caches and method of operation | |
US20180011748A1 (en) | Post-retire scheme for tracking tentative accesses during transactional execution | |
KR101025354B1 (ko) | 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법 | |
US6651163B1 (en) | Exception handling with reduced overhead in a multithreaded multiprocessing system | |
US8131976B2 (en) | Tracking effective addresses in an out-of-order processor | |
US9043559B2 (en) | Block memory engine with memory corruption detection | |
TWI507980B (zh) | 最佳化暫存器初始化操作 | |
US7133969B2 (en) | System and method for handling exceptional instructions in a trace cache based processor | |
CN115867888A (zh) | 用于利用主-影子物理寄存器文件的方法和系统 | |
US20100205387A1 (en) | Apparatus utilizing efficient hardware implementation of shadow registers and method thereof | |
KR20070107772A (ko) | 비정렬 메모리 액세스 예측 | |
JP2012043443A (ja) | 連続フロープロセッサパイプライン | |
US9672298B2 (en) | Precise excecution of versioned store instructions | |
US20070061555A1 (en) | Call return tracking technique | |
US8645588B2 (en) | Pipelined serial ring bus | |
US20200192800A1 (en) | An apparatus and method for managing capability metadata | |
EP4034994B1 (en) | Retire queue compression | |
US20040148493A1 (en) | Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue | |
US6954848B2 (en) | Marking in history table instructions slowable/delayable for subsequent executions when result is not used immediately | |
US20210132985A1 (en) | Shadow latches in a shadow-latch configured register file for thread storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |