CN111712804A - 使用数据块的可变逻辑到物理关联的增强错误校正码能力 - Google Patents
使用数据块的可变逻辑到物理关联的增强错误校正码能力 Download PDFInfo
- Publication number
- CN111712804A CN111712804A CN201980013345.1A CN201980013345A CN111712804A CN 111712804 A CN111712804 A CN 111712804A CN 201980013345 A CN201980013345 A CN 201980013345A CN 111712804 A CN111712804 A CN 111712804A
- Authority
- CN
- China
- Prior art keywords
- data block
- error
- correction code
- error correction
- determining
- 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
- 238000012937 correction Methods 0.000 title claims abstract description 358
- 230000008859 change Effects 0.000 claims abstract description 31
- 230000004044 response Effects 0.000 claims abstract description 31
- 230000015654 memory Effects 0.000 claims description 164
- 238000012545 processing Methods 0.000 claims description 97
- 238000000034 method Methods 0.000 claims description 47
- 238000010586 diagram Methods 0.000 description 13
- 238000005192 partition Methods 0.000 description 11
- 238000013519 translation Methods 0.000 description 11
- 238000001514 detection method Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 101100060070 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CIS3 gene Proteins 0.000 description 2
- 101100231811 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) HSP150 gene Proteins 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 101100464173 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) PIR1 gene Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer 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
- 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
- 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/1072—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 multilevel memories
-
- 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
-
- 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
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
可对数据块执行第一层错误校正码操作。可确定对所述数据块的所述第一层错误校正码操作与所述数据块的错误的不成功校正相关联。响应于确定对所述数据块的所述第一层错误校正码操作与所述数据块的所述错误的所述不成功校正相关联,可执行用以将所述数据块的逻辑到物理关联从第一逻辑关联改变到第二逻辑关联的对所述数据块的重新混合操作。
Description
技术领域
本发明大体上涉及一种存储器装置,并且更具体来说,涉及使用数据块的可变逻辑到物理关联来增强错误校正码能力。
背景技术
一种存储装置可包含存储数据的一或多个存储器组件。举例来说,固态驱动器(SSD)可包含例如非易失性存储器装置的存储器装置。SSD可进一步包含SSD控制器,其可管理存储器装置中的每一者并分配待在存储器装置处存储的数据。主机系统可利用SSD并从SSD请求数据。SSD控制器可用以从对应存储器装置检索数据,并将所检索数据返回到主机系统。
附图说明
从下文给出的详细描述以及从本发明的各种实施例的附图,将更充分地理解本发明。
图1说明根据本发明的一些实施例的包含存储装置的实例计算环境。
图2是根据本发明的一些实施例的存储装置的实例控制器的框图。
图3A是根据一些实施例的对数据块执行重新混合操作并校正错误的实例方法的流程图。
图3B是根据一些实施例的对数据块执行重新混合操作以将数据块的逻辑到物理关联从第一逻辑关联改变到第二逻辑关联的实例方法的流程图。
图4A说明根据本发明的一些实施例的存储装置的数据块的实例。
图4B说明根据本发明的实施例的数据块的逻辑关联及对数据块的产品码错误校正码操作的实例。
图5说明根据本发明的一些实施例的叠加在物理存储器上的数据块的逻辑到物理关联的实例。
图6A说明根据本发明的一些实施例的叠加在物理存储器上的数据块的另一逻辑到物理关联的实例。
图6B说明根据本发明的一些实施例的数据块的另一逻辑关联的实例。
图7是根据一些实施例的对数据块执行重新混合操作的实例方法的流程图。
图8是根据一些实施例的标识与数据块相关联的事件的例子的实例方法的流程图。
图9是本发明的实施例可在其中操作的实例计算机系统的框图。
具体实施方式
一般来说,一种主机系统可利用包含一或多个存储器装置的存储装置。主机系统可提供待存储在存储装置处的数据,并且可随后检索存储在存储装置处的数据。可从存储装置内的存储器装置存储及检索数据。
存储装置的实例是固态驱动器(SSD),其包含非易失性存储器及用以管理非易失性存储器的控制器。控制器可将数据编码为某一格式以存储在存储装置处。举例来说,一类错误检测及校正码(ECC)(例如产品码)可用以对数据进行编码。在产品码中,数据块可以行及列的二维阵列布置或分段。可用例如奇偶码的错误校正码对二维阵列的每一行及每一列进行编码。二维的每一行及每一列的数据可被称为码字。码字可包含用户数据、错误校正码、元数据或其它信息中的一或多者。码字可为存储在一或多个存储器装置上的原始位模式的编码版本。行及列的二维阵列可为数据块的逻辑表示。二维阵列的每一行及每一列可具有与物理非易失性存储器的逻辑关联。行与列之间的交点可包含重叠区,其中特定行及列重叠。每一重叠区可包含一组数据位。
在执行错误校正码操作时,可在解码操作期间将存储在存储装置上的编码数据从存储装置传输到控制器。控制器可执行解码操作以将编码数据解码为在存储器装置上编码的位的原始序列。由于噪声、干扰、失真、位同步错误或来自媒体自身的错误(固有的及非固有的两者),由控制器接收的解码数据的数个位可能已被翻转。举例来说,最初可能被存储为0的位可能翻转为1,反之亦然。
常规存储装置可执行错误校正码操作的层,以尝试校正数据块上的错误。举例来说,常规存储装置可对二维阵列的行及列执行第一层错误校正码操作(例如,产品码操作),以检测及校正编码数据中的错误。举例来说,可使用迭代过程来对二维阵列的行及列进行解码。二维阵列的每一行可经解码以产生对应位串。然后,二维阵列的每一列可经解码以产生对应位串。
一般来说,约定存储装置的错误校正码能力受到限制。二维阵列的每一行及列经编码有的错误校正码可校正小于或等于错误校正码的校正能力(本文中也称为t)的错误校正码的对应行或列中的数个错误。然而,如果对应行或列中的错误数目大于错误校正码的校正能力,那么错误校正码可能不能够校正对应行或列的错误,从而导致错误的不成功校正。举例来说,如果错误校正码具有4个错误的校正能力,并且数据块的行或列含有4个错误,那么错误校正码可校正所述行或列的4个错误。然而,如果错误校正码具有4个错误的校正能力,并且阵列的行或列含有5个错误,那么错误校正码可能不能够校正行或列的错误,从而导致不成功解码操作。错误校正码的校正能力可与错误校正码的数据大小成比例。举例来说,具有3个错误的校正能力的错误校正码可具有比具有4个错误的校正能力的错误校正码更小的数据大小。
在二维阵列的行及列的重叠区中存在的错误给常规存储装置带来特定挑战。举例来说,如果错误校正码具有4个错误的校正能力并且数据块的5个错误位于重叠区中(例如,失速模式错误),那么对二维阵列的行或列执行的迭代错误校正码操作(例如,一或多个解码操作)可能不能够校正在经编码数据的重叠区中的5个错误,这可能导致数据块的错误的不成功校正。举例来说,错误可位于二维阵列的区(例如,重叠区)中,使得无论错误校正码操作进行多少次迭代,所述区中的错误数目都超过错误校正码的校正能力。
一般来说,如果第一层错误校正码操作导致数据块的错误的不成功校正,那么常规存储装置的控制器可执行第二层错误校正码操作,例如博斯-查德胡里-霍昆格姆(Bose-Chaudhuri-Hocquenghem)(BCH)码操作或低密度奇偶码(LDPC),其校正能力大于第一层错误校正码操作(或不经受失速模对校正能力的影响的第二层错误校正码操作)。可执行第二层错误校正码操作以校正数据块中的错误。通常,由常规存储装置执行第二层错误校正码操作会引入额外延时。额外延时可能导致在可执行由主机系统所请求的操作(例如,读取操作)之前的时间延迟。在一些情况下,由第二层错误校正码操作的执行引入的延时明显大于由第一层错误校正码操作的执行引入的延时。降低执行第二层错误校正码操作的频率以及伴随延时,同时仍然校正数据块的错误,给常规存储装置带来额外的挑战。
本发明的方面通过标识与数据块相关联的事件,例如与对数据块的错误校正码操作相关联的事件,来解决以上及其它挑战。响应于标识事件,例如SSD控制器的处理装置可执行重新混合操作,以将数据块的逻辑到物理关联(以下在本文中也称为“逻辑关联”或“逻辑表示”)从第一逻辑关联改变到第二逻辑关联。在实施例中,从第一逻辑关联改变到第二逻辑关联包含:从一或多个媒体装置接收例如码字的数据,以及改变解码器解译数据的方式(例如,改变解码器接收数据的顺序)。
举例来说,存储装置的控制器可对数据块执行第一层错误校正码操作。第一层错误校正码操作可校正具有少于或等于第一层错误校正码操作的校正能力的错误数目的行及列中的错误。如果数据块的行或列中的任何者含有比第一层错误校正码操作的校正能力更多的错误,那么对那些行或列的解码可导致错误的不成功校正。控制器然后可标识导致错误的不成功校正的数据块的任何位组。数据块的位组中的任何者的错误的不成功校正可触发第二层错误校正码操作的起始。第二层错误校正码操作可具有比第一层错误校正码操作更大的校正能力。第二层错误校正码操作可校正数据块的错误。控制器可对数据块执行重新混合操作,以将逻辑到物理关联从第一逻辑关联改变到第二逻辑关联。重新混合操作可允许控制器校正先前在第一层错误校正码操作中无法校正的待通过第一次层错误校正码操作的后续执行来校正的错误。逻辑到物理关联中的改变在逻辑上以区中的错误少于或等于第一层错误校正码操作的校正能力的方式对二维阵列中的不同区中的错误放置进行重新排序。在一些实施方案中,可通过以不同顺序从物理存储器检索数据并且将数据发送到解码器以按照所检索的顺序进行解码来实施重新混合操作。
将数据块的逻辑到物理关联从初始逻辑关联改变到新逻辑关联可在逻辑上重新分布数据块中的错误。用数据块的新逻辑关联,可以允许第一层错误校正码操作校正错误的方式重新分布先前无法由第一层错误校正码操作校正的与数据块的初始逻辑关联相关联的错误。例如,如果第一层错误校正码操作对二维阵列的行及列中的每一者具有4个的错误校正能力,那么在二维阵列的行及列的重叠区中有5个错误将导致5个错误的不成功校正。如果在数据块中重新分布5个错误,使得5个错误中的2个在第一重叠区中重新分布,且5个错误中的3个在第二重叠区中重新分布,那么第一层错误校正码操作的错误校正能力(t=4)足以校正数据块的错误。
对数据块执行重新混合操作以将数据块的逻辑到物理关联从原始逻辑关联改变到不同逻辑关联可通过例如减少存储装置的延时来改进存储装置的性能,并减少由SSD控制器使用的计算(处理)资源,这是因为在逻辑到物理关联的改变之后,第二层错误校正码操作可较不频繁地执行。
可注意到,出于说明而非限制的目的,本文的实施例可关于非易失性存储器来描述。我可注意到,在其它实施例中,本发明的方面可应用于易失性媒体,例如使用错误校正码的易失性媒体(例如,表现出足够高的错误聚类或错误率以保证错误校正码的使用的易失性媒体)。可注意到,错误校正码操作可包含用于错误检测、错误校正或两者的一或多个操作。
图1说明包含存储装置110的实例计算环境100。一般来说,计算环境100可包含使用存储装置110的主机系统120。举例来说,主机系统120可将数据写入存储装置110并从存储装置110读取数据。
主机系统120可为一或多个计算装置,例如桌上型计算机、膝上型计算机、网络服务器、移动装置或包含存储器及处理装置的此计算装置。主机系统120可包含或耦合到存储装置110,使得主机系统120可从存储装置110读取数据或将数据写入存储装置110。举例来说,主机系统120可经由物理主机接口耦合到存储装置110。物理主机接口的实例包含(但不限于)串行高级技术附件(SATA)接口、外围组件互连快速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)等。物理主机接口可用以在主机系统120与存储装置110之间传输数据。在实施例中,主机系统120可使用NVM快速(NVMe)或非易失性存储器主机控制器接口规范(NVMHCIS)来实施物理主机接口,所述规范是用于存取经由PCI Express(PCIe)总线所附接的非易失性存储媒体的开放逻辑装置接口规范。
如在图1中所展示,存储装置110可包含控制器111及存储器装置112A到112N。在一些实施例中,控制器111可为SSD控制器。在一些实施例中,存储器装置112A到112N可为非易失性存储器。举例来说,存储器装置112A到112N可为“与非”(NAND)型快闪存储器。存储器装置112A到112N中的每一者可包含一或多个存储器单元阵列,例如单电平单元(SLC)(例如,其中1位信息存储在个别存储器单元中)、多电平单元(MLC)(例如,其中多于1位的信息存储在个别存储器单元中)、三电平单元(TLC)(例如,其中3位信息存储在个别存储器单元中)、或四电平单元(QLC)(例如,其中4位信息存储在个别存储器单元中)。存储器单元中的每一者可存储由主机系统120使用的数据位(例如,数据块)。尽管描述例如NAND型快闪存储器的非易失性存储器装置,但存储器装置112A到112N可基于任何其它类型的存储器。举例来说,存储器装置112A到112N可为(但不限于)随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、“或非”(NOR)快闪存储器以及电可擦除可编程只读存储器(EEPROM)。在一个实施例中,存储器装置112A到112N可为非易失性存储器单元的交叉点阵列。交叉点非易失性存储器可结合可堆叠交叉网格数据存取阵列,基于体电阻的改变来执行位存储。另外,交叉点非易失性存储器可执行就地写入操作(与许多基于快闪的存储器相对照),其中可对非易失性存储器单元进行编程而无需事先擦除非易失性存储器单元。此外,存储器装置112A到112N的存储器单元可经分组为可指代用以存储数据的存储器装置的单元存储器页面或数据块。
控制器111可与存储器装置112A到112N通信以执行例如在存储器装置112A到112N处读取数据、写入数据或擦除数据的操作以及其它此类操作。控制器111可包含例如一或多个集成电路及/或离散组件、存储器的硬件,例如固件或其它指令的软件或其组合。一般来说,控制器111可从主机系统120接收命令或操作,并且可将命令或操作转换为指令或适当命令以实现对存储器装置112A到112N的期望存取。控制器111可负责其它操作,例如损耗均衡操作、垃圾收集操作、错误检测及错误校正码(ECC)操作、加密操作、高速缓存操作以及在与存储器装置112A到112N相关联的逻辑块地址与物理块地址之间的地址转译。
参考图1,控制器111可包含重新混合组件113,以执行重新混合操作以将数据块的逻辑到物理关联从第一逻辑关联变化到第二逻辑关联。控制器111可标识所关注事件(以下称为“事件”)的例子,并且响应于标识所述事件,执行重新混合操作。举例来说,重新混合组件113可对数据块执行第一组错误校正码操作,例如一或多个解码操作以检测及校正错误。可注意到,一组或一层错误校正码操作可包含一或多个操作。重新混合组件113还可确定第一组错误校正码操作与错误的不成功校正相关联。举例来说,如果错误校正码操作具有4个错误的校正能力并且所标识数据块的一组位含有5个错误,那么重新混合组件113可确定第一组错误校正码操作与错误的不成功校正相关联。响应于确定第一组错误校正码操作与错误的不成功校正相关联,重新混合组件113可执行或触发具有比第一组错误校正码操作更大的校正能力的第二组错误校正码操作(例如,故障转移错误校正码)。如果使用第二组错误校正码操作来校正错误,那么重新混合组件113标识事件(例如,第一组错误校正码操作无法校正错误,且第二组错误校正码操作校正错误)并执行重新混合操作以改变数据块的逻辑到物理关联。下文描述有关重新混合组件113的操作的另外的细节。
存储装置110可包含未说明的额外电路系统或组件。举例来说,存储装置110可包含高速缓存或缓冲器(例如,DRAM)及地址电路系统(例如,行解码器及列解码器),其可从控制器111接收地址并将所述地址进行解码以存取存储器装置112A到112N。
图2是存储装置的实例控制器200的框图。一般来说,控制器200可对应于图1的控制器111。
如图2中所展示,非易失性存储器可包含数个存储器单元250,并且控制器200可包含易失性存储器212。存储器单元250可为可由控制器200独立控制的非易失性存储器的一部分(例如,存储器页面、物理数据块、存储器装置的裸片等)。控制器200可包含主机接口电路系统214,以经由物理主机接口206与主机系统介接。控制器可进一步包含主机存储器转译电路系统216、存储器管理电路系统218、开关220、非易失性存储器控制电路系统222及/或易失性存储器控制电路系统224。
主机接口电路系统214可耦合到主机存储器转译电路系统216。主机接口电路系统214可与主机系统介接。一般来说,主机接口电路系统214可负责将从主机系统接收的命令包转换为用于主机存储器转译电路系统216的命令指令,并且将主机存储器转译响应转换为主机系统命令以用于传输到请求主机系统。
参考图2,主机存储器转译电路系统216可耦合到主机接口电路系统214、存储器管理电路系统218及/或开关220。主机存储器转译电路系统216可经配置以将主机地址转译为存储器地址(例如,与例如来自主机系统的读取及/或写入命令的接收命令相关联的地址)。举例来说,主机存储器转译电路系统216可将由主机系统读取及写入操作指定的逻辑块地址(LBA)转换为针对特定存储器单元250(例如,物理块地址)的命令。主机存储器转译电路系统216可包含错误检测及校正电路系统,例如可基于从主机接口电路系统214接收的信息来计算奇偶校验信息的“异或”(XOR)电路系统。
存储器管理电路系统218可耦合到主机存储器转译电路系统216及开关220。存储器管理电路系统218可控制数个存储器操作,其包含(但不限于)初始化、损耗均衡、垃圾收集、回收及/或错误检测与校正。尽管存储器管理电路系统218可包含处理器228,但本发明的数个实施例提供处理器228对电路系统中的存储器操作的控制(例如,不依赖于例如软件及/或固件的指令的执行)。存储器管理电路系统218可包含块管理电路系统240,以从易失性存储器212及/或非易失性存储器的存储器单元250检索数据。举例来说,块管理电路系统240可检索例如存储器单元250的有效数据块的标识、擦除计数及存储器单元250的其它状态信息的信息以执行存储器操作。
开关220可耦合到主机存储器转译电路系统216、存储器管理电路系统218、非易失性存储器控制电路系统222或易失性存储器控制电路系统224。开关220可包含或耦合到数个缓冲器。举例来说,开关220可包含内部静态随机存取存储器(SRAM)缓冲器(ISB)225。所述开关可耦合到包含在易失性存储器212中的DRAM缓冲器227。在一些实施例中,开关220可提供控制器200的各种组件之间的接口。举例来说,开关220可考虑可与控制器200的不同组件相关联的所定义的信令协议的变化,以便在不同组件之间提供一致存取及实施例。
非易失性存储器控制电路系统222可在缓冲器中的一者(例如,ISB 225或缓冲器227)处存储对应于所接收读取命令的信息。此外,非易失性存储器控制电路系统222可从缓冲器中的一者检索信息,并将所述信息写入非易失性存储器的对应存储器单元250。数个存储器单元250可通过数个通道耦合到非易失性存储器控制电路系统222。在一些实施例中,通道的数目可由非易失性存储器控制电路系统222共同控制。在一些实施例中,每一存储器通道可耦合到离散通道控制电路248。特定通道控制电路248可通过单个通道控制级耦合到一个以上存储器单元250。
如图2中所展示,非易失性存储器控制电路系统222可包含耦合到通道控制电路248中的每一者的通道请求队列(CRQ)242。此外,每一通道控制电路248可包含耦合到多个存储器单元命令队列(CQ)246的存储器单元请求队列(RQ)244。CRQ 242可经配置以存储在通道之间共享的命令(例如,写入请求或读取请求),RQ 244可经配置以存储特定通道上的存储器单元250之间的命令,并且CQ 246可经配置以对当前命令及待在当前命令之后执行的下一个命令进行排队。
CRQ 242可经配置以从开关220接收命令并且将所述命令中继到RQ 244中的一者(例如,相关联于与所述命令所针对的特定存储器单元250相关联的通道的RQ 244)。RQ244可经配置以按照由RQ 244接收的第一数目个命令的顺序,将用于特定存储器单元250的第一数目个命令中继到与特定存储器单元250相关联的CQ 246。命令管线可经构造使得到同一存储器单元250的命令以特定顺序(例如,以其由RQ 244接收的顺序)移动。RQ 244可经配置以响应于与特定存储器单元250相关联的CQ 246已满而对用于特定存储器单元250的命令进行排队,并且CRQ 242可经配置以响应于特定RQ 244已满而对针对RQ 244的命令进行排队。
RQ 244可根据不同存储器单元250的状态按照某一顺序将用于不同存储器单元250的数个命令中继到与不同存储器单元250相关联的CQ 246。举例来说,不同存储器单元250的状态可处于就绪或繁忙状态。命令管线经构造使得不同存储器单元250之间的命令可不按照顺序移动(例如,按照不同于RQ 244在当时根据对于整体存储器操作来说高效的顺序接收所述命令的顺序)。举例来说,RQ 244可经配置以响应于与第二CQ 246相关联的不同存储器单元250的状态处于繁忙而将来自第二数目个命令的第二命令中继到第二CQ 246之前将第二数目个命令中的第一者中继到第一CQ 246,其中接收第一命令的时间比第二命令晚。RQ 244可经配置以响应于与第二CQ 246相关联的存储器单元250的状态处于就绪而将第二命令中继到第二CQ 246(例如,在中继第一命令之后)。
在一些实施例中,用于每一通道的控制电路可包含耦合到每一通道控制电路248的离散错误检测及校正电路系统232(即,错误校正码(ECC)电路系统)或与一个以上通道一起使用的数个错误检测及校正电路232。错误检测及校正电路系统232可经配置以应用错误校正操作,例如产品码操作,以检测及校正与存储在存储器单元250中的信息相关联的错误。错误检测及校正电路系统232可经配置以提供用于SLC、MLC、TLC或QLC操作的不同的错误校正方案。非易失性存储器控制电路系统222可进一步包含图1的重新混合组件113,以对对应于存储器单元250中的一者的特定存储器装置执行一或多个解码操作。在一些实施例中,重新混合组件113可为处理器228的部分。
图3A是根据一些实施例的对数据块执行重新混合操作并校正数据块中的错误的实例方法的流程图。方法300可由处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法300可由图1的控制器111的重新混合组件113来执行。可注意到,在其它实施例中,方法300可包含按照相同或不同顺序执行的相同、不同、额外或较少操作。
在框310处,处理逻辑确定数据块与数据块的错误的不成功校正相关联。可注意到,可使用数种方式来确定错误,例如奇偶校验、第一层错误校正码操作等。在其中使用第一层错误校正码操作的实例中,当数据块的行及列含有比第一层错误校正码操作的错误校正码的校正能力数目更多的错误时,错误的不成功校正可发生。举例来说,如果行含有5个错误,并且错误校正码的校正能力为4个,那么所述行可导致所述行中的错误的不成功校正。可注意到,可从错误校码的大小(例如,位的数目)来确定错误校正码的校正能力,或将错误校正码的校正能力存储在存储器中。
在一些实施例中,响应于确定对数据块的第一层错误校正码操作与数据块的错误的不成功校正相关联,处理逻辑可对数据块执行第二层错误校正码操作以校正错误。第二层错误校正码操作不同于第一层错误校正码操作。第二层错误校正码操作可具有比第一层错误校正码操作更大的校正能力。举例来说,第一层操作可为产品码操作,且第二层操作可为BCH操作(例如,BCH解码操作)。对数据块的第二层错误校正码操作可与数据块的错误的成功校正相关联。
在框320处,响应于确定数据块与数据块的错误的不成功校正相关联,处理逻辑对数据块执行重新混合操作以将数据块的逻辑到物理关联从第一逻辑关联改变到第二逻辑关联。举例来说,行及列的二维阵列可为数据块的逻辑表示(例如,第一逻辑表示)。二维阵列的行及列具有与非易失性存储器的第一逻辑关联(例如,具有到非易失性存储器的物理地址的特定映射)。在执行重新混合操作时,处理逻辑可将数据块从第一逻辑关联改变到第二逻辑关联。
在框330处,处理逻辑可使用第二逻辑关联来校正数据块的错误。可注意到,在一些实施方案中,使用对具有第一逻辑关联的数据块的第一层错误校正码操作,最初可能无法校正所述错误。第二层错误校正码操作可用以校正错误。在一些实施方案中,在使用第二层错误校正码对错误进行校正之后,可执行重新混合操作以将数据块的逻辑关联改变到第二逻辑关联。在一些实施例中,可针对数据块的第二逻辑关联对新码字进行编码,并且在对数据块的后续操作中,使用对具有第二逻辑关联的数据块的第一层错误校正码操作可校正错误(所述错误在先前使用对具有第一逻辑关联的数据块的第一层错误校正码操作的情况下是不可校正的)。图3B是根据一些实施例的对数据块执行重新混合操作以将数据块的逻辑到物理关联从第一逻辑关联改变到第二逻辑关联的实例方法350的流程图。方法350可由处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法350可由图1的控制器111的重新混合组件113来执行。可注意到,在其它实施例中,方法350可包含按照相同或不同顺序执行的相同、不同、额外或较少操作。
在框360处,执行方法350的处理逻辑对数据块执行第一层错误校正码操作。数据块可为存储在存储装置上的行及列的二维阵列(例如,第一逻辑表示)。每一行及列可包含能够校正特定数目个错误(例如,校正能力)的经编码错误校正码(例如,奇偶码)。举例来说,每一行及列可经编码有具有4个的校正能力的错误校正码。因此,错误校正码可能够校正对应行或列中的4个错误(对应于四个位)。在一个实施例中,第一层错误校正码操作可为产品码操作。错误校正码操作(例如,产品码操作)可包含一或多个解码操作,以校正数据块的错误。举例来说,解码操作可尝试将经编码数据(例如,码字)转译为经编码到存储装置上的原始位串。在解码过程期间,解码操作可校正来自行及列的数个错误,一直到错误校正码校正能力的数目。举例来说,如果行具有3个错误,并且解码操作的错误校正码具有4个的错误校正能力,那么可通过解码操作来校正所述行的3个错误。可注意到,行及列的校正能力可为对称的(如上文描述),或不对称的。举例来说,列定向可具有4个的校正能力,且行定向可具有5个的校正能力。
在框370处,处理逻辑确定对数据框的第一层错误校正码操作与数据块的错误的不成功校正相关联。当数据块的行及列含有比第一层错误校正码操作的错误校正码的校正能力数目更多错误时,错误的不成功校正可发生。举例来说,如果行含有5个错误,并且错误校正码的校正能力为4个,那么所述行可导致所述行中的错误的不成功校正。可注意到,可从错误校码的大小(例如,位的数目)来确定错误校正码的校正能力,或将错误校正码的校正能力存储在存储器中。
在一些实施例中,响应于确定对数据块的第一层错误校正码操作与数据块的错误的不成功校正相关联,处理逻辑可对数据块执行第二层错误校正码操作以校正错误。第二层错误校正码操作不同于第一层错误校正码操作。第二层错误校正码操作可具有比第一层错误校正码操作更大的校正能力。举例来说,第一层操作可为产品码操作,且第二层操作可为BCH操作(例如,BCH解码操作)。对数据块的第二层错误校正码操作可与数据块的错误的成功校正相关联。
在框380处,响应于确定对数据块的第一层错误校正码操作与数据块的错误的不成功校正相关联,处理逻辑对数据块执行重新混合操作以将数据块的逻辑到物理关联从第一逻辑关联改变到第二逻辑关联。举例来说,行及列的二维阵列可为数据块的逻辑表示(例如,第一逻辑表示)。二维阵列的行及列具有与非易失性存储器的第一逻辑关联(例如,具有到非易失性存储器的物理地址的特定映射)。在执行重新混合操作时,处理逻辑可将数据块从第一逻辑关联改变到第二逻辑关联。
在一些实施例中,重新混合操作将二维阵列中的错误重新分布到二维阵列的不同区域,这允许第一次层错误校正码操作的改进性能。举例来说,数据块的错误可为失速模式错误。失速模式或失速模式错误可指代最小数目个阵列位置,所述阵列位置在全都被错误地接收时导致解码器失速(例如,另外的列及行解码不校正错误)。举例来说,如果二维阵列的行及列的重叠区中的错误数目(例如,5个错误)超过行及列的错误校正能力(例如,错误校正能力为4个),那么另外的列及行解码将不校正错误。重叠区中的错误(例如,5个错误)表示失速模式或失速模式错误。通过改变二维阵列的逻辑关联,可将错误重新分布到不同阵列位置以通过减少二维阵列的行及列的重叠区中的错误的数目以使其不超过行及列的错误校正能力来消除失算模式错误,并允许第一层错误校正码操作校正数据块的错误。
举例来说,在第一逻辑关联中,不使用第一层错误校正码操作来校正重叠区中的错误(例如,5个错误)。可执行第二层错误校正码操作以校正重叠区中的错误。可在执行第二层错误校正码操作之前或在不执行第二层错误校正码操作的情况下执行重新混合操作以将数据块的逻辑关联从第一逻辑关联改变到第二逻辑关联。在第二逻辑关联中,由于重新混合操作,先前在第一逻辑关联中具有5个错误的重叠区现在具有数目减少的错误(例如,3个错误)。可使用第二逻辑关联来执行第一层错误校正码操作(例如,错误校正能力为4个)以校正数据块的第二关联的所述错误(例如,3个错误),而无需使用第二层错误校正码操作。
图4A说明根据一些实施例的存储装置的数据块400的实例。在一些实施例中,数据块400可由图1的控制器111的重新混合组件113解码。数据块400可表示存储在存储装置上的用户数据。数据块400可包含已经编码并存储在存储装置上的特定大小的用户数据(k)。大小可由位大小表示。举例来说,用户数据可具有6400位的数据大小。数据块400还可包含也具有特定大小的错误校正码(p)(例如,奇偶码或其它类型的错误校正码)。举例来说,错误校正码可具有600位的数据大小。错误校正码可具有指示在解码操作期间错误校正码能够校正的错误数目的校正能力(t)。如先前论述,错误校正码的数据大小可对应于错误校正码的校正能力。举例来说,校正能力为t=4的错误校正码可具有比校正能力为t=3的错误校正码更大的数据大小。数据块400可具有总块大小(n),其为用户数据(k)及错误校正码(p)两者的总和。在一些实施例中,总块大小还可包含元数据(未展示)。举例来说,如果用户数据具有6400位的大小并且错误校正码具有600位的大小,那么数据块400可具有7000位的总块大小。
图4B说明根据本发明的一些实施例的数据块的逻辑关联对数据块的产品码错误校正码操作的实例。在实施例中,数据块逻辑表示450(在本文中也称为“逻辑关联”)可为数据块400的产品码表示。数据块逻辑表示450是被说明为行及列的二维阵列的数据块400的逻辑表示。每一行对应于行码字(例如,RCW0到RCW7),且每一列对应于列码字(例如,CCW0到CCW7)。
数据块逻辑表示450可包含数据块400的用户数据(k)(在一些情况下,错误校正码(p))。然而,不同于经编码为单个数据位串,如图4A中所说明,用户数据(k)可经编码为行及列的逻辑阵列,如图4B中所说明。举例来说,如果用户数据具有6400位的数据大小,那么6400位可经编码为具有各自为80位的8个行及8个列的数据块逻辑表示450,如图4B中说明。尽管数据块逻辑表示450可经说明为具有相等数目个行及列,但在其它实施例中,数据块逻辑表示450可含有由不同数目个行及列形成的各种几何形状。
数据块逻辑表示450的每一行及列可经编码有对应错误校正码(p),如先前论述。此外,每一行及列可经划分为彼此重叠的各种区(例如,重叠区),其中每一重叠区包含一组位,在图4B中说明为框。使用先前实例,由80个位组成的行可具有与列相交的8个重叠区(例如,8组位),其中每一重叠区包含10个位。错误校正码可具有对应于错误校正码在解码操作期间在错误校正码的对应行或列中能够校正的错误数目的校正能力(t)。举例来说,如果针对行的错误校正码的校正能力为t=4,那么所述错误校正码最多可校正所述行中的4个错误。
在错误校正码操作的解码操作期间,处理装置可存储状态位(未展示),其对应于所述特定行或列是否具有与错误的不成功校正相关联的至少一组位。举例来说,如果数据块逻辑表示450的行或列不具有导致错误的不成功校正的任何位组,那么处理装置可设置将对应于所述特定行或列的状态位以读取值1。相反,如果数据块逻辑表示450的行或列具有导致错误的不成功校正的至少一组位,那么处理装置可设置对应于所述特定行或列的状态位460以读取值0。
在错误校正码操作的解码操作期间,处理装置可迭代地解码数据块逻辑表示450的行及列。举例来说,处理装置可首先对阵列的所有行进行解码,然后对阵列的所有列进行解码,反之亦然。在解码操作期间,一些位组可包含数个错误。在本说明中,数据块逻辑表示450包含含有数个错误的3组位。一组位含有2个错误,一组位包含3个错误,且另一组位包含5个错误。在本说明中,错误校正码可具有t=4的校正能力。由于对数据块逻辑表示450的前四行(例如,RCW0到RCW3)中的每一行进行解码,因此处理装置可针对前四行中的每一行,将状态为存储为1,这指示相应行的所有位组中都不与不成功解码操作相关联。在解码操作期间,处理装置可开始解码第五行(RCW4),其包含含有2个错误的位组,含有3个错误的位组及含有5个错误的位组,从而导致针对第五行的错误总数目是10个错误。因为针对第五行的错误总数目(例如,10个错误)大于错误校正码的错误校正能力(例如,t=4),所以第五行中的至少一组位可导致错误的不成功校正。因此,处理装置可将针对第五行的状态位存储为0,从而指示第五行中的位组中的至少一者导致或可能导致错误的不成功校正。
在对阵列的行进行解码之后,处理装置可对数据块逻辑表示450的阵列的列中的每一者进行解码。在解码操作期间,处理装置可对来自包含含有2个错误的位组的阵列的左边的第三列(CCW2)进行解码。因为针对特定列的错误总数目(例如,2)小于列的错误校正码的校正能力(例如,t=4),所以解码操作可成功地校正所述特定列中的位组中的2个错误。在成功校正位组中的2个错误之后,处理装置可将针对第三列的状态位存储为1,从而指示第三列中的位组不会导致对错误的不成功校正。类似地,当处理装置对来自阵列的左边的第四列(CCW3)进行解码时,其可校正特定列中的位组中的3个错误,并将针对第四列的状态位存储为值1。然而,来自阵列的左边的第六列(CCW5)含有5个错误。因为针对特定列的错误总数目(例如,5位有错误)大于列的错误校正码的校正能力(例如t=4),所以含有5个错误的位组可能会导致错误的不成功校正。第六列(CCW5)及第五行(RCW4)的重叠区中的5个错误表示失速模式错误(例如,当全都被错误地接收时导致解码器失速的最小数目个阵列位置),其中另外的列及行解码将不校正错误。处理装置可将针对第六列的状态位存储为0,以指示第六列与错误的不成功校正相关联。
图5说明根据本发明的一些实施例的叠加在物理存储器上的数据块的逻辑到物理关联的实例。表示物理存储器500的实例框图展示表示物理存储器500的页面0到7的列0到7。页面可为物理存储器500的读取或写入的单元(例如,基本的存取单元)并且具有物理地址(例如,裸片分区上的页面地址或规范地址)。物理存储器500展示表示物理存储器500的分区的行0到6。分区可为含有一或多个页面的物理存储器的单元。在一些实施例中,可并行存取分区。图4B的数据块逻辑表示450是图4A的数据块400的逻辑表示。图4B的数据块逻辑表示450经展示为在与物理存储器500的第一逻辑关联中为与图5中的物理存储器500的叠加。数据块逻辑表示450中的列码字(CCW0到CCW7)中的每一者在逻辑上映射到物理存储器500,这可导致逻辑表示中的错误到物理存储器500的页面及/或分区的映射。举例来说,在分区4处的页面2含有2个错误,在分区4处的页面3含有3个错误,在分区4处的页面5含有5个错误。前述错误与图4B中所说明的错误相同。可注意到,展示为没有码字的物理存储器500的单元可含有例如行及列错误校正码(例如,奇偶码)的其它数据或未被使用。
图6A说明根据本发明的一些实施例的叠加在物理存储器上的数据块的另一逻辑到物理关联的实例。说明实例框图以表示物理存储器600,其可与图5的物理存储器500相同。类似于物理存储器500,错误2、3及5分别位于页面2、3及5的分区4中。如在图6A中所说明,重新混合操作将数据块逻辑表示650的逻辑到物理关联从逻辑关联(如图5的物理存储器500中的数据块逻辑表示450所说明)改变到物理存储器600中的新逻辑关联。数据块逻辑表示650是图4A的数据块400的新逻辑表示,并且不同于数据块逻辑表示450。数据块逻辑表示650经展示为在与物理存储器600的新逻辑关联中与物理存储器600的叠加。在新逻辑关联中,由数据块逻辑表示650定义的码字已经从先前逻辑关联(例如,图5中所说明的逻辑关联)(也称为“第一逻辑”)重新映射到新逻辑关联(也称为“第二逻辑关联”)。举例来说,列码字1(CCW1)已经重新映射以在页面0的分区6上开始。随后列码字(CCW2到CCW7)已类似地重新映射。因此,从第一逻辑关联到第二逻辑关联的重新映射可对应于关于物理存储器的位置(例如,特定分区及页面)改变特定码字(例如,码字的部分)开始及结束的地方。重新映射还可指示来自页面的个别位如何组合成为码字。举例来说,如果由于具有有5个错误的8位重叠区(其中t=3行及t=3列)而导致失速模式错误退出,那么将相同8位移动到另一重叠区可能不允许使用第一层或错误校正码操作来校正错误。重新混合操作可在不同重叠区中分解8个位及重新组合8个位,使得第一层错误校正码操作可校正错误(例如,5个错误中的2个可移动到第一重叠区,并且5个错误中的其余3个错误可移动到第二重叠区)。
如上文提及,在一些实施例中,从第一逻辑关联改变到第二逻辑关联包含从一或多个媒体装置接收例如码字的数据,并改变解码器解译数据的方式(例如,改变解码器接收数据的顺序)。举例来说,二维阵列的行及列可表示或指示解码器接收或解码(或解译)码字的顺序。例如,解码器可接收及解码CCWO,然后接收及解码CCW1,然后接收及解码CCW2,依此类推。在一些实施例中,通过改变将码字或码字的数据发送到解码器或由解码器接收码字或码字的数据的顺序来执行重新混合操作(以导致从第一逻辑关联到第二逻辑关联的改变)。举例来说,为改变由解码器接收码字的数据的顺序,可以不同顺序(例如,与第一逻辑关联不同的顺序)从存储器读取数据(例如,页面)并以不同顺序将其发送到解码器。在另一实例中,码字的数据可以相同顺序从存储器中读取,存储在缓冲器中,并且数据的位可经移位或移动并以不同顺序解码(归因于移位或移动)。在一些实例中,为使位移位或移动,可将码字的数个位(小于重叠区的位大小)移动或切换到同一码字中的新位置。在又其它实例中,不同于以不同顺序将码字的数据发送到解码器,解码器可有效地改变码字的顺序或码字的数据的顺序,这改变解码器解译数据块的方式。图6B说明根据本发明的一些实施例的数据块的另一逻辑关联的实例。数据块逻辑表示650经说明为行及列的二维阵列。如所说明,在图6B的新数据块逻辑表示650中展示映射到图6A中的物理存储器500的CCW3。二维阵列是图4A中的数据块400的逻辑表示。数据块逻辑表示650可类似于图4B的数据块逻辑表示450,区别在于数据块逻辑表示650的逻辑关联具有与数据块逻辑表示450的逻辑关联不同的第二逻辑关联。
在第二逻辑关联中,将错误重新分布到数据块650的不同位置。举例来说,数据块650的行码字1(RCW1)及列码字3(CCW3)的重叠区中的2个错误对应于数据块450的行码字4(RCW4)及列码字2(CCW2)的重叠区中的2个错误。数据块650的行码字2(RCW2)及列码字4(CCW4)的重叠区中的3个错误对应于数据块450的行码字4(RCW4)及列码字3(CCW3)的重叠区中的2个错误。数据块650的行码字7(RCW7)及列码字6(CCW3)的重叠区中的2个错误及行码字0(RCW0)及列码字7(CCW7)的重叠区中的3个错误对应于数据块450的行码字4(RCW4)及列码字3(CCW3)的重叠区中的5个错误。可注意到,在一些实施方案中,逻辑关联可为预定的,并且处理逻辑可循环通过预定逻辑关联。举例来说,控制器可具有存储在存储器中的10个不同逻辑关联。如果在第一重新混合操作(从第一逻辑关联到第二逻辑关联)之后,第一层或错误校正码操作不能够校正错误,那么可执行另一重新混合操作(第二逻辑关联到第三逻辑关联),直到使用第一层错误校正码操作校正错误为止。
关于图4B的数据块逻辑表示450,第六列的错误总数目(例如,5位)大于列的错误校正码的校正能力(例如,t=4),这导致第一层错误校正码操作执行错误的不成功校正。在图6B的数据块逻辑表示650中,在两个重叠区之间分摊5个错误(即,2个错误在行码字7(RCW7)及列码字6(CCW6)的重叠区中并且3个错误在行码字0(RCW0)及列码字7(CCW7)的重叠区中)。每一重叠区中的错误总数目小于列或行的错误校正码的校正能力(例如,t=4),这导致第一层错误校正码操作执行错误的成功校正。
图7是根据一些实施例的对数据块执行重新混合操作的实例方法700的流程图。方法700可由处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法700可由图1的控制器111的重新混合组件113执行。可注意到,在其它实施例中,方法700可包含按照相同或不同顺序执行的相同、不同、额外或较少操作。
方法700可在框710处开始,其中执行方法700的处理装置标识与对数据框的错误校正码操作相关联的事件的例子。举例来说,处理逻辑可对数据块执行第一层错误校正码操作,并确定第一层错误校正码操作与数据块的错误的不成功校正相关联。处理逻辑可进一步对数据块执行第二层错误校正码操作,并确定第二层错误校正码操作与数据块的错误的成功校正相关联。可注意到,在一个例子中,事件可包含在确定对数据块的错误的不成功校正的情况下执行对数据块的第一层错误校正码操作,以及执行成功校正数据块的错误的第二层错误校正码操作。可关于图8进一步描述标识事件的例子。在一些实施例中,响应于标识与数据块相关联的事件的例子(框710),处理逻辑可进行到框740以执行对数据的重新混合操作。
在框720处,在标识与数据块相关联的事件的例子之后,处理逻辑可响应于标识事件的例子而产生用于记录的条目。所述条目可指示事件的发生。在一些实施例中,记录可为表格或用以记录所标识事件的数目的其它工具的部分。在其它实施例中,记录可为草图或基于草图的记录。草图可为存储摘要式信息的摘要数据结构,这可减少用以跟踪或记录信息的存储器存储量。在实施例中,草图可使用哈希技术来存储摘要式信息(例如,哈希)。在一些实施例中,草图可包含估计错误,其中草图可正确估计或高估存储值,但不低估所述值。
在框730处,处理逻辑确定事件的频率是否满足阈值。在一些实施例中,记录可指示在记录中标识的事件的例子的数目。可将如由记录指示的时间的频率与阈值进行比较。举例来说,事件的频率可为4(f=4),且针对特定事件的阈值可为4。如果事件的频率大于或等于阈值,那么事件的频率满足阈值。如果事件的频率小于阈值,那么事件的频率不满足阈值。如果处理逻辑确定事件的频率不满足阈值,那么处理逻辑可返回到框710。如果处理逻辑确定事件的频率满足阈值,那么处理逻辑可进行到框740。
在框740处,处理逻辑对数据块执行重新混合操作,以将数据块的逻辑到物理关联从第一逻辑关联改变到第二逻辑关联。在执行重新混合操作之后,处理逻辑可返回到框710并监测事件的另一例子。响应于标识与数据块相关联的事件的另一例子(并且在一些实施例中,响应于确定事件的频率满足阈值),处理逻辑对数据块执行另一重新混合操作以将数据块的逻辑到物理关联从第二逻辑关联改变到一组逻辑关联中的第三逻辑关联。在一些实施例中,处理逻辑可迭代通过上文描述的过程,直到一组逻辑关联的逻辑关联阻止与数据块的事件关联的事件的例子的触发。
图8是根据一些实施例的标识与数据块相关联的事件的例子的实例方法800的流程图。方法800可由处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法800可由图1的控制器111的重新混合组件113执行。可注意到,在其它实施例中,方法800可包含按照相同或不同顺序执行的相同、不同、额外或较少操作。可注意到,事件的例子可包含以任一顺序执行的下文描述的操作(例如,块)或其它操作中的一或多者。
方法800可在框810处开始,其中处理逻辑可对数据块执行第一层错误校正码操作。在一些实施例中,第一层错误校正码操作可包含产品码操作,例如产品码解码操作。在框820处,处理逻辑确定对数据块执行的产品码操作与对数据块的错误的不成功校正相关联。
在框830处,响应于确定第一层错误校正码操作与数据块的错误的不成功校正相关联,处理逻辑可对数据块执行第二层错误校正码操作。在一些实施例中,第二层错误校正码操作可为具有额外校正能力的BCH操作。在框840处,处理逻辑可确定对数据块执行的第二层错误校正码操作与数据块的错误的成功校正相关联。
在框850处,处理逻辑确定关于第一逻辑关联的错误的地点。错误的地点可指代关于数据块(例如,图4B的数据块450)的逻辑表示的错误的位置(例如,错误的行及列)。在框860处,处理逻辑可基于错误的地点来确定错误是失速模式错误。举例来说,为基于错误的地点来确定错误是失速模式错误,处理逻辑可确定与错误的不成功校正相关联的数据块的行及列的二维阵列的行。处理逻辑可确定二维阵列的列或与错误的不成功校正相关联的数据块的行及列。处理逻辑可标识二维阵列的行及列的重叠区中的错误。处理逻辑可确定第一层错误校正码操作待校正的第一数目个错误(例如,校正能力)。处理逻辑可进一步确定导致错误的不成功校正的数据块的重叠区中的错误包含大于第一层错误校正码操作的校正能力的第二数目个错误。如果错误在特定重叠区中并且大于第一层或错误校正码操作的校正能力,那么处理逻辑可确定所述错误是失速模式错误。
在一些实施例中,可通过使用不正确数据块(例如,具有错误的数据块)及校正数据块执行“异或”运算(XOR)来确定失速模式。XOR操作可产生位图,其展示关于关于二维阵列的错误的地点。如果错误在重叠区中,并且错误的数目超过第一层或错误校正码操作的校正能力,那么处理逻辑可确定所述错误是失速模式错误。
在一些实施例中,如果处理逻辑确定所述错误是失速模式错误,那么所述错误可被记录为记录中的条目。在其它实施例中,如果处理逻辑确定错误是失速模式错误,那么处理逻辑可执行重新混合操作。(参见图7)。在一些实施例中,如果错误未经确定为失速模式错误,那么处理逻辑可返回到图7的框710以标识与数据块相关联的事件的例子。
在其它实施例中,事件的例子可包含指示数据块的错误数目是否随时间增加的信息。例如,第一层错误校正码操作可经执行并确定对数据块的第一层错误校正码操作与错误的不成功校正相关联,其中错误包含5个错误。在随后时间(数据块的后续存取),可再次执行第一层错误校正码操作,并确定所述错误包含7个错误。鉴于多个第一层错误校正码操作的执行,在错误数目针对数据块随时间增加的情况下可确定事件的例子。
图9说明计算机系统900的实例机器,在计算机系统900内可执行用于致使所述机器执行本文所论述的方法中的任一或多者的一组指令。举例来说,计算机系统900可包含或利用存储装置(例如,图1的存储装置110),或者可用以执行控制器的操作(例如,执行操作系统以执行对应于图1的重新混合组件113的操作)。在替代实施例中,所述机器可连接(例如,联网)到LAN、内联网、外联网及/或因特网中的其它机器。所述计算机可在客户端-服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器操作,或在云计算基础设施或环境中作为服务器或客户端机器操作。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备、服务器、网络路由器、开关或网桥,或能够执行指定待由所述机器采取的动作的一组指令(循序或其它方式)的任何机器。此外,虽然说明单个机器,但术语“机器”也应被理解为包含机器的任何集合,其个别地或共同地执行一组(或多组)指令以执行本文论述的方法中的任何一或多者。
实例计算机系统900包含处理装置902、主存储器904(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器906(例如,快闪存储器、静态随机存取存储器(SRAM)等)及数据存储器装置918,其经由总线930彼此通信。
处理装置902表示一或多个通用处理装置,例如微处理器、中央处理单元或类似者。更特定来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置902也可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器或类似者。处理装置902经配置以执行用于执行本文论述的操作的指令。
计算机系统900可进一步包含网络接口装置908以通过网络920进行通信。计算机系统900还可包含视频显示单元910(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入装置912(例如,键盘)、光标控制装置914(例如,鼠标)、图形处理单元922、信号产生装置916(例如,扬声器)、图形处理单元922、视频处理单元928及音频处理单元932。
数据存储器装置918可包含机器可读存储媒体924(也称为计算机可读媒体),在其上存储体现本文所描述的方法或功能中的任何一或多者的一或多组指令或软件。在计算机系统900执行指令期间,指令还可全部或至少部分地驻留在主存储器904中及/或处理装置902内,主存储器904及处理装置902也构成机器可读存储媒体。机器可读存储媒体924、数据存储器装置918及/或主存储器904可对应于图1的存储装置110。
在一个实施例中,指令包含用以实施对应于图1的重新混合组件113的功能性的指令。尽管在实例实施例中将机器可读存储媒体924展示为单个媒体,但术语“机器可读存储媒体”应被视为包含存储一或多组指令的单个媒体或多个媒体(例如,集中式或分布式数据库及/或相关联高速缓存及服务器)。术语“机器可读存储媒体”也应被认为包含能够存储或编码供机器执行并且致使机器执行本发明的方法中的一或多者的一组指令的任何媒体。因此,术语“机器可读存储媒体”应被认为包含(但不限于)固态存储器、光学媒体及磁性媒体。
已依据对计算机存储器内的数据位的操作的算法及符号表示来呈现前述详细描述的一些部分。这些算法描述及表示是数据处理领域的技术人员用来最有效地向所属领域的其它技术人员传达其工作实质的方式。此处,算法通常被认为是导致期望结果的自洽操作序列。所述操作是需要物理量的物理操纵的操作。通常,尽管不是必须的,但这些量采取能够被存储、组合、比较及以其它方式操纵的电或磁信号的形式。主要出于通用的原因,有时已经证明将这些信号称为位、值、元素、符号、字符、项、数字或类似者是方便的。
然而,应牢记,所有这些及类似术语应与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。除非从上文论述中明显另有说明,否则应了解,贯穿描述,利用例如“标识”或“确定”或“重新映射”或“执行”或“产生”或“比较”或类似者的术语的论述是指计算机系统或类似电子计算装置的动作及过程,其操纵表示为计算机系统的寄存器及存储器内的物理(电子)量的数据并将其变换为类似地表示为计算机系统存储器或寄存器或其它此类信息存储装置内的物理量的其它数据。
本发明还涉及用于执行本文的操作的设备。此设备可针对预期用途专门构造,或其可包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此计算机程序可存储在计算机可读存储媒体中,例如(但不限于)任何类型的磁盘,其包含软盘、光盘、CD-ROM及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或适用于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。
本文提出的算法及显示并非与任何特定计算机或其它设备固有地相关。各种通用系统可与根据本文的教示的程序一起使用,或者可证明构造更专用设备来执行所述方法是方便的。将出现针对各种这些系统的结构,如在以下描述中阐述。另外,未参考任何特定编程语言来描述本发明。将了解,各种编程语言可用以实施如本文描述的本发明的教示。
本发明可经提供为计算机程序产品或软件,其可包含其上存储有指令的机器可读媒体,所述指令可用以对计算机系统(或其它电子装置)进行编程以执行根据本发明的过程。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。举例来说,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器装置等。
在前述说明书中,已经参考本发明的特定实例实施例描述本发明的实施例。显而易见的是,在不脱离如所附权利要求书中阐述的本发明的实施例的更广泛精神及范围的情况下,可对本发明的实施例进行各种修改。因此,说明书及图式应被认为是说明意义而不是限制意义。
词语“实例”或“示范性”在本文中用以意指用作实例、例子或说明。本文中被描述为“实例”或“实例性”的任何方面或设计不必被解释为比其它方面或设计更优选或更具优势。而是,词语“实例”或“示范性”的使用希望以具体方式呈现概念。如在此申请案中使用,术语“或”希望意味着包含性的“或”而不是排他性的“或”。也就是说,除非另有说明或从上下文可清楚地看出,“X包含A或B”希望意指自然包含性排列中的任何者。也就是说,如果X包含A;X包含B;或X包含A及B两者,那么在前述例子中的任何者下满足“X包含A或B”。另外,在此申请案及所附权利要求书中使用的冠词“一”通常可被解释为意指“一或多个”,除非以其它方式另有说明或从上下文清楚地看到指向单数形式。此外,除非如此描述,否则术语“实施例”或“一个实施例”或“实施例”或“一个实施例”贯穿全文希望意指相同实施例或实施例。如本文中所使用的术语“第一”、“第二”、“第三”、“第四”意指用以在不同元件当中进行区分的标签,并且不一定具有根据其数字名称的序数含义。
应理解,上文描述希望是说明性的,而不是限制性的。通过阅读及理解上文描述,其它实施例对所属领域的技术人员将是显而易见的。因此,可参考所附权利要求书以及此类权利要求书被赋予的等效物的全部范围来确定本发明的范围。
Claims (33)
1.一种系统,其包括:
存储器;及
控制器,其耦合到所述存储器,所述控制器:
标识与对数据块执行的第一组错误校正码操作及第二组错误校正码操作相关联的事件的例子,其中为标识所述事件的所述例子,所述控制器:
对所述数据块执行所述第一组错误校正码操作,其中所述第一组错误校正码操作包括产品码操作;
确定对所述数据块执行的所述产品码操作与所述数据块的错误的不成功校正相关联;
对所述数据块执行所述第二组错误校正码操作;以及
确定对所述数据块执行的所述第二组错误校正码操作与所述数据块的所述错误的成功校正相关联;以及
响应于标识与对所述数据块执行的所述第一组及所述第二组错误校正码操作相关联的所述事件的所述例子,对所述数据块执行重新混合操作以将所述数据块的逻辑到物理关联从第一逻辑关联改变到第二逻辑关联。
2.根据权利要求1所述的系统,所述控制器进一步:
响应于标识与对所述数据块执行的所述第一组及所述第二组错误校正码操作相关联的所述事件的另一例子,对所述数据块执行另一重新混合操作以将所述数据块的所述逻辑到物理关联从所述第二逻辑关联改变到第三逻辑关联。
3.根据权利要求1所述的系统,其中所述数据块包括码字,其中为对所述数据块执行所述重新混合操作以将所述数据块的所述逻辑到物理关联从所述第一逻辑关联改变到所述第二逻辑关联,所述控制器:
将所述码字从所述第一逻辑关联重新映射到所述第二逻辑关联。
4.根据权利要求1所述的系统,为确定对所述数据块的所述产品码操作与所述数据块的所述错误的所述不成功校正相关联,所述控制器:
确定对所述数据块的所述产品码操作将校正的所述数据块的一组特定位中的第一数目个错误;以及
确定导致所述错误的所述不成功校正的所述数据块的所述一组位包括大于对所述数据块的所述产品码操作将校正的所述第一数目个错误的第二数目个错误。
5.根据权利要求1所述的系统,其中所述第二组错误校正码操作包括博斯-查德胡里-霍昆格姆BCH操作。
6.根据权利要求1所述的系统,其中所述控制器进一步:
产生用于记录的条目,其中所述条目指示所述事件的所述例子;以及
基于所述记录而将所述事件的频率与阈值进行比较,其中响应于确定所述事件的所述频率满足所述阈值来执行所述重新混合操作。
7.根据权利要求6所述的系统,其中所述记录是使用哈希来存储摘要式信息的摘要数据结构。
8.根据权利要求1所述的系统,所述控制器进一步:
确定关于所述第一逻辑关联的所述错误的地点;及
基于所述错误的所述地点来确定所述错误是失速模式错误,其中响应于标识与所述第一组及所述第二组错误校正码操作相关联的所述事件的所述例子及确定所述错误是所述失速模式错误来执行所述重新混合操作。
9.根据权利要求8所述的系统,其中所述数据块包括第一逻辑关联的多个行及多个列,且其中为基于所述错误的所述地点来确定所述错误是所述失速模式错误,所述控制器:
确定与所述错误的所述不成功校正相关联的所述数据块的所述多个行中的一行;确定与所述错误的所述不成功校正相关联的所述数据块的所述多个列中的一列,其中所述错误位于所述行与所述列的重叠区中;
确定所述产品码操作将校正的第一数目个错误;以及
确定导致所述错误的所述不成功校正的所述数据块的所述重叠区中的所述错误包括大于所述产品码操作将校正的所述第一数目个错误的第二数目个错误。
10.一种系统,其包括:
非易失性存储器;及
处理装置,其耦合到所述非易失性存储器,所述处理装置:
标识与对所述非易失性存储器的数据块执行的错误校正码操作相关联的事件的例子;
产生用于记录的条目,其中所述条目指示所述事件的所述例子;
基于所述记录将所述事件的频率与阈值进行比较;及
响应于确定所述事件的所述频率满足所述阈值,对所述数据块执行重新混合操作以将所述数据块的逻辑到物理关联从第一逻辑关联改变到第二逻辑关联。
11.根据权利要求10所述的系统,其中所述非易失性存储器包括非易失性存储器单元的交叉点阵列。
12.根据权利要求10所述的系统,其中为标识与对所述非易失性存储器的所述数据块执行的错误校正码操作相关联的所述事件的所述例子,所述处理装置:
对所述数据块执行第一层所述错误校正码操作;以及
确定对所述数据块的所述第一层所述错误校正码操作与所述数据块的错误的不成功校正相关联。
13.根据权利要求12所述的系统,其中为标识与对所述非易失性存储器的所述数据块执行的错误校正码操作相关联的所述事件的所述例子,所述处理装置进一步:
对所述数据块执行第二层所述错误校正码操作;以及
确定对所述数据块的所述第二层所述错误校正码操作与所述数据块的所述错误的成功校正相关联。
14.根据权利要求12所述的系统,其中所述第一层所述错误校正码操作包括产品码操作。
15.根据权利要求12所述的系统,其中为标识与对所述非易失性存储器的所述数据块执行的错误校正码操作相关联的所述事件的所述例子,所述处理装置进一步:
确定关于所述第一逻辑关联的所述错误的地点;以及
基于所述错误的所述地点来确定所述错误是失速模式错误。
16.一种系统,其包括:
存储器,及
处理装置,其耦合到所述存储器,所述处理装置:
确定数据块与所述数据块的错误的不成功校正相关联;
响应于确定所述数据块与所述数据块的所述错误的所述不成功校正相关联,对所述数据块执行重新混合操作以将所述数据块的逻辑到物理关联从第一逻辑关联改变到第二逻辑关联;以及
使用所述第二逻辑关联校正所述数据块的所述错误。
17.根据权利要求16所述的系统,其中所述处理装置进一步:
对所述数据块执行第一层错误校正码操作,其中所述第一层错误校正码操作用以确定所述数据块与所述数据块的所述错误的所述不成功校正相关联。
18.根据权利要求17所述的系统,其中所述处理装置进一步:
对所述数据块执行第二层错误校正码操作;以及
确定对所述数据块的所述第二层错误校正码操作与所述数据块的所述错误的成功校正相关联,其中响应于确定所述第一层错误校正码操作与所述数据块的所述错误的所述不成功校正相关联以及所述第二层错误校正码操作与所述错误的所述成功校正相关联而对所述数据块执行所述重新混合操作。
19.根据权利要求18所述的系统,其中所述处理装置进一步:
确定关于所述第一逻辑关联的所述错误的地点;以及
基于所述错误的所述地点来确定所述错误是失速模式错误,其中响应于确定所述第一层错误校正码操作与所述数据块的所述错误的所述不成功校正相关联,所述第二层错误校正码操作与所述错误的所述成功校正相关联且所述错误是所述失速模式错误而执行所述重新混合操作。
20.根据权利要求17所述的系统,其中所述第一层错误校正码操作包括产品码操作。
21.一种方法,其包括:
标识与对数据块执行的第一层错误校正码操作及第二层错误校正码操作相关联的事件的例子,其中标识所述事件的所述例子包括:
对所述数据块执行所述第一层错误校正码操作,其中所述第一层错误校正码操作包括产品码操作;
确定对所述数据块执行的所述产品码操作与所述数据块的错误的不成功校正相关联;
对所述数据块执行所述第二层错误校正码操作;以及
确定对所述数据块执行的所述第二层错误校正码操作与所述数据块的所述错误的成功校正相关联;以及
响应于标识与对所述数据块执行的所述第一层及所述第二层错误校正码操作相关联的所述事件的所述例子,由处理装置对所述数据块执行重新混合操作以将所述数据块的逻辑到物理关联从第一逻辑关联改变到第二逻辑关联。
22.根据权利要求21所述的方法,其进一步包括
响应于标识与对所述数据块执行的所述第一层及所述第二层错误校正码操作相关联的所述事件的另一例子,对所述数据块执行另一重新混合操作以将所述数据块的所述逻辑到物理关联从所述第二逻辑关联改变到第三逻辑关联。
23.根据权利要求21所述的方法,其中所述数据块包括码字,其中对所述数据块执行所述重新混合操作以将所述数据块的所述逻辑到物理关联从所述第一逻辑关联改变到所述第二逻辑关联包括:
将所述码字从所述第一逻辑关联重新映射到所述第二逻辑关联。
24.根据权利要求21所述的方法,其中确定对所述数据块的所述产品码操作与所述数据块的所述错误的所述不成功校正相关联包括:
确定对所述数据块的所述产品码操作将校正的所述数据块的一组特定位中的第一数目个错误;以及
确定导致所述错误的所述不成功校正的所述数据块的所述一组位包括大于对所述数据块的所述产品码操作将校正的所述第一数目个错误的第二数目个错误。
25.根据权利要求21所述的方法,其进一步包括:
产生用于记录的条目,其中所述条目指示所述事件的所述例子;以及
基于所述记录而将所述事件的频率与阈值进行比较,其中响应于确定所述事件的所述频率满足所述阈值来执行所述重新混合操作。
26.根据权利要求21所述的方法,其进一步包括:
确定关于所述第一逻辑关联的所述错误的地点;及
基于所述错误的所述地点来确定所述错误是失速模式错误,其中响应于标识与所述第一层及所述第二层错误校正码操作相关联的所述事件的所述例子及确定所述错误是所述失速模式错误来执行所述重新混合操作。
27.根据权利要求26所述的方法,其中所述数据块包括第一逻辑关联的多个行及多个列,且其中基于所述错误的所述地点来确定所述错误是所述失速模式错误包括:
确定与所述错误的所述不成功校正相关联的所述数据块的所述多个行中的一行;
确定与所述错误的所述不成功校正相关联的所述数据块的所述多个列中的一列,其中所述错误位于所述行与所述列的重叠区中;
确定所述产品码操作将校正的第一数目个错误;以及
确定导致所述错误的所述不成功校正的所述数据块的所述重叠区中的所述错误包括大于所述产品码操作将校正的所述第一数目个错误的第二数目个错误。
28.一种方法,其包括:
标识与对非易失性存储器的数据块执行的错误校正码操作相关联的事件的例子;
产生用于记录的条目,其中所述条目指示所述事件的所述例子;
基于所述记录而将所述事件的频率与阈值进行比较;以及
响应于确定所述事件的所述频率满足所述阈值,由处理装置对所述数据块执行重新混合操作以将所述数据块的逻辑到物理关联从第一逻辑关联改变到第二逻辑关联。
29.根据权利要求28所述的方法,其中所述非易失性存储器包括非易失性存储器单元的交叉点阵列。
30.根据权利要求28所述的方法,其中标识与对所述非易失性存储器的所述数据块执行的错误校正码操作相关联的所述事件的所述例子包括:
对所述数据块执行第一层所述错误校正码操作;以及
确定对所述数据块的所述第一层所述错误校正码操作与所述数据块的错误的不成功校正相关联。
31.根据权利要求28所述的方法,其中标识与对所述非易失性存储器的所述数据块执行的错误校正码操作相关联的所述事件的所述例子包括:
对所述数据块执行第二层所述错误校正码操作;以及
确定对所述数据块的所述第二层所述错误校正码操作与所述数据块的所述错误的成功校正相关联。
32.根据权利要求28所述的方法,其中所述第一层所述错误校正码操作包括产品码操作。
33.根据权利要求28所述的方法,其中标识与对所述非易失性存储器的所述数据块执行的错误校正码操作相关联的所述事件的所述例子包括:
确定关于所述第一逻辑关联的所述错误的地点;以及
基于所述错误的所述地点来确定所述错误是失速模式错误。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410568601.6A CN118409892A (zh) | 2018-01-22 | 2019-01-17 | 使用数据块的可变逻辑到物理关联的增强错误校正码能力 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/877,008 US10831596B2 (en) | 2018-01-22 | 2018-01-22 | Enhanced error correcting code capability using variable logical to physical associations of a data block |
US15/877,008 | 2018-01-22 | ||
PCT/US2019/014045 WO2019143840A1 (en) | 2018-01-22 | 2019-01-17 | Enhanced error correcting code capability using variable logical to physical associations of a data block |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410568601.6A Division CN118409892A (zh) | 2018-01-22 | 2019-01-17 | 使用数据块的可变逻辑到物理关联的增强错误校正码能力 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111712804A true CN111712804A (zh) | 2020-09-25 |
CN111712804B CN111712804B (zh) | 2024-05-24 |
Family
ID=67298641
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980013345.1A Active CN111712804B (zh) | 2018-01-22 | 2019-01-17 | 使用数据块的可变逻辑到物理关联的增强错误校正码能力 |
CN202410568601.6A Pending CN118409892A (zh) | 2018-01-22 | 2019-01-17 | 使用数据块的可变逻辑到物理关联的增强错误校正码能力 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410568601.6A Pending CN118409892A (zh) | 2018-01-22 | 2019-01-17 | 使用数据块的可变逻辑到物理关联的增强错误校正码能力 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10831596B2 (zh) |
CN (2) | CN111712804B (zh) |
WO (1) | WO2019143840A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10521296B2 (en) * | 2018-02-20 | 2019-12-31 | Micron Technology, Inc. | Performing an additional decoding operation on an identified set of bits of a data block |
US20190317857A1 (en) * | 2019-04-26 | 2019-10-17 | Intel Corporation | Technologies for providing error correction for row direction and column direction in a cross point memory |
US11237903B2 (en) * | 2019-06-25 | 2022-02-01 | Intel Corporation | Technologies for providing ECC pre-provisioning and handling for cross-point memory and compute operations |
US11500567B2 (en) * | 2019-12-06 | 2022-11-15 | Micron Technology, Inc. | Configuring partitions of a memory sub-system for different data |
CN112463435A (zh) * | 2020-12-07 | 2021-03-09 | 广东工业大学 | 一种基于数据块访问频度的局部修复方法 |
US20220207190A1 (en) * | 2020-12-26 | 2022-06-30 | Intel Corporation | Low overhead memory integrity with error correction capabilities |
CN113489570B (zh) * | 2021-06-30 | 2023-05-09 | 郑州云海信息技术有限公司 | 一种PCIe链路的数据传输方法、装置及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070150774A1 (en) * | 2004-06-30 | 2007-06-28 | Seagate Technology Llc | Maintaining data integrity in a data storage system |
CN103699491A (zh) * | 2012-09-28 | 2014-04-02 | 群联电子股份有限公司 | 数据储存方法、存储器控制器与存储器储存装置 |
CN103871447A (zh) * | 2012-12-14 | 2014-06-18 | 华邦电子股份有限公司 | 与非门快闪存储器阵列及芯片及其存取、读取及管理方法 |
Family Cites Families (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3137119B2 (ja) * | 1989-06-07 | 2001-02-19 | キヤノン株式会社 | 誤り訂正装置 |
US5247523A (en) * | 1989-07-12 | 1993-09-21 | Hitachi, Ltd. | Code error correction apparatus |
US5490264A (en) | 1993-09-30 | 1996-02-06 | Intel Corporation | Generally-diagonal mapping of address space for row/column organizer memories |
US5943693A (en) | 1995-03-29 | 1999-08-24 | Intel Corporation | Algorithmic array mapping to decrease defect sensitivity of memory devices |
US6606718B1 (en) * | 2000-05-11 | 2003-08-12 | Agere Systems Inc. | Product code with interleaving to enhance error detection and correction |
US6738942B1 (en) * | 2000-06-02 | 2004-05-18 | Vitesse Semiconductor Corporation | Product code based forward error correction system |
KR100856399B1 (ko) * | 2002-01-23 | 2008-09-04 | 삼성전자주식회사 | 디코딩 방법 및 그 장치 |
US6978343B1 (en) * | 2002-08-05 | 2005-12-20 | Netlogic Microsystems, Inc. | Error-correcting content addressable memory |
GB0322597D0 (en) * | 2003-09-26 | 2003-10-29 | Texas Instruments Ltd | Soft error correction |
US7415651B2 (en) * | 2004-06-02 | 2008-08-19 | Seagate Technology | Data communication system with multi-dimensional error-correction product codes |
KR100734262B1 (ko) * | 2004-12-07 | 2007-07-02 | 삼성전자주식회사 | 광 저장 매체의 최적화된 결함 처리를 위한 결함 판단 장치 |
US7600177B2 (en) * | 2005-02-08 | 2009-10-06 | Lsi Corporation | Delta syndrome based iterative Reed-Solomon product code decoder |
US7856584B2 (en) * | 2005-03-30 | 2010-12-21 | Intel Corporation | Unequal error protection apparatus, systems, and methods |
US7562282B1 (en) * | 2005-05-23 | 2009-07-14 | Western Digital Technologies, Inc. | Disk drive employing error threshold counters to generate an ECC error distribution |
CA2615373A1 (en) * | 2005-07-15 | 2007-01-25 | Schering Corporation | Quinazoline derivatives useful in cancer treatment |
US8046660B2 (en) * | 2006-08-07 | 2011-10-25 | Marvell World Trade Ltd. | System and method for correcting errors in non-volatile memory using product codes |
US8209582B1 (en) * | 2006-11-07 | 2012-06-26 | Marvell International Ltd. | Systems and methods for optimizing a product code structure |
WO2008126202A1 (ja) * | 2007-03-23 | 2008-10-23 | Fujitsu Limited | ストレージシステムの負荷分散プログラム、ストレージシステムの負荷分散方法、及びストレージ管理装置 |
JP5166074B2 (ja) * | 2008-02-29 | 2013-03-21 | 株式会社東芝 | 半導体記憶装置、その制御方法、および誤り訂正システム |
TWI382422B (zh) | 2008-07-11 | 2013-01-11 | Genesys Logic Inc | 根據錯誤更正碼更新快閃記憶體之資料頁面之儲存裝置與方法 |
US8296626B2 (en) * | 2008-11-07 | 2012-10-23 | Spansion Llc | Error correction for flash memory |
US8595593B2 (en) | 2008-12-24 | 2013-11-26 | Hynix Semiconductor Inc. | Nonvolatile memory device having a copy back operation and method of operating the same |
CN101814922B (zh) * | 2009-02-23 | 2013-06-19 | 国际商业机器公司 | 基于bch码的多位错纠错方法和装置以及存储系统 |
US8095765B2 (en) | 2009-03-04 | 2012-01-10 | Micron Technology, Inc. | Memory block management |
US8418026B2 (en) | 2010-10-27 | 2013-04-09 | Sandisk Technologies Inc. | Hybrid error correction coding to address uncorrectable errors |
US8732431B2 (en) | 2011-03-06 | 2014-05-20 | Micron Technology, Inc. | Logical address translation |
US9176810B2 (en) | 2011-05-27 | 2015-11-03 | SanDisk Technologies, Inc. | Bit error reduction through varied data positioning |
US8732557B2 (en) * | 2011-05-31 | 2014-05-20 | Micron Technology, Inc. | Data protection across multiple memory blocks |
US9158672B1 (en) * | 2011-10-17 | 2015-10-13 | Rambus Inc. | Dynamic deterministic address translation for shuffled memory spaces |
US9047203B1 (en) * | 2011-12-21 | 2015-06-02 | Altera Corporation | Systems and methods for encoding and decoding data |
TWI477104B (zh) * | 2012-09-13 | 2015-03-11 | Mstar Semiconductor Inc | 錯誤校正裝置與錯誤校正方法 |
US9223693B2 (en) | 2012-12-31 | 2015-12-29 | Sandisk Technologies Inc. | Memory system having an unequal number of memory die on different control channels |
KR101997623B1 (ko) | 2013-02-26 | 2019-07-09 | 삼성전자주식회사 | 메모리 장치 및 그것을 포함하는 메모리 시스템 |
US9136873B2 (en) * | 2013-03-11 | 2015-09-15 | Intel Corporation | Reduced uncorrectable memory errors |
US9069695B2 (en) | 2013-03-14 | 2015-06-30 | Apple Inc. | Correction of block errors for a system having non-volatile memory |
US9391641B2 (en) * | 2013-04-26 | 2016-07-12 | SK Hynix Inc. | Syndrome tables for decoding turbo-product codes |
US9424131B2 (en) * | 2013-09-19 | 2016-08-23 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Spatially decoupled redundancy schemes for a solid state drive (SSD) |
US9336129B2 (en) * | 2013-10-02 | 2016-05-10 | Sandisk Technologies Inc. | System and method for bank logical data remapping |
JP5978315B2 (ja) * | 2013-10-30 | 2016-08-24 | 株式会社トッパンTdkレーベル | 二次元コード生成方法、および、二次元コード読み取り方法 |
US9280419B2 (en) * | 2013-12-16 | 2016-03-08 | International Business Machines Corporation | Dynamic adjustment of data protection schemes in flash storage systems based on temperature, power off duration and flash age |
US8874835B1 (en) * | 2014-01-16 | 2014-10-28 | Pure Storage, Inc. | Data placement based on data properties in a tiered storage device system |
US9798620B2 (en) | 2014-02-06 | 2017-10-24 | Sandisk Technologies Llc | Systems and methods for non-blocking solid-state memory |
US9419655B2 (en) * | 2014-04-04 | 2016-08-16 | Seagate Technology Llc | Error correction code (ECC) selection using probability density functions of error correction capability in storage controllers with multiple error correction codes |
US9389973B2 (en) * | 2014-05-30 | 2016-07-12 | Oracle International Corporation | Memory error propagation for faster error recovery |
US20160048457A1 (en) | 2014-08-13 | 2016-02-18 | The Boeing Company | Dynamic memory address remapping in computing systems |
US9870153B2 (en) | 2014-12-29 | 2018-01-16 | Sandisk Technologies Llc | Non-volatile memory systems utilizing storage address tables |
US9842082B2 (en) * | 2015-02-27 | 2017-12-12 | Intel Corporation | Dynamically updating logical identifiers of cores of a processor |
US10230401B2 (en) * | 2015-03-10 | 2019-03-12 | Toshiba Memory Corporation | Memory controller for a non-volatile memory, memory system and method |
US10222990B2 (en) | 2015-07-24 | 2019-03-05 | Sandisk Technologies Llc | Optimistic read operation |
US10108503B2 (en) * | 2015-08-24 | 2018-10-23 | Western Digital Technologies, Inc. | Methods and systems for updating a recovery sequence map |
TWI566091B (zh) * | 2015-09-10 | 2017-01-11 | 慧榮科技股份有限公司 | 用來對一錯誤更正碼進行解碼之方法與解碼電路 |
WO2017058184A1 (en) * | 2015-09-30 | 2017-04-06 | Hewlett Packard Enterprise Development Lp | Remapping operations |
US9998148B2 (en) * | 2015-12-01 | 2018-06-12 | SK Hynix Inc. | Techniques for low complexity turbo product code decoding |
KR102547713B1 (ko) * | 2016-09-01 | 2023-06-26 | 삼성전자주식회사 | 반도체 메모리 장치 및 이의 동작 방법 |
US10110256B2 (en) * | 2016-09-16 | 2018-10-23 | Micron Technology, Inc. | Apparatuses and methods for staircase code encoding and decoding for storage devices |
US10348334B2 (en) * | 2016-10-25 | 2019-07-09 | International Business Machines Corporation | Reducing a decoding error floor by post-processing codewords encoded by binary symmetry-invariant product codes |
US20180167088A1 (en) * | 2016-12-09 | 2018-06-14 | Futurewei Technologies, Inc. | Error-Correcting Code Method and System with Hybrid Block Product Codes |
US10331514B2 (en) * | 2017-03-17 | 2019-06-25 | Micron Technology, Inc. | Tiered error correction code (ECC) operations in memory |
US10312944B2 (en) * | 2017-03-17 | 2019-06-04 | Micron Technology, Inc. | Error correction code (ECC) operations in memory for providing redundant error correction |
US10324634B2 (en) * | 2017-04-07 | 2019-06-18 | Micron Technology, Inc. | Methods of bit-flagged sketch-based memory management and memory devices utilizing the same |
US10719389B2 (en) * | 2017-12-01 | 2020-07-21 | Burlywood, Inc. | Enhanced data storage with concatenated inner and outer error correction codes |
US10514980B2 (en) * | 2018-03-22 | 2019-12-24 | Winbond Electronics Corp. | Encoding method and memory storage apparatus using the same |
US10439648B1 (en) * | 2018-04-10 | 2019-10-08 | Micron Technology, Inc. | Area efficient implementation of a product code error correcting code decoder |
-
2018
- 2018-01-22 US US15/877,008 patent/US10831596B2/en active Active
-
2019
- 2019-01-17 CN CN201980013345.1A patent/CN111712804B/zh active Active
- 2019-01-17 CN CN202410568601.6A patent/CN118409892A/zh active Pending
- 2019-01-17 WO PCT/US2019/014045 patent/WO2019143840A1/en active Application Filing
-
2020
- 2020-10-23 US US17/079,020 patent/US11636009B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070150774A1 (en) * | 2004-06-30 | 2007-06-28 | Seagate Technology Llc | Maintaining data integrity in a data storage system |
CN103699491A (zh) * | 2012-09-28 | 2014-04-02 | 群联电子股份有限公司 | 数据储存方法、存储器控制器与存储器储存装置 |
CN103871447A (zh) * | 2012-12-14 | 2014-06-18 | 华邦电子股份有限公司 | 与非门快闪存储器阵列及芯片及其存取、读取及管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111712804B (zh) | 2024-05-24 |
CN118409892A (zh) | 2024-07-30 |
US11636009B2 (en) | 2023-04-25 |
WO2019143840A1 (en) | 2019-07-25 |
US20210042190A1 (en) | 2021-02-11 |
US20190227869A1 (en) | 2019-07-25 |
US10831596B2 (en) | 2020-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11636009B2 (en) | Enhanced error correcting code capability using variable logical to physical associations of a data block | |
JP6606039B2 (ja) | メモリシステムおよび制御方法 | |
US20200042223A1 (en) | System and method for facilitating a high-density storage device with improved performance and endurance | |
US9509342B2 (en) | Error correcting code decoder | |
EP2483785B1 (en) | Stripe-based memory operation | |
US9184767B2 (en) | Scoring variable nodes for low density parity check code decoding | |
US9768808B2 (en) | Method for modifying device-specific variable error correction settings | |
US20160299812A1 (en) | Device-Specific Variable Error Correction | |
JP7051887B2 (ja) | 非2値コンテキスト・ミキシング方法、非2値コンテキスト・ミキシング圧縮器および圧縮解除器を備えるデータ・ストレージ・システム、ならびにコンピュータ・プログラム | |
US20160299844A1 (en) | Mapping Logical Groups of Data to Physical Locations In Memory | |
US11726869B2 (en) | Performing error control operation on memory component for garbage collection | |
TW201941054A (zh) | 執行解碼操作以模擬切換資料區塊之一組經識別位元之一位元 | |
CN113010098A (zh) | 用于提高存储器系统的输入/输出吞吐量的设备和方法 | |
US11836377B2 (en) | Data transfer management within a memory device having multiple memory regions with different memory densities | |
KR20200102527A (ko) | 호스트 시스템의 워크로드에 기초하여 저장 장치에 대한 판독 동작 식별 | |
KR20230056901A (ko) | 메모리 장치에 데이터를 프로그램하는 장치 및 방법 | |
US11630594B2 (en) | Storing data based on a probability of a data graph | |
KR102419922B1 (ko) | 데이터 블록의 식별된 비트 세트에 추가 디코딩 연산 수행 | |
CN113126899A (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 |