CN106095393B - 在回退阶段期间合并部分写结果的系统和方法 - Google Patents
在回退阶段期间合并部分写结果的系统和方法 Download PDFInfo
- Publication number
- CN106095393B CN106095393B CN201610455541.2A CN201610455541A CN106095393B CN 106095393 B CN106095393 B CN 106095393B CN 201610455541 A CN201610455541 A CN 201610455541A CN 106095393 B CN106095393 B CN 106095393B
- Authority
- CN
- China
- Prior art keywords
- write command
- size
- register
- write
- physical register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 36
- 238000013507 mapping Methods 0.000 claims abstract description 46
- 230000004044 response Effects 0.000 claims abstract description 8
- 238000003860 storage Methods 0.000 claims description 46
- 238000009826 distribution Methods 0.000 claims description 9
- 230000001419 dependent effect Effects 0.000 claims description 7
- 230000008520 organization Effects 0.000 claims description 2
- 239000000523 sample Substances 0.000 claims description 2
- 238000001514 detection method Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000004064 recycling Methods 0.000 description 2
- 238000005267 amalgamation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000004513 sizing Methods 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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
-
- 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
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
一种处理器,包括物理寄存器文件、重命名表、映射逻辑、尺寸跟踪逻辑和合并逻辑。重命名表映射对应较大索引和较小索引的结构寄存器。映射逻辑检测部分写指令,其中部分写指令所指定的结构寄存器已经被重命名表内的现有条目为先前写指令标示,且先前写指令的写尺寸大于部分写指令,则映射逻辑分配第一物理寄存器并以第一物理寄存器的第一物理寄存器索引更新现有条目的较小物理寄存器索引位置。如果先前写指令的写寸较大,则尺寸跟踪逻辑为部分写指令提供合并指示。合并逻辑响应于合并指示在部分写指令的回退期间合并部分写指令的结果与第二物理寄存器。
Description
技术领域
本发明一般地涉及解决处理器中所存储的结果尺寸问题的物理寄存器重命名,以及更加具体地涉及在回退(retire)阶段合并后续的部分写的结果与先前的较大写的结果。
背景技术
处理器包含一组寄存器以存储写操作的结果。由处理器的标准指令集架构(ISA)(比如的x86架构等)的子集执行写操作。在包括x86的许多架构中,执行写操作的指令可以引用的一组预定义的结构寄存器(architecture register)中的至少一个用于存储结果。越来越多新的处理器配置采用了物理寄存器文件(Physical Register File,PRF)重命名方式,其使得处理器设计更简明和实现更方便的设计扩展。具有PRF重命名的处理器包含用于存储操作结果的物理寄存器文件(PRF)和用于映射结构寄存器到物理寄存器(physical register)的重命名结构。PRF是一组物理寄存器,每一个使用一组索引或者指针等中的唯一一个来标识。重命名结构将一个指令引用的结构寄存器映射到相应的物理寄存器的索引。
在软件程序或者应用的执行期间,当遇到一个指令,其引用一结构寄存器存储指令的结果,处理器从物理寄存器索引的“空闲列表”(Freelist)当中分配可用的物理寄存器,附加或者以其他方式分配所选的索引给该指令,并更新重命名结构的一推测性部分以将该结构寄存器映射到所选的物理寄存器。当执行指令时,该索引用于访问物理寄存器以存储结果。当回退指令时,该索引可能被移动到该重命名结构的一回退部分(或者另外移动到一不同的重命名结构)以将物理寄存器映射到指定的结构寄存器。该物理到结构寄存器映射可以由后续的读操作使用直到重写或者重新定义为止。不需要单独的一组物理结构寄存器;代替地,仅简单地将结构标识符等映射到物理寄存器。因为简单地移动或者重新映射索引而不是必须在寄存器之间移动存储值,所以PRF重命名方式更有效率。
当架构使用允许仅修改整个寄存器的一部分的部分写操作的复杂操作数尺寸时,会出现定尺寸(sizing)问题。例如,x86架构使用这种复杂操作数尺寸,虽然本发明不限于x86架构。作为复杂操作数尺寸的示例,可以执行写指令以修改64位寄存器的8位、16位、32位或者64位,其中每一较大尺寸合并较小的写尺寸(因为从寄存器的相同尾部开始引用)。即使引用同一结构寄存器,每一指令也被分配一个单独的物理寄存器。写到同一结构寄存器的相同尺寸或者大于在先写操作的后续写操作在该系统中被适当地处理,而不用进一步修改。但是,写到同一结构寄存器的小于在先写操作的后续写操作则会造成引用同一结构寄存器的一后续读操作的问题,因为如果引用同一结构寄存器的读操作的源大于该后续写操作,则其没有保存完整的结果。
多源相关技术可以解决该问题,但是需要PRF的读端口至少加一倍。另一可能的解决方案是在读指令之前合并物理寄存器中存储的值,但是这要求在同一周期检测到发射的指令的所有源,这对于复杂情况可能减小发射带宽。该初步合并解决方案可能导致另外的无效率且可能强加关键的时序问题。
发明内容
根据一个实施例的处理器包括物理寄存器文件、重命名表、映射逻辑、尺寸跟踪逻辑和合并逻辑。物理寄存器文件包括多个物理寄存器,每一个由相应的物理寄存器索引标识。重命名表包括多个条目,多个条目中的每个存储结构标识符、较大物理寄存器索引和较小物理寄存器索引,其中结构标识符标识多个结构寄存器其中之一,其中结构标识符标识多个结构寄存器其中之一。映射逻辑探测部分写指令,其中部分写指令所指定的结构寄存器已经被重命名表内的现有条目为先前写指令标示,且先前写指令的写尺寸大于部分写指令,其中,映射逻辑分配第一物理寄存器并以第一物理寄存器的第一物理寄存器索引更新现有条目的较小物理寄存器索引。如果先前写指令的写尺寸大于部分写指令,则尺寸跟踪逻辑为部分写指令设置合并指示。合并逻辑响应于合并指示在部分写指令的回退期间合并部分写指令的结果与第二物理寄存器。第二物理寄存器由现有条目的较大物理寄存器索引标识。
尺寸跟踪逻辑可以访问现有条目的最后写尺寸位置以确定读指令是否指定源为映射到先前写指令和部分写指令两者的结构寄存器,其中,最后写尺寸位置存储最后写指令的写尺寸,其中最后写指令是先前写指令和部分写指令中较晚的一个。如果读指令的源的尺寸大于最后写指令的写尺寸,则尺寸跟踪逻辑确定读指令是否指定源为映射到先前写指令和部分写指令两者的结构寄存器。
如果尺寸跟踪逻辑确定读指令指定源为映射到先前写指令和部分写指令两者的结构寄存器,则尺寸跟踪逻辑标记读指令为自串行化并设置读指令为依赖于先前写指令。。
处理器可以进一步包括重命名切换逻辑,其在部分写指令回退时将第一物理寄存器变换到回退的非结构状态,并在先前写指令回退时将第二物理寄存器变换到回退的结构状态。重命名切换逻辑可以当后续指令重新映射在重命名表的现有条目中标识的结构寄存器时,回收第一和第二物理寄存器。
处理器可以进一步包括部分写缓冲器,其在部分写指令的写回期间存储部分写指令的结果,且其中,合并逻辑从部分写缓冲器读取部分写指令的结果。
先前写指令的写尺寸存储在现有条目的较大写尺寸位置中,且其中,映射逻辑访问较大写尺寸位置以确定是否更新现有条目的较小物理寄存器索引。此外,先前写指令的写尺寸存储在现有条目的较大写尺寸位置中,且其中,尺寸跟踪逻辑访问较大写尺寸位置以确定是否提供合并指示。合并指示存储为用于部分写指令的重新排序缓冲器的条目中的合并位。
一种在处理器中解决尺寸问题的合并部分写结果的方法,包括:从寄存器文件为第一写指令分配第一物理寄存器,并且映射第一物理寄存器到结构寄存器;从寄存器文件为引用结构寄存器的第二写指令分配第二物理寄存器;比较第二写指令的写尺寸与第一写指令的写尺寸;根据比较的结果映射第二物理寄存器到结构寄存器;如果第二写指令的写尺寸小于第一写指令的写尺寸,则为第二写指令提供合并指示;和在第二写指令回退时,响应于合并指示将第二写指令的结果合并到第一物理寄存器中。
该方法可以包括在用于结构寄存器的重命名表的条目的较大位置中存储第一索引。该方法可以包括如果第二写指令的写尺寸小于第一写指令的写尺寸,则在条目的较小位置中存储第二索引,以及如果第二写指令的写尺寸不小于第一写指令的写尺寸,则在条目的较大位置中存储第二索引。该方法可以包括读取映射到第二写指令的重命名表的条目中存储的第二写指令的尺寸值。该方法可以包括当读指令指定源为映射到第一写指令和第二写指令两者的结构寄存器时,标记读指令为自串行化和使得读指令依赖于第一写指令。
方法可以进一步包括在第二写指令回退时,将第一物理寄存器转变到已回退非结构状态;和在第一写指令回退时,将第二物理寄存器转变到已回退结构状态。该方法可以包括当后续指令重新映射结构寄存器时回收第一和第二物理寄存器。
该方法可以进一步包括如果第二写指令的写尺寸小于第一写指令的写尺寸,则在第二写指令的写回期间将第二写指令的结果存储到部分写缓冲器中,并且在合并期间从部分写缓冲器读取第二写指令的结果。该方法可以包括存储第一写指令的写尺寸,以及比较第二写指令的写尺寸与所存储的第一写指令的写尺寸。该方法可以包括存储合并指示为在用于第二写指令的重新排序缓冲器的条目中的合并位。
附图说明
本发明的益处、特征和优点将关于以下描述和附图而变得更好理解,在附图中:
图1是根据本发明一个实施例实现的超标量、流水线处理器的简化框图;
图2是根据本发明一个实施例的图1的重命名表的图;
图3是图示根据一个实施例的在图1的处理器的不同处理阶段期间每一指令μop1、μop2和μop3的操作的一系列图;
图4是图示根据一个实施例的比如在RAT阶段期间在图1的RAT内的在前端的操作和比如在回退阶段期间在图1的ROB内的在后端的操作以执行尺寸分析、合并操作、指令依赖性确定以及物理寄存器的状态的框图;
图5是图示由图4的重命名切换逻辑控制的图1的物理寄存器文件的每个物理寄存器的状态的状态图;和
图6是图示根据本发明一个实施例的在写指令的回退阶段期间合并部分写结果的方法的流程图。
具体实施方式
本发明人已经认识到由使用复杂操作数尺寸的指令集架构引起的PRF重命名方式的定尺寸问题。他因此开发了存储部分写结果和在回退阶段合并结果的系统和方法。重命名表中的每一结构条目包括一较大写索引位置和一较小写索引位置。在一些实施例中,每一结构条目进一步包括一较大写尺寸位置和一最后写尺寸位置。映射逻辑对每一写指令分配一物理寄存器,并相应地更新重命名表。尺寸跟踪逻辑监控重命名表并为一部分写指令提供合并指示,该部分写指令将较小的部分写到与一先前的较大写指令相同的结构寄存器。在一些实施例中,提供一部分写缓冲器以临时存储仅修改完整寄存器尺寸的一部分的部分写指令的结果。当第二且较小尺寸的写指令回退时,如果有合并指示提供给该第二写指令,则在回退阶段中,合并逻辑合并第二且较小尺寸的写指令的结果与较大写操作的物理寄存器。读取该结构寄存器的后续指令将自身标记为自串行化(Self-Serializing,SS),意味着其被标记为将最后被分派用于执行,且如果该读指令指定的源为同时映射到该较小写指令和该较大写指令两者的结构寄存器,则设置其依赖于该较大写操作。
在更特定的配置中,映射逻辑将对第一写指令分配的物理寄存器的索引存储到一指定的结构条目的一较大写索引位置中。当映射逻辑检测到对同一结构寄存器的第二、后续且较小尺寸的写指令时,其将对第二写指令分配的另一物理寄存器的索引存储到该指定的结构条目的一较小写索引位置中。在更特定的配置中,映射逻辑进一步将该第一写指令的相应的尺寸存储到该指定的结构条目的一较大写尺寸位置中。以该方式,尺寸跟踪逻辑通过比较该第二写指令的尺寸与该较大写尺寸位置中存储的该第一写指令的尺寸来检测定尺寸问题,且然后如果该第二写指令的尺寸小于该第一写指令的尺寸,则提供上述合并指示,以使得在该第二写指令的回退时将部分写结果与结构寄存器合并。在更特定的配置中,映射逻辑进一步将一“最后写指令”的相应的尺寸存储到该指定的结构条目的一最后写尺寸位置中,其中该“最后写指令”是该第一写指令和该第二写指令中较晚的那一个。
图1是根据本发明一个实施例实现的超标量、流水线处理器100的简化框图。如在此使用的术语“处理器”指的是任何类型的处理单元,包括微处理器、中央处理单元(CPU)、处理核心、微控制器等。如在此使用的术语“处理器”还包括任何类型的处理器配置,比如在芯片上集成的处理单元或者包括并入片上系统(SOC)内的处理单元的集成电路(IC)等。
处理器100包括高速缓存指令集架构(ISA)(比如,x86指令集架构等)的宏指令的指令高速缓存102。预期另外的或者替换的指令集架构。处理器100包括接收并翻译宏指令为微指令的指令翻译器104。然后将微指令提供给寄存器别名表(RAT)106,该寄存器别名表(RAT)106生成微指令依赖性并以程序次序发射微指令到保留站(RS)108和重新排序缓冲器(ROB)110,该重新排序缓冲器(ROB)110为每个从RAT 106发射的指令存储一条目(Entry)并保证指令的按次序的回退。对于微指令示出了示例性条目117,示为“μopx”。从RAT 106发射的微指令可以典型地被称为微指令,但是更一般地在这里被简称为“指令”。
RS 108,另外地被称为分派器,分派指令到多个执行单元112中适当的一个。虽然未特别地示出,执行单元112可以包括一个或多个整数执行单元,比如整数算术/逻辑单元(ALU)等,一个或多个浮点执行单元,比如包括单指令多数据(SIMD)执行单元,比如MMX和SSE单元等,存储器次序缓冲器(MOB),等等。写指令的任何结果被经由写回(Write Back,WB)路径写到物理寄存器文件(PRF)114内的物理寄存器。与写指令对应的ROB 110条目存储到用于写结果的物理寄存器的索引。在一些实施例中,每一部分写指令的ROB 110条目另外存储一个合并位(M),其当部分写指令通过RAT 106且该合并指示MI被声明(asserted)时由RAT 106设置。在一个实施例中,进一步包括一部分写缓冲器113用于在写回期间临时存储部分写结果,以缓解在部分写指令的回退期间进行合并时请求使用PRF 114的读端口的压力。在其他实施例中,如果PRF 114的读端口足够,则可以省略部分写缓冲器113,且仅在PRF114中存储部分写结果。在一个实施例中,即使可能没不指示合并也在部分写缓冲器113中存储每一部分写指令的结果。如在这里进一步描述的,ROB 110包括合并逻辑115,该合并逻辑115响应于被置位的合并位,将部分写结果合并到PRF 114内的物理寄存器中。
RAT 106包括重命名表116、映射逻辑118、空闲列表120和尺寸跟踪逻辑122。重命名表116交叉引用或者映射结构寄存器到PRF 114的物理寄存器。空闲列表120存储相应于未分配的物理寄存器的索引的列表。当写操作引用一个结构寄存器用于存储结果时,映射逻辑118查阅空闲列表120并选择和分配一个物理寄存器。映射逻辑118然后将分配的物理寄存器的索引存储到与该写指令引用的结构寄存器对应的重命名表116的条目中。以该方式,物理寄存器最初映射到该结构寄存器和该写指令两者。如在这里另外描述的,重命名表116的每一条目包括用于存储对应到同一结构寄存器的较小的和较大的写的物理寄存器索引的位置。尺寸跟踪逻辑122检测一合并条件是否满足,在该合并条件中,第一物理寄存器(和/或部分写缓冲器113,如果提供部分写缓冲器113的话)中存储的部分写结果要与映射到与第一物理寄存器相同的结构寄存器的第二物理寄存器合并。当检测到这样的合并条件时,尺寸跟踪逻辑122声明用于部分写指令的MI信号且RAT 106在ROB 110中设置相应的条目的M位。注意到,该M位可以在被推入ROB 110条目中的指令信息中预先设置好,或者可以在ROB 110的条目内直接设置。在一个实施例中,当比较部分写指令的写尺寸与先前且较大的写指令的写尺寸,且比较结果是前者较小时,则满足前述合并条件。
图2是根据本发明一个实施例的重命名表116的图。用于处理器100的ISA,比如图示的配置中的x86,允许使用复杂操作数尺寸对每一结构寄存器进行部分写。x86结构包括可以以多个尺寸访问的若干结构寄存器。64位版本包括寄存器标号RAX、RBX、RCX、RDX等,(64位使用前缀为‘R’的标号),其中使用这些64位标号中的任意的写操作是到整个寄存器的写。这些寄存器分别包括32位标号EAX、EBX、ECX、EDX等,(32位使用前缀为‘E’的标号)以及分别包括16位标号AX、BX、CX、DX等,(16位仅使用寄存器名而没有前缀的字母)。也可以定义8位标号,但是每一典型地是写到16位版本的最高有效字节(MSB)或者最低有效字节(LSB)且不进一步描述。重命名表116中的结构标识符仅需要包括单个引用以用于任何给定寄存器或者其部分。
在讨论重命名表116的新颖的配置之前,首先描述传统的配置。在传统的配置中,每一表条目的推测性部分仅包括用于存储所分配的物理寄存器的索引的单个位置,且结构标识符可以标识包括部分寄存器标号的每一寄存器。在传统的配置的操作中,映射逻辑118检测引用结构寄存器的写指令,选择并分配用于存储写操作的结果的物理寄存器,并查阅重命名表116以确定对于该结构寄存器是否有条目已经存在。如果还未存在条目,则映射逻辑118分配重命名表116中的新条目,并将结构寄存器标识符写到新条目的ARCH位置中。映射逻辑118然后将所分配的物理寄存器的索引写到新条目或者更新的条目的推测性部分中。RETIRE(回退)位置的值尚未确定。假定写指令以相同的结构和物理寄存器映射回退,则映射逻辑118通过将物理寄存器的索引从该结构寄存器的推测性位置移动或者以其他方式复制到回退位置来改变结构映射。注意到,各种配置可以包括不同推测性和回退的重命名表,但是操作实质上类似。
当一系列指令采用其中多个物理寄存器存储同一结构寄存器的各部分的复杂操作数尺寸时,传统配置面临挑战。作为示例,考虑以下指令模式:
μop1) MOV EAX,EBX
μop2) MOV AX,CX
μop3) MOV ESP,EAX
其中每一指令图示为微指令或者微操作(μop)。为第一MOV指令(μop1)分配第一物理寄存器,且所分配的物理寄存器映射到EAX结构寄存器。第一MOV指令μop1指示处理器100将32位寄存器EBX的内容移动到32位寄存器EAX中。在实际操作中,分配给EBX的物理寄存器的内容移动到为EAX分配的物理寄存器中。为第二MOV指令(μop2)分配第二物理寄存器,且第二物理寄存器映射到AX结构寄存器。第二MOV指令μop2指示处理器100将16位寄存器CX的内容移动到16位寄存器AX中。在实际操作中,内容根据映射从一个物理寄存器移动到另一物理寄存器。但是,注意到结构寄存器AX是结构寄存器EAX的最低有效部分(下半部),以使得有效地EAX结构寄存器的内容意在被μop2修改。因此,第一和第二物理寄存器都不保存EAX结构寄存器的完整内容;代替地,每个中存储一部分。为第三MOV指令(μop3)分配第三物理寄存器,且第三物理寄存器映射到ESP结构寄存器(例如,栈指针寄存器)。第三MOV指令意在将EAX的内容移动到ESP中。但是,EAX的内容在两个不同物理寄存器之间分布,以使得μop3不能从单个物理寄存器取出EAX的完整内容。已经使用各种方法来解决该情况,比如多源依赖技术和预合并操作,但是这些方法具有显著的缺点。
如在这里描述的在回退阶段期间合并部分写结果的系统和方法解决了所存储的结果尺寸问题的情况而不引入相同缺点。如在这里进一步描述的对于重命名表116及处理器100的其他部分操作的修改。重命名表116的每一行形成对应于一个被引用的结构寄存器的条目,且每个条目包括用于存储该条目的相应值的多个存储位置。对于每一条目,第一列(在左边)包括用于存储该条目的结构寄存器(ARCH)标识符的位置,接下来三列包括用于存储用于该条目的推测性操作值的位置,且最后一列提供用于存储用于该条目的操作的RETIRE阶段的物理寄存器索引的位置。这些推测性操作值包括用于存储较大的写指令的物理寄存器索引的LARGER(“较大”)位置和用于存储较小的写指令的物理寄存器索引的SMALLER(“较小”)位置。在一些实施例中,这些推测性操作值进一步包括用于存储指示该条目的最后写尺寸的尺寸值的LAST WRITE SIZE(“最后写尺寸”)位置。
如图所示,第一条目202将由索引PRA标识的物理寄存器(或者简称为物理寄存器PRA)映射到结构寄存器EBX,且第二条目204将物理寄存器PRB映射到结构寄存器ECX。这些映射可以是已经完成的在先指令的结果,其中条目202和204的RETIRE位置分别存储索引PRA和PRB,其指示EBX映射到物理寄存器PRA和ECX映射到物理寄存器PRB。第三条目206和第四条目208图示如上所述的MOV指令μop1、μop2和μop3的结果。响应于μop1,映射逻辑118分配重命名表116中的条目206并将标识符EAX存储到ARCH位置中以标识用于32位配置的结构寄存器EAX。对于64位配置,标识符可以代替地是RAX。映射逻辑118查阅空闲列表120,分配使用索引PRC访问的可用的物理寄存器,和在条目206的LARGER位置中存储索引PRC。映射逻辑118进一步检测写的尺寸为32位,并在条目206的LAST WRITE SIZE位置中存储尺寸值SZ1,其指示最后写尺寸(其是迄今为止的第一写尺寸)是32位。此时条目206的SMALLER和RETIRE位置尚未定义。以该方式,由索引PRC标识的物理寄存器推测性地映射到结构寄存器EAX和到第一MOV指令μop1。
第二MOV指令μop2引用结构寄存器AX,其是结构寄存器EAX的最低有效部分。映射逻辑118查阅空闲列表120,分配使用索引PRD访问的可用的物理寄存器,和当映射逻辑118检测到第二MOV指令μop2(16位)的写尺寸小于第一MOV指令μop1(32位)时在条目206的SMALLER位置中存储索引PRD。注意到如果映射逻辑118检测到第二MOV指令μop2的写尺寸(例如,如果μop2的写尺寸是32位)大于或者等于第一MOV指令μop1(32位),则在条目206的LARGER位置中存储PRD以覆写索引PRC。也就是,条目206的LARGER位置总是记录引用同一结构寄存器EAX的最大的写指令的尺寸。映射逻辑118进一步将条目206的LAST WRITE SIZE中的值SZ1更新为值SZ2,其指示引用结构寄存器EAX的写指令的最后写尺寸是16位。如图所示,SZ1由SZ2替代。条目206的RETIRE位置仍然尚未定义。响应于μop3,映射逻辑118分配重命名表116中的条目208,并将标识符ESP存储到ARCH位置中以标识结构寄存器ESP。映射逻辑118查阅空闲列表120,分配使用索引PRE访问的可用的物理寄存器,和在条目208的LARGER位置中存储索引PRE。映射逻辑118进一步检测写的尺寸为32位,并在条目208的LASTWRITE SIZE中存储尺寸值SZ3。
与传统的配置类似,第一和第二物理寄存器PRC和PRD都不保存EAX结构寄存器的完整内容。最后的第三MOV指令μop3不能从单个物理寄存器取出EAX的完整内容。如果第二MOV指令μop2的写尺寸小于或者等于第一MOV指令μop1,则尺寸跟踪逻辑122监视重命名表116是否检测到一合并条件,即检测第二MOV指令μop2的写尺寸是否小于或者等于第一MOV指令μop1。先前的较大的写结果要存储在物理寄存器PRC中,然而后续的较小的写结果要存储在物理寄存器PRD中。因此尺寸跟踪逻辑122提供用于第二MOV指令μop2的合并指示MI。当μop2通过RAT阶段时,当被指示时,合并指示存储为对第二MOV指令μop2分配的ROB 110的相应的条目中的M位。
当该部分写指令回退时,如果ROB条目的M位是被置位的话则会引起合并操作。如在这里进一步描述的,在执行μop3之前,合并逻辑115检测ROB条目的M位被置位,并合并物理寄存器PRD与物理寄存器PRC的部分结果。在一个实施例中,如果检测到μop2的写尺寸小于与LARGER位置对应的写指令的尺寸,则在μop2的写回阶段期间,部分结果存储在物理寄存器PRD中,或者部分写缓冲器113(如果提供的话)中,或者两者中。在提供部分写缓冲器113以缓解对于PRF 114的读端口的需要的压力的实施例中,当进行合并时,合并逻辑115从部分写缓冲器113读取μop2的部分写指令的结果,而不是从PRD读取。在不提供部分写缓冲器113的其他实施例中,在μop2的写回阶段期间部分结果仅存储到PRF 114的物理寄存器PRD中。在这种实施例中,当进行合并操作时,合并逻辑115从PRF 114中的物理寄存器PRD读取部分写指令μop2的结果。要合并的部分写结果的尺寸由在ROB 110的相应的条目中提供的部分写指令μop2本身指示。
图3是图示根据一个实施例的处理器100的不同处理阶段期间每一指令μop1、μop2和μop3的操作的一系列图。图中的RAT阶段302示出由RAT 106执行的操作和结果。每一指令包括多个字段,比如指令标识符ID、源标识符SRC、目的地标识符DST和自串行化字段SS。虽然未示出,但是还可以包括一合并字段,用于存储合并指示位M。尺寸跟踪逻辑122检测其中读指令读取未包括在单个物理寄存器内而是代替地分布到多个物理寄存器中的值的定尺寸问题,以使得需要在读操作之前将值合并在一起。如果是这样的话,尺寸跟踪逻辑122通过将SS字段中的值声明为逻辑“1”来标记指令为自串行化。可以包括但不示出另外的字段。此外,任何给定指令可以不使用所有提供的字段。例如,一个存储立即数到寄存器或者存储器位置中的存储指令可以包括目的地值但不包括源值。
如在RAT阶段302中所示的,μop1的源是映射到EBX的物理寄存器PRA,且目的地是映射到EAX的物理寄存器PRC。μop1不标记为自串行化以使得它的SS值是“0”。μop2的源是映射到ECX的物理寄存器PRB,且目的地是映射到EAX的物理寄存器PRD。此外,μop2不标记为自串行化以使得它的SS值是“0”。μop3的源是映射到EAX的物理寄存器PRC,且目的地是映射到ESP的物理寄存器PRE。如果尺寸跟踪逻辑122从重命名表116检测到μop3的源的尺寸(32位)大于LAST WRITE SIZE位置的值SZ2(16位),则确定读指令μop3指定它的源EAX为映射到μop2和μop1两者的目的地。也就是,两个不同物理寄存器PRC和PRD保存指令μop3要读取的值而不是仅最后写指令μop2的物理寄存器PRD。在那种情况下,尺寸跟踪逻辑122标记μop3为自串行化以使得它的SS值是“1”。当μop3被发射到RS 108时,在指令μop1和μop2已经回退之前,RS 108不分派μop3用于执行。此外,尺寸跟踪逻辑122设置μop3为依赖于μop1而不是μop2。
RS/EU/WB阶段304集中地示出RS 108、EU 112中和每一指令μop1-μop3的WB期间的操作的结果。示出PRF 114的一部分,包括物理寄存器PRA、PRB、PRC、PRD和PRE。在μop1的执行期间,以交叉阴影底纹示出的物理寄存器PRA的内容移动到物理寄存器PRC。在μop2的执行期间,以阴影线底纹示出的物理寄存器PRB的部分内容移动到物理寄存器PRD。在包括部分写缓冲器113的一些实施例中,部分内容也移动到部分写缓冲器113内的位置305以便如果被指示的话,便利后续的合并操作。在一个实施例中,如果部分写缓冲器113已满,则处理器100的前端可以临时停转直到部分写缓冲器113中存储位置可用为止。在μop3的执行期间,物理寄存器PRC的内容移动到物理寄存器PRE。但是,当检测到μop3的源大于LAST WRITESIZE位置的值SZ2时,暂不执行μop3,直到在RETIRE阶段306中执行合并操作之后为止。当然,如果检测到μop3的源不大于LAST WRITE SIZE值SZ2,则设置μop3依赖于最后写指令,例如μop2。
RETIRE阶段306图示在μop1的回退期间,ROB 110通过将用于物理寄存器PRC(具有索引PRC)的索引PRC复制到重命名表116内的条目206的RETIRE位置,来改变EAX的结构映射。在μop2的回退期间,如果合并逻辑115检测到μop2的ROB条目中M位被置位,则合并逻辑115将物理寄存器PRD的部分内容或者部分写缓冲器113的位置305中存储的部分内容合并到物理寄存器PRC的相应的部分中。μop2的ROB条目中存储的值指示要合并的部分写的尺寸。当μop3根据其ROB条目将物理寄存器PRC的内容移动到物理寄存器PRE时,物理寄存器PRC的内容已经与来自部分写缓冲器113(或者来自物理寄存器PRD)的μop2的部分写合并,以使得物理寄存器PRE存储正确结果。在μop3的回退期间,ROB 110通过将用于物理寄存器PRE的索引PRE复制到重命名表116内的条目208的RETIRE位置,来改变ESP的结构映射。以该方式,结构寄存器ESP映射到存储μop1-μop3的正确结果的物理寄存器PRE。
在一个实施例中,部分写缓冲器113由对于ROB 110的每一条目提供的ROB索引来索引。部分写缓冲器113的条目在RAT阶段302分配且使用ROB索引提前占据条目。在WB阶段期间,结果被根据指令的ROB索引写入到部分写缓冲器113中。此外,合并操作需要的任何附加信息,比如μop2的合并尺寸、μop1的合并尺寸等,存储在回退的指令的ROB条目中。ROB110检测到μop2正在回退,且如果合并逻辑115检测到设置μop2的ROB条目的M位,则合并逻辑115进行合并操作。注意到,如果合并条件满足,比如当μop2的写尺寸SZ2小于μop1的“较大的写尺寸”SZ1时,则尺寸跟踪逻辑122置位μop2的ROB条目中的M位。
在如图2进一步所示的一些实施例中,先前且较大的写指令(例如,μop1)的写尺寸被存储在条目206的一LARGER WRITE SIZE位置,其LARGER位置已经由先前且较大的写指令(例如,μop1)写过至少一次。当前写指令(例如,μop2)的写尺寸与LARGER WRITE SIZE位置的值比较,且如果当前写指令的写尺寸较小,则SMALLER位置由μop2的物理寄存器PRD的索引更新,且μop2的ROB条目的M位被置位以指示μop2是部分写指令且在RETIRE阶段306期间需要合并操作。
图4是图示根据一个实施例的在RAT阶段302期间在RAT 106内的在前端的操作和比如回退阶段306期间在ROB 110内的在后端的操作,以执行尺寸分析、合并操作、指令依赖性确定以及物理寄存器的状态的框图。如前所述,尺寸跟踪逻辑122监视重命名表116的改变并在RAT阶段302期间在ROB条目中声明MI信号以指示合并操作。重命名切换逻辑402也跟踪来自重命名表116和尺寸跟踪逻辑122的信息以设置指令的依赖性并且指示所述映射逻辑118回收物理寄存器回到空闲列表120。合并逻辑115包括(经由合并位M等)检测MI信号的回退分析逻辑404和用于便利和控制PRF 114的不同物理寄存器和部分写缓冲器113之间的合并操作的合并控制逻辑406。回退分析逻辑404也与映射逻辑118通信以更新重命名表116,比如在RETIRE阶段306期间更新结构寄存器映射。
图5是图示由重命名切换逻辑402控制的PRF 114的每一物理寄存器的状态的状态图。每一物理寄存器具有空闲(I)状态502、未完成(NC)状态504、完成(C)状态、回退和等待回收(RR)状态508和回退结构(RA)状态510。空闲列表120中标识的每一物理寄存器最初处于I状态502。当分配物理寄存器时,寄存器的状态变换到NC状态504。在写回(WB)阶段期间相应的写指令的执行之后,相应的寄存器的状态变换到C状态506。在正常操作期间,在相应的指令的回退时,寄存器的状态变换到RA状态510。例如,分别映射到结构寄存器EBX和ECX的重命名表116中示出的物理寄存器PRA和PRB处于RA状态510。在重新定义结构寄存器到另一物理寄存器的后续指令回退时,使得先前映射到同一结构寄存器的物理寄存器被回收或者去分配,其状态回到I状态502。
RR状态508是用于当回退相应的指令时不回退到RA状态510的,且保存部分写结果的物理寄存器的附加状态。基本上,这意味着该物理寄存器不映射到任何结构寄存器,而是作为用于转发结果的临时寄存器。作为示例,在μop2的回退时,重命名表116的条目206中示出的物理寄存器PRD不映射到结构寄存器EAX,以使得它不变换到RA状态510。代替地,在μop2的回退时,物理寄存器PRD变换到RR状态508。当对同一结构寄存器发生后续写时,处于RR状态508或者RA状态510的物理寄存器以与传统方法中同样的方式回收。例如,到结构寄存器EAX(当前映射到如重命名表116的条目206中所示的物理寄存器PRC)的后续写使得物理寄存器PRC和PRD两者回收。在处理器100的清洗(flush)的情况下,处于NC状态504或者C状态506的任何物理寄存器返回到I状态502。
图6是图示根据本发明一个实施例的在写指令的回退阶段期间合并部分写结果的方法的流程图。在第一步骤602,从PRF 114为第一写指令分配第一物理寄存器。在先前示例中,映射逻辑118为第一写指令μop1分配物理寄存器PRC。在下一步骤604,将第一物理寄存器映射到一个结构寄存器。比如μop1的指令指定比如EAX的结构寄存器,并且在PRC和EAX之间的映射存储在重命名表116中。假定用于EAX的映射先前不存在,则在重命名表116中做出新条目(例如,条目206)且将索引PRC写到该条目的LARGER位置中。LARGER位置用于写入第一写指令和相同尺寸或者更大的任何后续写指令的物理寄存器的索引。
在下一步骤606,从PRF 114对第二写指令分配第二物理寄存器。继续上述的示例,映射逻辑118对第二写指令μop2分配理寄存器PRD。假定第二写指令引用同一结构寄存器(例如,EAX或者其子集或者超集),则在下一步骤608,比较第二写指令的写尺寸与第一写指令的写尺寸。在下一步骤610,第二物理寄存器根据比较第一和第二指令的尺寸的结果映射到结构寄存器。如果第二写指令的尺寸与第一写指令的尺寸相同或者大于第一写指令的尺寸,则用于第一写指令的条目中的索引被用于第二写指令的索引覆写。但是,如果第二写指令的尺寸小于第一写指令的尺寸,则用于第二写指令的索引写到用于同一结构寄存器的同一条目的SMALLER位置中。例如,如重命名表116中所示,用于第二写指令μop2的索引PRD存储在用于EAX的条目206的SMALLER位置中。
如在下一步骤612中所述的,如果第二写指令的尺寸小于第一写指令的尺寸,则为第二写指令提供合并指示。如图1所示,当满足该条件时声明合并指示信号MI。在如图所示的一个实施例中,MI信号用于设置ROB 110中第二写指令μop2对应的条目中的合并位M。在最后步骤614,在第二写指令的回退时,第二写指令的结果响应于合并指示与第一物理寄存器合并。如在第二写指令μop2的RETIRE阶段306期间的图3所示,例如,用于第二写指令μop2的物理寄存器PRD中存储的部分结果由合并逻辑115与分配给第一写指令μop1的物理寄存器PRC合并。替代地,第二写指令μop2的部分结果存储在部分写缓冲器113中(如果提供),则从部分写缓冲器113检索该部分结果。
该方法可以包括附加的步骤,比如标记后续读指令(例如,μop3)为自串行化和当读指令指定同一结构为源时使得读指令依赖于第一写指令。方法可以另外包括在第二写指令的回退时将第一物理寄存器变换到回退的非结构状态,并在第一写指令的回退时将第二物理寄存器变换到回退的结构状态。该方法可以包括当后续指令重新映射重命名表中的结构寄存器时回收第一和第二物理寄存器。该方法可以包括如果第二写指令的写尺寸小于第一写指令的写尺寸则在第二写指令的写回期间将第二写指令的结果存储到部分写缓冲器中,以及在合并操作期间从部分写缓冲器读取第二写指令的结果。该方法可以包括存储第一写指令的写尺寸,以及比较第二写指令的写尺寸与所存储的第一写指令的写尺寸。该方法可以包括在重新排序缓冲器(例如,ROB 110)中第二写指令对应的条目中存储合并指示为合并位。
已经呈现前述描述以使本领域技术人员能够做出和使用如在特定的申请的上下文和其需要内提供的本发明。虽然已经参考其某些优选的版本相当多详细描述了本发明,但其他版本和变化是可能的且被预见。对优选实施例的各种修改将是对本领域技术人员显然的,且在这里定义的通用原理可以应用于其他实施例。例如,在这里描述的块可以以包括逻辑器件或者电路等的任何适当的方式实现。本领域技术人员应该认识到,他们为了进行本发明的相同目的可以容易地使用公开的概念和特定实施例作为设计或者修改其他结构的基础,而不脱离本发明的精神和保护范围。因此,本发明不意在限于在这里示出和描述的特定的实施例,而是根据按照在这里公开的原理和新颖特征的最宽范围。
Claims (20)
1.一种处理器,包括:
物理寄存器文件,包括多个物理寄存器,每个由多个物理寄存器索引中的相应一个标识;
具有多个条目的重命名表,所述多个条目中的每个存储结构标识符、较大物理寄存器索引和较小物理寄存器索引,其中所述结构标识符标识多个结构寄存器其中之一;
映射逻辑单元,其探测部分写指令,其中所述部分写指令所指定的结构寄存器已经被所述重命名表内的现有条目为先前写指令标示,且所述先前写指令的写尺寸大于所述部分写指令,其中,所述映射逻辑单元分配第一物理寄存器并以所述第一物理寄存器的第一物理寄存器索引更新所述现有条目的所述较小物理寄存器索引;
尺寸跟踪逻辑单元,如果所述先前写指令的所述写尺寸大于所述部分写指令,则为所述部分写指令设置合并指示;和
合并逻辑单元,响应于所述合并指示在所述部分写指令的回退期间合并所述部分写指令的结果与第二物理寄存器,其中,所述第二物理寄存器由所述现有条目的所述较大物理寄存器索引标识。
2.如权利要求1所述的处理器,其中,所述尺寸跟踪逻辑单元访问所述现有条目的最后写尺寸位置以确定读指令是否指定源为映射到所述先前写指令和所述部分写指令两者的所述结构寄存器,其中,所述最后写尺寸位置存储最后写指令的写尺寸,其中所述最后写指令是所述先前写指令和所述部分写指令中较晚的一个。
3.如权利要求2所述的处理器,其中,如果所述读指令的所述源的尺寸大于所述最后写指令的所述写尺寸,则所述尺寸跟踪逻辑单元确定所述读指令指定所述源为映射到所述先前写指令和所述部分写指令两者的所述结构寄存器。
4.如权利要求1所述的处理器,其中,如果所述尺寸跟踪逻辑单元确定读指令指定源为映射到所述先前写指令和所述部分写指令两者的所述结构寄存器,则所述尺寸跟踪逻辑单元标记所述读指令为自串行化并设置所述读指令为依赖于所述先前写指令。
5.如权利要求1所述的处理器,进一步包括重命名切换逻辑单元,其在所述部分写指令回退时将所述第一物理寄存器变换到回退的非结构状态,并在所述先前写指令回退时将所述第二物理寄存器变换到回退的结构状态,其中
所述回退的非结构状态指示所述第一物理寄存器在所述部分写指令回退时是未映射至所述结构寄存器的,
所述回退的结构状态指示所述第二物理寄存器在所述先前写指令回退时是映射至所述结构寄存器的。
6.如权利要求5所述的处理器,其中,当后续指令重新映射在所述重命名表的所述现有条目中标识的所述结构寄存器时,所述重命名切换逻辑单元回收所述第一和第二物理寄存器。
7.如权利要求1所述的处理器,进一步包括部分写缓冲器,其在所述部分写指令的写回期间存储所述部分写指令的所述结果,且其中,所述合并逻辑单元从所述部分写缓冲器读取所述部分写指令的所述结果。
8.如权利要求1所述的处理器,其中,所述先前写指令的所述写尺寸存储在所述现有条目的较大写尺寸位置中,且其中,所述映射逻辑单元访问所述较大写尺寸位置以确定是否更新所述现有条目的所述较小物理寄存器索引。
9.如权利要求1所述的处理器,其中,所述先前写指令的所述写尺寸存储在所述现有条目的较大写尺寸位置中,且其中,所述尺寸跟踪逻辑单元访问所述较大写尺寸位置以确定是否提供所述合并指示。
10.如权利要求1所述的处理器,其中,所述合并指示存储为用于所述部分写指令的重新排序缓冲器的条目中的合并位。
11.一种解决处理器中的尺寸问题的合并部分写结果的方法,包括:
从寄存器文件为第一写指令分配第一物理寄存器,并且映射第一物理寄存器到结构寄存器;
从寄存器文件为引用所述结构寄存器的第二写指令分配第二物理寄存器;
比较所述第二写指令的写尺寸与所述第一写指令的写尺寸;
根据所述比较的结果映射所述第二物理寄存器到所述结构寄存器;
如果所述第二写指令的写尺寸小于所述第一写指令的写尺寸,则为所述第二写指令提供合并指示;和
在所述第二写指令回退时,响应于合并指示将所述第二写指令的结果合并到所述第一物理寄存器中。
12.如权利要求11所述的方法,其中,所述映射第一物理寄存器到结构寄存器的步骤包括在用于所述结构寄存器的重命名表的条目的较大位置中存储第一索引。
13.如权利要求12所述的方法,其中,所述根据所述比较的结果映射所述第二物理寄存器到所述结构寄存器的步骤包括:如果所述第二写指令的写尺寸小于所述第一写指令的写尺寸,则在所述条目的较小位置中存储第二索引,以及如果所述第二写指令的写尺寸不小于所述第一写指令的写尺寸,则在所述条目的所述较大位置中存储所述第二索引。
14.如权利要求11所述的方法,其中,所述将所述第二写指令的结果合并到所述第一物理寄存器中的步骤包括读取映射到所述第二写指令的重命名表的条目中存储的所述第二写指令的尺寸值。
15.如权利要求11所述的方法,进一步包括当读指令指定源为映射到所述第一写指令和所述第二写指令两者的结构寄存器时,标记所述读指令为自串行化和使得所述读指令依赖于所述第一写指令。
16.如权利要求11所述的方法,进一步包括:
在所述第二写指令回退时,将所述第二物理寄存器转变到回退的非结构状态,所述回退的非结构状态指示所述第二物理寄存器在所述第二写指令回退时是未映射至所述结构寄存器的;和
在所述第一写指令回退时,将所述第一物理寄存器转变到回退的结构状态,其中所述回退的结构状态指示所述第一物理寄存器在所述第一写指令回退时是映射至所述结构寄存器的。
17.如权利要求16所述的方法,进一步包括当后续指令重新映射所述结构寄存器时回收所述第一和第二物理寄存器。
18.如权利要求11所述的方法,进一步包括如果所述第二写指令的写尺寸小于所述第一写指令的写尺寸,则在所述第二写指令的写回期间将所述第二写指令的结果存储到部分写缓冲器中,并且在合并期间从所述部分写缓冲器读取所述第二写指令的结果。
19.如权利要求11所述的方法,进一步包括存储所述第一写指令的写尺寸,以及比较所述第二写指令的写尺寸与所存储的所述第一写指令的写尺寸。
20.如权利要求11所述的方法,进一步包括存储所述合并指示为在用于所述第二写指令的重新排序缓冲器的条目中的合并位。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610455541.2A CN106095393B (zh) | 2016-06-22 | 2016-06-22 | 在回退阶段期间合并部分写结果的系统和方法 |
US15/246,922 US10042646B2 (en) | 2016-06-22 | 2016-08-25 | System and method of merging partial write result during retire phase |
JP2016224437A JP7156776B2 (ja) | 2016-06-22 | 2016-11-17 | リタイアフェーズ中に部分書込み結果をマージするシステムおよび方法 |
EP16200743.9A EP3260978A1 (en) | 2016-06-22 | 2016-11-25 | System and method of merging partial write result during retire phase |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610455541.2A CN106095393B (zh) | 2016-06-22 | 2016-06-22 | 在回退阶段期间合并部分写结果的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106095393A CN106095393A (zh) | 2016-11-09 |
CN106095393B true CN106095393B (zh) | 2019-04-30 |
Family
ID=57238678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610455541.2A Active CN106095393B (zh) | 2016-06-22 | 2016-06-22 | 在回退阶段期间合并部分写结果的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10042646B2 (zh) |
EP (1) | EP3260978A1 (zh) |
JP (1) | JP7156776B2 (zh) |
CN (1) | CN106095393B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107291425B (zh) * | 2017-06-23 | 2020-11-24 | 上海兆芯集成电路有限公司 | 合并解决重命名尺寸问题的部分写入结果的系统和方法 |
US11157280B2 (en) * | 2017-12-07 | 2021-10-26 | International Business Machines Corporation | Dynamic fusion based on operand size |
US11256509B2 (en) | 2017-12-07 | 2022-02-22 | International Business Machines Corporation | Instruction fusion after register rename |
US10929141B1 (en) * | 2018-03-06 | 2021-02-23 | Advanced Micro Devices, Inc. | Selective use of taint protection during speculative execution |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5878244A (en) * | 1995-01-25 | 1999-03-02 | Advanced Micro Devices, Inc. | Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received |
CN1581069A (zh) * | 2003-07-31 | 2005-02-16 | 英特尔公司 | 具有多位字段的寄存器的重命名 |
CN104049947A (zh) * | 2013-03-15 | 2014-09-17 | 三星电子株式会社 | 基于动态重命名的矢量寄存器堆的寄存器重新配置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5446912A (en) | 1993-09-30 | 1995-08-29 | Intel Corporation | Partial width stalls within register alias table |
US5590352A (en) * | 1994-04-26 | 1996-12-31 | Advanced Micro Devices, Inc. | Dependency checking and forwarding of variable width operands |
US5675758A (en) * | 1994-11-15 | 1997-10-07 | Advanced Micro Devices, Inc. | Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations |
US6094719A (en) * | 1997-06-25 | 2000-07-25 | Sun Microsystems, Inc. | Reducing data dependent conflicts by converting single precision instructions into microinstructions using renamed phantom registers in a processor having double precision registers |
US6493819B1 (en) * | 1999-11-16 | 2002-12-10 | Advanced Micro Devices, Inc. | Merging narrow register for resolution of data dependencies when updating a portion of a register in a microprocessor |
US7228403B2 (en) * | 2000-12-23 | 2007-06-05 | International Business Machines Corporation | Method for handling 32 bit results for an out-of-order processor with a 64 bit architecture |
US20020083307A1 (en) | 2000-12-26 | 2002-06-27 | Sager David J. | System and method for partial merges for sub-register data operations |
US7840783B1 (en) * | 2007-09-10 | 2010-11-23 | Netlogic Microsystems, Inc. | System and method for performing a register renaming operation utilizing hardware which is capable of operating in at least two modes utilizing registers of multiple widths |
US8458444B2 (en) * | 2009-04-22 | 2013-06-04 | Oracle America, Inc. | Apparatus and method for handling dependency conditions between floating-point instructions |
US20100274961A1 (en) * | 2009-04-22 | 2010-10-28 | Golla Robert T | Physically-indexed logical map table |
TWI389026B (zh) * | 2009-06-08 | 2013-03-11 | Rdc Semiconductor Co Ltd | 暫存器更名表的回復方法與回復系統 |
US10318299B2 (en) * | 2013-10-31 | 2019-06-11 | International Business Machines Corporation | Reading a register pair by writing a wide register |
-
2016
- 2016-06-22 CN CN201610455541.2A patent/CN106095393B/zh active Active
- 2016-08-25 US US15/246,922 patent/US10042646B2/en active Active
- 2016-11-17 JP JP2016224437A patent/JP7156776B2/ja active Active
- 2016-11-25 EP EP16200743.9A patent/EP3260978A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5878244A (en) * | 1995-01-25 | 1999-03-02 | Advanced Micro Devices, Inc. | Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received |
CN1581069A (zh) * | 2003-07-31 | 2005-02-16 | 英特尔公司 | 具有多位字段的寄存器的重命名 |
CN104049947A (zh) * | 2013-03-15 | 2014-09-17 | 三星电子株式会社 | 基于动态重命名的矢量寄存器堆的寄存器重新配置 |
Also Published As
Publication number | Publication date |
---|---|
JP2017228267A (ja) | 2017-12-28 |
US10042646B2 (en) | 2018-08-07 |
CN106095393A (zh) | 2016-11-09 |
EP3260978A1 (en) | 2017-12-27 |
US20170371667A1 (en) | 2017-12-28 |
JP7156776B2 (ja) | 2022-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9015450B2 (en) | Apparatus utilizing efficient hardware implementation of shadow registers and method thereof | |
US8090931B2 (en) | Microprocessor with fused store address/store data microinstruction | |
DE112004002848B4 (de) | Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor | |
US7506139B2 (en) | Method and apparatus for register renaming using multiple physical register files and avoiding associative search | |
KR100334479B1 (ko) | 컴퓨터 처리 시스템에서 로드 동작의 순서 변경 방법 및 장치 | |
CN106095393B (zh) | 在回退阶段期间合并部分写结果的系统和方法 | |
US7568088B1 (en) | Flag management in processors enabled for speculative execution of micro-operation traces | |
US7711898B2 (en) | Register alias table cache to map a logical register to a physical register | |
US7769986B2 (en) | Method and apparatus for register renaming | |
US10691462B2 (en) | Compact linked-list-based multi-threaded instruction graduation buffer | |
US5740398A (en) | Program order sequencing of data in a microprocessor with write buffer | |
US10296341B2 (en) | Latest producer tracking in an out-of-order processor, and applications thereof | |
US20210357222A1 (en) | Methods and systems for utilizing a master-shadow physical register file | |
CN102890624B (zh) | 用于管理无序毫码控制操作的方法和系统 | |
CN115640047A (zh) | 指令操作方法及装置、电子装置及存储介质 | |
US6449713B1 (en) | Implementation of a conditional move instruction in an out-of-order processor | |
US7406587B1 (en) | Method and system for renaming registers in a microprocessor | |
US6873184B1 (en) | Circular buffer using grouping for find first function | |
US6240507B1 (en) | Mechanism for multiple register renaming and method therefor | |
US6574728B1 (en) | Condition code stack architecture systems and methods | |
US7370178B1 (en) | Method for latest producer tracking in an out-of-order processor, and applications thereof | |
US10248425B2 (en) | Processor with slave free list that handles overflow of recycled physical registers and method of recycling physical registers in a processor using a slave free list | |
CN116954722B (zh) | 一种寄存器间数据转移的方法 | |
CN117908961A (zh) | 重命名映射表恢复方法、系统及终端 |
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 | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |