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

文档序号:6513843阅读:135来源:国知局
专利名称:产生早期指令结果的管线式微处理器、装置以及方法
技术领域
本发明一般涉及一种管线式微处理器,特别是涉及一种早期指令执行。
背景技术
管线式微处理器已是现今微处理器的主流,其使得对应于微处理器中不同区块或是不同管线阶段的多个指令可以在同一时间内执行。Hennessy以及Patterson等人定义管线为“让多个指令通过重迭而执行的一种实现技术”(Computer ArchitectureA 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微处理器102I阶段104F阶段106X阶段108R阶段112A阶段114J阶段116D阶段118G阶段122H阶段124E阶段126S阶段128W阶段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))以及转型成硬件作为整体电路制造的一部分。此外,本发明可以具体化为一硬件和计算机代码的组合。
最后,本领域技术人员应了解可以直接利用本发明揭露的观念以及特殊的实施例作为设计或修改其它结构以实现相同于本发明目的的基础,任何未脱离本发明的精神与范围,均由权利要求来定义。
权利要求
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.一种计算机数据信号,其包含于一传输介质中,该计算机数据信号包含一计算机可读取程序代码,其提供给具有一结构化寄存器文件以及至少一最终执行单元的一管线式微处理器,寄存器文件用于产生指令的复数个最终结果,该计算机可读程序代码包含一第一程序代码,其提供对应于管线中较该最终执行单元所对应阶段早的位置的一地址阶段,其包含一早期执行单元,藉以在该最终执行单元产生指令的该最终结果前产生指令的复数个早期结果;以及一第二程序代码,其提供一早期寄存器文件,该早期寄存器文件与该早期执行单元连接,且对应该结构化寄存器文件,用于储存该早期结果以及提供该早期结果给该早期执行单元以产生后续复数个指令的早期结果,其中该结构化寄存器文件只以该最终结果而非该早期结果作更新。
全文摘要
一种在一管线式微处理器中产生早期指令结果的装置以及方法,此装置包括早期执行逻辑电路,其包含一地址产生器被修改以进行指令指定的运算而非产生地址所需的算术运算,早期执行逻辑电路对应于微处理器管线中的一地址产生阶段,由于指令到达地址阶段早于到达对应于下管线且用于产生最终执行结果的最终执行单元,因此早期执行逻辑电路能提早产生指令结果,最终结果是用于更新微处理器的结构化寄存器文件,早期执行逻辑电路是只执行微处理器指令集的一指令子集,在一实施例中,早期执行逻辑电路/地址产生器增强以经常地执行进行快速的指令,早期执行逻辑电路进行加、减、乘、除、移位以及布尔运算,如果早期指令不在早期执行逻辑电路所执行的指令子集里,则早期结果是无效的。
文档编号G06F9/30GK1629801SQ20051000514
公开日2005年6月22日 申请日期2005年1月28日 优先权日2004年2月4日
发明者吉拉德·M·卡尔 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1