KR100988388B1 - 플래시 메모리 장치의 성능 향상 방법 및 이를 수행하는 플래시 메모리 장치 - Google Patents
플래시 메모리 장치의 성능 향상 방법 및 이를 수행하는 플래시 메모리 장치 Download PDFInfo
- Publication number
- KR100988388B1 KR100988388B1 KR1020090034058A KR20090034058A KR100988388B1 KR 100988388 B1 KR100988388 B1 KR 100988388B1 KR 1020090034058 A KR1020090034058 A KR 1020090034058A KR 20090034058 A KR20090034058 A KR 20090034058A KR 100988388 B1 KR100988388 B1 KR 100988388B1
- Authority
- KR
- South Korea
- Prior art keywords
- superblock
- superblocks
- flash memory
- logical
- data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
플래시 메모리 장치의 처리 속도를 향상시킬 수 있는 플래시 메모리 장치의 성능 향상 방법 및 이를 수행하는 플래시 메모리 장치가 개시된다. 플래시 메모리 장치의 성능 향상 방법은 버퍼의 사용량을 판단하는 단계와, 버퍼의 사용량이 미리 설정된 수준 이상인 경우 버퍼에 저장된 복수의 논리 슈퍼블록 중에서 갱신된 데이터의 크기 및 데이터 접근 시간(Least Recently Used)에 기초하여 복수의 희생 슈퍼블록을 선정하는 단계와, 선정된 복수의 희생 슈퍼블록 각각에 대해 상기 슈퍼블록 보다 작은 단위의 조각으로 구분하는 단계와, 구분된 각각의 조각 중 갱신된 데이터의 크기에 기초하여 조각들을 조합하여 가상 슈퍼블록을 구성하는 단계 및 구성된 가상 슈퍼블록을 플래시 메모리 칩에 기록하는 단계를 포함한다. 따라서, 플래시 메모리 장치의 불필요한 기록 회수를 줄일 수 있고, 이로 인해 플래시 메모리 장치의 전체적인 처리 속도를 향상시킬 수 있고 내구성을 증가시킬 수 있다.
플래시 메모리, 쓰기, 블록, 슈퍼블록, 버퍼
Description
본 발명은 플래시 메모리에 관한 것으로, 더욱 상세하게는 대용량 플래시 메모리 장치에 적용될 수 있는 플래시 메모리 장치의 성능 향상 방법 및 이를 수행하는 플래시 메모리 장치에 관한 것이다.
플래시 메모리는 종래의 하드 디스크에 비해 액세스 속도, 소비전력, 소음, 내구성, 진동 등에서 우수하기 때문에 휴대용 전자 기기에 활용되는 비율이 급격히 증가하고 있다.
또한, 플래시 메모리는 비휘발성 메모리로서 그 자체로서 휴대용 저장 장치로 사용될 수도 있고, 하드 디스크와 디스크 캐시(Disk Cache)간의 병목 현상을 줄이고 디스크 캐시의 전력 소비를 줄이기 위한 2차 캐시로 사용될 수도 있으며, 기존의 하드 디스크와 결합된 하이브리드 하드 디스크(Hybrid HDD) 또는 복수의 플래시 메모리 칩을 하나의 저장 장치로 구성한 SSD(Solid State Disk, 이하, 'SSD'라 약칭함)에 활용될 수도 있다.
플래시 메모리는 크게 기존의 랜덤 메모리의 특성을 많이 가지는 노어형 플래시(NOR Flash) 메모리와 하드디스크 등과 같은 저장 매체의 특성을 많이 가지는 낸드형 플래시(NAND Flash) 메모리로 분류될 수 있다.
낸드 플래시 메모리는 집적도가 1999년 이후 매년 2배씩 증가해왔고 집적도가 증가함에 따라 기존의 하드 디스크를 대체하는 새로운 저장 장치로서의 가능성을 인정받기 시작하였다. 일 예로 복수의 낸드 플래시 칩과 제어장치로 구성된 SSD는 이미 휴대용 컴퓨터에서부터 하드 디스크를 대체하고 있다.
표 1은 컴퓨터 저장장치로 사용되는 SSD와 하드 디스크의 성능을 비교한 것이다. 표 1에 나타낸 바와 같이 SSD는 하드 디스크에 비해 가볍고 처리 속도가 빠르며 더 적은 전력을 소비하기 때문에 하드 디스크의 대체 가능성이 매우 높다.
2.5인치 SATA 3Gbps SSD |
2.5인치 SATA 3Gbps HDD |
|
용 량 | 64GB | 80GB |
무 게 | 73g | 365g |
처리속도 | Read : 100MB/s Write : 80MB/s |
Read : 59MB/s Write : 60MB/s |
전력소비 | 1 W | 3.86 W |
낸드 플래시 메모리는 복수의 블록(Block)으로 구성되고, 각 블록은 복수의 페이지(Page)로 이루어져 있다. 예를 들어, SSD에 구비된 하나의 낸드 플래시 칩은 8192개의 블록으로 구성될 수 있고, 하나의 블록은 64 페이지로 구성될 수 있다.
낸드 플래시 메모리는 읽기(Read) 및 쓰기(Write) 연산은 페이지 단위로 수행하고 지우기(Erase) 연산은 블록 단위로 수행하며, 데이터가 갱신(update)되는 경우 해당 영역을 갱신된 데이터로 덮어쓸 수 없고 해당 블록이 삭제되어야만 그 위치에 새로운 데이터를 쓸 수 있다는 특징을 가진다. 상기와 같은 특징으로 인해 낸드 플래시 메모리는 이전에 데이터가 기록된 위치에 갱신된 데이터를 바로 덮어쓸 수 없고 새로운 위치에 데이터를 기록한 후(out-place update) 위치 정보를 갱신해야 한다.
또한, 플래시 메모리는 쓰기 및 지우기 회수가 통상 소정 회수로 제한되어 있으므로 동일 블록을 제한 회수를 초과하여 사용하게 되면 그 블록은 데이터 오류 발생률이 급격하게 증가하여 더 이상 정상적인 사용이 불가능하다. 따라서, 데이터의 갱신이 발생할 경우 해당 블록을 지우고 지워진 블록에 갱신된 데이터를 기록하지 않고, 해당 블록은 다음 작업을 위해 지우되 갱신된 데이터는 새로운 블록에 기록하는 닳기 균등화(wear leveling) 방식을 일반적으로 사용한다.
전술한 바와 같은 낸드 플래시 메모리의 특징으로 인해 하드 디스크 기반으로 설계된 호스트 시스템의 파일 시스템(File System)과 낸드 플래시 메모리 사이에는 낸드 플래시 메모리를 하드 디스크인 것처럼 에뮬레이션(emulation) 해주는 플래시 변환 계층(Flash Translation Layer, 이하, 'FTL'이라 약칭함)이라는 시스템 소프트웨어가 사용된다.
FTL은 호스트 시스템의 파일 시스템에게 낸드 플래시 메모리가 가지고 있는 고유의 특성들을 감추며, 하드 디스크와 동일한 입/출력 연산을 수행할 수 있도록 파일 시스템으로부터 전달되는 논리적인 주소를 낸드 플래시 메모리의 물리적 주소와 매핑(mapping)하는 기능을 수행한다.
종래의 낸드 플래시 메모리 기반 FTL에는 로그 블록(Log Block)이 한 개의 데이터 블록에 할당되는 BAST(Block Associative Sector Translation), 로그 블록에 복수의 데이터 블록이 할당되는 FAST(Fully Associative Sector Translation), 몇 개의 블록들을 하나의 그룹으로 설정하고 그룹 내에서 페이지 매핑을 사용하는 SUPERBLOCK(Superblock-based FTL) 및 섹터의 접근 순서를 분석하여 순차적 쓰기 및 무작위 쓰기로 구분하여 데이터를 처리하는 LAST(Locality-Aware Sector Translation) 등이 있다.
낸드 플래시 메모리의 집적도가 매년 증가하고 있지만 하드 디스크에 비해 상당히 작고 낸드 플래시 메모리 자체의 버스 속도가 SCSI(Small Computer System Interface)나 SATA(Serial Advanced Technology Attachment) 등의 기존 버스보다 느리기 때문에 그 자체로 대용량 저장 매체로 사용하는 것은 적합하지 않다. 따라서, SSD는 처리 속도를 향상시키기 위해 복수의 낸드 플래시 메모리를 병렬로 구성하고 멀티채널(Multi-channel) 및 멀티웨이(Multi-way) 구조를 사용한다.
SSD는 SLC(Single-Level Cell) 또는 MLC(Multi-Level Cell) 플래시 메모리로 구성될 수 있고, MLC 플래시 메모리는 하나의 메모리 셀에 복수의 비트(예를 들면 2비트)가 저장될 수 있기 때문에 메모리의 고집적화를 가능하게 한다.
표 2는 SLC 플래시 메모리와 MLC 플래시 메모리의 특징을 비교하여 나타낸 것이다.
SLC | MLC | |
페이지 크기/블록 크기 | 2K+64/128K+4K byte | 4K+128/512K+16K byte |
페이지 읽기 | 25us | 60us |
페이지 쓰기 | 200us | 800us |
블록 지우기 | 1.5ms | 1.5ms |
블록 내구성 | 10만번 지우기 | 1만번 지우기 |
표 2에 나타낸 바와 같이 MLC 플래시 메모리를 사용한 SSD는 SLC 플래시 메모리를 사용한 SSD에 비해 처리속도가 느리고 블록의 수명이 짧은 단점을 가지나, 블록 당 페이지 수가 두 배이고 가격은 상대적으로 저렴하며 대용량화가 용이하기 때문에 SSD의 보급에 유리하다는 장점이 잇다.
MLC 플래시 메모리가 SLC 플래시 메모리에 비해 처리 속도가 느리다는 단점은 있으나, 현재 SSD는 멀티채널 멀티웨이 구조로 설계되기 때문에 병렬처리를 지원하여 플래시 메모리의 처리 속도를 최대한 증가시키고 있다. 따라서, MLC 플래시 메모리로 구성된 SSD에서는 병렬처리 방법이 속도 향상을 위한 중요한 요소로 작용한다.
일반적으로 멀티채널 멀티웨이 방식의 SSD에서는 병렬성을 극대화하기 위해 여러 개의 채널에 동시 접근 가능하고 한 개의 채널에서도 여러 개의 플래시 메모리 칩에 동시에 접근이 가능하도록 하는 구조를 가진다. 또한, 상기한 바와 같은 멀티채널 멀티웨이 구조를 최대한 활용하기 위해 복수의 논리 블록을 조합한 슈퍼블록 단위로 데이터를 플래시 메모리에 기록함으로서 처리 속도를 향상시키고 있다.
도 1은 일반적인 SSD에서 수행되는 데이터 액세스 과정을 나타내는 개념도로서, 쓰기 버퍼에 저장된 데이터를 플래시 메모리에 기록할 때 논리 슈퍼블록 0번부터 순서대로 기록할 경우의 상황을 나타낸다.
도 1을 참조하면, 쓰기 버퍼(Write Buffer)의 논리 슈퍼블록(LSB: Logical SuperBlock)은 8개의 블록으로 구성되고, 쓰기 버퍼의 데이터가 비워지기 전 논리 슈퍼블록은 플래시 메모리에서 동일한 번호를 가지는 물리 슈퍼블록(PSB: Physical SuperBlock)과 대응된다고 가정한다.
쓰기 버퍼의 사용량이 미리 정해진 수준을 넘어서 쓰기 버퍼를 비워야 하는 경우 논리 슈퍼블록 0, 1 및 2는 데이터가 갱신된 블록이 존재하기 때문에 새로운 물리 슈퍼블록을 할당 받아서 갱신되는 않은 블록과 갱신된 블록을 모두 기록한다.
즉, 논리 슈퍼블록 0은 블록 0, 1 및 4가 갱신된 블록에 해당하고, 논리 슈퍼블록 1은 블록 8 내지 15가 갱신된 블록에 해당하며, 논리 슈퍼블록 2는 블록 16, 17, 20, 21, 22 및 23이 갱신된 블록에 해당한다.
따라서, 논리 슈퍼블록 0은 새로운 물리 슈퍼블록 4를 할당받아서, 갱신된 블록 0, 1, 4와 갱신되지 않은 블록 2, 3, 5, 6, 7을 기록하고, 논리 슈퍼블록 1은 새로운 물리 슈퍼블록 5을 할당받아서 갱신된 블록 8 내지 15을 기록한다. 또한, 논리 슈퍼블록 2는 새로운 물리 슈퍼블록 6을 할당받아서 갱신된 블록 16, 17, 20, 21, 22, 23 및 갱신되지 않은 블록 18, 19를 기록한다.
이후, 물리 슈퍼블록 0, 1 및 2는 무효화(invalid)되고, 논리 슈퍼블록 0, 1, 및 2가 각각 물리 슈퍼블록 4, 5 및 6에 매핑된다.
도 1에 도시된 바와 같은 종래의 데이터 액세스 방법에서는 논리적 슈퍼 블록을 구성하는 블록들 중 일부의 블록만 데이터가 갱신된 경우 새로운 물리 슈퍼블록을 할당받고 갱신된 블록 및 갱신되지 않은 블록을 모두 기록하기 때문에 이후에 갱신되지 않은 블록이 새로 갱신되는 경우 또다시 새로운 물리 슈퍼블록을 할당받아야 한다.
플래시 메모리는 쓰기 속도가 느리고, 쓰기 회수에 제한이 있다는 점을 고려할 때 도 1에 도시된 바와 같은 종래의 슈퍼블록 단위의 액세스 방법은 전체적인 처리 속도를 저하시키고, 플래시 메모리의 내구성을 약화시키며 비효율적이라는 단점이 있다.
본 발명은 상기한 바와 같은 문제점을 해결하기 위한 것으로, 본 발명의 제1 목적은 플래시 메모리 장치의 처리 속도를 향상시킬 수 있는 플래시 메모리 장치의 성능 향상 방법을 제공하는 것이다.
또한, 본 발명의 제2 목적은 상기 방법을 수행하는 플래시 메모리 장치를 제공하는 것이다.
상술한 본 발명의 제1 목적을 달성하기 위한 본 발명의 일 측면에 따른 플래시 메모리 장치의 성능 향상 방법은, 소정 개수의 블록으로 구성된 슈퍼블록 단위로 기록(write)을 수행하는 플래시 메모리 장치의 데이터 기록 방법에 있어서, 버퍼의 사용량을 판단하는 단계와, 상기 버퍼의 사용량이 미리 설정된 수준 이상인 경우 상기 버퍼에 저장된 복수의 논리 슈퍼블록 중에서 갱신된 데이터의 크기 및 데이터 접근 시간(Least Recently Used)에 기초하여 희생 슈퍼블록을 선정하는 단계 및 상기 선정된 희생 슈퍼블록을 플래시 메모리 칩에 기록하는 단계를 포함한다. 상기 버퍼의 사용량이 미리 설정된 수준 이상인 경우 상기 버퍼에 저장된 복수의 논리 슈퍼블록 중에서 갱신된 데이터의 크기 및 데이터 접근 시간을 고려하여 희생 슈퍼블록을 선정하는 단계는, 상기 복수의 논리 슈퍼블록 각각에 대해 상기 갱신된 데이터의 크기 및 상기 데이터 접근 시간에 기초하여 우선순위를 결정하는 단계 및 상기 결정된 우선순위가 가장 높은 논리 슈퍼블록을 상기 희생 슈퍼블록으로 결정하는 단계를 포함할 수 있다. 상기 복수의 논리 슈퍼블록 각각에 대해 상기 갱신된 데이터의 크기 및 상기 데이터 접근 시간에 기초하여 우선순위를 결정하는 단계는, 수학식 (여기서, R(i)는 논리 슈퍼블록 i가 상기 희생 슈퍼블록으로 선택될 우선순위를 의미하고, n은 상기 버퍼에 존재하는 논리 슈퍼블록의 개수를 의미하고, Xi는 논리 슈퍼블록 i의 LRU 정도를 의미하며, Yi는 논리 슈퍼블록 i에 데이터가 모여진 양의 순위를 의미함)을 이용하여 상기 복수의 논리 슈퍼블록 각각에 대해 우선순위를 결정할 수 있다. 상기 선정된 희생 슈퍼블록을 플래시 메모리 칩에 기록하는 단계는, 상기 복수의 논리 슈퍼블록과 매핑된 물리 슈퍼블록이 존재하는 플래시 메모리 칩에서 상기 희생 슈퍼블록을 기록하기 위한 새로운 물리 슈퍼블록을 할당하는 단계 및 할당된 상기 새로운 물리 슈퍼블록에 상기 희생 슈퍼블록의 데이터를 기록하는 단계를 포함할 수 있다.
또한, 본 발명의 제1 목적을 달성하기 위한 본 발명의 다른 측면에 따른 플래시 메모리 장치의 성능 향상 방법은, 소정 개수의 블록으로 구성된 슈퍼블록 단위로 기록을 수행하는 플래시 메모리 장치의 데이터 기록 방법에 있어서, 버퍼의 사용량을 판단하는 단계와, 상기 버퍼의 사용량이 미리 설정된 수준 이상인 경우 상기 버퍼에 저장된 복수의 논리 슈퍼블록 각각에 대해 상기 슈퍼블록 보다 작은 단위의 조각으로 구분하는 단계와, 상기 구분된 각각의 조각 중 갱신된 데이터의 크기에 기초하여 상기 조각들을 조합하여 가상 슈퍼블록을 구성하는 단계 및 상기 구성된 가상 슈퍼블록을 플래시 메모리 칩에 기록하는 단계를 포함한다. 상기 버퍼의 사용량이 미리 설정된 수준 이상인 경우 상기 버퍼에 저장된 복수의 논리 슈퍼블록 각각에 대해 상기 슈퍼블록 보다 작은 단위의 조각으로 구분하는 단계는, 상기 복수의 논리 슈퍼블록 각각에 대해 상기 논리 슈퍼블록 크기의 1/4의 크기를 가지는 조각으로 구분할 수 있다. 상기 구분된 각각의 조각 중 갱신된 데이터의 크기에 기초하여 상기 조각들을 조합하여 가상 슈퍼블록을 구성하는 단계는, 상기 조각으로 구분된 논리 슈퍼블록 각각에 대해 조각 단위로 갱신된 데이터의 크기를 확인하는 단계 및 상기 갱신된 데이터의 크기가 큰 순서에 기초하여 상기 조각들을 조합하여 상기 논리 슈퍼블록과 동일한 크기를 가지는 가상 슈퍼블록을 구성하는 단계를 포함할 수 있다. 상기 플래시 메모리 장치의 데이터 기록 방법은, 상기 구성된 가상 슈퍼블록을 플래시 메모리 칩에 기록하는 단계를 수행한 후, 상기 복수의 논리 슈퍼블록 및 상기 플래시 메모리 칩에 기록된 물리 슈퍼블록 사이의 변경된 매핑관계를 나타내는 매핑 테이블을 작성하는 단계를 더 포함할 수 있다. 상기 매 핑 테이블은 상기 복수의 논리 슈퍼블록과 대응되는 물리 슈퍼블록 및/또는 참조할 매핑 테이블의 정보를 포함하는 제1 매핑 테이블과, 상기 논리 슈퍼블록 크기의 1/2 크기를 가지는 조각과 물리 슈퍼블록과의 매핑 정보를 포함하는 제2 매핑 테이블과, 상기 논리 슈퍼블록 크기의 1/4 크기를 가지는 조각과 물리 슈퍼블록과의 매핑 정보를 포함하는 제3 매핑 테이블을 포함할 수 있다. 상기 플래시 메모리 장치의 데이터 기록 방법은, 상기 버퍼에 상기 매핑 테이블을 저장하기 위한 공간이 부족한 경우에는 상기 플래시 메모리 칩에 기록된 물리 슈퍼블록을 상기 논리 슈퍼블록 형태로 복원한 후 상기 플래시 메모리 칩의 새로운 물리 슈퍼블록에 기록한 후 상기 매핑 테이블을 제1 매핑 테이블로 유지할 수 있다. 상기 구성된 가상 슈퍼블록을 플래시 메모리 칩에 기록하는 단계는, 상기 가상 슈퍼블록에 갱신되지 않은 데이터가 존재하는 경우 상기 가상 슈퍼블록과 매핑되는 상기 플래시 메모리 장치의 물리 슈퍼블록의 해당 위치에 상기 가상 슈퍼블록에 포함된 갱신된 데이터 및 상기 갱신되지 않은 데이터를 합하여 기록할 수 있다. 상기 구성된 가상 슈퍼블록을 플래시 메모리 칩에 기록하는 단계는, 상기 복수의 논리 슈퍼블록과 매핑된 물리 슈퍼블록이 존재하는 플래시 메모리 칩에서 상기 가상 슈퍼블록을 기록하기 위한 새로운 물리 슈퍼블록을 할당하는 단계 및 할당된 상기 새로운 물리 슈퍼블록에 상기 가상 슈퍼블록의 데이터를 기록하는 단계를 포함할 수 있다.
또한, 본 발명의 제1 목적을 달성하기 위한 본 발명의 또 다른 측면에 따른 플래시 메모리 장치의 성능 향상 방법은, 소정 개수의 블록으로 구성된 슈퍼블록 단위로 기록(write)을 수행하는 플래시 메모리 장치의 데이터 기록 방법에 있어서, 버퍼의 사용량을 판단하는 단계와, 상기 버퍼의 사용량이 미리 설정된 수준 이상인 경우 상기 버퍼에 저장된 복수의 논리 슈퍼블록 중에서 갱신된 데이터의 크기 및 데이터 접근 시간(Least Recently Used)에 기초하여 복수의 희생 슈퍼블록을 선정하는 단계와, 선정된 상기 복수의 희생 슈퍼블록 각각에 대해 상기 슈퍼블록 보다 작은 단위의 조각으로 구분하는 단계와, 상기 구분된 각각의 조각 중 갱신된 데이터의 크기에 기초하여 상기 조각들을 조합하여 가상 슈퍼블록을 구성하는 단계 및 상기 구성된 가상 슈퍼블록을 플래시 메모리 칩에 기록하는 단계를 포함한다. 상기 버퍼의 사용량이 미리 설정된 수준 이상인 경우 상기 버퍼에 저장된 복수의 논리 슈퍼블록 중에서 갱신된 데이터의 크기 및 데이터 접근 시간에 기초하여 복수의 희생 슈퍼블록을 선정하는 단계는, 수학식 (여기서, R(i)는 논리 슈퍼블록 i가 상기 희생 슈퍼블록으로 선택될 우선순위를 의미하고, n은 상기 버퍼에 존재하는 논리 슈퍼블록의 개수를 의미하고, Xi는 논리 슈퍼블록 i의 LRU 정도를 의미하며, Yi는 논리 슈퍼블록 i에 데이터가 모여진 양의 순위를 의미함)을 이용하여 상기 복수의 논리 슈퍼블록 각각에 대해 우선순위를 결정하는 단계 및 상기 결정된 우선순위에 기초하여 소정 개수의 논리 슈퍼블록을 희생 슈퍼블록으로 결정하는 단계를 포함할 수 있다. 상기 구분된 각각의 조각 중 갱신된 데이터의 크기에 기초하여 상기 조각들을 조합하여 가상 슈퍼블록을 구성하는 단계는, 상기 조각으로 구분된 희생 슈퍼블록 각각에 대해 조각 단위로 갱신된 데이터의 크 기를 확인하는 단계 및 상기 갱신된 데이터의 크기가 큰 순서에 기초하여 상기 조각들을 조합하여 상기 희생 슈퍼블록과 동일한 크기를 가지는 가상 슈퍼블록을 구성하는 단계를 포함할 수 있다. 상기 플래시 메모리 장치의 데이터 기록 방법은 상기 구성된 가상 슈퍼블록을 플래시 메모리 칩에 기록하는 단계를 수행한 후, 상기 복수의 희생 슈퍼블록 및 상기 플래시 메모리 칩에 기록된 물리 슈퍼블록 사이의 변경된 매핑관계를 나타내는 매핑 테이블을 작성하는 단계를 더 포함할 수 있다. 상기 매핑 테이블은 상기 복수의 희생 슈퍼블록과 대응되는 물리 슈퍼블록 및/또는 참조할 매핑 테이블의 정보를 포함하는 제1 매핑 테이블과, 상기 희생 슈퍼블록 크기의 1/2 크기를 가지는 조각과 물리 슈퍼블록과의 매핑 정보를 포함하는 제2 매핑 테이블과, 상기 희생 슈퍼블록 크기의 1/4 크기를 가지는 조각과 물리 슈퍼블록과의 매핑 정보를 포함하는 제3 매핑 테이블을 포함할 수 있다.
또한, 본 발명의 제2 목적을 달성하기 위한 본 발명의 일 측면에 따른 플래시 메모리 장치는 호스트 장치와 인터페이스 기능을 수행하는 호스트 인터페이스와, 상기 호스트 장치로부터 제공된 데이터가 저장되는 버퍼 및 상기 버퍼의 사용량이 미리 설정된 수준 이상인 경우 상기 버퍼에 저장된 복수의 논리 슈퍼블록 중에서 갱신된 데이터의 크기 및 데이터 접근 시간(Least Recently Used)에 기초하여 복수의 희생 슈퍼블록을 선정한 후, 선정된 상기 복수의 희생 슈퍼블록으로부터 갱신될 데이터를 조합하여 희생 슈퍼블록으로 재구성한 후 복수의 채널을 통해 상기 복수의 메모리 칩에 제공하는 제어부를 포함한다. 상기 제어부는 선정된 상기 복수의 희생 슈퍼블록 각각에 대해 상기 슈퍼블록 보다 작은 단위의 조각으로 구분하 고, 상기 조각으로 구분된 희생 슈퍼블록 각각에 대해 조각 단위로 갱신된 데이터의 크기를 확인한 후 상기 갱신된 데이터의 크기가 큰 순서에 기초하여 상기 조각들을 조합하여 상기 희생 슈퍼블록과 동일한 크기를 가지는 가상 슈퍼블록을 구성함으로써 희생 슈퍼블록을 재구성할 수 있다. 상기 제어부는 상기 조각으로 구분된 희생 슈퍼블록 각각에 대해 조각 단위로 갱신된 페이지의 크기를 확인할 수 있다. 상기 제어부는 상기 구성된 가상 슈퍼블록을 플래시 메모리 칩에 기록한 후, 상기 복수의 희생 슈퍼블록 및 상기 플래시 메모리 칩에 기록된 물리 슈퍼블록 사이의 변경된 매핑관계를 나타내는 매핑 테이블을 작성할 수 있다. 상기 제어부는 상기 복수의 논리 슈퍼블록 각각에 대해 상기 논리 슈퍼블록 크기의 1/4의 크기를 가지는 조각으로 구분할 수 있다.
이상에서 설명한 바와 같이 본 발명의 일 실시예에 따른 플래시 메모리 장치의 성능 향상 방법 및 이를 수행하는 플래시 메모리 장치에 따르면, 버퍼에 저장된 데이터의 접근 시간 및 갱신된 데이터량을 기준으로 희생 슈퍼블록을 선정하고 선정된 복수의 희생 슈퍼블록들로부터 갱신된 페이지가 최대가 되도록 슈퍼블록 보다 작은 단위의 데이터를 조합하여 희생 슈퍼블록을 재구성한 후 플래시 메모리 장치에 기록한다.
따라서, 플래시 메모리 장치의 불필요한 기록 회수를 줄일 수 있고, 이로 인해 플래시 메모리 장치의 전체적인 처리 속도를 향상시킬 수 있고 내구성을 증가시킬 수 있다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다거나 "직접 접속되어"있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 이하, 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 2는 본 발명의 일 실시예에 따른 플래시 메모리 장치의 구성을 나타내는 블록도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 플래시 메모리 장치(100)는 호스트 인터페이스(110), 버퍼(120), 제어부(130), 낸드 제어부(140), 복수의 플래시 메모리 칩(150)으로 구성될 수 있고, 멀티채널(multi-channel) 및 멀티웨이(multi-way) 구조를 가진다.
호스트 인터페이스(110)는 호스트 장치(미도시)와 플래시 메모리 장치(100) 사이의 인터페이스 기능을 수행하며, 고속의 데이터 전송을 지원하는 규격이 채용될 수 있다. 예를 들어, 호스트 인터페이스(110)는 Ultra DMA 모드 6, SATA 1 또는 SATA 2 등의 규격을 지원하도록 구성될 수 있다.
버퍼(120)는 DRAM으로 구성될 수 있고, 호스트 인터페이스(110)를 통해 호스트 장치로부터 제공된 데이터가 해당 플래시 메모리 칩에 기록되기 전까지 일시적으로 저장되는 쓰기 버퍼(Write Buffer)로 사용될 수 있다.
제어부(130)는 호스트 장치로부터 제공된 읽기 또는 쓰기 명령을 해석하여 플래시 메모리의 동작에 상응하도록 변환하여 처리하는 FTL(Flash Tranlation Layer) 기능을 수행하고, 플래시 메모리 장치(100)의 각 구성 요소에 대한 최상위 제어를 수행한다.
특히, 제어부(130)는 플래시 메모리 장치(100)의 처리 속도를 향상시키기 위한 버퍼 관리 및 슈퍼블록 구성을 수행한다.
구체적으로 제어부(130)는 버퍼에 저장된 데이터 용량이 미리 설정된 수준 이상이 되면 슈퍼블록 단위로 최근접근시간과 갱신 데이터가 많은 정도를 함께 고려하여 희생 슈퍼블록(Victim Superblock)을 선택한다. 또한, 제어부(130)는 희생 슈퍼블록에 갱신될 데이터가 많지 않을 경우를 고려하여 희생 슈퍼블록을 여러 개 선정한 후 선택된 희생 슈퍼블록 중에서 갱신될 데이터를 모아서 또 다른 슈퍼블록으로 재구성한 후 해당 낸드 제어부(140)에 제공함으로써 플래시 메모리 장치(100)의 전체적인 처리 속도를 향상시킨다.
낸드 제어부(140)는 제어부(130)의 제어에 상응하여 버퍼(120)로부터 슈퍼블럭 단위의 데이터를 제공받고 제공받은 데이터를 플래시 메모리 장치에 상응하는 저수준의 명령으로 변환하여 플래시 메모리 칩(150)에 전달한다. 낸드 제어부(140) 에서 처리되는 명령어는 예를 들어, write page, read page, erase page, copyback page 등이 될 수 있다.
도 2에서는 낸드 제어부가 채널별로 독립적으로 구성된 것으로 예를 들어 도시하였으나, 본 발명의 다른 실시예에서는 단일 반도체 칩 등과 같이 하나의 구성요소로 구성될 수도 있다.
플래시 메모리 칩(150)은 각각 낸드 플래시 메모리로 구성될 수 있고, 예를 들어, 플래시 메모리 장치(100)의 전체 용량이 32GB인 경우 각각의 플래시 메모리 칩(150)은 2048개의 블록을 포함할 수 있고, 각 블록은 128개의 페이지를 포함할 수 있고, 각 페이지는 4kB의 크기를 가질 수 있다.
본 발명의 일 실시예에 따른 플래시 메모리 장치(100)에서 버퍼(120)와 낸드 제어부(140) 사이는 각각 소정 대역폭(예를 들면, 40MB/s)을 가지는 복수의 버스로 구성된 멀티채널 인터페이스로 연결되어 있다. 또한, 각각의 낸드 제어부(140)는 상기 소정 대역폭을 가지는 채널을 통해 복수의 플래시 메모리 칩(150)과 연결된다.
이하, 본 발명의 일 실시예에 따른 플래시 메모리 장치(100)는 4 채널 2 웨이의 멀티채널 멀티웨이 구조를 가지는 것으로 예를 들어 설명한다. 즉, 버퍼(120)와 낸드 제어부 사이(140)에는 소정 대역폭(예를 들면, 40MB/s)을 가지는 4 채널의 버스가 연결되어 있고, 각 낸드 제어부(140)는 자신의 채널을 통해 2개의 플래시 메모리 칩이 한 쌍으로 구성된 4개의 플래시 메모리 칩 쌍과 연결된다.
일반적인 SATA 또는 SCSI 등의 입출력 인터페이스는 150MB/s의 대역폭을 가 지고, 본 발명의 일 실시예에 따른 플래시 메모리 장치(100)는 40MB/s의 채널 대역폭을 가진다고 가정할 때, 각 낸드 제어부(140)를 통하여 4개 채널에 데이터를 동시 전송하는 경우 전체 대역폭은 160MB/s되어 일반적인 입출력 인터페이스를 지원할 수 있다.
또한, 본 발명의 일 실시예에 따른 플래시 메모리 장치(100)에서는 각 채널과 연결된 각 플래시 메모리 칩 쌍(즉, 두 개의 플래시 메모리 칩)에 동시에 접근이 가능하기 때문에 낸드 플래시 메모리의 쓰기 속도 보다 8배 빠른 속도로 쓰기 동작을 수행할 수 있다. 또한, 4개의 채널을 통해 동시에 플래시 메모리 칩의 데이터를 읽을 수 있기 때문에 낸드 플래시 메모리의 읽기 속도 보다 4배 빠른 속도록 읽기 동작을 수행할 수 있다.
플래시 메모리 장치에서 멀티채널 멀티웨이 구조의 장점을 극대화하기 위해서는 버퍼에 버퍼링(buffering)된 데이터를 각각의 채널을 통해 각 플래시 메모리 칩에 동시에 전송해야 하고, 이를 위해 플래시 메모리에 전송할 데이터를 버퍼에서 슈퍼블록 단위로 구성한 후 전송하는 것이 효율적이다.
도 3은 본 발명의 일 실시예에 따른 슈퍼블록 구성 방법을 나타내는 개념도로서, 도 2에 도시된 슈퍼칩 0에 포함된 8개의 플래시 메모리 칩 각각의 블록 0에 할당된 슈퍼블록의 구성을 나타낸다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 플래시 메모리 장치(100)에서는 논리 페이지 128개를 모아서 하나의 논리 블록을 구성하고, 논리 블록 8개을 모아서 하나의 논리 슈퍼블록(Logical Superblock: LSB)을 구성한다. 따라서, 하나의 논리 슈퍼블록은 1024개의 논리 페이지로 구성될 수 있다.
또한, 연속된 8개의 논리 페이지를 모아서 하나의 슈퍼페이지(Superpage)을 구성한다. 슈퍼페이지 SPi는 페이지 P8i 내지 P8i+7(i≥0)로 구성된다. 슈퍼페이지를 구성하는 8개의 페이지는 4개의 채널을 통해 8개의 플래시 메모리 칩에서 동시에 기록될 수 있다. 여기서, 8개의 플래시 메모리 칩은 각 채널에서 동일한 위치(예를 들어, 4개의 채널에 각각 연결된 플래시 메모리 칩 0 및 플래시 메모리 칩 1)에 있는 4쌍의 칩들을 모은 것이고 이를 슈퍼칩(Superchip)이라 한다.
상기한 바와 같이 본 발명의 일 실시예에 따른 플래시 메모리 장치에서는 슈퍼블록 단위로 데이터를 쓰기 때문에 플래시 메모리 칩에서 데이터가 기록될 빈 공간도 슈퍼블록과 동일한 크기로 할당받아야 한다. 따라서, 본 발명의 일 실시예에 따른 플래시 메모리 장치에서는 소정의 슈퍼칩에서 동일한 위치에 있는 블록들을 모아서 물리 슈퍼블록(Physical Superblock: PSB)을 구성하고 물리 슈퍼블록 단위로 데이터 기록을 위한 공간을 할당한다.
예를 들어, 물리 슈퍼블록 0을 할당하는 것은 슈퍼칩 0에 포함된 8개의 칩에 포함된 블록 0을 8개를 할당하는 것을 의미한다. 또한, 어느 하나의 슈퍼칩에 데이터 쓰기가 편중되는 것을 방지하기 위해 슈퍼칩 0에는 논리 슈퍼블록 4k, 슈퍼칩 1에는 논리 슈퍼블록 4k+1, 슈퍼칩 2에는 논리 슈퍼블록 4k+2, 슈퍼칩 3에는 논리 슈퍼블록 4k+3(k≥0)이 기록된다. 즉, 버퍼에서 구성된 논리 슈퍼블록은 각각의 슈퍼칩에 균등하게 분산되어 기록된다.
본 발명의 일 실시예에 따른 플래시 메모리 장치에서는 슈퍼블록 단위로 데이터를 기록하기 때문에 슈퍼블록 내에 포함된 갱신되지 않은 페이지까지 새로 할당받은 물리 슈퍼블록에 기록해야 한다. 예를 들어, 1024개의 페이지로 구성된 하나의 논리 슈퍼블록에서 하나의 페이지만 갱신된 경우 새로운 논리 슈퍼블록을 할당받아 갱신된 한 개의 페이지 및 갱신되지 않은 1023개의 페이지를 모두 옮겨야 하기 때문에 최악의 경우 1023배의 추가 작업이 필요하게 되는 문제가 있다. 특히, MLC 플래시 메모리로 구성된 플래시 메모리 장치에서는 상기한 바와 같은 문제가 더욱 심화될 수 있다. 따라서, 쓰기 및 지우기 회수를 최소로 줄일 수 있는 방법이 요구된다.
본 발명의 일 실시예에서는 버퍼가 DRAM으로 구성되어 덮어쓰기가 가능하다는 점을 이용하여 데이터가 갱신되어 플래시 메모리에 기록이 요구되는 데이터를 버퍼에서 최대한 모아서 슈퍼블록을 구성한 다음 플래시 메모리로 전송함으로써 쓰기 회수를 줄인다.
구체적으로, 버퍼에서 슈퍼블록 단위로 데이터가 전송되기 때문에 갱신된 데이터가 많이 모인 슈퍼블록일수록 불필요한 쓰기 회수를 줄일 수 있다. 따라서, 갱신된 데이터량을 고려하여 플래시 메모리 칩에 제공할 희생 슈퍼블록을 선정할 필요가 있다.
그러나, 갱신된 데이터량만을 고려하여 희생 슈퍼블록을 고려할 경우 메타데이터(Metadata)와 같이 크기가 작은 갱신 데이터를 포함하는 슈퍼블록은 버퍼에 머무를 확률이 커지게 되고 전원 차단 등과 같은 상황이 발생하는 경우 데이터가 소 실되어 데이터 안정성이 취약해지게 된다. 또한, 접근된 시간만을 고려하여 접근 시간이 가장 오래된 데이터를 기준으로 희생 슈퍼블록을 결정하는 LRU(Least Recently Used) 방법만을 사용할 경우 선정된 희생 슈퍼블록에 갱신된 데이터의 양이 작은 경우에는 불필요한 데이터 이동 회수가 증가하게 된다.
따라서, 본 발명의 일 실시예에 따른 플래시 메모리 장치(100)에서는 제어부(130)가 수학식 1과 같이 슈퍼블록에 포함된 갱신된 데이터의 양과 데이터 접근 시간(즉, LRU)을 동시에 고려하여 희생 슈퍼블록을 결정한다.
수학식 1에서 R(i)는 논리 슈퍼블록 i가 희생 슈퍼블록으로 선택될 우선순위를 의미한다. 또한, n은 버퍼에 존재하는 논리 슈퍼블록의 개수를 의미하고, Xi는 논리 슈퍼블록 i의 LRU 정도(0: 가장 최근에 접근, n-1: 가장 접근한지 오래됨)를 의미하며, Yi는 논리 슈퍼블록 i에 데이터가 모여진 양의 순위(0: 순위가 가장 낮음, n-1: 순위가 가장 높음)를 의미한다.
본 발명의 일 실시예에서는 제어부(130)가 버퍼(120)에 존재하는 각각의 논리 슈퍼블록에 대해 수학식 1을 이용하여 우선순위를 구한 후 우선순위가 가장 높은 논리 슈퍼블록을 희생 슈퍼블록으로 결정한다.
수학식 1을 통해 우선순위가 가장 높은 논리 슈퍼블록을 희생 슈퍼블록으로 선정한 경우에도 선정된 희생 슈퍼블록에 갱신되지 않은 페이지가 포함될 수 있다.
상기와 같이 선정된 희생 슈퍼블록에 갱신되지 않은 페이지가 포함된 경우, 본 발명의 다른 실시예에서는 수학식 1을 통해 구한 우선순위에 따라 복수의 희생 슈퍼블록을 선정하고 선정된 희생 슈퍼블록들에서 갱신된 데이터를 조합하여 모든 페이지가 갱신된 페이지로 구성된 완전한 희생 슈퍼블록을 재구성하여 플래시 메모리 칩에 전송한다. 또한, 상기와 같이 희생 슈퍼블록을 재구성하는 경우에는 슈퍼블록 보다 작은 단위의 블록 매핑 테이블이 필요하다.
도 4는 본 발명의 다른 실시예에 따른 슈퍼블록 구성 및 데이터 기록 방법을 나타내는 개념도이고, 도 5는 도 4에 도시된 방법을 통해 할당된 물리 슈퍼블록의 상세한 구성을 나타내는 블록도이다. 도 4에서는 논리 슈퍼블록들이 동일한 번호의 물리 슈퍼블록에 기록되어 있는 것으로 가정한다.
도 4 및 도 5를 참조하면, 먼저 제어부(130)는 버퍼(120)의 사용량을 확인하여 버퍼(120)의 사용량이 미리 정해진 수준 이상인 것으로 판단되면 버퍼(120)를 비우기 위해 버퍼(120)에 저장된 논리 슈퍼블록 중 희생 슈퍼블록 4개를 선정한다. 도 4에서는 희생 슈퍼블록으로 논리슈퍼블록 LSB 0, LSB 1, LSB 2 및 LSB 3이 선택된 경우를 예를 들어 설명한다.
이후, 제어부(130)는 선정된 희생 슈퍼블록 각각을 4개의 조각(part)으로 분할하여 각 조각들 중 갱신된 페이지가 가장 많은 조각들을 순서대로 모아서 가상 슈퍼블록(Virtual Superblock: VSB)을 구성한다. 여기서, 각 희생 슈퍼블록이 8개의 블록으로 구성된 경우 각 조각은 2개의 블록으로 구성될 수 있다.
구체적으로, 희생 슈퍼블록 LSB 0의 조각 0(갱신 페이지: 256) 및 조각 1(갱신 페이지: 256)과, LSB 1의 조각 0(갱신 페이지: 256)과, LSB 2의 조각 1(갱신 페이지: 196)이 갱신된 페이지가 가장 많기 때문에 제어부(130)는 상기 조각들을 모아서 가상 슈퍼블록 VSB 0를 구성한다.
이후, 제어부(130)는 새로운 물리 슈퍼블록 PSB 4를 할당하고, 가상 슈퍼블록 VSB 0를 할당된 물리 슈퍼블록 PSB 4에 기록한다. 여기서, 제어부(130)는 물리 슈퍼블록 PSB 4의 조각 2-1에 대해서는 196개의 페이지만 갱신되고 60개의 페이지는 갱신되지 않았기 때문에 PSB 2에 기록된 페이지 중 해당 60 페이지를 갱신된 페이지 196개와 합하여 물리 슈퍼블록 PSB 0의 조각 2-1에 기록한다. 또한, 제어부(130)은 물리 슈퍼블록 PSB 0, PSB 1 및 PSB 2에 각각 포함된 조각들 중 가상 슈퍼블록 VSB 0에 포함된 조각에 대응되는 조각들에 대해서는 무효(invalid) 표시를 한다.
상기한 바와 같이 본 발명의 다른 실시예에서는 복수의 희생 슈퍼블록들로부터 갱신된 페이지가 많은 조각들을 조합하여 가상 슈퍼블록을 구성한 후 가상 슈퍼블록의 데이터를 할당받은 물리 슈퍼블록에 기록하기 때문에 불필요한 데이터 기록 회수를 줄일 수 있다. 예를 들어, 도 4에 도시된 방법을 이용하여 버퍼를 비울 경우, 물리 슈퍼블록 PSB 4에는 희생 슈퍼블록 LSB 0의 갱신된 페이지 760개가 기록되는 대신 가상 슈퍼블록 VSB 0에 포함된 갱신된 페이지 964개가 기록되기 때문에 데이터의 이동 회수를 줄일 수 있다.
또한, 도 5에 도시된 바와 같이 재구성된 가상 슈퍼블록 VSB 0이 기록된 물 리 슈퍼블록 PSB 4에 포함된 각 페이지들은 채널의 위치가 변하지 않는다. 따라서, 페이지를 갱신할 때 기존의 페이지를 읽어온 후 버퍼에서 갱신된 페이지와 합한 후 할당 받은 물리 슈퍼블록의 해당 페이지에 기록하는 Read-and-write 명령어를 사용하지 않고, 낸드 플래시 메모리에서 제공하는 명령어인 copyback 명령어를 사용할 수 있다.
Copyback 명령은 낸드 플래시 메모리 칩 내부에 있는 페이지 버퍼를 이용하는 명령으로써 갱신되지 않은 기존 페이지와 갱신된 페이지를 합하는 작업이 페이지 버퍼에서 수행된다. 따라서, 물리 슈퍼블록에 기록된 데이터를 버퍼로 읽어온 후 갱신된 페이지와 기존의 페이지를 합하여 다시 물리 슈퍼블록에 기록하는 read-and-write로 인한 데이터 전송 시간을 줄일 수 있다.
그러나, 새로 할당된 물리 슈퍼블록이 대응되는 기존의 물리 슈퍼블록과 다른 슈퍼칩에 존재하는 경우에는 read-and-write 명령을 사용하여 페이지를 기록해야 하기 때문에 처리 속도가 저하된다. 따라서, 제어부(130)는 새로운 물리 슈퍼블록을 할당하는 경우 기존의 물리 슈퍼블록과 동일한 슈퍼칩(즉, 논리 슈퍼블록과 매핑되는 물리 슈퍼블록이 존재하는 슈퍼칩)에 존재하는 물리 슈퍼블록을 할당한다.
도 4 및 도 5에 도시된 바와 같이 본 발명의 다른 실시예에 따라 희생 슈퍼블록을 재구성하고 데이터를 기록하는 경우 슈퍼블록 보다 작은 단위로 데이터가 분산되기 때문에 슈퍼블록보다 작은 단위의 매핑 테이블이 필요하다.
도 6은 도 4에 도시된 데이터 기록 방법을 수행하는 과정에서 요구되는 매핑 테이블을 나타내는 것으로, 논리 슈퍼블록과 물리 슈퍼블록이 슈퍼블록 단위로 매핑된 경우의 매핑 테이블(도 6의 (a)) 및 가상 슈퍼블록을 통해 조각 단위로 희생 슈퍼블록이 재구성된 경우의 매핑 테이블(도 6의 (b))을 나타낸다.
도 6을 참조하면, 논리 슈퍼블록이 슈퍼블록 단위로 대응되는 물리 슈퍼블록에 기록되는 경우에는 도 6의 (a)에 도시된 바와 같이 매핑 테이블 L0은 각 논리 슈퍼블록의 번호(LSB no.)와 이에 대응되는 물리 슈퍼블록의 번호(PSB no.)가 매핑되어 구성된다. 또한, 참조할 매핑 테이블 번호(Table Ref.)는 기본값인 '0'을 나타낸다.
그러나, 도 4에 도시된 바와 같이 슈퍼블록 보다 작은 단위인 조각 단위(즉, 논리 블록 2개)로 희생 슈퍼블록이 재구성되어 물리 슈퍼블록에 기록되는 경우에는 도 6의 (b)에 도시된 바와 같이 매핑 테이블 L0은 논리 슈퍼블록과 대응되는 물리 슈퍼블록 및/또는 참조할 매핑 테이블의 인덱스를 나타낸다.
구체적으로, 매핑 테이블 L0은 논리 슈퍼블록과 동일한 개수의 행으로 구성되고, 각 행은 논리 슈퍼블록 번호(LSB no.)에 대응되는 물리 슈퍼블록의 번호를 표시하거나 참조할 테이블의 인덱스를 표시한다. 또한, 매핑 테이블 L0는 크게 참조할 매핑 테이블의 인덱스(Index) 열 및 참조할 매핑 테이블 번호(Table Ref.) 열로 구성되고, 인덱스(Index) 열은 각각의 논리 슈퍼블록과 매핑되는 물리 슈퍼블록의 조각 개수에 따라 더 세부적으로 분할될 수 있다. 각 행의 인덱스(Index) 열이 참조할 매핑 테이블의 인덱스를 표시하는 경우 해당 행의 매핑 테이블 번호(Table Ref.) 열은 참조할 매핑 테이블의 인덱스가 표시된 매핑 테이블의 번호가 '/'를 기 준으로 두 개의 조각(즉, 512개의 페이지 또는 4개의 블록) 단위로 표시된다.
매핑 테이블 L1은 논리 슈퍼블록의 두 조각인 512 페이지(즉, 4개의 블록) 단위로 매핑되는 물리 슈퍼블록의 번호(PSB no.) 및 물리 슈퍼블록 내에서의 위치를 나타내는 조각 번호(part1)를 표현한다. 조각 번호(part1)은 '0'또는 '1'로 표시되기 때문에 1비트로 표현될 수 있다.
매핑 테이블 L2는 논리 슈퍼블록의 한 개의 조각인 256 페이지(즉, 2개의 블록) 단위로 매핑되는 물리 슈퍼블록의 번호(PSB no.) 및 물리 슈퍼블록 내에서의 위치를 나타내는 조각 번호(part2)를 표현한다. 조각 번호(part2)는 '0'내지 '3'중 어느 하나로 표시될 수 있기 때문에 되기 때문에 2비트로 표현될 수 있다.
도 4를 참조하여 도 6에 도시된 매핑 테이블을 설명하면, 먼저, 도 4에 도시된 바와 같이 희생 슈퍼블록으로 선정된 논리 슈퍼블록 LSB 0, LSB 1, LSB 2 및 LSB 3로부터 조각 단위로 가상 슈퍼블록 VSB 0가 구성되어 희생 슈퍼블럭이 재구성된 후 물리 슈퍼블록 PSB 4에 기록되면, 매핑 테이블 L0의 첫 번째 행(즉, LSB no. 0)은 논리 슈퍼블록 LSB 0가 512개(즉, 두 개의 조각)의 페이지 단위로 매핑 테이블 L1에 표시(즉, Table Ref.: 1/1)되어 있음을 나타낸다. 즉, 논리 슈퍼블록 LSB 0의 왼쪽 512개의 페이지는 매핑 테이블 L1의 인덱스(Index) 0에 표시되어 있고, 오른쪽 512개의 페이지는 매핑 테이블 L1의 인덱스 1에 표시되어 있다.
상기와 같은 매핑 테이블 L0의 LSB no. 0의 표시에 따라 매핑 테이블 L1의 인덱스 0를 참조하면 '4,0'이 표시되어 있고, 이는 논리 슈퍼블록 LSB 0의 왼쪽 512개의 페이지(즉, 0 내지 511 페이지)는 물리 슈퍼블록 4의 좌측 두 조각(즉, 0- 0 및 0-1)에 기록되어 있음을 표시한다.
또한, 매핑 테이블 L0의 LSB no. 0의 표시에 따라 매핑 테이블 L1의 인덱스 1을 참조하면 '0,1'이 표시되어 있고, 이는 논리 슈퍼블록 LSB 0의 오른쪽 512개의 페이지(즉, 512 내지 1023 페이지)는 물리 슈퍼블록 0의 우측 두 조각(0-2 및 0-3)에 기록되어 있음을 표시한다.
매핑 테이블 L0의 두 번째 행(즉, LSB no. 1)은 논리 슈퍼블록 LSB 1이 512개의 페이지 단위로 매핑 테이블 L2 및 매핑 테이블 L1에 매핑 관계가 표시(즉, Table Ref.: 2/1)되어 있음을 나타내고, 다시, 매핑 테이블 L2에는 256개의 페이지 단위로 매핑 관계가 인덱스 0 및 인덱스 1에 표시되어 있음을 나타낸다.
즉, 논리 슈퍼블록 LSB 1의 페이지 0 내지 255는 매핑 테이블 L2의 인덱스(Index) 0에 표시되어 있고, 페이지 256 내지 511은 매핑 테이블 L2의 인덱스 1에 표시되어 있음을 나타낸다. 또한, 논리 슈퍼블록 LSB 1의 페이지 512 내지 1023은매핑 테이블 L1의 인덱스(Index) 2에 표시되어 있음을 나타낸다.
상기와 같은 매핑 테이블 L0의 LSB no. 1의 표시에 따라 매핑 테이블 L2의 인덱스 0를 참조하면 '4,2'가 표시되어 있고, 이는 논리 슈퍼블록 LSB 1의 페이지 0 내지 511이 물리 슈퍼블록 4의 2번 조각(즉, 1-0)에 기록되어 있음을 표시한다. 매핑 테이블 L0의 LSB no. 1의 표시에 따라 매핑 테이블 L2의 인덱스 1을 참조하면 '1,1'이 표시되어 있고, 이는 논리 슈퍼블록 LSB 1의 페이지 256 내지 511이 물리 슈퍼블록 1의 1번 조각(즉, 1-1)에 기록되어 있음을 나타낸다. 또한, 매핑 테이블 L1의 인덱스 2를 참조하면 '1,1'이 표시되어 있고, 이는 논리 슈퍼블록 LSB 1의 페 이지 512 내지 1023이 물리 슈퍼블록 1의 우측 두 조각(즉, 1-2 및 1-3)에 기록되어 있음을 표시한다.
매핑 테이블 L0의 네 번째 행(즉, LSB no. 3)은 논리 슈퍼블록 LSB 3이 물리 슈퍼블록 3에 슈퍼블록 단위로 기록되어 있음을 나타낸다.
매핑 테이블 L0, L1 및 L2는 제어부(130)에 의해 작성될 수 있고, 버퍼에 저장될 수 있다. 또한, 버퍼에 매핑 테이블을 저장하기 위한 공간이 부족한 경우에는 물리 슈퍼블록에 기록된 데이터를 원래의 논리 슈퍼블록 형태로 복원한 하여 플래시 메모리 칩의 다른 물리 슈퍼블록에 기록한 후 매핑 테이블을 L0로 유지한다.
도 2 내지 도 6에 도시된 바와 같이 본 발명의 실시예에 따른 플래시 메모리 장치의 데이터 기록 방법에서는 접근 시간 및 갱신된 데이터량을 기준으로 선정된 복수의 희생 슈퍼블록들로부터 갱신된 페이지가 최대가 되도록 희생 슈퍼블록을 재구성한 후 플래시 메모리 장치에 기록함으로써 불필요한 기록 회수를 줄일 수 있고, 이로 인해 플래시 메모리 장치의 전체적인 처리 속도를 향상시킬 수 있다.
도 7은 본 발명의 일 실시예에 따른 플래시 메모리 장치의 데이터 기록 과정을 나타내는 흐름도이다.
도 7을 참조하면, 플래시 메모리 장치는 호스트 장치로부터 쓰기(write) 명령을 수신하면(단계 701), 버퍼 사용량이 미리 정해진 수준(예를 들면 90%) 이상인가를 판단한다(단계 703).
단계 703에서 버퍼 사용량이 미리 정해진 수준 미만인 것으로 판단되면 단계 723으로 진행하여 데이터를 버퍼에 저장하고, 버퍼 사용량이 미리 정해진 수준 이상인 것으로 판단되면 플래시 메모리 장치는 버퍼를 비우기 위해 플래시 메모리 칩에 여유 공간이 존재하는 가를 판단하고(단계 705), 플래시 메모리 칩에 여유 공간이 존재하지 않는 것으로 판단되면 폐영역 회수(Garbage Collection)를 수행하여 여유 공간을 확보한다(단계 707).
단계 705에서 플래시 메모리 칩에 여유 공간이 존재하는 것으로 판단되면 플래시 메모리 장치는 전술한 수학식 1을 통해 본 발명의 실시예에 따라 버퍼에 존재하는 논리 슈퍼블록 중에서 희생 슈퍼블록을 선정한다. 또는 선정된 희생 슈퍼블록에 갱신되지 않은 데이터가 다수 존재하는 경우에는 도 4에 도시된 바와 같이 복수의 희생 슈퍼블록들에서 갱신된 데이터를 조합하여 가상의 슈퍼블록을 구성함으로써 희생 슈퍼블록을 재구성한다(단계 709).
이후, 플래시 메모리 장치는 희생 슈퍼블록을 멀티채널 멀티웨이를 통해 복수의 플래시 메모리 칩에 존재하는 해당 물리 슈퍼블록에 기록하고(단계 711), 변경된 매핑 정보를 매핑 테이블에 기록한다(단계 713). 여기서, 상기 해당 물리 슈퍼블록은 기존의 물리 슈퍼블록과 동일한 슈퍼칩에 할당될 수 있다.
희생 슈퍼블록이 슈퍼블록보다 작은 단위로 재구성된 경우 매핑 테이블은 도 6에 도시된 바와 같이 다중 수준으로 작성될 수 있고, 매핑 테이블을 저장하기 위한 공간은 미리 정해진 크기로 제한된다.
따라서, 플래시 메모리 장치는 매핑 테이블을 저장하기 위한 공간이 버퍼에 존재하는 가를 판단하고(단계 715), 매핑 테이블을 저장하기 위한 공간이 존재하지 않는 것으로 판단되면 플래시 메모리에 여유 공간이 존재하는 가를 판단하여(단계 717), 플래시 메모리에 여유 공간이 존재하지 않는 것으로 판단되면 폐영역 회수를 수행하여 플래시 메모리 칩에 여유 공간을 확보한다(단계 719).
또는, 플래시 메모리에 여유 공간이 존재하는 경우에는 매핑 테이블 L1, 매핑 테이블 L2을 L0로 합하여 매핑 테이블의 크기를 줄인다(단계 721). 여기서, 플래시 메모리 장치는 매핑 테이블의 크기를 줄이기 위해 매핑 테이블 L0, L1 및 L2를 참조하여 플래시 메모리 칩의 논리 슈퍼블록에 기록된 데이터를 원래의 논리 슈퍼블록 형태로 구성한 후 플래시 메모리 칩의 다른 물리 슈퍼블록에 옮김으로써 매핑 테이블 L0와 대응되도록 한다.
이후, 플래시 메모리 장치는 매핑 테이블을 버퍼에 저장한다(단계 723).
도 8은 본 발명의 실시예에 따른 플래시 메모리 장치의 성능 측정 결과를 나타내는 그래프로서, MS-Windows XP 기반의 데스크탑 컴퓨터에서 다양한 작업을 수행하는 경우 SSD 플래시 메모리 장치의 플래시 메모리 칩에 제공된 쓰기 명령 회수를 나타낸다.
성능 측정을 위해 가정한 플래시 메모리 장치의 총 용량은 32GB이며, 각각의 플래시 메모리 칩은 2048개의 블록으로 구성되고, 각 블록은 128개의 페이지를 포하고, 각 페이지는 4kB의 크기를 가지는 것으로 가정하였다. 또한, 버퍼는 사용량이 전체 용량의 90% 이상이면 버퍼의 데이터를 비우는 것으로 가정하였다.
성능 측정을 위해 사용된 트레이스(trace)는 MS-Windows XP 기반의 데스크탑 컴퓨터에서 문서 작성 프로그램의 설치 및 실행, MP3 재생 프로그램, 웹브라우저, 게임 등과 같은 다양한 응용프로그램을 실행하여 수집한 트레이스와, 2GB의 크기를 가지는 JPEG 포맷의 이미지 파일을 복사하면서 발생된는 순차적인 접근들을 수집한 트레이스를 사용하였다.
도 8을 참조하면, 그래프의 가로축은 크게 슈퍼블록 단위로 쓰기를 수행하는 방법(Default)과, 본 발명의 실시예에 따라 희생 슈퍼블록을 선정하여 쓰기를 수행하는 방법(Best-fit) 및 버퍼의 사용량이 미리 설정된 기준을 초과하는 경우 버퍼에 존재하는 모든 데이터를 플래시 메모리 칩에 기록하는 방법(Flush All)을 구분하여 나타낸다. 또한, Default 방법 및 Best-fit 방법은 각각 슈퍼블록에 모인 갱신된 데이터의 양을 고려하여 희생 슈퍼블록을 선정하는 방법(Size)과, 접근 시간을 고려하여 희생 슈퍼블록을 선정하는 방법(LRU) 및 갱신된 데이터의 양과 접근 시간을 동시에 고려하여 희생 슈퍼블록을 선정하는 방법(LRU+Size)로 세분화하여 표시하였다.
그리고, 각 방법에 대한 성능 측정 결과는 플래시 메모리 칩에 기록된 슈퍼블록이 모두 갱신된 데이터로 구성된 완전한 슈퍼블록(CompleteSB)과 슈퍼블록에 갱신되지 않은 데이터가 포함된 불완전한 슈퍼블록(IncompleteSB)으로 구분하여 표시하였다.
먼저, 버퍼 관리를 수행하지 않고 슈퍼블록을 그대로 플래시 메모리 칩에 기록하는 방법(Flush All)을 사용하는 경우에는 불완전한 슈퍼블록이 완전한 슈퍼블록보다 더 많이 기록되고 있음을 알 수 있다.
또한, Default 방법은 슈퍼블록에 모인 갱신된 데이터의 크기를 고려하여 쓰기를 수행하는 방법(Size)이 플래시 메모리 장치에 기록되는 슈퍼블록의 수를 가장 많이 줄이고 불완전한 슈퍼블록도 가장 적게 발생시키는 것을 확인할 수 있다. 그러나, 갱신된 데이터의 크기만을 고려하여 쓰기를 수행하는 것은 데이터의 안정성을 떨어뜨릴 수 있는 문제가 있다.
본 발명의 실시예에 따라 희생 슈퍼블록을 선정하여 쓰기를 수행하는 방법(Best-fit)은 갱신된 데이터의 양과 접근 시간을 동시에 고려하여 희생 슈퍼블록을 선정하는 방법(LRU+Size)이 데이터 기록 회수를 적정하게 유지하면서 불완전한 슈퍼블록의 수를 줄일 수 있고 동시에 데이터의 안정성을 보장할 수 있음을 확인할 수 있다.
도 9는 본 발명의 실시예에 따른 플래시 메모리 장치의 성능 측정 결과를 나타내는 그래프로서, 2GB의 크기를 가지는 JPEG 포맷의 이미지 파일을 플래시 메모리 장치에 복사할 때 SSD 플래시 메모리 장치의 플래시 메모리 칩에 제공된 쓰기 요청 회수를 나타낸다. 도 9의 그래프에서 가로축과 세로축은 도 8에 도시된 동일 부호의 내용과 동일하다.
이미지 파일을 플래시 메모리 장치에 복사하는 경우에는 플래시 메모리 칩에 대한 무작위 접근 보다 순차적인 접근이 발생될 확률이 크다. 따라서, Flush All 방법을 사용하는 경우에도 완전한 슈퍼블록이 많이 생성되는 것을 확인할 수 있다.
또한, Default 방법에서 Size 방법은 동일한 슈퍼블록에 연속적으로 쓰기 명령이 들어오는 도중에 그 슈퍼블록이 희생 슈퍼블록으로 선정되어 기록되기 때문에 데이터를 모아서 기록하지 못하는 문제가 있다. 따라서, 동일한 슈퍼블록에 연속적으로 쓰기 명령이 들어와도 희생 슈퍼블록으로 선정되지 않는 LRU 방법이 쓰기 회 수가 더 감소되는 결과를 나타낸다.
본 발명의 실시예에 따라 희생 슈퍼블록을 선정하여 쓰기를 수행하는 방법(Best-fit)은 갱신된 데이터의 양과 접근 시간을 동시에 고려하여 희생 슈퍼블록을 선정하는 방법(LRU+Size)이 데이터 기록 회수를 가장 최소로 유지하면서도 불완전한 슈퍼블록의 비율이 가장 적음을 나타낸다.
이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
도 1은 일반적인 SSD에서 수행되는 데이터 액세스 과정을 나타내는 개념도이다.
도 2는 본 발명의 일 실시예에 따른 플래시 메모리 장치의 구성을 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 슈퍼블록 구성 방법을 나타내는 개념도이다.
도 4는 본 발명의 다른 실시예에 따른 슈퍼블록 구성 및 데이터 기록 방법을 나타내는 개념도이다.
도 5는 도 4에 도시된 방법을 통해 할당된 물리 슈퍼블록의 상세한 구성을 나타내는 블록도이다.
도 6은 도 4에 도시된 데이터 기록 방법을 수행하는 과정에서 요구되는 매핑 테이블을 나타낸다.
도 7은 본 발명의 일 실시예에 따른 플래시 메모리 장치의 데이터 기록 과정을 나타내는 흐름도이다.
도 8 및 도 9는 본 발명의 실시예에 따른 플래시 메모리 장치의 성능 측정 결과를 나타내는 그래프이다.
<도면의 주요 부분에 대한 부호의 설명>
110 : 호스트 인터페이스 120 : 버퍼
130 : 제어부 150 : 플래시 메모리 칩
Claims (22)
- 소정 개수의 블록으로 구성된 슈퍼블록 단위로 기록(write)을 수행하는 플래시 메모리 장치의 데이터 기록 방법에 있어서,버퍼의 사용량을 판단하는 단계;상기 버퍼의 사용량이 미리 설정된 수준 이상인 경우 상기 버퍼에 저장된 복수의 논리 슈퍼블록 중에서 갱신된 데이터의 크기 및 데이터 접근 시간(Least Recently Used)에 기초하여 희생 슈퍼블록을 선정하는 단계; 및상기 선정된 희생 슈퍼블록을 플래시 메모리 칩에 기록하는 단계를 포함하는 플래시 메모리 장치의 데이터 기록 방법.
- 제1항에 있어서, 상기 버퍼의 사용량이 미리 설정된 수준 이상인 경우 상기 버퍼에 저장된 복수의 논리 슈퍼블록 중에서 갱신된 데이터의 크기 및 데이터 접근 시간을 고려하여 희생 슈퍼블록을 선정하는 단계는,상기 복수의 논리 슈퍼블록 각각에 대해 상기 갱신된 데이터의 크기 및 상기 데이터 접근 시간에 기초하여 우선순위를 결정하는 단계; 및상기 결정된 우선순위가 가장 높은 논리 슈퍼블록을 상기 희생 슈퍼블록으로 결정하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 장치의 데이터 기록 방법.
- 제2항에 있어서, 상기 복수의 논리 슈퍼블록 각각에 대해 상기 갱신된 데이터의 크기 및 상기 데이터 접근 시간에 기초하여 우선순위를 결정하는 단계는,
- 제1항에 있어서, 상기 선정된 희생 슈퍼블록을 플래시 메모리 칩에 기록하는 단계는,상기 복수의 논리 슈퍼블록과 매핑된 물리 슈퍼블록이 존재하는 플래시 메모리 칩에서 상기 희생 슈퍼블록을 기록하기 위한 새로운 물리 슈퍼블록을 할당하는 단계; 및할당된 상기 새로운 물리 슈퍼블록에 상기 희생 슈퍼블록의 데이터를 기록하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 장치의 데이터 기록 방법.
- 소정 개수의 블록으로 구성된 슈퍼블록 단위로 기록을 수행하는 플래시 메모리 장치의 데이터 기록 방법에 있어서,버퍼의 사용량을 판단하는 단계;상기 버퍼의 사용량이 미리 설정된 수준 이상인 경우 상기 버퍼에 저장된 복수의 논리 슈퍼블록 각각에 대해 상기 슈퍼블록 보다 작은 단위의 조각으로 구분하는 단계;상기 구분된 각각의 조각 중 갱신된 데이터의 크기에 기초하여 상기 조각들을 조합하여 가상 슈퍼블록을 구성하는 단계; 및상기 구성된 가상 슈퍼블록을 플래시 메모리 칩에 기록하는 단계를 포함하는 플래시 메모리 장치의 데이터 기록 방법.
- 제5항에 있어서, 상기 버퍼의 사용량이 미리 설정된 수준 이상인 경우 상기 버퍼에 저장된 복수의 논리 슈퍼블록 각각에 대해 상기 슈퍼블록 보다 작은 단위의 조각으로 구분하는 단계는,상기 복수의 논리 슈퍼블록 각각에 대해 상기 논리 슈퍼블록 크기의 1/4의 크기를 가지는 조각으로 구분하는 것을 특징으로 하는 플래시 메모리 장치의 데이터 기록 방법.
- 제5항에 있어서, 상기 구분된 각각의 조각 중 갱신된 데이터의 크기에 기초하여 상기 조각들을 조합하여 가상 슈퍼블록을 구성하는 단계는,상기 조각으로 구분된 논리 슈퍼블록 각각에 대해 조각 단위로 갱신된 데이터의 크기를 확인하는 단계; 및상기 갱신된 데이터의 크기가 큰 순서에 기초하여 상기 조각들을 조합하여 상기 논리 슈퍼블록과 동일한 크기를 가지는 가상 슈퍼블록을 구성하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 장치의 데이터 기록 방법.
- 제5항에 있어서, 상기 플래시 메모리 장치의 데이터 기록 방법은,상기 구성된 가상 슈퍼블록을 플래시 메모리 칩에 기록하는 단계를 수행한 후, 상기 복수의 논리 슈퍼블록 및 상기 플래시 메모리 칩에 기록된 물리 슈퍼블록 사이의 변경된 매핑관계를 나타내는 매핑 테이블을 작성하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 장치의 데이터 기록 방법.
- 제8항에 있어서, 상기 매핑 테이블은상기 복수의 논리 슈퍼블록과 대응되는 물리 슈퍼블록 및/또는 참조할 매핑 테이블의 정보를 포함하는 제1 매핑 테이블과, 상기 논리 슈퍼블록 크기의 1/2 크기를 가지는 조각과 물리 슈퍼블록과의 매핑 정보를 포함하는 제2 매핑 테이블과, 상기 논리 슈퍼블록 크기의 1/4 크기를 가지는 조각과 물리 슈퍼블록과의 매핑 정보를 포함하는 제3 매핑 테이블을 포함하는 것을 특징으로 하는 플래시 메모리 장치의 데이터 기록 방법.
- 제9항에 있어서, 상기 플래시 메모리 장치의 데이터 기록 방법은,상기 버퍼에 상기 매핑 테이블을 저장하기 위한 공간이 부족한 경우에는 상 기 플래시 메모리 칩에 기록된 물리 슈퍼블록을 상기 논리 슈퍼블록 형태로 복원한 후 상기 플래시 메모리 칩의 새로운 물리 슈퍼블록에 기록한 후 상기 매핑 테이블을 제1 매핑 테이블로 유지하는 것을 특징으로 하는 플래시 메모리 장치의 데이터 기록 방법.
- 제5항에 있어서, 상기 구성된 가상 슈퍼블록을 플래시 메모리 칩에 기록하는 단계는,상기 가상 슈퍼블록에 갱신되지 않은 데이터가 존재하는 경우 상기 가상 슈퍼블록과 매핑되는 상기 플래시 메모리 장치의 물리 슈퍼블록의 해당 위치에 상기 가상 슈퍼블록에 포함된 갱신된 데이터 및 상기 갱신되지 않은 데이터를 합하여 기록하는 것을 특징으로 하는 플래시 메모리 장치의 데이터 기록 방법.
- 제5항에 있어서, 상기 구성된 가상 슈퍼블록을 플래시 메모리 칩에 기록하는 단계는,상기 복수의 논리 슈퍼블록과 매핑된 물리 슈퍼블록이 존재하는 플래시 메모리 칩에서 상기 가상 슈퍼블록을 기록하기 위한 새로운 물리 슈퍼블록을 할당하는 단계; 및할당된 상기 새로운 물리 슈퍼블록에 상기 가상 슈퍼블록의 데이터를 기록하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 장치의 데이터 기록 방법.
- 소정 개수의 블록으로 구성된 슈퍼블록 단위로 기록(write)을 수행하는 플래시 메모리 장치의 데이터 기록 방법에 있어서,버퍼의 사용량을 판단하는 단계;상기 버퍼의 사용량이 미리 설정된 수준 이상인 경우 상기 버퍼에 저장된 복수의 논리 슈퍼블록 중에서 갱신된 데이터의 크기 및 데이터 접근 시간(Least Recently Used)에 기초하여 복수의 희생 슈퍼블록을 선정하는 단계;선정된 상기 복수의 희생 슈퍼블록 각각에 대해 상기 슈퍼블록 보다 작은 단위의 조각으로 구분하는 단계;상기 구분된 각각의 조각 중 갱신된 데이터의 크기에 기초하여 상기 조각들을 조합하여 가상 슈퍼블록을 구성하는 단계; 및상기 구성된 가상 슈퍼블록을 플래시 메모리 칩에 기록하는 단계를 포함하는 플래시 메모리 장치의 데이터 기록 방법.
- 제13항에 있어서, 상기 버퍼의 사용량이 미리 설정된 수준 이상인 경우 상기 버퍼에 저장된 복수의 논리 슈퍼블록 중에서 갱신된 데이터의 크기 및 데이터 접근 시간에 기초하여 복수의 희생 슈퍼블록을 선정하는 단계는,수학식 (여기서, R(i)는 논리 슈퍼블록 i가 상기 희생 슈퍼블록으로 선택될 우선순위를 의미하고, n은 상기 버퍼에 존재하는 논리 슈퍼블록의 개수를 의미하고, Xi는 논리 슈퍼블록 i의 LRU 정도를 의미하며, Yi는 논리 슈퍼블록 i에 데이터가 모여진 양의 순위를 의미함)을 이용하여 상기 복수의 논리 슈퍼블록 각각에 대해 우선순위를 결정하는 단계; 및상기 결정된 우선순위에 기초하여 소정 개수의 논리 슈퍼블록을 희생 슈퍼블록으로 결정하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 장치의 데이터 기록 방법.
- 제13항에 있어서, 상기 구분된 각각의 조각 중 갱신된 데이터의 크기에 기초하여 상기 조각들을 조합하여 가상 슈퍼블록을 구성하는 단계는,상기 조각으로 구분된 희생 슈퍼블록 각각에 대해 조각 단위로 갱신된 데이터의 크기를 확인하는 단계; 및상기 갱신된 데이터의 크기가 큰 순서에 기초하여 상기 조각들을 조합하여 상기 희생 슈퍼블록과 동일한 크기를 가지는 가상 슈퍼블록을 구성하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 장치의 데이터 기록 방법.
- 제13항에 있어서, 상기 플래시 메모리 장치의 데이터 기록 방법은,상기 구성된 가상 슈퍼블록을 플래시 메모리 칩에 기록하는 단계를 수행한 후, 상기 복수의 희생 슈퍼블록 및 상기 플래시 메모리 칩에 기록된 물리 슈퍼블록 사이의 변경된 매핑관계를 나타내는 매핑 테이블을 작성하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 장치의 데이터 기록 방법.
- 제16항에 있어서, 상기 매핑 테이블은상기 복수의 희생 슈퍼블록과 대응되는 물리 슈퍼블록 및/또는 참조할 매핑 테이블의 정보를 포함하는 제1 매핑 테이블과, 상기 희생 슈퍼블록 크기의 1/2 크기를 가지는 조각과 물리 슈퍼블록과의 매핑 정보를 포함하는 제2 매핑 테이블과, 상기 희생 슈퍼블록 크기의 1/4 크기를 가지는 조각과 물리 슈퍼블록과의 매핑 정보를 포함하는 제3 매핑 테이블을 포함하는 것을 특징으로 하는 플래시 메모리 장치의 데이터 기록 방법.
- 복수의 메모리 칩으로 구성된 플래시 메모리 장치에 있어서,호스트 장치와 인터페이스 기능을 수행하는 호스트 인터페이스;상기 호스트 장치로부터 제공된 데이터가 저장되는 버퍼; 및상기 버퍼의 사용량이 미리 설정된 수준 이상인 경우 상기 버퍼에 저장된 복수의 논리 슈퍼블록 중에서 갱신된 데이터의 크기 및 데이터 접근 시간(Least Recently Used)에 기초하여 복수의 희생 슈퍼블록을 선정한 후, 선정된 상기 복수의 희생 슈퍼블록으로부터 갱신될 데이터를 조합하여 희생 슈퍼블록으로 재구성한 후 복수의 채널을 통해 제공하는 상기 복수의 메모리 칩에 제공하는 제어부를 포함하는 플래시 메모리 장치.
- 제18항에 있어서, 상기 제어부는선정된 상기 복수의 희생 슈퍼블록 각각에 대해 상기 슈퍼블록 보다 작은 단위의 조각으로 구분하고, 상기 조각으로 구분된 희생 슈퍼블록 각각에 대해 조각 단위로 갱신된 데이터의 크기를 확인한 후 상기 갱신된 데이터의 크기가 큰 순서에 기초하여 상기 조각들을 조합하여 상기 희생 슈퍼블록과 동일한 크기를 가지는 가상 슈퍼블록을 구성함으로써 희생 슈퍼블록을 재구성하는 것을 특징으로 하는 플래시 메모리 장치.
- 제19항에 있어서, 상기 제어부는상기 조각으로 구분된 희생 슈퍼블록 각각에 대해 조각 단위로 갱신된 페이지의 크기를 확인하는 것을 특징으로 하는 플래시 메모리 장치.
- 제18항에 있어서, 상기 제어부는,상기 구성된 가상 슈퍼블록을 플래시 메모리 칩에 기록한 후, 상기 복수의 희생 슈퍼블록 및 상기 플래시 메모리 칩에 기록된 물리 슈퍼블록 사이의 변경된 매핑관계를 나타내는 매핑 테이블을 작성하는 것을 특징으로 하는 플래시 메모리 장치.
- 제18항에 있어서, 상기 제어부는상기 복수의 논리 슈퍼블록 각각에 대해 상기 논리 슈퍼블록 크기의 1/4의 크기를 가지는 조각으로 구분하는 것을 특징으로 하는 플래시 메모리 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090034058A KR100988388B1 (ko) | 2009-04-20 | 2009-04-20 | 플래시 메모리 장치의 성능 향상 방법 및 이를 수행하는 플래시 메모리 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090034058A KR100988388B1 (ko) | 2009-04-20 | 2009-04-20 | 플래시 메모리 장치의 성능 향상 방법 및 이를 수행하는 플래시 메모리 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR100988388B1 true KR100988388B1 (ko) | 2010-10-18 |
Family
ID=43135558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090034058A KR100988388B1 (ko) | 2009-04-20 | 2009-04-20 | 플래시 메모리 장치의 성능 향상 방법 및 이를 수행하는 플래시 메모리 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100988388B1 (ko) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8769191B2 (en) | 2011-11-07 | 2014-07-01 | Samsung Electronics Co., Ltd. | Garbage collection method for nonvolatile memory device |
KR20190076296A (ko) * | 2017-12-22 | 2019-07-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR20190110243A (ko) * | 2018-03-20 | 2019-09-30 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
WO2021133826A1 (en) * | 2019-12-27 | 2021-07-01 | Micron Technology, Inc. | Neuromorphic memory device and method |
US11386004B2 (en) | 2019-02-22 | 2022-07-12 | Micron Technology, Inc. | Memory device interface and method |
US11538508B2 (en) | 2019-12-31 | 2022-12-27 | Micron Technology, Inc. | Memory module multiple port buffer techniques |
US11635910B2 (en) | 2019-12-30 | 2023-04-25 | Micron Technology, Inc. | Memory device interface and method |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050065715A (ko) * | 2003-12-23 | 2005-06-30 | 삼성전자주식회사 | 플래쉬 메모리를 파일 시스템으로 라이트하기 위한캐쉬처리 방법 |
KR20080037283A (ko) * | 2006-10-25 | 2008-04-30 | 삼성전자주식회사 | 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법 |
KR20080074247A (ko) * | 2007-02-08 | 2008-08-13 | 삼성전자주식회사 | 버퍼 메모리를 포함하는 플래쉬 메모리 장치 및 시스템,플래쉬 메모리 장치의 데이터 업데이트 방법 |
-
2009
- 2009-04-20 KR KR1020090034058A patent/KR100988388B1/ko not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050065715A (ko) * | 2003-12-23 | 2005-06-30 | 삼성전자주식회사 | 플래쉬 메모리를 파일 시스템으로 라이트하기 위한캐쉬처리 방법 |
KR20080037283A (ko) * | 2006-10-25 | 2008-04-30 | 삼성전자주식회사 | 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법 |
KR20080074247A (ko) * | 2007-02-08 | 2008-08-13 | 삼성전자주식회사 | 버퍼 메모리를 포함하는 플래쉬 메모리 장치 및 시스템,플래쉬 메모리 장치의 데이터 업데이트 방법 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8769191B2 (en) | 2011-11-07 | 2014-07-01 | Samsung Electronics Co., Ltd. | Garbage collection method for nonvolatile memory device |
KR20190076296A (ko) * | 2017-12-22 | 2019-07-02 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR20190110243A (ko) * | 2018-03-20 | 2019-09-30 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US11386004B2 (en) | 2019-02-22 | 2022-07-12 | Micron Technology, Inc. | Memory device interface and method |
US11868253B2 (en) | 2019-02-22 | 2024-01-09 | Lodestar Licensing Group, Llc | Memory device interface and method |
WO2021133826A1 (en) * | 2019-12-27 | 2021-07-01 | Micron Technology, Inc. | Neuromorphic memory device and method |
US11989141B2 (en) | 2019-12-27 | 2024-05-21 | Micron Technology, Inc. | Neuromorphic memory device and method |
US11635910B2 (en) | 2019-12-30 | 2023-04-25 | Micron Technology, Inc. | Memory device interface and method |
US12045500B2 (en) | 2019-12-30 | 2024-07-23 | Micron Technology, Inc. | Memory device interface and method |
US11538508B2 (en) | 2019-12-31 | 2022-12-27 | Micron Technology, Inc. | Memory module multiple port buffer techniques |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11893238B2 (en) | Method of controlling nonvolatile semiconductor memory | |
JP5728672B2 (ja) | ハイブリッドメモリ管理 | |
US20140122783A1 (en) | Solid state memory (ssm), computer system including an ssm, and method of operating an ssm | |
US8954656B2 (en) | Method and system for reducing mapping table size in a storage device | |
KR100988388B1 (ko) | 플래시 메모리 장치의 성능 향상 방법 및 이를 수행하는 플래시 메모리 장치 | |
US20150186259A1 (en) | Method and apparatus for storing data in non-volatile memory | |
KR101297442B1 (ko) | 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템 | |
KR20070060070A (ko) | 최적화된 순차적인 클러스터 관리용 에프에이티 분석 | |
US12086467B2 (en) | Read performance of memory devices | |
KR20070096429A (ko) | 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템 | |
Park et al. | A pattern adaptive NAND flash memory storage structure | |
KR20100115090A (ko) | 버퍼를 고려한 가비지 컬렉션 기법 | |
US20160004644A1 (en) | Storage Controller and Method for Managing Modified Data Flush Operations From a Cache | |
JP6139711B2 (ja) | 情報処理装置 | |
KR100745163B1 (ko) | 동적 매핑 테이블을 이용한 플래시 메모리 관리방법 | |
Lee et al. | An efficient buffer management scheme for implementing a B-tree on NAND flash memory | |
KR101117390B1 (ko) | 비휘발성 메모리 장치의 데이터 접근 방법 및 이를 수행하는 프로그램을 기록한 기록매체 | |
KR100994052B1 (ko) | 플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치 | |
KR101025375B1 (ko) | 비휘발성 메모리 장치의 데이터 기록 방법 및 이를 수행하는 비휘발성 메모리 장치 | |
KR20220159270A (ko) | 스토리지 장치 및 그 동작 방법 | |
CN118796721A (zh) | 应用于存储器的映射表写入方法以及存储器 | |
KR20230096359A (ko) | LSM-tree 및 근사 인덱싱에 기반한 FTL을 이용하는 SSD 장치 및 그 동작 방법 | |
KR20090113624A (ko) | 솔리드 스테이트 드라이브 및 그 동작 제어방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20131007 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20140923 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |