CN114356420A - 指令流水线的处理方法及装置、电子装置及存储介质 - Google Patents
指令流水线的处理方法及装置、电子装置及存储介质 Download PDFInfo
- Publication number
- CN114356420A CN114356420A CN202111624988.5A CN202111624988A CN114356420A CN 114356420 A CN114356420 A CN 114356420A CN 202111624988 A CN202111624988 A CN 202111624988A CN 114356420 A CN114356420 A CN 114356420A
- Authority
- CN
- China
- Prior art keywords
- instruction
- register
- target
- architectural
- destination
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 23
- 238000012545 processing Methods 0.000 claims abstract description 58
- 238000013507 mapping Methods 0.000 claims abstract description 51
- 238000012546 transfer Methods 0.000 claims description 45
- 238000000034 method Methods 0.000 claims description 24
- 230000004044 response Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000004804 winding Methods 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
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
技术领域
本公开的实施例涉及一种指令流水线的处理方法及装置、电子装置及存储介质。
背景技术
为了提高处理器的性能,处理器可以使用流水线的方式,也就是一条指令从被提取、解码、执行、结果写入的整个过程被分为多个流水阶段,一个时钟一个指令只能在某一个流水阶段;而处理器则可以有多条指令运行在不同的流水阶段。
公开内容
本公开的至少一个实施例提供了一种指令流水线的处理方法,该处理方法包括:在指令队列中缓存经过寄存器重命名处理的待发射的至少一条指令,其中,寄存器重命名处理使用寄存器重命名映射表以存储架构寄存器和对应分配的物理寄存器之间的映射关系;对于至少一条指令中选出的对象指令,在寄存器重命名映射表中跳过查询对象指令的目的架构寄存器对应的老物理寄存器的情形下,确定是否能够释放对象指令的目的架构寄存器对应的老物理寄存器。这里,对象指令的目的架构寄存器对应的老物理寄存器为在寄存器重命名映射表中在对象指令之前被映射的物理寄存器。
本公开的至少一个实施例提供了一种指令流水线的处理装置,该处理装置包括指令队列和物理寄存器释放处理单元。该指令队列配置为缓存经过寄存器重命名处理的待发射的至少一条指令,其中,寄存器重命名处理使用寄存器重命名映射表以存储架构寄存器和对应分配的物理寄存器之间的映射关系;该物理寄存器释放处理单元配置为,对于至少一条指令中选出的对象指令,在寄存器重命名映射表中跳过查询对象指令的目的架构寄存器对应的老物理寄存器的情形下,确定是否能够释放对象指令的目的架构寄存器对应的老物理寄存器。这里,对象指令的目的架构寄存器对应的老物理寄存器为在寄存器重命名映射表中在对象指令之前被映射的物理寄存器。
本公开的至少一个实施例提供了一种指令流水线的处理装置,该处理装置包括处理单元和存储器,存储器上存储有一个或多个计算机程序模块;所述一个或多个计算机程序模块被配置为由所述处理单元执行时,用于执行上述实施例的处理方法。
本公开的至少一个实施例提供了一种电子装置,包括如上所述的实施例的指令流水线的处理装置。
本公开的至少一个实施例提供了一种非瞬时可读存储介质,其中,所述非瞬时可读存储介质上存储有计算机指令,其中,所述计算机指令被处理器执行时执行如上所述的实施例的处理方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1A示出了示例性的标量处理器的指令流水线;
图1B示出了示例性的超标量处理器的指令流水线;
图2示出了一种处理器核的流水线的示意图;
图3示出了用于乱序执行的流水线的指令队列以及寄存器重命名映射表的示例;
图4示出了一种判断从寄存器重命名映射表中释放物理寄存器的方法示意图;
图5A示出了根据本公开至少一个实施例提供的指令流水线的处理方法的流程图;
图5B示出了根据本公开至少一个实施例提供的指令流水线的处理装置的示意图;
图6示出了根据本公开至少一个实施例提供的另一种指令流水线的处理装置的示意图;
图7示出了本公开至少一个实施例提供的一种电子装置的示意框图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另作定义,此处使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
图1A示出了示例性的标量处理器的指令流水线,该指令流水线包括五阶段流水线,其中,每条指令可以在每个时钟周期发出并在固定的时间(例如,5个时钟周期)内执行。每条指令的执行分成5步:取指(IF)阶段1001、读寄存器(RD)阶段(或译码阶段)1002、算术/逻辑单元(ALU)阶段(或执行阶段)1003、访存(MEM)阶段1004和写回(WB)阶段1005。在IF阶段1001中,从指令高速缓存器中取出指定指令。所取出的指定指令的一部分用于指定可用于执行指令的源寄存器。在RD阶段1002中,译码并生成控制逻辑,将所指定的源寄存器的内容取出。根据控制逻辑,使用所取出的内容在ALU阶段1003中执行算术或逻辑运算。在MEM阶段1004中,执行指令可读/写数据高速缓存器中的存储器。最后,在WB阶段1005中,通过执行指令而获得的值可以写回到某个寄存器中。
如图1A所示的常规的标量流水线,每个时钟周期平均执行的指令的条数小于等于1,即它的指令级并行度小于等于1。超标量指在一个周期内并行执行多条指令的方法,具有增加的指令级并行度,能够在一个周期内处理多条指令的处理器就被称为超标量处理器。超标量处理器在通常的标量(scalar)处理器的基础上增加额外的资源,创建多条流水线(pipeline),每条管线执行分配给自己的指令,以此来实现并行化。图1B示出了示例性的超标量处理器的指令流水线,流水线中的每一级可并行输入4条指令,例如指令1-4被并行处理,指令5-8被并行处理,指令9-12被并行处理。如图1B所示的常规的标量流水线,每个时钟周期平均执行的指令的条数大于1,即它的指令级并行度大于1。
例如,超标量处理器还可以进一步支持乱序执行(out-of-order execution)。乱序执行指CPU采用允许将多条指令不按程序规定的顺序分开发送给相应电路单元处理的技术。乱序执行涉及不少的算法,这些算法基本上都是以保留站为基础进行设计的。保留站的核心思想是把译码完成后的指令根据各自的指令种类送往各自的保留站中保存下来,如果该指令的所有操作数都已准备齐全,则可以开始进行乱序发射。
如图1B所示的流水线在执行简单指令序列时可以很顺畅,每个时钟周期可以执行一条指令。但是,程序中的指令序列并不总是简单序列,通常会存在指令间的相关,这些相关可能导致流水线执行冲突甚至出错。目前影响流水线主要可以分为三类:资源冲突(结构相关)、数据冲突(数据相关)和控制冲突(控制相关)。
在程序中,如果两条指令访问同一个寄存器或内存地址,而且这两条指令中至少一条是写指令,那么这两条指令就存在数据相关。数据相关根据冲突访问中读和写的次序可以分为三种情况:RAW(写后读)、WAW(写后写)、WAR(读后写)。对于RAW(写后读),后面的指令需要使用到前面的所写的数据,也称为真相关;对于WAW(写后写),两个指令同写一个目标地址,也称为输出相关;对于WAR(读后写),后面的指令覆盖前面指令所读的目标地址,也称为反相关。可以通过寄存器重命名技术解决WAW(写后写)和WAR(读后写)可能的流水线冲突。
图2示出了一种处理器核的流水线的示意图,图中的带箭头的虚线表示重新定向的指令流。如图所示,单核处理器或多核处理器的处理器核(例如CPU核)通过流水线技术提高指令间并行度(Instruction Level Parallelism)。处理器核内部包括多个流水阶段,比如,在流水线送入各种来源的程序计数器,通过多路选择器(Mux)选择出下一程序计数器(PC)之后,该程序计数器对应的指令要经过分支预测(Branch prediction)、指令提取(Instruction fetch)、指令译码(Decode)、指令分发与重命名(Dispatch and Rename)、指令执行(Execute)、指令结束(Retire)等各阶段处理。在各个流水阶段之间,根据需要设置等待队列,这些队列通常是先入先出(FIFO)队列。例如,在分支预测单元之后,设置有分支预测(BP)FIFO队列,以存储分支预测结果;在指令提取单元之后,设置有指令缓存(Instruction Cache,IC)FIFO,以缓存所取得的指令;在指令译码单元之后,设置有译码(DE)FIFO,以缓存译码后的指令;在指令分发与重命名单元之后,设置有结束(RT)FIFO以缓存执行之后等待确认结束的指令。同时处理器核的流水线还包括指令队列,以在指令分发与重命名之后缓存等待指令执行单元执行指令。为了支持高运行频率,每一个流水阶段又可能包含多个流水级(时钟周期)。虽然每个流水级执行有限的操作,但是这样每个时钟可以做到最短,通过提高处理器核的运行频率来提高处理器核的性能。每个流水级也可以通过容纳更多条指令(即超标量(superscalar)技术)来进一步提高处理器核的性能。
如上所述,可以通过寄存器重命名技术解决WAW(写后写)和WAR(读后写)可能的流水线冲突。该技术不增加指令集中架构寄存器的个数,在处理器内部重新定义物理寄存器(PR),指令集中定义的架构寄存器又被称为逻辑寄存器(LR)。物理寄存器是在处理器中实际存在的,例如称为物理寄存器堆(physical register file,PRF)。处理器会动态将架构寄存器映射到物理寄存器解决WAW和WAR相关性的问题;例如,处理器通过寄存器重命名映射表和空闲物理寄存器表来完成寄存器重命名的过程。当处理器对当前的一条指令中使用的架构寄存器进行寄存器重命名时,需要对该指令中的源寄存器和目的寄存器(均为架构寄存器,在下文中有时省略了“架构”二字)都进行处理。对于源寄存器,处理器会去查找寄存器重命名映射表找出对应物理寄存器编号(PRN,PR No.),对于目的寄存器则需要从空闲物理寄存器表中读取一个物理寄存器编号,将该物理寄存器编号与该目的寄存器建立映射关系并写入寄存器重命名映射表。如果空闲物理寄存器表已空,则处理器的流水线需要暂停等待直至有指令退休而释放之前被映射的物理寄存器。
寄存器重命名映射表例如通过存储装置(例如缓存或寄存器)等硬件结构实现,且其组织结构例如可以包括如下两种:
·随机寻址存储(Random Addressed Memory,RAM),以架构寄存器作为索引保存每个架构寄存器的映射关系,表项数目等于架构寄存器数目。
·内容寻址存储(Content Addressed Memory,CAM),以物理寄存器作为索引保存每个物理寄存器的映射关系,表项数目等于物理寄存器数目。
在CAM结构中,由于一个架构寄存器可能与多个物理寄存器存在映射关系,需要对表中的每一项增加标志位,该标志位表示是否为最新的映射关系。RAM结构的寄存器重命名映射表的表项数目更少(因为物理寄存器个数大于架构寄存器)且通常更适合乱序执行的处理器。
图3示出了用于乱序执行的流水线的指令队列以及寄存器重命名映射表的示例。图3左侧示出了待发射指令队列,即在指令队列中待发射的多条指令。图中以4条指令为例,它们分别为指令instr0~instr3。这些指令中instr0是最老的,这些指令需要进行寄存器重命名处理。图3的右侧为寄存器重命名映射表和空闲物理寄存器表,并且寄存器重命名映射表包括架构寄存器列以及与之对应的物理寄存器列。如该寄存器重命名映射表所示,在当前这4条指令之前的发射周期中,架构寄存器a与物理寄存器p1对应等,但是对于当前发射周期处理的四条指令中所包括的架构寄存器映射的物理寄存器尚未更新到该寄存器重命名映射表中;如该空闲物理寄存器表所示,当前物理寄存器p4、p5等处于尚未分配的空闲状态,因此当需要对指令进行寄存器重命名处理时,可以从这些物理寄存器中选择,被选择的物理寄存器将从该表中移除,另一方面被释放的物理寄存器则会被添加到该表中。
什么时候释放一个被映射占用的物理寄存器是寄存器重命名需要考虑的问题。只有当最后一条使用某个物理寄存器的指令退休,该物理寄存器才可变为空闲状态。图4示出了判断从寄存器重命名映射表中释放物理寄存器的方法示意图。参考图4,对目前判断某一物理寄存器是否能从寄存器重命名映射表中释放的方法说明如下。
如图4所示,在先的指令a中,架构寄存器r1、r2和r3分别被重命名为物理寄存器p1、p7和p9,在后的指令b中,架构寄存器r1、r4和r5分别被重命名为物理寄存器p6、p8和p2。因此,指令a的目的架构寄存器和指令b的目的架构寄存器相同,均为r1。对于处理在后的指令b的时刻而言,目的寄存器r1对应的老物理寄存器(即由于之前的指令a的寄存器重命名处理而被映射的物理寄存器)为p1,而对应的新物理寄存器(即当前的指令b的寄存器重命名处理而被映射的物理寄存器)为p6。当指令b指令退休时,则前面的指令a的目的架构寄存器r1所对应的老物理寄存器p1就没有用处了,老物理寄存器p1此时可以被释放,从而进入空闲物理寄存器列表以等待后续重新被映射。
另外,在指令序列中通常会有很多从寄存器到寄存器的数据传送指令,比如涉及参数传递的场景。在寄存器重命名阶段,可以将这样的数据传送指令的目的架构寄存器映射到该指令的源架构寄存器已经对应的物理寄存器,这样就在重命名阶段完成了数据传送指令的功能。该方法取消了数据传送指令的执行阶段和读写操作数阶段,在提升了处理器核的性能的同时还节省了功耗。这个特性称为数据传送指令取消,这类数据传送指令也可以被称为“数据传送取消型指令”。
但是,上述从寄存器到寄存器的数据传送指令取消特性也引入了一个问题,这就是多个架构寄存器可能被映射到同一个物理寄存器,使得该指令的目的架构寄存器对应的老物理寄存器释放的判断复杂化。
对于在同一个操作周期中有一条或多条指令等待被发射的情形,判断这些指令中某一指令的目的架构寄存器对应的老物理寄存器能否被释放需要考虑三个方面:
(1)在寄存器重命名映射表中,查询当前指令的目的架构寄存器对应的老物理寄存器是否命中比当前指令更老的任一指令的目的架构寄存器对应的新物理寄存器,如果命中且该当前指令与在先的其他指令不存在写后写(WAW)关系,则该当前指令的目的架构寄存器对应的老物理寄存器不能释放。
(2)在寄存器重命名映射表中,查询每条当前指令的目的架构寄存器对应的老物理寄存器是否命中所有架构寄存器对应的物理寄存器,如果查询命中且该查询命中有效时,则当前指令的目的架构寄存器对应的老物理寄存器不能释放。
(3)如果当前指令是数据传送取消型指令,那么在其源架构寄存器映射的物理寄存器与目的架构寄存器的老物理寄存器相同时,说明这个老物理寄存器还会继续使用,则当前指令目的架构寄存器的老物理寄存器不能释放。
然而,上述方法存在如下的缺点。
(1)在寄存器重命名映射表中,在查询当前指令的目的架构寄存器对应的老物理寄存器是否命中所有架构寄存器对应的物理寄存器之后,还需要通过额外逻辑判断该查询结果是否有效。
例如,对于图3所示的情形,以指令instr1为当前指令,在寄存器重命名映射表中,其目的寄存器c的老物理寄存器p1查询命中在先的指令instr0的目的架构寄存器a对应的物理寄存器(在映射表中a对应的是相同的物理寄存器p1),因为指令instr0是非数据传送取消型指令,所以指令instr0的目的架构寄存器a在进行寄存器重命名处理时会被分配新的物理寄存器,但是该新的映射关系在当前的操作周期还未写入寄存器重命名映射表,所以虽然当前指令的目的架构寄存器c的老物理寄存器p1在查询中命中架构寄存器a的物理寄存器p1,但是该查询命中是无效的。因此,在处理器核的流水线中需要增加逻辑使该查询结果是否无效。如果对于每条指令的目的架构寄存器对应的老物理寄存器都需要判断查询命中是否有效,则增加了流水线的逻辑资源和绕线资源用量。
(2)对于数据传送取消型指令,判断其源架构寄存器映射到的物理寄存器和目的架构寄存器映射的老的物理寄存器是否相同是通过比较物理寄存器得到,而物理寄存器是通过查询寄存器重命名映射表并结合指令之间的WAW以及RAW的关系经过多级选择得到的,这导致电路逻辑级数较大,组合逻辑延迟较大,时序性能差。
综上,上述方法会增加额外的逻辑资源和绕线资源用量,降低电路时序性能,并且指令队列中同时等待发射的指令越多,则需要判断的架构寄存器数越多,这对电路面积和时序的负面影响也越大。
如图5A所示,本公开的至少一个实施例提供了一种指令流水线的处理方法,该处理方法包括如下的步骤S101~S102:
步骤S101:在指令队列中缓存经过寄存器重命名处理的待发射的至少一条指令。寄存器重命名处理使用寄存器重命名映射表以存储架构寄存器和对应分配的物理寄存器之间的映射关系。
步骤S102:对于至少一条指令中选出的对象指令,在寄存器重命名映射表中跳过查询对象指令的目的架构寄存器对应的老物理寄存器的情形下,确定是否能够释放对象指令的目的架构寄存器对应的老物理寄存器。
这里,对象指令的目的架构寄存器对应的老物理寄存器为在寄存器重命名映射表中在对象指令之前被映射的物理寄存器。
例如,在本公开的至少一个实施例中,对象指令为待发射的至少一条指令中最老指令,确定是否能够释放对象指令的目的架构寄存器对应的老物理寄存器,包括:响应于对象指令的目的架构寄存器在寄存器重命名映射表中查询命中或视为命中除对象指令的目的架构寄存器之外的其他架构寄存器,确定不能释放对象指令的目的架构寄存器对应的老物理寄存器。
在上述实施例的一个示例中,例如,视为命中除对象指令的目的架构寄存器之外的其他架构寄存器,包括:响应于对象指令为数据传送取消型,对象指令的目的架构寄存器和对象指令的源架构寄存器相同。
例如,在本公开的至少一个实施例中,对象指令为待发射的至少一条指令中次老指令,确定是否能够释放对象指令的目的架构寄存器对应的老物理寄存器,包括:响应于对象指令的目的架构寄存器在寄存器重命名映射表中查询命中或视为命中除对象指令的目的架构寄存器以及至少一条指令中最老指令的目的架构寄存器之外的其他架构寄存器,确定不能释放对象指令的目的架构寄存器对应的老物理寄存器。
在上述实施例的一个示例中,视为命中除对象指令的目的架构寄存器以及至少一条指令中最老指令的目的架构寄存器之外的其他架构寄存器,包括:响应于对象指令为数据传送取消型,对象指令的目的架构寄存器和对象指令的源架构寄存器相同。
在上述实施例的一个示例中,视为命中除对象指令的目的架构寄存器以及至少一条指令中最老指令的目的架构寄存器之外的其他架构寄存器,还包括:响应于对象指令为非数据传送取消型且对象指令与最老指令之间不存在写后写关系,对象指令的目的架构寄存器对应的老物理寄存器与最老指令的目的架构寄存器对应的新物理寄存器相同,其中,最老指令的目的架构寄存器对应的新物理寄存器为对于当前发射周期为最老指令的目的架构寄存器分配的物理寄存器。
例如,在本公开的至少一个实施例中,对象指令为待发射的至少一条指令中第三老指令,确定是否能够释放对象指令的目的架构寄存器对应的老物理寄存器,包括:响应于对象指令的目的架构寄存器在寄存器重命名映射表中查询命中或视为命中除对象指令的目的架构寄存器、至少一条指令中最老指令的目的架构寄存器、至少一条指令中次老指令的目的架构寄存器之外的其他架构寄存器,确定不能释放对象指令的目的架构寄存器对应的老物理寄存器。
在上述实施例的一个示例中,视为命中除对象指令的目的架构寄存器、至少一条指令中最老指令的目的架构寄存器、至少一条指令中次老指令的目的架构寄存器之外的其他架构寄存器,包括:响应于对象指令为数据传送取消型,对象指令的目的架构寄存器和对象指令的源架构寄存器相同。
在上述实施例的一个示例中,视为命中除对象指令的目的架构寄存器、至少一条指令中最老指令的目的架构寄存器、至少一条指令中次老指令的目的架构寄存器之外的其他架构寄存器,还包括:响应于对象指令为非数据传送取消型且对象指令与次老指令之间不存在写后写关系,对象指令的目的架构寄存器对应的老物理寄存器与次老指令的目的架构寄存器对应的新物理寄存器相同,其中,次老指令的目的架构寄存器对应的新物理寄存器为对于当前发射周期为次老指令的目的架构寄存器分配的物理寄存器。
在上述实施例的一个示例中,视为命中除对象指令的目的架构寄存器、至少一条指令中最老指令的目的架构寄存器、至少一条指令中次老指令的目的架构寄存器之外的其他架构寄存器,还包括:响应于对象指令为非数据传送取消型、对象指令与最老指令之间不存在写后写关系以及次老指令与最老指令之间不存在写后写关系,对象指令的目的架构寄存器对应的老物理寄存器与最老指令的目的架构寄存器对应的新物理寄存器相同,其中,最老指令的目的架构寄存器对应的新物理寄存器为对于当前发射周期为最老指令的目的架构寄存器分配的物理寄存器。
本公开的至少一个实施例提供了一种指令流水线的处理装置,该处理装置包括指令队列和物理寄存器释放处理单元。该指令队列配置为缓存经过寄存器重命名处理的待发射的至少一条指令,其中,寄存器重命名处理使用寄存器重命名映射表以存储架构寄存器和对应分配的物理寄存器之间的映射关系;该物理寄存器释放处理单元配置为,对于至少一条指令中选出的对象指令,在寄存器重命名映射表中跳过查询对象指令的目的架构寄存器对应的老物理寄存器的情形下,确定是否能够释放对象指令的目的架构寄存器对应的老物理寄存器。这里,对象指令的目的架构寄存器对应的老物理寄存器为在寄存器重命名映射表中在对象指令之前被映射的物理寄存器。
在上述的一个或多个实施例的处理方法中,在寄存器重命名映射表中跳过查询对象指令和或比对象指令更老的指令的目的架构寄存器对应的老物理寄存器,即不查询对象指令和或比对象指令更老的指令的目的架构寄存器对应的老物理寄存器,由此可以取消对于寄存器重命名映射表的查新命中是否有效的额外判断逻辑,因此减小电路面积,提高时序性能。
在上述的一个或多个实施例的处理方法中,对于数据传送取消型指令,通过比较其目的架构寄存器和源架构寄存器是否相同,可以得到该指令的目的架构寄存器对应的老物理寄存器与源架构寄存器映射的物理寄存器是否相同,由此可以无需查询对象指令和或比对象指令更老的指令的目的架构寄存器对应的老物理寄存器,这有助于可以减少逻辑级数,减小电路面积,提高时序性能。
下面结合具体示例对本公开至少一实施例的方法进行说明。
在例如支持乱发发射的处理器核(例如单核处理器或多核处理器)的流水线中,每个周期可发射4条指令,例如,在指令队列缓存有经过寄存器重命名处理的待发射的四条示例性指令:
指令instr0;
指令instr1;
指令instr2;
指令instr3。
这四条指令从指令instr0开始到指令instr3时间依次递减,即时间方面从老到新。
寄存器重命名处理使用寄存器重命名映射表(以下也简称为“映射表”)以存储架构寄存器和对应分配的物理寄存器之间的映射关系。在下面的表述中,某指令Ic的某个架构寄存器(例如目的寄存器)Ar的“老物理寄存器”po指代的是在寄存器重命名映射表中在该指令Ic之前(的其他指令在进行寄存器重命名映射时)该架构寄存器Ar被映射的物理寄存器,而该架构寄存器Ar的“新物理寄存器”pn则指代的是当前指令Ic在进行寄存器重命名映射时该架构寄存器Ar被映射的物理寄存器。并且,当提及对于某一老物理寄存器po查询命中或视为命中某一架构寄存器Ar时,指代的是在映射表中,对于该老物理寄存器po查询命中了该结构寄存器Ar对应的物理寄存器。
对于上述四条示例性指令:指令instr0、指令instr1、指令instr2、指令instr3,按照时间的先后顺序逐一进行分析。
首先分析第一条指令instr0,即此时指令instr0作为讨论对象,即“对象指令”(或“当前指令”)。
一、第一条指令instr0
1.由于指令instr0是当前指令队列中的待发射指令中最老的指令,因此没有需要查询、考虑的更老的指令。
2.对于寄存器重命名映射表,不需要查询instr0的目的架构寄存器对应的老物理寄存器,即跳过查询该指令instr0的目的架构寄存器对应的老物理寄存器,但是需要查询除了指令instr0的目的架构寄存器之外的其他架构寄存器对应的物理寄存器。
如下解释,为何不需要查询指令instr0的目的架构寄存器对应的老物理寄存器。首先,在指令队列的当前操作周期,指令instr0的目的架构寄存器对应的老物理寄存器必然与寄存器重命名映射表中该架构寄存器已经映射的物理寄存器相同。
2.1若指令instr0不是数据传送取消型指令,那么其目的寄存器会分配新物理寄存器。此时,指令instr0的目的架构寄存器对应的老物理寄存器不能释放的条件是:在映射表中,查询instr0的目的架构寄存器对应的老物理寄存器命中除指令instr0的目的架构寄存器之外其他的架构寄存器,而查询命中指令instr0的目的架构寄存器是无效的,所以不需要查询指令instr0的目的架构寄存器对应的老物理寄存器,对此也可参考下面的表1。
表1:指令instr0不是数据传送取消型指令的场景分析
2.2若指令instr0是数据传送取消型指令且分别满足如下条件:
2.2.1指令instr0的目的架构寄存器与源架构寄存器不同,但是它们映射到的物理寄存器相同,那么映射表中查询其他架构寄存器时同样包含了此场景,所以不再需要在映射表中查询指令instr0的目的架构寄存器对应的老物理寄存器,对此可以参考表22。
表2:指令instr0是数据传送取消型指令,但其源架构寄存器与目的架构寄存器不同的场景分析
2.2.2若指令instr0是数据传送取消型指令,且该指令的目的架构寄存器与源架构寄存器相同,则指令instr0的目的架构寄存器对应的老物理寄存器必然在映射表中查询命中某一架构寄存器,所以不需要再查询指令instr0的目的架构寄存器重命名映射表,对此参考表3。
表3:指令instr0是数据传送取消型指令且其源架构寄存器与目的架构寄存器相同的场景分析
综上所述,对于当前讨论的第一条指令instr0(对象指令),对于该对象指令的目的架构寄存器对应的老物理寄存器,不需要在映射表中查询其目的架构寄存器;并且,指令instr0满足以下任意一条就是查询命中或被视为查询命中,由此该指令instr0的目的架构寄存器对应的老物理寄存器不能释放,而除此之外的其他情形都可以释放:
(1)对于指令instr0的目的架构寄存器对应的老物理寄存器,在映射表中查询命中除了指令instr0的目的架构寄存器之外的其他架构寄存器;或者
(2)指令instr0是数据传送取消型指令且其目的架构寄存器与源架构寄存器相同。
接下来分析第二条指令instr1,即此时该指令instr1作为讨论对象的“对象指令”(或“当前指令”)。
二、第二条指令instr1
1.查询比对象指令更老指令
当前在指令队列中,指令instr0是比指令instr1更老的指令,且无其他更老的指令。
对于指令instr1的目的架构寄存器对应的老物理寄存器,需要查询是否命中指令instr0的目的架构寄存器对应的新物理寄存器,即,需要判定指令instr1的目的架构寄存器对应的老物理寄存器是否与指令instr0的目的架构寄存器对应的新物理寄存器相同,若这两个物理寄存器相同且指令instr1与指令instr0之间为非WAW,则可视为查询命中指令instr1的目的架构寄存器对应的老物理寄存器,对此参考表44。
表4:指令instr1 CAM older on-flight指令场景分析
2.对于寄存器重命名映射表,需要查询除了指令instr0的目的架构寄存器、指令instr1的目的架构寄存器之外的其他架构寄存器,然而如下所述,则不需要查询指令instr0的目的架构寄存器、指令instr1的目的架构寄存器。
2.1对于instr1的目的架构寄存器对应的老物理寄存器,查询指令instr0的目的架构寄存器的结果是查询指令instr0的(所有)架构寄存器(包括源架构寄存器和目的架构寄存器)的结果的子集,所以无需再查询指令instr0的目的架构寄存器。
2.2当指令instr1与指令instr0之间为非WAW时,指令instr1的目的架构寄存器对应的老物理寄存器必然与寄存器重命名映射表中该目的架构寄存器对应的物理寄存器相同。
2.2.1若指令instr1并非数据传送取消型指令,则指令instr1的目的架构寄存器对应的老物理寄存器不能释放的条件是:该老物理寄存器在除指令instr1之外的其他(尚未退休的)指令中有使用到,这包含在对于instr1的目的架构寄存器对应的老物理寄存器查询指令instr0的架构寄存器以及查询命中除指令instr0的目的架构寄存器、指令instr1的目的架构寄存器之外的其他寄存器的场景中,此时对指令instr1的目的架构寄存器对应的老物理寄存器的查询命中无效,所以不需要查询指令instr1目的寄存器,对此参考下表5中的场景0。
2.2.2若指令instr1是数据传送取消型指令且分别满足如下情形:
2.2.2.1如果指令instr1的目的架构寄存器与源架构寄存器不同,但是它们映射到的物理寄存器相同时,若指令instr1与指令instr0之间是RAW,那么在使用instr1的目的架构寄存器对应的老物理寄存器查询指令instr0的目的架构的新物理寄存器可以包含此场景;若指令instr1与指令instr0是非RAW,那么在对于instr1的目的架构寄存器对应的老物理寄存器查询除instr0目的架构寄存器、指令instr1目的架构寄存器之外的其他寄存器可以包含此场景,所以都不需要查询指令instr1的目的架构寄存器,场景参考下表5场景1。
2.2.2.2如果指令instr1的目的架构寄存器与源架构寄存器相同,则instr1的目的架构寄存器对应的老物理寄存器必然与已有架构寄存器映射到的物理寄存器相同,因此该场景也不需要查询指令instr1的目的寄存器。
2.3指令instr1与指令instr0是WAW时,指令instr1目的架构寄存器的老物理寄存器是instr0的目的架构寄存器对应的新物理寄存器。
2.3.1如果指令instr1是非数据传送取消型指令,那么instr1的目的架构寄存器对应的老物理寄存器不能释放的条件是:instr1的目的架构寄存器对应的老物理寄存器在被除指令instr0的目的架构寄存器和指令instr1的目的架构寄存器之外的其他寄存器使用,此场景包含在对于指令instr1的目的架构寄存器对应的老物理寄存器查询除instr0的目的架构寄存器、指令instr1的目的架构寄存器之外的其他架构寄存器的情形中,因此不需要查询指令instr1的目的架构寄存器,对此参考下表5场景2,并且,虽然该场景中指令instr1是数据传送取消型指令,但也同样适用于指令instr1是非数据传送指令场景。
2.3.2如果指令instr1是数据传送取消型指令且指令instr1的目的架构寄存器与源架构寄存器不同,但是它们映射到的物理寄存器相同时,则必有instr1与指令instr0非RAW,那么在对于指令instr1的目的架构寄存器对应的老物理寄存器查询除指令instr0的目的架构寄存器、指令instr1目的架构寄存器之外的其他寄存器的情形可以包含此场景,因此不需要查询指令instr1的目的架构寄存器,对此参考下下表5场景2。
2.3.3指令instr1是数据传送取消型指令且指令instr1的目的架构寄存器与源架构寄存器相同,则instr1的目的架构寄存器对应的老物理寄存器必然与已有的架构寄存器映射到的物理寄存器相同,因此视为查询命中,此时指令instr1目的架构寄存器的老物理寄存器不能释放,因此不需要再查询指令instr1目的寄存器。
表5对于指令instr1的目的架构寄存器对应的老物理寄存器查询寄存器重命名映射表的场景分析
综上所述,对于当前讨论的第二条指令instr1(对象指令),对于该对象指令的目的架构寄存器对应的老物理寄存器,不需要在映射表中查询指令instr0的目的架构寄存器、指令instr1的目的架构寄存器;并且,指令instr1目的架构寄存器的老物理寄存器满足以下任意一条,则查询命中或被视为查询命中,则其目的架构寄存器的老物理寄存器不能释放,除此之外的其他情形都可以释放:
(1)对于指令instr0的目的架构寄存器对应的老物理寄存器,在映射表中查询命中除了指令instr0的目的架构寄存器、指令instr1的目的架构寄存器之外的其他寄存器;或者
(2)对于指令instr1的目的架构寄存器对应的老物理寄存器,查询命中指令instr0的目的架构寄存器对应的新物理寄存器(即指令instr1的目的架构寄存器对应的老物理寄存器与指令instr0的目的架构寄存器对应的新物理寄存器相同)且指令instr1与指令instr0之间非WAW;或者
(3)指令instr1是数据传送取消型指令且其目的架构寄存器与源架构寄存器相同。
接下来分析第三条指令instr2,即此时该指令instr2作为讨论对象的“对象指令”(或“当前指令”)。
三、第三条指令instr2
1.查询比对象指令更老指令
当前在指令队列中,指令instr0和指令instr1是比指令instr2更老的指令,而指令instr0又比指令instr1更老,并且无其他更老的指令。
1.1对于指令instr2的目的架构寄存器对应的老物理寄存器,需要查询指令instr0的目的架构寄存器对应的新物理寄存器,如果这两个物理寄存器相同,且指令instr2与指令instr0之间非WAW且指令instr1与指令instr0之间非WAW,则认为查询命中,对此参考下表6场景0;如果指令instr1与指令instr0是WAW,那么将转换为如下所述的instr2的目的架构寄存器对应的老物理寄存器查询指令instr1的目的架构寄存器对应的新物理寄存器的情形;
1.2对于指令instr2目的架构寄存器的老物理寄存器,需要查询指令instr1目的架构寄存器的新物理寄存器,如果这两个物理寄存器相同且指令instr2与指令instr1之间非WAW,则认为查询命中,对此参考下表6场景1。表6:对于指令instr2的目的架构寄存器对应的老物理寄存器查询更老的指令的架构寄存器的场景分析
2.对于寄存器重命名映射表,对于指令instr2的目的架构寄存器对应的老物理寄存器,需要查询除了指令instr0、指令instr1和指令instr2这三者的目的架构寄存器之外的其他寄存器,但是如下所述,不需要查询指令instr0、指令instr1和指令instr2这三者的目的架构寄存器映表。
2.1对于指令instr2的目的架构寄存器对应的老物理寄存器,查询指令instr0的目的架构寄存器、指令instr1的目的架构寄存器的结果分别是查询指令instr0的架构寄存器、指令instr1的架构寄存器的结果的子集,因此无需再查询指令instr0的架构寄存器、指令instr1的目的架构寄存器;
2.2当指令instr2与指令instr1之间和指令instr2与指令instr0之间都是非WAW时,指令instr2目的架构寄存器老的物理寄存器必然与映射表中其他已有的架构寄存器的物理寄存器相同,因此也无需再查询。
2.2.1如果指令instr2是非数据传送取消型指令,那么指令instr2的目的架构寄存器对应的老物理寄存器不能释放的条件包括:指令instr2的目的架构寄存器对应的老物理寄存器被除指令instr0的目的架构寄存器、指令instr1的目的架构寄存器之外的其他寄存器或被指令instr0的目的架构寄存器对应的新物理寄存器、指令instr1当前指令的目的架构寄存器对应的新物理寄存器使用到,因此,对于指令instr2目的架构寄存器老的物理寄存器,在映射表中查询指令instr2的目的架构寄存器的查询命中无效,所以不再需要查询指令instr2目的寄存器。
2.2.2若指令instr2是数据传送取消型指令且分别满足如下情形:
2.2.2.1如果指令instr2的目的架构寄存器与源架构寄存器不同,但是它们映射到的物理寄存器相同时,若指令instr1与指令instr0之间是非WAW,那么指令instr2与指令instr1或指令instr0分别是RAW的场景可以包含在,对于指令instr2的目的架构寄存器对应的老物理寄存器,查询指令instr1的目的架构寄存器对应的新物理寄存器、指令instr0的目的架构寄存器对应的新物理寄存器的情形中,对此参考下表7的场景0;指令instr2与指令instr1和指令instr0都不是RAW的场景包含在,对于指令instr2的目的架构寄存器对应的老物理寄存器,查询除instr0、指令instr1、指令instr2这三者的目的架构寄存器之外的其他寄存器的情形之中;若指令instr1与指令instr0之间是WAW,那么在指令instr2与指令instr1是RAW时查询指令instr1的目的架构寄存器对应的新物理寄存器的场景,以及指令instr2与指令instr1非RAW时的场景,二者包含在,对于指令instr2的目的架构寄存器对应的老物理寄存器,查询除instr0、指令instr1、指令instr2这三者的目的架构寄存器之外的其他寄存器的场景之中,对此参考下表7的场景1,所以上述情形,都不需要在映射表中查询指令instr2的目的架构寄存器。
2.2.2.2如果目的架构寄存器与源架构寄存器相同,则必然与已有的架构寄存器映射到的物理寄存器相同,该场景也不需要在映射表中查询指令instr2的目的架构寄存器对应的老物理寄存器。
表7:指令instr2与更老的指令为非WAW时的场景分析
2.3指令instr2与指令instr1或指令instr0之间是WAW时,指令instr2的目的架构寄存器对应的老物理寄存器是指令instr1的目的架构寄存器对应的新物理寄存器或指令instr0的目的架构寄存器对应的新物理寄存器。
2.3.1指令instr2是非数据传送取消型指令,或指令instr2是数据传送取消型指令但是其目的架构寄存器与源架构寄存器不同时,则指令instr2的目的架构寄存器对应的老物理寄存器不能释放的条件包括:该老物理寄存器还被除了指令instr0、指令instr1、指令instr2这三者的目的架构寄存器之外的其他寄存器用到,或者当前是与指令instr2为非WAW关系的指令的目的架构寄存器对应的新物理寄存器,前一种场景包含在对于指令instr2的目的架构寄存器对应的老物理寄存器查询除指令instr0、指令instr1、指令instr2这三者的目的架构寄存器之外的其他寄存器的情形中,后一种场景包含在对于指令instr2的目的架构寄存器对应的老物理寄存器查询指令instr0、指令instr1的架构寄存器的情形中,所以不再需要查询指令instr2的目的架构寄存器。
2.3.2如果指令instr2是数据传送取消型指令且其目的架构寄存器与源架构寄存器相同,则指令instr2的目的架构寄存器对应的老物理寄存器必然与已有架构寄存器映射到的物理寄存器相同,因此也不需要查询指令instr2目的寄存器重命。
综上所述,对于当前讨论的第二条指令instr1(对象指令),对于该对象指令的目的架构寄存器对应的老物理寄存器,在映射表中不需要查询指令instr0、指令instr1、指令instr2这三者的目的架构寄存器;并且,指令instr2的目的架构寄存器对应的老物理寄存器满足以下任意一条,则查询命中或被视为查询命中,则其目的架构寄存器的老物理寄存器不能释放,除此之外的其他情形都可以释放:
(1)对于指令instr1的目的架构寄存器对应的老物理寄存器,在映射表中查询命中除了指令instr0、指令instr1、指令instr2这三者的目的架构寄存器之外的其他架构寄存器;或者
(2)对于指令instr2的目的架构寄存器对应的老物理寄存器,查询命中指令instr0的目的架构寄存器对应的新物理寄存器,且指令instr2与指令instr0之间为非WAW且指令instr1与指令instr0之间为非WAW;或者
(3)对于指令instr2的目的架构寄存器对应的老物理寄存器,查询命中指令instr1的目的架构寄存器对应的新物理寄存器,且指令instr2指令与instr1之间为非WAW;或者
(4)指令instr2是数据传送取消型指令且其目的架构寄存器与源架构寄存器相同。
根据上面的描述,同样可以推出:对于要讨论的第四条指令instr3(对象指令),对于该对象指令的目的架构寄存器对应的老物理寄存器,在映射表中不需要查询指令instr0、指令instr1、指令instr2、指令instr3这四者的目的架构寄存器;并且,指令instr3的目的架构寄存器对应的老物理寄存器满足以下任意一条,则查询命中或被视为查询命中,则其目的架构寄存器的老物理寄存器不能释放,除此之外的其他情形都可以释放:
(1)对于指令instr1的目的架构寄存器对应的老物理寄存器,在映射表中查询命中除了指令instr0、指令instr1、指令instr2、指令instr3这四者的目的架构寄存器之外的其他架构寄存器;或者
(2)对于指令instr3的目的架构寄存器对应的老物理寄存器,查询命中指令instr0的目的架构寄存器对应的新物理寄存器,且指令instr3与指令instr0之间为非WAW且指令instr2与指令instr0之间为非WAW且指令instr1与指令instr0之间为非WAW;或者
(3)对于指令instr3的目的架构寄存器对应的老物理寄存器,查询命中指令instr1的目的架构寄存器对应的新物理寄存器,且指令instr3与指令instr1之间为非WAW且指令instr2与指令instr1之间为非WAW;或者
(4)对于指令instr3的目的架构寄存器对应的老物理寄存器,查询命中指令instr2的目的架构寄存器对应的新物理寄存器,且指令instr3与指令instr2之间为非WAW;或者
(5)指令instr3是数据传送取消型指令且其目的架构寄存器与源架构寄存器相同。
图5B示出了根据本公开至少一个实施例提供的指令流水线的处理装置的示意图。如图5B所示,该处理装置500包括指令队列510和物理寄存器释放处理单元520。
该指令队列510配置为缓存经过寄存器重命名处理的待发射的至少一条指令。该物理寄存器释放处理单元520配置为,例如,对于指令队列的当前发射周期中待发射的至少一条指令中选出的对象指令,在寄存器重命名映射表中跳过查询对象指令的目的架构寄存器对应的老物理寄存器的情形下,确定是否能够释放对象指令的目的架构寄存器对应的老物理寄存器。同样地,对象指令的目的架构寄存器对应的老物理寄存器为在寄存器重命名映射表中在对象指令之前被映射的物理寄存器。
例如,进一步参考图2,通过指令分发与重命名单元维护寄存器重命名映射表以及空闲物理寄存器列表。物理寄存器释放处理单元520例如集成在指令分发与重命名单元中,或者与指令队列510集成在一起,本公开的实施例对此不作限制。
对于不同指令队列中待反射的多条指令中最老的指令、次老指令等,该物理寄存器释放处理单元520配置为进行如上所述的进一步处理,这里不再赘述。
图6示出了根据本公开至少一个实施例提供的指令流水线的处理装置的示意图。如图6所示,该指令流水线的处理装置600包括处理单元610和存储器620,该存储器620上存储有一个或多个计算机程序模块621;计算机程序模块621由处理单元610执行时,用于执行上述任一实施例的指令流水线的处理方法。
本公开至少一个实施例提供了一种非瞬时可读存储介质,该非瞬时可读存储介质上存储有计算机指令,该计算机指令被处理器执行时执行上述任一实施例的指令流水线的处理方法。
例如,该非瞬时可读存储介质实现为存储器,例如易失性存储器和/或非易失性存储器。
上述实施例中存储器可以为易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓存等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。该存储器中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
本公开至少一个实施例提供了一种电子装置,该电子装置包括如上任一实施例的指令流水线的处理装置。
例如,在至少一个示例中,该电子装置为处理器,该处理器包括如上任一实施例的指令流水线的处理装置。例如,该处理器可以是单核处理器或多核处理器,处理器核包括上述指令流水线的处理装置;例如,该处理器可以是标量处理器或超标量处理器。
根据需要,参考图2,根据本公开至少一实施例的处理器(或处理器核)还可以进一步包括但不限于分支预测、指令提取、指令分发与重命名、指令执行、指令结束等结构,本公开的实施例对此不作限制。在本公开的至少一实施例的处理器(或处理器核)中,通过CAM或RAM方式实现寄存器重命名。
例如,在至少一个示例中,该电子装置包括上述处理器,而该处理器包括如上任一实施例的指令流水线的处理装置。
图7为本公开至少一个实施例提供的一种电子装置300的示意框图。本公开实施例中的电子装置可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图7示出的电子装置700仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
例如,如图7所示,在一些示例中,电子装置700包括处理器(例如中央处理器、图形处理器等)701,该处理器装置可以包括上述指令流水线的处理装置,其可以根据存储在只读存储器(ROM)702中的程序或者从存储装置708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有计算机系统操作所需的各种程序和数据。处理器701、ROM 702以及RAM 703通过总线704被此相连。输入/输出(I/O)接口705也连接至总线704。
例如,以下部件可以连接至I/O接口705:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置706;包括诸如液晶显示器(LCD)、扬声器、振动器等的输出装置707;包括例如磁带、硬盘等的存储装置708;例如还可以包括诸如LAN卡、调制解调器等的网络接口卡的通信装置709。通信装置709可以允许电子装置700与其他设备进行无线或有线通信以交换数据,经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储装置708。虽然图7示出了包括各种装置的电子装置700,但是应理解的是,并不要求实施或包括所有示出的装置。可以替代地实施或包括更多或更少的装置。
例如,该电子装置700还可以进一步包括外设接口(图中未示出)等。该外设接口可以为各种类型的接口,例如为USB接口、闪电(lighting)接口等。该通信装置709可以通过无线通信来与网络和其他设备进行通信,该网络例如为因特网、内部网和/或诸如蜂窝电话网络之类的无线网络、无线局域网(LAN)和/或城域网(MAN)。无线通信可以使用多种通信标准、协议和技术中的任何一种,包括但不局限于全球移动通信系统(GSM)、增强型数据GSM环境(EDGE)、宽带码分多址(W-CDMA)、码分多址(CDMA)、时分多址(TDMA)、蓝牙、Wi-Fi(例如基于IEEE 802.11a、IEEE 802.11b、IEEE 802.11g和/或IEEE 802.11n标准)、基于因特网协议的语音传输(VoIP)、Wi-MAX,用于电子邮件、即时消息传递和/或短消息服务(SMS)的协议,或任何其他合适的通信协议。
例如,电子装置700可以为手机、平板电脑、笔记本电脑、电子书、游戏机、电视机、数码相框、导航仪等任何设备,也可以为任意的数据处理装置及硬件的组合,本公开的实施例对此不作限制。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述仅是本公开的示范性实施方式,而非用于限制本公开的保护范围,本公开的保护范围由所附的权利要求确定。
Claims (14)
1.一种指令流水线的处理方法,包括:
在指令队列中缓存经过寄存器重命名处理的待发射的至少一条指令,其中,所述寄存器重命名处理使用寄存器重命名映射表以存储架构寄存器和对应分配的物理寄存器之间的映射关系;
对于所述至少一条指令中选出的对象指令,在所述寄存器重命名映射表中跳过查询所述对象指令的目的架构寄存器对应的老物理寄存器的情形下,确定是否能够释放所述对象指令的目的架构寄存器对应的老物理寄存器,
其中,所述对象指令的目的架构寄存器对应的老物理寄存器为在所述寄存器重命名映射表中在所述对象指令之前被映射的物理寄存器。
2.根据权利要求1的处理方法,其中,所述对象指令为所述待发射的至少一条指令中最老指令,
所述确定是否能够释放所述对象指令的目的架构寄存器对应的老物理寄存器,包括:
响应于所述对象指令的目的架构寄存器在所述寄存器重命名映射表中查询命中或视为命中除所述对象指令的目的架构寄存器之外的其他架构寄存器,确定不能释放所述对象指令的目的架构寄存器对应的老物理寄存器。
3.根据权利要求2的处理方法,其中,所述视为命中除所述对象指令的目的架构寄存器之外的其他架构寄存器,包括:
响应于所述对象指令为数据传送取消型,所述对象指令的目的架构寄存器和所述对象指令的源架构寄存器相同。
4.根据权利要求1的处理方法,其中,所述对象指令为所述待发射的至少一条指令中次老指令,
所述确定是否能够释放所述对象指令的目的架构寄存器对应的老物理寄存器,包括:
响应于所述对象指令的目的架构寄存器在所述寄存器重命名映射表中查询命中或视为命中除所述对象指令的目的架构寄存器以及所述至少一条指令中最老指令的目的架构寄存器之外的其他架构寄存器,确定不能释放所述对象指令的目的架构寄存器对应的老物理寄存器。
5.根据权利要求4的处理方法,其中,所述视为命中除所述对象指令的目的架构寄存器以及所述至少一条指令中最老指令的目的架构寄存器之外的其他架构寄存器,包括:
响应于所述对象指令为数据传送取消型,所述对象指令的目的架构寄存器和所述对象指令的源架构寄存器相同。
6.根据权利要求5的处理方法,其中,所述视为命中除所述对象指令的目的架构寄存器以及所述至少一条指令中最老指令的目的架构寄存器之外的其他架构寄存器,还包括:
响应于所述对象指令为非数据传送取消型且所述对象指令与所述最老指令之间不存在写后写关系,所述对象指令的目的架构寄存器对应的老物理寄存器与所述最老指令的目的架构寄存器对应的新物理寄存器相同,其中,所述最老指令的目的架构寄存器对应的新物理寄存器为对于所述当前发射周期为所述最老指令的目的架构寄存器分配的物理寄存器。
7.根据权利要求1的处理方法,其中,所述对象指令为所述待发射的至少一条指令中第三老指令,
所述确定是否能够释放所述对象指令的目的架构寄存器对应的老物理寄存器,包括:
响应于所述对象指令的目的架构寄存器在所述寄存器重命名映射表中查询命中或视为命中除所述对象指令的目的架构寄存器、所述至少一条指令中最老指令的目的架构寄存器、所述至少一条指令中次老指令的目的架构寄存器之外的其他架构寄存器,确定不能释放所述对象指令的目的架构寄存器对应的老物理寄存器。
8.根据权利要求7的处理方法,其中,所述视为命中除所述对象指令的目的架构寄存器、所述至少一条指令中最老指令的目的架构寄存器、所述至少一条指令中次老指令的目的架构寄存器之外的其他架构寄存器,包括:
响应于所述对象指令为数据传送取消型,所述对象指令的目的架构寄存器和所述对象指令的源架构寄存器相同。
9.根据权利要求8的处理方法,其中,所述视为命中除所述对象指令的目的架构寄存器、所述至少一条指令中最老指令的目的架构寄存器、所述至少一条指令中次老指令的目的架构寄存器之外的其他架构寄存器,还包括:
响应于所述对象指令为非数据传送取消型且所述对象指令与所述次老指令之间不存在写后写关系,所述对象指令的目的架构寄存器对应的老物理寄存器与所述次老指令的目的架构寄存器对应的新物理寄存器相同,其中,所述次老指令的目的架构寄存器对应的新物理寄存器为对于所述当前发射周期为所述次老指令的目的架构寄存器分配的物理寄存器。
10.根据权利要求8的处理方法,其中,所述视为命中除所述对象指令的目的架构寄存器、所述至少一条指令中最老指令的目的架构寄存器、所述至少一条指令中次老指令的目的架构寄存器之外的其他架构寄存器,还包括:
响应于所述对象指令为非数据传送取消型、所述对象指令与所述最老指令之间不存在写后写关系以及所述次老指令与所述最老指令之间不存在写后写关系,所述对象指令的目的架构寄存器对应的老物理寄存器与所述最老指令的目的架构寄存器对应的新物理寄存器相同,其中,所述最老指令的目的架构寄存器对应的新物理寄存器为对于所述当前发射周期为所述最老指令的目的架构寄存器分配的物理寄存器。
11.一种指令流水线的处理装置,包括:
指令队列,被配置为缓存经过寄存器重命名处理的待发射的至少一条指令,其中,所述寄存器重命名处理使用寄存器重命名映射表以存储架构寄存器和对应分配的物理寄存器之间的映射关系;
物理寄存器释放处理单元,被配置为,对于所述至少一条指令中选出的对象指令,在所述寄存器重命名映射表中跳过查询所述对象指令的目的架构寄存器对应的老物理寄存器的情形下,确定是否能够释放所述对象指令的目的架构寄存器对应的老物理寄存器,
其中,所述对象指令的目的架构寄存器对应的老物理寄存器为在所述寄存器重命名映射表中在所述对象指令之前被映射的物理寄存器。
12.一种指令流水线的处理装置,包括:
处理单元,
存储器,其上存储有一个或多个计算机程序模块;
其中,所述一个或多个计算机程序模块被配置为由所述处理单元执行时,用于执行如权利要求1-10中任一所述处理方法。
13.一种电子装置,包括如权利要求11或12所述的指令流水线的处理装置。
14.一种非瞬时可读存储介质,其中,所述非瞬时可读存储介质上存储有计算机指令,其中,所述计算机指令被处理器执行时执行如权利要求1-10中任一所述处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111624988.5A CN114356420B (zh) | 2021-12-28 | 2021-12-28 | 指令流水线的处理方法及装置、电子装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111624988.5A CN114356420B (zh) | 2021-12-28 | 2021-12-28 | 指令流水线的处理方法及装置、电子装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114356420A true CN114356420A (zh) | 2022-04-15 |
CN114356420B CN114356420B (zh) | 2023-02-17 |
Family
ID=81103045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111624988.5A Active CN114356420B (zh) | 2021-12-28 | 2021-12-28 | 指令流水线的处理方法及装置、电子装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114356420B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115437691A (zh) * | 2022-11-09 | 2022-12-06 | 进迭时空(杭州)科技有限公司 | 一种针对risc-v矢量与浮点寄存器的物理寄存器堆分配装置 |
CN116339830A (zh) * | 2023-05-26 | 2023-06-27 | 北京开源芯片研究院 | 一种寄存器管理方法、装置、电子设备及可读存储介质 |
CN116700792A (zh) * | 2023-06-09 | 2023-09-05 | 合芯科技有限公司 | 一种指令流寄存器的映射方法、结构、存储介质及芯片 |
CN117472445A (zh) * | 2023-12-26 | 2024-01-30 | 睿思芯科(深圳)技术有限公司 | 基于发射缓冲的超标量处理系统、方法及相关设备 |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5996068A (en) * | 1997-03-26 | 1999-11-30 | Lucent Technologies Inc. | Method and apparatus for renaming registers corresponding to multiple thread identifications |
US6230262B1 (en) * | 1998-07-31 | 2001-05-08 | Advanced Micro Devices, Inc. | Processor configured to selectively free physical registers upon retirement of instructions |
CN1410886A (zh) * | 2001-09-27 | 2003-04-16 | 中国科学院计算技术研究所 | 指令流水线中实现访存精确例外的处理方法 |
US20060095738A1 (en) * | 2004-09-30 | 2006-05-04 | Haitham Akkary | Back-end renaming in a continual flow processor pipeline |
US7171541B1 (en) * | 1999-09-08 | 2007-01-30 | Hajime Seki | Register renaming system |
US20080114966A1 (en) * | 2006-10-25 | 2008-05-15 | Arm Limited | Determining register availability for register renaming |
US20110087865A1 (en) * | 2009-10-13 | 2011-04-14 | International Business Machines Corporation | Intermediate Register Mapper |
CN102750130A (zh) * | 2011-04-15 | 2012-10-24 | 国际商业机器公司 | 分配计数器以追踪寄存器映射的方法和系统 |
US20140289501A1 (en) * | 2013-03-20 | 2014-09-25 | Arm Limited | Technique for freeing renamed registers |
US20150039860A1 (en) * | 2013-07-31 | 2015-02-05 | Apple Inc. | Rda checkpoint optimization |
CN104516726A (zh) * | 2013-09-27 | 2015-04-15 | 联想(北京)有限公司 | 一种指令处理的方法及装置 |
CN105359089A (zh) * | 2013-07-12 | 2016-02-24 | 高通股份有限公司 | 用于在微处理器中进行选择性重命名的方法和设备 |
CN106155636A (zh) * | 2015-05-11 | 2016-11-23 | Arm 有限公司 | 用于寄存器重命名的可用寄存器控制 |
CN107250978A (zh) * | 2015-03-04 | 2017-10-13 | 高通股份有限公司 | 基于多核块的指令集架构中的寄存器重命名 |
CN107688544A (zh) * | 2016-12-23 | 2018-02-13 | 北京国睿中数科技股份有限公司 | 一种对寄存器别名表恢复方法 |
US20180150297A1 (en) * | 2015-06-05 | 2018-05-31 | Arm Limited | Processing pipeline with first and second processing modes having different performance or energy consumption characteristics |
CN110597556A (zh) * | 2019-09-09 | 2019-12-20 | 中国人民解放军国防科技大学 | 一种寄存器映射表检查点资源的管理方法、系统及介质 |
CN111638911A (zh) * | 2019-03-01 | 2020-09-08 | 阿里巴巴集团控股有限公司 | 一种处理器、指令执行设备及方法 |
-
2021
- 2021-12-28 CN CN202111624988.5A patent/CN114356420B/zh active Active
Patent Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5996068A (en) * | 1997-03-26 | 1999-11-30 | Lucent Technologies Inc. | Method and apparatus for renaming registers corresponding to multiple thread identifications |
US6230262B1 (en) * | 1998-07-31 | 2001-05-08 | Advanced Micro Devices, Inc. | Processor configured to selectively free physical registers upon retirement of instructions |
US7171541B1 (en) * | 1999-09-08 | 2007-01-30 | Hajime Seki | Register renaming system |
CN1410886A (zh) * | 2001-09-27 | 2003-04-16 | 中国科学院计算技术研究所 | 指令流水线中实现访存精确例外的处理方法 |
US20060095738A1 (en) * | 2004-09-30 | 2006-05-04 | Haitham Akkary | Back-end renaming in a continual flow processor pipeline |
US20080114966A1 (en) * | 2006-10-25 | 2008-05-15 | Arm Limited | Determining register availability for register renaming |
US20110087865A1 (en) * | 2009-10-13 | 2011-04-14 | International Business Machines Corporation | Intermediate Register Mapper |
CN102750130A (zh) * | 2011-04-15 | 2012-10-24 | 国际商业机器公司 | 分配计数器以追踪寄存器映射的方法和系统 |
US20140289501A1 (en) * | 2013-03-20 | 2014-09-25 | Arm Limited | Technique for freeing renamed registers |
CN105359089A (zh) * | 2013-07-12 | 2016-02-24 | 高通股份有限公司 | 用于在微处理器中进行选择性重命名的方法和设备 |
US20150039860A1 (en) * | 2013-07-31 | 2015-02-05 | Apple Inc. | Rda checkpoint optimization |
CN104516726A (zh) * | 2013-09-27 | 2015-04-15 | 联想(北京)有限公司 | 一种指令处理的方法及装置 |
CN107250978A (zh) * | 2015-03-04 | 2017-10-13 | 高通股份有限公司 | 基于多核块的指令集架构中的寄存器重命名 |
CN106155636A (zh) * | 2015-05-11 | 2016-11-23 | Arm 有限公司 | 用于寄存器重命名的可用寄存器控制 |
US20180150297A1 (en) * | 2015-06-05 | 2018-05-31 | Arm Limited | Processing pipeline with first and second processing modes having different performance or energy consumption characteristics |
CN107688544A (zh) * | 2016-12-23 | 2018-02-13 | 北京国睿中数科技股份有限公司 | 一种对寄存器别名表恢复方法 |
CN111638911A (zh) * | 2019-03-01 | 2020-09-08 | 阿里巴巴集团控股有限公司 | 一种处理器、指令执行设备及方法 |
CN110597556A (zh) * | 2019-09-09 | 2019-12-20 | 中国人民解放军国防科技大学 | 一种寄存器映射表检查点资源的管理方法、系统及介质 |
Non-Patent Citations (4)
Title |
---|
HAMID TABANI 等: "A Novel Register Renaming Technique for Out-of-Order Processors", 《2018 IEEE INTERNATIONAL SYMPOSIUM ON HIGH PERFORMANCE COMPUTER ARCHITECTURE (HPCA)》 * |
杨华等: "两级分配多可用重命名寄存器", 《计算机学报》 * |
翟召岳: "基于32位超标量处理器的保留站设计", 《大众科技》 * |
鄢传钦 等: "基于存储资源迭代重用的低成本寄存器重命名方法", 《传感器与微系统》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115437691A (zh) * | 2022-11-09 | 2022-12-06 | 进迭时空(杭州)科技有限公司 | 一种针对risc-v矢量与浮点寄存器的物理寄存器堆分配装置 |
CN116339830A (zh) * | 2023-05-26 | 2023-06-27 | 北京开源芯片研究院 | 一种寄存器管理方法、装置、电子设备及可读存储介质 |
CN116339830B (zh) * | 2023-05-26 | 2023-08-15 | 北京开源芯片研究院 | 一种寄存器管理方法、装置、电子设备及可读存储介质 |
CN116700792A (zh) * | 2023-06-09 | 2023-09-05 | 合芯科技有限公司 | 一种指令流寄存器的映射方法、结构、存储介质及芯片 |
CN116700792B (zh) * | 2023-06-09 | 2024-03-08 | 合芯科技有限公司 | 一种指令流寄存器的映射方法、结构、存储介质及芯片 |
CN117472445A (zh) * | 2023-12-26 | 2024-01-30 | 睿思芯科(深圳)技术有限公司 | 基于发射缓冲的超标量处理系统、方法及相关设备 |
CN117472445B (zh) * | 2023-12-26 | 2024-04-23 | 睿思芯科(深圳)技术有限公司 | 基于发射缓冲的超标量处理系统、方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114356420B (zh) | 2023-02-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114356420B (zh) | 指令流水线的处理方法及装置、电子装置及存储介质 | |
US10853276B2 (en) | Executing distributed memory operations using processing elements connected by distributed channels | |
US9678758B2 (en) | Coprocessor for out-of-order loads | |
US20190310845A1 (en) | Tracking stores and loads by bypassing load store units | |
JP2002525742A (ja) | 記憶からロードへの転送のための機構 | |
US10331357B2 (en) | Tracking stores and loads by bypassing load store units | |
US11068271B2 (en) | Zero cycle move using free list counts | |
US9304774B2 (en) | Processor with a coprocessor having early access to not-yet issued instructions | |
US10846092B2 (en) | Execution of micro-operations | |
CN112214241B (zh) | 一种分布式指令执行单元的方法及系统 | |
US20210389979A1 (en) | Microprocessor with functional unit having an execution queue with priority scheduling | |
CN118295710B (zh) | 多端口发射的空间回收方法、装置、设备和介质 | |
CN112559037B (zh) | 一种指令执行方法、单元、装置及系统 | |
CN113900712B (zh) | 指令处理方法、指令处理装置及存储介质 | |
JP2009524167A5 (zh) | ||
CN117289995B (zh) | 指令处理方法以及处理器 | |
JP2004038753A (ja) | プロセッサ及び命令制御方法 | |
CN114924792A (zh) | 指令译码单元、指令执行单元及相关装置和方法 | |
CN112540789B (zh) | 一种指令处理装置、处理器及其处理方法 | |
US20140201505A1 (en) | Prediction-based thread selection in a multithreading processor | |
CN118295711B (zh) | 多端口发射的空间分配方法、装置、设备和介质 | |
CN117170750B (zh) | 多源操作数指令的调度方法、装置、处理器、设备及介质 | |
CN117348934A (zh) | 数据缓存方法及数据缓存装置、处理器 | |
CN115080121A (zh) | 指令处理方法、装置、电子设备及计算机可读存储介质 | |
US20040111568A1 (en) | Distributed result system for high-performance wide-issue superscalar processor |
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 |