CN106201989B - 具有从空闲列表的处理器和使用其回收物理寄存器的方法 - Google Patents
具有从空闲列表的处理器和使用其回收物理寄存器的方法 Download PDFInfo
- Publication number
- CN106201989B CN106201989B CN201610496523.9A CN201610496523A CN106201989B CN 106201989 B CN106201989 B CN 106201989B CN 201610496523 A CN201610496523 A CN 201610496523A CN 106201989 B CN106201989 B CN 106201989B
- Authority
- CN
- China
- Prior art keywords
- physical register
- instruction
- index
- free list
- processor
- 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
- 238000004064 recycling Methods 0.000 title claims abstract description 68
- 238000000034 method Methods 0.000 title claims description 19
- 238000011084 recovery Methods 0.000 claims abstract description 48
- 238000003860 storage Methods 0.000 claims abstract description 40
- 238000012546 transfer Methods 0.000 claims description 17
- 230000005540 biological transmission Effects 0.000 claims description 6
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 238000006386 neutralization reaction Methods 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000007373 indentation Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000012492 regenerant Substances 0.000 description 1
- 230000004044 response 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 or 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- 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
-
- 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
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
Abstract
处理器包括物理寄存器、重排序缓冲器、主空闲列表、从空闲列表、主回收电路和从回收电路。重排序缓冲器包括指令条目,其中每个条目存储物理寄存器索引用于回收物理寄存器。重排序缓冲器在每个处理器周期中回退多至N个指令。每个主和从空闲列表包括N个输入端口并存储物理寄存器索引,其中主空闲列表存储要分配给正在发射的指令的物理寄存器的索引。当回退指令时,主回收电路将指令的指令条目中存储的第一物理寄存器索引路由到主空闲列表的输入端口,且从回收电路将指令的指令条目中存储的第二物理寄存器索引路由到从空闲列表的输入端口。
Description
技术领域
本发明总的来说涉及在处理器中回收寄存器的处理,以及更加具体地涉及提供使得回收寄存器更加有效的从溢出空闲列表以满足时序标准的处理器和方法。
背景技术
处理器包含一组寄存器以存储写操作的结果。由处理器的标准指令集架构(ISA)(比如的x86架构等)的子集执行写操作。在包括x86的许多架构中,执行写操作的指令可以引用一组预定义的结构寄存器中的至少一个用于存储结果。更近的处理器配置采用物理寄存器文件(PRF)重命名方式,其使得处理器设计更简明和使能更方便的设计扩展。具有PRF重命名的处理器包含用于存储操作结果的物理寄存器文件(PRF)和用于映射结构寄存器到物理寄存器的重命名结构。PRF是一组物理寄存器,每个使用一组索引(或其它)中的唯一一个来标识。如在此使用的术语“索引”指的是标识或者可以以别的方式用于访问相应物理寄存器的任何类型的索引、地址值或者标识符等。重命名结构将由指令引用的结构寄存器映射到相应物理寄存器的索引。
在软件程序或者应用的执行期间,当遇到引用结构寄存器用于存储指令的结果的指令时,处理器从物理寄存器索引的“空闲列表(free list)”当中分配可用的物理寄存器,附加或者指派所选的物理寄存器索引给该指令,并更新一重命名结构以推测性地将结构寄存器映射到所选的物理寄存器。当执行指令时,该索引用于访问物理寄存器以存储结果。当回退该指令时,该索引可以移动到该重命名结构的回退部分(或者另外移动到另一个不同的重命名结构)以将物理寄存器映射到指定的结构寄存器。该物理到结构寄存器映射可以由后续的读操作使用,直到覆写或者重新定义为止。不需要单独一组物理结构寄存器;代替地,将结构标识符等简单地映射到物理寄存器。因为简单地移动或者重新映射索引而不是不得不在寄存器之间移动值,所以PRF重命名方式更有效率。
处理器每个发射用于执行的指令分配多至一个物理寄存器。比如读指令等的许多指令不存储信息因此不需要分配寄存器。在通常情况下,对于每个被回退的指令,多至一个寄存器可以被去分配或者回收到空闲列表中。超级标量处理器能够并行地执行多个指令,且因此应该配置为能够在每个处理器时钟周期将整数“N”个物理寄存器回收到空闲列表中的N回退的微架构。PRF重命名方式引入指令的大小问题,其中寄存器以高速率被回收。作为示例,具有不同大小的引用相同结构寄存器的多个指令尽管被分配不同物理寄存器,以使得多个物理寄存器牵涉相同结构寄存器。最终,当引用相同结构寄存器的读指令被发射时,可以合并一个或多个这种物理寄存器。后面可以在引用相同结构寄存器的覆写指令的回退时回收多至两个寄存器。当在一个处理器周期中回收多于一个物理寄存器时存在溢出情况。
理论上,N回退的微架构需要配置为每个处理器周期回退多至2N个寄存器以满足时序限制。否则,处理器可能暂停(stall)一个或多个处理器周期以处理寄存器回收溢出。
发明内容
根据本发明一个实施例的处理器包括物理寄存器、重排序缓冲器、主空闲列表、从空闲列表、主回收电路和从回收电路。每个物理寄存器由物理寄存器索引标识。重排序缓冲器包括多个指令条目,其中每个条目存储多至两个物理寄存器索引,用于回收相应的物理寄存器。重排序缓冲器在每个处理器周期中回退多至N个指令。主和从空闲列表均包括N个输入端口且每个存储物理寄存器的相应物理寄存器索引。在主空闲列表中存储其相应物理寄存器索引的物理寄存器将用于分配给正在发射的指令。当正在回退指令时,主回收电路将在指令的指令条目中存储的第一物理寄存器索引路由到主空闲列表的N个输入端口之一。当回退指令时,从回收电路将在指令的指令条目中存储的第二物理寄存器索引路由到从空闲列表的N个输入端口之一。
处理器可以包括传送电路,该传送电路对于其中主回收电路回收与N相差差值数目个物理寄存器的任何给定处理器周期,将从空闲列表中存储的多至该差值数目的物理寄存器索引传送到主空闲列表的可用输入端口。处理器可以包括分配器,该分配器当发射在其回退时要回收相应的第一物理寄存器的指令时将第一物理寄存器索引存储至所述指令的所述指令条目中,且另外当发射在其回退时要回收相应的第二物理寄存器的指令时将第二物理寄存器索引存储至所述指令的所述指令条目中。每个指令条目可以存储用于第一物理寄存器索引的第一有效值和用于第二物理寄存器索引的第二有效值,其中分配器设置第一有效值为指示当存储第一物理寄存器索引时的有效性和设置第二有效值为指示当存储第二物理寄存器索引时的有效性。
主回收电路可以从指令条目中对应于正在被回退的多至N个指令的指令条目中,选择多至N个第一物理寄存器索引中的有效第一物理寄存器索并将其转发到相应的N个回收路径上。处理器可以进一步包括选择电路,该选择电路接收和提供多至N个第一物理寄存器索引中的有效第一物理寄存器索引到主空闲列表的N个输入端口中的相应输入端口。主回收电路可以声明N个选择信号,该选择信号指示N个回收路径中的哪个提供多至N个第一物理寄存器索引中的有效第一物理寄存器索引中的相应一个。处理器可以进一步包括传送控制器,该传送控制器接收N个选择信号的中有效选择信号,基于N和指示有效值的有效选择信号的实际数目之间的差值确定差值数目,并且撷取多至所述差值数目的从空闲列表中存储的多至差值数目的物理寄存器索引,并将其经由N个传送路径传送到选择电路。从回收电路可以从指令条目中对应于正在被回退的多至N个指令的指令条目中,选择多至N个第二物理寄存器索引中的有效第二物理寄存器索引并将其转发到耦合到从空闲列表的N个输入端口的相应N个回收路径上。
根据本发明一个实施例的在处理器中回收物理寄存器的方法包括:由重排序缓冲器在每个处理器周期中回退多至N个指令,和对于正在回退的每个指令,当在指令回退时,第一物理寄存器标识为要回收时,将相应第一物理寄存器索引路由到主空闲列表,以及当在指令回退时,第二物理寄存器标识为要回收时,将相应第二物理寄存器索引路由到从空闲列表,和将其相应物理寄存器索引存储在主空闲列表中的物理寄存器分配给正在发射的指令。
该方法可以包括:当在处理器周期中回收小于N个第一物理寄存器时,确定N和正在回收到主空闲列表的第一物理寄存器的实际数目之间的差值数目,和将从空闲列表中存储的多至该差值数目的物理寄存器索引传送到主空闲列表。该方法可以包括:对于正在发射用于执行的每个指令,当发射在其回退时要回收第一物理寄存器的指令时,将第一物理寄存器索引存储至所述重排序缓冲器的指令条目中,以及当发射在其回退时要回收第二物理寄存器的指令时,将第二物理寄存器索引存储至所述重排序缓冲器的所述指令条目中。该方法可以包括对于指令条目中存储的每个物理寄存器索引更新有效位。该方法可以包括将每个有效第一物理寄存器索引转发到N个回收路径中的相应一个上,和从N个转发路径当中选择携带有效第一物理寄存器索引和将每个有效第一物理寄存器索引提供到主空闲列表的输入端口的转发路径。该方法可以包括将每个有效第二物理寄存器索引转发到从空闲列表的N个输入端口中的相应一个。
附图说明
本发明的益处、特征和优点将关于以下描述和附图而变得更好地理解,在附图中:
图1是包括根据本发明一个实施例实现的物理寄存器回收系统的超标量、流水线处理器的简化框图;
图2是图示根据本发明一个实施例的通过图1的RAT的指令的条目(指令条目)到图1的ROB中的物理寄存器分配,和物理寄存器索引回收到空闲列表的简化框图;
图3是与根据一个实施例的空闲列表和ROB的附加细节一起的,在ROB和空闲列表之间提供用于回收物理寄存器的、根据本发明一个实施例的图1的回收系统的更具体的框图;和
图4是图示比如由图1的处理器执行的,根据本发明一个实施例的在处理器中回收物理寄存器的方法的流程图。
具体实施方式
发明人认识到其中以比通常更高速率回收物理寄存器的利用PRF重命名方式的处理器的时序问题。他因此开发了具有包括主空闲列表、从空闲列表和回收电路的空闲列表配置的处理器。在回收两个物理寄存器的指令的回退时,相应的第一物理寄存器索引路由到主空闲列表且相应的第二物理寄存器索引路由到从空闲列表。以该方式,从空闲列表处理回收的寄存器的溢出。当处理器每个处理器周期回退多至预定数目N个指令时,可以回收多至2N个物理寄存器,其中多至N个物理寄存器被回收到主空闲列表且多至N个物理寄存器被回收到从空闲列表。在本发明的另一实施例中,处理器进一步包括传送电路。在其中小于N个物理寄存器被回收到主空闲列表的任何给定处理器周期中,传送电路可以将多至差值数目的物理寄存器索引从从空闲列表传送到主空闲列表,其中该差值数目是N和回收到主空闲列表的物理寄存器的实际数目之间的差值。
图1是包括根据本发明一个实施例实现的物理寄存器回收系统的超标量、流水线处理器100的简化框图。如在此使用的术语“处理器”指的是任何类型的处理单元,包括微处理器、中央处理单元(CPU)、处理核心、微控制器等。如在此使用的术语“处理器”还包括任何类型的处理器配置,比如集成在包括并入片上系统(SOC)内的处理单元的芯片或集成电路(IC)上处理单元等。
处理器100包括高速缓存指令集架构(ISA)(比如x86指令集架构等)的宏指令的指令高速缓存102。预期另外的或者替换的指令集架构。处理器100包括接收并翻译宏指令为微指令的指令翻译器104。微指令然后被提供给寄存器别名表(RAT)106,该RAT 106生成微指令依赖性并以程序顺序发射微指令到保留站(RS)108和到重排序缓冲器(ROB)110。处理器100可以是每个处理器周期发射多至N个微指令的“N”发射核心,其中N是正整数。ROB 110存储从RAT 106发射的每个指令的条目并保证指令的按次序回退。从RAT 106发射的微指令通常可以被称为微指令,但是更一般地在这里被简称为“指令”。
被另外称为分派器的RS 108分派指令到多个执行单元112中适当的一个。在一个实施例中,处理器100是无序(Out Of Order,OOO)处理器,其中RS 108可以在准备好时而不是严格地以程序次序分派指令到执行单元112。虽然未特别地示出,但是执行单元112可以包括比如整数算术/逻辑单元(ALU)等的一个或多个整数执行单元、比如包括单指令多数据(SIMD)执行单元(诸如MMX和SSE单元等)的一个或多个浮点执行单元、存储器次序缓冲器(MOB)等。写指令的任何结果被经由回写(WB)路径写到物理寄存器文件(PRF)114内的多个物理寄存器116中被分配的一个。与写指令对应的ROB 110的条目存储到物理寄存器的索引用于写结果。PRF 114包括整数“P”个物理寄存器116,每个由多个物理寄存器索引PR1、PR2、...、PRP(PR1-PRP)中相应的一个标识、指向或者以其他方式引用或者寻址。提供空闲列表118以存储标识空闲和可用于分配给由RAT 106发射的指令的那些物理寄存器的物理寄存器索引的列表。
RAT 106包括分配器120和重命名表122。重命名表122交叉引用或者映射结构寄存器到PRF 114的物理寄存器。当写操作引用一结构寄存器用于存储结果时,分配器120查阅空闲列表118并选择和分配一个物理寄存器。分配器120然后将分配的物理寄存器的索引存储到与写指令中引用的结构寄存器对应的重命名表122的条目中。以该方式,物理寄存器最初映射到该结构寄存器和该写指令两者。如在这里进一步描述的,即使后续写指令引用相同结构寄存器时,对于每个新的写指令也分配不同物理寄存器。以该方式,一个结构寄存器可以在任何给定时刻映射到多个物理寄存器。
用于处理器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)。重命名表122可以包括用于映射到一个或多个物理寄存器的任何给定寄存器或者其部分的相应结构标识符。
假定处理器100包括一“N-回退”核心,其中ROB 110可以在任何给定处理器周期中回退多至N个指令,且N个指令中的每一个可以回收多至2个物理寄存器,则ROB 110在任何给定处理器周期期间可以回收多至2N个物理寄存器。作为示例,考虑以下指令模式:
μop1)ADD EAX,imm32
μop2)ADD AX,imm16
……
μop3)ADD EAX,imm32
其中每一指令图示为微指令或者微操作(μop)。为第一ADD指令(μop1)分配第一物理寄存器,且所分配的物理寄存器映射到EAX结构寄存器。作为示例,假定第一物理寄存器由索引PR1标识。为简单起见,该第一物理寄存器可以被称为“PR1”。第一ADD指令μop1指令处理器100将指令内提供的32位立即数“imm32”加到32位寄存器EAX的现有内容。称为PR2的第二物理寄存器被分配用于第二ADD指令(μop2)并映射到AX结构寄存器。该第二ADD指令μop2指令处理器100将指令内提供的16位立即数“imm16”加到16位寄存器AX的现有内容。但是,注意到结构寄存器AX是EAX结构寄存器的最低有效部分(下半部),因此实际上EAX寄存器的内容的一部分会被μop2修改。第一和第二物理寄存器都不保存EAX结构寄存器的完整内容;代替地,每个中存储一部分。称为PR3的第三物理寄存器分配用于第三ADD指令(μop3)并映射到同一结构寄存器EAX。第三ADD指令与第一相同,其中指令内提供的另一(或者同一)立即数“imm32”被加到32位寄存器EAX的现有内容。
两个物理寄存器PR1和PR2被分配用于前两个指令μop1和μop2以分别保存它们各自的结果。响应于第三指令μop3,前两个指令的结果由第三寄存器PR3的内容覆写。在第三指令μop3的回退时,可以回收前两个寄存器PR1和PR2。因此,如果在任何给定处理器周期中回退N个指令,其中每个指令(例如,类似第三ADD指令μop3的指令)可以回收多至2个寄存器,则ROB 110在N个指令的回退阶段期间可以回收多至2N个物理寄存器。
ROB 110包括每个处理器周期回退多至N个指令的回退电路124,其将物理寄存器回收回到空闲列表118。注意到在许多处理器周期中,可以回退小于N个指令,包括不回退指令的情况。如上所述,对于回退每个回收2个物理寄存器的N个指令的情况,回退电路124可以回收多至2N个物理寄存器。注意到在许多处理器周期中,回收小于2N个物理寄存器,甚至包括不回收物理寄存器的情况。虽然如此,处理器100处理回退多于N个和多至2N个物理寄存器的最坏情况条件以缓解回退时序压力。如在这里进一步描述的,包括回收系统126,且空闲列表118配置为全体地保证用于最坏情况条件的回收带宽以避免时序问题和保持处理器性能。回退电路124将正在回退的物理寄存器的物理寄存器索引转发到回收系统126,然后当回收相应的物理寄存器时,回收系统126将物理寄存器的物理寄存器索引传送到空闲列表118,如在这里进一步描述的。
图2是图示根据本发明一个实施例的RAT 106对物理寄存器的分配、ROB 110中的指令的条目(指令条目),和到空闲列表118的物理寄存器索引回收的简化框图。RAT 106公式化每个接收的指令的指令条目202,且每个指令条目202包括用于存储与指令一起携带的信息的字段以用于执行和回退。指令条目202包括标识指令和/或指令类型的第一字段201。如果指令是写指令或者存储信息的任何其他指令,则指令条目202包括用于存储物理寄存器索引的字段203,其为拥有该指令条目202的指令标识一个PRF 114内的用于存储信息的相应的物理寄存器116。即使对于不分配物理寄存器的那些指令也包括字段203。指令条目202包括另一字段204,用于存储一第一物理寄存器索引,其标识在指令的回退时要回收的物理寄存器116的相应的第一个。指令条目202还包括另一字段208,用于存储一第二物理寄存器索引,其标识在指令的回退时要回收的物理寄存器116的相应的第二个。
当在其回退时要回收第一和/或第二物理寄存器的指令由RAT 106发射时,例如,当第三ADD指令μop3由RAT 106发射时,分配器120仅将有效物理寄存器索引存储到字段204和/或208中。在许多或者甚至大多数情况下,在一个指令的回退时回收0或者1个物理寄存器。与字段204相关联地提供有效字段206以指示字段204是否存储有效条目,且另一有效字段210与字段208相关联以指示字段208是否存储有效条目。有效条目指的是在拥有指令条目202的指令的回退时将回收相应的第一/第二物理寄存器。可以包括附加的字段和值但是不示出或者进一步描述。每一字段示出具有名称或者相应的助记符等以传达存储的信息,其中实际信息是二进制或者数字数等。RAT 106可以包括负责定义或者填充未示出的其他字段的其他逻辑(未示出)。分配器120负责填充与物理寄存器116的分配和回收相关联的字段。
理解RAT 106中的指令条目202的许多字段可以保持空白或者以其他方式未定义。例如,对于不需要物理寄存器来写入结果的读类型指令,字段203可以保持空白或者未定义,虽然可以定义单独的物理寄存器(未示出)用于存储从系统存储器等(未示出)读取的数据。在指令的回退时不回收物理寄存器的情况下,两个字段204和208都可以保持空白或者未定义,且字段206和210以分别指示字段204和208是无效的“无效”值标记。在一个实施例中,字段206和210是1个比特,其中逻辑“0”指示相应的物理寄存器字段的无效性且逻辑“1”指示有效性。在许多指令情况下,没有要回收的物理寄存器。在许多其他写类型指令中,仅回收一个物理寄存器,则字段204保存相应的物理寄存器索引,字段206被标记为有效的,不定义字段208且更新字段210以反映字段208无效。通常,绝大多数指令在回退时回收0或者1个物理寄存器,且仅很少指令在回退时回收两个物理寄存器。
图示的指令条目202通常表示先前提到的第三ADD指令μop3。在该情况下,分配器120分配物理寄存器PR3用于写结果的存储,以使得在字段203中存储PR3。分配器120配置为标识出任何在该指令的回退时要回收的物理寄存器116中的任一。对于指令μop3,在μop3的回退时要回收分别指派给指令μop1和μop2的物理寄存器PR1和PR2。因此,分配器120将物理寄存器索引PR1存储到字段204(示为PR1(REC))中,且字段206标记有效值V1以指示字段204保存有效值。此外,分配器120将物理寄存器索引PR2存储到字段208中(示为PR2(REC))且字段210标记有效值V2以指示字段208保存有效值。
如上所述,当指令准备好执行时,RAT 106发射指令到RS 108和ROB 110。如图2所示,RAT 106中的指令条目202被作为相应的条目212压入ROB 110中。示出的指令条目202和212具有类似的格式,其可以或者可以不是用于给定配置的情况。虽然如此,压入ROB 110中的指令条目212包括用于指令μop3的字段204、206、208和210(或者具有相同信息的类似字段)。当指令μop3准备好被回退时,回退电路124选择指令μop3,且字段204、206、208和210被从ROB 110输出到回收系统126。
空闲列表118配置有两个不同空闲列表,示出为主空闲列表214和从空闲列表216,其存储已回收的或者尚未使用的物理寄存器索引。回收系统126将第一物理寄存器索引PR1转发到主空闲列表214并将第二物理寄存器索引PR2转发到从空闲列表216。分配器120仅从主空闲列表214为要从RAT 106发射的指令分配空闲和可用的物理寄存器,且不从从空闲列表216分配。如上所述,回退电路124在任何给定处理器周期中回收多至N个指令,以使得多至N个物理寄存器索引可以回收到主空闲列表214且多至N个物理寄存器索引可以回收到从空闲列表216。如在这里更全面地描述的,主和从空闲列表214和216每个包括N个输入端口以同时接收多至N个物理寄存器索引。但是,在大多数处理器周期中,回收的物理寄存器小于2N个。在大多数可实践的配置中,2N个物理寄存器的回收的情况很少发送,以使得主空闲列表214通常比从空闲列表216更快地被填充。主空闲列表214由新分配清空;新分配不由空闲列表216提供。从空闲列表216通过将其溢出的索引传送到主空闲列表214从而清空,如在这里进一步描述的。
示出从从空闲列表216通过回收系统126到主空闲列表214的传送路径218,用于将在从空闲列表216中存储的物理寄存器索引传送到主空闲列表214。当在任何给定的处理器周期中小于N个物理寄存器索引被回收到主空闲列表214时,可能发生物理寄存器索引从从空闲列表216到主空闲列表214的传送。当在一处理器周期中小于N个物理寄存器索引被回收到主空闲列表214时,如果从空闲列表216中存在存储的物理寄存器索引,则如在这里进一步描述的,可以经由传送路径218将来自从空闲列表216的物理寄存器索引填充到主空闲列表214的未使用的或者可用的端口。在一个实施例中,即使在其中一个或多个物理寄存器索引正在相同处理器周期中回收到从空闲列表216的处理器周期期间,也是这样。以该方式,在对于一个或多个正在回退的指令正在回收两个物理寄存器的任何给定处理器周期中,在从空闲列表216中存储每个回退的指令的第二物理寄存器索引。此外,在任何给定处理器周期中,通过从N减去正在回收到主空闲列表214的物理寄存器的实际数目(A)来确定差值数目(D),或者D=N-A。在任何给定处理器周期中,多至D个物理寄存器索引可以从从空闲列表216被传送到主空闲列表214。
图3是与根据一个实施例的附带空闲列表118和ROB 110的更多细节的,在ROB 110和空闲列表118之间提供的用于回收物理寄存器116的回收系统126的更具体的框图。示出ROB 110包括多个指令条目212,每个与如图2所示的指令条目212相同地配置。每个指令条目212包括用于存储用于对于每个相应的指令要回收的任何物理寄存器的物理寄存器索引和相应的有效性值的字段204、206、208和210。回退电路124执行回退周期,其中该回退电路124在每个处理器周期中从对应于准备好回退的指令的多个指令条目212当中选择N个条目。示出由R1、R2、...、RN标记的箭头访问的所选的条目。ROB 110包括用于字段204、206、208和210的一组输出端口301,其中每个输出端口301为选择用于回退的每个指令条目输出多至N个索引或者多至N个相应的有效值。具体来说,来自所选的字段204的多至N个第一物理寄存器索引在第一端口P1上输出,来自所选的字段206的多至N个相应的有效值在第二端口P2上输出,来自所选的字段208的多至N个第二物理寄存器索引在第三端口P3上输出,且来自所选的字段210的多至N个相应的有效值在第四端口P4上输出。
回收系统126包括主回收电路302、从回收电路320和传送电路304。分别来自ROB110的输出端口P1和P2的来自所选的字段204和206的物理寄存器索引和相应的有效值被提供给可以为了时序目的与回退电路124通信的主回收电路302的相应的输入。主回收电路302评估从端口P2接收的N个有效值中的每一个以确定(如果有的话)从端口P1接收到的N个第一物理寄存器索引的哪些是有效的。沿着N个主回收路径306中相应的主回收路径306,将N个第一物理寄存器索引的任何有效的第一物理寄存器索引转发到传送电路304的选择电路310的N个输入中相应的输入。主回收电路302进一步沿着相应的信号路径308输出提供来控制选择电路310的输入的N个VALID_SEL信号,其用于标识和选择经由主回收路径306从主回收电路304接收到的有效的第一物理寄存器索引。
在图示的配置中,选择电路310配置为N个2输入多路复用器(MUX)M1、M2、...、MN(M1-MN),其中每个主回收路径306提供给MUX M1-MN中相应的一个的第一输入。一组N个传送路径330(即,图2中的传送路径218)中的每一个提供给选择电路310的N个MUX的相应的一个的第二输入。预期选择电路310的其它替换实现。如图所示,每个VALID_SEL信号可以提供给N个MUX的相应的一个的控制输入。当不选择主回收路径306时,代替地选择传送路径330中相应的一个。选择电路310将在N个输出端口312上的多至N个有效的物理寄存器索引输出到主空闲列表214的N个输入端口313。
示出主空闲列表214包括主控制电路(M_CTL)314,其用于经由输入端口313接收物理寄存器索引,并将接收的物理寄存器索引排队到相应的主队列316中。主队列316可以以任何适当的方式实现来用于存储物理寄存器索引的自由列表,例如,先入先出(FIFO)队列等,堆栈配置,环形缓冲器等。主队列316可以以存储任何适当数目的物理寄存器索引的任何适当的大小配置。在一个实施例中,主队列316存储多至整数P个物理寄存器索引以匹配PRF 116的大小。主控制电路314配置为将物理寄存器索引输入到主队列316中和输出到主队列316之外。例如,分配器120接口连接主控制电路314以用于对于要发射的新指令分配多至M个物理寄存器(对于M-发射核心)。在大多数情况下,M等于N,也就是RAT 106的发射率等于ROB 110的回退率。但是,本发明不限于M等于N的情况。
分别来自ROB 110的输出端口P3和P4的来自所选的字段208和210的物理寄存器索引和相应的有效值被提供给可以为了时序目的与回退电路124通信的从回收电路320的相应的输入。从回收电路320评估从端口P4接收的N个有效值的每一个以确定(如果有的话)从端口P3接收到的N个第二物理寄存器索引中的哪些有效。N个第二物理寄存器索引中的任何有效的第二物理寄存器索引被沿着N个从回收路径322中相应的从回收路径路由到从空闲列表216的N个输入中相应的输入。
从空闲列表216以与主空闲列表214类似的方式配置,其包括用于经由从回收路径322接收第二物理寄存器索引并将所接收的第二物理寄存器索引排队到相应的从队列326中的从控制电路(S_CTL)324。与主队列316类似,从队列326可以以任何适当的方式实现来用于存储物理寄存器索引的空闲列表,诸如例如,先入先出(FIFO)队列等,堆栈配置,环形缓冲器等。从队列326的大小可以与主队列316相同。但是注意到从队列326的大小可以减小因为其仅需要包括溢出(或者第二)物理寄存器索引。例如,在当每个处理器周期回收2N个物理寄存器时的最坏情况下,仅一半的寄存器索引提供给从队列326,以使得如果组合的总数至少是物理寄存器116的总数则其可以是主队列316的大小的一半。因此,如果主队列316具有包括多至P个条目的大小,则从队列326仅需要包括多至P/2个条目,虽然本发明不限于该配置。与主控制电路314类似地配置从控制电路324以将物理寄存器索引输入到从队列326中和输出到从队列326之外。
分配器120不从从空闲列表216分配。代替地,传送电路304包括传送控制器328,该传送控制器328从主回收电路302接收N个VALID_SEL信号以标识N个主回收路径306中的哪些包括有效的第一物理寄存器索引和哪些不包括。如果N个VALID_SEL信号指示N个主回收路径306中的每一个携带有效的物理寄存器索引,则传送控制器328不传送从队列326中存储的任何物理寄存器索引。但是,在一个或多个和多至N个主回收路径306是空的或者以其他方式可用于接收数据的情况下,传送控制器328确定可用回收路径的差值数目D,并与从控制电路324通信以访问从队列326中存储的多至D个物理寄存器索引。从从队列326访问的物理寄存器索引在N个传送路径330中相应的传送路径上提供(即,图2中的传送路径218),并提供给选择电路310的相应的输入。如上所述,N个传送路径330中的每一个被提供给选择电路310的N个MUX的第二输入。当相应的主回收路径306不携带来自主回收电路302的有效的第一物理寄存器索引时,VALID_SEL信号已经从主回收电路302输出以选择N个传送路径330中相应的传传送路径。
理解可能存在许多处理器周期,其中至少一个回收和/或传输路径不包括有效的物理寄存器索引。例如,虽然可能ROB 110的输出端口P3中的每一个包括有效的第二物理寄存器索引,在大多数处理器周期中,来自ROB 110的输出端口P3的至少一个并且甚至多至所有输出是无效的。在一个实施例中,从回收电路320与从控制电路324通信以标识从回收路径322中的哪些包括有效的物理寄存器索引且哪些不包括。在该情况下,从控制电路324简单地忽略不携带有效的物理寄存器索引的任意从回收路径322。在替代实施例中,从回收电路320配置为将“伪”、无效或者另外的“空”值插入到不携带有效的物理寄存器索引的从回收路径322上,且从控制电路324配置为忽略这种无效或者伪值。
同样地,当小于N个主回收路径306包括有效的物理寄存器索引,且从队列326不包括足够数目的存储的物理寄存器索引时,传送控制器328传送小于差值数目D的有效物理寄存器索引到主空闲列表214。在该情况下,至少一个和多至所有N个输出端口312不向主空闲列表214提供有效的物理寄存器索引。在一个实施例中,传送控制器328与主控制电路314通信以标识N个输入313中的哪些包括有效的物理寄存器索引且哪些不包括,以使得主控制电路314简单地忽略其N个输入313中的不携带有效物理寄存器索引的任意。在替代实施例,传送控制器328配置为将“伪”无效或者另外的“空”值插入到选择了但是不提供来自从队列326的物理寄存器索引的传送路径330上,且主控制电路324配置为忽略这种无效或者伪值。
以该方式,理解当在任何给定处理器周期中正在回退的一个或多个指令包括标识要回收的相应物理寄存器的第二物理寄存器索引时,从空闲列表216接收任何溢出物理寄存器索引。第二物理寄存器索引中的每一个都被认为是溢出索引。在小于N个第一物理寄存器正在被回收到主空闲列表214的任意处理器周期中,传送电路304由从空闲列表216中存储的任何溢出索引来填充此平衡。例如,传送控制器328确定N与正在从ROB 110回收到主空闲列表214的实际数目之间的差值D,且将多至D个物理寄存器索引从从空闲列表216传送到主空闲列表214。因此从空闲列表216使得溢出索引能够被快速地回收以减轻回退时序压力,同时在被传送用于最终的重新分配。传送控制器328和从空闲列表216与主回收电路302协同操作以保证在最坏情况条件下的回收带宽,以使得最终所有回收的物理寄存器索引被转发或者传送到主队列316以用于后续分配。
数目“N”根据特定实现的性能选择,且可以对于不同配置不同。在一个非限制实施例中,例如,M=4且N=4,以使得每个处理器周期发射和/或回退多至4个指令且每个处理器周期可以回收多至8个物理寄存器。理解M和N每个可以是任何其他适当的数目。
图4是图示比如由处理器100执行的,根据本发明一个实施例的在处理器中回收物理寄存器的方法的流程图。如上所述,RAT 106每个时钟周期一次发射多至N个指令用于执行。第一块402指示对于发射以用于执行的每个指令的处理。在下一块404,如果在指令的回退时不存在要回收的物理寄存器,则操作返回到块402。但是,如果确定在指令的回退时要回收第一物理寄存器,则操作进行到下一块406,其中第一物理寄存器的相应的物理寄存器索引存储到指令条目的第一字段中。如先前对于指令条目202所示的,提供字段204以用于存储标识在指令的回退时要回收的物理寄存器116的第一个的第一物理寄存器索引。第一条目被标记为有效(例如,通过设置有效字段206)。在下一块408,如果在指令的回退时不要回收第二物理寄存器,则操作返回到块402。但是,如果确定在指令的回退时还要回收第二物理寄存器,则操作进行到下一块410,其中第二物理寄存器的相应的物理寄存器索引存储到指令条目的第二字段中。如先前对于指令条目202所示的,提供字段208以用于存储标识在指令的回退时要回收的物理寄存器116的第二个的第二物理寄存器索引。第二条目被标记为有效(例如,通过设置有效字段210)。对于发射用于执行的每个指令操作在块402-410之间循环。
同时,如由块412指示的,ROB 110可以在任何给定处理器周期中回退多至N个指令。对于每个时钟周期回退的每个指令,操作进行到块414以确定在指令条目内指示的指令的回退时是否要回收第一物理寄存器。如果不,则操作循环回到块412以用于被回退的下一指令。如果如在块414确定的要回收第一物理寄存器,则操作进行到块416,其中来自指令条目的第一字段的第一物理寄存器的相应物理寄存器索引被路由到主空闲列表214。操作然后进行到块418以确定在指令条目内指示的指令的回退时是否要回收第二物理寄存器。如果不,则操作循环回到块412以用于被回退的下一指令。如果如在块418确定的要回收第二物理寄存器,则操作进行到块420,其中来自指令条目的第二字段的第二物理寄存器的相应物理寄存器索引被路由到从空闲列表216。操作然后进行到块422以确定在当前时钟周期中是否正在回退另一指令。如果是的话,操作循环回到块412以对于当前时钟周期中正在回退的下一指令再次开始回收过程。
当如在块422确定的在当前时钟周期中不再有正在回退的指令时,则操作进行到块424以确定回收到主空闲列表214的物理寄存器是否小于N个。如果否,则操作进行到块412以开始下一时钟周期的处理。但是,如果如在块424确定在当前时钟周期中回收到主空闲列表214的物理寄存器小于N个,则操作进行到块426,其中确定N和回退到主空闲列表214的物理寄存器的实际数目之间的差值,且然后将多至该差值的数目的物理寄存器索引从从空闲列表216传送到主空闲列表214。操作然后返回到块412以用于下一时钟周期。
已经呈现前述描述以使本领域技术人员能够做出和使用如在特定应用请和其需要的背景内提供的本发明。虽然已经参考其某些优选的版本相当详细地描述了本发明,其他版本和变化是可能的且被预期的。对优选实施例的各种修改对本领域技术人员将是显而易见的,且在这里定义的通用原理可以应用于其他实施例。例如,在这里描述的电路可以以任何适当的方式实现,包括逻辑器件或者电路等。
本领域技术人员应该认识到,他们可以容易地使用公开的概念和特定实施例作为设计或者修改其他结构的基础,以进行本发明的相同目,而不脱离本发明的精神和保护范围。因此,本发明不意在限于在这里示出和描述的特定的实施例,而是根据按照在这里公开的原理和新颖特征的最宽范围。
Claims (20)
1.一种处理器,包括:
多个物理寄存器,每个所述物理寄存器由物理寄存器索引标识;
重排序缓冲器,包括多个指令条目,每个指令条目存储多至两个物理寄存器索引用于回收相应的物理寄存器,其中,所述重排序缓冲器在每个处理器周期中回退多至N个指令,其中N是正整数;
主空闲列表和从空闲列表,均包括N个输入端口并存储所述物理寄存器的相应物理寄存器索引,其中,其相应物理寄存器索引存储在所述主空闲列表中的所述物理寄存器将用于分配给正在发射的指令;
主回收电路,耦接到所述重排序缓冲器和所述主空闲列表,当回退指令时,将所述指令的指令条目中存储的第一物理寄存器索引路由到所述主空闲列表的所述N个输入端口之一;以及
从回收电路,耦接到所述重排序缓冲器和所述从空闲列表,当回退所述指令时,将所述指令的所述指令条目中存储的第二物理寄存器索引路由到所述从空闲列表的所述N个输入端口之一。
2.如权利要求1所述的处理器,进一步包括:传送电路,对于所述主回收电路路由与N相差差值数目的物理寄存器索引的任何给定处理器周期,所述传送电路将所述从空闲列表中存储的多至所述差值数目的物理寄存器索引传送到所述主空闲列表的可用的输入端口。
3.如权利要求1所述的处理器,进一步包括:分配器,当发射在其回退时要回收相应的第一物理寄存器的所述指令时,所述分配器将所述第一物理寄存器索引存储至所述指令的所述指令条目中,和当发射在其回退时要回收相应的第二物理寄存器的所述指令时,所述分配器另外地将所述第二物理寄存器索引存储至所述指令的所述指令条目中。
4.如权利要求1所述的处理器,其中,所述多个指令条目中的每一个存储用于所述第一物理寄存器索引的第一有效值和用于所述第二物理寄存器索引的第二有效值,且其中,分配器设置所述第一有效值以指示当存储所述第一物理寄存器索引时的有效性和设置所述第二有效值以指示当存储所述第二物理寄存器索引时的有效性。
5.如权利要求1所述的处理器,其中:
所述主回收电路从所述多个指令条目中对应于正在回退的所述多至N个指令的指令条目中,选择多至N个第一物理寄存器索引中的有效第一物理寄存器索引,并将其转发到相应的N个回收路径上;以及
其中,所述处理器进一步包括选择电路,所述选择电路接收多至N个第一物理寄存器索引中所述有效第一物理寄存器索引,并将其提供到所述主空闲列表的所述N个输入端口中的相应输入端口。
6.如权利要求5所述的处理器,其中:
所述主回收电路声明N个选择信号,所述N个选择信号指示所述N个回收路径中的哪个提供多至N个第一物理寄存器索引中所述有效第一物理寄存器索引中的相应一个;以及
其中,所述处理器进一步包括传送控制器,所述传送控制器接收所述N个选择信号中的有效选择信号,基于N和指示有效值的所述有效选择信号的实际数目之间的差值确定差值数目,并且撷取多至所述差值数目的所述从空闲列表中存储的物理寄存器索引,并经由N个传送路径将其传送到所述选择电路。
7.如权利要求6所述的处理器,其中,所述选择电路包括N个2输入多路复用器,每个具有从所述主回收电路耦合到所述N个回收路径中的相应回收路径的第一数据输入,具有耦合到所述N个传送路径中的相应传送路径的第二数据输入,并具有耦合到所述N个有效选择信号中的相应有效选择信号的选择输入。
8.如权利要求1所述的处理器,其中,所述从回收电路从所述多个指令条目的对应于正在回退的所述多至N个指令的指令条目中,选择多至N个第二物理寄存器索引中的有效第二物理寄存器索引,并将其转发到耦合到所述从空闲列表的所述N个输入端口的相应N个回收路径上。
9.一种处理器,包括:
多个物理寄存器,每个所述物理寄存器由物理寄存器索引标识;
重排序缓冲器,包括多个指令条目,每个指令条目存储多至两个物理寄存器索引用于回收相应的物理寄存器,其中,所述多个指令条目中的每一个相应于由所述重排序缓冲器回退的指令;
主队列和从队列,均包括多个输入端口;
主回收电路,耦接到所述重排序缓冲器和所述主队列,当回退指令时,将所述指令的指令条目中存储的第一物理寄存器索引路由到所述主队列;
从回收电路,耦接到所述重排序缓冲器和所述从队列,当回退所述指令时,将所述指令的所述指令条目中存储的第二物理寄存器索引路由到所述从队列;以及
传送控制器,当所述主队列具有至少一个可用的输入端口时,在处理器周期中将所述从队列中存储的至少一个物理寄存器索引传送到所述主队列。
10.如权利要求9所述的处理器,进一步包括:
分配器,当发射在其回退时要回收相应的第一物理寄存器的所述指令时,所述分配器将所述第一物理寄存器索引存储至所述指令的所述指令条目中,并标记所述第一物理寄存器索引为有效,以及当发射在其回退时要回收相应的第二物理寄存器的所述指令时,所述分配器另外地将所述第二物理寄存器索引存储至所述指令的所述指令条目中,并标记所述第二物理寄存器索引为有效。
11.如权利要求10所述的处理器,其中,所述主回收电路仅当所述第一物理寄存器索引标记有效时将所述第一物理寄存器索引路由到所述主队列,且其中,所述从回收电路仅当所述第二物理寄存器索引标记有效时将所述第二物理寄存器索引路由到所述从队列。
12.如权利要求9所述的处理器,其中,所述重排序缓冲器每个处理器周期回退多至指定数目的指令,且其中,所述主回收电路从相应于正在回退的所述指令的指令条目将多至实际数目的第一物理寄存器索引路由到所述主队列。
13.如权利要求12所述的处理器,其中,所述传送控制器确定所述指定数目和路由至所述主队列的所述第一物理寄存器索引的所述实际数目之间的差值数目,且其中,所述传送控制器将所述从队列中存储的多至所述差值数目的物理寄存器索引传送到所述主队列。
14.如权利要求9所述的处理器,其中,相应物理寄存器索引存储在所述主队列中的所述物理寄存器将用于分配给正在发射的指令。
15.一种在处理器中回收物理寄存器的方法,包括:
由重排序缓冲器在每个处理器周期中回退多至N个指令,每个指令对应的指令条目存储多至两个物理寄存器索引用于回收相应的物理寄存器;
对于正在回退的每个指令:
当在该指令回退时,该指令的指令条目中存储的第一物理寄存器索引所对应的第一物理寄存器被标识为要回收时,将所存储的第一物理寄存器索引路由到主空闲列表;以及
当在该指令回退时,该指令的指令条目中存储的第二物理寄存器索引所对应的第二物理寄存器被标识为要回收时,将所存储的第二物理寄存器索引路由到从空闲列表;以及
将在主空闲列表中存储其相应物理寄存器索引的物理寄存器分配给正在发射的指令。
16.如权利要求15所述的方法,当在处理器周期中小于N个第一物理寄存器被回收到所述主空闲列表时,进一步包括:
确定N和正要回收到所述主空闲列表的所述第一物理寄存器的实际数目之间的差值数目;以及
将从空闲列表中存储的多至所述差值数目的物理寄存器索引传送到主空闲列表。
17.如权利要求15所述的方法,对于正在发射以用于执行的每个指令,进一步包括:
当发射在其回退时要回收所述第一物理寄存器的指令时,将第一物理寄存器索引存储至所述重排序缓冲器的指令条目中;以及
当发射在其回退时要回收所述第二物理寄存器的指令时,将第二物理寄存器索引存储至所述重排序缓冲器的所述指令条目中。
18.如权利要求17所述的方法,进一步包括更新所述指令条目中存储的每个物理寄存器索引的有效位。
19.如权利要求15所述的方法,其中,所述将相应的第一物理寄存器索引路由到主空闲列表包括:
将每个有效的第一物理寄存器索引转发到N个回收路径中的相应回收路径上;以及
从N个转发路径当中选择携带有效的第一物理寄存器索引的转发路径,并将每个有效的第一物理寄存器索引提供到所述主空闲列表的输入端口。
20.如权利要求15所述的方法,其中,所述将所述相应的第二物理寄存器索引路由到所述从空闲列表包括将每个有效的第二物理寄存器索引转发到所述从空闲列表的N个输入端口中的相应输入端口。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610496523.9A CN106201989B (zh) | 2016-06-28 | 2016-06-28 | 具有从空闲列表的处理器和使用其回收物理寄存器的方法 |
US15/235,662 US10248425B2 (en) | 2016-06-28 | 2016-08-12 | 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 |
EP16200382.6A EP3264262B1 (en) | 2016-06-28 | 2016-11-24 | 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 |
KR1020160158290A KR101829150B1 (ko) | 2016-06-28 | 2016-11-25 | 리사이클된 물리적 레지스터들의 오버플로우를 처리하는 슬레이브 프리 리스트를 가진 프로세서 및 슬레이브 프리 리스트를 이용하여 프로세서에서 물리적 레지스터들을 리사이클하는 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610496523.9A CN106201989B (zh) | 2016-06-28 | 2016-06-28 | 具有从空闲列表的处理器和使用其回收物理寄存器的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106201989A CN106201989A (zh) | 2016-12-07 |
CN106201989B true CN106201989B (zh) | 2019-06-11 |
Family
ID=57406073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610496523.9A Active CN106201989B (zh) | 2016-06-28 | 2016-06-28 | 具有从空闲列表的处理器和使用其回收物理寄存器的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10248425B2 (zh) |
EP (1) | EP3264262B1 (zh) |
KR (1) | KR101829150B1 (zh) |
CN (1) | CN106201989B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10191873B2 (en) * | 2012-12-20 | 2019-01-29 | Advanced Micro Devices, Inc. | Method and apparatus for power reduction for data movement |
US11144364B2 (en) | 2019-01-25 | 2021-10-12 | International Business Machines Corporation | Supporting speculative microprocessor instruction execution |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6959377B2 (en) * | 2002-03-20 | 2005-10-25 | Sun Microsystems, Inc. | Method and system for managing registers |
US7096345B1 (en) * | 2003-09-26 | 2006-08-22 | Marvell International Ltd. | Data processing system with bypass reorder buffer having non-bypassable locations and combined load/store arithmetic logic unit and processing method thereof |
CN104919439A (zh) * | 2013-01-17 | 2015-09-16 | 高通股份有限公司 | 用于支持基于处理器的系统中的异构存储器存取请求的异构存储器系统以及相关方法和计算机可读媒体 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6119214A (en) * | 1994-04-25 | 2000-09-12 | Apple Computer, Inc. | Method for allocation of address space in a virtual memory system |
US7191315B2 (en) * | 2001-06-04 | 2007-03-13 | Sun Microsystems, Inc. | Method and system for tracking and recycling physical register assignment |
US20040268093A1 (en) * | 2003-06-26 | 2004-12-30 | Samra Nicholas G | Cross-thread register sharing technique |
US7281120B2 (en) * | 2004-03-26 | 2007-10-09 | International Business Machines Corporation | Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor |
US7313675B2 (en) * | 2005-06-16 | 2007-12-25 | Intel Corporation | Register allocation technique |
US20110161616A1 (en) * | 2009-12-29 | 2011-06-30 | Nvidia Corporation | On demand register allocation and deallocation for a multithreaded processor |
US9223577B2 (en) * | 2012-09-26 | 2015-12-29 | Apple Inc. | Processing multi-destination instruction in pipeline by splitting for single destination operations stage and merging for opcode execution operations stage |
-
2016
- 2016-06-28 CN CN201610496523.9A patent/CN106201989B/zh active Active
- 2016-08-12 US US15/235,662 patent/US10248425B2/en active Active
- 2016-11-24 EP EP16200382.6A patent/EP3264262B1/en active Active
- 2016-11-25 KR KR1020160158290A patent/KR101829150B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6959377B2 (en) * | 2002-03-20 | 2005-10-25 | Sun Microsystems, Inc. | Method and system for managing registers |
US7096345B1 (en) * | 2003-09-26 | 2006-08-22 | Marvell International Ltd. | Data processing system with bypass reorder buffer having non-bypassable locations and combined load/store arithmetic logic unit and processing method thereof |
CN104919439A (zh) * | 2013-01-17 | 2015-09-16 | 高通股份有限公司 | 用于支持基于处理器的系统中的异构存储器存取请求的异构存储器系统以及相关方法和计算机可读媒体 |
Also Published As
Publication number | Publication date |
---|---|
US20170371673A1 (en) | 2017-12-28 |
KR20180001994A (ko) | 2018-01-05 |
EP3264262B1 (en) | 2021-11-10 |
KR101829150B1 (ko) | 2018-02-13 |
US10248425B2 (en) | 2019-04-02 |
CN106201989A (zh) | 2016-12-07 |
EP3264262A1 (en) | 2018-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101377736B (zh) | 乱序执行微处理器以及宏指令处理方法 | |
JP3798404B2 (ja) | 2レベルの分岐予測キャッシュによる分岐予測 | |
TWI397857B (zh) | 微處理器、用以處理微處理器之儲存巨指令之方法及用於計算裝置之電腦程式產品 | |
US9672039B2 (en) | Register file having a plurality of sub-register files | |
US3718912A (en) | Instruction execution unit | |
US10678695B2 (en) | Migration of data to register file cache | |
CN103226463A (zh) | 用于使用预解码数据调度指令的方法和装置 | |
US10235181B2 (en) | Out-of-order processor and method for back to back instruction issue | |
US20140047218A1 (en) | Multi-stage register renaming using dependency removal | |
US10691462B2 (en) | Compact linked-list-based multi-threaded instruction graduation buffer | |
CN103885893A (zh) | 用于访问内容寻址存储器的技术 | |
US10296341B2 (en) | Latest producer tracking in an out-of-order processor, and applications thereof | |
US10437599B2 (en) | System and method of reducing processor pipeline stall caused by full load queue | |
CN103279379A (zh) | 用于在没有指令解码的情况下调度指令的方法和装置 | |
CN106201989B (zh) | 具有从空闲列表的处理器和使用其回收物理寄存器的方法 | |
CN106095393B (zh) | 在回退阶段期间合并部分写结果的系统和方法 | |
CN116257350B (zh) | 一种针对risc-v矢量寄存器的重命名分组装置 | |
US7747840B2 (en) | Method for latest producer tracking in an out-of-order processor, and applications thereof | |
CN115437691A (zh) | 一种针对risc-v矢量与浮点寄存器的物理寄存器堆分配装置 | |
US20230305843A1 (en) | Processor micro-operations cache architecture for intermediate instructions | |
EP4010795A1 (en) | Efficient encoding of high fan-out communications in a block-based instruction set architecture |
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. |