KR101081948B1 - 불휘발성 메모리 장치 및 그것의 데이터 저장 방법 - Google Patents

불휘발성 메모리 장치 및 그것의 데이터 저장 방법 Download PDF

Info

Publication number
KR101081948B1
KR101081948B1 KR1020090129045A KR20090129045A KR101081948B1 KR 101081948 B1 KR101081948 B1 KR 101081948B1 KR 1020090129045 A KR1020090129045 A KR 1020090129045A KR 20090129045 A KR20090129045 A KR 20090129045A KR 101081948 B1 KR101081948 B1 KR 101081948B1
Authority
KR
South Korea
Prior art keywords
data
block
blocks
log
data block
Prior art date
Application number
KR1020090129045A
Other languages
English (en)
Other versions
KR20110072205A (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 KR1020090129045A priority Critical patent/KR101081948B1/ko
Publication of KR20110072205A publication Critical patent/KR20110072205A/ko
Application granted granted Critical
Publication of KR101081948B1 publication Critical patent/KR101081948B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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

Landscapes

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

Abstract

본 발명의 기술적 사상의 실시 예에 따른 불휘발성 메모리 장치는 단일 레벨 셀 방식에 의하여 데이터를 저장하는 제 1 데이터 블록들, 멀티 레벨 셀 방식에 의하여 데이터를 저장하는 제 2 데이터 블록들 및 상기 제 1 데이터 블록 및 상기 제 2 데이터 블록에 할당되는 로그 블록들을 포함하되, 상기 로그 블록들은 단일 레벨 셀 방식에 의하여 데이터를 저장한다.

Description

불휘발성 메모리 장치 및 그것의 데이터 저장 방법{NONVOLATILE MEMORY DEVICE AND DATA STORING METHOD THEREOF}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀더 구체적으로는 불휘발성 메모리 장치 및 그것의 데이터 저장 방법에 관한 것이다.
반도체 메모리 장치에는 DRAM, SRAM 등과 같은 휘발성 메모리와 EEPROM, FRAM, PRAM, MRAM, Flash Memory 등과 같은 불휘발성 메모리 등이 있다. 휘발성 메모리는 전원이 차단될 때 저장된 데이터를 잃지만, 불휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존한다.
최근 들어 불휘발성 메모리를 사용하는 장치들이 증가하고 있다. 예를 들면 MP3 플레이어, 디지털 카메라, 휴대전화, 캠코더, 플래시 카드 및 SSD(Solid State Disk) 등은 저장장치로 불휘발성 메모리를 사용하고 있다.
저장장치로 불휘발성 메모리를 사용하는 장치들이 증가하면서, 불휘발성 메모리의 용량도 급속히 증가하고 있다. 메모리 용량을 증가시키는 방법들 중 하나는 하나의 메모리 셀(cell)에 다수의 비트들을 저장하는 방식인 이른바 멀티 레벨 셀(MLC:Multi Level Cell) 방식이다.
본 발명의 목적은 빠른 쓰기 동작을 수행할 수 있는 불휘발성 메모리 장치 및 그것의 데이터 저장 방법을 제공하는 데 있다.
본 발명의 기술적 사상의 실시 예에 따른 불휘발성 메모리 장치는 단일 레벨 셀 방식에 의하여 데이터를 저장하는 제 1 데이터 블록들, 멀티 레벨 셀 방식에 의하여 데이터를 저장하는 제 2 데이터 블록들 및 상기 제 1 데이터 블록 및 상기 제 2 데이터 블록에 할당되는 로그 블록들을 포함하되, 상기 로그 블록들은 단일 레벨 셀 방식에 의하여 데이터를 저장한다.
실시 예로서, 상기 불휘발성 메모리 장치는 플래시 변환 계층을 더 포함하되, 상기 플래시 변환 계층은 데이터 블록의 논리 주소를 물리 주소로 변환하는 데이터 블록 맵핑 테이블; 로그 블록의 논리 주소를 물리 주소로 변환하는 로그 블록 맵핑 테이블 및 액세스 요청된 논리 주소를 저장하는 핫 데이터 테이블을 포함한다.
실시 예로서, 상기 핫 데이터 테이블은 액세스 요청된 횟수가 기준 개수보다 많은 논리 주소를 저장한다.
실시 예로서, 상기 핫 데이터 테이블은 밀어내기 방식에 의하여 액세스 요청된 논리 주소를 저장한다.
실시 예로서, 상기 불휘발성 메모리 장치는 쓰기 요청에 응답하여, 데이터가 상기 복수의 제 1 데이터 블록들에 저장한다.
실시 예로서, 상기 복수의 제 1 데이터 블록들에 데이터가 모두 저장된 경우에 상기 복수의 제 1 데이터 블록들과 상기 복수의 제 2 데이터 블록들 사이의 이전 동작(migration operation)이 수행된다.
실시 예로서, 상기 이전 동작(migration operation)은 상기 복수의 제 1 데이터 블록들 중 희생 데이터 블록을 이용하여 수행된다.
실시 예로서, 상기 불휘발성 메모리 장치는 덮어 쓰기 요청에 응답하여, 데이터를 상기 복수의 로그 블록들에 저장한다.
실시 예로서, 상기 데이터의 논리 주소가 상기 핫 데이터 테이블에 저장된 논리 주소인 경우에 상기 복수의 제 1 데이터 블록들 중 선택된 제 1 데이터 블록에 병합 동작이 수행된다.
실시 예로서, 상기 복수의 제 1 데이터 블록들에 데이터가 모두 저장된 경우에 상기 복수의 제 1 데이터 블록들과 상기 복수의 제 2 데이터 블록들 사이의 이전 동작(migration operation)이 수행된다.
실시 예로서, 상기 데이터의 논리 주소가 상기 핫 데이터 테이블에 저장된 논리 주소가 아닌 경우에 상기 복수의 제 2 데이터 블록들 중 선택된 제 2 데이터 블록에 병합 동작이 수행된다.
실시 예로서, 상기 불휘발성 메모리 장치는 솔리드 스테이트 드라이브(SSD, Solid State Drive) 장치를 형성한다.
본 발명의 기술적 사상의 실시 예에 따른 복수의 데이터 블록들 및 복수의 로그 블록들을 포함하는 불휘발성 메모리 장치의 데이터 저장 방법에 있어서, 쓰기 요청에 응답하여, 상기 복수의 데이터 블록들 중 단일 레벨 셀 방식에 의하여 데이터를 저장하는 제 1 데이터 블록들에 데이터를 저장하는 단계, 상기 제 1 데이터 블록들에 데이터가 모두 저장된 경우에 상기 복수의 데이터 블록들 중 멀티 레벨 셀 방식에 의하여 데이터를 저장하는 제 2 데이터 블록들과 상기 제 1 데이터 블록들 사이의 이전 동작(migration operation)을 수행하는 단계 및 상기 이전 동작(migration operation)에 의하여 생성된 제 1 데이터 블록에 데이터를 저장하는 단계를 포함한다.
실시 예로서, 상기 이전 동작(migration operation)은 상기 제 1 데이터 블록들 중 희생 데이터 블록을 이용하여 수행된다.
실시 예로서, 덮어 쓰기 요청에 응답하여, 상기 복수의 로그 블록들에 데이터를 저장하는 단계를 더 포함하되, 상기 복수의 로그 블록들은 단일 레벨 셀 방식에 의하여 데이터를 저장한다.
실시 예로서, 상기 복수의 로그 블록들에 데이터가 모두 저장된 경우에 상기 복수의 데이터 블록들을 이용하여 병합동작을 수행한다.
실시 예로서, 덮어 쓰기 요청 회수가 기준 개수보다 많은 경우에 상기 복수의 데이터 블록들 중 단일 레벨 셀 방식에 의하여 데이터를 저장하는 제 1 데이터 블록에 병합동작을 수행한다.
실시 예로서, 덮어 쓰기 요청 횟수가 기준 개수보다 적은 경우에 상기 복수의 데이터 블록들 중 멀티 레벨 셀 방식에 의하여 데이터를 저장하는 제 1 데이터 블록에 병합동작을 수행한다.
본 발명의 기술적 사상의 실시 예에 따르면, 핫 데이터 테이블에 저장된 정보에 따라 덮어 쓰기(over write) 스킴이 선택적으로 적용될 수 있다. 따라서, 좀더 빠른 덮어 쓰기 동작의 수행이 가능하다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 기술적 사상의 실시 예들을 첨부한 도면을 참조하여 설명한다.
도 1은 본 발명의 기술적 사상의 실시 예에 따른 플래시 메모리를 사용하는 메모리 시스템의 하드웨어 구조를 보여주는 블록도이다.
도 1을 참조하면, 메모리 시스템(100)은 중앙처리장치(110), 랜덤 액세스 메모리(120), 및 플래시 메모리(130)를 포함한다.
플래시 메모리(130)는 스트링 구조(string structure)를 갖는 복수의 메모리 셀들을 포함한다. 메모리 셀들은 보통 메모리 셀 어레이(memory cell array)로 불린다. 메모리 셀 어레이는 복수의 메모리 블록(memory block)으로 구성된다. 각각의 메모리 블록은 복수의 페이지(page)로 구성된다. 각각의 페이지는 하나의 워드 라인을 공유하는 복수의 메모리 셀로 구성된다.
플래시 메모리(130)는 읽기(read) 및 쓰기(program) 동작의 단위와 소거(erase) 동작의 단위가 다르다. 즉, 플래시 메모리(130)는 페이지 단위로 읽기 및 쓰기 동작을 수행하고, 메모리 블록 단위로 소거 동작을 수행한다. 또한, 플래시 메모리(130)는 다른 반도체 메모리와 달리 덮어쓰기(overwrite)를 지원하지 않는다. 따라서 플래시 메모리(130)는 쓰기 동작 전에 소거 동작을 수행한다.
플래시 메모리(130)의 이와 같은 특성으로 인해, 플래시 메모리(130)를 하드 디스크처럼 사용하기 위해서는, 읽기, 쓰기, 및 소거 동작에 대한 별도의 관리가 필요하다. 플래시 변환 계층(Flash Translation Layer, FTL)은 이러한 목적으로 개발된 시스템 소프트웨어이다. 예를 들어, 플래시 변환 계층(FTL)은 랜덤 액세스 메모리(120) 상에서 구동될 것이다.
도 2는 도 1에 도시된 메모리 시스템의 소프트웨어 구조를 보여주는 블록도이다.
도 2를 참조하면, 메모리 시스템은 애플리케이션(205), 파일 시스템(210), 플래시 변환 계층(220), 그리고 플래시 메모리(230) 순으로 소프트웨어 계층 구조(200)를 갖는다.
플래시 변환 계층(220)은 파일 시스템(210)으로부터 논리 어드레스(Logical Address, LA)를 입력받는다. 플래시 변환 계층(220)은 논리 어드레스(LA)를 입력받고, 이를 물리 어드레스(Physical Address, PA)로 변환한다. 물리 어드레스(PA)는 플래시 메모리(230)로 제공된다. 플래시 메모리(230)는 제공된 물리 어드레스(PA)에 대응하는 메모리 셀에 접근한다.
플래시 변환 계층(220)은 어드레스 변환을 위해 어드레스 맵핑 테이블(Address Mapping Table)을 포함한다. 어드레스 맵핑 테이블은 플래시 메모 리(130)로부터 랜덤 액세스 메모리(120)로 로드된다. 어드레스 맵핑 테이블은 랜던 액세스 메모리(120) 상에서 구동된다.
플래시 변환 계층(220)의 어드레스 맵핑 방법들은 맵핑 단위에 구분될 수 있다. 예를 들어, 어드레스 맵핑 방법에는 페이지 맵핑 방법(page mapping method), 블록 맵핑 방법(block mapping method), 그리고 혼합 맵핑 방법(hybrid mapping method)이 있다.
도 3은 도 2의 메모리 시스템을 좀더 상세하게 보여주는 블록도이다.
도 3을 참조하면, 메모리 시스템(300)은 파일 시스템(310), 플래시 변환 계층(320), 및 플래시 메모리(330)를 포함한다.
플래시 변환 계층(320)은 파일 시스템(310)으로부터 논리 어드레스(LA)를 입력받는다. 플래시 변환 계층(320)은 맵핑 테이블을 이용하여 논리 어드레스(LA)를 물리 어드레스(PA)로 변환한다. 플래시 변환 계층(320)은 물리 어드레스(PA)를 플래시 메모리(330)에 전달한다.
본 발명의 기술적 사상에 따른 실시 예에 있어서, 플래시 변환 계층(320)은 데이터 블록 맵핑 테이블(321), 로그 블록 맵핑 테이블(322), 및 핫 데이터 테이블(323)을 포함한다. 여기서, 데이터 블록 맵핑 테이블(321)은 데이터 블록의 논리 블록 번호(LBN)을 물리 블록 번호(PBN)로 변환하기 위한 것이다. 로그 블록 맵핑 테이블(322)은 로그 블록의 논리 블록 번호(LBN)를 물리 블록 번호(PBN)로 변환하기 위한 것이다. 핫 데이터 테이블(323)은 액세스 요청된 논리 블록 번호(LBN)를 관리하기 위한 것이다.
본 발명의 기술적 사상에 따른 실시 예에 있어서, 핫 데이터 테이블(323)은 액세스 요청된 소정의 논리 블록 주소(LBN)를 관리한다. 예를 들어, 핫 데이터 테이블(323)은 자주 액세스된 논리 블록 주소(LBN)를 관리할 것이다. 이 경우, 논리 블록 주소(LBN)의 액세스 횟수가 기준 개수보다 많은 경우, 핫 데이터 테이블(323)은 해당 논리 블록 주소(LBN)를 관리할 것이다. 다른 예로, 핫 데이터 테이블(323)은 최근에 액세스된 논리 블록 번호(LBN)를 관리할 것이다. 이 경우, 핫 데이터 테이블(323)에서 관리되는 논리 블록 번호(LBN)는 밀어내기 방식에 의하여 관리될 수 있다. 여기서, 밀어내기 방식은 논리 블록 번호(LBN)들을 최근에 액세스된 순서대로 관리하는 것을 의미한다.
본 발명의 기술적 사상의 실시 예에 따른 플래시 메모리(330)는 핫 데이터 테이블(323)에 저장된 정보를 이용하여 빠른 병합 동작(merge operation)을 수행할 수 있다.
자세히 설명하면, 플래시 메모리(330)는 메모리 셀에 저장되는 데이터의 비트 수에 따라 구분될 수 있다. 예를 들어, 플래시 메모리(330)는 하나의 메모리 셀에 하나의 비트를 저장할 수 있다. 이는 보통 단일 레벨 셀(Single Level Cell, SLC) 방식이라 칭해진다. 또한, 플래시 메모리(330)는 하나의 메모리 셀에 복수의 비트를 저장할 수 있다. 이는 보통 멀티 레벨 셀(Multi Level Cell, MLC) 방식이라 칭해진다.
멀티 레벨 셀(MLC) 방식의 플래시 메모리는 단일 레벨 셀(SLC) 방식의 플래시 메모리에 비하여 느린 쓰기 속도를 갖는다. 예를 들어, 단일 레벨 셀(SLC) 방식 의 플래시 메모리는 200usec의 쓰기 속도를 갖는데 비하여, 2 비트 멀리 레벨 셀(2bit MLC) 방식의 플래시 메모리는 800use의 쓰기 속도를 갖는다. 그러나, 이는 예시적인 것으로 이해되어야 할 것이다. 예를 들어, 플래시 메모리는 플래시 메모리의 내부 알고리즘 및 쓰기 동작이 요청된 페이지의 주소에 따라 다른 쓰기 속도를 가질 수 있다.
멀티 레벨 셀(MLC) 방식의 플래시 메모리가 단일 레벨 셀(SLC) 방식의 플래시 메모리에 비하여 느린 쓰기 속도를 갖기 때문에, 본 발명의 기술적 사상에 따른 실시 예에 따른 플래시 메모리(330)는 데이터의 특성에 따라 병합 동작의 쓰기 방식을 달리할 것이다. 예를 들어, 핫 데이터 테이블(323)에 관리되는 논리 블록 주소(LBN)에 대한 덮어 쓰기(over write) 요청이 있는 경우, 플래시 메모리(330)는 단일 레벨 셀(SLC) 방식에 의하여 병합 동작을 수행할 것이다. 다른 예로, 핫 데이터 테이블(323)에 관리되지 않는 논리 블록 주소(LBN)에 대한 덮어 쓰기(over write) 요청이 있는 경우, 플래시 메모리(330)는 멀티 레벨 셀(MLC) 방식에 의하여 병합 동작을 수행할 것이다. 이는 이하의 도 7 내지 10에서 좀더 상세하게 설명될 것이다.
플래시 메모리(330)는 데이터 영역(331a) 및 로그 영역(331b)을 포함한다. 데이터 영역(331a) 및 로그 영역(331b)은 복수의 메모리 블록(memory block)을 포함한다. 본 발명의 기술적 사상에 따른 실시 예에 있어서, 데이터 영역(331a)은 단일 레벨 셀(SLC) 방식에 의하여 데이터가 저장되는 데이터 블록들과 멀티 레벨 셀(MLC) 방식에 의하여 데이터가 저장되는 데이터 블록들을 포함한다. 로그 영역(331b)은 단일 레벨 셀(SLC) 방식에 의하여 데이터가 저장되는 로그 블록들을 포함한다. 이는 이하의 도 4에서 좀더 상세하게 설명될 것이다.
도 4는 도 3의 플래시 메모리(330)를 좀더 상세하게 보여주는 블록도이다.
도 4를 참조하면, 플래시 메모리(330)는 메모리 셀 어레이(331), 어드레스 디코더(332), 제어 로직(333), 및 데이터 입출력 회로(334)를 포함한다.
메모리 셀 어레이(331)는 워드 라인(WL)을 통해 어드레스 디코더(332)에 연결되고, 비트 라인(BL)을 통해 데이터 입출력 회로(334)에 연결된다. 메모리 셀 어레이(331)는 데이터 영역(331a) 및 로그 영역(332b)을 포함한다. 데이터 영역(331a)은 복수의 데이터 블록들을 포함한다. 로그 (331b)은 복수의 로그 블록들을 포함한다.
본 발명의 기술적 사상에 따른 실시 예에 있어서, 데이터 영역(331a)은 단일 레벨 셀(SLC) 방식에 의하여 데이터를 저장하는 데이터 블록과 멀티 레벨 셀(MLC) 방식에 의하여 데이터를 저장하는 데이터 블록을 모두 포함한다. 다시 말하면, 데이터 영역(331a)은 단일 레벨 셀(SLC) 방식에 의하여 데이터가 저장되는 데이터 블록들과 멀티 레벨 셀(MLC) 방식에 의하여 데이터가 저장되는 데이터 블록들로 구분될 수 있다.
예를 들어, 도 4를 참조하면, 데이터 영역(331a)은 L1 데이터 블록들, L2 데이터 블록들, 및 LN 데이터 블록들로 구분될 수 있다. 여기서, L1 데이터 블록은 단일 레벨 셀(SLC) 방식에 의하여 데이터가 저장되는 메모리 블록을 의미한다. L2 데이터 블록은 2비트 멀티 레벨 셀(2bit MLC) 방식에 의하여 데이터가 저장되는 메 모리 블록을 의미한다. LN 데이터 블록은 N비트 멀티 레벨 셀(Nbit MLC, N은 2 이상의 정수) 방식에 의하여 데이터가 저장되는 메모리 블록을 의미한다.
데이터 영역(331a)이 L1 데이터 블록 내지 LN 데이터 블록을 포함하기 때문에, 본 발명의 기술적 사상에 따른 플래시 메모리는 빠른 병합 연산(merge operation)을 수행할 수 있다. 예를 들어, 핫 데이터 테이블(323, 도 3 참조)에 의하여 관리되는 논리 블록 주소(LBN)에 대한 덮어 쓰기(over write) 요청이 있는 경우, 병합 연산은 L1 데이터 블록을 이용하여 수행될 것이다. 다른 예로, 핫 데이터 테이블(323, 도 3 참조)에 의하여 관리되지 않는 논리 블록 주소(LBN)에 대한 덮어 쓰기(over write) 요청이 있는 경우, 병합 연산은 LN 데이터 블록을 이용하여 수행될 것이다. 이는 이하의 도 7 내지 도 10에서 좀더 상세하게 설명될 것이다.
한편, 쓰기 요청이 있는 경우, 본 발명의 기술적 사상에 따른 플래시 메모리는 먼저 L1 데이터 블록에 데이터를 저장할 것이다. 따라서, 본 발명의 기술적 사상에 따른 플래시 메모리는 LN 데이터 블록에 데이터를 저장하는 플래시 메모리에 비하여 빠른 쓰기 동작을 수행할 수 있다. 이는 이하의 도 5 및 도 6에서 좀더 상세하게 설명될 것이다.
계속해서 도 4를 참조하면, 본 발명의 기술적 사상에 따른 실시 예에 있어서, 로그 영역(331b)은 단일 레셀 셀(SLC) 방식에 의하여 데이터를 저장하는 로그 블록들을 포함한다. 다시 말하면, 로그 영역(331b)은 L1 메모리 블록들로 구성된다. 여기서, L1 메모리 블록은 단일 레벨 셀(SLC) 방식에 의하여 데이터가 저장되는 메모리 블록을 의미한다. 로그 영역(331b)은 L1 블록들로 구성되기 때문에, 본 발명의 기술적 사상에 따른 플래시 메모리는 덮어 쓰기(over write) 동작을 LN 블록들로 구성된 로그 영역에 비하여 빠르게 수행할 수 있다.
어드레스 디코더(332)는 워드 라인(WL)을 통해 메모리 셀 어레이(331)에 연결된다. 어드레스 디코더(332)는 외부로부터 어드레스(ADDR)를 전달받는다. 어드레스 디코더(332)는 전달받은 어드레스(ADDR)를 디코딩하고, 디코딩된 어드레스(Decoded ADDR)를 메모리 셀 어레이(331) 및 데이터 입출력 회로(334)에 전달한다.
제어 로직(333)은 플래시 메모리(330)의 제반 동작을 제어한다. 제어 로직(333)은 외부로부터 전달받은 제어 신호(CTRL)에 응답하여 어드레스 디코더(332) 및 데이터 입출력 회로(334)를 제어한다.
데이터 입출력 회로(334)는 데이터 라인들(DL)을 통해 메모리 셀 어레이(331)에 연결된다. 데이터 입출력 회로(334)는 제어 로직(333)의 제어에 응답하여 동작한다. 데이터 입출력 회로(334)는 외부와 데이터(DATA)를 교환한다. 외부로부터 전달되는 데이터(DATA)는 데이터 라인들(DL)을 통해 메모리 셀 어레이(331)에 전달될 것이다. 메모리 셀 어레이(331)로부터 전달되는 데이터(DATA)는 외부로 출력될 것이다. 예시적으로, 데이터 입출력 회로(334)는 데이터 버퍼 등과 같이 잘 알려진 구성 요소를 포함할 것이다.
도 5는 본 발명의 기술적 사상의 실시 예에 따른 쓰기 동작을 보여주는 순서도이다.
S110 단계에서, 플래시 메모리에 쓰기 동작이 요청된다.
S120 단계에서, 쓰기 요청이 덮어 쓰기(over write) 요청인지 여부가 판단된다. 예를 들어, 쓰기 요청이 덮어 쓰기(over write) 요청인지의 여부는 데이터 맵핑 테이블(321)에 쓰기 요청된 주소가 있는 지의 여부에 의하여 판별된다.
쓰기 요청이 덮어 쓰기(over write) 요청인 경우, 쓰기 요청된 데이터는 로그 블록에 저장될 것이다(S130). 이는 이하의 도 7 내지 도 10에서 좀더 상세하게 설명될 것이다.
쓰기 요청이 덮어 쓰기(over write) 요청이 아닌 경우, S140 단계에서, 비어있는 L1 데이터 블록이 존재하는지 여부가 판단된다. 비어있는 L1 데이터 블록이 존재하는 경우, 쓰기 요청된 데이터는 L1 데이터 블록에 저장된다(S150). 비어있는 L1 데이터 블록이 존재하지 않는 경우, 쓰기 요청된 데이터는 LN 데이터 블록에 저장된다(S160).
도 6은 본 발명의 기술적 사상의 다른 실시 예에 따른 쓰기 동작을 보여주는 순서도이다. 도 6의 쓰기 동작은 S260 단계를 제외하고 도 5의 쓰기 동작과 유사하다. 따라서, 이하에서는 S260 단계에서의 동작이 중점적으로 설명될 것이다.
S210 단계에서, 플래시 메모리에 쓰기 동작이 요청된다.
S220 단계에서, 쓰기 요청이 덮어 쓰기(over write) 요칭인지 여부가 판단된다.
쓰기 요청이 덮어 쓰기(over write) 요청이 아닌 경우, L1 데이터 블록이 존재하는 여부가 판단된다(S240). 비어있는 L1 데이터 블록이 존재하지 않는 경우, S260 단계에서, 새로운 L1 데이터 블록을 생성하고, 새롭게 생성된 L1 데이터 블록 에 데이터가 저장된다.
자세히 설명하면, 데이터가 저장된 L1 데이터 블록에서 희생 데이터 블록이 선택된다(S264). 예를 들어, 희생 데이터 블록은 유효 페이지(valid page)의 개수가 가장 적은 데이터 블록일 수 있다. 이 후, 희생 데이터 블록의 유효 페이지가 LN 데이터 블록으로 복사된다(264). 이는 이전 동작(migration operation)이라 칭해질 수 있다. 이 경우, 희생 데이터 블록에 저장된 데이터는 소거되고, 희생 데이터 블록은 새로운 L1 데이터 블록으로 변환된다. 이 후, 새로운 L1 데이터 블록에 데이터가 저장된다(S266).
도 7은 본 발명의 기술적 사상의 실시 예에 따른 덮어 쓰기(over write) 동작을 보여주는 순서도이다.
S310 단계에서, 덮어 쓰기(over write) 동작이 요청된다.
S320 단계에서, 로그 블록이 존재하는지 여부가 판단된다. 다시 말하면, 로그 영역(332, 도 3 참조)에 포함된 로그 블록들이 모두 사용되었는 지의 여부가 판단된다. 비어있는 로그 블록이 존재하는 경우, 덮어 쓰기(over write) 요청된 데이터는 로그 블록에 저장된다(S330). 플래시 변환 계층은 덮어 쓰기(over write) 요청된 데이터에 대응하는 논리 주소(LA)를 해당 로그 블록에 맵핑(mapping)할 것이다.
비어있는 로그 블록이 존재하지 않는 경우, 새로운 로그 블록이 생성되는 동작이 수행된다. 이를 위해, 먼저 핫 데이터 테이블이 스캔된다(S340). 이 후, 덮어 쓰기(over write) 요청된 데이터의 논리 주소(LA)가 핫 논리 주소(Hot Logical Address, HLA))인지의 여부가 판단된다(S350). 여기서, 핫 논리 주소(HLA)란 핫 데이터 테이블에 의하여 관리되는 논리 주소(LA)를 의미한다.
덮어 쓰기(over write) 요청된 데이터의 논리 주소(LA)가 핫 논리 주소가 아닌 경우, LN 데이터 블록을 이용한 병합 동작이 수행된다(S360).
구체적으로, 먼저 희생 로그 블록이 선택된다(S361). 여기서, 희생 로그 블록이란 병합 동작을 통하여 새로운 로그 블록으로 변환될 로그 블록을 의미한다. 예를 들어, 희생 로그 블록은 유효 페이지(valid page)의 개수가 가장 적은 로그 블록일 수 있다. 이 후, LN 데이터 블록에 병합 동작이 수행된다(S363). 즉, 희생 로그 블록과 이에 대응하는 데이터 블록의 유효 페이지가 LN 데이터 블록에 복사된다. 이 경우, LN 데이터 블록은 플래시 변환 계층(320, 도 3 참조)에 의하여 새로운 데이터 블록으로 변환될 것이다. 희생 로그 블록은 소거 동작이 수행된 후에 플래시 변환 계층(320, 도 3 참조)에 의하여 새로운 로그 블록으로 변환될 것이다. 이 후, 새로운 로그 블록에 덮어 쓰기(over write) 요청된 데이터가 저장될 것이다(S380).
덮어 쓰기(over write) 요청된 데이터의 논리 주소(LA)가 핫 논리 주소인 경우, L1 데이터 블록을 이용한 병합 동작이 수행된다(S370).
구체적으로, 먼저 희생 로그 블록이 선택된다(S371). 이후 L1 데이터 블록에 병합 동작이 수행된다(S373). 즉, 희생 로그 블록과 이에 대응하는 데이터 블록의 유효 페이지(valid page)가 L1 데이터 블록에 복사된다. 이 경우, L1 데이터 블록은 플래시 변환 계층(320, 도 3 참조)에 의하여 새로운 데이터 블록으로 변환될 것 이다. 희생 로그 블록은 소거 동작이 수행된 후에 플래시 변환 계층(320, 도 3 참조)에 의하여 새로운 로그 블록으로 변환될 것이다. 이 후, 새로운 로그 블록에 덮어 쓰기(over write) 요청된 데이터가 저장될 것이다(S380).
상술한 바와 같이, 쓰기 요청이 덮어 쓰기(over write)에 해당하는 경우, 본 발명의 기술적 사상의 실시 예에 따른 플래시 메모리는 데이터의 특성에 따라 다른 병합 동작 스킴(merge operation scheme)을 갖는다. 이는 데이터의 특성에 따라 병합 동작의 속도를 조절할 수 있음을 의미한다. 이러한 데이터의 특성은 핫 데이터 테이블(323, 도 3 참조)에 의하여 구별될 것이다.
도 8은 본 발명의 기술적 사상의 실시 예에 따른 병합 동작을 보여주는 블록도이다. 간략한 설명을 위하여, 도 8에서는 로그 블록 및 L1 데이터 블록은 4개의 페이지들로 구성된다고 가정된다. L2 데이터 블록은 8개의 페이지들로 구성된다고 가정된다. 빗금 표시의 페이지들은 데이터가 저장된 유효 페이지(valid page)를 의미한다고 가정된다.
도 8a는 본 발명의 기술적 사상의 실시 예에 따른 도 7의 L1 데이터 블록을 이용한 병합 동작을 보여주는 블록도이다.
도 8a를 참조하면, 로그 블록(11)과 이에 대응하는 L1 데이터 블록(12)은 각각 4 개의 페이지들을 포함한다. 로그 블록(11)은 제 2, 3 및 4 유효 페이지를 갖는다. L1 데이터 블록(12)은 제 1 유효 페이지를 갖는다.
병합 동작이 수행되는 경우, 로그 블록(11)의 유효 페이지들은 L1 데이터 블록(13)으로 복사된다. L1 데이터 블록(12)의 유효 페이지는 L1 데이터 블록(13)으 로 복사된다. 이 경우, 로그 블록(11)에 저장된 데이터는 소거되고, 로그 블록(11)은 플래시 변환 계층(320, 도 3 참조)에 의하여 새로운 로그 블록(11)으로 변환한다. 덮어 쓰기(over write) 요청된 데이터는 새로운 로그 블록(11)에 저장된다. L1 데이터 블록(13)은 플래시 변환 계층(320, 도 3 참조)에 의하여 새로운 데이터 블록으로 변환된다. L1 데이터 블록(12)은 소거되고, 플래시 변환 계층(320, 도 3 참조)에 의하여 새로운 데이터 블록으로 변환된다.
도 8b는 본 발명의 기술적 사상의 다른 실시 예에 따른 도 7의 L1 데이터 블록을 이용한 병합 동작을 보여주는 블록도이다.
도 8b를 참조하면, 로그 블록(21)과 이에 대응하는 L2 데이터 블록(22)은 각각 4 개 및 8 개의 페이지들을 포함한다. 로그 블록(21)은 제 2, 3 및 4 유효 페이지를 갖는다. L2 데이터 블록(22)은 제 1 유효 페이지를 갖는다.
병합 동작이 수행되는 경우, 로그 블록(21)의 유효 페이지들은 L1 데이터 블록(23)으로 복사된다. L2 데이터 블록(22)의 유효 페이지는 L1 데이터 블록(23)으로 복사된다. 이 경우, 로그 블록(21)에 저장된 데이터는 소거되고, 로그 블록(21)은 플래시 변환 계층(320, 도 3 참조)에 의하여 새로운 로그 블록(21)으로 변환한다. 덮어 쓰기(over write) 요청된 데이터는 새로운 로그 블록(21)에 저장된다. L1 데이터 블록(23)은 플래시 변환 계층(320, 도 3 참조)에 의하여 새로운 데이터 블록으로 변환된다.
도 8c는 본 발명의 기술적 사상의 실시 예에 따른 도 7의 LN 데이터 블록을 이용한 병합 동작을 보여주는 블록도이다. 도 8c에서는 간략한 설명을 위하여 LN 데이터 블록은 L2 데이터 블록인 것으로 가정된다.
도 8c를 참조하면, 로그 블록(31)과 이에 대응하는 L1 데이터 블록(32)은 각각 4 개의 페이지들을 포함한다. 로그 블록(31)은 제 2, 3 및 4 유효 페이지를 갖는다. L1 데이터 블록(32)은 제 1 유효 페이지를 갖는다.
병합 동작이 수행되는 경우, 로그 블록(31)의 유효 페이지들은 L2 데이터 블록(33)으로 복사된다. L1 데이터 블록(32)의 유효 페이지는 L2 데이터 블록(33)으로 복사된다. 이 경우, 로그 블록(31)에 저장된 데이터는 소거되고, 로그 블록(31)은 플래시 변환 계층(320, 도 3 참조)에 의하여 새로운 로그 블록으로 변환한다. 덮어 쓰기(over write) 요청된 데이터는 새로운 로그 블록(31)에 저장된다. L2 데이터 블록(33)은 플래시 변환 계층(320, 도 3 참조)에 의하여 새로운 데이터 블록으로 변환된다.
도 8d는 본 발명의 기술적 사상의 다른 실시 예에 따른 도 7의 LN 데이터 블록을 이용한 병합 동작을 보여주는 블록도이다. 도 8d에서는 간략한 설명을 위하여 LN 데이터 블록은 L2 데이터 블록인 것으로 가정된다.
도 8d를 참조하면, 로그 블록(41)과 이에 대응하는 L2 데이터 블록(42)은 각각 4 개 및 8 개의 페이지들을 포함한다. 로그 블록(41)은 제 2, 3 및 4 유효 페이지를 갖는다. L2 데이터 블록(42)은 제 1 유효 페이지를 갖는다.
병합 동작이 수행되는 경우, 로그 블록(41)의 유효 페이지들은 L2 데이터 블록(43)으로 복사된다. L2 데이터 블록(42)의 유효 페이지는 L2 데이터 블록(43)으로 복사된다. 이 경우, 로그 블록(41)에 저장된 데이터는 소거되고, 로그 블록(41) 은 플래시 변환 계층(320, 도 3 참조)에 의하여 새로운 로그 블록으로 변환한다. 덮어 쓰기(over write) 요청된 데이터는 새로운 로그 블록(41)에 저장된다. L2 데이터 블록(43)은 플래시 변환 계층(320, 도 3 참조)에 의하여 새로운 데이터 블록으로 변환된다.
도 9는 본 발명의 기술적 사상의 다른 실시 예에 따른 덮어 쓰기(over write) 동작을 보여주는 순서도이다. 도 9의 덮어 쓰기(over write) 동작은 S480 단계를 제외하고 도 7의 덮어 쓰기(over write) 동작과 유사하다. 따라서, 이하에서는 S480 단계가 중점적으로 설명될 것이다.
S410 단계에서, 덮어 쓰기(over write) 동작이 요청된다. S420 단계에서, 비어있는 로그 블록이 존재하는지 여부가 판단된다. 비어있는 로그 블록이 존재하는 경우, 로그 블록에 데이터가 저장된다(S430). 비어있는 로그 블록이 존재하지 않는 경우, 핫 데이터 테이블이 스캔되고(S440), 덮어 쓰기(over write) 요청된 데이터의 논리 주소(LA)가 핫 논리 주소(HLA)인지의 여부가 판단된다(S450). 덮어 쓰기(over write) 요청된 논리 주소(LA)가 핫 논리 주소가 아닌 경우, LN 데이터 블록을 이용한 병합 동작이 수행된다(460). 이는 도 7에서 상세히 설명하였으므로, 자세한 설명은 생략된다.
덮어 쓰기(over write) 요청된 논리 주소(LA)가 핫 논리 주소인 경우, S455 단계에서, 비어있는 L1 데이터 블록이 존재하는지 여부가 판단된다. 즉, 데이터 영역(331, 도 3 참조)에 포함된 L1 데이터 블록들 중에서 데이터가 저장되지 않은 데이터 블록이 존재하는 지의 여부가 판단된다.
비어있는 L1 데이터 블록이 존재하는 경우, L1 데이터 블록을 이용한 병합 동작이 수행된다(S470). 구체적으로, 희생 로그 블록이 선택되고(S471), L1 데이터 블록에 병합 동작이 수행된다(S473). 이 후 새로운 로그 블록에 덮어 쓰기(over write) 요청된 데이터가 저장된다(S490). 이는 도 7에서 상세히 설명하였으므로, 자세한 설명은 생략된다.
비어있는 L1 데이터 블록이 존재하지 않는 경우, S485 단계에서, 새로운 L1 데이터 블록을 생성하고, 새롭게 생성된 L1 데이터 블록에 병합 동작이 수행된다.
자세히 설명하면, 데이터가 저장된 L1 데이터 블록에서 희생 데이터 블록이 선택된다(S481). 예를 들어, 희생 데이터 블록은 유효 페이지(valid page)의 개수가 가장 적은 데이터 블록일 수 있다. 이 후, 희생 데이터 블록의 유효 페이지가 LN 데이터 블록으로 복사된다(264). 이는 이전 동작(migration operation)이라 칭해질 수 있다. 이 경우, 희생 데이터 블록에 저장된 데이터는 소거되고, 희생 데이터 블록은 새로운 L1 데이터 블록으로 변환된다. 이 후, 새로운 L1 데이터 블록에 병합 동작이 수행된다(S485). 이 후, 새로운 로그 블록에 덮어 쓰기(over write) 요청된 데이터가 저장된다(S490).
도 10은 본 발명의 기술적 사상의 실시 예에 따른 도 6 및 도 9의 이전 동작(migration operation)을 보여주는 블록도이다. 간략한 설명을 위하여, 도 10에서는 L1 데이터 블록(51)이 희생 데이터 블록인 것으로 가정된다. LN 데이터 블록은 L2 데이터 블록인 것으로 가정된다.
도 10을 참조하면, L1 데이터 블록(51)은 4개의 유효 페이지들을 포함한다. 이전 동작(migration operation)dl 수행되는 경우, L1 데이터 블록(51)의 유효 페이지들은 L2 데이터 블록(52)에 복사된다. L1 데이터 블록(51)에 저장된 데이터가 소거된 후, L1 데이터 블록(51)은 플래시 변환 계층(320, 도 3 참조)에 의하여 새로운 L1 데이터 블록(51)으로 변환된다. 이 경우, 새로운 L1 데이터 블록(51)은 데이터를 저장하지 않는 L1 데이터 블록을 의미한다. 한편, L2 데이터 블록(52)은 플래시 변환 계층(320, 도 3 참조)에 의하여 새로운 L2 데이터 블록(52)으로 변환된다. 이 경우, 새로운 L2 데이터 블록(52)은 데이터를 저장하고 있는 L2 데이터 블록을 의미한다.
도 11은 본 발명의 기술적 사상의 실시 예에 따른 불휘발성 메모리 장치를 포함하는 솔리드 스테이트 드라이브(SSD)를 보여주는 블록도이다. 도 11을 참조하면, SSD 시스템(1000)은 호스트(1100)와 SSD(1200)를 포함한다. SSD(1200)는 신호 커넥터(signal connector, 1211)를 통해 호스트(1100)와 신호를 주고 받으며, 전원 커넥터(power connector, 1221)를 통해 전원을 입력받는다. SSD(1200)는 복수의 불휘발성 메모리 장치(1201~120n), SSD 컨트롤러(1210), 그리고 보조 전원 장치(1220)를 포함한다.
복수의 불휘발성 메모리 장치(1201~120n)는 SSD(1200)의 저장 매체로서 사용된다. 복수의 불휘발성 메모리 장치(1201~120n)는 대용량의 저장 능력을 가지는 플래시 메모리 장치로 구현될 수 있다. SSD(1200)는 주로 플래시 메모리(Flash memory)를 사용하고 있으나, 플래시 메모리 이외에도 PRAM, MRAM, ReRAM, FRAM 등의 불휘발성 메모리 장치가 사용될 수도 있다.
도 11에서, 적어도 하나의 불휘발성 메모리 장치는 도 3에 도시된 플래시 메모리(330)를 포함할 수 있다. 복수의 불휘발성 메모리 장치(1201~120n)는 복수의 채널(CH1~CHn)을 통해 SSD 컨트롤러(1210)와 연결될 수 있다. 하나의 채널에는 하나 또는 그 이상의 메모리 장치가 연결될 수 있다. 하나의 채널에 연결되는 메모리 장치들은 동일한 데이터 버스에 연결될 수 있다.
SSD 컨트롤러(1210)는 신호 커넥터(1211)를 통해 호스트(1100)와 신호(SGL)를 주고 받는다. 여기에서, 신호(SGL)에는 커맨드, 어드레스, 데이터 등이 포함될 수 있다. SSD 컨트롤러(1210)는 호스트(1100)의 커맨드에 따라 해당 메모리 장치에 데이터를 쓰거나 해당 메모리 장치로부터 데이터를 읽어낸다. SSD 컨트롤러(1210)의 내부 구성은 도 12를 참조하여 상세하게 설명된다.
보조 전원 장치(1220)는 전원 커넥터(1221)를 통해 호스트(1100)와 연결된다. 보조 전원 장치(1220)는 호스트(1100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 한편, 보조 전원 장치(1220)는 SSD(1200) 내에 위치할 수도 있고, SSD(1200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(1220)는 메인 보드에 위치하며, SSD(1200)에 보조 전원을 제공할 수도 있다.
도 12은 도 11에 도시된 SSD 컨트롤러(1210)의 구성을 예시적으로 보여주는 블록도이다. 도 12을 참조하면, SSD 컨트롤러(1210)는 중앙 처리 장치(CPU, 1211), 호스트 인터페이스(1212), 휘발성 메모리 장치(1213), 그리고 NVM 인터페이스(1214)를 포함한다.
중앙 처리 장치(1211)는 호스트(1100, 도 35 참조)로부터 입력된 신호(SGL) 를 분석하고 처리한다. 중앙 처리 장치(1211)는 호스트 인터페이스(1212)나 NVM 인터페이스(1214)를 통해 호스트(1100)나 불휘발성 메모리(1201~120n)를 제어한다. 중앙 처리 장치(1211)는 SSD(1200)을 구동하기 위한 펌웨어에 따라서 불휘발성 메모리 장치(1201~120n)의 동작을 제어한다.
호스트 인터페이스(1212)는 호스트(1100)의 프로토콜에 대응하여 SSD(1200)와의 인터페이싱을 제공한다. 호스트 인터페이스(1212)는 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI) 등을 이용하여 호스트(1100)와 통신할 수 있다. 또한, 호스트 인터페이스(1212)는 호스트(1100)가 SSD(1200)를 하드 디스크 드라이브(HDD)로 인식하도록 지원하는 디스크 에뮬레이션(Disk Emulation) 기능을 수행할 수 있다.
휘발성 메모리 장치(VM, 1213)는 호스트(1100)로부터 제공되는 쓰기 데이터 또는 불휘발성 메모리 장치로부터 읽은 데이터를 임시로 저장한다. 휘발성 메모리(1213)는 불휘발성 메모리 장치(1201~120n)에 저장될 메타 데이터나 캐시 데이터를 저장할 수 있다. 서든 파워 오프 동작 시에, 휘발성 메모리(1213)에 저장된 메타 데이터나 캐시 데이터는 불휘발성 메모리 장치(1201~120n)에 저장된다. 휘발성 메모리 장치(VM, 1213)에는 DRAM, SRAM 등이 포함될 수 있다.
NVM 인터페이스(1214)는 휘발성 메모리 장치(1213)로부터 전달된 데이터를 각각의 채널들(CH1~CHn)로 스캐터링(Scattering)한다. 그리고 NVM 인터페이스(1214)는 불휘발성 메모리 장치(1201~120n)로부터 읽은 데이터를 휘발성 메모리 장치(1213)로 전달한다. 여기에서, NVM 인터페이스(1214)는 낸드 플래시 메모리의 인터페이스 방식을 사용할 수 있다. 즉, SSD 컨트롤러(1210)는 낸드 플래시 메모리 인터페이스 방식에 따라 프로그램, 읽기, 또는 소거 동작 등을 수행할 수 있다.
도 13은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 포함하는 데이터 저장 장치를 보여주는 블록도이다. 도 13을 참조하면, 데이터 저장 장치(2000)는 메모리 컨트롤러(2100) 및 플래시 메모리(2200)를 포함한다. 데이터 저장 장치(2000)는 메모리 카드(예를 들면, SD, MMC 등)나 착탈 가능한 이동식 저장 장치(예를 들면, USB 메모리 등)와 같은 저장 매체를 모두 포함한다.
도 13을 참조하면, 메모리 컨트롤러(2100)는 중앙처리장치(CPU, 2110), 호스트 인터페이스(2120), 랜덤 액세스 메모리(RAM, 2130), 플래시 인터페이스(2140), 그리고 보조 전원 장치(2150)를 포함한다. 보조 전원 장치(2150)는 메모리 컨트롤러(2100) 내에 위치할 수도 있고, 밖에 위치할 수도 있다.
데이터 저장 장치(2000)는 호스트와 연결되어 사용된다. 데이터 저장 장치(2000)는 호스트 인터페이스(2120)를 통해 호스트와 데이터를 주고 받으며, 플래시 인터페이스(2140)를 통해 플래시 메모리(2200)와 데이터를 주고 받는다. 데이터 저장 장치(2000)는 호스트로부터 전원을 공급받아서 내부 동작을 수행한다. 도 13에 도시된 플래시 메모리 장치(2200)는 도 3의 플래시 메모리 장치인 경우를 포함한다.
도 14는 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 포함하는 메모리 카드를 보여주는 블록도이다. 도 14는 메모리 카드 중에서 SD 카드의 외형을 보여 준다. 도 14를 참조하면, SD 카드는 9개의 핀으로 구성되어 있다. SD 카드는 4개의 데이터 핀(예를 들면, 1, 7, 8, 9), 한 개의 커맨드 핀(예를 들면, 2), 한 개의 클록 핀(예를 들면, 5), 3개의 전원 핀(예를 들면, 3, 4, 6)을 갖는다.
여기에서, 커맨드 핀(핀 번호 2)을 통해 커맨드(command) 및 응답 신호(response)가 전달된다. 일반적으로, 커맨드(command)는 호스트로부터 메모리 카드로 전송되고, 응답 신호(response)는 메모리 카드로부터 호스트로 전송된다.
도 15는 도 14에 도시된 메모리 카드의 내부 구성 및 호스트와의 연결 관계를 보여주는 블록도이다. 메모리 카드 시스템(3000)은 호스트(3100)와 메모리 카드(3200)를 구비한다. 호스트(3100)는 호스트 컨트롤러(3110) 및 호스트 접속 유닛(3120)을 포함한다. 메모리 카드(3200)는 카드 접속 유닛(3210), 카드 컨트롤러(3220), 그리고 메모리(3230)를 포함한다.
호스트 접속 유닛(3120) 및 카드 접속 유닛(3210)은 복수의 핀으로 구성된다. 이들 핀에는 커맨드 핀, 데이터 핀, 클록 핀, 전원 핀 등이 포함되어 있다. 핀의 수는 메모리 카드(3200)의 종류에 따라 달라진다. 예로서, SD 카드는 9개의 핀을 갖는다.
호스트(3100)는 메모리 카드(3200)에 데이터를 쓰거나, 메모리 카드(3200)에 저장된 데이터를 읽는다. 호스트 컨트롤러(3110)는 커맨드(예를 들면, 쓰기 커맨드), 호스트(3100) 내의 클록 발생기(도시되지 않음)에서 발생한 클록 신호(CLK), 그리고 데이터(DAT)를 호스트 접속 유닛(3120)을 통해 메모리 카드(3200)로 전송한다.
카드 컨트롤러(3220)는 카드 접속 유닛(3210)을 통해 수신된 쓰기 커맨드에 응답하여, 카드 컨트롤러(3220) 내에 있는 클록 발생기(도시되지 않음)에서 발생한 클록 신호에 동기하여 데이터를 메모리(3230)에 저장한다. 메모리(3230)는 호스트(3100)로부터 전송된 데이터를 저장한다. 예를 들어, 호스트(3100)가 디지털 카메라인 경우에는 영상 데이터를 저장한다. 여기에서, 메모리(3230)는 도 3에 도시된 플래시 메모리를 포함한다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
도 1은 본 발명의 기술적 사상의 실시 예에 따른 플래시 메모리를 사용하는 메모리 시스템의 하드웨어 구조를 보여주는 블록도이다.
도 2는 도 1에 도시된 메모리 시스템의 소프트웨어 구조를 보여주는 블록도이다.
도 3은 도 2의 메모리 시스템을 좀더 상세하게 보여주는 블록도이다.
도 4는 도 3의 플래시 메모리(330)를 좀더 상세하게 보여주는 블록도이다.
도 5는 본 발명의 기술적 사상의 실시 예에 따른 쓰기 동작을 보여주는 순서도이다.
도 6은 본 발명의 기술적 사상의 다른 실시 예에 따른 쓰기 동작을 보여주는 순서도이다.
도 7은 본 발명의 기술적 사상의 실시 예에 따른 덮어 쓰기(over write) 동작을 보여주는 순서도이다.
도 8a는 본 발명의 기술적 사상의 실시 예에 따른 도 7의 L1 데이터 블록을 이용한 병합 동작을 보여주는 블록도이다.
도 8b는 본 발명의 기술적 사상의 다른 실시 예에 따른 도 7의 L1 데이터 블록을 이용한 병합 동작을 보여주는 블록도이다.
도 8c는 본 발명의 기술적 사상의 실시 예에 따른 도 7의 LN 데이터 블록을 이용한 병합 동작을 보여주는 블록도이다.
도 8d는 본 발명의 기술적 사상의 다른 실시 예에 따른 도 7의 LN 데이터 블 록을 이용한 병합 동작을 보여주는 블록도이다.
도 9는 본 발명의 기술적 사상의 다른 실시 예에 따른 덮어 쓰기(over write) 동작을 보여주는 순서도이다.
도 10은 본 발명의 기술적 사상의 실시 예에 따른 도 6 및 도 9의 이전 동작(migration operation)을 보여주는 블록도이다.
도 11은 본 발명의 기술적 사상의 실시 예에 따른 불휘발성 메모리 장치를 포함하는 솔리드 스테이트 드라이브(SSD)를 보여주는 블록도이다.
도 12는 도 11에 도시된 SSD 컨트롤러(1210)의 구성을 예시적으로 보여주는 블록도이다.
도 13은 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 포함하는 데이터 저장 장치를 보여주는 블록도이다.
도 14는 본 발명의 실시 예에 따른 불휘발성 메모리 장치를 포함하는 메모리 카드를 보여주는 블록도이다.
도 15는 도 14에 도시된 메모리 카드의 내부 구성 및 호스트와의 연결 관계를 보여주는 블록도이다.

Claims (18)

  1. 단일 레벨 셀 방식에 의하여 데이터를 저장하는 제 1 데이터 블록들;
    멀티 레벨 셀 방식에 의하여 데이터를 저장하는 제 2 데이터 블록들; 및
    상기 제 1 데이터 블록 및 상기 제 2 데이터 블록에 할당되는 로그 블록들을 포함하되,
    상기 로그 블록들은 단일 레벨 셀 방식만으로 데이터를 저장하는 불휘발성 메모리 장치.
  2. 제 1 항에 있어서,
    상기 불휘발성 메모리 장치는 플래시 변환 계층을 더 포함하되, 상기 플래시 변환 계층은
    데이터 블록의 논리 주소를 물리 주소로 변환하는 데이터 블록 맵핑 테이블; 로그 블록의 논리 주소를 물리 주소로 변환하는 로그 블록 맵핑 테이블; 및
    액세스 요청된 논리 주소를 저장하는 핫 데이터 테이블을 포함하는 불휘발성 메모리 장치.
  3. 제 2 항에 있어서,
    상기 핫 데이터 테이블은 액세스 요청된 횟수가 기준 개수보다 많은 논리 주소를 저장하는 것을 특징으로 하는 불휘발성 메모리 장치.
  4. 제 2 항에 있어서,
    상기 핫 데이터 테이블은 밀어내기 방식에 의하여 액세스 요청된 논리 주소를 저장하는 것을 특징으로 하는 불휘발성 메모리 장치.
  5. 제 1 항에 있어서,
    상기 불휘발성 메모리 장치는 쓰기 요청에 응답하여 데이터를 상기 제 1 데이터 블록들에 저장하는 것을 특징으로 하는 불휘발성 메모리 장치.
  6. 제 5 항에 있어서,
    상기 제 1 데이터 블록들에 데이터가 모두 저장된 경우에 상기 제 1 데이터 블록들과 상기 제 2 데이터 블록들 사이의 이전 동작(migration operation)이 수행되는 불휘발성 메모리 장치.
  7. 제 6 항에 있어서,
    상기 이전 동작(migration operation)은 상기 제 1 데이터 블록들 중 희생 데이터 블록을 이용하여 수행되는 불휘발성 메모리 장치.
  8. 제 2 항에 있어서,
    상기 불휘발성 메모리 장치는 덮어 쓰기 요청에 응답하여 데이터를 상기 로 그 블록들에 저장하는 것을 특징으로 하는 불휘발성 메모리 장치.
  9. 제 8 항에 있어서,
    상기 데이터의 논리 주소가 상기 핫 데이터 테이블에 저장된 논리 주소인 경우에 상기 제 1 데이터 블록들 중 선택된 제 1 데이터 블록에 병합 동작이 수행되는 불휘발성 메모리 장치.
  10. 제 9 항에 있어서,
    상기 제 1 데이터 블록들에 데이터가 모두 저장된 경우에 상기 제 1 데이터 블록들과 상기 제 2 데이터 블록들 사이의 이전 동작(migration operation)이 수행되는 불휘발성 메모리 장치.
  11. 제 8 항에 있어서,
    상기 데이터의 논리 주소가 상기 핫 데이터 테이블에 저장된 논리 주소가 아닌 경우에 상기 제 2 데이터 블록들 중 선택된 제 2 데이터 블록에 병합 동작이 수행되는 불휘발성 메모리 장치.
  12. 제 1 항의 불휘발성 메모리 장치를 포함하는 솔리드 스테이트 드라이브(SSD, Solid State Drive) 장치.
  13. 쓰기 요청에 응답하여, 단일 레벨 셀 방식에 의하여 데이터를 저장하는 제 1 데이터 블록들에 데이터를 저장하는 단계;
    상기 제 1 데이터 블록들에 데이터가 모두 저장된 경우에 멀티 레벨 셀 방식에 의하여 데이터를 저장하는 제 2 데이터 블록들과 상기 제 1 데이터 블록들 사이의 이전 동작(migration operation)을 수행하는 단계; 및
    상기 이전 동작(migration operation)에 의하여 생성된 데이터 블록에 단일 레벨 셀 방식에 의하여 데이터를 저장하는 단계를 포함하는 불휘발성 메모리 장치의 데이터 저장 방법.
  14. 제 13 항에 있어서,
    상기 이전 동작(migration operation)은 상기 제 1 데이터 블록들 중 희생 데이터 블록을 이용하여 수행되는 불휘발성 메모리 장치의 데이터 저장 방법.
  15. 제 13 항에 있어서,
    덮어 쓰기 요청에 응답하여, 로그 블록들에 데이터를 저장하는 단계를 더 포함하되, 상기 로그 블록들은 단일 레벨 셀 방식에 의하여 데이터를 저장하는 불휘발성 메모리 장치의 데이터 저장 방법.
  16. 제 15 항에 있어서,
    상기 로그 블록들에 데이터가 모두 저장된 경우에 상기 제 1 및 제 2 데이터 블록들 중 선택된 데이터 블록을 병합동작을 수행하는 불휘발성 메모리 장치의 데이터 저장 방법.
  17. 제 16 항에 있어서,
    덮어 쓰기 요청 회수가 기준 개수보다 많은 경우에 상기 제 1 데이터 블록에 병합동작을 수행하는 불휘발성 메모리 장치의 데이터 저장 방법.
  18. 제 16 항에 있어서,
    덮어 쓰기 요청 횟수가 기준 개수보다 적은 경우에 상기 제 2 데이터 블록에 병합동작을 수행하는 불휘발성 메모리 장치의 데이터 저장 방법.
KR1020090129045A 2009-12-22 2009-12-22 불휘발성 메모리 장치 및 그것의 데이터 저장 방법 KR101081948B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090129045A KR101081948B1 (ko) 2009-12-22 2009-12-22 불휘발성 메모리 장치 및 그것의 데이터 저장 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090129045A KR101081948B1 (ko) 2009-12-22 2009-12-22 불휘발성 메모리 장치 및 그것의 데이터 저장 방법

Publications (2)

Publication Number Publication Date
KR20110072205A KR20110072205A (ko) 2011-06-29
KR101081948B1 true KR101081948B1 (ko) 2011-11-10

Family

ID=44403167

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090129045A KR101081948B1 (ko) 2009-12-22 2009-12-22 불휘발성 메모리 장치 및 그것의 데이터 저장 방법

Country Status (1)

Country Link
KR (1) KR101081948B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102147359B1 (ko) 2012-06-29 2020-08-24 삼성전자 주식회사 비휘발성 메모리 장치의 관리 방법 및 비휘발성 메모리 장치
KR102295208B1 (ko) * 2014-12-19 2021-09-01 삼성전자주식회사 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법
CN112765006B (zh) * 2015-07-21 2024-09-03 北京忆恒创源科技股份有限公司 固态硬盘日志生成方法及其固态硬盘
TWI603193B (zh) * 2016-03-31 2017-10-21 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
KR102233880B1 (ko) * 2019-02-13 2021-03-30 울산과학기술원 싱글-레벨 기반의 데이터 저장 장치 및 방법
US11709617B2 (en) 2020-08-19 2023-07-25 Micron Technology, Inc. Multi-stage memory device performance notification

Also Published As

Publication number Publication date
KR20110072205A (ko) 2011-06-29

Similar Documents

Publication Publication Date Title
KR101861170B1 (ko) 마이그레이션 관리자를 포함하는 메모리 시스템
US10628319B2 (en) Methods for caching and reading data to be programmed into a storage unit and apparatuses using the same
US8892842B2 (en) Memory systems and methods of operating the same
US8166258B2 (en) Skip operations for solid state disks
KR101989018B1 (ko) 데이터 저장 장치의 동작 방법
US20160231941A1 (en) Solid state memory (ssm), computer system including an ssm, and method of operating an ssm
US11126602B2 (en) Key-value storage device and operating method thereof
TW201842444A (zh) 廢棄項目收集
KR101371516B1 (ko) 플래시 메모리 장치의 동작 방법 및 그것을 포함하는 메모리 시스템
KR20170053278A (ko) 데이터 저장 장치 및 그것의 동작 방법
US9223696B2 (en) Data storage device for holding erasure of victim block having valid page copied to merge block and method of operating the same
KR102652694B1 (ko) 서브 블록 모드를 사용한 구역 네임스페이스 제한 완화
CN111158579B (zh) 固态硬盘及其数据存取的方法
KR101081948B1 (ko) 불휘발성 메모리 장치 및 그것의 데이터 저장 방법
KR102698414B1 (ko) 온도에 기초한 상이한 전송 속도들에서의 메모리 내의 데이터의 재배치
US20220229555A1 (en) Storage System and Method for Using Read and Write Buffers in a Memory
KR20200114212A (ko) 데이터 저장 장치 및 그것의 동작 방법
KR102544162B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US10466938B2 (en) Non-volatile memory system using a plurality of mapping units and operating method thereof
US20220229775A1 (en) Data storage device and operating method thereof
US20190236020A1 (en) Memory system and operating method thereof
KR20200029085A (ko) 데이터 저장 장치 및 동작 방법, 이를 포함하는 스토리지 시스템
KR20190095825A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN112230849A (zh) 存储器控制方法、存储器存储装置及存储器控制器
KR102703487B1 (ko) 데이터 저장 장치 및 그것의 동작 방법

Legal Events

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

Payment date: 20140630

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160105

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee