KR101508890B1 - 메모리 내구성을 위한 동작 방법 및 장치 - Google Patents

메모리 내구성을 위한 동작 방법 및 장치 Download PDF

Info

Publication number
KR101508890B1
KR101508890B1 KR1020147006477A KR20147006477A KR101508890B1 KR 101508890 B1 KR101508890 B1 KR 101508890B1 KR 1020147006477 A KR1020147006477 A KR 1020147006477A KR 20147006477 A KR20147006477 A KR 20147006477A KR 101508890 B1 KR101508890 B1 KR 101508890B1
Authority
KR
South Korea
Prior art keywords
data
digit
digits
memory
state
Prior art date
Application number
KR1020147006477A
Other languages
English (en)
Other versions
KR20140046070A (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
Application filed by 마이크론 테크놀로지, 인크 filed Critical 마이크론 테크놀로지, 인크
Publication of KR20140046070A publication Critical patent/KR20140046070A/ko
Application granted granted Critical
Publication of KR101508890B1 publication Critical patent/KR101508890B1/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
    • 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
    • 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
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • 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
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

메모리 내구성을 위해 컴퓨팅 시스템 및/또는 메모리 디바이스와 같은 장치를 동작시키는 방법이 제공된다. 일례의 방법은 제2 데이터 상태보다 메모리 셀 마모에 더 유해한 제1 데이터 상태로 표현된 디지트의 제1 수량을 갖는 m 디지트의 데이터를 수신하는 단계를 포함할 수 있다. m 디지트의 데이터는 제1 데이터 상태로 표현된 디지트의 제2 수량을 갖는 n 디지트의 데이터로 인코딩된다. 값 n은 값 m보다 더 크다. 제2 수량은 제1 수량보다 작거나 같다. n 디지트의 데이터는 메모리 셀을 갖는 장치에 저장된다.

Description

메모리 내구성을 위한 동작 방법 및 장치{APPARATUSES AND METHODS OF OPERATING FOR MEMORY ENDURANCE}
본 발명은 일반적으로는 반도체 메모리 디바이스 및 방법에 관한 것으로, 더 구체적으로는, 메모리 내구성을 위한 동작 방법에 관한 것이다.
전형적으로 메모리 디바이스는 컴퓨터 또는 다른 전자 디바이스에서 내부, 반도체, 집적 회로로 제공된다. 그 중에서도 램(RAM), 롬(ROM), 동적 램(DRAM), 동기식 동적 램(SDRAM), 저항성 메모리(예컨대, RRAM), 및 플래시 메모리를 포함하는 여러 다른 유형의 메모리가 많이 있다.
플래시 메모리 디바이스는 광범위한 전자 애플리케이션에 대해 휘발성 및 비-휘발성 데이터 스토리지로 이용된다. 전형적으로, 메모리 중 단지 하나의 유형인 플래시 메모리는 높은 메모리 밀도, 높은 신뢰도, 및 낮은 전력 소비를 감안하는 단일-트랜지스터 메모리 셀을 사용한다. 비-휘발성 메모리는, 예컨대, 퍼스널 컴퓨터, 휴대용 메모리 스틱, 솔리드 스테이트 드라이브(SSD), 디지털 카메라, 셀룰러 전화, MP3 플레이어와 같은 휴대용 음악 플레이어, 영화 플레이어 및 다른 전자 디바이스에서 사용될 수 있다. 메모리 셀은 어레이로 배열될 수 있고, 어레이는 메모리 디바이스에서 사용된다.
메모리 디바이스의 메모리 셀은 소망 데이터 상태로 프로그래밍될 수 있다. 예컨대, 단일 레벨 셀(SLC)은 2개의 데이터 상태, 예컨대, 논리적 하이 또는 2진 "1" 데이터 상태 및 논리적 로우 또는 2진 "0" 데이터 상태 중 하나로 프로그래밍될 수 있다. 멀티레벨 셀(MLC)은 2개보다 많은 데이터 상태 중 하나로 프로그래밍될 수 있다. 예컨대, 일부 플래시 MLC 메모리 셀은 4개, 8개 또는 16개의 데이터 상태(예컨대, 1111, 0111, 0011, 1011, 1001, 0001, 0101, 1101, 1100, 0100, 0000, 1000, 1010, 0010, 0110, 및 1110) 중 하나로 프로그래밍될 수 있고, 이 경우 이들 데이터 상태의 각각은 전하 저장 구조(예컨대, 부동 게이트) 상에 놓이거나 또는 그로부터 제거되는 전기 전하의 각자의 수량으로 표현된다. 메모리 셀은 구조의 일부분으로서 하나 이상의 노드를 가질 수 있다. 그와 같이, MLC는 각각의 셀이 2개의 데이터 상태 중 하나로 프로그래밍되고 그리하여 하나보다 많은 비트를 저장할 수 있으므로 메모리 셀의 수를 증가시키지 않고도 더 높은 밀도 메모리의 제조를 가능하게 할 수 있다. 이들 MLC에 대해, 최하위 데이터 상태는 전형적으로는 소거 상태 이상으로 프로그래밍되지 않는다, 즉, 셀이 최하위 데이터 상태로 프로그래밍되면, 그것은, 예컨대, 프로그래밍 동작 동안 셀에 전하가 저장되게 하기보다는 여전히 소거 상태로 있는다. 다른 15개의 데이터 상태는 "비-소거" 상태라고 지칭될 수 있다.
일부 메모리 셀은 그것들이 받게 되는 프로그램 및 소거 사이클의 수량에 비례하는 마모를 갖는다. 즉, 메모리 셀 성능은 반복되는 사용에 따라 저하될 수 있다. 플래시 MLC가 저하되는 정도도 프로그래밍될 때 저장되는 전하량에 비례할 수 있다. 즉, 상대적으로 더 큰 전하량의 저장에 의해 표현된 데이터 상태는 상대적으로 더 작은 전하량의 저장에 의해 표현된 그들 데이터 상태보다 상대적으로 더 빨리 메모리 셀을 마모시키는 경향이 있다.
도 1은 본 발명의 하나 이상의 실시예에 따른 메모리를 포함하는 컴퓨팅 시스템 형태의 장치의 기능적 블록 선도;
도 2a 및 도 2b는 본 발명의 하나 이상의 실시예에 따른 인코딩 동작의 기능적 블록 선도;
도 3a 및 도 3b는 본 발명의 하나 이상의 실시예에 따른 디코딩 동작의 기능적 블록 선도;
도 4는 본 발명의 하나 이상의 실시예에 따라 3비트의 데이터를 4-비트 인덱스로 매핑하는 예시도;
도 5는 본 발명의 하나 이상의 실시예에 따라 3비트의 데이터를 5-비트 인덱스로 매핑하는 예시도;
도 6은 본 발명의 하나 이상의 실시예에 따른 장치와 관련되는 메모리 내구성 동작의 기능적 블록 선도.
일례의 방법은 제2 데이터 상태보다 메모리 셀 마모에 더 유해한 제1 데이터 상태로 표현된 디지트의 제1 수량을 갖는 m 디지트의 데이터를 수신하는 단계를 포함할 수 있다. m 디지트의 데이터는 제1 데이터 상태로 표현된 디지트의 제2 수량을 갖는 n 디지트의 데이터로 인코딩된다. 값 n은 값 m보다 더 크다. 제2 수량은 제1 수량보다 작거나 같다. 제3 수량은 제2 수량보다 더 크다. n 디지트의 데이터는 메모리 셀을 갖는 장치에 저장된다.
본 명세서의 이하의 상세한 설명에 있어서는, 그 일부를 형성하고 본 발명의 하나 이상의 실시예가 어떻게 실시될 수 있는지 예로써 도시되어 있는 수반 도면을 참조한다. 이들 실시예는 당업자가 본 발명의 실시예를 실시가능하게 하도록 충분히 상세하게 설명되고, 다른 실시예가 이용될 수도 있고 본 발명의 범위로부터 벗어남이 없이 프로세스, 전기적 및/또는 구조적 변경이 이루어질 수도 있다고 이해되는 것이다. 본 명세서에서 사용되는 바와 같이, 지시자 "N"은, 특히 도면에서의 참조 숫자에 관하여, 그렇게 지시된 다수의 특정 특징 중 하나 이상이 본 명세서의 하나 이상의 실시예로 포함될 수 있음을 나타낸다.
본 명세서에서 도면은 첫 번째 숫자 또는 숫자들이 도면 번호에 대응하고 나머지 숫자가 도면에서의 구성요소 또는 컴포넌트를 식별하는 번호 매김 관례를 따른다. 서로 다른 도면들간 유사한 구성요소 또는 컴포넌트는 유사한 숫자의 사용에 의해 식별될 수 있다. 인식될 바와 같이, 본 명세서의 다양한 실시예에서 나타낸 구성요소는 본 발명의 소정 수의 부가적 실시예를 제공하도록 부가, 교환 및/또는 제거될 수 있다. 부가적으로, 도면에서 제공된 구성요소의 비율 및 상대적 축척은 본 발명의 다양한 실시예를 예시하려는 의도이고, 제한의 의미로 사용되려는 것은 아니다.
메모리는 반복된 프로그램 및/또는 소거 사이클 후에 점점 저하되는 성능 및/또는 고장을 경험할 수 있는데, 흔히 마모라고 지칭된다. 메모리의 마모를 다루는 관용적 접근법은 소위 마모 평준화이다. 마모 평준화는 메모리 셀의 일부가 다른 것들보다 더 빨리 마모해 버리는 것을 회피하도록 메모리 셀을 더 균일하게 사용하려고 시도하고, 그로써 고립된 마모에 기인하는 스폿 고장을 방지하려 시도함으로써 메모리 내구성을 증가시킬 수 있다. 마모 평준화 기술은 "가비지 컬렉션" 기술과 같은 정적 및/또는 동적 마모 평준화 기술을 포함할 수 있다. 관용적 마모 평준화 기술은 전형적으로는 이미 발생한 마모의 어떤 측정에 응답한다. 예컨대, 마모 평준화 기술은 프로그램/소거 사이클 카운트 또는 다른 마모 메트릭에 기초하여 트리거링될 수 있다. 본 발명의 실시예 중 적어도 일부에 따른 장치 및 방법은, 마모가 일어나기 전에 그것을 회피함으로써와 같이, 다른 방식으로 메모리 마모에 접근하는 것이다.
도 1은 본 발명의 하나 이상의 실시예에 따라, 적어도 하나의 메모리 디바이스(104)를 포함하는 컴퓨팅 시스템(100) 형태의 장치의 기능적 블록 선도이다. 도 1에 예시된 실시예에 있어서, 메모리 디바이스(104), 예컨대, 솔리드 스테이트 드라이브(SSD), 썸 드라이브 등은 물리적 호스트 인터페이스(106), 컨트롤러(108), 예컨대, 프로세서, 제어 회로 등, 및 메모리(110), 예컨대, 하나 이상의 메모리 셀의 배열을 포함할 수 있다. 하나 이상의 실시예에 있어서, 컨트롤러(108)는 메모리(110) 및 물리적 인터페이스(106)를 포함하는 인쇄 회로 기판에 결합된 주문형 반도체(ASIC)일 수 있다.
도 1에 예시된 바와 같이, 컨트롤러(108)는 물리적 호스트 인터페이스(106)에 그리고 메모리(110)에 결합될 수 있다. 물리적 호스트 인터페이스(106)는 메모리 디바이스(104)와 호스트(102)와 같은 또 다른 디바이스 사이에 정보를 통신하는데 사용될 수 있다. 호스트(102)는 메모리 액세스 디바이스, 예컨대, 프로세서, 및/또는 다른 컴퓨팅 컴포넌트를 포함할 수 있다. 당업자는 "프로세서"가 병렬 프로세싱 시스템, 코프로세서 중 하나 이상 등과 같은 하나 이상의 프로세서를 의도할 수 있음을 인식할 것이다. 호스트의 예는 랩톱 컴퓨터, 퍼스널 컴퓨터, 디지털 카메라, 디지털 기록 및 재생 디바이스, 모바일 전화, PDA, 메모리 카드 리더, 인터페이스 허브 등을 포함할 수 있다. 일례로서 메모리 디바이스(104)는, 국한되는 것은 아니지만, 휴대용 SSD를 포함할 수 있다. 본 발명의 방법은, 예컨대, 컨트롤러(108) 및/또는 호스트(102)에 의해 구현될 수 있다.
하나 이상의 실시예에 대하여, 물리적 호스트 인터페이스(106)는 표준화된 인터페이스의 형태일 수 있다. 예컨대, 메모리 디바이스(104)가 컴퓨팅 시스템(100)에서의 데이터 저장에 사용될 때, 물리적 호스트 인터페이스(106)는 다른 커넥터 및 인터페이스 중에서도 사타(SATA), PCI 익스프레스(PCIe) 또는 범용 직렬 버스(USB)일 수 있다. 그렇지만, 일반적으로 물리적 호스트 인터페이스(106)는 물리적 호스트 인터페이스(106)를 위한 호환가능한 리셉터를 갖는 호스트(102)와 메모리 디바이스(104) 사이에 제어, 어드레스, 데이터 및 다른 신호를 건네기 위한 인터페이스를 제공할 수 있다.
컨트롤러(108)는 여러 다른 동작 중에서도 데이터를 읽고, 쓰고, 소거하도록 메모리(110)와 통신할 수 있다. 컨트롤러(108)는 하나 이상의 집적 회로 및/또는 개별 컴포넌트일 수 있는 회로를 가질 수 있다. 하나 이상의 실시예에 대하여, 컨트롤러(108)에서의 회로는 메모리(110)를 가로지르는 액세스를 제어하기 위한 제어 회로 및 호스트(102)와 메모리 디바이스(104) 사이의 번역 층을 제공하기 위한 회로를 포함할 수 있다. 그리하여, 메모리 컨트롤러는 적시에 적절한 I/O 커넥션에서 적절한 신호를 수신하도록 메모리(110)의 I/O 커넥션(도 1에서는 도시하지 않음)을 선택적으로 결합할 수 있다. 유사하게, 호스트(102)와 메모리 디바이스(104) 사이의 통신 프로토콜은 메모리(110)의 액세스에 요구되는 것과 다를 수 있다. 그 후 컨트롤러(108)는 메모리(110)로의 소망의 액세스를 달성하기 위해 호스트로부터 수신된 커맨드를 적절한 커맨드로 번역할 수 있다.
메모리(110)는 비-일시적 매체일 수 있고, 메모리 셀 예컨대 비-휘발성 메모리 셀의 하나 이상의 어레이를 포함할 수 있다. 어레이는 예컨대 NAND 아키텍처를 갖는 플래시 어레이일 수 있다. NAND 아키텍처에 있어서, "로우"의 메모리 셀의 제어 게이트는 액세스 예컨대 워드 라인과 결합될 수 있는 한편, 메모리 셀은 선택 게이트 소스 트랜지스터와 선택 게이트 드레인 트랜지스터 사이 "스트링"에서 소스 대 드레인 직렬로 결합될 수 있다. 스트링은 선택 게이트 드레인 트랜지스터에 의해 데이터 예컨대 비트 라인에 접속될 수 있다. 용어 "로우" 및 "스트링"의 사용은 메모리 셀의 선형 배열도 직교 배열도 내포하지 않는다. 당업자에 의해 인식될 바와 같이, 비트 라인 및 소스 라인에 메모리 셀의 접속 방식은 어레이가 NAND 아키텍처인지, NOR 아키텍처인지, 또는 어떤 다른 메모리 어레이 아키텍처인지에 의존한다. 본 발명의 방법 및 장치는 또한 전형적으로 예컨대 DRAM, PCRAM 및/또는 RRAM 메모리에서 사용되는 메모리 셀과 같이, 다른 메모리 셀과 사용 또는 구현될 수도 있다.
메모리(110)는 그룹화될 수 있는 메모리 셀의 하나 이상을 포함할 수 있다. 본 명세서에서 사용되는 바와 같이, 그룹은 페이지, 블록, 플레인, 다이, 어레이 전체, 또는 다른 메모리 셀 그룹과 같이 하나 이상의 메모리 셀을 포함할 수 있다. 예컨대, 일부 메모리 어레이는 메모리 셀의 블록을 구성하는 메모리 셀의 페이지 중 하나 이상을 포함할 수 있다. 블록 중 하나 이상은 메모리 셀의 플레인에 포함될 수 있다. 메모리 셀의 플레인 중 하나 이상은 하나의 다이에 포함될 수 있다. 일례로서, 128 GB 메모리 디바이스는 페이지당 데이터의 4314 바이트, 블록당 128 페이지, 플레인당 2048 블록, 및 디바이스당 16 플레인을 포함할 수 있다.
메모리(110)는 채널 중 하나 이상으로 포함할 수 있는데, 각각의 채널은 다이 중 하나 이상을 포함할 수 있다. 각각의 채널은 논리적 유닛 번호(LUN)를 사용하여 편성될 수 있다. 데이터를 메모리(110)에 쓸 때, 데이터는 소정 수의 채널 및 LUN을 가로질러 지출될 수 있다. 메모리 디바이스에 있어서, 물리적 페이지는 쓰기 및/또는 읽기의 유닛, 예컨대, 함께 또는 기능적 메모리 셀 그룹으로서 쓰이고/쓰이거나 읽혀지는 셀 중 하나 이상을 가리킬 수 있다. 짝수 페이지 및 홀수 페이지는 별개의 쓰기 및/또는 읽기 동작으로 쓰이고/쓰이거나 읽혀질 수 있다. 멀티레벨 셀(MLC)을 포함하는 실시예에 대하여, 물리적 페이지는 데이터의 상위 페이지 및 하위 페이지로 논리적으로 분할될 수 있다. 예컨대, 하나의 메모리 셀은 하나 이상의 비트를 데이터의 상위 페이지에 그리고 하나 이상의 비트를 데이터의 하위 페이지에 기여할 수 있다. 따라서, 데이터의 상위 페이지 및 하위 페이지는, 논리적 상위 페이지 및 논리적 하위 페이지가 둘 다 동일 물리적 페이지의 일부분이므로, 하나의 쓰기 및/또는 읽기 동작의 일부분으로서 쓰이고/쓰이거나 읽혀질 수 있다.
도 1의 실시예는 본 발명의 실시예를 모호하게 하지 않기 위해 예시되지 않은 부가적 회로를 포함할 수 있다. 예컨대, 메모리 디바이스(104)는 I/O 회로를 통해 I/O 커넥션을 통해 제공된 어드레스 신호를 래칭하도록 어드레스 회로를 포함할 수 있다. 어드레스 신호는 메모리(110)에 액세스하도록 로우 디코더 및 칼럼 디코더에 의해 수신 및 디코딩될 수 있다. 당업자는 어드레스 입력 커넥션의 수가 메모리(110)의 밀도 및 아키텍처에 의존할 수 있음을 인식할 것이다.
도 2a 및 도 2b는 본 발명의 하나 이상의 실시예에 따른 인코딩 동작의 기능적 블록 선도이다. 전하 저장 메모리 셀은 유한 내구성을 가질 수 있음이 관찰되어 왔다. 프로그램 및 소거 사이클의 수량은 내부에 저장된 데이터의 신뢰도에 영향을 미칠 수 있다. 메모리 셀이 받게 되는 프로그램/소거 사이클의 수량이 커질수록, 셀에 의해 저장된 데이터를 정확하게 결정하는 신뢰도가 더 낮아진다. 메모리 셀을 반복적으로 및/또는 더 높은 전압 레벨에서 반복적으로 프로그래밍하는 것은 메모리 셀의 물리적 저하를 야기하여 내구성이 줄어드는 결과를 초래할 수 있다. 본 명세서에서 사용되는 바와 같이 메모리 내구성은, 예컨대, 시간으로 측정될 수 있는 바와 같이 메모리의 유용한 수명의 듀레이션을 가리킨다.
이전의 일부 접근법은 일부 메모리 셀을 다른 것보다 더 빨리 마모시켜 버리지 않도록 이용가능한 메모리 셀을 가로질러 더 균일하게 프로그램/소거 사이클을 퍼뜨리려는 시도로 마모 평준화로 향해져 왔다. 본 발명의 하나 이상의 실시예에 의하면, 메모리 내구성을 증가시킬 또 다른 접근법은 시작할 메모리 셀의 프로그래밍/소거 사이클을 최소화하고/하거나, 상대적으로 더 적은 저장된 전하로 표현된 데이터 상태보다 더 빨리 메모리 셀을 마모시켜 버리려는 경향이 있는, 상대적으로 더 큰 저장된 전하로 표현된 데이터 상태로의 메모리 셀의 프로그래밍을 최소화하는 것이다.
그러한 빈도를 최소화하는 하나의 해법은 데이터를 저장하는데 사용된 메모리 셀 중 더 적은 셀이 상대적으로 더 큰 저장된 전하로 표현되는 데이터 상태로 프로그래밍되도록 저장된 데이터를 스큐잉하는(skew) 것이다. 본 명세서에서 사용되는 바와 같이 프로그래밍은 메모리 셀을 소망의 데이터 상태로 선택적으로 놓는 것을 가리키고, 소거 상태로부터 비-소거 상태로, 비-소거 상태로부터 소거 상태로, 및/또는 하나의 비-소거 상태로부터 또 다른 비-소거 상태로, 메모리 셀의 데이터 상태를 바꾸는 것을 포함할 수 있다. 비-소거 상태는 전형적으로는 메모리 셀 마모에 대해 소거 상태보다 더 유해하다. 또한 일부 데이터 상태는 메모리 셀이 어떻게 프로그래밍되는지에 기인하여, 예컨대, 메모리 셀이 (예컨대, "더 높은" 데이터 상태를 프로그래밍하기 위해) 더 많은 더 큰 듀레이션 및/또는 더 큰 전압으로 프로그래밍되면, 메모리 셀 마모에 대해 다른 것들보다 더 유해할 수 있다. 더욱, 메모리 셀을 소거해야 하는 프로세스는 또한 메모리 셀 마모에 기여할 수 있다. 서로 다른 데이터 상태는 각각의 특정 상태와 연관된 유해 정도를 기술하도록 서로 다르게 가중될 수 있다.
하나 이상의 구현에 의하면, "0" 데이터 상태는 소거 상태에 매핑되고 "1" 데이터 상태는 비-소거 상태에 매핑된다. 그렇지만, 본 발명의 실시예는 그렇게 한정되는 것은 아니며, "0" 데이터 상태가 비-소거 상태에 매핑되고 "1" 데이터 상태가 소거 상태에 매핑되는 구현에 적용될 수 있다.
당업자는, 본 발명의 다른 실시예에 있어서, 소거 상태가 메모리 셀 마모에 대해 비-소거 상태보다 더 유해할 수도 있음을 인식할 것이다. 예컨대, 본 명세서에서 설명된 방법은 또한, 비-소거 상태 대신에 소거 상태 저장 선호를 반영하기 위해, 비-소거 상태보다는 소거 상태를 최소화 또는 가중하도록 적용될 수 있다.
전형적으로, 소거 상태는 메모리 셀에 저장된 참조 전압 레벨(예컨대, 그라운드 전압 레벨, 대략 0 볼트 등)로 공칭 표현된 임계 전압 범위에 매핑될 수 있다. 예컨대, 소거 상태는 전하 없는 메모리 셀을 가리킬 수 있다. 소거 상태는 또한 음 전압 레벨 예컨대 -2 볼트, 또는 비-소거 상태의 것보다 더 적은 양 전압과 같은 비-참조 전압 레벨로 공칭 표현된 임계 전압 범위에 매핑될 수 있다. 비-소거 데이터 상태는 SLC 메모리 셀에 저장된 비-참조 전압 레벨(예컨대, 1 볼트 등과 같이, 그라운드와는 다른 전압 레벨)로 공칭 표현된 임계 전압 범위에 매핑될 수 있다.
특정 비-소거 상태는 MLC 메모리 셀에 저장된 여러 다른 비-참조 레벨 전압 레벨로 공칭 표현된 수개의 다른 임계 전압 범위 중 하나에 매핑될 수 있다. 적어도 하나의 실시예에 있어서, 비-소거 상태는 소거된 셀의 공칭 전압보다 상대적으로 더 큰 공칭 전압 레벨(예컨대, +1 볼트)에 매핑될 수 있다.
이하의 논의에 관하여, 본 발명의 장치 및 방법은 메모리 셀에 전하가 저장되어 있지 않음(즉, 대략 영 볼트)에 대응하는 소거 상태에 "0" 데이터 상태가 매핑되고 메모리 셀에 전하가 저장되어 있음(즉, 대략 1 볼트)에 대응하는 비-소거 상태에 "1" 데이터 상태가 매핑되는 것인 "0" 데이터 상태 및 "1" 데이터 상태, 2개의 데이터 상태만을 갖는 SLC와 관련되는 일례의 구현에 기초하여 주로 예시될 것이다.
더욱, 전술한 실시예에 있어서 "0" 데이터 상태(즉, 전하 없음 상태)는 메모리 셀 마모에 대해 "1" 데이터 상태보다 덜 유해하다고 가정된다. 그와 같이, 그러한 실시예에 있어서는 "0" 데이터 상태를 사용하여 메모리 셀에 데이터를 저장하는 것이 바람직하고, "1" 데이터 상태를 사용하여 메모리 디바이스에 데이터를 저장하는 것이 덜 바람직하다. 그렇지만, 본 발명의 실시예는 그렇게 한정되는 것은 아니며, 본 발명의 장치 및 방법은 메모리 셀의 마모에 대해 더 유해한 데이터 상태의 사용을 적게 하도록 추구함으로써 데이터 상태를 메모리 셀의 물리적 조건에 여러 다르게 매핑하는 것에 적응될 수 있음을 인식할 것이다.
메모리 디바이스에 저장될 데이터는 "1" 데이터 상태보다는 "0" 데이터 상태 사용에 대한 위에서 언급된 선호를 존중하도록 기대될 수 없다. 즉, 2진, 균일하게 분포된 랜덤 데이터로는, 데이터의 특정 디지트가 논리적 "0"일 확률이 50 퍼센트이고, 데이터의 특정 디지트가 논리적 "1"일 확률 또한 50 퍼센트이다. 즉, 데이터의 특정 디지트가 논리적 "0"이거나 논리적 "1"일 기회가 동일하다.
본 발명의 하나 이상의 실시예에 의하면, 저장될 데이터는 데이터가 제2 데이터 상태(예컨대, 이 예에서는 "1" 데이터 상태)로 표현된 디지트(예컨대, 비트)의 수량보다 크거나 같은 제1 데이터 상태(예컨대, 이 예에서는 "0" 데이터 상태)로 표현된 디지트(예컨대, 비트)의 수량을 갖게 제약되도록 인코딩될 수 있고, 여기서 제2 데이터 상태는 제1 데이터 상태보다 마모에 더 유해하다(본 명세서에서 사용되는 바와 같이, "제1" 및 "제2"는 하나의 데이터 상태를 서로 구별하는데 사용될 뿐이고, 데이터 상태의 어떠한 특정 순서 또는 수도 내포하는 것으로 읽혀서는 안 된다). 이러한 방식으로, 데이터가 메모리 디바이스 내에 직접(예컨대, 인코딩되지 않고) 저장된다면 "1" 데이터 상태로 프로그래밍되었을 것보다 더 적은 메모리 셀이 "1" 데이터 상태로 프로그래밍될 것이다. "1" 데이터 상태는, 이 예에서는, 메모리 셀의 마모에 더 유해한 것으로 기대되므로, "1" 비트의 수량보다 크거나 같은 "0" 비트의 수량을 갖는 인코딩된 데이터의 저장은 전체적으로 메모리 디바이스의 더 적은 마모의 결과를 초래해야 하고, 그래서 메모리 디바이스의 내구성을 증가시켜야 하는 것이다.
다양한 실시예에 의하면, 입력 데이터는 인코딩되지 않은 입력 데이터보다 더 유해한 데이터 상태로의 더 적은 프로그래밍을 야기할 인코딩된 데이터에서의 더 많은 0을 향해 데이터를 스큐잉하는 코드를 사용하여 메모리 디바이스에 저장하기 위해 인코딩된 데이터에 매핑될 수 있다. 본 발명의 장치 및 방법을 예시하도록 본 명세서에서 사용된 예는 그 예에 대해 위에서 제시된 가정 하에 0들이 덜 유해하므로 1들보다는 인코딩된 데이터에서의 0들을 선호하지만, 본 발명의 장치 및 방법은 1들이 메모리 셀에 덜 유해할 수 있는 다른 매핑(예컨대, "0" 데이터 상태는 메모리 셀에 저장된 공칭 양 전압에 대응하는 비-소거 상태에 매핑되고 "1" 데이터 상태는 메모리 셀에 저장된 영 또는 음 공칭 임계 전압에 대응하는 소거 상태에 매핑) 시나리오에 적용될 수 있다. 1들이 0들보다 메모리 셀에 덜 유해한 구현에 대해, 인코딩은 인코딩된 데이터에서의 더 많은 1들을 향해 데이터를 스큐잉하는 코드를 사용하여 메모리 디바이스에서의 저장을 위해 인코딩된 데이터에 입력 데이터를 매핑하도록 구조화될 수 있어서, 입력 데이터가 직접 저장되었을 경우보다 유해한 데이터 상태로의 더 적은 프로그래밍을 야기해야 하는 것이다.
SLC 메모리 셀에 있어서 1들보다 0들이 메모리 셀에 덜 유해한 것으로 가정되는 본 예로 되돌아가서, 랜덤 입력 데이터(예컨대, 원시 사용자 데이터)를 고려하면, 입력 데이터를 표현하는 메모리 디바이스에 저장될 코딩된 데이터에서의 1들에 상대적으로 0들의 분포를 스큐잉하는 기술이 제시된다. 본 발명의 기술이 가능한 데이터 상태 중에 균일하게 분포되는 랜덤 입력 데이터에 적용될 때 입력 데이터를 직접 저장하는 것에 대해서보다 더 유해한 데이터 상태로 더 적은 메모리 셀이 프로그래밍될 것이 기대되므로 메모리에 대한 더 적은 마모를 초래할 수 있다. 이러한 기술은 열거 코딩(enumerative coding)의 원리를 채용한다.
저장될 인코딩된 데이터로/로부터 입력 데이터의 인코딩 및 디코딩은 메모리 디바이스로의 통신 전에 호스트에서 및/또는 메모리 디바이스에서 하드웨어 및/또는 소프트웨어로 성취될 수 있다. 예컨대, 메모리 셀 및/또는 어레이 설계를 개조하는 것에 의존하지 않는 회로가 사용될 수 있다.
도 2a는 입력(214) 및 출력(216)을 갖는 인코더(212)를 도시하고 있다. 인코더(212)는 메모리 디바이스에서 그리고/또는 호스트에서 하드웨어 및/또는 소프트웨어로 구현될 수 있다. 인코더(212)는, 예컨대 호스트로부터, 본 명세서에서는 m-디지트 데이터워드(218)로 달리 지칭되고 도시된, m 디지트의 데이터를 수신할 수 있는데, 입력(214)에서 m 비트의 데이터일 수 있고 출력(216)에서 본 명세서에서는 n-디지트 코드워드(220)로 달리 지칭되고 도시된, n 디지트의 데이터를 발생시킬 수 있다. 본 명세서에서 사용되는 바와 같이, "디지트"는 2진 디지트("비트"), 16진 디지트와 같이 데이터의 디지트를 지칭하는데, 그 표현 멤버는 신호 레벨의 대응하는 범위 또는 대응하는 신호 레벨로 표현될 수 있다.
본 명세서에서 사용되는 바와 같이, "데이터워드"는 입력 데이터 예컨대 원시 사용자 데이터와 같이 데이터의 디지트의 조합을 지칭한다. "코드워드"는 데이터워드에 매핑된 인덱스에 의해서와 같이, 데이터워드를 인코딩하는 데이터의 디지트의 조합을 지칭한다. n-디지트 코드워드(220)는 m-디지트 데이터워드(218)에 고유하게 대응할 수 있고, 그래서 m-디지트 데이터워드(218) 대신에 메모리 디바이스에 저장될 수 있다. n-디지트 코드워드(220)는 원래의 m-디지트 데이터워드(218)보다 더 유해한 데이터 상태로 메모리 셀이 프로그래밍될 것을 요구할 더 적은 디지트를 갖도록 선택될 수 있으므로, 메모리 디바이스는 시간의 흐름에 따라 더 적은 마모를 일으키고 그로써 내구성을 증가시켜야 하는 것이다.
도 2b는 입력(224) 및 출력(226)을 갖는 인코더(222)를 도시하고 있다. 인코더(222)는 메모리 디바이스에서 그리고/또는 호스트에서 하드웨어 및/또는 소프트웨어로 구현될 수 있다. 인코더(222)는 입력(224)에서 정수(228)(R)를 수신하고, R 대신에 메모리 디바이스에 저장될 수 있는 인덱스 정수(230)(X)를 출력(226)에서 발생시킬 수 있다. 정수(228)(R)는 m-디지트 데이터워드의 10진 값일 수 있고 X는 입력 정수(R)에 고유하게 대응하는 n-디지트 코드워드의 10진 값일 수 있다.
도 3a 및 도 3b는 본 발명의 하나 이상의 실시예에 따른 디코딩 동작의 기능적 블록 선도이다. 도 3a는 입력(334) 및 출력(336)을 갖는 디코더(332)를 도시하고 있다. 디코더(332)는 메모리 디바이스에서 그리고/또는 호스트에서 하드웨어 및/또는 소프트웨어로 구현될 수 있다. 디코더(332)는 입력(334)에서 n-디지트 코드워드(320)를 수신하고 출력(336)에서 m-디지트 데이터워드를 발생시킬 수 있다. n-디지트 코드워드(320)는 m-디지트 데이터워드(318)에 고유하게 대응할 수 있다. n-디지트 코드워드(320)는 메모리 디바이스로부터 검색되어, 메모리 액세스의 결과로서 예컨대 호스트에 반환될 수 있는 m-디지트 데이터워드(318)를 발생시키도록 디코딩될 수 있다.
도 3b는 입력(340) 및 출력(342)을 갖는 디코더(338)를 도시하고 있다. 디코더(338)는 메모리 디바이스에서 그리고/또는 호스트에서 하드웨어 및/또는 소프트웨어로 구현될 수 있다. 디코더(338)는 입력(340)에서 인덱스 정수(330)(X)를 수신하고 출력(342)에서 정수(328)(R)를 발생시킬 수 있고, 여기서 R은 m-디지트 데이터워드의 값일 수 있다. X는 m-디지트 데이터워드에 고유하게 대응하는 n-디지트 코드워드의 값일 수 있다. 인덱스 정수(330)(X)는 메모리 디바이스로부터 검색되어, 메모리 액세스의 결과로서 반환될 수 있는 정수(328)(R)를 발생시키도록 디코딩될 수 있다.
도 4는 본 발명의 하나 이상의 실시예에 따라 4-비트 인덱스에 데이터의 3 비트를 매핑하는 것을 예시하고 있다. 본 발명의 하나 이상의 실시예에 의하면, 수량 n은 수량 m보다 더 크다. 예컨대, 2진 환경에 있어서, 메모리 디바이스에 실제로 저장된 n-디지트 코드워드는 입력 m-디지트 데이터워드보다 더 많은 비트를 갖는다. 그렇지만, 본 발명의 실시예는 m 및/또는 n에 대해 어느 특정 값으로도 한정되지 않는다. 즉, m은 본 명세서에 예시된 예에서 사용된 값보다 더 크거나 또는 더 작을 수 있다. 예컨대, m은 16(또는 어떤 다른 영-아닌, 양의 정수 수량)일 수 있고 n은 17(또는 m보다 더 큰 어떤 다른 영-아닌, 양의 정수 수량)일 수 있다.
더 적은 비트를 저장함으로써 달성된 것에 비해 내구성을 증가시키는 방법으로서 더 많은 비트를 저장하는 것이 처음에는 반직관적으로 보일 수 있다. 그렇지만, 도 4 및 5에서의 매핑 예는 본 발명의 장치 및 방법에 의해 달성가능한 효율의 예를 예시할 것이다. 도 4는 3비트의 입력 데이터(예컨대, m-비트 데이터워드)에 대한 가능한 비트 조합을 포함하는 (좌측의) 제1 테이블, 및 4비트의 인코딩된 데이터(예컨대, n-비트 코드워드)에 대한 가능한 조합을 포함하는 (우측의) 제2 테이블을 도시하고 있다. 가능한 3-비트 조합(446)은 제1 테이블의 하나의 칼럼에 도시되어 있고, 각각의 3-비트 조합에 대응하는 정수(444)는 제1 테이블의 또 다른 칼럼에 도시되어 있다. 가능한 4-비트 조합(448)은 제2 테이블의 하나의 칼럼에 도시되어 있고, 각각의 4-비트 조합에 대응하는 정수(452)는 제2 테이블의 또 다른 칼럼에 도시되어 있다. 부가적으로, 제2 테이블은 각각의 4-비트 조합이 1들의 수량보다 크거나 같은 0들의 수량을 포함하는지의 표시(450), 조합이 적어도 1들만큼 많은 0들을 포함하면 예에 대한 "Y" 그리고 조합이 적어도 1들만큼 많은 0들을 포함하지 않으면 아니오에 대한 "N"를 포함한다.
제1 및 제2 테이블의 로우 엔트리 사이에 그려진 라인, 예컨대, (454, 456)은 입력 데이터의 입력 3 비트를 직접(즉, 인코딩되지 않고) 저장하는데 관련되었을 것보다 더 적은 "1" 데이터 상태가 데이터의 인코딩된 4 비트(예컨대, n-비트 코드워드)를 저장하는데 관련될 수 있게 하는 일례의 그 사이의 매핑을 나타낸다. 예컨대, 3-비트 조합 "000"은 (454)로 나타낸 바와 같이 4-비트 조합 "0000"에 대응할 수 있다. 입력 3-비트 조합에 대응하여 SLC 메모리 디바이스에 실제로 저장될 4-비트 조합을 위해 하나의 부가적 메모리 셀이 요구되지만, 부가적 메모리 셀이 데이터의 입력 3 비트가 메모리 디바이스에 직접 저장되었을 경우보다 더 많은 유해한 데이터 상태(예컨대, 이 예에 대해서는 "1" 데이터 상태)로 프로그래밍되지 않음을 인식할 것이다.
제1의 7개 비트 조합의 각각에 대해 동일한 결과가 일어난다. 즉, 제1의 7개의 예시된 비트 조합의 각각에 대해, 3-비트 조합은 최상위 "0" 비트를 갖는 4-비트 조합에 매핑되게 된다. 그들 경우의 각각에 있어서, 4-비트 조합은 1들의 수량보다 크거나 같은 0들의 수량을 갖는다. 각각의 그러한 경우에 있어서, 최상위 "0" 비트는 가용 SLC 메모리의 부가적 부분을 사용하지만, 부가적 비트는 부가적 메모리 셀이 더 유해하다고 기대되는 데이터 상태로 프로그래밍되지 않으므로 메모리에 부가적 마모를 야기하지 않아야 하는 것이다. 즉, SLC 메모리 디바이스의 경우에 있어서, 부가적 덜 유해한 비트가 저장되는 메모리 셀은 더 유해한 비트가 저장되는 메모리 셀보다 프로그램/소거 사이클에 의해 야기되는 동일 마모를 반드시 받게 되는 것은 아니다.
입력 3-비트 조합 중 마지막(즉, "111")은, (456)으로 나타낸 바와 같이, 1들의 수량보다 크거나 같은 0들의 수량을 갖는 다음의 가용 4-비트 조합에 매핑되어 도 4에 도시되어 있다. 이 예에 있어서, 3-비트 조합 "111"은 4-비트 조합 "1000"에 매핑된다. 4-비트 조합 "1000"을 실제로 저장하는 것은 가용 메모리 공간의 부가적 비트를 사용하지만, SLC 디바이스에 있어서, 하나의 메모리 셀만이 마모에 더 유해하다고 기대되는 데이터 상태로 프로그래밍됨을 인식해야 한다. 입력 3-비트 조합 "111"이 SLC 메모리에 실제로 저장된다면, 그때 3개의 메모리 셀은 더 유해한 데이터 상태로 프로그래밍되어, 더 유해한 데이터 상태로 프로그래밍된 2개의 부가적 메모리 셀에 더 많은 마모를 야기할 것이다.
도 4의 좌측 테이블에 도시된 8개의 3-비트 조합은 총 24 비트(즉, 8x3=24)이고, 비트의 반(즉, 12)은 0이고 비트의 반(즉, 12)은 1인 24 비트를 포함하고 있음을 인식해야 한다. 원시 입력 데이터는 균일하게 분포된 랜덤 데이터로 모델링될 수 있고 8개의 3-비트 조합의 각각은 그러한 랜덤 데이터로 일어날 가능성이 동등하므로, 인코딩되지 않은 입력 데이터를 SLC 메모리에 저장하는 것은 평균적으로 50%의 메모리 셀이 더 유해한 데이터 상태로 프로그래밍되는 결과를 초래할 것이다. 그렇지만, 대신 각각의 m-디지트 데이터워드에 대응하는 n-디지트 코드워드를 저장함으로써, 메모리 셀의 반 미만이 더 유해한 데이터 상태로 프로그래밍될 것으로 기대될 것이다.
예시된 예에 있어서, SLC 메모리가 입력 데이터의 8개의 가능한 3-비트 조합에 매핑되는 인코딩된 4-비트 조합의 각각의 하나의 인스턴스를 저장한다면, 8개의 3-비트 조합 모두에 대응하는 인코딩된 데이터를 저장하기 위해 10개의 메모리 셀만이 더 유해한 데이터 상태로 프로그래밍될 것이다. 그것을 균일하게 분포된 랜덤 데이터로까지 확장하면, 평균적으로 메모리 셀의 10/24 또는 42%만이 더 유해한 데이터 상태로 프로그래밍될 것으로 기대될 수 있다. 그래서, m-디지트 세그먼트 예컨대 m-디지트 데이터워드로 파싱될 수 있는, 입력 데이터에 대응하는 인코딩된 데이터를 저장하고 그래서 대응하는 n-디지트 세그먼트 예컨대 n-디지트 코드워드가 저장되게 하기 위해 평균적으로 더 적은 메모리 셀이 더 유해한 상태로 프로그래밍되어야 하는 것이므로 메모리 디바이스는 더 적은 마모를 겪어야 하는 것이다. 즉, 3 비트의 입력 데이터를 저장하는 대신에 4-비트 인코딩을 저장하는 것은 평균적으로 메모리 셀의 16%(100%-84%) 더 적은 마모, 및 그리하여 더 큰 메모리 내구성의 결과를 초래해야 하는 것이다.
데이터를 검색함에 있어서, 저장된 n-디지트 코드워드는 대응하는 m-디지트 입력 데이터를 발생시키도록 디코딩될 수 있다. 인코딩 및 디코딩은 또한 각각의 m-디지트 데이터워드 및 n-디지트 코드워드에 대해 정수 값을 사용하는 정수 계산을 사용하여 행해질 수 있다.
도 5는 본 발명의 하나 이상의 실시예에 따라 3 비트의 입력 데이터를 5-비트 조합(입력 데이터가 매핑될 수 있는 가능한 디지트 조합 세트인 인덱스)에 매핑하는 것을 예시하고 있다. 더욱더 많은 비트를 갖는 조합을 저장함으로써 더 큰 내구성이 달성될 수 있다. 비용은 부가적 비트를 저장하기 위해 가용 메모리 디바이스 용량을 더 사용하는 것이다. 그렇지만, 부가적 메모리 셀은 더 유해한 데이터 상태로 프로그래밍되지 않고 그래서 용량의 부가적 사용은 메모리 셀 상의 부가적 마모를 야기하지 않아야 하는 것이다. 실제로, 메모리 셀의 마모는 더 줄어들어서, 메모리 내구성을 더 증가시켜야 하는 것이다.
도 5는 3비트의 입력 데이터에 대한 가능한 조합을 포함하는 (좌측의) 제1 테이블, 및 5비트의 인코딩된 데이터(예컨대, n-비트 코드워드)에 대한 가능한 조합을 포함하는 (우측의) 제2 테이블을 도시하고 있다. 가능한 3-비트 조합(546)은 제1 테이블의 하나의 칼럼에 도시되어 있고, 각각의 3-비트 조합에 대응하는 정수(544)는 제1 테이블의 또 다른 칼럼에 도시되어 있다. 가능한 5-비트 조합(558)은 제2 테이블의 하나의 칼럼에 도시되어 있고, 각각의 5-비트 조합에 대응하는 정수(562)는 제2 테이블의 또 다른 칼럼에 도시되어 있다. 부가적으로, 제2 테이블은 각각의 5-비트 조합이 1들의 수량보다 크거나 같은 0들의 수량을 포함하는지의 표시(560), 조합이 적어도 1들만큼 많은 0들을 포함하면 예에 대한 "Y" 그리고 조합이 적어도 1들만큼 많은 0들을 포함하지 않으면 아니오에 대한 "N"를 포함한다.
제1 및 제2 테이블의 로우 엔트리 사이에 그려진 라인, 예컨대, (564, 565, 566)은 입력 데이터의 입력 3 비트를 저장하는데 관련되었을 것보다 더 적은 "1" 데이터 상태가 데이터의 인코딩된 5 비트(예컨대, n-비트 코드워드)를 저장하는데 관련될 수 있게 하는 가능한 그 사이의 매핑을 나타낸다. 예컨대, 3-비트 조합 "000"은 (564)로 나타낸 바와 같이 5-비트 조합 "00000"에 대응할 수 있다. 입력 3-비트 조합에 대응하여 SLC 메모리 디바이스에 실제로 저장될 5-비트 조합을 위해 2개의 부가적 메모리 셀이 요구되지만, 부가적 메모리 셀이 3비트의 입력 데이터가 메모리 디바이스에 직접 저장되었을 경우보다 더 많은 유해한 데이터 상태(예컨대, 이 예에 대해서는 "1" 데이터 상태)로 프로그래밍되지 않음을 인식할 것이다.
제1의 6개 비트 조합의 각각에 대해 동일한 결과가 일어난다. 즉, 제1의 6개의 조합의 각각에 대해, 3-비트 조합은 "0"으로 설정된 2개의 최상위 비트를 갖는 5-비트 조합에 매핑되게 된다. 그들 경우의 각각에 있어서, 5-비트 조합은 1들의 수량보다 크거나 같은 0들의 수량을 갖는다. 각각의 경우에 있어서, 최상위 "0" 비트는 가용 SLC 메모리의 부가적 부분을 사용하지만, 부가적 비트는 부가적 메모리 셀이 더 유해하다고 기대되는 데이터 상태로 프로그래밍되지 않으므로 메모리에 부가적 마모를 야기하지 않아야 하는 것이다. 즉, SLC 메모리의 경우에 있어서, 부가적 비트가 저장되는 메모리 셀은 프로그램/소거 사이클을 반드시 받게 되는 것은 아니다. 3-비트 조합의 각각은 1들보다 많은 0들을 갖는 5-비트 조합에 매핑된다.
좌측 테이블에서의 마지막 2개의 엔트리의 매핑은 도 4에 관해 설명된 것과 유사한 방식으로 그렇지만 부가적 선행 "0" 비트를 갖는 가지면서 우측 테이블에서의 조합에 매핑될 수 있다. 그렇지만, 부가적 비트를 갖는 조합을 사용하는 비용과 교환으로 어떠한 추가적 효율도 얻어지지 않는다. 추가적 내구성을 원하면, 더 유해한 데이터 상태로 표현된 더 적은 비트를 갖는 그들 조합을 이용하도록 매핑 스킴이 개조될 수 있다.
예컨대, 도 5에 도시된 바와 같이, 입력 3-비트 조합 "110"은 5-비트 조합 "01000"에 매핑될 수 있고 입력 3-비트 조합 "111"은 5-비트 조합 "10000"에 매핑될 수 있고, 각각의 인코딩된 조합은 하나의 더 유해한 데이터 상태만을 사용하고, 그로써 입력 데이터를 직접(즉, 인코딩되지 않고) 저장하는데 요구될 5개의 메모리 셀보다는, 더 유해한 데이터 상태로 프로그래밍되는 SLC 메모리에서의 2개의 메모리 셀만을 사용한다. 그리하여, 다양한 3-비트 조합의 각각에 대응하는 8개의 5-비트 조합의 각각의 하나의 인스턴스를 저장하기 위해 더 유해한 상태로 프로그래밍될 필요가 있는 SLC 메모리에서의 메모리 셀의 총 수량은, 12개 대신에, 이제 단지 9개이다. 즉, 균일하게 분포된 랜덤 입력 데이터를 가정하면, 3-비트 입력 데이터를 저장하는 대신에 5-비트 조합을 저장하는 것은 평균적으로 메모리 셀의 25%(100%-75%) 더 적은 마모, 및 그리하여 더 큰 메모리 내구성의 결과를 초래해야 하는 것이다.
도 6은 본 발명의 하나 이상의 실시예에 따른 장치를 관련시키는 메모리 내구성 동작의 기능적 블록 선도이다. 본 발명의 하나 이상의 실시예에 의하면, m-디지트 데이터워드(618)(즉, m 디지트의 데이터)는 n-디지트 코드워드(620)(즉, n 디지트의 데이터)를 발생시키도록 인코더(612)에 입력될 수 있다. 여기서 n은 m보다 더 크다. n-디지트 코드워드(620)는 메모리(604)에 통신되고 저장될 수 있다. 즉, 더 작은 m-디지트 데이터워드(618) 대신에 더 큰 n-디지트 코드워드(620)가 통신 및/또는 저장된다. 나중에, 더 큰 n-디지트 코드워드(620)는 더 작은 원래의 m-디지트 데이터워드(618)를 발생시키기 위해 메모리(604)로부터 검색되고, 통신되어 디코더(632)에 입력될 수 있다.
앞서 언급된 바와 같이, 더 많은 메모리가 m-디지트 데이터워드(618) 대신에 n-디지트 코드워드(620)를 저장하도록 사용될 것이다. 그렇지만, m-디지트 데이터워드(618)와 n-디지트 코드워드(620) 사이의 매핑을 제약함으로써, n-디지트 코드워드(620)를 저장하는 것이 원래의 m-디지트 데이터워드(618)를 저장하는 것보다 메모리(604)의 메모리 셀을 덜 마모시키는 것이고, 그로써 마모를 줄이고 내구성을 증가시킬 수 있다.
m 디지트의 데이터와 대응하는 n 디지트의 데이터 사이를 인코딩 및 디코딩하는 하나의 가능한 방식은 열거 코딩을 사용하는 것에 의한다. 본 발명의 다양한 실시예에 의하면, 열거 코딩은 초기 데이터 압축뿐만 아니라 초기 데이터 팽창(즉, 데이터 압축의 역)에 대해 채용될 수 있다. 열거 코딩 데이터 압축 전략은 세트 S의 원소를 표현하기 위해
Figure 112014023444893-pct00001
비트만을 필요로 하고, 여기서
Figure 112014023444893-pct00002
는 세트 S 내 원소의 수이다. 예컨대, 세트가 128개의 원소를 가지면, 세트 S의 128개 원소 중 어느 것의 로케이션은 27=128이므로 7 비트로 표현될 수 있다. 즉, 7 비트의 다양한 조합은 세트 S의 128개의 원소 중 고유한 하나에 대응한다. 세트 S의 각각의 원소가 n 디지트의 데이터이면,
Figure 112014023444893-pct00003
의 압축비가 달성될 수 있다. 그러한 압축을 달성하기 위해, 효율적 인코딩 및 디코딩 스킴이 세트 S의 원소에 필요로 된다. 세트 S의 원소가 적절히 순서 정해지면, 그러한 순서에 관해 효율적 인코딩 및 디코딩 스킴을 고안하는 것이 가능하다.
본 발명에 관하여, 열거 코딩 데이터 팽창 기술이 이용될 수 있다. 특정 길이 n이 선험적으로 선택될 수 있어, 입력 길이 m이 n보다 더 작도록 제약한다. 본 발명의 하나 이상의 실시예에 의하면, 입력 m 디지트의 데이터는 더 긴 n 디지트의 데이터에 대응하는 더 짧은 열거 인코딩 수량이다. 그렇지만, 본 발명에 의하면, 더 짧은 m 디지트의 데이터보다는 더 긴 n 디지트의 데이터 코드워드가 통신 및/또는 저장될 수 있다.
예컨대, 2진 데이터를 저장하는 SLC 메모리 디바이스에 대해 메모리 내구성 기술에 사용하기 위한 n으로서 17이 선택될 수 있다. 그러한 n-디지트 코드워드에서의 (예컨대, 더 유해한 상태로 표현된) 1들의 수가 2개의 한계 w1과 w2 사이에 있어야 한다는 제약이 부과될 수 있다. 예컨대, w1과 w2의 값은 w1=0이고 w2=8이도록 선택될 수 있다. 그렇지만, 이들 파라미터의 값은 여기서 예시적 목적으로 선택된 것들과는 다를 수 있다. 이러한 특정 제약은 각각의 17-비트 코드워드가 덜 유해한 소거 상태 예컨대 "0"의 비트를 더 유해한 비-소거 상태 예컨대 "1"보다 더 많이 또는 적어도 그만큼 갖도록 강제할 것이다. 일반적으로, w1과 w2는 다음의 제약: w1≥0 및 w2 ≤n을 만족시키도록 임의로 설정될 수 있다.
이러한 예에 있어서, 그 후 위에서 언급된 제약, 즉, 더 유해한 데이터 상태로 표현된 0 내지 8 비트를 갖는 그들 17 비트 조합을 만족하는 n-디지트 코드워드의 세트 S가 발생된다. 더 유해한 논리적 1 상태로 표현된 0 내지 7 비트를 포함하는 17-비트 코드워드의 세트의 크기는
Figure 112014023444893-pct00004
로 표시될 수 있다. 다음에,
Figure 112014023444893-pct00005
가 계산될 수 있다.
Figure 112014023444893-pct00006
가 분수이면,
Figure 112014023444893-pct00007
보다 작은 가장 큰 정수, 즉, floor(X)가 X보다 작거나 같은 가장 큰 정수를 의미하는 floor가 결정될 수 있다. 입력 데이터워드의 크기 m은,
Figure 112014023444893-pct00008
가 보장되는 2진 데이터에 대해 비율 m/n 코드가 구성될 수 있으므로, floor(
Figure 112014023444893-pct00009
)와 같도록 설정될 수 있다.
들어오는 데이터는 인코딩을 위해 m-비트 데이터워드로 파싱될 수 있다. 즉, 어떠한 임의의 m-비트 2진 데이터워드라도 세트 S의 원소인 17-비트 코드워드 중 고유한 하나에 매핑될 수 있다. 이것은 비율 m/n 코드가 가능하게 하는데, m/n은 코드워드에서 더 유해한 데이터 상태, 즉, 1들로 표현된 비트의 수량에 대한 상기 제약으로 가능한 가장 높은 비율이다.
다음의 논의는, n과 m이 위에서 설명된 바와 같이 결정되어 있을 때, SLC 메모리 셀을 이용하는 메모리 디바이스에 대해 입력 m-비트 데이터워드와 n-비트 코드워드 사이를 대응시키는 인코딩 및 디코딩 기술을 포함하는, 메모리 내구성을 위해 메모리 디바이스를 동작시키는 방법의 하나의 가능한 구현에 관한 것이다. 본 발명의 장치 및 방법의 SLC 애플리케이션으로서, 데이터는, 예컨대, 16진 디지트 또는 비트의 서브-콤비네이션보다는 개개의 비트의 항으로 표현된다. 그렇지만, 본 발명의 실시예는 이러한 특정 기술에 한정되는 것은 아니며 다른 방법론, 계산 및/또는 매핑 기술에 따라 구현될 수 있다.
n-비트 코드워드가 메모리 디바이스로부터 검색되는 것과 함께 일어날 수 있는 것과 같이, 원래의 m-비트 데이터워드를 재발생시키도록 n-비트 코드워드를 디코딩하는 것은 다음과 같이 구현될 수 있다. 가능한 코드워드의 세트 S에서 n-비트 코드워드 b 1 b 2 ... b n 을 고려할 때, 좌측으로부터 우측으로(예컨대, 최상위 비트로부터 최하위 비트로) n-비트 코드워드를 스캐닝하는 것이 시작될 수 있다. 모든 비트 bi마다, 수량 qi가 다음과 같이 결정될 수 있다:
Figure 112014023444893-pct00010
여기서, w 1 w 2 를 포함하는 그 사이의 각각의 p에 대해, l(p,i)=p-( b 1 b 2 ... b n 에서의 처음 (i-1)개의 비트의 합). 그 후 모든 그들 계산된 qi 값은 S에서의 코드워드 b1b2...bn에 대응하는 원래의 m-비트 2진 데이터워드의 값 R을 얻도록 다음과 같이 합산될 수 있다:
Figure 112014023444893-pct00011
. qi의 결정은 i 번째 비트가 1(즉, bi=1)일 때에만 일어남을 관찰하라. bi=0일 때, qi 또한 0일 것이므로 액션이 필요하지 않다. 그래서, 디코딩은, 예컨대, 모든 수량이 상수이고 필요에 따라 미리-결정 및 검색될 수 있는 2개의 "for" 루프를 사용하여 성취될 수 있다. m-비트 데이터워드는 관용적 방식으로 값 R으로부터 유도될 수 있다.
n-비트 코드워드가 메모리 디바이스에 저장되는 것과 함께 일어날 수 있는 것과 같이, n-비트 코드워드를 발생시키도록 원래의 m-비트 데이터워드를 인코딩하는 것은 다음과 같이 수행될 수 있다. 변수 L은 R이 인코딩될 원래의 m-비트 데이터워드의 정수 등가인 경우의 R로 설정될 수 있다. 그 후, 카운터 i=1로 시작하여,
Figure 112014023444893-pct00012
가 결정될 수 있고, 여기서 l(p,i)=p-( b 1 b 2 ... b n 에서의 처음 (i-1)개 비트의 합). R이 Si보다 더 크면, 그때 bi는 1과 같게 설정된다. i가 n을 초과할 때까지 R은 R-Si와 같도록 업데이트되고, 카운터 i는 증분되고, Si의 반복 결정은 계속된다. R이 Si보다 더 크지 않으면, 그때 bi는 "0"과 같게 설정된다. i가 n을 초과할 때까지 R은 R-Si와 같도록 업데이트되고, i는 증분되고, Si의 반복 결정은 계속된다.
위의 논의는 SLC 메모리 셀과 2진 데이터의 특수 경우에 관한 것이다. 아래의 논의는, 예컨대 MLC 메모리 셀을 이용하는 메모리 디바이스에 적용가능할 수 있는 바와 같이, 입력 m-디지트 데이터워드와 n-디지트 코드워드 사이를 대응시키는 인코딩 및 디코딩 기술을 포함하는, 메모리 내구성을 위한 방법의 가능한 또 다른 구현에 관한 것이다. 본 발명의 실시예는 이러한 특정 기술에 한정되는 것은 아니며, 메모리 내구성을 위한 방법이 다른 방법론, 계산 및/또는 매핑 기술에 따라 구현될 수 있다.
2진 데이터 및 SLC 메모리 셀에 대해 도 4 및 5에 관하여 위에서 논의된 것과 유사하게 더 유해한 데이터 상태로 표현되는 더 적은 비트를 갖도록, m-디지트 데이터워드 대신에 저장되는 n-디지트 코드워드 세트를 스큐잉하는 것은 그 자체로 인코딩된 데이터에서의 다중-상태의 각각의 분포({00, 01, 10, 11}에서의 4개의 데이터 상태, {000, 001, 010, 011, 100, 101, 110, 111}에서의 8개의 데이터 상태 등)를 개조하여 MLC 디바이스의 내구성을 개선할 수 있다.
MLC 스토리지에 있어서, 데이터 상태는 여러 다른 전압 레벨로 쓰일 수 있고 그래서 동등하게 유해한 것은 아니다. 앞서 논의된 2진 방법론 예에 대하여, 더 유해한 1의 데이터 상태가 제한되었다. MLC 셀에 대해 1의 데이터 상태를 제한하는 것은, 디지트 1이 3개 이상의 유해한 상태의 일부분일 수 있으므로, 2 비트 MLC에 대한 10, 01, 및 11과 같은 영-아닌(예컨대, 덜 유해한) 데이터 상태의 빈도를 간접적으로 제한할 수 있다. 그렇지만, 더 나은 접근법은 각각의 그룹핑을 멀티-디지트 알파벳의 멤버(예컨대, 2 비트 MLC에 대해 {0, 1, 2, 3})로서 처리함으로써 다중 비트의 그룹핑(예컨대, 2 비트 MLC에 대한 11, 10 및 01)의 빈도에 직접 영향을 미치는 것인데, 아래에 더 논의된다. 그래서, 이들 부가적 데이터 상태 특성을 고려함으로써, SLC 메모리 셀의 마모 내성을 개선하는데 적용된 것들보다 더 효율적으로 MLC 프로그래밍에 대한 데이터 상태를 더 명백하게 제어하는 MLC 성형 코드를 구현하는 것이 가능하다.
열거 코딩은 순서 정해진 세트 S에서의 원소가 순서 정해진 세트 S 내 로케이션(예컨대, 인덱스)에 대한 참조로서 인코딩되는 것과 관련된다. 여러 다른 순서가 가능하지만, 사전식 순서는 S의 멤버에 대한 효율적 인코딩 및 디코딩 알고리즘의 전개를 가능하게 한다. 각각의 문자-숫자 디지트의 "알파벳"이 M개의 가능한 데이터 상태{1, 2,..., M}로 구성되고, 각각이 M개의 데이터 상태 중 각자의 하나로 표현된다고 하고, 그리고 코드워드가 n-디지트 길이라고 하면, 각각의 코드워드에서의 알파벳에 대해 미리-정의된 가중치-분포{w1, w2,..., wM}를 부과하는 인코딩 및 디코딩 알고리즘이 전개될 수 있다. 환언하면, w1 + w2 +...+ wM = n이다. 그러한 세트
Figure 112014023444893-pct00013
의 크기는 다항식을 사용하여 계산될 수 있다:
Figure 112014023444893-pct00014
식은 다음과 같이 이항식의 곱으로 표현될 수 있다:
Figure 112014023444893-pct00015
각각의 레벨이 크기 M의 알파벳의 멤버로서 다뤄지는 경우, M 데이터 상태, 즉, SLC에서 M=2 데이터 상태 {1, 2}, 셀당 2 비트 MLC에서 M=4 데이터 상태 {1, 2, 3, 4}, 셀당 3 비트 MLC에서 M=8 데이터 상태 {1, 2, 3,..., 8}, 또는 단순히 셀당 M-데이터 상태 경우에서 M=M 데이터 상태 {1, 2, ..., M}을 가정하라. 가중치 분포 {w1, w2, ..., wM}이 각각의 코드워드에 부과되는 n-디지트 코드워드의 세트 S를 고려하라. 세트
Figure 112014023444893-pct00016
의 크기가 결정될 수 있다. m = floor(
Figure 112014023444893-pct00017
)로 놓음으로써, 어떠한 m-디지트 데이터워드라도 S 내 n-디지트 코드워드의 로케이션을 표현한다. 이것은 비율 m/n 코드를 가능하게 하고, 이 경우 코드-비율은 레벨당 비트로 표현된다. 코드-비율은
Figure 112014023444893-pct00018
을 결정함으로써 비트당 비트로 표현될 수 있다.
전체 리스트 S는 (예컨대, 메모리 디바이스에서) 구축 또는 유지될 필요가 없다. 즉, m-디지트 데이터워드 및 대응하는 n-디지트 코드워드는 세트 S를 저장하기 위해 메모리 공간을 사용하는 것을 회피하도록 컴퓨팅으로 결정될 수 있다. 그렇지만, 본 발명의 실시예는 그렇게 한정되는 것은 아니며, m-디지트 데이터워드 및 S의 원소로서 소망의 제약을 만족시키는 그들 n-디지트 코드워드가 들어있는 저장된 테이블로 구현될 수 있다. m-디지트 데이터워드는 매핑 또는 규칙에 의해 n-디지트 코드워드로 직접 그리고 역으로도 직접 매핑될 수 있다. 그렇지만, 매핑은 n-디지트 코드워드가 순서 정해진 리스트로 놓여 있다는 암시적 지식에 의존한다.
다중-상태 방법론으로 계속하면, n-디지트 코드워드에 있어서, 각각의 디지트는 2진 시퀀스를 발생시키기 위해 그 대응하는 2진 투플로 교체될 수 있다. 알파벳을 {1, 2, ..., M}으로서 볼 때 특정 이점이 실현될 수 있는데, 알파벳의 멤버는, 2진 형태로 변환될 때, 사전식 순서에 따라야 할 필요가 있다는 요구가 없다는 것을 포함한다. 이것은 데이터 상태의 그레이-코드 순서, 또는 그 사항에 대한 어떠한 다른 순서라도 감안한다. 또 다른 이점은 M이 2의 거듭제곱일 필요가 없어 셀당 3.8 비트 등과 같은 경우에서의 코딩을 감안한다는 것일 수 있다.
n-디지트 코드워드는 사전식으로 순서 정해진 리스트에서 n 디지트의 스트링 x이다. n-디지트 코드워드는
Figure 112014023444893-pct00019
를 결정함으로써 유도될 수 있고, 여기서 I는 n-디지트 코드워드의 정수 값이고, nS(x1, x2,..., xj -1, m)는 x1, x2,..., xj -1, m으로 시작되는 n-디지트 코드워드의 수이다. 인덱스 j는 코드워드가 좌측으로부터 우측으로 스캐닝될 때 검토되고 있는 현재 디지트 위치이다. 즉, 코드워드가 x1x2x3....xm으로 표현되면 그리고 디지트 x6가 현재 검토되고 있으면, 그때 j=6이다.
알파벳이 그 안에 M개의 디지트를 가지므로, xj는 알파벳 {1, 2, 3,..., M}으로부터 그들 M개의 문자 중 어느 하나일 수 있다. 수량 M은 변수 m과 구별된다. 수량 M은 각각의 위치에 대한 가능성의 수(예컨대, 알파벳에서의 디지트의 수)이다. 예컨대, xj=6에 대해, x1x2x3...xj -1 1로 시작하는 모든 워드, x1x2x3...xj -1 2로 시작하는 모든 워드, x1x2x3...xj -1 3으로 시작하는 모든 워드, x1x2x3...xj -1 4로 시작하는 모든 워드, x1x2x3...xj -1 5로 시작하는 모든 워드를 카운트한다. 모든 그들 워드는 x1x2x3...xj -1 6으로 시작하는 워드에 선행할 것이다. 이것이 반영하는 것은 예컨대 사전에서 워드가 어떻게 배열되어 있는가이다.
그래서, x1x2x3...xj -1 6으로 시작하는 워드의 로케이션은 x1x2x3...xj -1 1로 시작하는 워드, x1x2x3...xj -1 2로 시작하는 워드, x1x2x3...xj -1 3, ...,으로 시작하는 워드, x1x2x3...xj -1 4로 시작하는 워드, x1x2x3...xj -1 5로 시작하는 워드의 총 카운트를 초과할 것인데 모든 이들 워드가 리스트에서 앞서 나타날 것이기 때문이다. 이것은 그 내부 합산이 위 식에서 하고 있는 것이다. xj=6의 특정 예에 있어서, 그것이 합산이 1로 시작하여 xj-1=5까지 가는 이유이다. 이들 합산은 코드워드가 위치 번호 1, 즉, j=1로부터 코드워드에서의 마지막 위치, 즉, j=m으로까지 쭉 스캐닝될 때 계산된다.
MLC 코딩 방법에 관하여, 정수 i를 인코딩하기 위해, k=1:n 동안, i>nS(x1, x2, ..., xk -1, m-1) 이고 i≤nS(x1, x2, ..., xk -1, m)이면, xk는 m과 같게 설정되도록 알파벳 {1, 2, 3,..., M}에 속하는 문자 m를 찾는다. 예컨대 "for 루프"로서, 카운터 i가 i-nS(x1, x2, ..., xk -1, m-1)와 같게 조절되고 결정이 반복적으로 결정될 수 있다. 이것은 n개의 데이터 상태 x1x2...xn의 스트링을 출력할 것이다. 최종적으로, 각각의 레벨은 2진 스트링을 얻기 위해 그 대응하는 2진 투플로 교체될 수 있다.
본 명세서에서는 특정 실시예가 예시되고 설명되었지만, 나타낸 특정 실시예에 대해 동일 결과를 달성하도록 계산된 배열이 대체될 수 있음을 당업자는 인식할 것이다. 이러한 개시는 본 발명의 여러 실시예의 적응 또는 변종을 망라하려는 의도이다. 위의 설명은 제한적 방식이 아니라 예시적 방식으로 이루어졌음을 이해해야 한다. 위 실시예들의 조합, 및 본 명세서에서 구체적으로 설명되지는 않은 다른 실시예가 당업자에게는 위 설명을 검토할 때 명백하게 될 것이다. 본 발명의 여러 실시예의 범위는 위 구조 및 방법이 사용되는 다른 애플리케이션을 포함한다. 그러므로, 본 발명의 여러 실시예의 범위는 첨부된 청구범위와 더불어 그러한 청구범위가 권리를 갖는 균등물의 전 범위를 참조하여 결정되어야 한다.
이상의 상세한 설명에 있어서는, 개시를 능률화하려는 목적으로 여러 특징이 단일 실시예에 함께 그룹화되어 있다. 본 명세서의 이러한 방식은 본 발명의 개시된 실시예가 각각의 청구항에서 명시적으로 열거되는 것보다 더 많은 특징을 사용해야 한다는 의도를 반영하는 것으로 해석되려는 것은 아니다. 오히려, 이하의 청구범위가 반영하는 바와 같이, 진보된 당해 사항은 단일의 개시된 실시예의 모든 특징보다 더 적은 특징에 있는 것이다. 그러므로, 이로써 이하의 청구범위는 상세한 설명 내에 편입되는 것이고, 각각의 청구항은 별개의 실시예로서 독립하여 있는 것이다.

Claims (26)


  1. 방법으로서,
    제2 데이터 상태보다 메모리 셀 마모에 더 유해한 제1 데이터 상태로 표현된 디지트의 제1 수량을 갖는 m 디지트의 데이터를 수신하는 단계;
    상기 m 디지트의 데이터를 n 디지트의 데이터로 인코딩하는 단계; 및
    메모리 셀을 갖는 장치에 상기 n 디지트의 데이터를 저장하는 단계를 포함하되,
    상기 n 디지트의 데이터는 상기 제1 데이터 상태로 표현된 디지트의 제2 수량을 갖고, nm보다 더 크며, 상기 제2 수량은 상기 제1 수량보다 작거나 같은 것인 방법.
  2. 제1항에 있어서,
    상기 장치로부터 상기 n 디지트의 데이터를 검색하는 단계; 및
    상기 n 디지트의 데이터를 상기 m 디지트의 데이터로 디코딩하는 단계를 더 포함하는 방법.
  3. 제2항에 있어서, 상기 장치는 메모리 디바이스를 포함하고, 상기 메모리 디바이스와 호스트 사이에 상기 n 디지트의 데이터를 통신하는 단계를 더 포함하되, 상기 인코딩하는 단계 및 상기 디코딩하는 단계는 상기 호스트에서 일어나는 것인 방법.
  4. 제2항에 있어서, 상기 장치는 메모리 디바이스를 포함하고, 상기 메모리 디바이스와 호스트 사이에 상기 m 디지트의 데이터를 통신하는 단계를 더 포함하되, 상기 인코딩하는 단계 및 상기 디코딩하는 단계는 상기 메모리 디바이스에서 일어나는 것인 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 n 디지트의 데이터는 세트 S의 가능한 코드워드들 중 하나이고,
    Figure 112014023560498-pct00038
    는 세트 S내 코드워드 원소의 수량이고, m=floor(
    Figure 112014023560498-pct00039
    )인 것인 방법.
  6. 방법으로서,
    메모리 셀을 갖는 장치에 저장된 n 디지트의 데이터를 수신하는 단계; 및
    상기 n 디지트의 데이터를 m 디지트의 데이터로 디코딩하는 단계를 포함하되,
    상기 n 디지트의 데이터는 제2 데이터 상태보다 제1 데이터 상태로 표현된 디지트를 더 많이 갖지 않되, 상기 제1 데이터 상태는 상기 제2 데이터 상태보다 메모리 셀 마모에 더 유해하고,
    nm보다 더 크고, 상기 m 디지트의 데이터는 상기 제2 데이터 상태보다 상기 제1 데이터 상태로 표현된 디지트를 더 많이 갖는 것인 방법.
  7. 제6항에 있어서,
    상기 n 디지트의 데이터는 w1 내지 w2 범위 내에서 상기 제1 데이터 상태로 표현된 디지트의 수량을 갖고, w2는 w1보다 크거나 같고,
    상기 n 디지트의 데이터를 m 디지트의 데이터로 디코딩하는 단계는,
    l(p,i)가 p-(b1b2...bn에서의 처음 (i-1)개의 디지트의 합)과 같은 경우, 최상위 디지트 b1으로 시작하여 최하위 디지트 bn으로까지, 각각의 디지트 bi에 대해 수량
    Figure 112014023560498-pct00040
    을 결정하는 단계; 및
    상기 n 디지트의 데이터에 대응하는 상기 m 디지트의 데이터에 대해 등가인 정수로서 값
    Figure 112014023560498-pct00041
    을 결정하는 단계를 포함하되, 논리적 "1"은 상기 제1 데이터 상태로 표현되는 것인 방법.
  8. 제7항에 있어서,상기 장치는 메모리 디바이스를 포함하고, 상기 방법은 상기 메모리 디바이스에 상기 n 디지트의 데이터를 저장하는 단계를 더 포함하며, w1은 0보다 더 크고, w2는 n보다 작거나 같은 것인 방법.
  9. 제8항에 있어서, w2는 n/2보다 작거나 같은 것인 방법.
  10. 제7항에 있어서, 상기 m 디지트의 데이터를 상기 n 디지트의 데이터로 인코딩하는 단계를 더 포함하되, 상기 인코딩하는 단계는,
    상기 m 디지트의 데이터를 수신하는 단계;
    R이 m 디지트의 데이터의 등가 정수인 경우, L=R 및 i=1로 설정하는 단계; 및
    i가 n을 초과할 때까지 각각의 i에 대해서,
    l(p,i) = p-(b1b2...bn에서의 처음 (i-1)개의 디지트의 합)인 경우,
    Figure 112014023560498-pct00042
    을 결정하는 단계,
    R>Si이면 bi =1 또는 R<=S이면 bi =0으로 설정하는 단계; 및
    R=R-Si 및 i=i+1로 업데이트하는 단계를,
    반복하여 수행하는 단계를 포함하되,
    w1은 0보다 더 크고, w2는 n/2보다 작거나 같은 것인 방법.
  11. 제6항 내지 제10항 중 어느 한 항에 있어서,
    상기 n 디지트의 데이터는 사전식으로 순서 정해진 리스트의 원소이고, 상기 n 디지트의 데이터의 각각의 디지트는 상기 제2 데이터 상태보다 메모리 셀 마모에 더 유해한 복수의 데이터 상태 중 하나로 표현되며,
    상기 m 디지트의 데이터를 결정하는 단계는, nS(x1, x2, ..., xj-1, m)이 x1, x2, ..., xj-1, m으로 시작하는 n 디지트의 데이터의 수인 경우, I를
    Figure 112014023560498-pct00043
    로서 결정하는 단계를 포함하는 것인 방법.
  12. 제11항에 있어서, 문자 x1x2...xn을 포함하는 상기 m 디지트의 데이터로서 정수 값 I를 갖는 상기 m 디지트의 데이터를 수신하고;
    xk가 알파벳 {1, 2, 3, ..., M}에 속하는 경우, i>nS(x1, x2, ..., xk-1, m-1) 이고 i<nS(x1, x2, ..., xk-1, m)이면 각각의 xk에 대해 xk=m으로 설정하고, i = i-nS(x1, x2, ..., xk-1, m-1)로 조절함으로써 k=1:n 동안 각각의 디지트 xk를 반복적으로 결정함으로써,
    상기 m 디지트의 데이터에 대응하는 상기 n 디지트의 데이터를 결정하는 단계를 더 포함하는 방법.
  13. 제12항에 있어서, 상기 n 디지트의 데이터의 디지트는 상기 알파벳에 대응하는 미리-정의된 가중치-분포 {w1, w2, ...wM}에 따라 데이터 상태로 표현된 디지트를 갖고, w1 + w2 +...+wM = n인 것인 방법.
  14. 제12항에 있어서, 상기 n 디지트의 데이터가 원소인 세트 S의 크기는
    Figure 112014023560498-pct00044
    인 것인 방법.
  15. 제14항에 있어서, 상기 세트 S의 상기 크기는
    Figure 112014023560498-pct00045
    로 정의된 이항식의 곱인 것인 방법.
  16. 장치로서,
    메모리; 및
    상기 메모리에 통신 결합된 컨트롤러를 포함하되, 상기 메모리는,
    제2 데이터 상태보다 메모리 셀 마모에 더 유해한 제1 데이터 상태로 표현된 디지트의 제1 수량을 갖는 m 디지트의 데이터를 수신하고,
    상기 m 디지트의 데이터를 n 디지트의 데이터로 인코딩하며, 그리고
    메모리 셀을 갖는 상기 메모리에 상기 n 디지트의 데이터를 저장하도록 구성되고,
    상기 n 디지트의 데이터는 상기 제1 데이터 상태로 표현된 디지트의 제2 수량을 갖고, nm보다 더 크며, 상기 제2 수량은 상기 제1 수량보다 작거나 같은 것인 장치.
  17. 제16항에 있어서, 상기 n 디지트의 데이터는 여러 다른 n 디지트의 데이터의 세트 S의 원소이고, m은 floor(
    Figure 112014023560498-pct00046
    )보다 작거나 같은 것인 장치
  18. 제17항에 있어서, 각각의 m 디지트의 데이터는 열거 코딩(enumerative coding)을 사용하여 여러 다른 n 디지트의 데이터의 상기 세트 S의 고유 n 디지트의 데이터와 연관되는 것인 장치.
  19. 제17항 또는 제18항에 있어서, 상기 컨트롤러는 상기 세트 S의 상기 n 디지트의 데이터 중 각자의 하나를 연관된 상기 m 디지트의 데이터로 디코딩하도록 더 구성되는 것인 장치.
  20. 제17항 또는 제18항에 있어서, m은 floor(
    Figure 112014023560498-pct00047
    )와 같은 것인 장치.
  21. 장치로서,
    메모리 셀을 갖는 메모리; 및
    상기 메모리에 결합된 컨트롤러를 포함하되, 상기 메모리는,
    상기 메모리 셀에 저장된 n 디지트의 데이터를 수신하고, 그리고
    상기 n 디지트의 데이터를 m 디지트의 데이터로 디코딩하도록 구성되며,
    상기 n 디지트의 데이터는 제2 데이터 상태보다 제1 데이터 상태로 표현된 디지트를 더 적거나 같게 갖되, 상기 제1 데이터 상태는 상기 제2 데이터 상태보다 메모리 셀 마모에 더 유해하고,
    nm보다 더 크고, 상기 m 디지트의 데이터는 상기 제2 데이터 상태보다 상기 제1 데이터 상태로 표현된 디지트를 더 많이 갖는 것인 장치.
  22. 제21항에 있어서, 상기 메모리에 통신 결합된 호스트를 더 포함하되, 상기 호스트는,
    상기 m 디지트의 데이터를 수신하고;
    상기 m 디지트의 데이터를 상기 n 디지트의 데이터로 인코딩하고; 그리고
    상기 메모리에 상기 n 디지트의 데이터를 저장하기 위하여,
    비-일시적 메모리에 저장된 명령어를 실행하도록 구성된 메모리 액세스 디바이스를 포함하는 것인 장치.
  23. 방법으로서,
    m 디지트의 데이터를 n 디지트의 데이터로 인코딩하는 단계; 및
    메모리 셀을 갖는 장치에 상기 n 디지트의 데이터를 저장하는 단계를 포함하되,
    nm보다 더 크고, 상기 m 디지트의 데이터는 제2 데이터 상태보다 메모리 셀 마모에 더 유해한 제1 데이터 상태로 표현된 디지트의 제1 수량을 갖는 것인 방법.
  24. 방법으로서,
    m 디지트의 데이터를 n 디지트의 데이터로 인코딩하는 단계를 포함하되, n은 m보다 더 크고, 상기 m 디지트의 데이터는 제2 데이터 상태보다 메모리 디바이스의 메모리 셀 마모에 더 유해한 제1 데이터 상태로 표현된 디지트의 제1 수량을 가지며,
    상기 n 디지트의 데이터는 많아도 상기 제1 데이터 상태로 표현된 디지트의 상기 제1 수량을 포함하는 것인 방법.
  25. 시스템으로서,
    메모리 셀; 및
    상기 메모리 셀에 통신 결합되고 m 디지트의 데이터를 n 디지트의 데이터로 인코딩하도록 구성된 장치를 포함하되, 상기 m 디지트의 데이터는 제2 데이터 상태보다 메모리 셀 마모에 더 유해한 제1 데이터 상태로 표현된 디지트의 제1 수량을 가지며,
    상기 n 디지트의 데이터는 많아도 상기 제1 데이터 상태로 표현된 디지트의 상기 제1 수량을 포함하는 것인 시스템.
  26. 삭제
KR1020147006477A 2011-08-31 2012-08-30 메모리 내구성을 위한 동작 방법 및 장치 KR101508890B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/222,942 US8495285B2 (en) 2011-08-31 2011-08-31 Apparatuses and methods of operating for memory endurance
US13/222,942 2011-08-31
PCT/US2012/053107 WO2013033375A1 (en) 2011-08-31 2012-08-30 Apparatuses and methods of operating for memory endurance

Publications (2)

Publication Number Publication Date
KR20140046070A KR20140046070A (ko) 2014-04-17
KR101508890B1 true KR101508890B1 (ko) 2015-04-07

Family

ID=47745346

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147006477A KR101508890B1 (ko) 2011-08-31 2012-08-30 메모리 내구성을 위한 동작 방법 및 장치

Country Status (6)

Country Link
US (3) US8495285B2 (ko)
EP (1) EP2751659A4 (ko)
JP (1) JP5785330B2 (ko)
KR (1) KR101508890B1 (ko)
CN (1) CN103782266B (ko)
WO (1) WO2013033375A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101602316B1 (ko) 2009-02-09 2016-03-22 삼성전자주식회사 반도체 메모리 장치 및 그것의 데이터 처리 방법
US20140089560A1 (en) * 2012-09-25 2014-03-27 Adesto Technologies Corporation Memory devices and methods having write data permutation for cell wear reduction
JP6129635B2 (ja) * 2013-04-30 2017-05-17 サイプレス セミコンダクター コーポレーション 制御方法、制御プログラム、および制御装置
US9489300B2 (en) * 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489294B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489299B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
KR101508665B1 (ko) 2013-11-27 2015-04-08 서울대학교산학협력단 비휘발성 메모리 장치, 이를 위한 메모리 제어기 및 동작 방법
US9239679B2 (en) 2013-12-19 2016-01-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System for efficient caching of swap I/O and/or similar I/O pattern(s)
JP6346123B2 (ja) * 2015-05-25 2018-06-20 東芝メモリ株式会社 コントローラ、制御方法
US9996299B2 (en) 2015-06-25 2018-06-12 Western Digital Technologies, Inc Memory health monitoring
US10452560B2 (en) 2015-07-14 2019-10-22 Western Digital Technologies, Inc. Wear leveling in non-volatile memories
US10452533B2 (en) 2015-07-14 2019-10-22 Western Digital Technologies, Inc. Access network for address mapping in non-volatile memories
US10445232B2 (en) 2015-07-14 2019-10-15 Western Digital Technologies, Inc. Determining control states for address mapping in non-volatile memories
US10445251B2 (en) 2015-07-14 2019-10-15 Western Digital Technologies, Inc. Wear leveling in non-volatile memories
US9921969B2 (en) 2015-07-14 2018-03-20 Western Digital Technologies, Inc. Generation of random address mapping in non-volatile memories using local and global interleaving
US10114549B2 (en) * 2016-03-17 2018-10-30 Sandisk Technologies Llc Error correction code processing and data shaping for reducing wear to a memory
US9865353B1 (en) * 2016-08-02 2018-01-09 Kabushiki Kaisha Toshiba Cell location programming for storage systems
US10566052B2 (en) 2017-12-22 2020-02-18 Micron Technology, Inc. Auto-referenced memory cell read techniques
US10431301B2 (en) 2017-12-22 2019-10-01 Micron Technology, Inc. Auto-referenced memory cell read 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

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007527614A (ja) 2003-07-01 2007-09-27 マイクロン テクノロジー,インコーポレイテッド 耐久性が改善された分離トランジスタメモリ及びその製造方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US6794997B2 (en) 2003-02-18 2004-09-21 Sun Microsystems, Inc. Extending non-volatile memory endurance using data encoding
US20050213393A1 (en) * 2004-03-14 2005-09-29 M-Systems Flash Disk Pioneers, Ltd. States encoding in multi-bit flash cells for optimizing error rate
US7565391B2 (en) 2004-12-17 2009-07-21 The Regents Of The University Of California Binary digit multiplications and applications
US7644225B2 (en) * 2006-10-17 2010-01-05 Intel Corporation Performance or power-optimized code/data storage for nonvolatile memories
US7802132B2 (en) 2007-08-17 2010-09-21 Intel Corporation Technique to improve and extend endurance and reliability of multi-level memory cells in a memory device
US7573969B2 (en) 2007-09-27 2009-08-11 Sandisk Il Ltd. Counter using shift for enhanced endurance
US7924623B2 (en) 2008-05-27 2011-04-12 Micron Technology, Inc. Method for memory cell erasure with a programming monitor of reference cells
US8195899B2 (en) 2008-09-26 2012-06-05 Micron Technology, Inc. Memory cell operation
CN101685675B (zh) * 2008-09-26 2014-01-15 美光科技公司 存储器单元操作
WO2010067361A1 (en) * 2008-12-10 2010-06-17 Amir Ban Method and device of managing a reduced wear memory
EP2396791B1 (en) * 2009-02-12 2014-08-06 Ramot at Tel-Aviv University Ltd. Apparatus and method for enhancing flash endurance by encoding data
US8004900B2 (en) 2009-03-17 2011-08-23 Sandisk Technologies Inc. Controlling select gate voltage during erase to improve endurance in non-volatile memory
US8341501B2 (en) * 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
CN102005243B (zh) 2009-08-31 2014-02-05 中芯国际集成电路制造(上海)有限公司 差分闪存器件及提高差分闪存器件耐久性的方法
US8036016B2 (en) 2009-09-01 2011-10-11 Micron Technology, Inc. Maintenance process to enhance memory endurance
US8009471B2 (en) * 2009-12-15 2011-08-30 Seagate Technology Llc Low-wear writing in a solid state memory device
US8301828B2 (en) * 2010-06-02 2012-10-30 Conexant Systems, Inc. Systems and methods for reliable multi-level cell flash storage

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007527614A (ja) 2003-07-01 2007-09-27 マイクロン テクノロジー,インコーポレイテッド 耐久性が改善された分離トランジスタメモリ及びその製造方法

Also Published As

Publication number Publication date
CN103782266B (zh) 2017-02-15
KR20140046070A (ko) 2014-04-17
EP2751659A1 (en) 2014-07-09
US20130054876A1 (en) 2013-02-28
US8495285B2 (en) 2013-07-23
CN103782266A (zh) 2014-05-07
WO2013033375A1 (en) 2013-03-07
JP2014529827A (ja) 2014-11-13
US20130311714A1 (en) 2013-11-21
JP5785330B2 (ja) 2015-09-30
EP2751659A4 (en) 2015-04-22
US8762630B2 (en) 2014-06-24
US20140337564A1 (en) 2014-11-13
US9105350B2 (en) 2015-08-11

Similar Documents

Publication Publication Date Title
KR101508890B1 (ko) 메모리 내구성을 위한 동작 방법 및 장치
US9985651B2 (en) Read threshold calibration for LDPC
KR102102828B1 (ko) 메모리에서 에러 정정 코드(ecc) 연산
US8327246B2 (en) Apparatus for coding at a plurality of rates in multi-level flash memory systems, and methods useful in conjunction therewith
US8176234B2 (en) Multi-write coding of non-volatile memories
US9547588B1 (en) System and method of data storage in flash memory
TWI533304B (zh) 用於儲存資料於具有跨頁區段、多頁編碼及每頁編碼之多位準單元快閃記憶體器件中之方法及裝置
US9405622B2 (en) Shaping codes for memory
US9983808B2 (en) NAND flash reliability with rank modulation
US8719491B2 (en) Encoding flash memory data with a randomizer using different seeds for different sectors
US9411529B2 (en) Mapping between program states and data patterns
WO2014051611A1 (en) Systems for and methods of extending lifetime of non-volatile memory
US9697892B1 (en) Generation and application of gray codes
CN111477260A (zh) 平衡块损耗均衡以实现最佳ssd耐久性
JP2018022546A (ja) ストレージシステム用のセル位置プログラミング
US9985647B2 (en) Encoder and decoder design for near-balanced codes

Legal Events

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

Payment date: 20180316

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190318

Year of fee payment: 5