CN108073469A - 用于通用产品代码的数据映射方案 - Google Patents
用于通用产品代码的数据映射方案 Download PDFInfo
- Publication number
- CN108073469A CN108073469A CN201710898791.8A CN201710898791A CN108073469A CN 108073469 A CN108073469 A CN 108073469A CN 201710898791 A CN201710898791 A CN 201710898791A CN 108073469 A CN108073469 A CN 108073469A
- Authority
- CN
- China
- Prior art keywords
- code
- data block
- code word
- data
- memory
- 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.)
- Granted
Links
Classifications
-
- 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2909—Product codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/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/1012—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 using codes or arrangements adapted for a specific type of error
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
- H03M13/2927—Decoding strategies
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2942—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks of information bits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2945—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using at least three error correction codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2948—Iterative decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本发明提供一种存储器***,其可以包括:存储装置,其包括被分割成多个数据块的数据;以及错误控制编码(ECC)单元,其适于将每个数据块设置到码字中并且通过反向索引数据块来映射码字,其中每个数据块被设置为至少两个码字的部分。
Description
技术领域
本公开的示例性实施例涉及一种存储器***及其操作方法。
背景技术
计算机环境范例已经转变至可随时随地使用的普适计算***。由于该事实,诸如移动电话、数码相机和笔记本电脑的便携式电子装置的使用已经快速增长。这些便携式电子装置通常使用具有存储器装置的存储器***,即数据存储装置。数据存储装置被用作便携式电子装置的主存储器装置或辅助存储器装置。
因为使用存储器装置的数据存储装置不具有移动部件,所以它们提供优良的稳定性、耐久性、高信息访问速度和低功耗。具有这种优点的数据存储装置的示例包括通用串行总线(USB)存储器装置、具有各种接口的存储卡和固态驱动器(SSD)。
写入闪速存储器(例如,NAND)中的数据经受读取错误,数据通常由错误校正码保护。在某些情况下,错误校正码可能仍然失败。因此,存在对用于克服读取错误的改进的错误校正码和进程的需要。
发明内容
本发明的一方面包括一种存储器***。该存储器***可以包括:存储装置(memorystorage),其包括被分割成多个数据块的数据;以及错误控制编码(ECC)单元,其适于将每个数据块设置到码字中并且通过反向索引数据块来映射码字,其中每个数据块被设置为至少两个码字的部分。
本发明的其它方面包括一种方法。该方法可以包括:利用错误控制编码(ECC)单元将多个数据块中的每个数据块设置到码字中,每个数据块被设置为至少两个码字的部分;以及通过反向索引数据块来映射码字。
本发明的其它方面包括一种存储器装置。该存储器装置可以包括:存储装置,其包括被分割成多个数据块的数据;以及错误控制编码(ECC)单元,其被配置成将每个数据块设置到码字中并且通过反向索引数据块来映射码字,其中每个数据块被设置为至少两个码字的部分。
附图说明
图1是示意性地示出根据本发明的实施例的存储器***的框图。
图2是示出根据本发明的实施例的存储器***的框图。
图3是示出根据本发明的实施例的存储器装置的存储块的电路图。
图4是根据本发明的方面的示例性存储器***的图。
图5是根据本发明的示例的示例性通用产品代码(general product code)的图。
图6、图7和图8是根据本发明的方面的构成(constituent)码字的示例性映射的图。
具体实施方式
以下将参照附图更详细地描述各个实施例。然而,本发明可以以不同的形式体现并且不应被解释为限于本文阐述的实施例。相反,提供这些实施例使得本公开将是彻底且完全的,并且将向本领域技术人员完全传达本发明的范围。在整个公开中,相同的附图标记在整个本发明的各个附图和实施例中表示相同的部件。
本发明可以以各种方式实施,其包括作为进程;设备;***;物质的组成;呈现在计算机可读存储介质上的计算机编程产品;和/或处理器,诸如适于执行存储在联接到处理器的存储器上和/或由联接到处理器的存储器提供的指令的处理器。在本说明书中,这些实施例或本发明可以采取的任何其它形式可以被称为技术。通常,公开的进程的步骤的顺序可以在本发明的范围内改变。除非另有说明,否则诸如被描述为适于执行任务的处理器或存储器的部件可以被实现为暂时适于在给定时间执行任务的一般部件或被制造为执行任务的特定部件。如本文使用的,术语“处理器”是指适于处理诸如计算机编程指令的数据的一个或多个装置、电路和/或处理核。
以下提供对本发明的一个或多个实施例的详细描述以及说明本发明的原理的附图。结合这些实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限制,并且本发明包括许多替代方案、变型和等同物。为了提供对本发明的透彻理解,在以下描述中阐述许多具体细节。为了示例的目的提供这些细节,并且在没有这些具体细节中的一些或全部的情况下,根据权利要求可以实现本发明。为了清楚的目的,没有详细描述与本发明相关的技术领域中已知的技术材料,以免使本发明不必要地难以理解。
图1是示意性地示出根据本发明的实施例的存储器***10的框图。
参照图1,存储器***10可以包括存储器控制器100和半导体存储器装置200。
存储器控制器100可以控制半导体存储器装置200的整体(overall)操作。
半导体存储器装置200可以在存储器控制器100的控制下执行一个或多个擦除操作、编程操作和读取操作。半导体存储器装置200可以通过输入/输出线接收命令CMD、地址ADDR和数据DATA。半导体存储器装置200可以通过电源线接收电力PWR并且通过控制线接收控制信号CTRL。控制信号可以包括命令锁存使能(CLE)信号、地址锁存使能(ALE)信号、芯片使能(CE)信号、写入使能(WE)信号、读取使能(RE)信号等。
存储器控制器100和半导体存储器装置200可以被集成在单个半导体装置中。例如,存储器控制器100和半导体存储器装置200可以被集成在诸如固态驱动器(SSD)的单个半导体装置中。固态驱动器可以包括用于在其中存储数据的存储装置。当在SSD中使用半导体存储器***10时,联接到存储器***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)播放器、3维(3D)电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、数据中心的存储装置、能够在无线环境下接收和传输信息的装置、家庭网络的电子装置中的一个、计算机网络的电子装置中的一个、远程信息处理网络的电子装置中的一个、射频识别(RFID)装置或计算***的元件装置。
图2是示出根据本发明的实施例的存储器***的详细框图。例如,图2的存储器***可以描绘图1所示的存储器***10。
参照图2,存储器***10可以包括存储器控制器100和半导体存储器装置200。存储器***10可以响应于来自主机装置的请求而操作,并且特别地,可存储待由主机装置访问的数据。
主机装置可以利用各种电子装置中的任意一种来实施。在一些实施例中,主机装置可以包括诸如以下的电子装置:台式计算机、工作站、3维(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)码、博斯-查德胡里-霍昆格姆(Bose-Chaudhuri-Hocquenghem,BCH)码、turbo码、turbo乘积码(TPC)、里德-所罗门(Reed-Solomon,RS)码、卷积码、递归***码(RSC)、格形编码调制(TCM)、分组编码调制(BCM)等。ECC单元130可以包括用于错误校正操作的所有电路、***或装置。
主机接口140可以通过诸如以下的各种接口协议中的一种或多种与主机装置通信:通用串行总线(USB)、多媒体卡(MMC)、高速***组件互连(PCI-E)、小型计算机***接口(SCSI)、串列SCSI(SAS)、串行高级技术附件(SATA)、并行高级技术附件(PATA)、增强型小型磁盘接口(ESDI)和集成驱动电路(IDE)。
存储器接口150可以在控制器100和存储器装置200之间提供接口以允许控制器100响应于来自主机装置的请求控制存储器装置200。存储器接口150可以在CPU 120的控制下生成用于存储器装置200的控制信号并且处理数据。当存储器装置200是诸如NAND闪速存储器的闪速存储器时,存储器接口150可以在CPU 120的控制下生成用于存储器的控制信号并且处理数据。
存储器装置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。响应于由控制电路220生成的页面缓冲器控制信号,页面缓冲器250可以利用正电压对位线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可以包括易失性存储器400(例如,DRAM)和与易失性存储器400通信的非易失性存储器(NVM)402(例如,NAND)。易失性存储器400可以包括诸如本文所述的控制器的控制器404、错误校正码模块406、用于将位的物理地址映射到位的逻辑地址的逻辑位地址LBA表410、以及可以用于存储如下面将进一步详细描述的产品代码的地址和索引的查找表412(LUT)。诸如ECC 406、控制器404、LBA表410、LUT 412等的部件虽然在易失性存储器400上被示出,但是可以另外地或可选地位于NVM 402或附加的中间装置(未示出)上。NVM 402可以包括多个存储块(和/或多个超级存储块),以及用于主机写入的开放块430和用于垃圾收集(GC)的开放块440。存储器***40示出一般的存储器***,并且本领域技术人员将理解附加/可选部件可以与存储器***一起使用以实现本文公开的发明。
如本文所提及的,诸如“NAND”或“NVM”的术语可以指诸如可以实施错误校正码进程的闪速存储器的非易失性存储器。进一步地,“DRAM”可以指可以包括诸如控制器和ECC模块的部件的易失性存储器。
在NAND闪速存储应用中,错误控制编码(ECC)用于提供数据完整性。由于NAND闪速存储器的可靠性不断劣化,因此期望更强大的ECC代理(agent)。与BCH码和LDPC码相比,本文中被称为“通用产品代码(GPC)”的新类别代码可以利用低复杂度的编码器/解码器提供更好的硬解码性能。
在GPC代码结构中,每个块中的数据位由两个不同的构成码字共享。块是用于更新校验子存储器或数据存储器的基本单元。如果在构成码字的块中发现错误,则由于两个构成码字共享相同的块,因此必须更新它们的校验子值。对于校验子更新,需要映射表来指示两个构成码字如何共享相同的块。此外,需要从构成码字的一个块到GPC码字的一个块的映射来进行数据更新。
由于GPC为如2KB或4KB的大小较大的码字设计,因此映射表的大小通常较大,导致硬件成本较高且时序路径较长。本文公开了采用新的数据映射方案的***、方法、进程和装置,其可以被用于具有较小硬件复杂度的校验子更新和数据更新。
图5是基本GPC代码结构的图50。数据被分割成块(块502、块504和块506),并且每个数据块参与两个不同的构成码字。每个构成码字的奇偶校验(例如,P0、P1、P2等)由构成码字的迭代奇偶校验(Parity on Parity(POP))508进一步保护。数据的XOR 506信息被用于移除由于各个构成代码的小的错误校正能力而可能发生的错误平层。指出哪两个构成码字共享某个块以及构成码字的一个块如何与GPC码字的一个块相关联是不容易的。如果简单的映射方案被应用于两种情况,则映射复杂度为O(N2),其中N是构成码字中块的数量。本文公开的发明利用新的二维映射方案,其对于校验子更新仅需要O(1)的映射复杂度且对于数据更新仅需要O(N)的映射复杂度。
图6中示出一般的GPC映射结构60。GPC代码结构可以用上三角形形状表示。为了降低映射复杂度,本文公开一种二维映射方案。块可以由两个索引值(i,j)表示,其中i是构成码字索引并且j是构成码字内的块位置索引。例如,(3,2)表示第三构成码字中的第二块。并且,由(3,2)表示的块也可以由(2,2)表示。利用二维表示,容易知道块如何由两个不同的构成码字共享。然而,仍然不容易在两个表示之间进行转换。
图7是具有反向索引结构的映射结构的图70。利用反向索引,通过以下公式可以容易地将一个表示转换为另一个表示。校验子更新的映射复杂度从O(N2)降低到O(1)。例如,使用以下关系:
如果(i<=j)
则(j+1,i)
否则(j,i-1)
图8中示出具有用于校验子更新和数据更新的反向索引的附加二维映射方案80。每个块具有三个不同的表示,它们中的两个是用于指出一个构成码字内的块位置的(i,j)表示,而在每个索引(数字)下方的另一个表示是用于指示在一个GPC码字内的块位置。直接映射复杂度是O(N2)。由于代码结构是上三角形形状,因此(k)和(i,j)之间的关系是:
其中i应当小于或等于j。
因此,可以利用与i相关的所有计算的小查找表(LUT)和用于对j求和的加法器来计算k。映射复杂度降低到O(N)。
因此,提出的数据映射方案利用二维映射方法来表示块的位置信息。使用反向索引,用于校验子更新的映射是一个简单的加法运算。通过重构构成码字中的块位置信息与GPC码字中的块位置信息之间的关系,用于数据更新的映射变为LUT运算和加法运算。提出的映射方案有助于降低映射复杂度,从而降低硬件复杂度。
虽然为了清楚理解的目的已经详细地描述前述实施例,但本发明不限于提供的细节。存在实施本发明的许多可选方法。公开的实施例是说明性的而不是限制性的。
Claims (18)
1.一种存储器***,其包括:
存储装置,其包括被分割成多个数据块的数据;以及
错误控制编码单元,即ECC单元,其适于:
将每个数据块设置到码字中,每个数据块被设置为至少两个码字的部分;以及
通过反向索引所述数据块来映射所述码字。
2.根据权利要求1所述的存储器***,其中所述反向索引至少包括构成码字内的数据块位置的表示。
3.根据权利要求1所述的存储器***,其中所述反向索引至少包括通用产品代码码字即GPC码字内的数据块位置的表示。
4.根据权利要求1所述的存储器***,其进一步包括查找表,即LUT。
5.根据权利要求4所述的存储器***,其中所述ECC单元进一步适于通过使用所述LUT对所述反向索引进行计算来映射所述码字。
6.根据权利要求1所述的存储器***,其中所述多个数据块根据通用产品代码结构被分割。
7.一种方法,其包括:
利用错误控制编码单元即ECC单元将多个数据块中的每个数据块设置到码字中,每个数据块被设置为至少两个码字的部分;以及
通过反向索引所述数据块来映射所述码字。
8.根据权利要求7所述的方法,其中所述反向索引至少包括构成码字内的数据块位置的表示。
9.根据权利要求7所述的方法,其中所述反向索引至少包括通用产品代码码字即GPC码字内的数据块位置的表示。
10.根据权利要求7所述的方法,其进一步包括提供查找表,即LUT。
11.根据权利要求10所述的方法,其进一步包括通过使用所述LUT对所述反向索引进行计算来映射所述码字。
12.根据权利要求7所述的方法,其中所述多个数据块根据通用产品代码结构被分割。
13.一种存储器装置,其包括:
存储装置,其包括被分割成多个数据块的数据;以及
错误控制编码单元,即ECC单元,其被配置成:
将每个数据块设置到码字中,每个数据块被设置为至少两个码字的部分;以及
通过反向索引所述数据块来映射所述码字。
14.根据权利要求13所述的存储器装置,其中所述反向索引至少包括构成码字内的数据块位置的表示。
15.根据权利要求13所述的存储器装置,其中所述反向索引至少包括通用产品代码码字即GPC码字内的数据块位置的表示。
16.根据权利要求13所述的存储器装置,其进一步包括查找表,即LUT。
17.根据权利要求16所述的存储器装置,其中所述ECC单元进一步配置成通过使用所述LUT对所述反向索引进行计算来映射所述码字。
18.根据权利要求13所述的存储器装置,其中所述多个数据块根据通用产品代码结构被分割。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/356,069 US10079613B2 (en) | 2016-11-18 | 2016-11-18 | Data mapping scheme for generalized product codes |
US15/356,069 | 2016-11-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108073469A true CN108073469A (zh) | 2018-05-25 |
CN108073469B CN108073469B (zh) | 2021-06-25 |
Family
ID=62147370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710898791.8A Active CN108073469B (zh) | 2016-11-18 | 2017-09-28 | 用于通用产品代码的数据映射方案 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10079613B2 (zh) |
CN (1) | CN108073469B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6810500B1 (en) * | 1999-12-09 | 2004-10-26 | Acer Laboratories Inc. | Method for mapping a two-dimensional data array in a memory |
CN102833032A (zh) * | 2011-06-13 | 2012-12-19 | 思亚诺移动芯片有限公司 | 具有高效的存储管理的接收机 |
US20130205183A1 (en) * | 2006-12-06 | 2013-08-08 | Fusion-Io, Inc. | Systems and methods for adaptive error-correction coding |
CN103329104A (zh) * | 2011-02-08 | 2013-09-25 | 桑迪士克科技股份有限公司 | 使用另外的错误校正编码数据的数据恢复 |
CN104112479A (zh) * | 2013-04-22 | 2014-10-22 | 爱思开海力士有限公司 | 编码器、译码器和包括其的半导体器件 |
US9208018B1 (en) * | 2013-03-15 | 2015-12-08 | Pmc-Sierra, Inc. | Systems and methods for reclaiming memory for solid-state memory |
CN105242982A (zh) * | 2015-10-22 | 2016-01-13 | 宁波三星医疗电气股份有限公司 | 用于采用了nand flash的电力采集终端的纠错方法 |
US20160110252A1 (en) * | 2014-10-20 | 2016-04-21 | SanDisk Technologies, Inc. | Distributing storage of ecc code words |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9495241B2 (en) * | 2006-12-06 | 2016-11-15 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for adaptive data storage |
US7895502B2 (en) * | 2007-01-04 | 2011-02-22 | International Business Machines Corporation | Error control coding methods for memories with subline accesses |
WO2011092532A1 (en) * | 2010-01-28 | 2011-08-04 | Sandisk Il Ltd. | Sliding-window error correction |
WO2015026148A1 (ko) * | 2013-08-20 | 2015-02-26 | 엘지전자 주식회사 | 무선 접속 시스템에서 폴라 코딩을 이용한 데이터 송신방법 |
-
2016
- 2016-11-18 US US15/356,069 patent/US10079613B2/en active Active
-
2017
- 2017-09-28 CN CN201710898791.8A patent/CN108073469B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6810500B1 (en) * | 1999-12-09 | 2004-10-26 | Acer Laboratories Inc. | Method for mapping a two-dimensional data array in a memory |
US20130205183A1 (en) * | 2006-12-06 | 2013-08-08 | Fusion-Io, Inc. | Systems and methods for adaptive error-correction coding |
CN103329104A (zh) * | 2011-02-08 | 2013-09-25 | 桑迪士克科技股份有限公司 | 使用另外的错误校正编码数据的数据恢复 |
CN102833032A (zh) * | 2011-06-13 | 2012-12-19 | 思亚诺移动芯片有限公司 | 具有高效的存储管理的接收机 |
US9208018B1 (en) * | 2013-03-15 | 2015-12-08 | Pmc-Sierra, Inc. | Systems and methods for reclaiming memory for solid-state memory |
CN104112479A (zh) * | 2013-04-22 | 2014-10-22 | 爱思开海力士有限公司 | 编码器、译码器和包括其的半导体器件 |
US20160110252A1 (en) * | 2014-10-20 | 2016-04-21 | SanDisk Technologies, Inc. | Distributing storage of ecc code words |
CN105242982A (zh) * | 2015-10-22 | 2016-01-13 | 宁波三星医疗电气股份有限公司 | 用于采用了nand flash的电力采集终端的纠错方法 |
Non-Patent Citations (2)
Title |
---|
LIU YUAN等: "《Reliability-based ECC System for Adaptive》", 《2015 FIFTH INTERNATIONAL CONFERENCE ONCOMMUNICATION SYSTEMS AND NETWORK TECHNOLOGIES》 * |
蔡晓乐等: "《基于区域页级映射的闪存转换层设计》", 《微电子学与计算机》 * |
Also Published As
Publication number | Publication date |
---|---|
US10079613B2 (en) | 2018-09-18 |
US20180145705A1 (en) | 2018-05-24 |
CN108073469B (zh) | 2021-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107229577B (zh) | 存储***及其操作方法 | |
CN108062258A (zh) | 用于错误恢复的循环交错的xor阵列 | |
US10997017B2 (en) | Neighbor assisted correction error recovery for memory system and method thereof | |
TWI705452B (zh) | 具有硬通道資訊的位元翻轉ldpc解碼演算法 | |
CN108255739A (zh) | 存储器***及其操作方法 | |
US20160335179A1 (en) | Data separation by delaying hot block garbage collection | |
CN107731259A (zh) | 最佳读取参考电压的存储器***及其操作方法 | |
CN109428606A (zh) | 具有ldpc解码器的存储器***及其操作方法 | |
CN107957959A (zh) | 具有文件级安全擦除的存储器***及其操作方法 | |
CN110322920A (zh) | 控制器及控制器的操作方法 | |
CN107977283A (zh) | 具有ldpc解码器的存储器***及其操作方法 | |
US11182243B2 (en) | Memory system with adaptive information propagation and method of operating such memory | |
CN110444240A (zh) | 存储器***的编码器和解码器及其方法 | |
CN109147853A (zh) | 控制器及其操作方法 | |
CN107728932A (zh) | 存储器***及其操作方法 | |
CN110277124A (zh) | 具有混合解码方案的存储器***及其操作方法 | |
US11271589B2 (en) | Memory system with error-reduction scheme for decoding and method of operating such memory system | |
US11036579B2 (en) | Decoder for memory system and method thereof | |
CN110277999A (zh) | Ldpc解码装置、包括其的存储器***及其方法 | |
CN109947360A (zh) | 存储器***及其操作方法 | |
US11023388B2 (en) | Data path protection parity determination for data patterns in storage devices | |
US11062758B2 (en) | Memory system to process multiple word line failures with limited storage and method of operating such memory system | |
CN108108122A (zh) | 控制器和存储器***及其操作方法 | |
US11356123B2 (en) | Memory system with low-complexity decoding and method of operating such memory system | |
CN108073469A (zh) | 用于通用产品代码的数据映射方案 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |