1.本公开大体上涉及存储器子系统中的错误校正,且更具体来说,涉及在存储器装置中通过校正子计算进行错误校正。
背景技术:2.存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可使用存储器子系统将数据存储在存储器装置处并且从存储器装置检索数据。
技术实现要素:3.根据本公开的一方面,提供一种方法。所述方法包括:在存储多个经编码数据的存储器装置中产生用于来自所述多个经编码数据的第一经编码数据的第一校正子;将所述第一经编码数据和所述第一校正子发射到与所述存储器装置耦合的控制器;在所述存储器装置中产生用于来自所述多个经编码数据的第一和第二经编码数据的第二校正子,其中所述第一经编码数据和所述第二经编码数据根据错误校正码相互关连;和将所述第二校正子发射到所述控制器但不发射所述第二经编码数据,其中所述控制器将基于所述第一校正子、所述第二校正子或其组合中的至少一个来将所述第一经编码数据解码。
4.根据本公开的另一方面,提供一种非暂时性计算机可读存储媒体。所述非暂时性计算机可读存储媒体包括当由处理装置执行时致使所述处理装置进行以下操作的指令:在存储多个经编码数据的存储器装置中产生用于来自所述多个经编码数据的第一经编码数据的第一校正子;将所述第一经编码数据和所述第一校正子发射到与所述存储器装置耦合的控制器;在所述存储器装置中产生用于来自所述多个经编码数据的第一和第二经编码数据的第二校正子,其中所述第一经编码数据和所述第二经编码数据根据错误校正码相互关连;和将所述第二校正子发射到所述控制器但不发射所述第二经编码数据,其中所述控制器将基于所述第一校正子、所述第二校正子或其组合中的至少一个来将所述第一经编码数据解码。
5.根据本公开的另一个方面,提供一种系统。所述系统包括:存储多个经编码数据的存储器装置,所述存储器装置包含:本地媒体控制器,其进行以下操作:在存储多个经编码数据的存储器装置中产生用于来自所述多个经编码数据的第一经编码数据的第一校正子;将所述第一经编码数据和所述第一校正子发射到与所述存储器装置耦合的控制器;在所述存储器装置中产生用于来自所述多个经编码数据的第一和第二经编码数据的第二校正子,其中所述第一经编码数据和所述第二经编码数据根据错误校正码相互关连;和将所述第二校正子发射到所述控制器但不发射所述第二经编码数据,其中所述控制器将基于所述第一校正子、所述第二校正子或其组合中的至少一个来将所述第一经编码数据解码。
附图说明
6.根据下文给出的详细描述和本公开的各种实施例的附图,将更充分地理解本公开。然而,图式不应视为将本公开限制于具体实施例,而是仅用于解释和理解。
7.图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
8.图2是根据一些实施例的可在存储器装置中用以计算校正子的实例代码的框图。
9.图3是根据本公开的一些实施例的用以根据从存储器装置接收的一或多个校正子来校正数据的实例方法的流程图。
10.图4是根据本公开的一些实施例的在存储器装置中执行以用于响应于对数据的请求而发射经编码数据和校正子的实例方法的流程图。
11.图5是根据本公开的一些实施例的用以根据从存储器装置接收的一或多个校正子来校正数据的另一实例方法的流程图。
12.图6是根据本公开的一些实施例的在存储器装置中执行以用于响应于对数据的请求而发射经编码数据和校正子的另一实例方法的流程图。
13.图7是其中可操作本公开的实施例的实例计算机系统的框图。
具体实施方式
14.本公开的方面针对于在存储器装置中通过校正子计算进行错误校正。存储器子系统可为存储装置、存储器模块,或存储装置与存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个组件(例如存储数据的存储器装置)的存储器子系统。主机系统可提供将存储在存储器子系统处的数据,且可请求将从存储器子系统检索的数据。
15.存储器装置可以为非易失性存储器装置。非易失性存储器装置为一或多个裸片的封装。非易失性存储器装置的一个实例为“与非”(nand)存储器装置。下文结合图1描述非易失性存储器装置的其它实例。封装中的裸片可指派到一或多个信道以用于与存储器子系统控制器通信。每一裸片可由一或多个平面组成。平面可分组为逻辑单元(lun)。对于一些类型的非易失性存储器装置(例如,nand存储器装置),每一平面由物理块集组成,所述物理块是用于存储数据的存储器单元的群组。单元是存储信息的电子电路。
16.取决于单元类型,单元可存储一或多个二进制信息位,且具有与所存储的位数相关的各种逻辑状态。逻辑状态可以由二进制值(例如,“0”和“1”或这类值的组合)表示。存在各种类型的单元,例如单层级单元(slc)、多层级单元(mlc)、三层级单元(tlc)和四层级单元(qlc)。举例来说,slc可存储一个信息位且具有两种逻辑状态。
17.低密度奇偶校验(ldpc)码是广泛采用且有效的错误校正码。ldpc码使用硬信息和软信息来校正错误。软信息指示给定位的当前值可被视为是具有高可靠性还是低可靠性。然而,依赖于软信息的代码可受高可靠性错误(hre)困扰。举例来说,当一开始就错误地写入数据时,ldpc解码器可将错误位视为具有高可靠性,原因是软信息指示干净读取。hre降低解码器的错误校正能力。因此,使用软信息(可靠性信息)的ecc解码器易发生hre,所述hre在存储器系统中是由于写入错误或其它机制而引起。
18.即使在存在高可靠性错误的情况下,乘积码仍可提供高错误校正能力。阶梯码是可实施于前向错误校正系统中的一种乘积码类型。阶梯码包含以预定模式布置的数个分
量,例如块。每一分量可包含数据位和奇偶校验位。在一些阶梯码中,每一个别线和每一个别列是包括数据位和奇偶校验位的单一码字。在其它阶梯码中,水平码字可横跨多个列且竖直分量可横跨多个行。在阶梯码中,数据横跨相邻分量以根据错误校正码(ecc)形成有效码字。列和行的奇偶校验位基于基本ecc,例如博塞-乔杜里-霍昆格姆(bose-chaudhuri-hocquenghem,bch)码。因为代码的分量以预定模式布置,所以码字可在水平和竖直方向两者上形成。也就是说,对于分量中的任何给定数据位,位是水平码字和竖直码字的部分。
19.根据阶梯码经编码的数据是经双重编码并且可使用经编码数据的奇偶校验位和/或使用与其它经编码数据共享的奇偶校验位各自进行校正。阶梯码的解码器依赖于硬信息且因此不易发生高可靠性错误。阶梯码的解码器使用一个位的经编码数据的校正能力对于低错误率来说是足够了。可使用多于一个的位来解码一个位的经编码数据以校正中等错误率到高错误率。阶梯码通过为每个经编码位使用更多信息位来达成高原始位错误率(rber)校正。然而,基于用于每一位的经编码数据的多个位对这些阶梯码的解码在一些存储器子系统中使用这些代码是不切实际的。在示范性阶梯码中,对于每一位的经编码数据,使用3个位来解码所述位。当使用此阶梯码编码存储器子系统中的数据时,对于n kb的数据(例如,4kb)的每个主机请求,从存储器装置检索(3
×
n)kb的数据(例如,12kb)来解码经编码数据。举例来说,对于具有中等错误率到高错误率的ecc,可检索额外数据来解码经编码数据。这会在存储器子系统中引起严重的性能降级。
20.本公开的方面通过改进用乘积码对经编码数据的解码来解决以上和其它缺陷。本文中展现的实施例执行用于存储器装置中的经编码数据的校正子产生并且将校正子发射到错误校正器以用于解码经编码数据。本文中展现的实施例允许使用多个使用基于校正子的解码器经解码并且具有对抗hre的稳健性的ecc。在本文中所描述的实施例中,响应于对数据的请求,存储器装置传送经编码数据和用于经编码数据的一或多个校正子,而不传送供乘积码用以产生所述一或多个校正子的额外经编码数据。本文中所描述的实施例通过在达成良好校正能力和对抗hre的稳健性的同时减少响应于请求而从存储器装置发射的数据量,以此显著提高存储器子系统的性能。
21.图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此类的组合。
22.存储器子系统110可为存储装置、存储器模块,或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储(ufs)驱动器、安全数字(sd)卡和硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小型dimm(so-dimm),和各种类型的非易失性双列直插式存储器模块(nvdimm)。
23.计算系统100可为计算装置,例如台式计算机、手提式计算机、服务器、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、具有物联网(iot)功能的装置、嵌入式计算机(例如,交通工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
24.计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系
统110的主机系统120的一个实例。如本文中所使用,“耦合到”或“与
……
耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如不具有介入组件),无论有线或无线,包含例如电连接、光学连接、磁连接等连接。
25.主机系统120可包含处理器芯片组和由所述处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如,nvdimm控制器)以及存储协议控制器(例如,pcie控制器、sata控制器)。主机系统120使用存储器子系统110,例如,将数据写入到存储器子系统110以及从存储器子系统110读取数据。
26.主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(sata)接口、外围组件互连高速(pcie)接口、通用串行总线(usb)接口、光纤信道、串行附接scsi(sas)、小型计算机系统接口(scsi)、双数据速率(ddr)存储器总线、双列直插式存储器模块(dimm)接口(例如,支持双数据速率(ddr)的dimm套接接口)、开放nand快闪接口(onfi)、双数据速率(ddr)、低功率双数据速率(lpddr)或任何其它接口。物理主机接口可用于在主机系统120与存储器子系统110之间发射数据。当存储器子系统110通过pcie接口与主机系统120耦合时,主机系统120可进一步利用nvm高速(nvme)接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据和其它信号的接口。图1说明作为实例的存储器子系统110。一般来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
27.存储器装置130、140可以包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为但不限于随机存取存储器(ram),例如动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
28.非易失性存储器装置(例如,存储器装置130)的一些实例包含“与非”(nand)型快闪存储器和就地写入存储器,例如三维交叉点(“3d交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列而基于体电阻的改变来进行位存储。另外,与许多基于闪存的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。nand型快闪存储器包含例如二维nand(2d nand)和三维nand(3d nand)。
29.虽然描述了非易失性存储器装置,例如3d交叉点非易失性存储器单元阵列和nand型快闪存储器(例如,2d nand、3d nand),但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻性随机存取存储器(rram)、基于氧化物的rram(oxram)、或非(nor)快闪存储器,以及电可擦除可编程只读存储器(eeprom)。
30.存储器子系统控制器115(或为简单起见,控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据和其它这类操作(例如,响应于由控制器115在命令总线上调度的命令)。存储器子系统控制器115可包含硬件,如一或多个集成电路和/或离散组件、缓冲存储器,或其组合。硬件可包含具有专用(即,硬译码)
逻辑的数字电路以执行本文所描述的操作。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等),或另一适当的处理器。
31.存储器子系统控制器115可包含处理装置117(处理器),其被配置成执行存储于本地存储器119中的指令。在所说明实例中,存储器子系统控制器115的本地存储器119包含嵌入式存储器,其被配置成存储指令以用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程以及例程。
32.在一些实施例中,本地存储器119可以包含存储器寄存器,其存储存储器指针、提取的数据等。本地存储器119还可以包含用于存储微码的只读存储器(rom)。虽然图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一个实施例中,存储器子系统110不包含存储器子系统控制器115,且可替代地依赖于外部控制(例如,由外部主机提供,或由与存储器子系统110隔开的处理器或控制器提供)。
33.一般来说,存储器子系统控制器115可从主机系统120接收命令或操作并且可将所述命令或操作转换成指令或适当命令以实现对存储器装置130和/或存储器装置140的所要存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ecc)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(lba)、名字空间)与物理地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115可另外包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收的命令转换成存取存储器装置130和/或存储器装置140的命令,以及将与存储器装置130和/或存储器装置140相关联的响应转换成用于主机系统120的信息。
34.存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如,dram)和可从存储器子系统控制器115接收地址且解码所述地址以存取存储器装置130的地址电路系统(例如,行解码器和列解码器)。
35.在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以在存储器装置130的一或多个存储器单元上执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,其为与同一存储器装置封装内进行媒体管理的本地控制器(例如,本地控制器135)组合的原始存储器装置。受管理存储器装置的实例是受管理nand(mnand)装置。
36.存储器子系统110包含实施在存储器装置中通过校正子计算进行错误校正的方法的校正子计算组件113和错误校正器114。在一些实施例中,控制器115包含错误校正器114的至少一部分。举例来说,控制器115可包含处理器117(处理装置),其被配置成执行存储在本地存储器119中的指令以用于执行本文中所描述的操作。在一些实施例中,错误校正器114为主机系统120、应用程序或操作系统的部分。存储器装置130和/或存储器装置140包含校正子计算组件113。在一个实施例中,本地媒体控制器135包含校正子计算组件113。存储器装置可包含处理器(处理装置),其被配置成执行指令以用于执行本文所描述的校正子计算组件113的操作。
37.在一些实施方案中,错误校正器114可操作以对存储于存储器装置(例如,编码器
和/或解码器)中的数据进行编码和解码。当从存储器装置检索到数据时,使用错误校正码(ecc)对数据进行编码允许错误数据位的校正。举例来说,错误校正器114可对从主机系统120接收到的数据进行编码,且将所述数据和奇偶校验位作为码字存储于存储器装置130中。错误校正器114可进一步可操作以在将经校正数据发射到主机系统120之前对存储于存储器装置130中的数据进行解码以识别和校正数据的错误位。尽管说明为可执行对数据的编码和解码的单一组件,但错误校正器114可提供为单独组件。在一些实施例中,错误校正器114可操作以根据乘积码(例如阶梯码)来编码数据。错误校正器114可操作以接收通过校正子计算组件113在存储器装置130或140中产生的校正子。错误校正器114可操作以基于校正子对存储于存储器装置130中的码字进行解码。错误校正器114将经校正数据发射到主机系统120。
38.如下文进一步详细描述,校正子计算组件113可操作以产生用于经编码数据的一或多个校正子。校正子计算组件113例如响应于来自主机系统120的对数据的请求而将校正子和经编码数据发射到错误校正器114。校正子计算组件113发射额外校正子但没有相关联的额外经编码数据,例如不被主机系统120请求但用以产生用于被主机系统120请求的数据的奇偶校验位的数据。错误校正器114可操作以基于从校正子计算组件113接收的一或多个校正子来解码经编码数据。
39.图2是根据一些实施例的可用以计算存储器装置中的校正子的实例代码200的框图。代码200可例如由错误校正器114产生并且存储于存储器装置130或140中。代码200是乘积码,且在所说明实例中,具体地是阶梯码。代码200大体上包含初始分量块202和数个分量的经编码数据204(1)-(n)。初始分量202可包含其中的每一位设置为预定值的位阵列。举例来说,初始分量202中的位中的每一个可设置为逻辑0。替代地,可使用其它已知值。经编码数据204(1-n)中的每一个包含多个数据位210-(1-n)和奇偶校验位212-(1-n)。数据位210和奇偶校验位212以及初始分量202的位可布置成代码200的水平码字和竖直码字。
40.在所说明实例中,经编码数据204(1-n)和初始分量中的每一个是m
×
m位的块。例如经编码数据204-1的块包含m
×
(m-r)个数据位210-1和m
×
r个奇偶校验位212-1。根据特定译码方案,例如bch代码,经编码数据204-1的数据位210-1和奇偶校验位212-1可与另一经编码数据块(例如,经编码数据204-2)的数据位和奇偶校验位组合以形成多个码字。代码200包含多个码字,例如竖直码字220-1和水平码字220-2。码字包含多个数据位和多个奇偶校验位。码字可为横跨两个代码块的水平码字或竖直码字。举例来说,码字220-1横跨块204-1和块204-2,且码字220-2横跨块204-2和204-3。码字的数据位可包含单一列的位或单一行的位。替代地或另外,数据位可被块的多个行和列卷包。虽然图2为方便起见在每一行的末端示出奇偶校验位,但所属领域的技术人员将了解,奇偶校验位可定位于码字中的任一点处。在各种实施例中,可基于性能需求调整块的特定大小以及阶梯码中的块数目。举例来说,具有严格定时需求的实施例与具有较宽松定时需求的实施例相比可以较小数目个块予以实施。通过减少块数目,可以减少解码时间。在各种实施例中,代码200的特定模式可不同于图2中所说明的模式。可使用其中代码的两个或更多个分量相互关连的多个乘积码模式。在一些实施例中,代码的两个分量可共享奇偶校验位。在一些实施例中,代码的两个分量可具有横跨两个分量的码字。
41.图2包含关于经编码数据计算的校正子。校正子计算组件113针对代码200的经编
码数据产生一或多个校正子,即校正子-1、
……
、校正子-n。在一个实施例中,在从主机系统120接收到对数据的请求之后,存储器装置130即刻将例如经编码数据204-4的经编码数据发射到错误校正器114。存储器装置130另外发射用于经编码数据的校正子即校正子-4。存储器装置130可将一或多个额外校正子发射到错误校正器114。举例来说,存储器装置130可发射校正子-3、校正子-2和校正子-1中的一个或多个校正子。存储器装置130发射额外校正子而不发射其相关联的经编码数据。举例来说,当发射校正子-3时,存储器装置130不发射经编码数据204-3,当发射校正子-2时,不发射经编码数据204-2,并且当发射校正子-1时,不发射经编码数据204-1。错误校正器114接收经编码数据204-4和校正子-4并且尝试基于此校正子解码经编码数据204-4。在一些实施例中,当204-3不存在错误时,基于校正子-4对经编码数据204-4的解码成功。将经编码数据204-4解码可包含检测数据位中的错误并且基于校正子校正数据位的错误。在一些实施例中,错误校正器114可能无法基于校正子-4来将经编码数据204-4解码,且将经编码数据解码需要额外的校正子。当基于校正子-4对经编码数据204-4的解码失败时,错误校正器114反复尝试在每一重复时基于不同的校正子集来将经编码数据204-4解码。当解码成功或没有额外的校正子可用时,停止经编码数据204-4的重复解码。举例来说,错误校正器114可仅基于校正子-4将经编码数据204-4解码。在确定解码已失败之后,错误校正器114即刻基于校正子-4和校正子-3(后向方向)或基于校正子-4和校正子-5(前向方向)来将经编码数据204-4解码。在下文参考图3以额外细节描述使用多个校正子解码数据的过程。如果解码成功,即,数据位经校正,那么错误校正器停止解码并且响应于所述请求将经校正数据位发送到主机系统。当解码失败时,错误校正器114继续基于校正子-4、校正子-3和校正子-2将经编码数据204-4解码。如果解码成功,即,数据位经校正,那么错误校正器114停止解码并且响应于所述请求将经校正数据位发送到主机系统。当解码失败时,错误校正器114继续基于校正子-4、校正子-3、校正子-2和校正子-1将经编码数据204-4解码。此重复性过程可重复直到已经在解码中使用了代码200的所有校正子(例如,校正子-1、
……
、校正子-n)或直到经编码数据的解码成功为止。在一些实施例中,当基于先前发射的校正子对经编码数据的解码失败时,存储器装置130可发射额外校正子。在其它实施例中,存储器装置130可与请求的经编码数据一起发射代码200的所有校正子。举例来说,当经编码数据204-4发送到控制器时,与经编码数据204-4一起发射校正子-1到校正子-n,但不发射额外经编码数据,例如204-1、204-2、204-3、204-5、
……
、204-n。
42.虽然参考代码200描述本文中的实施例,但可使用其它代码。因此,所说明的代码应理解为示范性代码且可在所描述的错误校正器114和/或校正子计算组件113中使用可基于校正子解码的其它代码。
43.图3是根据本公开的一些实施例的用以根据从存储器装置接收的一或多个校正子来校正数据的实例方法300的流程图。方法300可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法300是由图1的错误校正器114执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
44.在操作305处,处理装置接收对存储于例如存储器装置130或存储器装置140的存储器装置中的数据的请求。在一些实施例中,所述请求是来自主机系统120的读取操作。在一些实施例中,所述请求是对数据块(例如,块204-4的数据位)的请求。
45.在操作310处,处理装置响应于所述请求而从存储器装置接收经编码数据,例如块204-4。在操作315处,处理装置接收校正子,例如校正子-4。在一些实施例中,处理装置可接收经编码数据204-4和两个或更多个校正子,例如校正子-4以及用于代码200的经编码数据的一或多个校正子,例如校正子-1、校正子-2、校正子-3等,或校正子-5、校正子-6、校正子-7等。在一些实施例中,处理装置接收额外校正子,例如校正子-3,但不接收其相关联的经编码数据,例如经编码数据204-3。在一些实施例中,当基于先前接收到的校正子对经编码数据的解码失败时,可接收额外校正子。举例来说,处理装置可接收经编码数据204-4和校正子-4并且稍后在基于校正子-4对经编码数据204-4的解码失败时请求并接收校正子-3。替代地,处理装置可接收经编码数据204-4、校正子-4和额外校正子而不管基于校正子-4对经编码数据204-4的解码是否失败。
46.在操作320处,处理装置基于经编码数据的校正子将经编码数据解码。举例来说,处理装置可基于校正子-4将经编码数据204-4解码。在一些实施例中,处理装置可基于校正子-4并且基于一或多个额外校正子(例如校正子-1、校正子-2或校正子-3等)将经编码数据204-4解码。在一些实施例中,处理装置多次重复地将经编码数据204-4解码,其中每次重复是基于校正子与不同的额外校正子的组合来执行。举例来说,处理装置可基于校正子-4解码经编码数据204-4,并且在操作325处,确定基于此校正子的解码是否成功。在确定解码成功之后,操作流程即刻移动到操作330。替代地,在确定解码不成功之后,操作流程即刻移动到操作315或操作320。
47.在一些实施例中,在确定解码不成功之后,操作流程即刻移动到操作315,即处理装置接收额外校正子。举例来说,在确定基于校正子-4对经编码数据204-4的解码失败之后,处理装置即刻接收校正子-3。在一些实施例中,在接收到额外校正子之前,处理装置可将对额外校正子的请求发射到存储器装置130。处理装置基于校正子-3重复解码操作320。处理装置可基于校正子-3和校正子-4解码经编码数据204-4。举例来说,处理装置可使用校正子-3检测经编码数据204-3中的错误。处理装置基于所述检测调整校正子-4。处理装置检测错误并且基于经调整校正子-4来校正经编码数据204-4的错误。流程随后移动到操作325。
48.在其它实施例中,在确定解码不成功(即,解码失败)之后,操作流程即刻移动到操作320,即处理装置如上文所描述基于校正子-3重复解码操作325。在这些实施例中,跳过操作315,原因是处理装置可能已经接收到校正子-3。处理装置可基于额外校正子重复经编码数据204-4的解码直到已经使用了所有校正子或解码成功为止。举例来说,处理装置可使用校正子-1检测经编码数据204-1中的错误(即,错误方位)。处理装置基于检测到经编码数据204-1中的错误来调整校正子-2。处理装置基于经调整校正子-2检测并校正经编码数据204-2的错误。处理装置基于检测到经编码数据204-2中的错误来调整校正子-3。处理装置基于经调整校正子-3检测经编码数据204-3的错误并且基于检测到经编码数据204-3中的错误来调整校正子-4。处理装置使用经调整校正子-4检测错误并且校正经编码数据204-4的错误。在一些实施例中,处理装置可使用来自前向方向的额外校正子(例如,校正子-5(未
说明)、
……
、校正子-n等)以类似方式检测错误并校正经编码数据204-4。可重复操作320-325直到经编码数据的解码成功或使用了所有可用校正子用于解码经编码数据为止。在确定解码成功或不再有校正子可用之后,流程即刻移动到操作330。
49.在操作330处,处理装置发射经校正数据(或在处理装置不能够解码经编码的情况下的失败指示)。举例来说,处理装置可响应于所接收的请求而将经校正数据发射到主机系统120。
50.图4是根据本公开的一些实施例的在存储器装置中执行以用于响应于对数据的请求而发射经编码数据和校正子的实例方法400的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法400是由图1的校正子计算组件113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
51.在操作405处,处理装置在存储器装置130或140中产生用于经编码数据的校正子。举例来说,处理装置响应于对经编码数据204-4的请求而产生校正子-4。经编码数据是来自形成代码(例如代码200)的多个经编码数据的分量。经编码数据包含例如210-4和奇偶校验位212-4等数据位。校正子的产生是基于数据位210-4并且基于奇偶校验位212-4。校正子的产生取决于用以编码数据的基本ecc。在一些实施例中,处理装置通过执行来自数据位210-4的数据位与奇偶校验位212-4的一或多个xor操作来产生校正子。在一些实施例中,例如对于代码200,处理装置通过执行来自数据位210-4的数据位、奇偶校验位212-4和另一块的数据位(例如数据位210-3)的xor操作来产生校正子,原因是两个块204-3和204-4在竖直方向上共享奇偶校验位。xor操作中使用的数据位由作为代码200用于编码数据的ecc确定。
52.在操作410处,处理装置将经编码数据和校正子发射到错误校正器114。举例来说,处理装置发射经编码数据204-4和校正子-4同时省略代码200的其它经编码数据。在接收到校正子和经编码数据之后,错误校正器114即刻尝试基于校正子-4将经编码数据204-4解码。在一些实施例中,错误校正器114如上文参考图3所描述地将经编码数据204-4解码。
53.在操作415处,处理装置确定经编码数据204-4的解码是否已失败。举例来说,处理装置可通过接收到失败指示来确定经编码数据204-4的解码已失败。在一些实施例中,处理装置通过接收到对用于经编码数据204-4的一或多个额外校正子的请求来确定经编码数据204-4的解码已失败。在一些实施例中,当解码成功时,不接收到指示或请求且不执行额外操作(流程移动到操作420)。替代地,响应于确定经编码数据204-4的解码已失败,操作流程移动到操作425。
54.在操作425处,处理装置通过执行来自数据位210-3的数据位与奇偶校验位212-3的一或多个xor操作来产生校正子。在一些实施例中,例如对于代码200,处理装置通过执行来自数据位210-3的数据位、奇偶校验位212-3和相关联块的数据位(例如数据位210-2)的xor操作来产生校正子,原因是两个块204-3和204-2在水平方向上共享奇偶校验位。xor操作中使用的数据位由作为代码200用于编码数据的ecc确定。
55.在操作430处,处理装置将额外校正子-3发射到错误校正器114。在接收到校正子
之后,错误校正器114即刻尝试基于校正子-3将经编码数据204-4解码。在一些实施例中,错误校正器114如上文参考图3所描述地将经编码数据204-4解码
56.在一些实施例中,处理装置可重复操作415-430直到经编码数据成功经解码或产生和发射了代码200的所有校正子为止。在一些实施例中,处理装置不执行操作415,且处理装置产生用于经编码数据204-4的多个校正子,例如校正子-(1-4)和/或校正子-(1-n),并且发射这些校正子而不管基于这些校正子中的一些对经编码数据的解码是否成功。
57.图5是根据本公开的一些实施例的用以根据从存储器装置接收的一或多个校正子来校正数据的另一实例方法的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法500是由图1的错误校正器114执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
58.在操作510处,处理装置从存储器装置例如130或140接收经编码数据(例如经编码数据204-4)和用于经编码数据的校正子,例如校正子-4。在一些实施例中,处理装置响应于对存储于存储器装置(例如存储器装置130或存储器装置140)中的数据的请求而接收经编码数据和校正子。在一些实施例中,所述请求是来自例如主机系统120的主机系统的读取操作。在一些实施例中,所述请求是对数据块(例如,块204-4的数据位)的请求。
59.在操作515处,处理装置从存储器装置接收用于经编码数据的额外校正子。在一些实施例中,例如校正子-3的额外校正子用于经编码数据204-4和来自多个经编码数据的其它经编码数据204-3。经编码数据204-4与其它经编码数据204-3共享奇偶校验数据,例如奇偶校验数据212-4。在一些实施例中,经编码数据204-4与其它经编码数据(例如经编码数据204-1)不共享奇偶校验位,但根据错误校正码(例如示范性代码200)相互关连。处理装置接收额外校正子但不接收其它经编码数据。在一些实施例中,处理装置接收一或多个额外校正子,例如校正子-1、校正子-2、校正子-3等,如上文所描述。
60.在操作520处,处理装置基于校正子、额外校正子或其组合将经编码数据解码。举例来说,处理装置可基于校正子-4将经编码数据204-4解码。在一些实施例中,处理装置可基于校正子-4并且基于一或多个额外校正子(例如校正子-1、校正子-2或校正子-3等)将经编码数据204-4解码,如上文所描述。
61.图6是根据本公开的一些实施例的在存储器装置中执行以用于响应于对数据的请求而发射经编码数据和校正子的另一实例方法600的流程图。方法600可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法600是由图1的校正子计算组件113执行。虽然以特定顺序或次序来展示,但是除非另有指定,否则可修改过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
62.在操作605处,处理装置在存储例如代码200的多个经编码数据的存储器装置中产
生用于来自多个经编码数据的经编码数据(例如经编码数据204-4)的校正子,例如校正子-4。可如上文所描述地执行校正子的产生。
63.在操作610处,处理装置将经编码数据和校正子发射到与存储器装置耦合的控制器(例如存储器子系统控制器115或主机系统120的控制器。
64.在操作615处,处理装置在存储器装置中产生用于经编码数据的额外校正子。在一些实施例中,例如校正子-3的额外校正子是用于经编码数据204-4和来自多个经编码数据的其它经编码数据204-3。经编码数据204-4和其它经编码数据204-3共享奇偶校验数据,例如奇偶校验数据212-4。在一些实施例中,经编码数据204-4与其它经编码数据(例如经编码数据204-1)不共享奇偶校验位,但根据错误校正码(例如示范性代码200)相互关连。作为实例,经编码数据204-2与经编码数据204-4相互关连,但校正子-3取决于204-2和204-3。另外,校正子-4随经编码数据204-3和经编码数据204-4而变。
65.在操作620处,处理装置将额外校正子发射到控制器但不发射其它经编码数据。在一些实施例中,响应于确定基于先前校正子对经编码数据的解码已失败而发射额外校正子。在其它实施例中,发射额外校正子而不管经解码数据的解码是否已失败。
66.图7说明计算机系统700的实例机器,所述实例机器内可执行用于致使所述机器执行本文中所论述的方法中的任一或多种方法的指令集。在一些实施例中,计算机系统700可对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的错误校正器114的操作和/或对应于校正子计算组件113的操作)。在替代性实施例中,机器可连接(例如联网)到lan、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。
67.所述机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够执行(依序或以其它方式)指定将由所述机器采取的动作的指令集的任何机器。另外,尽管说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)个指令集以进行本文中所论述的方法中的任何一或多种。
68.实例计算机系统700包含处理装置702、主存储器704(例如,只读存储器(rom)、闪存存储器、动态随机存取存储器(dram)例如同步dram(sdram)或rambus dram(rdram)等)、静态存储器706(例如,闪存存储器、静态随机存取存储器(sram)等),以及数据存储系统718,其经由总线730彼此通信。
69.处理装置702表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置702也可以是一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等等。处理装置702被配置成执行指令726以用于执行本文中所论述的操作和步骤。计算机系统700可另外包含网络接口装置708以在网络720上通信。
70.数据存储系统718可包含机器可读存储媒体724(也称为计算机可读媒体),其上存
储有一或多个指令集726或体现本文中所描述的方法或功能中的任一或多种的软件。指令726还可在其由计算机系统700执行期间完全或至少部分地驻存在主存储器704内和/或处理装置702内,主存储器704和处理装置702也构成机器可读存储媒体。机器可读存储媒体724、数据存储系统718和/或主存储器704可对应于图1的存储器子系统110。
71.在一个实施例中,指令726包含实施对应于错误校正器和/或校正子计算组件(例如,图1的校正子计算组件113和/或错误校正器114)的功能性的指令。尽管在实例实施例中机器可读存储媒体724展示为单个媒体,但是应认为术语“机器可读存储媒体”包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何媒体。术语“机器可读存储媒体”因此应被视为包含但不限于固态存储器、光学媒体和磁性媒体。
72.已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。
73.然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
74.本公开还涉及用于执行本文中的操作的设备。此设备可以出于所需目的而专门构造,或其可以包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。举例来说,计算机系统或其它数据处理系统(例如控制器115)可响应于其处理器执行存储器或其它非暂时性机器可读存储媒体中所含的计算机程序(例如,指令序列)而执行计算机实施的方法300或500。计算机系统或其它数据处理系统(例如本地媒体控制器135)可响应于其处理器执行含于存储器或其它非暂时性机器可读存储媒体中的计算机程序(例如,指令序列)而执行计算机实施方法400或600。这种计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、cd-rom以及磁性光盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自连接到计算机系统总线。
75.本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
76.本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可
读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、快闪存储器装置等。
77.在前述说明书中,本公开的实施例已经参照其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。
技术特征:1.一种方法,其包括:在存储多个经编码数据的存储器装置中产生用于来自所述多个经编码数据的第一经编码数据的第一校正子;将所述第一经编码数据和所述第一校正子发射到与所述存储器装置耦合的控制器;在所述存储器装置中产生用于来自所述多个经编码数据的第一和第二经编码数据的第二校正子,其中所述第一经编码数据和所述第二经编码数据根据错误校正码相互关连;和将所述第二校正子发射到所述控制器但不发射所述第二经编码数据,其中所述控制器将基于所述第一校正子、所述第二校正子或其组合中的至少一个来将所述第一经编码数据解码。2.根据权利要求1所述的方法,其中所述发射所述第二校正子是响应于未能基于所述第一校正子将所述第一经编码数据解码。3.根据权利要求1所述的方法,其中所述错误校正码是阶梯码。4.根据权利要求1所述的方法,其中所述第一经编码数据包含存储于所述存储器装置中的第一数据位和第一奇偶校验位,且所述第一校正子的所述产生是基于所述第一数据位和所述第一奇偶校验位。5.根据权利要求4所述的方法,其中所述第一校正子的所述产生另外基于所述第二经编码数据的第二数据位。6.根据权利要求4所述的方法,其中所述发射所述第一经编码数据与所述第一和第二校正子是响应于对所述第一数据位的主机请求。7.根据权利要求1所述的方法,其中所述第一经编码数据和所述第二经编码数据共享奇偶校验位。8.一种包括指令的非暂时性计算机可读存储媒体,所述指令当由处理装置执行时致使所述处理装置:在存储多个经编码数据的存储器装置中产生用于来自所述多个经编码数据的第一经编码数据的第一校正子;将所述第一经编码数据和所述第一校正子发射到与所述存储器装置耦合的控制器;在所述存储器装置中产生用于来自所述多个经编码数据的第一和第二经编码数据的第二校正子,其中所述第一经编码数据和所述第二经编码数据根据错误校正码相互关连;和将所述第二校正子发射到所述控制器但不发射所述第二经编码数据,其中所述控制器将基于所述第一校正子、所述第二校正子或其组合中的至少一个来将所述第一经编码数据解码。9.根据权利要求8所述的非暂时性计算机可读存储媒体,其中发射所述第二校正子是响应于所述解码器未能基于所述第一校正子将所述第一经编码数据解码。10.根据权利要求8所述的非暂时性计算机可读存储媒体,其中所述错误校正码是阶梯码。11.根据权利要求8所述的非暂时性计算机可读存储媒体,其中所述第一经编码数据包含存储于所述存储器装置中的第一数据位和第一奇偶校验位,且产生所述第一校正子是基
于所述第一数据位和所述第一奇偶校验位。12.根据权利要求11所述的非暂时性计算机可读存储媒体,其中产生所述第一校正子另外基于所述第二经编码数据的第二数据位。13.根据权利要求11所述的非暂时性计算机可读存储媒体,其中发射所述第一经编码数据与所述第一和第二校正子是响应于对所述第一数据位的主机请求。14.根据权利要求8所述的非暂时性计算机可读存储媒体,其中所述第一经编码数据和所述第二经编码数据共享奇偶校验位。15.一种系统,其包括:存储多个经编码数据的存储器装置,所述存储器装置包含:本地媒体控制器,其进行以下操作:在存储多个经编码数据的存储器装置中产生用于来自所述多个经编码数据的第一经编码数据的第一校正子;将所述第一经编码数据和所述第一校正子发射到与所述存储器装置耦合的控制器;在所述存储器装置中产生用于来自所述多个经编码数据的第一和第二经编码数据的第二校正子,其中所述第一经编码数据和所述第二经编码数据根据错误校正码相互关连;和将所述第二校正子发射到所述控制器但不发射所述第二经编码数据,其中所述控制器将基于所述第一校正子、所述第二校正子或其组合中的至少一个来将所述第一经编码数据解码。16.根据权利要求15所述的系统,其中发射所述第二校正子是响应于所述解码器未能基于所述第一校正子将所述第一经编码数据解码。17.根据权利要求15所述的系统,其中所述错误校正码是阶梯码。18.根据权利要求15所述的系统,其中所述第一经编码数据包含存储于所述存储器装置中的第一数据位和第一奇偶校验位,且产生所述第一校正子是基于所述第一数据位和所述第一奇偶校验位。19.根据权利要求18所述的系统,其中产生所述第一校正子另外基于所述第二经编码数据的第二数据位。20.根据权利要求15所述的系统,其中所述第一经编码数据和所述第二经编码数据共享奇偶校验位。
技术总结描述在存储器装置中通过校正子计算进行错误校正的方法、系统和设备。在存储器装置中产生用于第一经编码数据的第一校正子。所述第一校正子和所述第一经编码数据发射到与所述存储器装置耦合的控制器。产生用于第一和第二经编码数据的第二校正子。所述第一经编码数据和所述第二经编码数据根据错误校正码相互关连。所述第二校正子发射到所述控制器但不发射所述第二经编码数据,且所述控制器将基于所述第一校正子、所述第二校正子或其组合中的至少一个将所述第一经编码数据解码。一个将所述第一经编码数据解码。一个将所述第一经编码数据解码。
技术研发人员:M
受保护的技术使用者:美光科技公司
技术研发日:2022.04.27
技术公布日:2022/11/1