CN104541249A - 用于非易失性存储器的耐久性感知纠错码(ecc)保护 - Google Patents

用于非易失性存储器的耐久性感知纠错码(ecc)保护 Download PDF

Info

Publication number
CN104541249A
CN104541249A CN201380044865.1A CN201380044865A CN104541249A CN 104541249 A CN104541249 A CN 104541249A CN 201380044865 A CN201380044865 A CN 201380044865A CN 104541249 A CN104541249 A CN 104541249A
Authority
CN
China
Prior art keywords
ecc
data bit
metadata
write
displacement
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
Application number
CN201380044865.1A
Other languages
English (en)
Other versions
CN104541249B (zh
Inventor
S.奥斯德米尔
Q.蔡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN104541249A publication Critical patent/CN104541249A/zh
Application granted granted Critical
Publication of CN104541249B publication Critical patent/CN104541249B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/27Coding, 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 using interleaving techniques
    • H03M13/2778Interleaver using block-wise interleaving, e.g. the interleaving matrix is sub-divided into sub-matrices and the permutation is performed in blocks of sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明的实施例涉及用于存储器(例如,相变存储器)的耐久性感知ECC保护。根据一个实施例,方法包括计算对于数据位的第一元数据和对于ECC位(其保护数据位和第一元数据)的第二元数据。实施例可以包括一个或多个第一元数据位(对于数据位)以及一个或多个第二元数据位(对于ECC位)。额外的ECC保护级别保护第二元数据。在一个实施例中,应用于数据位和ECC位的损耗减少修改是不同的,并且可以对位的行为来定制。根据一个实施例,本文描述的耐久性感知ECC保护减少由于对存储器的访问而造成的损耗同时解决损耗减少机制对错误检测和纠正系统引入的复杂性。

Description

用于非易失性存储器的耐久性感知纠错码(ECC)保护
背景技术
存储器由于许多原因而在操作期间经历错误。存在纠错码(ECC)方案来处理在存储器中出现的错误并且提高短期可靠性(例如,单错纠正和双错检测(SECDED)方案)。
一些非易失性存储器具有有限的写周期。具有有限写周期的一些非易失性存储器能够采用仅在写操作期间改变它们的值的位被写回并且对特定写未改变它们的值的位保持不被触及(并且从而,写操作对那些位不造成进一步损耗)这样的方式执行写。一些系统实现损耗减少方案,其可以延长非易失性存储器的寿命(即,延迟非易失性存储器的磨损)。
现有的非易失性存储器实现损耗减少但未能考虑对短期可靠性的影响(例如,ECC机制),或提出错误检测/纠正机制但未能考虑对非易失性存储器的寿命时间的影响。
附图说明
下列描述包括对附图的论述,附图具有通过本发明的实施例的实现的示例的方式而给出的说明。附图应通过示例而非限制的方式来理解。如本文使用的,对一个或多个“实施例”的引用要理解为描述在本发明的至少一个实现中包括的特定特征、结构或特性。从而,在本文出现的例如“在一个实施例中”或“在备选实施例中”等短语描述本发明的各种实施例和实现,并且不一定全部都指相同的实施例。然而,它们也不一定互相排斥。在下面的描述和权利要求中,可使用术语“耦合”和它的派生词。术语“耦合”在本文可指直接接触(物理、电、磁、光,等)的两个或以上的元件,或指彼此未直接接触但仍彼此交互的两个或以上的元件。
图1是根据一个实施例要存储在非易失性存储器上的内容的框图,该内容包括元数据和ECC位,用于在提供错误保护的同时减少非易失性存储器的损耗。
图2是根据一个实施例用于对数据编码(其包括计算元数据位、ECC位、第二元数据位和第二ECC位)的过程的流程图。
图3是根据一个实施例对于数据位的元数据编码方案的框图。
图4是根据一个实施例对于ECC位的元数据编码方案的框图。
图5是根据一个实施例的过程的流程图,该过程包括基于元数据位、ECC位、第二元数据位和第二ECC位来重新生成原始数据。
图6是根据一个实施例的存储器子系统的框图。
图7是根据一个实施例具有耐久性感知ECC保护(endurance-aware ECC protection)的计算系统的框图。
图8是根据一个实施例具有耐久性感知ECC保护的移动装置的实施例的框图。
具体实施方式
本发明的实施例涉及用于耐久性感知纠错的设备、系统和方法。耐久性感知纠错减少非易失性存储器技术中的损耗同时提供ECC保护来实现提高的长期可靠性同时维持短期可靠性。如本文使用的“ECC保护”指纠错和/或错误检测。“损耗减少”指减少非易失性存储器的损耗(例如,减少写入非易失性存储器的位的数量)和/或均衡损耗(例如,使写入非易失性存储器的存储器单元的次数更均衡)。损耗减少可以根据损耗减少算法通过修改写入非易失性存储器的位并且提供用于使原始位从修改的位恢复的一些机制而实现。用于从修改的位恢复原始位的一个机制是计算识别对原始位做出的修改的元数据并且存储该元数据(例如,其中修改的数据在非易失性存储器中,或在独立位点和/或独立装置中)。损耗减少方案的两个示例在下文关于图3和4论述。
耐久性感知ECC保护可以在非易失性存储器技术中使用来减少非易失性存储器的损耗同时提供ECC保护。
一个实施例对数据位和ECC位两者实现损耗减少,并且包括第二级ECC保护。该第二级ECC保护可以扩展ECC机制以除数据位外还涵盖所有生成的元数据位。可能的损耗减少和ECC方案的一些示例在下文进一步详细描述,但实现的特定损耗减少和ECC方案可以包括有损耗减少和ECC保护的能力来实现针对错误的期望保护并且延长非易失性存储器的寿命的任何方案。
在一个实施例中,损耗减少技术牵涉单个数据字内(例如,32位字、64位字内或具有其他大小的字内的其他)的位(例如,数据位)的旋转。一个这样的实施例可以基于一个或多个写计数器,如下文描述的。
根据一个实施例,不同类型的内容利用不同的损耗减少技术。例如,数据位利用一个损耗减少技术,并且ECC位利用不同的损耗减少技术。对于数据位的损耗减少技术可以对数据位的行为来定制,并且对ECC位的损耗减少技术可以对ECC位的行为来定制。例如,数据位的小的子集可以在连续访问(access)期间改变值,而ECC位可随着大部分连续访问而改变。在一个这样的示例中,旋转机制可以用于执行数据位的旋转,而“翻转”机制可以用于对ECC位执行倒置(inversion)。旋转机制在下文关于图3更详细描述,并且翻转机制在下文关于图4更详细描述。在一个实施例中,对数据位和ECC位实现不同的损耗减少机制导致非易失性存储器的寿命时间大大提高。
在下面的描述中,论述许多细节来提供对本发明的实施例的更全面论述。本发明的实施例可在没有这些具体细节的情况下实践,这对于本领域内技术人员将是明显的。在其他实例中,众所周知的结构和装置以框图的形式而未详细地示出,以便避免混淆本发明的实施例。
注意在实施例的对应图中,信号用线条表示。一些线条可较粗,用于指示更多组成的信号通路,并且/或在一个或多个末端具有箭头,用于指示主要信息流方向。这样的指示不意在为限制性的。相反,这些线条结合一个或多个示范性实施例来使用以便于更容易理解电路或逻辑单元。任何表示的信号,如由设计需要或偏好所指定的,实际上可包括一个或多个信号,其可在任一方向上行进并且可用任何适合类型的信号方案实现。
图1是根据一个实施例要存储在非易失性存储器上的内容的框图,该内容包括元数据和ECC位,用于减少非易失性存储器的损耗同时提供错误保护。
本发明的实施例包括利用元数据位和ECC方案的扩展来提供期望的ECC保护级别的损耗减少技术。如在图1中图示的,要存储在存储器中的内容100包括数据位102、元数据位104、ECC位106、第二元数据位108和第二ECC位110。数据位102是在写请求中接收并且在接收它们后根据损耗减少算法来修改的数据。元数据位104指示对数据位102做出的任何损耗减少修改,并且在接收对存储器位点(在非易失性存储器中该数据存储在该位点处)的读请求时能够恢复原始数据位。对数据位102做出的修改可以包括根据任何损耗减少技术(例如,旋转、倒置、旋转和倒置的组合或任何其他损耗减少技术)做出的修改;不同损耗减少技术可需要不同数量的元数据位104。尽管图示两个元数据位104,可使用一个元数据位或多个元数据位。额外的元数据位可提供提高的损耗减少,但可能增加存储开销。
ECC位106对数据位102和元数据位104提供错误保护。可以使用任何ECC方案(例如,实现SECDED、4EC5ED或其他级别的ECC保护的ECC方案)。尽管图示八个ECC位106,任何数量的ECC位可以用于实现期望的ECC方案(例如,一个ECC位或多个ECC位)。根据损耗减少算法来修改ECC位106。应用于ECC位106的损耗减少技术可与应用于数据位102的损耗减少技术相同或不同。应用不同的损耗减少技术可以通过对要存储在这些位中的不同类型的内容的写模式定制每个技术而实现提高的损耗减少。
元数据位108指示对ECC位106做出的修改。尽管图示两个元数据位108,可使用一个或多个元数据位108。
因为元数据位108指示对ECC位106的修改,ECC位106未提供对元数据位108的ECC保护。这是因为如果元数据位108从ECC位106来计算,则它将在ECC位中触发某些修改来实现损耗均衡(wear-leveling)。从而,对元数据位108使用ECC位106可能违反保护级别。
针对第二级ECC保护,提供ECC位110以用于保护元数据位108。尽管图示单个ECC位,可使用一个ECC位或多个ECC位。例如,可以使用如图示的单个奇偶校验位,或对于利用超过两个元数据位的系统和/或实现其他级别的ECC保护的系统,可以采用使用额外ECC位的更复杂保护机制。
在存在64个数据位的图示实施例中,内容100实现SECDED(72,64)保护,同时实现损耗减少。两个元数据位104的引入可以容纳在ECC方案中,其中对编码和解码逻辑进行微小改变而无需额外保护位。根据元数据位104的数量和ECC保护级别,实现可以包括更少或额外ECC位。
具有损耗减少的SECDED保护可以使用旋转方案(其中两个“旋转位”104指示对数据位102执行的旋转)和翻转方案(其中两个“翻转位”108指示ECC位106的倒置)来实现。其他实施例可以实现损耗减少方案的其他变化形式。例如,实施例可以对数据位102实现翻转方案并且对ECC位106实现旋转方案、对于数据位102和ECC位106两者实现相同方案或实现任何其他损耗减少方案。对于损耗减少的旋转和翻转方案在下文更详细描述。
元数据位104和108以及ECC位106和110可以连同数据位102一起存储在非易失性存储器中,或可以独立存储在不同位点和/或装置中。在元数据位和/或ECC位独立于数据而被存储的实施例中,可以与数据并行地或相继地访问独立存储的位。在一个这样的实施例中,如果ECC位存储在存储器中而没有耐久性限制(例如,存储在存储器中而没有有限数量的写周期),实现不包括对于ECC位的元数据位。由于硬件要求降低和调度访问的简易度增加,与数据位一起存储元数据位和ECC位的实现可以更简单和/或更成本有效。
独立存储元数据位可以实现将元数据位的单个集映射到存储器中的多个字。例如,元数据位104可以独立于数据位102存储并且除指示对存储在非易失性存储器中的其他数据位的修改外还指示对数据位102做出的修改。将元数据位的单个集映射到存储器中的多个字可能影响编码过程。在随数据位一起存储元数据位的一个实施例中,用于确定元数据位的值的额外读取不是必需的。在元数据位独立于数据位而被存储的一个实施例中,编码牵涉读取元数据位并且执行由元数据位指示的修改。在一个这样的实施例中,当要改变元数据位时,过程牵涉从存储器读取仅依赖相同元数据位的字、执行由元数据位的新的值指示的修改以及将修改的字存储回到存储器。执行由元数据位的新的值指示的修改还可以牵涉确定要修改的字的原始值(例如,在根据新的元数据位对字重新编码之前对修改的字解码)。在一个实施例中,确定是否更新元数据位可以基于数据位、元数据位的初始值或两者的组合。
图2是根据一个实施例用于对数据编码(其包括计算元数据位、ECC位、第二元数据位和第二ECC位)的过程的流程图。
如本文图示的流程图提供各种过程动作的序列的示例。尽管按特定序列或顺序示出,除非另外规定,可以修改动作的顺序。从而,图示的实现应仅理解为示例,并且图示的过程可以按不同的顺序执行,并且一些动作可并行执行。另外,在本发明的各种实施例中可以省略一个或多个动作;从而,并不是所有动作在每一个实现中都需要。其他过程流是可能的。
本文描述的过程可以在硬件、软件或硬件和软件的组合中实现。过程在下文描述为由系统执行,其意在描述本文描述的实施例中的一个或多个,和/或将被本领域内技术人员理解的其他变化形式。例如,在一个实施例中,存储器控制器内的逻辑执行过程。在另一个实施例中,非易失性存储器内的逻辑执行过程。在再另一个实施例中,存储器控制器和非易失性存储器两者内的逻辑和/或定位在另一个逻辑块中的逻辑执行过程。
过程200以接收要写入非易失性存储器的数据而开始202。例如,系统接收将数据写入非易失性存储器的请求。在接收要写的数据位后,系统计算对于数据位的元数据位(例如,图1的元数据位104);元数据位指示对数据位的损耗减少修改(例如,损耗减少修改)204。损耗减少修改可以包括用于减少或均衡对非易失性存储器的损耗的任何修改。例如,对数据位的损耗减少修改可以包括数据位的移位。数据位的移位可以牵涉数据位的组的循环移位,或数据位的其他非随机或随机移位。数据位的移位可以基于写计数器。例如,写计数器可以指示对字、数据位要写入的页、非易失性存储器或其他粒度的存储器单元的写数量。
在确定如何修改数据位(如由对数据位的元数据位指示的)后,系统相应地修改数据位206。例如,如果数据位要循环地旋转,系统确定要使数据位旋转多少位,并且使那些位旋转。在另一个示例中,如果数据位要基于存储器位点处的现有值而倒置,系统确定哪些位倒置,并且使那些位倒置。修改的数据位(例如,图1的数据位102)要存储在非易失性存储器中。
系统计算对于修改的数据位和元数据位的组合的ECC位(例如,图1的ECC位106)208。例如,在系统使数据位移位的情况下,系统计算对于移位的数据位和指示对数据位的移位的元数据位的ECC位。
在计算ECC位后,系统计算第二元数据位(例如,图1的元数据位108);该第二元数据位指示对ECC位的损耗减少修改210。系统修改ECC位(如由第二元数据位指示的)212。例如,如果ECC位要基于ECC位要写入的位点处的现有值而倒置,系统使ECC位倒置。在ECC位要旋转的另一个示例中,系统使ECC位旋转。
在计算第二元数据位后,系统计算对于第二元数据位的第二ECC位(例如,图1的ECC位110)214。
最后,系统将修改的数据位、元数据位、修改的ECC位、第二元数据位和第二ECC位存储在非易失性存储器中216。例如,系统存储移位的数据位、元数据位、倒置的ECC位、第二元数据位和第二ECC位。
尽管过程200涉及单个元数据位、ECC位、第二元数据位和第二ECC位,可使用那些位中的每个中的一个或多个。另外,尽管过程涉及使位旋转和/或倒置,损耗减少技术可导致或可未导致对于指定输入的位的修改。例如,如果使用倒置技术,并且要写的值和该位点处的现有值两者都相同,该位可不倒置。
图3是根据一个实施例对于数据位的元数据编码方案的框图。
编码方案300以数据位302要存储在非易失性存储器而开始。在该示例中,图示64位字;然而,编码方案可以适用于任何数量的数据位(例如,8位、32位、页或存储器单元的任何其他粒度)。在一个实施例中,写计数器304指示对字、页、非易失性存储器或任何其他粒度的存储器单元的写数量。对于写计数器的粒度可以与编码方案的粒度相同或不同。例如,编码方法可以适用于64位字,并且基于指示对整个存储器的写数量的写计数器。在使用写计数器的一个实施例中,系统对于每个相关写请求使写计数器304递增。写计数器304还可以在达到预定数量时或由于某一其他条件而翻转(roll over)和/或复位。
编码表306图示对使用两个元数据位的64个数据位的旋转方案的示例。旋转方案(例如在编码表306中图示的那个)可以由于例如数据位的行为(例如,在一些典型应用中,数据位的小的子集在连续访问期间改变值)而对数据位提供提高的损耗减少。
在表306中图示的编码方案中,数据位循环地旋转(16*元数据位的值)。在图示实施例中,元数据位的每个值代表对于数据位302的特定预定和/或硬接线循环移位量。在写期间,数据位循环地移位了这些预定值中的一个,并且使用的循环移位量也存储在非易失性存储器中。根据一个实施例,在对非易失性存储器的每N个写后,更新元数据位。在图示的实施例中,如果[写计数器的值/N mod 4]是0则使用编码307a,如果写计数器的值/N mod 4等于1则使用编码307b,如果写计数器的值/N mod 4等于2则使用编码307c,并且如果写计数器的值/N mod 4等于3则使用编码307d。
其他实施例可包括其他旋转量和/或模式。例如,系统可以使用随机函数来选择是否切换到新的移位量和/或模式,和/或选择该新的移位量。在一个这样的示例中,系统可以基于随机种子来使数据位循环地旋转,并且存储该随机种子用于恢复原始数据位。新移位量的选择可以基于它正替代的数据的移位量(例如,遵循移位量的预定模式)或可以完全随机化。所得的元数据位310可以与修改的数据308(其包括其他元数据和/或ECC位312)一起存储,如在上文参考图1和2描述的。
在读期间,并且在完成ECC校验后,确定与数据一起存储的元数据位,并且数据位根据元数据位采用相反方式移位以重新生成原始数据位。
尽管元数据编码方案300涉及对数据位的编码,ECC位或其他类型的位也可以使用旋转编码方案。
图4是根据一个实施例对于ECC位的元数据编码方案的框图。
元数据编码方案400对ECC位406编码。对修改的数据位402和元数据位404计算ECC位406。编码表408图示“翻转”或倒置损耗减少方案,其中ECC位的子段根据存储在相同地址的ECC的之前的值而在存储期间倒置(或不倒置),并且元数据位被设置(复位)来反映该子段中的位是否倒置。根据一个实施例,翻转损耗减少方案部分由于ECC位406的行为(例如,因为ECC位406的数量与数据位402的数量相比是相对小的,并且因为每个ECC位的值取决于相对大量的数据位,ECC位可能在每个迭代时切换)而提供提高的损耗减少。
在编码表408中图示的翻转方案对八个ECC位利用两个元数据位。这些元数据位中的每个专用于ECC位的互相排斥的子段中的一个。对于每个子段,计算在该子段中在写期间改变它们的值(即,切换)的ECC位的数量。如果将改变的位的数量大于子段中位的总数量的一半,该子段中的所有位被倒置,并且专用于该子段的元数据位设置成一。如果切换位的数量小于或等于该子段中位的数量的一半,这些位实际上被写回,并且对于该子段的元数据位设置成0。从而,根据一个实施例,至多一半的ECC位将在写期间改变它们的值,这可以减少非易失性存储器的损耗。
例如,编码410a图示ECC位中没有一个翻转(其中两个元数据位都等于0)的情景。编码410b图示ECC位7-4不翻转(其中对应元数据位等于0)但ECC位3-0翻转(其中对应元数据位等于1)的情景。编码410c图示ECC位7-4翻转(其中对应元数据位等于1)但ECC位3-0不翻转(其中对应元数据位等于0)的情景。最后,编码410d图示所有ECC位都翻转(其中两个元数据位都等于1)的情景。指示倒置的元数据位418可以连同修改的数据位402、元数据位404和修改的ECC位416一起存储。可以计算额外ECC位420来保护元数据位418,并且与其他内容一起存储,如在上文关于图1和2描述的。
在读操作期间,并且在完成ECC校验后,确定对每个子段的元数据位,并且在写期间执行的操作重复。例如,如果子段的元数据位是1,该子段中的ECC位再次倒置来重新生成ECC位的原始值。如果子段的元数据位是0,不需要进一步的操作来恢复原始值。
尽管编码方案400图示对于翻转方案的两个元数据位,可以使用任何数量的元数据位(例如,一个或多个元数据位)。大量元数据位可以实现细粒损耗减少,但可能增加开销。另外,尽管元数据编码方案400涉及对ECC位的编码,数据位或其他类型的位也可以使用翻转编码方案。
图5是根据一个实施例的过程的流程图,该过程包括基于元数据位、ECC位、第二元数据位和第二ECC位来重新生成原始数据。
过程500在系统从非易失性存储器读取存储的修改的数据位、元数据位、修改的ECC位、第二元数据位和第二ECC位时(例如,在系统从存储器读取图1的内容100时)开始502。例如,如果对数据位使用旋转方案和对ECC位使用翻转方案,系统从非易失性存储器读取移位的数据位、元数据位、倒置的ECC位、第二元数据位和第二ECC位。可以响应于例如对存储器地址的读请求而从存储器读取内容。
接着,系统检测第二元数据位是否具有错误504。在一个实施例中,为了确定第二元数据位是否有错误,系统使用第二元数据位和第二ECC位。如果在第二元数据位中没有检测到错误,系统基于第二元数据位重新生成原始ECC位506。例如,如果对ECC位使用翻转方案,响应于检测到读取的第二元数据位不包含错误,系统基于第二元数据位从倒置的ECC位重新生成ECC位。一旦重新生成原始ECC位,系统使用ECC位来检测修改的数据位和元数据位是否具有错误510。例如,如果实现SECDED方案,系统可以执行SECDED解码。如果在修改的数据位或修改的元数据位中未检测到错误,系统基于元数据位重新生成原始数据位514。系统然后将重新生成的数据位发送到请求代理516。
如果系统检测到错误,系统尝试基于对第二元数据位的可能值来重新生成ECC位508。对于奇偶校验利用单个第二ECC位的系统可以保持系统的SECDED性质。例如,在实现翻转方案(例如,图4的编码方案400)的实施例中,当在第二元数据位和/或第二ECC位中检测到错误时,将使用ECC位和由第二元数据位所保护的ECC的每个子段的ECC位的倒置来计算数据位。在一个这样的实施例中,K个第二元数据位将需要2K(即,2的K次幂)个迭代的重新计算原始ECC位(采用第二元数据位的特定组合);使用对迭代所计算的ECC值,系统确定原始数据位和元数据位。这些迭代可以并行(例如,通过复制硬件中的解码电路)、连续(例如,使用单个解码电路)或两者的混合(例如,如果系统具有小于所需迭代数量的多个资源)来执行。
系统基于ECC位的每个迭代重新生成的值来检测修改的数据位或元数据位是否包含错误510。如果检测到错误,尝试ECC位的额外可能值512。如果仍然没有对于ECC位的额外可能值,系统向系统代理报告ECC错误用于处理518。不管解码的实现如何,如果仅存在一个错误(例如,第二元数据位中的一个错误),迭代中的一个可以提供无错数据位和元数据位。如果迭代中没有一个生成无错解码,数据位、元数据位或ECC位中的一个具有系统已经检测到的额外错误。如果存在比ECC方案所保护的更多的错误(例如,在SECDED实现中三个或以上错误),迭代中超过一个提供无错解码,这可以是可能的。
根据一个实施例,在SECDED(其中第二ECC位是单个奇偶校验位)的情况下,如果第二元数据位和第二ECC位包含两个错误,系统将不能观察和/或纠正第二元数据位中的错误。然而,因为ECC位将未从错误的第二元数据位正确地重新生成,ECC位(其例如涵盖数据位、元数据位和ECC位)将未生成无错输出(如果例如在该步骤中牵涉的位中没有额外错误)并且将检测到错误并且将其转发到迭代过程校验备选方案来重新生成ECC,在该情况下一个迭代导致成功解码。
从而,由第二ECC位提供的保护机制(对第二元数据位)可以比由ECC位提供的保护(对于数据位和元数据位)更弱并且通过在解码过程中使用额外步骤而仍满足原始保护级别。例如,如果ECC位提供SECDED级保护,第二ECC位可以是单个奇偶校验位,并且仍维持SECDED级保护。
图6是根据一个实施例的存储器子系统的框图。
存储器子系统600包括非易失性存储器601,其具有带耐久性限制的多个存储器芯片618a-618n。在一个实施例中,非易失性存储器601包括相变存储器。在其他实施例中,存储器601包括NAND闪存、电阻RAM、单电子存储器、磁RAM(MRAM)、自旋转移距RAM(STTRAM)、纳米线存储器、铁电RAM(FRAM)、相变存储器和开关(PCMS)和/或铁电晶体管RAM(FeTRAM)。存储器子系统600还包括损耗减少逻辑602和ECC逻辑608。损耗减少逻辑602和ECC逻辑608可以执行例如图2的编码过程200和图5的解码过程5等过程。损耗减少逻辑602和ECC逻辑608可以驻存在非易失性存储器601内,或在非易失性存储器601外部(例如,在与非易失性存储器601耦合的存储器控制器中)。
损耗减少逻辑602包括逻辑单元604,用于向要写入非易失性存储器的数据位应用第一损耗减少修改并且生成指示该第一损耗减少修改的元数据位。例如,损耗减少逻辑602包括元数据编码器604,用于使要写入非易失性存储器的数据位移位并且生成指示对数据位的移位的元数据位。损耗减少逻辑602还包括逻辑单元607,用于向ECC位应用第二损耗减少修改并且生成指示该第二损耗减少修改的第二元数据位。例如,损耗减少逻辑602包括元数据编码器607,用于基于ECC要写入的位点处的现有值来使ECC位倒置并且生成指示ECC位是否倒置的第二元数据位。
在一个实施例中,对于数据位的元数据编码器604向数据位应用第一损耗减少修改,其与由元数据编码器607应用于ECC位的第二损耗减少修改不同。例如,元数据编码器604基于写计数器在字内执行数据位的组的移位,并且元数据编码器607基于ECC位要写入的位点处的现有值来使ECC位倒置。在另一个实施例中,对于数据位的元数据编码器604和对于ECC位的元数据编码器607执行相同损耗减少修改(例如,旋转或倒置)。
损耗减少逻辑还包括:逻辑单元606,用于基于元数据位从修改的数据位重新生成数据位;和逻辑单元609,用于基于第二元数据位从修改的ECC位重新生成ECC位。例如,损耗减少逻辑602包括元数据解码器606,用于在ECC解码器检测到移位的数据位和元数据位不包含错误时基于元数据位从移位的数据位重新生成数据位;损耗减少逻辑602包括元数据解码器609,用于在ECC解码器检测到第二元数据位不包含错误时基于第二元数据位从倒置的ECC位重新生成ECC位。尽管元数据编码器604、元数据解码器606、元数据编码器607和元数据解码器609图示为独立逻辑块,损耗减少逻辑602可以组合或分成任何数量的逻辑块。
ECC逻辑608包括逻辑单元610,用于计算对于修改的数据位(例如,移位的数据位)和对于数据位的元数据位的ECC位。例如,ECC逻辑608包括对于数据位和元数据位的ECC编码器610,用于计算对于移位的数据位和元数据位的ECC位。ECC逻辑608还包括逻辑单元614,用于计算对于第二元数据位的第二ECC位。例如,ECC逻辑608包括对于ECC位的元数据位的ECC编码器614,用于计算对于第二元数据位的第二ECC位。
ECC逻辑608包括:逻辑单元,用于基于第二ECC位(例如,对于数据位和元数据位的ECC解码器612)检测如从非易失性存储器读取的第二元数据位是否包含错误;和逻辑单元,用于基于ECC位(例如,对于ECC位的元数据位的ECC解码器616)检测修改的数据位和元数据位是否包含错误。尽管ECC编码器610、ECC解码器612、ECC编码器614和ECC解码器616图示为独立逻辑单元,ECC逻辑608可以实现为额外或更少逻辑单元的任何组合。另外,ECC解码电路(例如,ECC解码器612和/或ECC解码器616)可以被复制并且并行使用。
在一个实施例中,由损耗减少逻辑和ECC逻辑生成和/或修改的内容(例如,修改的数据位、元数据位、修改的ECC位、第二元数据位和第二ECC位)要存储在非易失性存储器601中,并且稍后由损耗减少逻辑和ECC逻辑读回并且解码和/或重新生成。
图7是根据一个实施例具有耐久性感知ECC保护的计算系统的框图。
系统700代表根据本文描述的任何实施例的计算装置,并且可以是膝上型计算机、台式计算机、服务器、游戏或娱乐控制系统、扫描仪、复印机、打印机或其他电子装置。系统700包括处理器720,其对系统700提供处理、操作管理和指令的执行。处理器720可以包括任何类型的微处理器、中央处理单元(CPU)、处理核或其他处理硬件来对系统700提供处理。处理器720控制系统700的整个操作,并且可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑装置(PLD)或类似物,或这样的装置的组合。
存储器子系统730可以代表对于系统700的主存储器、高速缓存或任何其他存储器(例如,对要由处理器720执行的代码或数据值提供存储的任何装置)。存储器子系统730包括存储器732,其代表一个或多个存储器装置,这些装置可以包括只读存储器(ROM)、闪速存储器、一个或多个种类的随机存取存储器(RAM)或其他存储器装置或这样的装置的组合。根据本文描述的任何实施例,存储器子系统730包括损耗减少逻辑734(例如,图6的损耗减少逻辑602)和ECC逻辑735(例如,图6的ECC逻辑608)。在一个实施例中,存储器子系统730还包括存储器控制器(未示出),其可以控制到和从存储器732的读和写操作。在一个实施例中,存储器子系统730定位在处理器720上。在另一个实施例中,存储器子系统730定位在独立装置上。在再另一个实施例中,存储器子系统730的一个或多个部分定位在处理器720上并且存储器子系统730的其他部分定位在独立装置上。在一个实施例中,存储器732可以设计为高速缓存并且作为处理器720的部分而包括在其中。
除其他事物外,存储器子系统730可以存储和托管操作系统(OS)736来提供软件平台用于在系统700中执行指令。另外,存储和执行来自存储器子系统730的其他程序指令738来提供系统700的逻辑和处理。OS 736和程序指令738由处理器720执行。
处理器720和存储器子系统730耦合于总线/总线系统710。总线710是抽象,其代表由合适的桥接器、适配器和/或控制器连接的任何一个或多个独立物理总线、通信线/接口和/或点到点连接。因此,总线710可以包括例如系统总线、外围部件互连(PCI)总线、超传输或工业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或电气和电子工程师协会(IEEE)标准1394总线(统称为“Firewire”)中的一个或多个。总线710的总线还可以对应于网络接口750中的接口。
在一个实施例中,总线710包括数据总线,其是存储器子系统730中包括的数据总线,处理器720可以通过该数据总线来从存储器732读取值。示出的将处理器720链接到存储器子系统730的额外的线条代表命令总线,处理器720通过该命令总线来提供命令和地址以访问存储器732。
系统700还包括耦合于总线710的一个或多个输入/输出(I/O)接口740、网络接口750、一个或多个内部大容量存储装置760和外围接口770。I/O接口740可以包括一个或多个接口部件,用户可通过其来与系统700交互(例如,视频、音频和/或字母数字接口)。网络接口750对系统700提供通过一个或多个网络与远程装置(例如,服务器、其他计算装置)通信的能力。网络接口750可以包括以太网适配器、无线互联部件、USB(通用串行总线)、一个或多个天线或其他基于有线或无线标准的或专用接口。
存储设备760可以是或包括用于采用非易失性方式存储大量数据的任何常规介质,例如一个或多个磁、固态或基于光的盘或组合。存储设备760以永久状态持有代码或指令和数据762(即,尽管到系统700的电力中断,也保留值)。存储设备760一般还可以视为“存储器”。虽然存储760是非易失性的,存储器732可以包括易失性(即,如果中断到系统700的电力,数据的值或状态是不确定的)和/或非易失性存储器。
外围接口770可以包括上文未专门提到的任何硬件接口。外设大体上指非独立连接到系统700的装置。非独立连接是这样一种连接,其中系统700提供软件和/或硬件平台,在其上执行操作并且用户与之交互。
本文描述的各种部件可以是用于执行描述的操作或功能的手段。本文描述的每个部件包括软件、硬件或这些的组合。部件可以实现为软件模块、固件模块、硬件模块、专用硬件(例如,专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)或其他专用硬件)、嵌入式控制器、硬接线电路或实现为软件、固件和/或硬件的任何组合。
图8是根据一个实施例具有耐久性感知ECC保护的移动装置的实施例的框图。
装置800代表移动计算装置,例如计算平板电脑、移动电话或智能电话、支持无线的电子阅读器或其他移动装置。将理解大体上示出图示的部件中的某些,并且不是这样的装置的所有部件都在装置800中示出。
装置800包括处理器810,其执行装置800的主要处理操作。处理器810可以包括一个或多个物理装置,例如微处理器、应用处理器、微控制器、可编程逻辑装置或其他处理部件。在一个实施例中,除处理器晶片(die)外,处理器810还包括光接口部件。从而,处理器晶片和光子部件在相同的封装件中。根据本文描述的任何实施例,这样的处理器封装件可以与光连接器光接口。
由处理器810执行的处理操作包括执行应用和/或装置功能所在的操作平台或操作系统的执行。处理操作包括与对于人类用户或其他设备的I/O(输入/输出)有关的操作、与电力管理有关的操作和/或与使装置800连接到另一个装置有关的操作。处理操作还可以包括与音频I/O和/或显示I/O有关的操作。
在一个实施例中,装置800包括音频子系统820,其代表与向计算装置提供音频功能关联的硬件(例如,音频硬件和音频电路)和软件(例如,驱动器、编解码器)部件。音频功能可以包括扬声器和/或耳机输出,以及麦克风输入。对于这样的功能的设备可以集成到装置800内,或连接到装置800。在一个实施例中,用户通过提供被处理器810接收和处理的音频命令而与装置800交互。
显示子系统830代表对用户提供视觉和/或触觉显示来与计算装置交互的硬件(例如,显示装置)和软件(例如,驱动器)部件。显示子系统830包括显示器832,其包括用于向用户提供显示的特定屏幕或硬件装置。在一个实施例中,显示器832包括与处理器810分离来执行与显示有关的至少某种处理的逻辑。在一个实施例中,显示子系统830包括触屏装置,其既向用户提供输出又提供来自用户的输入。
I/O控制器840代表与用户的交互有关的硬件装置和软件部件。I/O控制器840可以操作来管理是音频子系统820和/或显示子系统830的部分的硬件。另外,I/O控制器840图示对于连接到装置800的额外装置的连接点,通过此用户可与系统交互。例如,可以附连到装置800的装置可包括麦克风装置、扬声器或立体音响系统、视频系统或其他显示装置、键盘或键区装置或用于与例如卡阅读器或其他装置等特定应用一起使用的其他I/O装置。
如上文提到的,I/O控制器840可以与音频子系统820和/或显示子系统830交互。例如,通过麦克风或其他音频装置的输入可以对装置800的一个或多个应用或功能提供输入或命令。另外,代替显示输出或除显示输出外,还可以提供音频输出。在另一个示例中,如果显示子系统832包括触屏,显示装置还充当输入装置,其可以至少部分由I/O控制器840管理。在装置800上还可以存在额外的按钮或开关来提供由I/O控制器840管理的I/O功能。
在一个实施例中,I/O控制器840管理例如加速计、拍摄装置、光传感器或其他环境传感器、陀螺仪、全球定位系统(GPS)等装置,或可以包括在装置800中的其他硬件。输入可以是直接用户交互的部分,以及向系统提供环境输入来影响它的操作(例如对于噪声的过滤、调整显示器用于亮度检测、对拍摄装置应用闪光灯,或其他特征)。
存储器子系统860包括用于将信息存储在装置800中的存储器862。存储器862可以包括非易失性(如果对存储器装置的电力被中断则状态不改变)和/或易失性(如果对存储器装置的电力被中断,状态不确定)存储器装置。在一个实施例中,具有ECC和元数据的非易失性存储器充当装置800的易失性主存储器的替代。存储器862可以存储应用数据、用户数据、音乐、照片、文档或其他数据,以及与系统800的应用和功能的执行有关的系统数据(无论是长期还是暂时的)。根据本文描述的任何实施例,存储器子系统860包括损耗减少逻辑864和ECC逻辑866。根据本文描述的任何实施例,在一个实施例中,存储器子系统860进一步包括存储器控制器,其可以控制到和从存储器862的读和写操作。在一个实施例中,存储器子系统860定位在处理器810上。在另一个实施例中,存储器子系统860定位在独立装置上。在再另一个实施例中,存储器子系统860的一个或多个部分定位在处理器810上并且存储器子系统860的其他部分定位在独立装置上。在一个实施例中,存储器862设计为高速缓存并且作为处理器810的部分而包括在其中。
在一个实施例中,装置800包括电力管理850,其管理电池电力使用、电池的充电和与电力节省操作有关的特征。电力管理850可以发起在系统800或对于选择系统800的子部分的两个或以上电力状态之间的转变。
连接性870包括用于使装置800能够与外部装置通信的硬件装置(例如,无线和/或有线连接器、一个或多个天线和/或通信硬件)和软件部件(例如,驱动器、协议栈)。装置可以是例如其他计算装置、无线接入点或基站等独立装置,以及例如耳机、打印机或其他装置等外设。
连接性870可以包括多个不同类型的连接性。为了泛化,装置800图示有蜂窝连接性872和无线连接性874。蜂窝连接性872大体上指由无线载波提供的蜂窝网络连接性,例如经由GSM(全球移动通信系统)或变化或衍生、CDMA(码分多址)或变化或衍生、TDM(时分复用)或变化或衍生、LTE(长期演进-也称为“4G”)或其他蜂窝服务标准提供的。无线连接性874指不是蜂窝的无线连接性,并且可以包括个人区域网(例如蓝牙)、局域网(例如WiFi)和/或广域网(例如WiMax)或其他无线通信。无线通信指通过使用通过非固态介质的调制电磁辐射来传递数据。有线通信通过固态通信介质来进行。
外围连接880包括硬件接口和连接器,以及软件部件(例如,驱动器、协议栈),用于进行外围连接。将理解装置800可以既是到其他计算装置(“通向”882)的外围装置,又具有连接到它的外围装置(“来自”884)。装置800通常具有“对接”连接器,用于连接到其他计算装置以用于例如管理(例如,下载和/或上传、改变、同步)装置800上的内容等目的。另外,对接连接器可以允许装置800连接到某些外设,其允许装置800控制例如到视听或其他系统的内容输出。
除外围对接连接器或其他外围连接硬件外,装置800可以经由公共或基于标准的连接器来进行外围连接880。常见类型可以包括通用串行总线(USB)连接器(其可以包括许多不同硬件接口中的任一个)、DisplayPort(其包括MiniDisplayPort(MDP))、高清晰度多媒体接口(HDMI)、火线或其他类型。
在一个实施例中,方法包括:计算对于移位的数据位和元数据位的纠错码(ECC)位,该元数据位指示对要写入非易失性存储器的数据位的移位。方法包括计算对于第二元数据位的第二ECC位,该第二元数据位指示ECC位的倒置。方法包括将移位的数据位、元数据位、倒置的ECC位、第二元数据位和第二ECC位存储在非易失性存储器中。
在一个实施例中,设备包括第一逻辑单元,用于使要写入非易失性存储器的数据位移位并且生成指示对数据位的移位的元数据位。该设备包括第二逻辑单元,用于计算对于移位的数据位和元数据位的纠错码(ECC)位。第一逻辑单元进一步基于ECC位要写入的位点处的现有值来使ECC位倒置并且生成指示ECC位是否倒置的第二元数据位。第二逻辑单元进一步计算对于第二元数据位的第二ECC位。移位的数据位、元数据位、倒置的ECC位、第二元数据位和第二ECC位要存储在非易失性存储器中。
在一个实施例中,数据位的移位包括基于写计数器在字内的数据位的组的循环移位,该写计数器指示对数据位要写入的页的写数量。
在一个实施例中,数据位的移位包括基于写计数器在字内的数据位的组的循环移位,该写计数器指示对数据位要写入的字的写数量。
在一个实施例中,数据位的移位包括基于写计数器在字内的数据位的组的循环移位,该写计数器指示对非易失性存储器的写数量。
在一个实施例中,数据位的移位包括基于写计数器在页内的数据位的组的循环移位,该写计数器指示对该页的写数量。
在一个实施例中,ECC位的倒置包括基于在ECC位要写入的位点处的现有值的倒置。
在一个实施例中,设备进一步包括第三逻辑单元,用于基于第二ECC位来检测如从非易失性存储器读取的第二元数据位是否包含错误。设备进一步包括第四逻辑单元,用于在第三逻辑单元检测到第二元数据位不包含错误时基于第二元数据位从倒置的ECC位来重新生成ECC位。第三逻辑单元基于ECC位来检测移位的数据位和元数据位是否包含错误。第四逻辑单元在第三逻辑单元检测到移位的数据位和元数据位不包含错误时基于元数据位从移位的数据位重新生成数据位。
在一个实施例中,第三逻辑单元响应于检测到第二数据位包含错误而基于对第二元数据位的可能值从倒置的ECC位迭代地重新生成ECC位。第三逻辑单元进一步基于迭代重新生成的ECC位中的每个来检测移位的数据位和元数据位是否包含错误。在第三逻辑单元基于迭代重新生成的ECC位中的一个检测到移位的数据位和元数据位不包含错误时,第四逻辑单元进一步基于元数据位从移位的数据位重新生成数据位。
在一个实施例中,响应于基于迭代重新生成的ECC位中的每个检测到移位的数据位和元数据位包含错误,第三逻辑单元报告ECC错误。
在一个实施例中,第一逻辑单元生成多个元数据位,其指示数据位的移位,并且第二逻辑单元进一步计算对于移位的数据位和元数据位的多个ECC位。
在一个实施例中,第一逻辑单元生成多个第二元数据位,其指示多个ECC位的倒置,并且第二逻辑单元进一步计算对于多个第二元数据位的多个第二ECC位。
在一个实施例中,设备包括在存储器控制器中。在一个实施例中,设备包括在存储器中。
在一个实施例中,设备包括第一逻辑单元,用于对要写入非易失性存储器的数据位应用第一损耗减少修改,并且生成指示该第一损耗减少修改的元数据位。该设备包括第二逻辑单元,用于计算对于修改的数据位和元数据位的ECC位。第一逻辑单元进一步对ECC位应用第二损耗减少修改,并且生成指示该第二损耗减少修改的第二元数据位。第二逻辑单元进一步计算对于第二元数据位的第二ECC位。要存储修改的数据位、元数据位、修改的ECC位、第二元数据位和第二ECC位用于稍后恢复数据位。
在一个实施例中,对数据位的第一损耗减少修改与对ECC位的第二损耗减少修改不同。
在一个实施例中,应用第一损耗减少修改的第一逻辑单元基于写计数器在字内执行数据位的组的移位,该写计数器指示对以下中的一个的写数量:非易失性存储器、数据位要写入的页和数据位要写入的字。
在一个实施例中,应用第二损耗减少修改的第一逻辑单元基于ECC位要写入的位点处的现有值来使ECC位倒置。
在一个实施例中,设备包括第三逻辑单元,用于基于第二ECC位来检测如从非易失性存储器读取的第二元数据位是否包含错误。设备进一步包括第四逻辑单元,用于基于第二元数据位从修改的ECC位重新生成ECC位。第三逻辑进一步基于ECC位来检测修改的数据位和元数据位是否包含错误。第四逻辑单元基于元数据位从修改的数据位重新生成数据位。
在一个实施例中,系统包括与处理器耦合的非易失性存储器、天线、使要写入非易失性存储器的数据位移位并且生成指示数据位的移位的元数据位的第一逻辑单元和计算对于移位的数据位和元数据位的ECC位的第二逻辑单元。第一逻辑单元进一步基于ECC位要写入的位点处的现有值来使ECC位倒置并且生成指示ECC位是否倒置的第二元数据位。第二逻辑单元进一步计算对于第二元数据位的第二ECC位。移位的数据位、元数据位、倒置的ECC位、第二元数据位和第二ECC位要存储在非易失性存储器中。在一个实施例中,系统包括显示器。
从而,根据本文描述的实施例,耐久性感知ECC保护减少由于对非易失性存储器的访问而造成的损耗同时解决这些机制对错误检测和纠正系统引入的复杂化。
除本文描述的外,可对本发明的公开的实施例和实现做出各种修改而不偏离它们的范围。因此,本文的说明和示例应在说明性而非限制性意义上解释。本发明的范围应仅仅通过参考后跟的权利要求来确定。

