CN111338561B - 存储器控制器与存储器页面管理方法 - Google Patents
存储器控制器与存储器页面管理方法 Download PDFInfo
- Publication number
- CN111338561B CN111338561B CN201910478949.5A CN201910478949A CN111338561B CN 111338561 B CN111338561 B CN 111338561B CN 201910478949 A CN201910478949 A CN 201910478949A CN 111338561 B CN111338561 B CN 111338561B
- Authority
- CN
- China
- Prior art keywords
- page
- target
- memory
- dram
- nvm
- 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.)
- Active
Links
Images
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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
- G06F12/124—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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]
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory 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
- 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
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- 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
- 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/1024—Latency reduction
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
-
- 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/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/461—Sector or disk block
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
-
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种存储器页面管理方法。所述方法包括接收对应状态改变页面的状态改变通知,并且根据所述状态改变通知来将所述状态改变页面自当前所属的清单分组至适应性页面清单中的维持清单或适应性LRU清单;从中央处理单元接收存取指令以对对应目标页面的目标页面数据执行存取操作;根据对应所述目标页面的目标NVM页面地址来判断对应的快取命中状态为命中或未命中,并且根据快取命中状态将所述目标页面分组至所述适应性LRU清单;以及根据所述目标NVM页面地址查找所述适应性页面清单以获得目标DRAM页面地址来完成对应所述目标页面数据的所述存取指令。
Description
技术领域
本发明是有关于一种存储器控制器,且特别是有关于非易失性双列直插式存储器模块(Non-Volatile Dual In-line Memory Module,NVDIMM)装置的存储器控制器与存储器页面管理方法。
背景技术
随着科技的演进,服务器、个人计算机、手机等电子装置对于主存储器(如,动态随机存取存储器,DRAM)的需求也日益增大。
然而,由于DRAM在断电时,会遗失所储存的数据。因此,电子装置需要常常将储存于DRAM中的数据备份至不会因为断电而丢失数据的非易失性存储器(NVM)装置(如,硬盘或固态硬盘),进而造成了大量的存取操作,降低了电子装置的工作效率。另一方面,为了要有效率地执行应用程序,电子装置必须从非易失性存储器装置加载相关的数据至主存储器,以通过主存储器的高速运算效能来加快应用程序的运作速度。如此一来,亦会在电子装置工作时,产生大量的存取操作。
基于上述问题,目前一般作法是在双列直插式存储器模块(DIMM)内结合DRAM与NVM,以尝试发展出具有DRAM的快速存取特性与NVM的断电数据不遗失特性的NVDIMM装置。
但是,目前NVDIMM装置在存储器页面快取的管理效能低落而且成本高昂,无法充分发挥DRAM的快速存取特性,对以NVDIMM作为主存储器形成了阻碍。
因此,要如何增进NVDIMM装置的存储器页面管理的效率,同时降低NVDIMM装置的运作的管理成本,为本领域人员致力发展的目标。
发明内容
本发明提供一种存储器控制器与存储器页面管理方法,可用较小的管理成本达到增进NVDIMM装置的运作效率。
本发明的一实施例一种存储器控制器,用于控制主机系统的非易失性双列直插式存储器模块(NVDIMM)装置,其中所述NVDIMM装置包括所述存储器控制器、动态随机存取存储器(DRAM)与非易失性存储器模块(NVM),其中所述DRAM具有多个DRAM页面,并且所述NVM具有多个NVM页面。所述存储器控制器包括NVDIMM接口、静态随机存取存储器(SRAM)与处理器。所述NVDIMM接口用以耦接至所述主机系统的中央处理单元(CPU),其中所述中央处理单元用以存取所述NVM的所述多个NVM页面,并且执行所述主机系统的操作系统(OperationSystem)。所述静态随机存取存储器(SRAM)用以存储数据。所述处理器耦接至所述动态随机存取存储器与所述非易失性存储器模块、所述NVDIMM接口与所述静态随机存取存储器。所述处理器用以存取且执行储存于所述非易失性存储器模块中的存储器页面管理模块,以实现存储器页面管理方法。所述存储器页面管理模块用以从所述中央处理单元接收对应状态改变页面的状态改变通知,并且根据所述状态改变通知来将所述状态改变页面自当前所属的清单分组至适应性页面清单(Adaptive Adjusting List)中的维持清单(Keep List)或适应性最近最少使用(LRU)清单(Adaptive LRU List),其中所述状态改变通知用以表示所述操作系统已改变所述状态改变页面的状态为活跃状态或不活跃状态。此外,所述存储器页面管理模块更用以从所述中央处理单元接收存取指令,其中所述存取指令指示对对应目标页面的目标页面数据执行存取操作。所述存储器页面管理模块更用以根据所述存取指令辨识所述目标页面与对应所述目标页面的目标NVM页面地址。反应于判定对应所述目标页面的所述快取命中状态为命中,所述存储器页面管理模块更用以辨识所述目标NVM页面地址所映射的目标DRAM页面地址,其中反应于所述目标页面已被分组至所述适应性LRU清单的惰性清单(Lazy List),所述存储器页面管理模块更用以将所述目标页面分组至所述适应性LRU清单的先进先出(FIFO)清单;以及反应于判定对应所述目标页面的所述快取命中状态为未命中,所述存储器页面管理模块更用以储存对应所述目标NVM页面的所述目标页面数据至所述DRAM的目标DRAM页面中,并且将所述目标DRAM页面的目标DRAM页面地址映射至所述目标NVM页面地址,并且将所述目标页面分组至所述适应性LRU清单。所述存储器页面管理模块更用以根据所述存取指令,使用所述目标DRAM页面地址来完成对应所述目标页面数据的所述存取操作。
本发明的一实施例另提供一种存储器页面管理方法,适用于用以控制主机系统的非易失性双列直插式存储器模块(NVDIMM)装置的存储器控制器,其中所述NVDIMM装置包括所述存储器控制器、动态随机存取存储器(DRAM)与非易失性存储器模块(NVM),其中所述DRAM具有多个DRAM页面,并且所述NVM具有多个NVM页面。所述存储器页面管理方法包括:配置所述存储器控制器的处理器以存取和执行存储在NVM中的存储器页面管理模块,所述存储器页面管理模块实行包括后叙的多个步骤。从中央处理单元接收对应状态改变页面的状态改变通知,并且根据所述状态改变通知来将所述状态改变页面自当前所属的清单分组至适应性页面清单中的维持清单或适应性最近最少使用(LRU)清单,其中所述中央处理单元执行所述主机系统的操作系统,其中所述状态改变通知用以表示所述操作系统已改变所述状态改变页面的状态为活跃状态或不活跃状态;从所述中央处理单元接收存取指令,其中所述存取指令指示对对应目标页面的目标页面数据执行存取操作;根据所述存取指令辨识所述目标页面与对应所述目标页面的目标NVM页面地址;根据对应所述目标NVM页面地址来判断对应所述目标页面的快取命中状态为命中或未命中,其中反应于判定对应所述目标页面的所述快取命中状态为命中,辨识所述目标NVM页面地址所映射的目标DRAM页面地址,其中反应于所述目标页面已被分组至所述适应性LRU清单的惰性清单,更将所述目标页面分组至所述适应性LRU清单的先进先出(FIFO)清单;以及反应于判定对应所述目标页面的所述快取命中状态为未命中,储存对应所述目标页面的所述目标页面数据至所述DRAM的目标DRAM页面中,将所述目标DRAM页面的目标DRAM页面地址映射至所述目标NVM页面地址,并且将所述目标页面分组至所述适应性LRU清单;以及根据所述存取指令,使用所述目标DRAM页面地址来完成对应所述目标页面数据的所述存取操作。
基于上述,本发明所提供的存储器控制器与存储器页面管理方法,可从主机系统所执行的操作系统来接收对应状态改变页面的状态改变通知,并且根据所述状态改变通知来较精确地判断所快取的存储器页面的所处的数据存取频率分组,以藉此将所快取的存储器页面自目前的页面清单移动至可保持快取状态的另一组页面清单(如,维持清单),并且增强所快取的存储器页面的快取准确度。此外,更可根据判断对应存取指令的目标页面的快取命中状态为命中或未命中来进一步分组所快取的存储器页面,以让更不常使用的存储器页面有较高的机率从DRAM的快取中移除,并且让较常被使用的存储器页面具有较低的机率来避免从DRAM的快取中被移除。如此一来,本发明所提供的存储器控制器与存储器页面管理方法,可使NVDIMM装置在使用较少的管理成本就具有较高的存储器管理快取效率,以充分使用到DRAM的快速存取的效能,进而使NVDIMM装置的数据访问速度可以接近DRAM,改善传统NVDIMM装置的效能缺陷。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是依据本发明的一实施例所绘示的以NVDIMM为主存储器的电子装置的方块示意图。
图2A是依据本发明的一实施例所绘示的NVDIMM装置的方块示意图。
图2B是依据本发明的一实施例所绘示的存储器页面管理模块的方块示意图。
图3是依据本发明的一实施例所绘示的适应性页面清单的示意图。
图4A是依据本发明的一实施例所绘示的存储器页面管理方法的流程图。
图4B是依据本发明的一实施例所绘示的图4A的步骤S44、S45的流程图。
图4C是依据本发明的一实施例所绘示的图4A的步骤S48的流程图。
图4D是依据本发明的一实施例所绘示的图4B的步骤S488的流程图。
图5是依据本发明的一实施例所绘示的对应状态改变通知的清单调整的示意图。
图6是依据本发明的一实施例所绘示的对应快取命中于惰性清单的清单调整的示意图。
图7是依据本发明的一实施例所绘示的对应快取未命中且DRAM有空白空间的清单调整的示意图。
图8是依据本发明的一实施例所绘示的快取未命中且DRAM没有空白空间的清单调整的示意图。
图9是依据本发明的一实施例所绘示的串行页面删除操作的示意图。
【符号说明】
1:电子装置
11:中央处理单元
12:NVDIMM装置
13:输出单元
14:输入单元
15:通信单元
16:电源供应单元
110:操作系统通知模块
111:存储器管理模块
120:存储器控制器
121:NVDIMM界面
122:处理器
123:静态随机存取存储器
310:适应性页面清单
320:转译后援缓冲区
130:动态随机存取存储器
140:非易失性存储器
141:系统数据
142:用户数据
200:存储器页面管理模块
210:操作系统沟通模块
220:页面清单管理模块
230:快取管理模块
311:维持清单
312:适应性LRU清单
3121:FIFO清单
3122:惰性清单
B1、B2、B3、B51、B52、B53、B61、B61’、B71、B71’、B72、B72’、B82、B81、B81’:边界
S41、S42、S43、S44、S45、S46、S47、S48:存储器页面管理方法的流程步骤
S441、S442、S443、S444、S445、S446、S447、S45-1、S45-2、S45-3:步骤S44、步骤S45的流程步骤
S481、S482、S483、S484、S485、S486、S487、S488、S489:步骤S48的流程步骤
S4881、S4882、S4883:步骤S48的流程步骤
A61、A62、A71、A72、A81、A82:箭头
e601、e701、e801、e802:条目
601、701、801、802:存储器页面
具体实施方式
图1是依据本发明的一实施例所绘示的以NVDIMM为主存储器的电子装置的方块示意图。
请参照图1,在本实施例中,电子装置1包括中央处理单元11、非易失性双列直插式存储器模块(Non-Volatile Dual In-line Memory Module,NVDIMM)装置12(以下亦称,NVDIMM装置12)、输出单元13、输入单元14、通信单元15与电源供应单元16。所述中央处理单元(Central Process Unit,CPU)11耦接至NVDIMM装置12,并且所述中央处理单元11经由总线连接至输出单元13、输入单元14、通信单元15与电源供应单元16。所述电子装置1例如是服务器、个人计算机、笔记本电脑、平板计算机、手机等,本发明并不限于上述的电子装置1的类型。
在本实施例中,所述中央处理单元11用以执行所述电子装置1的操作系统,以管理电子装置1的各个组件的整体互动与运作。所述中央处理单元11经由总线下达指令以控制输出单元13、输入单元14、通信单元15与电源供应单元16。此外,所述中央处理单元11更利用所述NVDIMM装置12来存取数据。应注意的是,在本实施例中,所述NVDIMM装置12为所述电子装置1的主存储器。在一实施例中,所述NVDIMM装置12同时为所述电子装置1的主存储器与主要数据储存装置。
在其他实施例中,所述中央处理单元11亦可被置换为其他形式的处理器,如,微处理器(micro-processor)、或是其他可编程的处理单元(Programmable processor)、数字信号处理器(Digital Signal Processor,DSP)、可编程控制器、特殊应用集成电路(Application Specific Integrated Circuits,ASIC)、可编程逻辑设备(ProgrammableLogic Device,PLD)或其他类似装置。
所述输出单元13用以接收所述中央处理单元11的指示来输出影像或/及音频。所述输出单元13包括音频输出电路、显示电路、显示适配器等电路组件,其耦接至对应的信号输出装置(如,音频输出电路耦接至喇叭;显示适配器耦接至屏幕)。
所述输入单元14用以接收用户的输入操作,以产生对应的数据与信号给所述中央处理单元11,以让用户可通过所述输入操作来控制电子装置1。所述输入单元14包括用以耦接至键盘、鼠标、触摸板等输入设备的电路组件或接口。
所述通信单元15用以通过无线通信或有线通信的方式来传输或是接收数据。例如,通信单元15可为支持无线兼容认证(Wireless Fidelity,WiFi)系统、蓝牙(bluetooth)等无线通信协议的其中之一或其组合的通信电路单元。又例如,通信单元15可为网络适配器(network interface card,NIC),其可支持有线通信。
所述电源供应单元16例如是电源供应器,用以接收外部电源(如,市电)来提供电子装置1运作时所需要的电力。所述电源供应单元16亦可包含电池,以在不接收外部电源的情况下,提供电力给电子装置1。
如上述,所述NVDIMM装置12可作为电子装置1的主存储器,用以暂存数据。此外,所述NVDIMM装置12可作为电子装置1的主要储存装置,用以储存需要长时间存放的数据,如,管理电子装置的软件、固件等系统数据,及用户数据。以下利用图2A来说明NVDIMM装置12的构造的细节。
图2A是依照本发明的一实施例所绘示的量测数据管理装置的方块示意图。请参照图2A,在本实施例中,所述NVDIMM装置12包括NVDIMM控制器120、动态随机存取存储器(Dynamic Random Access Memory,DRAM)130以及非易失性存储器(Non-Volatile Memory,NVM)140。所述DRAM 130具有用以储存数据的多个物理存储器页面(以下亦称,DRAM页面)。
所述NVM 140例如是闪存(Flash memory)、电可擦可规化只读存储器(Electrically erasable programmable read only memory,EEPROM)、可擦可规化只读存储器(Erasable programmable read only memory,EPROM)、磁阻式随机存取存储器(Magnetoresistive Random Access Memory,MRAM)或可变电阻式存储器(Resistiverandom-access memory,RRAM)。在本实施例中,所述NVM 140用以储存系统数据141与用户数据142。所述系统数据141例如是管理电子装置1或NVDIMM装置12的软件或固件(包括存储器页面管理模块200)。所述用户数据142例如是电子装置1的用户储存于所述NVDIMM装置12的数据(如,音频数据、影像数据、文字数据等)或所述用户安装于电子装置1上的应用程序(如,操作系统、应用程序等)。所述NVM 140具有用以储存数据的多个物理存储器页面(以下亦称,NVM页面)。
图2B是依据本发明的一实施例所绘示的存储器页面管理模块的方块示意图。请参照图2B,在一实施例中,存储器页面管理模块200包括操作系统沟通模块210、页面清单管理模块220与快取管理模块230。在本实施例中,处理器122从NVM 140中加载存储器页面管理模块200并且执行所述存储器页面管理模块200以运行存储器页面管理程序,进而实行本实施例所提供的存储器页面管理方法。以下会通过多个图式来说明存储器页面管理模块200各部件的运作细节。
所述NVDIMM控制器120用以管理所述NVDIMM装置12。所述NVDIMM控制器120包括NVDIMM接口121、处理器122与静态随机存取存储器(Static Random Access Memory,DRAM,SRAM)123。所述NVDIMM控制器120的各个部件的运作可视为所述NVDIMM控制器120的整体运作。
所述处理器122为具备运算能力的硬件(例如芯片组、处理器等),所述处理器122为所述NVDIMM控制器120的核心组件。在本实施例中,处理器122,例如是一核心或多核心的中央处理单元(Central Processing Unit,CPU)、微处理器(micro-processor)、或是其他可编程的处理单元(Programmable processor)、数字信号处理器(Digital SignalProcessor,DSP)、可编程控制器、特殊应用集成电路(Application Specific IntegratedCircuits,ASIC)、可编程逻辑设备(Programmable Logic Device,PLD)或其他类似装置。
所述NVDIMM接口121用以耦接至中央处理单元11,即,所述处理器122可通过所述NVDIMM接口接收来自所述中央处理单元11的数据或指令,或传送指令或数据至所述中央处理单元11。
在本实施例中,所述SRAM 123用以接收处理器122的指示来暂存数据。所述SRAM123可用以储存适应性页面清单(Adaptive Page List)310与转译后援缓冲区(Translation Lookaside Buffer,TLB)320。所述适应性页面清单310用以记录DRAM页面地址与NVM页面地址的映射关系。
图3是依据本发明的一实施例所绘示的适应性页面清单的示意图。请参照图3,所述适应性页面清单310包括维持清单311、适应性最少最近使用清单(Adaptive LeastRecently Used List,Adaptive LRUList)312(以下亦称,适应性LRU清单)。所述适应性LRU清单312包括先进先出(First In First Out,FIFO)清单3121(以下亦称,FIFO清单)与惰性清单3122。边界B3用以指示适应性LRU清单312的前端;边界B2用以指示适应性LRU清单312的后端;以及边界B1用以指示适应性LRU清单312中FIFO清单3121与惰性清单3122之间的交界。也就是说,所述FIFO清单3121被配置于所述惰性清单3122的前方。所述处理器122(或存储器页面管理模块200)可使用对应的指针来标记/设定所述边界B1~B3于SRAM 123中的存储器地址,以设定FIFO清单3121与惰性清单3122的长度与空间。即,所述处理器122可经由改变所述边界B1~B3的位置来改变所述FIFO清单3121与惰性清单3122的大小。在本实施例中,所述维持清单311的大小与存储器地址亦可被预先设定。
在本实施例中,所述适应性LRU清单312用以记录对应多个NVM页面的多个条目(Entry)。所述多个条目的每一个条目可记录对应一NVM页面的NVM页面地址及对应一DRAM页面的DRAM页面地址,其中所述DRAM页面被设定映射至所述NVM页面,以暂存对应所述NVM页面的数据,即,所述DRAM页面可暂存欲写入至所映射的NVM页面的数据或可暂存从所映射的NVM页面所读取的数据。也就是说,每一个条目会记录NVM页面地址与映射至所述NVM页面地址的DRAM页面地址。
此外,在一实施例中,所述多个条目的每一个条目更记录所对应的NVM页面的属性信息(attribute information)及所对应的DRAM页面的属性信息。
在本实施例中,针对被映射至一个DRAM页面的NVM页面,所述处理器122(或存储器页面管理模块200)可根据对应所述NVM页面的数据存取频率,将所述一个NVM页面分组至维持清单311、FIFO清单3121或惰性清单3122的其中之一。
如图3所示,数据存取频率高的存储器页面所储存的数据可被视为热数据,并且用以储存所述热数据的所述存储器页面被所述处理器122(或存储器页面管理模块200)分组至维持清单311;数据存取频率低的存储器页面所储存的数据可被视为冷数据,并且用以储存所述冷数据的所述存储器页面被分组至惰性清单3122;数据存取频率适中的存储器页面所储存的数据可被视为暖数据,并且用以储存所述暖数据的所述存储器页面被分组至FIFO清单3121。
值得一提的是,在本实施例中,所述处理器122(或存储器页面管理模块200)仅在分组一个NVM页面至FIFO清单3121时,所述处理器122(或存储器页面管理模块200)可判断将所述一个NVM页面排列至FIFO清单3121的前端(即,配置所述NVM页面为FIFO清单3121中的第一个FIFO页面)或FIFO清单3121后端(配置所述NVM页面为FIFO清单3121中的最后一个FIFO页面);以及仅在分组一个NVM页面至惰性清单3122时,所述处理器122(或存储器页面管理模块200)可判断将所述一个NVM页面排列至惰性清单3122的前端(即,配置所述NVM页面为惰性清单3122中的第一个惰性页面)或惰性清单3122的后端(配置所述NVM页面为惰性清单3122中的最后一个惰性页面)。除此之外,于其他时间点中,所述处理器122(或存储器页面管理模块200)并不调整被分组至所述维持清单311中的多个NVM页面(亦可称,多个维持页面)的排列顺序,不调整被分组至所述FIFO清单3121中的多个NVM页面(亦可称,多个FIFO页面)的排列顺序,并且不调整被分组至所述惰性清单3122中的多个NVM页面(亦可称,多个惰性页面)的排列顺序。如此一来,本发明所提供的存储器页面管理程序/存储器页面管理方法可限制(减少)因为调整被分组于所述适应性页面清单的多个存储器页面的排列顺序所导致的大量时间与运算资源的耗费。
以下会利用多个图式与实施例来说明存储器页面管理模块200的运作与功能,及对应的存储器页面管理方法。
图4A是依据本发明的一实施例所绘示的存储器页面管理方法的流程图。请参照图4A,对应接收状态改变通知(步骤S40)与接收存取指令(步骤S42),存储器页面管理模块200会对应地执行不同的后续步骤。首先说明对应接收状态改变通知(步骤S40)及其后续步骤。在步骤S40中,存储器页面管理模块200从主机系统的中央处理单元接收对应一状态改变页面的状态改变通知。接着,在步骤S41中,存储器页面管理模块200根据所述状态改变通知来将所述状态改变页面从当前所属的清单分组至适应性页面清单中的维持清单或适应性LRU清单,其中所述状态改变通知用以表示所述中央处理单元已改变所述状态改变页面的状态为一活跃状态或一不活跃状态。
具体来说,本实施例所提供的存储器页面管理方法的一个主要精神为:监测执行于电子装置1的操作系统所发生的存储器页面状态改变事件,以操作系统的所述存储器页面状态改变事件来发送对应的通知(即,状态改变通知)至所述存储器页面管理模块200,进而通过所述通知来分组被快取至DRAM中的存储器页面。如此一来,可较有效率地利用对应存储器页面状态改变事件的通知,来准确地掌握对应存储器页面状态改变事件的存储器页面的重要性,进而应用在适应性页面清单中的存储器页面的分组(即,根据所述状态改变通知来将所述状态改变页面分组至适应性页面清单中的维持清单或适应性LRU清单)。
更详细来说,在接收对应所述状态改变页面的所述状态改变通知的运作之前,所述存储器页面管理模块200(或操作系统沟通模块210)对所述操作系统执行一对应所述NVDIMM装置12的存储器初始化操作,以安装一操作系统通知模块110至所述操作系统,其中所述中央处理单元11执行所述操作系统通知模块110,以使所述操作系统通知模块110可监测操作系统所发生的存储器页面状态改变事件,而发送对应的通知(亦称,状态改变通知)至操作系统沟通模块210。存储器页面状态改变事件可区分为活跃事件与不活跃事件。当所述中央处理单元11(或操作系统)设定一个存储器页面(亦可称为,状态改变页面)的状态至活跃状态(Active state),对应所述一个存储器页面的活跃事件发生;当所述中央处理单元11(或操作系统)设定一个存储器页面的状态至不活跃状态(Inactive state)时,对应所述一个存储器页面的不活跃事件发生。
所述操作系统通知模块110用以发送所述状态改变通知至所述存储器页面管理模块。所述状态改变通知包括一升级通知与一降级通知。当所述中央处理单元11(或操作系统)改变所述状态改变页面的状态至所述活跃状态(即,对应所述状态改变页面的活跃事件发生),所述操作系统通知模块110发送所述升级通知至所述存储器页面管理模块200(或操作系统沟通模块210),其中当所述中央处理单元11(或操作系统)改变所述状态改变页面的状态至所述不活跃状态(即,对应所述状态改变页面的不活跃事件发生),所述操作系统通知模块110发送所述降级通知至所述存储器页面管理模块200(或操作系统沟通模块210)。
图5是依据本发明的一实施例所绘示的对应状态改变通知的清单调整的示意图。请参照图5,在本实施例中,当所述存储器页面管理模块200(或操作系统沟通模块210)接收到对应所述状态改变页面的降级通知时,所述存储器页面管理模块200(或页面清单管理模块220)将被分组至维持清单311中的所述状态改变页面分组至FIFO清单3121的前端。也就是说,当接收到被分组于维持清单311中的所述状态改变页面的降级通知时,所述状态改变页面不再被分组于维持清单311中,并且所述状态改变页面会被分组且排列至FIFO清单3121的最前方。若所接收的降级通知所对应的状态改变页面没有被分组于维持清单311中,所述存储器页面管理模块200(或页面清单管理模块220)并不会改变所述状态改变页面当前所属的清单。若所接收的降级通知所对应的状态改变页面没有被分组于维持清单311中且未被分组至适应性LRU清单312中,所述存储器页面管理模块200(或页面清单管理模块220)不会将所述状态改变页面分组至适应性LRU清单312中。
另一方面,当所述存储器页面管理模块200(或操作系统沟通模块210)接收到对应所述状态改变页面的升级通知时,所述存储器页面管理模块200(或页面清单管理模块220)将未被分组至维持清单311中的所述状态改变页面分组至维持清单311中(不设定所述状态改变页面于维持清单311中的排列顺序)。也就是说,当接收所述状态改变页面的升级通知时,若所述状态改变页面并不被分组于维持清单311(如,已被分组至适应性LRU清单312中,或未被快取至DRAM 130)中,所述存储器页面管理模块200(或页面清单管理模块220)会将所述状态改变页面会分组至维持清单311中(尚未被快取至DRAM 130中的所述状态改变页面会被快取至DRAM 130)。所述步骤S40、S41是独立且平行地(相较于其他步骤,如,步骤S42~S48)被执行,即,每当所述存储器页面管理模块200(或操作系统沟通模块210)接收到所述状态改变通知时,所述存储器页面管理模块200(或页面清单管理模块220)会根据所对应的状态改变页面所属的清单来判定是否调整所述状态改变页面所属的清单。此外,被分组至维持清单311中的NVM页面仅能基于所接收的对应的降级通知来从维持清单311中移除。换言之,在没有接收到对应的降级通知的情况下,维持清单311中的NVM页面皆会一直维持被快取于DRAM 130中的状态。相对地,被分组至惰性清单3122中的NVM页面具有一定的机率被移除。换言之,惰性清单3122中的NVM页面有可能不继续被快取于DRAM 130中。
另一方面。在步骤S42中,存储器页面管理模块200从所述中央处理单元接收一存取指令,其中所述存取指令指示对对应一目标页面的目标页面数据执行一存取操作。具体来说,当所述中央处理单元11欲执行存取主存储器的存储器存取操作时,所述中央处理单元11会经由存储器管理模块111发送存取指令(包含对应的NVM页面地址)至处理器122,以对所述NVDIMM装置12进行存储器存取操作(即,对对应一NVM页面的目标页面数据执行存取操作)。所述多个DRAM页面并不被所述中央处理单元11所见/使用,即,所述中央处理单元11仅可发出对应一NVM页面的存取指令,以对所述NVM页面进行存储器页面存取操作。
例如,所述中央处理单元11欲写入数据(亦称,目标页面数据)至一NVM页面,所述中央处理单元11发送为对应存储器写入操作的存取指令,以指示所述处理器122(所述存储器页面管理模块200)将所述数据写入至所述NVM页面(亦称,目标页面)。又例如,所述中央处理单元11欲从一NVM页面读取数据(亦称,目标页面数据),所述中央处理单元11发送为对应存储器写入操作的存取指令,以指示所述处理器122从所述NVM页面(亦称,目标页面)读取所述数据。
接着,在步骤S43中,存储器页面管理模块200(或页面清单管理模块220)根据所述存取指令辨识所述目标页面与对应所述目标页面的一目标NVM页面地址。具体来说,所述存取指令可包括用以识别所述目标页面的信息(如,所述目标页面的目标NVM页面地址或页面标识符),并且存储器页面管理模块200(或页面清单管理模块220)可根据所述信息来辨识目标NVM页面地址。
在辨识到对应目标页面的目标NVM页面地址后,在步骤S44中,存储器页面管理模块200(或快取管理模块230)可根据对应所述目标NVM页面地址来判断对应所述目标页面的快取命中状态为命中或未命中。反应于判定对应所述目标页面的所述快取命中状态为命中,接续至步骤S45;反应于判定对应所述目标页面的所述快取命中状态为未命中,接续至步骤S48。以下利用图4B来详细说明步骤S44、S45的细节。
图4B是依据本发明的一实施例所绘示的图4A的步骤S44、S45的流程图。请参照图4B,步骤S44包括步骤S441~S447,并且步骤S45包括S45-1、S45-2、S45-3。
在本实施例中,在步骤S441中,存储器页面管理模块200(或快取管理模块230)判断对应所述存取指令的存储器存取计数值是否为预定计数值。具体来说,所述中央处理单元11所发送的存取指令会遵循一个规则:所发送的存取指令会对应至一个快取线(cacheline)。所述快取线具有M个存取指令,其中对应相同快取线的M个存取指令所对应的目标页面为相同的存储器页面。所述M为预定正整数。基于此规则,每当存储器页面管理模块200(或快取管理模块230)处理一个存取指令时,存储器页面管理模块200(或快取管理模块230)会依据循环(round-robin)方式来累计一个存储器存取计数值,以判定先后所接收的存取指令是否属于相同的快取线/目标页面。
例如,假设M为8。存储器页面管理模块200(或快取管理模块230)会依据循环(round-robin)方式来累计一个存储器存取计数值为「0、1、2、3、4、5、6或7」。即,当存储器页面管理模块200(或快取管理模块230)接收到一个快取线的第一个存取指令时,所对应的存储器存取计数值可被累计为「0」。接着,当存储器页面管理模块200(或快取管理模块230)接收到一个快取线的第二个存取指令时,所对应的存储器存取计数值可被累计为「1」。以此类推,当存储器页面管理模块200(或快取管理模块230)接收到一个快取线的最后一个存取指令时,所对应的存储器存取计数值可被累计为「7」,并且当存储器页面管理模块200(或快取管理模块230)接收到另一个快取线的第一个存取指令时,所对应的存储器存取计数值可再被累计为「0」。所述「0」亦被称为预定计数值。
也就是说,当对应一个存取指令的存储器存取计数值被累计不为「0」(如,1~7的其中之一)时,存储器页面管理模块200(或快取管理模块230)可知道所述存取指令为旧的快取线。即,此存取指令是对应至前一个存取指令所对应的目标页面,并且此存取指令是对应至前一个存取指令所对应的目标页面的目标NVM页面地址。换言之,存储器页面管理模块200(或快取管理模块230)可直接将前次所查找到的目标NVM页面地址所映射的DRAM页面地址(亦称,前次DRAM页面地址)作为对应本次存取指令的目标NVM页面地址所映射的DRAM地址(亦称,目标DRAM页面地址)。如此一来,存储器页面管理模块200(或快取管理模块230)可不需要重新查找对应本次存取指令的目标NVM页面地址,而节省了大量的时间。此外,由于前次存取指令与本次存取指令对应至相同的目标页面,在处理前次存取指令时,因此所述目标页面的数据已被快取至DRAM130中。即,存储器页面管理模块200(或快取管理模块230)可直接判定本次存取指令的所述目标页面的所述快取命中状态为命中(因对应的数据已被快取至DRAM 130中)。
另一方面,当对应一个存取指令的存储器存取计数值被累计为「0」时,存储器页面管理模块200(或快取管理模块230)可知道所述存取指令为一个新的快取线。也就是说,存储器页面管理模块200(或快取管理模块230)不可直接将前次所查找到的目标NVM页面地址作为对应本次存取指令的目标NVM页面地址。值得一提的是,上述存储器存取计数值与预定计数值是依据所述中央处理单元11所执行的存储器存取操作的快取线的规格来预先设定的。
如上述,若在步骤S441中,存储器页面管理模块200(或快取管理模块230)判定存储器存取计数值不为预定计数值,接续至步骤S442,存储器页面管理模块200(或快取管理模块230)判定对应所述目标页面的所述快取命中状态为命中。接着,在步骤S45-1中,存储器页面管理模块200(或快取管理模块230)直接将对应前次存取指令的前次DRAM页面地址辨识为所述目标NVM页面地址所映射的目标DRAM页面地址。每次所查找到的目标DRAM页面地址会独立地被标记或记录。
反之,若在步骤S441中,存储器页面管理模块200(或快取管理模块230)判定存储器存取计数值为预定计数值,接续至步骤S443,存储器页面管理模块200(或快取管理模块230)查找转译后援缓冲区,以判断所述转译后援缓冲区320中是否具有所述目标NVM页面地址。其中,反应于判定所述转译后援缓冲区320中具有所述目标NVM页面地址,接续至步骤S444,存储器页面管理模块200(或快取管理模块230)判定对应所述目标页面的所述快取命中状态为命中,并且执行步骤S45-2,即,存储器页面管理模块200(或快取管理模块230)经由所述转译后援缓冲区320中辨识所述目标NVM页面地址所映射的目标DRAM页面地址。
在本实施例中,存储器页面管理模块200(或快取管理模块230)会记录近期被存取过的多个目标NVM页面地址与所映射的多个目标DRAM页面地址的多个映射信息至所述转译后援缓冲区320。所述转译后援缓冲区320的使用空间会小于所述适应性页面清单310的使用空间。也就是说,若在步骤S441中,存储器页面管理模块200(或快取管理模块230)判定存储器存取计数值为预定计数值,存储器页面管理模块200(或快取管理模块230)不能直接获得对应的目标DRAM页面地址,并且存储器页面管理模块200(或快取管理模块230)可先查找转译后援缓冲区320,以判断对应本次存取指令的目标NVM页面地址是否近期内被存取过。
如此一来,由于存储器存取操作有存取近期内曾经被存取过的存储器页面的特性,存储器页面管理模块200(或快取管理模块230)可通过查找较小的所述转译后援缓冲区320,以缩短查找目标NVM页面地址的时间。也就是说,若存储器页面管理模块200(或快取管理模块230)可从所述转译后援缓冲区320中查找到目标NVM页面地址(步骤S443→是),存储器页面管理模块200(或快取管理模块230)可利用所述转译后援缓冲区320所记录的映射信息来快速地找到映射至目标NVM页面地址的(步骤S45-2)目标DRAM页面地址。
反之,若存储器页面管理模块200(或快取管理模块230)不可从所述转译后援缓冲区320中查找到目标NVM页面地址(步骤S443→否),接续至步骤S445,存储器页面管理模块200(或快取管理模块230)查找所述适应性页面清单310,以判断所述适应性页面清单中是否具有所述目标NVM页面地址。其中,反应于判定所述适应性页面清单中具有所述目标NVM页面地址(S445→是),存储器页面管理模块200(或快取管理模块230)判定对应所述目标页面的所述快取命中状态为命中,并且接续至步骤S45-3,即,存储器页面管理模块200(或快取管理模块230)经由所述适应性页面清单310辨识所述目标NVM页面地址所映射的目标DRAM页面地址。反应于判定所述适应性页面清单中不具有所述目标NVM页面地址(S445→否),接续至步骤S447,存储器页面管理模块200(或快取管理模块230)判定对应所述目标页面的所述快取命中状态为未命中。接着,流程会接续至步骤S48。
请再回到图4A,反应于判定对应所述目标页面的所述快取命中状态为命中,接续至步骤S45,存储器页面管理模块200(或快取管理模块230)辨识所述目标NVM页面地址所映射的目标DRAM页面地址。所被辨识的目标DRAM页面地址可被用于处理所述存取指令。步骤S45的实施方式可依据步骤S44的判断流程而改变,细节已经详述于上,不赘述于此。
接着,在步骤S46中,存储器页面管理模块200(或页面清单管理模块220)反应于所述目标页面已被分组至所述适应性LRU清单312的惰性清单3122,将所述目标页面分组至所述适应性LRU清单312的FIFO清单3121。
具体来说,在判定对应所述目标页面的所述快取命中状态为命中后,存储器页面管理模块200(或页面清单管理模块220)会进一步检查所述目标页面当前所属的清单是否为惰性清单。若是,存储器页面管理模块200(或页面清单管理模块220)会将所述目标页面分组至(调整命中的目标页面的分组)FIFO清单3121。如此一来,可通过调整被命中的目标页面的分组从惰性清单3122至FIFO清单3121,而降低了所述目标页面从DRAM 130中被移除的机率。在本实施例中,被分组至惰性清单3122中的存储器页面有可能会从DRAM 130中删除(不被DRAM 130所快取)。
图6是依据本发明的一实施例所绘示的对应快取命中于惰性清单的清单调整的示意图。请参照图6,举例来说,假设被判定为命中的目标页面为NVM页面601。如,图6右方所示,NVM页面601所储存的数据已经被快取至DRAM 130中。如图6的图例<6.1>所示,所述NVM页面601被分组至惰性清单3122,即,对应所述NVM页面601的条目e601已被记录至惰性清单3122中。在被判定为命中的目标页面为NVM页面601的情况下,存储器页面管理模块200(或页面清单管理模块220)会将条目e601从惰性清单3122移动至FIFO清单3121的前端(如,箭头A61所示),并且存储器页面管理模块200(或页面清单管理模块220)会将改变FIFO清单3121与惰性清单3122之间的边界B61调整为边界B61’(如,箭头A62所示)。完成调整后的FIFO清单3121与惰性清单3122可参见图6的图例<6.2>。
请再回到4A,接着,在步骤S47中,存储器页面管理模块200根据所述存取指令,使用所述目标DRAM页面地址来完成对应所述目标页面数据的所述存取操作。
具体来说,存储器页面管理模块200会根据存取指令的种类来进行不同的存取操作。例如,若所述存取指令对应存储器写入操作(即,所述存取指令指示所述处理器122将所述存取指令的所述目标页面数据写入至所述目标页面),存储器页面管理模块200会将所述存取指令中的所述目标页面数据写入至对应所述目标DRAM页面地址的目标DRAM页面,以利用所述存取指令的所述目标页面数据来更新已经被快取的所述目标DRAM页面所储存的数据。接着,存储器页面管理模块200可响应所述中央处理单元11所述存取操作已经完成。
另一方面,若所述存取指令对应存储器读取操作(即,所述存取指令指示所述处理器122从所述目标页面读取所述目标页面数据),存储器页面管理模块200会从对应所述目标DRAM页面地址的目标DRAM页面中读取所述目标页面数据,并且传送所读取的目标页面数据至所述中央处理单元11,并且响应所述中央处理单元11所述存取操作已经完成。
再回到步骤S44,如上述,若判定对应所述目标页面的快取命中状态为未命中,接续至步骤S48。在步骤S48中,储存对应所述目标页面的所述目标页面数据至DRAM的目标DRAM页面中,将所述目标DRAM页面的目标DRAM页面地址映射至所述目标NVM页面地址,并且将所述目标页面分组至所述适应性LRU清单。以下利用图4C来详细说明。
图4C是依据本发明的一实施例所绘示的图4A的步骤S48的流程图。请参照图4C,在步骤S481中,存储器页面管理模块200(或快取管理模块230)判断所述DRAM 130是否有空白空间(Empty space)。具体来说,若对应所述目标页面的快取命中状态为未命中,存储器页面管理模块200(或快取管理模块230)会开始执行对应所述目标页面的快取操作,以将对应所述存取指令的所述目标页面数据快取至DRAM 130中。
基此,存储器页面管理模块200(或快取管理模块230)会先执行步骤S481来确认DRAM 130是否有空白空间来储存所述目标页面数据。
反应于DRAM 130没有空白空间(步骤S481→否),接续至步骤S482,存储器页面管理模块200(或快取管理模块230)辨识被分组至惰性清单中的多个惰性页面中的末端惰性页面,并且辨识所述末端惰性页面的末端NVM页面地址所映射的末端DRAM页面地址。接着,存储器页面管理模块200(或快取管理模块230)从所述惰性清单中移除所述末端惰性页面,并且从所述DRAM的对应所述末端DRAM页面地址的DRAM页面中删除所储存的数据。以下利用图8来说明。
图8是依据本发明的一实施例所绘示的快取未命中且DRAM没有空白空间的清单调整的示意图。请参照图8,假设惰性清单8122中的最后一个条目为条目e802,并且条目e802对应NVM页面802。即,所述NVM页面802当前被分组至惰性清单的末端,并且所述NVM页面802为被分组至惰性清单3122中的多个NVM页面(亦称,惰性页面)中的末端惰性页面。此外,假设目标页面为NVM页面801,并且对应NVM页面801的快取命中状态为未命中。
在此例子中,存储器页面管理模块200(或快取管理模块230)会从惰性清单3122中移除条目e802,并且将快取至DRAM 130中的对应NVM页面802的数据删除(若被快取至DRAM130中的数据相同于原本于NVM 140中的数据),或是将快取至DRAM 130中的对应NVM页面802的数据搬移回NVM 140中(若被快取至DRAM 130中的数据不相同于原本于NVM 140中的数据)。如此一来,DRAM 130可被清出一个空白空间以储存NVM页面801的数据,并且适应性LRU清单312也被清出空白空间以记录一个条目。
在清出DRAM 130与适应性LRU清单312的空白空间后,接续至步骤S484,存储器页面管理模块200(或快取管理模块230)储存对应所述目标页面的所述目标页面数据至所述DRAM中的所述目标DRAM页面,并且辨识所述目标DRAM页面的所述目标DRAM页面地址。即,存储器页面管理模块200(或快取管理模块230)将对应空白空间的DRAM页面作为目标DRAM页面,并且写入目标页面数据至目标DRAM页面。
具体来说,若所述存取指令对应存储器写入操作(即,所述存取指令指示所述处理器122将所述存取指令的所述目标页面数据写入至所述目标页面),存储器页面管理模块200(或快取管理模块230)会将所述存取指令中的所述目标页面数据写入至DRAM 130中的目标DRAM页面801,并且辨识DRAM页面801的DRAM页面地址为目标DRAM页面地址。
另一方面,若所述存取指令对应存储器读取操作(即,所述存取指令指示所述处理器122从所述目标页面读取所述目标页面数据),如图8右方所示,存储器页面管理模块200(或快取管理模块230)会先从NVM 140中复制NVM页面801的数据至DRAM 130中的DRAM页面801,辨识DRAM页面801的DRAM页面地址为目标DRAM页面地址,并且从对应所述目标DRAM页面地址的目标DRAM页面801中读取所复制的目标页面数据,并且传送所读取的目标页面数据至所述中央处理单元11。
在完成步骤S484后,在步骤S485中,存储器页面管理模块200(或页面清单管理模块220)判断所述FIFO清单的大小与所述惰性清单的大小的比值是否大于预定比值。
反应于所述FIFO清单的大小与所述惰性清单的大小的比值大于预定比值(步骤S485→是),接续至步骤S486,存储器页面管理模块200(或页面清单管理模块220)将所述目标DRAM页面地址映射至所述目标NVM页面地址,并且将所述目标页面分组至所述适应性LRU清单的所述惰性清单的前端。
此外,反应于所述FIFO清单的大小与所述惰性清单的大小的比值不大于预定比值(步骤S485→否),接续至步骤S487,存储器页面管理模块200(或页面清单管理模块220)将所述目标DRAM页面地址映射至所述目标NVM页面地址,并且将所述目标页面分组至所述适应性LRU清单的所述FIFO清单的后端。
具体来说,存储器页面管理模块200(或页面清单管理模块220)会记录条目e801以设定目标DRAM页面地址映射至目标NVM页面地址,并且根据所述比值与所述预定比值来判断将条目e801记录至惰性清单3122中(如图8的图例<8.1>所示)或是FIFO清单3121中(如图8的图例<8.2>所示)。
更详细来说,若比值大于预定比值,表示FIFO清单3121的大小大于预期大小,则存储器页面管理模块200(或页面清单管理模块220)会将新增的条目e801记录至惰性清单3122的前端(如,箭头A81所示),以避免继续增加FIFO清单3121的大小。反之,若比值大于预定比值,表示FIFO清单3121的大小没有大于预期大小,则存储器页面管理模块200(或页面清单管理模块220)可调整边界B81至边界B81’,以将新增的条目e801继续记录至FIFO清单3121(如,箭头A82所示)。
然而,在另一实施例中,步骤S48不包括步骤S485、S486与S487,并且步骤S484会接续至步骤S489。在步骤S489中,存储器页面管理模块200(或页面清单管理模块220)将所述目标DRAM页面地址映射至所述目标NVM页面地址,并且将所述目标页面分组至所述适应性LRU清单的所述FIFO清单的前端。也就是说,在此另一实施例中,存储器页面管理模块200(或页面清单管理模块220)不会依据所述FIFO清单3121与惰性清单3122之间的大小比值来判断条目e801被记录的位置,并且存储器页面管理模块200(或页面清单管理模块220)会直接将条目e801记录至FIFO清单3121的前端。
请再回到图4C,在执行完步骤S481后,反应于DRAM 130有空白空间(步骤S481→是),流程接续至步骤S484,即,存储器页面管理模块200(或快取管理模块230)不需要执行步骤S482与步骤S483。并且接续至后续的步骤S485、S486、S487。
图7是依据本发明的一实施例所绘示的对应快取未命中且DRAM有空白空间的清单调整的示意图。请参照图7,假设目标页面为NVM页面701,对应的快取命中状态为未命中,并且DRAM有空白空间。执行步骤S484的期间,由于DRAM有空白空间可以直接用来储存目标页面数据,存储器页面管理模块200(或快取管理模块230)可将NVM 140中的NVM页面701的数据复制至DRAM 130中的目标DRAM页面,并且辨识对应所述目标DRAM页面的目标DRAM页面地址。
例如,若所述存取指令对应存储器写入操作(即,所述存取指令指示所述处理器122将所述存取指令的所述目标页面数据写入至所述目标页面),存储器页面管理模块200(或快取管理模块230)会将所述存取指令中的所述目标页面数据写入至DRAM 130中的目标DRAM页面701,并且辨识DRAM页面701的DRAM页面地址为目标DRAM页面地址。
另一方面,若所述存取指令对应存储器读取操作(即,所述存取指令指示所述处理器122从所述目标页面读取所述目标页面数据),如图7右方所示,存储器页面管理模块200(或快取管理模块230)会先从NVM 140中复制NVM页面701的数据至DRAM 130中的DRAM页面701,辨识DRAM页面701的DRAM页面地址为目标DRAM页面地址,并且从对应所述目标DRAM页面地址的目标DRAM页面701中读取所复制的目标页面数据,并且传送所读取的目标页面数据至所述中央处理单元11。存储器页面管理模块200(或页面清单管理模块220)产生条目e701以记录目标DRAM页面地址与目标NVM页面地址的映射关系。
接着,在步骤S485中,存储器页面管理模块200(或页面清单管理模块220)根据判断所述FIFO清单的大小与所述惰性清单的大小的比值是否大于预定比值,以判断将所述条目e701储存至惰性清单3122或FIFO清单3121中。细节如同上方对于图8的叙述,不赘述于此。其中,由于DRAM尚具有空白空间,适应性LRU清单312的惰性清单3122亦可继续被新增条目。存储器页面管理模块200(或页面清单管理模块220)可调整边界B72至边界B72’,以改变惰性清单3122的大小,进而使条目e701可被储存至惰性清单3122中。
在另一实施例中,为了进一步清出更多的DRAM 130的空白空间,在完成步骤S483后,存储器页面管理模块200更额外执行步骤S488。在所述步骤S488中,存储器页面管理模块200根据所述末端NVM页面地址执行串行页面删除操作。以下利用图4D与图9来说明。
图4D是依据本发明的一实施例所绘示的图4B的步骤S488的流程图。图9是依据本发明的一实施例所绘示的串行页面删除操作的示意图。请参照图4D,于串行页面删除操作中,在步骤S4881,存储器页面管理模块200(或页面清单管理模块220)根据所述末端NVM页面地址辨识分组至所述惰性清单中的一或多个串行删除页面,其中所述一或多个串行删除页面的串行删除NVM页面地址与所述末端NVM页面地址为连续的多个NVM页面地址。
举例来说,请参照图9的图例<9.1>,假设被分组至惰性清单3122的多个惰性页面的对应的NVM页面地址为「11、9、12、23、1、24、23、85、2、59、3、4」,其中对应NVM页面地址「4」的为最后一个NVM页面地址(亦称,末端NVM页面地址或末端惰性页面地址),所述末端NVM页面地址为被分组至惰性清单3122的末端惰性页面的存储器页面地址。在本实施例中,存储器页面管理模块200(或页面清单管理模块220)会利用预定检查长度(如,4)来从末端NVM页面地址往前检查预定检查长度的数目的NVM页面地址,以判断排列在末端NVM页面地址之前的惰性清单3122中否具有可与末端NVM页面地址组成连续的多个页面地址的一或多个NVM页面地址。在此图例<9.1>的例子中,基于预定检查长度「4」,于末端NVM页面地址「4」与末端NVM页面地址「4」之前三个NVM页面地址(共四个NVM页面地址),存储器页面管理模块200(或页面清单管理模块220)查找到末端NVM页面地址「4」与NVM页面地址「2」、「3」可组成连续的多个NVM页面地址。因此,存储器页面管理模块200(或页面清单管理模块220)会将NVM页面地址「2」、「3」设定为串行删除NVM页面地址,串行删除NVM页面地址「2」、「3」对应两个串行删除页面。
在图例<9.2>的例子中,基于预定检查长度「8」,于末端NVM页面地址「4」与末端NVM页面地址「4」之前七个NVM页面地址(共八个NVM页面地址),存储器页面管理模块200(或页面清单管理模块220)查找到末端NVM页面地址「4」与NVM页面地址「1」、「2」、「3」可组成连续的多个NVM页面地址,因此存储器页面管理模块200(或页面清单管理模块220)会将NVM页面地址「1」、「2」、「3」设定为串行删除NVM页面地址,串行删除NVM页面地址「1」、「2」、「3」对应三个串行删除页面。
接着,在步骤S4882中,存储器页面管理模块200(或页面清单管理模块220)辨识映射至一或多个串行删除NVM页面地址的一或多个串行删除DRAM页面地址,并且存储器页面管理模块200(或快取管理模块230)从所述DRAM的对应所述一或多个串行删除DRAM页面地址的一或多个串行删除DRAM页面中删除所储存的数据。举例来说,对应图例<9.1>,存储器页面管理模块200(或页面清单管理模块220)经由惰性清单3122中对应多个串行删除NVM页面地址「2」、「3」的多个条目来辨识映射至多个串行删除NVM页面地址「2」、「3」的多个串行删除DRAM页面地址。接着,存储器页面管理模块200(或快取管理模块230)从所述DRAM的对应所述一或多个串行删除DRAM页面地址的一或多个串行删除DRAM页面中删除所储存的数据可根据所辨识的多个串行删除DRAM页面地址来删除DRAM 130中对应串行删除NVM页面地址「2」、「3」的被快取的页面数据或搬移DRAM 130中对应串行删除NVM页面地址「2」、「3」的被快取的页面数据至NVM 140中。
接着,当快取的页面数据从DRAM中被移除后,在步骤S4883中,存储器页面管理模块200(或页面清单管理模块220)从所述惰性清单3122中移除所述一或多个串行删除页面。举例来说,对应图例<9.1>,存储器页面管理模块200(或页面清单管理模块220)从所述惰性清单3122中移除对应串行删除NVM页面地址「2」、「3」的多个条目。如此一来,所述串行页面删除操作已完成。
上述的串行页面删除操作的精神在于,原本欲被移除的末端惰性页面与页面地址与末端惰性页面连续的其他惰性页面具有数据存取的关联性。也就是说,页面地址为连续的多个NVM页面很有可能具有相同的数据存取机率/频率。基此,由于欲被移除的惰性清单中的末端NVM页面为最不可能再被存取的页面,因此,与末端NVM页面地址连续的其他页面地址的NVM页面也一并被移除(从DRAM 130中取消对应的快取)。
在另一实施例中,串行页面删除操作中被删除的多个串行删除页面的数量还可经由预先设定的删除个数门坎值来限制。即,串行页面删除操作中被删除的多个串行删除页面的数量为删除个数门坎值的数值减去一。如此一来,每次清理DRAM的空间时,被删除的存储器页面的总数量不会超过删除个数门坎值。举例来说,对应图例<9.2>,由于删除个数门坎值为3,即使经由预定检查长度「8」,存储器页面管理模块200(或页面清单管理模块220)找到共3个与末端NVM页面地址连续的NVM页面地址「1」、「2」、「3」,但对应NVM页面地址「1」的NVM页面会被保留,以使NVM页面地址「4」、「2」、「3」共三个NVM页面会被取消快取,而从惰性清单中被移除。
综上所述,本发明所提供的存储器控制器与存储器页面管理方法,可从主机系统所执行的操作系统来接收对应一状态改变页面的状态改变通知,并且根据所述状态改变通知较精确地判断所快取的存储器页面的所处的数据存取频率分组,以藉此将所快取的存储器页面自目前的页面清单移动至可保持快取状态的另一组页面清单(如,维持清单),并且增强所快取的存储器页面的快取准确度。此外,更可根据判断对应存取指令的目标页面的快取命中状态为命中或未命中来进一步分组所快取的存储器页面,以让更不常使用的存储器页面有较高的机率从DRAM的快取中移除,并且让较常被使用的存储器页面具有较低的机率来避免从DRAM的快取中被移除。如此一来,本发明所提供的存储器控制器与存储器页面管理方法,可使NVDIMM装置在使用很少的管理成本就具有非常高的存储器管理快取效率,以充分使用到DRAM的快速存取的效能,进而使NVDIMM装置的数据访问速度可以接近DRAM,改善传统NVDIMM装置的效能缺陷。
虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属技术领域中普通技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当以权利要求所界定的为准。
Claims (20)
1.一种存储器控制器,用于控制主机系统的非易失性双列直插式存储器模块(NVDIMM)装置,其中所述NVDIMM装置包括所述存储器控制器、动态随机存取存储器(DRAM)与非易失性存储器模块(NVM),其中所述DRAM具有多个DRAM页面,并且所述NVM具有多个NVM页面,所述存储器控制器包括:
NVDIMM接口,用以耦接至所述主机系统的中央处理单元,其中所述中央处理单元用以存取所述NVM的所述多个NVM页面,并且执行所述主机系统的操作系统;
静态随机存取存储器(SRAM),用以存储数据;
处理器,耦接至所述动态随机存取存储器与所述非易失性存储器模块、所述NVDIMM接口与所述静态随机存取存储器,
其中所述处理器用以存取且执行储存于所述非易失性存储器模块中的一存储器页面管理模块,以实行存储器页面管理方法,其中
所述存储器页面管理模块用以从所述中央处理单元接收对应状态改变页面的状态改变通知,并且根据所述状态改变通知来将所述状态改变页面自当前所属的清单分组至适应性页面清单中的维持清单或适应性最近最少使用(LRU)清单,其中所述状态改变通知用以表示所述操作系统已改变所述状态改变页面的状态为活跃状态或不活跃状态,其中,所述活跃状态表示对应所述状态改变页面的活跃事件发生,所述不活跃状态表示对应所述状态改变页面的不活跃事件发生,
其中所述存储器页面管理模块更用以从所述中央处理单元接收存取指令,其中所述存取指令指示对对应目标页面的目标页面数据执行存取操作,
其中所述存储器页面管理模块更用以根据所述存取指令辨识所述目标页面与对应所述目标页面的目标NVM页面地址,
其中反应于判定对应所述目标页面的快取命中状态为命中,
所述存储器页面管理模块更用以辨识所述目标NVM页面地址所映射的目标DRAM页面地址,其中反应于所述目标页面已被分组至所述适应性LRU清单的惰性清单,所述存储器页面管理模块更用以将所述目标页面分组至所述适应性LRU清单的先进先出(FIFO)清单,
其中反应于判定对应所述目标页面的所述快取命中状态为未命中,
所述存储器页面管理模块更用以储存对应所述目标页面的所述目标页面数据至所述DRAM的目标DRAM页面中,将所述目标DRAM页面的目标DRAM页面地址映射至所述目标NVM页面地址,并且将所述目标页面分组至所述适应性LRU清单,
其中所述存储器页面管理模块更用以根据所述存取指令,使用所述目标DRAM页面地址来完成对应所述目标页面数据的所述存取操作。
2.如权利要求1所述的存储器控制器,其中
所述存储器页面管理模块对所述操作系统执行对应所述NVDIMM装置的存储器初始化操作,以安装操作系统通知模块至所述操作系统,其中所述中央处理单元执行所述操作系统通知模块,
其中所述操作系统通知模块用以发送所述状态改变通知至所述存储器页面管理模块,并且所述状态改变通知包括升级通知与降级通知,
其中当所述操作系统改变所述状态改变页面的状态至所述活跃状态,所述操作系统通知模块发送所述升级通知至所述存储器页面管理模块,
其中当所述操作系统改变所述状态改变页面的状态至所述不活跃状态,所述操作系统通知模块发送所述降级通知至所述存储器页面管理模块。
3.如权利要求2所述的存储器控制器,其中
反应于所述状态改变通知为所述降级通知且所述状态改变页面已被分组于所述维持清单中,所述存储器页面管理模块将所述状态改变页面分组至所述适应性LRU清单的所述FIFO清单的前端,
其中反应于所述状态改变通知为所述升级通知且所述状态改变页面已被分组于所述适应性LRU清单中,所述存储器页面管理模块将所述状态改变页面分组至所述维持清单中。
4.如权利要求1所述的存储器控制器,其中
反应于所述DRAM有空白空间,所述存储器页面管理模块储存对应所述目标页面的所述目标页面数据至所述DRAM中的所述目标DRAM页面,并且辨识所述目标DRAM页面的所述目标DRAM页面地址。
5.如权利要求4所述的存储器控制器,其中
所述存储器页面管理模块更将所述目标DRAM页面地址映射至所述目标NVM页面地址,并且将所述目标页面分组至所述适应性LRU清单的所述FIFO清单的前端。
6.如权利要求4所述的存储器控制器,
其中反应于所述FIFO清单的大小与所述惰性清单的大小的比值大于预定比值,
所述存储器页面管理模块将所述目标DRAM页面地址映射至所述目标NVM页面地址,并且将所述目标页面分组至所述适应性LRU清单的所述惰性清单的前端,
其中反应于所述FIFO清单的大小与所述惰性清单的大小的所述比值不大于预定比值,
所述存储器页面管理模块将所述目标DRAM页面地址映射至所述目标NVM页面地址,并且将所述目标页面分组至所述适应性LRU清单的所述FIFO清单的后端。
7.如权利要求4所述的存储器控制器,其中反应于所述DRAM没有空白空间,
所述存储器页面管理模块辨识被分组至惰性清单中的多个惰性页面中的末端惰性页面,并且辨识所述末端惰性页面的末端NVM页面地址所映射的末端DRAM页面地址,
其中在储存对应所述目标页面的所述目标页面数据至所述DRAM中的所述目标DRAM页面,并且辨识所述目标DRAM页面的所述目标DRAM页面地址之前,所述存储器页面管理模块从所述惰性清单中移除所述末端惰性页面,并且从所述DRAM的对应所述末端DRAM页面地址的DRAM页面中删除所储存的数据。
8.如权利要求7所述的存储器控制器,其中反应于所述存储器页面管理模块从所述惰性清单中移除所述末端惰性页面,并且在从所述DRAM的对应所述末端DRAM页面地址的所述DRAM页面中删除所储存的数据后,
所述存储器页面管理模块根据所述末端NVM页面地址执行串行页面删除操作。
9.如权利要求8所述的存储器控制器,其中在所述串行页面删除操作中,
所述存储器页面管理模块根据所述末端NVM页面地址辨识分组至所述惰性清单中的一或多个串行删除页面,其中所述一或多个串行删除页面的串行删除NVM页面地址与所述末端NVM页面地址为连续的多个NVM页面地址,
其中所述存储器页面管理模块辨识映射至一或多个串行删除NVM页面地址的一或多个串行删除DRAM页面地址,并且从所述DRAM的对应所述一或多个串行删除DRAM页面地址的一或多个串行删除DRAM页面中删除所储存的数据,
其中所述存储器页面管理模块从所述惰性清单中移除所述一或多个串行删除页面。
10.如权利要求1所述的存储器控制器,其中
其中反应于所述对应所述存取指令的存储器存取计数值不为预定计数值,所述存储器页面管理模块判定对应所述目标页面的所述快取命中状态为命中,并且将对应前次存取指令的前次DRAM页面地址辨识为所述目标NVM页面地址所映射的所述目标DRAM页面地址,
其中反应于所述对应所述存取指令的所述存储器存取计数值为所述预定计数值,所述存储器页面管理模块查找转译后援缓冲区,
反应于所述转译后援缓冲区中具有所述目标NVM页面地址,所述存储器页面管理模块判定对应所述目标页面的所述快取命中状态为命中,并且经由所述转译后援缓冲区中辨识所述目标NVM页面地址所映射的所述目标DRAM页面地址,
反应于所述转译后援缓冲区中不具有所述目标NVM页面地址,所述存储器页面管理模块查找所述适应性页面清单,
其中反应于所述适应性页面清单中具有所述目标NVM页面地址,所述存储器页面管理模块判定对应所述目标页面的所述快取命中状态为命中,并且经由所述适应性页面清单辨识所述目标NVM页面地址所映射的所述目标DRAM页面地址,
其中反应于所述适应性页面清单中不具有所述目标NVM页面地址,所述存储器页面管理模块判定对应所述目标页面的所述快取命中状态为未命中。
11.一种存储器页面管理方法,适用于用以控制主机系统的非易失性双列直插式存储器模块(NVDIMM)装置的存储器控制器,其中所述NVDIMM装置包括所述存储器控制器、动态随机存取存储器(DRAM)与非易失性存储器模块(NVM),其中所述DRAM具有多个DRAM页面,并且所述NVM具有多个NVM页面,所述存储器页面管理方法包括:
配置所述存储器控制器的处理器以存取和执行存储在NVM中的存储器页面管理模块,所述存储器页面管理模块所实行的多个步骤包括:
从中央处理单元接收对应状态改变页面的状态改变通知,并且根据所述状态改变通知来将所述状态改变页面自当前所属的清单分组至适应性页面清单中的维持清单或适应性LRU清单,其中所述中央处理单元执行所述主机系统的操作系统,其中所述状态改变通知用以表示所述操作系统已改变所述状态改变页面的状态为活跃状态或不活跃状态;所述活跃状态表示对应所述状态改变页面的活跃事件发生,所述不活跃状态表示对应所述状态改变页面的不活跃事件发生;
从所述中央处理单元接收存取指令,其中所述存取指令指示对对应目标页面的目标页面数据执行存取操作;
根据所述存取指令辨识所述目标页面与对应所述目标页面的目标NVM页面地址;
其中反应于判定对应所述目标页面的快取命中状态为命中,辨识所述目标NVM页面地址所映射的目标DRAM页面地址,其中反应于所述目标页面已被分组至所述适应性最近最少使用(LRU)清单的惰性清单,更将所述目标页面分组至所述适应性LRU清单的先进先出(FIFO)清单;以及
反应于判定对应所述目标页面的所述快取命中状态为未命中,储存对应所述目标页面的所述目标页面数据至所述DRAM的目标DRAM页面中,将所述目标DRAM页面的目标DRAM页面地址映射至所述目标NVM页面地址,并且将所述目标页面分组至所述适应性LRU清单;以及
根据所述存取指令,使用所述目标DRAM页面地址来完成对应所述目标页面数据的所述存取操作。
12.如权利要求11所述的存储器页面管理方法,更包括:
执行对应所述NVDIMM装置的存储器初始化操作,以安装操作系统通知模块至所述操作系统,其中所述中央处理单元执行所述操作系统通知模块,
其中所述操作系统通知模块用以发送所述状态改变通知至所述存储器页面管理模块,并且所述状态改变通知包括升级通知与降级通知,
其中当所述状态改变页面的所述状态被所述操作系统改变至所述活跃状态,通过所述操作系统通知模块发送所述升级通知至所述存储器页面管理模块;以及
当所述状态改变页面的所述状态被所述操作系统改变至所述不活跃状态,通过所述操作系统通知模块发送所述降级通知至所述存储器页面管理模块。
13.如权利要求12所述的存储器页面管理方法,其中
反应于所述状态改变通知为所述降级通知且所述状态改变页面已被分组于所述维持清单中,将所述状态改变页面分组至所述适应性LRU清单的所述FIFO清单的前端;以及
反应于所述状态改变通知为所述升级通知且所述状态改变页面已被分组于所述适应性LRU清单中,将所述状态改变页面分组至所述维持清单中。
14.如权利要求11所述的存储器页面管理方法,其中
反应于所述DRAM有空白空间,储存对应所述目标页面的所述目标页面数据至所述DRAM中的所述目标DRAM页面,并且辨识所述目标DRAM页面的所述目标DRAM页面地址。
15.如权利要求14所述的存储器页面管理方法,其中
所述存储器页面管理模块更将所述目标DRAM页面地址映射至所述目标NVM页面地址,并且将所述目标页面分组至所述适应性LRU清单的所述FIFO清单的前端。
16.如权利要求14所述的存储器页面管理方法,其中
反应于所述FIFO清单的大小与所述惰性清单的大小的比值大于预定比值,将所述目标DRAM页面地址映射至所述目标NVM页面地址,并且将所述目标页面分组至所述适应性LRU清单的所述惰性清单的前端,以及
反应于所述FIFO清单的大小与所述惰性清单的大小的所述比值不大于预定比值,将所述目标DRAM页面地址映射至所述目标NVM页面地址,并且将所述目标页面分组至所述适应性LRU清单的所述FIFO清单的后端。
17.如权利要求11所述的存储器页面管理方法,其中反应于所述DRAM没有空白空间,
辨识被分组至惰性清单中的多个惰性页面中的末端惰性页面,并且辨识所述末端惰性页面的末端NVM页面地址所映射的末端DRAM页面地址;以及
在储存对应所述目标页面的所述目标页面数据至所述DRAM中的所述目标DRAM页面,并且辨识所述目标DRAM页面的所述目标DRAM页面地址之前,从所述惰性清单中移除所述末端惰性页面,并且从所述DRAM的对应所述末端DRAM页面地址的DRAM页面中删除所储存的数据。
18.如权利要求17所述的存储器页面管理方法,其中反应于所述存储器页面管理模块从所述惰性清单中移除所述末端惰性页面,并且从所述DRAM的对应所述末端DRAM页面地址的所述DRAM页面中删除所储存的数据的步骤完成后,
根据所述末端NVM页面地址执行串行页面删除操作。
19.如权利要求18所述的存储器页面管理方法,其中所述串行页面删除操作包括:
根据所述末端NVM页面地址辨识分组至所述惰性清单中的一或多个串行删除页面,其中所述一或多个串行删除页面的串行删除NVM页面地址与所述末端NVM页面地址为连续的多个NVM页面地址;
辨识映射至一或多个串行删除NVM页面地址的一或多个串行删除DRAM页面地址,并且从所述DRAM的对应所述一或多个串行删除DRAM页面地址的一或多个串行删除DRAM页面中删除所储存的数据;以及
从所述惰性清单中移除所述一或多个串行删除页面。
20.如权利要求11所述的存储器页面管理方法,其中
其中反应于所述对应所述存取指令的存储器存取计数值不为预定计数值,判定对应所述目标页面的所述快取命中状态为命中,并且所述辨识所述目标NVM页面地址所映射的目标DRAM页面地址的步骤包括直接将对应前次存取指令的前次DRAM页面地址辨识为所述目标NVM页面地址所映射的所述目标DRAM页面地址;以及
反应于所述对应所述存取指令的所述存储器存取计数值为所述预定计数值,查找转译后援缓冲区,
反应于所述转译后援缓冲区中具有所述目标NVM页面地址,判定对应所述目标页面的所述快取命中状态为命中,并且经由所述转译后援缓冲区中辨识所述目标NVM页面地址所映射的所述目标DRAM页面地址;以及
反应于所述转译后援缓冲区中不具有所述目标NVM页面地址,查找所述适应性页面清单,
反应于所述适应性页面清单中具有所述目标NVM页面地址,判定对应所述目标页面的所述快取命中状态为命中,并且经由所述适应性页面清单辨识所述目标NVM页面地址所映射的所述目标DRAM页面地址;以及
反应于所述适应性页面清单中不具有所述目标NVM页面地址,判定对应所述目标页面的所述快取命中状态为未命中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107145910A TWI688859B (zh) | 2018-12-19 | 2018-12-19 | 記憶體控制器與記憶體頁面管理方法 |
TW107145910 | 2018-12-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111338561A CN111338561A (zh) | 2020-06-26 |
CN111338561B true CN111338561B (zh) | 2023-05-30 |
Family
ID=70767050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910478949.5A Active CN111338561B (zh) | 2018-12-19 | 2019-06-03 | 存储器控制器与存储器页面管理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11372779B2 (zh) |
CN (1) | CN111338561B (zh) |
TW (1) | TWI688859B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11151050B2 (en) * | 2020-01-03 | 2021-10-19 | Samsung Electronics Co., Ltd. | Efficient cache eviction and insertions for sustained steady state performance |
US11392499B2 (en) * | 2020-09-18 | 2022-07-19 | Kioxia Corporation | Dynamic buffer caching of storage devices |
WO2022177945A1 (en) * | 2021-02-16 | 2022-08-25 | Micron Technology, Inc. | Controller for managing multiple types of memory |
US11822480B2 (en) | 2021-08-31 | 2023-11-21 | Apple Inc. | Criticality-informed caching policies |
JP2023104400A (ja) * | 2022-01-17 | 2023-07-28 | 富士通株式会社 | データ管理方法およびデータ管理プログラム |
US11977767B2 (en) * | 2022-03-14 | 2024-05-07 | Silicon Motion, Inc. | Method and apparatus for caching address mapping information in flash memory based storage device |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714891A (zh) * | 2013-12-11 | 2015-06-17 | 华为技术有限公司 | 一种闪存数据管理方法及装置 |
TWI595356B (zh) * | 2016-08-19 | 2017-08-11 | 大心電子(英屬維京群島)股份有限公司 | 資料傳輸方法及使用所述方法的儲存控制器與清單管理電路 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6385699B1 (en) * | 1998-04-10 | 2002-05-07 | International Business Machines Corporation | Managing an object store based on object replacement penalties and reference probabilities |
US20090193184A1 (en) | 2003-12-02 | 2009-07-30 | Super Talent Electronics Inc. | Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System |
US8397013B1 (en) | 2006-10-05 | 2013-03-12 | Google Inc. | Hybrid memory module |
US20070118695A1 (en) * | 2005-11-18 | 2007-05-24 | International Business Machines Corporation | Decoupling storage controller cache read replacement from write retirement |
TW201042648A (en) * | 2009-05-25 | 2010-12-01 | Novatek Microelectronics Corp | Dynamic memory accessing method and memory controller |
TWI441184B (zh) * | 2010-02-09 | 2014-06-11 | Silicon Motion Inc | 非揮發性記憶裝置及其資料處理方法 |
KR101713051B1 (ko) | 2010-11-29 | 2017-03-07 | 삼성전자주식회사 | 하이브리드 메모리 시스템, 및 그 관리 방법 |
US9529708B2 (en) | 2011-09-30 | 2016-12-27 | Intel Corporation | Apparatus for configuring partitions within phase change memory of tablet computer with integrated memory controller emulating mass storage to storage driver based on request from software |
US9122631B2 (en) * | 2011-11-07 | 2015-09-01 | Peking University | Buffer management strategies for flash-based storage systems |
US9269438B2 (en) | 2011-12-21 | 2016-02-23 | Intel Corporation | System and method for intelligently flushing data from a processor into a memory subsystem |
US9678863B2 (en) | 2012-06-12 | 2017-06-13 | Sandisk Technologies, Llc | Hybrid checkpointed memory |
US9348539B1 (en) | 2013-03-12 | 2016-05-24 | Inphi Corporation | Memory centric computing |
US20160239685A1 (en) | 2013-07-31 | 2016-08-18 | Hewlett-Packard Development Company, L.P. | Hybrid secure non-volatile main memory |
US20150234669A1 (en) * | 2014-02-17 | 2015-08-20 | Strato Scale Ltd. | Memory resource sharing among multiple compute nodes |
WO2016037310A1 (en) * | 2014-09-09 | 2016-03-17 | Hua Zhong University Of Science Technology | Filtering write request sequences |
US10126950B2 (en) * | 2014-12-22 | 2018-11-13 | Intel Corporation | Allocating and configuring persistent memory |
US20170024326A1 (en) * | 2015-07-22 | 2017-01-26 | CNEX-Labs, Inc. | Method and Apparatus for Caching Flash Translation Layer (FTL) Table |
CN106469119B (zh) | 2015-08-10 | 2020-07-07 | 北京忆恒创源科技有限公司 | 一种基于nvdimm的数据写缓存方法及其装置 |
TW201740278A (zh) * | 2016-01-14 | 2017-11-16 | 三星電子股份有限公司 | 用於存取異質記憶體的方法及含異質記憶體的記憶體模組 |
US10162554B2 (en) * | 2016-08-03 | 2018-12-25 | Samsung Electronics Co., Ltd. | System and method for controlling a programmable deduplication ratio for a memory system |
CN107870729B (zh) * | 2016-09-23 | 2020-11-20 | 伊姆西Ip控股有限责任公司 | 一种用于缓存数据的方法、设备和系统 |
TWI596541B (zh) | 2016-11-30 | 2017-08-21 | 財團法人工業技術研究院 | 資料存取系統、資料存取裝置及資料存取方法 |
US10394719B2 (en) | 2017-01-25 | 2019-08-27 | Samsung Electronics Co., Ltd. | Refresh aware replacement policy for volatile memory cache |
US10282294B2 (en) | 2017-02-15 | 2019-05-07 | Samsung Electronics Co., Ltd. | Mitigating DRAM cache metadata access overhead with SRAM metadata cache and bloom filter |
US10810123B1 (en) * | 2017-10-25 | 2020-10-20 | EMC IP Holding Company, LLC | Flush strategy for using DRAM as cache media system and method |
US10691596B2 (en) * | 2018-04-27 | 2020-06-23 | International Business Machines Corporation | Integration of the frequency of usage of tracks in a tiered storage system into a cache management system of a storage controller |
US11068417B2 (en) * | 2018-06-26 | 2021-07-20 | International Business Machines Corporation | Allocation of cache storage among applications that indicate minimum retention time for tracks in least recently used demoting schemes |
US11074197B2 (en) * | 2018-06-26 | 2021-07-27 | International Business Machines Corporation | Integration of application indicated minimum time to cache and maximum time to cache to least recently used track demoting schemes in a cache management system of a storage controller |
US10909012B2 (en) * | 2018-11-12 | 2021-02-02 | H3 Platform, Inc. | System having persistent memory |
-
2018
- 2018-12-19 TW TW107145910A patent/TWI688859B/zh active
-
2019
- 2019-05-30 US US16/425,969 patent/US11372779B2/en active Active
- 2019-06-03 CN CN201910478949.5A patent/CN111338561B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714891A (zh) * | 2013-12-11 | 2015-06-17 | 华为技术有限公司 | 一种闪存数据管理方法及装置 |
TWI595356B (zh) * | 2016-08-19 | 2017-08-11 | 大心電子(英屬維京群島)股份有限公司 | 資料傳輸方法及使用所述方法的儲存控制器與清單管理電路 |
Also Published As
Publication number | Publication date |
---|---|
TW202024918A (zh) | 2020-07-01 |
US20200201782A1 (en) | 2020-06-25 |
US11372779B2 (en) | 2022-06-28 |
CN111338561A (zh) | 2020-06-26 |
TWI688859B (zh) | 2020-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111338561B (zh) | 存储器控制器与存储器页面管理方法 | |
US8949544B2 (en) | Bypassing a cache when handling memory requests | |
WO2018059361A1 (zh) | 一种存储系统掉电保护方法、存储控制器及电子设备 | |
US9128847B2 (en) | Cache control apparatus and cache control method | |
US20150331624A1 (en) | Host-controlled flash translation layer snapshot | |
US10802734B2 (en) | Method for fast boot read | |
CN107430554B (zh) | 通过使用数据的可压缩性作为高速缓存插入的标准来提高存储高速缓存性能 | |
US9026738B2 (en) | Cache memory device, cache memory control method, program and integrated circuit | |
KR20130112210A (ko) | 메모리 시스템 및 그것의 페이지 교체 방법 | |
KR20190066466A (ko) | 기입 레이턴시를 줄일 수 있는 저장 장치의 동작 방법 | |
CN111414132A (zh) | 带异构存储器的主存储设备、计算机系统及数据管理方法 | |
US11526296B2 (en) | Controller providing host with map information of physical address for memory region, and operation method thereof | |
CN115617503A (zh) | 用于异构存储器系统中的负载均衡的系统和方法 | |
JP5166211B2 (ja) | 不揮発性メモリを主記憶に用いた装置 | |
US20190012279A1 (en) | Computer system, communication device, and storage control method | |
CN110515861B (zh) | 处理刷写命令的存储设备及其方法 | |
US20220382478A1 (en) | Systems, methods, and apparatus for page migration in memory systems | |
CN111209227B (zh) | 数据处理系统 | |
US20140281157A1 (en) | Memory system, memory controller and method | |
US11822813B2 (en) | Storage device, operation method of storage device, and storage system using the same | |
US11366614B2 (en) | Storage system | |
US20240061786A1 (en) | Systems, methods, and apparatus for accessing data in versions of memory pages | |
US20230359389A1 (en) | Operation method of host configured to communicate with storage devices and memory devices, and system including storage devices and memory devices | |
US20230359567A1 (en) | Storage device, computing device including storage device and memory device, and operating method of computing device | |
US20230359379A1 (en) | Computing system generating map data, and method of operating 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 |