KR20110128852A - 데이터의 인코딩에 의한 플래시 내구성 강화 장치 및 방법 - Google Patents

데이터의 인코딩에 의한 플래시 내구성 강화 장치 및 방법 Download PDF

Info

Publication number
KR20110128852A
KR20110128852A KR1020117021008A KR20117021008A KR20110128852A KR 20110128852 A KR20110128852 A KR 20110128852A KR 1020117021008 A KR1020117021008 A KR 1020117021008A KR 20117021008 A KR20117021008 A KR 20117021008A KR 20110128852 A KR20110128852 A KR 20110128852A
Authority
KR
South Korea
Prior art keywords
bits
memory cells
mapping
cell
memory
Prior art date
Application number
KR1020117021008A
Other languages
English (en)
Inventor
에란 샤론
시몬 릿신
이단 알로드
Original Assignee
라모트 앳 텔-아비브 유니버시티 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 라모트 앳 텔-아비브 유니버시티 리미티드 filed Critical 라모트 앳 텔-아비브 유니버시티 리미티드
Publication of KR20110128852A publication Critical patent/KR20110128852A/ko

Links

Images

Classifications

    • 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
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • 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/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5647Multilevel memory with bit inversion arrangement
    • 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)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

입력 비트는 셀 상태로의 비트 패턴의 맵핑에 대해 하방 점근성 바이어스를 갖는 셰이핑 인코딩을 사용하여 보다 큰 수의 변형된 비트로 입력 비트를 맵핑하고 이러한 셀 상태로의 비트 패턴의 맵핑에 따라 셀의 일부를 프로그래밍함으로써 메모리 셀에 저장된다. 프로그래밍된 셀은 임의의 다른 비트를 저장하도록 프로그래밍되기 전에 소거된다. 본 발명은 내구성을 증가시키기 위해 메모리 용량을 희생한다.

Description

데이터의 인코딩에 의한 플래시 내구성 강화 장치 및 방법{APPARATUS AND METHOD FOR ENHANCING FLASH ENDURANCE BY ENCODING DATA}
본 발명은 플래시 메모리 디바이스와 같은 메모리 디바이스에 데이터를 저장하는 것에 관한 것이다.
도 1a는 플래시 메모리 저장 디바이스(260; 종래 기술)의 블록도이다. 플래시 메모리 저장 디바이스는 플래시 메모리(270) 및 이러한 플래시 메모리(270)에 데이터를 판독하고 데이터를 기록하도록 동작하는 플래시 컨트롤러(280)를 포함하고 있다. 용어 "프로그램", "프로그래밍", "프로그래밍된", 및 "프로그래밍가능한"은 플래시 메모리내의 저장을 나타내기 위해 각각 용어 "기록", "기록하기", "기록된", 및 "기록가능한"와 상호교환가능하도록 여기에서 사용되었다.
플래시 메모리 저장 디바이스의 하나의 예는 "주변 플래시 저장 디바이스"이다. 주변 플래시 저장 디바이스는 USB 플래시 드라이브(UFD); PC 카드; 및 디지털 카메라, 뮤직 플레이어, 휴대용 및 팜톱 컴퓨터 및 휴대폰에 사용되는 저용량의 저장 카드의 형태로, 컴퓨팅 분야에서 잘 알려져 있다.
도 1b는 디바이스측 인터페이스(250)를 통해 호스트 디바이스(310; 예를 들어, 랩톱 또는 데스크톱 또는 휴대용 컴퓨터, 디지털 카메라, 휴대폰, 뮤직 플레이어, 및 비디오 게임 콘솔)와 데이터를 교환하도록 구성되거나 "결합된" 주변 플래시 메모리 저장 디바이스(260*)(별표는 플래시 메모리 저장 디바이스가 주변 플래시 저장 디바이스인 것을 나타낸다)의 블록도이다. 주변 플래시 메모리 저장 디바이스(260*) 및 호스트 디바이스(310)는 호스트측 인터페이스(350) 및 디바이스측 인터페이스(250)(예를 들어, 각각 USB 또는 SD 인터페이스)를 사용하여 통신 링크(300)를 통해 서로 통신한다.
예를 들어, 플래시 메모리 저장 디바이스(260*)는 데이터 판독 및 데이터 기록 서비스를 호스트 디바이스(310)에 제공한다. 호스트 디바이스(310)로부터 플래시 메모리 저장 디바이스(260*)에 의해 수신된 데이터는 플래시 컨트롤러(280)에 의해 플래시 메모리(270)에 기록된다. 또한, 플래시 메모리 저장 디바이스에 의해 수신된 "데이터 판독" 요청에 응답하여 플래시 컨트롤러(280)는 플래시 메모리(270)로부터 데이터를 판독한다.
에러는 "판독 시간" 또는 임의의 추후 시간에 판독된 데이터에서 보정될 수 있다. 에러 보정은 적어도 부분적으로 플래시 컨트롤러(280)에서, 적어도 부분적으로 호스트 디바이스(310)에 의해(예를 들어, 호스트측 프로세서(320)에 의해 RAM(330)내 실행가능한 코드(340)의 실행에 의해 또는 임의의 방식으로), 그리고 임의의 다른 위치 및 임의의 다른 방식으로 실행될 수 있다.
당업자는 "주변 플래시 저장 디바이스"가 단지 플래시 메모리 저장 디바이스의 클래스만이 아니라는 것을 이해할 것이다. 예를 들어, 특정 모바일 폰, 데스트톱 또는 랩톱 컴퓨터, PDA 디바이스 또는 다른 전자 디바이스가 또한 플래시 메모리 및 플래시 컨트롤러를 포함할 수 있고, 반드시 호스트 디바이스와 결합하고 및/또는 호스트 디바이스에 대한 데이터 판독 서비스 및/또는 데이터 기록 서비스를 제공하도록 구성되지 않을 수도 있다.
당업자는 도 1a 및 도 1b에 기술된 플래시 메모리 디바이스가 주변 저장 메모리 디바이스의 단지 하나의 클래스일 뿐이고, 다른 메모리 디바이스가 자기 메모리(예를 들어, 자기저항 램(MRAM) 또는 하드디스크 플래터)와 같은 다른 타입의 비휘발성 메모리를 포함할 수 있다는 것을 이해할 것이다.
플래시 메모리 내구성
플래시 메모리는 기록/소거(W/E) 사이클에 제한된 내구성을 갖고 있다. 플래시에서 행해지는 W/E 사이클의 수가 증가함에 따라, 고장 가능성은 증가한다. 이러한 고정은 보통 W/E 사이클 동안 산화 절연층을 통과하고 전자 트랩 사이트를 생성하는 전자로 인한 산화 절연층의 마모와 관련되어 있다. 고장은 다수의 방법으로 나타날 수 있고, 이러한 고장은 블록을 소거하거나 프로그래밍하는 고장을 갖거나 셀이 사이클을 보인 후에 셀의 감소된 데이터 리텐션 능력을 갖는다.
새로운 플래시 제조 공정에서, 셀 디멘션 축소와 같이, W/E 사이클링 내구성은 감소하고, 플래시 메모리의 상업적 생존력에 영향을 줄 수 있는 제한적인 요인이 될 것으로 예상된다.
SLC MLC 플래시
2개의 일반적인 형태의 비휘발성 메모리가 존재한다. 하나는 보통 이진 "1" 또는 "0"으로 표시되는, 메모리 셀 당 하나의 단일 이진 비트로서 데이터가 표시되는 (플래시, 단일 레렐 플래시 셀 또는 "SLC"의 경우의) "이진" 메모리이다.
또 다른 형태는 하나의 셀이 하나 보다 많은 이진 비트를 저장하도록 사용되는 멀티 레벨 셀(MLC) 메모리이다.
이진 메모리 셀은 상이한 전하 분포(또는 상이한 임계 전압 분포)가 2개의 상이한 저장된 비트 구성에 상응하는 부동 게이트 트랜지스터의 부동 게이트에 전하를 저장한다. 도 1c는 이러한 이진 비휘발성 ('NVM') 셀의 2개의 상태에 대한 전하 분포를 설명하는 전하 도면이다. 이러한 2개의 구성 또는 상태는 "1"(소거된 상태) 및 "0"(프로그래밍된 상태)으로서 설명된다. 이것은 단지 통상적인 것을 말하고 대신 "1"이 프로그래밍된 비트를 나타낼 수도 있고 "0"이 소거된 비트를 나타낼 수도 있다는 것에 주목해야 한다. 이에 따라, 1=소거된 상태, 0=프로그래밍된 상태 관례가 여기에서 사용될 것이다. 이러한 2개의 상태는 SLC 셀의 2개의 가능한 "셀 상태"이다.
마찬가지로, MLC 메모리 셀은 상이한 전하 분포가 상이한 저장된 비트 구성에 상응하는 부동 게이트 트랜지스터의 부동 게이트에 전하를 저장한다. 예를 들어, 2-레벨 MLC 플래시 메모리에서 2개의 비트는 셀에 저장되고 이러한 2개의 비트는 상위 페이지 비트(upage) 및 하위 페이지 비트(lpage)로 불린다. 4개의 전하 분포(또는 4개의 임계 전압 분포)는 상하위 페이지 비트의 4개의 가능한 상태를 나타낸다. 도 1d는 2-비트 MLC NVM 셀의 다양한 상태에 대한 전하 분포를 설명하는 전하 도면이다. 도 1d에서, 4개의 전하 분포가 "11", "10", "00", "01"로서 도시되어 있다. "11" 상태는 "소거된" 상태로 불린다. 남아 있는 상태는 "프로그래밍된" 상태를 말한다. 모든 4개의 상태는 집합적으로 2-비트 MLC 셀의 "셀 상태"이다. (이진 메모리에 대해 상술된 바와 같이, 이것은 단지 관례에 불과하다. 필요하다면, 비트-상태 맵핑은 상호교환될 수 있다.)
초기에 셀은 소거된 상태에 있다. 비트가 프로그래밍될 때, 전하 분포는 도 1c 및 도 1d의 좌측의 소거된 상태로부터 우측의 프로그래밍된 상태로 이동한다. 이것은 보통 채널 전자를 절연체를 거쳐 부동 게이트로 강제 이동시키기 위해 열전자 주입 메커니즘 또는 터널링 메커니즘을 사용하여 달성된다. 셀 소거는 보통 부동 게이트로부터 전자를 제거하기 위해 터널링 메커니즘을 통해 달성된다. 소거된 상태로부터 프로그래밍된 상태로 그리고 다시 소거된 상태로의 셀의 천이는 "기록/소거 사이클"로 불린다. 각 기록/소거 사이클에 의해 셀에 "마모"가 유발되고 일단 셀에 충분한 마모가 누적되면, 고장 모드를 겪을 수 있다. 셀은 이미 소거된 상태에서, 반복적으로 소거될 때 거의 또는 아무런 마모도 겪지 않는다.
또 다른 관점에서, 도 1c 및 도 1d는 비트 패턴과 셀 상태의 2개의 상이한 맵핑을 설명한다. 도 1c에서의 이러한 맵핑은
Figure pct00001
도 1d의 맵핑은
Figure pct00002
플래시 메모리에서, 상위 셀 상태는 상위 임계 전압에 상응한다.
SLC 및/또는 MLC 메모리 셀의 수명 및 신뢰도를 더 향상시키는 것이 바람직하다.
정의
아래에 도입된 셰이핑 인코딩은 입력 (정보) 비트 스트링을 변형된 비트 스트링에 맵핑한다. 이러한 맵핑은 일 대 일이고, 모든 비트 스트링은 유일한 변형된 비트 스트링으로 맵핑된다. 입력 스트링 당 K 비트가 존재한다면, 2 K 상이한 가능한 입력 스트링과 2 K 상이한 변형된 스트링이 존재한다. 충분히 많은 수의 플래시 셀이 비트 패턴과 셀 상태의 관련 맵핑에 따라, 모든 2 K 입력 스트링(2 K K SLC 셀, 2 K-1 K 2-비트 MLC 셀등)을 저장하기 위해 프로그래밍된다면, 모든 셀 상태는 동일하게 채워진다.
예를 들어, K=4라면 아래와 같이 24=16개의 가능한 스트링이 존재한다:
0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111,
1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111
따라서, 전체 24X4=64 비트에 대해서는, 64개의 SLC 셀이 모든 16개의 가능한 스트링을 저장하기 위해 필요하다. 셀의 절반은 도 1c 의 셀 상태 1에 있고, 셀의 절반은 도 1c의 셀 상태 2에 있어서, 양측 셀 상태 모두 동일하게 채워진다.
대안으로, 32(23x4) 4-레벨 MLC 셀이 모든 16개의 가능한 스트링을 저장하는데 필요하다. 셀의 1/4은 도 1d의 셀 상태 1에 있고, 셀의 1/4은 도 1d의 셀 상태 2에 있고, 셀의 1/4은 도 1d의 셀 상태 3에 있고 셀의 1/4은 셀 1d의 셀 상태 4에 있어서, 모든 4개의 셀 상태는 동일하게 채워진다.
인코딩이 비트 패턴-셀 상태의 맵핑에 대해 하방 바이어스를 갖는다는 것은 충분한 수의 셀이 (하술되는 셰이핑 인코딩의 경우에서와 같이, 2 K 가능한 상이한 입력 스트링 모두를 저장하는데 필요한 것 보다 많은 셀을 사용하여) 모든 2K 변형된 스트링의 전체 세트를 동시에 저장하도록 프로그래밍되어 있는 경우에 최상위 셀 상태가 적어도 하나의 다른 셀 상태보다 적게 채워지는 것을 의미한다. 인코딩이 "점근성" 하방 바이어스를 갖는다는 것은 인코딩이 큰 K의 리미트에서 하방 바이어스를 갖는다는 것을 의미한다. 인코딩이 셀 상태의 하위 절반 쪽으로 바이어스를 갖는다는 것은 충분히 큰 수의 셀이 모든 2 K 변형된 스트링을 저장하도록 프로그래밍되어 있는 경우에 셀 상태의 상위 절반이 셀 상태의 하위 절반 보다 적게 채워지는 것을 의미한다. SLC 셀의 경우에, "하방 바이어스" 및 "셀 상태의 하위 절반측 바이어스"는 동일하다는 것에 주목해야 한다. 2 비트 MLC 셀의 경우에, "셀 상태의 하위 절반측 바이어스"는 충분히 큰 수의 셀이 모든 2 K 변형된 스트링을 저장하도록 프로그래밍되어 있는 경우에, 셀 상태 3 및 4는 셀 상태 1 및 2 보다 적게 채워지는 것을 의미한다.
도 1c 및 도 1d 의 비트 패턴-셀 상태의 맵핑은 짝수의 셀 상태를 갖는다. 홀수의 셀 상태를 갖는 비트 패턴-셀 상태의 맵핑 역시 알려져 있다. 셀 상태의 수가 홀수이면, 중간 상태는 셀 상태의 카운트로부터 제외된다. 예를 들어, 3개의 셀 상태가 있다면, 인코딩이 셀 상태의 하위 절반측 바이어스를 갖는다는 것은 충분히 큰 수의 셀이 모든 2 K 변형된 스트링을 저장하도록 프로그래밍되어 있는 경우에 최상위 셀 상태가 최하위 셀 상태보다 작게 채워지는 것을 의미한다.
입력 데이터를 랜덤화하는 변형은, 아래에 간략하게 언급된 스크램블링 변형과 같이, 단지 모든 가능한 2 K 입력 스트링의 콜렉션만을 상이한 순서로 동일한 콜렉션으로 변형시켜서 하방으로 바이어스되지 않는다. 적어도 SLC 플래시 셀의 경우에, 1보다 많은 0을 갖는 입력 스트링의 비트를 플립핑함으로써, 하술된 셰이핑 인코딩의 목적을 달성하는 것이 제안되어 있다. 이러한 변형은 K의 작은 값에 대해 하방으로 바이어싱되지만, 점근식으로 언바이어싱된다.
하술된 셰이핑 인코딩 변형은 모두 점근식으로 하방으로 바이어싱된다.
여기에 제공된 하나의 실시예는 (a) 메모리 셀의 셀 상태로의 비트 패턴의 제1 맵핑을 제공하는 단계; (b) 상기 셀 상태로의 비트 패턴의 제1 맵핑에 대해 하방 점근성 바이어스를 갖는 제1 셰이핑 인코딩을 사용하여, 상기 제1 복수의 입력 비트보다 수가 큰 제1 복수의 변형된 비트에 상기 제1 복수의 입력 비트를 맵핑하는 단계; (c) 상기 셀 상태로의 비트 패턴의 제1 맵핑에 따라 제1 복수의 변형된 비트를 저장하기 위해 메모리 셀의 제1 서브-복수의 적어도 일부를 프로그래밍하는 단계; 및 (d) 임의의 다른 비트를 저장하기 위해 상기 제1 서브-복수의 메모리 셀의 적어도 일부를 프로그래밍하기 전에 상기 제1 서브-복수의 메모리 셀의 적어도 일부를 소거하는 단계;를 포함하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법이다.
여기에 제공된 또 다른 실시예는 (a) 상기 메모리 셀의 셀 상태로의 비트 패턴의 맵핑을 제공하고; (b) 복수의 비트를, (i) 비트 패턴의 맵핑에 대해 하방 점근성 바이어스를 갖고 있는 셰이핑 인코딩을 사용하여, 복수의 입력 비트보다 수가 더 큰 복수의 변형된 비트로 상기 복수의 입력 비트를 맵핑함으로써, 그리고 (ii) 셀 상태로의 비트 패턴의 맵핑에 따라 상기 복수의 변형된 비트를 저장하도록 상기 메모리 셀의 적어도 일부를 프로그래밍함으로써, 메모리 셀에 저장하는 단계; 및 (c) 임의의 다른 비트를 저장하기 위해 상기 복수의 메모리 셀의 적어도 일부를 프로그래밍하기 전에 상기 복수의 메모리 셀의 적어도 일부를 소거하는 단계;를 하도록 동작하는 복수의 메모리 셀을 포함하는 메모리에 대한 메모리 컨트롤러이다.
여기에 제공된 또 다른 실시예는 (a) 복수의 메모리 셀을 포함하는 제1 메모리; 및 (b) 상기 제1 메모리의 호스트를 포함하고, 상기 제1 메모리의 호스트는, (i) 제2 메모리로서, (A) 상기 메모리 셀의 셀 상태로의 비트 패턴의 맵핑을 제공하는 단계, (B) 상기 셀 상태로의 비트 패턴의 맵핑에 대해 하방 점금성 바이어스를 갖고 있는 셰이핑 인코딩을 사용하여, 상기 복수의 입력 비트보다 수가 더 큰 복수의 변형된 비트로 상기 복수의 입력 비트를 맵핑하는 단계, (C) 상기 셀 상태로의 비트 패턴의 맵핑에 따라 상기 복수의 변형된 비트를 저장하기 위해 상기 메모리 셀의 적어도 일부를 프로그래밍하는 단계, 및 (D) 임의의 다른 비트를 저장하기 위해 상기 메모리 셀의 적어도 일부를 프로그래밍하기 전에 상기 복수의 메모리 셀의 적어도 일부를 소거하는 단계에 의해 상기 제1 메모리를 관리하기 위한 코드를 저장하기 위한 상기 제2 메모리, 그리고 (ii) 상기 코드를 실행하기 위한 프로세서를 포함하는 복수의 입력 비트 저장 시스템이다.
여기에 제공된 또 다른 실시예는 (a) 셀 상태로의 비트 패턴의 맵핑에 대해 하방 점근성 바이어스를 갖고 있는 셰이핑 인코딩을 사용하여, 상기 복수의 입력 비트보다 수가 더 큰 복수의 변형된 비트로 상기 복수의 입력 비트를 맵핑하기 위한 프로그램 코드; (b) 상기 셀 상태로의 비트 패턴의 맵핑에 따라 상기 복수의 변형된 비트를 저장하기 위해 상기 메모리 셀의 적어도 일부를 프로그래밍하기 위한 프로그램 코드; 및 (c) 임의의 다른 비트를 저장하기 위해 상기 메모리 셀의 적어도 일부를 프로그래밍하기 전에 상기 복수의 메모리 셀의 적어도 일부를 소거하기 위한 프로그램 코드;를 포함하는, 복수의 메모리 셀을 포함하는 메모리에 복수의 입력 비트를 저장하기 위한 컴퓨터 판독가능 코드를 내장한 컴퓨터 판독가능 저장 매체이다.
제1 복수의 입력 비트를 복수의 메모리 셀에 저장하는 기본적인 방법에 따라, 메모리 셀의 셀 상태로의 비트 패턴의 제1 맵핑이 제공된다. 제1 셰이핑 인코딩이 사용되어 제1 복수의 입력 비트보다 더 큰 제1 복수의 변형된 비트로 제1 복수의 입력 비트를 맵핑한다. 제1 셰이핑 인코딩은 셀 상태로의 비트 패턴의 제1 맵핑에 대해 하방 점근성 바이어스를 갖고 있다. 제1 서브-복수의 메모리 셀의 적어도 일부는 셀 상태로의 비트 패턴의 제1 맵핑에 따라 제1 복수의 변형된 비트를 저장하도록 프로그래밍된다. 제1 서브-복수의 메모리 셀의 적어도 일부는 제1 서브-복수의 메모리 셀의 적어도 일부가 임의의 다른 비트를 저장하도록 다시 프로그래밍되기 전에 소거된다.
적어도 일부 입력 비트 복수가 더 큰 변형된 비트 복수에 맵핑되도록 제1 셰이핑 인코딩이 되어 있는 한, 모든 가능한 입력 비트 복수가 제1 셰이핑 인코딩에 의해 더 큰 변형된 비트 복수로 반드시 맵핑될 필요가 없다는 것에 주목해야 한다.
제1 셰이핑 인코딩은 셀 상태의 하반부쪽으로 하방 점근선 바이어스를 갖고 있는 것이 바람직하다.
제1 셰이핑 인코딩은 비선형, 예를 들어, 가변 길이 인코딩 또는 리버스 계산 소스 인코딩인 것이 바람직하다. 대안으로, 제1 셰이핑 인코딩은 트렐리스 셰이핑 인코딩이다. 제1 셰이핑 인코딩이 가변 길이 인코딩이라면 제1 셰이핑 인코딩은 리버스 허프만 인코딩과 같은 프리픽스 인코딩인 것이 가장 바람직하다.
제1 복수의 입력 비트가 제1 복수의 변형된 비트에 맵핑되기 전에, 제1 복수의 변형된 비트를 저장하기에 필요한 제1 서브-복수의 메모리 셀의 최대수가 산정되고, 이러한 제1 서브-복수의 메모리 셀의 수가 제1 복수의 변형된 비트를 저장하기 위해 보존되는 것이 바람직하다. 메모리 셀의 산정된 최대 수가 너무 낮은 것으로 밝혀지면, 제2 복수의 변형된 비트보다는, 제1 복수의 입력 자체중 어느 하나가 제1 서브-복수의 메모리 셀의 적어도 일부에 저장되거나, 제1 복수의 입력 비트가 복수의 스크래블링된 비트를 제공하기 위해 스크래블링된다. 후자의 경우에, 이러한 스크래블링에 이어 복수의 변형된 스크램블링된 비트로 스크램블링된 비트를 맵핑하기 위해 제1 셰이핑 인코딩을 사용하는 단계가 이어진다.
제1 셰이핑 인코딩은 제1 서브-복수의 메모리 셀의 요구되는 셰이핑 방식에 따라 선택되는 것이 바람직하다. 상이한 셰이핑 방식이 동일한 하방 바이어스를 가질 수 있음에 주목해야 한다.
메모리 셀의 셀 상태로의 비트 패턴의 제2 맵핑이 제공되는 것이 바람직하다. 제1 셰이핑 인코딩과 상이한 제2 셰이핑 인코딩이 사용되어 제2 복수의 입력 비트를 제2 복수의 변형된 비트에 맵핑한다. 제2 셰이핑 인코딩이 아이덴티티 맵핑일 수도 있다는 것에 주목해야 한다. 이러한 경우에 제2 복수의 변형된 비트는 제2 복수의 입력 비트와 동일하다. 제2 서브-복수의 메모리 셀의 적어도 일부는 셀 상태로의 비트 패턴의 제2 맵핑에 따라 제2 복수의 변형된 비트를 저장하도록 프로그래밍되어 있다. 셀 상태로의 비트 패턴의 제1 및 제2 맵핑은 동일하거나 상이할 수 있다. 예를 들어, 셀 상태로의 비트 패턴의 제1 맵핑이 나중에 장기 저장을 위해 복사될 입력 데이터를 캐싱하기 위해 사용된다면, 2개의 맵핑은 보통 상이하다.
보통, 제2 셰이핑 인코딩은 셀 상태로의 비트 패턴의 제2 맵핑의 셀 상태에 대해 하방 점근성 바이어스를 갖고 있다.
제1 및 제2 셰이핑 인코딩이 제1 및 제2 서브-복수의 메모리 셀의 각 특성에 따라 선택되는 것이 가장 바람직하다. 예시된 각 특성은 제1 및 제2 서브-복수의 메모리 셀에 의해 견뎌지는 프로그래밍 사이클의 각각의 수를 포함하고 있다.
이러한 방법은 또한 제1 서브-복수의 메모리 셀의 적어도 일부를 판독하는 단계를 포함함으로써 복구된 제1 복수의 변형된 비트를 취득하는 것이 바람직하다. 이러한 복구된 제1 복수의 변형된 비트는 제1 셰이핑 인코딩과 관련하여 디코딩되고, 이로 인해, 복구된 제1 복수의 입력 비트가 취득된다. 그다음, 제2 서브-복수의 메모리 셀의 적어도 일부가 복구된 제1 복수의 입력 비트를 저장하도록 프로그래밍된다.
이러한 방법은 또한 제1 복수의 변형된 비트의 시스테메틱 에러 보정 인코딩을 포함함으로써 하나 이상의 리던던시 비트를 제공하는 것이 보다 더 바람직하다. 제2 서브-복수의 메모리 셀의 적어도 일부가 리던던시 비트를 저장하도록 프로그래밍되어 있다. 그다음, 제1 서브-복수의 메모리 셀의 적어도 일부가 판독됨으로써, 복구된 제1 복수의 변형된 비트가 취득되고, 제2 서브-복수의 메모리 셀의 적어도 일부가 판독됨으로써, 하나 이상의 복구된 리던던시 비트가 취득되는 것이 가장 바람직하다. 이렇게 복구된 제1 복수의 변형된 비트는 복구된 리던던시 비트에 따라 시스테메틱 에러 보정 디코딩된다. 시스테메틱 에러 보정 디코딩은 제1 세이핑 인코딩에 적어도 부분적으로 기초하고 있다.
대안으로, 제1 셰이핑 인코딩은 논-시스테메틱 에러 보정 인코딩을 포함한다. 그다음, 제1 서브-복수의 메모리 셀의 적어도 일부가 판독됨으로써, 복구된 제1 복수의 변형된 비트가 취득되는 것이 가장 바람직하다. 이러한 복구된 제1 복수의 변형된 비트는 제1 셰이핑 인코딩에 관련하여 논-시스테메틱 에러 보정 디코딩된다.
변형된 비트의 수는 입력 비트의 수의 최대 약 1.29배인 것이 바람직하다.
하방 점근성 바이어스가는 75%를 초과하는 것이 바람직하다.
첨부된 청구범위는 복수의 메모리 셀을 포함하는 메모리를 제어하기 위해 기본적인 방법을 사용하는 메모리 컨트롤러, 그리고 이러한 컨트롤러와 메모리를 포함하는 메모리 디바이스를 포함한다.
첨부된 청구범위는 또한 복수의 비트를 저장하기 위한 시스템을 포함한다. 이러한 시스템은 복수의 메모리 셀을 포함하는 제1 메모리와 이러한 제1 메모리의 호스트를 포함한다. 이러한 호스트는 이러한 기본적인 방법을 구현하기 위한 코드를 저장하기 위한 제2 메모리 및 이러한 코드를 실행하기 위한 프로세서를 포함한다. 첨부된 청구범위는 또한 이러한 기본적인 발명을 구현하기 위한 컴퓨터 판독가능 코드를 내장에 컴퓨터 판독가능 저장 매체를 포함한다.
아래의 첨부된 도면을 통해, 단지 예시로서, 다양한 실시예가 설명되어 있다.
도 1a는 플래시 메모리 저장 디바이스의 블록도이다.
도 1b는 호스트에 결합된 플래시 메모리 저장 디바이스의 블록도이다.
도 1c는 SLC 플래시 셀에 대한 전하 분포도이다.
도 1d는 2-비트 MLC 플래시 셀에 대한 차지 분포도이다.
도 2는 셰이핑 인코딩 루틴의 하이 레벨 순서도이다.
도 3은 셰이핑 인코딩의 다수의 대안의 클래스를 도시하는 도면이다.
도 4a는 코드 레이트에 대한 달성가능한 제로 프랙션의 그래프이다.
도 4b는 코드 레이트에 대한 달성가능한 내구성 이득의 그래프이다.
도 5는 입력 워드의 프리픽스(prefix) 인코딩을 설명하는 도면이다.
도 6은 인코딩된 시퀀스에 0.2145의 제로 프랙션을 포함하도록 설계된 3-비트 코딩된 시퀀스에 기초한 프리픽스 코드 구성을 도시하는 도면이다.
도 7은 도 2의 미들 블록의 확장예이다.
도 8은 데이터를 인코딩하고 저장하기 위한 시행착오 기술의 순서도이다.
도 9는 요구되는 "셰이핑" 레벨에 대한 인코딩을 위한 프로시져의 순서도이다.
도 10 및 도 12c는 2개 타입의 플래시 셀을 갖는 플래시 메모리를 도시하는 도면이다.
도 11은 특정 주소에 데이터를 인코딩하고 저장하는 순서도이다.
도 12a는 2개 타입의 셀의 특성에 기초하여 도 10의 A 타입 플래시 셀에 그 다음, 도 10 또는 도 12c의 B 타입 셀에 데이터를 인코딩하고 저장하는 순서도이다.
조 12b는 2개 타입의 셀의 프로그래밍 레벨의 수에 기초하여 도 10의 A 타입의 셀에 그 다음, 도 10 또는 도 12c에 데이터를 인코딩하고 저장하는 순서도이다.
도 13a 및 도 13b는 A 타입의 셀이 캐시에 사용되고 B 타입이 메인 스토리지에 사용되는 도 10 또는 도 12c의 플래시 메모리의 변형을 설명하는 도면.
도 14a 및 도 14b는 셰이핑 리던던시 목적을 위해, ECC 리던던시 비트를 저장하는데 필요하지 않은 플래시 메모리 셀의 사용을 설명하는 도면이다.
도 15는 셰이핑 인코딩에 의한 캐싱의 순서도이다.
도 16는 셰이핑 인코딩을 사용하는 도 1a 또는 도 1b의 플래시 컨트롤러의 예의 하이 레벨 기능 블록도이다.
도 17은 셰이핑 인코딩을 사용하는 데이터 저장 시스템의 하이 레벨 블록도이다.
본 발명에 따른 플래시 메모리 디바이스와 같은 메모리 디바이스의 원리 및 동작은 도면 및 관련 설명을 통해 보다 더 잘 이해될 수 있다.
아래의 청구범위는 도면을 참조하여 실시예의 상세한 설명을 통해 보다 더 잘 이해될 것이다. 설명, 실시예 및 도면은 청구범위를 제한하려고는 것은 아니다. 여기에 개시된 방법 및 장치의 모든 특징이 모든 각 구현에 반드시 필요한 것은 아니라는 것을 이해해야 한다. 또한, 프로세스 또는 방법이 도시되거나 설명된 본원을 통해 방법의 단계는 하나의 단계가 먼저 실행되는 또 다른 것에 종속되는 문맥으로부터 분명하지 않으면, 임의의 순서 또는 동시에 실행될 수 있음을 이해해야 한다.
일부 실시예는 감소된 셀 마모 및 이에 따른 증가된 W/E 사이클에 대한 내구성를 얻을 수 있는 방식으로 플래시 셀이 프로그래밍되는 디바이스 및 장치에 관한 것이다(즉, 보다 많은 W/E 사이클이 결함이 발견되기 전에 실행될 수 있다). 이러한 목적으로, 하나 이상의 코딩 방식을 채용하는 장치 및 방법이 제공된다. 이러한 코딩 방식은 셀 마모가 셀의 산화 절연층을 통과하여 부동 게이트내로 들어가는 전하의 양에 비례한다는 사실, 즉, 셀이 하이 Vth 로 프로그래밍될 때, 셀이 로우 Vth 로 프로그래밍될 때보다 더 마모된다는 사실에 기초하고 있다.
따라서, 일부 실시예에서, 저장되기로 의도된 정보 비트의 시퀀스는 먼저, 2개의 Vth 레벨, 즉, 로우("1") 및 하이("0")가 각 셀에 나타나는, 예를 들어, 싱글 비트 셀(single-bit-per-cell) 플래시의 경우에, 보다 적은 셀 마모를 유도하는 것으로 예상되는, 프로그래밍 레벨의 시퀀스(즉, 셀 상태)로 맵핑되고, 그 다음, 정보 비트의 시퀀스는 "0"의 예상되는 프랙션이 최소가 되는 비트의 코딩된 시퀀스로 맵핑된다.
이러한 정보 비트 시퀀스가 저장되기 전에 맵핑될 때 "대가"가 있을 수 있다. 즉, (예를 들어, "0"보다 많은 "1"을 프로그래밍하는 싱글 비트 셀 플래시에서) 프로그래밍 레벨에 대한 불균일한 분포를 유도하는 것은 주어진 수의 셀에 보다 적은 정보를 저장할 수 있도록 하는 일부 "오버헤드"를 할당할 필요가 있을 수 있다. 따라서, 일부 실시예에서, 플래시 "용량"은 내구성을 올리기 위해 "희생"된다. 또한, 여기에 기술된 다양한 기술 및 장치는 내구성에서의 주어진 증가를 위해 "최소 오버헤드"를 필요로 하는 (또는 반대로, "최대로 내구성을 증가시키는") "효율적인 방식"을 채용한다.
내구성 강화를 위해 여기에 기술된 방법 및 장치는 또한 플래시 셀의 프로그래밍 동안 발생하고 저장된 데이터를 손상시키는 특정 데이터 종속 노이즈를 완화시키기 위해 사용될 수 있다. 이러한 노이즈의 예는 프로그래밍 또는 그 이웃 셀의 프로그래밍 동안 플래시 셀에 대한 다양한 간섭 효과이고, 이것은 셀의 비의도적이거나 부정확한 프로그래밍을 유발한다. 이러한 노이즈는 셀 및 그 이웃에 프로그래밍되는 데이터 패턴에 종속한다. 예를 들어, 소거 상태에 있도록 의도된 셀은 그 이웃하는 셀이 하이 상태로 프로그래밍되는 경우에 비의도적인 프로그래밍을 경험할 수 있다. 이러한 비의도적인 프로그래밍(보통 "프로그맹 디스터브"로 불린다)의 확률은 이웃하는 셀이 하이 상태로 프로그래밍되는 경우에 증가하다. 보다 많은 이웃 셀들이 하이 상태로 프로그래밍되고 이러한 이웃하는 셀의 상태가 보다 높을 수록 프로그램 디스터브의 확률은 보다 높아진다. 그래서, 셀을 하이 상태로 프로그래밍하는 확률을 감소시켜 다양한 간섭 효과의 확률을 감소시키는 것이 바람직할 수 있다. 이것은 저장된 데이터의 신뢰도를 증가시키고 에러 보정 코드 필요조건을 완화시킬 수 있다. 에러 보정 코드 오버헤드에서의 감소가 프로그래밍된 상태에 대해 불균일한 분포를 유도하기 위해 여기에 기재된 기술에 의해 요구되는 오버헤드보다 높다면, 전체 플래시 대가는 보다 적은 오버헤드가 필요하기 때문에 감소된다. 따라서, 여기에 기술된 방법 및 장치는 프로그래밍 동안 보다 적은 셀 마모를 유도함으로써 내구성을 강화시키기 위해 그리고 다양한 데이터 종속 노이즈를 완화시키기 위해 적용될 수 있다.
도 2는 향상된 유효 내구성을 제공하기 위해 및/또는 데이터 종속 노이즈를 완화시키기 위해 플래시 메모리 용량을 희생하는 코딩 기술을 사용하여 플래시 메모리 디바이스의 내구성을 증가시키기 위한 루틴예의 순서도이다. 특히, 길이 K의 이진 넘버/워드를 길이 N(N>K)의 보다 긴 이진 넘버/워드에 맵핑하는 코딩 기술이 사용될 수 있다.
단계 S211에서, 데이터는 예를 들어, 디바이스측 인터페이스(250)를 통해 플래시 디바이스(260)에 수신된다. 평균적으로(즉, 메가바이트 이상의 데이터가 수신될 때), 플래시 디바이스에 수신된 데이터에 의해, 플래시 디바이스의 플래시 셀에 프로그래밍될 때, 플래시 셀은 프로그래밍 레벨에서 실질상 "균일한" 분포를 갖게 된다. 즉, SLC 셀에 대해, 대략 50%의 셀이 "0" 상태로 프로그래밍되고 대략 50%의 셀이 "1" 상태로 프로그래밍된다. 2개의 레벨을 갖는 MLC 셀에 대해서는, 대략 25%의 셀이 "00" 상태로 프로그래밍되고, 대략 25%의 셀이 "10" 상태로 프로그래밍되고, 대략 25%의 셀이 "01" 상태로 프로그래밍되고, 대략 25%의 셀이 "11" 상태로 프로그래밍된다. 나머지도 마찬가지 방식으로 프로그래밍된다.
단계 S215에서, "입력" 데이터는 플래시 메모리 셀에 프로그래밍될 때, 입력 데이터가 플래시에 직접 인코딩된 경우 보다 프로그래밍 상태 사이에 많은 '불균일한 분포'를 유도하는 "인코딩된" 데이터를 산출하도록 인코딩된다. 따라서, 단계 S215에서, 입력 데이터는 불균일한 분포를 도입하도록 그리고 프로그래밍 상태 사이의 분포의 ("셰이핑-유도" 리던던시의 대가로) 엔트로피를 감소시키도록 "셰이핑"된다.
2개 타입의 "데이터 리던던시", 즉, 에러 보정에 대한 비트의 추가로 인한 리던던시("ECC 데이터 리던던시") 및 프로그래밍 상태의 분포의 셰이핑과 엔트로피의 감소의 대가로 인한 리던던시("데이터 셰이핑 리던던시")가 여기에 설명되어 있다.
"데이터 셰이핑 리던던시"에 의해 비휘발성 메모리(예를 들어, 플래시) 용량은 내구성을 증가시키고 및/또는 데이터 종속 노이즈를 완화시키기 위해 희생된다.
단계 S219에서, 인코딩된 데이터는 플래시에 저장된다.
보통, 도 2에 도시된 바와 같이, 정보 비트의 시퀀스는 플래시 메모리에 프로그래밍된 인코딩된 시퀀스로서 정보 비트 시퀀스를 인코딩함으로써 셀 상태의 시퀀스에 간접적으로 맵핑된다. 첨부된 청구범위에서, 정보 비트 시퀀스는 "복수의 정보 비트"로 불리고 인코딩된 시퀀스는 "복수의 변형된 비트"로 불린다. 대안으로, 정보 비트의 시퀀스는 프로그래밍 레벨의 시퀀스로 직접 맵핑될 수 있다. 아래의 도 6은 3-비트 (8개 레벨) MLC 플래시 셀에 대한, 이러한 직접 맵핑의 하나를 설명하고 있다.
도 3에 도시된 바와 같이, 데이터를 인코딩하기 위한 다양한 방식이 단계 S215에서 사용될 수 있다. 일부 방식은 다른 것보다 보다 효율적일 수 있다(즉, 효율을 위해, 희생된 플래시 용량의 요구된 '오버헤드'의 측면에서 보다 효율적일 수 있다).
일부 실시예("방식 A")에서, 현재 개시된 가변 길이 및/또는 프리픽스 코딩 방식 및/또는 "리버스 허프만" 방식이 프로그래밍 상태 사이의 불균일한 분포를 유도하는데 사용될 수 있다(아래의 "리버스 허프만" 방식의 섹션 참조).
대안으로 또는 추가적으로, 트렐리스 셰이핑 기술("셰이핑 B")은 프로그래밍된 플래시 셀에서의 상태 사이의 불균일한 분포를 유도함으로써 플래시 효율을 증가시키는 방식으로 입력 데이터를 인코딩하도록 작용한다.
대안으로 또는 추가적으로, "역계산 소스 코딩 방식("방식 C") 기술"이 프로그래밍된 플래시 셀에서의 상태 사이의 불균일한 분포를 유도함으로써 플래시 효율을 증가시키는 방식으로 입력 데이터를 인코딩하도록 채용될 수 있다.
대안으로 또는 추가적으로, 플래시 셀 프로그래밍에 대한 프로그램 디스터브를 감소시키도록 사용된 하나 이상의 방식은 프로그래밍된 플래시 셀에서의 상태 사이의 불균일한 분포를 유도하도록 사용될 수 있다. 예를 들어, 여기에 언급되어 전체가 통합된, "Avoiding errors in a flash memory by using substitution transformations" 표제의 US 2008/0158948 및/또는 "Methods of avoiding errors in flash memory" 표제의 US 2008/0031042를 참조하라.
데이터 인코딩 방법 설명
"리버스 허프만 인코딩("방식 A")에 기초한 입력 데이터를 인코딩하기 위한 비교적 "효율적인" 방식이 여기에 제시되어 있다. 즉, 평균적으로, 희생된 데이터 리던던시/플래시 용량이 "최소" 대가로 내구성에서의 "양호한" 증가를 제공하는 방식이다.
이러한 방식은 싱글 비트 셀 플래시 메모리 셀(단일 레벨 셀 또는 SLC 셀)의 특정 경우에 대해 설명될 것이다. 하지만, 이러한 방식 및 관련 방식은 멀티 레벨 플래시 셀(MLC)에 적용될 수 있다.
싱글 비트 셀 플래시 메모리에서 내구성 강화는 하이 상태("0")로 프로그래밍되는 셀의 수를 최소화하고 소거된 상태로 남겨진, 즉, 로우 상태("1")로 프로그래밍된 셀의 수를 최대화함으로써 달성될 수 있다. 그래서, "0"의 예측된 프랙션이 최소화되는 코딩된 시퀀스로 정보의 시퀀스를 맵핑하고자 한다.
일부 실시에에서, 여기에 개시된 방식은 (i) "0" (또는 "1")의 요구되는 예측된 프랙션을 유도하기 위한 요구되는 오버헤드의 관점에서 비교적 "양호한" 효율 및/또는 (ii) 그 인코딩 및 디코딩 프로시져의 구현 복잡성중 하나 이상을 제공한다.
하나 이상의 제안된 방식을 설명하기 전에, 효율의 이론적 한계에 대해 설명한다.
셀의 셀 상태에 대한 확률 분포 P=[p 1 , p 2 , ... p m ]를 유도하기를 원한다고 가정하자. m=2 BPC 는 셀에 프로그래밍된 상태(또는 전압 레벨)의 수이고 BPC는 셀 당 비트의 수이다. 그다음, 이러한 확률 분포 P를 유도하기 위해 다음의 등식을 충족하는 적어도 리던던시 r를 할당할 필요가 있을 것이다(또는 코드 레이트 R = 1-r를 사용할 필요가 있을 것이다):
Figure pct00003
여기에서, H는 엔트로피 함수
Figure pct00004
이다.
효율의 이론적 한계에 대한 설명
임의의 특정 이론에 얽매이지 않고, "효율/리던던시" 교환의 이론적 한계에 대해 설명한다. K 정보 비트의 시퀀스를 길이 N의 코드워드로 맵핑하고, N>K라고 가정하자. 그다음, 이러한 방식의 오버헤드는 M=N-K이다. 이러한 방식에 의해 달성될 수 있는 "0"의 최하위 예측되는 프랙션 p는 무엇인가? 우리가 할 수 있는 최선은 최소수의 "0"를 갖고 있는 2K 길이 N 이진 시퀀스로 구성된 코드북을 생성하는 것임이 분명하다. 그래서, 우리는 2K 코드워드를 누적할 때까지, 단일 모든 "1"의 시퀀스를 취한 후에 단일 "0"을 갖는 모든
Figure pct00005
길이 N 시퀀스를 취하고, 그 후에 2개의 "0"을 갖는 모든
Figure pct00006
길이 N 시퀀스등을 취한다. 그래서, 이러한 코드의 코드워드내의 "0"의 예측되는 프랙션은 다음과 같이 그 오버헤드와 관련되어 있다.
단순히 하기 위해, 코드북이
Figure pct00007
"0"을 가진 모든 이진 시퀀스, 즉,
Figure pct00008
로부터 구성되는 방식으로 KN이 결정된다고 가정하자. 그다음, "0"의 예측되는 프랙션이
Figure pct00009
에 의해 주어진다고 가정하자.
(코드 레이트로 불리는) 주어진 비 R=K/N에 대해, "0"의 p의 프랙션이 코드 길이 N이 무한대로 감에 따라 감소될 것이라는 것을 볼 수 있다. 예를 들어, K=2 비트의 시퀀스를 길이 N=3 비트의 코드워드로 맵핑하는 단순한 방식(즉, 코드 레이트는 R = 2/3이다)을 생각해보자. 이것은 매우 짧은 코드이기 때문에 이러한 맵핑은 다음의 단순한 표를 사용하여 구현될 수 있다.
[표 1a]
Figure pct00010
이러한 경우에,
Figure pct00011
이다.
그러나, 보다 긴 코드를 사용한다면, 보다 양호하게 될 수 있고 보다 낮은 p를 달성할 수 있어서 동일한 코드 레이트 R에 대해, 보다 적은 마모의 셀과 증가된 내구성을 얻을 수 있다.
표 1a의 코드는 원래 기록 전용 메모리의 관점에서 도입되었고, 그래서 기록 전용 메모리가 2번 기록될 수 있다. 다음의 표는 제2 기록에 사용되는 코드를 보여주고 있다.
[표 1b]
Figure pct00012
물론, 제2 기록은 제1 기록 보다 큰 값의 p를 갖고 있다. 제2 기록은 p=30/48=5/8을 갖고 있다. 이러한 2번 기록 방식 역시 셀을 소거하기 전에 플래시 메모리의 동일한 셀에 2번 기록하도록 사용될 수 있다.
표 1a 및 표 1b의 코드의 관련 오버헤드(N/K)는 50%(3개의 SLC 셀이 2개의 정보 비트를 저장하기 위해 사용된다). "2번 기록" 방식의 이론적 최소 관련 오버헤드는 대략 29.38%임을 알 수 있다.
SLC 셀의 경우에, 제로 프랙션 p를 갖는 변형은 100(1-p)%의 하방 바이어스를 갖고 있다. 예를 들어, 표 1a의 변형은 셀의 1/4를 이들의 상위 셀 상태에 두고 셀의 3/4를 이들의 하위 셀 상태에 두어서 75%의 하방 바이어스를 갖는다.
코드 길이 N이 무한대로 감에 따라 다음의 관계를 얻는 것을 알 수 있다.
Figure pct00013
,
여기에서,
Figure pct00014
이다.
그래서, 레이트 R=K/N 및 큰 N의 코딩 방식에 의해 달성될 수 있는 "0"의 최소 예측되는 프랙션 p는
Figure pct00015
에 의해 주어진다.
비교를 위해, R = 2/3의 경우에, 우리가 긴 코드를 사용한다면, 짧은 코드(N=3)로 얻었던 p=0.25에 비해 p=0.174를 얻을 수 있다. 도 4a는 긴 코드에 기초한 최적 방식에 대해, 코드 레이트 R의 함수로서 달성가능한 p를 보여주고 있다.
"0"의 p의 프랙션의 함수로서 우리가 얻을 수 있는 내구성 강화 이득은 무엇인가? 정확한 이득은 특정 플래시 디바이스 및 프로세스에 종속된다. 그러나, 이득이 1/p에 의해 대략 선형성을 갖는 단순한 모델이라고 가정하면(즉, 프로그래밍된 셀의 프랙션이 2의 팩터 만큼 떨어진다면, 마모도 그렇게 된다), p=1/2인 종래의 방식에 비교하여 다음의 이득을 얻게 된다.
Figure pct00016
코드 레이트 R=2/3의 경우에 단순한 모델하에 내구성 이득을 계산한다면, 다음의 결과를 얻게 된다. 즉, 짧은 코드(N=3)에 기초한 단순한 방식에 대해,
Figure pct00017
의 이득을 얻고, 긴 코드에 기초한 최적 방식에 대해,
Figure pct00018
의 이득을 얻을 수 있다.
단순한 모델하의 달성가능한 내구성 강화 이득이 도 4b에 도시되어 있다.
상기 분석은 긴 코드를 사용하는 것이 유리하다는 것을 보여준다. 불행하게도, 이러한 경우에, 짧은 코드 예에서 행해진 방법과 유사한 단순한 룩업 테이블을 사용하는 것이, 메모리 크기 및 인코딩과 디코딩의 복잡도 측면에서 금지되어 있다. 그래서, 보다 정교한 방식이 필요하다. 다음으로, 우리는 긴 코드를 구현하기 위한 다수의 방식을 제안한다.
방식 C: " 리버스 계산 소스 코딩 기술" 채용
일부 실시예에서, "0"이 확률 p로 나타나는 이진 시퀀스를 출력하는 이진 소스가 "0"이 확률 1/2로 나타나는 이진 시퀀스로 압축되는, 소스 코딩을 위한 통신 분야에 알려진 하나 이상의 기술을 채택하는 것이 가능하다. 이러한 옵션(옵션 C)에 따라, 이러한 방법을 사용할 수 있지만 반대 방법으로 사용할 수 있다. 우선("0"에 대해 확률 1/2를 가진) 정보의 압축된 소스로 시작한 후 이것을 "0"에 대해 1/2 보다 작은 확률 p를 가진 이진 시퀀스로 압축해제한다. 다양한 방법이 소스 코딩을 위해 알려져 있다. 일부 문헌은 다음과 같고, 이들은 전체가 여기에 언급되어 통합되어 있다.
Figure pct00019
방식 B: 트렐리스 셰이핑 기술
또 다른 옵션은 콘스텔레이션 셰이핑을 위한 통신 분야에서 알려진 방법을 채택하는 것이다. 이러한 방법은 이진 정보 시퀀스를 신호 컨스텔레이션으로 맵핑하여 불균일한 확률이 신호 세트에 대해 유도된다. 이러한 방법은 당면 문제에 대해 채택될 수 있다. 예를 들어, 단일 비트 셀 플래시 메모리의 경우에, 각 신호 포인트에 이진 시퀀스를 할당함으로써, "0" 및 "1"에 대한 상이한 확률 p를 가진 이진 시퀀스로 신호 포인트를 맵핑 백한다. 일부 문헌은 다음과 같고, 이들은 전체가 여기에 언급되어 통합되어 있다.
Figure pct00020
Figure pct00021
방식 A: 리버스 허프만 기술(제1 설명)
다음으로, 플래시 메모리 내구성을 강화시키기 위한 인코딩 방법의 바람직한 실시예를 상세하게 기술한다. 이러한 실시예는 가변 길이 코딩 방식에 기초하고 있다. 이러한 접근법은 가변 길이 코드가 실제적인 문제를 제기하는 통신 애플리케이션에서 일반적이지 않다. 그러나, 플래시내의 내구성 강화의 문제를 위해, 가변 코드 길이를 다루기 위한 확률 솔루션을 제안한다. 이러한 솔루션은 아래에 설명되는 바와 같이, 주어진 오버헤드에 대한 달성가능한 이득과 구현 복잡도 측면에서 매우 효율적이다. 이러한 실시예에 따라, 내구성 강화 코드는 가변 길이 정보 시퀀스를 고정된 길이 코딩된 시퀀스로 맵핑하는 가변 길이 코드를 사용하여 구현된다.
일부 실시예에서, 가변 길이 코드는 프리픽스 코드이어서, 정보 비트의 어떤 시퀀스도 정보 비트의 또 다른 시퀀스의 프리픽스가 아니다. 이것은 이진 트리 서치를 사용하여 이루어질 수 있는 인코딩 및 디코딩 프로시져를 단순화한다.
허프만 프리픽스 코드 [D.H. Huffman, "A method for the construction of minimum redundancy codes," in Proceedings of IRE, vol. 40, pp. 1098-1101, 1952]를 사용함으로써, 아래에 도시된 바와 같이, 오버헤드와 내구성 이득 사이의 최적의 트레이드오프를 제공할 수 있다. 이러한 방식의 하나의 예는 사전정의된 소스 시퀀스 SS 가 타겟 시퀀스 TS에 맵핑되는 사이즈 s (비제한적인 예에서, s=8)의 코드 맵 CM RH (RH는 '리버스 허프만'의 약자이다)이다. 즉, 각 소스 시퀀스 SSi는 각 타겟 시퀀스 TSi로 맵핑된다. 즉, CM={SS 1 -> TS 1, SS 2 -> TS 2...SS s ->TS s }은 아래와 같다.
[표 2]
Figure pct00022
아래에, 이러한 "리버스 허프만" 코드 맵은 "허프만 기술"에 따라 유도될 것이고 특정 예에 연결되어 있다.
비제한적인 코드맵 CM RH 에 대해, 하나의 비트(즉, SS1에 대해)와 5개의 비트(예를 들어, SS5에 대해) 사이의 범위의 길이를 갖는 정보 비트의 가변 길이 "소스 시퀀스"는 코딩된 비트의 길이 3-비트 "타겟" 시퀀스에 맵핑된다.
도 5에서, 길이 K의 입력 워드 IWCM RH 를 사용하여 길이 N의 인코딩된 워드 EW로 인코딩된다. CM RH 가 가변 길이 맵핑이기 때문에, 인코딩된 워드 EW는 가변 길이를 갖고 있다. E[N]이 인코딩된 워드 EW의 예측된 길이라고 하자. 예측된 코드 실이 E[N]가 증가함에 따라, 실제 코드 길이는 그 예측된 값 주변에 크게 집중된다는 것을 알 수 있다. 그래서, 예측된 코드 길이 E[N]에 따라 요구되는 것 보다 경미하게 보다 많은 저장 공간을 할당한다면(예를 들어, E[N] + ε 플래시 셀, 여기에서, ε<<E[n]), 높은 확률을 갖고, 우리는 인코딩된 워드 EW를 저장하기 위한 충분한 공간을 가질 것이다.
도 5의 예에서, 입력 워드 IW는 "소스 시퀀스"로 분할되거나 파싱된다. 즉, 소스 시퀀스{SS 1 , SS 2 ,...SS 8 }는 입력 워드 IW는 소스 시퀀스 (M은 양의 정수이다) concat(SS I1 , SS I2 ,... SS IN )의 콘카테네이션과 동일하다는 특성을 갖고 있다. 여기에서, I1 , I2 ... 모두는 CM RH (이러한 경우에 8)의 사이즈 s 보다 작거나 동일한 양의 정수이다.
따라서, (i) 복수의 입력 시퀀스 (SS I1 , SS I2 ,... SS IN )로 입력 워드를 "분할" 또는 "파싱"함으로써, (ii) 표 2에 정의된 s 맵핑(이러한 경우에 8 맵핑)에 따라 각 타겟 시퀀스 TS에 각 입력 시퀀스 SS를 개별적으로 맵핑함으로써, (iii) 모든 타겟 시퀀스의 콘카테네이션으로부터 인코딩된 워드 EW를 형성함으로써(즉, TW = concat(TS I1 , TS I2 ,... TS IN )), 이러한 특성의 장점을 취하는 것이 가능하다.
따라서, 도 5의 예에서, 입력 워드 IWconcat(SS 3 , SS 5 , SS 1 ... SS 2 )이고, I 1 =3, I 2 =5, I 3 =1, I 4 =2,...이고, 인코딩된 워드 EWconcat(TS 3 , TS 5 , TS 1 ... TS 2 )이다.
인코딩된 워드 EW (E[N]+ε)의 길이 N은 입력 워드 EW의 내용에 종속된다는 것에 주목해야 한다. 즉, 인코딩된 워드 EW의 길이 K의 상이한 입력 워드는 상이한 길이를 가질 수 있다. 길이 K의 세트 2 K 입력 워드에 대한 평균에서, 인코딩된 워드 EWE[N]의 길이를 가질 것으로 예상된다. 또한, 예측된 코드 길이 E[N]가 증가함에 따라, 실제 코드 길이 N은 그 예측된 값 주변에 크게 집중되게 된다. 그래서, 인코딩된 워드 EW에 대해 E[N]+ε의 저장 공간을 할당함으로써(ε<<N는 임의의 작은 추가 저장 공간이다), EW의 실제 길이 N이 할당된 저장 공간 E[N]+ε를 초과하지 않을 것을 높은 확률로 보장할 수 있다.
도 8에서, 인코딩된 워드의 길이가 이전에 알려지지 않은 인코딩 데이터에 관련된 일부 루틴이 설명되어 있다.
방식 A: 리버스 허프만 기술(제2 설명)
본 섹션에, 허프만 프리픽스 코드에 기초한, 가변 길이 "프리픽스 리버스 허프만" 내구성 강화 코드 맵 CM RH 구성법의 예가 설명된다. 입력 워드 IW의 길이는 K이고 인코딩된 워드 EW의 길이는 N이다.
이러한 방식에 대해 대략 33%의 오버헤드를 할당할 수 있다고 가정하자. 적, N/K=1/33이고 코드 레이트는 R=K/N=3/4이다. 상술된 이론적 분석으로부터, 이러한 레이트에 대해 달성될 수 있는 최소 p는 단순 선형 모델에 따라 1/2/0.2145=2.33의 내구성 이득에 상응하는
Figure pct00023
라는 것을 알고 있다. 그래서, 우리는 적합한 프리픽스 코드를 구성함으로써 이러한 리미트에 접근 시도할 수 있다. 인코딩된 시퀀스내의 "0"의 프랙션은 0.2145일 것이다. 코딩된 시퀀스에서 길이 r=3의 시퀀스를 생각해보자. "0"에 대한 확률 p가 진정 0.2145라면, 각 길이 r=3 코딩된 시퀀스의 확률은 도 6과 같이 주어진다.
길이 3 시퀀스의 확률에 상응하는 알파벳상의 확률 분포 함수를 갖는 크기 8의 알파벳에 대한 랜덤 소스로부터 심볼로서 이러한 길이-3 시퀀스를 생각해볼 수 있다. 이러한 소스에 대해, 도 6에 도시된 바와같이 최적으로 압축할 허프만 프리픽스 코드를 구성할 수 있다. 이러한 프로시져에 의해 다음과 같은 프리픽스 코드를 얻을 수 있다.
[표 3]
Figure pct00024
이러한 표는 이전의 섹션의 CM RH 와 동일한 맵핑을 제공한다는 것에 주목해야 한다.
이러한 표는 또한 허프만 코드에 의해 유도되는, 각 인코딩된 시퀀스에 대한 확률을 포함하고 있다. 이러한 확률에 기초하여, E[N]=1.33*K인 예측된 코드 길이 및 p=0.2188인 코드에서의 "0"의 예측된 프랙션을 계산하는 것은 용이하다. 볼 수 있는 바와 같이, 구현을 위해 단순할 수 있는 이러한 단순한 구성은 이러한 코드 레이트에 대한 2.33의 이론적 이득 제한값과 비교하여 ~1/2/0/2188=2.2852의 최적에 가까운 이득을 제공한다.
방식 A: 리버스 허프만 기술(제3 설명)
CM RH 에 대한 추가 관찰
CM RH 는 "가변 길이 맵"이라는 것, 즉, 다음 조건중 하나 이상이 사실이라는 것에 주목해야 한다.
조건 1: 적어도 2개의 정수 i 1 i 2 가 존재하여서 size(TS i1 )=size(TS i2 )이고 size(SS i1 )≠size(SS i2 )이다[상기 예에서 샘플 CM RH 에 대해, i1=1 및 i2=2를가져서 size(TS1)=3이고 size(TS2)=3이지만 size(SS1)=1이고 size(SS2)=2이다]; 및/또는
조건 2: 적어도 2개의 정수 i 1 i 2 가 존재하여서 size(TS i1 )≠size(TS i2 )이고 size(SS i1 )=size(SS i2 )이다.
일부 실시예에서, 변형은 "가변 길이 맵"에 따라 행해진다.
CM RH 의 또 다른 핵심적인 특징은 CM RH 가 "프리픽스" 맵핑이라는 것이다. 즉, i≠j이고, ij가 SIZE(CM R )보다 작거나 동일한 양의 정수인 모든 i,j에 대해, SSi가 SSj의 프릭픽스가 아니고 및/또는 모든 i≠j에 대해 TSj의 프리픽스가 아니라고 기록한다.
우리는 또한 적어도 일부의 가능한 맵핑 SS i -> TS i 에 대해, size(TS i )<size(SS i ) 라는 것에 주목한다.
일부 실시예에서, "코드 맵" CM은 길이 K(예를 들어, K는 20 또는 50 또는 100 보다 크거나 1,000보다 크다)의 워드(즉, 이진 수의 워드)에 대한 "커버링 코드 맵"이어서, 2 K 가능한 이진 시퀀스의 모든 가능한 이진 시퀀스는 코드 맵의 소스 시퀀스 SS의 콘카테네이션 함수에 의해 구성될 수 있다.
일부 실시예에서, 코드 맵 CM은 "부분적으로 스패닝" 코드 맵 또는 "대부분 스패닝) 코드 맵이어서, 길이 K(예를 들어, K는 20 또는 50 또는 100보다 크거나 1,000보다 크다)의 워드(즉, 이진 시퀀스의 워드)에 대해 2K 가능한 이진 시퀀스의 가능한(즉, 명백한) 이진 시퀀스의 일부(적, 적어도 20% 또는 50% 또는 80% 또는 90%)는 코드 맵의 소스 시퀀스 SS의 컨케테네이션 함수에 의해 구성될 수 있다.
일부 실시예에서, IW로부터 EW로의 인코딩 방법(도 5 및 도 7 참조)은 적어도 20 또는 50 또는 100 또는 1,000의 길이에 대해 수천 또는 수만 또는 수십만 또는 수백만 또는 수천만의 명백한 입력 워드에 수행된다.
또한, CM RH 로부터, 맵핑 SS -> TS 의 일부는 길이(TS)>길이(SS)인 "확장 맵핑"이고(즉, 길이(SS)=1이고 길이(TS)=3인 SS1과 TS1 사이의 맵핑), 맵핑 SS->TS의 일부는 길이(TS)=길이(SS)인 "길이 보존" 맵핑이고, 맵핑 SS -> TS의 일부는 길이(TS)<길이(SS)인 "압축 맵핑"이라는 것이 명백하다.
이전의 섹션에서 볼 때(표 3의 '확률' 칼럼 참조), CM RH 의 특별한 경우에 대해, "확장 맵핑"의 주파수(즉, 수펀 또는 수백만 이상의 큰 수의 명백한 입력 워드에 대한 주파수)는 50%이고 (그리고 90%보다 작고, 75% 보다 작고 20%보다 크고 35%보다 크다), "길이 보전 맵핑"의 주파수는 1/8+1/8+1/8=37.5%이고 (66%보다 작고, 50%보다 작고 20%보다 크고 30%보다 크다), "길이 압축' 맵핑의 주파수는 4/32=12.5%이다(그리고 1%보다 크고, 2%보다 크고 3%보다 크고 5%보다 크다).
도 7은 입력 워드 IW를 인코딩된 워드 EW로 맵핑하기 위한 기술예의 순서도이다. 단계 S51에서, 코드 맵 CM이 정의되어 있고(이러한 코드 맵은 휘발성 및/또는 비휘발성 메모리의 임의의 조합에 저장될 수 있다, 위치예는 플래시 컨트롤러(280) 및 플래시 메모리(270)를 포함하지만 이에 제한되는 것은 아니다. 단계 S55에서, 길이 K를 갖고 있는 입력 워드 IW에 대해 코드 맵 CM에 따라 맵핑된다.
단계 S59에서, 인코딩된 워드는 입력 워드로부터 형성되고 타겟 시퀀스 TS의 콘카테네이션에 의해 정의된다.
도 7은 파싱 동작을 결정하는 단계(즉, 소스 시퀀스를 결정하는 단계 및/또는 소스 시퀀스 사이의 경계를 결정하는 단계) 및 (소스 시퀀스 SS와 타겟 시퀀스 TS 사이의) 맵핑 동작을 결정하는 단계를 포함한다는 것에 주목해야 한다. 절대적으로 필요한 것 이외의 파싱 및 맵핑 동작이 수행되는 방법의 순서에 아무런 제한이 없고 이러한 동작은 임의의 순서로 수행될 수 있다는 것에 주목해야 한다.
도 8의 설명
상술된 바와 같이, 가능한 입력 워드의 수가 2 K 이기 때문에 "충분히 큰" 입력 워드(즉, 적어도 20 또는 적어도 50 또는 적어도 100 또는 적어도 1,000의 크기의 입력 워드 IW)에 대한 코딩 맵을 유지하는 것은 실행될 수 없다.
상술된 바와 같이, 적어도 일부 i에 대해, i번째 소스 시퀀스 SS i 의 길이와 상응하는 타겟 시퀀스 TS i 의 길이 사이의 차이는 (i) 논-제로일 수 있고, (ii) i의 값에 종속될 수 있다. 따라서, 입력 워드 IW가 수신될 때, 인코딩된 워드 EW의 길이는 보통 미리 정확하게 알려져 있지 않고(정확한 지식은 금지된 크기를 가진 테이블을 유지하는 것을 필요로 한다), 단지 추정될 수 있다. 이것은 인코딩된 워드가 저장될 공간이 보통 미리 비축될 필요가 있기 때문에 문제가 될 수 있다. "너무 많은" 공간이 비축된 경우에(즉, 모든 실제적인 목적에 대해, 인코딩된 워드의 크기가 비축된 공간량을 초과하는 경우가 있다), 특정 양의 메모리는 평균 "낭비될 것이고" 그래서, 기술의 "효율"을 감소시킨다.
따라서, 일부 실시예에서, 도 2의 단계 S215에서 생성된 인코딩된 워드의 길이는 플래시 메모리에 저장되기 위해 비축된 공간량을 초과할 수 있다.
인코딩된 워드 EW의 예측된 길이를 E[N]로 하자. 평균 코드 길이가 증가함에 다라, 코드 길이는 그 예측된 값 주변에 크게 집중되게 되는 것을 볼 수 있다. 그래서, 예측된 코드 길이 E[N]에 따라 요구되는 것 보다 경미하게 보다 많은 저장 공간(즉, 플래시 셀)을 할당한다면, 높은 확률에 의해, 코드워드를 저장하기 위한 충분한 공간을 갖게 될 것이다. 특정 정보 시퀀스에 의해, 할당된 저장 공간 보다 긴 코드워드를 얻게 되는 경우에, 다음의 액션중 하나 이상(또는 또 다른 액션)을 취할 수 있다.
(현대 플래시 메모리에서와 같이) 정보가 인코딩 이전에 스크램블링된다고 가정하면, 상이한 시드로 이러한 정보를 리스크램블림한 후에 인코딩을 반복할 수 있다. 이러한 경우에, 스크램블링을 위해 사용되었던 시드에 추가 정보를 저장할 필요가 있다(예를 들어, 제1 시드 또는 제2 시드의 오직 2개의 시도만을 사용한 경우에 이러한 제1 시드 또는 제2 시드를 사용하였는지 여부를 나타내는 추가 비트를 저장한다).
2) 입력 워드(또는 일부 데리베이티브)를 집적 프로그래밍한다. 이것은 K<E[N]이기 때문에 항상 가능할 것이다. 이러한 옵션을 사용한다면, 정보가 직접 프로그래밍되었는지 또는 인코딩 후에 프로그래밍되었는지 여부를 나타내는 하나의 추가 비트를 저장할 필요가 있을 수 있는데, 이것은 판독 동안 정보를 복구할 수 있도록 필요하다.
도 8은 데이터를 인코딩하고 저장하기 위한 "시행착오" 기술의 순서도이다. 도 8의 예에서, 데이터를 인코딩하고 용량이 L 비트(L은 양의 정수)인 메모리의 에어리어에 데이터를 저장할 필요가 있다. 단계 S311에서, 입력 데이터의 K 비트는 예를 들어, "리버스 허프만 기술" 또는 임의의 다른 기술에 따른) "셰이핑" 리던던시를 증가시키는 대가로 프로그래밍 레벨에 대해 불균일한 분포를 유도하는 방식을 사용하여 인코딩된다. 하나의 예에서, 인코딩된 워드 EW는 비휘발성 메모리에 기록되기 전에 휘발성 메모리(예를 들어, 디바이스 컨트롤러의 휘발성 메모리)에 저장된다.
단계 S315에서, 인코딩된 워드 EW의 비트의 수가 L 비트를 초과하는지 여부가 결정된다. 인코딩된 워드의 수가 L을 초과하지 않는 경우에, 인코딩된 워드는 단계 S319에서 비휘발성 메모리, 예를 들어, 플래시 셀에 저장된다. 그렇지 않으면, 입력 데이터 자체 (또는 EW로부터 상이한 일부 데리베이티브)가 비휘발성 메모리에 저장되고 및/또는 입력 데이터가 스크램블링되고 새로운 인코딩이 시도되거나(즉, 단계 S311로 리턴한다) 이러한 데이터의 일부 다른 표현이 최종적으로 비휘발성 메모리에 저장된다.
도 9의 설명
일부 실시예에서, 반드시 필요한 것은 아니지만, 커맨드가 각 인터페이스(350, 250)를 통해 호스트 디바이스(310)로부터 플래시 디바이스(260)에 의해 수신된다. 이러한 커맨드는 플래시 메모리(270) 또는 그 일부에 대한 호스트에 의해 요구되는, 프로그래밍된 상태에 대해 유도될 확률 분포의 요구되는 효율적인 "셰이핑" 레벨의 표시를 포함한다. 효율적인 셰이핑 방식을 제공하기 위해, 여기에 개시된 하나 이상의 "데이터 셰이핑 방식"을 사용하여 플래시 메모리(270)의 특정 용량을 희생할 필요가 있다.
따라서, 단계 S371에서, 커맨드는 플래시 메모리의 적어도 일부에 대한 셰이핑 방식을 특정하는 호스트로부터 수신된다. 단계 S375에서, 데이터(즉, 그 표시는 플래시 메모리에 기록되도록 되어 있다)는 호스트로부터 수신된다. 단계 S379에서, 입력 데이터(즉, 수신된 데이터를 표현하는 데이터)는 수신된 효율적인 셰이핑 방식에 따라 선택된 인코딩 방식에 따라 인코딩된다. 따라서, 단계 S379에서, 프로그래밍 레벨에서의 불균일한 분포를 유도하기 위한 인코딩이 사용되고, 그 유도된 불균일한 분포의 정도는 요구되는 효율적인 셰이핑 방식에 따라 선택된다.
도 10-11의 설명
일부 실시예에서, 플래시 디바이스(260)(예를 들어, 플래시 컨트롤러(280))는 (i) 제1 셰이핑 폴리시가 위치 C1에 저장될 데이터에 대해 또는 타입 C1의 데이터에 대해 시행되도록; (ii) 제2 셰이핑 폴리시가 위치 C2에 저장될 데이터에 대해 또는 타입 C2의 데이터에 대해 시행되도록 구성되어 있다는 것에 주목해야 한다.
이러한 2개의 데이터 셰이핑 폴리시는 서로 상이하다. 하나의 예에서, C1(C2)에 저장되는 데이터만이 영역 C1 ( C1)에 기록되기 전에 불균일한 분포를 유도하도록 셰이핑되고, 영역 C2 ( C1 )에 저장되는 데이터는 저장 전에 셰이핑되지 않는다.
대안으로, C1C2에 저장되는 데이터는 모두 비휘발성 메모리에 저장되기 전에 셰이핑되지만, 셰이핑 정보는 각 영역에 대해 상이하다.
일부 실시예에서, 상이한 폴리시가 영역 C1C2가 상이한 하나 이상의 특성에 따라 시행된다. 예를 들어, 저장 레벨의 수는 상이할 수 있다.
또 다른 실시예에서, 각 영역에 저장되는 데이터의 데이터 셰이핑 양은 얼마나 많은 이전의 기록 사이클을 이러한 영역이 거치는지의 함수일 수 있다. 예를 들어, 영역이 보다 많은 기록 사이클을 거쳤다면, 고장 확률은 보다 높아지고, 비휘발성 메모리에 데이터를 기록하기 전에 (저 용량의 대가에도) 보다 큰 불균일한 내구성을 유도할 필요가 보다 더 크다. 따라서, 하나의 예에서, C1C2가 거친 이전의 기록 사이클의 수는 상이하다. 예를 들어, "보다 많은 익스트림 데이터 셰이핑 폴리시"가 보다 많은 기록 사이클을 거친 영역에 대해서만 시행될 수 있다.
또 다른 예에서, 어느 하나의 영역에 저장될 데이터의 데이터 셰이핑 양은 데이터의 중요도의 함수일 수 있다. 보다 중요한 데이터는 상대적으로 높은 내구성을 갖도록 셰이핑되고 그 결과 상대적으로 덜 컴팩트한 저장 용량을 갖도록 셰이핑된다. 보다 낮은 중요도의 데이터는 상대적으로 낮은 내구성을 갖도록 셰이핑되고 이에 따라 보다 컴팩트한 저장 용량을 갖도록 셰이핑된다.
도 10의 기술이 적용될 수 있는 또 다른 특정 예(도 11 참조)에서, 데이터 및 이러한 데이터에 대한 어드레싱 정보(즉, 플래시 메모리(270)내에 데이터가 저장되는 위치의 표시)가 단계 S561에서 호스트(310)로부터 비휘발성 메모리 디바이스(260)에 의해 수신된다. 단계 S569에서, (데이터의 표현이 저장되는 비휘발성 메모리(270)내의 물리적 또는 논리적 '타겟 로케이션'을 나타내는) 어드세리싱 데이터에 따라, 프로그래밍 레벨 사이의 불균일한 분포가 데이터에 유도되는 정도(즉, '셰이핑' 정도)가 결정된다.
단계 S573에서, 데이터가 단계 S569의 셰이핑의 결정된 정도에 따라 인코딩된다. 단계 S577에서, 셰이핑된, 인코딩된 데이터가 플래시(즉, 수신된 어드레싱 정보에 의해 표시된 위치)에 기록된다.
도 12a-12c의 설명
도 12a 내지 도 12c에 대해 설명한다. 단계 S211 및 S215는 도 3에서와 같다. 단계 S411에서, 인코딩된 데이터는 제1 특성을 갖는 플래시 셀(예를 들어, 셀과 연관된 펄스 특성을 프로그래밍하는, 다수의 레벨의 셀)에 저장된다. 단계 S415에서, 인코딩된 데이터(즉, 단계 S215에서 '셰이핑된' 데이터)는 (예를 들어, 휘발성에 메모리에) 재판독된다.
단계 S419에서, 데이터는 (예를 들어, 데이터를 디코딩함으로써) 단계 S215에서 생성된 분포보다 덜 불균일한 분포를 유도하도록 처리된다(예를 들어, 단계 S215에서 셰이핑된 오리지널 데이터를 취득하도록 디코딩되거나, 예를 들어, 리셰이핑된다).
단계 S423에서, 처리된(예를 들어, 디코딩되거나 리 셰이핑된) 데이터가 플래시 셀(C2)에 기록된다.
도 31a 내지 도 13b의 설명
일부 실시에에서, 데이터가 단계 S411에서 먼저 기록된 셀(즉, 에어리어 C1의 셀)은 캐시 저장 에어리어(272)의 일부이고, 데이터가 단계 S423에서 나중에 기록되는 셀(즉, 에어리어 C2의 셀)은 메인 저장 에이러이(274)의 일부이다.
하나의 예에서, 캐시 저장 에어리어(272)의 에어리어 C1의 셀은 p 레벨을 갖고 있고 메인 저장 에어리어(274)의 에어리어 C2의 셀은 q 레벨을 갖고 있다. 특정 예에서, p<q이다. 예를 들어, 보다 적은 레벨을 가진 셀로의 데이터 저장이 보다 많은 레벨을 가진 셀로의 데이터 저장 보다 훨씬 더 고속일 수 있기 때문에, "응답성" 및 "고속 데이터 저장"을 호스트(310)에 제공하도록 데이터가 캐시 에어리어에 우선 "신속하게" 저장된다. 나중에, 데이터는 메인 저장 에어리어(274)의 (셀 당 보다 많은 데이터를 저장하는 능력 측면에서) "보다 밀집된" 셀에 복사된다.
따라서, 일부 실시예에서, 캐시 에어리어내의 저장을 위해 필요한 "셰이핑 리던던시"의 양 (그리고 이에 따른 내구성 강화의 양)은 메인 저장 에어리어(274)에 필요한 내구성의 양 보다 (즉, 데이터 기록이 훨씬 더 빈번하기 때문에) 더 크다.
따라서, 일부 실시에에서, 메인 저장 에어리어에 대해서보다 보다 큰 양의 "데이터 셰이핑"이 캐시 저장 에어리어에 대해서 사용된다.
따라서, 일부 실시예에서, 일부 블록이 p 레벨로 프로그래밍되도록 의도되고 다른 블록이 q 레벨(p≠q)로 프로그래밍되도록 의도되는 플래시 디바이스내의 W/E 사이클링 내구성을 증가시키기 위한 기술이 제공된다.
도 14의 설명
일부 실시예에서, 제안된 내구성 강화 방식은 오버헤드의 측면에서 아무런 추가 대가 없이 구현될 수 있다. 하나의 예는 특정 양의 오버헤드가 에러 보정 코딩(ECC)를 위해 할당된 멀티 비트 셀(multi-bit-per cell) 플래시 메모리(908)이다. 리던던트 셀(910)(즉, 프로그래밍 상태 사이의 불균일한 분포를 반드시 유도할 필요가 없는 ECC-관련 리던던시)은 이러한 플래시 셀에 의해 나타나는 높은 에러율로 인한 데이터 손상을 방지하기 위해 사용된다(즉, 보다 많은 레벨을 갖는 셀이 보다 적은 레벨을 갖는 셀보다 높은 에러율을 가질 수 있다). 그러나, 그러나, 이러한 메모리에서, 블록(904)의 일부는 싱글 비트 셀의 저장을 위해 보통 설계되어 있고, 보다 높은 신뢰도 및 보다 고속의 기록 및 판독 처리량을 제공한다. 예를 들어, 플래시 파일 시스템 및 관리를 위해 할당된 블록 및 이진 캐시로서 할당된 블록이 있다. 이러한 블록(904)내의 셀이 단일 비트(2개의 프로그래밍 레벨)만을 저장하기 때문에, 이들은 훨씬 더 낮은 에러율을 나타내고 ECC에 대한 훨씬 더 작은 오버헤드(914)를 필요로 한다. 그래서, 이러한 오버헤드는 여기에 기술된 내구성 강화 방식을 구현하기 위한 아무런 대가 없이 유용하다(즉, 그로 인해 불균일한 분포가 "셰이핑 리던던시"의 대가로 유도된다). 이러한 방식이 여기에 매우 양호하게 적합하다는 것에 주목해야 한다. 그 이유는 이러한 특정 블록(904)(예를 들어, 플래시 관리 및 이진 캐시 블록) 역시 여기에 기재된 기술에 의해 제공될 수 있는 증가된 W/E 사이클링 내구성을 필요로 하는 경향이 있기 때문이다.
일부 실시예에서, 데이터는 블록(904)로부터 블록(908)로 복사된다. 데이터가 복사될 때, (i) (불균일한 분포를 유발하는) "셰이핑 관련" 리던던시의 양이 (처리 및/또는 디코딩 및/또는 리-인코딩함으로써- 도 12a 내지 도 12b 참조) 감소되고, (ii) ECC 관련 리던던시가 도입되고 및/또는 증가된다.
"유기적 ECC" 방식이 도 14에 도시되어 있지만 이러한 기술은 또한 "비유기적인 ECC"에도 적용될 수 있다.
ECC 코딩에 내구성 강화 코딩을 조합하기
내구성 강화 코딩이 ECC 코딩에 조합될 수 있음을 주목해야 한다. 일부 실시예에서, 이것은 내구성 강화 코딩 후에 ECC 코딩을 실행함으로써 수행된다. 이러한 방식은, 판독 동안, 에러 없이 저장된 비트를 제공하는 ECC 디코딩을 우선 실행한다. 그다음, 내구성 강화 코드 디코딩을 실행하고, 저장된 정보를 복구한다. ECC 리던던시가 (보통 플래시 메모리와 특히 단일 비트 셀 플래시의 경우에서와 같이) 작은 경우에, 내구성 강화 코딩이 정보 파트에서만 실행되고 ECC 리던던시 파트에는 실행되지 않는다는 사실은 솔루션의 효율에 거의 영향을 주지 않는다. 그러나, 이러한 경우에 일어날 수도 있는 실제적인 문제는 ECC 리던던시를 저장하는 셀이 정보를 저장하는 셀보다 고속으로 마모될 것이라는 것이다. 그 이유는 오직 정보 파트만이 프로그래밍된 셀의 예측된 프랙션을 감소하는 내구성 강화 코딩에 의해 인코딩되기 때문이다. 이러한 문제에 대한 가능한 솔루션은 하나의 프로그래밍 동작으로부터 또다른 프로그래밍 동작으로 ECC 리던던시의 위치를 변경하는 것이다. 즉, 각 프로그래밍에서 상이한 셀에 ECC 리던던시 비트를 저장하는 것이다. 이러한 경우에, 실행된 프로그래밍 동작의 수는 ECC 리던던시가 어디에 위치되어 있는지를 알기 위해 추적될 필요가 있지만, 이것은 어쨋든 보통 플래시 관리 시스템에 의해 이루어진다. 또 다른 가능한 솔루션은 하나 보다 많은 세트의 ECC 리던던시 비트에 대한 저장 공간을 할당하는 것이다. 이러한 솔루션은 오버헤드 측면에서 덜 효율적이지만 ECC 리던던시가 매우 작다면 매력적일 수 있다. 이러한 솔루션에서, 각 프로그래밍 동안, ECC 리던던시 비트는 할당된 공간내의 상이한 위치에 저장된다. 판독 동안, 시스템은 행해진 프로그램 동작의 수에 기초하여 위치되어 있는 위치를 식별하거나, 대안으로, 논리 "AND" 동작은 (오직 하나의 세트가 유효하고 다른 세트들이 이들이 소거되기 때문에 "1"을 저장하는) 상이한 세트의 ECC 리던던시 비트 사이에 실행된다.
일부 실시예에서, 프로그래밍 레벨 사이의 불균일한 분포에 대한 지식은 "보다 양호한 보정"을 제공하기 위해 사용될 수 있다. 따라서, 하나의 예에서, ECC 코딩이 내구성 강화 코딩과 조합되는 경우에, 소프트 ECC 디코더는 에러 보정 능력을 증가시키기 위해 프로그래밍 레벨에 대한 분포의 선험적 지식을 사용할 수 있다. 즉, 초기 "소프트" 비트 에시티메이트(LLR)는 내구성 강화 코딩 방식에 의해 유도된 "0" 또는 "1"이 되는 각 비트의 선험적 확률을 고려할 수 있다(이것은 1/2이 아니다). 이것은 내구성 강화 코드에 낭비된 리던던시의 일부는 에러 보정을 위해 다시 얻어질 수 있음을 의미한다.
제1 추가 설명
일부 실시예는 셀 마모를 감소시키는 코딩 기술을 제공한다.
일부 실시예에는 "프로그램 디스터브"와 같은 데이터 종속 노이즈를 완화시키는 코딩 기술을 제공한다.
일부 실시예는 보다 적은 셀 마도를 유도하는 것으로 예측되는 프로그래밍 레벨 시퀀스로 정보 비트 시퀀스를 맵핑하는 코딩 기술을 제공한다.
일부 실시예는 "프로그램 디스터브"와 같은 데이터 종속 노이즈를 완화시키는 것으로 예측되는 프로그래밍 레벨 시퀀스로 정보 비트 시퀀스를 맵핑하는 코딩 기술을 제공한다.
일부 실시예는 불균일한 분포를 갖는 프로그래밍 레벨 시퀀스로 정보 비트 시퀀스를 맵핑하는 코딩 기술을 제공하여서, 이러한 분포에 의해 유도되는 예측되는 셀 마모는 균일한 분포의 것보다 작다.
일부 실시예는 불균일한 분포를 갖는 프로그래밍 레벨 시퀀스로 정보 비트 시퀀스를 맵핑하는 코딩 기술을 제공하여서, 이러한 분포에 의해 유도되는 "프로그램 디스터브"와 같은 예측되는 데이터 종속 노이즈는 균일한 분포의 것 보다 작다.
일부 실시예는 프로그래밍 레벨에 대해 하방 바이어스를 가진 불균일한 분포를 유도하기 위한 비선형 코드를 사용하는 코딩 기술을 제공한다.
일부 실시예는 "프로그램 디스터브"와 같은 데이터 종속 노이즈를 완화시키기 위해 및/또는 W/E 사이클 내구성을 증가시키기 위해, 프로그래밍 레벨에 대한 불균일한 분포를 유도하기 위한 계산 소스 코딩 기술을 사용하는 코딩 기술을 제공한다.
일부 실시예는 프로그래밍 레벨의 불균일한 분포를 유도하기 위한 트렐리스 셰이핑 기술을 사용하는 코딩 기술을 제공한다.
일부 실시예는 "1"의 예측된 수보다 적은 "0"의 예측된 수를 갖는 코딩된 비트 시퀀스로 정보 비트 시퀀스를 맵핑하는 코딩 기술을 제공한다. 대안으로, "1"의 예측된 수보다 많은 "0"의 예측된 수를 갖는 코딩된 비트 시퀀스로 정보 비트 시퀀스를 맵핑하는 기술이 제공된다.
일부 실시예는 정보 비트 시퀀스를 고/저 웨이트 코드워드로 맵핑하는 코딩 기술을 제공한다. 즉, 코드북에 대한 예측된 코드워드 웨이트는 정확하게 50%보다 크다/적다. ECC는 전혀 없이 가능하게는 단지 스크램블러만을 갖는 방식조차 레이트 1 선형 코드로서 고려될 수 있다는 것에 주목해야 한다.
일부 실시예는 가변 길이 코딩 방식을 사용하는 코딩 기술을 제공한다. 즉, 정보 비트의 가변 길이 시퀀스는 코딩된 비트의 고정된 길이 시퀀스로 맵핑된다. 다른 조합 역시 가능하다. 예를 들어, 가변 정보 길이-가변 코드워드 길이 맵핑 또는 고정된 정보 길이-가변 코드워드 길이 맵핑이 가능하다.
일부 실시예는 프리픽스 코드를 사용하는 코딩 기술을 제공한다. 정보 비트의 가변 길이 시퀀스는 코드워드로 맵핑되어서 정보 비트의 아무런 시퀀스도 또 다른 시퀀스의 프리픽스를 구성하지 않는다.
일부 실시예는 최소 요구되는 리던던시를 가진 상태의 특정 분포를 유도하기 위해, 허프만 프리픽스를 사용하는 코딩 기술을 제공한다. 여기에 기술된 방식에서 허프만 코드가 사용되는 방법은 허프만 코드를 사용하는 표준 방법이 아니라는 것에 주목해야 한다. 종래에, 허프만 코드는 (시퀀스 엔트로피에 가능한 가까운 예측된 길이를 가진) 주어진 분포를 가진 시퀀스를 이진 벡터로 압축하기 위해 사용된다. 즉, 종래의 허프만 인코더는 이러한 시퀀스를 비트로 압축하기 위해 사용되고 종래의 허프만 디코더는 이러한 비트를 오리지널 시퀀스로 변환시키기 위해 사용된다. 여기에서, 허프만 코딩은 상이하게 사용된다. 즉, 허프만 디코더는 정보 비트의 시퀀스를 요구되는 분포를 가진 상태의 시퀀스로 압축해제하기 위해 사용된다. 이러한 허프만 인코더는 상태의 시퀀스를 다시 오리지널 정보 비트로 변환시키기 위해 사용된다. 더욱이, 일부 경우에(예를 들어, SLC 경우에) 허프만 디코더의 출력부에서의 시퀀스는 플래시에 직접 저장되지 않고, 대신에 먼저 플래시의 프로그래머블 상태에 상응하는 상태의 시퀀스로 변형된 후에(예를 들어, SLC의 경우에 이러한 시퀀스를 다시 비트로 맵핑한 후에) 단지 이러한 변형된 시퀀스를 저장한다.
일부 실시예는 정보 시퀀스를 코드워드로 맵핑하는 확률적 방식을 채용하는 기술을 제공하고, 이러한 코드워드가 플래시에 저장될 수 없다면 오리지널 시퀀스가 저장된다. 예를 들어, 가변 길이 코드를 사용하는 방식에서, 코드워드가 너무 길다면(예를 들면, 코드워드를 저장하기에 플래시 워드라인내의 셀이 충분하지 않은 경우) 오리지널 정보 시퀀스가 저장된다.
일부 실시예는 확률적 방식을 채용하는 기술을 제공한다. 이러한 방식은 스크램블링된 정보 시퀀스를 코드워드로 맵핑하고, 이러한 코드워드가 플래시에 저장될 수 없다면 정보 시퀀스는 다시 스크램블링되고 새로운 코드워드로 맵핑된다. 이러한 프로세스는 코드워드가 저장에 충분할 때까지 반복되어 이루어질 수 있다(예를 들어, 코드워드의 길이는 너무 크지 않다).
일부 실시예는 내구성 강화 방식과 ECC와의 조합을 제공한다. 정보는 내구성 강화 코드에 의해 인코딩된 후 ECC에 의해 코딩된다. 소프트 ECC 디코더는 에러 보정 능력을 증가시키기 위해 프로그래밍 레벨에 대해 분포의 선험적 지식을 사용할 수 있다. 즉, 초기 "소프트" 비트 에스티메이트(LLR)는 비트가 1/2가 아닌 "0"/"1"에 대한 선험적 확률을 갖는다는 사실을 고려한다. 이것은 내구성 강화 코드에 낭비된 리던던시의 일부는 보정 에러를 위해 다시 취득된다는 것을 의미한다.
일부 실시예는 내구성 강화 코드을 ECC와 결합하는 코딩 기술을 제공하여, ECC 인코딩은 내구성 강화 인코더의 출력부에서 이루어진다. 이러한 경우에, ECC 리던던시를 저장하는 셀은 보다 고속으로 마모될 것이라는 문제가 있을 수 있다. 이러한 문제는 예를 들어, 다음에 의해 해결될 수 있다.
a. 프로그래밍 동작 사이의 ECC 리던던시 위치를 변경하는 단계.
b. 하나 보다 많은 세트의 ECC 리던던시 비트에 대한 저장공간을 할당하는 단계 및 프로그래밍 동작 사이의 이러한 공간 내의 ECC 리던던시 비트의 위치를 변경하는 단계.
제2 추가 설명
일부 실시예는 플래시 디바이스내의 W/E 사이클링 내구성을 증가시키기 위한 기술 및/또는 일부 블록이 p 레벨로 프로그래밍되기로 의도되고 다른 블록이 q 레벨로 프로그래밍되기로 의도된(p≠q) "프로그램 디스터브"와 같은 데이터 종속 노이즈를 완화시키기 위한 기술을 제공한다.
일부 실시예는 멀티 비트 셀 플래시 디바이스의 관리 및 파일 시스템 (이진) 블록내에서, W/E 사이클링 내구성을 증가시키고 및/또는 "프로그램 디스터브"와 같은 데이터 종속 노이즈를 완화시키기 위한 기술을 제공한다.
일부 실시예는 멀티 비트 셀 플래시 디바이스의 (이진) 캐시 블록내에서, W/E 사이클링 내구성을 증가시키고 및/또는 "프로그램 디스터브"와 같은 데이터 종속 노이즈를 완화시키기 위한 기술을 제공한다.
일부 실시예는 내구성 강화 코딩 및/또는 데이터 종속 노이즈 완화 코딩을 위한 미사용된 셀을 사용하는 기술을 제공한다.
일부 실시예는 내구성 강화 코딩 및/또는 데이터 종속 노이즈 완화 코딩을 위한 미사용된 ECC 리던던시 셀을 사용하는 기술을 제공한다. 예를 들어, 멀티 비트 셀 플래시 디바이스내의 워드라인은 플래시의 신뢰할만한 동작을 위해 ECC 리던던시를 포함한다. 특정 경우에, 이러한 워드라인은 최대 허용된 수보다 적은 셀 당 비트를 저장한다(예를 들어, 이진 캐시). 이러한 경우에, 보다 적은 리던던시가 신뢰할만한 동작을 위해 필요하고 일부 셀은 미사용되고 내구성 강화 코딩 및/또는 데이터 종속 노이즈 완화 코딩을 위해 유용하다.
일부 실시예는 다수의 워드라인에 대한 내구성 강화 코딩 및/또는 데이터 종속 노이즈 완환 코딩을 위한 기술을 제공한다.
도 15의 간략한 설명
도 15에 도시된 바와 같이, 데이터가 플래시 디바이스에 수신될 때, (i) 데이터를 메인 저장공간에 저장하기 전에 캐시에 먼저 저장할지 또는 (ii) 데이터를 먼저 캐싱할 지 여부를 대해 결정한다.
이러한 결정은 다수의 팩터에 따라 만들어질 수 있다. 예를 들어, (보다 높은 레이트가 캐시로의 기록이 자주 보다 고속이기 때문에 캐싱을 선호하는) 호스트 디바이스로부터 데이터 수신되는 레이트가 있다.
그다음, "캐시/아무런 캐시" 결정이 데이터를 "셰이핑"할지 여부 (그리고 어느 정도까지 할지 여부)를 포함하는 결정에 관련될 수 있다는 것에 주목해야 한다.
제3 추가 결정
실시예는 플래시 메모리의 측면에서 기술되었지만, 본 기술은 내구성 또는 신뢰도 또는 기록 속도가 데이터 종속적이어서, 메모리 상태의 분포를 "셰이핑"함으로써 내구성 관련 및/또는 신뢰도 관련 및/또는 속도 관련된 성능 증가를 실현하는 것이 가능한 휘발성 또는 비휘발성 메모리에 적용될 수 있다는 것을 이해해야 한다.
일부 실시예에서, 플래시 내구성을 증가시키기 위한 본원 방법의 장치의 하나 이상은 (플래시 셀을 프로그래밍할 시에 프로그램 디스터브를 감소시킴으로써) 플래시 신뢰도를 증가시키고 및/또는 ("선호되는" 상태가 고속 기록과 연관되어 있기 때문에) 기록 속도를 증가시킬 수 있는 것에 주목해야 한다.
여기에 개시된 임의의 컨트롤러(280)(도면에 설명된 플래시 컨트롤러 또는 플래시 메모리 디바이스 이외의 메모리 디바이스에 대한 컨트롤러)는 하드웨어(예를 들어, 마이크로프로세서 및 옵션으로 RAM 또는 레지스터와 같은 휘발성 메모리를 포함한다), 펌웨어 및/또는 실행가능한 코드 모듈(예를 들어, 휘발성 및/또는 비휘발성 메모리에 저장되고 마이크로프로세서에 의해 실행가능한 컴퓨터 코드)의 임의의 조합을 사용하여 구현될 수 있다는 것에 주목해야 한다. 컨트롤러(280)(또는 280B)는 필드 프로그래머블 로직 어레이(FPGA) 엘리먼트, 하드와이어 로직 엘리먼트, 필드 프로그래머블 게이트 어레이(FPGA) 엘리먼트 및 주문형 집적 회로(ASIC) 엘리먼트를 포함하지만 이에 제한되지 않는, 임의의 실행가능한 모듈 및/또는 펌웨어 및/또는 하드웨어 엘리먼트를 포함한다. 임의의 명령어 세트 구조는 감소된 명령어 세트 컴퓨터(RISC) 구조 및/또는 컴플렉스 명령어 세트 컴퓨터(CISC) 구조를 포함하지만 이에 제한되지 않는 컨트롤러(280)에서 사용될 수 있다.
상술된 실시예중 하나는 컴퓨터 판독가능 매체에 도면과 연결되어 상술된 동작을 실현하는 명령어 및/또는 데이터를 수신, 전송 또는 저장하는 단계를 더 포함할 수 있다는 것에 주목해야 한다. 일반적으로, 컴퓨터 판독가능 매체는 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 전달되는 전기, 전자기 또는 디지털 신호와 같은 전송 매체 또는 신호는 물론 RAM, ROM등과 같은 휘발성 또는 비휘발성 매체, 예를 들어, 디스크 또는 CD-ROM과 같은 광매체 또는 플래시 또는 자기 매체와 같은 저장 매체 또는 메모리 매체를 포함할 수 있다.
도 1a 및 도 1 b의 플래시 메모리 저장 디바이스(260, 260*)는 종래의 플래시 메모리 저장 디바이스를 설명하는 것에 더하여, 상술된 바와 같이, 플래시 컨트롤러(280)가 플래시 메모리(270)의 내구성을 강화하기 위한 셰이핑 인코딩 및 디코딩을 실행한다는 이해하에, 상술된 기술을 채용하는 플래시 메모리 저장 디바이스를 설명한다. 도 16은 플래시 컨트롤러(280)의 기능 모듈 가운데 도 5의 프리픽스 코드 인코더(90) 및 상응하는 프리픽스 코드 디코더(92)가 있다는 것을 보여주는, 플래시 컨트롤러(280)등의 고레벨 기능 블록도이다.
도 17은 여기에 기술된 기술을 사용하는 시스템(50)의 고레벨 블록도이다. 시스템(50)은 프로세서(52)와, 4개의 메모리 디바이스, 즉, RAM(54), 부트 ROM(56), 대용량 디바이스(하드 디스크)(58) 및 플래시 메모리 디바이스(62)로서의 도 1a 및 도 1b의 플래시 메모리 저장 디바이스(260 또는 260*)를 포함한다. 이들은 모두 공통 버스(64)를 통해 통신한다. 시스템(50)에서, 플래시 메모리 디바이스(62)의 컨트롤러(280)는 버스(64)로의 인터페이스로만 기능하고, 상술된 도 1a 및 도 1b의 플래시 컨트롤러(280)의 기능의 나머지는 프로세서(52)에 의해 실행되는 사용자 애플리케이션과 플래시 메모리 디바이스(62) 사이를 인터페이싱하기 위해, 그리고 플래시 메모리 디바이스(62)의 플래시 메모리(270)를 관리하기 위해 프로세서(52)에 의해 실행되고 대용량 디바이스(58)에 저장되는 플래시 메모리 구동 코드(60)에 의해 에뮬레이팅된다. 이러한 플래시 관리 구동 코드의 종래 기능에 더하여, 구도 코드(60)는 상술된 바와 같이 플래시 메모리(270)의 내구성을 강화시키기 위한 인코딩 및 디코딩을 셰이핑 단계를 실행하는 것에 대해 도 1a 및 도 1b의 컨트롤러(280)의 기능을 에뮬레이팅한다. 구동 코드(60)는 시스템(50)용 운영 시스템내에 보통 포함되지만 프리스탠딩 코드일 수도 있다.
플래시 메모리 디바이스(62) 이외의 시스템(50)의 컴포넌트는 플래시 메모리 디바이스(62)의 호스트(70)를 구성한다. 대용량 디바이스(58)는 인코딩 및 디코딩을 셰이핑하기 위한 컴퓨터 판독가능 구동 코드를 포함하는 컴퓨터 판독가능 저장 매체의 하나의 예이다. 이러한 컴퓨터 판독가능 저장 매체의 다른 예는 이러한 코드를 포함하는 CD와 같은 판독전용 메모리를 포함한다.
여기에 인용된 모든 문헌은 여기에 언급되어 그 전체가 통합되어 있다.
플래시 메모리와 같은 메모리의 내구성을 강화하기 위한 데이터 인코딩 방법 및 이러한 방법을 사용하는 디바이스 및 시스템의 제한된 수의 실시예가 설명되었다. 이러한 방법, 디바이스 및 시스템의 많은 변형, 수정 및 다른 적용이 가능할 수 있다는 것을 이해할 것이다.

