KR20150074685A - 메모리 시스템 및 그것을 포함하는 유저 장치 - Google Patents

메모리 시스템 및 그것을 포함하는 유저 장치 Download PDF

Info

Publication number
KR20150074685A
KR20150074685A KR1020130162710A KR20130162710A KR20150074685A KR 20150074685 A KR20150074685 A KR 20150074685A KR 1020130162710 A KR1020130162710 A KR 1020130162710A KR 20130162710 A KR20130162710 A KR 20130162710A KR 20150074685 A KR20150074685 A KR 20150074685A
Authority
KR
South Korea
Prior art keywords
time
memory
read
program
requested
Prior art date
Application number
KR1020130162710A
Other languages
English (en)
Other versions
KR102116258B1 (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 KR1020130162710A priority Critical patent/KR102116258B1/ko
Priority to US14/491,123 priority patent/US9837163B2/en
Publication of KR20150074685A publication Critical patent/KR20150074685A/ko
Application granted granted Critical
Publication of KR102116258B1 publication Critical patent/KR102116258B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0466Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells with charge storage in an insulating layer, e.g. metal-nitride-oxide-silicon [MNOS], silicon-oxide-nitride-oxide-silicon [SONOS]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series

Abstract

데이터 정보를 저장하는 저장 매체를 제어하도록 구성된 메모리 제어기는 프로세싱 유니트와; 그리고 상기 프로그세싱 유니트의 제어에 따라 임시로 데이터를 저장하는 버퍼 메모리를 포함하며, 상기 버퍼 메모리는 상기 저장 매체의 메모리 블록들 중 프로그램된 메모리 블록들의 어드레스 정보를 저장하는 제 1 테이블과; 그리고 상기 제 1 테이블에 저장된 메모리 블록들의 프로그램 유니트들에는 서로 다른 인덱스 값들이 각각 할당되고 상기 제 1 테이블에 저장된 메모리 블록들의 프로그램 유니트들에는 소정 시간 간격을 두고 타임 포인터들이 할당되며; 상기 타임 포인터들과 상기 타임 포인터들에 각각 대응하는 프로그램 유니트들의 인덱스 값들을 저장하는 제 2 테이블을 포함하며, 상기 제 1 및 제 2 테이블들은 읽기 요청된 메모리 영역의 프로그램 경과 시간을 결정하는 데 사용된다.

Description

메모리 시스템 및 그것을 포함하는 유저 장치{MEMORY SYSTEM AND USER DEVICE INCLUDING THE SAME}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 불 휘발성 메모리 장치 및 그것을 제어하는 메모리 제어기에 관한 것이다.
반도체 메모리는, 일반적으로, 위성에서 소비자 전자 기술까지의 범위에 속하는 마이크로프로세서를 기반으로 한 응용 및 컴퓨터와 같은 디지털 로직 설계의 가장 필수적인 마이크로 전자 소자이다. 그러므로, 높은 집적도 및 빠른 속도를 위한 축소(scaling)를 통해 얻어지는 프로세스 향상 및 기술 개발을 포함한 반도체 메모리의 제조 기술의 진보는 다른 디지털 로직 계열의 성능 기준을 확립하는 데 도움이 된다.
반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치와 불 휘발성 반도체 메모리 장치로 나뉘어진다. 휘발성 반도체 메모리 장치에 있어서, 로직 정보는 스태틱 랜덤 액세스 메모리의 경우 쌍안정 플립-플롭의 로직 상태를 설정함으로써 또는 다이나믹 랜덤 액세스 메모리의 경우 커패시터의 충전을 통해 저장된다. 휘발성 반도체 메모리 장치의 경우, 전원이 인가되는 동안 데이터가 저장되고 읽혀지며, 전원이 차단될 때 데이터는 소실된다.
MROM, PROM, EPROM, EEPROM, PRAM, 등과 같은 불 휘발성 반도체 메모리 장치는 전원이 차단되어도 데이터를 저장할 수 있다. 불 휘발성 메모리 데이터 저장 상태는 사용되는 제조 기술에 따라 영구적이거나 재프로그램 가능하다. 불 휘발성 반도체 메모리 장치는 컴퓨터, 항공 전자 공학, 통신, 그리고 소비자 전자 기술 산업과 같은 넓은 범위의 응용에서 프로그램 및 마이크로코드의 저장을 위해서 사용된다. 단일 칩에서 휘발성 및 불 휘발성 메모리 저장 모드들의 조합이 빠르고 재프로그램 가능한 불 휘발성 메모리를 요구하는 시스템에서 불 휘발성 RAM (nvRAM)과 같은 장치들에서 또한 사용 가능하다. 게다가, 응용 지향 업무를 위한 성능을 최적화시키기 위해 몇몇 추가적인 로직 회로를 포함하는 특정 메모리 구조가 개발되어 오고 있다.
불 휘발성 반도체 메모리 장치에 전하 트랩 플래시(charge trap flash: CTF) 기술이 적용되어 오고 있다. 여기서, 전하 트랩 플래시 기법은 볼 휘발성 노어 및 낸드 플래시 메모리들을 구현하는 데 사용되는 반도체 메모리 기술이다. 전하 트랩 플래시 기법은 전자들을 저장하기 위해서 플로팅 게이트 구조를 대표하는 도핑된 다결정 실리콘 대신에 실리콘 질화막이 사용된다는 점에서 종래의 플로팅 게이트 MOSFET 기법들과 다르다. 이러한 접근법에 의해서 메모리 제조사는 다양한 이점들, 예를 들면, 전하 저장 노드를 형성하는 데 적은 공정 단계들이 요구되고, 보다 작은 공정 지오메트리가 사용되고 (결과적으로, 칩 크기 및 비용이 감소됨), 하나의 플래시 메모리 셀에 다수의 비트들이 저장되고, 신뢰성이 향상되며, 전하 트랩이 터널 산화막의 점 결함들에 덜 민감하기 때문에 수율이 향상된다는 점에서 제조 비율을 줄일 수 있다.
본 발명의 목적은 향상된 성능을 갖는 메모리 시스템 및 그것을 포함하는 유저 장치를 제공하는 것이다.
본 발명의 일 특징은 데이터 정보를 저장하는 저장 매체를 제어하도록 구성된 메모리 제어기를 제공하는 것이며, 메모리 제어기는 프로세싱 유니트와; 그리고
상기 프로그세싱 유니트의 제어에 따라 임시로 데이터를 저장하는 버퍼 메모리를 포함하며, 상기 버퍼 메모리는 상기 저장 매체의 메모리 블록들 중 프로그램된 메모리 블록들의 어드레스 정보를 저장하는 제 1 테이블과; 그리고 상기 제 1 테이블에 저장된 메모리 블록들의 프로그램 유니트들에는 서로 다른 인덱스 값들이 각각 할당되고 상기 제 1 테이블에 저장된 메모리 블록들의 프로그램 유니트들에는 소정 시간 간격을 두고 타임 포인터들이 할당되며; 상기 타임 포인터들과 상기 타임 포인터들에 각각 대응하는 프로그램 유니트들의 인덱스 값들을 저장하는 제 2 테이블을 포함하며, 상기 제 1 및 제 2 테이블들은 읽기 요청된 메모리 영역의 프로그램 경과 시간을 결정하는 데 사용된다.
예시적인 실시예에 있어서, 상기 프로세싱 유니트는 프로그램 경과 시간의 증가에 따라 증가하도록 상기 프로그램된 메모리 블록의 프로그램 유니트들에 인덱스 값들을 할당한다.
예시적인 실시예에 있어서, 상기 버퍼 메모리는 상기 프로그램된 메모리 블록들의 프로그램 유니트들과 상기 프로그램된 메모리 블록들의 프로그램 유니트들에 각각 할당된 인덱스 값들을 저장하는 제 3 테이블을 더 포함한다.
예시적인 실시예에 있어서, 상기 버퍼 메모리는 마지막으로 프로그램된 프로그램 유니트에 대응하는 타임 포인터를 저장하는 제 4 테이블을 더 포함한다.
예시적인 실시예에 있어서, 상기 프로세싱 유니트는 상기 제 4 테이블에 저장된 타임 포인터들에 의거하여, 상기 제 1 테이블에 저장된 프로그램된 메모리 블록들의 프로그램 경과 시간들이 특정 시간을 경과하였는 지의 여부를 판별한다.
예시적인 실시예에 있어서, 상기 제 1 테이블에 저장된 프로그램된 메모리 블록들의 프로그램 경과 시간들이 상기 특정 시간을 경과한 것으로 판별될 때, 상기 프로세싱 유니트는 상기 제 1 테이블에 저장된 어드레스 정보를 바이너리 검색을 위해 정렬하고 상기 정렬된 어드레스 정보를 검색하여 상기 읽기 요청된 메모리 영역의 어드레스 정보가 상기 제 1 테이블에 저장되어 있는 지의 여부를 판별한다.
예시적인 실시예에 있어서, 상기 읽기 요청된 메모리 영역의 어드레스 정보가 상기 제 1 테이블에 저장되어 있는 것으로 판별될 때, 상기 프로그세싱 유니트는 상기 제 1 테이블에 저장된 메모리 블록들의 프로그램 유니트들에 각각 대응하는 인덱스 값들에 의거하여, 상기 읽기 요청된 메모리 영역에 대응하는 인덱스 값을 결정한다.
예시적인 실시예에 있어서, 상기 프로세싱 유니트는 상기 결정된 인덱스 값에 의거하여 상기 읽기 요청된 메모리 영역의 프로그램 경과 시간을 결정한다.
예시적인 실시예에 있어서, 상기 프로세싱 유니트는 상기 결정된 프로그램 경과 시간에 대응하는 읽기 조건을 상기 저장 매체로 전달하며, 상기 읽기 조건은 상기 프로그램 경과 시간에 따라 변화한다.
예시적인 실시예에 있어서, 상기 타임 포인터들은 일정 시간 간격을 두고 할당되거나, 상기 타임 포인터들은 로그 스케일 방식에 따라 결정된 상이한 시간 간격들을 두고 할당되며, 상기 상이한 시간 간격들에 각각 대응하고 대응하는 시간 간격 마다 업데이트되는 테이블들을 이용하여 상기 타임 포인터들이 관리된다.
본 발명의 다른 특징은 데이터 정보를 저장하는 저장 매체를 제어하는 메모리 제어기의 읽기 제어 방법을 제공하는 것이며, 읽기 제어 방법은 읽기 요청에 응답하여, 마지막으로 프로그램된 메모리 영역의 타임 포인터가 특정 시간의 경과를 나타내는 지의 여부를 판별하고, 마지막으로 프로그램된 메모리 영역의 타임 포인터가 상기 특정 시간을 경과하지 않은 것으로 판별될 때, 읽기 요청된 메모리 영역의 어드레스 정보가 타임 스템프 블록 어드레스 테이블에 존재하는 지의 여부를 판별하되, 상기 타임 스템프 블록 어드레스 테이블은 상기 저장 매체의 메모리 블록들 중 프로그램된 메모리 블록들의 어드레스 정보를 저장하며, 상기 타임 스템프 블록 어드레스 테이블에 저장된 메모리 블록들의 프로그램 유니트들에는 서로 다른 인덱스 값들이 각각 할당되고, 상기 타임 스템프 블록 어드레스 테이블에 저장된 메모리 블록들의 프로그램 유니트들에는 소정 시간 간격을 두고 타임 포인터들이 할당되며; 상기 읽기 요청된 메모리 영역의 어드레스 정보가 상기 타임 스템프 블록 어드레스 테이블에 존재하는 것으로 판별될 때, 상기 프로그램된 메모리 블록들의 프로그램 유니트들과 상기 프로그램된 메모리 블록들의 프로그램 유니트들에 각각 할당된 인덱스 값들을 저장하는 인텍스 테이블에 의거하여 상기 읽기 요청된 메모리 영역에 대응하는 인덱스 값을 결정하고, 상기 결정된 인덱스 값에 의거하여, 상기 읽기 요청된 메모리 영역에 대응하는 타임 포인터를 결정하는 것을 포함한다.
예시적인 실시예에 있어서, 상기 읽기 제어 방법은 상기 결정된 타임 포인터에 대응하는 읽기 조건을 갖는 읽기 시퀀스를 이슈하는 것을 더 포함하며, 상기 타임 포인터들에는 서로 다른 읽기 조건들이 할당된다.
예시적인 실시예에 있어서, 상기 읽기 제어 방법은 마지막으로 프로그램된 메모리 영역의 타임 포인터가 상기 특정 시간을 경과한 것으로 판별될 때 또는 상기 읽기 요청된 메모리 영역의 어드레스 정보가 상기 타임 스템프 블록 어드레스 테이블에 존재하지 않는 것으로 판별될 때, 디폴트 읽기 조건을 갖는 읽기 시퀀스를 이슈하는 것을 더 포함한다.
예시적인 실시예에 있어서, 상기 프로그램된 메모리 블록의 프로그램 유니트들에는 프로그램 경과 시간의 증가에 따라 증가하도록 인덱스 값들이 할당된다.
예시적인 실시예에 있어서, 상기 타임 포인터들은 일정 시간 간격을 두고 할당되거나, 상기 타임 포인터들은 일정하지 않은 시간 간격을 두고 할당된다.
예시적인 실시예에 있어서, 상기 타임 포인터들은 로그 스케일 방식에 따라 결정된 시간 간격을 두고 할당된다.
본 발명의 또 다른 특징에 따르면, 메모리 시스템은 데이터 정보를 저장하는 저장 매체와; 그리고 상기 저장 매체를 제어하도록 구성된 제어기를 포함하며, 상기 제어기는 프로그램된 메모리 블록들의 어드레스 정보, 상기 프로그램된 메모리 블록들의 프로그램 유니트들에 각각 할당된 인덱스 값들, 그리고 소정 시간 간격을 두고 상기 프로그램된 메모리 블록들의 프로그램 유니트들에 할당되는 타임 포인터들을 이용하여 상기 프로그램된 메모리 블록들의 프로그램 유니트들에 대한 프로그램 경과 시간들을 관리한다.
예시적인 실시예에 있어서, 외부로부터 읽기 요청이 입력될 때, 상기 제어기는 상기 프로그램된 메모리 블록들의 어드레스 정보 및 상기 프로그램된 메모리 블록들의 프로그램 유니트들에 각각 할당된 상기 인덱스 값들에 의거하여 상기 프로그램된 메모리 블록들의 프로그램 유니트들에 할당되는 상기 타임 포인터들 중 액세스될 메모리 영역의 타임 포인터를 결정하며, 상기 결정된 타임 포인터에 대응하는 읽기 조건을 갖는 읽기 시퀀스를 이슈한다.
예시적인 실시예에 있어서, 외부로부터 읽기 요청이 입력될 때, 상기 제어기는 상기 프로그램된 메모리 블록들의 어드레스 정보를 바이너리 검색을 위해 정렬하고 상기 정렬된 어드레스 정보를 검색하여 상기 읽기 요청된 메모리 영역의 어드레스 정보가 상기 상기 프로그램된 메모리 블록들의 어드레스 정보에 포함되어 있는 지의 여부를 판별한다.
예시적인 실시예에 있어서, 상기 타임 포인터들 각각에는 서로 다른 읽기 조건들이 할당된다.
예시적인 실시예에 있어서, 상기 제어기는 마지막으로 프로그램된 메모리 영역의 타임 포인터가 특정 시간의 경과를 나타내는 지의 여부를 판별하고, 판별 결과에 따라 상기 액세스될 메모리 영역의 타임 포인터를 결정한다.
본 발명의 또 다른 특징은 불 휘발성 저장 매체의 프로그램 유니트들의 프로그램 경과 시간들을 관리하는 방법을 제공하는 것이며, 이 방법은 순차적으로 프로그램되는 프로그램 유니트들 중 일부에 타임 포인터들을 할당하고, 그리고 읽기 요청된 프로그램 유니트에 대응하는 타임 포인터가 존재하지 않을 때, 상기 타임 포인터들이 할당된 프로그램 유니트들 중, 상기 읽기 요청된 프로그램 유니트에 인접한, 프로그램 유니트들의 타임 포인터들에 의거하여 상기 읽기 요청된 프로그램 유니트의 프로그램 경과 시간을 결정하는 것을 포함한다.
예시적인 실시예에 있어서, 상기 타임 포인터들은 일정 시간 간격을 두고 할당된다.
예시적인 실시예에 있어서, 상기 타임 포인터들은 로그 스케일 방식에 따라 결정되는 상이한 시간 간격들을 두고 할당되며, 상기 상이한 시간 간격들에 각각 대응하고 대응하는 시간 간격 마다 업데이트되는 테이블들을 이용하여 상기 타임 포인터들이 관리된다.
예시적인 실시예에 있어서, 상기 순차적으로 프로그램된 프로그램 유니트들은 인덱싱 방식을 이용하여 관리된다.
예시적인 실시예에 있어서, 상기 타임 포인터들에 각각 할당된 프로그램 유니트들의 인덱스 값들은 프로그램 경과 시간의 증가를 나타내도록 쉬프트된다.
예시적인 실시예에 있어서, 상기 방법은 마지막으로 프로그램된 프로그램 유니트의 타임 포인터를 관리하는 것을 더 포함한다.
예시적인 실시예에 있어서, 상기 읽기 요청시 상기 마지막으로 프로그램된 프로그램 유니트의 타임 포인터에 의거하여 읽기 요청된 프로그램 유니트의 프로그램 경과 시간이 특정 시간을 경과하였는 지의 여부를 판별하는 것을 더 포함한다.
예시적인 실시예에 있어서, 상기 방법은 상기 읽기 요청된 프로그램 유니트에 대응하는 타임 포인터가 존재하는 지의 여부는 상기 읽기 요청된 프로그램 유니트의 프로그램 경과 시간이 특정 시간을 경과하지 않은 것으로 판별될 때 행해지는 것을 더 포함한다.
본 발명의 또 다른 특징은 불 휘발성 저장 매체와; 상기 불 휘발성 저장 매체의 프로그램 유니트들의 프로그램 경과 시간들을 관리하는 메모리 제어기를 포함하는 메모리 시스템을 제공하는 것이다. 상기 메모리 제어기는 순차적으로 프로그램되는 프로그램 유니트들 중 일부에 타임 포인터들을 할당하고, 그리고 읽기 요청된 프로그램 유니트에 대응하는 타임 포인터가 존재하지 않을 때, 상기 메모리 제어기는 상기 타임 포인터들이 할당된 프로그램 유니트들 중, 상기 읽기 요청된 프로그램 유니트에 인접한, 프로그램 유니트들의 타임 포인터들에 의거하여 상기 읽기 요청된 프로그램 유니트의 프로그램 경과 시간을 결정한다.
예시적인 실시예에 있어서, 상기 메모리 제어기는 로그 스케일 방식에 따라 결정되는 상이한 시간 간격들을 두고 할당되도록 상기 타임 포인터들을 관리하되, 상기 상이한 시간 간격들에 각각 대응하고 대응하는 시간 간격 마다 업데이트되는 테이블들을 이용하여 상기 타임 포인터들을 관리한다.
예시적인 실시예에 있어서, 상기 메모리 제어기는 마지막으로 프로그램된 프로그램 유니트의 타임 포인터를 관리한다.
예시적인 실시예에 있어서, 읽기 동작이 요청될 때, 상기 메모리 제어기는 상기 마지막으로 프로그램된 프로그램 유니트의 타임 포인터에 의거하여 읽기 요청된 프로그램 유니트의 프로그램 경과 시간이 특정 시간을 경과하였는 지의 여부를 판별한다.
예시적인 실시예에 있어서, 상기 읽기 요청된 프로그램 유니트의 프로그램 경과 시간이 특정 시간을 경과하지 않은 것으로 판별될 때, 상기 메모리 제어기는 상기 읽기 요청된 프로그램 유니트에 대응하는 타임 포인터가 존재하는 지의 여부를 판별한다.
예시적인 실시예에 있어서, 상기 읽기 요청된 프로그램 유니트의 프로그램 경과 시간이 특정 시간을 경과한 것으로 판별될 때, 상기 메모리 제어기는 상기 읽기 요청된 프로그램 유니트에 대응하는 타임 포인터가 존재하는 지의 여부는 판별되지 않는다.
예시적인 실시예에 있어서, 상기 불 휘발성 저장 매체는 전하 트랩 플래시 메모리 셀들을 포함한다.
본 발명의 실시예들에 의하면, 프로그램된 메모리 영역의 프로그램 경과 시간을 관리함으로써 디폴트 읽기 전압이 아닌 좀 더 효과적인 읽기 전압을 이용하여 실패없이 바로 읽기 동작을 수행할 수 있고, 평균적인 읽기 레이턴시를 줄일 수 있다.
도 1은 전하 트랩 플래시 셀의 수직 구조를 개략적으로 보여주는 도면이다.
도 2는 패스트 전하 손실 현상에 따라 변화되는 CTF 셀의 문턱 전압의 변화를 보여주는 도면이다.
도 3은 패스트 전하 손실 현상에 따라 변화되는 문턱 전압 산포들을 보여주는 도면이다.
도 4a 내지 도 4c는 본 발명의 예시적인 실시예에 따른 인덱싱 방법을 설명하기 위한 도면들이다.
도 5는 프로그램 순서와 블록 어드레스들 사이의 관계를 보여주는 도면이다.
도 6a는 본 발명의 예시적인 실시예에 따른, 타임 포인터와 인덱스 사이의 관계를 보여주는 도면이다.
도 6b는 본 발명의 다른 예시적인 실시예에 따른, 타임 포인터와 인덱스 사이의 관계를 보여주는 도면이다.
도 7은 본 발명의 예시적인 실시예에 따른 메모리 시스템을 개략적으로 보여주는 블록도이다.
도 8은 본 발명의 예시적인 실시예에 따른, 도 7에 도시된 메모리 제어기를 개략적으로 보여주는 블록도이다.
도 9는 본 발명의 예시적인 실시예에 따른, 도 7에 도시된 저장 매체를 개략적으로 보여주는 블록도이다.
도 10은 본 발명의 일 실시예에 따른 메모리 제어기의 프로그램 경과 시간 검색 방법을 개략적으로 보여주는 흐름도이다.
도 11은 본 발명의 다른 예시적인 실시예에 따른 메모리 시스템을 개략적으로 보여주는 블록도이다.
도 12는 본 발명의 다른 실시예에 따른 메모리 제어기의 프로그램 경과 시간 검색 방법을 개략적으로 보여주는 흐름도이다.
도 13은 본 발명의 일 실시예에 따른 메모리 시스템의 쓰기 흐름을 개략적으로 보여주는 도면이다.
도 14는 본 발명의 일 실시예에 따른 메모리 제어기의 프로그램 제어 방법을 개략적으로 보여주는 흐름도이다.
도 15는 본 발명의 일 실시예에 따른 메모리 시스템의 읽기 흐름을 개략적으로 보여주는 도면이다.
도 16a은 본 발명의 일 실시예에 따른 메모리 제어기의 읽기 제어 방법을 개략적으로 보여주는 흐름도이다.
도 16b는 본 발명의 다른 실시예에 따른 메모리 제어기의 읽기 제어 방법을 개략적으로 보여주는 흐름도이다.
도 17은 본 발명의 예시적인 실시예에 따른 메모리 블록의 3차원 구조를 보여주는 사시도이다.
도 18은 도 17에 도시된 메모리 블록(BLK1)의 등가 회로도이다.
도 19는 본 발명의 실시예에 따른 컴퓨팅 시스템을 개략적으로 보여주는 블록도이다.
도 20은 본 발명의 실시예에 따른 반도체 드라이브를 개략적으로 보여주는 블록도이다.
도 21은 본 발명의 예시적인 실시예에 따른 유저 장치를 개략적으로 보여주는 블록도이다.
도 22는 본 발명의 실시예에 따른 메모리 카드(memory card)를 개략적으로 보여주는 블록도이다.
도 23은 도 22의 메모리 카드가 사용되는 다양한 응용 분야들을 보여주는 도면이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 또한 명세서 전체에 걸쳐서 동일한 참조번호로 표시된 부분들은 동일한 구성요소를 나타낸다.
본 명세서에서 ‘및/또는’이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, ‘연결되는/결합되는’이란 표현은 다른 구성요소와 직접적으로 연결되거나 다른 구성요소를 통해 간접적으로 연결되는 것을 포함하는 의미로 사용된다. 본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 ‘포함한다’ 또는 ‘포함하는’으로 언급된 구성요소, 단계, 동작 및 소자는 하나 이상의 다른 구성요소, 단계, 동작, 소자 및 장치의 존재 또는 추가를 의미한다.
도 1은 전하 트랩 플래시 셀의 수직 구조를 개략적으로 보여주는 도면이다.
도 1를 참조하면, 전하 트랩 플래시 셀(이하, CTF 셀이라 칭함)은 정보를 저장하기 위한 정보 저장층(1)을 포함한다. 정보 저장층(1)은 채널(2) 상에 순차적으로 적층된 제 1 산화막(11), 전하 트랩층(charge trap layer)으로서 질화막(12), 그리고 제 2 산화막(13)을 포함한다. CTF 셀의 프로그래밍을 위해서, 프로그램 전압이 제어 게이트(3)에 인가되고 CTF 셀의 채널에 소정 전압(예를 들면, 0V)이 인가될 것이다. 이러한 바이어스 조건에 따르면, 전계가 제어 게이트(3)에서 채널(2) 방향으로 형성되고, 그러한 전계에 의해서 전하들이 채널(2)에서 전하 트랩층(12)으로 이동될 것이다. 따라서, 이러한 바이어스 조건하에서 CTF 셀이 프로그램될 것이다. CTF 셀의 소거를 위해서, 소정 전압(예를 들면, 0V 또는 그 보다 높은 전압)이 제어 게이트(3)에 인가되고 CTF 셀의 채널(2)에 소거 전압(예를 들면, 20V)이 인가될 것이다. 이러한 바이어스 조건에 따르면, 전계가 벌크에서 제어 게이트 방향으로 형성되며, CTF 셀은 소거될 것이다.
도 1에 있어서, 프로그래밍을 통해 전하 트랩층(12)에 트랩된 전하들의 위치는 예시적이며, 트랩된 전하들의 위치가 CTF 셀의 특성에 따라 변화됨은 잘 이해될 것이다. 프로그래밍을 통해 전하 트랩층(12)에 트랩된 전하들은 시간의 경과에 따라 재배열 현상, 채널(2)로의 유실 (도 1에서 수직 방향으로 표시된 화살표 참조), 질화막(12)을 통한 이동 (도 1에서 수평 방향으로 표시된 화살표 참조), 등과 같은 다양한 현상들로 인해 감소될 것이다. 이러한 현상은 패스트 전하 손실 현상(fast charge loss phenomenon)이라 불린다. 패스트 전하 손실 현상이 발생하면, CTF 셀의 문턱 전압은 낮아질 것이다. 나아가, 프로그램된 CTF 셀들의 문턱 전압들의 산포에 대한 처짐(drooping)과 퍼짐(spreading)이 발생할 것이다.
도 2는 패스트 전하 손실 현상에 따라 변화되는 CTF 셀의 문턱 전압의 변화를 보여주는 도면이다. 도 3은 패스트 전하 손실 현상에 따라 변화되는 문턱 전압 산포들을 보여주는 도면이다.
도 2에서, 가로축은 프로그램 동작이 수행된 후 경과하는 시간을 나타내고, 세로축은 프로그램된 CTF 셀의 문턱 전압을 나타낼 것이다. 프로그램 동작이 완료된 직후 CTF 셀은 목표 문턱 전압(예를 들면, 검증 전압과 같거나 그 보다 높은 전압)을 가질 것이다. 프로그램 동작이 완료되고 시간이 경과함에 따라, 도 2에서 알 수 있듯이, CTF 셀의 문턱 전압은 점차적으로 감소한다. 이는 앞서 설명된 패스트 전하 손실 현상으로 인해 전하 트랩층에 트랩된 전하들이 유실되기 때문이다. 그렇게 유실된 전하들은 CTF 셀의 문턱 전압에 영향을 미칠 것이다. 예를 들면, CTF 셀의 문턱 전압이 낮아질 것이다. CTF 셀의 문턱 전압의 변화는 읽기 실패(read fail)가 발생함을 의미한다. 도 2에 도시된 바와 같이, 프로그램된 CTF 셀의 문턱 전압은 특정 시간(t1)이 경과할 때까지 계속해서 변화되고, 특정 시간(t1)이 경과한 후 변화되지 않을 것이다. 비록 프로그램된 CTF 셀의 문턱 전압이 특정 시간(t1) 이후에 변화하지 않는 것으로 도시되어 있지만, 프로그램된 CTF 셀의 문턱 전압은 특정 시간(t1) 이후에 변화될 수도 있다. 여기서, 본 발명이 패스트 전하 손실 현상으로 인한 프로그램된 CTF 셀의 문턱 전압의 변화에 관련되어 있다는 점에 유의해야 할 것이다. 문턱 전압의 변화를 나타내는 그래프의 형상은 예시적이며, 본 발명은 그것에 국한되지 않을 것이다.
도 3을 참조하면, 프로그램된 CTF 셀들의 문턱 전압들은 프로그램 동작이 수행된 직후에 "21"에 대응하는 문턱 전압 산포(또는, 목표 문턱 전압 산포)를 형성할 것이다. 문턱 전압 산포(21)에 속한 CTF 셀들에 저장된 데이터는 읽기 전압(VR1)을 이용하여 읽혀질 것이다. 이러한 경우, CTF 셀들에 저장된 데이터는 정상적으로 읽혀질 것이다. 프로그램된 CTF 셀들의 문턱 전압들은 프로그램 동작이 수행되고 특정 시간(t1)이 경과한 후에 "22"에 대응하는 문턱 전압 산포를 형성할 것이다. 문턱 전압 산포(22)에 속한 CTF 셀들에 저장된 데이터가 읽기 전압(VR1)을 이용하여 읽혀지는 경우, CTF 셀들에 저장된 데이터는 정상적으로 읽혀지지 않을 것이다. 즉, 읽기 실패가 발생할 것이다. 읽기 실패가 발생하는 경우, 일반적으로, CTF 셀들에 저장된 데이터가 정상적으로 읽혀질 때까지 변경된 읽기 전압을 이용하여 읽기 동작(또는, 읽기 재시도 동작(read retry operation))이 반복적으로 행해질 것이다. 이는 읽기 레이턴시(read latency)의 증가를 의미한다.
만약 프로그램 동작이 수행되고 특정 시간(t1)이 경과한 후에 형성되는 문턱 전압 산포(22)를 기준으로 결정된 읽기 전압(VR2)을 이용하여 읽기 동작이 수행되면, 프로그램 동작이 수행되고 특정 시간(t1)이 경과한 후에 행해지는 읽기 동작은 정상적으로 수행될 것이다. 하지만, 특정 시간(t1)이 경과하기 이전에 읽기 동작이 수행되는 경우, 앞서 설명된 바와 같이, 읽기 실패가 발생할 것이다. 이는 프로그램 완료 시간과 특정 시간(t1) 사이에 행해지는 읽기 동작의 읽기 조건(예를 들면, 읽기 전압)이 변경되어야 함을 의미한다. 여기서, 읽기 조건이 읽기 전압에 국한되지 않음은 잘 이해될 것이다. 이는 이후 상세히 설명될 것이다. 본 발명은 프로그램 완료 시간과 특정 시간(t1) 사이에 행해지는 읽기 동작의 읽기 조건(또는, 센싱 조건)을 제어하는 데 그 특징이 있다. 읽기 동작의 읽기 조건은, 예를 들면, CTF 셀의 프로그램 동작이 완료된 후 경과한 시간(이하, 프로그램 경과 시간이라 칭함)에 의거하여 변경될 것이다. CTF 셀의 프로그램 경과 시간에 따라 읽기 조건을 변경함으로써 패스트 전하 손실 현상으로 인한 읽기 실패를 방지하는 것이 가능하다. 다시 말해서, CTF 셀의 프로그램 경과 시간에 따라 읽기 조건을 변경함으로써 패스트 전하 손실 현상으로 인해 변화되는 CTF 셀의 문턱 전압을 판별하기 위한 읽기 조건을 실시간으로 최적화하는 것이 가능하다.
도 2에 도시된 문턱 전압의 변화는 예시적이다. 문턱 전압의 변화 속도 그리고 특정 시간(t1)은 고정된 것이 아니라 다양한 조건들(예를 들면, 페이지, 워드 라인, 내구성(endurance), 프로그램 모드, 소거 모드, 읽기 모드, 등)에 따라 가변적이다. 따라서, 본 발명의 경우, 문턱 전압의 변화 속도 및 특정 시간(t1)은 특정 속도 및 시간에 제한되지 않는다. 읽기 조건을 최적화하기 위해서는 특정 시간(t1)을 기준으로 프로그램된 메모리 영역들의 어드레스 정보 및 프로그램 시간을 포함하는 엔트리들을 구성하고 그렇게 구성된 엔트리들을 관리할 필요가 있다. 프로그램된 메모리 영역들 모두의 어드레스 및 프로그램 시간 정보를 포함하는 엔트리들을 개별적으로 관리하는 경우, 관리 오버헤드(또는, 메모리 자원 오버헤드)가 생길 수 있다. 또한, 액세스 요청된 메모리 영역에 대한 읽기 조건(또는, 프로그램 경과 시간)을 결정하기 위해서 모든 엔트리들을 검색할 필요가 있다. 이는 검색 오버헤드가 심각해짐을 의미한다. 본 발명의 경우, 물리적인 블록 내에서 낮은 워드 라인에서 높은 워드 라인으로의 방향으로 프로그램 동작이 진행한다는 점을 이용하여 관리될 엔트리들의 수를 크게 줄일 수 있다. 이는 이하 상세히 설명될 것이다.
도 4a 내지 도 4c는 본 발명의 예시적인 실시예에 따른 인덱싱 방법을 설명하기 위한 도면들이다. 도 5는 프로그램 순서와 블록 어드레스들 사이의 관계를 보여주는 도면이다.
도 4a를 참조하면, 하나의 메모리 블록은 복수의 프로그램 유니트들을 포함한다. 여기서, 프로그램 유니트는 하나 또는 그 보다 많은 페이지들, 하나 또는 그 보다 많은 워드 라인들, 하나 또는 그 보다 많은 섹터들, 등으로 구현될 수 있다. "프로그램 유니트"라는 용어는, 또한, "메모리 영역"이라는 용어와 동일한 의미로 해설될 수 있다. 프로그램 유니트들 각각에는 인덱스 값들이 할당된다. 예를 들면, 하나의 메모리 블록이 N개의 프로그램 유니트들로 구성되는 경우, 인덱스 값들(1~N)이 메모리 블록의 프로그램 유니트들에 각각 할당된다. 인덱스 값들은 메모리 블록이 프로그래밍을 위해서 선택될 때 할당될 것이다. 이러한 인덱싱 방식은 모든 메모리 블록들에 동일하게 적용될 것이다. 도 4a에는 인덱스 값들이 위에서 아래로 향하는 방향으로 증가하는 예가 도시되어 있지만, 프로그램 유니트들은 물리적 위치를 기준으로 아래에서 위로 향하는 방향으로 프로그램될 것이다.
선택된 메모리 블록이 데이터로 채워지면, 다른 메모리 블록이 프로그래밍을 위해서 선택될 것이다. 예를 들면, 도 4b를 참조하면, 245의 블록 어드레스를 갖는 메모리 블록의 프로그램 유니트들에는 인덱스 값들(1~N)이 각각 할당되고, 이러한 조건 하에서 프로그램 동작이 수행될 것이다. 245의 블록 어드레스를 갖는 메모리 블록이 데이터로 채워지면, 새로운 메모리 블록이 할당될 것이다. 예를 들면, 102의 블록 어드레스를 갖는 메모리 블록이 새롭게 할당된다고 가정하자. 이러한 경우, 245의 블록 어드레스를 갖는 메모리 블록의 프로그램 유니트들에는 새로운 인덱스 값들(N+1~2N)이 각각 할당되고, 102의 블록 어드레스를 갖는 메모리 블록의 프로그램 유니트들에는 인덱스 값들(1~N)이 각각 할당된다. 즉, 102의 블록 어드레스를 갖는 메모리 블록의 프로그램 유니트들에는 인덱스 값들(1~N)이 각각 할당될 때, 245의 블록 어드레스를 갖는 메모리 블록의 프로그램 유니트들의 인덱스 값들은 N만큼 각각 증가될 것이다.
이러한 인덱싱 방법에 따르면, 도 4c에 도시된 바와 같이, 프로그램 경과 시간이 증가함에 따라 인덱스 값 역시 증가할 것이다. 예를 들면, 457의 블록 어드레스를 갖는 메모리 블록의 인덱스 값들(1~N)은 257의 블록 어드레스를 갖는 메모리 블록의 인덱스 값들(10N+1~11N)보다 작다. 특정 시간(t1)을 기준으로 메모리 블록들의 인덱스 값들이 관리될 것이다. 이는 특정 시간(t1)을 기준으로 인덱스 값들이 관리될 메모리 블록들의 수가 결정될 수 있음을 의미한다. 관리될 메모리 블록들의 블록 어드레스들은 프로그램 순서에 따라 관리될 것이다. 예를 들면, 프로그램 순서와 블록 어드레스들 사이의 관계를 보여주는 도 5를 참조하면, 상대적으로 낮은 프로그램 순서 값에 대응하는 블록 어드레스를 갖는 메모리 블록은 상대적으로 높은 프로그램 순서 값에 대응하는 블록 어드레스를 갖는 메모리 블록과 비교하여 볼 때 상대적으로 최근에 프로그램된 메모리 블록일 것이다. 예를 들면, 1의 프로그램 순서 값에 대응하는 블록 어드레스(457)를 갖는 메모리 블록은 2의 프로그램 순서 값에 대응하는 블록 어드레스(5843)를 갖는 메모리 블록과 비교하여 볼 때 상대적으로 최근에 프로그램된 메모리 블록일 것이다. 이는 프로그램 순서 값이 증가함에 따라 프로그램 경과 시간이 증가함을 의미한다.
이하, 도 5에 도시된 테이블을 타임 스탬프 블록 어드레스 테이블(TS_BAT)이라 칭할 것이다. 타임 스탬프 블록 어드레스 테이블(TS_BAT)은 읽기 요청된 메모리 영역(예를 들면, 하나 또는 그 보다 많은 프로그램 유니트들로 구성됨)이 속하는 메모리 블록이 특정 시간(t1) 내에 프로그램된 메모리 블록인 지의 여부를 판별하는 데 사용될 것이다. 즉, 읽기 요청된 메모리 영역이 속하는 메모리 블록의 어드레스가 타임 스탬프 블록 어드레스 테이블(TS_BAT)에 포함되어 있는 지의 여부를 판별하는 것이 가능하다. 읽기 요청된 메모리 영역이 속하는 메모리 블록의 어드레스가 타임 스탬프 블록 어드레스 테이블(TS_BAT)에 포함되어 있음은 읽기 조건(예를 들면, 도 3의 읽기 전압들(VR1, VR2) 사이에 존재하는 읽기 전압)이 변경되어야 함을 의미한다. 이에 반해서, 읽기 요청된 메모리 영역이 속하는 메모리 블록의 어드레스가 타임 스탬프 블록 어드레스 테이블(TS_BAT)에 포함되어 있지 않음은 읽기 요청된 메모리 영역의 프로그램 경과 시간이 특정 시간(t1)을 초과하였음을 의미한다. 즉, 디폴트 읽기 조건(예를 들면, 도 3의 읽기 전압(VR2))을 이용하여 메모리 영역이 액세스될 수 있다.
본 발명의 경우, 읽기 요청된 메모리 영역의 프로그램 경과 시간을 결정하기 위해서 타임 스탬프 블록 어드레스 테이블(TS_BAT)과 함께 타임 포인터들이 사용될 것이다. 타임 스탬프 블록 어드레스 테이블(TS_BAT)을 이용하여 관리되는 메모리 블록들의 모든 프로그램 유니트들에 대한 프로그램 시간과 어드레스 정보 대신 타임 포인터들을 이용하여 프로그램 경과 시간을 결정할 것이다. 이를 위해서, 도 5에 도시된 바와 같이, 타임 스탬프 블록 어드레스 테이블(TS_BAT)을 이용하여 관리되는 메모리 블록들의 프로그램 유니트들의 인덱스 값들 중 일부에 타임 포인터들(PT_0~PT_i-1)이 각각 할당될 것이다. 여기서, 타임 포인터(PT_0)는 프로그램 경과 시간이 0(이하, 프로그램 완료 시간이라 칭함)인 프로그램 유니트를 지정하는 데 사용되고, 타임 포인터(PT_i-1)는 프로그램 경과 시간이 특정 시간(t1)인 프로그램 유니트를 지정하는 데 사용될 것이다. 타임 포인터들(PT_0~PT_i-1) 사이에 존재하는 타임 포인터들(PT_1~PT_i-1)은 일정 시간의 간격(예를 들면, 프로그램 완료 시간과 특정 시간(t1) 사이의 시간 간격이 미리 설정된 시간 단위로 분할되고, 분할된 시간 영역들에 각각 타임 포인터들이 할당됨)을 두고 타임 스탬프 블록 어드레스 테이블(TS_BAT)의 메모리 블록들의 프로그램 유니트들에 각각 할당될 수 있다. 또는, 타임 포인터들(PT_0~PT_i-1) 사이에 존재하는 타임 포인터들(PT_1~PT_i-1)은 일정하지 않은 시간의 간격(예를 들면, 프로그램 완료 시간과 특정 시간(t1) 사이의 시간 간격이 0.01초, 0.1초, 1초, 그리고 10초과 같은 로그 스케일 방식으로 분할되고, 분할된 시간 영역들 각각에 타임 포인터들이 할당됨)을 두고 타임 스탬프 블록 어드레스 테이블(TS_BAT)의 메모리 블록들의 프로그램 유니트들에 각각 할당될 수 있다. 로그 스케일 방식을 이용하여 타임 포인터들 및 인덱스 값들을 관리하는 방식이 이후 상세히 설명될 것이다. 본 발명의 경우, 따라서, 타임 스탬프 블록 어드레스 테이블(TS_BAT)과 타임 포인터들(PT_0~PT_i-1)만을 이용하여 읽기 요청된 메모리 영역의 프로그램 경과 시간을 결정하는 것이 가능하다. 이는 이후 상세히 설명될 것이다.
예시적인 실시예에 있어서, 타임 포인터들(PT_0~PT_i-1)에는 서로 다른 읽기 조건들이 각각 할당될 것이다. 예를 들면, 타임 포인터들(PT_0~PT_i-1)에는 도 3에 도시된 읽기 전압들(VR1, VR2) 사이에 존재하는 서로 다른 읽기 전압들을 이용하는 읽기 동작들이 수행되는 읽기 조건들이 각각 할당될 것이다.
도 6a는 본 발명의 예시적인 실시예에 따른, 타임 포인터와 인덱스 사이의 관계를 보여주는 도면이다.
도 6a을 참조하면, 타임 포인터들(PT_0~PT_i-1)은 인덱스 값들에 각각 맵핑될 것이다. 인덱스 값이 상대적으로 낮음은 프로그램 경과 시간이 짧음을 의미하고, 인덱스 값이 상대적으로 높음은 프로그램 경과 시간이 길음을 의미한다. 프로그램 경과 시간이 증가함에 따라, 타임 포인터-인덱스 테이블(TP_INDT)의 인덱스 값들은 변화될 것이다. 예를 들면, 도 6a에 도시된 바와 같이, 타임 포인터-인덱스 테이블(TP_INDT)의 인덱스 값들은 프로그램 경과 시간의 증가를 나타내도록 쉬프트될 것이다. 25의 인덱스 값을 갖는 프로그램 유니트의 프로그램 동작이 완료될 때, 25의 인덱스 값에는 타임 포인터(PT_0)가 할당될 것이다. 25의 인덱스 값을 갖는 프로그램 유니트의 프로그램 동작이 완료되고 특정 시간(t1)이 경과할 때까지 프로그램 동작이 수행되지 않은 경우, 타임 포인터들(PT_0~PT_i-1)은 동일한 인덱스 값 즉, 25의 인덱스 값을 각각 가질 것이다.
도 5 및 도 6a을 참조하여 설명된 타임 스탬프 블록 어드레스 테이블(TS_BAT)과 타임 포인터-인덱스 테이블(TP_INDT)을 이용하여 읽기 요청된 메모리 영역에 대한 프로그램 경과 시간을 결정하는 것이 가능하다. 예를 들면, 읽기 요청된 메모리 영역의 블록 어드레스가 타임 스탬프 블록 어드레스 테이블(TS_BAT)에 포함되어 있는 지의 여부를 판별할 것이다. 읽기 요청된 메모리 영역의 블록 어드레스가 타임 스탬프 블록 어드레스 테이블(TS_BAT)에 포함되어 있음은 읽기 요청된 메모리 영역의 프로그램 경과 시간이 특정 시간(t1)을 초과하지 않았음을 의미한다. 이에 반해서, 읽기 요청된 메모리 영역의 블록 어드레스가 타임 스탬프 블록 어드레스 테이블(TS_BAT)에 포함되어 있지 않음은 읽기 요청된 메모리 영역의 프로그램 경과 시간이 특정 시간(t1)을 초과하였음을 의미한다.
읽기 요청된 메모리 영역의 블록 어드레스가 타임 스탬프 블록 어드레스 테이블(TS_BAT)에 포함되어 있는 경우, 읽기 요청된 메모리 영역 즉, 프로그램 유니트의 인덱스 값이 판별될 것이다. 이는 프로그램 유니트들과 인덱스 값들의 관계를 관리하는 테이블을 이용하여 행해질 것이다. 그렇게 판별된 인덱스 값에 의거하여 타임 포인터가 결정될 것이다. 예를 들면, 판별된 인덱스 값이 234인 경우, 타임 포인터-인덱스 테이블(TP_INDT)의 타임 포인터들 중 하나 즉, 타임 포인터(PT_2)가 선택될 것이다. 또는, 판별된 인덱스 값이 100인 경우, 타임 포인터-인덱스 테이블(TP_INDT)의 타임 포인터들 중, 100의 인덱스 값에 근접한 인덱스 값에 대응하는, 타임 포인터(예를 들면, PT_1)가 선택될 것이다. 그렇게 선택된 타임 포인터는 읽기 요청된 메모리 영역에 대한 읽기 조건을 결정하는 데 사용되며, 이는 이후 상세히 설명될 것이다.
예시적인 실시예에 있어서, 읽기 요청된 메모리 영역의 블록 어드레스가 타임 스탬프 블록 어드레스 테이블(TS_BAT)에 포함되어 있는 지의 여부를 판별할 때, 타임 스탬프 블록 어드레스 테이블(TS_BAT)에 저장된 블록 어드레스들을 그대로 검색하거나, 바이너스 검색을 위해서 블록 어드레스들을 정렬하고 정렬된 블록 어드레스들을 검색하는 것이 가능하다. 바이너스 검색을 위해서 정렬된 블록 어드레스들을 검색하는 것이 바람직하다.
도 4a 내지 도 4c, 도 5, 그리고 도 6a을 참조하여 설명된 방식에 따라 읽기 요청된 메모리 영역에 대한 타임 포인터를 결정하는 기술에 따르면, 메모리 자원의 오버헤드 및 검색 오버헤드를 줄이는 것이 가능하다. 이는 본 발명에 따른 프로그램 경과 시간 관리 및 검색 기술들이 적용되는 메모리 시스템의 성능이 향상될 수 있음을 의미한다.
도 6a에는 타임 포인터들이 동일한 시간 간격을 두고 할당된 실시예가 도시되어 있다. 하지만, 본 발명이 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 앞서 언급된 바와 같이, 로그 스케일 방식을 이용하여 타임 포인터들 및 인덱스 값들을 관리하는 것이 가능하다. 이는 도 6b를 참조하여 설명될 것이다.
도 6b는 본 발명의 다른 예시적인 실시예에 따른, 타임 포인터와 인덱스 사이의 관계를 보여주는 도면이다.
타임 포인터들은 일정하지 않은 시간의 간격을 두고 타임 스탬프 블록 어드레스 테이블(TS_BAT)의 메모리 블록들의 프로그램 유니트들에 각각 할당될 수 있다. 프로그램 완료 시간(예를 들면, 0초)과 특정 시간(t1) (예를 들면, 100초) 사이에 프로그램된 프로그램 유니트들이 관리된다고 가정하자. 이러한 가정에 따르면, 프로그램 완료 시간과 특정 시간(t1) 사이의 시간 간격이 0.01초, 0.1초, 1초, 그리고 10초과 같은 로그 스케일 방식으로 분할되고, 분할된 시간 영역들 각각에 타임 포인터들이 할당될 수 있다. 이러한 경우, 타임 포인터-인덱스 테이블은 인덱스 값들이 0.01초 마다 쉬프트되는 제 1 타임 포인터-인덱스 테이블(TS_IDDT1), 인덱스 값들이 0.1초 마다 쉬프트되는 제 2 타임 포인터-인덱스 테이블(TS_IDDT2), 인덱스 값들이 1초 마다 쉬프트되는 제 3 타임 포인터-인덱스 테이블(TS_IDDT3), 그리고 인덱스 값들이 10초 마다 쉬프트되는 제 4 타임 포인터-인덱스 테이블(TS_IDDT4)을 포함할 것이다. 제 1 타임 포인터-인덱스 테이블(TS_IDDT1)을 이용하여 관리되는 인덱스 값들은 시간의 경과에 따라 제 2 타임 포인터-인덱스 테이블(TS_IDDT2)로 순차적으로 쉬프트될 것이다. 마찬가지로, 제 2 타임 포인터-인덱스 테이블(TS_IDDT2)을 이용하여 관리되는 인덱스 값들은 시간의 경과에 따라 제 3 타임 포인터-인덱스 테이블(TS_IDDT3)로 순차적으로 쉬프트될 것이다. 제 3 타임 포인터-인덱스 테이블(TS_IDDT3)을 이용하여 관리되는 인덱스 값들은 시간의 경과에 따라 제 4 타임 포인터-인덱스 테이블(TS_IDDT4)로 순차적으로 쉬프트될 것이다.
이러한 로그 스케일 방식을 이용하여 인덱스 값들을 관리하는 경우, 메모리 자원의 오버헤드 및 검색 오버헤드를 더 많이 줄이는 것이 가능하다. 이는 본 발명에 따른 프로그램 경과 시간 관리 및 검색 기술들이 적용되는 메모리 시스템의 성능이 더욱 향상될 수 있음을 의미한다.
도 7은 본 발명의 예시적인 실시예에 따른 메모리 시스템을 개략적으로 보여주는 블록도이다.
도 7을 참조하면, 본 발명의 실시예에 따른 메모리 시스템(1000)은 메모리 제어기(1200)와 멀티-비트/멀티-레벨 메모리 장치로 구현되는 저장 매체(1400)를 포함한다. 메모리 제어기(1200)는 외부(예를 들면, 호스트)로부터의 요청(예를 들면, 쓰기 요청, 읽기 요청, 등)에 응답하여 저장 매체(1400)를 제어한다. 메모리 제어기(1200)는 외부 요청없이 내부적인 요청(예를 들면, 서든 파워-오프와 관련된 동작, 웨어-레벨링 동작, 읽기 교정 (read reclaim) 동작, 프로그램 경과 시간 관리 및 검색 동작, 등)에 따라 저장 매체(1400)를 제어한다. 저장 매체(1400)는 메모리 제어기(1200)의 제어에 응답하여 동작하며, 데이터 정보를 저장하는 데 사용된다. 저장 매체(1400)는 하나 또는 그 보다 많은 메모리 칩들로 구성될 수 있다. 저장 매체(1400)와 메모리 제어기(1200)는 하나 또는 그 보다 많은 채널들을 통해 통신한다. 저장 매체(1400)는, 예를 들면, 낸드 플래시 메모리 장치를 포함한다. 저장 매체(1400)를 구현하는 데 사용되는 메모리 장치가 낸드 플래시 메모리 장치에 국한되지 않음은 잘 이해될 것이다. 특히, 저장 매체(1400)를 구현하는 데 사용되는 메모리 장치는 전하 트랩 플래시(CTF) 셀들로 구성될 것이다.
메모리 제어기(1200)는 제 1 테이블(1242)과 제 2 테이블(1244)을 포함할 것이다. 제 1 테이블(1242)은 도 5를 참조하여 설명된 타임 스템프 블록 어드레스 테이블(TS_BAT)이고, 제 2 테이블(1244)은 도 6을 참조하여 설명된 타임 포인터-인덱스 테이블(TP_INDT)일 것이다. 제 3 테이블(1246)은, 도 4c을 참조하여 설명된 바와 같이, 프로그램 경과 시간의 관리 대상인 메모리 블록들의 인덱스 값들을 관리하기 위한 인덱스 테이블일 것이다.
새로운 메모리 블록이 할당될 때, 메모리 제어기(1200)는 도 4c를 참조하여 설명된 바와 같이 새롭게 할당된 메모리 블록의 블록 어드레스를 포함하도록 제 1 테이블(1242)을 관리하고, 도 4b를 참조하여 설명된 바와 같이 인덱스 값들을 변경하도록 제 3 테이블(1246)을 관리할 것이다. 쓰기 요청된 메모리 영역이 프로그램되면, 메모리 제어기(1200)는, 도 6을 참조하여 설명된 바와 같이, 프로그램 완료된 메모리 영역에 대응하는 프로그램 유니트(들)에 타임 포인터(예를 들면, PT_0)가 할당되도록 제 2 테이블(1244) 즉, 타임 포인터-인덱스 테이블(TP_INDT)를 관리할 것이다.
메모리 제어기(1200)는 읽기 요청이 입력될 때 읽기 요청된 메모리 영역의 정보가 제 1 테이블(1242)에 포함되어 있는 지의 여부를 판별할 것이다. 읽기 요청된 메모리 영역의 정보가 제 1 테이블(1242)에 포함된 경우, 메모리 제어기(1200)는 읽기 요청된 메모리 영역에 대응하는 인덱스 값에 따라 타임 포인터를 결정할 것이다. 메모리 제어기(1200)는 결정된 타임 포인터에 대응하는 읽기 조건에 따라 읽기 동작이 수행되도록 저장 매체(1400)를 제어할 것이다. 그렇게 결정된 타임 포인터에 대응하는 읽기 조건은 다양한 방식들을 통해 저장 매체(1400)에 통보될 것이다. 예를 들면, 명령, 어드레스, 데이터, 특정 핀, 등을 이용하여 읽기 조건이 저장 매체(1400)에 통보될 것이다. 읽기 요청된 메모리 영역의 정보가 제 1 테이블(1242)에 포함되어 있지 않은 경우, 메모리 제어기(1200)는 디폴트 읽기 조건(예를 들면, 도 2의 문턱 전압 산포(22)에 대응하는 읽기 조건)에 따라 읽기 동작이 수행되도록 저장 매체(1400)를 제어할 것이다.
예시적인 실시예에 있어서, 메모리 제어기(1200)와 저장 매체(1400)는 멀티-미디어 카드(multi-media card: MMC)를 구성하거나, 스마트 폰과 같은 휴대용 전자 장치의 보드에 직접 실장되는 내장형 멀티-미디어 카드(embedded MMC: eMMC)를 구성할 것이다.
예시적인 실시예에 있어서, 논리 어드레스 영역에 대한 외부의 쓰기 요청은 랜덤하게 행해지는 반면에, 물리 어드레스 영역에 대한 쓰기 동작은 순차적으로 행해질 것이다. 물리 어드레스 영역에 대한 쓰기 동작이 순차적으로 행해지기 때문에, 타임 포인터들 사이에 존재하는 메모리 영역에 대한 읽기 동작이 요구될 때, 읽기 요청된 메모리 영역에 대한 프로그램 경과 시간은 타임 포인터들 사이에 존재하는 것으로 결정될 것이다. 따라서, 메모리 자원의 오버헤드 및 검색 오버헤드가 감소될 수 있다.
도 8은 본 발명의 예시적인 실시예에 따른, 도 7에 도시된 메모리 제어기를 개략적으로 보여주는 블록도이다. 도 8을 참조하면, 메모리 제어기(1200)는 제 1 인터페이스로서 호스트 인터페이스(1210), 제 2 인터페이스로서 메모리 인터페이스(1220), 중앙 처리 장치(CPU) (1230), 버퍼 메모리(1240), 그리고 ECC 회로(1250)를 포함한다.
호스트 인터페이스(1210)는 외부(또는, 호스트)와 인터페이스하도록 구성된다. 메모리 인터페이스(1220)는 도 7에 도시된 저장 매체(1400)와 인터페이스하도록 구성된다. CPU(1230)는 메모리 제어기(1200)의 전반적인 동작을 제어하도록 구성된다. 예를 들면, CPU(1230)는 플래시 변환 계층(Flash Translation Layer: FTL)과 같은 펌웨어를 운용하도록 구성된다. 플래시 변환 계층(FTL)은 다양한 기능들을 수행한다. 예를 들면, 플래시 변환 계층(FTL)은 프로그램 경과 시간 관리 및 검색 동작, 어드레스 맵핑 동작, 읽기 교정 동작, 에러 정정 동작, 등을 수행하는 다양한 계층들을 포함할 것이다. 예를 들면, 플래시 변환 계층(FTL)은 쓰기 요청된 메모리 영역에 대한 프로그램 동작이 완료된 직후 프로그램 완료된 메모리 영역에 타임 포인터(PT_0)가 할당되도록 제 2 테이블(1244)를 업데이트할 것이다. 플래시 변환 계층(FTL)은 읽기 요청된 메모리 영역의 정보가 제 1 테이블(1242)에 있는 지의 여부를 판별하고, 판별 결과에 따라 제 2 테이블(1244)를 이용하여 읽기 요청된 메모리 영역의 읽기 조건을 결정할 것이다. 그렇게 결정된 읽기 조건은 메모리 인터페이스(1220)를 통해 저장 매체(1400)로 전송될 것이다.
버퍼 메모리(1240)는 호스트 인터페이스(1210)를 통해 외부로 전달되는 데이터를 임시 저장하는 데 사용된다. 버퍼 메모리(1240)는 메모리 인터페이스(1220)를 통해 저장 매체(1400)로부터 전달되는 데이터를 임시 저장하는 데 사용된다. 버퍼 메모리(1240)는 저장 매체(1400)를 제어하는 데 필요한 정보(예를 들면, 어드레스 맵핑 정보, 등)를 저장하는 데 사용된다. 예를 들면, 버퍼 메모리(1240)는 DRAM, SRAM, 또는 DRAM과 SRAM의 조합으로 구성될 수 있다. 하지만, 버퍼 메모리(1240)로서 사용되는 메모리 장치가 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 버퍼 메모리(1240)는 도 7를 참조하여 설명된 제 1 내지 제 3 테이블들(1242~1246)을 포함할 것이다. 하지만, 제 1 내지 제 3 테이블들(1242~1246)이 버퍼 메모리(1240)에 저장되는 것에 본 발명이 국한되지 않음은 잘 이해될 것이다. 예를 들면, 제 1 내지 제 3 테이블들(1242~1246)은 별도의 메모리를 이용하여 관리될 것이다. 제 1 내지 제 3 테이블들(1242~1246)은 저장 매체(1400)에 백업될 수 있다. ECC 회로(1250)는 저장 매체(1400)에 저장될 데이터를 부호화하도록 그리고 저장 매체(1400)로부터 읽혀진 데이터를 복호화하도록 구성될 것이다.
예시적인 실시예에 있어서, 메모리 제어기(1200)는, 비록 도면에는 도시되지 않았지만, 저장 매체(1400)에 저장될 데이터를 랜덤화하도록 그리고 저장 매체(1400)로부터 읽혀진 데이터를 디-랜덤화하도록 구성된 랜덤화기를 더 포함할 것이다. 랜덤화기의 일예가 미국특허공개번호 제2010/0088574호에 "DATA STORAGE SYSTEM AND DEVICE WITH RANDOMIZER / DE - RANDOMIZER"라는 제목으로 게재되어 있으며, 이 출원의 레퍼런스로 포함된다.
예시적인 실시예에 있어서, 호스트 인터페이스(1210)는 컴퓨터 버스 표준들, 스토리지 버스 표준들, iFCPPeripheral 버스 표준들, 등 중 하나 또는 그 보다 많은 것들의 조합으로 구성될 수 있다. 컴퓨터 버스 표준들(computer bus standards)은 S-100 bus, Mbus, Smbus, Q-Bus, ISA, Zorro II, Zorro III, CAMAC, FASTBUS, LPC, EISA, VME, VXI, NuBus, TURBOchannel, MCA, Sbus, VLB, PCI, PXI, HP GSC bus, CoreConnect, InfiniBand, UPA, PCI-X, AGP, PCIe, Intel QuickPath Interconnect, Hyper Transport, 등을 포함한다. 스토리지 버스 표준들(Storage bus standards)은 ST-506, ESDI, SMD, Parallel ATA, DMA, SSA, HIPPI, USB MSC, FireWire(1394), Serial ATA, eSATA, SCSI, Parallel SCSI, Serial Attached SCSI, Fibre Channel, iSCSI, SAS, RapidIO, FCIP, 등을 포함한다. iFCPPeripheral 버스 표준들(iFCPPeripheral bus standards)은 Apple Desktop Bus, HIL, MIDI, Multibus, RS-232, DMX512-A, EIA/RS-422, IEEE-1284, UNI/O, 1-Wire, I2C, SPI, EIA/RS-485, USB, Camera Link, External PCIe, Light Peak, Multidrop Bus, 등을 포함한다.
예시적인 실시예에 있어서, 메모리 블록들 각각의 프로그램 유니트들은 어드레스들의 정해진 순서에 따라 순차적으로 프로그램될 것이다. 각 메모리 블록의 프로그램 유니트들 중 일부에 대한 프로그램 경과 시간이 관리되고, 나머지 프로그램 유니트들에 대한 프로그램 경과 시간들은 어드레스들의 정해진 순서에 의거하여 결정될 것이다.
예시적인 실시예에 있어서, 프로그램 유니트들의 프로그램 경과 시간들을 결정할 때, 프로그램 경과 시간들 사이의 차이가 정해진 기준을 넘지 않도록 관리될 것이다. 예를 들면, 프로그램 동작이 짧은 시간에 많이 요청되면, 프로그램 유니트들이 띄엄띄엄 선정될 것이다. 다시 말해서, 타임 포인터들이 띄엄띄엄 프로그램 유니트들에 할당될 것이다. 프로그램 동작이 천천히 요청되면, 프로그램 유니트들이 촘촘히 선정될 것이다. 다시 말해서, 타임 포인터들이 촘촘히 프로그램 유니트들에 할당될 것이다.
도 9는 본 발명의 예시적인 실시예에 따른, 도 7에 도시된 저장 매체를 개략적으로 보여주는 블록도이다.
저장 매체(1400)는 낸드 플래시 메모리 장치와 같은 불 휘발성 메모리 장치일 것이다. 하지만, 본 발명의 저장 매체(1400)가 낸드 플래시 메모리 장치에 국한되지 않음은 잘 이해될 것이다. 특히, 저장 매체(1400)에 포함되는 메모리 셀들은 CTF 셀들일 것이다. 또한, 본 발명의 저장 매체(1400)는 3차원 어레이 구조를 갖도록 구현될 수 있다. 3차원 어레이 구조를 갖는 불 휘발성 메모리 장치는 수직 낸드 플래시 메모리 장치라 불린다. 수직 낸드 플래시 메모리 장치는 미국특허 공개번호들 2013/0017629 및 2013/0051146에 개시되어 있으며, 이 출원의 레퍼런스로 포함될 것이다.
도 9를 참조하면, 저장 매체(1400)는 메모리 셀 어레이(1410), 어드레스 디코더(1420), 전압 발생기(1430), 제어 로직(1440), 페이지 버퍼 회로(1450), 그리고 입출력 인터페이스(1460)를 포함한다.
메모리 셀 어레이(1410)는 행들(예를 들면, 워드 라인들)과 열들(예를 들면, 비트 라인들)의 교차 영역들에 배열된 메모리 셀들을 포함할 것이다. 메모리 셀들 각각은 1-비트 데이터 또는 멀티-비트 데이터를 저장할 것이다. 어드레스 디코더(1420)는 제어 로직(1440)에 의해서 제어되며, 메모리 셀 어레이(1410)의 행들(예를 들면, 워드 라인들, 스트링 선택 라인(들), 접지 선택 라인(들), 공통 소오스 라인, 등)의 선택 및 구동을 행한다. 전압 발생기(1430)는 제어 로직(1440)에 의해서 제어되며, 각 동작에 필요한 전압들(예를 들면, 고전압, 프로그램 전압, 읽기 전압, 검증 전압, 소거 전압, 패스 전압, 벌크 전압, 등)을 발생한다. 전압 발생기(1430)에 의해서 생성된 전압들은 어드레스 디코더(1420)를 통해 메모리 셀 어레이(1410)에 제공된다. 제어 로직(1440)은 저장 매체(1400)의 전반적인 동작을 제어하도록 구성된다.
페이지 버퍼 회로(1450)는 제어 로직(1440)에 의해서 제어되며, 메모리 셀 어레이(1410)로부터 데이터를 읽도록 또는 프로그램 데이터에 따라 메모리 셀 어레이(1410)의 열들(예를 들면, 비트 라인들)을 구동하도록 구성된다. 페이지 버퍼 회로(1450)는 비트 라인들 또는 비트 라인 쌍들에 각각 대응하는 복수의 페이지 버퍼들로 구성될 것이다. 페이지 버퍼들 각각은 복수의 래치들을 포함한다. 입출력 인터페이스(1460)는 제어 로직(1440)에 의해서 제어되며, 외부(예를 들면, 도 6의 메모리 제어기(1200))와 인터페이스하도록 구성된다. 비록 도면에는 도시되지 않았지만, 입출력 인터페이스(1460)는 페이지 버퍼들을 선택하기 위한 열 선택기, 데이터를 입력받는 입력 버퍼, 데이터를 출력하는 출력 버퍼, 그리고 그와 같은 것을 포함할 것이다.
본 발명에 따른 제어 로직(1440)은 메모리 제어기(1200)로부터 제공되는 읽기 조건에 따라 읽기 동작을 수행할 것이다. 읽기 조건은 명령, 어드레스, 데이터, 특정 입출력 핀(들), 등을 이용하여 메모리 제어기(1200)로부터 제공될 것이다. 제어 로직(1440)은, 예를 들면, 읽기 요청된 메모리 영역에 제공될 읽기 전압이 변경되도록 전압 발생기(1430)를 제어할 것이다. 예를 들면, 읽기 전압은, 도 3에 도시된 바와 같이, 프로그램 동작이 완료된 직후에 형성된 문턱 전압 산포(21)에 대응하는 읽기 전압(VR1)과 특정 시간(t1)이 경과한 후 형성된 문턱 전압 산포(22)에 대응하는 읽기 전압(VR2) 사이에서 변화될 것이다. 또는, 제어 로직(1440)은 비트 라인 디벨러프 시간, 비트 라인 프리챠지 전압, 센싱 마진 (예를 들면, 비트 라인 프리챠지 전압과 비트 라인 셧오프 전압 사이의 관계), 등과 같은 센싱 조건이 변경되도록 페이지 버퍼 회로(1450)를 제어할 것이다. 센싱 조건의 변경은 읽기 전압의 변경으로서 여겨질 수 있다. 하지만, 읽기 조건이 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다.
도 10은 본 발명의 일 실시예에 따른 메모리 제어기의 프로그램 경과 시간 검색 방법을 개략적으로 보여주는 흐름도이다.
도 10을 참조하면, S100 단계에서, 메모리 제어기(1200)는 어드레스 변환 동작을 수행한다. 예를 들면, 메모리 제어기(1200)는 읽기 요청과 함께 제공되는 논리 어드레스(LPA)를 물리 어드레스(PPA)로 변환한다. S120 단계에서, 메모리 제어기(1200)는 물리 어드레스(PPA) 중 블록 어드레스 정보가 블록 어드레스 풀(block address pool)에 존재하는 지의 여부를 검색할 것이다. 예를 들면, 메모리 제어기(1200)는 읽기 요청된 메모리 블록의 블록 어드레스 정보가 제 1 테이블(1242)에 존재하는 지의 여부를 검색할 것이다. 읽기 요청된 메모리 블록의 블록 어드레스 정보가 제 1 테이블(1242) 즉, 타임 스템프 블록 어드레스 테이블(TS_BAT)에 저장된 블록 어드레스들 중 어느 하나와 일치함은 읽기 요청된 메모리 영역의 프로그램 경과 시간이 특정 시간(t1)을 초과하지 않았음을 의미한다. 이에 반해서, 읽기 요청된 메모리 블록의 블록 어드레스 정보가 제 1 테이블(1242) 즉, 타임 스탬프 블록 어드레스 테이블(TS_BAT)에 저장된 블록 어드레스들 중 어느 하나와 일치하지 않음은 읽기 요청된 메모리 영역의 프로그램 경과 시간이 특정 시간(t1)을 초과하였음을 의미한다.
예시적인 실시예에 있어서, 검색 동작은 제 1 테이블(1242)에 저장된 블록 어드레스들이 바이어리 검색을 위해서 정렬된 상태에서 행해질 것이다.
S130 단계에서, 메모리 제어기(1200)는 검색 결과가 히트를 나타내는 지의 여부를 판별할 것이다. 검색 결과가 히트를 나타내지 않을 때, 절차는 S140 단계로 진행할 것이다. S140 단계에서, 메모리 제어기(1200)는 읽기 요청된 메모리 블록에 대한 프로그램 경과 시간(또는, 타임 스탬프라 불림)이 기준, 즉, 특정 시간(t1)을 경과한 것으로 결정한다. 이후, 절차는 종료될 것이다. 이후 설명되는 바와 같이, 읽기 요청된 메모리 블록에 대한 프로그램 경과 시간(또는, 타임 스탬프라 불림)이 기준, 즉, 특정 시간(t1)을 경과한 것으로 결정되는 경우, 메모리 제어기(1200)는 디폴트 읽기 조건(예를 들면, 도 3의 읽기 전압(VR2)을 이용하여 읽기 동작이 수행되는 조건)에 따라 읽기 동작을 수행하도록 저장 매체(1400)를 제어할 것이다.
검색 결과가 히트를 나타낼 때, 절차는 S150 단계로 진행할 것이다. S150 단계에서, 메모리 제어기(1200)는 읽기 요청에 대응하는 인덱스 값을 결정할 것이다. 예를 들면, 메모리 제어기(1200)는 프로그램 유니트들과 인덱스 값들 사이의 관계 (예를 들면, 프로그램 유니트-인덱스 맵핑 테이블)을 이용하여 읽기 요청된 메모리 영역에 대응하는 프로그램 유니트의 인덱스 값을 선택할 것이다. S160 단계에서, 메모리 제어기(1200)는 선택된 인덱스 값에 의거하여 프로그램 경과 시간(즉, 타임 포인터 값)을 결정할 것이다. 예를 들면, 메모리 제어기(1200)는 선택된 인덱스 값에 의거하여 제 2 테이블(1244) 즉, 타임 포인터-인덱스 테이블(TP_INDT)의 타임 포인터를 선택할 것이다. 선택된 인덱스 값과 일치하는 인덱스 값이 제 2 테이블(1244)에 존재하지 않을 때, 선택된 인덱스 값에 근사한 인덱스 값의 타임 포인터가 선택될 것이다. 이후, 절차는 종료될 것이다. 이후 설명되는 바와 같이, 읽기 요청된 메모리 블록에 대한 프로그램 경과 시간(또는, 타임 스탬프라 불림)이 기준, 즉, 특정 시간(t1)을 경과하지 않은 것으로 결정되는 경우, 메모리 제어기(1200)는 선택된 타임 포인터에 대응하는 읽기 조건(예를 들면, 도 3의 읽기 전압들(VR1, VR2) 사이에 존재하는 읽기 전압을 이용하여 읽기 동작이 수행되는 조건)에 따라 읽기 동작을 수행하도록 저장 매체(1400)를 제어할 것이다.
도 11은 본 발명의 다른 예시적인 실시예에 따른 메모리 시스템을 개략적으로 보여주는 블록도이다.
도 11을 참조하면, 본 발명의 실시예에 따른 메모리 시스템(1000a)은 메모리 제어기(1200)와 멀티-비트/멀티-레벨 메모리 장치로 구현되는 저장 매체(1400)를 포함한다. 메모리 제어기(1200)는 아래의 차임점을 제외하면 도 7에 도시된 메모리 제어기(1200)와 실질적으로 동일하며, 그것에 대한 설명은 생략될 것이다. 저장 매체(1400)는 도 7에 도시된 저장 매체(1400)와 실질적으로 동일하며, 그것에 대한 설명은 생략될 것이다.
메모리 제어기(1200)는 제 1 내지 제 4 테이블들(1242~1248)을 포함할 것이다. 제 1 테이블(1242)는 도 5를 참조하여 설명된 타임 스템프 블록 어드레스 테이블(TS_BAT)이고, 제 2 테이블(1244)은 도 6을 참조하여 설명된 타임 포인터-인덱스 테이블(TP_INDT)일 것이다. 제 3 테이블(1246)은, 도 4c을 참조하여 설명된 바와 같이, 프로그램 경과 시간의 관리 대상인 메모리 블록들의 인덱스 값들을 관리하기 위한 인덱스 테이블일 것이다. 제 4 테이블(1248)은 마지막으로 프로그램된 프로그램 유니트에 대응하는 타임 포인터를 관리하기 위한 테이블이다.
마지막으로 프로그램된 프로그램 유니트의 타임 포인터는 읽기 요청시 제 1 테이블(1242)에 저장된 프로그램 메모리 블록들의 프로그램 경과 시간들이 특정 시간(t1)을 경과하였는 지의 여부를 판별하기 위해서 사용될 것이다. 예를 들면, 마지막으로 프로그램된 프로그램 유니트의 타임 포인터가 특정 시간(t1)을 경과한 것으로 판별됨은 제 1 테이블(1242)에 저장된 프로그램 메모리 블록들의 프로그램 경과 시간들이 특정 시간(t1)을 경과하였음을 의미한다. 그러한 까닭에, 읽기 요청은 디폴트 읽기 조건을 이용하여 처리될 수 있다. 이러한 경우, 도 10을 참조하여 설명된 검색 동작, 인덱스 선택 동작, 그리고 타임 포인터 선택 동작은 행해지지 않을 것이다. 이에 반해서, 마지막으로 프로그램된 프로그램 유니트의 타임 포인터가 특정 시간(t1)을 경과하지 않은 것으로 판별됨은 제 1 테이블(1242)에 저장된 프로그램 메모리 블록들의 프로그램 경과 시간들 모두 또는 일부가 특정 시간(t1)을 경과하지 않았음을 의미한다. 그러한 까닭에, 도 10을 참조하여 설명된 검색 동작, 인덱스 선택 동작, 그리고 타임 포인터 선택 동작은 행해질 것이다.
도 12는 본 발명의 다른 실시예에 따른 메모리 제어기의 프로그램 경과 시간 검색 방법을 개략적으로 보여주는 흐름도이다.
도 12를 참조하면, S200 단계에서, 메모리 제어기(1200)는 어드레스 변환 동작을 수행한다. 예를 들면, 메모리 제어기(1200)는 읽기 요청과 함께 제공되는 논리 어드레스(LPA)를 물리 어드레스(PPA)로 변환한다. S210 단계에서, 메모리 제어기(1200)는 마지막으로 프로그램된 프로그램 유니트의 타임 포인터의 값(PTV)이 특정 시간(t1)에 대응하는 타임 포인터의 최대값을 초과하였는 지의 여부를 판별할 것이다. 마지막으로 프로그램된 프로그램 유니트의 타임 포인터의 값(PTV)이 특정 시간(t1)에 대응하는 타임 포인터의 최대값을 초과하지 않은 것으로 판별됨은 제 1 테이블(1242)에 저장된 프로그램 메모리 블록들의 프로그램 경과 시간들 모두 또는 일부가 특정 시간(t1)을 경과하지 않았음을 의미한다.
마지막으로 프로그램된 프로그램 유니트의 타임 포인터의 값(PTV)이 특정 시간(t1)에 대응하는 타임 포인터의 최대값을 초과한 것으로 판별될 결과로서, 절차는 S240 단계로 진행할 것이다. 이에 반해서, 마지막으로 프로그램된 프로그램 유니트의 타임 포인터의 값(PTV)이 특정 시간(t1)에 대응하는 타임 포인터의 최대값을 초과하지 않은 것으로 판별될 결과로서, S220 단계에서, 메모리 제어기(1200)는 물리 어드레스(PPA) 중 블록 어드레스 정보가 블록 어드레스 풀(block address pool)에 존재하는 지의 여부를 검색할 것이다. 예를 들면, 메모리 제어기(1200)는 읽기 요청된 메모리 블록의 블록 어드레스 정보가 제 1 테이블(1242)에 존재하는 지의 여부를 검색할 것이다. 읽기 요청된 메모리 블록의 블록 어드레스 정보가 제 1 테이블(1242) 즉, 타임 스템프 블록 어드레스 테이블(TS_BAT)에 저장된 블록 어드레스들 중 어느 하나와 일치함은 읽기 요청된 메모리 영역의 프로그램 경과 시간이 특정 시간(t1)을 초과하지 않았음을 의미한다. 이에 반해서, 읽기 요청된 메모리 블록의 블록 어드레스 정보가 제 1 테이블(1242) 즉, 타임 스탬프 블록 어드레스 테이블(TS_BAT)에 저장된 블록 어드레스들 중 어느 하나와 일치하지 않음은 읽기 요청된 메모리 영역의 프로그램 경과 시간이 특정 시간(t1)을 초과하였음을 의미한다.
예시적인 실시예에 있어서, 검색 동작은 제 1 테이블(1242)에 저장된 블록 어드레스들이 바이어리 검색을 위해서 정렬된 상태에서 행해질 것이다.
마지막으로 프로그램된 프로그램 유니트의 타임 포인터의 값(PTV)가 특정 시간(t1)에 대응하는 타임 포인터의 최대값을 경과하지 않은 것으로 판별될 때, 즉, 제 1 테이블(1242)에 저장된 프로그램 메모리 블록들의 프로그램 경과 시간들 모두 또는 일부가 특정 시간(t1)을 경과하지 않은 것으로 판별될 때, S230 단계에서, 메모리 제어기(1200)는 검색 결과가 히트를 나타내는 지의 여부를 판별할 것이다. 검색 결과가 히트를 나타내지 않을 때, 절차는 S240 단계로 진행할 것이다. 검색 결과가 히트를 나타내지 않을 때 또는 마지막으로 프로그램된 프로그램 유니트의 타임 포인터의 값(PTV)가 특정 시간(t1)에 대응하는 타임 포인터의 최대값을 초과한 것으로 판별될 때, S240 단계에서, 메모리 제어기(1200)는 읽기 요청된 메모리 블록에 대한 프로그램 경과 시간(또는, 타임 스탬프라 불림)이 기준, 즉, 특정 시간(t1)을 경과한 것으로 결정한다. 이후, 절차는 종료될 것이다. 이후 설명되는 바와 같이, 읽기 요청된 메모리 블록에 대한 프로그램 경과 시간(또는, 타임 스탬프라 불림)이 기준, 즉, 특정 시간(t1)을 경과한 것으로 결정되는 경우, 메모리 제어기(1200)는 디폴트 읽기 조건(예를 들면, 도 3의 읽기 전압(VR2)을 이용하여 읽기 동작이 수행되는 조건)에 따라 읽기 동작을 수행하도록 저장 매체(1400)를 제어할 것이다.
검색 결과가 히트를 나타낼 때, 절차는 S250 단계로 진행할 것이다. S250 단계에서, 메모리 제어기(1200)는 읽기 요청에 대응하는 인덱스 값을 결정할 것이다. 예를 들면, 메모리 제어기(1200)는 프로그램 유니트들과 인덱스 값들 사이의 관계 (예를 들면, 프로그램 유니트-인덱스 맵핑 테이블)을 이용하여 읽기 요청된 메모리 영역에 대응하는 프로그램 유니트의 인덱스 값을 선택할 것이다. S260 단계에서, 메모리 제어기(1200)는 선택된 인덱스 값에 의거하여 프로그램 경과 시간(즉, 타임 포인터 값)을 결정할 것이다. 예를 들면, 메모리 제어기(1200)는 선택된 인덱스 값에 의거하여 제 2 테이블(1244) 즉, 타임 포인터-인덱스 테이블(TP_INDT)의 타임 포인터를 선택할 것이다. 선택된 인덱스 값과 일치하는 인덱스 값이 제 2 테이블(1244)에 존재하지 않을 때, 선택된 인덱스 값에 근사한 인덱스 값의 타임 포인터가 선택될 것이다. 이후, 절차는 종료될 것이다. 이후 설명되는 바와 같이, 읽기 요청된 메모리 블록에 대한 프로그램 경과 시간(또는, 타임 스탬프라 불림)이 기준, 즉, 특정 시간(t1)을 경과하지 않은 것으로 결정되는 경우, 메모리 제어기(1200)는 선택된 타임 포인터에 대응하는 읽기 조건(예를 들면, 도 3의 읽기 전압들(VR1, VR2) 사이에 존재하는 읽기 전압을 이용하여 읽기 동작이 수행되는 조건)에 따라 읽기 동작을 수행하도록 저장 매체(1400)를 제어할 것이다.
도 13은 본 발명의 일 실시예에 따른 메모리 시스템의 쓰기 흐름을 개략적으로 보여주는 도면이다.
도 13을 참조하면, S300 단계에서, 메모리 제어기(1200)는 외부 장치(예를 들면, 메모리 시스템(1000)이 연결되는 호스트)로부터 쓰기 요청을 입력받는다. 메모리 제어기(1200)는, S310 단계에서, 저장 매체(1400)로 프로그램 명령을 제공할 것이다. 여기서, 프로그램 명령은 쓰기 요청된 메모리 영역을 지정하기 위한 어드레스 및 쓰기 요청된 데이터와 함께 저장 매체(1400)로 전송될 것이다. S320 단계에서, 저장 매체(1400)는 쓰기 요청된 데이터를 쓰기 요청된 메모리 영역에 저장할 것이다. 프로그램 동작이 개시된 후, 메모리 제어기(1200)는 저장 매체(1400)의 프로그램 동작이 종료되었는 지의 여부를 모니터할 것이다 (S330). 여기서, 프로그램 동작이 종료되었는 지의 여부는 저장 매체(1400)로부터 출력되는 신호 라인(예를 들면, RnB 라인)의 천이 (예를 들면, 로우-하이 천이)를 검출함으로써 결정될 것이다. 저장 매체(1400)로부터 출력되는 신호 라인(예를 들면, RnB 라인)의 로우-하이 천이가 검출되면, S340 단계에서, 메모리 제어기(1200)의 제어하에 쓰기 요청된 메모리 영역에 대응하는 타임 포인터가 제 4 테이블(1248)에 마크될 것이다. 이후, 쓰기 흐름은 종료될 것이다.
예시적인 실시예에 있어서, 메모리 제어기(1200)는 쓰기 흐름 동안 제 1 내지 제 4 테이블들(1242~1248)을 관리할 것이다. 제 1 내지 제 4 테이블들(1242~1248)의 관리는 배경 동작을 통해 행해질 것이다.
도 14는 본 발명의 일 실시예에 따른 메모리 제어기의 프로그램 제어 방법을 개략적으로 보여주는 흐름도이다.
도 14를 참조하면, 발명의 일 실시예에 따른 메모리 제어기(1200)의 프로그램 제어 방법은 쓰기 요청을 입력받는 단계(S400); 프로그램 명령을 이슈하는 단계(S410); 저장 매체(1400)의 신호 라인(예를 들면, RnB)이 로우 레벨에서 하이 레벨로 천이하였는 지의 여부를 검출하는 단계(S420); 그리고 저장 매체(1400)의 신호 라인(예를 들면, RnB)이 로우 레벨에서 하이 레벨로 천이한 경우, 쓰기 요청된 메모리 영역에 대응하는 타임 포인터를 제 4 테이블(1248)에 마크하는 단계(S230)를 포함할 것이다. 여기서, 저장 매체(1400)의 신호 라인(예를 들면, RnB)이 로우 레벨에서 하이 레벨로 천이하지 않은 경우, 메모리 제어기(1200)는 계속해서 단계(S420)를 수행할 것이다. 프로그램 명령은 어드레스 및 쓰기 요청된 데이터와 함께 전송될 것이다.
예시적인 실시예에 있어서, 메모리 제어기(1200)는 배경 동작을 통해 특정 시간(t1) (도 2 참조)을 기준으로 제 1 내지 제 4 테이블들(1242~1248)을 관리할 것이다.
도 15는 본 발명의 일 실시예에 따른 메모리 시스템의 읽기 흐름을 개략적으로 보여주는 도면이다.
도 15를 참조하면, S500 단계에서, 메모리 제어기(1200)는 외부 장치(예를 들면, 메모리 시스템(1000)이 연결된 호스트)로부터 읽기 요청을 입력받는다. S510 단계에서, 메모리 제어기(1200)는 도 10 또는 도 12를 참조하여 설명된 방식에 따라 읽기 요청된 메모리 영역의 타임 포인터(즉, 타임 스탬프)를 결정한다. 메모리 제어기(1200)는, S520 단계에서, 판별 결과에 따라 읽기 조건을 결정한다. S530 단계에서, 메모리 제어기(1200)는 그렇게 결정된 읽기 조건을 저장 매체(1400)로 전송한다. 읽기 조건은 명령, 어드레스, 데이터, 또는 특정 입출력 핀(들)을 이용하여 저장 매체(1400)로 전송할 것이다. S540 단계에서, 저장 매체(1400)는 메모리 제어기(1200)로부터 제공되는 읽기 조건에 따라 읽기 요청된 메모리 영역에 대한 읽기 동작을 수행한다. 그렇게 읽혀진 데이터는, S550 단계에서, 메모리 제어기(1200)로 전송된다. 메모리 제어기(1200)는, S560 단계에서, 읽혀진 데이터를 외부 장치로 전송할 것이다.
예시적인 실시예에 있어서, 메모리 제어기(1200)는 배경 동작을 통해 특정 시간(t1) (도 2 참조)을 기준으로 제 1 내지 제 4 테이블들(1242~1248)을 관리할 것이다.
도 16a은 본 발명의 일 실시예에 따른 메모리 제어기의 읽기 제어 방법을 개략적으로 보여주는 흐름도이다.
도 16a을 참조하면, 본 발명의 일 실시예에 따른 메모리 제어기(1200)의 읽기 제어 방법은 읽기 요청을 입력받는 단계(S600); 읽기 요청된 메모리 영역의 정보가 제 1 테이블(1242)에 포함되어 있는 지의 여부를 판별하는 단계(S610); 읽기 요청된 메모리 영역의 정보가 제 1 테이블(1242)에 포함되어 있는 경우, 읽기 요청된 메모리 영역에 대응하는 타임 포인터에 의거하여 결정된 읽기 조건을 포함하는 읽기 시퀀스를 이슈하는 단계(S620); 그리고 읽기 요청된 메모리 영역의 정보가 제 1 테이블(1242)에 포함되어 있지 않은 경우, 디폴트 읽기 조건을 포함하는 읽기 시퀀스를 이슈하는 단계(S630)를 포함할 것이다. 디폴트 읽기 조건은, 예를 들면, 도 2에 도시된 읽기 전압(VR2)이 생성되는 읽기 조건일 것이다. 또는, 읽기 전압(VR2)으로의 변경에 대응하도록 센싱 조건(예를 들면, 비트 라인 프리챠지 전압, 비트 라인 디벨러프 시간, 비트 라인 셧오프 전압, 그리고 그와 같은 것 중 하나 또는 그것들 중 적어도 2개의 조합)이 변경될 수 있음은 잘 이해될 것이다. 이러한 경우, 읽기 전압(VR1)이 사용될 수 있다. 또는, 읽기 전압 및 센싱 조건 모두 변경될 수 있음은 잘 이해될 것이다.
예시적인 실시예에 있어서, 메모리 제어기(1200)는 배경 동작을 통해 특정 시간(t1) (도 2 참조)을 기준으로 제 1 내지 제 4 테이블들(1242~1248)을 관리할 것이다.
도 16b는 본 발명의 다른 실시예에 따른 메모리 제어기의 읽기 제어 방법을 개략적으로 보여주는 흐름도이다.
도 16b를 참조하면, 본 발명의 일 실시예에 따른 메모리 제어기(1200)의 읽기 제어 방법은 읽기 요청을 입력받는 단계(S700); 마지막으로 프로그램된 프로그램 유니트의 타임 포인터의 값(PTV)이 특정 시간(t1)에 대응하는 타임 포인터의 최대값을 초과하였는 지의 여부를 판별하는 단계(S710); 마지막으로 프로그램된 프로그램 유니트의 타임 포인터의 값(PTV)이 특정 시간(t1)에 대응하는 타임 포인터의 최대값을 초과하지 않은 것으로 판별된 결과로서, 읽기 요청된 메모리 영역의 정보가 제 1 테이블(1242)에 포함되어 있는 지의 여부를 판별하는 단계(S720); 읽기 요청된 메모리 영역의 정보가 제 1 테이블(1242)에 포함되어 있는 경우, 읽기 요청된 메모리 영역에 대응하는 타임 포인터에 의거하여 결정된 읽기 조건을 포함하는 읽기 시퀀스를 이슈하는 단계(S730); 그리고 읽기 요청된 메모리 영역의 정보가 제 1 테이블(1242)에 포함되어 있지 않은 경우 또는 마지막으로 프로그램된 프로그램 유니트의 타임 포인터의 값(PTV)이 특정 시간(t1)에 대응하는 타임 포인터의 최대값을 초과한 경우, 디폴트 읽기 조건을 포함하는 읽기 시퀀스를 이슈하는 단계(S740)를 포함할 것이다. 디폴트 읽기 조건은, 예를 들면, 도 2에 도시된 읽기 전압(VR2)이 생성되는 읽기 조건일 것이다. 또는, 읽기 전압(VR2)으로의 변경에 대응하도록 센싱 조건(예를 들면, 비트 라인 프리챠지 전압, 비트 라인 디벨러프 시간, 비트 라인 셧오프 전압, 그리고 그와 같은 것 중 하나 또는 그것들 중 적어도 2개의 조합)이 변경될 수 있음은 잘 이해될 것이다. 이러한 경우, 읽기 전압(VR1)이 사용될 수 있다. 또는, 읽기 전압 및 센싱 조건 모두 변경될 수 있음은 잘 이해될 것이다.
예시적인 실시예에 있어서, 메모리 제어기(1200)는 배경 동작을 통해 특정 시간(t1) (도 2 참조)을 기준으로 제 1 내지 제 4 테이블들(1242~1248)을 관리할 것이다.
도 17은 본 발명의 예시적인 실시예에 따른 메모리 블록의 3차원 구조를 보여주는 사시도이다. 도 17을 참조하면, 메모리 블록(BLK1)은 기판(SUB)과 수직 방향으로 형성되어 있다. 기판(SUB)에는 n+ 도핑 영역이 형성된다. 기판(SUB) 위에는 게이트 전극막(gate electrode layer)과 절연막(insulation layer)이 교대로 증착된다. 그리고 게이트 전극막(gate electrode layer)과 절연막(insulation layer) 사이에는 전하 저장막(charge storage layer)이 형성될 수 있다.
게이트 전극막과 절연막을 수직 방향으로 패터닝(vertical patterning)하면, V자 모양의 필라(pillar)가 형성된다. 필라는 게이트 전극막과 절연막을 관통하여 기판(SUB)과 연결된다. 필라(Pillar)의 외곽 부분(O)은 채널 반도체로 구성될 수 있고, 내부(I)는 실리콘 산화물(Silicon Oxide)과 같은 절연 물질로 구성될 수 있다.
계속해서 도 17을 참조하면, 메모리 블록(BLK1)의 게이트 전극막(gate electrode layer)은 접지 선택 라인(GSL), 복수의 워드 라인(WL1~WL8), 그리고 스트링 선택 라인(SSL)에 연결될 수 있다. 그리고 메모리 블록(BLK1)의 필라(pillar)는 복수의 비트 라인(BL1~BL3)과 연결될 수 있다. 도 13에서는, 하나의 메모리 블록(BLK1)이 2개의 선택 라인(GSL, SSL), 8개의 워드 라인(WL1~WL8), 그리고 3개의 비트 라인(BL1~BL3)을 갖는 것으로 도시되어 있으나, 실제로는 이것들보다 더 많거나 적을 수 있다.
도 18은 도 17에 도시된 메모리 블록(BLK1)의 등가 회로도이다. 도 18을 참조하면, 비트 라인(BL1~BL3)과 공통 소스 라인(CSL) 사이에는 낸드 스트링(NS11~NS33)이 연결되어 있다. 각각의 낸드 스트링(예를 들면, NS11)은 스트링 선택 트랜지스터(SST), 복수의 메모리 셀(MC1~MC8), 그리고 접지 선택 트랜지스터(GST)를 포함한다.
스트링 선택 트랜지스터(SST)는 스트링 선택 라인(String Selection Line; SSL1~SSL3)에 연결되어 있다. 복수의 메모리 셀(MC1~MC8)은 각각 대응하는 워드 라인(WL1~WL8)에 연결되어 있다. 그리고 접지 선택 트랜지스터(GST)는 접지 선택 라인(Ground Selection Line; GSL)에 연결되어 있다. 스트링 선택 트랜지스터(SST)는 비트 라인(BL)에 연결되고, 접지 선택 트랜지스터(GST)는 공통 소스 라인(CSL; Common Source Line)에 연결되어 있다.
계속해서 도 18를 참조하면, 동일 높이의 워드 라인(예를 들면, WL1)은 공통으로 연결되어 있고, 스트링 선택 라인(SSL1~SSL3)은 분리되어 있다. 제 1 워드 라인(WL1)에 연결되어 있고 낸드 스트링(NS11, NS12, NS13)에 속해 있는 메모리 셀들을 프로그램하는 경우에는, 제 1 워드 라인(WL1)과 제 1 스트링 선택 라인(SSL1)이 선택된다.
도 19는 본 발명의 실시예에 따른 컴퓨팅 시스템을 개략적으로 보여주는 블록도이다. 컴퓨팅 시스템은 처리 유니트(2101), 사용자 인터페이스(2202), 베이스밴드 칩셋(baseband chipset)과 같은 모뎀(2303), 메모리 제어기(2404), 그리고 저장 매체(2505)를 포함한다.
메모리 제어기(2404)는 도 7 또는 도 11에 도시된 것과 실질적으로 동일하게 구성되고, 저장 매체(2505)는 도 7에 도시된 불 휘발성 메모리 장치로 구성될 것이다. 예를 들면, 도 4a 내지 도 4c, 도 5, 그리고 도 6을 참조하여 설명된 방식에 따라 읽기 요청된 메모리 영역에 대한 타임 포인터를 결정하는 기술이 메모리 제어기(2404)에 적용됨에 따라, 메모리 자원의 오버헤드 및 검색 오버헤드를 줄이는 것이 가능하다. 이는 본 발명에 따른 프로그램 경과 시간 관리 및 검색 기술들이 적용되는 컴퓨팅 시스템의 성능이 향상될 수 있음을 의미한다.
저장 매체(2505)에는 처리 유니트(2101)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 메모리 제어기(2404)를 통해 저장될 것이다. 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(2606)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 잘 이해될 것이다.
도 20은 본 발명의 실시예에 따른 반도체 드라이브를 개략적으로 보여주는 블록도이다.
도 20을 참조하면, 반도체 드라이브(4000)(SSD)는 저장 매체(4100)와 제어기(4200)를 포함할 것이다. 저장 매체(4100)는 복수의 채널들(CH0~CHn-1)을 통해 제어기(4200)와 연결될 것이다. 각 채널에는 복수의 불 휘발성 메모리들이 공통으로 연결될 것이다. 제어기(4200)는 도 7 또는 도 11에 도시된 것과 실질적으로 동일하게 구성되고, 저장 매체(4100)의 각 불 휘발성 메모리는 도 7에 도시된 불 휘발성 메모리 장치로 구성될 것이다. 예를 들면, 도 4a 내지 도 4c, 도 5, 그리고 도 6을 참조하여 설명된 방식에 따라 읽기 요청된 메모리 영역에 대한 타임 포인터를 결정하는 기술이 제어기(4200)에 적용됨에 따라, 메모리 자원의 오버헤드 및 검색 오버헤드를 줄이는 것이 가능하다. 이는 본 발명에 따른 프로그램 경과 시간 관리 및 검색 기술들이 적용되는 반도체 드라이브의 성능이 향상될 수 있음을 의미한다.
도 21은 본 발명의 예시적인 실시예에 따른 유저 장치를 개략적으로 보여주는 블록도이다. 도 21에 도시된 예시적인 유저 장치는 모바일 폰(또는, 스마트 폰이라 칭함)일 것이다. 하지만, 본 발명이 모바일 폰에 제한되지 않음은 잘 이해될 것이다.
도 21을 참조하면, 모바일 폰(5000)은 GSM (Global System for Mobile Communication) 블록(5100), NFC (Near Feild Communication) 송수신기(5200), NFC 안테나 매칭 네트워크 시스템(5230), 입출력 블록(5300), 응용 블록(5400), 메모리(5500), 그리고 디스플레이(5600)를 포함할 것이다. 도 1의 모바일 폰(1000)의 구성 요소들/블록들은 단지 예시적으로 도시되어 있다. 하지만, 모바일 폰(1000)은 더 많은 또는 더 적은 구성 요소들/블록들을 포함할 것이다. 게다가, GSM 기술을 사용하는 것으로 도시되어 있지만, 모바일 폰(5000)은 CDMA (Code Division Multiple Access)와 같은 다른 기술들을 이용하여 구현될 수 있다. 도 21의 블록들은 집적 회로 형태로 구현될 것이다. 또는, 블록들 중 몇몇은 집적 회로 형태로 구현되는 반면에 다른 블록들은 별개의 형태로 구현될 것이다.
GSM 블록(5100)은 안테나(5101)에 연결되며, 알려진 방식으로 무선 전화기 동작들을 제공하도록 동작할 것이다. GSM 블록(5100)은 내부적으로 수신기 및 송신기(미도시됨)를 포함하여 대응하는 수신 및 송신 동작들을 수행할 것이다.
NFC 송수신기(5200)는 무선 통신을 위해 유도 결합(inductive coupling)을 이용하여 NFC 신호들을 송수신하도록 구성될 것이다. NFC 송수신기(5200)는 NFC 신호들을 NFC 안테나 매칭 네트워크 시스템(5230)에 제공하고, NFC 안테나 매칭 네트워크 시스템(5230)은 유도 결합을 통해 NFC 신호들을 전송할 것이다. NFC 안테나 매칭 네트워크 시스템(5230)은 NFC 신호들(다른 NFC 장치(미도시됨)로부터 제공됨)을 수신하고, 수신된 NFC 신호들을 NFC 송수신기(5200)에 제공할 것이다.
NFC 송수신기(5200)는 NFC 인터페이스 및 프로토콜-1 (NFCIP-1)과 NFC 인터페이스 및 프로토콜-2 (NFCIP-2)에 설명되고 ECMA-340, ISO/IEC 18092, ETSI TS 102 190, ISO 21481, ECMA 352, ETSI TS 102 312 등에 표준화된 규정들과 일치하게 동작할 것이다.
응용 블록(5400)은 하드웨어 회로들(예를 들면, 하나 또는 그 보다 많은 프로세서들)을 포함하며, 모바일 폰(5000)에 의해서 제공되는 다양한 사용자 응용들을 제공하도록 동작할 것이다. 사용자 응용들은 음성 호출 동작들, 데이터 전송, 등을 포함할 것이다. 응용 블록(5400)은 GSM 블록(5100)과 함께 동작하여 그러한 특징들을 제공할 것이다. 응용 블록(5400)은, 또한, 모바일 포스(Point of Sales: POS)를 위한 프로그램을 포함할 것이다. 그러한 프로그램은 모바일 폰 즉, 스마트 폰을 을 이용한 신용카드 구매 및 결제 기능들을 제공할 것이다.
디스플레이(5600)는 응용 블록(5400)으로부터 수신된 디스플레이 신호들에 응답하여 영상을 표시할 것이다. 영상은 모바일 폰(5000)에 제공되는 카메라(미도시됨)에 의해서 생성될 것이다. 디스플레이(5600)에 의해서 표시되는 영상은 응용 블록(5400)에 의해서 생성된 신용카드 구매 및 결제 기능의 실행을 위한 영상을 포함할 것이다. 디스플레이(5600)는 픽셀 값들의 임시 저장을 위해서 내부적으로 메모리(예를 들면, 프레임 버퍼)를 포함하며, 관련된 제어 회로들과 함께 액정 디스플레이 스크린으로 구성될 것이다. 입출력 블록(5300)은 사용자에게 입력 기능을 제공하며, 응용 블록(5400)을 통해 수신될 출력들을 제공한다.
메모리(5500)는 응용 블록에 의해서 사용될 프로그램 (명령들) 그리고/또는 데이터를 저장할 것이다. 예를 들면, 메모리(5500)는 도 7 또는 도 11에 도시된 메모리 시스템으로 구성될 수 있다. 따라서, 도 4a 내지 도 4c, 도 5, 그리고 도 6을 참조하여 설명된 방식에 따라 읽기 요청된 메모리 영역에 대한 타임 포인터를 결정하는 기술이 메모리(5500)에 적용됨에 따라, 메모리 자원의 오버헤드 및 검색 오버헤드를 줄이는 것이 가능하다. 이는 본 발명에 따른 프로그램 경과 시간 관리 및 검색 기술들이 적용되는 유저 장치의 성능이 향상될 수 있음을 의미한다.
도 22는 본 발명의 실시예에 따른 메모리 카드(memory card)를 개략적으로 보여주는 블록도이다.
메모리 카드는 예를 들어, MMC 카드, SD카드, 멀티유즈(multiuse) 카드, 마이크로 SD카드, 메모리 스틱, 컴팩트 SD 카드, ID 카드, PCMCIA 카드, SSD카드, 칩카드(chipcard), 스마트카드(smartcard), USB카드 등일 수 있다.
도 22를 참조하면, 메모리 카드는 외부와의 인터페이스를 수행하는 인터페이스부(9221), 버퍼 메모리를 갖고 메모리 카드의 동작을 제어하는 제어기(9222), 하나 또는 그 보다 많은 불 휘발성 메모리 장치들(9207)을 포함할 것이다. 제어기(9222)는 프로세서로서, 불 휘발성 메모리 장치(9207)의 라이트 동작 및 리드 동작을 제어할 수 있다. 구체적으로, 제어기(9222)는 데이터 버스(DATA)와 어드레스 버스(ADDRESS)를 통해서 불 휘발성 메모리 장치(9207) 및 인터페이스부(9221)와 커플링되어 있다. 인터페이스부(9221)는 호스트와 메모리 카드 사이에 데이터 교환을 수행하기 위한 카드 프로토콜(예를 들어, SD/MMC)을 통해 호스트와 인터페이싱한다.
제어기(9222)는 도 7 또는 도 11에 도시된 것과 실질적으로 동일하게 구성되고, 불 휘발성 메모리 장치(9207)은 도 7에 도시된 불 휘발성 메모리 장치로 구성될 것이다. 예를 들면, 도 4a 내지 도 4c, 도 5, 그리고 도 6을 참조하여 설명된 방식에 따라 읽기 요청된 메모리 영역에 대한 타임 포인터를 결정하는 기술이 제어기(9222)에 적용됨에 따라, 메모리 자원의 오버헤드 및 검색 오버헤드를 줄이는 것이 가능하다. 이는 본 발명에 따른 프로그램 경과 시간 관리 및 검색 기술들이 적용되는 메모리 카드의 성능이 향상될 수 있음을 의미한다.
도 23은 도 22의 메모리 카드가 사용되는 다양한 응용 분야들을 보여주는 도면이다.
도 23를 참조하면, 메모리 카드(9331)는 비디오 카메라(VC), 텔레비전(TV), 오디오 장치(AD), 게임장치(GM), 전자 음악 장치(EMD), 휴대폰(HP), 컴퓨터(CP), PDA(Personal Digital Assistant), 보이스 레코더(voice recorder)(VR), PC 카드(PCC), 등에 사용될 수 있다.
본 발명의 실시예에 있어서, 메모리 셀들은 전하 저장층을 갖는 다양한 셀 구조들 중 하나를 이용하여 구현될 수 있다. 전하 저장층을 갖는 셀 구조는 전하 트랩층을 이용하는 전하 트랩 플래시 구조, 어레이들이 다층으로 적층되는 스택 플래시 구조, 소오스-드레인이 없는 플래시 구조, 핀-타입 플래시 구조, 등을 포함할 것이다.
전하 저장층으로서 전하 트랩 플래시 구조를 갖는 메모리 장치가 미국특허 제6858906호, 미국공개특허 제2004-0169238호, 그리고 미국공개특허 제2006-0180851호에 각각 게재되어 있으며, 이 출원의 레퍼런스로 포함될 것이다. 소오스/드레인이 없는 플래시 구조는 대한민국특허 제673020호에 게재되어 있으며, 이 출원의 레퍼런스로 포함될 것이다.
본 발명에 따른 불 휘발성 메모리 장치 그리고/또는 메모리 제어기는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 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), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
1000: 메모리 시스템
1200: 메모리 제어기
1400: 저장 매체

Claims (10)

  1. 데이터 정보를 저장하는 저장 매체를 제어하도록 구성된 메모리 제어기에 있어서:
    프로세싱 유니트와; 그리고
    상기 프로그세싱 유니트의 제어에 따라 임시로 데이터를 저장하는 버퍼 메모리를 포함하며,
    상기 버퍼 메모리는 상기 저장 매체의 메모리 블록들 중 프로그램된 메모리 블록들의 어드레스 정보를 저장하는 제 1 테이블과; 그리고 상기 제 1 테이블에 저장된 메모리 블록들의 프로그램 유니트들에는 서로 다른 인덱스 값들이 각각 할당되고 상기 제 1 테이블에 저장된 메모리 블록들의 프로그램 유니트들에는 소정 시간 간격을 두고 타임 포인터들이 할당되며; 상기 타임 포인터들과 상기 타임 포인터들에 각각 대응하는 프로그램 유니트들의 인덱스 값들을 저장하는 제 2 테이블을 포함하며, 상기 제 1 및 제 2 테이블들은 읽기 요청된 메모리 영역의 프로그램 경과 시간을 결정하는 데 사용되는 메모리 제어기.
  2. 제 1 항에 있어서,
    읽기 요청된 프로그램 유니트에 대응하는 타임 포인터가 상기 제 2 테이블에 존재하지 않을 때, 상기 프로세싱 유니트는 상기 타임 포인터들이 할당된 프로그램 유니트들 중, 상기 읽기 요청된 프로그램 유니트에 인접한, 프로그램 유니트들의 타임 포인터들에 의거하여 상기 읽기 요청된 프로그램 유니트의 프로그램 경과 시간을 결정하는 메모리 제어기.
  3. 제 1 항에 있어서,
    상기 버퍼 메모리는 상기 프로그램된 메모리 블록들의 프로그램 유니트들과 상기 프로그램된 메모리 블록들의 프로그램 유니트들에 각각 할당된 인덱스 값들을 저장하는 제 3 테이블을 더 포함하는 메모리 제어기.
  4. 제 1 항에 있어서,
    상기 버퍼 메모리는 마지막으로 프로그램된 프로그램 유니트에 대응하는 타임 포인터를 저장하는 제 4 테이블을 더 포함하는 메모리 제어기.
  5. 제 4 항에 있어서,
    상기 프로세싱 유니트는 상기 제 4 테이블에 저장된 타임 포인터들에 의거하여, 상기 제 1 테이블에 저장된 프로그램된 메모리 블록들의 프로그램 경과 시간들이 특정 시간을 경과하였는 지의 여부를 판별하는 메모리 제어기.
  6. 제 5 항에 있어서,
    상기 제 1 테이블에 저장된 프로그램된 메모리 블록들의 프로그램 경과 시간들이 상기 특정 시간을 경과한 것으로 판별될 때, 상기 프로세싱 유니트는 상기 제 1 테이블에 저장된 어드레스 정보를 바이너리 검색을 위해 정렬하고 상기 정렬된 어드레스 정보를 검색하여 상기 읽기 요청된 메모리 영역의 어드레스 정보가 상기 제 1 테이블에 저장되어 있는 지의 여부를 판별하는 메모리 제어기.
  7. 제 6 항에 있어서,
    상기 읽기 요청된 메모리 영역의 어드레스 정보가 상기 제 1 테이블에 저장되어 있는 것으로 판별될 때, 상기 프로그세싱 유니트는 상기 제 1 테이블에 저장된 메모리 블록들의 프로그램 유니트들에 각각 대응하는 인덱스 값들에 의거하여, 상기 읽기 요청된 메모리 영역에 대응하는 인덱스 값을 결정하는 메모리 제어기.
  8. 제 7 항에 있어서,
    상기 프로세싱 유니트는 상기 결정된 인덱스 값에 의거하여 상기 읽기 요청된 메모리 영역의 프로그램 경과 시간을 결정하고, 상기 프로세싱 유니트는 상기 결정된 프로그램 경과 시간에 대응하는 읽기 조건을 상기 저장 매체로 전달하며, 상기 읽기 조건은 상기 프로그램 경과 시간에 따라 변화하는 메모리 제어기.
  9. 제 1 항에 있어서,
    상기 타임 포인터들은 일정 시간 간격을 두고 할당되거나, 상기 타임 포인터들은 로그 스케일 방식에 따라 결정된 상이한 시간 간격들을 두고 할당되며, 상기 상이한 시간 간격들에 각각 대응하고 대응하는 시간 간격 마다 업데이트되는 테이블들을 이용하여 상기 타임 포인터들이 관리되는 메모리 제어기.
  10. 데이터 정보를 저장하는 저장 매체를 제어하는 메모리 제어기의 읽기 제어 방법에 있어서:
    읽기 요청에 응답하여, 마지막으로 프로그램된 메모리 영역의 타임 포인터가 특정 시간의 경과를 나타내는 지의 여부를 판별하고,
    마지막으로 프로그램된 메모리 영역의 타임 포인터가 상기 특정 시간을 경과하지 않은 것으로 판별될 때, 읽기 요청된 메모리 영역의 어드레스 정보가 타임 스템프 블록 어드레스 테이블에 존재하는 지의 여부를 판별하되, 상기 타임 스템프 블록 어드레스 테이블은 상기 저장 매체의 메모리 블록들 중 프로그램된 메모리 블록들의 어드레스 정보를 저장하며, 상기 타임 스템프 블록 어드레스 테이블에 저장된 메모리 블록들의 프로그램 유니트들에는 서로 다른 인덱스 값들이 각각 할당되고, 상기 타임 스템프 블록 어드레스 테이블에 저장된 메모리 블록들의 프로그램 유니트들에는 소정 시간 간격을 두고 타임 포인터들이 할당되며;
    상기 읽기 요청된 메모리 영역의 어드레스 정보가 상기 타임 스템프 블록 어드레스 테이블에 존재하는 것으로 판별될 때, 상기 프로그램된 메모리 블록들의 프로그램 유니트들과 상기 프로그램된 메모리 블록들의 프로그램 유니트들에 각각 할당된 인덱스 값들을 저장하는 인텍스 테이블에 의거하여 상기 읽기 요청된 메모리 영역에 대응하는 인덱스 값을 결정하고,
    상기 결정된 인덱스 값에 의거하여, 상기 읽기 요청된 메모리 영역에 대응하는 타임 포인터를 결정하는 것을 포함하는 것을 특징으로 하는 메모리 제어기의 읽기 제어 방법.

KR1020130162710A 2013-12-24 2013-12-24 메모리 시스템 및 그것을 포함하는 유저 장치 KR102116258B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130162710A KR102116258B1 (ko) 2013-12-24 2013-12-24 메모리 시스템 및 그것을 포함하는 유저 장치
US14/491,123 US9837163B2 (en) 2013-12-24 2014-09-19 Methods for managing operations in nonvolatile memory device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130162710A KR102116258B1 (ko) 2013-12-24 2013-12-24 메모리 시스템 및 그것을 포함하는 유저 장치

Publications (2)

Publication Number Publication Date
KR20150074685A true KR20150074685A (ko) 2015-07-02
KR102116258B1 KR102116258B1 (ko) 2020-06-05

Family

ID=53400753

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130162710A KR102116258B1 (ko) 2013-12-24 2013-12-24 메모리 시스템 및 그것을 포함하는 유저 장치

Country Status (2)

Country Link
US (1) US9837163B2 (ko)
KR (1) KR102116258B1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014208609A1 (de) * 2014-05-08 2015-11-26 Robert Bosch Gmbh Refresh eines Speicherbereichs einer nichtflüchtigen Speichereinheit
US9632706B2 (en) * 2015-01-04 2017-04-25 Apple Inc. Ordering of parallel data storage based on die programming durations
KR102602694B1 (ko) 2015-12-15 2023-11-15 삼성전자주식회사 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법
US10452312B2 (en) * 2016-12-30 2019-10-22 Intel Corporation Apparatus, system, and method to determine a demarcation voltage to use to read a non-volatile memory
US10163471B2 (en) * 2017-03-30 2018-12-25 Intel Corporation Time tracking with trits
TWI662411B (zh) * 2018-05-14 2019-06-11 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
US11901012B2 (en) 2019-04-30 2024-02-13 Samsung Electronics Co., Ltd. Non-volatile memory device and programming method thereof
KR20200126609A (ko) 2019-04-30 2020-11-09 삼성전자주식회사 비휘발성 메모리 장치 및 그 프로그래밍 방법
US11164640B2 (en) 2019-04-30 2021-11-02 Samsung Electronics Co., Ltd. Non-volatile memory device and programming method thereof
JP2022144291A (ja) * 2021-03-18 2022-10-03 キオクシア株式会社 メモリシステム

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060155921A1 (en) * 2004-12-16 2006-07-13 Gorobets Sergey A Non-volatile memory and method with multi-stream update tracking
US20080077842A1 (en) * 2006-09-27 2008-03-27 Gonzalez Carlos J Memory with Cell Population Distribution Assisted Read Margining
US20090150601A1 (en) * 2001-01-19 2009-06-11 Conley Kevin M Partial Block Data Programming And Reading Operations In A Non-Volatile Memory
US20110119564A1 (en) * 2009-11-16 2011-05-19 Samsung Electronics Co., Ltd. Flash memory device and memory system comprising same
US20120294104A1 (en) * 2011-05-17 2012-11-22 Samsung Electronics Co., Ltd. Nonvolatile memory systems using time-dependent read voltages and methods of operating the same
US20130238836A1 (en) * 2012-03-06 2013-09-12 Hitachi, Ltd. Semiconductor storage device having nonvolatile semiconductor memory
US20130290597A1 (en) * 2011-09-30 2013-10-31 Intel Corporation Generation of far memory access signals based on usage statistic tracking
US20130326312A1 (en) * 2012-06-01 2013-12-05 Joonho Lee Storage device including non-volatile memory device and repair method

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7253467B2 (en) 2001-06-28 2007-08-07 Samsung Electronics Co., Ltd. Non-volatile semiconductor memory devices
US20060180851A1 (en) 2001-06-28 2006-08-17 Samsung Electronics Co., Ltd. Non-volatile memory devices and methods of operating the same
US6858906B2 (en) 2001-06-28 2005-02-22 Samsung Electronics Co., Ltd. Floating trap non-volatile semiconductor memory devices including high dielectric constant blocking insulating layers
KR100449708B1 (ko) 2001-11-16 2004-09-22 삼성전자주식회사 플래시 메모리 관리방법
JP2006127874A (ja) * 2004-10-28 2006-05-18 Yamaha Motor Co Ltd 燃料電池システムおよびその制御方法
WO2007058617A1 (en) 2005-11-17 2007-05-24 Chee Keng Chang A controller for non-volatile memories, and methods of operating the memory controller
KR100673020B1 (ko) 2005-12-20 2007-01-24 삼성전자주식회사 전계효과 소오스/드레인 영역을 가지는 반도체 장치
JP5243250B2 (ja) 2006-07-26 2013-07-24 パナソニック株式会社 不揮発性記憶装置、不揮発性記憶システム、及びホスト機器
US8417893B2 (en) 2008-02-04 2013-04-09 Apple Inc. Memory mapping techniques
KR101466697B1 (ko) 2008-07-10 2014-12-01 삼성전자주식회사 메모리 장치 및 메모리 데이터 프로그래밍 방법
KR101554159B1 (ko) 2008-10-08 2015-09-21 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템
US8040744B2 (en) 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US8516219B2 (en) 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US8467249B2 (en) 2010-07-06 2013-06-18 Densbits Technologies Ltd. Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
KR101702356B1 (ko) * 2010-08-09 2017-02-03 삼성전자주식회사 전하 트랩형 플래시 메모리 장치 및 그것의 소거 방법
JP2012048770A (ja) 2010-08-24 2012-03-08 Toshiba Corp 不揮発性半導体記憶装置、及び、メモリシステム
CN101930404B (zh) 2010-08-27 2012-11-21 威盛电子股份有限公司 存储装置及其操作方法
KR101807250B1 (ko) 2011-07-11 2017-12-11 삼성전자주식회사 3차원 반도체 장치의 제조 방법
KR101818506B1 (ko) 2011-08-22 2018-01-15 삼성전자 주식회사 3차원 반도체 메모리 장치
KR101861545B1 (ko) 2012-01-02 2018-05-29 삼성전자주식회사 저장 장치의 데이터 관리 방법
KR102190694B1 (ko) * 2014-03-14 2020-12-14 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
KR20160005264A (ko) * 2014-07-04 2016-01-14 삼성전자주식회사 저장 장치 및 그것의 읽기 방법들

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090150601A1 (en) * 2001-01-19 2009-06-11 Conley Kevin M Partial Block Data Programming And Reading Operations In A Non-Volatile Memory
US20060155921A1 (en) * 2004-12-16 2006-07-13 Gorobets Sergey A Non-volatile memory and method with multi-stream update tracking
US20080077842A1 (en) * 2006-09-27 2008-03-27 Gonzalez Carlos J Memory with Cell Population Distribution Assisted Read Margining
US20110119564A1 (en) * 2009-11-16 2011-05-19 Samsung Electronics Co., Ltd. Flash memory device and memory system comprising same
US20120294104A1 (en) * 2011-05-17 2012-11-22 Samsung Electronics Co., Ltd. Nonvolatile memory systems using time-dependent read voltages and methods of operating the same
US20130290597A1 (en) * 2011-09-30 2013-10-31 Intel Corporation Generation of far memory access signals based on usage statistic tracking
US20130238836A1 (en) * 2012-03-06 2013-09-12 Hitachi, Ltd. Semiconductor storage device having nonvolatile semiconductor memory
US20130326312A1 (en) * 2012-06-01 2013-12-05 Joonho Lee Storage device including non-volatile memory device and repair method

