CN100578442C - 选择性地控制结果回写的装置及方法 - Google Patents

选择性地控制结果回写的装置及方法 Download PDF

Info

Publication number
CN100578442C
CN100578442C CN02150561A CN02150561A CN100578442C CN 100578442 C CN100578442 C CN 100578442C CN 02150561 A CN02150561 A CN 02150561A CN 02150561 A CN02150561 A CN 02150561A CN 100578442 C CN100578442 C CN 100578442C
Authority
CN
China
Prior art keywords
extension
result
instruction
write
microprocessor
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.)
Expired - Lifetime
Application number
CN02150561A
Other languages
English (en)
Other versions
CN1414465A (zh
Inventor
G·葛兰·亨利
罗德·E·胡克
泰瑞·派克斯
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.)
INTELLIGENCE FIRST CO
Original Assignee
INTELLIGENCE FIRST CO
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
Priority claimed from US10/144,589 external-priority patent/US7380103B2/en
Application filed by INTELLIGENCE FIRST CO filed Critical INTELLIGENCE FIRST CO
Publication of CN1414465A publication Critical patent/CN1414465A/zh
Application granted granted Critical
Publication of CN100578442C publication Critical patent/CN100578442C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Abstract

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

Description

选择性地控制结果回写的装置及方法
与相关发明的对照
本发明依据以下美国发明申请主张优先权:案号60/369688,申请日为2002年4月2日,专利名称为“选择性地控制结果回写的装置及方法”。
本发明与下列同在申请中的美国专利申请有关,其申请日与本发明相同,且具有相同的申请人与发明人。
  台湾申请   内部文件编   专利名称
  91116957   CNTR:2176   延伸微处理器指令集的装置及方法
  91116958   CNTR:2186   执行条件指令的装置及方法
  91116956   CNTR:2188   选择性地控制条件码回写的装置及方法
  91116959   CNTR:2189   增加微处理器的寄存器数量的装置
