KR20160008365A - 저장 매체, 메모리 시스템 및 메모리 시스템에서의 저장 영역 관리 방법 - Google Patents

저장 매체, 메모리 시스템 및 메모리 시스템에서의 저장 영역 관리 방법 Download PDF

Info

Publication number
KR20160008365A
KR20160008365A KR1020140088454A KR20140088454A KR20160008365A KR 20160008365 A KR20160008365 A KR 20160008365A KR 1020140088454 A KR1020140088454 A KR 1020140088454A KR 20140088454 A KR20140088454 A KR 20140088454A KR 20160008365 A KR20160008365 A KR 20160008365A
Authority
KR
South Korea
Prior art keywords
data
storage area
block
memory
memory device
Prior art date
Application number
KR1020140088454A
Other languages
English (en)
Inventor
이재일
김근수
허재훈
홍두원
오문욱
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020140088454A priority Critical patent/KR20160008365A/ko
Priority to US14/751,800 priority patent/US20160011971A1/en
Publication of KR20160008365A publication Critical patent/KR20160008365A/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • 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/7205Cleaning, compaction, garbage collection, erase control

Abstract

저장 매체, 메모리 시스템 및 메모리 시스템에서의 저장 영역 관리 방법에 관하여 개시한다. 메모리 시스템에서의 저장 영역 관리 방법은 메모리 장치의 제1저장 영역에 포함된 물리적 주소에 업데이트 빈도에 기초하여 분류된 핫 데이터 또는 상기 핫 데이터보다 업데이트 빈도가 낮은 콜드 데이터 중에서 상기 핫 데이터의 논리적 주소가 매핑되도록 라이트 요청된 데이터의 논리적 어드레스를 물리적 어드레스로 변환하는 단계 및 상기 라이트 요청된 데이터를 상기 메모리 장치의 변환된 물리적 어드레스에 라이트하는 단계를 포함하고, 상기 메모리 장치의 블록 단위의 저장 영역을 시간의 경과에 따른 챠지 손실에 기초하여 상기 제1저장 영역 및 제2저장 영역으로 분할하고, 상기 제1저장 영역은 상기 제2저장 영역에 비하여 시간의 경과에 따른 챠지 손실이 큰 저장 영역으로 결정되는 것을 특징으로 한다.

Description

저장 매체, 메모리 시스템 및 메모리 시스템에서의 저장 영역 관리 방법{storage medium, memory system and method for managing storage space in memory system}
본 발명의 기술적 사상은 메모리 시스템에서의 저장 영역 관리 방법 및 장치에 관한 것으로서, 자세하게는 저장 매체, 메모리 시스템 및 메모리 시스템에서의 저장 영역 관리 방법에 관한 것이다.
비휘발성 메모리 장치는 전원이 차단되더라도 저장된 정보를 보존할 수 있는 메모리 장치이다. 비휘발성 메모리 장치의 일예로는 플래시 메모리 장치 등이 있다. 비휘발성 메모리 장치의 저장 영역에 따라서 챠지 손실(charge loss) 특성이 다르게 나타나는 경향이 있다. 이로 인하여, 챠지 손실 특성이 좋지 않은 저장 영역에서 읽기 성능이 저하된다. 따라서, 챠지 손실 특성이 좋지 않은 저장 영역에서의 읽기 성능이 저하되는 것을 방지하기 위한 방안들이 논의되고 있다.
본 발명의 기술적 사상이 해결하려는 과제는 메모리 장치의 챠지 손실 특성이 좋지 않은 저장 영역에서의 읽기 성능이 저하되는 것을 방지하기 위한 메모리 시스템에서의 저장 영역 관리 방법을 제공하는데 있다.
본 발명의 기술적 사상이 해결하려는 다른 과제는 메모리 장치의 챠지 손실 특성이 좋지 않은 저장 영역에서의 읽기 성능이 저하되는 것을 방지하기 위한 메모리 시스템을 제공하는데 있다.
본 발명의 기술적 사상이 해결하려는 또 다른 과제는 메모리 장치의 챠지 손실 특성이 좋지 않은 저장 영역에서의 읽기 성능이 저하되는 것을 방지하기 위한 메모리 시스템에서의 저장 영역 관리 방법을 컴퓨터에서 실행시키기 위한 프로그램 코드를 기록한 컴퓨터로 읽을 수 있는 저장매체를 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 메모리 시스템에서의 저장 영역 관리 방법은 메모리 장치의 제1저장 영역에 포함된 물리적 주소에 업데이트 빈도에 기초하여 분류된 핫 데이터 또는 상기 핫 데이터보다 업데이트 빈도가 낮은 콜드 데이터 중에서 상기 핫 데이터의 논리적 주소가 매핑되도록 라이트 요청된 데이터의 논리적 어드레스를 물리적 어드레스로 변환하는 단계 및 상기 라이트 요청된 데이터를 상기 메모리 장치의 변환된 물리적 어드레스에 라이트하는 단계를 포함하고, 상기 메모리 장치의 블록 단위의 저장 영역을 시간의 경과에 따른 챠지 손실에 기초하여 상기 제1저장 영역 및 제2저장 영역으로 분할하고, 상기 제1저장 영역은 상기 제2저장 영역에 비하여 시간의 경과에 따른 챠지 손실이 큰 저장 영역으로 결정되는 것을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 메모리 장치는 플래시 메모리 장치를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 플래시 메모리 장치는 3차원 수직 구조의 낸드 플래시 메모리 장치를 포함하고, 상기 3차원 수직 구조의 낸드 플래시 메모리 장치에서의 제1임계 워드라인 이상의 상위 워드라인들에 접속된 메모리 셀들을 상기 제1저장 영역으로 분류하고, 상기 제1임계 워드라인 미만의 하위 워드라인들에 접속된 메모리 셀들을 상기 제2저장 영역으로 분류할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 장치는 플래너 낸드 플래시 메모리 장치를 포함하고, 상기 플래너 낸드 플래시 메모리 장치에서의 제2임계 워드라인 미만의 하위 워드라인들 또는 제3임계 워드라인 이상의 상위 워드라인들에 접속된 메모리 셀들을 상기 제1저장 영역으로 결정하고, 상기 제3임계 워드라인은 상기 제2임계 워드라인보다 상위 워드라인으로 결정할 수 있다.
본 발명의 실시 예에 따르면, 상기 물리적 어드레스로 변환하는 단계는 상기 콜드 데이터의 논리적 어드레스를 상기 제2저장 영역에 포함된 물리적 어드레스로 변환할 수 있다.
본 발명의 실시 예에 따르면, 상기 물리적 어드레스로 변환하는 단계는 상기 콜드 데이터를 업데이트 빈도에 기초하여 복수의 서브 콜드 레벨로 분류하고, 상기 메모리 장치의 동일 블록의 제2저장 영역에 포함된 물리적 어드레스에 상기 복수의 서브 콜드 레벨 중에서 동일 레벨에 속하는 데이터의 논리적 어드레스가 매핑되도록 상기 호스트로부터 수신된 데이터에 대한 어드레스 변환을 수행할 수 있다.
본 발명의 실시 예에 따르면, 상기 물리적 어드레스로 변환하는 단계는 상기 콜드 데이터에 대한 라이트 요청이 있는 경우에 저장 영역의 일부에 데이터가 저장되어 있는 액티브 블록들 중에서 상기 콜드 데이터의 서브 콜드 레벨에 대응되는 제2저장 영역에 데이터를 쓸 수 있는 영역이 남아있는 타깃 액티브 블록을 검색하는 단계, 상기 검색 결과 상기 타깃 액티브 블록이 존재하는 경우에 상기 콜드 데이터의 논리적 어드레스를 상기 타깃 액티브 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환하는 단계 및 상기 검색 결과 상기 타깃 액티브 블록이 존재하지 않는 경우에 상기 콜드 데이터의 논리적 어드레스를 새로운 프리 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 물리적 어드레스로 변환하는 단계는 상기 검색 결과 상기 타깃 액티브 블록이 존재하지 않는 경우에 상기 콜드 데이터의 서브 콜드 레벨에 기초하여 업데이트 빈도가 높을수록 프리 블록들 중에서 프로그램/이레이즈 회수가 낮은 새로운 프리 블록을 할당하고, 상기 콜드 데이터의 논리적 어드레스를 상기 할당된 새로운 프리 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환할 수 있다.
본 발명의 실시 예에 따르면, 상기 물리적 어드레스로 변환하는 단계는 상기 콜드 데이터에 대한 라이트 요청이 있는 경우에 저장 영역의 일부에 데이터가 저장되어 있는 액티브 블록들 중에서 상기 제2저장 영역에 데이터를 쓸 수 있는 영역이 남아있는 타깃 액티브 블록을 검색하는 단계, 상기 검색 결과 상기 타깃 액티브 블록이 존재하는 경우에 상기 콜드 데이터의 논리적 어드레스를 상기 타깃 액티브 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환하는 단계 및 상기 검색 결과 상기 타깃 액티브 블록이 존재하지 않는 경우에 상기 콜드 데이터의 논리적 어드레스를 새로운 프리 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 물리적 어드레스로 변환하는 단계는 상기 핫 데이터에 대한 라이트 요청이 있는 경우에 저장 영역의 일부에 데이터가 저장되어 있는 액티브 블록들 중에서 상기 제2저장 영역에 데이터를 쓸 수 있는 영역이 남아있지 않은 타깃 액티브 블록을 검색하는 단계, 상기 검색 결과 상기 타깃 액티브 블록이 존재하는 경우에 상기 핫 데이터의 논리적 어드레스를 상기 타깃 액티브 블록 내의 제1저장 영역에 포함된 물리적 어드레스로 변환하는 단계 및 상기 검색 결과 상기 타깃 액티브 블록이 존재하지 않는 경우에 상기 핫 데이터의 논리적 어드레스를 상기 액티브 블록들 중의 어느 하나의 액티브 블록 내의 제2저장 영역의 빈 페이지에 대응되는 물리적 어드레스로 변환하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 물리적 어드레스로 변환하는 단계는 상기 핫 데이터에 대한 라이트 요청이 있는 경우에 저장 영역의 일부에 데이터가 저장되어 있는 액티브 블록들 중에서 상기 제2저장 영역에 데이터를 쓸 수 있는 영역이 남아있지 않은 타깃 액티브 블록을 검색하는 단계, 상기 검색 결과 상기 타깃 액티브 블록이 존재하는 경우에 상기 핫 데이터의 논리적 어드레스를 상기 타깃 액티브 블록 내의 제1저장 영역에 포함된 물리적 어드레스로 변환하는 단계 및 상기 검색 결과 상기 타깃 액티브 블록이 존재하지 않는 경우에 상기 핫 데이터의 논리적 어드레스를 상기 액티브 블록들 중에서 업데이트 빈도가 가장 높은 제2저장 영역을 포함하는 액티브 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 장치의 무효한 페이지들의 저장 영역을 정리하는 가비지 컬렉션 동작을 수행하는 단계를 더 포함하고, 상기 가비지 컬렉션 동작을 수행하는 단계는 데이터가 소거된 프리 블록의 개수가 제4임계 값 미만인 경우에 데이터를 라이트할 수 있는 빈 페이지가 존재하지 않는 데이터 블록들 중에서 무효 페이지 개수가 가장 큰 데이터 블록을 희생 블록으로 결정하는 단계, 상기 희생 블록의 유효 페이지를 업데이트 빈도에 기초하여 상기 제1저장 영역 또는 제2저장 영역의 빈 페이지에 복사하는 단계 및 상기 희생 블록을 소거 처리하여 프리 블록을 생성시키는 단계를 포함하고, 상기 복사하는 단계는 상기 제1저장 영역에 상기 핫 데이터가 저장된 유효 페이지를 복사할 수 있다.
발명의 기술적 사상의 다른 면에 따른 메모리 시스템은 제1저장 영역 또는 제2저장 영역으로 분류된 복수의 메모리 셀들을 포함하는 메모리 장치 및 제1저장 영역에 업데이트 빈도에 기초하여 분류된 핫 데이터 또는 상기 핫 데이터보다 업데이트 빈도가 낮은 콜드 데이터 중에서 상기 핫 데이터를 쓰도록 상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고, 상기 복수의 메모리 셀들에 대한 시간의 경과에 따른 챠지 손실에 기초하여 상기 복수의 메모리 셀들을 제1저장 영역 또는 제2저장 영역으로 분류하고, 상기 제1저장 영역으로 분류된 메모리 셀들은 상기 제2저장 영역으로 분류된 메모리 셀들에 비하여 시간의 경과에 따른 챠지 손실이 큰 것을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 메모리 컨트롤러는 상기 콜드 데이터를 상기 제2저장 영역에 쓰도록 상기 메모리 장치를 제어할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 컨트롤러는 상기 콜드 데이터를 업데이트 빈도에 기초하여 복수의 서브 콜드 레벨로 분류하고, 상기 메모리 장치의 동일 블록 내의 제2저장 영역에는 상기 복수의 서브 콜드 레벨 중에서 동일 레벨에 속하는 데이터를 쓰도록 상기 메모리 장치를 제어할 수 있다.
본 발명의 실시 예에 따르면, 상기 메모리 컨트롤러는 라이트 요청된 데이터를 업데이트 빈도에 기초하여 핫 데이터 또는 콜드 데이터로 분류하고, 상기 콜드 데이터를 복수의 서브 콜드 레벨로 세분화하는 데이터 타입 판정부, 상기 메모리 장치의 블록 단위로 제2저장 영역에 대한 서브 콜드 레벨을 지정하고, 상기 콜드 데이터에 대한 서브 콜드 레벨로 지정된 제2저장 영역에 상기 콜드 데이터를 쓰도록 상기 메모리 장치를 제어하는 콜드 데이터 관리부 및 저장 영역의 일부에 데이터가 저장되어 있는 액티브 블록들 중에서 상기 제2저장 영역의 빈 페이지가 소진된 타깃 액티브 블록 내의 제1저장 영역에 상기 핫 데이터를 쓰도록 상기 메모리 장치를 제어하는 핫 데이터 관리부를 포함할 수 있다.
발명의 기술적 사상의 다른 면에 따른 저장 매체는 메모리 장치의 제1저장 영역에 포함된 물리적 주소에 업데이트 빈도에 기초하여 분류된 핫 데이터 또는 상기 핫 데이터보다 업데이트 빈도가 낮은 콜드 데이터 중에서 상기 핫 데이터의 논리적 주소가 매핑되도록 호스트로부터 수신된 데이터의 논리적 어드레스를 물리적 어드레스로 변환하는 단계 및 상기 변환된 물리적 주소에 상기 호스트로부터 수신된 데이터를 라이트하는 단계를 포함하고, 상기 메모리 장치의 블록 단위의 저장 영역을 시간의 경과에 따른 챠지 손실에 기초하여 상기 제1저장 영역 및 제2저장 영역으로 분할하고, 상기 제1저장 영역은 상기 제2저장 영역에 비하여 시간의 경과에 따른 챠지 손실이 큰 저장 영역으로 결정되는 것을 특징으로 하는 메모리 시스템에서의 저장 영역 관리 방법을 컴퓨터에서 실행시키기 위한 프로그램 코드가 쓰여진 컴퓨터로 읽을 수 있는 저장매체를 포함한다.
본 발명에 따르면 비휘발성 메모리 장치의 챠지 손실 특성이 좋지 않은 저장 영역에 핫 데이터를 라이트하고, 그 외의 영역에 콜드 데이터를 라이트함으로써, 데이터 보존(retention) 특성을 높일 수 있는 효과가 발생된다.
예로서, 3차원 수직 구조의 낸드 플래시(VNAND) 메모리 장치에서의 블록별로 챠지 손실 특성이 좋지 않은 상위 어드레스 영역에 콜드 데이터가 저장되는 것을 방지하도록 어드레스 변환 처리를 수행함으로써, 데이터 보존 특성을 높일 수 있는 효과가 발생된다.
그리고, 메모리 시스템에서 콜드 데이터를 복수의 서브 콜드 레벨로 세분화하는 레벨링(leveling) 처리를 하고, 콜드 데이터의 서브 콜드 레벨에 대응되는 콜드 존에 콜드 데이터를 저장함으로써, 가비지 컬렉션 코스트를 줄일 수 있는 효과가 발생된다.
도 1은 본 발명의 일 실시 예에 따른 메모리 시스템을 개략적으로 나타내는 블록도이다.
도 2는 도 1의 메모리 시스템에 포함된 메모리 장치를 상세하게 나타내는 블록도이다.
도 3은 도 2에 도시된 메모리 셀 어레이의 일 예를 나타낸다.
도 4는 도 3에 도시된 메모리 셀 어레이에 포함된 제1메모리 블록의 일 예를 나타내는 회로도이다.
도 5는 도 4에 도시된 제1메모리 블록의 일 예의 비트 라인 방향에 따른 단면도이다.
도 6은 도 4에 도시된 제1메모리 블록의 일 예의 워드 라인 방향에 따른 단면도이다.
도 7은 도 4에 도시된 제1메모리 블록의 다른 예의 비트 라인 방향에 따른 단면도이다.
도 8은 도 4에 도시된 제1메모리 블록에 포함된 셀 스트링의 다른 예를 나타내는 회로도이다.
도 9는 도 4에 도시된 제1메모리 블록에 포함된 셀 스트링의 또 다른 예를 나타내는 회로도이다.
도 10은 도 3에 도시된 메모리 셀 어레이에 포함된 제1메모리 블록의 다른 예를 나타내는 회로도이다.
도 11은 도 4의 메모리 블록 또는 도 10의 메모리 블록에 포함된 메모리 셀의 일 예를 나타내는 단면도이다.
도 12a는 도 11의 메모리 셀이 멀티 레벨 셀인 경우에 메모리 장치의 제1저장 영역(hot zone)에서의 프로그램 완료 시점의 문턱 전압에 따른 분포와 프로그램 완료 시점부터 초기 설정된 시간 경과 후의 문턱 전압에 따른 메모리 셀들의 분포를 나타내는 그래프이다.
도 12b는 도 11의 메모리 셀이 멀티 레벨 셀인 경우에 메모리 장치의 제2저장 영역(cold zone)에서의 프로그램 완료 시점의 문턱 전압에 따른 분포와 프로그램 완료 시점부터 초기 설정된 시간 경과 후의 문턱 전압에 따른 메모리 셀들의 분포를 나타내는 그래프이다.
도 13은 도 1의 메모리 시스템에 포함된 메모리 컨트롤러를 상세하게 나타내는 블록도이다.
도 14는 본 발명의 실시 예에 따른 메모리 시스템에서의 메모리 블록들의 관계를 도시한 개념도이다.
도 15는 본 발명의 실시 예에 따른 메모리 시스템에서의 핫 데이터를 관리하는 방법의 일 예를 보여주는 메모리 블록들에 대한 개념도이다.
도 16은 본 발명의 실시 예에 따른 메모리 시스템에서의 핫 데이터를 관리하는 방법의 다른 예를 보여주는 메모리 블록들에 대한 개념도이다.
도 17은 본 발명의 실시 예에 따른 메모리 시스템에서의 콜드 존 레벨링 처리를 하지 않은 경우의 가비지 컬렉션 동작에서의 희생 블록을 결정하는 사례를 보여주는 도면이다.
도 18은 본 발명의 실시 예에 따른 메모리 시스템에서의 콜드 존 레벨링 처리를 한 경우의 가비지 컬렉션 동작에서의 희생 블록을 결정하는 사례를 보여주는 도면이다.
도 19는 본 발명의 일 실시 예에 따른 메모리 시스템에서의 저장 영역 관리 방법의 흐름도이다.
도 20은 본 발명의 다른 실시 예에 따른 메모리 시스템에서의 저장 영역 관리 방법의 흐름도이다.
도 21은 도 19 또는 도 20에 도시된 어드레스 변환 처리 단계에서의 콜드 데이터에 대한 어드레스 변환 처리 동작의 일 예를 보여주는 도면이다.
도 22는 도 19 또는 도 20에 도시된 어드레스 변환 처리 단계에서의 콜드 데이터에 대한 어드레스 변환 처리 동작의 다른 예를 보여주는 도면이다.
도 23은 도 19 또는 도 20에 도시된 어드레스변환 처리 단계에서의 핫 데이터에 대한 어드레스 변환 처리 동작의 일 예를 보여주는 도면이다.
도 24는 본 발명의 일 실시 예에 따른 메모리 시스템에서의 라이트 오퍼레이션 방법의 흐름도이다.
도 25는 본 발명의 실시 예들에 따른 메모리 시스템을 메모리 카드 시스템에 적용한 예를 나타내는 블록도이다.
도 26은 본 발명의 실시 예들에 따른 메모리 시스템을 포함하는 컴퓨팅 시스템을 나타내는 블록도이다.
도 27은 본 발명의 실시 예들에 따른 메모리 시스템을 SSD 시스템에 적용한 예를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 본 발명의 일 실시 예에 따른 메모리 시스템(100)을 개략적으로 나타내는 블록도이다.
도 1에 도시된 바와 같이, 메모리 시스템(100)은 메모리 장치(10)와 메모리 컨트롤러(20)를 포함한다. 메모리 장치(10)는 메모리 셀 어레이(11)를 포함할 수 있고, 메모리 컨트롤러(20)는 데이터 타입 판정부(21), 콜드 데이터 관리부(22) 및 핫 데이터 관리부(23)를 포함할 수 있다.
메모리 셀 어레이(11)는 복수의 워드 라인들(도 3의 WL)과 복수의 비트 라인들(도 3의 BL)이 교차하는 영역들에 배치되는 복수의 메모리 셀들을 포함할 수 있다. 일 실시예에서, 복수의 메모리 셀들은 플래시 메모리 셀들일 수 있고, 메모리 셀 어레이(11)는 낸드(NAND) 플래시 메모리 셀 어레이 또는 노아(NOR) 플래시 메모리 셀 어레이일 수 있다.
이하에서는, 복수의 메모리 셀들이 낸드 플래시 메모리 셀들인 경우를 예로 하여 본 발명의 실시예들을 상술하기로 한다. 일 예에서, 복수의 메모리 셀들은 3차원 수직 구조의 낸드(vertical NAND, VNAND) 플래시 메모리 셀들일 수 있다(도 4 내지 도 9 참조). 다른 예에서, 복수의 메모리 셀들은 2차원 플래너 낸드 플래시 메모리 셀들일 수 있다(도 10 참조). 그러나, 본 발명은 이에 한정되지 않고, 다른 실시예에서, 복수의 메모리 셀들은 RRAM(resistive RAM), PRAM(phase change RAM) 또는 MRAM(magnetic RAM)과 같은 저항형 메모리 셀들일 수 있다.
메모리 셀 어레이(11)는 복수개의 메모리 블록들을 포함한다. 메모리 블록 단위의 저장 영역을 시간의 경과에 따른 챠지 손실(charge loss)에 기초하여 제1저장 영역 및 제2저장 영역으로 분할할 수 있다. 제1저장 영역은 제2저장 영역에 비하여 시간의 경과에 따른 챠지 손실이 큰 저장 영역으로 결정할 수 있다. 제1저장 영역을 핫 존(hot zone)으로 칭하고, 제2저장 영역을 콜드 존(cold zone)으로 칭할 수 있다.
메모리 장치(10)의 메모리 블록들은 데이터 블록(data block), 액티브 블록(active block), 프리 블록(free block)으로 분류할 수 있다. 데이터 블록은 블록 내의 모든 페이지들에 데이터가 쓰여진 메모리 블록으로서, 데이터를 라이트할 수 있는 페이지가 소진된 블록을 나타낸다. 액티브 블록은 데이터가 일부 페이지에 쓰여져 있는 메모리 블록으로서, 데이터를 라이트할 수 있는 페이지가 남아있는 블록을 나타낸다. 프리 블록은 데이터가 소거된 메모리 블록으로서, 모든 페이지가 비어있는 블록을 나타낸다.
예로서, 3차원 수직 구조의 낸드 플래시 메모리 장치에서의 제1임계 워드라인 이상의 상위 워드라인들에 접속된 메모리 셀들을 제1저장 영역으로 결정하고, 제1임계 워드라인 미만의 하위 워드라인들에 접속된 메모리 셀들을 제2저장 영역으로 결정할 수 있다. 예로서, 제1임계 워드라인은 테스트 공정에서의 워드라인 별 메모리 셀들에 대한 프로그램 동작 후의 시간의 경과에 따른 챠지 손실 측정에 기초하여 결정할 수 있다. 세부적으로 블록 단위로 프로그램 동작 후 초기 설정된 시간 경과 후에 문턱 전압의 분포 상태를 최하위 워드라인으로부터 순차적으로 워드라인 별로 검사하여, 문턱 전압의 분포 상태가 임계 수준 이상으로 나빠지기 시작하는 워드라인을 제1임계 워드라인으로 결정할 수 있다.
다른 예로서, 플래너 낸드 플래시 메모리 장치에서의 제2임계 워드라인 미만의 하위 워드라인들 또는 제3임계 워드라인 이상의 상위 워드라인들에 접속된 메모리 셀들을 상기 제1저장 영역으로 결정하고, 제1저장 영역에 포함되지 않는 메모리 셀들을 제2저장 영역으로 결정할 수 있다. 여기에서, 제3임계 워드라인은 제2임계 워드라인보다 상위 워드라인에 해당된다. 예로서, 제2임계 워드라인 및 제3임계 워드라인은 테스트 공정에서의 워드라인 별 메모리 셀들에 대한 프로그램 동작 후의 시간의 경과에 따른 챠지 손실 측정에 기초하여 결정할 수 있다. 세부적으로 블록 단위로 프로그램 동작 후 초기 설정된 시간 경과 후에 문턱 전압의 분포 상태를 최하위 워드라인으로부터 순차적으로 워드라인 별로 검사하여, 문턱 전압의 분포 상태가 임계 수준 이상으로 나빠지기 시작하는 하위 임계 워드라인인 제2임계 워드라인과 상위 임계 워드라인인 제3임계 워드라인을 각각 결정할 수 있다.
메모리 컨트롤러(20)는 메모리 장치(10)에 대한 제어 동작을 수행할 수 있다. 구체적으로, 메모리 컨트롤러(20)는 호스트(HOST)로부터 수신되는 커맨드 및 어드레스에 기초하여 메모리 장치(10)를 제어하기 위한 어드레스(ADDR), 커맨드(CMD) 및 제어 신호(CTRL)를 생성할 수 있다. 그리고, 메모리 컨트롤러(20)는 메모리 장치(10)에 어드레스(ADDR), 커맨드(CMD) 및 제어 신호(CTRL)를 제공함으로써, 메모리 장치(10)에 대한 프로그램(program)(또는 쓰기), 독출(read) 및 소거(erase) 동작을 제어할 수 있다. 또한, 프로그램 동작을 위한 데이터(DATA)와 독출된 데이터(DATA)가 메모리 컨트롤러(20)와 메모리 장치(10) 사이에서 송수신될 수 있다.
데이터 타입 판정부(21)는 메모리 장치(10)에 라이트(write)할 데이터를 업데이트(update) 빈도에 기초하여 핫 데이터(hot data) 또는 콜드 데이터(cold data)로 판정한다. 예로서, 업데이트 회수가 임계치 이상인 데이터를 핫 데이터로 판정하고, 업데이트 회수가 임계치 미만인 데이터를 콜드 데이터로 판정할 수 있다. 다른 예로서, 현재를 기준으로 일정 시간 이전까지 발생된 업데이트 회수가 임계치 이상인 데이터를 핫 데이터로 판정하고, 그 외의 데이터를 콜드 데이터로 판정할 수도 있다. 또한, 파일의 속성에 따라서 업데이트 빈도를 예측하여 핫 데이터 또는 콜드 데이터로 판정할 수도 있다. 예로서, 파일의 확장자가 hwp, doc 또는 ppt 등과 같은 문서 파일들은 일반적으로 업데이트 발생 가능성이 높은 속성을 갖는다. 따라서, 문서 파일 등과 같은 업데이트 빈도가 높을 것으로 예상되는 데이터를 핫 데이터로 판정하고, 그 외의 데이터를 콜드 데이터로 판정할 수도 있다. 데이터 타입에 대한 판정 방법은 위에 예시된 방법에 한정되지 않고 다양한 방식에 의하여 라이트할 데이터를 핫 데이터 또는 콜드 데이터로 분류할 수 있다.
그리고, 데이터 타입 판정부(21)는 콜드 데이터로 판정된 데이터를 업데이트 빈도에 기초하여 복수의 레벨로 세분화할 수 있다. 즉, 콜드 데이터를 업데이트 빈도에 기초하여 복수의 서브 콜드 레벨로 세분화할 수 있다.
본 발명의 다른 실시 예에서는 라이트할 데이터에 대한 핫 데이터 또는 콜드 데이터 판정을 메모리 컨트롤러(20) 대신에 호스트에서 수행하고, 판정 결과에 대한 정보를 메모리 컨트롤러(20)로 전달할 수도 있다.
콜드 데이터 관리부(22)는 콜드 데이터로 판정된 데이터를 메모리 장치(10)의 콜드 존(cold zone)으로 지정된 제2저장 영역에 라이트하도록 메모리 장치(10)를 제어한다.
일 예로서, 콜드 데이터 관리부(22)는 콜드 데이터에 대한 라이트 요청이 있는 경우에 액티브 블록들 중에서 제2저장 영역에 데이터를 쓸 수 있는 빈 페이지가 남아있는 타깃 액티브 블록이 존재하는 경우에 라이트 요청된 콜드 데이터를 타깃 액티브 블록 내의 제2저장 영역의 빈 페이지에 쓰도록 메모리 장치(10)를 제어한다. 즉, 콜드 데이터 관리부(22)는 라이트 요청된 콜드 데이터를 타깃 액티브 블록 내의 제2저장 영역의 빈 페이지에 쓰기 위한 어드레스(ADDR), 커맨드(CMD) 및 제어신호(CTRL)를 메모리 장치(10)로 전송한다. 또한, 라이트 요청된 콜드 데이터도 메모리 장치(10)로 전송한다. 만일 메모리 장치(10)에서 타깃 액티브 블록이 검색되지 않는 경우에, 콜드 데이터 관리부(22)는 라이트 요청된 콜드 데이터를 새로운 프리 블록 내의 제2저장 영역에 쓰도록 메모리 장치(10)를 제어한다. 즉, 메모리 장치(10)에서 타깃 액티브 블록이 검색되지 않으면 콜드 데이터 관리부(22)는 라이트 요청된 콜드 데이터를 새로운 프리 블록 내의 제2저장 영역의 빈 페이지에 쓰기 위한 어드레스(ADDR), 커맨드(CMD) 및 제어신호(CTRL)를 메모리 장치(10)로 전송한다. 또한, 라이트 요청된 콜드 데이터도 메모리 장치(10)로 전송한다.
다른 예로서, 콜드 데이터 관리부(22)는 콜드 데이터에 대한 라이트 요청이 있는 경우에, 메모리 장치(10)의 블록 단위로 제2저장 영역에 대한 서브 콜드 레벨을 지정하고, 라이트 요청된 콜드 데이터에 대응되는 서브 콜드 레벨로 지정된 제2저장 영역에 콜드 데이터를 쓰도록 메모리 장치(10)를 제어한다. 즉, 콜드 데이터 관리부(22)는 액티브 블록들 중에서 라이트 요청된 콜드 데이터의 서브 콜드 레벨에 대응되는 제2저장 영역에 빈 페이지가 남아있는 타깃 액티브 블록이 존재하는 경우에 라이트 요청된 콜드 데이터를 타깃 액티브 블록 내의 제2저장 영역의 빈 페이지에 쓰기 위한 어드레스(ADDR), 커맨드(CMD) 및 제어신호(CTRL)를 메모리 장치(10)로 전송한다. 또한, 라이트 요청된 콜드 데이터도 메모리 장치(10)로 전송한다. 만일 메모리 장치(10)에서 타깃 액티브 블록이 검색되지 않는 경우에, 콜드 데이터 관리부(22)는 라이트 요청된 콜드 데이터를 새로운 프리 블록 내의 제2저장 영역에 쓰도록 메모리 장치(10)를 제어한다. 즉, 메모리 장치(10)에서 타깃 액티브 블록이 검색되지 않으면, 콜드 데이터 관리부(22)는 라이트 요청된 콜드 데이터를 새로운 프리 블록 내의 제2저장 영역의 빈 페이지에 쓰기 위한 어드레스(ADDR), 커맨드(CMD) 및 제어신호(CTRL)를 메모리 장치(10)로 전송한다. 또한, 라이트 요청된 콜드 데이터도 메모리 장치(10)로 전송한다. 콜드 데이터 관리부(22) 새로운 프리 블록에 최초로 쓰여진 콜드 데이터의 서브 콜드 레벨로 새로운 프리 블록 내의 제2저장 영역에 대한 서브 콜드 레벨을 지정한다.
핫 데이터 관리부(23)는 메모리 장치(10)의 핫 존(hot zone)으로 지정된 제1저장 영역에 핫 데이터를 라이트하도록 메모리 장치(10)를 제어한다.
일 예로서, 핫 데이터 관리부(23)는 핫 데이터에 대한 라이트 요청이 있는 경우에 액티브 블록들 중에서 제2저장 영역의 빈 페이지가 남아있지 않은 타깃 액티브 블록 내의 제1저장 영역에 핫 데이터를 쓰도록 메모리 장치(10)를 제어한다. 즉, 핫 데이터 관리부(23)는 라이트 요청된 핫 데이터를 타깃 액티브 블록 내의 제1저장 영역에 쓰기 위한 어드레스(ADDR), 커맨드(CMD) 및 제어신호(CTRL)를 메모리 장치(10)로 전송한다. 또한, 라이트 요청된 핫 데이터도 메모리 장치(10)로 전송한다. 만일 메모리 장치(10)에서 타깃 액티브 블록이 검색되지 않는 경우에, 핫 데이터 관리부(23)는 라이트 요청된 핫 데이터를 액티브 블록들 중의 어느 하나의 액티브 블록 내의 제2저장 영역의 빈 페이지에 쓰도록 메모리 장치(10)를 제어한다. 즉, 메모리 장치(10)에서 타깃 액티브 블록이 검색되지 않으면, 핫 데이터 관리부(23)는 라이트 요청된 핫 데이터를 액티브 블록들 중의 어느 하나의 액티브 블록 내의 제2저장 영역의 빈 페이지에 쓰기 위한 어드레스(ADDR), 커맨드(CMD) 및 제어신호(CTRL)를 메모리 장치(10)로 전송한다. 또한, 라이트 요청된 핫 데이터도 메모리 장치(10)로 전송한다.
다른 예로서, 핫 데이터에 대한 라이트 요청이 있는 경우에 액티브 블록들 중에서 제2저장 영역의 빈 페이지가 소진된 타깃 액티브 블록이 검색되지 않으면, 핫 데이터 관리부(23)는 액티브 블록들 중에서 업데이트 빈도가 가장 높은 제2저장 영역을 포함하는 액티브 블록 내의 제2저장 영역의 빈 페이지에 라이트 요청된 핫 데이터를 쓰도록 메모리 장치(10)를 제어한다. 즉, 타깃 액티브 블록이 검색되지 않으면 핫 데이터 관리부(23)는 액티브 블록들 중에서 업데이트 빈도가 가장 높은 서브 콜드 레벨로 지정된 제2저장 영역을 갖는 액티브 블록 내의 제2저장 영역의 빈 페이지에 라이트 요청된 핫 데이터를 쓰기 위한 어드레스(ADDR), 커맨드(CMD) 및 제어신호(CTRL)를 메모리 장치(10)로 전송한다. 또한, 라이트 요청된 핫 데이터도 메모리 장치(10)로 전송한다.
위에서 설명한 메모리 컨트롤러(20)에 포함된 데이터 타입 판정부(21), 콜드 데이터 관리부(22) 및 핫 데이터 관리부(23)는 하드웨어 설계로 구현될 수도 있고, 펌웨어(firmware) 설계로 구현될 수도 있다.
도 2는 도 1에 도시된 메모리 장치(10)를 상세하게 나타내는 블록도이다.
도 2를 참조하면, 메모리 장치(10)는 메모리 셀 어레이(11), 제어 로직(control logic; 12), 전압 생성부(13), 로우 디코더(14) 및 페이지 버퍼(15)를 포함할 수 있다. 이하에서는, 메모리 장치(10)에 포함된 구성 요소들에 대하여 상술하기로 한다.
메모리 셀 어레이(11)는 하나 이상의 스트링 선택 라인(SSL), 복수의 워드 라인들(WL) 및 하나 이상의 접지 선택 라인(GSL)에 연결될 수 있으며, 또한 복수의 비트 라인들(BL)에 연결될 수 있다. 메모리 셀 어레이(11)는 복수의 워드 라인들(WL) 및 복수의 비트 라인들(BL)이 교차하는 영역들에 배치되는 복수의 메모리 셀들(도 4, 9 내지 11의 MC)을 포함할 수 있다.
메모리 셀 어레이(11)에 소거 전압이 인가되면 복수의 메모리 셀들(MC)은 소거 상태가 되며, 메모리 셀 어레이(11)에 프로그램 전압이 인가되면 복수의 메모리 셀들(MC)은 프로그램 상태가 된다. 이때, 각 메모리 셀(MC)은 문턱 전압에 따라 구분되는 소거 상태 및 제1 내지 제n 프로그램 상태들(P1 내지 Pn) 중 하나를 가질 수 있다.
여기서, n은 2 이상의 자연수일 수 있다. 예를 들어, 메모리 셀(MC)이 2 비트 레벨 셀인 경우 n은 3일 수 있다. 다른 예에서, 메모리 셀(MC)이 3 비트 레벨 셀인 경우 n은 7일 수 있다. 또 다른 예에서, 메모리 셀(MC)이 4 비트 레벨 셀인 경우 n은 15일 수 있다. 이와 같이, 복수의 메모리 셀들(MC)은 멀티 레벨 셀들을 포함할 수 있다. 그러나, 본 발명의 기술적 사상은 이에 한정되지 않고, 복수의 메모리 셀들(MC)은 싱글 레벨 셀들을 포함할 수도 있다.
제어 로직(12)은 메모리 컨트롤러(210)로부터 수신한 커맨드(CMD), 어드레스(ADDR) 및 제어 신호(CTRL)를 기초로 하여, 메모리 셀 어레이(11)에 데이터를 기입하거나 메모리 셀 어레이(11)로부터 데이터를 독출하기 위한 각종 제어 신호를 출력할 수 있다. 이로써, 제어 로직(12)은 메모리 장치(10) 내의 각종 동작을 전반적으로 제어할 수 있다.
제어 로직(12)에서 출력된 각종 제어 신호는 전압 생성부(13), 로우 디코더(14) 및 페이지 버퍼(15)에 제공될 수 있다. 구체적으로, 제어 로직(12)은 전압 생성부(13)에 전압 제어 신호(CTRL_vol)를 제공할 수 있고, 로우 디코더(14)에 로우 어드레스(X_ADDR)를 제공할 수 있으며, 페이지 버퍼(15)에 칼럼 어드레스(Y_ADDR)를 제공할 수 있다.
전압 생성부(13)는 전압 제어 신호(CTRL_vol)를 기초로 하여 메모리 셀 어레이(11)에 대한 프로그램, 독출 및 소거 동작을 수행하기 위한 다양한 종류의 전압들을 생성할 수 있다. 구체적으로, 전압 생성부(13)는 복수의 워드 라인들(WL)을 구동하기 위한 제1 구동 전압(VWL), 복수의 스트링 선택 라인들(SSL)을 구동하기 위한 제2 구동 전압(VSSL) 및 복수의 라운드 선택 라인들(GSL)을 구동하기 위한 제3 구동 전압(VGSL)을 생성할 수 있다.
이때, 제1 구동 전압(VWL)은 프로그램 전압(또는 기입 전압), 독출 전압, 소거 전압, 패스 전압 또는 프로그램 검증 전압일 수 있다. 또한, 제2 구동 전압(VSSL)은 스트링 선택 전압, 즉, 온(on) 전압 또는 오프(off) 전압일 수 있다. 나아가, 제3 구동 전압(VGSL)은 그라운드 선택 전압, 즉, 온 전압 또는 오프 전압일 수 있다.
본 실시예에서, 전압 생성부(13)는 전압 제어 신호(CTRL_vol)를 기초로 하여, 프로그램 루프가 시작될 때, 즉, 프로그램 루프의 횟수가 1인 경우, 프로그램 시작 전압을 프로그램 전압으로 생성할 수 있다. 또한, 전압 생성부(13)는 프로그램 루프의 횟수가 증가할수록 프로그램 시작 전압에서 스텝 전압만큼 단계적으로 증가하는 전압을 프로그램 전압으로 생성할 수 있다.
로우 디코더(14)는 복수의 워드 라인들(WL)을 통해 메모리 셀 어레이(11)에 연결되고, 제어 로직(12)으로부터 수신한 로우 어드레스(X_ADDR)에 응답하여 복수의 워드 라인들(WL) 중 일부 워드 라인을 활성화할 수 있다. 구체적으로, 독출 동작 시에 로우 디코더(14)는 선택된 워드 라인에 독출 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다.
한편, 프로그램 동작 시에 로우 디코더(14)는 선택된 워드 라인에 프로그램 전압을 인가하고, 비 선택된 워드 라인에 패스 전압을 인가할 수 있다. 본 실시예에서, 프로그램 루프들 중 적어도 하나에서 로우 디코더(14)는 선택된 워드 라인 및 추가 선택된 워드 라인에 프로그램 전압을 인가할 수 있다.
페이지 버퍼(15)는 복수의 비트 라인들(BL)을 통해 메모리 셀 어레이(11)에 연결될 수 있다. 구체적으로, 독출 동작 시에 페이지 버퍼(15)는 감지 증폭기(sense amplifier)로 동작하여 메모리 셀 어레이(11)에 저장된 데이터(DATA)를 출력할 수 있다. 한편, 프로그램 동작 시에 페이지 버퍼(15)는 기입 드라이버(write driver)로 동작하여 메모리 셀 어레이(11)에 저장하고자 하는 데이터(DATA)를 입력시킬 수 있다.
도 3은 도 2에 도시된 메모리 셀 어레이(11)의 일 예를 나타낸다.
도 3을 참조하면, 메모리 셀 어레이(11)는 플래시 메모리 셀 어레이일 수 있다. 이때, 메모리 셀 어레이(11)는 a(a는 2 이상의 정수)개의 메모리 블록들(BLK1 내지 BLKa)을 포함하고, 각 메모리 블록(BLK1 내지 BLKa)은 b(b는 2이상의 정수)개의 페이지들(PAGE1 내지 PAGEb)을 포함하며, 각 페이지들(PAGE1 내지 PAGEb)은 c(c는 2 이상의 정수)개의 섹터들(SEC1 내지 SECc)을 포함할 수 있다. 도 3에서는 도시의 편의를 위해, 메모리 블록 BLK1에 대하여만 페이지들(PAGE0 내지 PAGEb) 및 섹터들(SEC1 내지 SECc)을 도시하였으나, 다른 메모리 블록들(BLK2 내지 BLKa)도 블록 BLK1과 동일한 구조를 가질 수 있다.
도 4는 도 3에 도시된 메모리 셀 어레이(11)에 포함된 제1메모리 블록의 일 예(BLK1a)를 나타내는 회로도이다.
도 4를 참조하면, 제1 메모리 블록(BLK1a)은 수직 구조의 낸드 플래시 메모리일 수 있다. 이때, 도 3에 도시된 각 블록들(BLK1 내지 BLKa)은 도 4와 같이 구현될 수 있다. 도 4에서, 제1 방향은 x 방향으로, 제2 방향은 y 방향으로, 제3 방향은 z 방향으로 지칭하기로 한다. 그러나, 본 발명은 이에 한정되지 않고, 제1 내지 제3 방향은 변경될 수도 있다.
제1 메모리 블록(BLK1a)은 복수의 셀 스트링들(CST), 복수의 워드 라인들(WL), 복수의 비트 라인들(BL), 복수의 그라운드 선택 라인들(GSL1, GSL2), 복수의 스트링 선택 라인들(SSL1, SSL2) 및 공통 소스 라인(CSL)을 포함할 수 있다. 여기서, 셀 스트링들(CST)의 개수, 워드 라인들(WL)의 개수, 비트 라인들(BL)의 개수, 그라운드 선택 라인들(GSL1, GSL2)의 개수 및 스트링 선택 라인들(SSL1, SSL2)의 개수는 실시 예에 따라 다양하게 변경될 수 있다.
셀 스트링(CST)은 대응되는 비트 라인(BL)과 공통 소스 라인(CSL) 사이에 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC) 및 그라운드 선택 트랜지스터(GST)를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 다른 실시 예에서, 셀 스트링(CST)은 적어도 하나의 더미 셀을 더 포함할 수 있다. 또 다른 실시 예에서, 셀 스트링(CST)은 적어도 두 개의 스트링 선택 트랜지스터들 또는 적어도 두 개의 그라운드 선택 트랜지스터들을 포함할 수도 있다.
또한, 셀 스트링(CST)은 제3 방향(z 방향)으로 신장될 수 있는데, 구체적으로, 기판(도 5의 310) 상에 수직 방향(z 방향)으로 신장될 수 있다. 따라서, 셀 스트링(CST)을 포함하는 메모리 블록(BLK1a)을 수직 방향의 낸드 플래시 메모리라고 지칭할 수 있다. 이와 같이, 셀 스트링(CST)을 기판 상에 수직 방향(z)으로 신장시킴으로써, 메모리 셀 어레이(11)의 집적도를 향상시킬 수 있다.
복수의 워드 라인들(WL)은 제1 방향(x) 및 제2 방향(y)으로 연장되고, 각 워드 라인(WL)은 대응되는 메모리 셀들(MC)과 연결될 수 있다. 이에 따라, 동일 층에서 제1 방향(x) 및 제2 방향(y)을 따라 이웃하게 배열된 복수의 메모리 셀들(MC)은 동일한 워드 라인(WL)에 연결될 수 있다. 구체적으로, 각 워드 라인(WL)은 메모리 셀(MC)의 게이트에 연결되어 메모리 셀(MC)을 제어할 수 있다. 이때, 복수의 메모리 셀들(MC)은 데이터를 저장할 수 있으며, 연결된 워드 라인(WL)의 제어에 따라 프로그램, 독출 또는 소거될 수 있다.
복수의 비트 라인들(BL)은 제1 방향(x)으로 연장되고, 스트링 선택 트랜지스터(SST)와 연결될 수 있다. 이에 따라, 제1 방향(x)을 따라 이웃하게 배열된 복수의 스트링 선택 트랜지스터들(SST)은 동일한 비트 라인(BL)에 연결될 수 있다. 구체적으로, 각 비트 라인(BL)은 스트링 선택 트랜지스터(SST)의 드레인에 연결될 수 있다.
복수의 스트링 선택 라인들(SSL1, SSL2)은 제2 방향(y)으로 연장되고, 스트링 선택 트랜지스터(SST)와 연결될 수 있다. 이에 따라, 제2 방향(y)을 따라 이웃하게 배열된 복수의 스트링 선택 트랜지스터들(SST)은 동일한 스트링 선택 라인(SSL1 또는 SSL2)에 연결될 수 있다. 구체적으로, 각 스트링 선택 라인(SSL1 또는 SSL2)은 스트링 선택 트랜지스터(SST)의 게이트에 연결되어 스트링 선택 트랜지스터(SST)를 제어할 수 있다.
복수의 그라운드 선택 라인들(GSL1, GSL2)은 제2 방향(y)으로 연장되고, 그라운드 선택 트랜지스터(GST)와 연결될 수 있다. 이에 따라, 제2 방향(y)을 따라 이웃하게 배열된 복수의 그라운드 선택 트랜지스터들(GST)은 동일한 그라운드 선택 라인(GSL1 또는 GSL2)에 연결될 수 있다. 구체적으로, 각 그라운드 선택 라인(GSL1 또는 GSL2)은 그라운드 선택 트랜지스터(GST)의 게이트에 연결되어 그라운드 선택 트랜지스터(GST)를 제어할 수 있다.
또한, 각 셀 스트링(CST)에 포함된 그라운드 선택 트랜지스터들(GST)은 공통 소스 라인(CSL)에 공통으로 연결될 수 있다. 구체적으로, 공통 소스 라인(CSL)은 그라운드 선택 트랜지스터(GST)의 소스에 연결될 수 있다.
여기서, 동일한 워드 라인(WL) 및 동일한 스트링 선택 라인(SSL1 또는 SSL2)에 공통으로 연결되고, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 페이지(PAGE)라고 지칭할 수 있다. 예를 들어, 제1 워드 라인(WL1)에 공통으로 연결되고, 제1 스트링 선택 라인(SSL1)에 공통으로 연결되며, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 제1 페이지(PAGE1)라고 지칭할 수 있다. 또한, 제1 워드 라인(WL1)에 공통으로 연결되고, 제2 스트링 선택 라인(SSL2)에 공통으로 연결되며, 제2 방향(y)을 따라 이웃하게 배치되는 복수의 메모리 셀들(MC)은 제2 페이지(PAGE2)라고 지칭할 수 있다.
메모리 셀(MC)에 대한 프로그램 동작을 수행하기 위해서는, 비트 라인(BL)에 0V를 인가하고, 스트링 선택 라인(SSL)에 온(on) 전압을 인가하고, 그라운드 선택 라인(GSL)에 오프(off) 전압을 인가할 수 있다. 온 전압은 스트링 선택 트랜지스터(SST)를 턴-온(turn-on) 시키도록 그 문턱 전압보다 크거나 같을 수 있고, 오프 전압은 그라운드 선택 트랜지스터들(GST)을 턴-오프(turn-off) 시키도록 그 문턱 전압보다 작을 수 있다. 또한, 메모리 셀들(MC) 중 선택 메모리 셀에는 프로그램 전압을 인가하고, 나머지 메모리 셀들에는 패스 전압을 인가할 수 있다. 프로그램 전압이 인가되면, F-N 터널링에 의해 메모리 셀들(MC) 내로 전하가 주입될 수 있다. 패스 전압은 메모리 셀들(MC)의 문턱 전압보다 클 수 있다.
메모리 셀(MC)에 대한 소거 동작을 수행하기 위해서는, 메모리 셀들(MC)의 바디(body)에 소거 전압을 인가하고, 워드 라인들(WL)에 0V를 인가할 수 있다. 이에 따라, 메모리 셀들(MC)의 데이터가 일시에 소거될 수 있다.
도 5는 도 4의 제1 메모리 블록의 일 예(BLK1a')의 비트 라인 방향에 따른 단면도이다. 도 6은 도 4의 제1 메모리 블록의 일 예(BLK1a')의 워드 라인 방향에 따른 단면도이다.
도 5 및 도 6을 참조하면, 제1 메모리 블록(BLK1a')은 제1 방향(x)으로 연장되는 주면(main surface)을 가지는 기판(310)을 가질 수 있다. 기판(310)은 반도체 물질, 예를 들어, IV족 반도체, III-V족 화합물 반도체, 또는 II-VI족 산화물 반도체를 포함할 수 있다. 예를 들어, IV족 반도체는 실리콘, 게르마늄 또는 실리콘-게르마늄을 포함할 수 있다. 이때, 기판(310)은 벌크 웨이퍼 또는 에피택셜 층으로 제공될 수도 있다.
반도체 기둥들(320a, 320b)은 기판(310) 상으로 수직 신장하도록 기판(310) 상에 배열될 수 있다. 반도체 기둥들(320a, 320b)은 폴리 실리콘 또는 단결정 실리콘과 같은 반도체 물질을 포함할 수 있으며, 상기 반도체 물질은 도핑되지 않거나, p-형 또는 n-형 불순물을 포함할 수 있다.
기판(310)은 반도체 기둥들(320a, 320b) 아래에 불순물 영역(315)을 포함할 수 있다. 불순물 영역(315)은 소스 영역이 될 수 있고, 기판(310)의 다른 영역과 PN 접합을 형성할 수 있다. 도 4의 공통 소스 라인(CSL)은 불순물 영역(315)과 연결될 수 있다. 다른 실시 예에서, 불순물 영역(315)은 반도체 기둥들(320a, 320b)의 하단에 한정될 수 있다.
메모리 셀들(MC)의 각각은 반도체 기둥(320a, 320b)의 측벽 상의 스토리지 매체(330) 및 스토리지 매체(330) 상의 제어 게이트 전극(360)을 포함할 수 있다. 각 스토리지 매체(330)는 반도체 기둥(320a, 320b)의 측벽 상의 터널링 절연층(332), 터널링 절연층(332) 상의 전하 저장층(334) 및 전하 저장층(334) 상의 블로킹 절연층(336)을 포함할 수 있다.
전하 저장층(332)은 전하 저장 능력을 가질 수 있다. 예를 들어, 전하 저장층(332)은 트랩 타입일 수 있고, 예컨대 실리콘 질화층, 양자 도트(quantum dots) 또는 나노 크리스탈(nanocrystals)을 포함할 수 있다. 양자 도트 또는 나노 크리스탈은 도전체, 예컨대 금속 또는 반도체의 미세 입자들로 구성될 수 있다. 터널링 절연층(335) 및 블로킹 절연층(336)은 산화막, 질화막 또는 고유전율막을 포함할 수 있다. 고유전율막은 산화막 및 질화막보다 높은 유전 상수를 갖는 유전막을 지칭할 수 있다.
스트링 선택 트랜지스터(SST)는 반도체 기둥(320a, 320b)의 측벽 상의 스트링 선택 게이트 전극(355)을 포함할 수 있다. 스트링 선택 트랜지스터(SST)는 비트 라인(380)에 연결될 수 있다. 비트 라인(380)은 제1 방향(x)을 따라 연장되는 라인 형상의 패턴으로 이루어질 수 있다. 그라운드 선택 트랜지스터(GST)는 반도체 기둥(320a, 320b)의 측벽 상의 그라운드 선택 게이트 전극(350)을 포함할 수 있다.
스트링 선택 트랜지스터(SST)와 반도체 기둥(320a, 320b) 사이, 그리고, 그라운드 선택 트랜지스터(GST)와 반도체기둥(320a, 320b) 사이의 스토리지 매체들(330)은 게이트 절연층의 기능을 할 수 있고, 따라서 하나의 절연층으로 대체될 수도 있다. 그라운드 선택 게이트 전극(350), 제어 게이트 전극들(360) 및 스트링 선택 게이트 전극들(355) 사이에는 층간 절연층들(340)이 개재될 수 있다. 스토리지 매체들(330)은 층간 절연층들(340)의 표면을 따라서 신장될 수 있다.
제1 및 제2 셀 스트링들(CST1, CST2)은 반도체 기둥(320a)을 사이에 두고 인접하게 배치되고, 제3 및 제4 셀 스트링들(CST3, CST4)은 반도체 기둥(320b)을 사이에 두고 인접하게 배치될 수 있다. 한편, 제2 셀 스트링(CST2) 및 제3 셀 스트링(CST3) 사이에는 절연층(370)이 배치될 수 있다.
스트링 선택 게이트 전극(355)은 콘택 플러그(385)를 통해서 스트링 선택 라인(SSL)에 연결될 수 있다. 제어 게이트 전극들(360)은 콘택 플러그들(390)을 통해서 대응되는 워드 라인들(WL1 내지 WLn)에 연결될 수 있다. 그라운드 선택 게이트 전극(350)은 콘택 플러그들(395)을 통해서 그라운드 선택 라인(GSL)에 연결될 수 있다.
도 7은 도 4에 도시된 제1메모리 블록의 다른 예(BLK1a")의 비트 라인 방향에 따른 단면도이다.
도 7을 참조하면, 제1 메모리 블록(BLK1a")은 제1 방향(x)으로 연장되는 주면을 가지는 기판(410)을 가질 수 있다. 기판(410)은 반도체 물질, 예를 들어, IV족 반도체, III-V족 화합물 반도체, 또는 II-VI족 산화물 반도체를 포함할 수 있다. 예를 들어, IV족 반도체는 실리콘, 게르마늄 또는 실리콘-게르마늄을 포함할 수 있다. 이때, 기판(410)은 벌크 웨이퍼 또는 에피택셜 층으로 제공될 수도 있다.
반도체 기둥(420)은 기판(410) 상으로 수직 신장하도록 기판(410) 상에 배열될 수 있다. 반도체 기둥(420)은 폴리실리콘 또는 단결정 실리콘과 같은 반도체 물질을 포함할 수 있으며, 상기 반도체 물질은 도핑되지 않거나, p-형 또는 n-형 불순물을 포함할 수 있다.
스토리지 매체(430)는 반도체 기둥(420)의 길이 방향을 따라 연장되도록 형성될 수 있다. 각 스토리지 매체(430)는 반도체 기둥(420)의 측벽 상의 터널링 절연층(432), 터널링 절연층(432) 상의 전하 저장층(434) 및 전하 저장층(434) 상의 블로킹 절연층(436)을 포함할 수 있다.
스트링 선택 트랜지스터(SST)는 반도체 기둥(420)의 측벽 상의 스트링 선택 게이트 전극(455)을 포함할 수 있다. 스트링 선택 트랜지스터(SST)는 비트 라인(480)에 연결될 수 있다. 비트 라인(480)은 제1 방향(x)을 따라 연장되는 라인 형상의 패턴으로 이루어질 수 있다. 그라운드 선택 트랜지스터(GST)는 반도체 기둥(420)의 측벽 상의 그라운드 선택 게이트 전극(450)을 포함할 수 있다.
스트링 선택 트랜지스터(SST)와 반도체 기둥(420) 사이, 그리고, 그라운드 선택 트랜지스터(GST)와 반도체 기둥(420) 사이의 스토리지 매체들(430)은 게이트 절연층의 기능을 할 수 있고, 따라서 하나의 절연층으로 대체될 수도 있다. 그라운드 선택 게이트 전극(450), 제어 게이트 전극들(460) 및 스트링 선택 게이트 전극들(455) 사이에는 층간 절연층들(440)이 개재될 수 있다.
도 8은 도 4에 도시된 제1메모리 블록에 포함된 셀 스트링의 다른 예(CST')를 나타내는 회로도이다.
도 8을 참조하면, 셀 스트링(CST')은 적어도 한 쌍의 스트링 선택 트랜지스터들(SST1, SST2), 복수의 메모리 셀들(MC) 및 적어도 한 쌍의 그라운드 선택 트랜지스터들(GST1, GST2)을 포함할 수 있다. 비트 라인(BL)은 셀 스트링(CST')의 일단에 연결되고, 공통 소스 라인(CSL)은 셀 스트링(CST')의 타단에 연결될 수 있다.
본 실시 예에 따른 셀 스트링(CST')에 포함된 구성 요소들 중 일부는 도 7의 셀 스트링(CST)에 포함된 구성 요소들과 실질적으로 동일하다. 동일한 구성 요소는 동일한 참조 부호로 표시되며, 도 4의 셀 스트링(CST)과 동일한 구성 요소들에 대해서는 반복하여 설명하지 않는다. 이하에서는, 도 4의 셀 스트링(CST)과 본 실시 예에 따른 셀 스트링(CST')의 차이점을 중심으로 상술하기로 한다.
복수의 메모리 셀들(MC)은 수직으로 직렬 배치될 수 있다. 메모리 셀들(MC)은 데이터를 저장할 수 있다. 복수의 워드 라인들(WL)은 메모리 셀들(MC)과 연결되어 메모리 셀들(MC)을 제어할 수 있다. 메모리 셀들(MC)의 수는 비휘발성 메모리 소자의 용량에 따라서 적절하게 선택될 수 있다.
적어도 한 쌍의 스트링 선택 트랜지스터들(SS1, SST2)은 메모리 셀들(MC)의 일측에 서로 인접하게 배열될 수 있다. 예를 들어, 스트링 선택 트랜지스터들(SST1, SST2)은 비트 라인(BL) 및 제n 메모리 셀(MCn) 사이에 배치되고 제n 메모리 셀(MCn)과 직렬 연결될 수 있다. 스트링 선택 트랜지스터들(SST1, SST2)은 비트 라인(BL)과 메모리 셀들(MC) 사이의 신호 전달을 제어할 수 있다. 스트링 선택 라인(SSL)은 스트링 선택 트랜지스터들(SST1, SST2)에 공통으로 결합될 수 있다. 따라서 스트링 선택 트랜지스터들(SST1, SST2)은 하나의 트랜지스터처럼 서로 연동되어 동작할 수 있다.
적어도 한 쌍의 그라운드 선택 트랜지스터들(GST1, GST2)은 스트링 선택 트랜지스터들(SST1, SSS2)의 반대편, 메모리 셀들(MC)의 타측에 서로 인접하게 배열될 수 있다. 예를 들어, 그라운드 선택트랜지스터들(GST1, GST2)은 공통 소스 라인(CSL) 및 제1 메모리 셀(MC1) 사이에 배치되고 제1 메모리 셀(MC1)과 직렬 연결될 수 있다. 접지 선택 트랜지스터들(GST1, GST2)은 공통 소스 라인(CSL)과 메모리 셀들(MC) 사이의 신호 전달을 제어할 수 있다. 그라운드 선택 라인(GSL)은 접지 선택 트랜지스터들(GST1, GST2)에 공통으로 결합될 수 있다. 따라서 그라운드 선택 트랜지스터들(GST1, GST2)은 하나의 트랜지스터처럼 서로 연동되어 동작할 수 있다.
본 실시 예에 따르면, 스트링 선택 트랜지스터들(SST1, SST2)의 개수를 적어도 두 개 이상으로 함으로써, 스트링 선택 게이트 전극들(도 5의 355) 각각의 길이를 한 개인 경우보다 크게 줄일 수 있어서 보이드(void) 없이 층간 절연층들(도 5의 340) 사이를 채울 수 있다. 나아가, 그라운드 선택 트랜지스터들(GST1, GST2)의 개수를 적어도 두 개 이상으로 함으로써, 그라운드 선택 게이트 전극들(도 5의 350) 각각의 길이를 한 개인 경우보다 크게 줄일 수 있어서 보이드 없이 층간 절연층들(도 5의 340) 사이를 채울 수 있다.
도 9는 도 4에 도시된 제1메모리 블록에 포함된 셀 스트링의 또 다른 예(CST")를 나타내는 회로도이다.
도 9를 참조하면, 셀 스트링(CST")은 적어도 한 쌍의 스트링 선택 트랜지스터들(SST1, SST2), 복수의 메모리 셀들(MC) 및 적어도 한 쌍의 그라운드 선택 트랜지스터들(GST1, GST2)을 포함할 수 있다. 비트 라인(BL)은 셀 스트링(CST")의 일단에 연결되고, 공통 소스 라인(CSL)은 셀 스트링(CST")의 타단에 연결될 수 있다.
본 실시 예에 따른 셀 스트링(CST")에 포함된 구성 요소들 중 일부는, 도 8의 셀 스트링(CST')에 포함된 구성 요소들과 실질적으로 동일하다. 동일한 구성 요소는 동일한 참조 부호로 표시되며, 도 8의 셀 스트링(CST')과 동일한 구성 요소들에 대해서는 반복하여 설명하지 않는다. 이하에서는, 도 8의 셀 스트링(CST')와 본 실시 예에 따른 셀 스트링(CST")의 차이점을 중심으로 상술하기로 한다.
적어도 한 쌍의 스트링 선택 트랜지스터들(SS1, SST2)은 메모리 셀들(MC)의 일측에 서로 인접하게 배열될 수 있다. 예를 들어, 스트링 선택 트랜지스터들(SST1, SST2)은 비트 라인(BL) 및 제n 메모리 셀(MCn) 사이에 배치되고 제n 메모리 셀(MCn)과 직렬 연결될 수 있다. 스트링 선택 트랜지스터들(SST1, SST2)은 비트 라인(BL)과 메모리 셀들(MC) 사이의 신호 전달을 제어할 수 있다. 이때, 제1 스트링 선택 라인(SSLa)은 제1 스트링 선택 트랜지스터(SST1)에 연결되고, 제2 스트링 선택 라인(SSLb)은 제2 스트링 선택 트랜지스터(SST2)에 연결될 수 있다.
적어도 한 쌍의 그라운드 선택 트랜지스터들(GST1, GST2)은 스트링 선택 트랜지스터들(SST1, SSS2)의 반대편, 메모리 셀들(MC)의 타측에 서로 인접하게 배열될 수 있다. 예를 들어, 그라운드 선택 트랜지스터들(GST1, GST2)은 공통 소스 라인(CSL) 및 제1 메모리 셀(MC1) 사이에 배치되고 제1 메모리 셀(MC1)과 직렬 연결될 수 있다. 접지 선택 트랜지스터들(GST1, GST2)은 공통 소스 라인(CSL)과 메모리 셀들(MC) 사이의 신호 전달을 제어할 수 있다. 이때, 제1 그라운드 선택 라인(GSLa)은 제1 그라운드 선택 트랜지스터(GST1)에 연결되고, 제2 그라운드 선택 라인(GSLb)은 제2 그라운드 선택 트랜지스터(GST2)에 연결될 수 있다.
도 10은 도 3의 메모리 셀 어레이에 포함된 제1 메모리 블록의 다른 예(BLK1b)를 나타내는 회로도이다.
도 10을 참조하면, 제1 메모리 블록(BLK1b)은 2차원 플래너 낸드 플래시 메모리일 수 있다. 이때, 도 3에 도시된 각 블록들(BLK1 내지 BLKa)은 도 10과 같이 구현될 수 있다. 도 10에서, 제1 방향은 x 방향으로, 제2 방향은 y 방향으로 지칭하기로 한다. 그러나, 본 발명은 이에 한정되지 않고, 제1 및 제2 방향은 변경될 수도 있다.
제1 메모리 블록(BLK1)은 복수의 셀 스트링들(CST), 복수의 워드 라인들(WL), 복수의 비트 라인들(BL), 그라운드 선택 라인(GSL), 스트링 선택 라인(SSL) 및 공통 소스 라인(CSL)을 포함할 수 있다. 여기서, 셀 스트링들(CST)의 개수, 워드 라인들(WL)의 개수, 비트 라인들(BL)의 개수는 실시예에 따라 다양하게 변경될 수 있다.
셀 스트링(CST)은 비트 라인(BL)과 공통 소스 라인(CSL) 사이에 직렬로 연결된 스트링 선택 트랜지스터(SST), 복수의 메모리 셀들(MC) 및 그라운드 선택 트랜지스터(GST)를 포함할 수 있다. 그러나, 본 발명은 이에 한정되지 않고, 다른 실시예에서, 셀 스트링(CST)은 적어도 하나의 더미 셀을 더 포함할 수 있다.
도 10과 같은 구조를 갖는 낸드 플래시 메모리 장치는 블록 단위로 소거가 수행되고, 각 워드 라인(WL1 내지 WLn)에 대응되는 페이지(PAGE) 단위로 프로그램을 수행할 수 있다.
도 11은 도 4의 메모리 블록(BLK1a) 또는 도 10의 메모리 블록(BLK1b)에 포함된 메모리 셀(MC)의 일 예를 나타내는 단면도이다.
도 11을 참조하면, 기판(SUB) 상에 소스(S) 및 드레인(D)이 형성되고, 소스(S)와 드레인(D)의 사이에는 채널 영역이 형성될 수 있다. 채널 영역의 상부에는 플로팅 게이트(FG)가 형성되는데, 채널 영역과 플로팅 게이트(FG)의 사이에는 터널링 절연층과 같은 절연층이 배치될 수 있다. 플로팅 게이트(FG)의 상부에는 컨트롤 게이트(CG)가 형성되는데, 플로팅 게이트(FG)와 컨트롤 게이트(CG)의 사이에는 블로킹 절연층과 같은 절연층이 배치될 수 있다. 기판(SUB), 소스(S), 드레인(D) 및 컨트롤 게이트(CG)에는 메모리 셀(MC)에 대한 프로그램, 소거 및 독출 동작에 필요한 전압들이 인가될 수 있다.
플래시 메모리 장치에서는 메모리 셀(MC)의 문턱 전압(threshold voltage, Vth)의 구별에 의해 메모리 셀(MC)에 저장된 데이터가 독출될 수 있다. 이때, 메모리 셀(MC)의 문턱 전압(Vth)은 플로팅 게이트(FG)에 저장된 전자(electron)의 양에 따라 결정될 수 있다. 구체적으로, 플로팅 게이트(FG)에 저장된 전자가 많을수록 메모리 셀(MC)의 문턱 전압은 높아질 수 있다. 메모리 셀(MC)의 플로팅 게이트(FG)에 저장된 전자는 다양한 원인들에 의해 화살표 방향으로 누설(leakage)될 수 있다. 이에 따라서 메모리 셀(MC)의 문턱 전압이 변경될 수 있다. 이와 같이 메모리 셀(MC)의 플로팅 게이트(FG)에 저장된 전자는 누설되는 챠지 손실(charge loss) 현상은 플래시 메모리 장치의 읽기 성능에 영향을 끼친다. 플래시 메모리 장치에서의 저장 영역에 따라서 챠지 손실 특성이 다르게 나타나는 경향이 있다.
테스트 공정을 통하여 플래시 메모리 장치에서의 메모리 블록 단위의 저장 영역을 시간의 경과에 따른 챠지 손실(charge loss)에 기초하여 챠지 손실 특성이 나쁜 제1저장 영역과 그렇지 않은 제2저장 영역으로 분할할 수 있다.
예로서, 3차원 수직 구조의 낸드 플래시 메모리 장치에서는 메모리 블록 단위로 제1임계 워드라인 이상의 상위 워드라인들에 접속된 메모리 셀들로 구성된 저장 영역을 핫 존에 해당되는 제1저장 영역으로 결정하고, 제1임계 워드라인 미만의 하위 워드라인들에 접속된 메모리 셀들로 구성된 저장 영역을 콜드 존에 해당되는 제2저장 영역으로 결정할 수 있다.
다른 예로서, 플래너 낸드 플래시 메모리 장치는 메모리 블록 단위로 제2임계 워드라인 미만의 하위 워드라인들 또는 제3임계 워드라인 이상의 상위 워드라인들에 접속된 메모리 셀들로 구성된 저장 영역을 상기 제1저장 영역으로 결정하고, 제1저장 영역에 포함되지 않는 메모리 셀들을 제2저장 영역으로 결정할 수 있다. 여기에서, 제3임계 워드라인은 제2임계 워드라인보다 상위 워드라인에 해당된다.
도 12a는 도 11의 메모리 셀(MC)이 멀티 레벨 셀인 경우, 메모리 장치(10)의 제1저장 영역에서의 프로그램 완료 시점의 문턱 전압에 따른 분포(실선)와 프로그램 완료 시점부터 초기 설정된 시간 경과 후의 문턱 전압에 따른 메모리 셀들의 분포(점선)를 나타내는 그래프이다.
도 12b는 도 11의 메모리 셀(MC)이 멀티 레벨 셀인 경우, 메모리 장치(10)의 제2저장 영역에서의 프로그램 완료 시점의 문턱 전압에 따른 분포(실선)와 프로그램 완료 시점부터 초기 설정된 시간 경과 후의 문턱 전압에 따른 메모리 셀들의 분포(점선)를 나타내는 그래프이다.
도 12a 및 도 12b를 참조하면, 가로축은 문턱 전압(Vth)을 나타내고, 세로축은 메모리 셀들(MC)의 개수를 나타낸다. 예를 들어, 메모리 셀(MC)이 2 비트로 프로그램되는 2 비트 멀티 레벨 셀인 경우, 메모리 셀(MC)은 소거 상태(E), 제1 프로그램 상태(P1), 제2 프로그램 상태(P2) 및 제3 프로그램 상태(P3) 중 하나를 가질 수 있다.
도 12a 및 도 12b에 도시된 바와 같이, 프로그램 완료 시점부터 초기 설정된 시간 경과 후에 문턱 전압에 따른 메모리 셀들의 분포 변화는 제2저장 영역에 비하여 제1저장 영역에서 크게 발생된다. 특히, 소거 상태(E), 제1 프로그램 상태(P1), 제2 프로그램 상태(P2) 및 제3 프로그램 상태(P3) 중에서 가장 높은 문턱 전압을 갖는 제3 프로그램 상태(P3)에서 프로그램 완료 시점과 프로그램 완료 시점부터 초기 설정된 시간 경과 후의 문턱 전압에 따른 메모리 셀들의 분포 변화가 크게 발생된다. 이에 따라서, 데이터 보존(data retention) 특성이 제2저장 영역에 비하여 제1저장 영역에서 좋지 않게 나타난다.
본 발명의 기술적 사상에 따른 메모리 시스템에서의 저장 영역 관리 방법은 데이터 보존 특성이 좋지 않은 제1저장 영역에는 업데이트 빈도가 높은 핫 데이터가 저장되도록 저장 영역을 관리한다.
도 13은 도 1의 메모리 시스템(100)에 포함된 메모리 컨트롤러(20)를 상세하게 나타내는 블록도이다.
도 13에 도시된 바와 같이, 메모리 컨트롤러(20)는 프로세서(210), RAM(Random Access Memory; 220), ECC(Error Correction Code) 처리부(230), 호스트 인터페이스(240), 메모리 인터페이스(250) 및 버스(260)를 구비한다.
메모리 컨트롤러(20)의 구성요소들은 버스(260)를 통하여 전기적으로 연결될 수 있다.
프로세서(210)는 RAM(220)에 저장된 프로그램 코드 및 데이터들을 이용하여 메모리 시스템(100)의 동작을 전반적으로 제어한다. 예로서, 프로세서(210)는 마이크로프로세서(micro-processor) 또는 중앙처리장치(Central Processing Unit; CPU)로 구현될 수 있다. 메모리 시스템(100)이 초기화될 때 프로세서(210)는 메모리 시스템(100)에서 수행되는 동작들을 제어하는데 필요한 프로그램 코드 및 데이터들을 메모리 장치(10)로부터 읽어내어 RAM(220)에 로딩시킬 수 있다.
예로서, 메모리 시스템(100)이 초기화될 때 프로세서(210)는 도 1에 도시된 데이터 타입 판정부(21), 콜드 데이터 관리부(22) 및 핫 데이터 관리부(23)를 펌웨어 설계로 구현하기 위한 프로그램 코드 및 데이터들을 메모리 장치(10)로부터 읽어내어 RAM(220)에 로딩시킬 수 있다.
프로세서(210)는 리드 동작 시에는 리드 커맨드 및 어드레스를 메모리 장치(10)에 제공하고, 라이트 동작 시에는 라이트 커맨드, 어드레스, 그리고 데이터를 제공한다. 그리고, 프로세서(210)는 RAM(220)에 저장된 시스템 데이터를 이용하여 호스트로부터 수신되는 논리적 어드레스를 물리적 어드레스로 변환시키는 처리를 수행한다.
프로세서(210)는 RAM(220)에 저장된 프로그램 코드 및 데이터들을 이용하여, 업데이트 빈도에 기초하여 분류된 핫 데이터 또는 핫 데이터보다 업데이트 빈도가 낮은 콜드 데이터 중에서 핫 데이터를 메모리 장치(10)의 제1저장 영역에 쓰도록 메모리 장치(10)를 제어할 수 있다. 프로세서(210)는 RAM(220)에 저장된 프로그램 코드 및 데이터들을 이용하여, 도 19 ~ 도 24의 흐름도에 따른 메모리 시스템에서의 저장 영역 관리 방법 및 라이트 오퍼레이션 방법에 대한 태스크(task)를 수행할 수 있다. 프로세서(210)에 의하여 수행되는 메모리 시스템에서의 저장 영역 관리 방법 및 라이트 오퍼레이션 방법에 대해서는 아래의 도 19 ~ 도 24에 대한 설명에서 상세하게 다루어질 것이다.
RAM(220)에는 호스트 인터페이스(240)를 통하여 수신된 데이터 및 프로세서(210)에서 생성된 데이터가 임시로 저장되거나 메모리 장치(10)에서 읽어낸 데이터가 임시로 저장된다. 또한, RAM(220)에는 메모리 장치(10)로부터 읽어낸 시스템 데이터(system data), 프로그램 코드도 저장된다. RAM(220)은 DRAM, SRAM 등으로 구현될 수 있다. 시스템 데이터는 메모리 장치(10)를 관리하기 위한 정보로서, 논리적 어드레스(Logical Address)를 메모리 장치(10)의 물리적 어드레스(Physical Address)로 변환시키는데 이용되는 매핑(mapping) 테이블 정보를 포함하고 있다. 예로서, 매핑 테이블 정보에는 플래시 메모리 장치에서의 프리 블록 풀에 속하는 블록에 대한 정보, 액티브 블록 풀에 속하는 블록에 대한 정보 및 데이터 블록 풀에 속하는 블록에 대한 정보가 포함될 수 있다. 그리고, 매핑 테이블 정보에는 핫 존인 제1저장 영역에 대한 정보, 콜드 존인 제2저장 영역에 대한 정보 및 서브 콜드 레벨에 대한 정보들이 포함될 수 있다. 또한, 각각의 블록들에 대한 서브 콜드 레벨 정보도 포함될 수 있다. 또한, 매핑 테이블 정보에는 매핑 테이블에서의 논리적 어드레스 또는 물리적 어드레스에 대응되는 서브 콜드 레벨에 대한 정보 등이 포함될 수 있다.
ECC 처리부(230)는 라이트 동작 시에 RS 코드(Reed-Solomon code), 헤밍 코드(Hamming code), CRC(Cyclic Redundancy Code) 등과 같은 알고리즘을 이용하여 라이트 할 데이터에 대한 에러 정정 코드(Error Correction Code)를 생성시킬 수 있다. 그리고, 리드 동작 시에는 데이터와 함께 리드된 에러 정정 코드(ECC)를 이용하여 수신된 데이터에 대한 에러 검출 및 정정 처리를 수행한다.
호스트 인터페이스(240)는 메모리 시스템(100)과 접속되는 호스트와의 데이터 교환 프로토콜을 구비하고, 메모리 시스템(100)과 호스트를 상호 연결한다. 호스트 인터페이스(240)는 ATA(Advanced Technology Attachment) 인터페이스, SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, USB(Universal Serial Bus) 또는 SAS(Serial Attached Small Computer System) 인터페이스, SCSI(Small Computer System Interface), eMMC(embedded Multi Media Card) 인터페이스, UFS(Universal Flash Storage) 인터페이스로 구현할 수 있다. 그러나 이는 예시일 뿐 이에 제한되는 것은 아니다. 호스트 인터페이스(240)는 프로세서(210)의 제어에 따라서 호스트로부터 커맨드, 어드레스 및 데이터를 수신하거나, 호스트로 데이터를 전송할 수 있다.
메모리 인터페이스(250)는 메모리 장치(10)와 전기적으로 연결되어 있다. 메모리 인터페이스(250)는 프로세서(210)의 제어에 따라서 메모리 장치(10)로 커맨드, 어드레스 및 데이터를 전송하거나, 메모리 장치(10)로부터 데이터를 수신할 수 있다. 메모리 인터페이스(250)는 NAND 플래시 메모리 또는 NOR 플래시 메모리를 지원하도록 구성될 수 있다. 메모리 인터페이스(250)는 복수 개의 채널들을 통하여 소프트웨어 또는 하드웨어 인터리브 동작들이 수행되도록 구성될 수도 있다.
도 14는 본 발명의 실시 예에 따른 메모리 시스템(100)에서의 메모리 블록들의 관계를 도시한 개념도이다.
도 14를 참조하면, 메모리 장치(10)의 메모리 블록들을 프리 블록(free block), 액티브 블록(active block), 데이터 블록(data block)으로 구분할 수 있다. 데이터 블록은 블록 내의 모든 페이지들에 데이터가 쓰여진 메모리 블록으로서, 데이터를 라이트할 수 있는 페이지가 소진된 블록을 나타낸다. 액티브 블록은 데이터가 일부 페이지에 쓰여져 있는 메모리 블록으로서, 데이터를 라이트할 수 있는 페이지가 남아있는 블록을 나타낸다. 프리 블록은 데이터가 소거된 메모리 블록으로서, 모든 페이지가 비어있는 블록을 나타낸다.
액티브 블록 풀(active block pool; 11-1)에는 액티브 블록들이 포함되어 있고, 데이터 블록 풀(data block pool; 11-2)에는 데이터 블록들이 포함되어 있고, 프리 블록 풀(free block pool; 11-3)에는 프리 블록들이 포함되어 있다.
참고적으로, 도 14에서는 설명의 편의를 위하여 하나의 메모리 블록에 4개의 페이지들이 포함되고, 최상위 워드라인에 대응되는 하나의 페이지가 제1저장 영역으로 결정되고, 나머지 3개의 페이지들이 제2저장 영역으로 결정되는 예를 보여준다. 물론, 하나의 메모리 블록에는 5개 이상의 페이지들이 포함될 수 있으며, 각 블록별로 2개 이상의 페이지들이 제1저장 영역으로 결정될 수 있다.
콜드 데이터들은 업데이트 빈도에 기초하여 복수의 서브 콜드 레벨(C1 ~ CN)로 분류할 수 있다. 예로서, 서브 콜드 레벨들 중에서 C1이 업데이트 빈도가 가장 낮은 레벨에 해당되고, CN이 업데이트 빈도가 가장 높은 레벨에 해당된다. 여기에서, N은 2 이상의 정수이다.
메모리 컨트롤러(20)의 제어에 따라서 데이터 블록 풀(11-2)에 포함되어 있는 데이터 블록들 각각의 핫 존(Hot Zone)을 나타내는 제1저장 영역에는 핫 데이터(H)가 저장되어 있다. 그리고, 제1저장 영역에는 콜드 데이터가 저장되는 것이 금지된다. 여기에서, 제1저장 영역은 적어도 하나의 페이지를 포함한다. 그리고, 데이터 블록들 각각의 콜드 존(Cold Zone)을 나타내는 제2저장 영역에는 원론적으로 콜드 데이터(C1 ~ CN)들이 저장된다. 데이터 블록들 각각의 제2저장 영역에는 서브 콜드 레벨 중에서 동일 레벨에 속하는 콜드 데이터들이 저장된다. 즉, 콜드 데이터에 대응하는 서브 콜드 레벨로 지정된 데이터 블록의 제2저장 영역에 해당 콜드 데이터를 저장한다. 여기에서, 제2저장 영역은 적어도 하나의 페이지를 포함한다. 다만, 특수한 경우에 일부 데이터 블록의 콜드 존에 핫 데이터가 저장될 수도 있다. 이에 대해서는 아래에서 설명되어질 것이다.
메모리 컨트롤러(20)의 제어에 따라서 액티브 블록 풀(11-1)에 포함되어 있는 액티브 블록들 각각의 핫 존을 나타내는 제1저장 영역에는 핫 데이터(H)가 저장될 것이다. 그리고, 제1저장 영역에는 콜드 데이터가 저장되는 것이 금지된다. 여기에서, 제1저장 영역은 적어도 하나의 페이지를 포함한다. 그리고, 액티브 블록들 각각의 콜드 존을 나타내는 제2저장 영역에는 원론적으로 콜드 데이터(C1 ~ Ci)들이 저장된다. 액티브 블록들 각각의 제2저장 영역에는 서브 콜드 레벨 중에서 동일 레벨에 속하는 콜드 데이터들이 저장될 것이다. 즉, 콜드 데이터에 대응하는 서브 콜드 레벨로 지정된 액티브 블록의 제2저장 영역에 해당 콜드 데이터를 저장될 것이다. 여기에서, 제2저장 영역은 적어도 하나의 페이지를 포함한다. 다만, 특수한 경우에 일부 액티브 블록의 콜드 존에는 핫 데이터가 저장될 수도 있다. 이에 대해서는 아래에서 설명되어질 것이다.
도 14와 같이, 최상위 워드라인에 대응되는 하나의 페이지가 제1저장 영역으로 결정된 경우에는, 액티브 블록별로 제1저장 영역의 페이지가 마지막으로 쓰여진다. 즉, 액티브 블록에서 제1저장 영역에 핫 데이터가 쓰여지면 해당 블록에서 빈 페이지가 소진된다. 이에 따라서, 액티브 블록에서 제1저장 영역에 핫 데이터가 쓰여진 해당 블록은 액티브 블록 풀(11-1)에서 데이터 블록 풀(11-2)로 이동된다.
예로서, 콜드 데이터에 대한 라이트 요청이 있는 경우에 액티브 블록 풀(11-1)에 포함된 액티브 블록들 중에서 제2저장 영역에 빈 페이지가 있는 액티브 블록이 존재하지 않으면, 메모리 컨트롤러(20)는 프리 블록 풀(11-3)에 포함되어 있는 하나의 프리 블록을 선택하여 액티브 블록 풀(11-1)로 이동시킨다.
다른 예로서, 라이트 요청된 콜드 데이터의 서브 콜드 레벨에 대응되는 제2저장 영역에 빈 페이지가 있는 액티브 블록이 존재하지 않는 경우에, 메모리 컨트롤러(20)는 라이트 요청된 콜드 데이터의 서브 콜드 레벨에 기초하여 업데이트 빈도가 높을수록 프리 블록 풀(11-3)에 포함된 프리 블록들 중에서 프로그램/이레이즈 회수가 낮은 새로운 프리 블록을 선택하여 액티브 블록 풀(11-1)로 이동시킨다.
프리 블록 풀(11-3)에 포함된 프리 블록들의 개수가 일정 개수 미만으로 줄어들면, 메모리 컨트롤러(20)는 가비지 컬렉션을 수행함으로써 데이터 블록 풀(11-2)에서 선택된 하나의 희생 블록을 프리 블록 풀(11-3)로 이동시킬 수 있다.
도 15는 본 발명의 실시 예에 따른 메모리 시스템(100)에서의 핫 데이터를 관리하는 방법의 일 예를 보여주는 메모리 블록들에 대한 개념도이다.
도 15를 참조하면, 핫 데이터(H1)에 대한 라이트 요청이 있을 때 메모리 장치(10)의 액티브 블록 풀(11-1A)에 4개의 액티브 블록들(B1 ~ B4)이 존재하는 예를 보여준다.
도 15와 같은 액티브 블록 풀(11-1A)이 존재하는 상태에서 호스트로부터 메모리 컨트롤러(20)로 핫 데이터(H1)에 대한 라이트 요청이 수신되는 경우에, 메모리 컨트롤러(20)는 제2저장 영역에 빈 페이지가 남아있지 않은 액티브 블록을 검색한다. 메모리 컨트롤러(20)는 제2저장 영역에 빈 페이지가 남아있지 않은 액티브 블록(B2)이 검색되면, 검색된 액티브 블록(B2)을 타깃 액티브 블록(B2_TB)으로 결정한다(S1).
메모리 컨트롤러(20)는 타깃 액티브 블록(B2_TB)의 제1저장 영역의 빈 페이지에 라이트 요청된 핫 데이터(H1)를 쓰도록 메모리 시스템(100)을 제어한다(S2).
액티브 블록(B2)의 제1저장 영역의 빈 페이지에 라이트 요청된 핫 데이터(H1)를 쓰는 동작을 마치면 액티브 블록(B2)에는 빈 페이지가 존재하지 않는 데이터 블록(B2')이 된다. 이에 따라서, 핫 데이터(H1)에 대한 라이트 동작 후에는 데이터 블록(B2')는 데이터 블록 풀(11-2A)로 이동된다(S3). 즉, 핫 데이터(H1)에 대한 라이트 동작 후의 액티브 블록 풀(11-1A')에는 3개의 액티브 블록들(B1, B3, B4)이 남아 있게 된다.
도 16은 본 발명의 실시 예에 따른 메모리 시스템에서의 핫 데이터를 관리하는 방법의 다른 예를 보여주는 메모리 블록들에 대한 개념도이다.
도 16을 참조하면, 핫 데이터(H2)에 대한 라이트 요청이 있을 때 메모리 장치(10)의 액티브 블록 풀(11-1B)에 4개의 액티브 블록들(B5 ~ B8)이 존재하는 예를 보여준다.
도 16과 같은 액티브 블록 풀(11-1B)이 존재하는 상태에서 호스트로부터 메모리 컨트롤러(20)로 핫 데이터(H2)에 대한 라이트 요청이 수신되는 경우에, 메모리 컨트롤러(20)는 제2저장 영역에 빈 페이지가 남아있지 않은 액티브 블록을 검색한다. 도 16을 참조하면, 액티브 블록 풀(11-1B)에는 제2저장 영역에 빈 페이지가 소진된 액티브 블록이 존재하지 않는다. 이 경우에 메모리 컨트롤러(20)는 액티브 블록 풀(11-1B)에 존재하는 액티브 블록들 중에서 업데이트 빈도가 가장 높은 제2저장 영역을 포함하는 액티브 블록(B8)을 타깃 액티브 블록(B8_TB)으로 결정한다(S1').
메모리 컨트롤러(20)는 타깃 액티브 블록(B8_TB)의 제2저장 영역의 빈 페이지에 라이트 요청된 핫 데이터(H2)를 쓰도록 메모리 시스템(100)을 제어한다(S2'). 이와 같이, 제2저장 영역의 모든 페이지에 데이터가 쓰여진 액티브 블록이 존재하지 않는 상태에서 핫 데이터에 대한 라이트 요청이 발생되는 경우에는 핫 데이터가 콜드 존인 제2저장 영역에 쓰여질 수 있다.
액티브 블록(B8)의 제2저장 영역의 빈 페이지에 라이트 요청된 핫 데이터(H2)를 쓰는 동작을 마친 후에도 제1저장 영역에 빈 페이지가 존재한다. 이에 따라서, 액티브 블록(B8)은 핫 데이터(H2)에 대한 라이트 동작 후에도 액티브 블록 풀(11-1B)에 남아 있게 된다(S3'). 즉, 핫 데이터(H2)에 대한 라이트 동작 후의 액티브 블록 풀(11-1B')에는 4개의 액티브 블록들(B5, B6, B7, B8')이 남아 있게 된다.
도 17은 본 발명의 실시 예에 따른 메모리 시스템에서의 콜드 존 레벨링 처리를 하지 않은 경우의 가비지 컬렉션 동작에서의 희생 블록을 결정하는 사례를 보여주는 도면이다.
도 18은 본 발명의 실시 예에 따른 메모리 시스템에서의 콜드 존 레벨링 처리를 한 경우의 가비지 컬렉션 동작에서의 희생 블록을 결정하는 사례를 보여주는 도면이다.
도 17 및 18에는 데이터 블록 풀(11-2)에 포함되어 있는 데이터 블록들(BLOCK 0 ~ BLOCK N)이 도시되어 있다. 설명의 편의를 위하여 하나의 블록이 4개의 페이지로 구성되는 예를 보여주고, 빗금친 페이지들은 무효(invalid) 페이지를 나타내고 빗금이 없는 페이지들은 유효(valid) 페이지를 나타낸다. "H"로 표시된 페이지는 핫 데이터가 쓰여진 페이지이고, "C1 ~ C4"로 표시된 페이지는 콜드 데이터가 쓰여진 페이지이다. 그리고, 콜드 레벨 중에서 C1 -> C2 -> C3 -> C4 순으로 업데이트 빈도가 높다. 즉, "C4"로 표시된 페이지의 콜드 데이터가 콜드 데이터들 중에서 업데이트 빈도가 가장 높고, "C1"으로 표시된 페이지의 콜드 데이터가 콜드 데이터들 중에서 업데이트 빈도가 가장 낮다는 것을 의미한다.
우선, 도 17을 참조하여 가비지 컬렉션 동작에서의 희생 블록을 결정하는 동작을 설명하기로 한다.
도 17에서는 메모리 시스템에서 콜드 존 레벨링 처리를 하지 않고 콜드 데이터에 대한 라이트 동작을 수행하였으므로, 데이터 블록별 콜드 존에 서브 콜드 레벨이 다른 콜드 데이터들이 함께 저장될 수 있다.
데이터 블록 풀(11-2)에 데이터 블록들(BLOCK 0 ~ BLOCK N)이 존재하는 상태에서 가비지 컬렉션 동작 요구가 발생되면, 무효 페이지 개수가 가장 큰 데이터 블록을 가비지 컬렉션 처리를 위한 희생 블록(victim block)으로 결정한다. 도 17을 참조하면, 데이터 블록들(BLOCK 0 ~ BLOCK N) 중에서 무효 페이지 개수가 2개인 데이터 블록이 BLOCK 0, BLOCK 1, BLOCK 2가 존재한다. 이에 따라서, BLOCK 0, BLOCK 1, BLOCK 2 중 하나의 데이터 블록이 희생 블록으로 결정된다. 즉, 희생 블록으로 선택되는 데이터 블록에 유효 페이지가 2개 존재하므로 가비지 컬렉션 코스트가 커지게 된다.
다음으로, 도 18을 참조하여 가비지 컬렉션 동작에서의 희생 블록을 결정하는 동작을 설명하기로 한다.
도 18에서는 메모리 시스템에서 콜드 존 레벨링 처리를 하면서 콜드 데이터에 대한 라이트 동작을 수행하였으므로, 각 데이터 블록의 콜드 존에는 동일한 서브 콜드 레벨을 갖는 콜드 데이터들이 저장된다.
데이터 블록 풀(11-2)에 데이터 블록들(BLOCK 0 ~ BLOCK N)이 존재하는 상태에서 가비지 컬렉션 동작 요구가 발생되면, 무효 페이지 개수가 가장 큰 데이터 블록을 가비지 컬렉션 처리를 위한 희생 블록(victim block)으로 결정한다. 도 18을 참조하면, 데이터 블록들 중에서 BLOCK N에 무효 페이지 개수가 가장 많은 4개 존재한다. 이에 따라서, BLOCK N이 희생 블록으로 결정된다. 즉, 희생 블록으로 선택된 BLOCK N에 유효 페이지가 존재하지 않으므로 가비지 컬렉션 코스트가 최소화된다.
이에 따라서, 메모리 시스템에서 콜드 존 레벨링 처리를 하면서 콜드 데이터에 대한 라이트 동작을 수행하는 경우에 가비지 컬렉션 효율을 높일 수 있게 된다.
그러면, 도 13에 도시된 메모리 컨트롤러(20)의 프로세서(210)에 의하여 수행되는 도 19 ~ 도 24의 흐름도에 따른 메모리 시스템에서의 저장 영역 관리 방법 및 라이트 오퍼레이션 방법에 대하여 상세히 설명하기로 한다.
도 19는 본 발명의 일 실시 예에 따른 메모리 시스템(100)에서의 저장 영역 관리 방법의 흐름도이다.
우선, 오퍼레이션 S110에서, 프로세서(210)는 메모리 장치(10)의 제1저장 영역(Hot Zone)에 포함된 물리적 주소에 핫 데이터의 논리적 어드레스가 매핑되도록 라이트 요청된 데이터의 논리적 어드레스를 물리적 어드레스로 변환하는 처리를 수행한다. 즉, 프로세서(210)는 메모리 장치(10)의 각 블록별로 분류된 제1저장 영역에는 핫 데이터가 저장되도록 어드레스 변환 처리를 수행한다. 그리고, 프로세서(210)는 콜드 데이터가 메모리 장치(10)의 각 블록별로 분류된 제2저장 영역에 저장되도록 어드레스 변환 처리를 수행한다. 다시 말해, 프로세서(210)는 메모리 장치(10)의 각 블록별로 분류된 제1저장 영역에 콜드 데이터가 저장되는 것을 금지하도록 어드레스 변환 처리를 수행한다.
다음으로, 오퍼레이션 S120에서, 프로세서(210)는 라이트 요청된 데이터를 오퍼레이션 S110에서 변환된 메모리 장치(10)의 물리적 어드레스에 라이트 하도록 메모리 장치(10)를 제어한다. 즉, 프로세서(210)는 라이트 요청된 데이터를 오퍼레이션 S110에서 변환된 메모리 장치(10)의 물리적 주소에 라이트하기 위한 제어신호, 커맨드 및 어드레스 생성하여 메모리 장치(10)로 전송한다. 그리고, 라이트 요청된 데이터도 메모리 장치(10)로 전송한다.
도 20은 본 발명의 다른 실시 예에 따른 메모리 시스템에서의 저장 영역 관리 방법의 흐름도이다.
오퍼레이션 S110 및 오퍼레이션 S120은 도 19에서 설명하였으므로, 중복적인 설명은 피하기로 한다.
오퍼레이션 S110 및 오퍼레이션 S120을 수행하고 나서, 오퍼레이션 S130에서 프로세서(210)는 가비지 컬렉션 수행 조건이 발생되는지를 판단한다. 예로서, 프리 블록들의 개수가 일정 개수 미만으로 줄어드는 조건을 가비지 컬렉션 수행 조건으로 결정할 수 있다.
가비지 컬렉션 수행 조건이 발생된 것으로 판단되면, 오퍼레이션 S140에서 프로세서(210)는 데이터 블록들 중에서 하나의 데이터 블록을 희생 블록으로 결정한다. 예로서, 프로세서(210)는 데이터 블록들 중에서 무효 페이지를 가장 많이 포함하고 있는 데이터 블록을 희생 블록으로 결정할 수 있다.
오퍼레이션 S150에서 프로세서(210)는 희생 블록의 유효 페이지를 업데이트 빈도에 기초하여 액티브 블록의 제1저장 영역 또는 제2저장 영역의 빈 페이지에 복사하는 동작을 수행한다.
오퍼레이션 S160에서 프로세서(210)는 희생 블록을 소거 처리하여 프리 블록을 생성시키는 동작을 수행한다. 즉, 프로세서(210)는 희생 블록에 대한 소거 동작을 수행한 후에 소거된 희생 블록을 프리 블록 풀로 이동시킨다.
도 21은 도 19 또는 도 20에 도시된 어드레스변환 처리 단계에서의 콜드 데이터로 분류된 데이터에 대한 어드레스변환 처리 동작의 일 예(S110A)를 보여주는 도면이다.
오퍼레이션 S110-1A에서 프로세서(210)는 콜드 데이터에 대한 라이트 요청이 있는 경우에 액티브 블록들 중에서 제2저장 영역에 빈 페이지가 남아있는 타깃 액티브 블록을 검색한다. 즉, 프로세서(210)는 RAM(220)에 저장되어 있는 매핑 테이블 정보를 이용하여 액티브 블록 풀에 포함되어 있는 액티브 블록들 중에서 제2저장 영역에 빈 페이지가 남아있는 타깃 액티브 블록을 검색한다.
오퍼레이션 S110-2A에서 프로세서(210)는 액티브 블록 풀에 타깃 액티브 블록이 존재하는지를 판단한다.
오퍼레이션 S110-2A에서의 판단 결과 타깃 액티브 블록이 존재하는 경우에, 오퍼레이션 S110-3A에서 프로세서(210)는 라이트 요청된 콜드 데이터의 논리적 어드레스를 타깃 액티브 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환한다. 즉, 프로세서(210)는 라이트 요청된 콜드 데이터의 논리적 어드레스를 타깃 액티브 블록의 제2저장 영역 내의 빈 페이지에 대응되는 물리적 어드레스로 변환한다.
만일 오퍼레이션 S110-2A에서의 판단 결과 타깃 액티브 블록이 존재하지 않는 경우에, 오퍼레이션 S110-4A에서 프로세서(210)는 라이트 요청된 콜드 데이터의 논리적 어드레스를 새로운 프리 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환한다. 즉, 프로세서(210)는 프리 블록 풀에 포함되어 있는 하나의 프리 블록을 액티브 블록 풀로 이동시킨 후에, 라이트 요청된 콜드 데이터의 논리적 어드레스를 액티브 블록 풀로 이동된 프리 블록의 제2저장 영역 내의 빈 페이지에 대응되는 물리적 어드레스로 변환한다.
도 22는 도 19 또는 도 20에 도시된 어드레스변환 처리 단계에서의 콜드 데이터로 분류된 데이터에 대한 어드레스 변환 처리 동작의 다른 예(S110B)를 보여주는 도면이다.
오퍼레이션 S110-1B에서 프로세서(210)는 콜드 데이터에 대한 라이트 요청이 있는 경우에 액티브 블록들 중에서 라이트 요청된 콜드 데이터의 서브 콜드 레벨에 대응되는 제2저장 영역에 빈 페이지가 남아있는 타깃 액티브 블록을 검색한다. 즉, 프로세서(210)는 RAM(220)에 저장되어 있는 매핑 테이블 정보를 이용하여 액티브 블록 풀에 포함되어 있는 액티브 블록들 중에서 라이트 요청된 콜드 데이터의 서브 콜드 레벨에 대응되는 제2저장 영역에 빈 페이지가 남아있는 타깃 액티브 블록을 검색한다.
오퍼레이션 S110-2B에서 프로세서(210)는 액티브 블록 풀에 타깃 액티브 블록이 존재하는지를 판단한다.
오퍼레이션 S110-2B에서의 판단 결과 타깃 액티브 블록이 존재하는 경우에, 오퍼레이션 S110-3B에서 프로세서(210)는 라이트 요청된 콜드 데이터의 논리적 어드레스를 타깃 액티브 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환한다. 즉, 프로세서(210)는 라이트 요청된 콜드 데이터의 논리적 어드레스를 타깃 액티브 블록의 제2저장 영역 내의 빈 페이지에 대응되는 물리적 어드레스로 변환한다.
만일 오퍼레이션 S110-2B에서의 판단 결과 타깃 액티브 블록이 존재하지 않는 경우에, 오퍼레이션 S110-4B에서 프로세서(210)는 라이트 요청된 콜드 데이터의 논리적 어드레스를 새로운 프리 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환한다. 예로서, 프로세서(210)는 프리 블록 풀에 포함되어 있는 하나의 프리 블록을 액티브 블록 풀로 이동시킨 후에, 라이트 요청된 콜드 데이터의 논리적 어드레스를 액티브 블록 풀로 이동된 프리 블록의 제2저장 영역 내의 빈 페이지에 대응되는 물리적 어드레스로 변환한다. 다른 예로서, 프로세서(210)는 라이트 요청된 콜드 데이터의 서브 콜드 레벨에 기초하여 업데이트 빈도가 높을수록 프리 블록들 중에서 프로그램/이레이즈 회수가 낮은 새로운 프리 블록을 할당하고, 라이트 요청된 콜드 데이터의 논리적 어드레스를 새로운 프리 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환한다.
도 23은 도 19 또는 도 20에 도시된 어드레스변환 처리 단계에서의 핫 데이터에 대한 어드레스변환 처리 동작의 일 예(S110C)를 보여주는 도면이다.
오퍼레이션 S110-1C에서 프로세서(210)는 핫 데이터에 대한 라이트 요청이 있는 경우에 액티브 블록들 중에서 제2저장 영역에 빈 페이지가 소진된 타깃 액티브 블록을 검색한다. 즉, 프로세서(210)는 RAM(220)에 저장되어 있는 매핑 테이블 정보를 이용하여 액티브 블록 풀에 포함되어 있는 액티브 블록들 중에서 제2저장 영역에 빈 페이지가 남아 있지 않는 타깃 액티브 블록을 검색한다.
오퍼레이션 S110-2C에서 프로세서(210)는 액티브 블록 풀에 타깃 액티브 블록이 존재하는지를 판단한다.
오퍼레이션 S110-2C에서의 판단 결과 타깃 액티브 블록이 존재하는 경우에, 오퍼레이션 S110-3C에서 프로세서(210)는 라이트 요청된 핫 데이터의 논리적 어드레스를 타깃 액티브 블록 내의 제1저장 영역에 포함된 물리적 어드레스로 변환한다. 즉, 프로세서(210)는 라이트 요청된 핫 데이터의 논리적 어드레스를 타깃 액티브 블록의 제1저장 영역 내의 빈 페이지에 대응되는 물리적 어드레스로 변환한다.
만일 오퍼레이션 S110-2C에서의 판단 결과 타깃 액티브 블록이 존재하지 않는 경우에, 오퍼레이션 S110-4C에서 프로세서(210)는 라이트 요청된 핫 데이터의 논리적 어드레스를 액티브 블록들 중의 어느 하나의 액티브 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환한다. 예로서, 타깃 액티브 블록이 존재하지 않는 경우에, 프로세서(210)는 라이트 요청된 핫 데이터의 논리적 어드레스를 액티브 블록들 중에서 업데이트 빈도가 가장 높은 제2저장 영역을 갖는 액티브 블록 내의 제2저장 영역의 빈 페이지에 대응되는 물리적 어드레스로 변환할 수 있다.
도 24는 본 발명의 일 실시 예에 따른 메모리 시스템에서의 라이트 오퍼레이션 방법의 흐름도이다.
오퍼레이션 S210에서 프로세서(210)는 호스트로부터 라이트 요청이 수신되는지를 판단한다. 즉, 프로세서(210)는 호스트 인터페이스(240)를 통하여 호스트로부터 라이트 커맨드가 수신되는지를 판단한다.
라이트 커맨드가 수신된 경우에, 오퍼레이션 S220에서 프로세서(210)는 라이트 요청된 데이터에 대한 데이터 타입을 판정한다. 프로세서(210)는 라이트 요청된 데이터를 업데이트 빈도에 기초하여 핫 데이터(hot data) 또는 콜드 데이터(cold data)로 판정한다. 예로서, 업데이트 회수가 임계치 이상인 데이터를 핫 데이터로 판정하고, 업데이트 회수가 임계치 미만인 데이터를 콜드 데이터로 판정할 수 있다. 다른 예로서, 현재를 기준으로 일정 시간 이전까지 발생된 업데이트 회수가 임계치 이상인 데이터를 핫 데이터로 판정하고, 그 외의 데이터를 콜드 데이터로 판정할 수도 있다. 또한, 파일의 속성에 따라서 업데이트 빈도를 예측하여 핫 데이터 또는 콜드 데이터로 판정할 수도 있다. 예로서, 파일의 확장자에 기초하여 업데이트 빈도가 높을 것으로 예상되는 데이터를 핫 데이터로 판정하고, 그 외의 데이터를 콜드 데이터로 판정할 수도 있다. 또한, 프로세서(210)는 콜드 데이터로 판정된 데이터를 업데이트 빈도에 기초하여 복수의 레벨로 세분화할 수 있다. 또 다른 예에서는 라이트할 데이터에 대한 데이터 타입을 호스트에서 판정하고, 호스트로부터 전송된 판정 결과에 대한 정보에 기초하여 메모리 컨트롤러(20)의 프로세서(210)에서 데이터 타입을 확인할 수도 있다.
오퍼레이션 S230에서 프로세서(210)는 라이트 요청된 데이터에 대한 데이터 타입에 기초하여 어드레스변환 처리를 수행한다. 예로서, 프로세서(210)는 도 19의 오퍼레이션 S110과 같은 방식으로 어드레스변환 처리를 수행할 수 있다.
오퍼레이션 S240에서 프로세서(210)는 라이트 요청된 데이터를 어드레스변환 처리된 물리적 주소에 라이트하는 동작을 수행한다. 예로서, 프로세서(210)는 도 19의 오퍼레이션 S120과 같은 방식으로 라이트 동작을 위하여 메모리 장치(10)를 제어할 수 있다.
도 25는 본 발명의 실시예들에 따른 메모리 시스템을 메모리 카드 시스템(1000)에 적용한 예를 나타내는 블록도이다.
도 25를 참조하면, 메모리 카드 시스템(1000)은 호스트(1100) 및 메모리 카드(1200)를 포함할 수 있다. 호스트(1100)는 호스트 컨트롤러(1110) 및 호스트 접속부(1120)를 포함할 수 있다. 메모리 카드(1200)는 카드 접속부(1210), 메모리 컨트롤러(1220) 및 메모리 장치(1230)를 포함할 수 있다. 메모리 컨트롤러(1220) 및 메모리 장치(1230)는 도 1에 도시된 메모리 컨트롤러(20) 및 메모리 장치(10)가 적용될 수 있다.
호스트(1100)는 메모리 카드(1200)에 데이터를 기입하거나, 메모리 카드(1200)에 저장된 데이터를 독출할 수 있다. 호스트 컨트롤러(1110)는 커맨드(CMD), 호스트(1100) 내의 클럭 발생기(미도시)에서 발생한 클럭 신호(CLK) 및 데이터(DATA)를 호스트 접속부(1120)를 통해 메모리 카드(1200)로 전송할 수 있다.
메모리 컨트롤러(1220)는 카드 접속부(1210)를 통해 수신된 커맨드에 응답하여, 메모리 컨트롤러(1220) 내에 있는 클럭 발생기(미도시)에서 발생한 클럭 신호에 동기하여 데이터를 메모리 장치(1230)에 저장할 수 있다. 메모리 장치(1230)는 호스트(1100)로부터 전송된 데이터를 저장할 수 있다.
메모리 카드(1230)는 컴팩트 플래시 카드(CFC: Compact Flash Card), 마이크로 드라이브(Microdrive), 스마트 미디어 카드(SMC: Smart Media Card) 멀티미디어 카드(MMC: Multimedia Card), 보안 디지털 카드(SDC: Security Digital Card), 메모리 스틱(Memory Stick), 및 USB 플래시 메모리 드라이버 등으로 구현될 수 있다.
도 26은 본 발명의 실시 예들에 따른 메모리 시스템을 포함하는 컴퓨팅 시스템(2000)을 나타내는 블록도이다.
도 26을 참조하면, 컴퓨팅 시스템(2000)은 메모리 시스템(2100), 프로세서(2200), RAM(2300), 입출력 장치(2400) 및 전원 장치(2500)를 포함할 수 있다.
메모리 시스템(2100)은 메모리 장치(2110) 및 메모리 컨트롤러(2120)를 포함한다. 메모리 장치(2110) 및 메모리 컨트롤러(2120)는 도 1에 도시된 메모리 장치(10) 및 메모리 컨트롤러(20)가 적용될 수 있다.
한편, 도 26에는 도시되지 않았지만, 컴퓨팅 시스템(2000)은 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 컴퓨팅 시스템(2000)은 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(personal digital assistant) 및 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
프로세서(2200)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 실시예에 따라, 프로세서(2200)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일수 있다. 프로세서(2200)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(2600)를 통하여 RAM(2300), 입출력 장치(2400) 및 메모리 시스템(2100)과 통신을 수행할 수 있다. 실시 예에 따라, 프로세서(2200)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다.
RAM(2300)은 컴퓨팅 시스템(2000)의 동작에 필요한 데이터를 저장할 수 있다. 예를 들어, RAM(2300)은 디램(DRAM), 모바일 디램, 에스램(SRAM), 피램(PRAM), 에프램(FRAM), 알램(RRAM) 및/또는 엠램(MRAM)으로 구현될 수 있다.
입출력 장치(2400)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 전원 장치(2500)는 컴퓨팅 시스템(2000)의 동작에 필요한 동작 전압을 공급할 수 있다.
도 27은 본 발명의 실시 예들에 따른 메모리 시스템을 SSD 시스템(3000)에 적용한 예를 나타내는 블록도이다.
도 27을 참조하면, SSD 시스템(3000)은 호스트(3100) 및 SSD(3200)를 포함할 수 있다. SSD(3200)는 신호 커넥터(signal connector)를 통해 호스트(3100)와 신호를 주고 받으며, 전원 커넥터(power connector)를 통해 전원을 입력 받는다. SSD(3200)는 메모리 컨트롤러(3210), 보조 전원 장치(3220) 및 복수의 메모리 장치들(3230, 3240, 3250)을 포함할 수 있다. 메모리 컨트롤러(3210) 및 복수의 메모리 장치들(3230, 3240, 3250)은 도 1에 도시된 메모리 컨트롤러(20) 및 메모리 장치(10)가 적용될 수 있다.
본 발명은 방법, 장치, 시스템 등으로서 실행될 수 있다. 소프트웨어로 실행될 때, 본 발명의 구성 수단들은 필연적으로 필요한 작업을 실행하는 코드 세그먼트들이다. 프로그램 또는 코드 세그먼트들은 프로세서 판독 가능 매체에 저장되어 질 수 있다. 프로세서 판독 가능 매체는 정보를 저장할 수 있는 어떠한 매체도 포함한다. 프로세서 판독 가능 매체의 예로는 전자 회로, 반도체 메모리 소자, ROM, 플래시 메모리, 이레이져블 ROM(EROM : Erasable ROM), 플로피 디스크, 광 디스크, 하드디스크 등이 있다.
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
100 : 메모리 시스템 10 : 메모리 장치
20 : 메모리 컨트롤러 11 : 메모리 셀 어레이
12 : 제어 로직 13 : 전압 생성부
14 : 로우 디코더 15 : 페이지 버퍼
21 : 데이터 타입 판정부 22 : 콜드 데이터 관리부
23 : 핫 데이터 관리부 210 : 프로세서
220 : RAM 230 : ECC 처리부
240 : 호스트 인터페이스 250 : 메모리 인터페이스
260 : 버스

Claims (10)

  1. 메모리 장치의 제1저장 영역에 포함된 물리적 주소에 업데이트 빈도에 기초하여 분류된 핫 데이터 또는 상기 핫 데이터보다 업데이트 빈도가 낮은 콜드 데이터 중에서 상기 핫 데이터의 논리적 주소가 매핑되도록 라이트 요청된 데이터의 논리적 어드레스를 물리적 어드레스로 변환하는 단계; 및
    상기 라이트 요청된 데이터를 상기 메모리 장치의 변환된 물리적 어드레스에 라이트하는 단계를 포함하고,
    상기 메모리 장치의 블록 단위의 저장 영역을 시간의 경과에 따른 챠지 손실에 기초하여 상기 제1저장 영역 및 제2저장 영역으로 분할하고, 상기 제1저장 영역은 상기 제2저장 영역에 비하여 시간의 경과에 따른 챠지 손실이 큰 저장 영역으로 결정되는 것을 특징으로 하는 메모리 시스템에서의 저장 영역 관리 방법.
  2. 제1항에 있어서, 상기 메모리 장치는 플래시 메모리 장치를 포함함을 특징으로 하는 메모리 시스템에서의 저장 영역 관리 방법.
  3. 제2항에 있어서, 상기 플래시 메모리 장치는 3차원 수직 구조의 낸드 플래시 메모리 장치를 포함하고, 상기 3차원 수직 구조의 낸드 플래시 메모리 장치에서의 제1임계 워드라인 이상의 상위 워드라인들에 접속된 메모리 셀들을 상기 제1저장 영역으로 분류하고, 상기 제1임계 워드라인 미만의 하위 워드라인들에 접속된 메모리 셀들을 상기 제2저장 영역으로 분류하는 것을 특징으로 하는 메모리 시스템에서의 저장 영역 관리 방법.
  4. 제1항에 있어서, 상기 물리적 어드레스로 변환하는 단계는 상기 콜드 데이터를 업데이트 빈도에 기초하여 복수의 서브 콜드 레벨로 분류하고, 상기 메모리 장치의 동일 블록의 제2저장 영역에 포함된 물리적 어드레스에 상기 복수의 서브 콜드 레벨 중에서 동일 레벨에 속하는 데이터의 논리적 어드레스가 매핑되도록 상기 호스트로부터 수신된 데이터에 대한 어드레스 변환을 수행하는 것을 특징으로 하는 메모리 시스템에서의 저장 영역 관리 방법.
  5. 제4항에 있어서, 상기 물리적 어드레스로 변환하는 단계는
    상기 콜드 데이터에 대한 라이트 요청이 있는 경우에 저장 영역의 일부에 데이터가 저장되어 있는 액티브 블록들 중에서 상기 콜드 데이터의 서브 콜드 레벨에 대응되는 제2저장 영역에 데이터를 쓸 수 있는 영역이 남아있는 타깃 액티브 블록을 검색하는 단계;
    상기 검색 결과 상기 타깃 액티브 블록이 존재하는 경우에 상기 콜드 데이터의 논리적 어드레스를 상기 타깃 액티브 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환하는 단계; 및
    상기 검색 결과 상기 타깃 액티브 블록이 존재하지 않는 경우에 상기 콜드 데이터의 논리적 어드레스를 새로운 프리 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환하는 단계를 포함함을 특징으로 하는 메모리 시스템에서의 저장 영역 관리 방법.
  6. 제1항에 있어서, 상기 물리적 어드레스로 변환하는 단계는
    상기 콜드 데이터에 대한 라이트 요청이 있는 경우에 저장 영역의 일부에 데이터가 저장되어 있는 액티브 블록들 중에서 상기 제2저장 영역에 데이터를 쓸 수 있는 영역이 남아있는 타깃 액티브 블록을 검색하는 단계;
    상기 검색 결과 상기 타깃 액티브 블록이 존재하는 경우에 상기 콜드 데이터의 논리적 어드레스를 상기 타깃 액티브 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환하는 단계; 및
    상기 검색 결과 상기 타깃 액티브 블록이 존재하지 않는 경우에 상기 콜드 데이터의 논리적 어드레스를 새로운 프리 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환하는 단계를 포함함을 특징으로 하는 메모리 시스템에서의 저장 영역 관리 방법.
  7. 제1항에 있어서, 상기 물리적 어드레스로 변환하는 단계는
    상기 핫 데이터에 대한 라이트 요청이 있는 경우에 저장 영역의 일부에 데이터가 저장되어 있는 액티브 블록들 중에서 상기 제2저장 영역에 데이터를 쓸 수 있는 영역이 남아있지 않은 타깃 액티브 블록을 검색하는 단계;
    상기 검색 결과 상기 타깃 액티브 블록이 존재하는 경우에 상기 핫 데이터의 논리적 어드레스를 상기 타깃 액티브 블록 내의 제1저장 영역에 포함된 물리적 어드레스로 변환하는 단계; 및
    상기 검색 결과 상기 타깃 액티브 블록이 존재하지 않는 경우에 상기 핫 데이터의 논리적 어드레스를 상기 액티브 블록들 중의 어느 하나의 액티브 블록 내의 제2저장 영역의 빈 페이지에 대응되는 물리적 어드레스로 변환하는 단계를 포함함을 특징으로 하는 메모리 시스템에서의 저장 영역 관리 방법.
  8. 제1항에 있어서, 상기 물리적 어드레스로 변환하는 단계는
    상기 핫 데이터에 대한 라이트 요청이 있는 경우에 저장 영역의 일부에 데이터가 저장되어 있는 액티브 블록들 중에서 상기 제2저장 영역에 데이터를 쓸 수 있는 영역이 남아있지 않은 타깃 액티브 블록을 검색하는 단계;
    상기 검색 결과 상기 타깃 액티브 블록이 존재하는 경우에 상기 핫 데이터의 논리적 어드레스를 상기 타깃 액티브 블록 내의 제1저장 영역에 포함된 물리적 어드레스로 변환하는 단계; 및
    상기 검색 결과 상기 타깃 액티브 블록이 존재하지 않는 경우에 상기 핫 데이터의 논리적 어드레스를 상기 액티브 블록들 중에서 업데이트 빈도가 가장 높은 제2저장 영역을 포함하는 액티브 블록 내의 제2저장 영역에 포함된 물리적 어드레스로 변환하는 단계를 포함함을 특징으로 하는 메모리 시스템에서의 저장 영역 관리 방법.
  9. 제1저장 영역 또는 제2저장 영역으로 분류된 복수의 메모리 셀들을 포함하는 메모리 장치; 및
    제1저장 영역에 업데이트 빈도에 기초하여 분류된 핫 데이터 또는 상기 핫 데이터보다 업데이트 빈도가 낮은 콜드 데이터 중에서 상기 핫 데이터를 쓰도록 상기 메모리 장치를 제어하는 메모리 컨트롤러를 포함하고,
    상기 복수의 메모리 셀들에 대한 시간의 경과에 따른 챠지 손실에 기초하여 상기 복수의 메모리 셀들을 제1저장 영역 또는 제2저장 영역으로 분류하고, 상기 제1저장 영역으로 분류된 메모리 셀들은 상기 제2저장 영역으로 분류된 메모리 셀들에 비하여 시간의 경과에 따른 챠지 손실이 큰 것을 특징으로 하는 메모리 시스템.
  10. 제9항에 있어서, 상기 메모리 컨트롤러는
    라이트 요청된 데이터를 업데이트 빈도에 기초하여 핫 데이터 또는 콜드 데이터로 분류하고, 상기 콜드 데이터를 복수의 서브 콜드 레벨로 세분화하는 데이터 타입 판정부;
    상기 메모리 장치의 블록 단위로 제2저장 영역에 대한 서브 콜드 레벨을 지정하고, 상기 콜드 데이터에 대한 서브 콜드 레벨로 지정된 제2저장 영역에 상기 콜드 데이터를 쓰도록 상기 메모리 장치를 제어하는 콜드 데이터 관리부; 및
    저장 영역의 일부에 데이터가 저장되어 있는 액티브 블록들 중에서 상기 제2저장 영역의 빈 페이지가 소진된 타깃 액티브 블록 내의 제1저장 영역에 상기 핫 데이터를 쓰도록 상기 메모리 장치를 제어하는 핫 데이터 관리부를 포함함을 특징으로 하는 메모리 시스템.
KR1020140088454A 2014-07-14 2014-07-14 저장 매체, 메모리 시스템 및 메모리 시스템에서의 저장 영역 관리 방법 KR20160008365A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140088454A KR20160008365A (ko) 2014-07-14 2014-07-14 저장 매체, 메모리 시스템 및 메모리 시스템에서의 저장 영역 관리 방법
US14/751,800 US20160011971A1 (en) 2014-07-14 2015-06-26 Storage medium, memory system, and method of managing storage area in memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140088454A KR20160008365A (ko) 2014-07-14 2014-07-14 저장 매체, 메모리 시스템 및 메모리 시스템에서의 저장 영역 관리 방법

Publications (1)

Publication Number Publication Date
KR20160008365A true KR20160008365A (ko) 2016-01-22

Family

ID=55067683

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140088454A KR20160008365A (ko) 2014-07-14 2014-07-14 저장 매체, 메모리 시스템 및 메모리 시스템에서의 저장 영역 관리 방법

Country Status (2)

Country Link
US (1) US20160011971A1 (ko)
KR (1) KR20160008365A (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9799401B2 (en) * 2014-09-16 2017-10-24 Seagate Technology Llc Incremental step pulse programming
US10073685B2 (en) * 2015-01-19 2018-09-11 SK Hynix Inc. Methods of system optimization by over-sampling read
US9898200B2 (en) * 2016-02-18 2018-02-20 Samsung Electronics Co., Ltd Memory device having a translation layer with multiple associative sectors
US10168917B2 (en) * 2016-04-05 2019-01-01 International Business Machines Corporation Hotness based data storage for facilitating garbage collection
CN107368257B (zh) * 2016-05-12 2019-11-12 华为技术有限公司 固态存储器中的数据巡检方法及装置
US10042755B2 (en) 2016-09-28 2018-08-07 Micron Technology, Inc. 3D vertical NAND memory device including multiple select lines and control lines having different vertical spacing
US10437800B2 (en) * 2016-12-02 2019-10-08 International Business Machines Corporation Data migration using a migration data placement tool between storage systems based on data access
US10437799B2 (en) * 2016-12-02 2019-10-08 International Business Machines Corporation Data migration using a migration data placement tool between storage systems based on data access
CN107168643B (zh) * 2017-03-31 2020-04-03 北京奇艺世纪科技有限公司 一种数据存储方法及装置
TWI647567B (zh) * 2017-12-13 2019-01-11 國立中正大學 使用記憶體位址定位冷熱存取區間之方法
US10783970B2 (en) * 2018-12-12 2020-09-22 Samsung Electronics Co., Ltd. Consolidation of copy-back and write in PRAM blocks
WO2021012104A1 (en) * 2019-07-19 2021-01-28 Alibaba Group Holding Limited Hot-cold data separation method for reducing write amplification in key-value stores
US11281578B2 (en) 2019-08-20 2022-03-22 Micron Technology, Inc. Garbage collection in a memory sub-system during a low battery state
US11282567B2 (en) 2019-08-20 2022-03-22 Micron Technology, Inc. Sequential SLC read optimization
US20210055878A1 (en) * 2019-08-20 2021-02-25 Micron Technology, Inc. Data compaction within the same plane of a memory component
US11726869B2 (en) 2019-08-20 2023-08-15 Micron Technology, Inc. Performing error control operation on memory component for garbage collection
US11281392B2 (en) 2019-08-28 2022-03-22 Micron Technology, Inc. Garbage collection in a memory component using an adjusted parameter
KR20210043314A (ko) * 2019-10-11 2021-04-21 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 동작 방법
US11221802B2 (en) * 2020-06-10 2022-01-11 Western Digital Technologies, Inc. Zone allocation for data storage device based on zone reset behavior
CN113238527B (zh) * 2020-12-19 2022-04-08 华中科技大学 一种工业数据汇聚方法及系统
JP2023044824A (ja) 2021-09-21 2023-04-03 キオクシア株式会社 メモリシステム
CN116303119B (zh) * 2023-05-19 2023-08-11 珠海妙存科技有限公司 冷热数据的识别方法、系统及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9183134B2 (en) * 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
US8760922B2 (en) * 2012-04-10 2014-06-24 Sandisk Technologies Inc. System and method for micro-tiering in non-volatile memory
US9218881B2 (en) * 2012-10-23 2015-12-22 Sandisk Technologies Inc. Flash memory blocks with extended data retention

Also Published As

Publication number Publication date
US20160011971A1 (en) 2016-01-14

Similar Documents

Publication Publication Date Title
KR20160008365A (ko) 저장 매체, 메모리 시스템 및 메모리 시스템에서의 저장 영역 관리 방법
US10467133B2 (en) Storage device including nonvolatile memory device and garbage collection method thereof
KR101997572B1 (ko) 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법
US9256530B2 (en) Nonvolatile memory device and sub-block managing method thereof
KR102254392B1 (ko) 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 장치 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템
US10019376B2 (en) Memory system and operating method thereof
US8990483B2 (en) Nonvolatile memory device, memory system, and program method therof
US20170300269A1 (en) Memory system and operating method thereof
KR102295208B1 (ko) 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법
US20170109276A1 (en) Memory system and operation method thereof
TWI686814B (zh) 記憶體系統和記憶體系統的操作方法
KR20170035155A (ko) 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
KR102514388B1 (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US20170123974A1 (en) Memory system and operation method thereof
KR102245822B1 (ko) 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 프로그램 방법
CN106610904B (zh) 存储系统及其操作方法
US20160328155A1 (en) Memory system and operating method thereof
CN110390984B (zh) 存储器系统和存储器系统的操作方法
KR20170061218A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20150133084A (ko) 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템
CN106775443B (zh) 存储器系统及其操作方法
CN106560781B (zh) 数据处理系统
KR102398611B1 (ko) 메모리 시스템
CN107025177B (zh) 存储器系统及其操作方法
KR20160148940A (ko) 메모리 시스템 및 그의 동작방법

Legal Events

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