CN114637695A - 用于两遍编程存储器装置的日志方案 - Google Patents
用于两遍编程存储器装置的日志方案 Download PDFInfo
- Publication number
- CN114637695A CN114637695A CN202111520494.2A CN202111520494A CN114637695A CN 114637695 A CN114637695 A CN 114637695A CN 202111520494 A CN202111520494 A CN 202111520494A CN 114637695 A CN114637695 A CN 114637695A
- Authority
- CN
- China
- Prior art keywords
- log
- data
- pass
- memory
- programming operation
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in 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/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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the 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/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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/7205—Cleaning, compaction, garbage collection, erase control
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)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请案涉及用于两遍编程存储器装置的日志方案。一种存储器系统在与存储器装置相关联的逻辑到物理L2P日志中识别反映两遍编程操作的第一日志条目,其中所述两遍编程操作包含将数据编程到由第二物理地址识别的第二存储器位置的第一遍及将相同数据编程到由相同第二物理地址识别的相同第二存储器位置的第二遍。所述系统确定所述两遍编程操作的所述第二遍是否已完成。响应于确定所述两遍编程操作的所述第二遍已完成,所述系统致使所述L2P日志的第二日志条目从引用第一物理地址改为引用所述第二物理地址。所述系统使用所述第二日志条目来重构所述L2P表。
Description
技术领域
本公开的实施例大体上涉及存储器子系统,且更具体来说,涉及用于两遍编程存储器装置的日志方案。
背景技术
存储器子系统可包含存储数据的一或多个存储器装置。所述存储器装置可为例如非易失性存储器装置及易失性存储器装置。一般来说,主机系统可利用存储器子系统来将数据存储在所述存储器装置处及从所述存储器装置检索数据。
发明内容
一方面,本申请案提供一种系统,其包括:存储器装置;及处理装置,其与多个存储器装置可操作地耦合,以执行包括以下的操作:由处理装置在与存储器装置相关联的逻辑到物理(L2P)日志中识别反映两遍编程操作的第一日志条目,其中所述两遍编程操作包括将数据编程到由第二物理地址识别的第二存储器位置的第一遍及将相同数据编程到由相同第二物理地址识别的相同第二存储器位置的第二遍;确定所述两遍编程操作的所述第二遍是否已完成;响应于确定所述两遍编程操作的所述第二遍已完成,致使所述L2P日志的第二日志条目从引用第一物理地址改为引用所述第二物理地址,其中所述第一物理地址识别编程有所述数据的第一存储器位置;及响应于检测到掉电后的通电事件,使用所述第二日志条目来重构所述L2P表。
另一方面,本申请案进一步提供一种方法,其包括:由处理装置在与存储器装置相关联的逻辑到物理(L2P)日志中识别反映两遍编程操作的第一日志条目,其中所述两遍编程操作包括将数据编程到由第二物理地址识别的第二存储器位置的第一遍及将相同数据编程到由相同第二物理地址识别的相同第二存储器位置的第二遍;确定所述两遍编程操作是否已被掉电事件中断;响应于确定所述两遍编程操作已在掉电事件期间中断,致使所述L2P日志的第二日志条目从引用第一物理地址改为引用所述第二物理地址,其中所述第一物理地址识别编程有所述数据的第一存储器位置;及响应于检测到掉电后的通电事件,使用所述第二日志条目来重构所述L2P表。
又一方面,本申请案进一步提供一种包括指令的非暂时性计算机可读存储媒体,所述指令在由处理装置执行时致使所述处理装置执行包括以下的操作:由处理装置在与存储器装置相关联的逻辑到物理(L2P)日志中识别反映两遍编程操作的第一日志条目,其中所述两遍编程操作包括将数据编程到由第二物理地址识别的第二存储器位置的第一遍及将相同数据编程到由相同第二物理地址识别的相同第二存储器位置的第二遍;确定所述两遍编程操作的所述第二遍是否已完成;响应于确定所述两遍编程操作的所述第二遍已完成,致使所述L2P日志的第二日志条目从引用第一物理地址改为引用所述第二物理地址,其中所述第一物理地址识别编程有所述数据的第一存储器位置;及响应于检测到掉电后的通电事件,使用所述第二日志条目来重构所述L2P表。
附图说明
从下文所给出的详细描述及从本公开的各种实施例的附图,将更全面地理解本公开。然而,附图不应被视为将本公开限于特定实施例,而是仅用于解释及理解。
图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
图2说明根据本公开的一些实施例的执行两遍编程操作的系统的框图。
图3说明根据本公开的一些实施例的用于记录两遍编程操作的流程图。
图4说明根据本公开的一些实施例的逻辑到物理(L2P)日志的框图。
图5说明根据本公开的一些实施例的队列的框图。
图6说明根据本公开的一些实施例的重放L2P日志的流程图。
图7说明根据本公开的一些实施例的重放信息表的框图。
图8是根据本公开的一些实施例的用于重放L2P日志的实例方法的流程图。
图9是根据本公开的一些实施例的用于重放L2P日志的实例方法的流程图。
图10是本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
本公开的方面涉及用于两遍编程存储器装置的日志方案。存储子系统可为存储装置、存储器模块或存储装置或存储器模块的组合。下文结合图1描述存储装置及存储器模块的实例。一般来说,主机系统可利用包含一或多个组件的存储器子系统,例如存储数据的存储器装置。主机系统可提供将存储在存储器子系统处的数据且可请求将从存储器子系统检索的数据。
存储器子系统可包含高密度非易失性存储器装置,其中当没有电力经供应到所述存储器装置时期望保留数据。非易失性存储器装置的一个实例是“与非”(NAND)存储器装置。下文结合图1描述非易失性存储器装置的其它实例。非易失性存储器装置是一或多个裸片的封装。每一裸片可由一或多个平面组成。对于一些类型的非易失性存储器装置(例如,NAND装置),每一平面由一组物理块组成。每一块由一组页面组成。每一页面由一组存储器单元(“单元”)组成。单元是存储信息的电子电路。取决于单元类型,单元可存储一或多位二进制信息,且具有与被存储的位的数目相关的各种逻辑状态。所述逻辑状态可由二进制值,例如“0”及“1”,或此类值的组合来表示。
存储器装置可包含布置成二维网格的多个存储器单元。所述存储器单元呈列(在后文中也被称为位线)及行(在后文中也被称为字线)的阵列蚀刻到硅晶片上。字线可指存储器装置的存储器单元的一或多个行,所述行与一或多个位线一起使用以产生存储器单元中的每一者的地址。位线与字线的相交点构成存储器单元的地址。后文中的块是指用于存储数据的存储器装置的单位且可包含存储器单元群组、字线群组、字线或个别存储器单元。一或多个块可分组在一起以形成存储器装置的平面以便允许在每一平面上进行并发操作。存储器装置可包含执行两个或更多个存储器平面的并发存储器页面存取的电路系统。例如,存储器装置可包含用于存储器装置的每一平面的相应存取线驱动器电路及电源电路以促进两个或更多个存储器平面的并发页面存取,包含不同页面类型。
为了将由存储器子系统采用的存储器装置的物理实施方案的各个方面与主机系统隔离,存储器子系统可维持将每一逻辑地址映射到对应物理地址(PA)的数据结构。在一些实施方案中,所述物理地址可包含通道识别符、裸片识别符、页面识别符、平面识别符及/或帧识别符。映射数据结构在本文中被称为逻辑到物理(L2P)表。
L2P表可由存储器子系统控制器的固件来维持且可经存储在存储器子系统的一或多个非易失性存储器装置上。为了提高主机系统与存储器子系统之间的数据传送的总体效率,L2P表可至少部分地由存储器子系统的一或多个易失性存储器装置来高速缓存。
在L2P表已完全存储到非易失性存储器装置之前可能发生意外掉电事件,从而可能使L2P表处于与存储器装置状态不一致的状态。因此,有效的掉电恢复策略应能够将L2P表重构为与由存储器子系统存储的数据的状态同步的一致状态。
每单元存储4位值的四电平单元(QLC)存储器装置可引入新的两遍编程命令以便减轻编程干扰,所述编程干扰由单元间干扰所引起,其中在页面编程事件期间一位无意中从“1”编程为“0”。所述两遍编程命令指定相同数据经由第一遍及第二遍编程到同一QLC存储器两次。第一遍编程不是最终的或在第一遍中编程的数据尚未准备好服务于读取操作。第二遍中的数据被视为已最终化且准备好服务于读取操作。所述两遍一起是两遍编程操作。因为编程到QLC存储器的数据直到数据在第二遍中最终化后才准备好服务于读取操作,所以数据也经编程到单电平单元(SLC)存储器高速缓存以能够在QLC存储器被最终化之前服务于读取操作。写入到SLC及接着写入到QLC两者将需要被记录因此可从掉电恢复重构L2P表。日志跟踪由存储器子系统控制器的固件对L2P表所做的更改。
一种方法是在将数据写入到SLC时记录一次且接着在将数据写入到QLC时再记录一次。这种方法将使需要响应于掉电事件而被重放以进行L2P表重构的日志条目的数目加倍。
本公开的方面通过利用工作集日志条目连同旧日志条目而解决上述及其它缺陷,其中当存储器子系统识别用于两遍编程操作的QLC块条时,将工作集(worklet)日志条目添加到日志。“工作集”是指由两遍编程操作执行的一组任务。块条是存储器装置的块的有序集合,一个块来自存储器装置的每一裸片的每一平面,使得块的集合被视为基本可编程单位。当执行写入到SLC块条时,将旧日志条目添加到日志且旧日志引用SLC块条。接着,当在编程操作的第二遍期间完成写入到QLC时,旧日志条目将引用QLC块条。队列可跟踪正在进行中的两遍编程中的第二遍,如图5中进一步描述。
可发生两遍编程的若干场景。在说明性实例中,掉电事件可能发生在两遍编程,即,写入到QLC之前。在这种情况下,数据仍在SLC中且重放可基于引用SLC地址的旧日志条目继续进行。在另一说明性实例中,掉电事件可发生在两遍编程,即,写入到QLC期间。在这种情况下,即使数据可能已迁移到QLC,L2P表也可能不会被更新。因此,在重放期间,对应于工作集日志的旧日志条目将引用QLC地址。在此,QLC地址可经存储在工作集日志条目中以用于两遍编程操作。在又一说明性实例中,掉电事件可发生在两遍编程已完成之后。在这种情况下,存储器子系统将使反映两遍编程操作的工作集中的块条编号无效。在重放期间,对应于工作集日志条目的旧日志条目将使用工作集日志条目中的信息来引用QLC地址。这些场景可通过工作集日志条目中的相应元数据来跟踪。
在重放期间,可使用重放信息(info)表(在日志重放期间创建的临时表)来决定旧日志条目是引用QLC地址还是SLC地址,如图6中进一步描述。以这种方式,重放旧日志条目以引用SLC地址或QLC地址避免了重放编程到SLC地址且接着再一次重放编程到QLC地址。
上文所引用的方法及系统的各个方面在下文中以实例方式而非以限制方式进行详细描述。
图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(3D NAND)。
存储器装置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可包含经配置以执行存储在本地存储器119中的指令的处理装置,所述处理装置包含一或多个处理器(例如,处理器117)。在所说明实例中,存储器子系统控制器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可包含可从存储器子系统控制器115接收地址且对地址进行解码以存取存储器装置130的高速缓存或缓冲器(例如,DRAM)及地址电路系统(例如,行解码器及列解码器)。
在一些实施例中,存储器装置130包含结合存储子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作的本地媒体控制器135。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器子系统110是受管理存储器装置,其是具有裸片上的控制逻辑(例如,本地控制器135)及用于相同存储器装置封装内的媒体管理的控制器(例如,存储器子系统控制器115)的原始存储器装置130。受管理存储器装置的实例是受管理NAND(MNAND)装置。
在一个实施例中,存储器子系统110包含可管理L2P操作记录的L2P记录组件113。特定来说,L2P日志组件可记录两遍编程操作的条目,其中两遍编程操作首先将数据写入到SLC且接着将数据迁移到QLC。在掉电之后的通电事件后,L2P日志组件113可重放日志条目以重构L2P表。在一些实施例中,存储器子系统控制器115包含L2P日志组件113的至少一部分。在一些实施例中,L2P日志组件113是主机系统110、应用程序或操作系统的部分。在其它实施例中,本地媒体控制器135包含L2P日志组件113的至少一部分且经配置以执行本文中所描述的功能性。下文描述关于L2P日志组件113的操作的进一步细节。
图2说明根据本公开的一些实施例的执行两遍编程操作的系统的框图。系统200可表示图1的存储器子系统110。参考图2,系统200可包含四电平单元(QLC)存储器装置210(作为存储器装置130-140的部分)及存储器控制器115。存储器控制器115可包含写入缓冲器201、单电平单元(SLC)高速缓存207、L2P日志组件113、迁移模块211及完成通知213。
写入缓冲器201可存储由主机系统120提交给存储器子系统的写入命令及/或由控制器115发起的写入命令(例如,废弃项目收集)。控制器115可对SLC高速缓存207中的SLC块条执行写入命令。
QLC存储器装置210可为存储器装置130-140的部分。在一些实施例中,SLC高速缓存207可为控制器115或存储器装置130-140的部分。
迁移模块211可将数据从SLC高速缓存207迁移到QLC存储器装置210。例如,迁移模块211可指派一组SLC及QLC块条。当所述组SLC块条(作为SLC高速缓存207的部分)达到预定容量阈值(例如,满)时,迁移模块211可将数据从所述组SLC块条集迁移到QLC块条以在QLC块条处执行两遍编程操作。在一个实施例中,迁移模块211可为独立模块。在另一实施例中,迁移模块211与L2P日志组件113及/或存储器控制器115集成在一起。存储器控制器115可向主机120传达存储器操作已完成的通知。
此外,L2P日志组件113可将L2P日志221中的日志条目存储在数据存储区220中,且可将工作集存储在队列223中。数据存储区220可为本地存储器119及/或存储器装置130-140的部分。
系统200可执行两遍编程操作以将数据写入到QLC存储器装置210。在两遍编程操作之前,为了确保数据可用,首先将数据写入到SLC高速缓存207。当写入操作完成时,将完成通知213发送回到发起写入操作的一方。在一个实施例中,当SLC高速缓存207累积至少预定量的经存储数据时,迁移模块211将数据从SLC高速缓存207迁移到QLC存储器装置210(例如,批量更新)。例如,经存储数据的预定阈值可为4个SLC块条。例如,当SLC高速缓存207累积4个SLC块条的有效数据时,迁移模块211发起数据从4个SLC块条到1个QLC块条的迁移。对于迁移,将相同数据编程到同一QLC块条两次(第一遍及第二遍)以最终化所述数据。
当存储器控制器将数据写入到SLC高速缓存时,L2P日志组件113将旧日志条目添加到L2P日志。旧日志条目包含对SLC高速缓存中写入数据的地址的引用。当存储器控制器将QLC块条指派给SLC块条以用于两遍编程操作时,L2P日志组件113将工作集日志条目添加到L2P日志。工作集日志条目包含队列中的条目(例如图5中的条目501)的识别符(如图5中进一步论述)。工作集日志条目还可包含版本编号。版本编号确保队列中的经引用条目与工作集日志条目是相同版本。工作集日志条目还可包含SLC块条的一或多个识别符,所述识别符是SLC高速缓存中将编程数据的位置,且可进一步包含QLC块条的识别符,所述识别符是QLC存储器装置中将编程数据的位置。
图3说明根据本公开的一些实施例的记录两遍编程操作的方法的流程图。方法300可由处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,流程图300的操作由图1的L2P日志组件113来执行。
在操作301,处理逻辑确定(经由存储器控制器115)是否关于SLC高速缓存207执行写入操作。写入操作可由主机120或控制器115发起。
在操作303,处理逻辑确定写入操作是否涉及一组新的SLC-QLC块条。实例组可为4个SLC块条及1个QLC块条。最初,处理逻辑可将一组新的SLC-QLC块条指派给写入操作。写入操作可在4个SLC块条中循序地执行。当4个SLC块条已满时,将4个SLC块条迁移到QLC块条。可循序地选择QLC块条以用于编程。
在操作305,如果写入操作不涉及一组新的SLC-QLC块条,那么处理逻辑将旧日志条目添加到L2P日志221。旧日志条目包含指代写入操作的物理位置的SLC块条编号。可重放旧日志条目以在掉电后的通电事件之后重构L2P表。
在操作307,如果写入操作涉及一组新的SLC-QLC块条,那么处理逻辑将工作集日志条目添加到L2P日志221。工作集日志条目包含SLC-QLC块条的信息。工作集日志条目可用于指示所述组SLC-QLC块条存在对应旧日志条目,如图4中进一步论述。处理逻辑进一步将工作集添加到队列223。工作集日志条目可跟踪正在进行中的两遍编程操作(例如,如果数据迁移正在进行中、已完成或尚未开始)。L2P日志组件113可使用工作集日志及重放信息表来确定旧日志条目是否应代替地引用QLC块条编号,如图5中进一步论述。
图4说明根据本公开的一些实施例的逻辑到物理(L2P)日志的实例结构。L2P日志221包含用于对存储器装置的写入操作的日志条目。日志条目可经重放以重构存储器装置的L2P表。L2P日志221可经存储在本地存储器119及/或非易失性存储器装置130-140中。
L2P日志221可包含两种类型的条目:工作集日志条目及旧日志条目。L2P日志组件113可响应于一组新的SLC-QLC块条被指派而将工作集日志条目插入到L2P日志221。L2P日志组件113可响应于写入到SLC高速缓存而将旧日志条目插入到L2P日志221。
例如,参考图4,在一个实施例中,当迁移模块211识别一组新的SLC-QLC块条编号时,迁移模块211将这个识别报告给L2P日志组件113且L2P日志组件113将工作集日志条目401插入到L2P日志221。当新页面经编程到SLC高速缓存207时,可循序地识别所述组SLC块条编号,如图3中所描述。QLC块条可被识别为可用于编程的下一块条,例如循序地。
工作集日志条目401可包含队列中的条目(例如图5中的条目501)的识别符(如图5中进一步论述)。在一个实施例中,工作集日志条目401可包含版本编号。版本编号确保队列中的经引用条目与工作集日志条目是相同版本。在一个实施例中,工作集日志条目401可包含SLC块条的一或多个识别符,所述识别符是SLC高速缓存中先前编程数据的位置,且可进一步包含QLC块条的一或多个识别符,所述识别符是QLC存储器中将编程数据的位置。
当L2P日志组件113检测到存储器控制器执行对SLC高速缓存207的写入时,L2P日志组件113将旧日志条目402插入到L2P日志221。旧日志条目402包含用于重构L2P日志的信息,例如其中存储有数据的SLC块条编号。在一个实施例中,旧日志条目402包含工作集日志条目的识别符。此处,已指派SLC-QLC块条且已为两遍编程创建工作集日志条目(参见图3的操作307)。旧日志条目402可为SLC写入且旧日志条目402可经由引用403引用工作集日志条目401。工作集日志条目401可引用经指派SLC-QLC块条编号。工作集日志条目401还可引用队列条目(例如图5中的条目501),如图5中进一步描述。
在一个实施例中,L2P日志条目401-402可经存储在图1的本地存储器119中及/或易失性存储器装置130-140上。当检测到平稳掉电事件时,L2P日志组件113将L2P日志条目401-402刷新到非易失性存储器装置130-140以保留L2P日志条目401-402。在另一实施例中,在预期异步掉电事件时,L2P日志组件113以预定时间间隔或当本地存储器119中的日志条目达到预定大小时周期性地将L2P日志条目401-402刷新到非易失性存储器装置130-140。
除工作集日志条目之外,队列还可跟踪两遍编程的状态。队列可由L2P日志组件113创建及使用。图5说明根据本公开的一些实施例的队列的框图。队列223是指存储有关两遍编程操作的信息的表。在一个实施例中,队列223可将两遍编程操作的信息存储为工作集。队列223可经存储在本地存储器119中且响应于存储器控制器检测到掉电事件而刷新到非易失性存储器。
参考图5,行501-503中的每一者可表示工作集,或用于两遍编程操作的迁移。工作集可包含工作集独有的索引值、对应于两遍编程操作的一组SLC-QLC块条的SLC块条编号及QLC块条编号。在一个实施例中,工作集可包含版本编号。版本编号确保工作集日志条目(例如图4的工作集日志条目401)引用工作集的正确版本。
在一个实施例中,当L2P日志组件113检测到存储器控制器已打开一组新的SLC-QLC块条以用于两遍编程操作时,L2P日志组件113将工作集501插入到队列223中。工作集501包含索引值、SLC块条编号及QLC块条编号。工作集索引值可为数值。
在一个实施例中,队列223可包含指示批量更新是否正在进行中的位字段。位字段可用于跟踪SLC到QLC迁移的状态。在一个实施例中,当迁移模块211开始迁移时,L2P日志组件113将所述字段设置为‘1’,如由工作集条目502所展示。当迁移模块211完成迁移时,日志组件113将批量更新正在进行中字段清除为‘0’且使SLC块条编号及QLC块条编号无效,如工作集条目503中所展示。如上文中所述,迁移是指作为两遍编程的部分数据从SLC块条中的多者移动到一或多个QLC块条。
图4的L2P日志及图5的队列可响应于异步掉电而刷新到非易失性存储器装置130-140且可响应于受控掉电的通知而刷新。L2P日志及队列可在启动时进行检索。以这种方式,最新的L2P日志221及队列223可用于重构L2P表。
图6说明根据本公开的一些实施例的重放L2P日志以用于L2P表重构的方法的流程图。操作600可由处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,操作600由图1的控制器115或L2P日志组件113来执行。
在操作601,处理逻辑将队列(例如,队列223)从非易失性存储器加载到本地存储器中。
在操作603,处理逻辑产生重放信息(info)表(例如,图7的表700)。重放信息表是在日志重放期间创建的临时表。重放信息表可存储指示两遍编程操作的数据是否在SLC块条中的旗标。重放信息表的实例在图7中进行说明。重放信息表可具有四个字段:索引、QLC块条编号、SLC块条编号及“SLC中的数据”旗标。重放信息表可被初始化为具有与图5的队列223数目相同的条目。参考图7,重放信息表中的条目可在飞行中进行填充(如由操作605所说明)。所述条目的SLC及QLC块条编号可从来自L2P日志的工作集日志条目填充。最后,“SLC中的数据”旗标指示数据是在SLC块条中还是已迁移到QLC块条。
在操作605,处理逻辑循环遍历L2P日志(例如,图2的L2P日志221)中的日志条目的每一条目。
在操作607,处理逻辑确定所述条目是否为工作集日志条目。
在操作609,如果所述条目是工作集日志条目,那么处理逻辑将工作集日志条目信息(SLC及QLC块条编号)存储到重放信息表中。在一个实施例中,重放信息表中的条目可具有对应于队列223中的条目的索引。
在操作611,基于来自工作集日志条目的索引值,处理逻辑从队列检索工作集。处理逻辑确定工作集中的块条编号是否无效或工作集中的版本编号是否与工作集日志条目的版本编号失配。
在操作613,如果是,那么处理逻辑确定数据已迁移到QLC块条。接着,处理逻辑将“SLC中的数据”旗标设置为‘0’。
在操作615,如果否,那么处理逻辑从工作集确定“批量更新正在进行中”旗标是否被设置。如果是,那么处理逻辑前进到操作613,且处理逻辑将“SLC中的数据”旗标设置为‘0’。
在操作617,如果否,那么处理逻辑确定数据仍在SLC块条中。接着,处理逻辑将“SLC中的数据”旗标设置为‘1’。
在操作619,如果所述条目不是工作集日志条目,例如,所述条目是旧日志条目,那么处理逻辑在L2P日志中找到对应工作集日志条目。例如,旧日志条目可含有对对应工作集日志条目的引用。处理逻辑可使用所述引用来定位L2P日志中的工作集日志条目。
在操作621,处理逻辑从重放信息表确定“SLC中的数据”旗标是否被设置。
在操作623,如果否,那么处理逻辑使用工作集日志条目来更新旧日志条目。例如,旧日志条目中的SLC块条编号被更新为由工作集日志条目所指示的QLC块条编号。在另一实施例中,处理逻辑指示旧日志条目应引用用于重放QLC块条编号而不修改旧日志条目。由于数据已从SLC块条迁移到QLC块条,QLC块条编号用于L2P表重构。接下来,处理逻辑前进到操作625。
在操作625,如果是,那么处理逻辑重放旧日志条目。例如,如果数据仍驻留在SLC块条中,那么将用SLC块条编号重放旧日志条目,因为其最初插入在L2P日志中。如果数据已迁移到QLC块条,那么处理逻辑将使用QLC块条编号来重放旧日志条目。一旦经重构,L2P表就可用于将主机逻辑地址转译为存储器装置物理地址。存储器装置物理地址可对应于SLC块条编号或QLC块条编号。
概括来说,经修改L2P日志具有工作集日志条目及旧日志条目两者。经修改L2P日志连同来自队列的支持工作集一起用于重构L2P表,其中所述重构将重放从两次重放(SLC编程及QLC编程)减少到一次重放(SLC编程或QLC编程)。
图8是根据本公开的一些实施例的用于重放L2P日志的实例方法的流程图。方法800可由处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法800由图1的L2P日志组件113来执行。尽管以特定序列或顺序展示,但是除非另有指定,否则可修改过程的顺序。因此,所说明实施例应被理解为仅作为实例,且所说明过程可以不同顺序执行,且一些过程可并行执行。另外,在各个实施例中可省略一或多个过程。因此,并非在每个实施例中均需要所有过程。其它过程流程也是可能的。
在操作801,处理逻辑在与存储器装置相关联的逻辑到物理(L2P)日志中识别反映两遍编程操作的第一日志条目(工作集日志条目),其中两遍编程操作包含将数据编程到由第二物理地址(QLC块条编号)识别的第二存储器位置(QLC存储器装置)的第一遍及将相同数据编程到由相同第二物理地址识别的相同第二存储器位置地址的第二遍。当存储器控制器指派一组新的SLC-QLC块条时,L2P日志组件113将工作集日志条目插入L2P日志中。
在操作803,处理逻辑确定两遍编程操作的第二遍是否已完成。当存储器控制器指派一组新的SLC-QLC块条时,L2P日志组件113将工作集插入队列中。工作集被指派索引值且所述索引值经存储在跟踪SLC-QLC块条的工作集日志条目中。使用队列中的工作集(如图5中所说明),L2P日志组件113查找SLCBSNum、QLCBSNum或版本字段。“无效”的SLCBSNum/QLCBSNum或与工作集日志条目相比的版本失配指示两遍编程操作的第二遍已完成。
在操作805,响应于确定两遍编程操作的第二遍已完成,处理逻辑致使L2P日志中的对应于第一遍的第二日志条目(旧日志条目)从引用第一物理地址改为引用第二物理地址,其中第一物理地址(SLC块条编号)识别编程有数据的第一存储器位置(SLC高速缓存)。例如,处理逻辑可经由“SLC中的数据”旗标指示数据在QLC块条中。如果两遍编程操作的第二遍已完成,那么将重放信息表中的“SLC中的数据”旗标更新为“0”值以指示数据在QLC块条中。
当存储器控制器执行SLC写入时,先前添加旧日志条目。旧日志条目引用第一存储器地址(SLC块条编号)。由于存储器控制器完成写入到QLC块条,第一存储器地址被更新为第二存储器地址(QLC块条编号)。
在操作807,处理逻辑响应于检测到掉电后的通电事件而基于第二日志条目重构L2P表。所述重构是通过重放L2P日志中的旧日志条目而执行。这些旧日志条目可引用第一存储器地址(SLC),或(经由指示)第二存储器地址(SLC)。所述指示符可为重放信息表中的“SLC中的数据”旗标。
在一个实施例中,处理逻辑进一步将数据编程在包括一组单电平单元(SLC)块条的第一存储器位置中,且将数据从第一存储器位置迁移到第二存储器位置以用于两遍编程操作,其中第二存储器位置包括四电平单元(QLC)块条。
在一个实施例中,将数据编程在第一存储器位置中包含将第二日志条目添加到L2P日志,其中第二日志条目指示数据经编程在由第一物理地址识别的第一存储器位置处。在一个实施例中,处理逻辑进一步响应于识别用于两遍编程操作的QLC块条而将第一日志条目添加到L2P日志,其中第一日志条目指示数据由两遍编程操作来编程。
在一个实施例中,处理逻辑进一步响应于识别用于两遍编程操作的QLC块条而将条目添加到队列。处理逻辑在掉电事件时拍摄队列的快照,其中队列条目指示两遍编程操作是否正在进行中。
在一个实施例中,处理逻辑基于第二日志条目,通过将逻辑地址转译为对应于第二遍的第二物理地址而不是第一物理地址而执行L2P转译。在一个实施例中,掉电事件是异步掉电事件或受控断电事件。
图9是根据本公开的一些实施例的用于重放L2P日志的实例方法的流程图。方法900可由处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法900由图1的L2P日志组件113来执行。尽管以特定序列或顺序展示,但是除非另有指定,否则可修改过程的顺序。因此,所说明实施例应被理解为仅作为实例,且所说明过程可以不同顺序执行,且一些过程可并行执行。另外,在各个实施例中可省略一或多个过程。因此,并非在每个实施例中均需要所有过程。其它过程流程也是可能的。
在操作901,处理逻辑在与存储器装置相关联的逻辑到物理(L2P)日志中识别反映两遍编程操作的第一日志条目(工作集日志条目),其中两遍编程操作包括将数据编程到由第二物理地址(QLC块条编号)识别的第二存储器位置(QLC存储器装置)的第一遍及将相同数据编程到由相同第二物理地址(QLC块条编号)识别相同第二存储器位置(QLC存储器装置)的第二遍。
在操作903,处理逻辑确定两遍编程操作是否已被掉电事件中断。掉电事件可为异步掉电或受控断电。当迁移模块正在执行批量更新且存储器子系统掉电时,即使数据已迁移到QLC块条,L2P日志也可能不更新或保持。在这种情况下,使用队列中的工作集(如图5中所说明),L2P日志组件113查找“批量更新正在进行中”字段。“1”值指示当被掉电事件中断时迁移正在进行中。
在操作905,响应于确定两遍编程操作已被掉电事件中断,处理逻辑致使L2P日志中的第二日志条目从引用第一物理地址改为引用第二物理地址,其中第一物理地址识别编程有数据的第一存储器位置。例如,处理逻辑可经由“SLC中的数据”旗标指示数据是否在QLC块条中。如果两遍编程操作的第二遍正在进行中,那么将重放信息表中的“SLC中的数据”旗标更新为“0”值以指示数据已迁移到QLC块条。
在操作907,处理逻辑响应于检测到掉电后的通电事件而基于第二日志条目重构L2P表。
在一个实施例中,处理逻辑将数据编程在包括一组单电平单元(SLC)块条的第一存储器位置中。处理逻辑将数据从第一存储器位置迁移到第二存储器位置以用于两遍编程操作,其中第二存储器位置包括四电平单元(QLC)块条。在一个实施例中,将数据编程在第一存储器位置中包含将第二日志条目添加到L2P日志,其中第二日志条目指示数据经编程在由第一物理地址识别的第一存储器位置处。
在一个实施例中,处理逻辑进一步响应于识别用于两遍编程操作的QLC块条而将第一日志条目添加到L2P日志,其中第一日志条目指示数据由两遍编程操作来编程。在一个实施例中,处理逻辑进一步响应于识别用于两遍编程操作的QLC块条而将条目添加到队列,且在掉电事件时拍摄队列的快照,其中队列条目指示两遍编程操作是否正在进行中。在一个实施例中,处理逻辑进一步基于经更新第二日志条目,通过将逻辑地址转译为第二物理地址而不是第一物理地址而执行L2P转译。
图10说明计算机系统600的实例机器,可在所述计算机系统600内执行用于致使所述机器执行本文中所论述的方法中的任何一或多者的一组指令。在一些实施例中,计算机系统600可对应于主机系统(例如,图1的主机系统120),所述主机系统包含、经耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的L2P日志组件113的操作)。在替代实施例中,所述机器可经连接(例如,经联网)到LAN、内联网、外联网及/或因特网中的其它机器。所述机器可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,作为对等(或分布式)网络环境中的对等机器操作,或作为云计算基础架构或环境中的服务器或客户端机器操作。
所述机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设施、服务器、网络路由器、交换机或网桥,或能够执行一组指令(循序指令或其它指令)的机器,所述指令指定将由那个机器采取的动作。此外,虽然说明单个机器,但术语“机器”也应被理解为包含个别地或共同地执行一组(或多组)指令以执行本文中所论述的方法中的任何一或多者的机器的任何集合。
实例计算机系统600包含经由总线630彼此通信的处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或RDRAM等)、静态存储器606(例如,快闪存储器、静态随机存取存储器(SRAM)等)及数据存储系统618。
处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,所述处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置602经配置以执行指令626以执行本文中所论述的操作及步骤。计算机系统600可进一步包含网络接口装置608以通过网络620进行通信。
数据存储系统618可包含其上存储有体现本文中所描述的方法或功能中的任何一或多者的一或多组指令626或软件的机器可读存储媒体624(也被称为计算机可读媒体)。指令626在由计算机系统600执行期间也可全部或至少部分地驻留在主存储器604内及/或处理装置602内,主存储器604及处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618及/或主存储器604可对应于图1的存储器子系统110。
在一个实施例中,指令626包含用于实施对应于L2P日志组件(例如,图1的L2P日志组件113)的功能性的指令。虽然机器可读存储媒体624在实例实施例中被展示为单个媒体,但术语“机器可读存储媒体”应被理解为包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”也应被理解为包含能够存储或编码一组指令以供机器执行且致使机器执行本发明的方法中的任何一或多者的任何媒体。因此,术语“机器可读存储媒体”应被理解为包含但不限于固态存储器、光学媒体及磁性媒体。
已根据对计算机存储器内的数据位的操作的算法及符号表示来呈现前述详细描述的一些部分。这些算法描述及表示是被数据处理领域的技术人员用于最有效地向所属领域的其它技术人员传达他们的工作实质的方式。算法在本文中被认为且通常被认为是导向所要结果的自洽操作序列。所述操作是需要对物理量进行物理操纵的操作。通常,尽管并非必需的,但这些量采取能够被存储、组合、比较及以其它方式操纵的电信号或磁性信号的形式。已证明,有时主要出于通用的原因将这些信号称为位、值、元素、符号、字符、项、数字等是方便的。
然而,应记住,所有这些及类似术语应与适当物理量相关联且仅仅是应用于这些量的方便标签。本发明可涉及计算机系统或类似电子计算装置的动作及过程,所述计算机系统或类似电子计算装置将表示为计算机系统的寄存器及存储器内的物理(电子)量的数据操纵及变换成类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量的其它数据。
本发明还涉及用于执行本文中的操作的设备。这个设备可经专门构造用于预期目的,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可经存储在计算机可读存储媒体中,例如但不限于任何类型的磁盘,包含软盘、光盘、CD-ROM及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、或适于存储电子指令的任何类型的媒体,其各自经耦合到计算机系统总线。
本文中所提出的算法及显示并非固有地与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或可证明构造更专用设备来执行所述方法是方便的。各种这些系统的结构将如在以下描述中所阐述那样出现。另外,未参考任何特定编程语言来描述本发明。将明白,可使用多种编程语言来实施如本文中所描述的本发明的教示。
本发明可被提供为计算机程序产品或软件,所述计算机程序产品或软件可包含其上存储有指令的机器可读媒体,所述指令可用于对计算机系统(或其它电子装置)进行编程以执行根据本发明的过程。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,本发明的实施例已参考其特定实例实施例进行描述。将显而易见的是,在不脱离如所附权利要求书中所阐述的本发明的实施例的更广泛精神及范围的情况下,可对本发明进行各种修改。因此,说明书及附图应被认为是说明性而非限制性的。
Claims (20)
1.一种系统,其包括:
存储器装置;及
处理装置,其与多个存储器装置可操作地耦合,以执行包括以下的操作:
由处理装置在与存储器装置相关联的逻辑到物理L2P日志中识别反映两遍编程操作的第一日志条目,其中所述两遍编程操作包括将数据编程到由第二物理地址识别的第二存储器位置的第一遍及将相同数据编程到由相同第二物理地址识别的相同第二存储器位置的第二遍;
确定所述两遍编程操作的所述第二遍是否已完成;
响应于确定所述两遍编程操作的所述第二遍已完成,致使所述L2P日志的第二日志条目从引用第一物理地址改为引用所述第二物理地址,其中所述第一物理地址识别编程有所述数据的第一存储器位置;及
响应于检测到掉电后的通电事件,使用所述第二日志条目来重构所述L2P表。
2.根据权利要求1所述的系统,其中所述操作进一步包括:
将所述数据编程在包括一组单电平单元SLC块条的所述第一存储器位置中;及
将所述数据从所述第一存储器位置迁移到所述第二存储器位置以用于所述两遍编程操作,其中所述第二存储器位置包括四电平单元QLC块条。
3.根据权利要求2所述的系统,其中将所述数据编程在所述第一存储器位置中进一步包括将所述第二日志条目添加到所述L2P日志,其中所述第二日志条目指示所述数据经编程在由所述第一物理地址识别的所述第一存储器位置处。
4.根据权利要求2所述的系统,其中所述操作进一步包括响应于识别用于所述两遍编程操作的所述QLC块条而将所述第一日志条目添加到所述L2P日志,其中所述第一日志条目指示所述数据由所述两遍编程操作来编程。
5.根据权利要求2所述的系统,其中所述操作进一步包括:
响应于识别用于所述两遍编程操作的所述QLC块条而将队列条目添加到队列;及
在掉电事件时拍摄所述队列的快照,其中所述队列条目指示所述两遍编程操作是否正在进行中。
6.根据权利要求2所述的系统,其中所述操作进一步包括基于所述第二日志条目,通过将逻辑地址转译为所述第二物理地址而执行L2P转译。
7.根据权利要求5所述的系统,其中所述掉电事件是异步掉电事件或受控断电事件。
8.一种方法,其包括:
由处理装置在与存储器装置相关联的逻辑到物理L2P日志中识别反映两遍编程操作的第一日志条目,其中所述两遍编程操作包括将数据编程到由第二物理地址识别的第二存储器位置的第一遍及将相同数据编程到由相同第二物理地址识别的相同第二存储器位置的第二遍;
确定所述两遍编程操作是否已被掉电事件中断;
响应于确定所述两遍编程操作已在掉电事件期间中断,致使所述L2P日志的第二日志条目从引用第一物理地址改为引用所述第二物理地址,其中所述第一物理地址识别编程有所述数据的第一存储器位置;及
响应于检测到掉电后的通电事件,使用所述第二日志条目来重构所述L2P表。
9.根据权利要求8所述的方法,其进一步包括:
将所述数据编程在包括一组单电平单元SLC块条的所述第一存储器位置中;及
将所述数据从所述第一存储器位置迁移到所述第二存储器位置以用于所述两遍编程操作,其中所述第二存储器位置包括四电平单元QLC块条。
10.根据权利要求9所述的方法,其中将所述数据编程在所述第一存储器位置中进一步包括将所述第二日志条目添加到所述L2P日志,其中所述第二日志条目指示所述数据经编程在由所述第一物理地址识别的所述第一存储器位置处。
11.根据权利要求9所述的方法,其进一步包括响应于识别用于所述两遍编程操作的所述QLC块条而将所述第一日志条目添加到所述L2P日志,其中所述第一日志条目指示所述数据由所述两遍编程操作来编程。
12.根据权利要求9所述的方法,其进一步包括:
响应于识别用于所述两遍编程操作的所述QLC块条而将队列条目添加到队列;及
在掉电事件时拍摄所述队列的快照,其中所述队列条目指示所述两遍编程操作是否正在进行中。
13.根据权利要求8所述的方法,其进一步包括基于所述第二日志条目,通过将逻辑地址转译为所述第二物理地址而执行L2P转译。
14.一种包括指令的非暂时性计算机可读存储媒体,所述指令在由处理装置执行时致使所述处理装置执行包括以下的操作:
由处理装置在与存储器装置相关联的逻辑到物理L2P日志中识别反映两遍编程操作的第一日志条目,其中所述两遍编程操作包括将数据编程到由第二物理地址识别的第二存储器位置的第一遍及将相同数据编程到由相同第二物理地址识别的相同第二存储器位置的第二遍;
确定所述两遍编程操作的所述第二遍是否已完成;
响应于确定所述两遍编程操作的所述第二遍已完成,致使所述L2P日志的第二日志条目从引用第一物理地址改为引用所述第二物理地址,其中所述第一物理地址识别编程有所述数据的第一存储器位置;及
响应于检测到掉电后的通电事件,使用所述第二日志条目来重构所述L2P表。
15.根据权利要求14所述的非暂时性计算机可读存储媒体,其中所述操作进一步包括:将所述数据编程在包括一组单电平单元SLC块条的所述第一存储器位置中;及
将所述数据从所述第一存储器位置迁移到所述第二存储器位置以用于所述两遍编程操作,其中所述第二存储器位置包括四电平单元QLC块条。
16.根据权利要求15所述的非暂时性计算机可读存储媒体,其中将所述数据编程在所述第一存储器位置中进一步包括将所述第二日志条目添加到所述L2P日志,其中所述第二日志条目指示所述数据经编程在由所述第一物理地址识别的所述第一存储器位置处。
17.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述操作进一步包括响应于识别用于所述两遍编程操作的所述QLC块条而将所述第一日志条目添加到所述L2P日志,其中所述第一日志条目指示所述数据由所述两遍编程操作来编程。
18.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述操作进一步包括:
响应于识别用于所述两遍编程操作的所述QLC块条而将队列条目添加到队列;及
在掉电事件时拍摄所述队列的快照,其中所述队列条目指示所述两遍编程操作是否正在进行中。
19.根据权利要求15所述的非暂时性计算机可读存储媒体,其中所述操作进一步包括基于所述第二日志条目,通过将逻辑地址转译为所述第二物理地址而执行L2P转译。
20.根据权利要求18所述的非暂时性计算机可读存储媒体,其中所述掉电事件是异步掉电事件或受控断电事件。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063125866P | 2020-12-15 | 2020-12-15 | |
US63/125,866 | 2020-12-15 | ||
US17/179,256 | 2021-02-18 | ||
US17/179,256 US11714562B2 (en) | 2020-12-15 | 2021-02-18 | Journal scheme for two-pass programming memory devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114637695A true CN114637695A (zh) | 2022-06-17 |
Family
ID=81941413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111520494.2A Pending CN114637695A (zh) | 2020-12-15 | 2021-12-13 | 用于两遍编程存储器装置的日志方案 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11714562B2 (zh) |
CN (1) | CN114637695A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11782831B2 (en) * | 2021-09-01 | 2023-10-10 | Micron Technology, Inc. | Managing power loss in a memory device |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10048887B2 (en) * | 2016-10-27 | 2018-08-14 | Micron Technology, Inc. | Apparatuses and methods for single level cell caching |
US11043271B2 (en) * | 2017-11-29 | 2021-06-22 | Western Digital Technologies, Inc. | Reusing a cell block for hybrid dual write |
US11030089B2 (en) * | 2018-09-28 | 2021-06-08 | Micron Technology, Inc. | Zone based reconstruction of logical to physical address translation map |
US10811109B2 (en) * | 2018-12-27 | 2020-10-20 | Sandisk Technologies Llc | Multi-pass programming process for memory device which omits verify test in first program pass |
US11301369B2 (en) * | 2019-01-24 | 2022-04-12 | Western Digital Technologies, Inc. | Logical to physical mapping management using low-latency non-volatile memory |
US11645006B2 (en) * | 2020-04-30 | 2023-05-09 | Macronix International Co., Ltd. | Read performance of memory devices |
US11211119B1 (en) * | 2020-06-11 | 2021-12-28 | Western Digital Technologies, Inc. | QLC programming method with staging of fine data |
-
2021
- 2021-02-18 US US17/179,256 patent/US11714562B2/en active Active
- 2021-12-13 CN CN202111520494.2A patent/CN114637695A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11714562B2 (en) | 2023-08-01 |
US20220187999A1 (en) | 2022-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114730300B (zh) | 对区命名空间存储器的增强型文件系统支持 | |
CN113031856A (zh) | 存储器子系统中的断电数据保护 | |
US20220188009A1 (en) | Background memory scan block selection | |
US11775179B2 (en) | Enabling stripe-based operations for error recovery at a memory sub-system | |
CN113946283B (zh) | 存储器装置的分区命名空间中的部分区存储器单元处置 | |
US20240184695A1 (en) | Managing power loss recovery using a dirty section write policy for an address mapping table in a memory sub-system | |
US20230289285A1 (en) | Managing power loss recovery using an oldest section write policy for an address mapping table in a memory sub-system | |
CN113127254A (zh) | 存储器子系统中多平面奇偶校验数据的存储管理 | |
CN112835828A (zh) | 用于非连续源及目的地存储器地址的直接存储器存取(dma)命令 | |
US11100005B2 (en) | Logical-to-physical (L2P) table sharping strategy | |
CN114637695A (zh) | 用于两遍编程存储器装置的日志方案 | |
US11704247B2 (en) | Enhanced duplicate write data tracking for cache memory | |
US11714722B2 (en) | Power loss recovery for memory devices | |
US11698746B1 (en) | Journal scheme for a memory sub-system | |
US11698867B2 (en) | Using P2L mapping table to manage move operation | |
US11698856B2 (en) | Maintaining sequentiality for media management of a memory sub-system | |
US11880600B2 (en) | Consolidating write request in cache memory | |
US11714577B2 (en) | Snap read optimization for media management for a memory sub-system | |
US11625295B2 (en) | Operating memory device in performance mode | |
US20230058217A1 (en) | Redundancy metadata for multi-plane memory access failure | |
CN117632575A (zh) | 用于区存储器系统的块失效保护 | |
CN113126899A (zh) | 完全多平面操作启用 |
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 |