KR101208312B1 - 조절가능한 용량을 가진 메모리 디바이스 - Google Patents

조절가능한 용량을 가진 메모리 디바이스 Download PDF

Info

Publication number
KR101208312B1
KR101208312B1 KR1020087028919A KR20087028919A KR101208312B1 KR 101208312 B1 KR101208312 B1 KR 101208312B1 KR 1020087028919 A KR1020087028919 A KR 1020087028919A KR 20087028919 A KR20087028919 A KR 20087028919A KR 101208312 B1 KR101208312 B1 KR 101208312B1
Authority
KR
South Korea
Prior art keywords
data
memory
capacity
msp
memory cell
Prior art date
Application number
KR1020087028919A
Other languages
English (en)
Other versions
KR20090033835A (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 KR20090033835A publication Critical patent/KR20090033835A/ko
Application granted granted Critical
Publication of KR101208312B1 publication Critical patent/KR101208312B1/ko

Links

Images

Classifications

    • 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/5657Digital 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 ferroelectric storage elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Chemical & Material Sciences (AREA)
  • Crystallography & Structural Chemistry (AREA)

Abstract

복수의 아날로그 메모리 셀(32)을 포함하는 메모리(28)에 데이터를 저장하는 방법은 아날로그 메모리 셀의 각각의 달성가능한 저장 용량을 추정하는 단계를 포함한다. 본 메모리 셀은 추정된 달성가능한 용량을 기초로 메모리 셀에 저장될 데이터의 크기를 정의하는 각각의 저장 컨피규레이션이 할당된다. 데이터는 각각의 할당된 저장 컨피규레이션에 따라 메모리 셀에 저장된다. 아날로그 메모리 셀의 달성가능한 저장 용량은 메모리가 호스트 시스템에 의해 설치되고 메모리가 호스트 시스템에 데이터를 저장하기 위해 사용된 후 재추정되고, 호스트 시스템에 데이터를 저장하기 위해 사용된다. 저장 컨피규레이션은 재추정된 달성가능한 용량에 응답하여 수정된다.
메모리, MSP, 저장 용량 추정, 왜곡 추정, 저장 컨피규레이션, ECC 코드, 밀도 할당, 마모 레벨링.

Description

조절가능한 용량을 가진 메모리 디바이스{MEMORY DEVICE WITH ADAPTIVE CAPACITY}
본 출원은 2006년 5월 12일에 출원된 미국 가특허출원 제60/747,106호, 2006년 8월 13일에 출원된 미국 가특허출원 제60/822,236호, 2006년 9월 17일에 출원된 미국 가특허출원 제60/825,913호, 2006년 11월 16일에 출원된 미국 가특허출원 제60/866,071호, 2006년 11월 22일에 출원된 미국 가특허출원 제60/866,860호, 2006년 11월 28일에 출원된 미국 가특허출원 제60/867,399호, 2006년 12월 26일에 출원된 미국 가특허출원 제60/871,838호, 2006년 12월 28일에 출원된 미국 가특허출원 제60/882,240호, 2007년 1월 2일에 출원된 미국 가특허출원 제60/883,071호, 2007년 1월 22일에 출원된 미국 가특허출원 제60/885,987호, 및 2007년 2월 11일에 출원된 미국 가특허 출원 제60/889,277호의 우선권을 주장한다.
본 발명은 메모리 디바이스에 관한 것이고, 더욱 상세하게는 조절가능한 저장 용량을 가진 메모리 디바이스에 관한 것이다.
플래시 메모리 및 디램(DRAM)과 같은, 몇몇 타입의 메모리 디바이스는 데이터를 저장하기 위해 아날로그 메모리 셀 어레이를 사용한다. 플래시 메모리 디바이스는, 예컨대, 'Bez et al.'의, 2003년 4월, "Introduction to Flash Memory", 'Proceedings of the IEEE', 볼륨 91, 넘버 4, 페이지 489-502에 서술되어 있다.
이러한 메모리 디바이스에서, 각각의 아날로그 메모리 셀은 셀에 저장된 정보를 나타내는 임의의 전하량을 보유하는 트랜지스터를 포함하는 것이 전형적이다. 특정 셀에 기록된 전하는 그 셀의 "임계전압", 즉, 셀이 전류를 통전하기 위해 셀에 인가되어야 하는 전압에 영향을 준다.
일반적으로 단일레벨 셀(SLC) 디바이스라 하는, 몇몇 메모리 디바이스는 각각의 메모리 셀에 단일 비트의 정보를 저장한다. 전형적으로, 그 셀의 가능한 임계전압 범위는 두 영역으로 나눠진다. 제1영역에 속하는 전압 값은 "0"비트 값을 나타내고, 제2영역에 속하는 전압은 "1"비트를 나타낸다. 멀티레벨 셀(MLC)이라 하는, 고밀도 디바이스는 메모리 셀마다 둘 이상의 비트를 저장한다. 멀티-레벨 셀에서, 임계전압의 범위는 두 개 이상의 영역으로 나누어지고, 각각의 영역은 하나의 비트 이상을 나타낸다.
멀티레벨 플래시 셀 및 디바이스는, 예컨대, 'Eitan et al.'의, "Multilevel Flash Cells and thier Trade-Offs", 'Proceedings of the 1996 IEEE International Electron Devices Meeting(IEDM)', 뉴욕, 페이지 169-172에 서술되어 있다. 이 문서는 공통 그라운드, DINOR, AND, NOR, 및 NAND 셀과 같은, 몇가지 종류의 멀티레벨 플래시 셀을 비교한다.
'Eitan et al.'은 "Can NROM, a 2-bit, Trapping Storage NVM Cell, Give a Real Challenge to Floating Gate Cells?", 'Proceedings of the 1999 International Conference on Solid State Devices and Materials(SSDM)', 일본 도 쿄, 1999년 9월 21-24일, 페이지 522-524에 니트라이드 롬(NROM)이라 불리는 다른 타입의 아날로그 메모리 셀을 설명하였다. NROM 셀은 또한 'Maayan et al.'의, , "A 512 Mb NROM Flash Data Storage Memory with 8 MB/s Data Rate", 'Proceedings of the 2002 IEEE International Solid-State Circuit Conference(ISSCC 2002) 캘리포니아주 샌프란시스코, 2002년 2월 3-7일, 페이지 100-101에 서술되어 있다.
다른 예시적인 타입의 아날로그 메모리 셀은 강자성체 램(FRAM) 셀, 자성 램(MRAM) 셀, 및 상변화 램(PRAM, 상변화 메모리, PCM이라고도 함) 셀이다. FRAM, MRAM, 및 PRAM 셀은, 예컨대, 'Kim an Koh'의, "Future Memory Technology including Emeging New Memories", 'Proceedings of the 24th International Conference on Microelectronics(MIEL), 세르비아 몬테네그로 니스, 2004년 5월 16-19일, 볼륨 1, 페이지 377-384에 서술되어 있다.
몇몇 어플리케이션에서, 데이터는 가 밀도로 메모리 셀에 저장된다. 예를 들어, 미국특허 제6,363,008호는 복수의 메모리 어레이를 포함하는 멀티-비트-퍼-셀을 설명하는데, 여기서, 셀마다 저장되는 비트수는 각각의 메모리 어레이에 대하여 개별적으로 설정된다. 셀당 많은 비트수를 기록, 저장, 및 판독할 때, 테스팅 프루브가 정밀한 메모리 어레이는 셀당 더 많은 비트수를 기록하도록 설정되고, 동일한 셀당 비트수를 정밀하게 기록, 저장, 또는 판독할 수 없는 메모리 어레이는 더 낮은 셀당 비트수를 저장하도록 설정된다.
미국특허 제6,456,528호에는, 정상적으로 메모리 셀을 복수의 저장 상태로 오퍼레이팅하고, 선택된 또는 모든 메모리 셀 블록을 두 개의 상태로 오퍼레이팅하 는 능력을 가진 플래시 비휘발성 메모리 시스템이 제공되어 있다. 두 개의 상태는 복수의 상태 중 가장 멀리 떨어지도록 선택되고, 그로 인해, 두 개의 상태의 오퍼레이션 동안 증가된 마진을 제공한다.
미국특허 제5,930,167호는 함께 삭제가능한 셀 블록에 배열된 한 어래이의 플래시 이이피롬을 포함하는 메모리 시스템을 설명한다. 각각의 셀은 둘 이상의 검출가능한 임계 범위 및 상태로 각각의 셀을 오퍼레이팅하여, 하나 이상의 비트를 저장한다. 데이터가 저장되지 않은 어레이의 나머지 부분은 기록 캐시로서 사용될 수 있고, 이 셀 중 각각 하나는 단 두 개의 검출 가능한 임계 범위로 오퍼레이팅함으로써 단일 비트의 데이터를 저장한다. 메모리로 들어온 데이터는 사용가능한 블록에 두 개의 상태로 초기 기록된다. 이후 시점에, 본 배경기술에서, 캐싱된 데이터가 판독되고, 압축되고, 메모리의 더 적은 블록에 멀티-상태로 다시 기록된다.
미국특허 제6,446,476호는 상이한 셀당 비트수를 사용하여 데이터 스트림의 상이한 부분을 저장하는, 멀티-비트-퍼-셀 비휘발성 메모리를 설명한다. 더욱 상세하게는, 높은 데이터 무결성을 요구하는 데이터(예컨대, 데이터 프레임의 헤더)는 비교적 작은 셀당 비트수를 사용하여 저장된다. 에러 허용도가 더 높은 데이터(예컨대, 음악, 이미지, 또는 비디오를 나타내는 메인 데이터)는 비교적 큰 셀당 비트수를 사용하여 저장된다.
미국특허 제6,643,169호는 포함된 데이터의 타입에 따라 다른 셀당 비트수로 데이터를 저장하는 방법을 설명한다. 셀당 비트수는 충실도가 덜 중요할 때 증가될 수 있다. 셀당 비트수는 충실도가 더 중요할 때 감소될 수 있다. 메모리는, 몇몇 실시예에서, 셀 바이 셀 기준으로 저장 모드 사이에서 변할 수 있다.
본 발명의 실시예는 복수의 아날로그 메모리 셀을 포함하는 메모리에 데이터를 저장하는 방법으로서,
아날로그 메모리 셀의 각각의 달성가능한 저장 용량을 추정하는 단계;
추정된 달성가능한 용량을 기초로 메모리 셀 내에 저장될 데이터의 크기를 정의하는 각각의 저장 컨피규레이션을 메모리 셀에 할당하는 단계;
각각의 할당된 저장 컨피규레이션에 따라 메모리 셀에 상기 데이터를 저장하는 단계; 및
메모리가 호스트 시스템에 설치되고 호스트 시스템에 데이터를 저장하기 위해 사용된 후 아날로그 메모리 셀의 각각의 달성가능한 저장 용량을 재추정하고, 재추정된 달성가능한 용량에 응답하여 저장 컨피규레이션을 변경하는 단계를 포함하는 방법을 제공한다.
몇몇 실시예에서, 상기 데이터를 저장하는 단계는 데이터를 ECC를 사용하여 인코딩하는 단계, 인코딩된 데이터를 한 세트의 노미널 아날로그 값으로부터 선택된 아날로그 값으로 변환하는 단계, 및 아날로그 값을 각각의 메모리 셀에 기록하는 단계를 포함하고, 그리고 각각의 저장 컨피규레이션은 ECC 코드 레이트, 및 데이터를 저장하기 위해 사용되는 한 세트의 노미널 아날로그 값의 크기를 특정한다.
한 실시예에서, 각각의 아날로그 메모리 셀에 대하여, 상기 데이터를 저장하는 단계는 데이터를 한 세트의 노미널 아날로그 값으로 부터 선택된 아날로그 값으로 변환하는 단계, 및 상기 아날로그 값을 메모리 셀에 기록하는 단계를 포함하고, 각각의 저장 컨피규레이션은 아날로그 메모리 셀에 데이터를 저장하기 위해 사용되는 노미널 아날로그 값을 특정한다.
다른 실시예에서, 상기 데이터를 저장하는 단계는 데이터를 아날로그 값으로 변환하는 단계, 및 아날로그 값을 각각의 메모리 셀에 기록하는 단계를 포함하고, 상기 달성가능한 저장 용량을 추정하는 단계는 메모리 셀에 기록된 아날로그 값에 영향을 주는 각각의 왜곡 레벨을 추정하는 단계, 및 상기 왜곡 레벨에 응답하여 달성가능한 저장 용량을 결정하는 단계를 포함한다.
상기 왜곡 레벨을 추정하는 단계는 메모리 셀로부터 아날로그 값을 판독하는 단계, 및 메모리 셀로부터 판독된 상기 아날로그 값을 기초로 왜곡 레벨을 추정하는 단계를 포함한다. 상기 왜곡 레벨을 추정하는 단계는 메모리로부터 판독된 아날로그 값으로부터 데이터를 복구하는 단계, 및 복구된 데이터를 기초로 왜곡 레벨을 계산하는 단계를 포함한다. 몇몇 실시예에서, 상기 왜곡 레벨을 계산하는 단계는 메모리 셀로부터 판독된 아날로그 값의 스칼라 함수를 합산하는 단계를 포함한다. 상기 스칼라 함수를 합산하는 단계는 메모리 셀로부터 판독된 아날로그 값과 데이터에 응답하여 메모리 셀에 저장된 데이터의 각각의 기대값 간의 차이의 제곱을 합산하는 단계를 포함한다. 다른 실시예에서, 상기 왜곡 레벨을 계산하는 단계는 메모리 셀로부터 판독된 아날로그 값과 데이터에 응답하여 메모리 셀에 저장된 데이터의 각각의 기대값 간의 차이가 소정의 값을 초과한 메모리 셀의 개수를 카운트하는 단계를 포함한다.
개시된 실시예에서, 상기 데이터를 저장하는 단계는 반복적인 프로그램 및 검증(P&V) 프로세스를 사용하여 메모리 셀에 아날로그 값을 기록하는 단계, 및 기록된 아날로그 값을 검증하는 단계를 포함하고, 상기 왜곡 레벨을 추정하는 단계는 P&V 프로세스에 의해 검증된 아날로그 값을 기초로 왜곡 레벨을 계산하는 단계를 포함한다.
다른 실시예에서, 상기 데이터를 저장하는 단계는 프로그래밍 단계에 의해 아날로그 값을 반복적으로 증가시키는, 반복적인 P&V 프로세스를 사용하여 메모리 셀에 아날로그 값을 기록하는 단계, 및 기록된 아날로그 값을 검증하는 단계를 포함하고, 상기 저장 컨피규레이션은 반복적인 P&V 프로세스에 의해 사용되는 프로그래밍 간격의 크기를 정의한다.
또 다른 실시예에서, 상기 데이터를 저장하는 단계는 ECC를 사용하여 한 그룹의 메모리 셀에 저장될 데이터를 인코딩하는 단계, 및 인코딩된 데이터를 상기 그룹의 각각의 아날로그 메모리 셀에 저장하기 위한 아날로그 값으로 변환하는 단계를 포함하고, 상기 달성가능한 저장 용량을 추정하는 단계는 상기 그룹 내의 메모리 셀로부터 아날로그 값을 판독하는 단계, 및 상기 아날로그 값과 상기 아날로그 값에 가장 가까운 ECC의 유효 코드워드 사이의 거리 메트릭스를 평가하는 단계를 포함하고, 그리고 상기 저장 컨피규레이션을 조절하는 단계는 평가된 거리 메트릭스에 응답하여 상기 그룹의 메모리 셀의 저장 컨피규레이션을 변경하는 단계를 포함한다.
또 다른 실시예에서, 상기 달성가능한 저장 용량을 재추정하는 단계는 메모리 셀에 저장된 데이터를 판독하는 단계를 포함하고, 상기 저장 컨피규레이션을 조절하는 단계는 상기 판독된 데이터 내의 에러 검출에 응답하여 저장 컨피규레이션을 조절하는 단계를 포함한다. 상기 데이터를 저장하는 단계는 ECC를 사용하여 데이터를 인코딩하는 단계를 포함하고, 상기 저장 컨피규레이션을 조절하는 단계는 상기 ECC의 코드 레이트를 조절하는 단계를 포함할 수 있다.
몇몇 실시예어서, 상기 메모리 셀의 달성가능한 용량을 추정하는 단계는 각각의 메모리 셀에 적용된 이전 프로그래밍 및 삭제 오퍼레이션을 트래킹하는 단계, 및 트래킹된 이전 프로그래밍 및 삭제 오퍼레이션에 응답하여 달성가능한 용량을 추정하는 단계를 포함한다. 상기 달성가능한 용량을 추정하는 단계는 이전 프로그래밍 및 삭제 오퍼레이션 이후 경과한 기간의 길이에 응답하여 달성가능한 용량을 계산하는 단계를 포함할 수 있다.
한 실시예에서, 상기 데이터를 저장하는 단계는 데이터의 초기 부분을 아날로그 값으로 변환하는 단계, 및 아날로그 값을 각각의 메모리 셀에 저장하는 단계, 및 이에 후속하여 상기 데이터의 추가 부분을 셀을 삭제하기 않고 메모리에 기록된 아날로그 값을 증가시킴으로써 적어도 일부의 메모리 셀에 저장하는 단계를 포함한다.
다른 실시예에서, 상기 데이터를 저장하는 단계는 데이터에 리둔던시 비트를 추가하는 에러 보정 코를 사용하여 데이터를 인코딩하는 단계, 및 리둔던시 비트를 아날로그 메모리 셀의 일부에 저장하는 단계를 포함하고, 상기 저장 컨피규레이션를 조절하는 단계는 셀을 삭제하지 않고 ECC에 의해 추가된 리둔던시 비트의 개수를 조절하는 단계를 포함한다. 상기 리둔던시 비트를 저장하는 단계는 데이터와 개별적으로 리둔던시 비트를 저장하는 단계를 포함할 수 있다.
또 다른 실시예에서, 상기 저장 컨피규레이션을 할당하는 단계는 한 세트의 가능한 저장 컨피규레이션를 미리 정의하는 단계를 포함하고, 상기 저장 컨피규레이션을 조절하는 단계는 미리 정의된 세트로부터 갱신된 저장 컨피규레이션을 선택하는 단계를 포함한다. 적어도 하나의 저장 컨피규레이션에 의해 정의되는 데이터의 크기는 비정수(non-integer)의 셀당 비트수를 특정할 수 있다.
또 다른 실시예에서, 상기 데이터를 저장하는 단계는 데이터를 메모리 셀에 기록하기 전에 데이터를 압축하는 단계를 포함하고, 상기 저장 컨피규레이션은 데이터가 압축될 각각의 압축율을 정의한다. 개시된 실시예에서, 상기 저장 컨피규레이션을 할당하는 단계는 각각의 메모리 셀 그룹에 대하여 저장 컨피규레이션을 정의하는 단계를 포함한다.
한 실시예에서, 상기 데이터를 메모리 셀에 저장하는 단계는 메모리에 저장할 데이터 아이템을 수신하는 단계, 할당된 저장 컨피규레이션에 응답하여 데이터 아이템을 저장할 한 서브셋의 메모리 셀을 선택하는 단계, 및 데이터 아이템을 메모리 셀의 선택된 서브셋에 저장하는 단계를 포함한다. 몇몇 실시예에서, 상기 달성가능한 저장 용량을 재추정하는 단계는 데이터가 저장되고 판독되지 않는 아이들(idle) 기간 동안 수행된다.
다른 실시예에서, 상기 저장 컨피규레이션을 할당하는 단계 및 조절하는 단계는 저장 컨피규레이션을 컨피규레이션 테이블에 저장하는 단계를 포함한다. 몇몇 실시예에서, 저장 컨피규레이션의 초기값은 메모리가 호스트 시스템에 설치되기 전에 컨피규레이션 테이블에 저장될 수 있다. 또 다른 실시예에서, 상기 저장 컨피규레이션을 할당하는 단계 및 조절하는 단계는 메모리 셀에 저장된 데이터의 크기와 각각의 추정된 달성가능한 용량 사이에 소정의 마진을 유지하는 단계를 포함한다. 저장하는 방법. 또 다른 실시예에서, 적어도 일부의 왜곡은 아날로그 메모리 셀 내의 누설전류에 의해 발생되고, 상기 왜곡을 추정하는 단계는 누설전류를 추정하는 단계를 포함한다.
또한, 본 발명의 한 실시예에 따라, 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법으로서,
각각의 아날로그 메모리 셀 내의 왜곡 레벨을 추정하는 단계;
추정된 왜곡 레벨을 기초로 아날로그 메모리 셀의 각각의 달성가능한 저장 용량을 추정하는 단계;
메모리 셀에 추정된 달성가능한 저장 용량을 기초로 메모리 셀에 저장될 데이터의 크기를 정의하는 각각의 저장 컨피규레이션을 할당하는 단계; 및
각각의 할당된 저장 컨피규레이션에 따라 메모리 셀에 데이터를 저장하는 단계를 포함하는 방법이 제공된다.
또한, 본 발명의 한 실시예에 따라, 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법으로서,
메모리가 호스트 시스템에서 사용중인 동안, 아날로그 메모리 셀의 각각의 달성가능한 저장 용량을 트래킹하는 단계;
메모리에 저장할 데이터를 수신하는 단계;
트래킹된 달성가능한 용량을 기초로 데이터를 저장할 한 서브셋의 메모리 셀을 선택하는 단계; 및
상기 서브셋의 메모리 셀에 데이터를 저장하는 단계를 포함하는 방법이 제공된다.
몇몇 실시예에서, 상기 서브셋을 선택하는 단계는 그 전체 달성가능한 용량이 수신된 데이터의 크기와 가장 잘 매칭하는 메모리 셀을 선택하는 단계를 포함한다. 다른 실시예에서, 상기 데이터를 수신하는 단계는 데이터를 저장하기 위해 요구된 신뢰도 레벨을 수신하는 단계를 포함하고, 상기 서브셋을 선택하는 단계는 요구된 신뢰도 레벨에 응답하여 메모리 셀을 선택하는 단계를 포함한다. 부가적으로 또는 대안으로서, 상기 데이터를 수신하는 단계는 데이터를 저장하도록 요구된 보유 기간을 수신하고, 상기 서브셋을 선택하는 단계는 상기 요구된 보유 기간에 응답하여 메모리 셀을 선택하는 단계를 포함한다. 상기 서브셋을 선택하는 단계는 다른 메모리 셀에 관하여 낮은 왜곡 레벨을 가진 메모리 셀을 선택하는 단계를 포함할 수 있다.
다른 실시예에서, 상기 달성가능한 저장 용량을 트래킹하는 단계는 메모리 셀에 적용된 이전 프로그래밍 및 삭제 오퍼레이션을 트래킹하는 단계를 포함하고, 상기 서브셋을 선택하는 단계는 이전 프로그래밍 및 삭제 오퍼레이션에 응답하여 메모리 셀을 선택하는 단계를 포함한다. 상기 서브셋을 선택하는 단계는 다른 메모리 셀에 대하여 더 적은 횟수의 이전 프로그래밍 및 삭제 오퍼레이션을 가진 메모리 셀을 선택함으로써 메모리 내의 메모리 셀에 대하여 프로그래밍 삭제 오퍼레이션의 횟수를 균일하게 분산시키는 단계를 포함할 수 있다. 상기 프로그래밍 및 삭제 오퍼레이션의 횟수를 분산시키는 단계는 다른 메모리 셀에 대하여 소정의 최근 시간 동안 수행된 더 적은 횟수의 이전 프로그래밍 및 삭제 오퍼레이션을 가진 메모리 셀을 선택하는 단계를 포함할 수 있다.
개시된 실시예에서, 상기 달성가능한 저장 용량을 트래킹하는 단계는 데이터를 저장할 수 있는 메모리의 달성가능한 용량을 합산함으로써 달성가능한 저장 달성가능한 메모리 공간을 계산하고 호스트 시스템에 보고하는 단계를 포함한다.
다른 실시예에서, 메모리는 복수의 삭제 블록으로 분할되어 있고, 각각의 삭제 블록은 단일 삭제 오퍼레이션에서 삭제되는 한 그룹의 상기 메모리 셀을 포함하고, 그리고 본 방법은
데이터 아이템이 저장된 하나 이상의 상기 삭제 블록을 식별하는 단계;
상기 데이터 아이템이 저장된 상기 삭제 블록이 다른 데이터 아이템의 임의의 저장된 데이터를 포함할 때, 상기 메모리 셀의 상기 트래킹된 달성가능한 용량 및 상기 다른 데이터 아이템의 크기를 기초로 상기 데이터가 저장된 상기 삭제 블록의 외부의 대안의 메모리 셀을 식별하는 단계, 및 상기 대안의 메모리 셀에 상기 다른 데이터 아이템의 상기 데이터를 복사하는 단계; 및
상기 데이터 아이템이 저장된 상기 삭제 블록을 삭제하는 단계에 의해 상기 메모리로부터 데이터 아이템을 삭제하는 단계를 포함한다.
한 실시예에서, 상기 저장할 데이터를 수신하는 단계는 호스트 시스템으로부터 데이터를 고정용량 블록으로 수신하는 단계, 및 데이터를 메모리의 가변용량 그룹의 트래킹된 달성가능한 용량을 기초로 가변용량 그룹에 데이터를 저장하는 단계를 포함한다. 다른 실시예에서, 상기 가변용량 그룹에 데이터를 저장하는 단계는 고정용량 블록의 용량보다 작은 용량을 가진 둘 이상의 가변용량 그룹을 식별하는 단계, 및 식별된 둘 이상의 가변용량 그룹에 하나 이상의 고정용량 블록에 수신된 데이터를 저장하는 단계를 포함한다.
또 다른 실시예에서, 상기 가변용량 그룹에 데이터를 저장하는 단계는 하나 이상의 가변용량 그룹을 초과 메모리 저장 영역으로 역할하도록 할당하는 단계, 각각의 가변용량 그룹에 고정용량 블록에 수신된 데이터를 저장하는 단계, 및 가변용량 그룹의 달성가능한 용량이 고정용량 블록의 용량 보다 작을 때, 각각의 고정용량 블록에 수신된 데이터의 일부를 할당된 초과 메모리 저장 영역에 저장하는 단계를 포함한다. 또 다른 실시예에서, 상기 가변용량 그룹에 데이터를 저장하는 단계는 상기 가변용량 그룹 사이의 경계와 무관하게 메모리 셀에 연속적으로 고정용량 블록에 수신된 데이터를 저장하는 단계를 포함한다. 상기 데이터를 저장하는 단계는 각각의 가변용량 그룹에 각각의 고정용량 블록에 수신된 데이터를 초기 저장하는 단계, 및 후속하여 가변용량 그룹 사이의 경계와 무관하게, 초기 저장된 데이터를 연속적으로 재-프로그래밍하는 단계를 포함할 수 있다.
몇몇 실시예에서, 본 방법은 상기 가변크기 그룹으로부터 데이터를 추출하는 단계, 상기 고정크기 블록을 복구하는 단계, 및 상기 데이터를 고정크기 블록을 사용하여 호스트 시스템으로 출력하는 단계를 더 포함한다. 본 방법은 데이터의 적어도 일부를 캐싱하는 단계에 의해 메모리에 적용된 메모리 액세스 오퍼레이션의 개수를 줄이는 단계를 포함할 수 있다. 상기 데이터의 적어도 일부를 캐싱하는 단계는 중간 저장 이벤트를 검출한 때 메모리에 캐싱된 데이터를 전송하는 단계를 포함할 수 있다. 중간 저장 이벤트는 호스트 시스템으로부터 수신된 어프로칭 파워 오류, 타임 아웃, 및 엔드오브파일(EOF) 커맨드로 구성된 한 그룹의 이벤트로부터 선택된 적어도 하나의 이벤트를 포함할 수 있다.
본 방법의 한 실시예에 따라, 데이터 저장 장치로서,
복수의 아날로그 메모리 셀을 갖춘 메모리와 통신하도록 배열되어 있는 인터페이스; 및
메모리 신호 프로세서(MSP)를 포함하고, 상기 MSP는 메모리 셀의 각각의 달성가능한 저장 용량을 추정하고, 추정된 달성가능한 용량을 기초로 메모리 셀에 저장될 데이터의 크기를 정의하는 각각의 저장 컨피규레이션을 메모리 셀에 할당하고, 각각의 할당된 저장 컨피규레이션에 따라 메모리에 데이터를 저장하고, 메모리가 호스트 시스템에 설치된 후, 그리고 호스트 시스템에 데이터를 저장하기 위해 사용될 때, 메모리 셀의 각각의 달성가능한 저장 용량을 재추정하고, 그리고 재추정된 달성가능한 용량에 응답하여 저장 컨피규레이션을 조절하도록 배열되어 있는 장치가 제공된다.
또한, 본 발명의 한 실시예에 따라, 데이터 저장 장치로서,
복수의 아날로그 메모리 셀을 갖춘 메모리와 통신하도록 배열되어 있는 인터페이스; 및
메모리 신호 프로세서(MSP)를 포함하고, 상기 MSP는 각각의 아날로그 메모리 셀 내의 왜곡 레벨을 추정하고, 추정된 왜곡 레벨을 기초로 아날로그 메모리 셀의 각각의 달성가능한 저장 용량을 추정하고, 추정된 달성가능한 용량을 기초로 메모리 셀에 저장될 데이터의 크기를 정의하는 각각의 저장 컨피규레이션을 메모리 셀에 할당하고, 그리고 각각의 할당된 저장 컨피규레이션에 따라 메모리 셀에 데이터를 저장하도록 배열되어 있는 장치가 제공된다.
또한, 본 발명의 한 실시예에 따라, 데이터 저장 장치로서,
복수의 아날로그 메모리 셀을 갖춘 메모리와 통신하도록 배열되어 있는 인터페이스; 및
메모리 신호 프로세서(MSP)를 포함하고, 상기 MSP는 메모리가 호스트 시스템에서 사용중인 동안 메모리 셀의 각각의 달성가능한 저장 용량을 트래킹하고, 메모리에 저장할 데이터를 수신하고, 트래킹된 달성가능한 용량을 기초로 데이터를 저장할 한 서브셋의 메모리 셀을 선택하고, 그리고 상기 서브셋의 메모리 셀에 데이터를 저장하도록 배열되어 있는 장치가 제공된다.
또한, 본 발명의 한 실시예에 따른, 데이터 저장 장치로서,
복수의 아날로그 메모리 셀을 포함하는 메모리; 및
상기 메모리에 연결되어 있는 메모리 신호 프로세서(MSP)를 포함하고, 상기 MSP는 메모리의 각각의 달성가능한 저장 용량을 추정하고, 추정된 달성가능한 용량을 기초로 메모리에 저장될 데이터의 크기를 정의하는 각각의 저장 컨피규레이션을 메모리 셀에 할당하고, 각각의 할당된 저장 컨피규레이션에 따라 메모리 셀에 데이터를 저장하고, 메모리가 호스트 시스템에 설치된 후, 그리고 호스트 시스템에 데이터를 저장하기 위해 사용될 때 아날로그 메모리 셀의 각각의 달성가능한 저장 용량을 재추정하고, 그리고 재추정된 달성가능한 용량에 응답하여 저장 컨피규레이션을 조절하도록 배열되어 있는 장치가 제공된다.
몇몇 실시예에서, 메모리는 제1집적회로(IC)에 설치되고, MSP는 제1IC와 상이한 제2IC에 설치된다. 대안의 실시예에서, 메모리 및 MSP는 단일 디바이스에 통합된다. 다른 대안으로서, MSP는 호스트 시스템의 프로세서에 내장될 수 있다. 몇몇 실시예에서, 메모리 셀은 플래시 메모리 셀, 디램(DRAM), 상변화 메모리(PCM) 셀, 니트라이드 롬(NROM) 셀, 자성 램(MRAM) 셀, 또는 강유전체 램(FRAM) 셀을 포함할 수 있다.
또한, 본 발명의 한 실시예에 따른, 데이터 저장 장치로서,
복수의 아날로그 메모리 셀을 포함하는 메모리; 및
메모리에 연결되어 있는 메모리 신호 프로세서(MSP)를 포함하고, 상기 MSP는 메모리가 호스트 시스템에서 사용중인 동안 메모리 셀의 각각의 달성가능한 저장 용량을 트래킹하고, 트래킹된 달성가능한 용량을 기초로 데이터를 저장할 한 서브셋의 메모리 셀을 선택하고, 그리고 상기 서브셋의 메모리 셀에 데이터를 저장하도록 배열되어 있는 장치가 제공된다.
본 발명은 도면을 참조하여 아래의 실시예의 상세한 설명으로부터 더욱 완전히 이해될 것이다.
도 1은 본 발명의 한 실시예에 따른 메모리 시스템을 개략적으로 도시하는 블록 다이어그램이고;
도 2는 본 발명의 한 실시예에 따른 메모리 셀 어레이를 개략적으로 도시하는 다이어그램이고;
도 3은 본 발명의 한 실시예에 따른 한 어레이의 멀티-레벨 메모리 셀 내의 전압분포를 도시하는 그래프이고;
도 4는 본 발명의 한 실시예에 따른 메모리 셀 어레이 내의 셀 용량 분포를 도시하는 그래프이고;
도 5는 본 발명의 한 실시예에 따른 메모리 셀 어레이 내의 블록 및 페이지 구조를 도시하는 다이어그램이고;
도 6-11은 본 발명의 실시예에 따른 메모리 디바이스 저장 밀도를 적응 조절하는 방법을 개략적으로 도시하는 플로우차트이고;
도 12는 본 발명의 한 실시예에 따른 가변용량 메모리 디바이스에 데이터를 저장하는 방법을 개략적으로 도시하는 플로우차트이고;
도 13은 본 발명의 한 실시예에 따른 가변용량 메모리 디바이스로부터 데이터를 삭제하는 방법을 개략적으로 도시하는 플로우차트이고; 그리고
도 14-17은 본 발명의 실시예에 따른 가변용량 메모리 디바이스에 고정크기 데이터 블록을 저장하는 방법을 개략적으로 도시하는 다이어그램이다.
개요
플래시 메모리와 같은, 아날로그 메모리 셀 어레이의 달성가능한 저장 용량은 시간에 따라 변한다. 많은 경우에서, 메모리 셀 어레이의 달성가능한 용량은 반복된 프로 그래밍 및 삭제 오퍼레이션, 에이징, 및 다른 효과로 인해 시간이 흐를수록 감소한다. 이러한 용량 변화는 종종 어레이 내의 셀마다 다르다. 한편, 메모리 디바이스는 통상적으로 특정 신뢰 레벨에서 특정 용량을 제공하고, 특정 데이터 보유기간 동안 이러한 명세사항을 충족시키도록 특정된다.
몇몇 공지된 메모리 디바이스, 및 관련 저장 방법은 메모리 셀 어레이의 크기 및 성능을 오버-디자인, 또는 오버-스펙화함으로써 가변 셀 용량을 해결한다. 이러한 디바이스에서, 다수의 메모리 셀 및 그 성능이 원하는 보유기간동안, 주어진 예상 열화에서, 그 디바이스를 스펙 내로 유지할 만큼 충분히 큰 마진과 함께 특정된다. 이러한 설계 방법은 종종 비효율적이고, 비용 및 복잡도를 증가시키고, 그 메모리 디바이스의 사용가능한 용량을 감소시킨다.
본 발명의 실시예는 데이터가 저장되는 밀도를 적응 조절함으로써, 메모리 디바이스에 데이터를 저장하는 개선된 방법 및 시스템을 제공한다.
몇몇 실시예에서, 메모리 신호 프로세서(MSP)는 플래시 또는 DRAM 디바이스와 같은, 복수의 아날로그 메모리 셀을 포함하는 메모리 디바이스에 데이터를 저장한다. MSP는 메모리 셀의 달성가능한 저장 용량을 지속적으로 추정한다. MSP는 메모리 셀 내의 왜곡 레벨, 그 데이터에 대하여 특정된 신뢰도 및/또는 보유 요구사항, 그 셀에서 프로그래밍된 데이터에서 검출된 에러, 및/또는 그 셀이 겪은 이전 프로그래밍 및 삭제 오퍼레이션의 히스토리와 같은 팩터를 기초로 달성가능한 용량을 추정할 수 있다.
이 추정된 달성가능한 용량을 기초로, MSP는 메모리 셀에 각각의 저장 컨피규레이션을 할당한다. 각각의 저장 컨피규레이션은 각각의 메모리 셀에 저장될 수 있는 데이터의 크기를 정의한다. 예를 들어, 저장 컨피규레이션은 노미널 전압 레벨의 개수, 및 메모리 셀에 데이터를 저장하기 위해 사용되는 ECC 스킴을 정의할 수 있다. 몇몇 실시예에서, MSP는 소정의 컨피규레이션의 제한된 세트로부터 적합한 저장 컨피규레이션을 선택한다.
MSP는 그 셀에 할당된 저장 컨피규레이션에 따라 메모리 셀에 데이터를 저장한다. MSP는 데이터가 메모리 셀에 저장된 밀도가 그 셀의 달성가능한 용량과 매칭하도록, 메모리의 수명 전체의, 시간에 걸쳐 저장 컨피규레이션을 적응 조절한다.
저장 밀도가 아프리오리(a-priori) 특정되어 있는 몇몇 공지된 메모리 디바이스 및 데이터 저장 방법과 달리, 본 명세서에 서술된 방법 및 시스템은 메모리 어레이의 수명 사이클에 걸쳐 상이한 메모리 셀의 달성가능한 용량을 트래킹하고, 그에 따라 데이터가 저장되는 밀도를 지속적으로 조절한다. 그 결과, 본 메모리 디바이스의 달성가능한 용량은 그것이 시간에 따라 변할 때 최적의 상태로 활용될 수 있고, 그러므로 크기 및 비용을 감소시킨다.
MSP는 메모리 컨트롤러, 또는 다른 호스트와 상호작용한다, 즉 메모리 컨트롤러로부터 저장할 데이터를 수신하고, 메모리 컨트롤러에 의해 요청시 메모리에 저장된 데이터를 추출한다. 몇몇 실시예에서, MSP는 가변용량을 가진 셀 그룹에 데이터를 저장했다 할지라도, 메모리 컨틀롤러를 향해 고정용량 오퍼레이션을 에뮬레이팅한다. 예컨대, MSP가 고정 룡량 및 고정 페이지 크기를 가진 메모리 디바이스를 컨트롤하도록 설계된 레거시(legacy) 메모리 컨트롤러와 상효작용할 때, 몇몇 방법이 사용된다. 그러므로, 메모리 컨트롤러의 고정용량 오퍼레이션과 본 명세서에 서술된 저장 방법의 적응-용량 특성 사이의 중재에 의해, 레거시 메모리 컨트롤러가 변형없이 사용될 수 있다.
시스템 설명
도 1은 본 발명의 한 실시예에 따른, 메모리 시스템(20)을 개략적으로 도시하는 블록 다이어그램이다. 시스템(20)은 컴퓨팅 디바이스, 셀룰러 폰, 또는 다른 통신 터미널, 제거가능한 메모리 모듈(예컨대, "디스크-온-키" 디바이스), 디지털 카메라, 음악 및 다른 미디어 플레이어, 및/또는 데이터가 저장되고 추출되는 임의의 다른 시스템 또는 디바이스와 같은, 다양한 호스트 시스템 및 디바이스에서 사용될 수 있다. 전형적인 어플리케이션에서, 메모리 시스템(20)은 메모리 컨트롤러(22)와 상호작용한다, 즉 메모리 컨트롤러로부터 저장할 데이터를 수신하고, 요청시 메모리에 저장된 데이터를 메모리 컨트롤러로 출력한다.
시스템(20)은 메모리 셀 어레이(28)에 데이터를 저장하는 메모리 디바이스(24)를 포함한다. 메모리는 복수의 아날로그 메모리 셀(32)을 포함한다. 본 발명의 명세서 및 청구항에서, 용어 "아날로그 메모리 셀"은 전압 또는 전하와 같은, 물리적 파라미터의 연속적인 아날로그 값을 보유하는 임의의 메모리 엘리먼트를 설명하기 위해 사용된다. 어레이(28)는, 예컨대, NAND 및 NOR 플래시 셀, PCM, NROM, FRAM, MRAM, 및 DRAM 셀과 같은, 임의의 종류의 아날로그 메모리 셀을 포함할 수 있다. 셀에 저장된 전하 레벨, 및/또는 셀에 기록되고 판독되는 아날로그 전압은 본 명세서에서 아날로그 값으로 통칭한다.
메모리 디바이스(24)에 저장할 데이터는 디바이스에 제공되고 데이터 버퍼(36)에 캐싱된다. 그 다음, 이 데이터는 아날로그 전압으로 변환되고, 그 기능부가 아래에 더 상세하게 서술되어 있는, 판독/기록(R/W) 유닛(40)을 사용하여 메모리 셀(32)에 기록된다. 어레이(28)에서 데이터를 판독할 때, 유닛(40)은 전하, 및 그러므로 메모리 셀(32)의 아날로그 전압을 각각이 한 레졸루션의 하나 이상의 비트를 가진 디지털 샘플로 변환한다. 유닛(40)에 의해 산출된 샘플은 버퍼(36)에 캐싱된다. 메모리 디바이스(24)의 오퍼레이션 및 타이밍은 컨트롤 로직(48)에 의해 관리된다.
메모리 디바이스(24)에 데이터를 저장하고 추출하는 것은 메모리 신호 프로세서(MSP, 52)에 의해 수행된다. MSP(52)는 메모리 디바이스(24)와 메모리 컨트롤러(22) 또는 다른 호스트를 중개한다. 아래에 상세히 서술된 바와 같이, MSP(52)는 메모리 셀(32)의 달성가능한 용량을 적응 추정하고, 추정된 셀 용량을 기초로 메모리 어레이(28) 내 데이터의 저장 및 추출을 관리하는 독창적인 방법을 사용한다. MSP(52)는 그 시스템의 수명에 걸처 최적의 용량을 제공하기 위해, 데이터가 어레이(28)에 저장된 밀도를 적응 조절한다.
MSP(52)는 셀의 달성가능한 용량에 따라, 메모리 셀(32)에 데이터를 상이한 밀도로 기록할 수 있다. 본 명세서 및 청구항에서, 용어 "용량"은 주어진 셀 또는 셀 그룹이 신뢰성 있게 보유할 수 있는 (통상적으로 셀당 비트 단위로 표현된) 정보량을 설명하기 위해 사용된다. 용어 "밀도"는 한 셀 또는 셀 그룹에 실제로 저장되는, 통상적으로 셀당 비트 단위인, 정보량을 설명하기 위해 사용된다. 그러므로, 정보는 그 용량이 초과되지 않는 한, 한 그룹의 셀에 상이한 밀도로 신뢰성있게 저장될 수 있고, 그 데이터는 신뢰성 있게 저장된 것으로 가정한다.
MSP(52)는, 예컨대, 셀(32)에 데이터를 기록하기 위해 사용되는 전압 레벨의 개수를 변경시킴으로써, 데이터가 셀(32)에 저장되는 밀도를 변경할 수 있다. 더 많은 개수의 전압 레벨을 사용하는 것은 더 높은 정보 밀도를 가능하게 한다. 몇몇 실시예에서, MSP(52)는 ECC를 사용하여 디바이스(24)에 저장된 데이터를 인코딩한다. MSP(52)는 디바이스(24)에 기록된 데이터를 인코딩하고, 디바이스(24)로부터 판독된 데이터를 디코딩하는 인코더/디코더(64)를 포함한다. 몇몇 실시예에서, MSP(52)는 상이한 코드를 선택하거나, ECC의 코드 레이트를 변경함으로써, 정보 밀도를 변경한다.
신호 프로세싱 유닛(60)은 디바이스(24)에 기록되고 추출되는 데이터를 프로세싱한다. 더욱 상세하게는, 유닛(60)은 셀(32)에서 판독된 전압에 존재하는 왜곡을 추정한다. 추정된 왜곡은 셀(32)의 달성가능한 용량을 추정하고, 사용될 원하는 저장 밀도를 결정하기 위해 사용된다. MSP(52)는 데이터를 저장하기 위해 유닛(60)에 의해 사용되고, 메모리 디바이스(24)와 통신하는 인터페이스로서 역할하는 데이터 버퍼(72)를 포함한다. MSP(52)는 또한 MSP와 메모리 컨트롤러 사이의 인터페이스를 형성하는 입/출력(I/O) 버퍼(56)를 포함한다.
메모리 관리 유닛(76)은 MSP(52)의 오퍼레이션 및 타이밍을 관리한다. 더욱 상세하게, 유닛(76)은 MSP(52)가 그것의 추정된 용량과 매칭하는 밀도로 각각의 셀 또는 그룹에 데이터를 저장하도록, 각각의 메모리 셀 또는 셀 그룹의 추정된 용량 및 상태를 트래킹한다. 신호 프로세싱 유닛(60), 및 관리 유닛(76)은 하드웨어로 구현될 수 있다. 대안으로서, 유닛(60), 및/또는 유닛(76)은 덕합한 소프트웨어를 구동하는 마이크로프로세서, 또는 하드웨어와 소프트웨어 엘리먼트의 조합을 포함할 수 있다. 몇몇 실시예에서, 인코더/디코더(64), 또는 그 일부는 또한 소프트웨어로 구현될 수 있다. 몇몇 실시예에서, MSP(52)의 기능부는 종종 소프트웨어로 구현될 수 있고, 적절한 프로세서, 또는 호스트 시스템의 다른 엘리먼트에 의해 수행될 수 있다.
도 1의 구성은 명료함을 위해 간단하게 도시된, 한 예시적인 시스템 구성이다. 임의의 다른 적합한 구성이 또한 사용될 수 있다. 다양한 인터페이스, 어드레싱 회로, 타이밍 및 시퀀싱 회로, 데이터 스크램블링 회로, 및 디버깅 회로와 같은, 본 발명의 원리를 이해하는데 불필요한 엘리먼트는 명료함을 위해 도면에서 생략되었다.
몇몇 실시예에서, 메모리 디바이스(24), 및 MSP(52)는 두 개의 개별 집적회로(ICs)로 구현된다. 그러나, 대안의 실시예에서, 메모리 디바이스, 및 MSP는 단일 IC, 또는 시스템온칩(SoC)으로 구현될 수 있다. 시스템(20)의 임의의 실시예의 추가적인 아키덱처 특성은 미국 가특허 출원 제60/867,399호에 더욱 상세히 서술되어 있다. 대안으로서, 메모리 컨트롤러의 모든 또는 일부의 기능부는 MSP(52)에 내장될 수 있고, 이는 아래에 더욱 상세히 설명되어 있다.
전형적인 기록 오퍼레이션에서, 메모리 디바이스(24)에 기록될 데이터는 메모리 컨트롤러(22)로부터 수신되고, I/O 버퍼(56)에 캐싱된다. 메모리 관리 유닛(76)은 그 데이터가 기록될 셀을 결정한다. 유닛(76)은 또한 지정된 셀의 추정된 용량을 기초로, 사용될 저장 컨피규레이션(예컨대, 전압 레벨의 개수, 및 코드 레이트)을 결정한다. 인코더/디코더(64)는 데이터를 인코딩하고, 인코딩된 데이터는, 데이터 버퍼(72)를 통해, 메모리 디바이스(24)로 전송된다. 디바이스(24)에서, 데이터는 일시적으로 버퍼(36)에 저장된다. R/W 유닛(40)은 그 데이터를 아날로그 값으로 변환하고, 어레이(28)의 적합한 셀(32)에 그 데이터를 저장한다.
전형적인 판독 오퍼레이션에서, R/W 유닛(40)은 적합한 메모리 셀(32)로부터 아날로그 전압 값을 판독하고, 그 전압을 디지털 샘플로 변환한다. 이 셈블은 버퍼(36)에 캐싱되고, MSP(52)의 버퍼(72)로 전송된다. 데이터 블록이 버퍼(72)로부터 유닛(60)으로 전송되고, 인코더/디코더(64)는 이들 블록의 ECC를 디코딩한다. 디코딩된 데이터는 I/O 버퍼(56)를 통해 메모리 컨트롤러(22)로 전송된다.
메모리 컨트롤러(22)는 때때로 'Phison Electronics Corp.'(타이완 신주 추퉁)에 의해 제공된 'PS8000' NAND 플래시 컨트롤러 디바이스와 같은 주지된 디바이스를 포함할 수 있다. 이 디바이스는 2007년 3월 28일, "PS8000 Controller Specification", revision 1.2에 서술되어 있다. 다른 공지된 메모리 컨트롤러는 'Denali Software, Inc.'(캘리포니아주 팔로 알토)에 의해 제공되는, 'Databahn™' 플래시 메모리 컨트롤러 IP이다. 이 제품에 관한 세부적인 내용은 www.denali.com/products/databahn_flash.html에서 이용가능하다. 또 다른 예는 'Datalight, Inc'(워싱턴주 보셀)에 의해 제공되는 'FlashFX Pro®' 플래시 미디어 매니저이다. 이 디바이스는 2006년 11월 16일의, "FlashFX Pro 3.1 High Performance Flash Manager for Rapid Development of Releable Products"에 서술되어 있다. 메모리 컨트롤러(22)가 종래의 메모리 컨트롤러 디바이스를 포함한 때, 종종 메모리 디바이스와 통신하기 위한 소정의 인터페이스 및 프로토콜을 가진다. 이들 인터페이스 및 프로토콜은 고정 저장 용량을 가진 메모리 디바이스와 통신하도록 통상적으로 설계된다. 몇몇 실시예에서, MSP(52)는 메모리 컨트롤러(22)에 의해 사용되는 데이터 구조, 인터페이스, 및 프로토콜을 에뮬레이팅하고, 그러므로, 시스템(20)의 적응용량 특성과 메모리 컨트롤러(22)의 고정용량 특성 사이을 중재한다. 몇몇 예시적인 방법이 아래 도 14-17에서 서술된다.
대안의 실시예에서, 메모리 관리 기능의 일부는 MSP(52)에서 구현된다. 이러한 실시예에서, MSP는 저장할 데이터 아이템을 수신하고, 고정용량 오퍼레이션을 에뮬레이팅할 필요없이, 데이터 아이템을 가변용량 페이지로 분할하고 저장할 수 있다.
MSP(52)와 메모리 디바이스(24) 사이의 인터페이스, 및/또는 MSP(52)와 메모리 컨트롤러(22) 사이의 인터페이스는 공지된 표준 또는 프로토콜을 따를 수 있다. 예를 들어, 이들 인터페이스 중 하나 또는 모두는 오픈 NAND 플래시 인터페이스(ONFI) 명세사항을 따를 수 있다. INFI 명세사항은 2006년 12월 28일의 "Open NAND Flash Interface Specification", 리비전 1.0에 서술되어 있다.
메모리 어레이 구조 및 왜곡 메카니즘
도 2는 본 발명의 한 실시예에 따른, 메모리 셀 어레이(28)를 개략적으로 도시하는 다이어그램이다. 도 2는 특정 어래이 구조로 연결된 플래시 메모리 셀을 도시하였으나, 본 발명의 원리는 다른 타입의 메모리 셀, 및 다른 어레이 구조에 적용가능하다. 몇몇 예시적인 셀 타입 및 어레이 구조는 앞서 배경기술에서 언급했던 참조문헌에 서술되어 있다.
어레이(28)의 메모리 셀(32)은 복수의 로우 및 칼럼을 가진 그리드에 배열된다. 각각의 셀(32)은 플로팅 게이트 모스(MOS) 트랜지스터를 포함한다. 특정 전하(전자 또는 홀)의 양은 트랜지스터의 게이트, 소스, 및 드레인에 적합한 전압 레벨을 인가함으로써 특정 셀에 저장될 수 있다. 셀에 저장된 값은 그 트랜지스터를 통전시키기 위해 그 트랜지스터의 게이트에 인가되어야 할 최소 전압으로 정의된 셀의 임계값을 측정함으로써 판독될 수 있다. 판독된 임계 전압은 셀에 저장된 전하에 비례한다.
도 2의 예시적인 구성에서, 각각의 로우의 트랜지스터의 게이트는 워드 라인(80)에 의해 연결되어 있다. 각각의 칼럼의 트랜지스터의 소스는 비트 라인(84)에 의해 연결되어 있다. 몇몇 NOR 셀 디바이스와 같은, 몇몇 실시예에서, 소스는 비트 라인에 직접 연결된다. 몇몇 NAND 셀 디바이스와 같은, 대안의 실시예에서, 비트 라인은 프로팅-게이트 셀의 스트링에 연결된다.
전형적으로 R/W 유닛(40)은 그것의 게이트에(셀이 연결되어 있는 워드 라인에) 가변 전압 레벨을 인가하고, 셀의 드레인 전류가 특정 임계값을 초과하였는지 (트랜지스터가 통전인지) 체크함으로써, 특정 셀(32)의 임계 전압을 판독한다. 유닛(40)은 통상적으로 셀이 연결된 워드 라인에 한 시퀀스의 상이한 전압을 인가하고, 드레인 전류가 임계값을 초과하기 위한 최소 게이트 전압을 결정한다. 전형적으로 유닛(40)은 특정 로우로부터의 한 그룹의 셀을 동시에 판독한다.
몇몇 실시예에서, 유닛(40)은 특정 전압 레벨에 셀의 비트 라인을 미리-차징함으로써 드레인 전류를 측정한다. 게이트 전압이 원하는 값으로 설정된 후, 드레인 전류는 그 비트라인 전압을 그 셀을 통해 방전되게 한다. 유닛(40)은 게이트 전압이 인가된 마이크로초 후 그 비트라인 전압을 측정하고, 그 비트라인 전압을 임계값과 비교한다. 몇몇 실시예에서, 각각의 비트 라인(84)은 비트 라인 전류를 증폭하고, 그 전류를 전압으로 변환하는, 각각의 센스 증폭기에 연결된다. 그 전압은 비교기를 사용하여 임계값과 비교된다.
상술된 전압 판독 방법은 한 예시적인 방법이다. 대안으로서, R/W 유닛(40)은 셀(32)의 입계 전압을 판독하기 위한 임의의 다른 적합한 방법을 사용할 수 있다. 예를 들어, 유닛(40)은 비트라인 전압을 디지털 샘플로 변환하는 하나 이상의 아날로그 투 디지털 컨버터(ADCs)를 포함할 수 있다.
몇몇 실시예에서, 전체 페이지(로우)는 병렬로 기록되고 판독된다. 셀의 삭제는 통상적으로 복수의 페이지를 포함하는 블록에서 수행된다. 전형적인 메모리 디바이스는 수십만 페이지를 포함하고, 각각의 페이지는 수천 셀(예컨대, 셀당 16K, 또는 32K)을 포함한다. 전형적으로, 삭제 블록은 128페이지 단위이나, 다른 블록 크기가 또한 사용될 수 있다.
R/W 유닛(40)의해 디지털화된 전압은 어레이(28) 내의 상이한 왜곡 메카니즘에 의해 발생된, 다양한 타입의 왜곡을 포함할 수 있다. 몇몇 왜곡 메카니즘은 셀에 저장된 실제 전하에 영향을 주고, 다른 메카니즘은 센싱된 전압을 왜곡시킨다. 예를 들어, 어레이 내의 인접 셀간의 전기 커플링은 특정 셀 내의 임계 전압을 변경할 수 있다. 이러한 효과를 간섭 노이즈라 한다. 다른 예로서, 전하는 시간에 따라 셀에서 누수될 수 있다. 이러한 에이징 효과의 결과, 셀의 임계 전압은 최초 기록된 값에서 시간에 따라 드리프트될 수 있다.
다른 셀의 의도되지 않은 프로그래밍 또는 삭제를 야기하는, 통상적으로 교란 노이즈라 하는 다른 타입의 왜곡은 어레이 내의 특정 셀 상의 판독, 기록, 또는 삭제 오퍼레이션에 의해 발생된다. 또 다른 예로서, 특정 셀의 소스-드레인 전류는 백 패턴 의존이라 하는 효과를 통해, 인접 셀, 예컨대, 동일한 NAND 셀 스트링 내의 다른 셀 내의 전하에 의해 영향을 받을 수 있다.
왜곡/용량 트레이드 오프
도 3은 본 발명의 한 실시예에 따른, 메모리 셀 `28 내의 전압분포를 도시하는 그래프이다. 도 3은 메모리 셀의 달성가능한 용량에 대한 왜곡의 효과를 설명하기 위해 사용된다. 그 전압분포가 도 3에 도시된 메모리 셀은 90A,...90D로 지시된 4개의 노미널 전압 레벨을 사용하여 두 비트의 정보를 각각 저장하도록 구성되어 있다.
메모리 셀에 두 개의 데이터 비트를 저장하기 위해, R/W 유닛(40)은 4개의 노미널 전압 레벨 중 하나를 셀에 기록한다. 본 예에서, 전압 레벨(90A)은 "11" 비트 값에 대응하고, 전압 레벨(90B,...90D)은 각각 "01", "00", 및 "10" 비트 값에 대응한다.
R/W 유닛이 특정의 노미널 전압 레벨을 기록하지만, 셀의 실제 입계 전압은 상이한 왜곡 메카니즘으로 인해, 그리고 셀의 프로그래밍 및 삭제의 제한된 정밀도로 인해, 통상적으로 노미널 레벨로부터 편차를 가진다. 플롯(92A,...92D)은 한 예시적인 전압분포를 도시한다. 플롯(92A)은 "11"비트 값을 저장한 셀 내의 전압분포를 도시한다. 플롯(92B, 92C, 및 92D)는 각각 "01", "00", 및 "10" 비트 값을 저장한 셀 내의 전압분포를 도시한다. 판독시 전압분포는 에이징 및 다른 왜곡 메카니즘으로 인해, 기록시 전압분포와 상이할 수 있음을 알아야 한다.
임계 전압의 전체 범위는 3개의 임계치(94A,...,94C)를 정의함으로써 4개의 구간(96A,...,96D)으로 분할된다. 메모리 셀의 임계 전압 레벨을 판독할 때, 구간(96A)에 속하는 전압 레벨은 "11" 비트 값에 대응하는 것으로 가정한다. 이와 유사하게 구간(96B,...,96D)에 속하는 전압 레벨은 각각 "01", "00", 및 "10" 비트 값에 대응하는 것으로 가정한다. 그러므로, 구간(96A,...,96D)은 종종 디시전 구간이라 하고, 임계치(94A,..94C)는 디시전 임계치라 한다.
특정 데이터 비트 값에 응답하여 기록된 전압이 잘못된 디시전 구간에 속할 때, 셀로부터 판독된 데이터는 기록된 데이터와 다르고, 판독 에러를 야기한다. 주어진 왜곡 레벨에 대하여, 그 셀의 에러 성능과 달성가능한 용량 사이의 트레이드 오프가 존재한다. 노미널 전압 레벨의 개수가 증가할 때(즉, 저장 밀도가 증가할 때), 디시전 구간의 크기는 왜곡 효과에 대하여 더 작아진다. 그 결과, 판독된 전압은 드리프트, 또는 잘못된 디시전 구간에 속할 가능성이 더 크고, 에러 확률이 증가한다. 주어진 에러 확률에 대하여, 셀의 달성가능한 용량은 에러 레벨이 증가할 수록 낮아진다.
메모리 셀 어레이에서의 셀 용량 변경
상술된 바와 같이, 메모리 셀의 달성가능한 용량(즉 그 셀에 신뢰성 있게 프로그래밍될 수 있는 정보 비트의 개수)은 특정 셀의 왜곡 레벨에 의존한다. 많은 실제 경우에, 달성가능한 용량은 셀마다 상당히 상이하다.
어레이(28) 내의 상이한 셀(32)은 종종 상이한 왜곡 특성을 가진다. 예를 들어, 삭제 블록의 외부 경계에 위치한 셀과 같은, 일부의 셀은 소수의 이웃 셀을 가지고, 그러므로 인접한 셀로부터 낮은 레벨의 크로스 커플링 노이즈를 가진다. 다른 예로서, 셀을 프로그래밍하는 것은 이미 프로그래밍된 셀에 간섭, 왜곡, 및 백 패턴 의존 에러를 발생시키기 때문에, 나중에 프로그래밍되는 셀은 이전에 프로그래밍된 셀보다 낮은 레벨의 에러를 가질 수 있다. 또 다른 예로서, 임의의 센스 증폭기 또는 ADC는 특정 비트 라인에의 셀이 다른 비트 라인에 비해 더 큰 왜곡을 가지게 만드는 매우 높은 노이즈 레벨을 도입할 수 있다. 다른 왜곡 특성은 특정 셀에서 수행된 프로그래밍 및 삭제 오퍼레이션의 히스토리 또는 그 환경에 의전할 수 있다. 이들 및 다른 팩터로 인해, 셀(32) 내의 왜곡, 및 결과적으로 셀의 달성가능한 용량은 어레이(28)에 걸쳐 상당하게 변한다.
도 4는 본 발명의 한 실시예에 따른 메모리 셀 어레이 내의 한 예시적인 셀 용량 분포를 도시하는 그래프이다. 플롯(100)은 상이한 셀의 달성가능한 용량을 도시한다. 본 예에서, 달성가능한 용량은 대략 셀당 4.2 내지 7.3비트 사이에서 변한다. 플롯(104)은 원하는 데이터 보유기간에 걸쳐 신뢰 성능을 보장하기 위해 임의의 안전 마진을 가정한, 셀을 프로그래밍 하기 위해 사용될 수 있는 실제 저장 밀도를 도시한다. 도면에서 알수 있는 바와 같이, 저장 밀도는 플롯(104)에 따라 각각의 메모리 셀에 개별적으로 할당되어 있을 때, 달성되는 평균 밀도는 셀당 5비트 보다 더 크다.
도 4의 어레이의 메모리 셀이 고정 저장 밀도로 할당되어 있다면, 전체 어레이는 대부분의 셀이 훨씬 더 큰 용량을 달성할 수 있다 하더라도, 단지 셀당 3비트를 가진 것으로 특정해야 할 것이다. 배드 블록 관리(BBM) 방법을 사용한 몇몇 공지된 메모리 디바이스에서, 이 어레이는 오류(faulty)로 인식된 일부 셀 그룹과 함께, 셀당 4비트로 특정될 수 있다. BBM 방법은, 예컨대, 2004년 11월 29일의, 'STMicroelectronics(Geneva, Switzerland)'의 "Bad Block Management in NAND Flash Memories", Apllication note AN-1819에 서술되어 있다.
본 방법 및 시스템은 그 셀의 달성가능한 용량과 매칭하는 밀도로 각각의 셀 또는 셀 그룹에 데이터를 저장한다. 낮은 왜곡 레벨을 가진 셀은 높은 용량이 할당되고, 더 강한 왜곡이 있는 셀은 낮은 용량이 할당된다. 본 방법 및 시스템은 그 어레이의 전체 수명 동안 왜곡 및 용량의 변화를 트래킹하고, 그에 따라 데이터가 상이한 셀에 저장되는 밀도를 적응 조절한다.
각각의 셀에 대하여 또는 셀의 그룹에 통합적으로 셀 용량이 추정될 수 있고, 저장 밀도가 할당될 수 있다. 작은 그룹의 셀에 개별 밀도를 할당하는 것은 더 복잡한 관리 비용을 희생하여, 달성가능한 용량과 저장 밀도의 더 미세한 매칭을 가능하게 하고, 또한 그 역도 가능하다.
도 5는 본 발명의 한 실시예에 따른, 메모리 셀 어레이(110) 내의 블록 및 페이지 구조를 도시하는 다이어그램이다. 어레이(110)는 복수이 로우(114)를 포함한다. 메모리 페이지는 동시에 기록될(프로그래밍될) 수 있는 한 그룹의 메모리 셀로 정의된다. 몇몇 경우에, 각각의 페이지는 전체 로우의 메모리 셀을 포함한다. 다른 경우에, 각각의 로우는 수 개의 페이지로 분할될 수 있다. 데이터는 삭제 블록(118)이라 하는, 페이지 그룹을 동시에 삭제함으로써, 어레이(110)로부터 삭제된다. 예를 들어, 전형적인 페이지는 16,384 셀을 포함할 수 있고, 전형적인 삭제 블록은 128페이지를 포함할 수 있으나, 다른 크기 또한 사용될 수 있다. 몇몇 실시예에서, 각각의 페이지는 수 개의 섹터로 분할될 수 있다(본 도면에는 도시되지 않음).
아래 설명에서, 기본 용량 및 밀도 할당은 단위는 페이지이다. 즉, 특정 페이지 내의 모든 메모리 셀은 동일한 개수의 전압 레벨, 및 동일한 ECC를 사용하여 프로그래밍된다. 상이한 페이지는 전압 레벨의 개수, 및/또는 ECC를 조절함으로써 상이한 밀도가 할당될 수 있다. 대안의 실시예에서, 용량 추정 및 밀도 할당은 페이지 바이 페이지, 블록 바이 블록, 섹터 바이 섹터, 또는 심지어 셀 바이 셀 단위와 같은, 임의의 원하는 입도(granularity)를 가진 셀 그룹을 사용하여 수행될 수 있다. 몇몇 실시예에서, 용량 추정 및 밀도 할당은 특정 비트 라인(84) 또는 워드 라인(80)에 연결된 셀에 대하여 공동으로 수행될 수 있다.
적응형 밀도 할당 방법
아래 설명은 본 발명의 실시예에 따라, 메모리 셀(32)의 그룹, 예컨대, 페이지의 달성가능한 용량을 추정하고, 메모리 디바이스(24) 의 저장 밀도를 적응 조절하는 몇가지 예시적인 방법을 설명한다.
몇몇 실시예에서, MSP(52) 내의 관리 유닛(76)은 각각의 페이지에 대하여, 저장 컨피규레이션이라 하는 한 세트의 파라미터를 가진 저장 컨피규레이션 테이블을 보유한다. 특정 페이지의 저장 컨피규레이션은 데이터가 페이지에 어떻게 저장될지 결정하고, 그 페이지의 메모리 셀에 저장하기 위해 사용될 전압 레벨의 개수, 전압 레벨의 값, 그 페이지 내의 데이터를 인코딩하기 위해 사용된 ECC, 및/또는 임의의 다른 적합한 파라미터와 같은, 파라미터를 포함할 수 있다. 격자 코드 변조(TCM, Trellis Coded Modulation) 또는 다른 코드 변조 방법이 사용된 때와 같은, 몇몇 경우에, ECC 및 전압 레벨의 선택은 결합된다. 이러한 저장 컨피규레이션을 가진, 저장 컨피규레이션 테이블은 그 페이지의 추정된 왜곡 레벨, 및 추정된 달성가능한 용량과 같은 파라미터를 보유할 수 있다. 몇몇 실시예에서, 저장 컨피규레이션의 초기값은 제조시 저장 컨피규레이션 테이블에 저장될 수 있다.
특정 페이지에 데이터를 기록할 때, MSP(52)는 그 페이지의 저장 컨피규레이션을 요청한다. MSP는 적합한 ECC를 사용하여 데이터를 인코딩하고, 인코딩된 데이터를 그 페이지의 저장 컨피규레이션에 의해 지시된, 적합한 전압 레벨의 개수에 맵핑한다. 몇몇 실시예에서, 특정 페이지로부터 데이터를 판독할 때, MSP는 그 페이지의 저장 컨피규레이션에 의해 지시된 레벨의 개수에 따라, R/W 유닛(40)에 의 해 산출된 샘플을 하드 비트 디시전으로 변환한다. 그 다음, MSP는 ECC를 디코딩하기 위해, 저장 컨피규레이션에서 지시된 ECC로 ECC 디코더를 설정한다. 대안으로서, 예컨대, 디코더가 소프트 디코더를 포함할 때, MSP는 하드 디시전을 생성하지 않고 소프트 디코더를 사용하여 R/W 유닛(40)에 의해 산출된 샘플을 디코딩한다.
상이한 개수의 전압 레벨을 사용하는 것은 비교기, ADCs, DACs, 센스 증폭기, 및 관련 회로의 설계와 같은, R/W 유닛(40)의 설계에 영향을 줄 수 있다. 몇몇 실시예에서, R/W 유닛의 민감도 및 레졸루션은 사용된 전압 레벨의 최대 개수와 매칭하도록 설계된다. 대안의 실시예에서, 유닛(40)은 증가하는 레졸루션의 수차례 반복하여(예컨대, 각각의 반복에 상이한 임계값을 사용함으로써) 페이지로부터 임계 전압을 판독할 수 있다. 관리 유닛(76)은 특정 페이지에 저장하기 위해 사용된 레벨의 개수를 기초로, 바람직한 반복 횟수, 및 결과적인 레졸루션을 결정할 수 있다.
도 6은 본 발명의 한 실시예에 따른, 메모리 디바이스(24)의 저장 밀도를 적응 조절하는 방법을 개략적으로 도시하는 플로우 차트이다. 본 방법은 왜곡 추정 단계(130)에서, MSP(52)가 메모리 셀(32) 내의 왜곡 레벨을 추정하는 단계와 함께 개시한다. MSP(52)는 셀 왜곡을 추정하는 상이한 방법을 사용할 수 있다.
예를 들어, 특정 타겟 셀 내의 왜곡을 추정하기 위해, MSP는 이웃 셀로부터 전압을 판독하고, 이웃 셀 간의 크로스 커플링 비율을 추정하고, 그리고 이웃 셀에 의한 누적 커플링 노이즈를 계산할 수 있다.
몇몇 실시예에서, MSP는 페이제 적용된 프로그래밍 오퍼레이션에 후속하여 임의의 페이지 내의 왜곡을 추정할 수 있다. 도 7은 한 예시적인 기록후 추정 방법을 도시한다. 대안으로서, MSP는 페이지에 적용된 판독 오퍼레이션 후 임의의 페이지 내의 왜곡을 추정할 수 있다. 도 8은 한 예시적인 판독후 추정 방법을 도시한다. 용량은 또한 프로그래밍된 데이터의 신뢰도를 검증함으로써, 예컨대, 에러없는 저장이 달성될 때까지 점점 강화되는 에러 보정 코드를 적용함으로써, 추정될 수 있다. 이러한 방법은 도 9에 서술되어 있다.
다른 대안으로서, 왜곡 레벨은 그 페이지가 겪은 프로그래밍 및 삭제 오퍼레이션의 히스토리를 기초로 추정될 수 있다. 프로그래밍 및 삭제 히스토리는 다양한 방법으로 왜곡 레벨에 영향을 줄 수 있다. 일반적으로, 늙은 셀(즉, 최근에 더 많은 횟수의 프로그래밍 삭제 오퍼레이션을 겪은 셀)은 더 적은 횟수의 프로그래밍 삭제 오퍼레이션을 격은 젊은 셀 보다 더 높은 누설전류를 가지는 것으로 간주된다. 그러므로, 왜곡은 또한 이전 프로그래밍 및 삭제 오퍼레이션 후 경과된 시간에 의해 영향을 받는다. 프로그래밍 및 삭제 오퍼레이션의 히스토리를 기초로 셀 용량을 추정하는 한 예시적인 방법이 도 11에 서술되어 있다.
MSP(52)는 저장 컨피규레이션 계산 단계(134)에서, 페이지 용량을 추정하고, 각각의 페이지에서 사용될 저장 컨피규레이션을 결정한다. MSP는 추정된 왜곡을 기초로 달성가능한 페이지 용량을 추정하고, 적합한 저장 컨피규레이션(예컨대, 전압 레벨의 개수, 및 ECC)을 선택하는 임의의 적합한 방법을 사용할 수 있다.
통상적으로, MSP는 추정된 용량과 설정된 저장 밀도 사이에 임의의 안전 마 진을 남겨둔다. 성능 마진이라고도 하는, 이러한 안전 마진은 원하는 데이터 보유기간에 걸처 신뢰성있는 오퍼레이션을 보장하기 위해 설정된다. 적합한 저장 컨피규레이션을 결정하는 몇가지 예시적인 방법이 아래에 서술되어 있다. MSP(52)의 유닛(76)은 저장 컨피규레이션 테이블을 새로 계산된 저장 컨피규레이션으로 갱신한다. MSP(52)는 기록 단계(138)에서, 갱신된 저장 컨피규레이션을 사용하여 어레이(28)의 페이지에 후속 데이터를 기록한다.
P&V 보조 밀도 할당
도 7은 본 발명의 다른 실시예에 따른, P&V 프로세스에 이어 디바이스(24)의 저장 밀도를 적응 조절하는 방법을 개략적으로 도시하는 플로우 차트이다.
P&V 프로세스는 메모리 셀을 프로그래밍하기 위해 일반적으로 사용된다. 전형적인 P&V 프로세스에서, 셀은 그 펄스 레벨이 펄스마다 증가하는 한 시퀀스의 전압 펄스를 적용함으로써 프로그래밍된다. 프로그래밍된 전압 레벨은 각각의 펄스 후 판독(검증)되고, 이러한 반복은 원하는 레벨에 도달할 때까지, 또는 오퍼레이션 시간이 종료할 때까지 계속된다. P&V 프로세스는, 'Junh et al.'의, "A 117㎟ 3.3V Only 128Mb Multilevel NAND Flash Memory for Mass Storage Applications"란 제목의, IEEE 저널 솔리드스테이트 회로, (11:31), 1996년 11월호, 1575-1583 페이지, 및 'Takeuchi et al.'의 "A Multipage Cell Architecture for High-Speed Programming Multilevel NAND Flash Memories"란 제목의, IEEE 저널 솔리드스테이트 회로, (33:8), 1998년 8월호, 1228-1238 페이지에 서술되어 있다.
도 7의 방법은 시스템(20)의 정상 오퍼레이션과 결합될 수 있다. 이러한 모 드의 오퍼레이션에서, 특정 그룹의 페이지(예컨대, 단일 페이지, 또는 수 개의 NAND 스트링을 포함한 NAND 메모리 블록)가 프로그래밍된 후, 그것의 왜곡 레벨이 추정되고, 그 저장 컨피규레이션이 다음 프로그래밍 오퍼레이션에서 사용하기 위해 갱신된다. 본 방법은 P&V 프로그래밍 단계(15)에서, MSP(52)가 P&V 프로세스를 사용하여 특정 그룹의 페이지를 프로그래밍하는 단계와 함께 개시한다. 마지막 P&V 반복에 후속하여, MSP는, 포스트 P&V 계산 단계(154)에서, 왜곡 통계를 계산한다. 마지막 P&V 반복은 본질적으로 그 페이지 내의 상이한 셀의 프로그래밍된 전압 레벨을 판독하는 것을 포함한다. MSP는 그 페이지 내의 왜곡 레벨을 계산하기 위해 이들 판독된 전압 레벨을 사용할 수 있다.
몇몇 경우에, 프로그래밍 검증에 사용된 판독 레졸루션은 신뢰도 왜곡 추정에 대하여 충분하지 못하다. 이러한 경우에, MSP는 검증 오퍼레이션의 판독 레졸루션 보다 더 높은 레졸루션으로, 프로그래밍된 페이지 그룹의 전압 레벨을 판독할 수 있다.
MSP(52)는 포스트 P&V 갱신 단계(158)에서, 페이지의 추정된 달성가능한 용량을 갱신한다. MSP는 그 페이지의 저장 컨피규레이션, 즉 적합한 전압 레벨의 개수, 및 ECC를 갱신하기 위해 계산된 왜곡 레벨을 사용한다. MSP는 갱신된 컨피규레이션을, 그 페이지의 다음 프로그래밍 오퍼레이션에서 사용하기 위해, 저장 컨피규레이션 테이블에 저장한다.
몇몇 실시예에서, MSP(52)는 프로그래밍 후 페이지 밀도를 증가시키려 할 수 있다. 이러한 실시예에서, MSP는 프로그래밍된 데이터가 충분히 신뢰성 있는지 (즉, 단계(154)에서 계산된 왜곡 통계가 마진이 낮은 에러 확률을 보장할 만큼 충분히 높음을 나타내는지)를 판단한다. 충분한 성능 마진이 존재하면, MSP는 전압 레벨의 개수, 및/또는 코드 레이트를 증가시킴으로써, 더 높은 밀도를 반영하도록 그 페이지의 저장 컨피규레이션을 조절한다.
페이지 저장 컨피규레이션이 P&V 프로세스와 결합하여 결정된 때, 상이한 트레이드 오프가 P&V 프로세스의 파라미터와 그 페이지의 저장 컨피규레이션 사이에 이루어질 수 있다. P&V 프로세서에서, 프로그래밍 속도는 후속 P&V 반복 사이에, 전압 증가, 또는 전압 간격 크기를 변경시킴으로써, 정밀도와 트레이드오프된다. 더 큰 P&V 간격 크기를 설정하는 것은 더 나쁜 프로그래밍 정밀도를 희생하여 더 적은 반복으로 그 페이지를 프로그래밍할 수 있게 하고, 또한 그 역도 가능하다. 이러한 트레이드 오프는, 예컨대, 'Suh et al.'의 "A 3.3V 32Mb NAND Flash Memory with Incremental Step Pulse Programming Scheme"이란 제목의, 솔리드 스테이트 회로의 IEEE 저널, 제11호, 1999년 11월, 1149-1156 페이지에 서술되어 있다.
몇몇 실시예에서, MSP(52)는 각각의 페이지에 대하여 특정의 P&V 간격 크기값을 설정한다. 이 P&V 간격 크기는 저장 컨피규레이션 테이블에 그 페이지의 저장 컨피규레이션의 일부로서 저장된다. 특정 페이지를 프로그래밍할 때, MSP는 그 페이지의 저장 컨피규레이션을 요청하고, 적합한 P&V 간격 크기를 사용한다.
P&V 간격 크기, 전압 레벨의 개수, 및 ECC는 상이한 성능 트레이드 오프를 제공하기 위해 선택될 수 있다. 예를 들어, 더 큰 P&V 간격 크기는 더 빠른 프로그래밍을 가능하게 하지만, 높은 에러 확률을 희생한다. 다른 예로서, 감소된 전 아 레벨은 또한 더 빠른 프로그래밍을 가능하게 하지만, 더 높은 에러 확률을 희생함은 물론, 더 낮은 왜곡 레벨, 간섭 레벨, 및 마모 레벨을 가능하게 한다. 에러 확률은 전압 레벨의 개수를 줄임으로써, 또는 더 강한 ECC를 도입함으로써 감소될 수 있으나, 낮은 저장 밀도를 희생한다. ECC의 선택은 MSP 복잡도에 영향을 미친다. 그러므로, 저장 밀도, 및/또는 에러 성능은 프로그래밍 속도와 트레이드 오프이다.
디시전-다이렉티드 밀도 할당
도 8은 본 발명의 또 다른 실시예에 따른, 판독 오퍼레이션에 이어 메모리 디바이스(24)의 저장 밀도를 적응 조절하는 방법을 개략적으로 도시하는 플로우 차트이다.
본 방법은 페이지 판독 단계(170)에서, MSP(52)가 디바이스(24)로부터 특정 메모리 페이지를 판독하는 단계와 함께 개시한다. MSP는 판독후 계산 단계(174)에서, 에러가 존재하지 않는 것을 가정하여 페이지 내의 왜곡 레벨을 계산한다. 전형적으로, MSP는 각각의 소프트 셈플과 대응 하드 디시전 사이의 차이를 계산한다. 디코딩 에러는 존재하지 않는 것으로 가정하였으므로, 이러한 차이는 왜곡에 영향을 준다. 하드 디시전은 ECC 디코더에 의해 산출될 수 있음을 이해해야 한다. 왜곡 레벨은 소프트 샘플과 대응 하드 디시전 간의 차이의 스칼라 함수의 합(예컨대, 차이의 제곱의 합)을 계산함으로써 추정될 수 있다. 왜곡은 또한 이 차이가 특정 임계치를 초과한 셀의 개수를 카운트함으로써 추정될 수 있다. 이러한 경우에, 임계치는 하드 디시전을 획득하기 위해 셀을 판독할 때 사용된 임계 레벨이고, 왜곡 추정은 ECC에 의해 보정된 에러의 개수를 포함한다.
MSP는 판독후 갱신 단계(178)에서, 페이지의 추정된 달성가능한 용량을 갱신한다. MSP는 페이지의 후속 프로그래밍 오퍼레이션에 사용하기 위해, 저장 컨피규레이션 테이블에 그 페이지의 저장 컨피규레이션을 갱신하기 위해 계산된 왜곡 레벨을 사용한다. 도 8의 방법은 시스템(20)의 정상 오퍼레이션과 결합될 수 있다. 이러한 모드의 오퍼레이션에서, 데이터를 판독한 후, 특정 페이지가 프로그래밍되고, 그 왜곡 레벨이 추정되고, 그 저장 밀도가 후속 프로그래밍 오퍼레이에션에서 사용하기 위해 갱신된다.
몇몇 실시예에서, MSP는 판독 오퍼레이션의 속도를 저하시키지 않기 위해, 시스템이 아이들인 기간 동안 왜곡 추정 태스크를 수행할 수 있다.
몇몇 실시예에서, MSP는 맹목적으로, 즉, 하드 디시전이 에러를 포함하지 않음을 가정하지 않고, 왜곡 레벨을 추정할 수 있다. 예를 들어, 셀에 기록된 노미널 전압 레벨은 1V 및 3V이고, 대다수의 판독 전압이 대략 2V라면, MSP는 데이터를 디코딩하지 않고도 왜곡 레벨이 높은 것으로 결론내릴 수 있다.
프로그래밍된 데이터의 신뢰성을 기초로 하는 밀도 조절
몇몇 실시예에서, MSP(52)는 페이지에 기록된 데이터의 신뢰도를 평가함으로써 주어진 페이지의 달성가능한 용량을 추정한다. 몇몇 경우에, MSP는 셀을 삭제하지 않고 페이지의 저장 컨피규레이션을 조절한다. 이러한 경우에, 추가 데이터가 그 페이지를 삭제하지 않고 후속 프로그래밍 사이클에서 기존 페이지에 기록될 수 있다. 밀도의 변경은 전압 레벨의 개수를 조절함으로써, 그리고/또는 ECC를 조 절함으로써 달성된다.
도 9는 본 발명의 한 실시예에 따른, 메모리 디바이스(24)의 저장 컨피규레이션을 적응 조절하는 한 예시적인 방법을 개략적으로 도시하는 플로우 차트이다. 본 예에서, 데이터는 계통적(systematic) ECC(즉, 코딩되지 않은 비트를 변경시키지 않고, 코딩되지 않은 정보 비트를 기초로 리둔던시 비트를 추가하는 ECC)를 사용하여 프로그래밍된다. 저장 밀도 및 에러 성능은 리둔던시 비트의 개수를 조절함으로써 조절된다.
본 방법은 언코딩된 프로그래밍 단계(190)에서, MSP(52)가 코딩없이 특정 페이지를 프로그래밍하는 단계와 함께 개시한다. 필수적이진 않으나 전형적으로, 전압 레벨의 개수는 저장 밀도가 소정의 성능 마진을 약간 초과하도록 선택된다, 즉 그 페이지는 약간의 에러를 포함할 수 있다. MSP는 디코딩 단계(194)에서, 페이지로부터 데이터를 판독하고, 옵션으로 데이터를 디코딩하고, 왜곡 레벨 체크 단계(198)에서, 메모리 셀 내의 왜곡 레벨을 체크한다. MSP는 그 페이지에 현재 할당된 저장 컨피규레이션에 대하여, 왜곡이 너무 큰지, 너무 낮은지, 또는 적절한지를 판단하기 위한 상이한 방법 및 기준을 사용할 수 있다. 예를 들어, MSP는 디코딩된 페이지가 ECC에 의해 보정되지 않은 에러를 포함하는지 여부를 체크할 수 있다.
대안으로서, MSP는 그 페이지의 메모리 셀로부터 판독된 전압 세트와 ECC의 유효 코드워드 사이의 거리 메트릭스를 평가할 수 있다. MSP는 판독된 전압으로부터 보정 코드워드까지의 거리(즉, 셀에 실제 기록된 코드워드)를 다른 코드 워드로 부터의 거리와 비교할 수 있다. 해밍 메트릭스, 또는 유클리드 메트릭스와 같은, 임의의 적합한 거리 메트릭스가 이러한 목적으로 사용될 수 있다.
MSP는 단계(198)에서 평가된 왜곡을 기초로 페이지에 할당된 저장 컨피규레이션을 조절한다. 왜곡 레벨이 적합하다면, MSP는 현재의 저장 컨피규레이션를 유지하고, 본 방법을 종료 단계(202)에서 종료한다. 왜곡 레벨이 너무 높다면, MSP는 리둔던시 증가 단계(204)에서, ECC의 리둔던시 레벨을 증가시킨다(즉, 리둔던시 비트를 추가한다). 결과적으로 페이지의 밀도는 감소된다. MSP는 이에 따라, 컨피규레이션 갱신 단계(206)에서 저장 컨피규레이션 테이블을 갱신한다. 그 다음 본 방법은 단계(194)로 되돌아간다. 왜곡 레벨이 너무 낮다면(즉, 저장 밀도가 성능을 수용할 수 없도록 저하시키지 않고 증가될 수 있다면), MSP는 리둔던시 감소 단계(208)에서 ECC의 리둔던시를 감소시킨다. MSP는 단계(206)에서 저장 컨피규레이션 테이블을 갱신하고, 본 방법은 단계(194)로 되돌아간다. 이러한 반복은 본 방법이 현재 왜곡 레벨과 매칭하는 적합한 리둔던시 비트의 개수로 수렴할 때까지 계속된다.
프로그래밍된 데이터의 신뢰성을 체크하는 것, 및 필요하다면, 리둔던시 비트의 개수를 증가시키는 것은 도 8의 방법을 사용하는 것과 같이, 디바이스(24)의 수명에 따라 가끔씩 수행될 수 있다. 왜곡 레벨이 시간에 따라 변하기 때문에, 저장 컨피규레이션은 원하는 에러 성능을 유지하기 위해 그에 따라 조절될 수 있다.
몇몇 실시예에서, 저장 컨피규레이션은 셀을 삭제하지 않고 도 9의 방법을 사용하여 조절될 수 있다. 예를 들어, ECC가 계통적 코드를 포함하고 있을 때, 리둔던시 비트는 코딩되지 않은 비트로부터 개별적으로 저장될 수 있다. 리둔던시 비트의 개수는 언코딩된 비트를 저장한 셀을 삭제하거나 재프로그래밍하지 않고 증가되거나 감소될 수 있다.
셀을 삭제하거나 추가 셀을 프로그래밍하지 않고 한 그룹의 셀(예컨대, 페이지)의 저장 밀도를 증가시키는 대안의 기술은 이미프로그래밍된 셀에 추가적인 프로그래밍 오퍼레이션을 수행하는 단계를 포함한다. 예를 들어, 셀이 레벨, 0...(2n-1)로 프로그래밍될 수 있는 메모리 셀 어레이를 생각해보자, 여기서, 레벨, i에 대응하는 저장된 전하 레벨이 레벨, i+1과 연관된 전하 레벨보다 더 작다.
몇몇 실시예에서, m개의 메모리 셀은 짝수 레벨, 즉 0, 2,...2n-2로 초기 프로그래밍될 수 있다. 셀 내의 왜곡 레벨을 추정한 후, MSP는 m개의 인코딩된 비트를 생성하는 이진 인코더를 사용하여 추가적인 정보 비트를 인코딩한다. 인코더의 코드레이트는 추정된 왜곡에 의존한다. MSP는 인코딩된 비트가 '1'인 셀을 홀수 레벨로, 즉 레벨, 1,3,...2n-1로 (삭제없이) 재프로그래밍한다. 예를 들어, 새로운 셀 레벨은 y(m)=x(m)+b(m)이라 할 수 있고, 여기서 y(m)은 셀, m의 새로운 레벨을 나타내고, x(m)은 그 셀의 이전 레벨을 나타내고, b(m)은 m번째 인코딩된 비트('0' 또는 '1')의 값을 나타낸다. 이러한 스킴은 추정된 왜곡에 응답하여 조절되는 레이트 조절가능한 TCM으로 간주될 수 있다.
유한한 세트의 저장 컨피규레이션
몇몇 실시예에서, MSP(52)는 소정의 저장 컨피규레이션으로부터 각각의 페이지에 대하여 적합한 저장 컨피규레이션(예컨대, 레벨의 개수, 및 ECC 스킴을 선택 한다. 유한한 세트의 저장 컨피규레이션의 사용은 MSP의 복잡도를 줄이고, 더욱 상세하게는 유닛(76) 내의 저장 컨피규레이션 테이블을 단순화한다.
도 10은 본 발명의 한 실시예에 따른, 유한한 세트의 저장 컨피규레이션을 사용한 메모리 디바이스(24)의 저장 밀도를 적응 조절하는 방법을 개략적으로 도시하는 플로우 차트이다. 본 방법은, 정의 단계(210)에서, 한 세트의 저장 컨피규레이션을 미리정의하는 단계에 의해 개시한다. 각각의 저장 컨피규레이션은 특정한 전압 레벨의 개수, 및 특정 ECC 스킴을 특정한다. 그러므로, 각각의 저장 컨피규레이션은 임의의 저장 밀도, 즉, 임의의 셀당 비트 값을 정의한다.
(1) 전압 레벨로의 데이터 비트의 맵핑이 개별 셀에서 실행되는 것이 아니라, 셀의 그룹에 공동으로 수행될 수 있고, (2)전압 레벨의 개수가 2의 배수가 아닐 수 도 있으므로, 셀당 비트 개수는 반드시 정수일 필요가 없음을 이해해야 한다. 분수의 셀당 비트 저장 밀도를 구현하는 예시적인 방법이 아래에 서술되어 있다. 다음 테이블은 10개의 저장 컨피규레이션의 한 예시적인 세트를 도시한다.
Figure 112008081556210-pct00001
저장 컨피규레이션, 0은 사용되지 않는 배드 페이지를 식별한다. 컨피규레이션, 1-9는 1 내지 4.5 셀당비트수의, 9개의 상이한 밀도 레벨을 제공한다. 대안의 실시예에서, 임의의 다른 적합한 저장 컨피규레이션 세트가 사용될 수 있다.
전형적으로 관리 유닛(76) 내의 저장 컨피규레이션 테이블은 소정의 세트로부터 임의의 디폴트 저장 컨피규레이션과 함께 초기화된다. 특정 페이지를 기록할 때, MSP는 페이지 프로그래밍 단계(214)에서 그 페이지의 저장 컨피규레이션에 의해 특정된 ECC 및 레벨 개수를 사용하여 그 데이터를 인코딩하고 맵핑한다.
프로그래밍 오퍼레이션 후, 또는 판독 오퍼레이션 후, MSP는 마진 추정 단계(218)에서, 그 페이지의 성능 마진을 추정한다. MSP는 상술된 바와 같이, 페이로부터 판독된 전압 내의 왜곡을 측정함으로써, 또는 그 페이지로부터 판독된 데이터의 신뢰성을 평가함으로써 성능 마진을 추정할 수 있다. 이 마진은 신호대잡음비(SNR)로 환산하여 표현되거나, 임의의 다른 적합한 메트릭스를 사용할 수 있다.
MSP는 그 페이지에 대하여 특정된 저장 컨피규레이션이 그 페이지의 현재 용량과 매칭하는지, 또는 저장 밀도가 증가되거나 감소되어야 하는지를 판단하기 위해 성능 마진을 사용한다. 예를 들어, MSP는 추정된 마진을 임계치와 비교할 수 있다.
추정된 마진이 저장 컨피규레이션이 변경되어야 함을 나타내면, MSP는 컨피규레이션 갱신 단계(222)에서 소정의 세트로부터 상이한 컨피규레이션을 선택한다. MSP는 그 페이지에 대한 후속 프로그래밍 오퍼레이션에서 갱신된 저장 컨피규레이션을 사용하도록, 저장 컨피규레이션 테이블 내의 컨피규레이션 선택을 갱신한다.
몇몇 실시예에서, MSP(52)는 ECC 인코딩 전에 특정 페이지에 저장될 데이터를 압축한다. 무손실 또는 손실일 수 있는, 임의의 공지된 압축 방법이 이러한 목적으로 사용될 수 있다. 압축 및 ECC 인코딩의 조합은 상이한 저장 밀도, 즉 상이한 셀당 비트값을 산출한다.
이러한 실시예에서, 각각의 페이지에 저장된 전체 비트수(M)는 상이한 저장 컨피규레이션에서 일정하게 유지되고, 네트 정보 비트수(K)는 가변이다. 예를 들어, 한 페이지가 4,224개의 메모리 셀을 포함하고, 그 셀은 16개의 전압 레벨을 사용하여 프로그래밍된(즉, 각각의 셀은 4비트를 저장한다) 것으로 가정하자. 한 페이지에 저장된 전체 비트수는 4,224×4=16,896개이다. 7/8의 ECC 코딩 레이트로, 한 페이지에 저장될 수 있는 네트 정보 비트의 개수는 14,784이다. 더 낮은 13/16의 ECC 코딩 레이트로, 한 페이지에 저장될 수 있는 네트 정보 비트수는 13,728이다. 그러나, 제2저장 컨피규레이션은 더 강한 ECC로 인해 더 로버스트하다.
대안으로서, 메모리 셀당 전압 레벨의 개수는 각 저장 컨피규레이션마다 다를 수 있다, 즉 K 및 M이 가변이다. 예를 들어, 다음 테이블은 한 어레이의 4,224-셀 페이지에 사용하기 위한 3개의 저장 컨피규레이션을 보여준다:
Figure 112008081556210-pct00002
몇몇 실시예에서, 각각의 페이지는 일정한 개수의 네트 정보 비트를 가진 섹터로 분할된다. 페이징단 섹터의 개수는 가변이다. 예를 들어, 다음 테이블은 한 어레이의 4,224-셀 페이지에 사용하기 위한 3개의 저장 컨피규레이션을 보여준다. 본 예에서, 각각의 섹터는 2,118개의 저장된 비트를 산출하기 위해 2/3 ECC 레이트를 사용하여 인코딩되는 1,412개의 네트 정보 비트를 포함한다.
Figure 112008081556210-pct00003
프로그램/삭제 히스토리를 사용한 용량 추정
상술된 바와 같이, 특정 메모리 셀(32) 내의 왜곡 레벨은 그 셀이 겪은 프로그래밍 및 삭제 오퍼레이션의 히스토리에 의존한다. 그러므로, MSP(52)는 전형적으로 더 늙은 셀에 대하여 더 낮은 저장 밀도를 가진 저장 컨피규레이션을 할당하 고, 그 역 또한 그러하다.
몇몇 경우에, 왜곡은 그 셀의 누설전류에 의해 발생한다. 누선전류의 효과는, 예컨대, 'Mielke et al.'의, "Recovery Effects in the Distributed Cycling of Flash Memories", "IEEE Annual International Reliability Physics Symposium', 캘리포니아주 산 호세, 2006년 3월, 29-35 페이지에 서술되어 있다. 이 문서에 따르면, 프로그래밍 및 삭제 사이클에 의해 발생된 유전체 손상은 사이클 사이의 지연동안 부분적으로 복구된다. 이 문서는 전하-디트레핑 데이터-보유 메카니즘(charge-detrapping data-retention mechanism)에 대한 이들 지연의 효과를 특징짓는다. 그러므로, 누선전류와 연관된 왜곡 레벨은 이전 프로그래밍 및 삭제 오퍼레이션의 발생으로부터 경과된 시간의 길이에 의존한다. 이러한 타입의 왜곡은 또한 전하 트래핑에 의해, 또한 그러므로 최근 프로그래밍 및 삭제 오퍼레이션에 의해 영향을 받을 수 있다. 예를 들어, 왜곡 에러의 레벨은 많은 수의 전하 트랩을 가진 메모리 셀에서 증가할 수 있다.
도 11은 본 발명의 한 실시예에 따라, 프로그래밍 및 삭제 오퍼레이션의 히스토리를 기초로 메모리 디바이스(24)의 저장 밀도를 적응 조절하는 방법을 개략적으로 도시하는 플로우 차트이다. 본 방법은 MSP(52)의 관리 유닛(76)이 프로그래밍 및 삭제 오퍼레이션이 어레이(28)의 상이한 메모리 셀(32) 상에서 수행되는 시간을 기록하는 단계와 함께 개시한다. MSP는 프로그래밍 및 삭제 오퍼레이션을 타임-태깅하기 위해 현재 시간을 트래킹하는 러닝 카운터를 유지할 수 있다. 대안으로서, 몇몇 경우에, 이 시간 태그는 메모리 컨트롤러(22)에 의해 제공된다.
프로그래밍 오퍼레이션이 전형적으로 페이지 바이 페이지로 수행되고, 삭제 오퍼레이션이 전체 삭제 블록 상에서 수행되기 때문에, MSP는 페이지마다 프로그래밍 및 삭제 시간을 기록할 수 있다. 이 정보는 저장 컨피규레이션 테이블에 각각의 페이지의 저장 컨피규레이션의 일부로서 저장될 수 있다. 삭제 시간은 페이지 마다 또는 삭제 블록 마다 저장될 수 있다.
MSP(52)는 누설 추정 단계(234)에서, 특정 페이지 내의 누설전류를 추정한다. MSP는 기록된 프로그래밍 및 삭제 시간을 기초로 누설전류를 추정하기 위한 다양한 추정기 및 기준을 사용할 수 있다. 예를 들어, 누설전류는 다음 함수에 의해 추정될 수 있다:
Figure 112008081556210-pct00004
.
여기서 ProgramTime(n)은 단계(230)에서 기록된, 그 페이지 상에서 수행된 n번째 프로그래밍 오퍼레이션의 시간을 나타낸다. CurrentTime은 추정값이 계산된 시간을 나타낸다. α0...K는 전형적으로 더 최근의 프로그래밍 오퍼레이션에 더 높은 가중치를 할당하는 가중치 계수를 나타낸다. i>1에 대하여 αi=0일 때, 추정치는 마지막 프로그래밍 오퍼레이션만 기초로 한다.
대안의 실시예에서, 누설전류는 특정 시간 구간(예컨대, 최근일, 시, 또는 분)에서 수행된 삭제 오퍼레이션의 횟수를 기초로 추정될 수 있다. 다른 대안으로서, 누설전류는 다음 함수를 사용하여, 반복적으로 추정될 수 있다:
Figure 112008081556210-pct00005
.
여기서, 0<δ<1은 가중치 계수, 또는 "망각 팩터"를 나타낸다. 이러한 반복적 추정은 MSP(52)가 복수의 시간 태그의 리스트를 저장하지 않고, 최근의 두 개의 프로그래밍 오퍼레이션의 시간, 및 이전 추정값만 기록하도록 할 수 있다.
대안으로서, MSP는 프로그래밍 및 삭제 오퍼레이션의 기록된 히스토리를 기초로 누설전류를 추정하는 임의의 다른 추정 방법을 사용할 수 있다.
몇몇 실시예에서, MSP는 보완적 왜곡 추정 단계(238)에서, 다른 팩터를 기초로 셀 왜곡을 추정한다. 왜곡 추정은 이웃 셀로부터 측정한 크로스 커플링 비율, 또는 임의의 다른 적합한 프로세스를 기초로 할 수 있다.
MSP는 단계(234)에서 수행된 누설전류 추정과 단계(238)에서 수행된 왜곡 추정을 결합하고, 용량 추정 단계(242)에서 그 페이지의 용량을 추정한다. 예를 들어, 용량은 다음 함수를 사용하여 추정될 수 있다:
Figure 112008081556210-pct00006
.
여기서, C0는 기본 용량 값을 나타내고, β, 및 γ는 누설전류 및 왜곡 추정에 원하는 상대적 가중치를 할당하는 가중치 계수이다. 몇몇 실시예에서, 단계(238)는 생략될 수 있고, MSP는 γ=0으로 설정하는 것과 같이, 누설전류 추정만을 기초로 페이지 용량을 추정할 수 있다.
MSP(52)는 저장 컨피규레이션 테이블을 갱신된 페이지 용량 값으로 갱신한다. MSP는 본 명세서에 서술된 방법과 같은, 임의의 적합한 방법을 사용하여 그 페이지에 대한 페이지 밀도, 및 적합한 저장 컨피규레이션(예컨대, ECC 및 전압 레벨의 개수)를 결정할 수 있다.
분수의 셀당 비트 값을 가진 밀도 할당
몇몇 실시예에서, MSP(52)는 비정수(non-integer) 셀당 비트수를 가진 저장 컨피규레이션을 정의할 수 있다. 예를 들어, 몇몇 경우에, 저장 밀도를 증가시키고, 2의 배수가 아닌 다수의 전압 레벨을 사용하여 셀의 달성가능한 용량에 근접하는 것이 가능하다. MSP(52)는 셀당 비트수가 정수가 아닐 때, 데이터 비트를 전압 레벨에 맵핑하는 다양한 방법을 사용할 수 있다.
K를 특정 페이지에 데이터를 저장하기 위해 사용된 전압 레벨의 개수라 하자. K는 반드시 2의 배수일 필요가 없고, 그러므로, 저장 밀도는 정수일 필요가 없다. K 레벨에 의해 표현될 수 있는 최대 비트 수는 nopt=log2(K)로 주어지고, 일반적으로 비정수 값이다. 이러한 최적 저장 밀도에 도달하기 위해, 무한한 개수의 데이터 비트는 무한한 개수의 메모리 셀에 저장될 필요가 있을 것이고, 프로세스는 무한한 지연을 포함할 것이다. 그러나, 실제적인 경우에, 최적의 저장 밀도로부터의 편차는 프로세싱 지연(즉, 데이터를 저장하기 위해 사용된 셀의 개수)에 대한 트레이드 오프일 수 있다.
nc는 데이터를 저장하기 위해 사용된 메모리 셀의 개수를 나타내고, ntb는 nc개의 셀에 저장된 전체 비트수를 나타낸다. nc 및 ntb는 모두 정수이다. 그러므로, 저장 밀도는 nbpc=ntb/nc로 주어진다. ntb 및 nc는 ngap=nbpc-nopt로 주어진 최적 밀 도로부터의 편차가 음수가 아닌 최소값을 가지도록 선택되어야 한다. nc를 증가시키는 것은 nbpc가 nopt에 근접하게 할 수 있으나, 맵핑 복잡도, 및 프로세싱 지연을 증가시킨다.
nc 및 ntb의 원하는 값이 선택되면, MSP(52)는 각각의 그룹의 ntb 데이터 비트를 nc 전압에 맵핑하고, 그다음 이 전압은 nc 메모리 셀에 기록된다. 각각의 ntb 전압은 K개의 가능한 레벨 중 하나를 취할 수 있다. ntb 데이터 비트는
Figure 112008081556210-pct00007
로 나타낸다.
몇몇 실시예에서, MSP(52)는 K 베이시스 비트에 의해 표현된 ntb-비트 이진수를 나타냄으로써, ntb 데이터 비트를 nc 전압에 맵핑한다. 즉, MSP(52)는 nc개의 계수,
Figure 112008081556210-pct00008
를 다음과 같이 결정한다:
Figure 112008081556210-pct00009
.
그 다음 MSP(52)는 nc 메모리 셀을 값,
Figure 112008081556210-pct00010
으로 프로그래밍한다.
예를 들어, K=11이라 하자. 이러한 경우의 최적의 저장 밀도는
Figure 112008081556210-pct00011
이다. 데이터가 nc=3인 그룹에 기록되어 있다고 가정하면, 최적 밀도로부터의 편차는
Figure 112008081556210-pct00012
이고 ntb=10이다. 그러므로, 10개의 데이터 비트의 시퀀스가 각각 11개의 전압 레벨을 사용하는, 3개의 메모리 셀의 그룹에 맵핑된다. 예를 들어, 비트 시퀀스, "1101100100"가 k1=7, k2=1, 및 k3=10에 맵핑된다.
가변용량 메모리 디바이스에의 데이터 저장 및 삭제
도 12는 본 발명의 한 실시예에 따른, 가변용량 메모리 디바이스에 데이터를 저장하는 방법을 개략적으로 도시하는 플로우차트이다. 본 방법은 입력 단계(250)에서, MSP(52)가 메모리 컨트롤러(22)로부터 저장할 데이터 아이템을 수신하는 단계와 함께 개시한다.
몇몇 실시예에서, 메모리 컨트롤러는 데이터 아이템을 저장하기 위한 특정의 신뢰도 요구사항을 특정한다. 메모리 컨트롤러는 최대 허용 에러 확률를 분명하게 명시하거나, 또는 한 세트의 소정 레벨로부터 신뢰도 레벨을 선택하는것과 같이, 요구된 저장 신뢰도를 특정하기 위한 임의의 적합한 방법 및 폼을 사용할 수 있다. 필수적이지는 않으나 종종, 신뢰도 요구사항은 데이터 아이템을 생성한 어플리케이션의 에러-허용치와 연관된다. 예를 들어, 오디오 또는 비디오 미디어를 포함하는 파일은 비교적 낮은 신뢰도 레벨로 저장될 수 있다. 한편, 프로그램 코드 및 운영체제 데이터 파일을 포함하는 파일은 통상적으로 높은 신뢰로 레벨로 특정될 것이다.
부가적으로 또는 대안으로서, 메모리 컨트롤러는 데이터 아이템을 저장하기 위한 특정의 보유 요구사항을 특정할 수 있다. 보유 요구사항은 데이터 아이템이 저장될 것으로 예상되는 기간을 나타낸다. 예를 들어, 임시 운영체제 파일은 낮은 보유 요구기간으로 특정될 수 있다.
MSP(52)는 페이지 선택 단계(254)에서, 데이터 아이템을 저장할 어레이(28) 내의 한 세트의 하나 이상의 페이지를 선택한다. 전형적으로 관리 유닛(76)은 각각의 메모리 페이지의 상태를 트래킹한다. 각각의 페이지는 "삭제된"(즉, 프로그래밍 가능한), "정보 포함", "오류", 또는 삭제준비"의 상태를 가질 수 있다. 상술된 바와 같이, 유닛(76)은 또한 페이지에 저장될 수 있는 데이터의 크기를 정의하는, 각각의 페이지에서 사용되는 저장 컨피규레이션(예컨대, 전압 레벨의 개수, 및 ECC)을 보유한다.
유닛(76)은 그것의 전체 크기가 그 데이터 아이템을 저장하기 충분한 한 세트의 하나 이상의 "삭제된" 페이지를 선택한다. 몇몇 실시예에서, 유닛(76)은 순차적 순서로 "삭제된" 페이지를 스캐닝하고, 그 전체 크기가 그 데이터 아이템을 저장할 만큼 충분할 때까지 페이지를 선택한다. 대안으로서, 유닛(76)은 페이지를 선택하기 위한 다양한 정책, 또는 기준을 적용할 수 있다.
예를 들어, 유닛(76)은 어레이(28)에 더 우수한 마모 레벨링을 달성하기 위해, 비교적 낮은 횟수의 프로그래밍 및 삭제 사이클을 겪은 페이지를 선택할 수 있다. 다른 예로서, 유닛(76)은 사용하지 않은 메모리 셀의 개수를 최소화하기 위해, 그 전체 크기가 데이터 아이템의 크기와 가장 잘 매칭하는(즉, 데이터 아이템의 크기를 가능한한 작게 초과하는) 페이지 세트를 검색할 수 있다. 또 다른 예로서, 유닛(76)은 최소 페이지수로 데이터 아이템을 분할하고, 프로그래밍 시간, 마 모 및 관리 오버헤드를 줄이기 위해, 큰 용량의 페이지에 우선순위를 부여할 수 있다. 대안으로서, 유닛(76)은 저장할 페이지를 선택할 때, 임의의 다른 기준 및 기준의 조합을 사용할 수 있다.
몇몇 실시예에서, 유닛(76)은 그 데이터 아이템에 대하여 특정된 신뢰도 및/또는 보유 요구사항을 기초로 그 페이지의 저장 컨피규레이션(또한, 그러므로 저장 밀도)을 조절한다. 예를 들어, 데이터 아이템이 비교적 낮은 신뢰도 및/또는 보유 요구사항을 가진 때, 유닛(76)은 그 셀의 왜곡 레벨에 대하여 더 높은 왜곡 및/또는 더 높은 밀도를 가진 셀에 데이터를 저장할 수 있다.
MSP(52)는 저장 단계(258)에서, 선택된 페이지에 그 데이터 아이템을 저장한다. 유닛(76)은 저장하기 위해 사용되는 페이지의 상태를 "정보 포함"으로 설정하고, 필요하다면 그 페이지의 저장 컨피규레이션을 갱신한다. 또한, 유닛(76)은 시스템(20)이 이후 그 데이터 아이템을 추출하기 위해 사용될 때 그 페이지가 처리될 수 있도록, 그 데이터 아이템을 저장하기 위해 사용된 페이지의 식별정보를 기록한다.
몇몇 실시예에서, 시스템(20)은 메모리 컨트롤러(22)에 의해 사용가능한 메모리 크기를 보고하도록 요청될 수 있다. 이러한 실시예에서, 유닛(76)은 "삭제된"것으로 나타난 페이지의 용량을 합산하고, 그 결과를 사용가능한 메모리 크기로 보고한다.
도 13은 본 발명의 한 실시예에 따른, 가변용량 메모리 디바이스로부터 데이터를 삭제하는 방법을 개략적으로 도시하는 플로우차트이다. 본 방법은 삭제 요청 단계(270)에서, MSP(52)가 디바이스(24)로부터 특정 데이터 아이템을 삭제하는 메모리 컨트롤러(22)로부터의 요청을 수신하는 단계와 함께 개시한다. MSP(52) 내의 관리 유닛(76)은 그 데이터 아이템을 저장하기 위해 사용된 페이지를 식별하고, 단계 단계(274)에서, 그 페이지를 "삭제 준비"로 표시한다.
데이터 아이템을 저장한 페이지는 하나 이상의 삭제 블록에 위치될 수 있다. 이들 블록이 삭제되기 전에, 사용중인(즉, "정보 포함" 상태인) 이들 블록 내의 임의의 페이지는 다른 삭제 블록으로 이동되어야 한다.
유닛(76)은 사용중 체크 단계(278)에서, 단계(274)에서 식별된 페이지를 포함하는 삭제 블록이 사용중인 페이지를 포함하는지를 체크한다. 삭제 블록이 임의의 사용중인 페이지를 포함하지 않는다면, 유닛(76)은 삭제 단계(282)에서, 그 블록을 삭제하고, 그 블록 내의 페이지의 상태를 "삭제된"으로 갱신한다. 한편, 유닛(76)이 삭제할 블록 내의 일부 페이지가 사용중임을 검출하면, 그 페이지에 저장된 데이터를 삭제될 블록 외부의 다른 페이지로 이동시킨다. (몇몇 경우에, 유닛(76)은 삭제 블록이 삭제될 데이터 아이템에 속하는 단일 페이지를 포함하고, 모든 다른 페이지가 이미 삭제된 때와 같이, 그 블록을 삭제하지 않을 것으로 결정할 수도 있다.)
유닛(76)은 위치 재선택 단계(286)에서, 삭제될 블록 외부에 위치하고, 그 전체 크기가 사용중인 페이지 내의 데이터를 저장할 만큼 충분한, 한 세트의 하나 이상의 페이지를 선택한다. 유닛(76)은 임의의 적합한 정책 및 기준에 따라 데이터가 이동할 페이지를 선택할 수 있다. 예를 들어, 페이지는 사용가능한 페이지에 서 순차적인 순서로 선택될 수 있다. 대안으로서, 유닛(76)은 도 12의 방법의 페이지 선택 단계(254)에 서술된 바와 같이, 마모 레벨링을 강화하거나, 사용되지 않는 메모리 셀의 개수를 줄도록 페이지를 선택할 수 있다. 다른 대안으로서, 유닛(76)은 임의의 다른 적합한 기준을 사용할 수 있다.
유닛(76)은 이동 단계(290)에서, 단계(286)에서 사용중인 페이지에 저장된 데이터를 선택된 페이지로 복사한다. 이러한 이동 오퍼레이션은 반드시 페이지의 개수, 또는 페이지 내의 데이터의 분할 개수를 보존할 필요가 없음을 이해해야 한다. 디바이스(24) 내의 페이지가 상이한 용량을 가지기 때문에, 이동된 데이터는 원래의 저장에 대하여 상이한 개수의 페이지, 및/또는 상이한 방법으로 페이지 사이에 분할되어 복사될 수 있다. 데이터가 이동된 후, 단계(274)에서 식별된 블록은 삭제 단계(282)에서 삭제된다.
가변용량 메모리 내의 데이터 저장 관리
상술된 바와 같이, MSP(52)은 메모리 컨트롤러(22)와 상호작용한다, 즉 메모리 컨트롤러로부터 저장할 데이터를 수신하고, 메모리에 저장된 데이터를 요청시 메모리 컨트롤러로 출력한다. 시스템(20)은 MSP에 의해 수행되는 관리 기능의 레벨에서 서로 다른, 몇몇 방법으로 메모리 컨트롤러, 또는 일반적으로 호스트 시스템과 상호작용할 수 있다.
한 극단적인 예로서, 시스템(20)은 고정용량 메모리 디바이스를 컨트롤하도록 설계된, 레거시 메모리 컨피규레이션와 상호작용한다. 이러한 경우의 메모리 컨틀로러는 고정용량 페이지가 각각의 데이터 아이템을 저장하기 위해 사용되었음을 나타내는, 고정용량 페이지 테이블을 보유한다. 고정용량 페이지 테이블은 또한 각각의 고정용량 페이지 또는 블록의 상태를 보유하고, 임의의 삭제 블록이 배드 블으로 고려되는지를 나타낸다.
이러한 실시예에서, MSP(52)는 두 개의 병렬인 인덱싱 스킴을 유지함으로써, 시스템(20)의 적응용량 특성과 메모리 컨트롤러(22)의 고정용량 특성 사이를 중재한다. 메모리 컨트롤러를 향해, MSP는 시스템(20)이 메모리 컨트롤러에 고정용량 디바이스임을 나타내도록, 고정용량 페이지의 인덱스 스킴을 사용함을 알린다. 시스템(20) 내부적으로, MSP(52)는 데이터 아이템을 효율적으로 가변용량 페이지에 저장한다. MSP는 가변용량 페이지가 각각의 데이터 아이템을 저장하기 위해 사용되었음을 나타내는, 가변용량 페이지의 개별적인 인덱싱 스킴을 보유한다. MSP는 데이터를 기록하고 판독할 때 두 인덱싱 스킴 사이를 번역할 수 있다.
몇몇 경우에, 메모리 컨트롤러(22)는 ECC 인코딩 및 디코딩, 메모리로부터 판독된 데이터 내의 에러검출, 및/또는 배드블록 관리와 같은 기능을 수행한다. 본 명세서에 서술된 기술을 사용하여, 공지된 메모리 컨트롤러는 그들의 데이터 구조 또는 프로토콜을 변경하지 않고, 디바이스(24)를 컨트롤하기 위해 사용될 수 있다.
다른 극단적인 예로서, 메모리 컨트롤러(22)의 기능부는 MSP(52) 자신에 의해 실질적으로 수행될 수 있다. 이러한 경우에, MSP는 호스트 시스템으로부터(예컨대, 컴퓨터 CPU로부터) 임의의 크기의 데이터 아이템을 수신하고, 그 데이터 아이템을 어레이(28)의 가변용량 페이지에 저장한다. 메모리 관리 기능이 MSP에 의 해 수행되기 때문에, 고정용량 인덱싱을 에뮬레이팅할 필요가 없고, 단지 하나의 인덱싱 스킴만이 MSP에 의해 유지된다.
다른 대안으로서, MSP(52)는 시스템(20)과 호스트 시스템 사이의 메모리 관리 기능의 임의의 적합한 분배를 지원할 수 있다. 단일 MSP 디바이스는 상이한 타입의 메모리 컨트롤러 또는 호스트와 상호작용하기 위해, 상이한 인터페이싱 및 인덱싱 스킴을 지원할 수 있다.
도 14-17은 본 발명의 한 실시예에 따른, 가변용량 메모리 디바이스에 고정크기의 데이터 블록을 저장하는 방법을 개략적으로 도시하는 다이어그램이다.
도 14는 고정 셀개수를 가진 삭제 블록을 가진 메모리 디바이스에 데이터를 저장하도록 설계된, 그리고 배드 블록 관리(BBM) 기능을 수행하는 마이크로 컨트롤러와 상호작용하는 방법을 도시한다. 몇몇 공지된 BBM 방법에서, 임의의 삭제 블록은 그 블록 내의 단일 페이지만이 오류라하더라도, 배드 블록으로 분류된다. 이러한 방법은, 한 배드 블록 내의 대부분의 메모리 셀이 여전히 사용가능하기 때문에, 매우 비효율적이다. 한편, 도 14의 방법을 사용하면, 시스템(20)은 배드블록으로 분류된 블록의 사용가능한 메모리 셀에 효율적으로 데이터를 저장한다.
전형적인 기록 오퍼레이션에서, 메모리 컨트롤러(22)는 메모리 어레이(304)에 저장할 데이터 아이템(300)을 수신한다. 어레이(304)는 복수의 메모리 블록(308)을 포함한다. 메모리 컨트롤러(22)는 그 데이터 아이템을 컨트롤러 블록(312)으로 불리는, 하나 이상의 고정크기 블록으로 분할한다. 각각의 컨트롤러 블록(312)은 임의의 사용가능한 메모리 블록(308)에 저장할 것으로 지정된다. 메 모리 컨트롤러(22)는 저장을 위해 컨트롤러 블록(312)을 MSP(52)에 제공한다.
몇몇 블록(308)은 왜곡 효과, 제조 불량, 또는 임의의 다른 이유로 인해 감소된 용량(즉, 컨트롤러 블록(312)의 크기보다 더 작은 용량)을 가질 수 있다. 공지된 BBM 방법을 사용하면, 이러한 블록은 배드 블록으로 분류되고, 대부분의 메모리 셀이 여전히 사용가능하더라도 그 블록은 사용불가능하다.
한편, MSP(52)는 모든 메모리 블록(308)을 가변용량 블록으로 간주하고, 블록의 양호함을 분류하지 않는다. MSP는 컨트롤러 블록으로부터 데이터를 추출하고, 그 데이터를, 동일한 크기일 수도 있고 다른 크기일 수도 있는, 복수의 프래그먼트(316)로 재분할한다. MSP는 그 용량이 프래그먼트(316)의 크기와 매칭하는 복수의 메모리 블록(308)을 식별하고, 각각의 프래그먼트를 각각의 메모리 블록에 저장한다. 본예에서, MSP는 데이터 아이템을 3개의 프래그먼트로 분할하고, 그 프래그먼트를 #3, #6, 및 #10으로 지정된 메모리 블록에 저장한다.
MSP(52)는 각각의 데이터 아이템을 저장할 블록을 결정하기 위해 다양한 방법 및 기준을 사용할 수 있다. 예를 들어, MSP는 그 전체 용량이 단일 컨트롤 블록의 데이터를 저장하기 충분한 감소된 용량을 가진 한 쌍의 메모리 블록을 검색할 수 있다. 그 다음, MSP는 그 컨트롤 블록을 상기 메모리 블록 쌍에 매핑한다. 다른 예로서, MSP는 사용가능한 메모리 블록을 검색하고, 그 전체 용량이 데이터 아이템(300)의 크기와 가장 잘 매칭하는 한 세트의 둘 이상의 블록(308)을 결정할 수 있다. 이러한 방법을 사용하여, 낭비되는 메모리의 크기가 최소화된다.
대안으로서, MSP는 관리 오버헤드를 줄이기 위해, 데이터 아이템이 저장될 수 있는 최소 개수의 블록을 가진 세트를 검색할 수 있다. MSP는 마모 레벨링을 개선하기 위해, 최소 횟수의 최근 프로그래밍 및 삭제 사이클을 격은 블록을 선택할 수 있다. 임의의 다른 적합한 방법 또는 기준이 또한 사용될 수 있다. 몇몇 실시예에서, 단일 메모리 블록(308)은 하나 이상의 데이터 아이템에 속하는 프래그먼트를 저장하기 위해 사용될 수 있다.
데이터 아이템(300)을 프래그먼트(316)로 분할하는 것은 메모리 블록(308)의 선택과 연결되어 수행될 수 있고, 또는 그와 독립적으로 수행될 수 있다. 예를 들어, MSP는 그 프래그먼트가 최종적으로 저장될 메모리 블록의 개수 및 식별정보와 무관하게, 데이터 아이템을 고정크기 플래그먼트로 먼저 분할한다. 대안으로서, MSP는 데이터 아이템이 저장될 메모리 블록을 먼저 식별한 후, 이들 메모리 블록의 개수 및 크기에 따라 데이터 아이템을 분할한다.
몇몇 실시예에서, MSP(52)는 MSP에 의해 수행되는 분할이 메모리 컨트롤러 및 그것의 BBM 함수에 투명하게 수행되도록 메모리 컨트롤러를 향해 고정용량 블록에의 저장을 에뮬레이팅한다. 예를 들어, MSP는 두 개의 인덱싱 테이블, 즉 고정크기 컨트롤러 블록의 인덱싱 테이블, 및 가변용량 메모리 블록의 대응 인덱싱 테이블을 포함할 수 있다. 데이터 아이템이 임의의 세트의 컨트롤러 블록에 저장하기 위해 메모리 컨트롤러에 의해 전송될 때마다, MSP는 가변용량 메모리 블록이 그 아이템을 저장하기 위해 사용되는지를 나타낸다. 데이터 아이템이 메모리 컨트롤러에 의해 요청된 때, MSP는, 마치 컨트롤러가 그 아이템이 고정용량 컨트롤러 블록에 저장된 것으로 아는 것처럼, 그 아이템을 저장되어 있는 가변용량 메모리 블 록으로부터 추출하고, 메모리 컨트롤러로 전송한다.
알 수 있는 바와 같이, 도 14의 방법은 배드 블록으로 분류되었던 메모리 블록에 데이터가 저장되는 것을 가능하게 하기 때문에, 공지된 BBM 방법에 대하여 메모리 디바이스의 달성가능한 용량을 증가시킨다.
도 14의 설명은 전체 삭제 블록의 저장 입도에 관하여 언급하였으나, 본 방법은 더 미세한 입도, 즉, 페이지 입도를 사용하여 구현될 수도 있다. 즉, MSP는 데이터 아이템이 저장될 수 있는 적합한 세트의 가변용량 메모리 페이지를 결정할 수 있다. 데이터 아이템을 페이지-바이-페이지 기준으로 분할하고 저장하는 것은 비교적 높은 관리 오버헤드를 희생하여 더 높은 조정 밀도를 가능하게 한다.
한 예시적인 구현에서, 메모리 컨트롤러에 의해 사용된 노미널 페이지 크기가 P비트일 때, MSP는 메모리 디바이스 내의 메모리 페이지를 용량이 P보다 작은 감소된 용량의 메모리 페이지와 용량이 P보다 크거나 같은 노미널 용량의 메모리 페이지로 분류한다. 그 다음, MSP는 노미널-용량의 메모리 페이지, 또는 한 쌍의 감소된 용량의 메모리 페이지 중 하나에 P 비트를 가진 컨트롤러 페이지를 각각 저장할 수 있다. 그러므로, 용량이 컨트롤러 페이지의 노미널 크기보다 작은 메모리 페이지도 데이터를 저장하기 위해 사용될 수 있다.
도 15는 본 발명의 한 실시예에 따른, 가변용량 메모리 페이지에 P 비트를 가진 고정크기 컨트롤러 페이지를 효율적을 저장하는 다른 방법을 도시한다. 메모리 어레이(320)는 복수의 메모리 페이지(324)를 포함한다. 메모리 페이지는 동시에 프로그래밍되고 판독되는 한 그룹의 메모리 셀로 정의된다.
어레이(320)의 메모리 페이지는 전형적으로 동일한 개수의 셀을 가지지만, 그 용량(즉, 신뢰성있게 저장할 수 있는 정보의 크기)은 페이지마다, 그리고 시간에 따라 변할 수 있다. 일반적으로, 각각의 메모리 페이지(324)의 용량은 P 보다 작거나, 같거나, 클수도 있다. MSP(52)는 하나 이상의 메모리 페이지를 용량이 P보다 작은 다른 메모리 페이지의 초과 비트를 저장하기 위해 사용되는 초과 용량 페이지(328)로 기능하도록 할당한다. 본 예에서, 어레이(320)는 32개의 메모리 페이지를 포함하고, 그 중 하나의 페이지는 초과 용량 페이지로 역할한다.
MSP가 저장을 위해 P비트를 가진 컨트롤러 페이지를 수신한 때, 다음-사용가능한 메모리 페이지(324)의 용량, Cn을 평가한다. Cn>P이면(즉, 다음-사용가능한 메모리 페이지의 용량이 P비트의 컨트롤러 페이지를 저장하기 충분하면), MSP는 P비트를 그 메모리 페이지에 저장한다. 다음-사용가능한 메모리 페이지의 용량이 P비트의 컨트롤러 페이지를 저장하기에 충분하지 못하면, 즉 Cn<P이면, MSP는 컨트롤러 페이지의 P비트 중 Cn비트를 메모리 페이지에 저장하고, 나머지 P-Cn비트를 초과 용량 페이지(328)의 사용되지 않은 메모리 셀에 저장한다.
본 방법을 사용하여 페이지를 기록하고 판독하는 것은 두 개의 페이지 기록 또는 판독 오퍼레이션을 포함할 수 있음을 이해해야 한다. 몇몇 실시예에서, MSP는 초과 용량 페이지의 일부 또는 모두, 또는 이들 페이지의 일부를 RAM 또는 다른 캐시 메모리에 캐싱한다. 초과 용량 페이지를 캐싱함으로써, MSP는 듀얼-판독 및 듀얼-기록 오퍼레이션의 개수를 줄일 수 있다.
메모리 디바이스에서 데이터를 판독할 때, MSP는 마지막 판독된 초과용량 비트를 캐싱할 수 있다. 메모리 페이지를 검색할 때, MSP는 그 페이지의 초과 비트가 캐싱 데이터에 존재하는지를 체크한다. 원하는 초과 비트가 캐싱되면, 초과 용량 페이지를 물리적으로 판독할 필요없이 검색된 메모리 페이지에 그 초과 비트가 첨부될 수 있다. 메모리 디바이스에 데이터를 기록할 때, MSP는 초과 용량 비트를 캐싱하고, 그 비트를 보더 덜 빈번하게 메모리 디바이스에 물리적으로 저장할 수 있다.
전압 오류의 경우, 캐싱된 데이터가 손실되는 것을 방지하기 위해, MSP는 필요하다면, 비정격 전압을 식별하고, 메모리 디바이스에 캐싱된 데이터를 신속하게 저장하는 회로를 포함할 수 있다. 메모리 컨트롤러는 또한 엔드오브파일(EOF) 속성 또는 다른 적합한 커맨드를 사용하여 메모리 디바이스에 캐싱된 데이터를 저장하도록 MSP에 명령할 수 있다. 메모리 컨트롤러는 전형적으로 전원을 끄기전, 그리고/또는 데이터 파일을 기록하는 단계의 끝에 이러한 커맨드를 사용한다. 다른 대안으로서, MSP는 또한 특정 시간이 지난후 캐싱된 데이터를 메모리에 저장할 수 있다.
도 16은 본 발명의 한 실시예에 따른, 가변용량 메모리 페이지에 고정크기 컨트롤러 페이지를 효율적으로 저장하는 대안의 방법을 도시한다. 도 16의 방법에서, MSP(52)는 각각 P비트를 가진 컨트롤러 페이지(CTRL 페이지 #1,...#5)를 메모리 어레이(330)의 가변용량 메모리 페이지(334)에 저장한다. 각각의 메모리 페이지(334)의 용량은 P 보다 작거나, 같거나, 클 수 있다.
MSP는 메모리 페이지(334)의 경계와 관계없이, 컨트롤러 페이지를 연속적으로 저장한다. 그러므로, 임의의 메모리 페이지는 하나 이상의 컨트롤러 페이지에 속하는 데이터를 포함할 수 있고, 임의의 컨트롤러 페이지의 데이터는 하나 이상의 메모리 페이지에 저장될 수 있다. MSP는 각각의 컨트롤러 페이지의 처음 및 마지막 어드레스를 저장하는 것과 같이, 각각의 페이지의 위치를 어레이에 기록한다. 이러한 저장 방법은 어느 정도의 관리 오버헤드를 희생하여, 메모리 페이지의 전체 용량을 사용할 수 있다.
저장 방법은 전형적으로 메모리 컨트롤러에 대하여 투명하다. 메모리 컨트롤러가 임의의 컨트롤러 페이지를 요청한 때, MSP는 요청된 컨트롤러 페이지를 적합한 메모리 위치에서 판독하고, 그 데이터를 컨트롤러로 전송한다.
큰 데이터 파일 또는 디지털 이미지를 저장할 때와 같은, 몇몇 경우에, 메모리 컨트롤러는 저장을 위해 연속적인 컨트롤러 페이지의 시퀀스를 전송한다. 이러한 경우, MSP는 메모리 컨트롤러로부터 수신된 데이터를 버퍼링함으로써, 물리적 페이지 프로그래밍 오퍼레이션의 횟수를 줄일 수 있다. MSP는 예컨대, 버퍼가 가득찬 때, 메모리 컨트롤러에 의해 분명하게 명령받은 때(예컨대, EOF 커맨드에 응답하여), 또는 메모리 컨트롤러가 그 시퀀스의 일부가 아닌 컨트롤러 페이지를 전송한 때, 그 데이터를 메모리 어레이에 물리적으로 기록한다. 이러한 목적으로 사용될 수 있는 한 예시적인 커맨드는 상기 언급된 ONFI 명세서의 16페이지에 정의되어 있는 "Page Cache Program" 커맨드이다. MSP는 또한 메모리로부터 판독된 데이터를 버퍼링함으로써 메모리에 순차적으로 저장된 큰 크기의 데이터를 판독하기 위 해 요구되는 페이지-판독 오퍼레이션의 개수를 줄일 수 있다.
도 17은 본 발명에 다른 실시예에 따른, 가변용량 메모리 페이지에 고정용량 컨트롤러 페이지를 효율적으로 저장하는 또 다른 방법을 도시한다. 도 17의 방법에서, MSP는 프로그래밍 속도를 증가시키기 위해, 컨트롤러 페이지를 두 단계로 기록한다.
메모리 어레이의(340)의 메모리 페이지는 임시 저장 영역(344)과 영구 저장 영역(348)으로 분할된다. MSP가 메모리 컨트롤러로부터 컨트롤러 페이지를 수신한 때, MSP는 먼저 각각의 컨트롤러 페이지가 하나의 단일 메모리 페이지에 기록되도록, 영역(344) 내의 각각의 메모리 페이지에 기록한다. 그 후의 시점에, 전형적으로 메모리 컨트롤러와의 통신이 아이들인 때, MSP는 그 데이터를 영구 저장 영역(348)에 재-프로그래밍한다. 영역(348) 내의 데이터는 도 16의 근접 패킹되는, 용량-효율적인 방법으로 저장된다. 재-프로그래밍이 완료된 영역(344) 내의 페이지는 삭제되고, 후속 컨트롤러 페이지의 임시 저장을 위해 재사용될 수 있다.
마모 레벨링 고려
특정 페이지에 존재하는 왜곡 레벨은 종종 그 페이지가 겪은 프로그래밍 및 삭제 사이클의 횟수에 의존한다. 전형적으로, 페이지의 성능 및 용량은 그 페이지가 겪은 프로그래밍 및 삭제 사이클의 횟수가 증가할수록 악화된다. 그러므로, 성능 저하가 메모리 셀 어레이에 걸쳐 균일하게 분포되도록, 메모리 페이지의 프로그래밍을 분산시키는 것이 종종 유리하다. 이러한 피처를 마모 레벨링이라하고, "Wear Leveling in Single Level Cell NAND Flash Memories"란 제목의, 2007년 2월 의, 'STMicroelectronics'의 어플리케이션 노트 AN-1882에 서술되어 있다.
MSP(52)가 데이터를 저장할 페이지 또는 페이지 그룹을 선택할 때, MSP는 비교적 적은 횟수의 프로그래밍 및 삭제 사이클을 격은 페이지 또는 페이지 그룹을 선택할 수 있다. 이러한 마모 레벨링 고려는 상술된 임의의 방법에서 사용될 수 있다.
몇몇 경우에, MSP는 다음과 같이 마모 레벨링과 왜곡 추정치를 결합한 메트릭스를 기초로 페이지를 선택할 수 있다:
Figure 112008081556210-pct00013
.
여기서, γ 및 δ는 가중치 계수를 나타낸다. 'DistortionEstimation'은 추정된 왜곡 레벨을 나타낸다. 예를 들어, 'DistortionEstimation'은 전압이 상당히 강하된 메모리 셀을 카운팅함으로써 유도될 수 있다. 상기 메트릭스의 정의에 추가될 수 있는 다른 팩터는 (도 11의 설명에서 ILeakage를 정의한 식과 유사한) 블록의 마지막 삭제 오퍼레이션 후 경과된 시간이다.
본 명세서에 서술된 실시예들은 전압 레벨의 개수, 및 ECC 스킴을 조절함으로써 멀티레벨 메모리 셀의 저장 밀도를 조절하는 것을 다루고 있으나, 본 방법 및 시스템은 ECC 만을 변경함으로써, 단일레벨 셀에서도 사용될 수 있다.
본 명세서에 서술된 실시예들은 솔리드 스테이트 메모리 디바이스로부터 데이터를 추출하는 것을 주로 다루고 있으나, 본 발명의 원리는 하드디스크 드라이브(HDD), 및 다른 데이터 저장 매체 및 디바이스 내에 데이터를 저장하고 추출하기 위해 사용될 수도 있다. HDD 및 디지털 카세트와 같은 몇몇 저장 디바이스에서, 저장 매체는 데이터가 저장되기전에 이산적인 셀로 미리 분할되어 있지 않다. 그 보다, 데이터는 연속적인 매체의 영역에 저장되고, 연속적인 매체 내 이들 영역의 위치는 저장 프로세스 자체의 일부로 정의된다. 본 명세서 및 청구항에서, 아프리오리 연속적인 매체에 저장 프로세스 동안 정의되는 이러한 영역을 "아날로그 메모리 셀"이라 간주한다.
그러므로, 상술된 실시예들은 예시의 방법으로 언급된 것이고, 본 발명은 본 명세서에 특정하게 서술되고 도시된 것으로 제한되지 않음을 이해해야 한다. 그보다, 본 발명의 범위는 상술된 다양한 피처의 조합 및 하부조합을 모두 포함함은 물론, 본 명세서를 읽은 당업자들에게 가능한 변형 및 수정을 모두 포함한다.

Claims (117)

  1. 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법으로서,
    상기 아날로그 메모리 셀의 각각의 달성가능한 저장 용량을 추정하는 단계;
    상기 추정된 달성가능한 용량을 기초로 상기 메모리 셀 내에 저장될 데이터의 크기를 정의하는 각각의 저장 컨피규레이션을 상기 메모리 셀에 할당하는 단계;
    상기 각각의 할당된 저장 컨피규레이션에 따라 상기 메모리 셀에 상기 데이터를 저장하는 단계; 및
    상기 메모리가 호스트 시스템에 설치되고 상기 호스트 시스템에 상기 데이터를 저장하기 위해 사용된 후 상기 아날로그 메모리 셀의 상기 각각의 달성가능한 저장 용량을 재추정하고, 상기 재추정된 달성가능한 용량에 응답하여 상기 저장 컨피규레이션을 수정하는 단계를 포함하고,
    상기 저장 컨피규레이션을 할당하는 단계 및 수정하는 단계는 상기 메모리 셀에 저장된 데이터의 크기와 상기 각각의 추정된 달성가능한 저장 용량 사이에 사전 결정된 마진을 유지하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  2. 제 1 항에 있어서, 상기 데이터를 저장하는 단계는 상기 데이터를 에러 보정 코드(ECC)를 사용하여 인코딩하는 단계, 상기 인코딩된 데이터를 한 세트의 노미널 아날로그 값으로부터 선택된 아날로그 값으로 변환하는 단계, 및 상기 아날로그 값을 각각의 메모리 셀에 기록하는 단계를 포함하고, 각각의 저장 컨피규레이션은 ECC 코드 레이트, 및 상기 데이터를 저장하기 위해 사용되는 한 세트의 노미널 아날로그 값의 크기를 명시하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  3. 제 1 항에 있어서, 각각의 아날로그 메모리 셀에 대하여, 상기 데이터를 저장하는 단계는 상기 데이터를 한 세트의 노미널 아날로그 값으로 부터 선택된 아날로그 값으로 변환하는 단계, 및 상기 아날로그 값을 상기 메모리 셀에 기록하는 단계를 포함하고, 각각의 저장 컨피규레이션은 상기 아날로그 메모리 셀에 상기 데이터를 저장하기 위해 사용된 상기 노미널 아날로그 값을 명시하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  4. 제 1 항에 있어서, 상기 데이터를 저장하는 단계는 상기 데이터를 아날로그 값으로 변환하는 단계, 및 상기 아날로그 값을 상기 각각의 메모리 셀에 기록하는 단계를 포함하고, 상기 달성가능한 저장 용량을 추정하는 단계는 상기 메모리 셀에 기록된 상기 아날로그 값에 영향을 주는 각각의 왜곡 레벨을 추정하는 단계, 및 상기 왜곡 레벨에 응답하여 상기 달성가능한 저장 용량을 결정하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  5. 제 4 항에 있어서, 상기 왜곡 레벨을 추정하는 단계는 상기 메모리 셀로부터 상기 아날로그 값을 판독하는 단계, 및 상기 메모리 셀로부터 판독된 상기 아날로그 값을 기초로 상기 왜곡 레벨을 추정하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  6. 청구항 6은(는) 설정등록료 납부시 포기되었습니다.
    제 5 항에 있어서, 상기 왜곡 레벨을 추정하는 단계는 상기 메모리로부터 판독된 상기 아날로그 값으로부터 상기 데이터를 복구하는 단계, 및 상기 복구된 데이터를 기초로 상기 왜곡 레벨을 계산하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  7. 청구항 7은(는) 설정등록료 납부시 포기되었습니다.
    제 5 항에 있어서, 상기 왜곡 레벨을 계산하는 단계는 상기 메모리 셀로부터 판독된 상기 아날로그 값의 스칼라 함수를 합산하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  8. 청구항 8은(는) 설정등록료 납부시 포기되었습니다.
    제 7 항에 있어서, 상기 스칼라 함수를 합산하는 단계는 상기 메모리 셀로부터 판독된 상기 아날로그 값과 상기 데이터에 응답하여 상기 메모리 셀에 저장된 상기 데이터의 각각의 기대 값 사이의 차이의 제곱을 합산하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  9. 청구항 9은(는) 설정등록료 납부시 포기되었습니다.
    제 6 항에 있어서, 상기 왜곡 레벨을 계산하는 단계는 상기 메모리 셀로부터 판독된 상기 아날로그 값과 상기 데이터에 응답하여 상기 메모리 셀에 저장된 상기 데이터의 각각의 기대값 사이의 차이가 소정의 값을 초과한 메모리 셀의 개수를 카운트하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  10. 청구항 10은(는) 설정등록료 납부시 포기되었습니다.
    제 4 항에 있어서, 상기 데이터를 저장하는 단계는 상기 메모리 셀에 상기 아날로그 값을 기록하는 단계, 및 반복적인 프로그램 및 검증(P&V) 프로세스를 사용하여 상기 기록된 아날로그 값을 검증하는 단계를 포함하고, 상기 왜곡 레벨을 추정하는 단계는 상기 P&V 프로세스에 의해 검증된 상기 아날로그 값을 기초로 상기 왜곡 레벨을 계산하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  11. 청구항 11은(는) 설정등록료 납부시 포기되었습니다.
    제 4 항에 있어서, 상기 데이터를 저장하는 단계는 상기 메모리 셀에 상기 아날로그 값을 기록하는 단계, 및 프로그래밍 단계에 의해 상기 아날로그 값을 반복적으로 증가시키는, 반복적인 프로그램 및 검증(P&V) 프로세스를 사용하여 상기 기록된 아날로그 값을 검증하는 단계를 포함하고, 상기 저장 컨피규레이션은 상기 반복적인 P&V 프로세스에 의해 사용되는 상기 프로그래밍 단계의 크기를 정의하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  12. 청구항 12은(는) 설정등록료 납부시 포기되었습니다.
    제 1 항에 있어서, 상기 데이터를 저장하는 단계는 에러 보정 코드(ECC)를 사용하여 한 그룹의 상기 메모리 셀에 저장될 상기 데이터를 인코딩하는 단계, 및 상기 인코딩된 데이터를 상기 그룹의 각각의 아날로그 메모리 셀에 저장하기 위한 아날로그 값으로 변환하는 단계를 포함하고, 상기 달성가능한 저장 용량을 추정하는 단계는 상기 그룹 내의 상기 메모리 셀로부터 상기 아날로그 값을 판독하는 단계, 및 상기 아날로그 값과 상기 아날로그 값에 가장 가까운 상기 ECC의 유효 코드워드 사이의 거리 메트릭스를 평가하는 단계를 포함하고, 그리고 상기 저장 컨피규레이션을 조절하는 단계는 상기 평가된 거리 메트릭스에 응답하여 상기 메모리 셀 그룹의 상기 저장 컨피규레이션을 조절하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  13. 청구항 13은(는) 설정등록료 납부시 포기되었습니다.
    제 1 항에 있어서, 상기 달성가능한 저장 용량을 재추정하는 단계는 상기 메모리 셀에 저장된 상기 데이터를 판독하는 단계를 포함하고, 상기 저장 컨피규레이션을 수정하는 단계는 상기 판독된 데이터 내의 에러 검출 에러에 응답하여 상기 저장 컨피규레이션을 조절하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  14. 청구항 14은(는) 설정등록료 납부시 포기되었습니다.
    제 13 항에 있어서, 상기 데이터를 저장하는 단계는 에러 보정 코드(ECC)를 사용하여 상기 데이터를 인코딩하는 단계를 포함하고, 상기 저장 컨피규레이션을 조절하는 단계는 상기 ECC의 코드 레이트를 수정하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  15. 청구항 15은(는) 설정등록료 납부시 포기되었습니다.
    제 1 항에 있어서, 상기 메모리 셀의 상기 달성가능한 용량을 추정하는 단계는 상기 각각의 메모리 셀에 적용된 이전 프로그래밍 및 삭제 오퍼레이션을 트래킹하는 단계, 및 상기 트래킹된 이전 프로그래밍 및 삭제 오퍼레이션에 응답하여 상기 달성가능한 용량을 추정하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  16. 청구항 16은(는) 설정등록료 납부시 포기되었습니다.
    제 15 항에 있어서, 상기 달성가능한 용량을 추정하는 단계는 상기 이전 프로그래밍 및 삭제 오퍼레이션 이후 경과한 기간의 길이에 응답하여 상기 달성가능한 용량을 계산하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  17. 청구항 17은(는) 설정등록료 납부시 포기되었습니다.
    제 1 항에 있어서, 상기 데이터를 저장하는 단계는 상기 데이터의 초기 부분을 아날로그 값으로 변환하는 단계, 및 상기 아날로그 값을 상기 각각의 메모리 셀에 저장하는 단계, 및 이에 후속하여 상기 데이터의 추가 부분을 상기 셀을 삭제하기 않고 상기 메모리에 기록된 상기 아날로그 값을 증가시킴으로써 적어도 일부의 상기 메모리 셀에 저장하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  18. 청구항 18은(는) 설정등록료 납부시 포기되었습니다.
    제 1 항에 있어서, 상기 데이터를 저장하는 단계는 상기 데이터에 리둔던시 비트를 추가하는 에러 보정 코드(ECC)를 사용하여 상기 데이터를 인코딩하는 단계, 및 상기 리둔던시 비트를 상기 아날로그 메모리 셀의 일부에 저장하는 단계를 포함하고, 상기 저장 컨피규레이션를 조절하는 단계는 상기 셀을 삭제하지 않고 상기 ECC에 의해 추가된 상기 리둔던시 비트의 개수를 조절하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  19. 청구항 19은(는) 설정등록료 납부시 포기되었습니다.
    제 18 항에 있어서, 상기 리둔던시 비트를 저장하는 단계는 상기 데이터와 개별적으로 상기 리둔던시 비트를 저장하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  20. 청구항 20은(는) 설정등록료 납부시 포기되었습니다.
    제 1 항에 있어서, 상기 저장 컨피규레이션을 할당하는 단계는 한 세트의 가능한 저장 컨피규레이션를 미리 정의하는 단계를 포함하고, 상기 저장 컨피규레이션을 조절하는 단계는 상기 미리 정의된 세트로부터 갱신된 저장 컨피규레이션을 선택하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  21. 청구항 21은(는) 설정등록료 납부시 포기되었습니다.
    제 1 항에 있어서, 적어도 하나의 상기 저장 컨피규레이션에 의해 정의되는 상기 데이터의 크기는 비정수(non-integer)의 셀당 비트 값을 명시하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  22. 청구항 22은(는) 설정등록료 납부시 포기되었습니다.
    제 1 항에 있어서, 상기 데이터를 저장하는 단계는 상기 데이터를 상기 메모리 셀에 기록하기 전에 상기 데이터를 압축하는 단계를 포함하고, 상기 저장 컨피규레이션은 상기 데이터가 압축될 각각의 압축율을 정의하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  23. 청구항 23은(는) 설정등록료 납부시 포기되었습니다.
    제 1 항에 있어서, 상기 저장 컨피규레이션을 할당하는 단계는 각각의 상기 메모리 셀 그룹에 대하여 상기 저장 컨피규레이션을 정의하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  24. 청구항 24은(는) 설정등록료 납부시 포기되었습니다.
    제 1 항에 있어서, 상기 데이터를 상기 메모리 셀에 저장하는 단계는 상기 메모리에 저장하기 위한 데이터 아이템을 수신하는 단계, 상기 할당된 저장 컨피규레이션에 응답하여 상기 데이터 아이템을 저장하기 위한 한 서브셋의 상기 메모리 셀을 선택하는 단계, 및 상기 데이터 아이템을 상기 메모리 셀의 상기 선택된 서브셋에 저장하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  25. 청구항 25은(는) 설정등록료 납부시 포기되었습니다.
    제 1 항에 있어서, 상기 달성가능한 저장 용량을 재추정하는 단계는 상기 데이터가 저장되고 판독되지 않는 아이들(idle) 기간 동안 수행되는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  26. 청구항 26은(는) 설정등록료 납부시 포기되었습니다.
    제 1 항에 있어서, 상기 저장 컨피규레이션을 할당하는 단계 및 수정하는 단계는 상기 저장 컨피규레이션을 컨피규레이션 테이블에 저장하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  27. 청구항 27은(는) 설정등록료 납부시 포기되었습니다.
    제 26 항에 있어서, 상기 호스트 시스템에 상기 메모리가 설치되기 전에 상기 저장 컨피규레이션의 초기 값을 상기 컨피규레이션 테이블에 저장하는 단계를 더 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  28. 삭제
  29. 청구항 29은(는) 설정등록료 납부시 포기되었습니다.
    제 4 항에 있어서, 상기 메모리 셀들에 기록된 상기 아날로그 값에 영향을 주는 상기 각각의 왜곡 레벨 중 적어도 일부는 상기 아날로그 메모리 셀 내의 누설전류에 의해 발생하고, 상기 각각의 왜곡 레벨을 추정하는 단계는 상기 아날로그 메모리 셀 내의 상기 누설전류를 추정하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  30. 삭제
  31. 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법으로서,
    상기 메모리가 호스트 시스템에서 사용중인 동안, 상기 아날로그 메모리 셀의 각각의 달성가능한 저장 용량을 트래킹하는 단계;
    상기 메모리에 저장할 데이터를 수신하는 단계;
    상기 트래킹된 달성가능한 용량을 기초로 상기 데이터를 저장하기 위한 한 서브셋의 상기 메모리 셀을 선택하는 단계; 및
    상기 메모리 셀의 상기 서브셋에 상기 데이터를 저장하는 단계를 포함하고,
    상기 저장할 데이터를 수신하는 단계는, 상기 호스트 시스템으로부터 상기 데이터를 고정용량 블록들로 수신하는 단계, 및 후속적으로 그리고 상기 메모리 셀의 가변용량 그룹들 사이의 경계와 무관하게, 상기 가변용량 그룹들의 상기 트래킹된 달성가능한 용량을 기초로 상기 가변용량 그룹들에 상기 데이터를 저장하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  32. 제 31 항에 있어서, 상기 서브셋을 선택하는 단계는 그 전체 달성가능한 용량이 상기 수신된 데이터의 크기와 가장 잘 매칭하는 상기 메모리 셀을 선택하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  33. 청구항 33은(는) 설정등록료 납부시 포기되었습니다.
    제 31 항에 있어서, 상기 데이터를 수신하는 단계는 상기 데이터를 저장하기 위한 요구된 신뢰도 레벨을 수신하는 단계를 포함하고, 상기 서브셋을 선택하는 단계는 상기 요구된 신뢰도 레벨에 응답하여 상기 메모리 셀을 선택하는 단계를 포 함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  34. 제 31 항에 있어서, 상기 데이터를 수신하는 단계는 상기 데이터를 저장하기 위한 요청된 보유기간을 수신하고, 상기 서브셋을 선택하는 단계는 상기 요청된 보유기간에 응답하여 상기 메모리 셀을 선택하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  35. 제 31 항에 있어서, 상기 서브셋을 선택하는 단계는 다른 메모리 셀에 관하여 낮은 왜곡 레벨을 가진 상기 메모리 셀을 선택하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  36. 청구항 36은(는) 설정등록료 납부시 포기되었습니다.
    제 31 항에 있어서, 상기 달성가능한 저장 용량을 트래킹하는 단계는 상기 메모리 셀에 적용된 이전 프로그래밍 및 삭제 오퍼레이션을 트래킹하는 단계를 포함하고, 상기 서브셋을 선택하는 단계는 상기 이전 프로그래밍 및 삭제 오퍼레이션에 응답하여 상기 메모리 셀을 선택하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  37. 청구항 37은(는) 설정등록료 납부시 포기되었습니다.
    제 36 항에 있어서, 상기 서브셋을 선택하는 단계는 다른 메모리 셀에 대하여 더 적은 횟수의 상기 이전 프로그래밍 및 삭제 오퍼레이션을 가진 상기 메모리 셀을 선택함으로써 상기 메모리 내의 상기 메모리 셀에 대하여 프로그래밍 삭제 오퍼레이션의 횟수를 균일하게 분산시키는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  38. 제 37 항에 있어서, 상기 프로그래밍 및 삭제 오퍼레이션의 횟수를 분산시키는 단계는 상기 다른 메모리 셀에 대하여 소정의 최근 시간 동안 수행된 더 작은 개수의 이전 프로그래밍 및 삭제 오퍼레이션을 가진 상기 메모리 셀을 선택하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  39. 청구항 39은(는) 설정등록료 납부시 포기되었습니다.
    제 31 항에 있어서, 상기 달성가능한 저장 용량을 트래킹하는 단계는 상기 데이터를 저장할 수 있는 상기 메모리의 상기 달성가능한 용량을 합산함으로써 달성가능한 저장 공간의 크기를 계산하고 호스트 시스템에 보고하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  40. 청구항 40은(는) 설정등록료 납부시 포기되었습니다.
    제 31 항에 있어서, 상기 메모리는 복수의 삭제 블록으로 분할되어 있고, 각각의 삭제 블록은 단일 삭제 오퍼레이션에서 삭제되는 한 그룹의 상기 메모리 셀을 포함하고, 그리고
    데이터 아이템이 저장된 하나 이상의 상기 삭제 블록을 식별하는 단계;
    상기 데이터 아이템이 저장된 상기 삭제 블록을 삭제하는 단계에 의해 상기 메모리로부터 데이터 아이템을 삭제하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  41. 삭제
  42. 청구항 42은(는) 설정등록료 납부시 포기되었습니다.
    제 31 항에 있어서, 상기 가변용량 그룹들에 데이터를 저장하는 단계는 상기 고정용량 블록의 용량보다 작은 용량을 가진 둘 이상의 가변용량 그룹을 식별하는 단계, 및 상기 식별된 둘 이상의 가변용량 그룹에 상기 고정용량 블록들 중 하나 이상에 수신된 상기 데이터를 저장하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  43. 청구항 43은(는) 설정등록료 납부시 포기되었습니다.
    제 31 항에 있어서, 상기 가변용량 그룹들에 데이터를 저장하는 단계는 상기 가변용량 그룹들 중 하나 이상을 초과 메모리 저장 영역으로 역할하도록 할당하는 단계, 각각의 가변용량 그룹에 상기 고정용량 블록들로 수신된 상기 데이터를 저장하는 단계, 및 가변용량 그룹의 상기 달성가능한 용량이 상기 고정용량 블록들의 용량보다 작을 때, 상기 각각의 고정용량 블록으로 수신된 상기 데이터의 일부를 상기 할당된 초과 메모리 저장 영역에 저장하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  44. 삭제
  45. 청구항 45은(는) 설정등록료 납부시 포기되었습니다.
    제 31 항에 있어서, 상기 데이터를 저장하는 단계는 각각의 가변용량 그룹에 각각의 고정용량 블록으로 수신된 상기 데이터를 초기 저장하는 단계, 및 후속하여, 상기 가변용량 그룹들 사이의 경계와 무관하게, 상기 초기 저장된 데이터를 연속적으로 재프로그래밍하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  46. 청구항 46은(는) 설정등록료 납부시 포기되었습니다.
    제 31 항에 있어서, 상기 가변용량 그룹들로부터 상기 데이터를 추출하는 단계, 상기 고정용량 블록들을 복구하는 단계, 및 상기 데이터를 상기 고정용량 블록들을 사용하여 상기 호스트 시스템으로 출력하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  47. 청구항 47은(는) 설정등록료 납부시 포기되었습니다.
    제 31 항에 있어서, 상기 데이터의 적어도 일부를 캐싱함으로써 상기 메모리에 적용된 메모리 액세스 오퍼레이션의 개수를 줄이는 단계를 더 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  48. 청구항 48은(는) 설정등록료 납부시 포기되었습니다.
    제 47 항에 있어서, 상기 데이터의 적어도 일부를 캐싱하는 단계는 중간 저장 이벤트를 검출한 때 상기 메모리에 상기 캐싱된 데이터를 전송하는 단계를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 갖춘 메모리에 데이터를 저장하는 방법.
  49. 청구항 49은(는) 설정등록료 납부시 포기되었습니다.
    복수의 아날로그 메모리 셀을 포함하는 메모리에 데이터를 저장하는 방법으로서,
    상기 메모리가 호스트 시스템에서 사용되는 동안 상기 아날로그 메모리 셀의 각각의 달성가능한 저장 용량을 트래킹하는 단계;
    상기 메모리에 저장할 데이터를 수신하는 단계;
    상기 트래킹된 달성가능한 용량을 기초로 상기 데이터를 저장할 하나의 서브셋의 상기 메모리 셀을 선택하는 단계;
    상기 서브셋의 상기 메모리 셀 내에 상기 데이터를 저장하는 단계; 및
    상기 데이터의 적어도 일부를 캐싱함으로써 상기 메모리에 적용되는 메모리 액세스 오퍼레이션의 개수를 줄이는 단계를 포함하고,
    상기 데이터의 적어도 일부를 캐싱하는 것은 중간 저장 이벤트를 검출한 때 상기 메모리에 상기 캐싱된 데이터를 전송하는 단계를 포함하고, 상기 중간 저장 이벤트는 상기 호스트 시스템으로부터 수신된 어프로칭 파워 오류, 타임 아웃, 및 엔드오브파일(EOF) 커맨드로 이루어진 하나의 그룹의 이벤트로부터 선택된 적어도 하나의 이벤트를 포함하는 것을 특징으로 하는 복수의 아날로그 메모리 셀을 포함하는 메모리에 데이터를 저장하는 방법.
  50. 데이터 저장 장치로서,
    복수의 아날로그 메모리 셀을 갖춘 메모리와 통신하도록 배열되어 있는 인터페이스; 및
    메모리 신호 프로세서(MSP)를 포함하고, 상기 MSP는 상기 메모리 셀의 각각의 달성가능한 저장 용량을 추정하고, 상기 추정된 달성가능한 용량을 기초로 상기 메모리 셀에 저장될 데이터의 크기를 정의하는 각각의 저장 컨피규레이션을 상기 메모리 셀에 할당하고, 상기 각각의 할당된 저장 컨피규레이션에 따라 상기 메모리에 상기 데이터를 저장하고, 상기 메모리가 호스트 시스템에 설치된 후, 그리고 상기 호스트 시스템에 상기 데이터를 저장하기 위해 사용될 때, 상기 메모리 셀의 상기 각각의 달성가능한 저장 용량을 재추정하고, 그리고 상기 재추정된 달성가능한 용량에 응답하여 상기 저장 컨피규레이션을 수정하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  51. 제 50 항에 있어서, 상기 MSP는 에러 보정 코드(ECC)를 사용하여 상기 데이터를 인코딩하고, 상기 인코딩된 데이터를 한 세트의 노미널 아날로그 값으로부터 선택된 아날로그 값으로 변환하고 상기 아날로그 값을 상기 각각의 메모리 셀에 저장하도록 배열되어 있고, 각각의 저장 컨피규레이션은 각각의 ECC 코드 레이트, 및 상기 데이터를 저장하기 위해 사용된 한 세트의 노미널 아날로그 값의 크기를 명시하는 것을 특징으로 하는 데이터 저장 장치.
  52. 청구항 52은(는) 설정등록료 납부시 포기되었습니다.
    제 50 항에 있어서, 상기 MSP는, 각각의 아날로그 메모리 셀에 대하여, 상기 데이터를 한 세트의 노미널 아날로그 값으로부터 선택된 아날로그 값으로 변환하고, 상기 아날로그 값을 상기 메모리 셀에 저장함으로써 상기 데이터를 저장하도록 배열되어 있고, 각각의 저장 컨피규레이션은 상기 아날로그 메모리 셀에 상기 데이터를 저장하기 위해 사용된 상기 노미널 아날로그 값을 명시하는 것을 특징으로 하는 데이터 저장 장치.
  53. 제 50 항에 있어서, 상기 MSP는 상기 데이터를 아날로그 값으로 변환하고 상기 아날로그 값을 상기 각각의 메모리 셀에 저장하고, 상기 메모리 셀에 기록된 상기 아날로그 값에 영향을 미치는 각각의 왜곡 레벨을 추정하고, 그리고 상기 왜곡 레벨에 응답하여 상기 달성가능한 저장 용량을 결정하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  54. 제 53 항에 있어서, 상기 MSP는 상기 메모리 셀로부터 상기 아날로그 값을 판독하고 상기 메모리 셀로부터 판독된 상기 아날로그 값을 기초로 상기 왜곡 레벨을 추정하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  55. 청구항 55은(는) 설정등록료 납부시 포기되었습니다.
  56. 청구항 56은(는) 설정등록료 납부시 포기되었습니다.
    제 55 항에 있어서, 상기 MSP는 상기 메모리 셀로부터 판독된 상기 아날로그 값의 스칼라 함수를 합산함으로써 상기 왜곡 레벨을 계산하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  57. 청구항 57은(는) 설정등록료 납부시 포기되었습니다.
    제 56 항에 있어서, 상기 MSP는 상기 메모리 셀로부터 판독된 상기 아날로그 값과 상기 데이터에 응답하여 상기 메모리 셀에 저장된 상기 데이터의 각각의 기대값 사이의 차이의 제곱을 합산하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  58. 청구항 58은(는) 설정등록료 납부시 포기되었습니다.
    제 56 항에 있어서, MSP는 상기 메모리 셀로부터 판독된 상기 아날로그 값과 상기 데이터에 응답하여 상기 메모리 셀에 저장된 상기 데이터의 각각의 기대값 사이의 차이가 소정의 값을 초과한 메모리 셀의 개수를 카운트함으로써 상기 왜곡 레벨을 계산하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  59. 제 53 항에 있어서, 상기 MSP는 상기 아날로그 값을 상기 메모리 셀에 기록하고 상기 기록된 아날로그 값을 반복적인 프로그램 및 검증(P&V) 프로세스를 사용 하여 검증하고, 상기 P&V 프로세스에 의해 검증된 상기 아날로그 값을 기초로 상기 왜곡 레벨을 계산하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  60. 청구항 60은(는) 설정등록료 납부시 포기되었습니다.
    제 53 항에 있어서, 상기 MSP는 상기 아날로그 값을 상기 메모리 셀에 저장하고, 상기 저장된 아날로그 값을 상기 아날로그 값을 프로그래밍 간격만큼 반복적으로 증가시키는, 반복적인 프로그램 및 검증(P&V) 프로세스를 사용하여 검증하도록 배열되어 있고, 상기 저장 컨피규레이션은 상기 반복적인 P&V 프로세스에 의해 사용된 상기 프로그래밍 간격의 크기를 정의하는 것을 특징으로 하는 데이터 저장 장치.
  61. 청구항 61은(는) 설정등록료 납부시 포기되었습니다.
    제 50 항에 있어서, 상기 MSP는 에러 보정 코드(ECC)를 사용하여 한 그룹의 상기 메모리 셀에 저장될 상기 데이터를 인코딩하고, 상기 인코딩된 데이터를 상기 각각의 아날로그 메모리 셀의 상기 그룹에 저장하기 위한 아날로그 값으로 변환하고, 상기 그룹 내의 상기 메모리 셀로부터 상기 아날로그 값을 판독하고, 상기 판독된 아날로그 값과 상기 아날로그 값에 가장 가까운 상기 ECC의 유효 코드 사이의 거리 메트릭스를 평가하고, 그리고 상기 평가된 거리 메트릭스에 응답하여 상기 메모리 셀의 상기 그룹의 상기 저장 컨피규레이션을 조절하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  62. 청구항 62은(는) 설정등록료 납부시 포기되었습니다.
    제 50 항에 있어서, 상기 MSP는 상기 메모리 셀에 저장된 상기 데이터를 판독하고, 상기 판독된 데이터 내의 디텍팅 에러에 응답하여 상기 저장 컨피규레이션을 조절하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  63. 청구항 63은(는) 설정등록료 납부시 포기되었습니다.
    제 62 항에 있어서, 상기 MSP는 에러 보정 코드(ECC)를 사용하여 상기 데이터를 인코딩하고, 상기 ECC의 코드 레이트를 수정함으로써 상기 저장 컨피규레이션을 조절하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  64. 청구항 64은(는) 설정등록료 납부시 포기되었습니다.
    제 50 항에 있어서, 상기 MSP는 상기 메모리 셀에 적용된 이전 프로그래밍 및 삭제 오퍼레이션을 트래킹하고, 상기 트래킹된 이전 프로그래밍 및 삭제 오퍼레이션에 응답하여 상기 각각의 달성가능한 용량을 추정하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  65. 청구항 65은(는) 설정등록료 납부시 포기되었습니다.
    제 64 항에 있어서, 상기 MSP는 상기 이전 프로그래밍 및 삭제 오퍼레이션 이후 경과한 기간의 길이에 응답하여 상기 달성가능한 용량을 계산하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  66. 청구항 66은(는) 설정등록료 납부시 포기되었습니다.
    제 50 항에 있어서, 상기 MSP는 상기 데이터의 초기 부분을 아날로그 값으로 변환하고 상기 아날로그 값을 상기 각각의 메모리 셀에 기록하고, 상기 셀을 삭제하지 않고 상기 메모리 셀의 적어도 일부에 기록된 상기 아날로그 값을 증가시킴으로써 상기 메모리에 상기 데이터의 추가 부분을 후속 저장하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  67. 청구항 67은(는) 설정등록료 납부시 포기되었습니다.
    제 50 항에 있어서, 상기 MSP는 상기 데이터에 리둔던시 비트를 추가하는 에러 보정 코드(ECC)를 사용하여 상기 데이터를 인코딩하고 상기 리둔던시 비트를 상기 아날로그 메모리 셀 일부에 저장하고, 상기 셀을 삭제하지 않고 상기 ECC에 의해 추가된 상기 리둔던시 비트의 개수를 조절함으로써 상기 저장 컨피규레이션을 조절하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  68. 청구항 68은(는) 설정등록료 납부시 포기되었습니다.
    제 67 항에 있어서, 상기 MSP는 상기 데이터와 개별적으로 상기 리둔던시 비트를 저장하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  69. 청구항 69은(는) 설정등록료 납부시 포기되었습니다.
    제 50 항에 있어서, 상기 MSP는 가능한 저장 컨피규레이션의 소정의 세트로부터 갱신된 저장 컨피규레이션을 선택함으로써 상기 저장 컨피규레이션을 조절하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  70. 청구항 70은(는) 설정등록료 납부시 포기되었습니다.
    제 50 항에 있어서, 적어도 하나의 상기 저장 컨피규레이션에 의해 정의된 상기 데이터의 크기는 비정수(non-integer)의 셀당 비트를 명시하는 것을 특징으로 하는 데이터 저장 장치.
  71. 청구항 71은(는) 설정등록료 납부시 포기되었습니다.
    제 50 항에 있어서, 상기 MSP는 상기 데이터를 상기 메모리 셀에 저장하기 전에 상기 데이터를 압축하도록 배열되어 있고, 상기 저장 컨피규레이션은 상기 데이터가 압축되는 각각의 압출율을 정의하는 것을 특징으로 하는 데이터 저장 장치.
  72. 청구항 72은(는) 설정등록료 납부시 포기되었습니다.
    제 50 항에 있어서, 상기 MSP는 상기 메모리 셀의 각각의 그룹에 대하여 상기 저장 컨피규레이션을 정의하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  73. 청구항 73은(는) 설정등록료 납부시 포기되었습니다.
    제 50 항에 있어서, 상기 MSP는 상기 메모리에 저장할 데이터 아이템을 수신하고, 상기 할당된 저장 컨피규레이션에 응답하여 상기 데이터 아이템을 저장할 상기 메모리 셀의 한 서브셋을 선택하고, 그리고 상기 선택된 서브셋의 상기 메모리 셀에 상기 데이터 아이템을 저장하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  74. 청구항 74은(는) 설정등록료 납부시 포기되었습니다.
    제 50 항에 있어서, 상기 MSP는 상기 데이터가 저장되지 않고 판독되지 않는 아이들(idle) 기간 동안 상기 달성가능한 저장 용량을 재추정하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  75. 청구항 75은(는) 설정등록료 납부시 포기되었습니다.
    제 50 항에 있어서, 상기 MSP는 상기 저장 컨피규레이션을 컨피규레이션 테이블에 저장하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  76. 청구항 76은(는) 설정등록료 납부시 포기되었습니다.
    제 50 항에 있어서, 상기 MSP는 상기 메모리 셀에 저장된 상기 데이터의 크기와 상기 각각의 추정된 달성가능한 용량 사이에 소정의 마진을 유지하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  77. 청구항 77은(는) 설정등록료 납부시 포기되었습니다.
    제 50 항에 있어서, 상기 메모리 셀들에 기록된 아날로그 값에 영향을 주는 왜곡의 적어도 일부는 상기 아날로그 메모리 셀 내의 누설전류에 의해 발생되고, 상기 MSP는 상기 누설전류를 추정하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  78. 삭제
  79. 데이터 저장 장치로서,
    복수의 아날로그 메모리 셀을 갖춘 메모리와 통신하도록 배열되어 있는 인터페이스; 및
    메모리 신호 프로세서(MSP)를 포함하고, 상기 MSP는 상기 메모리가 호스트 시스템에서 사용중인 동안 상기 메모리 셀의 각각의 달성가능한 저장 용량을 트래킹하고, 상기 메모리에 저장할 데이터를 수신하고, 상기 트래킹된 달성가능한 용량을 기초로 상기 데이터를 저장하기 위한 상기 메모리 셀의 한 서브셋을 선택하고, 그리고 상기 서브셋의 상기 메모리 셀에 상기 데이터를 저장하도록 배열되어 있고,
    상기 MSP는 상기 호스트 시스템으로부터 고정용량 블록들로 상기 데이터를 수신하고, 순차적으로 그리고 상기 메모리 셀의 가변용량 그룹들 사이의 경계와 무관하게, 상기 가변용량 그룹들의 상기 트래킹된 달성가능한 용량을 기초로 상기 가변용량 그룹들에 상기 데이터를 저장하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  80. 청구항 80은(는) 설정등록료 납부시 포기되었습니다.
    제 79 항에 있어서, 상기 MSP는 전체 달성가능한 용량이 상기 수신된 데이터의 크기와 가장 잘 매칭하는 상기 메모리 셀을 선택하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  81. 제 79 항에 있어서, 상기 MSP는 상기 데이터를 저장하기 위한 요구된 신뢰도 레벨을 수신하고, 상기 요구된 신뢰도 레벨에 응답하여 상기 메모리 셀을 선택 하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  82. 청구항 82은(는) 설정등록료 납부시 포기되었습니다.
    제 79 항에 있어서, 상기 MSP는 상기 데이터를 저장하기 위한 요구된 보유기간을 수신하고, 상기 요구된 보유기간에 응답하여 상기 메모리 셀을 선택하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  83. 제 79 항에 있어서, 상기 MSP는 다른 메모리 셀에 대하여 낮은 왜곡 레벨을 가진 상기 메모리 셀을 선택하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  84. 제 79 항에 있어서, 상기 MSP는 상기 메모리 셀에 적용된 이전 프로그래밍 및 삭제 오퍼레이션을 트래킹하고, 상기 이전 프로그래밍 및 삭제 오퍼레이션에 응답하여 상기 메모리 셀을 선택하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  85. 청구항 85은(는) 설정등록료 납부시 포기되었습니다.
    제 84 항에 있어서, 상기 메모리 내의 상기 메모리 셀에 프로그래밍 및 삭제 오퍼래이션의 개수를, 다른 메모리 셀에 대하여 더 작은 개수의 상기 이전 프로그래밍 및 삭제 오퍼레이션을 가진 상기 메모리 셀을 선택함으로써, 균일하게 분포시키도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  86. 청구항 86은(는) 설정등록료 납부시 포기되었습니다.
  87. 청구항 87은(는) 설정등록료 납부시 포기되었습니다.
    제 79 항에 있어서, 상기 MSP는 상기 데이터를 저장하기 위해 달성가능한 상기 메모리 셀의 상기 달성가능한 용량을 합산함으로써 사용가능한 메모리 공간의 크기를 계산하고 상기 호스트 시스템에 보고하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  88. 청구항 88은(는) 설정등록료 납부시 포기되었습니다.
    제 79 항에 있어서, 상기 메모리는 복수의 삭제 블록으로 분할되어 있고, 각각의 삭제 블록은 단일 삭제 오퍼레이션에서 삭제되는 한 그룹의 상기 메모리 셀을 포함하고, 상기 MSP는
    데이터 아이템이 저장된 하나 이상의 상기 삭제 블록을 식별하는 단계;
    상기 데이터 아이템이 저장된 상기 삭제 블록이 다른 데이터 아이템의 임의의 저장된 데이터를 포함할 때, 상기 메모리 셀의 상기 트래킹된 달성가능한 용량 및 상기 다른 데이터 아이템의 크기를 기초로 상기 데이터가 저장된 상기 삭제 블록의 외부의 대안의 메모리 셀을 식별하는 단계, 및 상기 대안의 메모리 셀에 상기 다른 데이터 아이템의 상기 데이터를 복사하는 단계; 및
    상기 데이터 아이템이 저장된 상기 삭제 블록을 삭제하는 단계에 의해 상기 메모리로부터 데이터 아이템을 삭제하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  89. 삭제
  90. 청구항 90은(는) 설정등록료 납부시 포기되었습니다.
    제 79 항에 있어서, 상기 MSP는 상기 고정용량 블록 보다 더 작은 용량을 가진 둘 이상의 가변용량 그룹을 식별하고, 상기 식별된 둘 이상의 가변용량 그룹에 상기 고정용량 블록들 중 하나 이상의 고정용량 블록으로 수신된 상기 데이터를 저장하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  91. 청구항 91은(는) 설정등록료 납부시 포기되었습니다.
    제 79 항에 있어서, 상기 MSP는 초과 메모리 저장 영역으로 역할하도록 상기 가변용량 그룹들 중 하나 이상을 할당하고, 각각의 가변용량 그룹에 상기 고정용량블록들로 수신한 상기 데이터를 저장하고, 그리고 가변용량 그룹의 상기 달성가능한 용량이 상기 고정용량 블록들의 용량보다 더 작은 때, 상기 할당된 초과 메모리 저장 영역에 각각의 상기 고정용량 블록들로 수신한 상기 데이터의 일부를 저장하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  92. 삭제
  93. 청구항 93은(는) 설정등록료 납부시 포기되었습니다.
    제 79 항에 있어서, 상기 MSP는 각각의 가변용량 그룹에 각각의 고정용량 블록으로 수신한 상기 데이터를 초기 저장하고, 후속하여 상기 가변용량 그룹들 사이의 상기 경계와 무관하게, 순차적으로 상기 초기 저장된 데이터를 재프로그래밍하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  94. 청구항 94은(는) 설정등록료 납부시 포기되었습니다.
    제 79 항에 있어서, 상기 MSP는 상기 가변용량 그룹들로부터 상기 데이터를 추출하고, 상기 고정용량 블록들을 복구하고, 상기 데이터를 상기 고정용량 블록들을 사용하여 상기 호스트 시스템으로 출력하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  95. 제 79 항에 있어서, 상기 MSP는 상기 데이터의 적어도 일부를 캐싱함으로써 상기 메모리에 적용된 메모리 액세스 오퍼레이션의 개수를 줄이도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  96. 청구항 96은(는) 설정등록료 납부시 포기되었습니다.
    제 95 항에 있어서, 상기 MSP는 중간 저장 이벤트를 검출한 후, 상기 메모리로 상기 캐싱된 데이터를 전송하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  97. 청구항 97은(는) 설정등록료 납부시 포기되었습니다.
    데이터 저장 장치로서,
    복수의 아날로그 메모리 셀을 포함하는 메모리와 통신하도록 배열되어 있는 인터페이스; 및
    상기 메모리가 호스트 시스템에서 사용중인 동안 상기 메모리 셀의 각각의 달성가능한 저장 용량을 트래킹하고, 상기 메모리에 저장할 데이터를 수신하고, 상기 트래킹된 달성가능한 용량을 기초로 상기 데이터를 저장할 하나의 서브셋의 메모리 셀을 선택하고, 상기 서브셋의 메모리 셀에 상기 데이터를 저장하도록 배열된 메모리 신호 프로세서(MSP)를 포함하고,
    상기 MSP는 상기 데이터의 적어도 일부를 캐싱함으로써 상기 메모리에 적용되는 메모리 액세스 오퍼레이션의 개수를 줄이고, 중간 저장 이벤트를 검출한 때 상기 메모리에 상기 캐싱된 데이터를 전송하도록 배열되어 있고, 상기 중간 저장 이벤트는 상기 호스트 시스템으로부터 수신된 어프로칭 파워 오류, 타임 아웃, 및 엔드오브파일(EOF) 커맨드로 이루어진 하나의 그룹의 이벤트로부터 선택된 적어도 하나의 이벤트를 포함하는 것을 특징으로 하는 데이터 저장 장치.
  98. 데이터 저장 장치로서,
    복수의 아날로그 메모리 셀을 포함하는 메모리; 및
    상기 메모리에 연결되어 있는 메모리 신호 프로세서(MSP)를 포함하고, 상기 MSP는 상기 메모리의 각각의 달성가능한 저장 용량을 추정하고, 상기 추정된 달성가능한 용량을 기초로 상기 메모리에 저장될 데이터의 크기를 정의하는 각각의 저장 컨피규레이션을 상기 메모리 셀에 할당하고, 상기 각각의 할당된 저장 컨피규레이션에 따라 상기 메모리 셀에 상기 데이터를 저장하고, 상기 메모리가 호스트 시스템에 설치된 후, 그리고 상기 호스트 시스템에 상기 데이터를 저장하기 위해 사용될 때 상기 아날로그 메모리 셀의 상기 각각의 달성가능한 저장 용량을 재추정하고, 그리고 상기 재추정된 달성가능한 용량에 응답하여 상기 저장 컨피규레이션을 조절하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  99. 제 98 항에 있어서, 상기 메모리는 제1집적회로(IC)에 설치되어 있고, 상기 MSP는 상기 제1IC와 상이한 제2IC에 설치되어 있는 것을 특징으로 하는 데이터 저장 장치.
  100. 제 98 항에 있어서, 상기 상기 메모리와 상기 MSP는 단일 디바이스에 통합되어 있는 것을 특징으로 하는 데이터 저장 장치.
  101. 청구항 101은(는) 설정등록료 납부시 포기되었습니다.
    제 98 항에 있어서, 상기 MSP는 상기 호스트 시스템의 프로세서 내에 내장되어 있는 것을 특징으로 하는 데이터 저장 장치.
  102. 청구항 102은(는) 설정등록료 납부시 포기되었습니다.
    제 98 항에 있어서, 상기 메모리 셀은 플래시 메모리 셀을 포함하는 것을 특징으로 하는 데이터 저장 장치.
  103. 청구항 103은(는) 설정등록료 납부시 포기되었습니다.
    제 98 항에 있어서, 상기 메모리 셀은 디램(DRAM) 셀을 포함하는 것을 특징으로 하는 데이터 저장 장치.
  104. 청구항 104은(는) 설정등록료 납부시 포기되었습니다.
    제 98 항에 있어서, 상기 메모리 셀은 상변화 메모리(PCM) 셀을 포함하는 것을 특징으로 하는 데이터 저장 장치.
  105. 청구항 105은(는) 설정등록료 납부시 포기되었습니다.
    제 98 항에 있어서, 상기 메모리 셀은 니트라이드 롬(NROM) 셀을 포함하는 것을 특징으로 하는 데이터 저장 장치.
  106. 청구항 106은(는) 설정등록료 납부시 포기되었습니다.
    제 98 항에 있어서, 상기 메모리 셀은 자성 램(MRAM) 셀을 포함하는 것을 특징으로 하는 데이터 저장 장치.
  107. 청구항 107은(는) 설정등록료 납부시 포기되었습니다.
    제 98 항에 있어서, 상기 메모리 셀은 강유전체 램(FRAM) 셀을 포함하는 것을 특징으로 하는 데이터 저장 장치.
  108. 데이터 저장 장치로서,
    복수의 아날로그 메모리 셀을 포함하는 메모리; 및
    상기 메모리에 연결되어 있는 메모리 신호 프로세서(MSP)를 포함하고, 상기 MSP는 상기 메모리가 호스트 시스템에서 사용중인 동안 상기 메모리 셀의 각각의 달성가능한 저장 용량을 트래킹하고, 상기 메모리 내에 저장할 데이터를 수신하고, 상기 트래킹된 달성가능한 용량을 기초로 상기 데이터를 저장하기 위한 상기 메모리 셀의 서브셋을 선택하고, 그리고 상기 서브셋의 상기 메모리 셀에 상기 데이터를 저장하도록 배열되어 있고,
    상기 MSP는 상기 호스트 시스템으로부터 상기 데이터를 고정용량 블록들로 수신하고, 후속적으로 그리고 상기 메모리 셀의 가변용량 그룹들 사이의 경계와 무관하게, 상기 가변용량 그룹들의 상기 트래킹된 달성가능한 용량을 기초로 상기 가변용량 그룹들 내에 상기 데이터를 저장하도록 배열되어 있는 것을 특징으로 하는 데이터 저장 장치.
  109. 청구항 109은(는) 설정등록료 납부시 포기되었습니다.
    제 108 항에 있어서, 상기 메모리는 제1집적회로(IC)에 설치되고, 상기 MSP는 상기 제1IC와 상이한 제2IC에 설치되어 있는 것을 특징으로 하는 데이터 저장 장치.
  110. 청구항 110은(는) 설정등록료 납부시 포기되었습니다.
  111. 제 108 항에 있어서, 상기 MSP는 상기 호스트 시스템의 프로세서 내에 내장되어 있는것을 특징으로 하는 데이터 저장 장치.
  112. 청구항 112은(는) 설정등록료 납부시 포기되었습니다.
    제 108 항에 있어서, 상기 메모리 셀은 플래시 메모리 셀을 포함하는 것을 특징으로 하는 데이터 저장 장치.
  113. 청구항 113은(는) 설정등록료 납부시 포기되었습니다.
    제 108 항에 있어서, 상기 메모리 셀은 디램(DRAM) 셀을 포함하는 것을 특징으로 하는 데이터 저장 장치.
  114. 청구항 114은(는) 설정등록료 납부시 포기되었습니다.
    제 108 항에 있어서, 상기 메모리 셀은 상변화 메모리(PCM) 셀을 포함하는 것을 특징으로 하는 데이터 저장 장치.
  115. 청구항 115은(는) 설정등록료 납부시 포기되었습니다.
    제 108 항에 있어서, 상기 메모리 셀은 니트라이드 롬(NROM) 셀을 포함하는 것을 특징으로 하는 데이터 저장 장치.
  116. 청구항 116은(는) 설정등록료 납부시 포기되었습니다.
    제 108 항에 있어서, 상기 메모리 셀은 자성 램(MRAM) 셀을 포함하는 것을 특징으로 하는 데이터 저장 장치.
  117. 청구항 117은(는) 설정등록료 납부시 포기되었습니다.
    제 108 항에 있어서, 상기 메모리 셀은 강유전체 램(FRAM) 셀을 포함하는 것을 특징으로 하는 데이터 저장 장치.
KR1020087028919A 2006-05-12 2007-05-10 조절가능한 용량을 가진 메모리 디바이스 KR101208312B1 (ko)

Applications Claiming Priority (20)

Application Number Priority Date Filing Date Title
US74710606P 2006-05-12 2006-05-12
US60/747,106 2006-05-12
US82223606P 2006-08-13 2006-08-13
US60/822,236 2006-08-13
US82591306P 2006-09-17 2006-09-17
US60/825,913 2006-09-17
US86607106P 2006-11-16 2006-11-16
US60/866,071 2006-11-16
US86686006P 2006-11-22 2006-11-22
US60/866,860 2006-11-22
US86739906P 2006-11-28 2006-11-28
US60/867,399 2006-11-28
US87183806P 2006-12-26 2006-12-26
US60/871,838 2006-12-26
US88224006P 2006-12-28 2006-12-28
US60/882,240 2006-12-28
US88307107P 2007-01-02 2007-01-02
US60/883,071 2007-01-02
US88598707P 2007-01-22 2007-01-22
US60/885,987 2007-01-22

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020127012041A Division KR101274950B1 (ko) 2006-05-12 2007-05-10 조절가능한 용량을 가진 메모리 디바이스

Publications (2)

Publication Number Publication Date
KR20090033835A KR20090033835A (ko) 2009-04-06
KR101208312B1 true KR101208312B1 (ko) 2012-12-05

Family

ID=40759967

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020127012041A KR101274950B1 (ko) 2006-05-12 2007-05-10 조절가능한 용량을 가진 메모리 디바이스
KR1020087028919A KR101208312B1 (ko) 2006-05-12 2007-05-10 조절가능한 용량을 가진 메모리 디바이스

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020127012041A KR101274950B1 (ko) 2006-05-12 2007-05-10 조절가능한 용량을 가진 메모리 디바이스

Country Status (3)

Country Link
JP (1) JP5183625B2 (ko)
KR (2) KR101274950B1 (ko)
CN (1) CN102394101B (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4999921B2 (ja) * 2006-05-12 2012-08-15 アノビット テクノロジーズ リミテッド メモリ素子用の歪み推定と誤り訂正符号化の組み合せ
US7911834B2 (en) 2006-05-15 2011-03-22 Apple Inc. Analog interface for a flash memory die
US7639542B2 (en) * 2006-05-15 2009-12-29 Apple Inc. Maintenance operations for multi-level data storage cells
KR101378365B1 (ko) * 2008-03-12 2014-03-28 삼성전자주식회사 하이브리드 메모리 데이터 검출 장치 및 방법
JP5971509B2 (ja) * 2011-08-30 2016-08-17 ソニー株式会社 情報処理装置および方法、並びに記録媒体
US8788743B2 (en) * 2012-04-11 2014-07-22 Micron Technology, Inc. Mapping between program states and data patterns
KR101949987B1 (ko) * 2012-12-18 2019-02-20 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP5855150B2 (ja) * 2014-03-06 2016-02-09 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
WO2015151261A1 (ja) * 2014-04-03 2015-10-08 株式会社日立製作所 不揮発メモリシステム及び情報処理システム
WO2015155860A1 (ja) * 2014-04-09 2015-10-15 株式会社日立製作所 情報記憶装置及び情報記憶装置の制御方法
KR102468992B1 (ko) * 2015-11-06 2022-11-22 에스케이하이닉스 주식회사 메모리 장치 및 이의 동작 방법
JP6156710B2 (ja) * 2016-05-16 2017-07-05 ソニー株式会社 情報処理装置および方法、並びに記録媒体
US10275165B2 (en) 2016-09-12 2019-04-30 Toshiba Memory Corporation Memory controller
JP2018160018A (ja) * 2017-03-22 2018-10-11 株式会社ジェイテクト データ処理装置
KR102032878B1 (ko) * 2017-12-22 2019-10-16 한국외국어대학교 연구산학협력단 플래시 메모리 컨트롤러의 에러 정정 방법
US10741568B2 (en) * 2018-10-16 2020-08-11 Silicon Storage Technology, Inc. Precision tuning for the programming of analog neural memory in a deep learning artificial neural network
CN110795037B (zh) * 2019-10-22 2021-06-22 广东高云半导体科技股份有限公司 存储器的单元连接方法、处理器
CN117953936A (zh) * 2022-10-27 2024-04-30 华为技术有限公司 一种存储设备、数据查找方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050169051A1 (en) 2003-10-23 2005-08-04 Khalid Shahzad B. Writable tracking cells

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61338U (ja) * 1984-06-06 1986-01-06 クラリオン株式会社 復号装置
JP3315472B2 (ja) * 1993-04-26 2002-08-19 新日本製鐵株式会社 不揮発性半導体記憶装置
JP3200012B2 (ja) * 1996-04-19 2001-08-20 株式会社東芝 記憶システム
JP3828376B2 (ja) * 2001-05-07 2006-10-04 株式会社東芝 記憶システム
US6961890B2 (en) * 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
US7210077B2 (en) * 2004-01-29 2007-04-24 Hewlett-Packard Development Company, L.P. System and method for configuring a solid-state storage device with error correction coding
JP2008508632A (ja) * 2004-08-02 2008-03-21 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データ記憶及び再生装置
JP2008123330A (ja) * 2006-11-14 2008-05-29 Toshiba Corp 不揮発性半導体記憶装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050169051A1 (en) 2003-10-23 2005-08-04 Khalid Shahzad B. Writable tracking cells

Also Published As

Publication number Publication date
KR20120090084A (ko) 2012-08-16
CN102394101B (zh) 2014-12-31
JP5183625B2 (ja) 2013-04-17
KR101274950B1 (ko) 2013-06-17
CN102394101A (zh) 2012-03-28
JP2009537055A (ja) 2009-10-22
KR20090033835A (ko) 2009-04-06

Similar Documents

Publication Publication Date Title
KR101208312B1 (ko) 조절가능한 용량을 가진 메모리 디바이스
US8694859B2 (en) Memory device with adaptive capacity
US10056135B2 (en) Programming schemes for multi-level analog memory cells
US7697326B2 (en) Reducing programming error in memory devices
US7900102B2 (en) High-speed programming of memory devices
US7593263B2 (en) Memory device with reduced reading latency
US8254180B2 (en) Methods of operating memories including characterizing memory cell signal lines
US8151163B2 (en) Automatic defect management in memory devices
US7633798B2 (en) M+N bit programming and M+L bit read for M bit memory cells
KR101032576B1 (ko) 셀 당 비트가 가변하는 고체 상태 메모리 디바이스로의 에러 정정 코드의 프로그래밍
US8001320B2 (en) Command interface for memory devices
WO2009037691A2 (en) Programming orders for reducing distortion in arrays of multi-level analog memory cells
CN101501779A (zh) 具有自适应容量的存储设备
Cai et al. Reliability issues in flash-memory-based solid-state drives: Experimental analysis, mitigation, recovery
US20120163080A1 (en) Reducing Distortion Using Joint Storage
US9779818B2 (en) Adaptation of high-order read thresholds

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151030

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171027

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20191029

Year of fee payment: 8