KR20140060285A - 데이터를 저장하기 위한 시스템들 및 방법들 - Google Patents

데이터를 저장하기 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR20140060285A
KR20140060285A KR20147003473A KR20147003473A KR20140060285A KR 20140060285 A KR20140060285 A KR 20140060285A KR 20147003473 A KR20147003473 A KR 20147003473A KR 20147003473 A KR20147003473 A KR 20147003473A KR 20140060285 A KR20140060285 A KR 20140060285A
Authority
KR
South Korea
Prior art keywords
data
page
bits
memory
group
Prior art date
Application number
KR20147003473A
Other languages
English (en)
Inventor
에란 샤론
아이단 알로드
시몬 리츠신
메나헴 레이져
Original Assignee
샌디스크 테크놀로지스, 인코포레이티드
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 샌디스크 테크놀로지스, 인코포레이티드 filed Critical 샌디스크 테크놀로지스, 인코포레이티드
Publication of KR20140060285A publication Critical patent/KR20140060285A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/1068Adding 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
    • 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/1072Adding 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터를 저장하기 위한 시스템들 및 방법들이 개시된다.

Description

데이터를 저장하기 위한 시스템들 및 방법들{SYSTEMS AND METHODS OF STORING DATA}
본 발명은 일반적으로, 메모리에 데이터를 저장하는 것에 관한 것이다.
범용 직렬 버스(USB) 플래시 메모리 디바이스들 또는 탈착가능 스토리지 카드들과 같은 비-휘발성 메모리 디바이스들은 데이터 및 소프트웨어 어플리케이션들의 증가된 휴대성(portability)을 가능하게 했다. 플래시 메모리 디바이스들은 각각의 플래시 메모리 셀에 복수의 비트들을 저장함으로써 비용 효율성을 증대시킬 수 있다. 예를 들어, 다중-레벨 셀(MLC) 플래시 메모리 디바이스들은 셀 당 3비트, 셀 당 4비트 또는 그 이상을 저장함으로써 증가된 스토리지 밀도를 제공한다.
단일 플래시 메모리 셀에 복수의 비트들의 정보를 저장하는 것은 전형적으로, 비트들의 시퀀스들을 플래시 메모리 셀의 상태들에 매핑(mapping)하는 것을 포함한다. 예를 들어, 비트들의 제1 시퀀스 "110"은 플래시 메모리 셀의 제1 상태에 대응할 수 있고, 비트들의 제2 시퀀스 "010"은 상기 플래시 메모리 셀의 제2 상태에 대응할 수 있다. 비트들의 시퀀스가 특별한 플래시 메모리 셀 내로 저장되어야 함을 결정한 이후에, 상기 플래시 메모리 셀은 상기 비트들의 시퀀스에 대응하는 상태로 프로그래밍될 수 있다.
플래시 메모리 디바이스에 의해 사용되는, 상태들로의 비트들의 시퀀스들의 특별한 매핑은 플래시 메모리 셀들에 저장된 비트들의 상대적인 신뢰성에 영향(impact)을 준다. 예시를 위해, 플래시 메모리 셀이 (아날로그 임계(analog threshold) 전압 V에 대응하고 데이터 "110"와 관련된) 제1 상태로 프로그래밍되지만 (아날로그 임계 전압 V+△V에 대응하고 데이터 "010"와 관련된) 제2 상태로 부정확하게 판독되는 경우, 비트 에러가 최상위 비트(the most significant bit)에서 발생되지만(즉, "1"은 "0"이 된다), 어떤 에러도 중간 비트 또는 최하위 비트(the least-significant bit)에서 발생되지 않는다. 다시 말해, 최상위 비트(MSB)에서 두 가지 상태들 사이의 천이(transition)가 존재하지만, 다른 비트들에서는 천이가 존재하지 않는다. 데이터의 로직 페이지들이 복수의 플래시 메모리 셀들의 공통 비트 위치에 근거하여 저장될 수 있다. 인접한 상태들 사이의 판독 에러(즉, 아날로그 임계가 V인 상태가 아날로그 임계가 V+△V인 상태로 판독된다)는 확률(probability) p를 가질 수 있다. 인접하지 않은 상태들(즉, 아날로그 임계 전압 차가 △V보다 큰 상태들) 사이의 판독 에러는, p에 비해 매우 작고 0으로 근사화될 수 있는 확률을 가질 수 있다. 그러므로, 로직 페이지 내의 데이터 에러들의 수는, 상기 로직 페이지 내의 대응하는 비트가 두 가지 상태들 사이에서 변화되는 인접한 상태들의 쌍들의 수에 비례하도록 근사화될 수 있다. 이러한 쌍은 일 상태와 인접한 상태 사이의 부호(sign)의 천이가 존재할 때마다 발생된다. 그러므로, 많은 이러한 쌍들을 가진(즉, 1로부터 0으로 그리고 0으로부터 1로의 많은 천이들을 가진) 논리 페이지들은 천이들의 수가 적은 페이지들보다 많은 에러들을 가질 것이다. 일부 로직 페이지들은 다른 로직 페이지들보다 신뢰성 있을 수 있다. 로직 페이지들의 동일하지 않은 신뢰성은 특정한 플래시 메모리 액세스 방법들 및 성능에 영향을 끼칠 수 있다.
코드워드에 제공되는 보호(protection)의 양이 상기 코드워드가 저장되는 페이지의 신뢰성에 따라 제공될 수 있다. 낮은 신뢰성을 갖는 페이지들의 경우, 상기 코드워드에 제공된 추가적인 리던던트 정보(redundant information)가 코드워드의 길이로 하여금 단일 페이지를 초과하게끔 할 수 있다. 코드워드는 호스트 디바이스에 의해 경험될 수 있는 프로그래밍 레이턴시(latency)에 영향을 줌 없이 복수의 물리 페이지들에 신뢰성있게 저장될 수 있다.
예를 들어, 인코딩된 데이터 페이지가 두 개의 물리 페이지들로 분리될 수 있고, 여기서 상기 물리 페이지들 중 제2 물리 페이지는 패리티 비트들만을 포함한다. 데이터 페이지의 안전한 저장의 확인응답(acknowledgment)이 제2 물리 페이지가 아직 기록되지 않더라도 제1 물리 페이지를 기록하는 것을 완료한 이후에 호스트에 제공될 수 있다. 확인응답은, 파워 손실의 경우에서, 인코딩된 데이터 페이지의 데이터 부분이 제2 물리 페이지의 패리티 비트들을 사용함 없이 복원(reconstructed)될 수 있기 때문에 제공될 수 있다.
비트 조작(bit manipulation)이 데이터의 각각의 로직 페이지로 하여금 실질적으로 동일한 신뢰성을 가지게끔 하도록 MLC 플래시 메모리에 데이터를 저장하기에 앞서 데이터의 지정된 부분들에 관하여 수행될 수 있다. MLC 플래시 메모리에 저장될 데이터는 메모리 다이에서 래치들에 기록될 수 있고, 목적지 MLC 스토리지 요소의 상태들에 상기 래치들 내의 비트들을 디폴트 매핑하는 것이 상기 데이터를 저장하는 데 사용될 수 있다. 디폴트 매핑을 적용하기에 앞서, 래치들 내의 데이터의 지정된 부분들은, 디폴트 매핑이 적용될 때 조작된 부분들이 제2 매핑에 따라 저장되도록 조작될 수 있다. 데이터의 파트에 대해 디폴트 매핑을 이용하는 것 및 상기 데이터의 나머지에 대해 제2 매핑을 이용하는 것은 결과적으로, 로직 페이지의 신뢰성들이 실질적으로 동일해지게 한다.
코드워드에 제공되는 보호의 양은 상기 코드워드가 저장되는 페이지의 신뢰성에 따라 제공될 수 있다. 높은 신뢰성을 갖는 페이지들의 경우, 패리티를 위해 보존된 페이지의 부분이 데이터 셰이핑(data shaping)을 위해 사용될 수 있다. 예를 들어, 패리티를 셰이핑하는 것은, 결과적으로, 결과적인 쉐이핑된 데이터 내에 "1" 값들 및 "0" 값들이 결과적으로 비 균일하게 분포되도록 생성될 수 있다. 비-균일한 분포는 메모리 요소들의 최상위 상태(highest state) 및/또는 최하위 상태(lowest state)로의 기록 동작들의 수를 감소시킴으로써 메모리에 대한 마모(wear)를 감소시킬 수 있다.
소프트 비트 정보가 메모리의 단일 로직 페이지를 판독하도록 하는 요청에 응답하여 제공될 수 있다. MLC 워드 라인의 각각의 로직 페이지는 단일 로직 페이지의 판독 동안 감지 동작들의 수를 감소시키도록 개별적으로 판독될 수 있다. 소프트 비트 정보는 셀의 임계 전압들이 상주하는 셀의 전압 윈도우 내의 정확한 전압 밴드에 관한 정보를 제공함 없이 각각의 셀로부터 판독된 페이지 데이터의 신뢰성을 나타낼 수 있다. 감지 시간 절약에 더하여, 감지된 데이터의 하나 이상의 세트들을 메모리 제어기에 전달하는 것으로 인한 지연이 회피될 수 있다. 따라서, (순차적인 메모리 어드레스들의 직렬 판독과 반대로) 랜덤 판독 동안, 판독 레이턴시가 인터리빙식 기법(interleaved scheme)에 비해 감소될 수 있다.
도 1은 복수의 페이지들에 걸쳐 저장된 단일의 연결된(concatenated) 코드워드의 서브-코드 데이터 및 패리티를 갖는 워드 라인의 페이지들로의 연결된 코드워드들의 매핑의 제1 실시예의 전체도이다.
도 2는 연결된 코드워드들을, 단일 페이지에 저장되어 있는 연결된 코드워드의 서브-코드 데이터 및 패리티를 갖는 워드 라인의 페이지들에 매핑하는 것의 제2 실시예의 전체도이다.
도 3은 연결된 코드워드들을, 동일하지 않은 신뢰성을 가지는 워드 라인의 페이지들에 매핑하는 것의 제3 실시예의 전체도이고, 여기서 덜-신뢰성있는(less-reliable) 페이지에 걸쳐 이어지는(span) 연결된 코드워드는 더-신뢰성있는(more-reliable) 페이지들에 저장되어 있는 연결된 코드워드들보다 많은 패리티를 가지고, 복수의 페이지들에 걸쳐 확장된다.
도 4는 동일하지 않은 신뢰성을 가지는 워드 라인의 페이지들로의 연결된 코드워드들의 매핑의 제4 실시예의 전체도이고, 여기서 각각의 연결된 코드워드는 복수의 페이지들에 걸쳐 이어지고, 더-신뢰성있는 페이지들에 저장된 서브-코드 데이터에 대해서보다 덜-실뢰성있는 페이지에 저장된 서브-코드 데이터에 대해 더 많은 서브-코드 패리티를 포함한다.
도 5는 연결된 코드워드들을, 동일하지 않은 신뢰성을 가지는 워드 라인의 페이지들에 매핑하는 것의 제5 실시예의 전체도이고, 여기서 덜-신뢰성있는 페이지에 저장되어 있는 연결된 코드워드는 더-신뢰성있는 페이지들에 저장되어 있는 연결된 코드워드들과 동일한 수의 서브-코드들을 가진다.
도 6은 동일하지 않은 신뢰성을 가지는 워드 라인의 페이지들로의 연결된 코드워드들의 매핑의 제6 실시예의 전체도이고, 여기서 덜-신뢰성있는 페이지에 저장되어 있는 연결된 코드워드는 더-신뢰성있는 페이지들에 저장되어 있는 연결된 코드워드들보다 적은 서브-코드들을 가진다.
도 7은 상태들로의 비트들의 제1 빌트-인 매핑(built-in mapping)을 갖는 스토리지 디바이스를 이용하여 상태들로의 비트들의 제2 매핑을 달성하도록 비트들을 조작하는 것의 개략도이다.
도 8은 상태들로의 비트들의 복수의 매핑들을 이용하여 데이터를 저장하기 위한 스토리지 디바이스를 포함하는 시스템의 특별한 실시예의 블록도이다.
도 9는 도 8의 스토리지 디바이스에 의해 지정된 데이터 비트들에 적용될 수 있는 로직 동작들의 시퀀스의 도해이다.
도 10은 상태들로의 비트들의 복수의 매핑들을 이용하여 데이터를 기록하는 방법의 특별한 실시예를 예시하는 흐름도이다.
도 11은 플래시 메모리의 SLC 부분에 코드워드들을 저장하고 MLC 워드 라인에 코드워드들을 전달하는 특별한 실시예의 도해이다.
도 12는 복수의 물리 페이지들 내로 긴 코드워드를 프로그래밍함으로써 데이터를 기록하도록 구성된 데이터 스토리지 디바이스를 포함하는 시스템의 특별한 실시예의 블록도이다.
도 13은 저장된 데이터를 메모리의 제2 부분에 복사하기 전에 천공된(punctured) 코드워드를 이용하여 메모리의 제1 부분에 데이터를 저장하기 위한 시스템의 특별한 실시예의 블록도이다.
도 14는 메모리의 제1 부분에 데이터를 저장하고 메모리의 제2 부분에 데이터를 저장하기에 앞서 메모리에 추가적인 리던던시 데이터를 생성하는 시스템의 특별한 실시예의 블록도이다.
도 15는 메모리의 제1 부분에 캐싱될 데이터를 인코딩하고 메모리의 제2 부분에 저장될 데이터를 인코딩하도록 서로 다른 ECC 기법들을 이용하여 데이터를 저장하기 위한 시스템의 특별한 실시예의 블록도이다.
도 16은 인코딩된 데이터의 복수의 부분들을 기록하는 단계 및 상기 복수의 부분들 중 단일 부분으로부터 데이터를 복구하는 단계를 포함하는 방법의 특별한 실시예를 예시하는 흐름도이다.
도 17은 메모리 다이 내에 추가적인 리던던트 데이터를 생성하는 단계를 포함하는 방법의 특별한 실시예를 예시하는 흐름도이다.
도 18은 메모리에 데이터를 기록하는 방법의 특별한 실시예를 예시하는 흐름도이다.
도 19는 페이지의 신뢰성에 근거하여 셰이핑 리던던시를 사용해서 데이터를 저장하는 것의 특별한 실시예를 예시하는 전체도이다.
도 20은 페이지 신뢰성에 근거하여 셰이핑 리던던시를 사용해서 데이터를 저장하기 위한 시스템의 특별한 실시예를 예시하는 블록도이다.
도 21은 페이지 신뢰성에 근거하여 셰이핑 리던던시를 포함하는, 데이터를 검색하기 위한 시스템의 특별한 실시예를 예시하는 블록도이다.
도 22는 셰이핑 인코딩 동작을 개시하는 단계를 포함하는, 데이터를 기록하는 방법의 특별한 실시예의 흐름도이다.
도 23은 셰이핑 디코딩 동작을 개시하는 단계를 포함하는, 데이터를 판독하는 방법의 특별한 실시예의 흐름도이다.
도 24는 세 개의 신뢰성 간격들이 각각의 상태에 대해 정의되는 상위 로직 페이지 매핑(upper logical page mapping)의 특별한 실시예를 도시하는 전체도이다.
도 25는 페이지 단위의(page-by-page) 2-소프트 비트 판독 신뢰성 셋팅들의 특별한 실시예를 도시하는 전체도이다.
도 26은 셀 상태 분포들 및, 하드 비트들 및 추가적인 감지된 비트들에 대한 임계 판독 전압들의 도해적 설명을 포함하는 감지 기법의 특별한 실시예를 도시하는 전체도이다.
도 27은 도 26에 도시된 임계 판독 전압들에 따른 신뢰성 전압 영역들의 특별한 실시예를 도시하는 전체도이다.
도 28은 단일 소프트 비트를 제공하는 감지 기법의 특별한 실시예를 도시하는 전체도이다.
도 29는 도 28에 도시된 임계 판독 전압들에 따른 단일 소프트 비트를 이용하는 신뢰성 전압 영역들의 특별한 실시예를 도시하는 전체도이다.
도 30은 도 24 내지 29 중 하나 이상에 따라 데이터 판독 동작들을 수행하도록 구성된 데이터 스토리지 디바이스를 포함하는 시스템의 블록도이다.
도 31은 도 30의 데이터 스토리지 디바이스에 의해 수행될 수 있는 데이터 판독의 특별한 실시예의 흐름도이다.
신뢰성, 액세스 시간과 복잡도 간의 양호한 트레이드오프(tradeoff)를 제공하는 효율적인 코딩 기법이 다중-페이즈 디코딩 연속적 코딩 구조를 이용함으로써 플래시 메모리에서 구현될 수 있다. 이러한 코드 구조는 플래시 메모리에 짧은 서브-워드로서 저장되는 서브-코드를 이용하여, 각각의 적은 양의 데이터를 개별적으로 보호함으로써 적은 양들의 데이터에 효율적으로 액세스할 수 있게 한다. 상기 서브-코드는 데이터 및 상기 데이터를 보호하도록 리던던시를 제공하는 패리티 비트들을 포함할 수 있다. 서브-워드는 이후에, 서브-코드의 데이터를 검색하기 위해 플래시 메모리로부터 판독되고, 플래시 메모리 제어기에 전달되며, 디코딩될 수 있다. 서브-워드를 단독으로 판독하는 것과 서브-코드를 디코딩하는 것은 데이터에 액세스하기 위해 전체 코드워드를 판독 및 디코딩하는 것에 비해 플래시 메모리의 랜덤 판독 요청들의 빠른 판독 수행을 할 수 있다. 매우 많은 에러들이 서브-워드에서 발생했기 때문에 서브-코드를 디코딩하지 못하면(fail) 긴 코드워드가 데이터를 복구하기 위해 플래시 메모리로부터 판독되고, 제어기에 전달되며, 디코딩될 수 있다.
판독 시간을 더 개선하기 위해, 서브-코드의 데이터 및 일부 또는 바람직하게는 전체의 서브-코드의 패리티 비트들은 플래시 메모리의 워드 라인의 단일 페이지 내에 저장될 수 있다. 예를 들어, 플래시 메모리는 워드 라인을 통해 액세스가능하도록 배치된 스토리지 요소들을 포함할 수 있다. 각각의 스토리지 요소는 M개의 정의된 전압 범위들 중 특별한 전압 범위 내에 있도록 플래시 메모리 셀의 임계 전압을 조정함으로써 M개의 가능한 상태들 중 일 상태에 있도록 프로그래밍될 수 있다. 이는 각각의 스토리지 요소로 하여금 log2(M) 비트들을 저장하게 하고, M개의 전압 범위들의 세트와 M개의 스트링들의 세트와의 사이의 대응성(correspondence)을 설정하며, 여기서 상기 스트링들의 각각은 log2(M) 비트들을 포함한다. 각각의 특별한 전압 범위는 특정 스트링에 대응한다. 워드 라인은 또한, 복수의 스트링들을 기록하기 위한 페이지로서 고려되고, 상기 스트링들의 각각은 log2(M)의 길이로 이루어지며, 상기 워드 라인은 로직 페이지들로 파티션될 수 있고, 여기서 각각의 로직 페이지는 특정 비트의 장소(place)이다. 예를 들어, M=8개의 상태들을 가진 MLC 플래시 메모리는 셀 당 3비트를 저장할 수 있다. 세 개의 비트들 중 각각의 비트는 워드 라인에 저장된 데이터의 서로 다른 로직 페이지에 대응할 수 있다. 예를 들어, 워드 라인에 저장된 데이터의 로직 페이지들은 상위 페이지(upper page), 중간 페이지(middle page) 및 하위 페이지(lower page)로 지칭될 수 있다. 상위 페이지는 상위 비트가 천이(즉, 상기 상위 비트는 일 상태에서 0이고 인접한 상태에서 1이다)를 가지는 상태들의 세트를 식별함으로써 그리고 이 상태들 사이의 판독 전압들을 인가함에 의해 감지 동작들을 수행함으로써 판독될 수 있다. 판독 전압들의 이러한 세트를 이용한 판독의 결과는 워드 라인 내의 각각의 스토리지 요소의 최상위 비트의 값을 결정하기 위해 사용된다. 중간 페이지는 워드 라인 내의 각각의 스토리지 요소의 중간 비트의 값을 결정하기 위해 유사한 방식으로 판독될 수 있고, 하위 페이지는 워드 라인 내의 각각의 스토리지 요소의 최하위 비트의 값을 결정하기 위해 유사한 방식으로 판독될 수 있다.
로직 페이지의 에러율이 충분히 낮다고 가정하면, 서브-코드 내에 인코딩된 데이터는, 단일 페이지를 판독하고, 오직 (M-l)/log2(M)의 감지 동작들의 평균을 요하며, 짧은 판독 레이턴시를 제공함으로써 검색될 수 있다. 서브-코드의 에러 정정 능력을 초과하는 서브-코드 내에 발생된 다수의 에러로 인해 디코딩을 하지 못하는 경우, 여러 액션들이 취해질 수 있다. 이러한 액션들은 다음 중 어떤 조합을 포함할 수 있다.
1) 판독 임계들을 조정하는 것 및 조정된 임계들로 데이터의 단일 페이지를 다시-판독하는 것.
2) 동일한 페이지의 판독 레졸루션(reading resolution)을 증가시키는 것.
3) 크로스-커플링 효과들 또는 프로그램 교란 효과(program disturb effect)들의 경감과 같이 특정 "노이즈" 경감 기법들 - 이 기법들은 이웃한 워드 라인들 또는 페이지들 또는 셀들의 추가적인 판독을 수행하는 단계를 포함할 수 있다 - 을 활성화시키는 것.
4) (가능하게는, 추가적인 패리티 비트들이 저장될 수 있는 다른 페이지로부터) 서브-코드들의 추가적인 패리티 비트들을 판독하는 것.
5) (가능하게는, 다른 서브-코드들 및 공동 패리티(joint parity)가 저장될 수 있는 다른 페이지 또는 페이지들로부터) 전체의 연결된 코드워드, 즉 연결된 코드워드에 대한 다른 서브-코드들 및 공동 패리티를 판독하는 것.
기술된 액션들 중 하나 이상을 수행하는 것은, 초기 서브-코드 디코딩이 이루어지지 못한 이후에 데이터가 검색될 수 있는 확률을 증가시킨다.
도 1 내지 6은 연결된 코드워드를 MLC 워드 라인들의 페이지들에 매핑하는 것의 예들을 보여준다. 이 예들에서, M=8개의 상태들(즉, 셀 당 3bit)을 가진 MLC 플래시 메모리는, 워드 라인이 상위, 중간 및 하위로 나타내지는 세 개의 페이지들을 포함하도록 가정된다. 셀당 3 비트를 갖는 예시적 MLC 플래시 메모리가 도시되지만, 다른 매핑 예들이 사용될 수 있다.
도 1은 서브-코드들이 단일 페이지에 국한되기보다는 복수의 페이지들에 걸쳐 이어지는 연결된 코드워드를 워드 라인의 페이지들에 매핑하는 것의 예(100)를 보여준다. MLC 워드 라인(102)은 제1 코드워드(코드워드 1)(104), 제2 코드워드(코드워드 2)(106) 및 제3 코드워드(코드워드 3)(108)를 저장하는 것으로서 도시된다. 제2 코드워드(106)를 저장하는 MLC 워드 라인(102)의 부분의 상위 페이지(110), 중간 페이지(112) 및 하위 페이지(114)가 도시된다. 제2 코드워드(106)는 8개의 서브-코드들(131 내지 138)을 포함한다. 각각의 서브-코드(131 내지 138)는 데이터 부분을 포함하고, 또한 상기 데이터 부분에 대응하는 패리티 부분을 포함한다. 예를 들어, 제1 서브-코드(131)는 제1 데이터(데이터 1)(124) 및 제1 패리티(패리티 1)(126)를 포함한다. 제2 코드워드(106)는 또한 공동 패리티(128)를 포함한다. 상기 공동 패리티(128)는 서브-코드 패리티를 사용하여 디코딩가능하지 않을 수 있는 개별적인 서브-코드들(131 내지 138)을 디코딩하는 것을 보조하는 데 사용될 수 있는 패리티 데이터를 포함한다.
예를 들어, 각각의 서브-코드들(131 내지 138)의 데이터(예컨대, 제1 데이터(124))는, 데이터를 포함하고 또한 패리티 비트들을 포함하는 코드워드를 생성하도록 시스템적 ECC 기법(systematic ECC scheme)을 이용하여 인코딩될 수 있다. 코드워드는 패리티 비트들의 부분을 제거하도록 천공될 수 있고, 상기 천공된 코드워드(예컨대, 제1 데이터(124) 및 제1 패리티(126))는 서브-코드(예컨대, 제1 서브-코드(131))로서 저장될 수 있다. 코드워드들의 각각으로부터 제거된 패리티 비트들은 공동 패리티(128)로서 결합 및 추가될 수 있다. 예를 들어, 코드워드들의 각각으로부터 제거된 패리티 비트들은 비트 단위 배타적-OR(bitwise XOR) 동작을 통해 결합될 수 있다. 서브-코드 내의 비트 에러들의 수가 서브-코드의 ECC 기법의 정정 능력을 초과하기 때문에 서브-코드들(131 내지 138) 중 하나가 정정가능하지 않을 때, 다른 서브-코드들(131 내지 138) 중 하나 이상은 상기 다른 서브-코드들(131 내지 138) 중 하나 이상의 서브-코드의 본래의 천공된 패리티 비트들을 복구하도록 판독 및 디코딩될 수 있다. 복구된 천공된 패리티 비트들은 정정가능하지 않은 서브-코드에 대응하는 전체 코드워드를 복원하도록 공동 패리티(128)와 결합될 수 있다.
예를 들어, 제1 서브-코드(131)(즉, 제1 데이터(124) 및 제1 패리티(126))가 제1 패리티(126)만을 사용하여 정정가능하지 않을 때, 나머지 서브-코드(132 내지 138) 각각은 상기 서브-코드들(132 내지 138)의 각각으로부터 제거된 패리티 비트들을 생성하도록 디코딩될 수 있다. 재-생성된 패리티 비트들은 상기 제1 서브-코드(131)로부터 제거된 패리티 비트들을 복구하도록 공동 패리티(128)와 XOR될 수 있다. 상기 제1 서브-코드(131)는 복구된 패리티 비트들을 추가함으로써 천공되지 않을 수 있다. 천공되지 않은 제1 서브-코드의 ECC 디코딩은 공동 패리티(128)로부터 복구된 추가적인 패리티로 인해 양호한 에러 정정 능력으로 수행될 수 있다.
MLC 워드 라인(102) 내의 각각의 플래시 메모리 셀은 M=8개의 상태들의 세트로부터의 특별한 물리적 상태로 상기 셀을 프로그래밍함으로써, 즉, M=8개의 정의된 전압 범위들 중 특별한 전압 범위 내에 있도록 상기 플래시 메모리 셀의 임계 전압을 조정함으로써 데이터의 세 개의 비트들의 스트링을 저장하도록 프로그래밍될 수 있고, 전체 워드 라인은 복수의 스트링들을 저장하기 위한 (물리 페이지로 나타내진) 페이지와 관련되며, 상기 스트링들의 각각은 데이터의 세 개의 비트들을 포함한다. 물리적 상태들의 각각은 (로직 페이지들로 나타내진) 세 개의 페이지들로 파티션되고, 여기서 각각의 로직 페이지는 서로 다른 위치에 비트를 저장한다.
상위 페이지(110)는 플래시 메모리 셀들의 최상위 비트에 대응할 수 있고, 중간 페이지(112)는 중간 비트들에 대응할 수 있으며, 하위 페이지(114)는 플래시 메모리 셀들의 최하위 비트들에 대응할 수 있다.
MLC 워드 라인(102)으로부터 데이터를 판독하는 것은 하나 이상의 감지 동작들을 수행하는 것을 포함할 수 있다. 예를 들어, M-1 = 7개의 판독 임계들(즉, 7개의 감지 동작들)은 M = 8개의 전압 범위들을 정의하는 데 사용될 수 있다. 감지 동작은 어느 플래시 메모리 셀들이 선택된 판독 임계를 초과하는 임계 전압을 가지는지 그리고 어느 플래시 메모리 셀들이 선택된 판독 임계를 초과하지 않는 임계 전압을 가지는지 결정하기 위해서 MLC 워드 라인(102) 내의 각각의 플래시 메모리 셀의 임계 전압을 선택된 판독 임계와 비교하는 것을 포함할 수 있다. 각각의 플래시 메모리 셀의 모든 세 개의 비트들(즉, MLC 워드 라인(102)의 모든 세 개의 페이지들(110, 112 및 114))을 판독하기 위해, 총 M - 1 = 7개의 감지 동작들(각각의 판독 임계에서 하나의 감지 동작)이 각각의 플래시 메모리 셀의 특정 상태를 식별하는 데 요구된다. 그러나, 단일 페이지(110, 112 또는 114)는 M-1보다 적은 감지 동작들을 이용하여 MLC 워드 라인(102)으로부터 판독될 수 있고, 일부 경우들에서, 단일 페이지(110, 112 또는 114)는 단일 감지 동작을 이용하여 판독될 수 있다.
도 1의 예에서, 각각의 서브-코드(131 내지 138)는 페이지들(110 내지 114)의 전부에 걸쳐 인터리빙되고, 따라서 서브-코드들(131 내지 138)의 전부는 유사한 에러율들을 보일 수 있다. 예를 들어, 상위 페이지(110)가 중간 페이지(112) 및 하위 페이지(114)보다 높은 예상 에러율을 가지는 경우, 서브-코드들(131 내지 138)의 각각은 동일하게 영향을 받을 수 있는 바, 그 이유는 각각의 서브 코드(131 내지 138)가 페이지들(110 내지 114)의 전부에 걸쳐 고르게 분포되기 때문이다. 그러나, 서브-코드들(131 내지 138) 중 어느 하나를 판독하는 것은 세 개의 페이지들(110 내지 114) 모두를 판독하는 것을 요하며, 그러므로 M - 1 = 7개의 감지 동작들을 수행하는 것을 요한다. 서브-코드들(131 내지 138) 중 단일 서브-코드를 판독하는 것은 결과적으로, 서브-코드가 페이지들(110 내지 114) 중 하나 또는 두개에만 저장되고 따라서 적은 감지 동작들을 사용하여 판독될 수 있는 다른 구성들에 비해 레이턴시가 길어지게 할 수 있다.
도 2 내지 3은 서브-코드의 데이터 및 상기 서브-코드의 일부 또는 모든 패리티가 단일 페이지에 국한되도록 된 연결된 코드워드들을 워드 라인의 페이지들에 매핑하는 것의 서로 다른 예들을 보여준다. 도 2 내지 3의 매핑들은 감소된 수의 감지 동작들을 갖는 데이터의 효율적인 판독을 할 수 있게 한다.
도 2는 각각의 코드 워드(204 내지 208)가 MLC 워드 라인(202)의 별개의 페이지에 매핑되도록 MLC 워드 라인(202)에 세 개의 연결된 코드워드들(204, 206, 208)을 저장하는 예(200)를 보여준다. 제1 코드워드(204)는 MLC 워드 라인(202)의 상위 페이지(210)에 그 전체가 저장되고, 제2 코드워드(206)는 중간 페이지(212)에 그 전체가 저장되며, 제3 코드워드(208)는 하위 페이지(214)에 그 전체가 저장된다. 각각의 코드워드(204 내지 208)는 8 개의 서브-코드들을 포함한다. 예를 들어, 제1 코드워드(204)는 제1 데이터(220) 및 제1 패리티(222)를 가진 제1 서브-코드를 포함하고, 제2 코드워드(206)는 제1 데이터(224) 및 제1 패리티(226)를 가진 제1 서브-코드를 포함한다. 각각의 코드워드(204 내지 208)는 또한, 제2 코드워드(206)의 공동 패리티(230)와 같은 공동 패리티를 포함한다. 공동 패리티는 도 1에 관하여 기술된 바와 같이, 서브-코드의 패리티를 이용하여 디코딩가능하지 않을 수 있는 개별 서브-코드들을 디코딩하는 것을 보조하는 데 사용될 수 있는 패리티 데이터를 포함한다. 코드워드들(204 내지 208)은 공통의 연결식 코딩 기법을 사용하고, 상기 기법은 결과적으로, 각각의 코드워드(204 내지 208)에서의 서브-코드들의 수 및 구성이 동일하게 한다. 예를 들어, 도 2에서, 각각의 코드워드(204, 206, 208)는 공통 사이즈를 가지고 동일한 양의 데이터를 포함하는 8개의 서브-코드들을 가진다.
도 2에 예시된 기법은 MLC 워드 라인(202)의 서로 다른 페이지들(210 내지 214)의 신뢰성들이 밸런싱될 때 증가된 효율성을 가질 수 있다. 또한, 각각의 서브-코드는 단일 페이지(210, 212 또는 214)에 저장되며, 모든 세 개의 페이지들(110 내지 114)에 걸쳐 이어지는 도 1의 서브-코드들보다 (적은 감지 동작들을 요하여) 빨리 판독될 수 있다. 그러나, MLC 워드 라인(202)의 서로 다른 페이지들(210 내지 214)이 서로 다른 신뢰성들(즉, 에러율들)을 가지는 경우, 도 2의 매핑 기법은 감소된 성취가능한 에러 정정 능력을 가질 수 있다. 워드 라인의 서로 다른 페이지들의 신뢰성을 제어하는 방법들은 표 1 내지 4 및 도 7 내지 10에 관하여 더욱 상세히 기술된다.
도 3은 상위 페이지가 (실질적으로 동일한 신뢰성들을 가질 수 있는) 하위 페이지 및 중간 페이지보다 실뢰성이 낮을 때 적절할 수 있는 매핑 예(300)를 도시한다. MLC 워드 라인(302)은 제1 코드워드(304), 제2 코드 워드(306) 및 제3 코드워드(308)를 저장하는 것으로서 도시된다. 제1 코드워드(304)는 MLC 워드 라인(302)의 상위 페이지(310), 중간 페이지(312) 및 하위 페이지(314)에 저장된 부분들을 가진다. 제2 코드워드(306)는 중간 페이지(312)에 그 전체가 저장되고, 제3 코드워드(308)는 하위 페이지(314)에 그 전체가 저장된다. 각각의 코드워드(304 내지 308)는 8개의 서브-코드들을 포함한다. 예를 들어, 제1 코드워드(304)는 제1 데이터(320) 및 제1 패리티(322)를 가진 제1 서브-코드를 포함하고, 제2 코드워드(306)는 제1 데이터(324) 및 제1 패리티(326)를 가진 제1 서브-코드를 포함한다. 각각의 코드워드(304 내지 308)는 또한, 제2 코드워드(306)의 공동 패리티(330)와 같은 공동 패리티를 포함한다.
도 3의 예에서, 저 레이트 코드(lower rate code)(즉, 많은 리던던시를 제공하도록 많은 패리티를 사용하는 코드)가 상위 페이지(310)에서의 데이터를 보호하기 위해 사용되고, 고 레이트 코드들(즉, 적은 리던던시를 제공하도록 적은 패리티를 사용하는 코드들)이 하위 페이지(314) 및 중간 페이지(312)에서의 데이터를 보호하기 위해 사용된다. 제1 코드워드(304)의 각각의 서브-코드는 제2 코드워드(306) 및 제3 코드워드(308)의 각각의 서브-코드와 실질적으로 동일한 양의 데이터를 가진다(예컨대, 제1 데이터(320)는 제1 데이터(324)와 동일한 사이즈이다). 그러나, 제1 코드워드(304)의 서브-코드들이 다른 코드워드들(306 내지 308)의 서브-코드들보다 많은 리던던시를 가지기 때문에, 상위 페이지(310) 내의 각각의 패리티 블록은 중간 페이지(312) 및 하위 페이지(314)의 패리티 블록들보다 크다(즉, 제1 패리티(332)는 제1 패리티(326)보다 크다).
상위 페이지(310)의 데이터를 보호하는 리던던시의 일부는 하위 및 중간 페이지들(312 내지 314) 상에 저장된다. 예를 들어, 중간 페이지(312)는 제1 코드워드(304)의 서브-코드들 1 내지 4에 대한 추가적인 패리티(332)를 포함하고, 또한 제1 코드워드(304)에 대한 공동 패리티(334)의 제1 부분을 포함한다. 하위 페이지(314)는 제1 코드워드(304)의 서브-코드들 5 내지 8에 대한 추가적인 패리티 및 제1 코드워드(304)에 대한 공동 패리티의 제2 부분을 포함한다.
도 3의 매핑(300)과 유사한 매핑들이 다른 페이지 신뢰성들에 대해 설계될 수 있다. 워드 라인의 서로 다른 페이지들의 신뢰성을 제어하는 방법들은 표 1 내지 4 및 도 7 내지 10에 관하여 기술된다.
도 4는 상위 페이지가 하위 및 중간 페이지들보다 신뢰성이 낮고 하위 및 중간 페이지들이 실질적으로 동일한 신뢰성을 가질 때 적절할 수 있는 다른 매핑 예(400)를 보여준다. MLC 워드 라인(402)은 제1 코드워드(404), 제2 코드워드(406) 및 제3 코드워드(408)를 저장하는 것으로 예시된다. 각각의 코드워드(404 내지 408)는 8개의 서브-코드들 및 공동 패리티를 포함한다. 각각의 코드워드(404 내지 408)는 MLC 워드 라인(402)의 상위 페이지(410), 중간 페이지(412) 및 하위 페이지(414)에서 부분들을 가진다.
도 4의 예에서, 코드워드들(404 내지 408)은 대칭적이며 (즉, 코드워드들(404 내지 408)의 모두는 동일한 코드에 속하며) 각각의 코드워드(404, 406, 408)는 MLC 워드 라인(402)의 페이지들(410 내지 414)의 모두에 걸쳐 이어진다. 그러나, 각각의 연결된 코드워드(404, 406, 408) 내의 서브-코드들은 대칭적이지 않다. 예를 들어, 저-레이트 서브-코드들(즉, 많은 패리티)은 덜 신뢰성있는 상위 페이지(410)를 보호하기 위해 사용되고, 고-레이트 서브-코드(즉, 적은 패리티)는 더 신뢰성있는 하위 페이지(412) 및 중간 페이지(414)를 보호하기 위해 사용된다. 예시를 위해, 제1 코드워드(404)는 상위 페이지(410) 내의 제1 서브-코드(데이터 1 및 패리티 1) 및 제2 서브-코드(데이터 2 및 패리티 2)를 가진다. 제1 코드워드(404)는 또한, 중간 페이지(412)에 제3 서브-코드(데이터 3 및 패리티 3) 및 제4 서브-코드(데이터 4 및 패리티 4) 및 공동 패리티의 제1 부분(공동 패리티 A)를 가진다. 중간 페이지(412)는 상위 페이지(410)보다 신뢰성있기 때문에, 중간 페이지(412) 내의 각각의 서브-코드는 동일한 양의 데이터를 보호하는 데 상위 페이지(410) 내의 각각의 서브-코드보다 적은 패리티를 가진다. 중간 페이지(412) 내의 감소된 양의 서브-코드 패리티는 상위 페이지(410) 내의 제1의 두 서브-코드들에 의해 차지되는 것과 동일한 양의 공간에 제3 및 제4 서브-코드들 및 공동 패리티의 제1 부분을 저장할 수 있다.
도 5 및 6은 상위 페이지가, 동일한 신뢰성들을 가지는 하위 페이지 및 중간 페이지보다 신뢰성이 낮을 때 적절할 수 있는 추가적인 매핑 예들을 보여준다. 도 5는 제1 코드워드(504), 제2 코드워드(506) 및 제3 코드워드(508)를 저장하는 MLC 워드 라인(502)을 포함하는 매핑 예(500)를 도시한다. 제1 코드워드(504)는 상위 페이지(510)에 그 전체가 저장되고, 제2 코드워드(506)는 중간 페이지(512)에 그 전체가 저장되며, 제3 코드워드(508)는 하위 페이지(514)에 그 전체가 저장된다. 각각의 코드워드(504, 506, 508)는 8개의 서브-코드들 및 공동 패리티를 포함한다. 그러나, 제1 코드워드(504)의 각각의 서브-코드는 제2 코드워드(506) 및 제3 코드워드(508)의 각각의 서브-코드보다 적은 데이터를 포함한다.
도 6은 제1 코드워드(604), 제2 코드워드(606) 및 제3 코드워드(608)를 저장한 MLC 워드 라인(602)을 포함하는 매핑 예(600)를 도시한다. 제1 코드워드(604)는 상위 페이지(610)에 그 전체가 저장되고, 6개의 서브-코드들 및 공동 패리티를 포함한다. 제2 코드워드(606)는 중간 페이지(612)에 그 전체가 저장되고, 9개의 서브-코드들 및 공동 패리티를 포함한다. 제3 코드워드(608)는 하위 페이지(614)에 그 전체가 저장되고, 9개의 서브-코드들 및 공동 패리티를 포함한다.
각각의 페이지가 동일한 양의 데이터를 저장하는 도 3 및 4의 매핑들과 대조적으로, 도 5 및 6의 매핑들은 더 신뢰성있는 하위 페이지들(514, 614) 및 중간 페이지들(512, 612)에 비해 덜 실뢰성있는 상위 페이지들(510, 610) 상에 적은 데이터를 저장한다. 도 5에서, 상위 페이지(510)의 서브-코드들은 하위 및 중간 페이지들(512, 514)의 데이터보다 적은 데이터를 보호하며, 도 6에서, 서브-코드들 전부는 동일한 양의 데이터를 보호하지만, 상위 페이지 코드워드(604)는 하위 및 중간 페이지 코드워드들(606, 608)보다 적은 서브-코드들을 가진다.
도 2 내지 6에 도시된 예들의 모두에서, 서브-코드(또는 서브-코드의 주요 파트)는 서브-코드의 판독을 빠르게 하기 위해서 워드 라인의 단일 페이지에 국한된다. 그러나, 서브-코드(또는 서브-코드의 주요 파트)를 워드 라인의 단일 페이지에 국한시키는 것은 가능하게는 결과적으로, 상기 서브-코드가 워드 라인의 서로 다른 페이지들의 가능하게는 동일하지 않은 신뢰성들로 인해 전체 워드 라인에 걸친 평균 에러율보다 높은 에러율을 보이게 한다. 높은 서브-코드 에러율은 워드 라인의 비-최적의 이용 및 워드 라인의 셀 당 감소된 정보 밀도를 야기할 수 있는 바, 그 이유는 ECC 리던던시가 페이지들 전부에 걸친 평균 에러율 대신 덜 신뢰성있는 페이지의 에러율에 근거하여 결정될 수 있기 때문이다.
워드 라인의 양호한 이용을 위해 본 명세서에 기술된 다양한 기법들은 여러 그룹들 중 하나 이상 내로 분류될 수 있는 바, 상기 그룹들은 다음과 같다.
1) 워드 라인의 모든 페이지들의 신뢰성들의 밸런스를 향상시키는 것을 포함하는 기법들.
2) 데이터가 저장되는 페이지의 신뢰성에 데이터의 보호 레벨을 보다 밀접하게 매칭시키는 것(즉, 코드워드들 또는 서브-코드들 간의 동일하지 않은 리던던시 할당으로, 예상된 에러율에 에러 정정 능력을 매칭시키는 것)을 포함하는 기법들.
3) 페이지의 신뢰성에, 페이지 상에 저장된 데이터의 양을 보다 밀접하게 매칭하는 것을 포함하는 기법들.
4) (내구력 강화 및/또는 에러율 감소 및 "노이즈" 경감을 위하여) 프로그래밍된 레벨들에 걸친 확률 분포를 셰이핑하기 위해 더 신뢰성있는 페이지들 내의 리던던시 비트들 중 일부를 이용하는 기법들.
기법들의 어떤 조합(예컨대, 둘 이상의 서로 다른 그룹들로부터의 기법들의 조합)이 또한 가능하다.
페이지 신뢰성들의 밸런싱( Balancing page reliabilities )
도 2에 도시된 코딩 기법은 워드 라인의 모든 페이지들이 동일한 신뢰성들(즉 동일한 에러율들)을 가질 때 적절할 수 있다. 워드 라인의 서로 다른 페이지들의 신뢰성들을 완전히 또는 부분적으로 밸런싱하기 위해 취해질 수 있는 여러 접근법들이 존재할 수 있다.
일 접근법은 서로 다른 상태들의 검증 레벨들을 조정해서, 동일한 (또는 보다 밸런싱된) 에러율들이 워드 라인의 서로 다른 페이지들에 걸쳐 유발되게 하는 것이다. 예를 들어, 표 1은 M = 4개의 상태들을 갖는 MLC 플래시 메모리에 대한 비트들로부터 상태들로의 가능한 매핑을 예시한다.
Figure pct00001
표 1: M = 4인 경우의 예시적 매핑
각각의 상태로부터 인접한 상태로의 에러 확율이 동일하도록 검증 레벨이 설정될 때, 서로 다른 페이지들에 걸친 에러율들은 동일하지 않다. 예를 들어, 검증 레벨들은, 상태들 Er과 A 사이의 에러의 확률(즉, Er 상태에 놓인 셀이 A 상태로서 판독되거나 또는 A 상태에 놓인 셀이 Er 상태로서 판독되는 것)이 상태들 A와 B 사이의 에러의 확율과 실질적으로 동일하고, 상태들 B와 C 사이의 에러의 확율과 실질적으로 동일하도록 설정될 수 있다. 상태들 사이의 에러들이 확률적으로 동일하게 일어날 수 있을(probable) 때, 상위 페이지의 에러율은 하위 페이지의 에러율의 두 배인 바, 그 이유는 상위 페이지가 1로부터 0으로의 (또는 0으로부터 1로의) 두 개의 천이들을 포함하기 때문이다.
일 상태로부터 다른 상태로의 시프트는 상기 시프트가 페이지의 비트 값을 변경시키지 않는 경우, 결과적으로 에러를 야기시키지 않을 것이다. 예시를 위해, 표 1의 상태들 Er과 A 사이 또는 상태들 B와 C 사이에서 발생되는 에러는 오류 비트(erroneous bit)가 상위 페이지에서 판독되게끔 하겠지만, 에러 비트가 하위 페이지에서 판독되게끔 하지 않을 것이다. 상태들 A와 B 사이의 에러는 상위 페이지를 판독할 때 비트 에러를 야기시키지 않겠지만, 에러 비트가 하위 페이지에서 판독되게끔 할 것이다. 모든 상태로부터 인접한 상태로의 에러 확률이 동일할 때, 페이지 신뢰성은 페이지의 비트 값의 변경들에 대응하는 상태 천이들의 수에 근거하여 결정될 수 있다. 표 1에서, 상위 페이지는 두 개의 이러한 천이들(Er과 A, B와 C)을 가지며, 하위 페이지는 단일의 이러한 천이(A와 B)를 가진다. 그 결과, 모든 에러적인 상태 천이들이 동일하게 일어날 가능성이 있는 경우, 에러 비트 값은, 하위 페이지에 비해 상위 페이지에서 일어날 가능성이 두배만큼 크다. 따라서, 검증 레벨들이 상태들 사이의 에러 가능성들로 하여금 동일하도록 할 때, 페이지 신뢰성들은 밸런싱되지 않는다.
페이지 신뢰성들은 상태들 A 및 B가 서로와 가깝게 위치되고 상태들 Er 및 C로부터 멀리 위치되는 방식으로 검증 레벨들을 설정함으로써 밸런싱될 수 있다. 그 결과, 상태들 A와 B 사이의 에러 확률은, 상위 및 하위 페이지들에 대해 동일한 에러율을 유발하는 Er과 A 사이 또는 B와 C 사이의 에러 확률에 비해 두 배만큼 크게 유발될 수 있다. 그러나, 상태들 간의 동일하지 않은 에러율들을 유발하는 검증 레벨 설정은 유발된 스토리지 용량의 관점에서 차선적(sub-optimal)일 수 있다. 예시를 위해, 소정의 에러 정정 능력을 만족시키도록 요구되는 ECC 리던던시는 상태들에 걸쳐 동일한 에러율들을 유발하는 검증 레벨들을 이용하는 인터리빙식 코딩 기법에 대한 ECC 리던던시보다 클 것이다. 게다가, 상태들에 걸쳐 동일하지 않은 에러율들을 유발하는 검증 레벨 설정은 다이 간(die-to-die), 블록 간(block-to-block), 페이지 간(page-to-page) 등으로부터의 변동 영향들에 덜 강건(robust)할 수 있다.
페이지 신뢰성들을 부분적으로 밸런싱하기 위한 다른 접근법은 비트들로부터 상태들로의 적절한 매핑을 이용하는 것을 포함한다. 표 2는 M = 8개인 상태들을 가진 MLC 플래시 메모리에 대한 예시적 매핑을 도시한다.
Figure pct00002
표 2: M = 8의 경우의 예시적 매핑
표 2의 매핑에 따르면, (하위 페이지가 1로부터 0으로의 하나의 천이를 가지고, 중간 페이지가 두 개의 천이들을 가지며, 상위 페이지가 4개의 천이들을 가지기 때문에) 하위 페이지의 에러율이 값 "p"로서 주어지면, 중간 페이지의 에러율은 2*p이고, 하위 페이지의 에러율은 4*p이다.
한편, 표 3의 매핑이 사용되는 경우, 보다 밸런싱된 에러율들이 워드 라인의 페이지들에 걸쳐 달성된다.
Figure pct00003
표 3: M = 8인 경우의 다른 매핑
표 3의 매핑을 이용하여, 하위 페이지의 비트 에러율이 p이면, 중간 페이지의 비트 에러율 역시 p이다. 셀 상태들이 전압 밴드에 걸쳐 균일하게 분포되는 임계 전압 범위들로서 결정되는 경우, 상위 페이지의 비트 에러율은 (3/2)*p인 바, 그 이유는 하위 및 중간 페이지들 둘 모두가 0으로부터 1로의 두 개의 천이들을 가지며, 상위 페이지는 세 개의 천이들을 가지기 때문이다. 그러므로, 하위 및 중간 페이지들은 동일한 신뢰성을 가지고, 상위 페이지는 낮은 신뢰성을 가진다. 도 2 내지 6에 도시된 코딩 기법들은 표 3의 매핑에 따른 페이지들의 신뢰성 할당에 적절하다.
표 2 및 표 3에 도시된 매핑들은 페이지 당 동일한 평균 개수의 감지 동작들에 대응한다. 표 2의 매핑에서, 하위 페이지는 (상태들 C와 D 사이의) 단일 감지 동작을 이용하여 판독될 수 있고, 중간 페이지는 (상태들 A와 B 사이 및 상태들 E와 F 사이의) 두 개의 감지 동작들을 이용하여 판독될 수 있으며, 상위 페이지는 (상태들 Er과 A 사이, 상태들 B와 C 사이, 상태들 D와 E 사이 그리고 상태들 F와 G 사이의) 네 개의 감지 동작들을 이용하여 판독될 수 있다. 전체적으로, 페이지 판독 당 감지 동작들의 평균 개수는 (l+2+4)/3 = 2.333로 주어질 수 있다. 마찬가지로, 표 3의 매핑에서, 하위 페이지는 (상태들 B와 C 사이 및 상태들 F와 G 사이의) 두 개의 감지 동작들을 이용하여 판독될 수 있고, 중간 페이지는 (상태들 Er과 A 사이 및 상태들 D와 E 사이의) 두 개의 감지 동작들을 이용하여 판독될 수 있으며, 상위 페이지들은 (상태들 A와 B 사이, 상태들 C와 D 사이 그리고 상태들 E와 F 사이의) 세 개의 감지 동작들을 이용하여 판독될 수 있다. 전체적으로, 페이지 판독 당 감지 동작들의 평균 개수는 (2+2+3)/3 = 2.333이다.
그레이 매핑(Grey mapping)들은 단일 비트가 어떤 두 개의 인접한 상태들의 비트 매핑들 사이에서 변경되는 매핑들이다. 그레이 매핑들은 페이지 당 평균 비트 에러율 및 감지 동작들의 평균 개수를 감소시킬 수 있다. M개의 상태들에 걸친 그레이 매핑의 경우, 페이지 판독 당 감지 동작들의 평균 개수는 (M-l)/log2(M)이다.
표 2 및 표 3에 기술된 매핑들은 단지 예시들일 뿐이다. 서로 다른 매핑들이 서로 다른 레벨들의 신뢰성 밸런싱을 달성하는 데 사용될 수 있다. 그러나, 완전한 밸런싱은 상태들의 수가 2의 거듭제곱(power)(예컨대, 2, 4, 8, 16)일 때 그레이 매핑에 대하여 달성가능하지 않을 수 있는 바, 그 이유는 0으로부터 1로의 천이들의 수(즉, M-1)가 페이지들의 수(즉, log2(M))로 나누어지지 않을 수 있기 때문이다.
신뢰성 밸런싱을 향상시키는 데 사용될 수 있는 제3 접근법은 워드 라인 당 하나보다 많은 매핑을 사용하는 것이다. 예를 들어, 워드 라인의 일부 스토리지 요소들은 일 매핑을 사용하여 프로그래밍될 수 있고, 워드 라인의 다른 스토리지 요소들은 다른 매핑을 사용하여 프로그래밍될 수 있다.
워드 라인 당 복수의 매핑들을 사용하는 이러한 신뢰성 밸런싱에 대한 일 예가 표 4에 도시된다.
Figure pct00004
표 4: 워드 라인 당 복수의 매핑들의 예
표 4에 따라 상태들에 비트들을 할당할 때, 셀들(예컨대, MLC 워드 라인 내의 플래시 메모리 셀들)의 2/3는 좌측 매핑을 사용하여 프로그래밍된다. 좌측 매핑에 따르면, 이러한 셀들의 하위 및 중간 비트들이 2*p의 에러율을 보이는 경우, 상위 비트는 3*p의 에러 확율을 보인다(즉, 상위 페이지가 중간 페이지 및 하위 페이지보다 신뢰성이 낮다). 셀들의 나머지 1/3은 우측 매핑에 따라 프로그래밍되고, 여기서 셀들의 하위 및 중간 비트들은 3*p의 에러율을 보이고 상위 비트는 p의 에러율을 보인다(즉, 상위 페이지는 중간 페이지 및 하위 페이지보다 신뢰성있다). 이 방식으로, 하위 및 중간 페이지들의 전체 비트 에러율은 (2/3)*2*p + (l/3)*3*p = 2.33*p이고, 상위 페이지의 전체 비트 에러율은 (2/3)*3*p + (l/3)*p = 2.33*p이다. 따라서, 상위, 중간 및 하위 페이지들은 동일한 전체 신뢰성들을 가진다.
워드 라인 당 복수의 상태에 대한 비트(bit-to-state) 매핑들을 이용하는 것에 대한 대안은 다중-플레인(multi-plane) 플래시 메모리 디바이스들에 사용될 수 있다. 일 워드 라인에서 둘 이상의 매핑 기법들을 혼합하는 대신에, 다중-플레인 메모리 디바이스의 각각의 플레인은 서로 다른 매핑(또는 서로 다른 판독 임계들의 설정)을 가질 수 있다. 코드워드들은, 저장된 코드워드들의 전체 비트 에러율들을 밸런싱하기 위해 일 플레인에 일 부분을 가지고 다른 플레인의 대응하는 위치에 다른 부분을 가지도록 다중-플레인 메모리 디바이스에 저장될 수 있다.
플래시 메모리 내의 복수의 매핑들 지원
비트들로부터 상태로의 복수의 매핑들은 플래시 메모리 디바이스와 같은 스토리지 디바이스에서 지원될 수 있다. 예를 들어, 비트들로부터 상태들로의 복수의 매핑들은 페이지 신뢰성들을 밸런싱하기 위해 또는 새로운 매핑을 구현하기 위해 지원될 수 있으면서도, 다른 플레시 메모리 제어기들과의 호환성(backward compatibility)을 위해 기존 매핑들을 여전히 지원한다. 예시를 위해, 일부 기존 플래시 메모리 디바이스들은 상태들로의 비트들의 단일 매핑을 구현하는 데이터 프로그래밍 시퀀스를 가질 수 있다. 이러한 플래시 메모리 디바이스들은 MLC 워드 라인에 대한 프로그래밍 상태들을 결정하기 위해, 비트들을 내부 플래시 메모리 래치들 내로 기록하고 그 다음, 상기 래치들 내의 비트들에 빌트-인 매핑을 적용함으로써, 플래시 어레이에 데이터를 프로그래밍할 수 있다. 비트들로부터 상태들로의 복수의 매핑들은 다음의 동작들의 시퀀스를 이용함으로써 이러한 기존 플래시 메모리 디바이스들에서 구현될 수 있다.
1) 내부 플래시 메모리 래치들 내로 데이터를 기록.
2) 제2 매핑(상태들로의 비트들의 바람직한 매핑)으로부터의 비트들의 매핑을 제1 매핑 - 상기 제1 매핑에 따라 플래시 메모리가 비트들을 상태들로 변환한다 - 으로 변환하기 위해 플래시 메모리 래치들 내의 선택된 비트들 상에서 로직 동작들의 시퀀스를 수행.
3) 내부 플래시 메모리 래치들로부터 MLC 워드 라인으로 데이터를 프로그래밍.
도 7은 상태들로의 비트들의 제1 빌트-인 매핑(730)을 가지는 스토리지 디바이스를 이용하여 상태들로의 비트들의 제2 매핑을 달성하도록 비트들을 조작하는 특별한 실시예(700)를 도시한다. 데이터 비트들은 메모리 내의 P개의 래치들의 세트 내로 로딩되고, 상기 P 개의 래치들은 제1 래치(702), 제2 래치(704) 및 제P 래치(706)로서 예시된다. 각각의 래치(702, 704, 706)는 m개의 데이터 비트들을 저장하고, 상기 m 개의 데이터 비트들은 제1 래치(702)에 비트들 a1 ... am으로, 제2 래치(704)에 비트들 b1 ... bm으로, 제P 래치(706)에 p1 ... pm으로 라벨링된다.
지정 데이터 비트들(designated data bits)(710)이 래치들(702 내지 706) 내에서 조작되도록 지정되고, 비지정 데이터 비트들(undesignated data bits)(708)이 래치들(702 내지 706) 내에서 조작되지 않는다. 지정 데이터 비트들(710)(n+1부터 m까지 색인된 비트들)은 래치들(702 내지 706)에 조작된 데이터 비트들(manipulated data bits)(722)을 생성하기 위해 하나 이상의 로직 동작들(720)을 이용하여 래치들(702 내지 706)에서 조작된다. 조작된 데이터 비트들(722)의 세트들 및 비지정 데이터 비트들(708)(1부터 n까지 색인된 비트들)은 제1 빌트-인 매핑(730)에 따라 스토리지 요소들의 그룹(740)(예컨대, MLC 워드 라인)의 각각의 스토리지 요소들에 저장된다. 상기 그룹(740)의 각각의 스토리지 요소는 상태 s0, s1, ..., sM으로 프로그래밍될 수 있다. 예를 들어, 상태들 s0, s1, ..., sM은 도 4에 예시된 상태들 Er, A, B, ..., G에 대응할 수 있다.
비지정 데이터 비트들(708)은 제1 매핑에 따라 상태들에 매핑되며, 지정 데이터 비트들(710)은 제2 매핑에 따라 상태들에 매핑된다. 예시를 위해, 제1 비트들, a1, b1, ..., p1은 제1 매핑에 따라 제1 요소 c1의 상태 s1에 매핑된다. 제2 비트들, a2, b2, ..., p2는 제1 매핑에 따라 제2 요소 c2의 상태 s0에 매핑되고, 제n 비트들, an, bn, ..., pn은 제n 요소 cn의 상태 sn에 매핑된다. 제(n+1) 내지 제m 비트들은 래치들(702 내지 706) 내의 비트들을 처음에 조작하고 그 다음 제1 빌트-인 매핑(730)을 적용함으로써, 제2 매핑에 따라 요소들 c(n+1) 내지 cm에 매핑된다.
래치들(702 내지 706)에서 지정 비트들(710)을 조작하고 비지정 비트들(708)을 조작하지 않음으로써, 두 가지(또는 그 이상)의 서로 다른 매핑들이 스토리지 요소들의 그룹(740)에 데이터를 저장할 때 적용될 수 있다. 복수의 매핑들을 사용함으로써, 표 4에 관하여 기술된 바와 같이 일 매핑으로부터 비롯된 저 신뢰성이 다른 매핑으로부터 비롯된 고 신뢰성에 의해 적어도 부분적으로 밸런싱될 수 있다. 게다가, 두 가지 매핑들의 적용은 플래시 메모리 제어기에서 구현되는 대신 플래시 메모리 다이의 내부에서 구현될 수 있다.
도 8은 호스트 디바이스(830)에 동작적으로(operatively) 연결될 수 있는 데이터 스토리지 디바이스(802)를 포함하는 시스템(800)의 특별한 실시예를 도시한다. 데이터 스토리지 디바이스(802)는 제어기(806)에 연결된 NAND 플래시 메모리와 같은 메모리(804)를 포함한다. 상기 메모리(804)는 스토리지 요소들(820), 기록 회로망(808), 래치들(810) 및 매핑 회로망(812)을 포함한다. 상기 매핑 회로망(812)은 데이터 스토리지 디바이스(802)로 하여금 메모리(804)에서의 스토리지 요소들의 상태들에 래치들(810) 내의 비트들의 복수의 매핑들을 적용하도록 할 수 있다.
데이터 스토리지 디바이스(802)는 Secure Digital SD® card, microSD® card, miniSD.TM card (델라웨어, 윌밍톤에 소재한 SD-3C LLC의 상표들), MultiMediaCard.TM (MMC.TM) card (버지니아, 알링톤에 소재한 JEDEC Solid State Technology Association의 상표) 또는 CompactFlash® (CF) card (캘리포니아, 밀피타스에 소재한 SanDisk Corporation의 상표)와 같은 메모리 카드일 수 있다. 다른 예로서, 데이터 스토리지 디바이스(802)는 예시적인 예들로서, eMMC® 버지니아, 알링톤에 소재한 JEDEC Solid State Technology Association의 상표) 및 eSD와 같이, 호스트 디바이스(830)에 내장된 메모리일 수 있다.
메모리(840)는 스토리지 요소들(820)의 그룹(822)을 포함하여, 복수의 스토리지 요소들(820)을 포함한다. 예를 들어, 스토리지 요소들(820)은 MLC 셀들을 포함할 수 있다. 예시를 위해, 메모리(804)는 멀티-레벨 셀(MLC) 플래시 메모리를 포함할 수 있고, 스토리지 요소들(820)의 그룹(822)은 MLC 워드 라인일 수 있다.
래치들(810)은 MLC 워드 라인과 같은 스토리지 요소들(820)의 그룹(822)에 저장될 데이터(842)를 래치하도록 동작한다. 데이터(842)는 래치들(810)에서 제어기(806)로부터 수신될 수 있고, 호스트 디바이스(830)로부터 수신되는 사용자 데이터(832)에 응답하여 제어기(806)에 의해 생성된 코드워드들에 대응할 수 있다. 래치들(810)의 각각의 래치는 스토리지 요소들의 그룹(822)에 저장될 데이터의 로직 페이지에 대응하는 비트들을 저장할 수 있다. 예를 들어, 래치들(810)은 도 7의 래치들(702 내지 706)에 대응할 수 있다.
매핑 회로망(812)은 하나 이상의 로직 동작들을 사용하여 래치들(810)에서의 지정 데이터 비트들을 조작함으로써 래치들(810)에서 조작된 데이터 비트들을 생성하도록 동작한다. 예를 들어, 매핑 회로망(812)은 지정 데이터 비트들(710)에 도 7의 로직 동작들(720)을 적용하도록 하는 제어기(806)로부터의 제어 정보(840)에 응답할 수 있다. 매핑 회로망(812)은 데이터(842)가 제어기(806)로부터 수신된 이후에 메모리(804)에서 조작된 데이터 비트들을 생성하도록 구성될 수 있다.
기록 회로망(808)은, 래치들(810)로부터 데이터를 수신하고, 스토리지 요소들(820)의 상태들로의 비트들의 시퀀스들의 제1 매핑에 따라 스토리지 요소들(820)의 그룹(822)의 각각의 스토리지 요소에 제1 개수의 비트들을 저장하도록 동작할 수 있다. 기록 회로망(808)은 스토리지 요소들(820)의 그룹(822)의 각각의 스토리지 요소들에 조작된 데이터 비트들의 세트들을 저장하도록 동작할 수 있다. 지정 데이터 비트들은 상태들로의 비트들의 시퀀스들의 제2 매핑에 따라 각각의 스토리지 요소들의 상태들에 대응하고, 상기 제2 매핑은 상기 제1 매핑과 다르다.
메모리(804)는 빌트-인 매핑으로서의 제1 매핑을 적용하도록 구성될 수 있다. 제2 매핑은, 래치들(810) 내로 데이터(842)를 로딩시키고 로직 레지스터 동작들에 의해 지정 데이터 비트들을 조작함으로써 생성될 수 있다. 제1 매핑은 MLC 워드 라인의 제1 로직 페이지에 대응하는 제1 에러율과 관련될 수 있다. 제2 매핑은 MLC 워드 라인의 제1 로직 페이지에 대응하는 제2 에러율과 관련될 수 있고, 상기 제2 에러율은 상기 제1 에러율보다 낮다.
예를 들어, 매핑 회로망(812)은 래치들(810) 중 제1 래치에서의 데이터 비트들의 제1 그룹의 각각의 데이터 비트에 로직 NOT 동작을 수행하도록 구성될 수 있다. 다른 예로서, 매핑 회로망(812)은 래치들(810) 중 제1 래치에서의 데이터 비트들의 제1 그룹 및 제2 래치에서의 데이터 비트들의 제2 그룹의 비트 단위 로직 동작을 수행하도록 구성될 수 있다. 예시를 위해, 비트 단위 로직 동작은 AND 동작 또는 OR 동작을 포함할 수 있다. 다른 예로서, 비트 단위 로직 동작은 부정 배타적-OR(NOT-XOR) 동작을 포함할 수 있다. 추가의 예로서, 비트 단위 로직 동작은 스왑(swap) 동작을 포함할 수 있다. 로직 동작들의 예들은 도 9에 관하여 기술된다.
메모리(804)는 제2 매핑을 선택적으로 적용하도록 구성가능할 수 있다. 예를 들어, 제어 정보(840)는 제2 매핑이 적용될 지정 데이터 비트들을 나타낼 수 있다. 도 7의 비지정 데이터 비트들(708) 및 지정 데이터 비트들(710)과 같이, 지정 데이터 비트들은 래치들의 각각의 래치의 제2 부분에 위치될 수 있고, 비지정 데이터 비트들은 래치들의 각각의 래치의 제1 부분에 위치될 수 있다. 매핑 회로망(812)은, 래치들(810)의 각각의 래치의 제2 부분에 조작된 데이터 비트들을 생성하고 래치들(810)의 각각의 래치의 제1 부분에서 비지정 데이터 비트들을 조작하지 않도록 구성될 수 있다.
제2 매핑은 스토리지 요소들(820)의 그룹(822)의 제2 부분에 저장될 지정 데이터 비트들에 적용될 수 있으며, 제1 매핑은 스토리지 요소들(820)의 그룹(822)의 제1 부분에 저장될 비지정 데이터 비트들에 적용될 수 있다. 예를 들어, 스토리지 요소들(820)의 그룹(822)의 제1 부분 및 스토리지 요소들(820)의 그룹(822)의 제2 부분은 MLC 플래시 메모리의 단일 워드 라인에 있을 수 있다. 다른 예로서, 메모리(804)는 다중-플레인 플래시 메모리의 제1 플레인(850) 및 제2 플레인(852)을 포함할 수 있고, 스토리지 요소들(820)의 그룹(822)의 제1 부분은 제1 플레인(850)에 있을 수 있으며, 스토리지 요소들(820)의 그룹(822)의 제2 부분은 제2 플레인(852)에 있을 수 있다.
동작 동안, 데이터 스토리지 디바이스(802)는 호스트 디바이스(830)로부터 사용자 데이터(832)를 수신할 수 있다. 데이터 스토리지 디바이스(802)는 데이터(842)(예컨대, 사용자 데이터(832)를 인코딩하는 코드워드)를 생성하도록 가령, 제어기(806)에서의 ECC 엔진에서 사용자 데이터(832)를 인코딩할 수 있다. 제어기(806)는 메모리(804)에 데이터(842)를 전달할 수 있고, 메모리(804)는 래치들(810)에 데이터(842)를 저장할 수 있다.
제어기(806)는 또한, 메모리(804)에 제어 정보(840)를 보낼 수 있다. 매핑 회로망(812)은 조작을 위해 래치들(810) 내에서 지정 데이터 비트들을 선택하도록 하는 제어 정보(840)에 응답할 수 있다. 매핑 회로망(812)은 래치들(810) 내의 지정 데이터 비트들을 조작할 수 있고, 조작된 데이터 비트들(및 만일 존재한다면, 비조작된 데이터 비트들)은 제1 매핑에 따라 기록 회로망(808)에 의해 스토리지 요소들(820)의 그룹(822)에 기록된다. 비지정 데이터 비트들에 제1 매핑을 적용하고 지정 데이터 비트들에 제2 매핑을 적용한 이후에, 스토리지 요소들(820)의 그룹(822)의 각각의 로직 페이지(예컨대, 단일 워드 라인의 각각의 로직 페이지)와 관련된 에러율들은 실질적으로 동일화될 수 있다(즉, 스토리지 요소들(820)의 그룹(822)의 각각의 로직 페이지는 스토리지 요소들(820)의 그룹(822)의 다른 로직 페이지들의 각각의 로직 페이지의 에러율과 실질적으로 동일한 에러율을 가진다.
도 9는 도 8의 매핑 회로망(812)에 의해 지정 데이터 비트들에 적용될 수 있는 로직 동작들의 시퀀스(900)를 예시한다. 도 9의 로직 동작들의 시퀀스는 제2 그레이 매핑을 MLC 플래시 메모리를 프로그래밍할 때 적용되는 제1 빌트-인 그레이 매핑으로 변환하는 것과 같이, 두 가지 그레이 매핑들 간을 변환하기 위해 수행될 수 있다. 초기 매핑(902)은 제1 데이터 래치(ADL), 제2 데이터 래치(BDL) 및 제3 데이터 래치(CDL)에서의 데이터 비트들에 상태들(Er, A, B, C, D, E, F 및 G)을 매핑한다. 상기 데이터 래치들 ADL, BDL 및 CDL은 도 8의 래치들(810)과 같은 플래시 메모리 내의 내부 래치들일 수 있다.
제1 동작(904)이 ADL 및 BDL에 NOT-XOR 동작(~^)을 적용하고, 그 결과를 ADL에 저장하며, 결과적으로 매핑(906)이 되게 한다. 제2 동작(908)이 ~(~ADL & CDL) ~^ BDL을 생성하도록 AND 동작(&), NOT 동작들(~) 및 NOT-XOR 동작을 적용하고, 그 결과를 BDL에 저장한다. 매핑(910)이 제2 동작(908)으로부터 비롯된다.
제3 동작(912)이 CDL ~^ BDL을 생성하도록 NOT-XOR 동작을 적용하고, 그 결과를 CDL에 저장한다. 매핑(914)이 제3 동작(912)으로부터 비롯된다. 제4 동작(916)이 최종 매핑(918)을 생성하도록 ADL 및 CDL에 스왑 동작(
Figure pct00005
)을 적용한다. 래치들 ADL, BDL 및 CDL에 저장된 초기 데이터에 동작들(904, 908, 912 및 916)을 적용한 것으로부터 비롯된 최종 매핑(918)은 제1 빌트-인 매핑이 래치들 ADL, BDL 및 CDL의 컨텐츠에 적용되는 것에 대응한다.
도 9의 다중-동작 방법은 도 7의 로직 동작(들)에 대응할 수 있다. 예를 들어, 최종 매핑(918)은 상태들(730)로의 비트들의 제1 빌트-인 매핑에 대응할 수 있고, 제1 매핑(902)은 지정 데이터 비트들(710)에 적용될 상태들로의 비트들의 제2 매핑일 수 있다. 지정 데이터 비트들(710)에 로직 동작들(904, 908, 912 및 916) - 이 동작들 다음 상기 제1 빌트-인 매핑(730)이 수행된다 - 을 수행함으로써, 상기 지정 데이터 비트들은 제2 매핑에 따라 저장될 수 있다.
예를 들어, 제2 매핑(예컨대, 매핑(902))은 상태 A에 비트들의 시퀀스"101"를 매핑할 수 있다. 로직 동작들(904, 908, 912 및 916)을 적용하는 것은 비트들의 시퀀스 "101"를 비트들의 시퀀스 "011"로 변경시킨다. 상기 비트들의 시퀀스 "011"은 제1 빌트-인 매핑(예컨대, 매핑(918))에 따라 상태 "A"로서 저장될 수 있다. 그러므로, 상태 s1(예컨대, 상태 "A")를 가진 도 7의 스토리지 요소 c1는 제1 빌트-인 매핑에 따라 비트 시퀀스 "011"를 표시할 수 있고, 동일한 상태 s1을 가진 도 7의 스토리지 요소 cm은 제2 매핑에 따라 비트 시퀀스 "101"를 나타낼 수 있다. 도 8의 래치들(810)의 지정된 부분들에 저장된 비트들로의 로직 동작들(904, 908, 912 및 916)의 적용은 매핑 회로망(812)에 의해 수행될 수 있다.
도 10은 데이터를 기록하는 방법의 실시예를 도시하는 흐름도이다. 방법은 제어기 및 메모리를 가진 데이터 스토리지 디바이스에서 수행될 수 있고, 상기 메모리는 래치들 및 복수의 스토리지 요소들을 포함하고, 상기 메모리는 스토리지 요소들의 상태들로의 비트들의 시퀀스들의 제1 매핑에 따라 각각의 스토리지 요소에 제1 개수의 비트들을 저장하도록 동작한다. 예를 들어, 방법은 도 8의 데이터 스토리지 디바이스(802)에서 수행될 수 있다.
단계(1002)에서, 데이터 비트들은 데이터 스토리지 디바이스의 메모리 내의 래치들 내로 로딩된다. 단계(1004)에서, 조작된 데이터 비트들은 하나 이상의 로직 동작들을 이용하여 래치들에서의 지정 데이터 비트들을 조작함으로써 래치들에 생성된다. 단계(1006)에서, 조작된 데이터 비트들의 세트들은 제1 매핑에 따라 스토리지 요소들의 그룹의 각각의 스토리지 요소들에 저장된다. 지정 데이터 비트들은 상태들로의 비트들의 시퀀스들의 제2 매핑에 따라 각각의 스토리지 요소들의 상태들에 대응하고, 상기 제2 매핑은 상기 제1 매핑과 다르다. 예를 들어, 지정 데이터 비트들은 가령, 워드 라인의 셀들의 1/3에 제2 매핑을 적용함으로써 표 4의 예에 따라 페이지 신뢰성들을 동일화시키도록, 제2 매핑에 따라 저장될 데이터 비트들의 부분을 포함할 수 있다. 그러나, 다른 실시예들에서, 지정 데이터 비트들은 제1 매핑을 제2 매핑과 효과적으로 교체하기 위해 데이터 비트들의 전부가 될 수 있다.
래치들 및 스토리지 요소들은 도 8의 메모리(804)와 같이 빌트-인 매핑으로서 제1 매핑을 적용하도록 구성된 메모리 다이 내에 있을 수 있다. 제2 매핑은, 래치들 내로 데이터 비트들을 로딩시킴으로써 그리고 조작된 데이터 비트들의 세트를 저장하기 전에 로직 레지스터 동작들을 수행함에 의해 데이터 비트들을 조작함으로써 생성될 수 있다. 예를 들어, 로직 레지스터 동작들은 그레이 코드들 사이에 지정 데이터 비트들을 매핑하도록 하는 도 9의 동작들(904, 908, 912 및 916)일 수 있다.
메모리 다이는 지정 데이터 비트들에 하나 이상의 로직 레지스터 동작들을 적용함으로써 저장된 지정 데이터 비트들의 상태 변환(transformation)을 수행하도록 하는 도 8의 매핑 회로망(812)과 같은 회로망을 포함할 수 있다.
메모리는 플래시 다중-레벨 셀(MLC) 메모리를 포함할 수 있고, 스토리지 요소들의 그룹은 MLC 워드 라인일 수 있다. 제1 매핑은 MLC 워드 라인의 제1 로직 페이지에 대응하는 제1 에러율과 관련될 수 있고, 제2 매핑은 MLC 워드 라인의 제1 로직 페이지에 대응하는 제2 에러율과 관련될 수 있다. 제2 에러율은 제1 에러율보다 낮을 수 있다.
예를 들어, 데이터 비트들의 제1 그룹은 제1 래치 내로 로딩될 수 있고, 지정 데이터 비트들은 데이터 비트들의 제1 그룹의 각각의 데이터 비트에 로직 NOT 동작을 수행함으로써 조작될 수 있다. 다른 예로서, 데이터 비트들의 제1 그룹은 제1 래치 내로 로딩될 수 있고, 데이터 비트들의 제2 그룹은 제2 래치 내로 로딩될 수 있다. 지정 데이터 비트들을 조작하는 것은 제1 그룹 및 제2 그룹의 비트 단위 로직 동작을 수행하는 것을 포함할 수 있다. 예를 들어, 비트 단위 로직 동작은 AND 동작 및 OR 동작 중 적어도 하나를 포함할 수 있거나 또는 부정 배타적-OR(NOT-XOR) 동작을 포함할 수 있다. 다른 예로서, 비트 단위 로직 동작은 스왑 동작을 포함할 수 있다.
메모리는 가령, 도 8의 제어 정보(840)에 응답하여 제2 매핑을 선택적으로 적용하도록 구성가능할 수 있다. 예를 들어, 메모리는 도 7에 도시된 바와 같이, 래치들의 지정된 부분들에 제2 매핑을 적용하고, 래치들의 비지정된 부분들에 제2 매핑을 적용하지 않도록 구성가능할 수 있다. 래치들의 각각의 래치의 제1 부분은 비지정 데이터 비트들을 포함할 수 있고, 래치들의 각각의 래치의 제2 부분은 지정 데이터 비트들을 포함할 수 있다. 조작된 데이터 비트들은 스토리지 요소들의 그룹의 제2 부분에 저장될 지정 데이터 비트들에 제2 매핑을 적용하도록 래치들의 각각의 래치의 제2 부분에서 생성될 수 있고, 제1 매핑은 스토리지 요소들의 그룹의 제1 부분에 저장될 비지정 데이터 비트들에 적용된다.
다른 예로서, 메모리는 래치들 내의 비트들의 조작에 의해 적용될 수 있는 여러 이용가능한 매핑들로부터 제2 매핑을 선택하도록 구성가능할 수 있다. 예시를 위해, 도 8의 매핑 회로망(812)은 복수의 매핑들을 지원하도록 동작가능할 수 있고, 특별한 매핑을 달성하도록 동작들을 수행하도록 하는 제어 정보(840)에 응답할 수 있다. 예를 들어, 도 8의 제어기(806)는 특별한 매핑을 선택할 수 있고, 선택된 매핑 및 상기 선택된 매핑을 달성하도록 조작될 지정 비트들을 나타내는 제어 정보(840)를 매핑 회로망(812)에 보낼 수 있 다. 제어 정보(840)는 지정 데이터 비트들에 적용될 도 9의 동작들(904, 908, 912 및 916)과 같은 로직 동작들의 순서를 특정할 수 있다. 또 다른 예로서, 메모리는 제2 매핑을 적용하지 않도록 구성가능할 수 있어서, 모든 비트들은 제1 매핑에 따라 상태들에 매핑된다.
일 실시예에서, 스토리지 요소들의 그룹의 제1 부분 및 스토리지 요소들의 그룹의 제2 부분은 다중-레벨 셀(MLC) 플래시 메모리의 단일 워드 라인에 있을 수 있다. 비지정 데이터 비트들에 제1 매핑을 적용하고, 지정 데이터 비트들에 제2 매핑을 적용한 이후에, 단일 워드 라인의 각각의 로직 페이지와 관련된 에러율들은 실질적으로 동일화될 수 있다. 예를 들어, 표 4의 좌측 매핑은 (예컨대, 비지정 비트들에 대응하는) 워드 라인의 스토리지 요소들의 2/3에 적용되는 제1 매핑일 수 있고, 표 4의 우측 매핑은 (예컨대, 지정 비트들에 대응하는) 워드 라인의 스토리지 요소들의 1/3에 적용되는 제2 매핑일 수 있어서, 모든 페이지들은 전체적으로 동일한 에러율들을 가진다. 다른 실시예에서, 도 8의 플레인들(850 및 852)와 같이, 스토리지 요소들의 그룹의 제1 부분은 다중-플레인 플래시 메모리의 제1 플레인에 존재하고, 스토리지 요소들의 그룹의 제2 부분은 다중-플레인 플래시 메모리의 제2 플레인에 존재한다.
페이지 신뢰성에 보호 레벨을 매칭
동일하지 않은 페이지 신뢰성들을 수용하도록 하는 다른 기법은 데이터가 저장되는 페이지의 신뢰성에 데이터 보호 레벨을 매치시키는 것이다. 예를 들어, 서로 다른 ECC 리던던시는 코드워드들 또는 서브-코드들이 저장되는 페이지(들)의 에러율에 따라 서로 다른 코드워드들 또는 서브-코드에 할당될 수 있다. 연결된 코드워드 당 리던던시의 서로 다른 할당의 예가 도 3에 도시된다. 서브-코드 당 리던던시의 서로 다른 할당의 예가 도 4에 도시된다.
도 4에 도시된 기법은 서브-코드들 간의 비대칭으로 인해 보다 복잡한 코딩 기법을 가질 수 있다. 예시를 위해, 덜 신뢰성있는 상위 페이지(410) 내의 서브-코드들은 더 신뢰성있는 페이지들(412, 414) 내의 서브-코드들보다 많은 패리티를 가진다. 도 3에 도시된 기법은 서로 다른 길이들의 코드워드들을 사용하고, 코드워드는 워드 라인의 하나보다 많은 페이지에 걸쳐 이어질 수 있다. 예를 들어, 도 3의 제1 코드워드(304)는 단일 페이지보다 길다(그리고 따라서, 워드 라인(302)의 하나 보다 많은 페이지에 걸쳐 이어진다).
셀 당 많은 수(예컨대, M = 4, 8 또는 16))의 상태들을 가진 MLC 플래시 메모리의 경우, 데이터는 처음에, "바이너리 캐시"로서 역할하는 단일-레벨 셀(SLC) 파티션 내로 프로그램될 수 있다. SLC 파티션에 저장된 데이터는 백그라운드 프로세스(background process)를 이용하여 MLC 파티션 내로 복사될 수 있다. 데이터를 SLC 파티션 내로 초기에 저장하고 그 다음, 상기 데이터를 MLC 파티션에 복사하는 것은 다음의 여러 장점들을 제공할 수 있다.
1) MLC 프로그래밍이 상대적으로 느릴 수 있기 때문에, 바이너리 캐시의 사용은 프로그래밍 버스트 사이즈가 충분히 작고 바이너리 캐시가 채워지지 않은 경우, 증가된 프로그래밍 처리량(throughput) 및 개선된 사용자 경험을 가능하게 한다.
2) 일부 플래시 메모리 프로토콜들(예컨대, Secure Digital (SD))은, 메모리 제어기가 다음 데이터 블록이 보내지기 전에 이전에 보내진 데이터 블록이 메모리 내로 프로그래밍됨음 확인응답하는 것을 특정한다. 데이터 블록들은 전형적으로, 일반적으로 큰(예컨대, 16KB, 24KB 또는 32KB) MLC 워드 라인의 용량보다 작다. 따라서, 데이터 블록들은 처음에 SLC 파티션 내로 프로그래밍될 수 있고, 충분한 데이터가 수집된 (예컨대, 충분한 데이터가 MLC 블록을 채우도록 SLC 바이너라 캐시에 저장된) 후에, SLC 바이너리 캐시에 저장된 데이터는 MLC 파티션 내로 복사된다.
3) MLC 파티션 내로 데이터를 프로그래밍하는 것은 많은 워드 라인들을 포함할 수 있는 큰 블록들(예컨대, 워드 라인 당 32KB 사이즈의 64개의 워드 라인들로 구성된 2메가바이트(MB) 블록)에서 수행될 수 있다. MLC 파티션에 데이터를 프로그래밍하는 것은 각각의 워드 라인의 여러 비연속적인 프로그래밍 페이즈들을 수반할 수 있는 동작들의 시퀀스를 사용하여 수행될 수 있다. 복수의 비연속적인 프로그래밍 페이즈들은 특정한 크로스-커플링 효과들을 상쇄시킬 수 있고, 데이터 스토리지 디바이스로 하여금 적은 에러율들을 유지하게끔 할 수 있는 좁은 전압 분포들을 유발할 수 있다. 데이터는 처음에 SLC 파티션(예컨대, 바이너리 캐시) 내로 프로그래밍될 수 있다. SLC 파티션 내로 데이터를 프로그래밍하는 것은 MLC 파티션 내로 데이터를 프로그래밍하는 것보다 간단할 수 있고, 한 번에 일 워드 라인씩 수행될 수 있다. SLC 파티션 내로 데이터를 프로그래밍한 이후에, 데이터는 MLC 파티션 내로 복사될 수 있다. 그러므로, 데이터의 일시적인 스토리지를 위해 RAM을 사용하는 대신, SLC 파티션은 데이터의 일시적인 스토리지로서 기능할 수 있다.
여러 실시예들은 SLC 파티션으로부터 MLC 파티션으로 코드워드를 복사하기에 앞서 SLC 파티션 내로 긴 코드워드(즉, SLC 페이지보다 긴 코드워드)를 프로그래밍할 수 있도록 개시된다.
일 실시예는 MLC 워드 라인에 존재하는 로직 페이지들의 수보다 많은 수의 SLC 페이지들을 단일 MLC 워드 라인에 대한 데이터를 저장하는 데 사용하는 것을 포함한다. 긴 코드워드는, SLC 페이지들 내의 데이터의 상대적인 위치가 데이터가 복사될 MLC 워드 라인(들)의 페이지들 내의 데이터의 상대적인 위치와 동일하도록 SLC 페이지들 내로 프로그래밍될 수 있다. MLC 페이지들에 대하여 의도된 위치들과 동일한 SLC 페이지들 내의 상대적인 위치들 내로 코드워드를 프로그래밍하는 것은 내부 플래시 메모리 래치들을 사용하여 SLC 파티션으로부터 MLC 파티션으로 내부 복사를 할 수 있게 한다. 간단한 동작들이 많은 수의 SLC 페이지들 내의 데이터를 적은 수의 MLC 페이지들 내로 결합하도록 래치들에서 수행될 수 있다. 이러한 프로그래밍 절차의 예가 도 3에 도시된 MLC 워드 라인에 대해 도 11에 예시된다.
도 11은 플래시 메모리의 SLC 부분에 제1 코드워드(코드워드 1)(1130), 제2 코드워드(코드워드 2)(1132) 및 제3 코드워드(코드워드 3)(1134)를 저장하고 상기 코드워드들(1130 내지 1134)을 MLC 워드 라인(1120)에 전달하는 특별한 실시예(1100)를 도시한다. 제1 코드워드(1130)는 SLC 부분에서의 페이지들의 사이즈를 초과하는 길이를 가진다. 제1 SLC 페이지(SLC 상위-1)(1104)는 MLC 워드 라인(1120)의 상위 페이지(1122) 내에 저장될 제1 코드워드(1130)의 일 부분(1136)을 저장한다. 제2 SLC 페이지(SLC 상위-2)(1106)는 MLC 워드 라인(1120)의 중간 페이지(1124) 내에 저장될 제1 코드워드(1130)의 제2 부분(1138)을 저장한다. 제2 SLC 페이지(1106)는 또한, MLC 워드 라인(1120)의 하의 페이지(1126)에 저장될 제1 코드워드(1130)의 제3 부분(1140)을 저장한다. 제3 SLC 페이지(1108)는 제2 코드워드(1132)를 저장하고, 제4 SLC 페이지(1110)는 제3 코드워드(1134)를 저장한다.
제1 코드워드(1130)의 제1 부분(1136)은 SLC 페이지 사이즈와 실질적으로 동일한 길이를 가지고, 제1 SLC 페이지(1104)를 실질적으로 채운다. 제2 SLC 페이지(1106) 내의 제1 코드워드(1130)의 제2 부분(1138)은 제3 SLC 페이지(1108) 내의 제2 코드워드(1132)에 의해 차지되지 않는 페이지 위치를 차지한다(예컨대, 워드 라인에 대해 SLC 페이지(1106)의 마지막 셀들을 차지한다). 그 결과, 제2 코드워드(1132) 및 제1 코드워드(1130)의 제2 부분(1138)은 높은(higher) 또는 낮은(lower) 비트 위치들에 비트들을 시프트시킴 없이 단일 래치 내로 함께 기록될 수 있다. 예를 들어, 단일 래치는 도 8의 래치들(810) 중 하나일 수 있다. 마찬가지로, 제2 SLC 페이지(1106) 내의 제1 코드워드(1130)의 제3 부분(1140)은 제4 SLC 페이지(1110)에서 제3 코드워드(1134)에 의해 차지되지 않는 페이지 위치를 차지한다(즉, 워드 라인에 대해 SLC 페이지(1106)의 최초 셀들을 차지한다). 그 결과, 제3 코드워드(1134) 및 제1 코드워드(1130)의 제3 부분(1140)은 비트 시프트를 수행함 없이 단일 래치 내로 함께 기록될 수 있다.
각각의 SLC 페이지(1104, 1106, 1108, 1110)는 각각의 내부 플래시 메모리 래치 내로 복사될 수 있다. 래치들 내로 SLC 페이지들을 로딩한 이후에, 제1 코드워드(1130)의 제1 부분(1136)은 제1 래치에서 유지될 수 있고, 제1 코드워드(1130)의 제2 부분(1138)은 제2 래치 내로 제2 코드워드(1131)와 결합될 수 있으며, 제1 코드워드(1130)의 제3 부분(1140)은 제3 래치 내로 제3 코드워드(1134)와 결합될 수 있다. 제1, 제2 및 제3 래치들의 비트 값들은 MLC 워드 라인(1120)에 상위 페이지(1122), 중간 페이지(1124) 및 하위 페이지(1126)를 프로그래밍하도록 MLC 워드 라인(1120)의 상태들에 매핑될 수 있다.
그러므로, 도 11은 제1 개수의 SLC 물리 페이지들(예컨대, 4개의 SLC 페이지들(1104 내지 1110))로부터 단일 MLC 물리 페이지에서의 제2 개수의 로직 페이지들(예컨대, 세 개의 로직 페이지들(1122 내지 1126))로 저장된 컨텐트를 복사하는 것의 예를 도시하며, 여기서 상기 제2 개수는 상기 제1 개수보다 작다. B가 양수이며, 셀 당 B개의 비트들(예컨대, 도 11에 도시된 바와 같이 셀 당 3비트)로 이루어진 다중-레벨 셀(MLC) 플래시 메모리에서 바이너리 캐시를 이용할 때, 적어도 하나의 데이터 페이지는 MLC 플래시 메모리의 단일 워드 라인의 데이터의 캐싱을 위해 B 이상의 페이지들을 사용하여 하나 보다 많은 단일-레벨 셀(SLC)로 분리될 수 있다. 예시를 위해, 4개의 SLC 페이지들(1104 내지 1110)은 단일 MLC 워드 라인(1120)의 데이터를 캐싱할 수 있다. 데이터 스토리지 디바이스는 데이터 스토리지 디바이스에 저장될 데이터 페이지들을 수신할 수 있고, 수신된 데이터 페이지들에 대응하는 코드워드들(1130, 1132 및 1134)과 같은 코드워드들을 생성할 수 있다. 코드워드들은 SLC 부분 또는 바이너리 캐시와 같은, 데이터 스토리지 디바이스의 제1 메모리 부분의 물리 페이지들(예컨대, SLC 페이지들(1104 내지 1110))에 저장될 수 있다. 제1 코드워드(1130)의 제1 부분(1136)과 같은, 특별한 데이터 페이지에 대응하는 특별한 코드워드의 제1 부분은 제1 물리 페이지(1104)에 저장될 수 있다. 제1 코드워드(1130)의 제2 부분(1138)과 같은 특별한 코드워드의 제2 부분은 제2 물리 페이지(1106)에 저장될 수 있다. 코드워드들(1130, 1132 및 1134)은 물리 페이지들(1104 내지 1110)로부터 메모리의 MLC 부분에서의 MLC 워드 라인(1120)과 같은, 데이터 스토리지 디바이스의 제2 메모리 부분의 물리 페이지로 복사될 수 있다.
도 11에 도시된 바와 같이, 4개의 SLC 페이지들(1104, 1106, 1108 및 1110)은 MLC 워드 라인(1120) 내의 데이터의 단 세 개의 페이지들(1122, 1124, 1126)을 저장하기 위해 바이너리 캐시에서 사용될 수 있다. 그 결과, MLC 워드 라인(1120)의 페이지 당 동일한 수의 SLC 페이지들을 사용하는 것에 비해 상대적으로 큰 바이너리 캐시가 사용될 수 있다. 많은 SLC 페이지들을 사용하는 것은 바이너리 캐시의 심한 마모(higher wearing)를 유발할 수 있는 바, 그 이유는 많은 SLC 페이지들이 각각의 MLC 워드 라인에 대해 프로그래밍되기 때문이다. 그러나, SLC-상위 2 페이지(1106)는 SLC-상위 1 페이지(1104) 내에 피팅되지 않는 제1 코드워드(1130)의 "과잉(spillover)" 리던던시만을 저장할 수 있다. 예시된 바와 같이, 과잉 리던던시가 SLC-상위 2 페이지(1106)의 작은 부분을 차지할 때, SLC-상위 2 페이지(1106)의 대부분의 셀들은 소거된 채로 유지될 수 있다. 그 결과, 반복된 프로그램/소거 사이클들로 인한 마모는 SLC-상위 2 페이지(1106)의 셀들의 전부를 프로그래밍하는 것에 비해 감소될 수 있다. 각각의 SLC 페이지(1104, 1106, 1108, 1110)가 제1 코드워드(1130)의 제1 부분(1136)으로 프로그래밍될 1/4의 확률이나, 제1 코드워드(1130)의 제2 및 제3 부분들(1138, 1140)로 프로그래밍될 1/4의 확률이나, 제2 코드워드(1132)로 프로그래밍될 1/4의 확률이나 또는 제3 코드워드(1134)로 프로그래밍될 1/4의 확률을 가지도록 바이너리 캐시를 제어하는 것은 SLC 부분의 마모 및 내구력의 영향(impact)을 감소시킬 수 있다.
바이너리 캐시의 4개의 페이지들 내로 데이터를 프로그래밍하는 시간의 양은 세 개의 SLC 페이지들에 데이터를 프로그래밍하는 시간의 양을 초과할 수 있다. 그러나, 어떤 증가된 프로그래밍 시간은 데이터를 기록하기 위한 적절한 파이프라인 동작을 설계함으로써 "감춰질(hidden)" 수 있다. SLC-상위 1 페이지(1104)를 프로그래밍한 이후에 그리고 "과잉" 리던던시로 SLC-상위 2 페이지(1106)를 프로그래밍하기 전에, 메모리 제어기는 데이터를 보내는 호스트에게 상위 페이지 데이터가 플래시 메모리에 안전하게 저장됨을 알려주어서, 상기 호스트는 다음 페이지의 데이터를 전달할 수 있다. 그 다음, 상기 호스트가 다음 페이지의 데이터를 전달하고 다음 페이지의 데이터가 인코딩되는 동안, 상위 페이지의 "과잉" 리던던시(예컨대, 제2 및 제3 부분들(1138 내지 1140))는 다음 SLC 페이지(예컨대, SLC-상위 2 페이지(1106)) 내로 프로그래밍될 수 있다.
SLC-상위 2 페이지(1106)의 데이터가 바이너리 캐시에 프로그래밍되기 전에 파워 차단 이벤트(power-down event)가 발생하는 경우, 제어기는 제1 코드워드(1130)의 제2 부분(1138) 및 제3 부분(1140)이 "과잉" 리던던시만을 포함할 수 있기 때문에 제1 코드워드(1130)의 데이터를 복구할 수 있다. 이 과잉 리던던시는 SLC 물리 페이지들로부터 예상된 에러율을 정정하기 위해 요구되지 않는다. 예를 들어, SLC 비트 에러율은 MLC-상위 페이지(1122 페이지)의 비트 에러율보다 훨씬 작을 수 있다. 그 결과, 데이터 스토리지 디바이스는, SLC-상위 1 페이지(1104)에 데이터 워드로 인코딩되는 리던던트 정보가 상위 페이지 데이터의 복구를 할 수 있는 데 충분하기 때문에 SLC-상위 1 페이지(1104)만의 프로그래밍 이후에 상위 페이지 데이터가 보안됨을 호스트에게 즉시 알려줄 수 있다. 일 예는 도 12에 관하여 더욱 상세히 기술된다.
MLC 파티션에 긴 코드워드를 복사하기에 앞서 SLC 파티션에 긴 코드워드를 프로그래밍할 수 있게 하는 제2 실시예는 제2 SLC 페이지에 코드워드의 과잉 부분을 프로그래밍함 없이 단일 SLC 페이지 내에 피팅되는 코드워드의 부분만을 프로그래밍하는 것을 포함한다. 그 결과, "천공된" 코드워드가 SLC 파티션에 코드워드의 비트들의 일부를 저장함 없이 SLC 파티션에 저장된다. SLC 파티션으로부터 MLC 파티션으로 데이터를 복사하기 전에(즉, MLC 파티션에 기록될 모든 데이터가 SLC 파티션에서 이용가능할 때), 천공된 코드워드는 SLC 파티션으로부터 판독되고 디코딩될 수 있다. 천공된 코드워드를 디코딩하는 것은 SLC 파티션에 도입될 수 있는 에러들을 정정할 수 있고, 코드워드의 누락된(missing) 천공된 파트를 재구성할 수 있다. 에러들을 정정하고 전체 코드워드를 재구성하도록 천공된 코드워드를 디코딩한 이후에, 전체 코드워드는 MLC 워드 라인의 로직 페이지들 내의 적절한 위치에 프로그래밍될 수 있다. 코딩 기법은 SLC 파티션에 저장된 천공된 코드워드의 성공적인 디코딩의 높은 확율을 가능하게 하도록 설계될 수 있는 바, 그 이유는 SLC 파티션 내의 페이지들이 MLC 파티션의 페이지들에 비해 훨씬 낮은 에러율을 보일 수 있기 때문이다. 코드워드의 천공된 파트는 데이터가 MLC 페이지들에 저장될 때 데이터를 디코딩하기 위해 오직 요구될 수 있지만, 천공된 파트는 데이터가 SLC 페이지 상에 저장될 때 생략(omitted)될 수 있다. 일 예가 도 13에 관하여 더욱 상세히 기술된다.
그러므로, SLC 파티션의 천공된 코드워드로부터의 데이터를 MLC 파티션으로 복사하는 것은 천공된 코드워드가 SLC 페이지로부터 판독되어 제어기에 제공될 수 있기 때문에 제어기 액션들을 포함할 수 있으며, 상기 제어기는 코드워드의 천공된 파트를 재구성하도록 상기 천공된 코드워드를 디코딩할 수 있다. 제어기에 데이터를 전달하는 것 및 전달된 데이터를 디코딩하는 것은 MLC 파티션에 데이터를 저장함에 있어서의 레이턴시에 기여할 수 있다.
제어기의 개입(involvement)은 제어기에서 천공된 파트를 재구성하는 대신 인코딩 절차를 통해 플래시 메모리 내부에 코드워드의 파트를 생성함으로써 데이터를 플래시 메모리의 SLC 파티션으로부터 플래시 메모리의 MLC 파티션으로 복사할 때 회피될 수 있다. 인코딩 절차는 복잡한 로직이 플래시 메모리 내에서 효율적으로 구현될 수 없는 실시예들에서 상대적으로 복잡하지 않은 로직 동작들을 포함할 수 있다. 상대적으로 간단한 인코딩의 예는 반복 코드인 바, 여기서 코드워드의 파트는 코드워드 비트들의 일부를 반복함으로써 생성될 수 있다(예컨대, 생성된 파트는 코드워드의 특정 섹션의 복사본일 수 있다). 일 예가 도 14에 관하여 상세히 기술된다.
SLC로부터 MLC로의 복사 절차에서의 제어기의 개입은 또한, 과잉 섹션들이 MLC 파티션에 복사될 때까지 RAM에 코드워드들의 과잉 섹션들을 저장함으로써 감소될 수 있다. 코드워드의 과잉 섹션은 작을 수 있고, 그러므로 큰 RAM 사이즈를 요하지 않을 수 있다. 파워 차단의 경우, RAM에 저장된 과잉 섹션들은 손실될 수 있다. 파워가 복원된 이후에, 코드워드들의 손실된 과잉 섹션들은 SLC 파티션으로부터 천공된 코드워드들을 판독하고 상기 천공된 코드워드들을 디코딩함으로써 재구성될 수 있다.
MLC 파티션에 긴 코드워드를 복사하기에 앞서 SLC 파티션에 긴 코드워드를 프로그래밍할 수 있는 제3 실시예는 MLC 파티션에 대해 사용되는 것과 다른 ECC 코드를 사용하여 SLC 파티션 내로 데이터를 프로그래밍하는 것을 포함할 수 있다. SLC 파티션에 대한 ECC 코드는 SLC 페이지 내로 피팅되는 코드워드를 생성할 수 있다(즉, SLC 파티션에 저장된 데이터 페이지에 대한 코드워드는 MLC 파티션에 저장된 동일한 데이터 페이지에 대한 코드워드보다 적은 패리티를 가진다). 데이터를 SLC 파티션으로부터 MLC 파티션 내로 복사하기 위해, 관련 SLC 페이지들은 제어기 내로 판독되고, 데이터는 SLC ECC를 이용하여 디코딩되며, 데이터는 MLC ECC를 이용하여 인코딩되고, 그리고 MLC 코드워드들은 MLC 워드 라인 내로 결합 및 프로그래밍된다. 일 예가 도 15에 관하여 더욱 상세히 기술된다.
MLC 프로그래밍은 프로그래밍되는 MLC의 각각의 워드 라인의 여러 비-순차적인 프로그래밍 페이즈들을 포함할 수 있다. 그 결과, 메모리 제어기에 의해 사용되는 RAM은 (많은 워드 라인들 내로 기록될 데이터를 저장하는 것을 수반할 수 있는) MLC 프로그래밍을 완료하기 위해 요구되는 데이터의 전부를 저장하기에 충분한 공간(room)을 가지지 않을 수 있다. 일 예에서, RAM의 감소된 사용을 이용하는 MLC 프로그래밍은 "read SLC-decode SLC-encode MLC-program MLC" 시퀀스를 여러번 반복함으로써 수행될 수 있다(즉, 상기 시퀀스를 MLC 워드 라인의 각각의 프로그래밍 페이즈에 대해 일 회씩 수행한다). 다른 예에서, RAM의 감소된 사용을 이용하는 MLC 프로그래밍은, SLC 페이지들을 판독하고, SLC ECC 기법에 따라 SLC 페이지들로부터 판독된 데이터를 디코딩하며, MLC ECC 기법을 이용하여 상기 디코딩된 데이터를 인코딩하고 그리고 데이터가 MLC 포맷으로 SLC 페이지들에 인코딩되도록 MLC 코드워드들을 SLC에 다시 프로그래밍함으로써 수행될 수 있다.
도 12는 복수의 물리 페이지들 내로 긴 코드워드를 프로그래밍함으로써 데이터를 기록하도록 구성된 데이터 스토리지 디바이스(1202)를 포함하는 시스템(1200)의 특별한 실시예를 도시한다. 시스템(1200)은 호스트 디바이스(1230)에 동작적으로 연결될 수 있는 데이터 스토리지 디바이스(1202)를 포함한다. 데이터 스토리지 디바이스(1202)는 제어기(1206)에 연결된 메모리(1204)를 포함한다. 메모리(1204)는 제1 물리 페이지(1212) 및 제2 물리 페이지(1214)를 포함하는 제1 부분(1210)을 포함한다. 메모리(1204)는 또한, 제3 물리 페이지(1222)를 가진 제2 부분(1220)을 포함한다. 데이터 스토리지 디바이스(1202)는 제1 부분(1210)의 복수의 물리 페이지들에 긴 코드워드를 프로그래밍하고, 이후에, 저장된 데이터를 제2 부분(1220)에 복사하도록 구성된다.
데이터 스토리지 디바이스(1202)는 Secure Digital SD® card, microSD® card, miniSD.TM card (델라웨어, 윌밍톤에 소재한 SD-3C LLC의 상표들), MultiMediaCard.TM (MMC.TM) card (버지니아, 알링톤에 소재한 JEDEC Solid State Technology Association의 상표) 또는 CompactFlash® (CF) card (캘리포니아, 밀피타스에 소재한 SanDisk Corporation의 상표)와 같은 메모리 카드일 수 있다. 다른 예로서, 데이터 스토리지 디바이스(1202)는 예시적인 예들로서, eMMC® 버지니아, 알링톤에 소재한 JEDEC Solid State Technology Association의 상표) 및 eSD와 같이, 호스트 디바이스(1230)에 내장된 메모리일 수 있다.
호스트 디바이스(1230)는, 데이터 스토리지 디바이스(1202)에 저장될 데이터 페이지(1232)와 같은 데이터를 저장하거나 또는 데이터 스토리지 디바이스(1202)로부터 판독될 데이터를 요청하도록 구성될 수 있다. 예를 들어, 호스트 디바이스(1230)는 모바일 전화기, 음악 또는 비디오 재생기, 게이밍 콘솔, 전자 책 리더, 개인용 디지털 단말기(PDA), 랩탑 컴퓨터 또는 노트북 컴퓨터와 같은 컴퓨터, 어떤 다른 전자 디바이스 또는 이들의 어떤 조합을 포함할 수 있다. 호스트 디바이스(1230)는 하나 이상의 프로토콜들에 따라 데이터 스토리지 디바이스(1202)와 통신할 수 있고, 상기 하나 이상의 프로토콜들은, 호스트 디바이스(1230)가 데이터 스토리지 디바이스(1202)에 데이터를 보낸 이후에 이전 데이터가 메모리(1204)에 저장되었음을 나타내는 확인응답을 수신할 때까지 상기 호스트 디바이스(1230)가 데이터 스토리지 디바이스(1202)에 다음 데이터를 보내는 것을 억제함을 특정한다.
메모리(1204)는 SLC 부분 또는 파티션(예컨대, 제1 부분(1210)) 및 MLC 부분 또는 파티션(예컨대, 제2 부분(1220))을 가진 플래시 메모리를 포함할 수 있다. 제1 물리 페이지(1212) 및 제2 물리 페이지(1214)는 SLC 셀 당 단일 비트를 저장하는 SLC 셀들과 같은 스토리지 요소들을 각각 포함할 수 있다. 제3 물리 페이지(1222)는 셀 당 복수의 비트들을 저장하는 MLC 셀들과 같은 스토리지 요소들을 포함할 수 있다. 각각의 MLC 셀은 제3 물리 페이지(1222) 내의 제1 로직 페이지(1224) 및 제2 로직 페이지(1226)와 같은 복수의 로직 페이지들에 대응하는 비트 값들을 포함할 수 있다.
제어기(1206)는 호스트 디바이스(1230)로부터 데이터 페이지(1232)를 수신하도록 구성되며, 데이터 스토리지 디바이스(1202)는 상기 호스트 디바이스(1230)에 동작적으로 연결된다. 제어기(1206)는 데이터 페이지(1232)를 인코딩하도록 인코딩 동작을 개시하도록 구성된다. 인코딩 동작은 제1 부분(1240) 및 제2 부분(1242)을 가지는 제1 인코딩된 데이터를 생성한다.
데이터 스토리지 디바이스(1202)는 제1 물리 페이지(1212)에 상기 제1 인코딩된 데이터의 제1 부분(1240)을 저장하도록 구성된다. 제1 물리 페이지(1212)에 제1 부분(1240)을 저장한 이후에, 데이터 스토리지 디바이스(1202)는 제2 물리 페이지(1214)에 제1 인코딩된 데이터의 제2 부분(1242)의 저장을 개시한다. 예를 들어, 제1 인코딩된 데이터의 제1 부분(1240)은 도 11의 제1 코드워드(1130)의 제1 부분(1136)에 대응할 수 있고, 제1 인코딩된 데이터의 제2 부분(1242)은 제1 코드워드(1130)의 제2 및 제3 부분들(1138, 1140)에 대응할 수 있다.
제1 부분(1210)에 제1 인코딩된 데이터를 저장한 이후에, 데이터 스토리지 디바이스(1202)는 제1 인코딩된 데이터의 제1 부분(1240)의 표시(1262)를 제1 물리 페이지(1212)로부터 제3 물리 페이지(1222) 내의 제1 로직 페이지(1224)로 복사하도록 구성된다. 데이터 스토리지 디바이스(1202)는 표시(1264)를 제2 물리 페이지(1214)로부터 제3 물리 페이지(1222) 내의 제2 로직 페이지(1226)로 복사하도록 더 구성된다. 예를 들어, 메모리(1204)의 제2 부분(1220)에 복사될 데이터는 메모리(1204)의 제1 부분(1210)으로부터 도 8의 래치들(810)과 같은 메모리(1204) 내부의 래치들의 세트로 기록될 수 있다. 래치들에 저장된 데이터는 도 8 내지 10에 관하여 기술된 바와 같이, 상태들로의 비트들의 하나 이상의 매핑들에 따라 제3 물리 페이지(1222)에 기록될 수 있다. 표시들(1262, 1264)은, 메모리(1204)의 제1 부분(1210)에서 발생할 수 있는 대표적인 비트 에러(1252)와 같은 하나 이상의 비트 에러들의 결과로, 제1 인코딩된 데이터(1240, 1242)의 부분들과 각각 다를 수 있다.
제어기(1206)는, 제1 물리 페이지(1212)에 제1 부분(1240)을 저장한 이후 그러나 제2 물리 페이지(1214)에 제2 부분(1242)을 저장하기 전에, 데이터 페이지(1232)가 데이터 스토리지 디바이스(1202)에 성공적으로 저장되었음을 나타내는 메세지(1248)를 호스트 디바이스(1230)에 보내도록 구성될 수 있다. 예를 들어, 제어기(1206)는 제1 인코딩된 데이터의 제1 부분(1240)을 저장함에 응답하여 호스트 디바이스(1230)에 메시지(1248)를 보내도록 구성될 수 있다. 메모리(1204)는, 제1 파이프라인 단계에서 제1 물리 페이지(1212)를 기록함에 응답하여 그러나 후속적인 파이프라인 단계에서 제2 물리 페이지(1214)를 기록하기에 앞서 메시지(1248)를 보내는 파이프라인식 방식으로 제1 인코딩된 데이터의 제1 부분(1240) 및 제1 인코딩된 데이터의 제2 부분(1242)을 저장할 수 있다. 데이터를 더 보내기에 앞서 성공적인 데이터 저장의 확인응답을 요하는 시스템들에서, 제1 부분(1240)을 저장한 이후에 메시지(1248)를 보내는 것은 데이터 스토리지 디바이스(1202)로 하여금 각각의 인코딩된 데이터 워드가 메모리(1204)의 제1 부분(1210)의 단일 페이지에 저장된 것처럼 스토리지 데이터 처리율을 유지하도록 할 수 있다.
동작 동안, 데이터 스토리지 디바이스(1202)는 호스트 디바이스(1230)로부터 데이터 페이지(1232)를 수신할 수 있다. 제어기(1206)는 제1 인코딩된 데이터를 생성하도록 ECC 엔진(1208)의 입력에 데이터 페이지(1232)를 제공할 수 있다. 제어기(1206)는 제1 물리 페이지(1212)에 기록될 제1 인코딩된 데이터의 제1 부분(1240)을 보낼 수 있다. 제1 물리 페이지(1212)에 제1 인코딩된 데이터의 제1 부분(1240)을 기록한 이후에, 제어기(1206)는 호스트 디바이스(1230)에 메시지(1248)를 보내고 제2 물리 페이지(1214)에 제1 인코딩된 데이터의 제2 부분(1242)의 저장을 개시할 수 있다.
파워 차단 이벤트는, 제1 인코딩된 데이터의 제1 부분(1240)이 제1 물리 페이지(1212)에 기록된 이후에 그러나 제2 물리 페이지(1214)에 제1 인코딩된 데이터의 제2 부분(1242)을 기록하는 것을 완료하기 전에 잠재적으로 발생할 수 있다. 이러한 파워 차단 이벤트 이후에 파워의 재개에 응답하여, 제어기(1206)는 제1 물리 페이지(1212)로부터 제1 인코딩된 데이터의 제1 부분(1240)의 표시(1262)를 판독하고 ECC 엔진(1208)에서 제1 부분(1240)의 표시(1262)를 디코딩함으로써 본래의 데이터 페이지(1232)를 복구할 수 있다. 예시를 위해, 제1 인코딩된 데이터의 제1 부분(1240)은 제3 물리 페이지(1222)에서의 상대적으로 높은 예상 에러율에 비해 제1 물리 페이지(1212)에서의 낮은 예상 에러율에서 데이터 페이지(1232)의 복구를 할 수 있게 하는 충분한 리던던트 정보를 포함할 수 있다. 제어기(1206)는 (제1 인코딩된 데이터의 제2 부분(1242)의) 누락된 비트들의 수 및 제1 인코딩된 데이터의 제1 부분(1240)에서 발생된 비트 에러들의 수 모두가 ECC 인코딩 기법의 에러 정정 능력을 초과하지 않을 때 데이터 페이지(1232)를 복구하도록 검색된 제1 부분(1240)을 디코딩할 수 있다.
도 13은 메모리(1304)의 제2 부분(1320)에 저장된 데이터를 복사하기 전에 천공된 코드워드를 이용하여 메모리(1304)의 제1 부분(1310)에 데이터를 저장하도록 하는 시스템(1300)의 실시예를 도시한다. 시스템(1300)은 호스트 디바이스(1330)에 동작적으로 연결되도록 구성된 데이터 스토리지 디바이스(1302)를 포함한다. 예를 들어, 호스트 디바이스(1330)는 도 12의 호스트 디바이스(1230)에 대응할 수 있다.
데이터 스토리지 디바이스(1302)는 ECC 엔진(1308)을 가진 제어기(1306)를 포함하고, 또한 메모리(1304)(예컨대, NAND 플래시 메모리)를 포함한다. 메모리(1304)의 제1 부분(1310)(예컨대, 바이너리 캐시로서 기능하는 SLC 부분)은 제1 물리 페이지(1312)를 포함하고, 메모리(1304)의 제2 부분(1320)(예컨대, MLC 부분)은 제2 물리 페이지(1322)를 포함한다. 제2 물리 페이지(1322)는 제1 로직 페이지(1324)를 포함하고, 또한 제1 로직 페이지(1324)보다 높은 신뢰성을 가지는 제2 로직 페이지(1326)를 포함한다.
제어기(1306)는 호스트 디바이스(1330)로부터 수신된 데이터 페이지(1332)를 인코딩하도록 제1 인코딩 동작을 개시하도록 구성된다. 예를 들어, 제어기(1306)가 데이터 페이지(1332)가 제1 로직 페이지(1362)에 저장되어야 함을 결정할 때, 제어기(1306)는 제1 로직 페이지(1324)의 상대적으로 낮은 신뢰성을 수용하기에 충분한 리던던시를 가지는 제1 인코딩된 데이터(즉, 긴 코드워드)를 생성하도록 데이터 페이지(1332)를 인코딩하도록 ECC 엔진(1308)을 구성한다. 이와는 달리, 제어기(1306)가 데이터 페이지가 높은 신뢰성의 페이지(예컨대, 제2 로직 페이지(1326))에 저장되어야 함을 결정할 때, 제어기(1306)는 적은 리던던시 비트들을 가진 짧은 코드워드를 생성하도록 ECC 엔진(1308)을 구성할 수 있다. 예를 들어, 긴 코드워드는 도 11의 제1 코드워드(1130)일 수 있고, 짧은 코드워드는 도 11의 제2 코드워드(1132)일 수 있다.
제1 인코딩된 데이터(즉, 긴 코드워드)는 제1 로직 페이지(1362)의 길이를 초과할 수 있고, 또한 제1 물리 페이지(1312)의 길이를 초과할 수 있다(즉, 제1 인코딩된 데이터는 메모리(1304)의 제1 부분(1310)의 하나보다 많은 페이지에 걸쳐 이어질 수 있다). 제1 인코딩된 데이터는 또한, 제1 물리 페이지(1312)의 예상 에러율을 정정하는데 필요한 것보다 많은 리던던시 비트들을 포함할 수 있다. 제어기(1306)는 제1 인코딩된 데이터를 천공시키고 제1 물리 페이지(1312)에 제1 인코딩된 데이터의 제1 부분(1340)을 기록하며, 제1 인코딩된 데이터의 제2 부분(1342)을 폐기시킬 수 있다. 예를 들어, 제1 인코딩된 데이터의 제1 부분(1340)은 사용자 데이터 및 패리티 비트들을 포함할 수 있으며, 제1 인코딩된 데이터의 제2 부분(1342)은 사용자 데이터를 포함하지 않을 수 있고, 대신 "과잉" 패리티 비트들을 포함할 수 있다.
제어기(1306)는 제1 물리 페이지(1312)로부터 제1 인코딩된 데이터의 표시(1350)를 판독함으로써 메모리(1304)의 제1 부분(1310)으로부터 제1 인코딩된 데이터를 재생성하도록 구성된다. 상기 표시(1350)는 제1 물리 페이지(1312)에서 발생된 대표적인 비트 에러(1352)와 같은 에러들을 정정하도록 ECC 엔진(1308)에서 디코딩된다. 제어기(1306)는 복구된 데이터 페이지를 인코딩하도록 ECC 엔진(1308)에서 제2 인코딩 동작을 개시하도록 구성된다. 제2 인코딩 동작은 제2 인코딩된 데이터(1360)를 생성한다.
제2 인코딩된 데이터(1360)는 제1 인코딩된 데이터(즉, 제1 부분(1340) 및 제2 부분(1342))와 동일한 ECC 기법을 이용하여 생성되고, 제1 로직 페이지(1324)를 실질적으로 채우는 제1 부분(1362) 및 제2 로직 페이지(1326)의 적어도 파트를 채우는 제2 부분(1364)을 가진다. 따라서, 제2 인코딩된 데이터(1360)는 단일 물리 페이지(1312)에 걸쳐 이어지는 제1 인코딩된 데이터의 제1 부분(1340)보다 많은 페이지들(즉, 제1 로직 페이지(1324) 및 제2 로직 페이지(1326)의 부분)에 결쳐 이어진다.
도 12의 시스템과는 대조적으로, 데이터는 긴 코드워드들을 저장하기 위해 제1 부분(1310)의 복수의 페이지들을 요함 없이 메모리(1304)의 제1 부분(1310)에 일시적으로 저장될 수 있다. 대신, 페이지 길이를 초과하는 긴 코드워드들은 메모리(1304)의 제1 부분(1310)에 저장하기 위해 천공되고, 천공된 비트들은 제2 물리 페이지(1322)에서 이후의 저장을 위해 재생성된다.
도 14는 메모리(1404)의 제1 부분(1410)에 데이터를 저장하고 메모리(1404)의 제2 부분(1420)에 데이터를 저장하기에 앞서 메모리(1404)에 추가적인 리던던시 데이터를 생성하도록 하는 시스템(1400)의 실시예를 도시한다. 시스템(1400)은 호스트 디바이스(1430)에 동작적으로 연결되도록 구성된 데이터 스토리지 디바이스(1402)를 포함한다. 예를 들어, 호스트 디바이스(1430)는 도 12의 호스트 디바이스(1230)에 대응할 수 있다.
데이터 스토리지 디바이스(1402)는 ECC 엔진(1408)을 가진 제어기(1406)를 포함하고, 또한 메모리(1404)(예컨대, NAND 플래시 메모리)를 포함한다. 메모리(1404)의 제1 부분(1410)(예컨대, 바이너리 캐시로서 기능하는 SLC 부분)은 제1 물리 페이지(1412)를 포함하고, 메모리(1404)의 제2 부분(1420)(예컨대, MLC 부분)은 제2 물리 페이지(1422)를 포함한다. 제2 물리 페이지(1422)는 제1 로직 페이지(1424)를 포함하고, 또한 제1 로직 페이지(1424)보다 높은 신뢰성을 가지는 제2 로직 페이지(1426)를 포함한다.
제어기(1406)는 호스트 디바이스(1430)로부터 수신된 데이터 페이지(1432)를 인코딩하도록 인코딩 동작을 개시하도록 구성된다. 인코딩 동작은 제1 인코딩된 데이터(1440)를 생성하고 제1 물리 페이지(1412)에 상기 제1 인코딩된 데이터(1440)를 저장한다. 제1 인코딩된 데이터(1440)는 제1 물리 페이지(1412)의 사이즈를 초과하지 않는 사이즈를 가진다. 다른 실시예들에서, 제1 인코딩된 데이터(1440)는 제1 물리 페이지의 사이즈를 초과하는 사이즈를 가질 수 있고, 제어기(1406)는 도 13의 제어기(1306)와 유사한 방식으로 단일 페이지 내에 피팅되도록 제1 인코딩된 데이터(1440)를 천공시킬 수 있다.
메모리(1404)는 제1 인코딩된 데이터(1440)의 표시(1450)를 수신하고(상기 표시(1450)는 대표적인 비트 에러(1452)와 같은 하나 이상의 에러들을 포함할 수 있다), 리던던트 데이터(1474)를 생성하도록 구성된 리던던트 데이터 생성기 회로(1472)를 포함한다. 예를 들어, 리던던트 데이터 생성기 회로(1472)는 제1 인코딩된 데이터(1440)의 표시(1450)의 적어도 파트를 복사함으로써 리던던트 데이터(1474)를 생성하도록 구성된 반복 코딩 회로를 포함할 수 있다.
대안적으로 또는 추가적으로, 리던던트 데이터 생성기 회로(1472)는 리던던트 데이터(1474)를 생성하도록 (반복 코딩에 비해) 하나 이상의 복잡한 코딩 기법들을 구현하도록 구성될 수 있다. 리던던트 데이터(1474)는 제2 물리 페이지(1422)에 저장되는 제2 인코딩된 데이터(1460)를 생성하도록 추가, 연결 또는 그렇지 않으면 표시(1450)와 결합된다.
제2 인코딩된 데이터(1460)는 제1 로직 페이지(1424)를 실질적으로 채우는 제1 부분(1462) 및 제2 로직 페이지(1426)의 적어도 파트를 채우는 제2 부분(1464)을 가진다. 따라서, 제2 인코딩된 데이터(1460)는 단일 제1 물리 페이지(1412)에 걸쳐 이어지는 제1 인코딩된 데이터(1440)보다 많은 페이지들(즉, 제1 로직 페이지(1424) 및 제2 로직 페이지(1426)의 부분)에 결쳐 이어진다.
도 12의 시스템과는 대조적으로, 시스템(1400)은 제1 인코딩된 데이터(1440)를 캐싱하는 데 단일 물리 페이지(즉, 제1 물리 페이지(1412))를 사용한다. 예를 들어, ECC 엔진(1408)은 제1 물리 페이지(1412)의 페이지 사이즈를 초과하지 않는 코드워드 길이를 가지도록 수신된 데이터 페이지(1432)를 인코딩할 수 있다. 대안적으로는, ECC 엔진(1408)은 제1 물리 페이지(1412)의 페이지 사이즈를 초과하는 코드워드 길이를 가지도록 수신된 데이터 페이지(1432)를 인코딩할 수 있고(즉, 긴 코드워드), 코드워드를 천공시킬 수 있어서, 제1 부분만이 제1 물리 페이지(1412)에 저장되며 천공된 부분은 도 13의 시스템과 유사한 방식으로 폐기된다.
그러나, 도 13의 시스템과는 대조적으로, 메모리(1404)의 제1 부분(1410)(예컨대, SLC 바이너리 캐시)로부터의 정보를 메모리(1404)의 제2 부분(1420)(예컨대, MLC 파티션)으로 복사하는 것은 제어기(1406)의 개입 없이 메모리(1404) 내에서 전체적으로 수행된다. 그 결과, 메모리(1404)로부터 제어기(1406)로의 그리고 제어기(1406)로부터 다시 메모리(1404)로의 데이터 전달로부터 비롯될 수 있는 레이턴시가 회피될 수 있다.
도 15는 메모리(1505)의 제1 부분(1510)(예컨대, SLC 부분)에 캐싱될 데이터를 인코딩하고 메모리(1504)의 제2 부분(1520)(예컨대, MLC 부분)에 저장될 데이터를 인코딩하는 데 서로 다른 ECC 기법들을 이용하여 데이터를 저장하도록 하는 시스템(1500)의 실시예를 도시한다. 시스템(1500)은 호스트 디바이스(1530)에 동작적으로 연결되도록 구성된 데이터 스토리지 디바이스(1502)를 포함한다. 예를 들어, 호스트 디바이스(1530)는 도 12의 호스트 디바이스(1230)에 대응할 수 있다.
데이터 스토리지 디바이스(1502)는 ECC 엔진(1508)을 가진 제어기(1506)를 포함하고, 또한 메모리(1504)(예컨대, NAND 플래시 메모리)를 포함한다. 메모리(1504)의 제1 부분(1510)(예컨대, 바이너리 캐시로서 기능하는 SLC 부분)은 제1 물리 페이지(1512)를 포함하고, 메모리(1504)의 제2 부분(1520)(예컨대, MLC 부분)은 제2 물리 페이지(1522)를 포함한다. 제2 물리 페이지(1522)는 제1 로직 페이지(1524)를 포함하고, 또한 제1 로직 페이지(1524)보다 높은 신뢰성을 가지는 제2 로직 페이지(1526)를 포함한다.
제어기(1506)는 메모리(1504)의 제1 부분(1510)에 기록되도록 호스트 디바이스(1530)로부터 수신된 데이터 페이지(1532)를 인코딩하기 위해 인코딩 동작을 개시하도록 구성된다. 제1 인코딩 동작은 제1 ECC 기법에 따라 제1 인코딩된 데이터(1540)를 생성하도록 ECC 엔진(1508)을 구성하는 것을 포함한다. 제1 인코딩된 데이터(1540)는 제1 물리 페이지(1512)의 신뢰성에 근거하여 데이터 페이지(1532)의 복구를 가능하게 하기에 충분한 리던던시를 포함할 수 있다. 제1 인코딩된 데이터(1540)는 메모리(1504)의 제1 부분(1510)의 단일 페이지에 걸쳐 이어지도록 사이즈화(sized)될 수 있다(즉, 제1 인코딩된 데이터(1540)의 어떤 부분도 제1 물리 페이지(1512) 외의 페이지에 저장되지 않는다).
제1 물리 페이지(1512)에 제1 인코딩된 데이터(1540)를 저장한 이후에, 제1 인코딩된 데이터(1540)의 표시(1550)는 제1 물리 페이지(1512)로부터 판독되고 제어기(1506)에 제공될 수 있다. 상기 표시(1550)는 대표적인 비트 에러(1552)와 같은 하나 이상의 비트 에러들의 존재로 인해 제1 인코딩된 데이터(1540)와 다를 수 있다. 제어기(1506)는 데이터 페이지(1532)를 복구하기 위해 ECC 엔진(1508)으로 하여금 상기 표시(1550)를 디코딩하도록 구성된다.
제어기(1506)는 제2 ECC 기법에 따라 ECC 엔진(1508)에서 복구된 데이터 페이지(1532)를 인코딩하도록 구성된다. 예를 들어, 제어기(1506)가 데이터 페이지(1532)가 제1 로직 페이지(1524)에 저장되어야 함을 결정할 때, 상기 제어기(1506)는 제1 로직 페이지(1524)의 상대적으로 낮은 신뢰성을 수용하기에 충분한 리던던시를 가지는 제2 인코딩된 데이터(1560)(예컨대, 긴 코드워드)를 생성하도록 데이터 페이지(1532) 인코딩하도록 ECC 엔진(1508)을 구성한다.
제2 인코딩된 데이터(1560)(즉, 긴 코드워드)는 제1 로직 페이지(1524)의 길이를 초과할 수 있다. 제2 인코딩된 데이터(1560)의 제1 부분(1562)은 제1 로직 페이지(1524)를 실질적으로 채울 수 있고, 제2 인코딩된 데이터의 제2 부분(1564)은 제2 로직 페이지(1526)의 적어도 파트를 채울 수 있다. 따라서, 제2 인코딩된 데이터(1560)는 단일 물리 페이지(1512)에 걸쳐 이어지는 제1 인코딩된 데이터(1540)보다 많은 페이지들(즉, 제1 로직 페이지(1524) 및 제2 로직 페이지(1526)의 부분)에 결쳐 이어진다.
도 16은 인코딩된 데이터의 복수의 부분들을 기록하는 단계 및 상기 복수의 부분들 중 단일 부분으로부터 데이터를 복구하는 단계를 포함하는 방법의 실시예를 도시한다. 방법은 제1 물리 페이지 및 제2 물리 페이지를 포함하는 복수의 물리 페이지들을 가진 데이터 스토리지 디바이스에서 수행될 수 있다. 예를 들어, 방법은 도 12의 데이터 스토리지 디바이스(1202)에서 수행될 수 있다.
단계(1602)에서, 데이터 페이지는 데이터 스토리지 디바이스에 저장되도록 수신된다. 상기 데이터 페이지는 호스트 디바이스로부터 수신될 수 있으며, 데이터 스토리지 디바이스는 호스트 디바이스에 동작적으로 연결된다. 예를 들어, 데이터 스토리지 디바이스(1202)는 호스트 디바이스(1230)에 물리적으로 또는 무선으로 연결될 수 있다. 데이터 스토리지 디바이스(1202)는 상기 호스트 디바이스(1230)으로부터 데이터 페이지(1232)를 수신할 수 있다.
단계(1604)에서, 인코딩 동작이 데이터 페이지를 인코딩하도록 개시된다. 상기 인코딩 동작은 제1 인코딩된 데이터를 생성한다. 예를 들어, 제1 인코딩된 데이터는 도 11의 제1 코드워드(1130)에 대응할 수 있다.
단계(1606)에서, 제1 인코딩된 데이터의 제1 부분은 제1 물리 페이지에 저장된다. 단계(1608)에서, 제2 물리 페이지에 제1 인코딩된 데이터의 제2 부분을 저장하는 것이 개시된다. 제1 인코딩된 데이터의 제2 부분은 패리티 비트들만을 포함할 수 있다. 예를 들어, 데이터 스토리지 디바이스는 단일-레벨 셀(SLC) 부분 및 다중-레벨 셀(MLC) 부분을 가진 플래시 메모리를 포함할 수 있다. 제1 물리 페이지 및 제2 물리 페이지는 플래시 메모리의 다중-레벨 셀(MLC) 부분 내의 제3 물리 페이지에 복사될 때까지 수신된 데이터를 저장하기 위한 SLC 부분(예컨대, 바이너리 캐시)에 있을 수 있다.
메시지가 도 12의 메시지(1248)와 같이, 제1 인코딩된 데이터의 제1 부분을 저장함에 응답하여 호스트 디바이스에 보내질 수 있다. 상기 메시지는 데이터 페이지가 데이터 스토리지 디바이스에 성공적으로 저장됨을 나타낼 수 있다. 상기 메시지는 제1 인코딩된 데이터의 제2 부분의 저장을 완료하기에 앞서 보내질 수 있다. 상기 메시지는 제2 부분이 저장되기 전에 보내질 수 있는 바, 그 이유는 데이터 페이지의 저장된 제1 부분이 제1 물리 페이지의 신뢰도에 따라 데이터 페이지를 복구하기에 충분한 리던던시를 가지기 때문이다.
단계(1610)에서, 디코딩 동작이 데이터 페이지를 복구하도록 개시된다. 예를 들어, 디코딩 동작은 제1 인코딩된 데이터의 제2 부분을 기록하는 것을 완료하기에 앞서 파워 차단 이벤트 이후에 파워의 재개에 응답하여 개시될 수 있다. 디코딩 동작은 제2 물리 페이지로부터 어떤 데이터를 사용함 없이 제1 물리 페이지로부터 판독되는 제1 인코딩된 데이터의 제1 부분의 표시를 사용한다.
디코딩 동작을 통해 데이터 페이지를 복구한 이후에, 제2 인코딩 동작이 데이터 페이지를 인코딩하도록 개시될 수 있다. 제2 인코딩 동작은 제2 인코딩된 데이터를 생성할 수 있고, 제2 인코딩된 데이터의 제1 부분은 제3 물리 페이지에 저장될 수 있다. 예를 들어, 제2 인코딩된 데이터의 제1 부분은 도 12의 제3 물리 페이지(1222) 내의 제1 로직 페이지(1224)에 저장된 제1 부분(1240)의 표시(1262)일 수 있다. 제2 인코딩된 데이터의 제2 부분은 도 12의 제2 로직 페이지(1226)에 저장된 제2 부분(1242)의 표시(1264)와 같이, 제3 물리 페이지 내의 제2 로직 페이지에 저장될 수 있다.
제1 인코딩된 데이터는 제1 물리 페이지의 사이즈를 초과하는 길이를 가질 수 있고, 제2 인코딩된 데이터는 제1 로직 페이지의 사이즈를 초과하는 길이를 가질 수 있다. 도 11 내지 12에 관하여 기술된 바와 같이, 제1 로직 페이지가 제2 로직 페이지보다 낮은 신뢰성을 가질 수 있기 때문에, 추가적인 패리티 비트들이 데이터 페이지를 인코딩하는 데 사용될 수 있어서, 코드워드로 하여금 제1 로직 페이지 및 제1 물리 페이지의 사이즈를 초과하는 길이를 가지게끔 한다.
도 17은 메모리 다이 내에 추가적인 리던던트 데이터를 생성하는 단계를 포함하는 방법의 실시예를 도시한다. 방법은 제어기 및 메모리 다이를 가진 데이터 스토리지 디바이스에서 수행될 수 있고, 여기서 상기 제어기는 에러 정정 코딩(ECC) 엔진 및 메모리 다이를 포함하고, 상기 메모리 다이는 제1 물리 페이지 및 제2 물리 페이지를 포함하는 복수의 물리 페이지들을 포함한다. 예를 들어, 방법은 도 14의 데이터 스토리지 디바이스(1402)에서 수행될 수 있다.
단계(1702)에서, 데이터 스토리지 디바이스에 저장될 데이터 페이지가 수신된다. 데이터 페이지는 호스트 디바이스로부터 수신되며, 데이터 스토리지 디바이스는 상기 호스트 디바이스에 동작적으로 연결된다. 예를 들어, 데이터 스토리지 디바이스(1402)는 호스트 디바이스(1430)에 물리적으로 또는 무선으로 연결될 수 있다. 데이터 스토리지 디바이스(1402)는 호스트 디바이스(1430)로부터 데이터 페이지(1432)를 수신할 수 있다.
단계(1704)에서, 인코딩 동작이 데이터 페이지를 인코딩하도록 ECC 엔진에서 개시될 수 있다. 인코딩 동작은 도 14의 제1 인코딩된 데이터(1440)와 같은 제1 인코딩 데이터를 생성한다. 단계(1706)에서, 제1 인코딩된 데이터의 적어도 부분은 메모리 다이에서 제1 물리 페이지에 저장된다.
단계(1708)에서, 제2 인코딩된 데이터가 메모리 다이에서 생성될 수 있다. 제2 인코딩된 데이터는, 도 14의 표시(1450)와 같은, 제1 물리 페이지로부터의 제1 인코딩된 데이터의 부분의 표시를 판독하고, 제1 인코딩된 데이터의 부분의 표시에 근거하여 메모리 다이에서 리던던트 데이터를 생성함으로써 생성될 수 있다.
예를 들어, 리던던트 데이터는 도 14의 리던던트 데이터 생성기 회로(1472)에서 생성될 수 있다. 리던던트 데이터는 제1 인코딩된 데이터의 부분의 표시의 적어도 파트를 복사함으로써 메모리 다이에서 생성될 수 있다. 단계(1710)에서, 제2 인코딩된 데이터는 제2 물리 페이지에 저장된다.
예를 들어, SLC 바이너리 캐시는 코드워드들의 일시적인 저장을 위해 사용될 수 있다. 예시를 위해, 제1 인코딩된 데이터는 플래시 단일-레벨 셀(SLC) 페이지에서 제1 물리 페이지에 저장될 수 있고, 제2 인코딩된 데이터는 복수의 플래시 다중-레벨 셀(MLC) 로직 페이지들에서 제2 물리 페이지에 저장될 수 있다. 리던던트 데이터가 메모리 다이에서 생성되기 때문에, 제어기 개입(및 메모리 다이로부터 제어기로의 그리고 다시 메모리 다이로의 데이터 전달로 인한 대응하는 지연)이 회피될 수 있다.
도 18은 메모리에 데이터를 기록하는 방법의 실시예를 도시한다. 방법은 복수의 물리 페이지들(예컨대, 제1 물리 페이지 및 제2 물리 페이지)을 가진 데이터 스토리지 디바이스에서 수행될 수 있다.
단계(1802)에서, 데이터 페이지가 데이터 스토리지 디바이스에 저장되도록 수신된다. 상기 데이터 페이지는 호스트 디바이스로부터 수신되며, 데이터 스토리지 디바이스는 상기 호스트 디바이스에 동작적으로 연결된다. 예를 들어, 데이터 페이지는 도 13의 호스트 디바이스(1330)로부터 수신된 데이터 페이지(1332)일 수 있다. 다른 예로서, 데이터 페이지는 도 15의 호스트 디바이스(1530)로부터 수신된 데이터 페이지(1532)일 수 있다.
단계(1804)에서, 제1 인코딩 동작이 데이터 페이지를 인코딩하도록 개시된다. 제1 인코딩 동작은 제1 인코딩된 데이터를 생성한다. 예를 들어, 제1 인코딩 동작은 도 13의 ECC 엔진(1308)에서 수행될 수 있다. 다른 예로서, 제1 인코딩 동작은 도 15의 ECC 엔진(1508)에서 수행될 수 있다.
단계(1806)에서, 제1 인코딩된 데이터의 적어도 부분은 제1 물리 페이지에 저장된다. 제1 인코딩된 데이터의 전부는 도 15의 제1 인코딩된 데이터(1540)와 같이 제1 물리 페이지에 저장될 수 있다. 대안적으로, 제1 인코딩된 데이터는 도 12의 부분들(1240 내지 1242) 또는 도 13의 부분들(1340 내지 1342)과 같은 제1 부분 및 제2 부분을 포함할 수 있다. 제1 부분은 제1 물리 페이지에 저장될 수 있고, 제2 부분은 폐기될 수 있다.
단계(1808)에서, 제1 물리 페이지로부터 판독된 제1 인코딩된 데이터의 부분의 표시는 데이터 페이지를 복구하도록 디코딩된다. 예를 들어, 표시(1350)는 도 13의 ECC 엔진(1308)에서 디코딩될 수 있다. 다른 예로서, 표시(1550)는 도 15의 ECC 엔진(1508)에서 디코딩될 수 있다.
단계(1810)에서, 제2 인코딩 동작이 데이터 페이지를 인코딩하도록 개시된다. 제2 인코딩 동작은 제2 인코딩된 데이터를 생성한다. 예를 들어, 제2 인코딩 동작은 제2 인코딩된 데이터(1360)를 생성하도록 도 13의 ECC 엔진(1308)에서 수행될 수 있다. 다른 예로서, 제2 인코딩 동작은 제2 인코딩된 데이터(1560)를 생성하도록 도 15의 ECC 엔진(1508)에서 수행될 수 있다.
단계(1812)에서, 제2 인코딩된 데이터는 제2 물리 페이지에 저장된다. 제2 인코딩된 데이터는 제1 인코딩된 데이터의 부분보다 많은 페이지들에 걸쳐 이어진다. 제1 인코딩된 데이터의 부분은 제2 물리 페이지보다 신뢰성있는 플래시 페이지에서의 제1 물리 페이지에 저장될 수 있다. 예를 들어, 바이너리 캐싱 구현에서, 제1 인코딩된 데이터의 부분은 플래시 단일 레벨 셀(SLC) 페이지에서의 제1 물리 페이지에 저장될 수 있고, 제2 인코딩된 데이터는 복수의 플래시 다중 레벨 셀(MLC) 로직 페이지들에서의 제2 물리 페이지에 저장될 수 있다.
일부 실시예들에서, 제1 인코딩 동작은 제2 인코딩 동작과 동일한 에러 정정 코딩(ECC) 기법을 사용한다. 예를 들어, 도 13의 데이터 스토리지 디바이스(1302)는 제1 인코딩된 데이터(1340) 및 제2 인코딩된 데이터(1360)를 인코딩하는 데 동일한 ECC 기법을 사용한다. 다른 실시예들에서, 제1 인코딩 동작은 제1 에러 정정 코딩(ECC) 기법을 사용하고, 제2 인코딩 동작은 상기 제1 ECC 기법과 다른 제2 ECC 기법을 사용한다. 예를 들어, 도 15의 데이터 스토리지 디바이스(1502)는 제1 인코딩된 데이터(1540)를 인코딩하고 제2 인코딩된 데이터(1560)를 인코딩하는 데 서로 다른 ECC 기법들을 사용한다.
페이지 신뢰성에 스토리지 용량을 매칭
동일하지 않은 페이지 신뢰성들을 수용하도록 하는 다른 기법은 더 신뢰성있는 페이지들 상에 정보를 더 저장하고 덜 신뢰성있는 페이지들에 정보를 덜 저장하는 것을 포함한다. 동일한 코드 길이들을 가지지만 가능하게는 서로 다른 코드율을 가진 서로 다른 코드들을 포함하는 다중-레벨-코딩(MLC) 기법은 워드 라인의 서로 다른 페이지들에 대해 사용될 수 있다. 워드 라인의 페이지들로의 이러한 MLC 기법의 연결된 코드워드들의 두 가지 가능한 매핑들이 도 5 및 6에 도시된다. 플래시 메모리 관리는 서로 다른 페이지들이 서로 다른 양의 정보를 저장하기 때문에 이러한 기법들을 위해 수정될 수 있다.
대안적인 기법에서, 각각의 페이지는 동일한 양의 사용자 데이터(예컨대, 8KB)를 저장할 수 있지만, 서로 다른 양의 관리 데이터, 제어 데이터 또는 어떤 다른 부가 정보를 저장할 수 있다. (사용자 데이터에 대해 적은 리던던시를 사용하는 것의 결과로서 높은 스토리지 용량을 가질 수 있는) 워드 라인의 더 신뢰성있는 페이지들 상에 저장될 수 있는 부가 정보의 예는 저장된 데이터에 관한 또는 워드 라인의 셀 전압 분포에 관한 통계 정보(statistics information)와 같은 통계 정보이다. 이러한 부가 정보는 판독 레벨을 조정하는 것, 에러 정정 능력을 향상시키는 것, 데이터를 관리하는 것의 목적들, 하나 이상의 다른 목적들 또는 이들의 어떤 조합을 위해 사용될 수 있다. 관리 데이터, 제어 데이터 또는 부가 정보는 사용자 정보와 별개로 코딩될 수 있고, 동일한 코드워드 내에 사용자 정보와 함께 코딩될 필요가 없다.
셰이핑을 위해 신뢰성있는 페이지들 내의 리던던트 셀들의 일부를 이용하는 것
동일하지 않은 페이지 신뢰성들은 프로그래밍된 상태들에 걸친 확률 분포를 셰이핑하기 위해 더 신뢰성있는 페이지들의 증가된 스토리지 용량(사용자 데이터를 인코딩하기 위한 적은 패리티 비트들로 인해 증가된 스토리지 용량)을 사용함으로써 해결될 수 있다. 확률 분포의 적절한 셰이핑은 내구성 강화, 에러율 감소, "노이즈" 저감 또는 이들의 어떤 조합을 위해 사용될 수 있다. MLC 워드 라인의 더 신뢰성있는 페이지들은 MLC 워드 라인의 덜 신뢰성있는 페이지(들)과 동일한 신뢰성을 제공하는 데 적은 ECC 리던던시를 요하기 때문에, 더 신뢰성있는 페이지들에서의 사용되지 않은 리던던시는 "셰이핑" 리던던시로서 사용될 수 있다. "셰이핑" 리던던시는 프로그래밍된 상태들에 걸친 지정된 비-균일 확률 분포를 유발할 수 있다. 예를 들어, 높은(high) 그리고 낮은(low) 상태들은 덜 빈번하게 프로그래밍될 수 있는 바, 이는 또한, 셀들의 마모를 감소시키고 특정 프로그램 교란 효과들을 경감시킨다.
도 19는 페이지 신뢰성에 근거하여 셰이핑 리던던시를 사용해서 데이터를 저장하는 예(1900)를 도시한다. 제1 데이터(데이터 1)를 표시하는 비트들의 제1 그룹(1902) 및 제2 데이터(데이터 2)를 표시하는 비트들의 제2 그룹(1904)을 포함하는 데이터는 플래시 메모리와 같은 메모리에서 수신될 수 있다. 제1 그룹(1902) 및 제2 그룹(1904)의 각각은 MLC 메모리의 단일 워드 라인에 저장될 N개의 비트들을 포함할 수 있다.
셰이핑 인코딩 동작(1910)이 비트들의 제3 그룹(1916)을 생성하도록 비트들의 제2 그룹(1904) 상에서 수행된다. 비트들의 제2 그룹(1904)은, 비트들의 제2 그룹(1904)의 비트 값들의 균일한 확률 분포(1912)로 도시된 바와 같이 비트 위치에서 발생된 "0" 비트값의 확률(p0)이 "1" 비트 값의 확률(p1)과 실질적으로 동일하도록 인코딩되었을 수 있다. 균일한 확률 분포(1912)는, "0" 비트 값의 확률을 "p0"로 라벨링된 막대(bar)의 높이로 예시하고, "1"의 확률을 "p1"으로 라벨링된 막대의 높이로 예시하는 막대그래프로서 도시된다. 변환(1913)은 비트들의 제3 그룹(1916)에서의 비트 값들의 비-균일한 확률 분포(1914)를 생성한다. 비-균일한 확률 분포(1914)는 비트들의 제3 그룹(1916)에서의 "0" 비트의 확률이 "1" 비트의 확률보다 큼을 도시한다.
비트들의 제3 그룹(1916)은 M개(M > N)의 비트들을 가지고, 비트들의 제2 그룹(1904)에 부가된 추가적인 비트들(셰이핑 패리티)(1918)로서 도시된다. 그러나, 비트들의 제3 그룹(1916)은 부가된 셰이핑 패리티(1918)를 가진 비트들의 제2 그룹(1904)을 포함할 필요가 없고 대신 변환된 데이터 비트들로 이루어질 수 있음이 이해되어야만 한다.
제1 ECC 인코딩 동작(1920)은 비트들의 제1 그룹(1902) 상에서 수행되고, 제2 ECC 인코딩 동작(1922)은 비트들의 제3 그룹(1916) 상에서 수행된다. 부가된 제1 ECC 패리티 비트들(ECC 패리티 1)을 포함하는 제1 데이터(데이터 1)로서 도시된, 제1 ECC 인코딩 동작(1920)으로부터 비롯된 데이터는 저장 동작(1924)을 통해 제1 로직 페이지(1932)에 저장된다. 제2 데이터(데이터 2), 셰이핑 패리티(1918) 및 제2 ECC 패리티 비트들(ECC 패리티 2)로서 도시된, 제2 ECC 인코딩 동작(1922)으로부터 비롯된 데이터는 저장 동작(1924)을 통해 제2 로직 페이지(1936)에 저장된다.
제1 로직 페이지(1932)가 제2 로직 페이지(1936)의 제2 에러율(1938)보다 큰 제1 에러율(1934)을 가지기 때문에, 제1 데이터는 제2 데이터를 보호하는 경우보다 많은 ECC 패리티로 보호될 수 있다. 제1 ECC 패리티 비트들의 비트들의 수(P1)는 제2 ECC 패리티의 비트들의 수(P2) 및 셰이핑 패리티(1948)의 비트들의 수의 합과 동일할 수 있다. 제2 ECC 패리티는 제1 ECC 패리티가 제1 에러율(1934)에 근거하여 제1 데이터에 제공하는 것과 실질적으로 동일한 에러 보호를 제2 에러율(1938)에 근거하여 제2 데이터에 제공할 수 있다.
제1 로직 페이지(1932) 및 제2 로직 페이지(1936)는 MLC 메모리의 물리 페이지와 같은 스토리지 요소들의 그룹(1930) 내에 있다. 스토리지 요소들의 그룹(1930)은 (색인들 c1, ..., cm을 가지는 셀들로서 도시된) 플래시 메모리 셀들과 같은 M 개의 스토리지 요소들을 포함한다. 각각의 스토리지 요소는 복수의 비트들을 표시하는 상태(s0, s1, 등)를 저장한다. 예를 들어, 제1 스토리지 요소 c1은 제1 로직 페이지에 대한 제1 비트 및 제2 로직 페이지에 대한 제2 비트를 표시하는 상태 s1을 가진다.
"0" 비트들의 확률을 증가시키고 "1" 비트들의 확률을 감소시킴으로서, 셰이핑 인코딩 동작(1910)은 스토리지 요소들의 그룹(1930)의 상태들의 분포에 영향을 끼친다. 도 19가 두 개의 로직 페이지들(1932, 1936)을 도시하지만, 다른 구현들은 셋 이상의 로직 페이지들을 포함할 수 있다. 예를 들어, M = 8개의 상태 셀들을 가진 플래시 메모리가 표 5의 그레이 매핑을 사용할 수 있다.
Figure pct00006
표 5: 타입 2-2-3 페이지 신뢰성들을 가진 M = 8인 경우의 매핑
각각의 페이지는 8KB의 사용자 데이터를 저장하고 1KB의 리던던시를 가질 수 있다(즉, 워드 라인은 8KB+1KB = 9KB 셀들을 포함하고, 1KB=1024 바이트이다). 어떻게 사용자 데이터가 워드 라인의 페이지들 내로 인코딩될 수 있는 지(예컨대, 페이지 당 8KB) 그리고 어떻게 리던던시가 할당되는지의 예들이 도 19 및 20에 관하여 기술된다. 도 19의 도시된 예에서, 상위 페이지(즉, 제2 로직 페이지(1936)보다 덜 신뢰성있는 제1 로직 페이지(1932))의 경우, 전체 리던던시 영역은 ECC 리던던시를 위해 사용된다. 더 신뢰성있는 하위 및/또는 중간 페이지들의 경우, 리던던시 영역은 도 20에 관하여 기술된 바와 같이, ECC 리던던시 및 셰이핑 리던던시 둘 모두를 위해 사용된다. 정보 이론적 분석은, 모든 세 개의 페이지들에 대해 동일한 신뢰성을 달성하기 위해서 상위 페이지의 에러율의 단 2/3인 에러율을 보이는 하위 및 중간 페이지들이 (이용가능한 1KB 중) 약 683B의 리던던시만을 요함을 보여준다. 그 결과, 약 341B의 리던던시는 셰이핑에 이용가능하다.
이용가능한 리던던시는 다음과 같이 사용될 수 있다. 하위 또는 중간 페이지들 상에 저장된 8KB 사용자 데이터는 셰이핑 코드로 먼저 인코딩되는 바, 상기 셰이핑 코드는 사용자 데이터를 8533B (=8KB+341B) 사이즈의 "셰이핑된" 워드로 매핑하고, 상기 셰이핑된 워드는 본래의 사용자 데이터에 비해 "1"들의 감소된 비(fraction)를 가진다(대안적으로는, 셰이핑은 "0"들의 비를 감소시키는 데 사용될 수 있다). 그 다음, "셰이핑된" 워드는 ECC 인코더를 사용하여 9KB 코드워드(8533B + 683B)로 인코딩된다. 사용자 데이터가 랜덤이면(즉, "0"들 및 "1"들에 대해 동일한 확률), 8192B의 사용자 데이터에 대한 341B의 셰이핑 리던던시는 코드워드에서 "1"들의 비(fraction) p를 평균 50% 내지 약 38% 감소시킬 수 있다 (
Figure pct00007
, 여기서
Figure pct00008
). "셰이핑된" 셀들의 프로그래밍된 상태들에 대한 결과적인 확률 분포는
Figure pct00009
로 주어질 수 있다.
이 예에서, ECC 리던던시 셀들이 "셰이핑"되지 않기 때문에, 셀들의 프로그래밍된 상태들에 대한 분포는 실질적으로 균일(U = [1/8 1/8 1/8 1/8 1/8 1/8 1/8 1/8])할 수 있다. 따라서, 워드 라인에 따라 프로그래밍된 상태들에 대한 전체 분포는
Figure pct00010
일 수 있다.
따라서, 두 개의 극한 상태(extreme state)들(예컨대, 표 5의 상태들 'Er' 및 'G')에 대한 확률은 실질적으로 감소될 수 있다. 초 극한 상태(most extreme state)들의 감소된 확률은 감소된 셀 마모(및 따라서 높은 사이클링 및 데이터 보존 성능) 및 감소된 프로그램 교란 효과들(및 따라서 감소된 에러율)을 가능하게 한다.
도 20은 페이지 신뢰성에 근거하여 셰이핑 리던던시를 이용해서 데이터를 저장하도록 하는 시스템을 도시한다. 시스템(2000)은 호스트 디바이스(2030)에 동작적으로 연결되도록 구성된 데이터 스토리지 디바이스(2002)를 포함한다. 예를 들어, 호스트 디바이스(2030)는 도 12의 호스트 디바이스(1230)에 대응할 수 있다.
데이터 스토리지 디바이스(2002)는 셰이핑 인코더(2008) 및 ECC 엔진(2010)을 가진 제어기(2006)를 포함한다. 데이터 스토리지 디바이스(2002)는 또한, 플래시 다중-레벨 셀(MLC) 메모리와 같은 메모리(2004)를 포함한다. 메모리(2004)는 플래시 MLC 셀들과 같은 스토리지 요소들(2020) 및 대표적인 그룹(2022)과 같은 스토리지 요소들의 하나 이상의 그룹들을 포함한다. 예시를 위해, 그룹(2022)은 대표적인 3-비트 MLC 워드 라인(2040)과 같은 MLC 워드 라인일 수 있다.
셰이핑 인코더(2008)는 "1" 및 "0" 값들의 제1 분포를 가진 입력 데이터를 수신하고 "1" 및 "0" 값들의 수정된 분포를 가진 출력을 생성하도록 구성된다. 셰이핑 인코더(2008)는 셰이핑 패리티 비트들을 생성하는 셰이핑 동작을 적용하도록 구성되어서, 결과적인 출력 데이터(예컨대, 부가된 셰이핑 패리티를 가진 입력 데이터)는 비트 값들의 비-균일한 확률 분포를 가진다. 셰이핑 인코딩 동작은 MLC 메모리(2004)의 물리 페이지의 개별적인 셀들이 중간 상태(intermediate state)들 로 프로그래밍될 수 있는 가능성(likelihood)을 증가시킬 수 있고, MLC 메모리(2004)의 물리 페이지의 개별적인 셀들이 최하위 상태 또는 최상위 상태 또는 이 둘 모두로 프로그래밍될 수 있는 가능성을 감소시킬 수 있다. 예를 들어, 셰이핑 인코더(2008)는 도 19의 셰이핑 인코딩 동작(1910)을 수행하도록 구성될 수 있다.
제어기(2006)는 호스트 디바이스(2030)로부터 사용자 데이터(2032)를 수신하도록 구성된다. 사용자 데이터(2032)는 MLC 워드 라인(WL)의 상위 페이지에 저장될 비트들의 제1 그룹(2050)(데이터 1), MLC 워드 라인의 중간 페이지에 저장될 비트들의 제2 그룹(2052)(데이터 2) 및 MLC 워드 라인의 하위 페이지에 저장될 비트들의 제3 그룹(2054)(데이터 3)을 포함한다. 상위 페이지는 중간 및 하위 페이지들보다 높은 에러율을 가진다.
제어기(2006)는 제2 그룹(2052) 및 제3 그룹(2054) 상에서 셰이핑 인코딩 동작을 수행하지만 제1 그룹(2050) 상에서는 수행하지 않도록 구성된다. 제2 그룹(2052) 및 제3 그룹(2054)은 셰이핑된 제2 데이터(2056) 및 셰이핑된 제3 데이터(2058)를 각각 생성하도록 셰이핑 인코더(2008)에 제공된다. 셰이핑된 제2 데이터(2056)는 제2 그룹(2052)보다 많은 비트들을 포함하고 셰이핑된 제3 데이터(2058)는 제3 그룹(2054)보다 많은 비트들을 포함한다.
제어기(2006)는 셰이핑 인코더(2008)를 바이패싱하여 ECC 엔진(2010)에 제1 그룹(2050)을 제공하도록 구성된다. ECC 엔진(2010)은 ECC 인코딩된 제1 데이터(2060)를 형성하기 위해 데이터 비트들의 제1 그룹(2050)에 근거하여 제1 ECC 패리티(ECC 패리티 1)를 생성하는 제1 ECC 인코딩 동작(2012)을 적용한다. 제어기(2006)는 ECC 인코딩된 셰이핑된 제2 데이터(2062)를 형성하도록 제2 ECC 패리티(ECC 패리티 2)를 생성하는 제2 ECC 인코딩 동작(2014)을 적용하도록 ECC 엔진(2010)에 셰이핑된 제2 그룹(2056)을 제공하도록 구성된다. 마찬가지로, 상기 셰이핑된 제3 그룹(2058)은 ECC 인코딩된 셰이핑된 제3 데이터(2064)를 형성하기 위해 제3 ECC 패리티(ECC 패리티 3)를 생성하도록 ECC 엔진(2010)에 제공된다.
ECC 인코딩된 제1 데이터(2060)의 제1 ECC 패리티 비트들은 MLC 워드 라인(2040)의 덜 신뢰성있는 상위 페이지에 대한 양호한 에러 정정 능력을 제공하기 위해 ECC 인코딩된 셰이핑된 제2 데이터(2062)의 제2 ECC 패리티 비트들보다 많은 비트들을 포함한다. 예를 들어, 제1 ECC 패리티 비트들은 상위 로직 페이지 내의 최대 제1 개수의 에러들의 정정을 할 수 있고, 제2 ECC 패리티 비트들은 중간 로직 페이지 내의 최대 제2 개수의 에러들의 정정을 할 수 있다. 상위 로직 페이지 내의 에러들의 개수가 제1 개수를 초과할 제1 확률은 중간 로직 페이지 내의 에러들의 개수가 제2 개수를 초과할 제2 확률과 실질적으로 동일할 수 있다. 중간 및 하위 페이지들이 상위 페이지와 동일한 양의 에러 정정 능력에 대해 더 적은 패리티를 요하기 때문에, 셰이핑 인코더(2008)에 의해 생성된 셰이핑 패리티는 MLC 워드 라인(2040)의 패리티 부분에 포함될 수 있다.
제어기(2006)는 MLC 메모리(2004)의 물리 페이지 내에 포함된 제1 로직 페이지(예컨대, 상위 페이지)에 저장되도록 MLC 메모리(2004)에 제1 ECC 인코딩된 데이터(2060)(즉, 제1 그룹(2050) 및 상기 제1 그룹(2050)에 대응하는 제1 에러 정정 코딩(ECC) 패리티 비트들)를 보내도록 구성된다. 제어기(2006)는 MLC 메모리(2004)의 물리 페이지 내에 포함된 제2 로직 페이지(예컨대, 중간 페이지) 및 제3 로직 페이지(예컨대, 하위 페이지)에 각각 저장되도록 MLC 메모리(2004)에 ECC 인코딩된 셰이핑된 제2 데이터(2062) 및 ECC 인코딩된 셰이핑된 제3 데이터(2064)를 보내도록 구성된다.
도 21은 가령, 도 20의 시스템에 의해 인코딩 및 저장된 데이터를 판독 및 디코딩하도록, 페이지 신뢰성에 근거하여 셰이핑 리던던시를 사용해서 셰이핑된 데이터를 복구하도록 하는 시스템을 도시한다. 시스템(2100)은 호스트 디바이스(2130)에 동작적으로 연결되도록 구성된 데이터 스토리지 디바이스(2102)를 포함한다. 데이터 스토리지 디바이스(2102)는 제어기(2106)에 연결된 플래시 MLC 메모리와 같은 메모리(2104)를 포함한다. 메모리(2104)는 플래시 MLC 셀들과 같은 스토리지 요소들(2120) 및 대표적인 그룹(2122)(예컨대, MLC 워드 라인)과 같은 스토리지 요소들의 하나 이상의 그룹들을 포함한다. 제어기(2106)는 ECC 엔진(2110) 및 셰이핑 디코더(2108)를 포함한다. 데이터 스토리지 디바이스(2102) 및 호스트 디바이스(2130)는 도 20의 데이터 스토리지 디바이스(2002) 및 호스트 디바이스(2030)에 각각 대응할 수 있다.
MLC 메모리(2104)의 대표적인 3-비트 MLC 워드 라인(2140)이 제어기(2106)에 의해 판독될 수 있는 상위 페이지, 중간 페이지 및 하위 페이지를 가진 것으로 도시된다. 제어기(2106)는 3-비트 MLC 워드 라인(2140)의 상위 페이지와 같은, MLC 메모리(2104)의 물리 페이지 내에 있는 제1 로직 페이지로부터 제1 데이터(데이터 1) 및 제1 ECC 패리티 비트들(ECC 패리티 1)의 제1 표시(2160)를 검색하도록 구성된다. 제어기(2106)는 3-비트 MLC 워드 라인(2140)의 중간 페이지와 같은, MLC 메모리의 물리 페이지 내에 있는 제2 로직 페이지로부터 셰이핑된 제2 데이터(데이터 2 및 셰이핑 패리티 2) 및 제2 ECC 패리티 비트들(ECC 패리티 2)의 제2 표시(2162)를 검색하도록 구성된다. 제어기(2106)는 3-비트 MLC 워드 라인(2140)의 하위 페이지와 같은, MLC 메모리의 물리 페이지 내에 있는 제3 로직 페이지로부터 제3 데이터(데이터 3 및 셰이핑 패리티 3) 및 제3 ECC 패리티 비트들(ECC 패리티 3)의 제3 표시(2164)를 검색하도록 구성된다.
표시들(2160 내지 2164)은 예시적인 목적들을 위해 3-비트 MLC 워드 라인(2140)의 로직 페이지들의 사선 부분(hatched portion)들로 나타내진 하나 이상의 비트 에러들을 포함할 수 있다. 제어기(2106)는 제1 데이터(2150)를 복구하도록 ECC 엔진(2110)에서 제1 표시(2160)의 제1 ECC 디코딩 동작(2112)을 개시하도록 구성된다. 제어기(2106)는 셰이핑된 제2 데이터(2156)를 복구하도록 제2 표시(2162)의 제2 ECC 디코딩 동작을 개시하고 셰이핑된 제3 데이터(2158)를 복구하도록 제3 표시(2164)의 제2 ECC 디코딩 동작을 개시하도록 구성된다.
제어기(2106)는 제2 데이터(2152)를 생성하도록 셰이핑된 제2 데이터(2156) 상에서 셰이핑 디코딩 동작을 개시하고 제3 데이터(2154)를 생성하도록 셰이핑된 제3 데이터(2158) 상에서 셰이핑 디코딩 동작을 개시하도록 구성된다. 제2 데이터(2152)는 셰이핑된 제2 데이터(2156)보다 적은 비트들을 가지고, 제3 데이터(2154)는 셰이핑된 제3 데이터(2154)보다 적은 비트들을 가진다. 셰이핑 디코딩 동작은 셰이핑 디코더(2108)에서 수행되고, 제2 데이터(2152) 내의 비트 값들의 균일한 확률 분포 및 제3 데이터(2154) 내의 비트 값들의 균일한 확률 분포를 생성하도록 구성된다. 제어기(2106)는 호스트 디바이스(2130)에 제1 데이터(2150), 제2 데이터(2152) 및 제3 데이터(2154)를 사용자 데이터(2132)로서 제공하도록 구성될 수 있다.
상위 페이지가 중간 페이지 및 하위 페이지보다 높은 에러율을 가지기 때문에, 제1 ECC 패리티는 제2 ECC 패리티보다 많은 비트들을 포함하고 제3 ECC 패리티 보다 많은 비트들을 포함한다. 예를 들어, 제1 ECC 패리티는 제1 표시(2160) 내의 최대 제1 개수의 에러들의 정정을 할 수 있고, 제2 ECC 패리티는 제2 표시(2162) 내의 최대 제2 개수의 에러들의 정정을 할 수 있는 바, 여기서 제1 개수는 제2 개수보다 많다. 덜 신뢰성있는 상위 페이지에 대해 많은 패리티를 제공하고 더 신뢰성있는 중간 페이지에 대해 적은 패리티를 제공함으로써, 제1 표시(2160) 내의 에러들의 수가 제1 개수를 초과할 제1 확률은 제2 표시(2162) 내의 에러들의 수가 제2 개수를 초과할 제2 확률과 실질적으로 동일할 수 있다. 그 결과, 중간 및 하위 로직 페이지들의 각각은 상위 로직 페이지와 동일하게 정정불가능한 에러들을 가질 기회를 가질 수 있으며, 감소된 패리티로 인한 워드 라인 내의 여분의 공간(extra space)은 MLC 메모리(2104)에서 마모 및/또는 프로그램 교란 효과들을 감소시키도록 데이터를 셰이핑하는 데 사용될 수 있다.
도 22는 페이지 신뢰성에 근거하여 셰이핑 리던던시를 사용해서 데이터를 기록하는 방법의 특별한 실시예를 도시한다. 데이터를 기록하는 방법은 플래시 다중-레벨 셀(MLC) 메모리를 가진 데이터 스토리지 디바이스에서 수행될 수 있다. 예를 들어, 방법은 도 20의 제어기(2006)에 의해 수행될 수 있다.
단계(2202)에서, 비트들의 제1 그룹 및 비트들의 제2 그룹을 포함하는 데이터가 수신된다. 예를 들어, 비트들의 제1 그룹은 도 20의 제1 데이터(2050)일 수 있고, 비트들의 제2 그룹은 제2 데이터(2052)일 수 있다.
단계(2204)에서, 셰이핑 인코딩 동작이 비트들의 제3 그룹을 생성하도록 비트들의 제2 그룹 상에서 개시된다. 예를 들어, 비트들의 제3 그룹은 도 20의 셰이핑된 제2 데이터(2056)일 수 있다. 비트들의 제3 그룹은 비트들의 제2 그룹보다 많은 비트들을 가진다. 셰이핑 인코딩 동작은 비트들의 제3 그룹에서 비트 값들의 비-균일한 확률 분포를 생성하도록 구성된다.
단계(2206)에서, 비트들의 제1 그룹 및 상기 비트들의 제1 그룹에 대응하는 제1 에러 정정 코딩(ECC) 패리티 비트들(예컨대, 도 20의 ECC 인코딩된 제1 데이터(2060))은 MLC 메모리의 물리 페이지 내에 있는 제1 로직 페이지에 저장되고, 비트들의 제3 그룹 및 상기 비트들의 제3 그룹에 대응하는 제2 ECC 패리티 비트들(예컨대, 도 20의 ECC 인코딩된 셰이핑된 제2 데이터(2062))은 MLC 메모리의 물리 페이지 내에 있는 제2 로직 페이지에 저장된다.
제1 로직 페이지는 제1 에러율과 관련될 수 있고, 제2 로직 페이지는 상기 제1 에러율보다 작은 제2 에러율과 관련될 수 있다. 제1 ECC 패리티 비트들은 제2 ECC 패리티 비트들보다 많은 비트들을 포함한다. 예를 들어, 도 20의 3-비트 MLC 워드 라인(2040)의 상위 로직 페이지 내의 ECC 패리티 1는 중간 로직 페이지 내의 ECC 패리티 2보다 많은 비트들을 포함한다.
ECC 패리티 비트들은 각각의 로직 페이지가 대략 동일한 가능성의 정정불가능한 에러들을 가지도록 결정될 수 있다. 예를 들어, 제1 ECC 패리티 비트들은 제1 로직 페이지 내의 최대 제1 개수의 에러들의 정정을 할 수 있고, 제2 ECC 패리티 비트들은 제2 로직 페이지 내의 최대 제2 개수의 에러들의 정정을 할 수 있다. 제1 로직 페이지 내의 에러들의 수가 제1 개수를 초과할 제1 확률은 제2 로직 페이지 내의 에러들의 수가 제2 개수를 초과할 제2 확률과 실질적으로 동일할 수 있다.
일부 실시예들에서, 셰이핑 인코딩 동작은 MLC 메모리의 물리 페이지의 개별적인 셀들이 중간 상태들로 프로그래밍될 가능성을 증가시키고, MLC 메모리의 물리 페이지의 개별적인 셀들이 최하위 상태로 프로그래밍될 가능성을 감소시킨다. 일부 실시예들에서, 셰이핑 인코딩 동작은 MLC 메모리의 물리 페이지의 개별적인 셀들이 중간 상태들로 프로그래밍될 가능성을 증가시키고, MLC 메모리의 물리 페이지의 개별적인 셀들이 최상위 상태로 프로그래밍될 가능성을 감소시킨다. MLC 셀들이 최하위 상태(예컨대, 표 5의 'Er') 및/또는 최상위 상태(예컨대, 표 5의 'G')로 프로그래밍될 가능성을 감소시킴으로써, MLC 셀들에 대한 셀 마모의 양이 감소될 수 있고, MLC 메모리의 유효 수명이 연장될 수 있다.
도 23은 페이지 신뢰성에 근거하여 셰이핑 리던던시를 사용해서 셰이핑된 데이터를 판독하는 방법의 특별한 실시예를 도시한다. 데이터를 판독하는 방법은 플래시 다중-레벨 셀(MLC) 메모리를 가진 데이터 스토리지 디바이스에서 수행될 수 있다. 예를 들어, 방법은 도 21의 제어기(2106)에 의해 수행될 수 있다.
단계(2302)에서, 스토리지 요소들의 그룹이 MLC 메모리의 물리 페이지 내에 있는 제1 로직 페이지에서 비트들의 제1 그룹 및 제1 ECC 패리티 비트들의 제1 표시를 검색하고 비트들의 제3 그룹 및 제2 ECC 패리티 비트들의 제2 표시를 검색하도록 판독된다. 검색되는 제2 표시는 MLC 메모리의 물리 페이지 내에 있는 제2 로직 페이지에서 검색된다. 예를 들어, 제1 표시(2160) 및 제2 표시(2162)는 도 21의 MLC 메모리(2104)로부터 판독될 수 있다.
단계(2304)에서, 제1 표시의 제1 ECC 디코딩 동작이 비트들의 제1 그룹을 복구시키도록 개시된다. 예를 들어, 제1 ECC 디코딩 동작은 도 21의 제1 디코딩 동작(2112)일 수 있다.
단계(2306)에서, 제2 표시의 제2 ECC 디코딩 동작이 비트들의 제3 그룹을 복구시키도록 개시된다. 예를 들어, 제2 ECC 디코딩 동작은 ECC 패리티 1을 사용하여 데이터 1을 디코딩하는 제1 디코딩 동작(2112)보다 적은 패리티 비트들(예컨대, ECC 패리티 2)를 사용하여 긴 워드(예컨대, 데이터 2 및 셰이핑 패리티 2)를 디코딩하는 도 21의 제2 디코딩 동작(2114)일 수 있다.
단계(2308)에서, 비트들의 제3 그룹 상에서의 셰이핑 디코딩 동작이 비트들의 제2 그룹을 생성하도록 개시된다. 비트들의 제3 그룹은 비트들의 제2 그룹보다 많은 비트들을 가진다. 셰이핑 디코딩 동작은 비트들의 제2 그룹에서 비트들의 값의 균일한 확률 분포를 생성하도록 구성된다.
제1 로직 페이지는 제1 에러율과 관련될 수 있고, 제2 로직 페이지는 상기 제1 에러율보다 작은 제2 에러율과 관련될 수 있다. 그러므로, 제1 ECC 패리티 비트들은 제2 ECC 패리티 비트들보다 많은 비트들을 포함할 수 있다. 제1 ECC 패리티 비트들은 제1 표시 내의 최대 제1 개수의 에러들의 정정을 할 수 있고, 제2 ECC 패리티 비트들은 제2 표시 내의 최대 제2 개수의 에러들의 정정을 할 수 있다. 그 결과, 제1 표시 내의 에러들의 수가 제1 개수를 초과할 제1 확률은 제2 표시 내의 에러들의 수가 제2 개수를 초과할 제2 확률과 실질적으로 동일할 수 있다.
소프트 비트들
일 방법이 단일 페이지의 판독 동안 감지 동작들의 수를 감소시키기 위해 MLC 워드 라인의 각각의 페이지를 개별적으로 판독하도록 개시된다. 부산물(by-product)로서, 단일 래치로부터의 데이터가, 가령 인터리빙식 스토리지 기법으로 여러 래치들로부터 제어기로 데이터를 전달하는 것에 비해 플래시 메모리로부터 제어기로 보내질 수 있고, 상기 인터리빙식 스토리지 기법에서 일 코드-워드의 데이터는 여러 래치들에 위치된다. 감지 시간 절약에 더하여, 플래시 메모리에 "열 변경" 커맨드를 보내는 데 제어기에 의해 야기된 지연 및 플래시 메모리에 의한 열 변경 커맨드의 실행에 의해 야기된 지연이 회피될 수 있다. 따라서, (순차적 메모리 어드레스들의 직렬 판독과 반대로) 랜덤 판독 동안, 판독 레이턴시는 인터리빙식 기법에 비해 감소될 수 있다.
판독 레이턴시를 감소시키는 것은 감지 시간을 감소시킴으로써 달성될 수 있다. (MLC 물리 페이지에서 모든 로직 페이지들을 판독하는 것과 반대로) 데이터를 검색하기 위해 단일 로직 페이지를 판독하도록 하는 능력은 심지어 플래시 메모리의 신뢰성이 마모로 인해 저하되는 경우에도 유지될 수 있다.
소프트 입력 디코더의 정정 능력은 플래시 메모리가 고 레졸루션으로 판독되는 경우 향상될 수 있다. 소프트 비트(SB) 정보로 나타내진 고 레졸루션 데이터가 각각의 플래시 메모리 상의 어레이로부터 판독된다. 전압 레졸루션이 향상됨에 따라, (예컨대, 판독 임계 전압은 보다 정밀하게 추정되고) 판독 레졸루션을 표시하는 데 요구되는 소프트 비트들의 수는 증가된다. 그 결과, 많은 감지 동작들이 수행될 수 있고 많은 바이트의 데이터가 디코더의 정정 능력을 증가시키도록 높은 판독 레졸루션을 사용하기 위해 플래시 메모리 래치들로부터 제어기로 전달될 수 있다. 많은 감지 동작들 및 제어기에 전달된 데이터는 랜덤 판독들이 지연되게 하고 플래시 메모리의 판독 처리량이 감소되게 할 수 있다.
그러나, 감지 동작들의 수 및 전달 시간은 소프트 비트들을 사용하여 정정 능력 상의 큰 영향 없이 랜덤 판독이 수행되는 것일 때 감소될 수 있다. 플래시 메모리는 페이지 단위 판독을 통해 여전히 동작될 수 있으며, 소프트 비트들은 각각의 페이지에 대해 개별적으로 획득된다. 예를 들어, 상기 표 5에 도시된 매핑을 이용하여, 로직 페이지들(하위/중간/상위)의 각각은 서로 독립적으로 판독될 수 있고, 증가된 판독 레졸루션이 채용될 수 있는 바, 상기 증가된 판독 레졸루션은 또한, 대응하는 소프트 입력 디코더의 정정 능력이 대응하여 높아지게 한다.
어플리케이션(application)이 (예를 들어, 적어도 하나의 전체 워드 라인을 차지하는 큰 파일이 판독될 때의 고체-상태 드라이브(SSD) 어플리케이션에서)랜덤 판독들 간에 순차적인 판독 동작들의 세트를 요청하면, 페이지 단위 판독의 동일한 정정 능력이 순차적인 판독에 대해 유지됨을 가정하여 감소된 수의 소프트 비트들이 각각의 판독 셀 마다 플래시 메모리로부터 제어기로 보내질 수 있다. 소프트 비트들의 수를 감소시키는 방법은 소프트 비트들이 균일하지 않은 전압 영역들/간격들을 나타낼 때 특히 유용할 수 있다. 특별한 실시예에서, 소프트 비트들에 대한 동일한 비트 패턴들은 순차적인 판독 및 페이지 단위 판독 둘 모두에 대해 보존되어서, 소프트 입력 디코더 초기화 테이블들이 간략화되게 하며, 이 모드들 둘 모두를 포함하는 시스템의 구현이 페이지 단위 판독들의 경우와 같이 순차적 판독들에 대해 서로 다른 소프트 비트 패턴들을 사용하는 것보다 덜 복잡하게끔한다.
MLC 어레이의 플래시 메모리 셀들로부터 고 레졸루션을 판독하는 종래의 시스템들은 종종, 모든 어레이 페이지들 상에서 데이터를 습득한다. 예를 들어, 셀 당 세 개의 비트들(3-BPC) 판독을 이용하는 MLC 플래시 메모리의 경우, 두 개의 감지 동작들이 두 개의 소프트 비트들을 획득하도록 7개의 판독 임계들의 각각에 대해 더 이루어질 수 있다. (7개의 판독 임계들의 각각에 대한) 제1 감지 동작은 판독 임계보다 약간 낮은 판독 전압으로 행해지고, 제2 감지 동작은 판독 임계보다 약간 높은 판독 전압으로 행해진다. 21개의 감지 동작들의 세트는 고 레졸루션 정보를 획득하기 위해 제어기에 채용될 수 있다. 3-BPC 예에서, 총 5개의 페이지들은 데이터를 디코딩하기 위해 플래시 메모리로부터 제어기로 보내질 수 있다. 이 5개의 페이지들은 하드 비트들(HB)에 대한 세 개의 페이지들을 그리고 소프트 비트들에 대한 두 개의 페이지들을 포함한다. 21개의 임계들이 22개의 전압 간격들을 정의하고 22개의 서로 다른 간격들 간에 구별하는 것이 4개보다 많은 비트들을 요하기 때문에 5개의 페이지들이 사용된다. 22개의 옵션(option)들(즉, 도 28에 도시된 21개의 임계들에 의해 정의된 22개의 전압 간격들)의 각각은 각각의 셀과 관련된 전압 밴드를 나타낸다. 각각의 코드-워드가 단 하나의 로직 페이지에 상주하도록 데이터가 저장되는 경우, 제어기에 보내지는 데이터는 로직 페이지들 중 단 하나만이 요구되더라도, 모든 세 개의 로직 페이지들을 디코딩하기에 충분한 비트들을 포함한다.
특별한 실시예에서, 전압 윈도우(window) 내에 각각의 셀이 상주하는 정확한 전압 밴드에 관한 정보는 무시될 수 있고, 각각의 셀이 상주하는 상태 내에만 있는 판독 임계의 위치에 관한 정보는 유지된다. 판독 상태의 전압 밴드는 전압의 영역들로 나누어질 수 있는 바, 여기서 '상태의 중간' 근처에서 임계 전압으로 판독되는 셀들은 매우 신뢰성있다고 고려되며, 인접한 상태들 사이의 중첩 섹션에 가까이 있는 영역에서 판독된 셀들은 덜 신뢰성있다. (여러 전압 밴드들을 포함할 수 있는) 전압 간격이 셀의 인접한 상태들 사이의 중첩 영역에 가까이 있을수록, 그 셀과 관련된 비트(들)의 모두의 신뢰성의 저하가 커진다.
도 24는 세 개의 신뢰성 간격들이 각각의 상태에 대해 정의되는 표 5에 기술된 바와 같은 매핑을 이용한 상위 페이지의 실시예(2400)를 도시한다. 제1 표(2402)는 로직 페이지의 상태들(Er 내지 G), 각각의 상태와 관련된 하드 비트(HB) 및 추가적인 감지된 비트들(S1 내지 S4)을 도시한다. 감지 S1은 하드 비트를 생성하는 데 사용된 판독 전압보다 약간 낮은 판독 전압으로 수행된다. 따라서, 0으로부터 1로의 그리고 1로부터 0으로의 천이들은 (왼쪽으로) 약간 낮은 하드 비트의 천이들이다. 감지 S2는 하드 비트를 생성하는 데 사용된 판독 전압보다 약간 높은 판독 전압으로 수행된다. 따라서, 0으로부터 1로의 그리고 1로부터 0으로의 천이들은 (오른쪽으로) 약간 높은 하드 비트의 천이들이다. 감지 S3은 S1보다 약간 낮은 판독 전압으로 수행된다. 따라서, 0으로부터 1로의 그리고 1로부터 0으로의 천이들은 (왼쪽으로) 약간 낮은 S1의 천이들이다. 감지 S4는 S2보다 약간 높은 판독 전압으로 수행된다. 따라서, 0으로부터 1로의 그리고 1로부터 0으로의 천이들은 (오른쪽으로) 약간 낮은 S2의 천이들이다. 제2 표는 감지된 비트들(S1 내지 S4)을 사용하여 생성되는 소프트 비트들 SB1 내지 SB2를 도시한다. 두 개의 소프트 비트들 SB1, SB2이 관련 신뢰성 정보를 포함하며, 이 두 개의 소프트 비트들만을 사용하는 것이 4개의 감지들 S1 내지 S4를 사용하는 것에 비해 소프트 저-밀도 패리티 체크(LDPC) 디코더의 성능에 영향을 끼치지 않음에 주목하자. 또한, 각각의 천이점(transition point) 주위의 5개의 감지들이 전체 전압 범위를 16개의 섹션들로 파티션하고, 따라서 원리적으로 5개의 감지들은 제1 표(2402)는 도시된 5개의 페이지들보다는 4개의 페이지들에 매핑될 수 있음에 주목하자. 제3 표(2406)는 상위 페이지를 판독함에 응답하여 제어기에 보내지는 결과적인 데이터(HB, SB1, SB2)를 보여준다.
도 24에서, 상위 페이지만이 판독되고, 상기 상위 페이지에 대한 두 개의 소프트 비트들은 플래시 메모리 래치들에서 생성되어 디코더에 의한 프로세싱을 위해 제어기에 전달된다. 이 페이지들(HB, SB1 및 SB2)은 셀들로부터 판독된 5개의 비트들(HB, S1, S2, S3, S4) 대신 플래시 메모리로부터 제어기로 전달된다. 판독 셀들의 정확한 전압 밴드에 관한 정보가 손실됨에 주목하자. 그러나, 상위 페이지에 상주하는 코드워드에 대한 정정 능력은 정확한 전압 밴드에 관한 정보가 유지되는 기법들에 비해 약간만 영향을 받는다. 감지 동작들의 수는, 소프트 비트들로 모든 로직 페이지들(예컨대, 상위, 중간 및 하위)을 판독하는 종래의 시스템에 비해 소프트 비트들로 단일 로직 페이지를 판독할 때, 35개에서 15개로 감소될 수 있다. 예를 들어, 하드 비트는 7개의 감지 동작들(8개의 상태들 Er, A, ..., G의 각각의 사이에서 하나의 감지 동작) 대신 세 개의 감지 동작들(상태들 A와 B 사이, 상태들 C와 D 사이 및 상태들 E와 F 사이의 천이에서 하나의 감지 동작)을 사용하여 판독될 수 있다.
4개의 페이지들 S1 내지 S4대신 단지 두 개의 소프트 비트 페이지들 SB1 및 SB2를 전달하는 것의 에러 정정 능력의 영향은 매우 작다. 예를 들어, 상위 페이지에서의 코드워드에 할당된 패리티가 약 10%이면, 에러 정정 능력은 셀 에러율(CER)의 관점에서 종래의 기법에 비해 0.2%보다 적게 감소될 수 있다. BICM 디코더 하에서 이론적인 정정 능력(섀논 바운드(Shannon Bound))은 CER의 관점에서 4%보다 높을 수 있다. 감지 동작들 및 데이터 전달로 인한 총 지연의 감소의 관점에서 이득이 상대적으로 크며, 시스템의 정정 능력의 가능한 손실은 상대적으로 작음에 주목하자. 총 지연의 감소로 인해 상승된 성능 이득은 이 특별한 실시예에서 약 2배(factor)에 달하는 감지 동작 이득 및, 플래시 메모리로부터 제어기로 전달되는 데이터의 적은 수의 페이지의 관점에서의 - 특별한 실시예에서 40%인 - 이득을 포함한다. 랜덤 판독이 동작의 메인 모드인 어플리케이션들에 대해 동작하도록 설계된 플래시 메모리를 고려하면, 이러한 이득은 상당하다.
도 24에 도시된 기법의 예는, 소프트 비트 패턴 '10'으로 나타내진 중간 신뢰성이 전압 영역(또는 전압 간격들의 그룹)으로 구성되며, 상기 전압 영역은 6개의 서로 다른 전압 밴드들로 구성되고, 그래서 특별한 셀에 대해 중간 신뢰성의 소프트 비트 패턴 '10'을 얻는 것이 셀이 상주하는 정확한 전압 밴드를 드러내지 못함을 보여준다. 그럼에도 불구하고, 전압 영역(또는 전압 간격들의 그룹) 정보는 소프트 입력 디코더로 하여금 정정 능력의 경미한 손실만 가진 채로 상위 페이지에 위치된 코드 워드를 디코딩하도록 하기에 충분하다.
실제 상태 정보가 손실된 도 24에 도시된 바와 같은 소프트 비트 기법의 다른 장점은, 디스크램블러(descrambler)가 로직 페이지로부터 판독된 하드 비트(들)에만 적용되며 소프트 비트가 (예컨대, 상기 소프트 비트들을 디스크램블함 없이) 판독에 따라 제어기에 전해지는 한 플래시 메모리 어레이 내부의 스크램블러/디스크램블러를 동작시키는 능력이다. 도 24의 소프트 비트 기법에 따라 데이터를 판독하도록 구성된 데이터 스토리지 디바이스의 예가 도 30에 예시된다.
두 개의 소프트 비트들에 대한 도 24에 제시된 일 기법과 유사한 기법이 도 25에서의 일 소프트 비트의 경우에 대하여 제공된다. 도 25는 상위 페이지에 대한 페이지 단위 2-SB 판독 신뢰성 설정들의 실시예를 도시한다. 제1 표(2502)는 상태들, 감지된 하드 비트들(HB) 및 추가적인 감지된 비트들(S1, S2)을 예시한다. 제2 표(2504)는 로직 동작 NOT(S1 XOR S2)에 의해 생성된 소프트 비트 값들을 예시한다. 제3 표(2506)는 제어기에 보내질 하드 비트 및 소프트 비트 값들의 매핑을 도시한다.
일부 어플리케이션 커맨드들의 경우, 전체 워드 라인이 판독될 수 있다. 페이지 단위 판독과 동일한 레졸루션을 얻기 위해서, 35개의 감지 동작들이 도 26에 더욱 상세히 기술된 바와 같이 채용될 수 있다. 그러나, 전체 워드 라인이 판독되기 때문에, 35개의 감지 동작들은 상위 페이지에 대하여 도 24에 도시된 바와 같은 3개의 감지 동작들(및 제어기로부터의 단일 커맨드 당 하위 및 중간 페이지들에 대한 2개의 감지 동작들) 대신 7개의 감지 동작들의 세트들의 시프트들로 동작된다.
감지 동작들의 각각의 세트에서 제1 감지 동작이 각각의 커맨드 당 7개의 감지 동작들을 사용하는 동일한 커맨드에 기인한 연속적인 감지 동작들보다 많은 시간을 요할 수 있기 때문에, 감지 타이밍의 총 감소가 달성될 수 있다. 각각의 커맨드에서의 제1 감지 동작은 후속적인 감지 동작들보다 많은 시간을 요할 수 있는 바, 그 이유는 감지 회로 내의 커패시터가 셀의 제어 게이트에 인가된 전압을 설정하도록 충전되어 감지 증폭기 회로가 시동되기 때문이다.
도 26은 상태들(ER, A, ..., G)에 대한 셀 분포들 및 하드 비트들에 대한 임계 판독 전압들(예컨대, 전압들 AR, BR,... , GR) 그리고 추가적인 감지된 비트들에 대한 임계 판독 전압들(예컨대, 전압들 AR-△R, AR+△R)의 도식적 묘사(2602)를 포함하는 감지 기법의 실시예(2600)를 도시한다. 제1 표(2604)는 세개의 하드 비트들(HB1, HB2, HB3) 및 세개의 감지된 소프트 비트들(S1, S2, S3)을 포함하는 6개의 비트들의 세트에, 인접한 임계 판독 전압들 간의 각각의 전압 간격을 매핑하는 것을 예시한다. 제2 표(2606)는 감지된 소프트 비트들 상에서 로직 동작을 수행한 이후에 제어기에 보내질 5개의 비트들의 세트에, 각각의 전압 간격을 매핑하는 것을 예시한다.
도 26에 도시된 감지 기법은 셀이 상주하는 전압 밴드를 나타내는 셀 당 6개의 비트들의 패턴을 포함한다. 셀 당 이러한 6개의 비트들을 메모리 내의 래치들로부터 제어기로 전달하는 대신, 표(2604)에 S2 및 S3으로 도시된 마지막 두 행들은 도 27에 도시된 바와 같이 플래시 메모리 래치들 내부의 NOT{XOR(S2, S3)} 셀 단위 동작을 사용하여 소프트 비트 데이터의 일 페이지에 통합될 수 있고, 그 다음 그 결과가 제어기에 전달된다. 도 27에 예시된 바와 같이, 도 26의 표(2604)의 비트들 S1, S2, S3의 제1 표(2707)는 제2 표(2706)에 도시되고 도 26의 표(2606)의 소프트 비트들 SB1 및 SB2에 대응하는 소프트 비트들 SB1 및 SB2를 생성하도록 NOT{XOR(S2, S3)} 동작(2704)을 통해 매핑된다.
도 26에 도시된 바와 같은 소프트 비트 생성은 하드 비트 생성으로부터 독립적일 수 있다. 그 결과, 소프트 비트들은 하드 비트들을 제공하는 데 사용되는 것과 동일한 수의 래치들 또는 그보다 적은 래치들에서 생성될 수 있다. 예를 들어, 도 26의 소프트 비트 생성은 종래의 플래시 메모리와 동일한 수의 래치들을 사용할 수 있다. 도 27은 11, 10 및 00로 이루어진 대응하는 대표적인 비트 패턴들을 갖는 (각각이 복수의 전압 밴드들로 구성된) 고 신뢰성, 중 신뢰성 및 저 신뢰성 전압 영역들을 예시한다. 이러한 (도 27에서의) 패턴들이 페이지 단위 판독으로 획득된, 도 24에 도시된 것과 동일한 비트 패턴들에 매치함에 주목하자. 도 27에 나타내진 S2 및 S3은 도 26에 제시된 S2 및 S3에 대응한다. 도 27에서의 SB1 및 SB2는 도 24가 페이지 단위 판독에 대응하고 도 27이 순차적 판독에 대응하더라도, 도 24에서의 비트들과 동일한 신뢰성을 나타낸다.
도 26에서의 (상위 페이지의) 하드 비트 매핑이 도 24에서의 상위 페이지 하드 비트에 대해 제시된 매핑과 다르더라도, 소프트 비트들의 표시는 동일하게 유지되는 바, 그 이유는 소프트 비트 페이지들이 하드 비트 페이지들과 독립적으로 판독되기 때문이다. 그러므로, 소프트 비트들은 선택된 매핑 기법으로부터 독립적으로 판독될 수 있다.
도 27에 도시된 기법을 종래의 판독 기법과 비교하면, 도 27에서 도시된 기법은 결과적으로, 6개의 페이지들과 반대로 5개의 페이지들이 제어기로부터 플래시 메모리로 전달되게 하고, 이는 전달 시간의 16% 감소에 대응한다. 그러나, 페이지 단위 절차는, 전체 워드 라인 데이터가 요구될 때 9개의 페이지를 전달(예컨대, 35개의 감지 동작을 수행하고, 각각의 로직 페이지에 대해 세 개의 페이지들(즉, 하나의 HB 및 두 개의 SB)을 전달하며, 3x3=9개의 페이지들을 함께 전달)하는 대신, 5 개의 페이지들만이 연산되어, 결과적으로 약 44%의 전달 시간이 감소되는 경우에 선택되었다.
또한, 2 개의 소프트 비트들의 동일한 세트는 소프트 비트 패턴들과 소프트 입력 신뢰성 간의 동일한 변환을 채용하여 제어기 내의 디코더를 활성화시킬 시 모든 세 개의 (상위, 중간 및 하위) 로직 페이지들을 서빙(serve)할 수 있다. 그 결과, 로직 페이지들의 각각을 독립적으로 디코딩하도록 설정된 소프트 입력 디코더의 설계 및 구현은 간략화될 수 있다.
실질적으로 유사한 접근법은 단 하나의 소프트 비트가 (예컨대, 두 개의 소프트 비트들 대신 단일의 소프트 비트로 동작할 수 있는 플래시 메모리의 더욱 신뢰성있는 상태로) 제공될 때 사용될 수 있다. 도 28은 단일의 소프트 비트를 제공하는 실시예(2800)를 도시한다. 전압 간격들 v1 내지 v22의 도식적 묘사(2802)는 스토리지 요소(예컨대, Er, A,... , G)의 상태들 및 상태들 사이의 영역들에 대응한다. 제1 표(2804)는 감지된 하드 비트들(HB1, HB2, HB3) 및 소프트 비트들(S1, S2)의 매핑을 도시한다. 제2 표(2806)는 제어기에 보내질 하드 비트들 및 단일 소프트 비트(SB)의 매핑을 도시한다. 도 29는 NOT{XOR(Sl, S2)} 동작(2904)에 의해 생성된 도 28의 SB와 같은 두 개의 감지된 소프트 비트들(2902)로부터 단일의 소프트 비트(2906)를 생성하는 실시예(2900)를 도시한다.
도 28 내지 29는 도 26 내지 27의 두 개의 소프트 비트들과 유사한 방식으로 판독된 하나의 소프트 비트에 대한 기법들을 예시한다. 도 28 내지 29의 기법들은 페이지 단위 판독과 동일한 소프트 비트 매핑(예컨대, 도 25 및 도 29에서의 소프트 비트들은 동일한 매핑을 가진다)을 제공하고, 또한 하드 비트 및 소프트 비트 판독과 생성 간의 독립성을 제공한다. 예를 들어, 소프트 비트들은 하드 비트들 중 매 하드 비트에 대하여 일관된 방식으로 판독 및 생성될 수 있다.
하나 그리고 두 개의 소프트 비트들로 도 24 내지 29에 관하여 도시되고 기술된 예들은 제한적인 것이 아니며, 설명의 용이를 위해 제공된다. 동일하거나 유사한 방법들은 중첩 영역 당 감지 동작들의 수가 홀수일 때 셀 당 어떤 수의 비트들 및 소프트 비트들에 적용될 수 있다. 예를 들어, 셀 당 두 개의 비트인 구현에서, 9개의 감지 동작들은 하나의 하드 비트 및 하나의 소프트 비트를 생성할 수 있고, 15개의 감지 동작들은 하나의 하드 비트 및 두 개의 소프트 비트들을 생성할 수 있으며, 21개의 감지 동작들은 하나의 하드 비트 및 세 개의 소프트 비트들을 생성할 수 있다. 셀 당 4개의 비트들의 경우, 45개의 감지 동작들은 하나의 하드 비트 및 하나의 소프트 비트를 생성할 수 있고, 75개의 감지 동작들은 하나의 하드 비트 및 두 개의 소프트 비트들을 생성할 수 있다. 짝수 또는 홀수, 균일한 또는 비균일한 어떤 SB 임계 감지를 이용하는 일반적인 경우, 페이지 단위 소프트 비트 판독의 개시된 실시예들은 여전히 실행가능하다. 그러나, 이는 공통 소프트 비트 패턴 표시가 페이지 단위 판독 및 순차적 판독을 위해 사용될 수 있음을 보증하지 못할 수 있다. 대안적으로는, 단독으로 페이지 단위 소프트 비트들을 판독하는 것은 선택된 감지 동작들의 수로부터 독립적일 수 있다.
도 30은 호스트 디바이스(3030)에 동작적으로 연결될 수 있는 데이터 스토리지 디바이스(3002)를 포함하는 시스템(3000)의 특별한 실시예를 도시한다. 데이터 스토리지 디바이스(3002)는 제어기(3006)에 연결된 NAND 플래시 메모리와 같은 메모리(3004)를 포함한다. 제어기(3006)는 소프트 입력 에러 정정 코딩(ECC) 디코더(3028)를 포함할 수 있다. 메모리(3004)는 스토리지 요소들(3020), 판독 회로망(3008), 래치들(3010) 및 소프트 비트 회로망(3012)을 포함한다. 소프트 비트 회로망(3012)은 데이터 스토리지 디바이스(3002)로 하여금 도 24 내지 29에 도시된 기법들 중 어떤 하나 이상의 기법을 적용하게끔 한다.
데이터 스토리지 디바이스(3002)는 Secure Digital SD® card, microSD® card, miniSD.TM card (델라웨어, 윌밍톤에 소재한 SD-3C LLC의 상표들), MultiMediaCard.TM (MMC.TM) card (버지니아, 알링톤에 소재한 JEDEC Solid State Technology Association의 상표) 또는 CompactFlash® (CF) card (캘리포니아, 밀피타스에 소재한 SanDisk Corporation의 상표)와 같은 메모리 카드일 수 있다. 다른 예로서, 데이터 스토리지 디바이스(3002)는 예시적인 예들로서, eMMC® 버지니아, 알링톤에 소재한 JEDEC Solid State Technology Association의 상표) 및 eSD와 같이, 호스트 디바이스(3030)에 내장된 메모리일 수 있다.
메모리(3004)는 스토리지 요소들(3020)의 그룹(3022)을 포함하여, 복수의 스토리지 요소들(3020)을 포함한다. 예를 들어, 스토리지 요소들(3020)은 MLC 셀들을 포함할 수 있다. 예시를 위해, 메모리(3004)는 다중-레벨 셀(MLC) 플래시 메모리를 포함할 수 있고, 스토리지 요소들(3020)의 그룹(3022)은 MLC 워드 라인일 수 있다.
래치들(3010)은 MLC 워드 라인과 같은 스토리지 요소들(3020)의 그룹(3022)으로부터 판독되는 데이터를 래치하도록 동작한다. 예를 들어, 데이터 스토리지 디바이스(3002)는 HB1에 대한 데이터를 저장하는 일 래치(2010), HB2에 대한 데이터를 저장하는 제2 래치(2010), HB3에 대한 데이터를 저장하는 제3 래치(2010), S1에 대한 데이터를 저장하는 제4 래치(2010), S2에 대한 데이터를 저장하는 제5 래치(2010) 및 S3에 대한 데이터를 저장하는 제6 래치를 포함하는 도 26의 소프트 비트 기법을 구현할 수 있다.
소프트 비트 회로망(3012)은, 데이터(3042)로서 제어기(3006)에 전달하기 위한 소프트 비트들의 총 수를 감소시키도록 하나 이상의 로직 동작들을 사용하여 래치들(3010) 내의 소프트 데이터 비트들을 조작하도록 동작한다. 예를 들어, 소프트 비트 회로망(3012)은 소프트 비트 SB1을 생성하도록 NOT{XOR (S0, S1)} 동작을 적용하는 것 그리고 소프트 비트 SB2를 생성하도록 NOT{XOR (S2, S3)} 동작을 적용하는 것과 같이 소프트 비트 데이터를 생성하도록 두 개의 래치들로부터의 데이터에 XOR 동작을 적용할 수 있다. 소프트 비트 회로망(3012)은, 래치들(3010) 내의 데이터에 하나 이상의 추가적인 로직 동작들을 적용하고 제어기(3006)에 결과적인 데이터를 제공하도록 제어기(3006)로부터의 제어 정보(3040)에 응답할 수 있다. 예시를 위해, 그룹(3022)의 제1 로직 페이지로부터 데이터에 대한 제1 요청에 응답하여, 판독 회로망(3008)은 래치들(3010)을 판독 데이터로 채울(populate) 수 있고, 소프트 비트 회로망(3012)은 SB1 데이터를 생성할 수 있으며, 그리고 HB 및 SB1 데이터는 제어기(3006)에 보내진다. (예컨대, HB 및 SB1 데이터를 사용하는 ECC 디코딩이 이루어지지 못할 때) 그룹(3022)의 동일한 로직 페이지에 대한 추가적인 소프트 비트 데이터에 대한 제2 요청에 응답하여, 소프트 비트 회로망(3012)은 SB2 데이터를 생성하고 제어기(3006)에 SB2 데이터를 보낼 수 있다.
판독 회로망(3008)은 그룹(3022)의 스토리지 요소들로부터 하드 비트 및 소프트 비트 데이터를 감지하도록 그룹(3022)에 판독 임계 전압들을 인가하도록 동작할 수 있다. 예를 들어, 판독 회로망(3008)은 판독 전압들의 셋트를 결정하고, 그룹(3022)의 스토리지 요소들에 판독 전압들의 각각을 인가하며, (예컨대, 판독 임계가 NAND 플래시 셀들의 임계 전압을 초과하는지 결정하도록 NAND 플래시 셀들의 게이트들에 판독 전압들을 인가함으로써) 하드 비트 또는 소프트 비트 값을 결정할 수 있다.
예로서, 알려진 속도(rate)에서 충전될 수 있는 캐패시터는 판독 전압들을 인가하는 데 사용될 수 있다. 상기 캐패시터는 충전될 수 있고, 그룹(3022)은 상기 캐패시터가 도 26에서의 전압 AR과 같은 초기 전압에 도달할 때, 감지될 수 있고, 그 이후에 추가적인 감지 동작들이 충전 시간에 따라 수행될 수 있다. 예시를 위해, 상기 캐패시터는 알려진 충전 시간 이후에 전압 AR로부터 전압 BR까지 충전될 수 있고, 동일한 알려진 충전 시간 이후에 전압 BR로부터 전압 CR까지 충전될 수 있다. 하드 비트들은 감지 동작들의 제1 세트 동안 생성될 수 있고, 상기 감지 동작들의 제1 세트 동안 상기 캐패시터는 초기 감지 값(예컨대, 전압 AR)으로부터 최종 감지 값(예컨대, 전압 GR)까지 충전된다. 소프트 비트들은 전압 AR-△R으로부터 전압 GR-△R까지의 감지 동작들의 세트 및 전압 AR+△R로부터 전압 GR+△RR까지의 감지 동작들의 다른 세트와 같은 감지 동작들의 하나 이상의 다른 셋트들 동안 감지될 수 있다.
그룹(3022)에서의 모든 하드 비트들의 판독을 요하는 순차적인 판독이 수행될 때, 판독 회로망(3008)은 도 26에 도시된 모든 레퍼런스 전압들, 예컨대 전압들 AR, BR, CR, DR, ER, FR, GR, 전압들 AR-△R, BR-△R, CR-△R, ..., GR-△R, 전압들 AR+△R, BR+△R, CR+△R, ..., GR+△R, 전압들 AR-2△R, BR-2△R, CR-2△R, ..., GR-2△R, 및 전압들 AR+2△R, BR+2△R, CR+2△R, ..., GR+2△R에서 감지를 수행하도록 동작할 수 있다. 그러나, 요청이 HB2에 대응하는 로직 페이지와 같은 단일 로직 페이지를 판독하도록 메모리(3004)에서 수신될 때, 판독 회로망(3008)은 모든 레퍼런스 전압들보다 낮은 전압에서 감지를 수행하도록 동작할 수 있다. 예를 들어, HB2는 감지 전압들 AR, CR, DR, ER 및 GR을 사용함 없이 감지 전압들 BR 및 FR을 사용하여 판독될 수 있다.
전형적으로, 하드 비트 판독 전압들(AR, BR, CR, DR, ER, FR, GR)은 동일하게 간격화되지만, 소프트 비트 판독 전압들은 균일하게 분포되는 것이 아니라 하드 비트 판독 전압들 주위에 집중되어 있음을 주목하자. 소프트 비트 판독 전압들의 배치를 정의하는 서로 다른 전압 △AR의 값은 소프트 비트 디코더의 디코딩 능력을 향상시키도록 결정될 수 있다.
메모리(3004)는 또한, 스크램블러/디스크램블러(3050)를 포함할 수 있다. 스크램블러/디스크램블러(3050)는 가령, 선형적인 피드백 시프트 레지스터의 출력과 데이터 값들의 XOR 동작을 적용함으로써, 스토리지 요소들(3020)에 저장될 데이터 값들을 수정하도록 구성된 회로망을 포함할 수 있다. 스크램블러/디스크램블러(3050)는 또한, 저장에 앞서 스크램블된 데이터를 디스크램블하도록 스토리지 요소들(3020)로부터 판독된 데이터 값들을 수정하도록 구성될 수 있다.
동작 동안, 메모리(3004)는 그룹(3022)에 저장된 데이터에 대한 요청을 수신할 수 있다. 플래시 MLC 워드 라인의 대표적인 메모리 셀과 같이, 그룹(3022)의 특별한 스토리지 요소(3024)에 대응하는 비트들의 세트(3026)는 메모리(3004)에 생성된다. 비트들의 세트(3026)는 특별한 스토리지 요소(3024)에 저장된 값에 대응하는 비트로 하나 이상의 래치들(3010)의 각각에 저장될 수 있다.
비트들의 세트(3026)는 임계 전압 간격들의 그룹을 나타낸다. 예를 들어, 비트들의 세트(3026)는 도 28의 상위 페이지의 하드 비트(HB1) 및 소프트 비트 SB에 대응할 수 있다. 예시를 위해, 비트들의 세트 "11"는 도 28의 전압 간격들 v1, v4, v7 및 v10의 그룹에 대응할 수 있고, 비트들의 세트 "10"는 전압 간격들 v2, v3, v5, v6, v8, v9 및 v11의 그룹에 대응할 수 있다.
특별한 스토리지 요소(3024)의 임계 전압은 임계 전압 간격들의 그룹 내의 임계 전압 간격들 중 하나에 대응한다. 예를 들어, 특별한 스토리지 요소(3024)가 도 28의 전압 간격 v4(즉, 상태 A) 내에 있는 임계 전압을 가지면, 비트들의 세트(3026)는 임계 전압 간격들 v1, v4, v7 및 v10의 그룹을 나타낸다. 임계 전압 간격들의 그룹 내의 적어도 일 임계 전압 간격은 임계 전압 간격들의 그룹 내에 있지 않은 중간(intervening) 임계 전압 간격에 의해 임계 전압 간격들의 그룹 내의 다른 임계 전압 간격과 분리된다. 예시를 위해, 임계 전압 간격들의 그룹 내의 간격들 v1 및 v4는 임계 전압 간격들의 그룹 내에 있지 않은 간격들 v2 및 v3에 의해 분리된다.
비트들의 세트(3026)는 판독 요청으로부터 비롯된, 래치들(3010) 내의 데이터의 전달의 파트로서의 데이터(3042)로 제어기(3006)에 전해진다. 비트들의 세트(3026)는 특별한 스토리지 요소에 저장된 값에 대응하는 제1 하드 비트(예컨대, 도 28의 HB1) 및 저장된 값이 정확하다는 신뢰성에 대응하는 제1 소프트 비트(예컨대, 도 28의 SB)를 포함할 수 있다.
특별한 스토리지 요소(3024)는 도 28의 HB1을 저장하는 로직 페이지 및 HB2를 저장하는 로직 페이지와 같은 제1 로직 페이지 및 제2 로직 페이지를 포함하는 메모리(3004)의 물리 페이지 내에 있을 수 있다. 특별한 스토리지 요소(3024)의 상태는 제1 로직 페이지에 대응하는 제1 하드 비트 및 제2 로직 페이지에 대응하는 제2 하드 비트를 포함하는 복수의 하드 비트들에 대응한다. 예를 들어, 특별한 스토리지 요소(3024)는 값 "1"을 가진 제1 하드 비트 HB1 및 값 "1"을 가진 제2 하드 비트 HB2에 대응하는 도 28에 도시된 상태 "A"를 가질 수 있다.
비트들의 세트(3026)는 제1 로직 페이지를 판독하도록 하는(예컨대, 도 28의 HB1을 판독하도록 하는) 요청에 응답하여 생성될 수 있다. 예시를 위해, 메모리(3004)가 제1 로직 페이지를 판독하도록 하는 요청을 수신할 때, 비트들의 세트(3026)는 제1 하드 비트(예컨대, HB1)를 포함하지만, 제2 하드 비트(예컨대, HB2)를 포함하지 않는다.
제1 하드 비트 및 제1 소프트 비트는 메모리(3004)로부터 판독되는 데이터의 ECC 디코딩 동작의 파트로서 소프트 입력 ECC 디코더(3028)에 제공된다. 제1 소프트 비트는 임계 전압이 임계 전압 간격들의 그룹을 이루는 임계 전압 간격들 중 어느 간격의 중앙 영역 내에 있는지 나타낼 수 있다. 예를 들어, 도 28에서, "1"의 SB 값은 임계 전압이 전압 범위들 v1, v4, v7, v10, v13, v16, v19 및 v22 중 하나, 즉, 각각 정의된 상태들 Er, A, B, C, D, E, F, 및 G 중 하나의 중앙 영역 내에 있고 인접한 상태들 사이의 중첩 영역들 내에 있지 않음을 나타낸다.
비트들의 제1 세트(3026)는 제어기(3006)로부터 제1의 저장된 데이터에 대한 제1 요청을 수신함에 응답하여 제어기(3006)에 보내질 수 있다. 제어기(3006)에 비트들의 제1 세트(3026)를 보낸 이후에, 제1의 저장된 데이터에 대응하는 추가적인 정보에 대한 제2 요청이 메모리(3004)에서 제어기(3006)로부터 수신될 수 있다. 특별한 스토리지 요소(3024)에 대응하는 제2 소프트 비트는 메모리(3004)에서 결정될 수 있다. 예를 들어, 비트들의 제1 세트(3026)가 도 24의 하드 비트(HB) 및 최종 매핑 소트프 비트(SB1)에 대응하면, 도 24의 제2 소프트 비트(SB2)는 NOT{XOR (S3, S4)} 동작을 수행함으로써 생성될 수 있다.
제2 소프트 비트는 임계 전압이 임계 전압 간격들의 그룹을 이루는 임계 전압 간격들 중 어느 간격의 제2 영역 내에 있는지 나타낸다. 예시를 위해, 도 24에 도시된 하드 비트(HB)는 상태들 Er-A에 대하여 "1"값을, 상태들 B-C에 대하여 "0" 값을 그리고 상태들 D-E에 대하여 "1"값을 가진다. 도 24의 소프트 비트 SB1는 상태들 A와 B 사이, 상태들 C와 D 사이 그리고 상태들 E와 F 사이의 천이에 가장 가까운 전압 간격들에 "0"값을 가진다. 각각의 특별한 전압 간격의 제2 영역은 특별한 전압 간격의 실질적으로 중간 지점에 집중되고, 제1 영역과는 다르다. 예를 들어, 제2 소프트 비트(SB2)는, 제1 소프트 비트 SB2보다 상태들 A와 B 사이의 천이로부터 먼 전압 간격, 제1 소프트 비트 SB2보다 상태들 C와 D 사이의 천이로부터 먼 전압 간격 그리고 제1 소프트 비트 SB2보다 상태들 E와 F 사이의 천이로부터 먼 전압 간격 내에 있는 것과 같은 전압 간격을 나타낸다. 제2 소프트 비트 값은 디코딩을 보조하기 위해 추가적인 신뢰성 정보를 제공하도록 제어기(3006)에 보내질 수 있다.
메모리(3004)는 순차적인 판독 동작 동안과 같이, 페이지 단위 판독 동작 동안 신뢰성을 나타내기 위해 동일한 소프트 비트 패턴을 제공하도록 구성될 수 있다. 예를 들어, 도 25에 도시된 소프트 비트 패턴은 페이지에 대응하는 하드 비트의 각각의 천이에 인접한 전압 간격들에 "0" 값(즉, 낮은 신뢰성)을 가지고 다른 곳에 "1"(즉, 높은 신뢰성)을 가지는 제1 소프트 비트 SB1를 포함한다. 다른 예로서, 도 27에 도시된 소프트 비트 패턴은 비트들 SB1, SB2의 세트를 포함하며, "11"값은 높은 신뢰성을 나타내고, "10"은 중간 신뢰성을 나타내며, 그리고 "00"은 낮은 신뢰성을 나타낸다. 소프트 비트 패턴은 상태들로의 비트들의 선택된 매핑 기법과 독립적일 수 있다. 예를 들어, 도 25 및 도 27의 소프트 비트 패턴들의 소프트 비트 값들은 상태들로의 비트들의 특정한 매핑에 종속적인 대신에 상태들 간의 천이의 근접성에 근거하여 결정된다.
비트들의 세트는 제1 소프트 비트에 스크램블러/디스크램블러(3050)를 적용함 없이 제1 하드 비트에 스크램블러/디스크램블러(3050)를 적용함으로써 메모리(3004)에서 디스크램블될 수 있다. 예를 들어, 하드 비트는 특별한 스토리지 요소(3024)의 상태(또는 상태들의 그룹)를 나타낼 수 있으며, 소프트 비트(들)는 하드 비트의 신뢰성(예컨대, 스토리지 요소(3024)가 하드 비트 값들 간의 천이에 얼마나 가까이 있는지)을 나타낼 수 있다.
도 31은 방법 또는 소프트 비트를 이용하여 데이터를 판독하는 것의 실시예를 도시한다. 방법은 도 30의 데이터 스토리지 디바이스(3002)로 수행될 수 있다. 단계(3102)에서, 특별한 스토리지 요소에 대응하는 비트들의 세트가 메모리에서 생성된다. 비트들의 세트는 임계 전압 간격들의 그룹을 나타낸다. 특별한 스토리지 요소의 임계 전압은 상기 그룹 내의 임계 전압 간격들 중 하나에 대응한다. 상기 그룹 내의 적어도 일 임계 전압 간격은 상기 그룹 내에 있지 않은 중간 임계 전압 간격에 의해 상기 그룹 내의 다른 임계 전압 간격과 분리된다.
단계(3104)에서, 비트들의 세트는 제어기에 보내진다. 비트들의 세트는 특별한 스토리지 요소에 저장된 값에 대응하는 제1 하드 비트 및 저장된 값이 정확하다는 신뢰성에 대응하는 제1 소프트 비트를 포함한다.
특별한 스토리지 요소는 메모리의 물리 페이지 내에 있을 수 있다. 물리 페이지는 제1 로직 페이지 및 제2 로직 페이지를 포함한다. 특별한 스토리지 요소의 상태는 제1 로직 페이지에 대응하는 제1 하드 비트 및 제2 로직 페이지에 대응하는 제2 하드 비트를 포함하는 복수의 하드 비트들에 대응한다. 비트들의 세트는 제1 로직 페이지를 판독하도록 하는 요청에 응답하여 생성될 수 있다. 예시를 위해, 메모리가 제1 로직 페이지를 판독하도록 하는 요청을 수신할 때, 비트들의 세트는 제1 하드 비트를 포함하지만, 제2 하드 비트를 포함하지 않는다.
제어기는 소프트 입력 에러 정정 코딩(ECC) 디코더를 포함할 수 있고, 제1 하드 비트 및 제1 소프트 비트는 메모리로부터 판독되는 데이터의 ECC 디코딩 동작의 파트로 소프트 입력 ECC 디코더에 제공될 수 있다. 제1 소프트 비트는 임계 전압이 임계 전압 간격들의 그룹을 이루는 임계 전압 간격들 중 어느 간격의 중앙 영역 내에 있는지 나타낼 수 있다. 비트들의 제1 세트는 제어기로부터 제1 저장된 데이터에 대한 제1 요청에 응답하여 제어기에 보내질 수 있다. 제어기에 비트들의 제1 세트를 보낸 이후에, 제1 저장된 데이터에 대응하는 추가적인 정보에 대한 제2 요청이 메모리에서 제어기로부터 수신될 수 있다.
제2 요청에 응답하여, 특별한 스토리지 요소에 대응하는 제2 소프트 비트는 메모리에서 결정될 수 있다. 제2 소프트 비트는 임계 전압이 임계 전압 간격들의 그룹을 이루는 임계 전압 간격들 중 어느 간격의 제2 영역 내에 있는지 나타낼 수 있다. 각각의 특별한 전압 간격의 제2 영역은 특별한 전압 간격의 실질적으로 중간지점에 집중될 수 있고, 제2 영역은 제1 영역과 다르다. 제2 소프트 비트 값은 소프트 입력 ECC 디코딩에 대한 추가적인 정보를 제공하도록 제어기에 보내진다.
비록, 여기에 도시된 다양한 컴포넌트들이 블록 컴포넌트들로서 예시되고 일반적인 용어들로 기술되지만, 이러한 컴포넌트들은 하나 이상의 마이크로프로세서들, 상태 머신들, 또는 도 8의 데이터 스토리지 디바이스(802)와 같은 데이터 스토리지 디바이스로 하여금 이 컴포넌트들에 속한 특별한 기능들을 수행하도록 구성된 다른 회로들 또는 이들의 어떤 조합을 포함할 수 있다. 예를 들어, 도 8의 제어기(806)는 제어기들, 상태 머신들, 로직 회로들, 또는 요소들(822)의 그룹에서 페이지 신뢰성을 수정하거나 실질적으로 동일화시키기 위해 래치들(810) 내의 데이터 상에서 로직 동작들을 수행하도록 매핑 회로망(812)에게 명령하도록 하는 다른 구조들과 같은 물리 컴포넌트들을 대표할 수 있다.
제어기(806)는 매핑 회로망(812)에 명령하도록 하는 제어 정보(840)를 생성하도록 프로그램된 마이크로프로세서 또는 마이크로컨트롤러를 사용하여 구현될 수 있다. 특별한 실시예에서, 제어기(806)는 메모리(804)에 저장되는 명령어들을 실행하는 프로세서를 포함한다. 대안적으로 또는 추가적으로, 프로세서에 의해 실행되는 실행가능 명령어들은 메모리(804)의 파트가 아닌 판독-전용 메모리(ROM)(미도시)와 같은 별개의 메모리 위치에 저장될 수 있다.
특별한 실시예에서, 데이터 스토리지 디바이스(802)는 하나 이상의 외부 디바이스들에 선택적으로 연결되도록 구성된 포터블한 디바이스일 수 있다. 그러나, 다른 실시예들에서, 데이터 스토리지 디바이스(802)는 포터블한 통신 디바이스의 하우징 내에서와 같이, 하나 이상의 호스트 디바이스들 내에 부착 또는 내장될 수 있다. 예를 들어, 데이터 스토리지 디바이스(802)는 무선 전화기, 개인용 디지털 단말기(PDA), 게이밍 디바이스 또는 콘솔, 포터블한 네이게이션 디바이스 또는 내부 비-휘발성 메모리를 사용하는 다른 디바이스와 같은 패키징된 장치 내에 존재할 수 있다. 특별한 실시예에서, 데이터 스토리지 디바이스(802)는 플래시 메모리(예컨대, NAND, NOR, 다중-레벨 셀(MLC), DINOR((Divided bit-line NOR), AND, HiCR(high capacitive coupling ratio), 비대칭 비접촉 트랜지스터(ACT) 또는 다른 플래시 메모리들), 소거가능하고 프로그램가능한 판독-전용 메모리(EPROM), 전기적으로 소거가능하고 프로그램가능한 판독-전용 메모리(EEPROM), 판독-전용 메모리(ROM), 일회성 프로그램가능한 메모리(OTP) 또는 다른 어떤 타입의 메모리와 같은 비-휘발성 메모리를 포함한다.
본 명세서에 기술된 실시예들의 예들은 다양한 실시예들의 일반적인 이해를 제공하도록 의도된 것이다. 다른 실시예들이 이용되고 본 발명으로부터 파생될 수 있어서, 구조적 그리고 논리적 대체물들 및 변경들이 본 발명의 범위로부터 벗어남 없이 이루어질 수 있다. 본 발명은 다양한 실시예들의 어떠한 그리고 모든 후속적인 적응(adaptation)들 또는 변형들을 커버하도록 의도된 것이다. 따라서, 발명 및 도면들은 제한적이라기보다는 예시적인 것으로 간주되어야 한다.
상기에 개시된 발명은 예시적인 것으로 고려되는 것이고 제한적인 것이 아니며, 첨부된 특허 청구 범위는 본 발명의 범위 내에 속하는 모든 이러한 수정들, 개선들 및 다른 실시예들을 커버하도록 의도된 것이다. 따라서, 법으로 허용되는 최대 정도까지, 본 발명의 범위는 다음의 특허 청구 범위 및 이의 균등물들의 가장 넓게 허용가능한 해석에 의해 결정되어야 하며, 상술된 상세한 설명에 의해 한정 또는 제한되어서는 안된다.

Claims (145)

  1. 데이터를 기록하는 방법으로서,
    제1 물리 페이지(physical page) 및 제2 물리 페이지를 포함하는 복수의 물리 페이지들을 가진 데이터 스토리지 디바이스에서,
    상기 데이터 스토리지 디바이스에 저장될 데이터 페이지를 수신하는 단계와;
    상기 데이터 페이지를 인코딩하도록 인코딩 동작을 개시하는 단계와, 여기서 상기 인코딩 동작은 제1 인코딩된 데이터를 생성하고;
    상기 제1 물리 페이지에 상기 제1 인코딩된 데이터의 제1 부분을 저장하는 단계와;
    상기 제2 물리 페이지에 상기 제1 인코딩된 데이터의 제2 부분의 저장을 개시하는 단계와; 그리고
    상기 데이터 페이지를 복구하도록 디코딩 동작을 개시하는 단계를 수행하는 것을 포함하며, 상기 디코딩 동작은 상기 제2 물리 페이지로부터 어떤 데이터를 사용함 없이 상기 제1 물리 페이지로부터 판독되는 상기 제1 인코딩된 데이터의 제1 부분의 표시(representation)를 사용하는 것을 특징으로 하는 데이터를 기록하는 방법.
  2. 제1항에 있어서,
    상기 데이터 페이지는 호스트 디바이스로부터 수신되며, 상기 데이터 스토리지 디바이스는 상기 호스트 디바이스에 동작적으로(operatively) 연결된 것을 특징으로 하는 데이터를 기록하는 방법.
  3. 제2항에 있어서,
    상기 제1 인코딩된 데이터의 제1 부분을 저장함에 응답하여 상기 호스트 디바이스에 메시지를 보내는 단계를 더 포함하고, 상기 메시지는 상기 데이터 페이지가 상기 데이터 스토리지 디바이스에 성공적으로 저장됨을 나타내며, 상기 메시지는 상기 제1 인코딩된 데이터의 제2 부분의 저장을 완료하기에 앞서 보내지는 것을 특징으로 하는 데이터를 기록하는 방법.
  4. 제1항에 있어서,
    상기 제1 인코딩된 데이터의 제2 부분은 패리티 비트들만을 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  5. 제1항에 있어서,
    상기 디코딩 동작은 상기 제1 인코딩된 데이터의 제2 부분을 기록하는 것의 완료 이전의 파워 차단 이벤트(power-off event) 이후에, 파워의 재개에 응답하여 개시되는 것을 특징으로 하는 데이터를 기록하는 방법.
  6. 제5항에 있어서,
    상기 디코딩 동작을 통해 상기 데이터 페이지를 복구한 이후에,
    상기 데이터 페이지를 인코딩하도록 제2 인코딩 동작을 개시하는 단계와, 상기 제2 인코딩 동작은 제2 인코딩된 데이터를 생성하고; 그리고
    제3 물리 페이지에 상기 제2 인코딩된 데이터의 제1 부분을 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 제6항에 있어서,
    상기 제2 인코딩된 데이터의 제1 부분은 상기 제3 물리 페이지 내의 제1 로직 페이지에 저장되고, 상기 제3 물리 페이지 내의 제2 로직 페이지에 상기 제2 인코딩된 데이터의 제2 부분을 저장하는 단계를 더 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  8. 제7항에 있어서,
    상기 제1 인코딩된 데이터는 상기 제1 물리 페이지의 사이즈를 초과하는 길이를 가지고, 상기 제2 인코딩된 데이터는 상기 제1 로직 페이지의 사이즈를 초과하는 길이를 가지는 것을 특징으로 하는 데이터를 기록하는 방법.
  9. 제6항에 있어서,
    상기 데이터 스토리지 디바이스는 단일-레벨 셀(SLC) 부분 및 다중-레벨 셀(MLC) 부분을 가진 플래시 메모리를 포함하고, 상기 제1 물리 페이지 및 제2 물리 페이지는 상기 플래시 메모리의 SLC 부분에 있는 것을 특징으로 하는 데이터를 기록하는 방법.
  10. 제9항에 있어서,
    상기 제3 물리 페이지는 상기 플래시 메모리의 상기 다중-레벨 셀(MLC) 부분에 있는 것을 특징으로 하는 데이터를 기록하는 방법.
  11. 데이터를 기록하는 방법으로서,
    제1 물리 페이지 및 제2 물리 페이지를 포함하는 복수의 물리 페이지들을 가진 데이터 스토리지 디바이스에서,
    상기 데이터 스토리지 디바이스에 저장될 데이터 페이지를 호스트 디바이스로부터 수신하는 단계와;
    상기 데이터 페이지를 인코딩하도록 인코딩 동작을 개시하는 단계와, 여기서 상기 인코딩 동작은 제1 인코딩된 데이터를 생성하고;
    상기 제1 물리 페이지에 상기 제1 인코딩된 데이터의 제1 부분을 저장하는 단계와;
    상기 제2 물리 페이지에 상기 제1 인코딩된 데이터의 제2 부분의 저장을 개시하는 단계와; 그리고
    상기 제1 인코딩된 데이터의 제1 부분을 저장함에 응답하여 상기 호스트 디바이스에 메시지를 보내는 단계를 수행하는 것을 포함하며, 상기 메시지는 상기 데이터 페이지가 상기 데이터 스토리지 디바이스에 성공적으로 저장됨을 나타내며, 상기 메시지는 상기 제1 인코딩된 데이터의 제2 부분의 저장을 완료하기에 앞서 보내지는 것을 특징으로 하는 데이터를 기록하는 방법.
  12. 데이터를 기록하는 방법으로서,
    제어기 및 메모리 다이를 가진 데이터 스토리지 디바이스 - 상기 제어기는 에러 정정 코딩(ECC) 엔진을 포함하고, 상기 메모리 다이는 제1 물리 페이지 및 제2 물리 페이지를 포함하는 복수의 물리 페이지들을 포함하고 - 에서,
    상기 데이터 스토리지 디바이스에 저장될 데이터 페이지를 수신하는 단계와, 상기 데이터 페이지는 호스트 디바이스로부터 수신되며, 상기 데이터 스토리지 디바이스는 상기 호스트 디바이스에 동작적으로 연결되며;
    상기 데이터 페이지를 인코딩하도록 상기 ECC 엔진에서 인코딩 동작을 개시하는 단계와, 상기 인코딩 동작은 제1 인코딩된 데이터를 생성하고;
    상기 메모리 다이에서 상기 제1 물리 페이지에 상기 제1 인코딩된 데이터의 적어도 부분을 저장하는 단계와;
    상기 제1 물리 페이지로부터 상기 제1 인코딩된 데이터의 상기 부분의 표시를 판독하고 그리고 상기 제1 인코딩된 데이터의 상기 부분의 표시에 근거하여 상기 메모리 다이에서 리던던트 데이터를 생성함으로써, 상기 메모리 다이에서 제2 인코딩된 데이터를 생성하는 단계와; 그리고
    상기 제2 물리 페이지에 상기 제2 인코딩된 데이터를 저장하는 단계를 수행하는 것을 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  13. 제12항에 있어서,
    상기 리던던트 데이터는 상기 제1 인코딩된 데이터의 상기 부분의 표시의 적어도 파트(part)를 복사(copy)함으로써 상기 메모리 다이에서 생성되는 것을 특징으로 하는 데이터를 기록하는 방법.
  14. 제13항에 있어서,
    상기 제1 인코딩된 데이터는 제1 부분 및 제2 부분을 포함하고, 상기 제1 부분은 상기 제1 물리 페이지에 저장되며, 상기 제2 부분은 상기 메모리 다이에 제공됨 없이 폐기되는 것을 특징으로 하는 데이터를 기록하는 방법.
  15. 제12항에 있어서,
    상기 제1 인코딩된 데이터의 상기 부분은 플래시 단일-레벨 셀(SLC) 페이지에서 제1 물리 페이지에 저장되고, 상기 제2 인코딩된 데이터는 복수의 플래시 다중-레벨 셀(MLC) 로직 페이지들에서 제2 물리 페이지에 저장되는 것을 특징으로 하는 데이터를 기록하는 방법.
  16. 데이터를 기록하는 방법으로서,
    제1 물리 페이지 및 제2 물리 페이지를 포함하는 복수의 물리 페이지들을 가진 데이터 스토리지 디바이스에서,
    상기 데이터 스토리지 디바이스에 저장될 데이터 페이지를 수신하는 단계와, 상기 데이터 페이지는 호스트 디바이스로부터 수신되고, 상기 데이터 스토리지 디바이스는 상기 호스트 디바이스에 동작적으로 연결되며;
    상기 데이터 페이지를 인코딩하도록 제1 인코딩 동작을 개시하는 단계와, 상기 제1 인코딩 동작은 제1 인코딩된 데이터를 생성하고;
    상기 제1 물리 페이지에 상기 제1 인코딩된 데이터의 적어도 부분을 저장하는 단계와;
    상기 데이터 페이지를 복구하도록 상기 제1 물리 페이지로부터 상기 제1 인코딩된 데이터의 상기 부분의 표시를 디코딩하는 단계와;
    상기 데이터 페이지를 인코딩하도록 제2 인코딩 동작을 개시하는 단계와, 상기 제2 인코딩 동작은 제2 인코딩된 데이터를 생성하고; 그리고
    상기 제2 물리 페이지에 상기 제2 인코딩된 데이터를 저장하는 단계를 수행하는 것을 포함하며, 상기 제2 인코딩된 데이터는 상기 제1 인코딩된 데이터의 상기 부분보다 많은 페이지들에 걸쳐 이어지는(span) 것을 특징으로 하는 데이터를 기록하는 방법.
  17. 제16항에 있어서,
    상기 제1 인코딩된 데이터의 전부는 상기 제1 물리 페이지에 저장되는 것을 특징으로 하는 데이터를 기록하는 방법.
  18. 제16항에 있어서,
    상기 제1 인코딩된 데이터는 제1 부분 및 제2 부분을 포함하고, 상기 제1 부분은 상기 제1 물리 페이지에 저장되며, 상기 제2 부분은 폐기되는 것(discarded)을 특징으로 하는 데이터를 기록하는 방법.
  19. 제16항에 있어서,
    상기 제1 인코딩 동작은 상기 제2 인코딩 동작과 동일한 ECC 기법을 사용하는 것을 특징으로 하는 데이터를 기록하는 방법.
  20. 제16항에 있어서,
    상기 제1 인코딩 동작은 제1 ECC 기법을 사용하고, 상기 제2 인코딩 동작은 제2 ECC 기법을 사용하며, 상기 제2 ECC 기법은 상기 제1 ECC 기법과 다른 것을 특징으로 하는 데이터를 기록하는 방법.
  21. 제16항에 있어서,
    상기 제1 인코딩된 데이터의 부분은 상기 제2 물리 페이지보다 신뢰성있는 플래시 페이지에서의 제1 물리 페이지에 저장되는 것을 특징으로 하는 데이터를 기록하는 방법.
  22. 제21항에 있어서,
    상기 제1 인코딩된 데이터의 상기 부분은 플래시 단일-레벨 셀(SLC) 페이지에서 상기 제1 물리 페이지에 저장되고, 상기 제2 인코딩된 데이터는 복수의 플래시 다중-레벨 셀(MLC) 로직 페이지들에서 상기 제2 물리 페이지에 저장되는 것을 특징으로 하는 데이터를 기록하는 방법.
  23. 데이터 스토리지 디바이스로서,
    제어기와; 그리고
    제1 물리 페이지 및 제2 물리 페이지를 포함하는 메모리로 구성되고,
    상기 제어기는, 수신된 데이터 페이지를 인코딩하도록 인코딩 동작을 개시하고 상기 인코딩 동작에 의해 생성된 제1 인코딩된 데이터의 저장을 개시하도록 구성되며, 상기 인코딩 동작에 의해 생성된 상기 제1 인코딩된 데이터의 제1 부분은 상기 제1 물리 페이지에 저장되기 위한 것이고, 상기 제1 인코딩된 데이터의 제2 부분은 상기 제2 물리 페이지에 저장되기 위한 것이며,
    상기 제어기는 상기 데이터 페이지를 복구하도록 디코딩 동작을 개시하도록 동작가능하며, 상기 디코딩 동작은 상기 제2 물리 페이지로부터 어떤 데이터를 사용함 없이 상기 제1 물리 페이지로부터 판독되는 상기 제1 인코딩된 데이터의 제1 부분의 표시를 사용하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  24. 제23항에 있어서,
    상기 데이터 페이지는 호스트 디바이스로부터 수신되며, 상기 데이터 스토리지 디바이스는 상기 호스트 디바이스에 동작적으로 연결된 것을 특징으로 하는 데이터 스토리지 디바이스.
  25. 제24항에 있어서,
    상기 제어기는 상기 제1 인코딩된 데이터의 상기 제1 부분을 저장함에 응답하여 상기 호스트 디바이스에 메시지를 보내도록 더 구성되며, 상기 메시지는 상기 데이터 페이지가 상기 데이터 스토리지 디바이스에 성공적으로 저장됨을 나타내고, 상기 제어기는 상기 제1 인코딩된 데이터의 상기 제2 부분의 저장을 완료하기에 앞서 상기 메시지를 보내도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  26. 제23항에 있어서,
    상기 제1 인코딩된 데이터의 상기 제2 부분은 패리티 비트들만을 포함하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  27. 제23항에 있어서,
    상기 제어기는 상기 제1 인코딩된 데이터의 상기 제2 부분을 기록하는 것의 완료 이전의 파워 차단 이벤트 이후에, 파워의 재개에 응답하여 상기 디코딩 동작을 개시하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  28. 제27항에 있어서,
    상기 디코딩 동작을 통해 상기 데이터 페이지를 복구한 이후에, 상기 제어기는 상기 데이터 페이지를 인코딩하도록 제2 인코딩 동작을 개시하도록 동작하고, 상기 제2 인코딩 동작은 제2 인코딩된 데이터를 생성하며, 상기 제어기는 제3 물리 페이지에 상기 제2 인코딩된 데이터의 제1 부분을 저장하도록 동작하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  29. 제28항에 있어서,
    상기 제2 인코딩된 데이터의 상기 제1 부분은 상기 제3 물리 페이지 내의 제1 로직 페이지에 저장되고, 상기 제2 인코딩된 데이터의 제2 부분은 상기 제3 물리 페이지 내의 제2 로직 페이지에 저장되는 것을 특징으로 하는 데이터 스토리지 디바이스.
  30. 제29항에 있어서,
    상기 제1 인코딩된 데이터는 상기 제1 물리 페이지의 사이즈를 초과하는 길이를 가지고, 상기 제2 인코딩된 데이터는 상기 제1 로직 페이지의 사이즈를 초과하는 길이를 가진 것을 특징으로 하는 데이터 스토리지 디바이스.
  31. 제28항에 있어서,
    상기 메모리는 단일-레벨 셀(SLC) 부분 및 다중-레벨 셀(MLC) 부분을 가진 플래시 메모리를 포함하고, 상기 제1 물리 페이지 및 상기 제2 물리 페이지는 상기 플래시 메모리의 상기 SLC 부분에 있는 것을 특징으로 하는 데이터 스토리지 디바이스.
  32. 제31항에 있어서,
    상기 제3 물리 페이지는 상기 플래시 메모리의 상기 다중-레벨 셀(MLC) 부분에 있는 것을 특징으로 하는 데이터 스토리지 디바이스.
  33. 데이터 스토리지 디바이스로서,
    ECC 엔진을 포함하는 제어기와; 그리고
    제1 물리 페이지 및 제2 물리 페이지를 포함하는 메모리 다이로 구성되며;
    상기 제어기는 상기 데이터 스토리지 디바이스에 저장될 데이터 페이지를 인코딩하도록 상기 ECC 엔진에서 인코딩 동작을 개시하도록 구성되고, 상기 데이터 페이지는 호스트 디바이스로부터 수신되며, 상기 데이터 스토리지 디바이스는 상기 호스트 디바이스에 동작적으로 연결되고, 상기 인코딩 동작은 제1 인코딩된 데이터를 생성하고, 상기 제어기는 상기 제1 물리 페이지에 상기 제1 인코딩된 데이터의 적어도 부분을 저장하도록 구성되며,
    상기 메모리 다이는 상기 제2 물리 페이지에 저장될 제2 인코딩된 데이터를 생성하도록 동작하는 리던던트 데이터 생성기 회로를 포함하고, 상기 리던던트 데이터 생성기 회로는, 상기 제1 물리 페이지로부터 판독된 상기 제1 인코딩된 데이터의 상기 부분의 표시를 수신하고 상기 제2 인코딩된 데이터를 생성하도록 상기 제1 인코딩된 데이터의 상기 부분의 표시에 근거하여 리던던트 데이터를 생성하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  34. 제33항에 있어서,
    상기 리던던트 데이터 생성기 회로는 상기 제1 인코딩된 데이터의 상기 부분의 표시의 적어도 파트를 복사함으로써 상기 리던던트 데이터를 생성하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  35. 제33항에 있어서,
    상기 제1 인코딩된 데이터는 제1 부분 및 제2 부분을 포함하고, 상기 제1 부분은 상기 제1 물리 페이지에 저장되며, 상기 제2 부분은 상기 메모리 다이에 제공됨 없이 폐기되는 것을 특징으로 하는 데이터 스토리지 디바이스.
  36. 제33항에 있어서,
    상기 제1 물리 페이지는 플래시 단일-레벨 셀(SLC) 페이지이고, 상기 제2 물리 페이지는 플래시 다중-레벨 셀(MLC) 물리 페이지이며, 상기 제2 인코딩된 데이터는 복수의 플래시 다중-레벨 셀(MLC) 로직 페이지들에서 상기 제2 물리 페이지에 저장되는 것을 특징으로 하는 데이터 스토리지 디바이스.
  37. 데이터 스토리지 디바이스로서,
    제어기와; 그리고
    제1 물리 페이지 및 제2 물리 페이지를 포함하는 메모리로 구성되며,
    상기 제어기는, 수신된 데이터 페이지를 인코딩하도록 제1 인코딩 동작을 개시하고 상기 제1 물리 페이지에 상기 인코딩 동작에 의해 생성된 제1 인코딩된 데이터의 적어도 부분을 저장하도록 구성되며, 상기 데이터 페이지는 호스트 디바이스로부터 수신되고, 상기 데이터 스토리지 디바이스는 상기 호스트 디바이스에 동작적으로 연결되며, 상기 제어기는 상기 데이터 페이지를 복구하도록 상기 제1 물리 페이지로부터 상기 제1 인코딩된 데이터의 상기 부분의 표시를 판독 및 디코딩하도록 더 구성되고, 상기 제어기는 상기 데이터 페이지를 인코딩하도록 제2 인코딩 동작을 개시하도록 구성되며, 상기 제2 인코딩 동작은 제2 인코딩된 데이터를 생성하고, 상기 제어기는 상기 제2 물리 페이지에 상기 제2 인코딩된 데이터를 저장하도록 구성되며, 상기 제2 인코딩된 데이터는 상기 제1 인코딩된 데이터의 상기 부분보다 많은 페이지들에 걸쳐 이어지는 것을 특징으로 하는 데이터 스토리지 디바이스.
  38. 제37항에 있어서,
    상기 제어기는 상기 제1 물리 페이지에 상기 제1 인코딩된 데이터의 전부를 저장하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  39. 제37항에 있어서,
    상기 제1 인코딩된 데이터는 제1 부분 및 제2 부분을 포함하고, 상기 제1 부분은 상기 제1 물리 페이지에 저장되며, 상기 제2 부분은 폐기되는 것을 특징으로 하는 데이터 스토리지 디바이스.
  40. 제37항에 있어서,
    상기 제1 인코딩 동작은 상기 제2 인코딩 동작과 동일한 ECC 기법을 사용하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  41. 제37항에 있어서,
    상기 제1 인코딩 동작은 제1 ECC 기법을 사용하고 상기 제2 인코딩 동작은 제2 ECC 기법을 사용하며, 상기 제2 ECC 기법은 상기 제1 ECC 기법과 다른 것을 특징으로 하는 데이터 스토리지 디바이스.
  42. 제37항에 있어서,
    상기 제1 인코딩된 데이터의 상기 부분은 상기 제2 물리 페이지보다 신뢰성있는 플래시 페이지에서의 제1 물리 페이지에 저장되는 것을 특징으로 하는 데이터 스토리지 디바이스.
  43. 제42항에 있어서,
    상기 제1 물리 페이지는 플래시 SLC 페이지이고, 상기 제2 물리 페이지는 플래시 MLC 페이지이며, 상기 제2 인코딩된 데이터는 복수의 플래시 MLC 로직 페이지들에서 상기 제2 물리 페이지에 저장되는 것을 특징으로 하는 데이터 스토리지 디바이스.
  44. 데이터를 기록하는 방법으로서,
    제어기 및 메모리를 가진 데이터 스토리지 디바이스 - 상기 메모리는 래치들 및 복수의 스토리지 요소들을 포함하고, 상기 메모리는 상기 스토리지 요소들의 상태들로의 비트들의 시퀀스들의 제1 매핑에 따라 각각의 스토리지 요소에 제1 개수의 비트들을 저장하도록 동작하고 - 에서,
    상기 메모리 내의 상기 래치들 내로 데이터 비트들을 로딩하는 단계와;
    하나 이상의 로직 동작들을 사용하여 상기 래치들에 지정 데이터 비트(designated data bit)들을 조작함(manipulating)으로써 상기 래치들에 조작된 데이터 비트들을 생성하는 단계와; 그리고
    상기 제1 매핑에 따라 스토리지 요소들의 그룹의 각각의 스토리지 요소들에 상기 조작된 데이터 비트들의 세트들을 저장하는 단계를 수행하는 것을 포함하고,
    상기 지정 데이터 비트들은 상태들로의 비트들의 시퀀스들의 제2 매핑에 따라 각각의 스토리지 요소들의 상태들에 대응하며, 상기 제2 매핑은 상기 제1 매핑과 다른 것을 특징으로 하는 데이터를 기록하는 방법.
  45. 제44항에 있어서,
    상기 래치들 및 상기 스토리지 요소들은 빌트-인 매핑(built-in mapping)으로서 상기 제1 매핑을 적용하도록 구성된 메모리 다이 내에 있고, 상기 제2 매핑은, 상기 래치들 내로 상기 데이터 비트들을 로딩하며 상기 조작된 데이터 비트들의 세트들을 저장하기 전에 로직 레지스터 동작(logical register operation)들에 의해 상기 데이터 비트들을 조작함으로써 생성되는 것을 특징으로 하는 데이터를 기록하는 방법.
  46. 제45항에 있어서,
    상기 메모리 다이는 상기 지정 데이터 비트들에 하나 이상의 로직 레지스터 동작들을 적용함으로써 상기 지정 데이터 비트들의 상태 변환(state transformation)을 수행하도록 하는 회로망을 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  47. 제44항에 있어서,
    상기 메모리는 플래시 MLC 메모리를 포함하고, 상기 스토리지 요소들의 그룹은 MLC 워드 라인인 것을 특징으로 하는 데이터를 기록하는 방법.
  48. 제47항에 있어서,
    상기 제1 매핑은 상기 MLC 워드 라인의 제1 로직 페이지에 대응하는 제1 에러율(error rate)과 관련되고, 상기 제2 매핑은 상기 MLC 워드 라인의 상기 제1 로직 페이지에 대응하는 제2 에러율과 관련되며, 상기 제2 에러율은 상기 제1 에러율보다 낮은 것을 특징으로 하는 데이터를 기록하는 방법.
  49. 제44항에 있어서,
    상기 데이터 비트들의 제1 그룹이 제1 래치 내로 로딩되고, 상기 지정 데이터 비트들을 조작하는 단계는 상기 데이터 비트들의 제1 그룹의 각각의 데이터 비트에 로직 NOT 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  50. 제44항에 있어서,
    상기 데이터 비트들의 제1 그룹이 제1 래치 내로 로딩되고, 상기 데이터 비트들의 제2 그룹이 제2 래치 내로 로딩되며, 상기 지정 데이터 비트들을 조작하는 단계는 상기 제1 그룹 및 상기 제2 그룹의 비트 단위(bit-wise) 로직 동작을 수행하는 단계를 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  51. 제50항에 있어서, 상기 비트 단위 로직 동작은 AND 동작 및 OR 동작 중 적어도 하나를 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  52. 제50항에 있어서,
    상기 비트 단위 로직 동작은 부정 배타적-OR(NOT-XOR) 동작을 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  53. 제50항에 있어서,
    상기 비트 단위 로직 동작은 스왑 동작(swap operation)을 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  54. 제44항에 있어서,
    상기 메모리는 상기 제2 매핑을 선택적으로(selectively) 적용하도록 구성가능한 것을 특징으로 하는 데이터를 기록하는 방법.
  55. 제44항에 있어서,
    상기 래치들의 각각의 제1 부분이 비지정 데이터 비트(undesignated data bit)들을 포함하고, 상기 래치들의 각각의 제2 부분이 상기 지정 데이터 비트들을 포함하며, 상기 조작된 데이터 비트들은 상기 스토리지 요소들의 그룹의 제2 부분에 저장될 상기 지정 데이터 비트들에 상기 제2 매핑을 적용하도록 상기 래치들의 각각의 제2 부분에서 생성되며, 상기 제1 매핑은 상기 스토리지 요소들의 그룹의 제1 부분에 저장될 상기 비지정 데이터 비트들에 적용되는 것을 특징으로 하는 데이터를 기록하는 방법.
  56. 제55항에 있어서,
    상기 스토리지 요소들의 그룹의 상기 제1 부분 및 상기 스토리지 요소들의 상기 제2 부분은 MLC 플래시 메모리의 단일 워드 라인에 있고, 상기 비지정 데이터 비트들에 상기 제1 매핑을 적용하고 상기 지정 데이터 비트들에 상기 제2 매핑을 적용한 이후에, 상기 단일 워드 라인의 각각의 로직 페이지와 관련된 에러율들은 실질적으로 동일화되는 것을 특징으로 하는 데이터를 기록하는 방법.
  57. 제55항에 있어서,
    상기 스토리지 요소들의 그룹의 상기 제1 부분은 다중-플레인 플래시 메모리(multi-plane flash memory)의 제1 플레인에 있고, 상기 스토리지 요소들의 그룹의 제2 부분은 상기 다중-플레인 플래시 메모리의 제2 플레인에 있는 것을 특징으로 하는 데이터를 기록하는 방법.
  58. 데이터 스토리지 디바이스로서,
    복수의 스토리지 요소들 및 상기 스토리지 요소들의 그룹에 저장될 데이터를 래치하도록 동작하는 래치들을 포함하는 메모리와;
    상기 래치들로부터 데이터를 수신하고, 상기 스토리지 요소들의 상태들로의 비트들의 시퀀스들의 제1 매핑에 따라 상기 스토리지 요소들의 그룹의 각각의 스토리지 요소에 제1 개수의 비트들을 저장하도록 동작하는 기록 회로망과; 그리고
    하나 이상의 로직 동작들을 사용하여 상기 래치들 내의 지정 데이터 비트들을 조작함으로써 상기 래치들에 조작된 데이터 비트들을 생성하도록 동작하는 매핑 회로망으로 구성되고, 상기 기록 회로망은 상기 스토리지 요소들의 그룹의 각각의 스토리지 요소들에 상기 조작된 데이터 비트들의 세트들을 저장하도록 동작하며,
    상기 지정 데이터 비트들은 상태들로의 비트들의 시퀀스들의 제2 매핑에 따라 상기 각각의 스토리지 요소들의 상태들에 대응하고, 상기 제2 매핑은 상기 제1 매핑과 다른 것을 특징으로 하는 데이터 스토리지 디바이스.
  59. 제58항에 있어서,
    상기 메모리에 연결된 제어기를 더 포함하고, 상기 매핑 회로망은 상기 데이터가 상기 제어기로부터 수신된 이후에 상기 메모리에서 상기 조작된 데이터 비트들을 생성하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  60. 제58항에 있어서,
    상기 메모리는 빌트-인 매핑으로서 상기 제1 매핑을 적용하도록 구성되고, 상기 제2 매핑은, 상기 래치들 내로 상기 데이터를 로딩시키고 로직 레지스터 동작들에 의해 상기 지정 데이터 비트들을 조작함으로써 생성되는 것을 특징으로 하는 데이터 스토리지 디바이스.
  61. 제58항에 있어서,
    상기 메모리는 플래시 MLC 메모리를 포함하고, 상기 스토리지 요소들의 그룹은 MLC 워드 라인인 것을 특징으로 하는 데이터 스토리지 디바이스.
  62. 제61항에 있어서,
    상기 제1 매핑은 상기 MLC 워드 라인의 제1 로직 페이지에 대응하는 제1 에러율과 관련되고, 상기 제2 매핑은 상기 MLC 워드 라인의 상기 제1 로직 페이지에 대응하는 제2 에러율과 관련되며, 상기 제2 에러율은 상기 제1 에러율보다 낮은 것을 특징으로 하는 데이터 스토리지 디바이스.
  63. 제58항에 있어서,
    상기 래치들은 제1 래치를 포함하고, 상기 매핑 회로망은 상기 제1 래치에서의 데이터 비트들의 제1 그룹의 각각의 데이터 비트에 로직 NOT 동작을 수행하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  64. 제58항에 있어서,
    상기 래치들을 제1 래치 및 제2 래치를 포함하고, 상기 매핑 회로망은 상기 제1 래치에서의 데이터 비트들의 제1 그룹 및 상기 제2 래치에서의 데이터 비트들의 제2 그룹의 비트 단위 로직 동작을 수행하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  65. 제64항에 있어서,
    상기 비트 단위 로직 동작은 AND 동작 및 OR 동작 중 적어도 하나를 포함하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  66. 제64항에 있어서,
    상기 비트 단위 로직 동작은 부정 배타적-OR(NOT-XOR) 동작을 포함하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  67. 제64항에 있어서,
    상기 비트 단위 로직 동작은 스왑 동작을 포함하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  68. 제58항에 있어서,
    상기 메모리는 상기 제2 매핑을 선택적으로 적용하도록 구성가능한 것을 특징으로 하는 데이터 스토리지 디바이스.
  69. 제58항에 있어서,
    상기 지정 데이터 비트들은 상기 래치들의 각각의 제2 부분에 위치되고, 비지정 데이터 비트들은 상기 래치들의 각각의 제1 부분에 위치되며, 상기 매핑 회로망은, 상기 래치들의 각각의 상기 제2 부분에 상기 조작된 데이터 비트들을 생성하고 상기 래치들의 각각의 상기 제1 부분에서 상기 비지정 데이터 비트들을 조작하지 않도록 구성되며, 상기 제2 매핑은 상기 스토리지 요소들의 그룹의 제2 부분에 저장될 상기 지정 데이터 비트들에 적용되고, 상기 제1 매핑은 상기 스토리지 요소들의 그룹의 제1 부분에 저장될 상기 비지정 데이터 비트들에 적용되는 것을 특징으로 하는 데이터 스토리지 디바이스.
  70. 제69항에 있어서,
    상기 메모리는 MLC 플래시 메모리를 포함하고, 상기 스토리지 요소들의 그룹의 상기 제1 부분 및 상기 스토리지 요소들의 그룹의 상기 제2 부분은 MLC 플래시 메모리의 단일 워드 라인에 있으며, 상기 비지정 데이터 비트들에 상기 제1 매핑을 적용하고 상기 지정 데이터 비트들에 제2 매핑을 적용한 이후에, 상기 단일 워드 라인의 각각의 로직 페이지와 관련된 에러율들은 실질적으로 동일화되는 것을 특징으로 하는 데이터 스토리지 디바이스.
  71. 제69항에 있어서,
    상기 메모리는 다중-플레인 플래시 메모리의 제1 플레인 및 제2 플레인을 포함하고, 상기 스토리지 요소들의 그룹의 상기 제1 부분은 상기 제1 플레인에 있으며, 상기 스토리지 요소들의 그룹의 상기 제2 부분은 상기 제2 플레인에 있는 것을 특징으로 하는 데이터 스토리지 디바이스.
  72. 데이터를 기록하는 방법으로서,
    플래시 MLC 메모리를 가진 데이터 스토리지 디바이스에서,
    비트들의 제1 그룹 및 비트들의 제2 그룹을 포함하는 데이터를 수신하는 단계와;
    비트들의 제3 그룹을 생성하도록 상기 비트들의 제2 그룹 상에서 셰이핑 인코딩 동작(shaping encoding operation)을 개시하는 단계와, 상기 비트들의 제3 그룹은 상기 비트들의 제2 그룹보다 많은 비트들을 가지고, 상기 셰이핑 인코딩 동작은 상기 비트들의 제3 그룹에 비-균일한 확률 분포의 비트 값들을 생성하도록 구성되며; 그리고
    상기 MLC 메모리의 물리 페이지 내에 있는 제1 로직 페이지에 상기 비트들의 제1 그룹 및 상기 비트들의 제1 그룹에 대응하는 제1 ECC 패리티 비트들을 저장하는 단계 및 상기 MLC 메모리의 물리 페이지 내에 있는 제2 로직 페이지에 상기 비트들의 제3 그룹 및 상기 비트들의 제3 그룹에 대응하는 제2 ECC 패리티 비트들을 저장하는 단계를 수행하는 것을 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  73. 제72항에 있어서,
    상기 제1 로직 페이지는 제1 에러율과 관련되고, 상기 제2 로직 페이지는 상기 제1 에러율보다 작은 제2 에러율과 관련되는 것을 특징으로 하는 데이터를 기록하는 방법.
  74. 제72항에 있어서,
    상기 제1 ECC 패리티 비트들은 상기 제2 ECC 패리티 비트들보다 많은 비트들을 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  75. 제72항에 있어서,
    상기 비트들의 제3 그룹은 상기 비트들의 제2 그룹 및 셰이핑 패리티 비트들을 포함하고, 상기 제1 ECC 패리티 비트들은 상기 제2 ECC 패리티 비트들에 상기 셰이핑 패리티 비트들을 더한 것과 동일한 수의 비트들을 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  76. 제72항에 있어서,
    상기 제1 ECC 패리티 비트들은 상기 제1 로직 페이지에서 최대 제1 개수의 에러들을 정정할 수 있고, 상기 제2 ECC 패리티 비트들은 상기 제2 로직 페이지에서 최대 제2 개수의 에러들을 정정할 수 있으며, 상기 제1 로직 페이지 내의 에러들의 수가 상기 제1 개수를 초과할 제1 확률은 상기 제2 로직 페이지 내의 에러들의 수가 상기 제2 개수를 초과할 제2 확률과 실질적으로 동일한 것을 특징으로 하는 데이터를 기록하는 방법.
  77. 제72항에 있어서,
    상기 셰이핑 인코딩 동작은 상기 MLC 메모리의 물리 페이지의 개별적인 셀들이 중간 상태(intermediate state)들로 프로그래밍될 수 있는 가능성(likelihood)을 증가시키고, 상기 MLC 메모리의 물리 페이지의 개별적인 셀들이 최하위 상태(lowest state)로 프로그래밍될 수 있는 가능성을 감소시키는 것을 특징으로 하는 데이터를 기록하는 방법.
  78. 제72항에 있어서,
    상기 셰이핑 인코딩 동작은 상기 MLC 메모리의 물리 페이지의 개별적인 셀들이 중간 상태들로 프로그래밍될 수 있는 가능성을 증가시키고, 상기 MLC 메모리의 물리 페이지의 개별적인 셀들이 최상위 상태(highest state)로 프로그래밍될 수 있는 가능성을 감소시키는 것을 특징으로 하는 데이터를 기록하는 방법.
  79. 데이터를 판독하는 방법으로서,
    플래시 MLC 메모리를 가진 데이터 스토리지 디바이스에서,
    상기 MLC 메모리의 물리 페이지 내에 있는 제1 로직 페이지에서 비트들 및 제1 ECC 패리티 비트들의 제1 그룹의 제1 표시를 검색하고, 상기 MLC 메모리의 물리 페이지 내에 있는 제2 로직 페이지에서 비트들의 제3 그룹 및 제2 ECC 패리티 비트들의 제2 표시를 검색하도록 스토리지 요소들의 그룹을 판독하는 단계와;
    상기 비트들의 제1 그룹을 복구하도록 상기 제1 표시의 제1 ECC 디코딩 동작을 개시하는 단계와;
    상기 비트들의 제3 그룹을 복구하도록 상기 제2 표시의 제2 ECC 디코딩 동작을 개시하는 단계와; 그리고
    비트들의 제2 그룹을 생성하도록 상기 비트들의 제3 그룹 상에서 셰이핑 디코딩 동작을 개시하는 단계를 수행하는 것을 포함하고, 상기 비트들의 제3 그룹은 상기 비트들이 제2 그룹보다 많은 비트들을 가지고, 상기 셰이핑 디코딩 동작은 상기 비트들의 제2 그룹에 균일한 확률 분포의 비트 값들을 생성하도록 구성되는 것을 특징으로 하는 데이터를 판독하는 방법.
  80. 제79항에 있어서,
    상기 제1 ECC 패리티 비트들은 상기 제2 ECC 패리티 비트들보다 많은 비트들을 포함하는 것을 특징으로 하는 데이터를 판독하는 방법.
  81. 제79항에 있어서,
    상기 제1 ECC 패리티 비트들은 상기 제1 표시에서 최대 제1 개수의 에러들을 정정할 수 있고, 상기 제2 ECC 패리티 비트들을 상기 제2 표시에서 최대 제2 개수의 에러들을 정정할 수 있으며, 상기 제1 표시 내의 에러들의 수가 상기 제1 개수를 초과할 제1 확률은 상기 제2 표시 내의 에러들의 수가 상기 제2 개수를 초과할 제2 확률과 실질적으로 동일한 것을 특징으로 하는 데이터를 판독하는 방법.
  82. 제79항에 있어서,
    상기 제1 로직 페이지는 제1 에러율과 관련되고, 상기 제2 로직 페이지는 상기 제1 에러율보다 작은 제2 에러율과 관련되는 것을 특징으로 하는 데이터를 판독하는 방법.
  83. 데이터 스토리지 디바이스로서,
    플래시 MLC 메모리와; 그리고
    제어기로 구성되며,
    상기 제어기는
    비트들의 제1 그룹 및 비트들의 제2 그룹을 포함하는 데이터를 수신하고,
    비트들의 제3 그룹을 생성하도록 상기 비트들의 제2 그룹 상에서 셰이핑 인코딩 동작을 수행하며, 상기 비트들의 제3 그룹은 상기 비트들의 제2 그룹보다 많은 비트들을 가지고, 상기 셰이핑 인코딩 동작은 상기 비트들의 제3 그룹에 비-균일한 확률 분포의 비트 값들을 생성하도록 구성되며,
    상기 MLC 메모리의 물리 페이지 내에 포함되는 제1 로직 페이지에 저장되도록, 상기 메모리에 상기 비트들의 제1 그룹 및 상기 비트들의 제1 그룹에 대응하는 제1 ECC 패리티 비트들을 보내고,
    상기 MLC 메모리의 물리 페이지 내에 포함되는 제2 로직 페이지에 저장되도록, 상기 메모리에 상기 비트들의 제3 그룹 및 상기 비트들의 제3 그룹에 대응하는 제2 ECC 패리티 비트들을 보내도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  84. 제83항에 있어서,
    상기 제1 로직 페이지는 제1 에러율과 관련되고, 상기 제2 로직 페이지는 상기 제1 에러율보다 작은 제2 에러율과 관련되는 것을 특징으로 하는 데이터 스토리지 디바이스.
  85. 제83항에 있어서,
    상기 제1 ECC 패리티 비트들은 상기 제2 ECC 패리티 비트들보다 많은 비트들을 포함하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  86. 제83항에 있어서,
    상기 제1 ECC 패리티 비트들은 상기 제1 로직 페이지에서 최대 제1 개수의 에러들을 정정할 수 있고, 상기 제2 ECC 패리티 비트들은 상기 제2 로직 페이지에서 최대 제2 개수의 에러들을 정정할 수 있으며, 상기 제1 로직 페이지 내의 에러들의 수가 상기 제1 개수를 초과할 제1 확률은 상기 제2 로직 페이지 내의 에러들의 수가 상기 제2 개수를 초과할 제2 확률과 실질적으로 동일한 것을 특징으로 하는 데이터 스토리지 디바이스.
  87. 제83항에 있어서,
    상기 셰이핑 인코딩 동작은 상기 MLC 메모리의 물리 페이지의 개별적인 셀들이 중간 상태들로 프로그래밍될 수 있는 가능성을 증가시키고, 상기 MLC 메모리의 물리 페이지의 개별적인 셀들이 최하위 상태로 프로그래밍될 수 있는 가능성을 감소시키는 것을 특징으로 하는 데이터 스토리지 디바이스.
  88. 제83항에 있어서,
    상기 셰이핑 인코딩 동작은 상기 MLC 메모리의 물리 페이지의 개별적인 셀들이 중간 상태들로 프로그래밍될 수 있는 가능성을 증가시키고, 상기 MLC 메모리의 물리 페이지의 개별적인 셀들이 최상위 상태로 프로그래밍될 수 있는 가능성을 감소시키는 것을 특징으로 하는 데이터 스토리지 디바이스.
  89. 데이터 스토리지 디바이스로서,
    플래시 MLC 메모리와; 그리고
    제어기로 구성되며,
    상기 제어기는
    상기 MLC 메모리의 물리 페이지 내에 있는 제1 로직 페이지로부터 비트들의 제1 그룹 및 제1 ECC 패리티 비트들의 제1 표시를 검색하고,
    상기 MLC 메모리의 물리 페이지 내에 있는 제2 로직 페이지로부터 비트들의 제3 그룹 및 제2 ECC 패리티 비트들의 제2 표시를 검색하며,
    상기 비트들의 제1 그룹을 복구하도록 상기 제1 표시의 제1 ECC 디코딩 동작을 개시하고,
    상기 비트들의 제3 그룹을 복구하도록 상기 제2 표시의 제2 ECC 디코딩 동작을 개시하며,
    비트들의 제2 그룹을 생성하도록 상기 비트들의 제3 그룹 상에서 셰이핑 디코딩 동작을 개시하도록 구성되며,
    상기 비트들의 제3 그룹은 상기 비트들의 제2 그룹보다 많은 비트들을 가지고, 상기 셰이핑 디코딩 동작은 상기 비트들의 제2 그룹에 균일한 확률 분포의 비트 값들을 생성하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  90. 제89항에 있어서,
    상기 제1 ECC 패리티 비트들을 상기 제2 ECC 패리티 비트들보다 많은 비트들을 포함하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  91. 제89항에 있어서,
    상기 제1 ECC 패리티 비트들은 상기 제1 표시에서 최대 제1 개수의 에러들을 정정할 수 있고, 상기 제2 ECC 패리티 비트들은 상기 제2 표시에서 최대 제2 개수의 에러들을 정정할 수 있으며, 상기 제1 개수는 상기 제2 개수보다 많은 것을 특징으로 하는 데이터 스토리지 디바이스.
  92. 제91항에 있어서,
    상기 제1 표시 내의 에러들의 수가 상기 제1 개수를 초과할 제1 확률은 상기 제2 표시 내의 에러들의 수가 상기 제2 개수를 초과할 제2 확률과 실질적으로 동일한 것을 특징으로 하는 데이터 스토리지 디바이스.
  93. 데이터를 판독하는 방법으로서,
    제어기 및 메모리를 가진 데이터 스토리지 디바이스 - 상기 메모리는 복수의 스토리지 요소들을 포함하고 - 에서,
    상기 메모리에서, 특별한 스토리지 요소에 대응하는 비트들의 세트를 생성하는 단계와, 상기 비트들의 세트는 임계 전압 간격(threshold voltage interval)들의 그룹을 나타내고, 상기 특별한 스토리지 요소의 임계 전압은 상기 그룹 내의 상기 임계 전압 간격들 중 하나에 대응하고, 상기 그룹 내의 적어도 일 임계 전압 간격은 상기 그룹 내에 있지 않은 중간 임계 전압 간격(intervening threshold voltage interval)에 의해 상기 그룹 내의 다른 임계 전압 간격과 분리되며; 그리고
    상기 제어기에 상기 비트들의 세트를 보내는 단계를 수행하는 것을 포함하고, 상기 비트들의 세트는 상기 특별한 스토리지 요소로부터 판독된 값에 대응하는 제1 하드 비트(hard bit) 및 신뢰성 척도(reliability measure)에 대응하는 제1 소프트 비트(soft bit)를 포함하는 것을 특징으로 하는 데이터를 판독하는 방법.
  94. 제93항에 있어서,
    상기 특별한 스토리지 요소는 상기 메모리의 물리 페이지 내에 있고, 상기 물리 페이지는 제1 로직 페이지 및 제2 로직 페이지를 포함하고, 상기 특별한 스토리지 요소의 상태는, 상기 제1 로직 페이지에 대응하는 상기 제1 하드 비트 및 상기 제2 로직 페이지에 대응하는 제2 하드 비트를 포함하는 복수의 하드 비트들에 대응하는 것을 특징으로 하는 데이터를 판독하는 방법.
  95. 제94항에 있어서,
    상기 비트들의 세트는 상기 제1 로직 페이지를 판독하도록 하는 요청에 응답하여 생성되고, 상기 비트들의 세트는 상기 제2 하드 비트를 포함하지 않는 것을 특징으로 하는 데이터를 판독하는 방법.
  96. 제93항에 있어서,
    상기 제어기는 소프트 입력 ECC 디코더를 포함하고, 상기 제1 하드 비트 및 상기 제1 소프트 비트는 상기 메모리로부터 판독되는 데이터의 ECC 디코딩 동작의 파트로서 상기 소프트 입력 ECC 디코더에 제공되는 것을 특징으로 하는 데이터를 판독하는 방법.
  97. 제93항에 있어서,
    상기 소프트 비트는 상기 임계 전압이 상기 임계 전압 간격들의 그룹을 이루는 임계 전압 간격들 중 어느 임계 전압 간격의 중앙 영역(center region) 내에 있는지 나타내는 것을 특징으로 하는 데이터를 판독하는 방법.
  98. 제97항에 있어서,
    상기 비트들의 제1 세트는 상기 제어기로부터 제1 저장된 데이터에 대한 제1 요청에 응답하여 상기 제어기에 보내지고,
    상기 제어기에 상기 비트들의 제1 세트를 보낸 이후에,
    상기 메모리에서, 상기 제어기로부터 제2 요청을 수신하는 단계와, 추가적인 정보에 대한 상기 제2 요청은 상기 제1 저장된 데이터에 대응하고;
    상기 메모리에서, 상기 특별한 스토리지 요소에 대응하는 제2 소프트 비트를 결정하는 단계와, 상기 제2 소프트 비트는 상기 임계 전압이 상기 임계 전압 간격들의 그룹을 이루는 임계 전압 간격들 중 어느 임계 전압 간격의 제2 영역 내에 있는지 나타내고, 각각의 특별한 전압 간격의 상기 제2 영역은, 일 상태에 대응하고 상기 제1 영역과 다른 셀 전압 분포의 실질적으로 중간 지점(midpoint)에 집중되고; 그리고
    상기 제어기에 상기 제2 소프트 비트 값을 보내는 단계를 더 포함하는 것을 특징으로 하는 데이터를 판독하는 방법.
  99. 제93항에 있어서,
    상기 메모리는 순차적인 판독 동작 동안 신뢰성을 나타내는 소프트 비트 패턴과 동일한 소프트 비트 패턴을 페이지 단위 판독 동작 동안 신뢰성을 나타내도록 제공하도록 구성된 것을 특징으로 하는 데이터를 판독하는 방법.
  100. 제93항에 있어서,
    상기 소프트 비트 패턴은 상태들로의 비트들의 선택된 매핑 기법(selected mapping scheme)에 독립적인 것을 특징으로 하는 데이터를 판독하는 방법.
  101. 제93항에 있어서,
    상기 비트들의 세트는 상기 비트들의 세트의 어떤 소프트 비트에 디스크램블러(descrambler)를 적용함 없이 상기 비트들의 세트의 모든 하드 비트들에 상기 디스크램블러를 적용함으로써 상기 메모리에서 디스크램블되는 것을 특징으로 하는 데이터를 판독하는 방법.
  102. 제93항에 있어서,
    상기 메모리는 플래시 메모리를 포함하고, 상기 특별한 스토리지 요소는 상기 플래시 메모리의 MLC인 것을 특징으로 하는 데이터를 판독하는 방법.
  103. 제93항에 있어서,
    상기 비트들의 세트를 생성하는 단계는 비-균일한 전압 간격들에서 발생되는 단일 시퀀스의 감지 동작들을 사용하여 수행되는 것을 특징으로 하는 데이터를 판독하는 방법.
  104. 데이터 스토리지 디바이스로서,
    제어기와; 그리고
    복수의 스토리지 요소들을 포함하는 메모리로 구성되며,
    상기 메모리는 특별한 스토리지 요소에 대응하는 비트들의 세트를 발생시키고 상기 제어기에 상기 비트들의 세트를 보내도록 구성되며, 상기 비트들의 세트는 임계 전압 간격들의 그룹을 나타내고, 상기 특별한 스토리지 요소의 임계 전압은 상기 그룹 내의 상기 임계 전압 간격들 중 하나에 대응하며, 상기 그룹 내의 적어도 일 임계 전압 간격은 상기 그룹 내에 있지 않은 중간 임계 전압 간격에 의해 상기 그룹 내의 다른 임계 전압 간격과 분리되고,
    상기 비트들의 세트는 상기 특별한 스토리지 요소로부터 판독된 값에 대응하는 제1 하드 비트 및 신뢰성 척도에 대응하는 제1 소프트 비트를 포함하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  105. 제104항에 있어서,
    상기 특별한 스토리지 요소는 상기 메모리의 물리 페이지 내에 있고, 상기 물리 페이지는 제1 로직 페이지 및 제2 로직 페이지를 포함하며, 상기 특별한 스토리지 요소의 상태는, 상기 제1 로직 페이지에 대응하는 상기 제1 하드 비트 및 상기 제2 로직 페이지에 대응하는 제2 하드 비트를 포함하는 복수의 하드 비트들에 대응하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  106. 제105항에 있어서,
    상기 비트들의 세트는 상기 제어기로부터 상기 제1 로직 페이지를 판독하도록 하는 요청에 응답하여 생성되고, 상기 비트들의 세트는 상기 제2 하드 비트를 포함하지 않는 것을 특징으로 하는 데이터 스토리지 디바이스.
  107. 제104항에 있어서,
    상기 제어기는 소프트 입력 ECC 디코더를 포함하고, 상기 제어기는 ECC 디코딩 동작의 파트로서 상기 소프트 입력 ECC 디코더에 상기 제1 하드 비트 및 상기 제1 소프트 비트를 제공하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  108. 제104항에 있어서,
    상기 제1 소프트 비트는 상기 임계 전압이 상기 임계 전압 간격들의 그룹을 이루는 임계 전압 간격들 중 어느 임계 전압 간격의 중앙 영역 내에 있는지 나타내는 것을 특징으로 하는 데이터 스토리지 디바이스.
  109. 제104항에 있어서,
    상기 제1 소프트 비트는 상기 임계 전압이 상태로 프로그래밍되는 셀들의 셀 전압 분포의 중앙 영역 내에 있는지 나타내고, 상기 셀들의 최종 판독 임계 전압들은 상기 셀 전압 분포를 나타내며(manifest), 상기 영역은 상기 전압 간격들의 그룹의 임계 전압 간격에 속하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  110. 제108항에 있어서,
    상기 메모리는 상기 제어기로부터 제1 저장된 데이터에 대한 제1 요청에 응답하여 상기 제어기에 비트들의 제1 세트를 보내도록 구성되고, 상기 메모리는 상기 제어기로부터 제2 요청을 수신함에 응답하여 제2 소프트 비트들 결정하고 상기 제2 소프트 비트를 상기 제어기에 보내도록 더 구성되며, 추가적인 정보에 대한 상기 제2 요청은 상기 제1 저장된 데이터에 대응하고, 상기 제2 소프트 비트는 상기 특별한 스토리지 요소에 대응하며 상기 임계 전압이 상기 임계 전압 간격들의 그룹을 이루는 임계 전압 간격들 중 어느 임계 전압 간격의 제2 영역 내에 있는지 나타내고, 그리고 각각의 특별한 전압 간격의 상기 제2 영역은 상기 특별한 전압 간격의 실질적으로 중간 지점에 집중되며 상기 제1 영역과 다른 것을 특징으로 하는 데이터 스토리지 디바이스.
  111. 제104항에 있어서,
    상기 메모리는 순차적인 판독 동작 동안 신뢰성을 나타내는 소프트 비트 패턴과 동일한 소프트 비트 패턴을 페이지 단위 판독 동작 동안 신뢰성을 나타내도록 제공하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  112. 제104항에 있어서,
    상기 소프트 비트 패턴은 메모리 셀의 상태들에 비트들을 매핑하는 선택된 매핑 기법에 독립적인 것을 특징으로 하는 데이터 스토리지 디바이스.
  113. 제104항에 있어서,
    상기 메모리는 디스크램블러를 포함하고, 상기 메모리는 상기 비트들의 세트의 어떤 소프트 비트에 상기 디스크램블러를 적용함 없이 상기 비트들의 세트의 모든 하드 비트들에 상기 디스크램블러를 적용하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  114. 제104항에 있어서,
    상기 메모리는 플래시 메모리를 포함하고, 상기 특별한 스토리지 요소는 상기 플래시 메모리의 MLC인 것을 특징으로 하는 데이터 스토리지 디바이스.
  115. 데이터를 기록하는 방법으로서,
    데이터 스토리지 디바이스에서,
    상기 데이터 스토리지 디바이스에 저장될 데이터 페이지들을 수신하는 단계와;
    상기 수신된 데이터 페이지들에 대응하는 코드워드들을 생성하는 단계와;
    상기 데이터 스토리지 디바이스의 제1 메모리 부분의 물리 페이지들에 상기 코드워드들을 저장하는 단계와, 특별한 데이터 페이지에 대응하는 특별한 코드워드의 제1 부분이 상기 제1 메모리 부분의 제1 물리 페이지에 저장되고 상기 특별한 코드워드의 제2 부분이 상기 제1 메모리 부분의 제2 물리 페이지에 저장되며; 그리고
    상기 제1 메모리 부분의 상기 물리 페이지들로부터 상기 데이터 스토리지 디바이스의 제2 메모리 부분의 물리 페이지로 상기 코드워드들을 복사하는 단계를 수행하는 것을 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  116. 제115항에 있어서,
    상기 특별한 코드워드는 복수의 서브-코드들 및 상기 복수의 서브-코드들의 공동 패리티(joint parity)를 포함하는 연결된(concatenated) 코드워드인 것을 특징으로 하는 데이터를 기록하는 방법.
  117. 제116항에 있어서,
    상기 복수의 서브-코드들의 각각은 서브-코드 데이터 부분 및 서브-코드 패리티 부분을 포함하고, 상기 특별한 코드워드의 제1 부분은 서브-코드 데이터 부분들을 포함하며, 상기 특별한 코드워드의 제2 부분은 상기 공동 패리티를 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  118. 제117항에 있어서,
    상기 복수의 서브-코드들 및 상기 공동 패리티를 생성 및 저장하는 것은 상기 서브-코드들의 각각을 다중-페이즈 디코딩(multi-phase decoding)할 수 있는 것을 특징으로 하는 데이터를 기록하는 방법.
  119. 제115항에 있어서,
    상기 메모리 디바이스는 플래시 메모리를 포함하고, 상기 제1 메모리 부분은 상기 플래시 메모리의 SLC를 포함하며, 상기 제2 메모리 부분은 상기 플래시 메모리의 MLC를 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  120. 제119항에 있어서,
    상기 제2 메모리 부분의 상기 물리 페이지는 단일 MLC 워드라인인 것을 특징으로 하는 데이터를 기록하는 방법.
  121. 제119항에 있어서,
    상기 MLC의 각각은 셀 당 제1 개수의 비트들에 따라 데이터를 저장하도록 구성되고, 제2 개수는 수신된 데이터 페이지들의 카운트(count)에 대응하며, 상기 제2 개수는 상기 제1 개수와 동일한 것을 특징으로 하는 데이터를 기록하는 방법.
  122. 제121항에 있어서,
    상기 코드워드들은 상기 제1 메모리 부분의 제3 개수의 상기 물리 페이지들에 저장되고, 상기 제3 개수는 상기 제2 개수보다 많은 것을 특징으로 하는 데이터를 기록하는 방법.
  123. 제115항에 있어서,
    상기 특별한 코드워드는 사용자 데이터, 제1 패리티 비트들 및 제2 패리티 비트들을 포함하고, 상기 사용자 데이터 및 상기 제1 패리티 비트들은 상기 특별한 코드워드의 상기 제1 부분에 포함되며, 상기 제2 패리티 비트들은 상기 특별한 코드워드의 상기 제2 부분에 포함되는 것을 특징으로 하는 데이터를 기록하는 방법.
  124. 제123항에 있어서,
    상기 제2 메모리 부분의 상기 물리 페이지는 제1 로직 페이지, 제2 로직 페이지 및 제3 로직 페이지를 포함하고, 상기 특별한 코드워드의 상기 제1 부분은 상기 제1 로직 페이지에 복사되며, 상기 특별한 코드워드의 상기 제2 부분은 상기 제2 로직 페이지에 복사되고, 상기 특별한 코드워드의 제3 부분은 상기 제3 로직 페이지에 복사되는 것을 특징으로 하는 데이터를 기록하는 방법.
  125. 제115항에 있어서,
    상기 데이터 페이지들은 호스트 디바이스로부터 수신되고, 상기 데이터 스토리지 디바이스는 상기 호스트 디바이스에 동작적으로 연결되는 것을 특징으로 하는 데이터를 기록하는 방법.
  126. 제115항에 있어서,
    상기 제1 메모리 부분의 각각의 물리 페이지는 상기 특별한 코드워드의 상기 제1 부분 또는 상기 특별한 코드워드의 상기 제2 부분으로 프로그래밍될 실질적으로 동일한 확률을 가지는 것을 특징으로 하는 데이터를 기록하는 방법.
  127. 제115항에 있어서,
    상기 메모리의 상기 제1 부분의 물리 페이지들 내의 코드워드 부분들의 상대적인 위치들은 상기 코드워드 부분들이 상기 제1 메모리 부분으로부터 상기 제2 메모리 부분의 물리 페이지의 로직 페이지들에 복사될 때 유지되는 것을 특징으로 하는 데이터를 기록하는 방법.
  128. 제115항에 있어서,
    상기 호스트 디바이스로부터 특별한 데이터 부분에 대한 요청을 수신함에 응답하여,
    단일 페이지 판독을 통해 제1 페이지로부터 요청된 데이터 부분에 대응하는 코드워드의 제1 부분을 판독하는 단계와;
    상기 제1 페이지로부터의 판독 데이터 및 판독 패리티에 근거하여 상기 요청된 데이터 부분을 디코딩하도록 제1 디코딩 동작을 개시하는 단계와;
    상기 제1 디코딩 동작의 디코딩 실패(failure)에 응답하여,
    제2 페이지로부터 상기 요청된 데이터 부분에 대응하는 상기 코드워드의 제2 부분을 판독하는 단계와;
    상기 판독 데이터 및 상기 판독 패리티에 근거하여 그리고 또한, 상기 코드워드의 상기 제2 부분으로부터의 판독 공동 패리티에 근거하여, 상기 요청된 데이터 부분을 디코딩하도록 제2 디코딩 동작을 개시하는 단계를 더 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  129. 데이터 스토리지 디바이스로서,
    물리 페이지들을 가진 메모리와; 그리고
    호스트 디바이스로부터 수신되는 데이터 페이지들에 대응하는 코드워드들을 생성하도록 구성된 제어기로 구성되며,
    상기 데이터 스토리지 디바이스는 상기 호스트 디바이스에 동작적으로 연결되고, 상기 제어기는 상기 메모리의 제1 부분의 물리 페이지들에 상기 코드워드들을 저장하도록 구성되며, 특별한 데이터 페이지에 대응하는 특별한 코드워드의 제1 부분이 상기 제1 메모리 부분의 제1 물리 페이지에 저장되고, 상기 특별한 코드워드의 제2 부분이 상기 제1 메모리 부분의 제2 물리 페이지에 저장되며,
    상기 데이터 스토리지 디바이스는 상기 메모리의 상기 제1 부분으로부터 상기 메모리의 제2 부분의 물리 페이지로 상기 코드워드들을 복사하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  130. 제129항에 있어서,
    상기 특별한 코드워드는 서브-코드들의 각각을 다중-페이즈 디코딩할 수 있도록 복수의 서브-코드들 및 상기 복수의 서브-코드들의 공동 패리티를 포함하는 연결된 코드워드인 것을 특징으로 하는 데이터 스토리지 디바이스.
  131. 제130항에 있어서,
    상기 복수의 서브-코드들의 각각은 서브-코드 데이터 부분 및 서브-코드 패리티 부분을 포함하고, 상기 특별한 코드워드의 제1 부분은 상기 서브-코드 데이터 부분들을 포함하며, 상기 특별한 코드워드의 제2 부분은 상기 공동 패리티를 포함하는 것을 특징으로 하는 데이터 스토리지 디바이스.
  132. 제129항에 있어서,
    상기 메모리는 플래시 메모리를 포함하고, 상기 메모리의 제1 부분은 상기 플래시 메모리의 SLC 부분이며, 상기 메모리의 제2 부분은 상기 플래시 메모리의 MLC 부분인 것을 특징으로 하는 데이터 스토리지 디바이스.
  133. 제132항에 있어서,
    상기 메모리의 제2 부분의 물리 페이지는 단일 MLC 워드라인인 것을 특징으로 하는 데이터 스토리지 디바이스.
  134. 제132항에 있어서,
    상기 MLC 부분은 셀 당 제1 개수의 비트들에 따라 데이터를 저장하도록 구성되고, 상기 제어기는 수신되는 제2 개수의 데이터 페이지들에 대응하는 상기 코드워드들을 생성하도록 구성되며, 상기 제2 개수는 상기 제1 개수와 동일한 것을 특징으로 하는 데이터 스토리지 디바이스.
  135. 제134항에 있어서,
    ECC 엔진을 더 포함하여 구성되고, 상기 제어기는 상기 코드워드들을 생성하도록 상기 ECC 엔진에 상기 데이터 페이지를 제공하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  136. 제134항에 있어서,
    상기 코드워드들은 상기 제1 메모리 부분의 제3 개수의 물리 페이지들에 저장되고, 상기 제3 개수는 상기 제2 개수보다 많은 것을 특징으로 하는 데이터 스토리지 디바이스.
  137. 제129항에 있어서,
    상기 특별한 코드워드는 사용자 데이터, 제1 패리티 비트들 및 제2 패리티 비트들을 포함하고, 상기 사용자 데이터 및 상기 제1 패리티 비트들은 상기 특별한 코드워드의 상기 제1 부분에 포함되며, 상기 제2 패리티 비트들은 상기 특별한 코드워드의 상기 제2 부분에 포함되는 것을 특징으로 하는 데이터 스토리지 디바이스.
  138. 제137항에 있어서,
    상기 메모리의 제2 부분의 물리 페이지는 제1 로직 페이지, 제2 로직 페이지 및 제3 로직 페이지를 포함하고, 상기 특별한 코드워드의 상기 제1 부분은 상기 제1 로직 페이지에 복사되고, 상기 특별한 코드워드의 상기 제2 부분은 상기 제2 로직 페이지에 복사되며, 상기 특별한 코드워드의 제3 부분은 상기 제3 로직 페이지에 복사되는 것을 특징으로 하는 데이터 스토리지 디바이스.
  139. 제129항에 있어서,
    상기 제어기는 상기 특별한 코드워드의 상기 제1 부분 또는 상기 특별한 코드워드의 상기 제2 부분으로 프로그래밍될 실질적으로 동일한 확률을 상기 제1 메모리 부분의 각각의 물리 페이지에 제공하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  140. 제129항에 있어서,
    상기 제1 메모리 부분의 상기 물리 페이지들 내의 코드워드 부분들의 상대적인 위치들은 상기 코드워드 부분들이 상기 제2 메모리 부분의 상기 물리 페이지의 로직 페이지들에 복사될 때 유지되는 것을 특징으로 하는 데이터 스토리지 디바이스.
  141. 제129항에 있어서,
    상기 제어기는 상기 호스트 디바이스로부터 특별한 데이터 부분에 대한 요청을 수신함에 응답하여,
    단일 페이지 판독을 통해 제1 페이지로부터 요청된 데이터 부분에 대응하는 코드워드의 제1 부분을 판독하고, 그리고
    상기 제1 페이지로부터의 판독 데이터 및 판독 패리티에 근거하여 상기 요청된 데이터 부분을 디코딩하도록 제1 디코딩 동작을 개시하도록 구성되며,
    상기 제어기는 상기 제1 디코딩 동작의 디코딩 실패에 응답하여,
    제2 페이지로부터 상기 요청된 데이터 부분에 대응하는 상기 코드워드의 제2 부분을 판독하고, 그리고
    상기 판독 데이터 및 상기 판독 패리티에 근거하여 그리고 또한, 상기 제2 페이지로부터의 판독 공동 패리티에 근거하여, 상기 요청된 데이터 부분을 디코딩하도록 제2 디코딩 동작을 개시하도록 더 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  142. 방법으로서,
    셀 당 B개의 비트들 - B는 양수 - 로 이루어진 MLC 플래시 메모리 내의 바이너리 캐시를 이용할 때,
    적어도 하나의 데이터 페이지를 하나보다 많은 SLC 페이지로 분리(splitting)하는 단계와, 그리고
    상기 MLC 플래시 메모리의 단일 워드 라인의 데이터를 캐싱하기 위해 B개 보다 많은 SLC 페이지들을 사용하는 단계를 포함하는 것을 특징으로 하는 방법.
  143. 데이터 스토리지 디바이스로서,
    셀 당 B개의 비트들로 이루어진 MLC 플래시 메모리와, 여기서 B는 양수이고; 그리고
    SLC 바이너리 캐시로 구성되며,
    상기 데이터 스토리지 디바이스는 적어도 하나의 데이터 페이지를 하나보다 많은 SLC 페이지로 분리하고 상기 MLC 플래시 메모리의 단일 워드라인의 데이터를 캐싱하기 위해 B개보다 많은 SLC 페이지들을 사용하도록 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
  144. 셀 당 B개의 비트들 - B는 양수 - 로 이루어진 MLC 플래시 메모리 디바이스 내로 데이터를 기록하는 방법으로서,
    상기 메모리 디바이스에 저장될 B개의 데이터 페이지들을 수신하는 단계와;
    상기 B 개의 데이터 페이지들의 각각을 대응하는 하나 이상의 코드워드들로 인코딩하는 단계와;
    상기 B 개의 데이터 페이지들의 각각에 대해, 상기 메모리 디바이스 내의 SLC 셀들 내로 상기 대응하는 하나 이상의 코드워드들을 저장하는 단계와, 상기 B 개의 데이터 페이지들 중 적어도 하나에 대해 상기 대응하는 하나 이상의 코드워드들은 하나보다 많은 SLC 페이지 내로 저장되며; 그리고
    상기 SLC 셀들로부터 MLC 셀들의 워드라인 내로 상기 B개의 데이터 페이지들에 대응하는 상기 코드워드들의 모두를 복사하는 단계를 포함하는 것을 특징으로 하는 데이터를 기록하는 방법.
  145. 데이터 스토리지 디바이스로서,
    셀 당 B개의 비트들로 이루어진 MLC 플래시 메모리 디바이스와, 여기서 B는 양수이고; 그리고
    상기 MLC 플래시 메모리 디바이스에 연결된 제어기로 구성되며,
    상기 제어기는 상기 MLC 플래시 메모리 디바이스에 저장될 B개의 데이터 페이지들을 수신하고 상기 B 개의 데이터 페이지들의 각각을 대응하는 하나 이상의 코드워드들로 인코딩하도록 구성되며, 상기 데이터 스토리지 디바이스는 상기 B개의 데이터 페이지들의 각각에 대해 상기 MLC 플래시 메모리 디바이스 내의 SLC 셀들 내로 상기 대응하는 하나 이상의 코드워드들을 저장하도록 구성되며, 상기 B개의 데이터 페이지들 중 적어도 하나에 대해 상기 대응하는 하나 이상의 코드워드들은 하나보다 많은 SLC 페이지 내로 저장되고,
    상기 데이터 스토리지 디바이스는 상기 SLC 셀들로부터 MLC 셀들의 워드라인 내로 상기 B개의 데이터 페이지들에 대응하는 상기 코드워드들의 전부를 복사하도록 더 구성된 것을 특징으로 하는 데이터 스토리지 디바이스.
KR20147003473A 2011-07-22 2012-07-20 데이터를 저장하기 위한 시스템들 및 방법들 KR20140060285A (ko)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US201161510892P 2011-07-22 2011-07-22
US61/510,892 2011-07-22
US13/329,788 US9318166B2 (en) 2011-07-22 2011-12-19 Systems and methods of storing data
US13/329,788 2011-12-19
US13/329,684 US8880977B2 (en) 2011-07-22 2011-12-19 Systems and methods of storing data
US13/329,757 2011-12-19
US13/329,819 US9032269B2 (en) 2011-07-22 2011-12-19 Systems and methods of storing data
US13/329,732 2011-12-19
US13/329,819 2011-12-19
US13/329,732 US9311969B2 (en) 2011-07-22 2011-12-19 Systems and methods of storing data
US13/329,684 2011-12-19
US13/329,757 US8874994B2 (en) 2011-07-22 2011-12-19 Systems and methods of storing data
PCT/US2012/047545 WO2013016168A2 (en) 2011-07-22 2012-07-20 Systems and methods of storing data

Publications (1)

Publication Number Publication Date
KR20140060285A true KR20140060285A (ko) 2014-05-19

Family

ID=47556618

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20147003473A KR20140060285A (ko) 2011-07-22 2012-07-20 데이터를 저장하기 위한 시스템들 및 방법들

Country Status (7)

Country Link
US (7) US9311969B2 (ko)
EP (1) EP2734925B1 (ko)
JP (1) JP6025844B2 (ko)
KR (1) KR20140060285A (ko)
CN (2) CN107357678A (ko)
TW (1) TW201314449A (ko)
WO (1) WO2013016168A2 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160111594A (ko) * 2015-03-16 2016-09-27 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR20170070921A (ko) * 2015-12-14 2017-06-23 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR20190002358A (ko) * 2017-06-29 2019-01-08 에스케이하이닉스 주식회사 메모리 디바이스 및 이를 프로그램하기 위한 방법
KR20210052148A (ko) * 2019-10-31 2021-05-10 울산과학기술원 데이터 키 값 변환 방법 및 장치
US11562803B2 (en) 2020-10-23 2023-01-24 Samsung Electronics Co., Ltd. Memory device storing parity and memory system including the same

Families Citing this family (351)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9311969B2 (en) 2011-07-22 2016-04-12 Sandisk Technologies Inc. Systems and methods of storing data
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
JP5547154B2 (ja) * 2011-09-21 2014-07-09 株式会社東芝 メモリ・デバイス
US8661320B2 (en) * 2011-10-07 2014-02-25 Aeroflex Colorado Springs Inc. Independent orthogonal error correction and detection
KR101893145B1 (ko) 2011-12-06 2018-10-05 삼성전자주식회사 메모리 시스템들 및 그것들의 블록 복사 방법들
US9026887B2 (en) * 2012-03-15 2015-05-05 Micron Technology, Inc. Physical page, logical page, and codeword correspondence
US8943384B2 (en) * 2012-04-12 2015-01-27 Seagate Technology Llc Using a soft decoder with hard data
US11452153B2 (en) 2012-05-01 2022-09-20 Lisnr, Inc. Pairing and gateway connection using sonic tones
EP2847984A1 (en) 2012-05-01 2015-03-18 Lisnr, Inc. Systems and methods for content delivery and management
US8787079B2 (en) * 2012-05-07 2014-07-22 Sandisk Technologies Inc. Reading data from multi-level cell memory
CN103473146B (zh) * 2012-06-06 2017-04-19 慧荣科技股份有限公司 存储器控制方法、存储器控制器以及电子装置
KR20140002179A (ko) * 2012-06-28 2014-01-08 에스케이하이닉스 주식회사 메모리 시스템
US8924820B2 (en) * 2012-07-27 2014-12-30 Kabushiki Kaisha Toshiba Memory controller, semiconductor memory system, and memory control method
US10013203B2 (en) * 2013-01-04 2018-07-03 International Business Machines Corporation Achieving storage compliance in a dispersed storage network
US9311187B2 (en) * 2013-01-04 2016-04-12 Cleversafe, Inc. Achieving storage compliance in a dispersed storage network
JP2014134843A (ja) * 2013-01-08 2014-07-24 Toshiba Corp メモリシステム
US8913438B2 (en) 2013-02-20 2014-12-16 Seagate Technology Llc Adaptive architecture in a channel detector for NAND flash channels
US9088303B2 (en) 2013-02-28 2015-07-21 Micron Technology, Inc. Codewords that span pages of memory
US9124300B2 (en) * 2013-02-28 2015-09-01 Sandisk Technologies Inc. Error correction coding in non-volatile memory
US9367389B2 (en) 2013-03-14 2016-06-14 Seagate Technology Llc Recovery strategy that reduces errors misidentified as reliable
US8656255B1 (en) * 2013-03-15 2014-02-18 Avalanche Technology, Inc. Method for reducing effective raw bit error rate in multi-level cell NAND flash memory
KR102007163B1 (ko) * 2013-04-22 2019-10-01 에스케이하이닉스 주식회사 인코더, 디코더 및 이를 포함하는 반도체 장치
CN104217762B (zh) 2013-05-31 2017-11-24 慧荣科技股份有限公司 数据储存装置及其错误校正方法以及数据读取方法
US9489299B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9117520B2 (en) 2013-06-19 2015-08-25 Sandisk Technologies Inc. Data encoding for non-volatile memory
US9489294B2 (en) * 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489300B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9117514B2 (en) 2013-06-19 2015-08-25 Sandisk Technologies Inc. Data encoding for non-volatile memory
US20150006784A1 (en) 2013-06-27 2015-01-01 Sandisk Technologies Inc. Efficient Post Write Read in Three Dimensional Nonvolatile Memory
US9218242B2 (en) 2013-07-02 2015-12-22 Sandisk Technologies Inc. Write operations for defect management in nonvolatile memory
US9063671B2 (en) 2013-07-02 2015-06-23 Sandisk Technologies Inc. Write operations with full sequence programming for defect management in nonvolatile memory
KR102149770B1 (ko) * 2013-08-26 2020-08-31 삼성전자주식회사 메모리 컨트롤러 및 그것의 동작 방법
US20150074490A1 (en) * 2013-09-06 2015-03-12 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory device
US9213599B2 (en) 2013-09-18 2015-12-15 Seagate Technology Llc Method of erase state handling in flash channel tracking
US9229801B2 (en) * 2013-09-24 2016-01-05 Sandisk Technologies Inc. Method and device for write abort protection
CN105474179B (zh) * 2013-09-25 2018-09-18 英特尔公司 具有分布变换器的存储器控制器
US9135113B2 (en) * 2013-10-08 2015-09-15 Apple Inc. Recovery from programming failure in non-volatile memory
US20150098271A1 (en) * 2013-10-09 2015-04-09 Sandisk Technologies Inc. System and method of storing data in a data storage device
US9213595B2 (en) * 2013-10-15 2015-12-15 International Business Machines Corporation Handling errors in ternary content addressable memories
US9043537B1 (en) 2013-11-21 2015-05-26 Sandisk Technologies Inc. Update block programming order
US9058881B1 (en) 2013-12-05 2015-06-16 Sandisk Technologies Inc. Systems and methods for partial page programming of multi level cells
US9244631B2 (en) 2013-12-06 2016-01-26 Sandisk Technologies Inc. Lower page only host burst writes
US9390008B2 (en) 2013-12-11 2016-07-12 Sandisk Technologies Llc Data encoding for non-volatile memory
US10067829B2 (en) * 2013-12-13 2018-09-04 Intel Corporation Managing redundancy information in a non-volatile memory
US9129701B2 (en) 2013-12-19 2015-09-08 Sandisk Technologies Inc. Asymmetric state detection for non-volatile storage
US9165649B2 (en) 2013-12-20 2015-10-20 Sandisk Technologies Inc. Systems and methods of shaping data
US9798613B2 (en) * 2013-12-27 2017-10-24 Toshiba Memory Corporation Controller of nonvolatile semiconductor memory
CN103678159B (zh) * 2013-12-27 2017-02-22 威盛电子股份有限公司 数据储存装置及其数据写入方法
US9389956B2 (en) 2014-01-10 2016-07-12 International Business Machines Corporation Implementing ECC control for enhanced endurance and data retention of flash memories
US20150205664A1 (en) * 2014-01-17 2015-07-23 Fusion-Io, Inc. Determining a configuration parameter using a soft read command
US8902652B1 (en) 2014-05-13 2014-12-02 Sandisk Technologies Inc. Systems and methods for lower page writes
US8886877B1 (en) 2014-05-15 2014-11-11 Sandisk Technologies Inc. In-situ block folding for nonvolatile memory
US9460783B2 (en) * 2014-06-03 2016-10-04 Micron Technology, Inc. Determining soft data
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9405624B2 (en) * 2014-06-19 2016-08-02 Seagate Technology Llc On-die error detection and correction during multi-step programming
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
KR102247087B1 (ko) 2014-07-08 2021-05-03 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US9443617B2 (en) 2014-07-18 2016-09-13 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
TWI512750B (zh) * 2014-07-30 2015-12-11 Phison Electronics Corp 資料儲存方法、記憶體控制電路單元及記憶體儲存裝置
US9436549B2 (en) * 2014-07-31 2016-09-06 Sandisk Technologies Llc Storage module and method for improved error correction by detection of grown bad bit lines
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9396080B2 (en) * 2014-08-07 2016-07-19 Sandisk Technologies Llc Storage module and method for analysis and disposition of dynamically tracked read error events
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
KR102189780B1 (ko) * 2014-08-11 2020-12-11 삼성전자주식회사 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
CN105335299B (zh) * 2014-08-12 2018-10-02 群联电子股份有限公司 数据存储方法、存储器控制电路单元及存储器存储装置
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
TWI550615B (zh) * 2014-08-28 2016-09-21 群聯電子股份有限公司 資料存取方法、記憶體儲存裝置及記憶體控制電路單元
US20160062829A1 (en) * 2014-08-29 2016-03-03 Kabushiki Kaisha Toshiba Semiconductor memory device
US9817751B2 (en) * 2014-09-03 2017-11-14 Apple Inc. Multi-phase programming schemes for nonvolatile memories
US10114562B2 (en) * 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US9678832B2 (en) * 2014-09-18 2017-06-13 Sandisk Technologies Llc Storage module and method for on-chip copy gather
US9588841B2 (en) * 2014-09-26 2017-03-07 Intel Corporation Using reliability information from multiple storage units and a parity storage unit to recover data for a failed one of the storage units
CN104464821B (zh) * 2014-10-10 2017-07-28 记忆科技(深圳)有限公司 一种防止MLC Nand Flash出现UECC问题的方法
BR112017007814A2 (pt) 2014-10-15 2017-12-19 Lisnr Inc tons de sinalização inaudíveis
US9984768B2 (en) 2014-10-20 2018-05-29 Sandisk Technologies Llc Distributing storage of ECC code words
US9484089B2 (en) * 2014-10-20 2016-11-01 Sandisk Technologies Llc Dual polarity read operation
US10074427B2 (en) 2014-11-12 2018-09-11 Sandisk Technologies Llc Shaped data associated with an erase operation
US9406377B2 (en) 2014-12-08 2016-08-02 Sandisk Technologies Llc Rewritable multibit non-volatile memory with soft decode optimization
US9558064B2 (en) * 2015-01-28 2017-01-31 Micron Technology, Inc. Estimating an error rate associated with memory
TWI557560B (zh) 2015-02-12 2016-11-11 慧榮科技股份有限公司 資料儲存裝置以及資料讀取方法
US9690656B2 (en) 2015-02-27 2017-06-27 Microsoft Technology Licensing, Llc Data encoding on single-level and variable multi-level cell storage
US9786386B2 (en) 2015-02-27 2017-10-10 Microsoft Technology Licensing, Llc Dynamic approximate storage for custom applications
US9524210B1 (en) * 2015-03-02 2016-12-20 Crossbar, Inc. Separating bits represented by a MLC in connection with ECC
TWI573143B (zh) * 2015-03-04 2017-03-01 慧榮科技股份有限公司 資料重新寫入方法以及使用該方法的裝置
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US9811420B2 (en) 2015-03-27 2017-11-07 Intel Corporation Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC)
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
EP3289462B1 (en) * 2015-04-30 2019-04-24 Marvell Israel (M.I.S.L) LTD. Multiple read and write port memory
US11403173B2 (en) 2015-04-30 2022-08-02 Marvell Israel (M.I.S.L) Ltd. Multiple read and write port memory
KR102370292B1 (ko) * 2015-05-07 2022-03-07 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US9766976B2 (en) * 2015-06-08 2017-09-19 Sandisk Technologies Llc Data storage device and method for storing multiple codewords and redundancy information at a word line
US10141072B2 (en) * 2015-06-11 2018-11-27 SK Hynix Inc. Efficient encoder based on modified RU algorithm
US9996299B2 (en) * 2015-06-25 2018-06-12 Western Digital Technologies, Inc Memory health monitoring
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
KR20170004693A (ko) * 2015-07-03 2017-01-11 에스케이하이닉스 주식회사 메모리 장치의 컨트롤러 및 그 동작 방법
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US9524794B1 (en) * 2015-08-10 2016-12-20 Sandisk Technologies Llc Constrained data shaping
US10133625B2 (en) * 2015-08-11 2018-11-20 Western Digital Technologies, Inc. Storing parity data separate from protected data
US10474525B2 (en) * 2015-08-11 2019-11-12 Sandisk Technologies Llc Soft bit techniques for a data storage device
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
JP2017055254A (ja) 2015-09-09 2017-03-16 株式会社東芝 データ復元回路、半導体記憶装置およびデータ復元方法
TWI566096B (zh) * 2015-09-11 2017-01-11 慧榮科技股份有限公司 資料儲存系統與其相關方法
US9836350B2 (en) * 2015-09-30 2017-12-05 Western Digital Technologies, Inc. Joint decoding of rewriting NVM error sectors
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US9875156B2 (en) 2015-10-01 2018-01-23 Sandisk Technologies Llc Data storage device with a memory die that includes an interleaver
US9734009B2 (en) 2015-10-08 2017-08-15 Sandisk Technologies Llc Data encoding techniques for a device
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US9858009B2 (en) 2015-10-26 2018-01-02 Sandisk Technologies Llc Data folding in 3D nonvolatile memory
US10049007B2 (en) * 2015-10-28 2018-08-14 Via Technologies, Inc. Non-volatile memory device and read method thereof
US10180874B2 (en) 2015-10-28 2019-01-15 Western Digital Technologies, Inc. Storage device operations based on bit error rate (BER) estimate
US10108489B2 (en) * 2015-10-28 2018-10-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for efficient soft data based flash memory data recovery
US9886342B2 (en) * 2015-10-28 2018-02-06 Sandisk Technologies Llc Storage device operations based on bit error rate (BER) estimate
US10204006B2 (en) 2015-10-28 2019-02-12 Avago Technologies International Sales Pte. Limited Systems and methods for side data based soft data flash memory access
US9978462B2 (en) 2015-10-29 2018-05-22 Sandisk Technologies Llc Partial soft bit read
US9792176B2 (en) * 2015-11-13 2017-10-17 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding data in memory system
TWI578222B (zh) * 2015-11-18 2017-04-11 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
CN105426526B (zh) * 2015-12-10 2019-02-15 魅族科技(中国)有限公司 一种页面信息选取的方法及装置
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
CN106935271B (zh) * 2016-01-21 2020-09-15 威盛电子股份有限公司 三维架构非依电性存储器的控制器装置与操作方法
US10055288B2 (en) * 2016-01-21 2018-08-21 Via Technologies, Inc. Controller device and operation method for non-volatile memory with 3-dimensional architecture
US10367528B2 (en) 2016-03-04 2019-07-30 Sandisk Technologies Llc Convolutional low-density parity-check coding
DE102016104012A1 (de) * 2016-03-04 2017-09-07 Infineon Technologies Ag Verarbeitung eines Datenworts
US10389389B2 (en) 2016-03-04 2019-08-20 Western Digital Technologies, Inc. Method and data storage device using convolutional low-density parity-check coding with a long page write and a short page read granularity
US10063258B2 (en) 2016-03-04 2018-08-28 Sandisk Technologies Llc Method and data storage device to estimate a number of errors using convolutional low-density parity-check coding
US10198313B2 (en) * 2016-03-11 2019-02-05 Western Digital Technologies, Inc. Redundancy of error correction encoded data in a storage system
US9996280B2 (en) 2016-03-15 2018-06-12 Sandisk Technologies Llc Data register copying for non-volatile storage array operations
US10114549B2 (en) 2016-03-17 2018-10-30 Sandisk Technologies Llc Error correction code processing and data shaping for reducing wear to a memory
US11233582B2 (en) 2016-03-25 2022-01-25 Lisnr, Inc. Local tone generation
CN107239224B (zh) * 2016-03-29 2020-05-12 群联电子股份有限公司 数据保护方法、存储器控制电路单元与存储器存储装置
TWI575533B (zh) * 2016-04-18 2017-03-21 群聯電子股份有限公司 資料校正方法、記憶體控制電路單元與記憶體儲存裝置
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US10169142B2 (en) * 2016-07-12 2019-01-01 Futurewei Technologies, Inc. Generating parity for storage device
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US9892793B1 (en) 2016-07-25 2018-02-13 Western Digital Technologies, Inc. Systems and methods for programming data to storage devices
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
DE102016115272A1 (de) * 2016-08-17 2018-02-22 Infineon Technologies Ag Speicher mit unterschiedlichen zuverlässigkeiten
KR20180027808A (ko) * 2016-09-07 2018-03-15 에스케이하이닉스 주식회사 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
TWI607312B (zh) * 2016-10-07 2017-12-01 慧榮科技股份有限公司 資料儲存裝置及其資料寫入方法
TWI640868B (zh) * 2016-10-07 2018-11-11 慧榮科技股份有限公司 資料儲存裝置及其資料寫入方法
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US10360973B2 (en) * 2016-12-23 2019-07-23 Western Digital Technologies, Inc. Data mapping enabling fast read multi-level 3D NAND to improve lifetime capacity
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
JP2018147231A (ja) 2017-03-06 2018-09-20 東芝メモリ株式会社 メモリコントローラ、メモリシステムおよびメモリシステムの制御方法
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10552256B2 (en) * 2017-05-08 2020-02-04 Samsung Electronics Co., Ltd. Morphable ECC encoder/decoder for NVDIMM over DDR channel
US10452480B2 (en) 2017-05-25 2019-10-22 Micron Technology, Inc. Memory device with dynamic processing level calibration
US10140040B1 (en) * 2017-05-25 2018-11-27 Micron Technology, Inc. Memory device with dynamic program-verify voltage calibration
US10402272B2 (en) 2017-05-25 2019-09-03 Micron Technology, Inc. Memory device with dynamic programming calibration
US20180358989A1 (en) * 2017-06-09 2018-12-13 Western Digital Technologies, Inc. Non-volatile Storage Systems With Application-Aware Error-Correcting Codes
KR102384706B1 (ko) * 2017-06-09 2022-04-08 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
KR20190005447A (ko) * 2017-07-06 2019-01-16 에스케이하이닉스 주식회사 반도체 메모리 장치의 동작 방법 및 메모리 시스템
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10388351B2 (en) * 2017-08-30 2019-08-20 Micron Technology, Inc. Wear leveling for random access and ferroelectric memory
US10062441B1 (en) 2017-08-31 2018-08-28 Micron Technology, Inc. Determining data states of memory cells
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
JP2019050071A (ja) * 2017-09-11 2019-03-28 東芝メモリ株式会社 半導体記憶装置及びメモリシステム
US11189295B2 (en) 2017-09-28 2021-11-30 Lisnr, Inc. High bandwidth sonic tone generation
TWI649759B (zh) * 2017-09-28 2019-02-01 慧榮科技股份有限公司 資料儲存裝置與將資料寫入記憶體裝置之方法
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
TWI653538B (zh) * 2017-11-13 2019-03-11 慧榮科技股份有限公司 資料儲存裝置與記憶體裝置之資料處理方法
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10372539B2 (en) 2017-11-20 2019-08-06 Western Digital Technologies, Inc. Variable length CLDPC encoder and method of operation in an autonomous vehicle
US10929226B1 (en) * 2017-11-21 2021-02-23 Pure Storage, Inc. Providing for increased flexibility for large scale parity
US10817373B2 (en) * 2017-11-21 2020-10-27 SK Hynix Inc. Soft chip-kill recovery using concatenated codes
KR102545167B1 (ko) * 2017-11-23 2023-06-19 삼성전자주식회사 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
KR102449346B1 (ko) * 2017-12-12 2022-10-04 삼성전자주식회사 메모리 장치의 내부 상태에 따라 메모리 컨트롤러의 동작을 가변하는 메모리 시스템
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
JP6960877B2 (ja) 2018-03-22 2021-11-05 キオクシア株式会社 メモリシステム
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US12079494B2 (en) 2018-04-27 2024-09-03 Pure Storage, Inc. Optimizing storage system upgrades to preserve resources
US10877697B2 (en) * 2018-04-30 2020-12-29 SK Hynix Inc. Data storage device and operating method thereof
US10664194B2 (en) 2018-05-16 2020-05-26 Micron Technology, Inc. Memory system with dynamic calibration using a variable adjustment mechanism
US10566063B2 (en) 2018-05-16 2020-02-18 Micron Technology, Inc. Memory system with dynamic calibration using a trim management mechanism
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
US10990466B2 (en) 2018-06-20 2021-04-27 Micron Technology, Inc. Memory sub-system with dynamic calibration using component-based function(s)
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
CN111902804B (zh) 2018-06-25 2024-03-01 阿里巴巴集团控股有限公司 用于管理存储设备的资源并量化i/o请求成本的系统和方法
US10762967B2 (en) 2018-06-28 2020-09-01 Apple Inc. Recovering from failure in programming a nonvolatile memory
US10755787B2 (en) 2018-06-28 2020-08-25 Apple Inc. Efficient post programming verification in a nonvolatile memory
US11188416B2 (en) 2018-07-12 2021-11-30 Micron Technology, Inc. Enhanced block management for a memory sub-system
US11113129B2 (en) 2018-07-13 2021-09-07 Micron Technology, Inc. Real time block failure analysis for a memory sub-system
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US12067274B2 (en) 2018-09-06 2024-08-20 Pure Storage, Inc. Writing segments and erase blocks based on ordering
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10679708B2 (en) * 2018-09-17 2020-06-09 Western Digital Technologies, Inc. Pre-program read to counter wordline failures
US10936246B2 (en) 2018-10-10 2021-03-02 Micron Technology, Inc. Dynamic background scan optimization in a memory sub-system
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US10740231B2 (en) 2018-11-20 2020-08-11 Western Digital Technologies, Inc. Data access in data storage device including storage class memory
CN111276175B (zh) * 2018-12-05 2022-03-15 华邦电子股份有限公司 一种内存装置以及虚拟静态随机存取内存的刷新方法
US11132253B2 (en) * 2018-12-06 2021-09-28 Micron Technology, Inc. Direct-input redundancy scheme with dedicated error correction code circuit
KR20200069892A (ko) * 2018-12-07 2020-06-17 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
US10734071B2 (en) 2018-12-13 2020-08-04 Western Digital Technologies, Inc. Multi-level cell programming using optimized multiphase mapping with balanced Gray code
CN109582248B (zh) * 2018-12-14 2022-02-22 深圳市硅格半导体有限公司 闪存数据的写入方法、装置及计算机可读存储介质
US10705966B1 (en) * 2018-12-14 2020-07-07 Western Digital Technologies, Inc. Mapping for multi-state programming of memory devices
US10942809B2 (en) * 2018-12-20 2021-03-09 Micron Technology, Inc. Changing of error correction codes based on the wear of a memory sub-system
US10977122B2 (en) * 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US10936455B2 (en) 2019-02-11 2021-03-02 Apple Inc. Recovery of data failing due to impairment whose severity depends on bit-significance value
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
KR102178340B1 (ko) * 2019-02-15 2020-11-12 성균관대학교산학협력단 멀티 레벨 셀의 데이터 입출력 장치와 그의 방법
CN109920462B (zh) * 2019-03-01 2021-01-22 中国科学院微电子研究所 一种数据写入控制电路和控制方法
US11133067B2 (en) 2019-03-08 2021-09-28 Western Digital Technologies, Inc. Multi-phased programming with balanced gray coding
JP2020155174A (ja) * 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステム
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
CN111984458B (zh) * 2019-05-23 2023-07-07 建兴储存科技(广州)有限公司 使用预测方程式的固态储存装置
US11379398B2 (en) * 2019-06-04 2022-07-05 Microchip Technology Incorporated Virtual ports for connecting core independent peripherals
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
KR20210013397A (ko) 2019-07-24 2021-02-04 삼성전자주식회사 스토리지 장치
US10825542B1 (en) * 2019-09-12 2020-11-03 Silicon Motion, Inc. Method for efficiently checking storage units of flash memory of flash memory device and corresponding electronic device executing the method
CN110648713B (zh) * 2019-09-20 2021-09-10 长江存储科技有限责任公司 一种闪存存储器及其编程方法、编程系统和存储器系统
US10915394B1 (en) 2019-09-22 2021-02-09 Apple Inc. Schemes for protecting data in NVM device using small storage footprint
US11036582B2 (en) 2019-09-27 2021-06-15 Western Digital Technologies, Inc. Uncorrectable error correction code (UECC) recovery time improvement
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11617282B2 (en) 2019-10-01 2023-03-28 Alibaba Group Holding Limited System and method for reshaping power budget of cabinet to facilitate improved deployment density of servers
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11081203B2 (en) 2019-11-14 2021-08-03 Micron Technology, Inc. Leakage source detection by scanning access lines
KR20210062845A (ko) 2019-11-22 2021-06-01 삼성전자주식회사 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11321173B2 (en) * 2019-12-31 2022-05-03 Micron Technology, Inc. Managing storage of multiple plane parity data in a memory sub-system
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US11379447B2 (en) 2020-02-06 2022-07-05 Alibaba Group Holding Limited Method and system for enhancing IOPS of a hard disk drive system based on storing metadata in host volatile memory and data in non-volatile memory using a shared controller
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11258466B1 (en) * 2020-03-13 2022-02-22 Kioxia Corporation System and method for high reliability fast raid soft decoding for NAND flash memories
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11449386B2 (en) 2020-03-20 2022-09-20 Alibaba Group Holding Limited Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory
US11288011B2 (en) * 2020-03-26 2022-03-29 Western Digital Technologies, Inc. Non-volatile memory array with write failure protection for multi-level cell (MLC) storage elements using coupled writes
US11169881B2 (en) 2020-03-30 2021-11-09 Alibaba Group Holding Limited System and method for facilitating reduction of complexity and data movement in erasure coding merging on journal and data storage drive
US11301173B2 (en) 2020-04-20 2022-04-12 Alibaba Group Holding Limited Method and system for facilitating evaluation of data access frequency and allocation of storage device resources
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US12056365B2 (en) 2020-04-24 2024-08-06 Pure Storage, Inc. Resiliency for a storage system
US11249921B2 (en) * 2020-05-06 2022-02-15 Western Digital Technologies, Inc. Page modification encoding and caching
US11321167B2 (en) 2020-05-09 2022-05-03 Western Digital Technologies, Inc. Adaptive folding for integrated memory assembly
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11250913B2 (en) 2020-05-21 2022-02-15 Western Digital Technologies, Inc. Scrambling using different scrambling seeds for defect reduction and improved programming efficiency
US11301321B2 (en) * 2020-05-28 2022-04-12 Western Digital Technologies, Inc. Data shaping for integrated memory assembly
US11170870B1 (en) 2020-05-28 2021-11-09 Western Digital Technologies, Inc. On-chip-copy for integrated memory assembly
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11488682B2 (en) 2020-06-24 2022-11-01 Sandisk Technologies Llc Calibration for integrated memory assembly
US11231997B2 (en) * 2020-06-29 2022-01-25 Western Digital Technologies, Inc. Storage system and method for balanced quad-level cell (QLC) coding with margin for an internal data load (IDL) read
US11144392B1 (en) * 2020-07-17 2021-10-12 Toshiba Memory Corporation Payload distribution in solid state drives
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11340981B2 (en) * 2020-08-13 2022-05-24 Micron Technology, Inc. Modifying conditions for memory device error connection operations
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11527300B2 (en) 2020-08-26 2022-12-13 Western Digital Technologies, Inc. Level dependent error correction code protection in multi-level non-volatile memory
US11436083B2 (en) * 2020-09-04 2022-09-06 Western Digital Technologies, Inc. Data address management in non-volatile memory
US11392327B2 (en) 2020-09-09 2022-07-19 Western Digital Technologies, Inc. Local data compaction for integrated memory assembly
US11456754B2 (en) 2020-10-13 2022-09-27 Western Digital Technologies, Inc. Fixed size soft bit lossy compression in flash memory
US11650932B2 (en) 2020-10-25 2023-05-16 Western Digital Technologies, Inc. Integrated non-volatile memory assembly with address translation
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
CN112486853B (zh) * 2020-12-15 2022-11-01 长江存储科技有限责任公司 Nand闪存的页映射解码方法及系统、存储介质及终端
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11650756B2 (en) * 2020-12-28 2023-05-16 Western Digital Technologies, Inc. Nonvolatile memory with encoding for foggy-fine programming with soft bits
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
KR20220103227A (ko) 2021-01-14 2022-07-22 삼성전자주식회사 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 갖는 저장 장치, 및 그것의 리드 방법
US11481154B2 (en) 2021-01-15 2022-10-25 Sandisk Technologies Llc Non-volatile memory with memory array between circuits
US12061814B2 (en) 2021-01-25 2024-08-13 Pure Storage, Inc. Using data similarity to select segments for garbage collection
US11481271B2 (en) 2021-03-16 2022-10-25 Western Digital Technologies, Inc. Storage system and method for using subcodes and convolutional-based LDPC interleaved coding schemes with read threshold calibration support
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11456758B1 (en) 2021-04-23 2022-09-27 Western Digital Technologies, Inc. Adaptive soft-bit compression in flash memory
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
US20220399072A1 (en) * 2021-06-15 2022-12-15 Sandisk Technologies Llc Nonvolatile memory with latch scramble
US11689219B1 (en) * 2021-08-12 2023-06-27 Kioxia Corporation Method and system for error correction in memory devices using irregular error correction code components
US11550657B1 (en) 2021-09-01 2023-01-10 Apple Inc. Efficient programming schemes in a nonvolatile memory
US11894068B2 (en) 2021-09-16 2024-02-06 Sandisk Technologies Llc Efficient sensing of soft bit data for non-volatile memory
US11971826B2 (en) 2021-09-16 2024-04-30 Sandisk Technologies Llc Architecture and data path options for compression of soft bit data in non-volatile memories
US12057188B2 (en) 2021-09-16 2024-08-06 SanDisk Technologies, Inc. Use of data latches for plane level compression of soft bit data in non-volatile memories
US11776589B2 (en) 2021-09-16 2023-10-03 Sandisk Technologies Llc Vertical compression scheme for compressed soft bit data in non-volatile memories with data latch groups
US11901019B2 (en) 2021-09-16 2024-02-13 Sandisk Technologies Llc Use of data latches for compression of soft bit data in non-volatile memories
US11907545B2 (en) 2021-09-16 2024-02-20 Sandisk Technologies Llc On-the-fly multiplexing scheme for compressed soft bit data in non-volatile memories
US11971829B2 (en) 2021-09-16 2024-04-30 Sandisk Technologies Llc On-the-fly compression scheme for soft bit data in non-volatile memory
US11694761B2 (en) 2021-09-17 2023-07-04 Nxp B.V. Method to increase the usable word width of a memory providing an error correction scheme
CN114047880B (zh) * 2021-11-16 2023-07-04 深圳忆联信息系统有限公司 多Pass编程的NAND写入功耗优化方法、装置及计算机设备
US11853607B2 (en) 2021-12-22 2023-12-26 Western Digital Technologies, Inc. Optimizing flash memory utilization for NVMe KV pair storage
US11817883B2 (en) * 2021-12-27 2023-11-14 Western Digital Technologies, Inc. Variable length ECC code according to value length in NVMe key value pair devices
US11733876B2 (en) 2022-01-05 2023-08-22 Western Digital Technologies, Inc. Content aware decoding in KV devices
US11934263B2 (en) * 2022-03-29 2024-03-19 Ampere Computing Llc Parity protected memory blocks merged with error correction code (ECC) protected blocks in a codeword for increased memory utilization
US11995349B2 (en) * 2022-10-04 2024-05-28 Silicon Motion, Inc. Method and apparatus for performing access management of memory device in host performance booster architecture with aid of device side table information encoding and decoding
US11994985B2 (en) 2022-10-04 2024-05-28 Silicon Motion, Inc. Method and apparatus for performing access management of memory device in host performance booster architecture with aid of device side table information encoding and decoding
US11916570B1 (en) * 2022-11-11 2024-02-27 Texas Instruments Incorporated Codeword format for data storage
TWI826161B (zh) * 2022-12-02 2023-12-11 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
CN118466859A (zh) * 2024-07-11 2024-08-09 浪潮电子信息产业股份有限公司 数据处理方法、系统、存储集群、设备及可读存储介质

Family Cites Families (120)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228496A (en) 1976-09-07 1980-10-14 Tandem Computers Incorporated Multiprocessor system
KR900002664B1 (ko) 1985-08-16 1990-04-21 가부시끼가이샤 히다찌세이사꾸쇼 시리얼 데이터 기억 반도체 메모리
US5367383A (en) 1992-11-27 1994-11-22 Eastman Kodak Company Method and apparatus for maximizing data storage in a processor of image data
KR0168896B1 (ko) 1993-09-20 1999-02-01 세키자와 다다시 패리티에 의해 에러를 수정할 수 있는 반도체 메모리장치
DE4335305A1 (de) 1993-10-16 1995-04-20 Philips Patentverwaltung Verfahren und Schaltungsanordnung zur Übertragung von Sprachsignalen
DE69635105D1 (de) 1996-01-31 2005-09-29 St Microelectronics Srl Mehrstufige Speicherschaltungen und entsprechende Lese- und Schreibverfahren
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
JP2000122935A (ja) 1998-10-20 2000-04-28 Sanyo Electric Co Ltd 不揮発性メモリのアドレス変換装置
US20080071973A1 (en) * 2000-01-06 2008-03-20 Chow David Q Electronic data flash card with various flash memory cells
US7660941B2 (en) 2003-09-10 2010-02-09 Super Talent Electronics, Inc. Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories
US6418059B1 (en) 2000-06-26 2002-07-09 Intel Corporation Method and apparatus for non-volatile memory bit sequence program controller
EP1211812B1 (en) * 2000-10-31 2006-11-15 STMicroelectronics S.r.l. A/D conversion method in high density multilevel non-volatile memory devices and corresponding converter device
US7036068B2 (en) 2001-07-25 2006-04-25 Hewlett-Packard Development Company, L.P. Error correction coding and decoding in a solid-state storage device
US6778479B2 (en) 2002-07-11 2004-08-17 Mediatek Incorporation Media recognition control method for optical types
US6966024B2 (en) 2002-12-31 2005-11-15 Motorola, Inc. Method and device for adaptive quantization of soft bits
US6914823B2 (en) 2003-07-29 2005-07-05 Sandisk Corporation Detecting over programmed memory after further programming
US20050213393A1 (en) 2004-03-14 2005-09-29 M-Systems Flash Disk Pioneers, Ltd. States encoding in multi-bit flash cells for optimizing error rate
US7493457B2 (en) 2004-11-08 2009-02-17 Sandisk Il. Ltd States encoding in multi-bit flash cells for optimizing error rate
US7752381B2 (en) 2005-05-24 2010-07-06 Micron Technology, Inc. Version based non-volatile memory translation layer
US8055833B2 (en) 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage
WO2007000862A1 (ja) * 2005-06-24 2007-01-04 Matsushita Electric Industrial Co., Ltd. メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
BRPI0520592A2 (pt) * 2005-09-29 2009-05-19 Trek 2000 Int Ltd armazenamento de dados portátil usando memória flash slc e mlc
US7681109B2 (en) 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
US7526715B2 (en) 2005-10-17 2009-04-28 Ramot At Tel Aviv University Ltd. Probabilistic error correction in multi-bit-per-cell flash memory
US7844877B2 (en) * 2005-11-15 2010-11-30 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
US7366013B2 (en) 2005-12-09 2008-04-29 Micron Technology, Inc. Single level cell programming in a multiple level cell non-volatile memory device
JP4152410B2 (ja) 2005-12-20 2008-09-17 Necエレクトロニクス株式会社 演算回路
US7436733B2 (en) 2006-03-03 2008-10-14 Sandisk Corporation System for performing read operation on non-volatile storage with compensation for coupling
US7388781B2 (en) 2006-03-06 2008-06-17 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
US7502254B2 (en) 2006-04-11 2009-03-10 Sandisk Il Ltd Method for generating soft bits in flash memories
US7823043B2 (en) 2006-05-10 2010-10-26 Sandisk Il Ltd. Corruption-resistant data porting with multiple error correction schemes
CN101501779B (zh) * 2006-05-12 2013-09-11 苹果公司 具有自适应容量的存储设备
WO2007132457A2 (en) * 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
US20070266296A1 (en) 2006-05-15 2007-11-15 Conley Kevin M Nonvolatile Memory with Convolutional Coding
US8042029B2 (en) 2006-05-21 2011-10-18 Ramot At Tel Aviv University Ltd. Error correction decoding by trial and error
US7304893B1 (en) * 2006-06-30 2007-12-04 Sandisk Corporation Method of partial page fail bit detection in flash memory devices
US7616483B2 (en) 2006-07-03 2009-11-10 Sandisk Corporation Multi-bit-per-cell flash memory device with an extended set of commands
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US7904780B2 (en) 2006-11-03 2011-03-08 Sandisk Corporation Methods of modulating error correction coding
KR100785925B1 (ko) 2006-12-06 2007-12-17 삼성전자주식회사 Tcm을 이용한 멀티 레벨 셀 메모리 장치
KR100766042B1 (ko) 2006-12-06 2007-10-12 삼성전자주식회사 연접 부호화를 이용한 멀티 레벨 셀 메모리 장치
KR20090087498A (ko) 2006-12-06 2009-08-17 퓨전 멀티시스템즈, 인크.(디비에이 퓨전-아이오) 고-용량, 비-휘발성 스토리지를 위한 캐시로서의 솔리드-스테이트 스토리지 장치, 시스템 및 방법
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US8074011B2 (en) 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
EP2092530B1 (en) * 2006-12-07 2012-10-31 Nxp B.V. Method and device for reconfiguration of reliability data in flash eeprom storage pages
US7814401B2 (en) 2006-12-21 2010-10-12 Ramot At Tel Aviv University Ltd. Soft decoding of hard and soft bits read from a flash memory
US8019959B2 (en) 2007-02-09 2011-09-13 Marvell World Trade Ltd. Nonvolatile memory system
US20080192544A1 (en) 2007-02-13 2008-08-14 Amit Berman Error correction coding techniques for non-volatile memory
US7966546B2 (en) * 2007-03-31 2011-06-21 Sandisk Technologies Inc. Non-volatile memory with soft bit data transmission for error correction control
KR101492595B1 (ko) 2007-05-21 2015-02-11 라모트 앳 텔-아비브 유니버시티 리미티드 메모리 효율적인 ldpc 디코딩
US8060798B2 (en) 2007-07-19 2011-11-15 Micron Technology, Inc. Refresh of non-volatile memory cells based on fatigue conditions
JP4564520B2 (ja) * 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
US7545673B2 (en) 2007-09-25 2009-06-09 Sandisk Il Ltd. Using MLC flash as SLC by writing dummy data
WO2009051917A1 (en) 2007-10-15 2009-04-23 Joseph Schweiray Lee Providing error correction to unwritten pages and for identifying unwritten pages in flash memory
US8427867B2 (en) 2007-10-22 2013-04-23 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8832408B2 (en) 2007-10-30 2014-09-09 Spansion Llc Non-volatile memory array partitioning architecture and method to utilize single level cells and multi-level cells within the same memory
US7924628B2 (en) 2007-11-14 2011-04-12 Spansion Israel Ltd Operation of a non-volatile memory array
US8316277B2 (en) 2007-12-06 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for ensuring data validity in a data storage process
US8327246B2 (en) * 2007-12-18 2012-12-04 Densbits Technologies Ltd. Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith
US7978516B2 (en) 2007-12-27 2011-07-12 Pliant Technology, Inc. Flash memory controller having reduced pinout
US8159874B2 (en) * 2008-01-22 2012-04-17 Micron Technology, Inc. Cell operation monitoring
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US8832518B2 (en) 2008-02-21 2014-09-09 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
CN101999116B (zh) * 2008-03-11 2015-05-13 艾格瑞系统有限责任公司 通过交叉页面扇区、多页面编码以及每一页面编码将数据存储在多级单元闪速存储器装置中的方法和设备
KR101398212B1 (ko) 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
JP2009282923A (ja) * 2008-05-26 2009-12-03 Toshiba Corp 半導体記憶装置及び不揮発性メモリ
KR101412690B1 (ko) 2008-05-28 2014-06-27 삼성전자주식회사 메모리 장치 및 메모리 프로그래밍 방법
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
KR101436506B1 (ko) 2008-07-23 2014-09-02 삼성전자주식회사 메모리 장치 및 메모리 데이터 프로그래밍 방법
KR20100013485A (ko) 2008-07-31 2010-02-10 삼성전자주식회사 메모리 장치 및 웨어 레벨링 방법
KR101528167B1 (ko) 2008-08-01 2015-06-12 삼성전자주식회사 메모리 장치 및 메모리 데이터 판정 방법
US7864587B2 (en) * 2008-09-22 2011-01-04 Micron Technology, Inc. Programming a memory device to increase data reliability
EP2335245B1 (en) 2008-09-28 2015-01-07 Ramot at Tel-Aviv University Ltd. Method and system for adaptive coding in flash memories
JP4746658B2 (ja) * 2008-09-29 2011-08-10 株式会社東芝 半導体記憶システム
JP2010165400A (ja) 2009-01-14 2010-07-29 Toshiba Corp 不揮発性半導体記憶装置及びそのシステム
TWI385527B (zh) * 2009-02-10 2013-02-11 Phison Electronics Corp Mlc nand型快閃記憶體儲存系統及其控制器與存取方法
WO2010092536A1 (en) 2009-02-12 2010-08-19 Ramot At Tel Aviv University Ltd. Apparatus and method for enhancing flash endurance by encoding data
US8261158B2 (en) * 2009-03-13 2012-09-04 Fusion-Io, Inc. Apparatus, system, and method for using multi-level cell solid-state storage as single level cell solid-state storage
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8175012B2 (en) * 2009-03-26 2012-05-08 Mediatek Inc. Decoding/encoding method for booting from a NAND flash and system thereof
US20100251076A1 (en) 2009-03-27 2010-09-30 Chao-Yi Wu Storage controller having soft decoder included therein, related storage control method thereof and system using the same
US20130047056A1 (en) 2009-05-05 2013-02-21 Lite-On It Corporation Flash memory device with rectifiable redundancy and method of controlling the same
US8464123B2 (en) 2009-05-07 2013-06-11 Ramot At Tel Aviv University Ltd. Matrix structure for block encoding
US8281227B2 (en) 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
KR101572830B1 (ko) * 2009-06-22 2015-11-30 삼성전자주식회사 비휘발성 메모리 장치의 프로그램 방법, 비휘발성 메모리 장치 및 비휘발성 메모리 시스템
US7941696B2 (en) 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes
US8255620B2 (en) 2009-08-11 2012-08-28 Texas Memory Systems, Inc. Secure Flash-based memory system with fast wipe feature
JP5999645B2 (ja) 2009-09-08 2016-10-05 ロンギチュード エンタープライズ フラッシュ エスエイアールエル ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
CN102024497B (zh) * 2009-09-22 2013-10-02 成都市华为赛门铁克科技有限公司 一种存储数据的方法及存储装置
US8190974B2 (en) * 2009-09-28 2012-05-29 Nvidia Corporation Error detection and correction for external DRAM
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) * 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
US9244836B2 (en) 2009-11-23 2016-01-26 Agiga Tech Inc. Flash memory organization for reduced failure rate
US20110161560A1 (en) 2009-12-31 2011-06-30 Hutchison Neil D Erase command caching to improve erase performance on flash memory
US8429468B2 (en) 2010-01-27 2013-04-23 Sandisk Technologies Inc. System and method to correct data errors using a stored count of bit values
US8631304B2 (en) * 2010-01-28 2014-01-14 Sandisk Il Ltd. Overlapping error correction operations
JP5631750B2 (ja) 2010-03-19 2014-11-26 株式会社東芝 複合メモリ
JP5815212B2 (ja) 2010-04-19 2015-11-17 スパンション エルエルシー データ書き込み方法およびシステム
KR101734204B1 (ko) 2010-06-01 2017-05-12 삼성전자주식회사 프로그램 시퀀서를 포함하는 플래시 메모리 장치 및 시스템, 그리고 그것의 프로그램 방법
US8301828B2 (en) * 2010-06-02 2012-10-30 Conexant Systems, Inc. Systems and methods for reliable multi-level cell flash storage
US8892980B2 (en) 2010-06-15 2014-11-18 Fusion-Io, Inc. Apparatus, system, and method for providing error correction
KR20120001405A (ko) * 2010-06-29 2012-01-04 삼성전자주식회사 메모리 시스템 및 그것의 웨어 레벨링 방법
KR101686590B1 (ko) * 2010-09-20 2016-12-14 삼성전자주식회사 플래시 메모리 시스템 및 그것의 워드 라인 인터리빙 방법
JP5143203B2 (ja) 2010-09-24 2013-02-13 株式会社東芝 メモリシステム
JP5980798B2 (ja) * 2010-12-01 2016-08-31 シーゲイト テクノロジー エルエルシーSeagate Technology LLC 独立したシリコン素子の動的な上位レベルの冗長モード管理
US8099652B1 (en) 2010-12-23 2012-01-17 Sandisk Corporation Non-volatile memory and methods with reading soft bits in non uniform schemes
US8612834B2 (en) 2011-03-08 2013-12-17 Intel Corporation Apparatus, system, and method for decoding linear block codes in a memory controller
US8942035B2 (en) 2011-03-23 2015-01-27 Seagate Technology Llc Non-sequential encoding scheme for multi-level cell (MLC) memory cells
KR20120119779A (ko) * 2011-04-22 2012-10-31 삼성전자주식회사 불휘발성 메모리 장치
US9176810B2 (en) 2011-05-27 2015-11-03 SanDisk Technologies, Inc. Bit error reduction through varied data positioning
US8886911B2 (en) 2011-05-31 2014-11-11 Micron Technology, Inc. Dynamic memory cache size adjustment in a memory device
US8732557B2 (en) * 2011-05-31 2014-05-20 Micron Technology, Inc. Data protection across multiple memory blocks
US9311969B2 (en) 2011-07-22 2016-04-12 Sandisk Technologies Inc. Systems and methods of storing data
KR101824068B1 (ko) 2011-07-28 2018-03-15 삼성전자주식회사 메모리 컨트롤러 구동방법, 및 메모리 컨트롤러를 포함하는 메모리 시스템, 메모리 카드 및 휴대용 전자장치
US9047210B2 (en) 2011-09-15 2015-06-02 Sandisk Technologies Inc. Data storage device and method to correct bit values using multiple read voltages
US8760932B2 (en) 2011-10-18 2014-06-24 Seagate Technology Llc Determination of memory read reference and programming voltages
US8737133B2 (en) 2011-10-18 2014-05-27 Seagate Technology Llc Shifting cell voltage based on grouping of solid-state, non-volatile memory cells
KR20130052811A (ko) 2011-11-14 2013-05-23 에스케이하이닉스 주식회사 불휘발성 메모리 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 저장 장치
KR101832934B1 (ko) * 2012-01-27 2018-02-28 삼성전자주식회사 비휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그것의 블록 관리 방법, 프로그램 방법 및 소거 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160111594A (ko) * 2015-03-16 2016-09-27 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR20170070921A (ko) * 2015-12-14 2017-06-23 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR20190002358A (ko) * 2017-06-29 2019-01-08 에스케이하이닉스 주식회사 메모리 디바이스 및 이를 프로그램하기 위한 방법
KR20210052148A (ko) * 2019-10-31 2021-05-10 울산과학기술원 데이터 키 값 변환 방법 및 장치
US11562803B2 (en) 2020-10-23 2023-01-24 Samsung Electronics Co., Ltd. Memory device storing parity and memory system including the same

Also Published As

Publication number Publication date
US20130024743A1 (en) 2013-01-24
US20150043276A1 (en) 2015-02-12
US20130024746A1 (en) 2013-01-24
WO2013016168A3 (en) 2013-06-06
WO2013016168A2 (en) 2013-01-31
US20130024747A1 (en) 2013-01-24
EP2734925B1 (en) 2015-07-01
JP2014523595A (ja) 2014-09-11
CN103827833B (zh) 2017-08-08
CN103827833A (zh) 2014-05-28
US9311970B2 (en) 2016-04-12
US20150039970A1 (en) 2015-02-05
US8880977B2 (en) 2014-11-04
TW201314449A (zh) 2013-04-01
US8874994B2 (en) 2014-10-28
JP6025844B2 (ja) 2016-11-16
US9311969B2 (en) 2016-04-12
EP2734925A2 (en) 2014-05-28
US20130024748A1 (en) 2013-01-24
US9318166B2 (en) 2016-04-19
CN107357678A (zh) 2017-11-17
US9032269B2 (en) 2015-05-12
US20130024605A1 (en) 2013-01-24
US9390774B2 (en) 2016-07-12

Similar Documents

Publication Publication Date Title
US9390774B2 (en) Systems and methods of storing data
CN111326199B (zh) 用于存储器设备的多态编程
US9124300B2 (en) Error correction coding in non-volatile memory
KR101576102B1 (ko) 플래시 메모리의 블록으로부터 데이터를 판독하는 방법 및 관련 메모리 장치
US8112689B2 (en) ECC controller for use in flash memory device and memory system including the same
EP2199911B1 (en) Flash memory controller, error correction code controller therein, and the methods and systems thereof
CN108268337B (zh) 于记忆装置中进行数据管理的方法、记忆装置及其控制器
CN112068778B (zh) 用于保持从存储阵列中读取的数据的完整性的方法和设备
CN109857584B (zh) 于记忆装置进行访问控制的方法、记忆装置和其控制器
US20230082008A1 (en) Parity protection in non-volatile memory
US10997067B2 (en) Data storing method, memory controlling circuit unit and memory storage device
CN113628655A (zh) 用以存取闪存模块的方法、闪存控制器与电子装置
CN112051963A (zh) 数据写入方法、存储器控制电路单元以及存储器存储装置
CN111796774B (zh) 存储器控制方法、存储器存储装置及存储器控制器
CN111143253A (zh) 数据储存方法、存储器控制电路单元以及存储器储存装置
CN117632579B (zh) 存储器控制方法和存储器存储装置
CN117409844A (zh) 数据恢复方法、存储器存储装置及存储器控制器
CN117409845A (zh) 分组管理方法、存储器存储装置及存储器控制器
CN117762819A (zh) 存取快闪存储器模块的方法与相关的快闪存储器控制器及记忆装置
CN112527184A (zh) 数据管理方法、存储器控制电路单元以及存储器存储装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application