Also Published As

Publication number Publication date
US9837163B2 (en) 2017-12-05
US20150179274A1 (en) 2015-06-25
KR102116258B1 (ko) 2020-06-05

Similar Documents

Publication Publication Date Title
KR102116258B1 (ko) 메모리 시스템 및 그것을 포함하는 유저 장치
US10497444B2 (en) Three-dimensional nonvolatile memory and related read method designed to reduce read disturbance
KR102068342B1 (ko) 메모리 제어기 및 그것을 포함하는 메모리 시스템
KR101893143B1 (ko) 비휘발성 메모리 장치, 그것의 프로그램 방법 및 읽기 방법, 및 그것을 포함하는 메모리 시스템
KR102503177B1 (ko) 메모리 시스템 및 그것의 동작 방법
KR102187643B1 (ko) 메모리 시스템 및 그것을 포함하는 유저 장치
US11210004B2 (en) Controller memory system to perform a single level cell (SLC), or multi level cell (MLC) or triple level cell (TLC) program operation on a memory block
KR102128825B1 (ko) 불휘발성 메모리 장치 및 그것의 동작 방법
KR20120028581A (ko) 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 장치들
KR20170026926A (ko) 데이터 양에 기초하여 복수의 데이터 스트림을 관리하도록 구성되는 스토리지 장치
KR20170005915A (ko) 불휘발성 메모리 장치를 포함하는 스토리지 장치
KR102140512B1 (ko) 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 불휘발성 메모리 시스템 및 불휘발성 메모리 시스템의 동작 방법
KR20170036964A (ko) 불휘발성 메모리 시스템의 동작 방법
KR102578188B1 (ko) 메모리 컨트롤러 및 이의 동작 방법
KR20150112075A (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
KR20130074294A (ko) 불 휘발성 메모리 장치 및 그것의 프로그램 방법
US10162568B2 (en) Method for searching matching key of storage device and server system including the same
KR20150006613A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102637478B1 (ko) 오픈 채널 솔리드 스테이트 드라이브, 이를 포함하는 비휘발성 메모리 시스템 및 오픈 채널 솔리드 스테이트 드라이브의 파워 로스 프로텍션 방법
KR20190092941A (ko) 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법
US10705746B2 (en) Memory system and operating method thereof
KR102626048B1 (ko) 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
KR20200116354A (ko) 메모리 시스템 및 그것의 동작 방법
US11113189B2 (en) Memory system to perform read reclaim and garbage collection, and method of operating the same
KR20160061676A (ko) 반도체 장치 및 이의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right