买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】合并解决重命名尺寸问题的部分写入结果的系统和方法_上海兆芯集成电路有限公司_201710491888.7 

申请/专利权人:上海兆芯集成电路有限公司

申请日:2017-06-23

公开(公告)日:2020-11-24

公开(公告)号:CN107291425B

主分类号:G06F9/38(20060101)

分类号:G06F9/38(20060101)

优先权:

专利状态码:有效-授权

法律状态:2020.11.24#授权;2017.11.24#实质审查的生效;2017.10.24#公开

摘要:一种处理器,包括具有多个物理寄存器的物理寄存器文件、映射逻辑和合并系统。对于在接收到的程序指令中特定的每个架构寄存器,映射逻辑映射最多的第一最大数量的物理寄存器,并将对应的映射存储在重命名表中。合并系统为需要合并的每个架构寄存器生成合并指令,将每个生成的合并指令插入到程序指令中,以提供经过修改的指令组,并根据采取规则在连续的发布周期中发布修改后的指令组。在一个实施例中,第一最大数量可以是二。

主权项:1.一种处理器,包括:物理寄存器文件,包括多个物理寄存器;映射逻辑,其对于在多个程序指令中指定的多个架构寄存器中的每一个映射至多第一最大数量的所述多个物理寄存器,并且将对应映射关系存储在重命名表中;以及合并系统,其对于需要被合并的所述多个架构寄存器中的每一个生成合并指令,其将多个合并指令插入到所述多个程序指令中以提供经修改的指令组,其中所述合并系统确定在所述多个程序指令中的任一个之前应插入所述多个合并指令中的哪一个,并且基于采取规则在连续的发布周期发布所述修改的指令组。

