CN1490730A - 非均匀存储器访问计算机系统的可重构高速缓存控制器 - Google Patents

非均匀存储器访问计算机系统的可重构高速缓存控制器 Download PDF

Info

Publication number
CN1490730A
CN1490730A CNA031524125A CN03152412A CN1490730A CN 1490730 A CN1490730 A CN 1490730A CN A031524125 A CNA031524125 A CN A031524125A CN 03152412 A CN03152412 A CN 03152412A CN 1490730 A CN1490730 A CN 1490730A
Authority
CN
China
Prior art keywords
cache
node
pipeline
array
controls
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA031524125A
Other languages
English (en)
Other versions
CN1287297C (zh
Inventor
约翰・T・罗宾森
约翰·T·罗宾森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1490730A publication Critical patent/CN1490730A/zh
Application granted granted Critical
Publication of CN1287297C publication Critical patent/CN1287297C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms

Abstract

公开了替换具有组关联高速缓冲存储器的计算机系统中的高速缓存管线的方法和结构。该方法使用可改写高速缓存替换控制阵列建立排序指南,其中通过将数据写到高速缓存替换控制阵列中可以动态改变指南。本发明根据排序指南对不同高速缓存管线的状态进行排序,并且在高速缓存命中失误时替换具有最高排序序号的高速缓存管线。

Description

非均匀存储器访问计算机系统 的可重构高速缓存控制器
技术领域
本发明涉及计算机系统中高速缓存的高速缓存控制器设计,其中在其数据被高速缓存的存储器中间存在存储器访问等待时间的差异。
背景技术
计算机系统中组关联高速缓存(set assiciative cache)设计的当前实践是当存在对应于指定组的高速缓存命中失误时,使用预定和固定的替换方法以选定组内要替换的管线(line)。例如,在使用LRU(最近最少使用)替换的4路组关联高速缓存中,为了处理对应于指定组的高速缓存命中失误,高速缓存控制器会从要替换的组内4个管线中选定最近最少引用的高速缓存管线(cache line)。在这种情况下,LRU信息被编码在高速缓存目录中,并且高速缓存控制器硬件针对每次高速缓存访问更新高速缓存目录LRU信息。为了保证速度,替换方法被实现成硬件逻辑。虽然高速缓存、高速缓存目录和高速缓存控制器的设计已经得到广泛研究,然而基础假设是替换方法为固定的,并且替换方法被实现成高速缓存控制器中的硬件逻辑。
发明内容
根据本发明的一个方面,提供了用于计算机系统中的组关联高速缓存、包含高速缓存替换控制阵列(CRCA)的高速缓存控制器。CRCA可被系统软件改写。通过适当加载CRCA的内容,被高速缓存控制器用来选择要替换的管线以处理命中失误的方法可以动态重新配置,以便改进性能,其中不对高速缓存控制器的速度产生影响。本发明可应用于存储器访问等待时间存在差异的计算机系统;例如,非均匀存储器访问(NUMA)系统,具有无压缩存储器区域的压缩存储器系统,其中某些主存储器模块以低功率模式工作以便降低系统功耗的计算机系统,等等。CRCA含有一组状态中的每个高速缓存管线状态的记录,其中已经为替换选择而定义了所述一组状态。例如,在NUMA系统的情况下,一个设计包含每个(节点,LRU位置)对的状态,其中"节点"是从其读取高速缓存管线的NUMA系统中的节点号,而"LRU位置"是0到K-1(对于K路组关联高速缓存)的数值,该数值按照最近引用原则对每个组中的管线进行排序(LRU位置0称作最近引用管线,LRU位置1称作次最近引用管线,等等)。为了处理命中失误,高速缓存控制器确定命中失误所对应的组中每个高速缓存管线的状态在CRCA中的索引,并且选择其状态具有此类最大索引的管线以进行替换。此外,通过测量高速缓存控制器,可以收集有关对各种状态的管线的引用数量的统计数据,以及有关对各种存储器的存储器访问等待时间差异的统计数据,并且这些统计数据可用于计算CRCA中状态的顺序,以便使预期的替换损失最小。
本发明包含替换具有组关联高速缓冲存储器的计算机系统中的高速缓存管线的方法。该方法使用可改写高速缓存替换控制阵列建立排序指南(guideline),其中通过将数据写到高速缓存替换控制阵列中可以动态改变指南。本发明根据排序指南对不同高速缓存管线的状态进行排序,并且在高速缓存命中失误时替换具有最高排序序号的高速缓存管线。
本发明可以将本地节点管线排序在远端节点管线前面,将远端节点管线排序在本地节点管线前面,将具有较低等待时间的节点管线排序在具有较高等待时间的节点管线前面,根据节点等待时间对节点管线进行排序,根据最近最少使用方法对每个节点内的存储器管线进行排序,根据每个节点的命中和命中失误次数,以及每个节点的存储器引用次数对计算机系统内的节点进行排序。
本发明还提供了一种包含组关联高速缓冲存储器的计算机系统和包括可改写高速缓存替换控制阵列的高速缓冲存储器控制器。指南被用来排序高速缓存管线以进行替换,并且可以通过向可改写高速缓存替换控制阵列写入不同数据来动态改变。高速缓存替换控制阵列包含多个比较器,其数量足够对每个高速缓存管线进行唯一排序。
附图说明
通过下面结合附图对本发明优选实施例进行的详细描述可以更好地理解本发明的上述和其它目的、特性和优点,其中:
图1是多节点NUMA系统的例子;
图2是具有无压缩存储器区域的压缩存储器系统;
图3是具有主存储器的系统的例子,其中主存储器处于各种具有不同访问等待时间的活跃或低功率模式;
图4是具有高速缓存目录和CRCA的高速缓存控制器;
图5A是用于严格LRU替换的CRCA(4节点NUMA例子);
图5B是用于本地管线优先替换的CRCA(4节点NUMA例子);
图5C是用于LRU/次LRU管线替换规则的CRCA(4节点NUMA例子);
图5D是用于按节点的优先级替换的CRCA(4节点NUMA例子);
图6是使用CRCA选择要替换的管线的控制逻辑(4节点NUMA例子);而
图7是编码逻辑(4节点NUMA例子)。
具体实施方式
如以下例子所示,存在期望能够重新配置高速缓存控制器所使用的替换方法的情况。非均匀存储器访问(NUMA)计算机系统包括若干节点,高速缓存层次结构,本地主存储器和互连网络,其中每个节点均含有处理器(或多个处理器)。为了方便,只考虑每个这样的节点中紧临本地主存储器上方的高速缓存。通过寻址方案在这种体系结构中提供全局实存储器空间,其中任何节点可以通过高速缓存间传送来寻址任何其他节点的实存储器。图1图解了这种高级系统体系结构。如图1所示,在典型的NUMA系统中存在若干节点,其中每个节点包括处理器(第一结点中的110,第二节点中的120和最后节点中的130),高速缓存(第一结点中的140,第二节点中的150和最后节点中的160),和在该节点本地的存储器(第一结点中的170,第二节点中的180和最后节点中的190)。通过互连网络(195)进行高速缓存间传送,高速缓存间传送允许从一个节点访问不同节点的非本地(远端)存储器。在每个节点中,高速缓存在任一时间点均会含有来自NUMA系统中本地存储器和不同远端存储器的管线的集合。
对于指定高速缓存命中失误,处理命中失误的等待时间取决于命中失误涉及本地还是远端存储器(因此称作"非均匀存储器访问")。例如,如果处理本地命中失误的时间平均为一个时间单位,则处理远端命中失误的时间平均为十个时间单位,并且可能有更高的量级。考虑以下情况:假定高速缓存是在每个组内进行LRU替换的4路组关联,并且假定存在高速缓存命中失误,其中命中失误所映射到的组中的LRU管线为远端管线,而该组中的次LRU管线为本地管线。还假定对于针对任何指定组的每个存储器引用,其命中MRU(最近使用)管线的概率为40%,命中次MRU管线的概率为25%,命中次LRU管线的概率为15%,命中LRU管线的概率为10%,并且命中失误的概率为10%。如果LRU管线被替换(为远端管线),则预计损失可以被估测为0.1*10=1.0个存储器访问时间单位。然而如果次LRU管线被替换(为本地管线),则预计损失可以被估测为0.15*1=0.15个时间单位。因此,在这个具体情况下,最好替换次LRU管线,而不是严格遵循LRU替换。这个例子说明,在NUMA系统的情况下,通过不仅考虑组关联高速缓存中每个组的每个管线的LRU位置,而且考虑根据其LRU位置对每个管线的高速缓存命中的发生概率,以及处理命中失误所需的平均时间(取决于管线是本地管线还是远端存储器中的一个内的管线),可以得到对处理高速缓存命中失误的存储器访问等待时间的改进。因此本发明的目的是提供一种机构,利用该机构可以重新配置高速缓存控制器的替换逻辑,从而通过考虑到这些附加因素而改进NUMA系统中的平均存储器访问等待时间。
期望具有重新配置高速缓存控制器的替换逻辑的另一个例子是压缩存储器系统。在这种系统中,主存储器被分成若干逻辑上尺寸固定的区段(压缩单位,也被称作管线),但是以压缩格式物理存储每个这样的逻辑区段(其中在不能压缩的情况下以无压缩格式存储区段)。这种系统的一个实现方式是利用主存储器和更高级别高速缓存之间的高速缓存;在高速缓存命中失误时解压缩管线;并且在回写修改的高速缓存管线时压缩管线。图2图解了用于这种压缩存储器系统的高级系统体系结构:处理器和一级(L1)与二级(L2)高速缓存(210、220)一起共享较大的L3高速缓存(230),其中在L3高速缓存中以非压缩格式存储数据。当进行高速缓存回写时,数据在被存储在主存储器(260)之前由压缩器(240)压缩;相反地,在高速缓存命中失误时,当从主存储器(260)读取数据时由解压缩器(250)解压缩。有关这种计算机体系结构的更加详细的讨论请参见以下文献:R.B.Tremaine,P.A.Franaszek,J.T.Robinson,C.O.Schulz,T.B.Smith,M.E.Wazlowski和P.M.Bland,IBM存储器扩充技术(IBM MemoryExpansion Technology)(MXT),IBM Journal of Res.&Develop.45,2(2001年3月),271-285页;P.A.Franaszek和J.T.Robinson,压缩随机访问存储器的内部组织(On internal organizationin compressed random access memories),IBM Journal of Res.&Develop.45,2(2001年3月),259-270页;和P.A.Franaszek,P.Heidelberger,D.E.Poff和J.T.Robinson,压缩存储器机器的算法和数据结构(Algorithms and data structures for compressed-memorymachines),IBM Journal of Res.&Develop.45,2(2001年3月),245-258页。
在这种系统中,因性能原因期望以非压缩格式存储存储器的某些部分。虽然实际上通常不会连续存储非压缩区域,然而为了便于说明,图2中将非压缩存储器区域的集合示出为非压缩存储器270。针对非压缩存储器的存储器引用避免了解压缩等待时间,于是速度明显更快。为了便于举例,假定对非压缩存储器的存储器引用的速度快10倍,则上述NUMA系统的例子直接适用于具有非压缩存储器区域的压缩存储器系统(也就是说,对于用于说明在考虑存储器访问等待时间时非LRU替换的潜在益处的例子而言,NUMA系统中的本地存储器对应于压缩存储器系统中的非压缩存储器,NUMA系统中的远端存储器对应于压缩存储器系统中的压缩存储器)。
期望具有重新配置高速缓存控制器的替换逻辑的机构的另一个例子是计算机系统,其中为了降低功耗,某些主存储器模块在低功率模式下工作。例如在文章"控制DRAM功率模式的硬件和软件技术(Hardware and Software Techniques for Controlling DRAM PowerModes)",Delaluz等人,IEEE计算机学报,Vol.50,No.11,2001年11月,1154-1173页中描述了DRAM存储器的各种低功率模式。在功耗和速度之间存在折衷:DRAM的低功率模式增加了存储器访问等待时间。图3示出了具有处于各种低功率模式的主存储器模块的计算机系统的例子,其中具有处理器(310),高速缓存(320),处于通常的活跃(全功率)模式的存储器模块(330),处于增加了存储器访问等待时间的后备功率模式的存储器模块(340),和处于具有非常高的存储器访问等待时间的断电功率模式的存储器模块(350)。于是,类似于上述例子,存在这样的情况,其中通过使用考虑到每个高速缓存管线所来自的存储器模块的存储器等待时间的替换方法,可以实现改进的预计高速缓存性能。
另一个例子涉及指定组中每个管线的修改状态。为了替换修改的管线,对于内部存储(store-in)高速缓存(常见于今天的高性能高速缓存),有必要首先将管线回写到存储器(实际上,通常通过将修改的管线转移到回写缓冲区来进行回写,并且回写以异步方式进行)。然而可以不经回写地替换干净(即未修改)的管线。于是,与干净管线相比,当替换修改的管线时会包括附加的时间,并且在替换方法考虑到这个信息的情况下,这个信息可用于改进预计的高速缓存性能。
如上所述,存在许多例子,其中与使用固定和预定方法,例如实现成高速缓存控制器中的硬件逻辑的LRU替换相反,通过使用考虑到替换指定组中每个管线的预计损失的替换方法,可以改进组关联高速缓存的预计高速缓存性能。然而通常不可能在设计时预测预计损失会有多少。虽然在某些情况下可以针对指定计算机系统设计(例如与NUMA系统中远端存储器相反的本地存储器,所使用的DRAM存储器的指定细节,互连网络速度,以及许多其它设计详细)预测存储器访问等待时间的差异,然而这些差异会因工作负载和其它因素(例如与NUMA系统的互连网络中的冲突的相关性)而改变。此外,通常不能预测重新引用指定组中每个高速缓存管线的概率,因为这种预测的工作负载非常高。因此本发明的目的是提供一种机构,利用该机构可以动态重新配置高速缓存控制器的替换逻辑,并且不影响高速缓存控制器的速度。
首先通过高速缓存替换控制阵列(后面称作CRCA)的内容的某些例子描述本发明。CRCA是高速缓存控制器中的阵列,可通过系统软件改写,该阵列控制高速缓存控制器使用的替换方法。于是,通过向CRCA写入新数值可以重新配置高速缓存控制器使用的替换方法。如上所述,高速缓存控制器设计的当前实践是使用在硬件逻辑中实现的固定和预定的替换选择方法;使用CRCA控制替换选择是本发明提供的一个差别。图4中从高层图解了CRCA的使用,其中高速缓存控制器逻辑410使用高速缓存目录420和CRCA 430,以便当存在对应于指定组的高速缓存命中失误时,确定用于在该组中进行替换的高速缓存管线。CRCA的格式和内容通常取决于高速缓存控制器设计所针对的系统的类型(例如NUMA系统,可伸缩NUMA系统,具有非压缩存储器区域的压缩存储器系统,具有处于各种活跃和低功率模式的存储器模块的计算机系统,等等)。针对4节点NUMA系统(如上所述,并且如针对图1中一般的多节点情况所图解的)的情况描述下面的例子,其中高速缓存(140,150,...,160)为4路组关联。对于这些例子,针对4节点NUMA系统中的节点0示出CRCA的内容;针对系统的其它节点则以简单方式修改内容。对于这些例子,还假定存储器访问等待时间对于系统的每个节点会有所不同,也就是说,对于从节点0到其本地存储器,以及节点1、2和3中的远端存储器的存储器引用会存在4个显著不同的预计存储器访问等待时间(随后会描述支持高度可伸缩NUMA系统的修改)。还假定指定组中4个高速缓存管线的每个的LRU位置由高速缓存控制器维护,并且在高速缓存目录中记录(这在当前使用LRU替换的高速缓存中是典型的)。在指定这些假设的情况下,高速缓存中每个管线可以处于16个可能状态中的一个,而这些可能状态是和替换选择目的有关的:存在4个LRU位置(即0、1、2和3,其中0是MRU管线,1是次MRU管线,2是次LRU管线,3是LRU管线),和4个从其读取高速缓存管线的可能节点(节点0、1、2和3)。
概括地讲,CRCA包含在为进行替换选择而定义的状态集合,即高速缓存管线的可能状态中每个状态的记录,并且这些状态在CRCA中的顺序决定选择哪个高速缓存管线进行替换。更具体地,对于具有4路组关联高速缓存的4节点NUMA系统,CRCA会包含16个具有指定顺序的记录。每个这样的记录在CRCA中均具有索引,在这个例子中范围为0到15,并且以下述方式选择高速缓存管线进行替换。对于高速缓存命中失误所对应的组中4个高速缓存管线的每一个,本发明找到管线的(LRU位置,节点)状态。对于这4个状态中的每一个(有必要是4个不同状态,因为每个高速缓存管线具有不同的LRU位置),本发明找到状态在CRCA中的索引。接着,本发明选择其状态在CRCA中具有最大索引的高速缓存管线进行替换。
例如,在具有4路组关联高速缓存的4节点NUMA系统的情况下,可以按下述方式写入CRCA。图5A示出了实现严格LRU替换的CRCA。这实现了严格的LRU替换,因为具有LRU位置0(即MRU管线)的4个状态具有最小CRCA索引(0到3),具有LRU位置1(即次MRU管线)的4个状态具有其次的CRCA索引(4到7),具有LRU位置2(即次LRU管线)的4个状态具有再次的CRCA索引(8到11),具有LRU位置3(即LRU管线)的4个状态具有最大CRCA索引(12到15)。
作为另一个例子,在4节点NUMA系统中,存储器访问在本地节点和远端节点之间是非常不均匀的,并且如果组中存在不止一个管线,则使用LRU本地管线选择本地管线而不是远端管线来替换总是有利的。在这个例子中,假定存储器访问时间对于远端节点大约是均匀的,所以如果在组中没有本地管线,即组中的所有管线均是远端管线,则会选择LRU管线。图5B示出了实现这个替换方法的CRCA(其中如上所述,针对节点0示出了CRCA,即节点0是本地节点)。为了看到这个CRCA实现先前描述的替换方法的情况,首先注意管线为本地管线的那些状态(即具有节点0的那些状态)均具有最大CRCA索引(12到15),因此会选择具有这些状态中的一个的高速缓存管线进行替换(如果存在一个)。还注意,这4个状态按照LRU位置排序,使得如果存在不止一个本地管线,则会选择LRU管线进行替换。如果组中没有本地管线,则所有管线均会处于CRCA中具有索引0到11的状态中的一个上。  注意,这些均按照LRU位置排序,即具有LRU位置0的状态首先出现(具有索引0、1、2),随后是具有LRU位置1的状态(具有索引2、3、4),等等。因此,如果组中的所有管线是远端管线,则会选择LRU管线进行替换。
现在提供另一个说明具体替换规则的实现的例子。这种替换规则(在4节点NUMA系统的情况下)如下所述:始终替换LRU管线,除非LRU管线是远端管线并且次LRU管线是本地管线,在这种情况下替换次LRU管线。图5C示出了实现这个替换规则的CRCA。注意,如果在CRCA索引14和15处具有LRU位置2或3的本地管线出现在组中,则首先选择这些本地管线进行替换,否则替换选择遵循LRU顺序(CRCA阵列索引0到13)。于是,附图5C的CRCA实现了先前描述的规则。
作为另一个例子,从4节点NUMA系统中节点0的存储器访问时间是高度非均匀的,其中对节点3的远端存储器具有非常高的等待时间,对节点2的远端存储器具有高的等待时间,对节点1的远端存储器具有中等等待时间,并且对本地存储器具有低等待时间。在这种情况下,期望按照节点号严格划分高速缓存替换的优先级,其中通过使用LRU从来自相同节点的管线中间选择管线,来自节点0的管线具有最高替换优先级,来自节点1的管线具有次最高替换优先级,来自节点2的管线具有再次的最高替换优先级,来自节点3的管线具有最低替换优先级。图5D示出了实现这个替换方法的CRCA,其中在CRCA索引12到15上来自节点0的管线具有最高替换优先级,在CRCA索引8到11上来自节点1的管线具有次最高替换优先级,等等,并且按照LRU位置排序来自相同节点的组管线。
下面是如何计算CRCA的内容以便使预计替换损失最小的例子。这个计算依赖如下所述的高速缓存访问统计数据集合。为了说明这个例子,假定测量高速缓存控制器,以便收集对LRU位置0、1、2、3上的管线的高速缓存命中的计数,即C[0]、C[1]、C[2]和C[3],命中失误所导致的对每个节点的存储器引用所使用的总存储器访问周期的计数,即T[0]、T[1]、T[2]和T[3],以及对每个节点的存储器引用(命中失误所导致)的计数,即R[0]、R[1]、R[2]、R[3]。注意,虽然当前的高速缓存控制器不具有针对这个详细级别的性能测量,然而高速缓存控制器设计的当前趋势是提供更多的性能测量。在提供这些计数器的情况下,可以通过与C[p]×(T[n]/R[n])成比例的方式估测替换LRU位置p上来自节点n的管线的损失。注意,如果预计引用的位置(locality)在节点中间会有所不同,则可以维护计数器C[p,n]的阵列,其中C[p,n]是对来自节点n的LRU位置p上的管线的命中的计数,并且替换损失的估测会与C[p,n]×(T[n]/R[n])成比例(然而这个方案在高速缓存控制器中使用了更多的计数器)。这些估测替换损失的方法类似于例如在美国专利6,385,699,"根据对象替换损失和引用概率管理对象存储(Managing an Object Store based on Object Replacement Penaltiesand Reference Probabilities)",Bozman,Robinson和Tetzlaff,2002年5月7日中描述的替换损失估测(虽然该专利描述的方案更具有普遍性,并且不具有以适应不同尺寸为目的、不适于高速缓存控制器硬件但适于软件管理的高速缓存的适当约束,这是一个突出的基本差别),该专利被转让给IBM,并且这里参考引用了该专利。在任何情况下,只要计算出数值C[p]×(T[n]/R[n])或用于第二方案的C[p,n]×(T[n]/R[n]),则对于每个(节点,LRU位置)对,通过按照替换损失的降序对状态进行排序,可以计算使预计替换损失最小的CRCA。在这种情况下,系统软件会周期性地读取如上所述的计数器,计算使预计替换损失最小的CRCA,写入CRCA并且复位计数器。可选地,在缺乏对这个详细级别的高速缓存控制器性能测量的情况下,通过使用例如系统性能模型的跟踪-驱动或执行-驱动器模拟,可以利用对指定工作负载的脱机分析来计算CRCA。
前面提供了有关CRCA的可能内容的例子,以及有关如何使用性能统计数据,或在缺乏性能统计数据的情况下通过脱机分析计算使得预计替换损失最小的CRCA的例子,下面会更详细地描述高速缓存控制器替换逻辑中的CRCA的操作。内容可寻址存储器(或CAM,也被称作关联存储器)包括保存CAM的存储器内容的寄存器阵列,和比较器阵列,所述比较器允许同时将CAM输入与CAM中存储的每个数值相比较。通过扩充比较器阵列,可以同时将多个CAM输入与CAM中存储的每个数值相比较;如果存在N个CAM输入,这会被称作N端口CAM。注意,具有N个端口并且尺寸为M(即CAM保存M个数值)的CAM需要M×N个比较器并且具有M×N个输出。每个这样的输出或者为"真"(比较结果为相等),或者为"假"(比较结果为不相等)。图6概述了高速缓存控制器的用于选择要替换的管线的硬件逻辑,其中假定为4节点NUMA的例子,具有4路组关联高速缓存,和如图5A到5D所示的CRCA格式。每个CRCA记录均包括(节点,LRU位置)对,在这个例子中需要4位(2位用于节点号,2位用于LRU位置)。通过使用高速缓存目录610,高速缓存控制器逻辑620找到命中失误所对应的组中的管线的4个状态(节点,LRU位置)。这4个状态作为4个CAM输入被传送到4端口16×4位CAM 630(即,CAM存储器存储16个4位值,并且具有4个4位输入和4组输出(其中每组具有16个1位输出))。可改写CRCA被实现成CAM 630的寄存器阵列内容CRCA[0]到CRCA[15]。CAM输出的结果是4×16=64个CAM输出的4个确切输出上的4个"比较相等"信号(因为每个管线必须具有不同和特定的状态)。编码逻辑640选择具有"比较相等"的最大CAM输出,并且将其编码成范围为0到3、对应于产生这个输出的CAM输入的数值。最终,这个数值被用作针对组中高速缓存管线的索引,以便选择要替换的高速缓存管线。
图7图解了图6的编码逻辑部件640的实现。利用16个"或"门710,根据连续的4 CAM输出组确定16个状态信号state[i](0<=i<=15)。找到具有最大索引的"真"状态信号,并且利用16线-4线二进制优先级编码器将其索引编码成4位二进制数state num[0:3]。利用16个4线-2线二进制编码器730,根据连续的4 CAM输出组产生16个2位高速缓存管线号line_num[i,j](0<=i<=15;j=0,1)。最终,通过2个16线-1线复用器740产生编码逻辑的2位管线索引输出,其中4位状态号state_num[0:3]选择适当的高阶和低阶管线号位(line num[i,0]和line_num[i,1])。
本领域的技术人员自然会想到可选的等价硬件实现。具体地,在图6和7图解的设计中,考虑到可以从不选择替换具有对应于CRCA索引0、1和2的状态的管线,可以显著减少门的数量(使用定制逻辑设计)。这只是由于会选择具有最高的对应CRCA索引的管线,并且由于存在4个管线,这个索引必须为3或更大。这意味着,从CAM 630开始,可以省略保存CRCA[0]、CRCA[1]和CRCA[2]的寄存器,并且也可以省略所有依赖这些寄存器的数值的后续逻辑。虽然所产生的优化设计在概念上不象示出的设计那样清楚,然而它在替换选择方面是逻辑等价的。在这个具体情况下,这个优化会将门数量减少大约13/16,即大约80%。
前面详细描述了CRCA在具有4路组关联高速缓存的4节点NUMA系统中的使用,上述内容的各种概括如下所述。为了更容易地支持NUMA系统的可伸缩性,作为第一个例子,不是在CRCA中具有针对每个(节点,LRU位置)对的记录,而是使这些记录的"节点"分量可以只具有2个对应于本地或远端的数值。也就是说,在这个例子中,所有远端节点会被组合在一起,并且每个不同节点使用的高速缓存替换控制阵列会具有8个记录(假定为4路组关联高速缓存),无论系统中节点的数量如何。
作为第二个略微复杂的有关可伸缩性支持的例子,NUMA节点可以被分类成(1)本地,(2)低等待时间远端,(3)中等等待时间远端,和(4)高等待时间远端。通过使用例如上述硬件定时器T[n]和引用计数器R[n],系统软件会将所有远端节点(在任何指定本地节点上)分类成远端节点类别中的一个。另外,每个高速缓存控制器会具有长度等于系统中节点数量的阵列L(通过软件写入),其中根据节点i是具有这4个类别中的一个的本地节点或远端节点,每个记录L[i]具有4个数值。最后,CRCA会具有(类别,LRU位置)形式的记录,其中"类别"具有对应于上述4个节点类别的4个数值。在这个例子中,所有远端节点会被组合成3个类别,并且每个不同节点使用的CRCA会具有16个记录(假定为4路组关联高速缓存),无论系统中节点的数量如何。
最终,如前面通过背景技术部分的例子所描述的,存在不同于NUMA系统、其中对存储器的访问是非均匀的情况,包含具有非压缩存储器区域的压缩存储器系统,和某些存储器模块在各种低功率模式下工作(以降低功耗)的系统。另一个例子是替换损失取决于高速缓存管线的干净或修改状态。使用CRCA支持使这类系统的预计替换损失最小的高速缓存替换选择的应用,以简单的方式类似于CRCA在NUMA系统中的使用,因为所有这些系统和例子中的存储器访问时间的非均匀性是这些期望使用可改写CRCA的系统和例子的共同性质。
虽然前面根据优选实施例描述了本发明,然而本领域的技术人员会认识到,可以通过所附权利要求书的宗旨和范围内的修改实施本发明。

Claims (17)

1.用于计算机系统的方法,所述计算机系统具有组关联高速缓冲存储器,高速缓冲存储器控制器和可改写高速缓存替换控制阵列,所述方法包括:
由所述高速缓冲存储器控制器选择要替换的高速缓存管线以处理高速缓存命中失误,其中由所述可改写高速缓存替换控制阵列控制所述选择;
在任一时间点将每个高速缓存管线确切保持在预定状态集合中的一个状态上,使得在高速缓冲存储器中的每个组内,所述组中的每个高速缓存管线在任一时间点均处于所述预定状态集合中的、不同于所述组中每个其它高速缓存管线的状态的状态上;和
保持所述高速缓存替换控制阵列具有对应于所述预定状态集合中每个状态的记录;
其中所述选择包含:在高速缓冲存储器的每个组内,通过确定对应于所述组内每个高速缓存管线的、在所述预定状态集合中的状态的所述高速缓存替换控制阵列中的位置,选择用于替换的高速缓存管线;和根据所述高速缓存替换控制阵列中的替换优先级位置的预定顺序,选择这样的高速缓存管线以进行替换,其中该高速缓存管线具有的状态对应于所述高速缓存替换控制阵列中确定的位置中的最高替换优先级位置。
2.一种计算机系统,包括:
组关联高速缓冲存储器;
在操作中连接到所述组关联高速缓冲存储器的高速缓冲存储器控制器;和
在操作中连接到所述高速缓冲存储器控制器的可改写高速缓存替换控制阵列,
其中所述可改写高速缓存替换控制阵列包括比较器阵列,其中比较器的数量的量级为所述高速缓存替换控制阵列中记录的数量与组关联度的乘积,
其中所述比较器阵列被构造成允许并行比较高速缓存组中每个管线的状态和所述高速缓存替换控制阵列中的每个记录,其中所述并行比较的结果是若干相等比较;
其中所述可改写高速缓存替换控制阵列适于,根据所述高速缓存替换控制阵列中替换优先级位置的预定顺序,找到与所述高速缓存替换控制阵列中具有最高替换优先级的记录具有相等比较的高速缓存管线,从而选择所述高速缓存组中要替换的高速缓存管线。
3.在具有组关联高速缓冲存储器的计算机系统中替换高速缓存管线的方法,所述方法包括:
使用可改写高速缓存替换控制阵列建立排序指南,其中通过将数据写到所述可改写高速缓存替换控制阵列中可以动态改变所述指南;
根据所述排序指南对不同高速缓存管线的状态排序;和
在高速缓存命中失误时替换具有所述排序的最高序号的高速缓存管线。
4.如权利要求3所述的方法,其中所述排序将本地节点管线排序在远端节点管线前面。
5.如权利要求3所述的方法,其中所述排序将远端节点管线排序在本地节点管线前面。
6.如权利要求3所述的方法,其中所述排序将具有较低等待时间的节点管线排序在具有较高等待时间的节点管线前面。
7.如权利要求3所述的方法,其中所述排序根据节点等待时间对节点管线进行排序,并且根据最近最少使用方法对每个节点内的存储器管线进行排序。
8.如权利要求3所述的方法,其中所述排序根据每个节点的命中和命中失误数量,以及每个节点的存储器引用数量对所述计算机系统内的节点进行排序。
9.如权利要求3所述的方法,还包括从所述组关联高速缓冲存储器向非均匀主存储器写入,所述主存储器包括以下部件的至少一个:
压缩主存储器;
非压缩主存储器;和
在比其它主存储器部分更低的功率水平上工作的低功率模式主存储器。
10.一种计算机系统,包括:
组关联高速缓冲存储器;和
包括可改写高速缓存替换控制阵列的高速缓冲存储器控制器,
其中通过将不同数据写入到所述可改写高速缓存替换控制阵列,可以动态改变被用来排序用于替换的高速缓存管线的指南。
11.如权利要求10所述的计算机系统,其中所述高速缓存替换控制阵列包含多个比较器,其数量足够对所述每个高速缓存管线进行唯一排序。
12.如权利要求10所述的计算机系统,其中所述指南将本地节点管线排序在远端节点管线前面。
13.如权利要求10所述的计算机系统,其中所述指南将远端节点管线排序在本地节点管线前面。
14.如权利要求10所述的计算机系统,其中所述指南将具有较低等待时间的节点管线排序在具有较高等待时间的节点管线前面。
15.如权利要求10所述的计算机系统,其中所述指南根据节点等待时间对节点管线进行排序,并且根据最近最少使用方法对每个节点内的存储器管线进行排序。
16.如权利要求10所述的计算机系统,其中所述指南根据每个节点的命中和命中失误数量,以及每个节点的存储器引用数量对所述计算机系统内的节点进行排序。
17.如权利要求10所述的计算机系统,还包括连接到所述组关联高速缓冲存储器的非均匀主存储器,所述主存储器包括以下部件的至少一个:
压缩主存储器;
非压缩主存储器;和
在比其它主存储器部分更低的功率水平上工作的低功率模式主存储器。
CNB031524125A 2002-10-16 2003-07-30 可重构高速缓存控制器的方法和系统 Expired - Fee Related CN1287297C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/272,032 US6961821B2 (en) 2002-10-16 2002-10-16 Reconfigurable cache controller for nonuniform memory access computer systems
US10/272,032 2002-10-16

Publications (2)

Publication Number Publication Date
CN1490730A true CN1490730A (zh) 2004-04-21
CN1287297C CN1287297C (zh) 2006-11-29

Family

ID=32092559

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB031524125A Expired - Fee Related CN1287297C (zh) 2002-10-16 2003-07-30 可重构高速缓存控制器的方法和系统

Country Status (5)

Country Link
US (1) US6961821B2 (zh)
JP (1) JP3871331B2 (zh)
KR (1) KR100514677B1 (zh)
CN (1) CN1287297C (zh)
TW (1) TWI238935B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100442249C (zh) * 2004-09-30 2008-12-10 国际商业机器公司 用于高速缓存器顺序列表的动态尺寸确定的系统和方法
CN100464290C (zh) * 2007-09-10 2009-02-25 杭州华三通信技术有限公司 缓存管理系统
CN101620588B (zh) * 2008-07-03 2011-01-19 中国人民解放军信息工程大学 高效能计算机中可重构部件的一种连接与管理方法
CN103383672A (zh) * 2012-05-01 2013-11-06 辉达公司 高速缓存控制以减少事务回滚
CN104932990A (zh) * 2015-06-03 2015-09-23 华为技术有限公司 一种高速缓冲存储器中数据块的替换方法和装置
CN105264342A (zh) * 2013-06-28 2016-01-20 英特尔公司 嵌入的ecc地址映射
CN105320494A (zh) * 2014-07-09 2016-02-10 英特尔公司 带有一致的和非一致的子系统的存储器排序
CN104395892B (zh) * 2012-06-27 2018-02-13 阿尔卡特朗讯公司 在缓存系统的c项的存储缓存器中管理n项的列表的存储的方法

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7246102B2 (en) * 2001-12-21 2007-07-17 Agere Systems Inc. Method of improving the lookup performance of three-type knowledge base searches
US7237067B2 (en) * 2004-04-22 2007-06-26 Hewlett-Packard Development Company, L.P. Managing a multi-way associative cache
US7302543B2 (en) * 2004-06-16 2007-11-27 Nec Laboratories America, Inc. Compressed memory architecture for embedded systems
US7287122B2 (en) * 2004-10-07 2007-10-23 International Business Machines Corporation Data replication in multiprocessor NUCA systems to reduce horizontal cache thrashing
US20060179231A1 (en) * 2005-02-07 2006-08-10 Advanced Micron Devices, Inc. System having cache memory and method of accessing
US7930484B2 (en) * 2005-02-07 2011-04-19 Advanced Micro Devices, Inc. System for restricted cache access during data transfers and method thereof
JP4368320B2 (ja) * 2005-03-16 2009-11-18 富士通株式会社 情報処理システム,パイプライン処理装置,ビジー判定プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
US7218566B1 (en) * 2005-04-28 2007-05-15 Network Applicance, Inc. Power management of memory via wake/sleep cycles
US7991959B2 (en) * 2005-05-16 2011-08-02 Texas Instruments Incorporated Visualizing contents and states of hierarchical storage systems
US8606998B2 (en) * 2006-08-24 2013-12-10 Advanced Micro Devices, Inc. System and method for instruction-based cache allocation policies
JP2008090395A (ja) * 2006-09-29 2008-04-17 Hitachi Ltd 計算機システム、演算用ノード及びプログラム
WO2008043670A1 (en) * 2006-10-10 2008-04-17 International Business Machines Corporation Managing cache data
US7711678B2 (en) * 2006-11-17 2010-05-04 Microsoft Corporation Software transaction commit order and conflict management
JP5137002B2 (ja) 2007-01-25 2013-02-06 株式会社メガチップス メモリコントローラ
JP5226010B2 (ja) * 2007-12-10 2013-07-03 パナソニック株式会社 共有キャッシュ制御装置、共有キャッシュ制御方法及び集積回路
US7984240B2 (en) * 2008-03-04 2011-07-19 International Business Machines Corporation Memory compression implementation in a system with directly attached processor memory
US7966455B2 (en) * 2008-03-04 2011-06-21 International Business Machines Corporation Memory compression implementation in a multi-node server system with directly attached processor memory
US8037251B2 (en) 2008-03-04 2011-10-11 International Business Machines Corporation Memory compression implementation using non-volatile memory in a multi-node server system with directly attached processor memory
US7930483B2 (en) * 2008-03-04 2011-04-19 International Business Machines Corporation Associativity implementation in a system with directly attached processor memory
US8725927B2 (en) * 2008-10-15 2014-05-13 Micron Technology, Inc. Hot memory block table in a solid state storage device
US8527726B2 (en) 2008-11-13 2013-09-03 International Business Machines Corporation Tiled storage array with systolic move-to-front reorganization
US8543768B2 (en) 2008-11-13 2013-09-24 International Business Machines Corporation Memory system including a spiral cache
US8868838B1 (en) 2008-11-21 2014-10-21 Nvidia Corporation Multi-class data cache policies
US8103894B2 (en) * 2009-04-24 2012-01-24 International Business Machines Corporation Power conservation in vertically-striped NUCA caches
US8068373B1 (en) 2010-10-25 2011-11-29 Network Appliance, Inc. Power management of memory via wake/sleep cycles
US8738962B2 (en) 2010-11-17 2014-05-27 International Business Machines Corporation Memory mirroring with memory compression
US8495267B2 (en) 2010-11-24 2013-07-23 International Business Machines Corporation Managing shared computer memory using multiple interrupts
JP5868213B2 (ja) * 2012-02-24 2016-02-24 三菱電機株式会社 キャッシュ制御装置、及びキャッシュ制御方法
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
US9767042B2 (en) * 2015-02-25 2017-09-19 Intel Corporation Enhancing cache performance by utilizing scrubbed state indicators associated with cache entries
US9832277B2 (en) * 2015-11-13 2017-11-28 Western Digital Technologies, Inc. Systems and methods for adaptive partitioning in distributed cache memories
US10521432B2 (en) * 2016-11-10 2019-12-31 Sap Se Efficient execution of data stream processing systems on multi-core processors
CN110879797B (zh) * 2019-10-31 2021-09-07 西安交通大学 高速可重构处理器配置信息缓存替换方法及存储体系结构
EP3876104B1 (en) * 2020-03-03 2023-08-02 Technische Universität München Method for evicting data from memory
CN114564882A (zh) * 2022-01-29 2022-05-31 内蒙古工业大学 基于离散事件的边缘深度学习模拟器的构建与应用

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5924116A (en) * 1997-04-02 1999-07-13 International Business Machines Corporation Collaborative caching of a requested object by a lower level node as a function of the caching status of the object at a higher level node
US6591347B2 (en) * 1998-10-09 2003-07-08 National Semiconductor Corporation Dynamic replacement technique in a shared cache
US6317778B1 (en) * 1998-11-23 2001-11-13 International Business Machines Corporation System and method for replacement and duplication of objects in a cache
US6633891B1 (en) * 1998-11-24 2003-10-14 Oracle International Corporation Managing replacement of data in a cache on a node based on caches of other nodes
US6272598B1 (en) * 1999-03-22 2001-08-07 Hewlett-Packard Company Web cache performance by applying different replacement policies to the web cache
US6360298B1 (en) * 2000-02-10 2002-03-19 Kabushiki Kaisha Toshiba Load/store instruction control circuit of microprocessor and load/store instruction control method
US6738865B1 (en) * 2000-06-09 2004-05-18 International Business Machines Corporation Method, system, and program for demoting data from cache based on least recently accessed and least frequently accessed data
JP2002140234A (ja) * 2000-11-02 2002-05-17 Hitachi Ltd キャッシュ装置

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100442249C (zh) * 2004-09-30 2008-12-10 国际商业机器公司 用于高速缓存器顺序列表的动态尺寸确定的系统和方法
CN100464290C (zh) * 2007-09-10 2009-02-25 杭州华三通信技术有限公司 缓存管理系统
CN101620588B (zh) * 2008-07-03 2011-01-19 中国人民解放军信息工程大学 高效能计算机中可重构部件的一种连接与管理方法
CN103383672B (zh) * 2012-05-01 2016-05-11 辉达公司 高速缓存控制以减少事务回滚
CN103383672A (zh) * 2012-05-01 2013-11-06 辉达公司 高速缓存控制以减少事务回滚
US10019381B2 (en) 2012-05-01 2018-07-10 Nvidia Corporation Cache control to reduce transaction roll back
CN104395892B (zh) * 2012-06-27 2018-02-13 阿尔卡特朗讯公司 在缓存系统的c项的存储缓存器中管理n项的列表的存储的方法
CN105264342A (zh) * 2013-06-28 2016-01-20 英特尔公司 嵌入的ecc地址映射
US10031802B2 (en) 2013-06-28 2018-07-24 Intel Corporation Embedded ECC address mapping
CN105320494A (zh) * 2014-07-09 2016-02-10 英特尔公司 带有一致的和非一致的子系统的存储器排序
US9875185B2 (en) 2014-07-09 2018-01-23 Intel Corporation Memory sequencing with coherent and non-coherent sub-systems
CN105320494B (zh) * 2014-07-09 2018-10-26 英特尔公司 用于操作处理的方法、系统和设备
US10261904B2 (en) 2014-07-09 2019-04-16 Intel Corporation Memory sequencing with coherent and non-coherent sub-systems
CN104932990B (zh) * 2015-06-03 2018-05-11 华为技术有限公司 一种高速缓冲存储器中数据块的替换方法和装置
CN104932990A (zh) * 2015-06-03 2015-09-23 华为技术有限公司 一种高速缓冲存储器中数据块的替换方法和装置

Also Published As

Publication number Publication date
CN1287297C (zh) 2006-11-29
TW200412499A (en) 2004-07-16
US6961821B2 (en) 2005-11-01
KR100514677B1 (ko) 2005-09-14
KR20040034388A (ko) 2004-04-28
JP3871331B2 (ja) 2007-01-24
JP2004164606A (ja) 2004-06-10
US20040078524A1 (en) 2004-04-22
TWI238935B (en) 2005-09-01

Similar Documents

Publication Publication Date Title
CN1287297C (zh) 可重构高速缓存控制器的方法和系统
Chen et al. C-pack: A high-performance microprocessor cache compression algorithm
Tremaine et al. IBM memory expansion technology (MXT)
US9612955B2 (en) High-performance indexing for data-intensive systems
US10067881B2 (en) Compression and caching for logical-to-physical storage address mapping tables
US7243191B2 (en) Compressing data in a cache memory
US20160371190A1 (en) Selective compression in data storage systems
US7143238B2 (en) Mechanism to compress data in a cache
US7831624B2 (en) Skip list with address related table structure
US20070005901A1 (en) Adaptive input / output compressed system and data cache and system using same
Cheng et al. LRU-SP: a size-adjusted and popularity-aware LRU replacement algorithm for web caching
CN1659525A (zh) 简化了缓存替换策略的实现的多线程缓存方法和装置
US11520589B2 (en) Data structure-aware prefetching method and device on graphics processing unit
US11422934B2 (en) Adaptive address tracking
CN100538664C (zh) 存储带压缩的重排序数据的系统、方法和装置
US11409657B2 (en) Adaptive address tracking
CN115427941A (zh) 数据管理系统和控制的方法
On et al. Lazy-update B+-tree for flash devices
US20230076729A2 (en) Systems, methods and devices for eliminating duplicates and value redundancy in computer memories
Jin et al. Lazy-split B+-tree: a novel B+-tree index scheme for flash-based database systems
Li et al. Algorithm-Switching-Based Last-Level Cache Structure with Hybrid Main Memory Architecture
KR102605343B1 (ko) 비휘발성 메모리 모듈을 포함하는 컴퓨팅 시스템 및 그 방법
Schwalb et al. Cache conscious column organization in in-memory column stores
Zhang Towards Space-Efficient High-Performance In-Memory Search Structures
Ghasemazar Efficient in-hardware compression of on-chip data

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20061129