KR20140072118A - 플래시 메모리 시스템 - Google Patents

플래시 메모리 시스템 Download PDF

Info

Publication number
KR20140072118A
KR20140072118A KR1020147010728A KR20147010728A KR20140072118A KR 20140072118 A KR20140072118 A KR 20140072118A KR 1020147010728 A KR1020147010728 A KR 1020147010728A KR 20147010728 A KR20147010728 A KR 20147010728A KR 20140072118 A KR20140072118 A KR 20140072118A
Authority
KR
South Korea
Prior art keywords
data
mbc
page
memory device
pages
Prior art date
Application number
KR1020147010728A
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 KR20140072118A publication Critical patent/KR20140072118A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

MBC로 구성된 플래시 메모리 디바이스를, SBC 저장 모드로 또는 전체 MBC 저장 모드 용량 미만의 부분적 MBC 저장 모드로 데이터를 저장하게끔 제어하기 위한 방법 및 시스템. 전체 MBC 저장 모드에 있어서, 데이터의 페이지들은 각각의 메모리 셀들의 물리적 로우에 대해서 제1 페이지로부터 N번째 페이지로 순차적으로 프로그램되며, N은 물리적 로우에 저장될 수 있는 페이지들의 총수이다. 메모리 셀들의 물리적 로우당 N개까지의 페이지 어드레스들이, 물리적 로우내의 페이지의 가상적 위치를 지정하기 위해서, 프로그램될 각각의 페이지에 동반된다. SBC 또는 부분적 MBC 데이터 저장소에 있어서, 플래시 메모리 제어기는, 각각의 물리적 로우에 대해서 최대 N개 미만의 가상적 페이지 어드레스들을 이용하여 MBC 메모리 디바이스에 프로그램 커맨드(들)를 발행한다. MBC 메모리 디바이스는 물리적 로우에 대해 최종 수신된 가상적 페이지 어드레스까지 프로그래밍 동작을 순차적으로 실행한다.

Description

플래시 메모리 시스템{FLASH MEMORY SYSTEM}
[관련 출원에 대한 교차 참조]
본 출원은 미국 특허 가출원 제61/538,540호(2011년 9월 23일 출원) 및 미국 특허 출원 제13/455,780호(2012년 4월 25일 출원)의 우선권의 이익을 청구하며, 그 내용이 전체적으로 참조로 이 명세서에 통합되어 있다.
[분야]
본 실시예들은 일반적으로 비휘발성 메모리에 관한 것이다.
플래시 메모리는, 예컨대, 디지털 카메라 및 휴대형 디지털 뮤직 플레이어와 같은, 가전기기용의 대용량 저장소로서 널리 보급되어 있는 공통적으로 사용되는 유형의 비휘발성 메모리이다. 현재 가용한 플래시 메모리 칩의 밀도는, 하나의 플래시 칩의 크기가 작기 때문에 대중적인 USB 플래시 드라이브들에서 사용하기에 적절한, 수 기가바이트(GB)의 크기까지일 수 있다. 플래시 메모리용의 다른 신흥의 응용은 랩톱 및 데스크톱 컴퓨터에서 사용되는 전통적인 하드 디스크 드라이브를 대체하기 위한 고체 드라이브(solid state drive)이다. 이러한 응용들은 일반적으로, 제한된 수명을 갖는 멀티-레벨 셀(multi-level cell; “MLC”)을 사용한다. 싱글 레벨 셀(single level cell; “SLC”) 플래시 디바이스들의 다른 유형의 플래시 메모리가 또한 신뢰성 있는 데이터 저장을 위한 응용들에서 사용된다. SLC 플래시 디바이스의 단점은 MLC 플래시 디바이스와 비교했을 때의 비용이다.
제1 양태에 있어서, 물리적 로우(physical row)당 N개의 데이터의 페이지들 - N은 1보다 큰 정수임 - 까지 저장하도록 구성된 셀당 다수 비트(multiple bit per cell; “MBC”) 플래시 메모리 디바이스를 프로그램하기 위한 방법이 제공된다. 상기 방법은 플래시 메모리 디바이스의 적어도 하나의 물리적 로우를 갖는 서브디비전(subdivision)에 다수의 데이터의 페이지들을 프로그램하기 위한 프로그램 커맨드(program command)들의 그룹을 발행하는 것을 포함한다. 상기 프로그램 커맨드들의 그룹은, 적어도 하나의 물리적 로우의 각각에 대응하는 모든 가능성 있는 논리적 페이지 어드레스들로부터 선택된 논리적 페이지 어드레스들의 서브셋(subset)을 어드레스하는 것(addressing)에 제한된다. 상기 방법은, 상기 프로그램 커맨드들내의 상기 논리적 페이지 어드레스들의 서브셋에 응답하여 상기 플래시 메모리 디바이스의 적어도 하나의 물리적 로우의 각각에 N개 미만의 페이지들을 프로그램하는 것을 더 포함한다. 본 실시예에 따르면, 상기 방법은, 상기 프로그램 커맨드들의 그룹을 발행하기 전에, 상기 플래시 메모리 디바이스의 각각의 서브디비전에 대한 저장 모드 정보(storage mode information)를 포함하는 맵핑 테이블에 액세스(access)하는 것을 더 포함하며, 상기 맵핑 테이블을 액세스하는 것은, N개 미만의 데이터의 페이지들이 물리적 로우당 저장되는, 부분적 MBC 저장 모드를 갖는 서브디비전을 선택하는 것을 포함한다.
본 방법은, 상기 부분적 MBC 저장 모드에 대응하는 논리적 페이지 어드레스들의 서브셋을 선택하는 것을 더 포함할 수 있고, 상기 적어도 하나의 물리적 로우의 각각에 대응하는 모든 가능성 있는 논리적 페이지 어드레스들은, 하위의 페이지 어드레스로 시작하고 상위의 페이지 어드레스로 끝나는 연속적인 페이지 어드레스들을 포함한다. 상기 논리적 페이지 어드레스들의 서브셋은, 상기 적어도 하나의 물리적 로우의 각각에 대해서 하위의 페이지 어드레스와 상위의 페이지 어드레스 사이의 중간 페이지 어드레스(intermediate page address)까지의 하위 페이지 어드레스를 포함할 수 있다. 대안적으로, 상기 논리적 페이지 어드레스들의 서브셋은, 상기 적어도 하나의 물리적 로우의 각각에 대해서 하위의 페이지 어드레스만을 포함할 수 있다.
상기 제1 양태의 다른 실시예에 있어서, 발행하는 것은, 다수의 데이터의 페이지들 중 하나의 페이지와 논리적 페이지 어드레스들의 서브셋 중 하나를 각각 포함하는 프로그램 커맨드 패킷들을 반복적으로 제공하는 것, 그리고 상기 플래시 메모리 디바이스의 하나의 물리적 로우에 상기 다수의 데이터의 페이지들 중 M개의 페이지들을 프로그램하기 위한 M개의 프로그램 커맨드 패킷들 - M은 N 미만의 정수 값임 - 을 제공하는 것을 포함한다. 대안적으로, 발행하는 것은, 상기 플래시 메모리 디바이스의 하나의 물리적 로우에 다수의 데이터의 페이지 중 하나의 페이지를 프로그램하기 위한 하나의 프로그램 커맨드 패킷을 반복적으로 제공하는 것을 포함한다.
제1 양태의 추가적인 실시예에 있어서, 상기 방법은, 상기 프로그램 커맨드들의 그룹을 발행하기 전에, 부분적 MBC 저장 모드로 다수의 데이터의 페이지들을 프로그램하기 위한 호스트 요청(host request)을 수신하는 것을 더 포함한다. 또 다른 실시예에 있어서, 상기 방법은 상기 프로그램 커맨드들의 그룹을 발행하기 전에 전체 MBC 저장 모드로 다수의 데이터의 페이지들을 프로그램하기 위한 호스트 요청을 수신하는 것, 서브디비전에 대한 최대수의 MBC 프로그램/소거(erase) 사이클이 도달되었다는 것을 판정하는 것, 그리고 전체 MBC 저장 모드로 다수의 데이터의 페이지들을 프로그램하기 위해 구성된 다른 서브디비전을 선택하는 것, 및 상기 서브디비전을 부분적 MBC 저장 모드로 설정하는 것을 더 포함한다. 이러한 본 실시예에 있어서, 상기 전체 MBC 저장 모드는 셀(cell)당 2비트(bit) 저장 모드를 포함하고, 상기 부분적 MBC 저장 모드는 셀당 1비트 저장 모드를 포함한다.
제2 양태에 있어서, 메모리 제어기를 포함하는 시스템이 제공된다. 상기 메모리 제어기는, 메모리 디바이스의 각각의 물리적 로우에 대응하는 모든 가능성 있는 논리적 페이지 어드레스들로부터 선택되는 논리적 페이지 어드레스들의 서브셋을 어드레스하는 것에 제한되는 프로그램 커맨드들을 발행하도록 구성된다. 상기 메모리 디바이스는, 물리적 로우당 최대 N개의 페이지들 - N은 1보다 큰 정수임 -을 저장하도록 구성된 셀당 다수 비트(MBC) 메모리 디바이스를 포함한다. 상기 메모리 디바이스는, 상기 메모리 제어기로부터 수신되는 프로그램 커맨드들내의 논리적 페이지 어드레스들의 서브셋에 응답하여 물리적 로우당 N개 미만의 페이지들을 프로그램하도록 또한 구성된다. 본 실시예에 있어서, 상기 메모리 제어기는, 상기 메모리 디바이스의 서브디비전들에 대응하는 메타-데이터(meta-data)를 저장하기 위한 맵핑 테이블을 포함하는, 상기 맵핑 테이블은 상기 서브디비전들의 각각에 대한 저장 모드 정보 및 상기 서브디비전들의 각각에 대한 저장 모드와 관련되는 어드레스 바인딩 정보(address binding information)를 포함하도록 구성된다.
본 실시예에 있어서, 상기 메모리 제어기는, 상기 맵핑 테이블에 액세스하고 상기 맵핑 테이블의 메타-데이터에 응답하여 프로그램 커맨드들을 제공하기 위한 제어 회로를 포함한다. 상기 프로그램 커맨드들의 각각은, 상기 메모리 디바이스의 서브디비전 및 상기 서브디비전내의 물리적 로우를 선택하기 위한 어드레스 정보, 데이터의 페이지, 및 상기 물리적 로우에 프로그램될 데이터의 페이지에 대한 논리적 페이지 어드레스를 포함한다. 본 실시예에 있어서, 상기 메모리 디바이스는 물리적 로우당 최대 N=2 페이지들을 저장하도록 구성되고, 물리적 로우당 상기 2 페이지들의 각각은 상위 페이지 어드레스와 하위 페이지 어드레스에 의해 어드레스될 수 있고(addressable), 상기 상위 페이지 어드레스는 제1 최하위 비트(least significant bit)를 갖고, 상기 하위 페이지 어드레스는 상기 제1 최하위 비트와는 상이한 제2 최하위 비트를 갖는다. 본 양태의 추가적인 실시예들에 따르면, 상기 메모리 디바이스의 서브디비전들은 메모리 블록, 메모리 블록의 서브-블록, 또는 메모리 블록의 물리적 로우를 포함한다.
제3 양태에 있어서, 셀당 N 비트 - N은 1 보다 큰 정수임 - 까지 저장하기 위해 구성된 셀당 다수 비트(MBC) 플래시 메모리 디바이스를 프로그램하기 위한 방법이 제공된다. 상기 방법은, 데이터 페이지들을 프로그램하기 위한 호스트 요청을 수신하는 것; N개 미만의 가상적으로 어드레스될 수 있는 데이터 페이지들이 상기 플래시 메모리 디바이스의 각각의 물리적 로우에 저장되는, 부분적 MBC 저장 모드로 프로그램될 데이터 페이지들을 정하는 것; 상기 부분적 MBC 저장 모드로 구성되는 MBC 플래시 메모리 디바이스의 서브디비전을 선택하도록 플래시 메모리 디바이스용 메타-데이터를 포함하는 맵핑 테이블에 액세스하는 것; 그리고 각각의 물리적 로우에 페이지들을 프로그램하기 위한 N개 미만의 가능성 있는 가상의 페이지 어드레스들의 서브셋으로 제한되는 가상의 페이지 어드레스들을 이용하여 상기 서브디비전에 데이터 페이지들을 프로그램하기 위한 적어도 하나의 프로그램 커맨드를 발행하는 것을 포함한다. 본 양태에 있어서, N=2개 및 가능성 있는 가상의 페이지 어드레스들은 하위 페이지 어드레스 및 상위 페이지 어드레스를 포함하고, 발행하는 것은, 데이터 페이지 및 하위 페이지 어드레스를 각각 포함하는, 프로그램 커맨드들을 반복적으로 발행하는 것을 포함한다. 대안적으로, N>2개 및 가능성 있는 가상의 페이지 어드레스들은 하위 페이지 어드레스, 상위 페이지 어드레스, 및 상기 상위 페이지 어드레스와 상기 하위 페이지 어드레스 사이의 적어도 하나의 중간 페이지 어드레스를 포함하고, 발행하는 것이, 상기 적어도 하나의 중간 페이지 어드레스와 상기 하위 페이지 어드레스 중 하나와 데이터 페이지를 각각 포함하는 프로그램 커맨드들을 반복적으로 발행하는 것을 포함한다.
상기한 실시예들의 다른 양태들 및 특징들이, 첨부 도면들과 결합하여 본 발명의 특정 실시예들의 하기의 상세한 설명의 리뷰시에 당업자에게 명백해질 것이다.
실시예들이 이제, 첨부 도면들을 참조하여, 예시로서만 설명될 것이다:
도 1은 본 발명이 적용될 수 있는 플래시 메모리 디바이스의 블록도이다.
도 2는 도 1의 플래시 메모리 디바이스의 하나의 메모리 뱅크의 구성을 나타내는 개략도이다.
도 3은 플래시 메모리 셀들의 로우들에 데이터의 페이지들의 셀당 싱글 비트(SBC) 맵핑을 나타내는 회로도이다.
도 4는 SBC 데이터 저장소용 스레스홀드 전압 배분의 그래프이다.
도 5는 플래시 메모리 셀들의 로우들에 데이터의 2페이지들의 셀당 다수 비트(MBC)를 나타내는 회로도이다.
도 6은 2비트 MBC 데이터 저장소용 스레스홀드 전압 배분의 그래프이다.
도 7은 플래시 메모리 셀들의 로우들에 데이터의 3페이지들의 MBC 맵핑을 나타내는 회로도이다.
도 8은 3비트 MBC 데이터 저장소용 스레스홀드 전압 배분의 그래프이다.
도 9는 본 발명의 일 실시예에 따른 플래시 메모리 시스템의 블록도이다.
도 10은 본 발명의 다른 실시예에 따른 플래시 메모리 시스템의 블록도이다.
도 11은 물리적 로우들에 대한 가상의 페이지 어드레스들의 일예의 맵핑을 예시하는 테이블이다.
도 12a 및 12b는 2비트 MBC 프로그래밍 시퀀스용 스레스홀드 전압 배분의 그래프이다.
도 13a, 13b 및 13c는 3비트 MBC 프로그래밍 시퀀스용 스레스홀드 전압 배분의 그래프들이다.
도 14는 본 발명의 일 실시예에 따른, 2비트 MBC 메모리 디바이스용 SBC 프로그램 동작의 일 예를 예시하는 도면이다.
도 15는 본 발명의 일 실시예에 따른, 3비트 MBC 메모리 디바이스용 2비트 MBC 프로그램 동작의 일 예를 예시하는 도면이다.
도 16은 본 발명의 일 실시예에 따라, 메모리 제어기에 저장되는 일 예의 맵핑 테이블을 가진 N 비트 MBC 플래시 메모리 제어기의 일 예를 예시하는 도면이다.
도 17은 본 발명의 일 실시예에 따라, MBC 메모리 디바이스에 프로그래밍 커맨드들을 발생하도록 메모리 제어기를 작동시키는 방법의 흐름도이다.
도 18은 본 발명의 일 실시예에 따라, 메모리 제어기로부터 수신되는 프로그래밍 커맨드들에 응답하여 MBC 메모리 디바이스를 작동시키기 위한 방법의 흐름도이다. 그리고,
도 19는 본 발명의 일 실시예에 따라, 메모리 시스템의 구체적인 동작예의 방법을 예시하는 흐름도이다.
도 1은 본 발명의 실시예들이 적용될 수 있는 전형적인 플래시 메모리 디바이스를 묘사한다. 도 1을 참조하여 보면, 플래시 메모리 디바이스(10)는 입출력 인터페이스 회로들, 제어 회로들, 메모리 회로들 및 메모리 어레이를 포함한다. 플래시 메모리 디바이스(10)의 입출력 인터페이스 회로들은 레디/비지 신호 버퍼(Ready/Busy signal buffer)(12), 제어 신호 버퍼들(14) 및 글로벌 데이터 버퍼(global data buffer)들(16)을 포함한다. 특정의 예에 있어서, 레디/비지 신호 버퍼(12)는 개개의 핀 또는 포트를 통해 레디/비지 신호 R/B#를 구동하는 출력 버퍼이다. 제어 신호 버퍼들(14)은, 대응하는 핀들 또는 포트들로부터 플래시 메모리 제어 신호들 CE#, CLE, ALE, WE#, RE# 및 WP#을 수신하는 입력 버퍼들이다. “#”로 끝나는 신호 명칭들은 액티브 로 레벨 신호(active low level signal)들인 것으로 이 포인트로부터 금후에 이해되어야 하며, 액티브 로 신호는 예컨대, “0” 논리 레벨 또는 VSS 전압 레벨에 대응한다. 대조적으로, 액티브 하이 논리 레벨 신호(active high logic level signal)는 예컨대, “1” 논리 레벨 또는 VDD 또는 VCC 전압 레벨에 대응한다. 하기는, 이전에 언급된 제어 신호들의 간략한 설명이다.
· 커맨드 래치 인에이블(Command Latch Enable; “CLE”): CLE 입력 신호는 동작 모드 커맨드의 내부 커맨드 레지스터로의 로딩(loading)을 제어하는데 사용된다. 상기 커맨드는, CLE가 하이(High)인 동안에, WE# 신호의 라이징 에지(rising edge)에서 I/O 포트로부터 커맨드 레지스터내로 래치(latch)된다.
· 어드레스 래치 인에이블(Address Latch Enable; “ALE”): ALE 신호는 어드레스 정보의 내부 어드레스 레지스터내로의 로딩을 제어하는데 사용된다. 어드레스 정보는, ALE가 하이인 동안에, WE# 신호의 라이징 에지에서 I/O 포트로부터 어드레스 레지스터내로 래치된다.
· 칩 인에이블(Chip Enable; “CE#”): 디바이스가 레디 상태인 동안에, CE#가 하이로 갈 때, 디바이스는 저전력의 스탠바이 모드로 간다. CE# 신호는, 디바이스가, 프로그램 또는 소거 또는 판독(Read) 동작 동안과 같은, 비지 상태(R/B# = L)에 있을 때, 무시되며, CE# 입력이 하이로 가는 경우에라도 스탠바이 모드로 들어가지 않을 것이다.
· 기입 인에이블(Write Enable; “WE#”): WE# 신호는 I/O 포트로부터의 데이터의 획득을 제어하는데 사용된다.
· 판독 인에이블(Read Enable; “RE#”): RE 신호는 직렬 데이터 출력을 제어한다. 데이터는 RE#의 폴링 에지(falling edge) 후에 사용될 수 있다. 내부 칼럼 어드레스 카운터(internal column address counter)가 또한 이러한 폴링 에지에서 증가된다(Address = Address + I).
· I/O 포트(I/O0 내지 7): I/O0 내지 7 핀들은 디바이스와 어드레스, 커맨드 및 입출력 데이터를 전송하기 위한 포트로서 사용된다.
· 기입 보호(Write Protect; “WP#”): WP# 신호는 우발적인 프로그래밍 또는 소거로부터 디바이스를 보호하는데 사용된다. 내부 전압 레귤레이터(고전압 발생기)는, WP#가 로(Low)일 때 리셋된다. 이러한 신호는 보통, 입력 신호가 무효일 때, 파워-온/오프 시퀀스(power-on/off sequence) 동안에 데이터를 보호하기 위해 사용된다.
· 레디/비지(Ready/Busy; “R/B#”): R/B#는 오픈 드레인 핀(open drain pin)이고 출력 신호는 디바이스의 동작 조건을 표시하는데 사용된다. R/B# 신호는, 프로그램, 소거 및 판독 동작 동안에 비지 상태(R/B# = L)에 있으며, 동작의 완료 후에 레디 상태(R/B# = H)로 돌아갈 것이다.
글로벌 데이터 버퍼들(16)은, 기입 데이터를 수신하고 개개의 입출력(I/O) 핀들 또는 포트들에 판독 데이터를 제공한다. 플래시 메모리 디바이스(10)는 8개의 그러한 포트들(I/O0 내지 I/O7)을 갖는 것으로 도시되었지만, 대안적인 데이터 폭 구성에 있어서는 8개 보다 많거나 8개 미만을 가질 수 있다. 이러한 I/O 포트들은 또한 어드레스 및 커맨드 정보를 수신하기 위해 사용된다.
플래시 메모리 디바이스(10)의 제어 회로들은 제어기(18), 커맨드 레지스터(command register)(20), 어드레스 레지스터(address register)(22) 및 상태 레지스터(status register)(24)를 포함한다. 제어기(18)는, 플래시 메모리 디바이스(10)의 다른 회로들의 다양한 기능들을 제어하며, 그러한 기능들은 예컨대 판독, 프로그램 및 프로그램 검증을 포함한다. 도시되지는 않았지만, 제어기(18)는 수신된 커맨드에 응답하여 기능들을 실행하기 위한 커맨드 디코더(command decoder)를 포함할 수 있다. 레지스터들(22, 24)은, 예컨대 메모리 제어기(도시되지 않음)를 포함하는, 외부의 호스트 시스템(도시되지 않음)으로 제공될 또는 플래시 메모리 디바이스(10)에 의해 수신되는 정보의 유형들을 저장한다. 설명된 레지스터들은 총망라하는 것으로 의도되지 않으며, 예컨대 데이터 레지스터들과 같은 다른 레지스터들이 포함될 수 있다.
제어기(18)에 의해 주로 제어되는 회로들은, 로우 및 칼럼 프리 디코더(row and column pre-decoder)(26 및 28), 로우 및 칼럼 디코더(30 및 32), 검출 증폭기 및 페이지 버퍼 블록(34) 및 고전압 발생기(36)를 포함하는 메모리 회로들이다. 플래시 메모리 디바이스(10)의 메모리 셀 어레이(38)는 비트라인(bitline)들에 연결되는 NAND 셀 스트링(cell string)들을 포함하고, 여기서 NAND 셀 스트링의 각각의 메모리 셀은 워드라인(wordline)에 연결된다. NAND 셀 스트링의 추가적인 세부는 나중에 도 3에 나타내어져 있다. 로우 프리-디코더(row pre-decoder)(26), 로우 디코더(30) 및 고전압 발생기(36)는 디폴트(default)의 소거 전압으로부터 요구되는 전압 레벨로 연결된 메모리 셀의 스레스홀드(threshold) 전압을 시프트(shift)하기 위해 유효한 고전압으로 선택된 워드라인을 구동하도록 프로그래밍 동작으로 제어된다. 고전압은 그 스레스홀드 전압들을 디폴트 값으로 시프트시키는 것에 의해 메모리 셀들을 소거하도록 메모리 어레이(38)에서 사용될 수 있다는 것에 주목한다. 고전압들과 고전압의 인가 시간의 상이한 조합들이 플래시 메모리 셀에 대한 특정 스레스홀드 전압들을 설정하는데 사용될 수 있다. 특정 스레스홀드 전압을 프로그램하기 위한 조합은 프로그래밍 프로파일(programming profile)로서 칭해질 수 있다. 페이지 버퍼(34)는 선택된 워드라인에 연결된 셀들에 프로그램될 데이터의 페이지를 저장한다. 일반적으로, 비트라인에 연결되는 메모리 셀은, 비트라인이 바이어스되거나 설정된 논리 레벨에 따라, 선택된 워드라인을 통해 프로그램하기 위해 인에이블되거나 프로그램되는 것으로부터 금지된다. 페이지 버퍼에 저장된 데이터 비트들은 비트라인을 바이어스하는데 사용된다. 메모리 셀 어레이(38)는, 특정의 플래시 디바이스에 대한 선택된 설계 파라미터인, 임의의 개수의 뱅크(bank)를 갖는다.
도 2는 도 1의 메모리 셀 어레이(38)의 하나의 뱅크(40)의 구성을 나타낸다. 뱅크(40)는 k개의 블록들로 구성되고, 각각의 블록은 i개의 페이지들을 갖는다. k와 i의 양쪽은 정수 값들이다. 각각의 페이지는 공통의 워드라인에 결합된 메모리 셀들의 로우에 대응한다. 블록의 메모리 셀들의 상세한 설명은 다음과 같다.
각각의 블록은, 직렬로 배열되고 서로 전기적으로 결합된 i개까지의 플래시 메모리 셀들(42)을 갖는, NAND 메모리 셀 스트링(string)들을 포함한다. 따라서, 워드라인들(WL1 내지 WLi)은 메모리 셀 스트링의 각각의 플래시 메모리 셀의 게이트들에 결합된다. 신호 SSL(string select line; 스트링 선택 라인)에 결합된 스트링 선택 디바이스(44)는 메모리 셀 스트링을 비트라인(46)에 선택적으로 연결하고, 신호 GSL(ground select line; 그라운드 선택 라인)에 결합된 그라운드 선택 디바이스(48)는 메모리 셀 스트링을 VSS와 같은 소스 라인에 선택적으로 연결한다. 스트링 선택 디바이스(44) 및 그라운드 선택 디바이스(48)는 N-채널 트랜지스터들이다.
뱅크(40)의 모든 블록들에 공통인 j개의 비트라인들(46)이 있고, 각각의 비트라인(46)은 블록들 [1] 내지 [k]의 각각의 하나의 NAND 메모리 셀 스트링에 결합된다. 변수 j는 정수 값이다. 각각의 워드라인(WL1 내지 WLi), SSL 및 GSL 신호는 블록내의 각각의 NAND 메모리 셀의 동일한 대응하는 트랜지스터 디바이스에 결합된다. 당업자라면 이해할 바와 같이, 하나의 워드라인을 따라 플래시 메모리 셀들에 저장되는 데이터는 데이터의 페이지로서 칭해진다.
뱅크(40)의 각각의 비트라인 외측에는, 플래시 메모리 셀들의 하나의 페이지내로 프로그램될 기입 데이터의 하나의 페이지를 저장하기 위한 페이지 버퍼(50)이다. 페이지 버퍼(50)는 도 1에 도시된 페이지 버퍼 블록(34) 및 검출 증폭기들에 대응한다. 따라서, 페이지 버퍼(50)는 또한 플래시 메모리 셀들의 하나의 페이지로부터 판독되는 데이터를 검출하기 위한 검출 회로들을 포함한다. 프로그래밍 동작들 동안에, 페이지 버퍼는, 데이터가 선택된 워드라인에 결합된 플래시 메모리 셀들 내로 적합하게 프로그램되었다는 것을 보증하도록 프로그램 검증 동작들을 실행한다. 블록내의 프로그래밍은 일반적으로, WL1에 대응하는 페이지에서 시작하고, 현재의 블록을 채우도록, WLi까지 순차적으로 진행한다. 대안적으로, 프로그래밍은 WLi에서 시작하여 WL1로 아래로 순차적으로 진행할 수 있다. 그 다음에는, 프로그래밍이 새로운 블록의 WL1과 더불어 계속된다.
플래시 메모리(10)는 2개의 상이한 방식들 중 하나의 방식으로 데이터를 저장하도록 구성될 수 있다. 데이터는, 셀당 싱글 비트(SBC) 저장 모드 또는 셀당 다수 비트(MBC) 저장 모드로 저장될 수 있다. SBC 저장 모드에 있어서, 정확히 1비트의 정보가 2개의 가능성 있는 상태들 중 하나의 상태를 나타내도록 하나의 셀에 저장된다. MBC 저장 모드에 있어서, 적어도 2비트들이 4개의 가능성 있는 상태들 중 하나의 상태를 나타내도록 하나의 셀에 저장된다.
도 3은, 데이터의 페이지들이 SLC로 구성된 플래시 메모리 디바이스에 저장되었다는 것을 설명하는데 도움이 되도록 추가적인 주석들이 있는, 도 2의 동일한 2개의 NAND 셀 스트링들을 나타낸다. 동일한 물리적 워드라인 즉, WL1 등에 연결된 메모리 셀들의 각각은 데이터의 페이지의 데이터의 1비트를 저장한다. 따라서, 도 3에 도시된 바와 같이, 물리적 워드 라인(WL1)에 연결된 셀들은 “페이지 1”을 저장하고, 최종 물리적 워드라인(WLi)에 연결된 셀들은 “Page i”를 저장한다.
도 4는 SBC 저장 모드로 프로그램된 메모리 셀들과 소거된 메모리 셀들에 대한 스레스홀드 전압(Vt) 분포를 나타낸다. 프로세스와 전압 공급의 변동으로 인해서, 소거 및 프로그램된 스레스홀드 전압들은 전압 범위내에서 분포된다. 도 3에 도시된 바와 같이, 소거된 메모리 셀들은 -3V 내지 -1V 사이의 네거티브(negative) 스레스홀드 전압을 갖고, 프로그램된 메모리 셀들은 1V와 3V 사이의 포지티브(positive) 스레스홀드 전압을 갖는다. 범위들은 메모리 셀들에 대한 요구되는 스레스홀드 전압에 좌우된다. 스레스홀드 전압 범위들은 특정의 플래시 메모리 디바이스에서 사용될 수 있는 가능성 있는 스레스홀드 전압들의 예시이지만, 당업자라면, 소거 및 프로그램된 메모리 셀들에 대해 사용하기 위해 스레스홀드 전압들의 선택은 플래시 메모리 디바이스의 설계 및 제조 프로세스에 좌우된다는 것을 이해할 것이다. 당업자는, 상이한 플래시 디바이스들은 특정 설계 또는 응용에 어울리도록 상이한 스레스홀드 전압 범위들을 갖는다는 것을 이해할 것이다.
도 5는, 2비트의 데이터가 셀당 2비트의 MLC로 구성된 플래시 메모리 디바이스에 대해 각각의 메모리 셀에 저장된다는 것을 제외하고, 도 3과 동일한 회로를 나타낸다. 따라서, 각각의 물리적 워드라인은 데이터의 2페이지들을 저장한다. 도 5에 도시된 바와 같이, WL1에 의해 어드레스되는 물리적 로우는 논리적 페이지 1 및 페이지 2를 저장한다. 최종 워드라인(WLi)은 페이지 2i 및 페이지 2i-1을 저장하며, “i”는 정수 값이다.
도 6은 각각의 메모리 셀에 저장될 수 있는 가능성 있는 상태들의 스레스홀드 전압 분포 그래프 및 각각의 상태가 나타내는 대응하는 2비트 조합을 나타낸다.
도 7은, 3비트의 데이터가 셀당 3비트의 MLC로 구성된 플래시 메모리 디바이스에 대해 각각의 메모리 셀에 저장된다는 것을 제외하고, 도 3과 동일한 회로를 나타낸다. 따라서, 각각의 물리적 워드라인은 데이터의 3페이지들을 저장한다. 도 7에 도시된 바와 같이, WL1에 의해 어드레스되는 물리적 로우는 논리적 페이지 1, 페이지 2 및 페이지 3을 저장한다. 최종 워드라인(WLi)은 페이지 3i, 페이지 3i-1 및 페이지 3i-2를 저장하며, “i”는 정수 값이다. 페이지 3i, 페이지 3i-1 및 페이지 3i-2는 각각의 워드라인에 대한 상위 페이지, 중간 페이지 및 하위 페이지의 페이지 수를 각각 나타내기 위한 일반적인 수학적 표현이라는 것에 주목한다.
도 8은, 각각 가능성 있는 3-비트 조합을 나타내는, 각각의 메모리 셀에 저장될 수 있는 가능성 있는 상태들의 스레스홀드 전압 분포 그래프를 나타낸다.
MBC 저장 모드(셀당 2비트 이상)로 데이터를 저장하는 것의 장점은, 동일 개수의 셀들을 사용하는 경우에, SBC 저장 모드에서의 저장소 용량의 적어도 2배라는 것이다. 일반적으로, 플래시 메모리 제조자들은, 플래시 메모리 디바이스(10)를 SBC 특정 알고리즘 또는 MBC 특정 알고리즘을 실행시키도록 구성하기 위해 제조 프로세스 동안에 마스크 옵션(mask option)을 적용하는데, 그 이유는 플래시 회로들이 SBC와 MBC 판독 및 프로그램 동작들에서 상이하게 제어되기 때문이다.
플래시 메모리 디바이스들은, 그것들이 더 이상 데이터를 신뢰성 있게 저장하는데 사용될 수 없게 되기 전인 제한된 수의 소거-프로그램 사이클을 갖는다는 것이 잘 알려져 있다. 예를 들어, 현재의 SBC 플래시 메모리에 대한 전형적인 정격 소거-프로그램 사이클은 약 100,000 사이클이다. 하지만, 현재의 MBC 플래시 메모리는, 셀들이 더 큰 스트레스를 받는다는 사실에 기인하여, 10,000 사이클의 더 작은 정격 제한을 갖는다. 앞서 언급된 소거-프로그램 사이클 제한들은 예시일뿐이지만, MBC 플래시 메모리 디바이스들이 SBC로 구성된 플래시 메모리 디바이스들보다 현저히 더 적은 소거-프로그램 사이클을 갖는다는 것이 잘 이해될 것이다.
MBC 플래시 메모리가 대부분의 가전기기용으로 적합하지만, 10,000 사이클 프로그램-소거 제한은, 데이터 프로그래밍 및 소거가 빈번하거나, 데이터가 임무 수행에 필수적인(mission-critical) 다른 응용들에 대해서는 부적합할 수 있다. 그러므로, 이러한 문제는, 더욱 빈번한 프로그램-소거 사이클이 있는, HDD 응용들에서와 같은 상업적 응용에 대해서 더욱 중대하다. HDD 응용들이 대부분의 소비자 응용들에서보다 더 높은 데이터 완전성을 요구하기 때문에, MBC 플래시 메모리는 그 상대적으로 짧은 10,000 사이클 수명에 기인하여 어울리지 않는다. 동작 모드가 온-더-플라이(on-the-fly)로 동적으로 변경되거나 정적으로 설정되는 특화된 2중 모드 SBC/MBC 플래시 메모리 디바이스들이 제안되었다. 상이한 커맨드 세트들 및/또는 논리 회로들이 그러한 2중 모드 디바이스들에 대해 요구된다.
결국, 판매자들이, 높은 신뢰성을 요구하는 소비자들이 더 고가의 디바이스들에 대해서 비용을 지불할 것이라는 것을 인식하고 있으므로, SBC 플래시 메모리 디바이스들의 비용이 현재 더 높은 밀도의 MBC 플래시 메모리 디바이스들의 비용을 현재 초과한다. 특화된 2중 모드 SBC/MBC 플래시 메모리 디바이스들도 또한 MBC 플래시 메모리 디바이스들보다 비쌀 수 있다.
따라서, MBC 플래시 메모리 디바이스가 SBC 저장 모드로 데이터를 저장하기 위해 사용될 수 있는 저가의 플래시 메모리 시스템을 제공하는 것이 이상적이다.
일반적으로, 적어도 일부의 예시적인 실시예들은, SBC 저장모드 또는 전체 MBC 저장 모드 용량보다 적은 부분적 MBC 저장 모드로 데이터를 저장하도록 MBC로 구성된 플래시 메모리 디바이스를 제어하기 위한 방법 및 시스템을 제공한다. 전체 MBC 저장 모드에 있어서, 데이터의 페이지들은 메모리 셀들의 각각의 물리적 로우에 대해서 제1 페이지로부터 N번째 페이지로 순차적으로 프로그램되며, N은 물리적 로우에 저장될 수 있는 페이지들의 총수이다. 메모리 셀들의 물리적 로우당 N개까지의 가상의 페이지 어드레스들은 물리적 로우내의 페이지의 가상적 위치를 지정하기 위해 프로그램될 각각의 페이지를 동반한다. SBC 또는 부분적 MBC 데이터 저장에 대해서, 플래시 메모리 제어기는 각각의 물리적 로우에 대해 최대 N개 미만의 가상적 페이지 어드레스들을 이용하여 MBC 메모리 디바이스에 프로그램 커맨드(들)를 발행한다. MBC 메모리 디바이스는, 물리적 로우에 대해 최종 수신된 가상적 페이지 어드레스까지 프로그래밍 동작들을 순차적으로 실행한다.
현재 설명된 실시예들은, 도 9 및 도 10에 도시된 메모리 시스템들에서 사용될 수 있다.
도 9는 본 발명의 일 실시예에 따른 플래시 메모리 시스템을 나타낸다. 도 9를 참조하여 보면, 플래시 메모리 시스템(100)은 호스트 시스템(102)과 통합된다. 플래시 메모리 시스템(100)은 호스트 시스템(102)과 통신하는 플래시 메모리 제어기(104), 및 복수의 MBC 플래시 메모리 디바이스들(106-1 ~ 106-4)을 포함한다. 호스트 시스템(102)은 마이크로컨트롤러, 마이크로프로세서, 또는 컴퓨터 시스템(도시되지 않음)과 같은 처리 디바이스를 포함한다. 플래시 메모리 시스템(100)은 하나의 채널(108)을 포함하도록 구성되고, MBC 플래시 메모리 디바이스들(106-1 ~ 106-4)은 채널(108)에 병렬로 결합된다. 채널(108)은, 모든 메모리 디바이스들(106-1 ~ 106-4)에 결합되는 데이터 및 제어 라인들을 포함하는, 일련의 공통 버스들(도시되지 않음)을 포함한다. 도시되지 않았지만, 각각의 메모리 디바이스는 플래시 메모리 제어기(104)에 의해 제공되는 개개의 칩 선택 신호로 인에이블/디스에이블된다. 플래시 메모리 제어기(104)는 호스트 시스템(102)의 동작에 기반하여 채널(108)을 통해 메모리 디바이스들(106-1 ~ 106-4) 중 선택된 하나의 메모리 디바이스에 커맨드 및 데이터를 발행할 책임이 있다. 메모리 디바이스들(106-1 ~ 106-4) 중 선택된 하나의 메모리 디바이스로부터 판독되는 데이터는, 결국 판독 데이터를 호스트 시스템(102)으로 제공하는, 플래시 메모리 제어기(104)로 채널(108)을 통해 되돌려 전송된다. 당업자는, 메모리 시스템(100)이 채널(108)에 결합된 더 많거나 더 적은 메모리 디바이스들을 가질 수 있다는 것을 이해할 것이다.
플래시 메모리 시스템(100)은, MBC 플래시 메모리 디바이스들(106-1 ~ 106-4)이 채널(108)에 관하여 병렬로 결합된 멀티-드롭(multi-drop) 구성으로서 일반적으로 칭해진다. 플래시 메모리 제어기(104)는, 각각, 멀티-드롭 구성으로 결합된 플래시 메모리 디바이스들(106-1 ~ 106-4)이 있는, 다수의 채널들을 가질 수 있다. 각각의 MBC 플래시 메모리 디바이스(106-1 ~ 106-4)는 도 2에 이전에 도시된 뱅크 메모리 구성을 갖는 NAND 플래시 메모리 디바이스들일 수 있다. 플래시 메모리 디바이스들(106-1 ~ 106-4)은 동일한 용량 또는 상이한 용량들을 가질 수 있다.
도 10은 본 발명의 다른 실시예에 따른 플래시 메모리 시스템을 나타낸다. 도 10을 참조하여 보면, 플래시 메모리 시스템(120)은 호스트 시스템(124)과 통신하는 플래시 메모리 제어기(122), 및 직렬로 연결된 복수의 플래시 메모리들을 포함한다. 특정 예에 있어서, 4개의 MBC 플래시 메모리 디바이스들(126-1 ~ 126-4)이 직렬로 결합된다. 4개의 플래시 메모리 디바이스들(126-1 ~ 126-4)의 각각은 메모리 디바이스들간의 동작을 촉진하기 위한 입출력 회로를 갖는다. 당업자는, 메모리 시스템(120)이 플래시 메모리 제어기(122)와 직렬로 결합되는 더 많거나 더 적은 메모리 디바이스들을 가질 수 있다는 것을 이해할 것이다. 그러한 플래시 메모리 디바이스의 일 예는, 공동 소유의 미국 특허 출원 번호 제11/324,023호(2005년 12월 30일), 및 공동 소유의 미국 특허 출원 번호 제11/496,278호(2006년 7월 31일)에 기술되어 있고, 그 내용들이 참조로 이 명세서에 통합되어 있다.
본 실시예들에 따르면, 도 9 및 도 10의 시스템들의 MBC 메모리 디바이스들은, 수신된 페이지 어드레스를 인식하고 어떤 특정 프로그래밍 알고리즘이 요구되는가를 판정하도록 구성된 내부 제어기들을 갖는다. 예를 들어, 물리적 로우에 프로그램될 제1 페이지에 대응하는 페이지 어드레스는 물리적 로우에 프로그램될 제2 페이지와는 상이한 알고리즘으로 프로그램된다. 메모리 제어기들(104 및 122)은, 메모리 셀들의 물리적 로우에 데이터의 페이지들을 프로그램하기 위한 가용의 가상 어드레스 공간을 제한하기 위한 어드레스 바인딩 스킴(address binding scheme)과 더불어 구성된다. 이러한 어드레스 바인딩 스킴은 SBC 모드 또는 부분적 MBC 모드로 데이터를 프로그램하는데 사용된다. 부분적 MBC 저장 모드에 있어서, 하나보다 많은 데이터의 페이지가 메모리 셀들의 물리적 로우에 저장되지만, 메모리 셀들의 물리적 로우에 저장될 수 있는 최대수의 페이지들보다는 적은 페이지이다. 예를 들어, MBC 메모리 디바이스가 더 많은 3비트/셀(또는 물리적 로우당 3개보다 많은 데이터의 페이지들)을 저장할 수 있다면, 메모리 제어기는 SBC 저장 모드로 데이터를 프로그램하기 위한 제1 어드레스 바인딩 스킴 및 2비트/셀 MBC 저장 모드로 데이터를 프로그램하기 위한 제2 어드레스 바인딩 스킴을 갖도록 구성될 수 있다.
실시예들에 있어서 어드레스 바인딩 스킴은 메모리 어레이의 임의의 서브디비전에 제공될 수 있고, 서브디비전은 메모리 블록, 메모리 블록의 서브-블록이나 부분, 또는 물리적 로우를 포함할 수 있다. 따라서, 상이한 임의의 서브디비전들을 갖춘 상이한 어드레스 바인딩 스킴들의 조합들이 향상된 시스템 유연성을 위해 실현될 수 있다. 도 11은, 1비트의 데이터가 셀당 저장되는 SBC 저장 모드, 2비트의 데이터가 셀당 저장되는 MBC 저장 모드, 및 3비트의 데이터가 셀당 저장되는 MBC 저장 모드에 대해서, NAND 플래시 메모리 어레이의 워드라인 또는 물리적 로우에 대한 가상 페이지 어드레스들의 일예의 맵핑을 예시하는 테이블이다.
지금 나타내는 예에 있어서, NAND 셀 스트링이, 각각 물리적 로우로서 칭해지는, 32개의 워드라인들(WL1 ~ WL32)을 포함하는 것으로 가정한다. 테이블의 좌축으로부터의 제2 칼럼은 셀당 1비트 저장 모드에 대한 가상의 어드레스 맵핑을 나타낸다. 따라서, 셀당 1비트 저장 모드에 있어서, 데이터의 하나의 페이지(페이지 1 ~ 페이지 32)는 각각의 물리적 로우에 저장된다. 각각의 번호가 부여된 페이지 이외에 정사각형내에 나타내어진 것은 8비트 가상의 페이지 어드레스이고, 최하위 비트(least significant bit; “LSB”)는 최우측 비트 위치에 있다. 본 예에 있어서, 각각의 가상 페이지 어드레스의 제1의 7비트들은 “x”로 나타내어져 있고, LSB는 “0” 또는 “1”로 나타내어져 있다. 본 예에 있어서는, 페이지들이 WL1로부터 WL32로의 순차적인 순서로 프로그램되고, 그래서 가상의 어드레스들이 또한 순차적인 순서로 되어 있다고 가정한다.
“2비트/셀”로 분류된 칼럼에 있어서, 데이터의 2 페이지들이 각각의 물리적 로우에 저장된다. 순차적인 프로그래밍으로 인해서, 프로그램될 제1 페이지는 하위 페이지(lower page; “LP”)로서 칭해지고 프로그램될 제2 및 최종 페이지는 상위 페이지(upper page; “UP”)로서 칭해진다.
도 12a는 하위 페이지가 프로그램되고 난 후에, 2비트 MBC 메모리의 가능성 있는 스레스홀드 전압들의 일 예의 스레스홀드 전압 분포를 나타낸다. 도 12b는 도 12a의 이전에 프로그램된 하위 페이지 데이터를 고려하여, 상위 페이지가 프로그램된 후에 가능성 있는 스레스홀드 전압의 일 예의 스레스홀드 전압 분포를 나타낸다. 도 12a의 화살표는 소거된 상태 0의 셀이 하위 페이지 프로그래밍 후에 상태 1로 시프트되는 그 자신의 스레스홀드를 가질 수 있다는 것을 나타낸다. 도 12b의 화살표들은, 상태 0 및 상태 1에 대응하는 스레스홀드 전압들이 상위 페이지 프로그래밍 후에 시프트될 수 있다는 것을 나타낸다.
각각의 물리적 로우의 하위 페이지에 대한 LSB가 “0”이고, 각각의 물리적 로우의 상위 페이지에 대한 LSB가 “1”이라는 것에 주목해야 한다. 대안적인 실시예에 있어서, 하위 및 상위 페이지들에 대한 LSB는 도 11의 테이블에 나타내어져 있는 것과는 상이할 수 있다. 하지만, 각각의 물리적 로우에 대한 하위 페이지들은 동일한 LSB를 가질 것이고 각각의 물리적 로우에 대한 상위 페이지들은 동일한 LSB를 가질 것이다.
도 11을 참조하여 보면, “3비트/셀”로 분류된 칼럼에 있어서, 데이터의 3페이지들이 각각의 물리적 로우에 저장된다. 이러한 셀당 3비트 MBC 저장 모드에 있어서, 하위 페이지가 먼저 프로그램되고, 그 다음으로 중간 페이지(IP)가 프로그램되며, 최종적으로 상위 페이지가 프로그램된다.
도 13a는, 하위 페이지가 프로그램되고 난 후의 3비트 MBC 메모리의 가능성 있는 스레스홀드 전압의 일예의 스레스홀드 전압 분포를 나타낸다. 도 13b는, 도 13a의 이전에 프로그램된 하위 페이지 데이터를 고려하여, 중간 페이지가 프로그램되고 난 후의 가능성 있는 스레스홀드 전압들의 일예의 스레스홀드 전압 분포를 나타낸다. 도 13c는 도 13b의 이전에 프로그램된 하위 페이지 데이터를 고려하여, 상위 페이지가 프로그램되고 난 후의 가능성 있는 스레스홀드 전압들의 일예의 스레스홀드 전압 분포를 나타낸다.
3비트보다 큰 비트가 셀당 저장되는 MBC 저장 모드에 있어서, 하위 페이지와 상위 페이지 사이에는 적어도 2개의 중간 페이지들이 있을 수 있다. 각각의 물리적 로우의 하위 페이지에 대한 최종 2개의 LSB가 “00”이고, 각각의 물리적 로우의 중간 페이지에 대한 최종 2개의 LSB가 “01”이며, 각각의 물리적 로우에 대한 최종 2개의 LSB가 “10”이라는 것에 주목해야 한다. 대안적인 실시예들에 있어서, 하위, 중간 및 상위 페이지들에 대한 최종 2개의 LSB는 도 11의 테이블에 나타내어져 있는 것과는 상이할 수 있다. 하지만, 각각의 물리적 로우에 대한 하위 페이지들은 동일한 최종 2개의 LSB를 가질 것이고, 각각의 물리적 로우에 대한 중간 페이지들은 동일한 최종 2개의 LSB를 가질 것이며, 각각의 물리적 로우에 대한 상위 페이지들은 동일한 최종 2개의 LSB를 가질 것이다.
실시예들에 따르면, 도 11에 도시된 바와 같이 가상의 페이지 어드레스 스킴을 갖고 물리적 로우당 N개까지의 페이지들을 저장하기 위한 MBC 메모리 디바이스는 물리적 로우당 N개 미만의 페이지들의 저장 모드로 메모리 어레이의 서브디비전으로 데이터를 프로그램하도록 제어될 수 있다. 이것은, 그게 아니라면 물리적 로우당 N개 전체의 페이지들을 어드레스하기 위해 사용될, 가용한 가상의 페이지 어드레스들의 서브셋만을 이용하여 프로그램 커맨드들을 발행하도록 구성되는 메모리 제어기와 더불어 이루어진다. 보다 상세하게, 가상의 페이지 어드레스들의 서브셋이, 물리적 로우당 가용한 가상의 페이지 어드레스들의 최하위의 순차적인 세트로 제한된다. 서브셋의 가상 페이지 어드레스들의 개수는 MBC 메모리 디바이스용 저장 모드를 결정한다. 이것은, 특정 저장 모드에 대해 이용되는 것들에만 가상의 페이지 어드레스들을 제한하기 위한 어드레스 바인딩 스킴으로서 칭해진다.
예로서, 도 11의 테이블을 참조하여 보면, 3비트 MBC 메모리 디바이스는, 물리적 로우당 N=3 가상 페이지 어드레스들로 어드레스될 수 있는 데이터의 N=3개까지의 페이지들을 저장할 수 있다. 예로서, SBC 저장 모드로 데이터를 메모리 블록에 저장하기 위해서, 메모리 제어기가 데이터의 각각의 페이지에 대해서 프로그램 커맨드들을 발행하는데, 제공되는 대응하는 가상의 페이지 어드레스들은 각각의 물리적 로우의 하위 페이지를 위해서이다. 도 13a에 도시된 바와 같이, 각각의 하위 페이지가 대응하는 물리적 로우에 프로그램된 후에는, 결과적인 가능성 있는 스레스홀드 전압이 상태 1 또는 상태 2에 대응한다. 2페이지들이 각각의 물리적 로우에 저장되는 부분적 MBC 저장 모드에 있어서, 각각의 물리적 로우에 대해서 발행되는 프로그램 커맨드들은 하위 페이지 및 중간의 페이지 어드레스들을 포함한다. 각각의 물리적 로우는, 데이터의 중간 페이지가 프로그램된 후 도 13b에 도시된 4개의 가능성 있는 상태들 중 하나의 상태를 가질 것이다.
도 14는 본 발명의 일 실시예에 따른, 2비트 MBC 메모리 디바이스용 SBC 프로그램 동작의 일 예를 나타낸다. 도 14를 참조하여 보면, 2비트 MBC 메모리 디바이스(200)는 SBC 저장 모드로 데이터를 메모리 블록에 저장하도록 제어된다. 메모리 디바이스(200)는 메모리 블록(204)을 형성하는 NAND 셀 스트링들을 갖는 메모리 어레이(202)를 포함하며, 도 1에 도시된 플래시 메모리 디바이스 블록도를 가질 수 있다. 도 14에 도시된 예에 있어서는, 메모리 블록(204)의 하나의 NAND 셀 스트링만이 나타내어져 있다. 또한, 도 11의 테이블에 도시된 가상의 페이지 어드레싱 스킴은 2비트 MBC 메모리 디바이스(200)에 대해서 사용된다. 메모리 디바이스(200)에 발행되는 프로그램 커맨드 패킷은 초기 프로그램 동작(OP) 코드 필드(PGM)(206), 블록 어드레스 필드(BA)(208), 로우 어드레스 필드(RA)(210), 칼럼 어드레스 필드(CA)(212), 데이터 필드(DATA)(214) 및 컨펌(confirm) 프로그램 OP 코드 필드(CFRM)(216)를 포함한다. 본 예에 있어서, OP 코드 필드(206)는, 프로그램 동작에 관한 정보가 뒤 따를 것이라고 메모리 디바이스(200)에 알리는 미리 정해진 2진 시퀀서를 포함한다. 블록 어드레스 필드(208)는 메모리 어레이(202)내에 특정 메모리 블록을 선택하는데 사용되는 블록 어드레스를 포함한다. 로우 어드레스 필드(210)는 선택된 물리적 로우에 대한 가상의 페이지 어드레스를 포함하고, LSB가 아닌 더 높은 오더(order)의 비트가 물리적 워드라인을 어드레스하는데 사용된다. 칼럼 어드레스 필드(212)는 데이터의 저장을 위한 시작 칼럼 어드레스를 포함한다. 데이터 필드(214)는 프로그램될 데이터의 페이지를 포함한다. 컨펌 프로그램 OP 코드 필드(216)는, 프로그램 동작이 진행될 수 있는 메모리 디바이스(200)를 표시하는 미리 정해진 2진 시퀀스를 포함한다. 현재 도시된 프로그램 커맨드 패킷은, 입력 포트를 통해 병렬로 또는 직렬의 비트스트림으로서 제공될 수 있다. 프로그램 커맨드 패킷들은 상이한 메모리 시스템들에 대해서 상이할 수 있고, 따라서 OP 코드 필드들(206 및/또는 216)을 생략할 수 있거나 추가적인 프로토콜 정보를 포함할 수 있다. 프로그램 커맨드 패킷의 순서 및 포맷은 변경될 수 있다. 프로그램 커맨드 패킷은 데이터의 페이지의 프로그래밍을 위한 어드레스 정보를 필요로 한다.
현재의 SBC 저장 모드 예에 있어서, 로우 어드레스 필드(210)는, 각각의 물리적 로우에 대한 하위 페이지들에만 대응하는 가상의 페이지 어드레스들을 포함하는 것으로 제한된다. 도 14에 있어서, 이러한 가상의 페이지 어드레스들은, 가상의 페이지 어드레스들은 메모리 블록(204)에 대한 하위 페이지들에 대응하는 것들로 바운드(bound)되는 것을 예시하도록 박스가 쳐져 있다. 따라서, 데이터의 페이지들을 메모리 블록(204)의 모든 물리적 로우들에 SBC 저장 모드로 프로그램하기 위해서, 연속적인 프로그램 커맨드들이 메모리 디바이스(200)에 제공되는데, 각각의 프로그램 커맨드 패킷은 프로그램될 데이터의 페이지 및 하위 페이지 가상적 페이지 어드레스를 포함한다. 메모리 디바이스(200)가 물리적 로우당 데이터의 2페이지들까지 프로그램하기 위해 구성되고, 그에 의해 도 12b에 도시된 바와 같이 4개의 가능성 있는 상태들 중 하나의 결과를 가져올지라도, 하위 페이지만을 프로그램하는 것은 도 12a에 도시된 2개의 가능성 있는 스레스홀드 전압 분포들을 초래한다. 따라서, SBC 저장 모드 프로그래밍이 2비트 MBC 메모리 디바이스에서 달성된다.
따라서, 그 자신의 미리 정해진 수의 프로그램/소거 사이클을 달성했기 때문에, 더 이상 신뢰성 있게 데이터를 전체 MBC 저장 모드로 저장하지 않는 메모리 어레이(202)의 서브디비전은 SBC 저장 모드로 데이터를 저장하도록 다운그레이드(downgrade)될 수 있다. 전체 MBC 저장으로부터 SBC 저장으로의 서브디비전의 변환은, 서브디비전의 주목적이 데이터 저장 용량을 최대화하는 것일 경우에, “다운그레이드”로 칭해진다. 대안적으로, 그러한 변환은, 서브디비전의 주목적이 데이터를 신뢰성 있게 저장하는 경우에, “업그레이드(upgrade)”로 칭해질 수 있다.
동일 어드레스 바인딩 원리가, 서브디비전이 SBC 저장 모드로 데이터를 저장하는데 사용되는, 3비트 MBC 저장 디바이스에 적용될 수 있다. 하지만, 3비트 이상의 비트의 MBC 메모리 디바이스는, 특정한 저장 모드에 대한 개수의 프로그램/소거 사이클이 달성됨에 따라, 서브디비전은 전체의 MBC 저장 모드로부터 다음의 하위 부분적 MBC 저장 모드로 점진적으로 변경될 수 있다는 점에서 더해진 장점을 갖는다.
도 15는 본 발명의 일 실시예에 따른, 3비트 MBC 메모리 디바이스에 대한 일 예의 2비트 MBC 프로그램 동작을 나타낸다. 도 15를 참조하여 보면, 3비트 MBC 메모리 디바이스(300)는, 2비트 MBC 저장 모드로 데이터를 메모리 블록에 저장하도록 제어된다. 메모리 디바이스(300)는 메모리 블록(304)을 형성하는 NAND 셀 스트링들을 갖는 메모리 어레이(302)를 포함한다. 메모리 블록(304)의 하나의 NAND 셀 스트링만이 도시되어 있다. 도 11의 테이블에 도시되어 있는 가상의 페이지 어드레싱 스킴은 3비트 MBC 메모리 디바이스에 대해 사용된다. 본 예에 있어서, 이러한 연속적인 프로그램 커맨드 패킷들(306, 308 및 310)이 메모리 디바이스(300)에 제공된다. 프로그램 커맨드 패킷들(306, 308 및 310)의 각각은 도 14에 이전에 도시된 프로그램 커맨드 패킷과 동일한 포맷을 가질 수 있다. 프로그램 커맨드 패킷(306)은 페이지 1에 대한 데이터 및 대응하는 하위 페이지 가상의 어드레스를 포함한다. 프로그램 커맨드 패킷(308)은 페이지 2에 대한 데이터 및 대응하는 중간 페이지 가상의 어드레스를 포함한다. 프로그램 커맨드 패킷(310)은 페이지 4에 대한 데이터 및 대응하는 하위 페이지 가상의 어드레스를 포함한다. 3비트 MBC 메모리 디바이스의 경우에 이어서, 도 1의 메모리 디바이스(10)의 제어기(18)와 같은 제어기는, 어떤 프로그램 알고리즘을 사용할지를 결정하기 위해서 가상의 페이지 어드레스의 2개의 최하위 비트들을 살필 것이다. 이것은, 물리적 로우당 3개의 페이지 어드레스들이 있고, LSB만을 이용하는 것은 어떤 프로그래밍 알고리즘을 사용할 것인지를 결정하기에 부적절하다는 사실에 기인한다.
따라서, 메모리 디바이스(300)가 프로그램 커맨드 패킷(306)을 수신하는 경우에, 프로그래밍 동작은 WL1에 연결된 메모리 셀들에 페이지 1을 프로그램하도록 실행된다. 이러한 메모리 셀들에 대한 결과적인 가능성 있는 스레스홀드 전압 분포는 도 12a 또는 도 13a에 도시되어 있다. 메모리 디바이스(300)가 프로그램 커맨드 패킷(308)을 수신한 후에, 프로그래밍 동작이 WL1에 연결된 메모리 셀들에 페이지 1을 프로그램하도록 실행된다. 데이터의 2번째 페이지가 WL1에 연결된 메모리 셀들에 프로그램되기 때문에, 페이지 1을 프로그램하기 위해 사용되는 것과는 상이한 프로그램 알고리즘이 사용된다. 이러한 메모리 셀들에 대한 결과적인 가능성 있는 스레스홀드 전압 분포는 도 12b 또는 도 13b에 도시되어 있다. WL1에 연결된 메모리 셀들에 대한 2비트 MBC 프로그래밍이 이제 완료된다. 새로운 하위 페이지, 페이지 4를 다음 워드 라인(WL2)에 프로그램하기 위해 3번째 프로그램 커맨드 패킷(310)이 메모리 디바이스(300)에 의해 수신된다. 일단 프로그램되면, WL1에 연결된 메모리 셀들은 도 12a 또는 도 13a에 도시된 가능성 있는 스레스홀드 전압 분포를 가질 것이다. 도시되지 않았지만, 데이터를 메모리 블록(304)의 나머지 물리적 로우들에 프로그램하기 위해 추가적인 프로그램 커맨드 패킷들이 메모리 디바이스(300)에 의해 수신된다. 3비트 이상의 비트의 MBC 메모리 디바이스를 이용하는 장점은, 서브디비전이 2비트 MBC 저장 모드로 사용될 수 있고 그 다음으로 나중에 SBC 저장 모드로 사용될 수 있다는 것이다.
도 16은 N-비트 MBC 플래시 메모리 제어기의 일 예를 나타낸다. 도 16을 참조하여 보면, N-비트 MBC 플래시 메모리 제어기(400)는, N 비트 미만의 비트 저장 모드로 데이터를 프로그램하기 위한 적어도 하나의 바인딩 스킴으로 구성된다. 메모리 제어기(400)는 CPU와 클록 제어 블록(402), 플래시 제어 블록(404), 및 맵핑 테이블(406)을 일반적으로 포함한다. 도시되지 않았지만, CPU 및 클록 제어 블록(402)은, 공통의 버스를 통해 다른 서브시스템들과 통신하기 위한 중앙 처리 장치, 메모리 제어기(400)의 다른 회로들에 필요한 클록 신호들을 제공하기 위한 클록 발생기들, 및 디바이스의 적절한 동작을 인에이블시키는데 필요할 수 있는 다른 회로들을 포함한다. 플래시 제어 블록(404)은, 파일 및 메모리 관리 서브-블록. ECC(error correcting code; 에러 교정 코드) 서브-블록 및 물리적 플래시 인터페이스 서브-블록을 포함한다. 플래시 메모리 디바이스들은 물리적 플래시 인터페이스 서브-블록을 통해 액세스된다. 플래시 메모리 디바이스들로부터 액세스되는 데이터는 ECC 서브-블록에 의해 체크되고 교정된다. 파일 및 메모리 관리 서브-블록은 논리적 대 물리적 어드레스 변환을 제공하고, 웨어-레벨링 알고리즘(wear-leveling algorithm)을 실행한다.
일반적으로 플래시 제어 블록(404)은, 연결되어 있는 시스템내의 각각의 플래시 메모리 디바이스의 블록 또는 페이지의 각각에 대해서 소거 사이클, 유효/비어 있음 등과 같은 메모리 디바이스들의 특성들(정보)을 정확하게 추적하고 갱신한다. 이러한 정보는 로컬 메모리내에 저장되어 맵핑 테이블로서 구성된다. 일 예의 맵핑 테이블(408)은 도 16에 나타내어져 있다. 맵핑 테이블(408)은 각각의 블록에 대해서 데이터 저장 모드를 지정하는 SBC/MBC 상태 비트를 포함할 수 있는, 메타-데이터로 칭해지는, 각각의 메모리 디바이스에 대한 정보를 저장한다. “0”의 SBC/MBC 상태 비트는, 서브디비전이 MBC 저장 모드로 데이터를 저장하는 것을 표시할 수 있고, “1”은 서브디비전이 SBC 저장 모드로 데이터를 저장하는 것을 표시할 수 있다. 셀당 3비트 보다 많은 비트를 저장하는 MBC 메모리 디바이스들에 대해서는, 적어도 2 상태 비트들이 가능성 있는 데이터 저장 모드들의 각각을 지정하기 위해 사용된다는 것을 이해해야한다. 플래시 메모리 제어기가 또한 각각의 메모리 디바이스에 대해서 가상의 페이지 어드레스 범위의 추적을 유지하고, 각각의 어드레스 바인딩 스킴에 대해서, 플래시 메모리 제어기가 특정의 저장 모드에 대해 허용된 가상의 페이지 어드레스들만을 사용하도록 하나의 알고리즘으로 프로그램된다는 것에 주목한다.
플래시 제어 블록(404)은 메모리 시스템의 수명 동안에 맵핑 테이블(408)을 계속해서 갱신하고 감시한다. 맵핑 테이블이 메모리 시스템의 파워 업시에 정보로 채워질(populated) 수 있고, 내구성(endurance)과 SBC/MBC 상태와 같은 정보가 각각의 물리적 로우 및/또는 메모리 블록과 관련되는 여분의 데이터 필드로 메모리 디바이스에 저장될 수 있다는 것에 주목한다. 페이지 또는 블록이 최대수의 프로그램/소거 사이클(MLC 플래시 메모리에서 10K 사이클)에 도달하면, 플래시 제어 블록(404)은 저장 모드를, 그에 의해 프로그램/소거 사이클이 100K로 연장되는 SBC 저장 모드로 변경하는 것을 결정할 수 있다.
메모리 제어기(400)가 데이터를 프로그램하도록 호스트 요청을 수신하는 경우에, 플래시 제어 블록(404)은, 데이터가 프로그램되어야할 곳을 판정하기 위해 맵핑 테이블(406)을 룩업(look up)한다. 선택된 메모리 블록이 SBC 저장 모드용으로 구성되면, 각각의 물리적 로우에 대해 하위 페이지 가상 어드레스들만을 이용하기 위해 프로그램된 어드레스 바인딩 스킴이 적용된다. 다수의 페이지들이 프로그램되는 것으로 가정하면, 메모리 제어기(400)에 의해, 각각 하위 페이지 가상 어드레스들만을 포함하는 로우 어드레스 필드를 갖는 커맨드 패킷들이 준비되고 선택된 MBC 메모리 디바이스로 발행된다.
도 17은, 본 발명에 따라, 데이터를 저장하도록 MBC 메모리 디바이스를 제어하는 목적을 위해, SBC, 전체의 MBC 또는 부분적 MBC 저장 모드들로 커맨드들을 발행하도록 메모리 제어기를 동작시키는 방법의 흐름도이다.
도 16 및 17을 참조하여 보면, 상기 방법은 메모리 시스템을 파워업시키는 것에 의해 시작된다(단계 500). 메모리 시스템은 메모리 제어기(400)와 유사하게 구성된 메모리 제어기 및 적어도 하나의 N 비트 MBC 메모리 디바이스를 포함한다. 이러한 메모리 시스템은 도 9 도는 도 10에 도시된 구성을 가질 수 있다. 파워업 시퀀스의 부분으로서, 메모리 제어기는, 그 서브디비전들에 대한 내구성 및 SBC/MBC 상태 정보와 같은 디바이스 메타-데이터를 얻기 위해서 적어도 하나의 N 비트 MBC 메모리 디바이스의 스캔(scan)을 실행한다. 이러한 정보는 수집되어 메모리 제어기(400)의 맵핑 테이블에 저장된다. 일단 파워업 시퀀스가 완료되면, 메모리 제어기(400)는 호스트 디바이스로부터 커맨드들을 수신할 수 있다. 호스트 프로그램 요청이 메모리 제어기(400)에 의해 수신된다(단계 504). 이러한 요청은 프로그램될 데이터에 대한 약간의 우선권 레벨(priority level)을 포함할 수 있다. 예를 들면, 낮은 우선권 데이터는 중대하지 않은 미디어 데이터일 수 있고 높은 우선권 데이터는 높은 신뢰성의 저장을 요구하는 것으로 지정되는 데이터일 수 있다. 메모리 제어기(400)의 다른 알고리즘들이, 예컨대, 프로그램될 데이터의 크기, 메모리 디바이스에서의 빈 공간(free space)의 가용성, 및 이전에 설명된 우선권 레벨 등의 파라미터들에 기초하여, 사용하기에 적절한 웨어 레벨링 기술을 결정하도록 실행될 수 있다,
메모리 제어기는, 메모리 제어기(400)에 의해 실행되는 앞서 언급된 알고리즘들에 기초하여, 데이터가 저장될 곳을 확인하기 위해 그 자신의 맵핑 테이블에 액세스한다(단계 506). 다음으로, 메모리 제어기는, SLC 저장이 호스트 프로그램 요청에 대해 요구되는가를 판정한다(단계 508). SLC 저장이 요구된다면, 메모리 제어기(400)는, 각각의 물리적 로우에 대해서 하위 페이지의 가상적 어드레스들만이 사용되는, SBC 어드레스 바인딩 스킴을 이용하여 선택된 서브디비전에서 데이터를 저장하기 위해 단계 510에서 커맨드들을 발행한다. 그게 아니라면, 방법은, 메모리 제어기가 전체의 MLC 프로그래밍이 요구되는가를 판정하는 단계 512로 진행한다. 전체의 MLC 프로그래밍이 요구되는 경우에, 메모리 제어기는 각각의 물리적 로우에 대해서 전체의 가상적인 페이지 어드레스 범위로 커맨드들을 발행한다.(단계 514). 그게 아니라면, 물리적 로우당 가상의 페이지 어드레스들의 전체 범위의 서브셋이 데이터를 프로그램하기 위해 사용되는 부분적 MLC 어드레스 바인딩 스킴으로 커맨드들이 발행된다(단계 516).
도 17의 방법에 따라 메모리 제어기에 의해 발행되는 커맨드들은 다른 저장 모드로 선택된 MBC 메모리 디바이스의 동작을 구성하기 위한 특별한 커맨드들의 발행을 요구하지 않는다. 이것은, 커맨드들이 온-더-플라이로 발행되기 때문에, 클록 사이클들이 MBC 메모리 디바이스를 구성하기 위해 낭비되지 않으므로, 메모리 시스템의 더 높은 성능을 보장한다. 또한, 메모리 디바이스의 재설정이, 필요한 저장 모드로 그것을 설정하기 위해 요구되지 않는다.
도 18은 도 17에서 개괄된 방법을 가진 메모리 제어기 동작으로부터 커맨드들을 수신하는 N비트 MBC 메모리 디바이스의 동작을 나타낸다. 도 18을 참조하여 보면, 메모리 제어기(400)에 의해 발행된 프로그래밍 커맨드들이 MBC 메모리 디바이스에 의해 수신되는 방법이 시작된다(단계 600). 집합적으로 이러한 커맨드들은, 다수의 페이지들을 걸칠 수 있는 호스트에 의해 요청되는 일련의 데이터를 프로그램하기 위한 것이다. 메모리 디바이스가 메모리 디바이스의 상이한 서브디비전들에 데이터의 상이한 세트들을 프로그램하기 위한 인터리브된(interleaved) 커맨드들을 수신할 수 있다는 것에 주목해야 한다. 환언하면, 하나의 커맨드가 하나의 서브디비전에 데이터에 대한 데이터의 프로그래밍을 시작하도록 수신될 수 있고, 후속하여 수신되는 커맨드가 다른 서브디비전에 대한 데이터의 프로그래밍을 시작하도록 수신될 수 있다. 그 다음으로, 3번째 커맨드가 제1 서브디비전에 더 많은 데이터를 계속해서 프로그램하기 위해 수신될 수 있다. 후속하여, MBC 메모리 디바이스는, 각각의 데이터의 페이지와 관련되는 가상의 페이지 어드레스의 저적어도 LSB를 체크한다(단계602). 예컨대, MBC 메모리 디바이스가 셀 데이터 저장당 3비트까지 구성되어 있으면, 최종 2개의 LSB들이 체크된다. 예컨대, MBC 메모리 디바이스는 셀 데이터 저장소당 2비트까지 구성되어 있으면, 최종 LSB가 체크된다. 메모리 디바이스가 셀당 저장하도록 구성된 최대수의 비트에 관계없이, 물리적 로우의 각 가상적 페이지를 확인하기 위해 요구되는 최대수의 가상의 페이지 어드레스 LSB들이 있을 것이다. 단계 602에서 체크될 LSB들이 있다. MBC 메모리 디바이스의, 커맨드 디코더로도 칭해지는, 내부 제어기는 그 다음으로, 단계 604에서 LSB들에 응답하여 적절한 프로그래밍 시퀀스 또는 알고리즘을 실행시킨다. 보다 상세하게는, 내부 제어기는, MBC 메모리 디바이스용 셀당 최대수의 비트보다 더 적은 비트용의 임의의 프로그래밍 알고리즘을 포함하는, 부분적 MLC 프로그래밍 알고리즘을 실행시킨다. 이러한 내부 제어기는, 제어기(18)로서 도 1의 플래시 메모리 디바이스 블록내에 예로서 도시되어 있다.
예를 들어, MBC 메모리 디바이스의 내부 제어기는, 가상의 페이지 어드레스의 LSB가 “0”인 경우에, SBC 프로그래밍 알고리즘을 실행시킬 수 있다. “1”의 가상의 페이지 어드레스 LSB를 가진 추가적인 프로그램 커맨드가 없으면, 페이지가 SBC 저장 모드로 물리적 로우에 프로그램된다. 물리적 로우의 셀에 대한 결과적인 가능성 있는 스레스홀드 전압들은 예로서 도 12a 또는 13에 도시된 바와 같이 나타날 수 있다. 다른 예에 있어서, 첫 번째가 “0”의 가상의 페이지 어드레스 LSB를 포함하고 2번째가 “1”의 가상의 페이지 어드레스 LSB를 포함하는, 한 쌍의 프로그램 커맨드들이 수신된다. 이러한 시나리오에 있어서, 데이터의 제1 페이지는 SBC 프로그래밍 알고리즘으로 프로그램된다. 동일한 물리적 로우에 대해서 “1”의 LSB를 갖는 데이터의 제2 페이지가, 메모리 디바이스의 내부 제어기에 의해 실행되는, 2비트 MBC 프로그래밍 알고리즘에 따라 프로그램된다. 물리적 로우의 셀에 대한 결과적인 가능성 있는 스레스홀드 전압들이 도 12b 또는 13b에 도시된 바와 같이 나타날 수 있다.
도 19는 일 실시예에 따른 메모리 시스템의 세부적인 동작예를 나타낸다. 단계 700에서 시작하여, MBC 메모리 디바이스는, N비트 MBC 저장용으로 구성되는, 예로서 메모리 블록들과 같은, 모든 그 자신의 서브디비전들을 갖는다고 가정되는데, N은 셀당 저장될 수 있는 최대수의 비트이다. 본 예에 있어서, N=2라고 가정된다. 따라서, 메모리 제어기의 맵핑 테이블은 전체의 MLC 데이터 저장 모드를 나타내도록 각각의 서브디비전 세트에 대해서 SLC/MLC 상태 비트(들)를 가질 것이다. 호스트 요청은 단계(702)에서 메모리 제어기에 의해 수신되고, 메모리 제어기는 요청이 단계 704에서 프로그램 요청 또는 소거 요청 중 어느 것인가를 판정한다. 호스트 요청이 어느 쪽도 아니라면, 요청은 단계 706에서 실행되고 시스템은 다른 호스트 요청을 기다린다. 그게 아니라면, 방법은, 메모리 제어기가, 데이터가 MBC 모드로 프로그램되어야하는가를 더 판정하는, 단계 708로 진행한다. 데이터가 MBC 저장 모드로 프로그램될 것이라면, 선택된 메모리 블록에 대한 프로그램/소거 사이클의 수는 단계 710에서 체크된다. 단계 712에서, 선택된 메모리 블록에 대한 최대수의 프로그램/소거 사이클이 도달되었는가의 판정이 실행된다. 그렇지 않다면, MLC 프로그램 동작이 단계 714에서 메모리 디바이스에 요구되는 프로그램 커맨드들을 발행하는 것에 의해 실행된다.
다른 한편으로, 선택된 메모리 블록에 대한 최대수의 프로그램/소거 사이클이 도달되었다면, 메모리 제어기는 블록 수명 연장 알고리즘을 실행한다. 이러한 알고리즘은, 새로운 데이터가 사용 가능한 MLC 또는 SLC로 구성된 메모리 블록에 프로그램되는 단계 716에서 시작된다. 원래 선택된 메모리 블록내에 채워져 있는 임의의 데이터는 나중에, 새로운 데이터가 최근에 프로그램된 동일한 메모리 블록일 수 있는 사용 가능한 MLC 또는 SLC로 구성된 메모리 블록에 대한 백그라운드 동작 동안에 복사된다. 이러한 백그라운드 동작은 메모리 제어기에 의해 스케쥴(schedule)될 수 있다.
단계 718에서, 선택된 블록은 메모리 어레이내의 그 대응하는 SLC/MLC 태그 비트(tag bit)를 갱신하는 것에 의해 SLC 메모리 블록으로서 사용하기 위해 변환된다. 메모리 제어기의 맵핑 테이블은, 선택된 메모리 블록의 저장 모드에서의 이러한 변경을 반영하도록 단계 720)에서 갱신된다. 이러한 갱신은, 변환된 SLC 메모리 블록에 대한 프로그램/소거 사이클의 수를 적절한 SLC 프로그램/소거 제한으로 재설정하는 것을 더 포함할 수 있다. 예를 들어, 이러한 제한은 10K 내지 100K 사이클 사이일 수 있다.
단계 708에서의 결정으로 되돌아가서, 프로그램 요청이 SLC 저장에 대한 것이라면, 선택된 SLC 메모리 블록에 대한 프로그램/소거 사이클의 수는, 최대수의 사이클이 도달되었는가를 판정하도록 단계 722에서 체크된다. 단계 724에서, 선택된 SLC 메모리 블록에 대해서 최대수의 사이클이 도달되지 않았다면, SLC 프로그램 동작이, 요구되는 프로그램 커맨드들을 메모리 디바이스에 발행하는 것에 의해 단계 706에서 실행된다. 앞서 논의된 바와 같이, SLC 어드레스 바인딩 스킴이, 각각의 물리적 로우에 대한 하위 페이지들의 것들로 제한되는 가상의 페이지 어드레스들을 가진 프로그램 커맨드들을 발행하기 위해 메모리 제어기에 의해 사용된다. 그게 아니라면, SLC 메모리 블록은 신뢰성 있게 SLC 데이터를 저장할 수 없으며, 방법은, SLC 프로그램 동작이 다른 가용한 SLC 메모리 블록에 대해 실행되는, 단계 726으로 진행하고, 원래 선택된 SLC 메모리 블록내의 임의의 잔여 데이터는 동일한 가용한 SLC 메모리 블록 또는 다른 가용한 SLC 메모리 블록으로 복사된다. 원래 선택된 SLC 메모리 블록은 단계 728에서 메모리 디바이스내에서 무효한 것으로서 태그(tag)되며, 메모리 제어기내의 맵핑 테이블은 단계 720에서 대응하여 갱신된다. 메모리 블록은 무효한 것으로 태그하는 것은 미래의 사용으로부터 메모리 블록을 퇴역시키는 효과를 갖는다.
현재 나타낸 실시예들의 장점은, 메모리 디바이스의 전체 MBC 저장 모드 미만의 동작의 임의의 저장모드가, 임의의 레지스터들을 설정하는 것, 메모리 디바이스를 재시동하는 것 또는 그 일반적인 동작에 대한 임의의 다른 인터럽션(interruption) 없이 실행될 수 있다는 것이다.
모든 사전에 논의된 실시예들에 있어서, 플래시 메모리 제어기에 의해 실행되는 선택적인 MBC 또는 SBC 프로세스들이 사용자에게 투명하게 이루어진다. SBC/MBC 저장 모드 동작들의 모든 결정이 플래시 메모리 제어기에 의해 이루어지므로, 사용자로부토 요구되는 추가적인 명령들 또는 명령들의 변형이 없다. 따라서, 호스트 시스템을 갖춘 현재 설명된 플래시 메모리 시스템을 구현하기 위해 요구되는 최소의 오버헤드(overhead)가 있다.
앞서의 설명에 있어서, 설명의 목적을 위해, 실시예들의 완전한 이해를 제공하도록, 많은 세부들이 언급되었다. 하지만, 당업자에게는 이러한 특정의 세부들이 실시예들을 실시하기 위해서 필요하지 않다는 것이 명백할 것이다. 다른 예로서, 잘 알려진 전기적인 구조들 그리고 회로들이 실시예들의 양태를 모호하게 하지 않도록 하기 위해서 블록도의 형태로 도시되었다. 예를 들어, 여기 설명된 실시예들이 소프트웨어 루틴(software routine), 하드웨어 회로, 펌웨어, 또는 그 조합으로서 구현되는지의 여부에 대해서는 상세한 세부들이 제공되지 않았다.
상기한 실시예들은 예시로서만 의도되었다. 대안들, 수정들 및 변형들이, 여기 첨부된 청구 범위에 의해서만 규정되는, 권리 범위로부터 벗어나지 않고 당업자에 의해 특정 실시예들에 대해 유효해질 수 있다.

Claims (29)

  1. 물리적 로우(physical row)당 N개의 데이터의 페이지들 - N은 1보다 큰 정수임 - 까지 저장하도록 구성된 셀당 다수 비트(multiple bit per cell; “MBC”) 플래시 메모리 디바이스를 프로그램하기 위한 방법으로서, 상기 방법은:
    플래시 메모리 디바이스의 적어도 하나의 물리적 로우를 갖는 서브디비전(subdivision)에 다수의 데이터의 페이지들을 프로그램하기 위한 프로그램 커맨드(program command)들의 그룹을 발행하는 단계로서,
    상기 프로그램 커맨드들의 그룹은, 적어도 하나의 물리적 로우의 각각에 대응하는 모든 가능성 있는 논리적 페이지 어드레스들로부터 선택된 논리적 페이지 어드레스들의 서브셋(subset)을 어드레스하는 것(addressing)에 제한되는, 단계; 및
    상기 프로그램 커맨드들내의 상기 논리적 페이지 어드레스들의 서브셋에 응답하여 상기 플래시 메모리 디바이스의 적어도 하나의 물리적 로우의 각각에 N개 미만의 페이지들을 프로그램하는 단계를 포함하는, 셀당 다수 비트 플래시 메모리 디바이스 프로그램 방법.
  2. 청구항 1에 있어서,
    상기 프로그램 커맨드들의 그룹을 발행하기 전에, 상기 플래시 메모리 디바이스의 각각의 서브디비전에 대한 저장 모드 정보(storage mode information)를 포함하는 맵핑 테이블에 액세스(access)하는 단계를 더 포함하는, 셀당 다수 비트 플래시 메모리 디바이스 프로그램 방법.
  3. 청구항 2에 있어서,
    상기 맵핑 테이블에 액세스하는 단계는,
    N개 미만의 데이터의 페이지들이 물리적 로우당 저장되는, 부분적 MBC 저장 모드를 갖는 서브디비전을 선택하는 단계를 포함하는, 셀당 다수 비트 플래시 메모리 디바이스 프로그램 방법.
  4. 청구항 3에 있어서,
    상기 부분적 MBC 저장 모드에 대응하는 논리적 페이지 어드레스들의 서브셋을 선택하는 단계를 더 포함하는, 셀당 다수 비트 플래시 메모리 디바이스 프로그램 방법.
  5. 청구항 4에 있어서,
    적어도 하나의 물리적 로우의 각각에 대응하는 모든 가능성 있는 논리적 페이지 어드레스들은, 하위의 페이지 어드레스로 시작하고 상위의 페이지 어드레스로 끝나는 연속적인 페이지 어드레스들을 포함하는, 셀당 다수 비트 플래시 메모리 디바이스 프로그램 방법.
  6. 청구항 5에 있어서,
    논리적 페이지 어드레스들의 서브셋은, 적어도 하나의 물리적 로우의 각각에 대해서 하위의 페이지 어드레스와 상위의 페이지 어드레스 사이의 중간 페이지 어드레스(intermediate page address)까지의 하위의 페이지 어드레스를 포함하는, 셀당 다수 비트 플래시 메모리 디바이스 프로그램 방법.
  7. 청구항 5에 있어서,
    논리적 페이지 어드레스들의 서브셋은, 적어도 하나의 물리적 로우의 각각에 대해서 하위의 페이지 어드레스만을 포함하는, 셀당 다수 비트 플래시 메모리 디바이스 프로그램 방법.
  8. 청구항 5에 있어서,
    발행하는 단계가, 다수의 데이터의 페이지들 중 하나의 페이지와 논리적 페이지 어드레스들의 서브셋 중 하나를 각각 포함하는 프로그램 커맨드 패킷들을 반복적으로 제공하는 단계를 포함하는, 셀당 다수 비트 플래시 메모리 디바이스 프로그램 방법.
  9. 청구항 8에 있어서,
    상기 발행하는 단계가,
    상기 플래시 메모리 디바이스의 하나의 물리적 로우에 다수의 데이터의 페이지들 중 M개의 페이지들을 프로그램하기 위한 M개의 프로그램 커맨드 패킷들 - M은 N 미만의 정수 값임 - 을 제공하는 단계를 포함하는, 셀당 다수 비트 플래시 메모리 디바이스 프로그램 방법.
  10. 청구항 8에 있어서,
    상기 발행하는 단계가,
    상기 플래시 메모리 디바이스의 하나의 물리적 로우에 다수의 데이터의 페이지들 중 하나의 페이지를 프로그램하기 위한 하나의 프로그램 커맨드 패킷을 반복적으로 제공하는 단계를 포함하는, 셀당 다수 비트 플래시 메모리 디바이스 프로그램 방법.
  11. 청구항 1에 있어서,
    상기 프로그램 커맨드들의 그룹을 발행하기 전에, 부분적 MBC 저장 모드로 다수의 데이터의 페이지들을 프로그램하기 위한 호스트 요청(host request)을 수신하는 단계를 더 포함하는, 셀당 다수 비트 플래시 메모리 디바이스 프로그램 방법.
  12. 청구항 1에 있어서,
    상기 프로그램 커맨드들의 그룹을 발행하기 전에 전체 MBC 저장 모드로 다수의 데이터의 페이지들을 프로그램하기 위한 호스트 요청을 수신하는 단계를 더 포함하는, 셀당 다수 비트 플래시 메모리 디바이스 프로그램 방법.
  13. 청구항 12에 있어서,
    서브디비전에 대한 최대수의 MBC 프로그램/소거(erase) 사이클이 도달되었다는 것을 정하는 단계를 포함하는, 셀당 다수 비트 플래시 메모리 디바이스 프로그램 방법.
  14. 청구항 13에 있어서,
    전체 MBC 저장 모드로 다수의 데이터의 페이지들을 프로그램하기 위해 구성된 다른 서브디비전을 선택하는 단계, 및 상기 서브디비전을 부분적 MBC 저장 모드로 설정하는 단계를 더 포함하는, 셀당 다수 비트 플래시 메모리 디바이스 프로그램 방법.
  15. 청구항 14에 있어서,
    상기 전체 MBC 저장 모드는 셀(cell)당 2비트(bit) 저장 모드를 포함하고, 상기 부분적 MBC 저장 모드는 셀당 1비트 저장 모드를 포함하는, 셀당 다수 비트 플래시 메모리 디바이스 프로그램 방법.
  16. 메모리 디바이스의 각각의 물리적 로우에 대응하는 모든 가능성 있는 논리적 페이지 어드레스들로부터 선택되는 논리적 페이지 어드레스들의 서브셋을 어드레스하는 것에 제한되는 프로그램 커맨드들을 발행하도록 구성된 메모리 제어기를 포함하는 시스템으로서, 상기 메모리 디바이스는,
    물리적 로우당 최대 N개의 페이지들 - N은 1보다 큰 정수임 -을 저장하도록, 그리고
    상기 메모리 제어기로부터 수신되는 프로그램 커맨드들내의 논리적 페이지 어드레스들의 서브셋에 응답하여 물리적 로우당 N개 미만의 페이지들을 프로그램하도록,
    구성된 셀당 다수 비트(MBC) 메모리 디바이스를 포함하는, 시스템.
  17. 청구항 16에 있어서,
    상기 메모리 제어기는,
    상기 메모리 디바이스의 서브디비전들에 대응하는 메타-데이터(meta-data)를 저장하기 위한 맵핑 테이블을 포함하는, 시스템.
  18. 청구항 17에 있어서,
    상기 맵핑 테이블은 상기 서브디비전들의 각각에 대한 저장 모드 정보를 포함하도록 구성되는, 시스템.
  19. 청구항 18에 있어서,
    상기 맵핑 테이블은 상기 서브디비전들의 각각에 대한 저장 모드와 관련되는 어드레스 바인딩 정보(address binding information)를 포함하도록 구성되는, 시스템.
  20. 청구항 19에 있어서,
    상기 메모리 제어기는,
    상기 맵핑 테이블에 액세스하고 상기 맵핑 테이블의 메타-데이터에 응답하여 프로그램 커맨드들을 제공하기 위한 제어 회로를 포함하는, 시스템.
  21. 청구항 20에 있어서,
    상기 프로그램 커맨드들의 각각은,
    상기 메모리 디바이스의 서브디비전 및 상기 서브디비전내의 물리적 로우를 선택하기 위한 어드레스 정보, 데이터의 페이지, 및
    상기 물리적 로우에 프로그램될 데이터의 페이지에 대한 논리적 페이지 어드레스를 포함하는, 시스템.
  22. 청구항 21에 있어서,
    상기 메모리 디바이스는 물리적 로우당 최대 N=2개의 페이지들을 저장하도록 구성되고, 물리적 로우당 2 페이지들의 각각은 상위 페이지 어드레스와 하위 페이지 어드레스에 의해 어드레스될 수 있는(addressable), 시스템.
  23. 청구항 22에 있어서,
    상기 상위 페이지 어드레스는 제1 최하위 비트(least significant bit)를 갖고,
    상기 하위 페이지 어드레스는 상기 제1 최하위 비트와는 상이한 제2 최하위 비트를 갖는, 시스템.
  24. 청구항 17에 있어서,
    상기 메모리 디바이스의 서브디비전들은 메모리 블록을 포함하는, 시스템.
  25. 청구항 17에 있어서,
    상기 메모리 디바이스의 서브디비전들은 메모리 블록의 서브-블록을 포함하는, 시스템.
  26. 청구항 17에 있어서,
    상기 메모리 디바이스의 서브디비전들은 메모리 블록의 물리적 로우를 포함하는, 시스템.
  27. 셀당 N 비트 - N은 1 보다 큰 정수임 - 까지 저장하기 위해 구성된 셀당 다수 비트(MBC) 플래시 메모리 디바이스를 프로그램하기 위한 방법으로서,
    데이터 페이지들을 프로그램하기 위한 호스트 요청을 수신하는 단계;
    N개 미만의 가상적으로 어드레스될 수 있는 데이터 페이지들이 상기 플래시 메모리 디바이스의 각각의 물리적 로우에 저장되는, 부분적 MBC 저장 모드로 프로그램될 데이터 페이지들을 정하는 단계;
    상기 부분적 MBC 저장 모드로 구성되는 MBC 플래시 메모리 디바이스의 서브디비전을 선택하도록 플래시 메모리 디바이스용 메타-데이터를 포함하는 맵핑 테이블에 액세스하는 단계; 및
    각각의 물리적 로우에 페이지들을 프로그램하기 위한 N개 미만의 가능성 있는 가상의 페이지 어드레스들의 서브셋으로 제한되는 가상의 페이지 어드레스들을 이용하여 상기 서브디비전에 데이터 페이지들을 프로그램하기 위한 적어도 하나의 프로그램 커맨드를 발행하는 단계를 포함하는, 셀당 다수 비트(MBC) 플래시 메모리 디바이스 프로그램 방법.
  28. 청구항 27에 있어서,
    N=2개 및 가능성 있는 가상의 페이지 어드레스들은 하위 페이지 어드레스 및 상위 페이지 어드레스를 포함하고,
    발행하는 단계가, 데이터 페이지 및 하위 페이지 어드레스를 각각 포함하는, 프로그램 커맨드들을 반복적으로 발행하는 단계를 포함하는, 셀당 다수 비트(MBC) 플래시 메모리 디바이스 프로그램 방법.
  29. 청구항 27에 있어서,
    N>2개 및 가능성 있는 가상의 페이지 어드레스들이, 하위 페이지 어드레스, 상위 페이지 어드레스, 및 상기 상위 페이지 어드레스와 상기 하위 페이지 어드레스 사이의 적어도 하나의 중간 페이지 어드레스를 포함하고,
    발행하는 단계가, 상기 적어도 하나의 중간 페이지 어드레스와 상기 하위 페이지 어드레스 중 하나와 데이터 페이지를 각각 포함하는 프로그램 커맨드들을 반복적으로 발행하는 단계를 포함하는, 셀당 다수 비트(MBC) 플래시 메모리 디바이스 프로그램 방법.
KR1020147010728A 2011-09-23 2012-09-19 플래시 메모리 시스템 KR20140072118A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161538540P 2011-09-23 2011-09-23
US61/538,540 2011-09-23
US13/455,780 2012-04-25
US13/455,780 US9588883B2 (en) 2011-09-23 2012-04-25 Flash memory system
PCT/CA2012/000860 WO2013040681A1 (en) 2011-09-23 2012-09-19 Flash memory system

Publications (1)

Publication Number Publication Date
KR20140072118A true KR20140072118A (ko) 2014-06-12

Family

ID=47912557

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147010728A KR20140072118A (ko) 2011-09-23 2012-09-19 플래시 메모리 시스템

Country Status (9)

Country Link
US (5) US9588883B2 (ko)
EP (1) EP2758964A4 (ko)
JP (1) JP2014530421A (ko)
KR (1) KR20140072118A (ko)
CN (1) CN103946923A (ko)
CA (1) CA2849862A1 (ko)
HK (1) HK1200589A1 (ko)
TW (1) TW201329987A (ko)
WO (1) WO2013040681A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170062351A (ko) * 2015-11-26 2017-06-07 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치에 데이터를 프로그램 하는 프로그램 방법

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719664B1 (en) * 2011-04-12 2014-05-06 Sk Hynix Memory Solutions Inc. Memory protection cache
US9588883B2 (en) 2011-09-23 2017-03-07 Conversant Intellectual Property Management Inc. Flash memory system
KR102053953B1 (ko) * 2013-02-04 2019-12-11 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 프로그램 방법
US10042750B2 (en) 2013-03-15 2018-08-07 Micron Technology, Inc. Apparatuses and methods for adaptive control of memory using an adaptive memory controller with a memory management hypervisor
CN104217762B (zh) * 2013-05-31 2017-11-24 慧荣科技股份有限公司 数据储存装置及其错误校正方法以及数据读取方法
TWI514141B (zh) * 2013-08-08 2015-12-21 Phison Electronics Corp 記憶體位址管理方法、記憶體控制器與記憶體儲存裝置
KR102274280B1 (ko) * 2015-06-22 2021-07-07 삼성전자주식회사 불휘발성 메모리 장치의 동작 방법
KR20170011645A (ko) * 2015-07-23 2017-02-02 에스케이하이닉스 주식회사 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
US10096355B2 (en) 2015-09-01 2018-10-09 Sandisk Technologies Llc Dynamic management of programming states to improve endurance
JP6457364B2 (ja) 2015-09-11 2019-01-23 東芝メモリ株式会社 メモリシステム
KR102456490B1 (ko) * 2016-01-12 2022-10-20 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법
US9811269B1 (en) * 2016-12-30 2017-11-07 Intel Corporation Achieving consistent read times in multi-level non-volatile memory
CN106980799B (zh) * 2017-03-10 2019-05-14 华中科技大学 一种磨损均衡感知的非易失内存加密系统
US10289561B2 (en) * 2017-08-08 2019-05-14 Samsung Electronics Co., Ltd. Nonvolatile memory devices and methods of controlling the same
KR102431238B1 (ko) * 2017-10-11 2022-08-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
TWI687809B (zh) * 2018-02-13 2020-03-11 點序科技股份有限公司 快閃記憶體儲存裝置與寫入管理方法
KR20190099570A (ko) * 2018-02-19 2019-08-28 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR102565913B1 (ko) * 2018-06-12 2023-08-11 에스케이하이닉스 주식회사 저장 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템 및 이의 동작 방법
KR20200088709A (ko) * 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11194473B1 (en) * 2019-01-23 2021-12-07 Pure Storage, Inc. Programming frequently read data to low latency portions of a solid-state storage array
US10817187B2 (en) * 2019-01-24 2020-10-27 Western Digital Technologies, Inc. Balancing the block wearing leveling for optimum SSD endurance
US11016781B2 (en) * 2019-04-26 2021-05-25 Samsung Electronics Co., Ltd. Methods and memory modules for enabling vendor specific functionalities
EP3891614B1 (en) * 2019-04-30 2023-06-21 Yangtze Memory Technologies Co., Ltd. Electronic apparatus and method of managing read levels of flash memory
US11288007B2 (en) * 2019-05-16 2022-03-29 Western Digital Technologies, Inc. Virtual physical erase of a memory of a data storage device
US11157379B2 (en) * 2019-10-30 2021-10-26 International Business Machines Corporation Managing blocks of memory based on block health using hybrid controllers
US11094372B1 (en) 2020-05-07 2021-08-17 Powerchip Semiconductor Manufacturing Corporation Partial writing method of dram memoryl device to reduce power consumption associated with large voltage swing of internal input/output lines
KR20210142981A (ko) * 2020-05-19 2021-11-26 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
DE102020123220A1 (de) * 2020-09-04 2022-03-10 Harman Becker Automotive Systems Gmbh Speichersystem, Verfahren zum Betrieb desselben
US11934675B2 (en) * 2020-09-12 2024-03-19 Western Digital Technologies, Inc. Mixed mode block cycling for intermediate data
US11972146B2 (en) 2022-02-24 2024-04-30 Silicon Motion, Inc. Flash memory controller and method capable of sending read command or data toggle command to ask for flash memory device return more plane data of different planes
US11861212B2 (en) 2022-02-24 2024-01-02 Silicon Motion, Inc. Flash memory device, controller, and method capable of performing access operation upon data unit(s) of multiple planes of flash memory device in response one simplified command sequence
US11935595B2 (en) 2022-02-24 2024-03-19 Silicon Motion, Inc. Flash memory device, controller, and method capable of performing access operation upon data unit(s) of multiple planes of flash memory device in response one simplified command sequence
US11977776B2 (en) 2022-02-24 2024-05-07 Silicon Motion, Inc. Flash memory controller and method capable of sending read command or data toggle command to ask for flash memory device return more plane data of different planes
US11977752B2 (en) 2022-02-24 2024-05-07 Silicon Motion, Inc. Flash memory controller and method capable of sending data toggle set-feature signal to enable, disable, or configure data toggle operation of flash memory device

Family Cites Families (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930000869B1 (ko) 1989-11-30 1993-02-08 삼성전자 주식회사 페이지 소거 가능한 플래쉬형 이이피롬 장치
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
KR950000273B1 (ko) 1992-02-21 1995-01-12 삼성전자 주식회사 불휘발성 반도체 메모리장치 및 그 최적화 기입방법
US5396459A (en) 1992-02-24 1995-03-07 Sony Corporation Single transistor flash electrically programmable memory cell in which a negative voltage is applied to the nonselected word line
JP2968906B2 (ja) 1992-04-07 1999-11-02 三菱電機株式会社 不揮発性半導体記憶装置
KR960000616B1 (ko) 1993-01-13 1996-01-10 삼성전자주식회사 불휘발성 반도체 메모리 장치
JP3181454B2 (ja) 1993-12-13 2001-07-03 株式会社東芝 不揮発性半導体記憶装置
KR0142367B1 (ko) 1995-02-04 1998-07-15 김광호 열 리던던씨를 가지는 불휘발성 반도체 메모리의 소거 검증회로
JP3980094B2 (ja) 1995-09-13 2007-09-19 株式会社東芝 不揮発性半導体記憶装置
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
KR0169418B1 (ko) 1995-10-30 1999-02-01 김광호 페이지 소거시 데이터의 자기 보존회로를 가지는 불휘발성 반도체 메모리
KR0172408B1 (ko) 1995-12-11 1999-03-30 김광호 다수상태 불휘발성 반도체 메모리 및 그의 구동방법
JP3740212B2 (ja) 1996-05-01 2006-02-01 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
KR100205240B1 (ko) 1996-09-13 1999-07-01 윤종용 단일 비트 및 다중 비트 셀들이 장착된 불휘발성 반도체 메모리 장치
KR100252476B1 (ko) 1997-05-19 2000-04-15 윤종용 플레이트 셀 구조의 전기적으로 소거 및 프로그램 가능한 셀들을 구비한 불 휘발성 반도체 메모리 장치및 그것의 프로그램 방법
JPH1145986A (ja) 1997-07-28 1999-02-16 Sony Corp 不揮発性半導体記憶装置
US6442644B1 (en) 1997-08-11 2002-08-27 Advanced Memory International, Inc. Memory system having synchronous-link DRAM (SLDRAM) devices and controller
JP3805867B2 (ja) 1997-09-18 2006-08-09 株式会社東芝 不揮発性半導体記憶装置
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
US5953255A (en) 1997-12-24 1999-09-14 Aplus Flash Technology, Inc. Low voltage, low current hot-hole injection erase and hot-electron programmable flash memory with enhanced endurance
US5912844A (en) 1998-01-28 1999-06-15 Macronix International Co., Ltd. Method for flash EEPROM data writing
US6118705A (en) 1998-03-13 2000-09-12 Atmel Corporation Page mode erase in a flash memory array
US6359810B1 (en) 1998-03-13 2002-03-19 Atmel Corporation Page mode erase in a flash memory array
US6128224A (en) 1998-07-29 2000-10-03 Motorola, Inc. Method and apparatus for writing an erasable non-volatile memory
US5995417A (en) 1998-10-20 1999-11-30 Advanced Micro Devices, Inc. Scheme for page erase and erase verify in a non-volatile memory array
EP1703521A1 (en) 1999-02-01 2006-09-20 Hitachi, Ltd. Semiconductor integrated circuit and nonvolatile memory element
KR100347866B1 (ko) 1999-03-08 2002-08-09 삼성전자 주식회사 낸드 플래시 메모리 장치
KR100295598B1 (ko) 1999-05-03 2001-07-12 윤종용 반도체 메모리 장치 및 그 장치의 디코더
US6552580B2 (en) 1999-05-24 2003-04-22 Level One Communications Inc. Bias technique for operating point control in multistage circuits
US6111787A (en) 1999-10-19 2000-08-29 Advanced Micro Devices, Inc. Address transistion detect timing architecture for a simultaneous operation flash memory device
US7082056B2 (en) 2004-03-12 2006-07-25 Super Talent Electronics, Inc. Flash memory device and architecture with multi level cells
US6351429B1 (en) * 2000-06-29 2002-02-26 International Business Machines Corp. Binary to binary-encoded-ternary (BET) decoder using reordered logic
TW540053B (en) 2000-07-13 2003-07-01 Samsung Electronics Co Ltd Row decoder of a NOR-type flash memory device
FR2816751A1 (fr) 2000-11-15 2002-05-17 St Microelectronics Sa Memoire flash effacable par page
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP3875570B2 (ja) 2001-02-20 2007-01-31 株式会社東芝 半導体記憶装置のデータ書き込み方法及び半導体記憶装置
US6990535B1 (en) * 2001-02-26 2006-01-24 3Com Corporation Device and method for multi-ported, single bus-mastering data buffer management
US6732221B2 (en) 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
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
US6671204B2 (en) 2001-07-23 2003-12-30 Samsung Electronics Co., Ltd. Nonvolatile memory device with page buffer having dual registers and methods of using the same
US7042770B2 (en) 2001-07-23 2006-05-09 Samsung Electronics Co., Ltd. Memory devices with page buffer having dual registers and method of using the same
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6714457B1 (en) 2001-09-19 2004-03-30 Aplus Flash Technology, Inc. Parallel channel programming scheme for MLC flash memory
KR100454119B1 (ko) 2001-10-24 2004-10-26 삼성전자주식회사 캐쉬 기능을 갖는 불 휘발성 반도체 메모리 장치 및 그것의 프로그램, 읽기, 그리고 페이지 카피백 방법들
US6977847B2 (en) * 2001-11-23 2005-12-20 M-Systems Flash Disk Pioneers Ltd. Detecting partially erased units in flash devices
US6894931B2 (en) 2002-06-20 2005-05-17 Kabushiki Kaisha Toshiba Nonvolatile semiconductor memory device
JP4270832B2 (ja) 2002-09-26 2009-06-03 株式会社東芝 不揮発性半導体メモリ
ITMI20022240A1 (it) 2002-10-22 2004-04-23 Atmel Corp Architettura di memoria flash con cancellazione di modo
US6847550B2 (en) 2002-10-25 2005-01-25 Nexflash Technologies, Inc. Nonvolatile semiconductor memory having three-level memory cells and program and read mapping circuits therefor
JP3866650B2 (ja) 2002-11-29 2007-01-10 株式会社東芝 不揮発性半導体記憶装置及びその消去ベリファイ方法
US7308524B2 (en) 2003-01-13 2007-12-11 Silicon Pipe, Inc Memory chain
KR100514415B1 (ko) 2003-01-22 2005-09-09 주식회사 하이닉스반도체 낸드 플래시 메모리의 페이지 버퍼
JP2004348789A (ja) 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置及び携帯電子機器
US6922770B2 (en) * 2003-05-27 2005-07-26 Sony Corporation Memory controller providing dynamic arbitration of memory commands
US6947331B1 (en) 2003-06-16 2005-09-20 National Semiconductor Corporation Method of erasing an EEPROM cell utilizing a frequency/time domain based erased signal
JP4315767B2 (ja) 2003-09-04 2009-08-19 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
JP4287235B2 (ja) 2003-10-09 2009-07-01 株式会社東芝 不揮発性半導体記憶装置
US7730368B2 (en) * 2003-10-31 2010-06-01 Sandisk Il Ltd. Method, system and computer-readable code for testing of flash memory
US8112574B2 (en) * 2004-02-26 2012-02-07 Super Talent Electronics, Inc. Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes
KR100562134B1 (ko) 2004-01-09 2006-03-21 주식회사 하이닉스반도체 플래시 메모리 소자의 페이지 버퍼
US7350044B2 (en) * 2004-01-30 2008-03-25 Micron Technology, Inc. Data move method and apparatus
US7716413B2 (en) * 2004-02-15 2010-05-11 Sandisk Il Ltd. Method of making a multi-bit-cell flash memory
US8019928B2 (en) * 2004-02-15 2011-09-13 Sandisk Il Ltd. Method of managing a multi-bit-cell flash memory
JP4405405B2 (ja) 2004-04-15 2010-01-27 株式会社東芝 不揮発性半導体記憶装置
KR100575336B1 (ko) 2004-04-20 2006-05-02 에스티마이크로일렉트로닉스 엔.브이. 듀얼 레지스터를 갖는 페이지 버퍼, 이를 구비한 반도체메모리 장치 및 그의 프로그램 방법
KR100567912B1 (ko) 2004-05-28 2006-04-05 주식회사 하이닉스반도체 플래시 메모리 장치의 페이지 버퍼 및 이를 이용한 데이터프로그램 방법
US7251158B2 (en) 2004-06-10 2007-07-31 Spansion Llc Erase algorithm for multi-level bit flash memory
US7148742B2 (en) 2004-07-07 2006-12-12 Micron Technology, Inc. Power supply voltage detection circuitry and methods for use of the same
KR100609568B1 (ko) 2004-07-15 2006-08-08 에스티마이크로일렉트로닉스 엔.브이. 비휘발성 메모리 장치의 페이지 버퍼 및 이를 이용한프로그램 방법과 독출 방법
US7272050B2 (en) 2004-08-10 2007-09-18 Samsung Electronics Co., Ltd. Non-volatile memory device and erase method of the same
JP2006164408A (ja) 2004-12-08 2006-06-22 Toshiba Corp 不揮発性半導体記憶装置及びそのデータ消去方法。
JP4768256B2 (ja) 2004-12-16 2011-09-07 株式会社東芝 半導体記憶装置
US7970984B2 (en) * 2004-12-23 2011-06-28 Sandisk Il Ltd. Method for using a multi-bit cell flash device in a system not designed for the device
US7308525B2 (en) * 2005-01-10 2007-12-11 Sandisk Il Ltd. Method of managing a multi-bit cell flash memory with improved reliablility and performance
KR100672122B1 (ko) 2005-03-10 2007-01-19 주식회사 하이닉스반도체 소비 전력이 감소된 플래시 메모리 장치의 페이지 버퍼 회로
JP4928752B2 (ja) 2005-07-14 2012-05-09 株式会社東芝 半導体記憶装置
KR100732628B1 (ko) * 2005-07-28 2007-06-27 삼성전자주식회사 멀티-비트 데이터 및 싱글-비트 데이터를 저장하는 플래시메모리 장치
US7652922B2 (en) 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link memory
US20070076502A1 (en) 2005-09-30 2007-04-05 Pyeon Hong B Daisy chain cascading devices
US7583545B2 (en) * 2006-05-21 2009-09-01 Sandisk Il Ltd Method of storing data in a multi-bit-cell flash memory
US7561472B2 (en) 2006-09-11 2009-07-14 Micron Technology, Inc. NAND architecture memory with voltage sensing
US7593259B2 (en) * 2006-09-13 2009-09-22 Mosaid Technologies Incorporated Flash multi-level threshold distribution scheme
KR100809320B1 (ko) * 2006-09-27 2008-03-05 삼성전자주식회사 이종 셀 타입을 지원하는 비휘발성 메모리를 위한 맵핑정보 관리 장치 및 방법
US7466603B2 (en) * 2006-10-03 2008-12-16 Inapac Technology, Inc. Memory accessing circuit system
KR100773400B1 (ko) * 2006-10-26 2007-11-05 삼성전자주식회사 멀티 비트 플래시 메모리 장치
KR20070057716A (ko) 2007-04-02 2007-06-07 김경섭 멀티 레벨 셀을 갖는 플래시 메모리 장치의 프로그램 방법
US7646636B2 (en) * 2007-02-16 2010-01-12 Mosaid Technologies Incorporated Non-volatile memory with dynamic multi-mode operation
US7747903B2 (en) * 2007-07-09 2010-06-29 Micron Technology, Inc. Error correction for memory
US8001316B2 (en) * 2007-12-27 2011-08-16 Sandisk Il Ltd. Controller for one type of NAND flash memory for emulating another type of NAND flash memory
US8068365B2 (en) * 2008-02-04 2011-11-29 Mosaid Technologies Incorporated Non-volatile memory device having configurable page size
US7843725B2 (en) 2008-06-11 2010-11-30 Micron Technology, Inc. M+L bit read column architecture for M bit memory cells
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
KR20100010355A (ko) * 2008-07-22 2010-02-01 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 및 소거 방법
KR20100013847A (ko) * 2008-08-01 2010-02-10 삼성전자주식회사 메모리 장치 및 메모리 프로그래밍 방법
US8407400B2 (en) * 2008-11-12 2013-03-26 Micron Technology, Inc. Dynamic SLC/MLC blocks allocations for non-volatile memory
EP2317442A1 (en) * 2009-10-29 2011-05-04 Thomson Licensing Solid state memory with reduced number of partially filled pages
US8656256B2 (en) * 2010-07-07 2014-02-18 Stec, Inc. Apparatus and method for multi-mode operation of a flash memory device
JP2013534685A (ja) * 2010-07-21 2013-09-05 モサイド・テクノロジーズ・インコーポレーテッド フラッシュメモリのためのマルチページプログラム方式
US20120155167A1 (en) * 2010-12-21 2012-06-21 Kabushiki Kaisha Toshiba Non-volatile storage device, information processing system and write control method of non-volatile storage device
US9588883B2 (en) 2011-09-23 2017-03-07 Conversant Intellectual Property Management Inc. Flash memory system
CN107133122B (zh) * 2012-06-06 2020-10-27 慧荣科技股份有限公司 存储器控制方法
WO2014142812A1 (en) * 2013-03-12 2014-09-18 Hewlett-Packard Development Company, L.P. Programmable address mapping and memory access operations
US9607696B2 (en) * 2013-04-25 2017-03-28 Technion Research And Development Foundation Ltd. Minimal maximum-level programming
US9099185B2 (en) * 2013-12-20 2015-08-04 Seagate Technology Llc Using different programming modes to store data to a memory cell
US9696935B2 (en) * 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
US10410724B2 (en) * 2016-04-08 2019-09-10 SK Hynix Inc. Erase page indicator

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170062351A (ko) * 2015-11-26 2017-06-07 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치에 데이터를 프로그램 하는 프로그램 방법

Also Published As

Publication number Publication date
US20200363953A1 (en) 2020-11-19
CN103946923A (zh) 2014-07-23
US20170206009A1 (en) 2017-07-20
CA2849862A1 (en) 2013-03-28
US20130080730A1 (en) 2013-03-28
WO2013040681A1 (en) 2013-03-28
US9996274B2 (en) 2018-06-12
HK1200589A1 (en) 2015-08-07
JP2014530421A (ja) 2014-11-17
US11150808B2 (en) 2021-10-19
US9588883B2 (en) 2017-03-07
EP2758964A4 (en) 2015-07-15
US20190303004A1 (en) 2019-10-03
EP2758964A1 (en) 2014-07-30
TW201329987A (zh) 2013-07-16
US10705736B2 (en) 2020-07-07
US10303370B2 (en) 2019-05-28
US20180329627A1 (en) 2018-11-15

Similar Documents

Publication Publication Date Title
US11150808B2 (en) Flash memory system
US7827347B2 (en) Memory system, multi-bit flash memory device, and associated methods
JP5421127B2 (ja) ダイナミックマルチモード動作を有する不揮発性メモリ
TWI574270B (zh) 記憶體裝置之平均抹寫
US20080181000A1 (en) Method Of Improving Programming Precision In Flash Memory
CN111258793B (zh) 存储器控制器及其操作方法
WO2009040785A1 (en) Using mlc flash as slc by writing dummy data
EP2443543B1 (en) Multi-bank non-volatile memory system with satellite file system
KR20130008300A (ko) 오버 프로그램을 이용하여 소거 동작을 수행하는 플래시 메모리 장치 및 그 동작방법
US20210334000A1 (en) Memory system, memory controller and memory device for configuring super blocks
US11321170B2 (en) Memory system, memory controller, and method for operating memory system
US20210191654A1 (en) Memory system and memory controller
CN112673427B (zh) 数据状态同步
EP3783614B1 (en) Nonvolatile memory device including a fast read page and a storage device including the same
US11709610B2 (en) Memory system, memory controller and operating method
US11573715B2 (en) Memory cell level assignment using optimal level permutations in a non-volatile memory
US20230006673A1 (en) Memory system and memory controller
KR20240050568A (ko) 메모리 장치 및 그것의 동작 방법

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