选择性地控制条件码回写的装置及方法转让专利

申请号 : CN02150562.4

文献号 : CN100590591C

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : G·葛兰·亨利罗德·E·胡克泰瑞·派克斯

申请人 : 智慧第一公司

摘要 :

本发明涉及一种用于选择性控制条件码回写的微处理器装置及方法。该微处理器装置具有一转译逻辑电路与一延伸执行逻辑电路。该转译逻辑电路将一延伸指令转译为对应的微指令。该延伸指令包括一延伸前置码与一延伸前置码标志。该延伸前置码禁止对应于一指定运算结果的条件码的回写。该延伸前置码标志则指出该延伸前置码是一微处理器指令集内另一依据结构所指定的操作码。该延伸执行逻辑电路耦接至转译逻辑电路,用以接收该对应的微指令,产生该结果,并禁止该条件码的回写。

权利要求 :

1.一种用以选择性地控制数个条件码回写的微处理器装置,包括:一转译逻辑电路,用以将一延伸指令转译成对应的微指令,其中该延伸 指令包括:一延伸前置码,用以将这些条件码的回写禁止,这些条件码对应于一指 定运算的结果;以及一延伸前置码标志,用以指出该延伸前置码,其中该延伸前置码标志为 一微处理器指令集内另一依据结构所指定的操作码;以及一延伸执行逻辑电路,耦接至该转译逻辑电路,用以接收该对应的微指 令,产生该结果,并禁止这些条件码的回写。

2.如权利要求1所述的微处理器装置,其中该延伸指令还包括该指令集 根据结构所指定的数个指令项目。

3.如权利要求2所述的微处理器装置,其中这些根据结构所指定的指令 项目包括一操作码项目,用以指定该指定运算。

4.如权利要求1所述的微处理器装置,其中该对应的微指令包括一微操 作码字段与一微操作码延伸项字段。

5.如权利要求4所述的微处理器装置,其中该延伸执行逻辑电路使用该 微操作码延伸项字段,以决定要将回写禁止的这些条件码,且其中该延伸执 行逻辑电路使用该微操作码字段以决定所要执行的该指定运算,以产生该结 果。

6.如权利要求5所述的微处理器装置,其中该延伸执行逻辑电路包括:一条件码回写控制器,配置为随着数个运算结果的产生,更新一条件码 寄存器,并配置为随着该结果的产生,排除这些条件码的回写。

7.如权利要求1所述的微处理器装置,其中该转译逻辑电路包括:一逸出指令检测逻辑电路,用于检测该延伸前置码标志;以及一延伸前置码译码逻辑电路,耦接至该逸出指令检测逻辑电路,用以转 译该延伸前置码,并对该对应微指令内的一微操作码延伸项字段进行配置, 该微操作码延伸项字段则指定要将回写禁止的这些条件码。

8.如权利要求7所述的微处理器装置,其中该转译逻辑电路还包括:一指令译码逻辑电路,用以配置该对应微指令内的其它字段,该其它字 段依据该指令集指定该指定运算。

9.一种为一既有微处理器指令集增添条件标志的回写控制特征的延伸装 置,包括:一提供延伸指令的延伸指令器,配置为指示一微处理器去阻止数个条件 标志的一子集合的回写,这些条件标志反映出一结果的边界条件,该结果对 应于一指定运算的执行,其中该延伸指令包括该既有微处理器指令集其中一 选取的操作码,其后则接着一n位的延伸控制前置码,该选取的操作码指出 该延伸指令,而该n位的延伸控制前置码则指出该子集合,其中n为正整数; 以及一转译器,配置为接收该延伸指令,产生一微指令序列,以指示该微处 理器执行该指定运算,并指示一回写控制逻辑电路于产生该结果后,排除该 子集合的回写。

10.如权利要求9所述的延伸装置,其中该延伸指令器中还包括:其它延伸指令项目,配置为指定该指定运算。

11.如权利要求9所述的延伸装置,其中该转译器包括:

一逸出指令检测器,用以检测该延伸指令内的该选取的操作码;以及一延伸前置码译码器,耦接至该逸出指令检测器,用以转译该n位的延 伸控制前置码,并产生指定该子集合的该微指令序列内一微操作码延伸项字 段,其中n为正整数。

12.一种为一既有微处理器指令集增添选择性的条件码回写能力的指令 集延伸装置,该提供条件码回写指定元的条件码回写指定器耦接至该选出标 志器,用以禁止这些条件码的回写,并致能其余条件码的回写,包括:一提供逸出标志的逸出标志器,该逸出标志由一转译逻辑电路接收,并 指出一对应指令的附随部分指定了一微处理器所要执行的一延伸运算,其中 该逸出标志为该既有微处理器指令集内的一操作码项目;

一提供条件码回写指定元的条件码回写指定器,耦接至该逸出标志器, 该条件码回写指定元为该附随部分其中之一,用以指定数个条件码中关联于 该延伸运算的结果;以及一条件码回写控制器,耦接至该转译逻辑电路,用以禁止关联于该延伸 运算结果的条件码的回写,并致能其余这些条件码的回写。

13.如权利要求12所述的指令集延伸装置,其中该附随部分的其余部分 包括另一操作码项目与选用的数个地址指定元项目。

14.如权利要求12所述的指令集延伸装置,其中该条件码回写指定元包 括一8位的数据项。

15.如权利要求12所述的指令集延伸装置,其中该既有微处理器指令集 为x86微处理器指令集。

16.如权利要求12所述的指令集延伸装置,其中该转译逻辑电路将该逸 出标志与该附随部分转译成对应的微指令,该对应的微指令指示一延伸执行 逻辑电路去执行该延伸运算。

