非暂存存储器参照的控制机制的制作方法

文档序号:6439933阅读:158来源:国知局

专利名称::非暂存存储器参照的控制机制的制作方法
技术领域
:(0003)本发明是有关微电子的领域,尤指一种能将指令层次的非暂存(non-temporal)存储器属性控制纳入一既有的微处理器指令集架构的技术。(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)一个现在微处理器设计者所关心的问题领域是应用程序如何有效率地使用高速缓存结构。随着快取技术的演进,已提供越来越多的特征,其允许系统程序员可控制一系统中高速缓存何时及如何被使用。早期的快取控制特征仅提供开/关的能力,通过设定微处理器的一内部缓存器,或通过将其封装体(package)上的某外部信号脚位设为真,设计者可将存储器的快取致能,或将整个存储器空间设定为不可快取(uncacheable)。对于不可快取的存储器参照(memoryreference)(即加载/读取与储存/写入),则皆送至系统存储器总线,而产生与外在总线架构相同的等待时间(latency)。相反地,存储器对于一高速缓存的参照或存取,只有在一快取未中(cachemiss)发生时(亦即,一存储器参照的目标在内部高速缓存内并非有效),才被送至系统存储器总线。快取特征使得应用程序在执行速度上大幅提升,特别是应用程序对存储器中相同的数据结构进行重复参照时。(0010)最近微处理器架构上的改良,使得系统设计者能更精确地控制如何使用快取特征。这些改良允许设计者在一微处理器的地址空间内,对于其中一段地址区间,就微处理器如何依快取层级体(cachehierarchy)是执行对该地址区间的参照,设定该地址区间的性质。一般而言,对该地址区间的参照可被设定为不可快取。复合写入(writecombining)、写透(writethrough)、回写(writeback)或写入保护(writeprotected)。这些性质称为存储器属性(attribute),或存储器特性(trait)。因此,对具有回写属性的地址的储存参照,会被送至高速缓存,并假想地(speculatively)分派至其中的储存位置。对具有不可快取属性的另一地址的储存参照,则送至系统总线,且不会被假想执行(speculativelyexecuted)。(0011)不过,对于存储器属性及特定属性如何由微处理器借其高速缓存加以处理,提供一深度的说明,则不在本申请案的范围内。此处去了解本
技术领域
目前所能使设计者指派一存储器属性予一存储器域,以及所有后续对该区域内地址的存储器参照,将依据关联于该指定存储器属性的快取原则(ccachepolicy)来处理,如此即已足够。(0012)虽然现代的微处理器设计允许存储器的不同区域被赋予不同的存储器特性,但在两个重要方面,设计上仍受限制。第一,微处理器指令集架构限制了用以定义/改变存储器特性至使用者层级(user-level)的应用程序所无法存取的一(privilege)层级的指令执行。因此,当一桌上型/膝上型微处理器激活时,其操作系统在任何使用者层级应用程序开启前,便将虚拟存储器空间的存储器特性建立好。因而使用者层级的应用程序便不能改变主机系统的存储器特性。第二,在现代的微处理器中,用来建立存储器特性的最佳处理层级为分页层级。在常用的允许存储器分页(memorypaging)的架构中,每一存储器分页的存储器属性,由操作系统在分页目录/表(pagedirectory/tabie)的项目内作设定。因此,所有对于一特定分页内地址的参照,将使用于该相关存储器存取运算执行时所赋予的存储器属性。(0013)对许多应用程序而言,上述的控制特征虽可让使用者层级的应用程序明显加快其执行速度,但本案发明人注意到,就其它的应用程序而言其效果仍是有限的。这除了因为在使用者层级上,并无法应用现代的存储器特性控制特征,也因为存储器属性仅能依分页层级(page-level)的单位来建立。例如,一个对一第一数据结构作重复存取的使用者程序,在对一第二数据结构进行一偶发的参照时,若第一数据结构的快取项目必须清除,以空出高速缓存的空间供第二数据结构使用,则该使用者程序的执行效率会因而受到影响。由于操作系统并未预知使用者层级的应用程序对于数据结构的参照频率,应用程序的数据空间一般皆被赋予一回写特性,因而促成了前述冲突的产生条件。程序员并没有用来更改数据空间特性的工具,以强迫该偶发参照转送至存储器总线(例如,赋予不可快取的特性给该第二数据结构),而排除该冲突。(0014)在此
技术领域
里,应用程序所重复存取的数据被称为暂存数据(temporaldata),而偶然存取的数据则称为非暂存数据(non-temporaldata)。本领域的技术人员将发觉,一高速缓存若填满了非暂存数据(亦即快取污染(cachepollution)),将是非常不利的。因此,最近的技术已进展到可于既有的指令集中,增加一组有限的非暂存储存指令,以允许应用程序设计者将数据从内部缓存器移至存储器,而不会造成高速缓存的污染,然而,现在并没有适用的工具可让程序员将一既有指令(例如,指定一使用一个或更多操作数的算术或逻辑运算的指令)所指定的存储器参照以非暂存方式执行,因而完全跳过高速缓存的存取。(0015)因此,我们所需要的是,一种可将指令层级的非暂存存储器参照控制特征纳入既有微处理器指令集架构的装置及方法,其中该指令集架构是被已定义的运算码完全占用,且纳入该存储器参照控制特征能让一符合旧有规格的微处理器保留执行旧有应用程序的能力,同时还提供程序员指定非暂存存储器存取的能力。(0017)本发明的一个目的在于提出一种扩充既有指令集以提供指令层级的非暂存存储器存取控制的微处理器机制。该微处理器机制具有一延伸指令与一转译器(translator)。该延伸指令指定一存储器参照的非暂存存取。该延伸指令包括该既有指令集其中一选取的运算码,其后则接着一n位的延伸前置码。该选取的运算码指出该延伸指令,而该n位的延伸前置码则指出该非暂存存取。该存储器参照的非暂存存取不能另依该既有指令集的指令加以指定。该转译器接收该延伸指令,并产生一微指令序列,以指示微处理器通过该非暂存存取执行该存储器参照。(0018)本发明的另一目的在于提出一种为既有指令集增添指令层级的非暂存存取控制特征的模块。该模块包括一逸出标记(escapetag)、一非暂存存取指定元(non-temporalaccessspecifier)及一延伸执行逻辑。该逸出标记由一转译逻辑接收,并指出一对应指令的附随部分是指定了一存储器参照,其中该逸出标记为该既有指令集内的一第一运算码。该非暂存存取指定元耦接至该逸出标记,且为该附随部分其中之一,指定用于执行该存储器参照的一非暂存存取。该延伸执行逻辑耦接至该转译逻辑,通过该非暂存存取执行该存储器参照。(0019)本发明的再一目的在于提供一种扩充既有指令集架构的方法,以于指令层级提供非暂存存储器参照的控制。该方法包括提供一延伸指令,该延伸指令包括一延伸标记及一延伸前置码,其中该延伸标记是该既有指令集架构其中一第一运算码项目;通过该延伸前置码指定要应用于一对应存储器参照的一非暂存存取,其中该存储器参照是由该延伸指令的其余部分所指定;以及应用该非暂存存取以执行该存储器参照,其中该应用动作排除了该存储器参照的相关数据的快取动作。714微运算码字段715目的字段716来源字段717位移字段800延伸执行阶段逻辑801微指令缓冲器802地址缓冲器803地址缓冲器804目的操作数缓冲器805延伸存取逻辑806存储器特性描述符807高速缓存808总线单元809存取控制器810储存逻辑811加载逻辑812总线813总线814延伸微指令缓存器815来源操作数缓冲器816非暂存加载缓冲器817复合写入缓冲器900~932控制微处理器中的非暂存存储器参照的方法的运作流程(0031)前文已针对今日的微处理器内,如何扩充其架构特征,以超越相关指令集能力的技术,作了背景的讨论。有鉴于此,在图1与图2中,将讨论一相关技术的例子。此处的讨论强调了微处理器设计者所一直面对的两难,即一方面,他们想将最新开发的架构特征纳入微处理器的设计中,但另一方面,他们又要保留执行旧有应用程序的能力。在图1至2的例子中,一完全占用的运算码图,已把增加新运算码至该范例架构的可能性排除,因而迫使设计者要不就选择将新特征纳入,而牺牲某种程度的旧有软件兼容性,要不就将架构上的最新进展一并放弃,以便维持微处理器与旧有应用程序的兼容性。在相关技术的讨论后,于图3至9,将提供对本发明的讨论。通过利用一既有但未使用的运算码作为一延伸指令的前置码标记,本发明可让微处理器设计者克服已完全使用的指令集架构的限制,除了提供程序员于指令层级指定一特定存储器参照的非暂存存储器存取的能力,同时也能保留执行旧有应用程序所需的所有特征。(0032)请参阅图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加以指定的运算如加、减、乘、布尔逻辑等)。(0033)图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)。(0034)现请参阅图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)运算、条件移动运算等等。(0035)尽管过去已通过指定可用/多余的运算码值201作为前置码101(也称为架构特征标记/指针101或逸出指令101),来提供架构特征,但许多指令集架构100在提供功能上的强化时,仍会因为一非常直接的理由,而碰到阻碍所有可用/多余的运算码值已被用完,也就是,运算码图200中的全部运算码值已被架构化地指定。当所有可用的值被分派为运算码项目102或前置码项目101时,就没有剩余的运算码值可作为纳入新特征之用。这个严重的问题存在于现在的许多微处理器架构中,因而迫使设计者得在增添架构特征与保留旧有程序的兼容性两者间作抉择。(0036)值得注意的是,图2所示的指令201是以一般性的方式表示(亦即I24、I86),而非具体指涉实际的运算(加进位累加、减、异或)。这是因为,在一些不同的微处理器架构中,完全占用的运算码图200在架构上,已将纳入较新进展的可能性排除。虽然图2例子所提到的,是8位的运算码项目102,本领域的技术人员仍将发觉,运算码102的特定大小,除了作为一特殊情况来讨论完全占用的运算码结构200所造成的问题外,其它方面与问题本身并不相干。因此,一完全占用的6位运算码图将有64个可架构化地指定的运算码/前置码201,并将无法提供可用/多余的运算码值作为扩充之用。(0037)另一种替代做法,则并非将原有指令集完全废弃,以一新的格式100与运算码图200取代,而是只针对一部份既有的运算码201,以新的指令意含取代,如图2的运算码40H至4FH。以这种混合的技术,微处理器就可以单独地以下列两种模式之一运作其中旧有模式利用运算码40H-4FH,是依旧有规则来解译,或者以另一种改良模式(enhancedmode)运作,此时运算码40H-4FH则依加强的架构规则来解译。此项技术确能允许设计者将新特征纳入设计,然而,当符合旧有规格的微处理器于加强模式运作时,缺点仍旧存在,因为微处理器不能执行任何使用运算码40H-4FH的应用程序。因此,站在保留旧有软件兼容性的立场,兼容旧有软件/加强模式的技术,还是无法接受的。(0038)然而,对于运算码空间已完全占用的指令集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个最新发展的架构特征,纳入微处理器的设计中,同时保留与所有旧有软件完全的兼容性。(0039)本发明通过提供一n位的延伸非暂存存取指定元前置码,以使用前置码标记/延伸前置码的概念,因而可允许程序员在一微处理器中,依据每个指令指定一非暂存存储器存取予一对应的存储器参照运算。在该对应的存储器参照运算执行时,该非暂存存储器存取被用于取代依照一预设属性所进行的基于高速缓存(cache-based)的存取,其中该预设属性是由操作系统程序先前建立的存储器特性描述符表/机制所指定。本发明现将参照图3至9进行讨论。(0040)现请参阅图3,其为本发明的延伸指令格式300的方块图6与图1所讨论的格式100非常近似,该延伸指令格式300具有数量可变的指令项目301-305,每一项目设定为一特定值,集合起来便组成微处理器的一特定指令300。该特定指令300指示微处理器执行一特定运算,像是将两操作数相加,或是将一操作数从存储器搬移至微处理器的缓存器内。一般而言,指令300的运算码项目302指定了所要执行的特定运算,而选用的地址指定元项目303则位于运算码302后,以指定该特定运算的相关附加信息,像是如何执行该运算、操作数所在的缓存器、用于计算来源/结果操作数的存储器地址的直接与间接数据等等。指令格式300亦允许程序员在一运算码302前加上前置码项目301。在运算码302所指定的特定运算执行时,前置码项目301是用来指示是否要使用既有的架构特征。(0041)然而,本发明的延伸指令300是前述图1指令格式100的一超集(superset),其具有两个附加项目304与305,可被选择性作为指令延伸项,并置于一格式化延伸指令300中所有其余项目301-303之前。这两个附加项目304与305可让程序员能对于延伸指令300所指定的存储器参照指定一非暂存存储器存取,其中对应于该存储器参照的该非暂存存储器存取是无法另由符合旧有规格微处理器的既有指令集来加以指定。选用项目304与305是一延伸指令标记304与一延伸非暂存指定元前置码305。该延伸指令标记304是一微处理器指令集内另一依据架构所指定的运算码。在一x86的实施例中,该延伸指令标记304,或称逸出标记304,是用运算码状态F1H,其为早先使用的ICEBKPT指令。逸出标记304向微处理器逻辑指出,该延伸前置码305,或称延伸特征指定元305,是跟随在后,其中该延伸前置码305指定了对应于一指定存储器参照(即一加载运算、一储存运算或两者)的一非暂存存取。在一具体实施例中,逸出标记304指出,一对应延伸指令300的附随部分301-303及305指定了微处理器所要执行的存储器参照。非暂存存取指定元305,或称延伸前置码305,则指定在一来源操作数加载运算、一目的操作数储存运算或以上两者中,需进行该非暂存存取。微处理器内的延伸执行逻辑便借着进行该非暂存存储器存取,来执行该存储器参照,以取代原先用其它方式所指定的可快取(cacheable)的预设存储器属性。这些其它方式包括使用现代微处理器架构所具有的控制缓存器位、存储器类型缓存器、分页表及其它类型的存储器属性描述符(descriptor)。(0042)此处将本发明的非暂存参照的控制技术作个概述。一延伸指令是组态为对一既有微处理器指令集的存储器参照指定一非暂存存储器存取;其中该存储器参照的非暂存存取无法另以该既有微处理器指令集的指令来加以指定。该延伸指令包括该既有指令集的运算码/指令304其中之一以及一n位的延伸前置码305。所选取的运算码/指令作为一指针304,以指出指令300是一延伸特征指令300(亦即,其指定了微处理器架构的延伸项),而该n位的特征前置码305则指出该非暂存存取是应用于一来源操作数、一目的操作数或以上两者。在一具体实施例中,延伸前置码305具八位的大小,可指定非暂存存取控制特征与其它最多64种延伸特征的组合。n位前置码的实施例,则除了非暂存存取控制特征外,最多还可指定其它2n-2种延伸特征。(0043)现请参阅图4,一表格400显示依据本发明,一指定存储器参照的非暂存存取控制特征如何映像至一8位延伸前置码实施例的位逻辑状态。类似于图2所讨论的运算码图200,图4的表格400呈现一8位的延伸前置码图400的范例,其将一8位延伸前置码项目305的最多256个值,关联到一符合旧有规格的微处理器的对应延伸特征401(如E34、E4D等),其中两个是指示进行非暂存存取。在一x86的具体实施例中,本发明的8位延伸特征前置码305是提供给非暂存存储器存取401(亦即E00-EFF)的指令层级控制之用,该些存储器特性401乃现行x86指令集架构于指令层级所未能指定的。(0044)图4所示的延伸特征401是以一般性的方式表示,而非具体指涉实际的特征,此固本发明的技术可应用于各种不同的架构延伸项401与特定的指令集架构。本领域的技术人员将发觉,许多不同的架构特征401,其中一些已于上文提及,可依此处所述的逸出标记304/延伸前置码305技术将其纳入一既有的指令集。图4之,8位前置码实施例提供了最多256个不同的特征401,而一n位前置码实施例则具有最多2n个不同特征401的程序化选择。(0045)现请参阅图5,其为描述本发明用以执行非暂存存储器参照运算的流水线化微处理器500的方块图。微处理器500具有三个明显的阶段类型提取、转译及执行。提取阶段具有提取逻辑501,可从指令高速缓存502或外部存储器502提取指令。所提取的指令经由指令队列503送至转译阶段。转译阶段具有转译逻辑504,耦接至一微指令队列506。转译逻辑504包括延伸转译逻辑505。执行阶段则有执行逻辑507,其内具有延伸执行逻辑508。(0046)依据本发明,于运作时,提取逻辑501从指令高速缓存/外部存储器502提取格式化指令,并将这些指令依其执行顺序放入指令队列503中。接着从指令队列503提取这些指令,送至转译逻辑504。转译逻辑504将每一送入的指令转译/译码为一对应的微指令序列,以指示微处理器500去执行这些指令所指定的运算。依本发明,延伸转译逻辑505检测那些具有延伸前置码标记的指令,以进行对应延伸非暂存存储器参照指定元前置码的转译/译码。在一x86的实施例中,延伸转译逻辑505组态为检测其值为F1H的延伸前置码标记,其是x86的ICEBKPT运算码。微指令字段则提供于微指令队列506中,以允许指定由该指令附随部分所指定的相关存储器参照的来源/目的非暂存存取。(0047)微指令从微指令队列506被送至执行逻辑507,其中延伸执行逻辑508组态为依照一预设存储器特性(由既有存储器特性描述符means所定义)执行一指定存储器参照,或组态为执行于使用者层级通过本发明的延伸前置码所程序化的一非暂存存储器存取,依延伸微指令字段的指定,取代该预设的存储器特性,并完全跳过高速缓存。在一具体实施例中,非暂存储存运算的处理方式,与使用具复合写入属性的地址区间的储存运算相同。(0048)本领域的技术人员将发现,图5所示的微处理器500是现代的流水线化微处理器50经过简化的结果。事实上,现代的流水线化微处理器500最多可包括有20至30个不同的流水线阶段。然而,这些阶段可概括地归类为方块图所示的三个阶段,因此,图5的方块图500可用以点明前述本发明实施例所需的必要组件。为了简明起见,微处理器500中无关的组件并未显示出来。(0049)现请参阅图6,其为本发明于一微处理器中,用以指定一程序化存储器参照的非暂存存取的延伸前置码600的一具体实施例方块图。非暂存存取指定元前置码600具8位大小,且包括一来源字段601、一目的字段602及一备用字段603。来源字段601指定一非暂存存取要应用于一相关延伸指令的其余部分所指定的来源操作数存储器存取(即加载、读取)中,而目的字段602则指定一非暂存存取要应用于该其余部分所指定的目的操作数存储器存取(即储存,写入)中。本领域的技术人员将发觉,来源与目的非暂存存取可分别加以指定,在与重复字符串指令如x86架构的REPMOVS等连用的情形下会特别有用。(0050)现请参阅图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。(0051)运作上,在微处理器通电激活期间,机器特定缓存器702内的延伸字段703的状态是通过信号激活状态(signalpower-upstate)701决定,以指出该特定微处理器是否能转译与执行本发明之用以执行指令层级的非暂存存储器参照的延伸指令。在一具体实施例中,信号701从一特征控制缓存器(图上未显示)导出,该特征控制缓存器则读取一于制造时即已组态的熔丝数组(fusearray)(未显示)。机器特定缓存器702将延伸特征字段703的状态送至转译控制器706。转译控制逻辑706则控制从指令缓冲器704所提取的指令,要依照延伸转译规则或常用转译规则进行解译。提供这样的控制特征,可允许监督应用程序(如BIOS)致能/除能微处理器的延伸执行特征。若延伸特征被除能,则具有被选为延伸特征标记的运算码状态的指令,将依常用转译规则进行转译。在一x86的具体实施例中,选取运算码状态F1H作为标记,则在常用的转译规则下、遇到F1H将造成不合法的指令异常(exception)。若延伸转译被除能,指令译码器710将转译/译码所有送入的指令,并对微指令712的所有字段713至717进行组态。然而,在延伸转译规则下,若遇到标记,则会被逸出指令检测器708检测出来。逸出指令检测器708将指示延伸前置码译码器709依据延伸转译规则,转译/译码该延伸指令的延伸前置码部分,并对运算码延伸项字段713进行组态,以指示该非暂存存储器存取要应用于该延伸指令的其余部分所指定的存储器参照中。指令译码器710将译码/转译该延伸指令的其余部分,并对微指令712的微运算码字段714、来源字段716、目的字段715以及位移字段717进行组态。某些特定指令将导致对控制ROM711的存取,以获取对应的微指令序列样板。经过组态的微指令712被送至一微指令队列(未显示于图中),由处理器进行后续执行。(0052)现请参阅图8,其为图5微处理器内的延伸执行阶段逻辑800的方块图。该延伸执行阶段逻辑800具一延伸存取逻辑(extendedaccesslogic)805,其分别经由总线812与813耦接至一高速缓存807与一总线单元808。总线单元808是用于指导一存储器总线(图中未显示)上的存储器存取作业(memorytransaction)。依本发明,延伸存取逻辑805从微处理器前一阶段的一延伸微指令缓冲器801接收微指令,从地址缓冲器802与803接收两个地址操作数,并从目的操作数缓冲器804接收一目的操作数。延伸存取逻辑805亦耦接至数个依主机微处理器的架构常规进行组态的存储器特性描述符806。延伸存取逻辑805包括一存取控制器809、一储存逻辑810及一加载逻辑811。加载逻辑811包括一非暂存加载缓冲器816,并将一来源操作数输出至一来源操作数缓冲器815。储存逻辑810则具有一复合写入缓冲器817。(0053)运作上,延伸执行逻辑800是根据延伸微指令缓冲器801中的微指令的指示,来执行存储器存取,从存储器读取操作数,以及将操作数写入存储器。执行读取/加载运算时,存取控制器809从地址缓冲器802与803接收一个或更多存储器地址,并读取存储器特性描述符806,以决定相关于该加载运算的存储器属性,在一x86实施例中,存储器特性描述符806包括x86高速缓存与分页控制缓存器、分页目录与分页表项目、存储器类型范围缓存器(memorytoerangeregister,MTTR)、分页属性表(pagingattributetable,PAT)以及外部信号脚位KEN#、WB/WT#、PCT及PWT。存取控制器809依据x86的层级存储器属性常规,使用从这些来源806所取得的信息,以决定该加载运算的预设存储器属性。对非x86的实施例而言,存取控制器809依据对应主机微处理器的特定架构的层级存储器属性常规,使用从存储器特性描述符806所取得的信息,来决定该加载运算的预设存储器属性。存储器地址,连同其对应存取的属性,被送至加载逻辑811。依据所提供的特性属性,加载逻辑811经由总线812从高速缓存或直接经由总线单元808从系统存储器(未显示)获得来源操作数。所获得的来源操作数与一流水线时钟信号(未显示)同步,被送至来源操作数缓冲器815,延伸微指令亦与该流水线时钟信号同步,被送入流水线至延伸微指令缓存器814。来源操作数便以此种方式被送至微处理器的下一阶段。(0054)执行延伸微指令所指示的写入/储存运算时,存取控制器809从地址缓冲器802与803接收该运算的地址数据,并从缓冲器804接收所要储存的操作数。存取控制器809存取如前所述的存储器特性描述符806,以决定对应于该储存存取运算的存储器特性。该存储器特性。地址数据以及该目的操作数并送至储存逻辑810。依据所提供的特定属性,储存逻辑S10经由总线812将该目的操作数写入高速缓存807,或直接经由总线单元808写入系统存储器。(0055)本发明的储存逻辑810与加载逻辑811被组态为依据主机处理器的存储器属性模型的相关处理要求,来执行储存与加载的参照运算,其中该处理要求是包括强/弱排序常规(如假想执行规则)以及快取存取原则。在一具体实施例中,加载与储存运算是在主机微处理器的不同流水线阶段中执行。(0056)对使用非暂存存储器参照前置码的延伸指令而言,相关存储器参照(即加载。储存或加载与储存两者)的非暂存操作数指定元通过延伸微指令缓冲器801内的延伸微指令的运算码延伸项字段(未显示),被送至存取控制器809。存取控制器809,如前所述,通过从存储器特性描述符806所获得的信息,决定所指定存储器存取的预设存储器特性。若该对应的预设特性允许非暂存存取(即可快取的特性,如回写特性),则存取控制器809将非暂存指定元连同前述的地址及/或目的操作数,送至储存逻辑810/加载逻辑811。若该对应的预设特性不允许非暂存存取(即不可快取的特性),则存取控制器809将该预设特性连同地址及/或目的操作数,送至储存逻辑810/加载逻辑811。(0057)若该对应的预设特性允许非暂存存取,则就非暂存加载参照而言,加载逻辑811首先通过总线812询问高速缓存807,以判断在高速缓存807中,一对应的加载操作数是否存在且有效(即加载命中(loadhit))。若是,则加载运算即依该预设存储器特性执行。然而,若该对应的加载操作数不存在于高速缓存807中,则加载逻辑811通过总线单元808从存储器提取含有该加载操作数的快取线,并将该快取线保留于非暂存缓冲器816中,因而完全跳过高速缓存807。于是,该加载操作数被非暂存地送至来源操作数缓冲器815。(0058)就非暂存储存参照而言,储存逻辑810首先询问高速缓存807,以判断在高速缓存807中,一通过目的操作数缓冲器804所提供的储存操作数的一对应快取线是否存在且有效(即储存命中(storehit))。若是,则储存运算即依该预设存储器特性而不是非暂存地执行。然而,若该快取线不存在于高速缓存807中(即储存未中(storemiss)),则储存逻辑810并不配置高速缓存807的空间给该快取线,而是将该储存操作数送至复合写入缓冲器817。复合写入缓冲器817的内容接着通过总线单元808,直接被写入存储器,以符合特定处理器(processor-specific)层级存储器属性的处理常规,其中该常规是应用于复合写入的存储器特性。在一x86的实施例中,复合写入属性允许将存储器的写入运算予以延迟及合并,而不要求一致性(coherency)。储存操作数因而以非暂存的方式被送至存储器。(0059)现请参阅图9,其为描述本发明对可使程序员于指令层级取代微处理器内的非暂存存储器参照的指令,进行转译与执行的方法的运作流程图900。流程开始于方块902,其中一个组态有延伸特征指令的程序,被送至微处理器。流程接着进行至方块904。(0060)于方块904中,下一个指令是从高速缓存/外部存储器提取。流程接着进行至判断方块906。(0061)于判断方块906中,对在方块904中所提取的下个指令进行检查,以判断是否包括一本发明的延伸逸出码。在一x86的实施例中,该检查是用以检测运算码值F1(ICEBKPT)。若检测到该延伸逸出码,则流程进行至方块908。若未检测到该延伸逸出码,则流程进行至方块912。(0062)于方块908中,译码/转译该延伸指令的延伸前置码部分,以决定是否应用一非暂存存取,该非暂存存取是被指定为取代于方块904所提取指令所指定的相关存储器参照的预设存储器属性。流程接着进行到方块910。(0063)于方块910中,该相关存储器参照的一非暂存存取指定元于一对应微指令序列的延伸项字段进行组态。流程接着进行至方块912。(0064)于方块912中,该指令的所有其余部分被译码/转译,以决定所指定的存储器参照、缓存器操作数的位置、存储器地址指定元以及依据该既有微处理器指令集,由前置码所指定的既有架构特征的使用。流程接着进行至方块914。(0065)于方块914中,一微指令序列被组态为指定所指定的存储器参照及其对应的运算码延伸项。流程接着进行至方块916。(0066)于方块916中,该微指令序列被送至一微指令队列,由微处理器执行。流程接着进行至方块918。(0067)于方块918中,该微指令序列由本发明的一地址逻辑进行提取。该地址逻辑产生该存储器参照的地址,并将该地址送至延伸执行逻辑。流程接着进行至方块920。(0068)于方块920中,延伸执行逻辑运用该微处理器架构的存储器特性描述工具,以决定一预设的存储器特性。流程接着进行至判断方块922。(0069)于判断方块922中进行评估,以判断该微处理器架构的快取/存储器模型是否允许该非暂存存取取代该预设属性。若非暂存存取被允许,流程进行至判断方块926。若非暂存存取未被允许,则流程进行至方块924。(0070)于方块924中,通过使用于方块920所决定的预设存储器属性,执行该存储器存取。流程接着进行至方块932。(0071)于判断方块926中进行评估,以判断于高速缓存中,对应于该指定存储器参照的快取线是否存在且有效。若是,流程进行至方块928。若产生一快取未中,则流程进行至方块930。(0072)于方块928中,由于在高速缓存中,对应于该存储器参照的快取线存在且有效,即使用于方块920所决定的预设存储器属性,经由高速缓存执行该存储器存取。流程接着进行至方块932。(0073)于方块930中,运用非暂存工具(如非暂存加载缓冲器或/与复合写入缓冲器)执行该存储器参照。流程接着进行至方块932。(0074)于方块932中,本方法完成。(0075)虽然本发明及其目的、特征与优点已详细叙述,其它实施例亦可包括在本发明的范围内。例如,本发明已就如下的技术加以叙述利用已完全占用的指令集架构内一单一、未使用的运算码状态作为标记,以指出其后的延伸特征前置码。但本发明的范围就任一方面来看,并不限于已完全占用的指令集架构,或未使用的指令,或是单一标记。相反地,本发明涵盖了未完全映像的指令集、具已使用运算码的实施例以及使用一个以上的指令标记的实施例。例如,考虑一没有未使用运算码状态的指令集架构。本发明的一具体实施例包括了选取一作为逸出标记的运算码状态,其中选取标准是依市场因素而决定。另一具体实施例则包括使用运算码的一特殊组合作为标记,如运算码状态7FH的连续出现。因此,本发明的本质是在于使用一标记序列,其后则为一n位的延伸前置码,可允许程序员于指令层级指定存储器存取的存储器属性,而该些属性是无法另由微处理器指令集的既有指令来提供。(0076)此外,虽然上文是利用微处理器为例来解说本发明及其目的,特征和优点,本领域的技术人员仍可明白,本发明的范围并不限于微处理器的架构,而可涵盖所有形式的可程序化装置,如信号处理器、工业用控制器(industrialcontroller)、阵列处理机及其它同类装置。总之,以上所述仅为本发明的较佳实施例而已,当不能以之限定本发明所实施的范围。大凡依本发明权利要求所作的等效变化与修饰,皆应仍属于本发明专利涵盖的范围内。权利要求1.一种可在一微处理器内进行指令层级的存储器照控制的装置,其特征在于,它包括一转译逻辑,用以将一延伸指令转译成一微指令序列,其中该延伸指令包括一延伸前置码,用以对该延伸指令所指定的一存储器参照,指定一非暂存存取,其中该非暂存存取不能以一既有指令集的一既有指令来指定;以及一延伸前置码标记,用以指出该延伸前置码,其中该延伸前置码标记是原本该既有指令集内另一依据架构所指定的运算码;以及一延伸执行逻辑,耦接至该转译逻辑,用以接收该微指令序列,并应用该非暂存存取来执行该存储器参照。2.如权利要求1所述的装置,其特征在于所述的延伸指令还包括该既有指令集的指令项目。3.如权利要求2所述的装置,其特征在于所述的指令项目指定该微处理器所要执行的一运算,且其中该运算包括该存储器参照。4.如权利要求1所述的装置,其特征在于所述的存储器参照包括一加载作业、一储存作业或该加载作业与该储存作业两者。5.如权利要求1所述的装置,其特征在于所述的非暂存存取指示该微处理器排除该存储器参照的相关数据的快取动作。6.如权利要求1所述的装置,其特征在于所述的非暂存存取指示该微处理器排除该存储器参照的相关加载数据的快取动作,并将该加载数据保留于一非暂存缓冲器中。7.如权利要求1所述的装置,其特征在于所述的非暂存存取指示该微处理器排除该存储器参照的相关储存数据的快取动作,并以具有一复合写入存储器属性的一储存参照的方式,执行该存储器参照。8.如权利要求1所述的装置,其特征在于所述的延伸前置码包括一来源字段,用以指定该非暂存存取要应用于该延伸指令所指定的一加载参照中;以及一目的字段,用以指定该非暂存存取要应用于该延伸指令所指定的一储存参照中。9.如权利要求1所述的装置,其特征在于所述的转译逻辑包括一逸出指令检测逻辑,用于检测该延伸前置码标记;一指令译码逻辑,用以决定所要执行的一运算,其中该运算包括该存储器参照;以及一延伸译码逻辑,耦接至该逸出指令检测逻辑与该指令译码逻辑,用以决定该非暂存存取,并于该微指令序列内指定该非暂存存取。10.一种扩充一既有指令集以提供指令层级的非暂存存储器存取控制的微处理器机制,其特征在于,包括一延伸指令,组态为指定一存储器参照的一非暂存存取,其中该延伸指令包括该既有指令集其中一选取的运算码,其后则接着一n位的延伸前置码,该选取的运算码指出该延伸指令,而该n位的延伸前置码则指出该非暂存存取,其中该存储器参照的非暂存存取不能另依该既有指令集的指令加以指定;以及一转译器,组态为接收该延伸指令,并产生一微指令序列,以指示一微处理器通过该非暂存存取执行该存储器参照。11.如权利要求10所述的微处理器机制,其特征在于所述的延伸指令还包括其余指令项目,组态为指定该存储器参照,其中该存储器参照包括一加载参照、一储存参照或该加载参照与该储存参照两者。12.如权利要求11所述的微处理器机制,其特征在于所述的n位的前置码包括一第一非暂存指定字段,组态为指示该非暂存存取要应用于该加载参照中;以及一第二非暂存指定字段,组态为指示该非暂存存取要应用于该储存参照中。13.如权利要求10所述的微处理器机制,其特征在于所述的非暂存存取指示该微处理器排除该存储器参照的相关数据的快取动作。14.如权利要求10所述的微处理器机制,其特征在于所述的非暂存存取指示该微处理器排除该存储器参照的相关加载数据的快取动作,并将该加载数据送入一非暂存缓冲器中。15.如权利要求10所述的微处理器机制,其特征在于所述的非暂存存取指示该微处理器排除该存储器参照的相关储存数据的快取动作,并以一复合写入存取的方式,执行该存储器参照。16.如权利要求10所述的微处理器机制,其特征在于所述的转译器包括一逸出指令检测器,用以检测该延伸指令内的该选取的运算码;一指令译码器,用以译码该延伸指令的其余部分,以决定该存储器参照;,以及一延伸前置码译码器,耦接至该逸出指令检测器及该指令译码器,用以译码该n位的延伸前置码,并于该微指令序列内指定该非暂存存取。17.一种为一既有指令集增添指令层级的非暂存存取控制特征的模块,其特征在于,它包括一逸出标记,由一转译逻辑接收,并指出一对应指令的附随部分是指定了一存储器参照,其中该逸出标记为该既有指令集内的一第一运算码;一非暂存存取指定元,耦接至该逸出标记,且为该附随部分其中之一,用以指定一非暂存存取要应用于该存储器参照;以及一延伸执行逻辑,耦接至该转译逻辑,通过该非暂存存取执行该存储器参照。18.如权利要求17所述的模块,其特征在于所述的附随部分的其余部分包括一第二运算码,用以指定该存储器参照。19.如权利要求17所述的模块,其特征在于所述的转译逻辑将该逸出标记与该附随部分转译成对应的微指令,该对应的微指令是指示该延伸执行逻辑通过该非暂存存取执行该存储器参照。20.如权利要求17所述的模块,其特征在于所述的转译逻辑包括一逸出标记检测逻辑,用以检测该逸出标记,并指示该附随部分的转译动作需依据延伸转译常规(conventions);以及一译码逻辑,耦接至该逸出标记检测逻辑,用以依据该既有指令集的常规,执行指令的转译动作,并依据该延伸转译常规执行该对应指令的转译,以指示要通过该非暂存存取,来执行该存储器参照。21.一种扩充一既有指令集架构的方法,以于指令层级提供非暂存存储器参照的控制,其特征在于,它方法包括提供一延伸指令,该延伸指令包括一延伸标记及一延伸前置码,其中该延伸标记是该既有指令集架构其中一第一运算码项目;通过该延伸前置码指定要应用于一对应存储器参照的一非暂存存取,其中该存储器参照是由该延伸指令的其余部分所指定;以及应用该非暂存存取以执行该存储器参照,其中该应用动作预先排除了快取该存储器参照的对应数据。22.如权利要求21所述的方法,其特征在于所述的指定动作包括首先于该延伸指令的其余部分内指定该存储器参照,其中该首先指定的动作包括使用该既有指令集架构中一第二运算码项目。23.如权利要求21所述的方法,其特征在于,它还包括将该延伸指令转译成一微指令序列,该微指令序列是指示一延伸执行逻辑通过该非暂存存取执行该存储器参照。24.如权利要求23所述的方法,其特征在于所述的转译延伸指令的动作包括于一转译逻辑内,检测该延伸标记;以及依照延伸转译规则译码该延伸前置码与该延伸指令的其余部分,以产生该微指令序列。25.如权利要求21所述的方法,其特征在于所述的指定动作包括指定该非暂存存取要应用于一来源操作数、一目的操作数或以上两者。全文摘要本发明涉及一种装置及方法,用于扩充一微处理器指令集,以于指令层级指定非暂存存储器参照。该装置包括一转译逻辑与一延伸执行逻辑。该转译逻辑将一延伸指令转译成一微指令序列。该延伸指令具有一延伸前置码与一延伸前置码标记。该延伸前置码指定一非暂存存取予该延伸指令所指定的一存储器参照,其中该非暂存存取是无法以一即有指令集的即有指令加以指定。该延伸前置码标记则指出该延伸前置码,且是原本该即有指令集内另一依据架构所指定的运算码。该延伸执行逻辑耦接至转译逻辑,用以接收该微指令序列,并应用该非暂存存取以执行该存储器参照。文档编号G06F9/22GK1431586SQ03103040公开日2003年7月23日申请日期2003年1月28日优先权日2002年8月22日发明者G·葛兰·亨利,罗德·E·胡克,泰瑞·派克斯申请人:智慧第一公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1