Claims (28)

  1. 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법에 있어서,
    (a) 메모리 셀의 셀 상태로의 비트 패턴의 제1 맵핑을 제공하는 단계;
    (b) 상기 셀 상태로의 비트 패턴의 제1 맵핑에 대해 하방 점근성 바이어스를 갖는 제1 셰이핑 인코딩을 사용하여, 상기 제1 복수의 입력 비트보다 수가 큰 제1 복수의 변형된 비트에 상기 제1 복수의 입력 비트를 맵핑하는 단계;
    (c) 상기 셀 상태로의 비트 패턴의 제1 맵핑에 따라 제1 복수의 변형된 비트를 저장하기 위해 메모리 셀의 제1 서브-복수의 적어도 일부를 프로그래밍하는 단계; 및
    (d) 임의의 다른 비트를 저장하기 위해 상기 제1 서브-복수의 메모리 셀의 적어도 일부를 프로그래밍하기 전에 상기 제1 서브-복수의 메모리 셀의 적어도 일부를 소거하는 단계;를 포함하는 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  2. 제1항에 있어서, 상기 제1 셰이핑 인코딩은 상기 셀 상태의 하반부쪽으로 하방 점근성 바이어스를 갖고 있는 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  3. 제1항에 있어서, 상기 제1 셰이핑 인코딩은 비선형인 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  4. 제3항에 있어서, 상기 제1 셰이핑 인코딩은 가변 길이 인코딩인 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  5. 제4항에 있어서, 상기 가변 길이 인코딩은 프리픽스 인코딩인 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  6. 제5항에 있어서, 상기 프리픽스 인코딩은 리버스 허프만 인코딩인 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  7. 제3항에 있어서, 상기 제1 셰이핑 인코딩은 리버스 계산 소스 인코딩인 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  8. 제1항에 있어서, 상기 제1 셰이핑 인코딩은 트렐리스 셰이핑 인코딩인 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  9. 제1항에 있어서,
    (d) 상기 제1 복수의 변형된 비트의 맵핑 이전에,
    (i) 상기 제1 복수의 변형된 비트를 저장할 필요가 있는 제1 복수의 메모리 셀의 최대수를 추정하는 단계, 및
    (ii) 상기 제1 복수의 변형된 비트를 저장하기 위한 제1 서브-복수의 메모리 셀의 추정된 최대수를 보전하는 단계를 더 포함하는 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  10. 제9항에 있어서,
    (e) 보존된 셀의 수가 상기 복수의 변형된 비트를 저장하기에 너무 작다면,
    (i) 상기 제1 복수의 입력 비트를 상기 제1 서브-복수의 메모리 셀의 적어도 일부에 저장하는 단계; 및
    (ii) 상기 제1 복수의 입력 비트를 스크램블링하여 복수의 스크램블링된 비트를 제공한 후에 제1 셰이핑 인코딩을 사용하여 상기 스크램블링된 비트를 복수의 변형된 스크램블링된 비트에 맵핑하는 단계;로 구성되는 그룹으로부터 선택된 동작을 실행하는 단계를 더 포함하는 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  11. 제1항에 있어서,
    (d) 상기 제1 서브-복수의 메모리 셀의 요구되는 셰이핑 방식에 따라 제1 셰이핑 인코딩을 선택하는 단계를 더 포함하는 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  12. 제1항에 있어서,
    (d) 상기 메모리의 셀 상태로의 비트 패턴의 제2 맵핑을 제공하는 단계;
    (e) 상기 제1 셰이핑 인코딩과 상이한 제2 셰이핑 인코딩을 사용하여, 제2 복수의 변형된 비트로 제2 복수의 입력 비트를 맵핑하는 단계; 및
    (f) 상기 셀 상태로의 비트 패턴의 제2 맵핑에 따라 상기 제2 복수의 변형된 비트를 저장하기 위해 제2 서브-복수의 메모리 셀의 적어도 일부를 프로그래밍하는 단계;를 더 포함하는 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  13. 제12항에 있어서, 상기 셀 상태로의 비트 패턴의 제1 맵핑 및 제2 맵핑은 동일한 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  14. 제12항에 있어서, 상기 셀 상태로의 비트 패턴의 제1 맵핑 및 제2 맵핑은 상이한 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  15. 제12항에 있어서, 상기 제2 셰이핑 인코딩은 상기 셀 상태로의 비트 패턴의 제2 맵핑의 셀 상태에 대해 하방 점근성 바이어스를 갖고 있는 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  16. 제12항에 있어서, 상기 제1 셰이핑 인코딩 및 제2 셰이핑 인코딩은 상기 제1 및 제2 서브-복수의 메모리 셀의 특성에 따라 선택되는 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  17. 제16항에 있어서, 상기 메모리 셀의 제1 및 제2 서브-복수의 메모리 셀의 각 특성은 상기 제1 및 제2 서브-복수의 메모리 셀에 의해 견뎌지는 프로그램 사이클의 각각의 수를 포함하는 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  18. 제1항에 있어서,
    (d) 상기 제1 서브-복수의 메모리 셀의 적어도 일부를 판독함으로써, 복구된 제1 복수의 변형된 비트를 취득하는 단계;
    (e) 상기 제1 셰이핑 인코딩과 관련된 상기 복구된 제1 복수의 변형된 비트를 디코딩함으로써, 복구된 제1 복수의 입력 비트를 취득하는 단계; 및
    (f) 상기 복구된 제1 복수의 입력 비트를 저장하기 위해 제2 서브-복수의 메모리 셀의 적어도 일부를 프로그래밍하는 단계;를 더 포함하는 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  19. 제1항에 있어서,
    (d) 상기 복수의 변형된 비트를 시스테메틱 에러 보정 인코딩하는 단계; 및
    (e) 상기 적어도 하나의 리던던시 비트를 저장하기 위해 제2 서브-복수의 메모리 셀의 적어도 일부를 프로그래밍하는 단계;를 더 포함하는 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  20. 제19항에 있어서,
    (f) 상기 제1 서브-복수의 메모리 셀의 적어도 일부를 판독함으로써, 복구된 제1 복수의 변형된 비트를 취득하는 단계;
    (g) 상기 제2 서브-복수의 메모리 셀의 적어도 일부를 판독함으로써, 복구된 적어도 하나의 리던던시 비트를 취득하는 단계; 및
    (h)상기 복구된 적어도 하나의 리던던시 비트에 따라 상기 복구된 제1 복수의 변형된 비트를 시스테메틱 에러 보정 디코딩하는 단계;를 더 포함하고,
    상기 시스테메틱 에러 보정 디코딩은 상기 제1 셰이핑 인코딩에 적어도 부분적으로 기초하고 있는 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  21. 제1항에 있어서, 상기 제1 셰이핑 인코딩은 논-시스테메틱 에러 보정 인코딩을 포함하는 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  22. 베21항에 있어서,
    (d) 상기 제1 서브-복수의 메모리 셀의 적어도 일부를 판독함으로써, 복구된 제1 복수의 변형된 비트를 취득하는 단계; 및
    (e) 상기 제1 셰이핑 인코딩과 관련된 상기 복구된 제1 복수의 변형된 비트를 논-시스테메틱 에러 보정 디코딩하는 단계;를 더 포함하는 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  23. 제1항에 있어서, 상기 변형된 비트의 수는 입력 비트의 수의 최대 약 1.29배인 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  24. 제1항에 있어서, 상기 하방 점근성 바이어스는 75%를 초과하는 것을 특징으로 하는 복수의 메모리 셀에 제1 복수의 입력 비트를 저장하는 방법.
  25. 복수의 메모리 셀을 포함하는 메모리에 대한 메모리 컨트롤러에 있어서,
    (a) 상기 메모리 셀의 셀 상태로의 비트 패턴의 맵핑을 제공하고;
    (b) 복수의 비트를,
    (i) 비트 패턴의 맵핑에 대해 하방 점근성 바이어스를 갖고 있는 셰이핑 인코딩을 사용하여, 복수의 입력 비트보다 수가 더 큰 복수의 변형된 비트로 상기 복수의 입력 비트를 맵핑함으로써, 그리고
    (ii) 셀 상태로의 비트 패턴의 맵핑에 따라 상기 복수의 변형된 비트를 저장하도록 상기 메모리 셀의 적어도 일부를 프로그래밍함으로써,
    메모리 셀에 저장하는 단계; 및
    (c) 임의의 다른 비트를 저장하기 위해 상기 복수의 메모리 셀의 적어도 일부를 프로그래밍하기 전에 상기 복수의 메모리 셀의 적어도 일부를 소거하는 단계;를 하도록 동작하는 것을 특징으로 하는 메모리 컨트롤러.
  26. (a) 복수의 메모리 셀을 포함하는 메모리; 및
    (b) 제25항의 컨트롤러를 포함하는 것을 특징으로 하는 메모리 디바이스.
  27. 복수의 입력 비트를 저장하기 위한 시스템으로서,
    (a) 복수의 메모리 셀을 포함하는 제1 메모리; 및
    (b) 상기 제1 메모리의 호스트를 포함하고,
    상기 제1 메모리의 호스트는,
    (i) 제2 메모리로서,
    (A) 상기 메모리 셀의 셀 상태로의 비트 패턴의 맵핑을 제공하는 단계,
    (B) 상기 셀 상태로의 비트 패턴의 맵핑에 대해 하방 점금성 바이어스를 갖고 있는 셰이핑 인코딩을 사용하여, 상기 복수의 입력 비트보다 수가 더 큰 복수의 변형된 비트로 상기 복수의 입력 비트를 맵핑하는 단계,
    (C) 상기 셀 상태로의 비트 패턴의 맵핑에 따라 상기 복수의 변형된 비트를 저장하기 위해 상기 메모리 셀의 적어도 일부를 프로그래밍하는 단계, 및
    (D) 임의의 다른 비트를 저장하기 위해 상기 메모리 셀의 적어도 일부를 프로그래밍하기 전에 상기 복수의 메모리 셀의 적어도 일부를 소거하는 단계에 의해 상기 제1 메모리를 관리하기 위한 코드를 저장하기 위한 상기 제2 메모리, 그리고
    (ii) 상기 코드를 실행하기 위한 프로세서를 포함하는 것을 특징으로 하는 복수의 입력 비트 저장 시스템.
  28. 복수의 메모리 셀을 포함하는 메모리에 복수의 입력 비트를 저장하기 위한 컴퓨터 판독가능 코드를 내장한 컴퓨터 판독가능 저장 매체로서,
    (a) 셀 상태로의 비트 패턴의 맵핑에 대해 하방 점근성 바이어스를 갖고 있는 셰이핑 인코딩을 사용하여, 상기 복수의 입력 비트보다 수가 더 큰 복수의 변형된 비트로 상기 복수의 입력 비트를 맵핑하기 위한 프로그램 코드;
    (b) 상기 셀 상태로의 비트 패턴의 맵핑에 따라 상기 복수의 변형된 비트를 저장하기 위해 상기 메모리 셀의 적어도 일부를 프로그래밍하기 위한 프로그램 코드; 및
    (c) 임의의 다른 비트를 저장하기 위해 상기 메모리 셀의 적어도 일부를 프로그래밍하기 전에 상기 복수의 메모리 셀의 적어도 일부를 소거하기 위한 프로그램 코드;를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 저장 매체.
KR1020117021008A 2009-02-12 2010-02-11 데이터의 인코딩에 의한 플래시 내구성 강화 장치 및 방법 KR20110128852A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15221809P 2009-02-12 2009-02-12
US61/152,218 2009-02-12

Publications (1)

Publication Number Publication Date
KR20110128852A true KR20110128852A (ko) 2011-11-30

Family

ID=42046467

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117021008A KR20110128852A (ko) 2009-02-12 2010-02-11 데이터의 인코딩에 의한 플래시 내구성 강화 장치 및 방법

Country Status (4)

Country Link
US (1) US8756365B2 (ko)
EP (1) EP2396791B1 (ko)
KR (1) KR20110128852A (ko)
WO (1) WO2010092536A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014010763A1 (ko) * 2012-07-11 2014-01-16 한양대학교 산학협력단 쓰기 데이터 패턴 인식에 의한 플래시 메모리 관리 장치 및 방법
KR20160111594A (ko) * 2015-03-16 2016-09-27 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US9460782B2 (en) 2013-03-15 2016-10-04 Samsung Electronics Co., Ltd. Method of operating memory controller and devices including memory controller

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8341501B2 (en) * 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
CN102455975B (zh) * 2010-10-15 2014-08-27 慧荣科技股份有限公司 用来进行数据整形的方法以及其记忆装置及控制器
KR101193059B1 (ko) 2011-04-21 2012-10-22 에스케이하이닉스 주식회사 비휘발성 메모리 장치 및 그 동작 방법
US8780659B2 (en) * 2011-05-12 2014-07-15 Micron Technology, Inc. Programming memory cells
US9311969B2 (en) 2011-07-22 2016-04-12 Sandisk Technologies Inc. Systems and methods of storing data
US8495285B2 (en) * 2011-08-31 2013-07-23 Micron Technology, Inc. Apparatuses and methods of operating for memory endurance
CN103957966B (zh) 2011-09-27 2017-09-29 贝克顿迪金森法国公司 等离子体处理过的硅油作为医用注射装置中的涂层的用途
US8666068B2 (en) 2011-10-20 2014-03-04 Sandisk Technologies Inc. Method for scrambling shaped data
US8799559B2 (en) 2011-10-24 2014-08-05 Sandisk Technologies Inc. Endurance enhancement coding of compressible data in flash memories
US8984369B2 (en) 2012-11-21 2015-03-17 Micron Technology, Inc. Shaping codes for memory
US9575683B2 (en) 2012-11-30 2017-02-21 Sandisk Technologies Llc Processing shaped data
US9135155B2 (en) 2012-11-30 2015-09-15 Sandisk Technologies Inc. Storage and retrieval of shaped data
US8656255B1 (en) * 2013-03-15 2014-02-18 Avalanche Technology, Inc. Method for reducing effective raw bit error rate in multi-level cell NAND flash memory
US9489299B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9117514B2 (en) 2013-06-19 2015-08-25 Sandisk Technologies Inc. Data encoding for non-volatile memory
US9489300B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9117520B2 (en) 2013-06-19 2015-08-25 Sandisk Technologies Inc. Data encoding for non-volatile memory
US9489294B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
KR102149770B1 (ko) * 2013-08-26 2020-08-31 삼성전자주식회사 메모리 컨트롤러 및 그것의 동작 방법
US9390008B2 (en) 2013-12-11 2016-07-12 Sandisk Technologies Llc Data encoding for non-volatile memory
US9165649B2 (en) 2013-12-20 2015-10-20 Sandisk Technologies Inc. Systems and methods of shaping data
KR102247087B1 (ko) 2014-07-08 2021-05-03 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
US10074427B2 (en) 2014-11-12 2018-09-11 Sandisk Technologies Llc Shaped data associated with an erase operation
US9406377B2 (en) 2014-12-08 2016-08-02 Sandisk Technologies Llc Rewritable multibit non-volatile memory with soft decode optimization
US9865338B2 (en) 2015-09-02 2018-01-09 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory by converting write data written to a page
US9927990B2 (en) 2015-09-10 2018-03-27 Toshiba Memory Corporation Memory system, memory controller and memory control method
US10089241B2 (en) * 2016-03-10 2018-10-02 Toshiba Memory Corporation Memory system
US10216575B2 (en) 2016-03-17 2019-02-26 Sandisk Technologies Llc Data coding
US10114549B2 (en) 2016-03-17 2018-10-30 Sandisk Technologies Llc Error correction code processing and data shaping for reducing wear to a memory
US11049009B2 (en) 2017-06-12 2021-06-29 Western Digital Technologies, Inc. Identifying memory block write endurance using machine learning
US10949119B2 (en) * 2018-02-20 2021-03-16 Western Digital Technologies, Inc. Data shaping to reduce error rates in solid state memory devices
JP6960877B2 (ja) 2018-03-22 2021-11-05 キオクシア株式会社 メモリシステム
US11029872B2 (en) 2018-12-18 2021-06-08 Western Digital Technologies, Inc. Non-volatile storage system with data shaping memory partitions
US11184170B2 (en) 2019-06-28 2021-11-23 Micron Technology, Inc. Public key protection techniques
KR20210013397A (ko) 2019-07-24 2021-02-04 삼성전자주식회사 스토리지 장치
EP3783611B1 (en) * 2019-07-24 2023-02-22 Samsung Electronics Co., Ltd. Storage device that performs state shaping of data
KR20210062845A (ko) 2019-11-22 2021-06-01 삼성전자주식회사 비휘발성 메모리 장치의 동작 제어 방법 및 이를 수행하기 위한 데이터 컨버터
US11321167B2 (en) 2020-05-09 2022-05-03 Western Digital Technologies, Inc. Adaptive folding for integrated memory assembly
US11462278B2 (en) 2020-05-26 2022-10-04 Samsung Electronics Co., Ltd. Method and apparatus for managing seed value for data scrambling in NAND memory
US11170870B1 (en) 2020-05-28 2021-11-09 Western Digital Technologies, Inc. On-chip-copy for integrated memory assembly
US11301321B2 (en) 2020-05-28 2022-04-12 Western Digital Technologies, Inc. Data shaping for integrated memory assembly
US11488682B2 (en) 2020-06-24 2022-11-01 Sandisk Technologies Llc Calibration for integrated memory assembly
US11392327B2 (en) 2020-09-09 2022-07-19 Western Digital Technologies, Inc. Local data compaction for integrated memory assembly
US11650932B2 (en) 2020-10-25 2023-05-16 Western Digital Technologies, Inc. Integrated non-volatile memory assembly with address translation
US11481154B2 (en) 2021-01-15 2022-10-25 Sandisk Technologies Llc Non-volatile memory with memory array between circuits

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6728825B1 (en) * 1996-10-15 2004-04-27 Micron Technology, Inc. Apparatus and method for reducing programming cycles for multistate memory system
US5973626A (en) * 1998-03-17 1999-10-26 Cornell Research Foundation, Inc. Byte-based prefix encoding
US7106794B2 (en) * 2000-08-11 2006-09-12 Broadcom Corporation System and method for Huffman shaping in a data communication system
US7265691B2 (en) * 2005-06-23 2007-09-04 1Stworks Corporation Modeling for enumerative encoding
US7716415B2 (en) 2006-08-01 2010-05-11 Sandisk Il Ltd. Method of avoiding errors in flash memory
US7984360B2 (en) 2006-12-31 2011-07-19 Ramot At Tel Aviv University Ltd. Avoiding errors in a flash memory by using substitution transformations

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014010763A1 (ko) * 2012-07-11 2014-01-16 한양대학교 산학협력단 쓰기 데이터 패턴 인식에 의한 플래시 메모리 관리 장치 및 방법
US9460782B2 (en) 2013-03-15 2016-10-04 Samsung Electronics Co., Ltd. Method of operating memory controller and devices including memory controller
KR20160111594A (ko) * 2015-03-16 2016-09-27 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법

