CN1414464B - 增加微处理器的寄存器数量的装置及方法 - Google Patents
增加微处理器的寄存器数量的装置及方法 Download PDFInfo
- Publication number
- CN1414464B CN1414464B CN 02150560 CN02150560A CN1414464B CN 1414464 B CN1414464 B CN 1414464B CN 02150560 CN02150560 CN 02150560 CN 02150560 A CN02150560 A CN 02150560A CN 1414464 B CN1414464 B CN 1414464B
- Authority
- CN
- China
- Prior art keywords
- register
- extension
- instruction
- microprocessor
- preamble
- 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
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
本发明涉及一种用于存取微处理器内的延伸寄存器的装置及方法。该装置包括一转译逻辑电路与一延伸寄存器逻辑电路。该转译逻辑电路将一延伸指令转译为对应的微指令。该延伸指令具一延伸前置码与一延伸前置码标志。该延伸前置码指定寄存器地址延伸项,以指出该延伸寄存器,其中该延伸寄存器不能由一既有指令集来指定。该延伸前置码标志指出该延伸前置码,且为该既有指令集内另一依据结构所指定的操作码。该延伸寄存器逻辑电路耦接至该转译逻辑电路,用以接收该对应的微指令,并存取该延伸寄存器。
Description
与相关发明的对照
本发明依据以下美国发明申请主张优先权:案号60/369586,申请日为2002年4月2日,专利名称为「增加微处理器的寄存器数量的装置」。
本发明与下列同在申请中的美国专利申请有关,其申请日与本发明相同,且具有相同的申请入与发明人。
US<u>APPLICATION</u><u>NUMBER</u> | DOCKET<u>NUMBER</u> | 专利名称 |
9111695710/144595 | CNTR:2176 | 延伸微处理器指令集的装置及方法Apparatus and method for extending amicroprocessor instruction set |
9111695810/144592 | CNTR:2186 | 执行条件指令的装置及方法Apparatus and method for conditionalinstruction execution |
9111695610/144593 | CNTR:2188 | 选择性地控制条件码回写的装置及方法Apparatus and method for selectivecontrol of condition code write back |
9111667210/144589 | CNTR:2198 | 选择性地控制结果回写的装置及方法Apparatus and method for selectivecontrol of results write back |
技术领域
本发明涉及微电子的领域,尤指一种能将附加的可寻址(addressable)寄存器纳入一既有微处理器指令集结构的技术。
背景技术
自1970年代初面世以来,微处理器的使用即呈指数般成长。从最早应用于科学与技术的领域,到如今已从那些特殊领域引进商业的消费者领域,如桌上型与膝上型(laptop)计算机、视频游戏控制器以及许多其它常见的家用与商用装置等产品。
随着过去三十年来使用上的爆炸性成长,在技术上也历经一相对应的提升,其特征在于对下列项目有着日益升高的要求:更快的速度、更强的寻址能力、更快的内存存取、更大的操作数、更多种一般用途的运算(如浮点运算、单一指令多重数据(SIMD)、条件移动等)以及附加的特殊用途运算(如数字信号处理功能与其它多媒体运算)。如此造就了该领域中惊人的技术进展,且都已应用于微处理器的设计,像扩充管线化(extensive pipelining)、超规模结构(super-scalar architecture)、快取结构、乱序处理(out-of-orderprocessing)、爆发式存取(burst access)机制、分支预测(branch predication)以及假想执行(speculative execution)。总之,比起30年前刚出现时,现在的微处理器呈现出惊人的复杂度,且具备了强大的能力。
但与许多其它产品不同的是,有另一非常重要的因素已限制了、并持续限制着微处理器结构的演进。现今微处理器会如此复杂,一大部分得归因于这项因素,即旧有软件的兼容性。在市场考虑下,所多制造商选择将新的结构特征纳入最新的微处理器设计中,但同时在这些最新的产品中,又保留了所有为确保兼容于较旧的,即所谓“旧有”(legacy)应用程序所必需的能力。
这种旧有软件兼容性的负担,没有其它地方会比在x86-兼容的微处理器的发展史中更加显而易见。大家都知道,现在的32/16位的虚拟模式(virtual-mode)x86微处理器,仍可执行80年代所编写的8位真实模式(real-mode)的应用程序。而熟悉此领域技术人员也承认,有不少相关的结构“包袱”堆在x86结构中,只是为了支持与旧有应用程序及运作模式的兼容性。虽然在过去,研发者可将新开发的结构特征加入既有的指令集结构,但如今使用这些特征所凭借的工具,即可编程指令,却变得相当稀少。更具体地说,在某些重要的指令集中,已没有“多余”的指令,让设计者可借以将更新的特征纳入一既有的结构中。
例如,在x86指令集结构中,已经没有任何一未定义的一字节大小的操作码状态,是尚未被使用的。在主要的一字节大小的x86操作码图中,全部256个操作码状态都已被既有的指令占用了。结果是,x86微处理器的设计者现在必须在提供新特征与放弃旧有软件兼容性两者间作抉择。若要提供新的可编程特征,则必须分派操作码状态给这些特征。若既有的指令集结构没有多余的操作码状态,则某些既存的操作码状态必须重新定义,以提供给新的特征。因此,为了提供新的特征,就得牺牲旧有软件兼容性了。
一个持续发展但仍困扰着微处理器设计者的领域,即是微处理器内可寻址寄存器(register)的数量与使用。早期的微处理器设计提供了一或两个一般用途的8位寄存器。之后,随着应用程序内的演算日趋复杂,一般用途寄存器的数量及大小都增加了。以应用于桌上型/膝上型计算机软件的微处理器而言,目前的技术程度所能提供的32位一般用途寄存器不到十个。所以到现在,仍有应用程序的领域因为微处理器并未提供更多可寻址的一般用途寄存器,而受到不利的影响。
因此,我们所需要的是,一种可将附加的一般用途寄存器纳入一既有微处理器指令集结构的装置及方法,其中该既有指令集为被已定义的操作码完全占用,且此项技术也可让一符合旧有规则的微处理器保留执行旧有应用程序的能力。
发明内容
本发明如同前述其它发明,为针对上述及其它现有技术的问题与缺点加以克服。本发明提供一种更好的技术,用以扩充微处理器的指令集,使其超越现有的能力,而提供附加的一般用途寄存器,其内容可供微处理器指令集的可编程指令执行运算之用。在一具体实施例中,提供一种用以存取一微处理器内的延伸寄存器的装置。该装置包括一转译逻辑电路(translation logic)与一延伸寄存器逻辑电路(extended register logic)。该转译逻辑电路将一延伸指令转译成对应的微指令(micro instruction),由该微处理器执行。该延伸指令具一延伸前置码(extended prefix)与一延伸前置码标志(extendedprefix tag)。该延伸前置码指定了寄存器地址延伸项,这些延伸项指出该延伸寄存器,其中该延伸寄存器并不能由一既有指令集加以指定。该延伸前置码标志则指出该延伸前置码,且为该既有指令集内另一依据结构所指定的操作码。该延伸寄存器逻辑电路耦接至转译逻辑电路,用以接收该对应的微指令,并存取该延伸寄存器。
本发明的一个目的,为提出一种扩充一既有微处理器指令集以提供附加的操作数寄存器的装置。该装置包括一提供延伸指令的延伸指令器与一转译器。该延伸指令指定了对应一指定运算的附加操作数寄存器,且该延伸指令包括该既有微处理器指令集其中一选取的操作码,其后则接着一n位的延伸前置码。该选取的操作码指出该延伸指令,该n位的延伸前置码则指出该附加操作数寄存器,其中该附加操作数寄存器无法依该既有微处理器指令集另行指定。该转译器接收该延伸指令,并产生一微指令序列,以指示微处理器于该指定运算执行时,存取该附加操作数寄存器。
本发明的另一目的,在于提出一种为一既有指令集增添延伸寄存器的寻址能力的指令集延伸装置。该指令集延伸装置具一逸出标志器(escape tag)、一提供延伸寄存器指定元(extended registers specifier)的延伸寄存器指定器及一延伸寄存器逻辑电路(extended register logic)。该逸出标志由一转译逻辑电路接收,并指出一对应指令的附随部分为指定了一微处理器所要执行的一延伸运算,其中该逸出标志为该既有指令集内的一操作码项目。该延伸寄存器指定器耦接至该逸出标志器,且该延伸寄存器指定元为该附随部分其中之一。该延伸寄存器指定元指定了数个对应至延伸寄存器的地址延伸项,该延伸寄存器则为该延伸运算的所需。该延伸寄存器逻辑电路耦接至该转译逻辑电路,于该指定运算执行时,存取该延伸寄存器,其中该既有指令集仅提供寻址既有寄存器的能力,且该延伸寄存器指定元致能寻址该延伸寄存器的能力。
本发明的再一目的,在于提供一种扩充一既有指令集结构的方法,以提供一微处理器内延伸寄存器的可编程寻址能力。该方法包括提供一延伸指令,该延伸指令包括一延伸标志及一延伸前置码,其中该延伸标志为该既有指令集结构其中的一操作码项目;通过该延伸前置码与该延伸指令的其余部分指定该延伸寄存器,其中该延伸寄存器为于一指定运算执行时被存取,且该既有指令集结构仅依据该指令集结构提供可寻址既有寄存器的指令;以及于该指定运算执行时,存取该延伸寄存器。
附图说明
本发明的前述与其它目的、特征及优点,在配合下列说明及所附图标后,将可获得更好的理解:
图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来源地址延伸项字段(S3)
602目的地址延伸项字段(D3)
603备用字段
604操作码与地址指定元项目
605操作码与地址指定元项目
700转译阶段逻辑电路 701激活状态信号
702机器特定寄存器 703延伸特征字段
704指令缓冲器 705转译逻辑电路
706转译控制器 707禁止信号
708逸出指令检测器 709延伸前置码译码器
710指令译码器 711控制只读存储器
712微指令缓冲器 714微操作码字段
715目的字段 716来源字段
717位移字段
800延伸寄存器阶段逻辑电路 801微指令缓冲器
802寄存器逻辑电路 803延伸寄存器档案
804来源地址字段 805来源地址字段
806延伸读取逻辑电路 807延伸回写逻辑电路
808微指令缓冲器 809操作数缓冲器
810操作数缓冲器 811微指令缓冲器
812结果缓冲器 813结果缓冲器
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 LowPacked Single-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,以新的指令方法(new instruction meanings)取代,如图2的操作码40H至4FH。以这种混合的技术,微处理器就可以单独地以下列两种模式的一运作:其中旧有模式利用操作码40H-4FH,为依旧有规则来解译,或者以另一种改良模式(enhancedmode)运作,此时操作码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)(也即ICEBKPT,操作码值为F1H),之前都是专门使用于一种现在已不存在的微处理器仿真设备中。ICE BKPT 202从未用于电路内仿真器的外的应用程序中,并且先前使用ICE BKPT 202的电路内仿真设备已不复存在。因此,在x86的情形下,本发明已在一完全占用的指令集结构200内发现一样工具,借着利用一有效但未使用的操作码202,以允许在微处理器的设计中纳入先进的结构特征,而不需牺牲旧有软件的兼容性。在一完全占用的指令集结构200中,本发明利用一结构化地指定但未使用的操作码202,作为一指针标志,以指出其后的一n位前置码,因此允许微处理器设计者可将最多2n个最新发展的结构特征,纳入微处理器的设计中,同时保留与所有旧有软件完全的兼容性。
本发明提供一n位的延伸寄存器指定元前置码,以使用前置码标志/延伸前置码的概念,因而可允许程序员在一既有微处理器指令集结构所提供的一般用途寄存器外,还能指定微处理器中已提供的附加一般用途寄存器的地址。本发明现将参照图3至图9来进一步讨论。
[0035]现请参阅图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的编程选择。
不同的实施例,可依据一特殊的既有微处理器指令集对其既有寄存器进行寻址的方式来加以配置。例如,一实施例于延伸前置码305内提供数个来源寄存器与目的寄存器指定元字段,其可完全取代延伸指令300的其余部分301-303内的既有寄存器指定字段。一个扩充字段的实施例则包括数个来源寄存器与目的寄存器地址延伸字段,其内容可作为延伸指令300的其余部分301-303中,既有寄存器指定字段内所指定的对应来源/目的寄存器地址的延伸项。此实施例的其中一种形式,为利用该地址延伸项作为数个较高的寄存器地址位,这些位与其余部分301-303中的对应较低的寄存器地址位结合,以指定该延伸寄存器。另一不同的实施例则不用分开的字段来指定操作数寄存器,而是用n位延伸前置码305的一特定编码值,来指定要运用至该指定运算的一组对应的来源/目的操作数寄存器。依本发明,可用一些不同的方式来编码n位延伸前置码305中延伸寄存器的地址。然而,熟悉此领域技术人员将发现,用以指定n位延伸前置码305中的寄存器延伸项的特定编码形式,为依本发明所要应用的特定微处理器结构与指令集而定。因为遇到一所选取的逸出指令304,即表示随后有一n位的延伸前置码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中,以允许指定微处理器500内附加的内部寄存器。
微指令从微指令队列506被送至执行逻辑电路507,其中延伸执行逻辑电路508被配置为依照延伸微指令字段所指定的,存取微处理器内部的寄存器。被指定要用于一特定运算的执行的数个来源操作数,则取自来源操作数延伸寄存器。延伸执行逻辑电路508执行微指令所指定的运算,并产生相对应的结果。在对应结果产生后,延伸执行逻辑电路508将该对应结果回写至该延伸微指令字段所指定的目的操作数延伸寄存器中。
熟悉此领域技术人员将发现,图5所示的微处理器500为现代的管线化微处理器50经过简化的结果。事实上,现代的管线化微处理器500最多可包括有20至30个不同的管线阶段。然而,这些阶段可概括地归类为方块图所示的三个阶段,因此,图5的方块图500可用以点明前述本发明实施例所需的必要组件。为了简明起见,微处理器500中无关的组件并未显示出来。
现请参阅图6,其为本发明用于寻址微处理器的附加寄存器的延伸前置码600的一具体实施例方块图。该延伸寄存器指定元前置码600为一8位的延伸前置码600,且包括一来源地址延伸项字段601(S3)、一目的地址延伸项字段602(D3)以及一备用字段603。依本发明,S3字段601包括前置码600的位0,并由延伸寄存器逻辑电路使用,作为一四位的第一延伸来源寄存器地址的位3。该四位的第一延伸来源寄存器地址的其余三个位[2:0]则由其余的操作码与地址指定元项目604来指定,后者为依该既有微处理器指令集结构的寄存器指定规则(register specification conventions)而提供。依本发明,D3字段602包括前置码600的位1,并由延伸寄存器逻辑电路使用,作为一四位的第二延伸来源寄存器地址的位3。该四位的第二延伸来源寄存器地址的其余三个位[2:0]则由其余的操作码与地址指定元项目605来指定,后者为依该既有微处理器指令集结构的寄存器指定规则而提供。该第二延伸来源寄存器地址也被使用作为一所执行运算的结果的目的寄存器地址。
图6的本发明延伸前置码600的范例反映出,一个适用于x86指令集结构的寄存器延伸项实施例。现在的x86结构提供了八个一般用途寄存器,其为依照一操作码字节与地址指定元字节(称为x86指令的ModR/M与SIB字节)内的现有编码格式,指定于既有的x86指令中。通过使用如图所示的延伸前置码600的S3601与D3602字段,一x86微处理器中的可寻址寄存器数量可从八个增加到十六个。熟悉此领域技术人员将发觉,在延伸前置码中提供二位的来源与目的字段601、602,将使一既有结构下可寻址寄存器的数量增加至原来的四倍。
现请参阅图7,其为图5的微处理器内转译阶段逻辑电路700的详细的方块图。转译阶段逻辑电路700具有一指令缓冲器704,其提供延伸指令至转译逻辑电路705。转译逻辑电路705为耦接至一具有一延伸特征字段703的机器特定寄存器702。转译逻辑电路705具一转译控制器706,其提供一禁止信号707至一逸出指令检测器708及一延伸译码器709。该逸出指令检测器708耦接至该延伸译码器709及一指令译码器710。延伸译码逻辑电路709与指令译码逻辑电路710存取一控制只读存储器(ROM)711,其中储存了对应至某些延伸指令的样板(template)微指令序列。转译逻辑电路705也包括一微指令缓冲器712,其具有一微操作码字段714、一目的字段715、一来源字段716以及一位移字段717。
运作上,在微处理器通电激活期间,机器特定寄存器702内的延伸字段703的状态为通过信号激活状态(signal power-up state)701决定,以指出该特定微处理器是否能转译与执行本发明的延伸指令,以寻址该微处理器的附加寄存器。在一具体实施例中,信号701为从一特征控制寄存器(图上未显示)导出,该特征控制寄存器则读取一于制造时即已配置的熔合数组(fusearray)(未显示)。机器特定寄存器702将延伸特征字段703的状态送至转译控制器706。转译控制逻辑电路706则控制从指令缓冲器704所提取的指令,要依照延伸转译规则或常用转译规则进行解译。提供这样的控制特征,可允许监督应用程序(如BIOS)致能/禁止微处理器的延伸执行特征。若延伸特征被禁止,则具有被选为延伸特征标志的操作码状态的指令,将依常用转译规则进行转译。在一x86的具体实施例中,选取操作码状态F1H作为标志,则在常用的转译规则下,遇到F1H将造成不合法的指令异常(exception)。通过将延伸转译禁止,指令译码器710将转译/译码全部所提供的指令,并对微指令712的所有字段714-717进行配置。然而,在延伸转译规则下,若遇到标志,则会被逸出指令检测器708检测出来。逸出指令检测器708因而允许指令译码器709对该延伸指令的其余部分进行转译/译码,并对微指令712的微操作码字段714与位移字段717加以配置,而延伸译码器709则将译码/转译该延伸指令的延伸前置码与其它可用的部分,以配置微指令712的来源与目的字段716、715。某些特定指令将导致对控制ROM 711的存取,以获取对应的微指令序列样板。经过配置的微指令712被送至一微指令队列(未显示于图中),由处理器进行后续执行。
现请参阅图8,其为图5的微处理器内延伸寄存器阶段逻辑电路800的方块图。该延伸寄存器阶段逻辑电路800具一寄存器逻辑电路802,其依本发明从一微指令缓冲器801或微指令队列801提取延伸微指令。寄存器逻辑电路802具一包括既有结构寄存器与附加寄存器的延伸寄存器档案803。在一x86实施例中,寄存器R0-R7为八个既有的结构寄存器,而寄存器R8-R15则为八个附加的寄存器。寄存器R0-R15由延伸读取逻辑电路806读取以获得来源操作数,并由延伸回写逻辑电路807写入以储存结果操作数。延伸读取逻辑电路806将来源操作数OP1、OP2输出至两个操作数缓冲器809、810。结果操作数RS1、RS2则经由两个结果缓冲器812、813送至延伸回写逻辑电路807。
运作上,延伸微指令与一管线时脉(未显示)同步,从微指令队列801送至寄存器逻辑电路802。在一时脉周期中,延伸读取逻辑电路802译码该延伸微指令的来源地址字段804、805,以判断寄存器R0-R15中,哪些寄存器存有一指定运算所使用的来源操作数。来源操作数OP1、OP2则从中被取出,并送至来源操作数寄存器809、810。此外,该延伸微指令经由管线送至缓冲器808,以供微处理器的后续管线阶段(未显示)使用。在同一时脉周期中,一最近所执行运算的结果RS1、RS2被回写至由微指令缓冲器811中目的寄存器字段(未显示)所指定的目的寄存器中。对应的结果操作数RS1、RS2则被送至缓冲器812、813。
图8所示的寄存器阶段逻辑电路800提供在单一时脉周期内,一致地存取两个来源寄存器与两个结果寄存器的能力。另一具体实施例则提供两个来源操作数与单一的目的操作数。为确保寄存器R0-R15的一致性,延伸寄存器逻辑电路802在执行结果RS1、RS2的回写前,存取来源操作数OP1、OP2。
现请参阅图9,其为描述本发明对寻址微处理器的延伸寄存器的指令进行转译与执行的方法的运作流程图900。流程开始于方块902,其中一个配置有延伸寄存器寻址指令的程序,被送至微处理器。流程接着进行至方块904。
于方块904中,下一个指令从高速缓存/外部内存提取。流程接着进行至方块906。
于方块906中,依常用转译规则译码/转译该下个指令,其中该常用转译规则只应用于一既有指令集结构中的既有结构寄存器。流程接着进行至方块908。
于方块908中,运用该指令的操作码与地址指定元字段,以决定对应于一指定运算的操作数的寄存器地址。流程接着进行到方块910。
于方块910中,一微指令序列被配置为指定该指定运算及其对应操作数的寄存器地址。流程接着进行至判断方块912。
于判断方块912中,对在方块904中所提取的下个指令进行检查,以判断是否包括一延伸逸出标志/码。若否,则流程进行至方块918。若检测到该延伸逸出码,则流程进行至方块914。
于方块914中,由于在方块912中已检测到一延伸逸出标志,转译/译码在一延伸寄存器指定元前置码上执行,以决定对应至该指定运算的延伸寄存器地址。在一具体实施例中,该延伸寄存器指定元前置码提供了所有决定该延伸寄存器地址所需的地址位。流程接着进行至方块916。
于方块916中,对方块910中所配置的该微指令序列的操作数地址字段进行修改,以显示方块914中所决定的延伸操作数寄存器地址。流程接着进行至方块918。
于方块918中,该微指令序列被送至一微指令队列,由微处理器执行。流程接着进行至方块920。
于方块920中,该微指令序列由本发明的延伸寄存器逻辑电路进行提取。该延伸寄存器逻辑电路从指定的延伸寄存器提取对应该指定运算的操作数。流程接着进行至方块922。
于方块922中,延伸执行逻辑电路使用方块920中所提取的操作数,执行该指定运算,并产生结果操作数。流程接着进行至方块924。
于方块924中,该结果操作数被送至延伸寄存器逻辑电路,并被回写至该微指令序列所指定的延伸寄存器。流程接着进行至方块926。
于方块926中,本方法完成。
方法900的另一实施例,则于转译运算(方块906与914)前,即开始检测该延伸逸出码(判断方块912),而微指令序列则在单一步骤中进行配置,而不需进行置换的步骤916。
虽然本发明及其目的、特征与优点已详细叙述,其它实施例也可包括在本发明的范围内。例如,本发明已就如下的技术加以叙述:利用已完全占用的指令集结构内单一、未使用的操作码状态作为标志,以指出其后的延伸特征前置码。但本发明的范围就任一方面来看,并不限于已完全占用的指令集结构,或未使用的指令,或是单一标志。相反地,本发明涵盖了未完全映像的指令集、具已使用操作码的实施例以及使用一个以上的指令标志的实施例。例如,考虑一没有未使用操作码状态的指令集结构。本发明的一具体实施例包括了选取一作为逸出标志的操作码状态,其中选取标准依市场因素而决定。另一具体实施例则包括使用操作码的一特殊组合作为标志,如操作码状态7FH的连续出现。因此,本发明的本质在于使用一标志序列,其后则为一n位的延伸前置码,可允许程序员在一延伸指令中指定附加的操作数寄存器,其并无法另由一微处理器指令集的既有指令来提供。
再者,虽然上文利用微处理器为例来解说本发明及其目的、特征和优点,熟悉此领域技术人员仍可察觉,本发明的范围并不限于微处理器的结构,而可涵盖所有形式的可编程装置,如信号处理器、工业用控制器(industrialcontroller)、阵列处理机及其它同类装置。
总之,以上所述仅为本发明的较佳实施例而已,不能限定本发明所实施的范围。凡依本发明权利要求所作的等效变化与修饰,都应仍属于本发明专利涵盖的范围内。
Claims (20)
1.一种用以存取一微处理器内的延伸寄存器的装置,包括:
一转译逻辑电路,用以将一延伸指令转译成对应的微指令,由该微处理器执行,其中该延伸指令包括:一延伸前置码,用以指定寄存器地址延伸项,该寄存器地址延伸项指出该延伸寄存器,其中该延伸寄存器并不能由一既有指令集加以指定;以及一延伸前置码标志,用以指出该延伸前置码,其中该延伸前置码标志为原本该既有指令集内另一依据结构所指定的操作码;其中该转译逻辑电路包括:一逸出指令检测逻辑电路,用于检测该延伸前置码标志;一指令译码逻辑电路,依据该既有指令集,决定一所要执行的运算及所用的结构寄存器;以及一延伸译码逻辑电路,耦接至该逸出指令检测逻辑电路与该指令译码逻辑电路,用以决定该延伸寄存器,并于该对应微指令内指定该延伸寄存器;以及
一延伸寄存器逻辑电路,耦接至该转译逻辑电路,用以接收该对应的微指令,并存取该延伸寄存器。
2.如权利要求1所述的装置,其中该延伸指令还包括依据该既有指令集所具有的数个指令项目。
3.如权利要求2所述的装置,其中该些指令项目指定该微处理器所要执行的一运算,且其中对应该运算的操作数提取自/储存至该延伸寄存器。
4.如权利要求3所述的装置,其中该些指令项目还指定了数个结构寄存器地址。
5.如权利要求4所述的装置,其中该转译逻辑电路使用该些寄存器地址延伸项来决定该延伸寄存器。
6.如权利要求4所述的装置,其中该转译逻辑电路将该些寄存器地址延伸项与该些结构寄存器地址结合,以决定该延伸寄存器。
7.如权利要求1所述的装置,其中该延伸前置码包括8个位。
8.如权利要求1所述的装置,其中该延伸前置码包括:
一来源寄存器地址延伸项,用以指定一包括一第一来源操作数的第一延伸寄存器;以及
一目的寄存器地址延伸项,耦接至该来源寄存器地址延伸项,用以指定一包括一第二来源操作数的第二延伸寄存器,并指定该第二延伸寄存器用于储存一结果操作数。
9.一种扩充一既有微处理器指令集以提供附加的操作数寄存器的装置,包括:
一提供延伸指令的延伸指令器,配置为指定对应一指定运算的该附加操作数寄存器,其中该延伸指令包括该既有微处理器指令集其中一选取的操作码,其后则接着一n位的延伸前置码,该选取的操作码指出该延伸指令,而该n位的延伸前置码则指出该附加操作数寄存器,其中该附加操作数寄存器无法依该既有微处理器指令集另行指定;以及
一转译器,配置为接收该延伸指令,并产生一微指令序列,以指示该微处理器于该指定运算执行时,存取该附加操作数寄存器。
10.如权利要求9所述的装置,其中该延伸指令还包括:
其余指令项目,配置为指定该指定运算,其中该指定运算由该微处理器执行,且其中对应该指定运算的操作数提供自/至该附加操作数寄存器。
11.如权利要求10所述的装置,其中该n位的前置码包括:
寄存器延伸项字段,每一该字段是配置为对于每一该附加操作数寄存器的一地址,指定其较高的地址位。
12.如权利要求11所述的装置,其中该地址较低的地址位由该延伸指令内的该其余指令项目所提供。
13.如权利要求10所述的延伸装置,其中该转译器包括:
一逸出指令检测器,用以检测该延伸指令内的该选取的操作码;
一指令译码器,用以译码该延伸指令的其余部分,以决定该指定运算;以及
一延伸前置码译码器,耦接至该逸出指令检测器与该指令译码器,用以译码该n位的延伸前置码,并于该微指令序列内指定该附加操作数寄存器。
14.一种为一既有指令集增添延伸寄存器的寻址能力的指令集延伸装置,包括:
一提供逸出标志的逸出标志器,该逸出标志由一转译逻辑电路接收,并指出一对应指令的附随部分指定了一微处理器所要执行的一延伸运算,其中该逸出标志是该既有指令集内的一操作码;
一提供延伸寄存器指定元的延伸寄存器指定器,耦接至该逸出标志器,且该延伸寄存器指定元为该附随部分其中之一,指定了数个对应至延伸寄存器的地址延伸项,其中该延伸寄存器是该延伸运算所需的;以及
一延伸寄存器逻辑电路,耦接至该转译逻辑电路,用以于该指定运算执行时,存取该延伸寄存器,其中该既有指令集仅提供寻址既有寄存器的能力,且其中该延伸寄存器指定元致能寻址该延伸寄存器的能力。
15.如权利要求14所述的指令集延伸装置,其中该附随部分的其余部分包括另一操作码与选用的数个地址指定元,用以指定该延伸运算与数个地址,其中该些地址延伸项与该些地址组合,以产生该延伸寄存器的延伸地址。
16.如权利要求14所述的指令集延伸装置,其中该转译逻辑电路将该逸出标志与该附随部分转译成对应的微指令,该对应的微指令指示该延伸寄存器逻辑电路于该延伸运算执行时,去存取该延伸寄存器,以提取/储存操作数。
17.如权利要求14所述的指令集延伸装置,其中该转译逻辑电路包括:
一逸出标志检测逻辑电路,用以检测该逸出标志,并指示该附随部分的转译操作需依据延伸转译规则;以及
一译码逻辑电路,耦接至该逸出标志检测逻辑电路,用以依据该既有指令集的规则,执行指令的转译操作,并依据该延伸转译规则执行该对应指令的转译,以致能寻址该延伸寄存器的能力。
18.一种扩充一既有指令集结构的方法,以提供一微处理器内延伸寄存器的可编程寻址能力,该方法包括:
提供一延伸指令,该延伸指令包括一延伸标志及一延伸前置码,其中该延伸标志为该既有指令集结构中的一操作码项目;
通过该延伸前置码与该延伸指令的其余部分,首先指定该指定运算以便指定该延伸寄存器,其中该首先指定的操作使用了该既有指令集结构中的另一操作码项目,该延伸寄存器于一指定运算执行时被存取,且其中该既有指令集结构仅依据该指令集结构提供可寻址既有寄存器的指令;以及
于该指定运算执行时,存取该延伸寄存器。
19.如权利要求18所述的方法,还包括:
将该延伸指令转译成微指令,该微指令指示一延伸执行逻辑电路去存取该延伸寄存器。
20.如权利要求19所述的方法,其中该转译延伸指令的操作包括:
于一转译逻辑电路内,检测该延伸标志;以及
依照延伸转译规则译码该延伸前置码与该其余部分,以确认该转译操作所需的该延伸寄存器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/144,590 US7373483B2 (en) | 2002-04-02 | 2002-05-09 | Mechanism for extending the number of registers in a microprocessor |
US10/144,590 | 2002-05-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1414464A CN1414464A (zh) | 2003-04-30 |
CN1414464B true CN1414464B (zh) | 2010-04-28 |
Family
ID=22509253
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 02150560 Expired - Lifetime CN1414464B (zh) | 2002-05-09 | 2002-11-13 | 增加微处理器的寄存器数量的装置及方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN1414464B (zh) |
TW (1) | TWI222015B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112286577B (zh) * | 2020-10-30 | 2022-12-06 | 上海兆芯集成电路有限公司 | 处理器及其操作方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6009510A (en) * | 1998-02-06 | 1999-12-28 | Ip First Llc | Method and apparatus for improved aligned/misaligned data load from cache |
US6014736A (en) * | 1998-03-26 | 2000-01-11 | Ip First Llc | Apparatus and method for improved floating point exchange |
CN1242546A (zh) * | 1998-03-31 | 2000-01-26 | 英特尔公司 | 用于处理不精确异常的一种方法和装置 |
-
2002
- 2002-07-30 TW TW91116959A patent/TWI222015B/zh not_active IP Right Cessation
- 2002-11-13 CN CN 02150560 patent/CN1414464B/zh not_active Expired - Lifetime
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6009510A (en) * | 1998-02-06 | 1999-12-28 | Ip First Llc | Method and apparatus for improved aligned/misaligned data load from cache |
US6014736A (en) * | 1998-03-26 | 2000-01-11 | Ip First Llc | Apparatus and method for improved floating point exchange |
CN1242546A (zh) * | 1998-03-31 | 2000-01-26 | 英特尔公司 | 用于处理不精确异常的一种方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
TWI222015B (en) | 2004-10-11 |
CN1414464A (zh) | 2003-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1414468B (zh) | 延伸微处理器指令集的装置及方法 | |
CN1218243C (zh) | 延伸微处理器数据模式的装置及方法 | |
EP1351131B1 (en) | Mechanism for extending the number of registers in a microprocessor | |
US7529912B2 (en) | Apparatus and method for instruction-level specification of floating point format | |
EP1351130B1 (en) | Apparatus and method for conditional instruction execution | |
EP1343075B1 (en) | Apparatus and method for Instruction set extension using prefixes | |
US7647478B2 (en) | Suppression of store checking | |
EP1359502B1 (en) | Apparatus and method for address extension in a microprocessor | |
EP1351135B1 (en) | Microprocessor and method for selective control of condition code write back | |
JPS62197830A (ja) | デ−タ処理システム | |
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 | |
CN1414464B (zh) | 增加微处理器的寄存器数量的装置及方法 | |
CN100578442C (zh) | 选择性地控制结果回写的装置及方法 | |
KR100374401B1 (ko) | 마이크로 명령을 기초로 프로그램 가능한 명령을 실행하는하드웨어 장치 | |
CN100590591C (zh) | 选择性地控制条件码回写的装置及方法 | |
CN1212566C (zh) | 执行条件指令的装置及方法 | |
CN1308813C (zh) | 非临时存储器参量的控制装置、结构和方法 | |
CN1211731C (zh) | 延伸微处理器地址模式的装置及方法 | |
CN1237441C (zh) | 选择性控制存储器属性的装置及方法 | |
CN1328655C (zh) | 存储检查的禁止装置及方法 | |
TWI224284B (en) | Selective interrupt suppression |
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 |
Granted publication date: 20100428 |
|
CX01 | Expiry of patent term |