KR20120098963A - 멀티레벨 데이터 저장 셀용 관리 동작 - Google Patents

멀티레벨 데이터 저장 셀용 관리 동작 Download PDF

Info

Publication number
KR20120098963A
KR20120098963A KR1020127021506A KR20127021506A KR20120098963A KR 20120098963 A KR20120098963 A KR 20120098963A KR 1020127021506 A KR1020127021506 A KR 1020127021506A KR 20127021506 A KR20127021506 A KR 20127021506A KR 20120098963 A KR20120098963 A KR 20120098963A
Authority
KR
South Korea
Prior art keywords
data
digital
voltage
cell
processor
Prior art date
Application number
KR1020127021506A
Other languages
English (en)
Other versions
KR101217438B1 (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 KR20120098963A publication Critical patent/KR20120098963A/ko
Application granted granted Critical
Publication of KR101217438B1 publication Critical patent/KR101217438B1/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/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3431Circuits or methods to detect disturbed nonvolatile memory cells, e.g. which still read as programmed but with threshold less than the program verify threshold or read as erased but with threshold greater than the erase verify threshold, and to reverse the disturbance via a refreshing programming or erasing step
    • 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
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • 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/30Power supply circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation

Abstract

플래시 메모리 셀(124)로부터 데이터를 판독하기 위한 컴퓨터 소프트웨어를 포함하는 시스템 및 방법은 메모리 셀 그룹으로부터 전압을 검출하는 것과 관련이 있다. 메모리 셀 그룹은 에러 정정용 메타 데이터와 관련이 있으며(605), 각 메모리 셀은 복수의 가능 데이터값으로부터 선택되는 데이터값을 나타내는 전압을 저장한다. 각각의 가능 데이터값은 아날로그 전압이 중첩하지 않는 복수의 범위 중 하나의 범위에 해당한다. 불확실한 데이터값을 갖는 메모리 셀은 검출된 전압에 기초하여 확인된다(610). 불확실한 데이터값을 갖는 메모리 셀의 대체 데이터값을 결정한다(615). 대체 데이터값의 조합을 결정하고(625), 메모리 셀에 관련된 메타 데이터와 선택된 대체 데이터값의 조합을 이용하여 에러 검출 시험을 행한다(635).

Description

멀티레벨 데이터 저장 셀용 관리 동작{MAINTENANCE OPERATIONS FOR MULTI-LEVEL DATA STORAGE CELLS}
일반적으로 본 발명은 비휘발성 메모리 장치에 관한 것으로서, 특히 멀티 레벨 플래시 셀을 동작시키는 시스템 및 방법에 관한 것이다.
컴퓨팅 장치의 성능 및 사양이 높아지면서, 데이터 저장 장치(data storage device)에 대한 수요가 증대하고 있다.  데이터 저장 장치는 예를 들어, 처리기에 의해 실행 가능한 프로그램 명령(즉, 코드)을 저장하는데 사용된다.  데이터 저장 장치는 또한, 예를 들어, 오디오, 화상 및/또는 텍스트 정보를 포함하여 다른 유형의 데이터를 저장하는데 사용된다.  최근, 실질적인 데이터 콘텐츠(예를 들어, 노래, 뮤직 비디오 등)를 저장할 수 있는 데이터 저장 장치를 구비한 시스템이 휴대용 장치에 폭넓게 이용되고 있다.
이러한 휴대용 장치는 소형 팩터(small form factor)를 가지며 배터리와 같은 휴대용 전원으로 동작 가능한 데이터 저장 장치(DSD)를 포함한다.  휴대용 장치에서의 일부 DSD는 전원이 차단되었을 때 데이터를 유지할 수 있는 비휘발성 메모리를 제공할 수 있다.  휴대용 장치는 하드 디스크 드라이브, EEPORM(electrically earasable programmable read only memory) 및 플래시 메모리와 같은 다양한 비휘발성 데이터 저장 장치를 이용한다. 
플래시 메모리는 폭넓게 사용되는 DSD 유형이다.  플래시 메모리는 예를 들어 휴대용 전자 장치와 소비자 애플리케이션(consumer application)에 비휘발성 메모리를 제공할 수 있다.  플래시 메모리는 NOR 플래시와 NAND 플래시 두 종류가 있다.  NOR 플래시는 통상적으로 적절하게 코드를 실행할 수 랜덤하게 액세스 가능하다(즉, RAM과 같이).  NAND 플래시는 데이터를 보다 신속하게 소거하고, 대량으로 데이터에 접근하며(예를 들어, 512byte 정도), NOR 플래시에 비하여 비교적 소거 기간을 길게 할 수 있다.  일반적으로, NAND 플래시는 예를 들어 디지털 카메라와 MP3 플레이어와 같은 소비자 장치에 대하여 고밀도 파일 저장 매체로서 비트 당 낮은 가격으로 비휘발성 저장 장치를 제공할 수 있다. 
통상적으로, 플래시 메모리는 디지털 데이터값을 나타내는 전압으로 각 메모리 셀에 전하를 저장하여 정보 단위를 저장한다.  단일 레벨 셀은, 셀이 “하이” 전압으로 충전 또는 “로우”전압으로의 방전에 기초하여 1비트의 정보를 저장한다.  4개의 상이한 전압 범위 중 하나의 범위에 전하가 위치하도록 디코딩함으로써 단일 셀 내에 2비트의 정보를 저장하는 NAND 플래시 메모리가 개발되었다.  NOR 플래시 메모리는 256개의 상이한 전압 범위 중 하나의 범위에 전하가 위치하도록 디코딩함으로써 단일 셀 내에 8비트의 정보를 저장하도록 개발되었다.
기재하는 장치와 관련 시스템, 방법 및 컴퓨터 프로그램 제품은 플래시 메모리 장치에 있어서의 멀티 레벨 데이터 저장에 관한 것이다.
한 일반적인 태양에 있어서, 복수의 메모리 셀을 포함하는 멀티 레벨 플래시 메모리 장치는 데이터값을 나타내는 전압 레벨로 전하를 저장하는 제1 메모리 셀로부터 전압 레벨을 검출하는 것에 의하여 관리된다. 상기 전압 레벨이 나타내는 상기 데이터값은 상기 메모리 셀에 대응되는 레졸루션 레지스터 엔트리(resolution register entry)에 적어도 부분적으로 기초하여 결정된다. 상기 데이터값이 나타내는 목표 전압으로 상기 복수의 메모리 셀 중 적어도 하나에 전하를 인가한다. 상기 목표 전압은 상기 복수의 메모리 셀 중 적어도 하나에 대응되는 레졸루션 레지스터 엔트리에 적어도 부분적으로 기초하여 결정된다.
실시예들은 다음 특징들 중 하나 이상을 포함할 수 있다. 상기 복수의 메모리 셀 중 상기 적어도 하나는 상기 제1 메모리 셀이며, 상기 제1 메모리 셀에 전하는 인가하는 상기 동작은 상기 제1 메모리 셀에 부가 전하를 인가하여 상기 제1 메모리 셀에서의 전압 새그(voltage sag)를 조정하는 단계를 포함한다. 상기 제1 메모리 셀에서의 새그의 양은 기준 셀에 저장되어 있는 기준 전압을 검출하여 결정된다. 상기 기준 셀은 소정의 해당 전압 레벨과 관련이 있으며, 상기 새그의 양은 상기 소전 전압 레벨과 상기 기준 셀에 저장되어 있는 검출 전압 레벨을 비교하여 결정된다. 상기 새그의 양은 복수의 기준 셀에 저장되어 있는 전압 레벨을 검출하여 결정된다. 상기 제1 메모리 셀에 인가되는 부가 전하의 양은 정정 함수(correction function)에 기초하여 결정된다.
호스트 장치로부터 신호를 수신하여 관리 동작을 개시하며, 상기 수신된 신호에 응답하여 상기 데이터값이 나타내는 목표 전압으로 상기 복수의 메모리 셀 중 적어도 하나에 전하가 인가된다. 상기 호스트 장치로부터의 상기 신호는 전원 조건(power supply condition)을 나타낸다. 상기 호스트 장치로부터의 상기 신호는 상기 호스트 장치가 AC 전원을 공급받는지를 나타낸다. 상기 호스트 장치로부터의 상기 신호는 상기 호스트 장치의 배터리가 소정 충전 레벨로 충전되었는지를 나타낸다. 상기 호스트 장치로부터의 상기 신호는 예정된(scheduled) 관리 동작을 나타낸다.
플래시 메모리 처리기(processor)로부터 신호를 수신하여 관리 동작을 개시하며, 상기 수신된 신호에 응답하여 상기 데이터값이 나타내는 목표 전압으로 상기 복수의 메모리 셀 중 적어도 하나에 전하를 인가한다. 상기 플래시 메모리 처리기로부터의 상기 신호는 상기 플래시 메모리 처리기가 관리 동작을 수행할 만큼 충분한 대역폭을 갖는지를 나타낸다. 상기 플래시 메모리 처리기로부터의 상기 신호는 상기 플래시 메모리 처리기가 아이들 상태(idle)인지를 나타낸다.
상기 제1 메모리 셀에 대응되는 상기 레졸루션 레지스터 엔트리는 제1 가능 데이터값의 개수에 해당하는 제1 레졸루션을 나타낸다. 제1 가능 데이터값의 개수에 해당하는 제2 레졸루션으로 기입하는 신호를 수신하고, 하나 이상의 메모리 셀에 대응되는 레졸루션 레지스터 엔트리를 업데이트하여 상기 제2 레졸루션을 나타낸다. 상기 목표 전압은 상기 제2 레졸루션에 기초한다. 상기 제1 가능 데이터값의 개수는 상기 제2 가능 데이터값의 개수보다 많으며, 상기 하나 이상의 메모리 셀은 상기 복수의 메모리 셀로부터 선택되는 하나 이상의 메모리 셀을 포함한다. 이와는 달리, 상기 제1 가능 데이터값의 개수는 상기 제2 가능 데이터값의 개수와 동일하며, 상기 하나 이상의 메모리 셀은 상기 제1 메모리 셀과 상이한 메모리 셀을 포함한다. 상기 제2 가능 데이터값의 개수는 상기 제1 가능 데이터값의 개수를 초과한다. 상기 제1 가능 데이터값의 개수는 4 비트를 넘지 않는데, 예를 들어, 상기 제1 가능 데이터값의 개수는 2 비트 또는 1 비트이다. 상기 제2 가능 데이터값의 개수는 적어도 4 비트이며, 예를 들어, 상기 제2 가능 데이터값의 개수는 적어도 8 비트이다. 상기 제1 레졸루션으로 상기 제1 메모리 셀에 저장되어 있는 상기 데이터값은 호스트 장치로부터 수신한 데이터를 상기 플래시 메모리 장치에 기입하는 기입 동작의 결과이다.
호스트 장치로부터 신호를 수신하여 호스트 장치로부터 수신한 데이터를 상기 플래시 메모리 장치에 기입한다. 상기 호스트 장치로부터 수신한 데이터값을 제1 가능 데이터값의 개수에 해당하는 제1 레졸루션으로 상기 제1 메모리 셀에 기입하고, 상기 제1 메모리 셀에 대응되는 상기 레졸루션 레지스터에 상기 제1 레졸루션을 기록한다. 제2 가능 데이터값의 개수에 해당하는 제2 레졸루션으로 기입하는 신호를 수신하고, 상기 제2 가능 데이터값의 개수는 상기 제1 가능 데이터값의 개수를 초과한다. 상기 하나 이상의 메모리 셀에 대응되는 레졸루션 레지스터를 업데이트하여 상기 제2 레졸루션을 나타내고, 상기 목표 전압은 상기 제2 레졸루션에 기초한다. 상기 호스트 장치의 전원 조건을 나타내는 신호를 상기 호스트 장치로부터 수신한다.
상기 제1 메모리 셀에 대응되는 상기 레졸루션 레지스터 엔트리는 제1 가능 데이터값의 개수에 해당하는 제1 레졸루션을 나타낸다. 상기 제1 메모리 셀과 관련되어 있는 상기 레졸루션 레지스터 엔트리를 업데이트하여 제2 가능 데이터값의 개수에 해당하는 제2 레졸루션을 나타내고, 상기 가능 데이터값의 개수는 상기 제2 가능 데이터값의 개수보다 많다. 상기 제2 레졸루션으로 제2 데이터값을 상기 제1 메모리 셀에 기입한다. 상기 제1 메모리 셀과 관련된 상기 레졸루션 레지스터 엔트리를 업데이트하고 상기 제2 레졸루션으로 상기 제1 메모리 셀에 기입하는 단계는 상기 제1 메모리 셀을 포함하는 메모리 셀의 페이지와 관련된 에러 조건(error condition)에 의하여 트리거된다. 상기 메모리 셀의 페이지는 다운그레이드된 메모리 셀의 제2 페이지와 쌍을 이룬다. 상기 메모리 셀의 페이지 쌍을 상기 제1 레졸루션에서의 메모리 셀의 단일 페이지로 취급하도록 논리 어드레싱 소프트웨어 코드(logical addressing software code)를 업데이트한다.
다른 일반적인 태양에 있어서, 관리 동작의 수행 여부를 결정한다. 관리 동작이 수행되어야 한다는 결정에 따라 메모리 셀의 페이지와 관련된 에러 정보를 확인하고, 상기 에러 정보가 에러 기준을 충족하는지를 결정한다. 제1 레졸루션에서 제2 레졸루션으로 상기 메모리 셀의 페이지에 대응되는 하나 이상의 레졸루션 레지스터를 조정한다. 상기 제1 및 제2 레졸루션은 각각이 복수의 전압 범위를 정하며, 각각의 전압 범위는 가능한 데이터값에 해당한다. 상기 제1 레졸루션은 상기 제2 레졸루션보다 큰 전압 범위를 갖는다.
실시예들은 다음 특징들 중 하나 이상을 포함할 수 있다. 상기 관리 동작의 수행 여부의 결정은 호스트 장치가 소정 조건을 충족하는 전원을 갖는지를 결정하는 것에 관한 것으로서, 예를 들어, 상기 호스트 장치가 AC 전원을 수신하거나 상기 호스트 장치가 소정 충전 레벨로 충전된 배터리를 갖는 것이다. 상기 관리 동작의 수행 여부의 결정은 처리기가 소정 임계값을 초과하는 미사용 대역폭을 갖는지를 결정하는 것에 관한 것이다.
다른 일반적인 태양에 있어서, 저장된 데이터값에서의 새그의 조정은 복수의 메모리 셀에 전하를 인가하여 이루어질 수 있다. 상기 각 메모리 셀은 데이터값에 해당하는 목표 전압으로 충전된다. 상기 메모리 셀은 소정 전압으로 충전되어 있는 기준 셀을 포함한다. 상기 기준 셀에서의 전압 레벨을 검출하고, 메모리 셀의 그룹으로부터 전압 레벨을 검출한다. 상기 기준 셀에서의 상기 검출된 전압 레벨과 상기 소정 전압과의 차에 기초하여 상기 복수의 메모리 셀에 부가 전하를 인가한다.
실시예들은 다음 특징들 중 하나 이상을 포함할 수 있다. 제2 기준 셀에서의 전압 레벨을 검출한다. 상기 복수의 메모리 셀에 부가 전하를 인가하는 단계는 상기 제2 기준 셀에서의 상기 검출된 전압 레벨과 소정의 제2 기준 셀 전압에 추가로 기초한다. 상기 메모리 셀은 NAND 플래시 메모리 셀 또는 NOR 플래시 메모리 셀이다. 상기 각각의 데이터값은 4 비트 이상을 포함한다.
또 다른 일반적인 태양에 있어서, 데이터를 복수의 메모리 셀에 저장한다. 각각의 메모리 셀은 기입 동작 동안에 특정 비트 수를 갖는 데이터값에 해당하는 전압 레벨로 전하를 수신한다. 상기 복수의 메모리 셀과 관련된 레졸루션 레지스터는 하나 이상의 해당 메모리 셀에 저장되어 있는 비트 수를 각각 나타내는 엔트리를 포함한다. 호스트 인터페이스는 호스트 장치에 대한 전원 조건을 나타내는 신호를 상기 호스트 장치로부터 수신한다. 처리기는 상기 복수의 메모리 셀에 데이터값을 재기입하고 소정 전원 조건을 나타내는 신호에 응답하여 제1 비트 수를 나타낸 것으로부터 제2 비트 수를 나타내는 것으로 상기 레졸루션 레지스터를 조정한다.
실시예들은 다음 특징들 중 하나 이상을 포함할 수 있다. 논리 어드레싱 소프트웨어 코드는 상기 호스트 장치로부터 수신한 논리 어드레스를 데이터 액세스에 사용되도록 물리 어드레스로 변환한다. 상기 호스트 인터페이스는 추가로 호스트 장치로부터 명령을 수신하고 상기 호스트 장치와 데이터를 교환한다.
다른 일반적인 태양에 있어서, 관리 동작의 수행 여부를 결정한다. 복수의 플래시 메모리 셀과 관련된 관리 로그(maintenance log)를 판독한다. 상기 관리 로그에 기록되어 있는 관리 활동을 수행한다. 상기 관리 활동은
저 레졸루션으로 처음에 저장되어 있는 데이터값을 고 레졸루션으로 재기입하는 단계; 소정 에러 조건과 관련된 메모리 셀의 그룹에 대한 레졸루션을 감소시키는 단계; 소정 에러 임계값을 초과하는 데이터값을 상기 최초 데이터값과 동일한 레졸루션으로 재기입하는 단계; 액세스 빈도가 최대인 데이터와 최소인 데이터를 맞교환하는 단계; 및 메모리 셀에 부가 전하를 인가하여 데이터값을 리프레시함으로써 전압 새그를 정정하는 단계를 포함할 수 있다.
실시예들은 다음의 특징들 중 하나 이상을 포함할 수 있다. 상기 관리 동작의 수행 여부의 결정은 호스트 장치가 소정 조건을 충족하는 전원을 갖는지를 결정하는 것으로서, 예를 들어, 상기 호스트 장치가 AC 전원을 수신하거나 상기 호스트 장치가 소정 충전 레벨로 충전된 배터리를 갖는 것이다. 상기 관리 동작의 수행 여부의 결정은 내부의 처리기가 소정 임계값을 초과하는 미사용 대역폭을 갖는지를 결정하는 것에 관한 것이다. 상기 하나의 관리 활동 동안에 상이한 물리 메모리 셀에 재기입되는 데이터값에 대한 논리 어드레싱 소프트웨어 코드를 업데이트한다.
일부 실시예는 하나 이상의 이점을 제공할 수 있다. 예를 들어, 일부 실시예는 고성능 데이터 저장 기능을 제공할 수 있다. 저장 밀도 및/또는 용량을 증대시킬 수 있다. 일부 예는 신뢰도를 개선하고/하거나 데이터 에러율을 감소시킬 수 있다. 여러 실시예는 집적도의 증가, 소형화, 전자파 감소 및/또는 노이즈 마진(noise margin)을 개선시킬 수 있다. 일부 실시예는 논리 및/또는 프로그래밍/소거 회로로의 전압 공급과 같은 보조 시스템에서 있어서 저비용의 시스템을 실현할 수 있다.
본 발명의 하나 이상의 실시예에 대하여 첨부 도면과 이하의 기재에서 상세히 설명한다. 본 발명의 다른 특징은 기재와 도면, 그리고 청구범위로부터 명백해질 것이다.
도 1은 NAND 플래시 메모리 다이 및 플래시 디스크 제어기를 포함하는 멀티 칩 패키지의 구조의 한 예를 나타낸다.
도 2a 및 도 2b는 셀 전압과 메모리 셀에 저장된 디지털값 사이의 매핑을 전체적으로 나타낸다.
도 3a 및 도 3b는 멀티 레벨 셀 플래시 메모리로부터 데이터의 페이지를 판독하는 과정의 한 예를 나타내는 흐름도이다.
도 4는 플래시 메모리로부터 데이터의 페이지를 판독하는 과정의 한 예를 나타내는 흐름도이다.
도 6a 내지 도 6c는 대체 값 명령을 실행하는 동작의 예를 전체적으로 나타낸다.
도 7a 및 도 7b는 데이터를 플래시 메모리 페이지에 기입하는 과정의 한 예를 나타내는 흐름도이다.
도 8a 및 도 8b는 메모리 페이지의 셀 레졸루션을 조절하는 과정의 예들을 나타내는 흐름도이다.
도 9는 관리 과정의 한 예를 나타내는 흐름도이다.
도 10은 플래시 디스크 제어기에 논리적 어드레싱을 하는 과정의 한 예를 나타내는 흐름도이다.
도 11은 NAND 플래시 메모리 다이의 외부에 위치한 전하 펌프와 아날로그 디지털 컨버터를 포함하는 시스템의 한 예를 나타낸다.
도 12는 NAND 플래시 메모리 다이에서 전원이 분리된 입력을 포함하는 시스템의 한 예를 나타낸다.
여러 도면에서 유사한 기호는 유사한 구성요소를 나타낸다.
여러 실시예(various implementation)는 딥 멀티 레벨 셀(deep multi-level cell, MLC)에 정보를 저장할 수 있는 플래시 메모리에 관한 것이다.  딥 멀티 레벨 셀은 적어도 수 비트의 데이터를 셀 전압에 따라 인코딩할 수 있다.  일부 실시예는 딥 MLC 플래시 메모리를 포함하는 시스템을 구현하는 구조에 관한 것이다.  일부 실시예는 딥 MLC 플래시 메모리로 데이터 저장 동작을 행하는 기술에 관한 것이다.
도 1은 호스트 장치(도시하지 않음)가 데이터를 저장할 수 있게 하는 멀티 칩 패키지(multi-chip package, MCP)(100)의 한 예를 나타낸다.  MCP(100)는 데이터를 저장하는 NAND 플래시 메모리 다이(103)와, 호스트로부터의 판독 및/또는 기입 명령에 응답하여 플래시 메모리에 액세스하게 하는 플래시 디스크 제어기(flash disk controller, FDC)(106)를 포함한다.  일부 실시예에서, NAND 플래시 메모리 다이(103)는 딥 MLC에 데이터를 저장한다.  예를 들어, 플래시 메모리 다이(103)의 셀은 3, 4, 5, 6, 7, 8, 9, 10 또는 그 이상의 비트 정보를 유지할 수 있다.  MCP(100)는 예를 들어, 디지털 카메라, 기타 화상 저장 장치, 휴대용 오디오 장치, PDA(personal digital assistants) 및 디지털 비디오 레코더와 같은 다양한 휴대용 장치가 데이터를 저장할 수 있게 한다.  일부 실시예는 다른 애플리케이션에 또한 사용될 수 있는데, 그 예로서 데스크탑 컴퓨터, 서버, 무선 라우터 또는 내장 애플리케이션(예를 들어, 자동차)이 있으며, 특히 신속한 데이터 액세스가 바람직한 곳에 사용될 수 있다.  일반적으로, 여기서 기술하는 예들에 따른 장치 및 기술은 플래시 메모리 밀도를 증가시키고/시키거나 고성능 및/또는 신뢰성 있는 비휘발성 데이터 저장 동작을 실현시키도록 구현될 수 있다.
예시적인 예로서, MCP(100)는 플래시 메모리 내의 셀 그룹(예컨대, 페이지 또는 블록)의 각 셀에 1 바이트(즉, 8비트)의 정보를 저장함으로써 데이터 파일을 저장할 수 있다.  일부 다른 예는 16비트, 32비트, 64비트 또는 그 이상의 레졸루션(resolution)를 가질 수 있다.  일부 실시예에서, 레졸루션은 셀의 게이트 상에서 단일 또는 복수의 전자 검출에 의하여 정해질 수 있다.  다른 실시예에서, 실제 정보 비트 수는 개별 플래시 메모리 셀이 충전되는 전압으로 인코딩될 수 있다.
FDC(106)은 호스트 인터페이스(109), 처리기(112) 및 플래시 인터페이스(115)를 포함한다.  FDC(106)는 호스트 인터페이스(109)를 통하여, 데스크탑 컴퓨터의 처리기, 서버, 또는 휴대용 컴퓨팅 장치와 같은 호스트 장치로부터 명령 및/또는 데이터(예컨대, 소프트웨어 코드 업데이트 또는 사용자 데이터)를 수신하고/하거나 데이터를 송신한다.  호스트 장치와의 통신은 예를 들어, ATA(Advanced Technology Attachment), SATA(Serial ATA), Block Abstracted NAND, SD(Secure Digital) 또는 MMC(Multi-Media Card)와 같은 커스텀(custom) 또는 표준 프로토콜을 이용할 수 있다.  일부 실시예에서, MCP(100)는 호스트 장치와 동일한 제품의 일부일 수 있다.  다른 실시예에서, 호스트 장치는 적어도 하나의 다른 처리기 기반 장치로의 통신 링크[예컨대, USB, 파이어와이어(Firewire), 블루투스(Bluetooth)]를 통하여 MCP(100)와 통신할 수 있다.  예를 들어, 호스트는 유선, 무선 또는 광섬유 링크 또는 이들의 조합을 포함하는 적어도 하나의 네트워크를 통하여 제어 메시지를 전송하고 데이터 메시지를 송수신하여 원격으로 MCP(100)에 액세스할 수 있다.  이러한 네트워크는 패킷 기반 통신을 지원할 수 있으며 인터넷과 같은 로컬 네트워크(local network)나 광대역 네트워크를 포함할 수 있다.
호스트 장치 상의 처리기는 FDC(106)에 의하여 처리되어 플래시 메모리의 물리 주소를 식별하는 논리 어드레싱 방식을 이용하여 NAND 플래시 메모리 다이(103)에 데이터를 판독 및/또는 기입할 수 있다.  일부 실시예에서, 호스트 인터페이스(109)는 ATA/IDE 인터페이스를 이용하여 호스트 장치와 통신하도록 구성될 수 있다.  처리기(112)는 수신된 명령을 처리하고 플래시 인터페이스(115)를 이용하여 NAND 플래시 메모리 다이(103)에 액세스할 수 있다.  FDC(106)는 웨어 관리(wear management), 블록 관리, 에러 정정 및 논리 어드레싱 관리 기능과 같은 기능을 제공하여, NAND 플래시 메모리의 성능을 개선시킬 수 있는데, 예를 들어, 신뢰성 제고, 판독 및 기입 시간 감소, 전력 효율 개선, 칩 볼륨당 용량 증가 등이다.  여기에 기재된 어떤 기술 및 장치는 NAND 및/또는 NOR 플래시 메모리, 다른 유형의 전기 소거 가능 또는 전기 기록 가능 메모리, 또는 데이터 액세스 레졸루션이 페이지 또는 블록인 메모리에 적용 가능하다. 
도 1에는 하나의 NAND 플래시 메모리 다이(103)만을 도시하였지만, MCP(100)는 하나 이상의 NAND 플래시 메모리 다이(103)를 포함할 수 있다.  일부 실시예는 NAND 플래시, NOR 플래시 또는 EEPROM을 포함하는 비휘발성 메모리의 임의의 조합을 포함할 수 있다.  일부 예시적인 예에서, MCP(100)는 두 개, 세 개, 네 개 또는 적어도 여덟 개의 NAND 플래시 메모리 다이(103)를 포함할 수 있다.  예를 들어, MCP(100)는 네 개의 NAN 플래시 메모리 다이(103)로[예를 들어, 적층하여(in a stack)] 패키징되는 다이 상에 플래시 디스크 제어기(106)를 포함할 수 있다.
일부 실시예에서, 플래시 디스크 제어기(106) 및 플래시 메모리 다이(103)는 단일 다이 상에 구현될 수 있다.  다른 실시예에서, 단일 다이 또는 MCP(100)의 외부에 플래시 디스크 제어기(106)의 구성요소 중 하나 이상을 부분적으로 또는 전체적으로 구현할 수 있다. 예를 들어, SDRMA(synchronous dynamic random access memory)(151) 및 NVM(non-volatile memory)(154)의 일부 또는 전부는 MCP(100)의 외부에 구현될 수 있다. 일부 실시예에서, 플래시 디스크 제어기(106)의 일부 또는 전부는 플래시 메모리 다이(103)와 별개로 패키징될 수 있다. 예시적인 예에서, NVM(154), SDRAM(151), 호스트 인터페이스(109) 및 적어도 일부의 처리기(112)는 MCP(100)의 외부에 각각 구현될 수 있다. 다른 실시예에서, 플래시 인터페이스(115)와 플래시 메모리 다이(103) 사이의 아날로그 및/또는 디지털 신호는 외부에서 집적 패키지로 라우팅될 수 있다.
원격 또는 분산 전송 구조[예를 들어, 차폐 및/또는 제어 임피던스 경로(shielded and/or controlled impedance signal paths)]를 구현하여 신호를 적어도 하나의 플래시 메모리 다이(103)로 송신 및/또는 수신할 수 있다. 일부 실시예에서, 부가적인 비휘발성 메모리 패키지를 설치함으로써 메모리를 확장할 수 있다. 버퍼링 및/또는 라우팅 장치는 그 수가 가변적인 여러 메모리 다이(103)로 아날로그 및/또는 디지털 신호의 분산을 지원하는데 이용될 수 있다. 또한, 처리기(112)의 기능은 MCP(100)의 외부에서 수행될 수 있다. 여러 예들에서, 처리기(112)는 MCP(100)와 동일 기판(예컨대, 인쇄 회로 기판)이나 동일 제품 상의 회로에서 전체적으로 또는 부분적으로 구현될 수 있다. 처리기(112)는 통신 링크(예를 들어, 유선, 무선, 광섬유 또는 이들 중 임의의 조합)를 통하여 MCP(100)와 통신하여 다른 컴퓨팅 장치로부터 구현될 수 있다.
MCP(100)는 적어도 100 기가바이트 이상과 같이 실제 메모리 크기를 가질 수 있다. 예시적인 예에서, NAND 플래시 메모리 다이(103)는 복수의 플래시 메모리 블록(118)를 포함하여 구성될 수 있다. 일부 실시예에서, NAND 플래시 메모리 다이(103)는 수백 또는 수천 개의 플래시 메모리 블록(118)을 포함할 수 있다. 각 플래시 메모리 블록(118)은 복수의 플래시 메모리 페이지(121)를 포함한다. 도시한 바와 같이, 각 플래시 메모리 페이지(121)는 데이터(124)를 저장하는 셀과 그 셀과 연관된 에러 정정 코드(error correction code, ECC)(127)를 저장하는 셀을 포함한다. 데이터 셀(124)은 플래시 디스크 제어기(106)로부터 수신한 정보를 저장한다. ECC 셀(127)은 데이터 셀(124)에 저장된 데이터와 연관된 부가적인 완전성 메타 데이터(integrity meta-data)(예를 들어, ECC 데이터)를 저장한다. 여러 실시예에서, ECC 데이터는 플래시 디스크 제어기(106)가 데이터 내의 에러를 검출 및/또는 정정하게 한다.
예시적인 예에서, 각 플래시 메모리 블록(118)은 하나 이상의 기준 셀(130a, 130b, 130c)을 또한 포함한다. 일부 실시예에서, FDC(106)는 기준 셀(130a, 130b, 130c)의 전압을 모니터링하여 셀(124, 125)에서의 전압 새그(sag) 또는 드리프트(drift)의 정도를 추정한다. 각 블록(118)에서, 기준 셀(130a)은 블록(118)의 선두에, 기준 셀(130b)은 블록(118)의 후미에 위치할 수 있다. 각각의 플래시 메모리 페이지(121)는 기준 셀(130c)을 포함할 수 있다. 일부 실시예에서, 다소의 기준 셀을 페이지, 블록 및 메모리(103)의 다이에 걸쳐서 임의의 패턴으로 분산시켜 셀(124, 127)의 유사 성능을 결정할 수 있다.
일부 실시예에서, 기준 셀은 관심 있는 어떤 데이터 셀의 사용 레벨을 나타내는 판독/기입 사용 레벨을 경험하는 셀 내에 또는 그 주변에 위치할 수 있다. 보상 방법은 비기준 셀(non-reference cell)과 다른 비기준 셀의 비교에 기초할 수 있다. 예를 들어, 동일 페이지 또는 블록 내의 여러 셀의 전압이 상대적으로 낮은 경우, 판독 에러가 실질적으로 감소하도록 측정된 값에 따라 임계값(예를 들어, 한 셀 내의 상이한 값 레벨 사이의 전압 임계값)을 하향 조정하는 것을 포함할 수 있다. 다른 예로는 기준 셀에서 검출된 전압에 기초하여 정정 함수를 결정하는 것으로서, 정정 함수는 검출된 전압을 메모리 셀이 나타내는 디지털 데이터값으로 변환하기 전에 그 검출 전압을 조정한다.
일부 실시예에서, 메모리 셀은 복수의 셀에 부가적인 전하를 인가하여 검출된 전압 새그를 정정하도록 리프레시될 수 있다. 예를 들어, 하나 이상의 기준 셀의 전압 레벨이 일정량의 임계값 이상의 전압 드리프트를 나타내는 경우, 그 기준 셀에 연관된 페이지 또는 블록의 메모리 셀은 부가 전하를 인가하여 조정하거나 저장된 데이터에 따라 적절한 전압 레벨로 셀을 재저장하여 재기입할 수 있다. 이러한 조정은 기준 셀에서 전압 드리프트를 검출하는 즉시 수행되거나 후속 관리 동작의 일부로 수행될 수 있다. 일부 실시예에서, 부가 전하를 인가하거나, 검출된 기준 셀 전압과 목표 기준 셀 전압 사이의 차에 기초하여 메모리 셀을 재기입할 수 있으며, 이는 기준 셀과 해당 데이터 셀 모두에 대하여 전압 드리프트 또는 새그의 근사량을 나타내는 것으로 가정한다.
다른 실시예에서, 부가 전하를 인가하거나 메모리 셀을 재기입하는 것은 임계값에 대하여 필요한 조정을 행하고(예를 들어, 기준 셀 전압에 기초한 정정 함수를 이용하고/하거나 여기서 설명하는 다른 기술을 이용하여) 저장된 데이터를 얻도록 검출 데이터에 대하여 에러 정정을 행하여 모든 셀을 판독함으로써 행해질 수 있다. 그 후, 데이터를 이용하여 적절한 전압 레벨을 결정하거나 식별된 전압 드리프트 또는 새그를 정정하기 위하여 여러 메모리 셀에 필요한 부가 전하가 얼마인지를 결정할 수 있다. 일부 실시예에서, 인가되는 부가 전하의 양은 검출 전압을 디지털 데이터값으로 변환하기 전에 검출 전압을 조정하는데 이용되는 정정 함수와 동일하거나 유사한 정정 함수에 기초하여 결정될 수 있다.
일부 실시예에서, 플래시 메모리의 셀은 적절하게 재배열될 수 있다. 예를 들어, 판독 또는 기입 사용 정보, 온도, 제품 노화(age), 공급 전압(예를 들어, 저전력, AC용 전원) 및/또는 검출된 에러 레벨에 기초하여 필요에 따라 기준 셀을 부가, 제거, 재위치 및/또는 재분배할 수 있다. 메모리의 어느 블록 또는 페이지에서의 에러가 적은 경우, 적은 수의 셀을 ECC 셀(127) 및/또는 기준 셀(130)로 할당할 수 있고, 이는 데이터 셀(124)이 더 많도록 한다. 셀을 기준, 데이터 및 ECC 함수로 상대적으로 할당하는 것과 함께 개별 셀의 레졸루션은 현재의 동작 조건 및/또는 소정 조건에 따라 동적으로 조정될 수 있다. 예를 들어, 레졸루션은 에러율에 기초하여 조정될 수 있고, 페이지당 ECC 셀의 개수는 에러율과 판독 및 기입 내역 정보에 기초할 수 있고, 기준 셀의 위치 및 분배는 에러율과 제품 노화에 기초할 수 있다. 이는 제어기(106)와 플래시 메모리 다이가 여러 기준에 따라 동적으로 조정될 수 있음을 나타내는 예일 뿐이다. 다른 기준은 데이터의 임계성(criticality), 전원의 이용 가능성(예컨대, AC 전원, 배터리 전원), 메모리 크기 최대화시키는 상대적 중요도에 대한 소정 기준, 속도 성능 및 데이터 완전성을 포함할 수 있다. 예를 들어, 실질적으로 많은 소프트웨어 정정을 요하는 고레졸루션 셀을 관리하는 것은 결과적으로 더 긴 액세스 타임을 요할 수 있다. 기준은 응용의 필요에 따라 사용자, 제품 제조자 또는 소프트웨어에 의하여 맞춰질 수 있다.
일부 실시예에서, 실질적으로 많은 소프트웨어 정정을 요하는 데이터는 관리 동작에서 재기입되어 시간의 흐름과 관련된 전하에서의 변화를 정정하거나 열화되기 시작한 메모리 셀의 페이지를 정정할 수 있다. 통상적으로, 하나 이상의 메모리 셀의 레졸루션을 변경하는 경우, 데이터는 메모리 셀의 상이한 페이지에 기입될 수 있고 동일한 또는 상이한 레졸루션으로 기입될 수 있다. 일부 실시예에서, 메모리 셀의 원 페이지(original page)가 낮은 레졸루션으로 다운그레이드(downgrade)되고, 이는 메모리 셀이 노후화되고 열화될 때 종종 필요하다. 데이터의 재기입이 전압 드리프트 또는 새그의 확인 결과로 행해지는 경우, 데이터를 메모리 셀의 동일하거나 상이한 페이지 또는 블록에 기입할 수 있다.
플래시 인터페이스(115)는 플래시 메모리 다이(103)에 직접 제어, 핸드셰이킹(handshaking) 및 데이터 전송 액세스를 제공한다. 플래시 인터페이스(115)는 제어 인터페이스(133) 및 아날로그 인터페이스(136)를 포함한다. 명령과 메모리 주소는 디지털 신호 또는 아날로그 신호로 전송될 수 있다. 플래시 디스크 제어기(106)는 플래시 메모리 다이(103)로부터 아날로그 신호를 수신할 수도 있다. 플래시 디스크 제어기(106)는 플래시 메모리 다이(103) 상의 플래시 메모리 로직과 인터페이스하기 위한 처리기를 포함할 수 있으며, 플래시 다이 상의 플래시 메모리 로직과 인터페이스하는 이러한 처리기는 플래시 인터페이스(115)에 통합될 수 있다.
플래시 메모리 다이(103)는 판독 명령에 응답하여 개별 데이터 셀(124)에 저장된 데이터를 나타내는 셀 전압을 출력할 수 있다. 플래시 디스크 제어기(106)는 플래시 메모리 다이(103) 상의 각 메모리 셀로부터 출력되는 아날로그 전압 신호를 수신할 수 있다. 아날로그 셀 전압 또는 아날로그 전압 신호는 FDC(106)의 아날로그 인터페이스(136)로 전송될 수 있다. 일부 실시예에서, 플래시 인터페이스(115)는 또한 플래시 메모리 다이(103)와 통신하는 제어 인터페이스(133)와 아날로그 인터페이스(136)와 별개인 데이터 버스를 포함할 수 있다.
아날로그 인터페이스(136)는 아날로그 선단(front end, FE)(139)과 아날로그 디지털 컨버터(ADC)(142)를 포함할 수 있다. 아날로그 FE(139)는 아날로그 신호를 수신하는 경우 필요에 따라, 예컨대, 오프셋, 정정 레벨 시프트(shift), 이득, 버퍼링, 필터링 또는 제어 임피던스를 제공하여 영향을 최소화하기 위한 신호를 조절할 수 있다. 아날로그 FE(139)는 고 임피던스 입력을 제공하여 플래시 메모리 셀의 부담을 최소화하고, 저 임피던스 출력을 제공하여 ADC(142)의 입력에 연결되는 샘플 홀드 회로 또는 트랙 홀드 회로(track and hold circuit)를 구동시킨다. 일부 실시예에서, 아날로그 FE(139)는 하나 이상의 플래시 메모리 다이로부터의 여러 아날로그 출력 라인 중 하나를 선택하는 아날로그 멀티플렉서(도시하지 않음)를 더 포함할 수 있다.
ADC(142)는 아날로그 값을 처리하여 데이터 셀(124, 127)의 전압을 나타내는 해당 디지털 데이터값을 결정한다. ADC(142)는 제어된 아날로그 신호를 수신하여 그 아날로그 전압을 디지털 표현으로 변환한다. ADC(142)(또는 ADC 내의 처리기)는 그 디지털 표현을 예를 들어, 매핑 함수(mapping function)에 기초하여 메모리 셀에 저장된 전압으로 표현되는 디지털 데이터값으로 변환한다. 처리기(112)는 디지털 표현을 디지털 데이터값으로 변환하는 데 또한 이용될 수 있다. 아날로그 전압의 디지털 표현은 ADC(142) 또는 처리기가, 각각이 특정 디지털 데이터값을 나타내는 복수의 아날로그 전압 레벨을 구별할 수 있는 충분한 정보를 포함할 수 있다. 디지털 표현은 디지털 데이터값보다 더 많은 데이터 비트로 이루어질 수 있다. 일부 실시예에서, ADC(142)는 플래시 디스크 제어기(106)에 포함되지 않고 플래시 메모리 다이(103)에 통합될 수 있다. 이 경우, 플래시 인터페이스(115)는 플래시 메모리 다이(103)로부터 셀 전압의 디지털 표현이나 디지털 데이터값을 수신할 수 있다.
매핑 함수(145)의 한 예를 도시한다. 매핑 함수에 기초하여, ADC(142) 또는 처리기(112)는 아날로그 셀 전압을 디지털 표현 및/또는 디지털 데이터값으로 변환할 수 있다. 예를 들어, 아날로그 전압을 디지털 표현 및/또는 디지털 데이터값으로 매핑시키는데 이용될 수 있는 일련의 아날로그 전압 임계값일 수 있다. 마찬가지로, 매핑 함수(145)는 아날로그 전압의 디지털 표현을 디지털 데이터값으로 변환시키는 것을 나타낼 수 있다. 예를 들어, 아날로그 전압의 하나 이상의 디지털 표현은 특정 디지털 데이터값으로 매핑될 수 있으며, 각 디지털 데이터값은 하나 이상의 해당 디지털 표현의 구별 세트를 구비한다.
일부 실시예에서, ADC(142) 또는 처리기(112)는 매핑 함수(145)를 변경시키는 파라미터를 수신할 수 있다. 예를 들어, FDC(106)는 현재의 온도, 공급 전압, 페이지 데이터의 판독 및 기입 횟수 및/또는 기준 셀(130a, 130b 및/또는 130c)의 전압에 기초하여 매핑 함수(145)를 변경할 수 있다. 일부 실시예에서, 매핑 함수의 변경은 이웃하는 데이터 셀(124), ECC 셀(127) 및/또는 다른 셀의 특성에 기초할 수 있다. 셀 전압과 디지털 데이터값의 매핑(145)은 도 2a 및 도 2b를 참고하여 좀 더 상세히 설명한다. 일부 실시예에서, ADC(142) 또는 처리기는 수신된 아날로그 신호 또는 아날로그 신호의 디지털 표현에 대한 대체 값(alternative value)을 검색하는 대체 값 명령에 응답하여 또한 동작할 수 있다. 대체 값 명령의 예는 도 6a 내지 도 6c를 참고하여 좀 더 상세히 설명한다.
플래시 디스크 제어기(106)는 또한 ECC 엔진(148)을 포함한다. 여러 실시예에서, ECC 엔진(148)은 ECC 셀(127)을 이용하여 하드웨어 및/또는 소프트웨어 에러 검사 및 정정을 행할 수 있다. 일부 실시예에서, ECC 엔진(148)은 상태 머신 기반 데이터 복원을 제공할 수 있다. 예를 들어, ECC 엔진(148)은 데이터 페이지에서 에러 비트의 개수를 검출할 수 있다. 이때, ECC 엔진(148)은 어느 ECC 알고리즘을 이용하지를 결정할 수 있다. 한 예로, ECC 엔진(148)은 예를 들어, 하밍(Hamming) 또는 리드 솔로몬 코드(Reed-Solomon code)를 이용하는 하드웨어 ECC 알고리즘을 먼저 시도하도록 구성될 수 있다. 데이터 페이지의 회복시 하드웨어 ECC 알고리즘이 실패한 경우, 소프트웨어 ECC 정정을 시도할 수 있다. 하드웨어 ECC, 소프트웨어 ECC 및 다른 기술을 결합을 이용하는 예시적인 방법은 도 5를 참고로 하여 설명한다. 일부 실시예에서, ECC 엔진(148)은 데이터 페이지 크기의 적어도 약 10% 이상까지 에러 정정을 할 수 있다. 일부 예에서, 처리기는 어느 ECC 알고리즘을 이용할지를 결정할 수 있다.
일부 실시예에서, 처리기(112)는 에러의 일정 개수 또는 비율 이상을 포함하는 데이터를 복원하는데 ECC 알고리즘을 사용하는 경우 플래시 메모리 페이지에 저장된 데이터를 재기입하거나 리프레시한다. 다른 실시예에서, 처리기(112)는 에러를 포함하는 데이터의 물리적 및/또는 논리적 위치를 관리 로그(log)에 기록한다. 처리기(112)는 이어 관리 동작 동안에 그 데이터를 재기입하거나 리프레시한다(도 9 참조). 관리 동작은 호스트 장치가 소정 전력 조건에서 동작하는 경우와 처리기(112)가 소정량의 초과 대역폭을 가지는 경우 및/또는 정해진 간격으로 수행될 수 있다.
플래시 디스크 제어기(FDC)(106)는 DRAM(dynamic random access memory)를 포함할 수 있다. 이 예의 플래시 디스크 제어기(106)는 또한 SDRAM(synchronous dynamic random access memory)(151)을 포함한다. 예를 들어, SDRAM(151)은 단일 데이터 레이트(single data rate) SDRAM 또는 이중 데이터 레이트 SDRAM일 수 있다. 일부 실시예에서, FDC(106)는 예를 들어, 호스트 장치에 대한 출력 데이터와 데이터 페이지에 대한 대체 디지털값과 같은 데이터를 일시 저장하기 위한 고속 및 고밀도 버퍼로서 SDRAM(151)을 이용할 수 있다. FDC(106)는 또한 DRAM과 같은 다른 유형의 RAM을 포함할 수 있다. 한 예로, FDC(106)는 NAND 플래시 메모리 다이(103)로부터 아날로그 데이터를 수신할 수 있다.
FDC(106)는 검출된 아날로그 전압을, 일부 경우에 하나 이상의 셀에 대한 대체 디지털 데이터값을 포함하는 디지털 데이터로 변환할 수 있다. 이어, ECC 엔진(148)은 디지털 데이터를 검사 및 정정하여, 각 플래시 메모리 페이지(121) 상의 셀에 대한 데이터값과 대체 데이터값의 복수의 상이한 조합을 검사할 수 있다. 에러 정정이 성공하면, 처리기(112)는 디지털 데이터를 SDRAM(151)의 호스트 출력 버퍼에 저장할 수 있다. 일부 실시예에서, 호스트 장치는 호스트 출력 버퍼에서 데이터를 검색할 수 있다. 이와는 달리, 플래시 디스크 제어기(106)는 호스트 출력 버퍼로부터의 데이터를 호스트 장치로 전달할 수 있다. SDRAM(151) 또는 다른 캐시 메모리는 플래시 메모리 다이(103)에 기입될 데이터를 저장하는데 추가로 사용될 수 있다.
FDC(106)는 또한 비휘발성 메모리(NVM)(154)를 포함한다. 이 예에서, NVM(154)은 웨어 관리 소프트웨어 코드(157), 블록 관리 소프트웨어 코드(160), 논리 어드레싱 소프트웨어 코드(163) 및 셀 레졸루션 레지스터(166)를 포함하고, 이들 각각은 처리기(112)에 의하여 실행되는 경우 어떤 동작을 수행하는 명령어(instruction)[또는 플래시 메모리 내의 명령어에 대한 포인터(pointer)]를 포함한다. 일부 실시예에서, NVM(154)은 NAND 플래시 메모리 다이(103)와 분리될 수 있다. 예를 들어, NVM(154)은 NOR 플래시 메모리 또는 다른 NAND 플래시 메모리일 수 있다. 다른 실시예에서, NVM(154)은 NAND 플래시 메모리 다이(103) 내의 하나 이상의 페이지일 수 있다. 다른 실시예에서, NVM(154)은 NAND 플래시 메모리 다이(103)에 저장되어 있는 데이터에 대한 포인터 또는 메모리 위치를 저장할 수 있다. 일부 실시예에서, 처리기(112)는 소프트웨어 코드(157), 블록 관리 소프트웨어 코드(160) 및 논리 어드레싱 소프트웨어 코드(163)를 실행하여 MCP(100)의 효율, 성능 및/또는 신뢰성을 개선할 수 있다.
처리기(112)는 웨어 관리 소프트웨어 코드(157)를 이용하여 MCP(100)의 페이지(121), 블록(118) 또는 다이(103)의 웨어를 관리할 수 있다. 예를 들어, 웨어 관리 소프트웨어 코드(157)는, 처리기(112)에 의하여 실행되는 경우 가장 많이 사용되는 메모리 페이지의 데이터를 덜 사용되는 메모리 페이지로 천이시키는 로드 밸런싱 동작(load balancing operation)을 포함하는 동작을 수행하는 명령어를 포함할 수 있다. 이러한 천이 동작은 논리 어드레싱 소프트웨어 코드(63)의 업데이트를 포함할 수 있다.
웨어 관리 소프트웨어 코드(457)는 관리 동작 중에 활성화될 수 있다. 일부 실시예에서, 각 판독 동작의 물리적 및/또는 논리적 주소는 관리 로그에 기록된다. 각 기입 동작도 관리 로그에 기록될 수 있다. 웨어 관리 소프트웨어 코드(157)는 메모리 셀의 페이지에 저장된 데이터를 재배할 방법을 결정하기 위한 소정의 임계값을 사용할 수 있다. 이러한 임계값은 예를 들어, 한 주 또는 한 달의 경과 기간 동안 메모리 셀의 페이지의 판독 횟수로서 100 또는 1000일 수 있다. 다른 실시예에서, 임계값은 전체 판독 횟수의 비율 또는 시간당 페이지당 평균 판독 횟수로부터의 분산에 기초할 수 있다. 관리 동작의 예를 도 9에 나타내었다.
블록 관리 소프트웨어 코드(160)는 플래시 메모리 다이(103) 내의 결함 블록(bad block)을 관리하기 위한 코드를 포함할 수 있다. 예를 들어, 블록 관리 소프트웨어 코드(160)는 플래시 메모리 블록(118)에 관한 이력 에러 정보(historical error information)를 포함할 수 있다. 일부 실시예에서, 에러 정보를 이용하여 각 플래시 메모리 페이지 내의 셀 레졸루션을 관리할 수 있다. 블록 관리 소프트웨어 코드의 예에 대하여 도 8a 및 도 8b를 참고하여 더 상세히 설명한다.
논리 어드레싱 소프트웨어 코드(163) 및/또는 셀 레졸루션 레지스터(166)와 결합이 가능한 블록 관리 소프트웨어 코드(160)를 이용하여 플래시 메모리 다이(103)에서 [셀 레졸루션 레지스터(166)에서 업데이트되는] 레졸루션이 감소한 결함 블록 또는 결함 페이지를 세트로 쌍을 만들고 그 결함 블록 또는 결함 페이지 세트가 [아마도 논리 어드레싱 소프트웨어 코드(163) 및/또는 셀 레졸루션 레지스터(166)에서 업데이트되는] 논리 어드레싱 목적으로 초기의 고레졸루션을 갖는 메모리 셀의 단일 블록 또는 단일 페이지와 동일한 것으로 취급되도록 한다. 블록 관리 소프트웨어 코드(157)는 관리 동작 동안에 활성화될 수 있다. 관리 동작은 예를 도 9에 나타낸다.
논리 어드레싱 소프트웨어 코드(163)는 호스트 명령 내의 논리 주소를 NAND 플래시 메모리 다이(103) 내의 물리 주소로 변환하는 코드를 포함할 수 있다. 일부 예에서, 논리 페이지는 NAND 플래시 메모리 다이(103) 내의 복수의 물리 메모리 페이지와 관련될 수 있다. 논리 어드레싱 소프트웨어 코드(163)는 NVM(154) 내의 주소 테이블의 변환 및 업데이트를 관리한다. 한 예에서, 논리 어드레싱 소프트웨어 코드(163)는, 페이지가 예를 들어, 10비트 레졸루션에서 8비트 레졸루션으로 다운그레이드될 때, 또는 논리 블록 주소의 상이한 물리 페이지로의 매핑이 웨어 관리의 목적으로 변경될 때, 호스트로부터의 논리 블록 주소와 물리 페이지 주소 사이의 링크를 동적으로 관리한다. 주소의 중간 형태가 예를 들어, 논리 주소와 물리 주소의 변환 과정에서 생성될 수 있다. 중간 주소 형태가 생성, 처리, 저장, 이용 및/또는 달리 조작되어 여러 비휘발성 메모리 동작을 행할 수 있다. 논리 어드레싱 소프트웨어 코드의 한 예는 도 10을 참고하여 더 상세히 설명한다.
셀 레졸루션 레지스터(166)는 각 플래시 메모리 페이지(121)에서 셀 레졸루션에 관한 정보를 저장한다. 예를 들어, NAND 플래시 메모리 다이(103)는 8 비트 MLC 플래시 메모리일 수 있다. 일부 실시예에서, 플래시 메모리 블록(118)의 일부는 여러 조건에 따라 다운그레이드 또는 업그레이드될 수 있다. 그러한 조건의 예시적인 예는 에러 성능, 온도, 전압 조건, 개별 셀의 판독 또는 기입 사이클의 횟수, 셀의 그룹, 페이지, 이웃 위치의 셀, 기준 셀, 비교되는 판독 및/또는 기입 사용 이력을 갖는 셀, 또는 장치의 노화와 같은 다른 요인을 포함한다. 이러한 조건의 일부 또는 모두에 관한 정보를 데이터 저장 장치에 저장하거나, 저장된 정보의 1 이상의 비트로부터 결정하거나 추정할 수 있다. 한 예에서, 저장된 정보는 메모리 다이(103) 내의 적어도 일부 셀에 대한 사용 레벨을 나타내는 이력 판독 및 기입 사용 데이터를 포함할 수 있다. 처리기(112)는 플래시 메모리 페이지(121)가 더 작은 메모리 크기로 여전히 이용되도록 다운그레이드된 메모리 페이지의 셀 레졸루션을 예를 들어, 4비트로 감소시켜 셀 레졸루션 레지스터(166)를 업데이트한다. 다른 실시예에서, 셀 레졸루션 레지스터(166)는 또한 각 플래시 메모리 블록(118)에 대한 셀 레졸루션을 저장할 수 있다.
일부 실시예에서, 셀 레졸루션 레지스터(166)는 호스트 장치로부터 MCP(100) 내의 메모리 셀로 데이터를 전달하기 전에 단일 비트 레졸루션 또는 낮은 비트의 레졸루션으로 하향 조정된다. 이러한 과정은 도 7b에서 더 상세히 설명한다. 데이터 전달 전에 셀 레졸루션 레지스터(166)를 하향 조정하면 각 메모리 셀에서의 충전이 정확성을 덜 요하기 때문에 데이터 전달 속도를 높일 수 있다. 전달된 데이터는 높은 레졸루션으로 메모리 셀에 순차적으로 재기입될 수 있다. 일부 실시예에서, 전달된 데이터는 관리 동작(예를 들어, 충분히 처리 자원을 이용 가능하고 다른 판독이나 기입 동작에 의하여 재기입이 방해를 받지 않는 후속 처리 동안) 중에 높은 레졸루션으로 재기입될 수 있다. 일부 실시예에서, 저 레졸루션의 셀 데이터 전달에 대한 기록이 관리 로그에 행해진다.
일부 실시예에서, 논리 어드레싱 소프트웨어 코드(163), 레졸루션 레지스터(166) 및/또는 블록 관리 소프트웨어 코드(160)는 다운그레이드된 메모리 페이지(또는 다운그레이드된 메모리 블록)을 함께 그룹화하고 그 그룹을 논리 어드레싱 목적으로 단일의 다운그레이드 되지 않은(non-down-graded) 메모리 페이지(또는 블록)로 취급한다. 다운그레이드된 메모리 페이지의 그룹의 메모리 페이지는 인접한 메모리 페이지일 필요는 없다. 다운그레이드된 메모리 페이지의 그룹은 상이한 블록과, 심지어 상이한 메모리 다이로부터의 메모리 페이지를 포함할 수 있다. 일부 실시예에서, 다운그레이드된 페이지 또는 블록 내의 각 다운그레이드된 메모리 페이지 또는 블록은 페이지 또는 블록에 관련된 에러 조건에 따라 다운그레이드된다.
도 2a 및 도 2b는 셀 전압과 메모리 셀에 저장된 디지털 데이터값 사이의 매핑을 전체적으로 나타낸다. 도 2a에 도시한 바와 같이, 예시적인 8 비트 메모리 셀의 디지털 데이터값의 분포(200)를 나타내었다. 8 비트 메모리 셀은 256개의 가능한 디지털 데이터값을 포함하고, 4 비트 메모리 셀은 16개의 가능한 디지털 데이터값을 포함한다. 가능한 데이터값의 개수는 2n (여기서, b은 비트 수)이지만, 가능한 디지털 데이터값의 개수가 가능한 디지털 데이터값의 n 비트 수에 대응할 필요는 없다. 각 메모리 셀은 1보다 큰 가능 디지털 데이터값의 임의의 정수를 포함할 수 있으며, 예를 들어 일부는 메모리 셀은 10개의 가능 데이터값을 가질 수 있다. 디지털값 분포(200)는 각 디지털 데이터값에 대한 전압 분포를 나타내는 디지털값 분포 곡선(205-210)을 포함할 수 있다. 각 디지털값 분포 곡선(예를 들어, 205-210)은 각 가능 디지털 데이터값에 관련된 전압 레벨에 해당하는 디지털 전압 값의 범위를 나타낸다.
기입 동작 중에 각 메모리 셀은 가능 디지털 데이터값 중 하나로부터 선택되는 디지털 데이터에 해당하는 아날로그 전압에 대한 전하를 받는다. 이러한 해당 전압은 통상적으로 원하는 디지털 데이터값에 대한 분포 곡선(205-210) 내에 있다. 이 해당 전압은 또한 디지털 데이터값에 해당하는 목표 전압일 수 있다. 예를 들어, 셀 전압이 분포(207) 내에 있는 경우, 셀에 저장되는 디지털값은 02H일 수 있다. 판독 동작 중, 아날로그 전압 신호는 각 셀에서 검출된다. ADC(136)는 이어 아날로그 전압 신호를 그 디지털 표현으로 변환한다. 이러한 디지털 표현을 적어도 하나의 디지털값 분포 곡선과 비교하여 판독된 메모리 셀에 저장된 아날로그 전압에 의하여 나타나는 디지털 데이터값을 결정한다.
디지털 데이터값 분포(200)는 디지털 데이터값 분포 곡선(205-210) 사이의 회색 영역(grey area)(215)을 포함한다. 일부 실시예에서, ADC(142)가 회색 영역(215) 내에 있는 셀 전압을 수신하거나 아날로그 전압을 검출하는 경우, ADC(142)는 예를 들어, 가장 인접한 디지털 데이터값으로 셀 전압을 변환한다. 예를 들어, ADC(142)가 실질적으로 전압 레벨(220)에 가까운 셀 전압을 수신하는 경우, ADC(142)는 가장 인접한 디지털 데이터값, 즉 FEH로 변환한다. 일부 실시예에서, FDC(106)는 ADC(142)가 일부 파라미터에 기초하여 가장 인접한 값 이외의 대체 값으로 변환하도록 명령하는 대체 값 명령을 또한 포함할 수 있다.
일부 실시예에서, FDC(106)는 데이터값의 페이지 또는 블록을 변환하는 에러 정정 과정에서는 가장 인접한 디지털 데이터값과 하나 이상의 대체 값을 모두 사용할 수 있다. 또한, FDC(106)는 디지털 데이터값 분포 곡선(205-210) 또는 회색 영역(215) 내의 셀 전압의 위치에 기초하여 불확실성을 특정 셀 전압 또는 해당 데이터값에 할당할 수 있다. 할당된 불확실성은 데이터값의 페이지 또는 블록을 변환하는 알고리즘에 사용될 수 있다. 이러한 파라미터는 일부 예는 하나 이상의 온도, 셀에 대한 판독 회수, 셀에 대한 기입 회수, 공급 전압 및 기준 셀(130a, 130b, 130c)의 전압을 포함할 수 있다. 일부 예에서, 셀 전압은 최소 셀 전압(Vmin) 이하로 떨어질 수 있다. FDC(106)는 오프셋(offset)을 수신된 셀 전압에 부가하여 정정을 행한다. 이러한 오프셋은 아날로그 FE(139)에 의하여 부가되거나 ADC(142) 또는 처리기(112)에 의하여 디지털적으로 부가될 수 있다.
일부 실시예에서, FDC(106)는 디지털 데이터값 분포(200)를 변경함으로써 회색 영역(215)의 위치와 폭을 동적으로 조정할 수 있따. 예를 들어, FDC(106)는 하나 이상의 기준 셀 전압과 같은 파라미터, 메모리 셀의 사용, 그리고 NVM(154)에 사전 로딩될 수 있는 기타 휴리스틱스(heuristics)에 기초하여 회색 영역(215)을 조정하는 관리 소프트웨어 코드를 포함할 수 있다. 관리 소프트웨어 코드는 셀 레졸루션 레지스터(166)의 업데이트를 수행할 수 있다. 예를 들어, 각각의 다이(103), 아날로그 인터페이스(135) 및/또는 MCP(100)는 제조 시간 및 선형화 테이블(linearization table)에 특징이 있을 수 있으며, 정정 인자 또는 다른 정정을 위한 조정은 MCP(100) 내의 비휘발성 메모리에 저장될 수 있다. 일부의 경우, 최대 및 최소 전압 레벨(Vmax 및 Vmin)은 물론 디지털값 분포 곡선(205-210)은 사용 연한 동안의 셀에 대한 실험 결과를 기초로 조정되고/되거나 재배치될 수 있다.
도 2b에 도시한 바와 같이, 셀 전압 대 디지털값 그래프(250)를 나타내었다. 그래프(250)는 ADC(142)가 아날로그 전압을 디지털값으로 변환하는데 사용하는 이상적인 전압 특성(255)을 포함한다. 일부 예에서, 데이터 셀(124)은 예를 들어, 온도의 휴리스틱스, 셀의 노화, 전하 펌프 또는 공급 전압 허용값, ADC(136)의 비선형성, 메모리 셀에서 검출된 에러 및/또는 셀의 판독 및 기록 횟수로 인한 비이상적인(non-ideal) 전압 특성(260, 265)에 따른 디지털값을 저장할 수 있다. FDC(106)는 여러 방법으로 전압 특성(260, 265)을 이상적인 특성(255)에 가깝도록 보상할 수 있다. 예시적인 보상 방법에 대하여 도 3a, 도 3b, 도 4, 도 5 및 도 6a 내지 도 6c를 참고로 하여 설명한다.
도 3a 및 도 3b는 NAND 플래시 메모리로부터 데이터 페이지를 판독하는 과정(350, 300)의 예를 나타내는 흐름도이다. 과정(350, 300)은 처리기(112)가 일반적으로 행하는 동작을 포함한다. 일부 실시예에서, 과정(350, 300)은 또한 ADC(142)와 통합될 수 있는 다른 처리 및/또는 제어 요소에 의하여 수행, 대체 또는 강화될 수 있다.
도 3a는 멀티 레벨 메모리 셀로부터 검출된 전압 레벨을 디지털 데이터값으로 변환하는 과정을 나타낸다. 과정(350)은 멀티 레벨 메모리 셀에서 아날로그 전압 레벨을 검출하는 것으로 시작된다(단계 355). 이 전압은 예를 들어 아날로그 인터페이스(136)에 의하여 검출될 수 있다. 아날로그 인터페이스(136)는 플래시 메모리 다이(103)로부터 아날로그 신호를 수신하도록 동작 가능한 입력을 포함할 수 있다. 플래시 디스크 제어기(106)는 입력이 아날로그 신호를 수신하는 메모리 셀을 선택하기 위한 제어 모듈을 더 포함할 수 있다. 단계(360)에서, 아날로그 전압 신호는 검출된 아날로그 전압의 디지털 표현으로 변환된다. 이러한 변환은 ADC(142)에 의하여 행해질 수 있다. 디지털 표현은 디지털 데이터값을 나타내는 복수의 가능 전압 레벨 중에서 메모리 셀에 저장되는 아날로그 전압의 레벨을 ADC(142) 또는 처리기(112)가 구별하게 하는 충분한 데이터를 포함할 수 있다. 이는 메모리 셀에 저장된 전압이 나타내는 디지털 데이터값 이상의 데이터 비트를 포함하는 디지털 표현을 구비함으로써 달성될 수 있다.
도 2a는 이러한 개념을 설명하는데 도움이 된다. 가능한 아날로그 셀 전압의 범위는 아날로그 셀 전압의 디지털 표현에 각각이 해당하는 복수의 부분[예를 들어, 전압 레벨(220)에 의하여 표현되는 것 같은]으로 나눌 수 있다. 각 디지털값 분포 곡선(205-210) 및 각 회색 영역(215)은 복수의 부분을 포함하여 디지털값 분포 곡선(205-210) 보다 높은 레졸루션을 갖는 디지털 표현을 사용하게 하고, 이는 예를 들어, 셀 전압이 디지털값 분포 곡선(205-210) 또는 회색 영역(215) 내에 있는 곳에 관련된 부가 정보를 제공할 수 있다.
단계(365)에서, 디지털 표현은 디지털 데이터값 분포에 기초하여 디지털 데이터값으로 변환된다. 디지털 데이터값 분포는 셀 레졸루션 레지스터(166)에 저장될 수 있고 도 2a에 도시한 디지털 데이터값 분포(200)일 수 있다. 단계(335)에서, 처리기 또는 제어기는 판독할 메모리 셀이 더 있는지 판단한다. 그런 경우, 과정은 단계(355)로 복귀한다. 아니면, 과정(350)은 종료한다.
도 3b는 식별된 디지털 데이터값을 저장하고 불확실한 디지털 데이터값의 위치를 표시하는 과정을 상세히 설명한다. 과정(300)은 예를 들어, 처리기(112)가 NAND 플래시 메모리 다이(103)에서 데이터 페이지를 검색하는 명령을 수신할 때 시작된다. 단계(305)에서, 처리기(112)는 셀 레졸루션 레지스터(166)로부터 페이지에 대한 셀 레졸루션 정보를 검색한다. 이어, 단계(310)에서, 처리기(112)는 ADC(142)로부터 데이터 셀에 대한 디지털 출력 값을 수신한다. 데이터 셀에 대한 디지털 출력 값은 데이터 셀로부터 검출된 전압의 디지털 표현(digital representation)이다. ADC(142)는 단계(310)에서의 저장된 임계값에 기초하여 수신 디지털 데이터값을 판단한다. 일부 실시예에서, 처리기(112)는 셀 레졸루션 레지스터(166)의 정보를 사용하여 어느 임계값 세트를 사용할지 판단할 수 있다. 이러한 임계값은 도 2a와 관련하여 전술한 디지털값 분포 곡선(205-210)에 관련된 것일 수 있다. 예를 들어, 처리기(112)는 하나의 8 비트 셀에 대하여는 어느 임계값 세트를 사용하고 상이한 8 비트 셀에 대하여는 다른 임계값 세트를 사용할 수 있다. 각 임계값 세트는 가능 디지털 데이터값 분포에 대응될 수 있고 가능 디지털 데이터값에 대응되는 아날로그 전압의 디지털 표현의 범위를 구성할 수 있다.
단계(320)에서, 처리기(112)는 수신된 아날로그 전압 값에 대한 디지털 데이터값이 불확실한지를 판단한다. 일부 실시예에서, 처리기(112)는 셀 전압이 디지털값 분포(200)의 회색 영역(215) 내에 있거나 셀 전압이 디지털값 분포 곡선(205-210)과 회색 영역(215)의 경계 근처에 있는 경우 디지털 데이터값이 불확실하다고 판단할 수 있다. 일부 실시예에서, 서로 다른 불확실한 레벨은 셀 전압이 디지털값 분포(200) 내에 있는지 여부에 따라 할당될 수 있다[예를 들어, 고 전압은 불확실성이 더 커지는 경향이 있고/있거나 회색 영역(215)의 중간에 더 가까운 셀 전압에 대하여는 불확실성이 더 높아진다]. 단계(320)에서, 처리기(112)가 수신 디지털값이 불확실하지 않다고 판단한 경우, 처리기(112)는 단계(325)에서 호스트 출력 버퍼에 수신 디지털값을 저장한다. 단계(320)에서 처리기(112)가 수신 디지털값이 불확실하다고 판단한 경우, 처리기(112)는 단계(330)에서 마스크 테이블(mask table)에 불확실 디지털값의 위치를 표시하고, 이어 단계(325)를 수행한다. 일부 실시예에서, 또한 어떤 값(예를 들어, 불확실한 값 또는 대체 값들 중 하나)을 정정해야 할지를 결정시 나중에 이용될 것을 위해 하나 이상의 대체 값을 저장할 수 있다.
수신 디지털값을 저장한 후, 처리기(112)는 단계(335)에서 판독할 셀이 더 있는지를 판단한다. 예를 들어, 처리기(112)는 메모리 페이지의 끝에 도달했는지를 검사할 수 있다. 판독할 셀이 더 있는 경우, 과정은 단계(310)로 돌아간다. 판독할 셀이 더 이상 없는 경우, 과정(300)은 종료한다. 일부 실시예에서, 과정은 메모리 셀의 페이지 또는 블록과 연관된 불확실 데이터값의 개수를 관리 로그에 또한 기록한다. 다른 실시예에서, 과정은 불확실 데이터값의 개수가 소정 임계값을 초과하는 경우 메모리 셀의 페이지 및/또는 블록의 물리적 및/또는 논리적 위치를 기록한다.
도 4는 디지털값에 대한 셀 전압의 매핑을 조정하기 위한 정정 함수를 이용하여, NAND 플래시 메모리 다이(103)와 같은 MLC 플래시 메모리로부터 데이터 페이지를 판독하는 과정(400)의 한 예를 나타내는 흐름도이다. 과정(400)은 예를 들어, 처리기(112)에 의하여 수행될 수 있다. 과정(400)은 처리기(112)가 판독 명령을 수신 여부를 판단하는 단계(405)에서 시작된다. 예를 들어, FDC(106)는 호스트 인터페이스(109)를 통하여 호스트 장치로부터 판독 명령을 수신할 수 있다. 단계(405)에서 처리기(112)가 판독 명령을 수신하지 않았다고 판단한 경우, 단계(405)가 반복된다.
처리기(112)가 단계(405)에서 판독 명령을 수신하였다고 판단한 경우, 처리기(112)는 온도, 메모리 페이지에의 판독 및 기입 횟수, 공급 전압 및/또는 NAND 플래시 메모리 다이(103)의 다른 동작 조건에 기초하여 단계(410)에서 정정 함수를 업데이트한다. 일부 실시예에서, ADC(142) 또는 아날로그 인터페이스(136)는 정정 함수를 이용하여 셀 전압이 디지털값으로 변환되기 전에 아날로그 선단(139)에 측정된 셀 전압을 조정할 수 있다. 다른 실시예에서, 처리기(112)는 정정 함수를 이용하여 매핑 함수에서의 임계값을 조정하여 ADC(142)가 아날로그 전압을 조정된 디지털값으로 변환할 수 있다. 정정 함수는 상이한 셀에 대하여 다를 수 있다. 예를 들어, 검출 전압이 높은 메모리 셀은 정정 함수에 의하여 더 많이 조정될 수 있다.
이어, 처리기(112)는 단계(415)에서 기준 셀을 선택한다. 예를 들어, 처리기(112)는 기준 셀(130a, 130b, 130c) 중 하나를 선택할 수 있다. 다음, 처리기(112)는 선택된 기준 셀에 저장되어 있는 기준 전압을 단계(420)에서 판독한다. 단계(425)에서, 처리기(112)는 기준 전압에 기초하여 정정함수를 업데이트한다. 예를 들어, 기준 전압이 10퍼센트만큼 새그를 나타내는 경우, 처리기(112)는 정정 함수를 조정하여 데이터의 새그 전압을 보상할 수 있다. 일부 실시예에서, 정정 함수는 검출된 전압 레벨을 비선형적으로 조정할 수 있다. 정정 함수는 낮은 검출 전압 레벨보다 높은 검출 전압 레벨을 조정할 수 있다. 정정 함수는 상이한 조정량 또는 상이한 조정 비율에 의하여 상이한 전압 레벨로 검출 전압을 조정할 수 있다.
일부 실시예에서, 임계값은 동작 중간에 동적으로 조정될 수 있다. 일부 실시예에서, 처리기(112)는 이전에 판독한 기준 전압 중에서 예를 들어 100개의 샘플과 같이 일정한 수의 이전 샘플을 저장하고, 저장된 전압의 이동 평균(moving average)을 이용하여 정정 함수를 업데이트할 수 있다. 정정 함수는 또한 예를 들어, 평균(mean), 메디안(median), 모드(mode) 또는 가중치 평균과 관련된 다른 함수에 기초하여 업데이트될 수 있다. 예를 들어, 가중치 이동 평균을 사용할 수 있다. 이어, 처리기(112)는 단계(430)에서 다른 기준 셀을 선택할 것인지 판단한다. 한 예로, 처리기(112)는 정정 함수를 조정하기 위한 충분한 정보가 있는지 판단할 수 있다. 다른 예로, 처리기(112)는 판독 명령에 기초하여 일부 메모리 블록은 물론 일부 메모리 페이지 내의 모든 기준 셀을 판독하도록 구성될 수 있다.
단계(430)에서 처리기(112)가 판독할 다른 기준 셀이 있다고 판단한 경우, 과정(400)은 단계(415)로 돌아간다. 일부 실시예에서, 기준 셀의 전압을 판독하여 정정 함수를 조정하는 과정은 메모리 셀 그룹으로부터 검색한 데이터에서 에러를 검출함으로써 시작된다. 다른 실시예에서, 검출된 에러는 검출된 전압과 관련된 데이터를 결정하기 위한 임계값을 이동시킨다(shift). 일부 실시예에서 이러한 임계값은 자동적으로 아래로 이동하지만, 다른 실시예에서는 하나 이상의 기준 셀의 전압에 기초하여 조정된다. 에러는 ECC(127)를 이용하여 메모리 셀의 그룹과 관련지음으로써 검출될 수 있다.
처리기(112)가 판독한 다른 기준 셀이 없다고 단계(430)에서 판단한 경우, 처리기(112)는 단계(435)에서 판독 명령에 기초하여 판독할 페이지를 선택한다. 이어, 단계(440)에서, 처리기(112)는 예를 들어, 과정(300)(도 3b)을 이용하여 플래시 메모리로부터 선택된 데이터 페이지를 판독한다. 단계(445)에서, 처리기(112)는 정정 함수를 이용하여 페이지 데이터를 정정한다. 예를 들어, 처리기(112)는 아날로그 인터페이스(136)의 일부 파라미터를 설정하여 매핑 함수를 조정할 수 있다. 다른 예로, 처리기(112)는 정정 함수를 이용하여 ADC(142)로부터 출력되는 디지털 표현을 조정할 수 있다. 다음, 처리기(112)는 에러 검사 동작을 행하여, 단계(450)에서 페이지에 에러가 있는지를 검사한다. 일부 실시예에서, 에러 검사 동작은 하드웨어 에러 검출 회로를 이용하여 ECC 엔진(148)에서 행해질 수 있다. 다른 실시예에서, 에러 검사 동작은 소프트웨어에서 행해질 수 있고, 이때 처리기(112)는 NVM(154)에 저장되어 있는 에러 검출 코드를 실행하여 페이지 내의 에러를 검출할 수 있다. 에러 검사 동작 후, 단계(455)에서, 처리기(112)는 에러가 검출되었는지 판단한다.
에러가 검출되지 않은 경우, 단계(460)에서, 처리기(112)는 판독한 데이터를 호스트 장치로 송신할 수 있다. 이어, 처리기(112)는 단계(465)에서 판독할 다른 페이지가 있는지를 판단한다. 판독할 데이터가 더 있는 경우, 단계(435)는 반복된다. 더 없으면 과정(400)은 종료한다. 단계(455)에서 하나 이상의 에러가 검출된 경우, 처리기(112)는 단계(470)에서, 에러 정정 동작을 행하며, 이 예를 도 5를 참고하여 설명한다. 다음, 처리기(112)는 단계(475)에서 에러 정정 동작이 성공적인지를 판단한다. 에러 정정 동작이 성공한 경우, 단계(460)가 반복된다. 에러 정정 동작이 성공하지 않은 경우, 처리기(112)는 단계(480)에서 NVM(154)에 에러 정보(예를 들어, 에러 로그)를 저장하고 과정은 단계(465)에서 계속된다. 에러 정보는 관리 로그에 저장될 수 있다. 저장된 에러 정보는 블록 관리 동작에 사용될 수 있으며, 이러한 예는 도 8a를 참고하여 설명한다. 일부 실시예에서, 처리기(112)는 메모리 셀의 페이지 또는 블록의 기준 셀들 사이의 새그의 변화를 NVM(154)에 기록한다. 다른 실시예에서, 처리기(112)는 기준 셀의 새그의 정도가 소정 조건을 충족시키는 경우 메모리 셀의 페이지 및/또는 블록의 물리적 및/또는 논리적 위치를 관리 로그에 기록만 한다. 예를 들어, 기준 셀의 새그가 10%를 초과하거나 상이한 기준 셀들에서 새그 정도의 차이가 10%를 초과하는 경우, 메모리 셀의 페이지 및/또는 블록에 저장된 데이터는 메모리 셀에 부가 전하를 인가하거나 관리 동작 동안에 페이지를 완전히 재기입함으로써 리프레시될 수 있다. 관리 동작의 한 예는 도 9를 참고하여 설명한다.
도 5는 비트 에러를 갖는 데이터의 페이지를 정정하는 에러 정정 동작을 행하는 과정(500)의 한 예를 나타내는 흐름도이다. 과정(500)는 예를 들어, 처리기(112)가 플래시 메모리로부터 판독한 데이터의 페이지에서 비트 에러를 검출하고 ECC 엔진(148)에 명령을 보내어 비트 에러를 정정하는 하드웨어 ECC 알고리즘을 단계(505)에서 행하는 경우 시작된다. 일부 실시예에서, ECC 엔진(148)과 ADC(142), 및/또는 아날로그 인터페이스(136)는 협동하여 비트 에러를 정정할 수 있다.
이어, ECC 엔진(148)은 단계(510)에서, 하드웨어 ECC 알고리즘이 성공적인지 검사할 수 있다. 하드웨어 ECC 알고리즘이 데이터 페이지 내의 모든 에러를 정정할 수 있는 경우, 하드웨어 ECC 알고리즘은 성공적이다. 이어, 단계(515)에서, ECC 엔진(148)은 ECC 결과를 예를 들어 SDRAM(151)에 저장한다. 다음, ECC 엔진(148)은 단계에서 "에러 정정 성공"을 나타내는 메시지를 생성하고 과정(500)은 종료한다.
존재하는 에러 비트의 개수가 하드웨어 ECC 알고리즘이 정정할 수 있는 에러 비트 개수를 초과하는 경우, ECC 엔진(148)은 단계(520)에서 플래시 메모리로부터 데이터 페이지를 재판독하라는 메시지를 아날로그 인터페이스(136)로 보낸다. 다음, 단계(525)에서, ECC 엔진(148)은 다시 하드웨어 ECC 알고리즘을 행한다. 단계(530)에서, ECC 엔진(148)은 하드웨어 ECC 알고리즘이 성공적인지 검사한다. 하드웨어 ECC 알고리즘이 정정 가능한 경우, 하드웨어 ECC 알고리즘은 성공적이며 과정은 단계(515)에서 계속된다.
단계(530)에서, ECC 엔진(148)이 존재하는 에러 비트 개수가 하드웨어 ECC 알고리즘이 정정 가능한 에러 비트의 개수를 초과한다고 판단한 경우, ECC 엔진(148)은 비트 에러를 정정하기 위한 대체 값 명령을 실행한다. 대체 값 명령의 예시적인 실시예는 도 6a 내지 도 6c를 참고하여 설명한다. 이어, ECC 엔진(148)은 단계(535)에서 대체 값 명령이 비트 에러를 정정하는지 검사할 수 있다. ECC 엔진(148)이 비트 에러를 정정한다고 판단한 경우, 과정은 단계(515)에서 계속된다.
ECC 엔진(148)이 비트 에러를 정정할 수 없다고 판단한 경우, ECC 엔진(148)은 단계(540)에서 확장된 소프트웨어 ECC 알고리즘을 행하여 데이터 페이지를 복원한다. 예를 들어, 확장된 소프트웨어 ECC 알고리즘은 더 많은 ECC 비트를 이용하는 깊은(deeper) ECC 알고리즘을 포함할 수 있다. 예를 들어, 하드웨어 ECC 알고리즘은 4개의 ECC 비트를 필요로 하고 소프트웨어 ECC 알고리즘은 128개의 ECC 비트를 이용할 수 있다. 이때, ECC 엔진(148)은 확장된 단계(550)에서 확장된 소프트웨어 ECC 알고리즘이 성공적인지 검사할 수 있다. ECC 엔진(148)이 확장된 소프트웨어 ECC 알고리즘이 성공적이라고 판단한 경우, 과정은 단계(515)에서 계속된다. 단계(550)에서 확장된 소프트웨어 ECC 알고리즘이 성공적이지 못한 경우, ECC 엔진(148)은 단계(555)에서 "에러 정정 실패"를 메시지를 생성하고 과정(500)을 종료한다.
도 6a는 대체 데이터값을 생성 및 이용하는 과정(600)의 한 예를 나타내는 흐름도이다. 처리기(112), ECC 엔진(148), 플래시 인터페이스(115) 또는 전술한 그리고 다른 구성요소의 기타 조합은 과정(600)에서의 동작을 수행할 수 있다. 단계(605)에서, 처리기(112)는 마스크 테이블에서 정보를 검색하여 데이터 페이지(예를 들어, 도 3b의 단계(330) 참조] 내의 불확실한 디지털 데이터값을 확인하고, 어떤 경우에는 불확실의 정도에 관한 정보를 검색한다.
이어, 처리기(112)는 단계(610)에서 파라미터[예를 들어, 온도, 데이터 페이지에서의 판독 횟수, 데이터 페이지로의 기입 횟수, 셀 레졸루션 레지스터(166)의 정보, 공급 전압, 전하 펌프 전압, 데이터 페이지에서의 기준 전압 등]에 기초하여 정정 데이터를 검색할 수 있다. 예를 들어, 처리기(112)는 데이터 페이지에 대한 정정 데이터를 결정하는 정정 함수를 계산할 수 있다. 이에 더하여 또는 이와는 달리, 처리기(112)는 정정 데이터를 이용하여 단계(615)에서 각각의 불확실 데이터값에 대한 대체 디지털값을 결정한다. 각각의 불확실 데이터값에 대한 대체 디지털값은 가장 인접한 디지털값과 다음으로 가장 인접한 디지털값을 종종 포함한다. 이는 메모리 셀의 검출 아날로그 전압의 디지털 표현으로부터 동떨어진 두 개의 디지털 데이터값을 또한 포함할 수 있다. 통상적으로, 모든 메모리 셀이 불확실한 데이터값을 갖는 것은 아니다. 단계(620)에서, 처리기(112)는 확실한 디지털 데이터값을 갖는 메모리 셀에 대한 저장 디지털 데이터값과 함께 확인된 대체 디지털값을 버퍼에 저장한다.
대체 디지털값을 저장한 후, 처리기(112)는 단계(625)에서 버퍼로부터 대체 디지털값의 조합을 선택한다. 대체 디지털값의 조합 자체는 예를 들어, 대체 디지털값이 더 정확한 것으로 확인하고자 하는 알고리즘에 기초하여 선택될 수 있다. 이러한 선택 알고리즘은 각 디지털 데이터값에 연관된 불확실의 정도에 관한 데이터를 사용할 수 있다. 더욱이, 그러한 선택 알고리즘의 사용 여부에 관계 없이, 대체 디지털값의 선택 조합은 가능한 모든 대체 디지털값을 포함할 필요는 없다. 즉, 불확실한 것으로 확인된 데이터값들 중에서도 원래 데이터값 중 일부는 대체 데이터값의 일부 서브세트와 함께 사용될 수 있다.
다음, 처리기(112)는 적절한 확실성이 있는 것으로 판단된 디지털 데이터값과 함께 단계(630)에서 대체 디지털값의 선택 조합을 이용하여 페이지 데이터를 버퍼에 저장한다. 이어, 처리기(112)는 과정(500)에서 전술한 것과 같은 동작을 행할 수 있다. 일부의 경우, ECC 알고리즘의 실행은 하나 이상의 대체 디지털값과, 어느 정도 확실함이 추정되는 것으로 판단되는 하나 이상의 디지털 데이터값으로도 변경된다. 단계(640)에서, 처리기(112)는 ECC 알고리즘이 성공적인지 판단한다. 처리기(112)가 ECC 알고리즘이 성공적이라 판단한 경우, 단계(645)에서, 처리기(112)는 ECC 결과가 성공적인 페이지 데이터를 저장하고 과정(600)을 종료한다.
단계(640)에서, 처리기(112)가 ECC 알고리즘이 성공적이지 못하다고 판단한 경우, 단계(650)에서 처리기(112)는 대체 값의 다른 조합이 이용 가능한지를 판단한다. 가능한 대체 값의 조합의 수는 불확실한 디지털 데이터값을 갖는 메모리 셀의 수와 확인된 대체 디지털값의 수에 의존한다. 통상적으로, 대부분의 메모리 셀은 불확실한 디지털 데이터값을 가지지 않는다. 처리기(112)는 대체 값의 다른 조합이 이용 가능한지를 판단하고, 과정은 단계(625)로 돌아간다.
단계(650)에서 처리기(112)가 모든 대체 조합을 시도하였다고 판단한 경우, 처리기(112)는 단계(655)에서 에러 메시지를 생성하고 과정(600)을 종료한다. 일부 실시예에서, 부가적인 대체 값을 생성하고/하거나 여러 데이터값을 판독하기 위한 전압 임계값을 조정하고 ECC 알고리즘을 재시도하여 페이지 데이터에 대한 정확한 값을 확인하는 것도 가능하다. 예를 들어, 적절한 확실성을 갖는 특정 값을 나타내도록 이전에 결정되었으나 디지털값 분포 곡선(205-210)(도 2a와 관련하여 전술한) 중 하나에 대하여 상대적으로 가까운 임계값인 전압 레벨용으로 대체 값을 확인할 수 있다. 이와는 달리, 여러 디지털값 분포 곡선(205-210)에 대한 전압 임계값을 전술한 바와 같이 조정할 수 있으며, 새로운 대체 값을 확인하는 것으로 포함하여 데이터값을 다시 생성할 할 수 있다.
일부 실시예에서, 단계(655)에서의 에러 메시지는 NVM(154)의 관리 로그에 기록된다. 이때, 도 9에 도시한 것과 같은 관리 동작 중에, 부가적인 대체 값을 생성하고/하거나 여러 데이터값을 판독하기 위한 전압 임계값을 조정하고 ECC 알고리즘을 재시도하여 페이지 데이터에 대한 정확한 값을 확인하는 것도 가능하다. 확인된 정확한 값은 이어 데이터를 재기입하는데 사용될 수 있다.
도 6b는 대체 값을 생성 및 이용하는 과정(660)의 다른 예를 나타내는 흐름도이다. 과정(660)은 과정(600)과 일부에서 공통되는 단계가 있다. 이 예에서, 마스크 테이블의 사용 또는 이와는 달리 단계(605)에서 불확실한 데이터값을 확인한 후, 처리기(112)는 단계(665)에서 가장 가까운 인접 디지털값을 이용하여 각각의 불확실한 값에 대한 대체 값을 판단한다. 예를 들어, 처리기(112)는 디지털값 분포(200)(도 2a)를 이용하고 셀 전압에 가장 가까운 인접 디지털값 대신에 두 번째로 가까운 인접 디지털값을 선택할 수 있다. 이어, 처리기(112)는 도 6a에 관련하여 설명한 단계(630)로 시작하는 동작을 수행함으로써 과정(660)을 계속한다.
도 6c는 대체 값을 생성 및 이용하는 과정(670)의 다른 예를 나타내는 흐름도이다. 이 예에서, 처리기(112)는 마스크 테이블에서 불확실한 디지털값 정보를 반드시 검색하지는 않는다. 과정(670)은 처리기(112)가 선택된 페이지(예를 들어, 도 5의 단계 535 참조)에서 대체 값 확인 및 분석을 행하는 명령을 수신하는 단계(672)에서 시작한다.
처리기(112)는 단계(674)에서 선택된 페이지의 판독을 시작한다. 단계(676)에서, 처리기(112)는 페이지의 셀을 선택하여 셀 전압을 판독한다. 단계(678)에서, 처리기(112)는 셀 전압이 불확실한지 판단한다. 예를 들어, 처리기(112)는 도 2a에 도시한 것과 같은 디지털값 분포(200)를 이용하여 수신된 셀 전압이 회색 영역(220) 중 하나에 있는지 판단한다. 처리기(112)가 셀 전압이 회생 영역 내에 있다고 판단한 경우, 처리기(112)는 단계(680)에서 두 번째로 가까운 디지털 데이터값을 이용하여 셀의 디지털 데이터값을 결정한다. 다른 실시예에서, 처리기(112)는 첫 번째로 가까운 디지털 데이터값을 이용하여 셀의 디지털 데이터값을 결정한다. 다음, 처리기(112)는 단계(682)에 디지털 데이터값을 버퍼에 저장한다.
단계(678)에서, 처리기(112)가 셀 전압이 회색 영역 내에 있지 않다고 판단한 경우, 처리기(112)는 단계(684)에서 저장된 임계값에 기초하여 셀의 디지털 데이터값을 결정하고 단계(682)를 수행한다. 단계(682) 후의 단계(686)에서, 처리기(112)는 페이지의 다른 셀을 판독할 것인지 판단한다. 처리기(112)가 다른 셀을 판독할 것을 결정한 경우, 과정은 단계(676)로 돌아간다. 처리기(112)가 더 판독할 셀이 없다고 판단한 경우, 과정(670)은 종료된다.
도 7a는 기준 셀(130a, 130b, 130c)을 이용하여 플래시 메모리 페이지(121)에 데이터를 기입하는 과정(700)의 한 예를 나타내는 흐름도이다. 과정(700)은 일반적으로 처리기(112)에 의하여 수행될 수 있다. 과정(700)은 처리기(112)가 기입 명령을 수신하는 단계(705)에서 시작된다. 예를 들어, 기입 명령은 기입 명령어, 기입될 데이터, 그리고 데이터를 기입할 메모리 주소를 포함할 수 있고, 예를 들어 호스트로부터 논리 블록 주소로서 수신될 수 있다. 이어, 처리기(112)는 기입 명령에 기초하여 단계(710)에서 플래시 메모리의 메모리 페이지를 선택한다.
이어, 처리기(112)는 단계(715)에서 기입될 데이터를 SDRAM(151)과 같은 버퍼에 카피할 수 있다. 데이터는 외부의 호스트 장치 또는 다른 메모리 페이지로부터 전달될 수 있다. 일부 실시예에서, 선택된 메모리 페이지에 저장되는 데이터는 버퍼에 카피되어 선택된 페이지로 다시 카피된다. 다른 실시예에서, 선택된 메모리 페이지에 기입되는 데이터는 버퍼에 카피되는 것이 아니라, 데이터 소스(외부 호스트 장치 또는 다른 메모리 셀로부터)로부터 선택된 메모리 페이지로 바로 기입된다.
이어, 처리기(112)는 단계(725)에서 선택된 페이지에 저장된 모든 데이터를 소거한다. 단계(730)에서, 처리기(112)는 예를 들어, 전하를 데이터 셀(124)과 기준 셀(130c)에 인가함으로써 버퍼로부터의 데이터를 선택 메모리 페이지에 기입한다. 단계(730)는 원하는 데이터값과 각 셀에 대한 해당 아날로그 전압 레벨에 따라 서로 다른 양의 전하를 메모리 셀에 인가한다. 일부 실시예에서, 전하 펌프를 이용하여 선택된 메모리 페이지의 메모리 셀에 전하를 인가할 수 있다. 이어, 처리기(112)는 단계(735)에서 선택된 페이지의 기준 셀(130c)의 기준 전압을 판독한다. 기준 셀(130c)의 전압 레벨을 검출함으로써 기준 전압을 판독한다. 단계(740)에서 처리기(112)는 기준 전압이 목표 전압 이하인지 판단한다. 처리기(112)가 기준 전압이 목표 전압 이하라고 판단한 경우, 과정은 단계(730)로 돌아가 부가 전하를 인가하여 선택된 메모리 페이지의 셀에 저장된 전압을 증가시킨다. 인가되는 부가 전하의 양은 원하는 전압 레벨이 기준 셀의 전압에 대하여 비율 등으로 비교되는 방식에 따라 비례할 수 있다(예를 들어, 검출된 기준 셀 전압이 목표 전압의 10% 이하이고 특정 메모리 셀은 기준 셀의 전압 레벨의 두 배인 경우, 특정 메모리 셀에 인가되는 부가 전하의 양은 기준 셀에 인가되는 것의 두 배일 수 있다).
단계(704)에서, 처리기(112)가 기준 전압이 목표 전압 이하가 아니라고 결정한 경우, 단계(745)에서 처리기(112)는 데이터 셀을 선택하고, 단계(750)에서 선택된 데이터 셀의 전압을 판독한다. 이어, 단계(755)에서, 처리기(112)는 판독 전압이 너무 높은지 판단한다. 예를 들어, 처리기(112)는 판독한 셀 전압과 디지털값 분포를 비교하여 셀 전압이 목표 디지털값의 전압 범위 내인지 검사한다. 처리기(112)가 전압이 너무 높지 않다고 판단한 경우, 처리기는 단계(760)에서 다른 데이터 셀을 선택할지 판단한다. 처리기(112)가 다른 데이터 셀을 선택할 필요가 없다고 판단한 경우, 과정(700)은 종료한다. 그렇지 않으면, 과정(700)은 단계(745)로 돌아가 추가로 데이터 셀을 시험한다.
일부 실시예에서, 단계(745)에서 선택한 데이터 셀을 시험하여 전압이 너무 낮지 않은지 판단하는 것도 가능하다. 그런 경우, 과정(700)은 단계(730)로 돌아가 하나 이상의 데이터 셀에 부가 전하를 인가한다. 일부 실시예에서, 단계(740)에서 하나 이상의 기준 셀에 대한 시험이 완료된 경우, 모든 데이터 셀의 전압 레벨을 단계(745)에서 선택하여(또는 단계(745)를 반복하여) 레벨이 너무 높은지 및/또는 너무 낮은지를 판단한다. 이와 같은 방식으로, 기준 셀을 이용하여 페이지 또는 블록의 초기 충전을 행한 후 셀의 전압 레벨을 시험하고 미세 조정할 수 있다. 또한, 일부 실시예에서, 단계(740)에서 사용되는 기준 셀에 대한 목표 전압을 원하는 데이터값에 대한 임계 전압보다 약간 낮게 설정하여 과충전을 방지하고, 이어 실제 데이터 셀 값을 검사하고 전압 레벨을 미세 조정하여 실제 데이터 셀에 대하여 원하는 데이터값에 대응되는 전압 레벨에 이를 수 있다.
단계(755)에서, 처리기(112)가 전압이 너무 높다고 결정한 경우, 처리기(112)는 선택된 페이지를 재기입할 필요가 있는지를 판단한다. 예를 들어, 처리기(112)는 도 5를 참고로 하여 설명한 정정 알고리즘 중 하나를 이용하여 정정 가능한 에러의 개수보다 작거나 동일한 임계값과 비트 에러의 개수를 비교할 수 있다. 비트 에러의 개수가 임계값보다 큰 경우, 선택된 페이지를 재기입한다. 그렇지 않으면, 처리기(112)는 선택된 페이지의 재기입은 필요하지 않다고 결정한다. 단계(765)에서, 처리기(112)가 페이지의 재기입이 필요하지 않다고 결정한 경우, 과정(700)은 단계(760)로 이어진다. 단계(765)에서 처리기(112)가 페이지의 재기입이 필요하다고 결정한 경우, 과정(700)은 단계(725)로 돌아가 메모리 페이지의 기입을 다시 시작한다. 일부 실시예에서, 목표 전압은 목표 전압의 오버슈팅(overshooting) 가능성 줄이는 단계(765) 후에 증분적으로(incrementally) 감소할 수 있다.
도 7b는 호스트 장치와 MCP(100) 사이에서 높은 데이터 전송율을 달성하는 과정(770)의 한 예를 나타내는 흐름도이다. 과정(770)은 처리기(112)가 호스트 장치로부터 기입 명령을 수신하는 단계(772)에서 시작한다. 예를 들어, 호스트 장치로부터의 기입 명령은 기입 명령어, 기입할 데이터, 그리고 데이터를 기입할 메모리 주소를 포함할 수 있고, 예를 들어 호스트로부터 논리 블록 주소로서 수신될 수 있다.
다음, 처리기(112)는 신속한 기입 처리(예를 들어, 단일 레벨 셀 레졸루션 또는 다른 상대적으로 낮은 레졸루션으로 기입) 또는 시간, 전력 및 고레졸루션으로 기입하는 처리기 집약 기입 처리(processor intensive writing process)를 사용할지 여부를 판단한다. 단계(774)에서, 처리기(112)는 신속 기입을 수행하는 명령이 호스트 인터페이스로부터 있었는지 판단한다. 일부 실시예에서, 호스트 장치는 신속 기입의 레졸루션을 또한 특정할 수 있다. 호스트 장치가 신속 기입을 특정하지 않은 경우, 처리기(112)는 신속 기입 여부가 허가되는지 독자적으로 판단할 수 있다. 단계(776)는 MCP(100) 또는 MCP(100)에 연결되어 있는 호스트 장치가 소정 전원 조건을 만족하는지 판단한다. 도시한 실시예에서, 단계(776)에서는 호스트 장치가 교류 전원을 공급 받는지 판단한다. 다른 실시예에서, 단계(776)에서는 대신에 배터리가 호스트 장치로 공급하는 전원이 소정 전하로 충전되는지 판단한다. 일부 실시예에서, 단계(776)는 배터리가 호스트 장치로 공급하는 전하가 최대 용량 또는 용량의 90%로 충전되는지 판단할 수 있다. 이어, 단계(778)에서는 처리기(112)가 소정 대역폭 조건을 충족하는 초과 대역폭을 갖는지를 판단한다. 일부 실시예에서, 단계(778)는 처리기(112)가 이와는 달리 아이들(idle) 상태이면 충족된다. 다른 실시예에서, 단계(778)는 처리기(112)의 대역폭의 소정 비율을 사용하지 않으면 충족된다. 두 단계(776, 778)가 모두 충족되는 경우, 단계(780)에서 과정은 과정(700)을 이용하여 고레졸루션으로 메모리 셀에 기입한다. 두 조건(776, 778) 중 하나 또는 모두가 충족되지 않는 경우, 과정은 신속 기입 과정으로 진행한다.
신속 기입 과정의 경우, 처리기(112)는 단계(782)에서 호스트 장치로부터의 데이터를 기입할 이용 가능한 메모리 셀 페이지를 하나 이상 선택한다. 일부 실시예에서, 처리기는 호스트 장치로부터의 데이터를 SDRAM(151)와 같은 버퍼에 카피할 수 있다. 다른 실시예에서, 호스트 장치로부터의 데이터는 버퍼에 카피되지 않고 단계(725, 784) 후의 단계(786)에서 선택된 메모리 페이지로 직접 기입될 수 있다. 단계(725)에서, 처리기는 선택된 페이지에 저장되어 있는 임의의 데이터를 소거한다. 단계(774)에서, 처리기(112)는 선택된 메모리 페이지와 관련된 임의의 셀 레졸루션 레지스터를 낮은 레졸루션으로 업데이트한다. 일부 실시예에서, 낮은 레졸루션은 메모리 셀 당 1비트의 레졸루션일 수 있다. 다른 실시예에서, 낮은 레졸루션은 셀 당 2, 3 또는 4비트일 수 있다. 호스트 장치로부터의 데이터를 MCP(100)로 카피할 때 저레졸루션으로 기입하는 것은 데이터 전송율을 높이는데, 이는 각 메모리 셀을 충전할 때 필요로 하는 정확도가 낮아도 되고, 이로 인해 메모리 셀에 기입할 때 필요한 주의의 정도와 전압 조정양을 줄일 수 있기 때문이다. 저레졸루션으로 데이터를 메모리 셀에 기입한 후, 단계(784)에서는 선택된 메모리 페이지에 저장된 데이터는 관리 과정[과정(900)] 동안에 고레졸루션으로 재기입되어야 함을 나타내는 관리 로그 엔트리(maintenance log entry)를 기록할 수 있다.
도 8a는 메모리 페이지의 셀 레졸루션을 조정하는 과정(800)의 한 예를 나타내는 흐름도이다. 과정(800)은 예를 들어, 처리기(112)가 관리 프로그램을 실행하여 셀 레졸루션 레지스터(166)를 업데이트하는 동작을 수행할 수 있다. 과정(800)은 처리기(112)가 저장된 에러 정보를 판독하는 단계(805)에서 시작한다. 에러 정보는 예를 들어, 도 4의 단계(480)에서 전술한 바와 같이 판독 에러 또는 기입 에러 중에 저장될 수 있다. 이어, 처리기(112)는 단계(810)에서 페이지를 선택한다. 단계(815)에서, 선택된 페이지의 에러 카운트가 임계값보다 큰 지를 판단한다. 선택된 페이지의 에러 카운트가 임계값보다 크지 않은 경우, 처리기(112)는 단계(820)에서 검사할 페이지가 더 있는지 검사한다. 처리기(112)가 더 검사할 페이지가 없다고 판단한 경우, 과정(800)은 종료한다. 단계(820)에서, 처리기(112)가 검사할 페이지가 더 있다고 판단한 경우, 과정은 단계(810)로 돌아간다. 일부 실시예에서, 처리기(112)는 에러가 있는 모든 메모리 페이지를 검사할 수 있다. 다른 실시예에서, 처리기(112)는 에러 정보에 기록된 새로운 에러가 있는 메모리 페이지만을 검사할 수 있다.
단계(815)에서, 선택된 페이지의 에러 카운트가 임계값보다 큰 경우, 처리기(112)는 단계(825)에서 선택된 페이지로부터의 데이터 페이지를 버퍼로 카피한다. 이어, 처리기(112)는 셀 레졸루션 레지스터(166)를 업데이트하여 선택된 페이지의 셀 레졸루션을 낮춘다. 예를 들어, 플래시 인터페이스(115)는 셀 레졸루션 레지스터(166)를 검사하여 셀 레졸루션이 감소되었는지를 알 수 있고, 이어 플래시 인터페이스(115)는 감소된 새로운 셀 레졸루션에 따라 선택된 페이지에서 판독하고 기입할 수 있다.
이어, 처리기(112)는 단계(835)에서 카피된 데이터에 대한 물리 주소를 할당할 수 있다. 이용 가능한 메모리 페이지에 따라, 처리기(112)는 하나, 둘, 넷 또는 다른 개수의 물리적인 메모리 페이지를 할당하여 카피된 데이터를 할당할 수 있다. 다음, 처리기(112)는 단계(840)에서 논리 주소 테이블을 업데이트하여 할당된 물리 주소와 일치시킨다. 논리 주소 테이블은 논리 페이지를 하나 이상의 물리 페이지에 매핑시키는데 사용될 수 있다. 메모리 액세스 동작 중에 논리 주소 테이블을 이용하는 예는 도 10을 참고로 하여 설명한다. 단계(845)에서, 처리기(112)는 카피된 데이터를 버퍼로부터 할당된 물리 주소의 페이지로 이동시킨다. 이어, 처리기(112)는 단계(820)에서 검사할 페이지가 더 있는지를 판단한다. 그런 경우, 과정(800)은 단계(810)로 돌아간다. 그렇지 않으면, 과정(800)은 종료한다.
도 8b는 메모리 셀의 페이지 또는 블록의 그룹을 다운그레이드하고 그 그룹을 최초 레졸루션을 갖는 메모리 셀의 단일 페이지 또는 블록으로 논리적으로 취급하는 도 8a와 유사한 과정을 나타낸다. 도 8b에서, 과정(860) 역시 저장된 에러 정보를 판독하고(805), 페이지를 선택하며(810), 페이지에 관련된 에러 카운트가 임계값을 초과하는지를 판단한다(815). 페이지에 관련된 에러 카운트가 임계값을 초과하는 경우, 페이지에 저장된 데이터를 버퍼에 카피하고(825), 페이지에 관련된 셀 레졸루션 레지스터를 업데이트하여 페이지의 레졸루션을 감소시킨다(830). 하지만, 도 8b에 도시한 실시예에서, 처리기는 또한 셀 레졸루션이 감소된 다른 데이터 페이지를 선택하고 블록 관리 코드 및/또는 논리 어드레싱 코드를 업데이트하여 두 페이지를 함께 한 쌍으로 만든다. 셀 레졸루션이 감소된 두 페이지는 처음에 높은 레졸루션을 갖는 단일 페이지로서 논리적으로 취급된다. 이러한 과정은 두 페이지 이상의 메모리 셀을 함께 그룹화할 수 있다.
일부 실시예에서, 이러한 과정은 전체 메모리 셀의 블록과 쌍을 다운그레이드하거나 이와는 달리 이들을 연관시킬 수 있다. 일부 실시예에서, 쌍으로 된 각 페이지는 동일하게 하향 조정된 셀 레졸루션을 가지며 동일한 개수의 메모리 셀을 포함한다. 예를 들어, 8비트 데이터를 저장하는 각 메모리 셀을 4비트 데이터를 저장하는 메모리 셀로 다운그레이드된 메모리 셀의 페이지는 4비트 데이터를 저장하는 각 메모리 셀을 구비한 다른 메모리 셀의 페이지와 그룹화된다. 이러한 두 메모리 셀 페이지를 결합한 것은 메모리 셀 당 8비트 데이터를 저장하는 단일 페이지(또는 단일 블록)로서 플래시 디스크 제어기에 의하여 논리적으로 취급된다. 이러한 쌍을 이룬 메모리 셀 페이지는 동일 블록 상에 위치할 필요는 없으며 상이한 플래시 메모리 다이에 위치할 수 있다. 이어, 과정(860)은 검사할 메모리 페이지가 더 있는지 판단하는 단계(830)를 행하고 도 8a에서 설명한 것과 동일한 방식으로 처리한다.
도 9는 관리 과정(900)을 나타내는 흐름도이다. 관리 과정(900)에서의 한 가지 가능한 기능은 상대적으로 낮은 레졸루션(도 7b 참조)으로 플래시 메모리에 저장된 데이터를 상대적으로 높은 레졸루션으로 재기입하는 것이다. 관리 과정은 예를 들어, 호스트 장치의 배터리 수명을 최대화함과 동시에 데이터 저장 용량을 최대화할 수 있다. 일부 실시예에서, 관리 과정(900)은 주기적으로 예정된 관리 동작의 일부로서 처리기에 의하여 트리거될 수 있다. 일부 실시예에서, 관리 과정(900)은 호스트 장치가 AC 전원을 공급받는다는 호스트 장치로부터의 신호에 의하여 트리거될 수 있다. 다른 실시예에서, 예를 들어, 아이들(idle) 처리기(112)와 같이 다른 조건이 호스트 장치나 처리기(112)로 하여금 관리 과정을 트리거하게 할 수 있다.
과정(900)은 MCP(100)가 소정 전원 조건에서의 동작 여부를 판단하는 단계(905)에서 시작된다. 일부 실시예에서, 이러한 전원 조건은 호스트 장치가 AC 전원을 수신함으로써 충족된다. 일부 실시예에서, 이러한 전원 조건은 호스트 장치 배터리가 소정량의 전하를 충족시킴으로써, 예를 들어, 배터리가 완전히 충전됨으로써 충족된다. 완전 충전된 배터리는 호스트 장치가 AC 전원을 공급받는다는 것을 나타낼 수 있다. MCP(100)가 소정 전원 조건을 충족하지 못하는 경우, 과정(900)은 종료한다.
이어, 단계(910)에서, 처리기(112)는 처리기(112)가 관리 과정(900)을 완전히 수행하기에 충분한 대역폭을 갖는지 판단할 수 있다. 일부 실시예에서, 관리 동작은 최소의 대역폭을 요하는 배경 과정으로서만 행해진다. 일부 실시예에서, 관리 동작은 아이들 처리기(112)를 필요로 한다. 다른 실시예에서, 과정(900)은 처리기(112)가 충분한 대역폭을 갖는지 판단하지 않는다. 일부 실시예에서, 대역폭 요건은 관리 동작의 필요에 따라 변경되며, 이는 성공적인 관리 과정 사이의 시간 또는 플래시 메모리 상의 이용 가능한 공간의 양에 의하여 측정될 수 있다. 처리기(112)가 충분한 대역폭을 갖지 않는 경우, 과정(900)은 종료한다.
소정 전원 조건이 충족되고 처리기(112)가 충분한 대역폭을 갖는 경우, 과정(900)은 단계(915)에서 저장된 관리 로그를 판독할 수 있다. 일부 실시예에서, 저장된 관리 로그는 NVM(154)에서 저장된다. 일부 실시예에서, 저장된 관리 로그는 가능한 관리 동작의 우선 순위를 나타낸다. 일부 실시예에서, 저장된 관리 로그는 어느 관리 단계(예를 들어, 단계 920, 925, 930 및 935)가 단순화된 동작으로 수행될 수 있는지를 판단하는데 사용된다. 예를 들어, 관리 로그는 특정 메모리 셀 페이지를 다운그레이드하고 동일한 메모리 셀 페이지 상에 데이터를 기입할 필요 모두를 나타낼 수 있다. 다른 실시예에서, 관리 동작은 소정의 순서에 따라, 예를 들어, 고레졸루션으로 전달된 데이터를 재기입하고(단계 920); 셀 레졸루션을 하향 조정하고 예컨대 과정(800, 850)을 수행하여 페이지 그룹을 쌍을 이루게 하고(단계 925); 소정 에러 조건(예컨대, 과정 700을 이용하여)을 충족하는 데이터를 재기입하고(단계 930); 웨어 관리 소프트웨어 코드(157)를 이용하여 액세스 빈도가 최대인 데이터와 최소인 데이터를 맞교환하며(단계 935); 하나의 물리 위치에서 다른 물리 위치로 데이터를 옮긴(예를 들어 과정 1000을 이용하여) 각 관리 동작에 대하여 논리 어드레싱 소프트웨어 코드(763)를 업데이트하며(단계 940); 그리고, 부가 전하를 메모리 셀 페이지에 인가하여 전압 새그의 임계량을 초과하는 데이터 페이지를 리프레시하는(단계 945) 동작으로 이루어질 수 있다. 일부, 전부 또는 추가 동작을 포함하는 다른 순서가 이용될 수도 있다. 일부 실시예에서, 과정(900)은 각 관리 단계(920, 925, 930, 935 또는 945) 사이에서 단계(905) 및/또는 단계(910)를 반복하고 조건(905, 910) 중 하나가 변경되는 경우 종료할 수 있다. 이어, 과정(900)은 종료한다.
도 10은 FDC(106)에서의 논리 어드레싱의 과정(1000)의 한 예를 나타내는 흐름도이다. 예를 들어, FDC(106)는 논리 주소를 갖는 수신 판독 또는 기입 명령을 하나 이상의 물리 페이지에 매핑시킬 수 있다. 일부 실시예에서, FDC(106)는 논리 페이지를 하나 이상의 가변 물리 페이지에 동적으로 매핑시킨다. 예를 들어, FDC(106)는 매핑을 변경하여 물리 메모리 페이지의 부담을 균등화시킨다. 일부 실시예에서, 논리 페이지와 물리 페이지 사이의 매핑을 논리 주소 테이블에 저장할 수 있다. 일부 실시예에서, 과정(1000)은 처리기(112)가 논리 어드레싱 코드(163)를 실행 중일 때 처리기(112)에 의하여 행해질 수 있다. 과정(1000)은 FDC(106)가 메모리 페이지에 액세스할(예컨대, 판독, 기입 또는 소거) 호스트 장치로부터의 명령을 수신하는 경우에 시작된다. 이어, 단계(1005)에서, 처리기(112)는 논리 페이지 주소를 수신하여 플래시 메모리의 페이지에 액세스한다.
다음, 처리기(112)는 단계(1010)에서 수신된 논리 주소에 관련된 하나 이상의 물리 페이지 주소를 결정한다. 한 예로, 수신된 논리 페이지 주소는 오직 하나의 물리 페이지 주소에 관련될 수 있다. 다른 예로, 수신된 논리 페이지 주소는, 물리 페이지가 정상보다 낮은 셀 레졸루션을 갖거나, 물리 페이지가 플래시 메모리에서 인접하지 않거나 상이한 블록 또는 상이한 다이에 위치하기 때문에 둘 이상의 물리 페이지와 관련될 수 있다.
이어, 처리기(112)는 단계(1015)에서 결정된 물리 페이지 주소 중 첫 번째를 선택한다. 단계(1020)에서, 처리기(112)는 선택된 물리 주소에서의 페이지 데이터를 판독한다. 이어, 처리기(112)는 단계(1025)에서 페이지 데이터를 호스트 출력 버퍼에 저장한다. 단계(1030)에서, 처리기(112)는 다른 메모리 페이지에 액세스할 필요가 있는지 판단한다. 예를 들어, 논리 페이지 주소와 관련된 하나 이상의 물리 페이지 주소가 있는 경우, 처리기(112)는 다른 메모리 페이지에 액세스할 수 있다. 단계(1030)에서 처리기(112)가 다른 메모리 페이지에 액세스할 필요가 있는 경우, 처리기는 다음으로 결정된 물리 페이지 주소를 선택하고 과정은 단계(1020)로 돌아간다. 그렇지 않으면, 과정(1000)은 종료한다.
도 11은 복수의 NAND 플래시 메모리 다이(103)와 FDC(106)를 포함하는 예시적인 시스템(1100)을 나타낸다. FDC(106)는 아날로그 인터페이스(115)에서의 멀티플렉서(MUX)(1105)와 전하 펌프(1110)를 포함한다. NAND 플래시 메모리 다이(103)를 이용하여 시스템(1100)을 도시하였지만, 시스템(1100)에 이용되는 기술의 일부는 NOR 플래시 메모리 다이 또는 NAND와 NOR 다이의 조합에도 적용할 수 있다. 시스템(1100)은 개별 IC를 이용하여 구현되거나, 부분적 또는 전체적으로 단일 패키지로 집적될 수 있다.
FDC(106)는 아날로그 인터페이스(115)를 통하여 NAND 플래시 메모리 다이(103)로부터 아날로그 데이터를 수신한다. 이 예에서, MUX(1105)는 복수의 아날로그 입력을 수신한다. 일부 실시예에서, MUX(1105)는 복수의 플래시 메모리 다이(103)로부터 복수의 아날로그 입력을 수신한다. 아날로그 인터페이스(115)는 MUX(1105)를 제어하여 하나의 아날로그 입력을 선택하여 ADC(142)로 전송되도록 할 수 있다. 예를 들어, 아날로그 인터페이스(115)는 수신된 판독 명령에 기초하여 MUX(1105)를 제어할 수 있다. 기입 동작 동안, FDC(106)는 전하 펌프(1110)를 이용하여 NAND 플래시 메모리 다이(103) 중 하나의 메모리 셀에 전하를 공급한다. 일부 실시예에서, 전하 펌프(1110)는 복수의 플래시 메모리 다이(103)의 메모리 셀에 전하를 공급할 수 있다. 예를 들어, FDC(106)는 지정된 메모리 다이를 선택하는 제어 신호를 보내어 전하 펌프(1110)로부터 전하를 받을 수 있다. 이어, 전하 펌프(1110)가 전하를 공급하면, 선택된 메모리 다이는 전하를 받는다.
복수의 다이(103)가 ADC(1105)와 전하 펌프(1110)를 공유하면 메모리 다이(103)의 저장 용량을 증가시킬 수 있다. 또한, ADC(142)와 전하 펌프(1110)가 없이 낮은 비용으로 플래시 메모리 다이(103)를 제조할 수 있다. 일부 실시예에서, 전하 펌프(1110)는 FDC(106)와 함께 다이에 집적되거나 상이한 다이 또는 인쇄 회로 기판과 같은 상이한 기판에 별개로 실장될 수 있다.
복수의 플래시 메모리 다이(103)와 함께 사용되는 ADC(1105)와 전하 펌프(1110)의 사용을 용이하게 하기 위하여, 일부 플래시 메모리 다이(103)는 외부의 공급 노드(external supply node)로부터 프로그래밍 전하(programming charge)를 수신하는 입력을 포함할 수 있다. 이때, 플래시 메모리 다이(103)는 공급된 프로그래밍 전하를 변경하거나 조절하기 위한 추가적인 어떤 회로를 필요로 하지 않는다. 플래시 메모리 다이(103)는 아날로그 전압 신호를 플래시 디스크 제어기(106)로 보내는 출력을 또한 포함할 수 있다.
일부 실시예에서, FDC(106)는 전하 펌프 인터리빙 방법(charge pump interleaving method)을 이용하여 데이터를 메모리 다이(103)에 기입할 수 있다.
도 12는 NAND 플래시 메모리 다이(103)에 프로그래밍 및 논리 레벨 전원을 별개로 제공하는 구조의 예시적인 시스템(1200)을 나타낸다. 시스템(1200)은 전하 펌프(1110)와 전원 공급부(1210)로부터 전원을 수신하는 저전압 강하 레귤레이터(low dropout regulator, LDO)(1205)를 포함한다.
도시한 바와 같이, NAND 플래시 메모리 다이(103)는 두 개의 전원 입력, 즉, 전하 펌프 전압(Vcp)용 전원 입력과 논리 전압(Vlogic)용 전원 입력을 포함한다. 일부 실시예에서, Vcp는 Vlogic 보다 실질적으로 높을 수 있다. 예를 들어, Vcp는 약 12-20V 또는 12-30V이고, Vlogic는 약 1-3V일 수 있다. 일부 실시예에서, Vcp에 대한 조절과 전류 요건은 Vlogic과 실질적으로 다를 수 있다.
한 예로, NAND 플래시 메모리 다이(103)는 소비 전력이나 스위칭 시간 등을 최소화하는 낮은 논리 레벨에서 세밀하게 조정되는(예를 들어, 0.5%, 1.0%, 5%) 전압 허용 범위를 갖는 Vlogic을 필요로 할 수 있다. 또한, 논리 전압은 저전압 레벨에서 고주파수 바이패스 커패시턴스(capacitance)를 필요로 할 수 있다. 이와는 달리, 전하 펌프 공급 조절 요건은 실질적으로 저주파수, 고전압 커패시턴스를 필요로 하면서 약 5%와 10% 사이일 수 있다.
도 12의 시스템을 촉진하기 위하여, 플래시 메모리 다이(103)는 각 플래시 메모리 셀을 선택적으로 프로그래밍하기 위한 전원을 수신하는 제1 인터페이스와, 기입 동작 중에 제1 입력 인터페이스로부터 전원을 공급받은 플래시 메모리 셀을 선택하는 논리 레벨 회로에 인가되는 전원을 수신하는 제2 인터페이스를 포함할 수 있다. 플래시 디스크 제어기(106)는 전원을 프로그래밍 전압에서 제1 인터페이스에 공급하기 위한 제1 전원 및 논리 레벨 전원을 제2 인터페이스에 공급하기 위한 제2 전원을 포함할 수 있다. 제1 및 제2 전원은 플래시 메모리 다이(103)의 외부에 위치할 수 있다.
과정 및 기술에 대한 여러 실시예를 설명하였지만, 다른 실시예에서는 상이한 순서 또는 변형된 배열로 단계를 수행하여 동일한 주요 기능을 달성할 수 있다. 또한, 여러 과정에서의 동작에 대하여 특정 장치 또는 구성요소에 의하여 수행되는 것으로 설명하였지만, 그러한 장치나 구성요소는 단지 예일뿐이며 동작은 일부 실시예에서 대체 장치나 구성요소를 이용하여 행해질 수 있다.
일부 예에서, NAND 플래시 메모리 다이(103)는 특정 비트 수의 레졸루션, 예를 들어, 6, 7, 10 및 12비트의 레졸루션을 가질 수 있다. 여러 실시예는 NAND 플래시 메모리, NOR 플래시 메모리 또는 이들 또는 다른 비휘발성 메모리의 조합을 포함하는 플래시 메모리에 ECC 동작을 행하는데 이용할 수 있다. 한 종류 이상의 플래시 메모리를 쌓고/거나 MCP(100)에 서로 인접하게 장착될 수 있다. 당업자는 여기서 설명한 기술의 일부 예들이 NAND 플래시 기술과의 특정 이점에 적용됨을 인식할 것이고, 여기서 설명한 일부 방법은 NAND 및/또는 NOR 플래시와 같은 비휘발성 메모리에 일반적으로 적용 가능하다.
휴대용일 수 있는 시스템의 한 예에 대하여 상기 도면을 참고로 하여 설명하였지만, 다른 실시예는 데스크탑 및 망으로 연결된 설비와 같은 기타 처리 애플리케이션에 적용될 수 있다.
한 구조의 특별한 특징에 대하여 설명하였지만, 다른 특징을 포함하여 성능을 개선시킬 수 있다. 예를 들어, 캐싱(caching)(예를 들어, L1, L2 등) 기술은 FDC(106)에 이용될 수 있다. 랜덤 액세스 메모리를 포함하여, 예를 들어, 스크래치 패드 메모리(scratch pad memory)를 제공하고/하거나 런타임 동작 중에 사용하기 위한 플래시 메모리에 저장되어 있는 실행 가능한 코드 또는 파라미터 정보를 로딩할 수 있다. 다른 하드웨어 및 소프트웨어를 마련하여, 하나 이사의 프로토콜을 이용하는 네트워크 또는 통신, 무선(예컨대, 적외선) 통신, 저장된 동작 에너지 및 전원 공급(예컨대, 배터리), 스위칭 및/또는 선형 전원 공급 회로, 소프트웨어 관리(예컨대, 셀프 테스트, 업그레이드 등) 등과 같은 동작을 행할 수 있다. 하나 이상의 통신 인터페이스를 마련하여 데이터 저장 및 관련 동작을 지원할 수 있다.
일부 실시예에서, 하나의 방법 또는 조합을 이용하여 데이터 완전성을 개선시킬 수 있다. 예를 들어, 임계값을 조정하고/하거나 적어도 한 번 셀을 재기입함으로써 셀 전압 에러를 어드레싱할 수 있다. 셀 재기입은 이상적인 셀 전압과의 편차 및/또는 배경 활동으로서 수행될 수 있다. 예를 들어, 멀티 레벨 셀 전압은 페이지에서 하나 이상의 손실 셀에서의 전압을 리프레시하도록 재기입될 수 있다. 시간이 지나면서 전압이 떨어지는 경향이 있는 셀에 있어서, 그러한 셀이 충전되는 전압 레벨은 시간에 따른 그 셀에서의 전하의 예상 손실을 보상하도록 각 셀의 상한값 근처의 범위로 증가될 수 있다. 증가된 전압 레벨은 처음에는 원하는 범위의 상한값 근처 또는 이상일 수 있으며, 이는 범위 사이의 회색 영역일 수 있다. 추정된 또는 결정된 손실율에 기초하여, 데이터는 원하는 범위 내에 셀 전압을 실질적으로 유지하기에 충분히 자주 재기입될 수 있다. 유사하게 상향 드리프트가 특징인 셀을 보상할 수 있다. 이러한 재기입 과정은 예를 들어, 자원이 이용 가능할 때 실행되는 낮은 순위의 배경 과정으로서 행해질 수 있다. 높은 값 데이터로 확인되는 데이터의 경우, 재기입은 원하는 범위 내에 셀 전압을 유지하기에 충분히 자주 행해지도록 정해질 수 있으며, 빈도는 예상 전압 드리프트 비율과 각 비트 레벨에 관련된 전압 범위의 크기에 기초한다. 일부 실시예에서, 재기입은 휴대용 장치가 전기 유틸리티 그리드(electric utility grid)로부터 유래된 전원과 같이, 외부 전원에 연결되어 있는 경우에는 더 자주 행해지도록 구성될 수 있다. 재기입 동작은 그러한 전원과의 연결에 응답하여 수행될 수 있다. 또한, 재기입은 예를 들어, 낮은 배터리 조건 동안 전원 보존 모드에서 또는 단기적으로 또는 비임계 데이터(non-critical data)(예를 들어, 스트리밍 오디오/비디오)를 저장하는 경우와 같은 소정 조건하에서는 덜 자주 수행될 수 있다.
일부 시스템은 본 발명의 실시예에 사용될 수 있는 컴퓨터 시스템으로서 구현될 수 있다. 예를 들어, 여러 실시예는 디지털 및/또는 아날로그 회로, 컴퓨터 하드웨어, 펌웨어, 소프트웨어 또는 이들의 조합을 포함할 수 있다. 장치는 예를 들어, 기계 판독 가능 저장 장치 또는 전파 신호(propagated signal)의 정보 반송자(carrier)에 구체적으로 실시된 컴퓨터 프로그램 제품에서 구현되어 프로그램 가능한 처리기에 의하여 실행될 수 있고, 방법은 입력 데이터를 연산하고 출력을 생성함으로써 본 발명의 기능을 수행하는 명령어 프로그램을 프로그램 가능한 처리기가 실행함으로써 수행될 수 있다. 본 발명은 데이터 저장 시스템, 적어도 하나의 입력 장치 및/또는 적어도 하나의 입력 장치로부터 데이터를 수신하고 데이터 및 명령어를 송신하도록 연결된 적어도 하나의 프로그램 가능한 처리기를 포함하는 프로그램 가능한 시스템 상에서 실행 가능한 하나 이상의 컴퓨터 프로그램에서 유리하게 구현될 수 있다. 컴퓨터 프로그램은 소정 활동을 행하거나 소정 결과를 야기하는 컴퓨터에서 직간접으로 사용될 수 있는 명령어 세트이다. 컴퓨터 프로그램은 컴파일어 또는 해석 언어를 포함하는 어느 형태의 프로그래밍 언어로 기입될 수 있고, 독립형 프로그램 또는 모듈로서 콤포넌트(component), 서브루틴(subroutine) 또는 컴퓨팅 환경에서 사용하기에 적합한 다른 유닛(unit)을 포함하는 임의의 형태에 배치될 수 있다.
명령어 프로그램을 실행하는 적절한 처리기는, 예를 들어 범용 및 전용 마이크로 처리기를 포함하며, 이는 임의의 종류의 컴퓨터의 단일 처리기 또는 복수의 처리기 중 하나를 포함할 수 있다. 일반적으로, 처리기는 ROM 또는 RAM 또는 모두로부터 명령어 및 데이터를 수신한다. 컴퓨터의 필수 요소는 명령어를 수행하는 처리기와 명령어 및 데이터를 저장하는 하나 이상의 메모리이다. 일반적으로, 컴퓨터는 데이터 파일을 저장하는 하나 이상의 대용량 저장 장치를 포함하거나 이와 통신하도록 동작하게 연결되어 있고, 이러한 장치는 내부 하드 디스크와 제거 가능 디스크와 같은 자기 디스크, 광자기 디스크 및 광디스크를 포함한다. 컴퓨터 프로그램 명령어 및 데이터를 구체적인 실시를 위해 적합한 저장 장치는 예를 들어, EPROM, EEPROM 및 플래시 메모리 장치와 같은 반도체 메모리 장치를 포함하는 모든 형태의 비휘발성 메모리, 내부 하드 디스크와 제거 가능 디스크와 같은 자기 디스크, 광자기 디스크, 그리고 CD-ROM 및 DVD-ROM 디스크를 포함한다. 처리기 및 메모리는 ASIC(application specific integrated circuit)에 의하여 보완되거나 이에 포함될 수 있다.
일부 실시예에서, 각 시스템(100)은 동일하거나 유사한 정보로 프로그래밍되고/되거나 휘발성 및/또는 비휘발성 메모리에 저장된 실질적으로 동일한 정보로 시작될 수 있다. 예를 들어, 하나의 데이터 인터페이스는 데스크탑 컴퓨터 또는 서버와 같은 적절한 호스트 장치에 연결되는 경우 자동 구성, 자동 다운로드 및/또는 자동 업데이트를 수행하도록 구성될 수 있다.
일부 실시예에서, 하나 이상의 사용자 인터페이스 특징은 특정 기능을 수행하도록 커스텀(custom) 구성될 수 있다. 본 발명은 그래픽 사용자 인터페이스 및/또는 인터넷 브라우저를 포함하는 컴퓨터 시스템에서 구현될 수 있다. 사용자와의 상호 작용을 제공하기 위하여, 일부 실시예는 사용자에게 정보를 표시하는 CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터와 같은 표시 장치, 키보드와, 사용자가 컴퓨터에 입력을 제공할 수 있는 마우스 또는 트랙볼(trackball)과 같은 포인팅 장치를 구비한 컴퓨터 상에서 구현될 수 있다.
다양한 실시예에서, 시스템(100)은 적절한 방법, 장비 및 기술을 이용하여 통신할 수 있다. 예를 들어, 시스템(100)은 전용 물리 회선[예컨대, 광섬유 링크, 점대점 무선, 데이지 체인(daisy-chain)]을 통하여 소스에서 수신기로 직접 메시지를 전송하는 점대점 통신을 이용하여 호환 장치(예컨대, 시스템(100)과 데이터를 송신 및/또는 수신 가능한 장치]와 통신할 수 있다. 시스템의 구성요소는 통신 네트워크 상의 패킷 기반 메시지를 포함하여, 아날로그 또는 디지털 데이터 통신의 어떤 형태나 매체에 의하여 정보를 교환할 수 있다. 통신 네트워크의 예로는, LAN(local area network), WAN(wide area network), MAN(metropolitan are network), 무선 및/또는 광 네트워크, 컴퓨터 및 인터넷을 형성하는 네트워크가 있다. 다른 실시예는 예를 들어, 전방향(omni-directional) 무선 주파수(RF) 신호를 이용하여 통신 네트워크에 의하여 함께 연결되어 있는 모든 또는 실질적으로 모든 장치로 방송에 의하여 메시지를 전송할 수 있다. 또 다른 실시예는 집속 소자(focusing optics)와 함께 선택적으로 사용될 수 있는 방향성[즉, 내로우 빔(narrow beam)] 안테나 또는 적외선 신호를 이용하여 전송되는 RF 신호와 같이, 높은 직접성(high directivity)이 특징인 메시지를 전송할 수 있다. 다른 실시예는 예를 들지만 이에 한정되지 않는 USB 2.0, Firewire, ATA/IDE, RS-232, RS-422, RS-485, 802.11 a/b/g, Wi-Fi, Ethernet, IrDA, FDDI(fiber distributed data interface), 토큰 링 네트워크(token-ring network), 또는 주파수, 시간 또는 코드 분할에 기초한 멀티플렉싱 기술과 같은 적절한 인터페이스 및 프로토콜을 이용하여 가능하다. 일부 실시예는 데이터 완전성을 위한 에러 검사 및 정정(ECC)과 같은 특징 또는 암호화(예를 들어, WEP)과 패스워드 보호와 같은 보안 대책을 포함시킬 수 있다.
본 발명의 수 많은 실시예들을 설명하였다. 그럼에도 불구하고, 본 발명의 사상 및 범위를 벗어나지 않는 여러 변형예들이 이루어질 수 있음을 이해할 것이다. 예를 들어, 기재된 기술의 단계가 상이한 순서로 행해지는 경우, 기재된 시스템의 구성요소가 상이한 방식으로 결합되는 경우, 또는 그 구성요소가 다른 구성요소에 의하여 대체되거나 보완되는 경우에 유리한 결과를 얻을 수 있다. 기능 및 과정(알고리즘 포함)은 하드웨어, 소프트웨어 또는 이들의 조합에서 수행될 수 있고, 일부 실시예는 전술한 것과는 다른 모듈 또는 하드웨어 상에서 수행될 수 있다.

Claims (15)

  1. 메모리 장치로부터 데이터를 검색하는 방법으로서,
    판독 동작 동안 메모리 셀로부터 전압 레벨을 검출하는 단계 - 상기 전압 레벨은 이진 표현(binary representation)을 갖는 데이터 값에 대응하고, 상기 데이터 값은 제1 레졸루션을 가짐 - ;
    현재 온도, 공급 전압, 상기 메모리 셀에서 수행된 판독 동작의 횟수 및 상기 메모리 셀에서 수행된 기입 동작의 횟수 중 하나 이상에 기초하여 매핑 함수를 조정하는 단계 - 상기 매핑 함수는 아날로그 전압들을, 상기 아날로그 전압들의 디지털 표현들로 매핑함 - ;
    조정된 상기 매핑 함수를 이용해서, 상기 전압 레벨을, 상기 전압 레벨의 디지털 표현으로 변환하는 단계 - 상기 디지털 표현은 상기 제1 레졸루션보다 큰 제2 레졸루션을 가짐 - ; 및
    상기 아날로그 전압 신호의 상기 디지털 표현으로부터 상기 데이터 값을 결정하는 단계 - 각 데이터 값은, 가능한 데이터 값들의 세트 중에서 선택되고, 각 가능한 데이터 값은, 디지털 값들의 범위에 대응하며, 상기 결정하는 단계는, 상기 디지털 표현을 디지털 값들의 범위들 중 적어도 하나에 비교하여 상기 데이터 값을 결정하는 것임 - 를 포함하는,
    데이터 검색 방법.
  2. 제1항에 있어서,
    상기 전압 레벨을 상기 디지털 표현으로 변환하는 단계 이전에, 상기 전압 레벨을 조절(conditioning)하는 단계를 더 포함하는, 데이터 검색 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 데이터 값을 결정하는 단계 이전에 상기 전압 레벨의 상기 디지털 표현을 조정하는 단계를 더 포함하는, 데이터 검색 방법.
  4. 제3항에 있어서,
    상기 조정하는 단계는, 기준 셀 전압, 상기 메모리 셀의 판독 사용, 상기 메모리 셀의 기입 사용, 온도, 제품 연령, 공급 전압 및 검출된 에러 레벨들로 구성된 그룹에서 선택된 적어도 하나의 파라미터에 기초하여 상기 디지털 표현을 조정하는 것인, 데이터 검색 방법.
  5. 프로세서에 의해 실행될 경우, 동작들이 수행되도록 하는 컴퓨터 판독 가능 명령어들을 포함하는 컴퓨터 판독 가능 저장 매체로서,
    상기 동작들은,
    판독 동작 동안 메모리 셀로부터 아날로그 전압 신호를 검출하는 동작 - 상기 아날로그 전압 신호는 이진 표현을 갖는 데이터 값에 대응하고, 상기 데이터 값은 제1 레졸루션을 가짐 - ;
    현재 온도, 공급 전압, 상기 메모리 셀에서 수행된 판독 동작의 횟수, 및 상기 메모리 셀에서 수행된 기입 동작의 횟수 중 하나 이상에 기초하여 매핑 함수를 조정하는 동작 - 상기 매핑 함수는 아날로그 전압들을, 상기 아날로그 전압들의 디지털 표현들로 매핑함 - ;
    조정된 상기 매핑 함수를 이용해서, 상기 아날로그 전압 신호를, 상기 아날로그 전압 신호의 디지털 표현으로 변환하는 동작 - 상기 디지털 표현은 상기 제1 레졸루션보다 큰 제2 레졸루션을 가짐 - ; 및
    상기 디지털 표현으로부터 상기 데이터 값을 결정하는 동작 - 각 데이터 값은, 가능한 데이터 값들의 세트 중에서 선택되고, 각 가능한 데이터 값은, 디지털 값들의 범위에 대응하며, 상기 결정하는 동작은, 상기 아날로그 전압 신호의 상기 디지털 표현을 디지털 값들의 범위들 중 적어도 하나에 비교하는 것을 포함함 - 를 포함하는,
    컴퓨터 판독 가능 저장 매체.
  6. 제5항에 있어서,
    상기 동작들은,
    상기 디지털 표현의 상기 디지털 값들의 범위들 중 적어도 하나에 대한 비교에 기초하여, 상기 디지털 값들의 범위들 중 적어도 하나를 조정하는 동작을 더 포함하는, 컴퓨터 판독 가능 저장 매체.
  7. 제5항 또는 제6항에 있어서,
    상기 동작들은,
    상기 아날로그 전압 신호를 디지털 표현으로 변환하는 동작 이전에 상기 아날로그 전압 신호를 조절하는 동작을 더 포함하는, 컴퓨터 판독 가능 저장 매체.
  8. 제5항 또는 제6항에 있어서,
    상기 동작들은,
    상기 데이터 값을 결정하는 동작 이전에, 상기 아날로그 전압 신호의 상기 디지털 표현을 조정하는 동작을 더 포함하는, 컴퓨터 판독 가능 저장 매체.
  9. 제8항에 있어서,
    상기 조정하는 동작은, 기준 셀 전압, 상기 메모리 셀의 판독 사용, 상기 메모리 셀의 기입 사용, 온도, 제품 연령, 공급 전압 및 검출된 에러 레벨들로 구성된 그룹에서 선택된 적어도 하나의 파라미터에 기초하여 상기 디지털 표현을 조정하는, 컴퓨터 판독 가능 저장 매체.
  10. 제8항에 있어서,
    각각의 데이터 값은 가능한 데이터 값들의 세트에서 선택되고, 각각의 가능한 데이터 값은 대응하는 디지털 값들의 범위 내에서의 대응하는 평균 디지털 값을 갖고, 상기 조정하는 동작은, 주지의 데이터 값을 갖는 또 다른 메모리 셀의 전압 판독에 응답하여 상기 디지털 표현을 조정하는, 컴퓨터 판독 가능 저장 매체.
  11. 디지털 정보를 저장하기 위한 시스템으로서,
    복수의 메모리 셀들 - 각 메모리 셀은 전압 레벨에 의해 표현되는 데이터 값을 저장하고, 각 데이터 값은 제1 비트 수를 가짐 - ;
    상기 전압 레벨을 상기 전압 레벨의 디지털 표현으로 변환하기 위한 아날로그-디지털 변환기 - 상기 디지털 표현은 상기 제1 비트 수보다 많은 제2 비트 수를 가짐 - ; 및
    휴리스틱스에 기초하여, 상기 아날로그 전압의 상기 디지털 표현을 조정하기 위한 프로세서를 포함하고,
    상기 아날로그-디지털 변환기는, 현재 온도, 공급 전압, 상기 메모리 셀에서 수행된 판독 동작의 횟수, 및 상기 메모리 셀에서 수행된 기입 동작의 횟수 중 하나 이상에 기초하여 매핑 함수를 조정 - 상기 매핑 함수는 아날로그 전압들을, 상기 아날로그 전압들의 디지털 표현들로 매핑함 - 하고, 조정된 상기 매핑 함수를 이용해서, 상기 전압 레벨을, 상기 전압 레벨의 디지털 표현으로 변환하는 것을 특징으로 하는, 디지털 정보 저장 시스템.
  12. 제11항에 있어서,
    상기 제1 비트 수는 4보다 큰, 디지털 정보 저장 시스템.
  13. 제11항 또는 제12항에 있어서,
    상기 휴리스틱스는, 기준 셀 전압, 상기 메모리 셀의 판독 사용, 상기 메모리 셀의 기입 사용, 온도, 제품 연령, 공급 전압 및 검출된 에러 레벨들 및 이들의 조합으로 구성된 그룹에서 선택되는, 디지털 정보 저장 시스템.
  14. 제11항 또는 제12항에 있어서,
    각각의 데이터 값은 가능한 데이터 값들의 세트 중에서 선택되고, 각각의 가능한 데이터 값은 대응하는 디지털 값들의 범위를 가지며, 상기 프로세서는, 상기 아날로그 전압의, 조정된 상기 디지털 표현을 포함하는, 상기 대응하는 디지털 값들의 범위를 갖는 상기 가능한 데이터 값을 선택함으로써 상기 데이터 값을 결정하는, 디지털 정보 저장 시스템.
  15. 제11항 또는 제12항에 있어서,
    상기 복수의 메모리 셀은 NAND 플래시 메모리 셀들을 포함하는, 디지털 정보 저장 시스템.


KR1020127021506A 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작 KR101217438B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US80035706P 2006-05-15 2006-05-15
US60/800,357 2006-05-15
US11/694,739 US7639542B2 (en) 2006-05-15 2007-03-30 Maintenance operations for multi-level data storage cells
US11/694,739 2007-03-30
PCT/US2007/068851 WO2007134277A2 (en) 2006-05-15 2007-05-14 Maintenance operations for multi-level data storage cells

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020117010646A Division KR101193696B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작

Publications (2)

Publication Number Publication Date
KR20120098963A true KR20120098963A (ko) 2012-09-05
KR101217438B1 KR101217438B1 (ko) 2013-01-02

Family

ID=38684942

Family Applications (16)

Application Number Title Priority Date Filing Date
KR1020127021504A KR101206714B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020127021505A KR101206630B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020127021506A KR101217438B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117028408A KR101155751B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117028405A KR101184554B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117010647A KR101116512B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020127021508A KR101217416B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117010651A KR101116554B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020087030400A KR101173721B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117010650A KR101151597B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117010645A KR101121493B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117010652A KR101133897B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117010646A KR101193696B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020127021507A KR101283145B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117010649A KR101116468B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117028407A KR101184557B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020127021504A KR101206714B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020127021505A KR101206630B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작

Family Applications After (13)

Application Number Title Priority Date Filing Date
KR1020117028408A KR101155751B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117028405A KR101184554B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117010647A KR101116512B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020127021508A KR101217416B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117010651A KR101116554B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020087030400A KR101173721B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117010650A KR101151597B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117010645A KR101121493B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117010652A KR101133897B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117010646A KR101193696B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020127021507A KR101283145B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117010649A KR101116468B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작
KR1020117028407A KR101184557B1 (ko) 2006-05-15 2007-05-14 멀티레벨 데이터 저장 셀용 관리 동작

Country Status (10)

Country Link
US (3) US7639542B2 (ko)
EP (10) EP2022058B1 (ko)
JP (1) JP5358431B2 (ko)
KR (16) KR101206714B1 (ko)
CN (3) CN102768853B (ko)
AT (2) ATE475183T1 (ko)
DE (1) DE602007007938D1 (ko)
ES (2) ES2383588T3 (ko)
HK (3) HK1127155A1 (ko)
WO (1) WO2007134277A2 (ko)

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100877609B1 (ko) * 2007-01-29 2009-01-09 삼성전자주식회사 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법
US7460398B1 (en) * 2007-06-19 2008-12-02 Micron Technology, Inc. Programming a memory with varying bits per cell
US7800951B2 (en) * 2007-08-20 2010-09-21 Marvell World Trade Ltd. Threshold voltage digitizer for array of programmable threshold transistors
US7948802B2 (en) 2007-12-04 2011-05-24 Micron Technology, Inc. Sensing memory cells
US8938655B2 (en) * 2007-12-20 2015-01-20 Spansion Llc Extending flash memory data retension via rewrite refresh
CN101911207B (zh) * 2008-01-16 2014-05-07 富士通株式会社 半导体存储装置、控制装置、控制方法
KR101378365B1 (ko) * 2008-03-12 2014-03-28 삼성전자주식회사 하이브리드 메모리 데이터 검출 장치 및 방법
JP5057340B2 (ja) * 2008-03-31 2012-10-24 株式会社ジャパンディスプレイウェスト 光検出装置、電気光学装置及び電子機器
US7768832B2 (en) * 2008-04-07 2010-08-03 Micron Technology, Inc. Analog read and write paths in a solid state memory device
KR101407361B1 (ko) * 2008-04-14 2014-06-13 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US20090292971A1 (en) * 2008-05-21 2009-11-26 Chun Fung Man Data recovery techniques
US8365039B2 (en) * 2008-05-21 2013-01-29 Intel Corporation Adjustable read reference for non-volatile memory
US8276028B2 (en) * 2008-05-23 2012-09-25 Intel Corporation Using error information from nearby locations to recover uncorrectable data in non-volatile memory
JP2010009548A (ja) * 2008-06-30 2010-01-14 Toshiba Corp 記憶装置、制御装置、記憶システム、および記憶方法
US8406048B2 (en) * 2008-08-08 2013-03-26 Marvell World Trade Ltd. Accessing memory using fractional reference voltages
WO2010047140A1 (ja) * 2008-10-20 2010-04-29 国立大学法人東京大学 集積回路装置
JP5422976B2 (ja) * 2008-11-19 2014-02-19 富士通株式会社 半導体記憶装置
US8645792B2 (en) * 2008-12-16 2014-02-04 Micron Technology, Inc. Memory with guard value dependent error correction
US7653779B1 (en) 2009-02-04 2010-01-26 Gene Fein Memory storage using a look-up table
US8161355B2 (en) * 2009-02-11 2012-04-17 Mosys, Inc. Automatic refresh for improving data retention and endurance characteristics of an embedded non-volatile memory in a standard CMOS logic process
US8259506B1 (en) * 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8732389B2 (en) * 2009-06-23 2014-05-20 Seagate Technology Llc Memory wear control
US8321727B2 (en) * 2009-06-29 2012-11-27 Sandisk Technologies Inc. System and method responsive to a rate of change of a performance parameter of a memory
US8407564B2 (en) * 2009-07-15 2013-03-26 Intel Corporation Prediction and cancellation of systematic noise sources in non-volatile memory
JPWO2011013351A1 (ja) * 2009-07-30 2013-01-07 パナソニック株式会社 アクセス装置およびメモリコントローラ
US8189357B2 (en) * 2009-09-09 2012-05-29 Macronix International Co., Ltd. Memory with multiple reference cells
US9003153B2 (en) * 2010-11-08 2015-04-07 Greenliant Llc Method of storing blocks of data in a plurality of memory devices in a redundant manner, a memory controller and a memory system
US8446786B2 (en) * 2011-01-20 2013-05-21 Micron Technology, Inc. Outputting a particular data quantization from memory
CN102222099A (zh) * 2011-06-21 2011-10-19 中兴通讯股份有限公司 一种数据存储、查找方法及装置
US8713404B2 (en) * 2011-07-01 2014-04-29 Apple Inc. Controller interface providing improved data reliability
KR101824068B1 (ko) * 2011-07-28 2018-03-15 삼성전자주식회사 메모리 컨트롤러 구동방법, 및 메모리 컨트롤러를 포함하는 메모리 시스템, 메모리 카드 및 휴대용 전자장치
KR101882853B1 (ko) * 2011-12-21 2018-08-27 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법
US8884679B2 (en) 2012-05-10 2014-11-11 Sandisk Technologies Inc. Apparatus and method for high voltage switches
US8910000B2 (en) * 2012-05-17 2014-12-09 Micron Technology, Inc. Program-disturb management for phase change memory
US9064575B2 (en) 2012-08-03 2015-06-23 Micron Technology, Inc. Determining whether a memory cell state is in a valley between adjacent data states
US8848453B2 (en) 2012-08-31 2014-09-30 Micron Technology, Inc. Inferring threshold voltage distributions associated with memory cells via interpolation
US9063879B2 (en) 2012-12-13 2015-06-23 Sandisk Technologies Inc. Inspection of non-volatile memory for disturb effects
KR102089613B1 (ko) * 2013-01-02 2020-03-16 삼성전자주식회사 불 휘발성 메모리 장치 및 그것을 포함한 메모리 시스템
US9367391B2 (en) * 2013-03-15 2016-06-14 Micron Technology, Inc. Error correction operations in a memory device
US9367246B2 (en) * 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9324438B2 (en) 2013-08-05 2016-04-26 Jonker Llc Method of operating incrementally programmable non-volatile memory
US9342401B2 (en) 2013-09-16 2016-05-17 Sandisk Technologies Inc. Selective in-situ retouching of data in nonvolatile memory
US9570198B2 (en) * 2014-05-16 2017-02-14 SK Hynix Inc. Read disturb detection
US10552043B2 (en) * 2014-09-09 2020-02-04 Toshiba Memory Corporation Memory system
US11783898B2 (en) 2014-09-18 2023-10-10 Jonker Llc Ephemeral storage elements, circuits, and systems
US10061738B2 (en) 2014-09-30 2018-08-28 Jonker Llc Ephemeral peripheral device
US10115467B2 (en) 2014-09-30 2018-10-30 Jonker Llc One time accessible (OTA) non-volatile memory
US10839086B2 (en) 2014-09-30 2020-11-17 Jonker Llc Method of operating ephemeral peripheral device
US20160225459A1 (en) * 2015-01-30 2016-08-04 Micron Technology, Inc. Apparatuses operable in multiple power modes and methods of operating the same
US9502129B1 (en) 2015-09-10 2016-11-22 Kabushiki Kaisha Toshiba Memory system and method of controlling nonvolatile memory
US11216323B2 (en) 2015-09-16 2022-01-04 Samsung Electronics Co., Ltd. Solid state memory system with low power error correction mechanism and method of operation thereof
US10241701B2 (en) * 2015-09-16 2019-03-26 Samsung Electronics Co., Ltd. Solid state memory system with power management mechanism and method of operation thereof
KR102643916B1 (ko) * 2016-10-18 2024-03-08 삼성전자주식회사 스토리지 장치, 메모리 시스템, 및 그것의 읽기 전압 결정 방법
US9747158B1 (en) * 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
FR3065826B1 (fr) * 2017-04-28 2024-03-15 Patrick Pirim Procede et dispositif associe automatises aptes a memoriser, rappeler et, de maniere non volatile des associations de messages versus labels et vice versa, avec un maximum de vraisemblance
US10354732B2 (en) * 2017-08-30 2019-07-16 Micron Technology, Inc. NAND temperature data management
US20190102105A1 (en) * 2017-09-29 2019-04-04 Burlywood, LLC Variable configuration media controller
US10446246B2 (en) * 2018-03-14 2019-10-15 Silicon Storage Technology, Inc. Method and apparatus for data refresh for analog non-volatile memory in deep learning neural network
KR102532084B1 (ko) * 2018-07-17 2023-05-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
US10573390B1 (en) * 2018-11-30 2020-02-25 Samsung Electronics Co., Ltd. High-density storage system
JP2020113347A (ja) 2019-01-08 2020-07-27 キオクシア株式会社 半導体記憶装置
US10742227B1 (en) 2019-02-25 2020-08-11 Intel Corporation Differential source follower with current steering devices
JP7422149B2 (ja) 2019-07-02 2024-01-25 ローム株式会社 不揮発性記憶装置
TWI722490B (zh) * 2019-07-16 2021-03-21 大陸商合肥兆芯電子有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
CN110706735B (zh) * 2019-09-30 2021-09-14 中国科学院微电子研究所 一种NAND Flash存储器读阈值电压修复方法
CN112906071B (zh) * 2020-12-01 2023-07-14 深圳安捷丽新技术有限公司 一种基于页温动态冷热切换的数据保护方法和装置
US20230290427A1 (en) * 2022-03-14 2023-09-14 Micron Technology, Inc. Host controlled media testing of memory

Family Cites Families (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5570986A (en) 1978-11-24 1980-05-28 Hitachi Ltd Semiconductor intergrated circuit device
DE3341564A1 (de) 1983-11-17 1985-05-30 Messerschmitt-Bölkow-Blohm GmbH, 8012 Ottobrunn Gekruemmtes flaechenbauteil, insbesondere fuer luftfahrzeuge und vorrichtung zu deren herstellung
JPS61137846A (ja) * 1984-11-21 1986-06-25 アトランテイツク・リツチフイールド・カンパニー アルコキシル化第四級アンモニウム化合物
US4831403A (en) 1985-12-27 1989-05-16 Minolta Camera Kabushiki Kaisha Automatic focus detection system
EP0392895B1 (en) 1989-04-13 1995-12-13 Sundisk Corporation Flash EEprom system
US5109496A (en) 1989-09-27 1992-04-28 International Business Machines Corporation Most recently used address translation system with least recently used (LRU) replacement
US5218569A (en) * 1991-02-08 1993-06-08 Banks Gerald J Electrically alterable non-volatile memory with n-bits per memory cell
US5663901A (en) 1991-04-11 1997-09-02 Sandisk Corporation Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
WO1993022770A1 (en) 1992-05-01 1993-11-11 Motorola, Inc. Method and apparatus for storage of digital information
US5412601A (en) 1992-08-31 1995-05-02 Nippon Steel Corporation Non-volatile semiconductor memory device capable of storing multi-value data in each memory cell
EP0613151A3 (en) 1993-02-26 1995-03-22 Tokyo Shibaura Electric Co Semiconductor memory system with flash EEPROM.
US5424978A (en) 1993-03-15 1995-06-13 Nippon Steel Corporation Non-volatile semiconductor memory cell capable of storing more than two different data and method of using the same
US5394450A (en) 1993-04-13 1995-02-28 Waferscale Integration, Inc. Circuit for performing arithmetic operations
US7137011B1 (en) 1993-09-01 2006-11-14 Sandisk Corporation Removable mother/daughter peripheral card
JP3205658B2 (ja) 1993-12-28 2001-09-04 新日本製鐵株式会社 半導体記憶装置の読み出し方法
US5440524A (en) 1994-02-01 1995-08-08 Integrated Device Technology, Inc. Method and apparatus for simuilataneous long writes of multiple cells of a row in a static ram
US5563838A (en) * 1994-02-01 1996-10-08 Micron Electronics, Inc. Module having voltage control circuit to reduce surges in potential
US5629890A (en) 1994-09-14 1997-05-13 Information Storage Devices, Inc. Integrated circuit system for analog signal storing and recovery incorporating read while writing voltage program method
US5838603A (en) 1994-10-11 1998-11-17 Matsushita Electric Industrial Co., Ltd. Semiconductor device and method for fabricating the same, memory core chip and memory peripheral circuit chip
US5541886A (en) 1994-12-27 1996-07-30 Intel Corporation Method and apparatus for storing control information in multi-bit non-volatile memory arrays
US5867721A (en) 1995-02-07 1999-02-02 Intel Corporation Selecting an integrated circuit from different integrated circuit array configurations
KR100239870B1 (ko) * 1995-09-28 2000-03-02 다카노 야스아키 기억 분해능을 가변할 수 있는 불휘발성 다치 메모리 장치
US5745409A (en) 1995-09-28 1998-04-28 Invox Technology Non-volatile memory with analog and digital interface and storage
KR0157122B1 (ko) 1995-12-23 1999-02-18 김광호 디지탈 보상형 아날로그 디지탈 변환기
JPH09205615A (ja) 1996-01-25 1997-08-05 Canon Inc 記録装置
US5726934A (en) 1996-04-09 1998-03-10 Information Storage Devices, Inc. Method and apparatus for analog reading values stored in floating gate structures
US5712815A (en) 1996-04-22 1998-01-27 Advanced Micro Devices, Inc. Multiple bits per-cell flash EEPROM capable of concurrently programming and verifying memory cells and reference cells
US5946257A (en) * 1996-07-24 1999-08-31 Micron Technology, Inc. Selective power distribution circuit for an integrated circuit
JP3709246B2 (ja) 1996-08-27 2005-10-26 株式会社日立製作所 半導体集積回路
US5754566A (en) 1996-09-06 1998-05-19 Intel Corporation Method and apparatus for correcting a multilevel cell memory by using interleaving
US6023781A (en) 1996-09-18 2000-02-08 Nippon Steel Corporation Multilevel semiconductor memory, write/read method thereto/therefrom and storage medium storing write/read program
JP3930074B2 (ja) * 1996-09-30 2007-06-13 株式会社ルネサステクノロジ 半導体集積回路及びデータ処理システム
JPH10124381A (ja) 1996-10-21 1998-05-15 Mitsubishi Electric Corp 半導体記憶装置
US6097638A (en) 1997-02-12 2000-08-01 Kabushiki Kaisha Toshiba Semiconductor memory device
US5828592A (en) 1997-03-12 1998-10-27 Information Storage Devices, Inc. Analog signal recording and playback integrated circuit and message management system
JP3189740B2 (ja) * 1997-06-20 2001-07-16 日本電気株式会社 不揮発性半導体メモリのデータ修復方法
US5930167A (en) * 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US5909449A (en) 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
JP4074697B2 (ja) 1997-11-28 2008-04-09 株式会社ルネサステクノロジ 半導体装置
JPH11176178A (ja) * 1997-12-15 1999-07-02 Sony Corp 不揮発性半導体記憶装置およびそれを用いたicメモリカード
US6072676A (en) 1998-04-13 2000-06-06 Analog Devices, Inc. Protection circuit for an excitation current source
US6208542B1 (en) 1998-06-30 2001-03-27 Sandisk Corporation Techniques for storing digital data in an analog or multilevel memory
EP1005213A3 (en) 1998-11-02 2000-07-05 Information Storage Devices, Inc. Multiple message multilevel analog signal recording and playback system containing configurable analog processing functions
FR2787601A1 (fr) * 1998-12-22 2000-06-23 Gemplus Card Int Systeme de memorisation comprenant des moyens de gestion d'une memoire avec anti-usure et procede de gestion anti-usure d'une memoire
US6058060A (en) * 1998-12-31 2000-05-02 Invox Technology Multi-bit-per-cell and analog/multi-level non-volatile memories with improved resolution and signal-to noise ratio
US6134141A (en) 1998-12-31 2000-10-17 Sandisk Corporation Dynamic write process for high bandwidth multi-bit-per-cell and analog/multi-level non-volatile memories
US7139196B2 (en) * 1999-01-14 2006-11-21 Silicon Storage Technology, Inc. Sub-volt sensing for digital multilevel flash memory
TW417381B (en) 1999-04-01 2001-01-01 Mustek Systems Inc Conversion method for increasing the bits of scanning signals of scanner
JP2000298992A (ja) * 1999-04-13 2000-10-24 Hitachi Ltd 多値記憶不揮発性半導体メモリの制御装置
JP2001006374A (ja) * 1999-06-17 2001-01-12 Hitachi Ltd 半導体記憶装置及びシステム
JP2001052476A (ja) 1999-08-05 2001-02-23 Mitsubishi Electric Corp 半導体装置
JP2001067884A (ja) 1999-08-31 2001-03-16 Hitachi Ltd 不揮発性半導体記憶装置
WO2001022232A1 (fr) * 1999-09-17 2001-03-29 Hitachi, Ltd. Memoire dans laquelle le nombre de corrections d'erreurs est enregistre
US6166960A (en) 1999-09-24 2000-12-26 Microchip Technology, Incorporated Method, system and apparatus for determining that a programming voltage level is sufficient for reliably programming an eeprom
JP2001110184A (ja) 1999-10-14 2001-04-20 Hitachi Ltd 半導体装置
US6259627B1 (en) 2000-01-27 2001-07-10 Multi Level Memory Technology Read and write operations using constant row line voltage and variable column line load
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6297988B1 (en) * 2000-02-25 2001-10-02 Advanced Micro Devices, Inc. Mode indicator for multi-level memory
US6424569B1 (en) * 2000-02-25 2002-07-23 Advanced Micro Devices, Inc. User selectable cell programming
JP2002074999A (ja) 2000-08-23 2002-03-15 Sharp Corp 不揮発性半導体記憶装置
US6538922B1 (en) 2000-09-27 2003-03-25 Sandisk Corporation Writable tracking cells
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6552929B1 (en) 2001-02-08 2003-04-22 Advanced Micro Devices, Inc. Piggyback programming using an extended first pulse for multi-level cell flash memory designs
US6577535B2 (en) 2001-02-16 2003-06-10 Sandisk Corporation Method and system for distributed power generation in multi-chip memory systems
US6738289B2 (en) * 2001-02-26 2004-05-18 Sandisk Corporation Non-volatile memory with improved programming and method therefor
US6785180B2 (en) 2001-03-15 2004-08-31 Micron Technology, Inc. Programmable soft-start control for charge pump
JP3829088B2 (ja) 2001-03-29 2006-10-04 株式会社東芝 半導体記憶装置
JP3828376B2 (ja) * 2001-05-07 2006-10-04 株式会社東芝 記憶システム
US7554842B2 (en) 2001-09-17 2009-06-30 Sandisk Corporation Multi-purpose non-volatile memory card
US6643169B2 (en) * 2001-09-18 2003-11-04 Intel Corporation Variable level memory
GB0123422D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Improved memory controller
US6678192B2 (en) 2001-11-02 2004-01-13 Sandisk Corporation Error management for writable tracking storage units
US6850441B2 (en) 2002-01-18 2005-02-01 Sandisk Corporation Noise reduction technique for transistors and small devices utilizing an episodic agitation
US6871257B2 (en) 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
JP3796457B2 (ja) * 2002-02-28 2006-07-12 富士通株式会社 不揮発性半導体記憶装置
US7031196B2 (en) * 2002-03-29 2006-04-18 Macronix International Co., Ltd. Nonvolatile semiconductor memory and operating method of the memory
US6721820B2 (en) 2002-05-15 2004-04-13 M-Systems Flash Disk Pioneers Ltd. Method for improving performance of a flash-based storage system using specialized flash controllers
US6751766B2 (en) 2002-05-20 2004-06-15 Sandisk Corporation Increasing the effectiveness of error correction codes and operating multi-level memory systems by using information about the quality of the stored data
JP4086583B2 (ja) 2002-08-08 2008-05-14 シャープ株式会社 不揮発性半導体メモリ装置およびデータ書き込み制御方法
JP2004086991A (ja) 2002-08-27 2004-03-18 Renesas Technology Corp 不揮発性記憶装置
US6963505B2 (en) 2002-10-29 2005-11-08 Aifun Semiconductors Ltd. Method circuit and system for determining a reference voltage
JP4129170B2 (ja) * 2002-12-05 2008-08-06 シャープ株式会社 半導体記憶装置及びメモリセルの記憶データ補正方法
JP4550439B2 (ja) * 2003-02-28 2010-09-22 東芝メモリシステムズ株式会社 Ecc制御装置
EP1609048A4 (en) * 2003-03-27 2009-01-14 Milsys Ltd DATA STORAGE DEVICE HAVING COMPLETE ACCESS FOR ALL USERS
JP2004310650A (ja) 2003-04-10 2004-11-04 Renesas Technology Corp メモリ装置
US7240219B2 (en) 2003-05-25 2007-07-03 Sandisk Il Ltd. Method and system for maintaining backup of portable storage devices
US7237074B2 (en) * 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
US7752380B2 (en) 2003-07-31 2010-07-06 Sandisk Il Ltd SDRAM memory device with an embedded NAND flash controller
US7212067B2 (en) 2003-08-01 2007-05-01 Sandisk Corporation Voltage regulator with bypass for multi-voltage storage system
US6970395B2 (en) * 2003-09-08 2005-11-29 Infineon Technologies Ag Memory device and method of reading data from a memory device
US7019998B2 (en) 2003-09-09 2006-03-28 Silicon Storage Technology, Inc. Unified multilevel cell memory
US6937513B1 (en) 2003-10-16 2005-08-30 Lsi Logic Corporation Integrated NAND and nor-type flash memory device and method of using the same
JP2005141811A (ja) 2003-11-05 2005-06-02 Renesas Technology Corp 不揮発性メモリ
US7085152B2 (en) 2003-12-29 2006-08-01 Intel Corporation Memory system segmented power supply and control
US7389465B2 (en) 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
US7164561B2 (en) 2004-02-13 2007-01-16 Sandisk Corporation Voltage regulator using protected low voltage devices
US8019928B2 (en) 2004-02-15 2011-09-13 Sandisk Il Ltd. Method of managing a multi-bit-cell flash memory
DE102005009700B4 (de) * 2004-02-26 2009-02-05 Samsung Electronics Co., Ltd., Suwon Programmierverfahren und nichtflüchtiger Speicher
US7218137B2 (en) 2004-04-30 2007-05-15 Xilinx, Inc. Reconfiguration port for dynamic reconfiguration
US7109750B2 (en) 2004-04-30 2006-09-19 Xilinx, Inc. Reconfiguration port for dynamic reconfiguration-controller
US7233532B2 (en) 2004-04-30 2007-06-19 Xilinx, Inc. Reconfiguration port for dynamic reconfiguration-system monitor interface
US7222224B2 (en) 2004-05-21 2007-05-22 Rambus Inc. System and method for improving performance in computer memory systems supporting multiple memory access latencies
CN100595923C (zh) * 2004-05-27 2010-03-24 株式会社瑞萨科技 集成半导体非易失性存储器的控制方法
US7535759B2 (en) 2004-06-04 2009-05-19 Micron Technology, Inc. Memory system with user configurable density/performance option
US7304883B2 (en) 2004-06-09 2007-12-04 Matsushita Electric Industrial Co., Ltd. Semiconductor integrated circuit
JP2006031795A (ja) 2004-07-14 2006-02-02 Renesas Technology Corp 不揮発性半導体記憶装置
US7817469B2 (en) 2004-07-26 2010-10-19 Sandisk Il Ltd. Drift compensation in a flash memory
US7493457B2 (en) 2004-11-08 2009-02-17 Sandisk Il. Ltd States encoding in multi-bit flash cells for optimizing error rate
US7218570B2 (en) 2004-12-17 2007-05-15 Sandisk 3D Llc Apparatus and method for memory operations using address-dependent conditions
US7391193B2 (en) 2005-01-25 2008-06-24 Sandisk Corporation Voltage regulator with bypass mode
KR100704628B1 (ko) 2005-03-25 2007-04-09 삼성전자주식회사 다수의 스트링을 사용하여 상태 정보를 저장하는 방법 및비휘발성 저장 장치
JP4772363B2 (ja) 2005-04-12 2011-09-14 株式会社東芝 不揮発性半導体記憶装置
WO2006129339A1 (ja) 2005-05-30 2006-12-07 Spansion Llc 記憶装置、および記憶装置の制御方法
US20060294295A1 (en) 2005-06-24 2006-12-28 Yukio Fukuzo DRAM chip device well-communicated with flash memory chip and multi-chip package comprising such a device
US7317630B2 (en) 2005-07-15 2008-01-08 Atmel Corporation Nonvolatile semiconductor memory apparatus
US7631245B2 (en) 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7954037B2 (en) 2005-10-25 2011-05-31 Sandisk Il Ltd Method for recovering from errors in flash memory
KR101224919B1 (ko) 2006-02-07 2013-01-22 삼성전자주식회사 온도 변화에 따라 고전압 발생 회로의 출력 전압 레벨을조절하는 반도체 메모리 장치
US7483327B2 (en) 2006-03-02 2009-01-27 Freescale Semiconductor, Inc. Apparatus and method for adjusting an operating parameter of an integrated circuit
CN102394101B (zh) * 2006-05-12 2014-12-31 苹果公司 具有自适应容量的存储设备
US7672161B2 (en) * 2007-04-30 2010-03-02 Spansion Llc Adaptive detection of threshold levels in memory

Also Published As

Publication number Publication date
EP2221823A1 (en) 2010-08-25
EP2221827B1 (en) 2013-09-25
ES2392334T3 (es) 2012-12-07
KR101184557B1 (ko) 2012-09-19
KR101173721B1 (ko) 2012-08-13
EP2330592B1 (en) 2012-08-22
CN102768853A (zh) 2012-11-07
EP2330592A1 (en) 2011-06-08
WO2007134277A2 (en) 2007-11-22
KR20120098964A (ko) 2012-09-05
JP2009537935A (ja) 2009-10-29
EP2333780A1 (en) 2011-06-15
EP2330595A1 (en) 2011-06-08
KR101206630B1 (ko) 2012-11-29
KR101184554B1 (ko) 2012-09-20
WO2007134277A3 (en) 2008-08-14
US7881108B2 (en) 2011-02-01
KR101116554B1 (ko) 2012-02-28
KR101121493B1 (ko) 2012-02-28
KR20110073558A (ko) 2011-06-29
EP2333781A1 (en) 2011-06-15
KR101116512B1 (ko) 2012-02-28
HK1159307A1 (en) 2012-07-27
KR20090026283A (ko) 2009-03-12
US20100070798A1 (en) 2010-03-18
HK1127155A1 (en) 2009-09-18
ES2383588T3 (es) 2012-06-22
KR20110073562A (ko) 2011-06-29
CN102768853B (zh) 2015-07-15
EP2330597A1 (en) 2011-06-08
KR20110069159A (ko) 2011-06-22
KR101133897B1 (ko) 2012-04-09
KR20110073560A (ko) 2011-06-29
EP2333780B1 (en) 2013-03-27
KR20110073561A (ko) 2011-06-29
KR20120001815A (ko) 2012-01-04
KR20120001816A (ko) 2012-01-04
CN102779554A (zh) 2012-11-14
KR101217416B1 (ko) 2013-01-02
ATE547794T1 (de) 2012-03-15
KR20120098965A (ko) 2012-09-05
KR101116468B1 (ko) 2012-03-07
KR101155751B1 (ko) 2012-06-12
EP2022058B1 (en) 2010-07-21
KR20120001814A (ko) 2012-01-04
HK1159305A1 (en) 2012-07-27
US20070263454A1 (en) 2007-11-15
KR101217438B1 (ko) 2013-01-02
EP2022058A2 (en) 2009-02-11
CN102779554B (zh) 2015-12-16
KR101193696B1 (ko) 2012-10-22
EP2337030B1 (en) 2016-03-23
KR101151597B1 (ko) 2012-05-31
KR101206714B1 (ko) 2012-11-29
ATE475183T1 (de) 2010-08-15
US8116133B2 (en) 2012-02-14
CN101484947A (zh) 2009-07-15
DE602007007938D1 (de) 2010-09-02
EP2221827A1 (en) 2010-08-25
KR20110069160A (ko) 2011-06-22
EP2337030A1 (en) 2011-06-22
KR101283145B1 (ko) 2013-07-05
EP2221823B1 (en) 2012-02-29
US7639542B2 (en) 2009-12-29
KR20110073559A (ko) 2011-06-29
EP2330593A1 (en) 2011-06-08
JP5358431B2 (ja) 2013-12-04
US20100070801A1 (en) 2010-03-18
KR20120098961A (ko) 2012-09-05
CN101484947B (zh) 2012-08-15
KR20120098962A (ko) 2012-09-05

Similar Documents

Publication Publication Date Title
KR101217438B1 (ko) 멀티레벨 데이터 저장 셀용 관리 동작
US20070263440A1 (en) Multi-Chip Package for a Flash Memory
WO2007134314A2 (en) Analog interface for a flash memory die

Legal Events

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

Payment date: 20151118

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161123

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171117

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181129

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20191127

Year of fee payment: 8