17.如权利要求12所述的指令集延伸装置,其中该转译逻辑电路包括:一逸出标志检测逻辑电路,用以检测该选出标志,并指示该附随部分的 转译操作需依据延伸转译规则;以及一译码逻辑电路,耦接至该逸出标志检测逻辑电路,用以依据该既有微 处理器指令集的规则,执行微处理器指令的转译操作,并依据该延伸转译规 则执行该对应指令的转译,以允许这些条件码的选择性回写。

18.一种扩充一微处理器指令集的方法,以提供可编程的结果条件码回写 能力,该方法包括:提供一延伸指令,该延伸指令包括一延伸标志及一条件码回写前置码, 其中该延伸标志为该微处理器指令集其中的一操作码;

通过该条件码回写前置码与该延伸指令的其余部分指定所要执行的一运 算,其中与上述运算的结果有关的条件码的回写将被禁止;以及执行该运算以产生该结果,且禁止该与上述运算的结果有关的条件码的 回写。

19.如权利要求18所述的扩充一微处理器指令集的方法,其中该指定所 要执行的运算的操作包括:该指定所要执行的运算的操作使用了该微处理器指令集中的另一操作 码。

20.如权利要求18所述的扩充一微处理器指令集的方法,还包括:将该延伸指令转译成微指令,该微指令用于在执行该运算后,指示一延 伸执行逻辑电路去禁止该与上述运算的结果有关的条件码的回写。

21.如权利要求20所述的扩充一微处理器指令集的方法,其中该转译延 伸指令的操作包括:于一转译逻辑电路内,检测该延伸标志;以及

译码该条件码回写前置码与该延伸指令的其余部分,以便为一微处理器 结构提供可编程回写控制能力。

说明书 :

与相关发明的对照

本发明依据以下美国发明申请主张优先权:案号10/144,593,申请日为 2002年5月9日,专利名称为“选择性地控制条件码回写的装置及方法”。 本发明与下列同在申请中的美国专利申请有关,其申请日与本发明相同,且 具有相同的申请人与发明人。

台湾申请号 内部文件编号 专利名称 91116957 CNTR:2176 延伸微处理器指令集的装置及方法 91116958 CNTR:2186 执行条件指令的装置及方法 91116959 CNTR:2189 增加微处理器的寄存器数量的机制 91116672 CNTR:2198 选择性地控制结果回写的装置及方法

技术领域

本发明涉及微电子的领域,尤指一种能将选择性的条件码回写控制特征 纳入一既有的微处理器指令集结构的技术。

背景技术

自70年代初面世以来,微处理器的使用即呈指数般成长。从最早应用于 科学与技术的领域,到如今已从那些特殊领域引进商业的消费者领域,如桌 上型与膝上型(laptop)计算机、视频游戏控制器以及许多其它常见的家用与 商用装置等产品。
随着过去三十年来使用上的爆炸性成长,在技术上也历经一相对应的提 升,其特征在于对下列项目有着日益升高的要求:更快的速度、更强的寻址 能力、更快的内存存取、更大的操作数、更多种运算(如浮点运算、单一指令 多重数据(SIMD)、条件移动等)以及附加的特殊运算(如多媒体运算)。如此造 就了该领域中惊人的技术进展,且都已应用于微处理器的设计,像扩充管线 化(extensive pipelining)、超规模结构(super-scalar architecture)、快取结 构、乱序处理(out-of-order processing)、爆发式存取(burst access)、分支 预测(branch predication)以及假想执行(speculative execution)。总之,比 起30年前刚出现时,现在的微处理器呈现出惊人的复杂度,且具备了强大的 能力。
但与许多其它产品不同的是,有另一非常重要的因素已限制了、并持续限 制着微处理器结构的演进。现今微处理器会如此复杂,一大部分得归因于这项 因素,即旧有软件的兼容性。在市场考虑下,所多制造商选择将新的结构特征 纳入最新的微处理器设计中,但同时在这些最新的产品中,又保留了所有为确 保兼容于较旧的,即所谓“旧有”(legacy)应用程序所必需的能力。
这种旧有软件兼容性的负担,没有其它地方会比在x86-兼容的微处理器 的发展史中更加显而易见。大家都知道,现在的32/16位的虚拟模式 (virtual-mode)x86微处理器,仍可执行80年代所编写的8位真实模式 (real-mode)的应用程序。而熟悉此领域技术人员也承认,有不少相关的结 构“包袱”堆在x86结构中,只是为了支持与旧有应用程序及运作模式的兼容 性。虽然在过去,研发者可将新开发的结构特征加入既有的指令集结构,但如 今使用这些特征所凭借的工具,即可编程的指令,却变得相当稀少。更简单地 说,在某些重要的指令集中,已没有“多余”的指令,让设计者可借用以将更新 的特征纳入一既有的结构中。
例如,在x86指令集结构中,已经没有任何一未定义的一字节大小的操作 码状态是尚未被使用的。在主要的字节大小的x86操作码图中,全部256个操 作码状态都已被既有的指令占用了。结果是,x86微处理器的设计者现在必须 在提供新特征与放弃旧有软件兼容性两者间作抉择。若要提供新的可编程特 征,则必须分派操作码状态给这些特征。若既有的指令集结构没有多余的操作 码状态,则某些既存的操作码状态必须重新定义,以提供给新的特征。因此, 为了提供新的特征,就得牺牲旧有软件兼容性了。
一个持续发展但在许多指令集结构中仍未解决的领域,即是条件码回写 (condition codes write back)的选择性控制。在许多现代的指令集中,有些指 令会指示一符合旧有规则的微处理器中的执行逻辑电路,对所提供的操作数执 行运算,如将两操作数相加,或对两操作数执行一逻辑“或”(AND)的运算。 不论所执行运算的类型为何,运算执行完后都会产生一结果(result)。而且 情况经常是,应用程序可能会依据一最近所产生结果的特定属性,而采行不同 路径的程序流程。例如,若结果是一正数,则流程可能进行至程序中的A点, 若结果是一负数,则流程将进行至B点。若结果为零,则流程将进行至C点。
由于应用程序的流程经常决定于所产生的结果是否符合特定的边界条件 (如负数、正数、零、溢位、奇数个1、偶数个1等),设计者便提出了相关 工具,借以简易地评估一最近运算结果的边界属性,并依此改变程序的流程。 在今日,用来储存及检验结果条件的工具中,最广为使用的即是,将一系列的 条件码位连同一些条件分支指令储存于一特殊寄存器(register)内,其中这些分 支指令可使程序的流程依照该特殊寄存器所存的一个或更多位的状态来改变。 当执行一运算并产生一对应结果,微处理器内的条件码逻辑电路便依每个边界 条件来评估该对应结果,并设定该特殊条件码寄存器中的对应位,以供条件分 支指令后续查询之用。
在许多现代的微处理器中,结果的评估与条件码的更新都是自动进行的。 每计算出一个新的结果,条件码寄存器(也称为标志寄存器)的状态就被更新, 以反映该新的结果的边界属性。虽然这项特征在许多情况下相当有用,但仍有 些时候是不希望在一结果产生后,便将条件码寄存器予以更新。例如,熟悉此 领域技术人员都知道,评估所有边界条件以及更新每一新产生结果的对应条件 码位,是相当复杂且花时间的工作,以致于对大部分微处理器而言,每计算出 一结果,就必须将其执行管线停顿一个或更多周期,以完成边界条件的评估与 相关条件码位的设定。这个现象已被微处理器设计者与编译器设计者注意到。 所以,当一条件分支指令(条件码使用者)之前紧邻着一建立分支条件的指令 (条件码制造者)时,在这种情况下,大部分的编译器与一些微处理器将在指 令流中向后找寻一个或更多不影响条件码的后续指令,并将这些后续指令插入 制造条件码的指令与条件分支指令间,以使程序代码的执行工作能安排得更有 效率。
但熟悉此领域技术人员都知道,后续指令并非总是能顺利插入,因此,管 线运作的停顿确实常常发生。这问题在执行重复的程序循环时,会更加严重。 而且,若分支条件已经建立,此时再将不需要的虚拟操作指令(no-op instruction)插入程序流程中,对应用程序的整体执行速度而言,已证明是非 常不利的。
因此,我们所需要的是,一种允许将条件码更新的选择性控制纳入既有微 处理器指令集结构的技术,其中该微处理器指令集被已定义的操作码完全占 用,且纳入该技术并不影响一符合旧有规则的微处理器执行旧有应用程序的能 力。
在另一情况下,程序员可能想要设定一些条件,以作为后续运算是否执行 的判断依据。因此,在一系列指令的执行过程中,能维持一组条件码是很必需 的,这其中,并不允许该系列指令所产生的结果去修改先前已设定的条件码。