技术领域
本发明涉及微电子的领域,尤指一种能将选择性的结果回写控制特征纳入一既有的微处理器指令集结构的技术。
背景技术
自70年代初面世以来,微处理器的使用即呈指数般成长。从最早应用于科学与技术的领域,到如今已从那些特殊领域引进商业的消费者领域,如桌上型与膝上型(laptop)计算机、视频游戏控制器以及许多其它常见的家用与商用产品。
随着过去三十年来使用上的爆炸性成长,在技术上也历经一相对应的提升,其特征在于对下列项目有着日益升高的要求:更快的速度、更强的寻址能力、更快的内存存取、更大的操作数、更多种运算(如浮点运算、单一指令多重数据(SIMD)、条件移动等)以及附加的特殊运算(如多媒体运算)。如重数据(SIMD)、条件移动等)以及附加的特殊运算(如多媒体运算)。如此造就了该领域中惊人的技术进展,且都已应用于微处理器的设计,像扩充管线化(extensive pipelining)、超规模结构(super-scalar architecture)、快取结构、乱序处理(out-of-order processing)、爆发式存取(burstaccess)、分支预测(branch predication)以及假想执行(speculativeexecution)。总之,比起30年前刚出现时,现在的微处理器呈现出惊人的复杂度,且具备了强大的能力。
但与许多其它产品不同的是,有另一非常重要的因素已限制了、并持续限制着微处理器结构的演进。现今微处理器会如此复杂,一大部分得归因于这项因素,即旧有软件的兼容性。在市场考虑下,所多制造商选择将新的结构特征纳入最新的微处理器设计中,但同时在这些最新的产品中,又保留了所有为确保兼容于较旧的,即所谓“旧有”(legacy)应用程序所必需的能力。
这种旧有软件兼容性的负担,没有其它地方会比在x86-兼容的微处理器的发展史中更加显而易见。大家都知道,现在的32/16位的虚拟模式(virtual-mode)x86微处理器,仍可执行80年代所编写的8位真实模式(real-mode)的应用程序。而熟悉此领域技术人员也承认,有不少相关的结构“包袱”堆在x86结构中,只是为了支持与旧有应用程序及运作模式的兼容性。虽然在过去,研发者可将新开发的结构特征加入既有的指令集结构,但如今使用这些特征所凭借的工具,即可编程指令,却变得相当稀少。更简单地说,在某些重要的指令集中,已没有“多余”的指令,让设计者可借以将更新的特征纳入一既有的结构中。
例如,在x86指令集结构中,已经没有任何一未定义的一字节大小的操作码状态,是尚未被使用的。在主要的一字节大小的x86操作码图中,全部256个操作码状态都已被既有的指令占用了。结果是,x86微处理器的设计者现在必须在提供新特征与放弃旧有软件兼容性两者间作抉择。若要提供新的可编程特征,则必须分派操作码状态给这些特征。若既有的指令集结构没有多余的操作码状态,则某些既存的操作码状态必须重新定义,以提供给新的特征。因此,为了提供新的特征,就得牺牲旧有软件兼容性了。
一个持续发展但在许多指令集结构中仍未解决的领域,即是结果回写(results write back)的选择性控制。许多现代的应用程序展现了复杂的信号与数据处理的算法,其在单一操作数上执行多个重复运算,以产生有意义的结果。此外,时常会碰到的情形是,该结果会呈现特定的边界特性,或称角落特性(corner property)。例如,结果为一正数、一负数、产生一进位位或有偶数个逻辑1。再者,熟悉此领域技术人员将会发觉,当一现代的微处理器内的执行逻辑产生一结果时,执行逻辑会同时更新存于一特殊缓存器(如结果条件标志缓存器)中的一系列条件码位,这些位显示了如前述的结果的角落特性。因此,当执行一运算并产生一对应结果时,微处理器内的条件码逻辑依每一边界条件评估该对应结果,并设定条件码缓存器中的对应位,供条件分支指令进行后续查询之用。一般而言,应用程序的流程常决定于一结果是否反映了条件码位状态所显示的特定边界条件。
但情形常常是,一结果的条件位是每执行一次程序循环便做检查,以判断该结果是否已跨过一边界条件(如零、溢位等),或是否仍处在该边界条件所界定的范围内。然而,当一程序循环内一后续指令检查条件码缓存器,以判断该结果是否已跨越该边界进入另一范围时,对该结果的不可逆的毁损可能已经造成。熟悉该领域技术人员将发觉,当一运算于一操作数上执行时,微处理器内的执行逻辑产生该结果,并评估边界条件及更新条件码缓存器,且该结果会被写回至一结构缓存器,其中该结构缓存器为该结果的一指定目的。至于重复程序循环的情形,被写入目的缓存器的该结果,通常会将前次程序循环执行的结果覆写过去。当此现象发生后,虽然程序员能察觉到一最近循环执行的结果已跨越一特定边界,若该边界定义出一范围,使得该最近循环执行的结果在此范围中变得不再可用,则所有之前所重复执行的程序循环就被浪费掉了。
因此,我们所需要的是,一种允许程序员能依据对应一结果的条件码状态,选择性地控制该结果回写的技术,其中该技术应用于一既有的微处理器指令集结构中,而该微处理器指令集被已定义的操作码完全占用,且纳入该技术并不影响一符合旧有规则的微处理器执行旧有应用程序的能力。
发明内容
本发明如同前述其它发明,是针对上述及其它现有技术的问题与缺点加以克服。本发明提供一种更好的技术,用于扩充微处理器的指令集,使其超越现有的能力,而可编程地控制结果的回写。在一具体实施例中,提供了一种微处理器装置,用于选择性地控制一结果的回写。该装置包括一转译逻辑(translation logic)与一延伸执行逻辑(extended execution logic)。该转译逻辑将一延伸指令转译成对应的微指令(micro instruction)。该延伸指令具一延伸前置码(extended prefix)与一延伸前置码标志(extendedprefix tag)。该延伸前置码禁止该结果的回写,其中该结果对应于一指定运算的执行。该延伸前置码标志则指出该延伸前置码,其中该延伸前置码标志为一微处理器指令集内另一依据结构所指定的操作码。该延伸执行逻辑耦接至转译逻辑,用于接收该对应的微指令,执行该指定运算以产生该结果,并排除该结果的回写。
本发明的一个目的,在于提出一种为既有微处理器指令集增添结果的回写控制特征的延伸机制。该延伸机制包括一延伸指令与一转译器(translator)。该延伸指令指示一微处理器禁止一指定运算的结果的回写,其中该延伸指令包括该既有微处理器指令集其中一选取的操作码,其后则接着一n位的延伸前置码,而该选取的操作码指出该延伸指令,该n位的延伸前置码则指出回写会被禁止的一条件。该转译器接收该延伸指令,并产生一微指令序列,以指示微处理器执行该指定运算,并指示一回写控制逻辑于该条件满足时,排除该结果的回写操作。
本发明的另一目的,在于提供一种为既有微处理器指令集增添可编程结果回写能力的指令集延伸模块。该指令集延伸模块具有一逸出标志(escapetag)、一回写指定元(write back specifier)及一回写控制器(write backcontroller)。该逸出标志由一转译逻辑接收,并指出一对应指令的附随部分指定了一微处理器所要执行的一延伸运算,其中该逸出标志为该既有微处理器指令集内的一第一操作码项目。该回写指定元耦接至该逸出标志,且为该附随部分其中之一,用于指定关联于该延伸运算结果的一条件。该回写控制器耦接至该转译逻辑,用于评估该条件,若该条件为真,则禁止该结果的回写。
本发明的再一目的,在于提供一种扩充微处理器指令集的方法,以提供一指定运算结果的可编程回写能力。该方法包括提供一延伸指令,该延伸指令包括一延伸标志及一延伸前置码,其中该延伸标志为该微处理器指令集其中一第一操作码;通过该延伸前置码与该延伸指令的其余部分指定所要执行的一运算,其中该结果另外被回写至一目的缓存器,且该指定操作指示要禁止该结果的回写;以及执行该运算,产生该结果,并禁止该结果被回写至该目的缓存器。
附图说明
本发明的前述与其它目的、特征及优点,在配合下列说明及所附图标后,将可获得更好的理解:
图1为一相关技术的微处理器指令格式的方块图;
图2为一表格,其描述一指令集结构中的指令,如何对应至图1指令格式内一8位操作码字节的位逻辑状态;
图3为本发明的延伸指令格式的方块图;
图4为一表格,其显示依据本发明,延伸结构特征如何对应至一8位延伸前置码实施例中位的逻辑状态;
图5为解说本发明用于选择性回写所执行运算的结果的一管线化微处理器的方块图;
图6为本发明用于选择性地控制结果回写的延伸前置码的一具体实施例的方块图;
图7为本发明用于选择性地控制结果回写的延伸前置码的另一具体实施例的方块图;
图8为本发明用于选择性地控制结果回写的延伸前置码的再一具体实施例的方块图;
图9为一表格,显示图8条件指定元字段的状态如何对应至会排除结果回写的条件;
图10为图5微处理器内转译阶段逻辑的详细的方块图;
图11为图5的微处理器内延伸执行逻辑的方块图;以及
图12为描述本发明对提供结果回写控制的指令进行转译与执行的方法的运作流程图。
图号说明:
100  指令格式     101  前置码
102  操作码       103  地址指定元
200  8位操作码图  201  操作码值
202  操作码F1H
300  延伸指令格式        301  前置码
302  操作码              303  地址指定元
304  延伸指令标志        305  延伸前置码
400  8位前置码图         401  结构特征
500  管线化微处理器      501  提取逻辑
502  指令高速缓存/外部内存
503  指令队列            504  转译逻辑
505  延伸转译逻辑        506  微指令队列
507  执行逻辑            508  延伸执行逻辑
600  延伸前置码          601  备用字段
602  结果控制字段
700  延伸前置码          701  备用字段
702  溢位码字段          703  符号码字段
704  进位码字段          705  零值码字段
706  校验码字段
800  延伸前置码
900  表格
1000  转译阶段逻辑       1001  激活状态信号
1002  机器特定缓存器     1003  延伸特征字段
1004  指令缓冲器         1005  转译逻辑
1006  转译控制器         1007  禁止信号
1008  逸出指令检测器     1009  延伸前置码译码器
1010  指令译码器         1011  控制只读存储器
1012  微指令缓冲器       1013  操作码延伸项字段
1014  微操作码字段元     1015  目的字段元
1016  来源字段           1017  位移字段
1100  延伸执行逻辑       1101  操作数缓存器
1102  微指令缓存器       1103  操作码延伸项字段
1104  其余字段           1105  操作数缓存器
1106  条件标志缓存器     1108  结果总线
1109  算术逻辑单元    1110  结果缓存器
1111  微指令缓冲器    1112  回写逻辑
1113  回写禁止逻辑    1114  总线
1200--1226 对提供结果回写控制的指令进行转译与执行的方法的运作流程
具体实施方式
以下的说明,是在一特定实施例及其必要条件的思路下而提供的,可使一般熟悉此项技术人员能够利用本发明。然而,各种对该较佳实施例所作的修改,对熟悉此项技术人员而言是显而易见的,并且,在此所讨论的一般原理,也可应用至其它实施例。因此,本发明并不限于此处所展示与叙述的特定实施例,而是具有与此处所公开的原理与新颖特征相符的最大范围。
前文已针对今日的微处理器内,如何扩充其结构特征,以超越相关指令集能力的技术,作了背景的讨论。有鉴于此,在图1与图2,将讨论一相关技术的例子。此处的讨论强调了微处理器设计者所一直面对的两难,即一方面,他们想将最新开发的结构特征纳入微处理器的设计中,但另一方面,他们又要保留执行旧有应用程序的能力。在图1至图2的例子中,一完全占用的操作码图,已把增加新操作码至该范例结构的可能性排除,因而迫使设计者要不就选择将新特征纳入,而牺牲某种程度的旧有软件兼容性,要不就将结构上的最新进展一并放弃,以便维持微处理器与旧有应用程序的兼容性。在相关技术的讨论后,于图3至图12,将提供对本发明的讨论。通过利用一既有但未使用的操作码作为一延伸指令的前置码标志,本发明可让微处理器设计者克服已完全使用的指令集结构的限制,在允许他们提供结果回写控制能力的同时,也能保留执行旧有应用程序所需的全部指令与相关特征。
请参阅图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 PackedSingle-Precision Floating-Point Values)运算,而非原本的ADC运算。这是因为,当一x86处理器碰到前置码0FH时,会采用另一种转译规则。诸如此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,以新的指令方法(newinstruction meanings)取代,如图2的操作码40H至4FH。以这种混合的技术,符合旧有规则的微处理器就可以兼容旧有软件模式运作,其中操作码40H-4FH依旧有规则来解译,或者以加强模式(enhanced mode)运作,其中操作码40H-4FH依加强的结构规则来解译。此项技术确能允许设计者将新特征纳入设计,然而,当符合旧有规则的微处理器于加强模式运作时,缺点仍旧存在,因为微处理器不能执行任何使用操作码40H-4FH的应用程序。因此,站在保留旧有软件兼容性的立场,兼容旧有软件/加强模式的技术,还是无法接受的。
然而,对于操作码空间已完全占用的指令集200,且该空间涵盖所有于符合旧有规则的微处理器上执行的应用程序的情形,本发明已注意到其中操作码201的使用状况,且他们也观察出,虽然有些指令202是结构化地指定,但未用于能被微处理器执行的应用程序中。图2所述的指令IF1 202即为此现象的一例。事实上,相同的操作码值202(也即F1H)为映像至未用于x86指令集结构的一有效指令202。虽然该未使用的x86指令202是有效的x86指令202,其指示要在x86微处理器上执行一结构化地指定的运算,但它却未使用于任何能在现代x86微处理器上执行的既有应用程序。这个特殊的x86指令202被称为电路内仿真断点(In Circuit Emulation Breakpoint)(也即ICEBKPT,操作码值为F1H),之前都是专门使用于一种现在已不存在的微处理器仿真设备中。ICE BKPT 202从未用于电路内仿真器的外的应用程序中,并且先前使用ICE BKPT 202的电路内仿真设备已不复存在。因此,在x86的情形下,本发明已在一完全占用的指令集结构200内发现一样工具,借着利用一有效但未使用的操作码202,以允许在微处理器的设计中纳入先进的结构特征,而不需牺牲旧有软件的兼容性。在一完全占用的指令集结构200中,本发明利用一结构化地指定但未使用的操作码202,作为一指针标志,以指出其后的一n位前置码,因此允许微处理器设计者可将最多2n个最新发展的结构特征,纳入微处理器的设计中,同时保留与所有旧有软件完全的兼容性。
本发明藉提供一n位的结果回写条件指定元前置码,以使用前置码标志/延伸前置码的概念,因而可允许程序员将一常用的供微处理器执行的运算(如加、减、布尔运算、操作数操作等)编程,并在相同指令内,对于执行该常用运算所产生的结果,致能/禁止其回写操作(也即更新)。此处所讨论的其它实施例,则使程序员能在所有条件下都排除该结果的回写,或是指定一回写会被禁止的条件,例如该结果导致一进位位的产生时。本发明现将参照图3至图12进行讨论。
现请参阅图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与一延伸回写指定元前置码305。该延伸指令标志304为一微处理器指令集内另一依据结构所指定的操作码。在一x86的实施例中,该延伸指令标志304,或称逸出标志304,为操作码状态F1H,其为早先使用的ICE BKPT指令。逸出标志304向微处理器逻辑指出,该回写指定元前置码305或称延伸特征指定元305跟随其后,其中该回写指定元305指定了对应于一指定运算结果的一条件,在该条件下该结果的回写会被排除。在一具体实施例中,逸出标志304指出,一对应延伸指令300的附随部分301-303及305指定了微处理器所要执行的延伸运算。n位的延伸前置码305,或称回写指定元305,指出了该结果的回写会被禁止的一条件。于该结果产生后,若该条件满足,则微处理器中的回写控制逻辑便禁止该结果的回写。
此处将本发明的条件执行延伸技术作个概述。一指令延伸项以一既有指令集结构其中一操作码/指令304与一延伸前置码305进行组态。所选取的操作码指令作为一指针304,以指出指令300是一延伸特征指令300(也即,其指定了微处理器结构的延伸项),该延伸前置码305则指定关联于一指定运算结果的一条件。若该条件为真,则于该结果产生时,排除该条件的更新。在一具体实施例中,延伸前置码305具8位的大小,最多可指定256个不同的条件码组合。n位前置码的实施例,则最多可指定2n种不同的条件码组合。
现请参阅图4,一表格400显示依据本发明,条件码更新控制延伸项如何映像至一8位延伸前置码实施例的位逻辑状态。类似于图2所讨论的操作码图200,图4的表格400呈现出一8位回写指定元的前置码图400的范例,其将一8位延伸前置码项目305的最多256个值,关联到用于排除一结果的回写的对应条件401(如E34、E4D等)。在一x86的具体实施例中,本发明的8位延伸特征前置码305提供给指定元401(也即EOO-EFF)使用,该些指定元乃现行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的一具体实施例的方块图。该延伸前置码600为一8位前置码600,且具有一包括位0的全域结果控制(results control,RC)字段602与一包括位[7:1]的备用字段601。将RC字段602设为真,会使一符合旧有规则的微处理器禁止一相关结果的回写,而不论该结果的值为何。
图7为本发明用于选择性地控制结果回写的延伸前置码700的另一具体实施例的方块图。该延伸前置码700具一校验码(parity code,PC)字段706、一零值码(zero code,ZC)字段705、一进位码(carry code,CC)字段704、一符号码(sign code,SC)字段703、一溢位码(overflow code,OC)字段702以及一备用字段701。条件码字段702至706对应于可在许多现代的微处理器中发现的典型的结果条件码标志。将这些位702至706的任一个设为真,且若微处理器的条件码缓存器的对应标志于一相关结果产生后被设定,则将使一符合旧有规则的微处理器禁止该相关结果的回写。
图8为本发明用于选择性地控制结果回写的延伸前置码800的再一具体实施例的方块图。该延伸前置码800具一包括位[7:0]的条件指定元字段。于该字段中指定了一条件,若该条件为真,则结果的回写将被排除。在一具体实施例中,该指定元字段800指定了条件码标志的一逻辑组合。或者,字段800指定了该微处理器的另一状态,例如一结构缓存器的状态、中断状态等等。若结果产生后,该指定条件为真,则该结果的回写被阻止。图9为一表格900,显示对应于图8条件指定元字段800四个较低位的条件范例。依此,一结果的条件码状态的逻辑组合被编码成该指定元800的较低四位的状态。通过将指定元编码成图9所示,不相等的状态可被组态为大于或等于(状态1101)及不高于(状态0110)。表格900仅描述了条件指定元800的范例,以突显本发明的弹性,但并非是对指定元800的任何状态的定义加以限制。
现请参阅图10,其为图5的微处理器内转译阶段逻辑1000的详细的方块图。转译阶段逻辑1000具有一指令缓冲器1004,依本发明,其提供延伸指令至转译逻辑1005。转译逻辑1005耦接至一具有一延伸特征字段1003的机器特定缓存器(machine specific register)1002。转译逻辑1005具一转译控制器1006,其提供一禁止信号1007至一逸出指令检测器1008及一延伸前置码译码器1009。逸出指令检测器1008耦接至延伸前置码译码器1009及一指令译码器1010。延伸前置码译码器1009与指令译码逻辑1010存取一控制只读存储器(ROM)1011,其中储存了对应至某些延伸指令的样板(template)微指令序列。转译逻辑1005也包括一微指令缓冲器1012,其具有一操作码延伸项字段1013、一微操作码字段元1014、一目的字段元1015、一来源字段1016以及一位移字段1017。
运作上,在微处理器通电激活期间,机器特定缓存器1002内的延伸字段1003的状态通过信号激活状态(signal power-up state)1001决定,以指出该特定微处理器是否能转译与执行本发明的延伸指令。在一具体实施例中,信号1001从一特征控制缓存器(图上未显示)导出,该特征控制缓存器则读取一于制造时即已组态的熔合数组(fuse array)(未显示)。机器特定缓存器1002将延伸特征字段1003的状态送至转译控制器1006。转译控制逻辑1006则控制从指令缓冲器1004所提取的指令,要依照延伸选择性结果回写控制转译规则或既有转译规则进行解译。提供这样的控制特征,可允许监督应用程序(如BIOS)致能/禁止微处理器的延伸执行特征。若延伸特征被禁止,则具有被选为延伸特征标志的操作码状态的指令,将依既有转译规则进行转译。在一x86的具体实施例中,选取操作码状态F1H作为标志,则在常用的转译规则下,遇到F1H将造成不合法的指令异常(exception)。然而,在延伸转译规则下,若遇到标志,则会被逸出指令检测器1008检测出来。逸出指令检测器1008因而于延伸前置码译码器1009转译/译码标志之后的延伸回写指定元前置码时,禁止指令译码器1010的运作,并于转译/译码该延伸指令的剩余部分时,致能指令译码器1010。某些特定指令将导致对控制ROM 1011的存取,以获取对应的微指令序列样板。微指令缓冲器1012的操作码延伸项字段1013由前置码译码器1009进行组态,以指定一条件,于该条件下一对应运算的结果的回写将被排除。其它缓冲器字段1014-1017则指定该对应运算,并由指令译码器1010进行组态。经过组态的微指令1012被送至一微指令队列(未显示于图中),由处理器进行后续执行。
现请参阅图11,其为图5微处理器内的延伸执行逻辑1100的方块图。该延伸执行逻辑1100具一算术逻辑单元(arithematic logic unit,ALU)1109,其耦接至一条件码(或标志)缓存器1106与一结果缓冲器1110。两操作数OPERAND 1与OPERAND 2,由ALU 1109从操作数缓存器1101与1105提取出来。一微指令缓存器1102提供一微指令给ALU 1109。微指令缓存器1102具有一操作码延伸项字段1103与一其余字段1104。微指令缓存器1102也耦接至一微指令缓冲器1111。结果缓存器1110与微指令缓冲器1111的内容被送至回写逻辑1112。回写逻辑1112包括延伸回写禁止逻辑(extended write backsuppression logic)1113,其存取标志缓存器1106。回写逻辑1112并经由总线1114将结果输出至一缓存器档案(图上未显示)中的缓存器。
运作上,当一使用选择性结果回写控制特征的延伸指令,依本发明被转译成一微指令序列时,延伸微指令以及缓存器1101与1105内的可用操作数都经由微指令缓存器1102,被送至延伸执行逻辑1100。操作码延伸项字段1103指定了一条件,于该条件下一结果的回写操作被排除,其中该结果对应于一运算,该运算由其余字段1104所指定,并使用所提供的操作数1101、1105。于是,ALU 1109执行该指定运算,并产生该结果,该结果则被送至结果缓存器1110。ALU 1109也评估该结果的边界条件,并将标志缓存器1106中的可用条件标志加以更新。结果缓存器1110与微指令缓冲器1111的内容与一管线时脉信号(图中未显示)同步,经由管线送至回写逻辑1112。微指令缓冲器1111的内容指定了该缓存器档案中一目的缓存器,供回写该结果之用。回写禁止逻辑1113存取条件标志缓存器1106,以判断操作码延伸项字段1103中所指定的条件是否为真。若该条件为真,则结果缓存器1110内容的回写会被禁止。若该条件为假,则回写禁止逻辑1113指示回写逻辑1112经由总线1114将结果1110回写至该缓存器档案中的目的缓存器。
现请参阅图12,其为描述本发明对提供结果回写控制的指令进行转译与执行的方法的运作流程图1200。流程开始于方块1202,其中一个组态有可编程结果回写特征的延伸指令的程序,被送至微处理器。流程接着进行至方块1204。
于方块1204中,下一个指令从高速缓存/外部内存提取。流程接着进行至判断方块1206。
于判断方块1206中,对在方块1204中所提取的下个指令进行检查,以判断是否包括一延伸逸出标志/码。若否,则流程进行至方块1212。若检测到该延伸逸出码,则流程进行至方块1208。
于方块1208中,由于在方块1206中已检测到一延伸逸出标志,转译/译码在一延伸指定元前置码上执行,以决定一条件码的组合,其若为真,则将排除一所产生的结果被回写至目的缓存器。流程接着进行到方块1210。
于方块1210中,一微指令序列的对应字段被组态为指出该延伸前置码所指定该些条件码的该组合。流程接着进行至方块1212。
于方块1212中,该指令的其余部分(如前置码项目、操作码、地址指定元)被转译/译码,以判断所要执行的运算及相关操作数的属性。流程接着进行至方块1214。
于方块1214中,一微指令序列的其余字段被组态为指定所指定的运算及其操作数属性。流程接着进行至方块1216。
于方块1216中,该微指令序列,其包括方块1210中所组态的操作码延伸项字段以及方块1214中所组态的其余字段,被送至一微指令队列,由微处理器执行。流程接着进行至方块1218。
于方块1218中,该微指令序列由本发明的延伸执行逻辑进行提取。流程接着进行至方块1220。
于方块1220中,延伸执行逻辑执行该指定运算,并产生该结果。流程接着进行至判断方块1222。
于判断方块1122中,依据该微指令序列中所指定的条件码组合,进行一评估,以判断该结果的回写是否要被禁止。若该条件码的组合为真,则流程进行至方块1226。若该条件码组合为假,则流程进行至方块1224。
于方块1224中,该结果被回写至其相关的目的缓存器。流程接着进行至方块1226。
于方块1226中,本方法完成。
虽然本发明及其目的、特征与优点已详细叙述,其它实施例也可包括在本发明的范围内。例如,本发明已就如下的技术加以叙述:利用已完全占用的指令集结构内单一、未使用的操作码状态作为标志,以指出其后的延伸特征前置码。但本发明的范围就任一方面来看,并不限于已完全占用的指令集结构,或未使用的指令,或是单一标志。相反地,本发明涵盖了未完全映像的指令集、具已使用操作码的实施例以及使用一个以上的指令标志的实施例。例如,考虑一没有未使用操作码状态的指令集结构。本发明的一具体实施例包括了选取一作为逸出标志的操作码状态,其中选取标准依市场因素而决定。另一具体实施例则包括使用操作码的一特殊组合作为标志,如操作码状态7FH的连续出现。因此,本发明的本质在于使用一标志序列,其后则为一n位的延伸前置码,允许程序员对于一延伸指令的其余部分所指定的运算,排除其执行结果的回写,其中该结果的回写依一指定条件是否满足而定。
此外,本发明已通过一具有一组条件码或标志的微处理器来作为范例,该组条件码指出一所产生结果的边界条件,包括校验、溢位、正负号及零。虽然这些类型的条件指针在今日仍广为使用,但本发明并不仅限于应用在这些类型的条件。例如,本发明另外的实施例即包括其它的指定条件,像是一特殊缓存器内容的状态、一通讯端口或其它I/O装置是否使用中、是否有可用的内存或高速缓存空间等等。
再者,虽然上文利用微处理器为例来解说本发明及其目的、特征和优点,熟悉此领域技术人员仍可察觉,本发明的范围并不限于微处理器的结构,而可涵盖所有形式的可编程装置,如信号处理器、工业用控制器(industrialcontroller)、阵列处理机及其它同类装置。
总之,以上所述仅为本发明的较佳实施例而已,不能限定本发明所实施的范围。凡依本发明权利要求所作的等效变化与修饰,都应仍属于本发明专利涵盖的范围内。

Claims (18)

1.一种选择性控制结果回写的微处理器装置,包括:
一转译逻辑电路,用于将一延伸指令转译成对应的微指令,其中该延伸指令包括:
一延伸前置码,用于排除该结果的回写,其中该结果是通过该延伸指令执行一指定运算所产生的;以及其中该结果另外被回写至一目的寄存器;以及
一延伸前置码标志,用于指出该延伸前置码,其中该延伸前置码标志为一微处理器指令集内另一依据结构所指定的操作码;以及
一延伸执行逻辑电路,耦接至该转译逻辑电路,用于接收该对应的微指令,执行该指定运算以产生该结果,并排除该结果的回写。
2.如权利要求1所述的微处理器装置,其中该对应的微指令包括一微操作码字段与一微操作码延伸项字段。
3.如权利要求2所述的微处理器装置,其中该延伸执行逻辑电路使用该微操作码延伸项字段,以决定要排除该结果的回写的条件,且其中该延伸执行逻辑电路使用该微操作码字段以决定所要执行的该指定运算,以产生该结果。
4.如权利要求3所述的微处理器装置,其中该延伸执行逻辑电路包括:
一回写禁止逻辑电路,配置为于该结果产生后,评估该条件,并配置为若该条件为真,即排除该结果的回写。
5.如权利要求1所述的微处理器装置,其中该转译逻辑电路包括:
一逸出指令检测逻辑电路,用于检测该延伸前置码标志;以及
一延伸前置码译码逻辑电路,耦接至该逸出指令检测逻辑电路,用于转译该延伸前置码,并对该对应微指令内的一微操作码延伸项字段进行配置,该微操作码延伸项字段则指定要排除该结果的回写的该条件。
6.如权利要求5所述的微处理器装置,其中该转译逻辑电路还包括:
一指令译码逻辑电路,用于配置该对应微指令内的其它字段元,该其它字段元依据该指令集指定该指定运算。
7.一种为一既有微处理器指令集增添结果回写控制特征的延伸装置,包括:
一提供延伸指令的延伸指令器,配置为指示一微处理器执行一运算,产生该运算的一结果,并禁止该结果回写至一目的寄存器,其中该延伸指令包括该既有微处理器指令集其中一选取的操作码,其后则接着一n位的延伸前置码,该所选取的操作码指出该延伸指令,而该n位延伸前置码则指出回写会被禁止的一条件,其中n为正整数;以及
一转译器,配置为接收该延伸指令,并产生一微指令序列,以指示该微处理器执行该运算,产生该结果,并指示一回写控制逻辑电路于该条件满足时,排除该结果回写至该目的寄存器。
8.如权利要求7所述的延伸装置,其中该延伸指令还包括:
延伸指令项目,配置为指定该指定运算。
9.如权利要求8所述的延伸装置,其中该延伸指令项目依照该既有微处理器指令集进行配置。
10.如权利要求7所述的延伸装置,其中该条件经由该指定运算的执行而满足。
11.如权利要求7所述的延伸装置,其中该转译器包括:
一逸出指令检测器,用于检测该延伸指令内的该选取的操作码;以及
一延伸前置码译码器,耦接至该逸出指令检测器,用于转译该n位的延伸前置码,并产生指定该条件的该微指令序列内一微操作码延伸项字段。
12.一种为一既有微处理器指令集增添可编程结果回写能力的指令集延伸装置,包括:
一提供逸出标志的逸出标志器,该逸出标志由一转译逻辑电路接收,用于指出一由延伸指令转译成的对应的微指令的附随部分指定了一微处理器所要执行的一指定运算,其中该逸出标志为该既有微处理器指令集内的一操作码项目;
一提供回写指定元的回写指定器,耦接至该逸出标志器,该回写指定元为该附随部分的一部分,用于指定一关联于该指定运算的一结果的回写会被禁止的条件;以及
一回写控制器,耦接至该转译逻辑电路,用于评估该条件,且若该条件为真,则禁止该结果的回写。
13.如权利要求12所述的指令集延伸装置,其中该转译逻辑电路将该逸出标志与该附随部分转译成对应的微指令,该对应的微指令指示一延伸执行逻辑电路去执行该指定运算。
14.如权利要求12所述的指令集延伸装置,其中该转译逻辑电路包括:
一逸出标志检测逻辑电路,用于检测该逸出标志,并指示该附随部分的转译操作需依据延伸转译规则;以及
一译码逻辑电路,耦接至该逸出标志检测逻辑电路,用于依据该既有微处理器指令集的规则,执行微处理器指令的转译操作,并依据该延伸转译规则执行该对应指令的转译,以允许该结果的可编程回写。
15.一种扩充一微处理器指令集的方法,以提供一指定所要执行的一运算的一结果可编程回写功能,该方法包括:
提供一延伸指令,该延伸指令包括一延伸标志及一延伸前置码,其中该延伸标志为该微处理器指令集其中的一操作码;
通过该延伸前置码与该延伸指令的其余部分指定该所要执行的运算,其中该结果还被回写至一目的寄存器,且其中该指定所要执行的运算的操作指示要禁止该结果的回写;以及
执行该运算,产生该结果,并禁止该结果被回写至该目的寄存器。
16.如权利要求15所述的扩充一微处理器指令集的方法,其中该指定所要执行的运算的操作包括:
使用该微处理器指令集中的另一操作码。
17.如权利要求15所述的扩充一微处理器指令集的方法,还包括:
将该延伸指令转译成微指令,该微指令在执行该运算后,指示一延伸执行逻辑电路去禁止该结果的回写。
18.如权利要求17所述的扩充一微处理器指令集的方法,其中该转译延伸指令的操作包括:
于一转译逻辑电路内,检测该延伸标志;以及
译码该延伸前置码与该延伸指令的其余部分,以便为微处理器结构提供可编程结果回写能力。
CN02150561A 2002-05-09 2002-11-13 选择性地控制结果回写的装置及方法 Expired - Lifetime CN100578442C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/144,589 2002-05-09
US10/144,589 US7380103B2 (en) 2002-04-02 2002-05-09 Apparatus and method for selective control of results write back

