CN111788559A - 通过伽罗瓦域维折叠支持具有唯一纠错码的多页长度 - Google Patents
通过伽罗瓦域维折叠支持具有唯一纠错码的多页长度 Download PDFInfo
- Publication number
- CN111788559A CN111788559A CN201980016429.0A CN201980016429A CN111788559A CN 111788559 A CN111788559 A CN 111788559A CN 201980016429 A CN201980016429 A CN 201980016429A CN 111788559 A CN111788559 A CN 111788559A
- Authority
- CN
- China
- Prior art keywords
- user data
- codeword
- parity
- extension
- data
- 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.)
- Pending
Links
- 238000012937 correction Methods 0.000 title abstract description 12
- 238000000034 method Methods 0.000 claims abstract description 109
- 238000003860 storage Methods 0.000 claims abstract description 30
- 239000011159 matrix material Substances 0.000 claims description 53
- 230000008569 process Effects 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 9
- 230000008014 freezing Effects 0.000 claims description 5
- 238000007710 freezing Methods 0.000 claims description 5
- 230000015654 memory Effects 0.000 description 29
- 238000010586 diagram Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 7
- 238000012005 ligant binding assay Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 239000007787 solid Substances 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000007480 spreading Effects 0.000 description 4
- 238000003892 spreading Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000013501 data transformation Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
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
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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]
-
- 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
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/1171—Parity-check or generator matrices with non-binary elements, e.g. for non-binary 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/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
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/118—Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Error Detection And Correction (AREA)
Abstract
公开了通过伽罗瓦域维度折叠支持具有唯一纠错码的多页长度的方法和设备。在一个实施例中,一种方法包括:接收写指令,该写指令包括用户数据;基于所述用户数据生成扩展用户数据,所述扩展用户数据包括至少一符号,所述符号包括一位用户数据和预存储的位模式;通过对扩展的用户数据进行编码来生成奇偶校验数据;通过对所述位用户数据进行编码来生成奇偶校验扩展数据;将码字写入非易失性存储设备的页面,该码字包括奇偶校验扩展数据、用户数据和奇偶校验数据。
Description
相关申请的交叉引用
本申请要求于2018年3月5日提交的美国专利申请No.15/911,819,题目为“通过伽罗瓦域(Galois Field)维折叠支持具有唯一纠错码的多页长度”的优先权,上述申请通过引用合并于此。
版权声明
本申请包括可能受版权保护的材料。版权所有者不反对任何人以专利和商标局文件或记录中的形式对专利公开进行传真复制,但在其他方面保留所有版权。
背景技术
本公开的实施例涉及NAND快闪存储器,更具体的,涉及用于实现可变长度NAND快闪页的系统和方法。
NAND闪存固态驱动器(SSD)设备的基本且可读的单元是“扇区”或“页面”。SSD将所有数据存储在SSD的多个逻辑层内排列的多个页面上。早期和当前的传统固态驱动器(SSD)设备使用大小为512字节或4096字节(4KB)的固定扇区。最近,SSD支持“可变扇区大小”。可变扇区大小是指支持超出标准512B和4KB扇区大小的扇区大小,包括随机扇区大小。计算机架构的进步,例如NVM Express(NVMe)设备的普及,已经产生了许多扇区大小的选择,包括520、528、4104、4160和4224字节页大小。可变扇区大小旨在允许用户和应用程序插入和每个扇区中存储在SSD上的实际数据一起的其他管理信息。
由于NAND闪存的基本特性,出现了在扇区中存储附加数据的需求。具体地,用于给定页面的管理数据最好被存储在页面的区域中,以便管理数据可以与页面一起被读取,从而消除多次读取。此外,每个扇区的逻辑块地址(LBA)作为管理数据存储在扇区中,通常存储在所述扇区的带外(Out Of Band,OOB)区域中。将LBA数据存储在一个扇区内,以便可以通过读取各个扇区的内容来重建LBA到物理块地址(PBA)的映射。
使用可变的页面大小使得使用可变的纠错码(ECC)和循环冗余校验(CRC)机制。使用多个ECC和CRC机制的要求增加了NAND闪存控制器所需的开销。
此外,NAND闪存制造越来越多地在单个封装内“堆叠”多个芯片,以在保持较小的尺寸的同时增加封装的密度。尽管这些三维堆叠技术提高了NAND闪存封装的容量,但芯片的接近度急剧增加了通道中存在的噪声,并改变了对NAND闪存封装中数据的访问时间。噪声的增加导致更高级别的ECC,以及检测和尽可能纠正包数据中的错误所需的CRC冗余。
此外,由于NAND闪存电路的特性,编程和擦除(“P/E”)周期的增加导致较高的错误率。具体而言,每个P/E周期都会降低NAND闪存封装中底层晶体管的完整性,从而导致更高水平的噪声(并因此导致ECC和CRC位的冗余度更高)。
通常,当前系统通过动态地提供更强的纠错方案来处理这种增加的噪声。但是,该技术要求纠错电路切换到较低的编码率,以提供强大的容错能力。编码率的这种降低导致NAND闪存封装的吞吐量降低。因此,由于可变页面大小、三维堆叠和较高的P/E周期的组合,当前的系统会导致NAND闪存性能随时间下降。
发明内容
如上所述,可变页面大小、三维堆叠以及较高的P/E周期是NAND闪存封装的理想特性。但是,当前用于支持这些特性的纠错技术会降低封装的性能。所公开的实施例提供了用于在NAND闪存中提供可变页面大小而不会降低当前系统的性能的解决方案。
通常,所公开的实施例描述了用于提供NAND闪存页面大小的位级粒度的技术。另外,所公开的实施例描述了用于在NAND闪存封装的整个寿命中利用单个纠错码的技术。
在一个实施例中,一种方法包括:接收写指令,该写指令包括用户数据;基于所述用户数据生成扩展用户数据,所述扩展用户数据包括至少一符号,所述符号包括一位用户数据和一预存储的位模式;通过对扩展用户数据进行编码来产生奇偶校验数据;通过对所述位用户数据进行编码来生成奇偶校验扩展数据;将码字写入非易失性存储设备的页面,该码字包括所述奇偶校验扩展数据、用户数据和奇偶校验数据。
在另一个实施例中,公开了一种方法,包括:响应于读取指令,从非易失性存储设备中检索码字;识别包括在所述码字中的扩展符号;硬解码所述扩展符号以获得解码后的扩展符号;冻结所述解码后的扩展符号并为所述解码后的扩展符号设置最大置信度;通过使用部分奇偶校验矩阵执行码字的奇偶校验来生成解码的码字,该奇偶校验包括迭代软决策解码过程;通过从所述解码的码字中丢掉一个或多个插入的位来生成解码后的用户数据。
在另一个实施例中,公开了一种包括处理器的设备;以及用于在其上有形地存储由所述处理器执行的程序逻辑的存储介质,所存储的程序逻辑包括:由处理器执行的用于接收写入指令的逻辑,该写入指令包括用户数据;以及由处理器执行的用于基于用户数据生成扩展用户数据的逻辑,所述扩展用户数据包括至少一符号,该符号包括一位用户数据和预存储的位模式;由处理器执行的用于通过对扩展的用户数据进行编码来生成奇偶校验数据的逻辑;由处理器执行的用于通过对所述位用户数据进行编码来生成奇偶校验扩展数据的逻辑;由处理器执行的用于将码字写入非易失性存储设备的逻辑,该码字包括奇偶校验扩展数据、用户数据和奇偶校验数据。
附图说明
通过以下对附图所示的实施例的描述,本公开的前述和其他目的、特征和优点将变得显而易见,在附图中,附图标记始终指代各个部分中的相同部分。附图不一定按比例绘制,而是将重点放在说明本公开的原理上。
图1是示出根据本公开的一些实施例的NAND闪存封装的布局的逻辑示意图。
图2是示出根据本公开的一些实施例的NAND闪存封装中的数据放置和保护的示意图。
图3是根据本公开的一些实施例的奇偶校验矩阵的示意图。
图4是示出根据本公开的一些实施例的用于NAND闪存中的可变大小的数据的编码过程的示意图。
图5是根据本公开的一些实施例的用于生成奇偶扩展的消息传递算法的Tanner图。
图6是示出根据本公开的一些实施例的用于字内编码以生成用于NAND闪存页面的附加奇偶校验的方法的示意图。
图7是示出根据本公开的一些实施例的用于NAND闪存设备的写操作的流程图。
图8是示出根据本公开的一些实施例的在解码过程期间的数据变换的示意图。
图9是示出根据本公开的一些实施例的用于NAND闪存设备的读取操作的流程图。
图10是示出根据本公开的一些实施例的用于访问NAND闪存设备的设备的硬件图。
具体实施方式
现在将在下文中参考附图来更全面地描述本公开,所述附图形成了本公开的一部分,并且通过说明的方式示出了某些示例实施例。然而,主题可以以各种不同的形式来体现,因此,涵盖或要求保护的主题旨在被解释为不限于在此阐述的任何示例实施例;本公开不限于所公开的主题。提供示例实施例仅仅是为了说明。同样,旨在要求保护或涵盖的主题的合理广泛范围。除其他事项外,例如,主题可以体现为方法、设备、组件或系统。因此,实施例可以例如采取硬件、软件、固件或其任何组合(除了软件本身)的形式。因此,以下详细描述并非旨在限制。
在整个说明书和权利要求书中,术语可能具有超出明确陈述的含义的上下文中建议或暗示的细微含义。同样地,如本文中所使用的短语“在一个实施例中”不一定指相同的实施例,并且如本文中所使用的短语“在另一实施例中”不一定指不同的实施例。例如,旨在要求保护的主题全部或部分地包括示例实施例的组合。
通常,可以至少部分地根据上下文的使用来理解术语。例如,本文所使用的诸如“和”、“或”或“和/或”之类的术语可以包括各种含义,其可以至少部分地取决于使用这些术语的上下文。通常,“或”如果用于关联列表,例如A、B或C旨在表示A、B和C,则用于标识包含的意思,如果A、B或C旨在表示A、B或C,则或用于标识排除的意思。另外,本文所使用的术语“一个或多个”,至少部分地取决于上下文,可以用于以单数形式描述任何特征、结构或特性,或者可以用于以复数形式描述特征、结构或特性的组合。类似地,诸如“一”,“一个”或“该”的术语,至少部分地取决于上下文,可以再次理解为传达单数用法或传达复数用法。另外,术语“基于”,至少部分地取决于上下文,可以被理解为不一定旨在传达一组排他的因素,并且代替地可以允许存在不一定必须明确描述的附加因素。
下面参考方法和设备的框图和操作说明来描述本公开。应当理解,框图或操作说明的每个框以及框图或操作说明中的框的组合可以借助于模拟或数字硬件和计算机程序指令来实现。可以将这些计算机程序指令提供给通用计算机的处理器以改变其功能(如本文中详细描述)、专用计算机、ASIC或其他可编程数据处理装置,可以使得所述指令在由所述计算机或其他可编程数据处理设备执行时,实现框图或一个或多个操作框中指定的功能/动作。在一些替代实施方式中,框中指出的功能/动作可以不按操作说明中指出的顺序发生。例如,取决于所涉及的功能/动作,连续示出的两个框实际上可以基本上同时被执行,或者有时可以以相反的顺序执行这些框。
可以将这些计算机程序指令提供给以下处理器:通用计算机,以改变其功能为专有目的;专用计算机;ASIC;或其他可编程数字数据处理设备,从而使通过所述计算机或其他可编程数据处理设备的处理器执行的所述指令实现框图或一个或多个操作框中指定的功能/动作,从而根据本文所述的实施例转换其功能。
为了本公开的目的,计算机可读介质(或计算机可读存储介质)存储计算机数据,该数据可包括可由计算机以机器可读的形式执行的计算机程序代码(或计算机可执行指令)。作为示例而非限制,计算机可读介质可以包括用于数据的有形或固定存储的计算机可读存储介质,或者用于包含代码的信号的瞬时解释的通信介质。本文所使用的计算机可读存储介质是指物理或有形存储(与信号相反),并且包括但不限于以任何方法或技术实现的用于有形信息存储的易失性和非易失性、可移动和不可移动介质,所述信息包括计算机可读指令、数据结构、程序模块或其他数据。计算机可读存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其他固态存储技术、CD-ROM、DVD或其他光学存储、磁带、磁带、磁盘存储或其他磁存储设备,或任何其他可用于有形地存储所需信息、数据或指令并可由计算机或处理器访问的物理或材料介质。
图1是示出根据本公开的一些实施例的NAND闪存封装的布局的逻辑示意图。
NAND闪存封装(102)包括存储设备。在一些实施例中,NAND闪存封装(102)包括例如在固态存储设备(SSD)中使用的存储芯片。SSD设备包括用作硬盘、便携式存储驱动器和其他用途的设备。NAND闪存封装(102)代表闪存设备的最高组织水平。在一些实施例中,SSD包括配置在单个电路板、基板或其他连接装置上的多个NAND闪存封装。
组织NAND闪存封装(102)的最高级别是裸片(die),如图1所示的裸片(104A,104B,104N)。NAND闪存封装(102)中的裸片的数量可以是适合于NAND闪存封装(102)的操作的任何数量。在常见情况下,NAND闪存封装将包括一个、两个或四个设备。尽管可以使用任何数量的裸片,但是裸片的数量通常是2的幂。给定的裸片(104A)是可以独立执行命令的最小单元。
给定的裸片(104A)包括一个或多个平面(106A,106B,106C和106N)。实际上,裸片包括一个或两个平面。然而,平面的数目并不明确地限于一个或两个。通常,并发操作可以在平面级别执行。
每个平面(106A,106B,106C和106N)包括一个或多个块。例如,如图所示,平面(106B)包括块(108A,108B,108C,108D和108N)。通常,块的数量受到平面大小以及定义的块大小(例如4MB或8MB)的限制。块(例如108A)是可以擦除的最小数据单元。
每个块包括多个页面。例如,如图所示,块108C包括页面(110A,110B,110C,110D,110N)。与块一样,块的数量受到平面大小以及定义的块大小(例如8KB或16KB)的限制。页面是可以写入两个的最小单位。结合块级擦除限制,为了“擦除”页面,必须擦除整个基础块,因此要求在擦除块之前先“保存”块中的其他页面,然后擦除页面。
给定的页面(例如,页面110C)包括数据部分(112)和带外区域(114)。数据部分(112)包括由NAND闪存封装(102)存储在各个页面中的用户数据。OOB部分(114)存储如本文所述的页面的各种元数据属性。OOB部分(114)包括在写操作期间生成并在读操作期间使用的奇偶校验位,以检测用户数据中的错误。一般而言,NAND Flash封装(102)可以利用各种类型的线性块编码方案来生成奇偶校验位,诸如汉明码(Hamming codes),Bose,Chaudhuri和Hocquenghem(BCH)码,Reed-Solomon编码,turbocode或低密度奇偶校验码(LDPC)。OOB部分(114)还存储逻辑块地址(LBA),该逻辑块地址标识该封装内页面(例如110C)的逻辑位置。在LBA到PBA的映射被破坏或以其他方式丢失的情况下,将LBA存储在OOB部分(114)中允许LBA到物理块地址(PBA)的重新映射。通常,LBA到PBA的映射与页面本身分开存储,并且由Flash转换层(FTL)用来将LBA(例如,读/写命令中)转换为用于提取单个页面的PBA。在某些页面(例如,块的第一页和最后一页)中,OOB区域(114)可以另外包括擦除计数、擦除密封标志、序列号和坏块指示符。
图2是示出根据本公开的一些实施例的NAND闪存封装中的数据放置和保护的示意图。
如上所述,NAND闪存封装包括多个页面(如上所述,组织为块、平面和裸片)。给定封装中的页面与最大物理长度相关联。在一些实施例中,最大物理长度可以由底层的NAND闪存封装指定,并且可以是封装的物理电路的函数。
图2示出了具有最大物理尺寸(例如8KB或16KB)的所选页面(202)。页面(202)包括用户数据部分和奇偶校验部分(如前所述)。在所示的实施例中,页面(202)包括最大逻辑页面(202A)和最大奇偶校验部分(202B)。当在NAND Flash封装中实现可变页面大小时,这些部分代表最大的受支持页面大小。
与现有的NAND闪存设备相反,用户数据和奇偶校验数据在给定页面内被分段和交织(202)。如图所示,用户数据(U1至Uk)(例如204A,206A)和奇偶校验数据(P1至Pk)(例如204B,206B)的多个元组(204、206、208)被布置在给定页面内。在一些实施例中,每个元组中的总用户位等于最大逻辑页面大小(202A),而每个元组中的总奇偶校验位等于最大奇偶校验大小(202B)。在一个实施例中,总用户位和全部奇偶校验位可以分别小于最大逻辑页面大小(202A)和最大奇偶校验部分(202B)。在一些实施例中,总用户位和总奇偶校验位可以分别不超过最大逻辑页面大小(202A)和最大奇偶校验部分(202B)。在一些实施例中,每个用户数据项(例如204A和206A)可以具有相同大小,并且每个奇偶校验数据项(例如204B和206B)可以具有相同大小。在其他实施例中,这些大小可以变化。
图2另外分别示出了用户数据(204A,206A)的位级表示(210、212)。如图所示,用户数据的每一项包括许多位(例如,位210A-210L和位212A-L)。在一个实施例中,一些位包括例如包括已知位的预存储位模式(210J,210L和212L)。在一个实施例中,当用户数据的长度没有填充整个码字时,可以在用户位之间插入预存储的位模式。例如,在用户数据(210)中,用户数据中的总数据比码字长度小两位。在该实施例中,在用户数据的末尾插入预存储的已知位模式(210J,210L)。作为另一示例,用户数据(212)中的用户数据比码字长度小一位,因此预存储的位212L被附加到用户数据的末尾。
在一些实施例中,可以使用更高阶的伽罗瓦域(GF)来编码数据。在所示的实施例中,字段GF(4)用于编码用户数据。因此,如符号分隔符210M,210N,210P和212M,212N和212P所示,编码的单位等于两个位。当使用GF(4)符号时,每个符号可以表示为0、1、2或3。以GF(4)字段为例,位210I和210J形成单个符号,而位210K和210L形成第二符号。由于使用预先存储的位模式210J和210L来加长用户数据,因此已知GF符号的一位。GF符号中已知位的存在在本文中被称为维度折叠。
图3是根据本公开的一些实施例的奇偶校验矩阵的示意图。
矩阵包括全矩阵H3,其包括奇偶校验子矩阵HP3。如图所示,全矩阵H3包括具有Z行和U1+P1列的奇偶校验矩阵。在一个实施例中,由于用户数据位的数量减少和奇偶校验位的数量增加,全奇偶校验矩阵结果与具有低码率的码字一起使用。
矩阵H3包括具有Y行和U2+P2列的子矩阵H2。如图所示,矩阵H2是H3的子矩阵。矩阵H3还包括具有X行和U3+P3列的子矩阵H1。与子矩阵H2一样,H1是H3和H2的子矩阵。在所示出的实施例中,在奇偶校验位的数目少而用户数据位的数目大的情况下,奇偶校验子矩阵H1提供最高的码率。
如上所述,可以基于要被写入NAND闪存页面的底层用户数据来选择单个矩阵H3和子矩阵。以这种方式,仅必须生成单个矩阵(H3),并将其用于奇偶校验和编码。通常,仅可使用定义数量的子矩阵。在这种情况下,如结合图2所讨论的,不匹配U1,U2和U3的维度的用户数据可以使用预先存储的、与已知模式匹配的位模式进行维度折叠。
如将更详细讨论的,系统可以仅存储H3矩阵(并且通过代理存储子矩阵H2和H1)。在编码期间,系统确定用户数据的长度,并且如果需要,则将用户数据进行维度折叠以匹配预定的用户数据长度(例如,U1,U2和U3)。单个编码矩阵的存储极大地降低了NAND闪存封装的复杂性,并降低了编码期间所需的复杂性和计算资源。如将要讨论的,较低码率矩阵的可用性在置信传播期间建立了更多的连接,并在需要时允许更强的纠错。
图4是示出根据本公开的一些实施例的用于NAND闪存存储器中的可变大小的数据的编码过程的示意图。
用户数据(402)包括多个位,包括位(402A,402B)和其余位(402C)。在所示的实施例中,位的总数(402A,402B,402C)可以小于定义的可变尺寸页面。在一个实施例中,位(402A,402B)在GF(4)示例性有限域中形成符号(symbol)。
如上所述,将预存储的位模式(404A,404B)与位(402A,402B)交织形成第一符号(404A,402A)和第二符号(404B,402B)。假设用户数据(402C)可被二整除,则用户数据(402C)同样可以被分割成单独的符号。
在交织预存储的位模式(404A,404B)之后,扩展的用户数据(404)被发送到编码器(406)以生成奇偶校验值,并且通过代理的完全形成的码字来代表用户数据。
在一个实施例中,编码器(406)的输出是码字(408)。在一实施例中,编码器的奇偶校验位被存储在码字(408)中作为奇偶校验数据(408B)。用户数据(402A-402C)同样存储在代码字(408)中。但是,值得注意的是,预存储的位模式(404A–404B)不包含在码字(408)中。而是,在一些实施例中,原始用户位(402A,402B)使用低速率强代码(例如1/2代码)进行编码。低速率码的结果输出被存储为奇偶校验扩展(408A)。在生成奇偶校验扩展(408A)之后,将丢弃预存储的位模式(404A–404B),并且不将其写入代码字。所得空间用于存储奇偶校验扩展(408)。
图5是根据本公开的一些实施例的用于生成奇偶校验扩展的消息传递算法的Tanner图。
在所示的实施例中,该图表示用于生成先前讨论的奇偶校验扩展的矩阵(506)。另外,所示出的实施例示出了矩阵(506)的Tanner图表示,其包括与矩阵(506)的行相对应的校验节点(502A-502D)和与矩阵(506)的列相对应的位节点(504A-504H)。如本领域中已知的,校验节点(502A-502D)和位节点(504A-504H)之间的边缘代表矩阵(506)中包括的系数。
位节点(504A)示出了两个位b1和b2。在一个实施例中,位b1对应于用户位,位b2对应于在编码过程中插入的预存储位。位b1和b2一起对应于一符号(例如,GF(4)符号)。在一个实施例中,通过奇偶校验扩展仅保护用户位(例如,b1)。作为一个示例,使用GF(4)码,将连接校验节点和位节点的边缘上的系数(例如,α,β和μ)映射为1。换句话说,图中仅使用几何连接。通过利用这种配置,在维度折叠之后可实现快速的编码和解码过程。因此,在示出的实施例中,仅来自第一位节点(504A)的位b1被传递到具有边缘系数为1的连接的校验节点(502B,502D)。对于其余的校验节点和位节点执行类似的处理。
图6是示出根据本公开的一些实施例的用于字内编码以生成用于NAND闪存页面的附加奇偶校验的方法的示意图。
前面的描述描述了用于调整码率和扩展用户数据的单个符号的技术。如图2所示,多个码字存储在单个NAND闪存页面中。因此,单个NAND闪存页面可能具有一个或多个不包含编码用户数据的码字的“空”槽位。
在当前系统中,NAND闪存封装被配置为写入“无效数据”(例如,所有数据)以避免在页面中打开字线。但是,此虚拟数据的写入会导致NAND闪存封装的损耗增加,并缩短NAND闪存器件的寿命。因此,与在给定页面中存储“无效数据”相比,存在更好地利用空槽位的需求。
在所示的实施例中,从存储在NAND闪存页面内的多个码字的用户数据中提取多个扩展符号(602A,602B,602C)。生成扩展符号的细节已在前面描述,在此不再赘述。如所讨论的,给定符号可以包括用于基于GF(4)的编码方案中的两位符号。在一些实施例中,在基于GF(2)的编码方案中,符号可以包括单位符号。
扩展符号(602A,602B,602C)被连接以形成扩展符号码字(604)。该码字(604)被输入到码字内编码器(606)中。在一些实施例中,码字内编码器(606)可以包括任何先前讨论的编码器。码字内编码器(606)的输出包括附加的奇偶校验码,该奇偶校验码作为奇偶校验增强数据(608)存储在NAND闪存页面的空白空间中。
如上所述,附加奇偶校验增强数据(608)允许对用户数据中包括的硬编码符号进行附加级别的纠错。由于必须利用给定NAND闪存页中的所有数据,因此,相对于当前系统存储“无效数据”,使用附加的纠错数据可以有效利用基础空间。
图7是示出根据本公开的一些实施例的用于NAND闪存设备的写操作的流程图。
在所示的实施例中,该方法接收包括用户数据和NAND闪存设备的LBA的写命令。作为响应,该方法执行图7所示的步骤。在一些实施例中,图示的方法可以由NAND闪存设备的控制器执行。
在步骤702中,该方法将LBA映射到NAND闪存设备的对应的PBA。在一些实施例中,LBA到PBA的映射可以由NAND闪存设备的FTL执行。
在步骤704中,该方法基于PBA标识的页面的所需码率来确定ECC强度。
在一个实施例中,所需的码率可以由NAND闪存设备的介质管理层来标识。在一个实施例中,码率可以基于由PBA标识的给定页面内存储的码字的大小而变化。在一个实施例中,识别ECC强度可以包括识别适当的矩阵或子矩阵(在图3中讨论)以用于编码通过该方法接收的用户数据。
在步骤706中,该方法接收用户有效负载。在一个实施例中,接收用户有效负载包括接收由该方法接收的写命令中包括的用户数据的位。
在步骤708中,该方法以准备好的模式在用户有效负载内扩展符号。
如在图2和图4的描述中所描述的(通过引用合并),所接收的用户有效负载可以包括比相应码字长度更少的位。在这种情况下,该方法使用预存储的位模式扩展单个符号,以生成扩展的用户数据,该扩展的用户数据与给定NAND Flash页面中码字的用户数据的长度匹配。在一个实施例中,该方法扩展包括在用户数据中的总位中多个位。在一个实施例中,该方法利用GF(4)维度折叠方案来扩展准备好的位模式,如结合图2至图4的更充分的描述。
在步骤710,该方法对扩展的用户数据进行编码。
如上所述,在步骤708之后,扩展的用户数据包括原始用户数据和在维度折叠过程中使用的任何扩展的预存储位模式。在步骤710,该方法利用在步骤704中选择的矩阵或子矩阵对扩展数据进行编码,从而生成与扩展数据相对应的码字。在一个实施例中,可以使用任何类型的线性块编码器来编码数据(例如,LDPC编码器)。
在步骤712中,该方法确定在NAND闪存页面内是否还剩余空间。
如结合图6所述,存储在给定NAND闪存页面内的可变码字大小可能导致包括“空”部分的整个页面的片段。如前所述,该方法可以使用该空的空间来生成附加的错误检查数据。
在步骤714中,在确定NAND闪存页面包括额外空间之后,该方法执行交织编码过程。
在一个实施例中,该方法可以提取包括在NAND闪存页面内的一个或多个扩展符号。如上所述,扩展符号可包括在步骤708中生成的用户数据的2位段。也就是说,扩展符号包括一位用户数据和一位预存储位数据。在一个实施例中,该方法连接扩展符号以形成扩展符号码字。然后,该方法将该扩展符号码字输入到帧内码字编码器(例如,LDPC编码器)中,以生成一组附加的奇偶校验增强位(additional partiy plus bit)。
在步骤716中,该方法减小伽罗瓦域维度以使用Tanner图对扩展符号进行编码。
如结合图4所述,在步骤710中对扩展用户数据进行编码以生成码字的奇偶校验数据之后,该方法提取包括在扩展用户数据内的扩展符号。作为第一步,该方法去除扩展符号的扩展位,并将最终码字中的用户数据设置为原始用户数据。
然后,该方法可以利用扩展符号的用户数据,使用图5中描述的Tanner图或类似的Tanner图来生成奇偶校验扩展。以这种方式,该方法用奇偶校验扩展来替换扩展位,如图4所示。
在步骤718中,该方法生成最终码字的奇偶校验增强数据,并生成最终码字。
在一个实施例中,该方法在预定位置将在步骤714中生成的奇偶校验增强数据插入最终码字中。该方法可以附加地添加使用缩小维度的伽罗瓦域符号生成的奇偶校验扩展作为头部。图8示出了所得的码字。
图8是示出根据本公开的一些实施例的在解码过程期间的数据变换的示意图。
在所示的实施例中,响应于读取命令,读取给定的NAND闪存页面(802)。如图所示,页面(802)包括多个码字和可选的奇偶校验增强数据。这些码字和奇偶校验增强数据是根据前面讨论的方法而生成的。
在所示的实施例中,使用奇偶校验扩展以及码字的U1和U2位执行第一临时解码(806)。如前所述,位U1和U2使用预先存储的模式扩展,用户位U1和U2分别编码以生成奇偶校验扩展数据。因此,可以对这些位(U1和U2)进行解码,并且如果需要,可以使用与奇偶校验数据分开的奇偶校验扩展来纠错。如图所示,用户位UN和临时解码(806)的奇偶校验数据可能仍然包含一个或多个错误。
在第二临时解码(808)中,使用在第一解码期间从奇偶校验扩展数据提取的预存储位模式来扩展符号位(U1和U2)。因此,第二临时解码(808)仅具有位UN的全部编码码字与可能包括错误的奇偶校验数据对应。
将第二临时解码(808)输入到诸如LDPC解码器的解码器(810)中以生成解码数据(812)。
图9是示出根据本公开的一些实施例的用于NAND闪存设备的读取操作的流程图。
在所示的实施例中,该方法接收包括NAND闪存设备的LBA的读取命令。作为响应,该方法执行图9所示的步骤。在一些实施例中,图示的方法可以由NAND闪存设备的控制器执行。
在步骤902中,该方法加载代码配置矩阵,并在与LBA关联的PBA处检索有效负载的长度。在一个实施例中,如上所述,该方法还利用FTL从LBA生成PBA。在一个实施例中,矩阵包括图3中讨论的矩阵。
在步骤904中,该方法针对任何扩展符号使用低速率ECC执行硬解码。
如上所述,该方法可以分析给定的码字以确定是否存在奇偶校验扩展,并且可以使用奇偶校验扩展来硬解码相应的扩展用户位。
在步骤906中,该方法确定对扩展符号的硬解码是否成功(即,无错误)。在一个实施例中,可以基于用于对符号进行硬解码的ECC解码器的输出来做出步骤906中的决定。
如果该方法确定成功解码了一个或更多个扩展符号,则该方法在步骤908中“冻结”扩展符号。在一个实施例中,冻结符号包括防止在随后的解码步骤中对符号进行任何更改(例如,如果解码器将扩展符号的位标识为包含错误)。另外,该方法设置扩展符号的最大置信度值。如将要描述的,可以利用迭代软解码器来解码整个码字。因此,该方法将预解码符号的置信度设置为例如一,以指示扩展符号的位是准确且无错误的最大置信度。
在步骤910,该方法确定在NAND闪存页面中是否存在奇偶校验增强数据。如上所述,该方法可以分析整个页面内容以确定是否存在用于页面中的扩展符号的奇偶校验增强数据。
在步骤912中,如果在页面中存在奇偶校验增强数据,则该方法使用先前讨论的码字内解码器对页面中包括的符号进行解码。在一个实施例中,该方法可以额外地从NAND闪存页面移除奇偶校验增强数据以用于进一步处理的目的(奇偶校验增强数据保留在NAND闪存设备上)。然后该方法可以返回到步骤904,并尝试再次解码扩展的符号。如果成功解码了扩展符号,则将冻结这些符号并使置信度最大化。可选地,如果解码再次失败,则该方法在步骤910中继续检查奇偶校验增强数据。由于该部分已被暂时移除,因此步骤910将失败。因此,该方法将进行到步骤914。
在步骤914中,该方法冻结插入的位并将所述的位置信度设置为最大值,以用于随后的软决策解码。如上所述,插入的位包括在GF折叠过程期间插入的预存储位模式。因此,虽然该方法可能不能解码扩展符号的用户位,但是该方法可以将置信度设置为对于插入的用于生成奇偶校验扩展的已知位的最大值。
在步骤916,该方法使用全奇偶校验矩阵来执行码字的迭代解码。如图3所示,全奇偶校验矩阵可以包括最大大小的奇偶校验矩阵。在所示的实施例中,该方法利用迭代的消息传递解码算法。在所示的实施例中,该算法可以包括软信息解码算法。在一个实施例中,除了任何被成功解码并被设置为具有最大置信度值的插入位或扩展符号,所有用户数据被设置为50%的置信度。
在步骤918中,该方法使用部分矩阵来检查码字的奇偶性。如图3所示,所使用的部分矩阵可以取决于如图2中所描述的用户数据和奇偶校验数据的长度。
在步骤920中,该方法确定使用部分矩阵的奇偶校验是否被通过。
在步骤922中,该方法确定使用部分矩阵的奇偶校验未被通过,并且如图3所示,继续执行使用完整矩阵的奇偶校验。
在确定奇偶校验已经通过之后,该方法在步骤924丢弃插入的位。如上所述,解码用户数据的最终结果包括预存储的位模式。因此,步骤924中的方法去除插入的预存储位模式以生成最终的解码用户数据。
在步骤926,该方法在丢弃插入的位之后返回用户数据。在一些实施例中,该方法可以进一步指示从页面返回的数据通过了CRC完整性检查。
图10是示出根据本公开的一些实施例的用于访问NAND闪存设备的设备硬件示意图。
客户端设备(1000)可以包括比图10所示的组件更多或更少的组件。然而,所示组件足以公开用于实施本公开的说明性实施例。
如图10所示,客户端设备(1000)包括经由总线(1014)与大容量存储器(1004)通信的处理单元(CPU)(1002)。客户端设备(1000)还包括一个或更多个网络接口(1016)、音频接口(1018)、显示器(1020)、小键盘(1022)、照明器(1024)、输入/输出接口(1026)、相机或其它光学、热或电磁传感器(1028)。如本领域技术人员所理解的,客户端设备(1000)可以包括一个相机/传感器(1028)或多个相机/传感器(1028)。
客户端设备(1000)可以可选地与基站(未示出)通信,或者直接与另一计算设备通信。网络接口(1016)包括用于将客户端设备(1000)连接到一个或多个网络的电路,并且被构造为与一种或多种通信协议和技术一起使用。网络接口(1016)有时称为收发器,收发设备或网络接口卡(NIC)。
音频接口(1018)被布置成产生和接收诸如人类声音之类的音频信号。例如,音频接口(1018)可以连接到扬声器和麦克风(未示出),以使得能够与其他人进行远程通信并生成用于某些动作的音频确认。显示器(1020)可以是液晶显示器(LCD),气体等离子体,发光二极管(LED)或与计算设备一起使用的任何其他类型的显示器。显示器(1020)还可以包括触敏屏幕,该触敏屏幕被布置为接收来自诸如触笔或来自人手的手指的对象的输入。
键盘(1022)可以包括被布置为接收来自用户的输入的任何输入设备。例如,小键盘(1022)可以包括按钮数字拨盘或键盘。键盘(1022)还可包括与选择和发送图像相关联的命令按钮。照明器(1024)可以提供状态指示并提供光。照明器(1024)可以在特定时间段内或响应事件保持活动状态。例如,当照明器(1024)被激活时,其可以使键盘(1022)上的按钮背光并且在客户端设备被通电时保持点亮。而且,当执行特定动作(例如拨打另一个客户端设备)时,照明器(1024)可以以各种模式使这些按钮背光。照明器(1024)还可响应于动作而使位于客户端设备的透明或半透明壳体内的光源照明。
客户端设备(1000)还包括用于与外部设备或其他输入或图10中未示出的设备进行通信的输入/输出接口(1026)。输入/输出接口(1026)可以利用一种或多种通信技术,例如USB、红外、蓝牙TM等。
大容量存储器(1004)包括RAM(1006)、ROM(1010)和其他存储装置。大容量存储器(1004)示出了用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的计算机存储介质的另一示例。大容量存储器(1004)存储用于控制客户端设备(1000)的低级操作的基本输入/输出系统(“BIOS”)(1012)。大容量存储器还可以存储用于控制客户端设备(1000)的操作的操作系统。应当理解的是,该组件可以包括诸如UNIX或LINUXTM版本的通用操作系统,或诸如Windows ClientTM或操作系统的专用客户端通信操作系统。操作系统可以包括Java虚拟机模块或与Java虚拟机模块连接,使得能够通过Java应用程序控制硬件组件和操作系统操作。
存储器(1004)进一步包括文件系统(1008)。在一个实施例中,文件系统(1008)可以包括诸如ext3之类的标准文件系统或任何合适的文件系统。文件系统(1008)向存储设备(未示出)发出读取、写入和其他命令。在一个实施例中,文件系统(1008)向NAND闪存(1030)发出这样的命令。在一个实施例中,NAND闪存(1030)可以包括实现一个或多个NAND闪存芯片(例如,通过引用并入的图1的描述中描述的芯片(304))的固态驱动器或类似设备。通常,NAND闪存(1030)包括实现诸如图1所示的芯片的任何基于NAND闪存的设备。在一个实施例中,NAND闪存(1030)可以另外包括被配置为管理对NAND闪存(1030)的访问和来自NAND闪存(1030)的访问的控制器设备。在所示的实施例中,NAND闪存(1030)中的该控制器可以执行先前讨论的一些或全部操作(例如,编码、解码、维度折叠等)。
为了本公开的目的,模块是执行或便于本文描述的过程、特征和/或功能的软件、硬件或固件(或其组合)系统、过程或功能、或其组件(具有或没有人机互动或增强)。模块可以包括子模块。模块的软件组件可以存储在计算机可读介质上,以由处理器执行。模块可以与一台或多台服务器集成在一起,也可以由一台或多台服务器加载并执行。一个或多个模块可以被分组为引擎或应用程序。
本领域技术人员将认识到,可以以许多方式来实现本公开的方法和系统,因此本公开的方法和系统将不受前述示例性实施例和示例的限制。换句话说,由单个或多个组件,以硬件和软件或固件的各种组合以及各个功能来执行的功能元件可以在客户端级别或服务器级别或两者上的软件应用程序中分布。就此,本文描述的不同实施例的任何数量的特征可以被组合成单个或多个实施例,并且可能具有少于或大于本文描述的所有特征的替代实施例。
功能也可以以现在已知或将要已知的方式全部或部分地分布在多个组件之间。因此,在实现本文描述的功能、特征、界面和偏好时,多种软件/硬件/固件组合是可能的。此外,本公开的范围涵盖用于执行所描述的特征、功能和接口的常规已知方式,以及如那些现在和以后的本领域技术人员所理解的那样可以对本文所述的硬件或软件或固件组件进行的那些变型和修改。
此外,通过示例的方式提供了在本公开中作为流程图呈现和描述的方法的实施例,以便提供对技术的更完整的理解。所公开的方法不限于本文提出的操作和逻辑流程。替换实施例得以考虑,其中各种操作的顺序被改变,并且被描述为较大操作的一部分的子操作被独立地执行。
尽管出于本公开的目的已经描述了各种实施例,但是这样的实施例不应被认为将本公开的教导限于那些实施例。可以对上述元件和操作进行各种改变和修改以获得保留在本公开中描述的系统和过程的范围内的结果。
Claims (22)
1.一种方法,包括:
接收写指令,所述写指令包括用户数据;
根据所述用户数据生成扩展用户数据,所述扩展用户数据包括至少一符号,所述符号包括一位用户数据和一已知位;
通过对所述扩展用户数据进行编码来生成奇偶校验数据;
通过对所述位用户数据进行编码来生成奇偶校验扩展数据;并且
将码字写入非易失性存储设备的页面中,所述码字包括所述奇偶校验扩展数据、所述用户数据和所述奇偶校验数据。
2.根据权利要求1所述的方法,所述生成扩展用户数据包括:生成至少一GF(4)符号,所述GF(4)符号包括所述位用户数据和所述已知位。
3.根据权利要求1所述的方法,其进一步包括识别与所述用户数据或所述非易失性存储设备的页面二者之一相关联的所需码率。
4.根据权利要求3所述的方法,所述生成奇偶校验数据包括访问由所述非易失性存储设备存储的奇偶校验矩阵,所述奇偶校验矩阵包括全奇偶校验矩阵或部分奇偶校验矩阵。
5.根据权利要求4所述的方法,所述访问奇偶校验矩阵还包括:基于所需的码率来识别是访问全奇偶校验矩阵还是部分奇偶校验矩阵。
6.根据权利要求1所述的方法,还包括:
识别所述非易失性存储设备的页面包括至少一个空的部分;
从所述页面提取一个或更多个扩展符号;
连接所述一个或更多个扩展符号;
通过使用码字内编码器对所述一个或更多个扩展符号进行编码来生成奇偶校验增强数据;和
在所述码字写入之前将所述奇偶校验增强数据包括在所述码字中。
7.根据权利要求1所述的方法,所述生成奇偶校验扩展包括:使用Tanner图对所述扩展符号进行编码。
8.根据权利要求1所述的方法,所述基于所述用户数据生成扩展用户数据包括:在所述用户数据的位之间交织所述预存储的位模式。
9.根据权利要求1所述的方法,还包括:
响应于读取指令从所述非易失性存储设备中检索码字;
识别包括在所述码字中的扩展符号;
硬解码所述扩展符号以获得解码后的扩展符号;
冻结所述解码后的扩展符号并为所述解码后的扩展符号设置最大置信度;
通过使用部分奇偶校验矩阵执行码字的奇偶校验来生成解码后的码字,该奇偶校验包括迭代软决策解码过程;和
通过从所述解码后的码字中丢掉一个或多个插入的位来生成解码后的用户数据。
10.根据权利要求9所述的方法,所述硬解码所述扩展符号以获得解码后的扩展符号还包括:
检测所述扩展符号不能被解码;
识别所述码字中的奇偶校验增强数据;和
使用所述码字的奇偶校验增强数据对所述扩展符号进行解码。
11.一种方法,包括:
响应于读取指令从非易失性存储设备中检索码字;
识别包括在所述码字中的扩展符号,所述扩展符号包括一符号,所述符号包括一位用户数据和一已知位;
硬解码所述扩展符号以获得解码后的扩展符号;
冻结所述解码后的扩展符号并为所述解码后的扩展符号设置最大置信度;
通过使用部分奇偶校验矩阵执行码字的奇偶校验来生成解码后的码字,该奇偶校验包括迭代决策决解码过程;和
通过从所述解码后的码字中丢掉一个或多个插入的位来生成解码后的用户数据。
12.根据权利要求11所述的方法,所述硬解码所述扩展符号以获得解码的扩展符号还包括:
检测到所述扩展符号不能被解码;
识别所述码字中的奇偶校验增强数据;和
使用所述码字的奇偶校验增强数据对所述扩展符号进行解码。
13.一种设备,包括:
处理器;
存储用户数据的多个页面;
用于有形地在其上存储供所述处理器执行的程序逻辑的存储介质,所存储的程序逻辑包括:
由所述处理器执行的用于接收写入指令的逻辑,所述写入指令包括用户数据;
由所述处理器执行的用于所述基于用户数据生成扩展用户数据的逻辑,所述扩展用户数据包括至少一符号,该符号包括一位用户数据和一已知位;
由所述处理器执行的用于通过对所述扩展用户数据进行编码来生成奇偶校验数据的逻辑;
由所述处理器执行的用于通过对所述位用户数据进行编码来生成奇偶校验扩展数据的逻辑;和
由所述处理器执行的用于将码字写入多个页面中的页面的逻辑,所述码字包括所述奇偶校验扩展、所述用户数据和所述奇偶校验数据。
14.根据权利要求11所述的设备,所述用于生成扩展用户数据的逻辑包括由所述处理器执行的用于生成至少一GF(4)符号的逻辑,所述GF(4)符号包括所述位用户数据和所述已知位。
15.根据权利要求13所述的设备,其进一步包含由所述处理器执行的逻辑,所述逻辑用于识别与所述用户数据或所述多个页面中的一页面二者之一相关联的所需码率。
16.根据权利要求14所述的设备,所述用于生成奇偶校验数据的逻辑包括由所述处理器执行的用于访问奇偶校验矩阵的逻辑,所述奇偶校验矩阵包括全奇偶校验矩阵或部分奇偶校验矩阵。
17.根据权利要求15所述的设备,所述用于访问奇偶校验矩阵的逻辑还包括由所述处理器执行的逻辑,该逻辑用于基于所需的码率来识别是访问全奇偶校验矩阵还是部分奇偶校验矩阵。
18.根据权利要求13所述的设备,所述存储的程序逻辑还包括:
由所述处理器执行的用于识别多个页面中的一个页面包括至少一个空的部分的逻辑;
由所述处理器执行的用于从所述页面提取一个或更多个扩展符号的逻辑;
由所述处理器执行的用于连接一个或更多个扩展符号的逻辑;
由所述处理器执行的用于通过使用码字内编码器对一个或更多个扩展符号进行编码来生成奇偶校验增强数据的逻辑;和
由所述处理器执行的用于在所述码字写入之前将所述奇偶校验增强数据包括在所述码字中的逻辑
19.根据权利要求13所述的设备,所述用于生成奇偶校验扩展的逻辑包括由所述处理器执行的用于使用Tanner图对所述扩展符号进行编码的逻辑。
20.根据权利要求13所述的设备,所述用于基于所述用户数据来生成扩展用户数据的逻辑包括包括由所述处理器执行的用于在所述用户数据的位之间交织所述预存储位模式的逻辑。
21.根据权利要求13所述的设备,所述存储的程序逻辑还包括:
由所述处理器执行的用于响应于读取指令从多个页面中的一个页面检索码字逻辑;
由所述处理器执行的用于识别包括在所述码字中的扩展符号的逻辑;
由所述处理器执行的用于硬解码扩展符号以获得解码后的扩展符号的逻辑;
由所述处理器执行的用于冻结所述解码后的扩展符号并为解码后的扩展符号设置最大置信度的逻辑;
由所述处理器执行的用于通过使用部分奇偶校验矩阵执行码字的奇偶校验来生成解码后的码字的逻辑,该奇偶校验包括迭代的软决策解码过程;和
由所述处理器执行的用于通过从所述解码的码字中丢掉一个或多个插入的位来生成解码后的用户数据的逻辑。
22.根据权利要求20所述的设备,用于硬解码所述扩展符号以获得解码后的扩展符号的逻辑还包括:
由所述处理器执行的用于检测所述扩展符号不能被解码的逻辑;
由所述处理器执行的用于识别所述码字中的奇偶校验增强数据的逻辑;和
由所述处理器执行的用于使用所述码字的奇偶校验增强数据对所述扩展符号进行解码的逻辑。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/911,819 | 2018-03-05 | ||
US15/911,819 US10649841B2 (en) | 2018-03-05 | 2018-03-05 | Supporting multiple page lengths with unique error correction coding via galois field dimension folding |
PCT/US2019/019068 WO2019173064A1 (en) | 2018-03-05 | 2019-02-22 | Supporting multiple page lengths with unique error correction coding via galois field dimension folding |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111788559A true CN111788559A (zh) | 2020-10-16 |
Family
ID=67768093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980016429.0A Pending CN111788559A (zh) | 2018-03-05 | 2019-02-22 | 通过伽罗瓦域维折叠支持具有唯一纠错码的多页长度 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10649841B2 (zh) |
CN (1) | CN111788559A (zh) |
WO (1) | WO2019173064A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI787848B (zh) * | 2021-03-17 | 2022-12-21 | 日商鎧俠股份有限公司 | 記憶體系統 |
TWI788860B (zh) * | 2020-12-16 | 2023-01-01 | 日商鎧俠股份有限公司 | 記憶體系統 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111857883B (zh) * | 2020-07-23 | 2022-04-08 | 平安普惠企业管理有限公司 | 页面数据校验方法、装置、电子设备及存储介质 |
Citations (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0154538A2 (en) * | 1984-03-05 | 1985-09-11 | Ampex Corporation | Parity and syndrome generation for error and correction in digital communication systems |
US4847801A (en) * | 1987-10-26 | 1989-07-11 | Cyclotomics, Inc. | Compact galois field multiplier |
US6366941B1 (en) * | 1998-02-03 | 2002-04-02 | Texas Instruments Incorporated | Multi-dimensional Galois field multiplier |
US6721919B1 (en) * | 1999-04-06 | 2004-04-13 | International Business Machines Corporation | Shared encoder used in error correction having multiple encoders of different maximum error correction capabilities |
US20040078411A1 (en) * | 2002-10-22 | 2004-04-22 | Joshua Porten | Galois field arithmetic unit for use within a processor |
US6760742B1 (en) * | 2000-02-18 | 2004-07-06 | Texas Instruments Incorporated | Multi-dimensional galois field multiplier |
JP3622981B2 (ja) * | 1995-10-03 | 2005-02-23 | 松下電器産業株式会社 | 誤り訂正符号化装置及び方法、並びに誤り訂正復号化装置及び方法 |
CN1647393A (zh) * | 2002-04-05 | 2005-07-27 | 皇家飞利浦电子股份有限公司 | 将纠错附加层嵌入纠错码的方法和装置 |
CN1647392A (zh) * | 2002-04-05 | 2005-07-27 | 皇家飞利浦电子股份有限公司 | 用于将附加纠错层嵌入到纠错码中的方法和设备 |
US20060195768A1 (en) * | 2005-02-14 | 2006-08-31 | Hitachi Global Storage Technologies Netherlands, B.V. | Techniques for performing reduced complexity galois field arithmetic for correcting errors |
US20070094580A1 (en) * | 2004-10-12 | 2007-04-26 | Michael Livshitz | Method for selcting low density parity check (LDPC) code used for encoding of variable length data |
CN101133557A (zh) * | 2004-06-24 | 2008-02-27 | Lg电子株式会社 | 用ldpc码的自适应可变码率的编码和解码方法 |
US20080294965A1 (en) * | 2007-05-24 | 2008-11-27 | Realtek Semiconductor Corp. | Data Writing Method For Flash Memory and Error Correction Encoding/Decoding Method Thereof |
US20090044080A1 (en) * | 2007-05-31 | 2009-02-12 | Harris Corporation | Closed Galois Field Combination |
US20090199075A1 (en) * | 2002-11-25 | 2009-08-06 | Victor Demjanenko | Array form reed-solomon implementation as an instruction set extension |
US8099655B1 (en) * | 2007-12-20 | 2012-01-17 | Pmc-Sierra Us, Inc. | Galois field multiplier system and method |
US8108760B2 (en) * | 2008-07-15 | 2012-01-31 | The Royal Institute For The Advancement Of Learning/Mcgill University | Decoding of linear codes with parity check matrix |
US8656244B1 (en) * | 2010-10-29 | 2014-02-18 | Massachusetts Institute Of Technology | Rate adaptive nonbinary LDPC codes with low encoding complexity |
US20140215285A1 (en) * | 2013-01-31 | 2014-07-31 | Lsi Corporation | Integrated-interleaved low density parity check (ldpc) codes |
US8972834B2 (en) * | 2012-08-28 | 2015-03-03 | Hughes Network Systems, Llc | System and method for communicating with low density parity check codes |
US9021336B1 (en) * | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages |
US9208018B1 (en) * | 2013-03-15 | 2015-12-08 | Pmc-Sierra, Inc. | Systems and methods for reclaiming memory for solid-state memory |
CN106066784A (zh) * | 2015-04-23 | 2016-11-02 | 阿尔特拉公司 | 用于实现伽罗华域约简的电路和方法 |
US20160378594A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Method and apparatus to decode low density parity codes |
US9619207B1 (en) * | 2014-10-27 | 2017-04-11 | Altera Corporation | Circuitry and methods for implementing Galois-field reduction |
US20170242747A1 (en) * | 2016-02-18 | 2017-08-24 | Micron Technology, Inc. | Error rate reduction |
US20170255512A1 (en) * | 2016-03-04 | 2017-09-07 | Sandisk Technologies Llc | Multi-type parity bit generation for encoding and decoding |
-
2018
- 2018-03-05 US US15/911,819 patent/US10649841B2/en active Active
-
2019
- 2019-02-22 CN CN201980016429.0A patent/CN111788559A/zh active Pending
- 2019-02-22 WO PCT/US2019/019068 patent/WO2019173064A1/en active Application Filing
Patent Citations (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0154538A2 (en) * | 1984-03-05 | 1985-09-11 | Ampex Corporation | Parity and syndrome generation for error and correction in digital communication systems |
US4847801A (en) * | 1987-10-26 | 1989-07-11 | Cyclotomics, Inc. | Compact galois field multiplier |
JP3622981B2 (ja) * | 1995-10-03 | 2005-02-23 | 松下電器産業株式会社 | 誤り訂正符号化装置及び方法、並びに誤り訂正復号化装置及び方法 |
US6366941B1 (en) * | 1998-02-03 | 2002-04-02 | Texas Instruments Incorporated | Multi-dimensional Galois field multiplier |
US6721919B1 (en) * | 1999-04-06 | 2004-04-13 | International Business Machines Corporation | Shared encoder used in error correction having multiple encoders of different maximum error correction capabilities |
US6760742B1 (en) * | 2000-02-18 | 2004-07-06 | Texas Instruments Incorporated | Multi-dimensional galois field multiplier |
CN1647393A (zh) * | 2002-04-05 | 2005-07-27 | 皇家飞利浦电子股份有限公司 | 将纠错附加层嵌入纠错码的方法和装置 |
CN1647392A (zh) * | 2002-04-05 | 2005-07-27 | 皇家飞利浦电子股份有限公司 | 用于将附加纠错层嵌入到纠错码中的方法和设备 |
US20040078411A1 (en) * | 2002-10-22 | 2004-04-22 | Joshua Porten | Galois field arithmetic unit for use within a processor |
US20090199075A1 (en) * | 2002-11-25 | 2009-08-06 | Victor Demjanenko | Array form reed-solomon implementation as an instruction set extension |
CN101133557A (zh) * | 2004-06-24 | 2008-02-27 | Lg电子株式会社 | 用ldpc码的自适应可变码率的编码和解码方法 |
US7930622B2 (en) * | 2004-06-24 | 2011-04-19 | Lg Electronics Inc. | Method of encoding and decoding adaptive to variable code rate using LDPC code |
US20070094580A1 (en) * | 2004-10-12 | 2007-04-26 | Michael Livshitz | Method for selcting low density parity check (LDPC) code used for encoding of variable length data |
US20060195768A1 (en) * | 2005-02-14 | 2006-08-31 | Hitachi Global Storage Technologies Netherlands, B.V. | Techniques for performing reduced complexity galois field arithmetic for correcting errors |
US20080294965A1 (en) * | 2007-05-24 | 2008-11-27 | Realtek Semiconductor Corp. | Data Writing Method For Flash Memory and Error Correction Encoding/Decoding Method Thereof |
US20090044080A1 (en) * | 2007-05-31 | 2009-02-12 | Harris Corporation | Closed Galois Field Combination |
US7995757B2 (en) * | 2007-05-31 | 2011-08-09 | Harris Corporation | Closed galois field combination |
US8099655B1 (en) * | 2007-12-20 | 2012-01-17 | Pmc-Sierra Us, Inc. | Galois field multiplier system and method |
US8108760B2 (en) * | 2008-07-15 | 2012-01-31 | The Royal Institute For The Advancement Of Learning/Mcgill University | Decoding of linear codes with parity check matrix |
US8656244B1 (en) * | 2010-10-29 | 2014-02-18 | Massachusetts Institute Of Technology | Rate adaptive nonbinary LDPC codes with low encoding complexity |
US9021336B1 (en) * | 2012-05-22 | 2015-04-28 | Pmc-Sierra, Inc. | Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages |
US8972834B2 (en) * | 2012-08-28 | 2015-03-03 | Hughes Network Systems, Llc | System and method for communicating with low density parity check codes |
US20140215285A1 (en) * | 2013-01-31 | 2014-07-31 | Lsi Corporation | Integrated-interleaved low density parity check (ldpc) codes |
US9208018B1 (en) * | 2013-03-15 | 2015-12-08 | Pmc-Sierra, Inc. | Systems and methods for reclaiming memory for solid-state memory |
US9619207B1 (en) * | 2014-10-27 | 2017-04-11 | Altera Corporation | Circuitry and methods for implementing Galois-field reduction |
CN106066784A (zh) * | 2015-04-23 | 2016-11-02 | 阿尔特拉公司 | 用于实现伽罗华域约简的电路和方法 |
US20160378594A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Method and apparatus to decode low density parity codes |
US20170242747A1 (en) * | 2016-02-18 | 2017-08-24 | Micron Technology, Inc. | Error rate reduction |
US20170255512A1 (en) * | 2016-03-04 | 2017-09-07 | Sandisk Technologies Llc | Multi-type parity bit generation for encoding and decoding |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI788860B (zh) * | 2020-12-16 | 2023-01-01 | 日商鎧俠股份有限公司 | 記憶體系統 |
TWI787848B (zh) * | 2021-03-17 | 2022-12-21 | 日商鎧俠股份有限公司 | 記憶體系統 |
Also Published As
Publication number | Publication date |
---|---|
WO2019173064A1 (en) | 2019-09-12 |
US20190272212A1 (en) | 2019-09-05 |
US10649841B2 (en) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11379301B2 (en) | Fractional redundant array of silicon independent elements | |
US9229853B2 (en) | Method and system for data de-duplication | |
US8769374B2 (en) | Multi-write endurance and error control coding of non-volatile memories | |
US8892809B2 (en) | Data compression and encoding in a memory system | |
US7865809B1 (en) | Data error detection and correction in non-volatile memory devices | |
CN110119246B (zh) | 使用定制错误校正来适应固态驱动器中的可变页面大小的方法 | |
CN111788559A (zh) | 通过伽罗瓦域维折叠支持具有唯一纠错码的多页长度 | |
TW200931442A (en) | Memory controller supporting rate-compatible punctured codes | |
KR20150073717A (ko) | 저장 장치 및 그것의 데이터 엔코딩 및 디코딩 방법들 | |
TW201133501A (en) | System and method of error correction of control data at a memory device | |
TW201040977A (en) | Non-volatile memory management method | |
CN112486725B (zh) | 一种对压缩数据进行纠错编码的方法和装置 | |
TWI640865B (zh) | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 | |
TWI672698B (zh) | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 | |
US20170070240A1 (en) | Memory system including error corrector and operating method thereof | |
CN109491828B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
US10855314B2 (en) | Generating and using invertible, shortened Bose-Chaudhuri-Hocquenghem codewords | |
CN107402725B (zh) | 非易失性存储装置及其数据去重复方法 | |
US9281844B2 (en) | Configurable and low power encoder for cyclic error correction codes | |
CN109697134B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
US10268537B2 (en) | Initializing a pseudo-dynamic data compression system with predetermined history data typical of actual data | |
US11461173B1 (en) | Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement | |
CN111258791B (zh) | 存储器控制方法、存储器存储装置及存储器控制电路单元 | |
CN114613420A (zh) | 编码控制方法、存储器存储装置及存储器控制电路单元 | |
TW202336756A (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 |