延伸微处理器地址模式的装置及方法

文档序号:6439932阅读:132来源:国知局

专利名称::延伸微处理器地址模式的装置及方法
技术领域
:(0003)本发明是有关微电子的领域,尤指一种能将延伸地址模式控制纳入一既有的微处理器指令集架构的技术。(0005)随着使用上的爆炸性成长,在技术上也历经一相对应的提升,其特征在于对下列项目有着日益升高的要求更快的速度、更强的寻址能力、更快的存储器存取、更大的操作数,更多种一般用途类型的运算(如浮点运算、单一指令多重数据(SIMD),条件移动等)以及附加的特殊用途运算(如数字信号处理功能及其它多媒体运算)。如此造就了该领域中惊人的技术进展,且都已应用于微处理器的设计,像扩充流水线化(extensivepipelining)、超纯量架构(super-scalararchitecture)、快取结构、乱序处理(out-of-orderprocessing)、爆发式存取(burstaccess)机制、分支预测(branchpredication)以及假想执行(speculativeexecution)。总之,比起30年前刚出现时,现在的微处理器呈现出惊人的复杂度,且具备了强大的能力。(0006)但与许多其它产品不同的是,有另一非常重要的因素已限制了,并持续限制着微处理器架构的演进。现今微处理器会如此复杂,一大部分得归因于这项因素,即旧有软件的兼容性。在市场考量下,所多制造商选择将新的架构特征纳入最新的微处理器设计中,但同时在这些最新的产品中,又保留了所有为确保兼容于较旧的、即所谓“旧有”(legacy)应用程序所必需的能力。(0007)这种旧有软件兼容性的负担,没有其它地方,会比在x86-兼容的微处理器的发展史中更加显而易见。大家都知道,现在的32/16位的虚拟模式(virtual-mode)x86微处理器,仍可执行1980年代所撰写的8位真实模式(real-mode)的应用程序。而本领域的技术人员也承认,有不少相关的架构“包袱”堆在x86架构中,只为了支持与旧有应用程序及运作模式的兼容性。虽然在过去,研发者可将新开发的架构特征加入既有的指令集架构,但如今使用这些特征所凭借的工具,即可程序化的指令,却变得相当稀少。更简单他说,在某些重要的指令集中,已没有“多余”的指令,让设计者可借以将更新的特征纳入一既有的架构中。(0008)例如,在x86指令集架构中,已经没有任何一未定义的一字节大小的运算码状态,是尚未被使用的。在主要的一字节大小的x86运算码图中,全部256个运算码状态都已被既有的指令占用了。结果是,x86微处理器的设计者现在必须在提供新特征与保留旧有软件兼容性两者间作抉择。若要提供新的可程序化特征,则必须分派运算码状态给这些特征。若既有的指令集架构没有多余的运算码状态,则某些既存的运算码状态必须重新定义,以提供给新的特征。因此,为了提供新的特征,就得牺牲旧有软件兼容性了。(0009)一个持续困扰微处理器设计者的问题,是有关应用程序所能寻址的虚拟存储器大小。早期的微处理器提供了8位的地址。随着应用程序日渐复杂,为了能存取较大区域的存储器,地址的大小便增加至16个位,使程序员最多能存取64KB的存储器空间。将虚拟存储器(virtualmemory)的技术纳入微处理器架构中,同样也能在几个应用程序同时要求使用存储器资源时,于操作系统层级扩充可寻址的范围。虽然利用虚拟存储器技术,可使所能存取的物理存储器量基本上不受限制,但一应用程序所能存取的虚拟存储器量仍受限于地址大小,亦即一特定微处理器架构所提供的虚拟地址位数。(0010)就用于桌上型/膝上型计算机的应用软件的微处理器而言,目前的技术可提供32位的虚拟(或线性)地址,因而允许程序最多可存取46B(即40亿字节)的虚拟存储器空间。在一特定微处理器中,所提供的虚拟地址的位数通常称为地址模式(addressmode)。为了保留与旧有应用程序的兼容性,现代的桌上型/膝上型计算机的微处理器提供程序员以32位、16位或甚至8位地址模式执行运算的能力。(0011)但即使到现在,由于现代的微处理器不支持延伸地址模式,像是64位与128位的地址模式,仍有些应用程序的领域会受到不利的影响。对于影像信号及多媒体应用程序而言,需要存取大于4GB的数组,是常见的事。不过,为了要在已无剩余运算码值的架构内支持这些延伸地址模式,必须将既有运算码重新定义,如此会导致无法支持旧有的应用程序。(0012)因此,我们所需要的是,一种可将延伸地址模式纳入既有微处理器指令集架构的装置及方法,其中该指令集架构是被已定义的运算码完全占用,且纳入该延伸地址模式还能让一符合旧有规格的微处理器保留执行旧有应用程序的能力。(0014)本发明的一个目的在于提出一种扩充既有微处理器指令集以提供附加的地址模式的机制。该机制包括一延伸指令与一转译器(translator)。该延伸指令指定一延伸地址模式,用于对应一指定运算的地址的计算,其中该延伸指令包括该既有微处理器指令集其中一选取的运算码,其后则接着一n位的延伸前置码。该选取的运算码指出该延伸指令,而该n位的延伸前置码则指出该延伸地址模式。该延伸地址模式不能另依该既有微处理器指令集加以指定。该转译器组态为接收该延伸指令,并产生一微指令序列,以指示微处理器计算该地址,该计算动作为执行该指定运算的一部份,其中该地址是依照该延伸地址模式计算而得。(0015)本发明的另一目的在于提出一种为既有指令集增添延伸地址模式能力的指令集延伸模块。该指令集延伸模块具有一逸出标记(escapetag)。一延伸地址模式指定元(extendedoperandsizespecifier)及一延伸执行逻辑。该逸出标记由一转译逻辑接收,并指出一对应指令的附随部分是指定了微处理器所要执行的一延伸运算,其中该逸出标记为该既有指令集内的一第一运算码。该延伸地址模式指定元耦接至该逸出标记,且为该附随部分其中之一,用以指定对应该延伸运算的数个地址模式其中之一。该延伸执行逻辑耦接至该转译逻辑,利用所指定的地址模式执行该延伸运算,其中该既有指令集仅提供既有的地址模式,而未能提供所指定的地址模式。(0016)本发明的再一目的在于提供一种扩充既有指令集架构的方法,可在微处理器内程序化地指定一延伸地址模式。该方法包括提供一延伸指令,该延伸指令包括一延伸标记及一延伸前置码,其中该延伸标记是该既有指令集架构其中一第一运算码项目;通过该延伸前置码与该延伸指令的其余部分指定该延伸地址模式与一指定运算,其中该既有指令集架构仅提供指定非该延伸地址模式的地址模式的指令;以及依据该延伸地址模式执行该指定运算。810缓冲器811缓冲器812较低线性地址缓冲器813较高线性地址缓冲器814缓冲器900~922对指定微处理器的延伸地址模式运算的指令,进行转译与执行的方法的运作流程(0028)前文已针对今日的微处理器内,如何扩充其架构特征,以超越相关指令集能力的技术,作了背景的讨论。有鉴于此,在图1与图2,将讨论一相关技术的例子,此处的讨论强调了微处理器设计者所一直面对的两难,即一方面,他们想将最新开发的架构特征纳入微处理器的设计中,但另一方面,他们又要保留执行旧有应用程序的能力。在图1至2的例子中,一完全占用的运算码图,已把增加新运算码至该范例架构的可能性排除,因而迫使设计者要不就选择将新特征纳入,而牺牲某种程度的旧有软件兼容性,要不就将架构上的最新进展一并放弃,以便维持微处理器与旧有应用程序的兼容性。在相关技术的讨论后,于图3至9,将提供对本发明的讨论。通过利用一既有但未使用的运算码作为一延伸指令的前置码标记,本发明可让微处理器设计者克服已完全使用的指令集架构的限制,除了提供程序员使用比现有还大的虚拟地址执行运算的能力,同时也能保留执行旧有应用程序所需的所有特征。(0029)请参阅图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加以指定的运算(如加、减、乘、布尔逻辑等)。(0030)图1所示的指令格式100,有一为业界所熟知的范例,此即x86指令格式100,其为所有现代的x86-兼容微处理器所采用。更具体他说,x86指令格式100(也称为x86指令集架构100)使用了8位前置码101、8位运算码102以及8位地址指定元103。x86架构100亦具有数个前置码101,其中两个取代了x86微处理器所预设的地址/数据大小(即运算码状态66H与67H),另一个则指示微处理器依据不同的转译规则来解译其后的运算码字节102(即前置码值0FH,其使得转译动作是依据所谓的二字节运算码规则来进行),其它的前置码101则使特殊运算重复执行,直至重复条件满足为止(即P运算码F0H、F2H及F3H)。(0031)现请参阅图2,其显示一表格200,用以描述一指令集架构的指令201如何对应至图1指令格式内一8位运算码字节102的位值。表格200呈现了一8位运算码图200的范例,其将一8位运算码项目102所具有的最多256个值,关联到对应的微处理器运算码指令201。表格200将运算码项目102的一特定值,譬如02H,映像至一对应的运算码指令201(即指令I02201)。在x86运算码图的例子中,为此领域中人所熟知的是,运算码值14H是映像至x86的进位累加(AddWithCarry,ADC)指令,此指令将一8位的直接(immediate)操作数加至架构缓存器AL的内含值。本领域的技术人员也将发觉,上文提及的x86前置码101(亦即66H、67H、0FH、F0H、F2H及F3H)是实际的运算码值201,其在不同脉络下,指定要将特定的架构延伸项应用于随后的运算码项目102所指定的运算。例如,在运算码14H(正常情况下,是前述的ADC运算码)前加上前置码0FH,会使得x86处理器执行一“解压缩与插入低压缩的单精度浮点值”(UnpackandInterleaveLowPackedSingle-PrecisionFloating-pointValues)运算,而非原本的ADC运算。诸如此x86例子所述的特征,在现代的微处理器中是部分地致能,此因微处理器内的指令转译/译码逻辑是依序解译一指令100的项目101-103。所以在过去,于指令集架构中使用特定运算码值作为前置码101,可允许微处理器设计者将不少先进的架构特征纳入兼容旧有软件的微处理器的设计中,而不会对未使用那些特定运算码状态的旧有程序,带来执行上的负面冲击。例如,一未曾使用x86运算码0FH的旧有程序,仍可在今日的x86微处理器上执行。而一较新的应用程序,借着运用x86运算码0FH作为前置码101,就能使用许多新进纳入的x86架构特征,如单一指令多重数据(SIMD)运算,条件移动运算等等。(0032)尽管过去已通过指定可用/多余的运算码值201作为前置码101(也称为架构特征标记/指针101或逸出指令101),来提供架构特征,但许多指令集架构100在提供功能上的强化时,仍会因为一非常直接的理由,而碰到阻碍所有可用/多余的运算码值已被用完,也就是,运算码图200中的全部运算码值已被架构化地指定。当所有可用的值被分派为运算码项目102或前置码项目101时,就没有剩余的运算码值可作为纳入新特征之用。这个严重的问题存在于现在的许多微处理器架构中,因而迫使设计者得在增添架构特征与保留旧有程序的兼容性两者间作抉择。(0033)值得注意的是,图2所示的指令201是以一般性的方式表示(亦即I24、I86),而非具体指涉实际的运算(如进位累加、减、异或)。这是因为,在一些不同的微处理器架构中,完全占用的运算码图200在架构上,已将纳入较新进展的可能性排除。虽然图2例子所提到的,是8位的运算码项目102,本领域的技术人员仍将发觉,运算码102的特定大小,除了作为一特殊情况来讨论完全占用的运算码结构200所造成的问题外,其它方面与问题本身并不相干。因此,一完全占用的6位运算码图将有64个可架构化地指定的运算码/前置码201,并将无法提供可用/多余的运算码值作为扩充之用。(0034)另一种替代做法,则并非将原有指令集完全废弃,以一新的格式100与运算码图200取代,而是只针对一部份既有的运算码201,以新的指令意含取代,如图2的运算码40H至4FH。以这种混合的技术,微处理器就可以单独地以下列两种模式的一运作其中旧有模式利用运算码40H·4FH,是依旧有规则来解译,或者以另一种改良模式(enhancedmode)运作,此时运算码40H-4FH则依加强的架构规则来解译。此项技术确能允许设计者将新特征纳入设计,然而,当符合旧有规格的微处理器于加强模式运作时,缺点仍旧存在,因为微处理器不能执行任何使用运算码40H-4FH的应用程序。因此,站在保留旧有软件兼容性的立场,兼容旧有软件/加强模式的技术,还是无法接受的。(0035)然而,对于运算码空间已完全占用的指令集200,且该空间涵盖所有于符合旧有规格的微处理器上执行的应用程序的情形,本案发明人已注意到其中运算码201的使用状况,且他们亦观察出,虽然有些指令202是架构化地指定,但未用于能被微处理器执行的应用程序中。图2所述的指令IF1202即为此现象的一例。事实上,相同的运算码值202(亦即F1H)是映像至未用于x86指令集架构的一有效指令202。虽然该未使用的x86指令202是有效的x86指令202,其指示要在x86微处理器上执行一架构化地指定的运算,但它却未使用于任何能在现代x86微处理器上执行的应用程序。这个特殊的x86指令202被称为电路内模拟断点(InCircuitEmulationBreakpoint)(亦即ICEBKPT,运算码值为F1H),之前都是专门使用于一种现在已不存在的微处理器模拟设备中。ICEBKPT202从未用于电路内模拟器之外的应用程序中,并且先前使用ICEBKPT202的电路内模拟设备已不复存在。因此,在x86的情形下,本案发明人已在一完全占用的指令集架构200内发现一样工具,借着利用一有效但未使用的运算码202,以允许在微处理器的设计中纳入先进的架构特征,而不需牺牲旧有软件的兼容性。在一完全占用的指令集架构200中,本发明利用一架构化地指定但未使用的运算码202,作为一指针标记,以指出其后的一n位前置码,因此允许微处理器设计者可将最多2n个最新发展的架构特征,纳入微处理器的设计中,同时保留与所有旧有软件完全的兼容性。(0036)本发明借提供一n位的延伸地址大小指定元前置码,以使用前置码标记/延伸前置码的概念,因而可允许程序员在一微处理器中,依据每个指令指定一延伸地址模式予一对应的运算。该延伸地址模式是用以取代该微处理器的既有指令集架构所支持的既有地址模式。本发明现将参照图3至9进行讨论。(0037)现请参阅图3,其为本发明的延伸指令格式300的方块图。与图1所讨论的格式100非常近似,该延伸指令格式300具有数量可变的指令项目301-305,每一项目设定为一特定值,集合起来便组成微处理器的一特定指令300。该特定指令300指示微处理器执行一特定运算,像是将两操作数相加,或是将一操作数从存储器搬移至微处理器的缓存器内。一般而言,指令300的运算码项目302指定了所要执行的特定运算,而选用的地址指定元项目303则位于运算码302后,以指定该特定运算的相关附加信息,像是如何执行该运算、操作数所处的缓存器,用于计算该运算的地址的位移量等等。指令格式300亦允许程序员在一运算码302前加上前置码项目301。在运算码302所指定的特定运算执行时,前置码项目301是用来指示是否要使用既有的架构特征。(0038)然而,本发明的延伸指令300是前述图1指令格式100的一超集(superset),其具有两个附加项目304与305,可被选择性作为指令延伸项,并置于一格式化延伸指令300中所有其余项目301一303之前。这两个附加项目304与305可让程序员能在一符合旧有规格的微处理器内,指定一延伸地址模式,以依据该延伸地址模式计算一延伸地址,其中该延伸地址模式是无法另由该符合旧有规格微处理器的既有指令集来加以程序化。这两个附加项目304与305可将较大的虚拟存储器空间纳入一具有已完全占用的指令集架构的微处理器设计中。选用项目304与305是一延伸指令标记304与一延伸地址大小指定元前置码305。该延伸指令标记304是一微处理器指令集内另一依据架构所指定的运算码。在一x86的实施例中,该延伸指令标记304,或称逸出标记304,是用运算码状态FIH,其为早先使用的ICEBKPT指令。逸出标记304向微处理器逻辑指出,该延伸前置码305,或称延伸特征指定元305,是跟随在后,其中该延伸前置码305指定了对应于一指定运算的一虚拟地址大小或地址模式。在一具体实施例中,逸出标记304指出,一对应延伸指令300的附随部分301-303及305指定了微处理器所要执行的一延伸运算。延伸地址大小指定元305,或称延伸前置码305,对于一指定运算执行时的相关地址的产生,指定了相对应的数个地址模式其中之一。微处理器内的延伸地址逻辑依据该指定的地址模式,产生一延伸地址,以于执行该延伸运算时,存取虚拟存储器空间中的操作数。(0039)此处将本发明的延伸地址模式的技术作个概述。一延伸指令是组态为于一既有微处理器指令集中指定一延伸地址模式,其中该延伸地址模式无法另依该既有微处理器指令集来加以指定。该延伸指令包括该既有指令集的运算码/指令304其中的一以及一n位的延伸特征前置码305。所选取的运算码/指令作为一指针304,以指出指令300是一延伸特征指令300(亦即,其指定了微处理器架构的延伸项),该n位的特征前置码305则指出该延伸地址模式。在一具体实施例中,延伸前置码305具有八位,最多可指定256种不同的地址模式,或延伸地址模式与其它延伸特征的组合。n位前置码的实施例,则最多可指定2n种不同的地址模式。在另一实施例中,提供64位的地址模式,以取代符合旧有规格微处理器中预设的地址模式(如32位或16位)。因此,在对应的运算执行时,延伸地址逻辑即产生一64位的虚拟地址,其中计算该虚拟地址所需的操作数是通过一64位的缓存器档案提供,或是利用延伸指令中的额外地址指定元,以直接的64位位移量来提供。在另一实施例中,则更允许程序员指定64位、128位、256位、512位或1024位的地址模式,用于一相关的地址计算。(0040)现请参阅图4,一表格400显示依据本发明,延伸地址模式如何映像至一8位延伸前置码实施例的位逻辑状态。类似于图2所讨论的运算码图200,图4的表格400呈现一8位的延伸地址模式前置码图400的范例,其将一8位延伸前置码项目305的最多256个值,关联到一符合旧有规格的微处理器的对应延伸地址模式401(如E34、E4D等)。在一x86的具体实施例中,本发明的8位延伸特征前置码305是提供给地址模式401(亦即E00-EFF)之用,该些地址模式401乃现行x86指令集架构所未能提供的。(0041)图4所示的延伸特征401是以一般性的方式表示,而非具体指涉实际的特征,此因本发明的技术可应用于各种不同的架构延伸项401与特定的指令集架构。本领域的技术人员将发觉,许多不同的架构特征401,其中一些已于上文提及,可依此处所述的逸出标记304/延伸前置码305技术将其纳入一既有的指令集。图4的8位前置码实施例提供了最多256个不同的特征401,而一n位前置码实施例则具有最多2n个不同特征401的程序化选择。(0042)现请参阅图5,其为解说本发明用以执行延伸地址模式运算的流水线化微处理器500的方块图。微处理器500具有三个明显的阶段类型提取、转译及执行。提取阶段具有提取逻辑501,可从指令高速缓存502或外部存储器502提取指令。所提取的指令经由指令队列503送至转译阶段。转译阶段具有转译逻辑504,耦接至一微指令队列506。转译逻辑504包括延伸转译逻辑505。执行阶段则有执行逻辑507,其内具有延伸执行逻辑508。(0043)依据本发明,于运作时,提取逻辑501从指令高速缓存/外部存储器502提取格式化指令,并将这些指令依其执行顺序放入指令队列503中。接着从指令队列503提取这些指令,送至转译逻辑504。转译逻辑504将每一送入的指令转译/译码为一对应的微指令序列,以指示微处理器500去执行这些指令所指定的运算。依本发明,延伸转译逻辑505检测那些具有延伸前置码标记的指令,进行对应延伸地址模式指定元前置码的转译/译码,以及依据所指定的延伸地址模式,译码地址指定元项目。在-x86的实施例中,延伸转译逻辑505组态为检测其值为F1H的延伸前置码标记,其是x86的ICEBKPT运算码。延伸微指令字段则提供于微指令队列506中,以对于延伸执行逻辑508进行地址计算所需的延伸地址模式。操作数以及位移量加以指定。(0044)微指令从微指令队列506被送至执行逻辑507,其中延伸执行逻辑508组态为依照该延伸微指令字段所指定的地址模式,存取内部的微处理器缓存器。数个指定要用于执行一指定运算的地址操作数(若有需要),则从缓存器中提取。延伸执行逻辑508依据所指定的延伸地址模式,使用缓存器/位移操作数,以产生对应大小的延伸地址,并执行微指令所指定的存储器存取及/或运算。(0045)本领域的技术人员将发现,图5所示的微处理器500是现代的流水线化微处理器50经过简化的结果。事实上,现代的流水线化微处理器500最多可包括有20至30个不同的流水线阶段。然而,这些阶段可概括地归类为方块图所示的三个阶段,因此,图5的方块图500可用以点明前述本发明实施例所需的必要组件。为了简明起见,微处理器500中无关的组件并未显示出来。(0046)现请参阅图6,其为本发明用于指定一微处理器延伸地址模式的延伸前置码600的一具体实施例的方块图。延伸地址模式指定元前置码600具8位大小,包括一地址模式字段601与一备用字段602。在一具体实施例中,地址模式字段601的值指定了用以产生对应一指定运算的延伸地址的一延伸地址模式,其中该指定运算及用以产生该延伸地址的操作数,是由本发明的延伸指令的其余部分所指定,如此处所述。在一x86的实施例中,该延伸地址模式(如64位的虚拟地址)被指定以取代一预设的地址模式(如32位的虚拟地址)。(0047)在图6的本发明延伸前置码600的实施范例中,一4位的地址模式字段601是用于指定一延伸地址模式。然而,本领域技术人员将察觉,指定数个延伸地址模式其中之一所需的位数,是依该些延伸地址模式的数量而定。因此,一个能够指定64位、128位、256位、512位或1024位地址模式的实施例,需要一3位的地址模式字段601来区分此五种模式。所以,前置码600的其余位便可作为一备用字段602,或用于指定该既有指令集架构所无法提供的其它延伸特征。(0048)现请参阅图7,其为图5的微处理器内转译阶段逻辑700的具体的方块图。转译阶段逻辑700具有一指令缓冲器704,依本发明,其提供延伸指令至转译逻辑705。转译逻辑705是耦接至一具有一延伸特征字段703的机器特定缓存器(machinespecificregister)702。转译逻辑705具一转译控制器706,其提供一除能信号707至一逸出指令检测器708及一延伸译码器709。逸出指令检测器708耦接至延伸译码器709及一指令译码器710。延伸译码器709与指令译码逻辑710存取一控制只读存储器(ROM)711,其中储存了对应至某些延伸指令的样板(template)微指令序列。转译逻辑705亦包括一微指令缓冲器712,其具有一运算码延伸项字段713、一微运算码字段714、一目的字段715、一来源字段716以及一位移字段717。位移字段717的大小,则设定为可容纳与最多地址位数的延伸地址模式相同大小的位移值。(0049)运作上,在微处理器通电激活期间,机器特定缓存器702内的延伸字段703的状态是通过信号激活状态(signalpower-upstate)701决定,以指出该特定微处理器是否能转译与执行本发明之用以提供微处理器的延伸地址模式的延伸指令。在一具体实施例中,信号701从一特征控制缓存器(图上未显示)导出,该特征控制缓存器则读取一于制造时即已组态的熔丝数组(fusearray)(未显示)。机器特定缓存器702将延伸特征字段703的状态送至转译控制器706。转译控制逻辑706则控制从指令缓冲器704所提取的指令,要依照延伸转译规则或常用转译规则进行解译。提供这样的控制特征,可允许监督应用程序(如BIOS)致能/除能微处理器的延伸执行特征。若延伸特征被除能,则具有被选为延伸特征标记的运算码状态的指令,将依常用转译规则进行转译。在一x86的具体实施例中,选取运算码状态F1H作为标记,则在常用的转译规则下,遇到F1H将造成不合法的指令异常(exception)。若延伸转译被除能,指令译码器710将转译/译码所有送入的指令,并对微指令712的所有字段713至717进行组态。然而,在延伸转译规则下,若遇到标记,则会被逸出指令检测器708检测出来。逸出指令检测器708因而指示指令译码器710依据延伸转译规则,转译/译码该延伸指令的其余部分,并对微指令712的微运算码字段714,来源字段716。目的字段715以及位移字段717进行组态。延伸译码器709则译码/转译该延伸前置码,以对微运算码延伸项字段713进行组态。某些特定指令将导致对控制ROM711的存取,以获取对应的微指令序列样板。经过组态的微指令712被送至一微指令队列(未显示于图中),由处理器进行后续执行。(0050)现请参阅图8,其为图5微处理器内的延伸执行阶段逻辑800的方块图。该延伸执行阶段逻辑800具一延伸地址逻辑(extendedaddresslogic)804,其从一微指令缓冲器801提取本发明的延伸微指令。延伸地址逻辑804具一延伸线性地址产生器(extendedlinearaddressgenerator)806,耦接至一节区描述符表(segmentdescriptortable)808。延伸地址逻辑804内的节区选取元(segmentselector)807耦接至节区描述符表808,以检索节区描述符表808内一特定的节区描述符809。对应一现行线性(亦即虚拟)地址的计算的节区基地址(segmentbaseaddress)BASEADDR从所检索的节区描述符809输出,并被送至线性地址产生器806。一偏移缓冲器805亦被输入至线性地址产生器806。线性地址产生器806则将一线性地址输出至较高与较低线性地址缓冲器813、812。(0051)关于本发明的执行阶段运作的细节,此处是以一节区化的x86实施例进行讨论,然而,本领域技术人员将发觉,本发明所提出的执行阶段细节与产生虚拟地址的技术,并不仅限于与x86架构相关者。对于其它使用些许不同的技术以计算虚拟地址的架构,此处所讨论的原理一样能应用于这些技术。(0052)在进行转译后,随着微指令与一微处理器时钟信号(未显示)同步,被送入流水线,通过循序执行流水线阶段,与该微指令相关的操作数从一缓存器档案(未显示)被提取,并连同缓冲器801中一相关延伸微指令被送至操作数输入缓冲器802、803。该延伸微指令与操作数被送至延伸地址逻辑804,以用于延伸线性地址的计算中(若有需要)。依据该延伸微指令内运算码的指定,延伸地址逻辑804被指示要使用缓冲器802与803中的操作数及该延伸微指令所提供的位移字段(未显示)的组合,以产生一偏移量(或有效地址)。该偏移量是由一偏移缓冲器805提供。在一节区化的虚拟存储器系统,像是x86实施例800所显示的,偏移量805是一应用程序有效地计算出来,用以存取存储器的存储器地址。因此,偏移缓冲器805的大小是依所提供的延伸地址模式的大小来决定,以支持有效地址的计算。在一64位延伸地址的实施例中,提供了一64位的偏移缓冲器805,如范例所示。对一1024位的延伸地址实施例而言,则需要一1024位的偏移缓冲器805。(0053)节区基地址BASEADDR一般是依照所指定的地址模式,使用布尔运算加上计算所得的有效地址,以产生一线性地址,送至线性地址缓存器812与813。因此,节区选取元缓冲器807被组态为依据一相关操作系统的要求,允许虚拟存储器的区域被节区化。在图8所示的实施例中,节区选取元缓冲器807与节区描述符表808的设计与运作,是与既有x86架构常用规则所使用的地址大小一致一32位的节区基地址BASEADDR被送至地址产生器806。然而,为符合一64位延伸地址的实施例,32位的BASEADDR与一64位的偏移量加总,以求得一64位的线性地址,其中较低的32位被送至线性地址缓冲器812,较高的32位则被送至线性地址缓冲器813。未延伸既有架构的地址模式的微指令,则产生仅送至较低线性地址缓冲器812的线性地址。与流水线时钟同步,该线性地址延伸微指令以及操作数被送入缓冲器813与812、814、811以及810,供执行逻辑的下一阶段提取。(0054)现请参阅图9,其为描述本发明对可让程序员指定微处理器的延伸地址模式的指令,进行转译与执行的方法的运作流程图900。流程开始于方块902,其中一个组态有延伸特征指令的程序,被送至微处理器。流程接着进行至方块904。(0055)于方块904中,下一个指令是从高速缓存/外部存储器提取。流程接着进行至判断方块906。(0056)于判断方块906中,对在方块904中所提取的下个指令进行检查,以判断是否包括一本发明的延伸逸出码。在一x86的实施例中,该检查是用以检测运算码值F1(ICEBKPT)。若检测到该延伸逸出码,则流程进行至方块908。若未检测到该延伸逸出码,则流程进行至方块912。(0057)于方块908中,译码/转译该延伸指令的延伸前置码部分,以决定被指定用以产生运算相关地址的一延伸地址模式。流程接着进行到方块910。(0058)于方块910中,现行运算所用的该延伸地址模式被指定于一对应微指令序列的延伸项字段。流程接着进行至方块912。(0059)于方块912中,该指令的所有其余部分被译码/转译,以决定该指定运算、操作数与位移量(用于计算常用或延伸地址与作为该运算的操作数)所处的缓存器位置,以及是否使用该既有指令集架构的前置码所指定的既有架构特征。流程接着进行至方块914。(0060)于方块914中,一微指令序列被组态为指定该指定运算及其对应的运算码延伸项。流程接着进行至方块916。(0061)于方块916中,该微指令序列被送至一微指令队列,由微处理器执行。流程接着进行至方块918。(0062)于方块918中,该微指令序列由本发明的一延伸地址逻辑进行提取。该延伸地址逻辑依据所指定的地址模式,使用所提供的缓存器操作数及/或位移量,产生该地址。该地址的大小是依该微指令序列内所指定的地址模式(即常用或延伸)而定。流程接着进行至方块920。(0063)于方块920中,延伸执行逻辑执行该指定运算,以产生结果。流程接着进行至方块922。(0064)于方块922中,本方法完成。(0065)虽然本发明及其目的、特征与优点已详细叙述,其它实施例亦可包括在本发明的范围内。例如,本发明已就如下的技术加以叙述利用已完全占用的指令集架构内一单一。未使用的运算码状态作为标记,以指出其后的延伸特征前置码。但本发明的范围就任一方面来看,并不限于已完全占用的指令集架构,或未使用的指令,或是单一标记。相反地,本发明涵盖了未完全映像的指令集。具已使用运算码的实施例以及使用一个以上的指令标记的实施例。例如,考虑一没有未使用运算码状态的指令集架构。本发明的一具体实施例包括了选取一作为逸出标记的运算码状态,其中选取标准是依市场因素而决定。另一具体实施例则包括使用运算码的一特殊组合作为标记,如运算码状态7FH的连续出现。因此,本发明的本质是在于使用一标记序列,其后则为一n位的延伸前置码,可允许程序员于一延伸指令中指定延伸地址模式,而该些模式是无法另由微处理器指令集的既有指令来提供。(0066)此外,本发明主要是以64位的延伸地址模式来进行描述。然而,这个模式仅仅是用来在现代桌上型/膝上型计算机微处理器所展现的地址模式的脉络下,说明本发明的各个面向。所以本领域技术人员将知道,本发明的范围可以延伸至使用非常大或小的地址或奇数个位的地址的应用程序,或者具有可变大小的地址的应用程序,其中一特定地址的大小是依据每个指令来指定。(0067)另外,虽然此处主要是以节区化虚拟地址的架构,其为现代多数的桌上型/膝上型计算机架构所使用,来讨论本发明,但本领域技术人员将发觉,此处所述的原理与技术同样适用于平滑(flat)存储器寻址结构,其直接产生应用程序内的实体地址。(0068)再者,虽然上文是利用微处理器为例来解说本发明及其目的。特征和优点,本领域的技术人员仍可察觉,本发明的范围并不限于微处理器的架构,而可涵盖所有形式的可程序化装置,如信号处理器,工业用控制器(industrialcontroller)、阵列处理机及其它同类装置。总之,以上所述仅为本发明的较佳实施例而已,当不能以的限定本发明所实施的范围。大凡依本发明权利要求所作的等效变化与修饰,皆应仍属于本发明专利涵盖的范围内。权利要求1.一种用以延伸一微处理器的地址模式的装置,其特征在于,它包括一转译逻辑,用以将一延伸指令转译成一相关的微指令序列,由该微处理器执行,其中该延伸指令包括一延伸前置码,用以指定对应一运算的地址计算的一延伸地址模式,其中该延伸地址模式不能由一既有指令集加以指定;以及一延伸前置码标记,用以指出该延伸前置码,其中该延伸前置码标记是原本该既有指令集内另一依据架构所指定的运算码;以及一延伸执行逻辑,耦接至该转译逻辑,用以接收该相关的微指令序列,并依据该延伸地址模式执行该地址计算,以产生一延伸地址。2.如权利要求1所述的装置,其特征在于所述的延伸指令还包括该既有指令集的指令项目。3.如权利要求2所述的装置,其特征在于所述的指令项目指定该微处理器所要执行的该运算,且其中该延伸地址模式是数个额外的地址模式其中之一。4.如权利要求1所述的装置,其特征在于所述的延伸前置码指示该微处理器于执行该运算时,取代该地址计算所使用的一预设的地址模式。5.如权利要求1所述的装置,其特征在于所述的延伸前置码包括一延伸地址模式字段,用以指定用于该延伸地址的计算的该延伸地址模式,其中该延伸地址模式包括数个地址大小之一。6.如权利要求1所述的装置,其特征在于所述的转译逻辑包括一逸出指令检测逻辑,用于检测该延伸前置码标记;一指令译码逻辑,用以决定所要执行的该运算;以及一延伸译码逻辑,耦接至该逸出指令检测逻辑与该指令译码逻辑,用以决定该延伸地址模式,并于该相关微指令序列内指定该延伸地址模式。7.一种扩充一既有微处理器指令集以提供附加的地址模式的机制,其特征在于,它包括一延伸指令,组态为指定一延伸地址模式,用于对应一指定运算的一地址的计算,其中该延伸指令包括该既有微处理器指令集其中一选取的运算码,其后则接着一n位的延伸前置码,该选取的运算码指出该延伸指令,而该n位的延伸前置码则指出该延伸地址模式,其中该延伸地址模式不能另依该既有微处理器指令集加以指定;以及一转译器,组态为接收该延伸指令,并产生一微指令序列,以指示一微处理器计算该地址,该计算动作为执行该指定运算的一部份,其中该地址是依照该延伸地址模式计算而得。8.如权利要求7所述的机制,其特征在于所述的延伸指令还包括其余指令项目,组态为指定该指定运算与一用于计算该地址的地址成分,其中该地址成分是依该延伸位指模适用于计算该地址。9.如权利要求7所述的机制,其特征在于所述的n位的前置码包括一地址模式取代字段,组态为指定用以产生该地址的该延伸地址模式,其中该延伸地址模式包括数个地址模式其中之一。10.如权利要求7所述的机制,其特征在于所述的转译器包括一逸出指令检测器,用以检测该延伸指令内的该选取的运算码;一指令译码器,用以译码该延伸指令的其余部分,以决定该指定运算;以及一延伸前置码译码器,耦接至该逸出指令检测器及该指令译码器,用以译码该n位的延伸前置码,并于该微指令序列内指定该延伸地址模式。11.一种为一既有指令集增添延伸地址模式能力的指令集延伸模块,其特征在于,它包括一逸出标记,由一转译逻辑接收,并指出一对应指令的附随部分是指定了一微处理器所要执行的一延伸运算,其中该逸出标记为该既有指令集内的一第一运算码;一延伸地址模式指定元,耦接至该逸出标记,且为该附随部分其中之一,用以指定对应该延伸运算的数个地址模式其中之一;以及一延伸执行逻辑,耦接至该转译逻辑,利用所指定的地址模式执行该延伸运算,其中该既有指令集仅提供既有的地址模式,而未能提供所指定的地址模式。12.如权利要求11所述的指令集延伸模块,其特征在于所述的附随部分的其余部分包括一第二运算码与选用的数个地址指定元,用以指定该延伸运算与数个地址操作数,其中该些地址操作数是依所指定的地址模式用于产生一延伸地址。13.如权利要求11所述的指令集延伸模块,其特征在于所述的转译逻辑将该逸出标记与该附随部分转译成对应的微指令,该对应的微指令是指示该延伸执行逻辑依据所指定的地址模式,于该延伸运算执行时,产生一地址。14.如权利要求11所述的指令集延伸模块,其特征在于所述的转译逻辑包括一逸出标记检测逻辑,用以检测该逸出标记,并指示该附随部分的转译动作需依据延伸转译常规(conventions);以及一译码逻辑,耦接至该逸出标记检测逻辑,用以依据该既有指令集的常规,执行指令的转译动作,并依据该延伸转译常规执行该对应指令的转译,以依据所指定的地址模式,致能该延伸运算的执行。15.一种扩充一既有指令集架构的方法,可在一微处理器内程序化地指定一延伸地址模式,其特征在于,该方法包括提供一延伸指令,该延伸指令包括一延伸标记及一延伸前置码,其中该延伸标记是该既有指令集架构其中一第一运算码项目;通过该延伸前置码与该延伸指令的其余部分指定该延伸地址模式与一指定运算,其中该既有指令集架构独特地提供指定非该延伸地址模式的地址模式的指令;以及依据该延伸地址模式执行该指定运算。16.如权利要求15所述的方法,其特征在于所述的指定延伸地址模式的动作包括首先指定该指定运算,其中该首先指定的动作包括使用该既有指令集架构中一第二运算码项目。17.如权利要求15所述的方法,其特征在于,还包括将该延伸指令转译成一微指令序列,该微指令序列是指示一延伸执行逻辑依据该延伸地址模式产生一延伸地址,并应用该延伸地址执行该延伸运算。18.如权利要求17所述的方法,其特征在于所述的转译延伸指令的动作包括于一转译逻辑内,检测该延伸标记;以及依照延伸转译规则译码该延伸前置码与该延伸指令的其余部分,以取代用于该延伸运算的一预设地址模式。19.如权利要求15所述的方法,其特征在于所述的指定延伸地址模式的动作包括指定下列地址模式其中之一,作为该延伸地址模式64位、128位、256位、512位、1024位。全文摘要本发明涉及一种装置及方法,用于扩充一微处理器指令集,以提供更大的地址。该装置包括一转译逻辑与一延伸执行逻辑。该转译逻辑将一延伸指令转译成一相关的微指令序列,由该微处理器执行,其中该延伸指令具有一延伸前置码与一延伸前置码标记。该延伸前置码指定一延伸地址模式,用于一运算所对应的地址计算;其中该延伸地址模式是无法由一即有指令集加以指定。该延伸前置码标记则指出该延伸前置码,且是原本该即有指令集内另一依据架构所指定的运算码。该延伸执行逻辑耦接至转译逻辑,用以接收该相关的微指令序列,并依据该延伸地址模式执行该地址计算,以产生一延伸地址。文档编号G06F9/22GK1431585SQ03103039公开日2003年7月23日申请日期2003年1月28日优先权日2002年8月22日发明者G·葛兰·亨利,罗德·E·胡克,泰瑞·派克斯申请人:智慧第一公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1