CN106062724B - 管理存储器模块上的数据的方法、存储器模块及存储介质 - Google Patents
管理存储器模块上的数据的方法、存储器模块及存储介质 Download PDFInfo
- Publication number
- CN106062724B CN106062724B CN201380079786.4A CN201380079786A CN106062724B CN 106062724 B CN106062724 B CN 106062724B CN 201380079786 A CN201380079786 A CN 201380079786A CN 106062724 B CN106062724 B CN 106062724B
- Authority
- CN
- China
- Prior art keywords
- nvm
- data
- memory module
- address
- stored
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- 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
- 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/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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- 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
-
- 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/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
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- 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/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- 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
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
示例实施方式涉及到管理存储器模块上的数据。可以在存储器模块上的第一NVM和第二NVM之间传递数据。第二NVM可以具有比第一NVM更高的存储器容量和更长的存取延迟。第一地址和第二地址之间的映射可以被存储在存储器模块上的NVM中。第一地址可以指代数据存储在第一NVM中所处的位置。第二地址可以指代从其复制了数据的第二NVM中的位置。
Description
技术领域
本公开涉及存储器模块上的数据管理。
背景技术
可以包括非易失性存储器(NVM)以及易失性存储器的混合存储器模块可以存储比其存储器所有都是易失性存储器的存储器模块更多的数据。存储器模块可以经由双倍数据速率(DDR)接口与外部部件进行通信。混合存储器模块上的高速缓冲存储器可以使存储器模块能够符合DDR接口时序要求,以及保护存储器模块上的低耐久NVM免于可能耗损NVM的大量写入操作。
发明内容
根据本公开的一个实施例,提供一种用于管理存储器模块上的数据的方法,所述方法包括:从操作系统OS页故障处理程序接收信息,所述信息指示请求的数据未被存储在存储器模块上的多个非易失性存储器NVM的第一NVM中;响应于接收到的信息,将所述请求的数据从多个NVM中的第二NVM复制到第一NVM,其中第二NVM具有比第一NVM更高的存储器容量和更长的存取延迟;在多个NVM中的一个NVM中存储第一地址和第二地址之间的映射,其中第一地址指代所述请求的数据在第一NVM中存储的位置,并且其中第二地址指代第二NVM中的位置,其中所述请求的数据是从所述第二NVM中的所述位置被复制的;响应于在存储器模块断电之后恢复对存储器模块的功率:读取存储的映射;以及将存储在第一NVM中的第一地址处的修改的数据复制到第二NVM中的第二地址,以用存在于第一NVM中的最新版本的数据来更新第二NVM,其中,所述第一NVM中所述修改的数据是在所述断电之前被存储的。
根据本公开的另一个实施例,提供一种用于管理存储器模块上的数据的用由存储器模块的处理器可执行的指令编码的机器可读存储介质,所述机器可读存储介质包括:用于检测在存储器模块上的多个非易失性存储器NVM中的第一NVM中没有请求的数据的指令;用于将所述请求的数据从多个NVM中的第二NVM复制到第一NVM的指令,其中第二NVM具有比第一NVM更高的存储器容量和更长的存取延迟;用于在多个NVM中的一个NVM中存储第一地址和第二地址之间的映射的指令,其中第一地址指代所述请求的数据在第一NVM中存储的位置,并且其中第二地址指代第二NVM中的位置,其中所述请求的数据是从所述第二NVM中的所述位置被复制的;用于响应于在存储器模块断电之后恢复对存储器模块的功率而执行以下操作的指令:读取存储的映射;以及将存储在第一NVM中的第一地址处的修改的数据复制到第二NVM中的第二地址,以用存在于第一NVM中的最新版本的数据更新第二NVM,其中,所述第一NVM中所述修改的数据是在所述断电之前被存储的。
根据本公开的再一个实施例,提供一种存储器模块,包括:多个非易失性存储器NVM,其中多个NVM包括:第一非易失性存储器NVM;以及具有比第一NVM更高的存储器容量和更长的存取延迟的第二NVM;以及存储器控制器,所述存储器控制器用于:在第一NVM和第二NVM之间传递数据;在多个NVM中的一个NVM中维持指代第一NVM中的各位置的第一多个地址和指代第二NVM中的各位置的第二多个地址之间的多个映射,其中在第一多个地址和第二多个地址之间传递数据;响应于在存储器模块断电之后恢复对存储器模块的功率:读取存储的映射;以及将存储在第一NVM中的修改的数据复制到第二NVM,以用存在于第一NVM中的最新版本的数据来更新第二NVM,其中,所述第一NVM中所述修改的数据是在所述断电之前被存储的。
附图说明
下面详细的描述参考附图,其中:
图1是包括管理存储器模块上的数据的存储器控制器的示例存储器模块的框图;
图2是包括在存储器模块上的非易失性存储器(NVM)之间传递数据和保持跟踪数据在NVM中被存储在何处的存储器控制器的示例存储器模块的框图;
图3是包括用启用对存储器模块上的数据的管理的指令编码的机器可读存储介质的示例存储器模块的框图;
图4是包括用移动和跟踪存储器模块上的数据的指令编码的机器可读存储介质的示例存储器模块的框图;
图5是用于管理存储器模块上数据的示例方法的流程图;以及
图6是用于维持与存储在存储器模块上的数据相关的细节的示例方法的流程图。
具体实施方式
易失性存储器可用作混合存储器模块上的高速缓冲存储器。如果存储器模块失电,则易失性高速缓冲存储器中的数据可能丢失。如果易失性高速缓冲存储器中的数据在从存储器模块上的非易失性存储器(NVM)被复制后已被修改,则NVM可能不能获得修改的数据,如果功率在易失性高速缓冲存储器中的修改的数据被复制回到NVM之前失去的话。
鉴于上文,本公开提供具有非易失性高速缓冲存储器的存储器模块,非易失性高速缓冲存储器的存取时间接近易失性高速缓冲存储器的存取时间。如果从这种存储器模块去除功率,则高速缓冲存储器中的数据不丢失,并且存储器模块上的另一NVM可以能够在恢复功率后获得存储在非易失性高速缓冲存储器中的修改的数据。具有非易失性高速缓冲存储器的存储器模块也可以消耗比具有易失性高速缓冲存储器的存储器模块更少功率。
现在参考附图,图1是包括管理存储器模块上的数据的存储器控制器的示例存储器模块100的框图。存储器模块100可以是直插式存储器模块,诸如单直插式存储器模块(SIMM)或双直插式存储器模块(DIMM)或适合于安装存储器集成电路(IC)的任何存储器模块。在图1中,存储器模块100包括非易失性存储器(NVM)102、NVM 104和存储器控制器106。
NVM 102和104中的每个可以包括电阻随机存取存储器(ReRAM)、闪速存储器、电可擦除可编程只读存储器(EEPROM)、磁阻随机存取存储器(MRAM)、相变随机存取存储器(PCRAM)或适合于存储可执行指令和/或数据的任何其他非易失性存储器。如本文中使用的术语“非易失性存储器”或“NVM”指代能够甚至未通电时保留存储的指令/数据的存储器。NVM 102和104可在存储器模块100上的IC中。
NVM 102可以具有比NVM 104更高的存储器容量和更长的存取延迟。如本文中关于存储器使用的术语“存取延迟”指代从存储器读取数据或写入数据到存储器中花费的时间长度。在一些实施方式中,NVM 102可以是闪速存储器,并且NVM 104可以是ReRAM。NVM 104可以为请求存取存储在NVM 102中的数据的应用程序启用活动数据的缓存,并可以允许以NVM 102可能不能实现的速度存取数据。充当快速高速缓冲存储器的NVM 104可以对在存储器模块100的外部的部件是透明的。
存储器控制器106可以通信地耦合到存储器模块100上的NVM 102和104。在一些实施方式中,存储器控制器106可以是数字电路。如图1中图示并在下面详细描述的,存储器控制器106可以包括模块108和110。模块可以包括编码在机器可读存储介质上和由存储器控制器106的处理器可执行的指令集。此外或作为替代方案,模块可以包括硬件设备,其包括用于实施以下描述的功能的电子电路。
传递数据模块108可以在NVM 102和104之间传递数据。在一些实施方式中,传递数据模块108可以包括用于控制NVM 102和104之间的传递的直接存储器存取(DMA)控制器。传递数据模块108可以包括用于将数据传递到NVM 102和104并且从NVM 102和104接收数据的接口,并且可以包括用于存储从NVM 102和104读取的数据的缓冲器。
如以上讨论的,NVM 104可以充当快速高速缓冲存储器,并且NVM 102可以是更慢、更高容量的存储器。传递数据模块108可以接收信息(例如,经由存储器控制器106上的操作系统接口),其指示由在存储器模块100的外部的部件请求的数据(这样的数据可以在本文中被称为“请求的数据”)不存在于NVM 104中。传递数据模块108可以从操作系统(OS)页故障处理程序接收这样的信息,或可以以其它方式检测没有请求的数据。例如,当存储器控制器106接收存取存储在指代在NVM 102中的位置的虚拟地址处的数据的请求并且该虚拟地址在OS页表中没有有效条目时,可以调用页故障处理程序。响应于接收的信息,传递数据模块108可以将请求的数据从NVM 102复制到NVM 104。
应该理解的是,可以以与发送到外部部件的数据块的大小不同大小的块在NVM102和104之间传递数据。例如,传递数据模块108可以逐页(例如,一页可以是大约4千字节)将数据从NVM 102复制到NVM 104,并且存储器控制器106可以输出在高速缓存行(例如,大约64字节)中从NVM 104读取的数据(例如,请求的数据)到外部部件。
维持映射模块110可以在存储器模块100上的NVM上维持可以指代NVM 104中的位置的第一多个地址和可以指代NVM 102中的位置的第二多个地址之间的多个映射。可以在第一多个地址和第二多个地址之间传递数据。如本文中关于映射和指示使用的术语“维持”指代生成和/或存储新的映射/指示,更新现有映射/指示以及删除现有映射/指示。例如,当将数据从NVM 102复制到NVM 104时可以存储新的映射,当存储在NVM 104中的数据被修改时可以更新指示(关于图2进一步讨论指示),并且当在NVM 104上执行高速缓存冲洗功能时可以删除映射。应该理解的是,存储器模块100可以包括除了NVM 102和104以外的NVM,并且映射可能被维持在其他NVM中的一个NVM中。
如本文中关于地址使用的术语“映射”指代指示在其之间传递数据的两个地址之间的关系的信息。在一些实施方式中,映射可以是用于跟踪在NVM 102中的哪些数据页当前缓存在NVM 104中的表中的条目。条目可以包括指代存储数据的特定页所处的NVM 102中的位置的物理地址,其紧挨指代存储数据的该特定页所处的NVM 104中的位置的虚拟地址。在一些实施方式中,映射可以包括指代NVM 104中的位置的地址和指向NVM 102中的相应位置的指针。
维持映射模块110可以响应于请求的数据从NVM 104被复制到NVM 102存储第一地址和第二地址之间的映射。第一地址可以是第一多个地址中的一个,并且可以指代在NVM104中存储请求的数据所处的位置。第二地址可以是第二多个地址中的一个,并且可以指代从其复制请求的数据的在NVM 102中的位置。可以将映射存储例如在NVM 102中,在NVM 104中,或在存储器控制器106中的NVM中。
当将映射存储在存储器模块100上的NVM中时,映射可以保持在NVM中,即使存储器模块100不具有功率。当存储器模块100上电时(例如,在失去功率或掉电后),传递数据模块108可以读取映射并且将存储在NVM 104中的第一多个地址的数据复制到NVM 102中的第二多个地址的相应地址。因此,如果在去除至存储器模块100的功率之前NVM 104中的数据已被修改(例如,通过在存储器模块100的外部的部件),则NVM 102可以在恢复功率后存储数据的最新版本。在一些实施方式中,OS可以使用存储的映射来初始化页表,例如,当在功率失去后恢复至存储器模块100的功率时。第一多个地址可以是页表中的虚拟地址,并且第二多个地址可以是映射到页表中的相应虚拟地址的物理地址。
图2是包括在存储器模块上的NVM之间传递数据和保持跟踪数据在NVM中被存储在何处的存储器控制器的示例存储器模块200的框图。存储器模块200可以是直插式存储器模块,诸如SIMM或DIMM,或适合于安装存储器IC的任何存储器模块。在图2中,存储器模块200包括NVM 202、NVM 204和存储器控制器206。NVM 202和204可以分别类似(例如,具有类似功能和/或部件)于图1的NVM 102和104。存储器控制器206可以通信地耦合到存储器模块200上的NVM 202和204。在一些实施方式中,存储器控制器206可以是数字电路。如图2中图示并在下面详细描述的,存储器控制器206可以包括模块208、210、212、214和216。模块可以包括编码在机器可读存储介质上和由存储器控制器206的处理器可执行的指令集。此外或作为替代方案,模块可以包括硬件设备,其包括用于实施以下描述的功能的电子电路。
存储器控制器206的模块208和210可以类似于存储器控制器106的模块108和110。监控修改模块212可以监控存储器模块200上的快速高速缓冲存储器(例如,NVM 204)中的数据页的修改。监控修改模块212可以检测快速高速缓冲存储器接收的写入命令和/或检测在快速高速缓冲存储器中执行的写入操作。在一些实施方式中,监控修改模块212可以确定有效数据是否存储在快速高速缓冲存储器中的特定地址处。
维持指示模块214可以在存储器模块200上的NVM中维持存储器模块200上的快速高速缓冲存储器中的数据页是否已被修改的指示。例如,可以将这样的指示存储在NVM 202中,在NVM 204中,或在存储器控制器206中的NVM中。如本文中使用的术语“指示”指代环境是否存在的标志。响应于监控修改模块212检测到在快速高速缓冲存储器中的数据页的修改,维持指示模块214可以存储已修改数据页的指示。例如,维持指示模块214可以设置与数据页关联的脏比特。
在一些实施方式中,当在功率失去后恢复至存储器模块200的功率时,传递数据模块208可以将具有它们已被修改的指示的页(例如,其各自的脏比特已被设置的页)从NVM204复制到NVM 202。传递数据模块208可以不复制没有它们已被修改的指示的页,或者具有它们尚未被修改的指示的页(例如,其各自的脏比特尚未被设置的页)。在一些实施方式中,页是否已被修改的指示可以用于确定在NVM 204上执行取消分配或高速缓存冲洗操作之前哪些页从NVM 204复制到NVM 202。已被修改的NVM 204中的数据页可以在执行取消分配/高速缓存冲洗操作之前被复制到NVM 202,从而修改的数据可以保留在存储器模块200中。尚未被修改的NVM 204中的数据页可以被无效且不被复制,因此节省将花费来写入未修改的数据到NVM 202的延迟时间和资源。
在一些实施方式中,维持指示模块214可以在存储器模块200上的NVM中维持NVM202中的相应数据页是否存储在NVM 204中的指示。这样的指示可以用于跟踪在NVM 204中的活动页和数据的可用性。NVM 202中的相应数据页是否存储在NVM 204中的指示可以被存储,例如在NVM 202中,在NVM 204中或在存储器控制器206中的NVM中,并且可以被存储在与用于存储页是否已被修改的指示的NVM相同的NVM或不同的NVM中。
在一些实施方式中,维持指示模块214可以在存储器模块200上的NVM中维持有效数据是否被存储在指代存储器模块200的快速高速缓冲存储器(例如,NVM 204)中的位置的相应地址处的指示。这样的指示可以用于确定向其可以写入数据的快速高速缓冲存储器中的地址,并且多少自由存储空间存在于快速高速缓冲存储器中。有效数据是否存储在相应地址处的指示可以被存储,例如在NVM 202中,在NVM 204中或在存储器控制器206中的NVM中,并且可以被存储在与用于存储先前讨论的指示的(一个或多个)NVM相同的NVM或不同的NVM中。
输出数据模块216可以传送从NVM 202和/或204读取的数据到在存储器模块200的外部的部件。输出数据模块216可以传送请求的数据到请求了该数据的外部部件。该数据可以在高速缓存行中被输出。图3是包括用启用对存储器模块上的数据的管理的指令编码的机器可读存储介质的示例存储器模块300的框图。存储器模块300可以是直插式存储器模块,诸如SIMM或DIMM,或适合于安装存储器IC的任何存储器模块。在图3中,存储器模块300包括处理器302和机器可读存储介质304。
处理器302可以包括中央处理单元(CPU)、微处理器(例如,基于半导体的微处理器)和/或适合于检索和/或执行存储在机器可读存储介质304中的指令的其他硬件设备。处理器302可以取得、解码和/或执行指令306、308和310,以启用对存储器模块300上的数据的管理,如以下描述的。作为对检索和/或执行指令的替代方案或除了检索和/或执行指令以外,处理器302可以包括包含用于执行指令306、308和/或310的功能的许多电子部件的电子电路。
机器可读存储介质304可以是任何适合电子、磁性、光学、或其它物理存储设备,其包含或存储可执行指令。因此,机器可读存储介质304可以例如包括随机存取存储器(RAM)、EEPROM、存储设备、光学盘等。在一些实施方式中,机器可读存储介质304可以包括非临时性存储介质,其中术语“非临时性”不涵盖临时传播信号。如以下详细描述的,可以用一组可执行指令306、308和310来编码机器可读存储介质304。
指令306可以检测在存储器模块300上的第一NVM中没有请求的数据。第一NVM可以是快速高速缓冲存储器(例如,NVM 104),如以上关于图1讨论的。在一些实施方式中,指令306可以接收来自OS页故障处理程序的信息,其指示请求的数据未被存储在第一NVM中。例如,当期望在没有OS页表中的有效条目的虚拟地址处存取存储在存储器模块300中的数据时,可以调用页故障处理程序。
指令308可以将请求的数据从在存储器模块300上的第二NVM(例如,NVM 102)复制到第一NVM。第二NVM可以具有比第一NVM更高的存储器容量和更长的存取延迟,如以上关于图1讨论的。可以响应于检测到在第一NVM中没有请求的数据,将请求的数据从第二NVM复制到第一NVM。例如,当OS页故障处理程序被调用时,可以复制请求的数据。在一些实施方式中,数据可以从第二NVM被逐页复制到第一NVM。
指令310可以在存储器模块300上的NVM中存储第一地址和第二地址之间的映射。第一地址可以指代请求的数据被存储在第一NVM中所处的位置。第二地址可以指代从其复制了请求的数据的第二NVM中的位置。在一些实施方式中,映射可以包括在表中的物理和虚拟地址的条目和/或指针,如以上关于图1讨论的。可以响应于请求的数据从存储器模块300上的NVM复制到存储器模块300上的另一NVM(例如,从第二NVM到第一NVM)而存储映射。映射可以被存储例如在第一NVM中,在第二NVM中或在存储器模块300上的存储器控制器中的NVM中。
图4是包括用移动和跟踪存储器模块上的数据的指令编码的机器可读存储介质的示例存储器模块400的框图。存储器模块400可以是直插式存储器模块,诸如SIMM或DIMM,或适合于安装存储器IC的任何存储器模块。在图4中,存储器模块400包括处理器402和机器可读存储介质404。
如同图3的处理器302一样,处理器402可以包括CPU、微处理器(例如,基于半导体的微处理器)和/或适合于检索和/或执行存储在机器可读存储介质404中的指令的其他硬件设备。处理器402可以取得、解码和/或执行指令406、408、410、412、414和416,以启用对存储器模块400上的数据的移动和跟踪,如以下描述的。作为对检索和/或执行指令的替代方案或除了检索和/或执行指令以外,处理器402可以包括包含用于执行指令406、408、410、412、414和/或416的功能的许多电子部件的电子电路。
如同图3的机器可读存储介质304一样,机器可读存储介质404可以是任何适合物理存储设备,其存储可执行指令。机器可读存储介质404上的指令406、408、和410可以类似于机器可读存储介质304上的指令306、308和310。指令412可以从存储器模块400上的存储器读取存储的映射。例如,可以从快速高速缓存NVM(例如NVM 204)、高容量和慢存取时间NVM(例如NVM 202)或在存储器模块400上的存储器控制器中的NVM读取存储的映射。在一些实施方式中,存储的映射可以当存储器模块400在功率失去后上电时被读取,和/或可以通过OS使用以初始化页表,如以上关于图1讨论的。
指令414可以复制存储在第一地址处的数据到存储器模块400中的第二地址。第一地址可以指代数据在存储器模块400上的快速高速缓存NVM中的位置。第二地址可以指代在存储器模块400上的更高的容量/更长的存取延迟NVM中的从其复制了数据的位置。在一些实施方式中,第一地址可以是虚拟地址,并且第二地址可以是在存储的映射中的物理地址,并且可以在存储器模块400上电时读取存储的映射之后复制数据。因此,较慢的NVM可以存储最新的数据,如以上关于图1讨论的。
指令416可以从存储器模块400输出请求的数据。例如,存储器模块400上的存储器控制器(例如,存储器控制器206)可以输出从存储器模块400上的存储器(例如,快速高速缓冲存储器)读取的请求的数据到在存储器模块400的外部的部件。请求的数据可以在高速缓存行中被输出,如以上关于图1讨论的。
图5是用于管理存储器模块上数据的示例方法500的流程图。虽然以下参考图3的处理器302描述方法500的执行,但是应该理解的是方法500的执行可以由其他适合设备(诸如,图4的处理器402)执行。可以以存储在机器可读存储介质(例如,存储介质304)上的可执行指令的形式和/或以电子电路的形式来实施方法500。
方法500可以在块502中开始,其中处理器302可以从OS页故障处理程序接收信息,其指示请求的数据未被存储在存储器模块上的多个NVM的第一NVM中。第一NVM可以是快速高速缓冲存储器,诸如图1的NVM 104。例如,当期望在指代第一NVM中的位置的虚拟地址处存取存储在存储器模块上的存储器控制器中的数据并且该虚拟地址在OS页表中没有有效条目时,可以调用页故障处理程序。
接下来,在块504中,处理器302可以响应于接收到的信息将请求的数据从多个NVM的第二NVM复制到第一NVM。第二NVM可以具有比第一NVM更高的存储器容量和更长的存取延迟。例如,第一NVM可以是ReRAM,并且第二NVM可以是闪速存储器。请求的数据可以从第二NVM被逐页复制到第一NVM。
最后,在块506中,处理器302可以在存储器模块上的多个NVM中的一个NVM中存储第一地址和第二地址之间的映射。第一地址可以指代请求的数据存储在第一NVM中所处的位置。第二地址可以指代在第二NVM中的从其复制了请求的数据的位置。映射可以包括表中的物理和虚拟地址的条目和/或指针,如以上关于图1讨论的。在一些实施方式中,可以响应于请求的数据从第二NVM复制到存储器模块上的第一NVM而存储映射。映射可以被存储,例如在第一NVM中,在第二NVM中,或在存储器模块上的存储器控制器中的NVM中。
图6是用于维持与存储在存储器模块上的数据相关的细节的示例方法600的流程图。虽然以下参考图4的处理器402描述方法600的执行,但是应理解的是,方法600的执行可以由其他适合设备(诸如图3的处理器302)执行。可以以存储在机器可读存储介质(例如,存储介质404)上的可执行指令的形式和/或以电子电路的形式来实施方法600。
方法600可以在块602中开始,其中处理器402可以在存储器模块上电时读取存储的映射。可以从存储器模块上的NVM读取映射。例如,可以从快速高速缓存NVM、高容量/慢存取时间NVM或存储器模块上的存储器控制器中的NVM读取映射。映射可以包括第一地址和第二地址。第一地址可以指代数据存储在存储器模块上的第一NVM(例如,快速高速缓存NVM)中所处的位置。第二地址可以指代从其复制了数据的在存储器模块上的第二NVM(例如,高容量/慢存取时间NVM)中的位置。在一些实施方式中,可以使用映射来初始化OS页表,如以上关于图1讨论的。在这样的实施方式中,第一地址可以是页表中的虚拟地址,并且第二地址可以是映射到页表中的虚拟地址的物理地址。
接下来,在块604中,处理器402可以复制存储在第一NVM中的第一地址处的数据到第二NVM中的第二地址。在其中第一NVM相对于第二NVM充当快速高速缓冲存储器的实施方式中,这样的复制可以允许第二NVM在恢复至存储器模块的功率后存储数据的最新版本,即使在去除至存储器模块的功率之前第一NVM中的数据已被修改,如以上关于图1讨论的。数据可以从第一NVM被逐页复制到第二NVM。
在块606中,处理器402可以指示第一NVM中的存储的数据页是否已被修改。处理器402可以响应于检测到写入命令被发送到第一NVM或写入操作在第一NVM上被执行而指示修改。在一些实施方式中,处理器402可以设置与数据页关联的脏比特,以指示数据页已被修改,如以上关于图2讨论的。
在块608中,处理器402可以在高速缓存行中输出请求的数据。请求的数据可以从第一NVM被读取并被传送到在存储器模块的外部的部件。虽然块608在图6中被示出在块606下面,但是应该理解的是处理器402可以在指示存储的数据是否已被修改之前或与指示存储的数据是否已被修改并行输出请求的数据。前述公开描述具有非易失性快速高速缓冲存储器和更高的容量、更慢的存取时间NVM的存储器模块。本文中描述的示例实施方式使存储器模块能够在功率失去后保留数据,并且跟踪数据的位置,而不必依赖于OS。
Claims (12)
1.一种用于管理存储器模块上的数据的方法,所述方法包括︰
从操作系统OS页故障处理程序接收信息,所述信息指示请求的数据未被存储在存储器模块上的多个非易失性存储器NVM的第一NVM中;
响应于接收到的信息,将所述请求的数据从多个NVM中的第二NVM复制到第一NVM,其中第二NVM具有比第一NVM更高的存储器容量和更长的存取延迟;
在多个NVM中的一个NVM中存储第一地址和第二地址之间的映射,其中第一地址指代所述请求的数据在第一NVM中存储的位置,并且其中第二地址指代第二NVM中的位置,其中所述请求的数据是从所述第二NVM中的所述位置被复制的;
响应于在存储器模块断电之后恢复对存储器模块的功率:
读取存储的映射;以及
将存储在第一NVM中的第一地址处的修改的数据复制到第二NVM中的第二地址,以用存在于第一NVM中的最新版本的数据来更新第二NVM,其中,所述第一NVM中所述修改的数据是在所述断电之前被存储的。
2.权利要求1的方法,其中第一NVM包括电阻随机存取存储器(ReRAM)、磁阻随机存取存储器(MRAM)或相变随机存取存储器(PCRAM)。
3.权利要求1的方法,其中数据从第二NVM被逐页复制到第一NVM,所述方法进一步包括在高速缓存行中输出所述请求的数据。
4.权利要求1的方法,进一步包括指示第一NVM中的存储的数据页是否已被修改。
5.权利要求1的方法,其中:
OS使用存储的映射来初始化页表;
第一地址是页表中的虚拟地址;以及
第二地址是映射到所述页表中的虚拟地址的物理地址。
6.一种用于管理存储器模块上的数据的用由存储器模块的处理器可执行的指令编码的机器可读存储介质,所述机器可读存储介质包括:
用于检测在存储器模块上的多个非易失性存储器NVM中的第一NVM中没有请求的数据的指令;
用于将所述请求的数据从多个NVM中的第二NVM复制到第一NVM的指令,其中第二NVM具有比第一NVM更高的存储器容量和更长的存取延迟;
用于在多个NVM中的一个NVM中存储第一地址和第二地址之间的映射的指令,其中第一地址指代所述请求的数据在第一NVM中存储的位置,并且其中第二地址指代第二NVM中的位置,其中所述请求的数据是从所述第二NVM中的所述位置被复制的;
用于响应于在存储器模块断电之后恢复对存储器模块的功率而执行以下操作的指令:
读取存储的映射;以及
将存储在第一NVM中的第一地址处的修改的数据复制到第二NVM中的第二地址,以用存在于第一NVM中的最新版本的数据更新第二NVM,其中,所述第一NVM中所述修改的数据是在所述断电之前被存储的。
7.权利要求6的机器可读存储介质,进一步包括:
用于将数据从第二NVM逐页复制到第一NVM的指令;以及
用于在高速缓存行中输出所述请求的数据的指令。
8.一种存储器模块,包括:
多个非易失性存储器NVM,其中多个NVM包括:
第一非易失性存储器NVM;以及
具有比第一NVM更高的存储器容量和更长的存取延迟的第二NVM;以及
存储器控制器,所述存储器控制器用于:
在第一NVM和第二NVM之间传递数据;
在多个NVM中的一个NVM中维持指代第一NVM中的各位置的第一多个地址和指代第二NVM中的各位置的第二多个地址之间的多个映射,其中在第一多个地址和第二多个地址之间传递数据;
响应于在存储器模块断电之后恢复对存储器模块的功率:
读取存储的映射;以及
将存储在第一NVM中的修改的数据复制到第二NVM,以用存在于第一NVM中的最新版本的数据来更新第二NVM,其中,所述第一NVM中所述修改的数据是在所述断电之前被存储的。
9.权利要求8的存储器模块,其中第一NVM包括电阻随机存取存储器(ReRAM)、磁阻随机存取存储器(MRAM)或相变随机存取存储器(PCRAM)。
10.权利要求8的存储器模块,其中所述存储器控制器进一步用于:
监控第一NVM中的数据页的修改;以及
响应于检测到第一NVM中的数据页的修改,存储数据页已被修改的指示。
11.权利要求8的存储器模块,其中所述存储器控制器进一步用于:
在第二NVM和第一NVM之间逐页传递数据;以及
在高速缓存行中输出从第一NVM读取的数据。
12.权利要求8的存储器模块,其中所述存储器控制器进一步用于在多个NVM中的一个NVM上维持:
第二NVM中的相应的数据页是否被存储在第一NVM中的第一多个指示;以及
有效数据是否被存储在指代第一NVM中的位置的相应地址处的第二多个指示。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/062371 WO2015047326A1 (en) | 2013-09-27 | 2013-09-27 | Data management on memory modules |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106062724A CN106062724A (zh) | 2016-10-26 |
CN106062724B true CN106062724B (zh) | 2020-09-08 |
Family
ID=52744226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380079786.4A Expired - Fee Related CN106062724B (zh) | 2013-09-27 | 2013-09-27 | 管理存储器模块上的数据的方法、存储器模块及存储介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11733932B2 (zh) |
EP (1) | EP3049938B1 (zh) |
CN (1) | CN106062724B (zh) |
TW (1) | TWI533127B (zh) |
WO (1) | WO2015047326A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6517549B2 (ja) * | 2015-03-13 | 2019-05-22 | 東芝メモリ株式会社 | メモリコントローラ、記憶装置、データ転送システム、データ転送方法、及びデータ転送プログラム |
US10082963B2 (en) * | 2016-04-18 | 2018-09-25 | Super Micro Computer, Inc. | Low capacity latency storage enclosure with expander |
US10394310B2 (en) * | 2016-06-06 | 2019-08-27 | Dell Products, Lp | System and method for sleeping states using non-volatile memory components |
US9971510B2 (en) | 2016-10-16 | 2018-05-15 | Mediatek Inc. | Method for managing memory and associated microcontroller |
US11301378B2 (en) | 2017-10-12 | 2022-04-12 | Rambus Inc. | Nonvolatile physical memory with DRAM cache and mapping thereof |
US10705747B2 (en) * | 2018-03-21 | 2020-07-07 | Micron Technology, Inc. | Latency-based storage in a hybrid memory system |
US10809942B2 (en) * | 2018-03-21 | 2020-10-20 | Micron Technology, Inc. | Latency-based storage in a hybrid memory system |
US10705963B2 (en) | 2018-03-21 | 2020-07-07 | Micron Technology, Inc. | Latency-based storage in a hybrid memory system |
US10877693B2 (en) * | 2018-06-29 | 2020-12-29 | Intel Corporation | Architecture for dynamic transformation of memory configuration |
US10719461B2 (en) * | 2018-08-07 | 2020-07-21 | Western Digital Technologies, Inc. | Solid state device with distributed bit buckets |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102301345A (zh) * | 2008-12-30 | 2011-12-28 | 英特尔公司 | 混合存储设备 |
CN102436419A (zh) * | 2010-09-29 | 2012-05-02 | 三星电子株式会社 | 非易失性存储器系统及管理其电源的方法 |
CN102597910A (zh) * | 2009-09-09 | 2012-07-18 | 弗森-艾奥公司 | 存储设备中用于功率减小管理的装置、系统及方法 |
US8397013B1 (en) * | 2006-10-05 | 2013-03-12 | Google Inc. | Hybrid memory module |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5261067A (en) * | 1990-04-17 | 1993-11-09 | North American Philips Corp. | Method and apparatus for providing synchronized data cache operation for processors in a parallel processing system |
US7035974B2 (en) * | 2002-11-06 | 2006-04-25 | Synology Inc. | RAID-5 disk having cache memory implemented using non-volatile RAM |
US20040117583A1 (en) | 2002-12-12 | 2004-06-17 | International Business Machines Corporation | Apparatus for influencing process scheduling in a data processing system capable of utilizing a virtual memory processing scheme |
US7283390B2 (en) * | 2004-04-21 | 2007-10-16 | Impinj, Inc. | Hybrid non-volatile memory |
WO2008055272A2 (en) | 2006-11-04 | 2008-05-08 | Virident Systems, Inc. | Integrating data from symmetric and asymmetric memory |
US7761740B2 (en) * | 2007-12-13 | 2010-07-20 | Spansion Llc | Power safe translation table operation in flash memory |
US8738840B2 (en) | 2008-03-31 | 2014-05-27 | Spansion Llc | Operating system based DRAM/FLASH management scheme |
US8560761B2 (en) | 2008-03-31 | 2013-10-15 | Spansion Llc | Memory resource management for a flash aware kernel |
US20100057984A1 (en) * | 2008-08-26 | 2010-03-04 | Seagate Technology Llc | Memory hierarchy containing only non-volatile cache |
US8327076B2 (en) * | 2009-05-13 | 2012-12-04 | Seagate Technology Llc | Systems and methods of tiered caching |
US8301717B2 (en) | 2009-06-09 | 2012-10-30 | Deshpande Enterprises, Inc. | Extended virtual memory system and method in a computer cluster |
US7898859B2 (en) | 2009-06-15 | 2011-03-01 | Micron Technology, Inc. | Use of emerging non-volatile memory elements with flash memory |
KR20110131714A (ko) | 2010-05-31 | 2011-12-07 | 주식회사 하이닉스반도체 | 데이터 복사를 제어하는 플래시 시스템 및 그의 제어 방법 |
KR20130063244A (ko) | 2011-12-06 | 2013-06-14 | 주식회사 디에이아이오 | 비휘발성 메모리 시스템 |
KR20130070178A (ko) * | 2011-12-19 | 2013-06-27 | 한국전자통신연구원 | 하이브리드 저장 장치 및 그것의 동작 방법 |
US10489295B2 (en) * | 2012-10-08 | 2019-11-26 | Sandisk Technologies Llc | Systems and methods for managing cache pre-fetch |
US8959281B1 (en) * | 2012-11-09 | 2015-02-17 | Western Digital Technologies, Inc. | Data management for a storage device |
-
2013
- 2013-09-27 WO PCT/US2013/062371 patent/WO2015047326A1/en active Application Filing
- 2013-09-27 CN CN201380079786.4A patent/CN106062724B/zh not_active Expired - Fee Related
- 2013-09-27 EP EP13894169.5A patent/EP3049938B1/en active Active
- 2013-09-27 US US14/912,681 patent/US11733932B2/en active Active
-
2014
- 2014-07-08 TW TW103123468A patent/TWI533127B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8397013B1 (en) * | 2006-10-05 | 2013-03-12 | Google Inc. | Hybrid memory module |
CN102301345A (zh) * | 2008-12-30 | 2011-12-28 | 英特尔公司 | 混合存储设备 |
CN102597910A (zh) * | 2009-09-09 | 2012-07-18 | 弗森-艾奥公司 | 存储设备中用于功率减小管理的装置、系统及方法 |
CN102436419A (zh) * | 2010-09-29 | 2012-05-02 | 三星电子株式会社 | 非易失性存储器系统及管理其电源的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106062724A (zh) | 2016-10-26 |
WO2015047326A1 (en) | 2015-04-02 |
EP3049938A1 (en) | 2016-08-03 |
TW201516679A (zh) | 2015-05-01 |
US20160202936A1 (en) | 2016-07-14 |
EP3049938A4 (en) | 2017-06-07 |
TWI533127B (zh) | 2016-05-11 |
US11733932B2 (en) | 2023-08-22 |
EP3049938B1 (en) | 2019-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106062724B (zh) | 管理存储器模块上的数据的方法、存储器模块及存储介质 | |
CN106445724B (zh) | 与受保护数据分开存储奇偶校验数据 | |
CN107301016B (zh) | 用于垃圾收集的有效性跟踪 | |
CN111033477B (zh) | 逻辑到物理映射 | |
US10678768B2 (en) | Logical band-based key-value storage structure | |
KR101449524B1 (ko) | 스토리지 장치 및 컴퓨팅 시스템 | |
US11016905B1 (en) | Storage class memory access | |
US20170060434A1 (en) | Transaction-based hybrid memory module | |
US10402338B2 (en) | Method and apparatus for erase block granularity eviction in host based caching | |
US11537536B2 (en) | Memory controller configured to transmit interrupt signal if volatile memory has no data corresponding to address requested from source | |
US20180089088A1 (en) | Apparatus and method for persisting blocks of data and metadata in a non-volatile memory (nvm) cache | |
US10884916B2 (en) | Non-volatile file update media | |
US20190073302A1 (en) | Ssd boot based on prioritized endurance groups | |
CN111581125A (zh) | 高效跟踪脏高速缓存行在二级主存储器的高速缓存中的位置的方法和装置 | |
US10684953B2 (en) | Data storage apparatus capable of varying map cache buffer size | |
KR20220062399A (ko) | 하이브리드 dimm에서 비순차적 처리를 위한 데이터 의존도 관리 | |
US10452312B2 (en) | Apparatus, system, and method to determine a demarcation voltage to use to read a non-volatile memory | |
US20170153994A1 (en) | Mass storage region with ram-disk access and dma access | |
US20140281157A1 (en) | Memory system, memory controller and method | |
EP4202693A1 (en) | Cache evictions management in a two level memory controller mode | |
US20240354256A1 (en) | Cmb caching using hybrid sram/dram data path | |
US20240061786A1 (en) | Systems, methods, and apparatus for accessing data in versions of memory pages | |
WO2024226112A1 (en) | Cmb caching using hybrid sram/dram data path |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200908 Termination date: 20210927 |