CN107291425B - 合并解决重命名尺寸问题的部分写入结果的系统和方法 - Google Patents
合并解决重命名尺寸问题的部分写入结果的系统和方法 Download PDFInfo
- Publication number
- CN107291425B CN107291425B CN201710491888.7A CN201710491888A CN107291425B CN 107291425 B CN107291425 B CN 107291425B CN 201710491888 A CN201710491888 A CN 201710491888A CN 107291425 B CN107291425 B CN 107291425B
- Authority
- CN
- China
- Prior art keywords
- instruction
- merge
- instructions
- issued
- architectural
- 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 20
- 238000013507 mapping Methods 0.000 claims abstract description 31
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000007596 consolidation process Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000004044 response 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/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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- 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/30181—Instruction operation extension or modification
-
- 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
-
- 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
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)
Abstract
一种处理器,包括具有多个物理寄存器的物理寄存器文件、映射逻辑和合并系统。对于在接收到的程序指令中特定的每个架构寄存器,映射逻辑映射最多的第一最大数量的物理寄存器,并将对应的映射存储在重命名表中。合并系统为需要合并的每个架构寄存器生成合并指令,将每个生成的合并指令插入到程序指令中,以提供经过修改的指令组,并根据采取规则在连续的发布周期中发布修改后的指令组。在一个实施例中,第一最大数量可以是二。
Description
技术领域
本发明一般涉及寄存器重命名以解决处理器中存储的结果尺寸问题,更具体地涉及一种插入合并指令以合并部分写入结果的系统和方法。
背景技术
处理器包括一组寄存器以存储写入操作的结果。写操作由处理器的标准指令集架构(ISA)的子集执行,例如英特尔的X86架构等。在包括X86架构的许多架构中,执行写入操作的指令可以指代用于存储结果的一组预定义架构寄存器中的至少一个。近期的处理器配置实现物理寄存器文件(PRF)重命名风格,使处理器设计更简洁,并实现更方便的设计扩展。具有PRF重命名的处理器包含用于存储操作结果的物理寄存器文件(PRF)和用于将架构寄存器映射到物理寄存器的重命名结构。PRF是一组物理寄存器,每个物理寄存器使用一组索引或指针等中的唯一一个索引或指针来标识。重命名结构将由指令引用的架构寄存器映射到至少一个对应的物理寄存器的索引。
在执行软件程序或应用程序期间,当遇到引用架构寄存器以存储指令结果的指令时,处理器从物理寄存器索引的“空闲列表(freelist)”中分配可用的物理寄存器,附加或否则分配所选索引给指令,并更新重命名结构的推测部分以将架构寄存器映射到所选择的物理寄存器。当指令执行时,索引用于访问物理寄存器以存储结果。当指令退出时,索引可以被移动到重命名结构的退出部分(或者被移动到不同的重命名结构),以将物理寄存器映射到特定的架构寄存器。物理到架构寄存器映射可以由随后的读取操作使用,直到被重写或重新定义。不需要单独的一组物理架构寄存器;而是将架构标识符等简单地映射到物理寄存器索引。PRF重命名风格更有效,因为索引只是简单地移动或重新映射,而不必在寄存器之间移动值。
当架构使用允许部分写入操作仅修改整个寄存器的一部分的复杂操作数尺寸时,出现尺寸问题。例如,X86架构使用这种复杂的操作数尺寸,尽管本发明不限于X86架构。作为复杂操作数尺寸的示例,可以执行写入指令来修改64位寄存器的8位、16位、32位或64位,其中每个较大的尺寸包含较小的写入尺寸(因为被引用到寄存器的公共端)。即使引用同一架构寄存器,每个指令也可以被分配一个单独的物理寄存器。与同一架构寄存器的先前写操作相同尺寸或比其尺寸大的后续写操作在系统中得到适当处理,无需进一步修改。然而,对相同的架构寄存器的后续写入操作小于之前的写入操作会造成随后的引用该相同的架构寄存器的较大读取操作的问题,因为没有单个物理寄存器保存该架构寄存器的完整结果。
发明内容
根据一个实施例的处理器包括具有多个物理寄存器的物理寄存器文件、映射逻辑和合并系统。对于接收到的程序指令中特定的每个架构寄存器,映射逻辑映射最多第一最大数量的物理寄存器,并将对应的映射存储在重命名表中。合并系统为需要合并的每个架构寄存器生成合并指令,将每个合并指令插入到程序指令中,以提供经过修改的指令组,并根据采取规则在连续的发布周期中发布修改后的指令组。在一个实施例中,第一最大数量可以是二。
合并系统可以包括合并检测器、合并指令生成器、合并采取逻辑和指令发布逻辑。合并检测器检测读取指令是否读取映射到多个物理寄存器的架构寄存器的,检测写指令是否会导致映射超过所述第一最大数,并且生成标识任何架构寄存器的合并的合并标识符。合并指令生成器根据合并标识符生成要合并的每个架构寄存器的合并指令。合并采取逻辑基于所述采取规则确定哪一个合并指令应该在所述多个程序指令中的任何一个之前被插入,并产生指示每个时钟周期发布哪些指令的终止指示。指令发布逻辑提供基于终止指示的发布指令控制。
指令发布逻辑可以包括指令重排序模块,其接收终止指示、程序指令以及由合并指令生成器产生的任何合并指令,并且提供发布指令控制以控制在每个时钟周期内发布的指令。
指令发布逻辑可以包括指令移位器和指令重排序模块。指令移位器根据终止指令移动程序指令。指令重排序模块接收程序指令和由合并指令生成器生成的任何合并指令,并提供发布指令控制以控制在每个时钟周期内发布的指令。
根据一个实施例,合并用于解决处理器的重命名尺寸问题的部分写入结果的方法包括:将重命名表中的多个程序指令中特定的多个架构寄存器中的每一个映射到最多第一最大数量的多个物理寄存器,在执行至少一个程序指令之前,检测任何架构寄存器何时需要被合并,为需要合并的每个架构寄存器生成合并指令,将每个合并指令插入到程序指令中以提供修改的指令组,并且基于建立相应的定时和性能折衷的采取规则在连续的时钟周期内发布经修改的指令组。第一最大数量可能是二。
该方法可以包括检测读取指令是否读取映射到多个物理寄存器的架构寄存器,以及生成相应的读取合并指令。该方法可以包括检测写入指令是否使得映射的超过第一最大数量,并且生成相应的写入合并指令。
该方法可以包括基于检测来生成标识需要被合并的任何架构寄存器的合并标识符,并且在生成和发布期间使用合并标识符。
该方法可以包括基于采取规则确定任何生成的合并指令中的哪一个应当在任何程序指令之前被插入,产生指示每个时钟周期发布哪些指令的终止指示,以及基于终止指示提供发布指令控制。
该方法可以包括从多个采用规则中选择一个采用规则,其中每个采用规则在时序和性能之间提供不同的折衷。
附图说明
关于以下描述和附图,将更好地理解本发明的益处、特征和优点,其中:
图1是根据本发明的一个实施例所述的超标量流水线处理器的框图;
图2是在执行指令μop1和μop2之后并且在执行μop3之前根据本发明的一个实施例的图1的重命名表的至少一部分的图;
图3是在执行指令μop1,μop2,μopM和μop 3之后,根据本发明的一个实施例的图1的重命名表的至少一部分的图;
图4是根据本发明的一个实施例的图1的重命名表的至少一部分的图;
图5是示出根据本发明的一个实施例实现图1的合并系统的框图;
图6是示出根据本发明的另一个实施例实现的图1的合并系统的框图1;以及
图7是示出根据本发明的实施例的示例性采取规则的示意图。
具体实施方式
本发明人已经认识到由使用复杂操作数尺寸的指令集架构引起的PRF重命名风格的尺寸问题。因此,他们开发了一种插入合并指令以合并部分写入结果以将部分写入结果保持在预定最大值并允许后续读取操作的系统和方法。
图1是根据本发明的一个实施例实现的超标量流水线处理器100的简化框图。本文所用的术语“处理器”是指包括微处理器、中央处理单元(CPU)、处理核心、微控制器等的任何类型的处理单元。本文所用的术语“处理器”还包括任何类型的处理器配置,例如集成在芯片或集成电路(IC)上的一个或多个处理单元,包括集成在芯片上系统(SOC)等中的处理器配置。处理器100包括高速缓存诸如X86指令集架构等的指令集架构(ISA)的宏指令的指令高速缓存102。考虑了允许复杂操作数尺寸的额外的或替代的指令集架构。处理器100包括指令转换器104,其接收宏指令并将宏指令转换成微指令。微指令通常可以被称为微指令,但是在本文中更一般地简称为“指令”,或者甚至更简单地称为“μops”。然后将微指令以程序顺序提供给寄存器别名表(RAT)106,寄存器别名表106产生微指令依赖性并将程序顺序的微指令发布到保留站(RS)108和重排序缓冲器(ROB,reorder buffer)110。ROB 110存储从RAT 106发布的每条指令的条目,并确保已发布的指令按顺序退出。
保留站RS 108将指令调度到多个执行单元112中的适当的一个,保留站RS 108也可称为分派器。在一个实施例中,处理器100是无序(OOO,out of order)处理器,其中当保留站108准备不是严格按照程序顺序执行指令时,可以将指令分派给执行单元112。当其所有依赖性被解决并且适当的执行单元112可用于执行指令时,指令被视为准备执行。寄存器别名表106确定并将相关性信息转发给保留站108用于所发布的指令,并且RS 108使用依赖性信息来确定何时分派用于执行的指令。虽然没有具体示出,但是执行单元112可以包括一个或多个整数执行单元(例如整数算术/逻辑单元(ALU)等)、一个或多个浮点执行单元(诸如包括单指令多数据(SIMD)执行单元,例如MMX和SSE单元等)、存储器顺序缓冲器(MOB)等。写入指令的任何结果通过回写(WB)路径被写入一个物理寄存器文件(PRF)114内的物理寄存器。与写指令对应的ROB 110的条目将索引存储到用于写入结果的物理寄存器。
RAT 106包括重命名表116、映射逻辑118、空闲列表120和合并系统122。重命名表116将架构寄存器交叉引用或映射到PRF 114的物理寄存器。空闲列表120将索引列表存储到未分配的相应物理寄存器。当写入操作引用用于存储结果的架构寄存器时,映射逻辑118参考重命名表116来确定架构寄存器是否已被映射。如果还没有映射,则映射逻辑118参考空闲列表120并选择和分配物理寄存器。然后,映射逻辑118将分配的物理寄存器的索引存储到与写入指令中引用的架构寄存器对应的重命名表116的条目中。以这种方式,物理寄存器最初映射到架构寄存器和写指令。如本文进一步描述的,响应于一个或多个部分写指令,每个架构寄存器可被映射到多个物理寄存器,其中架构寄存器的完整内容分布在多个物理寄存器中,因此不存储在某一个物理寄存器。重命名表116可以被配置为映射到达预定数量的“N”个物理寄存器,其中执行合并操作以将总映射数保持在N或N以下,如本文进一步描述的。
合并系统122分析从指令转换器104提供的μops的源和/或目的地,以确定存储在映射到所指示的架构寄存器的多个物理寄存器中的部分结果是否需要被合并到单个物理寄存器。对于需要合并的每个架构寄存器,合并系统122生成合并指令并将合并指令插入到指令流中。合并系统122确定每个合并指令将要被插入的位置,并根据这里进一步描述的适用的采取规则进一步确定每个周期中要向RS 108发布的μops。如由合并系统122建立的排序和编号所指示的,如本文进一步描述的,RAT 106然后向RS 108发布μops。
用于处理器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中的架构标识符仅需要包括用于任何给定寄存器或其部分的单个引用。
当一系列μop指令使用复杂操作数尺寸时,其中多个物理寄存器存储相同架构寄存器的部分,当尝试读取架构寄存器时,挑战出现。例如,考虑以下指令模式:
μop 1)MOV RAX,RBX
μop 2)MOV EAX,ECX
μop 3)MOV RSP,RAX
为第一MOV指令(μop 1)分配第一物理寄存器,并将分配的物理寄存器映射到RAX架构寄存器。第一MOV指令μop 1指示处理器100将64位寄存器RBX的内容移动到64位寄存器RAX中。在操作中,分配给RBX的物理寄存器的内容被移动到为RAX分配的物理寄存器。为第二MOV指令(μop 2)分配第二物理寄存器并将第二物理寄存器映射到EAX架构寄存器。第二MOV指令μop 2指示处理器100将32位寄存器ECX的内容移动到32位寄存器EAX中。在操作中,根据映射将内容从一个物理寄存器移动到另一个物理寄存器。但是,应注意,架构寄存器EAX是RAX架构寄存器的最低有效部分(下半部分),因此RAX寄存器的内容有效地被μop 2修改。因此,第一和第二物理寄存器都不保存RAX架构寄存器的完整内容;相反,在每个中存储一部分。第三物理寄存器被分配给第三MOV指令(μop 3),并且第三物理寄存器被映射到RSP架构寄存器(例如,堆栈指针寄存器)。第三MOV指令旨在将RAX的内容移动到RSP中。然而,RAX的内容分布在两个不同的物理寄存器之间,因此μop 3无法从单个物理寄存器获取RAX的完整内容。
图2是在执行上面列出的指令μop 1和μop 2之后但是执行μop 3之前,根据本发明的一个实施例的重命名表116的至少一部分的图。重命名表116的第一最左边的列列出了用于64位版本的架构(ARCH)寄存器符号,如RAX、RBX、RCX、RSP等所示。尽管仅示出了64位版本,但是应当理解,ARCH符号还可以包括32位版本、16位版本、8位版本等。之后多个列的列表示用于映射到至多列出的每个架构寄存器的物理寄存器的预定最大数量N的推测信息。虽然在各种实施例中可以将附加的物理寄存器映射到每个架构寄存器,但是合并3个或更多个物理寄存器计算上变得复杂(例如,N为3或更多)。在一个实施例中,对第三物理寄存器的部分写入被合并,使得在重命名表116中一次只允许2个映射(例如,N=2)。推测信息包括第一映射物理寄存器的有效值(VALID 1)、物理索引符号(P_IDX 1)和尺寸值(SIZE 1),以及第二映射物理寄存器的有效值(VALID 2)、物理索引符号(P_IDX 2)和尺寸值(SIZE 2)。如果映射有效,则有效值为“1”,否则为“0”。物理寄存器索引符号的格式为PRX,其中“X”是从1到可用物理寄存器总数的数字。尺寸值表示为寄存器存储的有效值的位数。任何条目的短划线符号“-”表示“不关心”或没有条目。
如图所示,第一条目202将由索引PR6标识的物理寄存器的64位映射到RBX,并且第二条目204将由索引PR7标识的物理寄存器的32位映射到RCX(或ECX)。假设先前执行的指令将相应的结果存储到用于架构寄存器RBX和RCX的物理寄存器PR6和PR7中。在执行μop 1之后,第三条目206将由索引PR1标识的第一物理寄存器的64位映射到寄存器RAX,其中PR6的内容被移动到PR1。在执行μop 2之后,第三条目206还将由索引PR2标识的第二物理寄存器的32位映射到RAX,其中PR7的内容移动到PR2。因此,应当理解,64位架构寄存器RAX的值包含在两个物理寄存器PR1和PR2中,其中较低或最低有效32位存储在PR2中,并且下一个更高有效32位存储在PR1。第三MOV指令旨在将RAX的内容移动到RSP中。然而,RAX的内容分布在两个不同的物理寄存器PR1和PR2之间,使得μop 3无法从单个物理寄存器获取RAX的完整内容。
合并系统122检查包括μop 1-μop 3的指令流,并检测RAX的内容被存储在两个不同物理寄存器中的尺寸问题。合并系统122生成将PR2的内容合并到PR1中的合并(MRG)指令,使得PR1存储RAX的全部内容。插入MRG指令以修改原始指令模式,如下所示:
μop 1)MOV RAX,RBX
μop 2)MOV EAX,ECX
μop M)MRG PR1,PR2,PR1
μop 3)MOV RSP,RAX
其中,在μop3之前插入μopM,并进行操作以将PR2的内容组合到PR1中。合并(MRG)指令的格式μopM包括3个参量或操作数,包括2个源寄存器和1个目标寄存器。前两个操作数PR1和PR2是源操作数,其中第一PR1标识较大结果的源,第二PR2标识较小结果的来源。第三操作数PR1标识合并操作的目的地,其中存储在PR2中的较小结果与存储在PR1中的较大结果合并,并且合并结果被存储回PR1作为目的地寄存器。在μop M执行之后,μop 3可以被执行而不改变,因为物理寄存器PR1存储架构寄存器RAX的完整内容。
图3是在执行指令μop 1、μop 2、μop M和μop 3之后根据本发明的一个实施例的重命名表116的至少一部分的图。在执行μop M之后,修改重命名表的条目206,其中VALID 2被改变为“0”,表示RAX仅被映射到一个物理寄存器PR1。在执行μop 3时,另一个物理寄存器PR3被分配给架构寄存器RSP,并且PR1的内容被复制到PR3,如第四条目208所示,其中条目208的值VALID 1、P_IDX 1和SIZE 1为1、PR3和64。此外,VALID 2值可以被设置为“0”,使RSP很清楚得被映射到仅一个物理寄存器PR3。虽然指令μop 1、μop 2和μop 3是“移动”指令,但是它们可以被实现为“复制”操作,其中RBX、RCX和RAX的内容在执行四个指令之后保持有效,如重命名表116所示。
上述示例示出了在尝试读取分布在多个(例如,2个)物理寄存器之间的架构寄存器的读取指令之前插入合并指令。合并指令将多个物理寄存器的内容合并到一个寄存器中,以使读取指令成功操作。考虑μop 3是另一个部分写操作的情况,例如MOV AX,DX,其中第二部分写入变成架构寄存器RAX的低16位。在一个实施例(未示出)中,重命名表116可以包括用于存储RAX的第三部分写入结果的第三组有效索引和尺寸条目。第三物理寄存器PR3可用于将第二部分写入的低16位结果存储到RAX。将3个或更多的物理寄存器映射到一个架构寄存器可能在某些配置中计算复杂。如图4所示,对于其中仅包括每个架构寄存器的2个映射(例如,N=2)的示出的实施例,以先前描述的相同方式在第二部分写指令之前插入合并指令μop M并以与图1中的条目206所示相同的方式组合寄存器PR1和PR2的内容到PR1。然后,对于条目206,VALID 2值被改变为“1”,P_IDX 2值被改变为PR3,并且SIZE 2被改变为16,使得RAX仍被映射到仅2个物理寄存器,PR1和PR3。
总而言之,合并系统122产生合并指令以当指令尝试从映射到多个物理寄存器的架构寄存器读取时执行读合并,或者当指令尝试执行额外的部分写入时执行写合并到已经映射到最大数量的物理寄存器的架构寄存器。写合并用于防止映射超过同一架构寄存器(及其部分)的物理寄存器的最大数量,并且读合并用于将多个物理寄存器的内容合并到一个物理寄存器,以使随后的读取指令进行适当的操作。
图4是根据本发明的一个实施例的图1的重命名表的至少一部分的图。其中仅包括每个架构寄存器的2个映射,并且其中与上述相同的方式将合并指令μopM在第二部分写指令之前插入以便以与图3中的条目206所示相同的方式将寄存器PR1和PR2的内容组合到PR1。
图5是示出根据本发明的一个实施例实现的合并系统122的框图。指令转换器104向RAT 106提供的原始指令(OI)被提供给合并检测器502和指令重排序模块508。在一个实施例中,指令转换器104每时钟周期一次提供至多达四个μops。合并检测器502分析与每个接收到的μop的源和目的地相对应的架构寄存器,并且确定是否有任何架构寄存器需要合并。在一个实施例中,每个μops可以具有至多达3个源和1个目的地,使得每个周期可以存在至多达16个合并,对于四个接收的μops中的每一个可以有4个合并。合并检测器502形成合并标识符(MID),并提供MID到合并采取模块504和合并指令生成器506。MID标识需要被合并的至多达4个接收的μops的每个架构寄存器。
合并指令生成器506接收MID,读取重命名表116中的信息以标识需要合并的架构寄存器,并为每个要合并的架构寄存器生成相应的合并指令。如前所述,合并指令MRG标识映射到架构寄存器的对应物理寄存器,并将该信息合并到存储较大值的物理寄存器,例如,μopM将PR1和PR2合并到映射到架构寄存器EAX的PR1中。合并指令生成器506将一个或多个合并指令(MI)输出到指令重排序模块508。
合并采取模块504接收MID并确定在从指令转换器104接收到的每个原始μop之前应该插入的合并μops的数量。合并采取模块504然后根据多个采用规则之一分割原始μops并且向指令重排序模块508输出终止指示(KI),以便在每个时钟周期中标识应从RAT 106向RS 108发布哪些原始指令。术语“终止”表示相对于当前时钟周期的终止,以标识被推入下一个时钟周期的下一个指令。在一个实施例中,RAT 106一次向包括合并μops的RS 108发布至多达4μops。如本文进一步描述的,可以定义多个采用规则,以提供定时和性能之间的不同折衷。合并采取模块504可以在不同的采取规则之间切换以确保适当的定时和/或实现一定程度的性能。
指令重排序模块508与KI一起接收原始指令OI和合并指令MI,并提供确定每个时钟周期发布原始和合并μops中的哪一个的发布指令控制。
图6是示出根据本发明的另一实施例实现的合并系统122的框图。指令转换器104向RAT 106提供的原始指令(OI)被提供给合并检测器502和指令重排序模块608,指令重排序模块608以与指令重排序模块508类似的方式操作。合并检测器502以基本上相同的方式将MID提供给合并采取模块504,其以类似的方式开发KI。然而,KI被提供给也接收原始指令OI的指令移位器610。指令移位器610根据KI移位原始μops,以确定每个时钟周期哪个μop被移位到时隙0。合并指令生成器506通过接收MID并将合并指令MI提供给指令重排序模块608而以类似的方式操作。指令移位器610与合并指令生成器506和指令重排序模块608配合,以提供确定每个时钟周期发布原始和合并的μops中的哪一个的指令控制。
图7是示出根据本发明的实施例的示例性采取规则的示意图。一组4μop指令702,如I1、I2、3和I4所示,按照程序顺序由指令转换器104提供给RAT 106。合并系统122对指令I1-I4执行合并检查,并产生合并指令M2和M3。合并系统122将合并指令M2和M3插入到原始指令组702中以提供经修改的指令组706。在这种情况下,对应于I2的M2被插入在I2之前,对应于I3的M3被插入到I3之前,使得指令流被改变为I1、M2、I2、M3、I3和I4。合并系统122进一步使用一个或多个采取规则中的一个选择的规则来确定为每个时钟周期发布哪个指令。采取规则不改变指令流706的顺序,而是确定在当前周期中发布哪些指令并将其推送到下一个周期。
对于三种不同的采取规则中的每一个示出了四个连续的时钟周期T1、T2、T3和T4。第一行显示被称为“单独发布合并(ISSUE MERGE ALONE)”710的第一采取规则,第二行显示被称为“发布直到合并(ISSUE UNTIL MERGE)”712的第二采取规则,第三行示出被称为“发布直到第二合并(ISSUE UNTIL 2ND MERGE)”714的第三采取规则。如前所述,合并采取模块504基于由合并检测器502提供的MID施加合并取得规则中的活动的一个以提供用于标识在每个时钟周期中发布的指令的KI。不同的采取规则提供了时间和性能之间的折衷,并且可以基于操作参数进行切换。在每个时钟周期中,当然,指令转换器104可以继续提供至多4个附加指令(未示出)。时序考虑了由合并检测器502执行的功能,以分析输入指令进而提供MID,以及考虑了由合并指令生成器506执行的功能,以生成要插入到指令流中的期望的合并指令。
ISSUE MERGE ALONE 710确定需要合并的原始指令以及它们对应的合并指令将在每个周期中单独发布。指令I1不需要合并,并且首先分配给T1周期。由于指令I2需要合并,所以将其与合并指令M2一起被推到第二周期T2,从而在周期T2中单独发布指令M2和I2。然后由于指令I3需要合并,所以它与其合并指令M3一起被推到第三周期,所以在周期T3中单独发布指令M3和I3。不需要合并的指令I4在第四周期T4中发布。虽然未示出,但是根据是否需要合并,可以在周期T4中的指令I4之后最多发布3个附加指令。在这种情况下,需要4个时钟周期来发布ISSUE MERGE ALONE710的指令流706。
ISSUE UNTIL MERGE 712发布至多每个周期中允许的总数(如4)的指令,并发布指令直到指令及其所有相应的合并指令已经在该周期中发布。在这种情况下,由于指令I1不需要合并,但是指令I2仅仅只需要一个合并指令M2,所以在第一周期T1中发布指令I1、M2和I2。下一条指令I3也需要合并,因此在下一个周期T2中发布指令M3和I3。虽然未示出,但是如果I3除了M3之外还有更多的合并指令,如果T2中发布的总数不超过最大数量(如4),则它们也可以在T2内发布。这留下了在第三周期T3中发布的指令I4。再次,根据是否需要合并并且如果可以满足时序,可以在周期T3中可以与指令I4一起发布至多3个附加指令(未示出)。在这种情况下,需要3个时钟周期来发布指令流706,其中ISSUE UNTIL MERGE 712以较少的时钟周期发布指令流706作为ISSUE MERGE ALONE 710,从而提高性能。
ISSUE UNTIL 2ND MERGE 714发布每个周期中允许的至多总数(如4)的指令,并且发布指令,直到指令、其所有相应的合并指令和所有其他指令指令在对应于下一个指令的下一个合并指令之前已在周期中发布为止。然而,在第一周期T1中,指令M3和I3不能与M2和I2一起发布,因为在所示配置中每个周期只允许最多4个指令。以这种方式,指令M3和I3被推到下一个周期T2。由于指令I4不需要合并,所以也可以包括在周期T2中。虽然未示出,但是如果附加指令不需要合并,并且如果定时允许,就如T2中发布的总数不超过最大数4,则在周期T2中可以发布一个附加指令。因此,ISSUE UNTIL 2ND MERGE 714通过仅在两个周期内发布指令流706而提供比其他采取规则更大的性能,但是可能提出额外的时序挑战。
已经提出了前述描述,以使本领域普通技术人员能够在特定应用及其要求的背景下提供和使用本发明。虽然已经参考其某些优选的形式相当详细地描述了本发明,但是其他的形式和变化是可能的和预期的。对优选实施例的各种修改对于本领域技术人员将是显而易见的,并且本文定义的一般原理可以应用于其他实施例。例如,本文描述的方框可以以包括逻辑器件或电路等的任何合适的方式来实现。本领域技术人员应当理解,在不脱离本发明的精神和范围的情况下,它们可以容易地使用所公开的概念和具体实施例作为设计或修改用于实现本发明的相同目的的其他结构的基础。因此,本发明不旨在限于本文所示和所述的具体实施例,而是符合与本文公开的原理和新颖特征一致的最广范围。
Claims (19)
1.一种处理器,包括:
物理寄存器文件,包括多个物理寄存器;
映射逻辑,其对于在多个程序指令中指定的多个架构寄存器中的每一个映射至多第一最大数量的所述多个物理寄存器,并且将对应映射关系存储在重命名表中;以及
合并系统,其对于需要被合并的所述多个架构寄存器中的每一个生成合并指令,其将多个合并指令插入到所述多个程序指令中以提供经修改的指令组,其中所述合并系统确定在所述多个程序指令中的任一个之前应插入所述多个合并指令中的哪一个,并且基于采取规则在连续的发布周期发布所述修改的指令组。
2.根据权利要求1所述的处理器,其中所述合并系统包括:
合并检测器,其检测所述多个程序指令的读取指令是否读取映射到多个物理寄存器的架构寄存器,其检测所述多个程序指令的写指令是否会导致映射超过所述第一最大数量,并且生成标识所述多个架构寄存器中的任何一个合并的合并标识符;
合并指令生成器,其基于所述合并标识符生成要被合并的每个架构寄存器的所述合并指令;
合并采取逻辑,其基于所述采取规则确定所述多个合并指令中的哪一个应该在所述多个程序指令中的任何一个之前被插入,并且产生指示每个时钟周期发布哪些指令的终止指示;以及
指令发布逻辑,其基于所述终止指示提供发布指令控制。
3.根据权利要求2所述的处理器,其中所述指令发布逻辑包括指令重排序模块,其接收所述终止指示、所述多个程序指令以及由所述合并指令生成器生成的任何合并指令,并且提供所述发布指令控制以控制在每个时钟周期内发布的指令。
4.根据权利要求2所述的处理器,其中所述指令发布逻辑包括指令移位器和指令重排序模块,其中所述指令移位器根据终止指令移动所述多个程序指令,并且其中所述指令重排序模块接收所述多个程序指令和由所述合并指令生成器产生的任何合并指令,并且提供所述发布指令控制以控制在每个时钟周期中发布的指令。
5.根据权利要求1所述的处理器,其中所述采取规则包括发布合并单独采取规则,其允许只有一个具有至少一个架构寄存器的指令被合并并且对应于在时钟周期中发布的至少一个生成的合并指令。
6.根据权利要求1所述的处理器,其中所述采取规则包括发布直到合并采取规则,其允许在时钟周期内最多发布第二最大数量的指令,并且允许发布直到具有至少一个架构寄存器的指令被合并并且在所述时钟周期中发布了相应的至少一个合并指令。
7.根据权利要求1所述的处理器,其中所述采取规则包括发布直到第二合并采取规则,其允许在时钟周期中发布最多第二最大数量的指令,并且允许发布直到具有至少一个架构寄存器的指令被合并,在所述时钟周期中已经发布与下一个指令对应的下一个合并指令之前的对应的至少一个合并指令和其他指令。
8.根据权利要求1所述的处理器,其中所述采取规则包括从多个采取规则中选择的采取规则,其中所述多个采取规则中的每一个在时序和性能之间提供不同的折衷。
9.根据权利要求1所述的处理器,其中所述第一最大数量是两个。
10.一种合并用于解决处理器的重命名尺寸问题的部分写入结果的方法,包括:
将重命名表中的多个程序指令中特定的多个架构寄存器中的每一个映射到最多第一最大数量的多个物理寄存器;
在执行所述多个程序指令中的至少一个程序指令之前,检测所述多个架构寄存器中的任何一个何时需要被合并;
为需要合并的所述多个架构寄存器中的每一个生成合并指令;
将多个合并指令插入到所述多个程序指令中以提供经修改的指令组,其中在所述多个程序指令中的任一个之前应插入所述多个合并指令中的哪一个被确定;和
基于采取规则在连续的时钟周期内发布经修改的指令组。
11.根据权利要求10所述的方法,其中:
所述检测包括检测所述多个程序指令的读取指令是否读取映射到多个物理寄存器的架构寄存器;和
其中所述生成包括生成对应的读取合并指令。
12.根据权利要求10所述的方法,其中:
所述检测包括检测所述多个程序指令的写入指令是否会导致映射超过所述第一最大数量;和
其中所述生成包括生成相应的写入合并指令。
13.根据权利要求10所述的方法,还包括:生成合并标识符,所述合并标识符基于所述检测来标识需要被合并的所述多个架构寄存器中的任何一个,并且在所述生成和所述发布期间使用所述合并标识符。
14.根据权利要求10所述的方法,还包括:基于所述采取规则,确定在所述多个程序指令中的任何一个之前应该插入任何所生成的合并指令中的哪一个,产生指示每个时钟周期发布哪些指令的终止指示;以及基于所述终止指示提供发布指令控制。
15.根据权利要求10所述的方法,还包括从多个采取规则中选择采取规则,其中所述多个采取规则中的每一个在时序和性能之间提供不同的折衷。
16.根据权利要求10所述的方法,还包括仅允许一个具有至少一个架构寄存器的指令被合并并且在时钟周期中发布相应的至少一个合并指令。
17.根据权利要求10所述的方法,还包括允许在时钟周期中发布最多第二最大数量的指令,并且允许发布直到具有要被合并的至少一个架构寄存器的指令和在所述时钟周期中发布了对应的至少一个合并指令。
18.根据权利要求10所述的方法,还包括允许在时钟周期中发布最多第二最大数量的指令,并且允许发布直到具有至少一个架构寄存器的指令被合并,并且在所述时钟周期中已经发布对应的至少一个合并指令、和与下一个指令相对应的下一个合并指令之前的其他指令。
19.根据权利要求10所述的方法,其中所述映射包括将多个程序指令中特定的多个架构寄存器中的每一个映射到针对每个架构寄存器的最多两个物理寄存器。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710491888.7A CN107291425B (zh) | 2017-06-23 | 2017-06-23 | 合并解决重命名尺寸问题的部分写入结果的系统和方法 |
US15/810,876 US10853080B2 (en) | 2017-06-23 | 2017-11-13 | System and method of merging partial write results for resolving renaming size issues |
TW107107036A TWI666587B (zh) | 2017-06-23 | 2018-03-02 | 處理器及合併用於解決處理器的重命名尺寸問題的部分寫入結果的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710491888.7A CN107291425B (zh) | 2017-06-23 | 2017-06-23 | 合并解决重命名尺寸问题的部分写入结果的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107291425A CN107291425A (zh) | 2017-10-24 |
CN107291425B true CN107291425B (zh) | 2020-11-24 |
Family
ID=60099789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710491888.7A Active CN107291425B (zh) | 2017-06-23 | 2017-06-23 | 合并解决重命名尺寸问题的部分写入结果的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10853080B2 (zh) |
CN (1) | CN107291425B (zh) |
TW (1) | TWI666587B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11494190B2 (en) * | 2021-03-31 | 2022-11-08 | Arm Limited | Circuitry and method for controlling a generated association of a physical register with a predicated processing operation based on predicate data state |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6463525B1 (en) * | 1999-08-16 | 2002-10-08 | Sun Microsystems, Inc. | Merging single precision floating point operands |
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 |
CN101794214B (zh) * | 2009-02-04 | 2013-11-20 | 世意法(北京)半导体研发有限责任公司 | 使用多块物理寄存器映射表的寄存器重命名系统及其方法 |
CN104049947A (zh) * | 2013-03-15 | 2014-09-17 | 三星电子株式会社 | 基于动态重命名的矢量寄存器堆的寄存器重新配置 |
CN106095393A (zh) * | 2016-06-22 | 2016-11-09 | 上海兆芯集成电路有限公司 | 在回退阶段期间合并部分写结果的系统和方法 |
US9569574B1 (en) * | 2014-03-07 | 2017-02-14 | Altera Corporation | Method and apparatus for performing fast incremental physical design optimization |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
GB2393270B (en) * | 2002-09-19 | 2005-07-27 | Advanced Risc Mach Ltd | Executing variable length instructions stored within a plurality of discrete memory address regions |
CN100555225C (zh) * | 2008-03-17 | 2009-10-28 | 中国科学院计算技术研究所 | 一种支持x86虚拟机的risc处理器装置及方法 |
US7937561B2 (en) * | 2008-04-03 | 2011-05-03 | Via Technologies, Inc. | Merge microinstruction for minimizing source dependencies in out-of-order execution microprocessor with variable data size macroarchitecture |
TWI418991B (zh) * | 2010-06-03 | 2013-12-11 | Super Talent Electronics Inc | 針對智慧型儲存交換器所設計的快閃記憶體系統 |
US20120059866A1 (en) * | 2010-09-03 | 2012-03-08 | Advanced Micro Devices, Inc. | Method and apparatus for performing floating-point division |
CN103959238B (zh) * | 2011-11-30 | 2017-06-09 | 英特尔公司 | 使用gpu/cpu体系结构的rsa的高效实现 |
US9442861B2 (en) * | 2011-12-20 | 2016-09-13 | Intel Corporation | System and method for out-of-order prefetch instructions in an in-order pipeline |
US9098265B2 (en) * | 2012-07-11 | 2015-08-04 | Arm Limited | Controlling an order for processing data elements during vector processing |
KR102332478B1 (ko) * | 2013-10-27 | 2021-11-30 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 부동 소수점 레지스터 앨리어싱을 위한 프로세서 및 방법들 |
US10318299B2 (en) * | 2013-10-31 | 2019-06-11 | International Business Machines Corporation | Reading a register pair by writing a wide register |
US9442731B2 (en) * | 2014-03-13 | 2016-09-13 | Intel Corporation | Packed two source inter-element shift merge processors, methods, systems, and instructions |
-
2017
- 2017-06-23 CN CN201710491888.7A patent/CN107291425B/zh active Active
- 2017-11-13 US US15/810,876 patent/US10853080B2/en active Active
-
2018
- 2018-03-02 TW TW107107036A patent/TWI666587B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6463525B1 (en) * | 1999-08-16 | 2002-10-08 | Sun Microsystems, Inc. | Merging single precision floating point operands |
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 |
CN101794214B (zh) * | 2009-02-04 | 2013-11-20 | 世意法(北京)半导体研发有限责任公司 | 使用多块物理寄存器映射表的寄存器重命名系统及其方法 |
CN104049947A (zh) * | 2013-03-15 | 2014-09-17 | 三星电子株式会社 | 基于动态重命名的矢量寄存器堆的寄存器重新配置 |
US9569574B1 (en) * | 2014-03-07 | 2017-02-14 | Altera Corporation | Method and apparatus for performing fast incremental physical design optimization |
CN106095393A (zh) * | 2016-06-22 | 2016-11-09 | 上海兆芯集成电路有限公司 | 在回退阶段期间合并部分写结果的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201905681A (zh) | 2019-02-01 |
TWI666587B (zh) | 2019-07-21 |
CN107291425A (zh) | 2017-10-24 |
US10853080B2 (en) | 2020-12-01 |
US20180373539A1 (en) | 2018-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6849274B2 (ja) | 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック | |
KR101754462B1 (ko) | 동적 비순차적 프로세서 파이프라인을 구현하기 위한 방법 및 장치 | |
CN106648843B (zh) | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 | |
US9092215B2 (en) | Mapping between registers used by multiple instruction sets | |
JP5758515B2 (ja) | バイパスマルチプルインスタンス化テーブルを用いた移動除去のためのシステム及び方法 | |
US7996662B2 (en) | Floating point status/control register encodings for speculative register field | |
JP2018500657A5 (zh) | ||
CN104899181B (zh) | 用于处理向量操作数的数据处理装置和方法 | |
CN105302543A (zh) | 在64位机器上运行32位操作系统 | |
JP2017538213A (ja) | アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置 | |
WO2014090085A1 (en) | Branch-free condition evaluation | |
WO2014090091A1 (en) | Tracking multiple conditions in a general purpose register and instruction therefor | |
EP3060979B1 (en) | Processor and methods for immediate handling and flag handling | |
TWI603261B (zh) | 用以執行離心操作的指令及邏輯 | |
JP7156776B2 (ja) | リタイアフェーズ中に部分書込み結果をマージするシステムおよび方法 | |
CN107291425B (zh) | 合并解决重命名尺寸问题的部分写入结果的系统和方法 | |
CN111443948B (zh) | 指令执行方法、处理器和电子设备 | |
US9727340B2 (en) | Hybrid tag scheduler to broadcast scheduler entry tags for picked instructions | |
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 | |
EP3405863B1 (en) | Encoding instructions identifying first and second architectural register numbers | |
CN114327635A (zh) | 用于处理器的非对称执行端口和分配宽度的可缩放端口绑定的方法、系统和装置 | |
US7783692B1 (en) | Fast flag generation |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
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. |
|
CP03 | Change of name, title or address |