CN113851172B - 存储器子***映射中的错误处置优化 - Google Patents
存储器子***映射中的错误处置优化 Download PDFInfo
- Publication number
- CN113851172B CN113851172B CN202110710628.0A CN202110710628A CN113851172B CN 113851172 B CN113851172 B CN 113851172B CN 202110710628 A CN202110710628 A CN 202110710628A CN 113851172 B CN113851172 B CN 113851172B
- Authority
- CN
- China
- Prior art keywords
- block
- data
- memory
- identifier
- source block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3404—Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/076—Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/203—Failover techniques using migration
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/403—Error protection encoding, e.g. using parity or ECC codes
-
- 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/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开涉及存储器子***映射中的错误处置优化。本公开揭示一种***,其包含具有存储器单元块的存储器装置。处理装置以操作方式耦合到所述存储器装置,所述处理装置检测在所述存储器单元的源块内触发的错误事件。响应于检测到所述错误事件,所述处理装置将从所述源块读取数据;将所述数据写入到与所述源块不同的缓解块中;及在块集映射数据结构中,用所述缓解块的第二识别符替换所述源块的第一识别符。所述块集映射数据结构包含关于所述存储器装置的包含所述数据的数据组的块位置元数据。
Description
技术领域
本公开的实施例大体上涉及存储器子***,且更具体地,涉及存储器子***映射中的错误处置优化。
背景技术
存储器子***可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置及易失性存储器装置。通常,主机***可利用存储器子***来将数据存储在存储器装置处并从存储器装置检索数据。
发明内容
在一个方面中,本公开涉及一种***,其包括:存储器装置,其包括多个存储器单元块;及处理装置,其以操作方式耦合到所述存储器装置,所述处理装置:检测在所述存储器单元的源块内触发的错误事件;及响应于检测到所述错误事件:从所述源块读取数据;将所述数据写入到与所述源块不同的缓解块;及在块集映射数据结构中,用所述缓解块的第二识别符替换所述源块的第一识别符,其中所述块集映射数据结构包括关于所述存储器装置的包含所述数据的数据组的块位置元数据。
在另一方面中,本公开涉及一种方法,其包括:通过耦合到存储器装置的处理装置检测在所述存储器装置的多个存储器单元块的源块内达到错误事件阈值;及响应于所述检测:从所述源块读取数据;将所述数据写入到与所述源块不同的缓解块;及在块集映射数据结构中,用所述缓解块的第二识别符替换所述源块的第一识别符,其中所述块集映射数据结构包括关于所述存储器装置的包含所述数据的数据组的块位置元数据。
在另一方面中,本公开涉及一种存储指令的非暂时性计算机可读媒体,当所述指令由耦合到存储器装置的处理装置执行时,致使所述处理装置执行包括以下操作的操作:在多个存储器单元块中识别存储来自引发错误事件的源块的迁移数据的缓解块;检索与所述缓解块的位置相关联的新元数据;及在包含所述源块的映射的块集映射数据结构内,用所述新元数据交换与所述源块的位置相关联的旧元数据以将所述源块重新映射到所述缓解块。
附图说明
从下文给出的详细描述及从本公开的各种实施例的附图将更全面理解本公开。
图1A根据实施例说明包含存储器子***的实例计算***。
图1B根据实施例另外详细说明图1A的存储器子***。
图2为根据各种实施例说明经配置以支持基于区的映射的数据结构的实例的框图。
图3为根据实施例说明存储器子***的控制器在映射元数据内从源块重新映射到缓解块的功能性的框图。
图4为根据实施例的错误处置优化的方法的流程图。
图5为根据各种实施例的用于存取正在迁移到缓解块的数据的方法的流程图。
图6为根据实施例的用于将检测到错误的源块重新映射到缓解块的方法的流程图。
图7为本公开的实施例可在其中操作的实例计算机***的框图。
具体实施方式
本公开的方面针对存储器子***映射中的错误处置优化。存储器子***可为存储装置、存储器模块或存储装置及存储器模块的混合。下文结合图1描述存储装置及存储器模块的实例。通常,主机***可利用包含一或多个组件(例如,存储数据的存储器装置)的存储器子***。主机***可提供待存储在存储器子***处的数据,且可请求待从存储器子***检索的数据。
存储器装置可为可存储来自主机***的数据的非易失性存储器装置。非易失性存储器装置的一个实例为“与非”(NAND)存储器装置。下文结合图1描述非易失性存储器装置的其它实例。存储器装置中的每一个可包含一或多个存储器单元阵列。存储器单元(“单元”)为存储信息的电子电路。取决于单元类型,单元可存储一或多个位的二进制信息,且具有与存储的位数目相关的各种逻辑状态。逻辑状态可由二进制值表示,例如“0”及“1”,或此类值的组合。
可对存储器单元执行各种存取操作。例如,可将数据写入到存储器单元、从存储器单元读取以及从存储器单元擦除。存储器单元可分组为写入单元,例如,页。对于一些类型的存储器装置,页为最小写入单位。页为跨同一字线的一组单元。页大小表示一页的特定单元数目。对于一些类型的存储器装置(例如,NAND),存储器单元可分组为擦除单元,例如物理单元,例如,物理块,其为一组页。物理块为页(单元行)及字符串(单元列)的2维存储器阵列。可将数据逐页写入到块。可在块层级擦除数据。然而,块的部分不能被擦除。
多个块可分组在一起以形成平面。一或多个平面可分组在一起以形成存储器装置的物理裸片。存储器装置可包含一或多个裸片。可将单个裸片或彼此上下堆叠的多个裸片分组以形成封装。裸片在下文中也称为逻辑单元(LUN)。LUN可含有一或多个平面。
存储器子***在执行数据操作(例如,写入、读取、擦除)时,可使用条带化方案将各种数据集视为单元。LUN条带为在写入、读取或擦除数据时被视为一个单元的平面集合。LUN条带中的每一平面可并行实施LUN条带中所有其它平面的相同操作。块条带为块的集合,来自LUN条带中被视为一单元的每一平面的一个块条带。块条带中的块在其相应平面中具有相同块识别符(例如,块编号)。块条带(在下文中也称为块集)可为一组横跨不同裸片的平面阵列化的块,使得出于数据存储的目的将所述块分组在一起。写入到块条带使得可横跨多个裸片并发写入及读取更多数据。块集的多个块可识别为数据组。
主机文件***可按局部性对数据进行分组,并将数据按顺序地写入到存储器子***的存储器装置。文件***然后可将不同局部性的数据作为并行顺序流写入到存储器装置,每一流具有其特有局部性。“局部性”可指代时间局部性或空间局部性。具有时间局部性的数据为处理器往往在短时间段内在存储器装置中的相同位置处重复地存取的数据,例如,大约同时写入、盖写及裁剪的数据。具有空间局部性的数据捕获在特定时间引用特定位置时的数据检索模式,然后很可能在不久的将来引用附近位置。在此状况下,处理器可尝试确定当前引用位置周围区域的大小及形状,对于所述区域值得为后续引用位置的更快存取做好准备。对顺序局部性的引用为空间局部性的特殊状况,其在数据元素经线性布置及存取时,例如在遍历一维阵列中的元素时发生。
如主机请求所规定的待读取或写入的数据在下文中被称为“主机数据”。主机请求可包含主机数据的逻辑地址信息(例如,逻辑块地址(LBA)、命名空间),其为主机***与主机数据相关联的位置。逻辑地址信息(例如,LBA、命名空间)可为主机数据的元数据的一部分。常规地,存储器子***控制器(例如,其包含处理装置)以小数据组块(例如,4KB)随机写入到存储器装置,且然后使用大量元数据将LBA空间映射至存储器装置的物理地址空间。然而,当写入具有数据局部性的更大的一组数据(例如,100MB或更多)时,“数据组”可作为更大组块按顺序地写入横跨多个裸片的一或多个块集。为了简化此类数据组的映射,区的LBA(例如,与数据组相关联的逻辑地址空间)可在LBA空间内按顺序地排序并映射到物理地址空间内按顺序地排序物理地址。换句话说,数据组可与具有多个顺序LBA的逻辑块地址(LBA)空间区相关联,所述多个顺序LBA被按顺序地映射到多个顺序物理地址。可一次写入数据区并相应地映射区的存储器子***可认为在区命名空间(ZNS)中操作,例如,其中逻辑地址区经命名/识别为组。有利地,使用ZNS进行逻辑到物理(LTP)地址映射极大地减少用以跟踪LTP映射的元数据的量。
在常规存储器装置中,当在存储器块中检测到错误事件时,存储器装置的存储器子***控制器(例如,处理装置)可扫描存储器装置以确认错误事件,且然后在确认错误事件时执行数据迁移。错误事件可为读取干扰事件、编程失败处置事件或损耗均衡事件,以及将详细论述的其它错误事件。数据迁移涉及根据迁移光标将块集(其包含引发错误的块)迁移到存储器装置的另一块集,以便在错误的情况下保护有效数据。
在基于ZNS的存储器装置内使用数据迁移,其中LBA空间根据区按顺序地映射到物理地址空间,可增加写入放大。由于对过度布建、写入放大及大量写入光标的限制,数据迁移也可具有挑战性,所述大量光标可在写入局部数据的顺序流任何时间打开。因此,可能不存在任何可用于存储器子***的ZNS进程的迁移光标。作为额外风险,ZNS不采用独立NAND(RAIN)保护的冗余阵列,且因此在寻找替代形式的数据保护。
本公开的方面通过响应于检测到(及确认)错误事件将从存储器单元的源块(例如,引起错误事件的块)读取的数据拷贝到备用块来解决上述及其它缺陷。例如,错误事件可为源块处的读取干扰。在缓解源块中即将发生的可能数据损坏(由错误事件加旗标)的意义上,此备用块可被称为缓解块,且拷贝可被称为将源块的数据迁移到缓解块。缓解块可为存储器单元的过度布建块,所述过度布建块为空白的且与源块位于同一平面内。一旦来自源块的数据已迁移到缓解块,控制器可在块集映射数据结构内用缓解块的第二识别符替换源块的第一识别符。在实施例中,块集映射数据结构包含关于存储器装置的数据组(例如,与区相关联)的块位置元数据。因此,先前与所述区相关联的源块将经由块集数据结构内的重新映射而被所述区的缓解块替换。以此方式,对源块的进一步读取请求可重新定向到缓解块以确保有效数据返回到请求代理(例如,主机***)。
本公开的优点包含但不限于保护经历错误事件并因此遭受可能损坏或丢失的数据。例如,通过将数据从源块迁移到缓解块,可安全地读取数据,而不会引发额外不可校正位误差率(UBER)。与已读取的总位数目相比,UBER为具有错误的位的百分比。此外,所公开的实施例的使用通过不必迁移整个数据块集而降低写入放大。另外,所公开的实施例的使用要求低得多的过度布建要求,且实际上可使用来自出于另一原因已过度布建的块集的缓解块。其它优点对于下文所论述的存储器子***内的存储器分配及错误优化领域的技术人员来说将为显而易见的。
图1A根据本公开的一些实施例说明包含存储器子***110的实例计算***100。存储器子***110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130),或此类组合。每一存储器装置130或140可为一或多个存储器组件。
存储器子***110可为存储装置、存储器模块或存储装置及存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)及各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算***100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它交通工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,包含在运载工具、工业设备或联网商用装置中的计算机),或包含存储器及处理装置的此类计算装置。
计算***100可包含主机***120,所述主机***耦合到一或多个存储器子***110。在一些实施例中,主机***120耦合到不同类型的存储器子***110。图1A说明耦合到一个存储器子***110的主机***120的一个实例。如本文中所使用,“耦合到”或“与...耦合”通常是指组件或装置之间的连接,所述连接可为间接通信连接或直接通信连接(例如,无需中间组件或装置),无论有线还是无线的,包含例如电、光学、磁性等连接。
主机***120可包含处理器芯片组及由处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓冲存储器、存储器控制器(例如,NVDIMM控制器)及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机***120例如使用存储器子***110将数据写入到存储器子***110,并从存储器子***110读取数据。
主机***120可经由物理主机接口耦合到存储器子***110,所述物理主机接口可通过***总线通信。物理主机接口的实例包含但不限于串行先进技术总线附属(SATA)接口、快速***组件互连(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、双数据速率(DDR)存储器总线、小计算机***接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接字接口)、开放NAND快闪接口(ONFI)、双倍数据速率(DDR)、低功率双数据速率(LPDDR),或任何其它接口。物理主机接口可用于在主机***120与存储器子***110之间发射数据。当存储器子***110通过PCIe接口与主机***120耦合时,主机***120可进一步利用高速NVM(NVMe)接口存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子***110与主机***120之间传递控制、地址、数据及其它信号的接口。图1A说明存储器子***110作为实例。通常,主机***120可经由同一通信连接、多个单独通信连接及/或通信连接的组合存取多个存储器子***。
存储器装置130、140可包含不同类型的非易失性存储器装置及/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为(但不限于)随机存取存储器(RAM),例如动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM)。
非易失性存储器装置的一些实例(例如,存储器装置130)包含“与非”(NAND)类型快闪存储器及就地写入存储器,例如三维交叉点(“3D交叉点”)存储器。非易失性存储器的交叉点阵列可结合可堆叠的交叉网格化数据存取阵列基于体电阻的改变执行位存储。此外,与许多基于快闪存储器的存储器相比,交叉点非易失性存储器可执行原地写入操作,其中可在不预先擦除非易失性存储器单元的情况下编程非易失性存储器单元。例如,NAND型快闪存储器包含二维NAND(2D NAND)及三维NAND(3D NAND)。
存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如,单层级单元(SLC)可每单元存储一个位。其它类型的存储器单元(例如,多层级单元(MLC)、三层级单元(TLC)及四层级单元(QLC))可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或此类的任一组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分及MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可经分组为页,所述页可指代用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,NAND),可将页分组以形成块。
尽管描述了非易失性存储器组件,例如NAND类型快闪存储器(例如,2D NAND、3DNAND)及非易失性存储器单元的3D交叉点阵列,存储器装置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)。虽然图1A中的实例存储器子***110已被说明为包含存储器子***控制器115,但在本公开的另一实施例中,存储器子***110不包含控制器115,且替代地可依赖于外部控制(例如,由外部主机,或由与存储器子***分开的处理器或控制器提供)。
通常,存储器子***控制器115可从主机***120接收命令或操作,且可将命令或操作转换为指令或适当的命令,以实现对存储器装置130的所要存取。存储器子***控制器115可负责其它操作,例如损耗均衡操作、无用信息收集操作、错误检测与纠错码(ECC)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的逻辑块地址(例如,逻辑块地址(LBA)、命名空间)与物理地址(例如,物理块地址)之间的地址转换。存储器子***控制器115可进一步包含主机接口电路***,以经由物理主机接口与主机***120通信。主机接口电路***可将从主机***接收的命令转换为命令指令以存取存储器装置130,以及将与存储器装置130相关联的响应转换为用于主机***120的信息。
存储器子***110还可包含未说明的额外电路***或组件。在一些实施例中,存储器子***110可包含高速缓冲存储器或缓冲器(例如,DRAM)及地址电路***(例如,行解码器及列解码器),其可从存储器子***控制器115接收地址并解码所述地址以存取存储器装置130。
在一些实施例中,存储器装置130包含本地媒体控制器135,所述本地媒体控制器结合存储器子***控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子***控制器115)可外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130为受管理存储器装置,其为与本地控制器(例如,本地媒体控制器135)组合用于同一存储器装置封装或存储器裸片内的存储器管理的原始存储器装置。受管理存储器装置的实例为受管理NAND(MNAND)装置。
在一些实施例中,控制器115包含纠错码(ECC)编码器/解码器111。ECC编码器/解码器111可分别对写入到存储器装置130的数据执行ECC编码且对从存储装置130读取的数据执行ECC解码。可执行ECC解码以对ECC码字进行解码以纠正原始读取数据中的错误,且在许多状况下还报告原始读取数据中的位错误的数目。
图1B根据实施例另外详细说明图1A的存储器子***110。存储器子***110可进一步包含存储器装置140A,其为易失性存储器,例如DRAM或其它***存储器。存储器装置140A可存储块集映射数据结构107及其它更大的数据结构。在实施例中,控制器115(例如,控制器115的处理器117)包含命令生成处理器112、转换处理器113及命令执行处理器114。控制器115可进一步包含易失性存储器125,例如紧密耦合存储器(TCM)或例如SRAM装置的易失性存储器装置中的一个或组合。易失性存储器125可存储区映射数据结构101及缓解块元数据结构109以及其它ZNS映射数据结构,例如,如图2中所说明。在一个实施例中,区映射数据结构101包含多个条目,使得每一条目具有链接到块集映射数据结构107内的条目的块集条目识别符,所述条目又可链接到页映射数据结构的条目,如将参考图2更详细地解释。
在各种实施例中,命令生成处理器112执行命令处理,以包含处理从主机***120接收的存储器命令,且还基于分别从主机***120或另一请求代理接收到的读取请求及写入操作生成读取命令及写入命令。命令执行处理器114可在到存储器装置130、140的数据总线的信道内对命令(无论是接收的还是生成的)进行排序。命令执行处理器114可进一步在物理层中执行错误处置,例如对应于物理地址空间。转换处理器113将LBA转换为物理地址空间的物理块地址(PBA),以促进命令生成处理器112向命令执行处理器114生成命令。因此,转换处理器113可充当接收具有LBA的存储操作的命令生成处理器112与需要知道物理层的PBA以完成命令的命令执行处理器114之间的中介。这些各种结构的操作将在存储器子***110中的错误处置优化的上下文中详细论述。
此外,如先前参考一或多个存储器装置130、140所论述,多个裸片(例如,裸片A及裸片B)的物理地址空间可按平面、块及页分层次组织。因此,例如,裸片A及裸片B中的每一个可包含平面A及平面B,且平面A及平面B中的每一个可包含块A及块B。块集(或块条带)可定义为一组横跨存储器装置的多个裸片的平面阵列化的块。如所说明,块集144经阵列化以包含裸片A的平面A的块A、裸片B的平面B的块A等等,例如,还包含裸片C的平面C的块A以及其它裸片(如果存在且在线)。
在各种实施例中,转换处理器113(及/或耦合到转换处理器113的控制器115的动态数据置放器)动态地确定存储器装置中的布局以置放与存储器装置130、140的存储器组件(也称为“IC裸片”)中的逻辑地址相关联的数据。布局规定在存储器子***110(例如,从主机***120)中接收的命令中使用的地址与存储器子***110的存储器装置中的物理存储器位置之间的映射。在一些实施例中,控制器115包含转换处理器113的至少一部分。在其它实施例中,或组合地,主机***120的控制器及/或处理装置包含转换处理器113的至少一部分。例如,控制器115或主机***120的处理装置(处理器)可经配置以执行存储在存储器中的指令以执行本文中所描述的转换处理器113的操作。在一些实施例中,转换处理器113在安置在存储器子***110中的集成电路芯片中实施。在其它实施例中,转换处理器113为主机***120的操作***、装置驱动程序或应用程序的一部分。
转换处理器113可例如基于存储器装置内的可用性确定用于将数据置放在与存储器装置130或140的物理地址相关联的逻辑地址处的LBA空间的逻辑地址的一部分的布局,在存储器子***110中进行输入/输出调度时,在所述存储器装置处写入、编程、存储、提交数据。当IC裸片(包含IC裸片内的物理单元)可用于提交/编程数据时,写入命令被调度以在存储器子***110中执行;且转换处理器113生成写入命令的布局的一部分并映射在写入命令中使用的逻辑地址以映射到IC裸片内的存储器位置。写入命令的执行致使存储器子***110将与写入命令相关联的数据提交/编程到IC裸片中。
取决于横跨存储器装置的IC裸片的可用性及/或顺序映射方案的应用,控制器115可按顺序地写入数据组(例如,在数据局部性的顺序流中提供)以一次填满一个IC裸片或可一次并行按顺序地写入到多个IC裸片,例如,以并发填充存储器装置的IC裸片。LBA空间的区内的写入的映射也可按顺序地完成以简化用于执行映射的计算,如将参考ZNS映射数据结构更详细论述。当存在多个IC裸片可用时,来自多个写入流的命令中使用的逻辑地址(例如,LBA)可通过布局的动态生成部分分别映射到多个IC裸片,使得在执行来自多个写入流的命令中不存在任何存储器装置存取冲突。
在各种实施例中,转换处理器113存取ZNS映射数据结构中的某些(例如,区映射数据结构101及块集映射数据结构107)以便将LBA转换为物理地址空间的物理块地址(PBA)。在快闪媒体(例如,NOR或NAND快闪存储器)的上下文中的转换处理器113可被称为快闪转换处理器(FTL)。转换处理器113所采用的映射通常可被假定为涉及一类型块映射,例如,块层级映射或对数块映射。在检测到数据局部性的情况下或在ZNS存储器装置中,转换处理器113可映射形成区的一组块,例如,在ZNS数据结构内,这可涉及将按顺序编号的LBA映射到按顺序编号的PBA,如先前所论述。参考图2更详细地讨论用于将区的LBA空间映射到媒体的物理地址空间的ZNS数据结构的使用及其相互关系。
转换处理器113的另一主要功能为执行媒体管理操作,其可包含存储器分配操作、无用信息收集操作等。因为基于快闪的存储器装置的页无法被盖写,所以页的数据更新将在另一页内更新。更特定来说,页的新版本被写入到闲置页,例如,出于此目的已布建所述页。含有先前版本的页被标记为过时。当块含有过时页时,块在其可被写入之前被擦除,例如,用新数据再次编程。将页标记为过时并擦除以提供可再次编程的空闲页的过程被称为无用信息收集。
在ZNS实施例中,因为ZNS操作写入到顺序块,所以ZNS通常不涉及存储器单元的单个块的无用信息收集。此是因为,例如,ZNS架构的目标是使写入放大尽可能接近一(“1”),这几乎不涉及过度布建。然而,本公开引入一情况,其中由于数据从源块迁移到缓解块,检测到错误事件(例如读取干扰)的源块可通过无用信息收集来回收。将在块集映射数据结构107中发生到块层级的物理地址空间的映射,所述块集映射数据结构可因此用与缓解块有关的位置元数据更新,此参考图3详细说明。
图2为根据各种实施例说明经配置以支持基于区的映射的数据结构的实例的框图。控制器115可将图2中所说明的数据结构存储在易失性存储器125中,例如在SRAM中,或在存储器装置140A的存储器组件中,例如,在DRAM中。控制器115还可使用图2的数据结构来配置或实施媒体布局(例如,区的数据组将位于物理地址空间内的位置的布局)。在图2中,区映射数据结构201经配置以提供命名空间中区的媒体布局信息,例如用于ZNS操作的LBA空间。区映射数据结构201可与图1B的区映射数据结构101相同或相似。区映射数据结构201可具有多个条目。区映射数据结构201中的每一区映射条目识别关于区的信息,例如区的起始LBA地址211、区的块集识别符213、区的区光标值215、区的状态217等。
主机***120将数据写入在以区起始LBA识别符211的LBA开始的区中。主机***120将区中的数据按顺序地写入在LBA空间中。在将一定量的数据写入到区中之后,用于写入后续数据的当前起始LBA地址由区光标值215识别。区的每一写入命令将区光标值215移动到区的下一写入命令的新起始LBA地址。状态217可具有指示区为空白、满、隐式打开、显式打开、关闭等的值,以跟踪写入所述区的进程。
在图2中,逻辑到物理块映射数据结构203经配置以促进LBA地址到媒体中的物理地址的转换。逻辑到物理块映射数据结构203可具有多个条目。LBA可用作或转换成逻辑到物理块映射数据结构203中的条目的索引。所述索引可用于查找LBA的条目。逻辑到物理块映射数据结构203中的每一条目为LBA识别媒体中存储器块的物理地址。例如,媒体中的存储器块的物理地址可包含裸片识别符233、块识别符235、页映射条目识别符237等。裸片识别符233识别存储器子***110的存储器装置130、140中的特定IC裸片(例如,裸片A或裸片B)。块识别符235识别使用裸片识别符233识别的IC裸片内的特定存储器块(例如,NAND快闪存储器)。页映射条目识别符237识别页映射数据结构205中的条目。
页映射数据结构205可具有多个条目。页映射205中的每一条目可包含页识别符251,所述页识别符识别存储器单元(例如,NAND存储器单元)块内的存储器单元页。例如,页识别符251可包含页的字线编号及NAND存储器单元块中页的子块编号。此外,页的条目可包含页的编程模式253。例如,可以SLC模式、MLC模式、TLC模式或QLC模式对页进行编程。当以SLC模式配置时,页中的每一存储器单元待存储一位数据。当以MLC模式配置时,页中的每一存储器单元待存储两位数据。当以TLC模式配置时,页中的每一存储器单元待存储三位数据。当以QLC模式配置时,页中的每一存储器单元待存储四位数据。集成电路裸片中的不同页可具有用于进行数据编程的不同模式。
在图2中,块集数据结构207存储控制区的动态布局的方面的数据。块集数据结构207可与图1B的块集映射数据结构107相同或相似。块集数据结构207(其在一个实施例中可为表格)可具有多个条目。块集数据结构207中的每一块集条目识别其中存储区的数据的集成电路裸片(例如裸片A及裸片B)的数目/计数271。对于用于区的集成电路裸片中的每一个,块集数据结构207的块集条目具有裸片识别符273、块识别符275、页映射条目识别符277、页映射偏移值等。
裸片识别符273识别存储器子***110的存储器装置中的特定IC裸片(例如,裸片A或裸片B),在所述IC裸片上可存储区的后续数据。块识别符275识别使用裸片识别符273识别的IC裸片内的特定存储器块(例如,NAND快闪存储器或其它媒体),在所述块中可存储区的后续数据。页映射条目识别符237识别页映射数据结构205中的页映射条目,其识别可用于存储区的后续数据的页。
例如,存储器子***110接收多个写入命令流。在实施例中,多个流中的每一相应流经配置以在一个实施例中将数据按顺序地写入在逻辑地址空间中;且在另一实施例中,多个流中的流经配置以在一个实施例中将数据伪顺序或随机地写入在逻辑地址空间中。每一写入流包含命令集,所述命令集经标记为将一组数据作为一组一起写入、裁剪、盖写。在组中,数据可按顺序地、随机地或伪顺序地写入在逻辑空间中。优选地,将组中的数据写入到擦除块集中,其中擦除块集中的存储器单元存储所述流的数据但不存储来自其它流的数据。擦除块集可经擦除以移除流的数据而不擦除其它流的数据。
例如,写入流中的每一个经准许按顺序地写入在分配在存储器子***110的存储器装置130、140上的命名空间中的区中的LBA处,但被禁止将数据乱序写入在LBA(或逻辑地址)空间中。存储器子***110的转换处理器113识别存储器子***110中可用于并发写入数据的多个物理单元。
转换处理器113可从多个流中选择第一命令用于在存储器装置中可用于写入数据的多个物理单元中并发执行。转换处理器113可响应于经选定用于在多个物理单元中并发执行的第一命令而动态地生成及存储从逻辑地址空间中的第一命令所识别的逻辑地址映射到多个存储器单元中的物理单元的物理地址的布局的一部分。
命令执行处理器114可通过根据物理地址将数据存储到物理单元中来并发执行第一命令。例如,在调度第一命令以进行执行时,第二命令的执行可在存储器子***110的存储器装置的物理单元的子组中进行。因此,用于执行第二命令的物理单元子组不可用于第一命令。在第一命令被调度且第一命令中使用的逻辑地址的布局的部分确定之后,第一命令可在多个物理单元中并发地及/或与在存储器子***110的剩余媒体单元中的第二命令的执行的过程并发地执行。
例如,在识别可用于执行下一命令的多个存储器单元(例如,IC裸片)之后,转换处理器113可从块集数据结构207识别可用于存储下一命令的数据的物理地址。物理地址可用于为下一命令中使用的LBA地址更新逻辑到物理块映射数据结构203中的对应条目。
例如,当IC裸片可自由写入数据时,转换处理器113可确定可写入/编程到IC裸片中的存储器单元中的区的命令。从块集数据结构207,转换处理器113定位区的条目,定位与集成电路裸片的识别符273相关联的块识别符275及页映射条目识别符277,并使用裸片识别符273、块识别符275及页映射条目识别符277来更新用于区的命令中使用的LBA的逻辑到物理块映射数据结构203中条目的对应字段。
图3为根据实施例说明存储器子***110的控制器115在映射元数据内从源块重新映射到缓解块的功能性的框图。在各种实施例中,存储器装置130、140中的一或多个可包含数据平面310,如图1B中所说明。平面310可包含块集的子段,其中控制器115(例如,命令执行处理器114)检测块中的错误事件,例如,出于解释的目的,被称为源块312。
控制器115可进一步执行对其中驻存有源块312的存储器装置的至少平面310的扫描以确认满足错误事件的阈值电平且错误事件实际上存在。在一个实施例中,阈值为读取干扰阈值,其中当控制器115从第一页读取时,第一页的相邻页被干扰到阈值电平。这是其中可发生读取干扰错误事件的NAND几何结构的特性,且其中存在相邻页的块被认为是源块312。在另一实施例中,编程失败处置事件发生,其中编程失败发生在源块312处且编程失败处置程序不能解决所述错误。在又一实施例中,发生损耗均衡事件,其中块的编程循环计数的数目接近擦除/编程循环的阈值数目,在所述阈值数目下,所述块将不可用或暂停(由于具有超过其它块的使用)。在编程失败处置事件或损耗均衡事件的任一状况下,出于后续数据迁移的目的,发生这些事件的块可被称为源块312。
响应于源块312处错误事件的检测(且任选地确认),控制器115(例如,命令执行处理器114)可进一步从源块读取数据并将所述数据写入(例如,编程或迁移)到缓解块316中。在一些实施例中,缓解块316为过度布建块,例如,在过度布建块条带314中。过度布建块为预先擦除的存储器单元块,且因此为控制器115提供额外存储容量。在本上下文中,过度布建块为空白的且与源块312位于相同平面内。由于所检测到错误事件,迁移到缓解块316的数据可避免源块312中的可能数据损坏或数据丢失。任何进行中的读取命令可继续到源块312。然而,在与ECC相关的读取错误的情况下,可将读取请求重新定向到缓解块中的数据副本。
在各种实施例中,在将数据写入到缓解块316之后,控制器115(例如,转换处理器113)可在块集映射数据结构107内用缓解块316的识别替换源块312的识别。控制器115可通过检索临时存储(例如,在迁移期间通过命令执行处理器114)到缓解块元数据结构109的与缓解块316的位置相关联的新元数据来执行从源块312到缓解块316的映射的此交换。在一个实施例中,此元数据存储在包含块集识别符(ID)323及块ID 325的条目中。块集ID 323链接到块集映射数据结构107内的正确块集条目。块集ID 323因此允许控制器115用新块ID325(例如,在被存储在块集映射数据结构107中之后经说明为缓解块ID 325')交换源块312的旧块ID(例如,图2中的块识别符275)。以此方式,控制器115可在块集映射数据结构107内用新元数据交换与源块312的位置相关联的旧元数据以将源块312重新映射到缓解块316。
图4为根据实施例的错误处置优化的方法400的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路***、专用逻辑、可编程逻辑,微码,装置的硬件,集成电路等),软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法400由图1A到1B的控制器115执行。尽管以特定的顺序或次序展示,但除非另有规定,否则可修改过程的次序。因此,所说明的实施例应仅理解为实例,且所说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非在每一实施例中需要所有过程。其它过程流程也是可能的。
参考图4,在操作410处,处理逻辑确定在源块中是否达到错误事件阈值,例如,以便检测错误事件的发生。在各种实施例中,错误事件为读取干扰事件、编程失败处置事件、损耗均衡事件或类似错误事件中的一个。如果达到错误事件阈值,那么在操作420处,处理逻辑从源块(例如,引发错误事件的源块)读取数据。在操作430处,处理逻辑将数据写入到与所述源块不同的缓解块中。源块与具有逻辑块地址(LBA)空间的区相关联,所述LBA空间被按顺序地映射到数据组的按顺序映射物理地址空间。在一个实施例中,缓解块为存储器单元的过度布建块,所述块是空白的且与源块位于相同平面内。
继续参考图4,在操作440处,处理逻辑确定是否待将额外数据从源块写入到缓解块。如果待将额外数据从源块写入到缓解块,那么在操作445处,处理逻辑递增源块内的读取位置且方法400循环回到操作420以将额外数据从源块拷贝到缓解块。如果并非待将额外数据从源块写入到缓解块,那么不存在更多待拷贝数据,在操作450处,处理逻辑在块集映射数据结构内用缓解块的第二识别符替换(或交换)源块的第一识别符。块集映射数据结构可包含关于存储器装置的数据组的块位置元数据。然后可用命令标签创建的命令处置其它读取请求,所述命令标签包含指向缓解块的第二识别符。
图5为根据各种实施例的用于存取正在迁移到缓解块的数据的方法500的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路***、专用逻辑、可编程逻辑,微码,装置的硬件,集成电路等),软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法500由图1A到1B的控制器115执行。尽管以特定的顺序或次序展示,但除非另有规定,否则可修改过程的次序。因此,所说明的实施例应仅理解为实例,且所说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非在每一实施例中需要所有过程。其它过程流程也是可能的。
在一些实施例中,可在处理逻辑将数据从源块写入到缓解块的同时执行方法500的特征。参考图5,在操作510处,处理逻辑确定在源块(例如,在操作410处引发错误事件的块)处是否发生读取错误。如果在源块引发读取错误,检测到读取错误(例如,在解码至少部分从源块拷贝的码字之后的ECC错误),那么在操作520处,处理逻辑确定缓解块存在。例如,处理逻辑可经由存取缓解块元数据结构109中的临时条目来做出此确定。
在各种实施例中,如果缓解块不存在,那么在操作525处,处理逻辑将错误返回到请求代理,例如,在一个实施例中所述请求代理可为主机***120。此外,如果处理逻辑确定缓解块存在,那么在操作530处,处理逻辑从缓解块读取数据,例如代替存储在源块处的数据。在操作540处,处理逻辑将数据返回到请求代理或主机***120。以此方式,在迁移过程以及块集映射数据结构内的源块到缓解块的重新映射期间,可避免源块内可能的数据损坏或丢失(由于所检测到错误事件)。如果作为读取请求主题的数据尚未在缓解块中,那么处理错误可进行错误处置,其中一部分可包含重试读取源块。在由错误处置引起的延迟期间,可已将数据写入到缓解块,并可能已将其重新映射在块集映射数据结构内。以此方式,延迟应通过使所述数据在一旦被写入到缓解块就可用于处理装置来解决错误。
图6为根据实施例的用于将检测到错误的源块重新映射到缓解块的方法600的流程图。方法600可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路***、专用逻辑、可编程逻辑,微码,装置的硬件,集成电路等),软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法600由图1A到1B的控制器115执行。尽管以特定的顺序或次序展示,但除非另有规定,否则可修改过程的次序。因此,所说明的实施例应仅理解为实例,且所说明的过程可以不同次序执行,且一些过程可并行执行。另外,在各种实施例中可省略一或多个过程。因此,并非在每一实施例中需要所有过程。其它过程流程也是可能的。
在各种实施例中,可执行方法600以便实施在图4的操作450处提及的重新映射。参考图6,在操作610处,处理逻辑确定缓解块是否存在,例如,从源块(例如,图3的源块312)接收迁移数据的缓解块316(图3)。如参考图3所论述,处理逻辑可经由存取缓解块元数据结构109内的临时条目来做出此确定。在操作620处,处理逻辑确定写入指针是否已达到安全边界。达到安全边界是指缓解块的写入指针等于源块中的指针。在源块在更新块集映射数据结构内的映射之前引发读取错误的情况下,进行安全边界确定可在知晓读取位置时促进图5的方法500的执行。
如果缓解块存在且写入指针已达到安全边界,那么在操作630处,处理逻辑锁定映射到源块的区。锁定可处于适当位置以防止针对所述区的后续写入请求,但锁还导致防止针对所述区的后续读取请求。在操作640,处理逻辑确定是否存在正发生的任何进行中的写入操作。例如,如果写入操作已在区映射到的块处开始(但未完成),那么此被称为进行中的写入操作。如果存在尚未完成的进行中的写入操作,那么在操作645处,处理逻辑让进行中的写入操作在继续进行之前完成。否则,所述方法可继续操作650。这些进行中的写入操作可包含允许完成将数据从源块拷贝到缓解块。
继续参考图6,在操作650处,处理逻辑在块集映射数据结构中用缓解块的第二识别符交换源块的第一识别符。参考图3及方法400(图4)的操作450更详细地描述此块交换。在操作660处,处理逻辑在替换(或交换)识别符之后解锁所述区。因此,所述区的锁定可在块识别符的交换之前发生且所述区的解锁可在块识别符的交换之后发生。根据操作650,锁定确保所存取数据的恰当一致性同时更新与所述块为其一部分的块集相关联的一致性元数据。在操作670处,处理逻辑将源块的第一识别符推送到无用信息收集池。无用信息收集池可涉及在阈值大小下将被擦除并经布建用于使用新数据进行编程的块。
图7说明计算机***700的实例机器,在所述计算机***内可执行用于致使机器执行本文中所论述的方法中的任何一或多个的指令集。在一些实施例中,计算机***700可对应于主机***(例如,图1A的主机***120),所述主机***包含、耦合到,或利用存储器子***(例如,图1A的存储器子***110)。在替代实施例中,机器可连接(例如,联网)到LAN、内联网、外联网及/或因特网中的其它机器。机器可在客户端-服务器网络环境中以服务器或客户端机器的身份运行,作为对等(或分布式)网络环境中的对等机器运行,或作为云计算基础设施或环境中的服务器或客户端机器运行。
所述机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络器具、服务器、网络路由器、交换机或网桥,或能够执行规定由所述机器进行的动作的指令集(顺序或其它方式)的任何机器。此外,虽然说明单个机器,但术语“机器”还应被视为包含单独或联合执行一(或多个)指令集以执行本文所论述的方法中的任何一或多个的任何机器集合。
实例计算机***700包含经由总线730彼此通信的处理装置702、主存储器704(例如,只读存储器(ROM)、快闪存储器、例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)的动态随机存取存储器(DRAM)等)、静态存储器706(例如,快闪存储器、静态随机存取存储器(SRAM)等)以及数据存储***718。
处理装置702表示一或多个通用处理装置,例如微处理器、中央处理单元,等等。更具体地,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集组合的处理器。处理装置702还可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器,等等。处理装置702经配置以执行用于执行本文中所论述的操作及步骤的指令726。计算机***700可进一步包含网络接口装置708以通过网络720进行通信。
数据存储***718可包含机器可读存储媒体724(也被称作为计算机可读媒体),其上存储体现本文中所描述的方法或功能中的任何一或多个的一或多个集合的指令726或软件。指令726还可在计算机***700执行所述指令期间完全或至少部分地驻留在主存储器704内及/或处理装置702内,主存储器704及处理装置702也构成机器可读存储媒体。机器可读存储媒体724、数据存储***718及/或主存储器704可对应于图1A到1B的存储器子***110。
在一个实施例中,指令726包含用以实施对应于图1B的转换处理器113的功能性的指令。虽然机器可读存储媒体724在实例实施例中被展示为单个媒体,但术语“非暂时性机器可读存储媒体”应被视为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被视为包含能够存储或编码指令集以供机器执行且使机器执行本公开的方法中的任何一或多个的任何媒体。因此,术语“机器可读存储媒体”应被视为包含(但不限于)固态存储器、光学媒体及磁媒体。
已在计算机存储器内的算法及数据位的操作的符号表示的形式来呈现前面的详细描述的一些部分。这些算法描述及表示为由所属数据处理领域的技术人员用于以向所属领域的其它技术人员传达其工作的本质的方式。算法此处且通常被认为导致所要结果的自洽操作序列。操作为需要物理操纵物理量的操作。通常,但非必需地,这些量可采取能够存储、组合、比较或以其它方式操纵的电或磁信号的形式。将这些信号称作位、值、元素、符号、字符、项、数字等等有时已证明是便利的(主要出于共用的原因)。
然而,应记住,所有这些术语及类似术语均与适当的物理量相关联,且仅作为应用于这些量的方便标签。本公开可是指计算机***或类似电子计算装置的动作及过程,其将表示为计算机***的寄存器及存储器内的物理(电子)量的数据操纵及变换为类似地表示为计算机***存储器或寄存器或其它此类信息存储器***内的物理量的其它数据。
本公开还涉及用于执行本文中操作的设备。此设备可为特定目的而专门构造,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的磁盘,包含软盘、光盘、CD-ROM及磁光盘,只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡,或适用于存储电子指令的任何类型的媒体,每一者都耦合到计算机***总线。
本文中所呈现的算法及显示并不与任何特定计算机或其它设备内在地相关。根据本文中的教示,各种通用***可与程序一起使用,或可证明构造更专用的设备以执行所述方法为方便的。各种这些***的结构将如下文描述中所述。另外,不参考任何特定编程语言描述本公开。应理解,可使用各种编程语言来实施如本文中所描述的本公开的教示。
本公开可经提供作为计算机程序产品或软件,其可包含机器可读媒体,具有存储于其上的指令,所述指令可用于对计算机***(或其它电子装置)进行编程以根据本公开执行处理。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁性磁盘存储媒体、光存储媒体、快闪存储器组件等。
在上述说明书中,本公开的实施例已参考其特定实例实施例进行描述。显而易见的是,在不脱离所附权利要求书中所阐明的本公开的实施例的更广泛的精神及范围的情况下,可对其进行各种修改。因此,说明书及图式应考虑说明性而非限制性。
Claims (20)
1.一种存储器子***,其包括:
存储器装置,其包括多个存储器单元块;及
处理装置,其以操作方式耦合到所述存储器装置,所述处理装置:
检测在所述多个存储器单元块的源块内触发的错误事件;及
响应于检测到所述错误事件:
从所述源块读取数据;
将所述数据写入到与所述源块不同的缓解块;及
在块集映射数据结构中,用所述缓解块的第二识别符替换所述源块的第一识别符,其中所述块集映射数据结构包括关于所述存储器装置的包含所述数据的数据组的块位置元数据,
其中为了用所述第二识别符替换所述第一识别符,所述处理装置进一步:锁定包含所述源块的区,以防止针对所述区的后续写入请求及读取请求;在锁定所述区之后,用所述第二识别符替换所述第一识别符;及在所述替换之后解锁所述区。
2.根据权利要求1所述的存储器子***,其中所述数据组与逻辑块地址LBA空间区相关联,所述逻辑块地址LBA空间区包括多个顺序LBA,所述多个顺序LBA被按顺序地映射到多个顺序物理地址。
3.根据权利要求1所述的存储器子***,其中所述错误事件包括读取干扰事件、编程失败处置事件和损耗均衡事件中的至少一个。
4.根据权利要求1所述的存储器子***,其中所述缓解块为所述多个存储器单元块的过度布建块,所述过度布建块与所述源块位于同一平面内。
5.根据权利要求1所述的存储器子***,其中在将所述数据写入到所述缓解块中时,所述处理装置进一步:
响应于读取请求,检测所述源块处的读取错误;
确定所述缓解块存在;
从所述缓解块读取所述数据;及
将所述数据返回到请求所述数据的主机***。
6.根据权利要求1所述的存储器子***,其中,响应于对所述源块的读取请求,所述处理装置将从由所述块集映射数据结构识别的所述缓解块返回数据。
7.根据权利要求1所述的存储器子***,其中为了用所述第二识别符替换所述第一识别符,所述处理装置进一步将所述源块的所述第一识别符推送到无用信息收集池。
8.一种用于错误处置优化的方法,其包括:
通过耦合到存储器装置的处理装置检测在所述存储器装置的多个存储器单元块的源块内达到错误事件阈值;及
响应于所述检测:
从所述源块读取数据;
将所述数据写入到与所述源块不同的缓解块;及
在块集映射数据结构中,用所述缓解块的第二识别符替换所述源块的第一识别符,其中所述块集映射数据结构包括关于所述存储器装置的包含所述数据的数据组的块位置元数据,
其中所述用所述第二识别符替换所述第一识别符包括:锁定包含所述源块的区,以防止针对所述区的后续写入请求及读取请求;在锁定所述区之后执行所述替换;及在执行所述替换之后解锁所述区。
9.根据权利要求8所述的方法,其中所述错误事件阈值与读取干扰事件、编程失败处置事件和损耗均衡事件中的至少一个相关联,且所述方法进一步包括经由对所述存储器装置执行扫描来确认所述错误事件阈值与错误事件相关联。
10.根据权利要求8所述的方法,其中所述缓解块为所述多个存储器单元块的过度布建块,所述过度布建块与所述源块位于同一平面内。
11.根据权利要求8所述的方法,其进一步包括:在所述写入期间:
响应于读取请求检测所述源块处的读取错误;
确定所述缓解块存在;
从所述缓解块读取所述数据;及
将所述数据返回到请求所述数据的主机***。
12.根据权利要求8所述的方法,其中响应于对所述源块的读取请求,所述方法进一步包括从由所述块集映射数据结构识别的所述缓解块返回数据。
13.根据权利要求8所述的方法,其中所述用所述第二识别符替换所述第一识别符包括:
确定用于所述缓解块的写入指针等于所述源块中的指针;及
将所述源块的所述第一识别符推送到无用信息收集池。
14.一种存储指令的非暂时性计算机可读媒体,当所述指令由耦合到存储器装置的处理装置执行时,致使所述处理装置执行包括以下操作的操作:
在多个存储器单元块中识别存储来自引发错误事件的源块的迁移数据的缓解块;
检索与所述缓解块的位置相关联的新元数据;及
在包含所述源块的映射的块集映射数据结构内,用所述新元数据交换与所述源块的位置相关联的旧元数据以将所述源块重新映射到所述缓解块,
其中为执行所述交换,所述操作进一步包括:在所述交换之前,锁定包含所述源块的区,其中所述锁定将防止针对所述区的后续写入请求及读取请求;在所述锁定之后在所述块集映射数据结构内,用所述缓解块的第二识别符交换所述源块的第一识别符;及在所述交换之后解锁所述区。
15.根据权利要求14所述的非暂时性计算机可读媒体,其中为执行所述交换,所述操作进一步包括:
确定用于所述缓解块的写入指针等于所述源块中的指针;及
将所述源块的所述第一识别符推送到无用信息收集池。
16.根据权利要求15所述的非暂时性计算机可读媒体,其中所述操作进一步包括,在所述区的所述锁定与所述解锁之间,完成针对含有所述缓解块的块集的任何进行中的写入操作。
17.根据权利要求14所述的非暂时性计算机可读媒体,其中所述操作进一步包括:
接收来自主机***对所述源块的读取请求;
存取所述块集映射数据结构内的所述映射;及
基于所述映射将存储在所述缓解块中的所述迁移数据发射到所述主机***。
18.根据权利要求14所述的非暂时性计算机可读媒体,其中所述错误事件包括读取干扰事件、编程失败处置事件和损耗均衡事件中的至少一个。
19.根据权利要求14所述的非暂时性计算机可读媒体,其中所述缓解块为所述多个存储器单元块的过度布建块,所述过度布建块与所述源块位于同一平面内。
20.根据权利要求14所述的非暂时性计算机可读媒体,其中所述操作进一步包括:
检测在所述多个存储器单元块的源块内触发的错误事件;及
响应于检测到所述错误事件:
从所述源块读取数据;及
将所述数据写入到与所述源块不同的所述缓解块中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/912,397 | 2020-06-25 | ||
US16/912,397 US11210168B1 (en) | 2020-06-25 | 2020-06-25 | Error handling optimization in memory sub-system mapping |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113851172A CN113851172A (zh) | 2021-12-28 |
CN113851172B true CN113851172B (zh) | 2022-08-23 |
Family
ID=78975351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110710628.0A Active CN113851172B (zh) | 2020-06-25 | 2021-06-25 | 存储器子***映射中的错误处置优化 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11210168B1 (zh) |
CN (1) | CN113851172B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11605439B2 (en) * | 2021-03-31 | 2023-03-14 | Micron Technology, Inc. | Remapping bad blocks in a memory sub-system |
US11625184B1 (en) * | 2021-09-17 | 2023-04-11 | International Business Machines Corporation | Recalling files from tape |
KR20240108717A (ko) * | 2023-01-02 | 2024-07-09 | 삼성전자주식회사 | 가상 존 관리 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102272745A (zh) * | 2009-01-08 | 2011-12-07 | 美光科技公司 | 存储器***控制器 |
CN103699457A (zh) * | 2013-09-26 | 2014-04-02 | 深圳市泽云科技有限公司 | 基于条带化的磁盘阵列修复方法及装置 |
CN107102955A (zh) * | 2016-02-19 | 2017-08-29 | 希捷科技有限公司 | 用于存储子***的关联和原子回写高速缓冲存储***和方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3017892B2 (ja) * | 1992-09-30 | 2000-03-13 | 株式会社東芝 | ファイル管理装置 |
JPH09306189A (ja) * | 1996-05-10 | 1997-11-28 | Mitsubishi Electric Corp | 不揮発性半導体記憶装置 |
US20100115182A1 (en) * | 2008-11-06 | 2010-05-06 | Sony Corporation | Flash memory operation |
US8099543B2 (en) * | 2009-02-03 | 2012-01-17 | Micron Technology, Inc. | Methods of operarting memory devices within a communication protocol standard timeout requirement |
US8677203B1 (en) * | 2010-01-11 | 2014-03-18 | Apple Inc. | Redundant data storage schemes for multi-die memory systems |
US8560698B2 (en) * | 2010-06-27 | 2013-10-15 | International Business Machines Corporation | Allocating unique identifiers using metadata |
TWI653533B (zh) * | 2017-03-07 | 2019-03-11 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
US10101942B1 (en) * | 2017-04-17 | 2018-10-16 | Sandisk Technologies Llc | System and method for hybrid push-pull data management in a non-volatile memory |
US10769018B2 (en) * | 2018-12-04 | 2020-09-08 | Alibaba Group Holding Limited | System and method for handling uncorrectable data errors in high-capacity storage |
KR20200122685A (ko) * | 2019-04-18 | 2020-10-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 내에서 서로 다른 종류의 데이터를 처리하기 위한 장치 및 방법 |
TWI726314B (zh) * | 2019-05-02 | 2021-05-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
TWI790383B (zh) * | 2019-06-19 | 2023-01-21 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
KR20210046377A (ko) * | 2019-10-18 | 2021-04-28 | 에스케이하이닉스 주식회사 | 마이그레이션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법 |
US11145389B2 (en) * | 2019-12-03 | 2021-10-12 | Intel Corporation | Detection and error-handling of high error rate blocks during copyback |
US11630725B2 (en) * | 2019-12-24 | 2023-04-18 | Micron Technology, Inc. | Management of parity data in a memory sub-system |
US11256616B2 (en) * | 2019-12-24 | 2022-02-22 | Micron Technology, Inc. | Power loss data protection in a memory sub-system |
-
2020
- 2020-06-25 US US16/912,397 patent/US11210168B1/en active Active
-
2021
- 2021-06-25 CN CN202110710628.0A patent/CN113851172B/zh active Active
- 2021-11-18 US US17/530,313 patent/US11561855B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102272745A (zh) * | 2009-01-08 | 2011-12-07 | 美光科技公司 | 存储器***控制器 |
CN103699457A (zh) * | 2013-09-26 | 2014-04-02 | 深圳市泽云科技有限公司 | 基于条带化的磁盘阵列修复方法及装置 |
CN107102955A (zh) * | 2016-02-19 | 2017-08-29 | 希捷科技有限公司 | 用于存储子***的关联和原子回写高速缓冲存储***和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20210406117A1 (en) | 2021-12-30 |
US11561855B2 (en) | 2023-01-24 |
US11210168B1 (en) | 2021-12-28 |
CN113851172A (zh) | 2021-12-28 |
US20220075690A1 (en) | 2022-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7446482B2 (ja) | 順次的にプログラムするメモリサブシステムにおいて非同期電力損失をハンドリングすること | |
US9507711B1 (en) | Hierarchical FTL mapping optimized for workload | |
US9880939B2 (en) | Memory system and information processing system | |
US9753649B2 (en) | Tracking intermix of writes and un-map commands across power cycles | |
CN114730300B (zh) | 对区命名空间存储器的增强型文件***支持 | |
CN110928807B (zh) | 用于检查存储器***中的有效数据的设备和方法 | |
CN113851172B (zh) | 存储器子***映射中的错误处置优化 | |
WO2016069188A1 (en) | Processing of un-map commands to enhance performance and endurance of a storage device | |
US11693768B2 (en) | Power loss data protection in a memory sub-system | |
US11157402B2 (en) | Apparatus and method for managing valid data in memory system | |
US10963160B2 (en) | Apparatus and method for checking valid data in block capable of storing large volume data in memory system | |
KR20220129662A (ko) | 순차적으로 프로그래밍하는 메모리 서브시스템의 순차 판독 최적화 | |
CN114639415A (zh) | 后台存储器扫描块选择 | |
US20240143511A1 (en) | Dynamically sized redundant write buffer with sector-based tracking | |
US11599466B2 (en) | Sector-based tracking for a page cache | |
US11726669B2 (en) | Coherency locking schemes | |
KR20210045506A (ko) | 하이브리드 듀얼 인-라인 메모리 모듈에서의 캐시 작업 | |
CN113126906A (zh) | 用于存储器装置的元数据指示 | |
US11392505B2 (en) | Rebuilding logical-to-physical address mapping with limited memory | |
CN115827689A (zh) | 数据库持久化 | |
CN117999547A (zh) | 用于存储器子***中的两遍次编程的虚拟管理单元方案 | |
CN117950579A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |