CN106169312B - 用于快闪存储的广义乘积码 - Google Patents
用于快闪存储的广义乘积码 Download PDFInfo
- Publication number
- CN106169312B CN106169312B CN201610331443.8A CN201610331443A CN106169312B CN 106169312 B CN106169312 B CN 106169312B CN 201610331443 A CN201610331443 A CN 201610331443A CN 106169312 B CN106169312 B CN 106169312B
- Authority
- CN
- China
- Prior art keywords
- check
- xor
- row
- data
- stuck
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 claims abstract description 84
- 238000000034 method Methods 0.000 claims description 19
- 239000004065 semiconductor Substances 0.000 description 16
- 238000012937 correction Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000010276 construction Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 239000004557 technical material Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/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/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/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- 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/1096—Parity calculation or recalculation after configuration or reconfiguration of the system
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/109—Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供一种存储器系统,其可包括:编码器,其适于将数据排列在数据块行中作为多个编码字、置换数据块行以及在所置换的行上构建行校验;以及解码器,其适于解码编码字以及当编码字的解码失败时校正卡止错误模式。
Description
相关申请的交叉引用
本申请要求于2015年5月18日提交的临时申请号为62/163,291的美国临时申请的权益,其全部内容在此通过引用并入本文。
技术领域
本公开的示例性实施例涉及一种存储器系统及其操作方法。
背景技术
计算机环境范例已经转变至可随时随地使用的普适计算系统。由于该事实,诸如移动电话、数码相机和笔记本电脑的便携式电子装置的使用一直快速增加。这些便携式电子装置通常使用具有存储器装置即数据存储装置的存储器系统。数据存储装置被用作便携式电子装置的主存储器装置或辅助存储器装置。
由于使用存储器装置的数据存储装置没有移动部件,所以它们提供良好的稳定性、耐用性、高的信息存取速度以及低功耗。具有这种优点的数据存储装置的示例包括通用串行总线(USB)存储器装置、具有各种接口的存储卡以及固态驱动器(SSD)。
随着工业需求的增加,存储器装置和系统的性能和质量被需求。因此,存在对具有改善的性能和质量的存储器装置的需要。
发明内容
本发明的方面包括存储器系统。存储器系统可包括:编码器,其适于将数据排列在数据块行中作为多个编码字、置换数据块行以及在所置换的行上构建行校验;以及解码器,其适于解码编码字以及当编码字的解码失败时校正卡止错误模式。
本发明的进一步的方面包括方法。该方法可包括:利用编码器将数据排列在数据块行中作为多个编码字;利用编码器置换数据块行以及在所置换的行上构建行校验;利用解码器解码编码字;以及当编码字的解码失败时利用解码器校正卡止错误模式。
本发明的附加方面包括存储器装置。存储器装置可包括:编码器,其被配置成将数据排列在数据块行中作为多个编码字、置换数据块行以及在所置换的行上构建行校验;以及解码器,其被配置成解码编码字以及当编码字的解码失败时校正卡止错误模式。
附图说明
图1是示意性示出根据本发明的实施例的存储器系统的框图。
图2是示出根据本发明的实施例的存储器系统的框图。
图3是示出根据本发明的实施例的存储器装置的存储块的电路图。
图4是根据本发明的方面的示例系统的简图。
图5A、图5B和图5C是根据本发明的方面的编码字构建的示例。
图6是根据本发明的方面的用于编码和解码的方法的步骤的流程图。
图7、图8、图9、图10、图11、图12和图13是根据本发明的方面的示例数据排列、编码字和校验的简图。
图14是根据本发明的方面描述系统性能的图表。
具体实施方式
下面将参照附图更详细地描述各种实施例。然而,本发明可以不同的形式呈现且不应被解释为限于在本文中提出的实施例。而是,这些实施例被提供使得本公开将是彻底且完整的并将本发明的范围充分传达给本领域技术人员。在整个公开中,相似的参考编号指的是本发明的各种附图和实施例中的相似部件。
本发明可以多种方式实施,包括作为进程;设备;系统;物质组分;呈现在计算机可读存储介质上的计算机程序产品;和/或处理器,诸如适用于执行存储在联接至处理器的存储器上和/或由联接至处理器的存储器提供的指令的处理器。在本说明书中,这些实施例或本发明可采用的任何其它形式可被称为技术。通常,公开的进程的步骤的顺序可在本发明的范围内改变。除非另有说明,否则诸如被描述为适用于执行任务的处理器或存储器的组件可被实施为在给定时间临时适用于执行任务的一般组件或被制造为执行任务的专用组件。如在此所使用的,术语“处理器”是指适用于处理数据的一个或多个装置、电路和/或处理核心,诸如计算机程序指令。
下面连同示出本发明的原理的附图一起提供本发明的一个或多个实施例的详细说明。结合这些实施例描述本发明,但本发明不限于任意实施例。本发明的范围仅由权利要求限制且本发明包含许多可选方案、变型和等同方案。为了能够彻底理解本发明,在下面的描述中阐述许多具体细节。这些细节被提供以用于示例的目的,且在没有一些或全部这些具体细节的情况下,本发明可根据权利要求来实施。为了清楚的目的,没有详细描述在与本发明相关的技术领域中已知的技术材料使得本发明没有被不必要地模糊。
图1是示意性示出根据本发明的实施例的存储器系统10的框图。
参照图1,存储器系统10可包括存储器控制器100和半导体存储器装置200。
存储器控制器100可控制半导体存储器装置200的全部操作。
半导体存储器装置200可在存储器控制器100的控制下执行一个或多个擦除操作、编程操作和读取操作。半导体存储器装置200可通过输入/输出线接收命令CMD、地址ADDR和数据DATA。半导体存储器装置200可通过电源线接收电源PWR以及通过控制线接收控制信号CTRL。控制信号可包括命令锁存启用(CLE)信号、地址锁存启用(ALE)信号、芯片启用(CE)信号、写入启用(WE)信号、读取启用(RE)信号等。
存储器控制器100和半导体存储器装置200可被集成在单个半导体装置中。例如,存储器控制器100和半导体存储器装置200可被集成在诸如固态驱动器(SSD)的单个半导体装置中。固态驱动器可包括用于将数据存储在其中的存储装置。当半导体存储器系统10被用在SSD中时,联接至存储器系统10的主机(未示出)的操作速度可显著提高。
存储器控制器100和半导体存储器装置200可被集成在诸如存储卡的单个半导体装置中。例如,存储器控制器100和半导体存储器装置200可被集成在单个半导体装置中以配置诸如以下的存储卡:个人计算机存储卡国际协会(PCMCIA)的PC卡、标准闪存(CF)卡、智能多媒体(SM)卡、记忆棒、多媒体卡(MMC)、减小尺寸的多媒体卡(RS-MMC)、微型版MMC(微型MMC)、安全数码(SD)卡、迷你安全数字(迷你SD)卡、微型安全数字(微型SD)卡、安全数字高容量(SDHC)以及通用闪速存储器(UFS)。
作为另一个示例,存储器系统10可被设置为诸如以下的包括电子装置的各种元件中的一个:计算机、超便携移动PC(UMPC)、工作站、上网本计算机、个人数字助理(PDA)、便携式计算机、网络平板PC、无线电话、移动电话、智能电话、电子书阅读器、便携式多媒体播放器(PMP)、便携式游戏装置、航海装置、黑匣子、数码相机、数码多媒体广播(DMB)播放器、三维电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、数据中心的存储装置、能够在无线环境下接收和传输信息的装置、家庭网络的电子装置中的一个、计算机网络的电子装置中的一个、远程信息处理网络的电子装置中的一个、射频识别(RFID)装置或计算系统的元件装置。
图2是示出根据本发明的实施例的存储器系统的详细框图。例如,图2的存储器系统可描述图1中示出的存储器系统10。
参照图2,存储器系统10可包括存储器控制器100和半导体存储器装置200。存储器系统10可响应于来自主机装置的请求而操作,尤其是,存储待被由主机装置访问的数据。
主机装置可利用各种电子装置中的任意一种来实施。在一些实施例中,主机装置可包括诸如台式计算机、工作站、三维(3D)电视、智能电视、数字音频记录器、数字音频播放器、数字图像记录器、数字图像播放器、数字视频记录器和数字视频播放器的电子装置。在一些实施例,主机装置可包括诸如移动电话、智能电话、电子书、MP3播放器、便携式多媒体播放器(PMP)和便携式游戏机的便携式电子装置。
存储器装置200可存储待被由主机装置访问的数据。
存储器装置200可利用诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的易失性存储器装置或诸如只读存储器(ROM)、掩膜ROM(MROM)、可编程ROM(PROM)、可擦可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、铁电随机存取存储器(FRAM)、相变RAM(PRAM)、磁阻RAM(MRAM)和电阻式RAM(RRAM)的非易失存储器装置来实施。
控制器100可控制存储器装置200中数据的存储。例如,控制器100可响应于来自主机装置的请求控制存储器装置200。控制器100可将从存储器装置200读取的数据提供至主机装置,并将从主机装置提供的数据存储在存储器装置200中。
控制器100可包括通过总线160联接的存储单元110、控制单元120、错误纠正码(ECC)单元130、主机接口140和存储器接口150。
存储单元110可用作存储器系统10和控制器100的工作存储器并存储用于驱动存储器系统10和控制器100的数据。当控制器100控制存储器装置200的操作时,存储单元110可存储被控制器100和存储器装置200用于诸如读取操作、写入操作、编程操作和擦除操作的数据。
存储单元110可利用易失性存储器来实施。存储单元110可利用静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)来实施。如上所述,存储单元110可将主机装置使用的数据存储在存储器装置200中以用于读取操作和写入操作。为了存储数据,存储单元110可包括编程存储器、数据存储器、写入缓冲器、读取缓冲器、映射缓冲器等。
控制单元120可响应于来自主机装置的写入请求或读取请求而控制存储器系统10的一般操作和用于存储器装置200的写入操作或读取操作。控制单元120可驱动被称为闪存转换层(FTL)的固件以控制存储器系统10的一般操作。例如,FTL可执行诸如逻辑-物理(L2P)映射、损耗均衡、碎片收集和坏块处理的操作。L2P映射被称为逻辑块寻址(LBA)。
ECC单元130可检测并纠正在读取操作期间从存储器装置200读取的数据中的错误。当错误位的数量大于或等于可纠正错误位的阈值数量时,ECC单元130可不纠正错误位,而是可输出表示纠正错误位失败的错误纠正失败信号。
在一些实施例中,ECC单元130可基于诸如低密度奇偶检查(LDPC)码、博斯-查德胡里-霍昆格姆(BCH)码、Turbo(turbo)码、Turbo乘积码(TPC)、里德-所罗门(RS)码、卷积码、递归系统码(RSC)、网格编码调制(TCM)、分组编码调制(BCM)等的编码调制来执行错误纠正操作。ECC单元130可包括用于错误纠正操作的所有电路、系统或装置。
主机接口140可通过诸如通用串行总线(USB)、多媒体卡(MMC)、外围组件互连高速(PCI-E)、小型计算机系统接口(SCSI)、串列SCSI(SAS)、串行高级技术附件(SATA)、并行高级技术附件(PATA)、增强型小型磁盘接口(ESDI)和集成驱动电路(IDE)的各种接口协议中的一个或多个与主机装置通信。
存储器接口150可提供控制器100和存储器装置200之间的接口以允许控制器100响应于来自主机装置的请求而控制存储器装置200。存储器接口150可在CPU120的控制器下生成用于存储器装置200的控制器信号并处理数据。当存储器装置200是诸如NAND闪速存储器的闪速存储器时,存储器接口150可在CPU120的控制器下生成用于存储器装置200的控制器信号并处理数据。
存储器装置200可包括存储单元阵列210、控制电路220、电压生成电路230、行解码器240、页面缓冲器250、列解码器260和输入/输出电路270。存储单元阵列210可包括多个存储块211并可将数据存储在其中。电压生成电路230、行解码器240、页面缓冲器250、列解码器260和输入/输出电路270形成用于存储器单元阵列210的外围电路。外围电路可执行存储器单元阵列210的编程操作、读取操作或擦除操作。控制电路220可控制外围电路。
电压生成电路230可生成具有各种电平的操作电压。例如,在擦除操作中,电压生成电路230可生成具有各种电平的操作电压,诸如擦除电压和过电压。
行解码器240可连接至电压生成电路230和多个存储块211。行解码器240可响应于由控制电路220生成的行地址RADD选择多个存储块211中的至少一个存储块,并将从电压生成电路230供应的操作电压传输至在多个存储块211中选择的存储块。
页面缓冲器250通过位线BL(未示出)连接至存储器单元阵列210。页面缓冲器250可响应于由控制电路220生成的页面缓冲器控制信号利用正电压对位线BL预充电、在编程操作中将数据传输至选择的存储块/在读取操作中从选择的存储块接收数据或临时存储传输的数据。
列解码器260可将数据传输至页面缓冲器250/从页面缓冲器250接收数据或将数据传输至输入电路270/从输出电路270接收数据。
输入/输出电路270可通过输入/输出电路270将从外部装置(例如,存储器控制器100)传输的命令和地址传输至控制电路220、将数据从外部装置传输至列解码器260或将数据从列解码器260输出至外部装置。
控制电路220可响应于命令和地址控制外围电路。
图3是示出根据本发明的实施例的半导体存储器装置的存储块的电路图。例如,图3的存储块可以是图2中示出的存储器单元阵列210的存储块211。
参照图3,存储块211可包括分别联接至位线BL0至BLm-1的多个单元字符串221。每列的单元字符串可包括一个或多个漏极选择晶体管DST和一个或多个源极选择晶体管SST。多个存储器单元或存储器单元晶体管可串行地联接在选择晶体管DST和SST。存储单元MC0至MCn-1中的每个可由每个单元中都存储多位数据信息的多层单元(MLC)形成。单元字符串221可分别电联接至对应的位线BL0至BLm-1。
在一些实施例中,存储块211可包括NAND型闪速存储单元。然而,存储块211不限于NAND闪速存储器,而是可包括NOR型闪速存储器、结合两个或多个类型的存储单元的混合闪速存储器和控制器被嵌入在存储芯片内部的1-NAND闪速存储器。
在图4中,示出用于编码和解码的示例系统40。系统40包括存储器402和DRAM 400。存储器402可包括多个块(例如,数据)、用于主机写入的开放块430和用于垃圾收集的开放块440。DRAM 400可包括控制器404、编码器410和解码器420,DRAM 400与存储器402通信。编码器410可被配置为将数据编码成编码字并执行如下所述的其它各种功能。解码器420可被配置成解码来自编码器410的数据、检测误校正问题、检测卡止错误模式以及执行如下所述的其它功能。尽管被示为独立的单元,但编码器410和解码器420可形成单一单元、可与控制器404一起集成和/或具有如本领域技术人员已知的其它设置。
基于turbo乘积码(TPC)的编码技术被提出用于基于NAND的存储。基于TPC的编码与如BCH和LDPC编码的目前水平的编码技术相比提供显著的性能改善。TPC已被设计用于适于移动产品应用的编码率。然而,在企业应用(例如,较大的系统需求)中,需要高于移动应用的编码率。对于企业应用,编码的性能是编码评估的另一个关键指标。因此,期望具有可提供比现有技术水平更好的性能改善的编码技术。找到更好的编码解决方案的关键挑战是将错误平层降低至所需要的编码长度的期望状态。随机读取/写入操作在基于NAND的装置中基于4KB的编码长度。已知移除用于较短编码长度编码的错误平层更具挑战性。如本文所公开的,描述提供企业编码率的显著性能改善且不经受错误平层问题的乘积码的构建。
先前已经描述了半turbo乘积码(HTPC)和块turbo乘积码。在块TPC中,数据被结合在块中以在被排列成三角形样式之前满足编码率限制。为了构成编码字之间的密集连接性及更好的瀑布式性能,数据在HTPC中被排列呈矩形样式。在使用两种技术的编码构建中,数据首先被结合在块中,然后该块被排列成如图5A中所示的三角形样式。该构建具有如下面所述的错误平层问题。在图5B中,示出权重2的错误模式,当用于构成编码的校正能力等于1时,其将在解码中卡止。因为块结构,位于交叉处的任意2个通道错误将在解码中卡止且这将导致性能的错误平层。此外,任意行校验中的任意2个通道错误还将在如图5C中所示的解码期间卡止。这些卡止模式必须被移除以使该编码构建用于数据存储应用。
本文公开用于解决上述错误平层问题的系统、方法和装置。对于该公开,为了说明性目的,BCH编码用于构成编码。本领域技术人员将理解为了从本文的公开中实现本发明可以利用其它编码。
图6是用于编码和解码数据的步骤的流程图60(例如,步骤可通过解码器和/或编码器来执行)。在步骤600中,数据被排列在行块中。在步骤602中,数据块行被置换且被置换的行上的行校验被构建。通过步骤600和602生成的结构可类似于图7和图8中所示的那些结构,且尽管其它乘积码可被使用,但示出用于广义乘积码(GPC)的编码。
参照图7,设置在块中且每个块Dk包括I位(例如,每个块包括相同数量的位)。然后,每行数据被置换且编码字校验被构建在被置换的数据上。如可以看出,行数据可被置换使得每个数据块被包括在至少两行中。
在步骤604中,XOR校验被生成并存储在至少一行中。在图8中,I被取为3,但根据所需的数据长度和编码率其可选择任意值。Ncw为行编码字的数量。在图8中,Ncw等于5。XOR校验可通过对长度I的所有数据块和第一(Ncw-1)行(或其它预定数量的行)编码字的校验进行XOR来生成。XOR校验的长度也等于I。然后,生成的XOR校验可被存储在数据块行中(例如,由于XOR校验的长度可等于数据位的长度)。
在步骤606中,构建的校验上的校验被构建。所有行校验可通过另一个构成编码进一步被编码,这被称为校验上校验(parity on parity)。在该编码构建中,解码标准可以为使得当所有Ncw编码可解码且XOR校验检查被满足时数据被解码成功。
校验上的校验可通过列向结合行校验来构建。结构中的置换移除误校正,因为对于利用置换改变数据位置的不同行将不形成相同编码字。所有数据块被保护两次,然而校验被保护一次。校验上校验将提供另一级别的保护以去除校验中的错误。
在步骤608中,编码字被解码且卡止错误模式被校正。步骤608可通过解码器来执行。XOR校验可用于校正卡止错误模式。例如,在图9中,两个失败的编码字(CW2和CW3)的交叉可通过如下所述的XOR校验来校正。而且,如图10中所示,卡止模式还可通过在校验块中进行校正的XOR校正来校正。卡止错误模式是指存在通道错误的位置或交叉。在图9和图10中,为了说明的目的,校正能力被假定为等于1。
图11中所示的卡止模式可被如下校正。首先,XOR校正可通过如图12中所示的解码数据被构建/生成/计算。通过解码器计算的XOR校验可与通过编码器存储的XOR校验比较以基于计算的XOR校验和存储的XOR校验之间的差别确定错误的位置和/或交叉。在该示例中,计算的XOR校验和存储的XOR校验在一个位置处不同,这意味着这是可能的错误位置(参见图13)。所有失败编码字的对的交叉可包含在估计位置处的错误。
在失败的错误交叉处,估计位的翻转可被尝试且定期解码可被执行。在该示例中,CW2和CW3的交叉中的翻转将不会导致成功解码。然而,翻转CW2和CW4的交叉中的位将成功解码所有编码字。
通常,I的值将远远大于3。公开的通过XOR校验的解码可利用大的I值更好地提供可能的错误位置并显著降低用于成功解码的翻转的数量。例如,m个错误位置通过XOR校验被设置且存在FI个可能的错误位置交叉。2m位翻转可在FI个交叉上被尝试以得到成功解码的数据。通常,XOR校验还可用于在多于3行编码字失败的情况下校正错误。
图14是示出与LDPC和BCH编码相比不同编码率的GPC方案的系统性能的图表。在硬判决解码中,本文公开的GPC提供可观的性能改善。
尽管为了清楚说明的目的已经相当详细地描述了前述实施例,但本发明不限于提供的细节。存在许多实施本发明的可选方法。公开的实施例是说明性的且不是限制性的。
Claims (12)
1.一种存储器系统,其包括:
编码器,其适于:
将数据排列在多个数据块行的每个中作为多个编码字;以及
置换所述多个数据块行中的每个以及在每个所置换的行上构建行校验;
生成XOR校验并将所述XOR校验存储在至少一个数据块行中;以及
列向结合每个所置换的行的行校验以构建校验上校验;
解码器,其适于:
解码所述多个编码字以生成解码码字;以及
至少部分地基于所述校验上校验和所述XOR校验来校正所述解码码字之中的一个或多个未成功解码码字中的卡止错误模式,
其中所述卡止错误模式为存在通道错误的位置或交叉;
其中所述XOR校验通过对所述数据块和预定数量的构建的行校验进行XOR来生成。
2.根据权利要求1所述的存储器系统,其中所述数据块行被置换使得每个数据块被包括在至少两行中。
3.根据权利要求1所述的存储器系统,其中每个数据块包括相同数量的位。
4.根据权利要求1所述的存储器系统,其中所述解码器适于通过以下步骤来校正卡止错误模式:
构建来自所解码的编码字的XOR校验;以及
基于所述解码器构建的XOR校验和所述编码器存储的XOR校验之间的差别确定卡止错误模式的位置。
5.根据权利要求1所述的存储器系统,其中所述解码器适于通过以下步骤来校正卡止错误模式:
确定两个未成功解码码字的错误位置交叉;以及
翻转所述错误位置交叉处的位。
6.一种方法,其包括:
利用编码器将数据排列在多个数据块行的每个中作为多个编码字;
利用所述编码器置换所述多个数据块行中的每个以及在每个所置换的行上构建行校验;
利用所述编码器生成XOR校验并将所述XOR校验存储在至少一个数据块行中;
利用所述编码器列向结合每个所置换的行的行校验以构建校验上校验;
利用解码器解码所述多个编码字以生成解码码字;以及
利用所述解码器至少部分地基于所述校验上校验和所述XOR校验来校正所述解码码字之中的一个或多个未成功解码码字中的卡止错误模式,
其中所述卡止错误模式为存在通道错误的位置或交叉;
其中所述XOR校验通过对所述数据块和预定数量的构建的行校验进行XOR来生成。
7.根据权利要求6所述的方法,其中所述数据块行被置换使得每个数据块被包括在至少两行中。
8.根据权利要求6所述的方法,其中每个数据块包括相同数量的位。
9.根据权利要求6所述的方法,其中所述校正卡止错误模式步骤进一步包括:
利用所述解码器构建来自所解码的编码字的XOR校验;以及
基于所述解码器构建的XOR校验和所述编码器存储的XOR校验之间的差别确定卡止错误模式的位置。
10.根据权利要求6所述的方法,其中校正卡止错误模式步骤包括:
利用所述解码器确定两个未成功解码码字的错误位置交叉;以及
翻转所述错误位置交叉处的位。
11.一种存储器装置,其包括:
编码器,其被配置成:
将数据排列在多个数据块行的每个中作为多个编码字;以及
置换所述多个数据块行中的每个以及在每个所置换的行上构建行校验;
生成XOR校验并将所述XOR校验存储在至少一个数据块行中;以及
列向结合每个所置换的行的行校验以构建校验上校验;
解码器,其被配置成:
解码所述多个编码字以生成解码码字;以及
至少部分地基于所述校验上校验和所述XOR校验来校正所述解码码字之中的一个或多个未成功解码码字中的卡止错误模式,
其中所述卡止错误模式为存在通道错误的位置或交叉;
其中所述XOR校验通过对所述数据块和预定数量的构建的行校验进行XOR来生成。
12.根据权利要求11所述的存储器装置,其中所述解码器被进一步配置成通过以下步骤来校正卡止错误模式:
构建来自所解码的编码字的XOR校验;以及
基于所述解码器构建的XOR校验和所述编码器存储的XOR校验之间的差别确定卡止错误模式的位置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562163291P | 2015-05-18 | 2015-05-18 | |
US62/163,291 | 2015-05-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106169312A CN106169312A (zh) | 2016-11-30 |
CN106169312B true CN106169312B (zh) | 2021-05-07 |
Family
ID=57325404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610331443.8A Active CN106169312B (zh) | 2015-05-18 | 2016-05-18 | 用于快闪存储的广义乘积码 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10388400B2 (zh) |
CN (1) | CN106169312B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10348335B2 (en) | 2015-05-15 | 2019-07-09 | SK Hynix Inc. | Miscorrection avoidance for turbo product codes |
CN106169312B (zh) | 2015-05-18 | 2021-05-07 | 爱思开海力士有限公司 | 用于快闪存储的广义乘积码 |
US10326477B2 (en) | 2015-12-30 | 2019-06-18 | SK Hynix Inc. | Techniques for miscorrection detection for constituent codewords in product codes |
US10498366B2 (en) | 2016-06-23 | 2019-12-03 | SK Hynix Inc. | Data dependency mitigation in parallel decoders for flash storage |
US10484020B2 (en) | 2016-02-03 | 2019-11-19 | SK Hynix Inc. | System and method for parallel decoding of codewords sharing common data |
US10439649B2 (en) | 2016-02-03 | 2019-10-08 | SK Hynix Inc. | Data dependency mitigation in decoder architecture for generalized product codes for flash storage |
US10523245B2 (en) | 2016-03-23 | 2019-12-31 | SK Hynix Inc. | Soft decoder for generalized product codes |
KR102258140B1 (ko) * | 2017-07-06 | 2021-05-28 | 삼성전자주식회사 | 반도체 메모리 장치의 에러 정정 회로, 반도체 메모리 장치 및 메모리 시스템 |
US10770168B2 (en) * | 2018-07-12 | 2020-09-08 | Micron Technology, Inc. | Memory sub-system with background scan and histogram statistics |
KR20200126178A (ko) | 2019-04-29 | 2020-11-06 | 삼성전자주식회사 | 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법 |
US20220021483A1 (en) * | 2020-07-17 | 2022-01-20 | Yu Cao | Methods and appratuses for broadcast multicast or groupcast transmission using vertical check blocks |
US11513894B2 (en) * | 2020-12-28 | 2022-11-29 | Kioxia Corporation | Hard decoding methods in data storage devices |
US11694761B2 (en) * | 2021-09-17 | 2023-07-04 | Nxp B.V. | Method to increase the usable word width of a memory providing an error correction scheme |
US11853607B2 (en) | 2021-12-22 | 2023-12-26 | Western Digital Technologies, Inc. | Optimizing flash memory utilization for NVMe KV pair storage |
US11817883B2 (en) * | 2021-12-27 | 2023-11-14 | Western Digital Technologies, Inc. | Variable length ECC code according to value length in NVMe key value pair devices |
US11733876B2 (en) | 2022-01-05 | 2023-08-22 | Western Digital Technologies, Inc. | Content aware decoding in KV devices |
US20230253985A1 (en) * | 2022-01-27 | 2023-08-10 | Kioxia Corporation | Efficient decoding schemes for error correcting codes for memory devices |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4617664A (en) * | 1984-06-29 | 1986-10-14 | International Business Machines Corporation | Error correction for multiple bit output chips |
US5384788A (en) * | 1992-10-26 | 1995-01-24 | Dell Usa, L.P. | Apparatus and method for optimal error correcting code to parity conversion |
US5517514A (en) * | 1992-11-12 | 1996-05-14 | Amdahl Corporation | Parity checking system with reduced usage of I/O pins |
US6052815A (en) | 1997-11-14 | 2000-04-18 | Cirrus Logic, Inc. | ECC system for generating a CRC syndrome over randomized data in a computer storage device |
US7356752B2 (en) | 2000-03-14 | 2008-04-08 | Comtech Telecommunications Corp. | Enhanced turbo product codes |
US7073114B2 (en) | 2002-06-24 | 2006-07-04 | Massey Peter C | Method of decoding utilizing a recursive table-lookup decoding method |
JP3745709B2 (ja) | 2002-06-28 | 2006-02-15 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 符号化装置、復号化装置、符号化方法、復号化方法、プログラム、プログラム記録媒体、及びデータ記録媒体 |
KR101183843B1 (ko) | 2003-10-06 | 2012-09-19 | 디지털 파운튼, 인크. | 단일 송신기 또는 다중 송신기를 갖는 통신 시스템의 에러정정 다중-스테이지 코드 생성기 및 디코더 |
DE602005020595D1 (de) * | 2005-05-19 | 2010-05-27 | St Microelectronics Srl | Fehlerkorrigierender Kode (ECC) für einzelne 4-bit Symbol Korrektur von Wörtern mit 32 Symbolen basierend auf einer Matrix mit einem maximalen Höchstzeilengewicht von 21 |
US8028216B1 (en) | 2006-06-02 | 2011-09-27 | Marvell International Ltd. | Embedded parity coding for data storage |
US20080134004A1 (en) | 2006-12-05 | 2008-06-05 | Samsung Electronics Co., Ltd. | Recording and/or reproducing apparatus and method |
US8335977B2 (en) | 2007-12-05 | 2012-12-18 | Densbits Technologies Ltd. | Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated BCH codes and/or designation of “first below” cells |
US8301979B2 (en) | 2008-10-07 | 2012-10-30 | Sandisk Il Ltd. | Low density parity code (LDPC) decoding for memory with multiple log likelihood ratio (LLR) decoders |
JP4867980B2 (ja) | 2008-11-26 | 2012-02-01 | 住友電気工業株式会社 | 誤り訂正復号装置 |
US8429498B1 (en) | 2009-03-25 | 2013-04-23 | Apple Inc. | Dual ECC decoder |
US8631304B2 (en) | 2010-01-28 | 2014-01-14 | Sandisk Il Ltd. | Overlapping error correction operations |
KR101216735B1 (ko) | 2010-09-03 | 2012-12-28 | 서울대학교산학협력단 | 프로덕트 부호의 복호 방법 및 장치 |
US9009574B2 (en) | 2011-06-07 | 2015-04-14 | Marvell World Trade Ltd. | Identification and mitigation of hard errors in memory systems |
US8954825B2 (en) * | 2012-03-06 | 2015-02-10 | Micron Technology, Inc. | Apparatuses and methods including error correction code organization |
US8892986B2 (en) * | 2012-03-08 | 2014-11-18 | Micron Technology, Inc. | Apparatuses and methods for combining error coding and modulation schemes |
TWI500038B (zh) | 2012-09-28 | 2015-09-11 | Univ Nat Chiao Tung | 記憶體系統之全套平行編碼方法與全套平行解碼方法 |
US9300329B2 (en) | 2012-11-08 | 2016-03-29 | Sk Hynix Memory Solutions Inc. | Turbo-product codes (TPC) with interleaving |
US9577673B2 (en) | 2012-11-08 | 2017-02-21 | Micron Technology, Inc. | Error correction methods and apparatuses using first and second decoders |
US9203437B2 (en) * | 2012-12-19 | 2015-12-01 | Infineon Technologies Ag | Circuitry and method for correcting 3-bit errors containing adjacent 2-bit error |
US9231623B1 (en) | 2013-09-11 | 2016-01-05 | SK Hynix Inc. | Chase decoding for turbo-product codes (TPC) using error intersections |
GB2525430B (en) | 2014-04-25 | 2016-07-13 | Ibm | Error-correction encoding and decoding |
US9559727B1 (en) | 2014-07-17 | 2017-01-31 | Sk Hynix Memory Solutions Inc. | Stopping rules for turbo product codes |
CN104409103A (zh) * | 2014-09-22 | 2015-03-11 | 中国空间技术研究院 | 一种新颖的宇航用存储器二维编码加固方法及电路装置 |
US9960788B2 (en) | 2015-03-27 | 2018-05-01 | Toshiba Memory Corporation | Memory controller, semiconductor memory device, and control method for semiconductor memory device |
CN106169312B (zh) | 2015-05-18 | 2021-05-07 | 爱思开海力士有限公司 | 用于快闪存储的广义乘积码 |
US9998148B2 (en) | 2015-12-01 | 2018-06-12 | SK Hynix Inc. | Techniques for low complexity turbo product code decoding |
US10498366B2 (en) | 2016-06-23 | 2019-12-03 | SK Hynix Inc. | Data dependency mitigation in parallel decoders for flash storage |
US10439649B2 (en) | 2016-02-03 | 2019-10-08 | SK Hynix Inc. | Data dependency mitigation in decoder architecture for generalized product codes for flash storage |
US10484020B2 (en) | 2016-02-03 | 2019-11-19 | SK Hynix Inc. | System and method for parallel decoding of codewords sharing common data |
US10256842B2 (en) * | 2016-03-03 | 2019-04-09 | Intel Corporation | Technologies for correcting flipped bits for an error correction decode process |
US10523245B2 (en) | 2016-03-23 | 2019-12-31 | SK Hynix Inc. | Soft decoder for generalized product codes |
-
2016
- 2016-05-18 CN CN201610331443.8A patent/CN106169312B/zh active Active
- 2016-05-18 US US15/158,425 patent/US10388400B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20160342467A1 (en) | 2016-11-24 |
US10388400B2 (en) | 2019-08-20 |
CN106169312A (zh) | 2016-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106169312B (zh) | 用于快闪存储的广义乘积码 | |
CN108062258B (zh) | 用于错误恢复的循环交错的xor阵列 | |
CN106169308B (zh) | 存储器控制器及其操作方法 | |
CN109616148B (zh) | 具有解码器的存储器系统、其操作方法和解码器 | |
CN106856103B (zh) | 用于与非闪存的涡轮乘积码 | |
CN106155585B (zh) | 自适应读取干扰收回策略 | |
CN107731259B (zh) | 最佳读取参考电压的存储器系统及其操作方法 | |
CN108073467B (zh) | 具有硬信道信息的位翻转ldpc解码算法 | |
CN109428606B (zh) | 具有ldpc解码器的存储器系统及其操作方法 | |
US10846172B2 (en) | Encoding method and system for memory device including QLC cells | |
US9979417B2 (en) | Enhanced chip-kill schemes by using ECC syndrome pattern | |
CN112241333B (zh) | 用于存储器系统的编码器及其方法 | |
US11036579B2 (en) | Decoder for memory system and method thereof | |
CN110277124B (zh) | 具有混合解码方案的存储器系统及其操作方法 | |
CN106158046B (zh) | 用于turbo乘积码的误校正避免 | |
US10396825B2 (en) | Memory controller, semiconductor memory system and operating method thereof | |
CN112216328B (zh) | 具有低复杂度解码的存储器系统及其操作方法 | |
CN105915234B (zh) | 避免对涡轮乘积码误校正的方案 | |
CN110275844B (zh) | 利用自适应阈值解码的存储器系统及其操作方法 | |
US10528496B2 (en) | Controller and operating method thereof | |
US9996412B2 (en) | Enhanced chip-kill schemes by using sub-trunk CRC | |
US10141072B2 (en) | Efficient encoder based on modified RU algorithm | |
CN108073469B (zh) | 用于通用产品代码的数据映射方案 | |
US11621727B2 (en) | Decoding systems and methods for local reinforcement | |
CN110047554B (zh) | 具有超级芯片删除恢复的存储器系统及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |