CN102193775B - 微处理器融合搬运/算术逻辑运算/条件跳跃指令 - Google Patents

微处理器融合搬运/算术逻辑运算/条件跳跃指令 Download PDF

Info

Publication number
CN102193775B
CN102193775B CN201110104552.3A CN201110104552A CN102193775B CN 102193775 B CN102193775 B CN 102193775B CN 201110104552 A CN201110104552 A CN 201110104552A CN 102193775 B CN102193775 B CN 102193775B
Authority
CN
China
Prior art keywords
micro
operational order
macro instruction
instruction
microprocessor
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
CN201110104552.3A
Other languages
English (en)
Other versions
CN102193775A (zh
Inventor
泰瑞.派克斯
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.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
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 US13/034,839 external-priority patent/US8843729B2/en
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN102193775A publication Critical patent/CN102193775A/zh
Application granted granted Critical
Publication of CN102193775B publication Critical patent/CN102193775B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Advance Control (AREA)

Abstract

一种微处理器融合搬运/算术逻辑运算/条件跳跃指令。该微处理器用以接收微处理器的指令集架构的第一及第二宏指令,第一宏指令命令微处理器从其第二结构性寄存器搬运第一运算元到第一结构性寄存器,第二宏指令命令微处理器使用在第二结构性寄存器内的第一运算元及微处理器的第三结构性寄存器内的第二运算元去执行一算术/逻辑运算以产生一运算结果,载入运算结果到第一结构性寄存器。指令转译器转译第一及第二相邻宏指令成为单一微运算指令以供一执行单元执行;单一微运算指令命令执行单元使用在第二结构性寄存器内的第一运算元及第三结构性寄存器内的第二运算元去执行算术/逻辑运算以产生运算结果,然后载入该运算结果到第一结构性寄存器内。

Description

微处理器融合搬运/算术逻辑运算/条件跳跃指令
技术领域
本发明涉及微处理器指令的转译,特别是涉及在转译过程中可融合一些宏指令的微处理器。
背景技术
许多近代的微处理器都具有使用者可视的架构(有时被称为宏观架构(macroarchitecture)),亦即指令集和程序工程师可能用的资源(resource)及一明显可区隔的微观架构(microarchitecture)。宏指令是微处理器架构指令集中的指令。相对地,微运算指令(micro-op)是微观架构下的微观指令集(microinstruction set)中的指令。微处理器执行单元实际执行的是微运算指令而不是宏指令。指令转译器转译宏指令成一个或更多个微运算指令114,而这些微运算指令将被送到执行单元去执行。微处理器可以处理程序宏指令的指令处理量(throughput)或速率,大约就是指令转译器转译宏指令成一个或多个微运算指令的函数,这点对超大纯量(superscaler)和/或非循顺序(out-of-order)执行微处理器而言更是如此。
发明内容
本发明提供一种微处理器,用以接收该微处理器的指令集架构的第一及第二相邻宏指令,其中第一宏指令命令微处理器从微处理器第二结构性寄存器去搬运一第一运算元到微处理器的一第一结构性寄存器,其中第二宏指令则是命令微处理器使用在第二结构性寄存器内的第一运算元及微处理器的第三结构性寄存器内的一第二运算元去执行一算术/逻辑运算以产生一运算结果,然后载入该运算结果到第一结构性寄存器内。微处理器包含一执行单元及一指令转译器。指令转译器用以同时转译第一及第二相邻宏指令成为单一微运算指令以供该执行单元执行;上述的单一微运算指令是命令该执行单元使用在该第二结构性寄存器内的第一运算元及第三结构性寄存器内的第二运算元去执行该算术/逻辑运算以产生运算结果,然后载入该运算结果到第一结构性寄存器内。
本发明还揭示一种处理微处理器的指令集架构的第一及第二相邻宏指令的方法,其中上述第一宏指令命令该微处理器从微处理器第二结构性寄存器去搬运一第一运算元到该微处理器的一第一结构性寄存器,其中上述的第二宏指令命令该微处理器使用在该第二结构性寄存器内的第一运算元及该微处理器的第三结构性寄存器内的一第二运算元去执行一算术/逻辑运算以产生一运算结果,然后载入该运算结果到该第一结构性寄存器内。本发明的方法包含:同时转译该第一及第二相邻宏指令成单一微运算指令以供该微处理器的一执行单元执行;上述的单一微运算指令命令该执行单元使用在第二结构性寄存器内的第一运算元及第三结构性寄存器内的第二运算元去产生运算结果,然后载入该运算结果到第一结构性寄存器内。
附图说明
图1是描绘依据本发明的微处理器的方块图。
图2是说明ROB的一字段的方块图。
图3是依据本发明的功能方块图,其描绘x86 MOV型宏指令和x86 ALU型宏指令及其被图1中的指令转译器所融合成为ALU微运算指令的功能方块图。
图4描绘一流程图,为图1的微处理器执行宏指令融合及其被转译为微运算指令的执行方块图。
图5是描绘本发明的微处理器的功能方块图。
图6是依据本发明实施例,描绘x86 MOV型宏指令、x86 ALU型宏指令、以及x86 JCC型宏指令被图5中的指令转译器所融合成为ALU/JCC微运算指令的功能方块图。
图7描绘一流程图,为图5的微处理器执行宏指令融合及其被转译为微运算指令的执行方块图。
附图符号说明
100微处理器     102指令高速缓存
103撷取单元     107指令指标寄存器
105控制寄存器   108指令转译器
112微码单元    114微运算指令
116寄存器配置表 124执行单元
148结构性寄存器 202结果字段
204已完成标志  206例外标志
208NSIP字段    212已融合标志
302运算码(op code)字段304来源字段
306目的字段   312运算码字段
314来源字段   316来源/目的字段
322运算码字段 306地址来源字段
312运算码(op code)字段 322运算码字段
325来源B字段324来源A字段
404,408,414,418,424,428,434,438图4流程图步骤
704,708,714,718,724,728,734,738图7流程图步骤
128重排序缓冲器(ROB)
具体实施方式
请参考图1,其显示本发明微处理器100的方块图。微处理器100包含一指令高速缓存102及一指令撷取单元103,用以从指令高速缓存102撷取宏指令104。指令高速缓存102包含一指令指标寄存器107(architecturalinstruction pointer)。当一指令集的指令引退(retied)时,指令指标寄存器107就被指令流中的下一指令的地址所更新。在所提取的指令不属于有分支的情况下,指令流中的下一指令的地址就是下个顺序的指令;在所提取的指令属于有分支的情况下,指令流中的下一指令的地址就是依分支指令所分派的目标地址。大部分时间下,撷取单元103所提供的提取地址给指令高速缓存102不同于指令指标寄存器107的值,这是因为微处理器100的管线特性(pipelined nature)以及因为微处理器包含一分支预测器(branch predictor),其预先所给的分支指令所分派的目标地址的时间,必须早于管线中指令被引退的时间。宏指令104是由微处理器100的指令集架构所指定。在本发明实施例中,微处理器100的指令集架构大致符合了x86的架构(请参考IA-32),而宏指令104是来自x86的架构。一处理器被称为是一x86架构处理器,若它可以正确地执行一些应用程序的主要部分,并且这些应用程序是设计给x86处理器执行的话。一应用程序能正确地执行即是指能获得预期的运算结果,特别是指当微处理器100执行x86指令集并且包含x86使用者可视的寄存器集(register set)之时。
微处理器100也包含指令转译器108,用以转译宏指令104成为微运算指令114,以被微处理器100的执行单元124所执行。以下将对指令转译器108进一步说明。
微处理器100也包含一微码单元112,其包含一微码存储器,用以储存微码或微码程序(microcode routine)和微顺序器(microsequencer),用以从微码存储器指令提取微码,而微码也是微运算指令114。
微处理器100也包含一寄存器配置表(register allocation table(RAT)116,用以依程序指令顺序,从指令转译器108及微码单元112中接收微运算指令114,寄存器配置表(RAT)116是一个产生及维护微运算指令114依附信息的配置表。寄存器配置表116耦接于一些个执行单元124及一微处理器100的重排序缓冲器ROB(Reorder buffer)128。这些执行单元124执行微运算指令114,特别是对被选上的MOV及ALU宏指令104进行融合时,由这些执行单元124其中之一执行由指令转译器108所产生的ALU微运算指令114(如图3所示)。微处理器100还包含一结构性寄存器148及非结构性寄存器(未图示)的数据。在本发明实施例中,结构性寄存器148包括熟知的x86EFLAGS(标志)寄存器。
ROB 128是一环形队列(queue)或阵列的字段(entry),其结构详述于图2。每一ROB 128字段432为不同的微运算指令114储存信息。寄存器配置表116也在每一微运算指令114被分派到保留站(未图示)之前,在ROB 128中配置一字段给它,而保留站也是微运算指令114等待分派至执行单元124前的储存处。因此,ROB 128维护着微运算指令114在程序中的顺序,其使得ROB 128可依据微运算指令114及它们所对应的宏指令104被转译的顺序来进行指令的引退。
本发明的优点是指令转译器108可用以融合两个宏指令104成为单一微运算指令114。亦即,当指令转译器108检测到它接收到二个相邻宏指令104,而且该两个二个相邻宏指令104是宏指令104流的一指定型时,指令转译器108能够解码和转译该两个相邻宏指令104成为单一微运算指令114,例如一个ALU微运算指令114,用以执行两个融合宏指令104所指示的功能。更特别的是,指令转译器108融合两个相邻近的宏指令104中的第一个是一寄存器搬运(MOV)型宏指令,而第二个则是一个寄存器的算术-逻辑单元(ALU)型宏指令。寄存器搬(MOV)型宏指令的例子是MOVAPSXMM1,XMM2指令,这个指令命令微处理器100从XMM1寄存器搬运算元至XMM2寄存器。(ALU)型宏指令的例子是x86 ADDPS XMM1,XMM3指令,这个指令命令微处理器100去加总XMM1寄存器及XMM3寄存器内的值,再将运算结果放回XMM1寄存器内。虽然上文仅以MOV型宏指令及ALU型宏指令为实例做说明,但应了解,还有许许多多的MOV型宏指令及ALU型宏指令存在,且在将来还有新的宏指令被产生,但本发明的实施例仍可应用其中。
传统的指令转译器可转译如上所述的两个宏指令104成两个不同的微运算指令114。更特别的是,传统的指令转译器108可转译寄存器MOV型宏指令成为一第二微运算指令114。不过,本发明的指令转译器108将两个宏指令104融合成单一的ALU微运算指令114的好处是可以增加每个时钟周期下的指令数量或是微处理器100的处理量,因为微处理器100可以较少的资源去处理两个相邻寄存器MOV/ALU宏指令。例如,因为在指令转译器108处理后会少1个微运算指令114被分派到微处理器100的管线中,于是每一寄存器配置表116、保留站及ROB 128都能少消耗了一个字段,这样即可有效增加执行非循序微处理器100的预视(lookahead)能力,于是可利用指令层级平行(instruction-level parallelism)的机制。此外,由于执行单元124少占用一个执行序列(slot),该执行序列就可以用于执行其它的微运算指令114。在指令转译器108内宏指令的融合也是有优点的,因为它可以使指令转译器108在每一时钟周期中消耗更多的宏指令104,于是可以每一时钟周期中发出有限数量的微运算指令114。还有,比起指令转译器108必须等一额外的时钟周期才能转译条件跳跃宏指令的情况来说,在相同时钟周期中能同时转译两个宏指令的能力,可允许指令转译器108能看到(see)以及很快地转译下一宏指令,这点对于下一个宏指令是分支宏指令的情形是更加重要的。更进一步的说,有能力在一时钟周期内引退两个宏指令也可增加处理量。最后,一个较小的指令转译器108要比较大的指令转译器108具有能以更小、更快且较低电耗的处理潜力。
微处理器100也包含一控制寄存器105,其包含一位,该位可以依据在此描绘的融合特征,去命令指令转译器108是否执行融合的操作。
请参考图2的功能方块图,其更详细的描绘图1中的ROB 128的字段232,其包含一结果字段202以储存微运算指令114的一运算结果、一完成标志204、例外标志206、一下一顺序指令指标字段(NSIP;next sequentialinstruction pointer)208、一已融合标志212。
当一执行单元124检测到一微运算指令114导致一例外条件时,执行单元124会在配置给微运算指令114的字段232设定例外标志(except flag)206。当微运算指令114准备引退时,若ROB 128检测到例外标志206被设定,ROB 128就采取必要动作,例如禁止以微运算指令114的运算结果更新微处理器100的结构状态、和/或引发一例外处理器(exception handler),例如微码单元112,这部份将在后文再详加描述。
已融合标志212用以指示微运算指令114是否被指令转译器108经由融合两个宏指令104所转译而来。
NSIP字段208所持有的是下一顺序指令指标。NSIP是宏指令104被转译为微运算指令114之后的下一顺位指令的存储器地址。NSIP随微运算指令114的执行向下递增。在融合宏指令104的情况下,NSIP字段208所持有的是上一个融合宏指令104被转译为微运算指令114后的下一顺序指令。有关NSIP字段208的进一步细节描述请参见图4的方块434及图7的方块734。
请参考图3,其描绘x86寄存器MOV型宏指令及寄存器ALU型宏指令的功能方块图、以及其依据本发明图1中的指令转译器108融合成一个ALU微运算指令114的情形。
寄存器MOV型宏指令104包含一运算码(op code)字段302、来源字段304及一目的字段306。来源字段304指定待搬运的数据运算元来源寄存器、目的字段306指派要将来源寄存器的数据运算元搬去的目的寄存器。
寄存器ALU宏指令104包含一运算码(op code)字段312、一来源字段314及一来源/目的字段316。来源字段314指派运算码内所指派的算术/逻辑运算的第一数据运算元的来源寄存器。
ALU微运算指令114包含一运算码字段322、一来源A字段324、来源B字段325及一目的字段326。指令转译器108传送寄存器MOV宏指令104的值到ALU微运算指令114的来源字段324。指令转译器108传送来源/目的字段316的值到ALU微运算指令114的目的字段326。
请参考图4的流程图,其说明了图1的微处理器100执行指令融合及执行微运算指令114转译的结果。流程开始于方块404。
于方块404中,指令转译器108从指令高速缓存102接收了x86 MOV型的宏指令104和相邻的x86 ALU型宏指令104。特别的是,寄存器MOV宏指令104指定第一寄存器(通常是REGY)给来源字段304并指定第二寄存器(通常是REGX)给目的字段306。此外,寄存器ALU宏指令104指定第三寄存器(通常是REGZ)给来源/目的字段316,并由寄存器MOV宏指令104所指定的目的字段306做为其来源/目的字段316。本申请发明人了解到寄存器MOV宏指令104及寄存器ALU宏指令104的结合,可有效率的执行ALU运算在REGY及REGZ上、然后将运算结果放回REGX的操作之中。因此,利用微处理器100微架构下的ALU指令,便能获得搭配(accommodate)两个来源运算元和一个第三目的运算元、以及使得指令转译器108融合成两个适当的寄存器-指定MOV型宏指令及ALU型宏指令成单一的ALU微运算指令114的好处。应注意的是,指定”加(add)”以外的ALU运算的ALU宏指令104,也以能通过本发明的方法被融合。流程接着到方块408。
于方块408中,指令转译器108转译于方块404中所接收的宏指令104成为单一ALU微运算指令114,如图3所示。此外,指令转译器108也计算上一个融合宏指令104的NSIP,亦即在ALU宏指令104之后的宏指令104的存储器地址。接着前进到方块414。
于方块414中,寄存器配置表116接收了ALU微运算指令114并计算它的依附性,并且在ROB 128内为它配置了一字段232。寄存器配置表116设定已融合标志212以指示它是从已融合的宏指令104转译来的。此外,寄存器配置表116以方块408所计算的NSIP填入字段232的NSIP字段208。最后,寄存器配置表116分派ALU微运算指令114给保留站以提供给执行单元124执行。接着前进到方块418。
于方块418中,执行单元124对来源A字段324及来源B字段325的运算元,执行ALU微运算指令114所指定的ALU运算以得到一运算结果。执行单元124提供该运算结果给ROB 128以储存在结果字段202中(下一个字段是目的字段326,其为遇到例外条件时,在方块434用来指定目的寄存器的字段)。依据ALU操作的运算结果,执行单元124也产生一立即的EFLAGS结果。最后,执行单元124设定已完成标志204。流程推进至方块424。
于方块424中,ROB检测到ALU微运算指令是ROB 128中最旧的已完成微运算指令114。亦即,ROB 128检测到字段232已是ROB 128的顶端,且已完成标志204被设定。流程推进至方块428。
于方块428中,ROB 128判断ALU微运算指令114是否导致一个例外条件。亦即,ROB 128将判断配置给ALU微运算指令114的ROB字段232中的例外标志206是否被设定。如果是,则流程进到438,否则流程推进至方块434。
于方块434中,ROB 128将引退寄存器MOV及寄存器ALU宏指令104,这部份的操作还包含以ALU微运算指令114的字段232中的结果字段202的值来更新REGX(该寄存器是ALU微运算指令114的目的字段326所指定)。此外,ROB 128引退ALU微运算指令114也包含利用在方块418所产生的立即值,来更新结构性EFLAGS寄存器。最后,ROB 128引退ALU微运算指令114时,亦包含运用NSIP字段208的值来更新结构性指令指标寄存器107。在一实施例中,ROB 128是在同一时钟周期中引退这两个宏指令104,流程结束于方块434。
于方块438中,因为一个例外状况已被检测,ROB 128就不用ALU微运算指令114的运算结果更新微处理器100的结构状态,而是由ROB 128引发微码单元112内的一例外处理器。例外处理器命令撷取单元103清除(flush)在微处理器100管线内,所有比ALU微运算指令114更新(newer)的指令。例外处理器也在图1中的控制寄存器105设定了一个融合关闭的位,并致使撷取单元103分支回到第一已融合的宏指令104,亦即回到x86寄存器MOV宏指令104。这将使指令转译器108重新转译寄存器MOV宏指令104及寄存器ALU宏指令104。不过,现阶段的指令转译器108不要融合该两个x86指令成单一微运算指令,而是以传统的方式转译成两个不同的微运算指令114。亦即,指令转译器108转译寄存器MOV宏指令成一寄存器MOV微运算指令114、以及转译寄存器ALU宏指令成一寄存器ALU微运算指令114。于是,寄存器配置表116将不在ROB配置给两个微运算指令114的字段232内设定已融合标志212,而寄存器配置表116会用寄存器ALU宏指令104的存储器地址来填入传统寄存器MOV微运算指令114的NSIP字段208,并且以寄存器ALU宏指令104的下一宏指令104的存储器地址填入传统寄存器ALU微运算指令114的NSIP字段208。因此,当两个宏指令104被转译成两个微运算指令114时,ROB 128就能据此判断两个宏指令104的那一个导致例外状况,而微处理器100便能适当的处理此例外情形。在一实施例中,例外处理器写入控制寄存器105内的融合关闭的位的操作,会产生一脉冲给指令转译器108,使得指令转译器108不会去融合下一个它所遇到的宏指令104(亦即不会对寄存器MOV宏指令104、随后跟着寄存器ALU宏指令104的状况进行融合),而是在之后的适当情形下才重新启动指令融合的操作。流程结束于438。
请参考图5的方块图,其描绘本发明的微处理器100的结构。图5的方块图中的微处理器100与图1的方块图中的微处理器100有些相似,但是图5中的微处理器100是用以融合三个宏指令104成为单一微运算指令114,亦即当指令转译器108检测到从宏指令流所接收到指定的三个相邻宏指令104时,指令转译器108能解码及转译三个相邻接的宏指令104成为单一微运算指令114,亦即是一个ALU/JCC微运算指令114,用以执行三个已融合的宏指令104所指示、或是共同完成的功能。特别是,指令转译器108所融合的三个相邻接的宏指令104,其中第一个是寄存器搬运(MOV)型宏指令104,一如图1中所述;第二个是寄存器算术/逻辑(ALU)型宏指令104,也是如图1中所述;再一个则是条件跳跃宏指令(JCC)型宏指令。JCC的一例是x86 Jcc指令,如JNE(跳若不等的话)、JZ(跳若是0)等等,其在条件是真时命令微处理器100跳到一目标地址(它的偏离值是从指令本身的地址由Jcc指令所指定),否则去提取顺序的下一指令。上述的JCC型宏指令并不限定于此,应当了解还有许许多多的条件跳跃型宏指令存在,且在将来还有新创的,但本发明实施例仍可应用其中。
传统的指令转译器108也可转译上述的三个相邻宏指令104成为三个不同的微运算指令114。特别是,传统的指令转译器108可转译寄存器MOV宏指令104成第一微运算指令114、转译寄存器ALU宏指令104成第二微运算指令114、转译寄存器JCC宏指令104成第三微运算指令114。不过,本发明所揭示的指令转译器108可以融合三个相邻宏指令104成为单一ALU/JCC微运算指令114是有其优点的,因为它可增加每个时钟周期下的指令、或是微处理器100的处理量,因为微处理器100可以用较少的资源去处理三个相邻MOV/ALU/JCC的宏指令104。例如,因为在指令转译器108转译之后,将是少于2的微运算指令114被分派到微处理器100的管线中,而寄存器配置表116、保留站、以及ROB 128都少消耗二个字段,其可以使有效增加非循序微处理器100的预视(lookahead)能力,于是可利用指令层级平行(instruction-level parallelism)的机制。此外,由于少占用执行单元124中的二个执行序列,这些执行序列就可以空出来执行其它的微运算指令。宏指令的融合在指令转译器108内是有优点的,因为指令转译器108可以在相同时钟周期下转译三个宏指令,这样便能让指令转译器108在每一时钟周期中发出限量的微运算指令114。还有,有能力在一时钟周期中转译三个宏指令,比起指令转译器108必须等一额外的时钟周才能转译第三个宏指令来说,可以使指令转译器108能看到(see)以及很快地转译下一宏指令,这对于下一个是分支宏指令的情形是更形言重要的。更进一步的说,有能力在一时钟周期内引退三个宏指令也可增加处理量。最后,一个较小(narrower)的指令转译器108要比较宽(wider)的指令转译器108具有能以更小、更快且较低电耗的处理的潜力。
请参考图6的功能方块图,其更详细的描绘图1中的x86寄存器MOV宏指令104、x86寄存器ALU宏指令104、以及x86寄存器JCC宏指令104,以及本发明中,它们被图5的指令转译器108融合成一ALU/JCC微运算指令114的情形。
寄存器MOV宏指令104和寄存器ALU宏指令104类似于图3所述。
JCC宏指令104包含一运算码字段632和一偏离码字段634。偏离码字段634指定一偏离值,其是在运算码字段632所指定的条件满足时,撷取单元103需转换控制权并计算目标地址时使用之。
寄存器ALU/JCC微运算指令114包含一运算码(op code)字段322、一来源A字段324、一来源B字段325及一目的字段326。类似于图3所述寄存器ALU微运算指令114,其内容被指令转译器108以和图3所描绘的方式所填入,这部份将如图6所示。不过,ALU/JCC微运算指令114并不仅指定一ALU操作,并且也依据ALU操作的立即的EFLAGS结果,命令执行单元124去执行一条件跳跃,以下将有更详细的描绘。ALU/JCC微运算指令114也包含一偏离码字段628,而指令转译器108将传送JCC宏指令104的偏离码字段634内的值至此字段,如图6所示。
请参考图7的流程图,其说明了图5的微处理器100执行宏指令融合及执行已转译的微运算指令114的结果。流程开始于方块704。
于方块704中,指令转译器108从指令高速缓存102接收了x86 MOV型的宏指令104、相邻的x86 ALU型宏指令104、与相邻的x86寄存器JCC宏指令104。寄存器MOV宏指令104和寄存器ALU宏指令104和图4方块404类似,亦即寄存器MOV宏指令104指定第一寄存器(如REGY)给来源字段304并指定第二寄存器(如REGX)给目的字段306;而寄存器ALU宏指令104指定第三寄存器(如REGZ)给来源字段314,并指定第一寄存器(如REGY)为其来源/目的字段316。本申请发明人了解到寄存器MOV宏指令104及寄存器ALU宏指令104的结合,可有效率的执行ALU运算在REGY及REGZ上、然后将结果放回REGX的操作中。此外,它们提供了ALU/JCC微运算指令114,用以命令执行单元124去执行一ALU运算以产生立即EFLAGS结果,并以该立即EFLAGS结果去执行一条件跳跃。因此利用微处理器10的微架构下的ALU指令,搭配(accommodate)两个来源运算元和一个第三目的运算元时,可使指令转译器108适当地融合三个寄存器-指定MOV型宏指令及ALU型宏指令及JCC宏指令104成为单一ALU/JCC微运算指令114。流程接着到方块708。
于方块708中,指令转译器108转译于方块704中所接收的ALU/JCC微运算指令114成为单一ALU微运算指令114,如图6所示。此外,指令转译器108也计算上一个已融合宏指令104的NSIP,亦即在JCC宏指令104之后的宏指令104的存储器地址。接着前进到方块714。
于方块714中,寄存器配置表116接收了ALU/JCC微运算指令114并且计算它的依附性,并在ROB 128内为它配置了一字段232。寄存器配置表116也设定已融合标志212以指示它是从已融合的宏指令104转译来的。此外,寄存器配置表116以方块708所计算的NSIP填入寄存器配置表116的字段232中的NSIP字段208。最后,寄存器配置表116分派ALU/JCC微运算指令114给保留站以提供给执行单元124执行。接着前进到方块718。
于方块718中,执行单元124对ALU/JCC微运算指令114中的来源A字段324及来源B字段的运算元执行由ALU/JCC微运算指令114所指定的ALU运算,并将运算结果送往ROB 128以储存在结果字段202中(下一个字段是目的字段326,其为遇到例外条件时,在方块434用来指定目的寄存器的字段)。执行单元124亦依据ALU运算的结果产生一立即的EFLAGS结果,而执行单元124也依据立即的EFLAGS结果,来执行ALU/JCC微运算指令114中的条件跳跃部分。亦即,执行单元124判断立即的EFLAGS结果是否满足指定的条件并解出跳跃的正确目标地址。若条件满足,执行单元124以信号通知撷取单元103开始进行目标地址提取的动作。在一实施例中,微处理器100包含一分支预测器(branch predictor)(未图示),用以预测条件分支指令(例如已融合JCC宏指令104)的方向与目标地址。在实施例中,执行单元124以它的方向和目标地址与预测的方向及目标地址作比较,并在预测不正确时由执行单元124以信号通知撷取单元103更正错误。最后,执行单元124设定完成标志204,如图5所示。流程推进至方块724。
于方块724中,ROB检测到ALU微运算指令是ROB 128中最旧的已完成微运算指令114,亦即ROB 128检测到ALU/JCC微运算指令114的字段232已在ROB 128的顶端,且已完成标志204已被设定。流程推进至方块728。
于方块728中,ROB 128判断ALU/JCC微运算指令114是否已导致一个例外条件,亦即ROB 128将会判断配置给ALU/JCC微运算指令114的ROB字段232的例外标志206是否被设定。如果是,则流程进到738,否则流程推进至方块734。
于方块734中,ROB 128引退寄存器MOV宏指令104、寄存器ALU宏指令104、以及寄存器JCC宏指令104,并以ALU/JCC微运算指令114的字段232中结果字段202的值来更新REGX(该寄存器是由ALU/JCC微运算指令114的目的字段326所指定)。此外,ROB 128引退ALU/JCC微运算指令114,并以在方块718所产生的立即值来更新结构性EFLAGS寄存器。最后,引退ALU/JCC微运算指令114并包含更新结构性指令指标寄存器107的操作。若ALU/JCC微运算指令114不被采用(亦即在方块718所计算的立即的EFLAGS结果,不符合ALU/JCC微运算指令114所指定的条件),则结构性的指令指标寄存器107被储存在ALU/JCC微运算指令114的NSIP字段208中的值所更新,否则结构性的指令指标寄存器107将以方块718中所计算的目标地址所更新。在一实施例中,ROB 128是在同一时钟周期中引退三个宏指令104。流程结束于方块734。
于方块738中,因为一个例外状况已被检测,ROB 128就不用ALU/JCC微运算指令114的运算结果更新微处理器100的结构状态,而是由ROB 128引发微码单元112内的一例外处理器。例外处理器使撷取单元103清除(flush)在微处理器100管线内,所有比ALU/JCC微运算指令114还要新(newer)的指令。例外处理器也在图5中的控制寄存器105设定一个融合关闭的位,并且致使撷取单元103去分支回到(branch back)第一个已融合的宏指令104,亦即回到x86寄存器MOV宏指令104。这将致使指令转译器108重新转译(re-translate)寄存器MOV宏指令104、寄存器ALU宏指令104、及JCC宏指令104。不过,现阶段的指令转译器108将不会融合该3个x86指令成单一微运算指令,而是以传统的方式转译成3个不同的微运算指令114。亦即,指令转译器108转译寄存器MOV宏指令成一寄存器MOV微运算指令114、转译寄存器ALU宏指令成一寄存器ALU微运算指令114、以及转译JCC宏指令成一寄存器JCC微运算指令114。结果,寄存器配置表116将不在配置给三个微运算指令114的ROB字段232内设定已融合标志212,而寄存器配置表116将以习知的方式,用寄存器ALU微运算指令104的存储器地址填入寄存器MOV微运算指令114的NSIP字段208、以JCC宏指令104的存储器地址填入寄存器ALU微运算指令114的NSIP字段208、并以寄存器JCC宏指令1045之后的下一宏指令104的存储器地址填入JCC宏指令104的NSIP字段208。因此,当3个宏指令104再被转译成微运算指令114时,ROB 128就能据以判断3个宏指令104的那一个导致例外状况,而微处理器100便能适当的加以处理。流程结束于方块738。
在一实施例中,微处理器100可以包含同时以图1至图4所描绘的方式、以及图5至图7所描绘来进行融合宏指令的操作。
本发明虽以较佳实例阐明如上,然其并非用以限定本发明精神与发明实体仅止于上述实施例。本领域的技术人员应可轻易了解并利用各种变化来产生相同的功效。因此,在不脱离本发明的精神与范畴内所作的修改,均应包含在本发明的权利要求内。例如,软件可使功能、制造、模块化,模拟,描绘和/或装置的测试及在此所抽描述的方法。这些都可使用一般的程序语言像C,C++,硬件描绘语言(HDL)包含Verilog HDL,VHDL等等,或其它的有效程序语言。可以用各种储存媒体如磁带、半导体、磁盘、光盘片(CD-ROM,DVD-ROM)有线网络、无线网络,或其它通讯媒体。在此所描绘的装置和方法也可包含半导体知识产权的核心,如微处理器核心(嵌入于HDL)及转成硬件(集成电路产品)。此外,在此所描绘的装置和方法也可包含硬件及软件的结合。因此,本发明并不限于以上描绘的实施例,而是依据于本发明的权利要求及其等效。本发明也可实施于一般目的计算机的一微处理器。最后,本发明虽以较佳实例阐明如上,然其并非用以限定本发明精神与发明实体仅止于上述实施例。本领域的技术人员应可轻易了解并利用其它元件或方式来产生相同的功效。因此,在不脱离本发明的精神与范畴内所作的修改,均应包含在本发明的权利要求的范围内。

Claims (38)

1.一种微处理器,其用以接收该微处理器的指令集架构的相邻的第一及第二宏指令,其中上述的第一宏指令命令该微处理器从该微处理器第二结构性寄存器去搬运一第一运算元到该微处理器的一第一结构性寄存器,其中上述的第二宏指令命令该微处理器使用在该第一结构性寄存器内的该第一运算元及该微处理器的第三结构性寄存器内的一第二运算元去执行一算术/逻辑运算以产生一运算结果,然后载入该运算结果到该第一结构性寄存器内,该微处理器至少包含:
一个执行单元;
一指令转译器,用以同时转译该第一及第二宏指令成单一微运算指令以供该执行单元执行;以及
一引退单元,用以在一时钟周期内引退该第一及第二宏指令,
其中该单一微运算指令命令该执行单元使用在该第二结构性寄存器内的该第一运算元及该第三结构性寄存器内的该第二运算元去执行该算术/逻辑运算以产生该运算结果,然后载入该运算结果到该第一结构性寄存器内。
2.如权利要求1所述的微处理器,还包含:
一重排序缓冲器,该重排序缓冲器的每一字段都与一不同的微运算指令相关,该重排序缓冲器的该每一字段用以保持一下一顺位指令指标;
其中响应于该指令转译器同时转译该第一及第二相邻宏指令成该单一微运算指令,该微处理器以紧随该第二宏指令之后的一宏指令的存储器地址填入与该单一微运算指令相关的该字段中。
3.如权利要求2所述的微处理器,还包含:
该微处理器的一结构性指令指标寄存器,
其中该引退单元利用从与该单一微运算指令相关的该字段中的紧随该第二宏指令之后的该宏指令的存储器地址,用以更新该结构性指令指标寄存器。
4.如权利要求1所述的微处理器,其中若上述该单一微运算指令造成了一个例外条件,该微处理器就使该指令转译器再重新转译该第一及第二相邻宏指令成为超过一个微运算指令,并且造成该执行单元去执行该超过一个微运算指令;
其中上述的超过一个微运算指令的第一个微运算指令命令该执行单元去从该微处理器第二结构性寄存器搬运一第一运算元到该微处理器的一第一结构性寄存器;
其中上述的超过一个微运算指令的第二个微运算指令命令该执行单元使用该微处理器的该第二结构性寄存器的该第一运算元,该微处理器的该第三结构性寄存器的该第二运算元以执行算术/逻辑运算以产生该运算结果,并且将该运算结果载回到该微处理器的该第一结构性寄存器。
5.如权利要求4所述的微处理器,还包含:
微码单元,响应于该例外条件,用以使该指令转译器重新转译该第一及第二相邻宏指令成为该超过一个微运算指令并执行该超过一个微运算指令。
6.如权利要求4所述的微处理器,还包含:
一重排序缓冲器,该重排序缓冲器的每一字段都与一不同的微运算指令相关,该重排序缓冲器的每一字段具有一标志;
其中响应于该指令转译器同时转译该第一及第二相邻宏指令成该单一微运算指令,该微处理器以紧随该第二宏指令之后的一宏指令的存储器地址填入与该单一微运算指令相关的该字段中,
其中响应于该指令转译器重新转译该第一及第二相邻宏指令成该超过一个微运算指令,该微处理器以该第二宏指令的存储器地址填入与该超过一个微运算指令中的第一个微指令相关的字段,并以紧跟随该第二宏指令的存储器地址之后的一宏指令的地址填入该超过一个微运算指令中的第二个微运算指令的字段。
7.如权利要求6所述的微处理器,还包含:
一微处理器的结构性指令指标寄存器,
其中若该单一微运算指令没有造成该例外条件时,该引退单元就在同一个时钟周期下同时引退该第一及第二宏指令,并以紧跟随该第二宏指令的存储器地址之后的一宏指令的地址去更新该结构性指令指标寄存器。
8.如权利要求7所述的微处理器,其中:
若该超过一个微运算指令的该第一个微运算指令没有造成该例外条件时,该引退单元就引退该第一宏指令,并且以该第二宏指令的存储器地址去更新该结构性指令指标寄存器;
若该超过一个微运算指令的第二个微运算指令没有造成该例外条件时,该引退单元就引退该第二宏指令,并且以紧随该第二宏指令之后的一宏指令的存储器地址去更新该结构性指令指标寄存器。
9.如权利要求4所述的微处理器,还包含:
一重排序缓冲器,该重排序缓冲器的每一字段都与一不同的微运算指令相关,该重排序缓冲器的每一字段具有一标志;
其中响应于该指令转译器同时转译该第一及第二相邻宏指令成该单一微运算指令,该微处理器利用一第一预设值来设定相关于该单一微运算指令的字段所具有的该标志;
其中响应于该指令转译器重新转译该第一及第二相邻宏指令,该微处理器利用不同于该第一预设值的第二预设值,用以设定相关于该超过一个微运算指令中的第一个微运算指令及第二个微运算指令的字段所具有的该标志。
10.一种微处理器处理该微处理器的指令集架构的相邻的第一及第二宏指令的方法,其中上述的第一宏指令命令该微处理器从该微处理器的第二结构性寄存器去搬运一第一运算元到该微处理器的一第一结构性寄存器,其中上述的第二宏指令命令该微处理器使用在该第一结构性寄存器内的该第一运算元及该微处理器的第三结构性寄存器内的一第二运算元去执行一算术/逻辑运算以产生一运算结果,然后载入该运算结果到该第一结构性寄存器内,该方法至少包含:
同时转译该第一及第二宏指令成为一单一微运算指令以供该微处理器的一执行单元执行;以及
在一时钟周期内引退该第一及第二宏指令,
其中该单一微运算指令命令该执行单元使用在该第二结构性寄存器内的该第一运算元及该第三结构性寄存器内的该第二运算元去产生该运算结果,然后载入该运算结果到该第一结构性寄存器内。
11.如权利要求10所述的方法,其中上述微处理器包含一重排序缓冲器,该重排序缓冲器的每一字段都与一不同的微运算指令相关,该重排序缓冲器的每一字段具有一标志,用以保持一下一顺位指令指标,该方法还包含:
响应于同时转译该第一及第二相邻宏指令成为该单一微运算指令,利用紧随该第二宏指令后的一宏指令的存储器地址,用以填入相关于该单一微运算指令的该字段。
12.如权利要求11所述的方法,其中上述微处理器包含一微处理器的结构性指令指标寄存器,该方法至少包含:
利用与该单一微运算指令相关的该字段内的紧随该第二宏指令后的一宏指令的存储器地址,用以更新该结构性指令指标寄存器。
13.如权利要求10所述的方法,还包含:
若上述该单一微运算指令造成一例外条件时,重新转译该第一及第二相邻宏指令成为超过一个微运算指令,并使该执行单元去执行该超过一个微运算指令;
其中上述的超过一个微运算指令中的第一个微运算指令从该第二结构性寄存器去搬运一第一运算元到该第一结构性寄存器;
其中上述的超过一个微运算指令中的第二个微运算指令命令该执行单元使用该第二结构性寄存器的该第一运算元及该第三结构性寄存器的该第二运算元去执行该算术/逻辑运算用以产生该运算结果。
14.如权利要求13所述的方法,还包含:
引发该微处理器的微码,以响应于该例外条件;
其中上述的微码使得重新转译该第一及第二相邻宏指令成为该超过一个微运算指令,并使该执行单元去执行该超过一个微运算指令。
15.如权利要求13所述的方法,其中上述的微处理器包含一重排序缓冲器,该重排序缓冲器的每一字段都与一不同的微运算指令相关,该重排序缓冲器的每一字段具有一标志,用以保持一下一顺位的指令指标,该方法还包含:
响应于同时转译该第一及第二相邻宏指令成该单一微运算指令的步骤,该微处理器以紧随该第二宏指令之后的一宏指令的存储器地址填入与该单一微运算指令相关的该字段中;及
响应于重新转译该第一及第二相邻宏指令成该超过一个微运算指令的步骤,该微处理器以该第二宏指令的存储器地址填入与该超过一个微运算指令中的第一个微指令相关的字段,并以紧跟随该第二宏指令的存储器地址之后的一宏指令的地址填入该超过一个微运算指令中的第二个微运算指令的字段。
16.如权利要求15所述的方法,其中上述的微处理器包含一结构性指令指标寄存器及一引退单元,该方法包含:
在同一个时钟周期下同时引退该第一及第二宏指令,并在该单一微运算指令没有造成例外条件时,以紧随该第二宏指令后的该宏指令的存储器地址去更新该结构性指令指标寄存器。
17.如权利要求16所述的方法,还包含:
引退该第一宏指令,并在该超过一个微运算指令的第一个微运算指令没有造成该例外条件时,以该第二宏指令后的存储器地址去更新该结构性指令指标寄存器;及
引退该第二宏指令,并在该超过一个微运算指令的第二个微运算指令没有造成该例外条件时,以紧随该第二宏指令后的该宏指令的存储器地址去更新结构性指令指标寄存器。
18.如权利要求13所述的方法,其中该微处理器包含一重排序缓冲器,该重排序缓冲器的每一字段都与一不同的微运算指令相关,该重排序缓冲器的每一字段具有一标志,用以保持一下一顺位指令指标,该方法还包含;
响应于同时转译该第一及第二相邻宏指令成该单一微运算指令,该微处理器利用一第一预设值来设定相关于该单一微运算指令的字段所具有的该标志;及
其中响应于重新转译该第一及第二相邻宏指令,该微处理器利用不同于该第一预设值的第二预设值,用以设定相关于该超过一个微运算指令中的第一个微运算指令及第二个微运算指令的字段所具有的该标志。
19.一种微处理器,用以接收该微处理器的指令集架构的相邻的第一、第二、及第三宏指令,其中上述的第一宏指令命令该微处理器从该微处理器第二结构性寄存器去搬运一第一运算元到该微处理器的一第一结构性寄存器,其中上述的第二宏指令命令该微处理器使用在该第一结构性寄存器内的该第一运算元及该微处理器的第三结构性寄存器内的一第二运算元去执行一算术/逻辑运算以产生一运算结果,然后载入该运算结果到该第一结构性寄存器内,其中上述的第三宏指令在条件码满足一由该第三宏指令所指定的条件时,命令该微处理器跳到一目标地址,否则执行下一顺序指令,该微处理器至少包含:
一个执行单元;
一指令转译器,用以同时转译该第一、第二及第三宏指令成单一微运算指令以供该执行单元执行;
其中该单一微运算指令命令该执行单元使用在该第二结构性寄存器内的该第一运算元及该第三结构性寄存器内的该第二运算元去执行该算术/逻辑运算以产生该运算结果,然后载入该运算结果到该第一结构性寄存器内,然后依据该运算结果更新该条件码,并在该条件码满足由该第三宏指令所指定的该条件时命令该微处理器跳到该目标地址,否则执行下一顺序指令。
20.如权利要求19所述的微处理器,还包含:
一引退单元,用以在一时钟周期内引退该第一、第二及第三宏指令。
21.如权利要求19所述的微处理器,还包含:
一重排序缓冲器,该重排序缓冲器的每一字段都与一不同的微运算指令相关,该重排序缓冲器的该每一字段用以持有一下一顺位指令指标;
其中响应于该指令转译器同时转译该第一、第二及第三相邻宏指令成该单一微运算指令,该微处理器以紧随该第三宏指令之后的一宏指令的存储器地址填入与该单一微运算指令相关的该字段中。
22.如权利要求21所述的微处理器,还包含:
该微处理器的一结构性指令指标寄存器;
一引退单元,利用从与该单一微运算指令相关的该字段中的紧随该第三宏指令之后的该宏指令的存储器地址,用以更新该结构性指令指标寄存器。
23.如权利要求19所述的微处理器,其中若上述该单一微运算指令造成了一个例外条件,该微处理器就使该指令转译器再重新转译该第一、第二及第三相邻宏指令成为超过一个微运算指令,并且造成该执行单元去执行该超过一个微运算指令;
其中上述的超过一个微运算指令的第一个微运算指令命令该执行单元去从该微处理器第二结构性寄存器搬运一第一运算元到该微处理器的一第一结构性寄存器;
其中上述的超过一个微运算指令的第二个微运算指令命令该执行单元使用该微处理器的该第二结构性寄存器的该第一运算元,该微处理器的该第三结构性寄存器的该第二运算元以执行算术/逻辑运算以产生该运算结果,并且将该运算结果载回到该微处理器的该第一结构性寄存器;及
其中上述的超过一个微运算指令的第三个微运算指令在该更新码满足由该第三宏指令所指定的该条件时命令该执行单元跳到该目标地址,否则执行该下一顺序指令。
24.如权利要求23所述的微处理器,还包含:
微码单元,响应于该例外条件,用以使该指令转译器重新转译该第一、第二及第三相邻宏指令成为该超过一个微运算指令并执行该超过一个微运算指令。
25.如权利要求23所述的微处理器,还包含:
一重排序缓冲器,该重排序缓冲器的每一字段都与一不同的微运算指令相关,该重排序缓冲器的每一字段具有一标志,用以持有一下一顺位指令指标;
其中响应于该指令转译器同时转译该第一、第二及第三相邻宏指令成该单一微运算指令,该微处理器以紧随该第三宏指令之后的一宏指令的存储器地址填入与该单一微运算指令相关的该字段中;
其中响应于该指令转译器重新转译该第一、第二及第三相邻宏指令成该超过一个微运算指令,该微处理器以该第二宏指令的存储器地址填入与该超过一个微运算指令中的第一个微指令相关的字段,并以紧跟随该第二宏指令的存储器地址之后的一宏指令的地址填入该超过一个微运算指令中的第二个微运算指令的字段,以及用紧跟在该第三宏指令之后的一宏指令的存储器地址填入该超过一个微运算指令中的第三个微运算指令的字段。
26.如权利要求25所述的微处理器,还包含:
一微处理器的结构性指令指标寄存器;及
一引退单元,其中若该单一微运算指令没有造成该例外条件时,该引退单元就在同一个时钟周期下同时引退该第一、第二及第三宏指令,并以紧跟随该第三宏指令的存储器地址之后的一宏指令的地址去更新该结构性指令指标寄存器。
27.如权利要求26所述的微处理器,其中:
若该超过一个微运算指令的该第一个微运算指令没有造成该例外条件时,该引退单元就引退该第一宏指令,并且以该第二宏指令的存储器地址去更新该结构性指令指标寄存器;
若该超过一个微运算指令的该第二个微运算指令没有造成该例外条件时,该引退单元就引退该第二宏指令,并且以该第三宏指令的存储器地址去更新该结构性指令指标寄存器;及
若该超过一个微运算指令的第三个微运算指令没有造成该例外条件时,该引退单元就引退该第三宏指令,并且以紧随该第二宏指令之后的一宏指令的存储器地址去更新该结构性指令指标寄存器。
28.如权利要求23所述的微处理器,还包含:
一重排序缓冲器,该重排序缓冲器的每一字段都与一不同的微运算指令相关,该重排序缓冲器的每一字段具有一标志;
其中响应于该指令转译器同时转译该第一、第二及第三相邻宏指令成为该单一微运算指令,该微处理器利用一第一预设值来设定相关于该单一微运算指令的字段所具有的该标志;
其中响应于该指令转译器重新转译该第一、第二及第三相邻宏指令,该微处理器利用不同于该第一预设值的第二预设值,用以设定相关于该超过一个微运算指令中的第一个微运算指令、第二个微运算指令及第三个微运算指令的字段所具有的该标志。
29.一种微处理器处理该微处理器的指令集架构的相邻的第一、第二及第三宏指令的方法,其中上述的第一宏指令命令该微处理器从该微处理器的第二结构性寄存器去搬运一第一运算元到该微处理器的一第一结构性寄存器,其中上述的第二宏指令命令该微处理器使用在该第一结构性寄存器内的该第一运算元及该微处理器的第三结构性寄存器内的一第二运算元去执行一算术/逻辑运算以产生一运算结果,然后载入该运算结果到该第一结构性寄存器内,其中上述的第三宏指令在条件码满足一由该第三宏指令所指定的条件时,命令该微处理器跳到一目标地址,否则执行下一顺序指令,该方法至少包含:
同时转译该第一、第二及第三宏指令成为一单一微运算指令以供该微处理器的一执行单元执行;
其中该单一微运算指令命令该执行单元使用在该第二结构性寄存器内的该第一运算元及该第三结构性寄存器内的该第二运算元去产生该运算结果,然后载入该运算结果到该第一结构性寄存器内,然后依据该运算结果更新该条件码,并在该条件码满足由该第三宏指令所指定的该条件时命令该微处理器跳到该目标地址,否则执行下一顺序指令。
30.如权利要求29所述的方法,还包含:
在一时钟周期内引退该第一、第二及第三宏指令。
31.如权利要求29所述的方法,其中上述微处理器包含一重排序缓冲器,该重排序缓冲器的每一字段都与一不同的微运算指令相关,该重排序缓冲器的每一字段具有一标志,用以保持一下一顺位指令指标,该方法还包含:
响应于同时转译该第一、第二及第三相邻宏指令成为该单一微运算指令,利用紧随该第三宏指令后的一宏指令的存储器地址,用以填入相关于该单一微运算指令的该字段。
32.如权利要求31所述的方法,其中上述微处理器包含一微处理器的结构性指令指标寄存器,该方法至少包含:
利用与该单一微运算指令相关的该字段内的紧随该第三宏指令后的一宏指令的存储器地址,用以更新该结构性指令指标寄存器。
33.如权利要求29所述的方法,还包含:
若上述该单一微运算指令造成一例外条件时,重新转译该第一、第二及第三相邻宏指令成为超过一个微运算指令,并使该执行单元去执行该超过一个微运算指令;
其中上述的超过一个微运算指令中的第一个微运算指令是从该第二结构性寄存器去搬运一第一运算元到该第一结构性寄存器;
其中上述的超过一个微运算指令中的第二个微运算指令命令该执行单元使用该第二结构性寄存器的该第一运算元及该第三结构性寄存器的该第二运算元去执行该算术/逻辑运算用以产生该运算结果;及
其中上述的超过一个微运算指令的第三个微运算指令是在该更新码满足由该第三宏指令所指定的该条件时命令该执行单元跳到该目标地址,否则执行该下一顺序指令。
34.如权利要求33所述的方法,还包含:
引发该微处理器的微码,以响应于该例外条件;
其中上述的微码使得重新转译该第一、第二及第三相邻宏指令成为该超过一个微运算指令,并使该执行单元去执行该超过一个微运算指令。
35.如权利要求33所述的方法,其中上述的微处理器包含一重排序缓冲器,该重排序缓冲器的每一字段都与一不同的微运算指令相关,该重排序缓冲器的每一字段具有一标志,用以保持一下一顺位的指令指标,该方法还包含:
响应于同时转译该第一、第二及第三相邻宏指令成该单一微运算指令的步骤,该微处理器以紧随该第三宏指令之后的一宏指令的存储器地址填入与该单一微运算指令相关的该字段中;及
响应于重新转译该第一、第二及第三相邻宏指令成该超过一个微运算指令的步骤,该微处理器以该第二宏指令的存储器地址填入与该超过一个微运算指令中的第一个微指令相关的字段、以该第三宏指令的存储器地址填入与该超过一个微运算指令中的第二个微指令相关的字段、并以紧跟随该第三宏指令的存储器地址之后的一宏指令的地址填入该超过一个微运算指令中的第三个微运算指令的字段。
36.如权利要求35所述的方法,还包含:
在同一个时钟周期下同时引退该第一、第二及第三宏指令,并在该单一微运算指令没有造成例外条件时,以紧随该第三宏指令后的该宏指令的存储器地址去更新一结构性指令指标寄存器。
37.如权利要求36所述的方法,还包含:
引退该第一宏指令,并在该超过一个微运算指令的第一个微运算指令没有造成该例外条件时,以该第二宏指令后的存储器地址去更新该结构性指令指标寄存器;
引退该第二宏指令,并在该超过一个微运算指令的第二个微运算指令没有造成该例外条件时,以该第三宏指令后的存储器地址去更新该结构性指令指标寄存器;及
引退该第三宏指令,并在该超过一个微运算指令的第三个微运算指令没有造成该例外条件时,以紧随该第三宏指令后的该宏指令的存储器地址去更新结构性指令指标寄存器。
38.如权利要求33所述的方法,其中该微处理器包含一重排序缓冲器,该重排序缓冲器的每一字段都与一不同的微运算指令相关,该重排序缓冲器的每一字段具有一标志,该方法还包含;
响应于同时转译该第一、第二及第三相邻宏指令成该单一微运算指令,该微处理器利用一第一预设值来设定相关于该单一微运算指令的字段所具有的该标志;及
其中响应于重新转译该第一、第二及第三相邻宏指令,该微处理器利用不同于该第一预设值的第二预设值,用以设定相关于该超过一个微运算指令中的第一个微运算指令、第二个微运算指令及第三个微运算指令的字段所具有的该标志。
CN201110104552.3A 2010-04-27 2011-04-26 微处理器融合搬运/算术逻辑运算/条件跳跃指令 Active CN102193775B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US32853710P 2010-04-27 2010-04-27
US61/328,537 2010-04-27
US13/034,863 2011-02-25
US13/034,839 2011-02-25
US13/034,839 US8843729B2 (en) 2010-04-27 2011-02-25 Microprocessor that fuses MOV/ALU instructions
US13/034,863 US8850164B2 (en) 2010-04-27 2011-02-25 Microprocessor that fuses MOV/ALU/JCC instructions

Publications (2)

Publication Number Publication Date
CN102193775A CN102193775A (zh) 2011-09-21
CN102193775B true CN102193775B (zh) 2015-07-29

Family

ID=44601901

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110104552.3A Active CN102193775B (zh) 2010-04-27 2011-04-26 微处理器融合搬运/算术逻辑运算/条件跳跃指令

Country Status (1)

Country Link
CN (1) CN102193775B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200042322A1 (en) * 2018-08-03 2020-02-06 Futurewei Technologies, Inc. System and method for store instruction fusion in a microprocessor
CN112363762B (zh) * 2020-11-13 2023-01-06 苏州浪潮智能科技有限公司 一种融合命令处理方法、系统、设备以及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1024426A2 (en) * 1991-07-08 2000-08-02 Seiko Epson Corporation High performance RISC microprocessor architecture
CN101110017A (zh) * 2005-08-09 2008-01-23 英特尔公司 一种组合指令的技术
CN101377736A (zh) * 2008-04-03 2009-03-04 威盛电子股份有限公司 乱序执行微处理器以及宏指令处理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6675376B2 (en) * 2000-12-29 2004-01-06 Intel Corporation System and method for fusing instructions
US20090164758A1 (en) * 2007-12-20 2009-06-25 Haertel Michael J System and Method for Performing Locked Operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1024426A2 (en) * 1991-07-08 2000-08-02 Seiko Epson Corporation High performance RISC microprocessor architecture
CN101110017A (zh) * 2005-08-09 2008-01-23 英特尔公司 一种组合指令的技术
CN101377736A (zh) * 2008-04-03 2009-03-04 威盛电子股份有限公司 乱序执行微处理器以及宏指令处理方法

Also Published As

Publication number Publication date
CN102193775A (zh) 2011-09-21

Similar Documents

Publication Publication Date Title
TWI450190B (zh) 微處理器融合搬運/算術邏輯運算/條件跳躍指令
TWI506550B (zh) 管線式微處理器、執行兩種條件分支指令的方法以及其電腦程式產品
US8856496B2 (en) Microprocessor that fuses load-alu-store and JCC macroinstructions
CN101819521B (zh) 微处理器以及解析第一或第二类别条件分支指令的方法
TWI439930B (zh) 具選擇性啟動早期引退功能之失序執行微處理器
US9201801B2 (en) Computing device with asynchronous auxiliary execution unit
TWI552070B (zh) 於確認時執行狀態更新指令、裝置、方法與系統
CN101866280B (zh) 微处理器及其执行方法
TWI502500B (zh) 微處理器、微處理器操作方法及其電腦程式產品
TW201241747A (en) Efficient conditional ALU instruction in read-port limited register file microprocessor
CN103543985A (zh) 微处理器以及相关指令执行的方法
US20160313997A1 (en) Techniques for facilitating cracking and fusion within a same instruction group
US20150227371A1 (en) Processors with Support for Compact Branch Instructions & Methods
CN102163139B (zh) 微处理器融合载入算术/逻辑运算及跳跃宏指令
CN102193775B (zh) 微处理器融合搬运/算术逻辑运算/条件跳跃指令
US9959122B2 (en) Single cycle instruction pipeline scheduling
TWI506542B (zh) 使用單一表格儲存臆測結果及架構結果
CN101819523B (zh) 微处理器以及相关指令执行的方法
JP2020077333A (ja) 演算処理装置および演算処理装置の制御方法
Bowman Microarchitectural Implementation of a Reduced x86 ISA in FabScalar-generated Superscalar Cores.

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