CN105094686A - 数据缓存方法、缓存和计算机系统 - Google Patents
数据缓存方法、缓存和计算机系统 Download PDFInfo
- Publication number
- CN105094686A CN105094686A CN201410193960.4A CN201410193960A CN105094686A CN 105094686 A CN105094686 A CN 105094686A CN 201410193960 A CN201410193960 A CN 201410193960A CN 105094686 A CN105094686 A CN 105094686A
- Authority
- CN
- China
- Prior art keywords
- cacheline
- cache
- internal memory
- conditioned
- data
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/068—Hybrid storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供一种数据缓存方法、缓存和计算机系统。本发明实施例中,Cache在访问请求不命中需要确定待替换的Cache?line时,不仅需要考虑Cache?line的历史访问频率,还要考虑Cache?line对应的内存类型,从而可以优先替换与DRAM内存类型对应的Cache?line,减少Cache对存储于DRAM的数据的缓存量,从而使得Cache能够提高对存储于NVM中的数据的缓存量,使得针对存储于NVM中的数据的访问请求尽可能的在Cache中能够找到相应的数据,从而减少了从NVM中读取数据的情形,减少了从NVM中读取数据的延迟,有效的提高访问效率。
Description
技术领域
本发明实施例涉及存储技术,尤其涉及一种数据缓存方法、缓存和计算机系统。
背景技术
目前越来越多的应用以数据为中心,例如互联网应用、大数据应用等。这些应用需要强大的存储支持。
在现有技术中,通常采用的动态随机访问存储器(DynamicRandom-AccessMemory,以下简称:DRAM)作为计算机系统。然而,受工艺的限制,DRAM的容量较小且能耗较大,很难满足应用对大容量低能耗的要求。今年来,非易失性存储器(Non-VolatileMemory,以下简称:NVM)被广泛采用,其具有存储量大、能耗低的优势,采用NVM取代DRAM作为计算机系统,能够满足应用对大容量低能耗的需求。但是与DRAM相比,NVM的读写延迟较长。正是由于DRAM和NVM各有利弊,现有技术进一步采用DRAM和NVM组成的混合内存,以期望为应用提供大容量、低能耗、高性能的内存。
发明内容
本发明实施例提供一种数据缓存方法、缓存和计算机系统。
第一方面,本发明实施例提供一种数据缓存方法,所述方法由缓存Cache执行,包括:
接收CPU发送的数据访问请求,所述数据访问请求中包含访问地址;
根据所述访问地址判断待访问数据是否缓存在所述Cache中;
在确定所述待访问数据没有缓存在所述Cache中的情况下,根据所述Cache中的缓存线Cacheline的历史访问频率以及Cacheline对应的内存的类型,判断所述Cache中是否存在满足第一预设条件的Cacheline,其中,所述满足第一预设条件的Cacheline包括历史访问频率低于预设频率且与动态随机访问存储器DRAM类型的内存对应的Cacheline,所述内存包括DRAM类型的内存和非易失性存储器NVM类型的内存;
在确定所述Cache中存在满足第一预设条件的Cacheline的情况下,在满足第一预设条件的Cacheline中选择待替换的第一Cacheline;
根据所述访问地址从所述内存中读取所述待访问数据;
采用第二Cacheline替换所述第一Cacheline,所述第二Cacheline包含所述访问地址和所述待访问数据;
所述Cache向所述CPU发送所述待访问数据。
第二方面,本发明实施例提供一种缓存Cache,包括:
接收模块,用于接收CPU发送的数据访问请求,所述数据访问请求中包含访问地址;
命中确定模块,用于根据所述访问地址判断待访问数据是否缓存在所述Cache中;
替换确定模块,用于在确定所述待访问数据没有缓存在所述Cache中的情况下,根据所述Cache中的缓存线Cacheline的历史访问频率以及Cacheline对应的内存的类型,判断所述Cache中是否存在满足第一预设条件的Cacheline,其中,所述满足第一预设条件的Cacheline包括历史访问频率低于预设频率且与动态随机访问存储器DRAM类型的内存对应的Cacheline,所述内存包括DRAM类型的内存和非易失性存储器NVM类型的内存;在确定所述Cache中存在满足第一预设条件的Cacheline的情况下,在满足第一预设条件的Cacheline中选择待替换的第一Cacheline;
读取模块,用于根据所述访问地址从所述内存中读取所述待访问数据;
替换模块,用于采用第二Cacheline替换所述第一Cacheline,所述第二Cacheline包含所述访问地址和所述待访问数据;
发送模块,用于向所述CPU发送所述待访问数据。
第三方面,本发明实施例提供一种计算机系统,包括:处理器、混合内存和如前述第二方面所述的缓存Cache,所述混合内存包括DRAM和NVM,所述处理器、所述混合内存与所述缓存Cache通过总线连接。
本发明实施例中,Cache在访问请求不命中需要确定待替换的Cacheline时,不仅需要考虑Cacheline的历史访问频率,还要考虑Cacheline对应的内存类型,从而可以优先替换与DRAM内存类型对应的Cacheline,减少Cache对存储于DRAM的数据的缓存量,从而使得Cache能够提高对存储于NVM中的数据的缓存量,使得针对存储于NVM中的数据的访问请求尽可能的在Cache中能够找到相应的数据,从而减少到NVM中读取数据的情形,从而减少了从NVM中读取数据的延迟,有效的提高访问效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种计算机系统的架构图;
图2为本发明实施例提供的一种数据缓存方法的流程图;
图3为本发明实施例提供的一种缓存的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种计算机系统的架构图,如图1所示,该计算机系统包括:处理器(Processor)11和混合内存(HybridMemory)12,其中,Processor11可以包括CPU111、缓存(Cache)112以及存储控制器(Memorycontroller)113,HybridMemory12可以包括DRAM121和NVM122,Processor11、HybridMemory12以及缓存(Cache)112通过总线连接。HybridMemory12与Memorycontroller113之间可以通过内存总线(MemoryBus)13连接。
在进行数据访问时,CPU可以向Cache发出数据访问请求,该数据访问请求中包含访问地址。Cache中缓存了HybridMemory中的部分数据以提高响应速度。因此,Cache首先根据访问地址确定CPU请求访问的数据是否缓存在Cache中,换一种表达方式,Cache首先根据访问地址判断是否能够Cache中命中所述请求访问的数据。当Cache命中时,即在确定所述待访问数据缓存在所述Cache中的情况下,Cache可以直接向CPU返回其请求访问的数据,当Cache没有命中时,即在确定所述待访问数据没有缓存在所述Cache中的情况下,该数据访问请求将会通过Memorycontroller发往HybridMemory,以从HybridMemory中读取CPU请求访问的数据。
由于Cache的缓存空间一般较小,因此,Cache在数据访问过程中,需要根据访问情况不断更新其缓存内容,以满足不断变化的访问需求。具体来说,当本次数据访问在Cache中命中时,则不进行缓存线(Cacheline)的替换更新,当本次数据访问在Cache中不命中时,Cache需要从当前缓存的缓存线(Cacheline)中确定一待替换的Cacheline,采用从内存中读取的新的Cacheline来替换该Cacheline。
本领域技术人员可以知道,Cache与内存交换数据是通过缓存控制器Cachecontroller来执行的。其中,Cacheline是CacheController的最小操作单位。换一种表达方式,当CacheController向内存中写数据时,CacheController是按照Cacheline为单位将一行line数据写到内存中,当CacheController从内存中读数据时,也是按照Cacheline来读数据的。为了描述方便,在本发明实施例中,一个Cacheline可以表示一个Cacheline的数据。本发明实施例中的“替换Cacheline”是指用从内存中读出的一个Cacheline的数据来替换Cache中的一个Cacheline的数据。在上述过程中,Cache是从当前缓存的Cacheline中查找访问频率最低的Cacheline,将该访问频率最低的Cacheline确定为待替换的Cacheline。而Cache并不感知该待替换的Cacheline对应的内存类型是DRAM类型还是NVM类型,即不感知该待替换的Cacheline是来源于DRMA还是NVM。
经过对DRAM和几种NVM进行的分析发现,DRAM和NVM的读写性能存在差异。其中,在本发明实施例中,NVM包括但不限于:相变存储器(PhaseChangeMemory,以下简称:PCM)、自旋转移矩磁性随机访问存储器(SpinTransferTorque-MagneticRandomAccessMemory,以下简称:STT-MRAM)、阻变式随机访问存储器(ResistiveRandomAccessMemory,以下简称RRAM)。DRAM和NVM的读写性能具体可以如表1所示:
表1
DRAM | PCM | STT-MRAM | RRAM | |
读延迟 | <10ns | 12ns | 35ns | <50ns |
写延迟 | <10ns | 100ns | 35ns | <0.3ns |
写次数 | >1E16 | 1.00E+09 | >1E12 | 1.00E+12 |
保留时间 | 64ms | >10y | >10y | >10y |
从表1中可以看出,虽然NVM的存储容量大于DRAM,且能耗低于DRAM,但是NVM的读写延迟大于DRAM的读写延迟,并且NVM有写次数的限制。
因此,采用上述现有技术,如果Cache确定的待替换的Cacheline对应的内存类型为NVM类型,则该待替换的Cacheline将被从Cache中删除,后续访问请求都必须要从HybridMemory的NVM中调取,而NVM的读写延迟相对DRAM又较大,则必然带来访问延迟的问题,无法满足应用对访问延迟较高的需求。
因此,本方法实施例中,Cache确定待替换的Cacheline时,不仅考虑当前缓存的各Cacheline的历史访问频率,还要进一步考虑各Cacheline对应的内存类型,优先替换内存类型为DRAM类型的Cacheline,即优先替换内存类型为DRAM的Cacheline。这样,即使DRAM的Cacheline从Cache中删除,后续数据访问需要到DRAM中调取数据,其访问延迟不至于过大。其中,内存类型为DRAM类型的Cacheline,即表示该Cacheline中的数据存储在内存中的DRAM上。内存类型为NVM类型的Cacheline,即表示该Cacheline中的数据存储在内存中的NVM上。
下面采用具体的实施例对本发明的技术方案进行详细说明。
图2为本发明实施例提供的一种数据缓存方法的流程图,该方法可以由Cache来执行,具体的可以由Cache中的CacheController来执行。如图1和图2所示,本实施例的方法可以包括:
S201、Cache接收CPU发送的数据访问请求,该数据访问请求中包含访问地址;
S202、Cache根据所述访问地址判断待访问数据是否缓存在所述Cache中,若是,则执行S207,若否,则执行S203;
具体来说,CPU可以接收应用发送的数据访问请求,从而将该数据访问请求发送给Cache。Cache可以将CPU请求的访问地址与其缓存的各Cacheline的地址进行比较,确定请求的数据是否缓存在Cache中,即是否命中。在具体实现时,如果Cache的映射策略是全相连,则Cache是在整个缓存范围内进行查找比较,如果Cache的映射策略不是全相连,而是采用组划分的方式,则Cache可以根据访问地址中的索引(index)位,确定该访问地址在Cache中所在的组,进而根据访问地址中的位(tag)位确定在该组中是否包含该访问地址,如果包含,则Cache可以根据有效位判断缓存的数据是否有效,如果数据有效,则可以根据访问地址中的数据偏移找到对应数据,并将该数据返回给CPU。
S203、Cache根据所述Cache中的缓存线Cacheline的历史访问频率以及Cacheline对应的内存的类型,判断所述Cache中是否存在满足第一预设条件的Cacheline,若是,则执行S204,否则执行S208;
其中,满足第一预设条件的Cacheline包括历史访问频率低于预设频率且与动态随机访问存储器DRAM类型的内存对应的Cacheline,所述内存包括DRAM类型的内存和非易失性存储器NVM类型的内存;
S204、在满足第一预设条件的Cacheline中选择待替换的第一Cacheline;
在待访问数据未缓存在Cache中,即未命中的情况下,Cache需要从当前缓存的Cacheline中确定一个Cacheline作为待替换的Cacheline,该被确定作为待替换的Cacheline即为第一Cacheline。在确定该第一Cacheline时,既需要参考当前缓存的各Cacheline的历史访问频率,也需要参考各Cacheline对应的内存类型。其中,Cacheline的历史访问频率用于表征对应缓存数据的访问热度,Cacheline对应的内存类型则表征该Cacheline的来源是DRAM还是NVM。
本实施例中,Cache确定第一Cacheline的策略可以为在考虑历史访问频率的基础上,尽可能替换内存类型为DRAM的Cacheline,即优先替换内存类型为DRAM类型的Cacheline。
举例来说,Cache可以从缓存的所有Cacheline中先选取历史访问频率低于预设频率的几个Cacheline,然后再根据这几个Cacheline中每个Cacheline对应的内存类型,确定与DRAM类型的内存对应的Cacheline作为待替换的第一Cacheline。若这几个Cacheline中包含两个或者更多个内存类型为DRAM的Cacheline,则可以确定历史访问频率最低且内存类型为DRAM的Cacheline为待替换的第一Cacheline。
S205、Cache根据所述访问地址从所述内存中读取所述待访问数据;
Cache在确定了待替换的第一Cacheline之后,即可根据访问地址从内存中读取待访问数据,该待访问数据既可能存储在DRAM上,也可能存储在NVM上。
S206、Cache采用第二Cacheline替换所述第一Cacheline,所述第二Cacheline包含所述访问地址和所述待访问数据;
Cache在读取待访问数据之后,可以采用第二Cacheline替换第一Cacheline。需要说明的是,本发明实施例中,为了描述方便,将从内存中读出的一个Cacheline的数据称为第二Cacheline。采用第二Cacheline替换所述第一Cacheline是指将从内存中读出的数据缓存在Cache中,并将第一Cacheline的数据删除或写回内存中。在具体实现时,可以在Cache中针对各个Cacheline增加一个标识位(Location),通过该标识位来标识该Cacheline对应的内存类型是DRAM类型还是NVM类型。
Cache可以根据访问地址指向的内存中的存储介质的类型,记录第二Cacheline对应的内存的类型,即设置该标志位。例如,该标识位可以采用一个bit,该bit为1则表征对应的内存类型为DRAM类型,该bit为0则代表对应的内存类型为NVM类型。
在从Cache中删除第一Cacheline时,若待替换的第一Cacheline的修改(Modify)位为干净(clean),则表示第一Cacheline中的数据并未被修改过,与内存中存储的数据一致,则此时无需将第一Cacheline的数据写回到内存中,可以直接删除第一Cacheline的数据。若待替换的第一Cacheline的Modify位为脏(dirty),则表示第一Cacheline中的数据被修改过,与内存中存储的数据不一致,则此时需要先将第一Cacheline的数据写回到内存中,再删除该第一Cacheline。
S207、Cache向CPU发送待访问数据,结束。
在完成上述操作后,Cache可以向CPU发送读取的待访问数据。
综上,本实施例的方法中,Cache在访问请求不命中需要确定待替换的Cacheline时,不仅需要考虑Cacheline的历史访问频率,还要考虑Cacheline对应的内存类型,从而可以优先替换与DRAM内存类型对应的Cacheline,减少Cache对存储于DRAM的数据的缓存量,从而使得Cache能够提高对存储于NVM中的数据的缓存量,使得针对存储于NVM中的数据的访问请求尽可能的在Cache中能够找到相应的数据,从而减少到NVM中读取数据的情形,从而减少了从NVM中读取数据的延迟,有效的提高访问效率。
上述实施例可以借助最近最少访问(LeastRecentlyUsed,以下简称:LRU)链表来获取各Cacheline的历史访问频率。
具体来说,LRU链表是按照访问频率从低到高的顺序记录Cacheline,Cache在判断Cache中是否存在满足第一预设条件的Cacheline时,具体可以为:
判断所述Cache的最近最少访问LRU链表中前M个Cacheline中是否存在与DRAM类型的内存对应的Cacheline,其中所述LRU链表中前M个Cacheline为历史访问频率低于预设频率的Cacheline;
在确定LRU链表中前M个Cacheline中存在与DRAM类型的内存对应的Cacheline的情况下,在确定的所述前M个Cacheline中与DRAM类型的内存对应的Cacheline中选择第一个Cacheline为所述第一Cacheline。
其中,“第一个”是指的在LRU链表的前M个cacheline中的与DRAM类型的内存对应的Cacheline中位置最靠前的Cacheline。
需要说明的是,若M的取值设置得较大时,则可以提高内存类型为DRAM类型的Cacheline被替换的概率,但M的取值又不能设置得过大,否则DRAM中存储的数据将无法进入Cache。本领域技术人员可以根据需求,自行设定M的取值。
S208、Cache判断该Cache中是否存在满足第二预设条件的cacheline,若是,则执行S209,否则执行S210;
其中该满足第二预设条件的cacheline包括历史访问频率低于所述预设频率、与NVM类型的内存对应并且未被修改过的Cacheline;
具体来说,Cache在确定所述Cache中不存在满足第一预设条件的Cacheline的情况下,此时,Cache可能不得不替换内存类型为NVM的Cacheline。
经过分析发现,Cacheline的Modify位为clean,即Cacheline中的数据并未被修改过,与内存中存储的数据一致,则在替换时无需将Cacheline的数据写回到内存中,若Cacheline的Modify位为Dirty,即Cacheline中的数据被修改过,与内存中存储的数据不一致,则在替换时需要先将Cacheline的数据写回到内存中。但是,NVM具有写次数限制,因此,当不得不替换内存类型为NVM的Cacheline时,可以优先替换Modify位为clean的Cacheline,从而尽可能减少NVM的写次数。
S209、在满足第二预设条件的cacheline中选择待替换的第一Cacheline,并执行S205。
其中,Cache判断该Cache中是否存在满足第二预设条件的cacheline,可以具体为:
判断所述Cache的LRU链表中前N个Cacheline中是否存在与NVM类型的内存对应并且修改Modify标识位表示干净clean的Cacheline,其中所述前N个Cacheline为历史访问频率低于预设频率的Cacheline;
在确定所述LRU链表中前N个Cacheline中存在与NVM类型的内存对应且Modify位为clean的Cacheline的情况下,在确定的所述前N个Cacheline中与NVM类型的内存对应且Modify位为clean的Cacheline中选择第一个Cacheline为所述第一Cacheline。
在具体实现时,M和N的值可以根据应用行为调优。因为不同内存类型的Cacheline,其替换延迟存在如下关系:DRAM<NVM(clean)<NVM(dirty),因此,可以适当延长来自NVM的Cacheline在Cache中的存储时间。因此,一般可以设定N≤M。
S210、Cache选择历史访问频率最低的Cacheline为所述第一Cacheline,并执行S205。
进一步的,在确定所述Cache中不存在满足第二预设条件的cacheline的情况下,确定所述LRU链表中最前端的Cacheline为所述第一Cacheline。
具体来说,若LRU链表中前N个Cacheline中也不存在内存类型为NVM类型且Modify位为clean的Cacheline,则Cache即可确定LRU链表中最前端的Cacheline为第一Cacheline。此时确定的第一Cacheline即为内存类型为NVM类型且Modify位为dirty的Cacheline。
在本发明另一个实施例中,Cache还可以根据访问地址所指向的内存中的存储介质的类型,记录所述第二Cacheline对应的内存的类型。
具体来说,该Cache可以采用以下两种实现方式来获取Cacheline对应的内存的类型:
方式一、根据访问地址在内存中所属的地址范围确定第二Cacheline对应的内存类型并记录;
具体来说,在该方式中,HybridMemory中的物理地址是连续的,例如前nGB为DRAM,后nGB为NVM。
因此,Cache可以确定访问地址属于DRAM的地址范围还是属于NVM的地址范围;若访问地址属于DRAM的地址范围,则Cache可以记录第二Cacheline对应的内存类型为DRAM类型;若访问地址属于NVM的地址范围,则Cache可以记录第二Cacheline对应的内存类型为NVM类型。
方式二、根据MemoryController反馈的信息确定第二Cacheline对应的内存类型并记录。
具体来说,在该方式中,MemoryController中可以保存一映射表,该映射表记录有DRAM的地址范围或NVM的地址范围,或者,也可以同时记录DRAM的地址范围和NVM的地址范围,该地址范围可以连续,也可以不连续。MemoryController可以根据访问地址和该映射表确定访问地址在HybridMemory中的存储位置。而且,MemoryController和Cache的交互数据中可以增加一个位,MemoryController可以将访问地址在HybridMemory中的存储位置通过该增加的位发送给Cache。
在具体实现时,Cache在未命中时,需要向MemoryController发送数据读取请求,该数据读取请求中包含访问地址;MemoryController可以根据该访问请求到HybridMemory中读取待访问数据,并且MemoryController可以根据该访问地址和映射表获取访问地址在HybridMemory中的存储位置,此后,MemoryController可以向Cache发送数据读取响应,该数据读取响应中包含待访问数据以及访问地址在HybridMemory中的存储位置;相应的,Cache可以根据MemoryController发送的数据读取响应中包含的存储位置,记录第二Cacheline对应的内存类型。
下面采用两个具体的实施例,对上述实施例的技术方案进行详细说明。
假设:HybridMemory中,前2GB为DRAM,后2GB为NVM,Cache映射策略为全相连;CPU向Cache请求数据,访问地址为0x08000000,该访问地址位于HybridMemory第1GB,数据总线为32位。
例一:Cache在本地查找后,未找到对应数据,说明未命中,则Cache查找LRU链表前5个Cacheline,并根据这前5个Cacheline的location位,确定未找到内存类型为DRAM的Cacheline,则Cache查看LRU链表前3个Cacheline的Modify位,找到第2个Cacheline的Modify位为0,即表示clean,则该Cacheline即为待替换的第一Cacheline。Cache可以将包含访问地址为0x08000000的数据的Cacheline读入到Cache中替换第一Cacheline,并将读取到的数据返回给CPU。并且,Cache可以根据访问地址(0x08000000)判断数据存储在DRAM中,因此将新读入的Cacheline即第二Cacheline加入到LRU链表的最尾端,并且将其location位置0(表证该第二Cacheline来源于DRAM),并且Modify位置为0(表征该第二Cacheline的数据未被修改过)。
例二:Cache在本地查找后,未找到对应数据,说明未命中,则Cache查找LRU链表前5个Cacheline,并根据这前5个Cacheline的location位,确定找到内存类型为DRAM的Cacheline,则该Cacheline即为待替换的第一Cacheline。若该DRAM的Modify位为1(表征该第一Cacheline的数据被修改过),则Cache先对第一Cacheline进行数据写回,然后,Cache可以将包含访问地址为0x08000000的数据的Cacheline读入到Cache中以替换第一Cacheline,并将读取到的数据返回给CPU。并且,Cache可以根据访问地址(0x08000000)判断数据存储在DRAM中,因此将新读入的Cacheline即第二Cacheline加入到LRU链表的最尾端,并且将其location位置0(表证该第二Cacheline来源于DRAM),并且Modify位置为0(表征该第二Cacheline的数据未被修改过)。
由上述过程可知,本发明实施例中,Cache在确定待替换的Cacheline时,优先替换内存类型为DRAM的Cacheline,从而尽量保留内存类型为NVM的Cacheline,以避免从NVM中读取数据的延迟;在没有可替换的内存类型为DRAM的Cacheline而只能替换内存类型为NVM的Cacheline时,优先替换内存类型为NVM且Modify位为clean的Cacheline,从而尽可能减少对NVM的写次数,提高内存的使用寿命。
图3为本发明实施例提供的一种缓存Cache的结构示意图,如图3所示,本实施例的Cache可以包括:
接收模块31,用于接收CPU发送的数据访问请求,所述数据访问请求中包含访问地址;
命中确定模块32,用于根据所述访问地址判断待访问数据是否缓存在所述Cache中;
替换确定模块33,用于用于在确定所述待访问数据没有缓存在所述Cache中的情况下,根据所述Cache中的缓存线Cacheline的历史访问频率以及Cacheline对应的内存的类型,判断所述Cache中是否存在满足第一预设条件的Cacheline,其中,所述满足第一预设条件的Cacheline包括历史访问频率低于预设频率且与动态随机访问存储器DRAM类型的内存对应的Cacheline,所述内存包括DRAM类型的内存和非易失性存储器NVM类型的内存;在确定所述Cache中存在满足第一预设条件的Cacheline的情况下,在满足第一预设条件的Cacheline中选择待替换的第一Cacheline;
读取模块34,用于根据所述访问地址从所述内存中读取所述待访问数据;
替换模块35,用于采用第二Cacheline替换所述第一Cacheline,所述第二Cacheline包含所述访问地址和所述待访问数据;
发送模块36,用于向所述CPU发送所述待访问数据。
进一步的,替换确定模块33,具体用于:
替换确定模块,具体用于:
判断所述Cache的最近最少访问LRU链表中前M个Cacheline中是否存在与DRAM类型的内存对应的Cacheline,其中所述LRU链表中前M个Cacheline为历史访问频率低于预设频率的Cacheline;
在确定所述LRU链表中前M个Cacheline中存在与DRAM类型的内存对应的Cacheline的情况下,在确定的所述前M个Cacheline中与DRAM类型的内存对应的Cacheline中选择第一个Cacheline为所述第一Cacheline。
进一步的,替换确定模块33,还用于:
在确定所述Cache中不存在满足第一预设条件的Cacheline的情况下,判断所述Cache中是否存在满足第二预设条件的cacheline,其中所述满足第二预设条件的cacheline包括历史访问频率低于所述预设频率、与NVM类型的内存对应并且未被修改过的Cacheline;
在确定所述Cache中存在满足第二预设条件的cacheline的情况下,在所述满足第二预设条件的cacheline中选择待替换的第一Cacheline。
进一步的,替换确定模块33,具体用于:
判断所述Cache的LRU链表中前N个Cacheline中是否存在与NVM类型的内存对应并且修改Modify标识位表示干净clean的Cacheline,其中所述前N个Cacheline为历史访问频率低于预设频率的Cacheline;
在确定所述LRU链表中前N个Cacheline中存在与NVM类型的内存对应且Modify位为clean的Cacheline的情况下,在确定的所述前N个Cacheline中与NVM类型的内存对应且Modify位为clean的Cacheline中选择第一个Cacheline为所述第一Cacheline。
更进一步的,替换确定模块33,还用于:
在确定所述Cache中不存在满足第二预设条件的cacheline的情况下,确定所述LRU链表中最前端的Cacheline为所述第一Cacheline。
进一步的,替换模块35,还用于:
在采用第二Cacheline替换所述第一Cacheline之后,根据所述访问地址指向的所述内存中的存储介质的类型,记录所述第二Cacheline对应的内存的类型。
本实施例的Cache可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明实施例,还可以提供一计算机系统实施例,该计算机系统实施例的结构示意图可以参考图1所示架构,即包括处理器(Processor)11和混合内存(HybridMemory)12,其中,Processor11可以包括CPU111、CPU缓存(Cache)112以及存储控制器(Memorycontroller)113,HybridMemory12可以包括DRAM121和NVM122,HybridMemory12与Memorycontroller113之间可以通过内存总线(MemoryBus)13连接;
其中,Cache112可以采用上述Cache实施例所述的结构,且该Cache112可以执行上述方法实施例的技术方案。其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制。本申请所提供的实施例仅仅是示意性的。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本发明实施例、权利要求以及附图中揭示的特征可以独立存在也可以组合存在。
Claims (13)
1.一种数据缓存方法,所述方法由缓存Cache执行,其特征在于,包括:
接收CPU发送的数据访问请求,所述数据访问请求中包含访问地址;
根据所述访问地址判断待访问数据是否缓存在所述Cache中;
在确定所述待访问数据没有缓存在所述Cache中的情况下,根据所述Cache中的缓存线Cacheline的历史访问频率以及Cacheline对应的内存的类型,判断所述Cache中是否存在满足第一预设条件的Cacheline,其中,所述满足第一预设条件的Cacheline包括历史访问频率低于预设频率且与动态随机访问存储器DRAM类型的内存对应的Cacheline,所述内存包括DRAM类型的内存和非易失性存储器NVM类型的内存;
在确定所述Cache中存在满足第一预设条件的Cacheline的情况下,在满足第一预设条件的Cacheline中选择待替换的第一Cacheline;
根据所述访问地址从所述内存中读取所述待访问数据;
采用第二Cacheline替换所述第一Cacheline,所述第二Cacheline包含所述访问地址和所述待访问数据;
所述Cache向所述CPU发送所述待访问数据。
2.根据权利要求1所述的方法,其特征在于,所述判断所述Cache中是否存在满足第一预设条件的Cacheline,包括:
判断所述Cache的最近最少访问LRU链表中前M个Cacheline中是否存在与DRAM类型的内存对应的Cacheline,其中所述LRU链表中前M个Cacheline为历史访问频率低于预设频率的Cacheline;
所述在确定所述Cache中存在满足第一预设条件的Cacheline的情况下,在满足第一预设条件的Cacheline中选择待替换的第一Cacheline,包括:
在确定所述LRU链表中前M个Cacheline中存在与DRAM类型的内存对应的Cacheline的情况下,在确定的所述前M个Cacheline中与DRAM类型的内存对应的Cacheline中选择第一个Cacheline为所述第一Cacheline。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
在确定所述Cache中不存在满足第一预设条件的Cacheline的情况下,判断所述Cache中是否存在满足第二预设条件的cacheline,其中所述满足第二预设条件的cacheline包括历史访问频率低于所述预设频率、与NVM类型的内存对应并且未被修改过的Cacheline;
在确定所述Cache中存在满足第二预设条件的cacheline的情况下,在所述满足第二预设条件的cacheline中选择待替换的第一Cacheline。
4.根据权利要求3所述的方法,其特征在于,所述判断所述Cache中是否存在满足第二预设条件的cacheline,包括:
判断所述Cache的LRU链表中前N个Cacheline中是否存在与NVM类型的内存对应并且修改Modify标识位表示干净clean的Cacheline,其中所述前N个Cacheline为历史访问频率低于预设频率的Cacheline;
所述在确定所述Cache中存在满足第二预设条件的cacheline的情况下,在所述满足第二预设条件的cacheline中选择待替换的第一Cacheline包括:
在确定所述LRU链表中前N个Cacheline中存在与NVM类型的内存对应且Modify位为clean的Cacheline的情况下,在确定的所述前N个Cacheline中与NVM类型的内存对应且Modify位为clean的Cacheline中选择第一个Cacheline为所述第一Cacheline。
5.根据权利要求4所述的方法,其特征在于,还包括:
在确定所述Cache中不存在满足第二预设条件的cacheline的情况下,确定所述LRU链表中最前端的Cacheline为所述第一Cacheline。
6.根据权利要求1~5中任一项所述的方法,其特征在于,所述采用第二Cacheline替换所述第一Cacheline之后,还包括:
根据所述访问地址指向的所述内存中的存储介质的类型,记录所述第二Cacheline对应的内存的类型。
7.一种缓存Cache,其特征在于,包括:
接收模块,用于接收CPU发送的数据访问请求,所述数据访问请求中包含访问地址;
命中确定模块,用于根据所述访问地址判断待访问数据是否缓存在所述Cache中;
替换确定模块,用于在确定所述待访问数据没有缓存在所述Cache中的情况下,根据所述Cache中的缓存线Cacheline的历史访问频率以及Cacheline对应的内存的类型,判断所述Cache中是否存在满足第一预设条件的Cacheline,其中,所述满足第一预设条件的Cacheline包括历史访问频率低于预设频率且与动态随机访问存储器DRAM类型的内存对应的Cacheline,所述内存包括DRAM类型的内存和非易失性存储器NVM类型的内存;在确定所述Cache中存在满足第一预设条件的Cacheline的情况下,在满足第一预设条件的Cacheline中选择待替换的第一Cacheline;
读取模块,用于根据所述访问地址从所述内存中读取所述待访问数据;
替换模块,用于采用第二Cacheline替换所述第一Cacheline,所述第二Cacheline包含所述访问地址和所述待访问数据;
发送模块,用于向所述CPU发送所述待访问数据。
8.根据权利要求7所述的Cache,其特征在于,所述替换确定模块,具体用于:
判断所述Cache的最近最少访问LRU链表中前M个Cacheline中是否存在与DRAM类型的内存对应的Cacheline,其中所述LRU链表中前M个Cacheline为历史访问频率低于预设频率的Cacheline;
在确定所述LRU链表中前M个Cacheline中存在与DRAM类型的内存对应的Cacheline的情况下,在确定的所述前M个Cacheline中与DRAM类型的内存对应的Cacheline中选择第一个Cacheline为所述第一Cacheline。
9.根据权利要求7或8所述的Cache,其特征在于,所述替换确定模块,还用于:
在确定所述Cache中不存在满足第一预设条件的Cacheline的情况下,判断所述Cache中是否存在满足第二预设条件的cacheline,其中所述满足第二预设条件的cacheline包括历史访问频率低于所述预设频率、与NVM类型的内存对应并且未被修改过的Cacheline;
在确定所述Cache中存在满足第二预设条件的cacheline的情况下,在所述满足第二预设条件的cacheline中选择待替换的第一Cacheline。
10.根据权利要求9所述的Cache,其特征在于,所述替换确定模块,具体用于:
判断所述Cache的LRU链表中前N个Cacheline中是否存在与NVM类型的内存对应并且修改Modify标识位表示干净clean的Cacheline,其中所述前N个Cacheline为历史访问频率低于预设频率的Cacheline;
在确定所述LRU链表中前N个Cacheline中存在与NVM类型的内存对应且Modify位为clean的Cacheline的情况下,在确定的所述前N个Cacheline中与NVM类型的内存对应且Modify位为clean的Cacheline中选择第一个Cacheline为所述第一Cacheline。
11.根据权利要求10所述的Cache,其特征在于,所述替换确定模块,还用于:
在确定所述Cache中不存在满足第二预设条件的cacheline的情况下,确定所述LRU链表中最前端的Cacheline为所述第一Cacheline。
12.根据权利要求7~11中任一项所述的Cache,其特征在于,所述替换模块,还用于:
在采用第二Cacheline替换所述第一Cacheline之后,根据所述访问地址指向的所述内存中的存储介质的类型,记录所述第二Cacheline对应的内存的类型。
13.一种计算机系统,其特征在于,包括:处理器、内存和如权利要求7~12中任一项所述的缓存Cache,所述内存包括DRAM和NVM,所述处理器、所述内存与所述Cache通过总线连接。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410193960.4A CN105094686B (zh) | 2014-05-09 | 2014-05-09 | 数据缓存方法、缓存和计算机系统 |
EP15789250.6A EP3121703B1 (en) | 2014-05-09 | 2015-05-07 | Data caching method, cache and computer system |
KR1020167028378A KR102036769B1 (ko) | 2014-05-09 | 2015-05-07 | 데이터 캐싱 방법, 캐시 및 컴퓨터 시스템 |
PCT/CN2015/078502 WO2015169245A1 (zh) | 2014-05-09 | 2015-05-07 | 数据缓存方法、缓存和计算机系统 |
JP2016564221A JP6277572B2 (ja) | 2014-05-09 | 2015-05-07 | データキャッシング方法、キャッシュおよびコンピュータシステム |
US15/347,776 US10241919B2 (en) | 2014-05-09 | 2016-11-09 | Data caching method and computer system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410193960.4A CN105094686B (zh) | 2014-05-09 | 2014-05-09 | 数据缓存方法、缓存和计算机系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105094686A true CN105094686A (zh) | 2015-11-25 |
CN105094686B CN105094686B (zh) | 2018-04-10 |
Family
ID=54392171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410193960.4A Active CN105094686B (zh) | 2014-05-09 | 2014-05-09 | 数据缓存方法、缓存和计算机系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10241919B2 (zh) |
EP (1) | EP3121703B1 (zh) |
JP (1) | JP6277572B2 (zh) |
KR (1) | KR102036769B1 (zh) |
CN (1) | CN105094686B (zh) |
WO (1) | WO2015169245A1 (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106569961A (zh) * | 2016-10-31 | 2017-04-19 | 珠海市微半导体有限公司 | 一种基于访存地址连续性的cache模块及其访存方法 |
WO2017117734A1 (zh) * | 2016-01-06 | 2017-07-13 | 华为技术有限公司 | 一种缓存管理方法、缓存控制器以及计算机系统 |
CN107229574A (zh) * | 2016-03-23 | 2017-10-03 | 上海复旦微电子集团股份有限公司 | 缓存及其控制方法 |
CN107229546A (zh) * | 2016-03-23 | 2017-10-03 | 上海复旦微电子集团股份有限公司 | 缓存的模拟方法及装置 |
CN107229575A (zh) * | 2016-03-23 | 2017-10-03 | 上海复旦微电子集团股份有限公司 | 缓存性能的评估方法及装置 |
CN107368437A (zh) * | 2017-07-24 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种末级缓存管理方法及系统 |
CN108021514A (zh) * | 2016-10-28 | 2018-05-11 | 华为技术有限公司 | 一种缓存替换的方法和设备 |
CN110347338A (zh) * | 2019-06-18 | 2019-10-18 | 重庆大学 | 混合内存数据交换处理方法、系统及可读存储介质 |
CN111221749A (zh) * | 2019-11-15 | 2020-06-02 | 新华三半导体技术有限公司 | 数据块写入方法、装置、处理器芯片及Cache |
CN111488298A (zh) * | 2017-12-29 | 2020-08-04 | 贵阳忆芯科技有限公司 | 优化nvm接口命令执行顺序的方法与装置 |
CN112612727A (zh) * | 2020-12-08 | 2021-04-06 | 海光信息技术股份有限公司 | 一种高速缓存行替换方法、装置及电子设备 |
CN112667528A (zh) * | 2019-10-16 | 2021-04-16 | 华为技术有限公司 | 一种数据预取的方法及相关设备 |
CN113421599A (zh) * | 2021-06-08 | 2021-09-21 | 珠海市一微半导体有限公司 | 一种预缓存外部存储器数据的芯片及其运行方法 |
WO2022178869A1 (zh) * | 2021-02-26 | 2022-09-01 | 华为技术有限公司 | 一种缓存替换方法和装置 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6485320B2 (ja) * | 2015-10-23 | 2019-03-20 | 富士通株式会社 | キャッシュメモリおよびキャッシュメモリの制御方法 |
US10417134B2 (en) * | 2016-11-10 | 2019-09-17 | Oracle International Corporation | Cache memory architecture and policies for accelerating graph algorithms |
CN108255692B (zh) * | 2016-12-28 | 2021-02-26 | 新华三技术有限公司 | 信息处理方法及装置 |
CN111433749B (zh) * | 2017-10-12 | 2023-12-08 | 拉姆伯斯公司 | 具有dram高速缓存的非易失性物理存储器 |
US20190303037A1 (en) * | 2018-03-30 | 2019-10-03 | Ca, Inc. | Using sequential read intention to increase data buffer reuse |
JP7071640B2 (ja) * | 2018-09-20 | 2022-05-19 | 富士通株式会社 | 演算処理装置、情報処理装置及び演算処理装置の制御方法 |
CN110134514B (zh) * | 2019-04-18 | 2021-04-13 | 华中科技大学 | 基于异构内存的可扩展内存对象存储系统 |
CN112289353B (zh) * | 2019-07-25 | 2024-03-12 | 上海磁宇信息科技有限公司 | 一种优化的具有ecc功能的mram系统及其操作方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010049770A1 (en) * | 1998-12-08 | 2001-12-06 | Cai Zhong-Ning | Buffer memory management in a system having multiple execution entities |
CN101105773A (zh) * | 2007-08-20 | 2008-01-16 | 杭州华三通信技术有限公司 | 一种利用缓存实现数据存储的方法和装置 |
CN101236530A (zh) * | 2008-01-30 | 2008-08-06 | 清华大学 | 高速缓存替换策略的动态选择方法 |
CN102760101A (zh) * | 2012-05-22 | 2012-10-31 | 中国科学院计算技术研究所 | 一种基于ssd 的缓存管理方法及系统 |
US20140032818A1 (en) * | 2012-07-30 | 2014-01-30 | Jichuan Chang | Providing a hybrid memory |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5307477A (en) | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
US7457926B2 (en) | 2005-05-18 | 2008-11-25 | International Business Machines Corporation | Cache line replacement monitoring and profiling |
US7478197B2 (en) | 2006-07-18 | 2009-01-13 | International Business Machines Corporation | Adaptive mechanisms for supplying volatile data copies in multiprocessor systems |
US7568068B2 (en) * | 2006-11-13 | 2009-07-28 | Hitachi Global Storage Technologies Netherlands B. V. | Disk drive with cache having volatile and nonvolatile memory |
US7962695B2 (en) | 2007-12-04 | 2011-06-14 | International Business Machines Corporation | Method and system for integrating SRAM and DRAM architecture in set associative cache |
JP2011022933A (ja) * | 2009-07-17 | 2011-02-03 | Toshiba Corp | メモリ管理装置を含む情報処理装置及びメモリ管理方法 |
US20100185816A1 (en) * | 2009-01-21 | 2010-07-22 | Sauber William F | Multiple Cache Line Size |
EP2455865B1 (en) | 2009-07-17 | 2020-03-04 | Toshiba Memory Corporation | Memory management device |
US8914568B2 (en) | 2009-12-23 | 2014-12-16 | Intel Corporation | Hybrid memory architectures |
US9448938B2 (en) * | 2010-06-09 | 2016-09-20 | Micron Technology, Inc. | Cache coherence protocol for persistent memories |
CN102253901B (zh) | 2011-07-13 | 2013-07-24 | 清华大学 | 一种基于相变内存的读写区分数据存储替换方法 |
CN103548005B (zh) * | 2011-12-13 | 2016-03-30 | 华为技术有限公司 | 替换缓存对象的方法和装置 |
CN102831087B (zh) * | 2012-07-27 | 2016-05-11 | 国家超级计算深圳中心(深圳云计算中心) | 基于混合存储器的数据读写处理方法和装置 |
CN103092534B (zh) * | 2013-02-04 | 2016-01-27 | 中国科学院微电子研究所 | 一种内存结构的调度方法和装置 |
CN103927203B (zh) | 2014-03-26 | 2018-06-26 | 上海新储集成电路有限公司 | 一种计算机系统及控制方法 |
CN103914403B (zh) | 2014-04-28 | 2016-11-02 | 中国科学院微电子研究所 | 一种混合内存访问情况的记录方法及其系统 |
CN103927145B (zh) | 2014-04-28 | 2017-02-15 | 中国科学院微电子研究所 | 一种基于混合内存的系统休眠、唤醒方法及装置 |
CN104035893A (zh) | 2014-06-30 | 2014-09-10 | 浪潮(北京)电子信息产业有限公司 | 一种在计算机异常掉电时的数据保存方法 |
-
2014
- 2014-05-09 CN CN201410193960.4A patent/CN105094686B/zh active Active
-
2015
- 2015-05-07 WO PCT/CN2015/078502 patent/WO2015169245A1/zh active Application Filing
- 2015-05-07 EP EP15789250.6A patent/EP3121703B1/en active Active
- 2015-05-07 KR KR1020167028378A patent/KR102036769B1/ko active IP Right Grant
- 2015-05-07 JP JP2016564221A patent/JP6277572B2/ja active Active
-
2016
- 2016-11-09 US US15/347,776 patent/US10241919B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010049770A1 (en) * | 1998-12-08 | 2001-12-06 | Cai Zhong-Ning | Buffer memory management in a system having multiple execution entities |
CN101105773A (zh) * | 2007-08-20 | 2008-01-16 | 杭州华三通信技术有限公司 | 一种利用缓存实现数据存储的方法和装置 |
CN101236530A (zh) * | 2008-01-30 | 2008-08-06 | 清华大学 | 高速缓存替换策略的动态选择方法 |
CN102760101A (zh) * | 2012-05-22 | 2012-10-31 | 中国科学院计算技术研究所 | 一种基于ssd 的缓存管理方法及系统 |
US20140032818A1 (en) * | 2012-07-30 | 2014-01-30 | Jichuan Chang | Providing a hybrid memory |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108139872A (zh) * | 2016-01-06 | 2018-06-08 | 华为技术有限公司 | 一种缓存管理方法、缓存控制器以及计算机系统 |
WO2017117734A1 (zh) * | 2016-01-06 | 2017-07-13 | 华为技术有限公司 | 一种缓存管理方法、缓存控制器以及计算机系统 |
US10831677B2 (en) * | 2016-01-06 | 2020-11-10 | Huawei Technologies Co., Ltd. | Cache management method, cache controller, and computer system |
CN108139872B (zh) * | 2016-01-06 | 2020-07-07 | 华为技术有限公司 | 一种缓存管理方法、缓存控制器以及计算机系统 |
EP3388935A4 (en) * | 2016-01-06 | 2018-12-19 | Huawei Technologies Co., Ltd. | Cache management method, cache controller and computer system |
CN107229575A (zh) * | 2016-03-23 | 2017-10-03 | 上海复旦微电子集团股份有限公司 | 缓存性能的评估方法及装置 |
CN107229546A (zh) * | 2016-03-23 | 2017-10-03 | 上海复旦微电子集团股份有限公司 | 缓存的模拟方法及装置 |
CN107229574A (zh) * | 2016-03-23 | 2017-10-03 | 上海复旦微电子集团股份有限公司 | 缓存及其控制方法 |
CN108021514A (zh) * | 2016-10-28 | 2018-05-11 | 华为技术有限公司 | 一种缓存替换的方法和设备 |
CN108021514B (zh) * | 2016-10-28 | 2020-11-06 | 华为技术有限公司 | 一种缓存替换的方法和设备 |
CN106569961A (zh) * | 2016-10-31 | 2017-04-19 | 珠海市微半导体有限公司 | 一种基于访存地址连续性的cache模块及其访存方法 |
CN106569961B (zh) * | 2016-10-31 | 2023-09-05 | 珠海市一微半导体有限公司 | 一种基于访存地址连续性的cache模块及其访存方法 |
CN107368437A (zh) * | 2017-07-24 | 2017-11-21 | 郑州云海信息技术有限公司 | 一种末级缓存管理方法及系统 |
CN111488298A (zh) * | 2017-12-29 | 2020-08-04 | 贵阳忆芯科技有限公司 | 优化nvm接口命令执行顺序的方法与装置 |
CN110347338A (zh) * | 2019-06-18 | 2019-10-18 | 重庆大学 | 混合内存数据交换处理方法、系统及可读存储介质 |
CN112667528A (zh) * | 2019-10-16 | 2021-04-16 | 华为技术有限公司 | 一种数据预取的方法及相关设备 |
CN111221749A (zh) * | 2019-11-15 | 2020-06-02 | 新华三半导体技术有限公司 | 数据块写入方法、装置、处理器芯片及Cache |
CN112612727B (zh) * | 2020-12-08 | 2023-07-07 | 成都海光微电子技术有限公司 | 一种高速缓存行替换方法、装置及电子设备 |
CN112612727A (zh) * | 2020-12-08 | 2021-04-06 | 海光信息技术股份有限公司 | 一种高速缓存行替换方法、装置及电子设备 |
WO2022178869A1 (zh) * | 2021-02-26 | 2022-09-01 | 华为技术有限公司 | 一种缓存替换方法和装置 |
CN113421599A (zh) * | 2021-06-08 | 2021-09-21 | 珠海市一微半导体有限公司 | 一种预缓存外部存储器数据的芯片及其运行方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3121703A1 (en) | 2017-01-25 |
US10241919B2 (en) | 2019-03-26 |
JP6277572B2 (ja) | 2018-02-14 |
KR102036769B1 (ko) | 2019-10-25 |
EP3121703B1 (en) | 2019-11-20 |
JP2017519275A (ja) | 2017-07-13 |
US20170060752A1 (en) | 2017-03-02 |
EP3121703A4 (en) | 2017-05-17 |
KR20160132458A (ko) | 2016-11-18 |
CN105094686B (zh) | 2018-04-10 |
WO2015169245A1 (zh) | 2015-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105094686A (zh) | 数据缓存方法、缓存和计算机系统 | |
CN103136121B (zh) | 一种固态盘的缓存管理方法 | |
US9298384B2 (en) | Method and device for storing data in a flash memory using address mapping for supporting various block sizes | |
CN103425600B (zh) | 一种固态盘闪存转换层中的地址映射方法 | |
CN107797759B (zh) | 访问缓存信息的方法、装置与驱动器 | |
US20170139825A1 (en) | Method of improving garbage collection efficiency of flash-oriented file systems using a journaling approach | |
CN104572491A (zh) | 一种基于固态硬盘的读缓存管理方法及装置 | |
WO2017041570A1 (zh) | 向缓存写入数据的方法及装置 | |
CN109446117B (zh) | 一种固态硬盘页级闪存转换层设计方法 | |
CN105095116A (zh) | 缓存替换的方法、缓存控制器和处理器 | |
CN110109845B (zh) | 缓存数据管理方法、装置、计算机设备及存储介质 | |
KR101374065B1 (ko) | 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치 | |
EP3142014B1 (en) | Method, device and user equipment for reading/writing data in nand flash | |
US20170160940A1 (en) | Data processing method and apparatus of solid state disk | |
CN105917303A (zh) | 一种控制器、识别数据块稳定性的方法和存储系统 | |
US8219757B2 (en) | Apparatus and method for low touch cache management | |
CN108664217B (zh) | 一种降低固态盘存储系统写性能抖动的缓存方法及系统 | |
CN102650972B (zh) | 数据存储方法、装置及系统 | |
US20240020014A1 (en) | Method for Writing Data to Solid-State Drive | |
CN115203079A (zh) | 一种将数据写入固态硬盘的方法 | |
CN111352865B (zh) | 存储控制器的写缓存 | |
US9632950B2 (en) | Storage control device controlling access to a storage device and access controlling method of a storage device | |
US20230080105A1 (en) | Non-volatile storage controller with partial logical-to-physical (l2p) address translation table | |
CN108519860B (zh) | 一种ssd读命中的处理方法和装置 | |
WO2015118623A1 (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |