CN111373383A - 存储器高速缓存管理 - Google Patents
存储器高速缓存管理 Download PDFInfo
- Publication number
- CN111373383A CN111373383A CN201980005905.9A CN201980005905A CN111373383A CN 111373383 A CN111373383 A CN 111373383A CN 201980005905 A CN201980005905 A CN 201980005905A CN 111373383 A CN111373383 A CN 111373383A
- Authority
- CN
- China
- Prior art keywords
- memory
- priority
- host data
- host
- volatile 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.)
- Granted
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/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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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/0893—Caches characterised by their organisation or structure
-
- 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/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- 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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- 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/7207—Details relating to flash memory management management of metadata or control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本文中描述了用于管理非易失性存储装置中的IS内存的技术及与其一起使用的方法。所述非易失性存储装置可包含非易失性内存,其中所述非易失性内存的一部分被指定为中间存储器(IS)内存且所述非易失性内存的另一部分被指定为主存储器(MS)内存。所述IS内存可具有比所述MS内存更低的读取及写入时延。主机装置可在具有优先级地址中的一个的主机数据接收优先级以优先于其它主机数据保留在IS内存中的指示下将优先级地址提供到内存控制器。
Description
背景技术
包含非易失性内存的存储装置可包含所述非易失性内存的指定为中间存储器(IS)内存的一部分和所述非易失性内存的指定为主存储器(MS)内存的另一部分。IS内存可在存储装置中使用以提供更快写入吞吐量,且还可用作在将主机数据存储在MS中之前迅速存储所述主机数据的安全区。IS内存还可充当使得存储在IS内存内的热数据能够极迅速地被存取的非易失性内存高速缓存。IS内存还可被称为高速缓存。
IS内存可具有比MS内存更低的存储密度。IS内存每个位可比MS内存更昂贵。IS内存可具有比MS内存更高的耐久性。在一些架构中,IS内存的总存储容量可能显著小于MS内存。举例而言,更昂贵的IS内存可占用存储装置的总存储预算的不到百分之十。
作为一个实例,IS内存可包含单层级单元(single-level cell,SLC)内存,其中每内存单元存储单个数据位。SLC内存可为闪存单元。IS内存可替代地或另外包含存储级内存(storage class memory,SCM)。在此上下文中,SCM的实例为ReRAM、相变内存(Phase-Change Memory,PCM)或磁性RAM。相比之下,较便宜MS内存(其将很可能占用总存储器预算的大于百分之九十)可包含多层级单元(multi-level cell,MLC)内存,其中每内存单元存储两个或多于两个位。MLC内存可为闪存单元。如本文中使用的术语,MLC内存可包含内存单元,其中每内存单元存储两个、三个或四个数据位,或可能甚至超过四个数据位。相应地,如本文中使用的术语,术语MLC内存还涵盖三层级单元(TLC)内存和四层级单元(QLC)内存。
应注意,由于是内存可具有比MS内存更低的写入时延,所以主机数据可初始地写入IS内存。然而,归因于IS内存的受限存储容量,主机数据通常从IS内存再定位到MS内存以在IS内存中释放空间。将数据从IS内存传送到MS内存的过程称作“再定位”。用于执行再定位的常规技术通常是基于简单试探法,例如先进先出(first-in first-out,FIFO),或基于老化算法。
附图说明
图1A是3D堆叠非易失性内存装置中的块集的透视图。
图1B是例如图1A的3D堆叠非易失性内存装置的非易失性内存装置的框图。
图2是描绘连接到主机装置的非易失性存储装置的一个实施例的框图。
图3是例如图1A、1B或2的存储装置的存储装置的一个实施例的框图。
图4是操作非易失性存储器的过程的一个实施例的流程图。
图5A描绘优先级地址表的一个实施例。
图5B是操作非易失性存储器的过程的一个实施例的流程图。
图6A是优先级主机数据应用程序将优先级地址集合提供到内存控制器的过程的一个实施例的流程图。
图6B是内存控制器更新优先级地址表的过程的一个实施例的流程图。
图7是优先级主机数据应用程序基于用户选择了解接收优先级以保留在IS内存中的主机数据的过程的流程图。
图8A描绘允许用户指明优先级主机数据的用户界面(UI)的一个实施例。
图8B描绘允许用户指明优先级主机数据以及优先级权重的UI的实施例。
图9是优先级主机数据应用程序确定接收优先级以保留在IS内存中的主机数据的过程的流程图。
图10A是内存控制器基于优先级地址表来管理IS内存的过程的一个实施例的流程图。
图10B是内存控制器基于优先级地址表来管理IS内存的过程的一个实施例的流程图,其中非优先级主机数据有可能直接写入MS内存(绕过IS内存)。
图11是基于优先级地址的再定位(或冲刷)操作的过程的一个实施例的流程图。
图12是内存控制器基于优先级地址表执行垃圾收集的过程的一个实施例的流程图。
具体实施方式
本文中描述了用于管理非易失性存储装置中的IS内存的技术及与其一起使用的方法。由于IS内存还可被称为高速缓存,这类管理技术还可被称为存储器高速缓存管理。所述非易失性存储装置可包含非易失性内存,其中所述非易失性内存的一部分被指定为中间存储器(IS)内存且所述非易失性内存的另一部分被指定为主存储器(MS)内存。在一个实施例中,IS内存具有比MS内存更低的写入时延。在一个实施例中,IS内存具有比MS内存更低的读出时延。举例来说,IS内存可包含单层级单元(SLC)型闪存,其中每内存单元存储单个数据,且MS内存可包含多层级单元(MLC)型闪存,其中每内存单元存储两个或多于两个数据位。IS内存不限于闪存。举例来说,IS内存可包含但不限于ReRAM、相变内存或磁性RAM。在此上下文中的ReRAM、相变内存或磁性RAM可被称为“存储级内存”。
在一个实施例中,设备包括主机装置和非易失性存储装置。非易失性存储装置具有内存控制器和非易失性内存单元。在一个实施例中,内存控制器经组态以将非易失性内存单元中的一些用作IS内存,且将其它非易失性内存单元用作MS内存。通常,主机装置可将主机数据提供到内存控制器以存储在非易失性存储装置中。
主机装置的实施例在具有地址(例如,逻辑块地址)中的一个的主机数据接收优先级以优先于其它主机数据保留在IS内存中的指示下将所述地址提供到内存控制器。地址可能来自主机系统的逻辑地址空间。在一个实施例中,主机系统具有知道接收优先级以保留在非易失性存储装置的IS内存中的主机数据的优先级主机数据应用程序。优先级主机数据应用程序存取主机数据的地址(例如,逻辑地址)且在内存控制器向具有所述地址的主机数据提供优先级以保留在IS内存中的指示下将地址提供到内存控制器。优先级主机数据应用程序可使用带内通信提供所述地址,所述带内通信使用用于存取内存系统上的非易失性内存的内存存取协议。内存控制器可将所述地址存储在优先级地址表中。内存控制器可基于优先级地址表管理IS内存。
本文中,接收优先级以保留在IS内存中的主机数据在本文中被称作“优先级主机数据”。其它主机数据(其尚未指明为接收优先级以保留在IS内存中)在本文中被称作“非优先级主机数据”。本文中,“优先级主机数据”的地址被称为“优先级地址”。本文中,“非优先级主机数据”的地址被称为“非优先级地址”。主机数据地址可以是逻辑地址,在此情况下可使用术语“优先级逻辑地址”和“非优先级逻辑地址”。主机数据的地址不需要为逻辑地址。
应注意,向优先级主机数据提供优先级以保留并不意味着非优先级主机数据不能写入IS内存。内存控制器可将优先级和非优先级两个写入IS内存,且随后将非优先级主机数据再定位到MS内存。内存控制器的实施例将非优先级主机数据从IS内存再定位到MS内存。内存控制器的实施例将优先级主机数据保持在IS内存中(在一定程度上空间是IS内存中可用的)而非将优先级主机数据再定位到MS内存。应注意,如果“早期”主机数据是优先级主机数据且“较新”主机数据是非优先级主机数据,那么即使已经在IS内存中保留比其它主机数据久得多的主机数据也可保留在IS内存中。这与可再定位早期主机数据以为较新主机数据让出空间的常规FIFO技术形成对比。
根据本发明技术的某些实施例,为了知道优先级主机数据,优先级主机数据应用程序提供用户界面,所述用户界面允许用户指明哪些主机数据接收优先级以保留在非易失性存储装置的IS内存中。用户可选择文件或程序接收优先级以保留在IS内存中,如所提及的IS内存具有比MS内存更快的读取性能。这可允许在选择接收优先级以保留在IS内存中的主机数据时考虑读取性能。一个实施例的用户界面允许用户将优先级权重提供到优先级主机数据。因此,用户可具有若干软件应用程序,所述软件应用程序接收优先级以保留在IS内存中,但在IS内存中不存在用于所有应用程序的充足空间的情况下具有不同优先级权重。在一个实施例中,优先级主机数据应用监测主机数据的使用以知道接收优先级以保留在IS内存中的主机数据。
在一实施例中,不需要对主机装置驱动器的任何修改。优先级主机数据应用程序可例如将把优先级地址发送到内存控制器的请求传递到操作系统(O/S)应用程序编程接口(application programming interface,API)。O/S API可与文件系统介接,所述文件系统可指导装置驱动器与内存控制器通信。装置驱动器可根据常规内存存取协议操作以用于与内存控制器通信。应注意,对于一些计算机系统,不能修改装置驱动器,或至少极难以修改装置驱动器。因此,优先级主机数据应用程序提供一种使内存控制器知道优先级地址而无需修改装置驱动器的方式。
此外,实施例的技术解决方案与现存非易失性内存存取协定兼容。举例来说,在一个实施例中,NVMe协议用作内存存取协议以供主机系统存取非易失性存储系统中的IS内存和MS内存。因此,在一个实施例中,主机系统具有NVMe主机控制器(亦称为NVMe装置驱动器),且内存系统具有NVMe内存控制器,所述控制器各自与NVMe协议兼容。在此NVMe实例中,技术解决方案的实施例与NVMe协议兼容。注意,NVMe仅为内存存取协议的一个实例。
在以下详细描述中,参考形成其一部分且其中借助于说明示出具体说明性实施例的附图。应理解,可利用其它实施例且可作出机械和电气改变。因此,不应按限制性意义来看待以下详细描述。在以下描述中,相同的数字或参考标号将始终用于指代相同的部分或元件。
本文中所描述的技术可与多种类型的非易失性内存一起使用。一个实例为三维(3D)非易失性内存装置。然而,实施例还可在二维(2D)非易失性内存装置中实践。图1A为3D堆叠非易失性内存装置100中的块集的透视图。非易失性内存装置100在本文中还可被称作非易失性内存系统100,或更简明地称为内存系统100。非易失性内存装置100包含衬底101。衬底上有内存单元(存储元件)的示例块BLK0、BLK1、BLK2和BLK3以及具有供所述块使用的电路的外围区域104。举例来说,电路可包含可连接到所述块的控制栅极层的电压驱动器105。在一种方法中,共同驱动块中处于共同高度的控制栅极层。衬底101还可以承载块下方的电路以及沿导电路径图案化以载送电路的信号的一或多个下部金属层。所述块形成于内存装置的中间区102中。在内存系统的上部区103中,沿导电路径图案化一或多个上部金属层以载送电路的信号。每个块包括内存单元的堆叠区域,其中堆叠的交替层级表示控制栅极层。在一种可能的方法中,每个块的处于共同高度的控制栅极层彼此连接且连接到电压驱动器。虽然作为实例描绘了四个块,但可使用在x方向和/或y方向上延伸的两个或更多个块。
所述平面在x方向上的长度可表示到字线的信号路径在一或多个上部金属层中延伸的方向(例如,字线或漏极侧选择栅极(SGD)线方向),且所述平面在y方向上的宽度表示到位线的信号路径在一或多个上部金属层中延伸的方向(例如,位线方向)。z方向表示内存装置的高度。
图1B是例如图1A的3D堆叠非易失性内存装置100的非易失性内存装置的框图。所述框图还可用于2D非易失性内存装置。主机系统140具有一或多个主机处理器150和主机内存160。主机内存160可包含但不限于静态随机存取内存(SRAM)和动态随机存取内存(DRAM)。命令和数据经由接口(例如,数据总线)106在主机系统140与非易失性内存控制器122之间传送,且经由线118在内存控制器122与一或多个内存裸片108之间传送。接口106还可被称作通信接口。应注意,“非易失性内存控制器”122在本文中可更简明地被称为“内存控制器”或“控制器”。
主机系统140与内存控制器122之间的接口106可以是任何合适的接口。接口106可包含主机140与内存系统100之间的机械连接及/或电连接。接口106的实例包含但不限于安全数字(SD)、多媒体卡(MMC)、嵌入式多媒体卡(eMMC)、通用串行总线(USB)、串行高级技术附件(SATA)、光纤信道、小型计算机系统接口(SCSI)、外围组件接口(PCI),和PCI高速(PCIe)。在一个实施例中,接口106包含外围组件互连高速(PCIe)总线。在一个实施例中,内存系统100和主机系统140使用非易失性内存高速(NVMe)协议经由PCIe总线通信。NVMe是在主机系统140与非易失性内存装置100之间使用PCIe总线时可用于存取所附接的非易失性存储器的逻辑装置接口。然而,应注意,逻辑装置接口不限于NVMe。其它可能的逻辑装置接口包含但不限于高级主机控制器接口(AHCI)、SATA、SATA高速、MMC、eMMC、USB、串行连接的SCSI(SAS)光纤信道协议(FCP)和通用快闪存储器(UFS)。
在一个实施例中,非易失性内存系统100可以是基于卡的系统,例如安全数字(SD)或微安全数字(微SD)卡。在替代性实施例中,非易失性内存系统100可以是嵌入式非易失性内存装置的部分。举例来说,非易失性内存系统100可嵌入于主机系统140内,例如呈安装于个人计算机中的固态磁盘(SSD)驱动形式。
非易失性内存装置100可包含一或多个内存裸片108。图1A的块集可处于一个内存裸片108上。内存裸片108包含内存单元的内存结构126(例如内存单元阵列)、控制电路110和读/写电路128。在3D配置中,内存结构可包含图1A的块。内存结构126可经由行解码器124通过字线寻址且经由列解码器138通过位线寻址。读/写电路128包含多个感测块SB1、SB2……SBp(感测电路)且允许并行地读取或编程内存单元页。通常,内存控制器122包含在与一或多个内存裸片108相同的非易失性内存装置100(例如,可移动存储卡)中。
内存结构126中的多个内存元件可配置成使得其串联连接或使得可分别存取每一元件。以非限制性实例的方式,NAND配置中的闪存系统(NAND内存)通常含有串联连接的内存元件。NAND串是包括内存单元和选择栅极晶体管的一组串联连接的晶体管的实例。
NAND内存阵列可配置成使得阵列由多个内存串构成,其中串由共享单个位线且作为群组被存取的多个内存元件构成。替代地,内存元件可配置成使得每个元件可被单独存取,例如NOR内存阵列。NAND和NOR内存配置是示例性的,且内存元件可以其它方式来配置。
还可使用除NAND闪存之外的其它类型的非易失性内存。半导体内存装置包含易失性内存装置,例如动态随机存取内存(“DRAM”)或静态随机存取内存(“SRAM”)装置;非易失性内存装置,例如电阻性随机存取内存(“ReRAM”)、电可擦除可编程只读内存(“EEPROM”)、闪存(其还可被视为EEPROM的子集)、铁电随机存取内存(“FRAM”)和磁阻随机存取内存(“MRAM”);相变内存(例如,PCRAM);和能够存储信息的其它半导体元件。每种类型的内存装置可具有不同的配置。举例来说,闪存装置可以NAND或NOR配置来进行配置。
内存元件可由无源和/或有源元件以任何组合形成。以非限制性实例的方式,无源半导体内存元件包含ReRAM装置元件,在一些实施例中,所述ReRAM装置元件包含电阻率切换存储元件,例如反熔丝或相变材料,以及任选地转向元件,例如二极管或晶体管。相变材料可包含硫族化物材料。一个实施例使用GeTe-Sb2Te3超晶格来通过用激光脉冲(或来自另一源的光脉冲)改变锗原子的协调状态而实现非热相变。因此,编程剂量为激光脉冲。可通过阻止内存单元接收光来禁止内存单元。应注意,“脉冲”在此文件中的使用并不要求矩形脉冲,而是包含声音、电流、电压光或其它波的(连续或非连续)振动或突发。另外,以非限制性实例的方式,有源半导体内存元件包含EEPROM和闪存装置元件,在一些实施例中,所述闪存装置元件包含含有电荷存储区的元件,例如,浮动栅极、导电纳米粒子或电荷存储介电材料。
内存结构126可以是二维(2D)或三维(3D)的。内存结构126可包括一或多个内存元件(还被称为内存单元)阵列。在二维内存结构中,半导体内存元件布置于单个平面或单个内存装置层级中。通常,在二维内存结构中,内存元件布置于大体上平行于支撑内存元件的衬底的主表面延伸的平面中(例如,x-y方向平面中)。衬底可以是上面或其中形成内存元件的层的晶片,或可以是在内存元件形成之后附接到内存元件的载体衬底。作为非限制性实例,衬底可包含例如硅等半导体。
三维内存阵列布置成使得内存元件占据多个平面或多个内存装置层级,由此形成三维结构(即,x、y和z方向中,其中z方向大体上垂直于衬底的主表面,且x和y方向大体上平行于衬底的主表面)。
内存结构可包括单片三维内存结构,其中多个内存层级形成于单一衬底(例如,晶片)上方(而非其中),没有中间衬底。内存结构可包括任何类型的非易失性内存,所述非易失性内存单片形成于具有设置在硅衬底上方的有源区域的内存单元阵列的一或多个物理层级中。内存结构可在非易失性内存装置中,所述非易失性内存装置具有与内存单元的操作相关联的电路,无论相关联电路是在衬底上方还是在衬底内。
通常,在单片三维内存阵列中,在单个衬底上方形成一或多个内存装置层级。任选地,单片三维内存阵列还可具有至少部分地在单个衬底内的一或多个内存层。作为非限制性实例,衬底可包含例如硅等半导体。在单片三维阵列中,构成阵列的每一内存装置层级的层通常形成于阵列的下伏内存装置层级的层上。然而,单片三维内存阵列的邻近内存装置层级的层可被共享,或在内存装置层级之间具有介入层。
作为非限制性实例,三维内存结构可竖直地布置为多个二维内存装置层级的堆叠。作为另一非限制性实例,三维内存阵列可布置为多个竖直的列(例如,大体上垂直于衬底的主表面延伸,即沿y方向延伸的列),其中每列具有多个内存元件。所述列可以例如在x-y平面中以二维配置进行布置,从而产生具有在多个竖直堆叠的内存平面上的元件的内存元件的三维布置。三维中的内存元件的其它配置也可构成三维内存阵列。
以非限制性实例的方式,在三维NAND内存阵列中,内存元件可耦合在一起以在单个水平(例如,x-y)内存装置层级内形成NAND串。替代地,内存元件可耦合在一起以形成横穿多个水平内存装置层级的竖直NAND串。可设想其它三维配置,其中一些NAND串含有单个内存层级中的内存元件,而其它串含有跨越多个内存层级的内存元件。
还有,二维阵列可分别形成且接着封装在一起以形成具有多个内存层的非单片内存装置。举例来说,可通过在单独的衬底上形成内存层级且接着使内存层级彼此堆叠来构造非单片堆叠内存。衬底可在堆叠之前薄化或从内存装置层级移除,但因为内存装置层级初始地形成于单独的衬底上方,所以所得内存阵列不是单片三维内存阵列。此外,多个二维内存阵列或三维内存阵列(单片或非单片)可形成于单独的芯片上且接着封装在一起以形成堆叠芯片内存装置。
所属领域的技术人员将认识到,此技术并不限于所描述的二维和三维示例性结构,而是涵盖如本文中所描述且如所属领域的技术人员所理解的所述技术的精神和范围内的所有相关内存结构。
通常需要相关联电路来操作内存元件并与内存元件通信。作为非限制性实例,内存装置可具有用于控制和驱动内存元件以实现例如编程和读取等功能的电路。此相关联电路可与内存元件位于同一衬底上和/或位于单独的衬底上。举例来说,用于内存读写操作的内存控制器可定位在单独的控制器芯片上和/或定位在与内存元件相同的衬底上。
控制电路110与读/写电路128协作以对内存结构126执行内存操作,且包含状态机112、片上地址解码器114和功率控制模块116。状态机112提供内存操作的芯片级控制。可针对用于操作内存装置的参数提供存储区113,所述参数例如用于不同行或内存单元的其它群组的编程参数。这些编程参数可包含位线电压和验证电压。
片上地址解码器114提供由主机或内存控制器使用的地址接口与由解码器124和138使用的硬件地址之间的地址接口。功率控制模块116在内存操作期间控制供应到字线和位线的功率和电压。所述功率控制模块116可包含用于3D配置中的字线层(WLL)、SGS和SGD选择栅极以及源极线的驱动器。在一种方法中,感测块可包含位线驱动器。源极侧选择栅极(SGS)是NAND串的源极端处的栅极晶体管,且漏极侧选择栅极(SGD)是NAND串的漏极端处的晶体管。
在一些实施方案中,可以组合组件中的一些。在各种设计中,除内存结构126以外的组件中的一或多个(单独地或以组合方式)可被认为是被配置成执行本文中所描述的动作的一或多个控制电路。举例来说,一或多个控制电路可包含控制电路110、状态机112、解码器114/124/138、功率控制模块116、感测块SB1、SB2……SBp、读/写电路128、内存控制器122、处理器122c等中的任一个或其组合。
内存控制器122可包括处理器122c和例如只读内存(ROM)122a和RAM 122b的存储装置(内存)。RAM 122b可以是但不限于SRAM和DRAM。存储装置包括例如指令集的代码,且处理器可操作以执行所述指令集以提供本文中所描述的功能性。替代地或另外,处理器可从内存结构的存储装置区126a(例如一或多个字线中的内存单元的预留区域)存取代码。
由内存控制器122使用代码来存取内存结构126,例如用于编程、读取和擦除操作。代码可包含启动代码和控制代码(例如,指令集)。启动代码是在启动或起动过程期间初始化内存控制器并使内存控制器能够存取内存结构的软件。内存控制器可使用代码来控制一或多个内存结构。在通电后,处理器122c从ROM 122a或存储装置区126a提取启动代码以供执行,且启动代码初始化系统组件并将控制代码加载到RAM 122b中。一旦控制代码被加载到RAM 122b中,便由处理器122c执行。控制代码包含用以执行基本任务的驱动程序,所述基本任务例如控制和分配内存、对指令的处理进行优先级排序,以及控制输入和输出端口。
主机内存160可用于存储应用程序162、优先级主机数据应用程序164、O/S API166、文件系统168和一或多个装置驱动器170。应注意,附图标号166在本文中将用于指代一般O/S API和特定O/S API两个。应注意,应用程序162、优先级主机数据应用程序164、O/SAPI 166、文件系统168和一或多个装置驱动器170中的全部或一部分可以存储在非易失性存储器126中。另外,应注意,主机内存160可能包含易失性内存,其中应用程序162、优先级主机数据应用程序164、O/S API 166和文件系统168在电源关闭时不必维持在主机内存160中。主机140可含有用以将应用程序162、优先级主机数据应用程序164、O/S API 166、文件系统168及/或装置驱动器170中的一或多个从非易失性存储器126加载到主机内存160中的启动代码。
图2是描绘连接到主机装置140(或嵌入于主机装置140中)的非易失性存储装置100的一个实施例的框图,其中主机装置140及/或存储装置100可实施下文描述的本发明技术的实施例。非易失性存储装置100可以更简明地称为“存储装置”。主机装置140还可被称作“主机系统”。参考图2,主机装置140通过发布写入和读取命令而将数据存储到存储装置100中且从所述存储装置100检索数据。存储装置100可以嵌入于主机装置140中或可以卡、通用串行总线(USB)驱动器或其它可移动驱动器(例如固态磁盘(SSD)的形式存在,所述可移动驱动器通过机械和电连接件以可拆卸方式连接到主机装置140。主机装置140可以是多个固定或便携式数据产生装置中的任一个,例如个人计算机、智能电话、个人数字助理(PDA)、服务器、机顶盒等等。更一般来说,主机装置140可包含执行智能电话、PDA、膝上型计算机、服务器、机顶盒等的功能的主机逻辑。虽然未特定地展示,但主机可包含只读内存(ROM)及/或与只读内存通信。
可更简明地称为主机140的主机装置140可包含运行一或多个应用程序162的一或多个处理器(例如图1B中的处理器150)。当数据存储在存储装置100中或从所述存储装置100检索时,应用程序162通过一或多个操作系统应用编程接口(API)166与文件系统168通信。文件系统168可以是在处理器150上执行的软件模块,且管理存储装置100中的文件。文件系统168管理逻辑地址空间中的主机数据的集群。由文件系统168执行的共同操作包含以下操作:产生、打开、写入(存储)数据,读取(检索)数据,搜寻文件中的特定方位,移动、复制和删除文件。文件系统168可以是电路、软件,或电路与软件的组合。主机装置140使用文件系统168来寻址存储在存储装置100内的文件,其可涉及将数据写入存储装置100的非易失性内存126和从所述非易失性内存126读取数据。主机140可使用的文件系统的示例性类型包含但不限于FAT32、exFAT、ext2/3/4、HFS+和NTFS。文件系统168可以是可由主机140的处理器150执行的独立芯片或软件。文件系统数据结构,例如文件分配表(FAT),可以存储在存储装置100的内存(例如,126)中。主机140可利用文件系统数据结构来维持已通过主机140指派给数据的所有逻辑块地址(LBA)的逻辑地址范围。
主机140上的一或多个存储装置驱动器170可转译来自文件系统168的指令以供经由通信接口106在主机140与存储装置100之间传输。通信接口包含在主机140与内存装置100之间的电性和机械接口。电性和机械接口可包含多个已知接口中的任一个,例如安全数字(SD)、多媒体卡(MMC)、嵌入式多媒体卡(eMMC)、通用串行总线(USB)、串行高级技术附件(SATA)、小型计算机系统接口(SCSI)、外围组件接口(PCI),和PCI高速(PCIe)。
主机驱动器170还可实施逻辑装置接口的主机侧以用于存取内存装置100中的非易失性存储器126。逻辑装置接口有时被称为主机控制器。主机驱动器170可包含但不限于非易失性内存高速(NMVe)、高级主机控制器接口(AHCI)、SD、USB、MMC和eMMC。应注意,下文将论述的内存控制器122可实施逻辑装置接口的非易失性存储装置侧。
非易失性内存126包含指定为中间存储器(IS)内存132的一部分和指定为主存储器(MS)内存134的另一部分。IS内存132包含第一组非易失性内存单元。MS内存134包含第二组非易失性内存单元。如图2中所描绘,主机数据130可存储在IS内存中和MS内存中。一个选项为内存控制器122响应于来自主机140的存储主机数据的请求将优先级主机数据和非优先级主机数据两个存储到IS内存132。在一个实施例中,在某一时间点处,内存控制器122将非优先级主机数据从IS内存132再定位到MS内存134。在一些情况下,响应于来自主机140的存储非优先级主机数据的请求,内存控制器122可将非优先级主机内存直接写入MS内存134。
非易失性内存126可存储管理表142和优先级地址表144。如下文将以额外细节描述,根据本发明技术的某些实施例,内存控制器122可使用优先级地址表144来管理主机数据是保留在IS内存132中还是再定位到MS内存134。在一个实施例中,内存控制器122基于优先级地址表144中的优先级地址将数据从IS内存132再定位(即,传送)到MS内存134。在一个实施例中,内存控制器122基于优先级地址表144执行垃圾收集。垃圾收集可包含将优先级主机数据从IS内存132内的一个位置移动到IS内存132中的另一位置,以及将非优先级主机数据从IS内存132移动到MS内存134。
在一个实施例中,管理表142包含一或多个逻辑到物理映射(L2P)表和一或多个物理到逻辑映射(P2L)表。控制器122可使用管理表142来将逻辑块地址(LBA)映射到物理块地址(PBA)。这类表142可用于将LBA直接映射到PBA,或LBA可映射到中间或虚拟块地址,所述中间或虚拟块地址映射到PBA。其它变化也是可能的。在一些实施例中,主机数据130存储在块(例如,区块0、块1、块2……)中。在一些示例实施例中,非易失性内存单元的块是擦除的单位。在一些实施例中,块表示通过共同位线和字线分组的多个内存单元。经由通信链路106从主机140发送到存储装置100的指令或命令(例如写入命令)可包含逻辑块地址(LBA)。相比之下,经由通信信道118发送的指令或命令可包含物理块地址(PBA)。
如图2所示,主机数据130存储在IS内存132和MS内存134两个中。主机数据130的个别块(例如,块0、块1、块2……)可出于操作目的划分成内存单元页。举例来说,所述块中的每一个的内存单元可各自划分成八页P0到P7。替代地,每个块内可能存在16、32或更多个内存单元页。所述页是在块内编程和读取的数据的单位,含有同时编程或读取的最小量的数据。然而,为了提高内存系统操作并行性,两个或多于两个块内的这类页可以逻辑上链接到元页中。元页可例如由来自四个块中的每一个的一个物理页形成(例如,元页可例如包含在四个块中的每一个中的页P2,但元页的页在所述块中的每一个内不一定要有相同的相对位置)。元页可以是编程的最大单位。
根据某些实施例,IS内存132可包含单层级单元(SLC)内存,其中每内存单元存储单个数据位,单层级单元还可被称为存储元件或区。更具体地说,SLC内存可操作以存储电荷的两个可检测层级以便存储一个位,所述位可能具有两个可能的状态0或1中的一个。替代地或另外,IS内存132可包含永久性字节可寻址内存的形式,包含ReRAM、相变内存或磁性RAM。相比之下,较便宜MS内存134可包含多层级单元(MLC)内存,其中每内存单元存储两个或多于两个位。如本文中使用的术语,MLC内存可包含内存单元,其中每内存单元存储两个、三个或四个数据位,或可能甚至超过四个数据位。相应地,如本文中使用的术语,术语MLC内存还涵盖三层级单元(TLC)内存和四层级单元(QLC)内存。举例来说,MLC内存可操作以存储电荷的四个可检测层级,所述四个可检测层级可用于存储四个状态且可保留两个数据位:00、01、10或11。对于另一实例,其中MLC内存是TLC内存,其可操作以存储电荷的八个可检测层级,所述八个可检测层级可用于存储八个状态且可保留三个数据位:000、001、010、011、100、101、110或111。对于再一实例,其中MLC内存是QLC内存,其可操作以存储电荷的十六个可检测层级,所述十六个可检测层级可用于存储十六个状态且可保留四个数据位:0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110或1111。IS内存132在本文中可更简明地称为IS 132。类似地,MS内存134在本文中可更简明地称为MS内存134。
仍参考图2,在一个实施例中,IS内存132具有比MS内存134的读出时延更低的读出时延。在这类实施例中,可在比可从MS内存134读取更高的速度下从IS内存132读取。在一个实施例中,IS内存132具有比MS内存134的写入时延更低的写入时延。在这类实施例中,可在比可写入MS内存134更高的速度下写入IS内存132。举例来说,IS内存132可含有被编程为每单元一个位的闪存单元(SLC),而MS内存132可含有被编程为每单元多个位的闪存单元。在一个实施例中,每一MLC单元被编程为四个不同状态中的一个(例如,一个或四个不同阈值电压分布),而每一SLC单元被编程为两个不同状态中的一个(例如,一个或两个不同阈值电压分布)。在一个实施例中,每一MLC单元被编程为八个不同状态中的一个(例如,一个或八个不同阈值电压分布)。通常,内存单元的群组编程为一个单元,其意味着不同单元被编程为各种状态。此外,与SLC相比,MLC的状态之间通常存在更小间隙(例如,阈值电压分布之间的更小间隙)。这些因素引起与SLC相比明显更高的MLC的写入时延。SLC的读出时延与MLC相比明显更低的因素在于SLC感测可在仅一个参考层级下进行以区分两个状态,而MLC可能要求在三个或七个参考层级下感测以区分不同状态(例如,阈值电压分布)。应注意,IS内存132和MS内存134可为不同类型的技术。举例来说,IS内存132可包含ReRAM内存单元、相变存储器(PCM)内存单元及/或磁性RAM内存单元,而MS内存134可为快闪存储器(例如但不限于NAND)。在这类实施例中,IS内存132中的ReRAM内存单元、相变存储器(PCM)内存单元及/或磁性RAM内存单元具有比MS内存134中的闪存单元更低的读出时延。
另外,IS内存132可具有比MS内存134更高的耐久性。举例来说,IS内存132的单元中的每一个的预期寿命可以是20,000个编程/擦除(P/E)周期,而MS内存134的单元中的每一个的预期寿命可以是2,000个P/E周期,在此情况下,IS内存132的单元的耐久性应为MS内存134的单元的10倍。这仅为一个实例,其并不意图涵盖所有。在一个实施例中,IS内存132具有比MS内存134更低的存储密度。更具体地说,IS内存132的个别单元与MS内存134的个别单元相比可存储更少主机数据位。在一些实施例中,非易失性内存126被分配给IS内存132的部分明显小于被分配给MS内存134的部分。作为一个实例,IS内存132可使用存储装置100的总存储预算的不到百分之十。作为另一实例,取决于存储装置100,IS内存132可使用总存储预算的仅百分之二或不到百分之二。IS内存132与MS内存134的精确比率取决于特定产品,且大体上影响成本与存储装置100的性能和耐久性。
IS内存132可用于提供更快写入吞吐量,且还可用作在将主机数据存储在MS内存134中之前迅速存储所述主机数据的安全区。IS内存132还可充当使得存储在IS内存132内的主机数据能够极迅速地被存取的非易失性内存高速缓存。一个实施例的普通概念在于将具有较低写入和读取时延的更昂贵非易失性内存用作IS内存132,且将具有较高写入和读取时延的较便宜非易失性内存用作MS内存134。
虽然IS内存132通常为性能优越的,但其太小而不能实际上高速缓存所有主机数据。用于决定应存储在IS内存132中(以及从IS 132再定位到MS存储器134)的主机数据的常规技术可以是先进先出(FIFO)或基于老化算法。然而,用于执行再定位的常规技术(其也可被称为常规再定位方案)对于多种使用情况不是最优的,这是由于应为用于流式传输视频的存储装置中使用的最优再定位方案的方案与应为用于重复地更新同一相对较小数据分块的存储装置中使用的最优再定位方案的方案之间存在明确区别。流式传输视频实例是极端使用情况,其中整个快闪驱动器被写入且随后立刻一再地重写。同一相对较小数据分块的重复更新是频谱的另一端部上的另一极端使用情况,其中同一LBA可以反复地写入。在上方提到的极端情况情境之间存在较大灰色区域。与执行常规再定位时相比较,下文将更详细地解释的本发明技术的实施例可用于以提供改进写入和读取性能的方式管理再定位。
再次返回到主机140的论述,优先级主机数据应用程序164知道接收优先级以保留在IS内存132中的主机数据130(例如,文件)。在一个实施例中,优先级主机数据应用程序164监测主机数据的使用以了解接收优先级以保留在IS内存132中的主机数据。在一个实施例中,优先级主机数据应用程序164提供允许用户选择接收优先级以保留在IS内存132中的文件等的用户界面。取决于上下文,可使用类似术语,例如“优先级文件”,其意味着优先保留在IS内存132中的文件。在一个实施例中,优先级为二进制值。应注意,优先级可具有除二进制值以外的权重。举例来说,可能存在三个或更多个不同权重,其中所述权重用于确定存储在IS内存132中的数据。
优先级主机数据应用程序164能够存取与将给定优先级以保留在IS内存132中的主机数据(例如,文件)相关联的地址(例如,逻辑地址)。举例来说,如果主机数据是文件,那么优先级文件的逻辑地址可以含于文件的元数据中。在内存控制器122提供优先保留在IS内存132中的用于优先级主机数据的优先级地址集合的指示下,优先级主机数据应用程序164将所述优先级地址集合提供到内存控制器122。应注意,在本文中所描述的一些实施例中,将优先级地址描述为“逻辑地址”。然而,优先级地址不需要为逻辑地址。举例来说,在一些情况下,优先级地址可为例如存储装置100中的主机数据的物理地址。
在一个实施例中,优先级主机数据应用程序164使用内存存取协议的带内通信,所述内存存取协议由驱动器170和内存控制器122使用。如本文中所使用的术语“带内通信”意味着使用可用于将待写入的主机数据提供到存储装置100以及从存储装置读取主机数据的相同通信信道将优先级逻辑地址提供到内存控制器122。举例来说,优先级逻辑地址的带内通信可包含使用用于在主机140与存储装置100之间传送主机数据的相同内存存取协议(例如,NVMe、AHCI)
路径180表示带内通信的一个实施例的流程。所述流程可以类似于上文所论述的关于应用程序162从结构126读取数据或将数据写入结构126的方式的流程。然而,带内通信并不导致主机数据130被写入结构126或从结构126读取。带内通信可包含存取O/S API 166以作出将通信发送到内存控制器122的请求的优先级主机数据应用程序164。此请求可像写入所保留逻辑地址一样简单,内存控制器可将其确定为更新优先级地址表144的请求。O/SAPI 166可与文件系统168介接以便传递所述请求。文件系统168可将所述请求传递到驱动器170。驱动器170可包含用于内存存取协议的驱动器,例如NVMe驱动器、AHCI驱动器、UFS驱动器等。驱动器170接着形成给定正在使用中的内存存取协议的合适通信,且将所述通信提供到内存控制器122。
应注意,在一个实施例中,带内通信并不要求对任何驱动器170的任何修改。作为一个实例,优先级主机数据应用程序164请求写入所保留逻辑地址,此写入请求可以与由另一其它应用162程序使用的写入请求类似的方式行进。差异在于与将主机数据130写入结构126的请求相反,当内存控制器122接收所保留逻辑地址的写入请求时,内存控制器122可将此解译为更新优先级地址表144的请求。
图3是存储装置100的一个实施例的框图。然而,图3中所描绘的架构还可用于实施其它类型的非易失性存储装置。图3展示存储装置100包含连接到一或多个非易失性内存裸片108(其包括图1B和2中描绘的非易失性内存126)的控制器122。图3提供下文将更详细地论述的控制器122的组件中的一些的细节。取决于用于实施IS内存132的技术,IS内存可位于与MS内存134不同的非易失性内存裸片108中,或同一非易失性内存裸片108可包含IS内存132中的一些和MS内存134中的一些。
如本文中所使用,对于使用非易失性内存的系统,控制器122是管理存储在非易失性内存中的数据并与主机通信的装置。控制器122除本文中所描述的特定功能性外还可具有各种功能性。举例来说,控制器122可使非易失性内存格式化以确保内存恰当地操作,列出不良内存单元(存储器的物理单位),且分配备用内存单元来替换将来故障单元。备用内存单元的某一部分可用于保持固件来操作控制器和实施其它特征。所述固件在操作期间还可读取到本地易失性内存中。当主机需要从非易失性内存读取数据或将数据写入非易失性内存时,其将与控制器122通信。如果主机将逻辑地址提供到将读取/写入的数据,那么控制器122将从主机接收到的逻辑地址转换成物理内存中的物理地址。控制器122还可执行各种内存管理功能,例如但不限于损耗均衡(在内存裸片或内存块当中分布写入操作以避免损耗应另外重复地写入的特定内存块)和垃圾收集(在块完整之后,仅将数据的有效页移动到新块,如此可擦除和重复使用所述完整块)。
控制器122与非易失性内存裸片108之间的接口可以是任何合适的接口,例如PCI高速。当内存单元是闪存单元时,所述接口可以是切换模式200、400或800或另一通信接口。在一些实施例中,存储装置100包含控制器122与非易失性内存裸片108之间的单个信道;然而,本文中所描述的主题不限于具有单个内存信道。举例来说,在一些内存系统架构中,取决于控制器能力,控制器122与存储器裸片108之间可存在两个、四个、八个或更多个信道。在本文中所描述的任何实施例中,控制器122与内存裸片108之间可存在超过单个信道,即使图中展示单个信道。
如图3中所描绘,控制器122包含与主机介接的前端模块312、与一或多个非易失性内存裸片108介接的后端模块310,和执行现将描述的功能的各种其它模块。
图3中所描绘的控制器122的组件可采取以下形式:被设计为用于与其它组件一起使用的封装功能性硬件单元(例如,电路)、可由通常执行相关功能中的特定功能的一或多个处理器或处理电路执行的程序代码(例如,软件或固件),或与较大系统介接的独立硬件或软件组件。举例来说,每一模块可包含专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)、电路、数字逻辑电路、模拟电路、离散电路的组合、栅极,或任何其它类型的硬件,或其组合。替代地或另外,每一模块可包含存储在处理器可读装置(例如,本地易失性内存)中的软件以编程处理器来执行本文中所描述的功能。
存储装置100包含随机存取内存(RAM)122b(与上文关于图1B所论述的本地易失性内存相同)和只读内存(ROM)122a。再次参考控制器122的模块,缓冲器管理器/总线控制314管理RAM 122b且控制控制器122的内部总线仲裁。ROM 122a存储用于控制器的启动代码。尽管图3中示出为与控制器122分离地定位(但连接到控制器122),但在其他实施例中,RAM122b和ROM 122a中的一个或两个可以位于所述控制器内。在又其它实施例中,RAM和ROM的部分可既位于控制器内又位于控制器外部。此外,在一些实施方案中,控制器122、RAM 122b和ROM 122a可位于单独的半导体裸片上。在某些实施例中,潜在主机活动模式和相关联再定位方案可存储在ROM 122a中,而非将潜在主机活动模式和相关联再定位方案存储在非易失性内存126中。
前端模块312包含提供与主机或下一层级存储控制器的电气介接的主机接口202和物理层接口(physical layer interface,PHY)322。主机接口202的类型的选择可取决于正使用的内存的类型。主机接口202的示例性类型包含但不限于SATA、SATA高速、SAS、光纤信道协议(Fibre Channel Protocol,FCP)、USB、MMC、eMMC、UFS、AHCI和NVMe。主机接口202通常促进数据、控制信号和定时信号的传送。在一个实施例中,前端模块312为控制器122和存储装置100的内存裸片108提供适用于与外部计算装置(例如,主机)通信的单个通信接口。
后端模块310包含错误校正码(ECC)引擎324,所述错误校正码引擎324对从主机接收到的数据字节进行编码,且对从非易失性内存裸片108读取的数据字节进行解码和错误校正。ECC引擎324可包含用以接收数据且产生表示数据的编码的一或多个码字的电路。举例来说,ECC引擎324可配置成利用里德-所罗门(Reed-Solomon)编码、BCH代码、低密度奇偶校验(LDPC)代码、一或多个其它错误检测及校正代码,或其任何组合。命令定序器326产生待传输到非易失性内存裸片108的命令序列,例如编程和擦除命令序列。独立裸片冗余阵列(Redundant Array of Independent Drive,RAID)模块328管理RAID奇偶校验的产生和失效数据的恢复。RAID奇偶校验可用作用于将数据写入非易失性内存126中的额外完整性保护级别。在一些情况下,RAID模块328可为ECC引擎324的一部分。应注意,RAID奇偶校验可添加为一或多个额外裸片,但其还可添加于现存裸片内,例如,作为附加平面或附加块或块内的附加WL。内存接口204将命令序列提供到非易失性内存裸片108且从非易失性内存裸片108接收状态信息。在一个实施例中,内存接口204可以是双数据速率(double data rate,DDR)接口,例如切换模式200、400或800接口。NVM控制层332控制后端模块310的总体操作。在一个实施例中,NVM控制层322是快闪控制层。
在将数据写入内存中(例如写入IS内存132中)的过程期间,数据可编码有附加位(“奇偶校验位”)以形成码字。在存在噪声的情况下,表示码字的位中的一些可改变,从而用错误损坏原始码字。当从内存读取码字时,解码器可用于使用错误校正译码(ECC)来识别和校正错误。举例来说,博斯-乔杜里-霍克文黑姆(Bose-Chaudhuri Hocquenghem,BCH)ECC方案在应用程序中使用,其中位错误趋向于不相关。可在具有或不具有ECC控制的情况下进行数据从IS内存132到MS内存134的再定位。当数据写入IS内存132时,错误可被引入到码字。如果包含错误的码字从IS内存132再定位到MS内存134,那么在不首先解码码字且校正错误(如在片上复制(OCC)操作期间可进行)的情况下,错误可成为硬错误(其中使用错误电压来对MLC型闪存进行编程),其可削弱吞吐量和耐久性。为了减小MS内存134中的硬错误的机率和扩展,从IS内存132再定位的数据可在利用奇偶校验位再编码且再定位(即,传送)到MS内存134之前被解码和错误校正。举例来说,内存控制器122可执行数据的这类解码、错误校正和重新编码,所述过程可被称为通过控制器复制(copy through controller,CTC)。虽然CTC的使用应减少硬错误,但其将增加再定位时延。
图3中所示出的存储装置100的额外组件包含介质管理层(Media ManagementLayer,MML)338,其执行非易失性内存裸片108的内存单元的损耗均衡。在一个实施例中,MML 338是快闪转换层(Flash Translation Layer,FTL)。存储装置100亦包括其它离散组件340,例如外部电气接口(例如,作为主机接口和内存接口的部分)、外部RAM、电阻器、电容器或可与控制器122介接的其它组件。在替代性实施例中,物理层接口322、RAID模块328、介质管理层338和缓冲器管理/总线控制器314中的一或多个是在控制器122中不必要的任选组件。
快闪转换层(FTL)或介质管理层(MML)338可集成为可处置错误且与主机介接的非易失性内存管理的部分。具体地说,MML 338负责非易失性内存管理的内件。具体地说,MML338可将使从主机写入转译成写入内存裸片108的内存的算法包含于内存装置中。可能需要MML 338,这是因为:1)内存可具有受限耐久性;2)内存仅可以页的倍数写入;和/或3)除非内存被擦除为块,否则其可能并不写入。MML 338了解对于主机可能并不可见的这些潜在内存限制。相应地,MML 338试图将从主机写入转译成写入非易失性存内存126(其可为闪存)中。MML 338还管理用于在来自主机的逻辑地址与内存裸片108上的物理地址之间进行映射的过程。此可包含在编程期间更新L2P表和P2L表,擦除和执行移动命令。
MML 338展示为包含中间存储器(IS)管理控制器334,其还可被称为IS管理器334。IS管理器334可使用优先级地址表144(图2中所描绘)来管理IS内存132。此可包含确定存储在IS内存132中的主机数据和存储在MS内存134中的主机数据。在一个实施例中,IS管理器334基于优先级地址表144中的优先级地址将数据从IS内存132再定位到MS内存134。在一个实施例中,IS管理器334基于优先级地址表144的内容在IS内存132内执行垃圾收集。
图4是操作非易失性存储器的过程400的一个实施例的流程图。过程400可用于管理IS内存132。过程400可部分地通过主机系统140且部分地通过内存控制器122执行。
步骤402包含在优先级地址的主机数据接收优先级以保留在IS内存132中的指示下,主机系统140将优先级地址(例如,LBA)提供到内存控制器122。如上文所提到,具有优先级地址的主机数据被称为优先级主机数据。优先级主机数据获得优于非优先级主机数据的优先级以保留在IS内存132中。换句话说,与优先级地址相关联的主机数据获得优于与主机系统尚未指示为优先级地址的任何地址(例如,逻辑地址)相关联的主机数据的优先级以保留在IS内存132中,
步骤404包含内存控制器122向优先级主机数据(具有优先级地址)提供优先级以保留在IS内存132中。可响应于内存控制器122从主机系统140接收优先级地址来执行步骤404。内存控制器122向优先级主机数据提供优先级以优于非优先级主机数据的保留在IS内存132中。在一个实施例中,步骤404包含将非优先级主机数据(其并不具有优先级地址)从IS内存132冲刷到MS内存134。关于图11展示和描述冲刷非优先级主机数据的一个实施例的其它细节。
在一个实施例中,步骤404包含基于由主机140提供的优先级地址执行垃圾收集。垃圾收集可包含将非优先级主机数据从IS内存132传送到MS内存134。垃圾收集可进一步包含将优先级主机数据从IS内存132中的一个位置移动到IS内存132中的另一位置。关于图12展示和描述垃圾收集的一个实施例的其它细节。
图5A描绘优先级地址表144的一个实施例。在此实施例中,表144含有优先级地址集合502(1)到502(6)。在此实例中存在六个集合502(1)到502(6),但可能存在更多或更少个集合。本文中,附图标记“502”通常将用以指代集合而不指代特定集合。本文中,优先级地址的“集合”含有一或多个地址(例如,逻辑地址)。集合502中的优先级地址不需要为邻接的。举例来说,集合502(2)在优先级地址2000与2200之间具有间隙,其中集合502(2)中的优先级地址并不邻接。在一个实施例中,通过优先级主机数据应用程序164提供每个集合502。
图5A中的优先级地址表144的实施例具有优先级504的优先级字段504。这允许表144中的不同集合502具有不同优先级权重。字段504中的较高值指示集合502获得较高优先级以保留在IS内存132中。应注意,在一个实施例中,假定并未在表144中的任何地址(例如,逻辑地址)具有优先级“0”。因此,在图5的实例中,集合502(6)具有比任何其它集合502(1)到502(5)更高的优先级。集合502(2)和502(5)具有比集合502(6)更低的优先级,但具有比集合502(1)、502(3)和502(5)更高的优先级。集合502(1)、502(3)和502(5)具有比不在表144中的任何地址地址(例如,逻辑地址)更高的优先级。
应注意,优先级字段504并不是必须的。因此,在没有指派给给定集合的任何优先级权重504的情况下,表144可含有集合502。在这种情况下,表144中的每个集合502可具有保留在IS内存132中的相等优先级。在此实施例中,与不在表144中的任何地址(例如,逻辑地址)相比,表144中的每个集合502具有保留在IS内存132中的更高优先级。
图5B是操作非易失性存储器的过程500的一个实施例的流程图。过程500的一些步骤是由优先级主机数据应用程序164执行。优先级主机数据应用程序164在主机处理器150上执行。过程500的一些步骤是由内存控制器122执行。例如操作系统API 166、文件系统168和一或多个装置驱动器170的其它组件可用于促进从优先级主机数据应用程序164到内存控制器122的通信。然而,应注意,并不需要对操作系统API 166、文件系统168和一或多个装置驱动器170作出任何改变。
步骤512包含优先级主机数据应用程序164知道给定优先级以保留在非易失性存储系统100的结构126的IS内存132中的主机数据。优先级主机数据应用程序164可基于其自身监测知道接收优先级的主机数据。关于图7展示和描述示例实施例。应用程序可基于用户输入知道接收优先级的主机数据。关于图8展示和描述示例实施例。
步骤514包含优先级主机数据应用程序164存取主机数据的优先级地址集合。优先级主机数据应用程序164可基于元数据获得主机数据的优先级地址集合。举例来说,如果优先级地址集合是文件,那么所述文件可具有含有文件的逻辑地址的元数据。
步骤516包含优先级主机数据应用程序164将优先级地址集合提供到内存控制器122。优先级主机数据应用程序164还将优先级地址集合接收优先级以保留在IS内存122中的指示提供到内存控制器122。应注意,优先级主机数据应用程序164并不需要将优先级地址集合直接提供到内存控制器122。在一个实施例中,优先级主机数据应用程序164经由操作系统API 166发送请求。例如文件系统168和一或多个装置驱动器170的其它组件可与将优先级地址集合递送到内存控制器122有关。然而,并不需要对O/S API166、文件系统168及/或装置驱动器170作出任何改变以便将优先级地址集合递送到内存控制器122。在一个实施例中,步骤516包含使用带内通信将优先级地址集合提供到内存控制器,所述带内通信包含使用内存存取协议在装置驱动器170与内存控制器122之间通信。关于图6A展示并描述步骤516的一个实施例的其它细节。
步骤518包含内存控制器122将优先级地址集合存储在优先级地址表144中。视情况,内存控制器122将优先级地址集合的优先级权重504存储在优先级地址表144中。
步骤518与520之间存在虚线以指示在这两个步骤之间可能经过了一定时间。应注意,可针对其它逻辑地址集合执行步骤512到518。因此,随时间推移,优先级地址的更多个集合502可添加到优先级地址表144。步骤520包含内存控制器122基于优先级地址表144中的优先级地址管理主机数据是保留在IS内存132中还是再定位到MS内存134。
步骤520可包含基于优先级地址表144确定从IS内存132冲刷(或再定位)到MS内存134的主机数据。关于图11展示和描述基于优先级地址表144将数据从IS内存132冲刷到MS内存134的一个实施例的其它细节。步骤520可包含基于优先级地址表144执行垃圾收集。关于图12展示和描述基于优先级地址表144执行垃圾收集的一个实施例的其它细节。
图6A是在集合502接收优先级以保留在IS内存132中的指示下优先级主机数据应用程序164将优先级地址集合提供到内存控制器122的过程600的一个实施例的流程图。过程600是过程500的步骤516的一个实施例。过程600可由主机系统140执行。
步骤602包含优先级主机数据应用程序164形成使内存控制器更改逻辑地址表144的请求。所述请求含有优先级地址集合。所述请求还可含有优先级地址集合的优先级权重。
步骤604包含优先级主机数据应用程序164调用操作系统(O/S)应用程序编程接口(API)以指导将所述请求发送到内存控制器122。
步骤606包含O/S API 166与文件系统168介接以传递所述请求。
步骤608包含文件系统168指导装置驱动器170将所述请求发送到内存控制器122。装置驱动器170自身可由多于一个装置驱动器构成。举例来说,较高层级装置驱动器可与文件系统介接,而较低层级装置驱动器可与内存控制器122介接。在一个实施例中,较低层级装置驱动器被配置成实施内存存取协议的主机侧。举例来说,较低层级装置驱动器可实施NMVe驱动器、AHCI驱动器、SD驱动器、USB驱动器、MMC驱动器或eMMC驱动器的主机侧。这些较低层级驱动器在一些情况下可被称为主机控制器。举例来说,较低层级装置驱动器可被称为NVMe主机控制器、AHCI主机控制器等。应注意,内存控制器122具有用于实施内存存取协议的内存系统100侧的对应控制器。
步骤610包含装置驱动器170将请求发送到内存控制器122。装置驱动器170可根据内存存取协议(例如,NMVe、AHCI、SD、USB、MMC、eMMC)发送请求。步骤610中的装置驱动器可被称为主机控制器。
各种技术可用于将优先级地址集合提供到内存控制器122。一种可能性是装置驱动器发送在预定保留逻辑地址(例如,LBA)处进行写入的写入请求。所保留逻辑地址可为向内存控制器122指示这是与将主机数据130写入结构126的请求相对的更新优先级地址表144的特殊写入请求的逻辑地址。写入请求的数据可含有优先级地址集合。写入请求的数据还可含有优先级地址集合的优先级权重。应注意,此技术并不要求对装置驱动器的任何修改。换句话说,从装置驱动器的角度,其仅请求内存控制器122写入提供到装置驱动器的逻辑地址。其它技术可用于将优先级地址集合提供到内存控制器122。
图6B是内存控制器122更新优先级地址表144的过程650的一个实施例的流程图。过程650可以与过程600结合使用。换句话说,内存控制器122可响应于在过程600的实施例中接收到请求而执行过程650。
步骤652包含内存控制器122从装置驱动器(例如,主机控制器)接收请求。如所提及,此请求可为来自过程600的步骤610的请求。应注意,过程650不限于与过程600一起使用。因此,内存控制器122在步骤652中接收的请求可能已使用除过程600中所描述以外的技术发送。
步骤654包含内存控制器122确定此请求是更新优先级地址表144的请求。在一个实施例中,内存控制器122响应于所述请求为写入所保留逻辑地址来作出此确定。换句话说,内存控制器122可配置成将写入特定所保留逻辑地址的请求解译为更新优先级地址表144的请求。然而,可使用其它技术。
步骤656包含内存控制器122从请求提取优先级地址集合。在一个实施例中,写入请求指示待写入的数据以及数据长度。写入请求自身可含有数据,或可含有对数据的指针。因此,内存控制器122可从含有写入请求的数据的内存位置提取优先级地址集合。
步骤658包含内存控制器122将优先级地址集合502写入优先级地址表144。视情况,内存控制器122将集合502的优先级权重504写入优先级地址表144。
图7是优先级主机数据应用程序164基于用户选择了解接收优先级以保留在IS内存132中的主机数据的过程700的流程图。过程700是过程500的步骤512的一个实施例。
步骤702包含优先级主机数据应用程序164提供用户界面(UI),所述用户界面允许用户指明接收优先级以保留在IS内存132中的主机数据130。图8A描绘允许用户指明优先级主机数据的UI 800的一个实施例。UI 800列出多个计算机程序(或应用程序)。UI 800具有紧邻每一应用的允许用户选择/取消选择应用程序的优先级选择框802。图8B描绘允许用户指明优先级主机数据以及优先级权重的UI 850的实施例。UI 850还列出具有紧邻每一应用程序的优先级选择框802的多个应用程序,所述优先级选择框802允许用户选择用于优先级存储器的应用程序。UI 850还具有紧邻每一应用程序以允许用户指明已在优先级选择框802中选定的应用程序的优先级权重的优先级权重框804。
步骤704包含优先级主机数据应用程序164接收UI中的选择。关于图8A中的UI800,优先级主机数据应用程序164注意哪些优先级选择框802被检查和不被检查。同样地,关于图8B中的UI 850,优先级主机数据应用程序164注意哪些优先级选择框802被检查和不被检查。
步骤706包含优先级主机数据应用程序164接收优先级权重的选择。步骤706为任选的。关于图8B中的UI 850,优先级地址注意优先级权重框804中的值。
步骤708包含优先级主机数据应用程序164存储有关步骤704及/或706中的选择的信息。因此,“注意”优先级选择框802的选择或优先级权重框804中的值指代将信息存储到非暂时性存储器(例如主机内存160)中。
图9是优先级主机数据应用程序164确定接收优先级以保留在IS内存132中的主机数据130的过程900的流程图。过程900是过程500的步骤512的一个实施例。
步骤902包含优先级主机数据应用程序164在主机系统140通电时从非暂时性存储器加载到主机内存160中。非暂时性存储器可为例如在内存系统100中的内存裸片108上的结构126中的非易失性内存。然而,非暂时性存储器可定位在其它地方。
步骤904包含优先级主机数据应用程序164监测主机数据使用。广泛多种技术可用于监测主机数据使用。监测技术并不重要。在一个实施例中,优先级主机数据应用程序164监测哪些文件及/或程序是从非易失性存储装置100存取。在一个实施例中,优先级主机数据应用程序164监测哪些文件及/或程序被加载到主机内存160中。
步骤906包含优先级主机数据应用程序164基于主机数据使用选择用于IS内存132中的优先级存储器的主机数据。步骤906可包含将优先级地址集合添加到优先级主机数据的存储纪录。因此,应注意,优先级主机数据应用程序164可维持优先级地址表,所述优先级地址表类似于由内存控制器122的一个实施例维持的表144。步骤906可包含从优先级主机数据的纪录移除优先级地址集合。
图10A是内存控制器122基于优先级地址表144来管理IS内存132的过程1000的一个实施例的流程图。步骤1002包含主机控制器向内存控制器122提供写入请求。在一个实施例中,写入请求指定一或多个逻辑地址。举例来说,写入请求可具有起始逻辑块地址(LBA)和待写入数据的长度。长度可在多个逻辑块中指定。在一个实施例中,逻辑块的大小由主机控制器指定。主机控制器可在内存控制器122的初始化期间指明逻辑块的大小。步骤1002还可包含主机控制器为写入请求提供待存储在非易失性内存系统100中的主机数据。主机数据可通过主机控制器指明主机内存160(其存储主机数据)中的一或多个主机数据缓冲器而提供到内存控制器122。作为一个实例,主机控制器可将写入命令置于命令队列(其可位于主机内存160或内存系统100上的RAM 122b中)上。写入命令可包含对主机内存160中的数据缓存器的指针,以及对数据缓存器指针的指针。举例来说,在NVMe协议中,主机控制器可将指针包含在写入命令中,其中所述指针指向数据缓存器指针的列表。每一数据缓存器指针可指向主机内存160中的数据缓存器。存在主机系统的多个其它替代例以将主机数据提供到内存控制器122。
步骤1004包含内存控制器122将主机数据写入IS内存132。应注意,在此实施例中,优先级主机数据和非优先级主机数据两个可写入IS内存132。然而,如下文将论述,响应于来自主机140的将非优先级数据存储到非易失性存储装置100的请求,并不需要将非优先级主机数据存储在IS内存132中。
步骤1004与1006之间的虚线指示内存控制器122在这些步骤之间可执行其它任务。步骤1006包含内存控制器将非优先级主机数据从IS内存132冲刷到MS内存134。冲刷可通过空闲IS内存132的量降低到低于阈值而触发。应注意,步骤1006还可包含将优先级主机数据保持在IS内存132中。应注意,在一个实施例中,将主机数据保持在IS内存132中且再定位到MS内存134的决策是基于优先级地址。因此,不同于可再定位“早期”主机数据的技术,这类“早期”数据可取决于其优先级保留在IS内存132中。
响应于来自主机140的存储非优先级主机数据的请求,并不需要将非优先级主机数据存储在IS内存132中。图10B是内存控制器122基于优先级地址表144来管理IS内存132的过程1050的一个实施例的流程图,其中非优先主机数据有可能直接写入MS内存132(绕过IS内存132)。
步骤1002包含主机控制器向内存控制器122提供写入请求。步骤1052是关于IS内存132中的空闲空间的量的确定。如果空间并不小,那么在步骤1054中,可将主机数据写入IS内存。
步骤1056包含内存控制器122关于写入请求检查优先级地址表144。如所提及,在一个实施例中,写入请求具有起始逻辑地址和长度。因此,在一个实施例中,实际上,写入请求指定逻辑地址(例如,LBA)的范围。在步骤1058的一个实施例中,内存控制器122确定在此范围内的逻辑地址中的任一个是否在优先级地址表144中。内存控制器122可针对在表144中发现的逻辑地址执行步骤1060。内存控制器122可针对未在表144中发现的逻辑地址执行步骤1062。
步骤1060包含内存控制器122将优先级地址的优先级主机数据写入IS内存132。
步骤1062包含内存控制器122将非优先级地址的非优先级主机数据写入MS内存134。
应注意,在一个实施例中,对于来自主机140给定写入请求,没有主机数据、主机数据中的一些或全部可写入MS内存134而不写入IS内存132。在所有主机数据中的一些写入MS内存134而不写入IS内存132的情况下,这可节省IS内存132中的空间,其可避免从IS内存132再定位优先级主机数据的需要。应注意,一些常规FIFO技术可再定位主机数据以便为正新写入内存系统100的主机数据让出空间。
过程1050的一个替代方案为即使在IS内存132中的空间并不少时也仅将非优先级主机数据写入MS内存134。由于到MS内存134的写入可花费比到IS内存132的写入更长的时间,所以可仅在将非优先级主机数据直接写入MS内存134不会对写入吞吐量(例如,每单位时间写入的数据量)造成明显负面影响时执行此选项。
图11是基于优先级地址的再定位(或冲刷)操作的过程1100的一个实施例的流程图。过程1100是过程400的步骤404的一个实施例。过程1100是过程500的步骤520的一个实施例。过程1100可在过程1000的步骤1006的一个实施例期间执行。过程1100可响应于内存控制器122确定IS内存132将被冲刷而执行。作为一个实例,这可在IS内存132达到其容量的某一百分比时执行。过程1100描述IS内存132中的一个数据块的处理。数据块具有逻辑地址,例如逻辑块地址。在一个实施例中,数据块是与一个逻辑地址(例如LBA)相关联的数据的单位。数据块可具有任何大小。应注意,数据块是与“擦除块”不同的概念,所述“擦除块”在下文结合垃圾收集而论述。擦除块在本文中定义为一起擦除的数据的单位。擦除块可具有任何大小。在一些情况下,每擦除块存在多个数据块。
步骤1102包含内存控制器122存取IS内存132中的数据块的逻辑地址(例如,LBA)。
步骤1104包含确定所述逻辑地址是否在优先级地址表144中。如果逻辑地址不在优先级地址表144中,那么执行步骤1106。步骤1106包含注意到此数据块的主机数据将传送到MS内存134。因此,此主机数据已识别为非优先级主机数据。
如果逻辑地址在优先级地址表144中,那么执行步骤1108。步骤1108包含注意到此数据块的主机数据保留在IS内存132中。因此,此主机数据已识别为优先级主机数据。
步骤1110包含确定IS内存132中是否存在考虑的更多数据块。如果是,那么在步骤1102(及其它步骤)中考虑另一数据块。因此,内存控制器122可通过针对IS内存132中的各种数据块执行步骤1102到1108而生成将再定位到MS内存134的主机数据的列表。换句话说,内存控制器122可生成非优先级数据(以及IS内存132中的位置)的列表。可基于逻辑地址或物理地址识别位置。
当IS内存132中的所有数据块被处理时,内存控制器122将待再定位的非优先级主机数据传送到MS内存132。应注意,步骤1112可在处理IS内存132中的所有数据块之前执行。应注意,过程1100将优先级主机数据优先于非优先级主机数据保持在IS内存132中,即使非优先级主机数据比优先级主机数据“更新”。这可通过例如使优先级主机数据被更快地读取(相对于优先级主机数据已再定位到MS内存134的情况)而改进性能。
图12是内存控制器122基于优先级地址表144执行垃圾收集的过程1200的一个实施例的流程图。过程1200是过程400的步骤404的一个实施例。过程1200是过程500的步骤520的一个实施例。
步骤1202包含内存控制器122选择潜在牺牲块。“牺牲块”是在垃圾收集过程中将被擦除的内存单元块。“潜在牺牲块”是在垃圾收集过程中可能或可能不被擦除的牺牲块。应注意,潜在牺牲块可含有优先级主机数据和非优先级主机数据两个。在一些情况下,潜在牺牲块可含有优先级主机数据,但不含非优先级主机数据。在一些情况下,潜在牺牲块可含有非优先级主机数据,但不含优先级主机数据。在一个实施例中,在垃圾收集过程中仅擦除含有非优先级数据的块。换句话说,在垃圾收集过程的一个实施例中擦除含有优先级主机数据但不含非优先级主机数据的潜在牺牲块。在一个实施例中,潜在牺牲块是“擦除块”。擦除块是作为一个单位被擦除的块。
步骤1204是潜在牺牲块中是否存在非优先级主机数据的确定。内存控制器122将潜在牺牲块中的主机数据的逻辑地址与逻辑地址表144进行比较以作出此确定。如果潜在牺牲块中不存在非优先级主机数据,那么在一个实施例中结束对此潜在牺牲块的处理。因此,内存控制器122可在步骤1202中选择另一潜在牺牲块。
在潜在牺牲块含有非优先级主机数据的情况下,接着执行步骤1206。如果执行步骤1206,那么块不再被称为“潜在牺牲块”,而是被称为“牺牲块”。步骤1206包含内存控制器122将非优先级主机数据从牺牲块传送到MS内存132。应注意,内存控制器122可在将非优先级数据传送到MS内存132之前从多于一个牺牲块收集非优先级数据。
步骤1208包含确定牺牲块是否含有优先级主机数据。内存控制器122将牺牲块中的主机数据的逻辑地址与逻辑地址表144进行比较以作出此确定。
如果牺牲块中存在优先级主机数据,那么控制转到步骤1210。步骤1210包含内存控制器122将优先级主机数据从牺牲块传送到活动块。活动块有可能在垃圾收集过程开始之前并不含有任何有效数据,但其并非必须的。“活动块”是在垃圾收集过程之后将含有有效数据的块。在一个实施例中,活动块是擦除块。在步骤1210之后,控制转到步骤1212以擦除牺牲块。
此外,返回到步骤1208的论述,如果牺牲块中不存在任何优先级主机数据,那么控制也转到步骤1212以擦除牺牲块。如上文所提到,牺牲块可能不含任何优先级主机数据,在此情况下,应不对此牺牲块执行步骤1210。
再次返回到步骤1212的论述,在擦除牺牲块之后,牺牲块可返回到“空闲块”的池。当内存控制器122希望将新主机数据写入IS内存132时,内存控制器122可选择空闲块中的一个。
步骤1214是IS内存132中是否存在足够的空闲块的确定。如果是,那么过程可能结束。如果不存在足够空闲块,那么内存控制器122可在步骤1202处选择另一潜在牺牲块。
本文中所公开的第一实施例包含一种设备,所述设备包括:非易失性内存单元;及耦合到非易失性内存单元的内存控制器。内存控制器被配置成:将非易失性内存单元的第一群组指定为用于来自主机系统的主机数据的中间存储器,且将非易失性内存单元的第二群组指定为用于来自主机系统的主机数据的主存储器。中间存储器具有比主存储器的读出时延更低的读出时延。内存控制器被配置成从主机系统接收优先级地址,所述主机系统识别具有优先级以保留在中间存储器中的主机数据。内存控制器被配置成向具有优先级地址的主机数据提供优先级以保留在所述中间存储器中。
在第二实施例中,且在第一实施例的深入中,内存控制器进一步被配置成基于优先级地址管理主机数据是保留在非易失性内存单元的第一群组中还是再定位到非易失性内存单元的第二群组。
在第三实施例中,且在第一或第二实施例的深入中,内存控制器进一步被配置成基于优先级地址选择主机数据以用于从中间存储器再定位到主存储器,包含将具有除优先级地址中的一个以外的地址的主机数据从非易失性内存单元的第一群组再定位到非易失性内存单元的第二群组。
在第四实施例中,且在第一到第三实施例中的任一个的深入中,内存控制器进一步被配置成基于优先级地址在非易失性内存单元的第一群组内执行垃圾收集,包含内存控制器被配置成将具有优先级地址的主机数据保持在中间存储器中且将不具有优先级地址中的一个的主机数据再定位到主存储器。
在第五实施例中,且在第一到第四实施例中的任一个的深入中,内存控制器进一步被配置成:将非易失性内存单元的第一群组编程为每内存单元单个位;及将非易失性内存单元的第二群组编程为每内存单元多个位。
在第六实施例中,且在第一到第五实施例中的任一个的深入中,所述设备进一步包括具有存储有应用程序的非暂时性存储器的主机系统。主机系统进一步包括与非暂时性存储器通信的处理器。应用程序在处理器上执行时对操作系统应用程序编程接口(API)作出请求以便在优先级地址的主机数据接收优先级以保留在中间存储器中的指示下将优先级地址提供到内存控制器。
在第七实施例中,且在第六实施例的深入中,应用程序在处理器上执行时:监测主机数据的使用;及基于主机数据的使用选择用于非易失性内存单元的第一群组中的优先级存储器的主机数据。
在第八实施例中,且在第六或第七实施例的深入中,应用程序在处理器上执行时:提供允许选择用于中间存储器中的优先级存储器的主机数据的用户界面;接收用户界面中的对主机数据的选择;存取在用户界面中选定的主机数据的地址集合;及将选定主机数据的地址集合提供到内存控制器作为主机数据的优先级地址的集合。
在第九实施例中,且在第六到第八实施例中的任一个的深入中,应用程序在处理器上执行时:提供允许选择文件的优先级权重的用户界面,其中优先级权重是选自至少三个可能权重的值;接收用户界面中的对选定文件的优先级权重的选择;存取选定文件的地址集合,所述地址集合为优先级地址的集合;及在根据优先级权重的选定文件的地址集合具有保留在非易失性内存单元的第一群组中的优先级的指示下,将所述地址集合提供到内存控制器作为具有优先级权重的主机数据的优先级地址的集合。
在第十实施例中,且在第六到第九实施例中的任一个的深入中,所述设备进一步包括:耦合到内存控制器的通信接口;及耦合到通信接口的装置驱动器。装置驱动器被配置成使用非易失性内存存取协议与内存控制器通信。应用程序在处理器上执行时使用带内通信将优先级地址提供到内存控制器,所述带内通信包含装置驱动器和内存控制器使用非易失性内存存取协议通信。
在第十一实施例中,且在第一到第十实施例中的任一个的深入中,第一组非易失性内存单元包括ReRAM内存单元、相变存储器(PCM)内存单元或磁性RAM内存单元中的一或多个。
一个实施例包含一种操作非易失性内存系统的方法,所述非易失性内存系统包含通过通信链路连接的主机系统和非易失性存储装置。非易失性存储装置包括内存控制器和非易失性内存单元。所述方法包括:以每非易失性内存单元一个位将主机数据存储到包括非易失性内存单元的第一群组的中间存储器中;以每非易失性内存单元多个位将主机数据存储到包括非易失性内存单元的第二群组的主存储器中;经由通信链路将含有优先级逻辑地址的一或多个请求从主机系统提供到内存控制器,用于优先级逻辑地址的主机数据接收优先级以优先于并不具有优先级逻辑地址的主机数据保留在中间存储器中;及通过内存控制器向用于请求中的优先级逻辑地址的主机数据提供优先级以优先于并不具有优先级逻辑地址中的一个的主机数据保留在中间存储器中。
一个实施例包含非易失性内存系统,所述非易失性内存系统包括主机系统和具有非易失性内存单元的非易失性存储装置,包括:用于以每非易失性内存单元一个位将主机数据存储到包括第一组非易失性内存单元的中间存储器中且用于以每非易失性内存单元多个位将主机数据存储到包括第二组非易失性内存单元的主存储器中的编程构件;用于选择接收优先级以保留在中间存储器中的优先级主机数据的优先级主机数据选择构件;进一步用于在用于优先级逻辑地址的优先级主机数据接收优先级以保留在中间存储器中的指示下将用于优先级主机数据的优先级逻辑地址提供到非易失性存储装置的优先级主机数据提供构件;用于将优先级逻辑地址存储在非易失性存储装置中的优先级地址表中的优先级地址存储构件;及用于向具有优先级地址表中的优先级逻辑地址中的任一个的优先级主机数据提供优先级以优先于具有不在优先级地址表中的逻辑地址的主机数据保留在中间存储器中的内存控制器构件。
在一个实施例中,编程构件包括内存控制器122、处理器122c、状态机112、片上地址解码器114、功率控制116、解码器124/132、读/写电路128、后端模块中的一或多个。编程构件可包括其它硬件和/或软件(例如,在处理器上执行时实施编程构件的全部或一部分的代码)。
在一个实施例中,优先级主机数据选择构件包括主机处理器150及/或优先级主机数据应用程序164(其可为在处理器150上执行的代码)中的一或多个。优先级主机数据选择构件可包括其它硬件和/或软件(例如,在处理器上执行时实施优先级主机数据选择构件的全部或一部分的代码)。
在一个实施例中,优先级主机数据提供构件包括主机处理器150、优先级主机数据应用程序164、O/S API 166、文件系统168、装置驱动器170中的一或多个。优先级主机数据提供构件可包括其它硬件和/或软件(例如,在处理器上执行时实施优先级主机数据提供构件的全部或一部分的代码)。
在一个实施例中,优先级地址存储构件包括内存控制器122、处理器122c、RAM122b、缓冲器管理/总线控制314、中间存储器管理控制334中的一或多个。优先级地址存储构件可包括其它硬件和/或软件(例如,在处理器上执行时实施优先级地址存储构件的全部或一部分的代码)。
在一个实施例中,内存控制器构件包括内存控制器122、处理器122c、中间存储器管理控制334中的一或多个。内存控制器构件可包括其它硬件和/或软件(例如,在处理器上执行时实施内存控制器构件的全部或一部分的代码)。
一个实施例进一步包含用于接收提供到API的优先级逻辑地址的装置驱动器构件,所述装置驱动器构件进一步用于将优先级逻辑地址提供到内存控制器构件。装置驱动器构件可包括主机处理器150、装置驱动器170中的一或多个。装置驱动器构件可包括其它硬件和/或软件(例如,在处理器上执行时实施装置驱动器构件的全部或一部分的代码)。
上述构件(例如,编程构件、优先级主机数据选择构件、优先级主机数据提供构件、优先级地址存储构件、内存控制器构件、装置驱动器构件)中的任一个可包含封装功能性硬件单元(例如,电路)、可由通常执行相关功能中的特定功能的一或多个处理器或处理电路执行的程序代码(例如,软件或固件),或与较大系统介接的独立硬件或软件组件。举例来说,上述构可包含可包含专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、离散电路的组合、栅极,或任何其它类型的硬件,或其组合。
出于本文的目的,术语“写入(write)”和“存储(store)”通常可互换地使用,术语“写入(writing)”和“存储(storing)”也如此。
出于本文的目的,说明书中对"实施例"、"一个实施例"、"一些实施例"或"另一实施例"的引用可用于描述不同的实施例或相同的实施例。
出于本文的目的,连接可以是直接连接或间接连接(例如,经由一个或多个其它部分)。在一些情况下,当元件被称为连接或耦合到另一元件时,所述元件可以直接连接到另一元件或经由介入元件间接连接到另一元件。当一个元件被称为直接连接到另一个元件时,则在所述元件和另一个元件之间没有介入元件。如果两个装置直接或间接连接,使得这两个装置可以在它们之间传达电子信号,那么这两个装置“通信”。
出于本文的目的,术语“基于”和“取决于”可解读为“至少部分地基于”。
虽然上文已经描述了本发明技术的各种实施例,但是应理解,这些实施例仅通过实例来呈现,而不是限制性的。对于相关领域的技术人员来说显而易见的是,在不脱离技术的精神和范围的情况下,可在其中进行形式和细节上的各种改变。举例来说,尽管上文已经详细地描述几个变化,但其它修改或添加也是可能的。具体来说,除了在本文中阐述的那些特征和/或变化之外,还可以提供其它特征和/或变化。举例来说,上文所描述的实施方案可以涉及所公开的特征的各种组合和子组合和/或上文公开的若干其它特征的组合和子组合。另外,附图中所描绘的和/或本文中所描述的逻辑流并不需要所示出的特定次序或顺序次序来实现所希望的结果。其它实施例可在所附权利要求书的范围内。
上文已经借助于说明指定功能的性能及其关系的功能构建块来描述本发明技术的实施例。为了便于描述,通常在本文中界定这些功能构建块的边界。只要适当地执行指定功能及其关系,便可界定替代的边界。因此任何此类替代边界都在所要求的技术的范围和精神内。所属领域的技术人员将认识到,这些功能构建块可以通过离散组件、专用集成电路、执行适当的软件的处理器等或其任何组合来实施。
本发明技术的广度和范围不应受上述示例性实施例中的任一个限制,但应仅根据所附权利要求书和其等效物界定。
尽管已经以特定地针对结构特征和/或方法动作的语言来描述主题,但应理解,所附权利要求书中所界定的主题未必限于上文所描述的特定特征或动作。相反地,公开以上描述的具体特征和动作作为实施权利要求的示例形式。
已出于说明和描述的目的呈现以上详细描述。它并不意欲为穷尽的或将本发明限于所公开的精确形式。鉴于上文教导,许多修改和变化都是可能的。所描述的实施例被选定用来最佳解释所提议技术的原理和其实际应用,由此使得所属领域的其它技术人员能够在各种实施例中最佳地利用适合于所预期的特定用途的各种修改来使用它。本发明的范围由所附权利要求书限定。
Claims (15)
1.一种设备,其包括:
非易失性内存单元(126);及
内存控制器(122),其耦合到所述非易失性内存单元,所述内存控制器被配置成:
将所述非易失性内存单元的第一群组指定为用于来自主机系统(140)的主机数据的中间存储器(132),且将所述非易失性内存单元第二群组指定为用于来自所述主机系统的主机数据的主存储器(134),其中所述中间存储器具有比所述主存储器的读出时延更低的读出时延;
从所述主机系统接收优先级地址,所述主机系统识别具有优先级以保留在所述中间存储器中的主机数据;及
向具有所述优先级地址的主机数据提供优先级以保留在所述中间存储器中。
2.根据权利要求1所述的设备,其中所述内存控制器进一步被配置成:
基于所述优先级地址管理所述主机数据是保留在所述非易失性内存单元的所述第一群组中还是再定位到所述非易失性内存单元的所述第二群组。
3.根据权利要求1或2中任一权利要求所述的设备,其中所述内存控制器进一步被配置成:
基于所述优先级地址选择主机数据以用于从所述中间存储器再定位到所述主存储器,包含将具有除所述优先级地址中的一个以外的地址的主机数据从所述非易失性内存单元的所述第一群组再定位到所述非易失性内存单元的所述第二群组。
4.根据权利要求1到3中任一权利要求所述的设备,其中所述内存控制器进一步被配置成基于所述优先级地址在所述非易失性内存单元的所述第一群组内执行垃圾收集,包含所述内存控制器被配置成将具有所述优先级地址的主机数据保持在所述中间存储器中且将不具有所述优先级地址中的一个的主机数据再定位到所述主存储器。
5.根据权利要求1到4中任一权利要求所述的设备,其中所述内存控制器进一步被配置成:
将所述非易失性内存单元所述第一群组编程为每内存单元单个位;及
将所述非易失性内存单元的所述第二群组编程为每内存单元多个位。
6.根据权利要求1到5中任一权利要求所述的设备,其进一步包括具有存储有应用程序的非暂时性存储器的所述主机系统,其中所述主机系统进一步包括与所述非暂时性存储器通信的处理器,其中所述应用程序在所述处理器上执行时对操作系统应用程序编程接口(API)作出请求以便在所述优先级地址的所述主机数据接收优先级以保留在所述中间存储器中的指示下将所述优先级地址提供到所述内存控制器。
7.根据权利要求6所述的设备,其中所述应用程序在所述处理器上执行时:
监测主机数据的使用;及
基于主机数据的所述使用选择用于所述非易失性内存单元的所述第一群组中的优先级存储器的主机数据。
8.根据权利要求6或7所述的设备,其中所述应用程序在所述处理器上执行时:
提供允许选择用于所述中间存储器中的优先级存储器的主机数据的用户界面;
接收所述用户界面中的对主机数据的选择;
存取在所述用户界面中选定的所述主机数据的地址集合;及
将选定主机数据的所述地址集合提供到所述内存控制器作为所述主机数据的所述优先级地址的集合。
9.根据权利要求6到8中任一权利要求所述的设备,其中所述应用程序在所述处理器上执行时:
提供允许选择文件的优先级权重的用户界面,其中所述优先级权重是选自至少三个可能权重的值;
接收所述用户界面中的对选定文件的优先级权重的选择;
存取选定文件的地址集合,所述地址集合为所述优先级地址的集合;及
在根据所述优先级权重的选定文件的所述地址集合具有保留在所述非易失性内存单元的所述第一群组中的优先级的指示下,将所述地址集合提供到所述内存控制器作为具有所述优先级权重的所述主机数据的所述优先级地址的集合。
10.根据权利要求1到9中任一权利要求所述的设备,其进一步包括:
通信接口,其耦合到所述内存控制器;及
装置驱动器,其耦合到所述通信接口,所述装置驱动器被配置成使用非易失性内存存取协议与所述内存控制器通信,其中所述应用程序在所述处理器上执行时使用带内通信将所述优先级地址提供到所述内存控制器,所述带内通信包含所述装置驱动器和所述内存控制器使用所述非易失性内存存取协议通信。
11.根据权利要求1到10中任一权利要求所述的设备,其中所述第一组非易失性内存单元包括ReRAM内存单元、相变存储器(PCM)内存单元或磁性RAM内存单元中的一或多个。
12.一种操作非易失性内存系统的方法,所述非易失性内存系统包括通过通信链路连接的主机系统和非易失性存储装置,所述非易失性存储装置包括内存控制器和非易失性内存单元,所述方法包括:
以每非易失性内存单元一个位将主机数据存储到包括所述非易失性内存单元的第一群组的中间存储器中;
以每非易失性内存单元多个位将主机数据存储到包括所述非易失性内存单元的第二群组的主存储器中;
经由通信链路将含有优先级逻辑地址的一或多个请求从所述主机系统提供到所述内存控制器,用于优先级逻辑地址的主机数据接收优先级以优先于并不具有优先级逻辑地址的主机数据保留在所述中间存储器中;及
通过所述内存控制器向用于所述请求中的所述优先级逻辑地址的主机数据提供优先级以优先于并不具有所述优先级逻辑地址中的一个的主机数据保留在所述中间存储器中。
13.根据权利要求12所述的方法,其中向用于所述请求中的所述优先级逻辑地址的主机数据提供优先级以保留在所述中间存储器中包括:
将具有并非所述优先级逻辑地址中的一个的非优先级逻辑地址的主机数据从所述非易失性内存单元的所述第一群组冲刷到所述非易失性内存单元的所述第二群组。
14.根据权利要求12或13所述的方法,其中向用于所述请求中的所述优先级逻辑地址的主机数据提供优先级以保留在所述中间存储器中包括:
基于所述优先级逻辑地址在所述非易失性内存单元的所述第一群组内执行垃圾收集,包含将具有并非所述优先级逻辑地址中的一个的非优先级逻辑地址的主机数据从所述非易失性内存单元的所述第一群组传送到所述非易失性内存单元的所述第二群组。
15.根据权利要求12到14中任一权利要求所述的方法,其进一步包括:
将所述一或多个请求提供到所述主机系统的操作系统应用程序编程接口(API)以将所述一或多个请求转发到所述内存控制器。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862660123P | 2018-04-19 | 2018-04-19 | |
US62/660,123 | 2018-04-19 | ||
US15/982,805 US10776268B2 (en) | 2018-04-19 | 2018-05-17 | Priority addresses for storage cache management |
US15/982,805 | 2018-05-17 | ||
PCT/US2019/016713 WO2019203915A1 (en) | 2018-04-19 | 2019-02-05 | Storage cache management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111373383A true CN111373383A (zh) | 2020-07-03 |
CN111373383B CN111373383B (zh) | 2023-05-23 |
Family
ID=68237920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980005905.9A Active CN111373383B (zh) | 2018-04-19 | 2019-02-05 | 存储器高速缓存管理 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10776268B2 (zh) |
KR (1) | KR102378295B1 (zh) |
CN (1) | CN111373383B (zh) |
DE (1) | DE112019000161T5 (zh) |
WO (1) | WO2019203915A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112069147A (zh) * | 2020-11-16 | 2020-12-11 | 湖南源科创新科技有限公司 | 面向多主机fat文件系统的fat共享系统及共享方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10496548B2 (en) * | 2018-02-07 | 2019-12-03 | Alibaba Group Holding Limited | Method and system for user-space storage I/O stack with user-space flash translation layer |
JP2020021385A (ja) * | 2018-08-03 | 2020-02-06 | キオクシア株式会社 | メモリシステム |
US11194473B1 (en) * | 2019-01-23 | 2021-12-07 | Pure Storage, Inc. | Programming frequently read data to low latency portions of a solid-state storage array |
TW202225987A (zh) | 2020-12-21 | 2022-07-01 | 韓商愛思開海力士有限公司 | 用以分配儲存裝置的多個記憶通道以進行串流資料寫入的方法、儲存裝置及其記錄媒體 |
US20220374216A1 (en) * | 2021-05-20 | 2022-11-24 | Lenovo (United States) Inc. | Method of manufacturing information processing apparatus and mobile computer |
US11934672B2 (en) | 2021-08-26 | 2024-03-19 | International Business Machines Corporation | Cached workload management for a multi-tenant host |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040143586A1 (en) * | 2003-01-22 | 2004-07-22 | Nexon Corporation | Method of controlling user application program |
US20040193806A1 (en) * | 2003-03-26 | 2004-09-30 | Matsushita Electric Industrial Co., Ltd. | Semiconductor device |
CN101617295A (zh) * | 2007-02-20 | 2009-12-30 | 国际商业机器公司 | 在故障切换之后对高速缓存数据的保存 |
US20110213945A1 (en) * | 2010-02-26 | 2011-09-01 | Apple Inc. | Data partitioning scheme for non-volatile memories |
US20130042058A1 (en) * | 2007-08-14 | 2013-02-14 | Samsung Electronics Co., Ltd. | Solid state memory (ssm), computer system including an ssm, and method of operating an ssm |
US20130262761A1 (en) * | 2012-03-29 | 2013-10-03 | Samsung Electronics Co., Ltd. | Memory device and method of operating the same |
CN105074673A (zh) * | 2012-12-26 | 2015-11-18 | 西部数据技术公司 | 用于数据存储系统的基于优先级的垃圾收集 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6463509B1 (en) | 1999-01-26 | 2002-10-08 | Motive Power, Inc. | Preloading data in a cache memory according to user-specified preload criteria |
US7774563B2 (en) | 2007-01-09 | 2010-08-10 | International Business Machines Corporation | Reducing memory access latency for hypervisor- or supervisor-initiated memory access requests |
US8499120B2 (en) | 2008-10-17 | 2013-07-30 | Seagate Technology Llc | User selectable caching management |
JP5192352B2 (ja) | 2008-10-30 | 2013-05-08 | 株式会社日立製作所 | 記憶装置及びデータ格納領域管理方法 |
US9268692B1 (en) | 2012-04-05 | 2016-02-23 | Seagate Technology Llc | User selectable caching |
WO2014061064A1 (en) | 2012-10-18 | 2014-04-24 | Hitachi, Ltd. | Cache control apparatus and cache control method |
US9110813B2 (en) | 2013-02-14 | 2015-08-18 | Avago Technologies General Ip (Singapore) Pte Ltd | Cache load balancing in storage controllers |
WO2014164922A1 (en) | 2013-03-11 | 2014-10-09 | New Concepts Development Corp. | Managing storage space in hybrid data storage systems |
JP6098301B2 (ja) | 2013-03-29 | 2017-03-22 | 富士通株式会社 | ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム |
US9645920B2 (en) | 2013-06-25 | 2017-05-09 | Marvell World Trade Ltd. | Adaptive cache memory controller |
US9563382B2 (en) | 2014-06-05 | 2017-02-07 | Sandisk Technologies Llc | Methods, systems, and computer readable media for providing flexible host memory buffer |
JP5974133B1 (ja) | 2015-03-20 | 2016-08-23 | 株式会社東芝 | メモリシステム |
US20160283390A1 (en) | 2015-03-27 | 2016-09-29 | Intel Corporation | Storage cache performance by using compressibility of the data as a criteria for cache insertion |
US10579288B2 (en) * | 2017-08-31 | 2020-03-03 | Micron Technology, Inc. | Prioritized security |
-
2018
- 2018-05-17 US US15/982,805 patent/US10776268B2/en active Active
-
2019
- 2019-02-05 DE DE112019000161.2T patent/DE112019000161T5/de active Pending
- 2019-02-05 WO PCT/US2019/016713 patent/WO2019203915A1/en active Application Filing
- 2019-02-05 CN CN201980005905.9A patent/CN111373383B/zh active Active
- 2019-02-05 KR KR1020207014439A patent/KR102378295B1/ko active IP Right Grant
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040143586A1 (en) * | 2003-01-22 | 2004-07-22 | Nexon Corporation | Method of controlling user application program |
US20040193806A1 (en) * | 2003-03-26 | 2004-09-30 | Matsushita Electric Industrial Co., Ltd. | Semiconductor device |
CN101617295A (zh) * | 2007-02-20 | 2009-12-30 | 国际商业机器公司 | 在故障切换之后对高速缓存数据的保存 |
US20130042058A1 (en) * | 2007-08-14 | 2013-02-14 | Samsung Electronics Co., Ltd. | Solid state memory (ssm), computer system including an ssm, and method of operating an ssm |
US20110213945A1 (en) * | 2010-02-26 | 2011-09-01 | Apple Inc. | Data partitioning scheme for non-volatile memories |
US20130262761A1 (en) * | 2012-03-29 | 2013-10-03 | Samsung Electronics Co., Ltd. | Memory device and method of operating the same |
CN105074673A (zh) * | 2012-12-26 | 2015-11-18 | 西部数据技术公司 | 用于数据存储系统的基于优先级的垃圾收集 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112069147A (zh) * | 2020-11-16 | 2020-12-11 | 湖南源科创新科技有限公司 | 面向多主机fat文件系统的fat共享系统及共享方法 |
CN112069147B (zh) * | 2020-11-16 | 2021-01-29 | 湖南源科创新科技有限公司 | 面向多主机fat文件系统的fat共享系统及共享方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2019203915A1 (en) | 2019-10-24 |
KR20200133716A (ko) | 2020-11-30 |
US20190324903A1 (en) | 2019-10-24 |
DE112019000161T5 (de) | 2020-08-27 |
KR102378295B1 (ko) | 2022-03-25 |
US10776268B2 (en) | 2020-09-15 |
CN111373383B (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108694128B (zh) | 存储器系统和用于数据存储的方法 | |
CN111373383B (zh) | 存储器高速缓存管理 | |
US10102119B2 (en) | Garbage collection based on queued and/or selected write commands | |
US10073627B2 (en) | Addressing, interleave, wear leveling, and initialization schemes for different chip enables and memory arrays of different types | |
US10162748B2 (en) | Prioritizing garbage collection and block allocation based on I/O history for logical address regions | |
US8886990B2 (en) | Block management schemes in hybrid SLC/MLC memory | |
KR102533207B1 (ko) | 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템 | |
US10229049B2 (en) | Storage system that performs host-initiated garbage collection | |
US20160062885A1 (en) | Garbage collection method for nonvolatile memory device | |
US9633738B1 (en) | Accelerated physical secure erase | |
CN110088739B (zh) | 用于精简配置的存储系统和方法 | |
US9875039B2 (en) | Method and apparatus for wear-leveling non-volatile memory | |
US9904477B2 (en) | System and method for storing large files in a storage device | |
US11543987B2 (en) | Storage system and method for retention-based zone determination | |
CN112306902A (zh) | 存储器控制器及操作其的方法 | |
CN112306385A (zh) | 存储器控制器及其操作方法 | |
CN111309642B (zh) | 一种存储器及其控制方法与存储系统 | |
CN112783435A (zh) | 存储设备和操作存储设备的方法 | |
US20240070033A1 (en) | Storage device including nonvolatile memory device and operating method of storage device | |
US20240078027A1 (en) | Storage device including nonvolatile memory device and operating method of storage device | |
CN118215905A (zh) | 用于主机缓冲区管理的数据存储设备和方法 | |
KR20240008590A (ko) | 저장 장치 및 그 동작 방법 | |
KR20230048747A (ko) | 메모리 시스템 및 메모리 시스템의 동작 방법 |
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 |