CN102163139A - 微处理器融合载入算术/逻辑运算及跳跃宏指令 - Google Patents
微处理器融合载入算术/逻辑运算及跳跃宏指令 Download PDFInfo
- Publication number
- CN102163139A CN102163139A CN2011101068582A CN201110106858A CN102163139A CN 102163139 A CN102163139 A CN 102163139A CN 2011101068582 A CN2011101068582 A CN 2011101068582A CN 201110106858 A CN201110106858 A CN 201110106858A CN 102163139 A CN102163139 A CN 102163139A
- Authority
- CN
- China
- Prior art keywords
- microprocessor
- instruction
- operational order
- order
- little
- 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.)
- Granted
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
一种微处理器融合载入算术/逻辑运算及跳跃宏指令。该微处理器用以接收该微处理器的指令集架构的第一及第二程序相邻宏指令。若条件码满足第二宏指令所指定的条件,第二宏指令将命令微处理器跳跃至一目标地址,否则执行下一个顺位指令。指令转译器同时转译该第一及第二程序相邻宏指令成第一、第二、和第三运算式以供执行单元执行。第一微运算指令计算该存储器位置的地址并从该地址去载入运算元至该微处理器;第二微运算指令命令这些执行单元运用所载入的运算元执行该算术/逻辑运算以产生运算结果,并据以去更新微处理器的条件码,并在已更新的条件码满足了该条件时跳至该目标地址;第三微运算指令命令执行单元去回存该运算结果于该存储器位置。
Description
技术领域
本发明涉及微处理器指令转译领域,特别是涉及一种在转译过程中融合宏指令集的微处理器。
背景技术
许多近代的微处理器都具有使用者可视的架构(有时被称为巨观架构(macroarchitecture)),即指令集和程序工程师可能用的资源(resource)及一明显可区隔的微观架构(microarchitecture)。宏指令是一微处理器架构指令集中的指令,相对地,微运算指令(micro-op)是微观架构下的一微观指令集(microinstruction set)中的指令。微处理器执行单元实际所执行的是微运算指令而不是宏指令。一个指令转译器转译宏指令成一个或更多个微运算指令114,而这这些微运算指令将被送到执行单元去执行。微处理器可以处理一程序宏指令的处理量(throughput)或速率,大约就是指令转译器转译宏指令成一个或多个微运算指令的函数,这点对超大纯量(superscaler)和/或非循序(out-of-order)执行的微处理器而言更是如此。
发明内容
本发明揭示一种微处理器,用以接收该微处理器的指令集架构的第一及第二程序相邻宏指令,第一宏指令命令该微处理器从该微处理器存储器的一位置去载入一运算元以执行一算术/逻辑运算,使用所载入的运算元产生一运算结果,回存该运算结果到该存储器位置。若该更新条件码满足该第二宏指令所指定的条件,则第二宏指令命令微处理器跳跃至一目标地址,否则执行下一个顺位指令。一指令转译同时转译该第一及第二程序相邻宏指令成第一、第二、和第三运算式以供这些执行单元执行。第一微运算指令命令执行单元计算该存储器位置的地址,并从该存储器位置的地址去载入运算元至该微处理器;第二微运算指令命令这些执行单元运用所载入运算载入的运算元执行该算术/逻辑运算以产生运算结果,并据以去更新微处理器的条件码,若已更新的条件码满足了该条件则跳至该目标地址,否则去执行该下一顺位指令;第三微运算指令命令执行单元去回存该运算结果于该存储器位置。
本发明还揭示一种微处理器处理该微处理器的指令集架构的第一及第二程序相邻宏指令的方法,其中上述第一宏指令命令该微处理器从微处理器存储器的一位置去载入一运算元以执行一算术/逻辑运算以产生一运算结果,回存该运算结果到该存储器位置,该微处理器依据该运算结果去更新微处理器的条件码,其中上述的第二宏指令在该更新条件满足第二宏指令所指定的条件时命令微处理器跳跃至一目标地址,否则执行下一个顺位指定。该方法至少包含:同时转译该第一及第二程序相邻宏指令成第一、第二、和第三运算式以供微处理器的一些执行单元执行;其中第一微运算指令命令这些执行单元计算该存储器位置的地址,并从该存储器位置的地址去载入运算元至该微处理器;其中上述的第二微运算指令令这些执行单元执行该算术/逻辑运算,用所载入运算载入的运算元产生运算结果,并据以去更新微处理器的条件码,若已更新的条件码满足了该条件则跳至该目标地址,否则去执行该下一顺位指令;其中上述的第三微运算指令令执行单元去回存该运算结果于该存储器位置。
附图说明
图1是描绘依据本发明的微处理器的方块图。
图2是说明依据本发明的一些个执行单元的方块图。
图3是依据本发明的功能方块图,其描绘x86 LdAluSt型宏指令和x86JCC条件跳跃宏指令及其被图1中的指令转译器所融合成为LDSTA,ALU/JCC及STD微运算指令的功能方块图。
图4的功能方块图描绘图1中的ROB的一字段。
图5的功能方块图,为图1的微处理器操作执行指令融合及转译结果的微运算指令的执行。
图6是一流程图,为图1的微处理器操作执行指令融合及转译结果的微运算指令的执行。
附图符号说明
100微处理器 102指令高速缓存
103撷取单元 104 X86宏指令
105控制寄存器 108指令转译器
112微码单元 114微运算指令(micro-ops)
116寄存器配置表 124执行单元
128重排缓冲器(ROB) 134储存缓冲器
132子系统存储器 138数据高速缓存
136载入缓冲器 148结构性寄存器
204媒体A单元 208媒体B单元
212 SINT单元 216 SINT/BR单元
220 LD单元 224 STA单元
228 STD单元 302运算码字段
304数据来源字段 306地址来源字段
312运算码字段 314偏离字段
332运算码字段 334来源A字段
335来源B字段 336目的字段
338偏离字段 322运算码字段
324地址来源字段 344来源字段
342运算码字段 402结果字段
404已完成标志 406例外标志
408下一顺序指令指标字段(NSIP)
412已融合标志 414 LD/STA标志
416 STA完成标志 502 TEMP寄存器
604,608,614,618,624,632,628,634,638,644,648,654,658,664图6流程图步骤
具体实施方式
请参考图1,其图示根据本发明一微处理器100的方块图。微处理器100包含一指令高速缓存102及一指令撷取单元103,用以从指令高速缓存102撷取宏指令104。指令高速缓存102包含一指令指标寄存器107(architecturalinstruction pointer)。当一指令集的一指令引退(retired)时,指令指标寄存器107就被指令流中的下一指令的地址所更新。在所提取的指令不属于现有分支的情况下,指令流中的下一指令的地址就是下个顺序的指令。在所提取的指令是属于有分支的情况下,指令流中的下一指令的地址就是依分支指令所分派的目标地址。大部分时间下,撷取单元103所提供的提取地址给指令高速缓存102将不同于指令指标寄存器107的值。这是因为微处理器100的管道特性(pipelined nature)、以及因为微处理器包含一分支预测器(branchpredictor),其预先给分支指令所分派目标地址的时间,必须早于管道中指令被引退的时间。宏指令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、一子系统存储器132及一微处理器100的重排缓冲器(Reorder Buffer,ROB)128。执行单元124执行微运算指令114,图2将有更多的细节描述。子系统存储器132包含一数据高速缓存138或高速缓存层次(hierarchy)、储存缓冲器134和一载入缓冲器136。储存缓冲器134保有(Hold)待写入存储器,如数据高速缓存的数据;载入缓冲器136接收提取自存储器,如等待载入结构体寄存器148或者微处理器的非结构体寄存器(未图示)的数据。依据本发明的一实施例,结构体寄存器148包括已知的x86 EFLAGS(标志)寄存器。
ROB 128是一环形队列(queue)或阵列的字段(entry),其结构将详述于图5。每一ROB 128字段432储存信息给一不相同的微运算指令114。寄存器配置表116也在每一微运算指令114被分派到保留站(未图示)之前,在ROB128中配置一字段给它,而保留站是微运算指令114等待分派至一执行单元124前的储存处。因此,ROB 128维护着微运算指令114在程序中的执行顺序,其使得ROB 128可依据微运算指令114及它们所对应的宏指令104被转译的顺序来进行指令的引退。
本发明的优点是指令转译器108可用以融合两个宏指令104成三个微运算指令114。亦即,当指令转译器108检测到它接收到二个相邻近的宏指令104,而且该二个相邻近的宏指令104是宏指令流(stream of macroinstruction)的一指定型时,指令转译器108能够解码和转译该两个相邻近型的宏指令104成为三个微运算指令114,而这些运算式114指令是联合起来共同执行一功能、或依两个融合宏指令104的指示来执行。更特别的是,指令转译器108所融合两个相邻近宏指令104中的第一个是一载入-算术-逻辑单元(load-alu-store:(LdAluSt))型宏指令而第二个则是条件跳跃宏指令。一LdAluSt型宏指令的例子是x86ADD[mem],EAX指令,其命令微处理器100由[mem]内指定地址的存储器位置载入运算元于微处理器100中,在将运算元与EAX寄存器内的值相加之后,再储存加总的结果到[mem]指定的地址。一条件跳跃宏指令也是x86的Jcc指令,如JNE(跳若不等于的话),JZ(跳若是0)等等,它们会在条件为真的下令微处理器100跳到一目标的地址(从指令本身起算的偏离值是由Jcc指令所指定),否则就去提取下一顺序的指令。虽然LdAluSt型宏指令和条件跳跃宏指令如上所述,应可理解许多的LdAluSt型宏指令和条件跳跃宏指令是存在的且在将来还有新的,但本发明实施例仍可应用其中。
一传统的指令转译器可转译如上所述的两个宏指令104成4个不同的微运算指令114。特别的是,传统的指令转译器108可转译LdAluSt宏指令104成3个微运算指令114及转译条件跳跃宏指令成一第4个微运算指令114。不过,在本发明实施例中,指令转译器108可融合两个宏指令104成3个微运算指令114,这样的好处是它可增加每个时钟周期下的指令数量、或是微处理器100的处理量,因为微处理器100可以较少的资源去处理两个相邻LdAluSt/条件跳跃宏指令104。例如,因为在本发明所揭露的指令转译器108下,将少了1微运算指令114被分派到微处理器100的管线,而每一寄存器配置表116、保留站及ROB 128都可以少消耗了1个字段,这样可以有效增加非循序微处理器100的预视(lookahead)能力,于是可利用指令层级平行(instruction-level parallelism)的机制。此外,由于少占用了一个执行序列(slot)于执行单元124,该执行序列就可以用于执行其它的微运算指令114。宏指令的融合对指令转译器108也是有好处的,因为它可以使指令转译器108在每一时钟周期中消耗更多的宏指令104,于是可以在每一时钟周期中最多发出3个微运算指令114。还有,比起指令转译器108必须等一额外的时钟周期才能转译条件跳跃宏指令的情况来说,在相同时钟周期下具有转译两个宏指令的能力,可允许指令转译器108能看到(see)以及很快地转译下一宏指令,这点对于下一个宏指令是分支指令的情形是更形重要的。更进一步的说,有能力在一时钟周期引退LdAluSt和条件跳跃宏指令也可增加处理量。最后,一个三个指令宽的指令转译器108要比四指令的指令转译器108具有更小、更快、且较低电耗的处理潜力。
微处理器100也包含一控制寄存器105,其包含一位,该位可以依据在此描绘的融合特征,用以通知指令转译器108是否执行指令融合的操作。
请参考图2的功能方块图,其更详细的描绘图1中的执行单元124。图2中的实施例包含7个个别的执行单元124,并以204至228表示。第一个执行单元记作媒体(MEDIA)A 204,其执行微运算指令114的浮点运算。第二个执行单元记作媒体B 208,其执行乘微运算指令114(multiply micro-ops)。第三个执行单元记作SINT(简单整数)212,其执行整数ALU微运算指令114,即执行整数算式或逻辑操作。第四个执行单元记作SINT/BR(搬(move)/分支)216,当融合LdAluSt和条件跳跃型宏指令时,即执行搬迁(move)或分支微运算指令114及简单的ALU运算,并当融合LdAluSt和条件跳跃型宏指令时,执行由指令转译器108所产生的ALU/JCC微运算指令114(图3将有详述)。第五个执行单元标记为LD 220,当融合LdAluSt和条件跳跃型宏指令时,为微运算指令114(例如图3中的LD/STA,是由指令转译器108所产生)从存储器提取来源运算元并储存至微处理器100的寄存器中。为了从存储器提取来源运算元,LD 220为执行存储器载入操作的微运算指令114(例如LD/STA微运算指令)计算来源存储器地址。依据本发明一实施例,LD单元220是执行单元124中,唯一一个为执行存储器载入或读取操作的微运算指令114计算来源存储器地址的执行单元。第六个执行单元记作STA 224(储存地址),其计算目的存储器地址提供给微运算指令114(例如LD/STA微运算指令114)执行存入或写入存储器操作。在本发明实施例中,STA 224也是唯一一个为执行存储器储存、写入计算的微运算指令114,计算目的存储器地址的执行单元。STA 224也将所计算的目的存储器地址写入于储存缓冲器134中,此储存缓冲器134是先前配置给微运算指令114者。第七个执行单元记作STD(储存数据)228,其将微运算指令114的运算结果,从先前配置给微运算指令114(例如LD/STA微运算指令114等执行存储器储存者,请同时参考图3)的寄存器储存至由STA所指定的存储器地址,该指令是当LdAluSt和条件跳跃宏指令104融合时由指令转译器108所产生。虽然图中显示7个执行单元124,其它的实施例可能包含更多或较少的执行单元124,其视设计的要求及限制而定。
请参考图3的功能方块图,其描绘x86 LdAluSt型宏指令104和x86 JCC条件跳跃宏指令,及其被图1中的指令转译器108所融合成LDSTA、ALU/JCC及STD微运算指令114的情形。
依据本发明LDALUST宏指令104包含一运算码字段302,地址来源字段306,数据来源字段304。地址来源字段306指定运算元来源,如图1中结构体寄存器148的寄存器,被提供予LD单元220和STA 224(请同时参考图2)用以计算一存储器地址。此存储器地址是指定在运算码字段302的算术/逻辑运算操作中的第一数据运算元的存储器所在,而该存储器地址同时也指定了算术/逻辑运算后结果的目的存储器地址。数据来源字段304指定了算术/逻辑运算的第二数据运算元的来源。
JCC宏指令104包含一运算码字段312和一偏离字段314,偏离字段314指定了一偏离值,其是在运算码字段312所指定的条件满足时,撷取单元103需转换控制权并计算目的地址时使用。
LDSTA微运算指令114包含一运算码字段322、地址来源字段324和一目的字段326。指令转译器108将LDALUST宏指令104的地址来源字段306的值转送至LDSTA微运算指令114的地址来源字段324。指令转译器108则以指定微处理器100的一暂时寄存器(temporary register)502的值来填入(populate)目的字段326(请同时参考图5)。
ALU/JCC微运算指令114包含运算码332、来源A 334、来源B 335、目的值336及偏离值338等字段。指令转译器108将LDALUST宏指令104的来源字段304的值转送至ALU/JCC微运算指令114的来源字段A 334。指令转译器108将JCC宏指令104的偏离字段314的值转送到ALU/JCC微运算指令114的偏离字段338。指令转译器108以指定一暂时寄存器(temporaryregister)502来填入ALU/JCC微运算指令114的来源字段B 335及目的字段336。
STD微运算指令114包含一运算码字段342及一来源字段344。指令转译器108从STD微运算指令114取出来源字段344的值,用以指定该暂时寄存器(temporary register)502。
请参考图4的功能方块图,其更详细的描绘图1中的ROB 128的字段432。该字段包含一结果字段402以储存微运算指令114的一运算结果,一已完成标志404、例外标志406、一下一顺序指令指标字段(NSIP;nextsequential instruction pointer)408、一已融合标志412、一LD/STA标志414,及一STAu3完成标志416。
当一执行单元124执行完一个微运算指令114,它就会设定完成标志404。LDSTA微运算指令114实际上是由两个执行单元124,亦即LD单元220和STA单元224来执行,在此有更详细的描绘。当LD单元220完成LDSTA微运算指令114时,它就会设定完成标志404。然而,当STA单元224完成LDSTA微运算指令114时,它设定的是STA完成标志416而不是完成标志404,这可以致能(enable)ROB 128去检测一LDSTA微运算指令114(可由LD/STA标志414的设定而得知)已完成,此即当完成标志404和STA完成标志416两者都被设定时。
当一执行单元124检测到一微运算指令114导致了一例外条件时,执行单元124会在配置给微运算指令114的字段432中设定例外标志(except flag)406。当微运算指令114准备引退时,若ROB 128检测到例外标志406被设定时,ROB 128就采取必要动作,例如禁止以微运算指令114的运算结果来更新微处理器100的结构状态,和/或禁止引发(invoke)微码单元112的例外操作器(exception handler,详如下述)。
已融合标志412用以指示该微运算指令114是否被指令转译器108经由融合两个宏指令104而来。
NSIP字段408所持有(hold)的是下一顺序指令指标字段NSIP,其是宏指令104被转译为微运算指令114之后的下一顺位指令的存储器地址。NSIP随微运算指令114的执行向下递增。在融合宏指令104的情况下,NSIP字段408所持有的是上一个融合宏指令104被转译为微运算指令114后的下一顺序指令。有关NSIP字段408的使用,将在后面图6的方块654做更进一步的描绘。
请参考图5和图6分别所示的功能方块图及流程图,其说明了图1的微处理器100执行指令融合、以及所转译微运算指令114的执行结果。图5的描绘将结合图6的流程图来进行,流程开始于方块604。
于方块604中,指令转译器108从指令高速缓存102接收了x86LDALUST型的宏指令104和一相邻的x86JCC型宏指令104,如图5所示。接着前进到方块608。
于方块608中,指令转译器108转译于方块604中所接收的宏指令104成为LDSTA,ALU/JCC及STD微运算指令114,如图5所示。此外,指令转译器108也计算上一个融合宏指令104的NSIP,亦即在JCC宏指令104之后的宏指令104的存储器地址。接着前进到方块614。
于方块614中,寄存器配置表116接收了LDSTA、ALU/JCC及STD微运算指令114并且计算它们与其它指令及它们之间的相关性。特别的是,ALU/JCC微运算指令114与LDSTA微运算指令114从LD单元220执行载入数据相关,而STD微运算指令114则与ALU/JCC微运算指令114的执行结果相关。亦即,ALU/JCC微运算指令114一直要到从LDSTA微运算指令114所载入的数据对它有效(available)了才执行(即已载入数据),而STD微运算指令114也一直要到从ALU/JCC微运算指令(micro-ops)11的运算结果对它有效了(即有了结果了)才执行。接着前进到方块618。
于方块618中,寄存器配置表116于ROB 128内分别给LDSTA,ALU/JCC及STD微运算指令114配置了三个字段432(图5中分别以指标值7、8、9表示)。寄存器配置表116在三个字段432的每一个也分别设定了已融合标志412,以指示它们已被融合宏指令104所转译,如图5所示。此外,寄存器配置表116以在方块608计算所得的NSIP,填入这些字段432中的每一个NSIP字段408。寄存器配置表116也在配置给LDSTA微运算指令114的字段432中的LD/STA标志414进行设定,如图5所示。最后,寄存器配置表116分派三个微运算指令114到保留站以供执行单元124执行,如图5所示。更特别的是,寄存器配置表116分派LDSTA微运算指令114到LD单元220及单元STA 224、分派ALU/JCC微运算指令114至SINT/BR单元216、以及分派STD微运算指令114至STD单元228。流程推进到方块624。
于方块624中,子系统存储器132监测(snoop)寄存器配置表116总线并检测LDSTA微运算指令114的分派状况,并以配置一载入缓冲器136和储存缓冲器134做回应。流程由方块628推进至632。
于方块628中,LD单元220从图3所示的地址来源字段324计算载入操作的存储器地址,并检视是否此载入产生了例外。如果是,则LD单元220于ROB字段432设定例外标志406。若否,则LD单元220于子系统存储器132已从存储器提取载入的数据至载入缓冲器136(在方块624中所配置的)中,并且载入的数据已被写到TEMP寄存器502时,LD单元220将设定ROB字段432中的完成标志404,如图5所示。流程由方块628推进至632。
在方块634中,SINT/BR单元216执行ALU操作,此ALU操作是由ALU/JCC微运算指令114作用在TEMP寄存器502内的运算元,而该运算元是ALU/JCC微运算指令114的来源A字段334所指定,然后回存运算结果于TEMP寄存器502,如图5所示。SINT/BR单元216也依据写到TEMP寄存器502内的ALU操作值产生一立即性的EFLAGS结果(intermediateEFLAGS result)。此外,依据立即性的EFLAGS结果,SINT/BR单元216执行ALU/JCC微运算指令114中的选择性跳跃部分。亦即,SINT/BR单元216判断立即性的EFLAGS是否满足指定条件并解出正确的跳跃的标的地址。若条件满足,SINT/BR单元216将提供一信号至撷取单元103以开始进行目标地址的提取动作。在一实施例中,微处理器100包含了一分支预测器(predictor),用以预测条件分支指令(像是融合JCC宏指令104)的方向与目标地址。在此实施例中,SINT/BR单元216对它所预测的方向及条件分支指令的目标地址与实际的方向与目标地址进行比较。若预测不正确,则SINT/BR单元216以信号通知撷取单元103以矫正错误。最后,SINT/BR单元216设定完成标志404,如图5所示。流程由方块634推进至638。
于方块638中,STD单元228将由TEMP寄存器502而来的ALU/JCC微运算指令114运算结果,写入至配置于方块624所述的储存缓冲器134内,并且设定完成标志404,如图5所示。在一实施例中,向前进的总线(forwardingbus)将执行单元124的运算结果送回到执行单元124,以避免经由ROB128进行储存运算结果所致的延迟。流程由方块638推进至644。
于方块632中,STA 224从图3所示的地址来源字段324来计算储存存储器地址,并检视是否此储存产生了例外。如果是,则STA 224于ROB字段432设定例外标志406。若否,则STA 224将所计算的地址储存至方块624所配置的缓冲器134中,并设定完成标志404,如图5所示。流程由方块632推进至644。
于方块644中,ROB 128检测到LDSTA、ALU/JCC及STD114等微运算指令114是ROB 128内最旧的已完成微运算指令114。亦即,ROB 128检测到LD/STA、ALU/JCC及STD等微运算指令字段432是位于ROB 128的顶端(head),而它们的完成标志412已被设定,并且在这种情况下,LDSTA微运算指令114的STA完成标志416也已设定。流程前进至判断方块648。
于判断方块648,ROB 128判断是否LD/STA、ALU/JCC及STD微运算指令114已造成例外条件,亦即,ROB 128将判断配置给LD/STA、ALU/JCC及STD微运算指令114的ROB字段432中的任一个例外标志406是否被设定。若是,则流程至方块664,否则到方块654。
于判断方块654,ROB 128引退了LDALUS及JCC宏指令。在一实施例中,ROB128在同一时钟周期中除了引退宏指令104,同时还更新结构指令指标寄存器107。若ALU/JCC微运算指令114不被采用(亦即在方块234所计算的立即的EFLAGS结果不满足ALU/JCC微运算指令114所指定的条件),则结构性指令指标寄存器107被STD微运算指令114储存于NSIP 408的值所更新(此值和LD/STA及ALU/JCC微运算指令114的储存于NSIP 408的值相同)。否则,结构性指令指标寄存器107将以于方块634所计算的目标地址做更新。在此实施例中,微处理器100如方块634所述将包含一分支预示测器,因此其结构性指令指标寄存器107仅在分支方向或预测的目标地址不正确时被更新。此外,引退LdAluSt宏指令104时,也会以方块634所产生的立即的EFLAGS结果更新结构性EFLAGS寄存器。流程前进至方块658。
于方块658,子系统存储器132将储存缓冲器134的值(在方块638所写入)写到存储器。流程终止于方块658。
方块664中,因为一例外已被检测,ROB 128不以LD/STA、ALU/JCC及STA微运算指令114的运算结果更新微处理器100的结构状态,而是引发于微码单元112的一例外操作器。例外操作器致使撷取单元103清除(flush)微处理器100管道内所有比LDSATA微运算指令114更新(newer)的指令。例外操作器也设定图1的控制寄存器105内的融合关闭位(fusing off bit),以使撷取单元103分支回到第一个融合宏指令104,亦即x86 LdAluSt宏指令104,这将使指令转译器108去再次转译LdAluSt宏指令104及JCC宏指令104。但此时的指令转译器108将不会把两个宏指令104融合,而是以现有方式转译成4个不同的微运算指令114。亦即,指令转译器指令转译器108将转译LdAluSt宏指令104成一个LDSTA微运算指令114、一ALU宏指令104和一STD宏指令104,而且将转译JCC宏指令104成JCC微运算指令114。因此,寄存器配置表116将对配置给4个微运算指令114的ROB 432字段432的已融合标志412进行设定。寄存器配置表116亦将以JCC宏指令104的存储器地址填入传统的LDSTA、ALU、STD微运算指令114的NSIP字段408,并且以JCC宏指令104之后的下一顺位宏指令104的存储器地址填入JCC微运算指令114的NSIP字段408。因此,当从两个宏指令104转译成微运算指令114的操作再次发生时,可能由ROB 128来判断两个宏指令104的其中一个致使例外的产生,所以微处理器100可以适当的操作处理此例外情形。在一实施例中,例外操作器写入控制寄存器105内的融合关闭位,这样将引发一脉冲至一指令转译器108,以使其不去融合它所遭遇到的下一宏指令104(即JCC宏指令104之后的LdAluSt宏指令104),但之后可能在任何时间内恢复融合指令的状态。流程终止于方块664。
本发明虽以较佳实例阐明如上,然其并非用以限定本发明精神与发明实体仅止于上述实施例。本领域的技术人员,当可轻易了解并利用各种变化来产生相同的功效。因此不脱离本发明的精神与范畴内所作的修改,均应包含在本发明的权利要求的范围内。例如,软件可使功能、制造、模块化,模拟,描绘和/或装置的测试及在此所描述的方法。这些都可使用一般的程序语言像C,C++,硬件描绘语言(HDL)包含Verilog HDL,VHDL等等,或其它的有效程序语言。可以用各种储存媒体如磁带、半导体、磁盘、光盘片(CD-ROM,DVD-ROM)有线网络、无线网络,或其它通讯媒体。在此所描绘的装置和方法也可包含半导体知识产权的核心,如微处理器核心(嵌入于HDL)及转成硬件(集成电路产品)。此外,在此所描绘的装置和方法也可包含硬件及软件的结合。因此,本发明并不限于以上描绘的实施例,而是依据于本发明的权利要求及其等效。本发明也可实施于一般目的计算机的一微处理器。最后,本发明虽以较佳实例阐明如上,然其并非用以限定本发明精神与发明实体仅止于上述实施例。本领域的技术人员,可轻易了解并利用其它元件或方式来产生相同的功效。因此不脱离本发明的精神与范畴内所作的修改,均应包含在本发明的权利要求的范围内。
Claims (20)
1.一种微处理器用以接收该微处理器的指令集架构的第一及第二程序相邻宏指令,其中该第一宏指令命令该微处理器从该微处理器存储器的一位置去载入一运算元,以所载入的运算元去执行一算术/逻辑运算以产生一运算结果,回存该运算结果到该存储器位置,该微处理器依据该运算结果去更新微处理器的条件码,其中若该更新条件满足该第二宏指令所指定的条件,该第二宏指令命令微处理器跳跃至一目标地址,否则执行该下一个顺位指令,该微处理器至少包含:
多个执行单元;及
一指令转译器,用以同时转译该第一及第二程序相邻宏指令成第一、第二、和第三运算式以供这些执行单元执行;
其中该第一微运算指令命令这些执行单元计算该存储器位置的地址,并从该存储器位置的地址去载入该运算元至该微处理器;
其中该第二微运算指令命令这些执行单元执行该算术/逻辑运算,用所载入运算元产生该运算结果,并据以去更新微处理器的该条件码,若已更新的条件码满足了该条件则跳至该目标地址,否则执行该下一顺位指令;
其中上述的第三微运算指令命令这些执行单元去回存该运算结果于该存储器位置。
2.如权利要求1所述的微处理器,其中上述的微处理器的指令集架构大致符合x86架构。
3.如权利要求1所述的微处理器,其中上述的这些执行单元包含:
一第一执行单元,因应于所接收的第一微运算指令用以计算该存储器位置的地址,并使该待载入的运算元从该存储器位置的地址载入至该微处理器的一寄存器:
一第二执行单元,因应于所接收的第二微运算指令,用以使用该寄存器内的该运算元去进行该算术/逻辑运算以产生该运算结果,并依据该运算结果去更新条件码,若已更新的条件码满足了该条件则跳至该目标地址,否则执行该下一顺位指令;及
一第三执行单元,因应于所接收的第三微运算指令,用以回存该运算结果于该存储器位置。
4.如权利要求3所述的微处理器,其中上述的第二执行单元,使用该寄存器内的运算元去执行该算术/逻辑运算以产生该运算结果,并据以去更新该条件码,若已更新的该条件码满足了该条件则跳至该目标地址,件,否则在该微处理器的一时钟周期内去执行该下一顺位指令。
5.如权利要求3所述的微处理器,还包含:
一储存缓冲器,用以在等待写入存储器时保持该运算结果;
其中这些执行单元还包含:
一第四执行单元,因应于该第一微运算指令,用以计算该存储器位置的地址,并写入所计算的存储器位置的地址至该储存缓冲器。
6.如权利要求5所述的微处理器,还包含:
一重排缓冲器,其中每一字段都伴随不同的微运算指令并包含一由该第一执行单元所设定的第一标志,以指示该第一微运算指令的部分已完成,及一由该第四执行单元所设定的第二标志,以指示该第一微运算指令的部分已完成;及
一引退单元,直到该第一标志及该第二标志已被设定时,写入所更新的微处理器的架构状态。
7.如权利要求3所述的微处理器,其中上述的第二执行单元还用以计算该目标地址。
8.权利要求1所述的微处理器,其中上述的第二微运算指令还用以命令这些执行单元计算该目标地址。
9.如权利要求1所述的微处理器,其中若上述一个或一个以上的第一、第二、第三微运算指令造成例外条件时,该微处理器使该指令转译器去重新转译该第一及第二程序相邻宏指令成为多于三个微运算指令,并使这些执行单元去执行该多于三个的微运算指令;
其中该多于三个的微运算指令中的第一个命令该执行单元使用该载入的运算元去执行该算术/逻辑运算以产生该运算结果,并据以去更新该条件码;
其中该多于三个的微运算指令中的第二个命令这些执行单元在已更新的条件码满足该条件时跳跃至该目标地址,否则执行该下一顺位指令。
10.如权利要求9所述的微处理器,还包含:
一重排缓冲器,其每一字段都伴随不同的微运算指令,并有一字段保有一下一顺位指令指标;
其中因应于该指令转译器同时转译该第一及第二程序相邻宏指令成第一、第二及第三个微运算指令,该微处理器以紧随该第二宏指令后的一宏指令的存储器地址,填入该第一、第二及第三个微运算指令的相关字段中;
其中因应于该指令转译器再转译该第一及第二程序相邻宏指令成为多于三个微运算指令,该微处理器以该第一和第二宏指令中,从该处微运算指令被转译一个存储器地址,填入至该多于三个微运算指令的每一微运算指令的相关字段。
11.如权利要求10所述的微处理器,还包含:
一微处理器的结构指令指标器;及
一引退单元,其中该第一、第二及第三个微运算指令中若没有一个造成例外条件,并且若更新条件码的条件没满足的话,该引退单元在同一个时钟周期下同时引退该第一及第二宏指令,并以紧随该第二宏指令后的该宏指令的存储器地址去更新该结构性指令指标寄存器。
12.如权利要求9所述的微处理器,还包含:
一重排缓冲器,其中每一字段都与不同的微运算指令相关并具有一标志;
其中因应于该指令转译器同时转译该第一及第二程序相邻宏指令成第一、第二及第三个微运算指令,该微处理器对每一该第一、第二及第三个微运算指令的相关字段的标志设定一第一预设值;
其中因应于该指令转译器再转译该第一及第二程序相邻宏指令,该微处理器对每一该多于三个微运算指令的这些相关字段的标志设定一第二预设值,该第二预设值不同于该第一预设值。
13.一种微处理器处理该微处理器的指令集架构的第一及第二程序相邻宏指令的方法,其中上述第一宏指令命令该微处理器从该微处理器存储器的一位置去载入一运算元,以所载入的运算元执行一算术/逻辑运算,以产生一运算结果,回存该运算结果到该存储器位置,该微处理器依据该运算结果去更新微处理器的条件码,其中若该更新条件满足该第二宏指令所指定的条件则上述的第二宏指令命令微处理器跳至一目标地址,否则执行该下一个顺位指定,该方法至少包含:
同时转译该第一及第二程序相邻宏指令成第一、第二、和第三运算式以供微处理器的一些执行单元执行;
其中该第一微运算指令命令这些执行单元计算该存储器位置的地址,并从该存储器位置的地址去载入该运算元至该微处理器;
其中该第二微运算指令命令这些执行单元用所载入的运算元执行该算术/逻辑运算以产生该运算结果,并据以去更新微处理器的条件码,若已更新的条件码满足该条件则跳至该若目标地址,否则执行该下一顺位指令;
其中上述的第三微运算指令命令该执行单元回存该运算结果于该存储器位置。
14.如权利要求13所述的方法,其中上述的微处理器的指令集架构大致符合x86架构。
15.如权利要求13所述的方法,其中上述的第一微运算指令还令这些执行单元去写入所计算的存储器位置的地址至该微处理器的一储存缓冲器,该微处理器的储存缓冲器是用以在写入至存储器时能保有该运算结果。
16.如权利要求15所述的方法,其中上述的微处理器也包含一重排缓冲器,其中每一字段都与不同的微运算指令相关,并具有一可设定的第一标志,由这些执行单元的一第一执行单元所设定,以指示该第一微运算指令的部分已完成,以及一可设定的第二标志由这些执行单元的第二个所设定,以指示该第一微运算指令的部分已完成,该方法还包含:
直到该第一标志及该第二标志已被设定时,写入所更新的微处理器的架构状态。
17.如权利要求13所述的方法,其中上述的第二执行单元更用以计算该目标地址。
18.权利要求13所述的方法,还包含:
若该第一、第二、第三微运算指令的一个或多个造成一例外条件,则重转译该第一及第二程序相邻宏指令成为多于三个的微运算指令,并使这些执行单元去执行该多于三个的微运算指令;
其中该多于三个的微运算指令中的第一个命令该执行单元使用该载入的运算元去执行该算术/逻辑运算以产生该运算结果,并据以去更新该条件码;
其中该多于三个的微运算指令中的第二个命令这些执行单元在已更新的条件码满足该条件时跳跃至该目标地址,否则执行该下一顺位指令。
19.如权利要求13所述的方法,其中上述的微处理器还包含一重排缓冲器,其中每一字段都与不同的微运算指令相关并具有一字段,用以保有一下一顺位的指令指标,该方法还包含:
因应于同时转译该第一及第二程序相邻宏指令成为该第一、第二、和第三运算式的步骤,以紧随该第二宏指令后的该宏指令的存储器地址,填入相关于该第一、第二和第三微运算指令的该字段;及
因应于该再转译该第一及第二程序相邻宏指令成为该多于三个的微运算指令的步骤,该微处理器以该第一和第二宏指令中,从该处微运算指令被转译一个存储器地址,填入至该多于三个微运算指令的每一微运算指令的相关字段。
20.如权利要求19所述的方法,其中上述的微处理器包含一结构指令指标器及一引退单元,该方法包含:
在同一个时钟周期下同时引对该第一及第二宏指令,并以紧随该第二宏指令后的该宏指令的存储器地址去更新该结构性指令指标寄存器,若该第一及第二宏指令没有一个造成例外条件,并且若更新条件码的条件没满足的话。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US32852410P | 2010-04-27 | 2010-04-27 | |
US61/328,524 | 2010-04-27 | ||
US13/034,808 | 2011-02-25 | ||
US13/034,808 US8856496B2 (en) | 2010-04-27 | 2011-02-25 | Microprocessor that fuses load-alu-store and JCC macroinstructions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102163139A true CN102163139A (zh) | 2011-08-24 |
CN102163139B CN102163139B (zh) | 2014-04-02 |
Family
ID=44464383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110106858.2A Active CN102163139B (zh) | 2010-04-27 | 2011-04-27 | 微处理器融合载入算术/逻辑运算及跳跃宏指令 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102163139B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541840A (zh) * | 2011-12-23 | 2012-07-04 | 中科鼎富(北京)科技发展有限公司 | 一种针对短文本的倾向性分析的系统与方法 |
CN106528047A (zh) * | 2015-10-08 | 2017-03-22 | 上海兆芯集成电路有限公司 | 选择性将启动函数输出或累加器值写回神经存储器的神经处理单元 |
CN107077321A (zh) * | 2014-12-23 | 2017-08-18 | 英特尔公司 | 用于执行融合的单个周期递增‑比较‑跳转的指令和逻辑 |
WO2020024759A1 (en) * | 2018-08-03 | 2020-02-06 | Huawei Technologies Co., Ltd. | System and method for store instruction fusion in a microprocessor |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329622A (zh) * | 2008-02-08 | 2008-12-24 | 威盛电子股份有限公司 | 微处理器以及宏指令执行方法 |
CN101377736A (zh) * | 2008-04-03 | 2009-03-04 | 威盛电子股份有限公司 | 乱序执行微处理器以及宏指令处理方法 |
-
2011
- 2011-04-27 CN CN201110106858.2A patent/CN102163139B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101329622A (zh) * | 2008-02-08 | 2008-12-24 | 威盛电子股份有限公司 | 微处理器以及宏指令执行方法 |
CN101377736A (zh) * | 2008-04-03 | 2009-03-04 | 威盛电子股份有限公司 | 乱序执行微处理器以及宏指令处理方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541840A (zh) * | 2011-12-23 | 2012-07-04 | 中科鼎富(北京)科技发展有限公司 | 一种针对短文本的倾向性分析的系统与方法 |
CN102541840B (zh) * | 2011-12-23 | 2018-08-10 | 中科鼎富(北京)科技发展有限公司 | 一种针对短文本的倾向性分析的系统与方法 |
CN107077321A (zh) * | 2014-12-23 | 2017-08-18 | 英特尔公司 | 用于执行融合的单个周期递增‑比较‑跳转的指令和逻辑 |
CN107077321B (zh) * | 2014-12-23 | 2021-08-17 | 英特尔公司 | 用于执行融合的单个周期递增-比较-跳转的指令和逻辑 |
CN106528047A (zh) * | 2015-10-08 | 2017-03-22 | 上海兆芯集成电路有限公司 | 选择性将启动函数输出或累加器值写回神经存储器的神经处理单元 |
CN106528047B (zh) * | 2015-10-08 | 2019-04-09 | 上海兆芯集成电路有限公司 | 一种处理器、神经网络单元及其运作方法 |
WO2020024759A1 (en) * | 2018-08-03 | 2020-02-06 | Huawei Technologies Co., Ltd. | System and method for store instruction fusion in a microprocessor |
CN112534403A (zh) * | 2018-08-03 | 2021-03-19 | 华为技术有限公司 | 微处理器中存储指令融合的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102163139B (zh) | 2014-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11379234B2 (en) | Store-to-load forwarding | |
US8843729B2 (en) | Microprocessor that fuses MOV/ALU instructions | |
CN101819520B (zh) | 管线式微处理器以及快速执行条件分支指令的方法 | |
US8856496B2 (en) | Microprocessor that fuses load-alu-store and JCC macroinstructions | |
US9003225B2 (en) | Confirming store-to-load forwards | |
TWI439930B (zh) | 具選擇性啟動早期引退功能之失序執行微處理器 | |
CN101866280B (zh) | 微处理器及其执行方法 | |
US7895421B2 (en) | Mechanism for using performance counters to identify reasons and delay times for instructions that are stalled during retirement | |
TWI506550B (zh) | 管線式微處理器、執行兩種條件分支指令的方法以及其電腦程式產品 | |
US7870369B1 (en) | Abort prioritization in a trace-based processor | |
EP1296229B1 (en) | Scoreboarding mechanism in a pipeline that includes replays and redirects | |
US20140136822A1 (en) | Execution of instruction loops using an instruction buffer | |
US9575763B2 (en) | Accelerated reversal of speculative state changes and resource recovery | |
CN102163139B (zh) | 微处理器融合载入算术/逻辑运算及跳跃宏指令 | |
US9959122B2 (en) | Single cycle instruction pipeline scheduling | |
CN102193775B (zh) | 微处理器融合搬运/算术逻辑运算/条件跳跃指令 | |
CN101819523B (zh) | 微处理器以及相关指令执行的方法 | |
US11983533B2 (en) | Control flow prediction using pointers |
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 |