CN107155358A - 用于非易失性存储器的混合粒度较高级别冗余 - Google Patents
用于非易失性存储器的混合粒度较高级别冗余 Download PDFInfo
- Publication number
- CN107155358A CN107155358A CN201380051776.XA CN201380051776A CN107155358A CN 107155358 A CN107155358 A CN 107155358A CN 201380051776 A CN201380051776 A CN 201380051776A CN 107155358 A CN107155358 A CN 107155358A
- Authority
- CN
- China
- Prior art keywords
- flash memory
- higher level
- page
- redundancy
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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
- 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/1048—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 using arrangements adapted for a specific error detection or correction feature
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- 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)
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
用于NVM的混合粒度较高级别冗余提供具有较好的错误恢复和/或减少的冗余信息开销的改进的较高级别冗余操作。例如,较不可靠的(诸如相对地更易于出错的)NVM的页面在相对多的冗余信息的成本下以具有相对多的错误保护的较高级别冗余模式进行操作。并行地,更可靠的NVM的块在相对少的冗余信息的成本下以具有相对少的错误保护的较高级别冗余模式进行操作。相比于以具有相对少的错误保护的较高级别冗余模式操作NVM的整体的技术,本文中所描述的技术提供更好的错误恢复。相比于以具有相对多的错误保护的较高级别冗余模式操作NVM的整体的技术,本文中所描述的技术提供减少的冗余信息开销。
Description
相关申请的交叉引用
在所附的申请数据表、请求或传输(视情况而定,如果有的话)中作出本申请的优先权权益要求。到本申请的类型所允许的程度,本申请出于所有目的通过引用并入下列申请,在作出本发明时所有下列申请与本申请一起被共同拥有:
2012年8月2日提交、第一发明人是Zhengang CHEN并且题为“用于非易失性存储器的混合粒度较高级别冗余(MIXED GRANULARITY HIGHER-LEVEL REDUNDANCY FOR NON-VOLATILEMEMORY)”的美国非临时申请(案号L12-0674US1和S/N13/565,752)。
2011年11月30日提交、第一发明人是Jeremy Isaac Nathaniel WERNER并且题为“利用独立硅元素的动态较高级别冗余模式管理(DYNAMIC HIGHER-LEVEL REDUNDANCY MODEMANAGEMENT WITH INDEPENDENT SILICON ELEMENTS)”的PCT申请(案号SF-10-l0PCT和S/NPCT/US11/062726)。
2012年1月18日提交、第一发明人是Jeremy Isaac Nathaniel WERNER并且题为“较高级别冗余信息计算(HIGHER-LEVEL REDUNDANCY INFORMATION COMPUTATION)”的PCT申请(案号SF-10-14PCT和S/N PCT/US 12/21682)。
2010年12月1日提交、第一发明人是Jeremy Isaac Nathaniel WERNER并且题为“利用独立硅元素的动态较高级别冗余模式管理(DYNAMIC HIGHER-LEVEL REDUNDANCY MODEMANAGEMENT WITH INDEPENDENT SILICON ELEMENTS)”的美国临时申请(案号SF-10-10和S/N 61/418,846)。
2011年1月18日提交、第一发明人是Jeremy Isaac Nathaniel WERNER并且题为“较高级别冗余信息计算(HIGHER-LEVEL REDUNDANCY INFORMATION COMPUTATION)”的美国临时申请(案号SF-10-14和S/N 61/433,918)。
2011年3月11日提交、第一发明人是Hao ZHONG并且题为“用于闪存存储器的LDPC擦除解码(LDPC ERASURE DECODING FOR FLASH MEMORIES)”的PCT申请(案号SF-10-0lPCTB和S/N PCT/US 11/28244)。
2011年10月26日提交、第一发明人是Yan LI并且题为“用于基于闪存的数据存储的自适应ECC技术(ADAPTIVE ECC TECHNIQUES FOR FLASH MEMORY BASED DATA STORAGE)”的PCT申请(案号SF-10-03PCT和S/N PCT/US11/57914)。
背景技术
领域:需要存储技术的进步来提供性能、效率和使用实用性方面的改进。
相关技术:除非明确地被标识为是公开已知的或众所周知的,否则包括出于上下文、定义或比较目的,本文中提及的技术和概念不应被解释为承认这样的技术和概念是先前公开已知的或现有技术的一部分。出于所有目的,无论具体并入与否,包括专利、专利申请和出版物的本文中所引用的所有参考文献(如果有的话)通过引用整体结合于此。
概要
本发明可以许多方式来实现,例如,作为一种过程、一种制品、一种装置、一种系统、一种物质组成以及诸如计算机可读存储介质的计算机可读介质(例如,在诸如盘之类的光学和/或磁性海量存储设备、具有诸如闪存存储器的非易失性存储器的集成电路中的介质),或计算机网络,其中程序指令在光或电子通信链路上进行发送。详细描述提供了本发明的一个或多个实施例的阐述,所述实施例使得以上所标识的领域中的成本、盈利能力、性能、效率和使用实用性方面的改进成为可能。详细描述包括一引言,用于帮助理解详细描述的剩余部分。此引言包括根据本文中所描述概念的系统、制品和计算机可读介质中的一个或多个的示例性实施例。如在结论中更详细讨论的那样,本发明涵盖了发布的权利要求的范围内的所有可能的修改和变型。
附图说明
图1A示出了提供用于非易失性存储器(NVM)的混合粒度较高级别冗余的包括SSD控制器的固态盘(SSD)的实施例的选择的细节。
图1B示出了包括图1A的SSD的一个或多个实例的系统的各实施例的选择的细节。
图2示出了映射逻辑块地址(LBA)的逻辑页号(LPN)部分的实施例的选择的细节。
图3示出了在读单元地址处访问非易失性存储器(NVM)以产生被组织为各读单元(全体地具有以读单元的量(quanta)进行测量的长度)的读数据的实施例的选择的细节。
图4A示出了读单元的实施例的选择的细节。
图4B示出了读单元的另一实施例的选择的细节。
图5示出了具有多个字段的头部的实施例的选择的细节。
图6示出了在逻辑片和/或部分中管理的多个NVM设备(例如,一个或多个闪存管芯和/或闪存芯片)的块、页面和读单元的实施例的选择的细节。
图7示出了较高级别冗余技术的各实施例的选择的细节。
图8示出了利用硅独立元素冗余阵列(RASIE)的动态较高级别冗余模式管理的实施例的选择的细节。
图9示出了具有由存储在读单元中的一个或多个中的较高级别冗余信息保护的自适应码率的较低级别冗余信息的读单元的实施例。
图10示出了较高级别冗余信息结果和数据源对应的实施例的选择的细节。
图11示出了较高级别冗余信息计算的实施例的选择的细节。
图12示出了从一个(较低级别)故障(在单个操作期间)恢复的实施例的选择的细节。
图13A-13D示出了从两个(较低级别)故障(在单个操作期间)恢复的实施例的选择的细节。
图14A和14B示出了相对于从NVM接收的页面计算较高级别冗余信息的实施例的选择的细节。
图15A-15C示出了相对于被提供至NVM的写入的较高级别冗余信息的计算的撤回(back out)的实施例的选择细节。
图16示出了混合粒度较高级别冗余的实施例的选择的细节。
图17示出了在多个混合粒度较高级别冗余模式中的并行操作的实施例的选择的细节。
附图中参考标记列表
详细描述
以下连同示出了本发明的选择细节的附图一起提供了本发明的一个或多个实施例的详细描述。结合这些实施例描述本发明。本文中的实施例被理解为仅是示例性的,本发明明确地不限于本文中的实施例中的任何一个或全部或不受本文中的实施例中的任何一个或全部的限制,并且本发明涵盖众多替换、修改和等效方案。为了避免阐述中的用词单调,各种单词标签(包括但不限于:第一、最后、特定、各种、进一步、其它、具体的、选择、某些和显著的)可被应用于单独组的实施例;如本文中所使用的,这样的标签明确地不旨在传达质量或任何形式的偏好或偏见,而仅仅用于在单独的组之间进行方便地区分。所公开的过程的某些操作的顺序在本发明的范围内是可改变的。多重实施例用来描述过程、系统和/或程序指令特征中的变型的任何地方,构想其它实施例,根据预定的或动态确定的标准,执行分别地对应于多个多重实施例的多个操作模式中的一个的静态和/或动态选择。在下面的描述中阐述了众多具体细节以提供对本发明的透彻理解。出于示例的目的而提供这些细节,且本发明可在没有这些细节中的一些或全部的情况下根据权利要求来实践。出于清楚起见,并未详细描述本发明相关技术领域中已知的技术资料以免不必要地湮没本发明。
引言
包括此引言仅为了促进对详细描述的更快速理解;本发明不限于在引言中所提出的概念(包括明确的示例,如果有的话),因为任何引言的段落必然是整个主题的简略观点且不旨在成为详尽的或限制性描述。例如,接下来的引言提供受空间和组织限制到仅特定实施例的概览信息。存在贯穿规范的平衡进行讨论的很多其它实施例,包括权利要求最终将描绘的那些。
首字母缩写
这里定义的各种速记缩写(例如,首字母缩写)中的至少一些指代本文中所使用的特定元素。
首字母缩写 | 描述 |
AHCI | 高级主机控制器接口 |
API | 应用程序接口 |
ATA | 高级技术附件(AT附件) |
BCH | 博斯-乔赫里-霍克文黑姆(Bose Chaudhuri Hocquenghem) |
CD | 压缩盘 |
CF | 紧凑式闪存 |
CMOS | 互补金属氧化物半导体 |
CPU | 中央处理单元 |
CRC | 循环冗余校验 |
DAS | 直接附加存储 |
DDR | 双倍数据率 |
DMA | 直接存储器访问 |
DNA | 直接NAND访问 |
DRAM | 动态随机存取存储器 |
DVD | 数字多功能/视频盘 |
DVR | 数字视频记录器 |
ECC | 纠错码 |
eMMC | 嵌入式多媒体卡 |
eSATA | 外部串行高级技术附件 |
GPS | 全球定位系统 |
HDD | 硬盘驱动器 |
I/O | 输入/输出 |
IC | 集成电路 |
IDE | 集成驱动电子器件 |
JPEG | 联合图像专家组 |
LAN | 局域网 |
LBA | 逻辑块地址 |
LDPC | 低密度奇偶校验 |
LPN | 逻辑页号 |
首字母缩写 | 描述 |
MLC | 多级单元 |
MMC | 多媒体卡 |
MPEG | 运动图像专家组 |
NAS | 网络附加存储 |
NCQ | 原生指令排序 |
NVM | 非易失性存储器 |
ONA | 经优化的NAND访问 |
ONFI | 开放NAND闪存接口 |
OS | 操作系统 |
PC | 个人计算机 |
PCie | 外围组件高速互连(PCI高速) |
PDA | 个人数字助理 |
PHY | 物理接口 |
POS | 销售点 |
RAID | 廉价/独立磁盘冗余阵列 s |
RASIE | 硅独立元素冗余阵列 |
ReRAM | 阻性随机存取存储器 |
RS | 里德-所罗门(Reed-Solomon) |
SAN | 存储附加网络 |
SAS | 串行连接小型计算机系统接口(串行SCSI) |
SATA | 串行高级技术附件(串行ATA) |
SCSI | 小型计算机系统接口 |
SD | 安全数字 |
SDR | 单倍数据率 |
SLC | 单级单元 |
SMART | 自我监视分析和报告技术 |
SRAM | 静态随机存取存储器 |
SSD | 固态盘/驱动 |
UFS | 统一的闪存存储 |
USB | 通用串行总线 |
VF | 虚函数 |
WAN | 广域网 |
NAND闪存存储器利用浮动栅晶体管阵列来存储信息。在SLC技术中,每一位单元(例如,浮动栅晶体管)被启用以存储一位信息。在MLC技术中,每一位单元被启用以存储多位信息。随着制造技术(例如,CMOS技术)按比例缩小,每一浮动栅存储较少的电子。进一步,随着存储容量和密度增加,每一位单元存储更多位。因此,存储在位单元中的值由较小的电压范围进行表示。在感测的不确定性和/或所存储的电子的量随时间的变化增加了数据被错误存储或读取的概率。一个或多个冗余和/或ECC技术(例如,在较低级别下)的使用使得来自NAND闪存存储器的否则损坏的数据的正确恢复成为可能,在某些使用场景中,克服了前述困难中的一些。
一些类型的SSD利用闪存存储器来提供非易失性存储(例如,闪存存储器在没有电源应用的情况下保持信息)。一个或多个ECC和/或冗余技术(在较高级别下)的使用使得来自闪存存储器的否则损坏的数据的正确恢复成为可能,和/或使得甚至在一个或多个闪存存储元件间歇地或永久地失效时SSD的适当系统级操作成为可能。
例如,SSD控制器使得具有独立的硅元件的动态较高级别冗余模式管理能够在一个或多个NVM(例如,闪存)元件在部分地由控制器实现的SSD的操作期间失效时提供故障弱化。读取NVM的一部分。如果不可利用较低级别冗余和/或错误纠正(诸如根据一个或多个ECC技术)纠正的错误发生了,则较高级别冗余和/或错误校正(诸如根据一个或多个RASIE技术和/或动态较高级别冗余模式管理技术)被用于尝试纠正此错误。如果NVM元件中的一个的故障被较低级别和/或较高级别冗余和/或错误纠正检测到,和/或被其它技术检测到(诸如,由NVM元件中的一个或多个所报告的出故障状态),则较高级别冗余和/或错误纠正从在当前模式中操作动态地转换到在新的模式中操作。此转换包括减少SSD上可用的自由空间、重新安排SSD的数据存储、恢复/存储失效的用户数据(如果可能的话)以及确定/存储经修正的较高级别冗余和/或错误纠正信息中的一个或多个。操作随后在新的模式中继续。如果利用目前在新的模式中操作的较高级别冗余和/或错误纠正检测到NVM元件中的另一个的另一故障,则作出至另一较高级别冗余和/或错误纠正模式的转换。写入NVM是根据较高级别冗余和/或错误纠正操作模式,包括根据较高级别冗余和/或错误纠正操作模式和写入数据来确定/存储较高级别冗余和/或错误纠正信息。
如果大于阈值数量和/或比率的较低级别错误纠正和/或一个或多个故障针对存储器的一区域而发生,则可选地存储器此区域被动态地转换至在新的较高级别冗余和/或错误纠正操作模式中操作,该新的操作模式被启用以从比当前的较高级别冗余和/或错误纠正操作模式多的错误中恢复。例如,如果当前的较高级别冗余和/或错误纠正操作模式是没有(例如,没有较高级别冗余信息被计算和/或使用以从较低级别冗余的故障中恢复以纠正错误),则新的较高级别冗余和/或错误纠正操作模式是能够从通过较低级别冗余不可纠正的单个故障恢复的操作模式。再例如,如果当前的较高级别冗余和/或错误纠正操作模式是能够从通过较低级别冗余不可纠正的单个故障恢复的操作模式,则新的较高级别冗余和/或错误纠正操作模式是能够从通过较低级别冗余不可纠正的两个故障恢复的操作模式。
在某些实施例和/或使用场景中,确定/存储较高级别冗余和/或错误纠正信息是根据较高级别冗余信息的计算。较高级别冗余信息计算使得SSD控制器能够提供较高级别冗余能力,用于在部分地通过控制器实现的SSD的操作期间,维持在非易失性(例如,闪存)存储元件的故障的背景中的可靠操作。经由在由较高级别冗余信息保护的一部分数据(例如,条)中的所有页面的异或,利用奇偶校验编码计算较高级别冗余信息的第一部分。利用加权和技术计算较高级别冗余信息的第二部分,当计算加权和时,此部分中的每一页面被分配一唯一的非零“索引”作为权重。在有限域(诸如Galois域或诸如整数模p,其中p是素数)上执行算法。
较高级别冗余信息的各部分可以任何顺序(诸如由在NVM元件上执行的一个或多个读操作的完成的顺序所确定的顺序,或诸如基于从NVM元件返回和/或可用的数据的顺序的顺序)进行计算,使得在各实施例中能够减少或消除缓冲。在各实施例中,任何顺序可计算性能够利用相对小的临时和/或中间缓冲和/或状态计算恢复数据值和/或撤回写入。较高级别冗余信息的各部分可利用诸如由可用的专用硬件元件所确定的任何程度的并行性进行计算,使得在各实施例中能够减少延迟处理和/或减少存储器(NVM)带宽使用。
在其中一定数量和/或比率的较低级别错误事件(例如,可纠正的和/或不可纠正的错误)和/或故障在NVM的各种区域中区别地发生的一些情况中,用于NVM的混合粒度较高级别冗余使得具有更好的错误恢复和/或减少的冗余信息开销的改进的较高级别冗余操作成为可能。在某些场景中,更好的错误恢复导致NVM和/或利用NVM实现的SSD的增加的可用寿命。
作为示例,最初NVM的所有页面具有近似相等比率的较低级别错误事件。NVM的所有块最初以第一较高级别冗余模式进行操作,该第一较高级别冗余模式能够从在单个操作期间发生的单个较低级别不可纠正的错误中恢复。接着在NVM的可靠性中存在变化从而使得NVM的某些页面变得较不可靠(例如,开始具有更大量的较低级别错误事件),而NVM的所有其它页面保持可靠(例如,继续具有相同或几乎相同的量的较低级别错误事件)。较低级别事件的前述量例如是较低级别事件的数量、比率和/或严重性。
概念地,在可靠性变化之后,NVM具有两个区域:第一区域,为仅具有可靠页面的块;以及第二区域,为具有至少一个不可靠页面的块。响应于可靠性中的变化,第二区域被选择性地动态地转换至部分地以第二较高级别冗余模式进行操作,该第二较高级别冗余模式能够从在单个操作期间发生的两个较低级别不可纠正的错误中恢复。此转换是选择性的和部分的,因为仅较不可靠页面被转换至以第二较高级别冗余模式进行操作,而第二区域的可靠页面继续以第一较高级别冗余模式进行操作。同时,第一区域的所有块继续以第一较高级别冗余模式进行操作。
由于较高级别冗余模式随着页面变化(例如,可靠的页面以第一较高级别冗余模式进行操作并且较不可靠的页面以第二较高级别冗余模式进行操作),因而第二区域被描述为利用页面粒度较高级别冗余进行操作。相反,由于较高级别冗余模式对于第一区域的所有块是相同的(例如,所有的块以第一较高级别冗余模式进行操作),因而第一区域被描述为利用块粒度较高级别冗余进行操作。如果第一区域是整个的R-块(本文中其它地方所描述的),则由于较高级别冗余模式对于第一区域的所有R-块是相同的(例如,整个的R-块以第一较高级别冗余模式进行操作),因而第一区域可替代地被描述为利用R-块粒度较高级别冗余进行操作。
对此示例作出结论,以第二较高级别冗余模式操作较不可靠页面使得比使较不可靠页面以第一较高级别冗余模式操作更好的错误恢复成为可能。替代地,相比于以第二较高级别冗余模式操作具有不可靠页面中的任何一个的所有块,仅以第二较高级别冗余模式操作较不可靠页面能够减少冗余信息开销。
示例性实施例
在对详细描述的引言作出结论中,接下来的是示例性实施例的收集,包括至少一些明确地枚举为“EC”(示例组合),提供根据本文中所描述的概念的各种实施例类型的附加描述;这些示例不旨在是相互排斥的、穷尽性的或限制性的;并且本发明不限于这些示例性实施例而是涵盖了发布的权利要求及其等效方案的范围内的所有可能的修改和变型。
ECl)一种方法,包括:
在第一较高级别冗余模式中操作,其包括将M个信息部分存储在存储器的M个相应的区域中,M个相应的区域中的每一个是相同的第一尺寸;
在第二较高级别冗余模式中操作,其包括将N个信息部分存储在存储器的N个相应的区域中,N个相应的区域中的每一个是相同的第二尺寸;
其中M个信息部分包括相应的M-J个数据信息部分和经计算以保护相应的M-J个数据信息部分的相应的J个冗余信息部分;
其中N个信息部分包括相应的N-K个数据信息部分和经计算以保护相应的N-K个数据信息部分的相应的K个冗余信息部分;
其中M个相应的区域和N个相应的区域中的每一个是存储器的非重叠的区域;
其中第一尺寸不同于第二尺寸;以及
其中M个相应的区域中的每一个是在存储器的M个物理设备的相应的一个中并且其中N个相应的区域中的每一个是在存储器的N个物理设备的相应的一个中。
EC2)EC1的方法,其中M个物理设备中的至少一些是N个物理设备中的至少一些。
EC3)EC1的方法,其中M个物理设备是N个物理设备。
EC4)EC1的方法,其中在第一较高级别冗余模式中的操作和在第二较高级别冗余模式中的操作是并行地活跃的,从而使得至少对于一部分时间,存储器与具有对应于N个信息部分的存储的信息并行地具有对应于M个信息部分的存储的信息。
EC5)EC4的方法,其中在第二较高级别冗余模式中的操作是响应于制造缺陷、工艺变化、不均匀磨损、可靠性或错误率的观察到的变化以及故障中的任何一个或多个。
EC6)EC1的方法,进一步包括访问在特定区域中完全地被包括的一个或多个位置,所述特定区域是M个相应的区域中的任何一个或N个相应的区域中的任何一个,所述访问包括确定所述特定区域的尺寸。
EC7)EC1的方法,其中所述存储器包括多个闪存设备。
EC8)EC7的方法,其中M个相应的区域对应于所述多个闪存设备中的一个或多个的M个相应的块。
EC9)EC8的方法,其中所述一个或多个闪存设备是一个或多个第一闪存设备,并且N个相应的区域对应于所述多个闪存设备中的一个或多个第二闪存设备的N个相应的页面。
EC10)EC9的方法,其中一个或多个第一闪存设备中的至少一个和一个或多个第二闪存设备中的至少一个是相同的闪存设备。
EC11)EC10的方法,其中所述相同的闪存设备包括具有一个或多个闪存管芯的集成电路。
EC12)EC10的方法,其中所述相同的闪存设备包括单个闪存管芯。
ECl3)一种方法,包括:
在第一较高级别冗余模式中操作,其包括将M个信息部分存储在存储器的M个相应的区域中,M个相应的区域中的每一个是相同的第一类型;
在第二较高级别冗余模式中操作,其包括将N个信息部分存储在存储器的N个相应的区域中,N个相应的区域中的每一个是相同的第二类型;
其中M个信息部分包括相应的M-J个数据信息部分和经计算以保护相应的M-J个数据信息部分的相应的J个冗余信息部分;
其中N个信息部分包括相应的N-K个数据信息部分和经计算以保护相应的N-K个数据信息部分的相应的K个冗余信息部分;
其中M个相应的区域和N个相应的区域中的每一个是存储器的非重叠的区域;
其中第一类型不同于第二类型;以及
其中M个相应的区域中的每一个是在存储器的M个物理设备的相应的一个中并且其中N个相应的区域中的每一个是在存储器的N个物理设备的相应的一个中。
EC14)EC13的方法,其中:
所述存储器包括多个闪存设备;
M个相应的区域对应于所述闪存设备中的一个或多个第一闪存设备的M个相应的块,所述第一类型为块类型;以及
N个相应的区域对应于所述闪存设备中的一个或多个第二闪存设备的N个相应的页面,所述第一类型为页面类型。
EC 15)EC14的方法,进一步包括检测M个相应的块中的一个块的故障,并且作为响应,以第二较高级别冗余模式操作至少出故障的块。
EC16)ECl或EC13的方法,其中J不等于K。
EC17)EC16的方法,其中M等于N。
EC18)ECl或EC13的方法,其中M等于N。
EC19)ECl或EC13的方法,其中M不等于N。
EC20)EC19的方法,其中J不等于K。
EC21)ECl或EC13的方法,其中存储器的区域中的至少一些包括闪存存储器,并且存储的行动中的一个或多个至少部分地是经由耦合至闪存存储器并且与至少一个闪存存储器接口标准兼容的闪存存储器接口。
EC22)ECl或EC13的方法,其中存储器的区域中的至少一些包括闪存存储器,并且存储的行动中的一个或多个至少部分地响应于经由与至少一个存储接口标准兼容的主机接口从主机接收的请求。
EC23)ECl或EC13的方法,其中存储器的区域中的至少一些包括闪存存储器,存储的行动中的一个或多个至少部分地是经由耦合至闪存存储器并且与至少一个闪存存储器接口标准兼容的闪存存储器接口,并且存储的行动中的至少一个至少部分地响应于经由与至少一个存储接口标准兼容的主机接口从主机接收的请求。
EC24)EC23的方法,其中在单个集成电路(IC)中共同地实现闪存存储器接口和主机接口。
EC25)EC23的方法,其中闪存存储器接口和主机接口被包括在固态盘(SSD)中。
EC26)EC23的方法,进一步包括,在闪存存储器中,接收至少部分地响应于存储的行动中的至少一个而生成的一个或多个写和/或编程命令。
EC27)EC23的方法,进一步包括,在主机中,生成所述请求。
EC28)一种系统,包括:
用于根据相应的第一和第二较高级别冗余模式管理存储器的装置;
用于响应于用于管理存储器的装置而存储至存储器的装置;
其中用于管理存储器的装置被启用以引导用于存储的装置将M个信息部分存储在存储器的M个相应的区域中,M个相应的区域中的每一个是相同的第一尺寸;
其中用于管理存储器的装置进一步被启用以引导用于存储的装置将N个信息部分存储在存储器的N个相应的区域中,N个相应的区域中的每一个是相同的第二尺寸;
其中M个信息部分包括相应的M-J个数据信息部分和经计算以保护相应的M-J个数据信息部分的相应的J个冗余信息部分;
其中N个信息部分包括相应的N-K个数据信息部分和经计算以保护相应的N-K个数据信息部分的相应的K个冗余信息部分;
其中M个相应的区域和N个相应的区域中的每一个是存储器的非重叠的区域;
其中第一尺寸不同于第二尺寸;以及
其中M个相应的区域中的每一个是在存储器的M个物理设备的相应的一个中并且其中N个相应的区域中的每一个是在存储器的N个物理设备的相应的一个中。
EC29)EC28的系统,其中M个物理设备中的至少一些是N个物理设备中的至少一些。
EC30)EC28的系统,其中M个物理设备是N个物理设备。
EC31)EC28的系统,其中用于管理存储器的装置被启用以根据第一较高级别冗余模式和第二较高级别冗余模式并行地管理存储器,从而使得至少对于一部分时间,存储器与具有对应于N个信息部分的存储的信息并行地具有对应于M个信息部分的存储的信息。
EC32)EC31的系统,用于管理存储器的装置被启用以响应于制造缺陷、工艺变化、不均匀磨损、可靠性或错误率的观察到的变化以及故障中的任何一个或多个而将存储器的一部分从在第一较高级别冗余模式中操作转换至在第二较高级别冗余模式中操作。
EC33)EC28的系统,进一步包括用于访问在特定区域中完全地被包括的一个或多个位置的装置,所述特定区域是M个相应的区域中的任何一个或N个相应的区域中的任何一个,用于访问的装置被启用以确定所述特定区域的尺寸。
EC34)EC28的系统,其中所述存储器包括多个闪存设备。
EC35)EC34的系统,其中M个相应的区域对应于所述多个闪存设备中的一个或多个的M个相应的块。
EC36)EC35的系统,其中所述一个或多个闪存设备是一个或多个第一闪存设备,并且N个相应的区域对应于所述多个闪存设备中的一个或多个第二闪存设备的N个相应的页面。
EC37)EC36的系统,其中一个或多个第一闪存设备中的至少一个和一个或多个第二闪存设备中的至少一个是相同的闪存设备。
EC38)EC37的系统,其中所述相同的闪存设备包括具有一个或多个闪存管芯的集成电路。
EC39)EC37的系统,其中所述相同的闪存设备包括单个闪存管芯。
EC40)一种系统,包括:
用于根据相应的第一和第二较高级别冗余模式管理存储器的装置;
用于响应于用于管理存储器的装置而存储至所述存储器的装置;
其中用于管理存储器的装置被启用以引导用于存储的装置将M个信息部分存储在存储器的M个相应的区域中,M个相应的区域中的每一个是相同的第一类型;
其中用于管理存储器的装置进一步被启用以引导用于存储的装置将N个信息部分存储在存储器的N个相应的区域中,N个相应的区域中的每一个是相同的第二类型;
其中M个信息部分包括相应的M-J个数据信息部分和经计算以保护相应的M-J个数据信息部分的相应的J个冗余信息部分;
其中N个信息部分包括相应的N-K个数据信息部分和经计算以保护相应的N-K个数据信息部分的相应的K个冗余信息部分;
其中M个相应的区域和N个相应的区域中的每一个是存储器的非重叠的区域;
其中第一类型不同于第二类型;以及
其中M个相应的区域中的每一个是在存储器的M个物理设备的相应的一个中并且其中N个相应的区域中的每一个是在存储器的N个物理设备的相应的一个中。
EC41)EC40的系统,其中:
所述存储器包括多个闪存设备;
M个相应的区域对应于所述闪存设备中的一个或多个第一闪存设备的M个相应的块,所述第一类型为块类型;以及
N个相应的区域对应于所述闪存设备中的一个或多个第二闪存设备的N个相应的页面,所述第一类型为页面类型。
EC42)EC41的系统,其中用于管理存储器的装置被启用以检测M个相应的块中的一个块的故障并且响应于所述检测,以第二较高级别冗余模式操作至少出故障的块。
EC43)EC28或EC40的系统,其中J不等于K。
EC44)EC43的系统,其中M等于N。
EC45)EC28或EC40的系统,其中M等于N。
EC46)EC28或EC40的系统,其中M不等于N。
EC47)EC46的系统,其中J不等于K。
EC48)EC28或EC40的系统,其中存储器的区域中的至少一些包括闪存存储器,并且用于存储的装置包括耦合至闪存存储器并且与至少一个闪存存储器接口标准兼容的闪存存储器接口。
EC49)EC28或EC40的系统,其中存储器的区域中的至少一些包括闪存存储器,并且存储中的至少一些至少部分地响应于经由与至少一个存储接口标准兼容的主机接口从主机接收的请求。
EC50)EC28或EC40的系统,其中存储器的区域中的至少一些包括闪存存储器,用于存储的装置包括耦合至闪存存储器并且与至少一个闪存存储器接口标准兼容的闪存存储器接口,并且存储中的至少一些至少部分地响应于经由与至少一个存储接口标准兼容的主机接口从主机接收的请求。
EC51)EC50的系统,其中在单个集成电路(IC)中共同地实现闪存存储器接口和主机接口。
EC52)EC50的系统,其中闪存存储器接口和主机接口被包括在固态盘(SSD)中。
EC53)EC50的系统,进一步包括,在闪存存储器中,用于接收至少部分地响应于存储中的至少一些而生成的一个或多个写和/或编程命令的装置。
EC54)EC53的系统,进一步包括闪存设备的任何部分。
EC55)EC50的系统,进一步包括,在主机中,用于生成所述请求的装置。
EC56)EC55的系统,进一步包括主机的任何部分。
EC57)一种装置,包括:
较高级别冗余控制电路,被启用以根据相应的第一和第二较高级别冗余模式控制存储器;
存储电路,响应于较高级别冗余控制电路;
其中较高级别冗余控制电路被启用以引导存储电路将M个信息部分存储在存储器的M个相应的区域中,M个相应的区域中的每一个是相同的第一尺寸;
其中较高级别冗余控制电路进一步被启用以引导存储电路将N个信息部分存储在存储器的N个相应的区域中,N个相应的区域中的每一个是相同的第二尺寸;
其中M个信息部分包括相应的M-J个数据信息部分和经计算以保护相应的M-J个数据信息部分的相应的J个冗余信息部分;
其中N个信息部分包括相应的N-K个数据信息部分和经计算以保护相应的N-K个数据信息部分的相应的K个冗余信息部分;
其中M个相应的区域和N个相应的区域中的每一个是存储器的非重叠的区域;
其中第一尺寸不同于第二尺寸;以及
其中M个相应的区域中的每一个是在存储器的M个物理设备的相应的一个中并且其中N个相应的区域中的每一个是在存储器的N个物理设备的相应的一个中。
EC58)EC57的装置,其中M个物理设备中的至少一些是N个物理设备中的至少一些。
EC59)EC57的装置,其中M个物理设备是N个物理设备。
EC60)EC57的装置,其中较高级别冗余控制电路进一步被启用以根据第一较高级别冗余模式和第二较高级别冗余模式并行地管理存储器,从而使得至少对于一部分时间,存储器与具有对应于N个信息部分的存储的信息并行地具有对应于M个信息部分的存储的信息。
EC61)EC60的装置,其中较高级别冗余控制电路进一步被启用以响应于制造缺陷、工艺变化、不均匀磨损、可靠性或错误率的观察到的变化以及故障中的任何一个或多个而将存储器的一部分从在第一较高级别冗余模式中操作转换至在第二较高级别冗余模式中操作。
EC62)EC57的装置,进一步包括访问电路,被启用以访问在特定区域中完全地被包括的一个或多个位置,所述特定区域是M个相应的区域中的任何一个或N个相应的区域中的任何一个,所述访问电路进一步被启用以确定所述特定区域的尺寸。
EC63)EC57的装置,其中所述存储器包括多个闪存设备。
EC64)EC63的装置,其中M个相应的区域对应于所述多个闪存设备中的一个或多个的M个相应的块。
EC65)EC64的装置,其中所述一个或多个闪存设备是一个或多个第一闪存设备,并且N个相应的区域对应于所述多个闪存设备中的一个或多个第二闪存设备的N个相应的页面。
EC66)EC65的装置,其中一个或多个第一闪存设备中的至少一个和一个或多个第二闪存设备中的至少一个是相同的闪存设备。
EC67)EC66的装置,其中所述相同的闪存设备包括具有一个或多个闪存管芯的集成电路。
EC68)EC66的装置,其中所述相同的闪存设备包括单个闪存管芯。
EC69)一种装置,包括:
较高级别冗余控制电路,被启用以根据相应的第一和第二较高级别冗余模式控制存储器;
存储电路,响应于较高级别冗余控制电路;
其中较高级别冗余控制电路被启用以引导存储电路将M个信息部分存储在存储器的M个相应的区域中,M个相应的区域中的每一个是相同的第一类型;
其中较高级别冗余控制电路进一步被启用以引导存储电路将N个信息部分存储在存储器的N个相应的区域中,N个相应的区域中的每一个是相同的第二类型;
其中M个信息部分包括相应的M-J个数据信息部分和经计算以保护相应的M-J个数据信息部分的相应的J个冗余信息部分;
其中N个信息部分包括相应的N-K个数据信息部分和经计算以保护相应的N-K个数据信息部分的相应的K个冗余信息部分;
其中M个相应的区域和N个相应的区域中的每一个是存储器的非重叠的区域;
其中第一类型不同于第二类型;以及
其中M个相应的区域中的每一个是在存储器的M个物理设备的相应的一个中并且其中N个相应的区域中的每一个是在存储器的N个物理设备的相应的一个中。
EC70)EC69的装置,其中:
所述存储器包括多个闪存设备;
M个相应的区域对应于所述闪存设备中的一个或多个第一闪存设备的M个相应的块,所述第一类型为块类型;以及
N个相应的区域对应于所述闪存设备中的一个或多个第二闪存设备的N个相应的页面,所述第一类型为页面类型。
EC71)EC70的装置,其中较高级别冗余控制电路进一步被启用以检测M个相应的块中的一个块的故障并且响应于所述检测,以第二较高级别冗余模式操作至少出故障的块。
EC72)EC57或EC69的装置,其中J不等于K。
EC73)EC72的装置,其中M等于N。
EC74)EC57或EC69的装置,其中M等于N。
EC75)EC57或EC69的装置,其中M不等于N。
EC76)EC75的装置,其中J不等于K。
EC77)EC57或EC69的装置,其中存储器的区域中的至少一些包括闪存存储器,并且存储电路包括耦合至闪存存储器并且与至少一个闪存存储器接口标准兼容的闪存存储器接口。
EC78)EC57或EC69的装置,其中存储器的区域中的至少一些包括闪存存储器,并且存储中的至少一些至少部分地响应于经由与至少一个存储接口标准兼容的主机接口从主机接收的请求。
EC79)EC57或EC69的装置,其中存储器的区域中的至少一些包括闪存存储器,存储电路包括耦合至闪存存储器并且与至少一个闪存存储器接口标准兼容的闪存存储器接口,并且存储中的至少一些至少部分地响应于经由与至少一个存储接口标准兼容的主机接口从主机接收的请求。
EC80)EC79的装置,其中在单个集成电路(IC)中共同地实现闪存存储器接口和主机接口。
EC81)EC79的装置,其中闪存存储器接口和主机接口被包括在固态盘(SSD)中。
EC82)EC79的装置,其中闪存存储器被启用以接收至少部分地响应于存储中的至少一些而生成的一个或多个写和/或编程命令。
EC83)EC82的装置,进一步包括闪存设备的任何部分。
EC84)EC79的装置,其中主机被启用以生成所述请求。
EC85)EC84的装置,进一步包括主机的任何部分。
EC86)一种其中存储有一组指令的有形计算机可读介质,所述一组指令在由处理元件执行时导致所述处理元件执行和/或控制包括以下各项的操作:
在第一较高级别冗余模式中操作,其包括将M个信息部分存储在存储器的M个相应的区域中,M个相应的区域中的每一个是相同的第一尺寸;
在第二较高级别冗余模式中操作,其包括将N个信息部分存储在存储器的N个相应的区域中,N个相应的区域中的每一个是相同的第二尺寸;
其中M个信息部分包括相应的M-J个数据信息部分和经计算以保护相应的M-J个数据信息部分的相应的J个冗余信息部分;
其中N个信息部分包括相应的N-K个数据信息部分和经计算以保护相应的N-K个数据信息部分的相应的K个冗余信息部分;
其中M个相应的区域和N个相应的区域中的每一个是存储器的非重叠的区域;
其中第一尺寸不同于第二尺寸;以及
其中M个相应的区域中的每一个是在存储器的M个物理设备的相应的一个中并且其中N个相应的区域中的每一个是在存储器的N个物理设备的相应的一个中。
EC87)EC86的有形计算机可读介质,其中M个物理设备中的至少一些是N个物理设备中的至少一些。
EC88)EC86的有形计算机可读介质,其中M个物理设备是N个物理设备。
EC89)EC86的有形计算机可读介质,其中在第一较高级别冗余模式中的操作和在第二较高级别冗余模式中的操作是并行地活跃的,从而使得至少对于一部分时间,存储器与具有对应于N个信息部分的存储的信息并行地具有对应于M个信息部分的存储的信息。
EC90)EC89的有形计算机可读介质,其中在第二较高级别冗余模式中的操作是响应于制造缺陷、工艺变化、不均匀磨损、可靠性或错误率的观察到的变化以及故障中的任何一个或多个。
EC91)EC86的有形计算机可读介质,其中所述操作进一步包括访问在特定区域中完全地被包括的一个或多个位置,所述特定区域是M个相应的区域中的任何一个或N个相应的区域中的任何一个,所述访问包括确定所述特定区域的尺寸。
EC92)EC86的有形计算机可读介质,其中所述存储器包括多个闪存设备。
EC93)EC92的有形计算机可读介质,其中M个相应的区域对应于所述多个闪存设备中的一个或多个的M个相应的块。
EC94)EC93的有形计算机可读介质,其中所述一个或多个闪存设备是一个或多个第一闪存设备,并且N个相应的区域对应于所述多个闪存设备中的一个或多个第二闪存设备的N个相应的页面。
EC95)EC94的有形计算机可读介质,其中一个或多个第一闪存设备中的至少一个和一个或多个第二闪存设备中的至少一个是相同的闪存设备。
EC96)EC95的有形计算机可读介质,其中所述相同的闪存设备包括具有一个或多个闪存管芯的集成电路。
EC97)EC95的有形计算机可读介质,其中所述相同的闪存设备包括单个闪存管芯。
EC98)一种其中存储有一组指令的有形计算机可读介质,所述一组指令在由处理元件执行时导致所述处理元件执行和/或控制包括以下各项的操作:
在第一较高级别冗余模式中操作,其包括将M个信息部分存储在存储器的M个相应的区域中,M个相应的区域中的每一个是相同的第一类型;
在第二较高级别冗余模式中操作,其包括将N个信息部分存储在存储器的N个相应的区域中,N个相应的区域中的每一个是相同的第二类型;
其中M个信息部分包括相应的M-J个数据信息部分和经计算以保护相应的M-J个数据信息部分的相应的J个冗余信息部分;
其中N个信息部分包括相应的N-K个数据信息部分和经计算以保护相应的N-K个数据信息部分的相应的K个冗余信息部分;
其中M个相应的区域和N个相应的区域中的每一个是存储器的非重叠的区域;
其中第一类型不同于第二类型;以及
其中M个相应的区域中的每一个是在存储器的M个物理设备的相应的一个中并且其中N个相应的区域中的每一个是在存储器的N个物理设备的相应的一个中。
EC99)EC98的有形计算机可读介质,其中:
所述存储器包括多个闪存设备;
M个相应的区域对应于所述闪存设备中的一个或多个第一闪存设备的M个相应的块,所述第一类型为块类型;以及
N个相应的区域对应于所述闪存设备中的一个或多个第二闪存设备的N个相应的页面,所述第一类型为页面类型。
EC 100)EC99的有形计算机可读介质,其中所述操作进一步包括检测M个相应的块中的一个块的故障,并且作为响应,以第二较高级别冗余模式操作至少出故障的块。
EC101)EC86或EC98的有形计算机可读介质,其中J不等于K。
EC 102)EC101的有形计算机可读介质,其中M等于N。
EC103)EC86或EC98的有形计算机可读介质,其中M等于N。
EC104)EC86或EC98的有形计算机可读介质,其中M不等于N。
EC 105)EC104的有形计算机可读介质,其中J不等于K。
EC106)EC86或EC98的有形计算机可读介质,其中存储器的区域中的至少一些包括闪存存储器,并且存储中的至少一些至少部分地是经由耦合至闪存存储器并且与至少一个闪存存储器接口标准兼容的闪存存储器接口。
EC107)EC86或EC98的有形计算机可读介质,其中存储器的区域中的至少一些包括闪存存储器,并且存储中的至少一些至少部分地响应于经由与至少一个存储接口标准兼容的主机接口从主机接收的请求。
EC108)EC86或EC98的有形计算机可读介质,其中存储器的区域中的至少一些包括闪存存储器,存储中的至少一些至少部分地是经由耦合至闪存存储器并且与至少一个闪存存储器接口标准兼容的闪存存储器接口,并且存储中的至少一些至少部分地响应于经由与至少一个存储接口标准兼容的主机接口从主机接收的请求。
EC 109)EC108的有形计算机可读介质,其中在单个集成电路(IC)中共同地实现闪存存储器接口和主机接口。
EC110)EC108的有形计算机可读介质,其中闪存存储器接口和主机接口被包括在固态盘(SSD)中。
EC111)EC108的有形计算机可读介质,其中闪存存储器被启用以接收至少部分地响应于存储中的至少一些而生成的一个或多个写和/或编程命令。
ECl12)EC108的有形计算机可读介质,其中主机被启用以生成所述请求。
ECl13)具有或提及闪存存储器接口标准的前述EC中的任何一项,其中所述闪存存储器接口标准与下列中的一个或多个兼容:
开放NAND闪存接口(ONFI)、
触发模式接口、
双倍数据率(DDR)同步接口、
DDR2同步接口、
同步接口、以及
异步接口。
EC l14)具有或提及主机的前述EC中的任何一项,其中所述主机包括下列中的一个或多个:
计算机、
工作站计算机、
服务器计算机、
存储服务器、
存储附加网络(SAN)、
网络附加存储(NAS)设备、
直接附加存储(DAS)设备、
存储器具、
个人计算机(PC)、
膝上型计算机、
笔记本计算机、
上网本计算机、
平板设备或计算机、
超极本计算机、
电子阅读设备(电子阅读器)、
个人数字助理(PDA)、
导航系统、
(手持式)全球定位系统(GPS)设备、
汽车控制系统、
汽车媒体控制系统或计算机、
打印机、复印机或传真机或一体化设备、
销售点(POS)设备、
收银机、
媒体播放器、
电视、
媒体记录器、
数字视频记录器(DVR)、
数码相机、
蜂窝手持机、
无绳电话手持机、以及
电子游戏。
ECl15)具有或提及存储接口标准的前述EC中的任何一项,其中所述存储接口标准包括下列中的一个或多个:
通用串行总线(USB)接口标准、
紧凑式闪存(CF)接口标准、
多媒体卡(MMC)接口标准、
嵌入式MMC(eMMC)接口标准、
迅雷接口标准、
UFS接口标准、
安全数字(SD)接口标准、
记忆棒接口标准、
xD图片卡接口标准、
集成驱动电子器件(IDE)接口标准、
串行高级技术附件(SATA)接口标准、
外部SATA(eSATA)接口标准、
小型计算机系统接口(SCSI)接口标准、
串行连接小型计算机系统接口(SAS)接口标准、
光纤通道接口标准、
以太网接口标准、以及
外围组件高速互连(PCIe)接口标准。
ECl16)具有或提及至少一个闪存设备的前述EC中的任何一项,其中所述至少一个闪存设备的至少一部分包括下列中的一个或多个:
NAND闪存技术存储单元,以及
NOR闪存技术存储单元。
ECl17)具有或提及至少一个闪存设备的前述EC中的任何一项,其中所述至少一个闪存设备的至少一部分包括下列中的一个或多个:
单级单元(SLC)闪存技术存储单元,以及
多级单元(MLC)闪存技术存储单元。
EC118)具有或提及至少一个闪存设备的前述EC中的任何一项,其中所述至少一个闪存设备的至少一部分包括下列中的一个或多个:
基于多晶硅技术的电荷存储单元,以及
基于氮化硅技术的电荷存储单元。
ECl19)具有或提及至少一个闪存设备的前述EC中的任何一项,其中所述至少一个闪存设备的至少一部分包括下列中的一个或多个:
基于二维技术的闪存存储器技术,以及
基于三维技术的闪存存储器技术。
系统
在某些实施例中,I/O设备,诸如SSD包括SSD控制器。SSD控制器用作SSD的主机接口和NVM之间的桥,并且执行经由SSD的主机接口从计算主机发送的主机协议的命令。这些命令中的至少一些引导SSD分别地利用从计算主机发送的数据和发送至计算主机的数据来写和读NVM。在进一步实施例中,SSD控制器被启用以利用一映射以在主机协议的LBA和NVM中的物理存储地址之间进行转换。在进一步实施例中,此映射的至少一部分被用于I/O设备的私有存储(对计算主机不可见)。例如,不可被计算主机访问的LBA的一部分被I/O设备用来管理对日志、统计资料或其它私有数据的访问。
在某些实施例中,访问NVM中变化大小的量的压缩数据在某些使用场景中提供了改进的存储效率。例如,SSD控制器从计算主机接收(未压缩的)数据(例如,与盘写命令有关)、压缩此数据并将经压缩的数据存储到闪存存储器中。响应于来自计算主机的后续请求(例如,与盘读命令有关),SSD控制器从闪存存储器中读取经压缩的数据,解压缩此经压缩的数据并将未压缩的数据提供至计算主机。此经压缩的数据根据变化大小的量被存储在闪存存储器中,此量尺寸由于例如压缩算法、操作模式和对各种数据的压缩有效性而变化。SSD控制器部分地通过咨询一包含的映射表以确定头部被存储在闪存存储器中的何处来解压缩数据。SSD控制器解析从闪存存储器获得的头部以确定适当的(压缩的)数据被存储在闪存存储器中的何处。SSD控制器解压缩来自闪存存储器的适当的数据以产生未压缩的数据以提供至计算主机。在本申请中,解压缩(uncompress)(和其变型)与去压缩(decompress)(和其变型)同义。
在各实施例中,SSD控制器包括:主机接口,用于与计算主机对接;接口,用于与NVM(诸如闪存存储器)对接;以及电路,用于控制多个接口并执行(和/或控制执行的各方面)压缩和解压缩,以及较低级别冗余和/或错误纠正、较高级别冗余和/或错误纠正,和利用独立硅元素的动态较高级别冗余模式管理。
根据各实施例,一些主机接口与下列中的一个或多个兼容:USB接口标准、CF接口标准、MMC接口标准、eMMC接口标准、迅雷(Thunderbolt)接口标准、UFS接口标准、SD接口标准、记忆棒接口标准、xD图片卡接口标准、IDE接口标准、SATA接口标准、SCSI接口标准、SAS接口标准和PCIe接口标准。根据各实施例,计算主机下列的全部或任何部分:计算机、工作站计算机、服务器计算机、存储服务器、SAN、NAS设备、DAS设备、存储器具、PC、膝上型计算机、笔记本计算机、上网本计算机、平板设备或计算机、超极本计算机、电子阅读设备(诸如电子阅读器)、PDA、导航系统、(手持式)GPS设备、汽车控制系统、汽车媒体控制系统或计算机、打印机、复印机或传真机或一体化设备、POS设备、收银机、媒体播放器、电视、媒体记录器、DVR、数码相机、蜂窝手持机、无绳电话手持机和电子游戏。在某些实施例中,接口主机(诸如SAS/SATA桥)操作作为计算主机和/或作为到计算主机的桥。
在各实施例中,SSD控制器包括一个或多个处理器。处理器执行固件以控制和/后执行SSD控制器的操作。SSD控制器与计算主机进行通信以发送和接收命令和/或状态以及数据。计算主机执行操作系统、驱动器和应用中的一个或多个。由计算主机与SSD控制器的通信可选地和/或选择性地是经由驱动器和/或经由应用。在第一示例中,到SSD控制器的所有通信是经由驱动器,并且此应用将较高级别命令提供至驱动器,该驱动器将所述命令转换成用于SSD控制器的特定命令。在第二示例中,驱动器实现旁路模式并且此应用被启用以经由驱动器将特定命令发送至SSD控制器。在第三示例中,PCIe SSD控制器支持一个或多个虚函数(VF),使得一应用,一旦被配置,能够绕过驱动器直接地与SSD控制器通信。
根据各实施例,一些SSD与被磁性和/或光学非易失性存储(诸如HDD、CD驱动和DVD驱动)使用的形成因素、电接口和/或协议兼容。在各实施例中,SSD利用零个或多个奇偶校验码、零个或多个RS码、零个或多个BCH码、零个或多个维特比(Viterbi)码或其它格子(trellis)码以及零个或多个LDPC码的各种组合。
图1A示出了SSD的实施例的选择的细节,该SSD包括SSD控制器,该SSD控制器提供用于NVM的混合粒度较高级别冗余。SSD控制器是用于管理非易失性存储,诸如经由NVM元件(例如,闪存存储器)来实现。SSD控制器100经由一个或多个外部接口110被通信地耦合至主机(未示出)。根据各实施例,外部接口110是下列中的一个或多个:SATA接口、SAS接口、PCIe接口、光纤通道接口、以太网接口(诸如10吉比特以太网)、在前接口中的任何一个的非标准版本、自定义接口或用于互连存储和/或通信和/或计算设备的任何其它类型的接口。例如,在某些实施例中,SSD控制器100包括SATA接口和PCIe接口。
SSD控制器100经由一个或多个设备接口190进一步被通信地耦合至NVM 199,该NVM 199包括一个或多个存储设备,诸如闪存设备192的一个或多个实例。根据各实施例,设备接口190是下列中的一个或多个:异步接口、同步接口、单数据率(SDR)接口、双倍数据率(DDR)接口、DRAM兼容DDR或DDR2同步接口、ONFI兼容接口(诸如ONFI 2.2或ONFI 3.0兼容接口)、触发模式兼容闪存接口、在前接口中的任何一个的非标准版本、自定义接口或用于连接到存储设备的任何其它类型的接口。
在某些实施例中,闪存设备192中的每一个具有一个或多个单独的闪存管芯194。根据闪存设备192中的特定一个的类型,可选地和/或选择性地并行访问特定闪存设备192中的多个闪存管芯194。闪存设备192仅表示能够通信地耦合至SSD控制器100的一种类型的存储设备。在各实施例中,任意类型的存储设备是可用的,诸如SLC NAND闪存存储器、MLCNAND闪存存储器、NOR闪存存储器、利用基于多晶硅或氮化硅技术的电荷存储单元的闪存存储器、基于二维或三维技术的闪存存储器、只读存储器、静态随机存取存储器、动态随机存取存储器、铁磁存储器、相变存储器、赛道(racetrack)存储器、ReRAM或任何其它类型的存储设备或存储介质。
根据各实施例,设备接口190被组织成:一个或多个总线,其中每一总线具有闪存设备192的一个或多个实例;一组或多组总线,其中每一总线具有闪存设备192的一个或多个实例,该一组或多组总线具有通常并行访问的成组总线;或闪存设备192的一个或多个实例到设备接口190上的任何其它组织。
在图1A中继续,SSD控制器100具有一个或多个模块,诸如主机接口111、数据处理121、缓冲器131、映射141、反复循环器151、ECC 161、设备接口逻辑191和CPU 171。在图1A中所示的特定模块和互连仅仅表示一个实施例,并且构想模块中的一些或全部以及未示出的附加模块的很多布置和互连。在第一示例中,在某些实施例中,存在两个或多个主机接口111以提供双进入端口。在第二示例中,在某些实施例中,数据处理121和/或ECC 161与缓冲器131结合。在第三示例中,在某些实施例中,主机接口111被直接地耦合至缓冲器131,并且数据处理121可选地和/或选择性地对存储在缓冲器131中的数据进行操作。在第四示例中,在某些实施例中,设备接口逻辑191被直接地耦合至缓冲器131,并且ECC 161可选地和/或选择性地对存储在缓冲器131中的数据进行操作。
主机接口111经由外部接口110发送和接收命令和/或数据,并且在某些实施例中经由标签跟踪113跟踪各个命令的进展。例如,这些命令包括规定要读取的地址(诸如LBA)和数据的量(诸如LBA量的数量,例如,扇区数)的读命令;作为响应,SSD提供读状态和/或读数据。再例如,这些命令包括规定要写入的地址(诸如LBA)和数据的量(诸如LBA量的数量,例如,扇区数)的写命令;作为响应,SSD提供写状态和/或请求写数据并且随后可选地提供写状态。又例如,这些命令包括规定不再需要被分配的一个或多个地址(诸如一个或多个LBA)的解除分配命令(例如,修剪命令);作为响应SSD因此修改映射并且可选地提供解除分配状态。在某些情景中,ATA兼容的修剪命令是示例性的解除分配命令。又例如,这些命令包括超级电容器测试命令或数据硬化成功查询;作为响应,SSD提供适当的状态。在某些实施例中,主机接口111与SATA协议兼容并且利用NCQ命令,使得主机接口111能够具有多达32个待决命令,每一个命令具有被表示为从0到31的数的唯一的标签。在某些实施例中,标签跟踪113被启用以将用于经由外部接口110接收的命令的外部标签与用于在由SSD控制器100处理期间跟踪命令的内部标签联系起来。
根据各实施例,下列中的一个或多个:数据处理121可选地和/或选择性地处理在缓冲器131和外部接口110之间发送的一些或全部数据;以及数据处理121可选地和/或选择性地处理存储在缓冲器131中的数据。在某些实施例中,数据处理121利用一个或多个引擎123来执行下列中的一个或多个:格式化、重新格式化、转码以及任何其它数据处理和/或操纵任务。
缓冲器131存储从设备接口190被送至外部接口110/从外部接口110被送至设备接口190的数据。在某些实施例中,缓冲器131此外存储系统数据,诸如被SSD控制器100用来管理闪存设备192的一个或多个实例的一些或全部映射表。在各实施例中,缓冲器131具有下列中的一个或多个:用于数据的暂时存储的存储器137、用于控制到和/或来自缓冲器131的数据的移动的DMA 133以及用于提供较高级别错误纠正和/或冗余功能以及其它数据移动和/或操纵功能。较高级别冗余功能的示例是类RAID能力(例如,RASIE),具有闪存设备级别(例如,多个闪存设备192)和/或代替盘级别的闪存管芯(例如,闪存管芯194)级别下的冗余。
根据各实施例,下列中的一个或多个:ECC 161可选地和/或选择性地处理在缓冲器131和设备接口190之间发送的一些或全部数据;以及ECC161可选地和/或选择性地处理存储在缓冲器131中的数据。在某些实施例中,ECC 161被用于提供较低级别错误纠正和/或冗余功能,诸如根据一个或多个ECC技术。在某些实施例中,ECC 161执行下列中的一个或多个:CRC码、汉明(hamming)码、RS码、BCH码、LDCP码、维特比码、格子码、硬判决码、软判决码、基于擦除的代码、任何错误检测和/或纠正码以及在前项的任意组合。在某些实施例中,ECC161包括一个或多个解码器(诸如LDCP解码器)。
设备接口逻辑191经由设备接口190控制闪存设备192的实例。设备接口逻辑191被启用以根据闪存设备192的协议将数据发送至闪存设备192的实例/从闪存设备192的实例发送数据。设备接口逻辑191包括调度193,用于经由设备接口190选择性地顺序控制闪存设备192的实例。例如,在某些实施例中,调度193被启用以使对闪存设备192的实例的操作排队,并且在闪存设备192(或闪存管芯194)的实例中的各个实例可用时选择性地发送对闪存设备192(或闪存管芯194)的实例中的各个实例的操作。
映射141在用在外部接口110上的数据寻址和用在设备接口190上的数据寻址之间转换,利用表143来将外部数据地址映射到NVM 199中的位置。例如,在某些实施例中,映射141经由通过表143所提供的映射将用在外部接口110上的LBA转换至以一个或多个闪存管芯194为目标的块和/或页面地址。对于自驱动制造或解除分配以来从未被写入的LBA,若读取LBA,则映射指向默认值以返回。例如,当处理解除分配命令时,映射被修改从而使得对应于经解除分配的LBA的条目指向默认值中的一个。在各实施例中,存在各种默认值,每一默认值具有相应的指针。此多个默认值使得将一些解除分配的LBA(诸如在第一范围中)解读为一个默认值,同时将其它解除分配的LBA(诸如在第二范围中)解读为另一默认值成为可能。在各实施例中,这些默认值由闪存存储器、硬件、固件、命令和/或原始参数和/或参量、可编程寄存器或其各种组合进行限定。
在某些实施例中,映射141利用表143来执行和/或查找在用在外部接口110上的地址和用在设备接口190上的数据寻址之间的翻译。根据各实施例,表143是下列中的一个或多个:一级映射、二级映射、多级映射、映射高速缓存、压缩的映射、从一个地址空间到另一地址空间的任意类型的映射以及前述项的任意组合。根据各实施例,表143包括下列中的一个或多个:静态随机存取存储器、动态随机存取存储器、NVM(诸如闪存存储器)、高速缓存存储器、片上存储器、片外存储器以及前述项的任意组合。
在某些实施例中,反复循环器151执行垃圾收集。例如,在某些实施例中,闪存设备192的实例包含在多个块是可重写的之前必须被擦除的多个块。反复循环器151被启用以诸如通过扫描由映射141所维持的映射来确定闪存设备192的实例的哪些部分是积极使用中(例如,分配的代替解除分配的),并且使得闪存设备192的实例的未使用(例如,解除分配的)部分可用以用于通过擦除未使用的部分来写入。在进一步实施例中,反复循环器151被启用以移动存储在闪存设备192的实例内的数据以使得闪存设备192的实例的较大连续部分可用以用于写入。
在某些实施例中,闪存设备192的实例被选择性地和/或动态地配置、管理和/或使用以具有一个或多个带,用于存储不同类型和/或性质的数据。这些带的数量、布置、尺寸和类型是动态可变的。例如,来自计算主机的数据被写入热(活跃)带中,而来自反复循环器151的数据被写入冷(较不活跃)带中。在某些使用场景中,如果计算主机写入长的顺序流,则热带的尺寸增长,然而如果计算主机做随机写入或较少写入,则冷带的尺寸增长。
CPU 171控制SSD控制器100的各种部分。CPU 171包括CPU核172。根据各实施例,CPU核172是一个或多个单核或多核处理器。在某些实施例中,CPU核172中的各个处理器核是多线程的。CPU核172包括指令和/或数据高速缓存和/或存储器。例如,指令存储器包含指令,用于使得CPU核172能够执行程序(例如,软件,有时称为固件)来控制SSD控制器100。在某些实施例中,由CPU核172所执行的固件中的一些或全部被存储在闪存设备192的实例上(如所示的,例如,如图1B中的NVM 199的固件106)。
在各实施例中,CPU 171进一步包括:命令管理173,用于当命令在进行中时经由外部接口110跟踪和控制所接收的命令;缓冲器管理175,用于控制缓冲器131的分配和使用;翻译管理177,用于控制映射141;一致性管理179,用于控制数据寻址的一致性并且避免诸如在外部数据访问和回收数据访问之间的冲突;设备管理181,用于控制设备接口逻辑191;身份管理182,用于控制标识信息的修改和通信;以及可选地其它管理单元。根据各实施例,由CPU 171所执行的管理功能中的没有一个、任何一个或全部由硬件、软件(诸如在CPU核172或经由外部接口110连接的主机上执行的固件)或其任意组合来控制和/或管理。
在某些实施例中,CPU 171被启用以执行其它管理任务,诸如下列中的一个或多个:收集和/或报告性能统计;实现SMART;控制电力排序、控制和/或监视和/或调节电力消耗;响应于电源故障;控制和/或监视和/或调节时钟速率;以及其它管理任务。
各实施例包括计算主机闪存控制器,该计算主机闪存控制器类似于SSD控制器100并且与诸如经由主机接口111和/或外部接口110的适应的利用各计算主机的操作兼容。各计算主机包括下列中的一个或任意组合:计算机、工作站计算机、服务器计算机、存储服务器、SAN、NAS设备、DAS设备、存储器具、PC、膝上型计算机、笔记本计算机、上网本计算机、平板设备或计算机、超极本计算机、电子阅读设备(诸如电子阅读器)、PDA、导航系统、(手持式)GPS设备、汽车控制系统、汽车媒体控制系统或计算机、打印机、复印机或传真机或一体化设备、POS设备、收银机、媒体播放器、电视、媒体记录器、DVR、数码相机、蜂窝手持机、无绳电话手持机和电子游戏。
在各实施例中,SSD控制器(或计算主机闪存控制器)的全部或任意部分在单个IC、多管芯IC的单个管芯、多管芯IC的多个晶粒或多个IC上实现。例如,缓冲器131在与SSD控制器100的其它元件相同的管芯上实现。再例如,缓冲器131在与SSD控制器100的其它元件不同的管芯上实现。
图1B示出了包括图1A的SSD的一个或多个实例的系统的各实施例的选择的细节。SSD 101包括经由设备接口190耦合至NVM 199的SSD控制器100。此图示出了各种类别的实施例:单个SSD直接地耦合至主机;多个SSD,每一SSD经由相应的外部接口分别直接地耦合至主机;以及一个或多个SSD经由各种互连元件直接地耦合至主机。
作为单个SSD直接地耦合至主机的示例性实施例,SSD 101的一个实例经由外部接口110被直接地耦合至主机102(例如,开关/构造/中间控制器103被省略、绕过或穿过)。作为多个SSD中的每一个经由相应的外部接口直接地耦合至主机的示例性实施例,SSD 101的多个实例中的每一个经由外部接口110的相应的实例被分别直接地耦合至主机102(例如,开关/构造/中间控制器103被省略、绕过或穿过)。作为一个或多个SSD经由各种互连元件直接地耦合至主机的示例性实施例,SSD 101的一个或多个实例中的每一个被分别地间接地耦合至主机102。每一间接的耦合是经由耦合至开关/构造/中间控制器103的外部接口110的相应的实例,以及耦合至主机102的中间接口104。
包括开关/构造/中间控制器103的实施例中的一些还包括经由存储器接口180耦合并且可由SSD访问的卡存储器112C。在各实施例中,SSD中的一个或多个、开关/构造/中间控制器和/或卡存储器被包括在物理可识别模块、卡或可插式元件(例如,I/O卡116)上。在某些实施例中,SSD101(或其变型)对应于被耦合至作为主机102操作的启动器的SAS驱动或SATA驱动。
主机102被启用以执行主机软件115的各实施例,诸如OS 105、驱动器107、应用109和多设备管理软件114的各种组合。点线箭头107D表示主机软件←→I/O设备通信,例如,至/从SSD 101的实例中的一个或多个发送/接收以及从/至经由驱动器107的OS 105、驱动器107和经由驱动器107或直接地作为VF的应用109中的任意一个或多个发送/接收的数据。
OS 105包括驱动器(由驱动器107概念性地示出)和/或被启用以利用驱动器(由驱动器107概念性地示出)进行操作以用于与SSD进行对接。Windows的各种版本(例如,95、98、ME、NT、XP、2000、Server、Vista和7)、Linux的各种版本(例如,Red Hat、Debian和Ubuntu)和MacOS的各种版本(例如,8、9和X)是OS 105的示例。在各种实施例中,驱动器是利用标准界面和/或协议(诸如SATA、AHCI或NVM Express)可操作的标准的和/或通用的驱动器(有时术语表达为“压缩打包的”或“预安装的”)或是可选地定制的和/或供应商专用的以使得命令的使用能够针对SSD 101。一些驱动和/或驱动器具有穿过(pass-through)模式以使得应用级别程序(诸如应用109)能够经由优化的NAND访问(有时术语表达为ONA)或直接的NAND访问(有时术语表达为DNA)技术将命令直接地传送至SSD 101,使得即使在利用通用驱动器的情况下定制应用能够针对SSD 101使用命令。ONA技术包括下列中的一个或多个:非标准修改器(暗示)的使用;供应商特定的命令的使用;非标准统计的通信,诸如根据压缩性的实际NVM使用;以及其它技术。DNA技术包括下列中的一个或多个:提供对NVM的未映射的读、写和/或擦除访问的非标准或供应商特定命令的使用;诸如通过绕过I/O设备否则会做的数据的格式化提供对NVM的更直接访问的非标准或供应商特定命令的使用;以及其它技术。驱动器的示例是:没有ONA或DNA支持的驱动器、ONA启用的驱动器、DNA启用的驱动器和ONA/DNA启用的驱动器。驱动器的进一步示例是:供应商提供的、供应商开发的和/或开发商增强的驱动器以及客户提供的、客户开发的和/或客户增强的驱动器。
应用级别程序的示例是:没有ONA或DNA支持的应用、ONA启用的应用、DNA启用的应用和ONA/DNA启用的应用。点线箭头109D表示应用←→I/O设备通信(例如,经由驱动器绕过或经由用于应用的VF绕过),例如,与SSD通信的ONA启用的应用和ONA启用的驱动器,诸如在没有应用的情况下将OS用作媒介。点线箭头109V表示应用←→I/O设备通信(例如,经由用于应用的VF绕过),例如,与SSD通信的DNA启用的应用和DNA启用的驱动器,诸如在没有应用的情况下将OS或驱动器用作媒介。
在某些实施例中,NVM 199的一个或多个部分被用于固件存储,例如固件106。固件存储包括一个或多个固件图像(或其部分)。例如,固件图像具有例如由SSD控制器100的CPU核172执行的固件的一个或多个图像。再例如,固件图像具有例如在固件执行期间被CPU核引用的常量、参数值和NVM设备信息的一个或多个图像。固件的图像例如对应于当前的固件图像以及零或多个先前(相对于固件更新)固件图像。在各实施例中,固件提供通用、标准、ONA和/或DNA操作模式。在某些实施例中,固件操作模式中的一个或多个经由可选地由驱动器通信和/或提供的密钥或各种软件技术来启用(例如,一个或多个API被“解锁”)。
在某些实施例中缺乏开关/构造/中间控制器,SSD经由外部接口110被直接地耦合至主机。在各实施例中,SSD控制器100经由一个或多个中间级别的其它控制器(诸如RAID控制器)耦合至主机。在某些实施例中,SSD 101(或其变型)对应于SAS驱动或SATA驱动并且切换/构造/中间控制器103对应于扩展器,该扩展器又耦合至启动器,或替代地,开关/构造/中间控制器103对应于桥,该桥经由扩展器间接地耦合至启动器。在某些实施例中,开关/构造/中间控制器103包括一个或多个PCIe开关和/或构造。
在各实施例中,诸如利用主机102作为计算主机(例如,计算机、工作站计算机、服务器计算机、存储服务器、SAN、NAS设备、DAS设备、存储器具、PC、膝上型计算机、笔记本计算机和/或上网本计算机)的实施例中的一些,计算主机可选地能够与一个或多个本地和/或远程服务器(例如,可选的服务器118)通信(例如,经由可选的I/O&存储设备/资源117和可选的LAN/WAN 119)。例如,此通信使得SSD 101元件中的任何一个或多个的本地和/或远程访问、管理和/或使用成为可能。在某些实施例中,此通信是完全地或部分地经由以太网。在某些实施例中,此通信是完全地或部分地经由光纤通道。在各实施例中,LAN/WAN 119表示一个或多个局域网和/或广域网,诸如服务器群中的网络、耦合服务器群的网络、大都市区域网络和因特网。
在各实施例中,SSD控制器和/或计算主机闪存控制器结合一个或多个NVM一起被实现为非易失性存储部件,诸如USB存储部件、CF存储部件、MMC存储部件、eMMC存储部件、迅雷存储部件、UFS存储部件、SD存储部件、记忆棒存储部件和xD图片卡存储部件。
在各实施例中,SSD控制器(或计算主机闪存控制器)的全部或任意部分,或其功能在将要与控制器耦合的主机(例如,图1B中的主机102)中实现。在各实施例中,SSD控制器(或计算主机闪存控制器)的全部或任意部分,或其功能经由硬件(例如,逻辑电路)、软件和/或固件(例如,驱动器软件和/或SSD控制固件)或其任意组合来实现。例如,ECC单元(诸如类似于图1A的ECC 161和/或ECC-X 135)的功能或与ECC单元(诸如类似于图1A的ECC 161和/或ECC-X 135)相关联的功能部分地经由主机上的软件并且部分地经由SSD控制器中的固件和硬件的组合来实现。再例如,反复循环器单元(诸如类似于图1A的反复循环器151)的功能或与反复循环器单元(诸如类似于图1A的反复循环器151)相关联的功能部分地经由主机上的软件并且部分地经由计算主机闪存控制器中的硬件来实现。
映射操作
图2示出了映射LBA的LPN部分的实施例的选择的细节。在某些实施例中,读单元是独立地可读的NVM的最好的粒度,诸如NVM的一个页面的一部分。在进一步实施例中,读单元对应于(较低级别)纠错码的校验位(有时术语表达为冗余)连同由此校验位保护的所有数据。例如,图1A的ECC 161经由校验位(诸如经由LDPC码)实现错误纠正,并且读单元对应于除了由LDPC编码位保护的数据位之外的实现LDPC码的编码位。
在某些实施例中,映射141诸如经由表143(如图1A中所示)将LBA 211的LPN 213部分映射到LPN的映射信息221。LPN的映射信息(诸如LPN的映射信息221)有时被术语表达为映射条目。映射141被称为将LPN与相应的映射条目联系起来。在各实施例中,映射是经由一个或多个关联的查找、经由一个或多个非关联的查找和/或经由一个或多个其它技术。
在某些实施例中,SSD控制器100维持潜在地和/或积极地使用的每一LPN的一个映射条目。
在某些实施例中,LPN的映射信息221包括相应的读单元地址223和读单元中的长度225。在某些实施例中,长度和/或跨度例如在读单元中的长度225的全部或任意部分中诸如通过将长度存储为距跨度的偏移被存储为编码的。在进一步实施例中,第一LPN与第一映射条目相关联,第二LPN(不同于第一LPN,但是,引用与由第一LPN引用的逻辑页面相同大小的逻辑页面)与第二映射条目相关联,并且第一映射条目的读单位的相应的长度不同于第二映射条目的读单位的相应的长度。
在各实施例中,在相同的时间点,第一LPN与第一映射条目相关联,第二LPN(不同于第一LPN)与第二映射条目相关联,并且第一映射条目的相应的读单元地址与第二映射条目的相应的读单元地址相同。在进一步实施例中,与第一LPN相关联的数据和与第二LPN相关联的数据都被存储在NVM 199中的相同设备的相同物理页中。
根据各实施例,读单元地址223与下列中的一个或多个相关联:NVM中的起始地址;NVM中的结束地址;在前项中的任何一个的偏移;以及用于标识与LPN 213相关联的NVM的一部分的任何其它技术。
图3示出了在读单元地址处访问NVM以产生被组织为各读单元(全体地具有以读单元的量进行测量的长度)的读数据的实施例的选择的细节。根据各实施例,第一读单元313是下列中的一个或多个:在NVM的地址空间中具有最低地址的读数据311的读单元中的一个;读单元中的固定的一个;读单元中的任意一个;读单元中的可变的一个;以及由任何其它技术选择的读单元中的一个。在各实施例中,SSD控制器100被启用以访问NVM 199并且通过读取不超过由读单元中的长度225所规定的多个读单元来产生读数据311。
图4A示出了如读单元401A的读单元(诸如图3的读单元313或315)的实施例的选择的细节。在各实施例和/或使用场景中,头部(Header)1411A到头部N 419A是连续的,并且由头部中的每一个所标识的(诸如经由相应的偏移)相应的数据区域是连续的,跟随着头部中的最后一个。这些数据区域共同地形成数据字节421A。这些数据区域以匹配存储这些头部的位置顺序的位置顺序进行存储。例如,考虑到第一头部在读单元的开始处,使得第二头部和第三头部连续地跟随第一头部。第一数据区域(由第一头部中的第一偏移标识)连续地跟随第三头部。第二数据区域(由第二头部中的第二偏移标识)连续地跟随第一数据区域。类似地,第三数据区域(由第三头部标识)连续地跟随第二数据区域。
图4B示出了如读单元401B的读单元(诸如图3的读单元313或315)的另一实施例的选择的细节。在各实施例和/或使用场景中,头部标记(HM)410B是指示若干下面的连续头部(头部1411B、头部2412B.…..头部N 419B)的可选的初始字段(诸如一个字节字段)。数据区域(数据字节421B、数据字节422B……数据字节429B)由头部(头部1411B、头部2412B……头部N 419B)分别地进行标识并且以与存储这些头部的位置顺序相反的位置顺序进行存储。头部在读单元的起始处开始,然而相应的数据区域在读单元的结束处开始。在一些实施例中,在数据区域内的数据字节(例如,数据字节421B、数据字节422B……数据字节429B)以正序(字节顺序匹配位置顺序)进行布置,然而在其它实施例中,数据字节以倒序(字节顺序相对于位置顺序反向)进行布置。在某些实施例中,在头部和数据字节以相同的位置顺序进行存储(例如,如图4A中所示)的读单元中使用头部标记。
在某些实施例中,可选的填充字节431A(或431B)是根据与特定LPN相关联的数据的粒度。例如,在某些实施例中,如果在存储与全部除了头部1411A到头部N 419A(或头部1411B、头部2412B……头部N419B)的最后一个有关的数据之后,数据字节421A(或共同地数据字节421B、数据字节422B……数据字节429B)已小于剩余空间的固定量,诸如8字节,则与最后的头部相关联的LPN的数据在随后的读单元中开始。在进一步实施例中,在最后的头部中的特定偏移值(例如,所有的)指示与最后的头部相关联的LPN的数据在随后的读单元中开始。
图5示出了具有若干字段的头部(诸如图4A的头部1411A到头部N 419A或图4B的头部1411B到头部419B中的任何一个)的实施例的选择的细节。在某些实施例中,头部是固定长度的(例如,每一头部是相同数量的字节长的)。头部501包括字段类型511、最后指示器513、标记515、LPN 517、长度519和偏移521。类型字段标识数据字节的类别。例如,类型字段指示数据字节的类别是主机数据(例如,逻辑页面数据)或系统数据(例如,映射信息或检查点信息)中的一个。最后字段指示此头部是在数据字节之前的最后的头部。在具有头部标记的一些实施例中,最后字段可选地被省略。LPN字段是与头部相关联的LPN。LPN字段通过例如搜索头部中具有匹配特定LPN的LPN字段的那个,能够解析头部以确定与特定LPN相关联的头部中的特定一个。长度字段是数据字节的以字节为单位的长度(例如,在与头部501相关联的数据字节421A中存在多少字节的数据)。在某些实施例中,偏移字段中的偏移根据特定粒度(例如,8字节粒度)进行四舍五入(rounded)。
在各实施例中,与特定LPN相关联的一些或全部信息被存储在与特定LPN相关联的映射条目、与特定LPN相关联的头部或两者中。例如,在某些实施例中,长度519的一些或全部被存储在映射条目中而不是头部中。
图6示出了在逻辑片和/或部分中被管理的多个NVM设备(例如,一个或多个闪存管芯和/或闪存芯片)的块、页面和读单元的实施例的选择的细节。此管理功能包括读、回收、擦除、编程/写和其它管理功能中的任意一个或多个。逻辑片和/或部分有时被称为R-块(R-block)。此图示出了具有66个闪存管芯的实施例。这些闪存管芯中的三个被明确地示出(闪存管芯610.65、610.1和610.0)并且这些闪存管芯中的63个被隐含地示出(610.64......610.2)。
闪存管芯中的每一个(诸如闪存管芯610.65......610.1和610.0中的任意一个)提供被组织为块(诸如闪存管芯610.65的块610.65BB......610.65B1和610.65B0;闪存管芯610.0的块610.0BB......610.0B1和610.0B0;等等)的存储。这些块又包括页面(诸如块610.65B0的页面610.65PP......610.65P1和610.65P0;块610.0B0的页面610.0PP......610.0P1和610.0P0;等等)。这些页面又包括读单元(诸如页面610.65P0的读单元610.65RR......610.65R1和610.65R0;页面610.0P0的读单元610.0RR......610.0R1和610.0R0;等等)。
在某些实施例中,每一闪存管芯包括整数个块(例如,N个块)并且块是擦除的最小量。在某些实施例中,每一块包括整数个页面并且页面是写的最小量。根据各实施例,下列中的一个或多个:读单元是读和错误纠正的最小量;每一页面包括整数个读单元;两个或多个页面的关联组包括整数个读单元;以及读单元可选地和/或选择性地跨越页面边界。
在各实施例中,各种NVM管理功能(例如,读、回收、擦除和/或编程/写)是以R-块为单位执行的。R-块被例示为跨闪存存储器的所有管芯的逻辑片或部分。例如,在具有R个闪存管芯,每一闪存管芯具有N个块的闪存存储器中,对于总的N个R-块,每一R-块是合起来的来自闪存管芯中的每一个的第i个块。再例如,在具有R个闪存管芯,每一个闪存管芯具有N个块的闪存存储器中,对于总的N/2个R-块,每一R-块是来自闪存管芯中的每一个的第i个块和第i+1个块。又例如,在具有多个双平面设备的闪存存储器中,每一R-块是来自双平面设备中的每一个的第i个偶数块和第i个奇数块。
在具有成对地或以其它关联组地看作形成R-块的一部分的块的各实施例中,来自块的关联组中的每一块的相应的页面也被看作至少用于写入的单元,形成了较大的多块页面。例如,继续前述的双平面示例,偶数块中的特定一个的第一页面和奇数块中的相关联的一个的第一页面被看作用于写入的单元,并且可选地和/或选择性地被看作用于读取的单元。类似地,特定偶数块的第二页面和相关联的奇数块的第二页面被看作一单元。根据各实施例,如本文中所使用的NVM的页面指下列中的一个或多个:NVM的单个页面;NVM的多块页面;可选地和/或选择性地被看作用于读取的一个或多个单独页面的用于写入的NVM的多块页面;以及NVM的页面的任何其它分组或关联。
此图示出了多个说明性的R-框,它们中的三个明确地示出(660.0、660.1和660.R)。每一说明性R-块是合起来的来自闪存管芯中的每一个的第i个块。例如,R-块660.0是来自闪存管芯610.65的块610.65B0、来自闪存管芯610.64的块0(未明确地示出)以及以此类推到闪存管芯610.1的块610.1B0,以及闪存管芯610.0的块610.0B0。由于每一闪存管芯存在N个块,因此存在总的N个R-块(R-块660.R……R-块660.1和R-块660.0)。
R-块的另一示例是合起来的来自闪存管芯中的每一个的第i个块和第i+1个块(例如,来自闪存管芯610.65的块610.65B0和610.65B1、来自闪存管芯610.64的块0和1以及以此类推到来自闪存管芯610.1的块610.1B0和610.1B1,以及来自闪存管芯610.0的块610.0B0和610.0B1)。因此存在N/2个R-块,如果在每一闪存管芯中存在N个块的话。R-块的又一示例是来自多个双平面设备中的每一个的第i个偶数和奇数块。构想用于作为R-块管理的闪存管芯块的其它布置,包括在虚拟和物理块地址之间映射以确保R-块具有来自每一管芯的一个块,即使一些块是不可操作的。在各实施例中,每一闪存管芯中的N个块中的一些被用作备件从而使得在虚拟和物理块地址之间的映射具有备用(否则不使用的)块来代替R-块中的多个块中的有缺陷的块。
在各实施例中,在闪存管芯中的信息的读和/或写是根据顺序(诸如‘读单元优先’顺序或‘页面优先’顺序)来执行的。用于图中所示的读单元的读单元优先顺序的示例以读单元610.0R0开始,接着是610.1R0......610.65R0、610.0R1、610.1R1......610.65R1,并且以此类推,以610.65RR结束。用于图中所示的读单元的页面优先顺序的示例以读单元610.0R0开始,接着是610.0R1......610.0RR、610.1R0、610.1R1......610.1RR......610.65R0、610.65R1,并且以此类推,以610.65RR结束。
在各实施例中,在R-块内的写入和/或剥离(striping)顺序是跨所有设备(例如,最低到最高编号的设备,如由剥离方向600概念地建议的)的页面(例如,最低的到最高的)优先,接着下一最高页面(跨所有设备),并且以此类推,贯穿R-块的最后页面而继续。具体关于R-块660.0,示例性顺序以页面610.0P0(闪存管芯610.0的第一个块中的第一个页面)开始,接着是页面610.1P0(闪存管芯610.1的第一个块中的第一个页面),并且以此类推继续至页面610.65P0(闪存管芯610.65的第一个块并且R-块660.0的最后一个块中的第一个页面)。此示例性顺序以页面610.0P1(闪存管芯610.0的第一个块中的第二个页面)继续,接着是页面610.1P1(闪存管芯610.1的第一个块中的第二个页面),并且以此类推继续至页面610.65P1(闪存管芯610.65的第一个块中的第二个页面)。此示例以相同的顺序继续。此示例性顺序以页面610.0PP(闪存管芯610.0的第一个块中的最后一个页面)完成,接着是页面610.1PP(闪存管芯610.1的第一个块中的最后一个页面),并且以此类推以页面610.65PP(闪存管芯610.65的第一个块中的最后一个页面,并且R-块660.0的最后一个块中的最后一个页面)结束。
在各实施例中,闪存管芯610.65……610.1和610.0对应于图1A的一个或多个单独的闪存管芯194中的相应的闪存管芯。在某些实施例中,闪存管芯610.65……610.1和610.0是少于全部NVM 199的NVM 199的一部分。例如,在各实施例中,在多组闪存管芯上数据被独立地剥离,并且多组闪存管芯中的每一个可被独立地访问。
较高级别冗余技术
图7示出了较高级别冗余技术的各实施例的选择的细节。闪存设备720包括64个闪存管芯(如在图6中明确地和隐含地示出的闪存管芯610.63、610.62、610.61......610.0)并且经由接口通道730通信。额外的闪存设备740包括多达两个闪存管芯(如在图6中明确地和隐含地示出的闪存管芯610.65和610.64)并且经由额外的接口通道750通信。闪存管芯提供存储子系统(诸如SSD中的NVM)中的用于较高级别冗余信息的存储和数据存储(例如,用户数据和/或用户自由空间)。(在冗余信息和数据存储的背景中的‘用户数据’的示例包括所有数据,除了存储在闪存存储器上以供后期恢复的冗余信息,诸如操作系统数据、应用数据、SSD管理数据等等。)较高级别冗余能够例如从一个或多个闪存管芯的一个或多个部分的间歇性或永久性故障(诸如为读操作提供纠错数据(例如,经由较低级别ECC功能)的故障或适当地完成写操作的故障)恢复。
例如,每一闪存管芯(或替代地每一块或每一块内的每一页面)在硅独立元素冗余阵列(RASIE)的背景中进行操作。如果在特定闪存管芯中检测到故障(例如,归因于特定管芯的块的一部分的ECC不可纠正的读错误),则作为响应,存储在闪存管芯的其它部分的冗余信息被用于确定将已由特定管芯提供的信息。在某些实施例和/或使用场景中,存储足够的冗余信息以能够从一个闪存管芯内的一个故障恢复(在单操作期间)。在能够从单个故障恢复的模式中的操作在某些实施例中包括分配和管理等同于一个闪存管芯的空间以用于较高级别冗余信息,并且被术语表达为‘RASIE-1’。在能够从两个故障恢复的模式中的操作在某些实施例中包括分配和管理等同于两个闪存管芯的空间以用于较高级别冗余信息,并且被术语表达为‘RASIE-2’。在能够从三个故障恢复的模式中的操作在某些实施例中包括分配和管理等同于三个闪存管芯的空间以用于较高级别冗余信息,并且被术语表达为‘RASIE-3’。
在某些实施例和/或使用场景中,管理管芯级别故障是目标,并且在管芯之中传播信息被执行。例如,较高级别冗余信息被存储在仅特别分配给较高级别冗余信息的一个或多个管芯中。在某些实施例和/或使用场景中,管理块级别故障是目标,并且在管芯内的块之中传播信息被执行。例如,较高级别冗余信息被存储在分配给较高级别冗余信息的一个或多个块中,此分配不考虑这些块是哪个特定管芯的一部分。在某些实施例和/或使用场景中,管理特定实体级别故障包括传播信息从而使得不超过N个元素(例如,RASIE-1的1和RASIE-2的2)在特定实体的任何一个中。实体的示例包括(封装的)设备、管芯、R-块、块、R-页面(本文中其它地方描述)、页面、与字线相关联的单元格(cells)以及前述项中的一个或多个。
较高级别冗余信息根据写入闪存管芯的(用户)数据进行计算和写,并因此是可用的以在检测到故障时提供信息。在各实施例中,较高级别冗余信息在与较高级别冗余信息相关联的(用户)数据的写入之前、之后或在相对于与较高级别冗余信息相关联的(用户)数据的写入无特定时间顺序中被写入闪存管芯。
此图示出了RASIE操作模式的各实施例,如在下表中所总结的。
更具体地,在RASIE-1模式中,等同于一个管芯的空间被分配给较高级别冗余信息。在RASIE-1模式1-0中,额外闪存设备740未使用,因为较高级别冗余信息被存储在闪存设备720的一个管芯(例如,闪存管芯610.63)中,留下63个管芯(闪存管芯610.62......610.0)可用于数据存储(例如,用户数据和/或用户自由空间)。在RASIE-1模式1-1中,额外闪存设备740的一个管芯被使用(例如,闪存管芯610.64),留下闪存设备720的全部(64个管芯)可用于数据存储。
在RASIE-2模式中,等同于两个管芯的空间被分配给较高级别冗余信息。在RASIE-2模式2-0中,额外闪存设备740未使用,因为较高级别冗余信息被存储在闪存设备720的两个管芯(例如,闪存管芯610.63和闪存管芯610.62)中,留下62个管芯(闪存管芯610.61......610.0)可用于数据存储。在RASIE-2模式2-1中,额外闪存设备740的一个管芯被使用(例如,闪存管芯610.64),因为较高级别冗余信息被部分地存储在闪存设备720的一个管芯(例如,闪存管芯610.63)中,留下63个管芯(闪存管芯610.62......610.0)可用于数据存储。在RASIE-2模式2-2中,额外闪存设备740的两个管芯被使用(例如,闪存管芯610.65和闪存管芯610.64),留下闪存设备720的全部(64个管芯)可用于数据存储。
在某些实施例中,在所有使用场景中未被使用的管芯是未填充的(unpopulated)。例如,在仅在RASIE 2-0模式和RASIE 1-0模式(但不在其它RASIE模式中)中可操作的系统中,额外闪存设备740是未填充的。
在某些实施例中,较高级别冗余信息被完全地存储在“专用的”管芯(例如,RASIE-1模式1-0中的闪存管芯610.63或RASIE-2模式2-2中的闪存管芯610.65和闪存管芯610.64)中。在其它实施例中,较高级别冗余信息被存储在管芯的任何一个中,因此例如,在RASIE-1模式1-0中,闪存管芯610.62被用于较高级别冗余信息,而闪存管芯610.63和闪存管芯610.61......610.0被用于数据存储。在某些实施例和/或使用场景中,较高级别冗余信息随着时间被存储在不同的管芯(和/或其部分)中,因此例如,在第一时间周期中,第一闪存管芯保持较高级别冗余信息而在第二时间周期中,第二闪存管芯保持较高级别冗余信息。
在各实施例中,取决于多少闪存管芯是可用的,存在多个RASIE 1-0模式(和多个RASIE 2-0模式)。例如,在第一个RASIE 1-0模式(如在上面表中所示)中,闪存管芯610.63存储较高级别冗余信息,并且闪存管芯610.62……610.0可用于数据存储。在第二个RASIE1-0模式中,闪存管芯610.63不再是可用的,闪存管芯610.62存储较高级别冗余信息,并且闪存管芯610.61……610.0可用于数据存储,减少了一个管芯的可用数据存储量。其中先前可用于数据存储的管芯(或其任意部分)由于此管芯(或此部分)用于较高级别冗余信息而不再可用于数据存储的RASIE模式有时被称为减少容量RASIE模式。
在某些实施例中,利用与由较高级别冗余信息保护的用户数据相同和/或相似的较低级别冗余和/或误差纠正编码方案来存储较高级别冗余信息。利用较低级别冗余和/或错误纠正方案来保护较高级别冗余信息能够以确定用户数据中的不可纠正的较低级别错误的相同和/或相似的方式来确定在较高级别冗余信息中是否存在不可纠正的错误。
在某些实施例中,较高级别冗余信息针对数据的不同部分被存储在不同的管芯中。例如,在其中闪存管芯以R-块进行管理的某些实施例,较高级别冗余信息针对不同的R-块被存储在不同的闪存管芯中。例如,对于包括闪存管芯610.0的块0的R-块的较高级别冗余信息被存储在闪存管芯610.0中,而对于包括闪存管芯610.0的块1的R-块的较高级别冗余信息被存储在闪存管芯610.1中,并且以此类推。在某些实施例,诸如其中闪存管芯以R-块进行管理的一些实施例中,在已知和/或写入较高级别冗余信息依赖的数据之后,较高级别冗余信息被写入。
在某些使用场景中,NVM元件的一个或多个部分(例如,设备的块,诸如图6的闪存设备610.0的块610.0BB)是不可操作的或在操作期间变为不可操作的。在某些实施例中,不可操作部分经由虚拟和物理块地址(例如,经由通过图1A的映射141和/或表143执行的处理)被映射出。替代地,不可操作部分被跳过(而不是明确地映射出)。在基于R-块的某些实施例中,此跳过导致R-块中的一些具有不同数量的块。例如,如果块610.0B0是有缺陷的和不可用的,则R-块660.0比R-块660.1少了一个块。较高级别冗余信息被写在(每一R-块)可变位置中,该可变位置例如是每一R-块的最后一个块。
在各实施例中,图7的一个或多个元件对应于图1A的一个或多个元件。例如,闪存设备720和额外闪存设备740共同地对应于NVM 199,并且接口通道730和额外接口通道750共同地对应于设备接口190。再例如,闪存管芯610.65......610.0共同地对应于闪存管芯194的实例。又例如,闪存设备720和/或额外闪存设备740的闪存设备中的一个或多个对应于闪存设备192的实例中的一个或多个。在各实施例中,图1A中的一个或多个元件根据本文中所描述的RASIE操作模式来管理较高级别冗余信息和/或至少部分地基于此较高级别冗余信息来恢复用户数据。例如,CPU171的软件执行能力中的一部分被用于根据各种RASIE操作模式来管理较高级别冗余信息的计算。再例如,数据处理121和/或ECC-X 135包括致力于和/或专用于根据各种RASIE操作模式的较高级别冗余信息的计算和/或用户数据的恢复的硬件元件。又例如,ECC 161检测闪存管芯的一部分的ECC不可纠正的(较低级别的)读错误,并且ECC-X 135检测RASIE(较高级别)读错误和/或使得其纠正成为可能。
在各实施例中,接口通道730不同地具有一、四、八或16个通道,并且额外接口通道750不同地具有一个或两个通道。在各实施例中,闪存设备720被实现为一、两、四、八或16个设备,每一设备分别地具有64、32、16、八和四个闪存管芯。在各实施例中,额外闪存设备740被实现为具有一个或两个管芯的一个设备或被实现为每一设备具有一个管芯的两个设备。在某些实施例中,额外闪存设备740的闪存管芯被实现在也实现闪存设备720的闪存管芯的设备中。例如,一个闪存设备实现66个闪存管芯(闪存管芯610.65......610.0)。再例如,两个闪存设备各实现33个闪存管芯,例如在第一个闪存设备(闪存管芯610.65......610.33)以及在第二个闪存设备中(闪存管芯610.32......610.0)。构想闪存管芯和闪存设备的其它布置。在使得额外闪存设备740实现在也实现闪存设备720的闪存管芯的设备中的某些实施例中,闪存管芯经由共享的接口通道,或替代地经由专用于闪存管芯中的特定闪存管芯(或组)的接口通道来通信。虽然闪存设备720和额外闪存设备740利用特定数量的闪存管芯(分别地2和64)而示出,但是构想了其它实施例,诸如闪存设备720具有2、4、8、16、32或128个闪存管芯和/或额外闪存设备740具有0、1或4个闪存管芯。
图8示出了利用RASIE的动态较高级别冗余模式管理(诸如在由通过图6和/或图7所示的各实施例启用的RASIE模式之间动态地切换)的实施例的选择的细节。在某些实施例和/或使用场景中,提供一种从容的退化的形式,其中存储子系统(例如SSD)从在第一较高级别冗余模式中操作被动态地转换到在第二较高级别冗余模式中操作。此转换是响应于故障(诸如整个闪存管芯或其一个或多个部分,或对其的操作(诸如读或写操作)的永久性或间歇性故障)的检测。根据各实施例,此转换是下列中的一个或多个:SSD的全局;在SSD的一个或多个子集上执行;以及在SSD的一个或多个R-块、块和/或页面上执行。例如,如果存储RASIE-2信息的NVM设备中的一个的特定块在编程期间失效,则包含此特定(失效的)块的R-块的后续操作转换至不同的较高级别冗余操作(例如,RASIE-1模式),而在SSD中的其它R-块不受影响并且继续在RASIE-2模式中操作。
关于图8,处理以根据第一较高级别冗余模式(在第一较高级别冗余模式中操作802)在闪存管芯中布置的较高级别冗余信息和数据存储(例如,用户数据和/或用户自由空间)开始。流程接着进行至确定故障是否已经被检测到(故障?803),诸如较低级别的不可纠正的读错误或写/程序故障。如果没有检测到故障,则流程进行回到继续在第一较高级别冗余模式中的操作。如果故障已被检测到,则流程进行至从在第一较高级别冗余模式中操作切换到在第二较高级别冗余模式中操作(动态地转换操作模式809)。
此切换以(可选地)减少可用于数据存储的空间(减少自由空间804)开始,以解释此故障。如果第二较高级别冗余模式使用比第一较高级别冗余模式足够少的较高级别冗余信息,则可用空间的减少被省略。此切换以根据第二较高级别冗余模式重组数据存储(重新安排数据存储805)继续。此重组包括可选地将所有的用户数据和/或用户自由空间从发生故障的闪存管芯移动到闪存管芯中的另一个(在某些实施例中,用户自由空间移动是通过指针和/或其它数据结构元件的操纵来完成的)。此切换进一步以经由第一较高级别冗余模式的较高级别冗余信息选择性地恢复(如果可能的话)被存储在发生故障的闪存管芯中的任何用户数据,并且根据第二较高级别冗余模式将经恢复的用户数据写入闪存管芯中的另一个(恢复/存储失效的用户数据806)继续。如果此故障是写/程序故障,则此恢复被省略。此切换进一步以根据第二较高级别冗余模式可选地计算和写入闪存管芯较高级别冗余信息(确定/存储经修正的较高级别冗余信息807)继续。如果第二较高级别冗余模式利用先前由于以第一较高级别冗余模式操作而处于适当的位置的较高级别冗余信息是可操作的,则此计算和写入被省略。接着操作在第二较高级别冗余模式中开始(在第二较高级别冗余模式中操作808)。
故障检测(故障?803)是经由下列中的一个或多个:较低级别冗余和/或错误纠正(例如,根据一个或多个ECC技术)、较高级别冗余和/或错误纠正(例如,根据一个或多个RASIE技术)以及由闪存管芯或其部分中的一个或多个所报告的出故障状态。例如,特定闪存管芯的特定部分(例如,R-块、块、R-页面、页面、读单元或与字线相关联的单元格)内的读的多于阈值数量的较低级别错误纠正可选地和/或有条件地导致此特定闪存管芯(或此特定部分)被看作失效的并且较高级别冗余模式切换被执行从而使得失效的闪存管芯(或部分)不再被使用。再例如,如果较高级别错误纠正失效,则闪存管芯中的适当的一个(或其部分)被看作失效的并且较高级别冗余模式切换被执行从而使得失效的闪存管芯(或部分)不再被使用。又例如,如果闪存管芯返回一程序故障状态(指示写操作是不成功的),则闪存管芯中的适当的一个的适当的块被看作失效的,并且可选地和/或有条件地,较高级别冗余模式切换被执行从而使得失效的闪存管芯(或替代地其部分)不再被使用。
在某些实施例中,失效的块通过经由虚拟和物理块地址(例如,经由通过图1A的映射141和/或表143执行的处理)的重新映射来代替。来自备用块的池中的一备用块被映射来代替失效的块。写在失效的块中的任何内容被复制到替换块,并且写入在备用块中从在失效的块中发生故障的地方进行。
在某些实施例中,失效的块被跳过(而不是明确地被重新映射),导致一“孔”,该孔可选地和/或有条件地导致当此孔所在的R-块接下来被擦除(为重写做准备)时的较高级别冗余模式切换。如果此孔处于用于数据存储的位置,则不作出切换并且此孔保持。如果此孔处于用于较高级别冗余信息的位置,则此较高级别冗余信息被存储在另一位置中,并且可选地较高级别冗余模式被切换。
在某些实施例和/或使用场景中,存储在发生故障的闪存管芯中的用户数据的恢复是不可能的。例如,如果故障是由于经由较高级别冗余和/或错误纠正和/或由闪存管芯或其部分中的一个或多个所报告的一些类型的出故障状态所检测到的一些类型的故障,则一些用户数据被丢失。
在某些实施例中,图8的处理是在响应于多个故障在较高级别冗余模式之间动态地转换的(例如,SSD控制器)背景中执行的。具体地,SSD控制器开始在第一较高级别冗余模式中操作并且响应于第一故障而动态地转换至第二较高级别冗余模式,并且随后响应于第二故障而从第二较高级别冗余模式动态地转换至第三较高级别冗余模式,并且以此类推。例如,SSD控制器根据RASIE-2模式2-2操作各闪存管芯并且响应于第一故障将此操作动态地转换成与RASIE-2模式2-1一致。随后,SSD控制器响应于第二故障将此操作动态地转换成与RASIE-2模式2-0一致。随后进一步,SSD控制器响应于第三故障将此操作动态地转换成与RASIE-1减少容量模式1-0一致(减少容量模式1-0类似于RASIE-1模式1-0,除了一个闪存管芯用于较高级别冗余信息和62个闪存管芯用于数据存储)。
作为特定示例,考虑耦合至图7的元件的SSD控制器(诸如图1A的SSD控制器100),初始在RASIE-2模式2-2(例如,在闪存管芯610.65和闪存管芯610.64中的较高级别冗余信息和在闪存管芯610.63......610.0中的数据存储)中操作,对应于在第一较高级别冗余模式中操作。接着执行闪存管芯中的一个或多个的读或替代地写。在闪存管芯中的特定一个的一部分(例如,用于用户数据和/或用户自由空间的闪存管芯610.62的页面)中,读导致不可纠正的(较低级别)ECC故障或替代地写是不成功的。作为响应,SSD控制器从在RASIE-2模式2-2中操作动态地切换至在RASIE-2模式2-1中操作,不再使用任何闪存管芯610.62。由于在RASIE-2模式2-1中的操作提供63个管芯以用于数据存储(相对于在RASIE-2模式2-2中的64个管芯),因而可用于数据存储的空间从64个管芯减少到63个管芯,并且用户数据和/或用户自由空间被相应地移动。例如,来自闪存管芯610.62的所有用户数据根据用户自由空间被移动到闪存管芯610.63和闪存管芯610.61......610.0的部分。基于在闪存管芯610.65和/或闪存管芯610.64中的较高级别冗余信息来恢复在具有不可纠正的ECC故障的页面中的所有用户数据。基于在闪存管芯610.63和闪存管芯610.61......610.0中的数据存储并根据RASIE-2模式2-1的较高级别冗余信息被计算和存储在闪存管芯610.65和/或闪存管芯610.64中。SSD控制器接着在RASIE-2模式2-1(在闪存管芯610.65和闪存管芯610.64中的较高级别冗余信息以及在闪存管芯610.63和闪存管芯610.61......610.0中的数据存储)中操作。
尽管前文描述了利用整个闪存管芯的量的独立硅元素的动态较高级别冗余模式管理的几个实施例,然而其它实施例利用为管芯的部分(诸如一个或多个读单元、字线关联的单元格、页面、R-页面、块或R-块)的独立硅元素实现动态较高级别冗余模式管理。前文描述了利用R-块的单个粒度的并行地活跃的较高级别冗余模式的几个实施例。例如,较高级别冗余模式在R-块基础上变化(在单个相应的较高级别冗余模式中完整地操作每一R-块)。然而,其它实施例实现利用多个(混合)粒度(诸如R-块粒度的与页面粒度的结合)的并行地活跃的较高级别冗余模式。例如,较高级别冗余模式在一个区域中在R-块基础上变化,并且在另一区域中在页面基础上变化(在单个相应的较高级别冗余模式中完整地操作每一页面)。
在各实施例中,图8中的一个或多个元素的处理或与图8中的一个或多个元素有关的处理完全地或部分地通过图1A的一个或多个元件(或其部分)来执行。例如,CPU 171的软件执行能力中的一部分被用于管理在较高级别冗余模式之间的动态转换,诸如通过引导减少可用于数据存储的空间或引导重组数据存储。再例如,数据处理121和/或ECC-X 135包括致力于和/或专用于根据‘目标’冗余模式的较高级别冗余信息的计算的硬件元件。又例如,ECC 161实现较低级别(例如,ECC)错误纠正和不可纠正的错误的检测,而ECC-X 135实现较高级别(例如,RASIE)错误纠正和不可纠正的错误和/或存储元件故障的检测。再例如,与在(较高级别)冗余模式之间的动态转换有关的功能的全部或任意部分通过ECC-X135的一个或多个部分来执行。
较高级别冗余和自适应较低级别码率
在某些实施例和/或使用场景中,较低级别冗余和/或错误纠正利用自适应码率(例如,利用可变码率的自适应ECC技术)。例如,第一读单元利用第一码率进行管理,其提供比利用第二码率进行管理的第二读单元相对更可用的数据位。在具有利用可变码率的较低级别冗余和/或错误纠正的某些实施例和/或使用场景中,较高级别冗余信息被存储在独立硅元素的多个部分(诸如闪存管芯的多个部分)中,该独立硅元素的多个部分利用较低级别冗余和/或错误纠正进行管理,该较低级别冗余和/或错误纠正相对于由较高级别冗余信息保护的数据存储,提供相对更可用的数据位或最可用的数据位。在各实施例和/或使用场景中,存储较高级别冗余信息的此部分在每一R-块基础上、在每一管芯基础上、随时间动态地或其任意组合变化。在各实施例中,一个或多个管芯、R-块、块和/或页面基于相对于较低级别错误纠正码率具有最可用数据而被选择以用于较高级别冗余数据的存储。
例如,较高级别冗余信息在每一R-块基础上被存储在变化的位置(诸如块位置),这些位置(诸如块)是具有基于较低级别错误纠正码率的最可用数据的那些。在任意示例中,考虑图7的背景中的RASIE-2操作模式场景,其中66个闪存管芯的收集被看作多达各自一个块高的M个R-块的逻辑“堆栈”,其中M是每一闪存管芯的块的数量。(在最概念上直接的情况中,此堆栈中的每一R-块由来自每一管芯的相同的物理块号码组成,但为了容纳失效的块,在至少一些实施例中,此约束被解除。在又其它实施例中,此约束被维持,但对应于失效的块容纳“孔”。)因此,每一R-块具有多达66个块,对应于来自闪存管芯610.0到闪存管芯610.65中的每一个的一个块。(在图7中,尽管在范围610.0到610.65中的仅一些闪存管芯被明确地列举出,然而通过省略号的使用,理解到此范围中的所有闪存管芯被隐含地示出。)较高级别冗余信息被写入具有基于较低级别错误纠正码率的最可用数据的每一R-块中的无论哪些块中。如果例如在第一R-块中,对应于闪存管芯610.15和610.49的块恰好具有基于较低级别错误纠正码率的最可用数据,则较高级别冗余信息被写入这些块(对应于闪存管芯610.15和610.49)中。而如果在第二R-块中,对应于闪存管芯610.9和610.35的块恰好具有基于较低级别错误纠正码率的最可用数据,则较高级别冗余信息被写入这些块(对应于闪存管芯610.9和610.35)中。在某些实施例中,在已知R-块中的所有其它数据之后,写较高级别冗余数据。
图9示出了读单元(911、931……951、971)的实施例,这些读单元具有由存储在读单元中的一个或多个中的较高级别冗余信息所保护的自适应(例如,随时间和/或依位置不同和/或变化)码率的较低级别冗余信息。读单元中的每一个具有被启用和/或分配给包含用户数据(911.U、931.U......951.U、971.U)的一部分,以及被启用和/或分配给包含较低级别冗余信息(诸如ECC码的校验位,作为较低级别ECC(911.E、931.E......951.E、971.E))的剩余部分。
在此图中,垂直的尺寸是相对地按规定比例的,并且指示了相对的尺寸。因此读单元911和951具有相同的第一尺寸(在某些实施例中,对于所有NVM设备的所有块,所有的读单元是相同的尺寸)、较低级别ECC部分931.E和951.E具有相同的第二尺寸,并且较低级别ECC部分911.E和971.E具有相同的第三尺寸。读单元931大于读单元911和951,该读单元911和951反过来大于读单元971。用户数据部分931.U大于用户数据部分951.U。用户数据部分951.U大于用户数据部分911.U。较低级别ECC部分951.E小于较低级别ECC部分911.E。
如在图中所示,例如NVM的每一相应的块,相应的读单元具有相应的尺寸,使得如在相应的块中所使用的变化的较低级别码率成为可能。更具体地,读单元931和951具有相同量的较低级别冗余信息(931.E和951.E是相同的尺寸),但读单元931的较低级别码率高于读单元951的较低级别码率,因为读单元931比读单元951(包含用户数据951.U)包含更多的用户数据(931.U)。
如此图所示,相应的读单元具有相应尺寸的用户数据,使得相同尺寸的两个或多个读单元中的每一个中的各种尺寸的用户数据成为可能。例如,改变用户数据的尺寸以改变在特定读单元中使用的较低级别码率。更具体地,读单元951和911具有相同的尺寸,但具有不同的相应量的用户数据(951.U和911.U),并因此不同的相应量的较低级别冗余信息(951.E和911.E),使得读单元951能够具有比读单元911更高的较低级别码率。
在某些实施例和/或使用场景中,变化和/或改变较低级别码率有利地能够提供足够量的较低级别ECC信息以达到较低级别错误纠正需求同时最大化用户数据的量。
在读单元中具有变化量的用户数据的某些实施例中,较高级别冗余信息被存储在具有最大量的用户数据的读单元的一个或多个中。例如在图9中,利用RASIE-1模式,较高级别冗余信息被存储在用户数据931.U中,以及利用RASIE-2模式,较高级别冗余信息被存储在用户数据931.U和用户数据951.U中。将较高级别冗余信息存储在具有最大量的用户数据的读单元(在由较高级别冗余信息所保护的读单元之中)中确保了存在足够的较高级别冗余信息来保护所有其它读单元中的用户数据。
根据各实施例,一个或多个技术被用来确定在由较高级别冗余信息所保护的若干读单元之中的哪一个或多个读单元被用于存储较高级别冗余信息。在第一示例中,使用具有最大量的用户数据的最后写的一个(用于RASIE-1)或两个(用于RASIE-2)读单元。在第二示例中,使用具有最大量的用户数据的最早写的一个(用于RASIE-1)或两个(用于RASIE-2)读单元。类似地,用于确定性地选择具有最大量的用户数据的一个或多个读单元以便保护在其它读单元中的所有剩余的用户数据的任何技术在本文中所考虑的技术的范围内。
较高级别冗余信息计算技术
在各实施例和/或使用场景中,较高级别冗余信息是利用各种技术(诸如经由奇偶校验(parity)、RS和/或加权和技术)进行计算的。例如,在能够从一个(较低级别)故障恢复的某些较高级别冗余模式(例如,RASIE-1)中,较高级别冗余信息是经由奇偶校验技术进行计算的。再例如,在能够从两个(较低级别)故障恢复的某些较高级别冗余模式(例如,RASIE-2)中,较高级别冗余信息是经由奇偶校验和RS技术的组合进行计算的。较高级别冗余信息的第一部分利用奇偶校验编码进行计算并且第二部分利用RS编码进行计算。又例如,在能够从两个故障恢复的某些较高级别冗余模式(例如,RASIE-2)中,较高级别冗余信息是经由奇偶校验和加权和技术的组合进行计算的。较高级别冗余信息的第一部分利用奇偶校验编码进行计算并且第二部分利用加权和编码进行计算。较高级别冗余信息例如经由NVM的页面的读和写来管理,该NVM的页面的读和写使用较低级别故障检测技术(诸如ECC),该较低级别故障检测技术与用于NVM的页面的较低级别故障检测技术相同或类似于用于NVM的页面的较低级别故障检测技术,该NVM的页面可用于存储由较高级别冗余信息所保护的数据。
作为RASIE-2的特定示例,利用奇偶校验编码计算较高级别冗余信息的第一页面,该奇偶校验编码经由在跨R-块的一条(stripe)中的所有第一页面的异或。更具体地,对在跨R-块的条中的所有第一页面的所有第一字节执行异或,产生较高级别冗余信息的第一页面的第一字节。类似地,较高级别冗余信息的第二字节是通过对在跨R-块的条中的所有第一页面的所有第二字节进行异或来形成,并且对于此条中的所有第一页面的所有字节以此类推。较高级别冗余信息的第二页面是利用如下加权和技术进行计算。
在有限域(诸如Galois域(用作示例))上执行算法。示例假设进行操作的数据是字节宽的,并因此使用诸如GF(256)的域。在各实施例中,以任何单位对数据进行操作。
条中的每一页面被分配一唯一的非零“索引”。选择这些索引的值以简化实现复杂度,并且不涉及任何形式的生成多项式。例如,由从0到N-1的条中的管芯位置来标记(例如,通过软件)页面,并且这些索引的适当的值是管芯号码的一种补数(ones-complement,被确保是非零,假设N<255)。索引值的另一选择是最低权重(最少数量的设置位或最少数量的清除位)非零整数,例如以减小和/或最小化硬件成本。在某些实施例和/或使用场景中,为这些索引选择灰度编码值在处理页面时最小化转换和/或减少供电。
索引值不是根据有限域算法选择的,而是根据其他原则选择的。尽管如此,每一索引值对应于有限域中的非零元素。假设页面i具有索引值Ki(并且页面j具有索引值Kj)。加权和冗余是Ki*Pi的(GF域)和(在来自每一页面i的相应的字节Pi上),每一字节乘以(在GF域上)其索引值。
因此,针对每一字节,加权和冗余信息被计算为:
R0=对所有相应的字节Pi求和;
R1=对所有相应的字节Ki*Pi求和;
R0是所有相应的字节的异或;以及
Rl是字节的加权和,其中权重被选择为索引值。对于一个页面中的相应的字节中的每一个迭代前述计算,针对R0和R1中的每一个产生字节的相应的页面。在下面的讨论中,出于阐述清楚的目的,R0和R1在某些情景中被分别地描述为单个元素(例如,每一个为单个字节),但如在前述计算中,每一个表示相应的一页面的元素(例如,每一个是一页面的字节)。
Pi表示页面i中的字节,并且Pj表示页面j中的字节。相对于一个条的来自每一页面的相应的字节描述处理,并且对所有相应的字节执行迭代。如果归因于例如具有不同的(较低级别)冗余码率,一些页面短于其它的页面,则这些较短的页面被零填充(或由对编码和解码使用相同方式的任何已知值填充)从而使得被有效处理的所有页面具有相同的尺寸。
求和计算R0和R1根据各实施例,经由各种串行和/或并行计算可以任何顺序执行。页面不必以任何特定顺序来处理,因为Ki*Pi在Kj*Pj之前还是在Kj*Pj之后添加对R1中的结果没有影响。对应于冗余信息的页面中的各字节的R0和R1值的计算独立于彼此并且根据各实施例,经由各种串行和/或并行计算可以任何顺序计算。进一步,从R1中减去Ki*Pi(以及从R0中减去Pi)能够“撤回”对页面的计算影响。由于在GF域上,加法和减法都是异或(因此减等同于简单地加第二次),因而在某些实施例和/或使用场景中,对于GF域实现方式不需要特别的软件(例如,逻辑异或能力是足够的)来“撤回”页面。
在不可纠正的较低级别错误的情况中,较高级别错误纠正在某些实施例中以重新计算R0和R1开始,而重新计算R0和R1是通过省略具有不可纠正的较低级别错误的页面(有时被称为列)。纠正以从原始R0中减去经重新计算的R0以产生△R0,并且从原始R1中减去经重新计算的R1以产生△R1而继续。
如果不存在不可纠正的较低级别错误,则经重新计算的R0和R1均是零。如果存在不可纠正的较低级别错误,则经重新计算的R0和R1(在减去之后)反映了“缺失的”数据(在第二次中未被添加,但出现在原始值中)。
如果存在一个不可纠正的较低级别错误,则经重新计算的R0被用于纠正此错误(并且不需要经重新计算的R1)。
如果存在两个不可纠正的较低级别错误,则经重新计算的R0和R1被用于纠正错误。如果R0和R1值的页面是具有不可纠正的较低级别错误的页面,则不需要数据存储页面的修正。如果R1值的页面是具有不可纠正的较低级别错误的页面中的一个,则纠正是经由R0(经重新计算的R0值是具有不可纠正的较低级别错误的数据存储页面的值)。
如果在数据存储页面中存在两个不可纠正的较低级别错误,或如果R0页面是具有不可纠正的较低级别错误的页面中的一个,则纠正以如上计算△R0和△R1开始。如果R0页面是具有不可纠正的较低级别错误的页面中的一个,则可选地省略△R0页面的计算。如果页面i和页面j是具有不可纠正的较低级别错误的页面,则经重新计算的△R0=Pi+Pj,并且经重新计算的△R1=Ki*Pi+Kj*Pj。求解方程产生了:
Pi=(△R1-Kj*△R0)/(Ki-Kj)
Pj=△R0-Pi
如果R0是具有不可纠正的较低级别错误的页面中的一个,则(因为R0不包括在R1中),△R1=Ki*Pi,或Pi=△R1/Ki;通过在上面公式中设置Kj=0(以忽略△R0)而获得相同的结果。
在替代性实施例中,代替Galois域,使用由整数模(integers mod)p限定的有限域,其中p是素数。这些计算与以上描述的那些相同,其中加法是整数加法模(integeraddition mod)p,并且乘法是整数乘法模(integer multiplication mod)p。例如,如果页面是字节的页面,则使用整数模257的有限域。所有用户数据字节是在范围0-255中并且被存储在每一个字节中。然而,R1结果具有从0-256的范围的值,需要超出一个字节以供表示。存在很多方法来编码从0-256的值以最小化存储空间并且使得能够利用减少的开销存储R1页面。例如,值0和256分别地被存储为九位序列000000000和000000001,并且所有其它值被存储在八位中。给出R1值的随机分布,存储开销<0.1%。如参照图9所描述的,选择R1页面以具有最大量的用户数据,使得存储开销在某些使用场景中能够被隐藏。
图10示出了例如如在诸如图7的背景中由RASIE-2模式2-2所使用的以及如在图6中进一步所示的较高级别冗余信息结果和数据源对应的实施例的选择的细节。图10明确地示出了闪存管芯610.0、610.63、610.64和610.65,并且通过省略号(...)隐含地示出了闪存管芯610.1......610.62。闪存管芯的块、页面和页面内的字节的选择的细节被示出。较高级别冗余信息的第一部分被示为R01010(存储在闪存管芯610.64中),并且利用奇偶校验编码进行计算。较高级别冗余信息的第二部分被示为R11011(存储在闪存管芯610.65中),并且利用加权和编码进行计算。数据信息的存储被示为数据1019(存储在闪存管芯610.0......610.63中)。
虚线箭头1001概念地指示两字节冗余计算结果(对于R01010和R11011中的每一个的一个字节),该计算结果是基于数据1019的所有第一页面(跨所有闪存管芯)的相应的第一字节。如所示,两字节结果是在第一R0和R1页面中的每一个上的第一字节。虚线箭头1002概念地指示两字节冗余计算结果(对于R01010和R11011中的每一个的一个字节),该计算结果是基于数据1019的所有第一页面的相应的最后一个字节。如所示,两字节结果是在第一R0和R1页面中的每一个上的最后一个字节。虚线箭头1003概念地指示两页面冗余计算结果(对于R01010和R11011中的每一个的一个页面),该计算结果是基于数据1019的第一个块(跨所有闪存管芯)的相应的最后一个页面。
注意如本文中其它地方所描述的,在某些实施例中,较高级别冗余信息针对数据的不同部分被存储在不同的管芯中。因此,在某些实施例中,R0和R1被存储在各种管芯上,而不是两个“专用的”管芯上,如图10中所示。
图11示出了利用根据各实施例的各种操作条件,例如如在诸如图7的背景中由RASIE-2模式2-2所使用的以及如在图6和图10中进一步所示的较高级别冗余信息计算的实施例的选择的细节。更具体地,图11示出了根据例如由图10的虚线箭头1001概念性地示出的两字节冗余计算结果,用于R0的字节的奇偶校验编码计算和用于R1的字节的加权和编码计算。操作条件包括下列中的一个或多个:在有限域(诸如Galois域)上执行算法;索引(对应于图11中的伪求和变量“i”值)是闪存管芯号码的一种补数(或任何其它唯一的和非零的编号);以及索引对应于有限域中的非零元素。如图11中所示的计算基于相应的数据字节,针对R0和R1的所有字节进行重复。注意非零索引使得R1值能够包括来自Pi的每个元素的贡献。
因此,关于计算R0的字节中的任何一个,对彼此或在R1的字节中的任何一个之间不存在依赖性。因此构想各种实施例,其中完全地(大量地)并行地、部分地并行地或完全地串行地计算R0和R1。例如,并行地计算页面的所有R0和/或R1字节。再例如,并行地计算页面的所有R0字节,接着(在之前)是并行地计算页面的所有R1字节。
进一步,相对于彼此或相对于计算R1的字节中的任何一个,关于计算R0的字节中的任何一个不存在排序需求。因此构想各种实施例,其中相对于彼此完全地按顺序、单独地相对于彼此按顺序(例如,R0计算相对于彼此是按顺序的但相对于R1没有排序,并且反之亦然)、或没有特定排序(例如,完全无序的、无序的或随机排序的)计算R0和R1值。例如,页面的所有R0字节按特定顺序(例如,从最低字节到最高字节)进行计算,接着是按此特定顺序的页面的所有R1字节。再例如,页面的所有R0字节按特定顺序进行计算,并且独立地,页面的所有R1字节按特定顺序进行计算。又例如,页面的所有R0字节以及页面的所有R1字节相对于彼此以无特定顺序进行计算(例如,如数据操作对象变得可用)。
又例如,一个或多个页面的所有R0和R1字节按一顺序进行计算,该顺序由在一个或多个NVM(每一个具有例如一个或多个闪存管芯)上执行的一个或多个读操作的完成的顺序来确定,这些读操作用于读取被图11所示的求和和加权求和计算(Pi)引用的数据字节。在某些实施例和/或使用场景中,按由读操作的完成所决定的顺序执行计算使得在NVM和能够执行计算的元件之间的缓冲的减少或消除成为可能。在某些实施例和/或使用场景中,按由读操作的完成所决定的顺序执行计算使得用于执行计算的存储带宽(诸如NVM的存储带宽)的减少成为可能。
又例如,一个或多个页面的所有R0和R1字节按一顺序进行计算,该顺序由响应于在一个或多个NVM(每一个具有例如一个或多个闪存管芯)上执行的读操作返回的数据和/或可用的数据的顺序来确定,返回的数据和/或可用的数据对应于被图11所示的求和和加权求和计算(Pi)引用的数据字节。在某些实施例和/或使用场景中,按由返回的数据和/或可用的数据所确定的顺序执行计算减少了或消除了在NVM和能够执行计算的元件之间的缓冲。在某些实施例和/或使用场景中,按由返回的数据和/或可用的数据所确定的顺序执行计算减少了用于执行计算的存储带宽,诸如NVM的存储带宽。在某些实施例中,这些读操作按特定顺序(例如,从Pi的最低字节到最高字节)来执行,而在其它实施例中,读操作不按特定顺序来执行。
图12示出了例如在诸如与图11相关联的背景中,并且其中较低级别故障已发生在页面j上,从一个(较低级别)故障(在单个操作期间)恢复的实施例的选择的细节。注意如果较低级别故障是在R0页面或R1页面上,则如由图11所描述的那样重新确定R0(或R1)。图12示出了页面j的经恢复的值的一个字节的计算(注意求和省略了发生故障的页面j)。重复如图12中所示的计算以基于R0的相应的字节和来自除了页面j之外的所有数据页面的相应的字节来确定页面j的所有字节的经恢复的值。
因此关于计算页面j的经恢复的值的字节中的任何一个,对彼此不存在依赖性。因此,构想各种实施例,其中类似于用于R0和R1值的前述计算,从高度并行变动到高度串行地计算Pj恢复值。进一步,关于相对于彼此计算页面j的恢复值中的任何一个,不存在顺序需求。因此构想各种实施例,其中类似于用于R0和R1值的前述计算,Pj恢复值相对于彼此按变化的排序进行计算。
一些示例性实施例按排序执行与确定恢复值有关的计算,该排序至少部分地由在一个或多个NVM(每一个具有例如一个或多个闪存管芯)上执行的一个或多个读操作的完成的排序确定,这些读操作用于读取NVM以获得如由图12所示的R0和/或Pi值。在某些实施例和/或使用场景中,按读操作的完成的顺序执行计算使得在NVM和能够执行计算的元件之间的缓冲的减少或消除成为可能。在某些实施例和/或使用场景中,按读操作的完成的顺序执行计算使得用于执行计算的存储带宽(诸如NVM的存储带宽)的减少成为可能。
一些示例性实施例按排序执行与确定恢复值有关的计算,该排序至少部分地由来自一个或多个NVM(每一个具有例如一个或多个闪存管芯)的返回的数据和/或可用的数据的排序决定,返回的数据和/或可用的数据响应于在NVM上执行的读操作以获得如由图12所示的R0和/或Pi值。在某些实施例和/或使用场景中,按来自读操作的返回的数据和/或可用的数据的顺序执行计算减少了或消除了在NVM和能够执行计算的元件之间的缓冲。在某些实施例和/或使用场景中,按来自读操作的返回的数据和/或可用的数据的顺序执行计算减少了用于执行计算的存储带宽,诸如NVM的存储带宽。在某些实施例中,这些读操作按特定顺序(例如,从Pi的最低字节到最高字节)来执行,而在其它实施例中,这些读操作不按特定顺序来执行。
图13A-13D示出了例如在诸如与图11相关联的背景中,并且其中较低级别故障已发生在页面m和n上,从两个(较低级别)故障(在单个操作期间)恢复的实施例的选择的细节。注意如果较低级别故障是在R0和R1页面上,则R0和R1对于数据恢复是不需要的,并且不存在处理来恢复数据。否则,注意如果较低级别故障中的一个是R1页面,则数据恢复如由图12所描述的那样进行。如果较低级别故障中没有一个是在R0或R1页面上,则Pm和Pn的恢复如下进行。图13A示出了经修正的R0作为R0'的一个字节和经修正的R1作为R1'的一个字节的计算(注意求和省略了发生故障的页面m和n)。图13B示出了将原始冗余信息(R0,R1)的一个字节与经修正的冗余信息(R0',R1')的一个字节联系起来,以及用于形成经修正的R0和R1的从求和中省略的项(Pm+Pn和Km*Pm+Kn*Pn)的等式。图13C示出了具有引进项delta R0(△R0)和delta R1(△R1)的图13B的代数重排。图13D示出了用于Pn和Pm的图13C的求解,并因此表示基于R1、R0的相应的字节以及来自除了页面m和n之外的所有数据页面的相应的字节的用于页面n的经恢复的值的一个字节和页面m的经恢复的值的一个字节的计算。注意唯一的索引使得非零分母成为可能,因为Kn相对于Km是唯一的。
在各实施例中,执行如由图13A-13D所表示的计算以确定页面m的经恢复的值的一个字节和页面n的经恢复的值的一个字节。基于R0、R1的相应的字节以及来自除了页面m和n之外的所有数据页面的相应的字节,重复这些计算以确定页面m和n的所有字节的经恢复的值。
因此关于计算页面m或n的经恢复的值的字节中的任何一个,对彼此不存在依赖性。因此,构想各种实施例,其中类似于用于Pj恢复值的前述计算,从高度并行变动到高度串行地计算Pm和/或Pn恢复值。进一步,关于相对于彼此计算页面m和/或页面n的恢复值中的任何一个,不存在顺序需求。因此构想各种实施例,其中类似于用于Pj恢复值的前述计算,Pm和/或Pn恢复值相对于彼此按变化的排序进行计算。
一些示例性实施例按排序执行与确定恢复值有关的计算(诸如用于R0'和R1'的计算),该排序至少部分地由在一个或多个NVM(每一个具有例如一个或多个闪存管芯)上执行的一个或多个读操作的完成的排序确定,这些读操作用于获得被示为用于图13A-13D中的任何一个中的计算的来源的值中的任何一个或多个。在某些实施例和/或使用场景中,按读操作的完成的顺序执行计算使得在NVM和能够执行计算的元件之间的缓冲的减少或消除成为可能。在某些实施例和/或使用场景中,按读操作的完成的顺序执行计算使得用于执行计算的存储带宽(诸如NVM的存储带宽)的减少成为可能。
一些其它示例性实施例按排序执行与确定恢复值有关的计算(诸如用于R0'和R1'的计算),该排序至少部分地由来自一个或多个NVM(每一个具有例如一个或多个闪存管芯)的返回的数据和/或可用的数据的排序决定,返回的数据和/或可用的数据响应于在NVM上执行的读操作以获得被示为用于图13A-13D中的任何一个中的计算的来源的值中的任何一个或多个。在某些实施例和/或使用场景中,按来自读操作的返回的数据和/或可用的数据的顺序执行计算减少了或消除了在NVM和能够执行计算的元件之间的缓冲。在某些实施例和/或使用场景中,按来自读操作的返回的数据和/或可用的数据的顺序执行计算减少了用于执行计算的存储带宽,诸如NVM的存储带宽。在某些实施例中,这些读操作按特定顺序(例如,从Pi的最低字节到最高字节)来执行,而在其它实施例中,这些读操作不按特定顺序来执行。
图14A和14B示出了相对于从NVM接收的页面计算较高级别冗余信息的实施例的选择的细节。图14A示出了经由发布而将多个读命令发送至一个或多个NVM(发布读操作1402A)、检查所有命令是否已被发送(所有都被发布?1403A),以及如果没有,则循环回到发送命令中的另一个的实施例的选择的细节。注意构想其它实施例,其中一次发布多个命令,而不是一次一个。
图14B示出了响应于如图14A所示发送的读命令而处理从NVM接收的页面的实施例的选择的细节。作出检查以确定页面是否可用(页面准备好?1402B)。如果没有,则处理环回到再次执行检查。如果页面是可用的,则与此页面有关的较高级别冗余信息处理被执行(执行基于页面的计算1403B)。接着作出检查以确定所有页面是否已被处理(页面完成?1404B)。如果这样,则处理完成(结束1499B),否则流动环回到确定另一页面是否是可用的。
除了响应于如图14A所示发送的命令的页面的接收,图14B中所示的处理独立于图14A中所示的处理。在各种场景中,页面的到达顺序根据NVM类型、状态、操作环境和其它因素而变化,并且在某些情况下,与对应于到达页面的读命令的发送顺序或到达顺序不同。由于图14A的处理独立于图14B(除了页面数据到达依赖于相应的正被发送的读命令),因而在某些实施例和/或使用场景中,读命令正被发送(图14A)而读数据正被接收/处理(图14B)。在某些实施例和/或使用场景中,页面中的一些是从一个或多个缓冲器中提供的而不是经由指向NVM的读命令被请求,例如如果在用于特定页面的读命令将要被发送之前特定页面呈现在特定缓冲器中的话。在某些实施例和/或使用场景中,除了响应于所发送命令之外的页面是由NVM提供的,所述页面与响应于所发送命令而提供的页面(例如,响应于针对其它活动所发送的读命令而提供的页面)混合。
在各实施例中,如由图11所示的用于R0和R1的计算至少部分地如由图14A和14B所示来执行。对于第一示例,用于计算相应的R0和R1页面所必需的所有数据页面的读命令如由图14A所示被发送至一个或多个NVM。响应于读命令而接收的数据的页面在页面被接收时被处理以计算R0和R1页面,如由图11所示。对于第二示例,用于一对(例如,对应于双平面NVM的两个平面)R0和R1页面的读命令如由图14A所示被发送至一个或多个NVM。响应于读命令而接收的数据的页面在页面被接收时被处理以计算R0和R1页面,如由图11所示。
在各实施例中,如由图12所示的用于Pj的计算至少部分地如由图14A和14B所示来执行。对于第一示例,用于计算特定Pj页面所必需的所有数据页面的读命令如由图14A所示被发送至一个或多个NVM。响应于读命令而接收的数据的页面在页面被接收时被处理以计算Pj页面,如由图12所示。对于第二示例,用于一对Pj页面(例如,对应于双平面NVM的两个平面)的读命令如由图14A所示被发送至一个或多个NVM,并且所接收的数据的页面在被接收时被处理,如由图14B所示,以计算此对Pj页面。
在各实施例中,如由图13A-13D中的任何一个所示,与确定恢复值有关的计算(诸如用于R0'和R1'的计算)至少部分地如由图14A和14B所示来执行。对于第一示例,用于计算特定R0'页面和特定R1'所必需的所有数据页面的读命令如由图14A所示被发送至一个或多个NVM。响应于读命令而接收的数据的页面在页面被接收时被处理以计算R0'和R1'页面,如由图13A所示。对于第二示例,用于一对R0'和R1'页面(例如,对应于双平面NVM的两个平面)的读命令如由图14A所示被发送至一个或多个NVM,并且所接收的数据的页面在被接收时被处理,如由图14B所示,以计算此对R0'和R1'页面。
图15A-15C示出了例如在诸如与图11相关联的背景中,相对于被提供至NVM的写入的较高级别冗余信息的计算的撤回的实施例的选择细节。图15A示出了经由发布而将多个写命令发送至一个或多个NVM(发布写操作1502A)、检查所有命令是否已被发送(所有都被发布?1503A),以及如果没有,则循环回到发送命令中的另一个的实施例的选择的细节。注意构想其它实施例,其中一次发布多个命令,而不是一次一个。
图15B示出了响应于如图15A中所示发送的写命令而处理从NVM接收的写完成和状态信息的实施例的选择的细节。作出检查以确定写入是否已在没有错误的情况下完成(写入好吗?1502B)。如果是这样的话,则作出检查以确定所有写入是否已被完成(写完成?1504B)。如果是这样的话,则处理完成(结束1599B)。如果写入已被完成,但具有(较低级别)故障,诸如程序故障,则流程继续至“撤消”相对于较高级别冗余信息计算的写入的影响(从冗余撤回写入1503B)。更具体地,从任何相应的较高级别冗余信息计算中去计算(de-compute)用于具有较低级别错误的写入的数据(假定在此写入会成功这一假定下,用于写入的数据已经被包括在相应的较高级别冗余计算中)。例如,在特定页面j上检测到较低级别写入故障。作为响应,计算经修正的R0和R1页面从而使得页面j数据(Pi)被设置为零。图15C示出了用于经修正的R0的单字节(nR0)和经修正的R1的单字节(nR1)的计算的实施例的选择的细节,其中j是较低级别写入故障的页面。注意在诸如与图11相关联的图12的背景中,如果有限域是Galois域,则在图15C中所示的减法运算(“-”)等同于逻辑异或操作。在各实施例中,执行其它处理(未示出)以存储具有较低级别写入故障(Pj)的页面,以及经修正的较高级别冗余页面(nR0和nR1)。
除了响应于如图15A所示发送的命令的写完成和状态信息的接收,图15B中所示的处理独立于图15A中所示的处理。在各种场景中,写完成和状态信息的到达顺序根据NVM类型、状态、操作环境和其它因素而变化,并且在某些情况下,与对应于到达的写完成和状态信息的读命令的发送顺序或到达顺序不同。由于图15A的处理独立于图15B(除了写完成和状态信息到达依赖于相应的正被发送的写命令),因而在某些实施例和/或使用场景中,写命令正被发送(图15A)而写完成和状态信息正被接收/处理(图15B)。
在某些实施例和/或使用场景中,显著的延迟在被送至NVM的命令和响应于写命令的来自NVM的写完成和状态信息的接收之间发生。在某些实施例和/或使用场景中,除了响应于如图15A所示所发送的命令之外的写完成和状态信息是由NVM提供的,所述写完成和状态信息与响应于如图15A所示所发送的命令而提供的写完成和状态信息(例如,响应于针对其它活动所发送的写命令而提供的写完成和状态信息)混合。
在各实施例和/或使用场景中,否则将被用于数据信息的一个或多个页面是未使用的。在各种场景中,未使用的页面是块、R-块、条或任何类型的页面序列的第一、中间或最后页面。在某些情况下,未使用的页面是先天未使用的(“被遗忘”),并且在某些情况下,未使用的页面是在某些使用之后未使用(“从服务中移除”)。被遗忘的未使用页面的示例是被错误地制造的页面。从服务中被移除的未使用页面的示例是不能适当地写入的页面(例如,如相对于图15B被描述为较低级别写错误)。例如,与图10-12、13A-13D、14A-14B和15A-15B有关的处理略过任何未使用的页面(无论被遗忘或从服务中移除),诸如通过从计算中完全地省略未使用的页面,或通过好像未使用的页面上的所有数据均是零一样地执行计算。
混合粒度较高级别冗余
在各实施例和/或使用场景中,NVM的相应的区域以相应的较高级别冗余模式(例如,RASIE-1和RASIE-2)进行操作,诸如由图7、8和10所示和连同图7、8和10所描述的那样。在各实施例中,相应的较高级别冗余模式具有相同的粒度,例如,相应的区域各自是整数倍数的相同(例如,尺寸或类型)元素。示例性元素包括一个或多个R-块和/或块、一个或多个R-页面和/或页面,以及与一个或多个字线相关联的一个或多个单元格。例如,NVM的第一区域以单个块的粒度处的RASIE-1模式进行操作(例如,第一区域是整数数量的块,诸如第一区域是一个或多个R-块)并且NVM的第二区域以单个块的粒度处的RASIE-2模式进行操作(例如,第二区域同样是整数数量的块,诸如第二区域是一个或多个R-块)。因此第一和第二区域以相应的较高级别冗余模式进行操作,该相应的较高级别冗余模式都具有相同的粒度(一个块)。
在各种其它实施例中,相应的较高级别冗余模式处于各种粒度,例如,相应的区域中的至少一些是整数倍数的相应的不同元素。例如,NVM的第一区域以单个页面的粒度处的RASIE-1模式进行操作(例如,第一区域是整数数量的页面,诸如对应于来自NVM的每一管芯的页面、本文中其它地方所描述的示例性R-页面)并且NVM的第二页面以单个块的粒度处的RASIE-2模式进行操作(例如,第二区域是整数数量的块,诸如第一区域是一个或多个R-块)。因此,第一和第二区域以相应的较高级别冗余模式进行操作,该相应的较高级别冗余模式具有不同的相应的粒度。再例如,NVM的相应的区域以相同的较高级别冗余模式并且在相应的不同的粒度处进行操作(例如,第一区域和第二区域以RASIE-1进行操作,第一区域处于单个页面粒度,并且第二区域处于单个R-块粒度)。
在各实施例和/或使用场景中,较高级别冗余模式的粒度是基于具有相同尺寸、相同类型或两者的元素的整数倍数。例如,相同尺寸(和相同类型)的元素包括背景中的页面,其中例如归因于相同的较低级别冗余编码率,页面中的每一个是相同的尺寸(并且页面中的每一个是相同的类型,‘页面’)。再例如,相同类型(但不同尺寸)的元素包括背景中的页面,其中例如归因于不同的较低级别冗余编码率,页面中的一些具有与页面中的其它不同的尺寸,但所有的页面具有相同的类型,‘页面’。
图16示出了在如图6所示的闪存管芯的布置的背景中,混合粒度较高级别冗余的实施例的选择的细节。图16明确地示出了闪存管芯610.0、610.63、610.64和610.65,并且通过省略号(...)隐含地示出了闪存管芯610.1......610.62。块和闪存管芯的块内的页面的选择的细节被示出。多个R-块被示为R-块660.0、660.1、660.2......和660.R。多个R-页面被示为R-页面1600、1601、1602……和1609(共同地是R-块660.0)。
R-页面概念地对应于来自多个NVM设备的页面的逻辑片(如R-块概念地对应于来自多个NVM设备的块的逻辑片)。示例性R-页面是合起来的来自闪存管芯中的每一个的第j个块的第i个页面。存在其它示例性R-页面,诸如概念地对应于R-块的各示例,诸如合起来的来自闪存管芯中的每一个的块的第i个和第i+1个页面。
如所示,R-页面1600是合起来的来自闪存管芯中的每一个的第一个块的第一个页面(页面610.0P0......610.63P0、610.64P0和610.65P0)。R-页面1601是合起来的来自闪存管芯中的每一个的第一个块的第二个页面(页面610.0P1......610.63P1、610.64P1和610.65P1)。R-页面1602是合起来的来自闪存管芯中的每一个的第一个块的第三个页面(页面610.0P2......610.63P2、610.64P2和610.65P2)。R-页面1609是合起来的来自闪存管芯中的每一个的第一个块的最后一个页面(页面610.0PP......610.63PP、610.64PP和610.65PP)。
如下,闪存管芯的各区域被示为正并行地以各种粒度处的相应的较高级别冗余模式进行操作。R-页面1600以页面的粒度处的RASIE-2模式进行操作并且包括存储在闪存管芯610.0......610.63的分别的页面610.0P0......610.63P0中的数据信息1600.D以及存储在闪存管芯610.64和610.65的分别的页面610.64P0和610.65P0中的相应的冗余信息1600.R。R-页面1601同样以页面的粒度处的RASIE-2模式进行操作并且包括存储在闪存管芯610.0......610.63的分别的页面610.0P1......610.63P1中的数据信息1601.D以及存储在闪存管芯610.64和610.65的分别的页面610.64P1和610.65P1中的相应的冗余信息1601.R。R-页面1602以页面的粒度处的RASIE-1模式进行操作并且包括存储在闪存管芯610.0......610.64的分别的页面610.0P2......610.64P2中的数据信息1602.D以及存储在闪存管芯610.65的页面610.65P2中的相应的冗余信息1602.R。R-页面1609以页面的粒度处的RASIE-3模式进行操作并且包括存储在闪存管芯610.0......610.62的分别的页面610.0PP......610.62PP中的数据信息1609.D以及存储在闪存管芯610.63......610.65的分别的页面610.63PP......610.65PP中的相应的冗余信息1609.R。注意闪存管芯610.62(以及在其中的页面,诸如页面610.62PP)被隐含地示出而不是被明确地示出。
相比以相同的页面粒度处的相应的较高级别冗余模式进行操作的R-页面1600、1601、1602和1609,R-块660.1、660.2和660.R以相同的块粒度处的相应的较高级别冗余模式进行操作。具体地,R-块660.1以块的粒度处的RASIE-2模式进行操作并且包括存储在闪存管芯610.0......610.63的分别的块610.0B1......610.63B1中的数据信息1610.D以及存储在闪存管芯610.64和610.65的分别的块610.64B1和610.65B1中的相应的冗余信息1610.R。R-块660.2以块的粒度处的RASIE-1模式进行操作并且包括存储在闪存管芯610.0......610.64的分别的块610.0B2......610.64B2中的数据信息1620.D以及存储在闪存管芯610.65的块610.65B2中的相应的冗余信息1620.R。R-块660.R以块的粒度处的RASIE-3模式进行操作并且包括存储在闪存管芯610.0......610.62的分别的块610.0BB......610.62BB中的数据信息16109.D以及存储在闪存管芯610.63……610.65的分别的块610.63BB……610.65BB中的相应的冗余信息1690.R。
因此R-页面1600、1601、1602和1609都并行地以相同的一个页面粒度处的各种较高级别冗余模式进行操作(从而使得每一区域是来自闪存管芯610.0……610.65中的每一个的相应的页面)。进一步,R-块660.0、660.1、660.2和660.R都并行地以相同的一个块粒度处的各种较高级别冗余模式进行操作(从而使得每一区域是来自闪存管芯610.0……610.65中的每一个的相应的块)。最后,R-页面1600、1601、1602和1609的并行操作与R-块660.0、660.1、660.2和660.R的并行操作是同时发生的。因此,闪存管芯共同地并且并行地以各种(混合)粒度处的各种较高级别冗余模式进行操作。
作为以粒度的混合处的较高级别冗余模式并行地操作的益处的特定示例,考虑下面。如图16所示,R-页面1600、1601和1602各自完全地以相应的较高级别冗余模式(具体地RASIE-2模式、RASIE-2模式和RASIE-1模式)进行操作。R-页面1609完全地以RASIE-3模式进行操作。尽管未明确地示出,但假设R-块660.0的剩余的R-页面完全地以RASIE-1模式进行操作。因此,R-块660.0的全部以具有页面粒度的较高级别冗余模式进行操作。如所示,R-块660.1、660.2和660.R各自完全地以相应的较高级别冗余模式进行操作。尽管未明确地示出,但假设剩余的R-块各自同样完全地以相应的较高级别冗余模式进行操作。因此除了R-块660.0之外的所有R-块以具有块(或替代地R-块)粒度的较高级别冗余模式进行操作,并且R-块660.0以具有页面粒度的较高级别冗余模式进行操作。
相比于经由RASIE-2在单个操作期间从两个故障中保护,引发单个页面(例如,页面610.63PP)的增加的冗余开销成本使得经由RASIE-3在单个操作期间从三个故障中保护R-页面1609成为可能。在没有混合粒度较高级别冗余模式的实现中,R-页面1609的保护引发整个块的增加的冗余开销成本。因此,混合粒度较高级别冗余模式使得用于相同实体(诸如(封装的)设备、管芯、R-块、块、R-页面、页面、与字线相关联的单元格以及前述项中的一个或多个)的相同保护的减少的冗余信息开销成为可能。
图17示出了在多个混合粒度较高级别冗余模式中的并行操作(并行地在第一和第二粒度较高级别冗余模式中操作1700)的实施例的选择的细节。例如,响应于一事件,流程开始(开始1701)。流程接着沿着两个并行路径继续,一个用于例如对应于NVM的相应的区域的较高级别冗余模式操作的每个相应的粒度。在第一粒度中的操作(在第一粒度较高级别冗余模式中操作1702)在此图中的左边部分中示出,并且在第二粒度中的操作(在第二粒度较高级别冗余模式中操作1704)在此图中的右边部分中示出。如所示,操作对于两个粒度并行地(例如,完全地或部分地并行的)继续。尽管未示出,但在某些实施例和/或使用场景中,在某些情况下,流程从两个粒度的并行操作中退出,诸如,回复到在单个粒度中操作(例如,响应于重新启动),或继续进行至在多于两个粒度中的并行操作(例如,响应于另一事件)。进一步,尽管此图示出了在两个粒度的较高级别冗余模式中的并行操作,然而各种其它实施例实现在各种粒度的较高级别冗余模式中的并行操作。
在并行操作的启动之后,响应于诸如来自主机(图1B的主机102)或来自SSD控制器的内部的代理(例如,图1A的反复循环器151)的请求(读/写请求1707),流程继续至确定此请求对应于操作的粒度中的哪一个(粒度?1706)。如果此请求具有第一粒度(第一1706.1),则流程继续至根据第一粒度处理此请求(根据第一粒度较高级别冗余模式读/写1703)。如果此请求具有第二粒度(第二1706.2),则流程继续至根据第二粒度处理此请求(根据第二粒度较高级别冗余模式读/写1705)。
启动所示流程(例如,经由开始1701)的事件和/或启动在多于两个粒度中的并行操作(未明确地示出)的事件的示例包括故障的检测(例如,较低级别不可纠正的读错误或写/编程故障)。在各实施例中,由所示流程的启动(例如,经由开始1701)和/或在多于两个粒度中的操作的启动(未明确地示出)所暗示的转换对应于操作模式的动态转换(例如,图8的动态地转换操作模式809)。
注意这里以及本文中的其它地方,与多个粒度处的较高级别冗余模式的并行操作有关的描述例如指的是根据此多个粒度被同时地用于存储信息和/或同时地可用于写入/从中读取信息的多个实体。实体的示例包括(封装的)设备、管芯、R-块、块、R-页面、页面、与字线相关联的单元格以及前述项中的一个或多个。在各时间点,当并行地在此多个粒度处操作时,下列中的任何一个或多个:这些实体中的仅单个实体正在执行(或替代地正被例如SSD控制器引导以执行)单个操作(例如,写或读);这些实体中的各种实体正在并行地执行各种相应的操作;以及这些实体中的一个或多个的各种子实体正在并行地执行各种相应的操作。
例如,考虑管理几个闪存管芯的SSD控制器。如下,SSD控制器并行地以各种粒度处的各种较高级别冗余模式操作闪存管芯的各区域。SSD控制器以R-块的粒度处的RASIE-1模式操作区域中的第一个并且以R-块的粒度处的RASIE-2模式操作区域中的第二个。SSD控制器以R-页面的粒度处的RASIE-2模式操作区域中的第三个并且以R-页面的粒度处的RASIE-3模式操作区域中的第四个。在并行操作期间,区域中的每一个根据R-块或R-页面粒度同时地存储信息并且同时地可用于写/读信息。
继续此示例,在并行操作期间的一段时间上,SSD控制器顺序地将一系列写命令提供至闪存管芯中的每一个。此一系列写命令对应于写入第一区域的全部并且是根据R-块的粒度处的RASIE-1模式。在某些场景中,写命令中的每一个是由SSD控制器一次一个地发出至闪存管芯。因此SSD控制器一次执行单个操作同时以各种粒度处的各种较高级别冗余模式并行地操作多个区域。在某些场景中,这些写命令在相对短的时间跨度中由闪存管芯接收,使得闪存管芯中的至少两个或多个能够至少部分地并行地继续进行相应的页面编程操作。因此,此至少两个或多个闪存管芯正并行地执行多个操作同时正以各种粒度处的各种较高级别冗余模式并行地进行操作。
在某些实施例和/或使用场景中,以多个粒度处的较高级别冗余模式并行地操作与自适应较低级别码率结合使用。例如,NVM的多个R-块最初以R-块粒度处的RASIE-1模式并且利用第一自适应较低级别码率进行操作。接着这些R-块中的特定一个的多个页面中的一个变得较不可靠。作为响应,较不可靠页面的读单元中的一个或多个利用第二自适应较低级别码率进行操作,该第二自适应较低级别码率具有比第一自适应较低级别码率好的错误纠正。随后,较不可靠页面变得进一步不可靠。作为响应,包括较不可靠页面的R-页面以R-页面的粒度处的第二较高级别冗余模式(具有比第一较高级别冗余模式好的错误纠正)进行操作。此特定R-块的其它R-页面继续以第一较高级别冗余模式进行操作,但现在处于R-页面(而不是R-块)的粒度。除了此特定R-块之外的R-块继续以第一较高级别冗余模式并且在R-块的粒度处进行操作。因此,尽管此较不可靠页面变得越来越不可靠,然而此较不可靠页面仍然是可用的(虽然处于减少的可用存储容量)。因此,在某些场景中,以多个粒度处的较高级别冗余模式并行地操作连同自适应较低级别码率一起使得改进的NVM和/或SSD寿命成为可能。
其它实施例信息
在各实施例中,图8、10-12、13A-13D、14A-14B、15A-15B和17的一个或多个元素的处理或与图8、10-12、13A-13D、14A-14B、15A-15B和17的一个或多个元素有关的处理完全地或部分地图1A的一个或多个元素(或其部分)来执行。例如,CPU 171的软件执行能力的一部分被用于管理较高级别冗余处理,诸如通过引导如由图8所示的操作模式的动态转换、通过引导如由图12和图13A-13D所示的数据恢复操作和/或通过引导如由图17所示的在较高级别冗余模式的各种粒度中的并行操作。再例如,数据处理121包括硬件元件,这些硬件元件致力于和/或专用于根据诸如由图11、12、13A-13D和15C中的任何一个或多个所示的计算的较高级别冗余信息的计算。
示例性实现技术
在某些实施例中,由实现用于NVM(例如,闪存存储器)、计算主机闪存控制器和/或SSD控制器(诸如图1A的SSD控制器100)的混合粒度较高级别冗余的系统所执行的操作的全部或任意部分的各种组合以及提供前述操作的全部或部分的处理器、微处理器、片上系统、专用集成电路、硬件加速器或其它电路系统的部分是由与通过计算机系统的处理兼容的规范规定。此规范是根据各种描述,诸如硬件描述语言、电路描述、网表描述、掩码描述或布局描述。示例性描述包括:Verilog、VHDL、SPICE、SPICE变型诸如PSpice、IBIS、LEF、DEF、GDS-II、OASIS或其它描述。在各实施例中,此处理包括解读、编辑、模拟和综合的任意组合以产生、证实或规定适用于包含在一个或多个集成电路上的逻辑和/或电路。根据各实施例,每一集成电路根据各种技术是可设计的和/或可制造的。此技术包括可编程技术(诸如现场或掩模可编程门阵列集成电路)、半定制技术(诸如完全地或部分地基于单元的集成电路)以及全定制技术(诸如基本上专用的集成电路)、其任意组合或与集成电路的设计和/或制造兼容的任何其它技术。
在某些实施例中,如由其中存储有一组指令的计算机可读介质所描述的操作的全部或部分的各种组合通过一个或多个程序指令的执行和/或解释、通过一个或多个源和/或脚本语言语句的解释和/或编译、或通过由编译、翻译和/或解释以编程和/或脚本语言语句表达的信息所产生的二进制指令的执行来执行。此语句与任何标准的编程或脚本语言(诸如C、C++、Fortran、Pascal、Ada、Java、VBscript和Shell)兼容。程序指令、语言语句或二进制指令中的一个或多个可选地被存储在一个或多个计算机可读存储介质元件上。在各实施例中,程序指令中的一些、全部或各种部分被实现为一个或多个函数、例程、子例程、内嵌(in-line)例程、程序、宏命令或其部分。
结论
为了方便准备文字和附图,在说明书中作出特定选择,并且除非存在相反指示,这些选择本身不应被解释为传达关于所描述的实施例的结构或操作的附加信息。这些选择的示例包括:用于图形编号的指定的特定组织或分配以及用于标识和参考实施例的特征和元素的元素标识符(例如,插图编号或数值标志符)的特定组织或分配。
词语“包括(includes)”或“包括有(including)”特别地旨在被解释为描述开放式范围的逻辑组的抽象化并且不旨在传达物理封闭,除非明确地接着单词“在…内(within)”。
尽管出于描述和理解清楚的目的部分详细地描述了前述实施例,然而本发明不限于所提供的细节。存在本发明的许多实施例。所公开的实施例是示例性的并不是限制性的。
将理解,构造、布置和使用的许多变型可能与说明书一致,并且位于发布的专利的权利要求的范围内。例如,根据每一组件块中的各实施例,互连和功能单元位宽、时钟速度和所使用的技术的类型是可变的。赋予互连和逻辑的名称仅仅是示例性的,并且不应被解释为限制所描述的概念。流程图和流程图过程、行动和功能元件的顺序和布置根据各实施例是可变的。同样,除非明确陈述相反情况,所规定的值范围、所使用的最大和最小值或其它特别规定(诸如闪存技术类型;以及寄存器和缓冲器中的条目或阶段的数量)仅仅是所描述的实施例的那些、被期望来跟踪实现技术中的改进和变化并且不应被解释为限制。
从功能上,本领域已知的等效技术可代替所描述的那些用来实现各种部件、子系统、操作、功能、例程、子例程、内嵌例程、程序、宏命令或其部分。也要理解实施例的很多功能方面可选择性地在硬件(例如,一般专用电路)或软件(例如,经由某种方式的程序化控制器或处理器)中实现,因为实施例的功能依赖更快的处理(促进先前在硬件中的功能到软件中的迁移)和更高的集成密度(促进先前在软件中的功能到硬件中的迁移)的设计约束和技术趋势。各实施例的特定变型包括但不限于:分区的不同;不同的形成因素和配置;不同操作系统和其它系统软件的使用;不同接口标准、网络协议或通信链路的使用;以及当根据特定应用的唯一的工程和商业约束实现本文中所描述的概念时被预期的其它变型。
各实施例已详细地进行描述并且环境背景很好地超过了对于所描述的实施例的很多方面的最低实现所需的环境背景。本领域普通技术人员将意识到一些实施例省略了公开的部件或特征而没有改变在剩余元素之中的基本协作。因此理解到不需要所公开的细节中的很多来实现所描述的实施例的各个方面。到剩余元素可与现有技术区别开的程度,被省略的部件和特征不限制本文中所描述的概念。
所有这些设计的变型是在由所描述的实施例传达的教导上的非实质性变化。同样理解本文中所描述的实施例具有到其它计算和网络化应用的广泛适用性,并且不限于所描述实施例的特定应用或行业。因此本发明被解释为包括在发布的专利的权利要求的范围内所涵盖的所有可能的修改和变型。
Claims (24)
1.一种方法,包括:
在第一较高级别冗余模式中操作,其包括将M个信息部分存储在存储器的M个相应的区域中,所述M个相应的区域中的每一个是相同的第一尺寸;
在第二较高级别冗余模式中操作,其包括将N个信息部分存储在存储器的N个相应的区域中,所述N个相应的区域中的每一个是相同的第二尺寸;
其中所述M个信息部分包括相应的M-J个数据信息部分和经计算以保护所述相应的M-J个数据信息部分的相应的J个冗余信息部分;
其中所述N个信息部分包括相应的N-K个数据信息部分和经计算以保护所述相应的N-K个数据信息部分的相应的K个冗余信息部分;
其中所述M个相应的区域和所述N个相应的区域中的每一个是所述存储器的非重叠的区域;
其中所述第一尺寸不同于所述第二尺寸;以及
其中所述M个相应的区域中的每一个是在所述存储器的M个物理设备的相应的一个中,并且其中所述N个相应的区域中的每一个是在所述存储器的N个物理设备的相应的一个中。
2.如权利要求1所述的方法,其特征在于,所述M个物理设备中的至少一些是所述N个物理设备中的至少一些。
3.如权利要求1所述的方法,其特征在于,进一步包括访问在特定区域中完全地被包括的一个或多个位置,所述特定区域是所述M个相应的区域中的任何一个或所述N个相应的区域中的任何一个,所述访问包括确定所述特定区域的尺寸。
4.如权利要求1所述的方法,其特征在于,
所述存储器包括多个闪存设备;
所述M个相应的区域对应于所述闪存设备中的一个或多个第一闪存设备的M个相应的块,并且所述第一尺寸对应于一个块;以及
所述N个相应的区域对应于所述闪存设备中的一个或多个第二闪存设备的N个相应的页面,并且所述第二尺寸对应于一个页面。
5.如权利要求4所述的方法,其特征在于,进一步包括检测所述M个相应的块中的一个块的故障,并且作为响应,以所述第二较高级别冗余模式操作至少出故障的块。
6.如权利要求5所述的方法,其特征在于,J不等于K。
7.一种系统,包括:
用于根据相应的第一和第二较高级别冗余模式管理存储器的装置;
用于响应于用于管理存储器的装置而存储至所述存储器的装置;其中用于管理存储器的装置被启用以引导用于存储的装置将M个信息部分存储在存储器的M个相应的区域中,所述M个相应的区域中的每一个是相同的第一尺寸;
其中用于管理存储器的装置进一步被启用以引导用于存储的装置将N个信息部分存储在所述存储器的N个相应的区域中,所述N个相应的区域中的每一个是相同的第二尺寸;
其中所述M个信息部分包括相应的M-J个数据信息部分和经计算以保护所述相应的M-J个数据信息部分的相应的J个冗余信息部分;
其中所述N个信息部分包括相应的N-K个数据信息部分和经计算以保护所述相应的N-K个数据信息部分的相应的K个冗余信息部分;
其中所述M个相应的区域和所述N个相应的区域中的每一个是所述存储器的非重叠的区域;
其中所述第一尺寸不同于所述第二尺寸;以及
其中所述M个相应的区域中的每一个是在所述存储器的M个物理设备的相应的一个中,并且其中所述N个相应的区域中的每一个是在所述存储器的N个物理设备的相应的一个中。
8.如权利要求7所述的系统,其特征在于,所述M个物理设备中的至少一些是所述N个物理设备中的至少一些。
9.如权利要求7所述的系统,其特征在于,进一步包括用于访问在特定区域中完全地被包括的一个或多个位置的装置,所述特定区域是所述M个相应的区域中的任何一个或所述N个相应的区域中的任何一个,用于访问的装置被启用以确定所述特定区域的尺寸。
10.如权利要求7所述的系统,其特征在于,
所述存储器包括多个闪存设备;
所述M个相应的区域对应于所述闪存设备中的一个或多个第一闪存设备的M个相应的块,并且所述第一尺寸对应于一个块;以及
所述N个相应的区域对应于所述闪存设备中的一个或多个第二闪存设备的N个相应的页面,并且所述第二尺寸对应于一个页面。
11.如权利要求10所述的系统,其特征在于,用于管理存储器的装置被启用以检测所述M个相应的块中的一个块的故障并且响应于所述检测以所述第二较高级别冗余模式操作至少出故障的块。
12.如权利要求11所述的系统,其特征在于,J不等于K。
13.一种装置,包括:
较高级别冗余控制电路,被启用以根据相应的第一和第二较高级别冗余模式来控制存储器;
存储电路,响应于所述较高级别冗余控制电路;
其中所述较高级别冗余控制电路被启用以引导所述存储电路将M个信息部分存储在存储器的M个相应的区域中,所述M个相应的区域中的每一个是相同的第一尺寸;
其中所述较高级别冗余控制电路进一步被启用以引导所述存储电路将N个信息部分存储在所述存储器的N个相应的区域中,所述N个相应的区域中的每一个是相同的第二尺寸;
其中所述M个信息部分包括相应的M-J个数据信息部分和经计算以保护所述相应的M-J个数据信息部分的相应的J个冗余信息部分;
其中所述N个信息部分包括相应的N-K个数据信息部分和经计算以保护所述相应的N-K个数据信息部分的相应的K个冗余信息部分;
其中所述M个相应的区域和所述N个相应的区域中的每一个是所述存储器的非重叠的区域;
其中所述第一尺寸不同于所述第二尺寸;以及
其中所述M个相应的区域中的每一个是在所述存储器的M个物理设备的相应的一个中,并且其中所述N个相应的区域中的每一个是在所述存储器的N个物理设备的相应的一个中。
14.如权利要求13所述的装置,其特征在于,所述M个物理设备中的至少一些是所述N个物理设备中的至少一些。
15.如权利要求13所述的装置,其特征在于,进一步包括访问电路,所述访问电路被启用以访问在特定区域中完全地被包括的一个或多个位置,所述特定区域是所述M个相应的区域中的任何一个或所述N个相应的区域中的任何一个,所述访问电路进一步被启用以确定所述特定区域的尺寸。
16.如权利要求13所述的装置,其特征在于,
所述存储器包括多个闪存设备;
所述M个相应的区域对应于所述闪存设备中的一个或多个第一闪存设备的M个相应的块,并且所述第一尺寸对应于一个块;以及
所述N个相应的区域对应于所述闪存设备中的一个或多个第二闪存设备的N个相应的页面,并且所述第二尺寸对应于一个页面。
17.如权利要求16所述的装置,其特征在于,所述较高级别冗余控制电路进一步被启用以检测所述M个相应的块中的一个块的故障并且响应于所述检测以所述第二较高级别冗余模式操作至少出故障的块。
18.如权利要求17所述的装置,其特征在于,J不等于K。
19.一种其中存储有一组指令的有形计算机可读介质,所述一组指令在由处理元件执行时使所述处理元件执行和/或控制包括以下各项的操作:
在第一较高级别冗余模式中操作,其包括将M个信息部分存储在存储器的M个相应的区域中,所述M个相应的区域中的每一个是相同的第一尺寸;
在第二较高级别冗余模式中操作,其包括将N个信息部分存储在存储器的N个相应的区域中,所述N个相应的区域中的每一个是相同的第二尺寸;
其中所述M个信息部分包括相应的M-J个数据信息部分和经计算以保护所述相应的M-J个数据信息部分的相应的J个冗余信息部分;
其中所述N个信息部分包括相应的N-K个数据信息部分和经计算以保护所述相应的N-K个数据信息部分的相应的K个冗余信息部分;
其中所述M个相应的区域和所述N个相应的区域中的每一个是所述存储器的非重叠的区域;
其中所述第一尺寸不同于所述第二尺寸;以及
其中所述M个相应的区域中的每一个是在所述存储器的M个物理设备的相应的一个中,并且其中所述N个相应的区域中的每一个是在所述存储器的N个物理设备的相应的一个中。
20.如权利要求19所述的有形计算机可读介质,其特征在于,所述M个物理设备中的至少一些是所述N个物理设备中的至少一些。
21.如权利要求19所述的有形计算机可读介质,其特征在于,所述操作进一步包括访问在特定区域中完全地被包括的一个或多个位置,所述特定区域是所述M个相应的区域中的任何一个或所述N个相应的区域中的任何一个,所述访问包括确定所述特定区域的尺寸。
22.如权利要求19所述的有形计算机可读介质,其特征在于,
所述存储器包括多个闪存设备;
所述M个相应的区域对应于所述闪存设备中的一个或多个第一闪存设备的M个相应的块,并且所述第一尺寸对应于一个块;以及
所述N个相应的区域对应于所述闪存设备中的一个或多个第二闪存设备的N个相应的页面,并且所述第二尺寸对应于一个页面。
23.如权利要求22所述的有形计算机可读介质,其特征在于,所述操作进一步包括检测所述M个相应的块中的一个块的故障,并且作为响应以所述第二较高级别冗余模式操作至少出故障的块。
24.如权利要求23所述的有形计算机可读介质,其特征在于,J不等于K。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/565,752 | 2012-08-02 | ||
US13/565,752 US8856431B2 (en) | 2012-08-02 | 2012-08-02 | Mixed granularity higher-level redundancy for non-volatile memory |
PCT/US2013/051720 WO2014022159A1 (en) | 2012-08-02 | 2013-07-23 | Mixed granularity higher-level redundancy for non-volatile memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107155358A true CN107155358A (zh) | 2017-09-12 |
CN107155358B CN107155358B (zh) | 2020-07-10 |
Family
ID=50026653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380051776.XA Active CN107155358B (zh) | 2012-08-02 | 2013-07-23 | 用于非易失性存储器的混合粒度较高级别冗余 |
Country Status (7)
Country | Link |
---|---|
US (2) | US8856431B2 (zh) |
EP (1) | EP2880533A4 (zh) |
JP (1) | JP6185993B2 (zh) |
KR (1) | KR102101650B1 (zh) |
CN (1) | CN107155358B (zh) |
TW (1) | TWI566254B (zh) |
WO (1) | WO2014022159A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108564981A (zh) * | 2018-03-27 | 2018-09-21 | 深圳忆联信息系统有限公司 | 一种存储装置数据安全动态监控方法 |
CN109541444A (zh) * | 2018-10-18 | 2019-03-29 | 天津大学 | 基于混合粒度奇偶校验的集成电路故障注入检测方法 |
CN109919826A (zh) * | 2019-02-02 | 2019-06-21 | 西安邮电大学 | 一种用于图计算加速器的图数据压缩方法及图计算加速器 |
CN109948186A (zh) * | 2019-02-19 | 2019-06-28 | 中国科学院微电子研究所 | 一种汉明码SRAM时序参数Setup特征化建模方法 |
CN110209374A (zh) * | 2019-05-23 | 2019-09-06 | 浙江大学 | 一种基于racetrack memory的乘法器及其操作方法 |
CN111767165A (zh) * | 2020-06-30 | 2020-10-13 | 杭州海康存储科技有限公司 | 数据处理方法、装置及控制设备 |
CN112383314A (zh) * | 2021-01-12 | 2021-02-19 | 杭州阿姆科技有限公司 | 一种基于raid信息的ldpc纠错方法 |
CN114637712A (zh) * | 2022-03-18 | 2022-06-17 | 无锡众星微系统技术有限公司 | 一种EDFB模式下SAS2SATA Bridge的错误处理方法和装置 |
CN114817231A (zh) * | 2022-06-30 | 2022-07-29 | 深圳中科智能技术有限公司 | 一种冗余数据识别过滤方法及系统 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9105305B2 (en) | 2010-12-01 | 2015-08-11 | Seagate Technology Llc | Dynamic higher-level redundancy mode management with independent silicon elements |
KR101454807B1 (ko) | 2011-01-18 | 2014-11-04 | 엘에스아이 코포레이션 | 상위-레벨 리던던시 정보 계산 |
US9495288B2 (en) * | 2013-01-22 | 2016-11-15 | Seagate Technology Llc | Variable-size flash translation layer |
US9524113B2 (en) * | 2013-05-24 | 2016-12-20 | Seagate Technology Llc | Variable redundancy in a solid state drive |
US8874835B1 (en) | 2014-01-16 | 2014-10-28 | Pure Storage, Inc. | Data placement based on data properties in a tiered storage device system |
TWI550628B (zh) * | 2014-07-16 | 2016-09-21 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
KR102249810B1 (ko) | 2014-07-23 | 2021-05-11 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
US10402319B2 (en) * | 2014-07-25 | 2019-09-03 | Micron Technology, Inc. | Apparatuses and methods for concurrently accessing different memory planes of a memory |
US9766972B2 (en) | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US9558069B2 (en) * | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
CN106155812A (zh) | 2015-04-28 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种对虚拟主机的资源管理的方法、装置、系统及电子设备 |
US10439650B2 (en) | 2015-05-27 | 2019-10-08 | Quantum Corporation | Cloud-based solid state device (SSD) with dynamically variable error correcting code (ECC) system |
KR102385138B1 (ko) * | 2015-10-08 | 2022-04-12 | 삼성전자주식회사 | 정정 불가능한 ecc 오류를 갖는 데이터를 복구하도록 구성되는 raid 컨트롤러 장치 및 스토리지 장치 |
US10002042B2 (en) * | 2015-10-22 | 2018-06-19 | Sandisk Technologies Llc | Systems and methods of detecting errors during read operations and skipping word line portions |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
KR20180027803A (ko) * | 2016-09-07 | 2018-03-15 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 |
JP6725375B2 (ja) | 2016-09-14 | 2020-07-15 | キオクシア株式会社 | メモリシステムおよび方法 |
JP6553566B2 (ja) * | 2016-09-23 | 2019-07-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
JP6709180B2 (ja) * | 2017-02-28 | 2020-06-10 | キオクシア株式会社 | メモリシステムおよび制御方法 |
US10474527B1 (en) | 2017-06-30 | 2019-11-12 | Seagate Technology Llc | Host-assisted error recovery |
US10585749B2 (en) | 2017-08-10 | 2020-03-10 | Samsung Electronics Co., Ltd. | System and method for distributed erasure coding |
US10705906B2 (en) | 2018-02-01 | 2020-07-07 | Toshiba Memory Corporation | Apparatus and control method thereof |
KR102495915B1 (ko) | 2018-04-30 | 2023-02-03 | 삼성전자 주식회사 | 스토리지 장치 및 상기 스토리지 장치를 포함하는 서버 |
US20190050161A1 (en) * | 2018-06-21 | 2019-02-14 | Intel Corporation | Data storage controller |
US11171671B2 (en) * | 2019-02-25 | 2021-11-09 | Samsung Electronics Co., Ltd. | Reducing vulnerability window in key value storage server without sacrificing usable capacity |
TWI695264B (zh) * | 2019-05-20 | 2020-06-01 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
JP7302497B2 (ja) * | 2020-02-07 | 2023-07-04 | Tdk株式会社 | メモリコントローラ及びフラッシュメモリシステム |
US20230015697A1 (en) * | 2021-07-13 | 2023-01-19 | Citrix Systems, Inc. | Application programming interface (api) authorization |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050066226A1 (en) * | 2003-09-23 | 2005-03-24 | Adams R. Dean | Redundant memory self-test |
US20100287448A1 (en) * | 2009-05-05 | 2010-11-11 | Lite-On It Corp. | Flash memory device with rectifiable redundancy bit and method of controlling the same |
CN102436852A (zh) * | 2012-01-06 | 2012-05-02 | 北京航空航天大学 | 一种纠正固定错误的数据校验与纠错方法 |
Family Cites Families (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5099484A (en) | 1989-06-09 | 1992-03-24 | Digital Equipment Corporation | Multiple bit error detection and correction system employing a modified Reed-Solomon code incorporating address parity and catastrophic failure detection |
US5247523A (en) | 1989-07-12 | 1993-09-21 | Hitachi, Ltd. | Code error correction apparatus |
US6347051B2 (en) | 1991-11-26 | 2002-02-12 | Hitachi, Ltd. | Storage device employing a flash memory |
TW261687B (zh) | 1991-11-26 | 1995-11-01 | Hitachi Seisakusyo Kk | |
JPH07271672A (ja) | 1994-03-30 | 1995-10-20 | Toshiba Corp | マルチウェイセットアソシアティブキャッシュシステム |
WO1996012229A1 (en) | 1994-10-14 | 1996-04-25 | Silicon Graphics, Inc. | Indexing and multiplexing of interleaved cache memory arrays |
US5666512A (en) | 1995-02-10 | 1997-09-09 | Hewlett-Packard Company | Disk array having hot spare resources and methods for using hot spare resources to store user data |
US5862158A (en) | 1995-11-08 | 1999-01-19 | International Business Machines Corporation | Efficient method for providing fault tolerance against double device failures in multiple device systems |
US6557123B1 (en) | 1999-08-02 | 2003-04-29 | Inostor Corporation | Data redundancy methods and apparatus |
US6516425B1 (en) * | 1999-10-29 | 2003-02-04 | Hewlett-Packard Co. | Raid rebuild using most vulnerable data redundancy scheme first |
US7117397B1 (en) | 1999-12-15 | 2006-10-03 | Fujitsu Limited | Apparatus and method for preventing an erroneous operation at the time of detection of a system failure |
US6647514B1 (en) * | 2000-03-23 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Host I/O performance and availability of a storage array during rebuild by prioritizing I/O request |
US6678823B1 (en) | 2000-05-01 | 2004-01-13 | Xtec, Incorporated | Methods and apparatus for authenticating data stored in semiconductor memory cells |
US6594796B1 (en) | 2000-06-30 | 2003-07-15 | Oak Technology, Inc. | Simultaneous processing for error detection and P-parity and Q-parity ECC encoding |
KR100388208B1 (ko) | 2001-05-25 | 2003-06-19 | 주식회사 하이닉스반도체 | 반도체 메모리 장치의 리던던시 회로 |
US7073115B2 (en) | 2001-12-28 | 2006-07-04 | Network Appliance, Inc. | Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups |
US7246294B2 (en) | 2002-04-01 | 2007-07-17 | Intel Corporation | Method for iterative hard-decision forward error correction decoding |
JP2004152194A (ja) * | 2002-10-31 | 2004-05-27 | Ricoh Co Ltd | メモリデータ保護方法 |
US7372731B2 (en) | 2003-06-17 | 2008-05-13 | Sandisk Il Ltd. | Flash memories with adaptive reference voltages |
US7206991B2 (en) * | 2003-10-15 | 2007-04-17 | Lsi Logic Corporation | Method, apparatus and program for migrating between striped storage and parity striped storage |
US7237067B2 (en) | 2004-04-22 | 2007-06-26 | Hewlett-Packard Development Company, L.P. | Managing a multi-way associative cache |
JP4551740B2 (ja) | 2004-11-08 | 2010-09-29 | 株式会社東芝 | 低密度パリティチェック符号復号器及び方法 |
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
KR100688549B1 (ko) | 2005-05-24 | 2007-03-02 | 삼성전자주식회사 | 비휘발성 메모리를 지원하는 온더플라이 bcc 코덱시스템 및 방법 |
KR100732628B1 (ko) | 2005-07-28 | 2007-06-27 | 삼성전자주식회사 | 멀티-비트 데이터 및 싱글-비트 데이터를 저장하는 플래시메모리 장치 |
US7631245B2 (en) * | 2005-09-26 | 2009-12-08 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
US7681109B2 (en) | 2005-10-13 | 2010-03-16 | Ramot At Tel Aviv University Ltd. | Method of error correction in MBC flash memory |
US20070143541A1 (en) | 2005-12-19 | 2007-06-21 | Lsi Logic Corporation | Methods and structure for improved migration of raid logical volumes |
US8055979B2 (en) | 2006-01-20 | 2011-11-08 | Marvell World Trade Ltd. | Flash memory with coding and signal processing |
KR101202537B1 (ko) | 2006-05-12 | 2012-11-19 | 애플 인크. | 메모리 디바이스를 위한 결합된 왜곡 추정 및 에러 보정 코딩 |
US7809994B2 (en) | 2006-05-17 | 2010-10-05 | Sandisk Corporation | Error correction coding for multiple-sector pages in flash memory devices |
US8069397B2 (en) | 2006-07-10 | 2011-11-29 | Broadcom Corporation | Use of ECC with iterative decoding for iterative and non-iterative decoding in a read channel for a disk drive |
US7739576B2 (en) | 2006-08-31 | 2010-06-15 | Micron Technology, Inc. | Variable strength ECC |
US20080126839A1 (en) | 2006-09-19 | 2008-05-29 | Satish Sangapu | Optimized reconstruction and copyback methodology for a failed drive in the presence of a global hot spare disc |
US8001441B2 (en) | 2006-11-03 | 2011-08-16 | Sandisk Technologies Inc. | Nonvolatile memory with modulated error correction coding |
US7904780B2 (en) | 2006-11-03 | 2011-03-08 | Sandisk Corporation | Methods of modulating error correction coding |
WO2008070191A2 (en) | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for a reconfigurable baseboard management controller |
US7505319B2 (en) | 2007-01-31 | 2009-03-17 | Taiwan Semiconductor Manufacturing Company, Ltd. | Method and apparatus for high efficiency redundancy scheme for multi-segment SRAM |
WO2008099723A1 (en) | 2007-02-01 | 2008-08-21 | Kabushiki Kaisha Toshiba | Semiconductor memory with reed- solomon decoder |
WO2008111058A2 (en) | 2007-03-12 | 2008-09-18 | Anobit Technologies Ltd. | Adaptive estimation of memory cell read thresholds |
US7904793B2 (en) | 2007-03-29 | 2011-03-08 | Sandisk Corporation | Method for decoding data in non-volatile storage using reliability metrics based on multiple reads |
US8332574B2 (en) * | 2007-04-30 | 2012-12-11 | Sandisk Il Ltd. | Method for efficient storage of metadata in flash memory |
US8418023B2 (en) | 2007-05-01 | 2013-04-09 | The Texas A&M University System | Low density parity check decoder for irregular LDPC codes |
US7873779B2 (en) * | 2007-05-14 | 2011-01-18 | Qualcomm Incorporated | Memory page size auto detection |
KR100888842B1 (ko) | 2007-06-28 | 2009-03-17 | 삼성전자주식회사 | 읽기 전압을 최적화할 수 있는 플래시 메모리 장치 및그것의 독출 전압 설정 방법 |
WO2009072101A2 (en) | 2007-12-05 | 2009-06-11 | Densbits Technologies Ltd. | Apparatus and methods for generating row-specific reading thresholds in flash memory |
US8335977B2 (en) | 2007-12-05 | 2012-12-18 | Densbits Technologies Ltd. | Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated BCH codes and/or designation of “first below” cells |
US7656707B2 (en) | 2007-12-14 | 2010-02-02 | Intel Corporation | Systems and methods for discrete channel decoding of LDPC codes for flash memory |
US8443260B2 (en) | 2007-12-27 | 2013-05-14 | Sandisk Il Ltd. | Error correction in copy back memory operations |
US20090177943A1 (en) | 2008-01-09 | 2009-07-09 | Broadcom Corporation | Error correction coding using soft information and interleaving |
US8276043B2 (en) | 2008-03-01 | 2012-09-25 | Kabushiki Kaisha Toshiba | Memory system |
US8724381B2 (en) | 2008-03-11 | 2014-05-13 | Agere Systems Llc | Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding |
US7843725B2 (en) | 2008-06-11 | 2010-11-30 | Micron Technology, Inc. | M+L bit read column architecture for M bit memory cells |
US20100017649A1 (en) | 2008-07-19 | 2010-01-21 | Nanostar Corporation | Data storage system with wear-leveling algorithm |
US20100017650A1 (en) | 2008-07-19 | 2010-01-21 | Nanostar Corporation, U.S.A | Non-volatile memory data storage system with reliability management |
KR101391362B1 (ko) | 2008-07-23 | 2014-05-07 | 삼성전자주식회사 | 읽기 전압 레벨이 설정가능한 플래시 메모리 시스템 및읽기 전압 레벨의 설정방법 |
TWI389127B (zh) * | 2008-08-01 | 2013-03-11 | Jmicron Technology Corp | 快閃記憶體的配置方法 |
KR100967004B1 (ko) | 2008-08-05 | 2010-06-30 | 주식회사 하이닉스반도체 | 플래시 메모리 장치의 동작 제어 방법 |
US8041984B2 (en) | 2008-10-17 | 2011-10-18 | International Business Machines Corporation | Redundancy information for adjusting threshold for component failure in a multi-layer system |
KR101059673B1 (ko) | 2008-12-26 | 2011-08-25 | 서울대학교산학협력단 | 신뢰도 또는 저장 용량을 동적으로 조절하는 저장 장치 및 그 방법 |
US8065558B2 (en) | 2009-03-24 | 2011-11-22 | Lsi Corporation | Data volume rebuilder and methods for arranging data volumes for improved RAID reconstruction performance |
US8307258B2 (en) | 2009-05-18 | 2012-11-06 | Fusion-10, Inc | Apparatus, system, and method for reconfiguring an array to operate with less storage elements |
JP2011040124A (ja) | 2009-08-07 | 2011-02-24 | Toshiba Corp | 半導体記憶装置のデータ読み出し方法 |
US8074013B2 (en) | 2009-09-21 | 2011-12-06 | Skymedi Corporation | Uniform coding system for a flash memory |
WO2011094454A2 (en) | 2010-01-27 | 2011-08-04 | Fusion-Io, Inc. | Apparatus, system, and method for determining a read voltage threshold for solid-state storage media |
KR101633048B1 (ko) | 2010-02-25 | 2016-06-24 | 삼성전자주식회사 | 메모리 시스템 및 그것의 데이터 처리 방법 |
US8935595B2 (en) | 2010-03-12 | 2015-01-13 | Lsi Corporation | LDPC erasure decoding for flash memories |
US9189385B2 (en) | 2010-03-22 | 2015-11-17 | Seagate Technology Llc | Scalable data structures for control and management of non-volatile storage |
KR101635506B1 (ko) | 2010-03-29 | 2016-07-04 | 삼성전자주식회사 | 데이터 저장 시스템 및 그것의 읽기 방법 |
US8667361B1 (en) | 2010-10-21 | 2014-03-04 | Marvell International Ltd. | Systems and methods for performing bit flipping in an LDPC decoder |
CN103329103B (zh) | 2010-10-27 | 2017-04-05 | 希捷科技有限公司 | 使用用于基于闪存的数据存储的自适应ecc技术的方法和设备 |
US9727414B2 (en) | 2010-12-01 | 2017-08-08 | Seagate Technology Llc | Fractional redundant array of silicon independent elements |
US9105305B2 (en) | 2010-12-01 | 2015-08-11 | Seagate Technology Llc | Dynamic higher-level redundancy mode management with independent silicon elements |
US8719663B2 (en) | 2010-12-12 | 2014-05-06 | Lsi Corporation | Cross-decoding for non-volatile storage |
KR101454807B1 (ko) | 2011-01-18 | 2014-11-04 | 엘에스아이 코포레이션 | 상위-레벨 리던던시 정보 계산 |
US8839073B2 (en) | 2012-05-04 | 2014-09-16 | Lsi Corporation | Zero-one balance management in a solid-state disk controller |
-
2012
- 2012-08-02 US US13/565,752 patent/US8856431B2/en active Active
-
2013
- 2013-07-23 EP EP13825514.6A patent/EP2880533A4/en not_active Withdrawn
- 2013-07-23 WO PCT/US2013/051720 patent/WO2014022159A1/en active Application Filing
- 2013-07-23 KR KR1020157005442A patent/KR102101650B1/ko active IP Right Grant
- 2013-07-23 JP JP2015525458A patent/JP6185993B2/ja not_active Expired - Fee Related
- 2013-07-23 CN CN201380051776.XA patent/CN107155358B/zh active Active
- 2013-07-31 TW TW102127494A patent/TWI566254B/zh not_active IP Right Cessation
-
2014
- 2014-10-06 US US14/507,140 patent/US9323612B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050066226A1 (en) * | 2003-09-23 | 2005-03-24 | Adams R. Dean | Redundant memory self-test |
US20100287448A1 (en) * | 2009-05-05 | 2010-11-11 | Lite-On It Corp. | Flash memory device with rectifiable redundancy bit and method of controlling the same |
CN102436852A (zh) * | 2012-01-06 | 2012-05-02 | 北京航空航天大学 | 一种纠正固定错误的数据校验与纠错方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108564981A (zh) * | 2018-03-27 | 2018-09-21 | 深圳忆联信息系统有限公司 | 一种存储装置数据安全动态监控方法 |
CN108564981B (zh) * | 2018-03-27 | 2021-10-01 | 深圳忆联信息系统有限公司 | 一种存储装置数据安全动态监控方法 |
CN109541444A (zh) * | 2018-10-18 | 2019-03-29 | 天津大学 | 基于混合粒度奇偶校验的集成电路故障注入检测方法 |
CN109919826B (zh) * | 2019-02-02 | 2023-02-17 | 西安邮电大学 | 一种用于图计算加速器的图数据压缩方法及图计算加速器 |
CN109919826A (zh) * | 2019-02-02 | 2019-06-21 | 西安邮电大学 | 一种用于图计算加速器的图数据压缩方法及图计算加速器 |
CN109948186A (zh) * | 2019-02-19 | 2019-06-28 | 中国科学院微电子研究所 | 一种汉明码SRAM时序参数Setup特征化建模方法 |
CN109948186B (zh) * | 2019-02-19 | 2023-04-28 | 中国科学院微电子研究所 | 一种汉明码SRAM时序参数Setup特征化建模方法 |
CN110209374A (zh) * | 2019-05-23 | 2019-09-06 | 浙江大学 | 一种基于racetrack memory的乘法器及其操作方法 |
CN111767165A (zh) * | 2020-06-30 | 2020-10-13 | 杭州海康存储科技有限公司 | 数据处理方法、装置及控制设备 |
CN112383314A (zh) * | 2021-01-12 | 2021-02-19 | 杭州阿姆科技有限公司 | 一种基于raid信息的ldpc纠错方法 |
CN112383314B (zh) * | 2021-01-12 | 2021-04-06 | 杭州阿姆科技有限公司 | 一种基于raid信息的ldpc纠错方法 |
CN114637712A (zh) * | 2022-03-18 | 2022-06-17 | 无锡众星微系统技术有限公司 | 一种EDFB模式下SAS2SATA Bridge的错误处理方法和装置 |
CN114637712B (zh) * | 2022-03-18 | 2023-03-10 | 无锡众星微系统技术有限公司 | 一种EDFB模式下SAS2SATA Bridge的错误处理方法和装置 |
CN114817231A (zh) * | 2022-06-30 | 2022-07-29 | 深圳中科智能技术有限公司 | 一种冗余数据识别过滤方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20140040530A1 (en) | 2014-02-06 |
WO2014022159A1 (en) | 2014-02-06 |
US8856431B2 (en) | 2014-10-07 |
TWI566254B (zh) | 2017-01-11 |
US20150154070A1 (en) | 2015-06-04 |
US9323612B2 (en) | 2016-04-26 |
EP2880533A1 (en) | 2015-06-10 |
JP6185993B2 (ja) | 2017-08-23 |
EP2880533A4 (en) | 2016-07-13 |
KR20150041004A (ko) | 2015-04-15 |
CN107155358B (zh) | 2020-07-10 |
TW201413726A (zh) | 2014-04-01 |
KR102101650B1 (ko) | 2020-04-17 |
JP2015524975A (ja) | 2015-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107155358A (zh) | 用于非易失性存储器的混合粒度较高级别冗余 | |
US11379301B2 (en) | Fractional redundant array of silicon independent elements | |
US11144389B2 (en) | Non-volatile memory program failure recovery via redundant arrays | |
CN103348330B (zh) | 采用独立硅元件的动态较高级冗余模式管理 | |
KR101564569B1 (ko) | 상위-레벨 리던던시 정보 계산 | |
TWI531902B (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 |