用于在多核系统中进行邻近高速缓存的方法及系统的制作方法

文档序号:85175阅读:273来源:国知局
专利名称:用于在多核系统中进行邻近高速缓存的方法及系统的制作方法
背景技术
在多核处理器或处理系统中,每个核都对应于仅由自身能存取的一个高速缓存器。此外,为扩展高速缓存器的容量可以提供能被所有核存取的共享高速缓存器。
高速缓存器存取时间可能受到从逻辑电路,如一个核到或从该核的互连的电容而导致的传播延迟的影响。总体上,高速缓存器存取时间会按照诸如高速缓存器和存取逻辑(logic)间的距离、互连宽度等物理属性成比例增长。因此,一些现有技术处理器将一个共享高速缓存器组织成多个大块,并且安排所述大块使得频繁存取的数据项靠近使用它们的处理器(或处理核)。
然而,现有技术中把频繁存取的项目移动到靠近存取逻辑(如处理器核)的高速缓存方案在功耗和/或管芯面积上代价会很高。
图1示出根据本发明的实施例的系统体系结构。
图2和图3图示可用于执行本发明至少一个实施例的操作;和图4示出一种多处理器系统,其中可以使用本发明中一个或多个实施例。
具体实施方式本发明的实施例涉及一种在具有共享高速缓存器的多核系统中高速缓存数据的技术。根据一些实施例,所述核中所使用的数据可被分类为多种类型之一。在一个实施例中,这种分类使得能够根据数据类型来使数据处理更加高效。例如,在一个实施例中,分类为第一类型的数据可以被存储在共享高速缓存器中,且存储在最靠近使用该数据的核的共享高速缓存器的区域中。如果第一类型的数据被存取逻辑-如一个核后续地获取来使用,那么通过把第一类型的数据存储在最靠近该核,存取时间和功耗就会被降低。相反,分类为第二类型的数据可以仅仅被存储在核的专用高速缓存器中并在其中处理。通过不将所述第二类型的数据存储于共享高速缓存器,就可以降低高速缓存器的使用率和功耗。
在本发明的实施例中,数据可被分类为三种类型中的一种(a)可能被再次使用和可能每次被一个核所使用的数据,(b)不可被再次使用而可能每次被一个核使用的数据,(c)可能每次被不止一个核使用的数据。预测再次使用频率的阈值可以作为划分数据为类型(a)和类型(b)的基础。该阈值可以随着应用程序的变化而变化。然而,总体说来,当类型(a)的数据没有装在专用高速缓存器中之时,可以通过将所述数据移动到最靠近使用所述数据的核的共享高速缓存器的区域中来实现大幅节约,因为类型(a)的数据在被另一核存取和移走前可能会被使用所述数据的核存取多次。相似的,通过特殊处理类型(b)的数据也能够得到许多益处。分类为类型(b)的数据可能根本就没有被存储在共享存储区中,而是可能仅仅被存储于专用高速缓存器中。因为类型(b)的数据在被逐出前可能根本不会在共享存储区中被存取,所以根本不移动类型(b)的数据到共享高速缓存器就可以降低功耗,并且减少对共享高速缓存器空间的争用。
类型(c)的数据可以像在具有每个核一个专用存储器和具有核之间共享的另一级高速缓存器的常规存储器系统里那样来处理。
图1显示了根据本发明的实施例的系统100。该系统可包括多个核101.1,101.2,……,101.n。每个核可具有各自的专用L1(一级)高速缓存器102.1,102.2,……,102.n。虽然仅仅显示了单级专用高速缓存器,但在各实施例中,可以有多级专用高速缓存器。这些核及其相关联的专用高速缓存器可通过互连线103耦合到共享高速缓存器(即,“最低级别高速缓存器”或LLC)存储体104.1,104.2,……,104.m(这些核与共享高速缓存器存储体之间的对应关系不必是一对一)。该系统可进一步包括多个漫游数据指针(roaming data pointerRDP)105.1,105.2,……,105.p(这些RDP与共享高速缓存器存储体之间的对应关系不必是一对一)。RDP可以指向核。专用和共享的高速缓存器以及相关联的硬件可被统称为“高速缓存器子系统”。
按照常规,在诸如系统100之类的多核系统中的处理发生时,一个地址哈希函数被执行以决定分配共享高速缓存器104.1,104.2,……,104.m中哪里的高速缓存线,在其中存储数据,和查找该数据。所述地址哈希函数可以设计为在所有的存储体之间均匀分布数据。类型(a)数据和类型(b)数据被认为是“漫游数据”,因为它们未必要处于通过该常规地址哈希函数所规定的位置单元中。RDP可以指向已经处理了漫游数据的核,由此使得漫游数据能够按照在以下更详细地描述的方式定位。
在图1的配置中,每个核都在共享高速缓存器中有一个最靠近的存储体。根据本发明的实施例,数据可被分类为类型(a),并且可以根据该分类把该数据存储在最靠近使用该数据的核的专用高速缓存器中和/或存储在该共享高速缓存器中最靠近该核的存储体中。按照常规,取而代之,该数据会存储在由前述的常规地址哈希函数所决定的共享高速缓存器中的位置内,也可能会存储在该核的专用高速缓存器中。与常规模式相比较而言,通过将类型(a)的数据存储于最靠近的存储体中,该数据就可以由同一核后续地以降低的功耗和存取时间获取。
例如,将数据分类为预先确定的类型的这种分类可至少部分依据对所述数据操作的软件程序的逻辑,该逻辑基于程序员的观点知道所述数据。这种程序逻辑可将类型信息传递到高速缓存器子系统。例如,程序中的指令可能包含表明它们经常接触的数据的类别的位。
该软件提供的初始类别可作为在对数据进行的某些硬件操作后的数据处理的基础,该分类可揭示对程序员而言无需透明的数据的属性或处理环境。这些硬件操作可包括,例如,从专用高速缓存器逐出数据,因为超出了专用高速缓存器的容量或关联性。这种操作表明该数据可能是没有置于专用高速缓存器的一个重要数据集合的一部分。因此,如果从专用高速缓存器中逐出的数据为类型(a),那么该逐出的数据就可以被存储于如上所述的共享高速缓存器中最靠近的一个存储体内。附图1中示出了该过程。高速缓存线102.1i正被从专用高速缓存器102.1中逐出,并且被置于最靠近的共享高速缓存器存储体104.1,作为高速缓存线104.1i。如果被逐出的数据为类型(b)且脏的(即,已经被写过),那么该数据可被送回外部存储器;否则,该数据就可以被丢弃。在本发明的实施例中,相干性逐出可以不会触发上述事件。
类型(c)的数据可像在具有每个核一个专用高速缓存器和具有核之间共享的另一级高速缓存器的常规存储器系统里那样处理。例如,一个可能的相干协议会按照如下操作。当一个专用高速缓存器未命中,数据将被引入到请求核的专用高速缓存器中,并且还引入与共享高速缓存器的地址哈希函数相对应的共享高速缓存器存储体内。当专用高速缓存器逐出,如果数据为脏的,那么它将被写回到共享高速缓存器,否则,该数据被丢弃。
在初始分类后之后的事件可表明数据重分类是有序的。因此,本发明的实施例将进一步涉及重新分类数据,例如,从类型(a)或(b)到类型(c),或从类型(c)到类型(a)或(b)。
前面已经讨论了基于数据的分类就共享高速缓存器而言如何分类和处理数据的方面。现在将转向讨论在该高速缓存器子系统内如何追踪和定位漫游数据(类型(a)和类型(b))。根据本发明的实施例,当漫游数据在专用高速缓存器内发生未命中,该数据可以被引入请求核的专用高速缓存器中。数据源可以是外部存储器或者在该高速缓存器子系统中的某处,这取决于较早的事件。当数据被引入请求核的专用高速缓存器时,可以在一个RDP中为该漫游数据分配一个条目(entry)。更特别地,该漫游数据的地址可用作为RDP地址哈希函数的输入,其输出标识一个特别的上述条目指向的RDP指针。该RDP条目可存储请求核的位置。因此,该RDP条目表明上次存取该数据的核,从而该数据能在另一个不同的核请求该数据时被找到。此外,当该数据被引入专用高速缓存器,它进一步可以拥有一个指示器来存储它的类型,例如一个写入到高速缓存线的字段内的一个标志。该信息在接下来的高速缓存器子系统操作中有利于识别和可能的重新分类数据类型。
对于类型(b)的数据,假如该数据在高速缓存器子系统中且一个核需要存取该数据,该数据被保留直到逐出后,相应的RDP条目可在专用高速缓存器逐出后无效。
当对一漫游数据发生专用高速缓存器未命中时,在从外部存储器提取该数据前,相应于RDP地址哈希函数的RDP可被查询以确定是否该数据还在高速缓存器子系统中。执行该操作可能因为虽然对于漫游数据而言,可能一个核在某时使用该数据,但是这并不能得到确保。另一个不同的核可能需要存取相同的漫游数据。最后存取该数据的核也可能已经完成它了并且在一段时间内可能没有其他核存取该数据。后两种情况中的任何一个都可能意味着所需要的数据还在高速缓存器子系统中,因此从外部存储器获取该数据是不必要的。如果该数据确实有一个RDP条目,那么该RDP条目将表明上次存取该数据的核。假如数据是漫游的,在该RDP条目中的信息可用于确定哪个核或哪个共享高速缓存器存储体可能拥有该数据。
鉴于所述,图2示出根据本发明的实施例的数据获取方法。如块201所示,对于一个请求核,在专用高速缓存器中未命中时,可以确定未命中的数据是否为漫游数据。在本发明的实施例中,一条请求指令,如加载,可以规定数据的类型,以致于使对该数据是否为漫游数据的确定能够做出。可选地,硬件可以预测或确定数据的类型。在任何事件中,如果数据是漫游的,那么最靠近在其专用高速缓存器中有未命中的请求核的共享高速缓存器中的存储体可以被存取,如块202所示。如果在那里找到了所需要的数据(块203),那么它可以被提供给该请求核,如块204所示。随着时间这一结果会在互连带宽,平均存储器等待时间和功耗上产生显著的节约。
另一方面,如果该数据是漫游的且在最靠近该请求核的存储体中没有找到,那么该数据可能被不同核所存取且因此被移动到该核的专用高速缓存器或距最靠近的共享高速缓存器存储体内。相应地,对应该数据的RDP可通过RDP地址哈希函数来确定,如块205所示。可搜索该RDP以查找所关注的数据的条目,如块206所示。如果没有找到一个条目,那么将给该共享高速缓存器体和相应于该RDP条目(该数据当前的可能位置)的核发送一消息,且可以把该RDP条目改变成指向该请求核。该消息可以导致数据被从专用高速缓存器和/或共享高速缓存器体(它们中的至少一个当前存储该数据)逐出,并送往请求该数据的核。该请求核可将该数据置于它的专用高速缓存器中。
如块207和208所示,如果数据不是漫游的,那么该未命中的数据可用常规方法被定位。也就是,对应于共享高速缓存器地址哈希函数的共享高速缓存器块可被搜索,且所采取的该动作依据相关性协议。
图3示出依据本发明实施例的另外一种方法。如块301所示,该方法可包括对第一个请求核而言,在其专用存储区中未命中漫游数据。该漫游数据而后可从外部存储器或高速缓存器子系统中某处被带入该第一请求核的专用高速缓存器内,如块302所示。如块303所示,可以形成指向第一请求核的指针,例如通过在RDP中创建一个条目。
如块304所示,该漫游数据接下来可从第一请求核中的专用高速缓存器中被逐出。该逐出例如可以是容量或关联性逐出。如果该被逐出数据为类型(a)数据,那么它可被存储于共享高速缓存器中,存储在该共享高速缓存器中最靠近该第一请求核的一个区域中。该数据随后可能被第一请求核在该共享高速缓存器中存取多次,因而该数据可以正好处于该共享高速缓存器中也可以处于第一请求核的专用高速缓存器和该共享高速缓存器这二者内。
接下来可能出现第二请求核在其专用高速缓存器内对数据未命中。该第二请求核可因此确定未命中的数据是否为漫游数据,如块305所示。假定该未命中的数据为由第一请求核上次存取的漫游数据。因为该未命中数据为漫游数据,所以最靠近该第二请求核的共享高速缓存器内的区域将被检查,如块306所示。如果数据不在那里,那么该指针(如,相应于未命中数据的RDP)就可以被引用,如块307-308所示。
该指针将指向第一请求核。因此,该数据可以被从该第一请求核的专用高速缓存器和相应于该第一请求核的共享高速缓存器存储体的任一个中或者这二者中逐出,且送往第二请求核,如块309所示。该指针可被更新来指向该第二请求核,如块310所示。
如前所述,本发明的实施例将涉及基于初始分类事件之后的数据重分类。根据这些实施例,如果例如没有为未命中的漫游数据找到任何RDP条目,那么就可以搜索在数据为类型(c)数据(例如,相对于共享缓冲地址哈希函数的共享高速缓存器存储体)的情况下类型(c)数据会存储在其中的共享高速缓存器存储体。如果通过该搜索找到了该数据,该数据可以视情况被重新分类为类型(a)或类型(b),并从共享高速缓存器存储体内逐出,送往该请求核,并复制到该核的专用高速缓存器中。在各实施例中,RDP查找可以与共享高速缓存器查找并行执行。虽然可能在功耗和互连业务量代价更大,但这种并行搜索可比串行搜索更快地找到所需要的数据。
在另一个重分类的操作中,类型(a)或类型(b)数据可重分类为类型(c)数据。例如,可能出现数据相对于某些指令(如,程序中的某一部分)为类型(a)或类型(b)数据,但相对于其他指令(如,程序中的不同部分)则为类型(c)。后一种指令可能因此将该数据作为非漫游数据处理。然而,因为该数据曾经为漫游数据,所以可能存在一个相应的RDP条目。因此,根据本发明的实施例,如果非漫游数据被未命中,并且该数据也在相应于共享高速缓存器地址哈希函数的共享高速缓存器存储体中没有被找到,那么就可以搜索在相应于RDP地址哈希函数的RDP中的该数据的RDP条目。如果条目被找到,那么可以给该共享高速缓存器块和相应于该RDP条目的核(该数据当前可能的位置)发送一信息。该信息可使得该数据被改变为类型(c),并从专用高速缓存器中和/或共享高速缓存器块(它们中至少一个当前存储该数据)逐出并被送往相应于共享高速缓存器地址哈希函数的共享高速缓存器存储体以及请求该数据的核。该请求核将数据置于其专用高速缓存器内。该RDP条目可以被无效。上述操作允许数据从类型(a)或类型(b)改变成类型(c)并且仍能被找到。
图4是按照本发明实施例的计算机系统400的框图,计算机系统400包含至少两个处理器(也即,“处理器芯片”或“处理器封装”)402,407和供使用的存储器。根据本发明的实施例,每个处理器402,407可包括多个核101.1-101.n。每个核101.1-101.n可以是例如一个处理器核,包括ALU(算术/逻辑单元)和FPU(浮点单元)执行单元。处理器402、407可通过各自本地MCH(存储器控制器集线器)403,409耦合到各自的存储器401、412。
该处理器402、407可进一步通过点到点(也可是,CSI或“可配置的系统互连”)接口405、414和411、416耦合到芯片组415。该处理器402、407可进一步通过点到点接口406、410相互耦合。该系统400可进一步包括高性能图形逻辑419,该逻辑可通过接口417耦合到芯片组415。芯片组415可通过接口418耦合到其他的系统组件,包括总线桥422,输入/输出设备423,音频输入/输出逻辑424,键盘/鼠标逻辑单元425,如网络接口的通信逻辑426,和数据存储器427(如硬盘之类的大容量存储器)。该数据存储器427可存储计算机可执行的代码428。系统组件可通过例如总线421,429的总线互连。
至少两个处理器402,407中的每一个可包括实现本发明的逻辑。然而,实现本发明的逻辑不需要驻留在这两个处理器中。例如,该逻辑单元可驻留在包括系统400的主板上的其他位置。
在此特别地举例说明和/或描述了本发明的几个实施例。然而,值得注意的是,在不偏离本发明的主旨和所希望的保护范围内,本发明的修改和变化都由上述教导所涵盖并且落在在所附权利要求
的范围内。
权利要求
1.一种方法,包括将数据分类为第一类型;和基于该分类,将所述数据存储于一个多核系统的共享高速缓存器内。
2.如权利要求
1中所述的方法,其中把所述数据存储于最靠近使用所述数据的核的共享高速缓存器的一个区域内。
3.如权利要求
1所述的方法,其中所述分类标识可能被再次使用的数据。
4.如权利要求
1所述的方法,其中所述分类标识可能每次被一个核使用的数据。
5.如权利要求
1所述的方法,其中所述分类至少部分基于操作所述数据的软件。
6.如权利要求
1所述的方法,进一步包括在共享高速缓存器内存取所述数据。
7.一种确实收录执行权利要求
1的方法的计算机可执行的指令的制造物品。
8.一种处理器,包括多个核;可由所述核中的两个或更多使用的共享高速缓存器;和将数据存储于共享高速缓存器中基于对该数据的分类的地址的逻辑。
9.如权利要求
8所述的处理器,所述处理器进一步包括一个指向存取所述数据的上个核的指针。
10.如权利要求
8所述的处理器,其中所述分类标识可能被再次使用的数据。
11.如权利要求
8所述的处理器,其中所述地址对应于最靠近使用所述数据的核的共享高速缓存器中的一个区域。
12.如权利要求
8所述的处理器,其中所述逻辑在一个专用高速缓存器容量逐出后把所述数据存储在所述地址。
13.如权利要求
12所述的处理器,该逻辑还在专用高速缓存器中未命中所述数据后,在所述地址搜索所述数据。
14.如权利要求
13所述的处理器,该逻辑还在所述数据没有在所述地址找到的情况下引用一个指针,该指针指向存取所述数据的上个核。
15.一种系统,包括存储器;多个处理器,耦合到所述存储器,所述处理器中的至少两个包括多个核;可由每个核使用的共享高速缓存器;和基于把数据分类为预定类型来将数据存储于共享高速缓存器中最靠近使用该数据的核的该共享高速缓存器的一个区域内的逻辑。
16.如权利要求
15所述的系统,进一步包括指向存取所述数据的上个核的指针。
17.如权利要求
15所述的系统,所述逻辑还为请求核所需的数据确定所述数据是否为预定类型,如果是,在最靠近请求核的共享高速缓存器的一个区域内搜索所述数据。
18.如权利要求
17所述的系统,所述逻辑还在所述数据在最靠近请求核的共享高速缓存器的一个区域内没有被找到的情况下,从前次存取所述数据的核的专用高速缓存器或最靠近前次存取所述数据的核的共享高速缓存器中的一个区域之一内获取所述数据。
19.如权利要求
15所述的系统,所述逻辑还在预定类型的数据在请求核的专用高速缓存器内未命中的情况下将所述数据引入到该专用高速缓存器,并且形成指向所述请求核的指针。
20.如权利要求
19所述的系统,所述逻辑还从该专用高速缓存器内逐出所述数据并将所述数据存储于最靠近请求核的共享高速缓存器内的一个区域内。
21.如权利要求
15所述的系统,其中所述分类标识可能被再次使用的数据。
22.一种设备,包括核;专用高速缓存器,与所述核相关联;共享高速缓存器;和逻辑,基于把数据分类为预定类型之一而将数据存储于共享高速缓存器中最靠近该核的该共享高速缓存器的一个区域内。
23.如权利要求
22所述的设备,其中所述预定类型包括标识数据可能被再次使用的第一类型。
24.如权利要求
22所述的设备,其中所述预定类型还包括标识数据不可能被再次使用的第二类型;和所述逻辑还基于所述分类将第二类型的数据存储于专用高速缓存器中。
25.如权利要求
22所述的设备,其中所述预定类型进一步包括标识数据可能每次由一个以上的核使用的第三类型。
26.如权利要求
22所述的设备,所述逻辑还在专用高速缓存器内未命中数据后把所述未命中的数据引入到专用高速缓存器,并且形成指向所述核的指针。
27.如权利要求
26所述的设备,所述逻辑还从专用高速缓存器内逐出所述未命中的数据,并将所述被逐出的数据存储于最靠近所述核的共享高速缓存器的一个区域内。
28.如权利要求
24所述的设备,所述逻辑还基于初始分类后的事件重新将第二类型的数据分类为第一类型的数据,或者相反。
专利摘要
本发明的实施例涉及一种用于在具有共享高速缓存器的多核系统中高速缓存数据的方法和系统。根据实施例,被核使用的数据可被分类为预定类型之一。该分类可以通过为不同的数据类型执行不同的处理类型来实现高效率。例如,分类为可能被再次使用的数据可存储于共享高速缓存器内,存储在最靠近使用该数据的核的共享高速缓存器的区域中。通过这种方式存储数据,如果数据后续地由该核获取来使用,可以降低存取时间和功耗。
文档编号G06F12/08GK1991793SQ200610064157
公开日2007年7月4日 申请日期2006年12月30日
发明者Y·-K·陈, C·J·休斯 申请人:英特尔公司导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1