一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于对抗编程故障的独立磁盘冗余阵列条带化的系统和设备的制作方法

2022-02-20 01:21:32 来源:中国专利 TAG:


1.本公开内容涉及数据存储系统和装置。


背景技术:

2.随着互联网和各种关键任务应用的快速增长,保持数据完整性和确保对关键信息的连续访问的重要性无比重要。为了满足保存和访问可靠数据的需要,独立磁盘冗余阵列(raid)算法已经被用于改进nand存储器装置中的性能、可靠性、功耗和可扩展性。raid算法采用条带化、镜像和/或奇偶校验的技术来从多个存储单元创建大的可靠数据存储。
3.在raid的不同级别中,raid的级别5,又名raid 5通常用于保持nand存储器装置中的数据完整性。raid 5采用具有分布式奇偶校验(例如,冗余信息)的块级条带化(block-level striping)。奇偶校验信息分布在驱动器(drive)之间。在单个驱动器发生故障时,可以从分布式奇偶校验和其余驱动器取回故障驱动器中的数据,使得不会丢失存储器数据。


技术实现要素:

4.在一个示例中,一种系统包括用于存储存储器数据的存储器装置。该存储器装置包括存储器单元阵列和排列成多行且耦接到存储器单元阵列的多条字线。该系统还包括存储器控制器,其具有处理器和存储器,可操作地耦接到存储器单元阵列。该系统还包括主机,其具有另一处理器和另一存储器,可操作地耦接到存储器控制器。主机的另一处理器被配置为对存储器数据执行第一raid编码操作以形成第一奇偶校验数据。存储器控制器的处理器被配置为接收第一奇偶校验数据和存储器数据,并且对第一奇偶校验数据和存储器数据执行第二raid编码操作以形成第二奇偶校验数据。
5.在另一示例中,存储器控制器包括处理器和存储器,可操作地耦接到用于存储存储器数据的多个存储器单元;存储器单元耦接到排列成多行的多条字线。处理器被配置为接收存储器数据和存储器数据的第一奇偶校验数据;对存储器数据和第一奇偶校验数据执行raid编码操作以形成第二奇偶校验数据,并且执行写入操作以将存储器数据、第一奇偶校验数据和第二奇偶校验数据存储到存储器单元中。
6.在另一示例中,主机具有处理器和存储器,且可操作地耦接到用于存储存储器数据的多个存储器单元。存储器单元耦接到排列成多行的多条字线。处理器被配置为接收存储器数据,对存储器数据执行raid编码操作以形成奇偶校验数据,以及将存储器数据和奇偶校验数据传送到可操作地耦接到多个存储器单元的存储器控制器。
7.在又一示例中,公开了一种用于使用raid操作存储设备的方法。设备包括:存储有存储器数据的多个存储器单元;存储器控制器,可操作地耦接到存储器单元;以及主机,可操作地耦接到存储器控制器。该方法包括:由主机对存储器数据执行第一raid编码操作以形成第一奇偶校验数据;将第一奇偶校验数据和所接收的存储器数据传送到存储器控制器;以及由存储器控制器对第一奇偶校验数据和所接收的存储器数据执行第二raid编码操作以形成第二奇偶校验数据。
附图说明
8.并入本文并形成说明书的一部分的附图示出了本公开内容的各实施方式,并且与说明书一起进一步用于解释本公开内容的原理并且使得相关领域技术人员能够构成和使用本公开内容。
9.图1a示出了根据本公开内容一些方面的包括主机、闪存控制器、随机存取存储器(ram)和存储器阵列装置的系统的示意图。
10.图1b示出了根据本公开内容一些方面的闪存控制器的示意图。
11.图1c示出了根据本公开内容一些方面的主机的示意图。
12.图2是根据本公开内容一些方面的执行多维raid操作的系统的示意图。
13.图3示出了根据本公开内容一些方面的三维视图中的存储器数据和奇偶校验数据布置。
14.图4示出了根据本公开内容一些方面的多维raid编码操作的处理流程。
15.图5示出了根据本公开内容一些方面的多维raid解码操作的处理流程。
16.图5示出了根据本公开内容一些方面的三维视图中的存储器数据和奇偶校验数据布置。
17.图6a示出了根据本公开内容一些方面的用于对图1a中的存储器阵列装置执行多维raid编码操作的方法的流程图。
18.图6b和图6c示出了根据本公开内容一些方面的用于对图1a中的存储器阵列装置执行多维raid解码操作的方法的流程图。
19.将参考附图描述本公开内容的各方面。
具体实施方式
20.尽管讨论了具体的配置和布置,但应该理解,这样做仅仅是为了说明的目的。因此,在不脱离本公开内容的范围的情况下,可以使用其他配置和布置。此外,本公开内容还可以用于各种其他应用。如本公开内容中描述的功能和结构特征可以彼此并以未在附图中具体示出的方式组合、调整和修改,使得这些组合、调整和修改在本公开内容的范围内。
21.通常,可以至少部分地从上下文中的用法理解术语。例如,如本文所用的术语“一个或多个”至少部分取决于上下文,可用于以单数意义描述任何特征、结构或特性,或可用于以复数意义描述特征、结构或特征的组合。类似地,至少部分取决于上下文,诸如“一”、“一个”或“该”的术语同样可以被理解为表达单数用法或表达复数用法。另外,术语“基于”可以被理解为不一定旨在传达排他性的因素集合,而是可以允许存在不一定明确描述的其他因素,这同样至少部分地取决于上下文。
22.如本文所使用的,术语“存储器串”是指在横向定向衬底上串联连接的垂直定向的存储器单元晶体管串,使得存储器单元晶体管串在相对于衬底的垂直方向上延伸。如本文所用,术语“垂直/垂直地”是指垂直于衬底的横向表面。
23.为了增加存储容量,nand闪存通常包括多个管芯,每个管芯具有多个面。每一面横向地划分成一个或多个存储器区块,所述存储器区块进一步划分成多个串。每一个所述串包括横向延伸的多个栅极导电层。一个存储器区块包括以多个层级垂直堆叠的多个栅极导电层,且每个栅极导电层耦接到横向分布在存储器区块中的串中的多个页中的存储器单
元。随着栅极导电层的数量继续在垂直方向上增加以增加nand闪存的存储容量,相邻栅极导电层之间的空间变得更小。相邻栅极导电层之间的干扰变得显著。为了改善存储器单元的完整性和可读性,raid 5已经广泛用于nand闪存中。通常,raid 5采用存储器区块中的条带化来将存储器区块中的存储器数据划分成多个数据部分,在条带中的数据部分之间执行异或(xor)运算以生成相应的奇偶校验数据,并且将奇偶校验数据存储在存储器单元中。为了使相邻栅极导电层之间的干扰减到最小,耦接到两个相邻栅极导电层的数据部分通常处于不同的条带中。一个数据部分可以表示一页中的存储器数据。一个条带通常包括位于两个维度中的数据部分,例如,横向位于跨不同管芯和不同面的不同存储器区块中,且垂直位于相同存储器区块中的不同层级中。在横向方向上,条带可以包括在不同面中的相同位置处的数据部分。在垂直方向上,条带可以包括在不同层级中的相同位置处的数据部分。最后的数据部分通常包括条带的奇偶校验数据。在条带的一个数据部分中编程失败的情况下,可以例如通过使用条带的奇偶校验数据和条带中的其余数据部分执行xor运算来恢复受损数据部分(compromised data portion)。例如,对于具有128个数据部分的条带,127个数据部分用于存储存储器数据,并且一个数据部分用于存储条带的奇偶校验数据,因此使用这种条带化配置的raid 5的纠错能力可被描述为(127 1)。即,一个奇偶校验数据部分保护127个存储器数据部分。
24.然而,raid 5,例如一维raid操作,仅可以用于恢复条带中的一个受损数据部分。奇偶校验数据的条带化和计算通常由闪存控制器执行,该闪存控制器具有有限的计算资源,例如高速缓存能力和计算能力。在导致条带中两个或更多受损数据部分的场景的情况下,具有如上所述的条带化配置的raid 5不能恢复多于一个的受损数据部分。例如,编程错误、功率损失和/或源极选择栅极(ssg)泄漏故障可能导致条带中的多个数据部分受损。当前条带化配置和一维raid操作易受一个条带(例如,沿一个维度)中具有多于一个的受损数据部分的影响。结果,这些受损数据部分中的存储器数据可能丢失。需要改进存储器装置的条带化配置和纠错能力。
25.为了解决一个或多个上述问题,本公开内容介绍了一种解决方案,其中raid技术(例如raid 5)可以用于横向和纵向地恢复多于一个的受损数据部分。在这些实施方式中,所公开的设备中的存储器数据被布置在多个条带化配置中以促进多维raid操作,其允许在每个维度中恢复至少一个受损数据部分。在一些实施方式中,多维raid操作包括x维raid操作、y维raid操作和z维raid操作,所述x维raid操作、y维raid操作和z维raid操作各自包括相应的编码操作(例如,对于写入操作)和解码操作(例如,对于读取操作)。在一些实施方式中,raid 5被用于所有三个维度。在一些实施方式中,三个raid操作的条带延伸的方向在三维(3d)空间中彼此正交。三个raid操作可以单独或组合使用来恢复一个或多个受损数据部分。在一些实施方式中,可以使用多维raid操作恢复一个维度中的多于三个的受损数据部分。可以提高设备的纠错能力。
26.为了促进多维raid操作,存储器数据沿x维度、y维度和z维度以条带布置。为三个维度的每个条带计算奇偶校验数据。与现有技术不同,在本公开内容中,可操作地耦接到闪存控制器的主机被配置为执行至少一个维度的raid操作。在示例中,主机被配置为执行用于y维raid操作和z维raid操作的编码和解码操作。主机具有足够的计算能力和高速缓存能力来计算和高速缓存在编码和解码操作中使用的奇偶校验数据和存储器数据。同时,具有
有限计算资源和高速缓存能力的闪存控制器只需要计算x维raid操作即可。在由于多维raid操作增加计算负荷的同时,负荷的分配可以利用主机中丰富的计算资源,提高计算效率,而不增加闪存控制器的负担。在一些实施方式中,主机的raid操作可以使用诸如算法和电路之类的软件手段来实现,而闪存控制器的raid操作可以使用诸如逻辑电路之类的硬件手段来实现。可以提高设备的性能。
27.图1a示出了根据本公开内容一些方面的设备100的示意图,其中操作所提供的方法。如图1a所示,设备100包括主机104、闪存控制器106、随机存取存储器(ram)110和存储器阵列装置108。在一些实施方式中,主机104、闪存控制器106、存储器阵列装置108和ram 110中的每一个是具有其自己的封装的分立芯片,并且安装在印刷电路板(pcb)102上。在一些实施方式中,主机104与闪存控制器106、存储器阵列装置108或ram 110不在同一pcb 102上。在一些实施方式中,ram 110可以与闪存控制器106或存储器阵列装置108在或不在同一pcb 102上。主机104和/或ram 110的具体封装和位置可以改变,并且不应限制本公开内容的范围。主机104是用于执行存储器阵列装置108的数据处理的专用处理器。例如,主机104可以包括中央处理单元(central processing unit,cpu)和/或片上系统(system-on-chip,soc),例如应用处理器。数据在主机104和闪存控制器106之间以及在主机104和ram 110之间各自通过相应的互连链路(interlink),例如处理器总线,进行传输。主机104因此可以控制ram 110和闪存控制器106的操作。存储器阵列装置108可以包括在raid操作中配置的存储器单元阵列。存储器阵列装置108是3d nand存储器或2d nand存储器,其通过另一互连链路与闪存控制器106传输数据。ram 110可以包括任何合适的静态随机存取存储器(static random-access memory,sram)和/或动态随机存取存储器(dynamic random-access memory,dram)。
28.闪存控制器106可以管理存储在闪存(nand闪存或nor闪存)中的数据,并与主机104通信。在一些实施方式中,闪存控制器106被设计用于在低占空比环境中操作,所述低占空比环境例如安全数字(secure digital,sd)卡、紧凑型闪存(compact flash,cf)卡、usb闪存驱动器、或用于在诸如个人计算机、数码相机、移动电话等电子设备中使用的其他介质。在一些实施方式中,闪存控制器106被设计用于在高占空比环境中操作,所述高占空比环境例如用作移动设备(诸如智能电话、平板电脑、膝上型计算机等)的数据存储设备的固态驱动器(solid-state drive,ssd)或嵌入式多媒体卡(embedded multi-media-card,emmc)以及企业存储阵列。闪存控制器106可以被配置为控制存储器阵列装置108的操作,诸如读取、写入、擦除和编程操作。闪存控制器106还可以被配置为管理关于存储器阵列装置108中存储的或要存储的数据的各种功能,包括但不限于坏块管理、垃圾收集、逻辑到物理地址转换、损耗均衡等。在一些实施方式中,闪存控制器106还被配置为针对从存储器阵列装置108读取或向存储器阵列装置108写入的数据处理纠错码(error correction code,ecc)。也可以由闪存控制器106执行任何其他合适的功能,例如,对闪存进行格式化。
29.图1b示出了根据一些实施方式的闪存控制器106的示例性实施方式。闪存控制器106可以通过生成控制信号来控制存储器阵列装置108的操作,以控制存储器阵列装置108中的存储器数据的条带化、计算和存储。根据本公开内容,闪存控制器106可以从主机104接收用于存储器阵列装置108的操作的信号。在一些实施方式中,闪存控制器106可以包括处理器105、存储器109和存储设备107。在一些实施方式中,闪存控制器106可以在单个装置中
具有不同的模块,所述单个装置诸如集成电路(ic)芯片(例如,实现为专用集成电路(asic)或现场可编程门阵列(fpga)),或者具有专用功能的单独装置。在一些实施方式中,闪存控制器106的部件可以在集成设备中,或者分布在不同位置但是彼此通过网络进行通信。
30.处理器105可以包括任何适当类型的通用或专用微处理器、数字信号处理器或微控制器。处理器105可以被配置为专用于对信号(例如,来自主机104的信号)进行分析和/或对扫描方案进行控制的独立处理器模块。可替换地,处理器105可以被配置为用于执行与信号分析/扫描方案控制无关的其他功能的共享处理器模块。尽管在图1b中未示出,但是处理器105可以包括可以使用软件、硬件、中间件、固件或其任何组合来实现的多个功能单元或模块。多个功能单元可以基于来自主机104的信号或任何预先存储的控制数据来对本公开内容的奇偶校验数据的存储执行读取、写入、擦除、条带化、计算、决策制定和控制。在一些实施方式中,处理器105用作多维raid操作中的raid引擎。
31.存储设备107和存储器109可以包括任何适当类型的大容量存储设备,该大容量存储设备被提供用于存储处理器105可能需要操作的任何类型的信息。存储器109和/或存储设备107可以是易失性或非易失性、磁性、基于半导体、基于磁带、光学、可移动(removable)、不可移动或其他类型的存储装置或有形(即,非暂时性)计算机可读介质,包括但不限于rom、闪存、动态ram、静态ram、硬盘、ssd、光盘等。存储设备107和/或存储器109可以被配置为存储一个或多个计算机程序,所述计算机程序可以由处理器105执行以执行本文公开的功能。例如,存储器109和/或存储设备107可以被配置为存储可以由处理器105执行以形成raid条带、计算奇偶校验数据、以及控制奇偶校验数据的存储的一个或多个程序。在一些实施方式中,存储设备107和存储器109还可以被配置为存储/高速缓存由处理器105接收和/或使用的信息和数据。例如,存储设备107和存储器109可以存储/高速缓存从主机104接收的数据和/或在raid操作期间生成的数据(例如,临时奇偶校验数据)。
32.返回参考图1a,闪存控制器106可以包括主机接口(i/f),其例如通过处理器总线操作地耦接到主机104,并且被配置为从主机104接收指令。主机i/f可以包括串行连接scsi(serial attached scsi,sas)、并行scsi、pci express(pcie)、nvm express(nvme)、高级主机控制器接口(ahci),仅列举几个例子。闪存控制器106还可以包括管理模块和nand存储器接口(i/f)。在一些实施方式中,管理模块可操作地耦接到主机i/f和nand存储器i/f,并且被配置为基于从主机104接收的指令生成一个或多个控制信号以控制存储器阵列装置108的操作(例如,读取、写入、擦除和编程操作),并且将控制信号发送到nand存储器i/f。例如,管理模块确定存储器阵列装置108中的条带,并且执行计算以确定奇偶校验数据并恢复条带中的存储器数据。管理模块可以是任何合适的控制和状态机。在一些实施方式中,nand存储器i/f被配置为向存储器阵列装置108传送控制信号,并且从存储器阵列装置108接收状态信号。状态信号可以指示由存储器阵列装置108执行的每个操作的状态(例如,失败、成功、延迟等),其可以作为反馈被发送回管理模块。nand存储器i/f可以包括单数据速率(single data rate,sdr)nand闪存接口、开放nand闪存接口(onfi)、双数据速率切换(ddr)接口,仅列举几个例子。
33.存储器阵列装置108是具有3d nand存储器单元阵列形式的nand存储器单元阵列的nand闪存。在一些实施方式中,nand存储器单元阵列是由字线与存储器串的交叉形成的3d nand存储器单元阵列,所述字线与存储器串中的每一个在衬底上方穿过存储器堆栈垂
直延伸。取决于3dnand技术(例如,存储器堆栈中的层/级的数量),存储器串通常包括32到256个nand存储器单元,其中的每一个包括浮栅晶体管或电荷俘获晶体管。
34.可以将nand存储器单元组织成页,接着将页组织成存储器区块,其中每个nand存储器单元电连接到被称为位线(bit line,bl)的单独的线。每个存储器区块被分成一对串。nand存储器单元中具有相同高度的所有单元可由字线(word line,wl)(即,导电栅极层)通过控制栅极电连接。每条字线可以与多个页中的存储器单元的控制栅极电耦接。在每一层级处,一个串中的存储器单元存储有页数据,例如,下页(lower page,lp)数据部分、中间页(middle page,mp)数据部分和上页(upper page,up)数据部分。在一些实施方式中,面包含通过同一位线电连接的多个存储器区块/串。在一些实施方式中,多个栅极导电层在垂直方向上布置在存储器区块中。每个栅极导电层横向延伸。由单个栅极导电层形成的存储器单元和存储器串形成页。在一个存储器区块中,每个栅极导电层可耦接到多个页的存储器单元。即,一个存储器区块可包括单个层级上的多个页。在一些实施方式中,存储器阵列装置108包括多个管芯,每个管芯具有至少一个面。
35.主机104可以基于从闪存控制器106传送的数据和/或信号来协调设备100中的不同模块/部分中的操作。主机104可以基于从闪存控制器106传送的数据和/或信号来控制ram 110的操作。例如,主机104可以生成、高速缓存和向闪存控制器106传送奇偶校验数据,并且接收、高速缓存奇偶校验数据以供计算和/或参考。在一些实施方式中,ram 110是主机104的一部分,并且可以由主机104直接控制以存储数据,例如存储器数据和/或奇偶校验数据。
36.图1c示出了根据本公开内容一些方面的主机104的示例性结构。主机104可以包括一个或多个处理器(也称为中央处理单元,或cpu),例如处理器1404。根据一些实施方式,处理器1404连接到通信基础设施或总线1406。一个或多个处理器1404可以各自是图形处理单元(gpu)。在一些实施方式中,gpu是处理器,该处理器是被设计为处理数学密集型应用程序的专用电子电路。gpu可具有并行结构,该并行结构对于并行处理大数据块(例如,对于计算机图形应用程序、图像、视频等共通的(common to)数学密集型数据)是高效的。在一些实施方式中,处理器1404在多维raid操作中用作另一raid引擎。
37.主机104还可以包括一个或多个用户输入/输出设备1403,例如监视器、键盘、指示设备等,其通过一个或多个用户输入/输出接口1402与通信基础设施或总线1406通信。主机104还可以包括主存储器或主要存储器1408,例如随机存取存储器(ram)。主存储器1408可以包括一级或多级高速缓存。根据一些实施方式,主存储器1408中存储了控制逻辑(即,计算机软件)和/或数据。
38.主机104还可以包括一个或多个辅助存储装置或存储器1410。辅助存储器1410可以包括例如硬盘驱动器1412和/或可移动存储设备或驱动器1414。可移动存储驱动器1414可以是软盘驱动器、磁带驱动器、光盘驱动器、光存储装置、磁带备份装置和/或任何其他存储装置/驱动器。可移动存储驱动器1414可以与可移动存储单元1418交互。根据一些实施方式,可移动存储单元1418包括计算机可用或可读存储装置,其上存储有计算机软件(控制逻辑)和/或数据。可移动存储单元1418可以是软盘、磁带、光盘、dvd、光存储盘和/或任何其他计算机数据存储装置。可移动存储驱动器1414可以以公知的方式从可移动存储单元1418读取和/或向可移动存储单元1418写入。
39.根据一些实施方式,辅助存储器1410可以包括用于允许主机104访问计算机程序和/或其他指令和/或数据的其他装置、手段或其他方法。这样的装置、手段或其他方法可以包括例如可移动存储单元1422和接口1420。可移动存储单元1422和接口1420的示例可以包括程序盒(cartridge)和盒接口(例如在视频游戏设备中见到的)、可移动存储器芯片(例如eprom或prom)和相关联的插槽、记忆棒和usb端口、存储卡和相关联的存储卡槽、和/或任何其他可移动存储单元和相关联的接口。在一些实施方式中,主存储器1408和/或辅助存储器1410用于在多维raid编码/解码操作期间存储存储器数据和/或奇偶校验数据。
40.主机104还可以包括通信或网络接口1424。根据一些实施方式,通信接口1424使得主机104能够与远程设备、远程网络、远程实体等(由附图标记1428单独地和共同地引用)的任何组合进行通信和交互。例如,通信接口1424可以允许主机104通过通信路径1426与远程设备1428通信,该通信路径1426可以是有线的和/或无线的,并且可以包括局域网(local area network,lan)、广域网(wide area network,wan)、互联网等的任何组合。可以经由通信路径1426向主机104和从主机104传送控制逻辑和/或数据。
41.在一些实施方式中,包括其上存储有控制逻辑(软件)的有形计算机可用或可读介质的有形设备或制品在本文中也被称为计算机程序产品或程序存储设备。这包括但不限于主机104、主存储器1408、辅助存储器1410、可移动存储单元1418和1422、以及体现前述各项的任何组合的有形制品。当由一个或多个数据处理设备(例如主机104)执行时,这种控制逻辑使得这种数据处理设备如本文所述的那样操作。
42.在另一示例(未示出)中,闪存控制器106和存储器阵列装置108的芯片可以包括在相同的封装中,诸如通用闪存存储(universal flash storage,ufs)封装或emmc封装,并且通过引线键合电连接。闪存控制器106然后可以通过互连链路(例如处理器总线)与主机104传送数据,该互连链路由软件驱动器(例如ufs驱动器软件或mmc驱动器软件)驱动。
43.在一些实施方式中,设备100还包括外围电路(未示出,也称为控制和感测电路),所述外围电路包括用于促进存储器阵列装置108的操作的任何合适的数字、模拟和/或混合信号电路。例如,外围电路可包括页缓冲器、解码器(例如,行解码器和列解码器)、感测放大器、驱动器(例如,字线驱动器)、电荷泵、电流或电压参考、或电路的任何有源或无源部件(例如,晶体管、二极管、电阻器或电容器)中的一个或多个。
44.图2示出了根据本公开内容一些方面的具有主机(“host”)和ufs/ssd的系统200。在ufs/ssd中,闪存控制器(“存储器控制器(memory controller)”)和存储器阵列装置(“nand”)在同一芯片中。系统200可以是设备100的示例,并且被配置为执行多维raid操作。返回参考图1a,在一些实施方式中,主机是主机104的示例,闪存控制器是闪存控制器106的示例,且存储器阵列装置是存储器阵列装置108的示例。为了便于图示,图2还包括多维raid操作期间的特定数据流。为了便于图示,在一个或多个编码操作中采用的数据流以短划线示出,而在一个或多个解码操作中采用的数据流以虚线示出。在一些实施方式中,多维raid操作包括存储器数据的三维(x维、y维和z维)中的每一个上的raid 5。
45.如图2所示,在写入操作中,存储器数据(“数据输入(data input)”)可以由系统200接收,并且可以被高速缓存/存储在存储器(例如主机的主存储器和/或辅助存储器(“ram”))中以供处理。存储器数据可包括要存储在nand中的任何数据,例如用户数据。存储器数据在被存储在nand中之前可经历多维raid编码操作,形成奇偶校验数据。主机的处理
器(“cpu”)的部分或全部可以用作执行多维raid编码操作的部分的第一raid引擎(“第1raid引擎(1
st raid engine)”)。在各种实施方式中,主机执行多维raid操作的至少一个维度的计算。如图2所示,主机可以执行y维和z维raid操作,闪存控制器可以执行x维raid操作。在一些其他实施方式(未示出)中,主机可执行y维操作或z维raid操作中的一个操作,且闪存控制器可执行其他二个维度raid操作。在一些进一步的实施方式(未示出)中,主机可以执行整个多维raid操作,并且闪存控制器不执行任何raid操作。
46.表ⅰ47.48.作为示例,表i示出要存储在存储器阵列装置中的存储器数据的部分或全部。存储器数据在被存储在存储器阵列装置中之前可以经历多维raid编码操作。在该示例中,假设存储器数据将被存储在具有横向排列的两个面(“pl0”和“pl1”)的管芯(“die0”)中。每个面包括六个串(“str0”、“str1”、“str2”、“str3”、“str4”、“str5”),且每个串包括用于存储上页(“up”)数据部分、中间页(“mp”)数据部分和下页(“lp”)数据部分的存储器单元。存储器单元耦接到垂直排列的多条字线(“wl”)。为了便于描述,字线标有字线编号(“wl#”),并且具有不同字线编号的每条字线垂直地位于相应的高度。为了便于图示,对数据部分(例如,up数据部分、mp数据部分和lp数据部分)进行编号。存储在耦接到不同面中的相同页的相同字线的存储器单元中的数据部分具有相同数据编号。例如,如表i中所示,存储在第0串(“str0”)中的存储器单元中且耦接到第0字线(“wl0”)的lp数据部分具有数据编号“0”;存储在第0串(“str0”)中的存储器单元中且耦接到第0字线(“wl0”)的mp数据部分具有数据编号“1”;存储在第0串(“str0”)中的存储器单元中且耦接到第0字线(“wl0”)的up数据部分具有数据编号“2”;等等。在各种实施方式中,存储器阵列装置可具有多于一个的管芯(例如,四个管芯),且每个管芯可具有多于一个的面(例如,四个面)。垂直排列的字线的数量可从32、64、96、128变化到256。应当注意,所公开的多维raid操作可以应用于任何合适的存储器阵列装置,并且不应当受到存储器阵列装置的管芯、面、串和字线的确切数量的限制。在一些实施方式中,在每个面(例如,“pl0”或“pl1”)中,每个层级的字线(例如,“wl0”、“wl1”或“wl2”)耦接到18个数据部分(例如,0-17、18-19、36-53或54-71)。
49.第一raid引擎可将存储器数据划分为多个数据部分。在一些实施方式中,第一raid引擎将存储器数据划分为k个数据部分,k是与z维raid操作中的奇偶校验数据部分相对应的数据部分的数量(即,沿z维的条带中的数据部分的数量)。换句话说,k等于在z维raid操作中由一个奇偶校验数据部分保护的数据部分的数量。在一些实施方式中,k等于127。在各种实施方式中,k可以等于其他合适的整数。表ii示出了第一数据部分中的数据部分,表iii示出了第k(或第127)数据部分中的数据部分。为了简化图示,现在示出第二到第126数据部分。为了便于图示,数据部分被示为以二维排列。
50.表ii
51.d0-0-0dl-0-0d2-0-0d3-0-0d4-0-0
···
di26-0-0d0-1-0dl-1-0d2-1-0d3-1-0d4-1-0
···
d126-1-0d0-2-0dl-2-0d2-2-0d3-2-0d4-2-0
···
di26-2-0d0-3-0dl-3-0d2-3-0d3-3-0d4-3-0
···
d126-3-0d0-4-0dl-4-0d2-4-0d3-4-0d4-4-0
···
di26-4-0
·····················
d0-35-0dl-35-0d2-35-0d3-35-0d4-35-0
···
d126-35-0
52.表iii
53.d0-0-126d1-0-126d2-0-126d3-0-126d4-0-126
···
d126-0-126d0-1-126dl-1-126d2-1-126d3-1-126d4-1-126
···
d126-1-126d0-2-126dl-2-126d2-2-126d3-2-126d4-2-126
···
d126-2-126d0-3-126dl-3-126d2-3-126d3-3-126d4-3-126
···
d126-3-126d0-4-126d1-4-126d2-4-126d3-4-126d4-4-126
···
d126-4-126
·····················
d0-35-126dl-35-126d2-35-126d3-35-126d4-35-126
···
d126-35-126
54.k个数据部分中的每一个可以被示为数据部分的二维阵列。k个阵列中的每一个可具有i行和j列,i等于对应于耦接到两条相邻字线的存储器单元的(例如,要存储在其中的)数据部分的总数。如表i、表ii和表iii所示,在一个示例中,i等于36。在一些实施方式中,j等于存储器数据中的数据部分的总数除以k,并再除以i。在一个示例中,j可以等于127。
55.例如,如表ii和表iii中所示,在二维阵列中沿x维度的每行中布置的数据部分可等于要存储在(例如,对应于)相应管芯的相同位置但在阵列存储器装置中的不同面中的存储器单元中的数据部分。即,在每个阵列中排列成行的数据部分包括要存储在(例如,对应于)耦接到每隔一条(奇数或偶数)字线、在同一串的页中以及在所有面中的存储器单元中的数据部分。例如,面“pl0”中的数据部分0等于(如示为或对应于)d0-0-0,面“pl1”中的数据部分0等于d1-0-0,面“pl0”中的数据部分36等于d2-0-0,面“pl1”中的数据部分36等于d3-0-0,等等;面“pl0”中的数据部分1等于(或示为)d0-1-0,面“pl1”中的数据部分1等于d1-1-0,面“pl0”中的数据部分37等于d2-1-0,面“pl1"中的数据部分37等于d3-1-0,等等;面“pl0”中的数据部分2等于(或示为)d0-2-0,面“pl1”中的数据部分2等于d1-2-0,面“pl0”中的数据部分38等于d2-2-0,面“pl1”中的数据部分38等于d3-2-0,等等。
56.如表ii和表iii中所示,每列中的i个数据部分可存储在(或对应于)耦接到两条相邻(例如,奇数和偶数)字线的存储器单元中。例如,列1中的数据部分(例如,d0-0-0、d0-1-0、d0-2-0、d0-3-0、...、d0-35-0)可分别对应于面“pl0”中的数据部分0-35;列2中的数据部分(例如,d1-0-0、d1-1-0、d1-2-0、d1-3-0、...、d1-35-0)可分别对应于面“pl1”中的数据部分0-35;列3中的数据部分(例如,d2-0-0、d2-1-0、d2-2-0、d2-3-0、...、d2-35-0)可分别对应于面“pl0”中的数据部分36-71;列4中的数据部分(例如,d3-0-0、d3-1-0、d3-2-0、d3-3-0、...、d3-35-0)可分别对应于面“pl1”中的数据部分36-71;等等。
57.图3示出了根据本公开内容一些方面的用于raid计算的三维空间中的数据部分和奇偶校验数据的布置。如图3所示,x维度、y维度和z维度彼此正交。对于k个阵列中的每一个,x维度可等同于行方向,y维度可等同于列方向,且z维度可等同于与x-y平面正交的方向。k个阵列可以沿z维排列,其中,k个阵列中的每一个都在x-y平面中。k个阵列中的每个数据部分可以在图3中被示为“数据”。在y维raid操作中,每个阵列中沿y维/列方向的数据部分可以形成条带,并且可以为每个条带生成相应的奇偶校验数据部分;在z维raid操作中,所有阵列中沿z维的数据部分(例如,具有相同的行号和相同的列号)可以形成条带,并且可以为每个条带生成相应的奇偶校验数据部分;并且在x维raid操作中,每个阵列中沿x维/行方向的数据部分可以形成条带,并且可以为每个条带生成相应的奇偶校验数据部分。x维奇偶校验数据部分可统称为x维奇偶校验数据(“x-奇偶校验”),y维奇偶校验数据部分可统称为y维奇偶校验数据(“y-奇偶校验”),z维奇偶校验数据部分可统称为z维奇偶校验数据(“z-奇偶校验”)。应当注意,数据部分的布置仅仅是为了示出多维raid操作的存储器数据的条带化,而不是指示存储器数据在主机中存储/高速缓存的方式。下表中所示的数据部分具有dx-y-z的格式,以显示x维、y维和z维中的条带。
58.返回参考图2,第一raid引擎可以包括z维编码单元(“z-编码”)和/或y维编码单元(“y-编码”),用于分别执行z维raid编码操作和/或y维raid编码操作。在一些实施方式中,
第一raid引擎可以包括z维编码单元和y维编码单元两者。在一些实施方式中,y维编码单元可在k个数据部分(例如,存储器数据)中沿y维形成j
×
k个条带,k个阵列中的每个阵列中的每一列(例如,36个数据部分)可以是例如沿y维的条带。y维编码单元可为每个条带生成奇偶校验数据部分。在一些实施方式中,生成奇偶校验数据部分可以包括对相应条带中的所有数据部分执行xor运算。在一些实施方式中,生成奇偶校验数据部分的k个集合,并且每个集合包括j个奇偶校验数据部分,每个奇偶校验数据部分对应于相应阵列中的相应条带。表iv和表v分别示出了在第一阵列和第k阵列中生成的奇偶校验数据部分(以实心圆圈示出)。
59.表iv
[0060][0061]
表v
[0062][0063]
如表iv和表v所示,第一阵列的列1中的数据部分(d0-0-0、d0-1-0、...d0-35-0)可形成条带,且对应奇偶校验数据部分可以是p0-36-0;第一阵列的列2中的数据部分(d1-0-0、d1-1-0、...d1-35-0)可形成条带,且对应奇偶校验数据部分可以是p1-36-0;第k阵列的列1中的数据部分(d0-0-126、d0-1-126、...d0-35-126)可形成条带,并且对应奇偶校验数据部分可以是p0-36-126;第k阵列的列2中的数据部分(d1-0-126、d1-1-126、...d1-35-126)可形成条带,并且对应奇偶校验数据部分可以是p1-36-126;等等。j
×
k个条带可以被称为y维条带,并且j
×
k个奇偶校验数据部分可以被称为y维奇偶校验数据。
[0064]
在一些实施方式中,z维编码单元可在k个数据部分中沿z维形成i
×
j个条带,k个阵列中的每个阵列的相同位置处的数据部分可例如沿z维形成条带。即,在所有k个阵列中具有相同行号和列号的数据部分可以形成条带。在一些实施方式中,每个条带包括k个数据部分。z维编码单元可以确定每个条带的奇偶校验数据部分。在一些实施方式中,生成奇偶校验数据部分可以包括对相应条带中的所有数据部分执行xor运算。在一些实施方式中,生成i
×
j个奇偶校验数据部分。表vi和表vii分别示出了条带和为条带生成的奇偶校验数据部分(以实心圆圈示出)。条带分别由(行1,列1)和(行1,列2)处的数据部分形成。i
×
j个条带可以被称为z维条带,并且i
×
j个奇偶校验数据部分可以被称为z维奇偶校验数据。
[0065]
表vi
[0066][0067]
表vii
[0068][0069]
如表vi和表vii所示,k个阵列的(行1,列1)处的数据部分(d0-0-0、d0-0-1、d0-0-2、...d0-0-126)可以形成条带,并且对应奇偶校验数据部分可以是p0-0-127;k个阵列的(行1,列2)处的数据部分(d1-0-0,d1-0-1,d1-0-2,...d1-0-126)可以形成条带,并且对应奇偶校验数据部分可以是p0-0-127;等等。
[0070]
主机(例如,第一raid引擎)可将存储器数据和奇偶校验数据(例如,第一奇偶校验数据)传送到闪存控制器。第一奇偶校验数据可包括y维奇偶校验数据和z维奇偶校验数据中的至少一个。在一些实施方式中,第一奇偶校验数据包括y维奇偶校验数据和z维奇偶校验数据(“y/z奇偶校验数据”)。在一些实施方式中,闪存控制器的写入单元(“写入”)接收第一奇偶校验数据和存储器数据,并且进一步将第一奇偶校验数据和存储器数据传送到闪存控制器中的第二raid引擎(“第2raid引擎”)以用于执行x维raid编码操作。
[0071]
第二raid引擎可包括x维编码单元(“x-编码”),其可对存储器数据和第一奇偶校验数据执行x维编码操作。表viii和表ix分别示出了在第一阵列和第k阵列中生成的奇偶校验数据部分(以实心圆圈示出),表x和表xi分别示出了为y维奇偶校验数据和z维奇偶校验数据生成的奇偶校验数据部分(以实心圆圈示出)。
[0072]
表viii
[0073][0074]
表ix
[0075][0076]
表x
[0077][0078]
表xi
[0079][0080]
在一些实施方式中,x维编码单元可在k个数据部分中沿x维形成i
×
k个条带,k个阵列中的每个阵列的同一行中的数据部分可形成条带。x维编码单元可确定每个条带的奇偶校验数据部分。在一些实施方式中,生成奇偶校验数据部分可以包括对相应条带中的所有数据部分执行xor运算。在一些实施方式中,生成i
×
k个奇偶校验数据部分。表viii和表ix分别示出了为第一阵列和第k阵列中的条带生成的奇偶校验数据部分(以实心圆圈示出)。i
×
k个奇偶校验数据部分可以是x维奇偶校验数据的部分。
[0081]
x维编码单元还可为y维奇偶校验数据生成奇偶校验数据。如表x中所示,x维编码单元可沿x维生成k个条带,每个条带包括k个阵列中的相应一个的奇偶校验数据部分,返回参考表iv。例如,第一阵列的奇偶校验数据部分(p0-36-0、p1-36-0、p2-36-0、...、p126-36-0)可以形成条带;第二阵列的奇偶校验数据部分(p0-36-1、p1-36-1、p2-36-1、...、p126-36-1)可以形成条带;...;并且第k阵列的奇偶校验数据部分(p0-36-126、p1-36-126、p2-36-126、...、p126-36-126)可以形成条带。x维编码单元可分别为每个条带生成k个奇偶校验数据部分,例如p127-36-0、p127-36-1、...、p127-36-126。
[0082]
x维编码单元还可为z维奇偶校验数据生成奇偶校验数据。如表xi所示,x维编码单元可沿x维生成i个条带,每个条带包括条带的奇偶校验数据部分,每个条带包含具有k个阵列的相应行数的所有数据部分,返回参考表v。例如,奇偶校验数据部分(p0-0-127,p1-0-127,p2-0-127,...,p126-0-127)可以各自是由所有k个阵列的第一行中的相应列数的数据部分形成的条带的奇偶校验数据部分;奇偶校验数据部分(p0-1-127、p1-1-127、p2-1-127、...、p126-1-127)可以各自是由所有k个阵列的第二行中的相应列数的数据部分形成的条带的奇偶校验数据部分;...;并且奇偶校验数据部分(p0-35-127、p1-35-127、p2-35-127、...、p126-35-127)可以各自是由所有k个阵列的第i行中的相应列数的数据部分形成的条带的奇偶校验数据部分。x维编码单元可以分别为每个条带生成i个奇偶校验数据部分,例如p127-0-127、p127-1-127、...、p127-35-127。i
×
k个条带(表viii和表ix中所示)、k个条带(表x中所示)和i个条带(表xi中所示)可以统称为x维条带,并且相应奇偶校验数据部分可以统称为x维奇偶校验数据(例如,第二奇偶校验数据)。
[0083]
第二raid引擎的x维编码单元可将存储器数据和x维奇偶校验数据传送到闪存控制器的写入单元。写入单元接着可将存储器数据(“存储器数据”)和x维奇偶校验数据(“x-奇偶校验数据”)写入/存储到存储器阵列装置(“nand”)中。
[0084]
在读取操作中,在从主机接收到读取信号之后,闪存控制器的读取单元(“读取”)可以从存储器阵列装置访问存储器数据。如果成功地读出存储器数据,则读取单元可向主机的存储器输出存储器数据,且主机可进一步从存储器输出存储器数据(“数据输出”)。如果没有成功读出存储器数据,则读取单元可向第二raid引擎发送指示读取失败的错误信号(“数据1错误”)。第二raid引擎的x维解码单元(“x-解码”)可访问x维奇偶校验数据(“x-奇偶校验数据”)和诸如存储器数据的其他数据(“其他数据”),并尝试使用x维奇偶校验数据来恢复沿x维的受损数据部分。如果受损数据部分的恢复成功,则第二raid引擎可向读取单元发送成功(“数据1ok”)信号,并传送恢复的数据部分以便读出。然后,读取单元可以将成功恢复的存储器数据发送到主机以供输出。
[0085]
如果使用x维奇偶校验数据恢复受损数据失败,则第二raid引擎可向第一raid引擎发送指示恢复失败的错误信号(“数据2错误”)(例如,通过读取单元)。第一raid引擎的y/z维解码单元(“y/z解码”)可以例如通过闪存控制器从闪存装置访问y维奇偶校验数据和z维奇偶校验数据(“y-奇偶校验/z-奇偶校验”)和诸如存储器数据的其他数据(“其他数据”)。y/z维解码单元可以使用y维奇偶校验数据和/或z维奇偶校验数据来分别沿y维和/或z维恢复受损数据部分。如果受损数据的恢复成功,则第一raid引擎可向闪存控制器的读取单元发送成功信号(“数据2ok”)。然后,存储器数据可以被成功地作为输出而读出。如果受损数据的恢复失败,则第一raid引擎可向闪存控制器发送指示读取失败的错误信号(“数据2错误”)。在一些实施方式中,沿每个维度的受损存储器数据的恢复包括相应的xor运算。以下提供对包括沿x、y和z维度的解码操作的读取操作的详细描述。
[0086]
图4示出了根据本公开内容一些方面的系统沿x、y和z维度的编码操作。图5示出了根据本公开内容一些方面的系统200进行的沿x、y和z维度的解码操作。图6a示出了根据本公开内容一些方面的用于使用多维raid编码操作来编码存储器数据的方法600的流程图。图6b和图6c示出了根据本公开内容一些方面的用于使用多维raid解码操作来解码存储器数据的方法601的流程图。图6c是图6b的延续。为了便于图示,一起描述图2、4和6a,一起描述图2、5、6b和6c。应当理解,方法600和601中所示的操作不是详尽无遗的,并且也可以在所示操作中的任何操作之前、之后或之间执行其他操作。此外,一些操作可以同时执行,或者以与图6a-6c所示的不同的顺序执行。在一些实施方式中,编码操作是系统200的写入操作的一部分,并且解码操作是系统200的读取操作的一部分。
[0087]
方法600在操作602处开始,其中接收存储器数据。如图2和图4所示,存储器数据(例如用户数据或资金数据)可以由系统200(例如主机)作为输入(“数据输入”)接收。在接收到存储器数据之后,方法600进行到操作604,其中在z维raid编码操作中基于条带中的数据部分的数量来划分存储器数据。如图4所示,系统200执行“数据划分”操作。在一些实施方式中,主机可以将存储器数据划分为k个数据部分,k是z维raid编码操作中的条带中的数据部分的数量。在一些实施方式中,k个数据部分中的每一个包括沿x维度和y维度具有i行和j列的二维阵列,i是耦接到两条相邻字线的数据部分的数量。
[0088]
在划分存储器数据之后,方法600进行到操作606,其中执行y维raid编码操作和z
维raid编码操作中的至少一个,形成第一奇偶校验数据。如图4所示,系统200可以将经划分的存储器数据(“数据”)用于y维raid编码操作和/或z维编码操作。在一些实施方式中,主机的y维编码单元(“y-编码”)对k个阵列执行条带化以沿y维形成j
×
k个条带,每个条带具有k个阵列的相应列的数据部分。在一些实施方式中,主机的z维编码单元(“z-编码”)对k个阵列执行条带化以沿z维形成i
×
j个条带,每个条带具有k个阵列中的相同行号和相同列号的数据部分。y维编码单元可以分别为每个条带生成奇偶校验数据部分,从而形成j
×
k个y维奇偶校验数据部分(“y-奇偶校验”)。z维编码单元可以分别为每个条带生成奇偶校验数据部分,从而形成i
×
j个z维奇偶校验数据部分(“z-奇偶校验”)。在一些实施方式中,为每个条带(例如,y/z维条带)生成奇偶校验数据部分包括在相应y/z维条带中的存储器部分之间执行xor运算。沿y维度和z维度的奇偶校验数据的条带化和生成的详细描述可以参考图2的描述,本文不再重复。
[0089]
在一些实施方式中,k等于126,i等于36,j等于127。即,在y维raid编码操作中,每个y维奇偶校验数据部分保护36(例如,i)个数据部分,例如,保护比是36:1。在一些其他实施方式中,由每个y维奇偶校验数据部分保护的数据部分的数量,例如,i的值,可以改变。例如,i的值可以随着每条字线(或两条相邻字线)中的数据部分的数量的改变而改变。例如,i可以等于36
×
n,n是大于或等于1的正整数。
[0090]
k的值可以等于由z维奇偶校验数据部分保护的数据部分的数量,例如,保护比是k:1。在各种实施方式中,k的值可基于例如存储器阵列装置的架构和/或条带化配置等因素而变化。例如,k可以等于127或36
×
m,m是大于或等于1的正整数。
[0091]
在执行y维raid编码操作和z维raid编码操作之后,方法600进行到操作608,其中对存储器数据和第一奇偶校验数据执行x维raid编码操作,从而形成第二奇偶校验数据。如图4所示,主机可将存储器数据(“数据”)和第一奇偶校验数据(例如,y维奇偶校验数据和z维奇偶校验数据)传送到闪存控制器,以进行x维raid编码操作。闪存控制器的x维编码单元可对存储器数据、y维奇偶校验数据、z维奇偶校验数据分别执行x维raid编码操作。在一些实施方式中,k个阵列中具有j个数据部分的每行可以形成沿x维的条带,并且可以形成i
×
k个x维奇偶校验数据部分。x维raid编码引擎可为每个条带生成相应的x维奇偶校验数据部分。在一些实施方式中,保护比是j:1,j等于127。
[0092]
x维raid编码引擎还可从y维奇偶校验数据沿x维形成k个条带,并从z维奇偶校验数据沿x维形成i个条带。在一些实施方式中,x维raid编码引擎可以为y维奇偶校验数据和z维奇偶校验数据的每个条带生成相应的奇偶校验数据部分。用于y维和z维奇偶校验数据的x维奇偶校验数据(“x-奇偶校验”)和存储器数据可被统称为第二奇偶校验数据。
[0093]
在操作610,执行写入操作以将存储器数据和奇偶校验数据存储到存储器单元中。闪存控制器可将第二奇偶校验数据存储到存储器阵列装置(“nand”)中。同时,闪存控制器还可将存储器数据和第一奇偶校验数据存储到存储器阵列装置中。
[0094]
方法601在操作603处开始,其中访问存储器数据。如图2和图5中所示,闪存装置开始从存储器阵列装置(“nand”)访问存储器数据(“数据”)。如果在操作605没有检测到数据错误(“数据错误”),则方法601进行到操作627,其中读出存储器数据。否则,方法601进行到操作607,其中对受损的存储器数据执行x维raid解码操作。如图5所示,如果闪存控制器例如使用纠错码(ecc)没有检测到错误,则闪存控制器确定没有存储器数据受损(“数据ok”),
并将存储器数据作为输出(“数据输出”)进行发送。如果ecc显示至少已经发生数据错误,则闪存控制器确定存储器数据受损(“数据错误”)并且开始访问x维奇偶校验数据和其他数据(例如,存储器数据)。闪存控制器然后可以使用x维奇偶校验数据和其他数据执行x维raid解码操作。如图2和图5所示,闪存控制器的x维解码单元(“x-解码”)可以访问x维奇偶校验数据和其他数据。x维解码单元可以尝试使用存储器数据和相应的x维奇偶校验数据来恢复受损的数据部分。在一些实施方式中,恢复x维条带中的受损存储器数据包括在相应x维条带中的每个x维奇偶校验数据部分和未受损存储器部分之间执行xor运算。
[0095]
如果在操作607之后的操作609中没有检测到数据错误,则方法601进行到操作627。否则,方法601进行到操作611,其中访问y维奇偶校验数据和存储器数据。如图2和图5所示,闪存控制器可以确定是否可以读出在操作607中使用x维raid解码操作恢复的存储器数据。如果恢复的存储器数据不能被读出(“x-恢复失败”),则闪存控制器确定在存储器数据中仍然存在数据错误,并且方法601进行到操作611。否则,方法601确定读取操作成功(“x-恢复ok”)并进行到操作627。
[0096]
在操作611,访问y维奇偶校验数据和其他数据。主机的y维解码单元(“y-解码”)可以访问y维奇偶校验数据和其他数据(“y-奇偶校验和其他数据”),例如存储器数据。如果在操作613没有检测到数据错误,则方法601进行到操作615,其中对存储器数据执行y维raid解码操作。否则,方法601进行到操作631,其中对y维奇偶校验数据和相应的x维raid奇偶校验数据执行x维raid解码操作。主机可确定在y维奇偶校验数据中是否发生错误。如果检测到错误(“数据错误”),则主机可以通知闪存控制器的x维解码单元使用相应的x维奇偶校验数据来恢复y维奇偶校验数据。y维奇偶校验数据的恢复可包括x维raid解码操作,其包括相应条带中的x维raid奇偶校验部分和未受损的y维raid奇偶校验部分之间的xor操作。恢复的y维奇偶校验数据(“恢复数据”)可用于y维raid解码操作。如果在y维奇偶校验数据中没有检测到错误(“数据ok”),则主机可在y维raid解码操作中使用y维奇偶校验数据。操作631可以进行到操作615。
[0097]
在操作615,对存储器数据执行y维raid解码操作。y维解码单元可以尝试使用存储器数据和相应的y维奇偶校验数据来恢复受损存储器数据在一些实施方式中,恢复受损存储器数据包括在相应y维条带中的每个y维奇偶校验数据部分和未受损存储器部分之间执行xor运算。
[0098]
如果在操作615之后的操作617中没有检测到数据错误,则方法601进行到操作627。否则,方法601进行到操作619,其中访问z维奇偶校验数据和存储器数据。如图2和图5所示,闪存控制器可以确定是否可以读出在操作615中使用y维raid解码操作恢复的存储器数据。如果不能读出恢复的存储器数据(“y-恢复失败”),则闪存控制器确定在存储器数据中仍然存在数据错误,并且方法601进行到操作619。否则,方法601确定读取操作成功(“y-恢复ok”)并进行到操作627。
[0099]
在操作619,访问z维奇偶校验数据和其他数据。主机的z维解码单元(“z-解码”)可以访问z维奇偶校验数据和其他数据(“z-奇偶校验和其他数据”),例如存储器数据。如果在操作621没有检测到数据错误,则方法601进行到操作623,其中对存储器数据执行z维raid解码操作。否则,方法601进行到操作633,其中对z维奇偶校验数据和相应的x维raid奇偶校验数据执行x维raid解码操作。主机可以确定在z维奇偶校验数据中是否已经发生错误。如
果检测到错误(“数据错误”),则主机可以通知闪存控制器的x维解码单元使用相应的x维奇偶校验数据来恢复z维奇偶校验数据。z维奇偶校验数据的恢复可包括x维raid解码操作,其包括相应条带中的x维raid奇偶校验部分和未受损的z维raid奇偶校验部分之间的xor操作。恢复的z维奇偶校验数据(“恢复数据”)可以用于z维raid解码操作。如果在z维奇偶校验数据中没有检测到错误(“数据ok”),则主机可在z维raid解码操作中使用z维奇偶校验数据。操作633可以进行到操作623。
[0100]
在操作623,对存储器数据执行z维raid解码操作。z维解码单元(“z-解码”)可以尝试使用存储器数据和相应的z维奇偶校验数据来恢复受损存储器数据。在一些实施方式中,恢复受损存储器数据包括在相应z维条带中的每个z维奇偶校验数据部分和未受损存储器部分之间执行xor运算。
[0101]
如果在操作623之后的操作625中没有检测到数据错误,则方法601进行到操作627。否则,方法601进行到操作629,其中指示恢复失败。如图2和图5所示,闪存控制器可以确定是否可以读出在操作623中使用z维raid解码操作恢复的存储器数据。如果不能读出恢复的存储器数据(“z-恢复失败”),则闪存控制器确定在存储器数据中仍然存在数据错误,并且方法601进行到操作629。否则,方法601确定读取操作成功(“z-恢复ok”)并进行到操作627。
[0102]
表xii、xiii、xiv和xv示出了使用多维raid操作恢复受损存储器数据(虚线圆圈中)的示例。在一个示例中,如表xii中所示,耦接到字线的三个连续数据部分(例如,d0-0-0、d0-1-0、d0-2-0)可受到损坏。三个受损数据部分可以是沿y维的。通过对相同条带的相应x维奇偶校验数据部分和未受损数据部分执行xor运算,可以恢复受损数据部分中的每一个。例如,可以通过对p127-0-0和(d1-0-0、d2-0-0、...、d126-0-0)执行xor运算来恢复d0-0-0;可以通过对p127-1-0和(d1-1-0、d2-1-0、...、d126-1-0)执行xor运算来恢复d0-1-0;并且可以通过对p127-2-0和(d1-2-0、d2-2-0、...、d126-2-0)执行xor运算来恢复d0-2-0。
[0103]
表xii
[0104][0105]
在另一示例中,如表xiii中所示,耦接到不同字线的相同位置处的存储器单元的四个数据部分,例如d0-1-0、d1-1-0、d2-1-0、d3-1-0可受到损坏。四个受损数据部分可以是沿x维的。通过对相同条带的相应y维奇偶校验数据部分和未受损数据部分执行xor运算,可以恢复受损数据部分中的每一个。例如,可以通过对p0-36-0和(d0-0-0、d0-2-0、d0-3-0、...、d0-35-0)执行xor运算来恢复d0-1-0;可以通过对p1-36-0和(d1-0-0、d1-2-0、d1-3-0、...、d1-35-0)执行xor运算来恢复d1-1-0;可以通过对p2-36-0和(d2-0-0、d2-2-0、d2-3-0、...、d2-35-0)执行xor运算来恢复d2-1-0,并且可以通过对d3-36-0和(d3-0-0、d3-2-0、d3-3-0、...、d3-35-0)执行xor运算来恢复d3-1-0。
[0106]
表xiii
[0107][0108]
在另一示例中,如表xiv中所示,耦接到不同字线的相同位置处的存储器单元的十二个数据部分,例如d0-0-0、d1-0-0、d2-0-0、d3-0-0、d0-1-0、d1-1-0、d2-1-0、d3-1-0、d0-2-0、d1-2-0、d2-2-0、d3-2-0可受到损坏。十二个受损数据部分可以是沿x维和y维的。通过对相同条带的相应z维奇偶校验数据部分和未受损数据部分执行xor运算,可以恢复受损数据部分中的每一个。表xv示出了与表xiv中的存储器数据相对应的z维奇偶校验数据。例如,可以通过对p0-0-127和(d0-0-1、d0-0-2、...、d0-0-126)执行xor运算来恢复d0-0-0;可以通过对p1-0-127和(d1-0-1、d1-0-2、...、d1-0-126)执行xor运算来恢复d1-0-0;...;可以通过对p0-1-127和(d0-1-1、d0-1-2、...、d0-1-126)执行xor运算来恢复d0-1-0;...和可以通过对p3-2-127和(d3-2-1、d3-2-2、...、d3-2-126)执行xor运算来恢复d3-2-0。
[0109]
表xiv
[0110][0111][0112]
表xv
[0113][0114]
应注意,尽管未指定,但主机还可被配置为执行x维编码操作和x维解码操作中的至少一个。即,在一些实施方式中,x维编码操作和x维解码操作中的至少一个还可使用软件装置来执行。然而,由主机实施x、y和y维raid操作的具体过程不应受本公开内容的实施例限制。
[0115]
本公开内容的一个方面提供了一种系统。该系统包括用于存储存储器数据的存储
器装置。该存储器装置包括存储器单元阵列和排列成多行且耦接到存储器单元阵列的多条字线。该系统还包括存储器控制器,其具有处理器和存储器,可操作地耦接到存储器单元阵列。该系统还包括主机,其具有另一处理器和另一存储器,可操作地耦接到存储器控制器。主机的另一处理器被配置为对存储器数据执行第一raid编码操作以形成第一奇偶校验数据。存储器控制器的处理器被配置为接收第一奇偶校验数据和存储器数据,并且对第一奇偶校验数据和存储器数据执行第二raid编码操作以形成第二奇偶校验数据。
[0116]
在一些实施方式中,第一raid编码操作包括y维raid编码操作或z维raid编码操作中的至少一个。
[0117]
在一些实施方式中,第二raid编码操作包括x维raid编码操作。
[0118]
在一些实施方式中,主机的另一处理器还被配置为将存储器数据划分为k个数据部分,每个数据部分包括以i行和j列排列的多个数据部分,k是与z维raid编码操作中的每个奇偶校验数据部分相对应的数据部分的数量。i行中的每一行中的数据部分对应于耦接到每隔一条字线的存储器单元中的相同位置,且j列中的每一列中的数据部分对应于两条相邻字线中的存储器单元。
[0119]
在一些实施方式中,主机的另一处理器还被配置为形成第一条带的k个集合,k个集合中的每个集合包括j个第一条带,j个第一条带中的每一个对应于j列中的相应一列。在一些实施方式中,主机的另一处理器还被配置为执行y维raid编码操作,包括为k个集合中的每个集合中的j个第一条带中的每个条带生成相应的第一奇偶校验数据部分。
[0120]
在一些实施方式中,第一奇偶校验数据包括k
×
j个第一奇偶校验数据部分;并且存储器控制器的处理器还被配置为将k
×
j个第一奇偶校验数据部分排列为k行和j列,k行中的每行包括k个集合中的相应一个集合的j个第一奇偶校验数据部分。存储器控制器的处理器还被配置为形成k个第二条带,每个第二条带对应于k行第一奇偶校验数据部分中的相应一行。
[0121]
在一些实施方式中,执行第二raid编码操作包括执行x维raid编码操作以生成k个第二奇偶校验数据部分的集合,k个第二奇偶校验数据部分中的每一个对应于k个第二条带中的相应一个。
[0122]
在一些实施方式中,主机的另一处理器还被配置为形成第三条带的i
×
j个集合,i
×
j个集合中的每个集合包括k个数据部分,k个数据部分中的每一个包括在k个数据部分中的每一个中具有相同行号和相同列号的数据部分。主机的另一处理器还被配置为执行z维raid编码操作,包括为第三条带的i
×
j个集合中的每个集合生成相应的第三奇偶校验数据部分。
[0123]
在一些实施方式中,第一奇偶校验数据包括i
×
j个第三奇偶校验数据部分。存储器控制器的处理器还被配置为将i
×
j个第三奇偶校验数据部分排列为i行和j列,i行中的每行包括对应于k个数据部分中的相应行的j列的j个第三奇偶校验数据部分;以及形成i个第四条带,每个第四条带对应于i行第三奇偶校验数据部分中的相应一行。
[0124]
在一些实施方式中,执行第二raid编码操作包括执行x维raid编码操作以生成i个第四奇偶校验数据部分的集合,i个第四奇偶校验数据部分中的每一个对应于i个第四条带中的相应一个。
[0125]
在一些实施方式中,存储器控制器的处理器还被配置为形成第五条带的k个集合,
k个集合中的每个集合包括i个第五条带,每个第五条带对应于k个数据部分中的每个数据部分中的i行中的相应一行。在一些实施方式中,存储器控制器的处理器还被配置为针对第五条带的k个集合中的每个集合,执行x维raid编码操作以生成i个第五奇偶校验数据部分,每个第五奇偶校验数据部分对应于i个第五条带中的相应一个,从而形成k
×
i个第五奇偶校验数据部分。
[0126]
在一些实施方式中,存储器控制器的处理器还被配置为执行写入操作以将第一奇偶校验数据、第二奇偶校验数据和存储器数据存储到存储器单元阵列中。
[0127]
在一些实施方式中,i等于存储在耦接到两条相邻字线的存储器单元中的数据部分的总数。
[0128]
在一些实施方式中,存储器控制器的处理器还被配置为响应于对存储器数据的读取操作失败,执行x维raid解码操作,x维raid解码操作包括:从存储器单元阵列访问存储器数据和第二奇偶校验数据,基于存储器数据和第二奇偶校验数据中的相应x维奇偶校验数据来确定存储器数据中的受损数据部分,以及基于存储器数据和相应x维奇偶校验数据来恢复受损数据部分。存储器控制器的处理器还被配置为响应于使用x维raid解码操作恢复存储器数据成功,读出存储器数据;以及响应于使用x维raid解码操作恢复存储器数据失败,通知主机的另一处理器执行y维raid解码操作。
[0129]
在一些实施方式中,主机的另一处理器还被配置为响应于从存储器控制器的处理器接收到通知而从存储器单元阵列访问存储器数据和第一奇偶校验数据;以及确定第一奇偶校验数据中的存储器数据的y维奇偶校验数据是否受损。如果y维奇偶校验数据受损,则主机的另一处理器被配置为通知存储器控制器的处理器使用对应于y维奇偶校验数据的x维奇偶校验数据来恢复y维奇偶校验数据。如果y维奇偶校验数据未受损,则主机的另一处理器被配置为使用y维奇偶校验数据和存储器数据执行y维raid解码操作。
[0130]
在一些实施方式中,执行y维raid解码操作包括:基于存储器数据和y维奇偶校验数据确定存储器数据中的受损数据部分,以及基于存储器数据和y维奇偶校验数据来恢复受损存储器数据。响应于使用y维raid解码操作恢复存储器数据成功,主机的另一处理器被配置为读出存储器数据。响应于使用y维raid解码操作恢复存储器数据失败,主机的另一处理器被配置为执行z维raid解码操作。
[0131]
在一些实施方式中,主机的另一处理器还被配置为响应于从存储器控制器的处理器接收到通知而从存储器单元阵列访问存储器数据和第一奇偶校验数据,且确定第一奇偶校验数据中的存储器数据的z维奇偶校验数据是否受损。如果z维奇偶校验数据受损,则主机的另一处理器还被配置为通知存储器控制器的处理器使用与z维奇偶校验数据对应的x维奇偶校验数据来恢复z维奇偶校验数据。如果z维奇偶校验数据未受损,则主机的另一处理器还被配置为使用z维奇偶校验数据和存储器数据执行z维raid解码操作。
[0132]
在一些实施方式中,执行z维raid解码操作包括:基于存储器数据和z维奇偶校验数据确定存储器数据中的受损数据部分,并基于存储器数据和z维奇偶校验数据恢复受损存储器数据。响应于使用z维raid解码操作恢复存储器数据成功,主机的另一处理器还被配置为读出存储器数据。响应于使用z维raid解码操作恢复存储器数据失败,主机的另一处理器还被配置为结束读取操作。
[0133]
本公开内容的另一方面提供了一种存储器控制器。该存储器控制器包括处理器和
存储器,可操作地耦接到用于存储存储器数据的多个存储器单元;存储器单元耦接到排列成多行的多条字线。处理器被配置为接收存储器数据和存储器数据的第一奇偶校验数据;对存储器数据和第一奇偶校验数据执行raid编码操作以形成第二奇偶校验数据,并且执行写入操作以将存储器数据、第一奇偶校验数据和第二奇偶校验数据存储到存储器单元中。
[0134]
在一些实施方式中,第一奇偶校验数据包括存储器数据在第一维度中的奇偶校验数据,且第二奇偶校验数据包括存储器数据在不同于第一维度的第二维度中的奇偶校验数据。
[0135]
在一些实施方式中,第一奇偶校验数据包括y维奇偶校验数据或z维奇偶校验数据中的至少一个,并且第二奇偶校验数据包括存储器数据在x维奇偶校验数据中的奇偶校验数据。
[0136]
在一些实施方式中,存储器数据包括k个数据部分,每个数据部分包括以i行和j列排列的多个数据部分,k是与z维奇偶校验数据中的每个奇偶校验数据部分对应的数据部分的数量。i行中的每一行中的数据部分对应于耦接到每隔一条字线的存储器单元中的相同位置。j列中的每一列中的数据部分对应于两条相邻字线中的存储器单元。
[0137]
在一些实施方式中,处理器还被配置为针对存储器数据形成条带的k个集合,k个集合中的每个集合包括i个条带,每个条带对应于k个数据部分中的每一个中的i行中的相应一行。在一些实施方式中,处理器还被配置为针对条带的k个集合中的每个集合,执行x维raid编码操作以生成i个奇偶校验数据部分,每个奇偶校验数据部分对应于i个条带中的相应一个,从而形成k
×
i个奇偶校验数据部分。
[0138]
在一些实施方式中,处理器还被配置为针对第一奇偶校验数据形成多个其他条带,并且对第一奇偶校验数据执行x维raid编码操作以生成第一奇偶校验数据的奇偶校验数据。
[0139]
在一些实施方式中,处理器还被配置为响应于读取操作失败而对存储器数据和第二奇偶校验数据中的相应x维奇偶校验数据执行x维raid解码操作,且基于存储器数据和相应x维奇偶校验数据恢复存储器数据中的受损数据部分。响应于使用x维raid解码操作恢复存储器数据成功,处理器还被配置为读出存储器数据。响应于使用x维raid解码操作恢复存储器数据失败,处理器还被配置为通知主机。
[0140]
在一些实施方式中,处理器还被配置为对第一奇偶校验数据和第二奇偶校验数据中的相应奇偶校验数据执行x维raid解码操作,并且基于第一奇偶校验数据和第二奇偶校验数据中的相应奇偶校验数据恢复第一奇偶校验数据中的受损奇偶校验数据部分。响应于使用x维raid解码操作恢复第一奇偶校验数据成功,处理器被配置为将恢复的第一奇偶校验数据发送到主机。响应于使用x维raid解码操作恢复第一奇偶校验数据失败,处理器被配置为通知主机。
[0141]
本公开内容的另一方面提供了一种主机。主机具有处理器和存储器,且可操作地耦接到用于存储存储器数据的多个存储器单元。存储器单元耦接到排列成多行的多条字线。处理器被配置为接收存储器数据,对存储器数据执行raid编码操作以形成奇偶校验数据,以及将存储器数据和奇偶校验数据传送到可操作地耦接到多个存储器单元的存储器控制器。
[0142]
在一些实施方式中,raid编码操作包括y维raid编码操作或z维raid编码操作中的
至少一个。奇偶校验数据包括y维奇偶校验数据或z维奇偶校验数据中的至少一个。
[0143]
在一些实施方式中,处理器还被配置为将存储器数据划分为k个数据部分,每个数据部分包括以i行和j列排列的多个数据部分,k是与z维raid编码操作中的每个奇偶校验数据部分相对应的数据部分的数量。i行中的每一行中的数据部分对应于耦接到每隔一条字线的存储器单元中的相同位置。j列中的每一列中的数据部分对应于两条相邻字线中的存储器单元。
[0144]
在一些实施方式中,处理器还被配置为形成第一条带的k个集合,k个集合中的每个集合包括j个第一条带,j个第一条带中的每一个对应于j列中的相应一列。在一些实施方式中,处理器还被配置为执行y维raid编码操作,包括为k个集合中的每个集合中的j个第一条带中的每一个生成相应的第一奇偶校验数据部分。
[0145]
在一些实施方式中,处理器还被配置为形成第三条带的i
×
j个集合,i
×
j个集合中的每个集合包括k个数据部分,k个数据部分中的每一个包括在k个数据部分中的每一个中具有相同行号和相同列号的数据部分。在一些实施方式中,处理器还被配置为执行z维raid编码操作,包括为第三条带的i
×
j个集合中的每个集合生成相应的第三奇偶校验数据部分。
[0146]
在一些实施方式中,i等于存储在耦接到两条相邻字线的存储器单元中的数据部分的总数。
[0147]
在一些实施方式中,处理器还被配置为接收奇偶校验数据和存储器数据,且确定奇偶校验数据是否包括受损奇偶校验数据部分。响应于奇偶校验数据不具有受损奇偶校验数据部分,处理器还被配置为对奇偶校验数据和存储器数据执行y维raid解码操作或z维raid解码操作中的至少一个。响应于奇偶校验数据具有受损奇偶校验数据部分,处理器还被配置为通知控制器恢复受损奇偶校验数据部分。
[0148]
在一些实施方式中,处理器还被配置为对恢复的奇偶校验数据和存储器数据执行y维raid解码操作或z维raid解码操作中的至少一个。
[0149]
本公开内容的另一方面提供了一种用于使用raid操作存储设备的方法。设备包括:存储有存储器数据的多个存储器单元;存储器控制器,可操作地耦接到存储器单元;以及主机,可操作地耦接到存储器控制器。该方法包括:由主机对存储器数据执行第一raid编码操作以形成第一奇偶校验数据;将第一奇偶校验数据和所接收的存储器数据传送到存储器控制器;以及由存储器控制器对第一奇偶校验数据和所接收的存储器数据执行第二raid编码操作以形成第二奇偶校验数据。
[0150]
在一些实施方式中,执行第一raid编码操作包括执行y维raid编码操作或z维raid编码操作中的至少一个。
[0151]
在一些实施方式中,执行第二raid编码操作包括执行x维raid编码操作。
[0152]
在一些实施方式中,该方法还包括由主机将存储器数据划分为k个数据部分,每个数据部分包括以i行和j列排列的多个数据部分,k是与z维raid编码操作中的每个奇偶校验数据部分相对应的数据部分的数量。i行中的每一行中的数据部分对应于耦接到每隔一条字线的存储器单元中的相同位置。j列中的每一列中的数据部分对应于两条相邻字线中的存储器单元。
[0153]
在一些实施方式中,该方法还包括响应于对存储器数据的读取操作失败,由存储
器控制器对存储器数据和第二奇偶校验数据执行x维raid解码操作。
[0154]
在一些实施方式中,该方法还包括响应于使用x维raid解码操作对存储器奇偶校验数据的恢复操作失败,由主机执行y维raid解码操作或z维raid解码操作中的至少一个。
[0155]
可以容易地修改特定实施方式的前述描述和/或使其适于各种应用。因此,基于本文呈现的教导和指导,这样的适应和修改旨在处于所公开的实施方式的等同变换的含义和范围内。本公开内容的广度和范围不应受上述示例性实施方式中的任一个限制,而应仅根据所附权利要求和其等同变换来限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献