CN103415844B - 用于高级冗余信息计算的系统和方法 - Google Patents
用于高级冗余信息计算的系统和方法 Download PDFInfo
- Publication number
- CN103415844B CN103415844B CN201280012139.7A CN201280012139A CN103415844B CN 103415844 B CN103415844 B CN 103415844B CN 201280012139 A CN201280012139 A CN 201280012139A CN 103415844 B CN103415844 B CN 103415844B
- Authority
- CN
- China
- Prior art keywords
- information unit
- data storage
- storage information
- order
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 120
- 230000015654 memory Effects 0.000 claims abstract description 202
- 239000007787 solid Substances 0.000 claims abstract description 14
- 238000013500 data storage Methods 0.000 claims description 113
- 230000008569 process Effects 0.000 claims description 57
- 238000003860 storage Methods 0.000 claims description 43
- 230000004044 response Effects 0.000 claims description 37
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 abstract description 61
- 238000004422 calculation algorithm Methods 0.000 abstract description 6
- 230000036961 partial effect Effects 0.000 abstract description 4
- 230000000875 corresponding effect Effects 0.000 description 71
- 238000007726 management method Methods 0.000 description 37
- 238000012937 correction Methods 0.000 description 34
- 238000009825 accumulation Methods 0.000 description 31
- 238000011084 recovery Methods 0.000 description 28
- 238000013507 mapping Methods 0.000 description 23
- 230000006870 function Effects 0.000 description 19
- 238000012545 processing Methods 0.000 description 19
- 230000008859 change Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 13
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 11
- 239000013307 optical fiber Substances 0.000 description 11
- 229910052710 silicon Inorganic materials 0.000 description 11
- 239000010703 silicon Substances 0.000 description 11
- 239000003292 glue Substances 0.000 description 10
- 230000003139 buffering effect Effects 0.000 description 8
- 238000009826 distribution Methods 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000001514 detection method Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000007257 malfunction Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 239000004606 Fillers/Extenders Substances 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 239000003999 initiator Substances 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- APTZNLHMIGJTEW-UHFFFAOYSA-N pyraflufen-ethyl Chemical compound C1=C(Cl)C(OCC(=O)OCC)=CC(C=2C(=C(OC(F)F)N(C)N=2)Cl)=C1F APTZNLHMIGJTEW-UHFFFAOYSA-N 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 241001604129 Polydactylus Species 0.000 description 2
- 229910052581 Si3N4 Inorganic materials 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000033001 locomotion Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 229910021420 polycrystalline silicon Inorganic materials 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- HQVNEWCFYHHQES-UHFFFAOYSA-N silicon nitride Chemical compound N12[Si]34N5[Si]62N3[Si]51N64 HQVNEWCFYHHQES-UHFFFAOYSA-N 0.000 description 2
- 235000013599 spices Nutrition 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 102100024406 60S ribosomal protein L15 Human genes 0.000 description 1
- 101001117935 Homo sapiens 60S ribosomal protein L15 Proteins 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005553 drilling Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000005307 ferromagnetism Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 229920005591 polysilicon Polymers 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000002407 reforming Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/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/1044—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 with specific ECC/EDC distribution
-
- 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
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
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)
- Detection And Correction Of Errors (AREA)
Abstract
高级冗余信息计算使固态磁盘(SSD)控制器能够提供高级冗余能力从而在SSD的操作期间在非易失性(例如,闪存)存储器元件故障的环境中维持可靠操作。经由将由高级冗余信息保护的部分数据中的所有页面的异或使用奇偶校验编码来计算高级冗余信息的第一部分。使用加权和技术来计算高级冗余信息的第二部分,当计算加权和时该部分中的每一页面被分配唯一非零“索引”以作为权重。在有限域(诸如伽罗瓦域)上执行算法。高级冗余信息的部分可以以任何顺序,诸如基于非易失性存储器元件的读取操作完成的顺序的顺序来计算。
Description
相关申请的交叉引用
在所附的申请数据表、请求书和传送信(视情况,如果有的话)中列出了对本申请的优先权权益要求。在当前申请的类型所允许的范围内,为了所有目的,本申请通过引用并入在完成本发明时与当前申请共同拥有的下列申请:
于2011年1月18日提交的美国临时申请(案号为SF-10-14,序列号为61/433,918),第一署名发明人为JeremyIsaacNathanielWerner,且题为“Higher-LevelRedundancyInformationComputation”;
于2011年3月11日提交的PCT申请(案号为SF-10-01PCTB,序列号为PCT/US11/28244),第一署名发明人为HaoZhong,且题为“LDPCErasureDecodingforFlashMemories”;以及
于2011年10月26日提交的PCT申请(案号为SF-10-03PCT,序列号为PCT/US11/57914),第一署名发明人为YanLi,且题为“AdaptiveECCTechniquesforFlashMemoryBasedDataStorage”。
技术领域
需要闪存存储技术的进步以提供性能、效率和实用性的提高。
背景技术
除非被明确认定为被公开或众所周知的,否则为了背景、定义或比较的目的而包括的本文所提到的技术和概念不应被解释为承认这些技术和概念是以前公开为已知的或者是现有技术的一部分。本文中所引用的所有参考文献(如有的话)(包括专利、专利申请和出版物)其全部内容为了所有目的无论是否明确并入都通过引用并入本文中。
发明内容
本发明可以以多种方式实现,例如作为处理、制品、装置、系统、物质组分和诸如计算机可读存储介质(例如,诸如磁盘的光学和/或磁性大容量存储设备中的介质,或具有诸如闪存存储器的非易失性存储器的集成电路)的计算机可读介质或通过光学或电子通信链路发送程序指令的计算机网络。具体实施方式提供了能实现在上文确认的领域中的成本的改善、盈利、性能、效率和实用性的提高的本发明的一种或多种实施方式的论述。具体实施方式包括用于促进对具体实施方式的其余部分的理解的绪论。该绪论包括根据本文描述的概念的系统、方法、制品和计算机可读介质中的一个或多个的示例性实施方式。如在结论中更详细讨论的,本发明涵盖所公布的权利要求的范围内的所有可能的修改和变型。
附图说明
图1A示出了包括使用具有独立硅元件的动态高级冗余模式管理来访问及控制非易失性存储器(NVM)的SSD控制器的固态磁盘(SSD)的实施方式的所选细节。
图1B示出了包括图1A的SSD的一个或多个示例的系统的各种实施方式的所选细节。
图2示出了映射逻辑块地址(LBA)的逻辑页面号(LPN)部分的实施方式的所选细节。
图3示出了在读取单元地址访问非易失性存储器(NVM)以产生被组织为集体具有以读取单元量子(quanta)来测量的长度的各个读取单元的读取数据的实施方式的所选细节。
图4A示出了读取单元的实施方式的所选细节。
图4B示出了读取单元的另一实施方式的所选细节。
图5示出了具有多个字段的报头的实施方式的所选细节。
图6示出了多个NVM器件的块、页面及读取单元的实施方式的所选细节。
图7A示出了高级冗余技术的各种实施方式的所选细节。
图7B示出了R块的实施方式的所选细节。
图8示出了具有硅独立元件冗余阵列(RASIE)的动态高级冗余模式管理的实施方式的所选细节。
图9示出了具有受存储在一个或多个读取单元中的高级冗余信息保护的适应性码速率的低级冗余信息的读取单元的实施方式。
图10示出了高级冗余信息结果及数据源对应物的实施方式的所选细节。
图11示出了高级冗余信息计算的实施方式的所选细节。
图12示出了自一个(低级)故障(单个操作期间)恢复的实施方式的所选细节。
图13A至图13D示出了自两个(低级)故障(单个操作期间)恢复的实施方式的所选细节。
图14A及图14B示出了计算关于自NVM接收的页面的高级冗余信息的实施方式的所选细节。
图15A至图15C示出了关于对NVM提供的写入的高级冗余信息的计算的退出的实施方式的所选细节。
附图中的参考标号列表
具体实施方式
以下将伴随示出本发明的所选细节的附图来提供对本发明的一个或多个实施方式的详细描述。将结合实施方式来描述本发明。本文的实施方式应被理解为仅是示例性的,本发明不明确限于本文的任何或所有实施方式或者受到其限制,且本发明涵盖多个替代、修改和等同物。为避免阐述单调,各种字标签(包括但不限于:第一、最后、某些、各种、进一步、其他、特定的、选择、一些和显著的)可应用于分开的实施方式组;如本文所使用的,这些标签并不明确地意指传递质量或任何形式的偏爱或偏见,而只是为了方便在分开的组之间区分。所公开的处理的一些操作顺序在本发明的范围内是可变的。每当在多个实施方式用于描述处理、方法和/或程序指令特征的变化的情况下,其他实施方式均设想为根据预定的或动态确定的标准执行分别对应于多个实施方式中的多个的多个操作模式中的一个的静态和/或动态选择。多个具体细节在以下描述中提出,以提供对本发明的透彻理解。为示例的目的而提供细节,且本发明可在没有一些或所有细节的情况下根据权利要求来实践。为了清楚的目的,与本发明相关的技术领域中已知的技术资料未被详细描述,使得本发明未被不必要地模糊。
绪论
该绪论仅为了促进更迅速地理解具体实施方式而被包括;本发明不限于在绪论中提出的概念(包括明确的示例,如有的话),因为任何绪论的段落必然是整个主题的缩略图,且不意味着是详尽或限制的描述。例如,以下绪论仅提供由空间和对某些实施方式的组织限定的概述信息。遍及说明书的其余部分讨论了多个其他实施方式(包括权利要求最终将导致的那些实施方式)。
缩略语
本文中定义的各种简略缩写(例如,首字母缩写词)中的至少一些是指本文所使用的某些元件。
缩略语 | 描述 |
AHCI | 高级主机控制器接口 |
API | 应用程序接口 |
ATA | 高级技术附件(AT附件) |
BCH | 博斯-乔赫里-霍克文黑姆码(Bose Chaudhuri Hovquenghem) |
CD | 光盘 |
CF | 紧凑式闪存 |
CMOS | 互补金属氧化物半导体 |
CPU | 中央处理器 |
CRC | 循环冗余校验 |
DAS | 直接附接存储 |
DDR | 双倍数据速率 |
DMA | 直接存储器访问 |
DNA | 直接NAND访问 |
DRAM | 动态随机存取存储器 |
DVD | 数字多用途光盘/数字视频光盘 |
DVR | 数字视频录像机 |
ECC | 错误修正码 |
eMMC | 嵌入式多媒体卡 |
eSATA | 外部串行高级技术附件 |
GPS | 全球定位系统10 --> |
HDD | 硬盘驱动器 |
I/O | 输入/输出 |
IC | 集成电路 |
IDE | 集成驱动电子装置 |
JPEG | 联合图像专家组 |
LAN | 局域网 |
LBA | 逻辑块地址 |
LDPC | 低密度奇偶校验 |
LPN | 逻辑页面号 |
MLC | 多级单元 |
MMC | 多媒体卡 |
MPEG | 运动图像专家组 |
NAS | 网络附接存储 |
NCQ | 原生命令队列 |
NVM | 非易失性存储器 |
ONA | 优化的NAND访问 |
ONFI | 开放NAND闪存接口 |
OS | 操作系统 |
PC | 个人计算机 |
PCIe | 快速外围组件互连(快速PCT) |
PDA | 个人数字助理 |
PHY | 物理接口 |
POS | 销售点 |
RAID | 廉价/独立磁盘冗余阵列 |
RASIE | 硅独立元件冗余阵列 |
RS | 里德-索罗蒙码(Reed Solomon) |
SAN | 存储附接网络 |
SAS | 串行附接小型计算机系统接口(串行SCSI) |
SATA | 串行高级技术附加(串行ATA) |
SCSI | 小型计算机系统接口 |
SD | 安全数字 |
SDR | 单倍数据速率 |
SLC | 单级单元 |
SMART | 自监测分析和报告技术 |
SRAM | 静态随机存取存储器 |
SSD | 固态磁盘/驱动 |
UFS | 统一闪存存储器 |
USB | 通用串行总线11 --> |
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的操作期间在非易失性存储器(例如,闪存)元件故障的环境中维持可靠操作。经由将由高级冗余信息保护的部分数据(例如,条带区)中的所有页面的异或,使用奇偶编码来计算高级冗余信息的第一部分。使用加权和(weighted-sum)技术来计算高级冗余信息的第二部分,当计算加权和时该部分中的每一页面被分配唯一非零“索引”以作为权重。在有限域(诸如伽罗瓦域(CaloisField),或诸如整数模p,其中p为质数)上执行算法。
高级冗余信息的部分可以以任何顺序(诸如由对NVM元件执行的一个或多个读取操作的完成顺序确定的顺序,或诸如基于从NVM元件返回和/或可得到数据的顺序的顺序)计算,使得能够在各种实施方式中减少或消除缓冲。在各种实施方式中,任何顺序的可计算性使得能够使用相对很少的临时和/或中间缓冲和/或状态来计算恢复数据值和/或退出写入。可通过诸如由可用的专用硬件元件确定的任何并列度来计算高级冗余信息的部分,这使得能够在各种实施方式中减少延迟处理和/或减少存储器(例如,NVM)带宽使用。
在某些实施方式中,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控制器的特定命令。在第二示例中,驱动程序实现旁通(bypass)模式并且使应用程序能够经由驱动程序向SSD控制器发送特定命令。在第三示例中,PCIeSSD控制器支持一个或多个虚拟函数(VF),从而使得应用程序能够一经配置就将驱动程序旁路而与SSD控制器直接通信。
根据各种实施方式,某些SSD与由磁性和/或光学非易失性存储器(诸如,HDD、CD驱动器及DVD驱动器)所使用的形式因数、电接口和/或协议兼容。在各种实施方式中,SSD使用零个或更多的奇偶码、零个或更多的RS码、零个或更多的BCH码、零个或更多的维特比(Viterbi)码或其他格子(trellis)码及零个或更多的LDPC码。
示例性实施方式
在结束对具体实施方式的绪论时,接下来是示例性实施方式的集合,包括明确列举为“EC”(示例性组合)的至少一些实施方式,根据本文所述的概念提供对各种实施方式类型的额外描述;这些示例并不意味着是相互排斥的、详尽无遗的或限制性的;且本发明并不限于这些示例性实施方式,而是涵盖所公布的权利要求的范围内的所有可能的修改和变更。
EC1)一种系统,包括:
用于至少部分基于多个数据存储信息单元来计算高级冗余信息的一个或多个单元的构件;并且
其中用于计算的构件包括对于乘以数据存储信息的单元的内容的数据存储信息的每个单元,累积相应非零唯一常数值的加权和以作为高级冗余信息单元的至少一部分的构件。
EC2)根据EC1的系统,进一步包括用于将高级冗余信息单元和数据存储信息的单元存储在一个或多个非易失性存储器设备的部分中的构件。
EC3)根据EC2的系统,其中,该部分包括非易失性存储器设备的一个或多个整数个页面,并且非易失性存储器设备包括一个或多个闪存。
EC4)根据EC1的系统,其中,单元与一个或多个闪存的一个或多个整数号的页面对应。
EC5)根据EC1的系统,其中,高级冗余信息单元不可作为通过数据存储信息的单元的对应字节的生成多项式进行的多项式除法的余数来计算。
EC6)根据EC1的系统,其中,用于累积的构件使得能够递增地累积加权和的至少一部分。
EC7)根据EC6的系统,其中,用于累积的构件进一步使得能够并行处理数据存储信息的多于一个的单元。
EC8)根据EC7的系统,其中,多于一个的单元与一个或多个闪存的一个或多个整数号的页面对应。
EC9)根据EC1的系统,其中,用于累积的构件使得能够按与一个或多个闪存的读取操作完成的顺序对应的顺序来累积加权和的至少一部分。
EC10)根据EC1的系统,其中,用于累积的构件使得能够按与从一个或多个闪存返回的数据的顺序对应的顺序来累积加权和的至少一部分。
EC11)根据EC10的系统,其中,返回的数据的顺序至少部分基于数据可从一个或多个闪存获得的顺序。
EC12)根据EC1的系统,其中,用于累积的构件使得能够并行累积加权和的至少一部分。
EC13)根据EC1的系统,其中,用于累积的构件使得能够并行累积加权和的至少一部分,该部分对应于可从一个或多个闪存的对应页面检索的数据存储信息的单元的要素。
EC14)根据EC13的系统,其中,要素至少部分由对应页面的读取操作的完成顺序来确定。
EC15)根据EC2的系统,进一步包括用于确定在读取时一个或多个部分是否具有低级错误修正故障的构件。
EC16)根据EC2的系统,进一步包括用于读取一个或多个部分的构件。
EC17)根据EC1的系统,其中,用于累积加权和的构件使得能够选择性排除加权和中的数据存储信息的单元的两个。
EC18)根据EC17的系统,进一步包括用于处理用于累积的构件的结果以恢复数据存储信息的排除单元的构件。
EC19)根据EC17的系统,其中,用于累积的构件使得能够递增地按与一个或多个非易失性存储器设备进行读取操作完成的顺序对应的顺序累积加权和的至少一部分。
EC20)根据EC17的系统,其中,用于累积的构件使得能够递增地按与从一个或多个非易失性存储器设备返回的数据的顺序对应的顺序累积加权和的至少一部分。
EC21)根据EC20的系统,其中,返回的数据的顺序至少部分基于数据可从一个或多个非易失性存储器设备获得的顺序。
EC22)根据EC1的系统,其中,高级冗余信息单元和数据存储信息的单元对应于一个或多个闪存的相应页面。
EC23)根据EC22的系统,其中,闪存由多个芯片组成,并且每个相应页面位于唯一的一个芯片上。
EC24)根据EC1的系统,进一步包括至少部分响应于来自计算主机的请求将高级冗余信息单元和数据存储信息的单元存储在一个或多个闪存的部分中的构件。
EC25)根据EC24的系统,进一步包括用于使请求与计算主机连接的构件。
EC26)根据EC25的系统,其中,用于使请求与计算主机连接的构件与存储接口标准兼容。
EC27)根据EC24的系统,其中,用于存储的构件包括用于与闪存连接的构件。
EC28)根据EC27的系统,其中,用于与闪存连接的构件包括闪存接口。
EC29)根据EC24的系统,进一步包括:
用于使请求与计算主机连接的构件;并且
其中用于存储的构件包括用于与闪存连接的构件。
EC30)根据EC29的系统,其中,构件集体在单个集成电路(IC)中实现。
EC31)根据EC29的系统,其中,构件包括在固态磁盘(SSD)中。
EC32)根据EC24的系统,进一步包括计算主机的所有或任意部分。
EC33)根据EC3的系统,进一步包括闪存中的至少一个。
EC34)一种方法,包括:
至少部分基于多个数据存储信息单元来计算高级冗余信息的一个或多个单元;并且
其中计算包括对于乘以数据存储信息的单元的内容的数据存储信息的每个单元,累积相应非零唯一常数值的加权和以作为高级冗余信息单元的至少一部分。
EC35)根据EC34的方法,进一步包括将高级冗余信息单元和数据存储信息的单元存储在一个或多个非易失性存储器设备的部分中。
EC36)根据EC35的方法,其中,该部分包括非易失性存储器设备的一个或多个整数个页面,并且非易失性存储器设备包括一个或多个闪存。
EC37)根据EC34的方法,其中,单元与一个或多个闪存的一个或多个整数号的页面对应。
EC38)根据EC34的方法,其中,高级冗余信息单元不可作为多项式除法的余数通过数据存储信息的单元的对应字节的生成多项式来计算。
EC39)根据EC34的方法,其中,累积包括以递增地累积加权和的至少一部分。
EC40)根据EC39的方法,其中,累积进一步包括并行处理数据存储信息的多于一个的单元。
EC41)根据EC40的方法,其中,多于一个的单元与一个或多个闪存的一个或多个整数号的页面对应。
EC42)根据EC34的方法,其中,累积包括按与一个或多个闪存进行读取操作完成的顺序对应的顺序来累积加权和的至少一部分。
EC43)根据EC34的方法,其中,累积包括按与从一个或多个闪存返回的数据的顺序对应的顺序来累积加权和的至少一部分。
EC44)根据EC43的方法,其中,返回的数据的顺序至少部分基于数据可从一个或多个闪存获得的顺序。
EC45)根据EC34的方法,其中,累积包括并行累积加权和的至少一部分。
EC46)根据EC34的方法,其中,累积包括并行累积加权和的至少一部分,部分对应于可从一个或多个闪存的对应页面检索的数据存储信息的单元的要素。
EC47)根据EC46的方法,其中,要素至少部分由对应页面的读取操作的完成顺序来确定。
EC48)根据EC35的方法,进一步包括确定在读取时一个或多个部分是否具有低级错误修正故障。
EC49)根据EC35的方法,进一步包括读取一个或多个部分。
EC50)根据EC34的方法,其中,累积加权和选择性排除加权和中的数据存储信息的单元的两个。
EC51)根据EC50的方法,进一步包括处理累积的结果以恢复数据存储信息的排除单元。
EC52)根据EC50的方法,其中,累积包括递增地按与一个或多个非易失性存储器设备进行读取操作完成的顺序对应的顺序累积加权和的至少一部分。
EC53)根据EC50的方法,其中,累积包括递增地按与从一个或多个非易失性存储器设备返回的数据的顺序对应的顺序累积加权和的至少一部分。
EC54)根据EC53的方法,其中,返回的数据的顺序至少部分基于数据可从一个或多个非易失性存储器设备获得的顺序。
EC55)根据EC34的方法,其中,高级冗余信息单元和数据存储信息的单元对应于一个或多个闪存的相应页面。
EC56)根据EC55的方法,其中,闪存由多个芯片组成,并且每个相应页面位于唯一的一个芯片上。
EC57)根据EC34的方法,进一步包括至少部分响应于来自计算主机的请求将高级冗余信息单元和数据存储信息的单元存储在一个或多个闪存的部分中。
EC58)根据EC57的方法,进一步包括使请求与计算主机连接。
EC59)根据EC58的方法,其中,使请求与计算主机连接与存储接口标准兼容。
EC60)根据EC57的方法,其中,存储包括与闪存连接。
EC61)根据EC60的方法,其中,与闪存连接包括闪存接口。
EC62)根据EC57的方法,进一步包括:
至少部分经由计算主机接口逻辑电路使请求与计算主机连接;并且
其中存储至少部分经由使得能够与闪存连接的闪存接口逻辑电路进行。
EC63)根据EC62的方法,其中,计算主机接口逻辑电路和闪存接口逻辑电路集体在单个集成电路(IC)中实现。
EC64)根据EC62的方法,其中,计算主机接口逻辑电路和闪存接口逻辑电路包括在固态磁盘(SSD)中。
EC65)根据EC57的方法,进一步包括操作计算主机的所有或任意部分。
EC66)根据EC36的方法,进一步包括操作闪存中的至少一个。
EC67)一种系统,包括:
使得能够至少部分基于多个数据存储信息单元来计算高级冗余信息的一个或多个单元的计算逻辑电路;并且
其中计算逻辑电路包括使得能够对于乘以数据存储信息的单元的内容的数据存储信息的每个单元,累积相应非零唯一常数值的加权和以作为高级冗余信息单元的至少一部分的累积逻辑电路。
EC68)根据EC67的系统,进一步包括使得能够将高级冗余信息单元和数据存储信息的单元存储在一个或多个非易失性存储器设备的部分中的逻辑电路。
EC69)根据EC68的系统,其中,该部分包括非易失性存储器设备的一个或多个整数个页面,并且非易失性存储器设备包括一个或多个闪存。
EC70)根据EC67的系统,其中,单元与一个或多个闪存的一个或多个整数号的页面对应。
EC71)根据EC67的系统,其中,高级冗余信息单元不可作为多项式除法的余数通过数据存储信息的单元的对应字节的生成多项式来计算。
EC72)根据EC67的系统,其中,累积逻辑电路进一步使得能够递增地累积加权和的至少一部分。
EC73)根据EC72的系统,其中,累积逻辑电路进一步使得能够并行处理数据存储信息的多于一个的单元。
EC74)根据EC73的系统,其中,多于一个的单元与一个或多个闪存的一个或多个整数号的页面对应。
EC75)根据EC67的系统,其中,累积逻辑电路进一步使得能够按与一个或多个闪存进行读取操作完成的顺序对应的顺序来累积加权和的至少一部分。
EC76)根据EC67的系统,其中,累积逻辑电路进一步使得能够按与从一个或多个闪存返回的数据的顺序对应的顺序来累积加权和的至少一部分。
EC77)根据EC76的系统,其中,返回的数据的顺序至少部分基于数据可从一个或多个闪存获得的顺序。
EC78)根据EC76的系统,其中,累积逻辑电路进一步使得能够并行累积加权和的至少一部分。
EC79)根据EC67的系统,其中,累积逻辑电路进一步使得能够并行累积加权和的至少一部分,部分对应于可从一个或多个闪存的对应页面检索的数据存储信息的单元的要素。
EC80)根据EC79的系统,其中,要素至少部分由对应页面的读取操作的完成顺序来确定。
EC81)根据EC68的系统,进一步包括使得能够确定在读取时一个或多个部分是否具有低级错误修正故障的逻辑电路。
EC82)根据EC68的系统,进一步包括使得能够读取一个或多个部分的逻辑电路。
EC83)根据EC67的系统,其中,累积逻辑电路进一步使得能够选择性排除加权和中的数据存储信息的单元的两个。
EC84)根据EC83的系统,进一步包括使得能够处理累积逻辑电路的结果以恢复数据存储信息的排除单元的逻辑电路。
EC85)根据EC83的系统,其中,累积逻辑电路进一步使得能够递增地按与一个或多个非易失性存储器设备进行读取操作完成的顺序对应的顺序累积加权和的至少一部分。
EC86)根据EC83的系统,其中,累积逻辑电路进一步使得能够递增地按与从一个或多个非易失性存储器设备返回的数据的顺序对应的顺序累积加权和的至少一部分。
EC87)根据EC86的系统,其中,返回的数据的顺序至少部分基于数据可从一个或多个非易失性存储器设备获得的顺序。
EC88)根据EC67的系统,其中,高级冗余信息单元和数据存储信息的单元对应于一个或多个闪存的相应页面。
EC89)根据EC88的系统,其中,闪存由多个芯片组成,并且每个相应页面位于唯一的一个芯片上。
EC90)根据EC67的系统,进一步包括使得能够至少部分响应于来自计算主机的请求将高级冗余信息单元和数据存储信息的单元存储在一个或多个闪存的部分中的闪存存储逻辑电路。
EC91)根据EC90的系统,进一步包括使得能够使请求与计算主机连接的计算主机接口逻辑电路。
EC92)根据EC91的系统,其中,计算主机接口逻辑电路与存储接口标准兼容。
EC93)根据EC90的系统,其中,闪存存储逻辑电路包括使得能够与闪存连接的闪存接口逻辑电路。
EC94)根据EC93的系统,其中,闪存接口逻辑电路包括闪存接口。
EC95)根据EC90的系统,进一步包括:
使得能够使请求与计算主机连接的计算主机接口逻辑电路;并且
其中闪存存储逻辑电路包括使得能够与闪存连接的闪存接口逻辑电路。
EC96)根据EC95的系统,其中,计算主机接口逻辑电路和闪存接口逻辑电路集体在单个集成电路(IC)中实现。
EC97)根据EC95的系统,其中,计算主机接口逻辑电路和闪存接口逻辑电路包括在固态磁盘(SSD)中。
EC98)根据EC90的系统,进一步包括计算主机的所有或任意部分。
EC99)根据EC69的系统,进一步包括闪存中的至少一个。
EC100)一种有形计算机可读介质,其中存储有当由处理元件执行时使处理元件执行包括以下各项的操作的一套指令:
管理至少部分基于多个数据存储信息单元来计算高级冗余信息的一个或多个单元;并且
其中计算包括对于乘以数据存储信息的单元的内容的数据存储信息的每个单元,累积相应非零唯一常数值的加权和以作为高级冗余信息单元的至少一部分。
EC101)根据EC100的有形计算机可读介质,其中操作进一步包括管理将高级冗余信息单元和数据存储信息的单元存储在一个或多个非易失性存储器设备的部分中。
EC102)根据EC101的有形计算机可读介质,其中部分包括非易失性存储器设备的一个或多个整数个页面,并且非易失性存储器设备包括一个或多个闪存。
EC103)根据EC100的有形计算机可读介质,其中单元与一个或多个闪存的一个或多个整数号的页面对应。
EC104)根据EC100的有形计算机可读介质,其中高级冗余信息单元不可作为多项式除法的余数通过数据存储信息的单元的对应字节的生成多项式来计算。
EC105)根据EC100的有形计算机可读介质,其中累积包括递增地累积加权和的至少一部分。
EC106)根据EC105的有形计算机可读介质,其中累积进一步包括并行处理数据存储信息的多于一个的单元。
EC107)根据EC106的有形计算机可读介质,其中多于一个的单元与一个或多个闪存的一个或多个整数号的页面对应。
EC108)根据EC100的有形计算机可读介质,其中累积包括按与一个或多个闪存进行读取操作完成的顺序对应的顺序来累积加权和的至少一部分。
EC109)根据EC100的有形计算机可读介质,其中累积包括按与从一个或多个闪存返回的数据的顺序对应的顺序来累积加权和的至少一部分。
EC110)根据EC109的有形计算机可读介质,其中返回的数据的顺序至少部分基于数据可从一个或多个闪存获得的顺序。
EC111)根据EC100的有形计算机可读介质,其中累积包括并行累积加权和的至少一部分。
EC112)根据EC100的有形计算机可读介质,其中累积包括并行累积加权和的至少一部分,部分对应于可从一个或多个闪存的对应页面检索的数据存储信息的单元的要素。
EC113)根据EC112的有形计算机可读介质,其中要素至少部分由对应页面的读取操作的完成顺序来确定。
EC114)根据EC101的有形计算机可读介质,其中操作进一步包括管理确定在读取时一个或多个部分是否具有低级错误修正故障。
EC115)根据EC101的有形计算机可读介质,其中操作进一步包括管理读取一个或多个部分。
EC116)根据EC100的有形计算机可读介质,其中累积加权和选择性排除加权和中的数据存储信息的单元的两个。
EC117)根据EC116的有形计算机可读介质,其中操作进一步包括管理处理累积的结果以恢复数据存储信息的排除单元。
EC118)根据EC116的有形计算机可读介质,其中累积包括递增地按与一个或多个非易失性存储器设备进行读取操作完成的顺序对应的顺序累积加权和的至少一部分。
EC119)根据EC116的有形计算机可读介质,其中累积包括递增地按与从一个或多个非易失性存储器设备返回的数据的顺序对应的顺序累积加权和的至少一部分。
EC120)根据EC119的有形计算机可读介质,其中返回的数据的顺序至少部分基于数据可从一个或多个非易失性存储器设备获得的顺序。
EC121)根据EC100的有形计算机可读介质,其中高级冗余信息单元和数据存储信息的单元对应于一个或多个闪存的相应页面。
EC122)根据EC121的有形计算机可读介质,其中闪存由多个芯片组成,并且每个相应页面位于唯一的一个芯片上。
EC123)根据EC100的有形计算机可读介质,其中操作进一步包括管理至少部分响应于来自计算主机的请求将高级冗余信息单元和数据存储信息的单元存储在一个或多个闪存的部分中。
EC124)根据EC123的有形计算机可读介质,其中操作进一步包括管理使请求与计算主机连接。
EC125)根据EC124的有形计算机可读介质,其中使请求与计算主机连接与存储接口标准兼容。
EC126)根据EC123的有形计算机可读介质,其中存储包括与闪存连接。
EC127)根据EC126的有形计算机可读介质,其中与闪存连接包括闪存接口。
EC128)根据EC123的有形计算机可读介质,其中操作进一步包括:
至少部分经由管理计算主机接口逻辑电路来管理使请求与计算主机连接;并且
其中存储至少部分经由使得能够与闪存连接的闪存接口逻辑电路进行。
EC129)根据EC128的有形计算机可读介质,其中计算主机接口逻辑电路和闪存接口逻辑电路集体在单个集成电路(IC)中实现。
EC130)根据EC128的有形计算机可读介质,其中计算主机接口逻辑电路和闪存接口逻辑电路包括在固态磁盘(SSD)中。
EC131)根据EC123的有形计算机可读介质,其中操作进一步包括管理操作计算主机的所有或任意部分。
EC132)根据EC102的有形计算机可读介质,其中操作进一步包括管理操作闪存中的至少一个。
EC133)一种方法,包括:
至少部分基于数据存储信息的多个页面来计算高级冗余信息的一个或多个页面;
将高级冗余信息的页面和数据存储信息的页面存储在一个或多个闪存的页面中;并且
其中计算包括累积乘以数据存储信息的页面的内容的数据存储信息的页面的每一个的相应非零唯一常数值的加权和作为高级冗余信息的页面的至少一部分。
EC134)根据EC133的方法,其中,高级冗余信息的页面不可作为多项式除法的余数通过数据存储信息的页面的对应字节的生成多项式来计算。
EC135)根据EC133的方法,其中,累积包括递增地累积。
EC136)根据EC135的方法,其中,累积进一步包括至少部分并行地处理数据存储信息的页面的一个以上。
EC137)根据EC133的方法,进一步包括读取闪存中存储的至少一些页面;以及确定所读取的页面中的任何页面经由低级冗余信息是否是不可修正的。
EC138)根据EC133的方法,进一步包括计算高级冗余信息的修正版本,其中计算高级冗余信息的修正版本选择性排除数据存储信息的页面的两个页面。
EC139)根据EC138的方法,进一步包括处理计算高级冗余信息的修正版本的结果以恢复数据存储信息的排除页面。
EC140)根据EC138的方法,其中,累积包括至少部分以至少部分由闪存完成读取操作的顺序确定的顺序递增地累积。
EC141)根据EC133的方法,其中,闪存由多个芯片组成,并且高级冗余信息或数据存储信息的页面中只有一个存储在芯片的任意一个芯片中。
EC142)根据EC141的方法,其中,从芯片中的至少一个芯片中排除高级冗余信息的页面。
EC143)根据EC141的方法,其中,从芯片中的至少一个芯片中排除数据存储信息的页面。
EC144)具有或参照存储接口标准的任意前述EC,其中存储接口标准包括以下各项中的一个或多个:
通用串行总线(USB)接口标准,
紧凑式闪存(CF)接口标准,
多媒体卡(MMC)接口标准,
嵌入式MMC(eMMC)接口标准,
Thunderbolt接口标准,
UFS接口标准,
安全数字(SD)接口标准,
记忆棒接口标准,
xD图片卡接口标准,
集成驱动电子装置(IDE)接口标准,
串行高级技术附件(SATA)接口标准,
外部SATA(eSATA)接口标准,
小型计算机系统接口(SCSI)接口标准,
串行连接小型计算机系统接口(SAS)接口标准,
光纤通道接口标准,
以太网接口标准,以及
快速外围组件互连(PCIe)接口标准。
EC145)具有或参照闪存接口的任意前述EC,其中闪存接口与以下各项中的一个或多个兼容:
开放NAND闪存接口(ONFI),
切换模式接口,
双倍数据速率(DDR)同步接口,
DDR2同步接口,
同步接口,以及
异步接口。
EC146)具有或参照计算主机的任意前述EC,其中计算主机包括以下各项中的一个或多个:
计算机,
工作站计算机,
服务器计算机,
存储服务器,
存储附接网络(SAN),
网络附接存储(NAS)设备,
直接附接存储(DAS)设备,
存储器件,
个人计算机(PC),
膝上电脑,
笔记本电脑,
上网本电脑,
平板设备或电脑,
超极本电脑,
电子阅读设备(电子阅读器),
个人数字助理(PDA),
导航系统,
(手持式)全球定位系统(GPS)设备,
汽车控制系统,
汽车媒体控制系统或计算机,
打印机、复印机或传真机或多合一设备,
销售点(POS)设备,
现金出纳机,
媒体播放器,
电视机,
媒体记录器,
数字视频录像机(DVR),
数码相机,
蜂窝手机,
无绳电话手机,以及
电子游戏机。
EC147)具有或参照至少一个闪存的任意前述EC,其中至少一个闪存的至少一部分包括以下各项中的一个或多个:
NAND闪存技术存储单元,以及
NOR闪存技术存储单元。
EC148)具有或参照至少一个闪存的任意前述EC,其中至少一个闪存的至少一部分包括以下各项中的一个或多个:
单级单元(SLC)闪存技术存储单元,以及
多级单元(MLC)闪存技术存储单元。
EC149)具有或参照至少一个闪存的任意前述EC,其中至少一个闪存的至少一部分包括以下各项中的一个或多个:
基于多晶硅技术的电荷存储单元,以及
基于氮化硅技术的电荷存储单元。
EC150)具有或参照至少一个闪存的任意前述EC,其中至少一个闪存的至少一部分包括以下各项中的一个或多个:
基于二维技术的闪存技术,以及
基于三维技术的闪存技术。
系统
图1A示出了包括使用具有独立硅元件的动态高级冗余模式管理以用于存取及控制NVM的SSD控制器的固态磁盘(SSD)的实施方式的所选细节。SSD控制器用于管理诸如经由NVM元件(例如,闪存)实现的非易失性存储。SSD控制器100经由一个或多个外部接口110与主机(未示出)通信耦接。根据各种实施方式,外部接口110是以下各项中的一个或多个:SATA接口;SAS接口;PCIe接口;光纤通道接口;外部接口(诸如10千兆以太网);任意前述接口的非标准版本;定制接口;或用于将存储和/或通信和/或计算设备互连的任何其他类型的接口。例如,在某些实施方式中,SSD控制器100包括SATA接口和PCIe接口。
SSD控制器100进一步经由一个或多个设备接口190与包括一个或多个存储设备(诸如,一个或多个闪存设备192)的NVM199通信耦接。根据各种实施方式,设备接口190是以下各项中的一个或多个:异步接口;同步接口;单倍数据速率(SDR)接口;双倍数据速率(DDR)接口;DRAM兼容DDR或DDR2同步接口;ONFI兼容接口(诸如,ONFI2.2或ONFI3.0兼容接口);切换模式兼容闪存接口;任意前述接口的非标准版本;定制接口;或用于连接至存储设备的任何其他类型的接口。
在某些实施方式中,每一个闪存设备192具有一个或多个独立闪存芯片194。根据闪存设备192的特定闪存设备的类型,特定闪存设备192中的多个闪存芯片194可选地和/或可选地并行访问。闪存设备192只表示使得能够与SSD控制器100通信耦接的一种类型的存储设备。在各种实施方式中,任何类型的存储设备都是可使用的,诸如SLCNAND闪存、MLCNAND闪存、NOR闪存、使用基于多晶硅或氮化硅技术的电荷存储单元的闪存、基于二维或三维技术的闪存、只读存储器、静态随机存取存储器、动态随机存取存储器、铁磁性存储器、相变存储器、赛道(racetrack)存储器或任何其他类型的存储器设备或存储介质。
根据各种实施方式,设备接口190被组织为:一条或多条总线,其中每条总线具有一个或多个闪存设备192;一个或多个总线组,其中每条总线具有一个或多个闪存设备192,其中一组中的总线通常被并行访问;或一个或多个闪存设备192至设备接口190的任何其他组织。
继续图1A,SSD控制器100具有一个或多个模块,诸如主机接口111、数据处理121、缓存131、映射141、循环器151、ECC161、设备接口逻辑191以及CPU171。图1A中所示的具体模块和互连仅仅表示一个实施方式,可以想到一些或所有模块以及未示出的其他模块的多种布置和互连。在第一示例中,在某些实施方式中,存在两个或更多的主机接口111来提供双通道。在第二示例中,在某些实施方式中,数据处理121和/或ECC161与缓存131组合。在第三示例中,在某些实施方式中,主机接口111直接与缓存131耦接,并且数据处理121可选地和/或可选地对于存储在缓存131中的数据进行操作。在第四示例中,在某些实施方式中,设备接口逻辑191直接与缓存131耦接,并且ECC161可选地和/或选择性地对于存储在缓存131中的数据进行操作。
主机接口111经由外部接口110发送和接收命令和/或数据,并且,在某些实施方式中,经由标签跟踪113来跟踪单独命令的进程。例如,命令包括指定要读取的数据的地址(诸如LBA)和量(诸如LBA量子,例如扇区的数量)的读取命令;作为响应,SSD提供读取状态和/或读取数据。再如,命令包括指定要写入的数据的地址(诸如LBA)和量(诸如LBA量子,例如扇区的数量)的写入命令;作为响应,SSD提供写入状态和/或请求写入数据且随后可选提供写入状态。对于又一示例,命令包括指定不再需要分配的一个或多个地址(诸如一个或多个LBA)的去分配命令(例如,修整命令);作为响应,SSD相应地修改映射且可选提供去分配状态。在某些环境中,兼容ATA的TRIM命令是示例性去分配命令。对于又一示例,命令包括超级电容器测试命令或数据强化成功查询;作为响应,SSD提供适当状态。在某些实施方式中,主机接口111与SATA协议兼容,并且,使用NCQ命令而被启用以具有最多32条待处理命令,每条命令有表示为数字0至31的唯一标签。在某些实施方式中,标签跟踪113经启用从而使经由外部接口110接收的命令的外部标签与用于在由SSD控制器100进行处理期间跟踪命令的内部标签相关联。
根据各种实施方式,揭示以下各项中的一个或多个:数据处理121可选地和/或可选地处理在缓存131与外部接口110之间发送的一些或所有数据;以及数据处理121可选地和/或可选地处理存储在缓存131中的数据。在某些实施方式中,数据处理121使用一个或多个引擎123来执行以下各项中的一个或多个:格式化;重新格式化;转码;以及任何其他的数据处理和/或操控任务。
缓存131存储自设备接口190发送至外部接口110/自外部接口110发送至设备接口190的数据,在某些实施方式中,缓存131另外存储由SSD控制器100使用以管理一个或多个闪存设备192的系统数据(诸如某些或全部映射表)。在各种实施方式中,缓存131具有以下各项中的一个或多个:用于临时存储数据的存储器197;用于控制至和/或自缓存131的数据的移动的DMA133;用于提供高级错误修正和/或冗余功能的ECC-X135;和其他数据移动和/或操控功能。高级冗余功能的示例为类似RAID的能力(例如,RASIE),其中冗余在闪存设备(例如闪存设备192的多个闪存设备)级和/或闪存芯片(诸如闪存芯片194)级而非在磁盘级。
根据各种实施方式,揭示以下各项中的一个或多个:ECC161可选地和/或可选地处理在缓存131和设备接口190之间发送的一些或所有数据;以及ECC161可选地和/或可选地处理存储在缓存131内的数据。在某些实施方式中,ECC161用于提供低级错误修正和/或诸如根据一个或多个ECC计算的冗余功能。在某些实施方式中,ECC161实现以下各项中的一个或多个:CRC码;汉明码;RS码;BCH码;LDPC码;维特比码;格子码;硬判决码;软判决码;基于擦除的码;任何错误检测和/或纠正码;以及上述的任意组合。在某些实施方式中,ECC161包括一个或多个解码器(诸如LDPC解码器)。
设备接口逻辑191经由设备接口190控制闪存设备192的实例。设备接口逻辑191使得能够根据闪存设备192的实例将数据发送到闪存设备192或从闪存设备192发送数据。设备接口逻辑191包括调度193,从而经由设备接口190可选地顺序控制闪存设备192的实例。例如,在某些实施方式中,调度193使得能够对闪存设备192的实例进行排队操作,并且当闪存设备192(或闪存芯片194)的实例中的独立的多个可用时,选择性地将操作发送至闪存设备192(或闪存芯片194)的实例中的独立的多个。
通过使用表143来将外部数据地址映射至NVM199中的位置,映射141在外部接口110上使用的数据寻址与在设备接口190上使用的数据寻址之间转换。例如,在某些实施方式中,映射141经由由表143提供的映射将在外部接口110上使用的LBA转换成瞄准一个或多个闪存芯片192的块和/或页地址。对于从驱动制造或去分配起就未曾被写入的LBA,该映射指向默认值以传回是否读取LBA。例如,在处理去分配命令时,修改该映射以使得与去分配LBA对应的条目指向默认值中的一个。在各种实施方式中,存在各种默认值,其各自具有对应的指针。多个默认值使得能够读取某些去分配LBA(诸如在第一范围中)以作为一个默认值,同时读取其他去分配LBA(诸如在第二范围中)以作为另一个默认值。在各种实施方式中,默认值由闪存、硬件、固件、命令和/或基元引数和/或参数、可编程寄存器或其各种组合定义。
在某些实施方式中,映射141使用表143从而进行和/或查询在外部接口110上使用的地址和设备接口190上使用的数据寻址之间的转换。根据各种实施方式,表143是以下各项中的一个或多个:一级映射;二级映射;多级映射;映射缓存;压缩映射;一个地址空间至另一个地址空间的任何类型映射;以及前述的任意组合。根据各种实施方式,表143包括以下各项中的一个或多个:静态随机存取存储器;动态随机存取存储器;非易失性存储器;NVM(诸如闪存);缓存存储器;片上存储器;片外存储器;和前述的任意组合。
在某些实施方式中,循环器151执行垃圾收集。例如,在某些实施方式中,闪存设备192的实例包含在可重写入之前必须擦除的块。循环器151经启用以例如通过扫描由映射141保持的映射来确定闪存设备192的实例的哪些部分正在有效使用中(例如,分配的而非去分配的),然后使闪存设备192的实例的未使用(例如,去分配)部分通过对其进行擦除而可用于写入。在进一步实施方式中,循环器151使得能够移动存储在闪存设备192的实例内的数据,以使闪存设备192的实例的较大连续部分可用于写入。
在某些实施方式中,闪存设备192的实例可选地和/或动态地经配置、管理和/或使用以具有用于存储不同类型和/或性质的数据的一个或多个频带。该频带的数量、布置、大小和类型可动态地改变。例如,将来自计算主机的数据写入热(作用)频带,而将来自循环器151的数据写入冷(较少作用)频带中。在某些使用场景下,如果计算主机写入长的顺序流,则热频带的大小增加,而如果计算主机随机写入或较少写入,则冷带的大小增加。
CPU171控制SSD控制器100的各种部分。CPU171包括CPU内核172。根据各种实施方式,CPU内核172为一个或多个单核或多核处理器。在某些实施方式中,CPU内核172中的独立处理器内核是多线程的。CPU内核172包括指令和/或数据缓存器和/或存储器。例如,指令存储器包括能使CPU内核执行软件(有时称为固件)以控制SSD控制器100的指令。在某些实施方式中,CPU内核172执行的一些或所有固件存储在闪存设备192上(如图所示,例如为1B中的NVM199的固件106)。
在各种实施方式中,CPU171进一步包括:在经由外部接口110接收的命令处于进程的同时来跟踪和控制该命令的命令管理173;控制缓存131的分配和使用的缓存管理175;控制映射141的转换管理177;控制数据寻址的一致性并避免诸如外部数据访问和回收数据访问之间冲突的一致性管理179;控制设备接口逻辑191的设备管理181;控制身份信息的修改和通信的身份管理182;以及可选其他管理单元。根据各种实施方式,CPU171执行的任何或所有管理功能是由硬件、软件(诸如在CPU内核172或经由外部接口110连接的主机上执行的固件)或其任何组合进行控制和/或管理的。
在某些实施方式中,CPU171使得能够执行其他管理任务,例如,以下各项中的一个或多个:收集和/或报告性能统计;实现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的一个或多个示例的系统的各种实施方式的所选细节。SSD101包括经由设备接口190与NVM199耦接的SSD控制器100。该图示出了各类实施方式:直接与主机耦接的单个SSD,各自经由相应外部接口分别直接与主机耦接的多个SSD,以及经由各个互连元件间接与主机耦接的一个或多个SSD。
作为直接与主机耦接的单个SSD的示例性实施方式,SSD101的一个示例经由外部接口110直接与主机102耦接(例如,省略、绕过或穿过切换器/光纤/中间控制器103)。作为各自经由相应外部接口直接与主机耦接的多个SSD的示例性实施方式,SSD101的多个实例中的每一个经由由外部接口110直接与主机102耦接(例如,省略、绕过或穿过切换器/光纤/中间控制器103)。作为经由各个互连元件间接与主机耦接的一个或多个SSD的示例性实施方式,SSD101的一个或多个实例中的每一个分别间接与主机102耦接。每个间接耦接经由与切换器/光纤/中间控制器103耦接的外部接口110以及与主机102耦接的中间接口104的相应实例。
包括切换器/光纤/中间控制器103的实施方式的某些实施方式还包括经由存储器接口180耦接且可由SSD访问的卡存储器112C。在各种实施方式中,SSD、切换器/光纤/中间控制器103和/或卡存储器中的一个或多个包括在物理可识别的模块、卡或可插入元件(例如,I/O卡116)上。在某些实施方式中,SSD101(或其变型)对应于与作为主机102操作的起始器耦接的SAS驱动器或SATA驱动器。
主机102使得能够执行主机软件115的各个要素,诸如OS105、驱动程序107、应用程序109和多设备管理软件114的各种组合。虚线箭头107D表示主机软件←→I/O设备通信,例如经由驱动程序107或直接作为VF自/向SSD101的实例中的一个或多个接收/发送的去往/来自OS105(经由驱动程序107)、驱动程序107及应用程序109中的一个或多个的数据。
OS105包括和/或使得能够借助与SSD连接的驱动程序(概念上由驱动程序107示出)操作。Windows的各种版本(例如,95、98、ME、NT、XP、2000、Server、Vista及7)、Linux的各种版本(例如,RedHat、Debian及Ubuntu)及MacOS的各种版本(例如,8、9及X)是OS105的示例。在各种实施方式中,驱动程序是借助标准接口和/或协议诸如SATA、AHCI或NVMExpress)操作的标准和/或通用驱动程序(有时称为“缩小包装”或“预安装”),或者可选定制和/或供应商特定从而使得能够使用SSD101特定的命令。某些驱动器和/或驱动程序具有穿过模式以使得应用级程序(诸如经由最佳化NAND访问(有时称为ONA)或直接NAND访问(有时称为DNA)技术的应用程序109)能够将命令直接传递至SSD101,使得定制应用程序甚至通过通用驱动程序也能够使用SSD101特定的命令。ONA技术包括以下各项中的一个或多个:非标准修饰符(提示)的使用;供应商特定命令的使用;非标准统计的通信,诸如根据可压缩性的实际NVM使用;以及其他技术。DNA技术包括以下各项中的一个或多个:提供对NVM的未经映射读取、写入和/或擦除存储的非标准命令或供应商特定命令的使用,诸如通过绕过I/O设备原本将进行的数据的格式化来提供对NVM的更直接访问的非标准或供应商特定命令的使用;以及其他技术。驱动程序的示例是不具有ONA或DNA支持的驱动程序、ONA启用的驱动程序、DNA启用的驱动程序及ONA/DNA启用的驱动程序。驱动程序的进一步示例是供应商提供、供应商开发和/或供应商增强的驱动程序及客户端提供、客户端开发和/或客户端增强的驱动程序。
应用级程序的示例是不具有ONA或DNA支持的应用程序、ONA启用的应用程序、DNA启用的应用程序及ONA/DNA启用的应用程序。虚线箭头109D表示应用程序I/O设备通信(例如,经由驱动程序的旁路或经由用于应用程序的VF的旁路),例如在诸如没有将OS用作中介的应用程序的情况下与SSD通信的ONA启用的应用程序及ONA启用的驱动程序。虚线箭头109V表示应用程序←→I/O设备通信(例如,经由用于应用程序的VF的旁路),例如在诸如没有将OS用作中介的应用程序的情况下与SSD通信的DNA启用的应用程序和DNA启用的驱动程序。
在某些实施方式中,NVM199的一个或多个部分用于例如固件106的固件存储。固件存储包括一个或多个固件图像(image)(或其部分)。例如,固件图像具有例如通过SSD控制器100的CPU内核172执行的固件的一个或多个图像。再如,固件图像具有例如在固件执行期间由CPU内核引用的常数、参数值及NVM设备信息的一个或多个图像。固件的图像对应于例如当前固件图像及零个或更多的先前(相对于固件更新)固件图像。在各种实施方式中,固件提供通用、标准、ONA和/或DNA操作模式。在某些实施方式中,经由可选由驱动程序传递和/或提供的密钥或各种软件技术来启用固件操作模式中的一个或多个(例如,一个或多个API“未经锁定”)。
在缺少切换器/光纤/中间控制器的某些实施方式中,SSD经由外部接口110直接与主机耦接。在各种实施方式中,SSD控制器100经由其他控制器,诸如RAID控制器的一个或多个中间级与主机耦接。在某些实施方式中,SSD101(或其变型)对应于SAS驱动器或SATA驱动器,且切换器/光纤/中间控制器103对应于扩展器,该扩展器又与起始器耦接,或备选地,切换器/光纤/中间控制器103对应于桥接器,该桥接器经由扩展器间接与起始器耦接。在某些实施方式中,切换器/光纤/中间控制器103包括一个或多个PCIe切换器和/或光纤。
在各种实施方式中,诸如在其中主机102作为计算主机(例如,计算机、工作站计算机、服务器计算器、存储服务器、SAN、NAS设备、DAS设备、存储器件、PC、膝上电脑、笔记本电脑和/或上网本电脑)的某些实施方式中,计算主机可选使得能够与一个或多个本地和/或远程服务器(例如,可选服务器118)通信(例如,经由可选I/O&存储设备/资源117以及可选LAN/WAN119)。例如,通信启用SSD101元件的任意一个或多个的本地和/或远程访问、管理和/或使用。在某些实施方式中,通信完全地或部分经由以太网。在某些实施方式中,通信完全地或部分经由光纤通道。在某些实施方式中,LAN/WAN119表示一个或多个局域和/或广域网,诸如服务器场中的网络、耦接服务器场的网络、城域网和互联网中的任意一个或多个。
在各种实施方式中,SSD控制器和/或计算主机闪存控制器结合一个或多个NVM一起实现为非易失性存储组件,诸如USB存储组件、CF存储组件、MMC存储组件、eMMC存储组件、Thunderbolt存储组件、UFS存储组件、SD存储组件、记忆棒存储组件和xD图片卡存储组件。
在各种实施方式中,SSD控制器(或计算主机闪存控制器)的所有或任何部分或其功能在控制器将与之耦接的主机(例如,图1B的主机102)中实现。在各种实施方式中,SSD控制器(或计算主机闪存控制器)的所有或任何部分或其功能经由硬件(例如,逻辑电路)、软件和/或固件(例如,驱动程序软件和/或SSD控制固件)或其任意组合来实现。例如,ECC单元(诸如,类似于图1A的ECC161和/或ECC-X135)的功能或与该ECC单元相关联的功能经由软件在主机上实现且部分经由固件和硬件的组合在SSD控制器中实现。再如,循环器单元(诸如类似于图1A的循环器151)的功能或与该循环器单元相关联的功能部分经由软件在主机上实现且部分经由硬件在计算主机闪存控制器中实现。
映射操作
图2示出了映射LBA的LPN部分的实施方式的所选细节。在某些实施方式中,读取单元是可独立读取的最细粒度的NVM,诸如NVM的页面的一部分。在进一步实施方式中,读取单元对应于(低级)错误修正码的校验位(有时称为冗余)和由校验位保护的所有数据。例如,图1A的ECC161经由校验码(诸如经由LDPC码)来实现错误修正,并且读取单元对应于实现除由LDPC编码位保护的数据位之外的LDPC码的编码位。
在某些实施方式中,映射141诸如经由表143(如图1A所示)将LBA211的LPN213部分映射到LPN的映射信息221。LPN的映射信息(诸如LPN的映射信息221)有时被称为映射条目。据说映射141使LPN与对应映射条目相关联。在各种实施方式中,映射经由一个或多个相关查找,经由一个或多个非相关查找,和/或经由一个或多个其他技术。
在某些实施方式中,SSD控制器100为潜在和/或主动使用中的每个LPN维护一个映射条目。
在某些实施方式中,LPN的映射信息221包括各个读取单元地址223和读取单元的长度225。在某些实施方式中,诸如通过将长度存储为对跨度的补偿,长度和/或跨度编码地存储在读取单元的长度225的所有或任意部分中。在进一步实施方式中,第一LPN与第一映射条目相关联,第二LPN(不用于第一LPN,但引用大小与由第一LPN引用的逻辑页面的大小相同的逻辑页面)与第二映射条目相关联,并且第一映射条目的读取单元中的各个长度不同于第二映射条目的读取单元中的各个长度。
在各种实施方式中,在同一时间点,第一LPN与第一映射条目相关联,第二LPN(不同于第一LPN)与第二映射条目相关联,并且第一映射条目的各个读取单元地址与第二映射条目的各个读取单元地址相同。在进一步实施方式中,与第一LPN相关联的数据和与第二LPN相关联的数据都存储在NVM199中的同一设备的同一物理页面中。
根据各种实施方式,读取单元地址223与以下各项中的一个或多个相关联:NVM中的开始地址;NVM中的结束地址;任意前述的补偿量;以及用于识别与LPN213相关联的NVM的一部分的任何其他技术。
图3示出了在读取单元地址访问NVM以产生被组织为集体具有以读取单元量子来测量的长度的各个读取单元的读取数据的实施方式的所选细节。根据各种实施方式,第一读取单元313是以下各项中的一个或多个:在NVM的地址空间中具有最低地址的读取数据311中的一个读取单元;读取单元中的固定读取单元;读取单元中的任意读取单元;读取单元中的可变读取单元;以及通过任何其他技术选择的一个读取单元。在各种实施方式中,SSD控制器100使得能够通过读取不超过由单位单元的长度225指定的数量的读取单元来访问NVM199并产生读取数据311。
图4A示出了读取单元(诸如图3的读取单元313或315)作为读取单元401A的实施方式的所选细节。在各种实施方式和/或使用场景下,报头1441A至报头N419A是连续的,并且由每个报头识别的相应数据区域(诸如经由相应补偿量)连续跟随上一个报头。数据区域集体形成数据字节421A。按位置顺序存储数据区域,并且该位置顺序匹配存储报头的位置顺序。例如,鉴于第一报头,在读取单元开始时,第二报头和第三报头连续跟随第一报头。第一数据区域(通过第一报头中的第一补偿量识别)连续跟随第三报头。第二数据区域(通过第二报头中的第二补偿量识别)连续跟随第一报头。类似地,第三数据区域(通过第三报头识别的)连续跟随第二数据区域。
图4B示出了读取单元(诸如图3的读取单元313或315)作为读取单元401B的另一实施方式的所选细节。在各种实施方式和/或使用场景下,报头标记(HM)410B是指示以下连续的报头(报头1411B、报头2412B…报头N419B)的数量的可选初始字段(诸如1字节字段)。数据区域(数据字节421B、数据字节422B…数据字节429B)分别由报头(报头1411B、报头2412B…报头N419B)识别并按位置顺序存储,该位置顺序与存储报头的位置顺序相反。报头开始于读取单元的初端,而对应数据区域开始于读取单元的末端。在某些实施方式中,数据区域中的数据字节(例如,数据字节421B、数据字节422B…数据字节429B)按递增顺序(匹配位置顺序的字节顺序)排列,而在其他实施方式中,数据字节沿相反顺序(相对于位置反向的字节顺序)排列。在某些实施方式中,报头标记在读取单元中使用,其中报头和数据字节按同一位置顺序存储(例如,如图4A所示)。
在某些实施方式中,可选填充字节413A(或413B)符合与特定LPN相关联的数据的粒度。例如,在某些实施方式中,如果在存储与除了报头1411A至报头N419A(或报头1411B、报头2412B…报头N419B)的最后一个报头以外的所有报头相关联的数据之后,数据字节421A(或集体地数据字节421B、数据字节422B…数据字节429B)具有少于固定量的剩余空间,诸如8字节,则与最后报头相关联的LPN的数据在后续读取单元中开始。在进一步实施方式中,最后报头中的特定补偿值(例如,所有补偿值)指示与最后报头相关联的LPN的数据在后续读取单元中开始。
图5示出了具有大量字段的报头(诸如,图4A的报头1411A至报头N419A或图4B的报头1411B至报头419B中的任意一个)的实施方式的所选细节。在某些实施方式中,报头为固定长度的(例如,每个报头的长度为相同数量的字节)。报头501包括类型511、最后指示符513、标志515、LPN517、长度519和补偿量521的字段。类型字段识别数据字节的类别。例如,类型字段指示数据字节的类别为主机数据(例如,逻辑页面数据)或系统数据(例如映射信息或检查点信息)中的一个。最后字段指示报头是数据字节之前的最后报头。在具有报头标记的某些实施方式中,可选省略最后字段。LPN字段是报头与其相关联的LPN。LPN字段启用报头的解析以通过例如在报头中搜索具有与特定LPN匹配的LPN字段的报头来确定与特定LPN相关联的特定的一个报头。长度字段是数据字节的以字节计的长度(例如,数据有多少字节在与报头501相关联的数据字节421A中)。在某些实施方式中,补偿字段中的补偿量根据特定粒度(例如,8字节粒度)进行取整。
在各种实施方式中,与特定LPN相关联的一部分或所有信息存储在与特定LPN相关联的映射条目、与特定LPN相关联的报头或这两者中。例如,在某些实施方式中,长度519的一些或所有存储在映射条目中,而不是报头中。
图6示出了多个NVM设备的块、页面及读取单元的实施方式的所选细节。例如,601、603…及609对应于图1A的一个或多个独立闪存芯片194中的闪存芯片。
在某些实施方式中,设备601、603…及609是少于全部NVM199的部分。例如,在各种实施方式中,跨越多个设备组而独立地使数据条带化,其中可独立访问该设备组中的每一个。
每一设备(诸如,设备601、603…及609中的任一个)提供被组织为块(诸如,设备601的块631、633…及639;设备603的块661、663…及669;等等)的存储器。在某些实施方式中,每一设备包括整数个块且块是最小擦除量子。块又包括页面(诸如,块631的页面621、623…及629;块661的页面651、653…及659;等等)。在某些实施方式中,每个块包括整数个页面且页面为最小写入量子。该页面又包括读取单元(诸如,页面621的读取单元611、613…及619;页面651的读取单元641、643…及649;等等)。根据各种实施方式,揭示以下情形中的一个或多个:读取单元为最小读取及错误修正量子;每一页面包括整数个读取单元;两个或更多的页面的相关联组包括整数个读取单元;且读取单元可选地和/或可选地跨越页面边界。设备中信息的读取和/或写入根据一个顺序(诸如,“读取单元优先”顺序或“页面优先”顺序)来执行。图中所示的读取单元的读取单元优先顺序的示例开始于读取单元611,接着是641、…、671、613、643、…、673等,结束于679。图中所示的读取单元的页面优先顺序的示例开始于读取单元611,接着是613、…、619、641、643、…、649、671、673等,结束于679。
在某些实施方式中,各种NVM管理功能在R块的单元中执行。R块的示例为跨越闪存的全部芯片的逻辑片或段。例如,在具有R个闪存芯片的闪存中,每一闪存芯片具有N个块,总的看来,每一R块为来自闪存芯片中的每一个的第i块,总计N个R块。对于另一示例,在具有R个闪存芯片的闪存中,每一闪存芯片具有N个块,每一R块为来自闪存芯片中的每一个的第i及第(i+1)块,总计N/2个R块。对于又一示例,在具有多个双平面设备的闪存中,每一R块为来自该双平面设备中的每一个的第i偶数块及第i奇数块。
高级冗余技术
图7A示出了高级冗余技术的各种实施方式的所选细节。闪存设备720包括64个闪存芯片(闪存芯片710.63、710.62、710.61…710.0)且经由接口信道730通信。额外闪存设备740包括至多两个闪存芯片(闪存芯片710.65及710.64)且经由额外接口信道750通信。闪存芯片在存储子系统(诸如,SSD中的NVM)中提供对高级冗余信息的存储及数据存储(例如,用户数据和/或用户空闲空间)。(在冗余信息及数据存储的环境中的“用户数据”的示例包括除存储于闪存上用于稍后检索的冗余信息外的所有数据,诸如操作系统数据、应用程序数据、SSD管理数据等。)高级冗余使得能够例如自一个或多个闪存芯片的一个或多个部分的间歇或永久故障(诸如,未能为读取操作提供错误修正数据(例如,经由低级ECC功能)或未能正确地完成写入操作)恢复。
例如,每一闪存芯片(或者每一块或每一块内的每一页面)在硅独立元件冗余阵列(RASIE)的环境中操作。如果在特定闪存芯片中检测到故障(例如,由于特定芯片的块的部分的ECC不可修正的读取错误),则作为响应,存储于其他闪存芯片中的冗余信息用于确定本应由特定芯片提供的信息。在某些实施方式和/或使用场景中,存储足够冗余信息以使得能够自一个闪存芯片内的一个故障恢复(在单个操作期间)。在某些实施方式中,在使得能够自单个故障恢复的模式下的操作包括分配及管理等效于一个闪存芯片的空间以用于高级冗余信息,且该操作称为“RASIE-1”。在某些实施方式中,在使得能够自两个故障恢复的模式中的操作包括分配及管理等效于两个闪存芯片的空间以用于高级冗余信息,且该操作称为“RASIE-2”。
在某些实施方式和/或使用场景中,管理芯片级故障为目标,且执行在芯片间散布信息。例如,高级冗余信息存储于仅特定分配给高级冗余信息的一个或多个芯片中。在某些实施方式和/或使用场景中,管理块级故障为目标,且执行在芯片内的块间散布信息。例如,高级冗余信息存储于分配给高级冗余信息的一个或多个块中,该分配不考虑块是哪些特定芯片的部分。在某些实施方式和/或使用场景中,管理特定实体级故障包括散布信息,使得在特定实体中的任一个中的要素不多于N个(例如,对于RASIE-1为1个且对于RASIE-2是2个)。
高级冗余信息根据写入至闪存芯片的(用户)数据来计算及写入,且因此在检测到故障时可用于提供信息。在各种实施方式中,在写入与高级冗余信息相关联的(用户)数据之前、之后或不按与写入与高级冗余信息相关联的(用户)数据有关的特定时间顺序,将高级冗余信息写入至闪存芯片。
该图示出了RASIE操作模式的各种实施方式,如下表中所概括。
更具体地,在RASIE-1模式下,将等效于一个芯片的空间分配给高级冗余信息。在RASIE-1模式1-0中,当高级冗余信息存储于闪存设备720的一个芯片(例如,闪存芯片710.63)中时,不使用额外闪存设备740,留下63个芯片(闪存芯片710.62…710.0)可用于数据存储(例如,用户数据和/或用户空闲空间)。在RASIE-1模式1-1中,使用额外闪存设备740的一个芯片(例如,闪存芯片710.64),留下全部闪存设备(64个芯片)可用于数据存储。
在RASIE-2模式下,将等效于两个芯片的空间分配给高级冗余信息。在RASIE-2模式2-0中,当高级冗余信息存储于闪存设备720的两个芯片(例如,闪存芯片710.63及闪存芯片710.62)中时,不使用额外闪存设备740,留下62个芯片(闪存芯片710.61…710.0)可用于数据存储。在RASIE-2模式2-1中,当高级冗余信息部分地存储于闪存设备720的一个芯片(例如,闪存芯片710.63)中时,使用额外闪存设备740的一个芯片(例如,闪存芯片710.64),留下63个芯片(闪存芯片710.62…710.0)可用于数据存储。在RASIE-2模式2-2中,使用额外闪存设备740的两个芯片(例如,闪存芯片710.65及闪存芯片710.64),留下闪存设备720的全部(64个芯片)可用于数据存储。
在某些实施方式中,未填充在所有使用场景中均未使用的芯片。例如,在可仅在RASIE2-0模式及RASIE1-0模式下(而非在其他RASIE模式下)操作的系统中,未填充额外闪存设备740。
在某些实施方式中,高级冗余信息完全地存储于“专用”芯片中(例如,在RASIE-1模式1-0中存储于闪存芯片710.63或在RASIE-2模式2-2中存储于闪存芯片710.65及闪存芯片710.64)。在其他实施方式中,高级冗余信息存储于芯片中的任一个中,因此例如在RASIE-1模式1-0中,闪存芯片710.62用于高级冗余信息,而闪存芯片710.63及闪存芯片710.61…710.0用于数据存储。在某些实施方式和/或使用场景中,高级冗余信息随时间存储于不同芯片(和/或其部分)中,因此例如在第一时间周期中,第一闪存芯片保持高级冗余信息,而在第二时间周期中,第二闪存芯片保持高级冗余信息。
在各种实施方式中,取决于多少闪存芯片可用,存在多种RASIE1-0模式(及多种RASIE2-0模式)。例如,在第一RASIE1-0模式(如上表中所示)中,闪存芯片710.63存储高级冗余信息,且闪存芯片710.62…710.0可用于数据存储。在第二RASIE1-0模式下,闪存芯片710.63不再可用,闪存芯片710.62存储高级冗余信息,且闪存芯片710.61…710.0可用于数据存储,从而将可用的数据存储量减小一个芯片。先前可用于数据存储的芯片(或其任何部分)由于该芯片(或部分)用于高级冗余信息而不再可用于数据存储的RASIE模式有时被称为容量减少的RASIE模式。
在某些实施方式中,使用与受高级冗余信息保护的用户数据相同和/或类似的低级错误修正编码方案来存储高级冗余信息。使用低级错误修正方案来保护高级冗余信息使得能够以与确定用户数据中的不可修正的低级错误相同和/或类似的方式来确定在高级冗余信息中是否存在不可修正的错误。
图7B示出了R块的实施方式的所选细节。在跨越所有芯片的逻辑片段或区段中管理(例如,用于回收和/或擦除)闪存芯片,且片段/区段被称为R块。该图示出了具有66个闪存芯片(闪存芯片710.65…710.0)的实施方式。示出了块、页面及作为R块的块的管理。将每一闪存芯片示为具有N个块(诸如,闪存芯片710.65的块710.65B0、块710.65B1…块710.65BB)。总的看来,每一R块是来自闪存芯片中的每一个的第i块(诸如,R块760.0是来自闪存芯片710.65的块710.65B0、来自闪存芯片710.64的块0(未明确示出),等等,至闪存芯片710.0的块710.0B0)。因此,存在总计N个R块(R块760.0、R块760.1…R块760.R)。
在各种实施方式中,R块内的数据的写入和/或条带化顺序为跨越所有设备(例如,如由图6的条带化方向600概念性地建议的,最低至最高编号设备)的页面(例如,最低至最高)优先,接着下一最高页面(跨越所有设备),等等,继续直至R块的最后页面。具体针对图7的R块760.0,示例顺序以页面710.0P0开始,其后接着为闪存芯片710.1的第一块中的第一页面,等等,继续至页面710.65P0。该示例顺序以页面710.0P1继续,其后接着为闪存芯片710.1的第一块中的第二页面,等等,继续至页面710.65P1。该示例顺序以页面710.0PP完成,其后接着为闪存芯片710.1的第一块中的最后页面,等等,以页面710.65PP结束。
总的看来,R块的另一示例为来自闪存芯片中的每一个的第i及第(i+1)块(例如,来自闪存芯片710.65的块0及1、来自闪存芯片710.64的块0及1,等等,至来自闪存芯片710.0的块0及1)。如果每一闪存芯片中存在N个块,则因此存在N/2个R块。R块的另一示例为来自多个双平面设备中的每一个的第i个偶数及奇数块。预期作为R块来管理的闪存芯片块的其他配置企图包括在虚拟块地址与物理块地址之间映射以确保R块具有来自每一芯片的一个块,即使一些块不可操作亦如此。在各种实施方式中,每一闪存芯片中的N个块中的一些用作备用,使得在虚拟块地址与物理块地址之间的映射具有备用(以其他方式未使用)块以替代R块中的块中的有缺陷块。
在成对或以其他关联组将块视为形成R块的部分的各种实施方式中,也将来自块的关联组的每一块的相应页面视为至少用于写入的单元,从而形成更大的多块页面。例如,继续上述双平面示例,将偶数块中的特定的一个的第一页面及奇数块中的关联的一个的第一页面视为用于写入的单元,且可选地和/或可选地视为用于读取的单元。类似地,将特定偶数块的第二页面及关联奇数块的第二页面视为一单元。根据各种实施方式,如本文中使用的NVM的页面指代以下各项中的一个或多个:NVM的单个页面;NVM的多块页面;可选地和/或可选地视为用于读取的一个或多个独立页面的用于写入的NVM的多块页面;及NVM的页面的任何其他组或关联。
在某些实施方式中,高级冗余信息对于数据的不同部分存储于不同芯片中。例如,在于R块中管理闪存芯片的某些实施方式中,高级冗余信息对于不同R块存储于不同闪存芯片中。例如,包括闪存芯片710.0的块0的R块的高级冗余信息存储于闪存芯片710.0中,而包括闪存芯片710.0的块1的R块的高级冗余信息存储于闪存芯片710.1中,等等。在某些实施方式(诸如,在R块中管理闪存芯片的某些实施方式)中,在已知和/或写入高级冗余信息所取决于的数据之后写入高级冗余信息。
在某些使用场景下,NVM元件的一个或多个部分(例如,设备的块,诸如图6的设备601的块639)是不可操作的或在操作期间变得不可操作。在某些实施方式中,不可操作部分经由虚拟及物理块地址(例如,经由经图1A的映射141和/或表143执行的处理)映射出。备选地,跳过(而非明确地映射出)不可操作部分。在基于R块的某些实施方式中,该跳过导致一些R块具有不同数量的块。例如,如果块710.0B0为有缺陷及不可用的,则R块760.0比R块760.1少一个块。将高级冗余信息写入作为例如每一R块的最后块的(每一R块的)可变位置中。
在各种实施方式中,图7A的一个或多个元件对应于图1A的一个或多个元件。例如,闪存设备720及额外闪存设备740集体对应于NVM199,且接口信道730及额外接口信道750集体对应于设备接口190。再如,闪存芯片710.65…710.0集体对应于闪存芯片194的示例。对于又一示例,闪存设备720和/或额外闪存设备740的闪存设备中的一个或多个对应于闪存设备192的实例中的一个或多个。在各种实施方式中,图1A的一个或多个元件根据本文中描述的RASIE操作模式管理高级冗余信息和/或至少部分地基于高级冗余信息来恢复用户数据。例如,CPU171的软件执行能力的部分用以根据各种RASIE操作模式管理高级冗余信息的计算。再如,数据处理121和/或ECC-X135包括专用于和/或特定用于根据各种RASIE操作模式计算高级冗余信息和/或恢复用户数据的硬件元件。对于又一示例,ECC161检测闪存芯片的部分的ECC不可修正(低级)的读取错误,且ECC-X135检测RASIE(高级)读取错误和/或使得能够对其修正。
在各种实施方式中,接口信道730变化地具有一个、四个、八个或16个信道,且额外接口信道750变化地具有一或两个信道。在各种实施方式中,闪存设备720被实现为一个、两个、四个、八个或16个设备,每一个分别具有64、32、16、八及四个闪存芯片。在各种实施方式中,额外闪存设备740被实现为具有一或两个芯片的一设备或被实现为各自具有一个芯片的两个设备。在某些实施方式中,额外闪存设备740的闪存芯片在同样实现闪存设备720的闪存芯片的设备中实现。例如,一个闪存设备实现66个闪存芯片(闪存芯片710.65…710.0)。再如,两个闪存设备各自实现33个闪存芯片,例如,在第一闪存设备中实现33个闪存芯片(闪存芯片710.65…710.33)及在第二闪存设备中实现33个闪存芯片(闪存芯片710.32…710.0)。预期闪存芯片及闪存设备的其他配置。在具有在同样实现闪存设备720的闪存芯片的设备中实现的额外闪存设备740的某些实施方式中,闪存芯片经由共享接口信道或者经由专用于闪存芯片中的特定者(或集合)的接口信道来通信。虽然将闪存设备720及额外闪存设备740示为具有特定数量个闪存芯片(分别是2及64),但预期其他实施方式,诸如具有2、4、8、16、32或128个闪存芯片的闪存设备720和/或具有0、1或4个闪存芯片的额外闪存设备740。
图8示出了具有RASIE的动态高级冗余模式管理的实施方式的所选细节,诸如在由图7A和/或图7B所示的各种实施方式启用的RASIE模式之间的动态切换。在某些实施方式和/或使用场景中,提供一种形式的柔性降级,其中存储子系统(例如,SSD)自在第一高级冗余模式下操作动态地转换至在第二高级冗余模式下操作。该转换响应于故障的检测,诸如整个闪存芯片或其一个或多个部分或对其的操作(诸如,读取或写入操作)的永久或间歇失灵。根据各种实施方式,该转换为以下各项中的一个或多个:SSD的全体;在SSD的一个或多个子集上执行;及在SSD的一个或多个R块上执行。例如,如果存储RASIE-2信息的NVM设备中的一个的特定块在编程期间故障,则含有该特定(故障)块的R块的后续操作转换至不同高级冗余模式(例如,RASIE-1模式),而SSD中的其他R块未受影响且继续在RASIE-2模式下操作。
针对图8,处理以根据第一高级冗余模式在闪存芯片中配置高级冗余信息及数据存储(例如,用户数据和/或用户空闲空间)开始(在第一高级冗余模式下操作802)。接着流程进行以确定是否已检测到故障(故障?803),诸如低级不可修正的读取错误或写入/程序故障。如果尚未检测到故障,则流程返回进行以继续在第一高级冗余模式下操作。如果已检测到故障,则流程进行以自在第一高级冗余模式下操作切换至在第二高级冗余模式下操作。切换通过(可选)减小可用于数据存储的空间(减少空闲空间804)以考虑该故障来开始。如果第二高级冗余模式使用比第一高级冗余模式足够少的高级冗余信息,则省略空闲空间的减小。切换通过根据第二高级冗余模式重新组织数据存储(重新配置数据存储805)而继续。重新组织包括可选将所有用户数据和/或用户空闲空间自发生故障的闪存芯片移动至闪存芯片中的另一个(在某些实施方式中,通过操纵指针和/或其他数据结构要素而完成用户空闲空间移动)。切换进一步通过以下动作:继续经由第一高级冗余模式的高级冗余信息选择性地寻回(如果可能)存储于发生故障的闪存芯片中的任何用户数据,且根据第二高级冗余模式将所寻回的用户数据写入至闪存芯片中的另一个(恢复/存储故障的用户数据806)。如果故障为写入/程序故障,则省略寻回。切换进一步通过可选根据第二高级冗余模式计算高级冗余信息且将其写入至闪存芯片(确定/存储修订的高级冗余信息807)而继续。如果第二高级冗余模式可与先前由于在第一高级冗余模式下操作而在适当位置的高级冗余信息一起操作,则省略计算及写入。接着操作在第二高级冗余模式下开始(在第二高级冗余模式下操作808)。
故障检测(故障?803)经由以下各项中的一个或多个进行:低级错误修正(例如,根据一个或多个ECC技术)、高级错误修正(例如,根据一个或多个RASIE技术)及由闪存芯片中的一个或多个或其部分报告的故障状态。例如,特定闪存芯片的特定部分内的读取的多于临限数量个低级修正可选和/或有条件地导致将特定闪存芯片(或特定部分)视为故障,且执行高级冗余模式切换使得不再使用该故障的闪存芯片(或部分)。再如,如果高级错误修正发生故障,则将闪存芯片(或其部分)中的适当的一个视为故障,且执行高级冗余模式切换使得不再使用该故障的闪存芯片(或部分)。对于另一示例,如果闪存芯片返回程序故障状态(指示写入操作不成功),则将闪存芯片中的适当的一个的适当块被视为故障,且可选和/或有条件地执行高级冗余模式切换使得不再使用该故障的闪存芯片。
在某些实施方式中,通过经由虚拟及物理块地址(例如,经由经图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(除一个闪存芯片用于高级冗余信息且62个闪存芯片用于数据存储外,容量减少模式1-0类似于RASIE-1模式1-0)。
作为特定示例,考虑耦接至图7A的元件的SSD控制器(诸如,图1A的SSD控制器100),最初在RASIE-2模式2-2中操作(例如,高级冗余信息在闪存芯片710.65及闪存芯片710.64中,且数据存储在闪存芯片710.63…710.0中),其对应于在第一高级冗余模式下操作。接着执行对闪存芯片中的一个或多个的读取或者写入。在闪存芯片中的特定的一个的部分(例如,闪存芯片710.62的用于用户数据和/或用户空闲空间的页面)中,该读取导致不可修正(低级)的ECC故障,或者写入为不成功的。作为响应,SSD控制器自在RASIE-2模式2-2中操作动态地切换至在RASIE-2模式2-1中操作,不再使用闪存芯片710.62中的任一个。当RASIE-2模式2-1中的操作提供63个芯片用于数据存储(与RASIE-2模式2-2中的64个芯片对比)时,可用于数据存储的空间自64个芯片减小至63个芯片,且相应地移动用户数据和/或用户空闲空间。例如,根据使用者空闲空间而将来自闪存芯片710.62的所有用户数据移动至闪存芯片710.63及闪存芯片710.61…710.0的部分。基于闪存芯片710.65和/或闪存芯片710.64中的高级冗余信息恢复具有不可修正的ECC故障的页面中的任何用户数据。计算基于闪存芯片710.63及闪存芯片710.61…710.0中的数据存储及根据RASIE-2模式2-1的高级冗余信息且将其存储于闪存芯片710.65和/或闪存芯片710.64中。SSD控制器接着在RASIE-2模式2-1操作(高级冗余信息在闪存芯片710.65及闪存芯片710.64中,而数据存储在闪存芯片710.63及闪存芯片710.61…710.0中)中。
虽然前文描述具有整个闪存芯片的粒度的独立硅元件的动态高级冗余模式管理的若干实施方式,但其他实施方式实施具有为芯片的部分(诸如,一个或多个页面、块或R块)的独立硅元件的动态高级冗余模式管理。
在各种实施方式中,图8的一个或多个要素的处理或关于图8的一个或多个要素的处理全部或部分地通过图1A的一个或多个元件(或其部分)来执行。例如,CPU171的软件执行能力的部分用以(诸如)通过针对减小可用于数据存储的空间或针对重新组织数据存储来管理高级冗余模式之间的动态转换。再如,数据处理121和/或ECC-X135包括专用于和/或特定用于根据“目标”冗余模式计算高级冗余信息的硬件元件。对于又一示例,ECC161实现低级(例如,ECC)错误修正及不可修正错误的检测,而ECC-X135实现高级(例如,RASIE)错误修正及不可修正错误和/或存储器元件故障的检测。对于又一示例,通过ECC-X135的一个或多个部分来执行与(高级)冗余模式之间的动态转换有关的功能性的所有或任何部分。
高级冗余及适应性低级码速率
在某些实施方式和/或使用场景中,低级错误修正使用适应性码速率(例如,使用可变码速率的适应性ECC技术)。例如,第一读取单元以比以第二码速率管理的第二读取单元提供相对更多可用数据位的第一码速率来管理。在使用可变码速率的低级错误修正的某些实施方式和/或使用场景中,高级冗余信息存储于以低级错误修正管理的独立硅元件的部分(诸如,闪存芯片的部分)中,关于由高级冗余信息保护的数据存储,低级错误修正提供相对更多可用数据位或最多可用数据位。在各种实施方式和/或使用场景中,存储高级冗余信息的部分根据基于每一R块、基于每一芯片、随时间动态地或其任何组合而变化。在各种实施方式中,基于关于低级错误修正码速率具有最多可用数据而选择一个或多个芯片、R块、块和/或页面以用于高级冗余数据的存储。
例如,高级冗余信息基于每一R块而存储于变化的位置(诸如,块位置)处,该位置(诸如,块)是基于低级错误修正码速率具有最多可用数据的位置。在任意示例中,考虑图7A的环境中的RASIE-2操作模式情况,其中将66个闪存芯片的集合视为各自具有一个块的高度的至多M个R块的逻辑“堆栈”,其中M为每一闪存芯片的块数量。(在概念上最简明状况下,堆栈中的每一R块由来自每一芯片的编号相同的物理块组成,但为容纳故障的块,在至少某些实施方式中解除此约束。在另一实施方式中,维持约束,但容纳对应于故障的块的“空洞”)。因此,每一R块具有至多66个块,其对应于来自闪存芯片710.0至闪存芯片710.65中的每一个的一块。(在图7A中,虽然仅明确地列举在范围710.0至710.65中的一些闪存芯片,但应理解,通过使用省略号而内隐地示出此范围中的所有闪存芯片。)将高级冗余信息写入至每一R块的基于低级修正码速率而具有最多可用数据的任一块中。如果例如在第一R块中,对应于闪存芯片710.15及710.49的块基于低级错误修正码速率碰巧具有最多可用数据,则将高级冗余信息写入至这些块(对应于闪存芯片710.15及710.49)中。而如果在第二R块中,对应于闪存芯片710.9及710.35的块基于低级错误修正码速率碰巧具有最多可用数据,则将高级冗余信息写入至这些块(对应于闪存芯片710.9及710.35)中。在某些实施方式中,在已知R块中的所有其他数据之后写入高级冗余数据。
图9示出了具有受存储于读取单元的一个或多个中的高级冗余信息保护的适应性(例如,随时间和/或依据位置而不同和/或变化)码速率的低级冗余信息的读取单元(911、931…951、971)的实施方式。读取单元中的每一个具有经启用和/或分配以含有用户数据(911.U、931.U…951.U、971.U)的部分,及经启用和/或分配以含有低级冗余信息(诸如,如低级ECC(911.E、931.E…951.E、971.E)的ECC码的检查位)的剩余部分。
在该图中,垂直尺寸相对地按比例调整且指示相对大小。因此,读取单元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)读取单元。类似地,用于确定性地选择具有最大用户数据量的一个或多个读取单元以便保护其他读取单元中的所有剩余用户数据的任何技术在本文中所考虑的技术的范畴内。
高级冗余信息计算技术
在各种实施方式和/或使用场景中,高级冗余信息系通过多种技术来计算,诸如经由奇偶检查、RS和/或加权和技术。例如,在使得能够自一个(低级)故障(例如,RASIE-1)恢复的一些高级冗余模式下,经由奇偶检查技术来计算高级冗余信息。对于另一示例,在使得能够自两个(低级)故障(例如,RASIE-2)恢复的一些高级冗余模式下,经由奇偶检查与RS技术的组合来计算高级冗余信息。使用奇偶编码来计算高级冗余信息的第一部分且使用RS编码来计算第二部分。对于另一示例,在使得能够自两个故障(例如,RASIE-2)恢复的一些高级冗余模式下,经由奇偶检查与加权和技术的组合来计算高级冗余信息。使用奇偶编码来计算高级冗余信息的第一部分且使用加权和编码来计算第二部分。高级冗余信息系例如使用低级故障检测技术(诸如,ECC)经由NVM的页面的读取及写入来管理,该低级故障检测技术(诸如,ECC)与用于可用于存储受高级冗余信息保护的数据的NVM的页面的低级故障检测技术相同或类似。
作为RASIE-2的特定示例,经由跨越R块的条带区中的所有第一页面的XOR使用奇偶编码来计算高级冗余信息的第一页面。更具体地,对跨越R块的条带区中的所有第一页面的所有第一字节执行XOR,产生高级冗余信息的第一页面的第一字节。类似地,通过对跨越R块的条带区中的所有第一页面的所有第二字节进行XOR而形成高级冗余信息的第二字节,且对条带区中的所有第一页面的所有字节执行XOR而形成高级冗余信息的所有字节。如下使用加权和技术来计算高级冗余信息的第二页面。
在有限域(诸如,伽罗瓦域(用作示例))上执行算法。示例假定正被操作的数据为字节宽,且因此使用诸如GF(256)的域。在各种实施方式中,在任何单元中对数据进行操作。
向条带区中的每一页面指派唯一非零“索引”。挑选索引的值以简化实施复杂性,且该值不与产生多项式的任何形式相关。例如,页面由条带区中的自0至N-1的芯片位置来标记(例如,通过软件),且索引的合适值为芯片号(如果N<255,则确保为非零)的1补码。索引值的另一选择为最低权重(设定位的最少数量或清除位的最少数量)非零整数,例如以减少和/或最小化硬件成本。在某些实施方式和/或使用场景中,在处理页面时,为索引选择格雷编码值最小化转换和/或减少功率。
不根据有限域算法而是根据其他原理来选择索引值。尽管如此,但每一索引值对应于有限域中的非零要素。假定页面i具有索引值Ki(且页面j具有索引值Kj)。加权和冗余为Ki*Pi(每一字节(在GF域上)乘以其索引值)的(GF域)总和(在来自每一页面i的相应字节Pi范围内)。
因此,对于每一字节,将加权和冗余信息计算为:
R0=在所有相应字节Pi范围内的总和;
R1=在所有相应字节Ki*Pi范围内的总和;
R0为所有相应字节的XOR;且
R1为字节的加权和,其中权重被选择为索引值。前述计算针对页面中的相应字节中的每一个而反复,从而产生R0及R1中的每一个的字节的相应页面。在以下论述中,为清楚阐述起见,在一些环境中分别将R0及R1描述为单个要素(例如,每一个为单个字节),但如在前述计算中,每一个表示要素的相应页面(例如,每一个为字节的页面)。
Pi表示页面i中的字节,且Pj表示页面j中的字节。关于来自每一页的相应字节的一条带区来描述处理,且在所有相应字节上执行反复。如果一些页面由于例如具有不同(低级)冗余代码速率而“短于”其他页面,则较短页面以零填充(或通过同样用于编码及译码的任何已知值填充),使得被有效处理的所有页面具有相同大小。
根据各种实施方式,计算R0及R1的求和可经由各种串行和/或并列计算以任何顺序执行。页面不必以任何特定顺序处理,因为Ki*Pi在Kj*Pj之前或之后相加对R1之结果没有影响。根据各种实施方式,对应于冗余信息的页面的各种字节的R0及R1值的计算彼此独立且可经由各种串行和/或并列计算以任何顺序计算。此外,自R1减去Ki*Pi(及自R0减去Pi)实现自关于页面的计算效应“退出”。因为是在GF域上进行,所以加法及减法皆为XOR(因此相减简单地等效于第二次相加),在某些实施方式和/或使用场景中,无需任何特定硬件用于GF域实现(例如,逻辑XOR能力是足够的)以“退出”页面。
在不可修正的低级错误的情况下,在某些实施方式中,高级修正通过重新计算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)而获得相同结果。
在替代实施方式中,替代伽罗瓦域而使用由整数模p定义的有限域(其中p为质数)。计算与上文描述的那些计算相同,其中加法为整数加法模p,且乘法为整数乘法模p。例如,如果页面为字节的页面,则使用整数模257的有限域。所有用户数据字节均在范围0至255中且以每次一个字节来存储。然而,R1结果具有在0至256的范围内的值,从而需要一个以上字节用于表示。存在编码自0至256的值的许多方式以最小化存储空间且使得能够在具有减少的开销的情况下存储R1页面。例如,值0及256分别存储为九位序列000000000及000000001,且所有其他值以八位存储。假定R1值随机分布,存储开销为<0.1%。如针对图9所描述的,选择R1页面以具有最大用户数据量,从而使得能够在某些使用场景下隐藏存储开销。
图10示出了例如如由在诸如图7A的环境中的RASIE-2模式2-2所使用及如图7B中进一步说明的高级冗余信息结果及数据源的对应的实施方式的所选细节。图10明确地示出了闪存芯片710.0、710.63、710.64及710.65,且通过省略号(…)隐含地示出了闪存芯片710.1…710.62。示出了闪存芯片的块、页面及页面内的字节的所选细节。高级冗余信息的第一部分示为R01010(存储于闪存芯片710.64中),且使用奇偶编码来计算。高级冗余信息的第二部分示为R11011(存储于闪存芯片710.65中),且使用加权和编码来计算。数据信息的存储被示出为数据1019(存储于闪存芯片710.0…710.63中)。
虚线箭头1001概念性地指示基于数据1019的所有第一页面(跨越所有闪存芯片)的相应第一字节的两字节冗余计算结果(R01010及R11011中的每一个的一个字节)。如图所示,两字节结果为第一R0及R1页面中的每一个上的第一字节。虚线箭头1002概念性地指示基于数据1019的所有第一页面的相应最后字节的两字节冗余计算结果(R01010及R11011中的每一个的一个字节)。如图所示,两字节结果为第一R0及R1页面中的每一个上的最后字节。虚线箭头1003概念性地指示基于数据1019的第一块(跨越所有闪存芯片)的相应最后页面的两页面冗余计算结果(R01010及R11011每个一个页面)。
要注意的是,如本文中别处所描述的,在某些实施方式中,高级冗余信息对于数据的不同部分存储于不同芯片中。因此,在某些实施方式中,跨越各种芯片(而非两个“专用”芯片,如图10中所示)而存储R0及R1。
图11示出了根据各种实施方式的在各种操作条件下的例如如由在诸如图7A的环境中的RASIE-2模式2-2所使用及如图7B及图10中进一步说明的高级冗余信息计算的实施方式的所选细节。更具体地,图11示出了根据例如由图10的虚线箭头1001概念性地所示的两字节冗余计算结果的用于R0的字节的奇偶编码计算及用于R1的字节的加权和编码计算。操作条件包括以下各项中的一个或多个:在有限域(诸如,伽罗瓦域)上执行算法,索引(对应于图11中的虚设求和变量“i”值)为闪存芯片号的1补码(或任何其他唯一及非零编号),及索引对应于有限域中的非零要素。针对R0及R1的所有字节而基于相应数据字节重复如图11中所示的计算。要注意的是,非零索引使得R1值能够包括来自Pi的每一要素的贡献。
因此,根据彼此计算R0的任何字节或在R1的任何字节之间不存在相依性。因此,各种实施方式被预计为完全(整体地)并列地、部分并列地或完全串行地计算R0及R1值。例如,并列地计算页面的所有R0和/或R1字节。再如,并列地计算页面的所有R0字节,随后(或在此之前)并列地计算页面的所有R1字节。
此外,不存在关于相对于彼此或相对于计算R1的任何字节来计算R0的任何字节的顺序要求。因此,各种实施方式被预计为R0及R1值完全按相对于彼此的顺序、按分开地相对于彼此的顺序(例如,R0计算按相对于彼此的顺序但不按相对于R1的顺序,且反之亦然)或无特定顺序(例如,完全无顺序、不按顺序或随机顺序)来计算。例如,以特定顺序(例如,自最低字节至最高字节)来计算页面的所有R0字节,其后接着为以该特定顺序计算页面的所有R1字节。对于另一示例,以特定顺序计算页面的所有R0字节,且独立地以该特定顺序计算页面的所有R1字节。对于又一示例,以相对于彼此无特定顺序(例如,当数据操作数变得可用时)来计算页面的所有R0字节以及页面的所有R1字节。
对于又一示例,以由对一个或多个NVM(每一个具有例如一个或多个闪存芯片)执行的一个或多个读取操作的完成顺序确定的顺序来计算一个或多个页面的所有R0及R1字节,该读取操作用于读取由图11中所示的求和及加权和计算(Pi)参考的数据字节。在某些实施方式和/或使用场景中,以由读取操作的完成确定的顺序执行计算使得能够减少或消除在NVM与使得能够执行计算的元件之间的缓冲。在某些实施方式和/或使用场景中,以由读取操作的完成确定的顺序执行计算使得能够减少用以执行计算的存储器带宽(诸如,NVM的存储器带宽)。
对于又一示例,以由响应于对一个或多个NVM(每一个具有例如一个或多个闪存芯片)执行的读取操作而传回的数据和/或可得到的数据的顺序确定的顺序来计算一个或多个页面的所有R0及R1字节,传回的数据和/或可得到的数据对应于由图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与经启用于执行计算的元件之间的缓冲。在某些实施方式和/或使用场景中,以自读取操作传回的数据和/或可得到的数据的顺序执行计算减少用于执行计算的存储器带宽。在某些实施方式中,以特定顺序(例如,自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示出了图13B的代数重排,其中引入项德尔塔R0(ΔR0)及德尔塔R1(ΔR1)。图13D示出了对于Pn及Pm的图13C的解,且因此表示基于R1、R0的相应字节及来自除页面m及n外的所有数据页面的相应字节的页面n的恢复值的一个字节的计算及页面m的恢复值的一个字节的计算。要注意的是,唯一索引实现非零分母,因为Kn相对于Km为唯一的。
在各种实施方式中,执行如由图13A至图13D所表示的计算以确定页面m的恢复值的一字节及页面n的恢复值的一字节。重复该计算以基于R1、R0的相应字节及来自除页面m及n外的所有数据页面的相应字节确定页面m及n的所有字节的恢复值。
因此,计算页面m或n的恢复值的任何字节彼此之间不存在相依性。因此,预期各种实施方式,其中以类似于针对Pj恢复值的前述计算的方式而在高度并列至高度串行的范围内计算Pm和/或Pn恢复值。此外,不存在关于计算页面Pm和/或页面Pn的恢复值中的任一个相对于彼此的顺序要求。因此,预期各种实施方式,其中以相对于彼此变化的顺序、以类似于针对Pj恢复值的前述计算的方式计算Pm和/或Pn恢复值。
一些示例性实施方式以至少部分地由对一个或多个NVM(每一个具有例如一个或多个闪存芯片)执行的一个或多个读取操作的完成顺序确定的顺序来执行关于确定恢复值的计算(诸如,针对R0和R1'的计算),该读取操作用于获得示为用于图13A至图13D中的任一个中的计算的来源的值中的一个或多个。在某些实施方式和/或使用场景中,以读取操作的完成顺序执行计算使得能够减少或消除在NVM与使得能够执行计算的元件之间的缓冲。在某些实施方式和/或使用场景中,以读取操作的完成顺序执行计算使得能够减少用以执行计算的存储器带宽(诸如,NVM的存储器带宽)。
一些其他例示性实施方式以至少部分地由自一个或多个NVM(每一个具有例如一个或多个闪存芯片)传回的数据和/或可得到的数据的顺序确定的顺序执行关于确定恢复值的计算(诸如,针对R0'和R1'的计算),传回的数据和/或可得到的数据系响应于对NVM执行以获得示为用于图13A至图13D中的任一个中的计算的来源的值中的一个或多个。在某些实施方式和/或使用场景中,以自读取操作传回的数据及/载可得到的数据的顺序执行计算减少或消除在NVM与经启用于执行计算的元件之间的缓冲。在某些实施方式和/或使用场景中,以自读取操作传回的数据和/或可得到的数据的顺序执行计算减少用于执行计算的存储器带宽(诸如,NVM的存储器带宽)。在某些实施方式中,以特定顺序(例如,自Pi的最低字节至最高字节)执行读取操作,而在其他实施方式中,不以特定顺序执行读取操作。
图14A及图14B示出了计算关于自NVM接收的页面的高级冗余信息的实施方式的所选细节。图14A示出了经由以下步骤将多个读取命令发送至一个或多个NVM的实施方式的所选细节:发出(发出读取操作1402A),检查是否已发送所有读取命令(全部发出?1403A),且如果未发送所有读取命令,则循环返回以发送该命令中的另一个。要注意的是,预期其他实施方式,其中同时而非一次一个地发出多个命令。
图14B示出了处理响应于如图14A中所示发送的读取命令而自NVM接收的页面的实施方式的所选细节。进行检查以确定页面是否可用(页面就绪?1402B)。如果不可用,则处理循环返回以再次执行检查。如果页面可用,则进行关于页面的高级冗余信息处理(执行基于页面的计算1403B)。接着进行检查以确定是否已处理所有页面(页面完成?1404B)。如果已处理所有页面,则处理完成(结束1499B),否则流程循环返回以确定另一页面是否可用。
图14B中所示的处理独立于图14A中所示的处理,而非响应于如图14A中说明发送的命令而接收页面。在各种场景下,页面的到达顺序根据NVM类型、状态、操作环境及其他因素而变化,且在一些情境中不同于对应于到达页面的读取命令的发送顺序或到达顺序。在某些实施方式和/或使用场景中,因为图14A的处理独立于图14B(而非页面数据到达取决于正发送的相应读取命令),所以在接收/处理读取数据(图14B)的同时发送读取命令(图14A)。在某些实施方式和/或使用场景中,例如如果在将发送针对特定页面的读取命令之前该特定页面存在于特定缓存中,则自一个或多个缓存提供一些页面而非经由指向NVM的读取命令而请求。在某些实施方式和/或使用场景中,由NVM而非响应于发送的命令所提供的页面与响应于发送的命令而提供的页面(例如,响应于针对其他活动发送的读取命令而提供的页面)混合。
在各种实施方式中,如由图14A及图14B所示,至少部分地执行如由图11所示的R0及R1的计算。对于第一示例,如图14A所示,将计算相应R0及R1页面所必要的所有数据页面的读取命令发送至一个或多个NVM。如图11所示,在接收响应于读取命令而接收的数据页面时处理该页面以计算R0及R1页面。对于第二示例,如图14A所示,将针对一对(例如,对应于双平面NVM的两个平面)R0及R1页面的读取命令发送至一个或多个NVM。如图11所示,在接收响应于读取命令而接收的数据页面时处理该页面以计算R0及R1页面。
在各种实施方式中,如由图14A及图14B所示,至少部分地执行如由图12所示的Pj的计算。对于第一示例,如图14A所示,将计算特定Pj页面所必要的所有数据页面的读取命令发送至一个或多个NVM。如图12所示,在接收响应于读取命令而接收的数据页面时处理该页面以计算Pj页面。对于第二示例,如图14A所示,将针对一对Pj页面(例如,对应于双平面NVM的两个平面)的读取命令发送至一个或多个NVM,且如图14B所示,在接收所接收的数据页面时处理该页面以计算该对Pj页面。
在各种实施方式中,如图14A及图14B所示,至少部分地执行如由图13A至图13D中的任一个说明的关于确定恢复值的计算(诸如,针对R0'和R1'的计算)。对于第一示例,如图14A所示,将计算特定R0'页面及特定R1'页面所必要的所有数据页面的读取命令发送至一个或多个NVM。如图13A所示,在接收响应于读取命令而接收的数据页面时处理该页面以计算R0'和R1'页面。对于第二示例,如图14A所示,将针对一对R0'和R1'页面(例如,对应于双平面NVM的两个平面)的读取命令发送至一个或多个NVM,且如图14B所示,在接收所接收的数据页面时处理该页面以计算该对R0'和R1'页面。
图15A至图15C示出了例如在诸如与图11相关联的环境中自关于提供至NVM的写入的高级冗余信息的计算退出的实施方式的所选细节。图15A示出了经由以下步骤将多个写入命令发送至一个或多个NVM的实施方式的所选细节:发出(发出写入操作1502A),检查是否已发送所有命令(全部发出?1503A),且如果未发送所有命令,则循环返回以发送该命令中的另一个。要注意的是,预期其他实施方式,其中同时而非一次一个地发出多个命令。
图15B示出了处理响应于如图15A中所示发送的写入命令而自NVM接收的写入完成及状态信息的实施方式的所选细节。进行检查以确定是否已完成写入而无错误(写入OK?1502B)。如果已完成写入而无错误,则进行检查以确定是否已完成所有写入(写入完成?1504B)。如果已完成所有写入,则处理完成(结束1599B)。如果写入已完成但具有(低级)错误(诸如,程序故障),则流程进行以“重做”关于高级冗余信息计算的写入效应(自冗余退出写入1503B)。更具体地,自任何相应高级冗余信息计算解除计算具有低级错误的写入的数据(假定在写入将成功之假设下用于写入的数据已包括于相应高级冗余计算中)。例如,在特定页面j上检测到低级写入故障。作为响应,计算修订的R0及R1页面,使得将页面j数据(Pj)设定为零。图15C示出了用于修订的R0(nR0)的单个字节的计算及修订的R1(nR1)的单个字节的计算的实施方式的所选细节,其中j为发生低级写入故障的页面。要注意的是,在(诸如)与图11相关联之图12的环境中,如果有限域为伽罗瓦域,则图15C中所示之减法运算(“-”)等效于逻辑XOR运算。在各种实施方式中,执行其他处理(未说明)以存储具有低级写入故障的页面(Pj)以及修订的高级冗余页面(nR0及nR1)。
图15B中所示的处理独立于图15A中所示的处理,而非响应于如图15A中所示发送的命令而接收写入完成及状态信息。在各种情况中,写入完成及状态信息的到达顺序根据NVM类型、状态、操作环境及其他因素而变化,且在一些情况中不同于对应于到达写入完成及状态信息的写入命令的发送顺序或到达顺序。在某些实施方式和/或使用场景中,因为图15A的处理独立于图15B(而非写入完成及状态信息到达取决于正发送的相应写入命令),所以在接收/处理写入完成及状态信息(图15B)的同时发送写入命令(图15A)。
在某些实施方式和/或使用场景中,在正将写入命令发送至NVM与响应于该写入命令而接收来自NVM的写入完成及状态信息之间发生显著延迟。在某些实施方式和/或使用场景中,由NVM而非响应于如图15A中所示发送的命令所提供的写入完成及状态信息与响应于如图15A中所示发送的命令而提供的写入完成及状态信息(例如,响应于针对其他活动发送的写入命令而提供的写入完成及状态信息)混合。
在各种实施方式和/或使用场景中,未使用否则将用于数据信息的一个或多个页面。在各种情况中,未使用的页面为块、R块、条带区或任何种类页面的序列的第一、中间或最后页面。在一些情况下,先验地不使用未使用的页面(“省去”),且在一些情况下,在某一使用后不使用未使用的页面(“自服务移除”)。被省去的未使用页面的示例为不正确地制造的页面。自服务移除的未使用页面的示例为未能正确写入的页面(例如,如针对图15B描述为低级写入错误)。例如关于图10至12、图13A至图13D、图14A至图14B及图15A至图15B的处理(诸如)通过自计算完全地省略未使用的页面或通过如同未使用的页面上的所有数据为零一样执行计算而跳过任何未使用的页面(不论是被省去或自服务移除)。
在各种实施方式中,图10至图12、图13A至图13D、图14A至图14B及图15A至图15B的一个或多个要素的处理或关于该一个或多个要素的处理完全或部分地由图1A的一个或多个元件(或其部分)执行。例如,CPU171的软件执行能力的部分用于诸如通过指导如由图12及图13A至图13D所示的数据恢复运算来管理高级冗余处理。对于又一示例,数据处理121包括专用于和/或特定用于根据诸如由图11所示的计算来计算高级冗余信息的硬件元件。
示例性实现技术
在某些实施方式中,由诸如通过独立硅元件(例如,闪存)、计算主机闪存控制器、和/或SSD控制器(诸如图1A的SSD控制器100)来实现动态高级冗余模式管理的系统执行的所有或部分操作,以及提供上述所有或部分操作的处理器、微处理器、片上系统、专用集成电路、硬件加速器或的其他电路的部分的各种组合,由与计算机系统进行的处理兼容的规范来指定。该规范符合各种描述,例如,硬件描述语言、电路描述、网表描述、掩码描述或布局描述。示例描述包括:Verilog、VHDL、SPICE、SPICE变体诸如PSpice、IBIS、LEF、DEF、GDS-II、OASIS或其描述。在各种实施方式中,处理包括解释、编译、模拟和合成的任何组合以生成、验证或指定适于包括在一个或多个集成电路上的逻辑和/或电路。根据各种实施方式,每个集成电路可根据多种技术来设计和/或制造。该技术包括可编程技术(例如,场或掩码可编程门阵列集成电路)、半定制技术(诸如整体或部分基于单元的集成电路)和全定制技术(诸如基本上专用的集成电路)及其任意组合,或与集成电路的设计和/或制造兼容的其他任何技术。
在某些实施方式中,通过执行和/或解释一个或多个程序指令,通过解释和/或编译一个或多个源和/或脚本语言语句,或通过执行通过编译、转换和/或解释以编程和/或脚本语言语句表达的信息生成的二进制指令来进行所有或部分如存储有一组指令计算机可读介质所述的操作的各种组合。语句与任何标准编程或脚本语言(例如,C、C++、Fortran、Pascal、Ada、Java、VBscript和Shell)兼容。一个或多个程序指令、语言语句或二进制指令可选存储在一个或多个计算机可读存储介质元件上。在各种实施方式中,一些、所有或相应部分的程序指令实现为一种或多种功能、例程、子例程、线内例程、处理、宏或其部分。
结论
在该说明书中作出的某些选择仅仅是便于准备说明书和附图,除非有相反的指示,否则这些选择本身不应解释为表达所述实施方式的结构或操作相关的额外信息。选择的示例包括:用于数字编号的设计的特定组织或分配以及用于识别和引用实施方式的特征和元件的元件标识符(例如,插图编号或数字标志符)的特定组织或分配。
词语“包括(includes)”或“包括(including)”具体意在被理解为对描述开放式范围的逻辑组的抽象,且并不指表达物理包含,除非后面明确跟随词语“之内”。
尽管为了描述和理解清晰的目的,已在一些细节中描述了上述实施方式,但本发明不限于所提供的细节。有许多本发明的实施方式。所公开的实施方式是示例性的,而不是限制性的。
应理解,构造、布置和使用的许多变化可能与说明书一致,且处于已公布的专利的权利要求的范围内。例如,互连和功能单位的位宽度、时钟速率和所使用的技术的类型根据每个组件块中的各种实施方式而可变。给于互连和逻辑的名称仅是示例性的,且不应被解释为限制所描述的概念。流程图和流程图处理、动作和功能元件的顺序和布置根据各种实施方式可变化。同样地,除非特别说明与此相反,否则指定的值范围、使用的最高值和最低值或其他特定的规范(诸如闪存技术类型;以及寄存器和缓存器中的条目或级别的数量)仅是所描述那些实施方式,期望跟踪实现技术的改进和变化,且不应被解释为限制。
可采用本技术已知的功能等效的技术,而不是用于实现各种组件、子系统、操作、功能、例程、子例程、在线例程、程序、宏或其部分的那些所述技术。还应理解,实施方式中的许多功能方面可在硬件(即,一般专用电路)或软件(即,经由编程的控制器或处理器的某些方式)中选择性实现,以作为取决于设计约束和更快处理的技术趋势(促使先前在硬件中的功能迁移至软件)和更高的集成密度(促使先前在软件中的功能迁移至硬件)的实施方式的功能。各种实施方式中的具体变化包括但不限于:划分的差异;不同的形式因数和配置;使用不同的操作系统和其他系统软件;使用不同接口标准、网络协议或通信链路;以及当根据特定应用的独特工程和商业限制实现在本文中描述的概念时预期的其他变化。
已通过超越需要用于所描述的实施方式的很多方面的最小实现的细节和环境背景描述了实施方式。本领域普通技术人员将认识到,一些实施方式省略了公开的组件或特征,且无需改变剩余元件之间的基本合作。因此,应理解大部分公开的细节不需要实现所描述的实施方式的相应方面。在剩余要素可与现有技术相区别的范围内,被省略的组件和特征不限于本文中所描述的概念。
设计的所有这些变化是在由所描述的实施方式传达的教学上的非实质性变化。还应理解,本文中描述的实施方式对其他的计算和网络应用具有广泛的实用性,且并不仅限于所描述的实施方式的特定应用或行业。因此,本发明将被解释为包括涵盖在所公布的专利的权利要求的范围内的所有可能的修改和变更。
Claims (32)
1.一种高速冗余信息计算系统,包括:
分别处理多个数据存储信息单元中的每一个,从而以响应于分别变得可用的所述多个数据存储信息单元中的每一个的第一顺序来计算一个或多个高级冗余信息单元的构件;
至少部分基于与不可修正的数据存储信息单元中的每一个相关联的相应低级冗余信息,来将所述多个数据存储信息单元中的特定的一个或多个确定为所述不可修正的数据存储信息单元的构件,除所述不可修正的数据存储信息单元之外的多个数据存储信息单元是可修正的数据存储信息单元;
至少部分经由以响应于分别变得可用的所述可修正的数据存储信息单元中的每一个的第二顺序来分别处理所述可修正的数据存储信息单元中的每一个的构件,来计算所述不可修正的数据存储信息单元的修正版本的构件;并且
其中,所述第一顺序不同于所述第二顺序。
2.根据权利要求1所述的系统,进一步包括一个或多个非易失性存储器(NVM)以及用于从所述NVM中读取所述可修正的数据存储信息单元中的至少一些的构件,并且其中,所述第二顺序符合所述NVM返回所述可修正的数据存储信息单元中的所述至少一些的顺序。
3.根据权利要求2所述的系统,进一步包括用于将所述多个数据存储信息单元存储在所述NVM中的构件,并且其中,所述第一顺序符合所述存储的顺序。
4.根据权利要求3所述的系统,进一步包括用于部分地管理所述NVM中的一个或多个以实现固态磁盘(SSD)的构件。
5.根据权利要求1所述的系统,进一步包括一个或多个非易失性存储器(NVM),并且其中,所述多个数据存储信息单元中的每一个对应于所述NVM的一个或多个相应页面。
6.根据权利要求5所述的系统,其中,所述NVM中的一个或多个是固态磁盘(SSD)中包括的闪存。
7.根据权利要求1所述的系统,其中,所述不可修正的数据存储信息单元的数量是2。
8.根据权利要求1所述的系统,其中,用于计算所述不可修正的数据存储信息单元的所述修正版本的所述构件进一步至少部分是经由用于处理高级冗余信息单元中的至少一个的构件。
9.根据权利要求8所述的系统,其中,所述不可修正的数据存储信息单元的数量等于所述高级冗余信息单元中的所述至少一个的数量。
10.根据权利要求1所述的系统,其中,所述高级冗余信息单元不可作为通过所述多个数据存储信息单元的对应字节的生成多项式进行的多项式除法的余数来计算。
11.根据权利要求1所述的系统,进一步包括一个或多个闪存以及用于将所述多个数据存储信息单元存储在所述闪存的芯片的第一部分中的构件、用于将所述高级冗余信息单元存储在所述闪存的芯片的第二部分中的构件,并且其中,所述第一部分和所述第二部分是互不相容的。
12.根据权利要求1所述的系统,进一步包括一个或多个闪存以及用于将所述多个数据存储信息单元存储在所述闪存的芯片的一部分中的构件,所述一部分小于所述闪存的全部芯片。
13.根据权利要求1所述的系统,进一步包括一个或多个闪存以及用于将所述高级冗余信息单元存储在所述闪存的芯片的一部分中的构件,所述一部分小于闪存的全部芯片。
14.一种高速冗余信息计算方法,包括:
分别处理多个数据存储信息单元中的每一个,从而以响应于分别变得可用的所述多个数据存储信息单元中的每一个的第一顺序来计算一个或多个高级冗余信息单元;
至少部分基于与不可修正的数据存储信息单元中的每一个相关联的相应低级冗余信息,来将所述多个数据存储信息单元中的特定的一个或多个确定为所述不可修正的数据存储信息单元,除所述不可修正的数据存储信息单元之外的多个数据存储信息单元是可修正的数据存储信息单元;
至少部分经由以响应于分别变得可用的所述可修正的数据存储信息单元中的每一个的第二顺序来分别处理所述可修正的数据存储信息单元中的每一个,来计算所述不可修正的数据存储信息单元的修正版本;并且
其中,所述第一顺序不同于所述第二顺序。
15.根据权利要求14所述的方法,进一步包括从一个或多个非易失性存储器(NVM)读取所述可修正的数据存储信息单元中的至少一些,并且其中,所述第二顺序符合所述NVM返回所述可修正的数据存储信息单元中的所述至少一些的顺序。
16.根据权利要求15所述的方法,进一步包括将所述多个数据存储信息单元存储在所述NVM中,并且其中,所述第一顺序符合所述存储的顺序。
17.根据权利要求16所述的方法,进一步包括部分地管理所述NVM中的一个或多个以实现固态磁盘(SSD)。
18.根据权利要求14所述的方法,其中,所述多个数据存储信息单元中的每一个对应于一个或多个非易失性存储器(NVM)的一个或多个相应页面。
19.根据权利要求18所述的方法,其中,所述NVM中的一个或多个是固态磁盘(SSD)中包括的闪存。
20.根据权利要求14所述的方法,其中,所述不可修正的数据存储信息单元的数量是2。
21.根据权利要求14所述的方法,其中,计算所述不可修正的数据存储信息单元的修正版本进一步至少部分是经由处理所述高级冗余信息单元中的至少一个。
22.根据权利要求21所述的方法,其中,所述不可修正的数据存储信息单元的数量等于所述高级冗余信息单元中的所述至少一个的数量。
23.根据权利要求14所述的方法,其中,所述高级冗余信息单元不可作为通过所述多个数据存储信息单元的对应字节的生成多项式进行的多项式除法的余数来计算。
24.根据权利要求14所述的方法,进一步包括将所述多个数据存储信息单元存储在一个或多个闪存的芯片的第一部分中,将所述高级冗余信息单元存储在所述闪存的芯片的第二部分中,并且其中,所述第一部分和所述第二部分是互不相容的。
25.根据权利要求14所述的方法,进一步包括将所述多个数据存储信息单元存储在一个或多个闪存的芯片的一部分中,所述一部分小于所述闪存的全部芯片。
26.根据权利要求14所述的方法,进一步包括将所述高级冗余信息单元存储在一个或多个闪存的芯片的一部分中,所述一部分小于所述闪存的全部芯片。
27.一种高速冗余信息计算系统,包括:
第一处理逻辑电路,被启用以分别处理多个数据存储信息单元中的每一个,从而以响应于分别变得可用的所述多个数据存储信息单元中的每一个的第一顺序来计算一个或多个高级冗余信息单元;
确定逻辑电路,被启用以至少部分基于与不可修正的数据存储信息单元中的每一个相关联的相应低级冗余信息,来将所述多个数据存储信息单元中的特定的一个或多个确定为所述不可修正的数据存储信息单元,除所述不可修正的数据存储信息单元之外的多个数据存储信息单元是可修正的数据存储信息单元;
计算逻辑电路,被启用以至少部分经由第二处理逻辑电路来计算所述不可修正的数据存储信息单元的修正版本,所述第二处理逻辑电路被启用以以响应于分别变得可用的所述可修正的数据存储信息单元中的每一个的第二顺序来分别处理所述可修正的数据存储信息单元中的每一个;并且
其中,所述第一顺序不同于所述第二顺序。
28.根据权利要求27所述的系统,进一步包括一个或多个非易失性存储器(NVM)以及被启用以从所述NVM中读取所述可修正的数据存储信息单元中的至少一些的读取逻辑电路,并且其中,所述第二顺序符合所述NVM返回所述可修正的数据存储信息单元中的所述至少一些的顺序。
29.根据权利要求28所述的系统,进一步包括被启用以将所述多个数据存储信息单元存储在所述NVM中的存储逻辑电路,并且其中,所述第一顺序符合所述存储的顺序。
30.根据权利要求29所述的系统,其中,所述NVM包括在固态磁盘(SSD)中。
31.根据权利要求27所述的系统,进一步包括一个或多个非易失性存储器(NVM),并且其中,所述多个数据存储信息单元中的每一个对应于所述NVM的一个或多个相应页面。
32.根据权利要求31所述的系统,其中,所述NVM中的一个或多个是固态磁盘(SSD)中包括的闪存。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161433918P | 2011-01-18 | 2011-01-18 | |
US61/433,918 | 2011-01-18 | ||
PCT/US2012/021682 WO2012099937A2 (en) | 2011-01-18 | 2012-01-18 | Higher-level redundancy information computation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103415844A CN103415844A (zh) | 2013-11-27 |
CN103415844B true CN103415844B (zh) | 2016-04-20 |
Family
ID=46516340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280012139.7A Expired - Fee Related CN103415844B (zh) | 2011-01-18 | 2012-01-18 | 用于高级冗余信息计算的系统和方法 |
Country Status (7)
Country | Link |
---|---|
US (2) | US8656101B2 (zh) |
EP (1) | EP2666091A2 (zh) |
JP (1) | JP2014507717A (zh) |
KR (2) | KR101564569B1 (zh) |
CN (1) | CN103415844B (zh) |
TW (1) | TW201241615A (zh) |
WO (1) | WO2012099937A2 (zh) |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101541040B1 (ko) | 2010-03-12 | 2015-08-03 | 엘에스아이 코포레이션 | 플래시 메모리들을 위한 ldpc 소거 디코딩 |
US9582431B2 (en) | 2010-03-22 | 2017-02-28 | Seagate Technology Llc | Storage address space to NVM address, span, and length mapping/converting |
US9569320B2 (en) | 2010-12-01 | 2017-02-14 | Seagate Technology Llc | Non-volatile memory program failure recovery via redundant arrays |
WO2012075200A2 (en) | 2010-12-01 | 2012-06-07 | Sandforce, Inc. | 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 |
KR101564569B1 (ko) | 2011-01-18 | 2015-11-03 | 엘에스아이 코포레이션 | 상위-레벨 리던던시 정보 계산 |
JP5346978B2 (ja) * | 2011-04-15 | 2013-11-20 | シャープ株式会社 | インターフェイス装置、配線基板、及び情報処理装置 |
JP5346979B2 (ja) * | 2011-04-18 | 2013-11-20 | シャープ株式会社 | インターフェイス装置、配線基板、及び情報処理装置 |
WO2013022915A1 (en) | 2011-08-09 | 2013-02-14 | Lsi Corporation | I/o device and computing host interoperation |
US8799598B2 (en) * | 2012-02-17 | 2014-08-05 | Spansion Llc | Redundancy loading efficiency |
US8856431B2 (en) | 2012-08-02 | 2014-10-07 | Lsi Corporation | Mixed granularity higher-level redundancy for non-volatile memory |
WO2014047182A2 (en) | 2012-09-21 | 2014-03-27 | Nyse Group, Inc. | High performance data streaming |
US9395924B2 (en) | 2013-01-22 | 2016-07-19 | Seagate Technology Llc | Management of and region selection for writes to non-volatile memory |
US20140281802A1 (en) * | 2013-03-15 | 2014-09-18 | SEAKR Engineering, Inc. | Multi-dimensional error detection and correction memory and computing architecture |
EP2830226A1 (en) * | 2013-07-24 | 2015-01-28 | Pierre Arrigo | Encoding and decoding methods and devices |
JP6443794B2 (ja) * | 2013-08-16 | 2018-12-26 | エルエスアイ コーポレーション | ホストとコントローラとの間でパーティション化された変換レイヤ |
JP5978259B2 (ja) * | 2013-08-16 | 2016-08-24 | エルエスアイ コーポレーション | 順次読み出し最適化可変サイズフラッシュトランスレーションレイヤ |
US9535628B2 (en) * | 2013-10-10 | 2017-01-03 | Apple Inc. | Memory system with shared file system |
US20150199293A1 (en) * | 2013-11-20 | 2015-07-16 | Hangzhou Dianzi University | Method and apparatus with interface for redundant array of independent modules |
US9455020B2 (en) * | 2014-06-05 | 2016-09-27 | Micron Technology, Inc. | Apparatuses and methods for performing an exclusive or operation using sensing circuitry |
US10652193B2 (en) * | 2014-06-18 | 2020-05-12 | Western Digital Technologies, Inc. | Managing and accessing data storage systems |
CN104050061B (zh) * | 2014-07-01 | 2016-01-20 | 中国航天科工集团第二研究院七〇六所 | 一种基于PCIe总线多主控板冗余备份系统 |
US9766972B2 (en) * | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US9575853B2 (en) * | 2014-12-12 | 2017-02-21 | Intel Corporation | Accelerated data recovery in a storage system |
US10162700B2 (en) * | 2014-12-23 | 2018-12-25 | International Business Machines Corporation | Workload-adaptive data packing algorithm |
US9678665B2 (en) * | 2015-03-06 | 2017-06-13 | Western Digital Technologies, Inc. | Methods and systems for memory page allocation |
US10275310B2 (en) | 2015-03-09 | 2019-04-30 | Western Digital Technologies, Inc. | Updating exclusive-or parity data |
CN106155812A (zh) | 2015-04-28 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种对虚拟主机的资源管理的方法、装置、系统及电子设备 |
CN106339179B (zh) * | 2015-07-06 | 2020-11-17 | 上海宝存信息科技有限公司 | 主机装置、存取系统、以及存取方法 |
US10191841B2 (en) | 2015-07-06 | 2019-01-29 | Shannon Systems Ltd. | Host device, access system, and access method |
US9734009B2 (en) * | 2015-10-08 | 2017-08-15 | Sandisk Technologies Llc | Data encoding techniques for a device |
US9946596B2 (en) | 2016-01-29 | 2018-04-17 | Toshiba Memory Corporation | Global error recovery system |
US10275376B2 (en) | 2016-03-02 | 2019-04-30 | Western Digital Technologies, Inc. | Efficient cross device redundancy implementation on high performance direct attached non-volatile storage with data reduction |
US10275165B2 (en) | 2016-09-12 | 2019-04-30 | Toshiba Memory Corporation | Memory controller |
US10606767B2 (en) * | 2017-05-19 | 2020-03-31 | Samsung Electronics Co., Ltd. | Ethernet-attached SSD for automotive applications |
US10474527B1 (en) | 2017-06-30 | 2019-11-12 | Seagate Technology Llc | Host-assisted error recovery |
TWI651650B (zh) * | 2018-02-05 | 2019-02-21 | 大陸商深圳大心電子科技有限公司 | 記憶體管理方法及使用所述方法的儲存控制器 |
CN111243654A (zh) * | 2018-11-28 | 2020-06-05 | 北京知存科技有限公司 | 一种闪存芯片及其校准方法和装置 |
US11204819B2 (en) * | 2018-12-21 | 2021-12-21 | Samsung Electronics Co., Ltd. | System and method for offloading application functions to a device |
CN110572864A (zh) * | 2019-08-28 | 2019-12-13 | 惠州Tcl移动通信有限公司 | 驻网频段的存储及调用方法、移动终端、计算机存储介质 |
US11531590B2 (en) | 2019-09-17 | 2022-12-20 | Western Digital Technologies, Inc. | Method and system for host-assisted data recovery assurance for data center storage device architectures |
TWI785702B (zh) * | 2021-05-07 | 2022-12-01 | 旺宏電子股份有限公司 | 用於產生識別碼之儲存裝置及識別碼產生方法 |
US11984166B2 (en) | 2021-05-07 | 2024-05-14 | Macronix International Co., Ltd. | Storage device for generating identity code and identity code generating method |
US20230015697A1 (en) * | 2021-07-13 | 2023-01-19 | Citrix Systems, Inc. | Application programming interface (api) authorization |
CN117274027B (zh) * | 2023-08-22 | 2024-05-24 | 北京辉羲智能科技有限公司 | 一种硬件安全冗余的图像处理芯片 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5651135A (en) * | 1994-03-30 | 1997-07-22 | Kabushiki Kaisha Toshiba | Multi-way set associative cache system in which the number of lines per set differs and loading depends on access frequency |
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 |
US6594728B1 (en) * | 1994-10-14 | 2003-07-15 | Mips Technologies, Inc. | Cache memory with dual-way arrays and multiplexed parallel output |
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 |
CN101536109A (zh) * | 2005-10-13 | 2009-09-16 | 特拉维夫大学拉莫特有限公司 | Mbc闪存中的错误校正的方法 |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US565113A (en) * | 1896-08-04 | graves | ||
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 |
US5418921A (en) * | 1992-05-05 | 1995-05-23 | International Business Machines Corporation | Method and means for fast writing data to LRU cached based DASD arrays under diverse fault tolerant modes |
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 |
JPH10222314A (ja) * | 1997-01-31 | 1998-08-21 | Xing:Kk | 記憶装置アレイシステム |
US6557123B1 (en) | 1999-08-02 | 2003-04-29 | Inostor Corporation | Data redundancy methods and apparatus |
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 | 주식회사 하이닉스반도체 | 반도체 메모리 장치의 리던던시 회로 |
US6961890B2 (en) | 2001-08-16 | 2005-11-01 | Hewlett-Packard Development Company, L.P. | Dynamic variable-length error correction code |
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 |
US7372731B2 (en) | 2003-06-17 | 2008-05-13 | Sandisk Il Ltd. | Flash memories with adaptive reference voltages |
US20090193184A1 (en) | 2003-12-02 | 2009-07-30 | Super Talent Electronics Inc. | Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System |
US7237067B2 (en) | 2004-04-22 | 2007-06-26 | Hewlett-Packard Development Company, L.P. | Managing a multi-way associative cache |
US8122193B2 (en) | 2004-12-21 | 2012-02-21 | Samsung Electronics Co., Ltd. | Storage device and user device including the same |
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
WO2007012920A1 (en) * | 2005-07-27 | 2007-02-01 | Adaptec, Inc. | Method and system for improving the performance of reed-solomon parity operations in redundant array of inexpensive disks |
KR100732628B1 (ko) | 2005-07-28 | 2007-06-27 | 삼성전자주식회사 | 멀티-비트 데이터 및 싱글-비트 데이터를 저장하는 플래시메모리 장치 |
US20070143541A1 (en) | 2005-12-19 | 2007-06-21 | Lsi Logic Corporation | Methods and structure for improved migration of raid logical volumes |
US7809994B2 (en) | 2006-05-17 | 2010-10-05 | Sandisk Corporation | Error correction coding for multiple-sector pages in flash memory devices |
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 |
US8171380B2 (en) | 2006-10-10 | 2012-05-01 | Marvell World Trade Ltd. | Adaptive systems and methods for storing and retrieving data to and from memory cells |
CN101681282A (zh) | 2006-12-06 | 2010-03-24 | 弗森多系统公司(dba弗森-艾奥) | 用于共享的、前端、分布式raid的装置、系统和方法 |
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 |
JP2010518464A (ja) | 2007-02-01 | 2010-05-27 | 株式会社東芝 | 半導体記憶装置 |
US8122323B2 (en) | 2007-03-08 | 2012-02-21 | Intel Corporation | Method, apparatus, and system for dynamic ECC code rate adjustment |
US20080276124A1 (en) | 2007-05-04 | 2008-11-06 | Hetzler Steven R | Incomplete write protection for disk array |
US8429492B2 (en) | 2007-11-30 | 2013-04-23 | Marvell World Trade Ltd. | Error correcting code predication system and method |
US9152496B2 (en) | 2007-12-21 | 2015-10-06 | Cypress Semiconductor Corporation | High performance flash channel interface |
US8443260B2 (en) | 2007-12-27 | 2013-05-14 | Sandisk Il Ltd. | Error correction in copy back memory operations |
CN101999116B (zh) | 2008-03-11 | 2015-05-13 | 艾格瑞系统有限责任公司 | 通过交叉页面扇区、多页面编码以及每一页面编码将数据存储在多级单元闪速存储器装置中的方法和设备 |
WO2009140700A1 (en) * | 2008-05-16 | 2009-11-19 | Fusion Multisystems, Inc. | Apparatus, system, and method for detecting and replacing failed data storage |
US8959280B2 (en) | 2008-06-18 | 2015-02-17 | Super Talent Technology, Corp. | Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear |
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 |
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 | 서울대학교산학협력단 | 신뢰도 또는 저장 용량을 동적으로 조절하는 저장 장치 및 그 방법 |
US8438455B2 (en) * | 2008-12-31 | 2013-05-07 | Intel Corporation | Error correction in a solid state disk |
US8065558B2 (en) | 2009-03-24 | 2011-11-22 | Lsi Corporation | Data volume rebuilder and methods for arranging data volumes for improved RAID reconstruction performance |
CN101882472A (zh) | 2009-05-05 | 2010-11-10 | 建兴电子科技股份有限公司 | 具可变动错误校正码机制的快闪储存装置及其控制方法 |
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 |
JP4843695B2 (ja) * | 2009-06-26 | 2011-12-21 | 株式会社東芝 | ディスクアレイ制御装置及びディスクアレイ装置 |
US8176284B2 (en) | 2009-08-11 | 2012-05-08 | Texas Memory Systems, Inc. | FLASH-based memory system with variable length page stripes including data protection information |
US8402217B2 (en) | 2009-09-15 | 2013-03-19 | Marvell International Ltd. | Implementing RAID in solid state memory |
US8266501B2 (en) | 2009-09-29 | 2012-09-11 | Micron Technology, Inc. | Stripe based memory operation |
KR101541040B1 (ko) | 2010-03-12 | 2015-08-03 | 엘에스아이 코포레이션 | 플래시 메모리들을 위한 ldpc 소거 디코딩 |
US9189385B2 (en) | 2010-03-22 | 2015-11-17 | Seagate Technology Llc | Scalable data structures for control and management of non-volatile storage |
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 |
WO2012075200A2 (en) | 2010-12-01 | 2012-06-07 | Sandforce, Inc. | Dynamic higher-level redundancy mode management with independent silicon elements |
US9569320B2 (en) | 2010-12-01 | 2017-02-14 | Seagate Technology Llc | Non-volatile memory program failure recovery via redundant arrays |
US8719663B2 (en) | 2010-12-12 | 2014-05-06 | Lsi Corporation | Cross-decoding for non-volatile storage |
KR101564569B1 (ko) | 2011-01-18 | 2015-11-03 | 엘에스아이 코포레이션 | 상위-레벨 리던던시 정보 계산 |
US8595415B2 (en) | 2011-02-02 | 2013-11-26 | Micron Technology, Inc. | At least semi-autonomous modules in a memory system and methods |
US8856431B2 (en) | 2012-08-02 | 2014-10-07 | Lsi Corporation | Mixed granularity higher-level redundancy for non-volatile memory |
KR20140086223A (ko) | 2012-12-28 | 2014-07-08 | 주식회사 옵토스타 | 디스크 어레이의 패리티 재동기화 장치 및 방법 |
-
2012
- 2012-01-18 KR KR1020147019498A patent/KR101564569B1/ko not_active IP Right Cessation
- 2012-01-18 CN CN201280012139.7A patent/CN103415844B/zh not_active Expired - Fee Related
- 2012-01-18 EP EP12736920.5A patent/EP2666091A2/en not_active Withdrawn
- 2012-01-18 WO PCT/US2012/021682 patent/WO2012099937A2/en active Application Filing
- 2012-01-18 US US13/979,805 patent/US8656101B2/en active Active
- 2012-01-18 JP JP2013550554A patent/JP2014507717A/ja active Pending
- 2012-01-18 TW TW101102013A patent/TW201241615A/zh unknown
- 2012-01-18 KR KR1020137021636A patent/KR101454807B1/ko not_active IP Right Cessation
-
2014
- 2014-02-14 US US14/181,252 patent/US9183140B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5651135A (en) * | 1994-03-30 | 1997-07-22 | Kabushiki Kaisha Toshiba | Multi-way set associative cache system in which the number of lines per set differs and loading depends on access frequency |
US6594728B1 (en) * | 1994-10-14 | 2003-07-15 | Mips Technologies, Inc. | Cache memory with dual-way arrays and multiplexed parallel output |
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 |
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 |
CN101536109A (zh) * | 2005-10-13 | 2009-09-16 | 特拉维夫大学拉莫特有限公司 | Mbc闪存中的错误校正的方法 |
US7681109B2 (en) * | 2005-10-13 | 2010-03-16 | Ramot At Tel Aviv University Ltd. | Method of error correction in MBC flash memory |
Also Published As
Publication number | Publication date |
---|---|
US20140237166A1 (en) | 2014-08-21 |
WO2012099937A2 (en) | 2012-07-26 |
KR20140094661A (ko) | 2014-07-30 |
US9183140B2 (en) | 2015-11-10 |
US8656101B2 (en) | 2014-02-18 |
KR20130118370A (ko) | 2013-10-29 |
CN103415844A (zh) | 2013-11-27 |
US20130290618A1 (en) | 2013-10-31 |
EP2666091A2 (en) | 2013-11-27 |
WO2012099937A3 (en) | 2012-09-13 |
KR101564569B1 (ko) | 2015-11-03 |
TW201241615A (en) | 2012-10-16 |
JP2014507717A (ja) | 2014-03-27 |
KR101454807B1 (ko) | 2014-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103415844B (zh) | 用于高级冗余信息计算的系统和方法 | |
CN103902403B (zh) | 经由冗余阵列的非易失性存储器编程故障恢复 | |
US11379301B2 (en) | Fractional redundant array of silicon independent elements | |
CN103348330B (zh) | 采用独立硅元件的动态较高级冗余模式管理 | |
CN103942114B (zh) | Nvm地址、跨度及长度映射/转换的存储地址空间 | |
US9323612B2 (en) | Mixed granularity higher-level redundancy for non-volatile memory | |
CN103942010A (zh) | 用于写入非易失性存储器的管理及区域选择 | |
CN103858116A (zh) | I/o设备及计算主机互操作 | |
TWI531902B (zh) | 矽獨立元件之部分冗餘陣列 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160223 Address after: California, USA Applicant after: Seagate Technology LLC Address before: California, USA Applicant before: LSI Corp. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160420 |
|
CF01 | Termination of patent right due to non-payment of annual fee |