CN114627953A - 基于分层错误检测的存储器错误校正 - Google Patents
基于分层错误检测的存储器错误校正 Download PDFInfo
- Publication number
- CN114627953A CN114627953A CN202111497492.6A CN202111497492A CN114627953A CN 114627953 A CN114627953 A CN 114627953A CN 202111497492 A CN202111497492 A CN 202111497492A CN 114627953 A CN114627953 A CN 114627953A
- Authority
- CN
- China
- Prior art keywords
- bits
- type
- error detection
- memory
- error
- 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
Images
Classifications
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- 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/1048—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 arrangements adapted for a specific error detection or correction feature
-
- 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
-
- 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/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/19—Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Probability & Statistics with Applications (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请案涉及基于分层错误检测的存储器错误校正。在一些实例中,存储器系统可基于第一类型的错误检测程序识别一组位包含仅基于所述第一类型的错误检测程序无法校正的一定数量的错误位。所述存储器系统可基于更改所述一组位内的不同群组的位来产生一或多组候选位及使用第二类型的错误检测程序评估一或多组此类候选位直到一组候选位被识别为无错。接着,所述存储器系统可基于识别为无错的所述一组候选位校正所述一组位。
Description
相关申请案的交叉参考
本专利申请案主张汉娜(HANNA)在2020年12月10日申请的标题为“基于分层错误检测的存储器错误校正(MEMORY ERROR CORRECTION BASED ON LAYERED ERRORDETECTION)”的第17/117,913号美国专利申请案的优先权,所述美国专利申请案转让给其受让人且以其全文引用方式明确并入本文中。
技术领域
技术领域涉及基于分层错误检测的存储器错误校正。
背景技术
存储器装置广泛用于在例如计算机、无线通信装置、相机、数字显示器及类似物的各种电子装置中存储信息。信息通过将存储器装置内的存储器单元编程到各种状态来存储。举例来说,二进制存储器单元可被编程到通常对应于逻辑1或逻辑0的两种支持状态中的一者。在一些实例中,单个存储器单元可支持多于两种可能状态,其中任一者可由存储器单元存储。为了存取由存储器装置存储的信息,组件可读取或感测存储器装置内的一或多个存储器单元的状态。为了存储信息,组件可将存储器装置内的一或多个存储器单元写入或编程到对应状态。
存在各种类型的存储器装置,其包含磁性硬盘、随机存取存储器(RAM)、只读存储器(ROM)、动态RAM(DRAM)、同步动态RAM(SDRAM)、铁电RAM(FeRAM)、磁性RAM(MRAM)、电阻性RAM(RRAM)、快闪存储器、相变存储器(PCM)、3维交叉点存储器(3D交叉点)、或非(NOR)及与非(NAND)存储器装置及其它。存储器装置可为易失性或非易失性的。易失性存储器单元(例如DRAM单元)可随时间丢失其编程状态,除非其由外部电源周期性刷新。非易失性存储器单元(例如NAND存储器单元)可长时间保存其编程状态,即使缺少外部电源。
发明内容
描述一种设备。所述设备可包含:存储器阵列;及控制器,其与所述存储器阵列耦合且经配置以致使所述设备:从所述存储器阵列接收一组位;至少部分基于可操作以检测到与所述一组位相关联的至少两个位错误的第一类型的错误检测程序来识别所述一组位中的至少两个位不正确;至少部分基于第二类型的错误检测程序更新所述一组位中的所述至少两个位;及将所述一组经更新位传输到主机装置。
描述一种存储代码的非暂时性计算机可读媒体。所述代码在由电子装置的处理器执行时可致使所述电子装置:从存储器阵列接收一组位;至少部分基于可操作以检测到与所述一组位相关联的至少两个位错误的第一类型的错误检测程序来识别所述一组位中的至少两个位不正确;至少部分基于第二类型的错误检测程序更新所述一组位中的所述至少两个位;及将所述一组经更新位传输到主机装置。
描述一种方法。所述方法可包含:从存储器阵列接收一组位;至少部分基于可操作以检测到与所述一组位相关联的至少两个位错误的第一类型的错误检测程序来识别所述一组位中的至少两个位不正确;至少部分基于第二类型的错误检测程序更新所述一组位中的所述至少两个位;及将所述一组经更新位传输到主机装置。
附图说明
图1说明根据本文中公开的实例的支持基于分层错误检测的存储器错误校正的系统的实例。
图2说明根据本文中公开的实例的支持基于分层错误检测的存储器错误校正的系统的实例。
图3说明根据本文中公开的实例的支持基于分层错误检测的存储器错误校正的过程流程的实例。
图4展示根据本文中公开的实例的支持基于分层错误检测的存储器错误校正的存储器系统的框图。
图5及6展示说明根据本文中公开的实例的支持基于分层错误检测的存储器错误校正的一或若干方法的流程图。
具体实施方式
用于存储器装置的控制器可在将一组位(例如数据)发送到主机系统之前对所述位执行错误检测程序。然而,在一些情况中,控制器可检测到控制器可能无法仅基于错误检测程序校正的错误。举例来说,控制器可在将一组位发送到主机系统之前对所述位执行单错误校正及双错误检测(SECDED)程序,且SECDED程序可允许控制器检测到一组位中的至少两个位不正确,但SECDED程序可能不支持校正所述两个位。
在一些情况中,响应于检测到无法校正错误,控制器可启动存储器装置的复位程序、中止来自主机系统的与检索一组位相关联的命令或两者。执行复位程序可涉及非期望延时,且从可靠性视角看,可能不期望中止命令,以及所属领域的一般技术人员应了解的其它缺点。
然而,如本文中描述,响应于使用第一类型的错误检测程序到检测到错误,控制器可基于可能对包含其中检测到错误的一组位以及一或多个额外位的一更大组位执行第二类型的错误检测程序(例如循环冗余校验(CRC)程序)来校正错误位。例如,在从存储器阵列检索一组位之后,控制器可使用第一类型的错误检测码(例如SECDED码)对所述一组位执行第一类型的错误检测程序(例如SECDED程序)及检测其它无法校正错误(例如双位错误)。适用于一组位的第二类型的错误检测码(例如CRC码)可经存储于存储器阵列中。举例来说,在一些情况中,一组位可为其对应第二类型的错误检测码存储于存储器阵列中的一更大组位的部分(例如,存储器阵列可存储用于位超集的CRC码,具有检测到的错误的一组位是位超集的子集)。控制器可产生一或多组候选位,其中每一者可对应于一组位但具有经更改的不同群组的N个位,其中N等于使用执行第一类型的错误检测程序检测到的不正确位的数量(例如,N可为二(2),其中第一类型的错误检测程序是SECDED程序)。接着,控制器可使用第二类型的错误检测程序基于第二类型的错误检测码评估一或多组此类候选位(例如,可对一或多组候选位执行CRC校验)直到一组候选位被识别为无错。当对有错位组是其子集的位超集执行第二类型的错误检测程序时,每一组候选位可包含位超集内的任何额外位以及有错位组的经更改版本。
被识别为无错的一组候选位内的位可用于替换与使用第一类型的错误检测程序检测到的错误相关联的错误位。在一些情况中,控制器接着可将一组经更新(例如经校正)位传输到主机系统。因此,本文中的教示的这些及其它方面可避免与复位程序相关联的延时、扩展存储器系统的错误校正能力及可靠性或两者,以及所属领域的一般技术人员应了解的其它优点。
首先在参考图1到2描述的系统的背景下描述本公开的特征。在参考图3描述的过程流程的背景下进一步描述本公开的特征。本公开的这些及其它特征通过与参考图4到6描述的基于分层错误检测的存储器错误校正相关的设备图及流程图进一步说明且参考所述设备图及流程图描述。
图1说明根据本文中公开的实例的支持基于分层错误检测的存储器错误校正的系统100的实例。系统100包含与存储器系统110耦合的主机系统105。
存储器系统110可为或包含任何装置或装置集合,其中装置或装置集合包含至少一个存储器阵列。举例来说,存储器系统110可为或包含通用快闪存储(UFS)装置、嵌入式多媒体控制器(eMMC)装置、快闪装置、通用串行总线(USB)快闪装置、安全数字(SD)卡、固态驱动(SSD)、硬盘驱动(HDD)、双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)或非易失性DIMM(NVDIMM)以及其它可能性。
系统100可包含于例如桌上型计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如飞机、无人机、火车、汽车或其它运输工具)、物联网(IoT)启用装置、嵌入式计算机(例如包含于运载工具、工业设备或联网商用装置中的嵌入式计算机)或包含存储器及处理装置的任何其它计算装置的计算装置中。
系统100可包含可与存储器系统110耦合的主机系统105。在一些实例中,此耦合可包含与主机系统控制器106的接口,主机系统控制器106可为经配置以致使主机系统105执行根据本文中描述的实例的各种操作的控制组件的实例。主机系统105可包含一或多个装置,且在一些情况中可包含处理器芯片组及由处理器芯片组执行的软件栈。举例来说,主机系统105可包含经配置用于与存储器系统110或其中的装置通信的应用程序。处理器芯片组可包含一或多个核心、一或多个高速缓存(例如在主机系统105本地或包含于主机系统105中的存储器)、存储器控制器(例如NVDIMM控制器)及存储协议控制器(例如外围组件互连高速(PCIe)控制器、串行高级技术附接(SATA)控制器)。举例来说,主机系统105可使用存储器系统110将数据写入到存储器系统110及从存储器系统110读取数据。尽管图1中展示一个存储器系统110,但主机系统105可与任何数量的存储器系统110耦合。
主机系统105可经由至少一个物理主机接口与存储器系统110耦合。在一些情况中,主机系统105及存储器系统110可经配置以使用相关联协议经由物理主机接口来通信(例如,在存储器系统110与主机系统105之间交换或以其它方式传送控制、地址、数据及其它信号)。物理主机接口的实例可包含(但不限于)SATA)接口、UFS接口、eMMC接口、PCIe接口、USB接口、光纤通道接口、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、双倍数据速率(DDR)接口、DIMM接口(例如支持DDR的DIMM插槽接口)、开放NAND快闪接口(ONFI)及低功耗双倍数据速率(LPDDR)接口。在一些实例中,一或多个此类接口可包含于或以其它方式支持于主机系统105的主机系统控制器106与存储器系统110的存储器系统控制器115之间。在一些实例中,主机系统105可经由包含于存储器系统110中的每一存储器装置130的相应物理主机接口或经由包含于存储器系统110中的每一类型的存储器装置130的相应物理主机接口与存储器系统110耦合(例如,主机系统控制器106可与存储器系统控制器115耦合)。
存储器系统110可包含存储器系统控制器115及一或多个存储器装置130。存储器装置130可包含任何类型的存储器单元(例如非易失性存储器单元、易失性存储器单元或其任何组合)的一或多个存储器阵列。尽管图1的实例中展示两个存储器装置130-a及130-b,但存储器系统110可包含任何数量的存储器装置130。此外,如果存储器系统110包含多于一个存储器装置130,那么存储器系统110内的不同存储器装置130可包含相同或不同类型的存储器单元。
存储器系统控制器115可与主机系统105耦合及通信(例如,经由物理主机接口)且可为经配置以致使存储器系统110执行根据本文中描述的实例的各种操作的控制组件的实例。存储器系统控制器115还可与存储器装置130耦合及通信以在存储器装置130处执行例如读取数据、写入数据、擦除数据或刷新数据的操作(以及其它此类操作),其一般可称为存取操作。在一些情况中,存储器系统控制器115可从主机系统105接收命令且与一或多个存储器装置130通信以执行此类命令(例如,在一或多个存储器装置130内的存储器阵列处)。举例来说,存储器系统控制器115可从主机系统105接收命令或操作且可将命令或操作转换成指令或适当命令以实现存储器装置130的期望存取。在一些情况中,存储器系统控制器115可与主机系统105及一或多个存储器装置130交换数据(例如,响应于或否则结合来自主机系统105的命令)。举例来说,存储器系统控制器115可将与存储器装置130相关联的响应(例如数据分组或其它信号)转换成用于主机系统105的对应信号。
存储器系统控制器115可经配置用于与存储器装置130相关联的其它操作。举例来说,存储器系统控制器115可执行或管理操作,例如损耗均衡操作、废弃项目收集操作、错误控制操作(例如错误检测操作或错误校正操作)、加密操作、高速缓存操作、媒体管理操作、后台刷新、健康监测及与来自主机系统105的命令相关联的逻辑地址(例如逻辑块地址(LBA))与存储器装置130内的存储器单元相关联的物理地址(例如物理块地址)之间的地址转译。
存储器系统控制器115可包含例如一或多个集成电路或离散组件、缓冲存储器或其组合的硬件。硬件可包含具有执行本文中归于存储器系统控制器115的操作的专用(例如硬编码)逻辑的电路系统。存储器系统控制器115可为或包含微控制器、专用逻辑电路系统(例如场可编程门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理器(DSP))或任何其它合适处理器或处理电路系统。
存储器系统控制器115还可包含本地存储器120。在一些情况中,本地存储器120可包含只读存储器(ROM)或其它存储器,其可存储可由存储器系统控制器115执行以执行本文中归于存储器系统控制器115的功能的操作代码(例如可执行指令)。在一些情况中,本地存储器120可另外或替代地包含静态随机存取存储器(SRAM)或其它存储器,其可由存储器系统控制器115用于例如与本文中归于存储器系统控制器115的功能相关的内部存储或计算。
存储器装置130可包含一或多个非易失性存储器单元阵列。举例来说,存储器装置130可包含NAND(例如NAND快闪)存储器、ROM、相变存储器(PCM)、自选择存储器、其它硫属化物基存储器、铁电随机存取存储器(RAM)(FeRAM)、磁RAM(MRAM)、NOR(例如NOR快闪)存储器、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻随机存取存储器(RRAM)、氧化物基RRAM(OxRAM)、电可擦除可编程ROM(EEPROM)或其任何组合。另外或替代地,存储器装置130可包含一或多个易失性存储器单元阵列。举例来说,存储器装置130可包含RAM存储器单元,例如动态RAM(DRAM)存储器单元及同步DRAM(SDRAM)存储器单元。
在一些实例中,存储器装置130可包含(例如,在相同裸片上或在相同封装内)本地控制器135,其可对相应存储器装置130的一或多个存储器单元执行操作。本地控制器135可结合存储器系统控制器115操作或可执行本文中归于存储器系统控制器115的一或多个功能。举例来说,如图1中说明,存储器装置130-a可包含本地控制器135-a且存储器装置130-b可包含本地控制器135-b。
在一些情况中,存储器装置130可为或包含NAND装置(例如NAND快闪装置)。存储器装置130可为或包含存储器裸片160。举例来说,在一些情况中,存储器装置130可为包含一或多个裸片160的封装。在一些实例中,裸片160可为从晶片切割的一块电子级半导体(例如从硅晶片切割的硅裸片)。每一裸片160可包含一或多个平面165,且每一平面165可包含一组相应块170,其中每一块170可包含一组相应页面175,且每一页面175可包含一组存储器单元。
在一些情况中,NAND存储器装置130可包含经配置以各自存储一个信息位的存储器单元,其可称为单电平单元(SLC)。另外或替代地,NAND存储器装置130可包含经配置以各自存储多个信息位的存储器单元,其可在经配置以各自存储两个信息位时称为多电平单元(MLC),在经配置以各自存储三个信息位时称为三电平单元(TLC),在经配置以各自存储四个信息位时称为四电平单元(QLC),或更一般地称为多电平存储器单元。多电平存储器单元可提供相对于SLC存储器单元更大的存储密度,但可在一些情况中涉及更窄读取或写入裕度或更大复杂性用于支持电路系统。
在一些情况中,平面165可指代若干群组块170,且在一些情况中,并发操作可发生于不同平面165内。举例来说,并发操作可对不同块170内的存储器单元执行,只要不同块170在不同平面165中。在一些情况中,在不同平面165中执行并发操作会受到一或多个限制,例如对在其相应平面165内具有相同页面地址的不同页面175内的存储器单元执行相同操作(例如,与命令解码、页面地址解码电路系统或跨平面165共享的其它电路系统相关)。
在一些情况中,块170可包含组织成行(页面175)及列(例如串,未展示)的存储器单元。举例来说,相同页面175中的存储器单元可共享共同字线(例如,与共同字线耦合),且相同串中的存储器单元可共享共同数字线(其可替代地称为位线)(例如,与共同数字线耦合)。
针对一些NAND架构,存储器单元可在第一粒度水平下(例如,在页面粒度水平下)读取及编程(例如写入)但可在第二粒度水平下(例如,在块粒度水平下)擦除。即,页面175可为可独立编程或读取(例如,作为单个编程或读取操作的部分并发编程或读取)的存储器(例如存储器单元组)的最小单位,且块170可为可独立擦除(例如,作为单个擦除操作的部分并发擦除)的存储器(例如存储器单元组)的最小单位。此外,在一些情况中,NAND存储器单元可在其可用新数据重写之前被擦除。因此,举例来说,旧页面175在一些情况中不可更新直到包含页面175的整个块170被擦除。
系统100可包含支持基于分层错误检测的存储器错误校正的任何数量的非暂时性计算机可读媒体。举例来说,主机系统105、存储器系统控制器115或存储器装置130可包含或否则可存取存储用于执行本文中归于主机系统105、存储器系统控制器115或存储器装置130的功能的指令(例如固件)的一或多个非暂时性计算机可读媒体。举例来说,此类指令在由主机系统105(例如主机系统控制器106)、存储器系统控制器115或存储器装置130(例如本地控制器135)执行时可致使主机系统105、存储器系统控制器115或存储器装置130执行本文中描述的一或多个相关联功能。
在一些情况中,与存储器装置130及主机系统105耦合的存储器系统控制器115可从存储器装置130接收一组位(例如数据)以传输到主机系统105(例如,响应于由存储器系统控制器115从主机系统105接收的针对所述一组位的读取命令,其中所述一组位由存储器装置130存储)。在一些实例中,存储器系统控制器115可基于第一类型的错误检测程序(例如SECDED程序)识别一组位包含使用第一类型的错误检测程序无法校正的一定数量的位错误(错误位)(例如,一组位中的至少两个位不正确,其中第一类型的错误检测程序是SECDED程序)。举例来说,错误的出现可与以下有关:在存储器系统控制器115处从存储器装置130接收一组位(例如传输错误)、将一组位存储于本地存储器120处(例如存储错误)或其任何组合。可在从本地存储器120读取一组位用于传输到主机系统105之后使用第一类型的错误检测程序检查一组位的错误。
为了避免基于原本使用第一类型的错误检测程序无法校正的检测到的错误来执行存储器系统110的复位、中止来自主机系统105的相关命令或两者,存储器系统控制器115可基于第二类型的错误检测程序(例如CRC程序)更新(例如校正)一组位中的至少两个位。例如,存储器系统控制器115可产生一或多组候选位,其中一或多组候选位中的每一者基于更改具有检测到的错误的一组位内的一群组的相应N个位来产生,其中N是位错误的对应数量。另外,存储器系统控制器115可使用第二类型的错误检测程序(例如其重复例子)评估一或多组候选位中的每一者直到一组候选位被识别为无错。在一些此类实例中,第一类型的错误检测程序可基于第一类型的错误检测码(例如SECDED码),且第二类型的错误检测程序可基于第二类型的错误检测码(例如CRC码),其中第二类型的错误检测码可用存储器装置130存储。另外或替代地,第二类型的错误检测码可对应于包含其中使用第一类型的错误检测程序检测到错误的一组位的位超集(例如,先前已基于其产生),在此情况中,每一组候选位可包含超集的任何额外位以及其中使用第一类型的错误检测程序检测到错误的一组位的经更改版本。在一些情况中,存储器系统控制器115可将一组经校正位传输到主机系统105。
尽管特定实例可在本文中在NAND存储器装置的背景下描述,但应理解,本文中的教示可在任何类型的存储器的背景下应用。
图2说明根据本文中公开的实例的支持基于分层错误检测的存储器错误校正的系统200的实例。系统200可包含存储器装置205、控制器210及主机系统215。在一些实例中,系统200可包含图1的一或多个方面。例如,存储器装置205可为参考图1描述的存储器装置130的实例,控制器210可为参考图1描述的存储器系统控制器115或本地控制器135的实例,且主机系统215可为参考图1描述的主机系统105的实例。
在一些实例中,存储器装置205可为NAND存储器装置(例如包含经配置以存储来自控制器210的数据及检索数据用于控制器210的一或多个NAND存储器阵列的存储器装置)的实例。控制器210可包含本地存储器,例如本地SRAM存储器(例如,控制器210可包含经配置以存储来自存储器装置205的数据的一组SRAM存储器单元,存储器装置205可为参考图1描述的本地存储器120的实例)。控制器210可在将数据中继到主机系统215或存储器装置205(例如,响应于从主机系统215接收的命令)之前的某时间量内在本地存储器内存储(例如高速缓存、排队)从存储器装置205或主机系统215接收的数据。
存储器装置205可与控制器210耦合(例如,经由一或多个相应第一总线或其它信号路径),且控制器210可与主机系统215耦合(例如,经由一或多个相应第二总线或其它信号路径)。存储器装置205可经配置以将数据(例如一或多个位)提供到控制器210,且控制器210可经配置以将数据提供到主机系统215(例如,响应于来自主机系统215的读取命令)。另外或替代地,控制器210可经配置以从主机系统215接收数据(例如一或多个位)且将数据提供到存储器装置205,其中存储器装置205可经配置以存储数据(例如,响应于来自主机系统215的写入命令)。
在一些实例中,控制器210可从存储器装置205的存储器阵列接收一组位220-a(例如,基于由控制器210从主机系统215接收的读取命令,控制器210可将读取命令引导到存储器装置205)。一组位220-a可包含位225的任何数量的子集。举例来说,一组位220-a可包含位225-a、225-b、225-c及225-d的子集。在一些实例中,位225的子集内的一或多个位可在从存储器装置205处的存储器阵列检索与稍后从控制器210的本地存储器单元(例如,从SRAM存储器单元)检索之间不正确地翻转。在图2的实例中,位225-c的子集内的一或多个位可为错误的。例如,一或多个传输错误可基于位225-c的子集从存储器装置205传输到控制器210来发生。另外或替代地,控制器210处的一或多个组件可使与位225-c的子集相关联的信号失真,使得控制器210确定位225-c的子集中的一或多个位具有相对于位的实际值翻转的值。另外或替代地,错误可发生于位225的子集存储于控制器210的本地存储器内时(例如,由于电磁干扰或一些其它现象)。
无论原因为何,控制器210可使用第一类型的错误检测程序识别位225的子集中的至少两个位不正确但可能无法使用相同第一类型的错误检测程序校正检测到的错误。第一类型的错误检测程序可基于第一类型的错误检测码。例如,控制器210可使用可基于SECDED码的SECDED程序识别位225-c的子集中的至少两个位不正确。在一些实例中,控制器210可在将一组位存储于控制器210的本地存储器单元(例如SRAM存储器单元)内之后(例如,在从此类存储器单元读取一组位以准备将所述一组位传输到主机系统215之后)使用第一类型的错误检测程序评估位225的子集。
在一些情况中,位225的每一子集可与第一类型的相应错误检测码(例如相应SECDED码)相关联。例如,位225-a的子集可与第一类型的第一错误检测码相关联,位225-b的子集可与第一类型的第二错误检测码相关联,位225-c的子集可与第一类型的第三错误检测码相关联,且位225-d的子集可与第一类型的第四错误检测码相关联。
为了校正使用第一类型的错误检测程序检测到但仅使用第一类型的错误检测程序无法校正的位错误,控制器210可使用第二类型的错误检测程序。例如,控制器210可从存储器装置205接收与位225的有错子集相关联的一或多个奇偶校验位且基于奇偶校验位执行第二类型的错误检测程序。奇偶校验位可包括第二类型的错误检测码(例如CRC码)。
第二类型的错误检测码可与包含位225-c的有错子集的一组位220-a相关联(例如,可能先前已基于所述一组位220-a产生且由与所述一组位220-a相关联的存储器装置205存储)。如图2的实例中展示,一组位220-a还可包含位225的任何数量的额外子集。因此,在一些情况中,第一类型的错误检测程序可在子集粒度水平下操作(例如,位225的每一子集可与第一类型的错误检测程序相关联且使用第一类型的错误检测程序基于对应第一类型的错误检测码单独评估),而第二类型的错误检测程序可在更大组粒度水平下操作(例如,每一组位220可与第二类型的错误检测程序相关联且使用第二类型的错误检测程序基于对应第二类型的错误检测码评估)。因此,第二类型的错误检测程序及代码可与相对于与第一类型的错误检测程序及代码相关联的位的位超集相关联,其中一组位220是包含位225的多个子集的超集。
为了更新位225-c的子集,控制器210可产生一或多组候选位220,其中一或多组候选位220中的每一者是基于更改一组位220-a内的一群组相应N个位且更特定来说,对应于使用第一类型的错误检测程序检测到的错误的位225-c的子集内的一群组相应N个位。N可等于与检测到的错误相关联的不正确位的数量(例如,N可为二(2),其中第一类型的错误检测程序是SECDED程序)。
例如,如果位225-c的每一子集具有x个位且N等于二(2),那么控制器210可产生高达组候选位220,其中若干组候选位220中的每一者不同于其它组候选位。即,相对于包含具有检测到的错误的位225-c的子集的一组位220,位225-c的有错子集内的一不同组两个位可经更改(翻转)以便产生每一组候选位220。一组候选位220可使用第二类型的错误检测程序(例如,使用与一组位220-a相关联的CRC码)评估以确定一组候选位是否无错,在此情况中,经更改两个位是引起先前在位225-c的有错子集中检测到的错误的错误位。因此,控制器210可使用第二类型的错误检测程序(例如,使用CRC码)产生及评估一或多组候选位220直到一组候选位被识别为无错。
在一些情况中,控制器210可将一组经更新位220-b或其任何部分传输到主机系统215,其中一组经更新位220-b或其部分可对应于(例如,相同于)使用第二类型的错误检测程序识别为无错的一组候选位220或其部分。举例来说,一组经更新位220-b可包含包含于一组位220-a中的位225-a、225-b及225-d的子集。另外,一组经更新位220-b可包含位225-e的子集,其可为位225-c的子集的经更新版本,其中N个位已被更新为正确值。在一些实例中,在更新位225-c的子集之后且在传输一组经更新位220-b之前,控制器210可使用第一类型的错误检测程序的一或多个例子验证位225-e的经更新子集或一组经更新位220-b中的每一位正确(例如,控制器210可对一组经更新位220-b内的位225-e的经更新子集或位225的任何其它子集执行另一SECDED评估以验证使用CRC程序确定的更改正确)。在此类实例中,将一组经更新位220-b或其部分传输到主机系统215可基于(例如取决于、响应于)验证一组经更新位或其部分中的每一位正确。
图3说明根据本文中公开的实例的支持基于分层错误检测的存储器错误校正的过程流程300的实例。在一些实例中,过程流程300可由图1及/或2的一或多个方面实施。例如,存储器装置205-a可为参考图2描述的存储器装置205或参考图1描述的存储器装置130的方面的实例,控制器210-a可为参考图2描述的控制器210或参考图1描述的存储器系统控制器115或本地控制器135中的一或多者的方面的实例,且主机系统215-a可为参考图2描述的主机系统215或参考图1描述的主机系统105的实例。过程流程300的方面可由控制器(例如控制器210-a)以及其它组件实施。另外或替代地,过程流程300的方面可经实施为存储于存储器中的指令(例如存储于与存储器系统110耦合的存储器中的固件)。举例来说,在其中指令由控制器(例如图1的存储器系统控制器115)执行的实例中,指令可致使控制器致使装置执行过程流程300的操作。
在一些实例中,存储器装置205-a可为NAND存储器装置(例如包含经配置以存储来自控制器210-a的数据及检索数据用于控制器210-a的一或多个NAND存储器阵列的存储器装置)的实例,且控制器210-a可为包含本地存储器的用于存储器装置205-a的控制器(例如包含经配置以在将来自存储器装置205-a的数据发送到主机系统215-a之前存储此类数据的SRAM存储器单元的控制器210-a)。
在一些实例中,在执行过程流程300之前,控制器210-a可从主机系统215-a接收写入命令以及一组相关联位。在一些实例中,控制器210-a可将一组位发送到存储器装置205-a,且存储器装置205-a可将一组位存储于存储器阵列(例如NAND存储器阵列)内。在一些实例中,存储器装置205-a还可存储用于一组位的第二类型的错误检测码(例如CRC码)(例如,在存储器阵列的与相同页面内或作为一组位的元数据)。举例来说,存储器装置205-a可在从控制器210-a接收一组位之后产生第二类型的错误检测码,或控制器210-a可产生第二类型的错误检测码且将其发送到存储器装置205-a。
当一组位及相关联第二类型的错误检测码由存储器装置205-a存储时,控制器210-a可从主机系统215-a接收针对一组位的读取命令。响应于读取命令,控制器210-a可从存储器装置205-a请求一组位,且存储器装置205-a可检索一组位且可将一组位传输到控制器210-a。
在一些情况中,存储器装置205-a可使一组位作为一或多个子集传输到控制器210-a。例如,如图3的实例中展示,存储器装置205-a可在305将一组位的第一子集传输到控制器210-a,且存储器装置205-a可在310将一组位的第二子集传输到控制器210-a。应理解,本文中描述的一组位可包含本文中描述的位的任何数量的子集,因此,位的任何数量的子集可由存储器装置205-a传输到控制器210-a,尽管图3的实例中说明两个子集。此外,应理解,为了错误检测,一组位可由控制器210-a操作为包括不同子集,无论所述一组位是否作为相同子集由存储器装置205-a传输。
在312,存储器装置205-a可将与第二类型的错误检测程序相关联的一或多个奇偶校验位(例如用于CRC程序的CRC码)传输到控制器210-a。举例来说,存储器装置205-a可传输先前由与一组位相关联的存储器装置205-a存储的第二类型的错误检测码。尽管在图3的实例中展示为在315之前传输,但存储器装置205-a可在某一其它时间(例如在315之后)传输一或多个奇偶校验位(例如,响应于来自控制器210-a的请求,其可基于控制器210-a在315检测到错误)。
在315,可基于第一类型的错误检测程序确定位的第一子集内的N个位不正确,但错误位仅使用第一类型的错误检测程序无法校正(例如,两位错误可使用SECDED程序检测到)。如别处指出,位的第一子集中的位可能已由于与在存储器装置205-a与控制器210-a之间交换一组位相关联的一或多个传输错误、与将数据存储于存储器装置205-a或控制器210-a处达某持续时间相关联的一或多个存储错误或其任何组合而变成有错(例如,可被解码为具有错误值)。
在320,可基于第二类型的错误检测程序更新N个位。例如,控制器210-a可更新N个位。在一些实例中,控制器210-a更新N可包含控制器210-a产生一或多组候选位,其中一或多组候选位中的每一者基于更改第一组位内的一群组相应N来产生。若干组候选位中的每一者还可包含位的第二子集或对应于在312接收的奇偶校验位的一组位内的任何其它位。
另外,控制器210-a更新N个位可包含控制器210-a使用第二类型的错误检测程序评估一或多组候选位(例如,使用从存储器装置205-a接收的第二类型的错误检测码)直到一组候选位被识别为无错,更新(例如校正)位的第一子集以包含识别为无错的一组候选位中的对应位。
在一些实例中,第一类型的错误检测程序可基于第一类型的错误检测码,且第二类型的错误检测程序可基于不同于第一类型的错误检测码的第二类型的错误检测码。位的第一子集可与第一类型的第一错误检测码相关联,且位的第二子集可与第一类型的第二错误检测码相关联。另外或替代地,一组位及第二组位可各自与第二类型的相同错误检测码相关联。
在325,在更新N个位之后,可使用第一类型的错误检测程序来验证位的经更新第一子集中的每一位正确。例如,控制器210-a可验证位的经更新第一子集中的每一位正确。在一些实例中,控制器210-a可对一组经更新位的每一子集或至少对其中先前在315识别错误的子集执行第一类型的错误检测程序(例如SECDED程序)。
在330,可传输位的经更新第一子集或包含经更新第一子集的一组经更新位。例如,控制器210-a可将位的经更新第一子集或包含经更新第一子集的一组经更新位传输到主机系统215-a。在一些实例中,控制器210-a可响应于(例如取决于)在325验证在更新N个位之后位的经更新第一子集中的每一位正确而传输位的经更新第一子集。
本文中描述的技术可与一或多个优点相关联。例如,通过在第一类型的错误检测程序之后执行第二类型的错误检测程序,控制器210-a能够校正影响比原本可仅使用第一类型的错误检测程序校正的位数量更大的位数量的错误。举例来说,控制器210-a能够在使用SECDED时通过用本文中描述的基于CRC的错误检测方案增补SECDED方案来校正高达双位错误。因此,通过使用本文中描述的分层错误检测方案,错误校正能力及因此系统的可靠性可相对于仅使用错误检测方案提高(例如,时间故障(FIT)率可降低)。另外,还可避免与各种复位程序相关联的延时以及其它可能益处。
图4展示根据本文中公开的实例的支持基于分层错误检测的存储器错误校正的存储器系统405的框图400。存储器系统405可为参考图1到3描述的存储器系统的方面的实例。存储器系统405或其各个组件可为用于基于分层错误检测执行存储器错误校正的各个方面的构件的实例,如本文中描述。举例来说,存储器系统405可包含接收组件410、错误检测组件415、位更新组件420、传输组件425或其任何组合。这些组件中的每一者可彼此直接或间接通信(例如,经由一或多个总线)。
接收组件410可经配置为或否则支持用于从存储器阵列接收一组位的构件。错误检测组件415可经配置为或否则支持用于至少部分基于可操作以检测到与一组位相关联的至少两个位错误(例如,可操作以检测到(例如,能够检测到)高达某数量的位错误,其中数量大于或等于2)的第一类型的错误检测程序来识别一组位中的至少两个位不正确的构件。位更新组件420可经配置为或否则支持用于至少部分基于第二类型的错误检测程序更新一组位中的至少两个位的构件。传输组件425可经配置为或否则支持用于将一组经更新位传输到主机装置的构件。
在一些实例中,第一类型的错误检测程序可至少部分基于第一类型的错误检测码。在一些实例中,第二类型的错误检测程序可至少部分基于不同于第一类型的第二类型的错误检测码。在一些实例中,接收组件410可经配置为或否则支持用于接收第二组位的构件,其中一组位与第一类型的第一错误检测码相关联,第二组位与第一类型的第二错误检测码相关联,且一组位及第二组位各自与第二类型的相同错误检测码相关联。
在一些实例中,为了支持更新一组位中的至少两个位,位更新组件420可经配置为或否则支持用于产生一或多组候选位的构件,一或多组候选位中的每一者至少部分基于更改一组位内的相应两个位。在一些实例中,为了支持更新一组位中的至少两个位,位更新组件420可进一步经配置为或否则支持用于使用第二类型的错误检测程序评估一或多组候选位中的每一者直到一组候选位被识别为无错的构件,其中一组经更新位包含被识别为无错的一组候选位。
在一些实例中,错误检测组件415可经配置为或否则支持用于在更新至少两个位之后且至少部分基于第一类型的错误检测程序验证一组经更新位中的每一位正确的构件,其中将一组经更新位传输到主机装置是至少部分基于验证一组经更新位中的每一位正确。
在一些实例中,接收组件410可经配置为或否则支持用于从存储器阵列接收与第二类型的错误检测程序相关联的一或多个奇偶校验位的构件,其中更新至少两个位是至少部分基于一或多个奇偶校验位。
在一些实例中,第一类型的错误检测程序可至少部分基于SECDED码。在一些实例中,第二类型的错误检测程序可至少部分基于CRC码。
在一些实例中,存储器阵列可为经配置以存储一组位的NAND存储器阵列。
在一些实例中,一组位可在SRAM存储器单元处接收,其中识别一组位中的至少两个位不正确且更新一组位中的至少两个位发生于一组位在SRAM存储器单元处接收之后。
图5展示说明根据本文中公开的实例的支持基于分层错误检测的存储器错误校正的方法500的流程图。方法500的操作可由本文中描述的存储器系统或其组件实施。举例来说,方法500的操作可由参考图1到4描述的存储器系统执行。在一些实例中,存储器系统可执行一组指令以控制装置的功能元件执行所描述功能。另外或替代地,存储器系统可使用专用硬件执行所描述功能的方面。
在505,方法可包含从存储器阵列接收一组位。操作505可根据本文中公开的实例执行。在一些实例中,操作505的方面可由参考图4描述的接收组件410执行。
在510,方法可包含至少部分基于可操作以检测到与一组位相关联的至少两个位错误的第一类型的错误检测程序来识别一组位中的至少两个位不正确。操作510可根据本文中公开的实例执行。在一些实例中,操作510的方面可由参考图4描述的错误检测组件415执行。
在515,方法可包含至少部分基于第二类型的错误检测程序更新一组位中的至少两个位。操作515可根据本文中公开的实例执行。在一些实例中,操作515的方面可由参考图4描述的位更新组件420执行。
在520,方法可包含将一组经更新位传输到主机装置。操作520可根据本文中公开的实例执行。在一些实例中,操作520的方面可由参考图4描述的传输组件425执行。
在一些实例中,本文中描述的设备可执行一或若干方法,例如方法500。设备可包含用于以下的特征、电路系统、逻辑、构件或指令(例如存储可由处理器执行的指令的非暂时性计算机可读媒体):从存储器阵列接收一组位;至少部分基于可操作以检测到与所述一组位相关联的至少两个位错误的第一类型的错误检测程序来识别所述一组位中的至少两个位不正确;至少部分基于第二类型的错误检测程序更新所述一组位中的所述至少两个位;及将所述一组经更新位传输到主机装置。
在本文中描述的方法500及设备的一些实例中,第一类型的错误检测程序可至少部分基于第一类型的错误检测码,第二类型的错误检测程序可至少部分基于不同于第一类型的第二类型的错误检测码,且设备可包含用于以下的特征、电路系统、逻辑、构件或指令(例如存储可由处理器执行的指令的非暂时性计算机可读媒体):接收第二组位,其中一组位可与第一类型的第一错误检测码相关联,第二组位可与第一类型的第二错误检测码相关联,且一组位及第二组位可各自与第二类型的相同错误检测码相关联。
在本文中描述的方法500及设备的一些实例中,用于更新一组位中的至少两个位的操作、特征、电路系统、逻辑、构件或指令可包含用于以下的操作、特征、电路系统、逻辑、构件或指令:产生一或多组候选位,一或多组候选位中的每一者至少部分基于更改一组位内的相应两个位;及使用第二类型的错误检测程序评估一或多组候选位中的每一者直到一组候选位被识别为无错,其中一组经更新位包含被识别为无错的一组候选位。
本文中描述的方法500及设备的一些实例可进一步包含用于以下的操作、特征、电路系统、逻辑、构件或指令:在更新至少两个位之后且至少部分基于第一类型的错误检测程序验证一组经更新位中的每一位正确,其中将一组经更新位传输到主机装置可至少部分基于验证一组经更新位中的每一位正确。
本文中描述的方法500及设备的一些实例可进一步包含用于以下的操作、特征、电路系统、逻辑、构件或指令:从存储器阵列接收与第二类型的错误检测程序相关联的一或多个奇偶校验位,其中更新至少两个位可至少部分基于一或多个奇偶校验位。
在本文中描述的方法500及设备的一些实例中,第一类型的错误检测程序可至少部分基于SECDED码,且第二类型的错误检测程序可至少部分基于CRC码。
在本文中描述的方法500及设备的一些实例中,存储器阵列可为经配置以存储一组位的NAND存储器阵列。
在本文中描述的方法500及设备的一些实例中,一组位可在SRAM存储器单元处接收,其中识别一组位中的至少两个位不正确且更新一组位中的至少两个位发生于一组位在SRAM存储器单元处接收之后。
图6展示说明根据本文中公开的实例的支持基于分层错误检测的存储器错误校正的方法600的流程图。方法600的操作可由本文中描述的存储器系统或其组件实施。举例来说,方法600的操作可由参考图1到4描述的存储器系统执行。在一些实例中,存储器系统可执行一组指令以控制装置的功能元件执行所描述功能。另外或替代地,存储器系统可使用专用硬件执行所描述功能的方面。
在605,方法可包含从存储器阵列接收一组位。操作605可根据本文中公开的实例执行。在一些实例中,操作605的方面可由参考图4描述的接收组件410执行。
在610,方法可包含至少部分基于可操作以检测到与一组位相关联的至少两个位错误的第一类型的错误检测程序来识别一组位中的至少两个位不正确。操作610可根据本文中公开的实例执行。在一些实例中,操作610的方面可由参考图4描述的错误检测组件415执行。
在615,方法可包含产生一或多组候选位,一或多组候选位中的每一者至少部分基于更改一组位内的相应两个位。操作615可根据本文中公开的实例执行。在一些实例中,操作615的方面可由参考图4描述的位更新组件420执行。
在620,方法可包含使用第二类型的错误检测程序评估一或多组候选位中的每一者直到一组候选位被识别为无错。操作620可根据本文中公开的实例执行。在一些实例中,操作620的方面可由参考图4描述的位更新组件420执行。
在625,方法可包含将一组经更新位传输到主机装置,其中一组经更新位包含被识别为无错的一组候选位。操作625可根据本文中公开的实例执行。在一些实例中,操作625的方面可由参考图4描述的传输组件425执行。
应注意,上述方法描述可能实施方案,且操作及步骤可经重新布置或否则经修改且其它实施方案是可能的。此外,可组合来自方法中的两者或更多者的部分。
描述一种设备。所述设备可包含存储器阵列及与所述存储器阵列耦合的控制器。所述控制器可经配置以致使所述设备:从所述存储器阵列接收一组位;至少部分基于可操作以检测到与所述一组位相关联的至少两个位错误的第一类型的错误检测程序来识别所述一组位中的至少两个位不正确;至少部分基于第二类型的错误检测程序更新所述一组位中的所述至少两个位;及将所述一组经更新位传输到主机装置。
在所述设备的一些实例中,所述第一类型的错误检测程序可至少部分基于第一类型的错误检测码,所述第二类型的错误检测程序可至少部分基于不同于所述第一类型的错误检测码的第二类型的错误检测码,且所述控制器可进一步经配置以致使所述设备接收第二组位,其中所述一组位可与所述第一类型的第一错误检测码相关联,所述第二组位可与所述第一类型的第二错误检测码相关联,且所述一组位及所述第二组位可各自与所述第二类型的相同错误检测码相关联。
在所述设备的一些实例中,为了更新所述一组位中的所述至少两个位,所述控制器可经配置以致使所述设备:产生一或多组候选位,所述一或多组候选位中的每一者至少部分基于更改所述一组位内的相应两个位;及使用所述第二类型的错误检测程序评估所述一或多组候选位中的每一者直到一组候选位被识别为无错,其中所述一组经更新位包含被识别为无错的所述一组候选位。
在所述设备的一些实例中,所述控制器可进一步经配置以在更新所述至少两个位之后且至少部分基于所述第一类型的错误检测程序验证所述一组经更新位中的每一位正确,其中将所述一组经更新位传输到所述主机装置可至少部分基于验证所述一组经更新位中的每一位正确。
在所述设备的一些实例中,所述控制器可进一步经配置以从所述存储器阵列接收与所述第二类型的错误检测程序相关联的一或多个奇偶校验位,其中更新所述至少两个位可至少部分基于所述一或多个奇偶校验位。
在所述设备的一些实例中,所述第一类型的错误检测程序可至少部分基于SECDED码,且所述第二类型的错误检测程序可至少部分基于CRC码。
在所述设备的一些实例中,所述存储器阵列包含经配置以存储所述一组位的NAND存储器阵列。
在所述设备的一些实例中,所述设备进一步包含经配置以接收所述一组位的静态随机SRAM存储器单元,其中所述控制器可经配置以致使所述设备识别所述一组位中的所述至少两个位不正确且在所述一组位在所述SRAM存储器单元处接收之后更新所述一组位中的所述至少两个位。
本文中描述的信息及信号可使用各种不同工艺及技术中的任何者表示。举例来说,在整个以上描述中可参考的数据、指令、命令、信息、信号、位、符号及芯片可由电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合表示。一些图式可将信号说明为单个信号;然而,信号可表示信号总线,其中总线可具有各种位宽度。
如果用于描述条件动作或过程,那么术语“如果”、“当…时”、“基于”、“至少部分基于”及“响应于”可互换。
术语“电子通信”、“导电接触”、“连接”及“耦合”可指代支持组件之间的信号流动的组件之间的关系。如果组件之间存在可在任何时间支持组件之间的信号流动的任何导电路径,那么可认为组件彼此电子通信(或导电接触或连接或耦合)。在任何给定时间,彼此电子通信(或导电接触或连接或耦合)的组件之间的导电路径可为开路或闭路,其基于包含经连接组件的装置的操作。经连接组件之间的导电路径可为组件之间的直接导电路径,或经连接组件之间的导电路径可为可包含中间组件(例如开关、晶体管或其它组件)的间接导电路径。在一些实例中,在一时间内可例如使用一或多个中间组件(例如开关或晶体管)中断经连接组件之间的信号流动。
术语“耦合”指代从组件之间的开路关系(其中信号目前不能通过导电路径传送于组件之间)移动到组件之间的闭路关系(其中信号能够通过导电路径传送于组件之间)的条件。如果例如控制器的组件将其它组件耦合在一起,那么组件引发允许信号通过先前不准许信号流动的导电路径流动于其它组件之间的变化。
术语“隔离”指代其中信号目前不能流动于组件之间的组件之间的关系。如果组件之间存在开路,那么组件彼此隔离。举例来说,如果定位于两个组件之间的开关打开,那么通过开关分离的组件彼此隔离。如果控制器隔离两个组件,那么控制器影响防止信号使用先前准许信号流动的导电路径流动于组件之间的变化。
本文论述的装置(包含存储器阵列)可经形成于例如硅、锗、硅锗合金、砷化镓、氮化镓等的半导体衬底上。在一些情况中,衬底是半导体晶片。在一些其它实例中,衬底可为绝缘体上硅(SOI)衬底(例如玻璃上硅(SOG)或蓝宝石上硅(SOP))或另一衬底上半导体材料外延层。衬底或衬底的子区域的导电性可通过使用各种化学物种(包含(但不限于)磷、硼或砷)进行掺杂来控制。掺杂可在衬底的初始形成或生长期间通过离子植入或通过任何其它掺杂方法执行。
本文中论述的开关组件或晶体管可表示场效晶体管(FET)且包括包含源极、漏极及栅极的三端子装置。端子可通过导电材料(例如金属)连接到其它电子元件。源极及漏极可导电且可包括重掺杂(例如简并)半导体区域。源极及漏极可通过轻掺杂半导体区域或沟道分离。如果沟道是n型(即,多数载子是电子),那么FET可称为n型FET。如果沟道是p型(即,多数载子是空穴),那么FET可称为p型FET。沟道可由绝缘栅极氧化物覆盖。沟道导电性可通过将电压施加到栅极来控制。举例来说,分别将正电压或负电压施加到n型FET或p型FET可导致沟道变成导电。如果将大于或等于晶体管的阈值电压的电压施加到晶体管栅极,晶体管可“接通”或“激活”。如果将小于晶体管的阈值电压的电压施加到晶体管栅极,晶体管可“断开”或“取消激活”。
本文中陈述的描述结合附图描述实例配置且不表示可实施或在权利要求书的范围内的所有实例。本文中使用的术语“示范性”意味着“用作实例、例子或说明”,而非“优选的”或“优于其它实例”。详细描述包含用于提供所描述技术的理解的特定细节。然而,可在没有这些特定细节的情况下实践这些技术。在一些例子中,以框图形式展示众所周知的结构及装置以免模糊所描述实例的概念。
在附图中,类似组件或特征可具有相同参考标记。此外,相同类型的各种组件可通过使参考标记后接连字符及区分类似组件的第二标记来区分。如果说明书中仅使用第一参考标记,那么描述适用于具有相同第一参考标记的类似组件中的任何一者,与第二参考标记无关。
本文中描述的功能可经实施于硬件、由处理器执行的软件、固件或其任何组合中。如果被实施于由处理器执行的软件中,那么功能可作为一或多个指令或代码存储于计算机可读媒体上或作为一或多个指令或代码经由计算机可读媒体传输。其它实例及实施方案在本公开及所附权利要求书的范围内。举例来说,由于软件的性质,上述功能可使用由处理器执行的软件、硬件、固件、硬连线或这些中的任何者的组合实施。实施功能的特征也可物理定位于各个位置处,其包含经分布使得功能的部分实施于不同物理位置处。
举例来说,结合本公开描述的各种说明框及组件可用经设计以执行本文中描述的功能的通用处理器、DSP、ASIC、FPGA或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其任何组合实施或执行。通用处理器可为微处理器,但替代地,处理器可为任何处理器、控制器、微控制器或状态机。处理器可实施为计算装置的组合(例如DSP与微处理器的组合、多个微处理器、结合DSP核心的一或多个微处理器或任何其它此配置)。
如本文中(包含在权利要求书中)使用,项目列表(例如由例如“…中的至少一者”或“…中的一或多者”的短语开头的项目列表)中使用的“或”指示包含性列表,使得(例如)A、B或C中的至少一者的列表意味着A或B或C或AB或AC或BC或ABC(即,A及B及C)。而且,如本文中使用,短语“基于”不应被解释为参考一组封闭条件。举例来说,在不脱离本公开的范围的情况下,被描述为“基于条件A”的示范性步骤可基于条件A及条件B两者。换句话说,如本文中使用,短语“基于”应以相同于短语“至少部分基于”的方式解释。
计算机可读媒体包括非暂时性计算机存储媒体及通信媒体两者,其包含促进计算机程序从一个位置传送到另一位置的任何媒体。非暂时性存储媒体可为可由通用或专用计算机存取的任何可用媒体。通过实例而非限制,非暂时性计算机可读媒体可包括RAM、ROM、电可擦除可编程只读存储器(EEPROM)、光盘(CD)ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置或可用于载送或存储呈指令或数据结构形式的期望程序代码构件且可由通用或专用计算机或通用或专用处理器存取的任何其它非暂时性媒体。而且,任何连接适当地称为计算机可读媒体。举例来说,如果软件使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或无线技术(例如红外线、无线电及微波)从网站、服务器或其它远程源传输,那么同轴电缆、光纤电缆、双绞线、DSL或无线技术(例如红外线、无线电及微波)包含于媒体定义中。如本文中使用,磁盘及光盘包含CD、激光盘、光盘、数字多功能光盘(DVD)、软盘及蓝光盘,其中磁盘通常磁性地复制数据,而光盘用激光光学地复制数据。上述内容的组合也包含于计算机可读媒体的范围内。
提供本文中的描述来使所属领域的技术人员能够制造或使用本公开。所属领域的技术人员将明白本公开的各种修改,且可在不脱离本公开的范围的情况下将本文中定义的一般原理应用到其它变体。因此,本公开不限于本文中描述的实例及设计,而是应被给予与本文中公开的原理及新颖特征一致的最广范围。
Claims (20)
1.一种设备,其包括:
存储器阵列;
控制器,其与所述存储器阵列耦合且经配置以致使所述设备:
从所述存储器阵列接收一组位;
至少部分基于可操作以检测到与所述一组位相关联的至少两个位错误的第一类型的错误检测程序来识别所述一组位中的至少两个位不正确;
至少部分基于第二类型的错误检测程序更新所述一组位中的所述至少两个位;及
将所述一组经更新位传输到主机装置。
2.根据权利要求1所述的设备,其中:
所述第一类型的错误检测程序是至少部分基于第一类型的错误检测码;
所述第二类型的错误检测程序是至少部分基于不同于所述第一类型的错误检测码的第二类型的错误检测码;且
所述控制器进一步经配置以致使所述设备接收第二组位,其中:
所述一组位与所述第一类型的第一错误检测码相关联;
所述第二组位与所述第一类型的第二错误检测码相关联;且
所述一组位及所述第二组位各自与所述第二类型的相同错误检测码相关联。
3.根据权利要求1所述的设备,其中为了更新所述一组位中的所述至少两个位,所述控制器经配置以致使所述设备:
产生一或多组候选位,所述一或多组候选位中的每一者至少部分基于更改所述一组位内的相应两个位;及
使用所述第二类型的错误检测程序评估所述一或多组候选位中的每一者直到一组候选位被识别为无错,其中所述一组经更新位包括被识别为无错的所述一组候选位。
4.根据权利要求1所述的设备,其中所述控制器进一步经配置以:
在更新所述至少两个位之后且至少部分基于所述第一类型的错误检测程序验证所述一组经更新位中的每一位正确,其中将所述一组经更新位传输到所述主机装置是至少部分基于验证所述一组经更新位中的每一位正确。
5.根据权利要求1所述的设备,其中所述控制器进一步经配置以:
从所述存储器阵列接收与所述第二类型的错误检测程序相关联的一或多个奇偶校验位,其中更新所述至少两个位是至少部分基于所述一或多个奇偶校验位。
6.根据权利要求1所述的设备,其中:
所述第一类型的错误检测程序是至少部分基于单错误校正及双错误检测SECDED码;且
所述第二类型的错误检测程序是至少部分基于循环冗余校验CRC码。
7.根据权利要求1所述的设备,其中所述存储器阵列包括经配置以存储所述一组位的与非NAND存储器阵列。
8.根据权利要求1所述的设备,其中所述设备进一步包括:
静态随机存取存储器SRAM存储器单元,其经配置以接收所述一组位,其中所述控制器经配置以致使所述设备识别所述一组位中的所述至少两个位不正确且在所述一组位在所述SRAM存储器单元处接收之后更新所述一组位中的所述至少两个位。
9.一种存储代码的非暂时性计算机可读媒体,其包括指令,所述指令在由电子装置的处理器执行时致使所述电子装置:
从存储器阵列接收一组位;
至少部分基于可操作以检测到与所述一组位相关联的至少两个位错误的第一类型的错误检测程序来识别所述一组位中的至少两个位不正确;
至少部分基于第二类型的错误检测程序更新所述一组位中的所述至少两个位;及
将所述一组经更新位传输到主机装置。
10.根据权利要求9所述的非暂时性计算机可读媒体,其中:
所述第一类型的错误检测程序是至少部分基于第一类型的错误检测码;
所述第二类型的错误检测程序是至少部分基于不同于所述第一类型的第二类型的错误检测码;且
所述指令在由所述电子装置的所述处理器执行时进一步致使所述电子装置接收第二组位,其中:
所述一组位与所述第一类型的第一错误检测码相关联;
所述第二组位与所述第一类型的第二错误检测码相关联;且
所述一组位及所述第二组位各自与所述第二类型的相同错误检测码相关联。
11.根据权利要求9所述的非暂时性计算机可读媒体,其中为了更新所述一组位中的所述至少两个位,所述指令在由所述电子装置的所述处理器执行时致使所述电子装置:产生一或多组候选位,所述一或多组候选位中的每一者至少部分基于更改所述一组位内的相应两个位;及
使用所述第二类型的错误检测程序评估所述一或多组候选位中的每一者直到一组候选位被识别为无错,其中所述一组经更新位包括被识别为无错的所述一组候选位。
12.根据权利要求9所述的非暂时性计算机可读媒体,其中所述指令在由所述电子装置的所述处理器执行时进一步致使所述电子装置:
在更新所述至少两个位之后且至少部分基于所述第一类型的错误检测程序验证所述一组经更新位中的每一位正确,其中将所述一组经更新位传输到所述主机装置是至少部分基于验证所述一组经更新位中的每一位正确。
13.根据权利要求9所述的非暂时性计算机可读媒体,其中所述指令在由所述电子装置的所述处理器执行时进一步致使所述电子装置:
从所述存储器阵列接收与所述第二类型的错误检测程序相关联的一或多个奇偶校验位,其中更新所述至少两个位是至少部分基于所述一或多个奇偶校验位。
14.根据权利要求9所述的非暂时性计算机可读媒体,其中:
所述第一类型的错误检测程序是至少部分基于单错误校正及双错误检测SECDED码;且
所述第二类型的错误检测程序是至少部分基于循环冗余校验CRC码。
15.一种由存储器系统执行的方法,所述方法包括:
从存储器阵列接收一组位;
至少部分基于可操作以检测到与所述一组位相关联的至少两个位错误的第一类型的错误检测程序来识别所述一组位中的至少两个位不正确;
至少部分基于第二类型的错误检测程序更新所述一组位中的所述至少两个位;及
将所述一组经更新位传输到主机装置。
16.根据权利要求15所述的方法,其中:
所述第一类型的错误检测程序是至少部分基于第一类型的错误检测码;
所述第二类型的错误检测程序是至少部分基于不同于所述第一类型的第二类型的错误检测码;且
所述方法进一步包括接收第二组位,其中:
所述一组位与所述第一类型的第一错误检测码相关联;
所述第二组位与所述第一类型的第二错误检测码相关联;且
所述一组位及所述第二组位各自与所述第二类型的相同错误检测码相关联。
17.根据权利要求15所述的方法,其中更新所述一组位中的所述至少两个位包括:
产生一或多组候选位,所述一或多组候选位中的每一者至少部分基于更改所述一组位内的相应两个位;及
使用所述第二类型的错误检测程序评估所述一或多组候选位中的每一者直到一组候选位被识别为无错,其中所述一组经更新位包括被识别为无错的所述一组候选位。
18.根据权利要求15所述的方法,其进一步包括:
在更新所述至少两个位之后且至少部分基于所述第一类型的错误检测程序验证所述一组经更新位中的每一位正确,其中将所述一组经更新位传输到所述主机装置是至少部分基于验证所述一组经更新位中的每一位正确。
19.根据权利要求15所述的方法,其进一步包括:
从所述存储器阵列接收与所述第二类型的错误检测程序相关联的一或多个奇偶校验位,其中更新所述至少两个位是至少部分基于所述一或多个奇偶校验位。
20.根据权利要求15所述的方法,其中:
所述第一类型的错误检测程序是至少部分基于单错误校正及双错误检测SECDED码;且
所述第二类型的错误检测程序是至少部分基于循环冗余校验CRC码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/117,913 US11329673B1 (en) | 2020-12-10 | 2020-12-10 | Memory error correction based on layered error detection |
US17/117,913 | 2020-12-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114627953A true CN114627953A (zh) | 2022-06-14 |
Family
ID=81456491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111497492.6A Pending CN114627953A (zh) | 2020-12-10 | 2021-12-09 | 基于分层错误检测的存储器错误校正 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11329673B1 (zh) |
CN (1) | CN114627953A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12019513B2 (en) | 2022-04-27 | 2024-06-25 | Micron Technology, Inc. | Apparatuses, systems, and methods for per row error scrub information |
WO2024107504A1 (en) * | 2022-11-15 | 2024-05-23 | Micron Technology, Inc. | Apparatuses and methods for single-pass access of ecc information, metadata information or combinations thereof |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5357527A (en) * | 1992-12-31 | 1994-10-18 | Trimble Navigation Limited | Validation of RAM-resident software programs |
US6996766B2 (en) * | 2002-06-28 | 2006-02-07 | Sun Microsystems, Inc. | Error detection/correction code which detects and corrects a first failing component and optionally a second failing component |
US7587658B1 (en) * | 2005-01-03 | 2009-09-08 | Sun Microsystems, Inc. | ECC encoding for uncorrectable errors |
US8930799B1 (en) * | 2010-03-03 | 2015-01-06 | Aquantia Corp. | Methods and apparatus for correcting block-coded data errors with an error detection code |
US8468431B2 (en) * | 2010-07-01 | 2013-06-18 | Densbits Technologies Ltd. | System and method for multi-dimensional encoding and decoding |
US20140173381A1 (en) * | 2012-12-19 | 2014-06-19 | Quantum, Inc. | Bit error detection and correction with error detection code and list-npmld |
US11294766B2 (en) * | 2019-08-13 | 2022-04-05 | Micron Technology, Inc. | Coordinated error correction |
US11281529B2 (en) * | 2020-02-14 | 2022-03-22 | Micron Technology, Inc. | Error detection code generation techniques |
-
2020
- 2020-12-10 US US17/117,913 patent/US11329673B1/en active Active
-
2021
- 2021-12-09 CN CN202111497492.6A patent/CN114627953A/zh active Pending
-
2022
- 2022-05-03 US US17/735,786 patent/US11716096B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11716096B2 (en) | 2023-08-01 |
US20220337271A1 (en) | 2022-10-20 |
US11329673B1 (en) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11809329B2 (en) | Recovery of logical-to-physical table information for a memory device | |
US11716096B2 (en) | Memory error correction based on layered error detection | |
CN113760183A (zh) | 存储器系统的存取操作状态信令 | |
CN115248743A (zh) | 存储器的读取阈值调整技术 | |
US20240176518A1 (en) | Parameter table protection for a memory system | |
US11782787B2 (en) | Dynamic error control configuration for memory systems | |
US11682469B2 (en) | Techniques for data programming | |
US11797385B2 (en) | Managing information protection schemes in memory systems | |
US11726863B2 (en) | Memory data correction using multiple error control operations | |
US12027213B2 (en) | Determining offsets for memory read operations | |
US11977443B2 (en) | Dynamic parity scheme | |
US11914473B1 (en) | Data recovery using ordered data requests | |
US12001279B2 (en) | Error protection for managed memory devices | |
WO2024040569A1 (en) | Data handling during a reflow operation | |
US11907580B2 (en) | Corrective read of a memory device with reduced latency | |
US20240235578A9 (en) | Error protection for managed memory devices | |
US20240232011A1 (en) | Techniques for improved data transfer | |
WO2022193231A1 (en) | Dynamic memory management operation | |
US20230376243A1 (en) | Storing parity during refresh operations | |
CN115248742A (zh) | 用于内部读取操作的错误校正 | |
CN115705852A (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 |