CN105242906B - 利用世代数的重命名的处理装置和方法 - Google Patents

利用世代数的重命名的处理装置和方法 Download PDF

Info

Publication number
CN105242906B
CN105242906B CN201510201428.7A CN201510201428A CN105242906B CN 105242906 B CN105242906 B CN 105242906B CN 201510201428 A CN201510201428 A CN 201510201428A CN 105242906 B CN105242906 B CN 105242906B
Authority
CN
China
Prior art keywords
register
generation
instruction
flight
renamer
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
Application number
CN201510201428.7A
Other languages
English (en)
Other versions
CN105242906A (zh
Inventor
索菲·威尔逊
约翰·雷德福
塔里克·库尔德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Avago Technologies International Sales Pte Ltd
Original Assignee
Avago Technologies Fiber IP Singapore Pte Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Avago Technologies Fiber IP Singapore Pte Ltd filed Critical Avago Technologies Fiber IP Singapore Pte Ltd
Publication of CN105242906A publication Critical patent/CN105242906A/zh
Application granted granted Critical
Publication of CN105242906B publication Critical patent/CN105242906B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

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

利用世代数的重命名的处理装置和方法
相关申请的交叉引用
本专利申请要求于2014年4月25日提交的美国临时专利申请号61/984,706以及2014年10月31日提交的美国专利申请号14/530,111的优先权。通过引用将其全部并入本文中。
技术领域
本公开内容总体涉及计算机处理器。
背景技术
半导体制造的发展使得在集成电路上上并入大量逻辑电路成为可能。进而,这导致数字系统架构的发展。数字系统架构中已从在单个集成电路上包括大量阵列的逻辑电路的能力受益良多的一个具体领域是处理器设计。
发明内容
根据本发明的一个方面,提供一种装置,包括:寄存器,通过寄存器地址寻址,被配置为存储一值;重命名器,被配置为接收所述寄存器地址以及所述寄存器是取出指令的目的地还是源的指示,并且生成与用于所述取出指令的所述寄存器相关联的飞行中(inflight,未提交状态)的世代数(generation number,世代号);以及保留队列,与所述寄存器和所述重命名器通信地耦接,被配置为同时存储所述寄存器地址和所述飞行中的世代数。
其中,所述保留队列进一步被配置为存储所述取出指令的指令操作码。
其中,所述寄存器和所述重命名器被配置为同时向所述保留队列提供数据。
其中,所述重命名器进一步被配置为存储指示当前所述寄存器的哪个世代正被使用的飞行中的数组。
其中,所述重命名器进一步被配置为维护指示所述寄存器的最新确认返回的世代的真值指针。
其中,所述重命名器进一步被配置为至少部分基于使用所述飞行中的数组和所述真值指针来生成指示与所述飞行中的世代数相关联的值是否有效的有效位。
其中,如果所述寄存器是用于所述取出指令的源寄存器,则所述保留队列进一步被配置为存储一值和所述有效位。
其中,如果推测地执行所述取出指令,所述重命名器进一步被配置为维护一指向所述飞行中的世代数的推测指数(SIN)指针。
其中,如果所述取出指令被推测地执行并且被确认,所述重命名器进一步被配置为更新真值指针至等于所述SIN指针并且清除所述SIN指针。
其中,如果所述取出指令被推测地执行并且被删除,所述重命名器进一步被配置为更新所述飞行中的数组并且清除所述SIN指针。
其中,通过所述重命名器生成飞行中的世代数进一步包括:如果在所述取出指令中设定标记位,选择下一个非飞行中的世代数。
其中,如果飞行中的所述寄存器没有另外的世代,则所述重命名器进一步被配置为从所述取出指令和目的地寄存器地址接收结果,更新飞行中的数组,并且使所述寄存器利用所述结果来更新。
其中,所述重命名器进一步被配置为更新飞行中的数组,并且如果没有用于所述寄存器的后来的飞行中的世代数,所述寄存器被配置为存储所述取出指令的结果。
进一步地,该装置包括寄存器写入控制逻辑,其中,所述重命名器进一步被配置为告知所述寄存器写入控制逻辑是否应当存储所述结果。
根据本发明的另一方面,提供一种方法,包括:通过寄存器重命名器接收由取出指令指定的寄存器地址;如果所述寄存器地址是源寄存器地址,通过所述寄存器重命名器生成飞行中的寄存器世代数,所述飞行中的寄存器世代数包括与所述寄存器地址相关联的最新飞行中的世代数;如果所述寄存器地址是目的地寄存器地址,通过所述寄存器重命名器生成飞行中的寄存器世代数,所述飞行中的寄存器世代数包括所述最新飞行中的世代数之后的与所述寄存器地址相关联的飞行中的世代数;以及提供所述飞行中的寄存器世代数至保留队列。
进一步地,该方法包括:与寄存器堆提供一值同时提供所述飞行中的寄存器世代数。
进一步地,该方法包括:维护指示当前所述寄存器的哪个世代正被使用的飞行中的数组。
进一步地,该方法包括:维护指示所述寄存器的最新确认返回的世代的真值指针。
进一步地,该方法包括:基于所述飞行中的数组和所述真值指针来生成指示寄存器堆中的值有效的有效位。
进一步地,该方法包括:如果推测地执行所述取出指令,维护一指向与所述取出指令相关联的所述飞行中的世代数的推测指数(SIN)指针。
进一步地,该方法包括:如果所述取出指令被推测地执行并且被确认,更新所述真值指针并且清除所述SIN指针。
进一步地,该方法包括:如果所述取出指令被推测地执行并且被取消,更新所述飞行中的数组并且清除所述SIN指针。
进一步地,该方法包括:如果在所述取出指令中设定标记位,接收所述标记位并且选择用于所述寄存器的下一个非飞行中的寄存器世代数。
附图说明
参考附图描述实施方式。在附图中,相同的附图标记表示相同的或功能相似的元件。此外,参考标号最左边的数字表示该参考标号首次出现的附图。
图1是示例性处理器的高层次的框图。
图2是实现寄存器重命名的示例性处理器的高层次的框图。
图3是示出根据示例性实施方式的寄存器重命名过程的流程图。
图1和图2示出各种组件、它们的布置及互联,但未按比例绘制。
具体实施方式
以下详细说明参考附图以示出示例性实施方式。在具体描述中,对“一个示例性实施方式”、“说明性实施方式”、“示例性实施方式”等的引用是指所描述的示例性实施方式可包括具体的特征、结构或特性,但每个示例性实施方式可能不一定包括具体的特征、结构或特性。而且,这些短语不一定指代相同的示例性实施方式。进一步,当结合示例性实施方式对一个具体的特征、结构或特性进行说明时,无论是否明确指出,本领域的技术人员在其知识范围内可结合其他示例性实施方式影响该特征,结构或特性。
提供本文所述的示例性实施方式是用于说明的目的而不非限制。其他示例性实施方式也是可行的,以及在本发明的精神和范围内可以对示例性实施方式做出修改。
应当理解,本文中的措辞或术语是为了描述而非限制,使得本说明书的术语或措辞应由本领域的技术人员根据本文中的教导进行解释。
术语
在电子设备领域,术语芯片、裸片、集成电路、半导体设备、及微电子设备常常可互换地使用。
如在此所使用的FET是指金属氧化物半导体场效应晶体管(MOSFET)。n-沟道FET在本文中称为NFET。p-沟道FET在本文中称为PFET。
CMOS是指其中NFET和PFET形成在集成电路中的半导体制造工艺。
CMOS电路是指其中一起使用NFET和PFET两者的电路。
VLIW是超长指令字的缩写。
如在本文的示例性实施方式的描述中使用的,VLIW指令是指组合在一起用于提供至指令解码器的指令集。指令集中的各指令被分配到多个执行管道之一用于执行。
IC0是指在指令缓存的输入上的伪阶段(pseudo-stage)。
IC1是指指令缓存阶段。在该周期与确定下一次取出哪个PC的计算一起做出对指令缓存的取出请求。在该阶段提供先前请求的VLIW指令。
DE1是指指令解码器的第一阶段。
DE1_operation是指通过指令解码器的第一阶段执行的逻辑操作。
DE1_time是指其中出现DE_1operation的周期。
DE2是指指令解码器的第二阶段。
DE2_operation是指通过指令解码器的第二阶段执行的逻辑操作。
DE2_time是指其中出现通用寄存器堆(GRF)和谓词寄存器堆(PREG)的读取和重命名的周期。
RS是指保留站。存在几个不同的可以排队的保留站。在最好的情况下,这是单个周期阶段,然而操作可以在这里以多个周期结束排队。
EXn是指执行管道的第n个阶段。执行管道的示例包括ALU短管道和长管道,BRANCH(分支)和加载存储单元。
SHP是指短执行管道。短执行管道被用于执行单循环操作。
LOP是指长执行管道。长执行管道被用于执行需要2至8个周期完成的指令。
LSU是指加载存储单元。
DTCM是指数据紧耦合存储器。
PBUS是指连接至外围存储器的总线。
DCACHE是指用于缓存对外围存储器的访问的数据缓存。
排队(enqueue,入队)是指其中DE2中的VLIW指令分成其组件操作,然后向前下方移动管道至保留站中的动作。
发射(issue)是指将操作从保留站移动至执行单元。当操作从保留站移动至执行单元时,将操作称为被发射。操作是VLIW指令的组件部分。
当前PC是指当前在给定阶段中的指令的程序计数器(PC)的值。管道的每个阶段将具有其自身的当前PC版本。
下一个PC是指从Icache取出的下一个PC。对于直线式代码,这将是当前PC+当前指令宽度,对于改方向代码,其将是新的目标PC。
循环开始地址是指循环体中的第一指令的地址,即,分支的用于开始新的循环迭代的地址。
循环结束地址是指循环体之后的第一指令的地址,即,分支的用于自然退出循环的地址。
循环体是指开始于循环开始地址并且结束于循环匹配地址的指令。
循环匹配地址是指循环体中的最后指令的地址。
循环计数是指应当执行的循环的迭代数目。这来自用于LOOP(循环)操作的真值字段,或者来自用于ZLOOP和ZLOOPS操作的通用寄存器。
SIN是指推测指数(Speculation Index Number),该推测指数被用于识别在分支附近推测地排队的指令。
SIN解析是指确定分支是否正确推测与否。SIN解析在EX1中执行。
SIN验证是指EX1中正确推测的分支,该分支反过来将验证与操作相关联的SIN在正确推测的分支附近。验证的操作是将要更新架构状态的操作。
SIN取消是指EX1中未正确推测的分支,该分支将反过来取消所有的突出的SIN,并且使EX1改方向,有效地从执行管道去除在分支附近的所有的操作。在一个实施方式中,去除在未正确推测的分支附近的操作包括改变与执行管道中的这些指令的每一个相关联的状态。
状态一致执行(SCE)是指内部机制执行的防止未来操作出现不连贯的机器状态的动作。
陷阱事件是指一组同步、异步及故障事件。
同步陷阱事件是指具体的指令并及时检测以防止引起事件的指令排队。访管(SVC)指令符合该种类。当它们出现在指令流中的在架构上定义的地点时,这些是精确的。
异步陷阱事件(中断)独立于当前指令序列发生。异步异常符合于此。
故障陷阱事件防止程序流程恢复。故障陷阱事件的实例是未对准的PC和数据中止。具有寄存器目的地的故障操作必须完成寄存器值。
公开的处理器架构包括具有多个寄存器的寄存器堆,并且被配置为乱序指令执行,进一步包括产生世代数的重命名器单元,世代数与寄存器堆地址相关联,以提供与寄存器的现有版本暂时偏移的寄存器的重命名的版本,而不是分配非程序员可见物理寄存器作为重命名的寄存器。处理器架构包括耦接至指令缓存并且被配置为提供推测地址至指令缓存的小的重置DHL Gshare分支预测单元。处理器架构适于在集成电路中实现。这种集成电路通常利用CMOS电路实现。
在典型的实施方式中,根据本公开内容的处理器在集成电路中实现为嵌入式处理器。
图1是示出根据本公开内容的示例性处理器的主要模块的高层次方框图。示例性处理器包括指令缓存102,耦接分支预测单元104以接收来自分支预测单元104的VLIW指令地址,并且进一步耦接分支预测单元104、指令解码器106、寄存器堆108、及世代重命名器110以向它们提供输出。世代重命名器(Generation renamer)110耦接至分支单元118以接收SIN控制信号,耦接至SIN分配器(allocator)107以接收SIN号,耦接至制止盒(stuntbox)124以接收来自操作数复制网络的输出,以及耦接至分支队列112、执行管道保留队列114A、114B、114C、114D、及加载/存储(L/S)保留队列116。寄存器堆108耦接至制止盒124以接收来自操作数复制网络的输出,并且进一步耦接至分支队列112、执行管道保留队列114A、114B、114C、114D、及加载/存储保留队列116。分支队列112耦接至分支单元118。执行管道保留队列114A、114B、114C、114D各自分别耦接至对应的执行单元120A、120B、120C及120D。执行单元120A、120B、120C、及120D各自耦接制止盒124以提供输出到制止盒124。每个执行单元120A、120B、120C、及120D分别耦接它们的输入端,以将它们的输出提供回至它们的输入端,并且每个进一步耦接至分支单元118的输出端以接收SIN控制信号。存储器122耦接至加载/存储保留队列116。并且加载/存储保留队列116进一步耦接至系统总线126。
指令缓存102保存先前通过取指令单元(未示出)取出的VLIW指令。通常从设置在处理器本身以外的存储器取出VLIW指令。分支预测单元104被示出耦接至指令缓存102。分支预测单元104提供VLIW指令的地址以便取出。如果请求的VLIW指令存在于指令缓存102中,则将其提供至指令解码器106。如果请求的VLIW指令未存在于指令缓存102中,则出现缓存未命中,那么从设置在处理器以外的存储器取出请求的指令。
分支预测单元104具有几个功能,包括提供指令缓存102需要的程序计数器值,和整个处理器的不同的阶段(stage,级)与逻辑模块需要的程序计数器值。对于连续执行的程序代码,程序计数器值仅改变刚才取出的指令的长度。但是当检测到分支指令,则分支预测单元104确定应当从什么地址取出下一个指令。在该示例性处理器中,分支预测单元104使用小的重置DHL Gshare分支预测机制来确定下一个指令地址。
指令解码器106解码VLIW指令的内容并且将控制信息提供至处理器的各个其他模块。
寄存器堆108包含预定数量的程序员可见寄存器。这些寄存器保存在程序的执行过程中使用的值。
从VLIW指令获得的各个指令被排队到选择的保留队列中。当所排队指令的执行需要的操作数变成可利用时,将该指令发射至与所选择的保留队列相关联的执行管道。
通常,当寄存器实例被再分配至不同的非程序员可见物理寄存器时,世代重命名器110被用于在指令中向这些寄存器实例分配世代数。
保留队列保存等待被发射的指令。
制止盒124提供用于接收并且分配执行管道的输出的机制。制止盒124提供数据至操作数复制网络。操作数复制网络允许执行管道的所有结果对处理器内的其他模块可用。以这种方法,等待从执行另一个指令产生的操作数的指令不需要等待该操作数写回至寄存器堆,然后从寄存器堆读出。更确切地,经由操作数复制网络,所需要的操作数对整个处理器的等待具体结果的所有的位置可用。
系统总线126为嵌入式处理器提供机制来与集成电路上的处理器本身以外的其他逻辑模块通信。
世代重命名概述
处理器包括许多不同的物理资源,例如寄存器、执行单元、运算单元、存储器、控制逻辑等。处理器中包括的物理资源之一是对程序员在创建软件时可利用的寄存器的架构可见集。这些寄存器物理存储将由处理器使用的信息,如通过软件指引的信息。基于处理器的设计和实现的指令集来确定寄存器组内的可利用的寄存器的数目。因为存在固定数量的寄存器,所以常常要求程序员在创建他们的软件时重新使用寄存器。
因为寄存器被重新使用,所以当处理器执行软件时需要确保保持每个寄存器的正确值用于正在执行或被调度来执行的每个指令,以保证正确地执行程序。这对可以根据可利用的资源以不同的顺序执行指令的乱序机器来说是确实存在的问题,并且甚至对于可以取出、解码、并且并行执行多指令的非常大的指令字(VLIW)处理器来说,更是这样。
为了解决这些问题,来发了世代重命名。世代重命名允许处理器保持用于寄存器堆中的每个架构寄存器的值。另外,处理器保持每个寄存器的多个版本、命名的世代。每个世代表示将或者可以存储在寄存器中的新值。不同的寄存器可以同时使用不同的世代。例如,机器可以在使用R1的世代5和世代7的同时使用R0的世代2、世代3、及世代4。在架构上,每个寄存器具有与其相关联的值,维持当前正使用的世代的方式,以及用于识别最后已知的正确使用的世代和任何推测的使用的世代的指针集。以下将更详细地描述这些组成。
因为个别指令处于飞行中的,例如等待执行、正在执行、或者等待引退,与个别指令相关联的寄存器保持表示每个寄存器的哪个世代正在被该指令使用的描述符。因此,使用相同寄存器的多个指令可同时处于飞行中的,而允许程序按预期执行。指令可以被保持直到它们的每个源寄存器的正确世代可利用。即使指令使用相同的目标寄存器,它们也可以执行。并且指令可以引退,即使这将修改同一寄存器,也没有引起程序执行中的错误。利用与将正确值转发至正确指令最相关的最小的另外的逻辑,处理器可以在维持与架构上可见寄存器相关联的寄存器堆的同时执行。例如,当指令引退时,目标寄存器的值可被转发至要求具有该世代的寄存器的飞行中的指令。在示例中,如果这还是飞行中的寄存器的最后的世代,那么值也可被写入寄存器堆。
世代允许处理器在使用相同的体系架构寄存器的同时取出、排队、并且执行多个指令。这减小或者消除停止执行管线以等待先前指令的结果的需要。例如,程序员可能希望仅使用5个寄存器执行以下代码:
Inst0:Add R0,R1,R2
Inst1:Mul R1,R0,R0
Inst2:Add R0,R4,R5
Inst3:Mul R4,R0,R0.
在该代码中,程序员将R1和R2中的值相加并存储结果在R0。(在R0中存储的)该结果然后被平方并存储在R1中。随后,将R4和R5中的值相加并将结果再次存储在R0中。类似地,该结果被平方并存储在R4中。
通常,处理器要么必须停止Inst2直到Inst1完成(要么在Inst1执行时冒R0包含错误值的风险),或者使用程序员看不见的寄存器以扩大可利用寄存器的集合并且去除由再使用寄存器R0所引起的先读后写(WAR)故障。如果这未完成,R0中的值可能不正确,因此将不期望的值存储在R1中。每次遇到故障时停止机器可能大大地降低处理器的性能。增加存储架构寄存器和非程序员可见寄存器两者的寄存器堆的尺寸可以减轻这个问题。但是这需要增加结果直通逻辑(the forwarding logic)和重命名逻辑以跟踪哪个寄存器来存储一值,用于哪个指令正在使用哪个架构寄存器。并且物理寄存器的数目的增加也增加功率损耗和芯片面积。
世代重命名允许处理器保持(maintain)寄存器堆与体系架构寄存器,同时甚至当指令指定使用相同的寄存器时允许处理器排队并并行执行这些指令。具体地,这允许改变相同寄存器的值的两个指令都排队、发射、并且执行,而不影响取决于任一指令的其余软件的执行。每一次寄存器用作目的地时,该寄存器被标记有新的世代数。在那之后使用寄存器的每个指令将使用新的世代直到世代数再次增加。一旦初始指令执行并且确定了寄存器的值,可以更新使用该寄存器和该世代数的所有未决的指令,以表示它们具有用于该寄存器的有效值。
返回至以上实例,我们将使用约定来表示Rn世代m。对于以上代码段,我们将假定在执行之前寄存器的世代信息是 在该示例性实施方式中,当指令排队时,世代数分配如下:
Inst0:Add(R0的世代增加,R1和R2保持相同)
Inst1:Mul(R1的世代增加,R0保持相同)
Inst2:Add(R0的世代增加,R4和R5保持相同)
Inst3:Mul(R4的世代增加,R0保持相同)。
因此世代重命名允许发射并执行Inst 2,而不会影响Inst 1的结果。在以上实例中,如果Inst 2在Inst 1之前执行,那么Inst 2的结果将直通(forward,转发)至使用的所有的其他指令,不会影响使用R0的其他世代的指令。例如,一旦执行,可以通过等待这些结果的任何飞行中的指令复制指令的结果。例如,如果我们具有两个执行单元,那么我们的每个指令可以排队至不同的执行单元。如果Add指令比Mul指令执行的快,那么我们可以具有类似下列的序列:
时间1:将Inst 0放置在队列0中;将Inst 1放置在队列0中;将Inst 2放置在队列1中;将Inst 3放置在队列1中
时间2:执行Inst 0和Inst 2(不取决于任何先前的指令的结果)
时间3:引退适当地更新Inst 1和Inst 3;使用来自Inst 0和Inst 2的结果执行Inst 1和Inst 3(这假定对于该处理器,来自Inst 2的结果可以直通回至Inst 3)。
替代地:
时间1:将Inst 0放置在队列0中;将Inst 1放置在队列0中;将Inst 2放置在队列1中;将Inst 3放置在队列1中
时间2:执行Inst 0和Inst 2(不取决于任何先前的指令的结果)
时间3:引退适当地更新Inst 1;使用来自Inst 0的结果开始执行Inst 1
时间4:引退适当地更新Inst 3;使用来自Inst 2的结果开始执行Inst 3
因此世代重命名允许多个指令同时存在于处理器中。虽然这些指令看起来有序执行,但是可以乱序执行(即,乱序执行的结果与有序执行相同)。世代重命名通过允许每个寄存器的多个版本存在于处理器中来允许这发生,使得指令可以更新并使用相同的寄存器,而不干扰彼此的执行。
世代重命名结构
参考图2,处理器的示例性实施方式包括寄存器堆202、重命名器204、保留队列208、执行单元210、及制止盒212。
寄存器堆202被配置为存储每个架构寄存器的值。例如,寄存器堆202可以存储用于通用寄存器R0至R31、谓词寄存器P0至P7、及乘与累加(MAC)寄存器M0至M7的值。在实施方式中,寄存器堆202包括写控制电路,该写控制电路当来自执行管道的结果将要写入到寄存器堆的架构寄存器时进行控制。
在实施方式中,处理器包括用于一个或多个架构寄存器的重命名器204。重命名204可以包括飞行中的数组216、真值指针(ture pointer)218、一个或多个推测指令数(SIN)指针220、使能电路222、及验证电路224。每个飞行中的数组216表示其对应的寄存器的那些世代当前正在被处理器使用。例如,飞行中的数组216可表示用于R0的世代2、世代4、及世代5当前正在被处理器使用。
因此,每个飞行中的数组216保持每个寄存器的当前正在被处理器中的指令使用的所有世代的列表。飞行中的数组216可以是循环数组。因此,在分配数组中的最后世代(例如世代7)之后,分配的下一个世代将是世代0。这些世代可以在保留队列、加载/存储(L/S)队列、执行单元、制止盒等中使用。
为了确定哪个世代是使用中的最新的世代,真值指针218用于每个架构寄存器。每个真值指针218指向相关联的飞行中的数组216中的表示该寄存器的用作指令的目的地的最后世代的位置。例如,在以上代码段中,取出并重命名Inst 3之后,用于R0的真值指针218将指向用于R1的真值指针218将指向并且用于R4的真值指针218将指向真值指针218可以以几个方式来使用。例如,当指令被解码时,真值指针218指向正在用于指令的源的寄存器的世代。对于目的地,可以将世代设置为真值指针之后的下一个世代。
在实施方式中,当结果引退时,可能发生几个不同的情况。用于寄存器的该世代的值可以直通至使用当前在保留队列中的该寄存器的该世代的所有的指令并且可以设置这些寄存器的有效位。有效位允许处理器确定准备发射哪个指令用于执行。在实施方式中,如果值是不能推测的,例如,值不是在结果被猜测的条件转移指令之后生成的,那么用于相关联的飞行中的数组216中的该世代的飞行中的位被清除。
使能电路222还使用引退的结果值、引退的结果世代数、及真值指针218来确定该结果是否应当写入寄存器堆202。真值指针218指向非推测执行的寄存器的最后世代。即,真值指针218指向在处理器推测预测的任何条件分支之前分配的寄存器的最后世代。如果引退的结果世代数与真值指针218匹配,那么不存在写入该寄存器的飞行中的非推测的指令。在该点,值可以写入寄存器堆202。因此,使能电路222可以为该寄存器设置写入使能并且使引退的结果值写入寄存器堆202。这可以限制对寄存器堆202进行的不必要的写入的数目。
除了真值指针218,还向每个寄存器分配一个或多个SIN指针220。SIN指针220用于跟踪寄存器的已经分配至推测地取出、排队、或者执行的指令的世代。例如,以下代码段从Inst 0中的存储器检索一值并且执行Inst 1至Inst 6等于检索的值的次数。Inst 1至Inst6采用在存储器位置0x00200020开始的数组并且使每个元素加倍:
Inst0:Ld R0,[0x10]
Inst1:Add R1,0x00200020
Inst2:LD R2,[R1]
Inst3:Mul R2,R2,0x2
Inst4:ST R2,[R1]
Inst5:Sub R0,R0,0x01
Inst6:Bnz Inst 1.
当处理器达到Inst 6时,处理器必须确定要么返回至Inst 1,要么继续执行。该确定基于尝试以位于存储位置0x10的值加载R0的R0.Inst 0中的值。从存储器检索可能需要一段时间,尤其如果值位于主存储器中而不是缓存中。当从存储器检索到该值时,处理器可以决定推测地执行另外的指令。处理器可以基于过去历史确定为例如,分支回到Inst 1。
由于从主存储器检索信息需要时间,所以该循环可以推测地执行多次。虽然处理器知道来自第一执行的结果是正确的,但是将推测每个另外的迭代,直到我们从存储器接收到Inst 0请求的值。
因此,对于Inst 6的每个推测执行,分配新的SIN指针220。对于每个SIN指针220,分配R1和R0的新版本(参见Inst 1和Inst 5),并且分配R2的两个新版本(参见Inst 2和Inst 3)(存储指令–Inst 4–不具有寄存器目的地)。在循环的4次运行之后,R1和R2可以看起来像这样:
R1.Inflight Array(飞行中的数组)=011111000…0
R2.Inflight Array(飞行中的数组)=1111111110…0
如果在此时,至R0的加载完成并且其具有大于4的值,那么确认了每一个推测执行的指令,用于这些寄存器的每个的SIN3指针被复制到真值指针里,并且执行继续而无需推测。但是如果值小于4,例如2,那么一个或多个执行必须是松散的。正确指针,例如SIN1指针,被复制到真值指针里,新的真值指针与最近分配的SIN指针之间的,例如SIN3指针的飞行中的位被清除,例如R1.飞行中的数组位4-5和R2.飞行中的数组位5-8。
因为来自推测执行的指令的结果未加载到寄存器堆202里,所以无需对寄存器堆202做出改变。
在实施方式中,重命名器204也可以确定寄存器堆中的值是否是有效的。当指令被解码并被排队至保留队列时,存储在寄存器堆202中的该寄存器的值也被复制到保留队列里。另外,设置表示该源寄存器值是否是有效的有效位。验证电路224负责设置该位。如果由真值指针指向的寄存器的世代(或者最近分配的SIN指针,如果我们推测执行该指令)是1,那么有效位被清除,并且如果是0,那么有效位被设置。这意味着如果寄存器的该世代的值仍然被核算(即,仍然处于飞行中),那么寄存器堆202中的值是无效的,但是如果该值已经引退,那么寄存器堆202中的值是有效的。一旦设置所有的源寄存器有效位,指令被准备发射用于执行。
世代重命名过程
在示例性实施方式中,处理器可以被配置为在VLIW指令被解码的同时执行世代重命名。在另一个实施方式中,可以在解码VLIW指令之后执行世代重命名。
在步骤302,处理器取出VLIW指令。例如,处理器取出通过程序计数器(PC)指向的下一个缓存线。该缓存线可以包括可以由多个单独指令构成的VLIW指令。例如,根据实现细节,VLIW指令可以由2个、4个或者8个单独的指令构成。在其他实施方式中,如本领域的技术人员所理解的,VLIW指令可以根据实现细节由其他数量的单独指令构成,例如3。
在步骤304,可以识别用作VLIW指令内的源和目的地的寄存器。该信息可以提供至如以下更详细描述的其余的指令解码单元、寄存器堆、及重命名器。作为指令解码的部分,可以识别与每个指令相关联的寄存器(即,源寄存器和目的地寄存器)。在另一个实施方式中,寄存器可以被识别作为分离单元的一部分并传递至指令解码单元、寄存器堆、及重命名器。
在步骤306,可以解码VLIW指令内的一个或多个指令。在一个实施方式中,这是指令解码单元的第二阶段的一部分,第一阶段包括识别寄存器。进行两步骤解码的一个优势是可以简单并快速的在周期的早期发生寄存器识别,允许其他元件处理依赖正在识别的寄存器的指令。
在步骤308,可以访问寄存器堆,例如寄存器堆202,并且可以识别在VLIW指令中使用的任何源寄存器的世代的值。此时,识别写入寄存器堆的源寄存器的最后世代。该值可能是有效的或者可能是无效的。因此,推测该值与VLIW指令相关联。如以下将解决,将设置有效位来表示该值是否是用于该VLIW指令的源寄存器需要的世代的正确值。
在步骤310,世代数与在步骤304中识别的寄存器号相关联。需要表示哪个值与寄存器号相关联的该世代数用于完成指令。例如,如果VLIW指令其使用寄存器R0作为源寄存器,那么当前在处理器中使用的R0的最新的世代可以与VLIW指令相关联。这可能是R0的当前处于飞行中的世代并且在将来的某一天变得可利用。或者这可能是R0的早先计算的并且可以使用的世代。在另一个实例中,如果VLIW指令表示寄存器号是目的地寄存器,那么R0的下一个可利用的非飞行中的世代与该VLIW指令相关联。例如,如果世代3至世代6当前处于飞行中,R0世代7将与VLIW指令相关联。
在实施方式中,指针,诸如以上论述的真值指针或者SIN指针,可以识别当前处于飞行中的寄存器的最新的世代。例如,如果指令是当前未推测取出的(即,所有先前的分支指令已经解决),真值指针可以用于识别寄存器的最新有效的世代。如果指令是推测取出的,那么SIN指针可以用于识别寄存器的最新有效的世代。
在实施方式中,源寄存器可以被加标记以表示它们使用通过该VLIW指令产生的值。例如,第一单独指令可能增加通过第二单独指令检索的值,其中第一单独指令和第二单独指令包含在相同的VLIW指令内。在该实施方式中,识别用于第一单独指令的源寄存器可以包括:VLIW指令内的表示使用来自VLIW指令内的另一个单独指令的结果的标记。如果这样加标记,而不是与可用于寄存器的最后飞行中的世代相关联,用于第一单独指令的源寄存器将与下一个可利用的非飞行中的世代相关联。这将是与第二单独指令的目的地相同的世代,从而表示第二单独指令的结果在可利用时可以直通至第一单独指令。
在步骤312,对于识别作为用于VLIW指令的源寄存器的所识别的寄存器,确定从寄存器堆检索的值是否有效。例如,可以检查用于寄存器号的飞行中的数组。如果至使用的最后世代的指针表示该世代当前不处于飞行中并且使用的最后世代与用于VLIW指令的源寄存器的世代匹配,那么可以设置有效位。从寄存器堆检索的值是用于正在使用的源寄存器的世代的正确版本。在实施方式中,如果不存在使用的SIN指针(即,没有推测执行的指令)并且真值指针指向识别的寄存器,将仅设置有效位。
在步骤314,单独指令被增加到保留队列。这包括增加将要执行的指令的操作码、源寄存器号和目的地寄存器号,相关联的世代数、用于源寄存器的值、及源有效位也增加到保留队列。
结论
应当理解,详细说明部分而不是本公开内容的摘要部分旨在用于解释权利要求。本公开内容的摘要可阐述一个或多个而不是所有的示例性实施方式,并且因此并不旨在以任何方式限制所附权利要求的范围。
对相关领域的技术人员显而易见的是,在不偏离本公开内容的精神和范围的情况下,在形式和细节上可以进行各种改变。因此,本公开内容不应由任何上述示例性实施方式来限定,而是应仅根据所附权利要求及其等同物来定义。

Claims (10)

1.一种处理装置,包括:
寄存器,其由寄存器地址寻址,经配置以存储值;
重命名器,其经配置以接收所述寄存器地址以及所述寄存器是取出指令的目的地还是源的指示,并且生成与用于所述取出指令的所述寄存器相关联的飞行中的世代数;以及
保留队列,其与所述寄存器和所述重命名器通信耦接,经配置以同时存储所述寄存器地址和所述飞行中的世代数,
其中,如果推测地执行所述取出指令,所述重命名器进一步经配置以维护指向所述飞行中的世代数的推测指数SIN指针。
2.根据权利要求1所述的处理装置,其中,所述保留队列进一步被配置为存储所述取出指令的指令操作码。
3.根据权利要求1所述的处理装置,其中,所述寄存器和所述重命名器被配置为同时向所述保留队列提供数据。
4.根据权利要求1所述的处理装置,其中,所述重命名器进一步被配置为存储指示当前所述寄存器的哪个世代正被使用的飞行中的数组。
5.根据权利要求4所述的处理装置,其中,所述重命名器进一步被配置为维护指示所述寄存器的最新确认返回的世代的真值指针。
6.根据权利要求5所述的处理装置,其中,所述重命名器进一步被配置为至少部分基于使用所述飞行中的数组和所述真值指针来生成指示与所述飞行中的世代数相关联的值是否有效的有效位。
7.根据权利要求1所述的处理装置,其中,通过所述重命名器生成飞行中的世代数进一步包括:如果在所述取出指令中设定标记位,则选择下一个非飞行中的世代数。
8.根据权利要求1所述的处理装置,其中,如果不存在飞行中的所述寄存器的另外的世代,则所述重命名器进一步被配置为从所述取出指令和目的地寄存器地址接收结果,更新飞行中的数组,并且使所述寄存器利用所述结果来更新。
9.根据权利要求1所述的处理装置,其中,所述重命名器进一步被配置为更新飞行中的数组,并且如果没有用于所述寄存器的后来的飞行中的世代数,所述寄存器被配置为存储所述取出指令的结果。
10.一种处理方法,包括:
通过寄存器重命名器接收由取出指令指定的寄存器地址;
如果所述寄存器地址是源寄存器地址,通过所述寄存器重命名器生成飞行中的寄存器世代数,所述飞行中的寄存器世代数包括与所述寄存器地址相关联的最新飞行中的世代数;
如果所述寄存器地址是目的地寄存器地址,通过所述寄存器重命名器生成飞行中的寄存器世代数,所述飞行中的寄存器世代数包括所述最新飞行中的世代数之后的与所述寄存器地址相关联的飞行中的世代数;
提供所述飞行中的寄存器世代数至保留队列;以及
如果推测地执行所述取出指令,则维护指向与所述取出指令相关联的所述飞行中的世代数的推测指数SIN指针。
CN201510201428.7A 2014-04-25 2015-04-24 利用世代数的重命名的处理装置和方法 Active CN105242906B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201461984706P 2014-04-25 2014-04-25
US61/984,706 2014-04-25
US14/530,111 US9841974B2 (en) 2014-04-25 2014-10-31 Renaming with generation numbers
US14/530,111 2014-10-31

Publications (2)

Publication Number Publication Date
CN105242906A CN105242906A (zh) 2016-01-13
CN105242906B true CN105242906B (zh) 2018-05-04

Family

ID=53039212

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510201428.7A Active CN105242906B (zh) 2014-04-25 2015-04-24 利用世代数的重命名的处理装置和方法

Country Status (4)

Country Link
US (1) US9841974B2 (zh)
EP (1) EP2937775A1 (zh)
CN (1) CN105242906B (zh)
HK (1) HK1215886A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9841974B2 (en) * 2014-04-25 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Renaming with generation numbers
US11561792B2 (en) * 2015-06-08 2023-01-24 Qualcomm Incorporated System, apparatus, and method for a transient load instruction within a VLIW operation
CN114341805A (zh) * 2019-07-03 2022-04-12 华夏芯(北京)通用处理器技术有限公司 纯函数语言神经网络加速器系统及结构
US11119772B2 (en) 2019-12-06 2021-09-14 International Business Machines Corporation Check pointing of accumulator register results in a microprocessor

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5996063A (en) * 1997-03-03 1999-11-30 International Business Machines Corporation Management of both renamed and architected registers in a superscalar computer system
CN1308274A (zh) * 2000-02-08 2001-08-15 斯罗扬有限公司 在处理器中传送指令结果及处理器的编译方法
US6370637B1 (en) * 1999-08-05 2002-04-09 Advanced Micro Devices, Inc. Optimized allocation of multi-pipeline executable and specific pipeline executable instructions to execution pipelines based on criteria
CN1348132A (zh) * 2000-09-28 2002-05-08 株式会社东芝 更名装置及处理器
US7069411B1 (en) * 2003-08-04 2006-06-27 Advanced Micro Devices, Inc. Mapper circuit with backup capability
CN101046740A (zh) * 2006-03-28 2007-10-03 国际商业机器公司 用于按需临时寄存器重命名的方法和系统
US7721070B2 (en) * 1991-07-08 2010-05-18 Le Trong Nguyen High-performance, superscalar-based computer system with out-of-order instruction execution

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0863460B1 (en) * 1997-03-03 2005-08-24 International Business Machines Corporation Management of renamed registers in a superscalar computer system
US7043626B1 (en) * 2003-10-01 2006-05-09 Advanced Micro Devices, Inc. Retaining flag value associated with dead result data in freed rename physical register with an indicator to select set-aside register instead for renaming
US7529913B2 (en) * 2003-12-23 2009-05-05 Intel Corporation Late allocation of registers
KR100628573B1 (ko) * 2004-09-08 2006-09-26 삼성전자주식회사 조건부실행명령어의 비순차적 수행이 가능한 하드웨어장치 및 그 수행방법
WO2013101128A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Using a single table to store speculative results and architectural results
US9841974B2 (en) * 2014-04-25 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Renaming with generation numbers

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7721070B2 (en) * 1991-07-08 2010-05-18 Le Trong Nguyen High-performance, superscalar-based computer system with out-of-order instruction execution
US5996063A (en) * 1997-03-03 1999-11-30 International Business Machines Corporation Management of both renamed and architected registers in a superscalar computer system
US6370637B1 (en) * 1999-08-05 2002-04-09 Advanced Micro Devices, Inc. Optimized allocation of multi-pipeline executable and specific pipeline executable instructions to execution pipelines based on criteria
CN1308274A (zh) * 2000-02-08 2001-08-15 斯罗扬有限公司 在处理器中传送指令结果及处理器的编译方法
CN1348132A (zh) * 2000-09-28 2002-05-08 株式会社东芝 更名装置及处理器
US7069411B1 (en) * 2003-08-04 2006-06-27 Advanced Micro Devices, Inc. Mapper circuit with backup capability
CN101046740A (zh) * 2006-03-28 2007-10-03 国际商业机器公司 用于按需临时寄存器重命名的方法和系统

Also Published As

Publication number Publication date
US9841974B2 (en) 2017-12-12
HK1215886A1 (zh) 2016-09-23
CN105242906A (zh) 2016-01-13
EP2937775A1 (en) 2015-10-28
US20150309796A1 (en) 2015-10-29

Similar Documents

Publication Publication Date Title
US11275590B2 (en) Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory
CN1294484C (zh) 利用重新调度的重放队列中断处理器中的重放依赖关系循环
CN108196884B (zh) 利用生成重命名的计算机信息处理器
US8032734B2 (en) Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor
CN105005463B (zh) 具有世代重命名的计算机处理器
US7647475B2 (en) System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue
RU2628156C2 (ru) Системы и способы отслеживания флага в операциях устранения перемещения
US11204770B2 (en) Microprocessor having self-resetting register scoreboard
CN105242906B (zh) 利用世代数的重命名的处理装置和方法
US20140281432A1 (en) Systems and Methods for Move Elimination with Bypass Multiple Instantiation Table
US20050188185A1 (en) Method and apparatus for predicate implementation using selective conversion to micro-operations
US9904554B2 (en) Checkpoints for a simultaneous multithreading processor
US10719355B2 (en) Criticality based port scheduling
US20150309795A1 (en) Zero overhead loop
EP4034994B1 (en) Retire queue compression
US9727340B2 (en) Hybrid tag scheduler to broadcast scheduler entry tags for picked instructions
US20100306513A1 (en) Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline
US10713049B2 (en) Stunt box to broadcast and store results until retirement for an out-of-order processor
CN117667200A (zh) 一种risc-v矩阵运算指令的依赖检测方法和装置
US10241788B2 (en) Method and system for determining instruction conflict states for issuance of memory instructions in a VLIW processor
US20080282050A1 (en) Methods and arrangements for controlling memory operations
US11314505B2 (en) Arithmetic processing device
US20240362026A1 (en) Dependency tracking and chaining for vector instructions
US6490653B1 (en) Method and system for optimally issuing dependent instructions based on speculative L2 cache hit in a data processing system

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1215886

Country of ref document: HK

TA01 Transfer of patent application right

Effective date of registration: 20170315

Address after: Singapore Singapore

Applicant after: Avago Technologies Fiber IP Singapore Pte. Ltd.

Address before: American California

Applicant before: Zyray Wireless Inc.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20181022

Address after: Singapore Singapore

Patentee after: Annwa high tech Limited by Share Ltd

Address before: Singapore Singapore

Patentee before: Avago Technologies Fiber IP Singapore Pte. Ltd.

TR01 Transfer of patent right
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1215886

Country of ref document: HK