Publications (2)

Publication Number Publication Date
CN1414465A CN1414465A (zh) 2003-04-30
CN100578442C true CN100578442C (zh) 2010-01-06

Family

ID=22509249

Family Applications (1)

Application Number Title Priority Date Filing Date
CN02150561A Expired - Lifetime CN100578442C (zh) 2002-05-09 2002-11-13 选择性地控制结果回写的装置及方法

Country Status (2)

Country Link
CN (1) CN100578442C (zh)
TW (1) TW561406B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100367192C (zh) * 2005-03-01 2008-02-06 华晶科技股份有限公司 具有一微码引擎的中央处理单元
CN101833436B (zh) * 2009-05-19 2013-04-17 威盛电子股份有限公司 适用于微处理器的装置及方法
CN104317555B (zh) * 2014-10-15 2017-03-15 中国航天科技集团公司第九研究院第七七一研究所 Simd处理器中写合并和写撤销的处理装置和方法

Also Published As

Publication number Publication date
CN1414465A (zh) 2003-04-30
TW561406B (en) 2003-11-11

Similar Documents

Publication Publication Date Title
CN1414468B (zh) 延伸微处理器指令集的装置及方法
CN1218243C (zh) 延伸微处理器数据模式的装置及方法
CN100377075C (zh) 使浮点格式实现指令级规格的设备及方法
EP1351130B1 (en) Apparatus and method for conditional instruction execution
EP1351131B1 (en) Mechanism for extending the number of registers in a microprocessor
KR100327777B1 (ko) 다중명령 세트를 이용한 데이터 프로세싱 장치
US4954943A (en) Data processing system
JPS6339931B2 (zh)
EP1351135B1 (en) Microprocessor and method for selective control of condition code write back
EP1359502B1 (en) Apparatus and method for address extension in a microprocessor
EP1336918B1 (en) Apparatus and method for selective memory attribute control
US5961632A (en) Microprocessor with circuits, systems, and methods for selecting alternative pipeline instruction paths based on instruction leading codes
EP1351132B1 (en) Apparatus and method for selective control of results write back
CN100578442C (zh) 选择性地控制结果回写的装置及方法
KR100374401B1 (ko) 마이크로 명령을 기초로 프로그램 가능한 명령을 실행하는하드웨어 장치
CN1414464B (zh) 增加微处理器的寄存器数量的装置及方法
CN100590591C (zh) 选择性地控制条件码回写的装置及方法
CN1212566C (zh) 执行条件指令的装置及方法
CN1237441C (zh) 选择性控制存储器属性的装置及方法
CN1431586A (zh) 非暂存存储器参照的控制机制
JPH0642198B2 (ja) デ−タ処理装置
TWI224284B (en) Selective interrupt suppression
Plambeck et al. Development and Attributes of z/Architecture
CN1328655C (zh) 存储检查的禁止装置及方法
JPH02146628A (ja) データ処理装置

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
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20100106