临时指令与非临时指令共享的高速缓存结构的制作方法

文档序号:6418894阅读:142来源:国知局
专利名称:临时指令与非临时指令共享的高速缓存结构的制作方法
背景技术
1发明领域本发明总的涉及到处理器领域,更具体地,本发明涉及到为临时指令与非临时指令提供共享的高速缓存结构的技术。
2相关技术说明使用具有处理器的高速缓存器有利于减小内存访问时间。高速缓存结构的基本思想是将访问最频繁的指令和数据保留在快速高速缓存器中,平均内存访问时间接近高速缓存器的访问时间。为得到尽可能快的操作速度,一般的的处理器实施高速缓存分级结构,即将高速缓存器分为不同层次。高速缓存器的不同层次对应于到处理器核心的不同距离。高速缓存器离处理器越近,数据访问速度越快。但是,数据访问速度越快,数据存储所需的代价就越高。因此,高速缓存器级越近,高速缓存器就越快、越小。
经常通过其命中率来检测高速缓存器的性能。当处理器访问内存并在高速缓存器中找到某字时,就认为是产生命中。如果在高速缓存器中没有找到该字,该字就在主内存中并视此为未命中。如果发生了未命中,就通过访问在索引了的入口生成一个分配。访问可以是向处理器装入数据,或从处理器向内存存入数据。缓存的信息由高速缓存器保留直到不再需要、无效或被其它数据替代时为止,这时释放高速缓存器入口。
在实行高速缓存分层时的处理器中,比如具有L1和L2高速缓存器的Pentium ProTM处理器,更快更小的L1层比L2层离处理器更近。当处理器请求可高速缓存数据,如装载指令,请求首先送至级L1。如果要求的数据在L1层,就提供给处理器。否则,L1未命中并将请求传送给L2层。同样,如果L2层命中,数据送到L1和处理器核心。如果L2未命中,请求传送到主存储器。主存储器响应级L2的未命中,将请求的数据提供给L1、L2及处理器核心。
一般地,存储在高速缓存器的数据类型包括程序的激活部分和数据。高速缓存器存满时,必须替代高速缓存器中现有的存储数据行,为新请求的数据行腾出空间。一个这样的替代技术包括应用最近最少使用算法(LRU),用新的请求行替代最近最少使用的数据行。在Pentium ProTM处理器中,由于L2比L1大,一般L2将L1中所有数据R和通过LRU算法在L1中被替代的其它数据行。
美国专利申请序列号为08/7677,950,1996年10月17日提交,题为“高速缓存器分层管理”,公开了一项通过使用与指令相关的位置因素来分配高速缓存器的技术。当处理器访问内存使数据在处理器和内存之间的传送时,根据与指令相关的位置因素,将访问分配给高速缓存器不同的层,或根本不分配给高速缓存器。某些指令使用得很少。比如,非临时预取指令预加载处理器没有立即要求,但在不远的将来请求的数据。这样的数据一般只用一次,在很近的将来不会再用,术语称“非临时数据”。频繁使用的指令叫“临时数据”。对非临时数据而言,由于数据不经常使用,优化性能命令高速缓存的应用编码和数据不会被这些不常用数据写满。为解决这个问题,申请序列号为08/767,950的美国专利申请通过提供与高速缓存器独立的缓冲区来存储不频繁使用的数据,如非临时预取的数据。但是,使用额外的,独立的缓冲区既占空间又花费很高。
因此,需要这样一项技术不使用独立的缓冲区,为临时指令与非临时指令提供共享的高速缓存结构。
发明简述这是一种提供高速缓存器管理的方法和系统。该系统包括一个主存储器、一个连接到主存储器的处理器、和至少一个连接到处理器用于缓存数据的高速缓存器。该至少一个高速缓存器具有至少两条高速缓存路线,每条路线包括多个组。多个组中的每个具有表明至少两条高速缓存路线是否含非临时数据的位。处理器从主存储器或至少一个高速缓存器其中之一访问数据。
附图简述本发明通过图示来说明,而不是限制。相同标号表示相同部件。


图1是执行本发明的计算机系统的一个实施方案的电路框图,其中高速缓存器用于计算机系统的主存储器与处理器之间的数据访问。
图2是执行本发明的计算机系统的第二实施方案的电路框图,其中两个高速缓存器被设置为高速缓存器层次,用于计算机系统的主存储器与处理器之间的数据访问。
图3是一个框图,图示了实施本发明技术的一个实施方案的高速缓存器的结构组成。
图4示出了根据本发明的一个实施方案的高速缓存器管理技术。
图5A和图5B图解了根据本发明的一个实施方案中,临时指令命中高速缓存器组0的路线2前后的高速缓存器构成的一个示例。
图6A和6B图解了根据本发明的一个实施方案中,临时指令命中高速缓存器组0的路线2前后的高速缓存器构成的另一个示例。
图7A和7D图解了根据本发明的一个实施方案中,非临时指令命中高速缓存器组0的路线2前后的高速缓存器构成的一个示例。
图8A和8B图解了根据本发明的一个实施方案中,非临时指令命中高速缓存器组0的路线2前后的高速缓存器构成的另一个示例。
图9A和9B图解了根据本发明的一个实施方案,临时指令未命中高速缓存器组0前后的高速缓存器构成的一个示例。
图10A和10B图解了根据本发明的一个实施方案,非临时指令未命中高速缓存器组0前后的高速缓存器构成的一个示例。
发明详述这里描述了提供高速缓存器管理的技术,其中高速缓存器的分配使由数据利用来决定。在下面的描述中,为了完整地理解本发明,阐明了许多的具体细节,如具体的存储器装置、电路图、处理器指令等。但本领域的技术人员可以在没有这些细节的情况下实施本发明是可以理解的。在其它实例中,为不使本发明晦涩难懂,熟知的技术和结构不再详细说明。这里描述了本发明优选实施方案的具体实施,但我们容易理解在不背离本发明实质和超出本发明范围的前提下还可以设计和实施其它方案。进一步说,可以理解本发明是参照一系列安排好的高速缓存器分层系统来描述的,但并不必要受这样的层次的限制。
参见图1,图示了一个典型的计算机系统。其中处理器10构成了计算机系统的中央处理单元(CPU),它通过总线14与主存储器11相连接。主存储器11一般包括随机存储器,通常叫做RAM。接下来,主存储器11一般连接到海量存储装置12,如磁或光存储器装置,用于存储信息。高速缓存存储器13(以后简称为高速缓存器)也连接到总线14。为举例说明其功能应用和与高速缓存器13相关的数据传送,我们看到高速缓存器13置于CPU10和主存储器11之间。可以理解高速缓存器13的实际物理位置可以根据系统和处理器的结构不同而不同。此外,图示中高速缓存其控制器15连接到高速缓存器13和总线14,控制高速缓存器13的操作。由于高速缓存器控制器,如控制器15的操作,已为本领域所熟知,因此在下面的图中没有示出高速缓存器控制器。假定一些控制器在CPU10控制下控制高速缓存器的操作。
操作中,存储器11与CPU10之间的信息传送是通过CPU10对存储器的访问来实现的。当可缓存数据被CPU当前的或稍后访问时,该数据就被分配在高速缓存器13中。也就是说,当CPU10从存储器11访问特定信息时,它从高速缓存器13寻找该信息。如果被访问数据在高速缓存器13中,则称“命中”了。否则,叫“未命中”,并寻找数据的高速缓存器配置。如当前实施的,大多数访问(无论装入或存储)要求高速缓存器13的分配。只有不可缓存数据访问不用在高速缓存器中分配。
参见图2,图示了实施多个高速缓存器装置的计算机系统。CPU10还是通过总线14连接到主存储器11,主存储器11与海量存储装置12相连。但是,在图2的示例中,有两个独立的高速缓存器21和22。高速缓存器21-22串联排列,每个代表一个高速缓存器级,分别是级1(L1)和级2(L2)。另外,级L1高速缓存器21示为CPU10的一部分,而级L2高速缓存器22在CPU10的外部。这样的结构举例说明了当前惯例将高速缓存器L1置于处理器芯片上而将较低层次的高速缓存器置于芯片的外部,较低层次的高速缓存器距处理器核心更远。实际的不同高速缓存器位置要根据处理器结构来选择设计。因而,L1高速缓存器置于CPU10的外部也是可以的。
一般地,CPU10包括执行单元23、寄存器组24和取/解码单元25。执行单元23是CPU10执行各种运算(或无存储器)处理器指令的处理核心。寄存器组24是一套用于存储(保存)执行单元23要求的各种信息的基本寄存器。在更高级的系统中,可能不止一个寄存器组。取/解码器单元25从具有将要执行的程序指令的位置(如主存储器11)取出指令并将这些指令解码供执行单元23执行。在更先进的处理器中利用流水线结构,指令在实际需要前就被预取(prefetch)并解码,因此当真正需要时,处理器就不用等待取指令了。
CPU10的各单元23-25连接到内部总线结构27。总线接口单元(BIU)26提供将CPU10的各单元连接到总线14的接口。如图2所示,L1高速缓存器连接到内部总线27,其功能如同CPU10的内部高速缓存器。但是,还要强调L1高速缓存器可以在CPU10之外并连接到总线14。高速缓存器可以用来缓存数据、指令或同时缓存数据、指令。在有些系统中,L1高速缓存器实际上被分为了两部分,一部分用于缓存数据,另一部分用于缓存指令。但为简化解释起见,图中描述的各种高速缓存器被示为单一的缓存数据、指令或其它信息,这里以数据为参考。可以理解图2所示的各单元的操作是熟知的。另外,还应理解CPU10实际上还包括比图示的组件更多的组件。因此,图2仅图示了与理解本发明相关的结构。在一个实施方案中,本发明被用在具有数据高速缓存器的系统中。但本发明可以用于各种高速缓存器中。
还应注意到,计算机系统可以不止一个CPU(如图2的虚线所示)。在这样的系统中,一般是多个CPU共用主存储器11和/或集中存储单元12。因此部分或所有与计算机系统相关的高速缓存器可以为不同的计算机处理器所共享。比如,图2所示的系统中,每个处理器的L1高速缓存器21只被它的处理器使用,但主存储器11可以为系统的所有CPU所共享。另外,每个CPU具有一个关联的外部L2高速缓存器22。
本发明可以在单CPU或多CPU计算机系统中实施。还应注意到访问存储器时可以与这里所描述CPU有等效功能的装置(不是处理器)的其它形式,这样的装置能够与所描述CPU类似的执行存储器访问功能。比如,直接存储器访问(DMA)装置能容易地与这里所描述的处理器类似地访问存储器。因此,一个计算机系统有一个处理器(CPU),但有与这里描述的多处理器系统有等效功能的一个或多个存储器访问装置。
请注意,只示出了两个高速缓存器21-22。但计算机系统不必限制高速缓存器只有两级。现在尝试在更先进的系统中利用第三层(L3)高速缓存器。也尝试使高速缓存器有串行结构以使缓存在L1高速缓存器中的数据也能缓存到L2高速缓存器。如果有L3高速缓存器,缓存在L2的数据一般也缓存到L3。因此,缓存在某高速缓存器层的数据也缓存在更高层的高速缓存器层次里。
图3是一个方框图,图示了实施本发明技术的高速缓存结构的一个实施方案的结构组成。一般地,在高速缓存器结构中有“x”个组,每一组有“y”条线路(这里y>=2),每条路线含一个数据入口或一个高速缓存线。本发明提供一个LUR锁定位,它表明在该组内的线路是否包含非临时(NT)数据。如果有,普通或伪LRU位将更新指向NT数据。每一组还有“z”个普通或伪LRU位。除非设定了LRU锁定位,普通或伪LRU位指向根据最近最少算法技术执行的组内的路线。每组的普通或伪LRU的数量随每组的路线数量的不同而不同,以实施LRU(普通或伪)技术。
在图示的实施方案中,高速缓存器50由4线路组结合高速缓存器(4-way set associative cache)构成。在图3的示例中,图示的每一页等于高速缓存器的四分之一大小。具体的,高速缓存器50被分为等大小的四条路线(比如路线0(52)、路线1(54)、路线2(56)和路线3(58)),而主存储器11(参见图1、图2)看成分开的页(即从0页到n页)。在其它实施方案中,每页可以比高速缓存器或大或小。高速缓存器50的组织结构(如图3所示)可以在图1中的高速缓存器13,图2的L1高速缓存器和/或L2高速缓存器22中实施。
高速缓存器50还包括最近最少使用(LRU)位序列600-60n,每一位指向在具有最近最少使用数据(或NT数据,如果执行了基于LRU技术)的组内的路线。这样的列表是根据在高速缓存器控制器15控制下的LRU技术执行,以判断在高速缓存器已写满的情况下,哪个高速缓存入口需要被覆盖。LRU逻辑(没有示出)跟踪在具有最近最少使用的组中的高速缓存器位置。在一个实施方案中,可以实施严格跟踪最近最少使用路径算法技术。在另一实施方案中,实施试图达到最近最少使用路径的伪LRU算法。为讨论方便,如同位600-60n可参见LRU位600-60n,LRU位600-60n可以参见LRU位60。
正如下面将要详细说明的,高速缓存器50还包括LRU锁定位700-70n序列,它表明给定组中的路线52、54、56、58中由否包含不会污染高速缓存器50的数据(也就是不常用的数据)。
图4的例表解释了根据本发明基本原理的高速缓存器管理技术。本发明利用LRU锁定位700-70n阵列来表明某些相应的被缓存的数据是否是流的(streaming)或非临时的,这样是在高速缓存器的相应组未命中时首先被替换的入口。在一个实施方案中,当LRU锁定位置1时,表明对应组有一个非临时数据入口。如果LRU锁定位被清除,一旦高速缓存器被临时指令命中,对应的LRU位60按照实施的LRU技术被更新(参见图4的第1项)而不更新相联的LRU锁定位。但是,如果LRU锁定位70已经置为1(表明对应的组有非临时指令),LRU锁定位不更新,LRU位60也不更新(参见第2项)。
如果高速缓存器被非临时指令命中,不论LRU70处于何状态,LRU位60和LRU锁定位70都不更新(参见第3项)。在另一个实施方案中,由于受在L1高速缓存控制器内的控制寄存器的模式位的控制,由流或非临时指令命中的高速缓存强制LRU位转到被命中的路线(参见第4项)。另外,LRU锁定位70置为1。在此实施方案中,当高速缓存器未命中对应组时,由流或非临时指令命中的数据将首先被更新。
当高速缓存器未被临时指令命中时,清除LRU锁定位,LRU位60基于伪LRU技术被更新(参见第5项)。但是,当高速缓存器未被流动的或非临时指令命中,LRU锁定位70置为1,不更新对应的LRU位60(参见第6项)。
下面将对图4的表中的每一项进行举例说明。图5A和5B举例说明了临时指令命中高速缓存器组0的路线2前后的高速缓存器结构。本例对应图4的第1项。这里,LRU锁定位700事先为高速缓存组0被清除,以及由于高速缓存器组0被临时指令命中,LRU锁定位700不更新。但,按照实施的LRU技术,LRU位600被更新。本例中,假定伪LRU技术表明路线3是最近最少使用入口。
图6A和6B用另一个实例说明了临时指令命中高速缓存器组0的路线2前后的高速缓存器结构。本例对应图4的第2项。这里,LRU锁定位700事先为高速缓存器组0被设定,表明对应的组包含非临时数据。因此LRU锁定位700及LRU位600都不更新。
图7A-7D举例说明了非临时指令命中高速缓存器组0的路线2前后的高速缓存器结构。本例对应图4的第3项,可以通过将L1高速缓存器控制器内的模式位置为0来实现(参见图4)。第一种情况下(图7A和7B),LRU锁定位700事先为高速缓存器组0被清除,在此方案中,非临时高速缓存器命中不更新LRU锁定位70。因此,由于高速缓存器组0被非临时指令命中,LRU锁定位700及LRU600都不被更新。在第二种情况下(图7C和7D),LRU锁定位700事先为高速缓存器组0被设置,表明对应组包含非临时数据。因此,LRU锁定位700及LRU600都不被更新。
图8A-8D用另一个实例说明了非临时指令命中高速缓存器组0的路线2前后的高速缓存器结构。本例对应图4的第4项,可以通过将L1高速缓存器控制器内的模式位置为1来实现(参见图4)。第一种情况下(图8A和8B),LRU锁定位700事先为高速缓存器组0被清除。在对应图7A-7D所示的示例的另一个实施方案的本例中,非临时指令高速缓存器命中更新LRU锁定位70。因此,如图8A所示,由于高速缓存器组0被非临时指令命中,LRU锁定位700被更新(置为1),如图8B所示。另外,LRU位600被更新表明路线被命中。在LRU锁定位事先为高速缓存器组0被设置的情况下(图8C和8D),LRU锁定位700保持为1。另外,LRU位600被强迫指向被命中的组内的路线。
图9A和9B举例说明了临时指令未命中高速缓存器组0前后的高速缓存器结构。本例对应图4的第5项。这里,LRU锁定位700事先为高速缓存器组0被设置,由于临时指令未命中目标组0,当在高速缓存器内替换临时未命中时,LRU锁定位700被清除。但是,按照实施的LRU技术LRU位600被更新。本例中,伪LRU技术表明路线3时最少最近使用入口。
图10A-10B举例说明了非临时指令未命中高速缓存器组0前后的高速缓存器结构。本例对应图4的第6项。这里,LRU锁定位700事先为高速缓存器组0被清除。由于非临时指令未命中高速缓存器组0,为了指向相应组0的非临时数据,设置LRU锁定位700,保持LRU位600。
通过实施本发明的装置和方法,可以得到一种管理临时与非临时指令的共享高速缓存器结构,这种结构在高速缓存器或高速缓存器层内的数据污染最小。本发明的实施可以不使用独立缓冲区,使用独立缓冲区既昂贵效率又不高。
在不背离本发明实质的前提下,本发明可以是别的特定形式。这里所描述的具体示例仅是解释性的,而决非限制。因此,本发明的适用范围不是前面所描述的,而是在随后的权利要求中表明。所有来自权利要求的等效范围和意图的改进都被包括在本发明的范围内。
权利要求
1.一种提供共享的高速缓存器管理的计算机系统,包括主寄存器;连接到该主寄存器的处理器;至少一个连接到该处理器的高速缓存器,所说的至少一个高速缓存器包括至少两条高速缓存器路线,每条路线包括多个组,多个组中的每个组的第一位表明至少两条高速缓存器路线其中之一是否包含非临时数据;其中,处理器从主存储器或至少一个高速缓存器其中之一访问数据。
2.如权利要求1的计算机系统,其中所说的至少一个高速缓存器还包括第二位,它表明对应路线中的数据入口的顺序。
3.如权利要求2的计算机系统,其中所说的顺序表明相对其它入口而言该数据入口是否是最少最近使用入口。
4.如权利要求1的计算机系统,其中所说的第一位被置位表明相关路线包含非临时数据。
5.如权利要求1的计算机系统,其中所说的第一位被清除表明相关路线包含临时数据。
6.如权利要求2的计算机系统,还包括连接到所说的至少一个高速缓存器和处理器的高速缓存器控制逻辑,以控制所说的至少一个高速缓存器。
7.如权利要求6的计算机系统,其中所述处理器收到访问数据的指令,该处理器判断该数据是否在所说的至少一个高速缓存器内,如果是,从该至少一个高速缓存器访问数据,如果不在,从主存储器访问该数据。
8.如权利要求7的计算机系统,其中,如果该数据是从所说的至少一个高速缓存器中访问的,高速缓存器控制逻辑判断该数据是否是临时数据,如果是,更新与被访问路线相应的第二位;如果不是,则不改变该顺序。
9.如权利要求8的计算机系统,其中对应所述路线的所述第一位不改变。
10.如权利要求7的计算机系统,其中,如果该数据是从所说的至少一个高速缓存器中访问的,高速缓存器控制逻辑设置所述第一位表明被访问的数据是否是非临时数据,该高速缓存器控制逻辑还更新第二位的顺序。
11.如权利要求7的计算机系统,其中,如果该数据是从主存储器访问的,高速缓存器控制逻辑判断该数据是否是非临时数据,如果是,设置所述第一位表明被访问的数据是非临时数据,该高速缓存器控制逻辑不改变第二位的顺序。
12.如权利要求11的计算机系统,其中,如果高速缓存器控制逻辑判断该数据是临时数据,该高速缓存器控制逻辑设置第一位表明被访问数据是临时数据,该高速缓存器控制逻辑更新第二位的顺序。
13.计算机系统中,一种基于处理器使用的数据的访问形式来分配高速缓存存储器的方法,包括提供主存储器;提供连接到该主存储器的处理器;提供至少一个连接到该处理器的高速缓存存储器,所说的至少一个高速缓存存储器包含至少两条高速缓存器路线,每条路线包括多个组,多个组中的每个组的第一位表明至少两条高速缓存器路线其中之一是否包含非临时数据;处理器从主存储器或至少一个高速缓存器其中之一访问数据。
14.如权利要求13的方法,其中所说的至少一个高速缓存器还包括第二位,它表明对应路线中的数据入口的顺序。
15.如权利要求14的方法,其中所说的顺序表明相对其它入口而言该数据入口是否是最少最近使用入口。
16.如权利要求13的方法,其中所说的第一位被设置表明相关路线包含非临时数据。
17.如权利要求13的方法,其中所说的第一位被清除表明相关路线包含临时数据。
18.如权利要求14的方法,还包括连接到所说的至少一个高速缓存器和处理器的高速缓存器控制逻辑,以控制所说的至少一个高速缓存器。
19.如权利要求18的方法,其中处理器收到访问数据的指令,该处理器判断该数据是否在所说的至少一个高速缓存器内,如果是,从该至少一个高速缓存器访问数据,如果不在,从主存储器访问该数据。
20.如权利要求19的方法,其中,如果该数据是从所说的至少一个高速缓存器中访问的,高速缓存器控制逻辑判断该数据是否是临时数据,如果是,更新与访问路线相应的路线的第二位;如果不是,则不改变该顺序。
21.如权利要求19的方法,其中对应所述路线的所述第一位不改变。
22.如权利要求19的方法,其中,如果该数据是从所说的至少一个高速缓存器中访问的,高速缓存器控制逻辑设置第一位表明被访问的数据是否是非临时数据,该高速缓存器控制逻辑还更新第二位的顺序。
23.如权利要求19的方法,其中,如果该数据是从主存储器访问的,高速缓存器控制逻辑判断该数据是否是非临时数据,如果是,设置第一位表明被访问的数据是非临时数据,该高速缓存器控制逻辑不改变第二位的顺序。
24.如权利要求23的方法,其中,如果高速缓存器控制逻辑判断该数据是临时数据,该高速缓存器控制逻辑设置第一位表明被访问数据是临时数据,该高速缓存器控制逻辑更新第二位的顺序。
全文摘要
提供一种高速缓存器管理的方法和系统。系统包括:主存储器(11)、连接到主存储器的处理器、以及连接到处理器用于缓存数据的至少一个高速缓存器(50)。所说的至少一个高速缓存器含至少两条缓存路线(50),每条路线包含多个组(50)。多个组中的每一个有一位(50)表明至少两条缓存路线其中之一是否包含非临时数据。处理器从主存储器或至少一个高速缓存器访问数据。
文档编号G06F12/12GK1295687SQ99804733
公开日2001年5月16日 申请日期1999年3月24日 优先权日1998年3月31日
发明者S·帕兰卡, N·L·科雷, A·纳朗, V·彭特科夫斯基, S·蔡 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1