Claims (20)

1.一种方法,其包括:
计算对于移位的数据位和元数据位的纠错码(ECC)位,所述元数据位指示对要写入非易失性存储器的数据位的移位;
计算对于第二元数据位的第二ECC位,所述第二元数据位指示所述ECC位的倒置;以及
将移位的数据位、所述元数据位、倒置的ECC位、所述第二元数据位和所述第二ECC位存储在所述非易失性存储器中。
2.如权利要求1所述的方法,其中所述数据位的移位包括基于写计数器在字内的数据位的组的循环移位,所述写计数器指示对所述数据位要写入的页的写数量。
3.如权利要求1所述的方法,其中所述数据位的移位包括基于写计数器在字内的数据位的组的循环移位,所述写计数器指示对所述数据位要写入的字的写数量。
4.如权利要求1所述的方法,其中所述数据位的移位包括基于写计数器在字内的数据位的组的循环移位,所述写计数器指示对所述非易失性存储器的写数量。
5.如权利要求1所述的方法,其中所述数据位的移位包括基于写计数器在页内的数据位的组的循环移位,所述写计数器指示对所述页的写数量。
6.如权利要求1所述的方法,其中所述ECC位的倒置包括基于所述ECC位要写入的位点处的现有值的倒置。
7.如权利要求1所述的方法,其中所述元数据位进一步包括多个元数据位,并且所述ECC位进一步包括多个ECC位。
8.如权利要求1所述的方法,其中所述第二元数据位进一步包括多个第二元数据位,并且所述第二ECC位进一步包括多个第二ECC位。
9.一种设备,其包括:
第一逻辑单元,用于使要写入非易失性存储器的数据位移位并且生成指示所述数据位的移位的元数据位;以及
第二逻辑单元,用于计算对于移位的数据位和所述元数据位的纠错码(ECC)位;
其中所述第一逻辑单元进一步基于所述ECC位要写入的位点处的现有值来使所述ECC位倒置并且生成指示所述ECC位是否倒置的第二元数据位;
其中所述第二逻辑单元进一步计算对于所述第二元数据位的第二ECC位;
其中所述移位的数据位、所述元数据位、所述倒置的ECC位、所述第二元数据位和所述第二ECC位要存储在所述非易失性存储器中。
10.如权利要求9所述的设备,其中所述数据位的移位包括基于写计数器在字内的数据位的组的循环移位,所述写计数器指示对所述数据位要写入的页的写数量。
11.如权利要求9所述的设备,其中所述数据位的移位包括基于写计数器在字内的数据位的组的循环移位,所述写计数器指示对所述数据位要写入的字的写数量。
12.如权利要求9所述的设备,其中所述数据位的移位包括基于写计数器在字内的数据位的组的循环移位,所述写计数器指示对所述非易失性存储器的写数量。
13.如权利要求9所述的设备,其中所述数据位的移位包括基于写计数器在页内的数据位的组的循环移位,所述写计数器指示对所述页的写数量。
14.如权利要求9所述的设备,其中所述ECC位的倒置包括基于所述ECC位要写入的位点处的现有值的倒置。
15.如权利要求9所述的设备,其中所述第一逻辑单元进一步生成指示所述数据位的移位的多个元数据位,并且所述第二逻辑单元进一步计算对于所述移位的数据位和所述元数据位的多个ECC位。
16.如权利要求15所述的设备,其中所述第一逻辑单元进一步生成指示所述多个ECC位的倒置的多个第二元数据位,并且所述第二逻辑单元进一步计算对于所述多个第二元数据位的多个第二ECC位。
17.如权利要求9所述的设备,其中所述设备包括在存储器控制器中。
18.如权利要求9所述的设备,其中所述设备包括在非易失性存储器中。
19.一种系统,其包括:
非易失性存储器,其与处理器耦合;
天线;
第一逻辑单元,用于使要写入所述非易失性存储器的数据位移位并且生成指示所述数据位的移位的元数据位;以及
第二逻辑单元,其计算对于所述移位的数据位和所述元数据位的ECC位;
其中所述第一逻辑单元进一步基于所述ECC位要写入的位点处的现有值来使所述ECC位倒置并且生成所述ECC位是否倒置的第二元数据位;
其中所述第二逻辑单元进一步计算对于所述第二元数据位的第二ECC位;
其中所述移位的数据位、所述元数据位、所述倒置的ECC位、所述第二元数据位和所述第二ECC位要存储在所述非易失性存储器中。
20.如权利要求23所述的系统,其进一步包括:
显示器。
CN201380044865.1A 2012-09-28 2013-06-12 用于非易失性存储器的耐久性感知纠错码(ecc)保护 Active CN104541249B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/630,541 US8990670B2 (en) 2012-09-28 2012-09-28 Endurance aware error-correcting code (ECC) protection for non-volatile memories
US13/630541 2012-09-28
PCT/US2013/045432 WO2014051734A1 (en) 2012-09-28 2013-06-12 Endurance aware error-correcting code (ecc) protection for non-volatile memories

Publications (2)

Publication Number Publication Date
CN104541249A true CN104541249A (zh) 2015-04-22
CN104541249B CN104541249B (zh) 2018-03-13

Family

ID=50386460

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380044865.1A Active CN104541249B (zh) 2012-09-28 2013-06-12 用于非易失性存储器的耐久性感知纠错码(ecc)保护

Country Status (4)

Country Link
US (1) US8990670B2 (zh)
KR (1) KR101587388B1 (zh)
CN (1) CN104541249B (zh)
WO (1) WO2014051734A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108304277A (zh) * 2017-01-12 2018-07-20 质子世界国际公司 闪速存储器中的纠错
CN111580750A (zh) * 2020-03-24 2020-08-25 浙江工商大学 一种解决stt-ram缓存写失败的方法
CN111868697A (zh) * 2017-12-12 2020-10-30 华为技术有限公司 存储级存储系统的磨损均衡方案及其实现方式
TWI715672B (zh) * 2015-12-22 2021-01-11 美商英特爾股份有限公司 用於保留位元的強制執行的裝置及方法

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189329B1 (en) * 2011-10-13 2015-11-17 Marvell International Ltd. Generating error correcting code (ECC) data using an ECC corresponding to an identified ECC protection level
US9582354B2 (en) * 2014-01-28 2017-02-28 Infineon Technologies Ag Apparatus and method for improving data storage by data inversion
CN105808151B (zh) 2014-12-29 2019-09-27 华为技术有限公司 固态硬盘存储设备和固态硬盘存储设备的数据存取方法
JP6403162B2 (ja) * 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
JP2017027388A (ja) 2015-07-23 2017-02-02 株式会社東芝 メモリシステムおよび不揮発性メモリの制御方法
US10114984B2 (en) * 2015-09-04 2018-10-30 Xerox Corporation Symmetric bit coding for printed memory devices
US10031801B2 (en) * 2015-12-01 2018-07-24 Microsoft Technology Licensing, Llc Configurable reliability for memory devices
KR20170143084A (ko) 2016-06-17 2017-12-29 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
EP3485574A4 (en) * 2016-07-15 2020-10-14 Chippewa Data Control LLC PROCEDURES AND ARCHITECTURE FOR CRITICAL SYSTEMS WITH THE USE OF MULTICENTRIC ORTHOGONAL TOPOLOGY AND PERVASIVE RULE-DRIVEN DATA AND CONTROL CODING
US10248571B2 (en) * 2016-08-11 2019-04-02 Hewlett Packard Enterprise Development Lp Saving position of a wear level rotation
US10331517B2 (en) * 2016-08-26 2019-06-25 Qualcomm Incorporated Link error correction in memory system
US10120749B2 (en) * 2016-09-30 2018-11-06 Intel Corporation Extended application of error checking and correction code in memory
KR20180086816A (ko) * 2017-01-23 2018-08-01 에스케이하이닉스 주식회사 사전-검사된 에러율에 따른 적응형 에러정정을 수행하는 메모리장치 및 전자장치와, 메모리장치의 동작방법
KR20180091296A (ko) 2017-02-06 2018-08-16 삼성전자주식회사 손상된 메타 데이터를 처리하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US10169246B2 (en) 2017-05-11 2019-01-01 Qualcomm Incorporated Reducing metadata size in compressed memory systems of processor-based systems
US10976961B2 (en) * 2018-12-20 2021-04-13 Intel Corporation Device, system and method to detect an uninitialized memory read
US11444637B2 (en) * 2019-09-10 2022-09-13 SK Hynix Inc. Self-adaptive low-density parity check hard decoder
US11372720B2 (en) * 2020-09-24 2022-06-28 Advanced Micro Devices, Inc. Systems and methods for encoding metadata
KR20230055614A (ko) 2021-10-19 2023-04-26 삼성전자주식회사 반도체 메모리 장치 및 메모리 시스템
US11636008B2 (en) * 2021-09-01 2023-04-25 Micron Technology, Inc. Tracking host-provided metadata in a memory sub-system

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6601211B1 (en) * 1996-10-15 2003-07-29 Micron Technology, Inc. Write reduction in flash memory systems through ECC usage
WO2007054873A1 (en) * 2005-11-10 2007-05-18 Koninklijke Philips Electronics, N.V. A methods to support a distributed error correction code
CN101366182A (zh) * 2005-09-26 2009-02-11 晟碟以色列有限公司 输出nand接口的nand闪存控制器
US20100017649A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation Data storage system with wear-leveling algorithm
US20100153821A1 (en) * 2008-12-17 2010-06-17 Seagate Technology Llc Solid-state memory with error correction coding
US20120226962A1 (en) * 2011-03-04 2012-09-06 International Business Machines Corporation Wear-focusing of non-volatile memories for improved endurance

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8291295B2 (en) 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
TWI353521B (en) 2006-09-28 2011-12-01 Sandisk Corp Soft-input soft-output decoder for nonvolatile mem

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6601211B1 (en) * 1996-10-15 2003-07-29 Micron Technology, Inc. Write reduction in flash memory systems through ECC usage
CN101366182A (zh) * 2005-09-26 2009-02-11 晟碟以色列有限公司 输出nand接口的nand闪存控制器
WO2007054873A1 (en) * 2005-11-10 2007-05-18 Koninklijke Philips Electronics, N.V. A methods to support a distributed error correction code
US20100017649A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation Data storage system with wear-leveling algorithm
US20100153821A1 (en) * 2008-12-17 2010-06-17 Seagate Technology Llc Solid-state memory with error correction coding
US20120226962A1 (en) * 2011-03-04 2012-09-06 International Business Machines Corporation Wear-focusing of non-volatile memories for improved endurance

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI715672B (zh) * 2015-12-22 2021-01-11 美商英特爾股份有限公司 用於保留位元的強制執行的裝置及方法
CN108304277A (zh) * 2017-01-12 2018-07-20 质子世界国际公司 闪速存储器中的纠错
CN111868697A (zh) * 2017-12-12 2020-10-30 华为技术有限公司 存储级存储系统的磨损均衡方案及其实现方式
CN111580750A (zh) * 2020-03-24 2020-08-25 浙江工商大学 一种解决stt-ram缓存写失败的方法
CN111580750B (zh) * 2020-03-24 2022-08-23 浙江工商大学 一种解决stt-ram缓存写失败的方法

