多重高速缓冲存储器线写回和作废技术的制作方法

文档序号:6381244阅读:209来源:国知局
专利名称:多重高速缓冲存储器线写回和作废技术的制作方法
技术领域
本发明主要涉及微电子学领域,且特别是涉及一种装置和方法,其能让程序设计师命令微处理器来完成写回和作废操作,用以从内部高速缓冲存储器更新特定数目的高速缓冲存储器线。
背景技术
在当今微处理器的内部,数据传送于各个逻辑区块之间的速度要比数据存取于外部存储器时的速度快了多个数量级。在x86桌上型计算机的架构下,接口连接到系统存储器的总线其运行速度为几百兆赫(MHz),而内部微处理器的时钟速度则可达几十千兆赫(GHz)。因此,最近几年高速缓冲存储器的阶层已经演化成在不必每次执行数据读写操作时都必须通过低速存储器总线,就可允许高性能微处理器作高速运行。
在管线式微处理器之中的插件式或内含的高速缓冲存储器在本质上为一独立组件,该独立组件的运行对于微处理器管线中的指令流来说是透明的,目的是在确保应用程序指令所需的数据驻留在高速缓冲存储器内,并且数据被存取速度为管线速度,而非存储器总线速度。本技术领域内高速缓冲存储器结构种类繁多,其中一些包括多级高速缓冲存储器第一级高速缓冲存储器,其非常接近处理器的执行逻辑器;第二级高速缓冲存储器,其可在芯片上也可不在芯片上,用于存储不经常存取的数据;第三级高速缓冲存储器,其可在存储器插板上,依此类推。不管采用哪种结构,本领域的技术人员均赞同高速缓冲存储器的目的是预防以下情况当低速存储器总线执行总线任务,以获得待读写运作所需的数据时,在微处理器管线中的指令将会停止运行。当该情况发生时,程序的运行就会出现一段冗长的停顿时间,一直到数据传送到为止。
更复杂的情况是,当今计算机系统可共享这些单元间的存储器的某些区域。例如藉由读取数据和写入数据到存储器的特定区域,一主要微处理器可与一通信微处理器进行通信联系。最常见的情况是,主要微处理器和显示卡微处理器共享视频缓冲器的存储器区域,其中显示卡的作用是在一视频装置上为一操作者显示数据。
在一共享存储器系统中,来自于一共享区域的数据有可能存在于两个不同微处理器的局部高速缓冲存储器,或是存在于连接到存储器总线的其它单元的局部高速缓冲存储器。当所有单元仅仅是读取数据时,藉由允许它们两者同时在各自的局部高速缓冲存储器结构中驻留数据是无害的。但若允许它们两者均能对局部存储数据进行修改的话,就可能产生不可预测的后果。
为防止此类情况发生,系统设计人员开发出高速缓冲存储器的一致性协议,该协议规定了在高速缓冲存储器中的数据状态。应用最普遍的协议为MESI协议。根据MESI协议来维护局部高速缓冲存储器时,可保证同样数据的两个拷贝不能被同时修改。一MESI协议共享状态可向一局部高速缓冲存储器来表明一数据特定区块是否共享。若共享,在没有从低速存储器总线上获得专有数据修改权限的第一个处理任务时,局部处理器无法修改该数据。为修改数据,处理器必须首先获得该数据的唯一所有权。
此处所述本发明所欲解决的问题涉及到在将修改于局部高速缓冲存储器中的数据写回存储器时,在程序的运行过程中所发生的许多延迟。本领域的技术人员应赞同以下情况高速缓冲存储器没有一合理途径获知何时首次需要存储器的某一特定区域,因此,当存储器的该特定区域首次加载到局部高速缓中存储器时,将不可避免地会发生存储器总线的延迟。在认识到这种情况之后,设计人员已经开发出一预取指令,其能借助于一微处理器的编程来加以执行。然而,此预取指令无法对程序流中的操作数实施运作。所采用的方法是预取指令命令局部高速缓冲存储器将操作数从存储器加载到将来要使用的高速缓冲存储器中。由于这些高速缓冲存储器组件与存储器之间的运作对于微处理器管线中的指令流来说是透明的,故明智的方法是在需要数据之前就发出一预取指令,让高速缓冲存储器在数据需要之前就从存储器中提取数据,且该过程可与主要程序流中其它指令的运行平行进行。这样当运行到随后指令需要存取预取数据时,就可从高速缓冲存储器中存取该数据,程序运行就不会因等待从存储器中提取数据而发生停滞。在高速缓冲存储器中可随时存取预取数据,也就是说可随时读取该数据。若该数据被随后指令修改,那么当高速缓冲存储器组件求助于总线以获取共享数据的唯一所有权,以便藉由局部处理器来更改这些数据时,如此将不得不延迟程序的运行如上所述,为在不同装置间实施信息通信,当今计算系统广泛地使用共享存储器区域。当连接到一总线的装置之间存在通信缓冲器时,数据区域(该指定区域设置为一逻辑数值,即全为0或全为1)的存在或不存在的特定数据将向一装置表明另一装置已经准备好可以接收数据。另外一种替代方式为,在一视频缓冲器配置中,微处理器可藉由将所有视频缓冲器输入项设置为相同数值的方法,来为操作人员“涂抹”显示背景色。上述两个实施例均要求特定数据要存储为数据区域内的数据实体,以便将信息从一装置传送到另一装置。但一旦高速缓中存储器中的数据被修改,很多应用程序要求将这些数据从高速缓冲存储器写回或更新到存储器,以便让其它装置也能存取这些数据。或者是,一旦微处理器结束修改其局部高速缓冲存储器内的一大组数据,比方说借助于视频缓冲器接口为一操作人员生成一部分显示图像时,采用高速缓冲存储器管理方式将已修改的数据从高速缓冲存储器更新出并传送到存储器总线时,该方法具有非常大的优势。一旦该数据写回存储器,它以前所占据的局部高速缓冲存储器中的区域就会释放出来并可用于存储新数据。
很多指令集结构可提供多个指令,其允许程序设计师命令一适当的微处理器来更新高速缓冲存储器的一线。例如x86指令CLFLUSH命令一x86兼容微处理器去写回和作废高速缓冲存储器的一线中的内容。或者是,一些指令集提供多个指令,其允许程序设计师命令一适当的微处理器将所有高速缓冲存储器中已修改的线更新到存储器。x86指令WBINVD命令一x86兼容微处理器去写回和作废一局部数据高速缓冲存储器中所有已修改的高速缓冲存储器线。如同预取指令一样,这两类写回和作废指令的运作方式对于通过微处理器管线实施级的指令流来说是透明的,原因是它们被提供到高速缓冲存储器,而不是提供到运算逻辑器。然而,高速缓冲存储器单元向存储器总线传送写入操作的能力有限。一旦它们的写入缓冲器充满这些传送至总线的待决写入操作,随后的写入操作就必须停滞,一直到写入缓冲器的空间变成可用为止。
应用程序所执行的很多操作并不局限于高速缓冲存储器的一线中的数据,但它们也不会复杂到它们的数据充满整个高速缓冲存储器结构的程度。相反地,很多操作会修改由占据相当大部分(而非整个)局部高速缓冲存储器的多重线的数据结构。为了将这些数据结构更新到存储器,程序设计师必须使用与数据结构占据局部高速缓冲存储器区域大小相等个数的单线更新指令。这样会导致程序流中出现几千次单线更新指令。由于数据结构占据高速缓冲存储器的相当大部分区域,而非整个高速缓冲存储器,故更新高速缓冲存储器中所有已修改线将导致存储器总线频宽的使用效率不高。因此,诸如WBINVD之类的指令对于程序运行速度有致命的降低效果,故实际上从来不会使用它们。运行指令WBINVD将导致随后待决存储操作出现一段令人无法忍受的长时间停滞过程。
因此,需要一种装置和方法,其可让程序设计师借助于运行单个指令以命令微处理器来写回和作废多重高速缓冲存储器线。