全文数据:合并解决重命名尺寸问题的部分写入结果的系统和方法技术领域[0001]本发明一般涉及寄存器重命名以解决处理器中存储的结果尺寸问题,更具体地涉及一种插入合并指令以合并部分写入结果的系统和方法。背景技术[0002]处理器包括一组寄存器以存储写入操作的结果。写操作由处理器的标准指令集架构(ISA的子集执行,例如英特尔®的X86架构等。在包括X86架构的许多架构中,执行写入操作的指令可以指代用于存储结果的一组预定义架构寄存器中的至少一个。近期的处理器配置实现物理寄存器文件PRF重命名风格,使处理器设计更简洁,并实现更方便的设计扩展。具有PRF重命名的处理器包含用于存储操作结果的物理寄存器文件PRF和用于将架构寄存器映射到物理寄存器的重命名结构。PRF是一组物理寄存器,每个物理寄存器使用一组索引或指针等中的唯一一个索引或指针来标识。重命名结构将由指令引用的架构寄存器映射到至少一个对应的物理寄存器的索引。[0003]在执行软件程序或应用程序期间,当遇到引用架构寄存器以存储指令结果的指令时,处理器从物理寄存器索引的“空闲列表freelist”中分配可用的物理寄存器,附加或否则分配所选索引给指令,并更新重命名结构的推测部分以将架构寄存器映射到所选择的物理寄存器。当指令执行时,索引用于访问物理寄存器以存储结果。当指令退出时,索引可以被移动到重命名结构的退出部分或者被移动到不同的重命名结构),以将物理寄存器映射到特定的架构寄存器。物理到架构寄存器映射可以由随后的读取操作使用,直到被重写或重新定义。不需要单独的一组物理架构寄存器;而是将架构标识符等简单地映射到物理寄存器索引。PRF重命名风格更有效,因为索引只是简单地移动或重新映射,而不必在寄存器之间移动值。[0004]当架构使用允许部分写入操作仅修改整个寄存器的一部分的复杂操作数尺寸时,出现尺寸问题。例如,X86架构使用这种复杂的操作数尺寸,尽管本发明不限于X86架构。作为复杂操作数尺寸的示例,可以执行写入指令来修改64位寄存器的8位、16位、32位或64位,其中每个较大的尺寸包含较小的写入尺寸(因为被引用到寄存器的公共端)。即使引用同一架构寄存器,每个指令也可以被分配一个单独的物理寄存器。与同一架构寄存器的先前写操作相同尺寸或比其尺寸大的后续写操作在系统中得到适当处理,无需进一步修改。然而,对相同的架构寄存器的后续写入操作小于之前的写入操作会造成随后的引用该相同的架构寄存器的较大读取操作的问题,因为没有单个物理寄存器保存该架构寄存器的完整结果。发明内容[0005]根据一个实施例的处理器包括具有多个物理寄存器的物理寄存器文件、映射逻辑和合并系统。对于接收到的程序指令中特定的每个架构寄存器,映射逻辑映射最多第一最大数量的物理寄存器,并将对应的映射存储在重命名表中。合并系统为需要合并的每个架构寄存器生成合并指令,将每个合并指令插入到程序指令中,以提供经过修改的指令组,并根据采取规则在连续的发布周期中发布修改后的指令组。在一个实施例中,第一最大数量可以是二。[0006]合并系统可以包括合并检测器、合并指令生成器、合并采取逻辑和指令发布逻辑。合并检测器检测读取指令是否读取映射到多个物理寄存器的架构寄存器的,检测写指令是否会导致映射超过所述第一最大数,并且生成标识任何架构寄存器的合并的合并标识符。合并指令生成器根据合并标识符生成要合并的每个架构寄存器的合并指令。合并采取逻辑基于所述采取规则确定哪一个合并指令应该在所述多个程序指令中的任何一个之前被插入,并产生指示每个时钟周期发布哪些指令的终止指示。指令发布逻辑提供基于终止指示的发布指令控制。[0007]指令发布逻辑可以包括指令重排序模块,其接收终止指示、程序指令以及由合并指令生成器产生的任何合并指令,并且提供发布指令控制以控制在每个时钟周期内发布的指令。[0008]指令发布逻辑可以包括指令移位器和指令重排序模块。指令移位器根据终止指令移动程序指令。指令重排序模块接收程序指令和由合并指令生成器生成的任何合并指令,并提供发布指令控制以控制在每个时钟周期内发布的指令。[0009]根据一个实施例,合并用于解决处理器的重命名尺寸问题的部分写入结果的方法包括:将重命名表中的多个程序指令中特定的多个架构寄存器中的每一个映射到最多第一最大数量的多个物理寄存器,在执行至少一个程序指令之前,检测任何架构寄存器何时需要被合并,为需要合并的每个架构寄存器生成合并指令,将每个合并指令插入到程序指令中以提供修改的指令组,并且基于建立相应的定时和性能折衷的采取规则在连续的时钟周期内发布经修改的指令组。第一最大数量可能是二。[0010]该方法可以包括检测读取指令是否读取映射到多个物理寄存器的架构寄存器,以及生成相应的读取合并指令。该方法可以包括检测写入指令是否使得映射的超过第一最大数量,并且生成相应的写入合并指令。[0011]该方法可以包括基于检测来生成标识需要被合并的任何架构寄存器的合并标识符,并且在生成和发布期间使用合并标识符。[0012]该方法可以包括基于采取规则确定任何生成的合并指令中的哪一个应当在任何程序指令之前被插入,产生指示每个时钟周期发布哪些指令的终止指示,以及基于终止指示提供发布指令控制。[0013]该方法可以包括从多个采用规则中选择一个采用规则,其中每个采用规则在时序和性能之间提供不同的折衷。附图说明[0014]关于以下描述和附图,将更好地理解本发明的益处、特征和优点,其中:[0015]图1是根据本发明的一个实施例所述的超标量流水线处理器的框图;[0016]图2是在执行指令μορί和μ〇ρ2之后并且在执行μ〇ρ3之前根据本发明的一个实施例的图1的重命名表的至少一部分的图;[0017]图3是在执行指令μ〇ρ1,μ〇ρ2,μ〇ρΜ和μορ3之后,根据本发明的一个实施例的图1的重命名表的至少一部分的图;[0018]图4是根据本发明的一个实施例的图1的重命名表的至少一部分的图;[0019]图5是示出根据本发明的一个实施例实现图1的合并系统的框图;[0020]图6是示出根据本发明的另一个实施例实现的图1的合并系统的框图1;以及[0021]图7是示出根据本发明的实施例的示例性采取规则的示意图。具体实施方式[0022]本发明人已经认识到由使用复杂操作数尺寸的指令集架构引起的PRF重命名风格的尺寸问题。因此,他们开发了一种插入合并指令以合并部分写入结果以将部分写入结果保持在预定最大值并允许后续读取操作的系统和方法。[0023]图1是根据本发明的一个实施例实现的超标量流水线处理器100的简化框图。本文所用的术语“处理器”是指包括微处理器、中央处理单元CPU、处理核心、微控制器等的任何类型的处理单元。本文所用的术语“处理器”还包括任何类型的处理器配置,例如集成在芯片或集成电路(IC上的一个或多个处理单元,包括集成在芯片上系统(SOC等中的处理器配置。处理器100包括高速缓存诸如X86指令集架构等的指令集架构(ISA的宏指令的指令高速缓存102。考虑了允许复杂操作数尺寸的额外的或替代的指令集架构。处理器100包括指令转换器104,其接收宏指令并将宏指令转换成微指令。微指令通常可以被称为微指令,但是在本文中更一般地简称为“指令”,或者甚至更简单地称为“yops”。然后将微指令以程序顺序提供给寄存器别名表RAT106,寄存器别名表106产生微指令依赖性并将程序顺序的微指令发布到保留站RS108和重排序缓冲器R0B,re〇rderbufferIlO13ROB110存储从RAT106发布的每条指令的条目,并确保已发布的指令按顺序退出。[0024]保留站RS108将指令调度到多个执行单元112中的适当的一个,保留站RS108也可称为分派器。在一个实施例中,处理器100是无序000,outoforder处理器,其中当保留站108准备不是严格按照程序顺序执行指令时,可以将指令分派给执行单元112。当其所有依赖性被解决并且适当的执行单元112可用于执行指令时,指令被视为准备执行。寄存器别名表106确定并将相关性信息转发给保留站108用于所发布的指令,并且RS108使用依赖性信息来确定何时分派用于执行的指令。虽然没有具体示出,但是执行单元112可以包括一个或多个整数执行单元例如整数算术逻辑单元ALU等)、一个或多个浮点执行单元诸如包括单指令多数据SMD执行单元,例如MMX和SSE单元等)、存储器顺序缓冲器MOB等。写入指令的任何结果通过回写WB路径被写入一个物理寄存器文件PRF114内的物理寄存器。与写指令对应的ROB110的条目将索引存储到用于写入结果的物理寄存器。[0025]RAT106包括重命名表116、映射逻辑118、空闲列表120和合并系统122。重命名表116将架构寄存器交叉引用或映射到PRF114的物理寄存器。空闲列表120将索引列表存储到未分配的相应物理寄存器。当写入操作引用用于存储结果的架构寄存器时,映射逻辑118参考重命名表116来确定架构寄存器是否已被映射。如果还没有映射,则映射逻辑118参考空闲列表120并选择和分配物理寄存器。然后,映射逻辑118将分配的物理寄存器的索引存储到与写入指令中引用的架构寄存器对应的重命名表116的条目中。以这种方式,物理寄存器最初映射到架构寄存器和写指令。如本文进一步描述的,响应于一个或多个部分写指令,每个架构寄存器可被映射到多个物理寄存器,其中架构寄存器的完整内容分布在多个物理寄存器中,因此不存储在某一个物理寄存器。重命名表116可以被配置为映射到达预定数量的“N”个物理寄存器,其中执行合并操作以将总映射数保持在N或N以下,如本文进一步描述的。[0026]合并系统122分析从指令转换器104提供的yops的源和或目的地,以确定存储在映射到所指示的架构寄存器的多个物理寄存器中的部分结果是否需要被合并到单个物理寄存器。对于需要合并的每个架构寄存器,合并系统122生成合并指令并将合并指令插入到指令流中。合并系统122确定每个合并指令将要被插入的位置,并根据这里进一步描述的适用的采取规则进一步确定每个周期中要向RS108发布的yops。如由合并系统122建立的排序和编号所指示的,如本文进一步描述的,RAT106然后向RS108发布yops。[0027]用于处理器100的ISA例如所示配置中的X86使用复杂的操作数尺寸,允许对每个架构寄存器进行部分写入。X86架构包括可以使用多种尺寸访问的多个架构寄存器。64位版本包括寄存器符号狀乂、1^乂、1^^、1^»等64位使用预先提供的’1?’符号),其中使用任何这些64位符号的写操作是写入整个寄存器。这些寄存器分别包括32位符号EAX、EBX、ECX、EDX等32位使用预先提供的’E’符号)以及16位符号4乂、8乂、0乂、0乂等(16位仅使用寄存器名称而没有预先提供的字母)。也可以定义8位符号,但是每个符号通常都是16位版本的最高有效字节MSB或最低有效字节LSB,不再进一步描述。重命名表116中的架构标识符仅需要包括用于任何给定寄存器或其部分的单个引用。[0028]当一系列μορ指令使用复杂操作数尺寸时,其中多个物理寄存器存储相同架构寄存器的部分,当尝试读取架构寄存器时,挑战出现。例如,考虑以下指令模式:[0029]μ〇ρ1M0VRAX,RBX[0030]μ〇ρ2MOVEAX,ECX[0031]μ〇ρ3MOVRSP,RAX[0032]为第一MOV指令μορI分配第一物理寄存器,并将分配的物理寄存器映射到RAX架构寄存器。第一MOV指令μορ1指示处理器100将64位寄存器RBX的内容移动到64位寄存器RAX中。在操作中,分配给RBX的物理寄存器的内容被移动到为RAX分配的物理寄存器。为第二MOV指令μορ2分配第二物理寄存器并将第二物理寄存器映射到EAX架构寄存器。第二MOV指令μορ2指示处理器100将32位寄存器ECX的内容移动到32位寄存器EAX中。在操作中,根据映射将内容从一个物理寄存器移动到另一个物理寄存器。但是,应注意,架构寄存器EAX是RAX架构寄存器的最低有效部分下半部分),因此RAX寄存器的内容有效地被μορ2修改。因此,第一和第二物理寄存器都不保存RAX架构寄存器的完整内容;相反,在每个中存储一部分。第三物理寄存器被分配给第三MOV指令μορ3,并且第三物理寄存器被映射到RSP架构寄存器例如,堆栈指针寄存器)。第三MOV指令旨在将RAX的内容移动到RSP中。然而,RAX的内容分布在两个不同的物理寄存器之间,因此μορ3无法从单个物理寄存器获取RAX的完整内容。[0033]图2是在执行上面列出的指令μορ1和μορ2之后但是执行μορ3之前,根据本发明的一个实施例的重命名表116的至少一部分的图。重命名表116的第一最左边的列列出了用于64位版本的架构ARCH寄存器符号,如1^乂、1^乂、此乂、1«?等所示。尽管仅示出了64位版本,但是应当理解,ARCH符号还可以包括32位版本、16位版本、8位版本等。之后多个列的列表示用于映射到至多列出的每个架构寄存器的物理寄存器的预定最大数量N的推测信息。虽然在各种实施例中可以将附加的物理寄存器映射到每个架构寄存器,但是合并3个或更多个物理寄存器计算上变得复杂例如,N为3或更多)。在一个实施例中,对第三物理寄存器的部分写入被合并,使得在重命名表116中一次只允许2个映射例如,N=2。推测信息包括第一映射物理寄存器的有效值VALID1、物理索引符号P_IDX1和尺寸值SIZE1,以及第二映射物理寄存器的有效值VALID2、物理索引符号P_IDX2和尺寸值SIZE2。如果映射有效,则有效值为“1”,否则为“0”。物理寄存器索引符号的格式为PRX,其中“X”是从1到可用物理寄存器总数的数字。尺寸值表示为寄存器存储的有效值的位数。任何条目的短划线符号表示“不关心”或没有条目。[0034]如图所示,第一条目202将由索引PR6标识的物理寄存器的64位映射到RBX,并且第二条目204将由索引PR7标识的物理寄存器的32位映射到RCX域ECX。假设先前执行的指令将相应的结果存储到用于架构寄存器RBX和RCX的物理寄存器PR6和PR7中。在执行μορ1之后,第三条目206将由索弓IPRl标识的第一物理寄存器的64位映射到寄存器RAX,其中PR6的内容被移动到PRl。在执行μ〇Ρ2之后,第三条目206还将由索引PR2标识的第二物理寄存器的32位映射到RAX,其中PR7的内容移动到PR2。因此,应当理解,64位架构寄存器RAX的值包含在两个物理寄存器PRl和PR2中,其中较低或最低有效32位存储在PR2中,并且下一个更高有效32位存储在PRl。第三MOV指令旨在将RAX的内容移动到RSP中。然而,RAX的内容分布在两个不同的物理寄存器PRl和PR2之间,使得μορ3无法从单个物理寄存器获取RAX的完整内容。[0035]合并系统122检查包括μορ1-μ〇ρ3的指令流,并检测RAX的内容被存储在两个不同物理寄存器中的尺寸问题。合并系统122生成将PR2的内容合并到PRl中的合并MRG指令,使得PRl存储RAX的全部内容。插入MRG指令以修改原始指令模式,如下所示:[0036]μορIMOVRAX,RBX[0037]μορ2MOVEAX,ECX[0038]μορΜMRGPRl,PR2,PRl[0039]μορ3MOVRSP,RAX[0040]其中,在μ〇ρ3之前插入μορΜ,并进行操作以将PR2的内容组合到PRl中。合并MRG指令的格式μορΜ包括3个参量或操作数,包括2个源寄存器和1个目标寄存器。前两个操作数PRl和PR2是源操作数,其中第一PRl标识较大结果的源,第二PR2标识较小结果的来源。第三操作数PRl标识合并操作的目的地,其中存储在PR2中的较小结果与存储在PRl中的较大结果合并,并且合并结果被存储回PRl作为目的地寄存器。在μορM执行之后,μορ3可以被执行而不改变,因为物理寄存器PRl存储架构寄存器RAX的完整内容。[0041]图3是在执行指令μορ1、μορ2、μορM和μορ3之后根据本发明的一个实施例的重命名表116的至少一部分的图。在执行μορM之后,修改重命名表的条目206,其中VALID2被改变为“〇”,表示RAX仅被映射到一个物理寄存器PRl。在执行μορ3时,另一个物理寄存器PR3被分配给架构寄存器RSP,并且PRl的内容被复制到PR3,如第四条目208所示,其中条目208的值VALID1、P_IDX1和SIZE1为1、PR3和64。此外,VALID2值可以被设置为“0”,使RSP很清楚得被映射到仅一个物理寄存器PR3。虽然指令μορ1、μ〇ρ2和μορ3是“移动”指令,但是它们可以被实现为“复制”操作,其中RBX、RCX和RAX的内容在执行四个指令之后保持有效,如重命名表116所示。[0042]上述示例示出了在尝试读取分布在多个例如,2个物理寄存器之间的架构寄存器的读取指令之前插入合并指令。合并指令将多个物理寄存器的内容合并到一个寄存器中,以使读取指令成功操作。考虑μ〇Ρ3是另一个部分写操作的情况,例如MOVAX,DX,其中第二部分写入变成架构寄存器RAX的低16位。在一个实施例(未不出)中,重命名表116可以包括用于存储RAX的第三部分写入结果的第三组有效索引和尺寸条目。第三物理寄存器PR3可用于将第二部分写入的低16位结果存储到RAX。将3个或更多的物理寄存器映射到一个架构寄存器可能在某些配置中计算复杂。如图4所示,对于其中仅包括每个架构寄存器的2个映射例如,N=2的示出的实施例,以先前描述的相同方式在第二部分写指令之前插入合并指令μ〇ΡM并以与图1中的条目206所示相同的方式组合寄存器PRl和PR2的内容到PRl。然后,对于条目206,VALID2值被改变为“1”,P_IDX2值被改变为PR3,并且SIZE2被改变为16,使得RAX仍被映射到仅2个物理寄存器,PRl和PR3。[0043]总而言之,合并系统122产生合并指令以当指令尝试从映射到多个物理寄存器的架构寄存器读取时执行读合并,或者当指令尝试执行额外的部分写入时执行写合并到已经映射到最大数量的物理寄存器的架构寄存器。写合并用于防止映射超过同一架构寄存器及其部分的物理寄存器的最大数量,并且读合并用于将多个物理寄存器的内容合并到一个物理寄存器,以使随后的读取指令进行适当的操作。[0044]图4是根据本发明的一个实施例的图1的重命名表的至少一部分的图。其中仅包括每个架构寄存器的2个映射,并且其中与上述相同的方式将合并指令μορΜ在第二部分写指令之前插入以便以与图3中的条目206所示相同的方式将寄存器PRl和PR2的内容组合到PRl0[0045]图5是示出根据本发明的一个实施例实现的合并系统122的框图。指令转换器104向RAT106提供的原始指令OI被提供给合并检测器502和指令重排序模块508。在一个实施例中,指令转换器104每时钟周期一次提供至多达四个yops。合并检测器502分析与每个接收到的μ〇Ρ的源和目的地相对应的架构寄存器,并且确定是否有任何架构寄存器需要合并。在一个实施例中,每个yops可以具有至多达3个源和1个目的地,使得每个周期可以存在至多达16个合并,对于四个接收的yops中的每一个可以有4个合并。合并检测器502形成合并标识符MID,并提供MID到合并采取模块504和合并指令生成器506JID标识需要被合并的至多达4个接收的yops的每个架构寄存器。[0046]合并指令生成器506接收MID,读取重命名表116中的信息以标识需要合并的架构寄存器,并为每个要合并的架构寄存器生成相应的合并指令。如前所述,合并指令MRG标识映射到架构寄存器的对应物理寄存器,并将该信息合并到存储较大值的物理寄存器,例如,μορΜ将PRl和PR2合并到映射到架构寄存器EAX的PRl中。合并指令生成器506将一个或多个合并指令MI输出到指令重排序模块508。[0047]合并采取模块504接收MID并确定在从指令转换器104接收到的每个原始μορ之前应该插入的合并yops的数量。合并采取模块504然后根据多个采用规则之一分割原始yops并且向指令重排序模块508输出终止指示KI,以便在每个时钟周期中标识应从RAT106向RS108发布哪些原始指令。术语“终止”表示相对于当前时钟周期的终止,以标识被推入下一个时钟周期的下一个指令。在一个实施例中,RAT106—次向包括合并yops的RS108发布至多达4y〇ps。如本文进一步描述的,可以定义多个采用规则,以提供定时和性能之间的不同折衷。合并采取模块504可以在不同的采取规则之间切换以确保适当的定时和或实现一定程度的性能。[0048]指令重排序模块508与KI一起接收原始指令OI和合并指令MI,并提供确定每个时钟周期发布原始和合并y〇ps中的哪一个的发布指令控制。[0049]图6是示出根据本发明的另一实施例实现的合并系统122的框图。指令转换器104向RAT106提供的原始指令OI被提供给合并检测器502和指令重排序模块608,指令重排序模块608以与指令重排序模块508类似的方式操作。合并检测器502以基本上相同的方式将MID提供给合并采取模块504,其以类似的方式开发KI。然而,KI被提供给也接收原始指令OI的指令移位器610。指令移位器610根据KI移位原始yops,以确定每个时钟周期哪个μορ被移位到时隙0。合并指令生成器506通过接收MID并将合并指令MI提供给指令重排序模块608而以类似的方式操作。指令移位器610与合并指令生成器506和指令重排序模块608配合,以提供确定每个时钟周期发布原始和合并的yops中的哪一个的指令控制。[0050]图7是示出根据本发明的实施例的示例性采取规则的示意图。一组4μ〇ρ指令702,如11、12、3和14所示,按照程序顺序由指令转换器104提供给RAT106。合并系统122对指令11-14执行合并检查,并产生合并指令M2和M3。合并系统122将合并指令M2和M3插入到原始指令组702中以提供经修改的指令组706。在这种情况下,对应于12的M2被插入在12之前,对应于13的M3被插入到13之前,使得指令流被改变为1112、12、13、13和14。合并系统122进一步使用一个或多个采取规则中的一个选择的规则来确定为每个时钟周期发布哪个指令。采取规则不改变指令流706的顺序,而是确定在当前周期中发布哪些指令并将其推送到下一个周期。[0051]对于三种不同的采取规则中的每一个示出了四个连续的时钟周期T1、T2、T3和T4。第一行显示被称为“单独发布合并(ISSUEMERGEALONE”710的第一采取规则,第二行显示被称为“发布直到合并(ISSUEUNTILMERGE”712的第二采取规则,第三行示出被称为“发布直到第二合并(ISSUEUNTIL2ndMERGE”714的第三采取规则。如前所述,合并采取模块504基于由合并检测器502提供的MID施加合并取得规则中的活动的一个以提供用于标识在每个时钟周期中发布的指令的KI。不同的采取规则提供了时间和性能之间的折衷,并且可以基于操作参数进行切换。在每个时钟周期中,当然,指令转换器104可以继续提供至多4个附加指令未示出)。时序考虑了由合并检测器502执行的功能,以分析输入指令进而提供MID,以及考虑了由合并指令生成器506执行的功能,以生成要插入到指令流中的期望的合并指令。[0052]ISSUEMERGEALONE710确定需要合并的原始指令以及它们对应的合并指令将在每个周期中单独发布。指令Il不需要合并,并且首先分配给Tl周期。由于指令12需要合并,所以将其与合并指令M2—起被推到第二周期T2,从而在周期T2中单独发布指令M2和12。然后由于指令13需要合并,所以它与其合并指令M3—起被推到第三周期,所以在周期T3中单独发布指令M3和13。不需要合并的指令14在第四周期T4中发布。虽然未示出,但是根据是否需要合并,可以在周期T4中的指令14之后最多发布3个附加指令。在这种情况下,需要4个时钟周期来发布ISSUEMERGEAL0NE710的指令流706。[0053]ISSUEUNTILMERGE712发布至多每个周期中允许的总数如4的指令,并发布指令直到指令及其所有相应的合并指令已经在该周期中发布。在这种情况下,由于指令Il不需要合并,但是指令12仅仅只需要一个合并指令M2,所以在第一周期Tl中发布指令I1、M2和12。下一条指令13也需要合并,因此在下一个周期T2中发布指令M3和13。虽然未示出,但是如果13除了M3之外还有更多的合并指令,如果T2中发布的总数不超过最大数量如4,则它们也可以在T2内发布。这留下了在第三周期T3中发布的指令14。再次,根据是否需要合并并且如果可以满足时序,可以在周期T3中可以与指令14一起发布至多3个附加指令未示出)。在这种情况下,需要3个时钟周期来发布指令流706,其中ISSUEUNTILMERGE712以较少的时钟周期发布指令流706作为ISSUEMERGEALONE710,从而提高性能。[0054]ISSUEUNTIL2ndMERGE714发布每个周期中允许的至多总数如4的指令,并且发布指令,直到指令、其所有相应的合并指令和所有其他指令指令在对应于下一个指令的下一个合并指令之前已在周期中发布为止。然而,在第一周期Tl中,指令M3和13不能与M2和12—起发布,因为在所示配置中每个周期只允许最多4个指令。以这种方式,指令M3和13被推到下一个周期T2。由于指令14不需要合并,所以也可以包括在周期T2中。虽然未示出,但是如果附加指令不需要合并,并且如果定时允许,就如T2中发布的总数不超过最大数4,则在周期T2中可以发布一个附加指令。因此,ISSUEUNTIL2ndMERGE714通过仅在两个周期内发布指令流706而提供比其他采取规则更大的性能,但是可能提出额外的时序挑战。[0055]已经提出了前述描述,以使本领域普通技术人员能够在特定应用及其要求的背景下提供和使用本发明。虽然已经参考其某些优选的形式相当详细地描述了本发明,但是其他的形式和变化是可能的和预期的。对优选实施例的各种修改对于本领域技术人员将是显而易见的,并且本文定义的一般原理可以应用于其他实施例。例如,本文描述的方框可以以包括逻辑器件或电路等的任何合适的方式来实现。本领域技术人员应当理解,在不脱离本发明的精神和范围的情况下,它们可以容易地使用所公开的概念和具体实施例作为设计或修改用于实现本发明的相同目的的其他结构的基础。因此,本发明不旨在限于本文所示和所述的具体实施例,而是符合与本文公开的原理和新颖特征一致的最广范围。

权利要求: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所述的方法,其中所述映射包括将多个程序指令中特定的多个架构寄存器中的每一个映射到针对每个架构寄存器的最多两个物理寄存器。

百度查询: 上海兆芯集成电路有限公司 合并解决重命名尺寸问题的部分写入结果的系统和方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。