首页> 中国专利> 执行多个快速条件分支指令的方法以及相关的微处理器

执行多个快速条件分支指令的方法以及相关的微处理器

摘要

一种执行多个快速条件分支指令的方法以及相关的微处理器,微处理器包括暂存器,储存快速分支条件状态;提取单元,耦接至暂存器,用以提取程序中的指令,程序包括第一与第二指令,第一指令命令微处理器更新暂存器中的快速分支条件状态,第二指令为快速条件分支指令,用以根据快速分支条件状态指定快速分支条件,提取单元配送并执行第一指令,且禁止配送并执行第二指令;执行单元,用以接收第一指令,并且回应地更新快速分支条件状态;当已经更新快速分支条件状态时,提取单元根据快速分支条件状态非选择性且正确地分析快速条件分支指令,且不论是否已经更新快速分支条件状态,提取单元非选择性地禁止将快速条件分支指令传送至执行单元加以分析。

著录项

  • 公开/公告号CN101876889A

    专利类型发明专利

  • 公开/公告日2010-11-03

    原文格式PDF

  • 申请/专利权人 威盛电子股份有限公司;

    申请/专利号CN200910247051.3

  • 申请日2009-12-25

  • 分类号

  • 代理机构北京林达刘知识产权代理事务所(普通合伙);

  • 代理人刘新宇

  • 地址 中国台湾台北县

  • 入库时间 2023-12-18 01:00:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-04-03

    授权

    授权

  • 2010-12-15

    实质审查的生效 IPC(主分类):G06F9/38 申请日:20091225

    实质审查的生效

  • 2010-11-03

    公开

    公开

说明书

技术领域

本发明有关于微处理器,特别关于在一微处理器中执行条件分支指令(conditional branch instruction)。

背景技术

当没有控制流程指令时,微处理器依序地提取指令并执行该指令。换言之,预设动作就是让微处理器先提取一指令,接着再提取下一个循序指令,然后再提取下一个循序指令,以此类推。然而,控制流程指令会命令微处理器脱离此循序提取制度。微处理器在其指令集结构(instruction set architecture)中包括某种型式的条件分支指令,用以指定一分支条件状态(通常是一条件旗标(condition flag)或是一通用暂存器中的数值)及一分支条件(举例而言,位设定、位清除、等于零或大于一定值)。条件分支指令也指定一分支目标地址(branch target address)。微处理器根据分支条件检查分支条件状态,用以决定分支条件状态是否满足被条件分支指令所指定的分支条件。若分支条件状态满足分支条件,微处理器开始提取分支目标地址上的指令,而不是提取下一个循序指令。

正如众所皆知的微处理器技术,现今的微处理器包括一个具有多个阶段的管线(a pipeline of stages),每一阶段执行有关程序指令的不同工作。在标准的管线式微处理器中,包括指令提取(instruction fetch)、指令解码(instruction decode)、运算元提取(operand fetch)、执行(execute)以及写回结果(resultwrite-back)这五个阶段。一程序中的条件分支指令会大大地增加微处理器执行程序所需的时间。这是因为在传统上,执行阶段(execute stage)用以分析条件分支指令,即决定分支条件状态是否满足分支条件。其中一个原因是因为程序中的指令在程序顺序(program order)中的顺序可能会比条件分支指令还要旧(older),因此,在运算元提取阶段可以提取条件分支指令的来源运算元(source operands)之前,微处理器必须等待直到执行单元产生上述比较旧的指令的结果(这些比较旧的指令的结果为条件分支指令中用以构成(constitute)分支条件状态的来源运算元),以便发出条件分支指令用以执行。然而,特别是在高度管线化(deeply pipelined)及/或乱序执行(out-of-order execution)微处理器中,微处理器可能已经提取以及处理许多程度不同的下一个循序指令(位于条件分支指令之后),并且在执行单元分析条件分支指令时,这些循序指令在程序顺序中的顺序要比条件分支指令还要新(newer)。若执行单元决定分支条件状态满足分支条件(即会发生(taken)条件分支指令),微处理器必须清除(flush)所有位于条件分支指令之后依序提取的指令,并开始提取分支目标地址上的指令。这大大地增加了微处理器执行程序所需的时间。

为了解决此问题,现今的微处理器包括分支预测器(branchpredictors)用以预测方向(direction)(即分支条件状态是否会满足分支条件(称为“发生(taken)”)或不满足分支条件(称为“不发生(not taken)”)。然而,分支预测器可能会误预测(mispredict)方向,在此情况下,因为微处理器必须清除管线中错误提取的指令,并开始提取正确地址上的指令(即根据是否发生正确的方向来决定该正确地址为下一个循序地址或分支目标地址),所以微处理器需要承担一分支误预测代价(branch mispredictionpenalty)。再者,这会大大地增加程序执行时间,特别是在程序中具有一些难以准确预测的条件分支指令的情况下。因此,需要一种能够及早正确地分析管线中的条件分支指令的方法,用以置换(override)分支预测器。举例而言,该方法已揭露于Boseet al.所获得的美国专利第5,805,876号“一种适用于一处理器的方法与系统,用以减少平均分支解析时间及有影响的误预测代价”。然而,Bose et al.所提出的微处理器有一个缺点,就是该微处理器会选择性地提早分析条件分支指令。换言之,该微处理器只在分支指令满足一组特定的条件时,才会提早分析条件分支指令,例如第一个侦测到的条件分支指令设置在一指令缓冲器中的第一可调度位置(dispatchable position)中。

因此,需要一种具有一改良技术的微处理器,用以允许程序条件性地分支。

发明内容

本发明提供一种微处理器,包括一暂存器,用以储存一快速分支条件状态;一提取单元,耦接至暂存器,用以提取一程序中的多个指令,程序包括一第一指令与一第二指令,其中第一指令用以命令微处理器更新暂存器中的快速分支条件状态,其中第二指令为一快速条件分支指令,用以根据暂存器中的快速分支条件状态指定一快速分支条件,其中提取单元配送第一指令以执行第一指令,但禁止配送第二指令并执行第二指令;以及多个执行单元,用以从提取单元中接收第一指令,并且回应地更新暂存器中的快速分支条件状态;其中当执行单元已经更新暂存器中的快速分支条件状态时,提取单元则根据暂存器中的快速分支条件状态非选择性且正确地分析快速条件分支指令,并且不论执行单元是否已经更新暂存器中的快速分支条件状态,提取单元非选择性地禁止将快速条件分支指令传送至执行单元加以分析。

本发明提供一种执行多个快速条件分支指令的方法,应用于一微处理器中,上述方法包括通过微处理器中的一提取单元,提取一程序中的一第一指令,其中第一指令命令微处理器更新一暂存器中的一快速分支条件状态,其中暂存器用以储存一快速分支条件状态;将第一指令从提取单元配送至微处理器中的多个执行单元;通过执行单元,根据从提取单元中所接收的第一指令,更新暂存器中的快速分支条件状态;通过提取单元,提取程序中的一第二指令,其中第二指令为一快速条件分支指令,用以根据暂存器中的快速分支条件状态指定一快速分支条件;禁止配送第二指令并执行第二指令;当执行单元已经更新暂存器中的快速分支条件状态时,通过提取单元根据暂存器中的快速分支条件状态非选择性且正确地分析快速条件分支指令;以及不论执行单元是否已经更新暂存器中的快速分支条件状态,提取单元非选择性地禁止将快速条件分支指令传送至执行单元加以分析。

本发明的其中一个好处是,因为提取单元(或微码单元)可在不需将快速条件分支(fast conditional branch;FCB)指令(在此之后简称为FCB指令)配送至执行管线的情况下,即可分析并引退FCB指令,因此执行FCB指令的速度会比执行传统条件分支指令的速度还要快。此外,当程序设计师使用一FCB指令而不是一传统条件分支指令时,由于提取单元正确地执行FCB指令,因此消除了与传统条件分支指令有关的误预测与校正。另一个好处在于相较于传统条件分支指令,使用微处理器中较少的资源即可分析并引退F CB指令。举例而言,因为FCB指令没有被配送至执行管线中,所以FCB指令不会占用暂存器别名表中的项目(entries)、保留站、执行单元或重新排序缓冲器。

附图说明

图1为本发明的一微处理器的方块图;

图2为本发明的图1中的微处理器的一操作流程图,此流程图用以执行一FBCSUI指令;

图3为本发明的图1中的微处理器的一操作流程图,此流程图用以执行一FCB指令;

图4为本发明的图1中的微处理器的一操作流程图,此流程图用以执行一NCB指令;

图5为本发明的另一微处理器的方块图;

图6为本发明的图5中的微处理器的一操作流程图,此流程图用以执行一FBCSUI指令;

图7为本发明的图5中的微处理器的一操作流程图,此流程图用以执行一FCB指令;

图8为本发明的图5中的微处理器的一操作流程图,此流程图用以执行一NCB指令。

具体实施方式

为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举出较佳实施例,并配合所附图式,作详细说明如下。

关于上述问题,传统方法有一个缺点就是它们依靠微处理器来决定微处理器可以提早分析管线中的一条件分支指令的情况,并且若此情况不存在,则微处理器必须要仰赖预测条件分支指令,若预测错误,微处理器接着要承担与校正(例如清除、从正确的地址中提取以及执行)有关的代价。本发明人已注意到有些时候,写程序的程序设计师(或用以将一高阶语言程序编译/翻译成一机器语言(machine language)程序的编译器/翻译器)知道或可以控制更新分支条件状态的相关情况(circumstance),而此分支条件状态将会被程序中的一条件分支指令所使用。本发明人利用此观察结果将一特殊型式的条件分支指令(在这里称为FCB指令)包括于一微处理器中的指令集内,程序设计师会将FCB指令包括于他的程序中,用以命令微处理器非选择性且正确地提早分析管线中的提取单元内的FCB指令,而不是将FCB指令传送至执行单元中被分析,再对FCB指令进行预测。为了回应侦测到FCB指令,提取单元会非选择性且正确地分析FCB指令。换言之,提取单元会一直正确地分析FCB指令,而不是在某些情况下预测FCB指令并接着将其传送至执行单元中被分析。这需要提取单元进行等待直到最新的状态更新指令已经将分支条件状态更新,并且此最新的状态更新指令在程序顺序中的顺序比FCB指令还要新。若分支条件状态已经更新,则提取单元使用更新过的状态来分析条件分支指令。然而,微处理器的指令集中的FCB指令能够使程序设计师将状态更新指令安排在FCB指令之前,使得提取单元遇到FCB指令时,提取单元能够立即地分析FCB指令。这将会有较大地助益,因为避免了分支误预测的可能性以及管线式微处理器中与此相关的伴随代价(concomitant penalty)。FCB指令的避免误预测的优点在缺少分支预测的情况下更为显著,例如在一低成本及/或低功耗微处理器或微控制器中或在一微处理器的一微码(microcode)单元中的微定序器(microsequencer)中,例如根据本发明的一实施例。

在程序中,FCB指令在一状态更新指令之后输入,状态更新指令用以更新FCB指令所指定的分支条件状态。虽然在执行单元将分支条件状态更新之前,提取单元要等待分析FCB指令,但FCB指令能够使程序设计师将状态更新指令安排在FCB指令之前,使得提取单元遇到FCB指令时,执行单元已经将状态更新,并且提取单元可以立即正确地分析FCB指令。在一实施例中,程序设计师将用以执行等待函数(wait function)的一明确等待指令(explicit wait instruction)包括在程序中的状态更新指令与FCB指令之间,在另一实施例中,提取单元在遇到FCB指令时,暗中地执行等待函数。

请参考图1,图1用以显示本发明的一微处理器100的一方块图。

在一实施例中,微处理器100会将使用者程序储存至一外部存储器(图未显示)中。使用者程序包括操作系统、应用程序、系统基本输入/输出系统(system BIOS)或其他写入/翻译/编译成微处理器的原生(native)指令集的程序。指令快取106会从外部存储器中提取使用者程序指令。指令快取106用以暂时储存最常提取的指令。在一实施例中,指令快取106设置于微处理器100中。在其他实施例中,指令快取106设置于微处理器100的外部。

微处理器100中的提取单元104用以提取来自指令快取106中的指令。提取单元104包括一指令解码器108,用以决定被提取的指令的种类。从指令快取106中提取的指令包括FCB指令以及正规指令,正规指令包括正规条件分支(normal conditionalbranch;NCB)指令(在此之后简称NCB指令)以及快速分支条件状态更新指令(fast branch condition state-updating instructions;在此之后简称FBCSUI指令)。正规指令是由微处理器100中的执行单元所执行的正规指令。当微处理器100决定出条件分支指令的正确的方向与正确的目标地址时,微处理器100则可正确地分析一条件分支指令(即NCB指令或FCB指令)。由于微处理器100可能最后会决定预测错误并且必须要自我校正,因此这与预测一条件分支指令的一微处理器100截然不同。FBCSUI指令用以更新快速分支条件状态(fast branch condition state;在此之后简称FBCS指令)124,相关内容说明如下。

FCB指令在微处理器100的提取单元104中被正确地分析与引退(retired)。微处理器100中的执行单元138用以执行正规指令(包括NCB指令以及FBCSUI指令)。微处理器100中的引退单元144用以引退正规指令(包括NCB指令以及FBCSUI指令)。条件分支指令用以指定一分支条件与一分支目标地址。处理器用以检查所储存的分支条件状态,以便决定该分支条件状态是否满足一被条件分支指令所指定的分支条件,即决定条件分支指令的方向。若分支条件状态满足该分支条件,则分支方向为“发生”;反之分支方向为“不发生”。若发生分支,分支目标地址则用以指定下一个欲执行的指令的地址。若没有发生分支,下一个欲执行的指令为位于NCB指令或FCB指令之后的下一个循序指令。关于FCB指令、NCB指令以及FBCSUI指令的处理过程,将在以下段落作更详细的说明。

在一实施例中,指令解码器108包括一指令翻译器,用以将微处理器100的一宏指令集(macroinstruction set)中的宏指令(例如x86指令集结构)翻译成微处理器100的一微指令集结构(microinstruction set architecture)中的微指令。指令翻译器可将宏指令翻译成一FCB指令、NCB指令、FBCSUI指令或其他这里所描述的指令。

指令解码器108决定所提取的指令是否为FCB指令、NCB指令、FBCSUI指令或其他指令。若所解码的指令为NCB指令或其他正规指令,则指令解码器108将正规指令146传送至多工器132。若被解码的指令为FCB指令,则指令解码器108在一FCB指令的查见指示(FCB指令seen indication)164上产生一真值(true value),并传送至位于提取单元104中的F CB指令的方向分析器122。此外,指令解码器108将FCB指令所指定的FCB指令的条件166,传送至FCB指令的方向分析器122。举例而言,FCB指令的条件166包括位开启(bit on)、位关闭(bit off)、等于、小于、大于,并且本领域技术人员应能了解,欲被估算的FBCS 124中的位或栏位也被指定在FCB指令的条件166中。指令解码器108也将FCB指令所指定的FCB指令的目标地址162,传送至位于提取单元104中的多工器114。

FCB指令的方向分析器122用以分析提取单元104中的FCB指令的方向。FCB指令的方向分析器122根据FCB指令的查见指示164、FCB指令的条件166以及FBCS 124,产生FCB指令的方向172至提取地址控制器126。若FBCS 124满足FCB指令的条件166,那么FCB指令的方向172为真值;反之FCB指令的方向172为假值。提取单元104一直正确地分析并引退FCB指令。因为提取单元104本身就会执行并引退所有的FCB指令,所以提取单元104不会将FCB指令配送(dispatch)至执行单元138与引退单元144中。

若被解码的指令为FBCSUI指令,则指令解码器108在FBCSUI指令的侦测指针160上产生一真值,该FBCSUI指令的侦测指针160用以设定一FBCSUI指令的搁置旗标(FBCSUI_pending flag)192。微处理器100将FBCSUI指令的搁置旗标192初始化至一清除状态。此外,当引退单元144通过使用FBCSUI指令的结果186将FBCS 124更新,用以引退FBCSUI指令时,引退单元144在FBCSUI指令的分析指针182上产生一真值,而该FBCSUI指令的分析指针182用以清除FBCSUI指令的搁置旗标192。再者,若微处理器100清除FBCSUI指令(例如因为误预测的NCB指令),则微处理器100清除FBCSUI指令的搁置旗标192。FBCSUI指令的搁置旗标192供应至提取地址控制器126,提取地址控制器126使用FBCSUI指令的搁置旗标192,用以决定是否要停止提取来自指令快取106中的指令188,如以下所述。FBCSUI指令的结果186与FBCSUI指令的分析指针182亦会被供应至微码单元128。

通过使用FCB指令而不是NCB指令,程序设计师暗示微处理器100,FBCS 124(或至少一部分被FCB指令指定为分支条件状态的FBCS 124)即将会被更新,若尚未准备就绪,则使用FBCSUI指令,而该FBCSUI指令在程序顺序中的顺序要比FCB指令还要旧。被FBCSUI指令所更新的FBCS 124,可能为微处理器100中许多不同的分支条件状态中的一个。举例而言,FBCSUI指令会将状态从微处理器100中的其他部分转移至FBCS 124,例如结构状态,像是条件程序码暂存器(举例而言,x86EFLAGS暂存器)或通用暂存器。此外,虽然图1的实施例显示FBCS 124位于提取单元104中,但在其他实施例中,FBCS 124包括处理器的结构状态,例如条件程序码暂存器或通用暂存器。

提取单元104也包括一分支预测器118。分支预测器118根据提取单元104中的指令指位器112,产生一预测目标地址156至多工器114以及产生一预测方向158至提取地址控制器126,其中该提取单元104中的指令指位器112用以产生一提取地址168至指令快取106。特别是,分支预测器118用以指示提取地址控制器126,若提取地址168指定一条事先包括有条件分支指令的快取线(cache line),则预测目标地址156与预测方向158为有效的。在一实施例中,分支预测器118用以预测正规条件分支指令,其中管线式微处理器在正确地分析正规条件分支指令之后,用以将一分支预测信息储存至分支预测器118中,并且管线式微处理器在正确地分析快速条件分支指令之后,则不将上述分支预测信息储存至分支预测器118中,上述分支预测信息包含预测目标地址156以及预测方向158。在以下所述的一实施例中,提取单元104会禁止对FCB指令进行分支预测。

提取单元104中的提取地址控制器126产生一多工器选择信号152至多工器114用以选择提取地址168,提取地址168用以从指令快取106中提取下一个指令。提取地址控制器126根据一NCB指令的误预测指示178,产生多工器选择信号152用以选择NCB指令的正确目标地址(NCB correct target address)176。或者,提取地址控制器126根据一FCB指令的方向172(用以指示发生FCB指令),产生多工器选择信号152用以选择FCB指令的目标地址162。或者,提取地址控制器126根据一预测方向158(用以指示发生NCB指令),产生多工器选择信号152用以选择预测目标地址156。或者,提取地址控制器126产生多工器选择信号152用以选择下一个指令指位器地址(next sequential IP address,NSIP)154。下一个指令指位器地址154为指令快取106中位于提取地址168之后的下一个循序地址。每当指令指位器112产生一提取地址168,一地址递增电路116产生下一个指令指位器地址154。

在一实施例中,分支预测器118包括一分支目标快取(图未显示)。当提取地址168击中(hits in)分支目标快取时,分支预测器118则会产生预测目标地址156与发送至提取地址控制器126的预测方向158。微处理器100使用地址与事先执行的条件分支指令的分析目标地址,用以更新分支目标快取。此外,微处理器100根据先前执行的条件分支指令的分析方向,使用分支预测信息用以更新分支目标快取。在一实施例中,由于提取单元104正确地分析并引退FCB指令,所以微处理器100不会根据执行的FCB指令来更新分支目标快取。通过一直正确地分析提取单元104中的FCB指令,微处理器100有利地避免承担一与FCB指令处理有关的分支误预测代价。然而,以下将描述微处理器100可能要承担与NCB指令处理有关的分支误预测代价。

指令指位器112用以接收并储存提取单元104的多工器114所选择的地址。指令指位器112用以提供提取地址168至指令快取106,以便提取来自指令快取106中的一快取线。

位于提取单元104外部的多工器132,从两个来源接收指令并在这两个来源之间做出选择。第一个来源为从指令快取106中提取并由提取单元104所提供的正规指令146。第二个来源为微处理器100中的一微码单元128所提供的正规指令148。微码单元128包括微码程序(microcode routines),举例而言,微码程序用以执行复杂指令并处理某些异常条件(exception conditions)。实施例中可考虑不将微码单元128包括在微处理器100中。

微处理器100包括一暂存器别名表(register alias table;RAT)134,用以决定正规指令146或148的运算元相依性(operanddependencies)。分析出运算元相依性之后,暂存器别名表134将正规指令146或148传送至微处理器100中的一指令排程器(instruction scheduler)136。在一实施例中,上述暂存器别名表134为一相依性检查单元。在一实施例中,微处理器100也包括一重新排序缓冲器(re-order buffer;ROB),该重新排序缓冲器包括在引退单元144内,用以储存微处理器100中各个未引退(unretired)指令的状态信息。即使正规指令(146、148)在程序顺序外执行,重新排序缓冲器也能确保正规指令(146、148)在程序顺序中被引退。在将指令配送至一保留站(reservation station)之前(以下会说明),暂存器别名表134会在重新排序缓冲器中配置一项目(entry)给各个指令。指令排程器136用以将正规指令146或148安排至执行单元138加以执行。在一实施例中,微处理器100包括保留站(图未显示),保留站为指令队列(instructionqueues),用以储存正在等待其运算元的指令,所以可通过指令排程器136,将这些正在等待其运算元的指令传送至执行单元138(乱序执行微处理器)。在一实施例中,微处理器100会执行乱序指令,而指令排程器136使用暂存器别名表134所产生的相依性信息,用以安排适当的指令执行。

在一实施例中,一发送逻辑单元(例如指令排程器136)耦接于提取单元104与执行单元138之间,用以从提取单元104中接收不同于上述快速条件分支指令的多个指令并且发送至执行单元138加以执行,上述发送逻辑单元还在分析出上述指令的多个相依性之前,等待用以将不同于上述快速条件分支指令的各个上述指令发送至执行单元138,其中提取单元104非选择性地禁止将上述快速条件分支指令传送至上述发送逻辑单元。

在一实施例中,一发送逻辑单元(例如指令排程器136)耦接至执行单元138,用以将不同于上述快速条件分支指令的多个指令,发送至执行单元138加以执行,其中上述发送逻辑单元在每一个时脉周期中包括一预定最大数量的多个发送槽,用以将不同于上述快速条件分支指令的上述指令发送至执行单元138。由于提取单元104非选择性且正确地分析上述快速条件分支指令,所以微处理器不需要在每一个上述时脉周期中消耗上述发送槽的任何一个。

在一实施例中,一列表(例如暂存器别名表134)耦接至执行单元138,用以储存不同于上述快速条件分支指令的多个指令所相关的多个运算元相依性信息,以便确保上述指令的正确执行顺序,其中上述指令发送至执行单元138。由于提取单元104非选择性且正确地分析上述快速条件分支指令,所以上述微处理器禁止将任何关于上述快速条件分支指令的上述运算元相依性信息,储存至上述列表中。

在一实施例中,一个或更多个指令队列(例如指令排程器136中的指令队列)耦接至执行单元138,用以储存不同于上述快速条件分支指令的多个指令,其中上述指令等待被发送至执行单元138用以执行。由于提取单元104非选择性且正确地分析上述快速条件分支指令,所以微处理器禁止将上述快速条件分支指令储存至上述指令队列中。

在一实施例中,一相依性检查单元用以根据程序中的其他指令,决定正规条件分支指令的多个相依性,其中管线式微处理器用以在上述相依性检查单元根据上述程序中的其他指令决定上述正规条件分支指令的多个正规分支条件状态相依性之后,正确地分析上述正规条件分支指令。上述管线式微处理器正确地分析快速条件分支指令,而不需要将上述快速条件分支指令配送至上述相依性检查单元,借此上述管线式微处理器处理上述快速条件分支指令所花费的时脉周期小于处理上述正规条件分支指令所花费的时脉周期。

NCB指令用以根据正规分支条件状态(normal branchcondition state;在此之后简称为NBCS)142指定一分支条件。NBCS 142可使用在NCB指令之前所提取的正规指令的结果来进行更新。因此,指令排程器136等待将NCB指令传送至执行单元138,直到比较旧的指令(即用以更新NBCS 142的指令)已经产生其结果并使执行单元138可以利用此结果。NBCS 142可包括微处理器100中的结构上可见的暂存器(architecturally visibleregisters),举例而言,例如通用暂存器及/或条件程序码暂存器,或x86EFLAGS暂存器。

在一实施例中,快速条件分支指令命令管线式微处理器正确地分析快速条件分支指令,而不需要考虑程序中比快速条件分支指令还要旧的其他指令是否更新快速条件分支指令所使用的一快速分支条件;正规条件分支指令通过考虑上述程序中比正规条件分支指令还要旧的其他指令是否更新上述正规条件分支指令所使用的一正规分支条件,命令管线式微处理器正确地分析正规条件分支指令。

微处理器100中的执行单元138执行所有的正规指令146与148,包括NCB指令。执行单元138通过使用NBCS 142来执行NCB指令。若NBCS 142满足NCB指令中所指定的分支条件,则发生分支并且使用NCB指令所指定的分支目标地址来提取指令。若NBCS 142不满足NCB指令中所指定的分支条件,则不发生分支,并且提取单元104从位于指令快取106中的NCB指令的地址之后的下一个循序地址中提取指令,亦或是微码单元128从位于图5中的微码单元128中的微码只读存储器506的地址之后的下一个循序地址中提取指令。

执行单元138将所有执行的正规指令(包括NCB指令)的结果传送至引退单元144。引退单元144持续追踪被传送至执行单元138中的指令以及其执行状态、将执行的指令的结果写回,并且引退程序顺序中的指令。特别是,引退单元144写入一指令结果174,该指令用以更新NBCS 142。在用以更新NBCS 142的指令已经将指令结果174写入至NBCS 142之后,引退单元144会引退NCB指令。引退单元144会产生一NCB指令的误预测指示178至提取单元104中的提取地址控制器126中,用以指示分支预测器118是否误预测NCB指令。

若NCB指令是误预测,则微处理器100会清除管线中所有在程序顺序中的顺序比NCB指令还要新的指令;引退单元144引退NCB指令;提取地址控制器126会产生多工器选择信号152用以选择由引退单元144所提供的NCB指令的正确目标地址176,NCB指令的正确目标地址176事先被执行单元138分析并被多工器114选择用以载入至指令指位器112;而提取单元104则从指令快取106中提取指令指位器112所产生的提取地址168上的指令。因此,微处理器100可能要承担一与NCB指令处理有关的分支误预测代价,但是与FCB指令无关。

下表1描述了一程序中的程序码片段(code snippet),包括了一FCB指令与FBCSUI指令,这将有助于说明图1中的微处理器100的运作。

表1

  (1)  FBCSUI指令  (2)  指令1(instr1)  (3)  指令2(instr2)

  (1)  FBCSUI指令  (4)  ...(其他指令)  (5)  指令N(instrN)  (6)  FCB指令

表1中的程序的指令按照程序顺序编号。程序片段中的第一行包括一FBCSUI指令。程序片段中的最后一行包括一FCB指令。第二行到第五行包括其他指令(标记为指令1、指令2、...、指令N)。亦即,FCB指令并非紧接在FBCSUI指令之后。程序设计师试图在FBCSUI指令与FCB指令之间包括一些指令,使得提取单元104只在引退单元144已将FBCS 124更新、清除FBCSUI指令的搁置旗标192时提取FCB指令。在一实施例中,介于中间的指令(intervening instructions)的数量近似于提取单元104与引退单元144之间的管线阶段数量。在一实施例中,提取单元104与引退单元144之间的管线阶段数量大约为10。因此,在程序设计师适当地将FCB指令安排在FBCSUI指令之后的情况下,提取单元104可能会在NCB指令被执行单元138执行以及被引退单元144引退的好几个时脉周期之前,就能非选择性且正确地执行并引退FCB指令。此外,在分支预测器118误预测一NCB指令的情况下,由于程序设计师在程序中所使用为一适当安排的FCB指令(而不是误预测的NCB指令),故可节省大量的时脉周期。

请参考图2,图2显示本发明的图1中的微处理器100的一操作流程图。此流程图用以执行一FBCSUI指令。流程从步骤202开始。

在步骤202中,提取单元104会从指令快取106中提取一指令,将该指令解码,并决定该指令为一FBCSUI指令,例如表1中的第一行中的FBCSUI指令。流程前进至步骤204。

在步骤204中,提取单元104会设置(asserts)FBCSUI指令的侦测指针160,该FBCSUI指令的侦测指针160用以设定FBCSUI指令的搁置旗标192。流程前进至步骤206。

在步骤206中,提取单元104会将FBCSUI指令配送至执行管线(即配送至多工器132、暂存器别名表134、指令排程器136、执行单元138以及引退单元144)加以执行。流程前进至步骤208。

在步骤208中,执行单元138会执行FBCSUI指令,而引退单元144引退FBCSUI指令。换言之,引退单元144将FBCSUI指令的结果186写入至FBCS 124,并且设置FBCSUI指令的分析指针182,用以清除FBCSUI指令的搁置旗标192。值得注意的是,在提取单元104根据介于中间的指令(例如上述表1中的第二到第五行中的指令)的数量与混合以及微处理器100管线的组态与状态,将表1中的第六行中的FCB指令提取并解码(如以下图3中的步骤302所述)之前,步骤208中的动作可能会或不会发生。流程结束于步骤208。

请参考图3,图3为显示本发明的图1中的微处理器100的一操作流程图。此流程图用以执行一FCB指令。流程从步骤302开始。

在步骤302中,提取单元104会从指令快取106中提取一指令,将该指令解码,并决定该指令为一FCB指令,例如表1中的第六行中的FCB指令。流程前进至步骤304。

在步骤304中,提取单元104会根据用以解码一FCB指令的指令解码器108,通过分支预测器118来禁止分支预测。流程前进至决定步骤306。

在决定步骤306中,提取地址控制器126会检查FBCSUI指令的搁置旗标192,并决定FBCSUI指令是否为搁置状态。若FBCSUI指令为搁置状态,则流程前进至步骤308;反之,流程前进至步骤312。

在步骤308中,提取地址控制器126会停止从指令快取106中提取指令,直到FBCSUI指令被分析。因此,流程回到决定步骤306。

在步骤312中,提取单元104中的指令解码器108会分析FCB指令的目标地址162,FCB指令的方向分析器122根据FCB指令的条件166与FBCS 124,用以分析FCB指令的方向172,并且若发生FCB指令的方向172,则提取地址控制器126控制多工器114选择FCB指令的目标地址162用以载入至指令指位器112;若未发生FCB指令的方向172,则提取地址控制器126控制多工器114选择下一个指令指位器地址154,用以载入至指令指位器112。流程前进至步骤314。

在步骤314中,提取地址控制器126会重新开始从指令快取106中提取位于提取地址168上的指令,其中该提取地址168由指令指位器112所提供。流程前进至步骤316。

在步骤316中,提取单元104会引退FCB指令。特别是,由于提取单元104一直非选择性地且正确地分析FCB指令,所以提取单元104不会将FCB指令配送至执行管线加以执行与引退。流程结束于步骤316。

请参考图4,图4显示本发明的图1中的微处理器100的一操作流程图。此流程图用以执行一NCB指令。图4用以说明微处理器100在执行FCB指令与NCB指令的操作的不同之处以及微处理器100的指令集结构中具有FCB指令、NCB指令的好处。流程从步骤402开始。

在步骤402中,提取单元104会从指令快取106中提取一指令,将该指令解码,并决定该指令为一NCB指令,并将该指令配送至执行管线中。再者,提取单元104会根据分支预测器118所产生的NCB指令的预测,用以继续提取指令。流程前进至步骤404。

在步骤404中,执行单元138会分析NCB指令,并且决定该NCB指令是否正确地被分支预测器118预测;换言之,执行单元138会比较预测方向158与执行单元138所决定的正确的方向是否一致,并且比较预测目标地址156与执行单元138所产生的正确的目标地址是否一致。若两者一致,引退单元144则会引退NCB指令。若两者不一致,引退单元144则会清除微处理器100管线,并致使提取单元104开始从指令快取106中提取位于NCB指令的正确目标地址176上的指令。流程结束于步骤404。

如上所述,提取单元104会分析并引退FCB指令,而不需将FCB指令配送至执行管线中。这将是有助益的,因为,如上所述,当程序设计师使用一FCB指令而不是一传统条件分支指令时,由于消除了与传统条件分支指令有关的误预测与校正,因此可能具有更快的总执行时间。另一个好处就是,与传统条件分支指令相比,使用微处理器100中较少的资源即可分析并引退FCB指令。举例而言,因为FCB指令没有被配送至执行管线中,所以FCB指令不会占用暂存器别名表134中的项目、保留站、执行单元138或重新排序缓冲器。

请参考图5,图5为显示根据本发明的另一实施例的一微处理器100的一方块图。图5在许多地方与图1相似。然而,图5中并未显示提取单元104的细节,但显示了微码单元128的细节。图5中的微码单元128包括了许多与图1中的提取单元104类似的元件,并且其中相同号码的元件执行类似的功能。

其中一个不同点在于,微码单元128会从一微码只读存储器506中提取指令188,而不是从图1中的指令快取106中提取指令188。微码只读存储器506用以储存微码程序指令,以便处理使用者程序的指令,其中该微码程序指令用以执行微处理器100所需的动作。因此从这个角度来看,储存在微码只读存储器506中的微码程序为非使用者程序(non-user programs),因为这些微码程序不属于使用者程序本身的一部分。换言之,微处理器100的设计者开发(develop)储存在微码只读存储器506中的微码程序,而不是微处理器100的使用者程序,其中使用者程序储存在计算机系统中的系统存储器及/或一非易失性储存介质,例如一磁盘机。

微码程序所执行的其中一个动作为异常处理(exceptionhandling)。微码只读存储器506包括异常处理器,用以处理使用者程序指令产生的异常以及微处理器100所提取的微异常(micro-exceptions),而不是处理微处理器100的宏结构所定义的异常,其中上述微异常为微处理器100的微结构所特有的。举例而言,上述使用者程序指令所产生的异常包括无效运算码异常(invalid opcode exceptions)、除以零异常(divide by zeroexceptions)、中断(interrupts)、分页错误(page faults)。另一个例子,微码程序包括用以执行微处理器100指令集中复杂且不常执行的指令的程序码,例如三角函数指令(trigonometricfunction instructions)、读/写特别模块暂存器指令(read/writemodel specific registers instructions)以及串列化指令(例如由《IA-32结构软件开发者手册,第3A册:系统程序设计导引,第1篇,2006年6月》中的第7.4节中的x86结构所定义的串列化指令,该参考文献全文以引用的方式并入本文中)。串列化指令可更新一控制值,而此控制值是使微处理器100进入一新的模式或状态,例如改变分页模式、使微处理器100进入一保护模式、更新描述符表(descriptor tables)或使快取线无效,上述例子仅作为举例说明。因此,微码单元128为微处理器100中的第二个提取单元,用以从微码只读存储器506中提取微码程序指令,将这些微码程序指令解码,而对于FCB指令而言,微码单元128也是一直正确地分析并引退该FCB指令。

在一实施例中,快速条件分支指令仅包括在管线式微处理器的多个微码程序中,而不包括在被上述管线式微处理器所处理的多个使用者程序中。其中上述微码程序包括用以执行多个使用者程序指令的多个程序。其中上述微码程序包括多个异常处理器用以处理多个异常,并且上述异常由上述管线式微处理器所处理的上述使用者程序所产生。

在一实施例中,管线式微处理器通过更新与使用者程序有关的上述管线式微处理器中的一第一指令指位器,用以正确地分析正规条件分支指令,其中上述管线式微处理器通过更新与多个微码程序有关的上述管线式微处理器中的一第二指令指位器,用以正确地分析快速条件分支指令。

另一个不同点在于,微码单元128不包括图1中的分支预测器118。因此,在一般流程中(例如缺少FCB指令、误预测NCB指令的校正、异常、诱使微码(trap to microcode)执行一使用者指令等等),微码单元128会一直“预测”不会发生一条件分支指令,例如微码单元128提取下一个指令指位器地址154上的指令,而不是由图1中的分支预测器118所提供在一预测目标地址156上的指令。然而,实施例中可考虑将一个也许更小、更简易以及更省电的分支预测器118(具有与图1中的分支预测器118类似的功能),包括在微码单元128中。

然而,如同图1中的提取单元104,图5中的微码单元128用以提取并且非选择性地且正确地分析并引退FCB指令,以下将配合图6至图8作进一步的说明。值得注意的是,在一实施例中,提取单元104与微码单元128皆用以提取并且非选择性地且正确地分析并引退FCB指令;而在其他实施例中,只有提取单元104与微码单元128中之一用以提取并且非选择性地且正确地分析并引退FCB指令。

图6至图8的流程图中的许多执行步骤,与图2至图4的流程图中的执行步骤类似。然而,图2至图4中的提取单元104中的元件所执行的步骤,由图6至图8中的微码单元128中的对应的元件所执行。此外,如上所述,在一实施例中,微码单元128不会执行分支预测;因此,图7与图8中不包括与分支预测有关的步骤。

请参考图6,图6为显示本发明的图5中的微处理器100的一操作流程图。此流程图用以执行一FBCSUI指令。流程从步骤602开始。

在步骤602中,微码单元128会从微码只读存储器506中提取一指令,将该指令解码,并决定该指令为一FBCSUI指令,例如表1中的第一行中的FBCSUI指令。流程前进至步骤604。

在步骤604中,微码单元128会设置FBCSUI指令的侦测指针160,该FBCSUI指令的侦测指针160用以设定FBCSUI指令的搁置旗标192。流程前进至步骤606。

在步骤606中,微码单元128会将FBCSUI指令配送至执行管线(即配送至多工器132、暂存器别名表134、指令排程器136、执行单元138以及引退单元144)加以执行。流程前进至步骤608。

在步骤608中,执行单元138会执行FBCSUI指令,而引退单元144会引退FBCSUI指令。换言之,引退单元144将FBCSUI指令的结果186写入至FBCS 124,并且设置FBCSUI指令的分析指针182,用以清除FBCSUI指令的搁置旗标192。值得注意的是,在微码单元128根据介于中间的指令(例如表1中的第二到第五行中的指令)的数量与混合以及微处理器100管线的组态与状态,将表1中的第六行中的FCB指令提取并解码(如以下图7中的步骤702所述)之前,步骤608中的动作可能会或不会发生。流程结束于步骤608。

请参考图7,图7为显示本发明的图5中的微处理器100的一操作流程图。此流程图用以执行一FCB指令。流程从步骤702开始。

在步骤702中,微码单元128会从微码只读存储器506中提取一指令,将该指令解码,并决定该指令为FCB指令,例如表1中的第六行中的FCB指令。流程前进至决定步骤706。

在决定步骤706中,提取地址控制器126会检查FBCSUI指令的搁置旗标192,并决定FBCSUI指令是否为搁置状态。若FBCSUI指令为搁置状态,则流程前进至步骤708;反之,流程前进至步骤712。

在步骤708中,提取地址控制器126会停止从微码只读存储器506中提取指令,直到FBCSUI指令被分析。因此,流程回到决定步骤706。

在步骤712中,微码单元128中的指令解码器108会分析FCB指令的目标地址162,而FCB指令的方向分析器122则会根据FCB指令的条件166与FBCS 124,用以分析FCB指令的方向172。若发生FCB指令的方向172,则提取地址控制器126控制多工器114选择FCB指令的目标地址162用以载入至指令指位器112;若未发生FCB指令的方向172,则提取地址控制器126控制多工器114选择下一个指令指位器地址154,用以载入至指令指位器112。流程前进至步骤714。

在步骤714中,提取地址控制器126会重新开始从微码只读存储器506中提取位于指令指位器112所提供的提取地址168上的指令。流程前进至步骤716。

在步骤716中,微码单元128会引退FCB指令。特别是,由于微码单元128一直非选择性地且正确地分析FCB指令,所以微码单元128不会将FCB指令配送至执行管线被执行与引退。流程结束于步骤716。

请参考图8,图8为显示本发明的图5中的微处理器100的一操作流程图。此流程图用以执行一NCB指令。图8用以说明微处理器100在执行FCB指令与NCB指令的操作的不同之处以及微处理器100的指令集结构中具有FCB指令、NCB指令的好处。流程从步骤802开始。

在步骤802中,微码单元128会从微码只读存储器506中提取一指令,将该指令解码,并决定该指令为一NCB指令,再将该指令配送至执行管线中。再者,微码单元128会继续提取位于下一个指令指位器地址154上的指令。流程前进至步骤804。

在步骤804中,执行单元138会分析NCB指令,并且决定是否未发生该NCB指令的正确方向。若未发生该NCB指令的正确方向,引退单元144则会引退NCB指令。若发生该NCB指令的正确方向,引退单元144则会清除微处理器100管线,并致使微码单元128开始从微码只读存储器506中提取位于NCB指令的正确目标地址176上的指令,用以校正步骤802中的微码单元128所提取的循序指令。流程结束于步骤804。

虽然在本发明的实施例中,FCB指令包括用以使提取单元104或微码单元128等待直到FBCSUI指令的搁置旗标192清除之后再分析FCB指令的隐含等待语意(implicit wait semantic),但在其他实施例中,程序设计师可在状态更新指令与FCB指令之间,包括一执行等待函数的外显等待指令(explicit waitinstruction)。因此,在表1的程序码片段中,外显等待指令可设置于第五行中的指令与第六行中的指令之间。当指令解码器108解码等待指令时,指令解码器108执行类似于图3的步骤306与308(或图7的步骤706与708)中所描述的动作。因此,在此实施例中,当指令解码器108解码FCB指令时,流程直接从图3中的步骤304跳至步骤312(或从图7中的步骤702跳至步骤712)。

虽然本文描述了本发明的许多实施例,但大家应能了解这些实施例仅作为举例说明,并非用以限定本发明。任何计算机领域的技术人员,在不脱离本发明的精神和范围内,应当可作些许更动与润饰。举例而言,软件可以致能函数(function)、制造(fabrication)、模块(modeling)、模拟(simulation)以及本文所描述的装置与方法的描述及/或测试。此目的可通过使用一般程序语言(例如C、C++)、硬件描述语言(包括Verilog或VHDL硬件描述语言等等)或其他可用的程序来实现。该软件可被设置在任何计算机可用的介质,例如半导体、磁盘、光盘(例如CD-ROM、DVD-ROM等)中。本文所描述的装置与方法的实施例,可被包括于一半导体知识产权核(semiconductor intellectual propertycore),例如一微处理器核心(实现于硬件描述语言)中,并被转换成硬件以便实现集成电路生产。此外,本文所描述的装置与方法可以结合硬件与软件的方式实现。因此,本发明不应该被本文中的任一实施例所限定,而是只应该根据所附的权利要求书的保护范围及其同等物来定义本发明。特别是本发明实现于一微处理器装置中,该微处理器装置可被使用在一通用计算机中。最后,本领域技术人员在不脱离本发明的精神和范围内,应当可作些许更动与润饰,因此本发明的保护范围当视所附的权利要求书所界定的范围为准。

附图中符号的简单说明如下:

100:微处理器

104:提取单元                    106:指令快取

108:指令解码器                  112:指令指位器

114、132:多工器                 116:地址递增电路

118:分支预测器                  122:方向分析器

124:快速分支条件状态(FBCS)

126:提取地址控制器              128:微码单元

134:暂存器别名表                136:指令排程器

138:执行单元

142:正规分支条件状态(NBCS)

144:引退单元                    146、148:正规指令

152:多工器选择信号

154:下一个指令指位器地址

156:预测目标地址                158:预测方向

160:侦测指针                    162:目标地址

164:查见指示                    166:条件

168:提取地址                    172:方向

174:指令结果                    176:正确目标地址

178:误预测指示                  182:分析指针

186:结果                        188:指令

192:搁置旗标                    506:微码只读存储器。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号