CN1658154A - 早期修正分支指令预测错误的管线微处理器装置与方法 - Google Patents

早期修正分支指令预测错误的管线微处理器装置与方法 Download PDF

Info

Publication number
CN1658154A
CN1658154A CN200510006271.9A CN200510006271A CN1658154A CN 1658154 A CN1658154 A CN 1658154A CN 200510006271 A CN200510006271 A CN 200510006271A CN 1658154 A CN1658154 A CN 1658154A
Authority
CN
China
Prior art keywords
instruction
branch
early stage
microprocessor
buffer
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
Application number
CN200510006271.9A
Other languages
English (en)
Other versions
CN100377078C (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.)
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
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN1658154A publication Critical patent/CN1658154A/zh
Application granted granted Critical
Publication of CN100377078C publication Critical patent/CN100377078C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

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)
  • Executing Machine-Instructions (AREA)

Abstract

一个在一管线作业微处理器中执行一有条件分支指令的装置和方法。早期分支修正逻辑电路检视早期状态旗标以侦测一错误的分支预测。早期状态旗标的产生响应到此分支指令的前的一指令,此早期状态旗标的产生早于结构状态旗标的产生,此早期状态旗标可能为有效或无效。如果此早期状态旗标为有效并且指出一错误预测,则此早期分支修正逻辑电路将改正上述错误预测。如果有位于上述早期修正逻辑电路阶段之后管线阶段因未完成更改旗标缓存器状态指令而变为无效,例如管线被清除后,则复制此结构状态旗标到早期状态旗标,即可令此早期状态旗标重新变为有效。如果结构状态旗标指出一错误预测而且上述早期分支修正逻辑电路并未修正此错误预测时,则晚期分支修正逻辑电路将修正此错误的预测。

Description

