CN104615409B - 跳越mov指令的处理器和由该处理器使用的方法 - Google Patents

跳越mov指令的处理器和由该处理器使用的方法 Download PDF

Info

Publication number
CN104615409B
CN104615409B CN201510004934.7A CN201510004934A CN104615409B CN 104615409 B CN104615409 B CN 104615409B CN 201510004934 A CN201510004934 A CN 201510004934A CN 104615409 B CN104615409 B CN 104615409B
Authority
CN
China
Prior art keywords
instruction
source
indicator
data
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510004934.7A
Other languages
English (en)
Other versions
CN104615409A (zh
Inventor
吉拉德·M·卡尔
马修·丹尼尔·戴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Zhaoxin Semiconductor Co Ltd
Original Assignee
Shanghai Zhaoxin Integrated Circuit Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/315,122 external-priority patent/US9588769B2/en
Application filed by Shanghai Zhaoxin Integrated Circuit Co Ltd filed Critical Shanghai Zhaoxin Integrated Circuit Co Ltd
Publication of CN104615409A publication Critical patent/CN104615409A/zh
Application granted granted Critical
Publication of CN104615409B publication Critical patent/CN104615409B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Advance Control (AREA)

Abstract

本发明涉及一种跳越MOV指令的处理器。所述处理器实现第一指令以及在程序顺序中位于所述第一指令之后的第二指令的乱序执行,所述第一指令包括源和目的指示器,所述源指示器规定数据的源,所述目的指示器规定数据的目的地,所述第一指令命令所述处理器将数据从源移动到目的地,所述第二指令规定用于规定数据的源的源指示器。如果不存在用于写入到所述第一指令的源或目的地的介入指令,并且第二指令源指示器与第一指令目的指示器相匹配,则重命名单元用所述第一指令源指示器来更新所述第二指令源指示器。

Description

跳越MOV指令的处理器和由该处理器使用的方法
相关申请的交叉引用
本申请要求序列号为No.62/003206,申请日为2014年5月27日,名称为“PROCESSORTHAT LEAPFROGS MOV INSTRUCTION,跳越(LEAPFROG,或蛙跳)MOV指令的处理器”的美国临时申请的优先权,其在整体上通过参考被引入这里。
技术领域
本发明是关于一种处理器,特别是关于可实现第一指令以及在程序顺序中位于所述第一指令之后的第二指令的乱序执行的处理器。
背景技术
数据移动是处理器的基本功能,无论是从内存移动数据至缓存器、从缓存器移动数据至内存、或从缓存器移动数据至缓存器,处理器都使用MOV这个指令。
发明内容
本发明的一个方面提供了一种处理器,实现第一指令以及在程序顺序中位于所述第一指令之后的第二指令的乱序执行,其中所述第一指令包括源指示器和目的指示器,其中所述源指示器规定数据的源,其中所述目的指示器规定数据的目的地,其中所述第一指令命令所述处理器将数据从所述源移动到所述目的地,其中所述第二指令规定用于规定数据的源的源指示器。所述处理器包括重命名单元,配置为将所述第二指令的源指示器与所述第一指令的目的指示器进行比较。所述重命名单元还配置为确定按照程序顺序是否存在位于所述第一和第二指令之间的用于写入到所述第一指令的源或目的地的任何指令。所述重命名单元还配置为如果在所述第一和第二指令之间不存在用于写入到所述第一指令的源或目的地的指令,并且所述第二指令的源指示器与所述第一指令的 目的指示器相匹配,则用所述第一指令的源指示器来更新所述第二指令的源指示器。
本发明的另一方面提供了一种由处理器使用的方法,用于帮助实现第一指令以及在程序顺序中位于所述第一指令之后的第二指令的乱序执行,其中所述第一指令包括源指示器和目的指示器,其中所述源指示器规定数据的源,其中所述目的指示器规定数据的目的地,其中所述第一指令命令所述处理器将数据从所述源移动到所述目的地,其中所述第二指令规定用于规定数据的源的源指示器。所述方法包括将所述第二指令的源指示器与所述第一指令的目的指示器进行比较,确定按照程序顺序是否存在位于所述第一和第二指令之间的用于写入到所述第一指令的源或目的地的任何指令,以及如果在所述第一和第二指令之间不存在用于写入到所述第一指令的源或目的地的指令,并且所述第二指令的源指示器与所述第一指令的目的指示器相匹配,则用所述第一指令的源指示器来更新所述第二指令的源指示器。
本发明的又一方面提供了一种计算机程序产品,所述计算机程序产品被编码在与计算装置一起使用的至少一个永久性计算机可用介质中,所述计算机程序产品包括包含在所述介质中的计算机可用程序代码,用于实现第一指令以及在程序顺序中位于所述第一指令之后的第二指令的乱序执行,其中所述第一指令包括源指示器和目的指示器,其中所述源指示器规定数据的源,其中所述目的指示器规定数据的目的地,其中所述第一指令命令所述处理器将数据从所述源移动到所述目的地,其中所述第二指令规定用于规定数据的源的源指示器。所述计算机可用程序代码包括:用于规定重命名单元的第一程序代码。所述重命名单元配置为将所述第二指令的源指示器与所述第一指令的目的指示器进行比较。所述重命名单元还配置为确定按照程序顺序是否存在位于所述第一和第二指令之间的用于写入到所述第一指令的源或目的地的任何指令。所述重命名单元还配置为如果在所述第一和第二指令之间不存在用于写入到所述第一指令的源或目的地的指令,并且所述第二指令的源指示器与所述第一指令的目的指示器相匹配,则用所述第一指令的源指示器来更新所述第二指令的源指示器。
附图说明
图1为图示微处理器的方框图。
图2为图示微指令的各字段的方框图。
图3为更详细图示图1的重命名单元的实施例的方框图。
图4为图示图1的重命名单元的操作的流程图。
图5为更详细图示图1的重命名单元的替换实施例的方框图。
图6为图示图5的重命名单元的操作的流程图。
图7为图示图5的重命名单元的操作的流程图。
图8为图示图5的重命名单元的操作的流程图。
具体实施方式
现在参看图1,示出了图示微处理器100的方框图。微处理器100包括指令缓存102,指令翻译器104,重命名单元106,保留站(reservation station)108,执行单元112,结构寄存器114,重排序缓冲器(ROB)116,以及结果转发总线118。其他功能单元(未示出)可以包括微编码单元;分支预测器;存储器子系统,包括缓存层次结构(例如,一级数据缓存,二级缓存),存储器顺序缓冲器,以及存储器管理单元;数据预取单元;以及总线接口单元等等。微处理器100具有乱序(out-of-order)执行微体系结构,在所述乱序执行微体系结构中,可以不按照程序顺序来发出指令,以供执行。更具体来讲,可以不按照程序顺序来发出通过翻译结构指令而得到的微指令,以供执行。微指令的程序顺序,与用来翻译得到所述微指令的相应结构指令的程序顺序相同。微处理器100还具有超标量微体系结构,在所述超标量微体系结构中,能够在每个时钟周期内发出多个指令至执行单元112,以供执行。在一个实施例中,微处理器100基本上符合x86指令集体系结构。
指令缓存102用于对从系统存储器中取出的结构指令进行缓存。指令翻译器104将从指令缓存102中取出的结构指令翻译成微处理器100的微体系结构的微指令集中的微指令。(参见图2的微指令200的例子)。执行单元112执行所述微指令。通过翻译结构指令而得到的微指令用于实现所述结构指令。
重命名单元106按照程序顺序接收翻译得到的微指令。ROB 116为环形队列,该环形队列的每一项(entry)包括存储空间,用于存储与微指令相关联的信息,比如用于指示其结果是否有效以及该项(即,微指令本身)是否有效的 标志。重命名单元106按照程序顺序为每个微指令在ROB 116中分配一个项,并且用(图2的DEST ROBIDX 208中的)所分配的ROB项的索引来更新该微指令。所分配的ROB 116项具有用于存储微指令的结果的关联存储空间(结果字段)。当微指令退休(retire)时,将该微指令的来自ROB项的结果写入到被指定为微指令目的地的结构寄存器114。
重命名单元106将每个微指令分派给与将要执行该微指令的执行单元112相关联的适当保留站108。当执行单元112可用、并且该微指令的所有源操作数都可用时,保留站108发出该微指令至执行单元112,以供执行。依据生成源操作数的写程序微指令的状态,执行单元112从结构寄存器114、ROB 116或者转发总线118之一接收源操作数。更具体来说,如果源操作数生成(或写程序)微指令已经退休,则结构寄存器114将成为源;否则,ROB 116将成为源,除非在其所需的时钟周期内可在转发总线118上得到该结果。
重命名单元106进行寄存器重命名,以及微指令的依赖性生成。在一般情况下(例如,在非MOV跳越的情况下),对于立即微指令的每个源操作数,重命名单元106确定被分配给“最新较旧写程序”的ROB 116中的项的索引,其中所述“最新较旧写程序”是程序顺序中的最新微指令,但在程序顺序中比立即微指令更旧一些,并写入用于提供源操作数的结构寄存器(由图2中的SRC字段212规定)。接着,重命名单元106用所述最新较旧写程序的ROB索引,即最新较旧写程序的DEST ROBIDX 208来更新立即微指令(图2的SRC ROBIDX字段216中)。
保留站108将处于等待的微指令的SRC ROBIDX字段216值与由执行单元112生成的每个结果的ROB索引进行比较,以确定该源操作数是否是可用的。从上面的描述中可以看到,这产生了处于等待的微指令对于其最新较旧写程序的依赖性,使得直到所有的最新较旧写程序都已经产生了它们的结果为止,该处于等待的微指令才能被发出以供执行。这一般不利于性能,因为这会导致在一个给定的时钟周期内,执行单元112中的一个或多个执行单元由于没有有效的微指令可执行而处于空闲状态。这被称作利用不足。一般来说,微处理器100的利用率与所执行程序的指令级并行性相关,这涉及程序指令流的指令独立量,其规定了微处理器在每个时钟周期内能够发出多个微指令以供执行的能力(尤其是对于每个执行单元112)。微处理器100的性能部分上是由其 微体系结构利用程序的指令级并行性的能力所决定的。
有利地,这里描述了一种机制,该机制提升了微处理器100对包含MOV微指令的一些指令流的指令级并行性进行利用的能力,从而通过增加利用率来改善微处理器100的性能。MOV微指令命令处理器100将单个源操作数从源移动至由DEST字段204规定的目的寄存器。所述源操作数由SRC 212,IMMEDIA 222,SRC ROBIDX 216和/或SRC ROBSEL 218字段的组合来规定,并由SRC SIZE字段214规定其尺寸,这些内容都是参照图2来描述的。与根据上文所述的一般情况原本会发生的情况相比,该机制(在这里被称为MOV跳越)可以使微指令被更快的发出以供执行。
考虑下面的代码序列,其中微指令(1)为程序顺序中最旧的,而微指令(3)是程序顺序中最新的。
(1)ADD AX,AX,CX;将AX与CX相加,并将结果置于AX中
(2)MOV BX,AX;将AX复制到BX
(3)SUB DX,DX,BX;从DX中减去BX,并将结果置于DX中
在这种情况下,微处理器100可以使得MOV微指令被SUB微指令跳越(蛙跳)。在该例中,SUB微指令被称为目标微指令。具体来讲,重命名单元106使目标微指令(SUB微指令)依赖于可跳越MOV微指令的源(即ADD微指令)的最新较旧写程序的结果,而不是依赖于MOV微指令的结果。更具体来讲,重命名单元106将MOV微指令的源复制至目标微指令的源(例如参照图4中的框418和422所述)。这提供了以下优点:在一些情况下,与仅仅依赖于MOV微指令的结果的情况相比,可以更快地发出目标微指令(SUB)至执行单元112以供执行。
在一个实施例中,重命名单元106在每个时钟周期内接收多达三个微指令,并且重命名单元106是三个流水线级的流水线单元(参看图3)。因而,在一个实施例中,在一些时钟周期内,重命名单元106可见到指令流中的多达9个微指令,以确定其是否包括可跳越MOV微指令、以及可以跳越MOV微指令的目标微指令。在一个实施例中,重命名单元106在一个给定的时钟周期内最多可以跳越5个MOV微指令。可以构思其他的实施例,在这些实施例中,每个时钟周期接收到的微指令的数目与流水线级的数目是不同的,因此重命名单元106执行MOV跳越的机会窗口中的微指令的数目也是不同的。一般来讲, 如果一微指令按照程序顺序是在一MOV微指令之后、并且将该MOV微指令的目的地规定为该微指令的源,则该微指令就是潜在的跳越目标,或者简称为目标。下面参照图4来描述潜在目标是否可以跳越MOV微指令(即,被更新为使得该目标微指令能够与MOV微指令同时地或者甚至在MOV微指令之前被分派至其执行单元112,即相对于MOV微指令乱序执行)。
在一个实施例中,重命名单元106包括可跳越MOV队列(LMQ)524(参看图5-8),其可以增加重命名单元106执行MOV跳越的机会窗口。LMQ 524保存与已经离开重命名单元106的潜在可跳越MOV微指令相关的信息。这使得重命名单元106能够在MOV微指令已经离开重命名单元106之后遭遇目标微指令,并使得该目标微指令能够跳越已将其信息存储在LMQ 524中的可跳越MOV微指令。广义来说,以额外复杂性、芯片有效面积以及功耗为代价,可通过提供LMQ 524来增加MOV跳越的机会窗口。
一些微指令将立即数据规定为源操作数,即立即操作数。重命名单元106将立即数总线上的立即数据提供给保留站108。有利地,描述一些实施例,其中当MOV微指令的源操作数为立即操作数时可以进行MOV跳越,如下面更详细描述的。
在一个实施例中,目标微指令本身可以是MOV微指令。例如,在下面的代码序列中,微指令MOV BX,AX可以被微指令MOV DX,BX跳越。也就是说,重命名单元106可以使微指令MOV DX,BX(目标微指令)依赖于ADD微指令(最新较旧写程序)的结果,而不是依赖于微指令MOV BX,AX的结果。
(1)ADD AX,AX,CX;将AX与CX相加,并将结果置于AX中
(2)MOV BX,AX;将AX复制到BX
(3)MOV DX,BX;将BX复制到DX
现在参看图2,示出了图示微指令200的各字段的方框图。微指令200包括用于规定微指令200的操作码的OPCODE字段202。OPCODE 202是用于规定由执行单元112响应于微指令200而要执行的操作的编码值。例如,一个OPCODE 202值命令执行单元112将数据从源移动到目的地,这里表示为MOV指令,或MOV微指令200;另一个OPCODE 202值命令执行单元112将两个源操作数相加,以生成和(ADD);另一个OPCODE 202值命令执行单元112 将两个源操作数相减,以生成差(SUB)。微处理器100的微体系结构的微指令集包括用于命令执行单元112对源操作数执行操作的许多其他OPCODE值。
微指令200还包括用于规定由微指令200生成的结果的目的地的DEST字段204。通常情况下,指令翻译器104通过用于翻译得到微指令200的结构指令来填充DEST 204,以将结构寄存器114规定为目的寄存器。然而,对于由指令翻译器104翻译结构指令而得到的微指令200,指令翻译器104可以依据用来实现该微指令200的集合来填充DEST 204,以规定微处理器100的临时(即,非结构)寄存器。微指令200还包括DEST SIZE字段206,用于规定将被写入到目的寄存器中的结果的尺寸。微指令200还包括DEST ROBIDX字段208,用于规定进入被分配给微指令200的ROB项的ROB 116的索引。执行微指令200的执行单元112将其结果写入到由DEST ROBIDX字段208的值索引的ROB项的结果字段。
微指令200还包括SRC字段212,用于规定数据的源,或源操作数。在一个实施例中,SRC字段212是9位的。优选地,SRC 212的高4位规定源类型。在一个实施例中,所述源类型可以表示所述数据的源是:(1)由SRC 212的低5位标识的结构寄存器114(或临时寄存器);(2)微指令200本身的IMMEDIATE字段222(将在下面描述)中的立即操作数;或(3)在SRC字段212的低5位中编码的立即操作数(例如,常数)。在一个实施例中,IMMEDIATE字段222中的立即操作数为x86型立即值,不过其他实施例也可以构思为适应其他的指令集体系结构。如这里所述,重命名单元106通过立即数总线而将立即操作数提供给保留站108。在情况(1)下,指令翻译器104通过用于翻译得到微指令200的结构指令来填充SRC 212,以将结构寄存器114规定为源寄存器。但是,对于由指令翻译器104翻译结构指令而得到的微指令200,指令翻译器104可以依据用来实现该微指令200的集合来填充SRC212,以规定微处理器100的临时(即,非结构)寄存器。有利地,重命名单元106可以更新SRC 212,以规定不同的结构寄存器114(或临时寄存器)来实现MOV跳越,如这里所述。
微指令200还包括SRC SIZE字段214,用于规定源操作数的尺寸。微指令200还包括SRC ROBIDX字段216,用于规定进入被分配给微指令200的项的ROB 116的索引,所述微指令200用于在非立即源操作数的情况下将源 操作数提供给即时(instant)微指令200。也就是说,SRC ROBIDX 216标识了其结果为用于即时微指令200的非立即源数据的微指令200,这可以通过转发总线118或者由SRC ROBIDX 216所规定的ROB 116项来提供(如果结果提供微指令200还没有退休的话;否则该源操作数将由结构寄存器114或临时寄存器提供)。如上所述,通常由重命名单元106填充SRC ROBIDX 216,以标识由指令翻译器104填充的即时微指令200的SRC 212所规定的结构寄存器114的最新较旧写程序。但是,在可能的情况下,有利的是,重命名单元106填充SRC ROBIDX 216,以标识作为由较旧MOV微指令200的SRC 212所规定的结构寄存器114的最新较旧写程序的微指令200,从而使得立即微指令200跳越MOV微指令200,例如参照图4所述。
微指令200还包括SRC ROBSEL位218,SRC ROBSEL位218实际上是SRC ROBIDX依赖性216的有效位。也就是说,如果SRC ROBSEL位218被设置,则由转发总线118或者ROB 116,更具体来讲是由SRC ROBIDX 216标识的ROB 116项,来提供源操作数;然而,如果该SRCROBSEL位218被清空,则在寄存器操作数的情况下由SRC字段212所规定的结构寄存器文件114,或者在立即操作数的情况下由立即数总线,来提供源操作数。如下面所述(例如,参见图4中的框422),当有可能进行MOV跳越时,重命名单元106把被跳越的MOV微指令200的SRCROBSEL 218复制到即时微指令200(即,目标微指令200)的SRC ROBSEL 218。
微指令200还包括IMMEDIATE字段222,如上所述,如果微指令200包括由SRC字段212表示的立即数源操作数值,则IMMEDIATE字段222保存该立即数源操作数值。最后,微指令200包括表示微指令200是否有效的有效位224。
应当理解的是,根据这里所述的实施例,图2中所示的微指令200字段代表了处理器100的微指令集中的许多微指令,尤其是可以被跳越的MOV微指令200以及跳越MOV微指令200的目标微指令200;但是,在处理器100的微指令集中还可以具有除了图2中所示以外的其他字段布局的其他微指令,它们中的一些可以跳越微指令200。例如,在一些情况下,微指令200还可以包括第二字段集(未示出),所述第二字段集类似于用于第二源操作数的字段212-218(例如,两个源操作数ADD或SUB微指令),该第二字段集的使用 将在下面参照图4进行描述。并且,所述微指令可以包括图2中未示出的其他字段。
现在参看图3,示出了更详细地图示图1的重命名单元106的实施例的方框图。图3的实施例中的重命名单元106包括被分级寄存器分开的三个流水线级,分别用级A、级B和级C表示。在一个实施例中,重命名单元106在每个时钟周期内从指令翻译器104接收多达三个微指令200,分别用INSTR A1,INSTR A2和INSTR A3表示,并且均被接收至流水线分级寄存器302。微指令200穿过级A到达分级寄存器304,在这里分别被表示为INSTR B1,INSTR B2和INSTR B3。微指令200穿过级B到达分级寄存器306,在这里分别被表示为INSTR C1,INSTRC2和INSTR C3。微指令200穿过级C到达保留站108。
重命名单元106还包括重命名和跳越逻辑326,以及与重命名和跳越逻辑326相耦接的重命名表322。当微指令200穿过各级时,由重命名和跳越逻辑326对它们进行处理。因而,根据图3的实施例,在给定时钟周期期间,可以由重命名和跳越逻辑326见到并处理一条具有多达9个微指令200的微指令流(按照程序顺序,从INSTR C1开始,结束于INSTR C3)。更具体来讲,跳越逻辑326可以见到多达9个微指令,以用于标识表示执行MOV跳越的机会的微指令200序列。其他的实施例可以构思为在每个时钟周期内处理更多或者更少的微指令。
当重命名逻辑326处理微指令200时,它会维护重命名表322,以便进行寄存器重命名以及为每个微指令200生成适当的依赖性。另外,当跳越逻辑326处理微指令200时,它会更新目标微指令200,以进行MOV跳越,这将在下面进行进一步地描述。
现在参看图4,示出了图示图1的重命名单元106的操作的流程图。流程在框402开始。
在框402,重命名单元106遭遇微指令200(目标微指令200),并将其SRC字段212与重命名单元106可见到的每个较旧MOV微指令200的DEST字段204进行比较,以确定目标微指令200是否是用于跳越MOV微指令200的候选者。在图3的实施例中,较旧MOV微指令200是位于重命名单元106流水线内的MOV微指令。在参照图5-8描述的替换实施例中,重命名单元106也可以将微指令200的SRC字段212与LMQ 524的每个有效项的DEST字段 204进行比较,以确定目标微指令200是否是用于跳越已经离开重命名单元106的MOV微指令200的候选者。对于其中目标微指令200具有两个源的实施例,对两个源都进行比较。流程进行至判定框404。
在判定框404,如果框402中的比较结果为匹配,则重命名单元106将匹配的MOV微指令200指定为最新匹配的较旧MOV微指令(因为可能存在多个匹配),并且由于该目标已经被标识为存在MOV跳越的潜在可能,因此流程进行至框406;否则,流程结束,即目标微指令200并不是用于进行MOV跳越的候选者。
在框406,重命名单元106检验匹配的MOV微指令200的DEST SIZE 206以及目标微指令200的SRC SIZE 214,以验证匹配的MOV微指令200能够提供由目标微指令200的源规定的所有数据。换句话说,只要匹配的MOV能够提供由目标规定的所有数据,目标源的尺寸可以小于匹配MOV的尺寸(并且可以不同于用于当前操作模式的缺省操作数尺寸,所述当前操作模式例如是x86长模式,保护模式,实时模式)。流程进行至判定框408。
在判定框408,如果重命名单元106确定匹配的MOV能够将所有的数据提供至目标,则流程进行至框412;否则,流程结束,即目标微指令200并不是用于进行MOV跳越的候选者。
在框412,重命名单元106确定介于匹配MOV与目标之间的任意微指令200的DEST204是否与匹配MOV的SRC 212或DEST 204相匹配,而这将使匹配MOV丧失掉被目标跳越的资格。
考虑如下代码序列。
(1)MOV AX,BX;将BX复制到AX
(2)LOAD AX,[ESP];将ESP中存储器地址中的操作数载入到
AX中
(3)SUB CX,AX;从CX中减去AX,并将结果置于CX中
在这种情况下,SUB微指令的源与较旧MOV微指令的目的地相匹配,并且匹配的MOV可以将所有数据提供给目标SUB微指令(在这种情况下,因为它们的尺寸相同)。但是,因为MOV的目的地被介于中间的LOAD微指令覆写,因此该MOV丧失了被目标跳越的资格。
还考虑如下代码序列。
(1)MOV AX,BX;将BX复制到AX
(2)AND BX,DX;对BX和AX执行布尔AND,并将结果置于
BX中
(3)SUB CX,AX;从CX中减去AX,并将结果置于CX中
在这种情况下,因为MOV微指令的源被介于中间的AND微指令覆写,因此匹配的MOV微指令也丧失了被目标SUB微指令跳越的资格。在这种情况下,匹配的MOV必须丧失资格,这是因为介于中间的AND微指令可能在目标SUB微指令准备好从结构BX寄存器114接收其源操作数之前便退休并更新结构BX寄存器114,在这种情况下,SUB将接收错误值。也就是说,SUB本应接收了比MOV更旧的对于BX的最新写程序的结果;但是,该结果由于AND微指令的退休而被破坏(clobbered)。
在一个实施例中,如果目标微指令200已经规定立即数源操作数(在第二寄存器源操作数之外),则规定立即数源操作数的MOV微指令200也丧失被跳越的资格,这是因为重命名单元106包括单个的立即操作数总线;但是,也可以构思其他实施例,在这些实施例中,重命名单元106包括第二立即操作数总线,在这种情况下不受上述约束。流程从框412进行至判定框414。
在判定框414,如果重命名单元106在每个框412中确定匹配的MOV没有丧失资格,则流程进行至判定框416;否则,流程结束,即目标微指令200不是用于MOV跳越的候选者。
在判定框416,重命名单元106根据匹配MOV的SRC 212确定源类型。如果所述源类型表示MOV微指令200的IMMEDIATE字段222中提供的立即数源操作数,则流程进行至框418;否则,如果所述源类型表示SRC字段212中的寄存器源操作数或编码的立即数源操作数,则流程进行至框422。
在框418,重命名单元106将MOV微指令200的IMMEDIATE字段222值复制至目标微指令200的IMMEDIATE字段222。流程进行至框422。
在框422,重命名单元106将匹配MOV的SRC 212、SRC ROBIDX 216以及SRC ROBSEL218的值复制至目标微指令200的相应字段。由于目标在被发出以供执行之前不再需要等待MOV完成(即,生成其结果),因此,这(如果需要,则连同在框418的IMMEDIATE 222的复制一起)完成了跳越匹配MOV的目标。在立即操作数的情况下,由于被跳越的MOV微指令200的SRC ROBSEL 218将被清空,因此SRC ROBSEL 218的复制会清空目标微指令200中的SRCROBSEL 218。在编码的立即数源操作数源类型的情况下,通过复制SRC 212而将编码的立即数源操作数从MOV复制至目标。流程在框422结束。
现在参看图5,示出了更详细地图示图1的重命名单元106的替换实施例的方框图。图5中的重命名单元106类似于图3中的重命名单元106,并且具有类似附图标记的元件也是类似的。图5的实施例还包括可跳越MOV队列(LMQ)524,其与重命名和跳越逻辑326耦接。重命名和跳越逻辑326还从ROB 116接收退休ROB索引信号532,该退休ROB索引信号532规定了将要退休的MOV微指令200的ROB 116索引,这将在下面参照图6进行描述。最后,当跳越逻辑326处理微指令200时,它将会如下面(例如,参见图6-8)所详述的那样来更新LMQ 524。优选地,除了优选不包括OPCODE字段202之外,LMQ 524的每个项包括如图2中所示的MOV微指令200的各字段,这是因为人们都知道LMQ 524项中存储的信息与MOV微指令200相关联。LMQ524保存与已经离开重命名单元106的MOV微指令有关的信息,并且可以使得重命名单元106能够令目标微指令跳越已经离开重命名单元106的MOV微指令。LMQ524可在以额外复杂性、芯片有效面积以及功耗作为交换的情况下,增加MOV跳越的机会窗口。
现在参看图6,示出了图示图5的重命名单元106的操作的流程图。流程在框602开始。
在框602,重命名单元106已经处理MOV微指令200,并且已经准备好将其从重命名单元106发送至保留站108。流程进行至框604。
在框604,重命名单元106确定比MOV微指令200新的任意微指令200的DEST 204是否与MOV微指令200的SRC 212或DEST 204匹配,这将使得MOV微指令200丧失掉被任何后续的微指令200跳越的资格,即被跳越逻辑326后续处理的任意微指令200跳越的资格。也就是说,跳越逻辑326确定在其可见范围内是否存在在程序顺序中比写入MOV微指令的源或目的地的MOV微指令200新的任意微指令。流程进行至判定框606。
在判定框606,如果微指令200丧失掉资格,则流程结束。换句话说,由于已经知道,比当MOV微指令200离开重命名单元106时已经由跳越逻辑326 处理过的微指令新的微指令200是无法被跳越的,因此不需要浪费LMQ 524中的项。如果MOV微指令200没有丧失资格,则流程进行至框608。
在框608,重命名单元106将MOV微指令200发送至保留站108,并将关于MOV微指令200的信息推送到LMQ 324中。在一个实施例中,LMQ 324的每个项包括与图2的微指令200相同的字段。在一个实施例中,LMQ 524项不包括OPCODE 202,这不是必要的,因为已经知道该信息是与MOV微指令200相关联的。应当理解的是,即使有效的MOV微指令200没有被推送到LMQ 524中,它也有可能在它仍处于重命名单元106中的同时被一个或多个目标微指令跳越,如参照图4所述。MOV微指令200没有被推送到LMQ 524中的事实仅仅表明它无法被比当MOV微指令200离开重命名单元106时已经被跳越逻辑326处理过的微指令新的微指令200跳越。流程在框608结束。
现在参看图7,示出了图示图5的重命名单元106的操作的流程图。流程在框702开始。
在框702,重命名单元106遭遇微指令200,该微指令200的DEST字段204与LMQ 524中的一个或多个有效项的SRC字段212或DEST字段204相匹配。流程进行至框704。
在框704,重命名单元106使得在框702中发现的每个匹配项无效。流程在框704结束。
现在参看图8,示出了图示图5的重命名单元106的操作的流程图。流程在框802开始。
在框802,重命名单元106通过信号532来接收退休MOV微指令200的ROB 116索引。在一个实施例中,微处理器100能够在每个时钟周期内使多达三个微指令退休,并且重命名单元106被配置为通过信号532来接收多达三个退休MOV微指令200的ROB 116索引。流程进行至框804。
在框804,重命名单元106将在框802接收到的ROB 116索引与LMQ 524中的每个有效项的DEST ROBIDX字段216进行比较,以确定该LMQ 524是否包括用于退休MOV微指令200的有效项。如果是的话,则重命名单元106使所述匹配项无效。流程在框804结束。
虽然已经描述了其中执行MOV跳越可能性的完全补集的多个实施例,但是也可以构思其他实施例,在这些实施例中执行MOV跳越可能性的子集。例 如,可以构思其中立即值的MOV不可跳越的实施例。该实施例可具有需要较少存储空间的优点,即用于比较的立即值的存储空间(例如,在可跳越MOV队列中),该存储空间是相对很大的(例如32或64位)。另外,可以构思其中不存在可跳越MOV队列的实施例,以便减少空间以及复杂度,而是当潜在的可跳越MOV和目标位于重命名单元流水线中的同时执行MOV跳越。
虽然这里已经对本发明的各实施例进行了描述,但是应当理解的是,它们都是以举例的方式提出的,而并不受限于此。相关计算机技术领域内的技术人员显然能够在不脱离本发明范围的情况下进行各种形式或者细节上的变化。例如,可以用软件来实现这里描述的例如功能、制造、建模,仿真、描述和/或设备和方法的测试。这可以通过使用一般编程语言(例如C,C++),硬件描述语言(HDL),其中包括Verilog HDL,VHDL等,或者其他可用的程序来实现。这种软件可以设置在任何已知的计算机可用介质,例如磁带,半导体,磁盘或光盘(例如,CD-ROM,DVD-ROM等),网络,有线,无线或其他通信介质中。这里所述的设备和方法的实施例可被包括在半导体知识产权核,例如微处理器核(例如,以HDL具体实现或规定)中,并在集成电路生产中被转换为硬件。另外,这里所述的设备和方法可以作为硬件和软件的组合来实现。因而,本发明不应该受限于这里所述的任何示例性实施例,而应当仅仅根据所附权利要求书及其等同物来限定。特别地,本发明可以在通用目的计算机中可使用的微处理器装置内实现。最后,本领域内的技术人员应当理解的是,在不脱离由所附权利要求限定的本发明范围的情况下,他们可以很容易地使用已披露内容及特定实施例为基础来设计或修改其他结构,以实现与本发明相同的目的。

Claims (19)

1.一种处理器,用于实现第一指令以及在程序顺序中位于所述第一指令之后的第二指令的乱序执行,其中所述第一指令包括源指示器和目的指示器,其中所述源指示器规定数据的源,其中所述目的指示器规定数据的目的地,其中所述第一指令命令所述处理器将数据从所述源移动到所述目的地,其中所述第二指令规定用于规定数据的源的源指示器,所述处理器包括:
重命名单元,用于:
将所述第二指令的源指示器与所述第一指令的目的指示器进行比较;
确定按照程序顺序是否存在位于所述第一指令和第二指令之间的用于写入到所述第一指令的源或目的地的任何其他指令;以及
如果在所述第一指令和第二指令之间不存在用于写入到所述第一指令的源或目的地的所述其他指令,并且所述第二指令的源指示器与所述第一指令的目的指示器相匹配,则用所述第一指令的源指示器来更新所述第二指令的源指示器。
2.如权利要求1所述的处理器,其中所述重命名单元还用于:
确定表示数据的源的第一指令源指示器是包括在所述第一指令中的立即值,而不是所述处理器的结构寄存器;以及
对所述第二指令进行更新,以包括由所述第一指令规定的所述立即值。
3.如权利要求1所述的处理器,其中所述第一指令包括尺寸指示器,所述尺寸指示器规定将被移动至由所述目的指示器规定的目的地的数据的尺寸,其中所述重命名单元还用于即使由所述第一指令的尺寸指示器规定的数据的尺寸小于所述处理器的当前操作模式下的缺省操作数尺寸,仍执行所述更新。
4.如权利要求3所述的处理器,其中所述第二指令包括尺寸指示器,所述尺寸指示器规定如下数据的尺寸,所述数据的源是由所述第二指令的源指示器规定的,
其中所述重命名单元还用于:
确定由所述第一指令的尺寸指示器规定的数据尺寸是否至少与由所述第二指令的尺寸指示器规定的数据尺寸一样大;以及
只有当由所述第一指令的尺寸指示器规定的数据尺寸至少与由所述第二指令的尺寸指示器规定的数据尺寸一样大时,才执行所述更新。
5.如权利要求1所述的处理器,还包括:
执行单元,用于执行所述第一指令和第二指令;以及
其中所述处理器用于在将所述第一指令派送至所述执行单元之中的一个执行单元之前或与之同时地,将所述第二指令派送至所述执行单元之中的所述一个执行单元。
6.如权利要求1所述的处理器,还包括:
项的队列,其中所述队列的各项中的每一项用于保存与命令所述处理器将数据从源移动至目的地的所述其他指令相关联的信息,其中所述其他指令包括所述其他指令的源指示器和所述其他指令的目的指示器,其中所述源指示器规定了数据的源,其中所述目的指示器规定了数据的目的地;以及
其中所述重命名单元用于将所述信息推送到所述队列中,并对其中推送入所述信息的项进行验证。
7.如权利要求6所述的处理器,其中所述队列的项保存所述第一指令的目的指示器,通过所述重命名单元将所述第一指令的目的指示器与所述第二指令的源指示器相比较。
8.如权利要求7所述的处理器,其中在所述重命名单元已经处理完所述第一指令并将与所述第一指令相关联的信息推送至队列中之后、同时所述重命名单元仍在处理第二指令时,执行所述比较。
9.如权利要求6所述的处理器,其中所述重命名单元还用于:
对于所述队列的各项中的每一项,响应于遭遇到写入到所述第一指令的源或目的地的所述其他指令而使得所述项无效。
10.如权利要求6所述的处理器,其中所述重命名单元还用于:
对于所述队列的各项中的每一项,响应于接收到所述处理器正在使所述其他指令退休的指示而使得所述项无效。
11.如权利要求1所述的处理器,还包括:
重排序缓冲器,包括项的阵列,其中所述项的阵列中的每一项用于接收已执行指令的结果,并具有进入所述阵列的关联索引;
其中所述第一指令和第二指令的每一个都包括源重排序缓冲器索引,其中所述重命名单元最初令所述源重排序缓冲器索引规定进入如下指令的重排序缓冲器的阵列的索引,所述指令是由所述指令的相应源指示器规定的相应的数据的源的最近写程序;以及
其中所述重命名单元还用于如果在所述第一指令和第二指令之间不存在写入到所述第一指令的源或目的地的所述其他指令,并且所述第二指令的源指示器与所述第一指令的目的指示器相匹配,则用所述第一指令的源重排序缓冲器索引来更新所述第二指令的源重排序缓冲器索引。
12.如权利要求1所述的处理器,还包括:
其中所述第一指令和第二指令的每一个都包括标识字段,所述标识字段用于表示所述数据的源应当是由所述数据的源的相应源指示器规定的所述处理器的结构寄存器,还是由所述数据的源的相应重排序缓冲器索引规定的重排序缓冲器的项;以及
其中所述重命名单元还用于如果在所述第一指令和第二指令之间不存在写入到所述第一指令的源或目的地的所述其他指令,并且所述第二指令的源指示器与所述第一指令的目的指示器相匹配,则用所述第一指令的标识字段来更新所述第二指令的标识字段。
13.一种由处理器使用的方法,用于帮助实现第一指令以及在程序顺序中位于所述第一指令之后的第二指令的乱序执行,其中所述第一指令包括源指示器和目的指示器,其中所述源指示器规定数据的源,其中所述目的指示器规定数据的目的地,其中所述第一指令命令所述处理器将数据从所述源移动到所述目的地,其中所述第二指令规定用于规定数据的源的源指示器,所述方法包括:
将所述第二指令的源指示器与所述第一指令的目的指示器进行比较;
确定按照程序顺序是否存在位于所述第一指令和第二指令之间的用于写入到所述第一指令的源或目的地的任何其他指令;以及
如果在所述第一指令和第二指令之间不存在用于写入到所述第一指令的源或目的地的所述其他指令,并且所述第二指令的源指示器与所述第一指令的目的指示器相匹配,则用所述第一指令的源指示器来更新所述第二指令的源指示器。
14.如权利要求13所述的方法,还包括:
确定表示数据的源的第一指令源指示器是包括在所述第一指令中的立即值,而不是所述处理器的结构寄存器;以及
对所述第二指令进行更新,以包括由所述第一指令规定的所述立即值。
15.如权利要求13所述的方法,还包括:
其中所述第一指令包括尺寸指示器,所述尺寸指示器用于规定将被移动至由所述目的指示器规定的目的地的数据的尺寸;以及
即使由所述第一指令的尺寸指示器规定的数据的尺寸小于所述处理器的当前操作模式下的缺省操作数尺寸,仍执行所述更新。
16.如权利要求15所述的方法,还包括:
其中所述第二指令包括尺寸指示器,所述尺寸指示器规定如下数据的尺寸,所述数据的源是由所述第二指令的源指示器规定的;
确定由所述第一指令的尺寸指示器规定的数据尺寸是否至少与由所述第二指令的尺寸指示器规定的数据尺寸一样大;以及
只有当由所述第一指令的尺寸指示器规定的数据尺寸至少与由所述第二指令的尺寸指示器规定的数据尺寸一样大时,才执行所述更新。
17.如权利要求13所述的方法,还包括:
派送所述第一指令以供执行;以及
在派送所述第一指令以供执行的步骤之前或与之同时地,派送所述第二指令以供执行。
18.如权利要求13所述的方法,还包括:
其中所述处理器包括重排序缓冲器,所述重排序缓冲器包括项的阵列,其中所述项的阵列中的每一项用于接收已执行指令的结果,并具有进入所述阵列的关联索引;
其中所述第一指令和第二指令的每一个都包括源重排序缓冲器索引;
最初令所述第一指令和第二指令的每一个的源重排序缓冲器索引规定进入如下指令的重排序缓冲器的阵列的索引,所述指令是由所述指令源指示器规定的相应的数据的源的最近写程序;以及
如果在所述第一指令和第二指令之间不存在写入到所述第一指令的源或目的地的所述其他指令,并且所述第二指令的源指示器与所述第一指令的目的指示器相匹配,则用所述第一指令的源重排序缓冲器索引来更新所述第二指令的源重排序缓冲器索引。
19.如权利要求17所述的方法,还包括:
其中,所述第一指令和第二指令的每一个都包括标识字段,所述标识字段用于表示数据的源应当是由所述数据的源的相应源指示器规定的所述处理器的结构寄存器,还是由所述数据的源的相应重排序缓冲器索引规定的重排序缓冲器的项;以及
如果在所述第一指令和第二指令之间不存在写入到所述第一指令的源或目的地的所述其他指令,并且所述第二指令的源指示器与所述第一指令的目的指示器相匹配,则用所述第一指令的标识字段来更新所述第二指令的标识字段。
CN201510004934.7A 2014-05-27 2015-01-06 跳越mov指令的处理器和由该处理器使用的方法 Active CN104615409B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462003206P 2014-05-27 2014-05-27
US62/003,206 2014-05-27
US14/315,122 2014-06-25
US14/315,122 US9588769B2 (en) 2014-05-27 2014-06-25 Processor that leapfrogs MOV instructions

Publications (2)

Publication Number Publication Date
CN104615409A CN104615409A (zh) 2015-05-13
CN104615409B true CN104615409B (zh) 2017-07-07

Family

ID=53149873

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510004934.7A Active CN104615409B (zh) 2014-05-27 2015-01-06 跳越mov指令的处理器和由该处理器使用的方法

Country Status (1)

Country Link
CN (1) CN104615409B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112286577B (zh) * 2020-10-30 2022-12-06 上海兆芯集成电路有限公司 处理器及其操作方法
CN112379928B (zh) * 2020-11-11 2023-04-07 海光信息技术股份有限公司 指令调度方法以及包括指令调度单元的处理器
CN114721724A (zh) * 2022-03-07 2022-07-08 电子科技大学 一种基于risc-v指令集的六级流水线处理器
TWI811134B (zh) * 2022-10-13 2023-08-01 金麗科技股份有限公司 亂序緩衝器及其相關管理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790826A (en) * 1996-03-19 1998-08-04 S3 Incorporated Reduced register-dependency checking for paired-instruction dispatch in a superscalar processor with partial register writes
US6625723B1 (en) * 1999-07-07 2003-09-23 Intel Corporation Unified renaming scheme for load and store instructions
CN1877532A (zh) * 2005-06-06 2006-12-13 松下电器产业株式会社 编译装置
CN101689107A (zh) * 2007-06-27 2010-03-31 高通股份有限公司 用于将条件指令扩展为无条件指令与选择指令的方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6857060B2 (en) * 2001-03-30 2005-02-15 Intel Corporation System, apparatus and method for prioritizing instructions and eliminating useless instructions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790826A (en) * 1996-03-19 1998-08-04 S3 Incorporated Reduced register-dependency checking for paired-instruction dispatch in a superscalar processor with partial register writes
US6625723B1 (en) * 1999-07-07 2003-09-23 Intel Corporation Unified renaming scheme for load and store instructions
CN1877532A (zh) * 2005-06-06 2006-12-13 松下电器产业株式会社 编译装置
CN101689107A (zh) * 2007-06-27 2010-03-31 高通股份有限公司 用于将条件指令扩展为无条件指令与选择指令的方法和系统

Also Published As

Publication number Publication date
CN104615409A (zh) 2015-05-13

Similar Documents

Publication Publication Date Title
TWI517044B (zh) 非對稱執行單元之有效排程的方法與設備
CN108475193B (zh) 用于字节排序指令和用于四位组排序的处理器、方法和系统
TWI742048B (zh) 根據指令類型來配置負載及儲存緩衝器的處理器、方法及系統
KR101594090B1 (ko) 공유 메모리에 대한 액세스들의 동기화를 완화하기 위한 프로세서들, 방법들 및 시스템들
CN104756090B (zh) 提供扩展的缓存替换状态信息
JP5758515B2 (ja) バイパスマルチプルインスタンス化テーブルを用いた移動除去のためのシステム及び方法
CN108027767A (zh) 寄存器读取/写入排序
CN105593807B (zh) 跨群组界限的指令群组最佳化
TW201602906A (zh) 實施動態無序處理器管線的方法與設備
CN106020778A (zh) 还原寄存器重命名映射
CN104615409B (zh) 跳越mov指令的处理器和由该处理器使用的方法
CN107810477A (zh) 解码的指令的重复使用
US9940139B2 (en) Split-level history buffer in a computer processing unit
CN108196884A (zh) 利用生成重命名的计算机信息处理器
CN105247479B (zh) 指令次序实施指令对、处理器、方法和系统
CN108885551A (zh) 存储器复制指令、处理器、方法和系统
CN108027733A (zh) 在目标字段中存储无效
CN102890624B (zh) 用于管理无序毫码控制操作的方法和系统
CN108369510A (zh) 用于以无序加载的置换的指令和逻辑
US20220107812A1 (en) Highly parallel processing architecture using dual branch execution
CN108369508A (zh) 使用处理器指令前缀的二进制转换支持
US20230131389A1 (en) Quantum instruction set architecture (quasar)
US9588769B2 (en) Processor that leapfrogs MOV instructions
US9959122B2 (en) Single cycle instruction pipeline scheduling
CN108369512A (zh) 用于置换序列的指令和逻辑

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into 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.