CN112286577B - 处理器及其操作方法 - Google Patents
处理器及其操作方法 Download PDFInfo
- Publication number
- CN112286577B CN112286577B CN202011187263.XA CN202011187263A CN112286577B CN 112286577 B CN112286577 B CN 112286577B CN 202011187263 A CN202011187263 A CN 202011187263A CN 112286577 B CN112286577 B CN 112286577B
- Authority
- CN
- China
- Prior art keywords
- current instruction
- instruction
- register
- buffer
- circuit
- 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
- 238000011017 operating method Methods 0.000 title description 5
- 238000000034 method Methods 0.000 claims abstract description 21
- 239000000872 buffer Substances 0.000 claims description 151
- 238000013461 design Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 2
- 238000012360 testing method 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/22—Microcontrol or microprogram arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明提出一种处理器及其操作方法。处理器包括多个实体缓存器以及一重命名电路。重命名电路耦接于多个实体缓存器。重命名电路被配置为接收微指令序列,并且检查微指令序列。当微指令序列中的当前指令包括移动指令时,重命名电路将被分配给当前指令的源逻辑缓存器的一第一实体缓存器分配给当前指令的目的逻辑缓存器,其中,所述第一实体缓存器为所述多个实体缓存器之一。
Description
技术领域
本发明是有关于一种处理器及其操作方法,特别是关于一种可以提高微指令序列执行效率的处理器及其操作方法。
背景技术
在一般的处理器架构中,实体缓存器的数量是有限的。特别是,移动指令需要将数据从源逻辑缓存器搬移到目的逻辑缓存器。针对这个移动指令,已知的处理器会分配两个实体缓存器作为这个移动指令的目的逻辑缓存器和源逻辑缓存器。再者,已知的处理器在执行移动指令时会在两个实体缓存器之间进行数据搬移,然而数据搬移需要耗费处理器资源与时间。如何优化实体缓存器的使用效率,以及减少对处理器资源与时间的消耗是急需解决的课题。
发明内容
本发明提供一种处理器及其操作方法,以优化实体缓存器的使用效率,并减少对处理器资源与时间的消耗。
本发明的一种处理器包括多个实体缓存器以及一重命名电路。重命名电路耦接于多个实体缓存器。重命名电路被配置为接收微指令序列,并且检查微指令序列。当微指令序列中的当前指令包括移动指令时,重命名电路将被分配给当前指令的源逻辑缓存器的一第一实体缓存器分配给当前指令的目的逻辑缓存器,其中,所述第一实体缓存器为所述多个实体缓存器之一。
本发明的一种处理器的操作方法包括:接收微指令序列;检查微指令序列;当微指令序列中的当前指令包括移动指令时,将被分配给当前指令的源逻辑缓存器的一第一实体缓存器分配给当前指令的目的逻辑缓存器,其中,所述第一实体缓存器为多个实体缓存器之一。
基于上述,在本发明的诸多实施例中,处理器及其操作方法可以检查微指令序列。藉由检查在微指令序列中的当前指令是否包括移动指令,处理器可以决定是否要将已经被分配给当前指令的源逻辑缓存器的一第一实体缓存器分配给当前指令的目的逻辑缓存器。如此一来,实体缓存器的使用效率可以被优化,并可减少对处理器资源与时间的消耗。
附图说明
图1是根据本发明的一实施例绘示一种处理器的电路方块(circuit block) 示意图。
图2是根据本发明的一实施例绘示一种处理器的操作方法的流程示意图。
图3是根据本发明的一实施例绘示一种重命名电路的电路方块示意图。
图4A与图4B是根据本发明的另一实施例绘示一种处理器的操作方法的流程示意图。
符号说明:
100:处理器
110:实体缓存器单元
111、112、11x:实体缓存器
120:重命名电路
130:指令翻译电路
140:重排序缓冲器电路
150:保留站电路
160:执行电路
S210、S230、S240、S260:步骤
310:更名表模块
320:多路复用器
330:实体缓存器分配模块
340:快速移动检查模块
fastmov:检查结果
uopinfo:微指令的相关信息
S410、S430、S431、S432、S433、S434、S435、S436、S437、S460、S470、 S475、S480、S490:步骤
具体实施方式
图1是根据本发明的一实施例绘示一种处理器100的电路方块(circuit block)示意图。请参考图1,处理器100包括实体缓存器单元110以及重命名电路120。重命名电路120耦接于实体缓存器单元110。实体缓存器单元 110具有多个实体缓存器(physicalregister),例如图1所示实体缓存器111、 112、…、11x。这些实体缓存器111~11x,例如可以是在处理器中有限储存容量的储存元件,可以用来存储数据。
处理器100还包括指令翻译(instruction translator)电路130。指令翻译电路130可以从指令高速缓存(instruction cache,未绘示)接收/取得至少一个原指令。指令翻译电路130可以将所述至少一个原指令转换(翻译)为微指令序列。微指令序列可以是由多条微指令所组成的序列,并且,每条微指令可以包括指令种类、目的操作数(例如目的逻辑缓存器,逻辑缓存器即架构缓存器,下同)以及源操作数(例如源逻辑缓存器)。以下为微指令序列的一个示例:
ADD RAX IMM; 微指令(1)
MOV RCX RAX; 微指令(2)
ADD RDX RCX; 微指令(3)
以上的示例所示微指令序列包括3条微指令,其中,微指令(1)的指令种类为ADD(加法指令),目的操作数为逻辑缓存器RAX(逻辑缓存器AX的全部位),而源操作数为立即数IMM。微指令(2)的指令种类为MOV(移动指令),目的操作数为逻辑缓存器RCX(逻辑缓存器CX的全部位),而源操作数为逻辑缓存器RAX。微指令(3)的指令种类为ADD(加法指令),目的操作数为逻辑缓存器RDX(逻辑缓存器DX的全部位),而源操作数为逻辑缓存器RCX。在本实施例中,依照微指令序列中微指令的先后顺序,当微指令(2) 是“当前指令”时,微指令(1)是微指令(2)的“前一指令”,而微指令(3)是微指令(2)的“后一指令”。需要注意的是,在本发明中,“前一指令”和“后一指令”仅用于表示指令之间的先后顺序,并不表示微指令之间一定存在相邻关系。例如,微指令(1)是微指令(2)的“前一指令”,仅仅表示微指令(1)位于微指令(2)的前面。微指令(1)和微指令(2)之间还可以包含其它微指令,也可以相邻。同理,微指令(3)是微指令(2)的“后一指令”,仅仅表示微指令(3)位于微指令 (2)的后面。微指令(2)和微指令(3)之间还可以包含其它微指令,也可以相邻。
如图1所示,处理器100还包括重排序缓冲器电路140、保留站电路150 以及执行电路160。重命名电路120从指令翻译电路130接收微指令序列,并为上述微指令序列中的每个微指令的源逻辑缓存器或目的逻辑缓存器分配实体缓存器(实体缓存器位于实体缓存器单元110中)。重命名电路120将上述微指令序列发送给重排序电路140和保留站电路150。然后,重命名电路 120更新在重命名电路120中保存的实体缓存器的状态。保留站电路150根据重命名电路120为微指令的源操作数分配的物理缓存器编号,建立微指令之间的依赖关系。等操作数准备完成后,保留站电路150将微指令序列发送给执行电路160去执行。执行电路160执行完上述微指令序列后,将结果存入实体缓存器单元110,并将执行完的微指令标记为等待退休状态。
图2是根据本发明的一实施例绘示一种处理器的操作方法的流程示意图。请参照图1与图2。在本实施例中,重命名电路120耦接至指令翻译电路130 以接收微指令序列(步骤S210)。重命名电路120还可以检查微指令序列(步骤S230)。当微指令序列中的当前指令不包括移动指令时(步骤S230的判断结果为“否”),重命名电路120可以执行步骤S240,以便进行分配操作。在步骤S240中,重命名电路120可以进行分配操作,以从实体缓存器单元110的这些个实体缓存器111~11x中选择一个实体缓存器,并且将所选的实体缓存器分配给微指令序列中的当前指令。也就是说,所选的实体缓存器将作为当前指令的目的逻辑缓存器(例如,将当前指令的目的逻辑缓存器重命名为所选的实体缓存器)。重命名电路120还可以记录分配操作的分配状态(例如包含逻辑缓存器与实体缓存器之间的映射关系,后文将详述)。
举例来说,假设上述微指令(1)是当前指令。重命名电路120可以在步骤 S230中检查微指令(1)是否包括移动指令。因为微指令(1)不是移动指令(步骤 S230的判断结果为“否”),所以重命名电路120对微指令(1)进行分配操作 (步骤S240)。在步骤S240中,重命名电路120可以从实体缓存器单元110 的这些个实体缓存器111~11x中选择一个实体缓存器(假设选择实体缓存器 111)。重命名电路120可以将所选的实体缓存器111分配给微指令(1),作为微指令(1)的目的逻辑缓存器RAX,也就是说重命名电路120可以将逻辑缓存器RAX重命名为实体缓存器111。
当微指令序列中的当前指令包括移动指令时(步骤S230的判断结果为“是”),重命名电路120可以执行步骤S260。在步骤S260中,重命名电路 120可以将已经被分配给当前指令的源逻辑缓存器的第一实体缓存器分配给当前指令(作为当前指令的目的逻辑缓存器)。其中,上述第一实体缓存器为实体缓存器单元110的多个实体缓存器111~11x中的一个。
举例来说,假设上述微指令(2)为当前指令。重命名电路120可以检查微指令(2)是否包括移动指令(步骤S230)。由于微指令(2)是移动指令(步骤S230 的判断结果为“是”),因此重命名电路120将执行步骤S260。在此假设在先前时间中,实体缓存器111(第一实体缓存器)已经被分配给微指令(1)(作为微指令(1)的目的逻辑缓存器RAX)。换句话说,实体缓存器111也已经被分配给微指令(2)的源逻辑缓存器RAX。在步骤S260中,重命名电路120可以将实体缓存器111(第一实体缓存器)分配给微指令(2)作为微指令(2)的目的逻辑缓存器RCX(也就是说,重命名电路120可以将逻辑缓存器RCX重命名为实体缓存器111)。也就是说,在此时逻辑缓存器RAX与逻辑缓存器RCX 都对应于(映射至)同一个实体缓存器111。
在另一实施例中,在步骤S230中,当重命名电路120判断出当前指令包含移动指令时,还进一步判断当前指令的源操作数和目的操作数是否都是逻辑缓存器。如果当前指令的源操作数和目的操作数都是逻辑缓存器,则步骤 230的判断结果为“是”;否则,则步骤230的判断结果为“否”。
综上所述,当当前指令包含移动指令时,当当前指令的源逻辑缓存器相同于前一指令的目的逻辑缓存器时,重命名电路120将之前分配给前一指令的目的逻辑缓存器的第一实体缓存器分配给当前指令的源逻辑缓存器。当后一指令的源逻辑缓存器相同于当前指令的目的逻辑缓存器时,重命名电路120 将之前分配给当前指令的目的逻辑缓存器的第一实体缓存器分配给后一指令的源逻辑缓存器。
图3是根据本发明的一实施例说明图1所示重命名电路120的电路方块示意图。请参考图1、图2与图3。重命名电路120包括更名表模块310、多路复用器320、实体缓存器分配模块330以及快速移动检查模块340。重命名电路120从指令翻译电路130接收微指令序列,以及微指令的相关信息 uopinfo输出给重排序缓冲器(reorder buffer,ROB)电路140、保留站 (reservation stations,RS)电路150、实体缓存器分配模块330以及快速移动检查模块340。多路复用器320的输出端与第一输入端耦接至更名表模块310。多路复用器320的第二输入端耦接至实体缓存器分配模块330。
快速移动检查模块340可以检查微指令序列的当前指令,也就是执行图 2所示步骤S230,以获得检查结果fastmov。快速移动检查模块340可以发出检查结果fastmov以控制多路复用器320。如图3所示,当步骤S230的判断结果为“否”时,检查结果fastmov为逻辑0,表示禁用快速移动信号。当步骤S230的判断结果为“是”,检查结果fastmov为逻辑1,表示启用快速移动信号。无论如何,检查结果fastmov的逻辑值的意义不应受限于图3所示示例。在其他实施例中,检查结果fastmov的逻辑值被赋予什么样的意义,其可以依据设计需求加以定义。
当所述当前指令不是移动指令(步骤S230的判断结果为“否”)检查结果fastmov为逻辑0,表示禁用快速移动信号。当检查结果为禁用快速移动信号时,多路复用器320可以提供实体缓存器分配模块330与更名表模块310 之间的连接。
实体缓存器分配模块330可以进行分配操作,以将实体缓存器单元110 的所述实体缓存器111~11x中的一个分配给微指令序列中的当前指令(作为所述当前指令的目的逻辑缓存器),并且将所述分配操作的分配状态通过多路复用器320记录在更名表模块310中。实体缓存器分配模块330所进行的所述分配操作可以参照图2所示步骤S240的相关说明。
举例来说,假设重命名电路120所接收的微指令序列包括前面所述微指令(1)、微指令(2)与微指令(3),而且微指令(1)是当前指令。在前述的步骤S240 中,重命名电路120的实体缓存器分配模块330可以对微指令(1)(当前指令) 进行分配操作。在此假设,实体缓存器分配模块330在步骤S240中将实体缓存器111分配给微指令(1)的目的逻辑缓存器RAX,也就是说实体缓存器分配模块330可以将逻辑缓存器RAX重命名为实体缓存器111。实体缓存器分配模块330在步骤S240中可以将所述分配操作的分配状态(分配结果)通过多路复用器320记录在(更新至)更名表模块310中。
本实施例并不限制更名表模块310的实施方式与数据结构。举例来说,在一些实施例中,更名表模块310包括下述表1所示的字段。实体缓存器分配模块330可以将分配操作的分配状态(例如包含逻辑缓存器RAX与实体缓存器111之间的映射关系)通过多路复用器320记录在更名表模块310中,如表1所示。
表1:更名表模块310的一个示例
逻辑缓存器 | 实体缓存器 |
AX | 111 |
… | … |
快速移动检查模块340可以检查微指令序列的当前指令,以发出检查结果fastmov去控制多路复用器320。当所述当前指令包括移动指令(步骤S230 的判断结果为“是”),检查结果fastmov为启用快速移动信号。由于检查结果 fastmov为启用快速移动信号,多路复用器320截止实体缓存器分配模块330 与更名表模块310之间的连接。依照设计需求,在一些实施例中,快速移动检查模块340还可以发出检查结果fastmov去控制实体缓存器分配模块330。当检查结果fastmov为启用快速移动信号时,实体缓存器分配模块330可以被禁能(disable)。当检查结果fastmov为禁用快速移动信号时,实体缓存器分配模块330可以被致能(enable)。
当检查结果fastmov为启用快速移动信号时,重命名电路120将执行步骤S260。在步骤S260中,重命名电路120可以依据更名表模块310中的记录将被分配给当前指令的源逻辑缓存器的第一实体缓存器分配给当前指令的目的逻辑缓存器,以及将当前指令的目的逻辑缓存器与所述第一实体缓存器之间的对应关系记录在更名表模块310中。具体地,多路复用器120根据上述启用快速移动信号选择第一输入端,从更名表模块310中读出之前被分配给当前指令的源逻辑缓存器的第一实体缓存器分配给当前指令的目的逻辑缓存器,并将当前指令的目的逻辑缓存器与第一实体缓存器之间的对应关系通过输出端记录在更名表模块310中。
举例来说,假设前面所述微指令(2)是当前指令。在前述的步骤S260中,重命名电路120的多路复用器320可以依据更名表模块210中的记录(例如上述表1所示)将被分配给微指令(2)(当前指令)的源逻辑缓存器RAX的实体缓存器111(第一实体缓存器)分配给微指令(2)的目的逻辑缓存器RCX,也就是说逻辑缓存器RCX被重命名为实体缓存器111。然后,重命名电路120 可以将微指令(2)的目的逻辑缓存器RCX与所述实体缓存器111之间的对应关系记录在更名表模块310中,如表2所示。此时,逻辑缓存器RAX与逻辑缓存器RCX都对应于(映射至)实体缓存器111。
表2:更名表模块310的另一个示例
逻辑缓存器 | 实体缓存器 |
AX | 111 |
CX | 111 |
… | … |
如图3所示,重命名电路120还将检查结果fastmov提供给重排序缓冲器电路140。当检查结果fastmov为启用快速移动信号时,重排序缓冲器电路 140可以将所述当前指令标记为等待退休(retire)状态。举例来说,假设上面所述微指令(2)为当前指令。由于检查结果fastmov为启用快速移动信号,重排序缓冲器电路140将微指令(2)标记为等待退休状态。也就是说,当检查结果fastmov为启用快速移动信号时,重排序缓冲器电路140可以认为微指令 (2)已经执行完成,而使微指令(2)进入等待退休(retire)状态。本实施例并不限制重排序缓冲器电路140的实施方式与具体功能。举例来说,依照设计需求,重排序缓冲器电路140可以是已知的重排序缓冲器或是其他重排序缓冲电路。
如图3所示,重命名电路120还将检查结果fastmov提供给保留站电路 150。在重命名电路120为当前指令分配完实体缓存器后,会将当前指令与检查结果fastmov发送给保留站电路150。然后,保留站电路150可以将当前指令发送到执行电路160(如图1所示),以执行当前指令。在当前指令执行完毕后,重排序缓冲器电路140会将当前指令标记为等待退休状态。也就是说,执行完毕的当前指令进入等待退休(retire)状态。当检查结果fastmov为启用快速移动信号时,保留站电路150将忽略(不接收)所述当前指令。因而,执行电路160也将不执行所述当前指令。
举例来说,假设上面所述微指令(2)为当前指令。当检查结果fastmov为启用快速移动信号时,保留站电路150将忽略(或不接收)微指令(2)。因此,执行电路160也将不执行微指令(2)。本实施例并不限制保留站电路150的实施方式与具体功能。举例来说,依照设计需求,保留站电路150可以是已知的保留站电路或是其他保留站电路,而执行电路160可以是已知的微指令执行电路或是其他微指令执行电路。
在上面的示例中,指令(1)与指令(2)之间以及指令(2)与指令(3) 之间不包含其它指令。但是本发明不限于此。在另一实施例中,当其它指令的源逻辑缓存器或目的逻辑缓存器与指令(1)和指令(2)的源逻辑缓存器或目的逻辑缓存器不同时,指令(2)与指令(3)之间可以包含其它指令。当其它指令的源逻辑缓存器或目的逻辑缓存器与指令(2)和指令(3)的源逻辑缓存器或目的逻辑缓存器不同时,指令(2)与指令(3)之间也可以包含其它指令。
在另一实施例中,微指令所使用的缓存器位可能是实体缓存器的部分位。一个实体缓存器的所有位可以被分为一高位部分以及一低位部分。例如,在一些实施例中,实体缓存器的数据位数量可以是64位,所述高位部分可以是所述64位中的高32位(位63~32),而所述低位部分可以是所述64位中的低32位(位31~0)。以下为微指令序列的另一个示例:
ADD RAX IMM; 微指令(4)
MOV ECX EAX; 微指令(5)
ADD RDX RCX; 微指令(6)
以上的示例所示微指令序列包括3条微指令,其中,微指令(4)的指令种类为ADD(加法指令),目的操作数为逻辑缓存器RAX(逻辑缓存器AX的全部64位),而源操作数为立即数IMM。微指令(5)的指令种类为MOV(移动指令),目的操作数为逻辑缓存器ECX(逻辑缓存器CX的低32位),而源操作数为逻辑缓存器EAX(逻辑缓存器AX的低32位)。微指令(6)的指令种类为ADD(加法指令),目的操作数为逻辑缓存器RDX(逻辑缓存器DX的全部64位),而源操作数为逻辑缓存器RCX(逻辑缓存器CX的全部64位)。
图4A与图4B是根据本发明的另一实施例绘示一种处理器的操作方法的流程示意图。图4A所示步骤S410、S430与S460可以参照图2所示步骤 S210、S230、与S260的相关说明,在此不再赘述。下面将参照图1、图3、图4A与图4B,对步骤S470、S475、S480、S490、S431、S432、S433、S434、 S435、S436及S437进行描述。在执行完步骤S460后,重命名电路120还检查当前指令的源逻辑缓存器的第一使用位数量与当前指令的目的逻辑缓存器的第二使用位数量(步骤S470)。当第一使用位数量与第二使用位数量等于实体缓存器的数据位数量时(步骤S470的判断结果为“否”),重命名电路120 可以将当前指令的源逻辑缓存器所对应的实体缓存器的清除位标记置为第二数值,并将其存入更名表模块310中(步骤S475)。例如,重命名电路120可以将当前指令的源逻辑缓存器所对应的实体缓存器的清除位标记置为第二数值,以及将这个清除位标记(第二数值)更新至更名表模块310中。在完成步骤S475后,重排序缓冲器电路140基于重命名电路120的通知(检查结果 fastmov为启用快速移动信号),将当前指令标记为等待退休状态(步骤S490)。在一实施例中,上述第二数值为0,下同。
当所述第一使用位数量与所述第二使用位数量中至少一个小于实体缓存器的数据位数量时(步骤S470的判断结果为“是”),重命名电路120可以将当前指令的目的逻辑缓存器所对应的所述实体缓存器的清除位标记置为第一数值,并将其存入更名表模块中(步骤S480),以通知执行电路160去清除所述实体缓存器的高位部分。例如,重命名电路120可以将当前指令的目的逻辑缓存器所对应的所述实体缓存器的清除位标记置为第一数值,以及将当前指令的目的逻辑缓存器所对应的所述实体缓存器的清除位标记(第一数值) 更新至更名表模块310中。在执行完步骤S480后,重排序缓冲器电路140基于重命名电路120的通知(检查结果fastmov为启用快速移动信号),将当前指令标记为等待退休状态(步骤S490)。在一实施例中,上述第一数值为1,下同。
举例来说,假设微指令序列包括前面所述微指令(4)、微指令(5)与微指令 (6)。当微指令(4)为当前指令时,假设重命名电路120将逻辑缓存器RAX重命名为实体缓存器111,并将分配操作的分配状态记录在更名表模块310中 (清除位标记值为0),如下述表3所示。
表3:更名表模块310的又一个示例
逻辑缓存器 | 实体缓存器 | 清除位标记 |
AX | 111 | 0 |
… | … | … |
假设微指令(5)为当前指令。由于步骤S430的判断结果为“是”,因此重命名电路120可以将已经被分配给微指令(5)(当前指令)的源逻辑缓存器EAX 的实体缓存器111分配给微指令(5)的目的逻辑缓存器ECX,也就是说逻辑缓存器ECX被重命名为实体缓存器111(步骤S460)。然后,多路复用器320 可以将微指令(5)的目的逻辑缓存器RCX与所述实体缓存器111之间的对应关系记录在更名表模块310中,如表4所示。
表4:更名表模块310的又一个示例
逻辑缓存器 | 实体缓存器 | 清除位标记 |
AX | 111 | 0 |
CX | 111 | 1 |
… | … | … |
因为实体缓存器111的数据位数量为64位,而逻辑缓存器EAX以及(或是)逻辑缓存器ECX的使用位数量为32位,因此微指令(5)(当前指令)只使用了实体缓存器111的低位部分(第31位~第0位),而实体缓存器111 的高位部分(位63~32)的内容为无效数据。重命名电路120在步骤S470还检查微指令(5)的源逻辑缓存器EAX的第一使用位数量(在此例中为32位) 与微指令(5)的目的逻辑缓存器ECX的第二使用位数量(在此例中为32位)。由于步骤S470的判断结果为“是”,所以重命名电路120可以将微指令(5)的目的逻辑缓存器EAX所对应的实体缓存器111的清除位标记置为第一数值,以及将微指令(5)的源逻辑缓存器EAX所对应的实体缓存器111的清除位标记值(第一数值)更新至更名表模块310中,如上述表4所示。藉由被设置为第一数值的清除位标记,重命名电路120可以通知执行电路160去清除实体缓存器111的高位部分(第63位~第32位)。
当所述当前指令不包括移动指令时(步骤S430的判断结果为“否”),重命名电路120可以读取更名表模块310,以获知当前指令的源逻辑缓存器所对应的第一实体缓存器以及所述第一实体缓存器的清除位标记(步骤S431)。重命名电路120在步骤S431还可以将关于当前指令、第一实体缓存器与清除位标记信息提供给保留站电路150。
此外,重命名电路120在步骤S431还可以进行分配操作,以从实体缓存器单元110的这些个实体缓存器111~11x中选择尚未被使用的一个第二实体缓存器,并且将所选的第二实体缓存器分配给当前指令作为目的逻辑缓存器。重命名电路120在步骤S431还可以将关于所述第二实体缓存器的信息提供给保留站电路150。
举例来说,假设微指令(6)为当前指令。由于微指令(6)不包括移动指令(步骤S430的判断结果为“否”),重命名电路120可以读取更名表模块310以获知微指令(6)的源逻辑缓存器RCX所对应的第一实体缓存器(例如实体缓存器111),以及实体缓存器111的清除位标记。此外,重命名电路120还可以将实体缓存器单元110的多个实体缓存器111~11x中的实体缓存器112分配给微指令(6)(当前指令)作为目的逻辑缓存器RDX。重命名电路120还可以将关于微指令(6)、实体缓存器111、实体缓存器112与清除位标记信息提供给保留站电路150。
在执行完步骤S431之后,保留站电路150可以将关于当前指令、第一实体缓存器、第二实体缓存器与清除位标记信息发送给执行电路160(步骤 S432)。举例来说,保留站电路150可以将关于微指令(6)(当前指令)、实体缓存器111(第一实体缓存器)、实体缓存器112(第二实体缓存器)与清除位标记信息发送给执行电路160。
在执行完步骤S432之后,执行电路160可以判断当前指令的所述源逻辑缓存器所对应的第一实体缓存器的清除位标记是否为第一数值(步骤S433)。当所述当前指令的所述第一实体缓存器的清除位标记为第一数值时(步骤 S433的判断结果为“是”),执行电路160可以清除当前指令的源逻辑缓存器所对应的所述第一实体缓存器的高位部分,然后执行所述当前指令(步骤 S434)。在执行完步骤S434之后,执行电路160可以将执行结果写入当前指令的目的逻辑缓存器所对应的所述实体缓存器(步骤S435)。在执行完步骤 S435之后,重排序缓冲器电路140可以将当前指令标记为等待退休状态(步骤S436)。
当所述当前指令的源逻辑缓存器所对应的所述第一实体缓存器的所述清除位标记为第二数值时(步骤S433的判断结果为“否”),执行电路160可以执行所述当前指令(步骤S437)。在执行完步骤S437之后,执行电路160可以将执行结果写入当前指令的目的逻辑缓存器所对应的所述实体缓存器(步骤S435)。在执行完步骤S435之后,重排序缓冲器电路140可以将当前指令标记为等待退休状态(步骤S436)。
举例来说,假设微指令(6)为当前指令。当微指令(6)的源逻辑缓存器RCX 所对应的第一实体缓存器(例如实体缓存器111)的清除位标记为第一数值时 (步骤S433的判断结果为“是”),执行电路160可以清除微指令(6)的源逻辑缓存器RCX所对应的实体缓存器111的高位部分,然后执行微指令(6)。当微指令(6)的源逻辑缓存器RCX所对应的实体缓存器111的清除位标记为第二数值时(步骤S433的判断结果为“否”),执行电路160可以直接执行当前指令(步骤S437)。
在上面的示例中,指令(4)与指令(5)之间以及指令(5)与指令(6) 之间不包含其它指令。但是本发明不限于此。在另一实施例中,当其它指令的源逻辑缓存器或目的逻辑缓存器与指令(4)和指令(5)的源逻辑缓存器或目的逻辑缓存器不同时,指令(4)与指令(5)之间可以包含其它指令。当其它指令的源逻辑缓存器或目的逻辑缓存器与指令(5)和指令(6)的源逻辑缓存器或目的逻辑缓存器不同时,指令(5)与指令(6)之间也可以包含其它指令。
在另一实施例中,当当前指令不包括移动指令时,在当前指令被执行完之后,并且发现当前指令需要被回放或重发送时,重排序缓冲器电路140将当前指令、分配给当前指令的源逻辑缓存器的第一实体缓存器与第一实体缓存器的清除位标记信息再次提供给保留站电路150,以重新执行上述当前指令。
需要注意的是,在本发明中,缓存器(register)指的就是寄存器。所以,实体缓存器(physical register)指的就是实体寄存器,逻辑缓存器指的就是逻辑寄存器,架构缓存器指的就是架构寄存器,等等。
综上所述,本发明的处理器及其操作方法可以检查微指令序列。通过检查当前指令是否包括移动指令,处理器可以决定是否要将已经被分配给当前指令的一第一实体缓存器分配给当前指令的目的逻辑缓存器。如此一来,实体缓存器的使用效率可以被优化,并可减少对处理器资源与时间的消耗。此外,还通过检查当前指令的源逻辑缓存器的第一使用位数量、当前指令的目的逻辑缓存器的第二使用位数量、以及所述实体缓存器的数据位数量,处理器可以决定是否要清除所述实体缓存器的高位部分,以避免可能发生的数据错误。
Claims (26)
1.一种处理器,包括:
多个实体缓存器;以及
一重命名电路,耦接于所述多个实体缓存器,被配置为接收一微指令序列,并且检查所述微指令序列,其中
所述微指令序列包括一前一指令、一当前指令和一后一指令,
当所述当前指令包括一移动指令且所述当前指令的源逻辑缓存器相同于所述前一指令的目的逻辑缓存器时,所述重命名电路将被分配给所述前一指令的所述目的逻辑缓存器的第一实体缓存器分配给所述当前指令的源逻辑缓存器;
当所述当前指令包括一移动指令且所述后一指令的源逻辑缓存器相同于所述当前指令的所述目的逻辑缓存器时,所述重命名电路将被分配给所述当前指令的所述目的逻辑缓存器的所述第一实体缓存器分配给所述后一指令的源逻辑缓存器,其中,所述第一实体缓存器为所述多个实体缓存器之一。
2.如权利要求1所述的处理器,其中所述重命名电路包括:
一更名表模块;以及
一快速移动检查模块,被配置为检查所述微指令序列的所述当前指令,当所述当前指令包括所述移动指令时,所述重命名电路依据所述更名表模块中的记录,将被分配给所述当前指令的所述源逻辑缓存器的所述第一实体缓存器分配给所述当前指令的所述目的逻辑缓存器,并且将所述当前指令的所述目的逻辑缓存器与所述第一实体缓存器之间的对应关系记录在所述更名表模块中。
3.如权利要求2所述的处理器,其中所述重命名电路还包括:
一多路复用器,具有一输出端与一第一输入端,所述多路复用器通过所述输出端与所述第一输入端耦接至所述更名表模块;以及
一实体缓存器分配模块,耦接至所述多路复用器的一第二输入端,被配置为当所述当前指令不包括所述移动指令时,进行一分配操作以将一第二实体缓存器分配给所述当前指令的所述目的逻辑缓存器,其中所述第二实体缓存器为所述多个实体缓存器其中之一,
其中当所述当前指令包括所述移动指令时,所述快速移动检查模块向所述多路复用器发出一启用快速移动信号,所述多路复用器根据所述启用快速移动信号选择所述第一输入端,从所述更名表模块中读出之前被分配给所述当前指令的所述源逻辑缓存器的所述第一实体缓存器分配给所述当前指令的所述目的逻辑缓存器,并将所述当前指令的所述目的逻辑缓存器与所述第一实体缓存器之间的对应关系通过所述输出端记录在所述更名表模块中。
4.如权利要求1所述的处理器,还包括:
一重排序缓冲器电路,耦接至所述重命名电路,当所述当前指令包括所述移动指令时,所述重命名电路生成一启用快速移动信号,并将所述当前指令与所述启用快速移动信号发送给所述重排序缓冲器电路;所述重排序缓冲器电路存储所述当前指令,并根据所述启用快速移动信号将所述当前指令标记为等待退休状态。
5.如权利要求1所述的处理器,还包括:
一保留站电路,耦接至所述重命名电路,当所述当前指令包括所述移动指令时,所述重命名电路生成一启用快速移动信号,并将所述当前指令与所述启用快速移动信号发送给所述保留站电路;所述保留站电路根据所述启用快速移动信号忽略所述当前指令。
6.如权利要求1所述的处理器,其中所述第一实体缓存器的所有位至少被分为一高位部分以及一低位部分,
所述重命名电路还检查所述当前指令的所述源逻辑缓存器的一第一使用位数量与所述当前指令的所述目的逻辑缓存器的一第二使用位数量,以及
当所述第一使用位数量与所述第二使用位数量其中至少一个小于所述第一实体缓存器的一数据位数量时,并且当所述当前指令包括所述移动指令时,所述重命名电路将所述源逻辑缓存器所对应的所述第一实体缓存器的一清除位标记置为第一数值,并将所述清除位标记存入一更名表模块中,以通知一执行电路去清除所述第一实体缓存器的所述高位部分。
7.如权利要求6所述的处理器,
其中当所述第一使用位数量与所述第二使用位数量等于所述数据位数量时,所述重命名电路将所述清除位标记置为第二数值,并将其存入所述更名表模块中。
8.如权利要求1所述的处理器,其中当所述当前指令不包括所述移动指令时,所述重命名电路读取一更名表模块以获知所述当前指令的所述源逻辑缓存器所对应的所述第一实体缓存器以及所述第一实体缓存器的一清除位标记,以及将关于所述当前指令、所述第一实体缓存器与所述清除位标记信息提供给所述处理器的一保留站电路。
9.如权利要求8所述的处理器,其中所述重命名电路进行一分配操作以将一第二实体缓存器分配给所述当前指令的所述目的逻辑缓存器,并且所述重命名电路还将关于所述第二实体缓存器的信息提供给所述保留站电路,其中,所述第二实体缓存器为所述多个实体缓存器之一。
10.如权利要求8所述的处理器,其中所述保留站电路将关于所述当前指令、所述第一实体缓存器与所述清除位标记信息发送给所述处理器的一执行电路。
11.如权利要求10所述的处理器,其中
当所述当前指令的所述第一实体缓存器的所述清除位标记为第一数值时,所述执行电路清除所述当前指令的所述源逻辑缓存器所对应的所述第一实体缓存器的一高位部分,然后执行所述当前指令;以及
当所述当前指令的所述第一实体缓存器的所述清除位标记为第二数值时,所述执行电路执行所述当前指令。
12.如权利要求8所述的处理器,还包括:
一重排序缓冲器电路,耦接至所述重命名电路,其中当所述当前指令不包括所述移动指令时,在所述当前指令被执行完之后,并且发现该当前指令需要被回放或重发送时,所述重排序缓冲器电路将所述当前指令、所述第一实体缓存器与所述清除位标记信息再次提供给所述保留站电路。
13.如权利要求1所述的处理器,其中,当所述当前指令包括所述移动指令时,所述重命名电路检查所述当前指令的源操作数和目的操作数是否都是逻辑缓存器;以及
当所述当前指令包括所述移动指令,并且所述当前指令的所述源操作数和所述目的操作数都是逻辑缓存器时,所述重命名电路将被分配给所述当前指令的所述源逻辑缓存器的所述第一实体缓存器分配给所述当前指令的所述目的逻辑缓存器。
14.一种处理器的操作方法,包括:
接收一微指令序列;
检查所述微指令序列;其中
所述微指令序列包括一前一指令、一当前指令和一后一指令,
当所述当前指令包括一移动指令且所述当前指令的源逻辑缓存器相同于所述前一指令的目的逻辑缓存器时,将被分配给所述前一指令的所述目的逻辑缓存器的第一实体缓存器分配给所述当前指令的源逻辑缓存器;
当所述当前指令包括一移动指令且所述后一指令的源逻辑缓存器相同于所述当前指令的所述目的逻辑缓存器时,将被分配给所述当前指令的所述目的逻辑缓存器的所述第一实体缓存器分配给所述后一指令的源逻辑缓存器,其中,所述第一实体缓存器为多个实体缓存器之一。
15.如权利要求14所述的操作方法,还包括:
检查所述微指令序列的所述当前指令;
当所述当前指令包括所述移动指令时,依据一更名表模块中的记录,将被分配给所述当前指令的所述源逻辑缓存器的所述第一实体缓存器分配给所述当前指令的所述目的逻辑缓存器;以及
将所述当前指令的所述目的逻辑缓存器与所述第一实体缓存器之间的对应关系记录在所述更名表模块中。
16.如权利要求15所述的操作方法,还包括:
当所述当前指令不包括所述移动指令时,进行一分配操作以将一第二实体缓存器分配给所述当前指令的所述目的逻辑缓存器,其中所述第二实体缓存器为所述多个实体缓存器其中之一,
其中,当所述当前指令包括所述移动指令时,向一多路复用器发出一启用快速移动信号,所述多路复用器根据所述启用快速移动信号选择所述多路复用器的一第一输入端,从所述更名表模块中读出之前被分配给所述当前指令的所述源逻辑缓存器的所述第一实体缓存器分配给所述当前指令的所述目的逻辑缓存器,并将所述当前指令的所述目的逻辑缓存器与所述第一实体缓存器之间的对应关系通过所述多路复用器的一输出端记录在所述更名表模块中。
17.如权利要求14所述的操作方法,还包括:
当所述当前指令包括所述移动指令时,生成一启用快速移动信号,并将所述当前指令与所述启用快速移动信号发送给一重排序缓冲器电路;所述重排序缓冲器电路存储所述当前指令,并根据所述启用快速移动信号将所述当前指令标记为等待退休状态。
18.如权利要求14所述的操作方法,还包括:
当所述当前指令包括所述移动指令时,生成一启用快速移动信号,并将所述当前指令与所述启用快速移动信号发送给一保留站电路;所述保留站电路根据所述启用快速移动信号忽略所述当前指令。
19.如权利要求14所述的操作方法,还包括:
将所述第一实体缓存器的所有位至少分为一高位部分以及一低位部分;
检查所述当前指令的所述源逻辑缓存器的一第一使用位数量与所述当前指令的所述目的逻辑缓存器的一第二使用位数量;以及
当所述第一使用位数量与所述第二使用位数量其中至少一个小于所述第一实体缓存器的一数据位数量时,并且当所述当前指令包括所述移动指令时,将所述源逻辑缓存器所对应的所述第一实体缓存器的一清除位标记置为第一数值,并将所述清除位标记存入一更名表模块中,以通知一执行电路去清除所述第一实体缓存器的所述高位部分。
20.如权利要求19所述的操作方法,还包括:
当所述第一使用位数量与所述第二使用位数量等于所述数据位数量时,将所述清除位标记置为第二数值,并将其存入所述更名表模块中。
21.如权利要求14所述的操作方法,还包括:
当所述当前指令不包括所述移动指令时,读取一更名表模块,以获知所述当前指令的所述源逻辑缓存所对应的所述第一实体缓存器以及所述第一实体缓存器的一清除位标记,以及将关于所述当前指令、所述第一实体缓存器与所述清除位标记信息提供给一保留站电路。
22.如权利要求21所述的操作方法,还包括:
进行一分配操作以将一第二实体缓存器分配给所述当前指令的所述目的逻辑缓存器,其中,所述第二实体缓存器为所述多个实体缓存器之一;以及
将关于所述第二实体缓存器的信息提供给所述保留站电路。
23.如权利要求21所述的操作方法,还包括:
将关于所述当前指令、所述第一实体缓存器与所述清除位标记信息发送给一执行电路。
24.如权利要求23所述的操作方法,还包括:
当所述当前指令的所述第一实体缓存器的所述清除位标记为第一数值时,由所述执行电路清除所述当前指令的所述源逻辑缓存器所对应的所述第一实体缓存器的一高位部分,然后执行所述当前指令;以及
当所述当前指令的所述第一实体缓存器的所述清除位标记为第二数值时,由所述执行电路执行所述当前指令。
25.如权利要求21所述的操作方法,还包括:
当所述当前指令不包括所述移动指令时,在所述当前指令被执行完之后,并且发现该当前指令需要被回放或重发送时,将所述当前指令、所述第一实体缓存器与所述清除位标记信息再次提供给所述保留站电路。
26.如权利要求14所述的操作方法,还包括:
当所述当前指令包括所述移动指令时,检查所述当前指令的源操作数和目的操作数是否都是逻辑缓存器;以及
当所述当前指令包括所述移动指令,并且所述当前指令的所述源操作数和所述目的操作数都是逻辑缓存器时,将被分配给所述当前指令的所述源逻辑缓存器的所述第一实体缓存器分配给所述当前指令的所述目的逻辑缓存器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011187263.XA CN112286577B (zh) | 2020-10-30 | 2020-10-30 | 处理器及其操作方法 |
US17/515,538 US20220137966A1 (en) | 2020-10-30 | 2021-10-31 | Processor and operating method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011187263.XA CN112286577B (zh) | 2020-10-30 | 2020-10-30 | 处理器及其操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112286577A CN112286577A (zh) | 2021-01-29 |
CN112286577B true CN112286577B (zh) | 2022-12-06 |
Family
ID=74353761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011187263.XA Active CN112286577B (zh) | 2020-10-30 | 2020-10-30 | 处理器及其操作方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220137966A1 (zh) |
CN (1) | CN112286577B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220237008A1 (en) * | 2021-01-22 | 2022-07-28 | Seagate Technology Llc | Embedded computation instruction set optimization |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6101578A (en) * | 1994-09-30 | 2000-08-08 | Intel Corporation | Method and apparatus for providing test mode access to an instruction cache and microcode ROM |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6594754B1 (en) * | 1999-07-07 | 2003-07-15 | Intel Corporation | Mapping destination logical register to physical register storing immediate or renamed source register of move instruction and using mapping counters |
US7165168B2 (en) * | 2003-01-14 | 2007-01-16 | Ip-First, Llc | Microprocessor with branch target address cache update queue |
US7089371B2 (en) * | 2002-02-12 | 2006-08-08 | Ip-First, Llc | Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory |
US7111125B2 (en) * | 2002-04-02 | 2006-09-19 | Ip-First, Llc | Apparatus and method for renaming a data block within a cache |
TWI222015B (en) * | 2002-05-09 | 2004-10-11 | Ip First Llc | Mechanism for extending the number of registers in a microprocessor |
US7188215B2 (en) * | 2003-06-19 | 2007-03-06 | Ip-First, Llc | Apparatus and method for renaming a cache line |
US8069336B2 (en) * | 2003-12-03 | 2011-11-29 | Globalfoundries Inc. | Transitioning from instruction cache to trace cache on label boundaries |
US20120005459A1 (en) * | 2010-12-28 | 2012-01-05 | Advanced Micro Devices, Inc. | Processor having increased performance and energy saving via move elimination |
US9454371B2 (en) * | 2011-12-30 | 2016-09-27 | Intel Corporation | Micro-architecture for eliminating MOV operations |
US9575754B2 (en) * | 2012-04-16 | 2017-02-21 | Apple Inc. | Zero cycle move |
US20140129804A1 (en) * | 2012-11-02 | 2014-05-08 | John M. King | Tracking and reclaiming physical registers |
US10417001B2 (en) * | 2012-12-27 | 2019-09-17 | Intel Corporation | Physical register table for eliminating move instructions |
US9292288B2 (en) * | 2013-04-11 | 2016-03-22 | Intel Corporation | Systems and methods for flag tracking in move elimination operations |
CN104615409B (zh) * | 2014-05-27 | 2017-07-07 | 上海兆芯集成电路有限公司 | 跳越mov指令的处理器和由该处理器使用的方法 |
EP3055768B1 (en) * | 2014-12-14 | 2018-10-31 | VIA Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
US11429393B2 (en) * | 2015-11-11 | 2022-08-30 | Arm Limited | Apparatus and method for supporting out-of-order program execution of instructions |
US10528355B2 (en) * | 2015-12-24 | 2020-01-07 | Arm Limited | Handling move instructions via register renaming or writing to a different physical register using control flags |
US11451241B2 (en) * | 2017-12-14 | 2022-09-20 | Advanced Micro Devices, Inc. | Setting values of portions of registers based on bit values |
CN108279928B (zh) * | 2018-01-30 | 2021-03-19 | 上海兆芯集成电路有限公司 | 微指令调度方法及使用此方法的装置 |
CN111221575A (zh) * | 2019-12-30 | 2020-06-02 | 核芯互联科技(青岛)有限公司 | 一种乱序高性能处理器的寄存器重命名方法及*** |
US11294683B2 (en) * | 2020-03-30 | 2022-04-05 | SiFive, Inc. | Duplicate detection for register renaming |
-
2020
- 2020-10-30 CN CN202011187263.XA patent/CN112286577B/zh active Active
-
2021
- 2021-10-31 US US17/515,538 patent/US20220137966A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6101578A (en) * | 1994-09-30 | 2000-08-08 | Intel Corporation | Method and apparatus for providing test mode access to an instruction cache and microcode ROM |
Also Published As
Publication number | Publication date |
---|---|
US20220137966A1 (en) | 2022-05-05 |
CN112286577A (zh) | 2021-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3868470B2 (ja) | 単一のレジスタ・ファイルを使用して浮動小数点命令およびパック・データ命令を実行する方法および装置 | |
JP5175466B2 (ja) | 情報処理システムにおいて命令を発行キューから発行するための方法及び装置 | |
KR100286416B1 (ko) | 여러운영체제기술에서볼수없는상이한데이터형연산을수행하는방법 | |
KR101502682B1 (ko) | 레지스터 초기화 연산들을 최적화하기 | |
KR0122529B1 (ko) | 슈퍼스칼라 프로세서 시스템에서 복수의 명령어를 단일 사이클 동안 디스패치하기 위한 방법 및 장치 | |
US8645669B2 (en) | Cracking destructively overlapping operands in variable length instructions | |
EP0849665A2 (en) | System and method for register renaming | |
US20060190700A1 (en) | Handling permanent and transient errors using a SIMD unit | |
TWI411957B (zh) | 亂序執行微處理器、微處理器及其相關之提升效能之方法及執行方法 | |
KR100777772B1 (ko) | 연산 처리 장치, 정보 처리 장치 및 레지스터 파일의 제어방법 | |
EP0433864B1 (en) | Minimizing hardware pipeline breaks using software scheduling techniques during compilation | |
US20200278867A1 (en) | Device, processor, and method for splitting instructions and register renaming | |
CN112286577B (zh) | 处理器及其操作方法 | |
CN102890624B (zh) | 用于管理无序毫码控制操作的方法和*** | |
CN115640047A (zh) | 指令操作方法及装置、电子装置及存储介质 | |
CN101539852A (zh) | 处理器和信息处理设备 | |
KR100317769B1 (ko) | 압축 기억된 십진수 나눗셈에 대한 전문 밀리코드 명령 | |
US9218171B2 (en) | Method, program, and system for code optimization | |
CN100538648C (zh) | 基于专用处理单元的使用动态修改***参数 | |
KR19990082749A (ko) | 편집기능을위한전문밀리코드지시 | |
US20200183684A1 (en) | Arithmetic processing apparatus and method of controlling arithmetic processing apparatus | |
KR19990082748A (ko) | 번역및테스트를위한전문밀리코드명령 | |
KR100322725B1 (ko) | 전문 갱신 및 분기 명령을 이용하는 밀리코드 플래그 | |
US11321094B2 (en) | Non-transitory computer-readable medium, assembly instruction conversion method and information processing apparatus | |
CN116737241B (zh) | 一种指令融合方法、处理器核、处理器和计算机*** |
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 | ||
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. |