早期修正分支指令预测错误的管线微处理器装置及方法
技术领域
本发明是有关管线作业微处理器,特别指其中的早期执行指令。
背景技术
现代的微处理器皆为管线作业微处理器,意指它们在不同的区块与管线阶段,同时执行多个指令。Hennessy和Patterson在ComputerArchitecture:A Quantitative Approach,第二版,John L.Hennessy and DavidA.Patterson,Morgan Kaufmann出版社,San Francisco,CA,1996一书中定义管线作业技术为″一执行多个重迭指令的实行技巧″。他们再提供以下优等的管线作业技术的描述:
管线就像一条生产线,在一条汽车生产在线有许多个步骤,每个步骤皆对汽车的制造有所贡献,而每个步骤在不同台车上同时进行着。在一条计算机管在线,管线中的每个步骤完成一指令的一部份,就如同生产线,每个步骤同时完成不同指令的不同部分。每个步骤称为管线阶段或管线段,每个阶段互相连结形成一管线,指令从一边进入经过每个阶段然后从另一边出去,就如同汽车在生产在线。
同步微处理器依时钟周期运作,一般而言,在一时钟周期内指令从微处理器管线的一阶段前进到另一阶段。在汽车生产在线,如某阶段的工作者因没有车子好工作而呈现空置的状态,生产线的生产或成效将降低。同样的,如果微处理器的一阶段因没有指令好执行而呈现空置的状态(通常称为管线空隙(pipeline bubble)),微处理器的成效将降低。
一可能形成管线空隙的原因是分支指令,当遇见一分支指令时,微处理器必须决定目标地址然后开始取回在目标地址的指令,而不是此分支指令后的下一个顺序地址;再则,如果分支指令为有条件的分支指令(指依特定的状况是否存在来决定可否接受一分支),微处理器必须决定目标地址和是否接受此分支指令。因解决目标地址和/或分支结果(即分支是否会被接受)的管线阶段通常落后取回指令阶段许多,管线空隙因而产生。
应付这样的问题,现代的微处理器通常利用分支预测的机制在管线早期阶段就预测目标地址和分支结果。微处理器的设计者持续努力设计更准确的分支预测器,但仍常有错误的预测。如先前提到,错误的预测必须在分支预测阶段的下一阶段就被侦测和修正。错误预测的代价是分支预测器和分支错误预测修正阶段之间的管线阶段数目的增加。因此,需要一个在管线早期阶段就修正有条件分支指令预测错误的装置和方法。
再则,有条件分支指令指明如满足一分支状况时,将命令微处理器分支至分支目标地址;否则,微处理器将继续去取回下一个顺序指令。微处理器包含储存状态的状态旗标缓存器,检视状态旗标缓存器以确认有条件分支指令指定的状态是否被满足。所以,为了能最终决定一有条件分支指令是否被错误预测,微处理器需要检视状态旗标缓存器的最新状态。然而,以目前的情况,一直要到管线末端才能检视状态旗标缓存器的状态以确认分支状况是否被满足及分支预测是否正确。因此,需要一个能在早期就产生状态旗标缓存器的装置和方法。
最后,状态旗标缓存器的状态一般而言被有条件分支指令之前的指令结果所影响。例如,状况可能是传达旗标缓存器(状态旗标缓存器的一种)是否有被设定,传达旗标缓存器的状态可被最新的加指令结果所决定。然而,目前可影响状态旗标缓存器的指令结果在执行单位中产生,此执行单位被设在微处理器较后面的管线阶段。因此,需要一个能在早期就产生指令结果的装置和方法。
发明内容
一方面,本发明提供一个在一具有管线作业的微处理器中执行早期修正一有条件分支指令的装置和方法。一分支预测器在管线早期就预测此有条件分支指令的结果,并依照预测结果,此微处理器可分支到预测的目标地址或取回下一个指令。预测与此分支指令一同在管线中输送。本装置包含早期分支修正逻辑电路,其位于晚期分支修正逻辑电路的前一个阶段。当此分支指令抵达时,上述早期分支修正逻辑电路检视分支指令指定的状况码,并判定其所指定状况是否在早期状态旗标缓存器中被满足,才能决定预测是否有误。早期状态旗标的产生是响应此分支指令之前的指令。早期状态旗标是由上述的早期旗标产生逻辑电路产生,它比此微处理器中产生结构状态旗标的执行单位更早产生,早期状态旗标缓存器可能为有效或无效。如果早期状态旗标缓存器有效和指出预测为错误,此早期分支修正逻辑电路将改正错误的预测。如预测分支且并未达到早期状态旗标缓存器指示的条件,此早期分支修正逻辑电路将修正错误的预测,清除(flush)管线(指将管线中至少一阶段中的指令给去除以使得这些阶段中没有指令)和将微处理器分支到此有条件分支指令的下一个指令。如果预测不发生分支且达到早期状态旗标缓存器所指示的条件,则此早期分支修正逻辑电路将修正错误的预测,清除管线和将微处理器分支到分支目标地址。
另一方面,早期状态旗标的产生是对应到此有条件分支指令之前的更改旗标缓存器状态指令的早期结果,早期结果可能有效或无效。如果一更改旗标缓存器状态指令的结果被无效化,则早期状态旗标将被无效化。如所有的(如有的话)更改旗标缓存器状态指令在早期分支修正逻辑电路的下有更改状态旗标缓存器,结构状态旗标缓存器将被复制到早期状态旗标缓存器而使早期状态旗标缓存器再变为有效。此事件发生的的时机,诸如当管线被被清除时,是在分支错误预测修正期间。
另一方面,一表示上述早期分支修正逻辑电路是否已修正错误预测的指示,被输送到晚期分支修正逻辑电路。当此有条件分支指令接着抵达晚期分支修正逻辑电路时,如果结构状态旗标缓存器显示预测错误且早期分支修正逻辑电路并未修正错误的预测,则晚期分支修正逻辑电路就会修正错误的预测。
另一方面,早期执行逻辑电路会产生此有条件分支指令的前指令的早期结果。早期执行逻辑电路置放在产生最终指令结果的执行单位之上,早期执行逻辑电路被设定执行微处理器指令集中的一子集合。特别是,早期执行逻辑电路被包含在管线的一地址阶段,并且此早期执行逻辑电路包含一地址产生器以加强经常执行的指令的速度。在一实施例,早期执行逻辑电路包含执行一般、快速演算、布尔(Boolean)和移位(shift)运算。如果早期执行逻辑电路产生的早期结果是先前指令的结果且早期执行逻辑电路并未产生有效的结果,则早期结果将被无效,以及如果上述指令是更改旗标状态指令,则早期状态旗标将被无效化。
另一方面,早期结果存放早期缓存器文件中,它的缓存器对应到此微处理器的结构缓存器文件,和对应到位于早期缓存器文件中的每个缓存器的有效指示。早期缓存器文件提供早期结果当作操作数给早期执行逻辑电路/地址产生器以产生早期结果。如果早期缓存器文件提供一无效的输入操作数给早期执行逻辑电路,产生的早期结果将无效,以及如果指令是更改旗标状态指令,则早期状态旗标将被无效化。
附图说明
图1为根据本发明的一管线作业微处理器的一方块图;
图2为详细说明示于图1的本发明所提供的管线作业微处理器的R-阶段、A-阶段和J-阶段的一方块示意图;
图3为说明示于图1与图2的本发明所提供的结构缓存器文件、早期缓存器文件、结构状态旗标缓存器和早期状态旗标缓存器(图1、2)的一方块示意图;
图4为根据本发明图2示出的用于产生早期结果和早期状态旗标的装置的一流程示意图;
图5为说明本发明的图2示出的装置恢复和令早期状态旗标缓存器142有效的流程示意图;
图6为说明本发明所提供的微处理器执行早期分支指令修正的一流程示意图;以及
图7为说明本发明所提供的微处理器执行晚期分支指令修正的一流程示意图。
100  管线
102  I-阶段
104  F-阶段
106  X-阶段
108  R-阶段
112  A-阶段
114  J-阶段
116  D-阶段
118  G-阶段
122  H-阶段
124  E-阶段
126  S-阶段
128  W-阶段
132  分支预测器
134  结构缓存器文件
136  早期缓存器文件
138  早期执行逻辑电路/地址产生器
142  早期状态旗标缓存器
144  早期分支修正逻辑电路
146  执行单元
148  晚期分支修正逻辑电路
152  早期结果总线
154  第一控制输入
156  第二控制输入
158  结果总线
162  结构状态旗标缓存器
202  更改旗标指令存在信号
204  目的地标签
206  指令
208  分支预测选择信号
212  早期旗标产生/控制逻辑电路
214  来源操作数卷标信号
216  目的地操作数卷标信号
218  有效位
222  立即或常数操作数
226  多任务器
228  暂停信号
232  管线缓存器
234  管线缓存器
236  管线缓存器
238  管线缓存器
242  早期结果
244  早期结果有效信号
246  早期状态旗标有效缓存器
248  管线缓存器
252  管线缓存器
254  早期结果管线缓存器
258  早期分支修正信号
266  记忆操作数存在信号
268  晚期分支修正信号
272  算数逻辑电路
274  布尔逻辑电路
276  移位逻辑电路
278  目的地操作数标签
282  选择控制信号
402  指定结构缓存器文件来源操作数的一指令抵达缓存器阶段
404  判定此指令是否必须在地址阶段执行
406  判定所有来源操作数是否全都存在并属有效
408  于此频率周期内暂停执行
412  判定来源操作数是否吻合管线中较旧指令的目的地卷标
414  早期缓存器文件提供来源操作数
416  结构缓存器文件提供来源操作数
418  利用来源操作数以产生早期结果
422  判定此早期结果是否要传送给结构缓存器文件
424  判定此指令是否可被早期执行逻辑电路/地址产生器执行
426  令早期缓存器文件之缓存器为无效
428  判定所有操作数是否都有效
432  更新早期缓存器文件之目的地缓存器并且令其有效
434  判定此指令是否修改状态旗标
436  更新早期缓存器文件
438  判定状态旗标的修改是否依据指令的执行结果
442  判定早期结果是否有效
444  令早期缓存器文件为无效
502  分支指令抵达晚期分支修正阶段
504  分支预测是否修正
506  将结构状态旗标缓存器的值复制到早期状态旗标缓存器,并且标示早期状态旗标缓存器为有效
512  判定是否有可修改结构状态旗标缓存器之指令存在于早期状态旗标产生阶段之后的阶段
514  将结构状态旗标缓存器的值复制到早期状态旗标缓存器,并且标示早期状态旗标缓存器为有效
602  条件分支指令抵达早期分支修正阶段
604  判定早期状态旗标是否有效
606  检视早期状态旗标
608  判定是否必须修正预测
612  判定是否被预测为执行分支
614  清除此-阶段以上的管线,以及分支到分支目标地址
616  清除此-阶段以上的管线,以及分支到此条件分支指令后下一个顺序的指令
702  条件分支指令抵达晚期分支修正阶段
704  检视结构状态旗标
706  判定是否必须修正预测
708  判定是否已经早期修正预测
712  判定是否被预测为执行分支
714  清除此-阶段以上的管线,以及分支到分支目标地址
716  清除此-阶段以上的管线,以及分支到此条件分支指令后下一个顺序的指令
具体实施方式
参照图1,其为根据本发明的一管线作业微处理器100的一方块图。上述的管线作业微处理器100的管线作业包含复数个阶段,图1描述十二个管线阶段。
此管线作业微处理器100包含一I-阶段102(指令取回阶段)以取回指令,此I-阶段102包含一储存指令的指令快取区。上述I-阶段102自此指令快取区或与此微处理器100相连结的***内存中取回程序指令。此I-阶段102从储存于一指令指示缓存器中的一内存地址取回指令。一般而言,当指令被取回时,上述指令指示即被递增以依序取回指令。但是,指令指示器的值可根据一分支指令以更改为一非连续性的内存地址,以令此微处理器100分支到一分支目标地址。上述的I-阶段102亦包含一分支预测器132,此分支预测器132可预测一分支指令是否存在于已取回的指令串流中,此分支指令是否会被执行分支,和此分支指令于执行分支后所产生的分支目标地址。亦即,此分支预测器132是预测此分支指令,当其终于在上述的管线100的后方阶段被执行分支后,将指示此微处理器100分支到此分支指令所指定的分支目标地址(被执行分支时),或指示此微处理器100取回和执行于此分支指令后的下一个指令(不被执行分支时)。上述I-阶段102是接收一第一和一第二控制输入154和156(以下有详细说明)以指示I-阶段102修正上述分支预测器132所预测的一分支指令预测结果。在一实施例中,上述分支预测器132包含一分支目标地址快取区(BTAC)以快取储存先前已执行的分支指令地址和上述分支指令执行分支后得出的分支目标地址。此外,上述分支目标地址快取区亦储存着某些根据此分支指令之前的历史以决定此分支指令是否会被执行的预测数据。于其它的实施例中,上述I-阶段102包含在分支预测技术中熟知的动态分支历史表、静态分支预测器和混合静/动态分支预测器。在一实施例中,此I-阶段102包含四个管线阶段。
上述的微处理器100也包含一连接到上述I-阶段102的F-阶段104(指令形式阶段)。在一实施例中,上述微处理器100的指令集包含可变长度的指令,像x86结构的指令集,而非固定长度的指令。上述的F-阶段104包括一指令形成器可分析一指令字节串流并且将此串流为切割为个别的指令。特别是此指令形成器判定在此指令字节串流中每个指令的长度和起始点。在一实施例中,上述F-阶段104包含一储存已形式化指令的指令队列。
上述的微处理器100亦包含一连接到上述F-阶段104的X-阶段106(翻译阶段)。在一实施例中,此微处理器100包括一精简指令集(RISC)核心。此精简指令集核心执行一原生指令集。亦称为微指令的原生指令,是指较不复杂且能较上述I-阶段102取回的程序指令更有效率执行的指令,上述I-阶段102所取回的程序指令被称为宏指令。例如,x86结构的指令集包含宏指令,或复杂指令集(CISC)指令。上述X-阶段106包含一指令翻译器以将宏指令翻译成微指令。此指令翻译器从F-阶段104的宏指令队列取回已形式化的宏指令,并将每个宏指令翻译为供给上述管线100后方阶段的一个或数个微指令,上述管线100后方阶段被统称为此管线100的执行阶段。在一实施例中,上述的X-阶段106包含一储存已翻译微指令的微指令列。在一实施例中,上述的X-阶段106包含二个管线阶段。
上述的微处理器100亦包含一连接到上述X-阶段106的R-阶段108(登记阶段),和一连接到上述R-阶段108(登记阶段)的A-阶段112(地址产生阶段)。上述的R-阶段108包括一结构缓存器文件(ARF,architectured register file)134和一早期缓存器文件(ERF,early register file)136。上述的结构缓存器文件134包含此微处理器100执行程序时可见的缓存器。特别指,一程序指令可指定一个在此结构缓存器文件134中的缓存器作为一来源操作数,并且此程序指令的执行结果亦写入此缓存器中元;同样的,此程序指令可指定一个在此结构缓存器文件134的缓存器作为一目的地操作数以储存此程序指令所执行的结果。上述的指令可以明确或隐含的方式指定上述的缓存器。在一实施例中,上述的结构缓存器文件134包含图3示出的EAX,EBX,ECX,EDX,EBP,ESI,EDI和ESP等属于x86结构缓存器文件的缓存器。如图3所示,上述的早期缓存器文件136包含对应到此结构缓存器文件134中各缓存器的缓存器。
上述结构缓存器文件134中所储存的值,反应此微处理器100的使用者可见状态;其中上述的早期缓存器文件136中所储存的值,反应此微处理器100的一推测状态。亦即,当此微处理器100的一阶段产生一指令执行结果和此指令指定一结构缓存器文件134的缓存器当作上述执行结果的目的地操作数时,上述执行结果须待此指令非处于推测状态时(如此指令已确保完成或撤回)始能写入上述的结构缓存器文件134。相反,如以下详细所述,一指令的执行结果可在此指令已确保完成前写入上述的早期缓存器文件136。特别指,由一早期执行逻辑电路/地址产生器138(包含于一A-阶段112内,此早期执行逻辑电路/地址产生器138将于以下详述)所产生的一指令执行结果,可在此指令已确保完成前写入上述的早期缓存器文件136。一个指令可被确保完成,是上述的微处理器100判定此指令本身和于此指令的前的任何指令已不能产生一例外,并且所有在此指令的前的分支指令结果都已被决定时;亦即,当此微处理器100最终判定每个在此指令之前的分支指令已被正确执行以及每个被判定分支的分支目标地址是正确时。另外,上述结构缓存器文件134的值永远被确保为有效,但是上述的早期缓存器文件136的值除可属于推测状态外,亦可能为有效或无效,关于此点将于以下详细描述。据此,在上述早期缓存器文件136中的每个缓存器也包含一个相对应的有效位218,如图3所见,此有效位218是指示其所对应的缓存器中的值是否有效。当此微处理器100重新开启时,此早期缓存器文件136与上述的结构缓存器文件134设定为相同初始值。
上述微处理器100管线的R-阶段108也包括一结构状态旗标(EFLAGS)缓存器162,上述A-阶段112包括一早期状态旗标(EFLAGS)缓存器142。上述结构状态旗标缓存器162和早期状态旗标缓存器142是储存用以指示指令结果的状态旗标,诸如指令执行结果为零、产生进位、或负数的情况。在一实施例中,每个状态旗标包含一个位。在一实施例中,如图3所见,上述结构状态旗标缓存器162包含一个x86结构的结构状态旗标缓存器,其中包括以下的状态旗标:溢出旗标(OF,overflow flag)、符号旗标(SF,sign flag)、零旗标(ZF,zero flag)、奇偶性旗标(PF,parity flag)、和进位旗标(CF,carry flag)。此微处理器100包含其指令集内指明状况码的条件指令(condition instruction)。其中,一状况码是指定一个或多个状态旗标的状态。如果此状态旗标缓存器目前的状态和状况码所指明的状态相同,则上述条件即为成立,此微处理器100即执行此条件指令所指定的一种运算;不然,此条件指令所指定的运算将不被执行。一条件指令的一个例子是一种条件分支指令,在x86结构中,若状况满足一指明一状况码与一置换地址以计算分支目标地址的指令(Jcc)时,此条件分支指令是一个跳跃指令。上述的条件分支指令的一个特定例子是一非零跳跃(JNZ)指令,此非零跳跃指令是指定一个”非零”的状况码。如果上述的零旗标(ZF)被清除(亦即非零状况为真时),则此微处理器100将分支到上述分支指令所指定的分支目标地址(亦即此条件分支指令被执行分支);可是,如果上述的零旗标被设定(亦即”非零”的状况为伪时),上述的微处理器100是取回此条件分支指令后的下一个指令(亦即此条件分支指令未执行分支)。其它的x86条件分支指令包含条件设定(SETcc)、条件循环(LOOPcc)以及条件搬移(CMOVcc)指令
上述结构EFLAGS缓存器162包括此微处理器100执行程序时可见的状态旗标。特别是,一条件程序指令可依据上述的结构状态旗标缓存器162中的状态旗标指定状况码。如图3所见,上述的早期状态旗标缓存器142中包含对应到于上述结构状态旗标缓存器162中各状态旗标的各状态旗标。如同此结构缓存器文件134和此早期缓存器文件136之间的关系,储存于上述结构状态旗标缓存器162的值是反应此微处理器100的使用者可见状态;其中,上述早期状态旗标缓存器142中所储存的值是反应此微处理器100的推测状态。亦即,当此微处理器100的一个阶段执行一更动一个或多个状态旗标的指令后,直到此指令不再属于推测状台后,位于上述结构状态旗标缓存器162中的状态旗标才被更新。反之,如以下描述,在此指令被确保完成前,上述早期状态旗标缓存器142中的状态旗标即可被更新。特别是,在此指令被确保完成前,上述微处理器100可更新此早期状态旗标缓存器142中的状态旗标以反应上述早期执行逻辑电路/地址产生器138所执行的一指令的结果,其中上述的早期执行逻辑电路/地址产生器138亦称为一早期执行单位138。另外,上述结构延伸指针缓存器162的值永远被确保有效,但是上述早期延伸指针缓存器142所储存的值可能有效或可能无效,详情将于以下讨论。因此,如图3所见,此早期状态旗标缓存器142也包括一有效位246以指示此早期状态旗标缓存器142所储存的值是否有效。当此微处理器100被重设(reset)时,上述早期状态旗标缓存器142将与此结构状态旗标缓存器162设定为相同初始值。图3所示的实施例显示此早期状态旗标缓存器142是具有一个有效位246。但是,另一个实施例则考虑令上述的早期状态旗标缓存器142中的每个状态旗标皆各自维护一个有效位246。
上述A-阶段112的早期执行逻辑电路/地址产生器138是产生一早期结果和有效指示器以经由一早期结果总线152提供回上述的R-阶段108,详情将于以下描述。此早期执行逻辑电路/地址产生器138亦执行有效地址的计算以根据输入的操作数产生内存地址供元存取内存用,上述输入的操作数包含上述的结构缓存器文件134、早期缓存器文件136元,与/或此指令所提供的一常数操作数,诸如一置换值(displacement)或偏移值(offset)。上述的内存地址也可隐藏于指令中,诸如位于一堆栈内存中一位置的一个地址,是根据一推入(push)或推出(pop)指令所隐含指定的一堆栈指示缓存器(如ESP)或一方块指示缓存器(如EBP)所指明。
此微处理器100也包括一连接到上述A-阶段112的J-阶段114,其中上述的J-阶段114包括一早期分支修正逻辑电路144。早期分支修正逻辑电路144是依据控制信号154以根据上述的早期状态旗标缓存器142中的值以选择性的修正分支预测,详情如以下描述。
此微处理器100也包括连接到上述的J-阶段114的一D-阶段116,连接到上述D-阶段116的一G-阶段118,和连接到上述G-阶段118的一H-阶段122。其中,上述的D-阶段116,G-阶段118,和H-阶段122皆包含一个数据快取区以储存来自***内存的数据。在一实施例中,上述数据快取区是一个包含三个管线阶段的管线储存区,其需要一具有三频率周期的存取时间。利用早期此执行逻辑电路/地址产生器138所产生的内存地址以存取上述的数据快取区。在上述的D-阶段116,G-阶段118,和H-阶段122中执行自内存加载数据的指令。
上述微处理器100也包括,一连接到上述H-阶段122的E-阶段124(执行阶段),其中上述的E-阶段124包含执行指令运作的多个执行单元146。此执行单元146可包含如加法器、减法器、乘法器、除法器、移位器、旋转器,执行布尔(Boolean)运算的逻辑电路,执行超越(transcendental)和对数功能的逻辑电路等,用以产生指令最终结果的电路。在一实施例中,上述的执行单元146包含一整数单元、一浮点单元、一多媒体延伸指令集(MMX)单元、和一串流延伸指令集(SSE)单元。由上述执行单元146所产生的指令结果皆为正确的指令结果。此执行单元146所接收的输入、来源或操作数皆为有效。上述执行单元146的输入操作数的来源包含上述的结构缓存器文件134、结构状态旗标缓存器162、从上述数据快取区来的操作数、于指令中明示的立即(immediate)或一常数操作数以及来自其它管线阶段所传来的操作数。特别是,上述的执行单元146不接收从上述的早期缓存器文件136或早期状态旗标缓存器142所输入的推测操作数。
此微处理器100也包括一连接到上述E-阶段124的S-阶段126(储存阶段)其中上述的S-阶段126执行储存动作以储存数据,上述的数据诸如此执行单元146所产生的指令结果须储存至上述的数据快取区和/或***内存。再则,上述的S-阶段126包含一晚期分支修正逻辑电路148以依据上述的结构延伸指针缓存器162,经由一控制信号156修正分支指令的预测,如以下描述。
此微处理器100也包括连接到上述S-阶段126的一W-阶段128(结果抄回阶段),其中上述的W-阶段128经由一结果总线158抄写指令结果回到上述的结构缓存器文件134和结构状态旗标缓存器162,以更新此微处理器100结构的状态。
在一实施例中,此微处理器100包括一个指令发放、纯量(scalar)或执行的微处理器。亦即,在此微处理器100的每个频率周期,指令发放或指令产生阶段(自I-阶段102到X-阶段106)至多发放一个指令到上述的指令执行阶段(自R-阶段108到W-阶段128);与超纯量微处理器相较,超数量微处理器在每个频率周期发放二个或更多个指令。然而,除非有特别声明否则本发明所描述的装置和方法并不仅适用于纯量微处理器。在一实施例中,微处理器100包括一个依序(in-order)发放的微处理器,亦即指令的发放是依照在程序中所指定的顺序,不像有些微处理器具有乱序发放指令的能力。
参照图2,其为详细说明示于图1的本发明所提供的管线作业微处理器的R-阶段108、A-阶段112和J-阶段114的一方块示意图。其中,上述的R-阶段108包括图一示出的结构缓存器文件134、早期缓存器文件136和结构状态旗标缓存器162。上述的W-阶段128经由此结果总线158更新此结构状态旗标缓存器162。上述的R-阶段108从此X-阶段106接收一指令206。除指令字节本身以外,此指令206尚可能包含指令的译码数据。此指令是指明指令的种类,如一加法指令或一分支指令等。此指令也可指明一个状况码。此指令亦可经由一个标签指明一目的地操作数的位置。更进一步而言,上述目的地操作数卷标可指明上述结构缓存器文件134中的一个缓存器当作此指令206结果的一目的地。上述的结构缓存器文件134是经由上述的结果总线158,从图1示出的W-阶段128接收指令结果。一目的地操作数标签278是经由上述的结果总线158作为一个结构缓存器文件134的一选择器的输入值以选择被更新为此结果总线158的指令结果的缓存器。上述的早期缓存器文件136经由一早期结果总线152,从图1的A-阶段112接收一早期结果242。此指令206(原文为106)包含一个目的地操作数标签216以提供为上述早期缓存器文件136的一选择器的输入值以选择被更新为此早期结果242的缓存器。提供至上述早期缓存器文件136的目的地操作数标签216是由一管线缓存器232所提供,各阶段透过此管线缓存器232将指令206传送至上述的A-阶段112。
指令也可透过一来源操作数卷标信号214以指明一个或多个元来源操作数。在一实施例中,上述的指令206可指明至多三个来源操作数。此指令206透过上述的来源操作数卷标信号214以指明来源操作数缓存器。此来源操作数卷标信号214被当作一个结构缓存器文件134和早期缓存器文件136的一选择器的输入值以选择任何被此指令206当作来源操作数的缓存器。指令也可指明一个立即或一常数操作数222(如置换值或偏移值)。
参照图3,上述的R-阶段108也包含对应至每个早期缓存器文件136缓存器的有效位218。此早期缓存器文件有效位218经由上述的早期结果总线152,从上述的A-阶段112接收一早期结果有效指示244,其中上述的早期结果有效指示244是用来更新对应到上述早期缓存器文件136缓存器的有效位218,其中上述的早期缓存器文件136缓存器是由此目的地操作数卷标216所选择。
上述的R-阶段108也包含一个多任务器226去选择进入此R-阶段108的指令206的来源操作数。此多任务器226是从上述的结构缓存器文件134和早期缓存器文件136接收来源操作数的输入。在一实施例中,上述的结构缓存器文件134包含三个读取接口,其中上述二个读取接口的输出是作为上述多任务器226的输入,以在每个频率周期内提供最多二个来源操作数。在一实施例中,上述的早期缓存器文件136包含二个读取接口,此两个读取接口的输出是作为上述多任务器226的输入,以在每个频率周期内提供最多二个来源操作数。上述的多任务器226亦接收一个包含于上述指令206中的立即或常数操作数222,此外,上述的多任务器226亦从此A-阶段112接收上述的早期结果242。
再则,此多任务器226接收相关于每个所输入的操作数的一有效位的输入。从上述的早期缓存器文件136所接收的相关于操作数的有效位,是由此早期缓存器文件有效位218所提供。从上述A-阶段112所接收的相关于此早期结果242操作数的有效位为上述的早期结果有效指示244。此结构缓存器文件134所提供的上述操作数的有效位以及上述的立即/常数操作数222皆永远为真,亦即上述的结构暂存盘134所提供的操作数以及立即/常数操作数222皆为有效。由上述多任务器226所选择的来源操作数和其对应的有效位是分别提供给一来源操作数管线缓存器238和一有效位管线缓存器236,以供给上述的A-阶段112。在一实施例中,此来源操作数管线缓存器238储存至多三个来源操作数,此有效位缓存器236储存至多三个相对应于上述三个来源操作数的有效位。
在一实施例中,此微处理器100亦包含数个未示于图中的转交总线(forward bus)以将于E-阶段124和S-阶段126的执行单元146所产生执行结果,转交到R-阶段108以作为操作数。此转交总线是作为上述的多任务器226的输入。如果上述R-阶段108的指令所指明一个来源操作数的标签与自上述的H-阶段122至A-阶段112的目的地标签不相符,但确符合在上述E-阶段124或S-阶段126的目的地标签时,则一早期旗标产生/控制逻辑电路212控制此多任务器226选择可提供最新结果的转交总线以以作为操作数。如果一操作数是由转交总线提供,则此操作数总是有效。
此微处理器100亦包含上述的早期旗标产生/控制逻辑电路212。除接收上述结构状态旗标缓存器162当作输入外,上述的早期旗标产生/控制逻辑电路212亦接收于上述的R-阶段108和A-阶段112的指令206当作输入。再者,此早期旗标产生/控制逻辑电路212亦接收此多任务器226的输出当作输入,例如上述R-阶段108的来源操作数和其相关联的有效位。于本发明中,此早期旗标产生/控制逻辑电路212亦接收来自上述管线缓存器器232、236和238的输出当作输入,例如上述A-阶段112的指令、此指令的来源操作数、和其相关联的有效位。除亦接收上述的早期结果242当作输入外,上述的早期旗标产生/控制逻辑电路212亦接收自A-阶段112以下每个管线阶段的一更改旗标指令存在信号(flag-modifying instructionpresent signal)202当作输入。在上述的更改旗标指令存在信号202中一为真的值,是指示此更改旗标指令存在信号202所对应的阶段拥有一个已经更动此早期状态旗标缓存器142的指令,而上述的结构状态旗标缓存器162并未被此指令所更新。上述的更改更改旗标指令存在信号202是用来决定何时可恢复与有效化此早期状态旗标缓存器142,详情将参照图5及其相关描述。于本发明中,此早期旗标产生/控制逻辑电路212亦接收一晚期分支修正信号268当作输入,其中上述晚期分支修正信号268的一真值是指示图1示出的晚期分支修正逻辑电路148修正一个错误的预测,意指此管线100应予清除(flush)。此外,上述的晚期分支修正信号268也用来决定何时可恢复和有效化早期状态旗标缓存器142,详情请参照图5及其相关描述。于本发明中,此早期旗标产生/控制逻辑电路212亦接收自此A-阶段112以下每个阶段所具有的指令的目的地卷标204。上述目的地标签204用来决定在此R-阶段108的指令206所指定的来源操作数是来自上述的结构缓存器文件134、早期缓存器文件136或A-阶段112的早期结果242,详情请参照图4及其相关描述。在一实施例中,上述的指令206可指定一个内存来源操作数,亦即一操作数的地址为一内存地址所指定元。一般而言,上述的记忆操作数存在于***内存或数据快取区中,虽然在一实施例中,此记忆操作数可能存在于上述的微处理器100管线的一较低阶段,例如一种可能的情况是一先前储存指令所储存的标的具有的目的地内存地址系与上述R-阶段108指令的记忆操作数地址相符。虽然未示于途中,上述多任务器226亦接收记忆操作数当作输入。于本发明中,此早期旗标产生/控制逻辑电路212亦接收一记忆操作数存在信号266(memoryoperands present signal)当作输入,以指示其指令所指明的记忆来源操作数是否存在,和可否提供给上述的多任务器226。上述的记忆操作数存在信号266用来决定是否必须暂停执行(stall)上述R-阶段108的指令206和决定此早期结果242是否有效,详情将如以下描述并请参照图4。
根据各输入,上述的早期旗标产生/控制逻辑电路212产生各种的控制信号。早期旗标缓存器产生/控制逻辑电路212产生一个选择控制信号282以控制上述的多任务器226选择适当的来源操作数给此指令206。除产生上述的早期结果有效信号244外,此早期旗标产生/控制逻辑电路212也产生一早期状态旗标值262以储存在上述的早期状态旗标缓存器142,以及一控制信号264以更新上述早期状态旗标有效缓存器246的值。当此微处理器100重设后,上述的早期状态旗标有效缓存器246的值被设定为一个有效的初始值。上述的早期状态旗标缓存器142和早期状态旗标有效缓存器246是作为管线缓存器,以提供早期状态旗标和有效位给此J-阶段114。在本发明中,早期旗标产生/控制逻辑电路212也产生一个暂停信号228给上述的管线缓存器232、234、236、和238以暂停上述的R-阶段108。在一实施例中,当此暂停信号228被设定后,此管线缓存器232、234、236、和238包含多任务缓存器(muxed register)以于下一频率周期前保持其目前状态。此暂停信号228的运作如以下描述并请参照图4。
此A-阶段112包含上述的早期执行逻辑电路/地址产生器138,其接收从此来源操作数管线缓存器238的来源操作数和根据此来源操作数238以产生上述的早期结果242。此早期执行逻辑电路/地址产生器138包含一算数逻辑电路272、一布尔逻辑电路274、和一移位逻辑电路276。此早期执行逻辑电路/地址产生器138产生有效的地址供内存作业。此外,上述的早期执行逻辑电路/地址产生器138亦设定此微处理器100指令集的指令所需动作的一子集合。因此,上述的早期执行逻辑电路/地址产生器138用以执行图1示出的执行单元146可执行动作的一子集合。此早期执行逻辑电路/地址产生器138用于最常被执行的动作的一子集合。有利的是,在一实施例中,最常被执行的动作通常就是执行最快的动作(亦即仅需要一较短的时间执行,可在一频率周期内完成),其需要一较少量的硬设备,特别是除了本来就需要产生内存地址的硬件外。在一实施例中,上述的算数逻辑电路272是用以执行加、减、增加(increment)与减少(decrement);但是,于此实施例中,上述的算数逻辑电路272并未设定去执行一个会产生进位的加法,或一个有借位的减法。在一实施例中,上述的布尔逻辑电路274是用以执行一个布尔指令,如AND、OR、XOR、NOR,以及符号延伸搬移指令(move with sign extend)和零延伸搬移指令(move with zero extend);但是,此实施例的布尔逻辑电路274并不执行一字节交换指令(byte swap)。在一实施例中,上述的移位逻辑电路276被设定执行一左移或右移指令;但是于此实施例中,此移位逻辑电路276并未设定去执行一个旋转或经由进位而旋转的指令。虽然于某些特定的实施例中,描述上述的早期执行逻辑电路/地址产生器138是执行特定指令的子集合,本发明并不限定于上述的特定的实施例,公知微处理器设计者应了解上述的早期执行逻辑电路/地址产生器138可依照此微处理器100所属的特定指令集、欲达成的执行性能,以及实际电路布局等因素,去设定执行特定指令的子集合。此早期执行逻辑电路/地址产生器138所产生的早期结果242是提供给一早期结果管线缓存器254以便储存,并且随后再提供给上述的J-阶段114。
此J-阶段114包含图一示出的早期分支修正逻辑电路144,其中上述的早期分支修正逻辑电路144接收上述的早期状态旗标缓存器142、早期状态旗标有效缓存器246、和早期结果缓存器254的输出。此外,上述的早期分支修正逻辑电路144亦从一管线缓存器248接收来自此J-阶段114的指令,此管线缓存器248通常是用来下传来自上述管线缓存器232的指令206。此微处理器100也包含一分支预测选择信号208,此分支预测选择信号208经由在上述R-阶段108的管线缓存器234和A-阶段112管线缓存器252,自上述的I-阶段102、F-阶段104、和X-阶段106下传提供给上述的早期分支修正逻辑电路144。此分支预测选择信号208的一真值是指示于相对应阶段的指令为一分支指令,此指令已于图1示出的分支预测器132预测其是欲执行分支,亦即此微处理器100先前已根据此分支预测器132所预测的结果进行分支。
根据其输入,上述的早期分支修正逻辑电路144产生上述的分支控制信号154,以提供给图1示出的I-阶段102。上述的分支控制信号154包含提供给图1示出的晚期分支修正逻辑电路148的一早期分支修正信号258。当此早期分支修正逻辑电路144修正一分支预测时,上述的早期分支修正信号258将为真,详情将如以下对应到图6的描述。此早期分支修正逻辑电路144的运作将如以下对应到图6的详细描述。
参照图4,其为根据本发明图2示出的用于产生早期结果和早期状态旗标的装置的一流程示意图。图4示出的流程横跨两个图,即图4A和图4B。此流程是由方块402开始。
在方块402中,从上述结构缓存器文件134中指定来源操作数的一指令206抵达上述的R-阶段108。此指令透过上述的来源操作数卷标信号214以指定一个或多个元来源缓存器操作数。接着,此流程继续执行一决策方块404。
在决策方块404中,上述的早期旗标产生/控制逻辑电路212检视此指令的种类,并且判定此指令是否属于必须在上述的A-阶段112执行的种类。在一实施例中,当需要产生一内存地址以提供给在上述D-阶段116的数据快取区时,此指令必须在上述的A-阶段112执行。如果此指令必须在上述的A-阶段112执行时,则此流程继续到一决策方块406;不然,流程继续到另一决策方块412。
在决策方块406中,上述的早期旗标产生/控制逻辑电路212判定此指令所指定的所有来源操作数是否全元都存在并属有效。当此指令指定一个记忆操作数时,上述的早期旗标产生/控制逻辑电路212检视上述的记忆操作数存在信号266以判定上述指令所指定的记忆操作数是否存在并属有效。如果此指令指定一个立即操作数,则此立即操作数永远存在及有效。如果此指令指定一个缓存器操作数,上述的早期旗标产生/控制逻辑电路212将此管线较早阶段的目的地标签204与此来源操作数卷标信号214比较,以决定此微处理器100的一个先前执行的指令所产生的结果是否要存入此来源操作数卷标信号214所指定的结构缓存器文件134。若是如此,上述的结果已存在于上述的早期缓存器文件136,此早期旗标产生/控制逻辑电路212检视被指定操作数的有效位218以判定被指定的操作数是否有效。如果此微处理器100的一个先前执行的指令并未产生欲给上述来源操作数卷标信号214所指定的结构缓存器文件134的结果,则由上述结构缓存器文件134所提供操作数将永远存在和有效。如果上述指令所指定的所有来源操作数都存在和有效,流程将继续执行一决策方块412;不然流程继续到方块408。
在决策方块408中,上述的早期旗标产生/控制逻辑电路212在令此暂停信号228为一个真值以于此频率周期内暂停执行在此R-阶段108的指令,以等待上述的来源操作数从内存抵达、或被写回上述的结构缓存器文件134、或透过上述的转交总线而齐备。流程从决策方块406继续到方块408。
在决策方块412中,上述的早期旗标产生/控制逻辑电路212将来自此管线较早阶段的目的地标签204和上述的来源操作数卷标信号214进行比较,以判定此微处理器100的一先前执行的指令所产生的结果是否要传送到上述来源操作数卷标信号214所指定的结构缓存器文件134。若是如此,无论有效与否,此结果将存在于上述的早期缓存器文件136。如果微处理器100的一先前执行的指令并未产生要传送给上述来源操作数卷标信号214所指定的结构缓存器文件134的结果,流程将继续执行方块416;不然,流程则继续方块414。
在方块414中,上述的早期旗标产生/控制逻辑电路212令此控制信号282产生一个值,以控制上述的多任务器226去选择此早期缓存器文件136提供的来源操作数卷标信号214所指定的来源操作数缓存器。如果上述A-阶段112产生早期结果242的时机和指令抵达此R-阶段108以及产生对来源操作数的需求是处于同一频率周期,此多任务器226将选择上述的早期结果242的输入以作为此元指令的来源操作数。上述的多任务器226可从此早期缓存器文件136中选择复数个操作数缓存器,给一个指明复数个操作数缓存器的指令。接着,流程继续到方块418。
在方块416,上述的早期旗标产生/控制逻辑电路212令此控制信号282产生一个值,以控制此多任务器226选择上述结构缓存器文件134提供的来源操作数卷标信号214所指定的来源操作数缓存器。再则,此早期旗标产生/控制逻辑电路212控制此多任务器226选择此指令所指定的非为缓存器的操作数,如上述的立即或常数操作数222或被转交的有效操作数。接着,流程继续到方块418。
在方块418,上述指令继续进行到此A-阶段112,其中,此早期执行逻辑电路/地址产生器138利用上述多任务器226所选择的来源操作数以产生上述的早期结果242。更进一步而言,是选用上述算数逻辑电路272、布尔逻辑电路274、和移位逻辑电路276中适当的一个,以根据此指令的种类产生上述的早期结果242。接着,流程继续到方块422。
在决策方块422中,此早期旗标产生/控制逻辑电路212检视此指令的目的地操作数卷标,以判定此早期结果242是否要传送给上述的结构缓存器文件134中的一个缓存器。若是如此,则流程继续到决策方块424;不然,流程继续到决定方块434。
在决策方块424中,此早期旗标产生/控制逻辑电路212检视此指令的种类,以判定此指令的种类是否可被上述的早期执行逻辑电路/地址产生器138执行。亦即,先预设来源操作数是有效的,此早期旗标产生/控制逻辑电路212判定此指令是否在上述早期执行逻辑电路/地址产生器138可产生正确早期结果242的指令子集中。若是如此,则流程继续到决策方块428;不然流程继续到方块426。
在决策方块426中,此早期旗标产生/控制逻辑电路212令上述的早期结果有效信号244产生一伪值,以及更新对应到上述目的地操作数标签216所指定的早期缓存器文件136缓存器的有效位218,因为此早期执行逻辑电路/地址产生器138并未能产生此指令种类的早期结果242。接着,流程继续到决定方块434。
在决策方块428中,因为上述早期执行逻辑电路/地址产生器138被用以产生一个正确的早期结果242,故此早期旗标产生/控制逻辑电路212判定所有用来产生早期结果242的操作数是否都有效。如果在决策方块404中,上述早期旗标产生/控制逻辑电路212判定此指令不能在上述A-阶段112中执行,则缺少一操作数的指令亦不会在此R-阶段108暂停。虽然来自上述早期缓存器文件136的操作数缓存器属无效,但指令不会在此R-阶段108暂停。同样的,如果此早期执行逻辑电路/地址产生器138并对此指令种类产生一有效的早期请求,此指令亦不会暂停于上述的R-阶段108。取而代的的是,上述的早期结果242在此方块426被标示无效,以及此正确结果稍后于此E-阶段124的执行单元146计算。相对的,必须在上述A-阶段112执行的指令,如计算用来进出D-阶段116的数据储存区地址的指令,若其所需的操作数尚未能使用和/或无效时,将暂停于此R-阶段108。如果所有用来产生此早期结果242的操作数都有效,流程将继续到决策方块432;不然,流程回到方块426。
在决策方块432中,因为于上述决策方块418中产生的一有效早期结果242为一真值,故上述早期旗标产生/控制逻辑电路212令此早期结果有效信号244产生一真值和更新对应到目的地操作数标签216所指定的早期缓存器文件136缓存器的有效位218。再则,以上述的有效早期结果242更新此目的地操作数标签216所指定的早期缓存器文件136缓存器。接着,流程继续执行方块434。
在决策方块434中,上述早期旗标产生/控制逻辑电路212检视指令以决定指令的种类是否属于上述那些可能修改结构状态旗标缓存器162的指令。在一实施例中,上述会修改状态旗标缓存器的指令是依据x86结构指令集的定义而被指定。如果此指令已修改上述的状态旗标,则流程继续到方块436;不然,此流程即结束。
在方块436,依据上述早期执行逻辑电路/地址产生器138产生的早期结果242和依据指令206,上述的早期旗标产生/控制逻辑电路212产生上述早期状态旗标值262,接着利用上述早期状态旗标值262以更新上述的早期状态旗标缓存器142。在一实施例中,当由上述早期执行逻辑电路/地址产生器138所执行的带有正负符号的二的补码运算以得出早期结果242产生一溢出状况时(亦即,所得到的早期结果242过大或过小以致于无法存入其目的地操作数时),上述早期旗标产生/控制逻辑电路212产生一真值给上述的溢出旗标(OF)元,不然,则产生一个错误的值;上述的早期旗标产生/控制逻辑电路212将此符号旗标(SF)的值设定为上述早期结果242的最高位;当此早期结果242为零时,上述的早期旗标产生/控制逻辑电路212将产生一真值给上述的零旗标(ZF),不然,则产生一伪值;当此早期结果242的最低字节包含偶数个值为一的位时,上述早期旗标产生/控制逻辑电路212将令上述的奇偶性旗标(PF)为一真值,不然,则为一伪值;当上述早期执行逻辑电路/地址产生器138执行未带符号的整数运算以产生早期结果242时造成溢出的状况(如此整数运算产生此早期结果242的最高位的一进位或一借位时),上述早期旗标器产生/控制逻辑电路212将产生一真值至上述的进位旗标(CF),不然,则产生一伪值。在一实施例中,并不是产生一整组的状态旗标写入上述早期延伸状态缓存器142中,上述的早期旗标产生/控制逻辑电路212只更新被此早期结果242所影响的特定状态旗标。在任一实施例中,上述早期旗标产生/控制逻辑电路212累积的前指令的状态旗标,直到它们从结构状态旗标缓存器162中被复制为止,详情将如以下对应到图5的描述。流程继续到决策方块438。
在决策方块438,上述的早期旗标产生/控制逻辑电路212判定上述的状态旗标的修改是否依据此指令的执行结果。例如,在一实施例中,某些特定指令可直接修改上述的状态旗标,如x86结构的设定进位旗标(STC)、清除进位旗标(CLC)、或执行进位旗标的补码(CMC)指令,以及某些不依赖执行结果即修改旗标的指令,因为这些指令除了修改状态旗标外不会产生其它的结果。如果修改上述的状态旗标需要根据指令执行的结果,则流程继续到方块442;不然,流程即结束。
在决策方块442,上述的早期旗标产生/控制逻辑电路212检视上述的早期结果有效指示244以判定上述的早期结果242是否有效。若是如此,流程结束;不然流程继续到方块444。
在方块444,上述的早期旗标产生/控制逻辑电路212令此控制信号264产生一个值,以更新在早期状态旗标有效缓存器246的值据此表示储存于上述早期状态旗标缓存器142内的状态旗标缓存器为无效。请注意到自方块434到方块444的流程一度令上述的早期状态旗标缓存器142为无效状态,直到此早期状态旗标缓存器142再度被有效化,其变化的详情如以下对应到图5的描述。在一实施例中,相对而言,因为直接修改状态旗标的指令很少执行,为了简化上述的早期旗标产生/控制逻辑电路212,当一个指令直接更新一状态旗标时,此早期状态旗标142将被无效化。流程在方块444结束。
参照图5,其为说明本发明的图2示出的装置恢复和令早期状态旗标缓存器142有效的流程示意图。图5包含二个个别的流程示意图。每个流程图说明于一些不同启动恢复和再有效的事件下,恢复和令早期状态旗标缓存器142有效的过程。对应到一第一事件,流程从方块502开始。
在方块502,一分支指令抵达上述的S-阶段126。如果此分支指令需要修正(例如上述的分支预测器132已错误预测此分支指令,如错误预测此分支的执行结果或者是错误预测此分支目标地址),则上述的晚期分支修正逻辑电路148于修正此错误预测的过程中清除此管线100,其详情如以下对应到图7的描述。清除此管线100意指没有任何可修改结构状态旗标的指令存在于上述R-阶段108以后的管线阶段;或换言之,任何存在于管线内的修改结构状态旗标缓存器162的指令已被更新此结构状态旗标缓存器162中,或被清除出此管线100中。所以,此结构状态旗标缓存器162包含最新的状态。请注意上述被修正的分支指令可为有条件或无条件的分支指令。再则,上述早期状态旗标缓存器142可能因为其它不是修正分支指令的情况而造成此管线被清除,例如有例外发生的状况。流程继续到决策方块504。
在决策方块504,上述的早期旗标产生/控制逻辑电路212检视此晚期分支修正信号268以决定此S-阶段126的分支指令是否已被上述的晚期分支修正逻辑电路148修正,因此意指上述管线100被清除以更正上述错误的分支预测。若是如此,流程继续到方块506;不然流程即结束。
在方块506,上述的早期旗标产生/控制逻辑电路212经由此信号262将上述结构状态旗标缓存器162的值复制到此早期状态旗标缓存器142中,以及经由上述信号264标示此早期状态旗标缓存器142为有效,据此恢复上述早期状态旗标缓存器142为一有效状态。流程在方块506结束。
对应到上述图5的第二种状况,流程从方块512开始。
在方块512,上述早期旗标产生/控制逻辑电路212检视此旗标修正指令存在信号202以判定是否有可修改结构状态旗标缓存器的指令存在于此管线A-阶段112之后的阶段,如果有任何上述指令已修改上述结构状态旗标缓存器162时,则流程继续到方块514;不然流程结束。
在方块514,上述的早期旗标产生/控制逻辑电路212经由上述信号262将此结构状态旗标缓存器162的值复制到上述的早期状态旗标缓存器142,以及经由上述信号264标示此早期状态旗标缓存器142为有效,据此恢复上述早期状态旗标缓存器142为一有效状态。流程在方块514结束。
请注意在上述S-阶段126所进行的一分支修正以清除此管线100的事件是在上述决策方块504中判定,其为产生方块512的一判定状况的一事件。
参照图6,其为说明本发明所提供的微处理器100执行早期分支指令修正的一流程示意图。流程从方块602开始。
在方块602,一条件分支指令抵达上述J-阶段114。接着,流程继续到决策方块604。
在决策方块604中,上述早期分支修正逻辑电路144检视此早期状态旗标有效缓存器246的输出,以判定此早期状态旗标缓存器142是否有效。若是如此,流程继续到方块606;不然流程结束。如果上述的早期状态旗标缓存器142无效,则此装置不执行早期有条件分支修正。
在方块606,此早期分支修正逻辑电路144检视早期状态旗标缓存器142的内容,以判定是否满足此条件分支指令的状况码所指定的状况。接着,流程继续到决策方块608。
在决策方块608,上述早期分支修正逻辑电路144是根据方块606的结果判定是否必须修正上述条件分支指令的预测。当满足上述早期状态旗标缓存器142的状况时,必须要修正先前对此条件分支指令的预测,诸如上述条件分支指令应执行分支,但此分支预测器132却预测不执行分支的情况下(由此管线下游处的J-阶段114的分支预测选择信号208呈现的一伪值所表示),导致此微处理器100取回下一个顺序的指令;相反,当不满足上述早期状态旗标缓存器142的状况而须要修正上述条件分支指令的预测的情况下,诸如此条件分支指令不应执行分支但上述的分支预测器132却预测要执行分支时(由此管线下游处的J-阶段114的分支预测选择信号208呈现的一真值所表示)导致此微处理器100分支到预测的分支目标地址。如果需要修正对此条件分支指令的预测,则流程继续到方块612;不然流程结束。
在决策方块612,由于已经决定必须更正此条件分支指令的预测,上述早期分支修正逻辑电路144检视在此管线下游处的J-阶段114版本的分支预测选择信号208,以判定此条件分支指令是否被预测为执行分支。若是如此,则流程继续到方块616;不然流程继续到方块614。
在方块614,上述的早期分支修正逻辑电路144指示此I-阶段102透过上述信号154以清除此J-阶段114以上的微处理器100管线,以及令此微处理器100分支到上述条件分支指令的分支目标地址。在一实施例中,此条件分支指令的分支目标地址在上述A-阶段112的早期执行逻辑电路/地址产生器138中产生。另外,上述早期分支修正逻辑电路144令此早期分支修正信号258产生一真值,向下流到此晚期分支修正逻辑电路148,其用途在图7中描述。流程在方块614结束。
在方块616,此早期分支修正逻辑电路144指示此I-阶段102透过上述信号154以清除J-阶段114以上的微处理器100管线,以及令此微处理器100分支到此条件分支指令后下一个顺序的指令。另外,上述早期分支修正逻辑电路144在此早期分支修正信号258中产生一真值,向下流到此晚期分支修正逻辑电路148,其用途在图7中描述。流程在方块616结束。
参照图7,其为说明本发明的微处理器100执行晚期分支指令修正的一流程示意图。流程从方块702开始。
在方块702,一条件分支指令抵达上述的S-阶段126。接着,流程继续到决策方块704。
在方块704,此晚期分支修正逻辑电路148检视上述结构状态旗标缓存器162的内容,以判定是否满足此条件分支指令的状况码所指定的状况。流程继续到决定方块706。
在决策方块706,此晚期分支修正逻辑电路148是依据方块704的结果判定是否必须修正对此条件分支指令的预测。有,当上述结构状态旗标缓存器162的状况被满足而此条件分支指令必须要修正的情况,诸如此条件分支指令应被执行分支,但此分支预测器132却预测不执行分支(由此管线下游处的S-阶段126的分支预测选择信号208呈现的一伪值所表示),导致此微处理器100取回下一个顺序指令;相反的当在上述结构状态旗标缓存器162的状况不被满足而此条件分支指令必须要修正的情况,诸如此条件分支指令应不执行分支,但此分支预测器132却预测分支被执行(由此管线下游处的S-阶段126的分支预测选择信号208呈现的一真值所表示)导致此微处理器100分支到所预测的分支目标地址。如果需要更正此条件分支指令的预测,流程继续到方块708;不然流程结束。
在决策方块708,上述晚期分支修正逻辑电路148检视此早期分支修正信号258,以判定此条件分支指令的错误预测是否已被上述的早期分支修正逻辑电路144修正。若是如此,则流程结束;不然流程继续到方块712。
在决策方块712,由于已经判定必须修正此条件分支指令的预测,上述晚期分支修正逻辑电路148检视此管线下游处的S-阶段126的分支预测选择信号208,以判定此条件分支指令是否预测被执行分支。若是如此,则流程继续到方块716;不然流程继续到方块714。
在方块714,此晚期分支修正逻辑电路148指示此I-阶段102透过上述的信号154以清除此S-阶段126以上的微处理器100管线,以及令此微处理器100分支到上述条件分支指令的分支目标地址。流程在方块714结束。
在方块716,此晚期分支修正逻辑电路148此指示I-阶段102透过上述信号154以清除此S-阶段126以上的微处理器100管线,以及令此微处理器100分支到上述条件分支指令后的下一个顺序指令。流程在方块716结束。
如上述所见,比起一个没有上述早期执行逻辑电路/地址产生器138和早期缓存器文件136的微处理器,本发明所描述的微处理器100能够提早复数个频率周期提供先前指令的结果,作为一个随后可产生地址产生或不可产生地址指令的一个缓存器操作数要,据此减少所产生的管线空隙(bubble)。减少管线空隙空隙的数量意味着减低每个指令所消耗的平均频率周期,此为微处理器性能表现的一重要关键。再则,此早期结果可更早更新上述的状态旗标缓存器,因此具有比以往更早执行条件分支指令的潜能。再则,比起一个没有上述早期分支修正逻辑电路144的微处理器,本发明所描述的微处理器100能够提早复数个频率周期更正一个错误预测的条件分支指令。最后,对更快的微处理器频率频率的需求,造成微处理器设计者增加管线阶段的数目,当管线阶段的数目增加时,管线空隙所导致的对指令结果的等待时间和/或对状态旗标缓存器更新的数目将增加。同样的,当管线阶段的数目增加,更正错误的分支指令预测所造成的延误愈形严重。这些事实更增强了本发明所提供的微处理器、装置、和方法的优势。
虽然本发明和它的目的、特征和优点已被详细的描述,其它的实施例亦被本发明所包含。例如,虽然上述微处理器的实施例皆遵照x86结构,但这里所描述的装置和方法并不限定于x86结构,并可使用在各种微处理器结构。再则,虽然在一实施例中描述有条件分支指令被早期修正,早期产生状态旗标缓存器的优势亦可用在早期执行其它指令,如x86 LOOPcc指令的例子,Jcc指令也有同样的优势;或x86 SETcc和CMOVcc指令可在早期执行,所以它们的结果可提供给随后的附属指令。再则,除了利用早期结果产生状态旗标缓存器的值,早期结果也可用来执行间接分支指令的早期分支修正,通常称为”跳跃纪录器”指令,它指定分支目标地址当作来源纪录器操作数的值。
再则,除了利用硬件来实施本发明,本发明也可用在计算机可读码(如计算机可读程序代码、数据、等)实施在计算机可用(如可读)的介质中。计算机码产生包含本发明的功能使用性或制造或两者皆可。例如,可利用一般的程序语言(如C、C++、JAVA、和类似);GDSII数据库;硬件描述程序(HDL)包含Verilog HDL、VHDL、Altera HDL(AHDL)、等;或其它程序和/或线路(附图的)取得工具存在技术中。计算机码可配置在任何计算机可用(如可读)的介质中,包含半导体内存、磁性碟、光碟(如CD-ROM、DVD-ROM、和类似),当作一个计算机数据信号存在一个计算机可用(如可读)的传输介质中(如运输波或其它介质包含数字、光学、或模拟基础的介质)。如此,计算机码可在通讯网路上传输,包含因特网和企业内部网络。本发明可存在计算机码(当作IP(智慧财产)码的一部分,如微处理器核心,或当作***阶级设计,如***在芯片上(SOC))和转换为硬件当作生产集成电路的一部分。再则,本发明可实施为一个硬件和计算机码的结合。
最后,熟知此类技术人士皆能明了,适当而作些微的改变和调整,仍将不失本发明的要义所在,亦不脱离本发明的精神和范围。

