KR101686980B1 - 비휘발성 메모리 내의 데이터 저장 방법 - Google Patents
비휘발성 메모리 내의 데이터 저장 방법 Download PDFInfo
- Publication number
- KR101686980B1 KR101686980B1 KR1020137022102A KR20137022102A KR101686980B1 KR 101686980 B1 KR101686980 B1 KR 101686980B1 KR 1020137022102 A KR1020137022102 A KR 1020137022102A KR 20137022102 A KR20137022102 A KR 20137022102A KR 101686980 B1 KR101686980 B1 KR 101686980B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- codeword
- representation
- seed
- scrambling seed
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
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)
- Storage Device Security (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
복수의 데이터 워드 각각과 관련된 메타데이터 비트들의 세트를 저장하는 방법은 복수의 확장된 데이터 워드를 생성하도록 상기 복수의 데이터 워드 각각과 상기 메타데이터 비트들의 세트를 결합하는 단계를 포함한다. 상기 방법은 복수의 코드워드를 생성하도록 복수의 확장된 데이터 워드 각각을 인코딩하는 단계 및 복수의 천공된 코드워드를 생성하도록 상기 복수의 코드워드 각각을 천공시키는 단계를 포함하고, 여기서 상기 천공된 코드워드 각각에서, 상기 메타데이터 비트들의 세트가 제거된다. 상기 방법은 상기 복수의 천공된 코드워드를 저장하는 단계, 변환된 메타데이터 비트들의 세트를 생성하도록 상기 메타데이터 비트들의 세트를 변환하는 단계 그리고 상기 변환된 메타데이터 비트들의 세트를 저장하는 단계를 포함한다.
Description
본 발명은 일반적으로, 비-휘발성 메모리에 데이터를 저장하는 것에 관한 것이다.
플래시 메모리 시스템에 데이터를 저장할 때, 상기 데이터는 균일한 분포로 랜덤화되게 보여지도록 저장될 수 있다. 저장된 데이터의 랜덤화는 인접한 워드 라인들 상의 데이터 간의 또는 인접한 비트 라인들 상의 데이터 간의 상호 관련(correlation)을 회피하는 데 장점적일 수 있다. 예를 들어, 비-휘발성 메모리에 저장되어야 하는 데이터는 비-휘발성 메모리의 인접한 워드 라인들 상의 데이터 간의 상호 관련을 생성하는 것을 회피하기 위해서 그리고 인접한 비트 라인들 상의 데이터 간의 상호 관련을 회피하기 위해서 스크램블(scramble)될 수 있다. 저장에 앞서 스크램블된 데이터는 검색 시 디스크램블(de-scramble)될 수 있다.
데이터의 스크램블은, 랜덤 비트들의 스트링과 같이 의사-랜덤 스크램블링 워드(pseudo-random scrambling word)로서 사용될 수 있는 비트들의 스트링을 생성하고 그 다음, 스크램블된 데이터를 생성하도록 상기 의사-랜덤 스크램블링 워드와 데이터의 배타적-OR(XOR) 동작을 수행함으로써 수행될 수 있다. 예를 들어, 의사-랜덤 스크램블링 워드는 의사-랜덤 비트 생성기에 시드(seed)를 적용시킴으로써 생성될 수 있다. 또한, 상기 시드는 스크램블된 데이터를 디스크램블하도록 상기 의사-랜덤 스크램블링 워드를 재생성하는 데 사용될 수 있다. 그러나, 상기 의사-랜덤 스크램블링 워드 또는 데이터를 가진 시드의 저장은 결과적으로, 비-휘발성 메모리 내의 저장 공간의 사용을 비효율적이게 할 수 있다.
통상적으로, 플래시 메모리 시스템의 프로그래밍 유닛은 페이지이다. 상기 페이지는 통상적으로, 16키로바이트(KB)의 사이즈를 갖는다. 상기 플래시 메모리 시스템에 저장된 데이터의 스크램블은 데이터-종속 에러들(data-dependant error)을 회피하기 위해서 페이지 레벨 상에서 행해질 수 있다. 그러나, 판독 동작 동안, 한 페이지보다 작은 증분(increment)들로 데이터를 검색하는 것이 바람직할 수 있다. 예를 들어, 호스트는 512B의 단일 섹터와 같은 적은 양의 데이터를 검색하도록 요청할 수 있고, 비록 상기 플래시 메모리 시스템 내에서 16KB의 전체 페이지가 판독될 수 있더라도, 상기 전체 페이지를 전달하고 디코딩하는 것은 비효율적일 수 있다. 대신, 상기 플래시 메모리 시스템의 판독 동안, 요청된 데이터를 포함하는 단일 코드워드(상기 코드워는 0.5KB, 1KB 또는 2KB와 같은 사이즈를 가진다)만을 전달 및 디코딩하는 것이 가능하도록 여러 작은 코드워드들 내에 상기 페이지의 데이터를 인코딩하는 것이 바람직할 수 있다.
이는 시드 저장 및 보호에 있어서의 두 가지 경쟁 요인으로 이어진다. 한편으로는, 스크램블이 페이지 레벨 상에서 요구될 수 있기 때문에, 저장 영역을 낭비하는 것을 회피하기 위하여 페이지 당 (에러 정정 코딩(ECC) 보호로 신뢰성있게) 저장된 단일 스크램블링 시드를 가지는 것이 바람직할 수 있다. 다른 한편으로는, 적은 양의 데이터의 효율적인 판독을 가능하게 하기 위하여, 디코딩 이후에 상기 데이터를 디스크램블하기 위해 각각의 코드워드를 가진 시드의 무-에러 버전(error-free version)을 검색하는 것이 바람직할 수 있다.
데이터를 저장하는 방법은 복수의 확장된 데이터 워드를 생성하도록 복수의 데이터 워드 각각과, 스크램블링 시드와 같은 메타데이터 비트들의 세트를 결합하는 단계 및 복수의 코드워드를 생성하도록 상기 확장된 데이터 워드들을 인코딩하는 단계를 포함한다. 인코딩 이후에, 하나 이상의 코드워드는 천공(puncture)되고, 메타데이터 비트들의 세트는 저장될 각각의 천공된 코드워드로부터 제거된다. 데이터는, 스토리지로부터 메타데이터 비트들 및 하나 이상의 천공된 코드워드를 판독하고 확장된 코드워드 표시들을 생성하기 위해 각각의 천공된 코드워드와 상기 메타데이터 비트들을 결합하며 그리고 각각의 확장된 코드워드 표시를 디코딩함으로써 검색될 수 있다. 본 발명의 장점은 개별의 코드워드에 메타데이터 비트들을 저장하는데 비하여 시간을 절약하는 단일 코드워드 디코딩 동작의 사용을 포함한다. 추가적인 장점은, 스크램블링 시드를 위한 개별의 전용 인코더 및 디코더를 요하는 것을 회피하는 메모리 컴팩트 설계에서 저장되는 감소된 양의 리던던트 데이터(redundant data)를 포함한다.
도 1은 데이터를 저장하도록 구성된 데이터 저장 디바이스를 포함하는 시스템의 제1 실시예의 도해이다.
도 2는 호스트에 데이터를 제공하도록 구성된 데이터 저장 디바이스를 포함하는 시스템의 제2 실시예의 도해이다.
도 3은 데이터 저장 디바이스에 저장된 공통의 메타데이터 비트들을 포함하는 코드워드 표시들의 특별한 실시예의 도해이다.
도 4는 메모리에 데이터를 저장하는 방법의 제1 실시예를 서술하는 흐름도이다.
도 5는 메모리에 데이터를 저장하는 방법의 제2 실시예를 서술하는 흐름도이다.
도 6은 메모리로부터 인코딩된 데이터를 검색하는 방법의 제1 실시예를 서술하는 흐름도이다.
도 7은 메모리로부터 인코딩된 데이터를 검색하는 방법의 제2 실시예를 서술하는 흐름도이다.
도 8은 메모리로부터 인코딩된 데이터를 검색하는 방법의 제3 실시예를 서술하는 흐름도이다.
도 9는 메모리로부터 인코딩된 데이터를 검색하는 방법의 제4 실시예를 서술하는 흐름도이다.
도 2는 호스트에 데이터를 제공하도록 구성된 데이터 저장 디바이스를 포함하는 시스템의 제2 실시예의 도해이다.
도 3은 데이터 저장 디바이스에 저장된 공통의 메타데이터 비트들을 포함하는 코드워드 표시들의 특별한 실시예의 도해이다.
도 4는 메모리에 데이터를 저장하는 방법의 제1 실시예를 서술하는 흐름도이다.
도 5는 메모리에 데이터를 저장하는 방법의 제2 실시예를 서술하는 흐름도이다.
도 6은 메모리로부터 인코딩된 데이터를 검색하는 방법의 제1 실시예를 서술하는 흐름도이다.
도 7은 메모리로부터 인코딩된 데이터를 검색하는 방법의 제2 실시예를 서술하는 흐름도이다.
도 8은 메모리로부터 인코딩된 데이터를 검색하는 방법의 제3 실시예를 서술하는 흐름도이다.
도 9는 메모리로부터 인코딩된 데이터를 검색하는 방법의 제4 실시예를 서술하는 흐름도이다.
스크램블링 시드 및 데이터를 저장하는 일 방법은 복수의 코드워드에 대한 단일 시드를 저장하는 것과 상기 시드만의 ECC를 이용하여 개별적으로 이 시드를 보호하는 것이다. 이 해법의 단점은 1) 개별의 ECC 코어가 상기 시드에 대해 필요로되어서 결과적으로, 제어기의 복잡도가 높아진다는 점; 2) 데이터를 검색하는 것이 두 개의 개별의 디코딩 동작 - 상기 데이터에 대한 하나의 동작 및 상기 시드에 대한 하나의 동작 - 을 요하여 결과적으로, 디코딩 시간이 길어지게 한다는 점; 3) 상기 시드 ECC는 매우 짧은 바, 예컨대, 상기 시드는 오직 4 바이트만을 포함하고, 따라서 더 많은 리던던시가 상기 시드를 보호하기 위해 요구되어 결과적으로 저장 영역이 낭비되기 때문에 상기 ECC는 효율적이지 못하다는 점이다.
본 명세서에 제시되는 개선된 방법은, 저장 영역을 낭비하는 것을 방지하도록 페이지 당 단일 스크램블링 시드를 저장하는 것과, 디코딩 이후에 상기 데이터를 디스크램블하기 위해 각각의 코드워드를 가진 시드의 무-에러 버전을 검색하는 것을 가능하게 한다. 또한, 방법은 복잡도, 디코딩 시간 및 저장 공간의 관점에서 더욱 효율적인 해법을 제공한다. 공통 시드는 코드워드들 각각을 스크램블하기 위해 사용될 수 있다(대안적으로는, 각각의 코드워드는 상기 공통 시드로부터 생성된 서로 다른 시드에 의해 스크램블될 수 있다). 공통 시드는 데이터 워드들 각각에 연접(concatenate)될 수 있고, 인코딩이 수행될 수 있어서 연산된 패리티 비트들이 상기 공통 시드 및 데이터 둘 모두를 보호한다. 프로그래밍에 앞서, 상기 공통 시드는 코드워드들 각각을 천공시킴으로서 제거될 수 있고, 천공된 코드워드들은 상기 공통 시드의 단일 인스턴스와 함께 플래시 메모리 시스템에 저장될 수 있다. 저장된 코드워드의 판독 동안, 상기 공통 시드는 요청된 코드워드에 연접될 수 있다. 디코딩은 상기 공통 시드의 무-에러 버전 및 데이터를 복구하도록 수행될 수 있다. 공통 시드는 데이터를 디스크램블하여 본래의 사용자 데이터를 검색하는 데 사용될 수 있다. 상기 방법의 장점들은 1) 복잡도를 감소시키는 단일 ECC 코어의 사용; 2) 데이터를 검색하기 위한 단일 디코딩 동작은 결과적으로 디코딩 레이턴시(latency)가 감소되게 한다는 점; 그리고 3) 데이터 및 시드 둘 모두가 단일의 긴 코드워드를 이용하여 보호되기 때문에 적은 리던던시가 상기 데이터 및 시드를 보호하는데 요구되어 결과적으로 저장 효율을 높인다는 점을 포함할 수 있다.
도 1은 호스트 디바이스(130)에 동작적으로 연결가능한(peratively coupleable) 데이터 저장 디바이스(102)를 포함하는 시스템(100)을 도시한다. 상기 데이터 저장 디바이스(102)는 메모리(104) 및 제어기(106)를 포함한다. 상기 메모리(104)는 워드 라인(108)과 같은 복수의 워드 라인들을 형성할 수 있는 복수의 데이터 저장 요소(미도시)를 포함할 수 있다. 상기 제어기(106)는 데이터 워드 확장기(120), 에러 정정 코드(ECC) 인코더(122), 코드워드 천공기(124) 및 선택에 따라서는(optionally) 스크램블러(126)를 포함할 수 있다. 상기 데이터 저장 디바이스(102)는 복수의 데이터 워드를 받아들이고 복수의 확장된 데이터 워드를 생성하도록 상기 복수의 데이터 워드 각각과 메타데이터 비트들(144)의 세트를 결합하도록 구성된다. 일부 실시예들에서, 메타데이터 비트들은 스크램블링 시드와 같은 정보 비트들을 포함한다. 상기 데이터 저장 디바이스(102)는, 복수의 코드워드 - 상기 복수의 코드워드 각각이 상기 메타데이터 비트들(144), 데이터 워드 및 패리티 비트들을 포함한다 - 를 생성하도록 복수의 확장된 데이터 워드 각각을 인코딩하도록 구성된다. 상기 데이터 저장 디바이스(102)는, 각각의 코드워드로부터 메타데이터 비트들(144)을 제거함으로써 천공된 코드워드들(170 및 172)과 같은 복수의 천공된 코드워드를 생성하도록 복수의 코드워드 중 하나 이상의 코드워드를 천공시키고, 상기 천공된 코드워드들(170 및 172)을 포함하는 복수의 천공된 코드워드를 저장하도록 구성된다. 상기 데이터 저장 디바이스(102)의 장점은, 복수의 데이터 워드와 관련된 메타데이터 비트들(144)이 단일 인스턴스에 저장될 수 있어서 결과적으로 메모리 공간이 절약된다는 것이다.
상기 호스트 디바이스(130)는, 모바일 전화기, 음악 또는 비디오 재생기, 개인용 디지털 단말기(PDA), 게임 디바이스, 전자-책 리더, 카메라, (랩탑 또는 노트북 컴퓨터와 같은) 컴퓨터, 어떤 다른 전자 디바이스 또는 이들의 어떠한 조합과 같이 상기 데이터 저장 디바이스(102)에 동작적으로 연결되도록 구성된 디바이스일 수 있다. 상기 호스트 디바이스(130)는 상기 데이터 저장 디바이스(102)에 데이터를 보내도록 구성된다.
상기 데이터 저장 디바이스(102)는 Secure Digital SD® 카드, microSD® 카드, miniSD.TM 카드(델라웨어 윌밍턴 소재의 SD-3C LLC의 상표들), MultiMediaCard.TM(MMC.TM) 카드(버지니아 알링턴 소재의 JEDEC Solid State Technology Association의 상표) 또는 CompactFlash®(CF) 카드(캘리포니아 밀피타스 소재의 SanDisk Corporation의 상표)와 같은 메모리 카드일 수 있다. 다른 예로서, 상기 데이터 저장 디바이스(102)는 예시적인 예들로서 eMMC®(버지니아 알링턴 소재의 JEDEC Solid State Technology Association의 상표) 및 eSD와 같이 호스트 디바이스(130)에 내장된 메모리 일 수 있다.
상기 메모리(104)는 데이터를 저장하도록 구성된 비-휘발성 메모리 또는 다른 저장 디바이스일 수 있다. 상기 메모리(104)는 천공된 코드워드들(170 및 172) 및 메타데이터 비트들(144)을 수신하고 상기 메타데이터 비트들(144) 및 상기 천공된 코드워드들(170 및 172)을 저장하도록 구성된다.
상기 제어기(106)는 상기 호스트 디바이스(130)로의 인터페이스를 제어하고 상기 메모리(104)의 관리를 수행하도록 구성된다. 상기 제어기(106)는 데이터 워드 확장기(120), 에러 정정 코드(ECC) 인코더(122) 및 코드워드 천공기(124)를 포함한다. 상기 제어기(106)는 상기 호스트 디바이스(130)로부터 상기 데이터 저장 디바이스(102)에 의해 수신된 데이터 워드들과 같은 데이터 워드들을 수신하고, 확장된 데이터 워드들을 형성하도록 메타데이터 비트들의 세트와 상기 데이터 워드들을 결합하도록 구성된다. 또한, 상기 제어기(106)는 ECC 인코더(122)를 사용함으로써 확장된 데이터 워드들을 인코딩하도록 구성된다. 예시적인 예에서, 상기 호스트(130)로부터 수신된 데이터 워드들(예컨대, 데이터 워드들(140 및 142))은, 상기 데이터 워드들이 인코딩되기 전에 스크램블러(126)에 의해 스크램블될 수 있다. 상기 스크램블러(126)는 메타데이터 비트들(144)의 세트의 함수(function)인 시드에 근거하여 각각의 데이터 워드를 스크램블할 수 있다. 대안적으로는, 상기 스크램블러(126)는 공통 시드를 포함할 수 있는 메타데이터 비트들(144)의 세트에 근거하여 각각의 데이터 워드를 스크램블할 수 있거나, 또는 상기 스크램블러(126)는 공통 시드로서 사용될 수 있는 메타데이터 비트들(144)의 세트에 근거하여 각각의 데이터 워드를 스크램블할 수 있다. 상기 스크램블러(126)는 데이터 워드들(140 및 142)을 스크램블하기 위해 의사-랜덤 스크램블링 워드를 생성하도록 하는 선형 피드백 시프트 레지스터(LFSR)를 포함할 수 있다.
상기 데이터 워드 확장기(120)는 데이터 워드들을 수신하고 확장된 데이터 워드들을 형성하도록 각각의 수신된 데이터 워드와 메타데이터 비트들(144)의 세트를 결합하도록 구성된다. 예를 들어, 상기 데이터 워드 확장기(120)는 제1 데이터 워드(140)를 수신하고 제1 확장된 데이터 워드(150)를 생성하도록 상기 제1 데이터 워드(140)와 메타데이터 비트들(144)의 세트를 결합할 수 있다. 상기 데이터 워드 확장기(120)는 제2 데이터 워드(142)를 수신하고 제2 확장된 데이터 워드(152)를 생성하도록 상기 제2 데이터 워드(142)와 메타데이터 비트들(144)의 세트를 결합할 수 있다. 상기 데이터 워드 확장기(120)는 상기 ECC 인코더(122)에 상기 확장된 데이터 워드들을 출력하도록 구성된다. 특별한 예에서, 상기 제어기(106)는, 상기 ECC 인코더(122)에 하나 이상의 상기 확장된 데이터 워드를 입력하기에 앞서 상기 하나 이상의 확장된 데이터 워드에 특별한 변환을 적용시키도록 동작된다. 예를 들어, 상기 특별한 변환은 메타데이터 비트들(144)의 세트의 함수일 수 있다. 일 예에서, 상기 특별한 변환은 스크램블링 변환이다. 상기 특별한 변환은 상기 스크램블러(126)에 의해 적용될 수 있다. 제2 예는, 50%의 0들을 가진 데이터 시퀀스가 50%의 0들보다 적은 예컨대, 30%의 0들만을 가진 "형태의(shaped)" 데이터 시퀀스로 변환되는 "형태" 변환이다. 메타데이터는 형태 변환을 위한 매핑 테이블로서 역할할 수 있다. 데이터에 적용된 형태 변환은, 결과적으로 플래시 메모리 시스템이 덜 마모될 수 있고 더 많은 기재/소거 사이클들을 가능하게 하는 상기 시스템의 내구성이 강화될 수 있는 적은 퍼센티지의 0들을 가진 시퀀스를 생성한다. 제3 예에서, 상기 메타데이터는 워드 라인의 데이터에 특정한 속성들을 관련시키도록 플래시 관리 알고리즘들에 의해 사용될 수 있다. 제3 예에서, (상기 데이터 워드 확장기(120)와 같은) 데이터 워드 확장기는 데이터를 변환하지 않지만, 대신 상기 데이터에 메타데이터를 연접시킨다.
ECC 인코더(122)는 데이터 워드 확장기(120)로부터 확장된 데이터 워드들을 수신하고 각각의 확장된 데이터 워드를 인코딩하도록 구성된다. 예를 들어, 상기 ECC 인코더(122)는 BCH(Bose-Chaudhuri-Hocquenghem) 인코딩, 리드-솔로몬(Reed-Solomon) 인코딩, LDPC(low density parity check) 인코딩을 이용하거나 또는 다른 타입의 코딩을 이용하여 확장된 데이터 워드를 인코딩할 수 있다. 상기 ECC 인코더(122)는 코드워드들을 출력하도록 구성되고, 각각의 코드워드는 메타데이터 비트들(144), 데이터 워드 및 확장된 데이터 워드에 대응하는 패리티 비트들을 포함한다. 예를 들어, 상기 ECC 인코더(122)는 상기 메타데이터 비트들(144), 제1 데이터 워드(140) 및 제1 확장된 데이터 워드(150)와 관련된 제1 패리티 비트들(164)을 포함하는 제1 코드워드(160)를 출력하도록 구성된다. 추가의 예로서, 상기 ECC 인코더(122)는 상기 메타데이터 비트들(144), 제2 데이터 워드(142) 및 제2 확장된 데이터 워드(152)와 관련된 제2 패리티 비트들(166)을 포함하는 제2 코드워드(162)를 출력하도록 구성된다.
다른 예시적인 예에서, 상기 메타데이터 비트들(144)은, 인코딩된(즉, 변환된) 메타데이터 비트들을 생성하도록 하는 상기 ECC 인코더(122)의 인코딩 기법과 다를 수 있는 인코딩 기법에 따라 제2 ECC 인코더(미도시)에 의해 인코딩될 수 있다. 상기 메타데이터 비트들이 상기 제2 ECC 인코더에 의해 변환된(즉, 인코딩된) 메타데이터 비트들을 형성하도록 인코딩된 이후에, 상기 인코딩된 메타데이터 비트들은 메모리(104)에 저장될 수 있다. 상기 제2 ECC 인코더는, 메타데이터 비트들이 천공된 코드워드들(170, 172)과 관계없이 저장되게끔 하도록 상기 메타데이터 비트들에 추가의 보호를 더하는 전용 ECC일 수 있다.
코드워드 천공기(124)는 ECC 인코더(122)로부터 출력된 코드워드들을 수신하고 상기 코드워드로부터 선택된 데이터 비트들을 제거하도록 하나 이상의 수신된 코드워드들을 천공시키도록 동작된다. 예를 들어, 상기 코드워드 천공기(124)는 리던던트 메타데이터 비트들을 제거하기 위해 각각의 수신된 코드워드를 천공시키도록 동작될 수 있다. 예에서, 상기 수신된 코드워드들 각각은 메타데이터 비트들(144)을 포함하고, 상기 코드워드 천공기(124)는 각각의 수신된 코드워드로부터 상기 메타데이터 비트들(144)을 제거한다. 상기 코드워드 천공기(124)는 데이터 및 패리티 비트들을 포함하지만 상기 메타데이터 비트들을 포함하지 않는 천공된 코드워드들을 출력하도록 구성될 수 있다. 예를 들어, 상기 코드워드 천공기(124)는 제1 데이터 워드(140) 및 제1 패리티 비트들(164)을 포함하는 제1 천공된 코드워드(170)를 출력하도록 제1 코드워드(160)로부터 메타데이터 비트들(144)을 제거하기 위해 상기 제1 코드워드(160)를 천공시키도록 동작될 수 있다. 다른 예로서, 상기 코드워드 천공기(124)는 제2 데이터 워드(142) 및 제2 패리티 비트들(166)을 포함하는 제2 천공된 코드워드(172)를 출력하도록 메타데이터 비트들(144)을 제거하기 위해 제2 코드워드(162)를 천공시키도록 동작된다. 특별한 실시예에서, 코드워드 천공기(124)는 또한, 천공된 코드워드들(170 및 172)로부터 개별적으로 메타데이터 비트들(144)을 출력하도록 동작된다.
특별한 예시적인 예에서, 하나의 코드워드를 제외한 모든 코드워드들이 천공될 수 있다. 이 경우, 메타데이터 비트들(144)은 메모리(104)에 저장되어야 할 천공되지 않은 코드워드에 포함될 수 있다. 그 결과, 상기 메타데이터 비트들(144)은 메모리(104)에 복수 회 저장되기보다는 단일 회 저장된다. 예를 들어, 워드 라인(108)은 상기 메타데이터 비트들(144)의 단일 카피 및 복수의 천공된 코드워드를 포함한다.
동작 동안, 데이터 워드 확장기(120)는 데이터 워드들(예컨대, 제1 데이터 워드(140) 및 제2 데이터 워드(142))을 수신할 수 있고, 스크램블링 시드와 같은 메타데이터 비트들(144)의 세트를 수신할 수 있다. 예에서, 데이터 워드 확장기(120)에 의한 수신에 앞서, 상기 데이터 워드들(140 및 142)은 메타데이터 비트들(144)에 근거한 스크램블링 시드를 사용하여 데이터 스크램블러(126)에 의해 스크램블된다. 상기 데이터 워드 확장기(120)는 제1 확장된 데이터 워드(150) 및 제2 확장된 데이터 워드(152)와 같은 확장된 데이터 워드들을 출력할 수 있다. 상기 제1 확장된 데이터 워드(150)는 제1 데이터 워드(140) 및 메타데이터 비트들(144)을 포함할 수 있다. 상기 제2 확장된 데이터 워드(152)는 제2 데이터 워드(142) 및 메타데이터 비트들(144)을 포함할 수 있다.
제1 확장된 데이터 워드(150) 및 제2 확장된 데이터 워드(152)는 ECC 인코더(122)에 입력될 수 있다. ECC 인코더(122)는 제1 코드워드(160) 및 제2 코드워드(162)와 같은 코드워드들을 출력할 수 있다. 상기 제1 코드워드(160)는 메타데이터 비트들(144), 제1 데이터 워드(140) 및 제1 패리티 비트들(164)을 포함할 수 있다. 제2 코드워드(162)는 메타데이터 비트들(144), 제2 데이터 워드(142) 및 제2 패리티 비트들(166)을 포함할 수 있다. 특별한 예시적인 예에서, 상기 ECC 인코더(122)에 의해 사용되는 코드는 시스템적 코드(systematic code)이다.
ECC 인코더(122)에 의해 출력된 제1 코드워드(160) 및 제2 코드워드(162)는 코드워드 천공기(124)에 입력될 수 있다. 천공 동작을 수행할 시, 코드워드 천공기(124)의 출력은 제1 천공된 코드워드(170), 제2 천공된 코드워드(172), 및 제1 코드워드(160)로부터 그리고 제2 코드워드(162)로부터 제거되었던 메타데이터 비트들(144)을 포함할 수 있다. 상기 제1 천공된 코드워드(170)는 제1 데이터 워드(140) 및 제1 패리티 비트들(164)을 포함할 수 있지만, 메타데이터 비트들(144)을 포함하지 않는다. 상기 제2 천공된 코드워드(172)는 제2 데이터 워드(142)의 데이터 및 제2 패리티 비트들(166)을 포함할 수 있지만, 메타데이터 비트들(144)을 포함하지 않는다. 상기 제1 천공된 코드워드(170) 및 제2 천공된 코드워드(172)는 메모리(104)에 (예컨대, 워드 라인(108)에) 저장될 수 있다.
제어기(106)의 예시된 구현은 각각의 데이터 워드와 메타데이터 비트들의 세트를 연접시킨다. 예를 들어, 메타데이터 비트들(144)은 제1 확장된 데이터 워드(150)를 생성하도록 제1 데이터 워드(140)와 결합되고, 상기 메타데이터 비트들(144)은 제2 확장된 데이터 워드(152)를 생성하도록 제2 데이터 워드(142)와 결합된다. 데이터 워드들은 ECC 인코더(122)에 의한 인코딩에 앞서 스크램블될 수 있다. 특별한 예시에서, 데이터 워드들(140 및 142) 각각은 메모리(104)에 저장되기에 앞서 스크램블러(126)에 의해 스크램블된다. 예를 들어, 데이터 워드들(140, 142) 각각은 스크램블러(126)에 입력될 수 있고, 의사-랜덤 스크램블링 워드가 상기 데이터 워드들(140, 142) 각각에 적용될 수 있다. 예에서, 각 데이터 워드는 서로 다른 시드들로부터의 결과적인 서로 다른 스크램블링 워드들에 따라 스크램블될 수 있다. 상기 시드들은 메타데이터 비트들(144)과 같은 공통 시드의 미리 정의된 변환에 의해 생성될 수 있다. 공통 시드로부터의 특별한 데이터 워드에 대한 시드의 생성은 저장 위치 - 상기 데이터 워드는 메모리(104) 내의 이 저장 위치에 저장되기 위한 것이다 - 에 의존적일 수 있다. 특별한 예에서, 변환이 특별한 데이터 워드에 대한 시드를 생성하도록 상기 공통 시드에 적용될 수 있다. 상기 변환은 제1 위치에 대한 0 비트 시프트, 제2 위치에 대한 1 비트 시프트와 같은 비트 시프트 또는 로테이션, 또는 다른 변환을 포함할 수 있다.
그 다음, 스크램블된 출력은 데이터 워드 확장기(120)에 보내진다. 제1 데이터 워드(140) 및 제2 데이터 워드(142)와 같은 각각의 데이터 워드에 대해, 제어기(106)는 확장된 데이터 워드들(150 및 152)과 같은 확장된 데이터 워드를 생성할 수 있다. 각각의 확장된 데이터 워드는 코드워드들(160 및 162)과 같은 복수의 코드워드를 생성하도록 에러 정정 코드(ECC) 인코더(122)에 의해 인코딩될 수 있다. 각각의 코드워드는 메타데이터 비트들(144), 데이터 워드(예컨대, 제1 데이터 워드(140) 또는 제2 데이터 워드(142)) 및 패리티 비트들(예컨대, 제1 패리티 비트들(164) 또는 제2 패리티 비트들(166))을 포함할 수 있다.
도 2는 저장된 데이터를 검색하기 위한 시스템(200)을 도시하고, 호스트 디바이스(230)에 연결된 데이터 저장 디바이스(202)를 포함한다. 데이터 저장 디바이스(202)는 메모리(204) 및 제어기(206)를 포함한다. 상기 데이터 저장 디바이스(202)는 메모리(204)에 복수의 코드워드들의 코드워드 표시들 및 메타데이터 비트들의 세트의 메타데이터 표시를 저장하고 상기 메모리(204)로부터 저장된 코드워드 표시들 및 메타데이터 표시를 판독하도록 구성된다. 상기 데이터 저장 디바이스(202)는 또한, 복수의 확장된 코드워드 표시들을 생성하도록 복수의 코드워드 표시들 각각과 메타데이터 표시를 결합하고, 복수의 디코딩되고 확장된 데이터 워드들을 생성하도록 상기 확장된 코드워드 표시들의 각각을 디코딩하며, 그리고 복수의 디코딩된 데이터 워드들을 생성하도록 상기 디코딩되고 확장된 데이터 워드들을 파싱(parse)하도록 구성된다. 상기 데이터 저장 디바이스(202)는 도 1의 데이터 저장 디바이스(102)에 대응할 수 있다.
호스트 디바이스(230)는, 모바일 전화기, 음악 또는 비디오 재생기, 개인용 디지털 단말기(PDA), 게임 디바이스, 전자-책 리더, 카메라, (랩탑 또는 노트북 컴퓨터와 같은) 컴퓨터, 어떤 다른 전자 디바이스 또는 이들의 어떤 조합과 같이 데이터 저장 디바이스(202)에 동작적으로 연결되도록 구성된 디바이스일 수 있다. 상기 호스트 디바이스(230)는 데이터 저장 디바이스(202)에 데이터를 보내도록 구성된다.
데이터 저장 디바이스(202)는, 호스트 디바이스(230)로의 인터페이스를 제어하고 메모리(204)의 관리를 수행하도록 구성된 제어기(206)를 포함한다. 예를 들어, 상기 데이터 저장 디바이스(202)는 Secure Digital SD® 카드, microSD® 카드, miniSD.TM 카드(델라웨어 윌밍턴 소재의 SD-3C LLC의 상표들), MultiMediaCard.TM(MMC.TM) 카드(버지니아 알링턴 소재의 JEDEC Solid State Technology Association의 상표) 또는 CompactFlash®(CF) 카드(캘리포니아 밀피타스 소재의 SanDisk Corporation의 상표)와 같은 메모리 카드일 수 있다. 다른 예로서, 상기 데이터 저장 디바이스(202)는 예시적인 예들로서 eMMC®(버지니아 알링턴 소재의 JEDEC Solid State Technology Association의 상표) 및 eSD와 같이 호스트 디바이스(230)에 내장된 메모리 일 수 있다. 상기 메모리(204)는 데이터를 저장하도록 구성된 비-휘발성 메모리 또는 다른 저장 디바이스일 수 있다. 상기 메모리(204)는 대표적 워드 라인(representative word line)(208)에서와 같이 메타데이터 비트들 및 하나 이상의 코드워드 표시들을 저장하도록 구성될 수 있다. 예를 들어, 제1 코드워드 표시(270)는 워드 라인(208)의 제1 위치에 저장될 수 있고, 제2 코드워드 표시(272)는 워드 라인(208)의 제2 위치에 저장될 수 있다. 상기 메모리(204)는 워드 라인(208)을 포함하는 복수의 워드 라인을 포함할 수 있다.
데이터 저장 디바이스(202)는 메모리(204)로부터 코드워드 표시들(270 및 272)과 같은 저장된 코드워드 표시들을 판독하고, 메모리(204)로부터 메타데이터 표시(246)와 같은 메타데이터 비트들의 표시를 판독하도록 구성된다. 특별한 예에서, 상기 데이터 저장 디바이스(202)는, 디코딩된(즉, 변환된) 메타데이터 비트들의 세트(미도시)를 생성하기 위해 메타데이터 비트 표시(246)를 디코딩하도록 구성된다. 예를 들어, 상기 데이터 저장 디바이스(202)는 예컨대, 상기 메타데이터 표시(246)만을 디코딩하는 전용 ECC 디코더(미도시)에 의해 상기 메타데이터 표시(246)를 디코딩할 수 있다. 특별한 예시적인 예로서, 메타데이터 비트들의 변환은 신원 변환(identity transformation)이고, 이 경우 변환된 메타데이터 비트들의 세트는 메타데이터 비트들의 세트와 동일하다.
제어기(206)는 결합기(224), 에러 정정 코드(ECC) 디코더(222) 및 데이터 워드 파서(220)를 포함할 수 있다. 상기 제어기(206)는 코드워드 표시들(270 및 272)과 같은 코드워드 표시들을 수신하고 메타데이터 표시(246)와 같은 메타데이터 표시를 수신하도록 구성된 장치이다.
결합기(224)는 확장된 코드워드 표시들을 생성하도록 메타데이터 비트들과 코드워드 표시들을 결합하도록 구성된다. 예를 들어, 상기 결합기(224)는 확장된 코드워드 표시들(260 및 262)을 생성하도록 메타데이터 표시(246)와 코드워드 표시들(270 및 272)을 결합할 수 있다.
ECC 디코더(222)는 디코딩되고 확장된 데이터 워드들을 생성하도록 에러 정정 코드(ECC)를 이용하여 확장된 코드워드 표시들을 디코딩하도록 구성된다. 예를 들어, 상기 ECC 디코터(222)는 디코딩되고 확장된 데이터 워드들(250 및 252)을 생성하도록 확장된 코드워드 표시들(260 및 262)을 디코딩할 수 있다.
데이터 워드 파서(220)는 디코딩된 데이터 워드들을 생성하도록 디코딩되고 확장된 데이터 워드들을 파싱하도록 구성된다. 예를 들어, 상기 데이터 워드 파서(220)는 디코딩된 데이터 워드들(240 및 242)을 생성하도록 디코딩된 메타데이터 비트들(248)의 세트를 제거함으로써 상기 디코딩되고 확장된 데이터 워드들(250 및 252)을 파싱할 수 있다.
제어기(206)는 메타데이터 비트들(248)의 세트를 이용하여 데이터를 디스크램블하도록 구성된 디스크램블러(226)를 포함할 수 있다. 예를 들어, 메타데이터 비트들(248)의 세트는 메모리(24)에 데이터를 저장하기에 앞서 데이터를 스크램블 하는 데 사용된 시드일 수 있다. 특별한 예에서, ECC 디코딩 및 디스크램블은 디코딩되고 확장된 데이터 워드들(250 및 252)과 같은 디코딩되고 확장된 데이터 워드들을 생성하도록 상기 확장된 워드 표시들 상에 수행된다. 특별한 실시예에서, 디스크램블은 디코딩 프로세스의 일부로서 수행된다.
동작 동안, 제1 코드워드 표시(270) 및 제2 코드워드 표시(272)는 제어기(206)에 의해 메모리(204)로부터 검색될 수 있다. 제1 코드워드 표시(270)는 대표적인 비트 에러(290)를 포함할 수 있다. 상기 비트 에러(290)와 같은 하나 이상의 비트 에러는 코드워드 표시의 일부에 그리고/또는 코드워드 표시의 패리티 비트들 내에 그리고/또는 메타데이터 표시(246) 내에 포함될 수 있다. 도 2에 도시된 바와 같이, 코드워드 표시(270)는 데이터 비트 에러 및 패리티 비트 에러를 포함하고, 코드워드 표시(272)는 데이터 비트 에러를 포함한다.
추가적으로, 메타데이터 비트들의 표시는 메모리(204)의 워드 라인(208)으로부터 검색될 수 있다. 예를 들어, 데이터 워드 표시들(270 및 272) 및 메타데이터 표시(246)는 메모리(204)의 워드 라인(208)으로부터 검색될 수 있다.
제어기(206)는 결합기(224)에 데이터 워드 표시들(270, 272) 및 메타데이터 표시(246)를 입력할 수 있다. 상기 결합기(224)는 확장된 데이터 워드 표시들(260 및 262)을 출력할 수 있다. 제1 확장된 코드워드 표시(260)는 메타데이터 표시(246) 및 제1 코드워드 표시(270)를 포함할 수 있다. 제2 확장된 코드워드 표시(262)는 메타데이터 표시(246) 및 제2 코드워드 표시(272)를 포함할 수 있다.
확장된 코드워드 표시들(260 및 262)은 ECC 디코더(222)에 입력될 수 있다. 상기 ECC 디코더(222)는 디코딩되고 확장된 데이터 워드들(250 및 252)을 출력할 수 있다. 제1 디코딩되고 확장된 데이터 워드(250)는 메타데이터 비트들(248) 및 제1 데이터(240)를 포함할 수 있다. 제2 디코딩되고 확장된 데이터 워드(252)는 메타데이터 비트들(248) 및 제2 데이터(242)를 포함할 수 있다. 상기 디코딩되고 확장된 데이터 워드들(250 및 252)은 데이터 워드 파서(220)에 입력될 수 있다. 데이터 워드 파서(220)는 디코딩된 데이터 워드들(240 및 242)을 출력할 수 있다. 상기 디코딩된 데이터 워드들(240 및 242)은 도 5 내지 8과 관련하여 기술된 바와 같이, 메타데이터 비트들(248)에 근거하여 디스크램블러(226)에 의해 디스크램블될 수 있다. 특별한 실시예에서, 메타데이터 비트들(248)과 같은 메타데이터 비트들을 생성하도록 코드워드들 중 하나를 디코딩하는 동안 정정된 특별한 메타데이터 표시는 다른 코드워드들을 디코딩할 때 사용될 수 있다. 예를 들어, 메타데이터 표시(246)는 제1 확장된 코드워드 표시(260)의 디코딩 동안 ECC 디코더(222)를 통해 정정될 때 메타데이터 비트들(248)을 생성할 수 있다. 상기 메타데이터 비트들(248)은 제2 확장된 코드워드 표시(262)를 형성하도록 메타데이터 표시(246)를 대신하여 사용될 수 있다. 그 결과, 제2 확장된 코드워드 표시(262)는 더 적은 에러들을 가질 수 있고, 성공의 확률은 증가되고 디코딩 시간은 감소된다.
데이터 저장 디바이스(202)의 장점은, 데이터 저장 디바이스(202)의 메모리 내의 단일 인스턴스에 저장되고 복수의 데이터 워드와 관련된 메타데이터 비트들이 검색되고 복수의 데이터 워드 각각과 결합될 수 있어서 결과적으로 메모리 공간이 절약된다는 점이다. 추가적으로, 데이터 저장 디바이스(202)는, 메타데이터 비트들을 복수 회 인코딩하거나 또는 개별의 ECC를 사용하여 메타데이터 비트들을 인코딩하는 디바이스에 비하여 데이터 판독 레이턴시를 줄일 수 있다. 추가로, 상기 데이터 저장 디바이스(202)는 데이터 및 시드를 보호하기 위하여 더 적은 레이턴시를 요할 수 있는데, 그 이유는 상기 데이터 및 시드 둘 모두가 단일의 긴 코드워드를 이용하여 보호되어 결과적으로 저장 효율이 높아지기 때문이다.
도 3은 코드워드 표시들의 두 개의 세트를 도시한다. 세트(302)는 제1 코드워드 표시(304), 제2 코드워드 표시(306) 및 제3 코드워드 표시(308)를 포함한다. 제1 코드워드 표시(304)는 메타데이터 비트들(310), 제1 데이터(312) 및 제1 패리티 비트들(314)을 포함한다. 제2 코드워드 표시(306)는 제2 데이터(316) 및 제2 패리티 비트들(318)을 포함한다. 제2 코드워드 표시(306)는 메타데이터 비트들(310)을 포함하지 않는다. 제3 코드워드 표시(308)는 제3 데이터(320) 및 제3 패리티 비트들(322)을 포함한다. 제3 코드워드 표시(308)는 메타데이터 비트들(310)을 포함하지 않는다.
상기 제1 코드워드 표시(304)에 저장된 메타데이터 비트들(310)은 제3 코드워드 표시(308)와 결합될 수 있다. 결과적인 확장된 코드워드 표시는 메타데이터 비트들(310), 제3 데이터(320) 및 제3 패리티 비트들(322)을 포함한다. 오직 코드워드 표시(304)에만 메타데이터 비트들(310)을 저장하는 것의 장점은 메모리 공간의 잠재적인 절약이다. 예를 들어, 코드워드 표시들(304, 306 및 308) 각각이 메타데이터 비트들(310)과 관련될 때, 코드워드 표시들 중 단 하나만을 포함하는 메타데이터 비트들(310)의 저장은 결과적으로 메모리 공간이 절약되게 한다.
또한, 도 3은 제1 코드워드 표시(334), 제2 코드워드 표시(336) 및 제3 코드워드 표시(338)를 포함하는 코드워드 세트(332)를 도시한다. 제1 코드워드 표시(334)는 메타데이터 비트들(340)을 포함한다. 예를 들어, 메타데이터 비트들(340)은 메타데이터 비트들(310)과 같은 메타데이터 비트들의 총 세트 중 제1 부분일 수 있다. 제2 코드워드 표시(336)는 메타데이터 비트들(310)의 제2 부분일 수 있는 메타데이터 비트들(342)의 제2 세트를 포함할 수 있다. 제3 코드워드 표시(338)는 메타데이터 비트들(310) 중 제3 부분일 수 있는 메타데이터 비트들(344) 중 제3 세트를 포함할 수 있다. 제1 코드워드 표시(334)는 메타데이터 비트들(310)의 제1 부분(340), 제1 데이터(346) 및 제1 패리티 비트들(348)을 포함할 수 있다. 제2 코드워드 표시(336)는 메타데이터 비트들(310)의 제2 부분(342), 제2 데이터(316) 및 제2 패리티 비트들(318)을 포함할 수 있다. 제3 코드워드 표시(338)는 메타데이터 비트들(310)의 제3 부분(344), 제3 데이터(320) 및 제3 패리티 비트들(322)을 포함할 수 있다. 예에서, 상기 부분들(340, 342 및 344)은 메타데이터 비트들(310)을 생성하도록 결합될 수 있고, 상기 메타데이터 비트들(310)은 제3 데이터(320) 및 제3 패리티 비트들(322)과 같은 어떤 하나 이상의 표시들과 연접될 수 있다.
코드워드 표시들(334, 336 및 338)과 같은 복수의 코드워드 표시들 중으로 메타데이터 비트들(310)의 저장을 배분하는 것의 장점은 메모리 공간의 잠재적인 절약이다. 예를 들어, 코드워드 표시들(304, 306 및 308) 각각이 동일한 메타데이터 비트들(310)과 관련될 때, 그리고 메타데이터 비트들(310)의 세트가 단 한 번만 저장되도록 상기 메타데이터 비트들(310)의 세트의 모든 비트들이 스토리지에 배분될 때, 메모리 내의 저장 공간의 절약이 결과적으로 이루어질 수 있다. 추가적으로, 코드워드 표시들(334, 336 및 338) 각각은 코드워드 표시들(304, 306 및 308)에 비해 동일하게 사이즈화될 수 있고 동일한 양의 데이터를 포함할 수 있다. 그 결과, ECC 프로세싱이 단순화될 수 있다.
도 4는 데이터를 저장하는 방법의 특별한 실시예에 대응하는 흐름도를 도시한다. 도 4를 참조하여, 단계(402)에서, 데이터는 호스트로부터 검색될 수 있다. 예를 들어, 도 1의 데이터 저장 디바이스(102)는 호스트 디바이스(130)로부터 데이터를 검색할 수 있다.
단계(404)로 진행하여, 메모리 저장 디바이스의 워드 라인 내의 데이터의 내부 위치가 결정될 수 있다. 예를 들어, 도 1을 참조하여, 워드 라인(108)의 복수의 내부 위치들 중 하나가 데이터 저장 디바이스(102)의 메모리(104) 내에서 결정될 수 있다.
단계(406)로 진행하여, 변환이 워드 라인 내의 데이터의 내부 위치에 따라 공통 시드에 적용될 수 있다. 예를 들어, 도 1을 참조하여, 변환은 변환된 메타데이터 비트들의 세트(미도시)를 형성하도록 메타데이터 비트들(144)의 세트에 적용될 수 있다. 상기 변환은 메모리(104)의 워드 라인(108)과 같은 워드 라인에 저장되기 위한 데이터의 내부 위치에 의존적일 수 있다.
단계(408)로 진행하여, 스크램블링 워드가 생성될 수 있다. 예를 들어, 상기 스크램블링 워드는 변환된 메타데이터 비트들의 세트와 같은 변환된 시드를 이용하여 생성될 수 있다. 위치에 근거하여 변환된 시드는 메모리에 저장되기 위한 각각의 코드워드들(예컨대 ECC 페이지들)에 대한 구별적인 스크램블링 워드(distinct scrambling word)를 생성할 수 있다. 구별적인 스크램블링 워드의 사용은 스크램블된 데이터 간의 가능한 데이터 상호 관련을 감소시킨다.
단계(410)로 진행하여, 데이터는 스크램블링 워드를 이용하여 스크램블될 수 있다. 예를 들어, 도 1에서, 스크램블러(126)는 스크램블링 워드를 이용하여 데이터를 스크램블할 수 있다. 스크램블러(126)는, 스크램블링 워드를 생성하도록 변환된 시드를 이용함으로써 그리고 상기 데이터와 스크램블링 워드의 XOR을 적용시킴으로써 상기 데이터를 스크램블하도록 하는 선형 피드백 시프트 레지스터를 포함할 수 있다.
단계(412)로 진행하여, 공통 시드는 확장된 데이터 워드를 생성하도록 스크램블된 데이터 워드와 연접될 수 있다. 예를 들어, 도 1에서, 공통 시드는 메타데이터 비트들(144)의 세트일 수 있다. 제1 데이터 워드(140)는 제1 확장된 데이터 워드(150)를 형성하도록 메타데이터 비트들(144)의 세트와 연접될 수 있고, 제2 데이터 워드(142)는 제2 확장된 데이터 워드(152)를 형성하도록 메타데이터 비트들(144)의 세트와 연접될 수 있다.
단계(414)로 진행하여, 확장된 워드는 코드워들 형성하도록 인코딩될 수 있다. 예를 들어, 도 1에서, 확장된 데이터 워드들(150 및 152)은 코드워드들(160 및 162)을 형성하도록 ECC 인코더(122)에 의해 각각 인코딩될 수 있다.
단계(416)로 진행하여, 코드워드가 천공되기 위한 것인지의 결정이 내려진다. 상기 코드워드를 천공하도록 결정될 때, 상기 코드워드는 단계(418)에서 천공될 수 있다. 예를 들어, 도 1에서, 코드워드 천공기(124)는 천공된 코드워드들(170 및 172)을 생성하도록 코드워드들(160 및 162) 각각을 각각 천공시킬 수 있다. 대안적으로, 코드워드들(160, 162) 중 적어도 하나는 천공될 수 있고, 천공된 코드워드로부터 메타데이터 비트들 중 적어도 하나가 제거된다. 예시적인 예로서, 코드워드(162)는 천공될 수 있고 메타데이터 비트들(144) 중 적어도 하나가 제거되며, 코드워드(160)는 천공되지 않는다. 코드워드로부터 적어도 하나의 메타데이터 비트를 제거할지의 결정은 위치 - 상기 코드워드는 워드 라인 내의 이 위치에 저장되기 위한 것이다 - 따라 좌우될 수 있다. 예를 들어, 제1 코드워드(160)는 메모리(104)의 워드 라인(108) 내의 미리 결정된 위치와 상기 코드워드(160)가 저장되기 위한 제1 위치를 비교함에 근거하여 선택적으로 천공될 수 있다. 추가적인 예로서, 제2 코드워드(162)는 메모리(104)의 워드 라인(108) 내의 다른 미리 결정된 위치와 상기 코드워드(162)가 저장되기 위한 제2 위치를 비교함에 근거하여 선택적으로 천공될 수 있다.
단계(420)로 진행하여, 천공된 코드워드는 메모리 저장 디바이스에 공통 시드와 함께 저장될 수 있다. 예를 들어, 도 1에서, 천공된 코드워드들(170 및 172)은 데이터 저장 디바이스(102)의 메모리(104)에 메타데이터 비트들(144)과 함께 저장된다. 상기 메타데이터 비트들(144)은 천공된 코드워드들(170 및 172) 둘 모두와 관련될 수 있다. 예시적인 예에서, 메타데이터 비트들은 메모리 저장 디바이스에 저장되고, 상기 메타데이터 비트들은 어떤 코드워드의 일부로서 저장되지 않는다.
단계(416)로 돌아가서, 코드워드가 천공되지 않으면, 천공되지 않은 코드워드가 메모리 저장 디바이스에 저장될 수 있다. 예를 들어, 네 개의 코드워드가 워드 라인에 저장될 수 있고 공통 시드에 근거하여 스크램블될 수 있다. 각각의 코드워드는 확장된 코드워드로서 시드로 인코딩될 수 있고, 하나 이상의 코드워드는 천공되지 않을 수 있다. 따라서, 상기 시드는 천공되지 않은 코드워드들과 함께 저장되지만 천공된 코드워드들로부터 제거될 수 있다.
도 4에 도시된 방법의 장점은, 복수의 데이터 워드를 스크램블하는 데 사용되는 공통 스크램블링 시드가 단일 인스턴스에 저장될 수 있어서 결과적으로 메모리 공간이 절약된다는 점이다.
특별한 예에서, 데이터를 저장하는 방법은:
호스트로부터 데이터를 얻는 단계;
인코딩된 데이터가 프로그래밍 될 워드라인(WL) 내의 위치를 결정하는 단계;
공통 시드를 얻고 상기 위치에 따라 상기 시드에 미리 정의된 변환을 적용하는 단계;
스크램블링 패턴을 생성하도록 상기 변환된 시드를 이용하여 스크램블링 패턴을 생성하는 단계;
상기 스크램블링 패턴을 이용하여 상기 호스트로부터 수신된 데이터를 스크램블하는 단계;
확장된 워드를 생성하도록 상기 스크램블된 워드에 상기 공통 시드를 연접시키는 단계;
코드워드를 생성하도록 상기 확장된 워드를 (ECC로) 인코딩하는 단계;
상기 코드워드가 천공되기 위한 것인지 결정하는 단계; 및
상기 공통 시드가 포함된 코드워드를 천공시키는 단계를 포함할 수 있다.
도 5는 메모리 저장 디바이스에 데이터를 저장하는 다른 방법을 도시한다. 단계(502)에서, 데이터는 호스트로부터 검색될 수 있다. 예를 들어, 도 1에서, 상기 데이터 저장 디바이스(102)는 호스트 디바이스(130)로부터 데이터를 검색할 수 있다.
단계(504)로 진행하여, 워드 라인 내에 데이터의 내부 위치가 결정될 수 있다. 예를 들어, 도 1을 참조하여, 워드 라인(108)의 복수의 내부 위치들 중 하나는 데이터 저장 디바이스(102)의 메모리(104) 내에서 결정될 수 있다.
단계(506)로 진행하여, 변환이 워드 라인 내의 데이터의 내부 위치에 따라 공통 시드에 적용될 수 있다. 예를 들어, 도 1을 참조하여, 변환은 메타데이터 비트들(144)의 세트에 적용될 수 있다. 상기 변환은 메모리(104)의 워드 라인(108)과 같은 워드 라인에 저장되기 위한 데이터의 내부 위치에 의존적일 수 있다. 특별한 예에서, 상기 변환은 제1 위치에 대한 0 비트 시프트, 제2 위치에 대한 1 비트와 같은 비트 시프트 또는 로테이션, 또는 다른 변환을 포함할 수 있다.
예에서, 공통 시드는 호스트 내에서 생성되고 각각의 페이지와 함께 제어기에 전달될 수 있거나, 또는 상기 공통 시드는 상기 제어기에 의해 생성될 수 있다. 상기 공통 시드가 상기 제어기에 의해 생성될 때, 특별한 예시적인 예에서, 상기 공통 시드는 다른 워드 라인들과 상호 관련되지 않아서, 동일한 비트 라인 상의 데이터가 랜덤하게 그리고 균등하게(uniformly) 분포된 듯이 보인다.
단계(508)로 진행하여, 스크램블링 워드는 스크램블링 시드와 같은 변환된 시드를 사용함으로써 생성될 수 있다. 예를 들어, 상기 스크램블링 워드는 선형 피드백 시프트 레지스터에서 도 1의 메타데이터 비트들(144)의 세트와 같은 시드를 이용하여 생성될 수 있다.
단계(510)로 진행하여, 데이터는 스크램블링 워드에 따라 스크램블될 수있다. 예를 들어, 도 1에서, 스크램블러(126)는 스크램블링 워드를 이용하여 데이터를 스크램블할 수 있다. 상기 스크램블러(126)는 데이터를 스크램블하도록 비트와이즈 XOR 동작(bitwise XOR operation)을 적용시킬 수 있다.
단계(512)로 진행하여, 공통 시드는 확장된 워드를 형성하도록 스크램블된 데이터 워드와 연접될 수 있다. 예를 들어, 도 1에서, 공통 시드는 메타데이터 비트들(144)의 세트일 수 있다. 제1 데이터 워드(140)는 제1 확장된 데이터 워드(150)를 형성하도록 메타데이터 비트들(144)의 세트와 연접될 수 있고, 제2 데이터 워드(142)는 제2 확장된 데이터 워드(152)를 형성하도록 메타데이터 비트들(144)의 세트와 연접될 수 있다.
단계(514)로 진행하여, 확장된 워드는 코드워드를 형성하도록 인코딩될 수 있다. 예를 들어, 도 1에서, 확장된 데이터 워드들(150 및 152)은 코드워드들(160 및 162)을 형성하도록 ECC 인코더(122)에 의해 각각 인코딩될 수 있다.
단계(516)로 진행하여, 코드워드는 천공될 수 있고, 각각의 코드워드들로부터 공통 시드가 제거된다. 예를 들어, 도 1에서, 코드워드 천공기(124)는 천공된 코드워드들(170 및 172)을 생성하도록 각각의 코드워드들(160 및 162)을 각각 천공시킬 수 있다. 대안적으로, 각각의 코드워드는 도 3에 도시된 바와 같이 천공된 코드워드들(332)과 같은 천공된 코드워드들을 생성하도록 천공될 수 있다.
단계(518)로 진행하여, 천공된 코드워드들 및 공통 시드의 하나의 인스턴스는 메모리 저장 디바이스에 저장될 수 있다. 예를 들어, 도 1에서, 천공된 코드워드들(170 및 172)은 데이터 저장 디바이스(102)의 메모리(104)에 가능하게는, 변환된(즉, 인코딩된) 메타데이터 비트들(144)과 함께 저장된다. 예에서, 데이터 저장 디바이스(102)는 플래시 메모리 디바이스일 수 있다.
도 5에 도시된 방법에서, 공통 시드는 모든 코드워드들이 천공되는 동안 복수의 워드들 각각으로부터 개별적으로 취급될 수 있는 바, 즉 상기 공통 시드는 이들이 메모리 디바이스에 저장되기 전에 상기 코드워드들로부터 제거될 수 있다. 도 5에 도시된 방법의 장점은, 복수의 데이터 워드와 관련된 메타데이터 비트들이 단일 인스턴스에 저장될 수 있어서 결과적으로 메모리 공간이 절약된다는 점이다.
도 6에 도시된 방법의 구현은 플래시 메모리와 같은 메모리로부터, 복수의 코드워드들 각각과 관련된 메타데이터 비트들의 세트와 함께, 천공된 코드워드를 판독하는 단계를 포함한다. 특별한 예에서, 메타데이터 비트들의 세트의 표시 중 적어도 하나의 비트는 메모리에 저장된 하나의 코드워드 표시로부터 검색되고, 메타데이터 비트들의 세트의 표시 중 적어도 다른 하나의 비트는 메모리에 저장된 다른 코드워드 표시로부터 검색된다. 메타데이터 비트들의 세트의 표시는 코드워드를 생성하도록 각각의 천공된 코드워드와 연접될 수 있다. 이 코드워드는 ECC 디코더에 의해 디코딩될 수 있다. 특별한 예시적인 예에서, 메타데이터 비트들의 세트는 디스크램블링을 위한 시드이고, 디코딩된 코드워드는, 메모리의 페이지 또는 워드 라인 내의 코드워드의 위치에 따른 시드의 변환에 의해 피딩되는 의사-랜덤 생성기에 의해 생성된 스크램블링 패턴과 XOR-된다.
도 6은 플래시 메모리 디바이스와 같은 데이터 저장 디바이스로부터 데이터를 검색하는 방법의 흐름도를 도시한다. 단계(602)에서, 워드 및 공통 시드가 메모리 저장 디바이스로부터 판독된다. 예를 들어, 도 2에서, 코드워드 표시들(270 및 272)은 데이터 저장 디바이스(202)의 메모리(204)로부터 판독된다. 특별한 예에서, 메타데이터 비트들의 세트 중 적어도 제1 비트는 메모리에 저장된 제1 코드워드 표시로부터 검색되고, 메타데이터 비트들의 세트 중 적어도 제2 비트는 메모리에 저장된 제2 코드워드 표시로부터 검색된다. 도 3의 코드워드 세트(332)에 도시된 예시적인 예에서, 메타데이터 비트들의 제1 부분(340)은 코드워드 표시(334)에 저장되고, 메타데이터 비트들의 제2 부분(342)은 코드워드 표시(336)에 저장되며, 그리고 메타데이터 비트들의 제3 부분(344)은 코드워드 표시(338)에 저장된다. 부분들(340, 342 및 344)은 메타데이터 비트들(310)의 세트를 형성하도록 검색된다.
단계(604)로 진행하여, 공통 시드는 천공되지 않은 코드워드를 형성하도록 코드워드(또는 하나 이상의 에러를 포함할 수 있는 코드워드의 표시)와 결합될 수 있다. 예를 들어, 도 2에서, 결합기(224)는 확장된 코드워드 표시들(260 및 262)을 생성하도록 각각의 코드워드 표시들(270 및 272)과 메타데이터 표시(246)를 각각 결합할 수 있다.
단계(606)로 진행하여, 천공되지 않은 코드워드는 디코딩될 수 있다. 예를 들어, 도 2에서, ECC 디코더(222)는 디코딩되고 확장된 데이터 워드들(250 및 252)과 같은 디코딩되고 확장된 데이터 워드들을 생성하도록 에러 정정 인코딩(ECC)을 이용하여 확장된 코드워드 표시들(260 및 262)과 같은 확장된 코드워드 표시들을 디코딩할 수 있다.
단계(608)로 진행하여, 디코딩된 시드는 디코딩된 코드워드로부터 검색될 수 있다. 예를 들어, 도 2에서, 데이터 워드 파서(220)는 디코딩된 데이터 워드들(240 및 242)과 같은 디코딩된 데이터 워드들을 생성하도록 디코딩되고 확장된 데이터 워드들을 파싱할 수 있고, 디코딩된 메타데이터 비트들(248)을 검색할 수 있다.
단계(610)로 진행하여, 코드워드의 내부 위치가 결정될 수 있다. 예를 들어, 도 2에서, 메모리(204)의 워드 라인(208) 내의 제1 코드워드 표시 및 제2 코드워드 표시의 위치들이 결정될 수 있다.
단계(612)로 진행하여, 변환이 코드워드의 내부 위치에 따라 디코딩된 공통 시드에 적용될 수 있다. 예를 들어, 도 2에서, 비트 시프트 또는 로테이션과 같은 변환이 제1 코드워드 표시 또는 제2 코드워드 표시의 위치에 따라 메타데이터 비트들(248)에 적용될 수 있다.
단계(614)로 진행하여, 스크램블링 패턴이 변환된 공통 시드를 이용하여 생성될 수 있다. 예를 들어, 도 2에서, 디스크램블러(226)는 메타데이터 비트들(248)에 근거하여 스크램블링 패턴을 생성할 수 있다. 단계(616)로 진행하여, 디코딩된 데이터 워드가 스크램블링 패턴에 따라 디스크램블될 수 있다. 예를 들어, 도 2에서, 디스크램블러(226)는 생성된 스크램블링 패턴에 따라 디코딩된 데이터 워드들(240 및 242) 각각을 디스크램블할 수 있다.
도 6에 도시된 방법의 장점은, 복수의 코드워드 각각과 관련된 메타데이터 비트들이 단일 인스턴스에서 검색될 수 있어서 결과적으로 메모리 공간이 절약된다는 점이다. 추가적으로, 단일 ECC 디코드 동작을 이용한 디코딩 및 디스크램블링은, 시드 및 코드워드가 개별적으로 디코딩될 때보다 짧은 시간 주기에서 성취될 수 있다. 더욱이, 단일 ECC 엔진이 사용됨에 따라, 제어기의 복잡도가 감소된다. 추가적으로, 데이터 및 시드 둘 모두가 단일 ECC 코드워드를 사용하여 보호됨에 따라, 적은 리던던시가 동일한 에러 정정 능력을 달성하는 데 사용될 수 있어서 결과적으로, 저장 공간의 사용이 더욱 효율적이게 된다.
도 7은 메모리 저장 디바이스로부터 데이터를 검색하는 대안적인 방법을 도시한다. 단계(702)에서, 워드 및 공통 시드는 메모리 저장 디바이스로부터 판독된다. 예를 들어, 도 2에서, 제어기(206)는 메모리(204)로부터 제1 코드워드 표시(270), 제2 코드워드 표시(272) 및 메타데이터 표시(246)를 판독한다.
단계(704)로 진행하여, 워드 라인 내에 코드워드의 내부 위치가 결정될 수 있다. 예를 들어, 도 2에서, 워드 라인(208) 중 제1 위치는 제1 코드워드 표시(270)를 저장하는 제1 저장 위치라고 결정될 수 있고 워드 라인(208) 중 제2 위치는 워드 라인(208) 중 제2 코드워드 표시(272)를 저장하는 제2 저장 위치라고 결정될 수 있다.
단계(706)로 진행하여, 공통 시드가 판독될 수 있고, 변환이 코드워드의 내부 위치에 따라 상기 공통 시드에 적용될 수 있다. 단계(708)로 진행하여, 스크램블링 워드는 변환된 시드를 사용하여 생성될 수 있다. 단계(712)로 진행하여, 데이터는 스크램블링 워드에 따라 디스크램블될 수 있다.
스크램블링 워드를 생성하는 것 및 디스크램블하는 것과 동시에, 단계(710)에서, 공통 시드는 코드워드에 연접될 수 있고, 단계(714)에서, 데이터는 디코딩될 수 있으며 에러 위치들이 발견될 수 있다. 예를 들어, 도 2에서, 결합기(224)는 확장된 코드워드 표시들(260 및 262)을 생성하도록 코드워드 표시들(270 및 272) 각각에 메타데이터 비트들(248)을 연접시킬 수 있다. ECC 디코더(222)는 확장된 코드워드 표시들(260 및 262)을 디코딩하고 에러 위치들을 찾을 수 있다.
단계(716)로 진행하여, 에러들이 정정되고, 에러가 정정된 공통 시드와 같은 디코딩된 시드가 복수의 디코딩된 데이터 워드들 중 적어도 하나로부터 검색될 수 있다. 특별한 예에서, 디코딩된 시드는 복수의 디코딩된 데이터 워드들 중 적어도 하나의 일부이다. 예를 들어, 도 2에서, ECC 디코더(222)는 확장된 코드워드 표시들(260 및 262) 내의 에러들을 정정할 수 있고, 메타데이터 비트들(246)을 검색할 수 있다.
단계(718)로 진행하여, 데이터 워드를 디스크램블하는 데 사용되었던 공통 시드가 디코딩된 시드와 매치하는지의 결정이 단계(718)에서 이루어진다. 상기 공통 시드가 디코딩된 시드와 동일하면, 상기 시드에는 에러들이 없고, 단계(726)에서 방법이 종료된다. 상기 공통 시드에 에러들이 있으면, 단계(720)에서 스크램블링 패턴이 디코딩된 시드에 대응하는 변환을 적용시킴으로써 생성될 수 있다.
단계(722)로 진행하여, 데이터는, 변환되고 디코딩된 시드를 이용하여 생성된 스크램블링 패턴에 따라 디스크램블될 수 있다. 단계(724)로 진행하여, 에러들이 단계(714)에서 결정된 에러 위치들을 사용하여 정정된다. 방법은 단계(726)에서 종료된다.
도 7에 도시된 방법의 장점은, 데이터를 디스크램블하고 디코딩하는 것이 병행하여 진행될 수 있고, 결과적으로, 어떤 에러들도 시드에 발생하지 않을 때 시간이 절약될 수 있다는 점이다. 도 7에 도시된 방법의 다른 장점은, 복수의 코드워드들 각각과 관련된 메타데이터 비트들이 단일 인스턴스에서 검색될 수 있어서 결과적으로, 메모리 공간이 절약된다는 점이다.
저장된 데이터를 검색하는 방법의 특별한 예시적인 예는 이진 BCH(binary Bose-Chaudhuri-Hocquenghem) 코드들의 사용을 포함한다. 특별한 예시적인 방법은 에러 위치들을 찾는 단계 및 이 에러 위치들에서 비트들의 값들을 플립핑(flipping)하는 단계를 포함할 수 있거나, 또는 에러들을 발견하고 데이터와 에러값 간에 XOR 동작을 적용시킴으로써 데이터를 정정하는 다른 구현들을 사용할 수 있다. 이진 BHC 코드에서, 이진 BHC 코드가 이진 코드이기 때문에 에러 위치는 에러 정정을 수행하기에 충분할 수 있고, 정정은 지정된 위치들에서 비트들을 플리핑하는 것과 동등하다. 도 7에 도시된 방법에서, 디스크램블링 동작(712) 및 디코딩 동작(714)은 메모리로부터 제어기로의 전달 동작 동안 병행하여 적용될 수 있다.
병행하여 디스크램블링 동작(712) 및 디코딩 동작(714)을 적용시키는 것은 공통 시드를 포함하는 비트들이 메모리로부터 정확하게 검색될 높은 확률을 가정하여 판독 지연을 줄일 수 있다. 예를 들어, 비트 에러 율(BER)이 0.1%이고 공통 시드가 32 비트이면, 메모리로부터 검색된 공통 시드가 어떤 에러들도 가지지 않을 확률은 약 97%이다.
ECC 코드가 이진 BCH 코드일 때, 도 7의 단계(720 내지 722)에서의 디스크램블링 및 단계(724)에서의 정정이 교환될 수 있는 바, 그 이유는 이진 BHC 코드에 관한 에러 정정이 비트값에 관계없이 비트 플리핑과 동등하기 때문이다. 특별한 예에서, 스크램블링은 이진 XOR 동작이고, 스크램블링 및 디스크램블링 동작들은 서로의 역동작들(inverses)이다. 이 경우, 제1 스크램블링을 반복하고 그 다음, 정정된 시드로 디스크램블하는 것이 충분할 수 있다. 이러한 구현은 도 8에 예시되어 있다.
도 8은 플래시 메모리 디바이스와 같은 메모리 저장 디바이스로부터 데이터를 검색하는 다른 방법을 도시한다. 단계(802)에서, 코드워드 및 공통 시드는 상기 메모리 저장 디바이스로부터 판독된다. 예를 들어, 도 2에서, 코드워드 표시들(270 및 272)은 데이터 저장 디바이스(202)의 메모리(204)로부터 판독될 수 있다.
단계(804)로 진행하여, 워드 라인 내의 코드워드의 내부 위치가 결정될 수 있다. 예를 들어, 도 2에서, 워드 라인(208) 중 제1 위치는 제1 코드워드 표시(270)를 저장하는 제1 저장 위치라고 결정될 수 있고, 워드 라인(208) 중 제2 위치는 워드 라인(208) 중 제2 코드워드 표시(272)를 저장하는 제2 저장 위치라고 결정될 수 있다.
단계(806)로 진행하여, 공통 시드가 판독될 수 있고, 공통 시드로의 변환이 워드 라인 내의 코드워드의 내부 위치에 따라 적용될 수 있다. 단계(808)로 진행하여, 공통 시드는 천공되지 않은 코드워드를 형성하도록 코드워드에 연접될 수 있다. 예를 들어, 도 2에서, 결합기(224)는 확장된 코드워드 표시들(260 및 262)을 생성하도록 코드워드 표시들(270 및 272) 각각과 메타데이터 표시(246)를 각각 결합할 수 있다.
단계(812)로 진행하여, 데이터가 디코딩될 수 있고, 에러 위치들이 발견된다. 예를 들어, 도 2에서, ECC 디코더(222)는 디코딩되고 확장된 데이터 워드들(250 및 252)과 같은 디코딩되고 확장된 데이터 워드들을 생성하도록, 에러 정정 코드(ECC)를 이용하여, 확장된 코드워드 표시들(260 및 262)과 같은 확장된 코드워드 표시들을 디코딩할 수 있다. ECC 디코더(222)는 확장된 코드워드 표시들(260 및 262) 내의 데이터에서 에러 위치들을 찾아낼 수 있다.
데이터를 연접시키고 상기 데이터를 디코딩함과 동시에, 단계(810)에서 스크램블링 패턴이 생성될 수 있다. 예를 들어, 도 2에서, 디스크램블러(226)는 메타데이터 비트들(248)에 근거하여 디스크램블링 패턴을 생성할 수 있다.
단계(814)로 진행하여, 데이터는 스크램블링 패턴에 따라 디스크램블될 수 있다. 예를 들어, 도 2에서, 디스크램블러(226)는 디코딩된 데이터 워드들(240 및 242) 각각을 디스크램블할 수 있다.
단계(816)로 진행하여, 에러들이 정정되고 에러가 정정된 공통 시드와 같은 디코딩된 시드가 복수의 디코딩된 데이터 워드들 중 적어도 하나로부터 검색될 수 있다. 특별한 예에서, 디코딩된 시드는 복수의 디코딩된 데이터 워드들 중 적어도 하나의 일부이다. 예를 들어, 도 2에서, ECC 디코더(222)는, (단계(814)로부터) 결정된 에러 위치들을 이용하여 (단계(814)에서) 디스크램블한 이후에 제1 데이터(240) 및 제2 데이터(242)의 비트들을 플립할 수 있다.
단계(818)로 진행하여, 데이터를 스크램블하는 데 사용된 공통 시드가 디코딩된 시드와 매치하는지의 결정이 이루어진다. 단계(818)에서 시드 내에 어떤 에러들도 없음이 결정되면, 방법은 단계(828)에서 종료된다. 단계(820)에서, 공통 시드에 에러들이 있으면, 데이터는 단계(810)에서 생성된 부정확한 (즉, 잘못된) 스크램블링 패턴으로 다시 스크램블될 수 있다. 데이터를 다시 스크램블함과 동시에, 단계(822)에서, 제2 스크램블링 패턴이 디코딩된 시드 즉, 디코딩된 메타데이터 비트들 상에서 대응하는 변환을 이용하여 생성될 수 있다. 단계(822)에서 생성된 제2 스크램블링 패턴은 에러가 정정된 시드에 기반한 정확한 스크램블링 패턴일 것이다. (단계(820)로부터) 다시 스크램블된 데이터는 단계(826)에서, 제2 스크램블링 패턴에 따라 하나 이상의 제2 디스크램블된 데이터 워드들을 생성하도록 제2 스크램블링 변환을 수행함으로써 디스크램블될 수 있다. 방법은 단계(828)에서 종료된다.
ECC 코드가 지정된 에러 위치들에서 비트들을 플립함으로써 정정될 수 있는 이진 BCH 코드일 때, 그리고 스크램블링이 스크램블링 워드와의 XOR 동작에 의해 이행될 때, 단계(814)에서 사용된 동일한 스크램블링 워드로 단계(820)에서 데이터를 다시 스크램블하는 것은 결과적으로, (디스크램블링에 앞서) 본래의 데이터가 발생되게 하지만, 에러 위치들 내의 비트들이 플립된다. 그러므로, 도 8의 단계(826)에서 정확한 스크램블링 워드로 데이터를 디스크램블하는 것은 결과적으로, 본래의 데이터 워드가 발생되게 할 것이다. 더욱이, XOR이 가환성의 동작(commutative operation)이기 때문에, 단계(820)에서의 재-스크램블링 및 단계(826)에서의 디스크램블링은 교환될 수 있다.
도 8에 도시된 방법의 장점은, 데이터를 디스크램블하고 디코딩하는 것이 병행하여 진행될 수 있고, 결과적으로, 시간이 절약될 수 있다는 점이다. 도 8에 도시된 방법의 다른 장점은, 복수의 코드워드 각각과 관련된 메타데이터 비트들이 단일 인스턴스에서 검색될 수 있어서 결과적으로, 메모리 공간이 절약된다는 점이다.
도 9는 메모리 저장 디바이스로부터 데이터를 검색하는 방법을 도시한다. 단계(902)에서, 코드워드 표시 및 메타데이터 표시가 메모리로부터 검색된다. 상기 코드워드 표시는 천공된 코드워드에 대응하고, 메타데이터 표시의 적어도 하나의 비트는 다른 코드워드 표시로부터 검색될 수 있다.
단계(904)로 진행하여, 디코딩된 메타데이터 비트들과 결합된 천공된 코드워드에 대응하는 확장된 코드워드가 디코딩될 수 있다. 확장된 코드워드를 디코딩하는 것은 디코딩된 데이터 워드 및 디코딩된 메타데이터 비트들을 생성한다. 일 구현에서, 메타데이터 표시는 에러 정정 코드를 이용하여 메타데이터 표시를 디코딩함으로써 디코딩 즉, 변환된다. 특별한 예시적인 예에서, 메타데이터 표시는 신원 변환을 이용하여 변환되고, 여기서 변환된 메타데이터 비트들의 세트는 메타데이터 비트들의 세트와 동일하다.
단계(906)로 진행하여, 스크램블링 변환이 디코딩된 데이터 워드를 디스크램블하도록 수행될 수 있다. 디코딩된 메타데이터 비트들은 스크램블링 변환을 위한 시드를 생성하는 데 사용된다. 방법의 일 구현에서, 디코딩된 메타데이터 비트들은 시드를 포함한다.
데이터를 디코딩하는 방법의 구현은 복수의 코드워드 각각과 관련된 메타데이터 비트들의 세트와 함께 메모리로부터 천공된 코드워드를 판독하는 단계를 포함한다. 특별한 예에서, 메타데이터 비트들의 세트는 공통 시드를 구성한다. 메타데이터 비트들의 세트는 ECC 디코더에 의해 디코딩될 수 있는 코드워드를 생성하도록 천공된 코드워드와 연접된다. 메타데이터 비트들의 세트가 스크램블링을 위한 시드일 때, 디코딩된 데이터 워드는, 플래시 메모리의 페이지 또는 워드 라인(WL) 내의 코드워드의 위치에 따른 시드의 변환에 의해 피딩되는 의사-랜덤 생성기에 의해 생성된 스크램블링 패턴과 XOR될 수 있다.
본 명세서에 기술된 방법들 및 장치는 다음의 경우들 즉, 메타데이터 비트들의 세트가 복수의 데이터 워드의 각각과 관련된 경우 및 메타데이터 비트들의 세트를 복수의 워드 각각과 함께 저장하는 것 또는 메타데이터 비트들의 세트를 자체적으로 전용 코드워드로 저장하는 것이 바람직하지 않은 경우에 적용될 수 있다. 본 명세서에 기술된 방법들 및 장치는 인코딩 및 디코딩 둘 모두에 적용될 수 있다.
비록 본 명세서에 도시된 다양한 컴포넌트들이 블록 컴포넌트들로서 예시되고 일반적인 용어들로 기술되지만은, 이러한 컴포넌트들은 이러한 컴포넌트들 또는 이들의 어떤 조합에 속하는 특별한 기능들을 수행하기 위해 데이터 저장 디바이스(102) 또는 데이터 저장 디바이스(202)와 같은 데이터 저장 디바이스를 동작시키도록 구성된 하나 이상의 마이크로프로세서, 상태 머신들 또는 다른 회로들을 포함할 수 있다.
예를 들어, 데이터 워드 확장기(120)는, 데이터 워드들(140, 142) 각각에 메타데이터 비트들(144)의 세트를 연접, 첨부 또는 그렇지 않으면 결합하도록 하는 전용 회로 또는 프로그램된 마이크로프로세서 또는 마이크로컨트롤러를 이용하여 구현될 수 있다. 다른 예로서, 코드워드 천공기(124)는, 코드워드들(160, 162)로부터 하나 이상의 메타데이터 비트들(144)의 세트를 선택적으로 제거하도록 하는 전용 회로 또는 프로그램된 마이크로프로세서 또는 마이크로 컨트롤러를 이용하여 구현될 수 있다. 특별한 실시예에서, 데이터 워드 확장기(120), 코드워드 천공기(124) 또는 이들의 조합은 프로세서에 의해 실행되는 실행가능한 명령들을 포함하고, 상기 명령들은 메모리(104)에 저장된다. 대안적으로 또는 추가적으로, 제어기(106)에 포함될 수 있는 프로세서에 의해 실행되는 실행가능한 명령들은 제어기(106)의 판독 전용 메모리(ROM)(미도시)에서와 같이 메모리(104)의 일부가 아닌 개별의 메모리 위치에 저장될 수 있다.
특별한 실시예에서, 데이터 저장 디바이스(102 또는 202)는 하나 이상의 외부 디바이스에 선택적으로 연결되도록 구성된 휴대용 디바이스일 수 있다. 그러나, 다른 실시예들에서, 상기 데이터 저장 디바이스(102 또는 202)는 휴대용 통신 디바이스의 하우징 내에서와 같이 하나 이상의 호스트 디바이스 내에 부착 또는 내장될 수 있다. 예를 들어, 데이터 저장 디바이스(102)는 무선 전화기, 개인용 디지털 단말기(PDA), 게임 디바이스 또는 콘솔, 휴대용 네비게이션 디바이스 또는 내부 비-휘발성 메모리를 사용하는 다른 디바이스와 같은 패키징된 장치 내에 있을 수 있다. 특별한 실시예에서, 데이터 저장 디바이스(102)는 플래시 메모리(예컨대, NAND, NOR, 다중-레벨 셀(MLC), 분할된 비트-라인 NOR(DINOR), AND, 고 용량성 커플링 비(HiCR), 비대칭 컨택리스 트랜지스터(ACT) 또는 다른 플래시 메모리들), 소거가능하고 프로그램가능한 판독 전용 메모리(EPROM), 전기적으로-소거가능하고 프로그램가능한 판독 전용 메모리(EEPROM), 판독 전용 메모리(ROM), 일회성 프로그램가능 메모리(OTP) 또는 다른 타입의 메모리와 같은 비-휘발성 메모리를 포함한다.
본 명세서에 기술된 실시예들의 예시들은 다양한 실시예들의 일반적인 이해를 제공하기 위해 의도된 것이다. 구조적 그리고 로직적 구성들 및 변화들이 본 발명의 범위로부터 벗어남 없이 만들어질 수 있도록 다른 실시예들이 본 발명으로부터 이용되고 검색될 수 있다. 본 발명은 다양한 실시예들의 어떠한 그리고 모든 후속적인 적응들 또는 변경들을 커버하도록 의도된 것이다. 따라서, 본 발명 및 특징들은 제한적인 것보다는 예시적인 것으로서 간주되기 위한 것이다.
상기 개시된 본 발명은 예시적인 것으로서 고려되기 위한 것이고 제한적인 것이 아니며, 첨부된 특허 청구 범위는 본 발명의 범위 내에 속하는 모든 수정들, 보강(enhancement)들 및 다른 실시예들을 커버하도록 의도된 것이다. 따라서, 법에 의해 허용되는 최대 정도까지, 본 발명의 범위는 다음의 특허 청구 범위 및 이들의 균등물들의 가장 넓은 허용가능한 해석에 의해 결정되기 위한 것이며, 상술한 상세한 설명에 의해 한정되거나 제한되지 않을 것이다.
Claims (34)
- 복수의 데이터 워드들을 판독하는 방법으로서,
비휘발성 메모리를 포함하는 데이터 저장 디바이스에서,
상기 복수의 데이터 워드들의 각각에 대하여, 제 1 데이터 워드에 대응하는 제 1 코드워드 표시(representation) 및 제 2 데이터 워드에 대응하는 제 2 코드워드 표시를 포함하는 대응하는 코드워드 표시들을 상기 비휘발성 메모리로부터 판독하는 단계;
상기 비휘발성 메모리로부터 스크램블링 시드(scrambling seed)의 표시를 판독하는 단계;
상기 스크램블링 시드의 변환된 표시를 생성하도록 상기 스크램블링 시드의 표시를 변환시키는 단계;
복수의 확장된 에러 정정 코드(ECC) 코드워드 표시들을 생성하도록 상기 스크램블링 시드의 변환된 표시를 상기 복수의 코드워드 표시들 각각과 결합하는 단계, 상기 복수의 확장된 에러 정정 코드(ECC) 코드워드 표시들은, 상기 스크램블링 시드의 변환된 표시 및 상기 제 1 코드워드 표시를 포함하는 제 1 확장된 ECC 코드워드 표시와 상기 스크램블링 시드의 변환된 표시 및 상기 제 2 코드워드 표시를 포함하는 제 2 확장된 ECC 코드워드 표시를 포함하며; 그리고
복수의 디코딩된 데이터 워드들을 생성하도록 상기 복수의 확장된 ECC 코드워드 표시들 각각을 디코딩하는 단계
를 포함하는 것을 특징으로 하는 복수의 데이터 워드들을 판독하는 방법. - 제1항에 있어서,
상기 스크램블링 시드의 표시를 변환시키는 단계는, 에러 정정 코드를 이용하여 상기 스크램블링 시드의 표시를 디코딩하는 단계를 포함하는 것을 특징으로 하는 복수의 데이터 워드들을 판독하는 방법. - 제1항 또는 제2항에 있어서,
상기 스크램블링 시드의 표시를 변환시키는 단계는, 신원 변환(identity transformation)을 이용하고, 그리고 상기 스크램블링 시드의 변환된 표시는 상기 스크램블링 시드의 표시와 동일한 것을 특징으로 하는 복수의 데이터 워드들을 판독하는 방법. - 제1항 또는 제2항에 있어서,
상기 스크램블링 시드의 변환된 표시는, 상기 복수의 디코딩된 데이터 워드들 각각을 디스크램블(descramble)하기 위해 사용되는 시드(seed)를 포함하는 것을 특징으로 하는 복수의 데이터 워드들을 판독하는 방법. - 제1항 또는 제2항에 있어서,
상기 디코딩하는 단계는,
상기 복수의 확장된 ECC 코드워드 표시들 내의 에러 위치들을 생성하도록 상기 복수의 확장된 ECC 코드워드 표시들 각각을 디코딩하는 단계;
복수의 디스크램블된 코드워드 표시들을 생성하도록 상기 복수의 확장된 ECC 코드워드 표시들을 디스크램블링하는 단계, 상기 스크램블링 시드의 변환된 표시는 디스크램블링을 위한 시드로서 사용되고; 그리고
상기 에러 위치들에서 정정들을 일어나게함(effecting)으로써 상기 복수의 디코딩된 데이터 워드들을 생성하도록, 상기 복수의 디스크램블된 코드워드 표시들을 정정하는 단계
를 포함하는 것을 특징으로 하는 복수의 데이터 워드들을 판독하는 방법. - 데이터 저장 디바이스로서,
비휘발성 메모리; 및
상기 비휘발성 메모리에 결합되는 제어기를 포함하며,
상기 제어기는,
복수의 확장된 데이터 워드들을 생성하도록 제 1 데이터 워드 및 제 2 데이터 워드를 포함하는 복수의 데이터 워드들 각각과 스크램블링 시드를 결합하며, 상기 복수의 확장된 데이터 워드들은 상기 스크램블링 시드 및 상기 제 1 데이터 워드를 포함하는 제 1 확장된 데이터 워드와 상기 스크램블링 시드 및 상기 제 2 데이터 워드를 포함하는 제 2 확장된 데이터 워드를 포함하고;
복수의 에러 정정 코드(ECC) 코드워드들을 생성하도록 상기 복수의 확장된 데이터 워드들 각각을 인코딩하며, 상기 복수의 에러 정정 코드(ECC) 코드워드들은 상기 제 1 확장된 데이터 워드에 대응하는 제 1 ECC 코드워드 및 상기 제 2 확장된 데이터 워드에 대응하는 제 2 ECC 코드워드를 포함하고;
각각의 코드워드로부터 상기 스크램블링 시드를 제거함으로써 복수의 천공된 코드워드들을 생성하도록 상기 복수의 ECC 코드워드들의 각 코드워드를 천공시키며, 상기 복수의 천공된 코드워드들은 상기 제 1 ECC 코드워드로부터 상기 스크램블링 시드를 제거함으로써 생성된 제 1 천공된 코드워드 및 상기 제 2 ECC 코드워드로부터 상기 스크램블링 시드를 제거함으로써 생성된 제 2 천공된 코드워드를 포함하고; 그리고
상기 복수의 천공된 코드워드들을 저장하고 그리고 상기 스크램블링 시드를 나타내는 데이터를 상기 비휘발성 메모리에 저장하도록 동작하는 것을 특징으로 하는 데이터 저장 디바이스. - 제6항에 있어서,
상기 제어기는 상기 복수의 확장된 데이터 워드들 중 적어도 하나에 변환을 적용시키도록 동작하며, 상기 변환은 상기 스크램블링 시드의 함수(function)인 것을 특징으로 하는 데이터 저장 디바이스. - 제6항 또는 제7항에 있어서,
상기 제어기는 스크램블링 변환을 적용시키도록 동작하며, 상기 스크램블링 시드는 상기 스크램블링 변환을 위한 시드를 포함하고,
상기 제어기는 변환된 스크램블링 시드를 생성하도록 상기 스크램블링 시드를 변환시키도록 동작하며, 그리고
상기 스크램블링 시드를 나타내는 데이터는 상기 변환된 스크램블링 시드를 포함하는 것을 특징으로 하는 데이터 저장 디바이스. - 제6항 또는 제7항에 있어서,
상기 스크램블링 시드를 변환시키는 것은 에러 정정 코드로 상기 스크램블링 시드를 인코딩하는 것을 포함하는 것을 특징으로 하는 데이터 저장 디바이스. - 제6항 또는 제7항에 있어서,
상기 스크램블링 시드는 신원 변환을 이용함으로써 변환되고, 그리고 변환된 스크램블링 시드는 상기 스크램블링 시드와 동일한 것을 특징으로 하는 데이터 저장 디바이스. - 데이터 저장 디바이스로서,
비휘발성 메모리; 및
상기 비휘발성 메모리에 결합되는 제어기를 포함하며,
상기 제어기는,
복수의 코드워드들 각각의 코드워드 표시를 상기 비휘발성 메모리로부터 판독하고;
스크램블링 시드의 표시를 상기 비휘발성 메모리로부터 판독하고;
상기 스크램블링 시드의 변환된 표시를 생성하도록 상기 스크램블링 시드의 표시를 변환시키고;
복수의 확장된 에러 정정 코드(ECC) 코드워드 표시들을 생성하도록 상기 스크램블링 시드의 변환된 표시를 상기 복수의 코드워드 표시들 각각과 결합하고, 상기 복수의 확장된 에러 정정 코드(ECC) 코드워드 표시들은, 상기 스크램블링 시드의 변환된 표시 및 제 1 코드워드 표시를 포함하는 제 1 확장된 ECC 코드워드 표시와 상기 스크램블링 시드의 변환된 표시 및 제 2 코드워드 표시를 포함하는 제 2 확장된 ECC 코드워드 표시를 포함하며; 그리고
복수의 디코딩된 데이터 워드들을 생성하고 그리고 디코딩된 스크램블링 시드를 생성하기 위해 상기 복수의 확장된 ECC 코드워드 표시들 각각을 디코딩하도록 구성된 것을 특징으로 하는 데이터 저장 디바이스. - 제11항에 있어서,
상기 제어기는 에러 정정 코드를 이용하여 상기 스크램블링 시드의 표시를 디코딩함으로써 상기 스크램블링 시드의 표시를 변환시키도록 구성된 것을 특징으로 하는 데이터 저장 디바이스. - 제11항 또는 제12항에 있어서,
상기 스크램블링 시드의 표시에 대한 변환은 신원 변환을 포함하고, 그리고 상기 스크램블링 시드의 변환된 표시는 상기 스크램블링 시드의 표시와 동일한 것을 특징으로 하는 데이터 저장 디바이스. - 제11항 또는 제12항에 있어서,
상기 스크램블링 시드의 변환된 표시는, 상기 복수의 디코딩된 데이터 워드들 각각을 디스크램블링하기 위해 사용되는 시드를 포함하는 것을 특징으로 하는 데이터 저장 디바이스. - 제11항 또는 제12항에 있어서,
상기 복수의 확장된 ECC 코드워드 표시들 각각은,
상기 복수의 확장된 ECC 코드워드 표시들에서 에러 위치들을 결정하고;
복수의 디스크램블된 코드워드 표시들을 생성하도록 상기 복수의 확장된 ECC 코드워드 표시들을 디스크램블링하며, 여기서 상기 스크램블링 시드의 변환된 표시는 상기 디스크램블링을 위한 시드를 포함하고;
상기 복수의 확장된 ECC 코드워드 표시들 내의 상기 에러 위치들에 대응하는 디스크램블된 코드워드 표시들의 에러 위치들에서 상기 복수의 디스크램블된 코드워드 표시들을 정정하며;
상기 복수의 디코딩된 데이터 워드들 중 적어도 하나의 부분과 상기 스크램블링 시드의 변환된 표시를 비교하고; 그리고
상기 복수의 디코딩된 데이터 워드들 중 적어도 하나의 부분과 상기 스크램블링 시드의 변환된 표시와의 비교에 의해서 불일치가 결정됨에 응답하여, 상기 디스크램블링 및 정정을 반복함으로써 디코딩되며,
상기 디스크램블링은 상기 부분을 정정된 시드로서 사용하여 일어나게 되는 것을 특징으로 하는 데이터 저장 디바이스. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2011/000435 WO2012117263A1 (en) | 2011-03-02 | 2011-03-02 | Method of data storage in non-volatile memory |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140005989A KR20140005989A (ko) | 2014-01-15 |
KR101686980B1 true KR101686980B1 (ko) | 2016-12-16 |
Family
ID=44626216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137022102A KR101686980B1 (ko) | 2011-03-02 | 2011-03-02 | 비휘발성 메모리 내의 데이터 저장 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9195537B2 (ko) |
KR (1) | KR101686980B1 (ko) |
TW (1) | TW201250462A (ko) |
WO (1) | WO2012117263A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11972151B2 (en) | 2020-09-10 | 2024-04-30 | Western Digital Technologies, Inc. | Memory device using CbA technology |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9459955B2 (en) * | 2012-05-24 | 2016-10-04 | Sandisk Technologies Llc | System and method to scramble data based on a scramble key |
US9402226B2 (en) * | 2012-11-12 | 2016-07-26 | Qualcomm Incorporated | Station, method, and apparatus for network detection in a wireless communications system |
US9026888B2 (en) * | 2012-12-21 | 2015-05-05 | Intel Corporation | Method, system and apparatus for providing access to error correction information |
US9276609B2 (en) | 2013-11-16 | 2016-03-01 | Seagate Technology Llc | Systems and methods for soft decision generation in a solid state memory system |
KR20160141771A (ko) * | 2014-04-01 | 2016-12-09 | 래티스세미컨덕터코퍼레이션 | 직렬 비디오 인터페이스들내 에러 감지 및 정정을 위한 직교하는 데이터 구조화 |
US9710326B2 (en) * | 2014-07-28 | 2017-07-18 | SK Hynix Inc. | Encoder by-pass with scrambler |
US9984768B2 (en) | 2014-10-20 | 2018-05-29 | Sandisk Technologies Llc | Distributing storage of ECC code words |
KR102466412B1 (ko) * | 2016-01-14 | 2022-11-15 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
KR102438988B1 (ko) * | 2016-04-07 | 2022-09-02 | 삼성전자주식회사 | 랜덤화 연산을 수행하는 불휘발성 메모리 장치 |
US10180875B2 (en) * | 2016-07-08 | 2019-01-15 | Toshiba Memory Corporation | Pool-level solid state drive error correction |
US10740176B2 (en) * | 2016-09-19 | 2020-08-11 | Cnex Labs, Inc. | Computing system with shift adjustable coding mechanism and method of operation thereof |
US10637509B2 (en) | 2017-06-30 | 2020-04-28 | Silicon Motion, Inc. | Methods for reducing data errors in transceiving of a flash storage interface and apparatuses using the same |
TWI645298B (zh) | 2017-06-30 | 2018-12-21 | 慧榮科技股份有限公司 | 降低快閃儲存介面中傳收資料錯誤方法以及使用該方法的裝置 |
US10630424B2 (en) | 2017-06-30 | 2020-04-21 | Silicon Motion, Inc. | Methods for reducing data errors in transceiving of a flash storage interface and apparatuses using the same |
US10848263B2 (en) | 2017-06-30 | 2020-11-24 | Silicon Motion, Inc. | Methods for reducing data errors in transceiving of a flash storage interface and apparatuses using the same |
CN109213436B (zh) | 2017-06-30 | 2021-08-24 | 慧荣科技股份有限公司 | 降低快闪储存介面中传收数据错误方法及装置 |
US10635400B2 (en) * | 2017-12-12 | 2020-04-28 | Western Digital Technologies, Inc. | Seed generation |
US10742237B2 (en) * | 2018-06-21 | 2020-08-11 | Western Digital Technologies, Inc. | Memory device with adaptive descrambling |
US10956259B2 (en) | 2019-01-18 | 2021-03-23 | Winbond Electronics Corp. | Error correction code memory device and codeword accessing method thereof |
US20230315571A1 (en) * | 2022-03-29 | 2023-10-05 | Ampere Computing Llc | Integrated error correction code (ecc) and parity protection in memory control circuits for increased memory utilization |
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 |
EP4400971A1 (en) * | 2023-01-10 | 2024-07-17 | Samsung Electronics Co., Ltd. | Memory device and operation method thereof |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090044082A1 (en) * | 2007-04-13 | 2009-02-12 | Broadcom Corporation | Method and system for data-rate control by randomized bit-puncturing in communication systems |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7284185B2 (en) * | 2004-10-08 | 2007-10-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Puncturing/depuncturing using compressed differential puncturing pattern |
US7900127B2 (en) * | 2005-01-10 | 2011-03-01 | Broadcom Corporation | LDPC (Low Density Parity Check) codes with corresponding parity check matrices selectively constructed with CSI (Cyclic Shifted Identity) and null sub-matrices |
CN1838328A (zh) * | 2005-01-19 | 2006-09-27 | 赛芬半导体有限公司 | 擦除存储器阵列上存储单元的方法 |
KR101084779B1 (ko) * | 2006-11-06 | 2011-11-21 | 콸콤 인코포레이티드 | Mimo 전송을 위한 코드워드 레벨 스크램블링을 위한 방법들 및 장치들 |
US8127200B2 (en) * | 2006-12-24 | 2012-02-28 | Sandisk Il Ltd. | Flash memory device and system with randomizing for suppressing errors |
US7984360B2 (en) | 2006-12-31 | 2011-07-19 | Ramot At Tel Aviv University Ltd. | Avoiding errors in a flash memory by using substitution transformations |
JP4498370B2 (ja) * | 2007-02-14 | 2010-07-07 | 株式会社東芝 | データ書き込み方法 |
US8301912B2 (en) * | 2007-12-31 | 2012-10-30 | Sandisk Technologies Inc. | System, method and memory device providing data scrambling compatible with on-chip copy operation |
US8429330B2 (en) * | 2008-09-12 | 2013-04-23 | Sandisk Technologies Inc. | Method for scrambling data in which scrambling data and scrambled data are stored in corresponding non-volatile memory locations |
KR101563647B1 (ko) * | 2009-02-24 | 2015-10-28 | 삼성전자주식회사 | 메모리 시스템 및 그것의 데이터 처리 방법 |
JP5492679B2 (ja) * | 2009-06-30 | 2014-05-14 | パナソニック株式会社 | 記憶装置およびメモリコントローラ |
US20110176603A1 (en) * | 2011-02-10 | 2011-07-21 | Comtech Ef Data Corp. | method for carrying meta-data over digital video broadcasting-satellite second generation (dvb-s2) streams over the physical-layer framing structure |
-
2011
- 2011-03-02 WO PCT/IB2011/000435 patent/WO2012117263A1/en active Application Filing
- 2011-03-02 US US13/390,855 patent/US9195537B2/en active Active
- 2011-03-02 KR KR1020137022102A patent/KR101686980B1/ko active IP Right Grant
-
2012
- 2012-02-24 TW TW101106339A patent/TW201250462A/zh unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090044082A1 (en) * | 2007-04-13 | 2009-02-12 | Broadcom Corporation | Method and system for data-rate control by randomized bit-puncturing in communication systems |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11972151B2 (en) | 2020-09-10 | 2024-04-30 | Western Digital Technologies, Inc. | Memory device using CbA technology |
Also Published As
Publication number | Publication date |
---|---|
KR20140005989A (ko) | 2014-01-15 |
US20120278687A1 (en) | 2012-11-01 |
TW201250462A (en) | 2012-12-16 |
WO2012117263A1 (en) | 2012-09-07 |
US9195537B2 (en) | 2015-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101686980B1 (ko) | 비휘발성 메모리 내의 데이터 저장 방법 | |
US8631304B2 (en) | Overlapping error correction operations | |
US8239725B2 (en) | Data storage with an outer block code and a stream-based inner code | |
US8769374B2 (en) | Multi-write endurance and error control coding of non-volatile memories | |
US7900118B2 (en) | Flash memory system and method for controlling the same | |
US7865809B1 (en) | Data error detection and correction in non-volatile memory devices | |
US9459955B2 (en) | System and method to scramble data based on a scramble key | |
JP5698260B2 (ja) | メモリ装置における制御データの誤り訂正システムおよび方法 | |
US8666068B2 (en) | Method for scrambling shaped data | |
US8645789B2 (en) | Multi-phase ECC encoding using algebraic codes | |
US9124300B2 (en) | Error correction coding in non-volatile memory | |
KR101588605B1 (ko) | 레이트 호환성 펑처링된 코드를 지원하는 메모리 컨트롤러 | |
US8719677B2 (en) | Using ECC encoding to verify an ECC decode operation | |
KR101027202B1 (ko) | 작은 데이터 구조의 ecc 보호 장치, 방법 및 시스템 | |
US9071269B2 (en) | Encoding data for storage in a data storage device | |
US10855314B2 (en) | Generating and using invertible, shortened Bose-Chaudhuri-Hocquenghem codewords | |
TW200839502A (en) | Flash memory system and method for controlling the same | |
US10951238B1 (en) | Memory system and method for controlling non-volatile memory | |
JP2007179480A (ja) | メモリコントローラおよびフラッシュメモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
N231 | Notification of change of applicant | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20191008 Year of fee payment: 4 |