Also Published As

Publication number Publication date
EP2396791A1 (en) 2011-12-21
US20130191579A1 (en) 2013-07-25
US8756365B2 (en) 2014-06-17
EP2396791B1 (en) 2014-08-06
WO2010092536A1 (en) 2010-08-19

Similar Documents

Publication Publication Date Title
KR20110128852A (ko) 데이터의 인코딩에 의한 플래시 내구성 강화 장치 및 방법
US10437668B2 (en) Memory controller, memory system, and method for controlling memory system
JP5944941B2 (ja) クロス・ページ・セクタ、マルチ・ページ符号化およびパー・ページ符号化を使用して多重レベル・セル・フラッシュ・メモリ・デバイスにデータを記憶するための方法および装置
KR101508890B1 (ko) 메모리 내구성을 위한 동작 방법 및 장치
CN111326199B (zh) 用于存储器设备的多态编程
US9390774B2 (en) Systems and methods of storing data
US8176234B2 (en) Multi-write coding of non-volatile memories
KR101675170B1 (ko) 플래시 메모리 프로그래밍 방법 및 시스템, 플래시 메모리 판독 방법 및 시스템
US7984360B2 (en) Avoiding errors in a flash memory by using substitution transformations
US9070453B2 (en) Multiple programming of flash memory without erase
CN109979506B (zh) 非易失性存储器及控制方法
KR101386489B1 (ko) 메모리 장치 및 멀티 비트 프로그래밍 방법
US8463985B2 (en) Constrained coding to reduce floating gate coupling in non-volatile memories
US9424178B2 (en) Optimized flash memory without dedicated parity area and with reduced array size
WO2009095902A2 (en) Systems and methods for handling immediate data errors in flash memory
WO2012023102A1 (en) Mitigating inter-cell coupling effects in non volatile memory (nvm) cells
KR20100119492A (ko) 비휘발성 메모리의 적응형 내구성 코딩
KR20140018412A (ko) 비휘발성 메모리의 에러 경감
KR20110028228A (ko) 다중레벨 플래시 메모리의 에러정정
KR102628009B1 (ko) 부분 페이지 압축을 위한 메모리 시스템
Sharon et al. Coding scheme for optimizing random I/O performance
US9792053B2 (en) Controller for nonvolatile semiconductor memory

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid