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

用于存储器子系统的具有低奇偶校验成本的双层代码的制作方法

2022-02-24 18:54:51 来源:中国专利 TAG:

用于存储器子系统的具有低奇偶校验成本的双层代码
1.相关申请
2.本技术案主张2020年5月26日提交且标题为“用于存储器子系统的具有低奇偶校验成本的双层代码(two-layer code with low parity cost for memory sub-systems)”的第16/883,839号非临时美国专利申请的优先权,所述非临时美国专利申请主张2019年6月21日提交且标题为“用于存储器子系统的具有低奇偶校验成本的双层代码(two-layer code with low parity cost for memory sub-systems)”的第62/864,876号临时美国专利申请的优先权,所述申请的全部公开内容特此以引用的方式并入本文中。
技术领域
3.总的来说,本文公开的至少一些实施例涉及存储器系统,且更具体地说,涉及但不限于用于将数据存储在存储器子系统中以及从存储器子系统检索数据的双层代码。


背景技术:

4.存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可例如为非易失性存储器装置和易失性存储器装置。通常,主机系统可利用存储器子系统以在存储器装置处存储数据以及从存储器装置检索数据。
附图说明
5.在附图的图中通过实例而非限制的方式说明了实施例,在附图中,相似的参考标号指示类似的元件。
6.图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
7.图2展示动态数据放置器,其经配置而以减少和/或避免写入数据时并发媒体存取中的冲突的方式确定媒体布局。
8.图3展示具有动态数据放置的存储器子系统的实例。
9.图4说明经配置以支持动态数据放置的数据结构的实例。
10.图5说明动态媒体布局确定的实例。
11.图6说明跨集成电路裸片分配以用于数据的多遍编程的块组。
12.图7说明跨多个平面的双层代码的布置。
13.图8说明使用双层代码对数据进行编码的方法。
14.图9说明对使用双层代码编码的数据进行解码的方法。
15.图10是本公开的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
16.本公开的至少一些方面涉及存储器子系统中的动态数据放置和具有低奇偶校验成本的双层代码以对数据进行编码以存储在存储器子系统中。存储器子系统可以是存储装置、存储器模块,或存储装置和存储器模块的混合。下文结合图1描述存储装置和存储器模
块的实例。通常,主机系统可利用包含一或多个组件(例如,存储数据的存储器装置)的存储器子系统。主机系统可提供数据以存储于存储器子系统处,且可请求从存储器子系统检索数据。
17.媒体布局指定在存储器子系统中从主机系统接收的命令中使用的地址与存储器子系统的存储器媒体中的物理存储器位置之间的映射。固定的媒体布局可能引起活动写入流之间的媒体存取冲突、缓冲器使用期限增大和/或缓冲要求增大。缓冲器使用期限对应于在将数据提交、写入、存储或编程到存储器子系统的存储器媒体中之前在存储器子系统中缓冲的数据的使用期限。举例来说,存储器子系统连接到的主机系统、在存储器子系统中运行的无用单元收集过程和/或来自主机系统的一或多个写入流(例如,用于在存储器子系统中配置的名字空间的不同区中写入)可生成多个写入命令流。存储器媒体可具有能够并行地写入数据的多个存储器装置。因此,在将日期提交到存储器子系统的存储器媒体中时,可在存储器子系统中并行执行至少一些写入命令流。然而,一个存储器装置可能每次支持一个写入操作。当通过媒体布局映射两个写入命令以在同一存储器装置上操作时,会发生存取冲突。每次冲突会增加对应的缓冲器使用期限。媒体布局可通过将逻辑地址映射到存储器子系统的存储器媒体中的随机存储器位置来随机化。随机化的媒体布局可减少冲突。然而,当使用预定媒体布局时,即使当写入流的数目等于或小于可并行独立地执行写入操作的存储器装置的数目时,仍然可能发生冲突。
18.本公开的至少一些方面通过动态数据放置解决以上和其它不足。举例来说,对于传入写入命令中使用的逻辑地址的媒体布局的部分的确定可推迟到可在无冲突的情况下执行写入命令为止。当存储器媒体被配置在集成电路裸片上(例如,作为nand存储器单元)时,媒体布局确定可基于可供用于在输入/输出调度时执行写入操作的集成电路裸片的标识。媒体布局经确定以使得要并行执行的命令的逻辑地址映射到可供用于无冲突的并发/并行操作的不同集成电路裸片。因此,可完全避免来自不同活动流的写入命令之间的媒体存取冲突。当活动写入流的数目小于存储器子系统中集成电路裸片的数目时,在使用动态媒体布局时不会发生媒体存取冲突。一般来说,写入流包含将一组数据一起作为群组进行写入、微调、重写的一组命令。在所述群组中,数据可循序、随机或伪循序地在逻辑空间中写入。优选的是,群组中的数据写入到擦除块组中,其中擦除块组中的存储器单元存储所述流的数据,但不存储来自其它流的数据。可擦除所述擦除块组以移除所述流的数据,而不擦除其它流的数据。在一些情况下,当不同流的逻辑地址映射到其中不能单独擦除不同流的数据的同一擦除块组中时,可能会发生冲突。还可通过动态媒体布局技术来避免此类冲突。任选地,可跨多个集成电路裸片和存储器单元平面动态地放置待存储于存储器子系统中的数据以进行多遍编程,以实现用于下一原子写入操作的分配存储容量与待存储在所述分配存储容量中的数据的大小之间的最佳或改善的匹配。
19.图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置102)、一或多个非易失性存储器装置(例如,存储器装置104),或此类装置的组合。
20.存储器子系统110可以是存储装置、存储器模块,或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡以及硬盘
驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小型dimm(so-dimm)以及各种类型的非易失性双列直插式存储器模块(nvdimm)。
21.计算系统100可以是计算装置,例如台式计算机、笔记本电脑、网络服务器、移动装置、载具(例如,飞机、无人机、火车、汽车或其它运输工具)、具有物联网(iot)功能的装置、嵌入式计算机(例如,包含在载具、工业设备或联网商用装置中的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
22.计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到”或“与...耦合”通常是指组件之间的连接,所述连接可以是间接通信连接或直接通信连接(例如不具有居间组件),无论有线或无线,包含例如电连接、光学连接、磁连接等连接。
23.主机系统120可包含处理器芯片组(例如处理装置118)和由处理器芯片组执行的软件栈。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如,控制器116)(例如,nvdimm控制器)和存储协议控制器(例如,pcie控制器、sata控制器)。主机系统120使用存储器子系统110,以例如将数据写入到存储器子系统110和从存储器子系统110读取数据。
24.主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(sata)接口、外围组件互连高速(pcie)接口、通用串行总线(usb)接口、光纤通道、串行附接scsi(sas)、双数据速率(ddr)存储器总线、小型计算机系统接口(scsi)、双列直插式存储器模块(dimm)接口(例如,支持双数据速率(ddr)的dimm套接接口)、开放nand快闪接口(onfi)、双数据速率(ddr)、低功率双数据速率(lpddr),或任何其它接口。物理主机接口可用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过pcie接口与主机系统120耦合时,主机系统120还可利用nvm高速(nvme)接口来存取组件(例如,存储器装置104)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据以及其它信号的接口。图1说明存储器子系统110以作为实例。一般来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
25.主机系统120的处理装置118可例如为微处理器、中央处理单元(cpu)、处理器的处理核心、执行单元等。在一些情况下,控制器116可称作存储器控制器、存储器管理单元和/或启动器。在一个实例中,控制器116控制通过耦合在主机系统120与存储器子系统110之间的总线进行的通信。一般来说,控制器116可将对存储器装置102、104的期望存取的命令或请求发送到存储器子系统110。控制器116还可包含用以与存储器子系统110通信的接口电路系统。接口电路系统可将从存储器子系统110接收到的响应转换成用于主机系统120的信息。
26.主机系统120的控制器116可与存储器子系统110的控制器115通信以执行操作,例如在存储器装置102、104处读取数据、写入数据或擦除数据,以及其它此类操作。在一些情况下,控制器116集成在处理装置118的同一封装内。在其它情况下,控制器116与处理装置118的封装分离。控制器116和/或处理装置118可包含硬件,例如一或多个集成电路(ic)和/或离散组件、缓冲存储器、高速缓冲存储器,或其组合。控制器116和/或处理装置118可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等),
或另一合适的处理器。
27.存储器装置102、104可包含不同类型的非易失性存储器组件和/或易失性存储器组件的任何组合。易失性存储器装置(例如,存储器装置102)可以是但不限于随机存取存储器(ram),例如动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
28.非易失性存储器组件的一些实例包含“与非”(nand)型快闪存储器和就地写入存储器,例如三维交叉点(“3d交叉点”)存储器。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。nand型快闪存储器包含例如二维nand(2d nand)和三维nand(3d nand)。
29.存储器装置104中的每一者可包含一或多个存储器单元阵列。一个类型的存储器单元,例如单层级单元(slc),可每单元存储一个位。其它类型的存储器单元,例如多层级单元(mlc)、三层级单元(tlc)、四层级单元(qlc)和五层级单元(plc)可每单元存储多个位。在一些实施例中,存储器装置104中的每一者可包含一或多个存储器单元阵列,例如slc、mlc、tlc、qlc或这些的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的slc部分,以及mlc部分、tlc部分或qlc部分。存储器装置104的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,nand),页可经分组以形成块。
30.虽然描述了非易失性存储器装置,例如3d交叉点型和nand型存储器(例如,2dnand、3d nand),但存储器装置104可基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻性随机存取存储器(rram)、基于氧化物的rram(oxram)、“或非”(nor)快闪存储器和电可擦除可编程只读存储器(eeprom)。
31.存储器子系统控制器115(或为简单起见,控制器115)可与存储器装置104通信以执行操作,例如在存储器装置104处读取数据、写入数据或擦除数据,以及其它此类操作(例如,响应于控制器116在命令总线上调度的命令)。控制器115可包含硬件,例如一或多个集成电路(ic)和/或离散组件、缓冲存储器,或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路系统以执行本文所描述的操作。控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等)或另一合适的处理器。
32.控制器115可包含经配置以执行存储在本地存储器119中的指令的处理装置117(处理器)。在所说明的实例中,控制器115的本地存储器119包含经配置以存储指令的嵌入式存储器,所述指令用于执行各种过程、操作、逻辑流以及例程以控制存储器子系统110的操作,包含处理存储器子系统110与主机系统120之间的通信。
33.在一些实施例中,本地存储器119可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(rom)。尽管将图1中的实例存储器子系统110说明为包含控制器115,但在本公开的另一实施例中,存储器子系统110不包含控制器115,且可能改为依靠(例如由外部主机或由与存储器子系统分开的处理器或控制器提供的)外部控制。
34.一般来说,控制器115可从主机系统120接收命令或操作,且可将所述命令或操作转换成指令或适当的命令,以实现对存储器装置104的期望存取。控制器115可负责其它操作,例如耗损均衡操作、无用单元收集操作、误差检测和纠错码(ecc)操作、加密操作、高速缓存操作和与存储器装置104相关联的逻辑地址(例如,逻辑块地址(lba)、名字空间)和物理地址(例如,物理块地址)之间的地址转译。控制器115还可包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收到的命令转换成存取存储器装置104的命令指令,以及将与存储器装置104相关联的响应转换成用于主机系统120的信息。
35.存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如,dram)和地址电路系统(例如,行解码器和列解码器),所述地址电路系统可从控制器115接收地址且解码所述地址以对存储器装置104进行存取。
36.在一些实施例中,存储器装置104包含结合存储器子系统控制器115操作以在存储器装置104的一或多个存储器单元上执行操作的本地媒体控制器105。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置104(例如,对存储器装置104执行媒体管理操作)。在一些实施例中,存储器装置104是受管理存储器装置,其为与本地控制器(例如,本地控制器105)组合以在同一存储器装置封装内进行媒体管理的原始存储器装置。受管理存储器装置的实例是受管理nand(mnand)装置。
37.计算系统100可任选地包含存储器子系统110中的动态数据放置器113,其动态地确定媒体布局以将与逻辑地址相关联的数据放置在媒体单元/存储器装置102到104中。计算系统100可任选地在存储器子系统110中包含双层编码器/解码器114,所述双层编码器/解码器使用纠错码和纠删码的组合来转换数据以用于存储在媒体单元109a到104中。在一些实施例中,存储器子系统110中的控制器115包含动态数据放置器113和/或双层编码器/解码器114的至少一部分。在其它实施例中,或以组合方式,主机系统120中的控制器116和/或处理装置118包含动态数据放置器113和/或双层编码器/解码器114的至少一部分。举例来说,控制器115、控制器116和/或处理装置118可包含实施动态数据放置器113和/或双层编码器/解码器114的逻辑电路系统。举例来说,控制器115或主机系统120的处理装置118(处理器)可经配置以执行存储在存储器中的指令以用于执行本文所描述的动态数据放置器113和/或双层编码器/解码器114的操作。在一些实施例中,动态数据放置器113和/或双层编码器/解码器114实施于安置在存储器子系统110中的集成电路芯片中。在其它实施例中,动态数据放置器113和/或双层编码器/解码器114是主机系统120的操作系统、装置驱动器或应用程序的部分。
38.基于媒体单元/存储器装置102到104在存储器子系统110中的输入/输出调度时写入、编程、存储、提交数据的可用性,动态数据放置器113可确定用于在媒体单元/存储器装置102到104中的逻辑地址处放置数据的逻辑地址的一部分的媒体布局。当媒体单元/存储器装置(例如,102或104)可供用于提交/编程数据时,调度写入命令以用于在存储器子系统110中执行;且动态数据放置器113生成用于写入命令的媒体布局的一部分且映射写入命令中使用的逻辑地址以结合媒体单元/存储器装置(例如,102或104)标识存储器位置。写入命令的执行使存储器子系统110将与写入命令相关联的数据提交/编程到媒体单元/存储器装
置(例如,102或104)中。由于已知媒体单元/存储器装置(例如,102或104)可供用于提交/编程数据而不依赖于其它媒体单元/存储器装置(例如,102或104)的操作,因此在写入命令的执行中不存在媒体存取冲突。当存在多个媒体单元/存储器装置(例如,102和104)可用时,来自多个写入流的命令中使用的逻辑地址可分别通过媒体布局的动态生成部分映射到多个媒体单元/存储器装置(例如,102和104),使得在执行来自多个写入流的命令时不存在媒体存取冲突。下文描述关于动态数据放置器113的操作的其它细节。
39.图2展示动态数据放置器113,其经配置而以减少和/或避免写入数据时并发媒体存取中的冲突的方式确定媒体布局130。举例来说,可在图1的计算机系统100中实施动态数据放置器113和媒体布局130。
40.在图2中,调度多个写入命令123a到123n以供并行执行。经调度以供并行执行的写入命令123a到123n的数目基于可供用于并行操作的媒体单元/存储器装置109a到109n(例如,图1所说明的存储器装置102和/或104)的数目。写入命令123a到123n可分别来自多个写入流。
41.写入命令123a到123n使用逻辑块寻址(lba)地址131、...、133来指定用于写入操作的位置。
42.在调度写入命令123a到123n时,动态数据放置器113生成逻辑块寻址(lba)地址131、...、133到物理地址141、...、143的映射。由于确定媒体单元/存储器装置109a到109n可供用于并行写入操作,因此动态数据放置器113将lba地址131、...、133中的每一者映射到媒体单元/存储器装置109a、...、109n中的不同一者。因此,lba地址131、...、133的物理地址141、...、143对应于不同媒体单元/存储器装置109a、...、109n中的存储区151、...、153。由于物理地址141、...、143中没有两个用于同一媒体单元(例如,109a或109n)中的存储器区,因此在并行执行写入命令123a、...、123n时不会发生冲突。因此,消除了媒体存取冲突。
43.一般来说,跨不同媒体单元/存储器装置109a到109n的写入操作可能不一致。因此,当媒体单元/存储器装置109a、...、109n的某一子集变得可供用于下一写入操作时,媒体单元/存储器装置109a、...、109n的另一子集可能仍然忙于其操作且无法用于下一写入操作。媒体单元/存储器装置109a、...、109n中的一些可能忙于执行其它操作,例如读取操作、擦除操作,且因此无法用于执行写入操作。一般来说,当针对媒体单元/存储器装置109a、...、109n的可用子集调度一或多个写入命令时,动态数据放置器113生成媒体布局103的一部分,以将调度的写入命令的lba地址映射到媒体单元/存储器装置109a、...、109n的可用子集中的存储器区的物理地址。因此,可在媒体存取冲突的情况下执行调度的命令。
44.图3展示具有动态数据放置的存储器子系统的实例。举例来说,可使用图2的动态数据放置器113在图1的存储器子系统110中实施图3的存储器子系统。然而,图1和图2的技术不限于图3中说明的存储器子系统的实施方案。举例来说,所述技术可实施普通块装置、支持名字空间的装置或支持分区名字空间的装置(例如,图3中说明的存储器子系统)。因此,本文中呈现的公开内容不限于图3的实例。
45.在图3中,名字空间201被配置在存储器子系统110的媒体存储容量上。名字空间201提供逻辑块寻址空间,所述逻辑块寻址空间可由主机系统120用以指定用于读取或写入操作的存储器位置。名字空间201可被分配在存储器子系统110的媒体存储容量的一部分或
存储器子系统110的整个媒体存储容量上。在一些情况下,可在存储器子系统110的媒体存储容量的单独、非重叠部分上分配多个名字空间。
46.在图3中,名字空间201被配置有多个区211、213、...、219。名字空间中的每个区(例如,211)允许对区(例如,211)中的lba地址进行随机读取存取,且允许对区(例如,211)中的lba地址进行循序写入存取,但不允许对区(211)中的随机lba地址进行随机写入存取。因此,在名字空间201的lba地址空间中以预定的顺序次序执行将数据写入区(例如,211)中。
47.当配置名字空间201中的区(例如,211)时,有可能(例如,为简单起见)针对所述区(例如,211)预定媒体布局。区(例如,211)中的lba地址可预映射到存储器子系统110的媒体203中。然而,如上文所论述,此类预定媒体布局可能在存在多个并行写入流时引起媒体存取冲突。将从区(例如,211)中的lba地址到媒体203中的存储器位置的映射随机化可减少冲突,但无法消除冲突。
48.优选的是,在存储器子系统110中配置动态数据放置器113,以在调度用于执行的写入命令时创建媒体布局130的部分,从而完全消除冲突。
49.举例来说,存储器子系统110的媒体203可具有多个集成电路裸片205、...、207。每个集成电路裸片(例如,205)可具有存储器单元(例如,nand存储器单元)的多个平面221、...、223。每个平面(例如,221)可具有存储器单元(例如,nand存储器单元)的多个块231、...、233。每个块(例如,231)可具有存储器单元(例如,nand存储器单元)的多个页241、...、243。每一页(例如,241)中的存储器单元经配置以被编程以在原子操作中将数据一起存储/写入/提交;且每个块(例如,231)中的存储器单元经配置以在原子操作中将数据一起擦除。
50.当由于两个集成电路裸片(例如,205和207)可供用于并发操作而调度用于将数据存储在一个区(例如,211)中的写入命令(例如,123a)和用于将数据存储在另一区(例如,213)中的另一写入命令(例如,123n)以用于并行执行时,动态数据放置器113会将所述写入命令(例如,123a和123n)的lba地址(例如,131和133)映射到位于不同裸片(例如,205和207)中的页中。因此,可避免媒体存取冲突。
51.图4说明经配置以支持动态数据放置的数据结构的实例。举例来说,可使用图4的数据结构来实施图2或3的媒体布局130。
52.在图4中,区映射301经配置以提供用于名字空间(例如,201)中的区(例如,211)的媒体布局信息。区映射301可具有多个条目。区映射301中的每个条目标识关于区(例如,211)的信息,例如区(例如,211)的起始lba地址311、区(例如,211)的块组标识符313、区(例如,211)的光标值315、区(例如,211)的状态317等。
53.主机系统120在以区起始lba地址311起始的区(例如,211)中写入数据。主机系统120在lba空间中循序地在区(例如,211)中写入数据。在一定量的数据已写入到区(例如,211)中之后,通过光标值315标识用于写入后续数据的当前起始lba地址。用于所述区的每个写入命令将光标值315移动到用于所述区的下一写入命令的新起始lba地址。状态317可具有指示区(例如,211)为空、满、隐式开放、显式开放、关闭等的值。
54.在图4中,逻辑到物理块映射303经配置以促进lba地址(例如,331)转译为媒体(例如,203)中的物理地址。
55.逻辑到物理块映射303可具有多个条目。lba地址(例如,331)可用作或转换为逻辑到物理块映射303中的条目的索引。所述索引可用于查找lba地址(例如,331)的条目。逻辑到物理块映射303中的每个条目针对lba地址(例如,331)标识媒体(例如,203)中的存储器块的物理地址。举例来说,媒体(例如,203)中的存储器块的物理地址可包含裸片标识符333、块标识符335、页映射条目标识符337等。
56.裸片标识符333标识存储器子系统110的媒体203中的特定集成电路裸片(例如,205或207)。
57.块标识符335标识使用裸片标识符333标识的集成电路裸片(例如,205或207)内的特定存储器块(例如,nand快闪存储器)。
58.页映射条目标识符337标识页映射305中的条目。
59.页映射305可具有多个条目。页映射305中的每个条目可包含标识存储器单元块(例如,nand存储器单元)内的存储器单元页的页标识符351。举例来说,页标识符351可包含nand存储器单元块中的页的字线编号和页的子块编号。此外,页的条目可包含页的编程模式353。举例来说,页可在slc模式、mlc模式、tlc模式或qlc模式下编程。当在slc模式下配置时,页中的每个存储器单元将存储一个数据位。当在mlc模式下配置时,页中的每个存储器单元将存储两个数据位。当在tlc模式下配置时,页中的每个存储器单元将存储三个数据位。当在qlc模式下配置时,页中的每个存储器单元将存储四个数据位。集成电路裸片(例如,205或207)中的不同页可具有用于数据编程的不同模式。
60.在图4中,块组表307存储对区(例如,211)的动态媒体布局的各方面进行控制的数据。
61.块组表307可具有多个条目。块组表307中的每个条目标识其中存储区(例如,211)的数据的集成电路裸片(例如,205和207)的数目/计数371。对于用于区(例如,211)的每个集成电路裸片(例如,205和207),块组表307的条目具有裸片标识符373、块标识符375、页映射条目标识符377等。
62.裸片标识符373标识存储器子系统110的媒体203中的特定集成电路裸片(例如,205或207),在所述裸片(例如,205或207)上可存储区(例如,211)的后续数据。
63.块标识符375标识使用裸片标识符373标识的集成电路裸片(例如,205或207)内的存储器(例如,nand快闪存储器)的特定块(例如,231或233),在所述特定块(例如,231或233)中可存储区(例如,211)的后续数据。
64.页映射条目标识符337标识页映射305中的条目,其标识可用于存储区(例如,211)的后续数据的页(例如,241或241)。
65.举例来说,存储器子系统110接收多个写入命令流。举例来说,在一个实施例中,所述多个流中的每个相应流经配置以在逻辑地址空间中循序地写入数据;且在另一实施例中,所述多个流中的流经配置以在逻辑地址空间中伪循序地或在一个实施例中随机地写入数据。每个写入流包含经标注以将一组数据一起作为群组进行写入、微调、重写的一组命令。在所述群组中,数据可循序、随机或伪循序地在逻辑空间中写入。优选的是,群组中的数据写入到擦除块组中,其中擦除块组中的存储器单元存储所述流的数据,但不存储来自其它流的数据。可擦除所述擦除块组以移除所述流的数据,而不擦除其它流的数据。
66.举例来说,准许每个写入流在存储器子系统110的媒体203上分配的名字空间(例
如,201)中的区(例如,211)中的lba地址处循序写入,但禁止在lba地址空间中无序写入数据。
67.存储器子系统110的动态数据放置器113标识存储器子系统中可供用于并发写入数据的多个媒体单元(例如,109a到109n)。
68.动态数据放置器113从多个流中选择第一命令以在可供用于写入数据的多个媒体单元中并发执行。
69.响应于第一命令被选择用于在多个媒体单元中并发执行,动态数据放置器113动态地生成和存储媒体布局130的一部分,所述部分从逻辑地址空间中由第一命令标识的逻辑地址映射到多个媒体单元中的存储器单元物理地址。
70.存储器子系统110通过根据所述物理地址将数据存储到存储器单元中来并发执行第一命令。
71.举例来说,在调度第一命令以供执行时,可在存储器子系统110的媒体的存储器单元的子集中进行第二命令的执行。因此,用于执行第二命令的存储器单元的子集不可用于第一命令。在调度第一命令且确定用于第一命令中所用的逻辑地址的媒体布局的所述部分之后,第一命令可在多个媒体单元中并发执行和/或与存储器子系统110的其余媒体单元中的第二命令的执行进程并发执行。
72.举例来说,在标识可供用于执行接下来的命令的多个存储器单元(例如,集成电路裸片)之后,动态数据放置器113可从块组表307标识可用于存储接下来的命令的数据的物理地址。所述物理地址可用于更新针对接下来的命令中使用的lba地址的逻辑到物理块映射303中的对应条目。
73.举例来说,当集成电路裸片(例如,205)能自由写入数据时,动态数据放置器113可确定可写入/编程到所述集成电路裸片(例如,205)中的存储器单元中的区的命令。根据块组表307,动态数据放置器113定位区(例如,205)的条目,定位与集成电路裸片(例如,205)的标识符373相关联的块标识符375和页映射条目标识符377,且使用裸片标识符373、块标识符375和页映射条目标识符377以针对区(例如,211)的命令中使用的lba地址331更新逻辑到物理块映射303中的条目的对应字段。因此,对于lba地址331,可在没有媒体存取冲突的情况下执行区(例如,211)的命令。
74.图5说明动态媒体布局确定的实例。
75.在图5的实例中,说明两个并发写入流420和430。流420具有待写入到集成电路裸片441、443、445、...的存储器单元中的项421、423、425、...、429。流430具有待写入到集成电路裸片441、443、445、...的存储器单元中的项431、433、435、...、439。如果流420的项421和流452的项431经分配以写入到同一裸片(例如,441)中,则会发生冲突,因为裸片(例如,441)无法用于并发写入流420的项421和流430的项431。因此,动态数据放置器(例如,图1、2或3中的113)将并发流420和430的项421和431分配到不同裸片441和443中的页451和454,如图5中所说明。类似地,来自并发流420和430的项423和433被分配到不同裸片443和441中的页453和42。举例来说,当流420的项425被分配到裸片455中的页455时,并发项435经分配以写入到另一裸片中的页中;且裸片445中的页457可被分配到不与流420的项425并发写入/编程的流430的项439。因此,避免了冲突。动态媒体布局相对于裸片441、443、445、...的次序改变项写入的次序。举例来说,按一个次序将流420的项目421到429写入到裸片441、
443、445、...中;且按另一次序将流430的项431到439写入到裸片441、443、445、...中,使得流420和430不会同时存取同一裸片。在图5中,不同流420和430的数据经标注以写入到不同擦除块中。举例来说,用于存储流420的数据项421的裸片441中的页451和用于存储流430的数据项431的裸片441中的页452处于单独的擦除块组中,使得可在不擦除存储流430的数据的页452的情况下擦除流420的页451,且使得可在不擦除存储流420的数据的页451的情况下擦除流430的页452。
76.在本文公开的至少一些实施例中,动态数据放置器113可跨多个集成电路裸片(例如,205到207)和存储器单元平面(例如,221到223)放置数据以用于多遍编程由主机系统120提供的数据,以存储在存储器子系统110中。跨多个集成电路裸片(例如,205到207)和平面(例如,221到223)多遍编程数据的灵活性允许动态数据放置器113改善用于下一原子写入操作的动态分配存储容量与待存储在所述分配存储容量中的数据的大小之间的匹配。改善的匹配可减少或消除对数据编程操作的补零的需要,减少数据在存储器子系统中的缓冲时间,减少耗损放大和存储空间放大,且改善存储性能。
77.举例来说,存储器子系统110可具有nand(“与非”)快闪存储器。原子写入/编程操作将存储器单元的页(例如,241)编程在一起以存储数据。如果待编程/写入到页中的数据的大小小于页的大小,则可将零(或其它值)填补/添加到所述数据以将整个页(例如,241)一起编程。然而,填补的零(或其它值)会降低页(例如,241)的存储容量的利用率,且可能增大耗损放大和存储空间放大。另一方面,如果存储器子系统110接收比可编程到页(例如,241)中的数据更多的数据,则可在存储器子系统110中缓冲接收到的数据的一部分以用于下一原子写入操作。然而,在存储器中缓冲过量数据以等待下一操作可增大要在存储器子系统110中缓冲的数据的时间和量,且因此增大掉电保持电路(power-fail hold up circuit)的容量要求,所述掉电保持电路用于在电力故障事件期间为存储器子系统110的易失性缓冲存储器(例如,119)供电直到缓冲存储器(例如,119)中的数据可清空到非易失性存储器中为止。
78.原子写入操作可在nand装置中以各种方式实施。使用单遍编程技术,nand装置中的原子写入操作可将数据编程/存储到单平面页、双平面页、四平面页或多平面页中。使用多遍编程技术,nand装置中的原子写入操作可将数据以slc(单层级单元)模式编程/存储到页中、以mlc(多层级单元)模式编程/存储到页中、以tlc(三层级单元)模式编程/存储到页中或以qlc(四层级单元)模式编程/存储到页中。在原子写入操作中编程的页可在不同模式中具有不同大小。举例来说,使用多遍编程方法,slc页可具有64千字节(kb)的大小,mlc或tlc页可具有128kb的大小,且qlc页可具有64kb的大小。
79.当不同编程模式的不同写入流的数据页在nand装置中交织时,在nand装置的不同集成电路裸片(例如,205到207)上的nand存储器单元的块(例如,221到223)当中,下一可用页的大小可不同。
80.当nand装置支持多遍编程技术时,给定量的数据可针对不同遍次以存储器页的编程模式和位置的不同组合进行编程。举例来说,当存储器子系统110从主机系统接收192kb数据时,nand装置可经配置以分别在三个集成电路裸片中的三个单平面页上使用三个第一遍slc编程来对数据进行编程,其中每个集成电路裸片执行64kb数据的第一遍slc编程的原子操作。替代地,nand装置可经配置以在一个集成电路裸片中的单平面页上使用第一遍slc
编程且在同一集成电路裸片中或另一集成电路裸片中的另一单平面页上使用第二遍tlc或mlc编程来对数据进行编程。
81.使用各种编程选项,动态数据放置器113可基于集成电路裸片205到207执行数据编程操作的可用性以及可用于执行数据编程操作的集成电路裸片(例如,205)中的下一可用块(例如,241)的数据编程模式(例如,353)来动态地确定集成电路裸片205到207中的数据放置。
82.举例来说,当存储器子系统110从主机系统接收一或多个命令以存储一定量的给定大小的主机数据时,动态数据放置器113对一或多个命令进行排队(例如,在本地存储器119中)且确定媒体布局130的一部分以用于数据在集成电路裸片205到207中的物理放置。当集成电路裸片(例如,205)可用于执行数据编程操作时,动态数据放置器113分配(待从主机系统120检索)的主机数据的一部分以用于集成电路裸片(例如,205)中的数据编程操作。分配到集成电路裸片(例如,205)的数据的量基于可用块(例如,231)中的页(例如,241)的数据编程模式(353)。重复将数据分配到下一可用集成电路裸片的此类操作,直到整个主机数据被分配到一组集成电路裸片(例如,205和207)为止,其中每个集成电路裸片(例如,205和207)用于使用一个原子数据写入操作存储主机数据的一部分。从多个集成电路裸片(例如,205和207)分配的存储容量(例如,页)可经组合以用于多遍编程。响应于物理存储分配的完成,存储器子系统110可分配缓冲空间以用于传送主机数据;且根据动态确定的物理存储分配而将不同数据部分传送到不同电路裸片(例如,205和207)中,使得所述集成电路裸片(例如,205和207)可执行相应数据编程操作以存储其数据部分。
83.图6说明跨集成电路裸片205到207分配以用于数据的多遍编程的块组281。
84.在图6中,集成电路裸片a 205具有平面221到223和块(例如,231到233);且集成电路裸片b 207具有平面261到263和块(例如,271到273)。
85.块组281经分配以用于流。所述流的数据存储在块组281中;且其它流的数据不存储在块组281中。因此,当擦除块组281时,仅擦除所述流的数据。可通过擦除块组281来擦除流的整个数据。
86.可使用图4中说明的块组表307中的条目标识块组281。一般来说,可在媒体203中的集成电路裸片(例如,205、207、...)的子集上分配块组281。对于每个块(例如,271),块组表307中的条目使用裸片标识符(例如,373)标识裸片(例如,207)、使用块标识符(例如,375)标识裸片(例如,207)内的块(例如,271)且使用页映射条目标识符377标识所述块中可供用于存储数据的下一页。页映射条目标识符373标识页映射305中的条目。页映射305中的条目展示块(例如,271)内的页的页标识符351和编程模式353。
87.在块组281中,动态数据放置器113可分配来自一个裸片(例如,205)的可用于编程数据的一个页,且从另一裸片(例如,207)重复所述分配。动态数据放置器113可分配来自不同裸片的单独页以用于多遍编程,且选择用于分配的裸片以减少或消除填补,直到在一次通信中分配好待从主机系统120传送到存储器子系统的整个主机数据为止。
88.在涉及动态数据放置以用于跨集成电路裸片多遍编程数据的方法中,存储器子系统110从主机系统120接收标识待存储于存储器子系统110中的数据的大小的命令。
89.将所述命令排在具有形成于多个集成电路裸片205到207上的存储器单元的存储器子系统110中。
90.基于确定多个集成电路裸片205到207中的多个裸片(例如,205和207)中的每一者可用于执行所述命令的数据编程操作,动态数据放置器113分配所述多个裸片(例如,205和207)中的存储器单元页。
91.动态数据放置器113生成媒体布局130的一部分以至少将所述命令中标识的数据的逻辑地址映射到分配的页。
92.在生成媒体布局的所述部分之后和/或在分配页之后,存储器子系统110响应于所述命令而从主机系统接收数据。
93.存储器子系统110使用多遍编程技术将数据存储到页中,其中原子多遍编程操作可使用多个集成电路裸片中的单独裸片中或单独平面(例如,单个裸片中的两个平面)中的至少两个页来编程数据的至少一部分。举例来说,基于每平面页映射和裸片可用性,从主机系统接收的数据可以灵活方式映射,以用于跨单个或双裸片中的单个平面、双平面或4平面编程。单裸片映射可适应流的最小大小。
94.举例来说,数据的部分可在原子操作中编程到至少两个页中。发指令给裸片中的每一者以执行一个写入操作。不会发指令给所述裸片中的每一者针对所述命令执行重复写入操作。
95.所述至少两个页可包含第一集成电路裸片中的第一页和第二集成电路裸片中的第二页。多遍编程操作可包含对第一页的第一遍编程和对第二页的第二遍编程。第一遍可按第一模式编程,且第二遍按第二模式编程。举例来说,第一模式和第二模式是以下各者中的不同者:单层级单元(slc)模式;多层级单元(mlc)模式;三层级单元(tlc)模式;以及四层级单元(qlc)模式。
96.举例来说,可执行页的分配以最小化使用多遍编程技术编程的页的存储容量与命令中标识的数据的大小之间的失配。
97.任选地,可从经配置以一起擦除的块组中分配页。
98.举例来说,动态数据放置器113可存储页映射305,所述页映射具有各自标识块中的页和用于所述页的存储器单元编程模式(例如,353)的条目。动态数据放置器113可基于页映射305中标识的存储器单元编程模式(例如,353)而分配页。编程模式(例如,353)指示可用页的大小;且动态数据放置器113分配所述页以使分配的存储容量与待从主机系统120接收的数据的大小匹配。
99.在一些实施方案中,处理装置118与存储器子系统110之间的通信信道包含计算机网络,例如局域网、无线局域网、无线个域网、蜂窝式通信网络、宽带高速始终连接的无线通信连接(例如,当前或未来一代的移动网络链路);且处理装置118和存储器子系统可经配置以使用与nvme协议中的那些类似的数据存储管理和使用命令来彼此通信。
100.存储器子系统110通常可具有非易失性存储媒体。非易失性存储媒体的实例包含形成于集成电路中的存储器单元和涂布在硬磁盘上的磁性材料。非易失性存储媒体可在不消耗电力的情况下维护存储在其中的数据/信息。存储器单元可使用各种存储器/存储技术来实施,所述存储器/存储技术例如nand逻辑门、nor逻辑门、相变存储器(pcm)、磁性随机存取存储器(mram)、电阻式随机存取存储器、交叉点存储和存储器装置(例如,3d xpoint存储器)。交叉点存储器装置使用无晶体管存储器元件,所述无晶体管存储器元件中的每一者具有在一起堆叠成列的存储器单元和选择器。存储器元件列经由两个垂直线材层连接,其中
一个层处于存储器元件列上方,且另一层处于存储器元件列下方。可在两个层中的每一层上的一个线材的交叉点处个别地选择每个存储器元件。交叉点存储器装置是快速且非易失性的,且可用作统一存储器池以供处理和存储。
101.存储器子系统(例如,110)的控制器(例如,115)可响应于来自处理装置118的通信而运行固件以进行操作。通常,固件是一种计算机程序,其提供对工程化计算装置的控制、监测和数据操纵。
102.涉及控制器115的操作的一些实施例可使用由控制器115执行的计算机指令(如控制器115的固件)来实施。在一些情况下,硬件电路可用于实施至少一些功能。固件可初始地存储在非易失性存储媒体或另一非易失性装置中,且被加载到易失性dram和/或处理器内高速缓冲存储器中以由控制器115执行。
103.非暂时性计算机存储媒体可用于存储存储器子系统(例如,110)的固件的指令。当指令由控制器115和/或处理装置117执行时,所述指令使得控制器115和/或处理装置117执行上文所论述的方法。
104.在将数据存储到存储器单元中与从存储器单元检索数据之间可能会发生错误。为了促进无错误数据检索,存储器子系统可使用例如低密度奇偶校验(ldpc)码等纠错码对从主机系统接收的数据进行编码,且将经编码数据存储在存储器单元中。对从存储器单元检索的经编码数据进行解码可去除或减少错误。
105.跨不同编程模式的多个存储器页和/或跨快闪存储器中的字线,错误率分布是不均匀的。举例来说,存储器子系统可包含以slc(单层级单元)模式、mlc(多层级单元)模式、tlc(三层级单元)模式、qlc(四层级单元)模式等编程的页。当以slc模式配置时,页中的每个存储器单元存储一个数据位。当以mlc模式配置时,页中的每个存储器单元存储两个数据位。当以tlc模式配置时,页中的每个存储器单元存储三个数据位。当以qlc模式配置时,页中的每个存储器单元存储四个数据位。当存储在单元中的位数目增大时,从单元检索的数据中的错误的可能性增大。块的大多数存储器单元可处于qlc模式,且一些存储器单元处于slc模式和/或tlc模式。当lp、mp、up和xp页用于使用多遍编程技术以qlc模式编程存储器单元时,lp页的解码类似于在具有最高信噪比(s/n)和最低位错误率(ber)的slc模式中对页的解码。mp和up页的解码类似于在具有中等s/n比和中等ber的tlc模式中对页的解码。xp页的解码类似于在具有最低s/n比和最高ber的qlc模式中对页的解码。错误率分布的不均匀性可引起存储器子系统中使用的低密度奇偶校验(ldpc)码的码率过度设计以满足位错误率要求,尤其是当未使用独立nand冗余阵列(rain)技术时。此外,码率过度设计可引起主机数据的扇区大小与存储器页大小之间的未对准,这可导致存储器子系统中的存储器空间的额外浪费。
106.在本文公开的至少一些实施例中,提供具有低奇偶校验成本的双层代码以解决与跨具有不同编程模式的页的错误率分布不非均匀性相关联的问题。举例来说,双层代码可包含根据标称位错误率(例如,0.005)而不是最坏情况位错误率(例如,0.01)配置的第一层ldpc码。第二层纠删码经配置以跨越不同平面中具有不同编程模式(例如,slc、mlc、tlc、qlc)的多平面页中的码字。举例来说,第二层中使用的纠删码的符号大小可以是16字节。迭代ldpc解码和擦除解码方法可用于对从多平面页的存储器单元检索的数据进行解码。在迭代方法中,执行操作以标识缺失符号的位置,使得后续迭代可在经由擦除解码操作再生符
号之后接续。
107.举例来说,第一层可使用码率为0.9的4k ldpc,使得ldpc有效负载大小与ldpc码字大小之间的比率为0.9。第二层可使用具有16字节的符号大小的63 1(或15 1)纠删码,使得可针对每63个(或15个)数据符号生成奇偶校验符号,使得如果64个(或16个)符号中的任一者缺失,则可根据其余63个(或15个)符号恢复或计算出缺失符号。净数据效率是第一层的码率和第二层的码率的乘积(例如,对于63 1擦除编码为0.9乘以63/64,或对于15 1擦除编码为0.9乘以15/16)。作为第一层的码率与第二层的码率的乘积的净数据效率可预期高于单个过度设计的ldpc码的码率。
108.图7说明跨多个平面的双层代码的布置。
109.举例来说,可在存储器子系统(例如,110)的一或多个集成电路裸片(例如,205到207)中的不同平面上以不同模式编程页501、503、505和507。
110.举例来说,页501可按slc模式;页503可按mlc或tlc模式;页505可按tlc模式;且页507可按qlc模式。任选地,此组页501到507可作为多平面页经由跨多个平面的多遍编程操作进行编程。
111.在图7中,每行表示使用ldpc码编码的预定大小(例如,4kb)的有效负载的数据单元。举例来说,可根据ldpc码对数据符号s1_1、s1_2到s1_n进行编码以生成奇偶校验数据p1;可根据ldpc码对数据符号s2_1、s2_2到s2_n进行编码以生成奇偶校验数据p2;且可根据ldpc码对数据符号s15_1、s15_2到s15_n进行编码以生成奇偶校验数据p15。通常,可根据ldpc码对数据符号sm_1、sm_2到sm_n进行编码以生成奇偶校验数据pm,其中m=1、2、...m。图7说明其中m=15的实例。数据符号sm_1、sm_2到sm_n形成数据单元,其具有等于如用于ldpc编码的有效负载的预定大小(例如,4kb)的总大小。
112.可使用纠删码对跨数据单元的数据符号进行编码以生成奇偶校验符号。举例来说,可使用15 1纠删码对数据符号s1_1、s2_1到s15_1进行编码以生成奇偶校验符号ps_1,使得如果16个符号s1_1、s2_1到s15_1以及ps_1中的任一者缺失,则可根据其余的15个符号计算出缺失的符号。替代地,30 2纠删码可用于根据30个数据符号s1_1、s2_1到s15_1和s2_1、s2_2到s15_2生成两个奇偶校验符号ps_1和ps_2。以类似于对从主机系统120接收的数据符号单元(例如,sm_1、sm_2到sm_n)进行编码的方式,可对具有等于用于ldpc码的有效负载的预定大小(例如,4kb)的总大小的奇偶校验符号ps_1、ps_2到ps_n的集合进行编码以生成标记为pps的奇偶校验数据。因此,可根据ldpc码使用ldpc奇偶校验数据pps针对奇偶校验符号ps_1、ps_2到ps_n执行数据恢复。
113.图8说明使用双层代码对数据进行编码的方法。图8的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,图8的方法至少部分地由图1的双层编码器/解码器114执行。尽管以特定顺序或次序来展示,但除非另有指定,否则可修改过程的次序。因此,所说明实施例仅应理解为实例,且所说明过程可按不同次序执行,且一些过程可并行地执行。另外,在各种实施例中可省去一或多个过程。因此,并非每个实施例中都需要所有过程。其它过程流也是可能的。
114.举例来说,可响应于动态数据放置器113基于跨一或多个媒体单元(例如,集成电路裸片)中的多个平面进行多遍编程的可用性而分配媒体单元来执行图8的方法。在一些实
施例中,图8的方法可用于没有动态数据放置器113的存储器子系统。
115.在框521处,双层编码器/解码器114根据用于纠错码(例如,低密度奇偶校验码)的预定有效负载大小而将从主机系统接收的数据拆分成数据单元。举例来说,所述数据单元可各自为4kb的大小以用于ldpc编码。
116.在框523处,双层编码器/解码器114使用纠错码对有效负载大小的每个相应数据单元进行编码以生成第一层的奇偶校验数据(例如,图7中的p1、p2到p15)。
117.在框525处,双层编码器/解码器114使用纠删码对数据单元内的符号进行编码。
118.在框527处,双层编码器/解码器114根据对所述符号(例如,图7中的sm_1、sm_2到sm_n,其中m=1、2、...、15)进行编码来计算出双层代码的第二层的奇偶校验符号(例如,图7中的ps_1、ps_2到ps_n)。纠删码允许基于奇偶校验符号再生缺失符号。举例来说,可针对跨位于不同平面上的不同页501到507的符号执行擦除编码。
119.在框529处,双层编码器/解码器114使用纠错码对奇偶校验符号(例如,图7中的ps_1、ps_2到ps_n)进行编码以生成奇偶校验符号的奇偶校验数据(例如,图7中的pps)。
120.举例来说,可根据所述预定有效负载大小来对奇偶校验符号进行分组以用于使用纠错码进行编码以生成奇偶校验符号的奇偶校验数据。
121.在使用纠错码和纠删码进行编码之后,存储器子系统可将数据单元的符号、第一层的奇偶校验数据、奇偶校验符号和奇偶校验符号的奇偶校验数据存储在一或多个集成电路裸片中的单独平面中。
122.举例来说,在奇偶校验符号当中,可基于数据单元的符号的存储在未存储相应奇偶校验符号的平面中的一部分来生成存储在平面中的每个相应奇偶校验符号。举例来说,可使用多遍编程操作将数据单元的符号的部分和奇偶校验符号存储在单独的平面中。
123.举例来说,所述多遍编程操作可包含第一平面上的第一页的第一遍编程和第二平面上的第二页的第二遍编程。可经由以不同模式编程单独平面,所述不同模式例如单层级单元(slc)模式、多层级单元(mlc)模式、三层级单元(tlc)模式和四层级单元(qlc)模式中的不同模式。
124.图9说明对使用双层代码编码的数据进行解码的方法。图9的方法可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,图9的方法至少部分地由图1的双层编码器/解码器114执行。尽管以特定顺序或次序来展示,但除非另有指定,否则可修改过程的次序。因此,所说明实施例仅应理解为实例,且所说明过程可按不同次序执行,且一些过程可并行地执行。另外,在各种实施例中可省去一或多个过程。因此,并非每个实施例中都需要所有过程。其它过程流也是可能的。
125.举例来说,在跨一或多个媒体单元(例如,集成电路裸片)中的多个平面使用多遍编程技术将经编码数据存储到存储器单元中且接着在读取存储器单元时可能出现错误的情况下从存储器单元检索所述经编码数据之后,可执行图9的方法以恢复使用图8的方法编码的数据。
126.在框541处,双层编码器/解码器114基于纠错码(例如,低密度奇偶校验码)对从存储器单元检索的数据进行解码。
127.在框543处,双层编码器/解码器114确定根据纠错码(例如,ldpc)进行的解码是否
成功。当使用纠错码(例如,ldpc)生成的所有码字可经由奇偶校验数据(例如,图7中的p1)成功地解码和/或恢复时,原始数据(经编码数据基于所述原始数据而生成、存储且接着从存储器单元中检索)被成功恢复。
128.如果无法根据纠错码(例如,ldpc)成功地解码一些码字,则在框545处,双层编码器/解码器114标识无法经由纠错码成功地解码的符号。ldpc码中的未满足奇偶校验可用于标识ldpc码字中无法可靠地解码的位。所标识的符号可被视为缺失/被擦除。接着,可将纠删码用于对那些少数不明确的符号进行解码。可执行根据纠删码的解码以恢复缺失/被擦除的符号。
129.在框547处,双层编码器/解码器114基于纠删码来恢复标识的符号。
130.恢复的符号可用于替代从存储器单元检索的对应符号,且经由纠错码(例如,低密度奇偶校验码)进一步解码以进行数据恢复。
131.在框549处,双层编码器/解码器114确定是否执行更多迭代。举例来说,如果已执行小于阈值数目(例如,4)的迭代,则双层编码器/解码器114可针对另一迭代重复操作541到547以恢复数据。在已执行阈值数目(例如,4)的迭代且解码仍不成功之后,双层编码器/解码器114可报告数据恢复/解码失败。
132.图10说明计算机系统600的实例机器,在所述计算机系统内可执行指令集以用于使所述机器执行本文中所论述的任何一或多个方法。在一些实施例中,计算机系统600可对应于主机系统(例如,图1的主机系统120),所述主机系统包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行动态数据放置器113和/或双层编码器/解码器114的操作(例如,执行指令以执行对应于参考图1到9所描述的动态数据放置器113和/或双层编码器/解码器114的操作)。在替代实施例中,机器可连接(例如联网)到lan、内联网、外联网和/或互联网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的能力进行操作。
133.所述机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝式电话、网络设备、服务器、网络路由器、交换机或桥接器,或能够(循序或以其它方式)执行指定待由所述机器采取的动作的指令集的任何机器。此外,尽管说明了单个机器,但还应认为术语“机器”包含个别地或共同地执行一组(或多组)指令以执行本文所论述的任何一或多个方法的任何机器集合。
134.实例计算机系统600包含处理装置602、主存储器604(例如,只读存储器(rom)、快闪存储器、例如同步dram(sdram)或rambus dram(rdram)等动态随机存取存储器(dram)、静态随机存取存储器(例如,sram)等)以及数据存储系统618,它们经由总线630(其可包含多个总线)彼此通信。
135.处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602还可以是一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理装置602经配置以执行指令626以用于执行本文所论述的操作和步骤。计算机系统600还可包含网络接口装置608以通过网
络620通信。
136.数据存储系统618可包含机器可读存储媒体624(也称为计算机可读媒体),其上存储有体现本文所描述的任何一或多个方法或功能的一或多组指令626或软件。指令626还可在其由计算机系统600执行的期间完全或至少部分地驻存在主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618和/或主存储器604可对应于图1的存储器子系统110。
137.在一个实施例中,指令626包含用以实施对应于动态数据放置器113和/或双层编码器/解码器114(例如,参考图1到9所描述的动态数据放置器113和/或双层编码器/解码器114)的功能性的指令。尽管在实例实施例中将机器可读存储媒体624展示为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一组或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行且使机器执行本公开的任何一或多个方法的指令集的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体以及磁性媒体。
138.已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域中的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。算法在此处以及通常被认为是产生期望的结果的操作的自洽序列。所述操作是要求对物理量进行物理操控的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电信号或磁信号的形式。有时,已证明主要出于通用的原因将这些信号称为位、值、元素、符号、字符、项、数字等是方便的。
139.然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便标签。本公开可指计算机系统或类似电子计算装置的动作和过程,其操控且将计算机系统的寄存器和存储器内表示为物理(电子)量的数据变换成类似地表示为计算机系统存储器或寄存器或其它此类信息存储系统内的物理量的其它数据。
140.本公开还涉及用于执行本文中的操作的设备。此设备可出于既定目的而专门构造,或其可包含由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘(包含软盘、光盘、cd-rom和磁性光盘)、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡或适合存储电子指令的任何类型的媒体,各个媒体耦合到计算机系统总线。
141.本文中呈现的算法和显示在本质上不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或可证明构建更专用设备以执行所述方法是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施本文中所描述的本公开的教示。
142.本公开可提供为计算机程序产品或软件,其可包含机器可读媒体,所述机器可读媒体上存储有指令,所述指令可用于编程计算机系统(或其它电子装置)以执行根据本公开的过程。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、快闪存储器装置等。
143.在此描述中,为简化描述,各种功能和操作可被描述为由计算机指令执行或引起。然而,所属领域的技术人员将认识到,此类表达的意图在于,所述功能因一或多个控制器或处理器(例如,微处理器)执行计算机指令而产生。替代地或组合地,所述功能和操作可在存在或不存在软件指令的情况下使用专用电路系统实施,例如使用专用集成电路(asic)或现场可编程门阵列(fpga)来实施。可在无软件指令的情况下或结合软件指令使用硬接线电路系统实施实施例。因此,技术既不限于硬件电路系统和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定来源。
144.在前述说明书中,已参考其特定实例实施例描述了本公开的实施例。应显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和附图。
再多了解一些

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

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

相关文献