发明内容

本发明如同前述其它发明,是针对上述及其它现有技术的问题与缺点加以 克服。本发明提供一种更好的技术,用以扩充微处理器的指令集,使其超越现 有的能力,对于所产生结果的对应条件码的更新,进行可编程的控制。在一具 体实施例中,提供了一种微处理器装置,用以选择性地控制条件码的回写。该 微处理器装置具有一转译逻辑电路(translation logic)与一延伸执行逻辑电路 (extended execution logic)。该转译逻辑电路将一延伸指令转译成对应的微 指令(micro instruction)。该延伸指令具一延伸前置码(extended prefix)与 一延伸前置码标志(extended prefix tag)。该延伸前置码禁止对应一指定运算 结果的该条件码的回写。该延伸前置码标志则指出该延伸前置码,其中延伸前 置码标志是一微处理器指令集内另一依据结构所指定的操作码。该延伸执行逻 辑电路耦接至转译逻辑电路,用以接收该对应的微指令,产生该结果,并禁止 该条件码的回写。
本发明的一个目的,在于提出一种为既有微处理器指令集增添条件标志的 回写控制特征的延伸装置。该延伸装置具有一延伸指令与一转译器 (translator)。该延伸指令指示一微处理器去阻止一数个条件标志的子集合的 回写。这些条件标志反映出一结果的边界条件,其中该结果对应于一指定运算 的执行。该延伸指令包括该既有微处理器指令集其中一选取的操作码,其后则 接着一n位的延伸控制前置码。该选取的操作码指出该延伸指令,而该n位的 延伸控制前置码则指出该子集合。该转译器接收该延伸指令,并产生一微指令 序列,以指示微处理器执行该指定运算,并指示一回写控制逻辑电路于产生该 结果后,禁止该子集合的回写。
本发明的另一目的,在于提出一种为既有微处理器指令集增添选择性的条 件码回写能力的指令集延伸装置。该指令集延伸装置具有一逸出标志器 (escape tag)、一提供条件码回写指定元(codes write back specifier)的条件 码回写指定器及一条件码回写控制器(condition codes write back controller)。 该逸出标志由一转译逻辑电路接收,并指出一对应指令的附随部分指定了一微 处理器所要执行的一延伸运算,其中该逸出标志为该既有微处理器指令集内的 一操作码项目。该条件码回写指定器耦接至该逸出标志器,且该条件码回写指 定元为该附随部分其中之一,用以指定数个关联于该延伸运算结果的条件码。 该条件码回写控制器耦接至该转译逻辑电路,用以禁止这些条件码的回写,并 致能其余条件码的回写。
本发明的再一目的,在于提供一种扩充微处理器指令集的方法,以提供可 编程的结果条件码回写能力。该方法包括提供一延伸指令,该延伸指令包括一 延伸标志及一条件码回写前置码,其中该延伸标志为该微处理器指令集其中的 一操作码;通过该条件码回写前置码与该延伸指令的其余部分指定所要执行的 一运算,其中关联于该运算结果的选取条件码的回写将被禁止;以及执行该运 算以产生该结果,并禁止该选取条件码的回写。

附图说明

本发明的前述与其它目的、特征及优点,在配合下列说明及所附图标后, 将可获得更好的理解:
图1为一相关技术的微处理器指令格式的方块图;
图2为一表格,其描述一指令集结构中的指令,如何对应至图1指令格式 内一8位操作码字节的位逻辑状态;
图3为本发明的延伸指令格式的方块图;
图4为一表格,其显示依据本发明,延伸结构特征如何对应至一8位延伸 前置码实施例中位的逻辑状态;
图5为解说本发明用以控制关联于所执行运算结果的条件码更新的一管 线化微处理器的方块图;
图6为本发明用于选择性地控制条件码回写的延伸前置码的一具体实施 例的方块图;
图7为图5微处理器内转译阶段逻辑电路的详细的方块图;
图8为图5的微处理器内延伸执行逻辑电路的方块图;以及
图9为描述本发明对提供条件码回写控制的指令进行转译与执行的方法 的运作流程图。
图号说明:
100指令格式  101前置码  102操作码  103地址指定元
2008位操作码图  201操作码值  202操作码F1H
300延伸指令格式  301前置码  302操作码
303地址指定元  304延伸指令标志  305延伸前置码
4008位前置码图  401结构特征
500管线化微处  501提取逻辑电路
502指令高速缓存/外部内存  503指令队列
504转译逻辑电路  505延伸转译逻辑电路
506微指令队列  507执行逻辑电路  508延伸执行逻辑电路
600延伸前置码  601备用字段  602回写控制字段
700转译阶段逻辑电路  701激活状态信号  702机器特定寄存器
703延伸特征字段  704指令缓冲器  705转译逻辑电路
706转译控制器  707禁止信号  708逸出指令检测器
709延伸前置码译码器  710指令译码器
711控制只读存储器  712微指令缓冲器  713操作码延伸项字段
714微操作码字段  715目的字段  716来源字段  717位移字段
800延伸执行逻辑电路  801操作数寄存器
802微指令寄存器  803操作码延伸项字段
804其余字段  805操作数寄存器
806条件标志寄存器  807条件码回写控制器
808结果总线  809算术逻辑单元  810结果寄存器
900--926对提供条件码回写控制的指令进行转译与执行的方法的运作 流程

具体实施方式

以下的说明,是在一特定实施例及其必要条件的思路下而提供,可使一般 熟悉此项技术人员能够利用本发明。然而,各种对该较佳实施例所作的修改, 对熟悉此项技术人员而言是显而易见的,并且,在此所讨论的一般原理,也可 应用至其它实施例。因此,本发明并不限于此处所展示与叙述的特定实施例, 而是具有与此处所公开的原理与新颖特征相符的最大范围。
前文已针对今日的微处理器内,如何扩充其结构特征,以超越相关指令集 能力的技术作了背景的讨论。有鉴于此,在图1与图2,将讨论一相关技术的 例子。此处的讨论强调了微处理器设计者所一直面对的两难情况,即一方面, 他们想将最新开发的结构特征纳入微处理器的设计中,但另一方面,他们又要 保留执行旧有应用程序的能力。在图1至图2的例子中,一完全占用的操作码 图,已把增加新操作码至该范例结构的可能性排除,因而迫使设计者要不就选 择将新特征纳入,而牺牲某种程度的旧有软件兼容性,要不就将结构上的最新 进展一并放弃,以便维持微处理器与旧有应用程序的兼容性。在相关技术的讨 论后,于图3至图9,将提供对本发明的讨论。通过利用一既有但未使用的操 作码作为一延伸指令的前置码标志,本发明可让微处理器设计者克服已完全使 用的指令集结构的限制,在允许他们提供条件码回写控制能力的同时,也能保 留与旧有应用程序的兼容性。
请参阅图1,其为一相关技术的微处理器指令格式100的方块图。该相关 技术的指令100具有数量可变的数据项101-103,每一项目都设定成一特定值, 合在一起便组成微处理器的一特定指令100。该特定指令100指示微处理器执 行一特定运算,例如将两操作数相加,或是将一操作数从内存搬移至微处理器 内的寄存器。一般而言,指令100内的操作码项目102指定了所要执行的特定 运算,而选用(optional)的地址指定元103位于操作码102之后,以指定关 于该特定运算的附加信息,像如何执行该运算,操作数位于何处等等。指令格 式100并允许程序员在一操作码102前加上前置码项目101。在操作码102所 指定的特定运算执行时,前置码101用以指示是否使用特定的结构特征。一般 来说,这些结构特征能应用于指令集中任何操作码102所指定运算的大部分。 例如,现今前置码101存在于一些能使用不同大小操作数(如8位、16位、 32位)执行运算的微处理器中。而当许多此类处理器被编程为一预设的操作 数大小时(比如32位),在其个别指令集中所提供的前置码101,仍能使程 序员依据各个指令,选择性地取代(override)该预设的操作数大小(如为了 执行16位运算)。可选择的操作数大小仅是结构特征的一例,在许多现代的 微处理器中,这些结构特征能应用于众多可由操作码102加以指定的运算(如 加、减、乘、布尔逻辑等)。
图1所示的指令格式100,有一为业界所熟知的范例,此即x86指令格式 100,其为所有现代的x86-兼容微处理器所采用。更具体地说,x86指令格式 100(也称为x86指令集结构100)使用了8位前置码101、8位操作码102以 及8位地址指定元103。x86结构100也具有数个前置码101,其中两个取代 了x86微处理器所预设的地址/数据大小(即操作码状态66H与67H),另一 个则指示微处理器依据不同的转译规则来解译其后的操作码字节102(即前置 码值0FH,其使得转译操作是依据所谓的二字节操作码规则来进行),其它 的前置码101则使特殊运算重复执行,直至重复条件满足为止(即REP操作 码:F0H、F2H及F3H)。
现请参阅图2,其显示一表格200,用以描述一指令集结构的指令201如 何对应至图1指令格式内一8位操作码字节102的位逻辑状态。表格200呈现 了一示范性的8位操作码图200,其将一8位操作码项目102所具有的最多256 个值,关联到对应的微处理器操作码指令201。表格200将操作码项目102的 一特定值,譬如02H,映像至一对应的操作码指令201(即指令I02 201)。 在x86操作码图的例子中,为此领域中人所熟知的是,操作码值14H是映像 至x86的进位累加(Add With Carry,ADC)指令,此指令将一8位的直接 (immediate)操作数加至结构寄存器AL的内含值。熟悉此领域技术人员也 将发觉,上文提及的x86前置码101(也即66H、67H、0FH、F0H、F2H及 F3H)是实际的操作码值201,其在不同情况下,指定要将特定的结构延伸项 应用于随后的操作码项目102所指定的运算。例如,在操作码14H(正常情况 下,为前述的ADC操作码)前加上前置码0FH,会使得x86处理器执行一“解 压缩与插入低压缩的单精度浮点值”(Unpack and Interleave Low Packed Single-Precision Floating-Point Values)运算,而非原本的ADC运算。诸如此 x86例子所述的特征,在现代的微处理器中部分地致能,此因微处理器内的指 令转译/译码逻辑电路是依序解译一指令100的项目101-103。所以在过去,于 指令集结构中使用特定操作码值作为前置码101,可允许微处理器设计者将不 少先进的结构特征纳入兼容旧有软件的微处理器的设计中,而不会对未使用那 些特定操作码状态的旧有程序,带来执行上的负面冲击。例如,一未曾使用 x86操作码0FH的旧有程序,仍可在今日的x86微处理器上执行。而一较新 的应用程序,借着运用x86操作码0FH作为前置码101,就能使用许多新进 纳入的x86结构特征,如单一指令多重数据(SIMD)运算,条件移动运算等 等。
尽管过去已通过指定可用/多余的操作码值201作为前置码101(也称为 结构特征标志/指针101或逸出指令101)来提供结构特征,但许多指令集结 构100在提供功能上的强化时,仍会因为一非常直接的理由而碰到阻碍,即所 有可用/多余的操作码值已被用完,也就是,操作码图200中的全部操作码值 已被结构化地指定。当所有可用的值被分派为操作码项目102或前置码项目 101时,就没有剩余的操作码值可作为纳入新特征之用。这个严重的问题存在 于现在的许多微处理器结构中,因而迫使设计者得在增添结构特征与保留旧有 程序的兼容性两者间作抉择。
值得注意的是,图2所示的指令201以一般性的方式表示(也即I24、I86), 而非具体指涉实际的运算(如进位累加、减、异或)。这是因为,在一些不同 的微处理器结构中,完全占用的操作码图200在结构上,已将纳入较新进展的 可能性排除。虽然图2例子所提到的,是8位的操作码项目102,熟悉此领域 技术人员仍将发觉,操作码102的特定大小,除了作为一特殊情况来讨论完全 占用的操作码结构200所造成的问题外,其它方面与问题本身并不相干。因此, 一完全占用的6位操作码图将有64个可结构化地指定的操作码/前置码201, 并将无法提供可用/多余的操作码值作为扩充之用。
另一种做法,则并非将原有指令集废弃,以一新的格式100与操作码图 200取代,而是只针对一部份既有的操作码201,以新的指令方法(new instruction meanings)取代,如图2的操作码40H至4FH。以这种混合的技术, 符合旧有规则的微处理器就可以兼容旧有软件模式运作,其中操作码40H-4FH 是依旧有规则来解译,或者以加强模式(enhanced mode)运作,其中操作码 40H-4FH依加强的结构规则来解译。此项技术确能允许设计者将新特征纳入 设计,然而,当符合旧有规则的微处理器于加强模式运作时,缺点仍旧存在, 因为微处理器不能执行任何使用操作码40H-4FH的应用程序。因此,站在保 留旧有软件兼容性的立场,兼容旧有软件/加强模式的技术,还是无法接受的。
然而,对于操作码空间已完全占用的指令集200,且该空间涵盖所有于符 合旧有规则的微处理器上执行的应用程序的情形,本发明已注意到其中操作码 201的使用状况,也观察出,虽然有些指令202是结构化地指定,但未用于能 被微处理器执行的应用程序中。图2所述的指令IF1202即为此现象的一例。 事实上,相同的操作码值202(也即F1H)是映像至未用于x86指令集结构的 一有效指令202。虽然该未使用的x86指令202是有效的x86指令202,其指 示要在x86微处理器上执行一结构化地指定的运算,但它却未使用于任何能在 现代x86微处理器上执行的应用程序。这个特殊的x86指令202被称为电路 内仿真断点(In Circuit Emulation Breakpoint)(也即ICE BKPT,操作码值为 F1H),之前都是专门使用于一种现在已不存在的微处理器仿真设备中。ICE BKPT 202从未用于电路内仿真器的外的应用程序中,并且先前使用ICE BKPT 202的电路内仿真设备已不复存在。因此,在x86的情形下,本发明已在一完 全占用的指令集结构200内发现一样工具,利用一有效但未使用的操作码202, 以允许在微处理器的设计中纳入先进的结构特征,而不需牺牲旧有软件的兼容 性。在一完全占用的指令集结构200中,本发明利用一结构化地指定但未使用 的操作码202,作为一指针标志,以指出其后的一n位前置码,因此允许微处 理器设计者可将最多2n个最新发展的结构特征,纳入微处理器的设计中,同 时保留与所有旧有软件完全的兼容性。
本发明通过提供一n位的条件码回写控制指定元前置码,以使用前置码标 志/延伸前置码的概念,因而可允许程序员将一常用的供微处理器执行的运算 (如加、减、布尔运算、操作数操作(manipulation)等)编程,并在相同指令内, 对于执行该常用运算所产生的结果,致能/禁止其相关的指定条件码的回写(也 即更新)。在一具体实施例中,微处理器的条件码状态,存于一条件码(或标 志)寄存器中,其依据该n位延伸前置码内的字段状态来更新,而该n位延伸 前置码将关联于该结果的一条件码子集合的更新予以禁止。另一实施例则排除 (preclude)了关联于该结果的所有条件码的回写。本发明现将参照图3至图9 进行讨论。
现请参阅图3,其为本发明的延伸指令格式300的方块图。与图1所讨论 的格式100非常近似,该延伸指令格式300具有数量可变的指令项目301-305, 每一项目设定为一特定值,集合起来便组成微处理器的一特定指令300。该特 定指令300指示微处理器执行一特定运算,像是将两操作数相加,或是将一操 作数从内存搬移至微处理器的寄存器内。一般而言,指令300的操作码项目 302指定了所要执行的特定运算,而选用的地址指定元项目303则位于操作码 302后,以指定该特定运算的相关附加信息,像是如何执行该运算,操作数位 于何处等等。指令格式300也允许程序员在一操作码302前加上前置码项目 301。在操作码302所指定的特定运算执行时,前置码项目301用来指示是否 要使用既有的结构特征。
然而,本发明的延伸指令300是前述图1指令格式100的一超集 (superset),其具有两个附加项目304与305,可被选择性作为指令延伸项, 并置于一格式化延伸指令300中所有其余项目301-303之前。这两个附加项目 304与305用于致能/禁止关联于一指定运算结果的数个条件码的一子集合的 回写,以将选择性的条件码回写特征纳入微处理器的设计中,其中这些特征并 无法在一完全占用的指令集结构内加以指定。选用项目304与305是一延伸指 令标志304与一延伸条件码回写控制指定元前置码305。该延伸指令标志304 是一微处理器指令集内另一依据结构所指定的操作码。在一x86的实施例中, 该延伸指令标志304或称逸出标志304,是用操作码状态F1H,其为早先使用 的ICE BKPT指令。逸出标志304向微处理器逻辑电路指出,该条件码指定元 前置码305或称延伸特征指定元305跟随其后,其中该条件码指定元305指 定了对应于一指定运算结果的条件码。在一具体实施例中,逸出标志304指出, 一对应延伸指令300的附随部分301-303及305指定了微处理器所要执行的延 伸运算。延伸前置码305,或称条件码回写指定元305,指定了数个关联于该 延伸运算的结果的条件码。于该结果产生后,微处理器内的一条件码回写控制 器便禁止这些条件码的回写,并致能其余条件码的回写。
此处将本发明的条件执行延伸技术做个概述。一指令延伸项是以一既有指 令集结构其中一操作码/指令304与一n位延伸特征前置码305进行配置。所 选取的操作码指令作为一指针304,以指出指令300是一延伸特征指令300(也 即,其指定了微处理器结构的延伸项),该n位特征前置码305则指定一关联 于一指定运算结果的数个条件标志的子集合,其值的更新在该结果产生后被禁 止执行。在一具体实施例中,延伸前置码305具八位的大小,最多可指定256 种不同的这些条件码的子集合。n位前置码的实施例,则最多可指定2n种不同 的条件码组合。
现请参阅图4,一表格400显示依据本发明,条件码更新控制延伸项如何 映像至一8位延伸前置码实施例的位逻辑状态。类似于图2所讨论的操作码图 200,图4的表格400呈现一8位条件码指定元的前置码图400的范例,其将 一8位延伸前置码项目305的最多256个值,关联到一符合旧有规则的微处理 器的对应条件码状态401(如E34、E4D等)。在一x86的具体实施例中,本 发明的8位延伸特征前置码305提供给指定元401(也即E00-EFF)使用,这 些指定元401乃现行x86指令集结构所未能提供的。
图4所示的延伸特征401以一般性的方式表示,而非具体指涉实际的特征, 此因本发明的技术可应用于各种不同的结构延伸项401与特定的指令集结构。 熟悉此领域技术人员将发觉,许多不同的结构特征401,其中一些已于上文提 及,可依此处所述的逸出标志304/延伸前置码305技术将其纳入一既有的指 令集。图4的8位前置码实施例提供了最多256个不同的特征401,而一n位 前置码实施例则具有最多2n个不同特征401的编程选择。
在对应不同类型的条件码储存与表示方式的实施例中,这些类型对许多现 代的微处理器而言是很常见的,条件码的组合可被指定为禁止回写,这些组合 包括一结果的边界属性,如等于零、不等于零、偶校验(even parity)、奇校 验(odd parity)、带负号(sign)、不带负号、溢位(overflow)、未溢位、 进位(carry)、未进位等等。在许多此种微处理器中,一条件码状态项目(也 即寄存器)以数个条件码位(或标志)加以配置,其中每一位代表一最近产生 的结果是否已超过某一结果边界条件,像是产生一进位位,或有一符号位显示 该结果为一负数。然而,前述的特定条件码并未将本发明的范围限制于一特定 的结果条件码集合。前述实施例可作为范例,用来解说依本发明,一条件码指 定元前置码305如何被编码,以便在一结果产生后,排除特定条件码子集合的 更新。熟悉此领域技术人员将可发觉,一特殊条件码指定元前置码305的配置, 是依据一对应微处理器中条件码如何表示与储存而定。
现请参阅图5,其为本发明用以控制关联于所执行运算结果的条件码更新 的管线化微处理器500的方块图。微处理器500具有三个明显的阶段类型:提 取、转译及执行。提取阶段具有提取逻辑电路501,可从指令高速缓存502或 外部内存502提取指令。所提取的指令经由指令队列503送至转译阶段。转译 阶段具有转译逻辑电路504,耦接至一微指令队列506。转译逻辑电路504包 括延伸转译逻辑电路505。执行阶段则有执行逻辑电路507,其内具有延伸执 行逻辑电路508。
依据本发明,于运作时,提取逻辑电路501从指令高速缓存/外部内存502 提取格式化指令,并将这些指令依其执行顺序放入指令队列503中。接着从指 令队列503提取这些指令,送至转译逻辑电路504。转译逻辑电路504将每一 送入的指令转译/译码为一对应的微指令序列,以指示微处理器500去执行这 些指令所指定的运算。依本发明,延伸转译逻辑电路505检测那些具有延伸前 置码标志的指令,以进行对应条件码回写指定元前置码的转译/译码。在一x86 的实施例中,延伸转译逻辑电路505配置为检测其值为F1H的延伸前置码标 志,其为x86的ICE BKPT操作码。微指令字段则提供于微指令队列506中, 以指定要被排除更新的条件码。
微指令从微指令队列506被送至执行逻辑电路507,由延伸执行逻辑电路 508检测具有选择性条件码回写特征的微指令,此处的回写特征依微指令字段 的指示来致能。延伸执行逻辑电路508执行微指令所指定的运算,并产生对应 的结果。在对应结果产生后,延伸执行逻辑电路508即依微指令字段的指示禁 止边界条件的评估以及条件码的更新。在一具体实施例中,只有被延伸指令指 定为要更新的条件码,才会被写回条件码寄存器。在另一实施例中,只有未被 延伸指令指定为不更新的条件码,才会被写回条件码寄存器。
熟悉此领域技术人员将发现,图5所示的微处理器500为现代的管线化微 处理器50经过简化的结果。事实上,现代的管线化微处理器500最多可包括 有20至30个不同的管线阶段。然而,这些阶段可概括地归类为方块图所示的 三个阶段,因此,图5的方块图500可用以点明前述本发明实施例所需的必要 组件。为了简明起见,微处理器500中无关的组件并未显示出来。
现请参阅图6,其为本发明用于选择性地控制条件码回写的延伸前置码的 一具体实施例的方块图。该延伸条件码指定元前置码600为一8位的延伸前置 码600,且具有一包括数个位(起始于位0)的回写控制(write back control, WBC)字段602与一包括其余位(结束于位7)的备用字段601。在一具体实 施例中,WBC字段602包括位0,并依本发明指示延伸执行逻辑电路将所有 条件码的回写予以禁止。另一具体实施例则使用前置码600较低的五个位作为 WBC字段602,其中每一位分别对应至禁止负号条件、进位条件、溢位条件、 零值条件以及校验条件的回写。
现请参阅图7,其为图5的微处理器内转译阶段逻辑电路700的详细的方 块图。转译阶段逻辑电路700具有一指令缓冲器704,依本发明,其提供延伸 指令至转译逻辑电路705。转译逻辑电路705耦接至一具有一延伸特征字段 703的机器特定寄存器(machine specific register)702。转译逻辑电路705具 有一转译控制器706,其提供一禁止信号707至一逸出指令检测器708及一延 伸前置码译码器709。逸出指令检测器708耦接至延伸前置码译码器709及一 指令译码器710。延伸前置码译码器709与指令译码逻辑电路710存取一控制 只读存储器(ROM)711,其中储存了对应至某些延伸指令的样板(template) 微指令序列。转译逻辑电路705也包括一微指令缓冲器712,其具有一操作码 延伸项字段713、一微操作码字段714、一目的字段715、一来源字段716以 及一位移字段717。
实践中,在微处理器通电激活期间,机器特定寄存器702内的延伸字段 703的状态通过信号激活状态(signal power-up state)701决定,以指出该特 定微处理器是否能转译与执行本发明的延伸条件执行指令。在一具体实施例 中,信号701从一特征控制寄存器(图上未显示)导出,该特征控制寄存器则 读取一于制造时即已配置的熔合数组(fuse array)(未显示)。机器特定寄存 器702将延伸特征字段703的状态送至转译控制器706。转译控制逻辑电路 706则控制从指令缓冲器704所提取的指令,要依照延伸选择性条件码回写控 制转译规则或既有转译规则进行解译。提供这样的控制特征,可允许监督应用 程序(如BIOS)致能/禁止微处理器的延伸执行特征。若延伸特征被禁止,则 具有被选为延伸特征标志的操作码状态的指令,将依既有转译规则进行转译。 在一x86的具体实施例中,选取操作码状态F1H作为标志,则在常用的转译 规则下,遇到F1H将造成不合法的指令异常(exception)。然而,在延伸转 译规则下,若遇到标志,则会被逸出指令检测器708检测出来。逸出指令检测 器708因而于延伸前置码译码器709转译/译码标志之后的延伸条件码指定元 前置码时,禁止指令译码器710的运作,并于转译/译码该延伸指令的剩余部 分时,致能指令译码器710。某些特定指令将导致对控制ROM 711的存取, 以获取对应的微指令序列样板。微指令缓冲器712的操作码延伸项字段713 由前置码译码器709进行配置,以指定数个条件码的一子集合,其中这些条件 码的更新在一对应运算的结果产生后被致能/禁止。其它缓冲器字段714-717 则指定该对应运算,并由指令译码器710进行配置。经过配置的微指令712 被送至一微指令队列(未显示于图中),由处理器进行后续执行。
现请参阅图8,其为图5微处理器内的延伸执行逻辑电路800的方块图。 该延伸执行逻辑电路800具有一算术逻辑单元(arithematic logic unit,ALU) 809,其经由一结果总线808耦接至条件码回写控制器807。条件码回写控制 器807则耦接至一条件标志储存装置806,或称条件标志寄存器806。两操作 数OPERAND 1与OPERAND 2,由ALU 809从操作数寄存器801与805提取 出来。一微指令寄存器802提供一微指令给ALU 809与条件码回写控制逻辑 电路807。微指令寄存器802具有一操作码延伸项字段803与一其余字段804。 ALU 809并另外耦接至一结果寄存器810。
实践中,当一使用选择性条件码回写控制特征的延伸指令,依本发明被转 译成一微指令序列时,延伸微指令以及寄存器801与805内的可用操作数都经 由微指令寄存器802,被送至延伸执行逻辑电路800。操作码延伸项字段803 指定了数个条件码的一子集合,其中这些条件码的更新在一对应至由其余字段 804所指定、使用操作数801与805的运算的结果产生后被致能/禁止。ALU 809 执行所指定的运算,产生该结果,并将其送至结果寄存器810与条件码回写控 制器807。条件码控制器807配置为评估全部所产生结果的边界条件,并更新 标志寄存器806中所有可用的条件标志。为了执行延伸指令,回写控制器807 读取操作码延伸项字段803,并排除其中所指定条件的条件评估/回写。在一 具体实施例中,操作码延伸项字段803被用于将控制器807所进行的条件码评 估与回写完全禁止。
现请参阅图9,其为描述本发明对提供条件码回写控制的指令进行转译与 执行的方法的运作流程图。流程开始于方块902,其中一个配置有可编程条件 码回写特征的延伸指令的程序,被送至微处理器。流程接着进行至方块904。
于方块904中,下一个指令从高速缓存/外部内存提取。流程接着进行至 判断方块906。
于判断方块906中,对在方块904中所提取的下个指令进行检查,以判断 是否包括一延伸逸出标志/码。若否,则流程进行至方块912。若检测到该延 伸逸出码,则流程进行至方块908。
于方块908中,由于在方块906中已检测到一延伸逸出标志,转译/译码 在一延伸条件码指定元前置码上执行,以决定数个条件码的一子集合,该子集 合将于一运算结果产生后被排除更新。流程接着进行到方块910。
于方块910中,一微指令序列的对应字段被配置为指出该延伸前置码所指 定这些条件码的该子集合。流程接着进行至方块912。
于方块912中,该指令的其余部分(如前置码项目、操作码、地址指定元) 被转译/译码,以判断所要执行的运算及关联操作数的属性。流程接着进行至 方块914。
于方块914中,一微指令序列的其余字段被配置为指定所指定的运算及其 操作数属性。流程接着进行至方块916。
于方块916中,该微指令序列,其包括方块910中所配置的操作码延伸项 字段以及方块914中所配置的其余字段,被送至一微指令队列,由微处理器执 行。流程接着进行至方块918。
于方块918中,该微指令序列由本发明的延伸条件执行逻辑电路进行提 取。流程接着进行至方块920。
于方块920中,延伸执行逻辑电路执行该指定运算,并产生该结果。流程 接着进行至判断方块922。
于判断方块922中,条件码回写控制逻辑电路依本发明排除了该子集合的 边界条件评估与条件码更新,其中该子集合由微指令延伸项字段于方块910 中所指定。对于被排除的该子集合,流程进行至方块926。对于未被排除评估 /更新的其余条件码,流程则进行至方块924。
于方块924中,评估该结果,并依据这些其余的条件码来更新条件码寄存 器的对应位。流程接着进行至方块926。
于方块926中,本方法完成。
虽然本发明及其目的、特征与优点已详细叙述,其它实施例也可包括在本 发明的范围内。例如,本发明已就如下的技术加以叙述:利用已完全占用的指 令集结构内单一、未使用的操作码状态作为标志,以指出其后的延伸特征前置 码。但本发明的范围就任一方面来看,并不限于已完全占用的指令集结构,或 未使用的指令,或是单一标志。相反地,本发明涵盖了未完全映像的指令集、 具已使用操作码的实施例以及使用一个以上的指令标志的实施例。例如,考虑 一没有未使用操作码状态的指令集结构。本发明的一具体实施例包括了选取一 作为逸出标志的操作码状态,其中选取标准依市场因素而决定。另一具体实施 例则包括使用操作码的一特殊组合作为标志,如操作码状态7FH的连续出现。 因此,本发明的本质在于使用一标志序列,其后则为一n位的延伸前置码,可 允许程序员对于一延伸指令的其余部分所指定运算的执行结果,致能/禁止其 相关条件码的评估与更新。
此外,本发明已通过一具有一组条件码或标志的微处理器来作为范例,该 组条件码指出一所产生结果的边界条件,包括校验、溢位、正负号及零。虽然 这些类型的条件指针在今日仍广为使用,但本发明并不仅限于应用在这些类型 的条件。例如,本发明另外的实施例即包括其它的指定条件,像是一特殊寄存 器内容的状态、一通讯端口或其它I/O装置是否使用中、是否有可用的内存或 高速缓存空间等等。
再者,虽然上文利用微处理器为例来解说本发明及其目的、特征和优点, 熟悉此领域技术人员仍可察觉,本发明的范围并不限于微处理器的结构,而可 涵盖所有形式的可编程装置,如信号处理器、工业用控制器(industrial controller)、阵列处理机及其它同类装置。
总之,以上所述仅为本发明的较佳实施例而已,不能限定本发明所实施的 范围。凡依本发明权利要求所作的等效变化与修饰,都应仍属于本发明专利涵 盖的范围内。