Also Published As

Publication number Publication date
WO2014051734A1 (en) 2014-04-03
KR20150038040A (ko) 2015-04-08
CN104541249B (zh) 2018-03-13
US20140095956A1 (en) 2014-04-03
US8990670B2 (en) 2015-03-24
KR101587388B1 (ko) 2016-01-20

Similar Documents

Publication Publication Date Title
CN104541249A (zh) 用于非易失性存储器的耐久性感知纠错码(ecc)保护
KR101636785B1 (ko) 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리
KR101912596B1 (ko) 리던던트 어레이들을 통한 비휘발성 메모리 프로그램 실패 복구
KR101369573B1 (ko) 고체상태 소자들의 객체 지향 메모리
KR101739878B1 (ko) 컨트롤러, 이의 동작방법, 및 상기 컨트롤러를 포함한 메모리 시스템
CN107678695B (zh) 基于可用存储器空间选择冗余存储配置
US9798622B2 (en) Apparatus and method for increasing resilience to raw bit error rate
JP2014507717A (ja) より高いレベルの冗長な情報の計算
CN101256842A (zh) 纠错码控制器和包括该纠错码控制器的存储器系统
US10691534B2 (en) Data encoding method, data decoding method and storage controller
TWI658463B (zh) 資料存取方法、記憶體控制電路單元與記憶體儲存裝置
CN101256843A (zh) 混合闪存装置、存储系统以及控制误差的方法
CN113205839B (zh) 通过时钟调制验证读取数据可靠性的存储器系统及其操作方法
WO2014046750A1 (en) Method, apparatus and system for providing error correction information
WO2008027759A1 (en) Allowable bit errors per sector in memory devices
CN116775368A (zh) 用于以不同码率在分区之间回拷的多层码率架构
TWI658402B (zh) 資料寫入方法、記憶體控制電路單元及記憶體儲存裝置
US20210382787A1 (en) Memory system for accessing data in stripe form and operating method thereof
CN112051963B (zh) 数据写入方法、存储器控制电路单元以及存储器存储装置
TWI709850B (zh) 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
CN111580741A (zh) 数据写入方法、存储器控制电路单元与存储器存储装置
CN108694963B (zh) 数据转换设备及方法
CN109308930B (zh) 数据写入方法、存储器控制电路单元及存储器存储装置
TWI777087B (zh) 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置
CN113434331B (zh) 跨框编码管理方法、存储器存储装置及存储器控制电路

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant