CN101110017B - 一种组合指令的技术 - Google Patents
一种组合指令的技术 Download PDFInfo
- Publication number
- CN101110017B CN101110017B CN2006101111596A CN200610111159A CN101110017B CN 101110017 B CN101110017 B CN 101110017B CN 2006101111596 A CN2006101111596 A CN 2006101111596A CN 200610111159 A CN200610111159 A CN 200610111159A CN 101110017 B CN101110017 B CN 101110017B
- Authority
- CN
- China
- Prior art keywords
- uop
- instruction
- many instructions
- instructions
- fusion
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000004927 fusion Effects 0.000 claims abstract description 14
- 230000000052 comparative effect Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 2
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 238000007689 inspection Methods 0.000 claims 1
- 238000005516 engineering process Methods 0.000 description 16
- 230000014509 gene expression Effects 0.000 description 8
- 241001269238 Data Species 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 238000012856 packing Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 229910044991 metal oxide Inorganic materials 0.000 description 2
- 150000004706 metal oxides Chemical class 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
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
一种微操作(uop)融合技术。更具体地,本发明的实施例涉及了将源自两条或多条指令的两个或多个uop相融合的技术。
Description
技术领域
本发明的实施例涉及微处理器体系结构。本发明的实施例尤其涉及使用其数量要少于微处理器指令内的微操作(uop)的数量来表示两条或更多条微处理器指令的技术。
背景技术
在典型的高性能超标量微处理器中,一种用于改善性能的技术是通过将一个或多个微操作(”uop”)组合成一个可作为单个uop执行的“融合”uop来降低执行各种微处理器指令的uop数量。在本公开通篇使用的术语“uop”用于描述由指令解码成的任何子指令或操作,以便处理器执行由所述指令描述的所述操作。
现有的uop融合技术通常用于组合由单条指令生成的uop。此外,现有的某些uop融合技术可以在处理器流水线内或者可以在这些uop被退回并提交给处理器状态之前解融合这些已融合的uop。在相应指令退回之前正在解融合已融合的uop会降低受益于uop融合的某些性能。
在任一情况下,现有的uop融合技术按照处理器和/或计算机系统性能来说在某些环境中仍是效率低下的。
附图说明
本发明的实施例以实例的方式示出,并且不限于附图所示的情况,在附图中相同的编号指代相似的元素并且所述附图包括:
图1根据本发明的一个实施例示出了用于表示一种指令组合技术的逻辑元件。
图2是根据本发明的一个实施例示出了要被执行以判定在程序顺序中相邻的两个微操作(uop)是否应该融合的操作流程图。
图3是根据本发明的一个实施例示出了要被执行以判定在程序顺序中不相邻的两个微操作(uop)是否应该融合的操作流程图。
图4是根据本发明的一个实施例示出了要被执行以判定在程序顺序中相邻的两个微操作(uop)应如何被退回的操作流程图。
图5是根据本发明的一个实施例示出了要被执行以判定在程序顺序中不相邻的两个微操作(uop)应如何被退回的操作流程图。
图6是在其中可以使用本发明一个实施例的具有点对点总线体系结构的计算机系统。
图7是在其中可以使用本发明一个实施例的具有共享总线体系结构的计算机系统。
具体实施方式
本发明的实施例涉及微处理器体系结构。更具体地,本发明的实施例涉及使用其数量要少于两条或更多条微处理器指令中任何指令所包含数量的微操作(”uop”)表示所述两条或更多条指令或uop的技术,其中所述微处理器以与执行和退回这些指令或uop本身所导致的处理器状态实质上相同的方式执行并退回所述uop。在一个实施例中,可以识别由单个uop表示的两条指令,这两条指令被用单个uop来表示,其中对该单个uop指令的执行和退回会导致与执行和退回所述两条指令实质上相同的处理器状态。
在本发明的某些实施例中,在程序顺序中彼此相邻或不相邻出现的两条或更多条指令在它们适于组合的情况下都能被一个uop表示。在一个实施例中,如果与第一条指令相关联的第一uop的执行结果可由与第二条指令相关联的第二uop所使用,这些指令无论在程序顺序中相邻还是不相邻地出现都适于组合。两条指令的组合结果可由两个uop的部分结果组成,例如可由第一uop的寄存器值和第二uop的标志组成。由于第二uop的标志覆盖了第一uop的标志,因此就删除该第一uop的标志。例如,相加两个操作数的指令(“add”指令)可用作将所述加法指令的结果与另一个操作数相比较的另一条指令(“cmp”指令)的源。因此在本发明的一个实施例中,负责执行所述加法操作的uop与负责执行所述比较运算的uop可由执行加法和比较两种操作的一个uop表示。
在另一个实施例中,在程序顺序中彼此相邻或不相邻出现的多于两条的指令也可由单个uop表示。例如在一个实施例中,引起操作数值递增的指令(“inc”指令)、cmp指令和基于cmp指令比较结果改变指令指针的指令(“jump”指令)可由单个uop表示以在执行时完成所有三条指令,因为与这三条指令相关联的uop在功能上是相连的(例如,cmp指令使用的inc指令的输出,而cmp指令的输出又为jump指令所用)。在此情况下,组合的结果由寄存器值组成,而任何标志或目标地址则被存储在其他地方。但在其它实施例中,这些标志和目标地址也可以连同寄存器值一并存储。
通常,本发明的实施例有助于改进实施例对应的微处理器或计算机系统的性能。例如,至少一个实施例可以允许对于现有技术相同的解码资源量实现更多的指令被解码来增加指令解码带宽。本发明的某些实施例还可以进一步改进性能以增加uop重命名的带宽、增强uop保留和/或重排序能力、降低uop执行延迟时间、减小功耗或增加退回带宽。从在此描述的本发明一个或多个实施例中可以认识到的上述的部分或全部优势。
图1根据本发明的一个实施例示出了用于执行一种指令组合技术的逻辑元件。在其他实施例中,图1可以包括其他逻辑元件。此外,图1中的所述逻辑元件还可以用于电子设备,诸如微处理器、微控制器或其他设备。图1所示的逻辑元件还可跨多个电子设备——诸如多个处理器分布。此外,图1中的一个或多个逻辑元件还可以表示硬件逻辑(诸如由互补金属氧化物半导体(CMOS)门组成的逻辑)、软件(诸如由计算机可读指令组成的程序例程)或者硬件逻辑和软件的组合。
更具体地,图1示出了其中存储有指令的指令队列101,其中的指令在由解码器105-120解码成uop之后将由处理器执行单元150执行。图1所示的一个实施例是以自下而上的顺序从指令队列中读取指令,而在其他实施例中,也可以其他的顺序读取指令,例如自上而下。在一个实施例中,第一指令由解码器105解码而相应的uop则存储在寄存器140内,第二指令由解码器110解码而相应的uop则存储在寄存器135内,第四指令由解码器115解码而相应的uop则存储在寄存器130内并且第五指令由解码器120解码而相应的uop则存储在寄存器125内。在其它实施例中,被解码的uop可被存储在其他存储结构中或被组合入一个或多个寄存器。
在一个实施例中,发现第三指令与第二指令相关联并且可由单个uop表示第二和第三指令。例如在一个实施例中,第二指令可以是比较两个值的指令(“cmp”指令),而第三指令可以是基于比较结果改变指令指针的指令(例如,“jump”指令)(例如,如果cmp指令比较的值不相等就跳转,或“jne”指令)。在第二指令和第三指令分别是cmp和jne指令的情况下,一个实施例可以使用一个能够执行这两条指令的uop来表示这两条指令,诸如比较两个值并基于比较结果挑取条件分支(例如,“cmpjcc”uop),并且产生跳转目标和CMP的标志。在此情况下就无需解码第三指令,并且只需将该指令的跳转目标送至cmpjcc uop。
在一个实施例中,对cmp指令的解码就指示出下一条指令将会是某种跳转指令,因此就无需再对该跳转指令进行解码。然而在其它实施例中,第二指令可以是后续指令尚未设定而必须被实际解码的另一条指令。在此实例中,在表示第二和第三指令的uop被确定之前,必须通过解码逻辑发送该第三指令。
在其它实施例中,由单个uop表示的两条指令在指令队列中不是彼此相邻的,而是由一条或多条指令隔开的。
通常,本发明的实施例允许由少于两条或多条指令中所含uop数量的一个uop数量来表示所述的两条或多条指令。因此,本发明的实施例基于对能够与其他指令组合并能由单个uop或者至少比被组合指令所包括的uop数量要少的uop所表示的一条或多条指令的识别,就能因为无需解码一条或多条指令而增加可用解码逻辑的带宽。
重新参考图1,存储在独立寄存器125-140中的uop取决于存储在指令队列里相应的指令。例如在一个实施例中,第一和第四指令可以是从存储器源中载入数据的指令(例如,“load”指令)。因此,存储在寄存器140和130内的uop就可以是对应于load指令的uop(例如“load”uop)。类似的,第五指令可以是算术指令,诸如乘以两个或更多值的指令(例如,“mul”指令)。因此,存储在寄存器125内的uop就可以是对应于mul指令的uop(例如“mul”uop)。因为在一个实施例中,第二和第三指令是通过它们可由一个uop表示(例如,“cmpjcc”uop)而被确定这两者相关,所以寄存器135就包括被执行时将执行第二和第三两条指令的uop。
图1还示出了其中存储在寄存器125-140内的uop可被排序和预定用于执行单元150的执行的保留站145。更具体地,保留站可以存储诸如cmpjcc uop 147的表示一条或多条指令的uop直到其被送入执行单元。在执行单元执行了该cmpjcc或其他uop之后,处理器状态信息就必须改变并因此通过“退回(retiring)”该cmpjccuop而能被其他电子设备和程序所见。因为要被退回的uop是表示两条或多条指令的uop,所以必须以uop的数目犹如等于其所表示的指令的数目似的反映uop的执行的方式表示所得的状态信息。
在执行表示两条或多条指令的uop而导致错误、陷阱或帮助的实施例中,通常需要确定该uop的哪一部分导致错误、陷阱或帮助的产生,从而在退回期间保持适当的机器状态。例如在一个实施例中,页错误仅由cmpjcc uop的cmp部分引起。在此情况下,页错误服务例程就就可连同cmpjcc uop的cmp部分被执行之前的状态信息被一并调用。在一个实施例中,可以使用本领域内已知的技术来处理由cmpjcc uop的cmp部分引起的页错误的情况。类似地在一个实施例中,陷阱通常仅由cmpjcc uop的jcc部分引起。在此情况下,服务例程就就可连同由cmpjcc uop完成所产生的机器状态被一并调用以服务该陷阱。在一个实施例中,服务该陷阱的技术可以是与服务未融合的jcc操作的那些已知的技术大致类似或相同的现有技术。
在此公开中除非特别指出,通常由异常处理程序连同在产生错误的指令执行之前在程序顺序中出现的指令执行结果的状态信息来服务错误指令。例如在一个实施例中,如果出现页错误,由执行在产生页错误的指令之前在程序顺序中出现的指令而产生的状态信息被送至故障处理例程,从而能够检索预期页并重新执行发生错误的指令。
另一方面,除非特别指出,通常由异常处理程序连同由执行引发陷阱的指令所产生的状态信息来服务该引起陷阱情形的指令。例如在一个实施例中,如果出现断点调试陷阱,就退回引起该陷阱的所述指令并在服务例程被调用以服务该陷阱之前调拨相应的处理器状态。
在由uop表示两条或多条指令并且该uop的各组成错误、陷阱或帮助状态并非相互排斥的情况下,诸如由uop执行多次jcc操作或cmp操作的情况下,可能无法弄清恰好在该uop执行之前的状态是否被用于uop的退回或者恰好在该uop执行之后的状态是否被用作服务陷阱、错误或帮助的正确状态信息。在此情况下,就需要调用一个特殊的服务例程以生成由该uop各组成操作单独产生的状况。
例如在一个cmpjcc uop表示比较和跳转指令的实施例中,对应于uop的cmp部分或该uop的jcc部分的操作执行结果都可能产生代码段的违犯。为了确定是哪部分的操作引起代码段违犯并且确定应该被提供给服务例程以纠正错误的正确状态,首先就需要调用一个特殊服务例程以重新存储该uop的cmp部分的状态以确定所述代码段的违犯是否由cmp操作产生。如果不是,就能推论出代码段违犯是由uop的jcc部分引起的,于是就能够连同执行cmpjcc所产生的状态信息而不是cmpjcc uop的cmp和jcc部分之间的中间状态来调用服务例程以处理该无效。
如果错误或其他状况是由表示两条或多条指令的uop的全部两个(或者多个,在uop表示多于两条指令的情况下)组成操作的执行所产生的,则可通过独立执行各组成操作而非执行表示两条或多条指令的uop来确定导致该状况的uop部分。尽管如此,作为执行表示两条或多条指令的uop的两个或多个组成操作的结果而出现多于一种状况的情况十分罕见。
如下将参考图2、3、4和5来描述如何执行本发明至少一个实施例的各个方面。也可使用参考图2、3、4和5而明确讨论的技术之外的其他技术来实现本发明其他实施例的相应方面。此外,如下参考图2、3、4和5的某些讨论示出了在其中组合两条指令并由至少一个融合uop来表示的至少一个实施例的各个方面。然而,在其它实施例中,也可将如下参考图2、3、4和5的描述应用于在其中组合多于两条指令并由一个或多个融合uop表示的实施例。
图2是根据本发明的一个实施例示出了要被执行以判定对应于程序顺序中相邻指令的两个uop是否应该被融合的操作流程图。在操作201判定所述两个uop是否适于融合。在一个实施例中,若一uop的输出是要被融合的其他uop的来源,则所述的两个或多个uop就适于融合。如果不适合,则在操作210处就不融合这些uop。如果适合,就在操作205判定两个uop所使用的寄存器是否相容。在一个实施例中,若两个uop的寄存器是用于这两个uop的同一目的寄存器——在这种情况下该对uop的第二uop的目的寄存器盖写第一uop的目的寄存器或者uop之一不具有目的寄存器因此任一uop都可使用该目的寄存器,这些寄存器相容。如果这些寄存器不相容,则在操作215处就不融合这些uop。如果两个uop的寄存器相容,则在操作220判定两个uop的标志目标是否相容。在一个实施例中,如果两个uop都改写相同的标志——在这种情况下这两个uop中的第二uop最后更新标志或者uop中只有一个更新标志字段,则这些标志目标相容。如果两个uop的标志目标不相容,则在操作225处就不融合这些uop。
如果所述标志目标相容,则在操作230判定这两个uop的源操作数是否相容。在一个实施例中,如果来自这两个uop的寄存器操作数未溢出可用于存储所述源操作数的寄存器、即时/置换值未溢出可用存储,同时由第一uop转发给第二uop的结果可被隐含地或显式地处理,则这些源操作数相容。如果这些源操作数不相容,则在操作235处就不融合这些uop。
如果这些源操作数相容,则在操作240判定这两个uop是否对应于在程序顺序中彼此相邻的指令。如果是,就在操作245使用分别执行所述两个指令的至少两个uop功能的单个融合uop来表示两个指令。否则,在操作250处就不融合这些uop 。
图3是示出了可用于本发明一个实施例的操作的流程图,在该实施例中的两个或多个uop对应于在程序顺序中不相邻的指令。在一个实施例中,所述流程图示出了结合在程序顺序中由一个或多个中间uop隔开的第一和第二uop的实施例而使用的操作。例如,在操作301判定中间uop是否要读取目标寄存器,其中这些寄存器含有在程序顺序中要被融合的第一uop的结果。如果是,则在操作305处就不融合第一和第二uop。
如果中间uop不读取含有要来自在程序顺序中要被融合的第一uop的结果的目标寄存器,就在操作310判定在程序顺序中要被融合的所述第一uop写入的标志是否会被中间uop读取。如果是,则在操作315处就不融合这些uop。如果在程序顺序中要被融合的所述第一uop的标志不由中间uop读取,则随后在操作320就判定所述中间uop是否要写入任何用来为在程序顺序中要被融合的所述第二uop存储源操作数的任何寄存器。如果是,则在操作325处就不融合这些uop。
如果中间uop没有写入任何用来为在程序顺序中要被融合的所述第二uop存储源操作数的寄存器,则随后在操作330处确定所述中间uop是否写入任何可由在程序顺序中要被融合的所述第二uop读取的标志。如果是,则在操作335处就不融合第一和第二uop。但若所述中间值没有写入任何可由在程序顺序中要被融合的所述第二uop读取的标志,随后就在操作340处确定所述中间uop是否要在第二uop将要存储数据的任何标志或寄存器中存储数据。如果是,则在操作345处就不融合第一和第二uop。
如果不是,则在操作350处判定由所述中间uop存储的数据是否会被另一个中间uop读取。如果是,则随后在操作355处就不融合第一和第二uop。如果不是,随后就在操作360处融合所述第一和第二uop并可忽略要在第二uop将要存储数据的任何标志或寄存器中存储数据的中间uop。在某些实施例中,中间uop可被标记为“非写入”中间uop,从而为程序或逻辑指明可忽略所述中间值并可融合所述第一和第二uop。
图4是根据本发明的一个实施例示出了要被执行以判定对应于程序顺序中相邻指令的两个uop如何被退回的操作流程图。在操作401,判定对由至少一个融合uop表示的组合指令的执行是否导致了陷阱或错误条件。如果不是,随后就在操作405处退回所述组合指令并将程序顺序中组合指令中的最末条的状态提交给处理器体系结构。如果出现了错误或陷阱,就在操作410确定错误的产生是否是因为执行了程序顺序中组合指令中的第一条而引起的。如果是,则在操作420处使用由执行程序顺序中组合指令中的第一条而产生的状态信息来调用故障处理例程。如果不是,就在操作425处确定是否作为执行程序顺序中组合指令中的第二条的结果产生了陷阱。如果是,就在操作430使用由执行程序顺序中组合指令中的第二条而产生的状态信息来调用陷阱处理例程。
如果不是,则可能已经出现了作为执行程序顺序中组合指令中的第一条的结果的陷阱或者出现了作为执行程序顺序中组合指令中的第二条的结果的错误。另外也可能会出现多个异常,从而不能确定正确的结果状态。于是在操作435处,诸如在处理器固件中实现的那样(“ucode”),软件例程可重建由执行第一指令产生的状态,从而就能退回所述第一指令。由于所述第一uop的结果(标志和目标寄存器)可用,因此就可能实现以上描述。
在一个实施例中,ucode可以确定通过执行由一个或多个融合uop表示的组合指令中第一指令产生的异常情形,并将其列入优先。此外,在重建执行所述组合指令中的第一条所产生的状态之后,对所述组合指令中的第一条的退回就会引起对错误或陷阱处理例程的调用。在一个实施例中,如果所述组合指令中的第一条指令引起一陷阱,就可使用上述ucode例程确定执行第一和第二组合指令之间形成的处理器状态(“中间”状态)。另一方面,如果执行组合指令中的第一条指令没有产生异常状态并且从组合指令中的第二条指令产生的异常状态是模糊的,则ucode就重新执行所述组合指令中的第二条指令并以与犹如分别执行组合指令相同的方式响应异常。
图5是根据本发明的一个实施例示出了要被执行以确定对应于程序顺序中不相邻指令的两个uop如何被退回的操作流程图。在操作501,确定对由至少一个融合uop表示的组合指令的执行是否导致了陷阱或错误。如果没有,就在操作510处使用由执行程序顺序中组合指令中的最末条指令所产生的状态信息退回所述组合指令。如果有,随后就在操作515调用异常处理例程。在一个实施例中,异常处理例程可以从所述组合指令中带有适当机构(诸如,标志)的第一条指令中重新启动对所述组合指令的执行以避免将所述组合指令当作融合uop而再次执行。在一个实施例中,所述组合指令的第一条指令的完成会带有错误或陷阱,而可使用错误或陷阱处理例程来对上述错误或陷阱进行处理。另外,如果错误是因为执行在程序顺序中被融合的uop之间出现的中间uop的结果而出现的,就能仅简单退回所述组合指令中的第一条指令。
图6示出了其中可使用本发明一个实施例的点对点(PtP)计算机系统。更具体地,图6示出了其中通过多个点对点接口互连处理器、存储器和输入/输出设备的系统。
图6中的系统可以包括多个处理器,但为了显示的明晰仅示出了两个处理器670和680。处理器670和680分别包括各自与存储器62和64相连的本地存储器控制集线器(MCH)672和682。处理器670和680可以使用PtP接口电路678和688经由点对点(PtP)接口650交换数据。处理器670和680可以经由独立的PtP接口652和652使用点对点接口电路676、694、686和698与芯片组690交换数据。芯片组690还可以经由高性能图形接口639与高性能图形电路638交换数据。
本发明的至少一个实施例可以位于图6每个PtP总线代理中的处理核内。而本发明的其它实施例则可位于图6系统中的其他电路、逻辑单元或设备内。此外,还可将本发明的其它实施例分配给图6所示的各电路、逻辑单元或设备。
图7示出了其中可使用本发明一个实施例的前端总线(front-side-bus)(FSB)计算机系统。处理器705访问一级(L1)高速缓存710和主存储器715中的数据。在本发明的其它实施例中,高速缓存具有二级(L2)高速缓存或位于计算机系统存储器层次结构中的其他存储器。此外在某些实施例中,图7的计算机系统同时包括L1高速缓存和L2高速缓存,它们组成了在其中可在L1和L2高速缓存之间共享相干数据的相容高速缓存分级结构。在其他实施例中,可以存在多于1高速缓存的分级结构。
在图7的处理器中示出了的是本发明的一个实施例706。而本发明的其它实施例则可在本系统内的其他设备(诸如图形控制器)中实现,或者被分配给系统中的硬件、软件或它们的组合。
所述主存储器可由各种存储器源实现,诸如包括动态随机存取存储器(DRAM)、硬盘驱动器(HDD)720或者位于经由网络接口730的连接的包含各种存储设备和技术的远程计算机系统内的存储器源。高速缓存可以位于处理器内或非常接近处理器,诸如位于处理器的局域总线707上。此外,高速缓存还可以包括相对较快的存储器单元,诸如六-晶体管(6T)单元或者大致等于或快于存取速度的其他存储器单元。其中或者至少相关联,每个总线代理是本发明的至少一个实施例706,以便于在所述总线代理之间迅速存储操作。
可以使用互补金属氧化物半导体(CMOS)电路和逻辑器件(硬件)实现本发明实施例的各个方面,同时可使用存储在机器可读介质上的指令(软件)执行其他方面,其中上述软件可由处理器执行从而引发本发明一个实施例的执行。此外,本发明的某些实施例可以在硬件中独立执行而其他实施例则可在软件中独立执行。
虽然本发明业已参考了示出的实施例,但是本说明书并不以限定的方式进行解释。所示实施例的各种修改及其其他实施例对本领域普通技术人员来说都是显而易见的,并且位于本发明的精神和范围内。
Claims (24)
1.一种用于处理指令的装置,包括:
存储至少两条指令解码成的至少两个微操作uop的存储单元;
将所述至少两个uop融合成表示所述至少两个uop的完全功能的单个融合uop的uop融合逻辑元件;
在不拆散所述融合uop的情况下执行所述融合uop的执行逻辑元件。
2.如权利要求1所述的装置,其特征在于,所述多条指令中第一条指令的执行结果的目标存储位置是所述多条指令中第二条指令的操作数的源存储位置。
3.如权利要求2所述的装置,其特征在于,所述多条指令中的第一条和第二条指令在程序顺序中彼此相邻出现。
4.如权利要求2所述的装置,其特征在于,所述多条指令中的第一条和第二条指令在程序顺序中彼此不相邻出现。
5.如权利要求2所述的装置,其特征在于,所述融合uop被按顺序退回以保持将要执行所述融合uop的处理器内部的正确状态。
6.如权利要求1所述的装置,其特征在于,还包括存储与所述融合uop相关联的操作数、存储器偏移量和分支目标的保留站。
7.如权利要求6所述的装置,其特征在于,还包括执行所述融合uop的执行单元。
8.如权利要求7所述的装置,其特征在于,还包括将所述融合uop的执行结果状态信息提交至机器状态的退回单元。
9.一种用于处理指令的方法,包括:
在解码两条或多条指令中任一条指令之前确定所述两条或多条指令是否可由单个微操作uop表示;
使用单个uop表示所述两条或多条指令,其中所述单个uop对应于一指令所解码成的多个操作之一;
仅解码所述两条或多条指令中的一条指令。
10.如权利要求9所述的方法,其特征在于,所述确定包括检查所述两条或多条指令中第一条指令的源操作数存储位置和所述两条或多条指令中第二条指令的结果目标存储位置之间的关系。
11.如权利要求10所述的方法,其特征在于,还包括使用单个uop表示两条或多条指令。
12.如权利要求9所述的方法,其特征在于,包括重新排列所述单个uop相对于其执行可能会导致不正确机器状态的其他uop的顺序。
13.如权利要求12所述的方法,其特征在于,还包括如果执行所述单个uop会导致错误、帮助和陷阱情形之一的情况则调用服务例程以产生正确的机器状态。
14.如权利要求13所述的方法,其特征在于,所述服务例程使用恰好在执行所述单个uop之前的uop执行结果的状态信息。
15.如权利要求13所述的方法,其特征在于,所述服务例程使用所述单个uop执行结果的状态信息。
16.如权利要求13所述的方法,其特征在于,所述服务例程使用与所述两条或多条指令的程序顺序中的第一条指令相对应的uop执行结果的状态信息。
17.一种用于处理指令的系统,包括;
存储由单个微操作uop表示的两条或多条指令的存储器单元;
仅解码所述两条或多条指令中一条指令的解码逻辑元件;
在由所述解码逻辑元件解码两条或多条指令中所述一条指令之前确定所述两条或多条指令是否由单个uop表示的第一逻辑元件,其中所述单个uop对应于一指令所解码成的多个操作之一。
18.如权利要求17所述的系统,其特征在于,还包括执行所述单个uop并退回所述单个uop以保持正确处理器状态的处理器。
19.如权利要求17所述的系统,其特征在于,还包括与所述存储器单元耦合的音频设备。
20.如权利要求18所述的系统,其特征在于,所述处理器包括存储在被所述解码逻辑元件解码之前彼此相邻的两条或多条指令的指令队列。
21.如权利要求18所述的系统,其特征在于,所述处理器包括存储在被所述解码逻辑元件解码之前彼此不相邻的两条或多条指令的指令队列。
22.如权利要求17所述的系统,其特征在于,所述两条或多条指令包括比较两个操作数的第一指令以及响应于所述两个操作数的比较结果而改变指令指针的第二指令。
23.如权利要求17所述的系统,其特征在于,所述两条或多条指令包括生成第一和第二操作数之和的第一指令以及将所得和与第三操作数比较的第二指令。
24.如权利要求17所述的系统,其特征在于,所述第一逻辑元件包括至少一条指令,其中当所述指令被处理器执行时,会引发所述处理器确定所述两条或多条指令是否要由单个uop表示。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/200,777 US8082430B2 (en) | 2005-08-09 | 2005-08-09 | Representing a plurality of instructions with a fewer number of micro-operations |
US11/200,777 | 2005-08-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101110017A CN101110017A (zh) | 2008-01-23 |
CN101110017B true CN101110017B (zh) | 2012-12-12 |
Family
ID=37743903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006101111596A Expired - Fee Related CN101110017B (zh) | 2005-08-09 | 2006-08-08 | 一种组合指令的技术 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8082430B2 (zh) |
CN (1) | CN101110017B (zh) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7937564B1 (en) * | 2005-09-28 | 2011-05-03 | Oracle America, Inc. | Emit vector optimization of a trace |
US8370576B1 (en) | 2005-09-28 | 2013-02-05 | Oracle America, Inc. | Cache rollback acceleration via a bank based versioning cache ciruit |
US7546420B1 (en) | 2005-09-28 | 2009-06-09 | Sun Microsystems, Inc. | Efficient trace cache management during self-modifying code processing |
US8037285B1 (en) | 2005-09-28 | 2011-10-11 | Oracle America, Inc. | Trace unit |
US8024522B1 (en) | 2005-09-28 | 2011-09-20 | Oracle America, Inc. | Memory ordering queue/versioning cache circuit |
US8051247B1 (en) | 2005-09-28 | 2011-11-01 | Oracle America, Inc. | Trace based deallocation of entries in a versioning cache circuit |
US8032710B1 (en) | 2005-09-28 | 2011-10-04 | Oracle America, Inc. | System and method for ensuring coherency in trace execution |
US7870369B1 (en) | 2005-09-28 | 2011-01-11 | Oracle America, Inc. | Abort prioritization in a trace-based processor |
US7987342B1 (en) | 2005-09-28 | 2011-07-26 | Oracle America, Inc. | Trace unit with a decoder, a basic-block cache, a multi-block cache, and sequencer |
US7949854B1 (en) | 2005-09-28 | 2011-05-24 | Oracle America, Inc. | Trace unit with a trace builder |
US7966479B1 (en) | 2005-09-28 | 2011-06-21 | Oracle America, Inc. | Concurrent vs. low power branch prediction |
US8015359B1 (en) | 2005-09-28 | 2011-09-06 | Oracle America, Inc. | Method and system for utilizing a common structure for trace verification and maintaining coherency in an instruction processing circuit |
US7953961B1 (en) | 2005-09-28 | 2011-05-31 | Oracle America, Inc. | Trace unit with an op path from a decoder (bypass mode) and from a basic-block builder |
US7877630B1 (en) | 2005-09-28 | 2011-01-25 | Oracle America, Inc. | Trace based rollback of a speculatively updated cache |
US8499293B1 (en) | 2005-09-28 | 2013-07-30 | Oracle America, Inc. | Symbolic renaming optimization of a trace |
US8019944B1 (en) | 2005-09-28 | 2011-09-13 | Oracle America, Inc. | Checking for a memory ordering violation after a speculative cache write |
US8370609B1 (en) | 2006-09-27 | 2013-02-05 | Oracle America, Inc. | Data cache rollbacks for failed speculative traces with memory operations |
US8010745B1 (en) | 2006-09-27 | 2011-08-30 | Oracle America, Inc. | Rolling back a speculative update of a non-modifiable cache line |
US20090198876A1 (en) * | 2008-01-31 | 2009-08-06 | Jimmy Kwok Lap Lai | Programmable Command Sequencer |
US8090931B2 (en) * | 2008-09-18 | 2012-01-03 | Via Technologies, Inc. | Microprocessor with fused store address/store data microinstruction |
US9690591B2 (en) * | 2008-10-30 | 2017-06-27 | Intel Corporation | System and method for fusing instructions queued during a time window defined by a delay counter |
US8843729B2 (en) | 2010-04-27 | 2014-09-23 | Via Technologies, Inc. | Microprocessor that fuses MOV/ALU instructions |
CN102193775B (zh) * | 2010-04-27 | 2015-07-29 | 威盛电子股份有限公司 | 微处理器融合搬运/算术逻辑运算/条件跳跃指令 |
US8856496B2 (en) | 2010-04-27 | 2014-10-07 | Via Technologies, Inc. | Microprocessor that fuses load-alu-store and JCC macroinstructions |
US20120144174A1 (en) * | 2010-12-01 | 2012-06-07 | Advanced Micro Devices, Inc. | Multiflow method and apparatus for operation fusion |
US9292470B2 (en) | 2011-04-07 | 2016-03-22 | Via Technologies, Inc. | Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program |
US9317288B2 (en) | 2011-04-07 | 2016-04-19 | Via Technologies, Inc. | Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
US9141389B2 (en) | 2011-04-07 | 2015-09-22 | Via Technologies, Inc. | Heterogeneous ISA microprocessor with shared hardware ISA registers |
US9645822B2 (en) | 2011-04-07 | 2017-05-09 | Via Technologies, Inc | Conditional store instructions in an out-of-order execution microprocessor |
US9274795B2 (en) * | 2011-04-07 | 2016-03-01 | Via Technologies, Inc. | Conditional non-branch instruction prediction |
US8880851B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9336180B2 (en) | 2011-04-07 | 2016-05-10 | Via Technologies, Inc. | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
US9898291B2 (en) | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
US9146742B2 (en) | 2011-04-07 | 2015-09-29 | Via Technologies, Inc. | Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA |
US9176733B2 (en) | 2011-04-07 | 2015-11-03 | Via Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
US9244686B2 (en) | 2011-04-07 | 2016-01-26 | Via Technologies, Inc. | Microprocessor that translates conditional load/store instructions into variable number of microinstructions |
US9128701B2 (en) | 2011-04-07 | 2015-09-08 | Via Technologies, Inc. | Generating constant for microinstructions from modified immediate field during instruction translation |
US9323530B2 (en) | 2012-03-28 | 2016-04-26 | International Business Machines Corporation | Caching optimized internal instructions in loop buffer |
US9513915B2 (en) * | 2012-03-28 | 2016-12-06 | International Business Machines Corporation | Instruction merging optimization |
US9292291B2 (en) * | 2012-03-28 | 2016-03-22 | International Business Machines Corporation | Instruction merging optimization |
US20140047221A1 (en) * | 2012-08-07 | 2014-02-13 | Qualcomm Incorporated | Fusing flag-producing and flag-consuming instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media |
CN103443763B (zh) * | 2012-08-08 | 2016-10-05 | 英特尔公司 | 包含对重写虚拟函数的调用的支持的isa桥接 |
US9886277B2 (en) * | 2013-03-15 | 2018-02-06 | Intel Corporation | Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources |
US9483266B2 (en) | 2013-03-15 | 2016-11-01 | Intel Corporation | Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources |
US20160179542A1 (en) * | 2014-12-23 | 2016-06-23 | Patrick P. Lai | Instruction and logic to perform a fused single cycle increment-compare-jump |
GB2540405B (en) * | 2015-07-16 | 2018-04-11 | Advanced Risc Mach Ltd | Execution of micro-operations |
US20190102197A1 (en) * | 2017-10-02 | 2019-04-04 | Samsung Electronics Co., Ltd. | System and method for merging divide and multiply-subtract operations |
US10459726B2 (en) * | 2017-11-27 | 2019-10-29 | Advanced Micro Devices, Inc. | System and method for store fusion |
US11835988B2 (en) * | 2017-12-01 | 2023-12-05 | Advanced Micro Devices, Inc. | System and method for load fusion |
US10929136B2 (en) | 2018-04-11 | 2021-02-23 | Futurewei Technologies, Inc. | Accurate early branch prediction using multiple predictors having different accuracy and latency in high-performance microprocessors |
US20200042322A1 (en) * | 2018-08-03 | 2020-02-06 | Futurewei Technologies, Inc. | System and method for store instruction fusion in a microprocessor |
US11294685B2 (en) * | 2019-06-04 | 2022-04-05 | International Business Machines Corporation | Instruction fusion using dependence analysis |
US20220019436A1 (en) * | 2020-07-20 | 2022-01-20 | International Business Machines Corporation | Fusion of microprocessor store instructions |
US11567771B2 (en) * | 2020-07-30 | 2023-01-31 | Marvell Asia Pte, Ltd. | Method and apparatus for back end gather/scatter memory coalescing |
US11567767B2 (en) | 2020-07-30 | 2023-01-31 | Marvell Asia Pte, Ltd. | Method and apparatus for front end gather/scatter memory coalescing |
US12008369B1 (en) * | 2021-08-31 | 2024-06-11 | Apple Inc. | Load instruction fusion |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040139429A1 (en) * | 2000-12-29 | 2004-07-15 | Ronny Ronen | System and method for fusing instructions |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5903761A (en) * | 1997-10-31 | 1999-05-11 | Preemptive Solutions, Inc. | Method of reducing the number of instructions in a program code sequence |
US6889318B1 (en) * | 2001-08-07 | 2005-05-03 | Lsi Logic Corporation | Instruction fusion for digital signal processor |
US7051190B2 (en) * | 2002-06-25 | 2006-05-23 | Intel Corporation | Intra-instruction fusion |
US6920546B2 (en) * | 2002-08-13 | 2005-07-19 | Intel Corporation | Fusion of processor micro-operations |
US20040128480A1 (en) * | 2002-12-31 | 2004-07-01 | Intel Corporation | Register file read port to support uop fusion |
US20040199755A1 (en) * | 2003-04-07 | 2004-10-07 | Zeev Sperber | Apparatus and methods for exception handling for fused micro-operations by re-issue in the unfused format |
US20040233930A1 (en) * | 2003-05-19 | 2004-11-25 | Modular Computing & Communications Corporation | Apparatus and method for mobile personal computing and communications |
US20050060524A1 (en) * | 2003-09-17 | 2005-03-17 | Ittai Anati | Processor and methods for micro-operations generation |
US7343482B2 (en) * | 2004-10-20 | 2008-03-11 | Arm Limited | Program subgraph identification |
US20060277398A1 (en) * | 2005-06-03 | 2006-12-07 | Intel Corporation | Method and apparatus for instruction latency tolerant execution in an out-of-order pipeline |
-
2005
- 2005-08-09 US US11/200,777 patent/US8082430B2/en not_active Expired - Fee Related
-
2006
- 2006-08-08 CN CN2006101111596A patent/CN101110017B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040139429A1 (en) * | 2000-12-29 | 2004-07-15 | Ronny Ronen | System and method for fusing instructions |
Non-Patent Citations (1)
Title |
---|
Hennessy.Computer Architechure a quantitative approach,3rd edition.机械工业出版社,2003,202,221,865. * |
Also Published As
Publication number | Publication date |
---|---|
US20070038844A1 (en) | 2007-02-15 |
CN101110017A (zh) | 2008-01-23 |
US8082430B2 (en) | 2011-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101110017B (zh) | 一种组合指令的技术 | |
CN100533416C (zh) | 控制处理环境的数据传输的方法和系统 | |
CN101395573B (zh) | 乱序处理器中的分布式记分板调度 | |
CN101933002A (zh) | 包含用于逻辑错误保护的混合冗余的处理器 | |
CN102103483A (zh) | 汇聚和散布多个数据元素 | |
JPS61107434A (ja) | デ−タ処理装置 | |
CN102103482B (zh) | 自适应优化的比较-交换操作 | |
WO2006039595A2 (en) | Executing checker instructions in redundant multithreading environments | |
US6542988B1 (en) | Sending both a load instruction and retrieved data from a load buffer to an annex prior to forwarding the load data to register file | |
TW202138996A (zh) | 切換影堆疊指標的硬體設備以及方法 | |
JP2007087108A (ja) | 演算処理装置,情報処理装置,及びレジスタファイルの制御方法 | |
CN102890624B (zh) | 用于管理无序毫码控制操作的方法和系统 | |
US9495169B2 (en) | Predicate trace compression | |
CN102576327B (zh) | 用于监控计算环境的方法和系统 | |
US20080065834A1 (en) | Method to Prevent Operand Data with No Locality from Polluting the Data Cache | |
US8332596B2 (en) | Multiple error management in a multiprocessor computer system | |
EP1220091B1 (en) | Circuit and method for instruction compression and dispersal in VLIW processors | |
JPH04503582A (ja) | コンピュータの分散型パイプライン制御装置及び方法 | |
JP3170472B2 (ja) | レジスタ・リマップ構造を有する情報処理システム及び方法 | |
EP1220088B1 (en) | Circuit and method for supporting misaligned accesses in the presence of speculative load instructions | |
EP2309393A1 (en) | Cache memory control device, cache memory device, processor, and controlling method for storage device | |
US7353343B2 (en) | Memory management system for preventing program execution when CPU fetches execution code from unoccupied region of memory | |
US6865665B2 (en) | Processor pipeline cache miss apparatus and method for operation | |
CN116194885A (zh) | 微处理机存储指令的融合 | |
CN106663027A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121212 Termination date: 20180808 |
|
CF01 | Termination of patent right due to non-payment of annual fee |