CN1629801A - 产生早期指令结果的管线式微处理器、装置以及方法 - Google Patents

产生早期指令结果的管线式微处理器、装置以及方法 Download PDF

Info

Publication number
CN1629801A
CN1629801A CN200510005143.2A CN200510005143A CN1629801A CN 1629801 A CN1629801 A CN 1629801A CN 200510005143 A CN200510005143 A CN 200510005143A CN 1629801 A CN1629801 A CN 1629801A
Authority
CN
China
Prior art keywords
instruction
early
earlier
pipeline
stage
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
CN200510005143.2A
Other languages
English (en)
Other versions
CN100468323C (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 CN1629801A publication Critical patent/CN1629801A/zh
Application granted granted Critical
Publication of CN100468323C publication Critical patent/CN100468323C/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/38Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一种在一管线式微处理器中产生早期指令结果的装置以及方法,此装置包括早期执行逻辑电路,其包含一地址产生器被修改以进行指令指定的运算而非产生地址所需的算术运算,早期执行逻辑电路对应于微处理器管线中的一地址产生阶段,由于指令到达地址阶段早于到达对应于下管线且用于产生最终执行结果的最终执行单元,因此早期执行逻辑电路能提早产生指令结果,最终结果是用于更新微处理器的结构化寄存器文件,早期执行逻辑电路是只执行微处理器指令集的一指令子集,在一实施例中,早期执行逻辑电路/地址产生器增强以经常地执行进行快速的指令,早期执行逻辑电路进行加、减、乘、除、移位以及布尔运算,如果早期指令不在早期执行逻辑电路所执行的指令子集里,则早期结果是无效的。

Description

产生早期指令结果的管线式微处理器、装置以及方法
技术领域
本发明一般涉及一种管线式微处理器,特别是涉及一种早期指令执行。
背景技术
管线式微处理器已是现今微处理器的主流,其使得对应于微处理器中不同区块或是不同管线阶段的多个指令可以在同一时间内执行。Hennessy以及Patterson等人定义管线为“让多个指令通过重迭而执行的一种实现技术”(Computer Architecture:A Quantitative Approach,2ndedition,by John L.Hennessy and David A.Patterson,Morgan KaufmannPublishers,San Francisco,CA,1966),以下即是他们对于管线所提的一最佳描述:
一管线就像是一装配线,以汽车装配线为例,包括有许多步骤,每一步骤提供一组件用于组装一汽车,且即使这些组件是用于组装不同的汽车所用,每一步骤与其它步骤平行进行;以一计算机管线来说,在管线中每一步骤用于完成一命令的一部分,就像装配线一样,不同的步骤平行地用于完成不同命令的不同部分,每一步骤被称为一管线阶段(pipe stage)或是一管线节段(pipe segment),这些步骤一个连接一个而形成一管线,指令由管线的一端进入,经过许多步骤后,由管线的另一端出去,就像汽车在装配线上完成一样。
同步微处理器依据时钟周期(clock cycle)来进行,一般来说,一指令由微处理器管线的一个阶段进行到下一阶段为一时钟周期,以一汽车装配线为例来说,如果在装配线上的某一步骤,装配员由于没有汽车可组装而暂停工作,则装配线的产能以及效能将因此而消弱,同样地,如果一微处理器的步骤由于没有指令可以进行而在一时钟周期暂停时,通常称此状态为一管线气泡(pipeline bubble),则整个过程的效能将因此而减弱。
造成管线气泡的主要原因是分支指令(branch instruction),当一分支指令发生时,处理器必须决定分支指令的目的地址,并开始在目的地址捉取指令,而不是在分支指令之后的下一循序地址捉取指令。此外,如果分支指令是一条件式分支指令(即一分支是否发生决定于是否出现某一特殊状态),处理器必须判断分支指令是否发生且决定目的地址,由于最终决定目的地址与/或分支结果(即分支是否发生)的管线阶段通常对应于提取指令阶段之后好几个阶段,因此产生气泡。
为了解决上述问题,现今的处理器通常在管线中利用分支预测机制来提早预测目的地址与分支结果,同时微处理器设计者也持续地努力设计以提高分支预测机制预测的准确度,然而由于分支预测错误将会导致浪费大部分的时间,因此基于上述隐忧,错误预测必须在管线中在分支预测阶段之后的循序阶段被发现和校正,由于与错误预测相关的损失会关系到在分支预测与分支错误预测校正阶段间许多管线阶段的执行,因此,一种能提早校正条件式分支指令错误预测的装置以及方法实为当前所需。
然而,条件式分支指令所指定的一分支条件如果成立,则命令微处理器分支走向分支目的地址;否则,微处理器将继续提取下一循序的指令,微处理器包含储存微处理器状态的状态标志,状态标志将被检查以决定条件式分支指令指定的条件是否成立,因此,为了最终决定一条件式分支指令是否被错误预测,微处理器必须检查最新状态标志的状态。然而,现今,直到管线的最后,状态标志才被检查以决定分支条件是否成立以及分支预测是否错误,因此,一种能够在管线中提早产生状态标志的装置以及方法实为当前所需。
最后,状态标志的状态通常会受条件式分支指令之前的指令结果影响。举例来说,环境可由状态标志的一种—进位标志(carry flag)设置,其状态是由最新的加法指令结果来决定的。然而,影响状态标志的指令结果由对应于微处理器下管线阶段的执行单位产生,因此,一种在管线中能够提早产生指令结果的装置以及方法实为当前所需。
发明内容
有鉴于上述课题,本发明提供一种在一管线式微处理器中产生早期指令结果的装置以及方法。此装置包括早期执行逻辑电路,其包含被调整的一地址产生器以进行指令指定的运算而非产生地址所需的算术运算,早期执行逻辑电路对应于微处理器管线中的一地址产生阶段,由于指令到达地址阶段的时间,早于到达对应于后段管线且用于产生最终执行结果的最终执行单元,因此早期执行逻辑电路能提早产生指令结果。最终结果是用于更新微处理器的结构化寄存器文件。早期执行逻辑电路只执行微处理器指令集的一指令子集,在一实施例中,早期执行逻辑电路/地址产生器被增强以经常地执行进行快速的指令,早期执行逻辑电路进行加、减、乘、除、移位以及布尔运算,如果早期指令不在早期执行逻辑电路所执行的指令子集里,则早期结果是无效的。
本发明的装置也包含一早期寄存器文件,其对应于储存早期结果的结构化寄存器文件。在早期寄存器文件里的寄存器的内容可能是有效或无效的,且每一寄存器包含一相对的有效指示器。早期执行逻辑电路接收各种来源的输入操作数,包括早期寄存器文件、结构化寄存器文件及早期执行逻辑电路本身的输出。当任一输入操作数是无效时,则由早期执行逻辑电路产生的早期结果为无效的。如果需要一地址被产生的一指令到达地址阶段,指令将在地址阶段被暂停,如果需要,将等待所有输入操作数都出现且地址的产生为有效的。然而,如果指令只产生一结果而非一地址时,指令在地址阶段将不暂停;取而代之的,早期结果就此产生,但如果并非所有输入操作数皆出现且是有效的,则将被标示为无效的。然而,如果非地址产生指令所指示的操作数皆出现且有效的,例如由早期寄存器文件提供一有效操作数,早期执行逻辑电路执行此指令之后,即产生一有效早期结果且累加到早期寄存器文件中。在一实施例中,此微处理器为一标量(scalar)微处理器。
如果指令是一状态标志修改指令,早期状态标志产生逻辑电路将检查早期结果且依据检查结果累加早期状态标志。早期状态标志的累加能够选择性提早执行条件式指令。举例来说,一分支预测器于管线中提早预测条件式分支指令的结果,使微处理器不是分支走向预测的分支目的地址,就是依据预测结果捉取下一循序的指令。预测与分支指令一并被随着管线处理。早期分支校正逻辑电路于管线中所对应部分早于晚期分支校正逻辑电路在管线中所对应部分。当分支指令到达早期分支校正逻辑电路时,早期分支校正逻辑电路检查分支指令所指定的条件码及判断在早期状态标志中的指定条件是否成立以决定预测是否为正确。早期状态标志的产生是为响应在分支指令之前的指令,而早期状态标志是由早期标志产生逻辑电路产生。该早期标志产生逻辑电路是在管线中对应于微处理器的结构化状态标志的执行单元对应于之部分之前之位置,且早期状态标志可能为有效或无效的。当早期状态标志是有效的且指示一错误预测,则早期分支校正逻辑电路即校正此错误预测。早期状态标志的产生是响应在条件式分支指令之前的状态标志修改指令的早期结果,而早期结果可能有效或无效。当一状态标志修改指令的结果是无效的,早期状态标志则为无效的。而使早期状态标志重新有效的方式,是当对应于早期分支校正逻辑电路阶段后面的管线阶段的所有状态标志修改指令都已经被架构更新式状态标志时,通过将结构化状态标志拷贝到早期状态标志而实现。举例来说,此情形将发生在当诸如在一分支错误预测校正期间管线被清除(flush)时。早期分支校正逻辑电路是否校正错误预测的一指示将派送下至晚期分支校正逻辑电路。当条件式分支指令循序到达晚期分支校正逻辑电路时,如果结构化状态标志指示一错误预测且早期分支校正逻辑电路没有校正此错误预测,则晚期分支校正逻辑电路将校正此错误预测。
附图说明
图1为一显示依据本发明较佳实施例的一种管线式微处理器的方块示意图;
图2为一显示如图1所示的依据本发明较佳实施例的一种管线式微处理器的R阶段、A阶段以及J阶段的详细解说的方块示意图;
图3为一显示如图1与图2所示的依据本发明较佳实施例的一种管线式微处理器的结构化寄存器文件、早期寄存器文件、结构化标志寄存器以及早期标志寄存器解说的方块示意图;
图4为一显示如图2所示的依据本发明较佳实施例的一种管线式微处理器产生早期结果以及早期标志的操作流程解说示意图;
图5为一显示如图2所示的依据本发明较佳实施例的一种管线式微处理器恢复且有效化早期标志寄存器的操作流程解说示意图;
图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    结构化标志寄存器
174    布尔运算逻辑电路
202    标志修改指令出现信号
204    目的标志
206    指令
208    分支预测发生信号
212    早期标志产生/控制逻辑电路
214    源操作数标志信号
216    目的操作数标志
218    有效指示器
222    实时/持续操作数
226    复用器
228    暂停信号
232    管线寄存器
234    管线寄存器
236    有效位寄存器
238    源操作数寄存器
242    早期结果
244    早期结果有效信号
246    早期标志有效寄存器
248    管线寄存器
252    管线寄存器
254    早期结果寄存器
258    分支校正早期信号
262    早期标志值
264    控制信号
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所示的12个管线阶段。
微处理器100包含一I阶段102(指令提取阶段)以用于提取指令,I阶段102包含一指令高速缓存,用于存储程序指令,I阶段102从指令高速缓存或一连接微处理器100的一系统存储器提取程序指令,I阶段102在一存储于指令指针寄存器里的存储器地址提取指令,通常地,当指令被提取后,指令指针将递增,因此指令可以循序地被提取,然而,指令指针值可能转变为一非循序的存储器地址以响应一分支指令并让微处理器100分支走向一分支目的地址,I阶段102也可包含一分支预测器132,分支预测器132预测一分支指令是否出现在提取指令流里、分支指令是否发生以及当分支指令发生时决定分支指令的分支目的地址,亦即是,分支预测器132预测一分支指令是让微处理器100分支走向由分支指令指定的一分支目的地址(发生),或是让微处理器100去提取及执行在分支指令之后的下一循序指令(不发生),此分支指令最终将于管线中被解析;I阶段102接收第一与第二控制信号154以及156(下面将有更详细的描述),其是用于命令I阶段102去校正由分支预测器132产生的一分支指令预测,在一实施例中,分支预测器132包含一分支目的地址高速缓存(branch target address cache,BTAC),其是存储之前执行的分支指令的地址及解析之后的分支目的地址,另外,分支目的地址高速缓存也存储预测信息且依据之前分支指令历史的基础下,来预测分支指令是否发生,在另一实施例中,包含动态分支历史表格、静态分支预测器及静态/动态杂合分支预测器,这些在分支预测领域里是众所周知的,在一实施例中,I阶段102包含四个管线阶段。
微处理器100也包含一F阶段104(指令格式化阶段),其与I阶段102连接。在一实施例中,微处理器100的指令集包含变动长度指令(例如x86架构指令集)而非固定长度指令,F阶段104包含一指令格式器,以定义一指令字节流及将此指令字节流分开成不同的指令,特别一提的是,指令格式器决定在指令字节流里每一指令的长度与起始位置,在一实施例中,F阶段104包含一指令队列用于存储格式化的指令。
微处理器100也包含一X阶段106(翻译阶段),其与F阶段104连接。在一实施例中,微处理器100包含一精简指令集控制器(reducedinstruction set computer,RISC)的核心,其执行一原生指令集,相对于由I阶段102捉取的系统指令(也可称为宏指令),原生指令集可作为微指令,微指令是较简单且较易执行的指令,举例来说,x86架构指令集包含宏指令,或是复杂指令集控制器(complex instruction set computer,CISC)指令,X阶段106包含一指令翻译器,其将宏指令翻译成微指令,指令翻译器由F阶段104的宏指令队列撷取已格式化的宏指令,以及翻译每一宏指令为至少一个以上的微指令,以提供给管线中其余的阶段,其通常总合来说指的是管线中的执行阶段,在一实施例中,X阶段106包含一微指令队列以存储已翻译的指令,在一实施例中,X阶段106包含两个管线阶段。
微处理器100也包含一R阶段108(寄存器阶段),其与X阶段106及一A阶段112(地址产生阶段)连接,R阶段108包含一结构化寄存器文件134(architected register file,ARF)及一早期寄存器文件136(earlyregister file,ERF),结构化寄存器文件134包含复数个在微处理器100执行程序时显而易见的寄存器,特别是,一程序指令可指示在结构化寄存器文件134的一寄存器作为一源操作数,由此接收一输入指令以运行产生一结果,同样地,程序指令可指示在结构化寄存器文件134的一寄存器作为一目的操作数,指令的结果将达此而被写入,指令可明确地或是暗示地指示寄存器,在一实施例中,结构化寄存器文件134包含x86架构寄存器文件的EAX、EBX、ECX、EDX、区段指针寄存器(EBP)、ESI、EDI以及堆栈指针寄存器(ESP)寄存器(如图3所示),早期寄存器文件136包含的寄存器相对应于在结构化寄存器文件134里的每一寄存器(如图3所示)。
存储于结构化寄存器文件134的寄存器的数据反应使用者可看见的微处理器100状态,然而存储于早期寄存器文件136的寄存器的数据可反应一推测的微处理器100状态,因此,当微处理器100的一阶段产生一指令结果,且该指令指定一结构化寄存器文件134的寄存器为结果目的时,结果将不允许写入结构化寄存器文件134直到指令不再是预测的,即直到指令被保证为完整或是撤回的,相反的,如下所描述,一指令在还未被保证完整前可能被写入早期寄存器文件136,特别是,由一早期执行逻辑电路/地址产生器138(包含在A阶段112,其将在以下详细描述)产生的一指令结果可能在指令被保证完整前被写入早期寄存器文件136,若微处理器100决定指令本身及在此指令前没有指令依然能够产生一例外,且在此指令前的分支指令均已被解除,即微处理器100最终决定在此指令前的每一分支指令不管发生或是不发生已被校正,以及每一发生的分支指令的分支目的地址是正确的,而且,结构化寄存器文件134的数据通常被保证为有效的,然而早期寄存器文件136的数据还在被预测,可能是有效或是无效的,这将在下面作详细讨论,因此,在早期寄存器文件136里的寄存器也包含一相对的有效指示器218(如图3所示),以指示存储于相对的寄存器里的数据是否为有效的,当微处理器100被重新设定时,早期寄存器文件136初始化为与结构化寄存器文件134初始化相同的值。
微处理器100管线的R阶段108也包含一结构化标志寄存器(architectured EFLAGS register)162及在A阶段112包含一早期标志寄存器(early EFLAGS register)142,结构化标志寄存器162及早期标志寄存器142存储状态标志,其表示为指令结果的归属,例如此结果是否为零,产生为一进位或是为负数。在一实施例中,每一状态标志包含一单一位。在一实施例中,结构化标志寄存器162包含一x86架构的标志寄存器,其包含以下的状态标志:溢出标志(overflow,OF),符号标志(sign flag,SF),零标志(zero flag,ZF),奇偶标志(parity flag,PF),以及进位标志(carry flag,CF)(如图3所示),微处理器100在其指令集里包含条件式指令指示的条件码,一条件码指示一或多个状态标志的一状态,若状态标志的现时状态与在条件码指定的状态是相等的,则条件为正确的,于是微处理器100进行由条件式指令指定的运算,否则,被指定的运算将不被进行,在此描述一条件式指令为一条件式分支指令的例子,条件式分支指令在x86架构中若条件符合指令则为一转移(Jcc)指令,其指示一条件码及一置换用于计算一分支目的地址,一转移指令的一特别例子为一非零跳转(jump if not zero,JNZ)指令,非零跳转指令指示一非零状态码,若零标志(ZF)被清除(即非零条件为正确的),则微处理器100分支走向由分支指令指示的分支目的地址(即条件式分支指令是发生的);然而,若零标志被设立(即非零条件为错误的),则微处理器100捉取在条件式分支指令之后的下一循序指令(即条件式分支指令不发生),其它条件式x86指令的例子是SETcc、LOOPcc及CMOVcc指令。
结构化标志寄存器162包含在微处理器100上执行程序时可看见的状态标志,特别是,一条件式程序指令可能指示一条件码,其依据在结构化标志寄存器162里的状态标志为基础,早期标志寄存器142包含的状态标志,对应于在结构化标志寄存器162里的每一状态标志(如图3所示),如同在结构化寄存器文件134及早期寄存器文件136之间的关系,存储于结构化标志寄存器162里的数据反应使用者可看见的微处理器100状态,然而存储于早期标志寄存器142的数据可反应一推测的微处理器100状态,因此,当微处理器100的一阶段执行一修改至少一个以上的状态标志的指令时,状态标志不会在结构化标志寄存器162被更新直到指令不再被预测,相反的,如下所描述,在指令被保证为完整前状态标志会在早期标志寄存器142被更新,特别是,微处理器100会更新在早期标志寄存器142里的一状态标志,在指令被保证为完整之前,以响应一由早期执行逻辑电路/地址产生器138(亦被称为早期执行单元)所执行的一指令,此外,结构化标志寄存器162的数据通常被保证为有效的,然而早期标志寄存器142的数据可能为有效或无效的,如下详细讨论,因此,在早期标志寄存器142也包含一有效指示器246(如图3所示),以指示存储于早期标志寄存器142的数据是否为有效的,当微处理器100被重新设定时,早期标志寄存器142初始化与结构化标志寄存器162初始化相同的资料,如图3的实施例显示一单一有效指示器246对应早期标志寄存器142,然而,另一实施例显示一有效指示器被保持给在早期标志寄存器142中的每一状态标志。
A阶段112的早期执行逻辑电路/地址产生器138产生一早期结果及有效指示,其将利用一早期结果总线152返回提供给R阶段108,如下更详细描述,早期执行逻辑电路/地址产生器138依据输入操作数执行有效地址计算以产生存储器地址供存储器存取,输入操作数例如结构化寄存器文件134提供的操作数、早期寄存器文件136及/或由指令提供的一连续性操作数(例如一位移或偏移量),存储器地址也可被指令暗示性地指示,例如依据一暗示性指示的堆栈指针寄存器(例如:ESP)或是区段指针寄存器(例如:EBP)在一堆栈记忆中一位置的一地址,又例如在一推入或弹出指令中。
微处理器100也包含一J阶段114,其与A阶段112相连接,J阶段114包含早期分支校正逻辑电路144,早期分支校正逻辑电路144依据早期标志寄存器142的数据且藉由控制信号154选择性地校正分支预测,如下详细描述。
微处理器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也包含一E阶段124(执行阶段),其被连接于H阶段122,E阶段124包含执行指令运算的执行单元146,执行单元146可能包含电路学中例如加、减、乘、除、移位、旋转、执行布尔运算的逻辑电路单元及执行超越函数与对数的逻辑电路单元等等,以产生指令的最终结果,在一实施例中,执行单元146包含一整数单元、一浮点数单元、一多介质延伸集(MMX)单元及一串流延伸集(SSE)单元,由执行单元146产生的指令结果通常为正确的指令结果,执行单元146接收的输入或是来源,操作数通常为有效的,执行单元146输入操作数的来源包含结构化寄存器文件134、结构化标志寄存器162、来自数据高速缓存的操作数、在指令中明确指示的即刻及连续操作数,以及由其它管线阶段发送的操作数,特别一提的是,执行单元146不接收来自早期寄存器文件136或早期标志寄存器142的预测输入操作数。
微处理器100也包含一S阶段126(存储阶段),其被连接于E阶段124,S阶段126进行存储运算到存储数据(例如由执行单元146所产生的指令结果),以到数据高速缓存及/或系统存储器,此外,S阶段126包含晚期分支校正逻辑电路148,其依据结构化标志寄存器162的数据且藉由控制信号156以校正分支预测,如下详述说明。
微处理器100也包含一W阶段128(结果写回阶段),其与S阶段126连接,W阶段128藉由将指令结果写回结构化寄存器文件134及结构化标志寄存器162且经由一结果总线158对微处理器100的结构化状态作更新。
在一实施例中,微处理器100包含一单一指令派送,或标量,或单一执行微处理器,因此,来自指令派送或指令产生阶段(I阶段102到X阶段106)至指令执行阶段(R阶段108到W阶段128)的至多一指令在微处理器100的每一时钟周期被派送,相反于超标量微处理器,其在每一时钟周期派送二或多个指令去执行,然而,在此说明的方法及装置除非特别声明否则并不限于一标量微处理器,在一实施例中,微处理器100包含一排列派送微处理器,因此,指令是依在程序中指定的顺序被派送以执行,不像其它微处理器具有不依顺序来派送指令的能力。
请参考图2所示,依据本发明较佳实施例的一方块示意图详细说明图1微处理器100的R阶段108,A阶段112,及J阶段114,如图1所示,R阶段108包含结构化寄存器文件134,早期寄存器文件136,及结构化标志寄存器162,结构化标志寄存器162由W阶段128藉由结果总线158作更新,而R阶段108接收来自X阶段106的指令206,指令206可能包含关于指令及指令位本身的译码信息,指令指示指令的种类,例如:加法或分支等,指令亦可能藉由一标志指示一目的操作数位置,特别是,目的操作数标志可能指示在结构化寄存器文件134中其中之一的寄存器作为该指令206结果的一目的位置,结构化寄存器文件134藉由图1所示的指令总线158接收由W阶段128来的指令结果,一目的操作数标志278提供作为一选择器输入藉由结果总线158给结构化寄存器文件134以选择哪一寄存器会被来自结果总线158的指令结果作更新,早期寄存器文件136接收藉由早期结果总线152且来自A阶段112的一早期结果242(如图1所示),指令206包含一目的操作数标志216,其被提供作为一选择器输入给早期寄存器文件136用于选择哪一寄存器会被早期结果242作更新,提供给早期寄存器文件136的目的操作数标志216是来自将指令206下送至A阶段112的一管线寄存器232。
该指令也可藉由源操作数卷标信号214指示一或多个源操作数。在一实施例中,指令206可指示多至三个源操作数,指令206藉由源操作数卷标信号214指示寄存器源操作数,源操作数卷标信号214被提供作为一选择器输入至结构化寄存器文件134及早期寄存器文件136以选择哪一寄存器将提供作为源操作数给指令206,指令也可指示一实时/持续(例如一置换或偏移)操作数222。
R阶段108也包含有效指示器218对应每一早期寄存器文件136的寄存器(如图3所示),早期寄存器文件的有效指示器218藉由早期结果总线152接收来自A阶段112的一早期结果有效信号244,早期结果有效信号244用于更新对应于由目的操作数标志216选择出的早期寄存器文件136的寄存器的有效指示器218。
R阶段108也包含一复用器226,其选择源操作数让指令206进入R阶段108,复用器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也包含转送总线(图未显示),其前送来自E阶段124及S阶段126且由执行单元146所产生的结果至R阶段108提供作为操作数。转送总线被提供作为复用器226的输入。当R阶段108指令指示一源操作数,其标志与在A至H阶段的一目的标志并不相符,但与在E阶段124或S阶段126的一目的标志相符,则早期标志产生/控制逻辑电路212控制复用器226去选择转送总线补给最新的结果作为操作数,而一在转送总线所提供的操作数是通常有效的。
微处理器100也包含早期标志产生/控制逻辑电路212,早期标志产生/控制逻辑电路212接收来自结构化标志寄存器162作为输入,早期标志产生/控制逻辑电路212也接收在R阶段108及A阶段112的指令206作为输入,早期标志产生/控制逻辑电路212也接收复用器226的输出作为输入,即R阶段108的源操作数及相对应的有效位,早期标志产生/控制逻辑电路212也接收管线寄存器232、236及238的输出作为输入,即A阶段112的指令,其源操作数,及相对应的有效位,早期标志产生/控制逻辑电路212也接收早期结果242作为输入,早期标志产生/控制逻辑电路212也接收来自对应于A阶段112下的每一管线阶段的一标志修改指令出现信号202作为输入,在标志修改指令出现信号202的一正确值表示相对应阶段有一修改结构化标志寄存器162的指令及表示结构化标志寄存器162还未被指令更新,当早期标志寄存器142可能被修复以及有效化时,标志修改指令出现信号202用于判定,如下参照图5所示的叙述,早期标志产生/控制逻辑电路212也接收一分支校正晚期信号268作为输入,在分支校正晚期信号268的一正确值表示如图1的晚期分支校正逻辑电路148校正了一分支错误预测,其意味着管线是被清除的,当早期标志寄存器142可能被修复以及有效化时,分支校正晚期信号268亦用于判定,如下参照图5所示的叙述,早期标志产生/控制逻辑电路212也接收在A阶段112下的每一管线阶段出现的指令目的标志204作为输入,目的标志204用于判定在R阶段108由一指令206指示的一源操作数应由结构化寄存器文件134、早期寄存器文件136或A阶段112早期结果242来提供,如下参照图4所述,在一实施例中,指令206可指示一记忆源操作数,即一操作数的位置是由一存储器地址指示,通常地,存储器操作数出现在系统存储器里,或在数据高速缓存,然而在一实施例中,存储器操作数可能出现在微处理器100管线的一下位阶段,例如关于具有一符合R阶段108指令存储器操作数地址的目的存储器地址的一先前储存指令的数据,虽然并未显示,复用器226也接收存储器操作数作为输入,早期标志产生/控制逻辑电路212也接收一存储器操作数出现信号266作为输入,其代表由指令指示的存储器源操作数是否出现且有效的,以提供予复用器226,存储器操作数出现信号266被用于决定是否需要去暂停R阶段108的指令206及早期结果242是否是有效的,如以下在图4所描述的。
早期标志产生/控制逻辑电路212响应其输入产生了许多控制信号。早期标志产生/控制逻辑电路212产生一选择控制信号282,其控制复用器226去选择对应指令206的适当的操作数。早期标志产生/控制逻辑电路212也产生早期结果有效信号244,早期标志产生/控制逻辑电路212也产生一早期标志值262以存储在早期标志寄存器142及一控制信号264以更新在早期标志寄存器142的有效指示器246的值。当微处理器被重新设定时,在早期标志寄存器142的有效指示器246的值被初始化为一有效值。早期标志寄存器142的寄存器及有效指示器246执行作为管线寄存器以提供早期标志及有效位给J阶段114,早期标志产生/控制逻辑电路212也产生一暂停信号228,其被提供给管线寄存器232、234、236及238以暂停R阶段108。在一实施例中,管线寄存器232、234、236及238包含多寄存器,当暂停信号228为正确时,其用于保留最近状态直到下一时钟周期。下文将参照图4对暂停信号228的执行作详细描述。
A阶段112包含早期执行逻辑电路/地址产生器138,其接收来自源操作数寄存器238的源操作数及产生响应源操作数寄存器238的早期结果242,早期执行逻辑电路/地址产生器138包含算术逻辑电路单元272、布尔运算逻辑电路单元274及移位逻辑电路单元276,早期执行逻辑电路/地址产生器138其被用于产生有效地址给存储器运行,早期执行逻辑电路/地址产生器138亦用于执行微处理器100中指令集里指令所需要的运算的一子集,因此,早期执行逻辑电路/地址产生器138被用于执行可由图1的执行单元146执行的运算的一子集,早期执行逻辑电路/地址产生器138被用于执行一最常被执行的运算的一子集,为便于了解,在一实施例中,最常被执行的运算亦实质上相等于最快被执行的运算(即需要相对较短的时间去执行,例如其可在一单一时钟周期被执行)及需要一相对较少的硬件,特别是相较于那些已经需要去产生存储器地址的硬件,在一实施例中,算术逻辑电路单元272被用于执行一加、减、乘及除法;然而,算术逻辑电路单元272并不用于执行一进位加法或是引入减法,在一实施例中,布尔运算逻辑电路单元274被用于执行一布尔AND、OR、XOR、NOR、依信号延伸移动及依零延伸移动;然而,举例来说,布尔运算逻辑电路单元274并不执行一位交换,在一实施例中,移位逻辑电路单元276被用于执行一左移位或右移位;然而,举例来说移位逻辑电路单元276并不执行旋转或经由进位运算而旋转,虽然特殊实施例描述早期执行逻辑电路/地址产生器138执行运算的特殊子集,但本发明并不仅限于特殊的实施例,且在微处理器100设计领域里的技术人员可能已经体会早期执行逻辑电路/地址产生器138依据微处理器100的特殊指令集及目标执行和电路真实阶段目标用于执行运算的一特殊子集,由早期执行逻辑电路/地址产生器138产生的早期结果242被提供给一早期结果寄存器254存储及在之后提供给J阶段114。
J阶段114包含早期分支校正逻辑电路144(如图1所示),早期分支校正逻辑电路144接收早期标志寄存器142的输出,早期标志寄存器142的有效指示器246,以及早期结果寄存器254,早期分支校正逻辑电路144也接收在J阶段114来自一管线寄存器248的指令,其用于下送来自管线寄存器232的指令206,微处理器100也包含一分支预测发生信号208其由I阶段102、F阶段104及X阶段106且经过在R阶段108的管线寄存器234及在A阶段112的管线寄存器252向下派送,以及提供给早期分支校正逻辑电路144,在分支预测发生信号208中的一正确值代表在相对应阶段的指令为一分支指令,且其被分支预测器132预测为发生(如图1所示),即微处理器100之前的分支响应由分支预测器132产生的预测。
早期分支校正逻辑电路144响应其输入而产生分支控制信号154,提供给I阶段102(如图1所示),分支控制信号154包含一分支校正早期信号258,其被提供给如图1所示的晚期分支校正逻辑电路148,当早期分支校正逻辑电路144校正一分支预测时,分支校正早期信号258是正确的,如下参照图6所述,下文将参照图6对早期分支校正逻辑电路144的执行进行详细描述。
请参照图4所示,一流程解说示意图显示依据本发明,叙述如图2的装置的运算,以产生早期结果以及早期标志,图4的流程图跨越两个图示,分别代表为图4A以及图4B,且流程开始于方块402。
在方块402,一指令206指示一来自结构化寄存器文件134的源操作数到达R阶段108,指令藉由源操作数标志214指示一或多个来源寄存器操作数,流程来到判定方块404。
在判定方块404,早期标志产生/控制逻辑电路212检查指令类型及决定指令是否为在A阶段112必须执行的类型,在一实施例中,当指令需要产生一必须提供给在D阶段116的数据高速缓存的存储器地址时,指令必须在A阶段112执行,若指令必须在A阶段112执行,则流程进行到判定方块406;否则,流程则进行到判定方块412。
在判定方块406,早期标志产生/控制逻辑电路212决定所有被指令指示的源操作数是否出现且为有效的,若指令指示一存储器操作数,早期标志产生/控制逻辑电路212检查存储器操作数出现信号266以决定被指示的存储器操作数是否出现且为有效的,若指令指示一实时运算元,实时运算元总是出现且为有效的,当指令指示一寄存器操作数时,早期标志产生/控制逻辑电路212比较来自下管线阶段的目的标志204与源操作数标志214以决定在管线中的一旧指令是否产生一预定给由源操作数标志214指示的结构化寄存器文件134寄存器的结果,若是,结果将出现在早期寄存器文件136,其中早期标志产生/控制逻辑电路212检查被指示的操作数的有效指示器218以决定是否操作数为有效的,若在管线的一旧指令还未产生一预定给由源操作数标志214指示的结构化寄存器文件134寄存器的结果,则操作数出现且为有效的,因为其将由结构化寄存器文件134补充,当所有由指令指示的源操作数出现且为有效时,流程进行到判定方块412;否则流程将进行至方块408。
在方块408,早期标志产生/控制逻辑电路212产生一在暂停信号228的正确值以暂停在R阶段108的指令,且在最近时钟周期期间等待源操作数不是由存储器被送到就是写回结构化寄存器文件134或藉由转送总线成为有效的,流程进行由方块408回到判定方块406。
在判定方块412,早期标志产生/控制逻辑电路212比较由下位管线阶段来的目的标志204与源操作数标志214去决定在管线的一旧指令是否产生一预定给由源操作数标志214所指示的结构化寄存器文件134寄存器的结果,若是,结果就出现在早期寄存器文件136,虽然结果可能是有效或无效的,若在管线的一旧指令并不产生一预定给由源操作数标志214指示的结构化寄存器文件134寄存器的结果,流程进行到方块416;否则流程进行到方块414。
在方块414,早期标志产生/控制逻辑电路212产生一在控制信号上的值去使复用器226选择由源操作数标志214指示的寄存器源操作数,其由早期寄存器文件136所提供,当早期结果242在A阶段112产生且在指令到达R阶段108及要求源操作数的同一时钟周期期间时,则复用器226将选择早期结果242输入以提供源操作数给指令,复用器226可能由早期寄存器文件136选择多寄存器操作数给一指示多寄存器操作数的指令,流程进行到方块418。
在方块416,早期标志产生/控制逻辑电路212产生一在控制信号282的值使复用器226选择由源操作数标志214指示的寄存器源操作数,其由结构化寄存器文件134所提供,此外,早期标志产生/控制逻辑电路212控制复用器226去选择由指令指示的非寄存器操作数,若有,例如实时/持续操作数222或是有效提前的操作数,流程进行到方块418。
在方块418,指令进行到A阶段112,在此早期执行逻辑电路/地址产生器138利用由复用器226选择的源操作数产生早期结果242,特别是,适当的算术逻辑电路单元272其中之一,布尔运算逻辑电路单元274,或移位逻辑电路单元276依据指令类型产生早期结果242,流程进行到判定方块422。
在判定方块422,早期标志产生/控制逻辑电路212检查指令类型去决定指令是否为可被早期执行逻辑电路/地址产生器138执行的类型,因此,假设源操作数为有效的,早期标志产生/控制逻辑电路212决定指令是否对应于让早期执行逻辑电路/地址产生器138产生一正确早期结果的指令子集里,若是,流程进行至判定方块428;否则,流程进行到方块426。
在方块426,早期标志产生/控制逻辑电路212在早期结果有效指示器244产生一错误值且更新有效指示器218相对应于由具有错误值的目的操作数标志216指示的早期寄存器文件136寄存器,因为早期执行逻辑电路/地址产生器138不用于产生对指令类型的一有效早期结果242,流程进行到判定方块434。
在判定方块428,由于早期执行逻辑电路/地址产生器138被用于产生一正确早期结果242,早期标志产生/控制逻辑电路212决定是否所有的用于产生早期结果的操作数皆为有效的,如果早期标志产生/控制逻辑电路212在判定方块404决定指令必定不在A阶段112被执行,则指令不因缺少一操作数而在R阶段108被暂停,因此,即使来自早期寄存器文件136的一寄存器操作数是非有效的,指令也不会在R阶段108暂停,同样的,若一存储器操作数还未从存储器加载,指令不会在R阶段108暂停,此外,若早期执行逻辑电路/地址产生器138不用于对指令类型产生一有效早期要求,指令不会在R阶段108暂停,取而代之,早期结果242是在方块426被标记为无效的,以及正确结果在之后被E阶段124的执行单元146计算。相反的,必须在A阶段112执行的指令,例如计算一地址用于到达在D阶段116数据高速缓存的一指令,若操作数还未可获得和/或未有效时在R阶段108暂停。若所有用于产生早期结果242的操作数皆为有效,流程进行到方块432;否则,流程进行到方块426。
在方块432,早期标志产生/控制逻辑电路212在早期结果有效信号244产生一正确值,以及由于一有效早期结果242在方块418产生,更新有效指示器218相对应于由具有正确值的目的操作数标志216指示的早期寄存器文件136寄存器。此外,由目的操作数标志216指示的早期寄存器文件136的寄存器是以有效早期结果242更新,流程进行到判定方块434。
在判定方块434,早期标志产生/控制逻辑电路212检查指令以决定指令是否为一修改结构化标志寄存器162的类型,在一实施例中,修改标志的指令依据x86架构指令集指示,若指令修改标志,则流程进行到方块436;否则,流程终止。
在方块436,早期标志产生/控制逻辑电路212依据由早期执行逻辑电路/地址产生器138及依据指令206产生的早期结果242产生早期标志值262,及以早期标志值262更新早期标志寄存器142,在一实施例中,早期标志产生/控制逻辑电路212产生对于溢出标志(OF)的一正确值,当符号整数的二补码运算由早期执行逻辑电路/地址产生器138执行,以产生由一溢出环境造成的早期结果242(即早期结果242太大或太小以致不能在目的操作数满足),否则即产生一错误值;早期标志产生/控制逻辑电路212设置符号标志(SF)给早期结果242的最有效的位的值;当早期标志产生/控制逻辑电路212产生一对于零标志的正确值早期结果242为零时,否则产生一错误值;当早期标志产生/控制逻辑电路212产生一奇偶标志的正确值,早期结果242最不有效的位包含偶数个1位,否则即产生一错误值;早期标志产生/控制逻辑电路212产生对于进位标志的一正确值,当非符号整数运算由早期执行逻辑电路/地址产生器138执行,以产生由一溢出环境造成的早期结果242(即算术运算产生一进位或一引用早期结果242的最有效位),否则即产生一错误的值,在一实施例中,早期标志产生/控制逻辑电路212只更新由早期结果242影响的特殊状态标志,而非产生一状态标志全集以写入早期标志寄存器142,在其它实施例中,早期标志产生/控制逻辑电路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清除在校正错误预测的过程的管线,如下面参照图7所描述,清除管线代表没有结构化标志寄存器修改指令出现对应于R阶段108下的管线阶段,亦或是对应于任何在管线中修改结构化标志寄存器162的指令已经更新结构化标志寄存器162或已经被清除,因此,结构化标志寄存器162包含最新的状态,分支指令校正可能为一条件式或非条件式类型的分支指令,此外,早期标志寄存器142可能重新存储以响应其它造成除了校正分支指令外,例如例外,管线被清除的情形,流程进行到判定方块504。
在方块504,早期标志产生/控制逻辑电路212检查分支校正晚期信号268,以决定是否S阶段126分支指令被晚期分支校正逻辑电路148所校正,由此表示管线被清除以产生错误预测的校正,若如此,流程进行到方块506;否则,流程终止。
在方块506,早期标志产生/控制逻辑电路212复制结构化标志寄存器162的值到早期标志寄存器142藉由信号262以及标示早期标志寄存器142的值藉由控制信号264,由此,重新存储早期标志寄存器142为一有效状态,流程进行到506。
参照在图5的第二情况,流程开始在方块512,在方块512,早期标志产生/控制逻辑电路212检查标志修改指令出现信号202以决定是否所有结构化标志寄存器修改指令出现在A阶段112下,是否任一,已更新结构化标志寄存器162,若是,流程进行到方块514;否则,流程终止。
在方块514,早期标志产生/控制逻辑电路212复制结构化标志寄存器162的值到早期标志寄存器142藉由早期标志值262以及标示早期标志寄存器142的值藉由控制信号264,由此,重新存储早期标志寄存器142为一有效状态,流程进行到514。
在此说明清除管线是由于在方块504决定且在S阶段126的一分支校正,为一建立环境给在方块512产生一决定的情形。
请在参照图6所示,依据本发明的一流程解说示意图说明微处理器100的运行以进行早期分支校正,流程在方块602开始。
在方块602,一条件分支指令到达J阶段114,流程进行到判定方块604。
在方块604,早期分支校正逻辑电路144检查早期标志有效寄存器246的输出决定是否早期标志寄存器142为有效的,若是,流程进行到方块606;否则,流程终止,因此,若早期标志寄存器142为无效的,装置不进行早期条件式分支校正。
在方块606,早期分支校正逻辑电路144检查早期标志寄存器142内容以决定是否由在条件式分支指令的条件码所指示的条件是满足的,流程进行到判定方块608。
在判定方块608,早期分支校正逻辑电路144决定是否需要去校正条件式分支指令的预测以响应方块606,条件式分支指令需要去校正若有效早期标志寄存器142的环境为满足的,像是条件式分支指令应该发生,而分支预测器132预测分支不发生(如由分支预测发生信号208之下管线J阶段114形式的一错误值指示),即导致微处理器100去捉取下一循序的指令;相反的,条件式分支指令需要被校正若条件在有效早期标志寄存器142是不满足,像是条件式分支指令应该不被发生,而分支预测器132预测分支发生(如由一由分支预测发生信号208之下管线J阶段114形式的一正确值指示),即导致微处理器100分支到预测分支目的地址,如果校正条件式分支指令的预测为必须的,流程进行到判定方块612;否则,流程终止。
在判定方块612,已决定条件式分支指令需要校正,早期分支校正逻辑电路144检查分支预测发生信号208的管线下J阶段114版本,以决定是否条件式分支指令被预测发生,如果是,流程进行到方块616;否则,流程进行到方块614。
在方块614,早期分支校正逻辑电路144藉由控制信号154导引I阶段102去清除对应于J阶段114上的管线以及分支微处理器100到条件式分支指令的分支目的地址,在一实施例中,条件式分支指令的分支目的地址是由在A阶段112的早期执行逻辑电路/地址产生器138所产生,此外,早期分支校正逻辑电路144在下送到晚期分支校正逻辑电路148的分支校正早期信号258产生一正确值,其使用被参照图7描述如下,流程在方块614结束。
在方块616,早期分支校正逻辑电路144藉由控制信号154导引I阶段102去清除对应于J阶段114以上的管线,以及分支微处理器100到在条件式分支指令后的下一循序指令,此外,早期分支校正逻辑电路144在下送到晚期分支校正逻辑电路148的分支校正早期信号258产生一正确值,其使用被参照图7描述如下,流程在方块616结束。
请参照图7,依据本发明的一流程解说示意图说明微处理器100的运行以进行晚期分支校正,流程开始在方块702。
在方块702,一条件式分支指令到达S阶段126,流程进行到方块704。
在方块704,晚期分支校正逻辑电路148检查结构化标志寄存器162内容以决定是否在条件式分支指令的条件码指定的条件为满足的,流程进行到判定方块706。
在方块706,晚期分支校正逻辑电路148决定是否需要去校正响应方块704之条件式分支指令的预测,条件式分支指令需要被校正当在结构化标志寄存器162的条件为满足的,像是条件式分支指令必需已被发生,而分支预测器132预测分支还未被发生(如由在分支预测发生指令208的对应于管线下S阶段126版本的一错误值指示),即造成微处理器100去捉取下一循序指令;相反的,条件式分支指令需要被校正当在结构化标志寄存器162的条件为非满足的,像是条件式分支指令必须还未被发生,而分支预测器132预测分支已发生(即由在分支预测发生指令208之对应于管线下S阶段126版本的一正确值指示),即造成微处理器100分支到预测的分支目的地址,若需要去校正条件式分支指令的预测,流程进行到判定方块708;否则,流程终止。
在判定方块708,晚期分支校正逻辑电路148检查分支校正早期信号258以决定是否条件式分支指令的错误预测已经由早期分支校正逻辑电路144校正,如果是,流程终止;否则,流程进行到判定方块712。
在判定方块712,已经决定条件式分支指令需要校正,晚期分支校正逻辑电路148检查分支预测发生信号208的管线下S阶段126去决定是否条件式分支指令被预测发生,若是,流程进行到方块716;否则,流程进行到方块714。
在方块716,晚期分支校正逻辑电路148藉由控制信号154导引I阶段102去清除对应于S阶段126以上的管线,以及将微处理器100分支到在条件式分支指令后的下一循序指令,流程在方块716结束。
承上所述,描述的微处理器100相较于没有早期执行逻辑电路/地址产生器138及早期寄存器文件136所带来优点的微处理器100,能够提早复数个时钟周期提供一之前指令的一结果作为一寄存器操作数给一循序地址产生或非地址产生指令,因此减少了所导致的管线气泡数量,同时亦减少了每一微处理器100运算主要的成分一指令的平均周期。再者,早期结果可以应用于较先前可能的更迅速地更新状态标志,于是更有潜力使条件式指令较先前可能的更快速执行。此外,描述的微处理器100相对于没有早期分支校正逻辑电路144提供优点的微处理器,能够提早复数个时钟周期校正一非正确预测的条件式分支指令。最后,高周期频率微处理器100的要求使得微处理设计者去增加管线阶段的数量,当管线阶段的数量增加,所导致的管线气泡以等待指令结果及/或状态标志更新可能就随着增加,同样的,当管线阶段数量增加,校正错误预测的分支指令的延缓可能亦增加,此些因素彰显了在上述微处理器、装置以及方法的优点。
虽然本发明及其目的、特征及优点已经详细描述,其它任何未脱离本发明的精神与范围实施例也应被包含。举例来说,虽然所描述的一微处理器100的实施例实质上与x86架构相一致,但所描述的装置及方法并不设限于x86架构而且可以被应用于各种微处理器100架构。此外,虽然一实施例描述在其中一条件式分支指令被提早校正,早期产生状态标志的优点可被利用于提早进行其它指令,例如以x86LOOPcc指令为例,同样的在此所描述的优点一样发生在转移指令;或x86 SETcc以及CMOVcc指令可被提早执行,因此其结果可让随后之依据指令可用的。此外,除了利用早期结果产生早期状态标志值外,早期结果亦可用于进行早期间接分支指令的分支校正,通常指的是直接寄存器跳转(jump through register),其指示分支目的地址为一来源寄存器操作数值。
此外,可利用硬件增加本发明的应用范围。本发明可以应用在计算机可读代码(即计算机可读程序代码、数据等)收录在一计算机可用(即可读)介质,计算机代码是用于让本发明的功能或构造或两者得以实施。举例来说,其系利用一般的程序语言(即C,C++,JAVA等)、GDSII数据库、硬件描述语言(HDL)(例如Verilog HDL、VHDL、Altera HDL(AHDL))等等、或其它程序及/或电路(即shematic)在本领域中可获得的取得工具。计算机代码可以设置在任何知道的计算机可用(即可读取)介质,例如半导体存储器、磁盘、光盘(CD-ROM、DVD-ROM等),以及作为一存储在一计算机可用(即可读)传输介质(即载波或任何其它介质包括数字、光学或模拟介质)的计算机数据信号。因此,计算机码可以被传输在通讯网上,包括网内与网外。因此可了解本发明可包含在计算机代码(即一IP(智慧财产)核心的一部分,例如一微处理器核心,或作为一系统级设计,例如一系统芯片(SOC))以及转型成硬件作为整体电路制造的一部分。此外,本发明可以具体化为一硬件和计算机代码的组合。
最后,本领域技术人员应了解可以直接利用本发明揭露的观念以及特殊的实施例作为设计或修改其它结构以实现相同于本发明目的的基础,任何未脱离本发明的精神与范围,均由权利要求来定义。

Claims (24)

1.一种管线式微处理器,具有一结构化寄存器文件以及至少用于产生指令的复数个最终结果的一最终执行单元包含:
一地址阶段,其是该管线中较该最终执行单元所对应的阶段早的阶段,该地址阶段包含一早期执行单元,用于在该最终执行单元产生指令的该最终结果前产生指令的复数个早期结果;以及
一早期寄存器文件,其与该早期执行单元连接并且对应于该结构化寄存器文件,该早期寄存器文件用于存储该早期结果,且将该早期结果提供给该早期执行单元以产生复数个循序指令的早期结果,其中该结构化寄存器文件只以该最终结果而非该早期结果作更新。
2.如权利要求1所述的管线式微处理器,其中该早期执行单元用于执行该微处理器指令集的一指令子集。
3.如权利要求2所述的管线式微处理器,其中由该早期执行单元所执行的该指令子集,包含复数个移位指令、或复数个移位指令以及复数个布尔指令、或是复数个移位指令、复数个布尔指令以及复数个算术指令。
4.如权利要求1所述的管线式微处理器,进一步包括:
一总线,其与该早期执行单元连接,并于一第一时钟周期间提供由该早期执行单元所产生的一第一指令的一第一早期结果给该早期执行单元,以便在一第二时钟周期间产生一第二指令的一第二早期结果,其中该第一时钟周期紧接在该第二时钟周期之前。
5.如权利要求4所述的管线式微处理器,该第一指令是以一管线阶段紧接在该第二指令之前。
6.如权利要求1所述的管线式微处理器,进一步包括:
一结果写回阶段,其对应于该管线阶段中较该最终执行单元所对应位置后面的位置,以该最终执行单元所产生的该最终结果来更新该结构化寄存器文件,其中该早期结果只对该早期寄存器文件作更新。
7.如权利要求1所述的管线式微处理器,其中该早期执行单元亦自该早期寄存器文件中取得该早期结果,以作为操作数来产生复数个存储器地址。
8.如权利要求7所述的管线式微处理器,其中该早期执行单元产生复数个堆栈存储器位置的存储器地址以及复数个非堆栈存储器位置的存储器地址。
9.如权利要求1所述的管线式微处理器,其中该管线式微处理器依程序顺序派送指令。
10.如权利要求1所述的管线式微处理器,该早期结果由包含复数个非地址结果以及复数个堆栈指针地址的该早期执行单元所产生,且该早期执行单元属于一单一管线阶段。
11.一种装置,用于改善一管线式微处理器的性能,且该管线式微处理器具有一结构化寄存器文件,该装置包含:
一早期执行逻辑电路,其用于产生指令的复数个早期结果,且产生程序早于由至少一执行单元对该指令所产生的复数个晚期结果,而该执行单元对应于管线中较该早期执行逻辑电路所对应部分后面的位置;
一早期寄存器文件,其与该早期执行逻辑电路连接,该早期寄存器文件包含对应于该结构化寄存器文件的复数个寄存器以储存该早期结果,该早期寄存器文件是具有与每一寄存器连接的一有效指示器,该早期寄存器文件用于提供该早期结果予该早期执行逻辑电路作为操作数以产生后续的该早期结果;以及
一逻辑电路,其接收该有效指示器,当该早期执行逻辑电路利用存储于该早期寄存器文件其中之一的寄存器中的一操作数来产生一地址,且该有效指示器指示该缓存单元为无效时,该逻辑电路暂停此管线,并且当该早期执行逻辑电路利用存储于该早期寄存器文件的该寄存器之一中的一操作数来产生一非存储器地址早期结果时,该有效指示单元指示该缓存单元为无效,该逻辑电路便不暂停此管线。
12.如权利要求11所述的装置,其中该早期执行逻辑电路对应于该管线式微处理器的一地址阶段。
13.如权利要求11所述的装置,进一步包括:
一寄存器,其与该逻辑电路连接,该寄存器依据该早期结果累加复数个早期状态标志,以依据累加于该寄存器中的该早期状态标志而使能提早执行条件式指令。
14.如权利要求11所述的装置,进一步包括:
一结果总线,连接一该早期执行逻辑电路的输出到一复用器的一第一输入,用于提供自该早期执行逻辑电路输出的该早期结果,该复用器具有一第二输入,该第二输入被连接以接收来自该结构化寄存器文件的一操作数,该复用器具有一输出,以便将至少一操作数从该第一输入及该第二输入的任一提供至该早期执行逻辑电路,使在一第一时钟周期期间,由该早期执行逻辑电路产生一第一早期结果作为一操作数,其在紧接于该第一时钟周期后的一第二时钟周期期间,提供给一第二指令以产生该第二指令的一第二早期结果。
15.一种装置,其对应于一管线式微处理器,用于产生复数个存储器地址以及复数个早期指令结果,该装置包含:
一地址产生器,当一指令指示存储器地址产生时,该地址产生器用于产生一存储器地址,且当该指令指示结果产生时,该地址产生器进一步用于产生一选择式有效结果;以及
一逻辑电路,其与该地址产生器连接,当该指令指示存储器地址产生,及当并非该指令的所有输入操作数都是有效且可提供给该地址产生器时,该逻辑电路便暂停管线,而当该指令指示结果产生,且并非该指令的所有输入操作数皆为有效且可提供给该地址产生器时,该逻辑电路便不暂停管线。
16.如权利要求15所述的装置,其中该地址产生器产生复数个堆栈存储器位置的存储器地址以及复数个非堆栈存储器位置的存储器地址。
17.如权利要求15所述的装置,其中该地址产生器属于一单一管线阶段。
18.如权利要求15所述的装置,其中当该地址产生器未用于进行该指令所指定的一种运算时,该逻辑电路产生一指示器以指示该结果为无效。
19.如权利要求15所述的装置,其中当提供复数个无效源操作数给该地址产生器以产生该结果时,该逻辑电路产生一指示器以指示该结果是无效。
20.一种方法,用于避免在一微处理器管线中由于指令间的操作数相依性而产生的暂停,且该管线式微处理器具有一结构化寄存器文件,该方法包含:
产生在管线中一地址阶段的一第一指令的一第一结果,其中该第一结果可能为无效的;
存储该第一结果于该微处理器的一早期寄存器文件;
藉来自该早期寄存器文件的该第一结果作为一输入操作数予一第二指令,以在地址阶段产生该第二指令的一第二结果;
储存该第二结果于该早期寄存器文件;以及
藉由该早期寄存器文件的该第二结果作为一输入操作数予一第三指令,以产生该第三指令的一存储器地址。
21.如权利要求20所述的方法,进一步包括:
累加复数个早期状态标志以回应该第二结果。
22.如权利要求21所述的方法,进一步包括:
当该第二结果为无效时,设定该早期状态标志亦为无效。
23.如权利要求21所述的方法,进一步包括:
判断一条件式指令所指示的一环境是否满足该早期状态标志;以及
当该早期状态标志为有效且该环境满足该早期状态标志,执行由该条件式指令指示的一运算。
24.一种计算机数据信号,其包含于一传输介质中,该计算机数据信号包含:
一计算机可读取程序代码,其提供给具有一结构化寄存器文件以及至少一最终执行单元的一管线式微处理器,寄存器文件用于产生指令的复数个最终结果,该计算机可读程序代码包含:
一第一程序代码,其提供对应于管线中较该最终执行单元所对应阶段早的位置的一地址阶段,其包含一早期执行单元,藉以在该最终执行单元产生指令的该最终结果前产生指令的复数个早期结果;以及
一第二程序代码,其提供一早期寄存器文件,该早期寄存器文件与该早期执行单元连接,且对应该结构化寄存器文件,用于储存该早期结果以及提供该早期结果给该早期执行单元以产生后续复数个指令的早期结果,其中该结构化寄存器文件只以该最终结果而非该早期结果作更新。
CNB2005100051432A 2004-02-04 2005-01-28 产生早期指令结果的管线式微处理器、装置以及方法 Active CN100468323C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/771,630 US7185182B2 (en) 2003-02-04 2004-02-04 Pipelined microprocessor, apparatus, and method for generating early instruction results
US10/771,630 2004-02-04

Publications (2)

Publication Number Publication Date
CN1629801A true CN1629801A (zh) 2005-06-22
CN100468323C CN100468323C (zh) 2009-03-11

Family

ID=34837863

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100051432A Active CN100468323C (zh) 2004-02-04 2005-01-28 产生早期指令结果的管线式微处理器、装置以及方法

Country Status (3)

Country Link
US (1) US7185182B2 (zh)
CN (1) CN100468323C (zh)
TW (1) TWI251776B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101601008B (zh) * 2007-01-24 2013-05-08 高通股份有限公司 用于执行扩展指令的方法和处理器
CN103365627B (zh) * 2008-02-26 2016-08-10 高通股份有限公司 执行单元内的数据转发系统和方法

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007041999A (ja) * 2005-08-05 2007-02-15 Renesas Technology Corp データ処理装置
US7861064B2 (en) * 2008-02-26 2010-12-28 International Business Machines Corporation Method, system, and computer program product for selectively accelerating early instruction processing
JP2010122787A (ja) * 2008-11-18 2010-06-03 Panasonic Corp 半導体集積回路及びレジスタアドレス制御装置
US8281106B2 (en) * 2008-12-16 2012-10-02 International Business Machines Corporation Specifying an addressing relationship in an operand data structure
US8458439B2 (en) * 2008-12-16 2013-06-04 International Business Machines Corporation Block driven computation using a caching policy specified in an operand data structure
US8327345B2 (en) * 2008-12-16 2012-12-04 International Business Machines Corporation Computation table for block computation
US8285971B2 (en) * 2008-12-16 2012-10-09 International Business Machines Corporation Block driven computation with an address generation accelerator
US8407680B2 (en) * 2008-12-16 2013-03-26 International Business Machines Corporation Operand data structure for block computation
US8966230B2 (en) * 2009-09-30 2015-02-24 Intel Corporation Dynamic selection of execution stage
US8776091B2 (en) 2010-04-30 2014-07-08 Microsoft Corporation Reducing feedback latency
US8745362B2 (en) 2010-06-25 2014-06-03 International Business Machines Corporation Operating system aware branch predictor using a dynamically reconfigurable branch history table
US10275251B2 (en) 2012-10-31 2019-04-30 International Business Machines Corporation Processor for avoiding reduced performance using instruction metadata to determine not to maintain a mapping of a logical register to a physical register in a first level register file
US9286068B2 (en) 2012-10-31 2016-03-15 International Business Machines Corporation Efficient usage of a multi-level register file utilizing a register file bypass
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
US20170177362A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Adjoining data element pairwise swap processors, methods, systems, and instructions
US10740107B2 (en) * 2016-06-01 2020-08-11 International Business Machines Corporation Operation of a multi-slice processor implementing load-hit-store handling

Family Cites Families (31)

* 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
US5542058A (en) * 1992-07-06 1996-07-30 Digital Equipment Corporation Pipelined computer with operand context queue to simplify context-dependent execution flow
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
US5590368A (en) * 1993-03-31 1996-12-31 Intel Corporation Method and apparatus for dynamically expanding the pipeline of a microprocessor
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
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
US5663671A (en) * 1996-02-01 1997-09-02 Ametek Aerospace Products, Inc. Electronic circuit including operational amplifier and clamping circuit
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
US5850543A (en) * 1996-10-30 1998-12-15 Texas Instruments Incorporated Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return
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
US6047367A (en) * 1998-01-20 2000-04-04 International Business Machines Corporation Microprocessor with improved out of order support
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 富士通株式会社 情報処理装置
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
US6708267B1 (en) * 2000-02-04 2004-03-16 International Business Machines Corporation System and method in a pipelined processor for generating a single cycle pipeline stall
US7028165B2 (en) * 2000-12-06 2006-04-11 Intel Corporation Processor stalling
US6804759B2 (en) * 2002-03-14 2004-10-12 International Business Machines Corporation Method and apparatus for detecting pipeline address conflict using compare of byte addresses

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101601008B (zh) * 2007-01-24 2013-05-08 高通股份有限公司 用于执行扩展指令的方法和处理器
CN103365627B (zh) * 2008-02-26 2016-08-10 高通股份有限公司 执行单元内的数据转发系统和方法

Also Published As

Publication number Publication date
TW200527286A (en) 2005-08-16
US7185182B2 (en) 2007-02-27
CN100468323C (zh) 2009-03-11
US20050182918A1 (en) 2005-08-18
TWI251776B (en) 2006-03-21

Similar Documents

Publication Publication Date Title
CN1629801A (zh) 产生早期指令结果的管线式微处理器、装置以及方法
CN1658154A (zh) 早期修正分支指令预测错误的管线微处理器装置与方法
CN1103079C (zh) 用于高级微处理器的门控存储缓冲器
CN1174313C (zh) 多指令集的数据处理
TWI470546B (zh) 微處理器、管線式微處理器、快速執行條件分支指令之方法、以及解析第一或第二類別條件分支指令之方法
CN1194292C (zh) 具有改良的指令集体系结构的微处理器
TWI506543B (zh) 微處理器以及指令執行方法
US8769539B2 (en) Scheduling scheme for load/store operations
CN1088214C (zh) 用多指令集处理数据的器件和方法
CN1095117C (zh) 存数指令结果的前送的方法和处理器
CN1742257A (zh) 基于识别寻址模式的双目的寄存器的数据预测机制
US20110153991A1 (en) Dual issuing of complex instruction set instructions
CN1121014C (zh) 具有risc结构的八位微控制器
CN1250906A (zh) 使用组合的数据处理器系统和指令系统
CN1632877A (zh) 可变延滞时间堆栈快取存储器及提供资料的方法
US20100131742A1 (en) Out-of-order execution microprocessor that selectively initiates instruction retirement early
CN1570870A (zh) 终极管道和最优重排技术
CN1440528A (zh) 寄存器中堆栈操作数的存储
CN1431584A (zh) 延伸微处理器数据模式的装置及方法
CN1397886A (zh) 假想分支目标地址高速缓存
CN1397874A (zh) 高速缓存的快取线选取目标地址的装置及方法
CN104049944A (zh) 将有条件短前向分支转换成计算等效的所断言指令
CN104025034A (zh) 可配置精减指令集核
CN1016383B (zh) 基于操作数长度和对位的微码转移
CN100343799C (zh) 产生流水线微处理器的早期状态标志的装置及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant