KR20090108586A - 에러 억제를 위해 랜더마이징하는 플래시 메모리 디바이스, 시스템 및 방법 - Google Patents

에러 억제를 위해 랜더마이징하는 플래시 메모리 디바이스, 시스템 및 방법 Download PDF

Info

Publication number
KR20090108586A
KR20090108586A KR1020097009421A KR20097009421A KR20090108586A KR 20090108586 A KR20090108586 A KR 20090108586A KR 1020097009421 A KR1020097009421 A KR 1020097009421A KR 20097009421 A KR20097009421 A KR 20097009421A KR 20090108586 A KR20090108586 A KR 20090108586A
Authority
KR
South Korea
Prior art keywords
data
memory
retrieved
original data
code
Prior art date
Application number
KR1020097009421A
Other languages
English (en)
Other versions
KR101449673B1 (ko
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
Priority claimed from US11/808,905 external-priority patent/US8370561B2/en
Priority claimed from US11/808,906 external-priority patent/US8127200B2/en
Application filed by 샌디스크 아이엘 엘티디 filed Critical 샌디스크 아이엘 엘티디
Publication of KR20090108586A publication Critical patent/KR20090108586A/ko
Application granted granted Critical
Publication of KR101449673B1 publication Critical patent/KR101449673B1/ko

Links

Images

Classifications

    • 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/26Sensing or reading circuits; Data output 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
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

데이터를 저장하기 위한 디바이스 및 방법은 비휘발성 메모리; 및 오리지널 데이터의 크기를 보존하면서 상기 비휘발성 메모리에 저장될 오리지널 데이터를 랜더마징하고, 이러한 오리지널 데이터를 메모리에 저장하고, 이러한 오리지널 데이터에 대한 요청에 응답하여, 오리지널 데이터를 검색하고, 디랜더마이징하고, 그리고 요청하는 엔티티를 인증하지 않고 엑스포팅하는 컨트롤러 및/또는 회로를 포함한다. 데이터를 저장하기 위한 시스템 및 방법은 제1 비휘발성 메모리 및, 제2 비휘발성 메모리에 저장된 드라이버 코드를 실행함으로써 제1 비휘발성 메모리에 유사하게 데이터를 저장하는 프로세서를 포함한다. ECC 인코딩은 랜더마이징 전 또는 후에 적용되고, 이에 따라, ECC 디코딩은 디랜더마이징 후 또는 전에 적용된다.
Figure P1020097009421
비휘발성 메모리, 오리지널 데이터, 랜더마이제이션, 디랜더마이제이션, 엔티티, 컨트롤러, 드라이버 코드, 프로세서, ECC 인코딩, ECC 디코딩

Description

에러 억제를 위해 랜더마이징하는 플래시 메모리 디바이스, 시스템 및 방법{FLASH MEMORY DEVICE, SYSTEM AND METHOD WITH RANDOMIZING FOR SUPPRESSING ERROR}
본 발명은 일반적으로 플래시 메모리 저장 시스템에 관한 것이다. 구체적으로, 본 발명은 플래시 메모리가 멀티 비트 메모리 셀을 저장할 수 있고 특정 디스터번스 효과가 최소화된 플래시 메모리 저장 시스템에 관한 것이다.
플래시 메모리 디바이스는 수년 동안 알려져 왔다. 전형적으로, 플래시 메모리내의 각 셀은 한 비트의 정보를 저장한다. 전통적으로, 비트를 저장하는 방법은 멀티 비트 메모리 셀의 2개의 상태, 즉, 하나의 상태는 논리 "0"이고 또 다른 하나의 상태는 논리 "1"을 나타내는 2개의 상태를 지원함으로써 이루어져 왔다. 플래시 메모리 셀에서 2개의 상태는 (멀티 비트 메모리 셀의 트랜지스터의 소스 및 드레인 엘리먼트를 연결하는 에어리어인) 멀티 비트 메모리 셀의 채널 위에 플로팅 게이트를 가짐으로써, 그리고 이러한 플로팅 게이트내에 저장된 전하량에 대한 2개의 유효한 상태를 가짐으로써 구현된다. 보통, 하나의 상태는 플로팅 게이트내의 제로 전하를 가지고 있고, (보통 "1" 상태를 표현하도록 정의된) 소거된 후의 멀티 비트 메모리 셀의 처음 기록되지 않은 상태이다. 또 다른 상태는 (보통 "0" 상태 를 표현하도록 정의된) 플로팅 게이트에 음전하량을 가지고 있다. 이러한 게이트에 음전하를 가짐으로써 멀티 비트 메모리 셀의 트랜지스터의 임계 전압(즉, 트랜지스터가 도전하도록 하기 위해 트랜지스터의 제어 게이터에 인가되어야 하는 전압)이 증가한다. 이제 멀티 비트 메모리 셀의 임계 전압을 체크함으로써, 저장된 비트를 판독하는 것이 가능하다. 즉, 임계 전압이 보다 높은 상태에 있다면 비트값은 "0"이고 임계전압이 보다 낮은 상태에 있다면 비트 값은 "1"이다. 실제로, 멀티 비트 메모리 셀의 임계 전압을 정확하게 판독할 필요는 없고, 오직 멀티 비트 메모리 셀이 현재 2개의 상태중 어디에 있는지만 정확하게 식별하면 된다. 이러한 목적을 위해, 2개의 상태의 중간에 있는 기준 전압값에 대해 비교하고 멀티 비트 메모리 셀의 입계전압이 이러한 기준 전압값의 아래에 있는지 위에 있는지만 결정하면 된다.
도 1A는 이것이 이루어지는 방법을 그래프로 도시하고 있다. 구체적으로, 도 1A는 많은 양의 셀의 임계전압의 분포를 도시하고 있다. 플래시 디바이스내의 셀이 이들의 특성과 동작에서 (예를 들어, 실리콘 구조내의 결합 또는 불순도 농도에서의 작은 변형으로 인해) 정확하게 동일하지 않기 때문에, 모든 멀티 비트 메모리 셀에 동일한 프로그래밍 동작을 적용한다고 해서 모든 멀티 비트 메모리 셀이 정확하게 동일한 임계 전압을 갖도록 하는 것은 아니다. (역사적 이유로 인해, 플래시 메모리에 데이터를 기록하는 것을 보통 플래시 메모리를 "프로그래밍"한다고 말한다. 용어 "기록" 및 "프로그래밍"은 여기에서 상호교환하여 사용된다.) 대신에, 임계전압은 도 1A에 도시된 방법과 유시하게 분포되어 있다. "1"의 값을 저장 하는 셀은 보통 음의 임계전압을 가져서, 멀티 비트 메모리 셀의 대부분은 도 1A의 좌측 피크에 의해 도시된 값에 가까운 임계전압을 갖고, 일부 보다 적은 수의 멀티 비트 메모리 셀이 보다 낮거나 보다 높은 임계전압을 갖는다. 마찬가지로, "0"의 값을 저장하는 셀은 보통 양의 임계전압을 가져서, 멀티 비트 메모리 셀의 대부분은 도 1a의 우측 피크에 의해 도시된 값에 가까운 임계전압을 갖고, 일부 보다 적은 수의 셀이 보다 낮거나 보다 높은 임계전압을 갖는다.
최근에 종래 "멀티 레벨 셀" 또는 짧게 MLC로 부르는 기술을 사용하는 새로운 종류의 플래시 디바이스가 나타났다. (이러한 명칭은 이전 타입의 플래시 셀이 역시 하나 보다 많은 레벨, 즉, 상술된 바와 같이 2개의 레벨을 갖는 점에서 잘못되었다. 따라서, 2개의 종류의 플래시 셀은 여기에서 "단일 비트 셀(SBC)" 및 "멀티 비트 셀(MBC)"로서 불린다.) MBC 플래시에 의해 얻어진 향상은 각 셀에 2개의 비트를 저장하는 것이다. (원리상, MBC는 또한 셀당 2개보다 많은 비트의 저장을 포함한다. 설명을 단순히 하기 위해, 이러한 2 비트 경우가 여기에 강조되었다. 그러나, 본 발명은 셀 당 2개보다 많은 비트를 지원하는 플래시 메모리 디바이스에 동일하게 적용가능하다는 것을 이해해야 한다.) 단일 셀이 2개의 비트의 정보를 저장하기 위해 이러한 셀은 4개의 상이한 상태중 하나일 수 있어야 한다. 이러한 셀의 "상태"는 그 임계전압에 의해 표현되기 때문에, MBC 셀이 그 임계 전압에 대해 4개의 상이한 유효 범위를 지원해야 하는 것은 분명하다. 도 1B은 전형적인 MBC 셀에 대한 임계전압의 분포를 도시하고 있다. 예상되는 바와 같이, 도 1B은 이러한 상태중 하나에 각각 상응하는 4개의 피크를 갖고 있다. SBC 경우에는, 각 상태 가 실제로 임계전압의 범위이고 단일 임계전압이 아니다. 이러한 셀의 컨텐트를 판독할 때, 단지 이러한 셀의 임계전압이 있는 범위가 정확하게 식별되기만 하면 된다. MBC 플래시 디바이스의 종래 예를 위해 Harari에 허여된 미국 특허 제5,434,825호를 참조하라.
4개의 상태중 하나로서 MBC 셀내의 2개의 비트를 인코딩할 때, (보통 음의 임계전압을 갖는) 도 1B의 최좌측 상태가 "1"의 값을 갖는 양 비트의 경우를 나타내도록 하는 것이 보통이다. (아래의 설명에서, 다음의 표기가 사용된다. 즉, 셀의 2개의 비트는 "하위 비트" 및 "상위 비트"로 불린다. 이러한 비트의 명확한 값은 ["상위 비트" "하위 비트"]로 기록되는데, 하위 비트는 우측에 있다. 그래서 하위 비트가 "0"이고 상위 비트가 "1"인 경우는 "10"으로 기록된다. 이러한 용어 및 표기의 선택은 임시적인 것이고 다른 명칭 인코딩이 가능하다는 것을 이해해야 한다. ) 이러한 표기를 사용하여, 최좌측 상태는 "11"의 경우를 나타낸다. 또 다른 3개의 상태는 좌측으로부터 우측으로 "10", "00", "01"의 순서로 할당되어 표시되어 있다. 모든 목적에 대해 여기에 언급되어 통합된 Chen에 허여된 미국 특허 제6,522,580호에서 상술된 바와 같은 인코딩을 사용하는 MBC NAND 플래시 디바이스의 구현예의 일예를 볼 수 있다. 특히, Chen 특허의 도 8을 참조하라. 하지만, 본 발명은 이러한 상태 할당에 의존하지 않고 다른 오더링이 사용될 수 있다는 것에 주목해야 한다. MBC 셀의 컨텐트를 판독할 때, 이러한 셀의 임계전압이 있는 범위는 정확하게 식별되어야 하고, 이러한 경우에만 이것은 하나의 기준 전압에 비교함으로써 항상 얻어질 수 없고, 다수의 비교가 필요할 수 있다. 예를 들어, 도 1B에 설명된 경우에, 하위 비트를 판독하는 방법은 먼저 셀의 임계전압을 기준 비교 전압(V 1 )에 비교하고, 그다음, 그 비교의 결과에 따라, 셀의 임계전압을 제로 기준 비교 전압 또는 기준 비교 전압(V 2 )에 비교하는 것이다. 하위 비트를 판독하는 또 다른 방법은 셀의 임계전압을 제로 기준 전압 및 V 2 에 무조건적으로 비교하는 것이다. 어느 경우에도 2개의 비교가 필요하다.
MBC 디바이스는 비용면에서 상당히 유리하다. 즉, 유사한 크기의 셀을 사용하여 하나 비트가 아닌 2개의 비트를 저장한다. 그러나, MBC 플래시를 사용하는 것은 일부 단점 역시 존재하는데, 즉, MBC 메모리의 평균 판독 및 기록 시간이 SLC 메모리보다 길어서 보다 낮은 성능을 유발한다. 또한, MBC의 신뢰도는 SBC보다 낮다. 이것은 쉽게 이해될 수 있다. MBC내의 임계전압 범위 사이의 차이는 SBC보다 훨씬 더 작다. 따라서, 2개의 상태 사이의 큰 갭으로 인해 SBC에서 간과될 수 있는 임계전압의 디스터번스(예를 들어, 이웃하는 셀에서의 동작으로부터의 임계전압의 드리프트, 간섭등을 유발하는 저장된 전하의 누설)은 MBC 셀이 하나의 상태로부터 또 다른 상태로 이동하도록 할 수도 있고, 이것은 에러 비트를 유발한다. 결국, 많은 기록/소거 사이클에 대한 디바이스의 내구성 또는 데이터 보유 시간에 있어서 MBC 셀의 품질 명세에서 보다 저하되는 결과를 얻는다. 따라서, MBC 및 SBC 셀 모두를 사용하는 것이 유리하고, 그 선택은 적용의 필요조건에 따라 상이할 수 있다.
상기 설명이 플로팅 게이트 플래시 메모리 셀을 다루고 있지만 다른 타입의 플래시 메모리 기술이 존재한다. 예를 들어, NROM 플래시 메모리 기술에서 아무런 도전성 플로팅 게이트가 존재하지 않고 대신 전하를 트랩핑하는 절연층이 존재한다. 본 발명은 여기 설명이 플로팅 게이트 기술에서 이루어졌지만 모든 플래시 메모리 타입에 동일하게 적용가능하다.
플래시 메모리 디바이스내의 다수의 소스의 에러가 존재한다. 상술된 바와 같이, 이러한 하나의 소스는 메모리 셀의 초기 기록된 상태를 다른, 부정확한 상태로 시프팅할 수도 메모리 셀의 게이트로부터의 전자의 누설인데. 이것은 셀을 판독할 때 하나 이상의 비트 에러를 유발한다. 본 발명은 주로, "프로그램 디스터브" 또는 짧게 "PD"로 보통 불리는 특정 소스의 에러와 관한 것이다. 데이터가 플래시 디바이스에 저장되는 장시간 동안의 에러의 슬로우 누적을 유발하는 누설 타입의 효과와는 달리, PD 효과로 인해 디바이스의 셀에 데이터를 기록하는 즉시 에러가 나타난다.
이러한 PD 효과로 인해, 기록되도록 의도되지 않은 셀이 이들의 초기 최좌측 상태로부터 다른 상태로 의도하지 않게 이동한다. (여기 설명은 임계 전압 축의 좌측 방향이 하위값을 나타내는 임계전압축을 일반적인 예를 가정하는데, 이것은 도 1A 및 도 1B에 사용되고 있다. 이것은 임시적 예이고 어떤 방법으로든 본 발명의 범위를 제한하는 것으로 구성되지 않아야 한다. ) 도 1B의 2비트 셀 예에서, "11"의 비트 값에 상응하는 최좌측 상태(또는 다른 말로, 셀의 소거된 상태)에 있고 이러한 상태로 남아 있도록 제안된 셀은 다음 최좌측 상태 "10"에 있는 것으로 발견되어, 이러한 셀에 저장된 2개의 비트중 하나의 비트가 부정확하게 된다. 일 부의 경우에, 특히, 셀당 2개의 비트보다 많은 비트를 저장하고 4개보다 많은 상태를 갖는 셀에서, PD 효과로 인해 최좌측 상태로부터 그 다음 이웃하는 상태로 이동할 뿐만 아니라, 최좌측 상태로부터 보다 먼 상태로 이동하고 최좌측 상태가 아닌 상태로부터 그 우측의 또 다른 상태(즉, 보다 높은 임계전압을 갖는 상태)로 이동한다. 그러나, 최좌측 상태로부터 그 바로 인접한 이웃 상태로 이동하는 상기 먼저 언급된 경우가 가장 보편적이고, 여기에서는 본 발명의 방법의 일반성을 제한하지 않고 모든 예 및 설명에 대해 사용될 것이다.
PD 효과에 대한 이류의 설명을 위한 배경으로서, Chen 특허의 도 1과 동일한 도 2는 전형적인 종래기술 플래시 메모리 디바이스의 블록도이다. 매트릭스로 배열된 복수의 메모리 셀(M)을 포함하는 메모리 셀 어레이(1)은 열 제어 회로(2), 행 제어 회로(3), c-소스 제어 회로(4) 및 c-p-웰 제어 회로(5)에 의해 제어된다. 열 제어 회로(2)는 메모리 셀(M)에 저장된 데이터를 판독하기 위해, 프로그램 동작 동안 메모리 셀(M)의 상태를 결정하기 위해, 그리고 프로그래밍을 촉직하거나 프로그래밍을 금지하기 위해 비트 라인(BL)의 전압 레벨을 제어하기 위해 메모리 셀 어레이(1)의 비트 라인(BL)에 접속되어 있다. 행 제어 회로(3)는 워드 라인(WL)중 하나를 선택하기 위해, 판독 전압을 인가하기 위해, 열 제어 회로(2)에 의해 제어되는 비트 라인 전압 레벨과 조합되는 프로그래밍 전압을 인가하기 위해, 그리고 메모리 셀(M)이 형성되는 p-타입 구역의 전압과 연결된 소거 전압을 인가하기 위해 워드 라인(WL)에 접속된다. C-소스 제어 회로(4)는 메모리 셀(M)에 접속된 공통 소스 라인을 제어한다. C-p-웰 제어 회로(5)는 c-p-웰 전압을 제어한다. 보통, NAND 플래시 디바이스에서, 하나의 워드 라인에 의해 제어되는 셀은 디바이스의 하나 또는 2개의 페이지에 상응하고, 이러한 워드 라인은 보통 2의 모더레이트 파워, 예를 들어, 25=32인 다수의 워드 라인을 각각 포함하는 블록으로 조직된다. 페이지는 함께 프로그래밍될 수 있는 셀을 가진 NAND 플래시 디바이스의 최소 단위이다. 블록은 함께 소거될 수 있는 셀을 가진 NAND 플래시 디바이스의 최소 단위이다.
메모리 셀(M)내에 저장된 데이터는 열 제어 회로(2)에 의해 판독되고 데이터 입출력 버퍼(6) 및 I/O 라인을 통해 외부 I/O 라인에 출력된다. 이러한 메모리 셀에 저장되는 프로그램 데이터는 외부 I/O 라인을 통해 데이터 입출력 버퍼(6)에 입력되고, 열 제어 회로(2)로 전송된다. 이러한 외부 I/O 라인은 컨트롤러(20)에 접속되어 있다.
플래시 메모리 디바이스를 제어하기 위한 커맨드 데이터는 컨트롤러(20)에 접속된 외부 제어 라인에 접속된 커맨드 인터페이스에 입력된다. 이러한 커맨드 데이터는 플래시 메모리에 무슨 동작이 요청되는지를 알린다. 입력 커맨드는 열 제어 회로(2), 행 제어 회로(3), c-소스 제어 회로(40), c-p-웰 제어 회로(5) 및 데이터 입출력 버퍼(6)를 제어하는 상태 머신(8)에 전달된다. 상태 머신(8)은 READY/BUSY 또는 PASS/FAIL과 같은 플래시 메모리의 상태 데이터를 출력할 수 있다.
컨트롤러(20)는 퍼스널 컴퓨터, 디지털 카메라, 퍼스널 디지털 어시스턴트와 같은 호스트 시스템에 접속되거나 접속가능하다. 메모리 어레이(1)로/로부터 데이 터를 저장하거나 판독하는 것은 커맨드를 시작하고 이러한 데이터를 각각 제공하거나 수신하는 것이 호스트이다. 컨트롤러(20)는 이러한 커맨드를 커맨드 회로(7)에 의해 해석되고 실행될 수 있는 커맨드 신호로 전환한다. 컨트롤러(20)는 보통 메모리 어레이(1)로/로부터 기록되거나 판독되는 데이터를 사용자를 위한 버퍼 메모리를 포함한다. 전형적인 메모리 시스템은 컨트롤러(20)를 포함하는 집적회로 칩(21), 및 각각 메모리 어레이 및 연관된 컨트롤, 입출력 및 상태 머신 회로를 포함하는 하나 이상의 집적회로 칩(22)을 포함한다. 물론 하나 이상의 집적 회로 칩에 시스템의 메모리 어레이 및 컨트롤러 회로를 함께 집적하는 추세이다.이러한 메모리 시스템은 호스트 시스템의 일부로서 내장될 수 있거나 호스트 시스템의 메이팅 소켓내에 제거가능하도록 삽입가능한 메모리 카드에 포함될 수 있다. 이러한 카드는 전체 메모리 시스템을 포함할 수 있거나, 연관된 주변 회로를 가진 컨트롤러 및 메모리 어레이가 별개의 카드에 제공될 수 있다.
PD 효과는 페이지를 프로그래밍할 때 NAND 플래시 디바이스의 셀에 인가된 전압을 검토할 때 이해하기 쉽다. 셀의 페이지를 프로그래밍할 때, 상대적으로 높은 전압이 페이지의 셀의 컨트롤 게이트에 접속된 워드 라인에 인가된다. 특정 셀 입계 전압이 이러한 제어 게이트 전압의 결과로서 증가되는지를 결정하는 것은 이러한 셀에 접속된 비트 라인에 인가된 전압이다. 데이터가 기록되지 않을 셀은 (즉, 올-원(all-one) 상태를 나태는 소거된 상태로 남아 있다) 셀의 전압차를 최소화하는 상대적으로 높은 전압 레벨에 접속된 그 비트 라인을 갖고 있다. 기록될 셀은 저전압에 접속되고, 셀에 큰 전압차를 유발하고, 셀의 임계전압이 증가되고, 따라서 셀을 도 1B의 전압축 우측으로 이동시키고 셀의 상태를 변화시킨다.
그러나, 기록되는 것으로 의미되지 않은 셀이 기록되는 것으로 의미된 셀 보다 낮은 전압차를 가질지라도, 기록되지 않는 셀은 여전히 일부 전압차를 갖는다. 기록되는 페이지가 높은 임계 전압(예를 들어, 최우측 상태)에 기록되는 일부 셀을 가진다면, 논-프로그래밍된 셀의 전압차는 보다 높아진다. 이것은 이러한 페이지의 모든 셀의 모든 제어 게이트에 동일한 전압이 인가되기 때문이고, 도달되는 임계 전압이 높을 수록 인가되는 전압은 보다 높아진다. 따라서, 일부 셀에 보다 높은 제어 게이트(즉, 워드 라인) 전압을 인가할 필요로 인해 논-프로그래밍된 셀에서 보다 높은 전압차가 발생한다. 이러한 셀이 이러한 예상되는 전압차에 의해 영향 받지 않는 목표로써 설계된다 할지라도, 실제 NAND 플래시 디바이스에서 이러한 전압차는 셀을 스트레스를 가하고, 의도되거나 요구되지도 않았는데도 일부 셀이 상태를 바꿀수도 있다.
상기 설명을 요약하면, PD는 셀의 페이지를 프로그래밍할 때, 최좌측 소거 상태에 남아 있도록 의도된 일부 셀이 다른 상태로 되어 이러한 셀을 판독할 때 비트 에러가 유발되는 효과이다.
PD 효과는 경험적으로 그리고 통계적으로 측정될 수 있고 대응책이 이들을 처리하기 위해 에러 보정 스킴의 형태로 인가될 수 있다. 플래시 디바이스 제조자는 이러한 잠재적인 에러의 소스를 알고 있고, 이것을 고려하여, 소비자가 사용해야만 하는 에러 보정의 레벨을 소비자에게 추천한다. 그래서, 2 비트 셀 MBC 플래시 디바이스의 제조자가 4 비트 ECC 스킴(모든 512 비트의 사용자 데이터가 4개에 이르는 비트 에러의 발생에 대해 보호되어야 한다는 것을 의미한다)을 추천할 때, 이러한 추천의 근거로서 디바이스내에 저장되는 랜덤 데이터 패턴을 가정하는 통계학적 분석 및 이러한 환경우에서 PD 타입 에러가 발생할 확률을 제시할 수 있다. 다른 에러 소스 및 타입이 또한 이러한 계산에 고려된다는 것은 명백하다.
불행하게도, 전형적인 실제 사용자 데이터는 랜덤이 아니다. 실제 사용자 파일에 대한 측정은 셀의 다양한 가능한 상태가 동일한 발생 확률을 갖고 있지 않다는 것을 보여준다. 셀의 최좌측 상태가 기록되지 않는 셀의 디폴트 값이기 때문에, 이러한 상태는 가장 빈번하다. 이것은 이해하기 쉬운데, 즉, 초기화되지 않거나 파일에서 사용되지 않는 메모리의 섹션은 매우 자주 소거 상태의 셀에 상응한다.
결과적으로, 실제 적용에서, PD 에러의 문제는 랜덤 데이터 패턴 통계적 계산에 기초하여 예측한 것보다 심각하다. 상대적으로 많은 셀이 PD 에러에 가장 취약한 상태인 소거 상태에 있을 것이고, 따라서 랜덤 데이터 분포 모델에 의해 예측된 것보다 많은 PD 에러가 실제로 일어날 것이다.
여기에서 플래시 메모리에 저장되는 사용자 데이터에 기초한 에러 소스로서 PD 효과를 강조하지만 다른 이러한 에러 소스가 존재한다는 것에 주목해야 한다. 예를 들어, 상이한 레지스턴스를 갖는 상이한 비트 라인(BL)의 결과인 백 패턴(BP) 현상 역시 데이터에 종속된다. 비트 라인의 레지스턴스는 비트 라인을 따라 셀에 저장된 데이터에 종속된다. 즉, 비트 라인의 레지스턴스는 비트 라인을 따라 셀의 실제 상태 또는 전압 레벨에 종속된다. 상이한 비트 라인 레지스턴스에 의해 상이 한 비트 라인 전류가 발생한다. 이로 인해 2개의 셀이 정확히 동일한 전압 레벨로 프로그래밍되어 있다 할지라도(즉, 2개의 셀이 정확히 동일한 임계전압을 가진다 할지라도) 상이한 2개의 상이한 비트 라인에서 2개의 셀을 판독하는 동안 상이한 전압 레벨이 감지될 수 있다. 결과로서 이러한 2개의 셀의 에러 확률은 상이하고 사용자-데이터에 종속된다.
분명, 플래시 블록 또는 페이지 에러율과 플래시 메모리에 저장된 사용자 데이터 사이의 이러한 종속관계는 요구되지 않는다. 특정 "최악의 경우" 사용자 데이터 패턴은 다른 것들보다 훨씬 더 높은 에러율을 가질 수 있다. 이것은 저장된 데이터를 보호하기 위해 필요한 ECC 필요조건을 추정하는 것을 어렵게 한다. 더욱이, 상술된 바와 같이, 실제, 논-랜덤 사용자 데이터는 PD와 같은 현상으로 인해 랜덤 데이터보다 높은 에러율을 갖는 경향이 있다.
따라서, PD 또는 BP와 같은 현상으로 인해 데이터 종속 에러에 덜 취약하다는 점에서 종래 플래시 메모리 디바이스보다 더 신뢰할만한 플래시 메모리 디바이스를 갖는 것은 매우 유익하고 그 필요는 널리 인식되어있다.
정의
랜덤 시퀀스는 아무런 인식가능한 패턴 또는 규칙을 갖지 않는 시퀀스이다. 이러한 시퀀스의 어떤 요소도 이러한 시퀀스의 다른 요소를 아는 것으로부터 예측될 수 없다. 그래서, "랜더마이제이션"은 여기에서 비트의 높은 비랜덤 시퀀스의 랜덤성을 증가시키는 동작으로 정의된다. 즉, "랜더마이징된" 시퀀스의 비트는 랜더마이제이션 이전의 시퀀스의 비트인 시퀀스의 다른 비트로부터 보다 덜 용이하게 예측될 수 있다. 본 발명의 랜더마이제이션 프로세스가 디터미니스틱(deterministic)하기 때문에, 이러한 프로세스의 출력 시퀀스는, 출력 시퀀스의 패턴 또는 규칙성이 인식되기 보다 더 어렵고 바람직하게는 입력 시퀀스의 패턴 또는 규칙보다 인식하기 훨씬 더 어렵다는 관점에서, 예측가능하고 그래서, 실로 랜덤하지 않고 단지 "유사랜덤(pseudorandom)"하다는 점에 주목해야 한다. 그래서, 첨부된 청구범위에서 언급된 "랜더마이징된" 시퀀스는 유사랜덤 시퀀스이고 진정한 랜덤 시퀀스가 아니다.
랜더마이제이션의 한 특정 경우는 "스크램블링"이다. 스크램블링은 입력 비트 시퀀스의 출력 비트 시퀀스로의 가역 변환이고, 그래서 출력 비트 시퀀스의 각 비트는 입력 비트 시퀀스 및 보조 비트 시퀀스의 다수의 비트의 함수이다. 랜더마이제이션의 역은 "디랜더마이제이션"이다. 스크램블링의 역은 "디스크램블링"이다.
"랜더마이징"은 메모리 셀의 상태의 세트에 대해 마찬가지로 정의된다. 메모리 셀의 제1 세트의 상태는 셀이 제1 세트의 상태로 프로그래밍될 때 셀에 의해 표현되는 비트 시퀀스가 셀이 제2 세트의 상태로 프로그래밍될 때 셀에 의해 표현되는 비트 시퀀스보다 더 랜덤한 경우에 동일한 메모리 셀의 제2 세트의 상태에 대하여 "랜더마이징된다". 다양한 메모리 셀 상태가 "랜더마이징된" 세트의 대략 동일한 수에서 나타나는 것이 바람직하다.
"논랜덤" 비트 시퀀스는 인식가능한 패턴 및/또는 규칙성을 갖는 비트 시퀀스이다. "논랜덤" 세트의 메모리 셀 상태는 인식가능한 패턴 및/또는 규칙성 및/또는 셀 상태에 대해 비균일한 유도 분포를 갖는 세트의 셀 상태이다.
(본 발명의 요약)
본 발명에 따라, (a) 비휘발성 메모리; 및 (b) 상기 비휘발성 메모리의 컨트롤러;를 포함하고, 상기 컨트롤러는, (i) 오리지널 데이터의 크기를 보존하면서 상기 비휘발성 메모리에 저장될 상기 오리지널 데이터를 랜더마이징하여 랜더마이징된 데이터를 제공하고, (ii) 상기 비휘발성 메모리에 상기 랜더마이징된 데이터를 저장하고, (iii) 상기 데이터 저장 디바이스의 외부의 엔티티에 의한 상기 오리지널 데이터에 대한 요청에 응답하여, (A) 상기 비휘발성 메모리로부터 상기 랜더마이징된 데이터를 검색하고, (B) 상기 검색된 랜더마이징된 데이터를 디랜더마이징하여 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하고, 그리고 (C) 상기 검색된 데이터를 상기 엔티티에, 상기 엔티티를 인증하지 않고 엑스포팅하도록 동작하는 데이터 저장 디바이스가 제공된다.
본 발명에 따라, (a) 메모리; 및 (b) 컨트롤러;를 포함하고, 상기 메모리는, (i) 비휘발성 메모리 셀의 어레이, 및 (ii) 회로를 포함하고, 상기 회로는, (A) 오리지널 데이터의 사이즈를 보존하면서 상기 비휘발성 메모리 셀에 저장될 상기 오리지널 데이터를 랜더마이징하여 랜더마이징된 데이터를 제공하고, (B) 상기 랜더마이징된 데이터를 상기 메모리 셀의 적어도 일부에 저장하고, (C) 상기 메모리 셀의 상기 적어도 일부로부터 상기 랜더마이징된 데이터를 검색하고, 그리고 (D) 상기 검색된 랜더마이징된 데이터를 디랜더마이징하여 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하도록 동작하고, 상기 컨트롤러는, (i) 상기 데이터 저장 디바이스의 외부의 엔티티로부터의 상기 오리지널 데이터에 대한 요청에 응답하여, 상기 검색된 데이터를 상기 엔티티에 상기 엔티티를 인증하지 않고 엑스포팅하도록 동작하는 데이터 저장 디바이스가 제공된다.
본 발명에 따라, (a) 제1 비휘발성 메모리; (b) 상기 제1 비휘발성 메모리를 위한 드라이버가 저장된 제2 비휘발성 메모리로서, 상기 드라이버는, (i) 오리지널 데이터의 크기를 보존하면서 상기 제1 비휘발성 메모리에 저장될 상기 오리지널 데이터를 랜더마이징하여 랜더마이징된 데이터를 제공하기 위한 코드, (ii) 상기 제1 비휘발성 메모리에 상기 랜더마이징된 데이터를 저장하기 위한 코드, 및 (iii) 상기 오리지널 데이터에 대한 요청에 응답하기 위한 코드로서, (A) 상기 제1 비휘발성 메모리로부터 상기 랜더마이징된 데이터를 검색하고, (B) 상기 검색된 랜더마이징된 데이터를 디랜더마이징하여 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하고, 그리고 (C) 상기 검색된 데이터를 상기 요청을 인증하지 않고 엑스포팅함으로써 상기 요청에 응답하기 위한 코드를 포함하는 제2 비휘발성 메모리; 및 (c) 상기 드라이버의 상기 코드를 실행하기 위한 프로세서;를 포함하는 데이터 저장 시스템이 제공된다.
본 발명에 따라, 컴퓨터 판독가능 코드가 내장된 컴퓨터 판독가능 매체로서, 상기 컴퓨터 판독가능 코드는 메모리 디바이스에 대한 드라이버 코드이고, 상기 컴퓨터 판독가능 코드는, (a) 오리지널 데이터의 크기를 보존하면서 상기 메모리의 메모리에 저장될 상기 오리지널 데이터를 랜더마이징하여 랜더마이징된 데이터를 제공하기 위한 프로그램 코드, (b) 상기 메모리에 상기 랜더마이징된 데이터를 저장하기 위한 프로그램 코드, 및 (c) 상기 오리지널 데이터에 대한 요청에 응답하기 위한 프로그램 코드로서, (i) 상기 메모리로부터 상기 랜더마이징된 데이터를 검색하고, (ii) 상기 검색된 랜더마이징된 데이터를 디랜더마이징하여 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하고, 그리고 (iii) 상기 검색된 데이터를 상기 요청을 인증하지 않고 엑스포팅함으로써 상기 요청에 응답하기 위한 프로그램 코드를 포함하는 컴퓨터 판독가능 저장 매체가 제공된다.
본 발명에 따라, (a) 메모리 셀을 상기 메모리 셀의 상응하는 상태의 세트로 프로그래밍함으로써 오리지널 데이터를 저장하기에 충분한 수의 메모리 셀을 갖는 비휘발성 메모리; 및 (b) 상기 비휘발성 메모리의 컨트롤러로서, (i) 상기 오리지널 데이터를 상기 상응하는 상태의 세트에 대하여 랜더마이징된 상기 메모리 셀의 모두의 상태의 세트로 맵핑하고, (ii) 상기 메모리 셀을 상기 랜더마이징된 세트의 상태로 프로그래밍하도록 상기 메모리를 명령하고, 그리고 (iii) 상기 데이터 저장 디바이스의 외부의 엔티티에 의해 상기 오리지널 데이터에 대한 요청에 응답하여, (A) 검색된 랜더마이징된 데이터를 제공하도록 상기 메모리 셀을 판독하고, (B) 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하도록 상기 검색된 랜더마이징된 데이터를 디랜더마이징하고, 그리고 (C) 상기 검색된 데이터를 상기 엔티티를 인증하지 않고 상기 엔티티에 엑스포팅하도록 동작하는 컨트롤러;를 포함하는 데이터 저장 디바이스가 제공된다.
본 발명에 따라, (a) 메모리; 및 (b) 컨트롤러;를 포함하고, 상기 메모리는, (i) 메모리 셀을 메모리 셀의 상응하는 상태의 세트로 프로그래밍함으로써 오리지널 데이터를 저장하기에 충분한 수의 메모리 셀, 및 (ii) 회로로서, (A) 상기 오리지널 데이터를 상기 상응하는 상태의 세트에 대하여 랜더마이징된 상기 메모리 셀의 모두의 상태의 세트로 맵핑하고, (B) 상기 메모리 셀을 상기 랜더마이징된 세트의 상태로 프로그래밍하고, (C) 검색된 랜더마이징된 데이터를 제공하도록 상기 메모리 셀을 판독하고, 그리고 (D) 상기 오리지널 데이터에 실질상 동일한 검색된 데이터를 제공하도록 상기 검색된 랜더마이징된 데이터를 디랜더마이징하도록 동작하는 상기 회로를 포함하고, 상기 컨트롤러는, 상기 데이터 저장 디바이스의 외부의 엔티티로부터의 상기 오리지널 데이터에 대한 요청에 응답하여, 상기 검색된 데이터를 상기 엔티티를 인증하지 않고 상기 엔티티에 엑스포팅하도록 동작하는 데이터 저장 디바이스가 제공된다.
본 발명에 따라, (a) 메모리 셀을 상기 메모리 셀의 상응하는 상태의 세트로 프로그래밍함으로써 오리지널 데이터를 저장하기에 충분한 수의 메모리 셀을 갖는 제1 비휘발성 메모리; (b) 상기 제1 비휘발성 메모리에 대한 드라이버가 저장된 제2 비휘발성 메모리로서, 상기 드라이버는, (i) 상기 오리지널 데이터를 상기 상응하는 상태의 세트에 대하여 랜더마이징된 상기 메모리 셀의 모두의 상태의 세트로 맵핑하기 위한 코드, (ii) 상기 메모리 셀을 상기 랜더마이징된 세트의 상태로 프로그래밍하도록 상기 제1 비휘발성 메모리를 명령하기 위한 코드, 및 (iii) 상기 오리지널 데이터에 대한 요청에 응답하기 위한 코드로서, (A) 검색된 랜더마이징된 데이터를 제공하도록 상기 제1 비휘발성 메모리 디바이스가 상기 메모리 셀을 판독하도록 명령하고, (B) 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하도록 상기 검색된 랜더마이징된 데이터를 디랜더마이징하고, 그리고 (C) 상기 검색된 데이터를 상기 요청을 인증하지 않고 엑스포팅함으로써 상기 오리지널 데이터에 대한 요청에 응답하기 위한 코드를 포함하는 제2 비휘발성 메모리; 및 (c) 상기 드라이버의 코드를 실행하기 위한 프로세서;를 포함하는 데이터 저장 시스템이 제공된다.
본 발명에 따라, 컴퓨터 판독가능 코드가 내장된 컴퓨터 판독가능 매체로서, 상기 컴퓨터 판독가능 코드는 메모리 셀을 상기 메모리 셀의 상응하는 상태의 세트로 프로그래밍함으로써 오리지널 데이터를 저장하기에 충분한 수의 메모리 셀을 포함하는 메모리 디바이스에 대한 드라이버 코드이고, 상기 컴퓨터 판독가능 코드는, (a) 상기 오리지널 데이터를 상기 상응하는 상태의 세트에 대하여 랜더마이징된 상기 메모리 셀의 모두의 상태의 세트로 맵핑하기 위한 프로그램 코드, (b) 상기 메모리 셀을 상기 랜더마이징된 세트의 상태로 프로그래밍하도록 상기 메모리 디바이스를 명령하기 위한 프로그램 코드, 및 (c) 상기 오리지널 데이터에 대한 요청에 응답하기 위한 프로그램 코드로서, (i) 검색된 랜더마이징된 데이터를 제공하도록 상기 메모리 디바이스가 상기 메모리 셀을 판독하도록 명령하고, (ii) 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하도록 상기 검색된 랜더마이징된 데이터를 디랜더마이징하고, 그리고 (iii) 상기 검색된 데이터를 상기 요청을 인증하지 않고 엑스포팅함으로써 상기 오리지널 데이터에 대한 요청에 응답하기 위한 프로그램 코드를 포함하는 컴퓨터 판독가능 저장 매체가 제공된다.
본 발명에 따라, (a) 오리지널 데이터의 크기를 보존하면서 상기 오리지널 데이터를 랜더마이징하여 랜더마이징된 데이터를 제공하는 단계; (b) 상기 랜더마이징된 데이터를 비휘발성 메모리에 저장하는 단계; 및 (c) 상기 오리지널 데이터에 대한 요청에 응답하여, (i) 상기 비휘발성 메모리로부터 상기 랜더마이징된 데이터를 검색하고, (B) 상기 검색된 랜더마이징된 데이터를 디랜더마이징하여 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하고, 그리고 (C) 상기 검색된 데이터를 상기 요청이 수신된 엔티티에 상기 엔티티를 인증하지 않고 엑스포팅하는 단계;를 포함하는 데이터 저장 방법이 제공된다.
본 발명에 따라, (a) 메모리 셀을 상기 메모리 셀의 상응하는 상태의 세트로 프로그래밍함으로써 오리지널 데이터를 저장하기에 충분한 수의 메모리 셀을 제공하는 단계; (b) 상기 오리지널 데이터를 상기 상응하는 상태의 세트에 대하여 랜더마이징된 상기 메모리 셀의 모두의 상태의 세트로 맵핑하는 단계; (c) 상기 메모리 셀을 상기 랜더마이징된 세트의 상태로 프로그래밍하는 단계; 및 (d) 상기 오리지널 데이터에 대한 요청에 응답하여, (i) 검색된 랜더마이징된 데이터를 제공하도록 상기 메모리 셀을 판독하고, (ii) 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하도록 상기 검색된 랜더마이징된 데이터를 디랜더마이징하고, 그리고 (iii) 상기 검색된 데이터를 상기 요청이 수신된 엔티티에 상기 엔티티를 인증하지 않고 엑스포팅하는 단계;를 포함하는 데이터 저장 방법이 제공된다.
본 발명의 범위는 2개의 기본적인 디바이스 및 데이터를 저장하기 위한 기본적인 시스템을 포함한다.
제1 기본적인 디바이스는 비휘발성 메모리 및 컨트롤러를 포함한다. 이러한 컨트롤러는 오리지널 데이터의 크기를 보존하면서 비휘발성 메모리에 저장될 오리지널 데이터를 랜더마이징하여 랜더마이징된 데이터를 제공한다. 컨트롤러는 이러한 랜더마이징된 데이터를 비휘발성 메모리에 저장한다. 제1 기본적인 디바이스의 외부의 엔티티 (예를 들어, 제1 기본적인 디바이스의 호스트)로부터 오리지널 데이터에 대한 요청에 응답하여, 컨트롤러는 랜더마이징된 데이터를 비휘발성 메모리로부터 검색하고 겸색된 랜더마이징된 데이터를 디랜더마이징하여 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공한다. 검색된 데이터는 오리지널 데이터와 정확히 동일한 것이 매우 바람직하지만, 이것은 예를 들어, 에러 보정 디코딩에 의해 보정되지 않는 데이터를 판독하는데 있어서의 에러 때문에 모든 경우에 보장될 수는 없다. 이러한 검색된 데이터는 엔티티를 인증하지 않고 엔티티에 엑스포팅된다.
오리지널 데이터의 크기가 보존되는 것은 본 발명의 디바이스를 메모리에 저장될 데이터를 압축하는 종래의 유사한 디바이스와 구별시킨다. 데이터 압축은 적어도 부분적인 랜더마이제이션의 형태로 구성될 수 있지만, 데이터 압축은 그 자체의 성질로 인해, 압축되는 데이터의 크기를 감소시킨다. 본 발명의 디바이스의 오리지널 데이터를 요청하는 엔티티가 인증되지 않는 구성은, 메모리에 저장되도록 데이터를 암호화하여 적어도 부분적으로 랜더마이징하지만, 메모리로부터 판독된 데이터를 암호해독된 형태로 수신하기 위해, 암호화를 위해 최초에 사용된 키의 표현 또는 패스워드의 표현과 같은 일부 형태의 인증을 요청하는 종래의 유사한 디바이스와 구별된다.
제2 기본적인 디바이스는 메모리 및 컨트롤러를 포함한다. 이러한 메모리는 비휘발성 메모리 셀의 어레이 및, 제1 기본적 디바이스의 컨트롤러의 랜더마이제이션, 저장, 검색 및 디랜더마이제이션 기능을 실행하는 회로를 포함한다. 이러한 컨트롤러는 제1 기본적인 디바이스의 컨트롤러에 의해 실행된 검색된 데이터의 인증-프리 엑스포트를 실행한다.
컨트롤러는 랜더마이제이션 전에 오리지널 데이터에 에러 보정 인코딩을 적용하고, 검색된 데이터를 엑스포팅하기 전에, 검색된 데이터에 에러 보정 디코딩을 적용하는 것이 바람직하다. 대안으로, 제1 기본적인 디바이스의 컨트롤러는 랜더마이징된 데이터를 저장하기 전에, 랜더마이징된 데이터에 에러 보정 인코딩을 적용하고 디랜더마이제이션 전에, 검색된 랜더마이징된 데이터에 에러 보정 디코딩을 적용한다. 에러 보정 인코딩은 코드워드를 생성하기 위해 에러 보정 비트가, 인코딩된 데이터에 첨부되는 시스테매틱 인코딩 또는 인코딩되는 데이터가 코드워드에서 인식불가능한 논시스테매틱 인코딩일 수 있다.
랜더마이제이션은 오리지널 데이터, 모듈로 2를 고정된 랜덤 비트 시퀀스 또는 유사랜덤 비트 시퀀스와 합산하는 단계를 포함하고, 디랜더마이제이션은 검색된 랜더마이징된 데이터, 모듈로 2를 랜덤 비트 시퀀스 또는 유사랜덤 비트 시퀀스와 합산하는 단계를 포함하는 것이 바람직하다. 본 발명의 일부 실시예에서, 유사랜덤 비트 시퀀스는 고정되어 있다. 본 발명의 다른 실시예에서, 유사랜덤 비트 시퀀스는 예를 들어, 메모리가 분할되고 랜더마이징된 데이터가 저장되는 유닛으로부터, 유닛의 유닛 넘버의 함수이거나 고정된 시드를 갖는 선형 피드백 시프트 레지스터를 사용하여 제1 디바이스의 컨트롤러 또는 제2 디바이스의 회로에 의해 생성된다. 예를 들어, 메모리가 플래시 메모리라면, 유닛은 플래시 메모리의 블록 또는 플래시 메모리의 페이지일 수 있다.
대안으로, 랜더마이제이션은 오리지널 데이터를 스크램블링하는 단계를 포함하고 디랜더마이제이션은 검색된 랜더마이징된 데이터를 디스크램블링하는 단계를 포함한다. 예를 들어, 제2 디바이스에서, 회로는 스크램블링을 실행하기 위한 스크램블러 블록 및 디스크램블링을 실행하기 위한 디스크램블러 블록을 포함한다. 스크램블링 및 디스크램블링은 공통 시드를 공유하는 각 선형 피드백 시프트 레지스터를 사용하여 실행되는 것이 가장 바람직하다. 본 발명의 일부 실시예에서, 공통 시드는 고정되어 있다. 본 발명의 다른 실시예에서, 공통 시드는 메모리가 분할되고, 랜더마이징된 데이터가 저장되는 유닛으로부터의 유닛의 유닛 넘버의 함수이다. 예를 들어, 메모리가 플래시 메모리라면, 유닛은 플래시 메모리의 블록 또는 플래시 메모리의 페이지일 수 있다.
본 발명의 기본적인 시스템은 제1 비휘발성 메모리, 제2 비휘발성 메모리 및 프로세서를 포함한다. 제2 비휘발성 메모리에 본 발명의 제1 디바이스의 컨트롤러를 에뮬레이팅하도록 프로세서에 의해 실행되는 코드를 포함하는 드라이버가 저장되어 있다. 본 발명의 시스템에서, 오리지널 데이터를 요청하는 엔티티는 전형적으로 드라이버에 의해 지원되는, 제1 비휘발성 메모리를 프로그래밍하고 판독하기 위한 실행 커맨드 및 시스템에서 구현되는 사용자 애플리케이션이다.
선형 피드백 시프트 레지스터와 같은 본 발명의 다양한 실시예의 기능적인 컴포넌트는 하드웨어, 펌웨어, 소프트웨어 또는 그 조합으로 구현될 수 있다.
본 발명의 범위는 또한, 데이터 저장하기 위한 본 발명의 디바이스 및 시스템에 의해 사용되는 방법을 포함한다. 본 발명의 범위는 또한 본 발명의 시스템의 드라이버에 대한 컴퓨터 판독가능 코드를 내장한 컴퓨터 판독가능 저장 매체를 포함한다.
또 다른 관점에서, 본 발명의 방법은 메모리 셀의 상응하는 상태의 세트로 프로그래밍되기에 충분한 수의 메모리 셀에 오리지널 데이터를 저장하는 방법이다. 예를 들어, 512개의 SBC 플래시 셀 또는 256개의 4-상태 MBC 플래시 셀은 512개의 비트의 데이터를 저장하도록 프로그래밍될 수 있다. 오리지널 데이터는 상응하는 상태의 세트에 대하여 랜더마이징되는 모든 셀 (예를 들어, 모든 512개의 SBC 셀 또는 모든 256개의 MBC 셀)의 상태의 세트로 맵핑된다. 그다음, 메모리 셀은 상응하는 상태의 오리지널 세트 보다는 랜더마이징된 세트의 상태로 프로그래밍된다. 이러한 관점에서, 2개의 세트에서의 상태의 수가 동일하다는 본 발명의 방법은 압축되지 않은 형태로 동일한 데이터를 저장할 필요가 있는 것보다 적은 메모리 셀에 압축된 형태로 데이터가 저장되는 종래의 유사한 방법과 구별된다. 아래에 설명되는 바와 같이, 오리지널 데이터를 랜더마이징된 세트의 메모리 셀 상태로 맵핑하는 바람직한 방법은 오리지널 데이터를 랜더마이징함으로써 이루어진다.
다양한 메모리 셀 상태가 실질상 동일한 수의 랜더마이징된 세트의 상태에서 일어나는 것이 바람직하다.
본 발명은 단지 예로서 다음의 도면을 참조하여 설명되어 있다.
도 1A는 1 비트 모드로 프로그래밍된 플래시 셀의 임계 전압 분포를 나타내는 도면,
도 1B는 2 비트 모드로 프로그래밍된 플래시 셀의 임계 전압 분포를 나타내는 도면,
도 2는 플래시 메모리 디바이스의 블록도,
도 3A 및 도 3B는 본 발명에 따른 랜더마이징/디랜더마이징 및 ECC 인코딩/디코딩의 개략적인 블록도,
도 4는 고정된 랜덤 시퀀스의 비트를 사용하는 랜더마이저 및 디랜더마이저 블록의 예를 도시한 도면,
도 5는 선형 피드백 시프트 레지스터에 의해 생성된 유사랜덤 시퀀스의 비트를 사용하는 랜더마이저 및 디랜더마이저의 예를 도시한 도면,
도 6은 스크램블러 및 디스크램블러 블록의 예를 도시한 도면, 및
도 7 내지 도 9는 본 발명의 시스템의 고레벨의 블록도.
바람직한 실시예
본 발명의 디바이스는 멀티비트셀 플래시 메모리 저장 디바이스에 저장된 사용자 데이터와 (ECC 디코딩 전의) 생 플래시 에러율 사이의 종속성을 제거하거나 감소시키는 멀티비트셀 플래시 메모리 저장 디바이스이다. 이것은 사용자 데이터 비트를 유사랜덤 비트 시퀀스로 변환함으로써 이루어진다. 이러한 유사랜덤 비트 시퀀스는 플래시 메모리에 프로그래밍된다. 결과로서, 높은 블록 또는 페이지 에러율을 유발하는 문제의 ("최악의 경우") 비트 패턴의 확률은 무시가능한 것이 되고 실제로 제로로 감소된다. 그 장점은 다음과 같이 명백하다. 1) 이러한 플래시 메모리의 신뢰도가 결정하기 매우 어려운, 특정 최악의 경우 사용자 데이터 패턴에 의해 좌우되지 않다. 2) 이러한 최악의 경우 사용자 데이터 패턴이 보다 빈번한, 실제 시나리오에서의 플래시 메모리의 신뢰도가 향상된다. 3) ECC 요구조건 산출이 보다 용이해진다. 4) 보다 낮은 ECC 리던던시가 요구되고 플래시 메모리 비용 효율이 (정보 비트당 셀의 관점에서) 향상된다. 이것의 이유는 실제로 제로의 발생 확률을 갖는 최악의 경우 에러율을 처리할 필요가 없다는 것이다. 단지, 랜덤 비트 시퀀스가 플래시 메모리에 프로그래밍된다는 가정하에 플래시 메모리의 예측된 에러율을 처리하기만 된다.
구체적으로 PD 효과에 의해 유발되는 데이터 디펜던트 에러를 처리하기 위한 방법은 2007년 5월 3일 출원된 미국 특허 출원 제11/797,379호에 나타나있다. 이러한 방법은 소거 상태가 서로 전환되도록 비트로부터 전압 레벨로의 맵핑을 변경하는 단계에 기초하고 있다. 이것은 플래시 메모리에 의해 사용된 실제 맵핑을 변경하지 않고 구현될 수 있다는 것에 주목해야 한다. 대신에, 플래시 메모리의 컨트롤러가 프로그래밍 전에 특정 비트를 인위적으로 플립핑하고 그다음 판독시 이러한 비트를다시 플립핑하도록 하도록 할 수 있다. 예를 들어, 모든 비트를 플립핑함으로써 모든 0의 상태로 프로그래밍되도록 모든 1의 상태(즉, 소거 상태)를 저장 하도록 최초 제안된 셀을 프로그래밍하는 결과를 얻는다. 이러한 방법의 단점은 보통 데이터 종속 에러의 문제를 해결하지 않는다는 것이다. 이것은 소거 상태에서 PD 에러의 매우 구체적인 시나리오만을 다룬다. 더욱이, 이러한 구체적인 경우에 대해서도, 소거 상태를 대안의 상태로 전환하는 것이 대안의 상태를 PD 에러에 취약하도록 하기 때문에 제안된 솔루션이 최상은 아니다. 예를 들어, 모든 1 및 모든 0의 상태가 전환되도록 모든 비트를 플립핑하는 이전의 예를 생각해보자. 만약 사용자 데이터가 많은 시퀀스의 0을 포함한다면, 프로그래밍된 페이지는 여전히 많은 PD 관련된 에러를 가지게 될 것이다.
본 발명의 방법은 훨씬 더 일반적인 방법으로 데이터 종속 에러의 문제를 해결한다. 모든 문제의 데이터 패턴을 계산하는 것은 이러한 계산이 어느 데이터 패턴이 보다 더 자주 저장되는지를 결정하기 위해 데이터를 생성하는 사용자 애플리케이션의 완전한 통계학적 특성화 및 플래시 메모리에서 발생하는 다양한 물리적 현상의 완전한 이해를 필요로 하기 때문에 매우 어려운 (그리고 아마도 실행불가능한) 업무이다. 그래서, PD와 같은 특정 현상에 대하여 문제인 특정 데이터 패턴을 다루는 대신에, 본 발명의 방법은 플래시 메모리에 기록된 비트 시퀀스가 유사랜덤이 되도록 함으로써 임의의 패턴의 확률을 실질적으로 제로로 감소시킨다.
본 발명의 일부 실시예에서, 사용자 데이터 비트를 유사랜덤 비트 시퀀스로 변환하는 것은 종래기술에 알려진 다수의 방법중 하나에 따라, (하드웨어, 펌웨어 또는 소프트웨어로 구현된) 랜더마이저 블록을 사용하여 이루어진다. 이러한 변환은 가역적일 필요가 있다. 역변환은 디랜더마이저 블록을 사용하여 이루어진다. 변환은 (도 3A에 도시된 바와 같이) ECC 인코딩 전에 사용자 데이터 비트에 또는 (도 3B에 도시된 바와 같이) ECC 인코딩 후에 인코딩된 사용자 데이터 비트에 이루어질 수 있다. 전자의 경우에, 사용자 데이터 비트는 (도 3A에 도시된 바와 같이) ECC 디코더를 사용하여 비트 시퀀스가 디코딩된 후에 플래시 메모리로부터 판독되는 비트 시퀀스에 역변환을 행함으로써 복구될 수 있다. 후자의 경우에, 역변환은 플래시 메모리로부터 판독된 비트 시퀀스에 직접 실행된다. 그다음, 최종 비트 시퀀스는 (도 3B에 도시된 바와 같이) 사용자 데이터 비트를 복구하기 위해 ECC 디코더를 사용하여 디코딩된다.
본 발명중 하나의 실시예에 따라, 랜더마이제이션은 사용자 데이터 비트 모듈로 2를 비트의 고정된 유사랜덤 시퀀스와 또는 비트의 고정된 랜덤 시퀀스와 합산함으로써 실행된다. 최종 랜더마이징된 비트 시퀀스는 (필요하다면) ECC 인코딩된 후에 플래시 메모리로 프로그래밍된다. 플래시 메모리 판독시에, 판독된 비트 시퀀스는 (필요하다면) ECC 디코더를 통해 디코딩된다. 사용자 데이터 비트는 비트 시퀀스 모듈로 2를 공지된 고정된 랜덤 또는 유사랜덤 비트 시퀀스와 합산함으로써, 디코딩된 에러 프리 비트 시퀀스를 디랜더마이징함으로써 복구된다. 이러한 실시예에 따른 랜더마이저 및 디랜더마이저 블록의 하나의 예가 도 4에 도시되어 있다.
본 발명의 또 다른 실시예에 따라, 랜더마이제이션은 ECC 인코딩된 사용자 데이터 비트 모듈로 2를 고정된 랜덤 시퀀스의 비트 또는 고정된 유사랜덤 시퀀스의 비트와 합산함으로써 실행된다. 최종 랜더마이징된 비트 시퀀스는 그다음 플래 시 메모리로 프로그래밍된다. 플래시 메모리 판독시에, 판독된 비트 시퀀스는 판독된 비트 시퀀스 모듈로 2를 공지된 고정된 랜덤 또는 유사랜덤 비트 시퀀스와 합산함으로써 디랜더마이징된다. 그다음 사용자 데이터 비트는 디랜더마이징된 비트 시퀀스를 ECC 디코딩함으로써 복구된다. 이러한 실시예에 따른 랜더마이저 및 디랜더마이저 블록의 하나의 예가 또한 도 4에 도시되어 있다.
본 발명의 또 다른 실시예에 따라, 랜더마이제이션이 사용자 데이터 비트 모듈로 2를 유사랜덤 시퀀스의 비트와 합산함으로써 실행된다. 유사랜덤 시퀀스의 비트는 예를 들어, 선형 피드백 시프트 레지스터를 사용하여 생성된다. 당업계에 공지된 바와 같이, "양호한" 랜덤성을 얻기 위해, 선형 피드백 시프트 레지스터는 충분히 큰 유한 필드(갈로이스 필드)의 프리미티브 다항식에 따라 구성된다(S. Golomb, Shift Register Sequences, Agean Park Press, Laguna Hills CA USA, 1982). 최종 랜더마이징된 시퀀스의 비트는 (필요하다면) ECC 인코딩된 후에 플래시 메모리에 프로그래밍된다. 플래시 메모리 판독시에, 판독된 비트 시퀀스는 (필요하다면) ECC 디코더를 사용하여 디코딩된다. 사용자 데이터 비트는 비트 시퀀스 모듈로 2를 프로그래밍 동안 사용된 동일한 유사랜덤 비트 시퀀스와 합산함으로써, 디코딩된 에러 프리 비트 시퀀스를 디랜더마이징함으로써 복구된다. 예를 들어, 유사 랜덤 비트 시퀀스의 생성 동안 피드백 시프트 레지스터를 사용할 때, 동일한 비트 시퀀스가 피드백 시프트 레지스터의 초기화를 위한 동일한 시드를 사용함으로써, 즉, 피드백 시프트 레지스터를 동일한 시퀀스의 비트로써 초기화함으로써 프로그래밍 및 판독 동안 얻어진다.
본 발명의 또 다른 실시예에 따라, 랜더마이제이션은 ECC 인코딩된 사용자 데이터 비트 모듈로 2를 유사랜덤 시퀀스의 비트와 합산함으로써 실행된다. 그다음, 랜더마이징된 비트 시퀀스는 플래시 메모리에 프로그래밍된다. 플래시 메모리 판독시에, 판독된 비트 시퀀스는 비트 시퀀스 모듈로 2를 프로그래밍 동안 사용되었던 동일한 유사랜덤 비트 시퀀스와 합산함으로써 디랜더마이징된다. 사용자 데이터 비트는 그다음, 디랜더마이징된 비트 시퀀스의 ECC 디코딩에 의해 복구된다. 이러한 실시예에 따른 랜더마이저 및 디랜더마이저 블록의 하나의 예가 또한 도 5에 도시되어 있다.
유사 랜덤 비트 시퀀스 제너레이터의 초기화를 위해 사용되는 시드를 결정하기 위한 다양한 옵션이 존재한다. 예를 들어, 시드는 일정할 수 있다. 대안으로, 이러한 시드는 데이터가 저장되는 플래시 메모리의 블록 또는 페이지의 유닛 넘버의 함수일 수 있다. 이러한 실시예에 따른 랜더마이저 및 디랜더마이저의 하나의 예가 도 5에 도시되어 있다.
시드가 유닛 넘버의 함수일 때 주의해야 하는데, 그 이유는 대부분의 플래시 메모리 디바이스가 "가비지 콜렉션"을 실행하고, 그 "가비지 콜렉션"의 코스 동안 데이터가 저장되는 유닛의 수는 변경되기 때문이다. 하나의 공통의 폼의 가비지 콜렉션은 일단 플래시 페이지가 프로그래밍되었다면, 페이지는 재프로그래밍되기 전에 소거되어야 한다는 사실에 의해 모티베이팅된다. 소거는 판번에 한 페이지씩 이루어지는 것이 아니고 한번에 한 블록씩 이루어진다. 모든 페이지가 프로그래밍된 플랫시 블록은 보통 현 데이터를 가진 일부 페이지 및 보다 최근에 프로그래밍 된 데이터에 의해 수퍼시딩된 데이터를 갖는 다른 페이지를 가지고 있다. 추가 프로그래밍을 위해 이러한 블록을 복구하도록, 현 데이터 페이지는 상이한 블록으로 복제된 후 오래된 블록은 소거된다. 새로운 블록은 이러한 오래된 블록과 상이한 블록 넘버를 가지고 있다. 보통, 현 데이터가 복제될 페이지는 현 데이터가 복제되는 오리지널 페이지와 상이한 페이지 넘버를 가지고 있다. 피드백 레지스터를 초기화하기 위해 사용되는 시드가 프로그래밍 및 판독에 대해 동일한 것이기 위해, 이러한 가비지 콜렉션과 연관된 유닛 넘버에서의 변화는 고려되어야 한다.
프로그래밍 및 판독에 대해 동일한 시드가 사용되도록 보정하는 하나의 방법은 새로운 페이지 또는 새로운 블록으로 이동되는 데이터를 항상 디랜더마이징하고, 이러한 데이터를 새로운 페이지 또는 새로운 블록에 기록할 때, 가능하게는 상이한 시드를 사용하여 리랜더마이징하는 것이다. 프로그래밍 및 판독 모두에 대해 동일한 시드가 사용되도록 보장하는 또 다른 방법은 시드를 생성하는 유닛 넘버의 함수가 오래된 유닛 넘버 및 새로운 유닛 넘버 모두에 대해 동일한 시드를 생성하도록 새로운 페이지 또는 새로운 블록에 데이터를 항상 이동시키는 것이다. 예를 들어, 함수 "페이지 넘버 모듈로 8"이 시드를 생성하도록 사용된다면 가비지 콜렉션은 이진 노테이션에서, 오래된 페이지의 페이지 넘버와 동일한 마지막 3개의 비트를 갖는 페이지 넘버를 갖는 새로운 페이지에 데이터의 페이지를 항상 카피하여야 한다. 동일한 시드가 프로그래밍 및 판독에 대해 사용되도록 보장하는 또 다른 방법은 이러한 시드를 데이터를 따라 저장하는 것이다. 예를 들어, NAND 플래시 메모리의 각 페이지는 보통, 데이터를 저장하도록 사용되는 메인부 및 관리 정보를 저장하도록 사용되는 관리부를 포함한다. 이러한 페이지의 전형적인 크기는 518 바이트인데, 512바이트는 데이터를 저장하기 위한 것이고 16바이트는 관리 정보를 저장하기 위한 것이다. 페이지의 메인부에 저장된 데이터를 랜더마이징하기 위한 유사랜덤 시퀀스를 생성하도록 사용되는 시드는 페이지의 관리부에 저장된다. 이러한 대안에서, 시드를 저장하는 셀은 시드가 디랜더마이징을 위해 정확하게 판독되는 것을 보장하기 위해 랜더마이제이션 프로세스로부터 제외되어야 한다.
"플래시 파일 시스템"을 갖는 플래시 메모리 디바이스에서, 로지컬 페이지 주소는 유사랜덤 시퀀스를 생성하기 위한 시드로서 사용될 수 있다. 플래시 파일 시스템은 디바이스가 자기 디스크를 에뮬레이팅할 수 있도록 하는 플래시 메모리 디바이스에 데이터 저장 및 매니퓰레이션의 시스템을 제공한다. 플래시 파일 시스템에 의해 애플리케이션 또는 운영 시스템은 물리적 주소를 사용하지 않고 로지컬 주소(종종 가상 주소로 불린다)를 사용하여 플래시 메모리 디바이스와 상호작용할 수 있다. 소프트웨어 애플리케이션과 물리적 메모리 시스템 사이의 중간 소프트웨어 층은 로지컬 주소와 물리적 주소 사이의 맵핑을 제공한다. 로지컬-물리적 주소 맵핑을 구현하는 일부 시스템은 반에게 허여된 미국 특허 5,404,485, 반에게 허여된 미국 특허 5,937,425 및 라세르에게 허여된 6,591,330에 설명되어 있고, 이 3개의 특허는 여기에 제시된 바와 같은 모든 목적을 위해 언급되어 통합되어 있다. 플래시 메모리 시스템의 호스트가 특정 로지컬 주소를 특정 양의 데이터와 연관시키기 때문에, 데이터를 프로그래밍하기 위한 피드백 레지스터를 초기화하기 위한 시드를 생성하도록 사용된 이러한 로지컬 주소는 데이터를 판독하기 위한, 피드백 레지스터를 초기화하기 위한 동일한 시드를 생성하도록 사용되도록 보장되어 있다.
본 발명의 또 다른 실시예에 따라, 랜더마이제이션은 스크램블러 블록을 통해 사용자 데이터 비트를 통과시킴으로써 실행된다. 스크램블러는 선형 피드백 시프트 레지스터를 사용하여 구현될 수 있다. 당업계에 공지된 바와 같이, "양호한" 랜덤성을 얻기 위해, 피드백 시프트 레지스터는 충분한 유한 필드(갈로이스 필드)의 프리미티브 다항식에 따라 구성된다(S. Golomb, ibid.). 선형 피드백 시프트 레지스터는 사전 정의된 시드에 의해 초기화된다. 이러한 시드는 일정할 수 있거나, 데이터가 저장되는 플래시 메모리의 페이지 또는 블록의 유닛 넘버의 함수일 수 있거나, 데이터가 판독될 때 공지된 임의의 다른 파라미터일 수 있다. 스크램블러의 출력부에서의 비트의 최종 유사랜덤 시퀀스는 (필요하다면) ECC 인코딩되고 그후에 플래시 메모리에 프로그래밍된다. 플래시 메모리를 판독시에, 판독된 비트 시퀀스는 (필요하다면) ECC 디코더를 사용하여 디코딩된다. 그다음, 사용자 데이터 비트는 디코딩된, 에러 프리 비트 시퀀스를, 프로그래밍 동안 스크램블러 블록에서 사용된 것과 동일한 시드에 의해 초기화된 디스크램블러 블록을 사용하여 디랜더마이징함으로써 복구된다. 스크램블러 블록이 다항식에 기초하여 구성된 선형 피드백 시프트 레지스터에 의해 구현될 때, 디스크램블러 블록이 역다항식을 표현하는 선형 시프트 레지스터로서 구현되는 것이 바람직하다. 이러한 실시예에 따른 랜더마이저 및 디랜더마이저 블록의 하나의 예가 도 6에 도시되어 있다.
본 발명의 또 다른 실시예에 따라, 랜더마이제이션은 ECC 인코딩된 사용자 데이터 비트를 스크램블러 블록에 통과시킴으로써 실행된다. 스크램블러를 구현하 는 하나의 방법은 사전 정의된 시드에 의해 초기화된, 선형 피드백 시프트 레지스터를 사용하는 것이다. 스크램블러의 출력부에서의 최종 유사램덤 시퀀스의 비트는 플래시 메모리에 프로그래밍된다. 플래시 메모리 판독시에, 판독된 비트 시퀀스는 프로그래밍 동안 스크램블러 블록에서 사용된 것과 동일한 시드에 의해 초기화된 디스크램블러 블록을 사용하여 디랜더마이징된다. 스크램블러 블록이 다항식에 기초하여 구성된 선형 피드백 시프트 레지스터에 의해 구현될 때, 디스크램블러 블록은 역 다항식을 나타내는 선형 시프트 레지스터로서 구현되는 것이 바람직하다. 그다음, 사용자 데이터 비트는 디랜더마이징된 비트 시퀀스의 ECC 디코딩에 의해 복구된다. 이러한 실시예에 따른 랜더마이저 및 디랜더마이저 블록의 하나의 예 역시 도 6에 도시되어 있다. 가비지 콜렉션을 갖는 유닛 넘버에 기초한 시드의 상호작용에 대한 설명은 상술된 바와 같은, 선형 피드백 시프트 레지스터에 기초한 랜더마이저 블록의 경우와 동일하다.
스크램블링이 ECC 인코딩 전에 실행되고 디스크램블링이 ECC 디코딩 후에 실행되는, 스크램블링 및 디스크램블링에 대한 제1 접근방법은 스크램블링이 ECC 인코딩 후에 실행되고 디스크램블링이 ECC 디코딩 전에 실행되는, 제2 접근방법보다 바람직하다는 것에 주목해야 한다. 이것은 플래시 메모리로부터 판독된 비트 시퀀스가 에러를 포함하고 있다면, 이러한 에러는 디스크램블링에 의해 전달될 수도 있고, 그래서 디스크램블링된 시퀀스에서의 에러의 증가를 증가시킬 수 있고, 그래서 ECC 디코딩이 디스크램블링에 이어 이루어진다면 ECC 디코딩에 대한 에러 보정 작업이 보다 더 어려울 수 있다.
여기에 언급된 것들 외에 랜더마이제이션 및 디랜더마이제이션 블록의 다양한 다른 실시예가 있을 수 있다. 상기 예에서, 랜더마이제이션은 비트 단위로 일렬로 실행된다. 대안으로, 랜더마이제이션은 병렬화되어, 랜더마이제이션/디랜더마이제이션 블록은 동시에 다수의 비트를 출력한다. 모든 경우에, 랜더마이제이션 블록에 의해 생성된 유사랜덤 비트 시퀀스는 랜더마이제이션 블록에 입력되는 오리지널 비트 시퀀스만큼 많은 비트를 갖는다. 이것은 또한 특정 정도까지 입력 데이터를 랜더마이징하면서 또한 입력 데이터에서 보다 적은 비트를 출력하는 종래의 압축과 본 발명을 구별되게 하는 본 발명의 하나의 태양이다.
데이터 비트로의 변환을 적용하는 상기 방법은 플래시 메모리가 프로그래밍되고 있다는 것을 전제로 한다는 것에 주목해야 한다. 플래시 페이지가 소거될 때 모든 페이지의 셀은 (도 1A 및 도 1B에 도시된 바와 같이) 최좌측 상태 또는 전압 레벨로 세팅되고 모든 셀은 고정된 모든 1의 데이터 패턴을 포함하는 것으로 가정된다. 이것은 모든 1의 비트 시퀀스로 실제로 프로그래밍되었지만, 본 발명에 따라, 일부 다른 데이터 비트 시퀀스를 나타내는 페이지에 대해 혼란을 유발할 수도 있다. 그러나, 이것은 기록된 페이지로부터 아직 기록되지 않았던 페이지를 구별할 수 있는 플래시 메모리 디바이스를 사용하여 애플리케이션에 의해 다루어질 수 있다. 이것은 예를 들어, 페이지 프로그래밍 동작의 일부로서 항상 기록되고 따라서 최좌측 상태에 있는 것으로 발견되면 기록되지않은 페이지를 가리키는, 페이지의 관리부내의, 하나 이상의 플래그 셀을 할당함으로써 수행하기 용이하고, 플래시 관리 시스템에서 주지되어 있다. 그래서 미기록으로 발견된 페이지는 스탠더드 종 래 로직에 따라 해석되고, 기록으로 발견된 페이지는 본 발명의 방법에 따라 해석된다.
저장 디바이스에 저장되는 로지컬 비트 값이 실제로 저장된 것인 물리적 값으로 변환되는 변환 스테이지의 아이디어는 US 11/797,379 이외의 다른 종래기술에서 설명되어 있다는 것에 주목해야 한다. 이러한 아이디어는 라세르에게 허여된 미국 특허 출원 공개 제2005/0213393호에 설명되어 있다. 그러나, 라세르의 '393의 변환은 본 발명의 목적과 완전히 상이한 목적을 위해 이루어질 뿐만 아니라 본 발명의 변환을 유용하게 하는 특정 특징이 가지고 있지 않다. 본 발명에 사용된 변환의 타입의 실질적인 특징은 에러가 데이터-인디펜던트가 되도록 셀에 저장된 사용자 데이터에 관계없이 셀의 모든 상태가 일어날 가능성이 동일하게 된다는 것이다. 라세르 '393에서, 변환의 목적은 에러의 분포를 고르게 하는 것이고 데이터 디펜던시를 제거하는 것이 아니다. 사실, 라세르 '393에 도시된 모든 변환 예는 본 발명의 목적을 달성하지 않는다.
곤잘레스 등의 미국 특허 제6,684,289호는 또한 데이터의 정적 패턴의 반복된 프로그래밍을 방지할 목적을 위해, 플래시 메모리를 기록하고 판독할 때 로지컬 비트값과 물리적 비트값 사이의 맵핑을 설명하고 있다(컬럼 6 라인 28-47 참조). 곤잘레스등의 '289는 저장된 PD 에러와 같은 데이터 디펜던트 에러의 확률을 최소화하는 것과 아무런 관련이 없을 뿐만 아니라, 정적 데이터 패턴의 반복된 프로그램을 방지할 목표를 달성하기 위해, 동일한 로지컬 데이터 값이 상이한 시각에 상이한 물리적 상태로 변환되도록 시변 변환을 적용한다. 한편, 본 발명은 (오리지 널 데이터를 판독시에 상응하는 역변환에 의해 복구될 수 있다는 것이 보장할 방법이 있다면 타임 디펜던트일 수 있을지라도) 변환이 타임 디펜턴트가 될 필요는 없다.
플래시 메모리의 동작의 상기 설명이 (그 임계 전압의 상이한 범위에 의해 표현되는) N 비트를 저장하는 셀이 정확히 2 N 가능한 상이한 상태를 가지고 있고 소거 동작이 2 N 데이터 값중 하나를 역시 나타내는 최좌측 (최하위 전압) 상태로 셀을 가져간다는 것을 가정하지만, 그러하지 않은 경우의 플래시 메모리 디바이스가 존재한다는 것에 주목해야 한다. 이러한 디바이스에서, 소거된 상태는 모든 데이터 상태와 상이하다. 구체적으로, 소거된 상태는 데이터 상태중 하나보다 보다 더 음의 임계전압을 갖는다. 이러한 디바이스에서, 데이터를 셀에 기록할 때마다, 데이터가 올-원 값이라 할지라도, 셀은 데이터 값에 상응하는 상태에 도달하도록 프로그래밍된다(즉, 그 임계전압이 증가된다). 즉, 소거된 상태는 이전에 언급된 디바이스와는 달리 모든 1의 상태와는 상이하다. 본 발명의 상기 설명이 제1 타입의 디바이스에 대해 이루어졌지만 본 발명은 또한 제2 타입의 디바이스에도 동일하게 적용가능하다.
본 발명의 방법은 소프트웨어 또는 하드웨어에 의해 구현될 수 있다. 보다 구체적으로, 프로그래밍 동안의 데이터의 랜더마이징 및 판독 동안의 데이터의 디랜더마이징은 (인터버 게이트와 같은) 전기 회로에 의해 또는 소프트웨어 코드를 실행함으로서 구현될 수 있다. 랜더마이징 및 디랜더마이징이 소프트웨어에 의해 구현된다면, (예를 들어, 저장 디바이스를 지원하는 소프트웨어 디바이스 드라이버에) 데이터를 기록하거나 판독하는 호스트 컴퓨터에서 실행되는 소프트웨어에 의해 구현될 수 있거나 호스트 컴퓨터와 상호작용하고 메모리 미디어를 제어하는 메모리 컨트롤러(예를 들어, 도 2의 컨트롤러(20))에서 실행되는 펌웨어에의해 구현될 수 있다. 랜더마이징 및 디랜더마이징이 하드웨어에 의해 구현된다면, (예를 들어, 도 2의 커맨드 회로(7)내의) 메모리 미디어내 또는 메모리 컨트롤러에서 구현될 수 있다. 이것은 메모리 컨트롤러 및 메모리 미디어가 2개의 별개의 다이이거나 고옹 다이에 존재하는지에 관계없이 적용된다. 모든 상기 구성 및 변형이 본 발명의 범위에 포함되어 있다.
따라서, 전형적인 종래기술 플래시 메모리 디바이스를 설명하는 것에 더하여, 도 2는 또한 본 발명의 플래시 메모리 디바이스의 2종류의 실시예를 설명하고 있다. 도 3B에와 같이 디랜더마이제이션 전에 ECC 인코딩을 실행하고 랜더마이제이션 후에 ECC 디코딩을 실행하는 제1 종류의 실시예에서, 컨트롤러(20)는 ECC 인코딩 및 디코딩을 실행하고 커맨드 회로(7)은 랜더마이제이션 및 디랜더마이제이션을 실행한다. 도 3A에 도시된 순서로 또는 도 3B에 도시된 순서로 ECC 인코딩/디코딩 및 랜더마이제이션/디랜더마이제이션을 실행하는 제2 종류의 실시예에서, 컨트롤러(20)는 ECC 인코딩/디코딩 및 랜더마이제이션/디랜더마이제이션을 실행한다. 이 2개의 종류의 실시예에서, 컨트롤러(20)는, 플래시 메모리 디바이스의 호스트로부터 읽기 커맨드를 수신시에, 호스트에 그 자체를 인증할 것을 요구하지 않고 호스트에 판독된 데이터를 엑스포팅한다. 즉, 호스트는 컨트롤러920)가, 판독된 데 이터를 호스트에 전송하도록 호스트가, 판독된 데이터를 수신하도록 인증된 것을 컨트롤러(20)에게 증명할 것이 요구되지 않는다.
도 7 및 도 8은 제2 종류의 플래시 메모리 디바이스 실시예를 포함하는 2개의 시스템(40, 60)의 하이-레벨의 블록도이다. 시스템(40)에서, 호스트 컴퓨터(42)는 본 발명의 플래시 메모리 디바이스(52)에 판독 및 기록 명령어를 전송한다. 플래시 메모리 디바이스(52)는 플래시 관리 소프트웨어(46)를 실행함으로써 플래시 메모리(50)를 관리하기 위해 플래시 컨트롤러(44)를 사용한다. 플래시 관리 소프트웨어(46)은 도 3A에 도시된 순서로 또는 도 3B에 도시된 순서로, 상술된 바와 같이 랜더마이제이션/디랜더마이제이션 및 ECC 인코딩/디코딩을 실행하기 위한 랜더마이제이션 모듈(48) 및 ECC 모듈(49)을 포함한다. 시스템(60)에서, 호스트 컴퓨터는 판독 및 기록 명령어를 플래시 메모리 디바이스(72)에 전송한다. 플래시 메모리 디바이스(72)는 플래시 관리 소프트웨어(66)를 실행함으로써 플래시 메모리(70)를 관리하기 위해 플래시 컨트롤러(64)를 사용한다. 플래시 컨트롤러(64)는 또한, 도 3A에 도시된 순서로 또는 도 3B에 도시된 순서로, 상술된 바와 같이, 랜더마이제이션/디랜더마이제이션 및 ECC 인코딩/디코딩을 실행하기 위한, 랜더마이제이션 하드웨어(68) 및 ECC 하드웨어(69)를 포함한다.
도 9는 본 발명의 또 다른 시스템(80)의 하이-레벨 블록도이다. 시스템(80)은 프로세서(82) 그리고, 모두 공통 버스(60)를 통해 통신하는, 램(84), 부트 롬(86), 대용량 디바이스(하드 디스크: 88) 및 종래기술의 플래시 메모리 디바이스(94)의 4개의 메모리 디바이스를 포함한다. 플래시 메모리 드라이버 코드(90)는 대용량 저장 디바이스(88)에 저장되고, 프로세서(82)와 플래시 메모리 디바이스(94)에 의해 실행되는 유저 애플리케이션 사이를 인터페이스하고 플래시 메모리 디바이스(94)의 플래시 메모리를 관리하기 위해 프로세서(82)에 의해 실행된다. 드라이버 코드(90)는 도 3A에 도시된 순서로 그리고 도 3B에 도시된 순서로, 상술된 바와 같이, 랜더마이제이션/디랜더마이제이션 및 ECC 인코딩/디코딩을 실행하기위한 랜더마이제이션/디랜더마이제이션 및 ECC 인코딩/디코딩을 실행하기 위한 랜더마이제이션 모듈(92) 및 ECC 모듈(93)을 포함한다. 플래시 메모리 디바이스(94)로부터 데이터를 판독하는 유저 애플리케이션은 요구청된 데이터를 수신하기 위해 자체를 인증하도록 드라이버 코드(90)에 의해 요청되지 않는다. 드라이버 코드(90)는 시스템(80)에 대한 운영 시스템 코드에 보통 포함되어 있지만 프리스탠딩 코드일 수도 있다.
플래시 메모리 디바이스(94)이외의 시스템(80)의 컴포넌트는 플래시 메모리 디바이스(94)의 호스트(100)를 구성한다. 대용량 저장 디바이스(88)는 본 발명을 구현하기 위한 컴퓨터 판독가능 드라이버 코드를 갖고 있는 컴퓨터 판독가능 저장 매체의 하나의 예이다. 이러한 컴퓨터 판독가능 저장 매체의 다른 예는 이러한 코드를 갖고 있는 CD와 같은 읽기전용 메모리를 포함한다.
본 발명의 디바이스 또는 시스템, 예를 들어, 도 2, 7 및 8의 디바이스 및 도 9의 시스템의 플래시 메모리에 저장된 특정 데이터만의 수신을 요청하는 엔티티의 인증을 요구하도록 이러한 디바이스 및 시스템을 구성하는 것이 본 발명의 범위에 포함되어 있다. 예를 들어, 플래시 컨트롤러(44 또는 64)는 선택적으로, 디바 이스(52 또는 72)의 사용자가 비밀 파티션과 공유 파티션으로 플래시 메모리(50 또는 70)을 분할할 수 있도록 구성된다. 비밀 파티션에 저장된 데이터로의 액세스는 패스워드의 표현과 같은 인증을 요구한다. 공유 파티션에 저장된 데이터로의 액세스는 인증을 요구하지 않는다. 대안으로, 플래시 컨트롤러(44 또는 64)는 플래시 메모리(50 또는 70)에 저장된 데이터로의 액세스가 인증이 필요한 시큐어 모드와 플래시 메모리(50 또는 70)에 저장된 데이터로의 액세스가 인증이 필요하지 않는 오픈 모드 사이에서 디바이스(52 또는 72)를 전환하는, 특권 사용자로부터의 커맨드를 지원하도록 구성되어 있다. 인증 없는 액세스에 관하여 본 발명이 요구하는 것은 단지 본 발명의 디바이스 또는 시스템의 동작 모드중 하나가 데이터에게 자체를 인증하도록 요구하는 엔티티를 요구하지 않고 적어도 일부 저장된 데이터의 판독을 허용해야만 한다는 것이다.
본 발명이 제한된 수의 실시예에 대하여 설명되었지만, 본 발명의 많은 변형, 수정 및 다른 적용이 가능하다는 것을 이해할 것이다.

Claims (81)

  1. 데이터 저장 디바이스로서,
    (a) 비휘발성 메모리; 및
    (b) 상기 비휘발성 메모리의 컨트롤러;를 포함하고,
    상기 컨트롤러는,
    (i) 오리지널 데이터의 크기를 보존하면서 상기 비휘발성 메모리에 저장될 상기 오리지널 데이터를 랜더마이징하여 랜더마이징된 데이터를 제공하고,
    (ii) 상기 비휘발성 메모리에 상기 랜더마이징된 데이터를 저장하고,
    (iii) 상기 데이터 저장 디바이스의 외부의 엔티티에 의한 상기 오리지널 데이터에 대한 요청에 응답하여,
    (A) 상기 비휘발성 메모리로부터 상기 랜더마이징된 데이터를 검색하고,
    (B) 상기 검색된 랜더마이징된 데이터를 디랜더마이징하여 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하고, 그리고
    (C) 상기 검색된 데이터를 상기 엔티티에, 상기 엔티티를 인증하지 않고 엑스포팅하도록 동작하는 것을 특징으로 하는 데이터 저장 디바이스.
  2. 제1항에 있어서, 상기 컨트롤러는 또한,
    (iv) 상기 오리지널 데이터를 랜더마이징하기 전에 상기 오리지널 데이터에 에러 보정 인코딩을 적용하고, 그리고
    (v) 상기 검색된 데이터를 엑스포팅하기 전에 상기 검색된 데이터에 에러 보정 디코딩을 적용하도록 동작하는 것을 특징으로 하는 데이터 저장 디바이스.
  3. 제1항에 있어서, 상기 컨트롤러는 또한,
    (iv) 상기 랜더마이징된 데이터를 상기 비휘발성 메모리에 저장하기 전에 상기 랜더마이징된 데이터에 에러 보정 인코딩을 적용하고, 그리고
    (v) 상기 검색된 랜더마이징된 데이터를 디랜더마이징하기 전에 상기 검색된 랜더마이징된 데이터에 에러 보정 디코딩을 적용하도록 동작하는 것을 특징으로 하는 데이터 저장 디바이스.
  4. 제1항에 있어서, 상기 컨트롤러는 상기 오리지널 데이터, 모듈로 2를 고정된 랜덤 비트 시퀀스와 합산하는 단계를 포함함으로써 상기 오리지널 데이터를 랜더마이징하도록 동작하고, 상기 컨트롤러는 상기 검색된 랜더마이징된 데이터, 모듈로 2를 상기 고정된 랜덤 비트 시퀀스와 합산하는 단계를 포함함으로써 상기 검색된 램던마이징된 데이터를 디랜더마이징하도록 동작하는 것을 특징으로 하는 데이터 저장 디바이스.
  5. 제1항에 있어서, 상기 컨트롤러는 상기 오리지널 데이터, 모듈로 2를 유사랜덤 비트 시퀀스와 합산하는 단계를 포함함으로써 상기 오리지널 데이터를 랜더마이 징하도록 동작하고, 상기 컨트롤러는 상기 검색된 랜더마이징된 데이터, 모듈로 2를 상기 유사랜덤 비트 시퀀스와 합산하는 단계를 포함함으로써 상기 검색된 램던마이징된 데이터를 디랜더마이징하도록 동작하는 것을 특징으로 하는 데이터 저장 디바이스.
  6. 제5항에 있어서, 상기 유사랜덤 비트 시퀀스는 고정된 것을 특징으로 하는 데이터 저장 디바이스.
  7. 제5항에 있어서, 상기 컨트롤러는 상기 유사랜덤 비트 시퀀스를 생성하도록 동작하는 것을 특징으로 하는 데이터 저장 디바이스.
  8. 제7항에 있어서, 상기 컨트롤러는 선형 피드백 시프트 레지스터를 사용하여 상기 유사랜덤 비트 시퀀스를 생성하도록 동작하는 것을 특징으로 하는 데이터 저장 디바이스.
  9. 제8항에 있어서, 상기 선형 피드백 시프트 레지스터의 시드는 고정된 것을 특징으로 하는 데이터 저장 디바이스.
  10. 제8항에 있어서, 상기 비휘발성 메모리는 유닛으로 분할되고, 상기 유닛의 각각은 각 유닛 넘버를 가지고 있고, 상기 선형 피드백 시프트 레지스터의 시드는 상기 랜더마이징된 데이터가 저장되는 상기 유닛의 상기 각 유닛 넘버의 함수인 것을 특징으로 하는 데이터 저장 디바이스.
  11. 제10항에 있어서, 상기 비휘발성 메모리는 플래시 메모리이고 상기 유닛은 상기 플래시 메모리의 블록인 것을 특징으로 하는 데이터 저장 디바이스.
  12. 제10항에 있어서, 상기 메모리는 플래시 메모리이고 상기 유닛은 상기 플래시 메모리의 페이지인 것을 특징으로 하는 데이터 저장 디바이스.
  13. 제1항에 있어서, 상기 컨트롤러는 상기 오리지널 데이터를 스크램블링하는 단계를 포함함으로써 상기 오리지널 데이터를 랜더마이징하도록 동작하고, 상기 컨트롤러는 상기 검색된 랜더마이징된 데이터를 디스크램블링하는 단계를 포함함으로써 상기 검색된 랜더마이징된 데이터를 디랜더마이징하도록 동작하는 것을 특징으로 하는 데이터 저장 디바이스.
  14. 제13항에 있어서, 상기 스크램블링하는 단계 및 상기 디스크램블링하는 단계는 공통 시드를 공유하는 각 선형 피드백 시프트 레지스터를 사용하여 실행되는 것을 특징으로 하는 데이터 저장 디바이스.
  15. 제14항에 있어서, 상기 시드는 고정된 것을 특징으로 하는 데이터 저장 디바 이스.
  16. 제14항에 있어서, 상기 메모리는 유닛으로 분할되고, 상기 유닛의 각각은 각 유닛 넘버를 가지고 있고, 상기 시드는 상기 랜더마이징된 데이터가 저장되는 상기 유닛의 상기 각 유닛 넘버의 함수인 것을 특징으로 하는 데이터 저장 디바이스.
  17. 제16항에 있어서, 상기 메모리는 플래시 메모리이고 상기 유닛은 상기 플래시 메모리의 블록인 것을 특징으로 하는 데이터 저장 디바이스.
  18. 제16항에 있어서, 상기 메모리는 플래시 메모리이고 상기 유닛은 상기 플래시 메모리의 페이지인 것을 특징으로 하는 데이터 저장 디바이스.
  19. 데이터 저장 디바이스로서,
    (a) 메모리; 및
    (b) 컨트롤러;를 포함하고,
    상기 메모리는,
    (i) 비휘발성 메모리 셀의 어레이, 및
    (ii) 회로를 포함하고, 상기 회로는,
    (A) 오리지널 데이터의 사이즈를 보존하면서 상기 비휘발성 메모리 셀에 저장될 상기 오리지널 데이터를 랜더마이징하여 랜더마이징된 데이터를 제공하고,
    (B) 상기 랜더마이징된 데이터를 상기 메모리 셀의 적어도 일부에 저장하고,
    (C) 상기 메모리 셀의 상기 적어도 일부로부터 상기 랜더마이징된 데이터를 검색하고, 그리고
    (D) 상기 검색된 랜더마이징된 데이터를 디랜더마이징하여 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하도록 동작하고,
    상기 컨트롤러는,
    (i) 상기 데이터 저장 디바이스의 외부의 엔티티로부터의 상기 오리지널 데이터에 대한 요청에 응답하여, 상기 검색된 데이터를 상기 엔티티에 상기 엔티티를 인증하지 않고 엑스포팅하도록 동작하는 것을 특징으로 하는 데이터 저장 디바이스.
  20. 제19항에 있어서, 상기 컨트롤러는 또한,
    (ii) 상기 오리지널 데이터를 랜더마이징하기 전에 상기 오리지널 데이터에 에러 보정 인코딩을 적용하고, 그리고
    (iii) 상기 검색된 데이터를 엑스포팅하기 전에 상기 검색된 데이터에 에러 보정 인코딩을 적용하도록 동작하는 것을 특징으로 하는 데이터 저장 디바이스.
  21. 제19항에 있어서, 상기 회로는 상기 오리지널 데이터, 모듈로 2를 고정된 랜 덤 비트 시퀀스와 합산하는 단계를 포함함으로써 상기 오리지널 데이터를 랜더마이징하도록 동작하고, 상기 회로는 상기 검색된 랜더마이징된 데이터, 모듈로 2를 상기 고정된 랜덤 비트 시퀀스와 합산하는 단계를 포함함으로써 상기 검색된 램던마이징된 데이터를 디랜더마이징하도록 동작하는 것을 특징으로 하는 데이터 저장 디바이스.
  22. 제19항에 있어서, 상기 회로는 상기 오리지널 데이터, 모듈로 2를 유사랜덤 비트 시퀀스와 합산하는 단계를 포함함으로써 상기 오리지널 데이터를 랜더마이징하도록 동작하고, 상기 회로는 상기 검색된 랜더마이징된 데이터, 모듈로 2를 상기 유사랜덤 비트 시퀀스와 합산하는 단계를 포함함으로써 상기 검색된 램던마이징된 데이터를 디랜더마이징하도록 동작하는 것을 특징으로 하는 데이터 저장 디바이스.
  23. 제22항에 있어서, 상기 유사랜덤 비트 시퀀스는 고정된 것을 특징으로 하는 데이터 저장 디바이스.
  24. 제22항에 있어서, 상기 회로는 상기 유사랜덤 비트 시퀀스를 생성하도록 동작하는 것을 특징으로 하는 데이터 저장 디바이스.
  25. 제24항에 있어서, 상기 회로는 상기 유사랜덤 비트 시퀀스를 생성하기 위한 선형 피드백 시프트 레지스터를 포함하는 것을 특징으로 하는 데이터 저장 디바이 스.
  26. 제25항에 있어서, 상기 선형 피드백 시프트 레지스터의 시드는 고정된 것을 특징으로 하는 데이터 저장 디바이스.
  27. 제25항에 있어서, 상기 메모리 어레이는 각각의 유닛 넘버를 갖는 유닛으로 분할되고, 상기 메모리 셀의 적어도 일부는 상기 유닛중 하나의 유닛이고 상기 선형 피드백 시프트 레지스터의 시드는 상기 하나의 유닛의 상기 각각의 유닛 넘버의 함수인 것을 특징으로 하는 데이터 저장 디바이스.
  28. 제27항에 있어서, 상기 메모리 셀은 플래시 메모리 셀이고 상기 유닛은 상기 플래시 메모리 셀의 블록인 것을 특징으로 하는 데이터 저장 디바이스.
  29. 제27항에 있어서, 상기 메모리 셀은 플래시 메모리 셀이고 상기 유닛은 상기 플래시 메모리 셀의 페이지인 것을 특징으로 하는 데이터 저장 디바이스.
  30. 제19항에 있어서, 상기 회로는,
    (A) 상기 오리지널 데이터를 랜더마이징하기 위한 스크램블러 블록; 및
    (B) 상기 랜더마이징된 데이터를 디랜더마이징하기 위한 디스크램블러 블록;을 포함하는 것을 특징으로 하는 데이터 저장 디바이스.
  31. 제30항에 있어서, 상기 스크램블러 블록 및 상기 디스크램블러 블록은 공통 시드를 공유하는 각각의 선형 피드백 시프트 레지스터로서 구현되는 것을 특징으로 하는 데이터 저장 디바이스.
  32. 제31항에 있어서, 상기 시드는 고정된 것을 특징으로 하는 데이터 저장 디바이스.
  33. 제31항에 있어서, 상기 메모리 어레이는 유닛으로 분할되고, 상기 유닛의 각각은 각 유닛 넘버를 갖고 있고, 상기 메모리 셀의 적어도 일부는 상기 유닛중 하나의 유닛이고, 상기 시드는 상기 하나의 유닛의 각 유닛 넘버의 함수인 것을 특징으로 하는 데이터 저장 디바이스.
  34. 제33항에 있어서, 상기 메모리 셀은 플래시 메모리 셀이고 상기 유닛은 상기 플래시 메모리 셀의 블록인 것을 특징으로 하는 데이터 저장 디바이스.
  35. 제33항에 있어서, 상기 메모리 셀은 플레시 메모리 셀이고 상기 유닛은 상기 플래시 메모리 셀의 페이지인 것을 특징으로 하는 데이터 저장 디바이스.
  36. 데이터 저장 시스템으로서,
    (a) 제1 비휘발성 메모리;
    (b) 상기 제1 비휘발성 메모리를 위한 드라이버가 저장된 제2 비뷔발성 메모리로서, 상기 드라이버는,
    (i) 오리지널 데이터의 크기를 보존하면서 상기 제1 비휘발성 메모리에 저장될 상기 오리지널 데이터를 랜더마이징하여 랜더마이징된 데이터를 제공하기 위한 코드,
    (ii) 상기 제1 비휘발성 메모리에 상기 랜더마이징된 데이터를 저장하기 위한 코드, 및
    (iii) 상기 오리지널 데이터에 대한 요청에 응답하기 위한 코드로서,
    (A) 상기 제1 비휘발성 메모리로부터 상기 랜더마이징된 데이터를 검색하고,
    (B) 상기 검색된 랜더마이징된 데이터를 디랜더마이징하여 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하고, 그리고
    (C) 상기 검색된 데이터를 상기 요청을 인증하지 않고 엑스포팅함으로써 상기 요청에 응답하기 위한 코드를 포함하는 제2 비휘발성 메모리; 및
    (c) 상기 드라이버의 상기 코드를 실행하기 위한 프로세서;를 포함하는 것을 특징으로 하는 데이터 저장 시스템.
  37. 제36항에 있어서, 상기 드라이버는,
    (iv) 상기 오리지널 데이터를 랜더마이징하기 전에 상기 오리지널 데이터에 에러 보정 인코딩을 적용하기 위한 코드; 및
    (v) 상기 검색된 데이터를 엑스포팅하기 전에 상기 검색된 데이터에 에러 보정 디코딩을 적용하기 위한 코드;를 더 포함하는 것을 특징으로 하는 데이터 저장 시스템.
  38. 제36항에 있어서, 상기 드라이버는,
    (iv) 상기 랜더마이징된 데이터를 상기 제1 비휘발성 메모리에 저장하기 전에 상기 랜더마이징된 데이터에 에러 보정 인코딩을 적용하기 위한 코드; 및
    (v) 상기 검색된 랜더마이징된 데이터를 디랜더마이징하기 전에 상기 검색된 랜더마이징된 데이터에 에러 보정 디코딩을 적용하기 위한 코드;를 더 포함하는 것을 특징으로 하는 데이터 저장 시스템.
  39. 제34항에 있어서, 상기 오리지널 데이터를 랜더마이징하기 위한 코드는 상기 오리지널 데이터, 모듈로 2를 고정된 랜덤 비트 시퀀스와 합산하기 위한 코드를 포함하고, 상기 검색된 랜더마이징된 데이터를 디랜더마이징하기 위한 코드는 상기 검색된 랜더마이징된 데이터, 모듈로 2를 상기 랜덤 비트 시퀀스와 합산하기 위한 코드를 포함하는 것을 특징으로 하는 데이터 저장 시스템.
  40. 제36항에 있어서, 상기 오리지널 데이터를 랜더마이징하기 위한 코드는 상기 오리지널 데이터, 모듈로 2를 유사랜덤 비트 시퀀스와 합산하기 위한 코드를 포함 하고, 상기 검색된 랜더마이징된 데이터를 디랜더마이징하기 위한 코드는 상기 검색된 랜더마이징된 데이터, 모듈로 2를 상기 유사랜덤 비트 시퀀스와 합산하기 위한 코드를 포함하는 것을 특징으로 하는 데이터 저장 시스템.
  41. 제40항에 있어서, 상기 유사랜덤 비트 시퀀스는 고정된 것을 특징으로 하는 데이터 저장 시스템.
  42. 제40항에 있어서, 상기 드라이버는,
    (iv) 상기 유사랜덤 비트 시퀀스를 생성하기 위한 코드를 더 포함하는 것을 특징으로 하는 데이터 저장 시스템.
  43. 제42항에 있어서, 상기 유사랜덤 비트 시퀀스를 생성하기 위한 코드는 선형 피드백 시프트 레지스터의 코드를 포함하는 것을 특징으로 하는 데이터 저장 시스템.
  44. 제43항에 있어서, 상기 선형 피드백 시프트 레지스터의 시드는 고정된 것을 특징으로 하는 데이터 저장 시스템.
  45. 제43항에 있어서, 상기 제1 비휘발성 메모리는 유닛으로 분할되고, 상기 유닛의 각각은 각 유닛 넘버를 갖고 있고, 상기 선형 피드백 시프트 레지스터의 시드 는 상기 랜더마이징된 데이터가 저장되는 상기 유닛의 각 유닛 넘버의 함수인 것을 특징으로 하는 데이터 저장 시스템.
  46. 제45항에 있어서, 상기 제1 비휘발성 메모리는 플래시 메모리이고 상기 유닛은 상기 플래시 메모리의 블록인 것을 특징으로 하는 데이터 저장 시스템.
  47. 제45항에 있어서, 상기 제1 비휘발성 메모리는 플래시 메모리이고 상기 유닛은 상기 플래시 메모리의 페이지인 것을 특징으로 하는 데이터 저장 시스템.
  48. 제36항에 있어서, 상기 오리지널 데이터를 랜더마이징하기 위한 코드는 상기 오리지널 데이터를 스크램블링하기 위한 코드를 포함하고, 상기 검색된 랜더마이징된 데이터를 디랜더마이징하기 위한 코드는 상기 검색된 랜더마이징된 데이터를 디스크램블링하기 위한 코드를 포함하는 것을 특징으로 하는 데이터 저장 시스템.
  49. 제48항에 있어서, 상기 오리지널 데이터를 스크램블링하기 위한 코드는 각 선형 피드백 시프트 코드를 포함하고, 상기 검색된 랜더마이징된 데이터를 디스크램블링하기 위한 코드는 각 선형 피드백 시프트 코드를 포함하고, 상기 선형 피드백 시프트 코드 양측은 공통 시드를 공유하는 것을 특징으로 하는 데이터 저장 시스템.
  50. 제49항에 있어서, 상기 공통 시드는 고정된 것을 특징으로 하는 데이터 저장 시스템.
  51. 제49항에 있어서, 상기 제1 비휘발성 메모리는 유닛으로 분할되고, 상기 유닛의 각각은 각 유닛 넘버를 갖고 있고, 상기 공통 시드는 상기 랜더마이징된 데이터가 저장되는 상기 유닛의 상기 각 유닛 넘버의 함수인 것을 특징으로 하는 데이터 저장 시스템.
  52. 제51항에 있어서, 상기 제1 비휘발성 메모리는 플래시 메모리이고 상기 유닛은 상기 플래시 메모리의 블록인 것을 특징으로 하는 데이터 저장 시스템.
  53. 제51항에 있어서, 상기 제1 비휘발성 메모리는 플래시 메모리이고 상기 유닛은 상기 플래시 메모리의 페이지인 것을 특징으로 하는 데이터 저장 시스템.
  54. 컴퓨터 판독가능 코드가 내장된 컴퓨터 판독가능 매체로서,
    상기 컴퓨터 판독가능 코드는 메모리 디바이스에 대한 드라이버 코드이고, 상기 컴퓨터 판독가능 코드는,
    (a) 오리지널 데이터의 크기를 보존하면서 상기 메모리의 메모리에 저장될 상기 오리지널 데이터를 랜더마이징하여 랜더마이징된 데이터를 제공하기 위한 프로그램 코드,
    (b) 상기 메모리에 상기 랜더마이징된 데이터를 저장하기 위한 프로그램 코드, 및
    (c) 상기 오리지널 데이터에 대한 요청에 응답하기 위한 프로그램 코드로서,
    (i) 상기 메모리로부터 상기 랜더마이징된 데이터를 검색하고,
    (ii) 상기 검색된 랜더마이징된 데이터를 디랜더마이징하여 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하고, 그리고
    (iii) 상기 검색된 데이터를 상기 요청을 인증하지 않고 엑스포팅함으로써 상기 요청에 응답하기 위한 프로그램 코드를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 저장 매체.
  55. 데이터 저장 디바이스로서,
    (a) 상기 메모리 셀을 상기 메모리 셀의 상응하는 상태의 세트로 프로그래밍함으로써 오리지널 데이터를 저장하기에 충분한 수의 메모리 셀을 갖는 비휘발성 메모리; 및
    (b) 상기 비휘발성 메모리의 컨트롤러로서,
    (i) 상기 오리지널 데이터를 상기 상응하는 상태의 세트에 대하여 랜더마이징된 상기 메모리 셀의 모두의 상태의 세트로 맵핑하고,
    (ii) 상기 메모리 셀을 상기 랜더마이징된 세트의 상태로 프로그래밍하도록 상기 메모리를 명령하고, 그리고
    (iii) 상기 데이터 저장 디바이스의 외부의 엔티티에 의해 상기 오리 지널 데이터에 대한 요청에 응답하여,
    (A) 검색된 랜더마이징된 데이터를 제공하도록 상기 메모리 셀을 판독하고,
    (B) 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하도록 상기 검색된 랜더마이징된 데이터를 디랜더마이징하고, 그리고
    (C) 상기 검색된 데이터를 상기 엔티티를 인증하지 않고 상기 엔티티에 엑스포팅하도록 동작하는 컨트롤러;를 포함하는 것을 특징으로 하는 데이터 저장 디바이스.
  56. 제55항에 있어서, 상기 메모리 셀의 상태는 실질상 동일한 수로 상기 랜더마이징된 세트의 상태에서 일어나는 것을 특징으로 하는 데이터 저장 디바이스.
  57. 데이터 저장 디바이스로서,
    (a) 메모리; 및
    (b) 컨트롤러;를 포함하고,
    상기 메모리는,
    (i) 메모리 셀을 메모리 셀의 상응하는 상태의 세트로 프로그래밍함으로써 오리지널 데이터를 저장하기에 충분한 수의 메모리 셀, 및
    (ii) 회로로서,
    (A) 상기 오리지널 데이터를 상기 상응하는 상태의 세트에 대하여 랜 더마이징된 상기 메모리 셀의 모두의 상태의 세트로 맵핑하고,
    (B) 상기 메모리 셀을 상기 랜더마이징된 세트의 상태로 프로그래밍하고,
    (C) 검색된 랜더마이징된 데이터를 제공하도록 상기 메모리 셀을 판독하고, 그리고
    (D) 상기 오리지널 데이터에 실질상 동일한 검색된 데이터를 제공하도록 상기 검색된 랜더마이징된 데이터를 디랜더마이징하도록 동작하는 상기 회로를 포함하고,
    상기 컨트롤러는, 상기 데이터 저장 디바이스의 외부의 엔티티로부터의 상기 오리지널 데이터에 대한 요청에 응답하여, 상기 검색된 데이터를 상기 엔티티를 인증하지 않고 상기 엔티티에 엑스포팅하도록 동작하는 것을 특징으로 하는 데이터 저장 디바이스.
  58. 제57항에 있어서, 상기 메모리 셀의 상태는 실질상 동일한 수로 상기 랜더마이징된 세트의 상태에서 일어나는 것을 특징으로 하는 데이터 저장 디바이스.
  59. 데이터 저장 시스템으로서,
    (a) 상기 메모리 셀을 상기 메모리 셀의 상응하는 상태의 세트로 프로그래밍함으로써 오리지널 데이터를 저장하기에 충분한 수의 메모리 셀을 갖는 제1 비휘발성 메모리;
    (b) 상기 제1 비휘발성 메모리에 대한 드라이버가 저장된 제2 비휘발성 메모리로서, 상기 드라이버는,
    (i) 상기 오리지널 데이터를 상기 상응하는 상태의 세트에 대하여 랜더마이징된 상기 메모리 셀의 모두의 상태의 세트로 맵핑하기 위한 코드,
    (ii) 상기 메모리 셀을 상기 랜더마이징된 세트의 상태로 프로그래밍하도록 상기 제1 비휘발성 메모리를 명령하기 위한 코드, 및
    (iii) 상기 오리지널 데이터에 대한 요청에 응답하기 위한 코드로서,
    (A) 검색된 랜더마이징된 데이터를 제공하도록 상기 제1 비휘발성 메모리 디바이스가 상기 메모리 셀을 판독하도록 명령하고,
    (B) 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하도록 상기 검색된 랜더마이징된 데이터를 디랜더마이징하고, 그리고
    (C) 상기 검색된 데이터를 상기 요청을 인증하지 않고 엑스포팅함으로써 상기 오리지널 데이터에 대한 요청에 응답하기 위한 코드를 포함하는 제2 비휘발성 메모리; 및
    (c) 상기 드라이버의 코드를 실행하기 위한 프로세서;를 포함하는 것을 특징으로 하는 데이터 저장 시스템.
  60. 제59항에 있어서, 상기 메모리 셀의 상태는 실질상 동일한 수로 상기 랜더마이징된 세트의 상태에서 일어나는 것을 특징으로 하는 데이터 저장 시스템.
  61. 컴퓨터 판독가능 코드가 내장된 컴퓨터 판독가능 매체로서,
    상기 컴퓨터 판독가능 코드는 메모리 셀을 상기 메모리 셀의 상응하는 상태의 세트로 프로그래밍함으로써 오리지널 데이터를 저장하기에 충분한 수의 메모리 셀을 포함하는 메모리 디바이스에 대한 드라이버 코드이고, 상기 컴퓨터 판독가능 코드는,
    (a) 상기 오리지널 데이터를 상기 상응하는 상태의 세트에 대하여 랜더마이징된 상기 메모리 셀의 모두의 상태의 세트로 맵핑하기 위한 프로그램 코드,
    (b) 상기 메모리 셀을 상기 랜더마이징된 세트의 상태로 프로그래밍하도록 상기 메모리 디바이스를 명령하기 위한 프로그램 코드, 및
    (c) 상기 오리지널 데이터에 대한 요청에 응답하기 위한 프로그램 코드로서,
    (i) 검색된 랜더마이징된 데이터를 제공하도록 상기 메모리 디바이스가 상기 메모리 셀을 판독하도록 명령하고,
    (ii) 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하도록 상기 검색된 랜더마이징된 데이터를 디랜더마이징하고, 그리고
    (iii) 상기 검색된 데이터를 상기 요청을 인증하지 않고 엑스포팅함으로써 상기 오리지널 데이터에 대한 요청에 응답하기 위한 프로그램 코드를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 저장 매체.
  62. 제61항에 있어서, 상기 메모리 셀의 상태는 실질상 동일한 수로 상기 랜더마이징된 세트의 상태에서 일어나는 것을 특징으로 하는 컴퓨터 판독가능 저장 매체.
  63. 데이터 저장 방법으로서,
    (a) 오리지널 데이터의 크기를 보존하면서 상기 오리지널 데이터를 랜더마이징하여 랜더마이징된 데이터를 제공하는 단계;
    (b) 상기 랜더마이징된 데이터를 비휘발성 메모리에 저장하는 단계; 및
    (c) 상기 오리지널 데이터에 대한 요청에 응답하여,
    (i) 상기 비휘발성 메모리로부터 상기 랜더마이징된 데이터를 검색하고,
    (B) 상기 검색된 랜더마이징된 데이터를 디랜더마이징하여 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하고, 그리고
    (C) 상기 검색된 데이터를 상기 요청이 수신된 엔티티에 상기 엔티티를 인증하지 않고 엑스포팅하는 단계;를 포함하는 것을 특징으로 하는 데이터 저장 방법.
  64. 제63항에 있어서,
    (d) 상기 오리지널 데이터를 랜더마이징하기 전에 상기 오리지널 데이터에 에러 보정 인코딩을 적용하는 단계; 및
    (e) 상기 검색된 데이터를 엑스포팅하기 전에 상기 검색된 데이터에 에러 보정 디코딩을 적용하는 단계;를 더 포함하는 것을 특징으로 하는 데이터 저장 방법.
  65. 제63항에 있어서,
    (d) 상기 랜더마이징된 데이터를 상기 비휘발성 메모리에 저장하기 전에 상기 랜더마이징된 데이터에 에러 보정 인코딩을 적용하는 단계; 및
    (e) 상기 검색된 랜더마이징된 데이터를 디랜더마이징하기 전에 상기 검색된 랜더마이징된 데이터에 에러 보정 디코딩을 적용하는 단계;를 더 포함하는 것을 특징으로 하는 데이터 저장 방법.
  66. 제63항에 있어서, 상기 랜더마이징하는 단계는 상기 오리지널 데이터, 모듈로 2를 고정된 랜덤 비트 시퀀스와 합산하는 단계를 포함함으로써 실행되고, 상기 디랜더마이징하는 단계는 상기 검색된 랜더마이징된 데이터, 모듈로 2를 상기 고정된 랜덤 비트 시퀀스와 합산하는 단계를 포함함으로써 실행되는 것을 특징으로 하는 데이터 저장 방법.
  67. 제63항에 있어서, 상기 랜더마이징하는 단계는 상기 오리지널 데이터, 모듈로 2를 유사랜덤 비트 시퀀스와 합산하는 단계를 포함함으로써 실행되고, 상기 디랜더마이징하는 단계는 상기 검색된 랜더마이징된 데이터, 모듈로 2를 상기 유사랜덤 비트 시퀀스와 합산하는 단계를 포함함으로써 실행되는 것을 특징으로 하는 데이터 저장 방법.
  68. 제67항에 있어서, 상기 유사랜덤 비트 시퀀스는 고정된 것을 특징으로 하는 데이터 저장 방법.
  69. 제67항에 있어서, 상기 유사랜덤 비트 시퀀스를 생성하는 단계를 더 포함하는 것을 특징으로 하는 데이터 저장 방법.
  70. 제69항에 있어서, 상기 생성하는 단계는 선형 피드백 시프트 레지스터를 사용하여 실행되는 것을 특징으로 하는 데이터 저장 방법.
  71. 제70항에 있어서, 상기 선형 피드백 시프트 레지스터의 시드는 고정된 것을 특징으로 하는 데이터 저장 방법.
  72. 제70항에 있어서,
    (e) 상기 비휘발성 메모리를 유닛으로 분할하는 단계를 더 포함하고,
    상기 유닛의 각각은 각 유닛 넘버를 가지고 있고, 상기 선형 피드백 시프트 레지스터의 시드는 상기 랜더마이징된 데이터가 저장되는 상기 유닛의 상기 각 유닛 넘버의 함수인 것을 특징으로 하는 데이터 저장 방법.
  73. 제72항에 있어서, 상기 비휘발성 메모리는 플래시 메모리이고 상기 유닛은 상기 플래시 메모리의 블록인 것을 특징으로 하는 데이터 저장 방법.
  74. 제72항에 있어서, 상기 메모리는 플래시 메모리이고 상기 유닛은 상기 플래시 메모리의 페이지인 것을 특징으로 하는 데이터 저장 방법.
  75. 제63항에 있어서, 상기 랜더마이징하는 단계는 상기 오리지널 데이터를 스크램블링하는 단계를 포함함으로써 실행되고, 상기 디랜더마이징하는 단계는 상기 검색된 랜더마이징된 데이터를 디스크램블링하는 단계를 포함함으로써 실행되는 것을 특징으로 하는 데이터 저장 방법.
  76. 제75항에 있어서, 상기 스크램블링하는 단계 및 상기 디스크램블링하는 단계는 공통 시드를 공유하는 각 선형 피드백 시프트 레지스터를 사용하여 실행되는 것을 특징으로 하는 데이터 저장 방법.
  77. 제76항에 있어서, 상기 시드는 고정된 것을 특징으로 하는 데이터 저장 방법.
  78. 제76항에 있어서,
    (d) 상기 비휘발성 메모리를 유닛으로 분할하는 단계를 더 포함하고,
    상기 유닛의 각각은 각 유닛 넘버를 가지고 있고, 상기 선형 피드백 시프트 레지스터의 시드는 상기 랜더마이징된 데이터가 저장되는 상기 유닛의 상기 각 유 닛 넘버의 함수인 것을 특징으로 하는 데이터 저장 방법.
  79. 제78항에 있어서, 상기 메모리는 플래시 메모리이고 상기 유닛은 상기 플래시 메모리의 블록인 것을 특징으로 하는 데이터 저장 방법.
  80. 제78항에 있어서, 상기 메모리는 플래시 메모리이고 상기 유닛은 상기 플래시 메모리의 페이지인 것을 특징으로 하는 데이터 저장 방법.
  81. 데이터 저장 방법으로서,
    (a) 메모리 셀을 상기 메모리 셀의 상응하는 상태의 세트로 프로그래밍함으로써 오리지널 데이터를 저장하기에 충분한 수의 메모리 셀을 제공하는 단계;
    (b) 상기 오리지널 데이터를 상기 상응하는 상태의 세트에 대하여 랜더마이징된 상기 메모리 셀의 모두의 상태의 세트로 맵핑하는 단계;
    (c) 상기 메모리 셀을 상기 랜더마이징된 세트의 상태로 프로그래밍하는 단계; 및
    (d) 상기 오리지널 데이터에 대한 요청에 응답하여,
    (i) 검색된 랜더마이징된 데이터를 제공하도록 상기 메모리 셀을 판독하고,
    (ii) 상기 오리지널 데이터와 실질상 동일한 검색된 데이터를 제공하도록 상기 검색된 랜더마이징된 데이터를 디랜더마이징하고, 그리고
    (iii) 상기 검색된 데이터를 상기 요청이 수신된 엔티티에 상기 엔티티를 인증하지 않고 엑스포팅하는 단계;를 포함하는 것을 특징으로 하는 데이터 저장 방법.
