CN111638911A - 一种处理器、指令执行设备及方法 - Google Patents
一种处理器、指令执行设备及方法 Download PDFInfo
- Publication number
- CN111638911A CN111638911A CN201910156496.4A CN201910156496A CN111638911A CN 111638911 A CN111638911 A CN 111638911A CN 201910156496 A CN201910156496 A CN 201910156496A CN 111638911 A CN111638911 A CN 111638911A
- Authority
- CN
- China
- Prior art keywords
- register
- instruction
- split
- instructions
- physical
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000013507 mapping Methods 0.000 claims description 13
- 230000005540 biological transmission Effects 0.000 claims description 7
- 239000003550 marker Substances 0.000 claims 2
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000011664 signaling Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000011109 contamination Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/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/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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
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
技术领域
本发明涉及处理器领域,尤其涉及处理器中的指令执行领域。
背景技术
对于处理器而言,一般事先已经定义了该处理器可以支持的指令集,处理器可以执行以该指令集定义的各种指令。随着处理器性能日益强大和应用领域日益广泛。指令集所包含的指令也越来复杂。一些复杂指令需要拆分为多条指令才能在处理器中执行。一些拆分后的指令之间具有相关性,即一些后续的拆分后指令依赖于一些在前的拆分后指令的执行结果。
在现有的指令拆分方案中,一种方式是在拆分后的指令之间建立显示相关性,即让两条指令之间使用相同的架构寄存器来构建显示相关性。在这种方案中,由于指令执行期间的寄存器重命名机制,而会导致对架构寄存器的污染。
在另一种方式中,在处理器中增加专门用于保存拆分后指令中间结果的架构寄存器,这种方式虽然可以避免对架构寄存器造成污染,但是会增加硬件资源。
在还有一种方式中,通过在执行单元之间构建数据通路来传递中间结果。而拆分后的各条指令指令分别进入不同的执行单元,并通过在不同执行单元之间构建的数据通路来传递中间结果。在这种方式中,如果当拆分后指令间的相关性非常复杂时,会导致控制逻辑十分复杂,且不同执行单元间的数据通路也需要消耗硬件资源。
为此需要一种新的处理器指令执行方案,可以不会污染架构寄存器并以较小的硬件资源代价来以一种简单的方式来实现指令拆分。
发明内容
为此,本发明提供了一种新的处理器及其中的指令执行方法,以力图解决或者至少缓解上面存在的至少一个问题。
根据本发明的一个方面,提供了一种指令执行方法,包括步骤:对指令进行译码,以确定要进行拆分的指令;将要进行拆分的指令拆分为两条或者更多条拆分后指令,拆分后指令包括具有相关性的相关性指令,且相关性指令具有对应的虚拟寄存器;对拆分后指令进行寄存器重命名,其中对于相关性指令,为对应的虚拟寄存器所分配的用于保存结果的物理寄存器和指定的指令执行之后释放的寄存器相同;以及执行重命名后的拆分后指令。
可选地,根据本发明的指令执行方法还包括步骤:对相关性指令进行相关性标记,以指示相关性指令中的生产者指令和消费者指令,其中在生产者指令中,对应的虚拟寄存器用作目的寄存器,而在消费者指令中,对应的虚拟寄存器用作源寄存器。
在根据本发明的指令执行方法中,进行寄存器重命名的步骤包括:为拆分后指令中的目的寄存器分配用于保存结果的物理寄存器并指定指令执行之后释放的物理寄存器;以及为拆分后指令中的源寄存器指定从中取值的物理寄存器,其中对于生产者指令中的对应虚拟寄存器,所分配的用于保存结果的物理寄存器和所指定的指令执行之后释放的物理寄存器相同,以及对于消费者指令中的对应虚拟寄存器,所指定的物理寄存器与为生产者指令中的对应虚拟寄存器分配的用于保存结果的物理寄存器相同。
可选地,在根据本发明的指令执行方法中,进行寄存器重命名的步骤还包括:在寄存器重命名表中记录为拆分后指令中的目的寄存器分配的用于保存结果的物理寄存器和指定的指令执行之后释放的物理寄存器。
可选地,在根据本发明的指令执行方法中,寄存器重命名表为虚拟寄存器记录相应的用于保存结果的物理寄存器、指令执行之后释放的物理寄存器以及就绪标记。该就绪标记指示虚拟寄存器中的值是否已经就绪。执行重命名后的拆分后指令的步骤包括:将拆分后指令保存在发射队列中;以及在寄存器重命名表中、与拆分后指令相关联的虚拟寄存器的就绪标记指示就绪时,将拆分后指令从发射队列取出并执行。
可选地,在根据本发明的指令执行方法中,相关性标记还包括对应的虚拟寄存器和用于保存结果的物理寄存器的映射关系,进行寄存器重命名的步骤包括:对于生产者指令,在相关性标记中记录所分配的用于保存结果的物理寄存器;以及对于消费者指令,根据相关性标记获取所分配的用于保存结果的物理寄存器作为对应的虚拟寄存器指定的、从中取值的物理寄存器。
可选地,在根据本发明的指令执行方法中,生产者指令和消费者指令的寄存器重命名不在一个处理器周期中执行,且进行寄存器重命名的步骤包括:对于生产者指令,将对应的虚拟寄存器号和所分配的用于保存结果的物理寄存器号写入到特定寄存器中;以及对于消费者指令,从特定寄存器中读取所分配的用于保存结果的物理寄存器号,以作为为对应的虚拟寄存器指定的、从中取值的物理寄存器号。
可选地,在根据本发明的指令执行方法中,该相关性标记包括信号指示和/或表项记录。
根据本发明的还有一个方面,提供了一种指令执行设备。该设备包括:译码单元,适于对指令进行译码,以确定要进行拆分的指令;指令拆分单元,适于将要进行拆分的指令拆分为两条或者更多条拆分后指令,该拆分后指令包括具有相关性的相关性指令,该相关性指令具有对应的虚拟寄存器;寄存器重命名单元,适于为拆分后指令进行寄存器重命名,其中对于相关性指令,为对应的虚拟寄存器所分配的用于保存结果的物理寄存器和指定的指令执行之后释放的物理寄存器相同;以及执行单元,适于执行重命名后的拆分后指令。
根据本发明的还有一个方面,提供了一种处理器,包括根据本发明的指令执行设备。
根据本发明的方案,在指令拆分之后,对于具有相关性的拆分后指令,就相关性的架构寄存器而言,通过在重命名时分配相同的保存执行结果的物理寄存器和执行后释放的物理寄存器,可以避免产生架构寄存器污染的问题。另外,在进行寄存器重命名时,通过参考相关性标记而为消费者指令的相关架构寄存器分配物理寄存器而不参考寄存器重命名表,又解决了在相关性指令之间的中间结果传递问题,从而可以在不污染架构寄存器的同时,以较小的物理资源开销来实现指令拆分。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的指令执行方法100的示意图;以及
图2示出了根据本发明一个实施例的处理器200的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的指令执行方法100的示意图。指令执行方法100适于在处理器中,如图2所示的处理器200中执行。处理器200包括各种寄存器并支持特定的指令集。指令集中定义了处理器200可以执行的指令类型的集合。
一条指令一般包括操作码和操作数。操作码表示该指令执行什么操作。操作数中的源操作数指出了指令执行时的数据来源,而目的操作数指出了指令的执行结果。源操作数和目的操作数经常涉及寄存器的使用。例如,源操作数可以采用寄存器中存储的值,或者采用寄存器中存储的存储空间位置处的值。与源操作数相关的寄存器称为源寄存器。类似的,目的操作数可以采用寄存器来保存执行结果,或者将执行结果存储到寄存器中的值所指示的存储位置。与目的操作数相关的寄存器称为目的寄存器。
指令集对各种类型的指令进行了定义,包括在指令中各寄存器的用途等。指令集中的指令定义是逻辑上的定义,为此,为了支持指令集,在处理器200中定义了逻辑上的一些架构寄存器210,例如通用寄存器(GPR)212、程序计数器(PC)214和控制寄存器(CR)216等。这些架构寄存器210的定义是逻辑上的定义,并且可以为这些架构寄存器的访问设置访问权限等。因此,这些架构寄存器210也可以被称作虚拟寄存器,当指令执行时,需要通过寄存器重命名为架构寄存器210分配真正的物理寄存器220。处理器200中还包括多个物理寄存器(220)P1到PN。物理寄存器220的数量取决于处理器200的设计,并本发明不受限于物理寄存器220的具体数量。
如图1所示,方法100始于步骤S110。在步骤S110中,进行指令译码,对指令进行分析以确定指令的操作码以及该条指令要完成的具体操作等。并根据指令译码结果来确定该条指令是否需要进行拆分。由于指令译码之后就已经知道该指令的具体功能,因此也就知道该指令是否需要进行拆分。
随后,对于要进行拆分的指令,则在步骤S120中进行指令拆分。类似地,处理器200中已经定义了指令拆分的方式,包括该指令要拆分为几条拆分后指令,以及这些拆分后指令之间是否具有相关性等。
例如,对于寄存器移位寻址存储指令:str.w r1,(r2,r3),即该指令指示把寄存器r1中的数据写入到寄存器r2和r3中的数据之后所指示的存储位置。如果处理器200不能支持直接执行该指令,则需要将该指令进行拆分。在处理器200中,可以将该指令拆分为两条指令,即第一条拆分后指令为加法指令:addu r2,r2,r3,计算出r2+r3的和并将计算结果保存在寄存器r2中;以及第二条拆分后指令为:st.w r1,r2,将寄存器r1中的数据写入寄存器r2中值指示的存储位置中。
在指令执行过程中,如果后一条指令所需的操作数是前一条指令的运算结果,那么这两条指令就存在相关性,后一条指令需要等到前一条指令执行结束后才能执行。在这种情况下,前一条指令称为生产者指令,后一条指令称为消费者指令,消费者指令依赖于生产者指令。如上面所给出的示例中,对于将指令str.w r1,(r2,r3)拆分后的两条拆分后指令,第二条拆分后指令需要第一条拆分后指令的执行结果,因此这两条拆分后指令之间具有相关性,且第一条拆分后指令为生产者指令,而第二条拆分后指令为消费者指令。生产者指令和消费者指令具有对应的相关性架构寄存器。相关性架构寄存器在第一条拆分后指令中用作目的寄存器,而在第二条拆分后指令中用作源寄存器。例如在上面的示例中,这两条拆分后指令具有相关性架构寄存器r2。r2在第一条指令中用作目的寄存器来存储加法指令的结果,而在第二条指令中用作源寄存器,以便从r2中读取要存储位置的地址。
因此,在步骤S120进行指令拆分时,就已经知道拆分后指令中有哪些相关性指令,而且这些相关性指令中哪些是生产者指令,哪些是消费者指令。
可选地,随后,在步骤S130中,对拆分后指令中具有相关性的指令进行相关性标记,以利用相关性标记指示这些具有相关性的拆分后指令中的生产者指令和消费者指令。
随后,在步骤S140中,对于不需要拆分的指令、不具有相关性的拆分后指令以及具有相关性的拆分后指令,进行寄存器重命名。在步骤S140中,处理器200为指令中需要保存计算结果的架构寄存器(目的寄存器)分配空闲的物理寄存器,用于存放做为计算结果的数据。同时,还确定该指令执行结束后释放的物理寄存器。由于在指令执行过程中,架构寄存器会被重复使用。因此当架构寄存器的值被更新时,之前的数据就失去意义,因此除了为目的寄存器分配物理寄存器(用于保存结果的物理寄存器)之外,还应当指定指令执行之后要被释放和回收的物理寄存器(指令执行之后释放的物理寄存器)。
对于在步骤S130中确定的生产者指令,其中的相关性架构寄存器为目的寄存器,因此也需要在寄存器重命名时进行用于保存结果的物理寄存器的分配和指令执行之后释放的物理寄存器的指定。根据本发明的实施方式,将生产者指令的用于保存结果的物理寄存器和指令执行之后释放的物理寄存器设置为同一个寄存器。这样,当生产者指令执行完成时,就释放了为用于保存中间结果的相关性架构寄存器分配的物理寄存器,这样,由于指令拆分而临时使用的相关性架构寄存器不会对架构寄存器产生污染。
另外,寄存器重命名还包括为各指令中做为源操作数的架构寄存器(源寄存器)指定相应的物理寄存器,以便可以从所指定的物理寄存器中获取内容做为指令中架构寄存器所使用的值。
在步骤S140进行寄存器重命名时,如果指令不是在步骤S130中被相关性标记的消费者指令,即该指令为不需要拆分的指令、拆分但不具有相关性的指令、或者相关性指令中的生产者指令,则正常根据寄存器重命名规则获得所指定的物理寄存器。对于在步骤S130中确定的消费者指令,其中的相关性架构寄存器为源寄存器,可根据相关性标记为相关性架构寄存器指定物理寄存器。所指定的物理寄存器与为生产者指令中的相关性架构寄存器所分配的用于保存结果的物理寄存器相同。
也就是说,在步骤S140中,对于拆分后指令中的相关性指令,对于相关性架构寄存器,所分配的用于保存结果的物理寄存器和指定的指令执行之后释放的物理寄存器是相同的。
可选地,根据本发明的一个实施方式,可以在如图2所示的寄存器重命名表230中记录寄存器重命名结果。如图2所示,在寄存器重命名表230中,为每个架构寄存器reg记录为其分配的物理寄存器,包括用于保存结果的物理寄存器preg和执行完成时释放的物理寄存器rreg。因此,对于非消费者指令,可以参考寄存器重命名表230来获得指定给各个架构寄存器的物理寄存器。对于消费者指令,则不参考寄存器重命名表230,而是根据相关性标记,从与该消费者指令相对应的生产者指令的重命名结果中获取为相关性架构寄存器指定的用于保存结果的物理寄存器。
例如,对于非拆分的加法指令:addu r2,r2,r3。在对该指令进行重命名之前,假定已经为架构寄存器r2分配了用于保存结果的物理寄存器p5,为架构寄存器r3分配了用于保存结果的物理寄存器p6。则当对该加法指令进行寄存器重命名时,对于做为目的寄存器的r2,会为其分配新的空闲物理寄存器,例如p8做为其用于保存结果的物理寄存器。同时由于该指令执行结束之后,架构寄存器r2中的值会发生改变,因此,可以定义此时的指令执行之后释放的物理寄存器为p5,即该指令执行完成之后,释放并回收物理寄存器p5用于其它架构寄存器,并且可以从物理寄存器p8获得架构寄存器r2的值。
而当加法指令:addu r2,r2,r3为上面示例中的拆分后指令,并且为拆分后指令中的生产者指令时,此时假定对该指令进行重命名之前的架构寄存器r2和r3的寄存器重命名和上面的示例相同,即为架构寄存器r2分配了用于保存结果的物理寄存器p5,为架构寄存器r3分配了用于保存结果的物理寄存器p6。在为做为生产者指令的加法指令:addu r2,r2,r3进行寄存器重命名时,由于架构寄存器r2为相关性架构寄存器,因此,为寄存器r2分配的用于保存结果的物理寄存器和指令执行之后释放的物理寄存器相同,都为物理寄存器p8。这样,当该指令执行结束之后,如果需要架构寄存器r2中的值,则参考寄存器重命名表230,从之前的物理寄存器p5获得相应值。为保存中间结果而引入的相关性架构寄存器r2所分配的物理寄存器p8在该拆分后指令执行完成之后就释放了,因此不会产生架构寄存器污染的问题。
根据本发明的实施方式,相关性标记除了对拆分后指令进行相关性标记之外(即,在生产者指令和消费者指令之间建立关联),还用于在具有相关性的拆分后指令之间传递重命名之后的物理寄存器信息。
根据一种实施方式,可以将相关性架构寄存器和用于保存结果的物理寄存器的映射关系包含在相关性标记中。这样,在步骤S140中进行寄存器重命名时,在对生产者指令进行寄存器重命名之后,还在相关性标记中记录所分配的用于保存结果的物理寄存器。对于消费者指令,可以参考该相关性标记获取其中记录的、为相关性架构寄存器分配的用于保存结果的物理寄存器,这样,就可以为消费者指令中使用的相关性架构寄存器指定该用于保存结果的物理寄存器做为重命名之后的物理寄存器。
根据另一种实施方式,当拆分后的生产者指令和消费者指令不在同一个处理器周期中进行重命名时,可以在步骤140中为生产者指令进行寄存器重名命名之后,将该生产者指令的相关性架构寄存器号和所分配的用于保存结果的物理寄存器号写入到特定寄存器中。这样,在另一个处理器周期中,在步骤S140中为消费者指令进行寄存器重命名时,可以根据相关性标记,从特定寄存器中读取用于保存结果的物理寄存器号做为为该消费者指令中的相关性架构寄存器指定的物理寄存器。
可以利用多种方式来实现相关性标记。根据本发明的一种实施方式,当从一条指令拆分出来的生产者指令和消费值指令在一个周期内进行重命名时,可以将相关性标记实现为信号指示,以便通过在生产者指令和消费者指令之间的信号传递来进行相关性标记的传输。根据本发明的另一个实施例,当生产者指令和消费者指令不能在一个周期内进行重命名时,则可以将相关性标记实现为表项记录,即做为一个项目记录在某个表中,这样生产者指令可以根据该表项来记录架构寄存器和用于保存结果的物理寄存器之间的映射关系,而消费者指令则可以根据该表现来获取这个映射关系,并进而获得用于架构寄存器的内容。本发明不受限于相关性标记的具体执行方式,所有可以在生产者指令和消费者指令之间建立关联并传递相关性架构寄存器和用于保存结果的物理寄存器之间的映射关系的方式都在本发明的保护范围之内。
可选地,根据本发明的一种实施方式,在步骤S140进行寄存器重命名之后,并不是直接执行指令,而是要等指令所需要的寄存器值都就绪之后,才执行该指令。如图2所示,寄存器重命名表230还为每个架构寄存器记录就绪标记rdy。就绪标记rdy指示相应的架构寄存器中的值已经就绪。在该实施方式中,在步骤S140进行寄存器重命名之后,方法100继续到步骤S150。在步骤S150中,将经过重命名的指令保存到发射队列中,并将指令执行所需要的架构寄存器都已经就绪的指令从发射队列取出,并在步骤S160中执行。在步骤S160中,每当指令执行完成时,除了根据寄存器重命名表230释放相应的物理寄存器之外,还更新该表230中相应架构寄存器的就绪标记rdy。这样,在步骤S150中不断有指令已经被更新为就绪并从发射队列发射到相应的单元来执行。
继续以上面示例中的寄存器移位寻址存储指令:str.w r1,(r2,r3)为例进行描述。如上所述,由于处理器200不支持直接执行该指令,因此,在步骤S120中,将该指令拆分为第一条拆分后指令为加法指令:addu r2,r2,r3和第二条拆分后指令为:st.w r1,r2。随后,在步骤S130中,为这两条拆分后指令进行相关性标记,以指示第一条拆分后指令为生产者指令,而第二条指令为消费者指令,二者之间的相关性架构寄存器为r2。
在步骤S140中进行寄存器重命名时,在第一条拆分后指令进行重命名之前,为架构寄存器r2分配了用于保存结果的物理寄存器p5,为架构寄存器r3分配了用于保存结果的物理寄存器p6。
在为该加法指令:addu r2,r2,r3进行寄存器重命名时,由于架构寄存器r2为相关性架构寄存器,因此,为寄存器r2分配的用于保存结果的物理寄存器和指令执行之后释放的物理寄存器相同,都为物理寄存器p8。这些寄存器的重命名都记录在寄存器重命名表格230中。
在为第二条拆分后指令:st.w r1,r2进行寄存器重命名时,可以根据相关性标记,而为架构寄存器r2分配物理寄存器p8,而不会参考寄存器重命名表格230而分配用于保存结果的物理寄存器p5。
当第一条拆分后指令addu r2,r2,r3执行完成之后,释放为架构寄存器r2分配的物理寄存器p8,同时根据相关性标记,记录架构寄存器r2和物理寄存器p8之间的映射关系。同时,由于第一条拆分后指令addu r2,r2,r3执行完成,r2的就绪标记指示r2的内容就绪,并在步骤S155中触发第二条拆分后指令st.w r1,r2从发射队列发射到执行单元来执行,即进入步骤S160。
在步骤S160中,正常执行做为消费者指令的第二条拆分后指令,并且其中为相关性架构寄存器r2分配的物理寄存器为p8,而不是从寄存器重命名表获取与r2对应的物理寄存器p5。
利用上述方式,在不污染架构寄存器的同时,利用记录相关性标记所需要的极少硬件资源,实现了基于隐式相关性的指令拆分。
图2示出了根据本发明一个实施例的处理器200的示意图。处理器200中具有各个部件来实现图1所示的指令处理方法。如图2所示,处理器200包括上面描述的架构寄存器210(包括例如通用寄存器(GPR)212、程序计数器(PC)214和控制寄存器(CR)216等),以及对应于架构寄存器210的物理寄存器220。处理器200中还包括多个物理寄存器(220)P1到PN。物理寄存器220的数量取决于处理器200的设计,并本发明不受限于物理寄存器220的具体数量。
处理器200还包括适于执行上述指令执行方法100的指令执行设备240。指令执行设备240包括译码单元242、指令拆分单元244、相关性标记单元246、寄存器重命名单元248和执行单元249。
译码单元242对指令进行译码,并根据译码结果确定要进行拆分的指令。由于指令译码之后就已经知道该指令的具体功能,因此也就知道该指令是否需要进行拆分。
指令拆分单元244对在译码单元242中确定要进行拆分的指令进行指令拆分。类似地,处理器200中已经定义了指令拆分的方式,包括指令要拆分为几条拆分后指令,这些拆分后指令之间是否具有相关性,以及这些相关性指令中哪些是生产者指令,哪些是消费者指令等。指令拆分单元244根据处理器200的事先定义将指令拆分为两条或者更多条的拆分后指令。
寄存器重命名单元248对各种指令,包括不需要拆分的指令、不具有相关性的拆分后指令以及具有相关性的拆分后指令等,进行寄存器重命名。寄存器重命名包括为指令中需要保存计算结果的架构寄存器(目的寄存器)分配空闲的物理寄存器(用于保存结果的物理寄存器),用于存放做为计算结果的数据。同时,还确定该指令执行结束后释放的物理寄存器(指令执行之后释放的物理寄存器)。对于相关性指令中的相关性架构寄存器,寄存器重命名单元248为其所分配的用于保存结果的物理寄存器和指令执行之后释放的物理寄存器相同。
可选地,相关性标记单元246对指令拆分单元244所拆分的、具有相关性的指令进行相关性标记,以指示这些指令中的生产者指令和消费者指令,并指示生产者指令和消费者指令所具有得相应相关性架构寄存器。
另外,寄存器重命名单元248还为各指令中做为源操作数的架构寄存器(源寄存器)指定相应的物理寄存器,以便可以从所指定的物理寄存器中获取内容做为指令中架构寄存器所使用的值。在进行寄存器重命名时,如果指令不是在相关性标记单元246中被相关性标记的消费者指令,即该指令为不需要拆分的指令、拆分但不具有相关性的指令、或者相关性指令中的生产者指令,则正常根据寄存器重命名规则获得所指定的物理寄存器。对于在相关性标记单元246中标记的消费者指令,寄存器重命名单元248可根据相关性标记为相关性架构寄存器指定物理寄存器。所指定的物理寄存器与为生产者指令中的相关性架构寄存器所分配的用于保存结果的物理寄存器相同。
执行单元249执行经过寄存器重命名单元248进行寄存器重命名之后的拆分后指令。
可选地,根据本发明的一个实施方式,处理器200还包括寄存器重命名表230。如图2所示,在寄存器重命名表230中,为每个架构寄存器reg记录为其分配的物理寄存器,包括保存结果的用于保存结果的物理寄存器preg和执行完成时释放的指令执行之后释放的物理寄存器rreg。因此,寄存器重命名单元248可以将寄存器重命名信息记录到寄存器重命名表230中。因此,对于非消费者指令,可以参考寄存器重命名表230来获得指定给各个架构寄存器的物理寄存器。对于消费者指令,则不参考寄存器重命名表230,而是根据相关性标记,从与该消费者指令相对应的生产者指令的重命名结果中获取为相关性架构寄存器指定的用于保存结果的物理寄存器。
根据本发明的实施方式,相关性标记除了对拆分后指令进行相关性标记之外(即,在生产者指令和消费者指令之间建立关联),还用于在具有相关性的拆分后指令之间传递重命名之后的物理寄存器信息。
根据一种实施方式,可以将相关性架构寄存器和用于保存结果的物理寄存器的映射关系包含在相关性标记中。寄存器重命名单元248可以针对生产者指令,在相关性标记中记录所分配的用于保存结果的物理寄存器。对于消费者指令,可以参考该相关性标记获取其中记录的、为相关性架构寄存器分配的用于保存结果的物理寄存器,这样,就可以为消费者指令中使用的相关性架构寄存器指定该用于保存结果的物理寄存器做为重命名之后的物理寄存器。
根据另一种实施方式,当拆分后的生产者指令和消费者指令不在同一个处理器周期中进行重命名时,寄存器重命名单元248还可以在生产者指令进行寄存器重名命名之后,将该生产者指令的相关性架构寄存器号和所分配的用于保存结果的物理寄存器号写入到特定寄存器中。这样,在另一个处理器周期中,寄存器重命名单元248为消费者指令进行寄存器重命名时,可以根据相关性标记,从特定寄存器中读取用于保存结果的物理寄存器号,做为为该消费者指令中的相关性架构寄存器指定的物理寄存器。
可以利用多种方式来实现相关性标记。根据本发明的一种实施方式,当从一条指令拆分出来的生产者指令和消费值指令在一个周期内进行重命名时,可以将相关性标记实现为信号指示,以便通过在生产者指令和消费者指令之间的信号传递来进行相关性标记的传输。根据本发明的另一个实施例,当生产者指令和消费者指令不能在一个周期内进行重命名时,则可以将相关性标记实现为表项记录,即做为一个项目记录在某个表中,这样生产者指令可以根据该表项来记录架构寄存器和用于保存结果的物理寄存器之间的映射关系,而消费者指令则可以根据该表现来获取这个映射关系,并进而获得用于架构寄存器的内容。本发明不受限于相关性标记的具体执行方式,所有可以在生产者指令和消费者指令之间建立关联并传递相关性架构寄存器和用于保存结果的物理寄存器之间的映射关系的方式都在本发明的保护范围之内。
可选地,寄存器重命名表230还为每个架构寄存器记录就绪标记rdy。就绪标记rdy指示相应的架构寄存器中的值已经就绪。在寄存器重命名单元248进行寄存器重命名之后,执行单元将指令保存在发射队列中。并只有当根据寄存器重命名表230、与指令相关联的架构寄存器(特别是用于存储源操作数的架构寄存器)的就绪标记指示就绪时,才将该指令从发射队列取出并执行。
应当注意的是,在上述说明中,将寄存器重命名表230描述为在指令执行设备240之外,但是本发明不受限于此,可以将寄存器重命名表230包含在指令执行设备240中而不脱离本发明的保护范围。
根据本发明的指令执行设备和处理器方案,通过在具有相关性的拆分后指令之间通过信号或者表项进行标记来建立二者之间的隐式相关性,并在寄存器重命名时,对于具有隐式相关性的拆分后指令,只需要保证其分配的物理寄存器和释放的物理寄存器相同,则后续拆分后指令跟非拆分后指令的进行相同处理。而在拆分后指令执行结束后,只会将自身被分配的物理寄存器释放,不会更改其他架构寄存器的映射关系。通过这种方式,在两条拆分后指令间建立相关性的同时,可以保证拆分后指令的中间结果不会更改任何架构寄存器的值,从而不会污染任何架构寄存器,并且以较小的硬件资源开销来指令拆分。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (15)
1.一种指令执行方法,包括步骤:
对指令进行译码,以确定要进行拆分的指令;
将所述要进行拆分的指令拆分为两条或者更多条拆分后指令,所述拆分后指令包括具有相关性的相关性指令,所述相关性指令具有对应的虚拟寄存器;
对所述拆分后指令进行寄存器重命名,其中对于所述相关性指令,为所述对应的虚拟寄存器所分配的用于保存结果的物理寄存器和指定的指令执行之后释放的寄存器相同;以及
执行所述重命名后的拆分后指令。
2.如权利要求1所述的方法,还包括步骤:
对所述相关性指令进行相关性标记,以指示所述相关性指令中的生产者指令和消费者指令,在所述生产者指令中,所述对应的虚拟寄存器用作目的寄存器,而在所述消费者指令中,所述对应的虚拟寄存器用作源寄存器;
所述进行寄存器重命名包括:
为所述拆分后指令中的目的寄存器分配所述用于保存结果的物理寄存器并指定所述指令执行之后释放的物理寄存器;以及
为所述拆分后指令中的源寄存器指定从中取值的物理寄存器,
其中对于所述生产者指令中的所述对应虚拟寄存器,所分配的用于保存结果的物理寄存器和所指定的指令执行之后释放的物理寄存器相同,以及对于所述消费者指令中的所述对应虚拟寄存器,所指定的物理寄存器与为所述生产者指令中的对应虚拟寄存器分配的用于保存结果的物理寄存器相同。
3.如权利要求2所述的方法,所述进行寄存器重命名的步骤还包括:
在寄存器重命名表中记录为所述拆分后指令中的目的寄存器分配的用于保存结果的物理寄存器和指定的指令执行之后释放的物理寄存器。
4.如权利要求3所述的方法,其中所述寄存器重命名表为虚拟寄存器记录相应的用于保存结果的物理寄存器、指令执行之后释放的物理寄存器以及就绪标记,所述就绪标记指示所述虚拟寄存器中的值是否已经就绪;
所述执行重命名后的拆分后指令的步骤包括:
将所述拆分后指令保存在发射队列中;以及
在所述寄存器重命名表中、与所述拆分后指令相关联的虚拟寄存器的就绪标记指示就绪时,将所述拆分后指令从所述发射队列取出并执行。
5.如权利要求2-4中任一个所述的方法,其中所述相关性标记还包括所述对应的虚拟寄存器和用于保存结果的物理寄存器的映射关系,所述进行寄存器重命名的步骤包括:
对于所述生产者指令,在所述相关性标记中记录所分配的用于保存结果的物理寄存器;以及
对于所述消费者指令,根据所述相关性标记获取所分配的用于保存结果的物理寄存器作为所述对应的虚拟寄存器指定的、从中取值的物理寄存器。
6.如权利要求5所述的方法,其中所述生产者指令和所述消费者指令的寄存器重命名不在一个处理器周期中执行,且所述进行寄存器重命名的步骤包括:
对于所述生产者指令,将所述对应的虚拟寄存器号和所分配的用于保存结果的物理寄存器号写入到特定寄存器中;以及
对于所述消费者指令,从所述特定寄存器中读取所分配的用于保存结果的物理寄存器号,以作为为所述对应的虚拟寄存器指定的、从中取值的物理寄存器号。
7.如权利要求2-6中任一个所述的方法,其中所述相关性标记包括信号指示和/或表项记录。
8.一种处理器中的指令执行设备,包括:
译码单元,适于对指令进行译码,以确定要进行拆分的指令;
指令拆分单元,适于将所述要进行拆分的指令拆分为两条或者更多条拆分后指令,所述拆分后指令包括具有相关性的相关性指令,所述相关性指令具有对应的虚拟寄存器;
寄存器重命名单元,适于为所述拆分后指令进行寄存器重命名,其中对于所述相关性指令,为所述对应的虚拟寄存器所分配的用于保存结果的物理寄存器和指定的指令执行之后释放的物理寄存器相同;以及
执行单元,适于执行所述重命名后的拆分后指令。
9.如权利要求8所述的指令执行设备,还包括:
相关性标记单元,对所述相关性指令进行相关性标记,以指示所述相关性指令中的生产者指令和消费者指令,在所述生产者指令中,所述对应的虚拟寄存器用作目的寄存器,而在所述消费者指令中,所述对应的虚拟寄存器用作源寄存器;
所述寄存器重命名单元适于为所述拆分后指令中的目的寄存器分配所述用于保存结果的物理寄存器并指定所述指令执行之后释放的物理寄存器;以及为所述拆分后指令中的源寄存器指定从中取值的物理寄存器,其中对于所述生产者指令中的所述对应虚拟寄存器,所分配的用于保存结果的物理寄存器和所指定的指令执行之后释放的物理寄存器相同,以及对于所述消费者指令中的所述对应虚拟寄存器,所指定的物理寄存器与为所述生产者指令中的对应虚拟寄存器分配的用于保存结果的物理寄存器相同。
10.如权利要求9所述的指令执行设备,还包括:
寄存器重命名表,适于记录在所述寄存器重命名时、为所述拆分后指令中的虚拟寄存器分配的用于保存结果的物理寄存器和指令执行之后释放的物理寄存器。
11.如权利要求10所述的指令执行设备,其中所述寄存器重命名表还包括每个虚拟寄存器的就绪标记,所述就绪标记指示所述虚拟寄存器中的值是否已经就绪;
所述执行单元适于将所述拆分后指令保存在发射队列中,以及在所述寄存器重命名表中、与所述拆分后指令相关联的虚拟寄存器的就绪标记指示就绪时,将所述拆分后指令从发射队列取出并执行。
12.如权利要求9-11中任一个所述的指令执行设备,其中所述相关性标记还包括所述对应的虚拟寄存器和用于保存结果的物理寄存器的映射关系;
所述寄存器重命名单元还适于针对所述生产者指令,在所述相关性标记中记录所分配的用于保存结果的物理寄存器;以及针对所述消费者指令,根据所述相关性标记获取所分配的用于保存结果的物理寄存器作为为所述对应的虚拟寄存器指定的、从中取值的物理寄存器。
13.如权利要求12所述的指令执行设备,其中所述生产者指令和所述消费者指令的寄存器重命名不在一个处理器周期中执行,所述寄存器重命名单元适于针对所述生产者指令,将所述对应的虚拟寄存器号和所分配的用于保存结果的物理寄存器号写入到特定寄存器中;以及针对所述消费者指令,从所述特定寄存器中读取所分配的用于保存结果的物理寄存器号,以作为为所述对应的虚拟寄存器指定的、从中取值的物理寄存器号。
14.如权利要求9-13中任一个所述的指令执行设备,其中所述相关性标记包括信号指示和/或表项记录。
15.一种处理器,包括:
如权利要求8-14中任一个所述的指令执行设备。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910156496.4A CN111638911A (zh) | 2019-03-01 | 2019-03-01 | 一种处理器、指令执行设备及方法 |
US16/802,341 US20200278867A1 (en) | 2019-03-01 | 2020-02-26 | Device, processor, and method for splitting instructions and register renaming |
PCT/US2020/019941 WO2020180565A1 (en) | 2019-03-01 | 2020-02-26 | Device, processor, and method for splitting instructions and register renaming |
EP20765544.0A EP3931689A4 (en) | 2019-03-01 | 2020-02-26 | DEVICE, PROCESSOR AND METHOD FOR DIVISION OF INSTRUCTIONS AND REGISTER RENAMING |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910156496.4A CN111638911A (zh) | 2019-03-01 | 2019-03-01 | 一种处理器、指令执行设备及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111638911A true CN111638911A (zh) | 2020-09-08 |
Family
ID=72236329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910156496.4A Pending CN111638911A (zh) | 2019-03-01 | 2019-03-01 | 一种处理器、指令执行设备及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20200278867A1 (zh) |
EP (1) | EP3931689A4 (zh) |
CN (1) | CN111638911A (zh) |
WO (1) | WO2020180565A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114116009A (zh) * | 2022-01-26 | 2022-03-01 | 广东省新一代通信与网络创新研究院 | 一种用于超标量处理器的寄存器重命名方法及系统 |
CN114356420A (zh) * | 2021-12-28 | 2022-04-15 | 海光信息技术股份有限公司 | 指令流水线的处理方法及装置、电子装置及存储介质 |
CN115617396A (zh) * | 2022-10-09 | 2023-01-17 | 上海燧原科技有限公司 | 应用于新型人工智能处理器的寄存器分配方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11500642B2 (en) * | 2020-11-10 | 2022-11-15 | International Busines Machines Corporation | Assignment of microprocessor register tags at issue time |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012003997A1 (en) * | 2010-07-09 | 2012-01-12 | Martin Vorbach | Data processing device and method |
US9430243B2 (en) * | 2012-04-30 | 2016-08-30 | Apple Inc. | Optimizing register initialization operations |
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 |
US10282296B2 (en) * | 2016-12-12 | 2019-05-07 | Intel Corporation | Zeroing a cache line |
-
2019
- 2019-03-01 CN CN201910156496.4A patent/CN111638911A/zh active Pending
-
2020
- 2020-02-26 US US16/802,341 patent/US20200278867A1/en not_active Abandoned
- 2020-02-26 WO PCT/US2020/019941 patent/WO2020180565A1/en unknown
- 2020-02-26 EP EP20765544.0A patent/EP3931689A4/en active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356420A (zh) * | 2021-12-28 | 2022-04-15 | 海光信息技术股份有限公司 | 指令流水线的处理方法及装置、电子装置及存储介质 |
CN114356420B (zh) * | 2021-12-28 | 2023-02-17 | 海光信息技术股份有限公司 | 指令流水线的处理方法及装置、电子装置及存储介质 |
CN114116009A (zh) * | 2022-01-26 | 2022-03-01 | 广东省新一代通信与网络创新研究院 | 一种用于超标量处理器的寄存器重命名方法及系统 |
CN115617396A (zh) * | 2022-10-09 | 2023-01-17 | 上海燧原科技有限公司 | 应用于新型人工智能处理器的寄存器分配方法及装置 |
CN115617396B (zh) * | 2022-10-09 | 2023-08-29 | 上海燧原科技有限公司 | 应用于新型人工智能处理器的寄存器分配方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3931689A1 (en) | 2022-01-05 |
US20200278867A1 (en) | 2020-09-03 |
WO2020180565A1 (en) | 2020-09-10 |
EP3931689A4 (en) | 2022-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111638911A (zh) | 一种处理器、指令执行设备及方法 | |
US7711898B2 (en) | Register alias table cache to map a logical register to a physical register | |
US9170818B2 (en) | Register renaming scheme with checkpoint repair in a processing device | |
EP2674856B1 (en) | Zero cycle load instruction | |
US9311084B2 (en) | RDA checkpoint optimization | |
US9256427B2 (en) | Tracking multiple conditions in a general purpose register and instruction therefor | |
US9575754B2 (en) | Zero cycle move | |
US9411589B2 (en) | Branch-free condition evaluation | |
US20100070741A1 (en) | Microprocessor with fused store address/store data microinstruction | |
US20100332805A1 (en) | Remapping source Registers to aid instruction scheduling within a processor | |
US9280349B2 (en) | Decode time instruction optimization for load reserve and store conditional sequences | |
JP2000148472A (ja) | マイクロプロセッサ装置及びそのソフトウェア命令高速化方法並びにその制御プログラムを記録した記録媒体 | |
US11068271B2 (en) | Zero cycle move using free list counts | |
CN111399912B (zh) | 一种面向多周期指令的指令调度方法、系统及介质 | |
US8972701B2 (en) | Setting zero bits in architectural register for storing destination operand of smaller size based on corresponding zero flag attached to renamed physical register | |
JP7156776B2 (ja) | リタイアフェーズ中に部分書込み結果をマージするシステムおよび方法 | |
CN113778838B (zh) | 二进制程序动态污点分析方法及装置 | |
US8782378B2 (en) | Dynamic instruction splitting | |
CN114514505A (zh) | 退役队列压缩 | |
US20220413849A1 (en) | Providing atomicity for complex operations using near-memory computing | |
US7191315B2 (en) | Method and system for tracking and recycling physical register assignment | |
US20220236990A1 (en) | An apparatus and method for speculatively vectorising program code | |
CN112416434B (zh) | 物理寄存器分配方法、物理寄存器分配装置和电子设备 | |
CN109002322B (zh) | 用于执行部件模块级验证的寄存器分配与释放方法及部件 | |
CN117931293A (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 |