CN107037982B - Raid-6数据存储装置以及包括其的数据处理系统 - Google Patents
Raid-6数据存储装置以及包括其的数据处理系统 Download PDFInfo
- Publication number
- CN107037982B CN107037982B CN201611195390.8A CN201611195390A CN107037982B CN 107037982 B CN107037982 B CN 107037982B CN 201611195390 A CN201611195390 A CN 201611195390A CN 107037982 B CN107037982 B CN 107037982B
- Authority
- CN
- China
- Prior art keywords
- data block
- data
- stripe
- controller
- decoded
- 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
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- 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/1072—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 multilevel memories
-
- 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
提供RAID‑6数据存储装置以及包括其的数据处理系统。提供一种数据存储装置。所述数据存储装置包括:存储介质,被配置为存储包括在条带集中的数据块;控制器,连接到存储介质,并且被配置为:在数据块之中的设置在一列中的第一数据块的读取操作期间,将第一数据块进行解码;基于第一数据块的读取故障,读取数据块之中的设置在所述列中的第一组数据块。
Description
本申请要求于2016年2月3日提交的第10-2016-0013549号韩国专利申请的优先权,所述韩国专利申请的公开通过引用全部包含于此。
技术领域
与示例实施例一致的设备涉及廉价/独立磁盘冗余阵列(RAID)-6数据存储装置以及包括其的数据存储系统。
背景技术
在计算机存储领域,RAID是一数据存储虚拟化技术,该数据存储虚拟化技术为了数据冗余度和/或性能改善的目的,将多个物理磁盘驱动器组件合并为单个逻辑单元。数据按照取决于冗余和性能的等级的被称为RAID级别的若干方式之中的一种方式被分布在物理磁盘驱动器组件。
标准RAID级别包括RAID 0至RAID 6。RAID 6包括具有双重分布式奇偶校验的块级条带化。双重奇偶校验提供达到两个故障驱动器的容错。
在包括数据存储装置的RAID 6数据系统中正在执行读取操作的同时,RAID 6数据系统的纠错码(ECC)解码器将已经从多个数据存储装置之中的一个数据存储装置读取的数据进行解码。当在ECC解码期间发生不可校正的错误时,包括在数据存储装置中的RAID控制器从其他数据存储装置读取数据,并且使用该数据来恢复不可校正的错误。这样的错误恢复花费大量的时间。因此,期望高效率的错误恢复方法。
发明内容
根据示例实施例,一种数据存储装置包括:存储介质,被配置为存储在条带集中包括的数据块;控制器,连接到存储介质,并且被配置为:在数据块之中的设置在一列中的第一数据块的读取操作期间,将第一数据块进行解码;基于第一数据块的读取故障,读取数据块之中的设置在所述列中的第一组数据块。
根据示例实施例,一种数据存储装置包括:存储介质,被配置为:根据廉价/独立磁盘冗余阵列(RAID)6,存储在条带集中包括的数据块;控制器,连接到存储介质,并且被配置为:在数据块之中的设置在一列中的第一数据块的读取操作期间,将第一数据块进行解码;基于第一数据块的读取故障,读取数据块之中的设置在所述列中的除了第一数据块之外的第二数据块。
根据示例实施例,一种数据处理系统包括:数据存储装置;主机,连接到数据存储装置。数据存储装置包括:存储介质,被配置为:根据廉价/独立磁盘冗余阵列(RAID)6,存储在条带集中包括的数据块;控制器,连接到存储介质,并且被配置为:在数据块之中的设置在一列中的第一数据块的读取操作期间,将第一数据块进行解码;基于第一数据块的读取故障,读取数据块之中的设置在所述列中的除了第一数据块之外的第二数据块;使用读取的第二数据块来恢复第一数据块;将恢复的第一数据块发送到主机。
根据示例实施例,一种数据存储装置包括:存储介质,被配置为存储数据块;控制器,连接到存储介质,并且被配置为:读取并且解码数据块之中的设置在一列中的第一数据块;基于第一数据块的读取故障,读取并且解码数据块之中的设置在所述列中的除了第一数据块之外的第二数据块;基于解码的第二数据块恢复第一数据块。
附图说明
图1是根据示例实施例的数据处理系统的框图。
图2是根据示例实施例的廉价/独立磁盘冗余阵列(RAID)-6条带集的结构的示图。
图3是图1中示出的闪存控制器的框图。
图4A是根据示例实施例的针对读取单个数据条带时的故障的第一恢复模式的概念性示图。
图4B是根据示例实施例的针对读取单个数据条带时的故障和读取Q校验条带时的故障的第一恢复模式的概念性示图。
图5是根据示例实施例的针对读取单个数据条带时的故障和读取P校验条带时的故障的第二恢复模式的概念性示图。
图6是根据示例实施例的针对读取两个数据条带时的故障的第三恢复模式的概念性示图。
图7是根据示例实施例的条带集的存储的示图。
图8是根据示例实施例的条带集的存储的示图。
图9和图10是根据示例实施例的图1中示出的数据储存装置的操作的流程图。
图11是根据示例实施例的图1中示出的数据储存装置的操作的流程图。
具体实施方式
如在此使用的,数据块是被执行解码(例如,纠错码(ECC)解码)的最小单元,并且被称为ECC扇区(sector)。
图1是根据示例实施例的数据处理系统100的框图。数据处理系统100包括主机200以及可通过接口110与主机200传送信号的数据存储装置300。数据处理系统100可以是存储器系统。数据处理系统100可被实现为个人计算机(PC)、工作站、数据中心、互联网数据中心(IDC)、直连式存储(DAS)、存储区域网(SAN)、网络附加存储(NAS)或移动计算装置,但示例实施例不限于这些示例。数据处理系统100可以是智能汽车或汽车系统。移动计算装置可以是膝上型计算机、智能电话、平板PC、个人数字助手(PDA)、企业数字助手(EDA)、移动互联网装置(MID)、可穿戴计算机、物联网(IoT)装置、万物联网(IoE)装置或无人机。
接口110可被实现为串行高级技术附件(SATA)接口、SATA快速(SATAe)接口、SAS(串行连接小型计算机系统接口(SCSI))、外围组件互联快速(PCIe)接口、非易失性存储器快速(NVMe)接口、高级主机控制器接口(AHCI)或多媒体卡(MMC)接口,但是示例实施例不限于这些示例。接口110可发送电信号或光信号。
主机200可通过接口110控制数据存储装置300的数据处理操作(例如,写入或读取操作)。主机200可表示主机控制器。主机200可被实现为集成电路(IC)、母板、片上系统(SoC)、应用处理器(AP)、移动AP、网络(web)服务器、数据服务器、数据库服务器或引擎控制单元(ECU),但是示例实施例不限于这些示例。
数据存储装置300包括控制器310、动态随机存取存储器(DRAM)360和存储介质400。例如,数据存储装置300可具有廉价/独立磁盘冗余阵列(RAID)-6架构。
数据存储装置300可被实现为基于闪存的存储器装置,但是示例实施例不限于此。例如,数据存储装置300可被实现为固态驱动器或固态盘(SSD)、嵌入式SSD(eSSD)、通用闪存(UFS)、MMC、嵌入式MMC(eMMC)或管理型NAND,但是示例实施例不限于这些示例。基于闪存的存储器装置可以是NAND型闪存装置或NOR型闪存装置。数据存储装置300可表示数据库。可选地,数据存储装置300可被实现为硬盘驱动器(HDD)、相变随机存取存储器(PRAM)装置、磁阻式RAM(MRAM)装置、自旋扭矩MRAM(STT-MRAM)装置、铁电RAM(FRAM)装置或电阻式RAM(RRAM),但是示例实施例不限于这些示例。
控制器310可控制主机200、DRAM 360和存储器介质400之间的信号的传输或处理。控制器310可被实现为IC或SoC,并且可被称为SSD控制器或RAID-6控制器。控制器310包括:传输介质315、中央处理单元(CPU)320、内存储器325、只读存储器(ROM)330、主机接口335、缓冲器控制器340、直接存储器存取(DAM)控制器345和存储介质控制器350。
传输介质315可以是传输线或总线。当传输介质315是总线时,该总线可被实现为高级微控制器总线架构(AMBA)、高级高性能总线(AHB)、高级外围总线(APB)、高级可扩展接口(AXI)、高级系统总线(ASB)、AXI一致性扩展(ACE)或它们的组合,但是示例实施例不限于这些示例。
CPU 320可控制控制器310。CPU 320可通过传输介质315来控制内存储器325、ROM330、主机接口335、缓冲器控制器340、DMA控制器345和/或存储介质控制器350。CPU 320可包括至少一个核。
内存储器325可存储可由CPU 330执行的ROM代码或闪存转换层(FTL)代码。当数据存储装置300被启动时,ROM代码可从ROM 330加载到内存储器325,FTL代码可从存储介质400加载到内存储器325中。内存储器325可被实现为RAM、DRAM、静态RAM(SRAM)、缓冲器、缓冲器存储器、高速缓存或紧密结合存储器(TCM),但是示例实施例不限于这些示例。
ROM 330可存储ROM代码。执行ROM代码的CPU 320可初始化主机接口335、存储介质控制器350和DRAM 360。CPU 320将控制器310的固件从存储介质400加载到DRAM 360,可将固件从DRAM 360加载到内存储器325,并且可在内存储器325中执行固件。
主机接口335可改变将被发送到主机200的信号的格式,并且可通过接口110将改变格式的信号发送到主机200。主机接口335还可从主机200接收信号,改变信号的格式,并且将改变格式的信号发送到CPU 320和/或缓冲器控制器340。主机接口335可包括发送和接收信号的收发器。
主机接口335的结构和操作可被配置为可与接口110的结构和操作兼容。主机接口335可以是SATA接口、SATAe接口、SAS、PCIe接口、NVMe接口、AHCI、MMC接口、NAND型闪存接口或NOR型闪存接口,但是不限于此。
缓冲器控制器340可根据CPU 320的控制或者由CPU 320执行的固件的控制,将数据写入到DRAM 360,或从DRAM 360读取数据。缓冲器控制器340可被称为控制对DRAM 360执行的写入和读取操作的控制器或缓冲器管理器。DMA控制器345可将数据从缓冲器控制器340发送到存储介质控制器350,或者将数据从存储介质控制器350发送到缓冲器控制器340。
存储介质控制器350可根据CPU 320的控制或者由CPU 320执行的固件的控制,通过多个通道CH1和CH2之中的一个通道,控制关于存储介质400的数据处理操作(例如,写入操作或读取操作)。存储介质控制器350可被实现为SATA接口、SATAe接口、SAS、PCIe接口、NVMe接口、AHCI、MMC接口、NAND型闪存接口或NOR型闪存接口,但是示例实施例不限于这些示例。
存储介质控制器350包括ECC编码器/解码器355。ECC编码器/解码器355可生成将被存储在存储介质400中的ECC扇区。ECC扇区包括数据和ECC奇偶校验。ECC扇区是被控制器310执行ECC解码的单元。ECC编码器/解码器355可校正从存储介质400输出的ECC扇区中的错误。ECC编码器/解码器355可以是ECC引擎。
DRAM 360可接收并存储从主机接口335输出的数据或从DMA控制器345输出的数据,或者可根据缓冲器控制器340的控制,将数据发送到缓冲器控制器340。DRAM 360是易失性存储器装置的示例。
DRAM 360可包括:存储关于存储介质400的用于逻辑地址到物理地址的转换的映射表的第一区域以及用作高速缓存的第二区域。由CPU 320执行的FTL代码可使用存储在第一区域中的映射表来执行逻辑地址到物理地址的转换。
当控制器310和DRAM 360分别以不同的半导体芯片形成时,控制器310和DRAM 360可以以封装件上封装(PoP)、多芯片封装(MCP)或封装中的系统(SiP)被实现,但是示例实施例不限于这些示例。包括DRAM 360的第一半导体芯片可使用堆叠球(stack ball)而被堆叠在包括控制器310的第二半导体芯片之上。
存储介质400包括多个NVM装置410-1至410-8以及420-1至420-8。NVM装置410-1至410-8连接到第一通道CH1,NVM装置420-1至420-8连接到第二通道CH2。在此,通道可表示独立的数据路径。数据路径可包括发送数据或控制信号的传输线。术语“路(way)”可表示共享一个通道的一个或多个非易失性存储器装置的组。因此,多个路可连接到一个通道。例如,8个路WAY0至WAY7可连接到通道CH1和CH2中的每个通道。
NVM装置410-1至410-8以及420-1至420-8(由NAND共同表示)中的每个NVM装置可被实现为可包括存储器单元阵列的闪存装置。存储器单元阵列可包括多个存储器单元。存储器单元阵列可包括二维(2D)存储器单元阵列或三维(3D)存储器单元阵列。存储器单元中的每个存储器单元可被实现为2D或3D存储器单元。
3D存储器单元阵列被单片地形成在具有设置在硅基底和与这些存储器单元的操作相关联的电路之上的有源区域的存储器单元的阵列的一个或多个物理级中,3D存储器单元阵列在这样的基底上或在这样的基底内。术语“单片(monolithic)”表示阵列的每级的层被直接设置在阵列的每个基础级(underlying level)的层上。在示例实施例中,3D存储器单元阵列包括垂直取向使得至少一个存储器单元位于另一存储器单元上方的垂直NAND串。至少一个存储器单元可包括电荷俘获层。通过引用合并于此的下面的专利文档(第7,679,133号、第8,553,466号、第8,654,587号和第8,559,235号美国专利,以及公开号为2011/0233648的美国专利)描述用于三维存储器单元阵列的合适的配置,其中,三维存储器单元阵列被配置为具有在级之间共享的字线和/或位线的多个级。
图2是根据示例实施例的RAID-6条带集(stripe set)的结构的示图。参照图1和图2,RAID-6条带集可被存储在存储介质400中,具体地说,RAID-6条带集可被存储在包括在存储介质400中的非易失性存储器装置中。RAID-6条带集被概念地并且逻辑地示出在图2中。
单个RAID-6条带集包括N个数据条带D0至DN-1以及两个奇偶校验条带DN和DN+1。条带D0至DN+1可分别被包括或存储在不同的路(或半导体芯片)中。条带D0至DN+1中的每个条带包括多个ECC扇区(例如,L个扇区)。ECC扇区包括数据DATA和ECC奇偶校验ECC PARITY。ECC扇区可以是被控制器310执行ECC解码的单元。在此,N和L是至少为0的整数。
数据存储装置300可包括存储包括在条带集中的全部数据块(或ECC扇区)的存储介质400以及连接到存储介质400的控制器310。在读取操作期间,控制器310可将存储在存储介质400中的全部数据块之中的逻辑地位于列的第一数据块进行解码,并且可在第一数据块中发生读取故障时读取逻辑地布置在该列的其他数据块。
如上所述,包括数据块的条带集可根据RAID 6被逻辑地或物理地存储在存储介质400中。存储介质400包括多个NVM装置401-1至410-8以及420-1至420-8。条带集包括数据条带D0至DN-1、P校验条带DN和Q校验条带DN+1。如图7中所示,数据条带D0至DN-1、P校验条带DN和Q校验条带DN+1可分别存储在NVM装置401-1至410-8以及420-1至420-8中。NVM装置401-1至410-8包括在不同的路WAY0至WAY7中,NVM装置420-1至420-8可包括在不同的路WAY0至WAY7中。
可通过对N个数据条带D0至DN-1执行扩展里德-所罗门(extended Reed-Solomon)编码来生成奇偶校验条带DN和DN+1。可使用等式1来计算P校验条带P(=DN)中的第j ECC扇区P[j]和Q校验条带Q(=DN+1)中的第j ECC扇区Q[j]。
其中,Di(j)(0≤i≤(N-1),0≤j≤(L-1))是第i数据条带中的第j ECC扇区,g0、g1、g2...gN-2和gN-1是伽罗华域(Galois field)GF(2q)的q位符号,并且可具有值gk=αk或逆序的值gk=αN-1-k,是按位异或(bitwise XOR)运算符,是将GF(2q)乘法扩展到ECC扇区的单元的运算符,α是伽罗华域GF(2q)的本原元素(primitive element)。例如,如果p(x)是伽罗华域GF(2q)的本原多项式,则α是p(x)的根(root)。在此,假设0≤j≤(L-1),N是至少为3的自然数,L是至少为4的自然数。
当将等式1应用到包括在每列中的ECC扇区时,P校验条带P(=DN)的L个ECC扇区P[0]至P[L-1]被计算。当L个ECC扇区P[0]至P[L-1]彼此连接时,包括L个ECC扇区P[0]至P[L-1]的P校验条带P(=DN)可被计算。此外,当将等式1应用到包括在每列中的ECC扇区时,Q校验条带Q(=DN+1)的L个ECC扇区Q[0]至Q[L-1]被计算。当L个ECC扇区Q[0]至Q[L-1]彼此连接时,包括L个ECC扇区Q[0]至Q[L-1]的Q校验条带Q(=DN+1)可被计算。
当将gk=αN-1-k应用到等式1时,等式1重新写为等式2:
图3是图1中示出的存储介质控制器350的框图。参照图1和图3,存储介质控制器350被假设为闪存控制器。闪存控制器350包括ECC编码器/解码器355和RAID-6引擎357。
ECC编码器/解码器355可针对对存储介质400的写入操作,生成编码的ECC扇区、编码的P校验ECC扇区和编码的Q校验ECC扇区。ECC编码器/解码器355可针对从存储介质400的读取操作,将编码的ECC扇区、编码的P校验ECC扇区和编码的Q校验ECC扇区进行解码。RAID-6引擎357使用等式1生成P校验ECC扇区(PD)和Q校验ECC扇区(QD),并且将P校验ECC扇区和Q校验ECC扇区发送到ECC编码器/解码器355。
图4A是根据示例实施例的针对读取单个数据条带时的故障的第一恢复模式MODE0的概念性示图。参照图2和图4A,当即使在对ECC扇区D2[0]执行ECC解码之后仍在逻辑地位于第一列COL1中的ECC扇区D2[0]中存在不可校正的错误时,针对ECC扇区D2[0]发生读取故障。当针对ECC扇区D2[0]发生读取故障时,控制器310可使用第一恢复模式MODE0来恢复ECC扇区D2[0]。换言之,当针对包括在数据条带D2中的一个ECC扇区D2[0]发生读取故障时,控制器310可使用第一恢复模式MODE0来恢复ECC扇区D2[0]。
图4B是根据示例实施例的针对读取单个数据条带时的故障和读取Q校验条带时的故障的第一恢复模式MODE0的概念性示图。参照图2和图4B,当因为即使已经对ECC扇区D2[1]和Q[1]执行了ECC解码,在ECC扇区D2[1]和Q[1]中的每个中仍存在不可校正的错误而针对逻辑地布置在第二列COL2中的两个ECC扇区D2[1]和Q[1]发生读取故障时,控制器310可使用第一恢复模式MODE0来恢复ECC扇区D2[1]和Q[1]。
换言之,当针对两个ECC扇区D2[1]和Q[1]中的每个发生读取故障时,两个ECC扇区D2[1]和Q[1]之中的一个ECC扇区D2[1]被包括在数据条带D2中,两个ECC扇区D2[1]和Q[1]之中的另一ECC扇区Q[1]被包括在Q校验条带DN+1中,控制器310可使用第一恢复模式MODE0来顺序地恢复ECC扇区D2[1]和Q[1]。
图5是根据示例实施例的针对读取单个数据条带时的故障和读取P校验条带时的故障的第二恢复模式MODE1的概念性示图。参照图2和图5,当因为即使已经对ECC扇区D1[2]和P[2]执行了ECC解码,在ECC扇区D1[2]和P[2]中的每个中仍存在不可校正的错误而针对逻辑地布置在第三列COL3中的两个ECC扇区D1[2]和P[2]发生读取故障时,控制器310可使用第二恢复模式MODE1来恢复ECC扇区D1[2]和P[2]。
换言之,当针对两个ECC扇区D1[2]和P[2]中的每个发生读取故障时,两个ECC扇区D1[2]和P[2]之中的一个ECC扇区D1[2]被包括在数据条带D1中,两个ECC扇区D1[2]和P[2]之中的另一ECC扇区P[1]被包括在P校验条带DN中,控制器310可使用第二恢复模式MODE1来顺序地恢复ECC扇区D1[2]和P[2]。
图6是根据示例实施例的针对读取两个数据条带时的故障的第三恢复模式MODE2的概念性示图。参照图2和图6,当因为即使已经对ECC扇区D1[3]和D2[3]执行了ECC解码,在ECC扇区D1[3]和D2[3]中的每个中仍存在不可校正的错误而针对逻辑地布置在第四列COL4中的两个ECC扇区D1[3]和D2[3]发生读取故障时,控制器310可使用第三恢复模式MODE2来恢复ECC扇区D1[3]和D2[3]。
换言之,当针对两个ECC扇区D1[3]和D2[3]中的每个发生读取故障时,ECC扇区D1[3]和D2[3]可被分别包括在数据条带D1和D2中,控制器310可使用第三恢复模式MODE2来恢复ECC扇区D1[3]和D2[3]。
图7是根据示例实施例的条带集的存储的示图。参照图1和图7,将数据条带D0至DN+1分别存储在NVM装置401-1至410-8以及420-1至420-8中,NVM装置401-1至410-8以及420-1至420-8中的每个包括在路WAY0至WAY7之中的不同的路中。
图8是根据示例实施例的条带集的存储的示图。包括在第一数据条带D0中的ECC扇区D0[0]至D0[L-1]被分别存储在NVM装置401-1、401-2…410-8以及420-1至420-8中,NVM装置401-1、401-2…410-8以及420-1至420-8中的每个包括在路WAY0至WAY7之中的不同的路中。此外,包括在Q校验条带DN+1中的ECC扇区Q[0]至Q[L-1]被分别存储在NVM装置401-1、401-2…410-8以及420-1至420-8中,NVM装置401-1、401-2…410-8以及420-1至420-8中的每个包括在路WAY0至WAY7之中的不同的路中。
图9和图10是根据示例实施例的图1中示出的数据存储装置300的操作的流程图。将参照图1、图2、图4A、图9和图10详细地描述在单个数据条带中发生读取故障时执行第一恢复模式MODE0的控制器310的操作。
假设仅针对逻辑地在第三数据条带D2的第一列COL1中包括的ECC扇区Di[j](=D2[0]=Dk[j])发生读取故障。此时,“i”(0≤i≤(N-1))是2,“k”(0≤k≤(N-1))是2,“j”(0≤j≤(L-1))是0。控制器310可执行第一恢复模式MODE0。
当在操作S110中针对ECC扇区D2[0]产生读取故障时,在操作S112中,控制器310暂时确定执行默认恢复模式,即,第一恢复模式MODE0。在此,c=0指示第一恢复模式MODE0。
在操作S114中,控制器310从存储介质400(NAND)读取ECC扇区P[j](=P[0]),例如,包括在P校验条带DN中并且逻辑地位于第一列COL1中的P数据块或P ECC扇区。包括在闪存控制器350中的ECC编码器/解码器355可解码ECC扇区P[0],并且将解码的ECC扇区P[0]存储在DMA控制器345中。可选地,可根据缓冲器控制器340的控制将解码的ECC扇区P[0]存储在DRAM 360中。为了描述的方便起见,一个标号用于表示存储在存储介质400中的编码的ECC扇区和解码的ECC扇区二者。例如,标号D2[0]用于表示编码的ECC扇区和解码的ECC扇区二者。编码的ECC扇区D2[0]可包括数据和ECC奇偶校验,但是解码的ECC扇区D2[0]可仅包括数据。
在操作S116中,ECC编码器/解码器355确定解码的ECC扇区P[0]是否具有不可校正的错误。当解码的ECC扇区P[0]不具有不可校正的错误时,在操作S116中不发生读取故障(对应于“否”的情况)。
在操作S120中,控制器310通过将i设置为0,来初始化用于从存储介质400读取包括在第一数据条带D0中并且逻辑地位于第一列COL1中的ECC扇区D0[0]。因为在操作S122中D0[0]不为D2[0](对应于“否”的情况),所以在操作S124中,控制器310从存储介质400读取包括在第一数据条带D0中并且逻辑地位于第一列COL1中的ECC扇区D0[0]。ECC编码器/解码器355可解码ECC扇区D0[0],并且将解码的ECC扇区D0[0]存储在DMA控制器345中。可选地,可根据缓冲器控制器340的控制将解码的ECC扇区D0[0]存储在DRAM 360。
DMA控制器345可对解码的ECC扇区P[0]和解码的ECC扇区D0[0]执行按位XOR操作,并且可存储XOR操作结果作为第一目标数据。此时,DMA控制器245可包括存储解码的ECC扇区P[0]、解码的ECC扇区D0[0]和第一目标数据的寄存器。可选地,DMA控制器345可从DRAM360读取解码的ECC扇区P[0]和解码的ECC扇区D0[0],对解码的ECC扇区P[0]和D0[0]执行按位XOR操作,并且将XOR操作结果作为第一目标数据存储在DRAM 360中。
因为在操作S126中针对ECC扇区D0[0]未发生读取故障(对应于“否”的情况),所以控制器310可执行操作S132。因为在操作S132中,D0[0]不是在数据条带D0至DN-1之中的最后的数据条带DN-1中包括的ECC扇区DN-1[0],所以控制器310返回到操作S122。在操作S122中,控制器310初始化用于从存储介质400读取位于第二数据条带D1的第一列COL1中的ECC扇区D1[0]的操作。因为在操作S122中D1[0]不为D2[0](对应于“否”的情况),所以在操作S124中,控制器310从存储介质400读取包括在第二数据条带D1中并且逻辑地位于第一列COL1中的ECC扇区D1[0]。ECC编码器/解码器355可解码ECC扇区D1[0],并且将解码的ECC扇区D1[0]存储在DMA控制器345中。可选地,可根据缓冲器控制器340的控制将解码的ECC扇区D1[0]存储在DRAM 360中。
DMA控制器345可对第一目标数据和解码的ECC扇区D1[0]执行按位XOR操作,并且可将XOR操作结果作为第二目标数据存储在它的寄存器中。可选地,DMA控制器345可从DRAM360读取第一目标数据和解码的ECC扇区D1[0],对第一目标数据和解码的ECC扇区D1[0]执行按位XOR操作,并且将XOR操作结果作为第二目标数据存储在DRAM 360中。
因为在操作S126中针对ECC扇区D1[0]未发生读取故障(对应于“否”的情况),所以控制器310可执行操作S132。因为在操作S132中,D1[0]不为ECC扇区DN-1[0],所以控制器310返回到操作S122。在操作S122中,控制器310初始化用于从存储介质400读取位于第一列COL1中的ECC扇区D2[0]的操作。因为在操作S122中D2[0]为D2[0](对应于“是”的情况),所以在操作S132中,控制器310确定D2[0]是否为DN-1[0]。换言之,在操作S132中,控制器310确定当前读取的ECC扇区D2[0]是否为数据条带D0至DN-1之中的最后的数据条带DN-1中的第一ECC扇区。
控制器310对ECC扇区D3[0]至DN-1[0]执行操作S122至S132。在对数据条带D0至DN-1之中的最后的数据条带DN-1中的第一ECC扇区DN-1[0]执行操作S126之后,在操作S134中,控制器310确定当前的恢复模式是否为第一恢复模式MODE0。因为当前的恢复模式为第一恢复模式MODE0,所以在操作S142中,控制器310根据RAID 6执行第一恢复模式MODE0。
控制器310可使用等式3来恢复ECC扇区D2[0]:
如上所述,当在第三数据条带D2中的第一ECC扇区D2[0]发生读取故障时,控制器不读取全部的条带集,而是仅读取在包括ECC扇区D2[0]的第一列COL1中包括的ECC扇区P[0]、D0[0]、D1[0]和D3[0]至DN-1[0],来恢复ECC扇区D2[0]。因此,与将全部的条带集从存储介质发送到控制器的传统的数据存储装置相比,从存储介质400发送到控制器310的数据量被减少。
将参照图1、图2、图4B、图9和图10详细地描述当在一个数据条带D2和Q校验条带DN+1中发生读取故障时执行第一恢复模式MODE0的控制器310的操作。假设在第三数据条带D2中的第二ECC扇区D2[1]发生读取故障。
在图10的操作S134中,控制器310确定当前的恢复模式是否为第一恢复模式MODE0。当在操作134中当前的恢复模式为第一恢复模式MODE0(即,在“是”的情况下),控制器310在不读取Q校验条带DN+1中的第二ECC扇区Q[1]的情况下,使用ECC扇区P[1]、D0[1]、D1[1]和D3[1]至DN-1[1]来恢复ECC扇区D2[1]。
将参照图1、图2、图5、图9和图10详细地描述在一个数据条带和P校验条带DN中发生读取故障时执行第二恢复模式MODE1的控制器310的操作。假设在第三列COL3中包括的ECC扇区Di[j](=D1[2]=Dk[j])中以及在P校验条带DN的第三列COL3中包括的ECC扇区P[2]中发生读取故障。此时,“i”为1,“k”为1,“j”为2。控制器310可执行第二恢复模式MODE1。
当在操作S110中,在ECC扇区D1[2]发生读取故障时,在操作S112,中控制器310暂时地确定执行第一恢复模式MODE0。这里,c=0指示第一恢复模式MODE0。
在操作S114中,控制器310从存储介质400读取包括在P校验条带DN中并且位于第三列COL3中的ECC扇区P[j](=P[2])。ECC编码器/解码器355可解码ECC扇区P[2],并且将解码的ECC扇区P[2]存储在DMA控制器345中。可选地,可根据缓冲器控制器340的控制将解码的ECC扇区P[2]存储在DRAM 360中。
在操作S116中,ECC编码器/解码器355确定解码的ECC扇区P[2]是否具有不可校正的错误。因为解码的ECC扇区P[2]具有不可校正的错误,所以在操作S116中发生读取故障(对应于“是”的情况)。在操作S118中,控制器310确定执行第二恢复模式MODE1。因此,在操作S118中“c”改变为1。
在操作S120中,控制器310通过将i设置为0,来初始化用于从存储介质400读取位于第三列COL3第一行中的ECC扇区D0[2]的操作。因为在操作S122中D0[2]不为D1[2](对应于“否”的情况),所以在操作S124中控制器310从存储介质400读取ECC扇区D0[2]。ECC编码器/解码器355可解码ECC扇区D0[2],并且将解码的ECC扇区D0[2]存储在DMA控制器345或DRAM360中。
因为在操作S126中针对ECC扇区D0[2]未发生读取故障(对应于“否”的情况),所以控制器310可执行操作S132。因为在操作S132中,D0[2]不是在数据条带D0至DN-1之中的最后的数据条带DN-1中包括的ECC扇区DN-1[2],所以控制器310返回到操作S122。在操作S122中,控制器310初始化从存储介质400读取位于第三列COL3中的ECC扇区D1[2]的操作。因为在操作S122中,D1[2]为D1[2](对应于“是”的情况),所以控制器310执行操作S132。
因为D1[2]不为DN-1[2],所以在操作S124中,控制器310从存储介质400读取ECC扇区D2[2]。ECC编码器/解码器355可解码ECC扇区D2[2],并且将解码的ECC扇区D2[2]存储在DMA控制器345或DRAM 360中。
因为在操作S126中针对ECC扇区D2[2]未发生读取故障,所以在操作S122中,控制器310初始化用于从存储介质400读取ECC扇区D3[2]的操作。
控制器310对ECC扇区D3[2]至DN-1[2]执行操作S122。在对数据条带D0至DN-1之中的最后的数据条带DN-1中的第三ECC扇区DN-1[2]执行操作S126之后,在操作S134中,控制器310可确定当前的恢复模式是否为第一恢复模式MODE0。因为当前的恢复模式为第二恢复模式MODE1(对应于操作S134中的“否”的情况),所以在操作S136中,控制器310读取Q校验条带DN+1中的第三ECC扇区Q[2]。
在操作S140中,控制器310确定针对第三ECC扇区Q[2]是否发生读取故障。因为针对第三ECC扇区Q[2]未发生读取故障(对应于操作S140中的“否”的情况),所以在操作S144中,控制器310确定当前的恢复模式是否为第二恢复模式MODE1。因为在操作S118中c=1,所以当前的恢复模式为第二恢复模式MODE1(对应于操作S144中的“是”的情况)。因此,在操作S146中,控制器310执行第二恢复模式MODE1。当针对第三ECC扇区Q[2]发生读取故障Q[2](对应于操作S140中的“是”的情况)时,在操作S138中,控制器310确定存在RAID-6恢复故障。
因为Q校验条带DN+1中的第三ECC扇区Q[2]在第二恢复模式MODE1下不具有不可校正的错误,所以控制器310可使用等式4来恢复ECC扇区D1[2]。
如上所述,当在第二数据条带D1中的第三ECC扇区D1[2]并且在P校验条带DN中的第三ECC扇区P[2]发生读取故障时,控制器310可使用等式4来计算ECC扇区Q′[2],并且可使用ECC扇区Q′[2]和解码的ECC扇区Q[2]来恢复ECC扇区D1[2]。控制器310可通过接口110将恢复的ECC扇区D1[2]存储在DRAM 360中,并且将其发送到主机200。可选地,控制器310可使用恢复的ECC扇区D1[2]或等式1来生成ECC扇区P[2]和Q[2],并且将恢复的ECC扇区D1[2]以及ECC扇区P[2]和Q[2]写入到存储介质400。
当在ECC扇区D1[2]和P[2]二者中发生读取故障时,控制器310可不读取全部的条带集,而仅读取在包括ECC扇区D1[2]的第三列COL2中包括的ECC扇区D0[2]、D2[2]至DN-1[2]以及Q[2],来恢复ECC扇区D1[2]。因此,与将全部的条带集从存储介质发送到控制器的传统的数据存储装置相比,从存储介质400发送到控制器310的数据量被减少。
将参照图1、图2、图6、图9和图10详细地描述在两个数据条带中发生读取故障时执行第三恢复模式MODE2的控制器310的操作。假设在第二数据条带D1的第四列COL4中包括的ECC扇区Di[j](=D1[3]=Dk[j])中以及在第三数据条带D2的第四列COL4中包括的ECC扇区Di[j](=D2[3]=Dm[j])中发生读取故障。此时,“i”为1,“k”为1,“m”为2,“j”为3。控制器310可执行第三恢复模式MODE2。
当在操作S110中在ECC扇区D1[3]中发生读取故障时,在操作S112中,控制器310暂时确定执行第一恢复模式MODE0。在此,c=0指示第一恢复模式MODE0。
在操作S114中,控制器310从存储介质400读取在P校验条带DN中包括的并且位于第四列COL4的ECC扇区P[j](=P[3])。ECC编码器/解码器355可解码ECC扇区P[3]。可将解码的ECC扇区P[3]存储在DMA控制器345或DRAM 360中。
在操作S116中,ECC编码器/解码器355确定解码的ECC扇区P[3]是否具有不可校正的错误。因为解码的ECC扇区P[3]不具有不可校正的错误,所以在操作S116中未发生读取故障(对应于“否”的情况)。
在操作S120中,控制器310通过将i设置为0来初始化用于从存储介质400读取位于第四列COL4第一行的ECC扇区D0[3]的操作。因为在操作S122中D0[3]不为D1[3](对应于“否”的情况),所以在操作S124中,控制器310从存储介质400读取ECC扇区D0[3]。ECC编码器/解码器355可解码ECC扇区D0[3],并且将解码的ECC扇区D0[3]存储在DMA控制器345或DRAM 360中。
因为在操作S126中针对ECC扇区D0[3]未发生读取故障(对应于“否”的情况),所以控制器310可执行操作S132。因为在操作S132中,D0[3]不是在数据条带D0至DN-1之中的最后的数据条带DN-1中包括的ECC扇区DN-1[3],所以控制器310返回到操作S122。在操作S122中控制器310可初始化用于从存储介质400读取位于第四列COL4第二行的ECC扇区D1[3]的操作。因为在操作S122中D1[3]为D1[3](对应于“是”的情况),所以控制器310执行操作S132。因为在操作S132中,D1[3]不为ECC扇区DN-1[3],所以控制器310返回到操作S122。
在操作S122中,控制器310初始化用于从存储介质400读取位于第四列COL4第三行的ECC扇区D2[3]的操作。因为在操作S122中D2[3]不为D1[3](对应于“否”的情况),所以控制器310执行操作S124。在操作S124,控制器310从存储介质400读取ECC扇区D2[3]。然而,因为ECC扇区D2[3]具有不可校正的错误,所以针对ECC扇区D2[3]发生读取故障(对应于操作S126中的“是”的情况)。控制器310执行操作S128。作为执行操作S128的结果,c=2。因为“c”不大于2(对应于操作S130中的“否”的情况),所以在操作S132中,控制器310确定ECC扇区D2[3]是否为在数据条带D0至DN-1之中的最后的数据条带DN-1中包括的ECC扇区DN-1[3]。当“c”大于2(对应于操作S130中的“是”的情况)时,在操作S138中,控制器310确定存在RAID-6恢复故障。
因为ECC扇区D2[3]不为ECC扇区DN-1[3](对应于操作S132中的“否”的情况),所以在操作S122和S124中控制器310从存储介质400读取ECC扇区D2[4]。ECC编码器/解码器355可解码ECC扇区D2[4],并且将解码的ECC扇区D2[4]存储在DMA控制器345或DRAM 360中。
控制器310对ECC扇区D2[3]至DN-1[3]执行操作S122至S132。在对数据条带D0至DN-1之中的最后的数据条带DN-1中的第四ECC扇区DN-1[3]执行操作S126之后,在操作S134中,控制器310确定当前的恢复模式是否为第一恢复模式MODE0。因为当前的恢复模式为第三恢复模式MODE2(对应于操作S134中的“否”的情况),所以在操作S136中,控制器310读取Q校验条带DN+1中的第四ECC扇区Q[3]。
在操作S140中,控制器310确定针对第四ECC扇区Q[3]是否发生读取故障。因为针对第四ECC扇区Q[3]未发生读取故障(对应于操作S140中的“否”的情况),所以在操作S144中,控制器310确定当前的恢复模式是否为第二恢复模式MODE1。因为在操作S128中已经将“c”设置为2,所以当前的恢复模式为第三恢复模式MODE2(对应于操作S144中的“否”的情况)。因此,在操作S148中控制器310执行第三恢复模式MODE2。当针对第四ECC扇区Q[3]发生读取故障(对应于操作S140中的“是”的情况)时,在操作S138中,控制器310确定存在RAID-6恢复故障。
因为在第三读取模式MODE2下,读取故障既没有发生在P校验条带DN中的第四ECC扇区P[3]中也没有发生在Q校验条带DN+1中的第四ECC扇区Q[3]中,所以控制器310可使用等式5来恢复ECC扇区D1[3]和D2[3]:
如上所述,当在第二数据条带D1中的第四ECC扇区D1[3]以及在第三数据条带D2中的第四ECC扇区D2[3]发生读取故障时,控制器310可使用等式5来计算ECC扇区P′[3]和ECC扇区Q′[3],可使用计算的ECC扇区P′[3]和Q′[3]以及解码的ECC扇区P[3]和Q[3]来恢复ECC扇区D1[3],并且可使用计算的ECC扇区P′[3]和Q′[3]以及解码的ECC扇区P[3]和Q[3]来恢复ECC扇区D2[3]。控制器310可将恢复的ECC扇区D1[3]和D2[3]存储在DRAM 360或存储介质400中,并且通过接口110将它们发送到主机200。
当在ECC扇区D1[3]和D2[3]二者中发生读取故障时,控制器310不读取全部的条带集,而仅读取在包括ECC扇区D1[3]和D2[3]的第四列COL4中包括的ECC扇区D0[3]、D4[3]至DN-1[3]、P[3]和Q[3],来恢复ECC扇区D1[3]和D2[3]。因此,与将全部的条带集从存储介质发送到控制器的传统的数据存储装置相比,从存储介质400发送到控制器310的数据量被减少。
图11是根据示例实施例的图1中示出的数据存储装置300的操作的流程图。参照图1至图11,在操作S210中,控制器310恢复在多个数据条带之中的一个数据条带或两个数据条带中包括的一个ECC扇区或两个ECC扇区。假设以参照图1至图10描述的恢复模式MODE0至MODE2中的每个恢复模式来恢复一个ECC扇区或两个ECC扇区。因此,在全部的数据条带被恢复之后,在操作S220中,使用等式1来恢复在P校验条带和/或Q校验条带中包括的一个ECC扇区或多个ECC扇区。
如上所述,根据示例实施例,具有RAID-6架构的数据存储装置在读取操作期间,将存储在存储介质中的数据块之中的逻辑地或物理地位于第一列中的第一数据块进行解码,当在第一数据块中发生读取故障时,数据存储装置读取所述数据块之中的逻辑地或物理地布置在第一列中的除了第一数据块之外的第二数据块,而非读取全部的数据块,并且使用第二数据块来恢复第一数据块。因此,当在第一数据块中发生读取故障时,从存储介质读取的数据量被显著减少。作为结果,数据存储装置在短时间有效地恢复数据。此外,数据存储装置根据在第一列中包括的第二块之中已经发生读取故障的块的数量,从多个恢复模式中选择最有效的模式,并且使用选择的恢复模式来恢复已经发生读取故障的一个数据块或两个数据块。
按照本发明构思的领域中的传统,实施例根据功能块、单元和/或模块而被描述和示出在附图中。本领域技术人员将理解,通过可使用基于半导体的制造技术或其他制造技术形成的电子(或光学)电路(诸如,逻辑电路、分立元件、微处理器、硬连接电路、存储器元件、有线连接等)来物理实现这些块、单元和/或模块。在块、单元和/或模块通过微处理器或类似物实现的情况下,可使用软件(例如,微码)对它们进行编程以执行在此讨论的各种功能,并可通过固件和/或软件来选择性地驱动它们。可选择地,可通过专用硬件,或作为执行一些功能的专用硬件和执行其他功能的处理器(例如,一个或多个编程微处理器和相关电路)的组合来实现每个块、单元和/或模块。此外,在不脱离本发明构思的范围的情况下,可将示例实施例的每个块、单元和/或模块物理地分割成两个或更多个相互作用并且分立的块、单元和/或模块。此外,在不脱离本发明构思的范围的情况下,可将示例实施例的每个块、单元和/或模块物理地组合成更复杂的块、单元和/或模块。
虽然已经参照本发明构思的示例实施例对本发明构思进行了示出和描述,但是本领域的普通技术人员将理解,在不脱离由权利要求限定的本发明构思的精神和范围的情况下可在形式和细节上对其做出各种改变。
Claims (17)
1.一种数据存储装置,包括:
存储介质,被配置为存储在条带集中包括的数据块;
控制器,连接到存储介质,并且被配置为:
在数据块之中的设置在一列中的第一数据块的读取操作期间,将第一数据块进行解码;
基于第一数据块的读取故障,读取数据块之中的设置在所述列中的第一组数据块,
其中,条带集包括数据条带、P校验条带和Q校验条带,
其中,第一组数据块包括:
在数据条带之中的第一数据条带中包括的第一数据块;
在数据条带之中的除了第一数据条带之外的每个第二数据条带中包括的第二数据块;
在P校验条带中包括的第一P数据块;
在Q校验条带中包括的第一Q数据块,
其中,控制器还被配置为:
读取并且解码第一P数据块;
基于解码的结果确定是否读取第一Q数据块。
2.如权利要求1所述的数据存储装置,其中,条带集根据廉价/独立磁盘冗余阵列(RAID)-6被存储在存储介质中。
3.如权利要求1所述的数据存储装置,其中,存储介质包括多个非易失性存储器装置,
数据条带、P校验条带和Q校验条带被分别存储在所述多个非易失性存储器装置中。
4.如权利要求3所述的数据存储装置,其中,所述多个非易失性存储器装置被分别包括在不同的路中。
5.如权利要求3所述的数据存储装置,其中,每个非易失性存储器装置是闪存装置,
闪存装置包括三维存储器单元阵列,
三维存储器单元阵列包括存储器单元,
每个存储器单元包括电荷俘获层。
6.如权利要求3所述的数据存储装置,其中,控制器还被配置为:
读取并且解码在每个第二数据条带中包括的第二数据块;
响应于未发生第一P数据块的读取故障:
使用解码的第一P数据块和解码的在每个第二数据条带中包括的第二数据块,来恢复第一数据块;
将恢复的第一数据块发送到主机。
7.如权利要求3所述的数据存储装置,其中,控制器还被配置为:
读取并且解码在每个第二数据条带中包括的第二数据块以及第一Q数据块;
基于第一P数据块的读取故障:
使用解码的在每个第二数据条带中包括的第二数据块以及与在每个第二数据条带中包括的第二数据块对应的伽罗华域的符号,来生成与第一Q数据块对应的第二Q数据块;
使用与第一数据块对应的伽罗华域的符号、解码的第一Q数据块和第二Q数据块,来恢复第一数据块;
将恢复的第一数据块发送到主机。
8.如权利要求3所述的数据存储装置,其中,控制器还被配置为:
读取并且解码在每个第二数据条带中包括的第二数据块以及第一Q数据块;
响应于未发生第一P数据块的读取故障,未发生第一Q数据块的读取故障以及发生第二数据块之中的第三数据块的读取故障:
使用解码的在每个第二数据条带中包括的第二数据块之中的除了第三数据块之外的第四数据块,生成与第一P数据块对应的第二P数据块;
使用解码的第四数据块以及与解码的第四数据块对应的伽罗华域的符号,来生成与第一Q数据块对应的第二Q数据块;
使用与第一数据块对应的伽罗华域的第一符号、与第三数据块对应的伽罗华域的第二符号、解码的第一P数据块、第二P数据块、解码的第一Q数据块和第二Q数据块,来恢复第一数据块;
将恢复的第一数据块发送到主机;
使用恢复的第一数据块、解码的第一P数据块和第二P数据块来恢复第三数据块;
将恢复的第三数据块发送到主机。
9.一种数据存储装置,包括:
存储介质,被配置为:根据廉价/独立磁盘冗余阵列(RAID)6,存储在条带集中包括的数据块;
控制器,连接到存储介质,并且被配置为:
在数据块之中的设置在一列中的第一数据块的读取操作期间,将第一数据块进行解码;
基于第一数据块的读取故障,读取数据块之中的设置在所述列中的除了第一数据块之外的第二数据块,
其中,条带集包括数据条带、P校验条带和Q校验条带,
其中,第二数据块包括:在P校验条带中包括的P数据块以及在Q校验条带中包括的Q数据块,
控制器还被配置为读取P数据块,
其中,控制器还被配置为:
解码P数据块;
基于解码的结果确定是否读取Q数据块。
10.如权利要求9所述的数据存储装置,其中,控制器还被配置为:
使用读取的第二数据块来恢复第一数据块;
将恢复的第一数据块发送到主机。
11.如权利要求9所述的数据存储装置,其中,控制器还被配置为:
使用读取的第二数据块来恢复第一数据块;
将恢复的第一数据块存储在存储介质中。
12.如权利要求9所述的数据存储装置,其中,存储介质包括多个非易失性存储器装置,
数据条带、P校验条带和Q校验条带被分别存储在所述多个非易失性存储器装置中。
13.一种数据处理系统,包括:
数据存储装置;
主机,连接到数据存储装置,
其中,数据存储装置包括:
存储介质,被配置为:根据廉价/独立磁盘冗余阵列(RAID)6,存储在条带集中包括的数据块;
控制器,连接到存储介质,并且被配置为:
在数据块之中的设置在一列中的第一数据块的读取操作期间,将第一数据块进行解码;
基于第一数据块的读取故障,读取数据块之中的设置在所述列中的除了第一数据块之外的第二数据块;
使用读取的第二数据块来恢复第一数据块;
将恢复的第一数据块发送到主机,
其中,条带集包括数据条带、P校验条带和Q校验条带,
其中,第二数据块包括:在P校验条带中包括的P数据块以及在Q校验条带中包括的Q数据块,
控制器还被配置为读取P数据块,
其中,控制器还被配置为:
解码P数据块;
基于解码的结果确定是否读取Q数据块。
14.如权利要求13所述的数据处理系统,其中,存储介质包括多个非易失性存储器装置,
数据条带、P校验条带和Q校验条带被分别存储在所述多个非易失性存储器装置中。
15.一种数据存储装置,包括:
存储介质,被配置为存储数据块;
控制器,连接到存储介质,并且被配置为:
读取并且解码数据块之中的设置在一列中的第一数据块;
基于第一数据块的读取故障,读取并且解码数据块之中的设置在所述列中的除了第一数据块之外的第二数据块;
基于解码的第二数据块恢复第一数据块,
其中,第二数据块包括第一P数据块和第一Q数据块,
其中,控制器还被配置为:
读取第一P数据块;
解码第一P数据块;
基于解码的结果确定是否读取第一Q数据块。
16.如权利要求15所述的数据存储装置,其中,
控制器还被配置为:基于第一P数据块的读取故障:
基于解码的第二数据块之中的除了第一P数据块和第一Q数据块之外的第三数据块以及与第三数据块对应的伽罗华域的符号,来生成与第一Q数据块对应的第二Q数据块;
基于与第一数据块对应的伽罗华域的符号、解码的第一Q数据块和第二Q数据块,来恢复第一数据块。
17.如权利要求15所述的数据存储装置,其中,
控制器还被配置为:基于解码的第二数据块之中的第三数据块的读取故障:
基于解码的第二数据块之中的除了第三数据块、第一P数据块和第一Q数据块之外的第四数据块,来生成与第一P数据块对应的第二P数据块;
基于解码的第四数据块和与解码的第四数据块对应的伽罗华域的符号,来生成与第一Q数据块对应的第二Q数据块;
基于与第一数据块对应的伽罗华域的第一符号、与第三数据块对应的伽罗华域的第二符号、解码的第一P数据块、第二P数据块、解码的第一Q数据块和第二Q数据块,来恢复第一数据块;
基于恢复的第一数据块、解码的第一P数据块和第二P数据块来恢复第三数据块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2016-0013549 | 2016-02-03 | ||
KR1020160013549A KR102572357B1 (ko) | 2016-02-03 | 2016-02-03 | Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107037982A CN107037982A (zh) | 2017-08-11 |
CN107037982B true CN107037982B (zh) | 2021-06-08 |
Family
ID=59386765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611195390.8A Active CN107037982B (zh) | 2016-02-03 | 2016-12-22 | Raid-6数据存储装置以及包括其的数据处理系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10275311B2 (zh) |
KR (1) | KR102572357B1 (zh) |
CN (1) | CN107037982B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10509700B2 (en) * | 2015-11-10 | 2019-12-17 | Hitachi, Ltd. | Storage system and storage management method |
KR102549605B1 (ko) * | 2016-03-04 | 2023-06-30 | 삼성전자주식회사 | Raid 스토리지 장치의 리커버리 방법 |
KR20200015999A (ko) * | 2018-08-06 | 2020-02-14 | 에스케이하이닉스 주식회사 | 예측 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템 |
US11656775B2 (en) | 2018-08-07 | 2023-05-23 | Marvell Asia Pte, Ltd. | Virtualizing isolation areas of solid-state storage media |
US11372580B2 (en) | 2018-08-07 | 2022-06-28 | Marvell Asia Pte, Ltd. | Enabling virtual functions on storage media |
US11010314B2 (en) | 2018-10-30 | 2021-05-18 | Marvell Asia Pte. Ltd. | Artificial intelligence-enabled management of storage media access |
US11481118B2 (en) | 2019-01-11 | 2022-10-25 | Marvell Asia Pte, Ltd. | Storage media programming with adaptive write buffer release |
US11442809B1 (en) * | 2019-07-17 | 2022-09-13 | Marvell Asia Pte, Ltd. | Double-parity raid enabling recovery of two failed data units |
KR20220120967A (ko) * | 2021-02-24 | 2022-08-31 | 삼성전자주식회사 | 스토리지 컨트롤러, 그 동작방법 |
US20220291861A1 (en) * | 2021-03-12 | 2022-09-15 | Kioxia Corporation | Data exchange between host and storage device using compute functions |
CN113296999B (zh) * | 2021-05-20 | 2022-11-11 | 山东云海国创云计算装备产业创新中心有限公司 | 一种raid6编码方法及编码电路 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011040928A1 (en) * | 2009-10-02 | 2011-04-07 | Intel Corporation | Method and appratus for managing a random array of independent disks (raid) |
CN102023820A (zh) * | 2010-12-01 | 2011-04-20 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错垂直型分组并行访问磁盘阵列的构建方法 |
CN102023819A (zh) * | 2010-12-01 | 2011-04-20 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错水平型分组并行访问磁盘阵列的构建方法 |
CN102033716A (zh) * | 2010-12-01 | 2011-04-27 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错的节能型磁盘阵列的构建方法 |
US9026729B1 (en) * | 2011-11-15 | 2015-05-05 | Emc Corporation | Data recovery after triple disk failure |
CN105122215A (zh) * | 2013-06-03 | 2015-12-02 | 桑迪士克科技股份有限公司 | 三维存储器的适应性操作 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10240453A (ja) | 1997-02-28 | 1998-09-11 | Nec Corp | ディスクアレイ装置 |
US6891690B2 (en) | 2002-11-20 | 2005-05-10 | International Business Machines Corporation | On-drive integrated sector format raid error correction code system and method |
US7698625B2 (en) | 2003-08-26 | 2010-04-13 | Adaptec, Inc. | System for improving parity generation and rebuild performance |
JP4143040B2 (ja) * | 2004-03-31 | 2008-09-03 | 東芝ソリューション株式会社 | ディスクアレイ制御装置、同装置に適用されるデータ欠損検出時の処理方法及びプログラム |
US7406621B2 (en) | 2004-04-02 | 2008-07-29 | Seagate Technology Llc | Dual redundant data storage format and method |
JP4935367B2 (ja) | 2007-01-19 | 2012-05-23 | 富士通株式会社 | Raid装置及びガロア体の積演算処理方法 |
US8365041B2 (en) | 2010-03-17 | 2013-01-29 | Sandisk Enterprise Ip Llc | MLC self-raid flash data protection scheme |
WO2012012369A2 (en) * | 2010-07-19 | 2012-01-26 | Arizona Board Of Regents For And On Behalf Of Arizona State University | Fast parallel test of sram arrays |
KR101201582B1 (ko) * | 2010-09-06 | 2012-11-14 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 이의 동작 방법 |
KR101280792B1 (ko) * | 2010-12-28 | 2013-07-17 | 한양대학교 산학협력단 | 소모 전력에 기반한 데이터 기록 방법 및 장치 |
KR101801147B1 (ko) | 2011-08-30 | 2017-11-27 | 삼성전자주식회사 | 데이터 신뢰성을 개선하는 데이터 관리 방법 및 그에 따른 데이터 저장 장치 |
US8656257B1 (en) | 2012-01-11 | 2014-02-18 | Pmc-Sierra Us, Inc. | Nonvolatile memory controller with concatenated error correction codes |
KR101445025B1 (ko) | 2012-02-09 | 2014-09-26 | 서울시립대학교 산학협력단 | 신뢰성 있는 ssd를 위한 효율적인 raid 기법 |
US8327185B1 (en) | 2012-03-23 | 2012-12-04 | DSSD, Inc. | Method and system for multi-dimensional raid |
US9047187B2 (en) * | 2012-06-28 | 2015-06-02 | Intel Corporation | Defect management in memory systems |
KR101925383B1 (ko) | 2012-07-23 | 2018-12-05 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 데이터 관리 방법 |
US8464095B1 (en) * | 2012-11-15 | 2013-06-11 | DSSD, Inc. | Method and system for multi-dimensional raid reconstruction and defect avoidance |
KR102065665B1 (ko) * | 2013-10-17 | 2020-01-13 | 삼성전자 주식회사 | 더미 워드라인을 포함하는 불휘발성 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작방법 |
KR20150134934A (ko) * | 2014-05-23 | 2015-12-02 | 에스케이하이닉스 주식회사 | 3차원 불휘발성 메모리 장치와, 이를 포함하는 반도체 시스템과, 그 제조방법 |
CN105302677A (zh) * | 2014-07-29 | 2016-02-03 | 株式会社东芝 | 信息处理装置和信息处理方法 |
KR20160035836A (ko) * | 2014-09-24 | 2016-04-01 | 에스케이하이닉스 주식회사 | 전자 장치 |
-
2016
- 2016-02-03 KR KR1020160013549A patent/KR102572357B1/ko active IP Right Grant
- 2016-12-15 US US15/379,868 patent/US10275311B2/en active Active
- 2016-12-22 CN CN201611195390.8A patent/CN107037982B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011040928A1 (en) * | 2009-10-02 | 2011-04-07 | Intel Corporation | Method and appratus for managing a random array of independent disks (raid) |
CN102023820A (zh) * | 2010-12-01 | 2011-04-20 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错垂直型分组并行访问磁盘阵列的构建方法 |
CN102023819A (zh) * | 2010-12-01 | 2011-04-20 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错水平型分组并行访问磁盘阵列的构建方法 |
CN102033716A (zh) * | 2010-12-01 | 2011-04-27 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错的节能型磁盘阵列的构建方法 |
US9026729B1 (en) * | 2011-11-15 | 2015-05-05 | Emc Corporation | Data recovery after triple disk failure |
CN105122215A (zh) * | 2013-06-03 | 2015-12-02 | 桑迪士克科技股份有限公司 | 三维存储器的适应性操作 |
Also Published As
Publication number | Publication date |
---|---|
US10275311B2 (en) | 2019-04-30 |
CN107037982A (zh) | 2017-08-11 |
KR102572357B1 (ko) | 2023-08-29 |
KR20170092333A (ko) | 2017-08-11 |
US20170220410A1 (en) | 2017-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107037982B (zh) | Raid-6数据存储装置以及包括其的数据处理系统 | |
US10536172B2 (en) | ECC and raid-type decoding | |
CN109426580B (zh) | 数据存储设备及其操作方法 | |
US9984771B2 (en) | Multi-level raid-type encoding with random correction capability | |
US10496484B2 (en) | Methods and apparatus for error detection for data storage devices | |
US10116333B2 (en) | Decoder with parallel decoding paths | |
US10019174B2 (en) | Read operation delay | |
US10372570B2 (en) | Storage device, test system for testing the same, and method thereof | |
US10002042B2 (en) | Systems and methods of detecting errors during read operations and skipping word line portions | |
US9244767B1 (en) | Data storage device with in-memory parity circuitry | |
US8250403B2 (en) | Solid state disk device and related data storing and reading methods | |
US10409683B2 (en) | Data storage system configured to perform data rebuild operation via reduced read requests | |
CN110347530B (zh) | 数据存储装置及其操作方法 | |
US9477549B2 (en) | Methods, systems, and computer readable media for address and data integrity checking in flash memory operations | |
US9940194B2 (en) | ECC decoding using raid-type parity | |
US20150143027A1 (en) | Solid state drive with raid functions | |
US20160334999A1 (en) | Reduction of maximum latency using dynamic self-tuning for redundant array of independent disks | |
US20170032843A1 (en) | Systems and methods of generating shaped random bits | |
US10572189B2 (en) | Method and decoder to adjust an error locator polynomial based on an error parity | |
KR20190038964A (ko) | 에러 정정 코드 유닛, 그것의 인코딩 및 디코딩 방법 | |
JP6491482B2 (ja) | 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置 | |
US20170345456A1 (en) | Programmable error-correcting code for a host device | |
CN112905107A (zh) | 数据存储装置及其操作方法 | |
US8392654B2 (en) | Raid level migration for spanned arrays | |
JP5908106B2 (ja) | 妥当性マスクを記憶する装置および方法ならびに操作装置 |
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 |