KR20120059506A - 플래시 저장 디바이스로의 데이터 복원 - Google Patents

플래시 저장 디바이스로의 데이터 복원 Download PDF

Info

Publication number
KR20120059506A
KR20120059506A KR1020127003904A KR20127003904A KR20120059506A KR 20120059506 A KR20120059506 A KR 20120059506A KR 1020127003904 A KR1020127003904 A KR 1020127003904A KR 20127003904 A KR20127003904 A KR 20127003904A KR 20120059506 A KR20120059506 A KR 20120059506A
Authority
KR
South Korea
Prior art keywords
data
storage
read reference
reference voltages
programmer
Prior art date
Application number
KR1020127003904A
Other languages
English (en)
Inventor
위갈 일라이
마흐무드 아스퍼
샤하르 바-오르
Original Assignee
샌디스크 아이엘 엘티디
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 샌디스크 아이엘 엘티디 filed Critical 샌디스크 아이엘 엘티디
Publication of KR20120059506A publication Critical patent/KR20120059506A/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • 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
    • 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

Landscapes

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

Abstract

프로그래머의 데이터는 MBC 저장 체계를 이용하여 저장 디바이스(100)의 메모리 디바이스(120)에 초기에 저장된다. 저장 디바이스가 호스트 디바이스(170)에 내장된 이후, 상기 프로그래머의 데이터는 통상적인 판독 기준 전압들을 이용하여 메모리 디바이스로부터 내부적으로 판독되며, 그리고 상기 프로그래머의 데이터에 있는 에러 데이터 비트들의 개수가 계산된다. 만일, 프로그래머의 데이터가 교정될 수 없는 개수의 에러 데이터 비트들을 포함한다면, 상기 프로그래머의 데이터는 감소된 레벨들을 갖는 비-통상적인 판독 기준 전압들을 이용하여 반복적으로 재판독된다. 판독 기준 전압들의 레벨들을 하강시키고 그리고 에러 데이터 비트들의 개수를 재계산하는 것을 포함하는 반복 프로세스(iteration process)는, 프로그래머의 데이터에 있는 에러 데이터 비트들의 개수가 에러 데이터 비트들의 기결정된 개수와 같거나 작아질 때 종료하며, 그 이후에 저장 디바이스는 프로그래머의 데이트를 복원하며 그리고 이를 메모리 디바이스에 통상적으로 재기입한다.

Description