Claims (51)

1.一个修正管线作业微处理器的分支指令的预测装置,在此预测微处理器的结构状态旗标缓存器中,分支指令所特定的分支状况是否满足,包含:
早期状态旗标缓存器,对应并储存一个比结构状态旗标缓存器状态较新的状态,此早期状态旗标缓存器拥有一个有效性指示器;和
早期分支修正逻辑电路,用来在有效性指示器指示早期状态旗标缓存器是有效的并且早期状态旗标缓存器指示预测有误时,修正分支指令的预测。
2.如权利要求1的装置,其特征在于,还包括:
晚期分支修正逻辑电路,连接到早期分支修正逻辑电路,用来在结构状态旗标缓存器指示预测有误和早期分支修正逻辑电路未能修正错误的预测时,修正分支指令的预测。
3.如权利要求2的装置,其特征在于,还包括:
一个执行单位,连接到晚期分支修正逻辑电路,用来产生储存在结构状态旗标缓存器中的值。
4.如权利要求3的装置,其特征在于,其中执行单位产生的值是依据有效来源操作数所产生的。
5.如权利要求2的装置,其特征在于,其中早期分支修正逻辑电路是在管线微处理器的第一阶段被执行,而晚期分支修正逻辑电路是在管线微处理器的第二阶段被执行,其中第二阶段接在第一阶段之后。
6.如权利要求1的装置,其特征在于,其中结构状态旗标缓存器储存微处理器的程序可见状态。
7.如权利要求1的装置,其特征在于,其中结构状态旗标缓存器的更新,仅依据微处理器确定会完成的指令结果。
8.如权利要求1的装置,其特征在于,其中结构状态旗标缓存器的状态永远有效。
9.如权利要求1的装置,其特征在于,在微处理器尚未确定是否保证完成指令时,早期状态旗标缓存器可依据此指令的早期结果更新。
10.如权利要求9的装置,其特征在于,其中某特定指令被保证完成,如果微处理器决定在此特定指令之前的任何指令都不能再产生例外并且此特定指令之前的所有分支指令都最终被解决。
11.如权利要求1的装置,其特征在于,还包括:
逻辑电路,连结到早期状态旗标缓存器,用以在某个在分支指令之前执行并用以指明状态旗标缓存器修改指令的早期结果为无效时,无效化早期状态旗标缓存器所储存的状态。
12.如权利要求11的装置,其特征在于,其中如果早期结果的产生是依据一个或多个无效的来源操作数,分支指令之前的指令早期结果将无效。
13.如权利要求11的装置,其特征在于,还包括:
早期执行逻辑电路,连结到逻辑电路,响应分支指令之前的一指令而产生早期结果。
14.如权利要求13的装置,其特征在于,其中早期执行逻辑电路在管线微处理器的某特定阶段之前的某阶段被执行,在此特定阶段中一执行单元将执行该指令在分支指令所在阶段之前某阶段的最终结果。
15.如权利要求13的装置,其特征在于,其中如果分支指令之前的指令不包括在早期执行逻辑电路可执行的指令组,分支指令之前的指令早期结果将无效。
16.如权利要求15的装置,其特征在于,其中早期执行逻辑电路可执行的指令组小于微处理器可执行的指令组。
17.如权利要求13的装置,其特征在于,其中早期执行逻辑电路还设定用以产生指令操作数的记忆地址。
18.如权利要求11的装置,其特征在于,其中当微处理器的管线被清除时,逻辑电路复制结构状态旗标缓存器的内容到早期状态旗标缓存器的内容并且使得早期状态旗标缓存器有效化。
19.如权利要求11的装置,其特征在于,其中当管线的第一和第二阶段之间没有任何指令需要修正状态旗标缓存器的内容时,逻辑电路将复制结构状态旗标缓存器的内容到早期状态旗标缓存器的内容,并使得早期状态旗标缓存器有效化。
20.如权利要求19的装置,其特征在于,其中管线的第一阶段包含一个早期分支修正逻辑电路修正分支指令的阶段,其中管线的第二阶段包含一个晚期分支修正逻辑电路修正分支指令的阶段,其中当结构状态旗标缓存器指示预测不正确和当早期分支修正逻辑电路没有修正错误的预测时,晚期分支修正逻辑电路将修正分支指令的预测。
21.如权利要求1的装置,其特征在于,其中早期状态旗标缓存器是有效的,如果早期状态旗标缓存器包含被每个未完成的管线指令所修正的结构状态旗标缓存器值,在此未完成的管线指令为早期状态旗标修正指令并且在分支指令之前。
22.如权利要求1的装置,其特征在于,其中分支指令预测的修正,包含清除微处理器管线中在分支指令所在阶段之前的部份以及导引微处理器到一个修正的分支地址去取回指令。
23.如权利要求22的装置,其特征在于,尚包含下列可能变化:当此预测是预测分支指令被选择时,修正的指令地址包含顺序跟在分支指令后面指令的地址;以及当此预测是预测分支指令未被选择时,修正的指令地址包含分支指令指定的分支目标地址。
24.如权利要求1的装置,其特征在于,其中结构状态旗标缓存器至少包含被储存在实质兼容于x86结构状态旗标缓存器的缓存器中的内容。
25.如权利要求1的装置,其特征在于,其中分支指令包含一个x86结构的有条件分支指令。
26.如权利要求1的装置,其特征在于,其中分支指令的预测包含一分支指令是否被选择的预测。
27.如权利要求1的装置,其特征在于,尚包含下列可能变化:如果预测分支指令被选择但早期状态旗标缓存器指示的分支状况不成立,早期状态旗标缓存器将指示预测不正确;以及如果预测分支指令不被选择但早期状态旗标缓存器指示的分支状况成立,早期状态旗标缓存器将指示预测不正确。
28.如权利要求1的装置,其特征在于,还包括:
第一储存组件,连结到早期分支修正逻辑电路,用来储存早期状态旗标缓存器的内容;以及
第二储存组件,连结到第一储存组件,用来储存有效指示器的内容。
29.如权利要求1的装置,其特征在于,至少可为下列可能变化的某一种或其任意组合:早期状态旗标缓存器的内容系在微处理器管线的地址产生阶段所产生;以及早期状态旗标缓存器的内容在管线的某个阶段所产生,此阶段紧紧跟随着包含结构状态旗标缓存器的内容的阶段。
30.如权利要求1的装置,其特征在于,其中管线作业微处理器是一纯量微处理器。
31.如权利要求1的装置,其特征在于,其中管线作业微处理器依程序顺序发放指令。
32.如权利要求1的装置,其特征在于,其中一计算机程序产品包括一个拥有计算机可读程序代码的计算机可用媒体,其中计算机程序产品是和一个计算机设备一起使用,而且计算机设备执行程序代码即可以形成本装置。
33.如权利要求1的装置,其特征在于,其中一个计算机数据数据讯号实施在一个传输媒体,其包含提供本装置的计算机可读程序代码。
34.如权利要求1的装置,其特征在于,其中结构状态旗标缓存器储存微处理器指令组可指定的有条件程序指令的状况。
35.一微处理器,其拥有分支预测器以预测有条件分支指令指定的状况是否满足,包含:
一个储存组件,可储存微处理器的状态旗标以决定分支状况是否满足,其中当位于分支指令前的一先前指令所指明的操作数并不能为此微处理器的早期执行逻辑电路所执行时,状态旗标的内容将为无效;和
分支修正逻辑电路,连结到储存组件,可在状态旗标有效以及状态旗标指示分支预测器错误预测有条件分支指令指定的状况是否满足时,修正预测,以及产生用以指示此分支修正逻辑电路是否修正随后的最终分支修正逻辑电路所使用的分支指令的一指示。
36.如权利要求35的微处理器,其特征在于,其中早期执行逻辑电路和储存组件是在微处理器管线的同一个阶段被执行。
37.如权利要求35的微处理器,其特征在于,其中当此分止指令的前一指令时所产生的结果是使用无效的输入操作数所产生时,状态旗标将无效。
38.如权利要求35的微处理器,其特征在于,其中随后的最终分支修正逻辑电路使用第二状态旗标,此第二状态旗标在用来决定分支指令是否满足时永远有效。
39.如权利要求35的微处理器,其特征在于,还包括:
一个早期缓存器,储存一早期缓存器档案,其用以提供操作数给早期执行逻辑电路来产生先前指令的结果,其中状态旗标的修改对应到此结果,并且,当早期缓存器档案提供一个无效的操作数给早期执行逻辑电路时,状态旗标是无效的。
40.如权利要求39的微处理器,其特征在于,其中早期缓存器文件还接收早期执行逻辑电路产生的结果。
41.如权利要求35的微处理器,其特征在于,其中当至少一个被提供至该先前指令的操作数是无效时,此状态旗标缓存器是无效的。
42.如权利要求35的微处理器,其特征在于,其中状态旗标是在微处理器管线的地址产生阶段所产生的。
43.如权利要求35的微处理器,其特征在于,其中微处理器是一个纯量微处理器。
44.如权利要求35的微处理器,其特征在于,其中微处理器依程序顺序发放指令。
45.一个在微处理器的管线运作早期阶段便修正有条件分支指令的预测的方法,包含:
决定早期状态旗标是否有效;
决定预测是否不正确,在此依据早期状态旗标是否满足有条件分支指令指定的状况;以及
修正有条件分支指令的预测,当早期状态旗标是有效的但是依据早期状态旗标是否满足有条件分支指令指定的状况的预测不正确时。
46.如权利要求45的方法,其特征在于,还包含:
产生早期状态旗标,在决定早期状态旗标是否有效之前。
47.如权利要求46的方法,其特征在于,其中产生早期状态包含:
产生对应到于分支指令前某先前指令的早期结果的早期状态旗标。
48.如权利要求47的方法,其特征在于,其中该先前指令是在有条件分支指令之前,并且微处理器处理此二者的时间仅仅相差一个管线阶段。
49.如权利要求47的方法,其特征在于,其中产生早期结果包含:
在微处理器的地址产生阶段中产生早期结果。
50.如权利要求45的方法,其特征在于,其中微处理器中早期状态旗标包含非结构的状态旗标。
51.一个储存在传输媒体中的计算机数据数据讯号,包含:
计算机可读的程序代码,其让计算机作为可以修正微处理器管线的分支指令预测的装置,此分支指令预测是预测有条件分支指令指定的分支状况是否在微处理器的结构状态旗标中被满足,此程序代码包含:
第一程序代码,用以让计算机作为早期状态旗标,此早期状态旗标是对应和储存一个比结构状态旗标更新颖的状态,并拥有一个有效指令;以及
第二程序代码,用以让计算机作为早期分支修正逻辑,此早期分支修正逻辑是在有效指示器指示早期状态旗标有效而且早期状态旗标指示预测不正确时,修正分支指令的预测。
CNB2005100062719A 2004-02-04 2005-01-31 修正管线作业微处理器中分支指令预测错误的装置 Active CN100377078C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/771,682 2004-02-04
US10/771,682 US7107438B2 (en) 2003-02-04 2004-02-04 Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions

Publications (2)

Publication Number Publication Date
CN1658154A true CN1658154A (zh) 2005-08-24
CN100377078C CN100377078C (zh) 2008-03-26

Family

ID=34679365

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100062719A Active CN100377078C (zh) 2004-02-04 2005-01-31 修正管线作业微处理器中分支指令预测错误的装置

Country Status (5)

Country Link
US (1) US7107438B2 (zh)
EP (1) EP1562107B1 (zh)
CN (1) CN100377078C (zh)
DE (1) DE602004011889T2 (zh)
TW (1) TWI288351B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101819521A (zh) * 2009-02-12 2010-09-01 威盛电子股份有限公司 微处理器以及解析第一或第二类别条件分支指令的方法
TWI785880B (zh) * 2021-07-06 2022-12-01 阿比特電子科技股份有限公司 錯誤偵測校正方法及其電路

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7617387B2 (en) 2006-09-27 2009-11-10 Qualcomm Incorporated Methods and system for resolving simultaneous predicted branch instructions
US7984279B2 (en) * 2006-11-03 2011-07-19 Qualcomm Incorporated System and method for using a working global history register
US20080222392A1 (en) * 2007-03-09 2008-09-11 On Demand Microelectronics Method and arrangements for pipeline processing of instructions
US7711935B2 (en) * 2007-04-30 2010-05-04 Netlogic Microsystems, Inc. Universal branch identifier for invalidation of speculative instructions
US7802078B2 (en) * 2008-09-09 2010-09-21 Via Technologies, Inc. REP MOVE string instruction execution by selecting loop microinstruction sequence or unrolled sequence based on flag state indicative of low count repeat
US8521996B2 (en) * 2009-02-12 2013-08-27 Via Technologies, Inc. Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution
EP2624126B1 (en) * 2011-04-07 2016-11-02 VIA Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US9128701B2 (en) * 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US20160170770A1 (en) * 2014-12-12 2016-06-16 Qualcomm Incorporated Providing early instruction execution in an out-of-order (ooo) processor, and related apparatuses, methods, and computer-readable media
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
US10545766B2 (en) 2017-04-18 2020-01-28 International Business Machines Corporation Register restoration using transactional memory register snapshots
US10782979B2 (en) 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
US10572265B2 (en) 2017-04-18 2020-02-25 International Business Machines Corporation Selecting register restoration or register reloading
US10963261B2 (en) 2017-04-18 2021-03-30 International Business Machines Corporation Sharing snapshots across save requests
US11010192B2 (en) 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
US10838733B2 (en) 2017-04-18 2020-11-17 International Business Machines Corporation Register context restoration based on rename register recovery
GB2592661B (en) 2020-03-05 2022-05-11 Advanced Risc Mach Ltd An apparatus and method for performing branch prediction
CN117008977B (zh) * 2023-08-08 2024-03-19 上海合芯数字科技有限公司 一种可变执行周期的指令执行方法、***和计算机设备

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU553416B2 (en) 1984-02-24 1986-07-17 Fujitsu Limited Pipeline processing
JP2667849B2 (ja) 1988-01-06 1997-10-27 株式会社日立製作所 情報処理装置
US5093777A (en) 1989-06-12 1992-03-03 Bull Hn Information Systems Inc. Method and apparatus for predicting address of a subsequent cache request upon analyzing address patterns stored in separate miss stack
US5487153A (en) 1991-08-30 1996-01-23 Adaptive Solutions, Inc. Neural network sequencer and interface apparatus
US5442767A (en) 1992-10-23 1995-08-15 International Business Machines Corporation Address prediction to avoid address generation interlocks in computer systems
US5493669A (en) * 1993-03-03 1996-02-20 Motorola, Inc. Data processor for simultaneously searching two fields of the rename buffer having first and second most recently allogated bits
US6079014A (en) 1993-12-02 2000-06-20 Intel Corporation Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state
US6021471A (en) 1994-11-15 2000-02-01 Advanced Micro Devices, Inc. Multiple level cache control system with address and data pipelines
CN1306394C (zh) * 1994-12-02 2007-03-21 现代电子美国公司 有限游程转移预测的方法
US5701426A (en) 1995-03-31 1997-12-23 Bull Information Systems Inc. Data processing system and method using cache miss address prediction and forced LRU status in a cache memory to improve cache hit ratio
US5606682A (en) 1995-04-07 1997-02-25 Motorola Inc. Data processor with branch target address cache and subroutine return address cache and method of operation
US5768610A (en) 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Lookahead register value generator and a superscalar microprocessor employing same
US5812813A (en) 1996-07-29 1998-09-22 Integrated Device Technology, Inc. Apparatus and method for of register changes during execution of a micro instruction tracking sequence
US5867724A (en) 1997-05-30 1999-02-02 National Semiconductor Corporation Integrated routing and shifting circuit and method of operation
US6085292A (en) 1997-06-05 2000-07-04 Digital Equipment Corporation Apparatus and method for providing non-blocking pipelined cache
US6085305A (en) 1997-06-25 2000-07-04 Sun Microsystems, Inc. Apparatus for precise architectural update in an out-of-order processor
US6112293A (en) 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6209076B1 (en) 1997-11-18 2001-03-27 Intrinsity, Inc. Method and apparatus for two-stage address generation
US6065103A (en) 1997-12-16 2000-05-16 Advanced Micro Devices, Inc. Speculative store buffer
US6148391A (en) 1998-03-26 2000-11-14 Sun Microsystems, Inc. System for simultaneously accessing one or more stack elements by multiple functional units using real stack addresses
JP3499135B2 (ja) 1998-06-29 2004-02-23 富士通株式会社 情報処理装置
US6367004B1 (en) * 1998-12-31 2002-04-02 Intel Corporation Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared
US6343359B1 (en) 1999-05-18 2002-01-29 Ip-First, L.L.C. Result forwarding cache
US6393555B1 (en) 1999-08-05 2002-05-21 Advanced Micro Devices, Inc. Rapid execution of FCMOV following FCOMI by storing comparison result in temporary register in floating point unit
US6412043B1 (en) 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
GB2367406B (en) * 2000-06-13 2002-06-05 Siroyan Ltd Predicated execution of instructions in processors
US7165169B2 (en) * 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101819521A (zh) * 2009-02-12 2010-09-01 威盛电子股份有限公司 微处理器以及解析第一或第二类别条件分支指令的方法
CN101819521B (zh) * 2009-02-12 2013-09-25 威盛电子股份有限公司 微处理器以及解析第一或第二类别条件分支指令的方法
TWI785880B (zh) * 2021-07-06 2022-12-01 阿比特電子科技股份有限公司 錯誤偵測校正方法及其電路

Also Published As

Publication number Publication date
TWI288351B (en) 2007-10-11
EP1562107A1 (en) 2005-08-10
DE602004011889D1 (de) 2008-04-03
US20040158697A1 (en) 2004-08-12
DE602004011889T2 (de) 2009-02-26
US7107438B2 (en) 2006-09-12
TW200527288A (en) 2005-08-16
EP1562107B1 (en) 2008-02-20
CN100377078C (zh) 2008-03-26

Similar Documents

Publication Publication Date Title
CN1658154A (zh) 早期修正分支指令预测错误的管线微处理器装置与方法
CN1629801A (zh) 产生早期指令结果的管线式微处理器、装置以及方法
CN1095117C (zh) 存数指令结果的前送的方法和处理器
CN101819521B (zh) 微处理器以及解析第一或第二类别条件分支指令的方法
CN1742257A (zh) 基于识别寻址模式的双目的寄存器的数据预测机制
CN1310134C (zh) 具有二级分支预测高速缓存的分支预测装置
CN1129843C (zh) 使用组合的数据处理器***和指令***
CN1103079C (zh) 用于高级微处理器的门控存储缓冲器
CN101706713B (zh) 改善乱序超纯量执行单元的微处理器及方法
US20090113182A1 (en) System and Method for Issuing Load-Dependent Instructions from an Issue Queue in a Processing Unit
TWI416407B (zh) 執行複數快速條件分支指令的方法以及相關之微處理器以及電腦程式產品
EP2069915B1 (en) Methods and system for resolving simultaneous predicted branch instructions
CN101529378B (zh) 用于处理分支历史信息的方法及管线处理器
CN1632877A (zh) 可变延滞时间堆栈快取存储器及提供资料的方法
CN103119562A (zh) 提交时执行的状态更新指令、装置、方法和***
US7991979B2 (en) Issuing load-dependent instructions in an issue queue in a processing unit of a data processing system
CN1178942A (zh) 利用寄存器更名实现自并行化
CN100343799C (zh) 产生流水线微处理器的早期状态标志的装置及方法
US7865705B2 (en) Branch target address cache including address type tag bit
CN102163139B (zh) 微处理器融合载入算术/逻辑运算及跳跃宏指令
CN1360693A (zh) 在流水线处理器中用于跳转延迟时隙控制的方法和装置
US20110060892A1 (en) Speculative forwarding of non-architected data format floating point results
CN1282930C (zh) 有效更新分支目标地址高速缓存的装置与方法
CN102193775B (zh) 微处理器融合搬运/算术逻辑运算/条件跳跃指令
US7100024B2 (en) Pipelined microprocessor, apparatus, and method for generating early status flags

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