CN117157631A - 弹性持久存储器区 - Google Patents
弹性持久存储器区 Download PDFInfo
- Publication number
- CN117157631A CN117157631A CN202280028662.2A CN202280028662A CN117157631A CN 117157631 A CN117157631 A CN 117157631A CN 202280028662 A CN202280028662 A CN 202280028662A CN 117157631 A CN117157631 A CN 117157631A
- Authority
- CN
- China
- Prior art keywords
- pmr
- region
- page
- memory device
- memory
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 211
- 230000002085 persistent effect Effects 0.000 title claims abstract description 26
- 238000012545 processing Methods 0.000 claims abstract description 69
- 230000007246 mechanism Effects 0.000 claims abstract description 23
- 238000000034 method Methods 0.000 claims description 75
- 238000003860 storage Methods 0.000 claims description 36
- 230000004044 response Effects 0.000 claims description 9
- 238000011084 recovery Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 41
- 239000003990 capacitor Substances 0.000 description 23
- 238000007726 management method Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000006731 degradation reaction Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 239000000872 buffer Substances 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 235000012813 breadcrumbs Nutrition 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000004146 energy storage Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000006984 memory degeneration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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
- 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/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- 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
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- 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
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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
-
- 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/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/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency 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/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种系统包含:第一存储器装置,其具有分配为具有第一组页面的第一持久存储器区(PMR)的区;第二存储器装置,其包括具有分配为具有第二组页面的第二PMR区的区的非易失性存储器装置;及至少一个处理装置,其可操作地耦合到所述第一存储器装置及所述第二存储器装置,以实施PMR机制以使所述第二PMR区能够通过所述第一PMR区来存取。
Description
技术领域
本公开的实施例大体上涉及存储器子系统,且更具体来说,涉及弹性持久存储器区(PMR)。
背景技术
存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置及易失性存储器装置。一般来说,主机系统可利用存储器子系统来将数据存储在存储器装置处及从存储器装置检索数据。
附图说明
从下文所给出的详细描述及从本公开的各种实施例的附图,可更全面地理解本公开。然而,附图不应被理解为将本公开限于特定实施例,而是仅用于解释及理解。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
图2是根据本公开的一些实施例的用以启用弹性持久存储器区(PMR)的实例系统的框图。
图3是根据本公开的一些实施例的实例持久存储器区(PMR)的框图。
图4是根据本公开的一些实施例的用以管理持久存储器区(PMR)存取以使用高速缓存机制执行数据操作的实例方法的流程图。
图5是根据本公开的一些实施例的用以使用高速缓存机制管理与持久存储器区(PMR)相关联的关闭过程的实例方法的流程图。
图6是根据本公开的一些实施例的用以使用高速缓存机制管理与持久存储器区(PMR)相关联的启动过程的实例方法的流程图。
图7是根据本公开的一些实施例的用以使用启用弹性持久存储器区(PMR)的系统实施日志记录应用程序的实例方法的流程图。
图8是根据本发明的一些实施例的用于实施电容器(CAP)检查的系统的框图。
图9是本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
本公开的方面涉及启用具有弹性持久存储器区(PMR)的装置。存储器子系统可为存储装置、存储器模块或存储装置与存储器模块的组合。下文结合图1描述存储装置及存储器模块的实例。一般来说,主机系统可利用包含一或多个组件(例如存储数据的存储器装置)的存储器子系统。主机系统可提供待存储在存储器子系统处的数据且可请求待从存储器子系统检索的数据。
存储器子系统可包含高密度非易失性存储器装置,其中当没有电力被供应到所述存储器装置时期望保留数据。非易失性存储器装置的一个实例是与非(NAND)存储器装置。下文结合图1描述非易失性存储器装置的其它实例。非易失性存储器装置是一或多个裸片的封装。每一裸片可由一或多个平面组成。对于一些类型的非易失性存储器装置(例如,NAND装置),每一平面由一组物理块组成。每一块由一组页面组成。每一页面由一组存储器单元(“单元”)组成。单元是存储信息的电子电路。取决于单元类型,单元可存储一或多位二进制信息,且具有与所存储位的数目相关的各种逻辑状态。逻辑状态可由二进制值来表示,例如“0”及“1”或此类值的组合。
对于可利用面向事务的持久存储器的多种实施方案或使用案例,在块存储元件旁边具有系统暴露的字节可寻址存储器区已变得更加重要,且现代应用对事务一致性的依赖已显著增长。可利用面向事务的持久存储器的实例性实施方案包含但不限于:写入日记;用于软件RAID及擦除编码系统的日志;用于数据库的提交日志;用于压缩卷的元数据;用于重复数据删除、压缩等的分级;故障转移环境中的状态转移;错误/警告日志记录(例如,装置面包屑);用于行内块压缩的压缩元数据表;及协作存储域元数据(例如,虚拟驱动器群组)。
一种正被实施的解决方案是使用非易失性直插式存储器模块(NVDIMM)。然而,NVDIMM实施方案可能是昂贵的且具有它们自身的限制。例如,NVDIMM今后可能不实用,因为所述技术可能不容易应用于现代系统架构且因为其在节点之间的保护机制无法相应地扩展。
存储器子系统(例如固态驱动器(SSD))可由经由总线附接的逻辑装置接口来存取。用于存取存储器装置的此逻辑装置接口的一个实例是快速非易失性存储器(NVMe)。主机系统(“主机”)可经由例如外围组件互连快速(PCIe)总线存取存储器子系统,且对存储器子系统的(若干)存储器装置的存取在本文中可被称为PCIe NVMe。更具体来说,存储器子系统(例如,SSD)可包含存储元件及持久存储器区(PMR)。例如,存储元件可包含块存储元件。PMR对应于可读持久存储器的区域。作为一个实例,PMR可被实施为存储器子系统的易失性存储器装置上的电源保护区。在此,易失性存储器装置可包含动态随机存取存储器(DRAM)装置。更具体来说,DRAM装置可为双倍数据速率同步动态随机存取存储器(DDR)装置。作为另一实例,PMR可在本机非易失性存储器装置(例如磁性RAM(MRAM)或其它类似的非易失性存储器装置)上实施。更具体来说,PMR可为可通过基址寄存器(BAR)存取的字节可寻址存储器区。在一些实施例中,存储器子系统是包含PMR的NVMe SSD,其中此装置被称为具有PMR的NVMe SSD装置。根据本文中所描述的实施例,存储器子系统可实施任何合适接口标准。在一些实施例中,接口标准是PCIe。在一些实施例中,接口标准是计算快速链路(CXL)。
当前存储器技术、形状因子及电源考虑因素限制可暴露于主机系统的存储器量。由于用来将PMR实施为易失性存储器装置上的电源保护区的资源的成本及稀缺性,使用常规方法,仅少量的存储器可专用于PMR。例如,DDR装置可将PMR的大小限于几十MB,而涉及PMR的一些应用程序可利用几十GB大小的区。因此,易失性存储器装置上的PMR存储器大小对于涉及PMR的应用程序来说可能太小。
本公开的方面通过提供启用弹性PMR的存储器子系统来解决上述及其它缺陷。更具体来说,本公开的方面可以透明方式将大存储器区暴露于主机系统以实施PMR,而不需要在托管PMR的存储器装置上有相同的物理空间或占据面积。更具体来说,可在可通过小PMR区存取的非易失性存储器装置(例如,NAND)上创建大存储器区。在一些实施例中,PMR是易失性存储器装置上的电源保护区。例如,易失性存储器装置可为DRAM装置。更具体来说,DRAM装置可为DDR装置。例如,本文中所描述的实施例可扩展到几十GB,而DDR装置上的PMR区大小仅为几十MB。PMR可由根据本文中所描述的实施例的任何合适接口标准(例如,PCIe及/或CXL)来暴露。
例如,系统可包含分配给易失性存储器装置(例如,DDR)的第一PMR区。第一PMR区可包含具有给定大小的合适数目个页面。第一PMR区的大小可比易失性存储器装置的总大小小得多。例如,如果易失性存储器装置的大小是32GB,那么第一PMR区的大小可为32MB,且如果每一页面的大小是1MB,那么最大页面数目是32。易失性存储器装置上的第一PMR区的持久性可通过采用电源保护来在停电事件之后保存存储器子系统上的写入数据及状态信息来实现。例如,电源保护可涉及使用电容能量阱。
所述系统可进一步包含分配给非易失性存储器装置(例如,NAND)的第二PMR区。第二PMR区的大小可比非易失性存储器装置的总大小小得多。例如,如果非易失性存储器装置的大小是42TB,那么第二PMR区的大小可为10GB。
所述系统可进一步包含存储器子系统控制器内部的一组密钥寄存器。更具体来说,所述一组密钥寄存器可被用来管理PMR的存储器页面(“页面”)何时可被逐出(即,移动到非易失性存储器(例如,NAND))或被高速缓存(即,移动到易失性存储器(例如,DDR)中)。所述一组密钥寄存器可被包含固件及/或硬件的PMR组件用来实施高速缓存逻辑以基于任何合适度量而优化对页面的存取延时及命中率。一个此数据度量是“数据温度”,其是指数据关于数据存取频率是“热”还是“冷”。根据本文中所描述的实施例,当需要分配新页面时,可实施任何合适高速缓存逻辑来确定换出哪个(哪些)页面。合适高速缓存方法的实例包含但不限于先进先出(FIFO)、后进先出(LIFO)、最近最少使用(LRU)、最不常用(LFU)、时间感知LRU(TLRU)、轮询(RR)等。如果对PMR中的位置的存取(“PMR存取位置”)是页面常驻的(“命中”),那么可避免固件/硬件调用,且如果PMR存取位置不是页面常驻的(“未命中”),那么可调用固件/硬件来管理逐出过程。为了确定PMR存取位置是命中还是未命中,所述系统可进一步包含维持高速缓存查找数据结构(例如,高速缓存查找表)的高速缓存查找组件。高速缓存查找组件可产生用来测量存取频率(例如,数据温度)的元数据。例如,高速缓存查找组件可包含内容可寻址存储器(CAM)装置。所述系统可进一步经配置以响应于检测到关闭事件及/或启动事件而管理关闭过程及/或启动过程。
本公开的优点包含但不限于在使用相同的物理存储器占据面积的同时的更大的所暴露存储器区、关于管理所暴露存储器与实际存储器的主机系统透明度及低成本持久性解决方案。
图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或其组合。
存储器子系统110可为存储装置、存储器模块或存储装置与存储器模块的组合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM)及各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、具有物联网(IoT)能力的装置、嵌入式计算机(例如,包含在交通工具、工业装备或联网商业装置中的计算机),或包含存储器及处理装置的此类计算装置。
计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的多个存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”或“与…耦合”通常是指组件之间的连接,其可为间接通信连接或直接通信连接(例如,没有中介组件),无论是有线的还是无线的,包含例如电连接、光学连接、磁性连接等的连接。
主机系统120可包含处理器芯片组及由处理器芯片组执行的软件栈。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如,NVDIMM控制器)及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120使用存储器子系统110例如来将数据写入到存储器子系统110及从存储器子系统110读取数据。
主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连快速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、双倍数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双倍数据速率(DDR)的DIMM插槽接口)等。物理主机接口可被用来在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过物理主机接口(例如,PCIe总线)与主机系统120耦合时,主机系统120可进一步快速NVM Express(NVMe)接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据及其它信号的接口。图1举例说明存储器子系统110。一般来说,主机系统120可经由同一通信连接、多个单独通信连接及/或通信连接的组合存取多个存储器子系统。
存储器装置130、140可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(NAND)型快闪存储器及原位写入存储器,例如三维交叉点(“3D交叉点”)存储器装置,其是非易失性存储器单元的交叉点阵列。非易失性存储器单元的交叉点阵列可结合可堆叠交叉网格数据存取阵列基于体电阻的变化而执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行原位写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)及三维NAND(3DNAND)。
存储器装置130中的每一者可包含存储器单元的一或多个阵列。一种类型的存储器单元(例如,单电平单元(SLC))可每单元存储一个位。其它类型的存储器单元(例如多电平单元(MLC)、三电平单元(TLC)、四电平单元(QLC)及五电平单元(PLC))可每单元存储多个位。在一些实施例中,存储器装置130中的每一者可包含例如SLC、MLC、TLC、QLC、PLC或其任何组合的存储器单元的一或多个阵列。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分、MLC部分、TLC部分、QLC部分或PLC部分。存储器装置130的存储器单元可被分组成页面,页面可指用来存储数据的存储器装置的逻辑单位。对于一些类型的存储器(例如,NAND),可对页面进行分组以形成块。
尽管描述例如非易失性存储器单元的3D交叉点阵列及NAND型快闪存储器(例如,2D NAND、3D NAND)的非易失性存储器组件,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻式随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器或电可擦除可编程只读存储器(EEPROM)。
存储器子系统控制器115(或简称为控制器115)可与存储器装置130通信,以执行例如在存储器装置130处读取数据、写入数据或擦除数据的操作及其它此类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路及/或离散组件、缓冲存储器或者其组合。硬件可包含具有专用(即,硬编码)逻辑以执行本文中所描述的操作的数字电路系统。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适处理器。
存储器子系统控制器115可包含处理装置,所述处理装置包含一或多个处理器(例如,处理器117),所述处理器经配置以执行存储在本地存储器119中的指令。在所说明实例中,存储器子系统控制器115的本地存储器119包含嵌入式存储器,所述嵌入式存储器经配置以存储用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程及例程的指令。
在一些实施例中,本地存储器119可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子系统110已被说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,而是可依赖于外部控制(例如,由外部主机,或者由与存储器子系统分离的处理器或控制器提供)。
一般来说,存储器子系统控制器115可从主机系统120接收命令或操作且将命令或操作转换成指令或适当命令以实现对存储器装置130的所期望存取。存储器子系统控制器115可负责与存储器装置130相关联的其它操作,例如损耗均衡操作、废弃项目收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作及逻辑地址(例如,逻辑块地址(LBA)、命名空间)与物理地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115可进一步包含用以经由物理主机接口与主机系统120通信的主机接口电路系统。主机接口电路系统可将从主机系统接收的命令转换成用以存取存储器装置130的命令指令,并且将与存储器装置130相关联的响应转换成用于主机系统120的信息。
存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如,DRAM)及地址电路系统(例如,行解码器及列解码器),所述地址电路系统可从存储器子系统控制器115接收地址且对所述地址进行解码以存取存储器装置130。
在一些实施例中,存储器装置130包含结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作的本地媒体控制器135。外部控制器(例如,存储器子系统控制器115)可从外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器子系统110是受管理存储器装置,其是具有在裸片上的控制逻辑(例如,本地控制器132)及用于同一存储器装置封装内的媒体管理的控制器(例如,存储器子系统控制器115)的原始存储器装置130。受管理存储器装置的实例是受管理NAND(MNAND)装置。
存储器子系统110包含持久存储器区(PMR)组件113。在一些实施例中,存储器子系统控制器115包含PMR组件113的至少一部分。在一些实施例中,PMR组件113是主机系统110、应用程序或操作系统的部分。在其它实施例中,本地媒体控制器135包含PMR组件113的至少一部分且经配置以执行本文中所描述的功能性。
PMR组件113可被用来启用具有弹性PMR的存储器子系统110(例如,NVMe SSD装置)。PMR组件113可提供可以透明方式将大存储器区暴露于主机系统120以在存储器装置140上实施PMR区145的机制。例如,存储器装置140可包含易失性存储器装置(例如,DRAM或DDR),且PMR区145可被实施为易失性存储器装置上的电源保护区。作为另一实例,存储器装置140可包含非易失性存储器装置(例如,MRAM),且PMR区145可在非易失性存储器装置上实施。此外,PMR区137可在存储器装置130上实施。例如,存储器装置130可包含非易失性存储器装置(例如,NAND)。存储器子系统控制器115可维持一组密钥寄存器(例如,在本地存储器119内)。更具体来说,所述一组密钥寄存器可被用来管理存储器页面(“页面”)何时可被逐出(即,移动到非易失性存储器(例如,NAND))或被高速缓存(即,移动到易失性存储器(例如,DDR)中)。所述一组密钥寄存器可被用来实施高速缓存机制以基于任何合适度量而优化对页面的存取延时及命中率。一个此数据度量是“数据温度”,其是指数据关于数据存取频率是“热”还是“冷”。在一些实施例中,存储器子系统110可为支持PCIe协议的PCIe装置。在一些实施例中,存储器子系统110可为支持CXL协议的CXL装置。PMR组件113可被用来实施任何合适装置以执行(若干)任何合适应用程序。下文描述关于PMR组件113的操作的进一步细节。
图2是用以启用弹性持久存储器区(PMR)的实例系统200的框图。例如,系统200可包含SSD装置。在一些实施例中,系统200包含PCIe SSD装置。在一些实施例中,系统200包含CXL SSD装置。
如所展示,系统200包含易失性存储器装置210(例如,图1的存储器装置140)。例如,易失性存储器装置可包含DRAM装置或DDR装置。易失性存储器装置210的区被分配给PMR,所述PMR被称为PMR区212(例如,图1的PMR区145)。为了解决停电事件,PMR区212可被实施为易失性存储器装置210上的电源保护区。更具体来说,易失性存储器装置上的PMR区212的持久性可通过采用电源保护以在停电事件之后保存存储器子系统上的写入数据及状态信息来实现。例如,电源保护可涉及使用电容能量阱。在替代实施例中,PMR区212可被分配给非易失性存储器装置。在此类实施例中,可能不需要停电保护。
PMR区212相对于易失性存储器装置210具有较小大小。例如,如果易失性存储器装置210包含具有32千兆字节(GB)大小的DDR,那么PMR区212可具有32兆字节(MB)的大小。PMR区212可维持各自具有对应页面大小的数个页面。现将在下文参考图3描述关于PMR区212的页面的进一步细节。
图3是实例PMR区300的框图。例如,PMR区300可为分配给图2的易失性存储器装置210的PMR区212。如所展示,PMR区300可维持数个页面。更具体来说,PMR区300可维持N个页面,包含第一页面310-1、第二页面310-2、第三页面310-3及第N页面310-N。根据本文中所描述的实施例,页面310-1到310-N中的每一者可为任何合适页面大小。在一些实施例中,页面310-1到310-N中的每一者的页面大小是1MB。此外,根据本文中所描述的实施例,页面数目N可为任何合适页面数目。可由PMR区300维持的页面数目可依据PMR区300的大小及页面大小而变化。例如,如果PMR区300的大小是32MB且页面大小是1MB,那么可由PMR区300维持的页面数目是32。
返回参考图2,系统200进一步包含非易失性存储器装置220(例如,图1的存储器装置130)。例如,非易失性存储器装置可包含NAND装置。PMR区222(例如,图1的PMR区137)被分配给存储器装置220。与PMR区212类似,PMR区222相对于非易失性存储器装置220具有较小大小。例如,如果存储器装置220包含具有42太字节(TB)大小的NAND,那么PMR区222可具有10GB的大小。与PMR区212类似,PMR区222可包含各自具有对应页面大小的数个页面。例如,如果PMR区222具有10GB的大小且PMR区222的每一页面具有1MB的大小,那么PMR区222可维持10,000个页面。
系统200进一步包含PMR组件230。PMR组件230可与图1的PMR组件113相同。PMR组件230可被体现为固件及/或硬件。PMR组件230经配置以通过将PMR区222创建为可通过PMR区212存取来管理PMR区212。PMR组件230的操作对于主机系统(例如,图1的主机系统110)可为透明的,使得主机系统将看到完整的PMR区222。
PMR组件230进一步经配置以实施高速缓存逻辑以基于任何合适度量而优化对页面的存取延时及命中率。一个此数据度量是“数据温度”,其是指数据关于数据存取频率是“热”还是“冷”。根据本文中所描述的实施例,当需要分配新页面时,可实施任何合适高速缓存方法以确定换出哪个(哪些)页面。合适高速缓存方法的实例包含但不限于先进先出(FIFO)、后进先出(LIFO)、最近最少使用(LRU)、最不常用(LFU)、时间感知LRU(TLRU)、轮询(RR)等。
为了实施高速缓存逻辑,系统200可进一步包含控制器240(例如,图1的存储器子系统控制器115)内部的一组寄存器。更具体来说,所述一组寄存器可被用来管理页面何时可被逐出(即,移动到易失性存储器)或被高速缓存(即,移动到非易失性存储器中)。例如,所述一组寄存器可包含寄存器241到245,其中寄存器241“pmr_nvm_size”指示PMR区222的大小,寄存器242“pmr_vm_size”指示PMR区212的大小,寄存器243“pmr_page_size”指示PMR区212的每一页面的大小,寄存器244“pmr_num_pages”指示PMR区212的页面数目,且寄存器245“pmr_caching_control”通过启用合适高速缓存方法的选择来控制数据高速缓存。
所述一组寄存器可包含图2中未描绘的额外寄存器。例如,如下文将参考图7进一步详细地描述,可定义称为“pmr_sequential_write_threshold”及“pmr_sequential_read_threshold”的控制寄存器以选择用以表示循序存取的高置信度的值。作为另一实例,如下文将参考图7进一步详细地描述,可定义实际度量寄存器“pmr_sequential_read_count”及“pmr_sequential_write_count”。
高速缓存逻辑可被用来响应于接收用以执行数据操作(例如,写入及/或读取)的PMR存取请求而执行所述数据操作。更具体来说,如果对PMR中的位置的存取(“PMR存取位置”)是页面常驻的(“命中”),那么可避免调用逐出过程,且如果PMR存取位置不是页面常驻的(“未命中”),那么可调用固件以管理逐出过程。为了确定PMR存取位置是命中还是未命中,系统200可进一步包含高速缓存查找组件250。高速缓存查找组件250可维持高速缓存查找数据结构(例如,高速缓存查找表)。在一些实施例中,高速缓存查找组件250包含内容可寻址存储器(CAM)装置。高速缓存查找组件250可产生用来测量存取频率(即,数据温度)的元数据。下文将参考图4进一步详细地描述关于使用高速缓存机制执行数据操作的进一步细节。
高速缓存逻辑可进一步被用来管理关闭及/或启动。更具体来说,高速缓存逻辑可被用来响应于检测到关闭事件而管理关闭,且高速缓存逻辑可被用来响应于检测到启动事件而管理启动。下文将参考图5及6进一步详细地描述关于管理关闭及/或启动的进一步细节。
系统200可被用来启用(若干)任何合适应用程序。例如,系统200可被用来保存日志结构化文件系统的元数据。更具体来说,系统200可被日志记录应用程序用来将PMR区222声称为日志区域。日志记录应用程序不知晓系统200的底层复杂性,且系统200不知晓日志记录应用程序(以及可在系统200内启用的其它特定应用程序)。然而,系统200可被设计成包含对于实施日志记录应用程序来说是最优的组件。
日志记录应用程序大多可为写入。在写入期间,一旦PMR区212中的页面已满,就可将其逐出/写入到PMR区222。写入性能可与NVDIMM一样快,且比逻辑块寻址(LBA)更快。由于由PMR暴露的容量超过PMR区212的可用存储器(例如,32MB),因此从非易失性存储器装置220回收页面可能很慢,但日志通常是只写的且因此将不会招致惩罚。在崩溃恢复期间可使用读取,但那是相当慢的操作且性能并不重要。如果读取正在发生,那么其可为循序的使得PMR区212可被预期页面请求填充。元数据可与数据共存,因此元数据可在故障转移期间跟随数据。下文将参考图7进一步详细地描述关于日志记录应用程序的进一步细节。
可考虑数个考虑因素以确保恰当的PMR操作及性能。一个考虑因素是启动及关闭。例如,由于PMR是持久的,因此可提供特殊的启动及关闭解决方案以使“状态”与主机同步。主机可能不知晓致使PMR不“就绪”或可用的事情,例如停电或存储器退化。因此,根据本文中所描述的实施例,可提供用以向主机通知或传达特定PMR状态或就绪的机制。更具体来说,可定义指示“%就绪的特殊状态寄存器”,其中0%到100%的标度不仅给出“未就绪”的指示,而且给出距“就绪”还有多长时间的线性估计。这种寄存器改变状态的通知可通过异步事件通知(AEN)来完成,其是定义为例如NVMe规范的部分的机制。因此,使用PMR能力的主机应用程序可在一天开始时及在任何AEN时观察PMR就绪寄存器作为到任何PMR操作的入口或冒数据丢失的风险。应注意,启动时间及PMR就绪时间可能因PMR大小而异。为了确保完整性及与主机同步,可使用存储器区域散列。例如,主机可保持其自身的散列且在100%就绪时,可与散列的装置版本进行比较。散列也可存储在系统(例如SSD)的存储(例如,NAND)侧上(或甚至在另一存储装置上)。可基于使PMR进入就绪或可用状态所需的动作而估计PMR就绪或可用时间。
另一考虑因素是AEN。AEN本身并不直接与利用PMR的应用程序通信。相反,AEN通常通知存储器恰好附接到的存储驱动程序。由于PMR应用程序不是存储驱动程序,因此主机上的存储堆叠中与PMR应用程序通信的瘦驱动程序可被用来使用AEN机制(例如,通过采用装置映射程序)管理此类事件的传递。更具体来说,瘦驱动程序可检测与PMR相关的相关AEN事件且将相关AEN事件发信号通知给恰当PMR驱动程序。
另一考虑因素是退化的能力。例如,在停电的情况下,可能重要的是具有一种机制,能够提供足够时间来写入未提交到非易失性存储器的任何数据。例如,如上文参考图2所描述,备用电容器可被用来存储能量以在停电的情况下启用数据写入。在其中PMR被实施为易失性存储器装置(例如,DRAM)上的电源保护区的实施例中,PMR可依赖于例如电容器的机制来在停电的情况下启用到非易失性存储器(例如,NAND快闪存储器)的数据写入。然而,电容器可能随着时间的推移而退化,且因此负面地影响电容器在停电事件期间提供数据写入支持的能力。为了确保恰当PMR操作,可采用周期性电容器检查(“CAP检查”)。此类CAP检查可验证在停电的情况下存在足够能量,使得所述装置可具有足够时间来确保当前存储在易失性存储器(例如,DRAM)中的数据可被成功地写入到非易失性存储器(例如,NAND快闪存储器)中。下文将参考图7描述关于此类CAP检查的进一步细节。
可定义多种操作级别或模式以符合CAP条件。例如,所述模式可包含部分退化的PMR容量减小模式(即,可减少所使用PMR存储器的量)及只读模式(例如,当PMR不再受(若干)电容器保护时)。这个事件可通过AEN报告给主机且由上述相同的瘦驱动程序来管理。因此,AEN通知可使主机能够调整正使用的存储器的量、完全停止使用存储器、对存储器进行备份等。
如上文所提及,可存在其中发生某种退化的情况,且有必要使用主机调节PMR大小。情况的实例包含但不限于电容器退化、非易失性存储器(例如,NAND)容量减小、易失性存储器(例如,DRAM)容量减小及/或无法使用错误校正码(ECC)解决的高错误率。为了解决此类情况,可使用用以基于情况的严重性而指定PMR大小的机制。更具体来说,所述机制可包含寄存器。例如,如果所述装置已失去可靠地保护例如现存PMR的50%的能力,那么可各自指示只读的PMR范围(先前存储到非易失性存储器且仍可存取)及仍然能够读取/写入的另一区。在严重情况下,所述范围可完全是只读的或甚至是“离线的”。
另一考虑因素是性能度量定制。例如,在一些例子中可能有用的是,对于具有不同优先级的不同应用程序具有带有定制性能度量的PMR区。为了实现这一点,可定义控制寄存器连同主机与装置之间的协议协定以启用区(例如,地址范围)连同性能度量。性能度量的实例包含但不限于“最大性能/吞吐量”(例如,如果区被标记为最大性能/吞吐量,那么容许持续存取以实现最大吞吐量)“最低延时”(例如,如果区被标记为最低延时,那么可在存取时优先化所述区)、“只读”(例如,如果区被标记为只读,那么可确保数据已被写入到非易失性存储器(例如,NAND快闪存储器)且不允许任何写入)及“平衡的性能”。
与性能退化相关的另一考虑因素是“脏PMR行”,其中自上次刷新非易失性存储器(例如,NAND快闪存储器)以来内容已发生变化。与其中保护PMR的能力降低的退化操作模式相关,可采用与每一PMR“行”相关联的额外元数据,其指示所述行是否为“脏”。如果元数据指示“脏PMR行”,那么主机已以某种方式修改内容。在异步停电(APL)的情况下,脏PMR行可能成为不利因素。然而,PMR在退化状态下的操作可通过跟踪“脏”PMR行的百分比与将“脏”行写入到NAND所花费的时间来延长。例如,如果存在1,000个受管理PMR行,但可处置仅500个,那么未完成的脏行的数目不可超过500个。
图4是根据本公开的一些实施例的用以管理持久存储器区(PMR)存取以使用高速缓存机制执行数据操作的实例方法400的流程图。方法400可由处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法400由图1的PMR组件113来执行。尽管以特定顺序或次序进行展示,但除非另有指定,否则可修改过程的次序。因此,所说明实施例应被理解为仅是实例,且所说明过程可以不同次序执行,且一些过程可并行执行。另外,可在各种实施例中省略一或多个过程。因此,并非每个实施例均需要所有过程。其它过程流程是可能的。
在操作410处,处理逻辑接收用以执行数据操作的PMR存取请求。例如,可从主机系统(例如,图1的主机系统120)接收PMR存取请求。在一些实施例中,PMR存取请求是PMR读取存取请求。在一些实施例中,PMR存取请求是PMR写入存取请求。
在操作420处,处理逻辑确定在高速缓存中是否存在页面命中。如果存在,那么处理逻辑在操作430处执行数据操作。更具体来说,数据操作可返回用于PMR读取存取请求的数据,或写入用于PMR写入存取请求的数据。如果适当,那么数据写入可直写到非易失性存储器(例如,NAND)。如果不存在,那么处理逻辑在操作440处提取页面,且接着前进到操作430以执行数据操作。在一些实施例中,在操作440处提取页面包含逐出页面。
图5是根据本公开的一些实施例的用以使用高速缓存机制管理与持久存储器区(PMR)相关联的关闭过程的实例方法500的流程图。方法500可由处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法500由图1的PMR组件113来执行。尽管以特定顺序或次序进行展示,但除非另有指定,否则可修改过程的次序。因此,所说明实施例应被理解为仅是实例,且所说明过程可以不同次序执行,且一些过程可并行执行。另外,可在各种实施例中省略一或多个过程。因此,并非每个实施例均需要所有过程。其它过程流程是可能的。
在操作510处,处理逻辑检测关闭事件。例如,检测关闭事件可包含检测停电信号或关闭信号。
在操作520处,确定在高速缓存中是否存在任何未提交的PMR数据。例如,确定是否存在任何“脏”页面。如果存在,那么在操作530处,处理逻辑将未提交的PMR数据复制到非易失性存储器以在由于关闭事件而停电之前保护数据。在一些实施例中,非易失性存储器是NAND存储器。接着,处理逻辑在操作540处完成关闭。
如果处理逻辑未确定存在任何高速缓存数据或PMR数据,那么处理逻辑在操作550处将日志及状态数据写入到非易失性存储器。在操作550处写入的数据应足以使PMR的状态(例如,高速缓存内容)能够恢复到其在关闭事件之前的状态。所述过程接着前进到操作530以将日志及状态数据复制到非易失性存储器且在操作540处完成关闭。
图6是根据本公开的一些实施例的用以使用高速缓存机制管理与持久存储器区(PMR)相关联的启动过程的实例方法600的流程图。方法600可由处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法600由图1的PMR组件113来执行。尽管以特定顺序或次序进行展示,但除非另有指定,否则可修改过程的次序。因此,所说明实施例应被理解为仅是实例,且所说明过程可以不同次序执行,且一些过程可并行执行。另外,可在各种实施例中省略一或多个过程。因此,并非每个实施例均需要所有过程。其它过程流程是可能的。
在操作610处,处理逻辑检测启动事件。例如,检测启动事件可包含检测电源启用信号。
在操作620处,处理逻辑读取存储在非易失性存储器(例如NAND)中的日志及状态数据。更具体来说,日志及状态数据被用来在启动时恢复PMR系统的状态,所述状态在关闭事件或电源故障之前被写入到非易失性存储器(例如,如上文在图5中所描述)。
在操作630处,确定在高速缓存中是否存在任何未提交的PMR数据。如果存在,那么在操作640处,处理逻辑从非易失性存储器(例如,NAND)复制未提交的PMR数据。接着,处理逻辑在操作650处完成启动。如果处理逻辑未确定存在任何未提交的PMR数据,那么处理逻辑前进到操作650以完成启动操作。
图7是根据本公开的一些实施例的用以使用启用弹性持久存储器区(PMR)的系统实施日志记录应用程序操作的实例方法700的流程图。方法700可由处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法700由图1的PMR组件113来执行。尽管以特定顺序或次序进行展示,但除非另有指定,否则可修改过程的次序。因此,所说明实施例应被理解为仅是实例,且所说明过程可以不同次序执行,且一些过程可并行执行。另外,可在各种实施例中省略一或多个过程。因此,并非每个实施例均需要所有过程。其它过程流程是可能的。
在操作702处,处理逻辑确定在高速缓存中是否存在PMR页面。对于日志记录应用程序,所述页面应在高速缓存中。如果PMR页面未被确定为在高速缓存中,那么处理逻辑在操作704处确定在高速缓存中是否存在任何空间。如果不存在,那么处理逻辑在操作706处逐出页面,且接着在操作708处恢复所需页面。如果在高速缓存中存在空间,那么所述过程跳到在操作708处恢复所需页面。
在处理逻辑在操作702处确定在高速缓存中是否存在PMR页面的情况下或在操作708处恢复所需页面之后,处理逻辑在操作710处确定与日志记录应用程序操作相关联的存取是否为写入存取。如果是,那么处理逻辑在操作712处将数据写入到PMR页面中(在高速缓存中),且接着在操作714处确定PMR页面是否已满。如果存取是写入循序存取,那么可相应地更新度量。如果不是,那么所述过程结束。然而,如果在操作714处PMR页面已满,那么在所述过程结束之前在操作716处存档PMR页面。存档PMR页面可包含将PMR页面标记为空。
实例度量可为最后十次存取是到循序地址的写入。如上文参考图2所提及,可定义称为“pmr_sequential_write_threshold”及“pmr_sequential_read_threshold”的控制寄存器以选择将被选择(例如,通过固件)以表示循序存取的高置信度的值。接着,可定义作为实际度量寄存器的两个额外寄存器“pmr_sequential_read_count”及“pmr_sequential_write_count”。当读取存取或写入存取是循序的时,这些寄存器可分别递增。如果读取或写入不是循序的(地址+1),那么对应度量寄存器被清零。更新度量寄存器可由硬件及/或固件来完成。
如果处理逻辑在操作710处未确定与日志记录应用程序操作相关联的存取是写入存取,那么所述存取是读取存取,且处理逻辑在操作718处返回读取数据。如果所述存取是读取循序存取,那么可相应地更新度量。接着,处理逻辑在操作720处确定在页面的末尾处是否存在存取。如果不存在,那么所述过程结束。然而,如果在页面的末尾处存在存取,那么在日志记录应用程序操作终止之前,处理逻辑在操作722处加载下一循序页面。即,如果读取存取是循序的,那么可在预期未来的循序读取存取时预填充高速缓存。
图8说明根据本公开的一些实施例的实例电源系统800。如所展示,电源系统800包含主机连接器组件810、电源管理组件820及配备有弹性持久存储器区(PMR)的子系统组件830,例如图1的子系统110。在一些实施例中,子系统组件830包含NVMe SSD装置,且主机连接器组件810是NVMe主机连接器。
电源管理组件820与存储电压(Vstrg)相关联且可包含电源管理集成电路(PMIC)子组件及浪涌/备份子组件。子系统组件830可包含控制器组件832(例如,专用集成电路(ASIC)控制器)。电源管理组件820可经由例如内部集成电路(I2C)协议与控制器组件832可操作地耦合。子系统组件830可进一步包含NAND 834及DDR 836。PMR区835被分配给NAND834且PMR区837被分配给DDR。控制器组件832可操作地耦合到NAND 834及DDR 836。
在这个实例中,PMR区837是受由电容器释放的能量保护的电源保护区。组件810到830可彼此通信以启用电容器(CAP)检查或测试来确保PMR 837的恰当操作。更具体来说,控制器组件832可与电源管理组件820周期性地通信以触发CAP检查,接收CAP检查的结果,且基于所述结果而确定PMR 837的可用性或状态。例如,在CAP检查期间,电容器可通过外部电阻器从连接到电容器用于能量存储及释放的第一引脚放电到连接外部电阻器用于CAP测试的第二引脚。晶体管(例如,场效应晶体管(FET))可连接到第二引脚及连接到接地的第三引脚。当起始CAP测试寄存器位被置位时(例如,经由I2C接口),第二引脚可通过所述晶体管连接到接地以用于能量释放。更具体来说,可在初始时间停止电源,此时电容器可从初始电压开始放电且内部定时器开始计数。内部定时器可保持计数,直到存储电压在结束时间达到阈值为止,此时内部定时器可停止计数且可测量结束电压。因此,放电时间可作为初始时间与结束时间之间的差来测量,且电压放电可作为初始电压与结束电压之间的差来测量。
图9说明计算机系统900的实例机器,可在所述机器内执行一组指令以使所述机器执行本文中所描述的任何一或多种方法论。在一些实施例中,计算机系统900可对应于包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)的主机系统(例如,图1的主机系统120),或可用来执行控制器的操作(例如,执行操作系统以执行对应于图1的PMR组件113的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、内联网、外联网及/或因特网中的其它机器。所述机器可在客户端-服务器网络环境中作为服务器或客户端机器操作,在对等(或分布式)网络环境中作为对等机器操作或者在云计算基础结构或环境中作为服务器或客户端机器操作。
所述机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设施、服务器、网络路由器、交换机或网桥,或者能够执行一组指令(循序或以其它方式)的任何机器,所述指令指定待由那个机器采取的动作。此外,虽然说明单个机器,但术语“机器”也应被理解为包含个别地或联合地执行一组(或多组)指令以执行本文中所论述的任何一或多种方法论的任何机器集合。
实例计算机系统900包含处理装置902、主存储器904(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或RDRAM等)、静态存储器906(例如,快闪存储器、静态随机存取存储器(SRAM)等)及数据存储系统918,其经由总线930彼此通信。
处理装置902表示一或多个通用处理装置,例如微处理器、中央处理单元或类似者。更特定来说,所述处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或实施其它指令集的处理器、或实施指令集组合的处理器。处理装置902还可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似者。处理装置602经配置以执行用于执行本文中所论述的操作及步骤的指令926。计算机系统900可进一步包含用以通过网络920通信的网络接口装置908。
数据存储系统918可包含机器可读存储媒体924(也被称为计算机可读媒体),其上存储有体现本文中所描述的任何一或多种方法论或功能的一或多组指令626或软件。指令926在由计算机系统900执行期间也可完全或至少部分地驻留在主存储器904及/或处理装置902内,主存储器904及处理装置902也构成机器可读存储媒体。机器可读存储媒体924、数据存储系统918及/或主存储器904可对应于图1的存储器子系统110。
在一个实施例中,指令926包含用以实施对应于VC组件(例如,图1的PMR组件113)的功能性的指令。虽然机器可读存储媒体924在实例实施例中被展示为单个媒体,但术语“机器可读存储媒体”应被理解为包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”也应被理解为包含能够存储或编码用于由机器执行的一组指令且使机器执行本公开的任何一或多种方法论的任何媒体。因此,术语“机器可读存储媒体”应被理解为包含但不限于固态存储器、光学媒体及磁性媒体。
已根据对计算机存储器内的数据位的操作的算法及符号表示呈现前述详细描述的一些部分。这些算法描述及表示是数据处理领域的技术人员用来最有效地向所属领域的其他技术人员传达他们工作的实质的方式。算法在本文且通常被视为导致所期望结果的自洽操作序列。所述操作是需要对物理量进行物理操纵的操作。通常,尽管不是必需的,但这些量采取能够被存储、组合、比较及以其它方式操纵的电或磁性信号的形式。主要出于通用的原因,将这些信号称为位、值、元素、符号、字符、项目、数字或类似者有时被证明是方便的。
然而,应记住,所有这些及类似术语均与适当物理量相关联且仅仅是应用于这些量的方便标签。本公开可涉及计算机系统或类似电子计算装置的动作及过程,其将在计算机系统寄存器及存储器内表示为物理(电子)量的数据操纵及转换成在计算机系统存储器或寄存器或其它此类信息存储系统内类似地表示为物理量的其它数据。
本公开还涉及一种用于执行本文中的操作的设备。这个设备可出于预期目的而专门构建,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的磁盘,包含软盘、光盘、CD-ROM及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或者适于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文中所呈现的算法及显示并非固有地与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或可证明构建更专门的设备来执行所述方法是方便的。多种这些系统的结构将如下文描述中所阐述那样出现。另外,本公开未参考任何特定编程语言进行描述。将明白,可使用多种编程语言来实施如本文中所描述的本公开的教示。
本公开可作为可包含其上存储有指令的机器可读媒体的计算机程序产品或软件提供,所述指令可用来对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,本公开的实施例已参考其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中所阐述的本公开的实施例的更广泛精神及范围的情况下对本公开进行各种修改。因此,说明书及附图应被视为具有说明性意义而非限制性意义。
Claims (20)
1.一种系统,其包括:
第一存储器装置,其具有分配为具有第一组页面的第一持久存储器区(PMR)的区;
第二存储器装置,其包括具有分配为具有第二组页面的第二PMR区的区的非易失性存储器装置;及
至少一个处理装置,其可操作地耦合到所述第一存储器装置及所述第二存储器装置,以实施PMR机制以使所述第二PMR区能够通过所述第一PMR区来存取。
2.根据权利要求1所述的系统,其中所述第一存储器装置是易失性存储器装置,且其中所述第一PMR区是所述易失性存储器装置上的电源保护区。
3.根据权利要求1所述的系统,其中所述易失性存储器装置包含DDR装置。
4.根据权利要求1所述的系统,其进一步包括控制器内部的一组密钥寄存器,其中所述至少一个处理装置进一步用以实施基于所述一组密钥寄存器来管理页面逐出的高速缓存机制。
5.根据权利要求4所述的系统,其中所述一组密钥寄存器包括至少一个:指示所述第一PMR区的大小的密钥寄存器、指示所述第二PMR区的大小的密钥寄存器、指示所述第一PMR区的每一页面的大小的密钥寄存器、指示所述第一PMR区的页面的数目的密钥寄存器或控制PMR数据的恢复及逐出的密钥寄存器。
6.根据权利要求4所述的系统,其中所述至少一个处理装置进一步用以:
接收用以执行数据操作的PMR存取请求;及
使用所述高速缓存机制执行所述数据操作。
7.根据权利要求4所述的系统,其中所述至少一个处理装置进一步用以使用所述高速缓存机制管理关闭或启动中的至少一者。
8.一种方法,其包括:
由处理装置确定与日志记录应用程序操作相关联的存取请求包括写入存取请求,其中所述处理装置可操作地耦合到第一存储器装置及第二存储器装置,所述第一存储器装置具有分配为具有第一组页面的第一持久存储器区(PMR)的区,所述第二存储器装置包括具有分配为具有第二组页面的第二PMR区的区的非易失性存储器装置;及
由所述处理装置将数据写入在PMR页面中以满足所述写入存取请求。
9.根据权利要求8所述的方法,其中所述第一存储器装置是易失性存储器装置,且其中所述第一PMR区是所述易失性存储器装置上的电源保护区。
10.根据权利要求8所述的方法,其进一步包括在确定所述存取请求包括写入存取请求之前由所述处理装置确定所述PMR页面在高速缓存中。
11.根据权利要求8所述的方法,其进一步包括:
由所述处理装置确定所述PMR页面不在高速缓存中;及
在确定所述PMR页面不在高速缓存中之后,在确定所述存取请求包括写入存取请求之前由所述处理装置恢复所需页面。
12.根据权利要求8所述的方法,其进一步包括:
响应于将所述数据写入在所述PMR页面中,由所述处理装置确定所述PMR页面已满;
由所述处理装置将所述PMR页面存档到所述第二存储器装置;及
由所述处理装置终止所述日志记录应用程序操作。
13.根据权利要求8所述的方法,其进一步包括:
响应于将所述数据写入在所述PMR页面中,由所述处理装置确定所述PMR页面未满;及
由所述处理装置终止所述日志记录应用程序操作。
14.根据权利要求8所述的方法,其中写入所述数据进一步包括更新度量。
15.一种包括指令的非暂时性计算机可读存储媒体,所述指令在由处理装置执行时使所述处理装置执行包括以下各项的操作:
确定与日志记录应用程序操作相关联的存取请求包括读取存取请求,其中所述处理装置可操作地耦合到第一存储器装置及第二存储器装置,所述第一存储器装置具有分配为具有第一组页面的第一持久存储器区(PMR)的区,所述第二存储器装置包括具有分配为具有第二组页面的第二PMR区的区的非易失性存储器装置;及
返回读取数据以满足所述读取存取请求。
16.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述操作进一步包括在确定所述存取请求包括读取存取请求之前,确定所述PMR页面在高速缓存中。
17.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述操作进一步包括:确定所述PMR页面不在高速缓存中;及
在确定所述PMR页面不在高速缓存中之后,在确定所述存取请求包括读取存取请求之前恢复所需页面。
18.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述操作进一步包括:
响应于返回所述读取数据,确定读取存取在所述PMR页面的末尾处;
响应于确定读取存取在所述PMR页面的末尾处,加载下一循序页面;及
终止所述日志记录应用程序操作。
19.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述操作进一步包括:
响应于返回所述读取数据,确定读取存取不在所述PMR页面的末尾处;及
终止所述日志记录应用程序操作。
20.根据权利要求8所述的方法,其中返回所述读取数据进一步包括更新度量。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/232,971 | 2021-04-16 | ||
US17/232,971 US11704029B2 (en) | 2021-04-16 | 2021-04-16 | Elastic persistent memory regions |
PCT/US2022/025098 WO2022221715A1 (en) | 2021-04-16 | 2022-04-15 | Elastic persistent memory regions |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117157631A true CN117157631A (zh) | 2023-12-01 |
Family
ID=83602370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280028662.2A Pending CN117157631A (zh) | 2021-04-16 | 2022-04-15 | 弹性持久存储器区 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11704029B2 (zh) |
EP (1) | EP4323876A4 (zh) |
CN (1) | CN117157631A (zh) |
WO (1) | WO2022221715A1 (zh) |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9715453B2 (en) * | 2014-12-11 | 2017-07-25 | Intel Corporation | Computing method and apparatus with persistent memory |
US9747174B2 (en) | 2015-12-11 | 2017-08-29 | Microsoft Technology Licensing, Llc | Tail of logs in persistent main memory |
US9921756B2 (en) * | 2015-12-29 | 2018-03-20 | EMC IP Holding Company LLC | Method and system for synchronizing an index of data blocks stored in a storage system using a shared storage module |
US10466906B2 (en) | 2017-12-19 | 2019-11-05 | Western Digital Technologies, Inc. | Accessing non-volatile memory express controller memory manager |
US10564872B2 (en) | 2018-06-29 | 2020-02-18 | Western Digital Technologies, Inc. | System and method for dynamic allocation to a host of memory device controller memory resources |
US11301331B2 (en) | 2018-09-20 | 2022-04-12 | Samsung Electronics Co., Ltd. | Storage device and operating method of storage device |
US10909012B2 (en) * | 2018-11-12 | 2021-02-02 | H3 Platform, Inc. | System having persistent memory |
US20200201787A1 (en) | 2018-12-20 | 2020-06-25 | Intel Corporation | Scalable multi-key total memory encryption engine |
US11074189B2 (en) * | 2019-06-20 | 2021-07-27 | International Business Machines Corporation | FlatFlash system for byte granularity accessibility of memory in a unified memory-storage hierarchy |
US20200226066A1 (en) * | 2020-03-27 | 2020-07-16 | Intel Corporation | Apparatus and method for efficient management of multi-level memory |
US20210389885A1 (en) * | 2020-06-16 | 2021-12-16 | Western Digital Technologies, Inc. | Fast Recovery For Persistent Memory Region (PMR) of a Data Storage Device |
-
2021
- 2021-04-16 US US17/232,971 patent/US11704029B2/en active Active
-
2022
- 2022-04-15 CN CN202280028662.2A patent/CN117157631A/zh active Pending
- 2022-04-15 WO PCT/US2022/025098 patent/WO2022221715A1/en active Application Filing
- 2022-04-15 EP EP22789047.2A patent/EP4323876A4/en active Pending
-
2023
- 2023-05-23 US US18/200,685 patent/US12118220B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP4323876A1 (en) | 2024-02-21 |
US12118220B2 (en) | 2024-10-15 |
US11704029B2 (en) | 2023-07-18 |
WO2022221715A1 (en) | 2022-10-20 |
US20230297256A1 (en) | 2023-09-21 |
US20220334740A1 (en) | 2022-10-20 |
EP4323876A4 (en) | 2024-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10049055B2 (en) | Managing asymmetric memory system as a cache device | |
CN109643275B (zh) | 存储级存储器的磨损均衡设备和方法 | |
CN114730300B (zh) | 对区命名空间存储器的增强型文件系统支持 | |
CN113126907B (zh) | 用于存储器装置的异步电力损失恢复 | |
CN114647375B (zh) | 使装置具备增强型持久性存储器区存取能力 | |
US11714748B1 (en) | Managing power loss recovery using an oldest section write policy for an address mapping table in a memory sub-system | |
US20240143511A1 (en) | Dynamically sized redundant write buffer with sector-based tracking | |
US12086062B2 (en) | Managing power loss in a memory device | |
US11599466B2 (en) | Sector-based tracking for a page cache | |
US11704247B2 (en) | Enhanced duplicate write data tracking for cache memory | |
CN112860182B (zh) | 用于写回合并的位屏蔽有效扇区 | |
US12118220B2 (en) | Elastic persistent memory regions | |
CN112835814A (zh) | 基于高速缓存的存储器读取命令 | |
US11392505B2 (en) | Rebuilding logical-to-physical address mapping with limited memory | |
US11768631B2 (en) | Rapid reliable file system access |
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 |