KR1020097009421A 2006-12-24 2007-12-06 에러 억제를 위해 랜더마이징하는 플래시 메모리 디바이스, 시스템 및 방법 KR101449673B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US87182006P 2006-12-24 2006-12-24
US60/871,820 2006-12-24
US11/808,905 US8370561B2 (en) 2006-12-24 2007-06-13 Randomizing for suppressing errors in a flash memory
US11/808,905 2007-06-13
US11/808,906 US8127200B2 (en) 2006-12-24 2007-06-13 Flash memory device and system with randomizing for suppressing errors
US11/808,906 2007-06-13
PCT/IL2007/001514 WO2008078314A1 (en) 2006-12-24 2007-12-06 Flash memory device, system and method with randomizing for suppressing error

Publications (2)

Publication Number Publication Date
KR20090108586A true KR20090108586A (ko) 2009-10-15
KR101449673B1 KR101449673B1 (ko) 2014-10-13

Family

ID=39268833

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097009421A KR101449673B1 (ko) 2006-12-24 2007-12-06 에러 억제를 위해 랜더마이징하는 플래시 메모리 디바이스, 시스템 및 방법

Country Status (2)

Country Link
KR (1) KR101449673B1 (ko)
WO (1) WO2008078314A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140031556A (ko) * 2012-09-04 2014-03-13 삼성전자주식회사 플래시 메모리를 포함하는 플래시 메모리 시스템 및 그것의 비정상 워드 라인 검출 방법
KR20170128686A (ko) * 2016-05-12 2017-11-23 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법
KR20190070247A (ko) * 2017-12-12 2019-06-20 웨스턴 디지털 테크놀로지스, 인코포레이티드 시드 생성

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589700B2 (en) * 2009-03-04 2013-11-19 Apple Inc. Data whitening for writing and reading data to and from a non-volatile memory
US9134918B2 (en) 2009-12-31 2015-09-15 Sandisk Technologies Inc. Physical compression of data with flat or systematic pattern
US8737133B2 (en) 2011-10-18 2014-05-27 Seagate Technology Llc Shifting cell voltage based on grouping of solid-state, non-volatile memory cells
US8760932B2 (en) 2011-10-18 2014-06-24 Seagate Technology Llc Determination of memory read reference and programming voltages
US8693257B2 (en) 2011-10-18 2014-04-08 Seagate Technology Llc Determining optimal read reference and programming voltages for non-volatile memory using mutual information
US8711619B2 (en) 2011-10-18 2014-04-29 Seagate Technology Llc Categorizing bit errors of solid-state, non-volatile memory
US9135109B2 (en) 2013-03-11 2015-09-15 Seagate Technology Llc Determination of optimum threshold voltage to read data values in memory cells
US9691492B1 (en) * 2016-09-29 2017-06-27 Intel Corporation Determination of demarcation voltage for managing drift in non-volatile memory devices

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4993028A (en) 1988-09-07 1991-02-12 Thinking Machines Corporation Error detection and correction coding
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US6279133B1 (en) * 1997-12-31 2001-08-21 Kawasaki Steel Corporation Method and apparatus for significantly improving the reliability of multilevel memory architecture
EP1130600A1 (en) * 2000-03-01 2001-09-05 Hewlett-Packard Company, A Delaware Corporation Data balancing scheme in solid state storage devices
EP1684308A1 (en) 2005-01-19 2006-07-26 Saifun Semiconductors Ltd. Methods for preventing fixed pattern programming

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140031556A (ko) * 2012-09-04 2014-03-13 삼성전자주식회사 플래시 메모리를 포함하는 플래시 메모리 시스템 및 그것의 비정상 워드 라인 검출 방법
US10528420B2 (en) 2012-09-04 2020-01-07 Samsung Electronics Co., Ltd. Flash memory system having abnormal wordline detector and abnormal wordline detection method
KR20170128686A (ko) * 2016-05-12 2017-11-23 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 읽기 방법 및 카피백 방법
KR20190070247A (ko) * 2017-12-12 2019-06-20 웨스턴 디지털 테크놀로지스, 인코포레이티드 시드 생성