플래시 저장 디바이스로의 데이터 복원{RESTORING DATA INTO A FLASH STORAGE DEVICE}
일반적으로 본 발명은 플래시 저장 디바이스에 관한 것이며 좀더 상세하게는 플래시 저장 디바이스에 데이터를 프리로딩하는 방법 및 상기 방법을 이용하는 저장 디바이스에 관한 것이다.
플래시 저장 디바이스들의 휴대성, 작은 물리적인 사이즈, 및 매우 큰 저장 용량 때문에, 최근 수 년간 플래시 저장 디바이스의 사용이 급속도로 증가하고 있다. 플래시 저장 디바이스들에는 다양한 설계가 사용된다. 몇몇 저장 디바이스들은 "착탈가능형(removable)" 으로 간주되는데, 이는 사용자가 이들 저장 디바이스들을 하나의 호스트 디바이스로부터 다른 하나의 호스트 디바이스로 옮길 수 있거나 혹은 하나의 저장 디바이스를 다른 것으로 교체할 수 있음을 의미한다. 다른 저장 디바이스들은 "내장형(embedded : 또는 '임베디드'라 함)" 라고 간주되는데, 이는 이들 저장소자들이 호스트 디바이스로부터 사용자에 의해서 제거될 수 없으며 그리고 제거되도록 의도되지 않았음을 의미한다. 다양한 이유들로 인해, 내장형 저장 디바이스의 제조업자들은 저장 디바이스들이 호스트에 통합되기 이전에, 사용자 데이터를 저장 디바이스에 프리로딩(preload) 한다. 일반적으로는, 저장 디바이스가 내장된 채로 최종 사용자에게 호스트가 배포되기 이전에, 사용자 데이터가 저장 디바이스에 프리로딩된다. 전역 위치파악 시스템(Global Positioning System : GPS) 맵, 음악 파일들, 비디오 파일들, 비디오 게임들, 등등이 사용자 데이터의 일례이다.
셀 하나당 단일 비트(Single-Bit per Cell : SBC) 셀로서 동작하는 메모리 셀들은 셀 하나당 복수 비트(Multi-Bit per Cell : MBC) 셀로서 동작하는 메모리 셀들 보다 더 높은 데이터-보유 내구력(data-retention durability)을 갖는 것으로 알려져 있다. 하지만, 사용자 데이터는 MBC 셀로서 동작하는 메모리 셀들에 저장되는 것이 통상적인바, 왜나하면 사용자 데이터는 매우 큰 편이며(예컨대, 수백 메가바이트에서 수 기가바이트 단위임), 그리고 이들 사용자 데이터를 MCB 셀에 콤팩트하게 저장함으로써 저장 공간을 절약할 수 있기 때문이다.
일반적으로, 저장 디바이스는 리플로우 솔더링 공정을 이용하여 호스트 디바이스에 내장된다. 프리로딩된 사용자 데이터를 갖는 MBC 셀들은 상기 리플로우 솔더링 공정으로부터 생성된 열의 영향에 취약하며, 그 결과 MBC 셀들의 데이터가 변경될 수도 있는데, 이는 특히 메모리 셀들의 서로 다른 이진 상태들 사이에 상대적으로 작은 에러 마진이 존재하기 때문이다(즉, MBC 셀들은 SBC 셀들의 이진 상태들 사이의 에러 마진보다 작은 에러 마진을 갖는다). 달리 말하면, 리플로우 공정의 결과로서 생성된 과도한 열은 메모리 셀들의 임계전압들을 감소시키는바, 따라서 이는 메모리 셀들이 지정된 이진 상태로부터 다른 이진 상태(즉, 잘못된 이진 상태)로 의도하지 않게 천이하게 한다.
결과적으로, 관련된 저장 디바이스가 호스트 디바이스에 내장되어 있는 경우에, 메모리 셀에서 전기 전하의 리플로우-유발 방전으로 인한 문제를 해결할 필요가 있다.
따라서, 리플로우 공정 이전에 사용자 데이터가 저장 디바이스에 프리로딩되었다 하더라도, 리플로우 공정이 완료된 이후에 사용자 데이터를 저장 디바이스에 복원(restore)할 수 있는 것이 바람직하다. 또한, 리플로우 공정 이전 및 호스트 디바이스에 저장 디바이스가 내장된 이후에, MBC 셀에 사용자 데이터를 저장하는 것이 바람직하다. 이러한 데이터 복원을 구현하기 위한 다양한 실시예들이 제안되며, 그 일례들이 본 명세서에 제공된다.
전술한 바를 해결하기 위하여, 프로그래밍 디바이스로부터 저장 디바이스로 전송되는 프로그래머의 데이터(programmer's data)는, 저장 디바이스의 메모리 디바이스에 초기에 저장된다. 저장 디바이스가 호스트 디바이스에 내장된 이후에, 상기 프로그래머의 데이터는 통상적인(conventional) 판독 기준 전압들을 이용하여 메모리 디바이스로부터 내부적으로(internally)(즉, 저장 디바이스에서) 판독되며, 그리고 상기 프로그래머의 데이터에 있는 에러 데이터 비트들이 검출되며 그리고 이들의 개수 EA 가 계산된다. 만일, 프로그래머의 데이터가 상기 저장 디바이스에 의해서 교정될 수 없는 에러 데이터 비트들을 포함한다면, 상기 프로그래머의 데이터는 비-통상적인(unconventional) 판독 기준 전압들을 이용하여 반복적으로 재판독(iteratively reread)되며, 각각의 반복(iteration)에서, 상기 비-통상적인 판독 기준 전압들의 레벨은 소정의 체계를 따라 더욱 낮아진다.
다음의 반복 단계들 즉, (1) 판독 기준 전압들의 레벨들을 낮추는 단계, (2) 낮아진 판독 기준 전압들을 이용하여 프로그래머의 데이터를 (재)판독[(re)reading]하는 단계, 그리고 (3) 프로그래머의 데이터에 있는 에러 데이터 비트들의 개수 EA 를 (재)계산[(re)calculating]하는 단계는, 프로그래머의 데이터에 있는 에러 데이터 비트들의 개수 EA 가 저장 디바이스에 의해서 교정될 수 있는 에러 데이터 비트들의 소정 개수 ET 보다 작거나 같아질 때까지 반복된다(즉, 작거나 같아질 때에 종료한다).
반복 프로세스가 종료된 이후, 저장 디바이스는 프로그래머의 데이트를 복원하며 그리고 복원된 프로그래머의 데이터를, 동일하거나 혹은 좀더 컴팩트한 MBC 저장 체계를 통상적인 방식으로 이용하여 메모리 디바이스에 재기입(rewrite)한다.
첨부된 도면들에서는 다양한 실시예들이 예시되는바, 이들 일례들은 제한적인 것으로 의도된 것이 아니다. 설명의 간략함과 명료함을 위해서, 도면에 도시된 구성요소들은 반드시 축적대로 그려진 것은 아님을 유의해야 한다. 또한, 적절하다고 간주되는 경우, 같거나, 대응되거나 혹은 유사한 구성요소들을 나타내기 위하여 도면들 사이에서 참조 번호들이 반복될 수 있다.
도1은 예시적인 실시예에 따른 저장 디바이스의 블록도이다.
도2는 도1에 도시된 저장 디바이스의 구성요소들을 좀더 상세히 도시한다.
도3A는 저장 디바이스가 호스트 디바이스에 내장되기 이전에 프로그래머의 데이터를 저장 디바이스에 프리로딩하기 위한 통상적인 MBC 저장 체계를 예시한다.
도3B는 예시적인 일실시예에 따라 프로그래머의 데이터를 판독하는데 이용될 수 있는 비-통상적인 판독 기준 전압들을 예시한다.
도4는 프로그래머의 데이터를 저장 디바이스에 프리로딩하기 위한 방법을 도시한다.
도5는 예시적인 일실시예에 따라 프로그래머의 데이터를 복원하는 방법을 도시한다.
도6은 예시적인 일실시예에 따라 저장 디바이스에 데이터를 프리로딩하는 방법을 도시한다.
도7은 예시적인 일실시예에 따라 저장 매니저(storage manager)를 위해 접속 신호(connectivity signal)를 생성하기 위한 전기 단자 및 회로를 예시한다.
도8은 도7의 저장 디바이스 및 통상적인 호스트 디바이스를 예시한다.
다음의 상세한 설명은 예시적인 실시예들에 대한 다양한 세부사항들을 제공한다. 하지만, 이러한 설명은 청구항들의 범위를 한정하고자 의도된 것이 아니며, 대신에 본 발명의 다양한 원리들 및 이를 실행하는 방법을 설명하기 위한 것이다.
다음과 같은 용어들 즉, "임계전압 축 상의 임계전압 분포 곡선의 통상적인 위치" , "통상적인(conventional) 임계전압 (분포) 범위" , "통상적인 임계전압 분포 곡선" , "통상적인 판독 기준 전압" 라는 용어들은, 플래시 메모리 셀을 작동시키기 위해 최적화된 것으로서 플래시 메모리 산업에서 일반적으로 인정되고 있는 데이터 저장 일례들(instances)을 지칭한다. "(플래시) 메모리 셀을 동작시킨다" 라 함은, (플래시) 메모리 셀에 데이터를 기입하거나 (플래시) 메모리 셀로부터 데이터를 판독하는 것과 같은, 다양한 저장 동작 및 저장-관련 동작들을 (플래시) 메모리 셀 상에서 수행하는 것을 의미한다.
"셀들의 개수 vs 셀의 임계전압 레벨" 그래프(예컨대, 도3A에 도시됨)에 관하여, 메모리 셀들의 임계전압의 통상적인 레벨(즉, 상기 그래프에서 전압 축 상의 메모리 셀들의 임계전압들의 위치들)은, 저장 디바이스의 유형(예컨대, 셀당 2 비트(2 bit-per-cell) 기반의 디바이스, 혹은 셀당 3 비트 기반의 디바이스 등등), 관련된 기술(예컨대, NAND 혹은 NOR) 및 저장 프로세스의 세부사항에 따라 좌우된다. 즉, 신뢰성과 성능에 대하여 데이터 기입 및 데이터 판독이 최적화되도록, 통상적인 임계전압 분포 곡선들의 위치들 및 이들과 관련된 통상적인 임계전압 범위들은 미리 결정된다. 따라서, 일 유형의 저장 디바이스(예컨대, 셀당 2 비트 기반의 디바이스)에 관한 통상적인 임계전압 분포 곡선들의 위치들 및 이들과 관련된 통상적인 임계전압 범위들은, 다른 유형의 저장 디바이스(예컨대, 셀당 3 비트 기반의 디바이스)에 관한 통상적인 임계전압 분포 곡선들의 위치들 및 이들과 관련된 통상적인 임계전압 범위들과 다를 수 있다.
저장 디바이스의 저장 소자들인 플래시 메모리 셀들은 플로팅 게이트 트랜지스터로 구현되는 것이 일반적이다. 메모리 셀의 플로팅 게이트는, 플로팅 게이트의 물리적인 치수에 의해 제한되는 최대량의 전기 전하를 보유할 수 있다. 메모리 셀에 저장된 서로 다른 양의 전기 전하는 서로 다른 이진 상태들로 간주되는바, 메모리 셀의 이진 상태는 메모리 셀에 저장된 데이터(예컨대, "00" , "01" 등등)에 대응한다. 메모리 셀의 전기 전하, 즉 메모리 셀의 이진 상태 및 데이터는 메모리 셀의 임계전압을 검출함에 의해서 인지될 수 있다. 예컨대, 메모리 셀이 이진 상태 "0" (이 경우 메모리 셀은 하나의 데이터 비트를 저장한다), 혹은 이진 상태 "11" (이 경우 메모리 셀은 2개의 데이터 비트를 저장한다), 혹은 이진 상태 "101" (이 경우 메모리 셀은 3개의 데이터 비트를 저장한다)에 있다고 말하는 것과 메모리 셀이 이진 데이터 "0" , "11" , "101" 를 각각 저장하고 있다고 말하는 것은 같은 의미로 간주된다. 하나의 메모리 셀이 저장하는 데이터 비트의 개수(예컨대, 1개, 2개, 3개 등등)는, 상기 메모리 셀을 동작시키는데 이용되는 저장 셋업(storage setup), 혹은 저장 체계(storage scheme)에 따라 좌우된다.
간략히 말해서, "리플로우 솔더링(reflow soldering)" 또는 "리플로우" 는, 솔더링 공정으로서, 솔더링 공정에서는 회로 기판 상의 대응 패드에 부품들의 전기 단자들을 납땜(solder)하기 위하여 회로 기판 어셈블리가 가열된다. 저장 디바이스가 호스트의 회로 기판에 솔더링되는 동안, 매우 높은 솔더링 온도(전형적으로는 175℃ ~ 270℃)는 메모리 셀이 전기 전하를 손실하게 한다. 메모리 셀이 상당한 양의 전기 전하를 손실하게 되면, 셀의 임계전압이 변동될 수도 있으며, 결과적으로 메모리 셀의 이진 상태가 변할 수도 있는바, 따라서 셀에 저장된 데이터가 변경될 수 있다. 물론, 이러한 데이터 변화는 바람직하지 않은 것이다.
리플로우 공정으로 인해 야기된 문제점에 대한 해결책들 중 하나는 사용자 데이터를 SBC 저장 디바이스에 프리로딩하는 것을 포함한다. 이 해결책은 디지털 카메라, 휴대폰 등등의 호스트 디바이스를 이용하는 사용자에게는 수용할 만한 것이 될 수도 있지만, 호스트 디바이스 제조업자의 관점에서 보면 여러가지 문제점들이 존재하는바, 왜냐하면 여러 개의 저장 디바이스들을 별도로 관리(조립, 테스트, 작동 등등)해야 할 필요가 있기 때문이다. 또한, 사용자 데이터를 저장하기 위하여 SBC 저장 디바이스를 전용하는 것은, 호스트 디바이스에서 면적(real-estate)(예컨대, 호스트 디바이스의 회로 보드 상의 물리적인 공간)을 소모하며, 그리고 저장 디바이스의 콘트롤러는 SBC 저장 디바이스를 별도로 관리(SBC 저장 디바이스와의 어드레싱, 통신 등등)해야 하는바, 이는 매우 비효율적이다.
또 다른 해결책은 사용자 데이터를 MBC 셀에 저장하고 그리고 플래시 메모리 디바이스 분야에서 "힐링 공정(healing process)" 이라고 알려진 소정의 공정을 수행하는 것을 포함한다. 힐링 공정 동안, 저장 디바이스의 온도 베이킹 프로파일(temperature baking profile)을 제어함에 의해서, 열에 의해 야기된 메모리 셀의 전기 전하의 방전이 완화된다. 하지만, 힐링 공정을 이용하는 것은 다음과 같은 단점이 있다. 저장 디바이스의 메모리 셀이 작으면 작을수록, 힐링 공정의 효과가 적다. 즉, 힐링 공정은 70 나노미터(nm) 테크놀로지에는 유효할 수도 있지만, 56 나노미터 테크놀로지에는 덜 유효하며 그리고 34 나노미터 테크놀로지에는 더욱 더 유효하지 않다.
도1은 예시적인 일실시예에 따른 저장 디바이스(100)의 블록도이다. 저장 디바이스(100)는 저장 매니저(110), 메모리 디바이스(120)를 포함하는바, 메모리 디바이스(120)는 예컨대, NAND(이하, '낸드' 라고도 함) 플래시 메모리 셀인 복수의 전하-저장 메모리 셀들(122)을 포함한다. 각각의 메모리 셀(122)은 K(K≥2) 비트의 데이터 혹은 K 데이터 비트를 보유하며, 그리고 2K 개의 이진 상태들 중 하나로 프로그래밍가능한바, 2K 개의 이진 상태들 각각은 2K 개의 임계전압 범위들 중 특정한 하나에 의해서 표현되며, 그리고 2K - 1 개의 판독 기준 전압들을 이용하여 판독가능하다.
또한, 저장 디바이스(100)는 설정가능한 저장 셋업 모듈(Configurable Storage Setup Module : CSSM)(130)을 포함하는바, 상기 CSSM(130)은, 통상적으로는 저장 디바이스(100)가 프로그래밍 디바이스에 연결되는 때에 그리고 예외적으로는 저장 디바이스(100)가 호스트 디바이스에 내장된 이후에(아래에 설명됨), 저장 디바이스(100)가 메모리 셀(122)을 MBC 셀로서 동작시킬 수 있게 하기 위하여, 저장 매니저(110)에 의해서 설정가능하다. 또한, 저장 디바이스(100)는, 저장 매니저(110)와 프로그래밍 디바이스 혹은 호스트 디바이스와의 양-방향 통신을 용이하게 해주는 호스트 인터페이스(예컨대, 호스트 I/F 140)를 포함한다.
하나의 일례로서 도시된 바와 같이, 저장 디바이스(100)는 호스트(170)에 내장되며 그리고 제어 및 데이터 버스(172)를 통해 호스트(170)에 연결된다. 기술적인 이유 및 다른 이유들 때문에, 저장 디바이스(100)가 호스트(170)에 내장되기 전에, 저장 디바이스(100)는 데이터를 메모리 디바이스(120)에 프리로딩함으로써 제조업자에 의해서 데이터-와이즈 초기화된다(data-wise initialized). 비록, 도1에는 저장 디바이스(100)가 프로그래머(160)(예시적인 프로그래밍 디바이스)에 연결되어 있고 그리고 호스트(170)에 내장되어 있는 것으로 도시되어 있지만, 실제로는 이와 다르다. 즉, 저장 디바이스(100)가 호스트(170)에 내장되기 전에, 저장 디바이스(100)는 먼저 프로그래머(160)에 연결되는데, 이는 커맨드 및 데이터 버스(162)를 통하여 메모리 디바이스(120)에 초기 데이터를 프리로딩하기 위한 것이다. 프로그래머(160)로부터 저장 디바이스(100)로 전송되는 이러한 초기 데이터는 본 명세서에서 "프로그래머의 데이터(programmer's data)" 라고 지칭된다. 프로그래머(160)에 의해서 메모리 디바이스(120)에 프리로딩된 프로그래머의 데이터는 예컨대, GPS 맵, 음악 파일, 비디오 파일, 게임 파일 및 다른 유형의 데이터가 될 수 있거나 또는 이들을 포함할 수 있다. 즉, 프로그래머(160)와 호스트(170) 둘다가 호스트 I/F(140)에 연결되는 것으로 도시되었지만, 각각의 디바이스는 서로 다른 시간에서 호스트 I/F(140)에 연결된다. 프로그래머(160)는 프로그래머의 데이터를 메모리 디바이스(120)에 프리로딩하기 위하여 호스트 I/F(140)에 연결되며, 그리고 호스트(170)는 호스트(170)가 조립(assemble)될 때에 그리고 선택적으로는 호스트(170)가 전기적으로 스위치 "온" 되는 때에도 호스트 I/F(140)에 물리적으로 연결된다. 커맨드 및 데이터 버스(162)는 저장 디바이스(100)의 프로그래밍 소켓에 착탈가능하게 연결될 수 있는 커넥터를 갖는다. 저장 디바이스의 프로그래밍 소켓과 커맨드 및 데이터 버스(162)의 커넥터는 도1에 도시되어 있지 않다.
프로그래머(160)에 의해서 저장 디바이스(100)를 프로그래밍하는 동안, 커맨드 및 데이터 버스(162)의 커넥터는 저장 디바이스의 프로그래밍 소켓에 연결되며, 그리고 호스트(170)를 조립(assembly)하는 동안, 제어 및 데이터 버스(172)는 호스트 I/F(140)에 와이어링된다. 제어 및 데이터 버스(172)는 평평한(flat) 케이블 혹은 회로 기판 도선(conductor)이 될 수도 있다. 호스트 제조업자 혹은 조립자에 의해서 호스트(170)가 조립되는 동안, 저장 디바이스(100)는 호스트(170)의 회로 기판(174)에 솔더링된다. 호스트(170)에 대한 조립 공정이 완료되고 그리고 호스트(170)가 파워 업된 이후에, 저장 디바이스(100)와 호스트(170)는 통상적인 방식으로 상호동작(interoperate)할 수 있다.
저장 매니저(110)는 호스트 I/F(140)에 접속되며(142) 그리고 이를 통해, 프로그래머(160) 및 호스트(170)와 같은 외부 디바이스들과 데이터/정보, 상태 정보, 그리고 커맨드 등을 교환한다. 저장 매니저(110)는 또한, 저장 동작들을 관리하는바, 저장 동작들은 메모리 디바이스(120)에 데이터를 기입하는 동작, 메모리 디바이스로부터 데이터를 판독 및 소거하는 동작을 포함하거나 혹은 이와 관련된 동작들을 포함한다. CSSM(130)은 메모리 디바이스(120)에 동작가능하게 접속되며(132), 그리고 저장 매니저(110)는 CSSM(130)의 동작을 제어함으로써, 메모리 셀(122)에 데이터를 기입하거나 메모리 셀(122)로부터 데이터를 판독하는 방식(way)을 관리한다. 이에 대해서는 예컨대, 도2를 참조하여 상세히 후술될 것이다.
저장 매니저(110)는 데이터 버스(114)를 통해 메모리 디바이스(120)로 데이터를 전송하거나 메모리 디바이스(120)로부터 데이터를 수신하고, 어드레스 버스(116)를 통해 메모리 셀들의 어드레스들을 메모리 디바이스(120)로 전송하고, 그리고 제어 신호들을 제어 버스(118)를 통해 CSSM(130)에 전송하는바, 이는 통상적인 저장 동작들과 비통상적인 저장 동작들을 용이하게 하기 위한 것이다. 예를 들어, 저장 매니저(110)가, 메모리 디바이스(120) 내의 특정 메모리 셀들에게 데이터를 기입할 것을 프로그래머(160) 혹은 호스트(170)에 의해서 요청받는다면, 저장 매니저(110)는 특정 메모리 셀들의 관련 어드레스 및 올바른 메모리 셀들에 데이터가 기입되는 것을 용이하게 하는 제어 신호들과 함께 상기 데이터를 메모리 디바이스(120)로 포워딩한다. 이와 유사하게, 만일, 저장 매니저(110)가 메모리 디바이스(120) 내의 특정 메모리 셀들로부터 데이터를 판독할 것을 요청받는다면, 저장 매니저(110)는 올바른 메모리 셀들로부터 데이터가 판독되는 것을 용이하게 하는 제어 신호들과 함께 특정 메모리 셀들의 어드레스를 메모리 디바이스(120)로 포워딩한다.
CSSM(130)은 저장 매니저(110)에 의해서 설정가능한데, 저장 매니저(110)는 CSSM(130)을 설정 및 사용하여, 통상적인 임계전압 분포와 통상적인 판독 기준 전압들의 세트를 이용함으로써 메모리 디바이스(120) 내의 메모리 셀들을 MBC 셀들로서 통상적으로 동작시킬 수 있으며 혹은 비통상적인(unconventional)(즉, 조절된) 하나 이상의 판독 기준 전압들을 이용함으로써, 메모리 셀들을 MBC 셀들로서 비통상적으로 동작시킬 수 있다. 본 명세서에서 "저장 셋업(storage setup)"이라 함은, 저장 매니저로 하여금 메모리 셀들(122) 혹은 이의 선택된 일부분(예컨대, 셀들의 그룹 124)을 통상적인 MBC 셀들로서 혹은 비통상적인 MBC 셀들로서 동작시킬 수 있게 하는, CSSM(130)의 설정(configuration)을 의미한다. CSSM(130)의 제 1 설정은 2K 개의 통상적인 임계전압 범위들의 세트와 2K-1 개의 통상적인 판독 기준 전압들의 세트에 관한 것이거나 혹은 이들에 의해 정의된다. CSSM(130)의 제 2 설정은 2K-1 개의 비통상적인 판독 기준 전압들의 세트에 관한 것이거나 혹은 이들에 의해 정의된다.
일반적으로, CSSM(130)의 제 1 설정은 프로그래머의 데이터를 저장 디바이스(100)에 통상적으로 프리로딩하는데 이용되며, 그리고 리플로우 공정에 의해서 훼손된 프로그래머의 데이터를 복원한 이후에 상기 프로그래머의 데이터를 저장 디바이스(100)에 통상적으로 재기입(rewrite)하는데도 또한 이용된다. 그리고 CSSM (130)의 제 2 설정은 교정가능한(correctable) 개수의 에러 데이터 비트들을 이용하여 훼손된 프로그래머의 데이터를 판독하는데 이용된다. CSSM(130)의 제 2 설정에 관하여, "비통상적인 판독 기준 전압들"을 적용하는 것은, 프로그래머의 데이터에 있는 에러 데이터 비트들의 개수 EA 가 저장 매니저(110)가 교정할 수 있는 에러 데이터 비트들의 소정 개수(예컨대, 최대값) ET 와 같거나 작아질 때까지, 저장 매니저(110)가 판독 기준 전압들의 전압 레벨들을 반복적으로 단계적으로 (재)조절(iteratively stepwise (re)write)(즉, 하강시키는 것)하는 것을 의미한다. 만일, EA ≤ ET 라면, 저장 매니저(110)는 에러 데이터 비트들을 교정하며, 그리고 CSSM(130)의 제 1 설정을 이용하여(즉, 통상적인 임계전압 범위들과 통상적인 판독 기준 전압들을 적용함으로써), 메모리 셀(122)에 교정된 에러 데이터 비트들과 더불어 프로그래머의 데이터를 재기입한다.
저장 디바이스(100)가 제작된 이후, 저장 디바이스(100)가 호스트(170)에 내장되기 전에 프로그래머의 데이터가 메모리 디바이스(120)에 프리로딩되는바, 호스트(170)는 예컨대, 휴대폰, 혹은 디지털 카메라가 될 수 있다. 프로그래머의 데이터는 조립 절차(assembly procedure)가 개시되기 전에 메모리 디바이스(120)에 프리로딩되는데, 왜냐하면 저장 디바이스가 호스트에 내장된 이후에 데이터를 저장 디바이스에 프리로딩하고 그리고 저장 디바이스를 테스트하기 위하여 다양한 테스트 절차를 실행하는 것은 기존의 호스트 제작 라인/제작 공정에 상당한 변경을 요구하기 때문이며, 그리고 이러한 변경은 비용이 많이 든다. 따라서, 프로그래머의 데이터가 메모리 디바이스(120)에 프리로딩된 이후에, 그리고 저장 디바이스(100)가 호스트 디바이스(예컨대, 호스트 170)에 내장되기 전에, 프로그래머(160)에 의해서 상기 테스팅이 수행된다.
데이터 프리로딩 공정이 완료된 이후, 저장 디바이스(100)는 리플로우 공정을 이용하여 호스트(170)에 내장된다. 저장 디바이스(100)가 호스트(170)에 내장된 다음, 호스트(170)와 저장 디바이스(100)는 보통의 주위 온도(normal ambient temperature)에 노출되는 것이 일반적이다. 하지만, 리플로우 공정 동안, 저장 디바이스(100)는 상기 보통의 주위 온도보다 매우 높은 온도에 노출된다. 본 명세서에서 설명한 바와 같이, 매우 높은 솔더링 온도는 데이터 보유력의 열화를 야기하며, 결과적으로 데이터 손실을 야기한다. 따라서, 저장 디바이스(100)가 호스트(170)에 내장된 이후에, 그리고 저장 디바이스(100)가 호스트(170)에 의해 파워 업된다고 가정하면, 메모리 셀(122)에 저장되어 있는 프로그래머의 데이터 혹은 상기 프로그래머의 데이터의 하나 이상의 선택된 부분들은 통상적인 저장 셋업(즉, CSSM 130의 제 1 설정)을 이용하여 판독되며, 그리고 프로그래머의 데이터에 있는 에러 데이터 비트들이 검출되며 그리고 이들의 개수 EA 가 계산된다. 만일, EA ≤ ET 라면, 저장 매니저(110)는 에러 데이터 비트들을 교정하며 그리고 복원된 프로그래머의 데이터 혹은 프로그래머의 데이터의 하나 이상의 선택된 부분들을 메모리 셀(122)에 재기입한다. 하지만, 저장 매니저(110)가 교정하기에는 너무 많은 에러 데이터 비트들이 존재한다면(즉, EA ≥ ET), 저장 매니저(110)는 CSSM(130)의 제 2 설정에 대해 정의된 바와 같이, 판독 기준 전압들을 반복적으로 조절하며(즉, 하강시킴), 그리고 프로그래머의 데이터를 재판독(reread)하는바, 이때에는 조절된 판독 기준 전압들을 이용하여 재판독하며, 따라서 각각의 반복(iteration) 이후에는 에러 데이터 비트들의 개수 EA 를 감소시킬 수 있다.
프로그래머의 데이터의 전부가 메모리 셀(122)로부터 판독되고 그 다음에 메모리 셀에 재기입되는지 혹은 프로그래머의 데이터의 선택된 일부분들이 판독되고 그 다음에 메모리 셀에 재기입되는지에 대한 의문(question) 및 얼마나 많은 판독/기입 동작들이 필요한지는, 프로그래머의 데이터가 훼손된 정도 및 데이터 판독 오류들에 대해서 메모리 셀들(그 데이터를 보유하고 있는)이 얼마나 취약한지에 달려있다. 일반적으로, 프로그래머의 데이터는 전체적으로 혹은 부분적으로, 메모리 셀(122)로부터 판독되고 그리고 그 이후에 메모리 셀(122)에 재기입될 수 있다. 프로그래머의 데이터를 메모리 셀(122)로부터/메모리 셀(122)에 판독 및 재기입하기 위한 3가지 옵션이 존재한다. (1) 프로그래머의 데이터는 하나의 판독 동작과 하나의 기입 동작을 이용하여 그 전체가 메모리 셀(122)로부터/메모리 셀(122)에 판독 및 재기입될 수 있다. 또는, (2) 프로그래머의 데이터는 복수의 판독 동작들(즉, 한번에 일부분씩 전체 프로그래머의 데이터를 판독하는 것) 및 복수의 기입 동작을 이용하여 그 전체가 메모리 셀(122)로부터/메모리 셀(122)에 판독 및 재기입될 수 있다. 또는, (3) 프로그래머의 데이터의 선택된 부분들만이 메모리 셀(122)로부터 판독될 수 있으며 이후에 메모리 셀(122)에 재기입될 수 있다. 옵션 (2)는 저장 매니저가 다른 일을 하느라 바쁜 경우에 매우 유용하며 그리고 이것은 백그라운드 동작으로서 프로그래머의 데이터의 일부분들을 판독/재기입할 수 있다. 옵션 (3)은 프로그래머의 데이터를 초기에 저장하는 메모리 셀들(122) 내의 몇몇 메모리 셀들에 대해 리플로우 공정이 심각한 영향을 주지 않는 경우에 유용하다. 이러한 경우들에서는, 심각하게 영향을 받은 메모리 셀들에 저장된 데이터 부분들만을 판독 및 재기입하는 것으로 충분할 것이다. 달리 말하면, 무시할 수 있을 만큼의 영향을 받은 메모리 셀들에 저장된 데이터 부분들은 판독 및 재기입될 필요가 없다. 메모리 셀들(122) 내의 특정 메모리 셀들이, 예를 들어, 이들 메모리 셀들이 리플로우 공정에 상당히 취약하기 때문에 저장과 관련하여 문제를 갖고 있다라고 미리(예컨대, 경험적으로(empirical)) 알려져 있다면, 프로그래머의 데이터의 오직 일부분(들)(문제있는 메모리 셀들에 저장되어 있는)만이 메모리 셀들(122)로부터 판독되어 이후 메모리 셀들(122)에 재기입될 수 있다. 따라서, 프로그래머의 데이터의 일부분(들)이 판독되는(판독될) 메모리 셀들은 판독 오류들에 대한 셀들의 예견된 취약도에 근거하여 미리 결정될 수도 있다.
저장 매니저(110)가 프로그래머(160)에 연결되는 때, 저장 매니저(110)는 CSSM(130)을 설정하는바, 사용되고 있는 MBC 체계에 관련된 통상적인 임계전압 범위들 및 통상적인 판독 기준 전압들을 이용하여 통상적인 방법에서 메모리 셀들(122)을 MBC 셀들로서 동작시키는 방식으로 CSSM(130)을 설정한다. 이후, 저장 매니저(110)는 통상적인 임계전압 범위들 및 통상적인 판독 기준 전압들을 이용하여 프로그래머의 데이터를 메모리 셀(1322)에 일시적으로 기입한다(예컨대, 셀들의 제 1 그룹 124에 기입함). 소정시간 이후에 프로그래머의 데이터가 셀들의 제 1 그룹(124)(예를 들어) 초기에 기입된다고 가정하면, 저장 디바이스(100)는 호스트(170)를 조립하는 동안 호스트(170)의 회로 기판(174)에 솔더링된다.
호스트(170)가 조립된 이후에, 호스트를 스위칭 "온"하는 것은 저장 디바이스(100)를 파워 업시킨다. 호스트(170)에 의해서 저장 디바이스(100)가 파워 업된 직후에, 저장 매니저(100)는 셀들의 제 1 그룹(124)으로부터 프로그래머의 데이터를 판독한다. 저장 매니저(100)는 셀들의 제 1 그룹(124)으로부터 프로그래머의 데이터를 한번 이상 판독할 수도 있는데, 그 횟수는 프로그래머의 데이터에 포함될 수도 있는 에러 데이터 비트들이 저장 매니저(100)에 의해서 교정될 수 있는지 없는지에 의존한다. 저장 매니저(100)는 프로그래머의 데이터에 있는 에러 데이터 비트들을 검출 및 교정하기 위해서 에러 정정 코드 매커니즘(예컨대, ECC 190)을 이용한다. 주어진 데이터 블록에서 저장 매니저(100)가 교정할 수 있는 에러 데이터 비트들의 최대 개수는, 사용된 ECC 코드의 "능력(strength)"에 의존한다. 즉, ECC 코드가 강하면 강할수록 상기 최대값도 커진다.
ECC 코드는 메모리 디바이스에 저장된 데이터에 부가되는 여분의(redundant) 데이터이다. 만일, 저장된 데이터에 있는 에러 데이터 비트들의 개수가 상기 코드의 능력 내에 있다면, 저장 디바이스는 상기 여분의 데이터를 이용하여 에러 데이터 비트들의 위치들을 검출할 수 있으며 그리고 이들을 교정할 수 있다. Reed Solomon 코드 및 BCH 코드는, 에러 데이터 비트들을 검출 및 카운트하는데 이용될 수 있는 ECC 코드들의 일례들이다. 일례로서, "RS(204, 188)" 이라고 표시된 Reed Solomon 코드는 유용한 정보의 188 바이트의 블록들을 한번에 프로세싱하며, 그리고 16(즉, 204 - 188 = 16) 여분 바이트들을 각각의 블록에 부가하며(append) 그리고 데이터 블록 당 부정확한 8개의 바이트들을 처리한다.
저장 매니저(110)가 통상적인 임계전압 범위들 및 통상적인 판독 기준 전압들을 이용하여 프로그래머의 데이터를 메모리 셀(122) 기입하기 때문에, 저장 매니저가 처음으로 상기 프로그래머의 데이터를 셀 그룹(124)으로부터 판독할 때, 저장 매니저는 통상적인 임계전압 범위들 및 통상적인 판독 기준 전압들을 적용하여 상기 프로그래머의 데이터를 판독한다. 만일, 판독된 프로그래머의 데이터에 있는 에러 데이터 비트들의 개수 EA 가 저장 매니저(110)에 의해서 교정할 수 없는 것이라면, 비통상적인 판독 기준 전압들이 이용된다. 즉, 더 적은 에러 데이터 비트들로 셀 그룹(124)으로부터 상기 프로그래머의 데이터를 재판독하는 것을 가능케하기 위하여, 상기 판독 기준 전압들은 낮춰진다(즉, 좌측으로 쉬프트됨). 충분히 낮은 판독 기준 전압들을 이용함에 의해서, 저장 매니저(110)에 의해서 교정될 수 있는 복수의 에러 데이터 비트들이 야기된다.
저장 매니저(110)가 프로그래머의 데이터를 교정한 이후, 저장 매니저(110)는 이것을 랜덤 액세스 메모리(RAM)(150)에 일시적으로 저장한다(152). 그 이후에 또는 동시에, 저장 매니저(110)는 메모리 셀들(122)을 통상적인 MBC 셀들로서 동작시키기 위한 방식으로 CSSM(130)을 재설정한다. 이후, 저장 매니저(110)는 RAM(150)으로부터 상기 데이터를 판독하고(152) 그리고 상기 데이터를 메모리 셀들(122)의 제 2 그룹(예컨대, 그룹 126 혹은 그룹 128)에 재기입하는바, 이때에는 이용되고 있는 MBC 저장 셋업에 관련된 통상적인 임계전압 범위들 및 통상적인 판독 기준 전압들을 이용한다. 프로그래머의 데이터가 일시적으로 기입되는 메모리 셀들의 제 1 그룹과 프로그래머의 데이터가 재기입되는 메모리 셀들의 제 2 그룹은, 별개의 그룹들(124, 128)로 표시된 바와 같이 별개의 그룹이 될 수 있다. 대안적으로는, 메모리 셀들의 제 1 그룹과 메모리 셀들의 제 2 그룹은, 부분적으로 중첩된 그룹(124)과 그룹(126)에 의해 도시되는 바와 같이, 하나 이상의 메모리 셀들을 공통으로 가질 수도 있다. 메모리 셀들의 제 1 그룹과 메모리 셀들의 제 2 그룹은 동일한 개수의 메모리 셀들을 포함하는바, 이는 동일한 데이터(즉, 프로그래머의 데이터)가 동일한 유형의 MBC 저장 셋업(즉, 동일한 개수의 데이터 비트들이 저장됨; 예컨대 각각의 셀에 2 비트가 저장됨)을 이용하여 이들에게 기입되기 때문이다. 만일, 서로 다른 MBC 저장 셋업들이 이용된다면, 메모리 셀들의 2개의 그룹들은 서로 다른 개수의 메모리 셀들을 가질 것이다.
저장 디바이스(100)가 프로그래머(160)에 연결되었음을, 감지(sennsing) 혹은 추정(inferring)에 의해서 저장 매니저(110)가 "알고 있거나" 혹은 프로그래머(160)에 의해서 이를 통지받는다면, 저장 매니저(110)는 CSSM(130)의 제 1 설정을 이용하여 프로그래머의 데이터를 메모리 셀(122)에 처음 기입한다. 이와 유사하게, 저장 디바이스(100)가 호스트(170)에 연결되었음을, 감지(sennsing) 혹은 추정(inferring)에 의해서 저장 매니저(110)가 "알고 있거나" 혹은 호스트(170)에 의해서 이를 통지받는다면, 저장 매니저(110)는 CSSM(130)의 제 1 설정과 CSSM(130)의 제 2 설정 중 하나 혹은 이들 둘다를 시기적절하게(timely) 이용하여 프로그래머의 데이터를 메모리 셀(122)로부터 판독하고 그리고 프로그래머의 데이터를 메모리 셀(122)에 재기입한다.
저장 매니저(110)가 프로그래머(160) 혹은 호스트(170)에 연결되었는지를 저장 매니저(110)가 판별할 수 있게 하는 다양한 예시적인 방법들이 아래에 설명된다. 본 명세서에 설명된 바와 같이, 저장 매니저(110)는 ECC(190)를 구현하기 위하여 어플리케이션(112)을 실행할 수도 있으며 그리고 CSSM(130)의 다양한 설정들, 스텝들, 동작들, 판별들(determinations) 등을 수행할 수도 있다. 저장 디바이스(100)의 펌웨어는, 가령, 판독 전용 메모리(ROM)(180)와 같은 별도의 메모리 디바이스에 안전하게 저장될 수 있다.
도2는 예시적인 일실시예에 따른 설정가능한 저장 셋업 모듈(CSSM)(130)에 대한 블록도이다. 도2는 도1을 참조하여 설명될 것이다. CSSM(130)은 저장 매니저(110)에 의해서 설정되며, 그리고 그 이후에 저장 매니저(100)에 의해 사용되는바, 이는 MBC 저장 셋업을 통상적으로 혹은 비통상적으로 이용함에 의해서 메모리 셀들(122) 내의 메모리 셀들을 선택적으로 동작시키기 위한 것이다. 저장 매니저(110)에 의해서 MBC 저장 셋업을 비통상적으로 이용하는 것은, 프로그래머의 데이터가 올바르게 판독될 수 있을 때까지 혹은 교정가능한 에러 데이터 비트들로 판독될 수 있을 때까지, 판독 기준 전압들의 레벨을 저장 매니저(110)가 낮출 수 있게 한다. CSSM(130)은 설정 정보(configuration information)를 포함하는바, 설정 정보는 통상적인 MBC 저장 셋업(즉, CSSM 130의 제 1 설정)과 비통상적인 MBC 저장 셋업(즉, CSSM 130의 제 2 설정)을 구현하는데 필요한 것이다. 설명의 편의를 위하여, 상기 2개의 저장 셋업을 구현하는데 필요한 상기 정보는 기능적으로 2개의 부분들로 분할된다. 즉, 통상적인 MBC 저장 셋업에 관련된 정보는 210에 도시되며, 그리고 비통상적인 MBC 저장 셋업에 관련된 정보는 220에 도시된다. 만일, 저장 매니저(110)가 통상적인 MBC 저장 셋업이 사용되어야 한다고 판단한다면, 저장 매니저(110)는 정보(210)를 선택(240)하기 위하여 커맨드를 CSSM(130)에게 전송한다(118). 만일, 저장 매니저(110)가 비통상적인 MBC 저장 셋업이 사용되어야 한다고 판단한다면, 저장 매니저(110)는 정보(220)를 선택(250)하기 위하여 커맨드를 CSSM(130)에게 전송한다(118).
정보(210)는 2K 개의 통상적인 임계전압 범위들의 세트에 관한 정보(212)를 포함한다. 또한, 정보(210)는 2K -1 개의 통상적인 판독 기준 전압들의 세트에 관한 정보(214)를 포함한다. 정보(212)는 정보(214)와 함께 통상적인 MBC 저장 셋업을 정의한다. 예를 들어, K=2 (즉, 메모리 셀들(122)의 메모리 셀들은 셀당 2 비트 셀로서 동작됨)인 경우, 이는 셀당 2 비트 셀로서 동작되는 메모리 셀들(122)의 각각의 메모리 셀이 4개(22)의 이진 상태들("00" , "01" , "10" , 혹은 "11") 중 하나에 있을 수 있음을 의미한다. 따라서(앞의 사례에 계속하여), 정보(212)는 4개의 임계전압 범위들에 관한 것이며, 각각의 임계전압 범위는 4개의 이진 상태들 중 특정한 하나를 나타내고, 그리고 정보(214)는 3개의 판독 기준 전압들에 관한 것이다. 본 명세서에서 호환적으로 사용된 "통상적인 MBC 저장 셋업" , "CSSM(130)의 제 1 설정" , 그리고 "제 1 저장 셋업" 이라는 용어들은 모두 같은 것을 나타낸다. 정보(220)는 2K -1 개의 비통상적인 판독 기준 전압들의 세트에 관한 것이다. 본 명세서에서 호환적으로 사용된 "비통상적인 MBC 저장 셋업" , "CSSM(130)의 제 2 설정" , 그리고 "제 2 저장 셋업" 이라는 용어들은 모두 같은 것을 나타낸다.
저장 매니저(110)가 메모리 셀들(122)에 데이터를 기입하거나 혹은 메모리 셀들(122)로부터 데이터를 판독할 때마다, 저장 매니저(110)는 특정 데이터 기입과 특정 데이터 판독에 어떤 저장 셋업이 관련되는지를 판별한다. 판별 결과에 기초하여, 저장 매니저(110)는 관련된 저장 셋업에 관한 정보를 선택하도록 CSSM(130)에게 지시한다(118). 관련된 저장 셋업이 제 1 저장 셋업이라고 상기 저장 매니저(110)가 판별하였다면, 저장 매니저(110)는 정보(210)를 선택하도록 CSSM(130)에게 지시한다(118)(정보 210를 선택하는 것은 240으로 도시됨). 이와 달리, 관련된 저장 셋업이 제 2 저장 셋업이라고 상기 저장 매니저(110)가 판별하였다면, 저장 매니저(110)는 정보(220)를 선택하도록 CSSM(130)에게 지시한다(118)(정보 220를 선택하는 것은 250으로 도시됨). 하나의 일례로서, 저장 매니저(110)는 제 1 저장 셋업을 선택하고(240) 그리고 제 2 저장 셋업은 선택하지 않는 것(250)으로 도시되었다. 메모리 셀들(122)을 동작시키기 위하여 CSSM(130)이 정보(210)(또는 정보 220)를 이용한다 라고 말하는 것과, 제 1 저장 셋업에 따라 메모리 셀들을 동작(또는, 만일 정보 220가 선택되었다면 제 2 저장 셋업에 따라 동작시킴)시키도록 CSSM(130)이 설정되었다 라고 말하는 것은, 동일한 의미이다.
메모리 디바이스(120)는 프로그래밍 유닛(230)을 포함한다. 프로그래밍 유닛(230)은 메모리 셀들(122)의 실제 동작(예컨대, 프로그래밍)을 책임진다. 프로그래밍 유닛(230)은 메모리 프로그래머(232)와 감지 유닛(234)을 포함한다. 데이터(예컨대, 프로그래머의 데이터)를 메모리 셀들(122)에 기입하기 위하여, 저장 매니저(110)는 상기 데이터가 기입될 메모리 셀들의 어드레스와 함께 상기 데이터를 프로그래밍 유닛(230)으로 전송한다. 프로그래밍 유닛(230)이 올바른 저장 셋업을 이용하여 상기 데이터를 메모리 셀들(122)에 기입하게 하기 위하여, 저장 매니저(110)는 저장 셋업 선택 커맨드(118)를 CSSM(130)으로 전송하는바, 이는 올바른 정보를 적용하기 위한 것이다. 저장 셋업 선택 커맨드(118)는 데이터 기입을 위하여 어떤 정보가 사용되어야만 하는지를 CSSM(130)에게 알려준다. 이후, 프로그래밍 유닛(230)은, 선택된 정보(예컨대, 정보 210)를 CSSM(130)으로부터 수신하며 그리고 이에 따라 상기 데이터를 메모리 디바이스(120)에 기입한다.
CSSM(130)으로부터 프로그래밍 유닛(230)으로 전송(132)된 정보가 정보(210)라고 가정하자. 저장 매니저(110)는 메모리 프로그래머(232)를 이용하여, 상기 데이터를 메모리 셀들(122)의 메모리 셀들에 기입하는바, 제 1 저장 셋업을 이용한다. 즉, 프로그래밍 유닛(230)이 (i) 메모리 셀들(122)에 기입될 데이터(예컨대, 프로그래머의 데이터), (ii) 관련 셀들의 어드레스, 그리고 (iii) 관련된 저장 셋업 정보(상기 일례에서는 정보 210)를 수신한 이후, 저장 매니저(110)는 메모리 프로그래머(232)를 이용하여 관련 메모리 셀들(예컨대, 셀들의 그룹 124)을 단계적으로(stepwise) 프로그래밍하며, 반면에 각각의 프로그래밍 단계 동안, 메모리 프로그래머(232)는 메모리 셀들의 임계전압 레벨들을 증가시킨다. 각각의 프로그래밍 단계 이후에, 저장 매니저(110)는 프로그래밍된 메모리 셀들의 현재 이진 상태들을 감지 회로(234)를 이용하여 검출하는바, 상기 정보(210)에서 특정된(또는, 정보 210에 의해 정의된) 통상적인 판독 기준 전압들을 이용한다. 이후, 저장 매니저(110)는 감지 회로(234)를 이용하여, 프로그래밍된 메모리 셀들의 현재 이진 상태들이 타겟 이진 상태에 도달했는지를 판별한다. 메모리 셀의 "타겟" 이진 상태는 메모리 셀에 저장될 데이터의 "xy" , "xyz" 등등의 비트와이즈 포션(bitwise portion)이다. 여기서, "x" ,"y" 및 "z" 각각은 이진값 "0" 또는 "1" 이다. 메모리 셀의 현재 이진 상태가 상기 셀의 타겟 이진 상태와 다르면, 상기 메모리 셀은 추가적인 프로그래밍 단계를 경험한다. 메모리 셀들의 임계전압들을 증가시키고 그리고 결과적인 이진 상태들과 각각의 타겟 이진 상태들을 비교하는 프로세스는, 프로그래밍된 메모리 셀들 각각이 타겟 이진 상태에 도달할 때까지 즉, 저장되기로 한 상기 데이터의 비트와이즈 포션을 프로그래밍된 각각의 메모리 셀이 저장할 때까지, 반복(reiterate)된다.
또한, 저장 매니저(110)는 감지 회로(234)를 이용하여 메모리 셀들(122)로부터 데이터를 판독한다. 메모리 셀로부터 데이터를 판독하기 위하여, 감지 회로(234)는 전기 전류가 상기 메모리 셀을 통해 흐르기 시작할 때까지, 상기 메모리 셀의 플로팅 게이트에 인가되는 전압의 레벨을 점진적으로 증가시킨다. 전기 전류가 메모리 셀을 통해 흐르기 시작하는 최소 전압 레벨이 그 메모리 셀의 임계전압이다. 전술한 바와 같이, 메모리 셀의 임계전압은 그 셀의 이진 상태를 나타낸다. 따라서, 저장 매니저(110)는 감지 회로(234)를 이용하여 메모리 셀들의 임계전압 레벨들을 검출한다. 이후, 저장 매니저(110)는 셀의 임계전압 레벨들과 상기 정보(210)에서 특정된(또는, 정보 210에 의해 정의된) 하나 이상의 통상적인 판독 기준 전압 레벨들을 비교하는바, 이는 각 메모리 셀의 이진 상태를 판별하기 위한 것이다.
저장 디바이스(100)가 프로그래머(160)에 연결되는 동안, 저장 매니저(110)는 CSSM(130)과 프로그래밍 유닛(230)을 이용하여 프로그래머의 데이터를 메모리 셀들(122)에 제 1 저장 셋업을 이용하여 기입한다. 저장 디바이스(100)가 호스트(170)에 내장된 이후에, 저장 매니저(110)는 CSSM(130)과 프로그래밍 유닛(230)을 이용하여 프로그래머의 데이터를 메모리 셀들(122)로부터 제 1 저장 셋업을 먼저 이용하여 판독하며, 그리고 상기 프로그래머의 데이터에 너무 많은 에러 데이터 비트들이 있는 경우에는 제 2 저장 셋업을 이용하여 판독한다. 이후, 저장 매니저(110)는 CSSM(130)과 프로그래밍 유닛(230)을 이용하여 프로그래머의 데이터를 메모리 셀들(122)에 제 1 저장 셋업을 이용하여 재기입한다.
도3A는 통상적인 MBC 저장 체계의 일례를 도시한다. 도3A는 도1 및 도2를 참조하여 설명될 것이다. 도3A는 K = 2 인 경우를 참조한다. 즉, 도3A에는 4개의 이진 상태들(A, B, C, D)이 존재하며, 이들은 4개의 통상적인 임계전압 분폭 곡선들(310, 320, 330, 340)로 각각 표현된다. 이진 상태들(A, B, C, D)은 3개의 통상적인 판독 기준 전압들(350, 360, 370)을 이용하여 검출될 수 있다. 하나의 일례로서, 상기 통상적인 판독 기준 전압들(350, 360, 370)은 각각 0.5V, 2.5V, 4.5V 이다.
메모리 셀은, 그 임계전압이 통상적인 임계전압 분포 범위(380) 내에 있다면 이진 상태 "A"에 통상적으로 있는 것이며, 그 임계전압이 통상적인 임계전압 분포 범위(382) 내에 있다면 이진 상태 "B"에 통상적으로 있는 것이며, 그 임계전압이 통상적인 임계전압 분포 범위(384) 내에 있다면 이진 상태 "C"에 통상적으로 있는 것이며, 그 임계전압이 통상적인 임계전압 분포 범위(386) 내에 있다면 이진 상태 "D"에 통상적으로 있는 것이다. 상기 일례를 계속하여 설명하면, 만일 메모리 셀의 임계전압이 4.5V 보다 높다면 상기 셀은 상태 "D" 에 있는 것이며, 만일 메모리 셀의 임계전압이 2.5V ~ 4.5V 라면 상기 셀은 상태 "C" 에 있는 것이다(기타 등등).
저장 디바이스(100)가 프로그래밍 디바이스(예컨대, 프로그래머 160)에 연결되어 있다라고 저장 매니저(110)가 판별하면, 저장 매니저는 프로그래밍 디바이스로부터 수신한 데이터(즉, 프로그래머의 데이터)를 통상적인 MBC 저장 셋업을 이용함으로써 메모리 셀들(122)에 저장하는바, CSSM(130)으로 하여금 정보(210)를 선택하게 하고 그리고 이렇게 함으로써, 프로그래밍 유닛(230)이 제 1 저장 셋업에 따라 메모리 셀들(122)을 동작시키게 한다. K = 2 인 도3A를 참조하면, 정보(212)는 4개(22)의 통상적인 임계전압 범위들(308, 382, 384, 386)의 세트를 정의하며 그리고 정보(214)는 3개(22 - 1)의 통상적인 판독 기준 전압들(350, 360, 370)의 세트를 정의한다.
도3B는 예시적인 실시예에 따른 비통상적인 판독 기준 전압들을 예시하는바, 훼손된 데이터는 상기 비통상적인 판독 기준 전압들에 의해서 판독된다. 또한, 도3B는, 도3A에 도시된 통상적인 임계전압 분폭 곡선들(310, 320, 330, 340)에 대한 리플로우 공정의 해로운 영향을 예시한다. 도3B는 도1, 도1 및 도3A를 참조하여 설명될 것이다. 호스트(170)가 조립되는 동안, 리플로우 공정은 메모리 셀들(122)의 전기 전하의 손실을 야기한다. 달리 말하면, 리플로우 공정(즉, 리플로우 공정에서 발생한 열)은 메모리 셀들의 통상적인 임계전압들을 좌측으로 쉬프트시킨다. 달리 말하면 리플로우 공정은 셀들의 임계전압들을 하강시킨다. 서로 다른 메모리 셀들은 동일한 리플로우 공정 동안 서로 다른 온도들을 경험할 수 있다. 이러한 현상 및 메모리 셀들의 오류있는 거동은, 메모리 셀들(122)로 하여금 전기 전하를 고르지 않게(unevenly) 손실하게 한다(즉, 동일한 기계적인 스트레스 하에서 몇몇 메모리 셀들은 다른 메모리 셀들보다 더 많은 전기 전하를 손실한다). 따라서, 도3A는 저장 디바이스(100)가 호스트(170)에 내장되기 전의 통상적인 임계전압 분포 곡선들(310, 320, 330, 340)을 도시하는 반면에, 도3B는 이들 커브들에 대한 리플로우 공정의 영향으로 인해 야기된 비통상적인 임계전압 커브들을 도시한다. 통상적인 임계전압 분폭 곡선(310)은 비통상적인 임계전압 곡선(312)으로 변형되며(즉, 쉬프트되고 그리고 모양이 바뀜), 통상적인 임계전압 분폭 곡선(320)은 비통상적인 임계전압 곡선(322)으로 변형되며, 통상적인 임계전압 분폭 곡선(330)은 비통상적인 임계전압 곡선(332)으로 변형되며, 통상적인 임계전압 분폭 곡선(340)은 비통상적인 임계전압 곡선(342)으로 변형된다.
각각의 통상적인 임계전압 분포 곡선과 비통상적인 임계전압 분포 곡선 간의 편차(deviation)(위치와 모양 둘다에 관한 편차)는, 여러 인자들에 의해서 좌우되는바, 그 중에서도 솔더링 온도, 솔더링 기간, 및 각각의 메모리 셀의 오류있는 거동이 지배적인 인자이다. 내장 공정(embedding process)이 완료된 이후에, 통상적인 임계전압 분폭 곡선들(310, 320, 330, 340)로부터 파생된 비통상적인 임계전압 분폭 곡선들 중 몇몇은 좀더 좌측으로 혹은 좀더 우측으로 위치될 수도 있으며 및/또는 임계전압 분폭 곡선들(312, 322, 332, 342) 보다 더 좁거나 혹은 더 넓을 수도 있다. 예를 들어, 비통상적인 임계전압 분폭 곡선(332)은 판독 기준 전압(350)에 더 가까워질 수도 있으며 및/또는 더 넓어질 수도 있다.
저장 디바이스(100)가 내장되고 그리고 호스트(170)에 의해서 파워 업된 이후에, 저장 매니저(110)는 프로그래머의 데이터를 판독하기 전에는, 얼마나 많은 에러 데이터 비트들이 프로그래머의 데이터에 존재하는지를 알 수가 없다. 따라서, 저장 매니저(110)는, 프로그래머의 데이터를 제 1 그룹의 메모리 셀들(예컨대, 그룹 124)로 프리로딩하는데 이용되었던 것과 동일한 통상적인 판독 기준 전압들(즉, 판독 기준 전압들 350, 360, 370)을 이용하여 프로그래머의 데이터를 판독한다. 저장 매니저(110)가 제 1 그룹의 메모리 셀들로부터 프로그래머의 데이터를 판독하고 그리고 이를 다른 메모리 디바이스(예컨대, RAM 150)에 일시적으로 저장한 이후에, 저장 매니저(110)는 프로그래머의 데이터에 있는 에러 데이터 비트들을 예컨대, ECC(190)를 이용하여 검출한다.
판독 기준 전압들은 숫자들로 표현되며(예를 들어, 판독 기준 전압 350의 경우 "0.5"), 메모리 셀들의 이진 상태들을 판별하기 위하여 메모리 셀들의 물리적인 임계전압들과 상기 판독 기준 전압들이 비교된다. 일반적으로는(즉, 호스트가 조립되고 그리고 정상 조건들 하에서 호스트와 저장 디바이스가 상호작용하는 이후에는), 사용되는 판독 기준 전압들을 나타내는 숫자들은 변경할 수 없다. 하지만, 본 발명에 따르면, 저장 디바이스(100)가 호스트(170)에 내장된 이후에 이들 숫자들이 단계적으로 변경되는바, 이는 프로그래머의 데이터에 있는 에러 데이터 비트들의 개수를 저장 매니저(110)가 교정할 수 있는 개수까지 감소시키기 위한 것이다. 달리 말하면, 저장 매니저(110)는 메모리 셀들(122)로부터 프로그래머의 데이터를 판독하기 위하여, 대안적이며, 비통상적인 판독 기준 전압들을 선택(그리고 필요하다면 그 선택을 변경함) 및 이용한다. 이후에, 프로그래머의 데이터에서 검출된 에러 데이터 비트들이 저장 매니저(110)에 의해서 교정될 수 있다면, 저장 매니저(110)는 이들을 교정하고 그리고 통상적인 판독 기준 전압들을 선택 및 사용하여, 교정된 프로그래머의 데이터를 메모리 셀들(122)에 재기입한다(즉, 프로그래머의 데이터를 수선(recondition)한다).
경험에 따르면, 통상적인 임계전압 분포 곡선들이 변경되었던 메모리 셀들로부터 프로그래머의 데이터를 통상적인 판독 기준 전압을 이용하여 판독하고자 시도하는 것은, 교정할 수 없는 개수의 에러 데이터 비트들을 종종 야기한다. 프로그래머의 데이터가 다음과 같다고 가정하면, 프로그래머의 데이터를 보유하는 메모리 셀들 중 몇몇은 이진 상태 "A"에 있으며, 다른 메모리 셀들은 이진 상태 "B"에 있으며, 다른 메모리 셀들은 이진 상태 "C"에 있으며, 그리고 나머지 메모리 셀들은 이진 상태 "D" 에 있다. 도3B에 도시된 바와 같이, 임계전압 분포 곡선(310)의 좌측 쉬프트(즉, 감소됨)는 중요하지 않는데, 왜냐하면 좌측으로 쉬프트된 곡선(312)은 그 전체가 판독 기준 전압(350)의 좌측에 위치하기 때문이다(즉, 애초에 이진 상태 "A" 로 프로그래밍 되었던 모든 셀들은 임계전압들의 좌측 쉬프트에도 불구하고 여전히 이진 상태 "A"에 남아 있음).
일례로서, 도3B에서 굵은 선으로 표시된 임계전압 분포 곡선(322)의 작은 부분은 통상적인 판독 기준 전압(350)의 좌측에 위치한다. 이는, 애초에 이진 상태 "B"로 프로그래밍되었던 몇몇 메모리 셀들이 이진 상태 "A"로 전이되었음을 의미한다. 하나의 이진 상태에서 다른 하나의 이진 상태로 전이(예컨대, 이진 상태 "B" 에서 이진 상태 "A" 로)한 메모리 셀은 하나 이상의 에러 데이터 비트를 포함한다. 전이가 많으면 많을 수록, 더 많은 에러 데이터 비트들이 존재한다. 상기 사례를 계속 설명하면, 임계전압 분포 곡선(332)의 큰 부분(이 또한 도3B에서 굵은 선으로 표시됨)은 통상적인 판독 기준 전압(360)의 좌측에 위치한다. 이는, 이진 상태 "B" 에서 이진 상태 "A" 로 전이된 메모리 셀들 보다 더 많은 메모리 셀들이 이진 상태 "C" 에서 이진 상태 "B" 로 전이되었음을 의미한다. 상기 사례를 계속 설명하면, 임계전압 분포 곡선(342)의 좀더 큰 부분(이 또한 도3B에서 굵은 선으로 표시됨)은 통상적인 판독 기준 전압(370)의 좌측에 위치한다. 이는, 이진 상태 "C" 에서 이진 상태 "B" 로 전이된 메모리 셀들 보다 더 많은 메모리 셀들이 이진 상태 "D" 에서 이진 상태 "C" 로 전이되었음을 의미한다.
따라서, 프로그래머의 데이터에 있는 에러 데이터 비트들의 총 개수 EA 는, 각 유형의 전이들(예컨대, 이진 상태 "D" 에서 이진 상태 "C" 로 전이, 등등등)에 의해서 야기된 에러 데이터 비트들의 합계이다. 저장 매니저(100)는 최대 개수의 에러 데이터 비트들까지 교정할 수 있는바, 이는 ECC(190)의 유형에 좌우된다. 만일, EA < ET 라면, 저장 매니저(110)는 에러 데이터 비트들을 교정하고 그리고 상기 데이터를 리프레시(refresh)(즉, 수선 : recondition)한다. 하지만, EA > ET 라면, 저장 매니저(110)는 정보(220)를 선택(250) 및 사용하도록 CSSM(130)에게 지시하는바(118), 앞서 설명한 바와 같이 상기 정보(220)는 비통상적인 판독 기준 전압들에 관한 것이다. 비통상적인 판독 기준 전압은 통상적인 판독 기준 전압 각각의 "하강된 버전(lowered version)" 이다. 하강된 통상적인 판독 기준 전압을 이용한다는 것과, 통상적인 판독 기준 전압의 하강된 버전인 비통상적인 판독 기준 전압을 이용한다는 것은, 동일한 의미를 갖는다. 정보(220)를 지칭하거나 혹은 정보(220)에 의해서 정의되는 판독 기준 전압들(352, 362, 372)은, 비통상적인 판독 기준 전압들의 일례이다. 비통상적인 판독 기준 전압(352)은 통상적인 판독 기준 전압(350)의 하강된 버전이며, 비통상적인 판독 기준 전압(362)은 통상적인 판독 기준 전압(360)의 하강된 버전이며, 비통상적인 판독 기준 전압(372)은 통상적인 판독 기준 전압(370)의 하강된 버전이다.
통상적인 판독 기준 전압들(350, 360, 370) 대신에 비통상적인 판독 기준 전압들(352, 362, 372)을 적용하는 것은, 더 적은 에러 데이터 비트들을 야기하는바, 왜냐하면, 이진 상태 "B" 에서 이진 상태 "A"로 이전에 전이된 메모리 셀들이 판독 기준 전압(352)를 적용함으로써 자신의 이진 상태 "B"를 되찾기 때문이며, 그리고 판독 기준 전압들(362, 372)를 적용함으로써 더 적은 메모리 셀들이 이진 상태 "C" 에서 이진 상태 "B"로 그리고 이진 상태 "D" 에서 이진 상태 "C"로 전이되기 때문이다. 만일, 비통상적인 판독 기준 전압들(352, 362, 372)을 적용한다 하여도, 교정할 수 없는 개수의 에러 데이터 비트들이 여전히 야기된다면, 판독 기준 전압들은 더욱 하강되는바, 이는 프로그래머의 데이터에 있는 에러 데이터 비트들의 개수를 더욱 감소시키기 위함이다. 더욱 낮아진 레벨들을 갖는 예시적인 판독 기준 전압들은 도면부호 354, 364, 374 로 도시된다.
대안적이며 새로운 판독 기준 전압으로서 비통상적인 판독 기준 전압들(354, 364, 374)을 이용하는 것은, 더 적은 개수의 에러 데이터 비트들을 야기하는바, 왜냐하면, 판독 기준 전압(354)로 인하여 메모리 셀들은 이진 상태 "B" 에서 이진 상태 "A" 로 전이하지 않으며(커브 322는 그 전체가 판독 기준 전압 354의 오른편에 있게 된다), 그리고 판독 기준 전압(364)로 인하여 메모리 셀들은 이진 상태 "C" 에서 이진 상태 "B" 로 전이하지 않으며(커브 332는 그 전체가 판독 기준 전압 364의 오른편에 있게 된다), 그리고 더 적은 메모리 셀들이 이진 상태 "D" 에서 이진 상태 "C" 로 전이하게 된다. 따라서, 소정 포인트까지는, 판독 기준 전압들의 레벨들에서의 각각의 감소로 인하여 프로그래머의 데이터에는 더 적은 에러 데이터 비트들이 있게 된다.
도4는 통상적인 방식으로 저장 디바이스에 데이터를 프리로딩하는 방법을 도시한다. 도4는 도1 및 도2를 참조하여 설명될 것이다. 저장 디바이스(100)가 프로그래밍 디바이스(예컨대, 프로그래머 160)에 연결된다고 가정하자. 단계 410에서, 저장 매니저(110)는 저장 디바이스(100)가 프로그래머(160)에 연결되었다고 판별한다. 단계 420에서, 저장 디바이스(100)가 프로그래머(160)에 연결되어 있는 동안, 저장 매니저(110)는 제 1 저장 셋업에 따라 제 1 그룹의 메모리셀들(예컨대, 그룹 124)을 통상적으로 동작시키도록 CSSM(130)을 설정한다. 즉, 저장 매니저(110)는 CSSM(130)에게 지시하여 제 1 그룹의 메모리 셀들에 대하여 정보(210)를 선택 및 적용하게 한다. 단계 430에서, 저장 매니저(110)는 프로그래머(160)로부터 프로그래머의 데이터(예컨대, GPS 맵 등등)를 수신하며, 그리고 단계 440에서 저장 매니저(110)는 상기 제 1 저장 셋업을 이용함으로써, CSSM(130)을 사용하여 상기 프로그래머의 데이터를 셀들의 그룹(124)에 기입한다. 상기 정보(210)는 통상적인 임계전압 범위들 및 통상적인 판독 기준 전압들로 구현된 MBC 체계에 관련될 수 있으며 혹은 이러한 MBC 체계를 정의할 수도 있다.
전술한 바와 같이, 제 1 저장 셋업은 저장 매니저(110)가 각각의 메모리 셀들(122)을 2K 개의 이진 상태들 중 특정한 하나의 상태로 통상적으로 프로그래밍할 수 있게 하며, 따라서 이와 같이 프로그래밍될 각각의 메모리 셀에 K 데이터 비트들이 저장될 수 있다. 도3A 및 도3B에 도시된 바와 같이, K는 2이다. 하지만, 본 발명은 K가 2보다 큰 경우에도 유사하게 적용가능하다. 저장 디바이스(100)가 프로그래머(160)에 연결되어 있을 때, 저장 매니저(110)는 제 1 그룹의 메모리 셀들 각각을 2K 개의 이진 상태들 중 특정한 하나의 상태로 프로그래밍함으로써, 제 1 저장 셋업을 이용하여 프로그래머의 데이터를 제 1 그룹의 메모리 셀들에 기입하는바, 여기서 2K 개의 이진 상태들 각각은 2K 개의 임계전압 범위들의 제 1 세트(즉, 통상적인 세트)의 특정한 하나의 임계전압에 의해 각각 표현된다. 또한, 저장 매니저(110)는 2K -1 개의 판독 기준 전압들의 제 1 세트(즉, 통상적인 세트) 또는 2K -1 개의 판독 기준 전압들의 제 2 세트(즉, 비통상적인 세트)를 적용하여 2K 개의 이진 상태들을 식별함으로써, 제 1 저장 셋업을 이용하여 제 1 그룹의 메모리 셀들로부터 데이터를 처음 판독한다. 저장 매니저(110)가 2K -1 개의 판독 기준 전압들의 통상적인 세트 혹은 비통상적인 세트를 이용하여, 0개 혹은 교정가능한 개수의 에러 데이터 비트들을 구비한 데이터를 판독한 이후, 저장 매니저(110)는 제 1 저장 셋업을 이용하여(즉, 2K 개의 임계전압 범위들의 통상적인 세트와 2K -1 개의 판독 기준 전압들의 통상적인 세트를 이용하여), 메모리 셀들의 제 2 그룹(예컨대, 그룹 126 혹은 그룹 128 또는 다른 그룹)에 프로그래머의 데이터를 재기입한다.
저장 매니저(110)는 저장 매니저(110)가 프로그래머(160) 또는 호스트(170)에 연결되어 있는지를 여러가지 방법을 통해 알 수 있는바, 이러한 방법들은 다음과 같다. (1) 저장 매니저(110)는, 저장 매니저(110)로 전송될 데이터가 프로그래머의 데이터인지를 알려주는 정보 혹은 신호를 프로그래머(160)로부터 수신할 수도 있다. (2) 저장 매니저(110)는 제 1 저장 셋업을 이용하여 데이터를 저장하라는 명시적인 커맨드를 프로그래머(160)로부터 수신할 수도 있다. 또는, (3) 저장 매니저(110)는 아래에 설명된 바와 같이, 내부적으로/국부적으로-기초하는 의사 결정 매커니즘(internally/locally-based decision making mechanism)을 이용할 수도 있다. 저장 매니저(110)는, 프로그래머(160)로부터 수신된 커맨드와 저장 매니저가 프로그래머(160)로부터 수신하는 하나 이상의 데이터 저장 요청들 중 임의의 것에 기초하여(또는 이에 부합하여), 저장 디바이스(100)가 프로그래머(160)에 연결되었는지를 자동으로 판별한다. 저장 매니저(110)는 첫번째 데이터(first data)를 수신하기 전에 혹은 첫번째 데이터를 수신한 결과로서, 제 1 저장 셋업을 디폴트 저장 셋업으로 선택할 수도 있다(다음을 유의해야 하는바, 저장 매니저(110)가 데이터 저장을 관장하기 때문에, 메모리 셀들(122)에 저장하기 위하여 수신하는 데이터가 "첫번째 데이터" , "두번째 데이터(second data)" 기타등등 인지를 저장 매니저(110)가 "알고있다" 라고 가정되며, 따라서 저장 매니저(110)는 상기 첫번째 데이터가 프로그래밍 디바이스로부터 저장 매니저(110)로 전송되었다고 가정할 수 있다). 대안적으로는, 저장 매니저(110)가 프로그래밍 디바이스와 통신하고 있음을 프로그래머(160)가 저장 매니저(110)에게 알려준다. 예를 들어, 프로그래머(160)는, 저장 매니저(110)가 프로그래밍 디바이스에 연결되었음을 저장 매니저(110)에게 알려주기 위한 전용 커맨드 혹은 전용 표시(dedicated command or indication)를 이용할 수도 있다. 프로그래머(160)가 저장 매니저(110)와 임의의 데이터 전송 세션을 개시하기 이전에, 프로그래머(160)는 이러한 커맨드 혹은 통지를 저장 매니저(110)에게 전송할 수도 있다. 대안적으로는, 호스트에 의해서 이용되지는 않지만, 프로그래밍 디바이스에 의해서 고유하게(uniquely) 이용되는 특정한 데이터 스트링(예컨대, 특정 접두어(prefix), 특정 접미어(suffix) 등등)을 데이터 혹은 상기 데이터에 관련된 메타데이터에서 검출함에 의해서, 저장 매니저(110)는 프로그래머(160)와 통신한다는 것을 인지할 수 있다.
도5는 예시적인 실시예에 따라 프로그래머의 데이터를 복원하는 방법에 관한 도면이다. 도5는 도1 및 도2를 참조하여 설명될 것이다. 프로그래머(160)에 의해서 저장 디바이스(100)에 프리로딩된 프로그래머의 데이터(예컨대, GPS 맵, 비디오 클립 및 음악들 등등)를 호스트의 사용자가 이용할 수 있게 하기 위하여, 저장 디바이스(100)가 호스트(170) 내에 내장된다고 가정하자. 단계 510에서, 저장 매니저(110)는 저장 디바이스(100)가 호스트(170)에 내장되어 있으며 그리고 프리로딩된 데이터(예컨대, 프로그래머의 데이터)를 포함하고 있다고 판별한다. 저장 디바이스(100)가 호스트(170)에 내장되어 있는 동안에, 저장 매니저(110)는 제 1 저장 셋업을 이용하여 프로그래머의 데이터 혹은 상기 프로그래머의 데이터의 선택된 부분들을 메모리 셀들의 제 1 그룹(예컨대, 그룹 124)으로부터 통상적으로 판독하도록, CSSM(130)을 설정한다(단계 520). 저장 디바이스(100)가 프로그래머(160)에 연결되는 때, 저장 매니저(110)는 제 1 저장 셋업에 따라 제 1 그룹의 메모리 셀들을 동작시키도록 CSSM(130)을 설정하며 그리고 호스트(170)에 의해서 파워 업된 이후에 프로그래머의 데이터 혹은 프로그래머의 데이터의 선택된 부분들을 제 1 그룹의 메모리 셀들로부터 통상적으로 판독하기 위해서 저장 매니저(110)는 제 1 저장 셋업 설정을 유지한다.
단계 520에서 통상적으로 판독되었던 프로그래머의 데이터가 저장 매니저(110)에 의해서 교정될 수 없는 에러 데이터 비트들 EA 를 포함한다고 가정하면, 저장 매니저(110)는 단계 530에서 비통상적인 판독 기준 전압들의 세트를 이용하도록 CSSM(130)을 재설정하며; 상기 비통상적인 판독 기준 전압들의 세트를 이용하여 프로그래머의 데이터를 재판독하며, 그리고 재판독된 프로그래머의 데이터에 있는 에러 데이터 비트들의 개수 EA 를 재계산한다. 저장 매니저(110)는, 프로그래머의 데이터에 있는 에러 데이터 비트들의 개수 EA 가 저장 매니저(110)에 의해서 교정가능해질 때까지(즉, EA ≤ ET 가 될 때까지), 단계 530을 반복한다. 단계 530은 도6을 참조하여 상세하게 설명된다.
단계 540에서, 저장 매니저(110)는 프로그래머의 데이터에 있는 에러 데이터 비트들을 교정하며 그리고 교정된 프로그래머의 데이터 혹은 프로그래머의 데이터의 선택된 일부분들을 제 1 저장 셋업을 이용하여 제 2 그룹의 메모리 셀들(예컨대, 그룹 126)에 재기입한다. 즉, 저장 매니저(110)가 프로그래머의 데이터를 복원한 이후에, 저장 매니저(100)는 제1 저장 셋업으로 복귀하여(revert or reinstate) 또는 제1 저장 셋업을 재이용하여(resuse), 프로그래머의 데이터를 메모리 셀(122)에 재기입한다. 이후, 저장 매니저(110)는 프로그래머의 데이터 혹은 프로그래머의 데이터의 일부를 리프레시할 수 있다. 다음과 같은 경우가 발생할 수도 있는바, 판독 기준 전압들이 아무리 하강된다 하더라도 저장 매니저가 교정할 수 없을 정도로 프로그래머의 데이터가 리플로우 공정에 의해서 훼손되는 경우도 발생할 수 있다. 이러한 경우, 저장 매니저(110)는 프로그래머의 데이터가 교정불가능하다는 메시지를 호스트(170)에 전송할 수도 있다. 프로그래머의 데이터를 재판독하고 그리고 재판독된 프로그래머의 데이터에 있는 에러 데이터 비트들의 개수를 재계산하는 단계들이 소정 횟수 반복된 이후에, 혹은 하나 이상의 관련 판독 기준 전압들이 기결정된 레벨(예컨대, 그 초기 레벨의 75%)에 도달하였고 그리고 에러 데이터 비트들이 여전히 교정불가능한 경우에, 저장 매니저(110)는 교정불가능한 데이터에 대한 정보를 호스트 디바이스에게 통지할 수도 있다.
저장 매니저(110)는 여러가지 방법들을 통해 상기 저장 매니저(110)가 호스트(170)에 연결되었음을 판별할 수 있는바, 이러한 방법들은 다음과 같다. (1) 저장 매니저(110)는 저장 매니저(110)가 호스트 디바이스와 통신하고 있음을 나타내는 정보 또는 신호를 호스트(170)로부터 수신할 수 있다. (2) 저장 매니저(110)는, 제 1 저장 셋업을 처음 이용함에 의해서 그리고 필요하다면 제 2 저장 셋업을 이용함에 의해서 제 1 그룹의 셀들로부터 프로그래머의 데이터를 판독하고 그리고, 프로그래머의 데이터에 있는 에러 데이터 비트들이 교정된 이후에, 교정된 프로그래머의 데이터를 제 1 저장 셋업을 재이용하여 셀들의 제 2 그룹에 재기입하라는, 명시적인 커맨드를 호스트(170)로부터 수신할 수도 있다. (3) 저장 매니저(110)는 내부적으로/국부적으로-기초한 의사 결정 매커니즘 혹은 회로를 이용할 수도 있는데, 이는 다음에 상술되는 바와 같다.
저장 매니저(110)는 예컨대, 다음의 것들 중 하나에 기초하여/부합하여, 저장 디바이스(110)가 호스트(170)에 내장되었음을 자동으로 판별할 수 있다. 저장 매니저(110)가 호스트(170)로부터 수신하는 커맨드, 저장 매니저(110)가 호스트(170)로부터 수신하는 특정 데이터 혹은 특정 데이터 스트링, 또는 소정 패턴에 매칭되며 저장 매니저(110)가 호스트(170)로부터 수신하는 하나 이상의 데이터 저장 요청들. 제 1 그룹의 메모리 셀들로부터 프로그래머의 데이터를 판독하기 위하여, 호스트(170)에 의해서 파워 업된 이후에 혹은 호스트(170)와 통신하는 동안, 저장 매니저(100)는 디폴트 저장 셋업으로서 제 1 저장 셋업을 초기에 이용할 수도 있다. 저장 매니저(110)가 몇번이나 파워 업되는지를 저장 매니저(110)가 알고 있다고 가정하면, 저장 매니저(110)가 2번째로 파워 업되는 때에, 저장 매니저(110)는 저장 매니저(110)가 호스트 디바이스에 의해서 파워 업된다고 가정할 수 있다. 저장 매니저(110)의 2번째 파워 업의 결과로서, 저장 매니저(110)는 제 1 저장 셋업을 이용하여, 그리고 필요한 경우에는 제 2 저장 셋업을 이용하여 프로그래머의 데이터 혹은 그 일부를 판독하며, 그리고 프로그래머의 데이터가 교정된 이후에 제 1 저장 셋업을 재사용하여 이를 재기입한다.
전술한 프로그래머의 데이터의 데이터 스트링에 관하여, 저장 매니저(110)가 소정 디바이스와 통신하고 있고 그리고 고유(unique) 데이터 스트링을 수신하지 않는다면, 저장 매니저(10)는 자신이 호스트 디바이스와 통신하고 있다고 가정하며 그리고 이에 따라 행동한다. 대안적으로는, 호스트 디바이스들에 의해서는 고유하게 이용되지만 프로그래밍 디바이스들에 의해서는 이용되지 않는 특정한 데이터 스트링(예컨대, 특정 접두어(prefix), 특정 접미어(suffix) 등등)을 호스트로(170)부터 수신함으로써, 저장 매니저(110)는 자신이 호스트(170)와 통신하고 있음을 알 수도 있다. 대안적으로는, 두번째 데이터(즉, 프로그래머의 데이터 이외의 데이터)를 하나 이상의 메모리 셀들에 기입하라는 요청을 저장 매니저(110)가 호스트로(170)부터 수신하고, 그리고 이들 메모리 셀들이 소정의 한계(limit) 혹은 범위(range)를 초과하는 논리 블록 어드레싱(Logical Block Addressing : LBA) 어드레스들을 이용함에 의해서 액세스 가능하다면, 저장 매니저(110)는 자신이 호스트(170)에 연결되었다라고 판별할 수도 있다. 대안적으로는, LBA 어드레스 "m" 을 이용하여 두번째 데이터를 기입하라는 요청과 n은 m 이하인 LBA 어드레스 "n" 을 이용하여 세번째 데이터를 기입하라는 후속 요청을 저장 매니저(110)가 호스트로(170)부터 수신한다면, 저장 매니저(110)는 자신이 호스트(170)에 연결되었다라고 판별할 수도 있다. 대안적으로는, 이미 이용된 LBA 어드레스를 이용하여 데이터를 기입하라는 요청을 저장 매니저(110)가 호스트로(170)부터 수신한다면, 저장 매니저(110)는 자신이 호스트(170)에 연결되었다라고 판별할 수도 있다. 대안적으로는, 이미 이용된 LBA 어드레스를 이용하여 데이터를 기입하라는 요청을 저장 매니저(110)가 호스트로(170)부터 수신한다면, 저장 매니저(110)는 자신이 호스트(170)에 연결되었다라고 판별할 수도 있다. 대안적으로는, 과도한 사이즈의 데이터(overly sized data)를 저장 디바이스에 기입하라는 요청을 저장 매니저(110)가 호스트로(170)부터 수신한다면, 저장 매니저(110)는 자신이 호스트(170)에 연결되었다라고 판별할 수도 있다. "과도한 사이즈의 데이터"는 예컨대, 관련된 저장 디바이스의 저장 용량의 약 절반인 사이즈를 갖는 데이터가 될 수 있다. 대안적으로는, 저장 디바이스(100)는 저장 매니저(100)를 위해 신호를 생성하기 위한 전기적인 단자 및 회로 포함할 수도 있는바, 저장 매니저(100)는 저장 매니저(110)가 프로그래밍 디바이스(예컨대, 프로그래머 160)에 연결되었는지 혹은 호스트(예컨대, 호스트 170)에 내장되었는지를 상기 전기적인 단자 및 회로에 의해서 판별할 수 있다. 만일, 저장 디바이스(100)가 호스트에 의해서 처음 파워 업될 때에 이미 데이터를 저장하고 있다면, 저장 매니저(110)는 저장 디바이스에 이미 저장되어 있는 상기 데이터가 프로그래머의 데이터라고 판별할 수 있다. 저장 매니저(110)는 프리로딩된 데이터를 저장 디바이스(100)가 포함하고 있지 않다고 판별할 수도 있다. 프리로딩된 데이터를 저장 디바이스(100)가 포함하고 있지 않다는 판별 결과에 따라, 저장 매니저(110)는 제 1 저장 셋업에 따라 메모리 셀들(122)를 동작시키도록 CSSM(130)을 영구히 설정할 수도 있다.
도6은 예시적인 실시예에 따라 저장 디바이스에 데이터를 프리로딩하는 방법에 관한 도면이다. 도6은 도1, 도2, 도3A 및 도3B를 참조하여 설명될 것이다. 도6에는 수동으로(manually) 수행되는 2개의 단계들이 도시되어 있다. 단계 610은 저장 디바이스(100)의 제조업자에 의해서 수행되며 그리고 단계 630은 호스트(170)의 제조업자에 의해서 수행된다. 단계 610에서, 저장 디바이스의 제조업자는 저장 디바이스(100)를 프로그래머(160)에 연결하며 그리고 단계 630에서 호스트의 제조업자/조립자(assembler)는 저장 디바이스(100)를 호스트(170)에 내장한다. 단계 620에서, 저장 디바이스(100)의 제조업자(또는, 다른 사람)는 제 1 저장 셋업을 이용하여, 즉 MBC 저장 체계를 통상적으로 이용하여, 제 1 그룹의 메모리 셀들(예컨대, 그룹 124)로 프로그래머의 데이터를 통상적인 방식으로 프리로딩한다. 저장 디바이스(100)가 호스트(170)에 내장된 이후에, 단계 640에서 저장 매니저(110)는, MBC 저장 체계를 통상적으로 이용하여 즉, 통상적인 판독 기준 전압들을 이용하여 또는 필요한 경우에는 MBC 저장 체계를 비통상적으로 이용하여 즉, 비통상적인 판독 기준 전압들을 이용하여, 프로그래머의 데이터(또는, 프로그래머의 데이터의 하나 이상의 선택된 부분들)를 제 1 그룹의 메모리 셀들로부터 판독한다. 즉, 단계 640은 통상적인 판독 기준 전압들을 이용함에 의해서 판독 동작이 개시되고 이후, 필요한 경우(단계 660 참조)에는 비통상적인 판독 기준 전압들을 이용하도록 반복된다. 앞서 설명한 바와 같이, 통상적인 판독 기준 전압들은 정보(214)를 참조하거나 혹은 정보(214)에 의해 정의되며, 그리고 비통상적인 판독 기준 전압들은 정보(220)를 참조하거나 혹은 정보(220)에 의해 정의된다.
단계 650에서, 저장 매니저(110)를 ECC(190)를 이용하여 프로그래머의 데이터에 있는 에러 데이터 비트들을 검출한다. 만일, EA = 0 이라면(즉, 이는 프로그래머의 데이터에 에러 데이터 비트들이 없음을 의미하며, 단계 650에서 "아니오" 로 표시됨), 저장 매니저(110)는 제 2 저장 셋업(즉, 정보 220)의 이용을 삼가한다(refrain). 저장 매니저(110)는 단계 680에서 프로그래머의 데이터를 리프레시(652)할 것을 결정할 수도 있으며, 혹은 프로그래머의 데이터에 대한 리프레시를 삼가(654)할 것을 결정할 수도 있다. 만일, EA > 0 이라면(즉, 이는 프로그래머의 데이터에 에러 데이터 비트들이 있음을 의미하며, 단계 650에서 "예" 로 표시됨), 저장 매니저(110)는 단계 660에서 에러 데이터 비트들의 개수가 교정가능한지의 여부를 체크한다. 앞서 설명한 바와 같이, 이용되고 있는 ECC(예컨대, ECC 190)에 의해서 교정될 수 있는 에러 데이터 비트들의 최대 개수 ET 보다 에러 데이터 비트들의 개수 EA 가 작거나 같다면, 에러 데이터 비트들은 교정가능하다. 만일, ECC(190)를 이용하여 에러 데이터 비트들이 교정될 수 있다면(단계 660에서 "예"로 표시됨)(즉, EA ≤ ET 라면), 저장 매니저(110)는, 단계 670에서 에러 데이터 비트들을 교정하고(ECC 190를 이용하여) 그리고 단계 680에서 프로그래머의 데이터를 메모리 셀들(122)에 재기입함에 의해서, 프로그래머의 데이터를 리프레시한다. 하지만, 에러 데이터 비트들이 교정될 수 없다면(단계 660에서 "아니오"로 표시됨)(즉, EA > ET 라면), 저장 매니저(110)는, 에러 데이터 비트들의 개수를 감소시키기 위하여 루프(662)를 반복적으로 이용한다. 상기 반복 루프(662)는 단계 660에서 특정된 조건(즉, 즉, EA ≤ ET)이 만족되는 때에 종료한다.
단계 690에서, 저장 매니저(110)는 CSSM(130)에게 지시하여 정보(220를 선택하게 하게 하는바, 이는 프로그래머의 데이터를 재판독하기 위한 것이다. 도3b의 예시적인 비통상적인 판독 기준 전압들을 참조하면, 정보(220)는 비통상적인 판독 기준 전압들(352, 362, 372)에 관련되거나 혹은 이들을 정의한다. 판독 기준 전압들(352, 362, 372)은 통상적인 판독 기준 전압들(350, 360, 370)의 레벨들에 비하여 각각 낮춰진 레벨을 갖는데, 이는 전술한 바와 같다. 일례로서, 통상적인 판독 기준 전압(370)의 레벨은 4.5 V 이며 비통상적인 판독 기준 전압(372)의 레벨은 4.4 V 이다. 또한, 통상적인 판독 기준 전압(360)의 레벨은 2.5 V 이며 비통상적인 판독 기준 전압(362)의 레벨은 2.4 V 이다. 또한, 통상적인 판독 기준 전압(350)의 레벨은 0.5 V 이며 비통상적인 판독 기준 전압(352)의 레벨은 0.4 V 이다.
비통상적인 판독 기준 전압들(352, 362, 372)을 선택하도록 CSSM(130)이 지시받은 이후에, 저장 매니저(110)는 이들을 이용하여 프로그래머의 데이터를 재판독한다(단계 630). 단계 650 및 단계 660에서, 저장 매니저(110)는 프로그래머의 데이터에 에러 데이터 비트들이 여전히 존재하는지 여부와 만일 에러 데이터 비트들이 있다면 이들이 교정가능한지의 여부를 다시 한번 각각 체크한다. 만일, 에러 데이터 비트들이 여전히 교정불가능하다면(즉, EA > ET 라면), 판독 기준 전압들의 레벨들은 더욱 하강된다(즉, 더 낮아진 레벨의 비통상적인 판독 기준 전압들이 적용된다).
하나의 일례로서, 사용되는 판독 기준 전압들의 레벨들은 도면 부호 374, 364, 및 354에서 도시된 레벨들과 같이 더욱 하강된다. 일례로서, 비통상적인 판독 기준 전압(372)의 레벨 4.4 V 에 대조적으로, 비통상적인 판독 기준 전압(374)의 레벨은 4.3 V 이다. 또한, 비통상적인 판독 기준 전압(362)의 레벨 2.4 V 에 대조적으로, 비통상적인 판독 기준 전압(364)의 레벨은 2.3 V 이다. 또한, 비통상적인 판독 기준 전압(352)의 레벨 0.4 V 에 대조적으로, 비통상적인 판독 기준 전압(354)의 레벨은 0.3 V 이다.
CSSM(130)이 비통상적인 판독 기준 전압들(354, 364, 374)을 선택한 이후에, 저장 매니저(110)는 단계 630에서 이들을 이용하여 프로그래머의 데이터를 재판독한다. 단계 650 및 단계 660에서, 저장 매니저(110)는 프로그래머의 데이터에 에러 데이터 비트들이 여전히 존재하는지 여부와 만일 에러 데이터 비트들이 있다면 이들이 교정가능한지의 여부를 다시 한번 각각 체크한다. 만일, 에러 데이터 비트들이 교정불가능하다면, 판독 기준 전압들(354, 364, 374)의 레벨들에 비하여 더 낮아진 레벨들을 각각 갖는 판독 기준 전압들을 이용하여 단계 690, 640, 650, 및 660 이 반복된다. 그렇지 않다면(즉, 에러 데이터 비트들이 교정가능하다면), 단계 670과 단계 680이 전술한 바와 같이 수행된다.
도3B에 도시된 바와 같이, 데이터 판독을 위해 사용된 판독 기준 전압들의 레벨들은, 판독 기준 전압 그룹들(356, 366, 376)에 대해서 균일하게(evenly) 하강되며 그리고 각각의 그룹들 내에서 선형적으로(linearly) 하강된다. 즉, 판독 기준 전압(350)과 판독 기준 전압(352) 사이의 전압 차이, 판독 기준 전압(360)과 판독 기준 전압(362) 사이의 전압 차이, 및 판독 기준 전압(370)과 판독 기준 전압(372) 사이의 전압 차이는 0.1 V 인바, 따라서 균일한 차이를 갖는다. 판독 기준 전압(352)과 판독 기준 전압(354) 사이의 전압 차이, 판독 기준 전압(362)과 판독 기준 전압(364) 사이의 전압 차이, 및 판독 기준 전압(372)과 판독 기준 전압(374) 사이의 전압 차이는 또한 0.1 V 인바, 따라서 판독 기준 전압들의 각각의 그룹 내에서 선형적으로 감소한다. 프로그래머의 데이터를 (재)판독하는데 이용되는 판독 기준 전압들은 불균일하게(unevenly) 하강될 수도 있는데, 그 이유 및 일례는 다음과 같다. 낮은 임계전압들을 갖는 메모리 셀들보다 높은 임계전압들을 갖는 메모리 셀들에 대해서 리플로우 공정이 더 큰 영향을 미치기 때문에, 판독 기준 전압(370)의 레벨은 판독 기준 전압(360)의 레벨 보다 더 큰 정도로 하강될 수 있다. 동일한 이유로, 판독 기준 전압(360)의 레벨은 판독 기준 전압(350)의 레벨 보다 더 큰 정도로 하강될 수 있다. 예를 들어, 판독 기준 전압(370)의 레벨은 4.5V 에서 4.2V 로 감소될 수 있다(즉, △VD,C = 0.3V, 여기서 "△VD,C"는 이진 상태 "D"와 이진 상태 "C"를 구별하는데 이용되는 판독 기준 전압을 지칭한다). 또한, 판독 기준 전압(360)의 레벨은 2.5V 에서 2.3V 로 감소될 수 있다(즉, △VC,B = 0.2V, 여기서 "△VC,B"는 이진 상태 "C"와 이진 상태 "B"를 구별하는데 이용되는 판독 기준 전압을 지칭한다). 또한, 판독 기준 전압(350)의 레벨은 0.5V 에서 0.4V 로 감소될 수 있다(즉, △VB,A = 0.1V, 여기서 "△VB,A"는 이진 상태 "B"와 이진 상태 "A"를 구별하는데 이용되는 판독 기준 전압을 지칭한다).
대안적으로 혹은 부가적으로, 프로그래머의 데이터는, 그 레벨들이 비-선형적으로(non-linearly) 하강되는 판독 기준 전압들을 적용하여 제 1 그룹의 메모리 셀들로부터 판독될 수도 있는바, 그 이유 및 일례는 다음과 같다. 앞서 설명한 바와 같이, 리플로우 공정은 낮은 임계전압들을 갖는 메모리 셀들보다 높은 임계전압들을 갖는 메모리 셀들에 대해 더 큰 영향을 끼친다. 따라서, 판독 기준 전압(370)의 레벨은 첫번째 판독 이터레이션(first reading iteration)에서 더 큰 정도로 하강될 수 있으며 그리고 연속되는 이터레이션(consecutive iteration)에서는 더 적은 정도로 하강될 수 있다. 예를 들어, 판독 기준 전압 그룹(376)을 참조하면, 이진 상태 "D"와 "C" 사이에 위치한 판독 기준 전압의 레벨은 첫번째 이터레이션에서는 4.5V 에서 4.2V 로 하강될 수 있으며(△VD,C = 0.3V), 두번째 이터레이션에서는 4.2V 에서 4.0V 로 하강될 수 있으며(△VD,C = 0.2V), 세번째 이터레이션에서는 4.0V 에서 3.9V 로 하강될 수 있다(△VD,C = 0.1V).
도2의 정보(220)는 판독 기준 전압의 각각의 그룹에 대해서 개별적인 타겟 판독 기준 전압들에 관한된 것이거나 혹은 이를 정의할 수 있다. 예를 들어, 정보(220)는, 그룹(356)의 판독 기준 전압들(352, 354), 그룹(366)의 판독 기준 전압들(362, 364), 그리고 그룹(376)의 판독 기준 전압들(372, 374)을 정의하는 정보 또는 이에 관련된 정보를 포함할 수 있다. 일실시예에서는, 현재의 이터레이션에서 이용되는 판독 기준 전압들 간의 전압 차이(예컨대, 전압 차이들 390과 392)와 다음 번 이터레이션에서 사용될 판독 기준 전압들만이 정보(220)에 특정된다. 예를 들어, 정보(220)는 판독 기준 전압(370)과 판독 기준 전압(372) 사이의 전압 차이(즉, 전압 스텝 : voltage step)인 0.3V, 그리고 판독 기준 전압(372)과 판독 기준 전압(374) 사이의 전압 차이(즉, 전압 스텝 : voltage step)인 0.2V 등등을 특정할 수 있다. 다른 실시예에서, 판독 기준 전압의 좌측 쉬프트는 프로그래머의 데이터에 있는 에러 데이터 비트들의 개수에 상관되거나(correlated to) 혹은, 에러 데이터 비트들의 개수에 의존(contingent on)할 수 있는바, 에러 데이터 비트들이 많으면 많을수록 판독 기준 전압이 더 많이 좌측으로 쉬프트된다. 예를 들어, 프로그래머의 데이터에 있는 에러 데이터 비트들의 개수가 에러 데이터 비트들의 교정가능한 최대 개수 EA 의 2배인 경우 판독 기준 전압(370)은 0.6V 만큼 좌측으로 쉬프트될 수 있으며 또는, 교정가능한 최대 개수의 1.3 배인 경우에는, 0.4V 만큼 좌측으로 쉬프트될 수 있다(기타 등등). 정보(220)는, 프로그래머의 데이터에 있는 에러 데이터 비트들의 실제 개수와 하나 이상의 판독 기준 전압들의 좌측 쉬프트 사이에서의 종속성/연관성을 특정할 수도 있다. 판독 기준 전압들을 하강시키는데 이용된 전압 스텝들은, 전술한 바와 같이 에러 데이터 비트 감소 프로세스가 반복됨에 따라, 좁아질 수도 있다.
도7은 본 발명의 일실시예에 따라 저장 매니저(110)를 위해 접속 신호(connectivity signal)를 생성하기 위한 전기적인 단자(730) 및 회로(740)를 예시한다. 도7은 도1을 참조하여 설명될 것이다. 저장 디바이스(100)는 통상적인 단자들(710)의 세트를 포함하며 그리고 프로그래머(160)는 통상적인 단자들(720)의 세트를 포함한다. 저장 디바이스(100)와 프로그래머(160)가 연결될 때(메모리 셀들 122에 데이터를 프리로딩하기 위하여), 각각의 단자들(710)은 단자들(720)의 단자에 접촉한다. 단자들(710, 720) 중 일부는 저장 디바이스(100)를 파워 업시키기 위하여 프로그래머(160)로부터 전력 전송을 용이하게 하며, 그리고 단자들(710, 720) 중 다른 단자들은 2개의 디바이스들 사이에서 통신 및 데이터 전송을 용이하게 한다.
저장 디바이스(100)는 전기 단자(730)를 포함하는바, 이는 저장 디바이스(100)와 프로그래머(160)의 연결에 관한 제 1 신호(예컨대, 제 1 신호 762)를 프로그래머(160)로부터 수신하거나 혹은 저장 디바이스(100)와 호스트(170)의 연결에 관한 제 1 신호를 호스트(170)로부터 수신하기 위한 것이다. 또한, 저장 디바이스는 회로(740)를 포함하는바, 이는 전기 단자(730)와 저장 매니저(110) 사이에 기능적으로 개재된다(functionally interposed). 회로(740)는 제 1 신호(762)로부터 제 2 신호(750)를 생성한다. 제 2 신호(750)는 저장 디바이스(100)가 프로그래머(160)에 연결되어있는지의 여부를 저장 매니저(110)에게 알려준다. 이하에서, 상기 제 2 신호(750)는 "접속 신호"라고 지칭된다. 접속 신호(750)는 "하이(high)" 상태와 "로우(low)" 상태 사이에서 스위칭될 수 있다. 일례로서, 접속 신호(750)는 프로그래머(160)에 의해서 "하이" 상태로 외부적으로 강제되는바, 이는 저장 디바이스(100)가 현재 프로그래밍 디바이스에 연결되었음을 저장 매니저(110)에게 알려준다. 프로그래밍 디바이스가 아닌 디바이스(예컨대, 호스트 170)에 의해서 저장 디바이스(100)가 파워 업되는 때, 접속 신호(750)는 "로우" 상태로 내부적으로 강제된다. 따라서, 저장 매니저(110)는, 접속 신호(750)가 "하이" 상태에 있는지 혹은 "로우" 상태에 있는지에 근거하여, 저장 디바이스(100)가 프로그래머(160)에 연결되는지 혹은 호스트(170)에 내장되는지를 판별할 수 있다. 접속 신호(750)는 아래에 설명된 바와 같이 생성된다. 프로그래머(160)는 단자(760)를 포함하는바, 상기 단자(760)는 2개의 디바이스들이 맞물리는 때에 단자(730)에 접촉된다. 단자(730)와 단자(760)는 접속 단자라고 지칭된다. 저장 디바이스(100) 및 프로그래머(160)와 달리, 호스트(170)는 접속 단자를 갖고 있지 않음을 유의해야 한다. 도7에 도시된 바와 같이, 접속 단자(760)는 제 1 신호(762)에 내부적으로 연결되며, 상기 일례에서 제 1 신호(762)는 기준 전압 "+V" (예를 들면, +5V)이다. 따라서, 저장 디바이스(100)가 프로그래머(160)에 연결되는 때에, 기준 전압(762)은 접속 단자(730)를 통하여 접속 단자(760)로부터 회로(740)로 전송된다. 일례로서, 상기 회로(740)는 풀-다운(pull-down) 저항(742)과 그 전압 이득(G)이 +1과 같아질 수 있는 신호 증폭기(744)(즉, 단일 이득 증폭기 : unity amplifier)를 포함한다. 기준 전압(762)은 신호 증폭기(744)의 입력 단자(770)로 공급되며, 그리고 G = +1 이라 가정하면, 신호 증폭기(744)는 입력 전압 "+V"의 레벨과 실질적으로 동일한 레벨을 갖는 소정 전압(즉, 접속 신호 750, 전술한 제 2 신호)을 출력한다. 즉, 접속 신호(750)는 "하이" 상태에 있다. 전압 이득(G)의 값은 +1과 다를 수도 있으며, 이러한 경우, 접속 신호(750)는 그 전압 레벨이 소정 값보다 큰 경우(예컨대, 기준 전압 762의 레벨의 60% 보다 큰 경우) "하이" 상태에 있다고 여겨질 수도 있다.
도8은 도7의 저장 디바이스와 통상적인 호스트 디바이스를 도시한다. 도8은 도1 및 도7을 참조하여 설명될 것이다. 저장 디바이스(100)가 프로그래머(160)로부터 연결해제(disconnect)되고 그리고 호스트(170)에 내장되는 때, 저장 디바이스(100)의 접속 단자(730)는 풀-다운 저항(742)를 통하여 접지 전위(즉, "Gnd" , 도면부호 732)로 강제된다. 결과적으로, 신호 증폭기(744)의 입력 단자(770)에서의 전압은 실질적으로 0 이 된다. 따라서, 신호 증폭기(744)는 그 레벨이 실질적으로 0 인 소정 전압(즉, 접속 신호 750)을 출력하는바, 이는 접속 신호(750)가 "로우" 상태에 있음을 의미한다.
전기 회로(740)는 그 전부 또는 일부가 저장 매니저(110) 내에 상주할 수도 있으며 또는 도7 및 도8에 도시된 바와 같이 저장 매니저(100)의 외부에 있을 수도 있다. 풀-다운 저항(742)은 풀-업 저항으로 대체될 수도 있으며, 그리고 신호 증폭기(744)는 논리 인버터가 될 수도 있다. 전기 회로(740)의 세부 내용에 따라,
저장 매니저(110)는 접속 신호(750)의 "하이" 상태를 저장 디바이스(100)가 프로그래밍 디바이스에 연결되었다라고 해석할 수도 있고(전술한 바와 같이), 또는 저장 디바이스(100)가 호스트 디바이스에 연결되었다라고 해석할 수도 있으며, 또한 저장 매니저(110)는 접속 신호(750)의 "로우" 상태를 이에 상응하게 해석할 것이다. 설명을 위한 일례로서, 제 1 신호를 제공하는 전기 단자(즉, 전기 단자 760)는 프로그래머(160)의 내부에 존재한다. 하지만, 상기 전기 단자(760)는 프로그래머(160) 대신에 호스트(170) 내부에 존재할 수도 있으며, 그리고 저장 매니저(110)는 제 2 신호(예컨대, 접속 신호 750 등등) 이에 상응하게 해석할 수 있다.
저장 매니저(110)는, 표준적인 상용 시스템-온-칩 디바이스(standard off-the-shelf System-on-Chip(SoC) device) 혹은 시스템-인-패키지 디바이스(System-in-Package(SiP) device) 또는 범용 프로세싱 유닛이 될 수 있는바, 이들은 저장 매니저(110)에 의해서 실행되는 때에 본 명세서에 설명된 설정들, 단계들, 동작들, 결정들 및 평가들을 수행할 수 있는 특화된 소프트웨어 혹은 어플리케이션(예컨대, 어플리케이션 112)을 구비한다. 대안적으로, 저장 매니저(110)는 하드웨어를 이용함에 의해서 본 명세서에 설명된 상기 설정들, 단계들, 동작들, 결정들 및 평가들을 구현하는 주문형집적회로(ASIC)가 될 수도 있다.
본 명세서에서 관사 "a" 및 "an" 은, 문맥에 따라, 하나 또는 둘 이상의(즉, 적어도 하나) 문법상의 객체를 지칭하는데 이용된다. 설명을 위한 일례로서, "구성요소(an element)" 라 함은, 문맥에 따라, 하나의 구성요소 혹은 둘 이상의 구성요소들을 의미할 수 있다. 본 명세서에서, "포함한다(including)" 라는 용어는 " ~ 를 포함하지만 이에 한정되지는 않는(including but not limited to)" 라는 문구를 의미하며 그리고 이러한 문구과 호환적으로 사용된다. 본 명세서에서, "또는(or)" 과 "그리고(and)" 라는 용어는, 문맥상에서 명시적으로 다른 것을 의미하지 않는 한, "및/또는(and/or)" 이라는 용어를 의미하며 그리고 이러한 용어와 호환적으로 사용된다. 본 명세서에서, "~ 와 같은(such as)" 이라는 용어는 "~ 와 같지만 이에 한정되지는 않는(such as but not limited to)" 라는 문구를 의미하며 그리고 이러한 문구과 호환적으로 사용된다.
전술한 내용들은 메모리 카드들, SD-구동 플래시 메모리 카드들, 플래시 저장 디바이스들, "Disk-on-Key" 디바이스들과 같은 다양한 유형의 대용량 저장 디바이스들에 관련됨을 유의해야 하며, 이들 저장 디바이스들은 범용 직렬 버스(USB) 인터페이스, USB 플래시 드라이브(UFD), 멀티미디어 카드(MMC), 시큐어 디지털(SD), 미니 SD, 마이크로 SD 등등과 함께 제공된다.
이상과 같이 본 발명의 예시적인 실시예들이 서술되었지만, 해당 기술분야의 당업자라면 개시된 실시예들의 변형예들도 본 발명의 범위에 속할 것임을 능히 이해할 것이다. 따라서, 대안적인 실시예들은 더 많은 모듈들, 더 적은 모듈들, 및/또는 기능적으로 동등한 모듈들을 포함할 수 있다. 따라서, 다음에 기재된 청구항들의 범위는 본 명세서에 개시된 바에 의해서 한정되지 않는다.

Claims (21)

  1. 저장 디바이스에 데이터를 프리로딩하는 방법으로서, 상기 저장 디바이스는 저장 매니저와 복수의 메모리 셀들을 포함하며, 상기 저장 디바이스는 프로그래밍 디바이스로부터의 데이터를 상기 복수의 메모리 셀들의 제 1 그룹에 간직하며(containing), 호스트 디바이스에 내장되는 상기 저장 디바이스에서 상기 저장 매니저는,
    하나 이상의 판독 기준 전압들을 적용하여 메모리 셀들의 상기 제 1 그룹으로부터 상기 데이터를 판독하는 단계;
    상기 데이터에 있는 에러 데이터 비트들을 검출하고 그리고 상기 에러 데이터 비트들의 개수 EA 를 계산하는 단계;
    만일, EA 가 소정의 임계값 ET 보다 크다면,
    a) 소정의 전압값 만큼 상기 하나 이상의 판독 기준 전압들 각각을 하강시키며,
    b) 상기 하강된 하나 이상의 판독 기준 전압들을 적용하여 메모리 셀들의 상기 제 1 그룹으로부터 상기 데이터를 재판독하며,
    c) 메모리 셀들의 상기 제 1 그룹으로부터 재판독된 상기 데이터에서 EA 를 재계산하며, 그리고
    d) EA 의 재계산된 값이 상기 ET 보다 작거나 같아질 때까지, 상기 a) 내지 c)를 반복하는 단계, 각각의 반복(iteration)에서, 상기 하강된 하나 이상의 판독 기준 전압들은 또 다른 소정의 전압값 만큼 더 하강되며; 그리고
    만일, EA > 0 이라면,
    메모리 셀들의 상기 제 1 그룹으로부터 마지막으로 재판독된 상기 데이터를 리프레시하는 단계
    를 수행하는 것을 특징으로 하는 저장 디바이스에 데이터를 프리로딩하는 방법.
  2. 제1항에 있어서,
    상기 리프레시하는 단계는,
    상기 재판독된 데이터를, 상기 하강된 하나 이상의 판독 기준 전압들 중 가장 낮은 판독 기준 전압을 이용하여 교정하는 단계; 그리고
    상기 교정된 데이터를 상기 하나 이상의 판독 기준 전압들을 이용하여 상기 복수의 메모리 셀들의 제 2 그룹에 재기입하는 단계
    를 포함하는 것을 특징으로 하는 저장 디바이스에 데이터를 프리로딩하는 방법.
  3. 제1항에 있어서,
    상기 소정의 임계값 ET 는, 상기 저장 매니저에 의해서 교정될 수 있는 에러 데이터 비트들의 최대 개수인 것을 특징으로 하는 저장 디바이스에 데이터를 프리로딩하는 방법.
  4. 제1항에 있어서,
    상기 저장 매니저로 전송되는 접속 신호(connectivity signal)에 근거하여, 상기 저장 디바이스가 상기 호스트 디바이스에 내장된다라고 판별되는 것을 특징으로 하는 저장 디바이스에 데이터를 프리로딩하는 방법.
  5. 제1항에 있어서,
    상기 판독 기준 전압들은 균일하게(evenly) 하강되는 것을 특징으로 하는 저장 디바이스에 데이터를 프리로딩하는 방법.
  6. 제1항에 있어서,
    상기 판독 기준 전압들은 불균일하게(unevenly) 하강되는 것을 특징으로 하는 저장 디바이스에 데이터를 프리로딩하는 방법.
  7. 제1항에 있어서,
    상기 판독 기준 전압들은 선형적으로(linearly) 하강되는 것을 특징으로 하는 저장 디바이스에 데이터를 프리로딩하는 방법.
  8. 제1항에 있어서,
    상기 판독 기준 전압들은 비-선형적으로(non-linearly) 하강되는 것을 특징으로 하는 저장 디바이스에 데이터를 프리로딩하는 방법.
  9. 제1항에 있어서,
    상기 하나 이상의 판독 기준 전압들 중 하나 이상을 하강시키는 것은, 검출된 에러 데이터 비트들의 개수에 상관되거나(correlated to) 혹은 의존하는(contingent on) 것을 특징으로 하는 저장 디바이스에 데이터를 프리로딩하는 방법.
  10. 제1항에 있어서,
    상기 하나 이상의 초기 판독 기준 전압들은 상기 저장 디바이스의 유형에 부합하는 통상적인(conventional) 판독 기준 전압들인 것을 특징으로 하는 저장 디바이스에 데이터를 프리로딩하는 방법.
  11. 프로그래밍 디바이스에 연결가능하며 그리고 호스트 디바이스에 내장되도록 된 저장 디바이스로서, 상기 저장 디바이스는,
    데이터 저장을 위한 복수의 전하-저장 메모리 셀들을 갖는 메모리 디바이스;
    설정가능한(configurable) 저장 셋업 모듈(storage setup module);
    하나 이상의 판독 기준 전압들을 적용하여 상기 복수의 전하-저장 메모리 셀들을 동작시키도록 상기 저장 셋업 모듈을 설정하는 저장 매니저;
    를 포함하며,
    상기 저장 매니저는,
    A) 상기 저장 디바이스가 상기 프로그래밍 디바이스에 연결되는지를 판별하며 그리고 상기 저장 디바이스가 상기 프로그래밍 디바이스에 연결되어 있는 동안,
    상기 프로그래밍 디바이스로부터 데이터를 수신하며 그리고 하나 이상의 판독 기준 전압들을 이용하여 상기 데이터를 상기 복수의 전하-저장 메모리 셀들의 제 1 그룹에 기입하며;
    B) 상기 저장 디바이스가 상기 호스트 디바이스에 내장되는지를 판별하며 그리고 상기 저장 디바이스가 상기 호스트 디바이스에 내장되어 있는 동안,
    상기 하나 이상의 판독 기준 전압들을 이용하여 상기 복수의 전하-저장 메모리 셀들의 상기 제 1 그룹으로부터 상기 데이터를 판독하며;
    상기 데이터에 있는 에러 데이터 비트들을 검출하고 그리고 상기 에러 데이터 비트들의 개수 EA 를 계산하며;
    EA 가 소정의 임계값 ET 보다 큰지를 판별하며; 그리고
    만일, EA 가 ET 보다 크다면,
    a) 소정의 전압값 만큼 상기 하나 이상의 초기 판독 기준 전압들 각각을 하강시키며;
    b) 상기 하강된 하나 이상의 판독 기준 전압들을 이용하여 메모리 셀들의 상기 제 1 그룹으로부터 상기 데이터를 재판독하며;
    c) 메모리 셀들의 상기 제 1 그룹으로부터 재판독된 상기 데이터에서 EA 를 재계산하며, 그리고
    EA 의 재계산된 값이 상기 ET 보다 작거나 같아질 때까지, 상기 a) 내지 c)를 반복하며, 각각의 반복(iteration)에서, 상기 저장 매니저는 상기 하강된 하나 이상의 판독 기준 전압들은 또 다른 소정의 전압값 만큼 더 하강시키며; 그리고
    만일, EA > 0 이라면, 상기 판독된 데이터를 리프레시하는 것을 특징으로 하는 저장 디바이스.
  12. 제11항에 있어서,
    상기 저장 매니저는,
    상기 하나 이상의 판독 기준 전압들 중 가장 낮은 판독 기준 전압을 이용하여 상기 데이터를 교정하고; 그리고
    상기 교정된 데이터를 상기 하나 이상의 판독 기준 전압들을 이용하여 상기 복수의 메모리 셀들의 제 2 그룹에 재기입함에 의해서,
    상기 판독된 데이터를 리프레시하도록 된 것을 특징으로 하는 저장 디바이스.
  13. 제11항에 있어서,
    상기 저장 디바이스는,
    제 1 외부 디바이스에 있는 제 2 전기 단자에 접속가능하며 그리고 상기 제 2 전기 단자를 통해 상기 제 1 외부 디바이스로부터 제 1 신호를 수신하기 위한 제 1 전기 단자; 그리고
    상기 제 1 전기 단자와 상기 저장 매니저 사이에 개재되며 상기 저장 매니저를 위해 상기 제 1 신호로부터 제 2 신호를 생성하는 전기 회로를 더 포함하며,
    상기 제 2 신호는, 상기 저장 디바이스가 상기 제 1 외부 디바이스에 연결됨을 알려주는 제 1 논리 상태와 상기 저장 디바이스가 제 2 외부 디바이스에 연결됨을 알려주는 제 2 논리 상태 사이에서 스위칭가능한 것을 특징으로 하는 저장 디바이스.
  14. 제13항에 있어서,
    상기 제 1 외부 디바이스는 상기 프로그래밍 디바이스이며 상기 제 2 외부 디바이스는 상기 호스트 디바이스인 것을 특징으로 하는 저장 디바이스.
  15. 제13항에 있어서,
    상기 전기 회로는 풀 다운(pull down) 저항을 포함하는 것을 특징으로 하는 저장 디바이스.
  16. 제13항에 있어서,
    상기 전기 회로는 그 전부 또는 일부가 저장 매니저 내에 상주하는 것을 특징으로 하는 저장 디바이스.
  17. 제13항에 있어서,
    상기 전기 회로는 상기 저장 매니저의 외부에 있는 것을 특징으로 하는 저장 디바이스.
  18. 제11항에 있어서,
    상기 복수의 전하-저장 메모리 셀들의 제 1 그룹에 저장된 데이터가 교정불가능하면 상기 저장 매니저는 이를 상기 호스트 디바이스에게 통지하는 것을 특징으로 하는 저장 디바이스.
  19. 제18항에 있어서,
    상기 저장 매니저는,
    상기 a) 내지 c)가 소정 횟수 반복된 이후에 상기 통지를 상기 호스트 디바이스에게 전송하거나, 혹은
    하나 이상의 관련 판독 기준 전압들이 기결정된 로우 레벨(low level)에 도달하였고 그리고 상기 에러 데이터 비트들이 여전히 교정불가능한 경우에 상기 통지를 상기 호스트 디바이스에게 전송하는 것을 특징으로 하는 저장 디바이스.
  20. 제11항에 있어서,
    상기 하나 이상의 초기 판독 기준 전압들은 상기 저장 디바이스의 유형에 부합하는 통상적인(conventional) 판독 기준 전압들인 것을 특징으로 하는 저장 디바이스.
  21. 제11항에 있어서,
    상기 하나 이상의 판독 기준 전압들 중 하나 이상을 하강시키는 것은, 검출된 에러 데이터 비트들의 개수에 상관되거나 혹은 의존하는 것을 특징으로 하는 저장 디바이스.
KR1020127003904A 2009-08-25 2009-08-25 플래시 저장 디바이스로의 데이터 복원 KR20120059506A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2009/006632 WO2011024015A1 (en) 2009-08-25 2009-08-25 Restoring data into a flash storage device

Publications (1)

Publication Number Publication Date
KR20120059506A true KR20120059506A (ko) 2012-06-08

Family

ID=41226295

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127003904A KR20120059506A (ko) 2009-08-25 2009-08-25 플래시 저장 디바이스로의 데이터 복원

Country Status (5)

Country Link
US (1) US8254170B2 (ko)
EP (1) EP2471068B1 (ko)
KR (1) KR20120059506A (ko)
CN (1) CN102473460B (ko)
WO (1) WO2011024015A1 (ko)

Families Citing this family (130)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101202537B1 (ko) 2006-05-12 2012-11-19 애플 인크. 메모리 디바이스를 위한 결합된 왜곡 추정 및 에러 보정 코딩
US8239735B2 (en) 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
CN103280239B (zh) 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
WO2008053472A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
US8369141B2 (en) 2007-03-12 2013-02-05 Apple Inc. Adaptive estimation of memory cell read thresholds
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
WO2009050703A2 (en) 2007-10-19 2009-04-23 Anobit Technologies Data storage in analog memory cell arrays having erase failures
US8270246B2 (en) 2007-11-13 2012-09-18 Apple Inc. Optimized selection of memory chips in multi-chips memory devices
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8621137B2 (en) 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Metadata rebuild in a flash memory controller following a loss of power
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US8498151B1 (en) 2008-08-05 2013-07-30 Apple Inc. Data storage in analog memory cells using modified pass voltages
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8261159B1 (en) 2008-10-30 2012-09-04 Apple, Inc. Data scrambling schemes for memory devices
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US8397131B1 (en) 2008-12-31 2013-03-12 Apple Inc. Efficient readout schemes for analog memory cell devices
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
TW201108235A (en) 2009-08-31 2011-03-01 Sandisk Il Ltd Preloading data into a flash storage device
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8677203B1 (en) 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8767459B1 (en) 2010-07-31 2014-07-01 Apple Inc. Data storage in analog memory cells across word lines using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
KR101756111B1 (ko) * 2011-04-15 2017-07-10 삼성전자 주식회사 메모리 컨트롤러 구동방법, 메모리 컨트롤러, 메모리 장치 및 메모리 시스템
JP5682466B2 (ja) * 2011-06-14 2015-03-11 日本電気株式会社 電子装置、フラッシュメモリ交換管理システム、方法およびプログラム
JP2013041634A (ja) * 2011-08-11 2013-02-28 Fujitsu Ltd 不揮発性半導体記憶装置
US9047210B2 (en) * 2011-09-15 2015-06-02 Sandisk Technologies Inc. Data storage device and method to correct bit values using multiple read voltages
US8938658B2 (en) 2011-11-07 2015-01-20 Sandisk Enterprise Ip Llc Statistical read comparison signal generation for memory systems
US8954822B2 (en) 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
US8687421B2 (en) * 2011-11-21 2014-04-01 Sandisk Technologies Inc. Scrub techniques for use with dynamic read
US8811076B2 (en) * 2012-07-30 2014-08-19 Sandisk Technologies Inc. Systems and methods of updating read voltages
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US8793558B2 (en) * 2012-08-27 2014-07-29 Freescale Semiconductor, Inc. Adaptive error correction for non-volatile memories
KR101991437B1 (ko) * 2012-08-30 2019-06-20 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그의 동작방법
US8874992B2 (en) 2012-08-31 2014-10-28 Sandisk Technologies Inc. Systems and methods to initiate updating of reference voltages
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9003264B1 (en) 2012-12-31 2015-04-07 Sandisk Enterprise Ip Llc Systems, methods, and devices for multi-dimensional flash RAID data protection
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US9136877B1 (en) 2013-03-15 2015-09-15 Sandisk Enterprise Ip Llc Syndrome layered decoding for LDPC codes
US9092350B1 (en) 2013-03-15 2015-07-28 Sandisk Enterprise Ip Llc Detection and handling of unbalanced errors in interleaved codewords
KR102039537B1 (ko) 2013-03-15 2019-11-01 삼성전자주식회사 불휘발성 저장 장치 및 그것의 운영체제 이미지 프로그램 방법
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9367246B2 (en) * 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9043517B1 (en) 2013-07-25 2015-05-26 Sandisk Enterprise Ip Llc Multipass programming in buffers implemented in non-volatile data storage systems
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9235509B1 (en) 2013-08-26 2016-01-12 Sandisk Enterprise Ip Llc Write amplification reduction by delaying read access to data written during garbage collection
US9442670B2 (en) 2013-09-03 2016-09-13 Sandisk Technologies Llc Method and system for rebalancing data stored in flash memory devices
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9158349B2 (en) 2013-10-04 2015-10-13 Sandisk Enterprise Ip Llc System and method for heat dissipation
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9229806B2 (en) 2013-11-14 2016-01-05 Sandisk Technologies Inc. Block closure techniques for a data storage device
US9165670B2 (en) 2013-11-14 2015-10-20 Sandisk Technologies Inc. Data retention detection techniques for a data storage device
US8982617B1 (en) 2013-11-14 2015-03-17 Sandisk Technologies Inc. Block closure techniques for a data storage device
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9129665B2 (en) 2013-12-17 2015-09-08 Sandisk Enterprise Ip Llc Dynamic brownout adjustment in a storage device
US9549457B2 (en) 2014-02-12 2017-01-17 Sandisk Technologies Llc System and method for redirecting airflow across an electronic assembly
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9230689B2 (en) 2014-03-17 2016-01-05 Sandisk Technologies Inc. Finding read disturbs on non-volatile memories
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
KR102147916B1 (ko) 2014-04-14 2020-08-26 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
US9070481B1 (en) 2014-05-30 2015-06-30 Sandisk Technologies Inc. Internal current measurement for age measurements
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US9093160B1 (en) 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US9472270B2 (en) 2014-10-24 2016-10-18 Sandisk Technologies Llc Nonvolatile storage reflow detection
US9552171B2 (en) 2014-10-29 2017-01-24 Sandisk Technologies Llc Read scrub with adaptive counter management
US9978456B2 (en) 2014-11-17 2018-05-22 Sandisk Technologies Llc Techniques for reducing read disturb in partially written blocks of non-volatile memory
US9349479B1 (en) 2014-11-18 2016-05-24 Sandisk Technologies Inc. Boundary word line operation in nonvolatile memory
US9449700B2 (en) 2015-02-13 2016-09-20 Sandisk Technologies Llc Boundary word line search and open block read methods with reduced read disturb
US9653154B2 (en) 2015-09-21 2017-05-16 Sandisk Technologies Llc Write abort detection for multi-state memories
KR102381218B1 (ko) * 2015-09-25 2022-04-01 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN106205720B (zh) * 2016-07-06 2019-07-09 记忆科技(深圳)有限公司 一种恢复Nand Flash错误数据的方法
US10228998B2 (en) * 2016-08-04 2019-03-12 Taiwan Semiconductor Manufacturing Company Limited Systems and methods for correcting data errors in memory susceptible to data loss when subjected to elevated temperatures
JP2018160303A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 半導体記憶装置
US10446241B1 (en) * 2018-08-13 2019-10-15 Micron Technology, Inc. Automatic calibration (autocal) error recovery for a memory sub-system
US11043266B1 (en) 2020-06-15 2021-06-22 Western Digital Technologies, Inc. Multi-level read after heating event in non-volatile storage
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5657332A (en) * 1992-05-20 1997-08-12 Sandisk Corporation Soft errors handling in EEPROM devices
JP2001167588A (ja) * 1999-12-06 2001-06-22 Nec Ic Microcomput Syst Ltd Eepromの読み出し不良検出回路及び読み出し不良検出方法
US6522580B2 (en) * 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US7554842B2 (en) * 2001-09-17 2009-06-30 Sandisk Corporation Multi-purpose non-volatile memory card
US7012835B2 (en) 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
JP2006114078A (ja) * 2004-10-12 2006-04-27 Toshiba Corp 不揮発性半導体記憶装置及びその動作方法
KR100799018B1 (ko) * 2006-12-27 2008-01-28 주식회사 하이닉스반도체 불휘발성 메모리 소자 및 자기 보상 방법
KR100865830B1 (ko) * 2007-02-22 2008-10-28 주식회사 하이닉스반도체 메모리 소자의 독출 방법
US7876621B2 (en) * 2007-04-23 2011-01-25 Sandisk Il Ltd. Adaptive dynamic reading of flash memories
KR100891005B1 (ko) * 2007-06-28 2009-03-31 삼성전자주식회사 고온 스트레스로 인한 읽기 마진의 감소를 보상하기 위한플래시 메모리 장치 및 그것의 읽기 전압 조정 방법
KR101518199B1 (ko) * 2008-05-23 2015-05-06 삼성전자주식회사 오류 정정 장치, 그 방법 및 상기 장치를 포함하는 메모리장치

Also Published As

Publication number Publication date
EP2471068B1 (en) 2015-11-11
CN102473460A (zh) 2012-05-23
US20110228604A1 (en) 2011-09-22
CN102473460B (zh) 2016-10-12
WO2011024015A1 (en) 2011-03-03
US8254170B2 (en) 2012-08-28
EP2471068A1 (en) 2012-07-04

Similar Documents

Publication Publication Date Title
KR20120059506A (ko) 플래시 저장 디바이스로의 데이터 복원
US9064585B2 (en) Preloading data into a flash storage device
US10521353B2 (en) Data storage device and operating method thereof
CN107133122B (zh) 存储器控制方法
US7594157B2 (en) Memory system with backup circuit and programming method
KR100842680B1 (ko) 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
JP4034949B2 (ja) 不揮発性半導体記憶装置
US8140935B2 (en) ECC controller for use in flash memory device and memory system including the same
US20100269000A1 (en) Methods and apparatuses for managing bad memory cell
KR20190022987A (ko) 데이터 저장 장치 및 그것의 동작 방법
US20080259686A1 (en) Non-volatile memory device, memory system, and lsb read method
KR100872186B1 (ko) 상이한 에러 제어 스킴을 갖는 하이브리드 플래시 메모리장치 및 그것을 포함한 메모리 시스템
CN110246533B (zh) 固态储存装置的失败模式检测方法及错误更正方法
CN105321571B (zh) 数据储存装置及其操作方法
US20200135280A1 (en) Read retry method for solid state storage device
KR102333140B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US20190227788A1 (en) Memory system and operating method thereof
KR20130008302A (ko) 플래시 메모리 장치의 리드 전압 조절 방법 및 이를 이용한 데이터 리드 방법
US20190179699A1 (en) Memory system varying operation of memory controller according to internal status of memory device
CN116185279A (zh) 半导体存储装置、数据写入方法和半导体存储装置的制造方法
US20220113893A1 (en) System and method for mitigating effect of erase cells on adjacent cells
KR20130077401A (ko) 반도체 메모리 장치 및 그 구동 방법
JP2003100095A (ja) 半導体集積回路装置
CN107093458B (zh) 固态储存装置及其数据处理方法
US20230214151A1 (en) Memory system and operating method thereof

Legal Events

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