发明内容
本发明的主要目的是解决已有技术中的上述和其它的问题及缺点。本发明提供了一种先进技术,其仅需一程序流中的两个指令就可将高速缓冲存储器中一块区域更新到存储器。在一实施例的中,本发明提供了一种将数据区块从高速缓冲存储器写回和作废到存储器的微处理器装置。该装置包括转译逻辑器和执行逻辑器。转译逻辑器将区块写回和作废指令转译成微指令序列,以命令一微处理器来写回和作废特定数目的高速缓冲存储器线。执行逻辑器连接到转译逻辑器。该执行逻辑器接收微指令序列,并向存储器总线发出写回与该特定数目的高速缓冲存储器线相应数据的任务。
本发明的一个特征为,假定微处理器中的装置用于完成区块写回和作废的操作。该装置包括一区块写回和作废指令和一个转译器。区块写回和作废指令命令微处理器去写回和作废特定数目的高速缓冲存储器线。转译器接收区块写回和作废指令,并将该区块写回和作废指令转译成相关的微指令。该相关微指令命令微处理器中的执行逻辑器向存储器总线发出写回与特定数目的高速缓冲存储器线相应数据的总线任务。
本发明的另一特征为,包括一种从高速缓冲存储器更新一高速缓冲存储器线区块的方法。该方法包括检索一区块写回和作废宏指令;将区块写回和作废宏指令转译成微指令序列,该微指令序列就命令微处理器写回和作废该高速缓冲存储器线区块;以及与该微指令序列响应,作废局部高速缓冲存储器的该高速缓冲存储器线区块中的每一高速缓冲存储器线,经由存储器总线发出总线任务,用以将相应于每一高速缓冲存储器线的数据写回到存储器。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举一较佳实施例,并结合附图详细说明如下。


图1表示当今微处理器中的有效管线级别的方块图。
图2表示高速缓冲存储器接口连接到存储器用在完成图1所示微处理器内高速缓冲存储器线更新操作的方块图。
图3表示图1和图2所示微处理器经由存储器总线发出任务,以完成高速缓冲存储器线更新操作的时钟图。
图4表示依照本发明的延伸区块写回和作废指令的方块图。
图5表示如何编码图4所示的延伸区块写回和作废指令内延伸地址分类符字段,以命令微处理器将特定数目的高速缓冲存储器线写回和作废到存储器的表格。
图6表示依照本发明用于完成区块写回和作废操作的微处理器详细描述的方块图。
图7表示接口连接到存储器用于完成图6所示微处理器内区块写回和作废操作的高速缓冲存储器的方块图。
图8表示依照本发明用于完成区块写回和作废操作的方法的流程图。
附图标记说明101提取102转译103寄存104地址105执行106执行逻辑器107数据高速缓冲存储器108存储器201微处理器210转译器
221写回逻辑器222数据高速缓冲存储器220高速缓冲存储器单元230总线单元241总线组件242数据存储器303数据写入(EAX)303数据写入(EAX+20H)303数据写入(EAX+40H)401前置码401重复前置码402预取操作码403延伸地址区分符404任选地址区分符601提取逻辑器602指令高速缓冲存储器603指令存储器604指令队列606转译逻辑器607延伸转译逻辑器608微指令队列609执行逻辑器610延伸高速缓冲存储器单元611数据高速缓冲存储器612延伸写回逻辑器613总线单元614数据存储器701微处理器710延伸转译器712ECX计数713SHECX计数
721延伸区块写回逻辑器722数据高速缓冲存储器720延伸高速缓冲存储器单元730总线单元741总线组件742数据存储器具体实施方式
以下描述的目的是为了使本领域技术人员能够根据特定应用领域及其要求顺利地使用本发明。然而,了解本领域技术的人员明显地可对此较佳实施例进行不同的修改,而此处所定义的一般原理也适用于其它实施例。因此,本发明并非仅仅局限于此处所述的特定的实施例,而是适用于与本发明所述原理和新特征相关的广阔范围。
根据上述的当今管线式微处理器如何完成多个高速缓冲存储器线更新操作的背景来作讨论,此处将参照图1-3提供一范例来说明当今技术的局限性。随后,将参照图4-8对本发明的具体的情况进行讨论。运用本发明,程序设计师可通过单个宏指令来命令微处理器将特定数目的高速缓冲存储器线从内部高速缓冲存储器写回和作废到存储器。
现在回到图1,此处所示的方块图表示当今管线式微处理器100的多个有效管线级别101-105。微处理器100包括提取数据级101、转译级102、寄存级103、地址级104和执行级105。
在操作过程的中,提取数据级101从系统存储器的指令区120中检索微处理器100所要执行的宏指令121-123。然后,将宏指令121-123提供到转译级102,转译级102将宏指令121-123转译成一命令微处理器100去完成宏指令121-123指定操作的微指令(或本地指令)(图中未标出)。微指令与管线时钟信号(图中未标出)同时通过这些后续级别103-105,通过方式非常类似于产品通过装配在线的连续工作站。这样微指令就提供到寄存级103。若一特定微指令指定了一个存储在寄存级103寄存器内的操作数,那么逻辑器就会存取寄存器并检索该操作数,然后将该操作数连同特定微指令一起提供到地址级104。地址级104含有产生用于存取存储在数据存储器108中操作数地址的逻辑器。类似于寄存级103,地址级104将所产生的地址连同与其相应的微指令一起提供到执行级105。
执行级105完成微指令指定操作。对于当今微处理器100来说,根据指令集结构情况,各种操作类型是各式各样的,然而本领域技术人员应赞同这些操作可划分为诸如逻辑操作、算术操作和存储器存取操作(即数据读取和写入操作)几大类。完成所规定操作后产生的结果可存储回寄存级103的寄存器,也可写入到数据存储器108中的适当位置。
本领域技术人员应赞同当今管线式微处理器100可能具有比图1所示101-105更多的级别,原因是藉由分解管线内的主要功能来增加管线级别数已被证明是一种增加通过管线指令121-123输入输出总和的有效技术。然而,为便于清晰表述,图1采用当今微处理器100的管线等级101-105仅表示出主要的功能组,这样可在说明性地描述先前技术不足的同时,又可避免因描述无关细节而增加读者的负担。
值得注意的是,当今微处理器100在执行级105内包括执行逻辑器106和数据高速缓冲存储器107。该数据高速缓冲存储器107的运行与管线等级101-105中的指令并行执行,以确保将应用程序指令121-123正在存取的高可靠性数据提供到高速缓冲存储器107,这样的话,当数据存取微指令(即加载存储器或存储存储器微指令)通过执行级105时,执行逻辑器106可在一个或两个管线时钟周期内执行数据存取,而非由于等待通过存储器总线110来存取系统数据存储器108所导致的数百个时钟周期的程序延迟。在高效高速缓冲存储器系统配置之中,完成数据加载和存储操作主要是借助于高速缓冲存储器总线109在执行逻辑器106和数据高速缓冲存储器107之间进行,且数据高速缓冲存储器107的运作模式对于通过管线级别102-105的微指令流来说是相对透明的,目的是确保数据实体的多个存储备份同时存储,且与系统存储器108保持一致性。
确保在一共享存储器108的某些区域的系统配置中的高速缓冲存储器输入一致性的最普遍协议为MESI协议(更改、专有、共享、作废)。尽管图1中没有描述,为达到对这些相同数据进行操作的目的,计算系统配置中的其它装置(未标出)也可共享存储器108中的特定区域。例如显示卡可与微处理器100共享存储器108的一个区,以完成微处理器100所生成的监视器显示数据的存取过程。在另一范例之中,系统总线110上的多个装置可藉由写入数据到数据存储器108的共享区域和从该共享区域读取数据的操作方式,在彼此之间保持通信联系。对与使用MESI协议动机有关的结构方面考虑因素的详细描述已超出本发明的范围,此处只要理解MESI协议在本技术领域普遍使用的原因是它能保证系统存储器108和局部高速缓冲存储器结构107之间数据保持一致性就足够了。
由于在存储器总线110上执行任务需要几百个时钟周期来完成,故数据传送到数据高速缓冲存储器107和从数据高速缓冲存储器107读取数据时,数据是以仅包含数个字节区块的方式进行传输。这些区块称为高速缓冲存储器线。尽管根据结构形式,高速缓冲存储器线的宽度(即以字节表示的高速缓冲存储器线大小)或许是不同的,但是现在并非不常见到线宽度为32字节,或线宽度为64字节,甚至线宽度为128字节的系统配置。
为借助于存储器总线110将数据从存储器108初次传送到高速缓冲存储器107,既使最有效的高速缓冲存储器结构107也必然会产生延迟现象。然而,一旦高速缓冲存储器线提供到高速缓冲存储器107,随后再对该高速缓冲存储器线内数据实体存取时,就不再出现明显延迟现象,其原因是高速缓冲存储器107和高速缓冲存储器总线109的速度与微处理器100内诸如执行逻辑器106的类其它逻辑器的速度相当。
根据MESI协议,局部数据高速缓冲存储器107之内的高速缓冲存储器线可为以下四种状态之一修改状态、专有状态、共享状态和作废状态。修改状态线是指该线已实施了局部存储操作,但尚未与主存储器108实施同步。局部高速缓冲存储器107借助于其它装置(也称为总线组件)来负责监视存储器总线110上的存储器任务,以致于若需要修改状态高速缓冲存储器线数据时,局部高速缓冲存储器107就可将已修改的数据提供给总线组件。这种总线110的监视方式称为总线窥探。专有状态高速缓冲存储器线是指该线可被局部高速缓冲存储器107实施存储操作。专有状态暗示局部高速缓冲存储器107拥有该高速缓冲存储器线的专有权,因此允许微处理器100修改它们的内容。共享状态高速缓冲存储器线是指该线驻留在总线110上两个或更多个装置的局部高速缓冲存储器107内。这样的话,每一装置均可从共享高速缓冲存储器线中读取数据,但不允许它们修改其中的内容。为修改共享高速缓冲存储器线中数据(即实施存储操作),装置100必须首先借助于连接其它装置的存储器总线110来执行适当任务,以便在修改内容之前获得该高速缓冲存储器线(即以MESI协议专有状态将高速缓冲存储器线读入到它的高速缓冲存储器107内)的专有权。一旦获得该线的专有权,就可执行存储操作且该高速缓冲存储器线的状态也被更改为修改状态。在发送存储操作前需要高速缓冲存储器线专有权,这一规定可确保数据的一致性,理由是这种情况下在任一时间只有一装置100有权修改高速缓冲存储器线的内容。当局部高速缓冲存储器107检测到(通过窥探方式)存储器总线110上有写入任务施加到高速缓冲存储器线时,或当另一装置在总线110上发出总线任务以获得一线专有权时,该高速缓冲存储器线的状态就更改为作废状态。标注为作废状态的线表明该线内的数据将不被读取或写入,因为它可能与存储器108之间不再具有一致性。
由于数据高速缓冲存储器107与通过微处理器管线的指令流并列运行,设计人员添加一预取宏指令,以便在存取程序流120所需数据之前,将这些数据加载到高速缓冲存储器107内,这就克服了当数据首次从存储器108检索到高速缓冲存储器107时所出现的延迟现象。预取指令通常提供给程序流120,以命令局部数据高速缓冲存储器107与执行后续命令并行运行从存储器108加载高速缓冲存储器线,以便程序流120的后续指令从高速缓冲存储器线存储器取数据时,该高速缓冲存储器线处于高速缓冲存储器107内。若将预取指令明智地放置于程序流120内,将会很有效地克服与初次存取数据高速缓冲存储器107内数据相关的延迟现象,并因此而显著地增加程序运行速度。当存储器总线110上的预取操作任务完成后,所需高速缓冲存储器线就会出现在高速缓冲存储器107内,其状态不是为专有状态(若局部高速缓冲存储器107具有该高速缓冲存储器线的唯一备份),就是为共享状态(若另一装置也有所需线的一个存储备份)。无论处于两者中的任一状态,存储线内数据实体均可马上进行读取存取。但如上所述,为将数据写入到高速缓冲存储器线(即完成存储操作),就必须拥有该线的专有权。因此,若预取操作结果是以专有状态存储线,则待决存储操作就可马上传送到该线。但若该线是以共享状态从总线110提供,则在高速缓冲存储器107向总线110发出任务以修改该线专有权时,待决存储操作就只能停止。当该线以专有状态提供到高速缓冲存储器107后,就可传送待决存储操作。
如上所述,当今指令集中含有指令122、123允许程序设计师将高速缓冲存储器107中的内容写回到存储器108中。一方面,为实现命令高速缓冲存储器107将数据写回到存储器108的目的,可能会出现与程序设计师所需装置之间通信相关的等待时间问题。另一方面,程序设计师可能关心高速缓冲存储器资源的有效利用问题,且资源利用后高速缓冲存储器107的有效空间的“释放”也会改善其性能。无论动机如何,当今多数指令集结构提供了一个或多个指令122、123,以便让程序设计师命令高速缓冲存储器107将数据写回到存储器108。但本发明曾提到这些指令122、123具有局限性,原因是一类指令122,CLFLUSH[EAX],只用于写回单个高速缓冲存储器线,其它类型指令123,WBINVD,用于写回高速缓冲存储器107内所有已修改线。这样就缺少一种单个指令,该指令用于允许程序设计师命令微处理器100从高速缓冲存储器107内更新特定数目的高速缓冲存储器线。例如一个已加载到高速缓冲存储器的32千字节通信缓冲区占据1000个32字节高速缓冲存储器线。为将该通信缓冲区更新到存储器108,需要编写1000个单线更新指令122或单个高速缓冲存储器更新指令123,WBINVD,该指令WBINVD将把高速缓冲存储器107内的所有已修改线更新到存储器,可能的情况是这要比通信缓冲区的数目还要大一个数量级。此处值得注意的是,由于本领域技术人员广泛认可x86指令,故图1的范例采用x86指令,然而本领域技术人员应赞同其它指令集结构也提供了命令进行相同类型写回操作的高速缓冲存储器管理指令。
现在请参阅图2,其所示方块图200描述图1所示微处理器内连接到存储器用于完成高速缓冲存储器线更新操作的高速缓冲存储器接口。从方块图200可见用于完成高速缓冲存储器线更新操作的微处理器201内的逻辑器。微处理器201有一转译器210,该转译器210用于接收宏指令流202并将宏指令202转译成相关的微指令211。微指令用于命令从存储器242进行数据加载和存储操作,或加载和存储数据到存储器242,该微指令211随后提供到高速缓冲存储器单元220。该单元220包括写回逻辑器221和数据高速缓冲存储器222。写回逻辑器221连接到总线单元230。总线单元230接口连接到系统存储器总线240,除此之外,系统存储器总线240还连接有数据存储器242和其它总线组件241。
现在用一示例性宏指令流202描述高速缓冲存储器线写回操作是如何规定的。这样,在示例指令流中第一个宏指令202,CLFLUSH[EAX]命令微处理器201写回和作废地址相应于寄存器EAX内容的第一个高速缓冲存储器线。第二个宏指令202,CLFLUSH[EAX+20H],命令微处理器201写回和作废地址相应于寄存器EAX+20H(假定数据高速缓冲存储器222为32字节线宽度高速缓冲存储器)内容的第二个高速缓冲存储器线。第三个宏指令202,CLFLUSH[EAX+40H],命令微处理器201写回和作废地址相应于寄存器EAX+40H内容的第二个高速缓冲存储器线。以上详述的写回和作废操作仅仅更新由三个连续高速缓冲存储器线组成的数据高速缓冲存储器222内的一个区域。本领域技术人员应赞同为更新100个线将需要100个将指定地址连续增加的写回和作废线指令202。
转译器210将上述三个写回和作废宏指令202转译成相应的写回和作废微指令211,CLFLUSH[EAX],CLFLUSH[EAX+20H]和CLFLUSH[EAX+40H],这三个微指令被连续提供到高速缓冲存储器单元220。作为响应,写回逻辑器221命令总线单元230向存储器总线240发出三个连续写回和作废任务,以便将三个高速缓冲存储器线从高速缓冲存储器222更新到存储器242。
现在请参阅图3,图中所示为时钟图300,该图表示为完成多重高速缓冲存储器线更新操作,图1和图2所示微处理器201向存储器总线240发出的总线任务303。任务303从总线单元230下达给存储器总线240。本领域技术人员应赞同在总线单元230和存储器总线240之间还可发生其它任务,如微处理器201存取总线所需任务(即总线请求-BUS REQUEST、总线授权-BUS GRANT等)。但为描述清晰,此处仅涉及与完成多重高速缓冲存储器线更新操作直接相关的任务303。
在运行过程中,当提供一个单线写回和作废微指令211到高速缓冲存储器单元220时,写回逻辑器221就命令总线单元230经由含有该具体高速缓冲存储器线修改内容的总线240发出一个相应数据写入任务303,DATAWRITE[EAX]。因此,根据提供到高速缓冲存储器单元220的这三个连续CLFLUSH指令211,就可根据正在请求高速缓冲存储器资源和相关总线任务的其它待决操作的当前状态,将三个连续数据写入任务303发出至存储器总线240。
如上所述,本申请的发明人观察到当前数据处理器结构和相关指令集不确定能否为占据多重高速缓冲存储器线的数据区来提供有效地写回和作废操作。在一种极端情况下,程序设计师必须编写个数等于给定数据区域高速缓冲存储器线数的单线更新指令,这种方式浪费了宝贵的存储器资源,或他们必须承受将所有已修改高速缓冲存储器线更新到存储器的不利后果。本发明人由此发现了一种通过单个指令命令微处理器将特定数目的高速缓冲存储器线从高速缓冲存储器222更新到存储器242的需求。基于该需求,本申请的目的是提供一种装置和方法,以便借助于单个宏指令命令微处理器来写回和作废特定数目的高速缓冲存储器线。现在将结合图4-8讨论本发明。
请参阅图4,其所示方块图表示依照本发明的延伸区块写回和作废宏指令400。该延伸区块写回和作废宏指令400包括多个可供选择的前置码实体401,其中之一为可重复前置码401,然后是预取操作码402,再来是延伸地址分类符403,之后是任选地址分类符404。作为一实施例,任一前置码和延伸实体401、403均为8位,预取操作码402为一个或两个字节,除此处所作修改之外,所有实体401-404均符合x86指令集结构。
在操作时,预取操作码402为一具体操作码数值,该数值命令一适当微处理器来完成预取操作。作为一x86的实施例,该操作码实体401的特定值为0F18h。一个或多个任选前置码实体401可用于命令一适当微处理器来进行特定类型的其它操作,诸如重复该操作直至操作次数达到计数器(如x86结构的REP前置码401)所规定的次数为止,运行一基本操作(如x86结构的LOCK前置码)等。延伸地址分类符403用于指定要执行预取操作的具体类型。作为一x86的实施例,延伸地址区分符403也称为ModR/M字节403。任选地址区分符404用于指定诸如地址、存储器内、具体高速缓冲存储器线之类额外的地址数据。在使用一现存预取指令400的实施例中,本发明假定重复前置码401用于命令多重高速缓冲存储器线从高速缓冲存储器更新到存储器。对于一使用于现存指令集内的备用操作码402的实施例中,不需要重复前置码401。
根据本发明,当微处理器检测到一个区块写回和作废宏指令400时,该微处理器就受命发出写回和作废总线任务以便将特定数目的高速缓冲存储器线从高速缓冲存储器更新到存储器,该特定数目根据延伸地址区分符403内容规定的提示数值确定。现在将结合图5讨论一个范例。
图5所示的表格500表示图4中延伸预取指令400内延伸地址区分符字段403的一种实施例,其如何经编码后根据本发明命令微处理器将特定数目的高速缓冲存储器线从高速缓冲存储器更新和写回到存储器。为阐述本发明,此处采用符合x86结构的ModR/M二进制位字段,然而此处假定本发明包括能提供手段将预取写回和作废提示经编码形成指令400的任何结构。尽管图5所示范例的目的在于将预取写回提示经编码后形成现存预取指令400的延伸地址区分符403,本领域技术人员应赞同写回提示也可经编码后形成操作码字段401的具体操作码数值。
作为一示例性编码说明,x86的ModR/M字节对预取操作码401规定的预取操作类型按ModR/M字节的二进制位为53进行编码。现在,x86预取指令允许采用数值为000,001,010和011来规定用于读取操作的预取提示。所有000-011的四个数值命令x86微处理器将数据连同不同的封闭程度一起预取到高速缓冲存储器。例如提示T0(即数值001)命令微处理器将一高速缓冲存储器线预取到高速缓冲存储器分级结构的所有级别,而NTA提示命令微处理器将高速缓冲存储器线预取到非临时高速缓冲存储器结构和靠近处理器的位置,从而减小了高速缓冲存储器的污染。本发明的一实施例可对根据本发明命令微处理器写回和作废规定高速缓中存储器线的延伸地址区分符403内的额外写回和作废提示来进行编码。图5表示编码值为100按照x86 ModR/M字节的二进制位为53进行编码的写回提示。当根据本发明将写回提示编码到预取指令400内时,一适当微处理器就受命向存储器总线发出任务,以写回与具体高速缓冲存储器线相应的数据。在一x86的实施例中,作为预取指令400内写回提示的响应,此时发出的具体任务为一数据写入任务,如同结合图3所描述的那样。作为一实施例,具体高速缓冲存储器线地址被编码到任选地址区分符404内。作为另一实施例,具体高速缓冲存储器线地址被储存到微处理器结构寄存器内。
在x86指令集结构中,数值为100的二进制位为53的编码迄今为止是非法的,就如同表格500中所示数值101-111的情况。非法ModR/M字节编码将导致一种例外情况。但依照本发明的一x86的实施例中,用于改变写回提示的该额外编码被认为是合法的,且会产生一个写回和作废具体高速缓冲存储器线的前述总线任务。
此处假设图4和图5所示区块写回和作废指令400用于将有效数目的高速缓冲存储器线从高速缓冲存储器更新到存储器。因此,作为一实施例,指令400命令适当微处理器检索要被从寄存器(图中未标出)更新掉该数目的高速缓冲存储器线,此处所说的数目是指通过以前的宏指令已输入到寄存器内的数目。在一x86的实施例中,该寄存器包括结构寄存器ECX。
众所周知,由于高速缓冲存储器结构与存储器之间的相互作用已经从通过微处理器管线的指令流内清除掉,故指令400只能要求根据所提供提示完成预取操作。若高速缓冲存储器当前没有被其它存储器存取所占据,那么所规定的写回和作废操作就可马上执行。但若高速缓冲存储器处于占据状态,则这些操作就被延迟一段时间直到可执行这些操作为止。
现在请参阅图6,其所示方块图详细描述了根据本发明用于完成区块写回和作废操作的微处理器600。微处理器600有三个值得注意的级别分类提取、转译和执行。提取级有一提取逻辑器601,该提取逻辑器601将宏指令从指令存储器603检索到指令高速缓冲存储器602内。经检索的宏指令借助于指令队列604提供到转译级。转译级有一连接到微指令队列608的转译逻辑器606。该转译逻辑器606包括延伸转译逻辑器607。执行级有一包括延伸高速缓冲存储器单元610的执行逻辑器609。延伸高速缓冲存储器单元610有一连接到延伸写回逻辑器612的数据高速缓冲存储器611。延伸写回逻辑器612连接到总线单元613。总线单元613连接到数据存储器614。
在运行时,提取逻辑器601根据本发明将格式化后的指令从指令存储器603检索到指令高速缓冲存储器602内,并按照执行次序提供指令队列604内的宏指令。从指令队列604中检索宏指令并将其提供到转译逻辑器606。转译逻辑器606将所提供的每一宏指令转译成一相应的能命令微处理器600完成宏指令所规定操作的微指令序列。根据本发明,延伸转译逻辑器607检测延伸区块写回和作废宏指令,并为相应延伸前置码和地址区分符实体的转译提供宏指令。在一x86的实施例中,配置后的延伸转译逻辑器607用于检测x86预取指令,并根据图4-5所述的惯例将x86预取指令的ModR/M字节转译成区块写回和作废微指令序列,该微指令序列可命令微处理器600将特定数目的高速缓冲存储器线从高速缓冲存储器611写回和作废到存储器614,此处所指数目在结构寄存器ECX内规定。
微指令从微指令队列608传送到执行逻辑器609,其中延伸高速缓冲存储器单元610配置用于根据本发明执行区块写回和作废操作。当执行逻辑器609执行区块写回和作废微指令序列时,延伸写回逻辑器612命令总线单元61 3借助于存储器总线615向数据存储器614发出任务,以便将特定数目的高速缓冲存储器线内的数据更新到存储器614。
本领域技术人员应赞同,结合图6所述的微处理器600为本发明管线式微处理器600简化后的一个代表。实际上,正如上所述,当今管线式微处理器结构包括很多管线级别。然而,这些级别一般化分为方块图所示的三个级别组,因此就可用图6所示的方块图描述出完成上述本发明实施例所需的本质步骤。为便于清楚表述,此处略去那些与本发明讨论无关的微处理器步骤。
请参阅图7,其所示方块图700描述了用于完成图6所示微处理器内的区块写回和作废操作的一接口连接到存储器的高速缓冲存储器单元。从方块图700可见用于完成区块写回和作废操作微处理器701内的逻辑器。微处理器701有一延伸转译器710,该延伸转译器710用于接收宏指令流702,并将宏指令流702转译成相关的微指令711。命令执行从存储器742进行数据加载及存储操作和将数据加载及存储到存储器742操作的微指令711,随后提供到延伸高速缓冲存储器单元720。延伸高速缓冲存储器单元720包括延伸写回逻辑器721和数据高速缓冲存储器722。延伸写回逻辑器721连接到总线单元730。总线单元730接口连接到系统存储器总线740,另外数据存储器742和其它总线组件741也连接到系统存储器总线740。
一示例性宏指令流702表示一区块写回和作废操作是如何规定的。首先,第一个宏指令702,MOV ECX,COUNT,命令微处理器701将指定要更新的高速缓冲存储器线的数目的一个数字加载到结构寄存器ECX 712。该宏指令702之后为一区块写回和作废指令702,REP.PREF.WB[EAX],该指令命令微处理器701将特定数目的高速缓冲存储器线从高速缓冲存储器722写回和作废到存储器742,其中该特定数目存储在寄存器ECX 712内,且特定数目的高速缓冲存储器线的地址包括寄存器EAX(图中未标出)内规定的一个地址。在一实施例中,EAX规定地址为特定数目的第一个高速缓冲存储器线的地址,此时地址根据高速缓冲存储器线的宽度而逐渐增加。或者是,另一替代实施例规定EAX地址为最后一个高速缓冲存储器线的地址,此时剩余特定数目的高速缓冲存储器线的地址逐渐减小。
转译器710将第一个宏指令702转译成加载微指令711,LD ECX,COUNT,并命令将表示特定数目的一个值,COUNT,载入到寄存器ECX 712内。由于该微指令不需要存储器存取,故它被传送到执行加载特定数目到ECX 712内操作的逻辑器(图中未标出)。本发明还提供了一影子计数寄存器713,SHECX,ECX 712的内容可透明地拷贝到影子计数寄存器713,以致于在不影响区块写回和作废操作的情况下可通过随后指令修改ECX 712的内容。
第一个宏指令702转译完成后,转译器将区块写回和作废操作指令702转译成相应的区块写回和作废微指令711,REP.PREF.WB[EAX],并传送到延伸高速缓冲存储器单元720。延伸写回逻辑器721从EAX(图中未标出)读取高速缓冲存储器线区块内的高速缓冲存储器线地址,并从SHECX 713检索要更新区块内特定数目的高速缓冲存储器线。然后,延伸写回逻辑器721命令总线单元730向存储器总线740发出数据写入任务,以便写回高速缓冲存储器线区块内所有高速缓冲存储器线的数据。
现在请参阅图8,其所示流程图800表示根据本发明用于完成区块写回和作废操作的一种方法。
根据本发明,该流程开始于区块802,此时宏指令流提供到一指令队列。然后该流程行进到区块804。
在区块804内,从指令队列提取下一个宏指令,并将该下一个宏指令提供到延伸转译器。然后,该流程行进到决策区块806。
在决策区块806内,需做出评价以便确定该下一个宏指令是否为延伸区块写回和作废指令。若是,该流程就向区块810行进。若否,该流程就向区块808行进。
在区块810内,将检测到的区块写回和作废指令转译成能命令微处理器写回和作废特定数目的高速缓冲存储器线的区块写回和作废微指令序列。为便于对该方法进行清晰描述,此处假设该特定数目已在先前就加载到微处理器的寄存器,并透明地拷贝到影子计数寄存器。然后,该流程就行进到区块812。
在区块808内,将宏指令转译成命令微处理器完成具体操作的相应微指令序列。然后,该流程行进到区块812。
在区块812内,将下一个微指令序列提供到微处理器内的执行逻辑器。然后,该流程行进到决策区块814。
在决策区块814内,对该下一个微指令序列进行评价并确定它是否为区块写回和作废序列。若是,该流程就向区块818行进。若否,该流程就向区块816行进。
在区块816内,执行该下一个微指令序列。然后,该流程行进到区块828
在区块818内,作为区块写回和作废序列的响应,一临时计数器初始化为零,以便监测借助于存储器总线上发出的适当任务写回到存储器的高速缓冲存储器线的数目。然后,该流程行进到区块820。
在区块820内,规定第一个高速缓冲存储器线地址为需写回总线任务的第一个高速缓冲存储器线。该第一个高速缓冲存储器线地址来自于延伸写回和作废指令的规定地址,此时一个高速缓冲存储器线的宽度与区块818计数的乘积添加到该地址上。由于该计数已初始化为零,故第一个高速缓冲存储器线地址就等于区块写回和作废指令规定的地址。然后,该流程行进到区块822。
在区块822内,存储器总线上发出的数据写入任务将高速缓冲存储器线内数据写回到存储器,且将局部高速缓冲存储器内该高速缓冲存储器线设置为MESI作废状态。然后,该流程行进到区块824。
在区块824内,计数增加1,然后,该流程行进到决策区块826。
在决策区块826内,需做出评价确认增加1后的计数是否等于要更新的高速缓冲存储器线的数目,即存储在影子寄存器内的数目。若否,该流程行进到区块820,此时执行另一迭代过程以更新下一个高速缓冲存储器线。若计数等于影子寄存器内数值,那么所规定的全部高速缓冲存储器线均已更新过,该流程行进到区块828。
在区块828内,该方法运行完毕。
尽管此处已详细描述了本发明及其目标、特征和优点,本发明还包含其它一些实施例。例如本发明的特征为可根据MESI协议将特定数目的高速缓冲存储器线从高速缓冲存储器更新到存储器。此处选定MESI来例证性说明本发明的原因是MESI在本技术领域获得普遍应用。然而值得注意的是,本发明提供了用以下模式或状态从局部高速缓冲存储器更新高速缓冲存储器数据的方法,即与总线任务相关的状态可根据区块写回和作废指令规定。此时该模式或状态是否符合MESI协议就变得无关紧要了。
如前所述,不同结构内高速缓冲存储器线宽度不同。在桌上型计算机系统内,32字节高速缓冲存储器线现在最普及。但本发明的这种代表性并不希望将本发明的应用仅仅局限在32-、64-、128-甚至256-字节高速缓冲存储器线。相反地,此处假定本发明适用于允许更新局部高速缓冲存储器线且不能更新一个区块内特定数目的高速缓冲存储器线的任一系统结构。
更进一步说,本发明结合与x86结构相应的几个实施例仅做了例证性说明。当然,若采用本发明,x86兼容微处理器将从中受益,但值得注意的是该发明的范围应超出x86兼容系统范畴,因为很多其它不同结构也禁止程序设计师采用单个指令将指定特定数目的高速缓冲存储器线写回到存储器并在局部高速缓冲存储器内将它们作废。
最后,还有一点值得注意,尽管此处采用地址区分符来指定要更新区块内高速缓冲存储器线的地址,但这种指定并非必须是显式的。作为本发明写回和作废指令的一种实施例,可内隐式指定含有地址的结构寄存器,此时先期指令已将该地址加载到结构寄存器内。
虽然本发明已以一较佳实施例披露如上,然其并非用以限定本发明,本领域技术人员在不脱离本发明的精神和范围的前提下,可作若干的更动与润饰,因此本发明的保护范围视后附的权利要求为准。
权利要求
1.一种微处理器装置,适于将高速缓冲存储器内一数据区块写回和作废到存储器,该微处理器装置包括转译逻辑器,用于将一区块写回和作废指令转译成一微指令序列,其能命令一微处理器写回和作废一特定数目的高速缓冲存储器线;以及执行逻辑器,连接到该转译逻辑器,用于接收该微指令序列,在一存储器总线上发出写回与所述特定数目高速缓冲存储器线相应的数据的任务。
2.如权利要求1所述的微处理器装置,其中所述特定数目高速缓冲存储器线的写回和作废操作与一应用程序的一程序流的其它多个指令的运行并行执行。
3.如权利要求1所述的微处理器装置,其中该区块写回和作废指令包括一现存指令集内的一现存预取指令的一修改内容,并且该现存预取指令目前不具备所述特定数目高速缓冲存储器线的写回和作废功能。
4.如权利要求3所述的微处理器装置,其中该现存指令集包括x86指令集,且该现存预取指令包括x86预取指令。
5.如权利要求3所述的微处理器装置,其中该区块写回和作废指令包括一延伸地址区分符实体内的一重复前置码和一预取操作码字段,而该预取操作码字段的一特定值命令该微处理器写回和作废一第一高速缓冲存储器线,且该预取操作码字段的其它数值命令该微处理器根据该现存指令集规定来执行其它多种类型的预取操作。
6.一种微处理器内装置,适于完成区块写回和作废操作,包括一区块写回和作废指令,其配置用于命令该微处理器写回和作废一特定数目的高速缓冲存储器线;以及一转译器,其配置用于接收该区块写回和作废指令,并将该区块写回和作废指令转译成一相关的微指令,该相关微指令命令该微处理器内执行逻辑器在一存储器总线上发出多个总线任务,以便写回与所述特定数目高速缓冲存储器线相关的数据。
7.如权利要求6所述的微处理器内装置,其中该区块写回和作废指令包括一现存指令集内的一现存预取指令的一修改内容,且该现存预取指令目前不具备所述特定数目高速缓冲存储器线的写回和作废功能。
8.如权利要求7所述的微处理器内装置,其中该区块写回和作废指令包括一延伸地址区分符实体内的一重复字段和一预取操作码字段,而该预取操作码字段的一特定值命令该微处理器写回和作废一第一高速缓冲存储器线,且该预取操作码字段中其它多个数值命令该微处理器根据该现存指令集来规定执行其它多种类型的预取操作。
9.如权利要求8所述的微处理器内装置,其中该重复前置码字段命令该微处理器写回和作废所述特定数目高速缓冲存储器线,且所述特定数目高速缓冲存储器线包括该第一高速缓冲存储器线。
10.如权利要求9所述的微处理器内装置,其中该特定数目由该微处理器内的一第一寄存器的内容所规定。
11.如权利要求6所述的微处理器内装置,其中该总线任务包括多个数据写入任务。
12.如权利要求11所述的微处理器内装置,其中指定该特定数目的一寄存器的内容可透明地拷贝到一影子寄存器,且该执行逻辑器使用该影子寄存器对所述高速缓冲存储器线的该特定数目进行计数。
13.一种更新高速缓冲存储器线区块的方法,包括提取一区块写回和作废宏指令;将该区块写回和作废宏指令转译成一微指令序列,该微指令序列命令一微处理器写回和作废该高速缓冲存储器线区块;以及响应该微指令序列,作废一局部高速缓冲存储器内的该高速缓冲存储器线区块的每一所述高速缓冲存储器线,在一存储器总线上发出多个总线任务,用以将相应于每一所述高速缓冲存储器线的数据写回到存储器。
14.如权利要求13所述的更新高速缓冲存储器线区块的方法,其中该提取操作包括提供更改一现存指令集内的一现存预取指令的一区块写回和作废指令,并且该现存预取指令目前不提供写回和作废所述高速缓冲存储器线区块的功能。
15.如权利要求14所述的更新高速缓冲存储器线区块的方法,其中提供指令操作步骤包括更改一x86预取指令以便实现一写回和作废操作。
16.如权利要求15所述的更新高速缓冲存储器线区块的方法,其中该延伸预取指令包括一延伸地址区分符实体内的一重复前置码和一预取操作码字段,而该预取操作码字段的一特定值命令该微处理器写回和作废该高速缓冲存储器线区块,且该预取操作码字段的其它数值命令该微处理器根据该现存指令集规定来执行其它多种类型的预取操作。
17.如权利要求13所述的更新高速缓冲存储器线区块的方法,还包括根据一第一寄存器的内容规定所述高速缓冲存储器线区块内应含有多少高速缓冲存储器线。
18.如权利要求17所述的更新高速缓冲存储器线区块的方法,还包括将该第一寄存器中的内容透明拷贝到一影子寄存器。
全文摘要
本发明提供一种微处理器装置,该装置可从存储器对高速缓冲存储器线区块实施写回和作废操作。该装置包括转译逻辑器和执行逻辑器。转译逻辑器将区块写回和作废指令转译成命令微处理器将高速缓冲存储器线区块从高速缓冲存储器写回和作废到存储器的微指令序列。执行逻辑器连接到转译逻辑器。执行逻辑器接收微指令序列,在存储器总线上发出写回与高速缓冲存储器线区块内每个高速缓冲存储器线相关数据的任务。
文档编号G06F12/00GK1514352SQ0315978
公开日2004年7月21日 申请日期2003年9月25日 优先权日2003年2月12日
发明者罗德尼·E·胡克, 罗德尼 E 胡克 申请人:智权第一公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1