Also Published As

Publication number Publication date
KR101449673B1 (ko) 2014-10-13
WO2008078314B1 (en) 2008-08-14
WO2008078314A1 (en) 2008-07-03

Similar Documents

Publication Publication Date Title
US8370561B2 (en) Randomizing for suppressing errors in a flash memory
US8127200B2 (en) Flash memory device and system with randomizing for suppressing errors
KR101449673B1 (ko) 에러 억제를 위해 랜더마이징하는 플래시 메모리 디바이스, 시스템 및 방법
USRE45697E1 (en) System, method and memory device providing data scrambling compatible with on-chip copy operation
US7984360B2 (en) Avoiding errors in a flash memory by using substitution transformations
US8154918B2 (en) Method for page- and block based scrambling in non-volatile memory
US8526605B2 (en) Data encryption to provide data security and memory cell bit wear leveling
KR101563647B1 (ko) 메모리 시스템 및 그것의 데이터 처리 방법
US8429330B2 (en) Method for scrambling data in which scrambling data and scrambled data are stored in corresponding non-volatile memory locations
US8984373B2 (en) Method for accessing flash memory and associated flash memory controller
US10417122B2 (en) Data randomization using memory block access counts
TW201405359A (zh) 隨機數產生方法、加密金鑰產生方法、記憶體、記憶體系統以及加密金鑰系統
US20140032935A1 (en) Memory system and encryption method in memory system
WO2012158341A1 (en) Non-volatile memory and method with improved data scrambling
US10043573B2 (en) Apparatus and method for endurance friendly programming using lower voltage thresholds
US8867283B2 (en) Semiconductor memory device, operating method thereof, and data storage apparatus including the same
US10083742B2 (en) Method and apparatus for programming non-volatile memory using a multi-cell storage cell group to provide error location information for retention errors
US11899958B2 (en) Method for discarding personal information in NAND flash memory

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee