CN110018971A - 缓存替换技术 - Google Patents

缓存替换技术 Download PDF

Info

Publication number
CN110018971A
CN110018971A CN201711479277.7A CN201711479277A CN110018971A CN 110018971 A CN110018971 A CN 110018971A CN 201711479277 A CN201711479277 A CN 201711479277A CN 110018971 A CN110018971 A CN 110018971A
Authority
CN
China
Prior art keywords
cache
data
written
caching
tunnel
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
CN201711479277.7A
Other languages
English (en)
Other versions
CN110018971B (zh
Inventor
弗洛里安·朗诺斯
邬可俊
杨伟
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201711479277.7A priority Critical patent/CN110018971B/zh
Priority to PCT/CN2018/123362 priority patent/WO2019128958A1/zh
Publication of CN110018971A publication Critical patent/CN110018971A/zh
Application granted granted Critical
Publication of CN110018971B publication Critical patent/CN110018971B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • 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/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请揭示了一种缓存替换技术。该缓存替换技术应用于包含非易失性缓存的计算机系统中。根据所述缓存替换技术,在与访问地址对应的缓存集合的最近最少使用LRU路中选择多个待选择路,并分别将所述待写入数据与所述多个待选择路的样本数据进行比较获得多个汉明距离,并将值最小的汉明距离对应的路中的cache line作为待替换的cache line。本申请提供的缓存替换技术能够在保证缓存命中率的基础上降低所述计算机系统的写开销。

Description

缓存替换技术
技术领域
本发明涉及存储技术领域,尤其涉及一种缓存替换技术。
背景技术
缓存是指可以进行高速数据交换的存储器,由于其访问速率很快, 它会优先于内存与中央处理器CPU交换数据。当CPU要读取一个数据时,首先 从CPU缓存中查找,找到就立即读取并送给CPU处理。如果没有找到,就从速 率相对较慢的内存中读取并送给CPU处理,同时把这个数据所在的数据块调入 缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。通 过这种方式,提升了计算机系统的访问速度。
通常,缓存采用静态随机存取存储器(Static Random Access Memory, SRAM)来实现,但SRAM存在静态漏电问题,导致系统功耗较大。并且,SRAM 存储单元越来越难减少,导致硬件实现上存在瓶颈,且缓存的存储空间有限。随 着存储技术的发展,越来越多的非易失性存储介质由于具有访问速度快、且静态 功耗低的优点,也逐渐被作为缓存使用。然而,当采用非易失性存储器 (non-volatile memory,NVM)作为缓存时,虽然NVM不存在静态漏电问题,也 就是说NVM的静态功耗较小,但由于NVM的写功率消耗较大,因此,在将数 据写入缓存时,也会消耗较多的系统功率。
发明内容
本申请实施例中提供了一种能够减少内存功耗的缓存替换技术,并 且能够提升内存访问速度。
第一方面,本申请提供一种应用于缓存替换方法。所述方法应用于 包括缓存的计算机系统中,所述缓存包括缓存控制器以及与所述缓存控制器连接 的用于缓存数据的存储介质,所述存储介质为非易失性存储介质。根据所述方法, 在接收写请求并根据所述访问地址确定所述缓存中没有缓存对应的缓存行cache line之后,所述缓存控制器从所述访问地址对应的缓存集合中确定N个待选择路。 其中,所述缓存中包括多个缓存集合,每个缓存集合中包含有M个路,每个路 中包含有一个cache line,N的值不小于2,且M大于N。进一步的,所述缓存 控制器分别将所述待写入数据与所述N个待选择路的样本数据进行比较以获得 N个汉明距离,并将所述N个汉明距离中的最小值所对应的路中的cache line作 为待替换的cache line。其中,所述样本数据与所述待写入数据的长度相同,所 述汉明距离用于指示所述两个相同长度的数据具有的不同的对应位的数量。然后, 所述缓存控制器将所述待写入的数据写入所述存储介质中,所述待写入数据用于 替换所述待替换的cacheline。
本发明实施例提供的缓存替换方法,在采用非易失性存储介质做缓 存时,通过在与访问地址对应的缓存集合的最近最少使用LRU路中选择多个待 选择路,并分别将所述待写入数据与所述多个待选择路的样本数据进行比较获得 多个汉明距离,并将值最小的汉明距离对应的路中的cache line作为待替换的 cache line。由于所述多个待选择路是在缓存集合的LRU路中选择的,因此能够 减少因替换cache line对缓存命中率的影响。并且,由于待替换的cache line是根 据汉明距离在所述多个待选择路中确定的,汉明距离能够体现两个数据的相似性, 因此,在将所述待写入数据写入缓存以替换所述待替换cacheline时能够减少写 入的数据量,节省写数据时的功耗,降低系统的写开销。
结合第一方面,在第一种可能的实现方式中,所述方法还包括所述 缓存控制器根据所述多个缓存集合中的每一个缓存集合中的第i路的cache line 获得所述缓存集合中的第i路的样本数据,其中,所述第i路的样本数据与所述 第i路中的cache line的长度相同,第i路为所述M个路中的任意一路,i大于等 于1且小于等于M。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能 的实现方式中,所述缓存控制器采用模糊伪最近最少使用PLRU算法从所述缓存 集合的最近最少使用LRU的路中确定所述N个待选择路,其中,N=2n,n为不 小于1的整数。
结合第一方面、第一方面的第一种或第二种可能的实现方式,在第 三种可能的实现方式中,所述缓存的不同缓存集合中的第i路的样本数据相同, 其中,i大于等于0且小于等于M-1。
结合第一方面的第一种至第三种可能的实现方式中的任意一种可能 的实现方式,在第四种可能的实现方式中,所述方法还包括所述缓存控制器统计 所述第i路cacheline中的各个比特位中写入第一预设值的数量,并根据各比特 位中写入所述第一预设值的数量更新所述第i路的样本数据中的对应比特位,以 获得更新的第i路的样本数据。其中,所述第一预设值包括“1”或“0”。
结合第一方面以及第一方面的第一至第四种可能的实现方式中的任 意一种实现方式,在第五种可能的实现方式中,所述缓存集合中不同路的样本数 据不同。
第二方面,本申请实施例提供了一种计算机系统。所述计算机系统 包括缓存控制器和与所述缓存控制器连接的缓存,所述缓存为非易失性存储器, 所述缓存控制器用于执行上述第一方面以及第一方面的各种可能的实现方式中 的缓存替换方法。
第三方面,本申请实施例提供了一种缓存控制器。所述缓存控制器 应用于包含有非易失性缓存的计算机系统中。所述缓存控制器包括用于执行上述 第一方面以及第一方面的任意一种可能的实现方式中的缓存替换方法的模块。
第四方面,本申请提供了一种计算机程序产品,包括存储了程序代 码的计算机可读存储介质,所述程序代码包括的指令用于执行上述第一方面及第 一方面的任意一种实现方式中的至少一种缓存替换方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描 述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本 发明的一些实施例。
图1为本发明实施例提供的一种计算机系统的结构示意图;
图2为本发明实施例提供的一种组相连映射示意图;
图3为本发明实施例提供的一种缓存替换方法流程图;
图4为本发明实施例提供的一种访问地址结构示意;
图5为本发明实施例提供的一种搜索树的示意图;
图6为本发明实施例提供的一种缓存控制器的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发 明实施例中的附图,对本发明实施例中的技术方案进行描述。显然,所描述的实 施例仅仅是本发明一部分的实施例,而不是全部的实施例。
图1为本发明实施例提供的一种计算机系统的结构示意图。如图1 所示,计算机系统100至少可以包括处理器105、缓存110、内存控制器115以 及内存120。处理器105是计算机系统100的核心,处理器105可以调用计算机 系统100中不同的软件程序实现不同的功能。例如,处理器105能够实现对缓 存110以及内存130的访问。可以理解的是,处理器105可以是中央处理器 (central processing unit,CPU)。除了CPU外,处理器还可以是其他特定集成电 路(application specific integrated circuit,ASIC),或者是被配置成实施本发明实 施例的一个或多个集成电路。实际应用中,计算机系统还可以包括多个处理器。 为了描述方便,本发明实施例以一个处理器为例进行示例。另外,处理器可以是 单核处理器,也可以是多核处理器。在多核处理器架构中,处理器中可以包括多 个处理器核。例如,如图1所示,处理器105中可以包括一个或多个CPU核110。 可以理解的是,CPU核110只是处理器核的一种示例。在本发明实施例中不对 处理器的数量以及一个处理器中处理器核的数量进行限定。
缓存110是计算机系统100中位于处理器105与内存120之间的临 时存储器。由于缓存110的速率较快,因此,缓存110用于与CPU核108进行 高速数据交换。缓存110用于缓存内存120中的部分数据以及将要写入内存120 的数据。当处理器105访问数据时,处理器105会先在缓存110中查找,当缓存 110中没有处理器105所需访问的数据时,处理器105才访问内存120,从而加 快了处理器105的访问速率。具体的,缓存110可以包括缓存控制器112以及存 储介质114。缓存控制器112是缓存110中的控制电路,能够对存储介质114进 行访问。例如,缓存控制器112可以根据处理器105发送的读操作指令向处理器 105返回存储介质114中缓存的数据。缓存控制器112还可以根据处理器105的 写操作指令将待写入的数据缓存于缓存110的存储介质114中。并且,缓存控制 器112还可以对存储介质114中缓存的数据进行管理。本领域人员可以知道,缓 存110可以集成在处理器105中。在多核处理器系统中,每个CPU核108都可 以包含一个缓存110。
通常,缓存110由静态随机存取存储器(Static Random Access Memory,SRAM)组成。然而,SRAM存储单元越来越难减小,因此,采用SRAM 做缓存时其缓存容量受限。并且,SRAM还存在静态漏电等问题。因此,随着存 储技术的发展,越来越多的非易失性存储介质被作为缓存。例如,存储介质114 可以包括相变随机存取存储器(phase-change randomaccess memory,PCM)、阻 变随机存取存储器(resistive random access memory,RRAM)以及自旋扭矩传输 随机存取存储器(spin torque transfer RAMs,STT-RAM)等。
内存控制器115是计算机系统100内部控制内存120并且使内存120 与处理器105(例如CPU)之间交换数据的重要组成部分。实际应用中,一种情 况下,内存控制器115可以位于北桥芯片内部。在另一种情况下,可以将内存控 制器115集成在处理器105中,具体的,内存控制器115可以集成在处理器105 的基板上。可以理解的是,当内存控制器115位于北桥芯片内部时,内存控制器 需要通过北桥芯片与处理器交换数据,导致数据的延迟较大。当内存控制器115 集成在处理器105中时,内存控制115可以直接与处理器交换数据。
如图1所示,内存控制器115可以通过内存总线(例如,双倍速率 DDR总线)连接内存120。可以理解的是,实际应用中,内存控制器115还可以 通过PCI高速总线、桌面管理接口(DMI)总线等其他类型的总线与内存120 通信。
内存120用来存放操作系统中各种正在运行的软件、输入和输出数 据以及与外存交换的信息等。内存120又可以被称为主存。内存120具有访问速 度快的优点。在传统的计算机系统架构中,通常采用动态随机存取存储器 (dynamic random access memory,DRAM)作为内存120。随着非易失性存储器 (non-volatile memory,NVM)技术的发展,相变存储器(phase-change random access memory,PCM),阻变存储器(resistive random accessmemory,RRAM)、 磁性存储器(magnetic random access memory,MRAM)或铁电式存储器(ferroelectric random access memory,FRAM)等新型NVM也逐渐被作为内存 使用。在本发明实施例中不对内存120的具体存储介质类型进行限定。
本领域人员可以知道,缓存110主要用于缓存主存(例如图1中的 内存120)的一部分数据以及缓存待写入主存中的数据。由于与主存相比,缓存 Cache的容量相对较小,Cache保存的内容只是主存存储的内容的一个子集,且 Cache与主存的数据交换是以块为单位的。为了把主存中的数据缓存到Cache中, 必须应用某种函数把主存地址定位到Cache中,这称为地址映射。在将主存中的 数据按这种映射关系缓存到Cache中后,CPU执行程序时,会将程序中的主存 地址变换成Cache地址。Cache的地址映射方式通常有直接映射和组相联映射。 在直接映射方式下,主存中的一个块只能映射到Cache的某一特定块中去。直接映射是最简单的地址映射方式,它的硬件简单,成本低,地址变换速度快。但是 这种方式不够灵活,Cache的存储空间得不到充分利用。由于每个内存块只能存 放在Cache中的一个固定位置,容易产生冲突,使Cache效率下降。为了提高缓 存命中率,越来越多的存储系统采用组相连的映射方式。在本发明实施例中,缓 存110和内存120也是采用组相连映射方式。为了便于理解本方案,下面将本发 明实施例中内存120和缓存110采用的组相连映射方式进行描述。
在组相连映射方式中,将主存和Cache都分成多个组,主存中一个 组(set)内的块的数量与Cache中的组的数量相同。主存中的各块与Cache的组 号之间有固定的映射关系,但可自由映射到对应Cache组中的任何一块。换一种 表达方式,在这种映射方式下,内存块存放到哪个组是固定的,至于存到该组的 哪一块则是灵活的。例如,主存分为256组,每组8块,Cache分为8组,每组 2块。主存中的第0块、第8块……均映射于Cache的第0组,但可映射到Cache 第0组中的第0块或第1块;主存的第1块、第9块……均映射于Cache的第1 组,但可映射到Cache第1组中的第2块或第3块。在采用组相连映射方式的 cache中,每组内可以有2、4、8或16块,相应的,可以分别被称为2路组相联 Cache、4路组相联Cache、8路组相联Cache或16路组相联Cache。需要说明的 是,本发明实施例中的“组”也可以被称为“集合”。
在本发明实施例中,采用组相连映射方式将内存120中的数据映射 到缓存110中。为了描述方便,在本发明实施例中也可以将内存120中的数据块 称为内存块,将缓存110中的数据块称为缓存块或缓存行(cache line)。通常, 一个内存块的大小可以为4KB(kilobyte),一个缓存行的大小也可以为4KB。可 以理解的是,实际应用中,还可以将内存块和缓存行的大小设置为其他值。内存 块的大小与缓存行的大小相同。
图2示出了本发明实施例中内存120和缓存110的映射示意。具体 的,图2给出了内存和缓存之间的组相连映射方式示意。图2中主存和Cache 都被分成多个组(set)。如图2所示,缓存110中可以包括多个缓存集合(cache set),每个缓存集合可以包括多个缓存行(cache line)。换一种表达方式,每个 缓存集合中可以包括多路(way)数据。其中,每一路有一个缓存条目(cache entry)。 也就是说,cache entry用于指示缓存集合中的具体的路或cache line。例如,NVM 10包括cache set 1和cache set 2等多个缓存集合,缓存集合cache set 1中包含 三个路,这三个路分别通过下述三个cache entry进行指示:cacheentry 200_1、 cache entry 200_2以及cache entry 200_3。内存120的存储空间也被分成多个不 同的内存集合(set):set 1 210_1,set 2 210_2,…set N 210_N。根据组相连的映射方式,set 1 210_1中任意一个存储地址对应的内存块均可以映射到缓存110的 一个缓存集合中,但可以自由映射到该缓存集合中的任何一块。例如,set 1 210_1 中任意一个存储地址对应的内存块均可以映射到缓存110的缓存集合cache set 1 中,且可以自由映射到cache set 1中的任意一路。根据这种方式,set 1 210_1中 任意一个存储地址对应的内存块均可以映射到cache set 1中的cache entry 200_1、 cache entry 200_2或cacheentry 200_3中。
进一步的,如图2所示,一个缓存条目(cache entry)对应一行数据。 换一种表达方式,一条cache entry对应一个缓存行(cache line)。缓存110中可 以包括多个行,每一行可以存储多个字节的数据。每一条cache entry至少包括有 效位(valid bit)201、脏位(dirty bit)203、标签(tag)205以及数据(data) 207。可以理解的是,实际应用中,每一条cache entry中还可以包括纠错码信息 (Error Correcting Code,ECC),以保证存储的数据的准确性。其中,Tag 205为 主存地址的一部分,用于指示缓存行映射的内存块在内存120中的位置。Data 207 是指缓存行中缓存的内存块的数据。有效位(valid bit)201用于指示缓存行的有 效性。当valid bit位指示为有效valid时,说明该缓存行中的数据可用。当valid bit 位指示为无效invalid时,说明该缓存行中的数据不可用。脏位(dirty bit)203 用于指示缓存行中数据是否与对应的内存块中的数据相同。例如,当dirty bit位 指示为脏时,说明缓存行中的数据部分(如图2中的Data 207)与对应的内存块 中的数据不同,换一种表达方式,当dirty bit位指示为脏时,该缓存行中包含有 新数据。当dirty bit位指示为干净clean时,说明该缓存行中的数据与对应的内 存块中的数据相同。实际应用中,可以以某个值指示dirty bit位指示为脏或干净。 在此不做限定。
上面对缓存110和内存120的映射方式进行了描述。本领域技术 人员可以知道,为了提高访问速度,在进行数据访问时,处理器105可以向缓存 110发出访问请求,该访问请求中包含访问地址。缓存控制器112首先根据访问 地址确定处理器105请求访问的数据是否缓存在存储介质114中。换一种表达方 式,缓存控制器112首先根据访问地址判断所述访问请求是否能够命中缓存。当 所述访问请求命中缓存时,即在确定所述待访问地址对应的数据缓存在所述缓存 中的情况下,缓存控制器112可以直接向处理器105返回其请求访问的数据,当 所述访问请求没有命中时,也就是说,在确定所述待访问地址的数据没有缓存在 所述缓存中的情况下,处理器105会访问内存120。具体的,可以通过内存控制 器115从内存120中获取待访问地址的数据。
由于缓存110的缓存空间一般较小,因此,缓存110在数据访问过 程中,需要根据访问情况不断更新其缓存内容,以满足不断变化的访问需求。具 体来说,当数据访问命中缓存时,则可以直接访问缓存中的数据,而无需进行缓 存线(Cache line)的替换更新。当数据访问未命中缓存时,缓存控制器112需 要从当前缓存的缓存行(Cache line)中确定一待替换的Cache line,采用从内存 中读取的新的地址的Cache line来替换所述待替换的Cache line。
本领域技术人员可以知道,Cache line是缓存控制器(Cache Controller) 112的最小操作单位。换一种表达方式,当缓存控制器112将缓存114中的数据 写入内存时,缓存控制器112会按照Cache line为单位将一行line数据写到内存 中。当缓存控制器112从内存中读数据时,也是以Cache line为单位来读数据的。 为了描述方便,在本发明实施例中,一个Cache line可以表示一个Cache line的 数据。本发明实施例中的“替换Cache line”是指用从内存中读出的一个Cache line 的数据来替换Cache中的一个Cache line的数据。
现有技术中大部分的缓存替换方法的目标是优化缓存命中率,也就 是说,现有技术中主要是基于提高缓存命中率来选择待替换的cache line。然而, 当采用NVM作为缓存时,由于将数据写入NVM时,NVM的写功率消耗较大。 因此,现有技术中的缓存替换方法在将写请求中的数据写入以NVM为介质的缓 存时通常会造成较大的写开销。尤其是在组相连映射的情形下,虽然组相连能够 提高缓存命中率,但由于可以在一个cache set中任意选择一个待替换的cache line, 从而进一步加大了由于待替换的cache line选择的不合适而增加写开销的风险。 基于该问题,本发明实施例提出了一种缓存替换方法,在以非易失性存储介质作 为缓存的计算机系统中,在缓存与内存采用组相连映射的情况下,能够在提高缓 存命中率的基础上,减少缓存替换过程中写数据的开销。
下面将结合图1对本发明实施例提供的缓存替换方法进行详细的介 绍。需要说明的是,本发明实施例以缓存110中的存储介质114为非易失性存储 介质为例进行描述。图3为本发明实施例提供的一种缓存替换方法流程图。该方 法主要由缓存110中的缓存控制器112来执行。如图3所示,该方法可以包括如 下步骤。
在步骤302中,所述缓存控制器接收写请求,所述写请求中包含有 待写入的数据和访问地址。其中,所述访问地址为内存的物理地址。需要说明的 是,由于本发明实施例主要解决写数据时对非易失性缓存造成的写开销的问题, 所以本发明实施例以写请求为例进行描述。
在步骤304中,所述缓存控制器根据所述访问地址确定所述缓存中 没有缓存对应的缓存行cache line。具体的,在本步骤中,缓存控制器112可以 通过所述访问地址中的标签(tag)来确定所述待访问的地址是否命中缓存110。 换一种表达方式,缓存110可以通过所述访问地址中的标签(tag)判断其是否 缓存有该地址中的数据。下面将结合图4,对缓存控制器如何判断访问地址是否 命中缓存110进行描述。
如图4所示,缓存控制器112可以将访问地址400分成三个部分: 标签(tag)402、集合索引(set index)404以及块偏移(block offset)406。其 中,set index 404用于指示访问地址400指向的内存块映射在缓存100中的哪个 缓存集合;tag 302用于指示访问地址400指向的内存块在内存120中的位置。 块偏移(block offset)406用于指示待写入的数据在该行的偏移位置,也就是说, 块偏移306用于确定在这行的哪一个位置写入所述待写入数据。实际应用中,当 收到访问请求后,缓存控制器112可以先根据访问地址400中的setindex 404部 分确定所述访问地址400属于缓存110中的哪一个缓存集合。由于在组相连的映 射方式中,一个缓存集合中包括多个路。换句话说,由于一个缓存集合中包括多 个缓存行。因此,在确定访问地址400所属的缓存集合后,缓存控制器112可以 将访问地址400中的tag 402部分的值与set index 404部分指向的缓存集合中的 各路的cache entry(例如图2中的cache entry 200_1、cache entry 200_2和等cache entry 200_3)中的tag位(例如图2中的tag 205)进行比较,以确定访问地址400 是否命中所述缓存110。当访问地址400的tag与所述缓存集合中的某个cache entry中的标签(tag)相同时,说明所述访问地址对应的数据缓存在缓存110中。 当目标地址中的tag与所述缓存集合中的cache entry的tag不相同时,确定所述 访问请求未命中缓存110。在这种情况下,需要进一步访问内存120。
在本步骤中,若缓存控制器112根据上述方法确定所述访问请求未 命中缓存110,也就是说,当所述缓存控制器112确定所述缓存110中没有缓存 与所述访问地址对应的缓存行cache line的情况下,则该方法进入步骤306。
在步骤306中,所述缓存控制器从所述访问地址对应的缓存集合中 确定N个待选择路。其中,所述缓存中包括多个缓存集合,每个缓存集合中包 含有M个路,每个路中包含有一个cache line,N的值不小于2,且M大于N。 所述N个待选择路均为最近最少使用LRU路。具体的,在缓存控制器根据所述 访问请求中的访问地址确定所述访问请求未命中缓存110后,则需要进一步从与 所述访问地址对应的缓存集合中选择待替换的cache line。为了描述方便,本发 明实施例以一个缓存集合中包括M个路为例进行描述,其中,M为大于2的整数。
由于本发明实示例中的缓存110为非易失性缓存,如果采用传统的 最近最少使用LRU算法从所述访问地址对应的缓存集合中选择待替换的cache line,则虽然可能保证缓存命中率,但可能在写入新数据的过程中造成较大的写 消耗。因此,为了保证缓存命中率,在本发明实施例中,缓存控制器可以采用模 糊伪最近最少使用(pseudo least recentlyused,PLRU)算法从所述缓存集合的最 近最少使用LRU路中选择N个待选择路,其中,N为不小于2的整数,N小于 M。具体的,N可以为2的n次幂(即,N=2n),n为不小于1的整数。需要说明的是,N的值可以根据具体情况预先设定。
根据PLRU算法,缓存集合(cache set)中的所有路可以通过一个二 进制的搜索树来指示。如图5所示,假设与所述访问地址对应的缓存集合中包含 4个路:路0、路1、路2和路3,则可以用图5所示的搜索树500来指示该缓存 集合中的各个路。在图5所示的搜索树中,子节点“0”用于指示“向左边走以找到 一个伪LRU路”,子节点“1”用于指示“向右边走以找到伪LRU路”。例如,根据 子节点“0”可以找到路0和路1,根据子节点“1”可以找到路2和路3。
在本发明实施例提供的模糊PLRU算法可以根据预设的N的值从所 述搜索树中选择相应数量的待选择路。根据图5所示的搜索树可以看出,在选择 待选择路时,如果不考虑根节点的值,则可以选择两个LRU路。如果不考虑根 节点以及子树的根节点的值,则可以选择4个LRU路。换一种表达方式,在按 照模糊PLRU算法搜索待选择的路时,如果不考虑k层节点的值,则可以选择 2k个LRU路,其中,所述k层节点为不包括叶子节点的节点。k小于等于log2M。 例如,如果所述缓存集合有4个路,则所述缓存集合的搜索树共有log2(4)=2层 节点,则k的值小于等于2。
具体的,在本步骤中,可以根据与所述访问地址对应的缓存集合的 PLRU编码查找所述缓存集合对应的搜索树以选择所述N个待选择路。为描述方 便,以N=2为例进行描述。假设与所述访问地址对应的缓存集合的模糊P-LRU 编码为:“01”,所述缓存集合的搜索树为图5中的搜索树500所示,由于图5所 述的搜索树有4个路,要查找2个待选择路。由于N=2k=2,则k=1,即,可以 不考虑1层节点的值,也就是不考虑整个搜索树的根节点“1”,而只需考虑根节 点“1”下层的两个子树。也就是说,在搜索所述搜索树时,可以根据所述缓存集合的P-LRU编码“01”搜索根节点“1”下层的两个子树(包含子节点为“0”的子树 502以及包含子节点为“1”的子树504)以选择2个待选择路。具体的,可以根据 编码“01”中的高位“0”查找到子树502中的路0,根据编码“01”中的低位“1”查找 到子树504中的路3,从而,子树502中的路0和子树504中的路3作为所述2 个待选择路。该方法进入步骤308。
在步骤308中,所述缓存控制器分别将所述待写入数据与所述N个 待选择路的样本数据进行比较以获得N个汉明距离。其中,所述样本数据与所 述待写入数据的长度相同,所述汉明距离用于指示所述两个相同长度的数据具有 的不同的对应位的数量。为了减少写数据时的功耗,在本发明实施例中,缓存集 合中的每个路均设置有一个样本数据。其中,样本数据的长度与cache line的长 度相同。为了减少存储开销,在本发明实施例中,不同缓存集合中的第i路共用 相同的样本数据,其中,第i路为所述缓存集合中的任意一路,i的值不大于M, 例如,i大于等于0且小于等于M-1。根据这种方式,同一个缓存集合中的不同路的样本数据并不一定相同。
实际应用中,一种方式下,可以随机生成各路的样本数据。为了提 高精确性,采用随机生成样本数据的方式时,不同的两个样本数据之间的汉明距 离不小于第二预设值。例如,该第二预设值可以为512/M,其中,M为一个缓存 集合中的路的数量。
在另一种情形下,还可以动态生成样本。为描述方便,以如何动态 生成第i路的样本数据为例进行描述。具体的,在系统启动时,可以为第i路的 样本数据设置一个初始值,例如,该初始值可以是0000,也可以是写入第i路的 第一个数据。为了提高精确性,可以根据写入第i路的数据动态更新样本数据。 具体的,在本发明实施例中为第i路设置有一个第一计数器,所述第一计数器用 于跟踪向第i路写入数据的写请求的数量。并且,为第i路的cache line的每一位 分别设置一个第二计数器,所述第二计数器用于统计对应位被写入第一预设值的 数量,所述第一预设值可以为“0”或“1”。也就是说,所述第二计数器用于统计对 应位被写入“0”或被写入“1”的数量。根据这种方式,如果第i路的cache line有P 位,则需要对应设置P个第二计数器。可以理解的是,由于样本数据的长度和 cache line的长度相同,因此,所述P个第二计数器也可以被认为对应于所述样 本数据的每一位。当第i路的写请求的数量达到第一阈值时,也就是说,当第一 计数器的值达到第一阈值时,缓存控制器可以根据第i路cache line的每一位设 置的第二计数器的值更新所述样本数据。具体的,当第k位的第二计数器统计第 i路cache line中的第k位被写入“1”的次数超过第二阈值时,将所述样本数据的 第k位的值置为“1”。当第k+1位的第二计数器统计第k+1位被写入“1”的次数未 超过第二阈值时,将所述样本数据的第k+1位的值置为“0”。其中,第二阈值不大于所述第一阈值,例如,第二阈值可以为第一阈值的一半。可以理解的是,实 际应用中,第一阈值和第二阈值也可以根据需要自行设定。例如,第一阈值可以 为10,第二阈值可以为8。在此不作限定。
另外,实际应用中,还可以不为第i路设置第一计数器,而为第i路 设置一个计时器。当所述第i路的计时器显示到达预设的第三阈值时,根据为所 述第i路的cache line的每一位分别设置的第二计数器的值更新所述样本数据。 例如,可以设置每30分钟更新一次第i路的样本数据,具体更新时,也可以如 前所述,根据样本数据的每一位中写入“1”的数量分别确定是否将该位设置为“1”, 例如,当第k位的第二计数器统计第k位被写入“1”的次数超过第二阈值时,将 所述样本数据的第k位的值置为“1”。可以理解的是,上述第i路可以是不同缓 存集合的第i路。
上面以第i路为例对如何生成缓存集合中的各路的样本数据进行了 简单的介绍。当通过步骤306确定了N个待选择的路后,为了减少写数据消耗, 在步骤308中,缓存控制器可以将所述写请求中携带的待写入数据与所述N个 待选择路的样本数据进行比较,以获得所述N个汉明距离。例如,若在步骤306 中确定了图5所示的路0和路3为待选择的两个路,则在本步骤中,缓存控制器 可以分别将路0的样本数据和路3的样本数据的各个位与所述待写入数据的相应 位的值进行比较,以获得两个汉明距离,这两个汉明距离包括所述待写入数据与 路0的样本数据的汉明距离以及所述待写入数据与路3的样本数据的汉明距离。 其中,汉明距离是指两个相同长度的数据具有的不同的对应位的数量。例如,若 待写入数据为0011,路0的样本数据为0101,路3的样本数据为1000,则所述 待写入数据与路0的样本数据有两个对应位的值不同,即,所述待写入数据与路 0的样本数据的汉明距离为2。所述待写入数据与路3的样本数据有三个对应位 的值不同,即,待写入数据与路3的样本数据的汉明距离为3。
在步骤310中,所述缓存控制器将所述N个汉明距离中的最小值所 对应的路中的cache line作为待替换的cache line。由于汉明距离能够反应待写入 数据与缓存中的cache line的值的近似程度。也就是说,两个数据的汉明距离越 小,说明两个数据越近似。由于某路的样本数据是根据该路中的cache line获得 的,因此,所述待写入数据与某个路的样本数据的汉明距离也能指示所述待写入 数据域该路中的cache line的近似程度。因此,在本发明实施例中,在获得所述 待写入数据与所述N个待选择路的样本数据的汉明距离之后,为了减少写功耗, 所述缓存控制器可以将所述N个汉明距离中的最小值对应的路的cache line作为 待替换的cache line,从而能够使得在写入所述待写入数据时,改写的位最少。 例如,仍然以前述的路0和路3为例,在获得所述待写入数据与路0的样本数据 的汉明距离为2,所述待写入数据与路3的样本数据的汉明距离为3后,在本步 骤中,所述缓存控制器可以选择路0中的cache line为待替换的cache line。
在步骤312中,所述缓存控制器将所述待写入数据写入所述缓存中, 所述待写入数据用于替换所述待替换的cache line。具体的,缓存控制器可以将 所述待写入数据按位写入所述路0中,以替换所述待替换的cache line。由于所 述待写入数据与路0的样本数据的汉明距离较小,因此,所述待写入数据与所述 路0中的待替换的cache line也更近似。从而,在写入所述待写入数据时,需要 改写的位较少。例如,若待写入数据为0011,路0的cache line为0101,则在写 入所述待写入数据时,只需要改写所述cache line的中间两位的值,从而能够在 一定程度上减少写数据时的功率损耗。
可以理解的是,在将所述待写入数据写入所述缓存后,可以用所述 访问地址中的tag替换所述缓存集合中的待替换cache line对应的tag。从而缓存 控制器可以根据所述缓存集合中替换后的cache line处理后续的访问请求。
进一步的,在本发明实施例中,在所述缓存集合中的所述待替换 cache line替换后,由于被替换的路已不属于LRU路,因此,需要更新所述缓存 集合的模糊P-LRU编码。例如,在图5所示的示例中,当路0的cache line被选 择替换后,则可以将路0所在的子树1的根节点“0”置为1,所述缓存集合的模 糊P-LRU编码则由“01”被更新为“11”,其中,高位的“1”用于指向根节点左边的 子树1,低位“1”用于指向根节点右边的子树2。进而,缓存控制器可以根据所述 缓存集合更新后的模糊P-LRU编码按照本发明实施例提供的方法处理后续的访 问请求。
本发明实施例提供的缓存替换方法,在采用非易失性存储介质做缓 存时,通过在与访问地址对应的缓存集合的最近最少使用LRU路中选择多个待 选择路,并分别将所述待写入数据与所述多个待选择路的样本数据进行比较获得 多个汉明距离,并将值最小的汉明距离对应的路中的cache line作为待替换的 cache line。由于所述多个待选择路是在缓存集合的LRU路中选择的,因此能够 减少因替换cache line对缓存命中率的影响。并且,由于待替换的cache line是根 据汉明距离在所述多个待选择路中确定的,汉明距离能够体现两个数据的相似性, 因此,在将所述待写入数据写入缓存以替换所述待替换cacheline时能够减少写 入的数据量,节省写数据时的功耗,降低系统的写开销。
图6为本发明实施例提供的一种缓存控制器的结构示意图。图6所 示的缓存控制器可以为图1所示的计算机系统中的缓存控制器112。如图6所示, 所述缓存控制器600可以包括下述模块。
接收模块602,用于接收写请求,所述写请求中包含有待写入的数据 和访问地址。判断模块604,用于根据所述访问地址判断所述缓存中是否缓存有 对应的缓存行cacheline。当所述判断模块604确定所述缓存中没有缓存对应的 缓存行cache line时,触发选择模块606。
所述选择模块606,用于从所述访问地址对应的缓存集合中确定N 个待选择路。其中,所述缓存中包括多个缓存集合,每个缓存集合中包含有M 个路,每个路中包含有一个cache line,N的值不小于2,且M大于N。
计算模块608,用于分别将所述待写入数据与所述N个待选择路的 样本数据进行比较以获得N个汉明距离。其中,所述样本数据与所述待写入数 据的长度相同,所述汉明距离用于指示所述两个相同长度的数据具有的不同的对 应位的数量。
所述选择模块606,还用于根据所述计算模块608的计算结果,将所 述N个汉明距离中的最小值所对应的路中的cache line作为待替换的cache line。 写入模块610,用于将所述待写入的数据写入所述存储介质中,所述待写入数据 用于替换所述待替换的cacheline。
实际应用中,选择模块606具体用于采用模糊伪最近最少使用PLRU 算法从所述缓存集合的最近最少使用LRU的路中确定所述N个待选择路。
进一步的,所述缓存控制器600还可以包括样本数据处理模块612。 所述样本数据处理模块612用于根据所述多个缓存集合中的每一个缓存集合中 的第i路的cache line获得所述缓存集合中的第i路的样本数据。其中,所述第i 路的样本数据与所述第i路中的cache line的长度相同,第i路为所述M个路中 的任意一路,i大于等于1且小于等于M。
在另一种情形下,所述样本数据处理模块612还用于统计所述第i 路cache line中的各个比特位中写入第一预设值的数量,并根据各比特位中写入 所述第一预设值的数量更新所述第i路的样本数据中的对应比特位,以获得更新 的第i路的样本数据其中,所述第一预设值包括“1”或“0”。
可选的,在所述缓存中,不同缓存集合中的第i路的样本数据相同, 其中,i大于等于0且小于等于M-1。同一个缓存集合中的不同路的样本数据不 相同。
本发明实施例所提供的缓存控制器600中各个模块功能的详细描述可以 参见前述实施例描述的缓存替换方法中的相关描述,在此不再赘述。
本发明实施例还提供一种缓存替换方法的计算机程序产品,包括存 储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于执行前述任 意一个方法实施例所述的方法流程。本领域普通技术人员可以理解,前述的存储 介质包括:U盘、移动硬盘、磁碟、光盘、随机存储器(Random-Access Memory, RAM)、固态硬盘(Solid State Drive,SSD)或者其他非易失性存储器(non-volatile memory)等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
需要说明的是,本申请所提供的实施例仅仅是示意性的。所属领域 的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各 个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施 例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在 也可以组合存在。在本发明实施例中以硬件形式描述的特征可以通过软件来执行, 反之亦然。在此不做限定。

Claims (15)

1.一种缓存替换方法,其特征在于,所述方法应用于包括缓存的计算机系统中,所述缓存包括缓存控制器以及与所述缓存控制器连接的用于缓存数据的存储介质,所述存储介质为非易失性存储介质,所述方法包括:
所述缓存控制器接收写请求,所述写请求中包含有待写入的数据和访问地址;
所述缓存控制器根据所述访问地址确定所述缓存中没有缓存对应的缓存行cacheline;
所述缓存控制器从所述访问地址对应的缓存集合中确定N个待选择路,其中,所述缓存中包括多个缓存集合,每个缓存集合中包含有M个路,每个路中包含有一个cache line,N的值不小于2,且M大于N;
所述缓存控制器分别将所述待写入数据与所述N个待选择路的样本数据进行比较以获得N个汉明距离,其中,所述样本数据与所述待写入数据的长度相同,所述汉明距离用于指示所述两个相同长度的数据具有的不同的对应位的数量;
所述缓存控制器将所述N个汉明距离中的最小值所对应的路中的cache line作为待替换的cache line;
所述缓存控制器将所述待写入的数据写入所述存储介质中,所述待写入数据用于替换所述待替换的cache line。
2.根据权利要求1所述的方法,其特征在于,还包括:
所述缓存控制器根据所述多个缓存集合中的每一个缓存集合中的第i路的cache line获得所述缓存集合中的第i路的样本数据,其中,所述第i路的样本数据与所述第i路中的cache line的长度相同,第i路为所述M个路中的任意一路,i大于等于1且小于等于M。
3.根据权利要求1或2所述的方法,其特征在于,所述缓存控制器从与所述访问地址对应的缓存集合中确定N个待选择路包括:
所述缓存控制器采用模糊伪最近最少使用PLRU算法从所述缓存集合的最近最少使用LRU的路中确定所述N个待选择路,其中,N=2n,n为不小于1的整数。
4.根据权利要求1-3任意一项所述的方法,其特征在于:所述缓存的不同缓存集合中的第i路的样本数据相同,其中,i大于等于0且小于等于M-1。
5.根据权利要求2-4任意一项所述的方法,其特征在于,还包括:
所述缓存控制器统计所述第i路cache line中的各个比特位中写入第一预设值的数量,其中,所述第一预设值包括“1”或“0”;
所述缓存控制器根据各比特位中写入所述第一预设值的数量更新所述第i路的样本数据中的对应比特位,以获得更新的第i路的样本数据。
6.一种计算机系统,其特征在于,所述计算机系统包括缓存控制器和与所述缓存控制器连接的缓存,所述缓存为非易失性存储器,所述缓存控制器用于:
接收写请求,所述写请求中包含有待写入的数据和访问地址;
根据所述访问地址确定所述缓存中没有缓存对应的缓存行cache line;
从所述访问地址对应的缓存集合中确定N个待选择路,其中,所述缓存中包括多个缓存集合,每个缓存集合中包含有M个路,N的值不小于2,且M大于N;
分别将所述待写入数据与所述N个待选择路的样本数据进行比较以获得N个汉明距离,其中,所述样本数据与所述待写入数据的长度相同,所述汉明距离用于指示所述两个相同长度的数据具有的不同的对应位的数量;
将所述N个汉明距离中的最小值所对应的路中的cache line作为待替换的cacheline;
将所述待写入的数据写入所述缓存中,所述待写入数据用于替换所述待替换的cacheline。
7.根据权利要求6所述的计算机系统,其特征在于,所述缓存控制器还用于:
根据所述多个缓存集合中的每一个缓存集合中的第i路的cache line获得所述缓存集合中的第i路的样本数据,其中,所述第i路的样本数据与所述第i路中的cache line的长度相同,第i路为所述M个路中的任意一路,i大于等于1且小于等于M。
8.根据权利要求6或7所述的计算机系统,其特征在于,所述缓存控制器用于:
采用模糊伪最近最少使用PLRU算法从所述缓存集合的最近最少使用LRU的路中确定所述N个待选择路,其中,N=2n,n为不小于1的整数。
9.根据权利要求6-8任意一项所述的计算机系统,其特征在于:所述缓存的不同缓存集合中的第i路的样本数据相同,其中,i大于等于1且小于等于M。
10.根据权利要求7-9任意一项所述的计算机系统,其特征在于,所述缓存控制器还用于:
统计所述第i路cache line中的各个比特位中写入第一预设值的数量,其中,所述第一预设值包括“1”或“0”;
根据各比特位中写入的所述第一预设值的数量更新所述第i路的样本数据中的对应比特位,以获得更新的第i路的样本数据。
11.一种缓存控制器,其特征在于,包括:
接收模块,用于接收写请求,所述写请求中包含有待写入的数据和访问地址;
判断模块,用于根据所述访问地址确定缓存中没有缓存对应的缓存行cache line,其中,所述缓存为非易失性存储器;
选择模块,用于从所述访问地址对应的缓存集合中确定N个待选择路,其中,所述缓存中包括多个缓存集合,每个缓存集合中包含有M个路,每个路中包含有一个cache line,N的值不小于2,且M大于N;
计算模块,用于分别将所述待写入数据与所述N个待选择路的样本数据进行比较以获得N个汉明距离,其中,所述样本数据与所述待写入数据的长度相同,所述汉明距离用于指示所述两个相同长度的数据具有的不同的对应位的数量;
所述选择模块,还用于将所述N个汉明距离中的最小值所对应的路中的cache line作为待替换的cache line;
写入模块,用于将所述待写入的数据写入所述存储介质中,所述待写入数据用于替换所述待替换的cache line。
12.根据权利要求11所述的缓存控制器,其特征在于,还包括:
样本数据处理模块,用于根据所述多个缓存集合中的每一个缓存集合中的第i路的cache line获得所述缓存集合中的第i路的样本数据,其中,所述第i路的样本数据与所述第i路中的cache line的长度相同,第i路为所述M个路中的任意一路,i大于等于1且小于等于M。
13.根据权利要求11或12所述的缓存控制器,其特征在于,所述选择模块具体用于:
采用模糊伪最近最少使用PLRU算法从所述缓存集合的最近最少使用LRU的路中确定所述N个待选择路,其中,N=2n,n为不小于1的整数。
14.根据权利要求11-13任意一项所述的缓存控制器,其特征在于:所述缓存的不同缓存集合中的第i路的样本数据相同,其中,i大于等于0且小于等于M-1。
15.根据权利要求12-14任意一项所述的缓存控制器,其特征在于,所述样本数据处理模块还用于:
统计所述第i路cache line中的各个比特位中写入第一预设值的数量,其中,所述第一预设值包括“1”或“0”;
根据各比特位中写入所述第一预设值的数量更新所述第i路的样本数据中的对应比特位,以获得更新的第i路的样本数据。
CN201711479277.7A 2017-12-29 2017-12-29 缓存替换技术 Active CN110018971B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201711479277.7A CN110018971B (zh) 2017-12-29 2017-12-29 缓存替换技术
PCT/CN2018/123362 WO2019128958A1 (zh) 2017-12-29 2018-12-25 缓存替换技术

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711479277.7A CN110018971B (zh) 2017-12-29 2017-12-29 缓存替换技术

Publications (2)

Publication Number Publication Date
CN110018971A true CN110018971A (zh) 2019-07-16
CN110018971B CN110018971B (zh) 2023-08-22

Family

ID=67063167

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711479277.7A Active CN110018971B (zh) 2017-12-29 2017-12-29 缓存替换技术

Country Status (2)

Country Link
CN (1) CN110018971B (zh)
WO (1) WO2019128958A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111581118A (zh) * 2019-12-31 2020-08-25 北京忆芯科技有限公司 计算加速系统
CN113190474A (zh) * 2021-04-30 2021-07-30 华中科技大学 一种提升stt-mram近似缓存能效的方法及系统
CN115794675A (zh) * 2023-01-19 2023-03-14 北京象帝先计算技术有限公司 写数据方法、装置、图形处理系统、电子组件及电子设备
CN116644008A (zh) * 2023-06-16 2023-08-25 合芯科技有限公司 一种缓存替换控制方法及装置
CN116737609A (zh) * 2022-03-04 2023-09-12 格兰菲智能科技有限公司 选择替换缓存行的方法及其装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117349199A (zh) * 2023-11-30 2024-01-05 摩尔线程智能科技(北京)有限责任公司 缓存管理装置及系统
CN117806992B (zh) * 2024-02-29 2024-06-07 山东云海国创云计算装备产业创新中心有限公司 数据块替换方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101156140A (zh) * 2005-02-07 2008-04-02 Nxp股份有限公司 数据处理系统和高速缓存替换方法
US20090182952A1 (en) * 2008-01-15 2009-07-16 Moyer William C Cache using pseudo least recently used (plru) cache replacement with locking
CN104298622A (zh) * 2013-07-17 2015-01-21 飞思卡尔半导体公司 使用fifo的最近最少使用的高速缓存替代实现
CN106164875A (zh) * 2014-04-04 2016-11-23 高通股份有限公司 基于专用高速缓存组中的竞争性专用预取策略进行自适应性高速缓存预取以减少高速缓存污染
CN107463509A (zh) * 2016-06-05 2017-12-12 华为技术有限公司 缓存管理方法、缓存控制器以及计算机系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6823426B2 (en) * 2001-12-20 2004-11-23 Intel Corporation System and method of data replacement in cache ways
CN102043591B (zh) * 2010-11-24 2012-09-05 清华大学 Pram的写操作方法
US8707131B2 (en) * 2011-03-25 2014-04-22 Intel Corporation Apparatus and method for fast tag hit

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101156140A (zh) * 2005-02-07 2008-04-02 Nxp股份有限公司 数据处理系统和高速缓存替换方法
US20090182952A1 (en) * 2008-01-15 2009-07-16 Moyer William C Cache using pseudo least recently used (plru) cache replacement with locking
CN104298622A (zh) * 2013-07-17 2015-01-21 飞思卡尔半导体公司 使用fifo的最近最少使用的高速缓存替代实现
CN106164875A (zh) * 2014-04-04 2016-11-23 高通股份有限公司 基于专用高速缓存组中的竞争性专用预取策略进行自适应性高速缓存预取以减少高速缓存污染
CN107463509A (zh) * 2016-06-05 2017-12-12 华为技术有限公司 缓存管理方法、缓存控制器以及计算机系统

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111581118A (zh) * 2019-12-31 2020-08-25 北京忆芯科技有限公司 计算加速系统
CN113190474A (zh) * 2021-04-30 2021-07-30 华中科技大学 一种提升stt-mram近似缓存能效的方法及系统
CN116737609A (zh) * 2022-03-04 2023-09-12 格兰菲智能科技有限公司 选择替换缓存行的方法及其装置
CN115794675A (zh) * 2023-01-19 2023-03-14 北京象帝先计算技术有限公司 写数据方法、装置、图形处理系统、电子组件及电子设备
CN115794675B (zh) * 2023-01-19 2023-05-16 北京象帝先计算技术有限公司 写数据方法、装置、图形处理系统、电子组件及电子设备
CN116644008A (zh) * 2023-06-16 2023-08-25 合芯科技有限公司 一种缓存替换控制方法及装置
CN116644008B (zh) * 2023-06-16 2023-12-15 合芯科技有限公司 一种缓存替换控制方法及装置

Also Published As

Publication number Publication date
CN110018971B (zh) 2023-08-22
WO2019128958A1 (zh) 2019-07-04

Similar Documents

Publication Publication Date Title
CN110018971A (zh) 缓存替换技术
CN104025060B (zh) 支持近存储器和远存储器访问的存储器通道
CN106104499B (zh) 存储器设备及用于操作高速缓冲存储器的方法
CN103946826B (zh) 用于在公共存储器通道上实现多级存储器层级的设备和方法
CN108572796B (zh) 具有异构nvm类型的ssd
CN109791519A (zh) 具有集成计算引擎的非易失性存储系统和本地快速存储器的优化用途
CN103988183B (zh) 2级存储器分级结构中的存储器侧高速缓存的动态部分断电
CN109582214B (zh) 数据访问方法以及计算机系统
CN104115129B (zh) 用于从处理器到存储器子系统智能刷新数据的系统和方法
CN103946811B (zh) 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
CN110362504A (zh) 对一致性链路和多级存储器的管理
CN109952565B (zh) 内存访问技术
CN108074593A (zh) 用于非易失性存储器的接口
CN103999057B (zh) 具有开关的相变存储器(pcms)的元数据管理和支持
CN109947663A (zh) 分布式编程操作
CN107784121A (zh) 一种基于非易失内存的日志文件系统的小写优化方法
CN106843772A (zh) 一种基于一致性总线扩展非易失内存的系统及方法
CN105095116A (zh) 缓存替换的方法、缓存控制器和处理器
CN102804151A (zh) 访问作为缓存一致性域的部分的内存刀片的内存代理
CN101918925B (zh) 用于处理器的高关联性高速缓存的第二次机会取代机制
CN107818052A (zh) 内存访问方法及装置
JP2020502606A (ja) 記憶動作待ち行列
CN106062724A (zh) 存储器模块上的数据管理
CN108763106B (zh) 一种基于交叉存储的Cache实现方法
TW201040717A (en) Flash memory managing methods and computing systems utilizing the same

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant