KR101800444B1 - 불휘발성 메모리의 제어 방법 및 그것을 포함하는 메모리 시스템 - Google Patents

불휘발성 메모리의 제어 방법 및 그것을 포함하는 메모리 시스템 Download PDF

Info

Publication number
KR101800444B1
KR101800444B1 KR1020110027728A KR20110027728A KR101800444B1 KR 101800444 B1 KR101800444 B1 KR 101800444B1 KR 1020110027728 A KR1020110027728 A KR 1020110027728A KR 20110027728 A KR20110027728 A KR 20110027728A KR 101800444 B1 KR101800444 B1 KR 101800444B1
Authority
KR
South Korea
Prior art keywords
memory
cell
address
memory cells
cell level
Prior art date
Application number
KR1020110027728A
Other languages
English (en)
Other versions
KR20120109903A (ko
Inventor
김병근
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020110027728A priority Critical patent/KR101800444B1/ko
Priority to US13/430,850 priority patent/US8812775B2/en
Publication of KR20120109903A publication Critical patent/KR20120109903A/ko
Application granted granted Critical
Publication of KR101800444B1 publication Critical patent/KR101800444B1/ko

Links

Images

Classifications

    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • 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

Abstract

본 발명은 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 메모리 시스템에 관한 것이다. 본 발명의 실시 예에 따르면, 복수의 메모리 셀들을 포함하는 불휘발성 메모리, 그리고 상기 복수의 메모리 셀들을 복수의 셀 레벨(cell level)들 중 하나로 동작하도록 제어하는 메모리 컨트롤러를 포함한다. 메모리 컨트롤러는 호스트로부터 수신되는 어드레스들을 각각 복수의 어드레스 그룹들 중 하나에 포함시키고, 각 어드레스 그룹에 포함되는 어드레스들의 개수에 따라 각 셀 레벨의 메모리 셀들의 개수를 가변시킨다.

Description

불휘발성 메모리의 제어 방법 및 그것을 포함하는 메모리 시스템{CONTROL METHOD OF NONVOLATILE MEMORY AND MEMORY SYSTEM INCLUDING THE SAME}
본 발명은 불휘발성 메모리의 제어 방법 및 그것을 포함하는 메모리 시스템에 관한 것이다.
반도체 메모리 장치(semiconductor memory device)는 실리콘(Si, silicon), 게르마늄(Ge, Germanium), 비화 갈륨(GaAs, gallium arsenide), 인화인듐(InP, indium phospide) 등과 같은 반도체를 이용하여 구현되는 기억장치이다. 반도체 메모리 장치는 크게 휘발성 메모리 장치(Volatile memory device)와 불휘발성 메모리 장치(Nonvolatile memory device)로 구분된다.
휘발성 메모리 장치는 전원 공급이 차단되면 저장하고 있던 데이터가 소멸되는 메모리 장치이다. 휘발성 메모리 장치에는 SRAM (Static RAM), DRAM (Dynamic RAM), SDRAM (Synchronous DRAM) 등이 있다. 불휘발성 메모리 장치는 전원 공급이 차단되어도 저장하고 있던 데이터를 유지하는 메모리 장치이다. 불휘발성 메모리 장치에는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리 장치, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등이 있다. 플래시 메모리 장치는 크게 노어 타입과 낸드 타입으로 구분된다.
본 발명은 향상된 동작 속도를 가지는 메모리 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 메모리 시스템은 복수의 메모리 셀들을 포함하는 불휘발성 메모리; 및 상기 복수의 메모리 셀들을 복수의 셀 레벨(cell level)들 중 하나로 동작하도록 제어하되, 호스트로부터 수신되는 어드레스들을 각각 복수의 어드레스 그룹들 중 하나에 포함시키고, 상기 각 어드레스 그룹에 포함되는 어드레스들의 개수에 따라 각 셀 레벨의 메모리 셀들의 개수를 가변하는 메모리 컨트롤러를 포함한다. 이때, 각 메모리 셀의 셀 레벨에 따라 상기 각 메모리 셀에 저장되는 비트 수가 결정된다. 상기 메모리 컨트롤러는 상기 어드레스들 각각의 수신 횟수들에 따라, 상기 어드레스들이 각각 속하는 어드레스 그룹들을 변경한다.
실시 예로서, 상기 메모리 컨트롤러는 상기 불휘발성 메모리의 저장 용량이 일정하도록 상기 각 셀 레벨로 동작하는 메모리 셀들의 개수를 가변할 수 있다.
실시 예로서, 상기 복수의 셀 레벨들은 제 1 내지 제 3 셀 레벨들이고, 제 1 셀 레벨인 메모리 셀은 1 비트를 저장하고, 제 2 셀 레벨인 메모리 셀은 제 2 비트를 저장하고, 제 3 셀 레벨인 메모리 셀은 제 3 비트를 저장한다. 상기 제 1 셀 레벨인 메모리 셀들의 개수가 증가할 때, 상기 제 3 셀 레벨인 메모리 셀들의 개수는 함께 증가함으로써 상기 불휘발성 메모리의 저장 용량은 일정하게 유지될 것이다. 그리고, 상기 제 1 셀 레벨인 메모리 셀들의 개수가 감소할때, 상기 제 3 셀 레벨인 메모리 셀들의 개수는 함께 감소함으로써 상기 불휘발성 메모리의 저장 용량은 일정하게 유지될 것이다.
실시 예로서, 상기 복수의 메모리 셀들은 상기 복수의 어드레스 그룹들에 각각 대응하는 복수의 메모리 셀 그룹들로 구분될 것이다. 상기 메모리 컨트롤러는 각 어드레스가 수신될 때, 상기 각 어드레스를 포함하는 어드레스 그룹에 대응하는 메모리 셀 그룹의 메모리 셀들을 엑세스할 것이다.
실시 예로서, 상기 메모리 컨트롤러는 상기 복수의 메모리 셀 그룹들이 각각 다른 셀 레벨들을 가지도록 상기 불휘발성 메모리를 제어할 것이다.
실시 예로서, 상기 각 어드레스 그룹에 포함되는 어드레스들의 개수에 따라 상기 각 어드레스 그룹에 대응하는 메모리 셀 그룹에 포함되는 메모리 셀들의 개수가 변경될 것이다.
실시 예로서, 상기 각 어드레스 그룹에 대응하는 메모리 셀 그룹의 저장 용량은 상기 각 어드레스 그룹에 포함되는 어드레스들의 개수가 변경될 때 함께 변경될 것이다.
실시 예로서, 상기 메모리 컨트롤러는 상기 어드레스들에 각각 대응하는 웨이트 값들을 저장하는 버퍼 유닛; 및 상기 호스트로부터 각 어드레스가 수신될 때마다, 상기 각 어드레스에 대응하는 웨이트 값을 증가시키는 프로세싱 유닛을 더 포함할 수 있다.
실시 예로서, 상기 어드레스들은 복수의 파티클들로 구분되고, 상기 메모리 컨트롤러는 상기 복수의 파티클들에 각각 대응하는 웨이트 값들을 저장하는 버퍼 유닛; 및 각 어드레스가 수신될 때마다, 상기 각 어드레스가 포함되는 파티클에 대응하는 웨이트 값을 증가시키는 프로세싱 유닛을 더 포함할 수 있다. 그리고, 상기 프로세싱 유닛은 상기 복수의 파티클들에 각각 대응하는 웨이트 값들에 따라, 상기 복수의 파티클들을 각각 복수의 어드레스 그룹들 중 하나에 포함시킬 것이다.
본 발명의 다른 일면은 불휘발성 메모리를 제어하는 방법에 대한 것이다. 본 발명의 실시 예에 따른 불휘발성 메모리의 제어 방법은 상기 복수의 메모리 셀들을 복수의 셀 레벨들 중 하나로 동작하도록 제어하되, 호스트로부터 수신되는 어드레스들을 각각 복수의 어드레스 그룹들 중 하나에 포함시키는 단계; 상기 어드레스들 각각의 수신 횟수들에 따라, 상기 어드레스들이 각각 속하는 어드레스 그룹을 변경하는 단계; 및 각 어드레스 그룹에 포함되는 어드레스들의 개수에 따라, 각 셀 레벨의 메모리 셀들의 개수를 가변하는 단계를 포함한다.
실시 예로서, 상기 각 셀 레벨을 가지는 메모리 셀들의 개수를 가변하는 단계는 상기 불휘발성 메모리의 저장 용량이 일정하도록 상기 각 셀 레벨의 메모리 셀들의 개수를 가변하는 단계를 포함할 수 있다.
실시 예로서, 상기 복수의 메모리 셀들은 상기 복수의 어드레스 그룹들에 할당됨에 따라 복수의 메모리 셀 그룹들로 구분되고, 상기 각 어드레스가 수신될 때, 상기 각 어드레스를 포함하는 어드레스 그룹에 할당된 메모리 셀 그룹의 메모리 셀들이 엑세스될 수 있다.
실시 예로서, 상기 복수의 메모리 셀 그룹들은 각각 다른 셀 레벨들로 동작하도록 제어될 것이다.
실시 예로서, 상기 각 어드레스 그룹에 포함되는 어드레스들이 변경됨에 따라 상기 각 어드레스 그룹에 대응하는 메모리 셀 그룹에 포함되는 메모리 셀들이 변경될 것이다.
본 발명의 실시 예에 따른 메모리 시스템은 호스트로부터의 어드레스들의 수신 패턴에 따라 각 셀 레벨의 메모리 셀들의 개수가 변경되도록 불휘발성 메모리를 제어하는 메모리 컨트롤러를 포함한다. 따라서, 향상된 동작 속도를 가지는 메모리 시스템이 제공된다.
도 1은 불휘발성 메모리의 메모리 셀들에 프로그램되는 논리 상태들을 예시적으로 보여주는 다이어그램이다.
도 2는 본 발명의 제 1 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 3은 도 2의 어드레스 그룹 테이블의 업데이트 방법의 제 1 실시 예를 보여주는 순서도이다.
도 4는 도 2의 호스트로부터 수신되는 논리 어드레스들의 전체 공간을 예시적으로 보여주는 도면이다.
도 5는 도 2의 패턴 테이블을 예시적으로 보여준다.
도 6은 도 5의 패턴 테이블에 따라 업데이트된 어드레스 그룹 테이블을 보여준다.
도 7은 도 6의 어드레스 그룹 테이블에 따라 논리 어드레스와 함께 수신된 데이터가 저장되는 방법을 보여주는 순서도이다.
도 8은 도 5의 제 1 내지 제 3 어드레스 그룹들에 각각 대응하는 제 1 내지 제 3 메모리 셀 그룹들을 보여준다.
도 9 및 도 10은 도 8의 메모리 셀 어레이의 메모리 셀들이 재구분될 때 메모리 셀들에 저장된 데이터를 관리하는 방법을 설명하기 위한 도면이다.
도 11은 본 발명의 제 2 실시 예에 따른 메모리 시스템을 보여주는 블록도이다.
도 12는 도 2의 어드레스 그룹 테이블의 업데이트 방법의 제 2 실시 예를 보여주는 순서도이다.
도 13는 도 11의 패턴 테이블을 보여준다.
도 14는 수학식 1 및 2를 만족하는 셀 조합 비율들을 보여주는 테이블이다.
도 15는 도 2의 메모리 시스템의 응용 예를 보여주는 블록도이다.
도 16은 도 15를 참조하여 설명된 메모리 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
도 1은 불휘발성 메모리의 메모리 셀들에 프로그램되는 논리 상태들을 예시적으로 보여주는 다이어그램이다. 도 1을 참조하면, 가로 축은 메모리 셀들의 문턱 전압 값을 나타내며, 세로 축은 메모리 셀들의 수를 나타낸다. 각 메모리 셀의 셀 레벨(cell level)에 따라, 각 메모리 셀에 저장되는 비트 수가 결정된다. 셀 레벨은 메모리 셀의 타입을 의미한다. 셀 레벨에 따라, 메모리 셀에 저장되는 비트들의 수가 결정된다. 이하, 제 1 셀 레벨인 메모리 셀은 1 비트를 저장하는 메모리 셀로 정의된다. 즉, 제 1 셀 레벨의 메모리 셀은 싱글 레벨 셀(Single Level Cell, SLC)이다. 제 2 셀 레벨인 메모리 셀은 2 비트를 저장하는 메모리 셀로 정의된다. 즉, 제 2 셀 레벨의 메모리 셀은 2 비트 멀티 레벨 셀(2-bits Multi Level Cell, 2-bit MLC)이다. 제 3 셀 레벨인 메모리 셀은 3 비트를 저장하는 메모리 셀로 정의된다. 즉, 제 3 셀 레벨의 메모리 셀은 제 3 비트 멀티 레벨 셀(3-bits Multi Level Cell, 3-bit MLC)이다.
예시적으로, 제 1 셀 레벨인 메모리 셀은 소거 상태(E) 및 제 1 프로그램 상태(P1) 중 하나를 갖음으로써 하나의 비트를 저장할 것이다. 이때, 소거 상태(E)는 논리 값 "1"에 대응되고, 제 1 프로그램 상태(P1)는 논리 값 "0"에 대응할 수 있다.
예시적으로, 제 2 셀 레벨인 메모리 셀은 소거 상태(E) 및 제 2 내지 제 4 중간 프로그램 상태들(PL2~PL4) 중 하나를 갖음으로써 두 개의 비트들을 저장할 것이다. 이때, 소거 상태(E)는 논리 값 "11"에 대응하고, 제 2 내지 제 4 프로그램 상태들(P2~P4)은 각각 논리 값 "01", "10" 및 "00"에 대응할 수 있다.
예시적으로, 제 3 셀 레벨인 메모리 셀은 소거 상태(E) 및 제 5 내지 제 11 프로그램 상태(P5~P11) 중 하나를 갖음으로써 세 개의 비트들을 저장할 것이다. 이때, 소거 상태(E)는 논리 값 "111"에 대응하고, 제 5 내지 제 11 프로그램 상태들(P5~P11)은 각각 논리 값 "011", "101", "001", "110", "010", "100", "000"에 대응할 수 있다.
도 2는 본 발명의 제 1 실시 예에 따른 메모리 시스템(1000)을 보여주는 블록도이다. 도 2를 참조하면, 본 발명의 실시 예에 따른 메모리 시스템(1000)은 불휘발성 메모리(100) 및 메모리 컨트롤러(200)를 포함한다.
불휘발성 메모리(100)는 쓰기 동작 시에 메모리 컨트롤러(200)로부터 수신된 물리 어드레스(Physical Address, PA)에 따라, 데이터를 저장하도록 구성된다. 불휘발성 메모리(100)는 읽기 동작 시에 메모리 컨트롤러(200)로부터 수신된 물리 어드레스(PA)에 따라 저장된 데이터를 출력하도록 구성된다. 예시적으로, 불휘발성 메모리(100)는 ROM, PROM, EPROM, EEPROM, 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등과 같은 메모리 중 적어도 하나를 포함할 것이다.
메모리 컨트롤러(200)는 호스트(Host) 및 불휘발성 메모리(100)에 연결된다. 메모리 컨트롤러(200)는 불휘발성 메모리(100)의 읽기, 쓰기, 그리고 소거 동작을 제어하도록 구성된다. 메모리 컨트롤러(200)는 불휘발성 메모리(100) 및 호스트 사이의 인터페이스를 제공하도록 구성된다. 메모리 컨트롤러(200)는 호스트로부터의 논리 어드레스(LA)를 물리 어드레스(PA)로 변환한다. 그리고, 메모리 컨트롤러(200)는 변환된 물리 어드레스(PA)를 불휘발성 메모리(100)에 제공함으로써 불휘발성 메모리(100)를 액세스하도록 구성된다. 메모리 컨트롤러(200)는 불휘발성 메모리(100)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다.
불휘발성 메모리(100)는 메모리 셀 어레이(110), 어드레스 디코더(120), 읽기 및 쓰기 회로(130), 그리고 제어 로직(140)을 포함한다.
메모리 셀 어레이(110)는 워드 라인들(WL)을 통해 어드레스 디코더(120)에 연결되고, 비트 라인들(BL)을 통해 읽기 및 쓰기 회로(130)에 연결된다. 메모리 셀 어레이(110)는 복수의 메모리 블록들(미도시)을 포함한다. 각 메모리 블록들은 복수의 물리 페이지들(미도시)을 포함한다. 각 물리 페이지는 하나의 워드 라인을 공유하는 복수의 메모리 셀들(미도시)을 포함한다. 예시적으로, 행 방향으로 배열되는 메모리 셀들은 워드 라인들(WL)에 연결될 것이다. 열 방향으로 배열되는 메모리 셀들은 비트 라인들(BL)에 연결될 것이다.
메모리 셀 어레이(110)의 메모리 셀은 복수의 셀 레벨들 중 어느 하나의 셀 레벨을 갖는다. 메모리 셀에 저장되는 비트 수가 증가할수록, 메모리 셀의 저장 용량은 증가한다. 그러나, 메모리 셀에 저장되는 비트수가 증가할수록, 프로그램 속도 및 읽기 속도는 감소한다. 반면, 메모리 셀에 저장되는 비트 수가 감소할수록 메모리 셀의 저장 용량은 감소하지만, 프로그램 속도 및 읽기 속도는 증가한다.
셀 레벨에 따라, 메모리 셀 어레이(110)의 메모리 셀들은 복수의 메모리 셀 그룹들로 구분될 수 있다. 메모리 셀 어레이(110)의 메모리 셀들이 제 1 내지 제 3 셀 레벨들 중 어느 하나에 해당하는 경우, 메모리 셀들은 3개의 메모리 셀 그룹들로 구분될 것이다.
각 물리 페이지는 하나의 논리 페이지로 구성되거나, 복수의 논리 페이지들을 포함할 수 있다. 예를 들면, 제 1 셀 레벨인 메모리 셀들로 구성되는 물리 페이지는 1 개의 논리 페이지로 구성된다. 예를 들면, 제 2 셀 레벨인 메모리 셀들로 구성되는 물리 페이지는 2 개의 논리 페이지를 포함한다. 이때, 하나의 물리 페이지의 메모리 셀들에 저장되는 최하위 비트들(LSB, Least Significant Bit)은 하나의 논리 페이지를 형성할 것이다. 하나의 물리 페이지의 메모리 셀들에 저장되는 최상위 비트들(MSB, Most Significant Bit)은 다른 하나의 논리 페이지를 형성할 것이다. 그리고, 하나의 물리 페이지의 메모리 셀들에 저장되는 중간 비트들(CSB, Central Significant Bit)은 또 다른 하나의 논리 페이지를 형성할 것이다.
예시적으로, 불휘발성 메모리(100)의 읽기 및 쓰기 동작은 논리 페이지 단위로 수행된다. 호스트로부터 수신되는 논리 어드레스(LA)는 하나의 논리 페이지에 대응할 것이다.
어드레스 디코더(120)는 워드 라인들(WL)을 통해 메모리 셀 어레이(110)에 연결된다. 어드레스 디코더(120)는 제어 로직(140)의 제어에 응답하여 동작한다. 어드레스 디코더(120)는 메모리 컨트롤러(200)로부터 물리 어드레스(Physical address, PA)를 수신한다.
어드레스 디코더(120)는 물리 어드레스(PA)를 이용하여 하나의 논리 페이지를 선택한다. 어드레스 디코더(120)는 수신된 물리 어드레스(PA)를 이용하여 선택 신호를 발생한다. 선택 신호에 따라, 읽기 및 쓰기 회로(130)는 비트 라인들(BL)을 선택할 것이다.
읽기 및 쓰기 회로(130)는 비트 라인들(BL)을 통해 메모리 셀 어레이(110)에 연결된다. 읽기 및 쓰기 회로(130)는 메모리 컨트롤러(200)와 데이터를 교환하도록 구성된다. 읽기 및 쓰기 회로(130)는 제어 로직(140)의 제어에 응답하여 동작한다. 읽기 및 쓰기 회로(130)는 선택 신호를 이용하여, 비트 라인들(BL)을 선택할 것이다.
예시적으로, 읽기 및 쓰기 회로(130)는 메모리 컨트롤러(200)로부터 데이터를 수신하고, 수신된 데이터를 메모리 셀 어레이(110)에 기입할 것이다. 다른 예로서, 읽기 및 쓰기 회로(130)는 메모리 셀 어레이(110)로부터 데이터를 읽고, 읽어진 데이터를 메모리 컨트롤러(200)로 출력할 것이다. 다른 예로서, 읽기 및 쓰기 회로(130)는 메모리 셀 어레이(110)의 제 1 저장 영역으로부터 데이터를 읽고, 읽어진 데이터를 메모리 셀 어레이(210)의 제 2 저장 영역에 기입할 것이다. 예를 들면, 읽기 및 쓰기 회로(230)는 카피-백(copy-back) 동작을 수행할 것이다.
예시적으로, 읽기 및 쓰기 회로(130)는 페이지 버퍼, 열 선택 회로, 데이터 버퍼 등과 같이 잘 알려진 구성 요소들을 포함할 것이다. 다른 예로서, 읽기 및 쓰기 회로(130)는 감지 증폭기, 쓰기 드라이버, 열 선택 회로, 데이터 버퍼 등과 같이 잘 알려진 구성 요소들을 포함할 것이다.
제어 로직(140)은 어드레스 디코더(120)와 읽기 및 쓰기 회로(130)에 연결된다. 제어 로직(140)은 불휘발성 메모리(100)의 제반 동작을 제어하도록 구성된다. 예시적으로, 제어 로직(140)은 메모리 컨트롤러(200)로부터 수신되는 제어 신호에 응답하여 동작한다. 제어 로직(140)은 물리 어드레스(PA)에 대응하는 논리 페이지에 데이터가 저장되도록 어드레스 디코더(120), 그리고 읽기 및 쓰기 회로(130)를 제어할 것이다.
메모리 컨트롤러(200)는 버퍼 유닛(210), 프로세싱 유닛(220), 에러 정정 유닛(230), 호스트 인터페이스(240), 메모리 인터페이스(250) 및 버스(260)를 포함한다.
버퍼 유닛(210)은 버스(260)에 연결된다. 버퍼 유닛(210)은 프로세싱 유닛(220)의 제어에 응답하여 동작한다. 버퍼 유닛(210)은 패턴 테이블(211) 및 어드레스 그룹 테이블(212)을 저장한다.
패턴 테이블(211)은 호스트로부터 수신되는 논리 어드레스들에 대응하는 웨이트 값들을 저장한다. 예시적으로, 호스트로부터 수신되는 논리 어드레스들은 복수의 파티클(particle)들로 구분될 수 있다. 패턴 테이블(211)은 파티클들에 각각 대응하는 웨이트 값들을 저장할 수 있다(도 5 참조). 예시적으로, 패턴 테이블(211)은 호스트로부터 수신되는 논리 어드레스들 각각의 웨이트(weight) 값들을 저장할 수 있다.
패턴 테이블(211)은 논리 어드레스(LA)가 수신될 때마다 업데이트된다. 예를 들면, 패턴 테이블(211)은 각 쓰기 동작 시에 호스트로부터 논리 어드레스(LA)가 수신될 때마다 업데이트될 수 있다. 예를 들면, 패턴 테이블(211)은 각 읽기 동작 시에 호스트로부터 논리 어드레스(LA)가 수신될 때마다 업데이트 될 수 있다. 이하에서, 설명의 편의를 위해 논리 어드레스(LA)는 쓰기 동작 시에 호스트로부터 수신되는 어드레스로 가정한다.
어드레스 그룹 테이블(212)은 패턴 테이블(211)에 기반하여 생성된다. 패턴 테이블(211) 내의 웨이트 값들에 따라, 논리 어드레스들은 복수의 어드레스 그룹들로 구분된다. 어드레스 그룹 테이블(212)은 각 파티클이 포함되는 어드레스 그룹에 대한 정보를 저장한다. 즉, 어드레스 그룹 테이블(212)은 각 논리 어드레스가 포함되는 어드레스 그룹에 대한 정보를 저장한다. 어드레스 그룹 정보에 따라 어드레스 그룹에 대응하는 메모리 셀 그룹의 셀 레벨이 결정된다.
전원 오프(power off) 시에, 패턴 테이블(211) 및 어드레스 그룹 테이블(212)은 불휘발성 메모리(100)의 정해진 영역에 저장될 것이다. 그리고, 전원 온(power on) 시에, 프로세싱 유닛(220)은 패턴 테이블(211) 및 어드레스 그룹 테이블(212)을 버퍼 유닛(210)에 저장할 것이다.
버퍼 유닛(210)은 SRAM 또는 DRAM과 같은 RAM(Random Access Memory)으로 구성될 수 있다. 버퍼 유닛(210)은 프로세싱 유닛(220)의 동작 메모리, 그리고 불휘발성 메모리(100) 및 호스트 사이의 버퍼 메모리 중 적어도 하나로서 이용된다.
프로세싱 유닛(220)은 버스(260)를 통해 버퍼 유닛(220), 에러 정정 유닛(230), 호스트 인터페이스(240) 및 메모리 인터페이스(250)에 연결된다. 프로세싱 유닛(220)은 메모리 컨트롤러(200)의 제반 동작을 제어한다. 프로세싱 유닛(220)은 불휘발성 메모리(100)의 배경 동작(background operation)을 제어하도록 구성된다. 예를 들면, 프로세싱 유닛(220)은 불휘발성 메모리(100)의 병합(merge) 및 가비지 컬렉션(garbage collection) 등의 동작들을 제어한다.
프로세싱 유닛(220)은 플래시 변환 레이어(Flash Translation Layer, FTL)의 기능을 수행한다. 즉, 프로세싱 유닛(220)은 호스트로부터의 논리 어드레스(LA)를 물리 어드레스(PA)로 변환할 것이다. 그리고, 논리 어드레스(LA) 및 물리 어드레스(PA)의 매핑 관계를 버퍼 유닛(210)에 저장한다. 즉, 버퍼 유닛(210)은 논리 어드레스(LA) 및 물리 어드레스(PA)의 매핑 관계를 저장하는 매핑 테이블을 더 저장할 수 있다.
프로세싱 유닛(220)은 플래시 변환 레이어의 기능을 수행함으로써 복수의 어드레스 그룹들을 각각 복수의 메모리 셀 그룹들에 매핑한다. 즉, 플래시 변환 레이어의 기능에 따라 각 어드레스 그룹은 각 메모리 셀 그룹에 대응할 것이다. 호스트로부터 수신되는 어드레스들이 재구분되면, 재구분된 각 어드레스 그룹에 대응하는 각 메모리 셀 그룹의 메모리 셀들도 변경될 것이다.
어드레스 그룹 테이블(212) 내의 어드레스 그룹 정보에 따라, 각 어드레스 그룹에 대응하는 각 메모리 셀 그룹의 셀 레벨이 결정된다.
예를 들면, 프로세싱 유닛(220)은 플래시 변환 레이어의 기능을 수행함으로써 논리 어드레스(LA)에 대응하는 물리 페이지의 어드레스를 결정할 것이다. 그리고, 프로세싱 유닛(220)은 어드레스 그룹 테이블(212)로부터 논리 어드레스(LA)가 포함되는 어드레스 그룹을 판별할 것이다. 판별된 어드레스 그룹에 따라, 프로세싱 유닛(220)은 결정된 물리 페이지에 포함되는 논리 페이지들의 개수를 판별할 것이다. 그리고, 프로세싱 유닛(220)은 물리 페이지뿐만 아니라 그 물리 페이지에 포함되는 논리 페이지에 대한 정보를 포함하는 물리 어드레스(PA)를 발생할 것이다.
프로세싱 유닛(220)은 호스트로부터 수신된 논리 어드레스(LA)에 응답하여 패턴 테이블(211)을 업데이트한다. 예시적으로, 프로세싱 유닛(220)은 각 쓰기 동작 시에 수신되는 논리 어드레스(LA)를 포함하는 파티클에 대응하는 웨이트 값을 증가시킬 수 있다.
프로세싱 유닛(220)은 패턴 테이블(211)에 기반하여 어드레스 그룹 테이블(212)을 생성 또는 업데이트한다. 호스트로부터 수신되는 논리 어드레스들이 복수의 파티클들로 구분되고, 패턴 테이블(211)에 복수의 파티클들에 각각 대응하는 웨이트 값들이 저장된다고 가정한다. 웨이트 값이 높을 때, 그 웨이트 값에 대응하는 파티클은 비교적 자주 엑세스된 논리 어드레스들을 포함한다. 웨이트 값이 낮을 때, 그 웨이트 값에 대응하는 파티클은 비교적 자주 엑세스되지 않은 논리 어드레스들을 포함한다.
프로세싱 유닛(220)은 패턴 테이블(211)의 웨이트 값들에 따라 파티클들을 복수의 어드레스 그룹들로 구분한다. 결과적으로, 파티클들은 호스트에 의해 엑세스된 횟수에 따라 구분된다. 프로세싱 유닛(220)은 각 파티클을 포함하는 어드레스 그룹에 대한 정보를 어드레스 그룹 테이블(212)에 저장한다.
각 쓰기 동작 시에 수신되는 논리 어드레스(LA)에 따라, 패턴 테이블(211)은 업데이트될 것이다. 각 쓰기 동작 시에 수신되는 논리 어드레스(LA)에 따라, 논리 어드레스(LA)에 대응하는 웨이트 값은 변경될 것이다. 프로세싱 유닛(220)은 패턴 테이블(211)의 웨이트 값들에 따라 논리 어드레스들을 재구분할 수 있다. 프로세싱 유닛(220)은 각 어드레스가 포함되는 어드레스 그룹에 대한 정보를 변경함으로써 어드레스 그룹 테이블(212)을 업데이트할 것이다.
에러 정정 유닛(230)은 에러 정정 코드(Error Correcting Code, ECC)를 이용하여 불휘발성 메모리(100)로부터 읽어진 데이터 중 오류 비트를 검출하고, 정정하도록 구성된다. 오류 비트가 정정된 데이터는 호스트로 전송될 것이다.
호스트 인터페이스(240)는 호스트 및 메모리 컨트롤러(200) 사이의 데이터 교환 프로토콜을 구비한다. 호스트 인터페이스(240)는 호스트로부터 수신된 논리 어드레스(LA)를 버스(260)를 통해 프로세싱 유닛(220)에 전송할 것이다.
호스트 인터페이스(240)는 호스트 및 메모리 컨트롤러(200) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함한다. 예시적으로, 호스트 인터페이스(240)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 외부(호스트)와 통신하도록 구성된다.
메모리 인터페이스(250)는 불휘발성 메모리(100)와 인터페이싱한다. 예를 들면, 메모리 인터페이스(250)는 낸드 인터페이스 또는 노어 인터페이스를 포함한다.
버스(260)는 버퍼 유닛(210), 프로세싱 유닛(220), 에러 정정 유닛(230), 호스트 인터페이스(240) 및 메모리 인터페이스(250)를 연결하기 위한 적어도 하나의 채널을 제공한다.
도 3은 도 2의 어드레스 그룹 테이블(212)의 업데이트 방법의 제 1 실시 예를 보여주는 순서도이다. 도 2 및 도 3를 참조하면, S110단계에서, 프로세싱 유닛(220)은 각 논리 어드레스의 입력 횟수에 따라 패턴 테이블(211)을 업데이트한다. 예시적으로, 프로세싱 유닛(220)은 호스트로부터 수신되는 논리 어드레스들을 복수의 파티클들로 구분할 것이다. 그리고, 호스트로부터의 논리 어드레스(LA)를 포함하는 파티클의 웨이트 값을 증가시킬 것이다.
S120단계에서, 프로세싱 유닛(220)은 업데이트된 패턴 테이블(211)에 따라 호스트로부터 수신되는 어드레스들을 복수의 어드레스 그룹들로 재구분한다. 프로세싱 유닛(220)은 패턴 테이블(211) 내의 웨이트 값들에 따라, 파티클들을 복수의 어드레스 그룹들로 구분 또는 재구분할 것이다.
S130단계에서, 프로세싱 유닛(220)은 재구분된 논리 어드레스 그룹들에 따라 불휘발성 메모리(100)의 메모리 셀들을 재구분한다.
예시적으로, 논리 어드레스는 불휘발성 메모리(100)의 하나의 논리 페이지에 매핑된다. 즉, 논리 어드레스는 하나의 논리 페이지에 대응할 것이다. 각 어드레스 그룹에 포함되는 논리 어드레스들의 개수가 변동되는 경우에, 각 어드레스 그룹에 대응하는 메모리 셀 그룹의 저장 용량도 변동된다. 예를 들면, 제 1 어드레스 그룹에 포함되었던 논리 어드레스가 제 2 어드레스 그룹에 포함되면, 제 1 어드레스 그룹에 대응하는 메모리 셀 그룹의 메모리 셀들의 개수는 감소할 것이다. 그리고, 제 2 어드레스 그룹에 대응하는 메모리 셀 그룹의 메모리 셀들의 개수는 증가할 것이다. 결과적으로, 각 어드레스 그룹에 포함되는 논리 어드레스들의 개수가 변동되는 경우에, 각 메모리 셀 그룹에 포함되는 메모리 셀들의 개수도 함께 변동될 것이다.
도 4는 도 2의 호스트로부터 수신되는 논리 어드레스들(LAs)의 전체 공간을 예시적으로 보여주는 도면이다. 도 2 및 도 4를 참조하면, 메모리 컨트롤러(200)는 제 1 내지 제 n 논리 어드레스들(L1~Ln)을 수신한다. 호스트로부터 수신되는 논리 어드레스들(LAs)의 전체 공간은 제 1 내지 제 n 논리 어드레스들(L1~Ln)로 구성된다. 제 1 내지 제 n 논리 어드레스들(L1~Ln)은 복수의 파티클들(P1~Pm)로 구분될 것이다.
도 5는 도 2의 패턴 테이블(211)을 예시적으로 보여준다. 도 5에서, 웨이트 값들을 기준으로 내림차순으로 정렬된 패턴 테이블(211)을 예시적으로 도시된다. 도 2 및 도 5를 참조하면, 패턴 테이블(211)은 복수의 파티클들에 각각 대응하는 웨이트 값들을 저장한다. 도 5에 예시된 패턴 테이블(211)은 계속적으로 업데이트될 것이다. 프로세싱 유닛(220)은 논리 어드레스(LA)가 수신될 때마다 논리 어드레스(LA)에 대응하는 웨이트 값을 증가시킨다. 예를 들면, 프로세싱 유닛(220)은 논리 어드레스(LA)가 수신될 때마다 논리 어드레스(LA)에 대응하는 웨이트 값을 0.005 증가시킨다. 모든 웨이트 값들을 더한 값과 하나의 웨이트 값의 비율은, 호스트로부터의 전체 엑세스 횟수와 하나의 파티클에 대한 엑세스 횟수의 비율에 대응할 것이다.
웨이트 값들의 크기에 따라, 복수의 파티클들은 복수의 어드레스 그룹들로 구분될 수 있다. 예를 들면, 미리 정해진 임계값들을 기준으로, 복수의 파티클은 복수의 어드레스 그룹들로 구분될 수 있다. 도 5를 참조하면, 0.04보다 크거나 같은 웨이트 값들에 대응하는 파티클들은 제 1 어드레스 그룹(AG1)을 구성하고, 0.03보다 크거나 같고 0.04보다 작은 웨이트 값들에 대응하는 파티클들은 제 2 어드레스 그룹(AG2)을 구성하고, 0보다 크거나 같고 0.03보다 작은 웨이트 값들을 가지는 파티클들은 제 3 어드레스 그룹(AG3)을 구성한다.
각 논리 어드레스(LA)의 수신 횟수에 따라, 각 논리 어드레스(LA)에 대응하는 웨이트 값은 변동될 것이다. 웨이트 값이 변동되면, 각 논리 어드레스(LA)가 속하는 어드레스 그룹은 변경될 수 있다.
제 1 어드레스 그룹(AG1, 즉 큰 웨이트 값들에 대응하는 파티클들로 구성된 어드레스 그룹)에 대응하는 메모리 셀 그룹에는 빠른 동작 속도가 요구된다. 따라서, 제 1 어드레스 그룹(AG1)에 대응하는 메모리 셀 그룹은 제 1 셀 레벨로 동작하도록 제어될 것이다. 제 2 어드레스 그룹(AG2)에 대응하는 메모리 셀 그룹은 제 2 셀 레벨로 동작하도록 제어될 것이다. 그리고, 제 3 어드레스 그룹(AG3)에 대응하는 메모리 셀 그룹은 제 3 셀 레벨로 동작하도록 제어될 것이다.
도 6은 도 5의 패턴 테이블(211)에 따라 업데이트된 어드레스 그룹 테이블(212)을 보여준다. 도 2, 도 5 및 도 6을 참조하면, 어드레스 그룹 테이블(212)은 각 파티클에 대응하는 어드레스 그룹 정보(AGI)을 저장한다. 프로세싱 유닛(220)은 어드레스 그룹 테이블(212)에 따라 호스트로부터 수신되는 논리 어드레스(LA)를 포함하는 어드레스 그룹을 판별한다. 예시적으로, 어드레스 그룹 정보에 따라, 논리 어드레스(LA)에 대응하는 물리 페이지에 포함되는 논리 페이지의 개수가 판별될 것이다.
도 7은 도 6의 어드레스 그룹 테이블(212)에 따라 논리 어드레스(LA)와 함께 수신된 데이터가 저장되는 방법을 보여주는 순서도이다. 도 2 및 도 7을 참조하면, S210단계에서, 호스트로부터 논리 어드레스(LA) 및 쓰여질 데이터가 수신된다. S220단계에서, 프로세싱 유닛(320)은 수신된 논리 어드레스(LA)를 포함하는 파티클을 감지할 것이다.
S230단계에서, 감지된 파티클을 포함하는 어드레스 그룹 정보(AGI)에 기반하여 쓰여질 데이터를 복수의 메모리 셀 그룹들 중 어느 하나에 저장한다.
구체적으로, 프로세싱 유닛(330)은 어드레스 그룹 테이블(212)을 참조하여 감지된 파티클이 포함되는 어드레스 그룹 정보(AGI)를 수신할 것이다. 즉, 프로세싱 유닛(330)은 수신된 논리 어드레스(LA)가 포함되는 어드레스 그룹 정보(AGI)를 수신할 것이다.
예시적으로, 프로세싱 유닛(220)은 플래시 변환 레이어의 기능을 수행함으로써 논리 어드레스(LA)에 대응하는 물리 페이지의 어드레스를 결정할 것이다. 어드레스 그룹 정보(AGI)에 따라, 프로세싱 유닛(220)은 쓰여질 데이터가 저장될 물리 페이지의 셀 레벨을 판별할 것이다. 어드레스 그룹 정보(AGI)에 따라, 프로세싱 유닛(220)은 결정된 물리 페이지에 포함되는 논리 페이지들의 개수를 판별할 것이다. 프로세싱 유닛(220)은 물리 페이지뿐만 아니라 그 물리 페이지에 포함되는 논리 페이지에 대한 어드레스 정보를 포함하는 물리 어드레스(PA)를 발생할 것이다. 논리 어드레스(LA) 및 물리 어드레스(PA)의 매핑 관계에 대한 정보는 매핑 테이블의 형태로 버퍼 유닛(210)에 저장될 것이다.
도 8은 도 5의 제 1 내지 제 3 어드레스 그룹들(AG1~AG3)에 각각 대응하는 제 1 내지 제 3 메모리 셀 그룹들(MCG1~MCG3)을 보여준다. 도 8을 참조하면, 메모리 셀 어레이(110)는 복수의 메모리 셀 그룹들(MCG1~MCG3)로 구분된다. 도 8은 물리적으로 배치된 복수의 메모리 셀 그룹들(MCG1~MCG3)이 아닌 개념적으로 배치된 복수의 메모리 셀 그룹들(MCG1~MCG3)을 도시한 것으로 이해될 것이다.
메모리 컨트롤러(200)는 제 1 내지 제 3 메모리 셀 그룹들(MCG1~MCG3)이 각각 다른 셀 레벨들을 가지도록 불휘발성 메모리(100)를 제어한다. 즉, 프로세싱 유닛(220)은 어드레스 그룹 테이블(212)을 참조함으로써 제 1 내지 제 3 메모리 셀 그룹들(MCG1~MCG3)이 각각 다른 셀 레벨들을 가지도록 불휘발성 메모리(100)를 제어할 것이다.
도 8 내지 도 10을 참조한 설명에서, 제 1 메모리 셀 그룹(MCG1)의 메모리 셀들은 각각 제 1 셀 레벨로 동작한다고 가정한다. 즉, 제 1 메모리 셀 그룹(MCG1)의 메모리 셀들은 각각 1 비트를 저장하도록 제어된다. 제 2 메모리 셀 그룹(MCG2)의 메모리 셀들은 각각 제 2 셀 레벨로 동작한다고 가정한다. 제 2 메모리 셀 그룹(MCG2)의 메모리 셀들은 각각 2 비트들을 저장하도록 제어된다. 제 3 메모리 셀 그룹(MCG3)의 메모리 셀들은 각각 제 3 셀 레벨로 동작한다고 가정한다. 제 3 메모리 셀 그룹(MCG3)의 메모리 셀들은 각각 3 비트들을 저장하도록 제어된다.
호스트로부터 수신되는 논리 어드레스들이 재구분되는 경우에, 메모리 어레이(110)의 메모리 셀들도 재구분된다. 각 메모리 셀 그룹에 포함되는 메모리 셀들의 개수는 변경될 것이다.
도 9 및 도 10은 도 8의 메모리 셀 어레이(110)의 메모리 셀들이 변경된 메모리 그룹들(CMCG1~CMCG3)로 재구분될 때 메모리 셀들에 저장된 데이터를 관리하는 방법을 설명하기 위한 도면이다. 메모리 셀들이 재구분됨에 따라, 각 메모리 셀 그룹에 포함되는 메모리 셀들의 개수는 변경될 것이다. 제 1 내지 제 3 메모리 셀 그룹들(MCG1~MCG3) 각각의 저장 용량들은 변경된다.
도 8 및 도 9를 참조하면, 제 1 영역(area1)이 포함되는 메모리 셀 그룹은 제 2 메모리 셀 그룹(MCG2)에서 변경된 제 1 메모리 셀 그룹(CMCG1)으로 변경된다. 제 1 영역(area1)의 셀 레벨은 제 2 셀 레벨에서 제 1 셀 레벨로 변경된다.
제 2 영역(area2)이 포함되는 메모리 셀 그룹은 제 2 메모리 셀 그룹(MCG2)에서 변경된 제 3 메모리 셀 그룹(CMCG3)으로 변경된다. 제 2 영역(area2)의 셀 레벨은 제 2 셀 레벨에서 제 3 셀 레벨로 변경된다.
제 1 영역(area1)의 셀 레벨이 변경되기 전에, 제 1 영역(area1)에 저장된 최상위 비트 데이터 및 최하위 비트 데이터는 버퍼 유닛(210)에 저장된다(①). 그리고, 제 1 영역(area1)의 셀 레벨은 제 2 셀 레벨에서 제 1 셀 레벨로 변경된다. 제 1 영역(area1)의 저장 용량은 절반으로 감소할 것이다. 그 후에, 버퍼 유닛(210)에 저장된 데이터 중 일부가 제 1 영역(area1)에 저장될 것이다. 도 9는 제 1 영역(area1)에 저장되었던 최하위 비트 데이터가 제 1 영역(area1)에 저장됨을 예시적으로 도시한다(②).
도 10을 참조하면, 제 2 영역(area2)의 셀 레벨이 변경되기 전에, 제 2 영역(area2)에 저장된 최상위 비트 데이터 및 최하위 비트 데이터는 버퍼 유닛(210)에 저장된다(③). 제 2 영역(area2)의 셀 레벨은 제 2 셀 레벨에서 제 3 셀 레벨로 변경된다. 제 2 영역(area2)의 저장 용량은 1.5배 증가할 것이다. 그 후에, 버퍼 유닛(210)에 저장된, 제 1 영역(area1)에 저장되었던 최상위 비트 데이터, 그리고 제 2 영역(area2)에 저장되었던 최상위 및 최하위 비트 데이터는 제 2 영역(area2)에 저장될 것이다(④).
도 9 및 도 10을 참조한 설명에 따라, 제 1 및 제 2 영역들(area1,area2)에 저장된 데이터는 보존된다. 예시적으로, 도 9 및 도 10을 참조한 설명에 따른 제 1 및 제 2 영역들(area1,area2)의 데이터 보존 방법은 불휘발성 메모리(100)의 병합(merge) 및 가비지 컬렉션(garbage collection) 등의 동작들과 함께 수행될 수 있다.
도 11은 본 발명의 제 2 실시 예에 따른 메모리 시스템(2000)을 보여주는 블록도이다. 도 11을 참조하면, 메모리 시스템(2000)은 불휘발성 메모리(100) 및 메모리 컨트롤러(2200)를 포함한다.
불휘발성 메모리(100)는 도 2를 참조하여 설명된 불휘발성 메모리(100)와 마찬가지로 구성된다. 메모리 컨트롤러(2200)는 버퍼 유닛(2210), 프로세싱 유닛(2220), 에러 정정 유닛(230), 호스트 인터페이스(240), 메모리 인터페이스(250) 및 버스(260)를 포함한다. 에러 정정 유닛(230), 호스트 인터페이스(240), 메모리 인터페이스(250) 및 버스(260)는 도 2를 참조하여 설명된 에러 정정 유닛(230), 호스트 인터페이스(240), 메모리 인터페이스(250) 및 버스(260)와 마찬가지로 구성된다. 이하, 중복되는 설명은 생략된다.
메모리 컨트롤러(2200)는 호스트로부터 저장 용량 정보(SCI)를 더 수신한다. 저장 용량 정보(SCI)는 불휘발성 메모리(100)의 저장 용량을 결정하기 위한 정보이다. 최대 150GB(Giga Byte)의 데이터가 불휘발성 메모리(100)에 저장될 수 있다고 가정한다. 예를 들면, 불휘발성 메모리(100)는 50G(Giga)개의 메모리 셀들을 가지고, 메모리 셀들은 각각 제 1 내지 제 3 셀 레벨들 중 어느 하나로 동작하도록 제어된다고 가정한다. 이때, 150GB의 저장 용량을 가지는 불휘발성 메모리(100)로 설정하기 위한 저장 용량 정보(SCI)가 호스트로부터 수신될 수 있다. 불휘발성 메모리(100)의 모든 메모리 셀들은 제 3 셀 레벨로 동작하도록 제어될 것이다.
저장 용량 정보(SCI)는 사용자(user)에 의해 설정될 수 있다. 예를 들면, 사용자는 사용자 인터페이스(user interface)를 통하여 불휘발성 메모리(100)의 저장 용량을 선택할 수 있다.
불휘발성 메모리(100)의 메모리 셀들은 복수의 셀 레벨들 중 하나를 가진다. 이하에서, 불휘발성 메모리(100)의 각 메모리 셀의 셀 레벨은 제 1 내지 제 3 셀 레벨들 중 어느 하나라고 가정한다. 즉, 불휘발성 메모리(100)는 제 1 셀 레벨의 메모리 셀들, 제 2 셀 레벨의 메모리 셀들, 그리고 제 3 셀 레벨의 메모리 셀들을 포함할 것이다. 그러나, 본 발명의 기술적 사상은 이에 한정되지 않을 것이다.
이하에서, 제 1 셀 레벨의 메모리 셀들의 개수, 제 2 셀 레벨의 메모리 셀들의 개수, 그리고 제 3 셀 레벨의 메모리 셀들의 개수의 비율은 셀 조합 비율로 정의된다. 셀 조합 비율은 수학식 1과 같이 결정될 것이다.
Figure 112011022560012-pat00001
수학식 1을 참조하면, R1은 제 1 셀 레벨의 메모리 셀들의 비율을 나타낸다. R2는 제 2 셀 레벨의 메모리 셀들의 비율을 나타낸다. R3는 제 3 셀 레벨의 메모리 셀들의 비율을 나타낸다.
불휘발성 메모리(100)의 저장 용량은 호스트로부터 수신된 저장 용량 정보(SCI)에 따라 결정될 것이다. 수학식 1의 R1,R2 및 R3, 그리고 저장 용량 정보(SCI)에 따른 불휘발성 메모리(100)의 저장 용량의 관계는 수학식 2와 같이 나타날 것이다.
Figure 112011022560012-pat00002
수학식 2를 참조하면, SC는 저장 용량 정보(SCI)에 따른 불휘발성 메모리(100)의 저장 용량을 나타낸다. MC는 불휘발성 메모리(100)의 모든 메모리 셀들의 셀 레벨들이 제 1 레벨들인 경우의 불휘발성 메모리(100)의 저장 용량을 나타낸다. 예를 들면, 불휘발성 메모리(100)의 전체 메모리 셀들의 개수가 50G(Giga)인 경우에, MC는 50GB일 것이다. 예를 들면, MC는 불휘발성 메모리(100)의 메모리 셀들의 개수에 대응할 것이다.
수학식 1 및 2를 만족하는 복수의 셀 조합 비율들이 존재할 것이다(도 14 참조). 패턴 테이블(213)의 웨이트 값들에 따라, 수학식 1 및 2를 만족하는 셀 조합 비율들 중 어느 하나가 선택될 것이다. 그리고, 선택된 셀 조합 비율에 따라 패턴 테이블(213)의 파티클들은 복수의 어드레스 그룹들로 구분될 것이다.
버퍼 유닛(2210)은 패턴 테이블(213) 및 어드레스 그룹 테이블(214)을 저장한다. 패턴 테이블(213)은 복수의 파티클들에 각각 대응하는 웨이트 값들을 저장한다. 다른 예로서, 패턴 테이블(213)은 호스트로부터 수신되는 어드레스들에 각각 대응하는 웨이트 값들을 저장할 수 있다.
패턴 테이블(213)은 누적된 웨이트 값들, 그리고 누적된 저장 용량 정보를 더 저장할 수 있다. 이는 도 13을 참조하여 더 상세히 설명된다.
어드레스 그룹 테이블(214)은 각 파티클이 포함되는 어드레스 그룹 정보(AGI, 도 6 참조)를 저장한다. 프로세싱 유닛(2220)은 패턴 테이블(213)에 기반하여 파티클들을 복수의 어드레스 그룹들로 구분하고, 구분된 결과에 따라 어드레스 그룹 테이블(214)을 생성 또는 업데이트할 것이다.
도 12는 도 11의 어드레스 그룹 테이블(212)의 업데이트 방법의 제 2 실시 예를 보여주는 순서도이다. 도 11 및 도 12를 참조하면, S300단계에서, 메모리 컨트롤러(200)는 호스트로부터 불휘발성 메모리(100)의 저장 용량 정보(SCI)를 수신한다.
S311 단계 내지 S313단계는 도 3의 S110단계와 마찬가지로 각 논리 어드레스의 입력 횟수에 따라 패턴 테이블(213)을 업데이트하는 단계이다.
S311단계에서, 메모리 컨트롤러(2200)는 호스트로부터 논리 어드레스(LA)를 수신한다. 그리고, 카운트 값이 증가된다. 예시적으로, 카운트 값은 프로세싱 유닛(2200)에 저장될 수 있다. 예시적으로, 카운트 값은 버퍼 유닛(2210)에 저장될 수 있다. 카운트 값은 논리 어드레스(LA)가 수신될 때마다 증가한다.
S312단계에서, 프로세싱 유닛(2220)은 수신된 논리 어드레스(LA)를 포함하는 파티클을 검색하고, 검색된 파티클에 대응하는 웨이트를 증가시킨다.
S313단계에서, 프로세싱 유닛(2220)은 카운트 값이 임계 카운트 값보다 큰지 여부를 판별한다. 카운트 값이 임계 카운트 값보다 큰 경우에, S321단계가 수행된다. 카운트 값이 임계 카운트 값보다 작은 경우에, S311단계가 수행된다. 즉, 카운트 값이 임계 카운트 값에 도달하기 전까지, 프로세싱 유닛(2220)은 호스트로부터 수신되는 논리 어드레스(LA)를 포함하는 파티클의 웨이트를 증가시킨다.
S321 단계 내지 S323단계는 업데이트된 패턴 테이블에 따라 호스트로부터 수신되는 어드레스들을 복수의 어드레스 그룹들로 구분하는 단계이다.
S321단계에서, 프로세싱 유닛(2220)은 패턴 테이블(213)을 참조하여 셀 조합 비율을 변경하면서 성능 기대 값(expected performance value)을 계산한다. 성능 기대 값은 메모리 시스템(2000)의 동작 성능에 해당하는 값이다. 예를 들면, 성능 기대 값은 메모리 시스템(2000)의 동작 속도를 나타내는 값이다. 예를 들면, 성능 기대 값은 메모리 시스템(2000)의 쓰기 및 읽기 속도를 나타내는 값이다. 성능 기대 값의 계산 방법은 도 12 및 도 13을 참조하여 더 상세히 설명된다.
S322단계에서, 프로세싱 유닛(2220)은 메모리 시스템(2000)의 최대 성능 기대 값에 대응하는 셀 조합 비율을 결정한다. S323단계에서, 프로세싱 유닛(2220)은 결정된 셀 조합 비율에 따라 파티클들을 복수의 어드레스 그룹들로 재구분한다.
S330단계에서, 프로세싱 유닛(2220)은 어드레스 그룹 테이블(214)을 업데이트한다. 프로세싱 유닛(2220)은 어드레스 그룹 테이블(214) 내의 각 어드레스 그룹에 포함되는 파티클들에 대한 정보를 변경한다.
도 13는 도 11의 패턴 테이블(213)을 보여준다. 도 11 및 도 13를 참조하면, 패턴 테이블(213)은 복수의 파티클들에 각각 대응하는 웨이트 값들을 저장한다. 도 12를 참조한 설명과 같이, 프로세싱 유닛(2220)은 논리 어드레스(LA)가 수신될 때마다 카운트 값을 증가시키고, 논리 어드레스(LA)에 대응하는 웨이트 값을 증가시킬 것이다. 카운트 값이 임계 카운트 값에 도달한 경우에, 패턴 테이블(213)에 기반하여 어드레스 그룹 테이블(214)을 생성 또는 업데이트할 것이다.
패턴 테이블(213)은 누적된 웨이트 값들을 더 저장한다. 프로세싱 유닛(2220)은 내림차순으로 정렬된 웨이트 값들에 따라 누적된 웨이트 값들을 계산할 수 있다. 각 파티클의 누적된 웨이트 값은 각 파티클의 웨이트 값과, 그 웨이트 값보다 큰 모든 웨이트 값들을 더함으로써 계산된다. 도 13에서, 웨이트 값들을 기준으로 내림차순으로 정렬되는 패턴 테이블(213)이 예시적으로 도시된다. 이 경우에, 각 파티클의 누적된 웨이트 값은 각 파티클의 웨이트 값과, 각 파티클의 위에 정렬된 파티클들의 웨이트 값들을 더함으로써 계산된다.
각 논리 어드레스는 하나의 논리 페이지에 대응될 수 있다. 도 13에서, 전체의 파티클들의 개수는 200이다. 따라서, 각 파티클에 대응하는 논리 페이지들의 저장 용량은 1/200이다. 저장 용량 정보(SCI)에 따른 불휘발성 메모리(100)의 저장 용량과 각 파티클에 대응하는 논리 페이지들의 저장 용량의 비율은, 전체의 파티클들의 개수에 따라 결정될 것이다.
패턴 테이블(213)은 누적된 저장 용량 정보를 더 저장한다. 누적된 저장 용량 정보는 각 파티클에 대응하는 논리 페이지들의 저장 용량과, 각 파티클의 위에 정렬된 논리 페이지들의 웨이트 값들을 더함으로써 계산된다.
도 14는 수학식 1 및 2를 만족하는 셀 조합 비율들을 보여주는 테이블이다. 프로세싱 유닛(220)은 셀 조합 비율을 변경하면서 성능 기대 값을 계산한다. 이때, 저장 용량 정보(SCI)에 따라, 1 셀 레벨의 메모리 셀들의 저장 용량, 제 2 셀 레벨의 메모리 셀들의 저장 용량, 그리고 제 3 셀 레벨의 메모리 셀들의 저장 용량의 합은 일정하도록 셀 조합 비율들이 변동될 것이다.
도 14를 참조하면, 각 경우(case)에서, R1, R2 및 R3의 합은 1로 계산된다. 그리고, 수학식 2의 MC가 50일 때의 제 1 셀 레벨의 메모리 셀들의 저장 용량, 제 2 셀 레벨의 메모리 셀들의 저장 용량, 그리고 제 3 셀 레벨의 메모리 셀들의 저장 용량이 각각 표시된다.
수학식 2의 MC가 50일 때, 각 경우에서 제 1 셀 레벨의 메모리 셀들의 저장 용량, 제 2 셀 레벨의 메모리 셀들의 저장 용량, 그리고 제 3 셀 레벨의 메모리 셀들의 저장 용량의 합은 100이다. 도 14에서, 각 경우의 제 1 셀 레벨의 메모리 셀들의 저장 용량, 제 2 셀 레벨의 메모리 셀들의 저장 용량, 그리고 제 3 셀 레벨의 메모리 셀들의 저장 용량의 합은 항상 일정하도록, 셀 조합 비율들이 나타나 있음이 이해될 것이다. 도 14에서, 각 경우에서, 제 1 셀 레벨의 메모리 셀들의 저장 용량의 비율(이하, 제 1 비율), 제 2 셀 레벨의 메모리 셀들의 저장 용량의 비율(이하, 제 2 비율), 그리고 제 3 셀 레벨의 메모리 셀들의 저장 용량의 비율(이하, 제 3 비율)이 나타나 있음이 이해될 것이다.
예시적으로, 성능 기대 값은 수학식 3과 같이 나타난다.
Figure 112011022560012-pat00003
수학식 3을 참조하면, F는 불휘발성 메모리(100)의 성능 기대 값을 나타낸다. T1은 제 1 셀 레벨의 메모리 셀들에 엑세스되는 비율을 나타낸다. T2는 제 2 셀 레벨의 메모리 셀들에 엑세스되는 비율을 나타낸다. T3는 제 3 셀 레벨의 메모리 셀들에 엑세스되는 비율을 나타낸다. T1, T2 및 T3의 합은 1일 수 있다. T1, T2 및 T3는 패턴 테이블(213)의 웨이트 값들을 이용하여 결정될 수 있다.
F1은 불휘발성 메모리(100)의 제 1 셀 레벨의 메모리 셀들의 동작 성능을 나타낸다. F2는 불휘발성 메모리(100)의 메모리 셀들 중 제 2 셀 레벨의 메모리 셀들의 동작 성능을 나타낸다. F3은 불휘발성 메모리(100)의 메모리 셀들 중 제 3 셀 레벨의 메모리 셀들의 동작 성능을 나타낸다. F1,F2 및 F3는 각각 상수 값들로 표현될 것이다.
프로세싱 유닛(2220)은 각 경우의 셀 조합 비율을 패턴 테이블(213)에 적용함으로써, 각 경우의 성능 기대 값을 계산한다. 프로세싱 유닛(2220)은 각 경우의 제 1 내지 제 3 비율들과 패턴 테이블(213) 내의 누적된 저장 공간 정보를 비교함으로써, 각 경우의 성능 기대 값을 계산하기 위한 T1, T2 및 T3를 결정한다.
예를 들면, 제 2 경우(case2)에 제 1 내지 제 3 비율들은 각각 1, 96 및 3으로 나타난다. 도 13의 패턴 테이블(213)의 누적된 저장 용량 정보를 참조하면, 저장 용량 정보(SCI)에 따른 불휘발성 메모리(100)의 저장 용량 중 제 1 행부터 제 2 행까지의 파티클들에 대응하는 논리 페이지들의 저장 용량은 1%이다. 제 1 행부터 제 2 행까지의 파티클들에 대응하는 웨이트 값들의 합은 0.2이다. 즉, 제 1 행부터 제 2 행까지의 파티클들에 대응하는 논리 페이지들을 포함하는 메모리 셀들이 제 1 셀 레벨로 동작할 때, 전체 엑세스의 20%가 제 1 셀 레벨의 메모리 셀들에 집중된다. 이때, 수학식 3의 T1은 0.2일 것이다.
저장 용량 정보(SCI)에 따른 불휘발성 메모리(100)의 저장 용량 중 제 3 행 내지 제 194 행까지의 파티클들에 대응하는 논리 페이지들의 저장 용량은 96%이다. 제 3 행 내지 제 194 행까지의 파티클들에 대응하는 웨이트 값들의 합은 0.8이다. 이는 제 3 행부터 제 194 행까지의 파티클들에 대응하는 논리 페이지들을 포함하는 메모리 셀들이 제 2 셀 레벨로 동작할 때, 전체 엑세스들의 80%가 제 2 셀 레벨의 메모리 셀들에 집중됨을 의미한다. 수학식 3의 T2는 0.8일 것이다.
저장 용량 정보(SCI)에 따른 불휘발성 메모리(100)의 저장 용량 중 제 195 행 내지 제 200 행까지의 파티클들에 대응하는 논리 페이지들의 저장 용량은 3%이다. 제 195 행 내지 제 200 행까지의 파티클들에 대응하는 웨이트 값들의 합은 0이다. 이는 제 195 행 내지 제 200 행까지의 파티클들에 대응하는 논리 페이지들을 포함하는 메모리 셀들이 제 3 셀 레벨로 동작할 때, 전체 엑세스들의 0%가 제 3 셀 레벨의 메모리 셀들에 집중됨을 의미한다. 수학식 3의 T3는 0일 것이다.
F1, F2 및 F3는 상수 값들이고, T1, T2 및 T3가 정해졌으므로, 성능 기대 값이 계산될 것이다. 예시적으로, F1, F2 및 F3가 각각 6, 3, 1이라고 가정할 때, 성능 기대 값은 3.6이다.
제 2 경우(case2)와 마찬가지로, 프로세싱 유닛(2220)은 제 0 및 제 50 경우들(case0~case50) 각각의 성능 기대 값들을 계산할 것이다. 프로세싱 유닛(2220)은 계산된 성능 기대 값들 중 가장 큰 성능 기대 값을 판별할 것이다. 프로세싱 유닛(2220)은 가장 큰 성능 기대 값에 대응하는 셀 조합 비율에 따라, 패턴 테이블(213) 내의 정렬된 파티클들을 제 1 내지 제 3 어드레스 그룹들(AG1~AG3)로 구분할 것이다. 그리고, 프로세싱 유닛(2220)은 각 파티클 별로 각 파티클을 포함하는 어드레스 그룹에 대한 정보를 어드레스 그룹 테이블(214)에 저장할 것이다. 또한, 복수의 메모리 셀 그룹들로 구분된 불휘발성 메모리(100)의 메모리 셀들은 변경된 메모리 셀 그룹들로 재구분될 것이다. 이때, 셀 조합 비율이 변경되더라도, 복수의 메모리 셀 그룹들의 저장 용량과, 변경된 메모리 셀 그룹들의 저장 용량은 동일할 것이다.
도 15는 도 2의 메모리 시스템(1000)의 응용 예(3000)를 보여주는 블록도이다. 도 15를 참조하면, 메모리 시스템(3000)은 불휘발성 메모리(3100) 및 메모리 컨트롤러(200)를 포함한다. 불휘발성 메모리(3100)는 복수의 불휘발성 메모리 칩들을 포함한다. 복수의 불휘발성 메모리 칩들은 복수의 그룹들로 분할된다. 각 불휘발성 메모리 칩들의 그룹은 하나의 공통 채널을 통해 메모리 컨트롤러(200)와 통신하도록 구성된다. 예시적으로, 복수의 불휘발성 메모리 칩들은 제 1 내지 제 k 채널들(CH1~CHk)을 통해 메모리 컨트롤러(200)와 통신하는 것으로 도시되어 있다.
불휘발성 메모리 칩들 각각은 불휘발성 메모리(100)와 동일한 구조를 가지며, 동일하게 동작할 수 있다.
메모리 컨트롤러(200)는 도 2를 참조하여 설명된 메모리 컨트롤러(200)와 마찬가지로 동작할 것이다. 즉, 메모리 컨트롤러(200)는 논리 어드레스(LA)에 따라 패턴 테이블(211)을 업데이트할 것이다. 그리고, 메모리 컨트롤러(200)는 패턴 테이블(211)에 따라 각 파티클을 포함하는 어드레스 그룹 정보를 어드레스 그룹 테이블(212)에 저장할 것이다. 메모리 컨트롤러(200)는 복수의 어드레스 그룹들 각각에 불휘발성 메모리(3100)의 메모리 셀 그룹들을 할당할 것이다. 불휘발성 메모리(3100)의 메모리 셀 그룹들은 각각 다른 셀 레벨들을 가지도록 제어될 것이다.
도 15에서, 하나의 채널에 복수의 불휘발성 메모리 칩들이 연결되는 것으로 설명되었다. 그러나, 하나의 채널에 하나의 불휘발성 메모리 칩이 연결되도록, 메모리 시스템(3000)는 변형될 수 있다.
불휘발성 메모리(3100) 및 메모리 컨트롤러(200)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 불휘발성 메모리(3100) 및 메모리 컨트롤러(200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 것이다. 예를 들면, 불휘발성 메모리(3100) 및 메모리 컨트롤러(200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등을 구성할 것이다.
다른 예로서, 불휘발성 메모리(3100) 및 메모리 컨트롤러(200)는 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD, Solid State Drive)를 구성할 것이다. 예시적으로, 반도체 드라이브(SSD)는 반도체 메모리에 데이터를 저장하도록 구성되는 저장 장치를 포함할 것이다. 메모리 시스템(3000)이 반도체 드라이브(SSD)로 이용되는 경우, 메모리 시스템(3000)에 연결된 호스트의 동작 속도는 획기적으로 개선될 것이다.
다른 예로서, 메모리 시스템(3000)은 컴퓨터, 휴대용 컴퓨터, UMPC, 워크스테이션, 넷북(net-book), PDA, 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), 디지털 카메라(digital camera), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나(예를 들면, 반도체 드라이브(SSD), 메모리 카드 등)에 적용될 것이다.
다른 예로서, 메모리 시스템(3000)은 다양한 형태들의 패키지로 실장 될 수 있다. 예를 들면, 메모리 시스템(3000)은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화되어 실장될 것이다.
도 16은 도 15를 참조하여 설명된 메모리 시스템(3000)을 포함하는 컴퓨팅 시스템(4000)을 보여주는 블록도이다. 도 16을 참조하면, 컴퓨팅 시스템(4000)은 중앙 처리 장치(4100), 램(4200, RAM, Random Access Memory), 사용자 인터페이스(4300), 전원(4400), 시스템 버스(4500), 그리고 메모리 시스템(3000)을 포함한다.
메모리 시스템(3000)은 시스템 버스(4500)를 통해, 중앙처리장치(4100), 램(4200), 사용자 인터페이스(4300), 그리고 전원(4400)에 전기적으로 연결된다. 사용자 인터페이스(4300)를 통해 제공되거나, 중앙 처리 장치(4100)에 의해서 처리된 데이터는 메모리 시스템(3000)에 저장된다.
도 16에서, 불휘발성 메모리(3100)는 메모리 컨트롤러(200)를 통해 시스템 버스(4500)에 연결되는 것으로 도시되어 있다. 그러나, 불휘발성 메모리(3100)는 시스템 버스(4500)에 직접 연결되도록 구성될 수 있다. 이때, 프로세싱 유닛(122)의 기능은 중앙 처리 장치(4100)에 의해 수행될 것이다. 또한, 버퍼 유닛(121)의 기능은 램(4200)에 의해 수행될 것이다.
도 16에서, 도 15를 참조하여 설명된 메모리 시스템(3000)이 제공되는 것으로 도시되어 있다. 그러나, 메모리 시스템(3000)은 도 2를 참조하여 설명된 메모리 시스템(1000)으로 대체될 수 있다.
예시적으로, 컴퓨팅 시스템(4000)은 도 2 및 도 15를 참조하여 설명된 메모리 시스템들(1000, 3000)을 모두 포함하도록 구성될 수 있다.
본 발명의 실시 예에 따른 메모리 시스템은 호스트로부터의 어드레스들의 수신 패턴에 따라, 복수의 셀 레벨들 각각의 메모리 셀들의 비율이 변경되도록 불휘발성 메모리를 제어하는 메모리 컨트롤러를 포함한다. 따라서, 향상된 동작 속도를 가지는 메모리 시스템이 제공된다.
한편, 본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
100: 불휘발성 메모리 110: 메모리 셀 어레이
120: 어드레스 디코더 130: 읽기 및 쓰기 회로
140: 제어 로직 200, 2200: 메모리 컨트롤러
210, 2210: 버퍼 유닛 220,2220: 프로세싱 유닛
230: 에러 정정 유닛 240: 호스트 인터페이스
250: 메모리 인터페이스 211, 213: 패턴 테이블
212, 214: 어드레스 그룹 테이블

Claims (10)

  1. 복수의 메모리 셀들을 포함하는 불휘발성 메모리; 및
    상기 복수의 메모리 셀들을 복수의 셀 레벨(cell level)들 중 하나로 동작하도록 제어하되, 호스트로부터 수신되는 논리 어드레스들을 각각 복수의 어드레스 그룹들 중 하나에 포함시키고, 상기 어드레스 그룹들 각각에 포함되는 논리 어드레스들의 개수에 따라 각 셀 레벨의 메모리 셀들의 개수를 가변하는 메모리 컨트롤러를 포함하되,
    각 메모리 셀의 셀 레벨에 따라 상기 각 메모리 셀에 저장되는 비트 수가 결정되고,
    상기 메모리 컨트롤러는 상기 논리 어드레스들 각각의 수신 횟수들에 따라, 상기 불휘발성 메모리의 저장 용량이 일정하도록 상기 각 셀 레벨로 동작하는 메모리 셀들의 개수를 가변하는 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 논리 어드레스들은 복수의 파티클들로 구분되고,
    상기 메모리 컨트롤러는 상기 복수의 파티클들에 각각 대응하는 웨이트 값들을 저장하고, 상기 웨이트 값들에 기초하여 상기 각 셀 레벨로 동작하는 메모리 셀들의 개수를 가변하는 메모리 시스템.
  3. 제 1 항에 있어서,
    상기 복수의 셀 레벨들은 제 1 내지 제 3 셀 레벨들이고,
    상기 제 1 셀 레벨의 메모리 셀은 1 비트를 저장하고, 상기 제 2 셀 레벨의 메모리 셀은 제 2 비트를 저장하고, 상기 제 3 셀 레벨의 메모리 셀은 제 3 비트를 저장하며,
    상기 제 1 셀 레벨의 메모리 셀들의 개수가 증가할 때 상기 제 3 셀 레벨의 메모리 셀들의 개수는 함께 증가하고, 상기 제 1 셀 레벨의 메모리 셀들의 개수가 감소할 때 상기 제 3 셀 레벨의 메모리 셀들의 개수는 함께 감소함으로써, 상기 불휘발성 메모리의 저장 용량은 일정하게 유지되는 메모리 시스템.
  4. 제 1 항에 있어서,
    상기 복수의 메모리 셀들은 상기 복수의 어드레스 그룹들에 각각 대응하는 복수의 메모리 셀 그룹들로 구분되고,
    상기 메모리 컨트롤러는 각 어드레스가 수신될 때, 상기 각 어드레스를 포함하는 어드레스 그룹에 대응하는 메모리 셀 그룹의 메모리 셀들을 엑세스하는 메모리 시스템.
  5. 제 4 항에 있어서,
    상기 메모리 컨트롤러는 상기 복수의 메모리 셀 그룹들이 각각 다른 셀 레벨들을 가지도록 상기 불휘발성 메모리를 제어하는 메모리 시스템.
  6. 제 4 항에 있어서,
    상기 각 어드레스 그룹에 포함되는 논리 어드레스들의 개수에 따라 상기 각 어드레스 그룹에 대응하는 메모리 셀 그룹에 포함되는 메모리 셀들의 개수가 변경되는 메모리 시스템.
  7. 복수의 메모리 셀들을 포함하는 불휘발성 메모리를 제어하는 방법에 있어서,
    상기 복수의 메모리 셀들을 복수의 셀 레벨들 중 하나로 동작하도록 제어하되, 호스트로부터 수신되는 논리 어드레스들을 각각 복수의 어드레스 그룹들 중 하나에 포함시키는 단계;
    상기 논리 어드레스들 각각의 수신 횟수들에 따라, 상기 논리 어드레스들이 각각 속하는 어드레스 그룹을 변경하는 단계; 및
    각 어드레스 그룹에 포함되는 논리 어드레스들의 개수에 따라, 각 셀 레벨의 메모리 셀들의 개수를 가변하는 단계를 포함하되,
    상기 각 셀 레벨의 메모리 셀들의 개수를 가변하는 단계는 상기 불휘발성 메모리의 저장 용량이 일정하도록 상기 각 셀 레벨의 메모리 셀들의 개수를 가변하는 단계를 포함하는 제어 방법.
  8. 제 7 항에 있어서,
    상기 논리 어드레스들은 복수의 파티클들로 구분되고,
    상기 복수의 파티클들은 각각 대응하는 웨이트 값들을 가지고, 그리고
    상기 각 셀 레벨로 동작하는 메모리 셀들의 개수는 상기 웨이트 값들에 기초하여 가변되는 제어 방법.
  9. 제 7 항에 있어서,
    상기 복수의 메모리 셀들은 상기 복수의 어드레스 그룹들에 각각 대응하는 복수의 메모리 셀 그룹들로 구분되고,
    상기 논리 어드레스들 각각이 수신될 때, 상기 논리 어드레스들 각각을 포함하는 어드레스 그룹에 대응하는 메모리 셀 그룹의 메모리 셀들이 엑세스되는 제어 방법.
  10. 제 9 항에 있어서,
    상기 복수의 메모리 셀 그룹들은 각각 다른 셀 레벨들로 동작하도록 제어되는 제어 방법.
KR1020110027728A 2011-03-28 2011-03-28 불휘발성 메모리의 제어 방법 및 그것을 포함하는 메모리 시스템 KR101800444B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110027728A KR101800444B1 (ko) 2011-03-28 2011-03-28 불휘발성 메모리의 제어 방법 및 그것을 포함하는 메모리 시스템
US13/430,850 US8812775B2 (en) 2011-03-28 2012-03-27 System and method for controlling nonvolatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110027728A KR101800444B1 (ko) 2011-03-28 2011-03-28 불휘발성 메모리의 제어 방법 및 그것을 포함하는 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20120109903A KR20120109903A (ko) 2012-10-09
KR101800444B1 true KR101800444B1 (ko) 2017-12-20

Family

ID=46928895

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110027728A KR101800444B1 (ko) 2011-03-28 2011-03-28 불휘발성 메모리의 제어 방법 및 그것을 포함하는 메모리 시스템

Country Status (2)

Country Link
US (1) US8812775B2 (ko)
KR (1) KR101800444B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11301319B2 (en) 2018-09-21 2022-04-12 Samsung Electronics Co., Ltd. Memory device and memory system having multiple error correction functions, and operating method thereof

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102292167B1 (ko) * 2014-04-04 2021-08-25 삼성전자주식회사 배드 블록 관리 방법 및 메모리 시스템
KR20160070920A (ko) * 2014-12-10 2016-06-21 에스케이하이닉스 주식회사 맵 테이블을 갖는 컨트롤러 및 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
US11086775B2 (en) * 2014-12-11 2021-08-10 Toshiba Memory Corporation Information processing device, non-transitory computer readable recording medium, and information processing system
US9977734B2 (en) * 2014-12-11 2018-05-22 Toshiba Memory Corporation Information processing device, non-transitory computer readable recording medium, and information processing system
KR102532581B1 (ko) * 2016-03-17 2023-05-17 에스케이하이닉스 주식회사 메모리 장치를 포함하는 메모리 시스템 및 그의 동작 방법
US11194517B2 (en) 2016-05-24 2021-12-07 Samsung Electronics Co., Ltd. Method and apparatus for storage device latency/bandwidth self monitoring
US10474374B2 (en) 2016-05-24 2019-11-12 Samsung Electronics Co., Ltd. Method and apparatus for storage device latency/bandwidth self monitoring
US10437486B2 (en) 2016-05-24 2019-10-08 Samsung Electronics Co., Ltd. Method and apparatus for tenant-aware storage sharing platform
US10439881B2 (en) 2016-05-24 2019-10-08 Samsung Electronics Co., Ltd. Method and apparatus for predicting storage distance
JP6524039B2 (ja) * 2016-09-23 2019-06-05 東芝メモリ株式会社 メモリシステム及び制御方法
CN110998615A (zh) * 2017-07-28 2020-04-10 北京嘀嘀无限科技发展有限公司 用于确定服务请求费用的系统和方法
US11709617B2 (en) * 2020-08-19 2023-07-25 Micron Technology, Inc. Multi-stage memory device performance notification

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100153616A1 (en) * 2008-12-16 2010-06-17 Intel Corporation Methods and systems to allocate addresses in a high-endurance/low-endurance hybrid flash memory

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090193184A1 (en) 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
KR100855467B1 (ko) 2006-09-27 2008-09-01 삼성전자주식회사 이종 셀 타입을 지원하는 비휘발성 메모리를 위한 맵핑장치 및 방법
KR100771521B1 (ko) 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
KR100878479B1 (ko) 2007-01-16 2009-01-14 삼성전자주식회사 데이터 정보에 따라 프로그램 방식을 결정하는 메모리시스템
KR100875539B1 (ko) 2007-01-17 2008-12-26 삼성전자주식회사 프로그램 방식을 선택할 수 있는 메모리 시스템
KR101498673B1 (ko) 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
TWI373045B (en) * 2008-01-07 2012-09-21 Phison Electronics Corp Flash memory storage apparatus, flash memory controller and switching method thereof
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
KR101548175B1 (ko) * 2008-11-05 2015-08-28 삼성전자주식회사 싱글 레벨 메모리 셀 블락과 멀티 레벨 메모리 셀 블락을 포함하는 불휘발성 메모리 장치의 마모 레벨링 방법
US8407400B2 (en) * 2008-11-12 2013-03-26 Micron Technology, Inc. Dynamic SLC/MLC blocks allocations for non-volatile memory
KR101629179B1 (ko) 2009-04-08 2016-06-14 삼성전자주식회사 플래시 메모리 저장 장치 및 그것을 포함한 컴퓨팅 시스템
US20110107042A1 (en) * 2009-11-03 2011-05-05 Andrew Herron Formatting data storage according to data classification
US8838903B2 (en) * 2010-02-04 2014-09-16 Dataram, Inc. Priority ordered multi-medium solid-state storage system and methods for use

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100153616A1 (en) * 2008-12-16 2010-06-17 Intel Corporation Methods and systems to allocate addresses in a high-endurance/low-endurance hybrid flash memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11301319B2 (en) 2018-09-21 2022-04-12 Samsung Electronics Co., Ltd. Memory device and memory system having multiple error correction functions, and operating method thereof

Also Published As

Publication number Publication date
US20120254581A1 (en) 2012-10-04
KR20120109903A (ko) 2012-10-09
US8812775B2 (en) 2014-08-19

Similar Documents

Publication Publication Date Title
KR101800444B1 (ko) 불휘발성 메모리의 제어 방법 및 그것을 포함하는 메모리 시스템
US10540115B2 (en) Controller adaptation to memory program suspend-resume
US9478300B2 (en) Operation method of nonvolatile memory system
US20190096492A1 (en) Hybrid read disturb count management
KR102437591B1 (ko) 불휘발성 메모리 시스템의 동작 방법 및 메모리 컨트롤러의 동작 방법
US8788778B1 (en) Garbage collection based on the inactivity level of stored data
KR101734200B1 (ko) 적응적 머지를 수행하는 메모리 시스템 및 그것의 데이터 쓰기 방법
US20140019673A1 (en) Dynamically allocating number of bits per cell for memory locations of a non-volatile memory
US20160163381A1 (en) Memory system including semiconductor memory device and method of operating the same
CN109710177B (zh) 用于嵌入式系统的事件管理
KR20120128433A (ko) 불휘발성 메모리를 포함하는 메모리 시스템 및 불휘발성 메모리의 제어 방법
JP2015187864A (ja) 不揮発性メモリ及びメモリコントローラを含むメモリシステムの動作方法
US20230393753A1 (en) Wear leveling in solid state drives
US11061769B2 (en) Storage device selectively generating parity bits according to endurance of memory cell, and method thereof
US11231883B1 (en) Detecting last page written in multi-plane non-volatile memory
KR102559549B1 (ko) 메모리 시스템에서의 블록 상태를 관리하는 방법 및 장치
CN112783437A (zh) 存储设备及其操作方法
KR20140134497A (ko) 메모리 시스템 및 그것의 캐시 관리 방법
US11698754B2 (en) Coalescing read commands by location from a host queue
US20200057581A1 (en) Memory system and operating method thereof
KR102571629B1 (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US11262950B2 (en) Memory system for adjusting difference between operation time points in sequential command operations performed in memory device, and operation method thereof
US20240028261A1 (en) Stack management in memory systems
KR20200029810A (ko) 데이터 처리 시스템 및 그의 동작방법
CN106683698A (zh) 存储器件及其操作方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant