KR100845552B1 - Ftl의 어드레스 매핑 방법 - Google Patents

Ftl의 어드레스 매핑 방법 Download PDF

Info

Publication number
KR100845552B1
KR100845552B1 KR1020060129464A KR20060129464A KR100845552B1 KR 100845552 B1 KR100845552 B1 KR 100845552B1 KR 1020060129464 A KR1020060129464 A KR 1020060129464A KR 20060129464 A KR20060129464 A KR 20060129464A KR 100845552 B1 KR100845552 B1 KR 100845552B1
Authority
KR
South Korea
Prior art keywords
page
block
information
recorded
valid
Prior art date
Application number
KR1020060129464A
Other languages
English (en)
Other versions
KR20080056491A (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 KR1020060129464A priority Critical patent/KR100845552B1/ko
Publication of KR20080056491A publication Critical patent/KR20080056491A/ko
Application granted granted Critical
Publication of KR100845552B1 publication Critical patent/KR100845552B1/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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

Abstract

본 발명은 매핑 코드를 갖는 블록 매핑 테이블을 이용하여 매핑 속도를 높이면서도 메모리 사용량을 작게 하는 FTL의 어드레스 매핑 방법을 제공하기 위한 것으로서, 호스트를 통해 쓰기 요청에 대한 LSN 번호가 입력되는 단계와, 상기 입력되는 LSN 번호를 플래시 메모리의 물리적 메모리 영역의 빈 페이지로 차례로 기록되는 단계와, 동일한 LSN에 수정 요청이 들어오면 기 저장된 플래시 메모리의 페이지는 무효한(invalid) 상태로 변경하고 다음 빈 페이지를 할당 받아서 업데이트 내용을 기록하는 단계와, 상기 기록된 물리적 메모리 영역 내의 유효한 데이터가 기록된 물리 블록 번호, 상기 유효한 물리 블록 번호내의 페이지 상태 및 유효한 논리 페이지 번호가 기록된 블록 매핑 코드 정보를 블록 매핑 테이블에 저장하는 단계를 포함하는데 있다.
Figure R1020060129464
NAND 플래시 메모리, FTL, 블록 매핑 테이블, LSN 번호, 블록 매핑 코드

Description

FTL의 어드레스 매핑 방법{Method for address mapping in Flash Translation Layer(FTL)}
도 1 은 본 발명의 제 1 실시예에 따른 데이터 저장 장치를 포함한 메모리 시스템의 전체 블록도
도 2 는 본 발명의 제 2 실시예에 따른 데이터 저장 장치를 포함한 메모리 시스템의 전체 블록도
*도면의 주요부분에 대한 부호의 설명
100 : 호스트 200 : 데이터 저장 장치
210 : 플래시 메모리 211 : 블록 매핑 테이블
212 : 블록 매핑 코드부 213 : 물리적 메모리 영역
220 : 제어부 221 : 제어로직
222 : FTL
본 발명은 저장 장치에 관한 것으로, 특히 플래시 메모리와 같이 불휘발성이면서 전기적으로 소거 가능한 반도체 메모리 장치를 효율적으로 관리하기 위한 FTL 의 어드레스 매핑 방법에 관한 것이다.
불휘발성 메모리 장치는 드라이브 전원이 공급되지 않아도 셀에 기록된 데이터가 소명되지 않고 남아있다. 이런 불휘발성 메모리들 중에서도 플래시 메모리는 전기적으로 셀의 데이터를 일괄적으로 소거하는 기능을 가지고 있기 때문에, 컴퓨터 및 메모리 카드 등에 널리 사용되고 있다. 최근 들어서는 휴대폰, PDA, 디지털카메라 등과 같은 휴대용 정보기기의 사용이 급증함에 따라, 하드디스크 대신 플래시 메모리가 저장장치로서 널리 사용되고 있다.
플래시 메모리는 셀과 비트라인의 연결 상태에 따라 NOR형 NAND형으로 구분된다. NOR형 플래시 메모리는 읽기 속도가 빠른데 반하여 쓰기 속도가 느리기 때문에, 주로 코드용 메모리로 사용된다. 그리고 NAND형 플래시 메모리는 쓰기 속도가 빠르고 단위 면적당 단가가 낮기 때문에, 주로 대용량 데이터 저장장치로 사용된다.
플래시 메모리는 다른 메모리 소자와 비교할 때 비교적 낮은 단가로 빠른 읽기 속도를 제공할 수 있는 장점이 있으나, 플래시 메모리에 데이터를 기입하기 위해서는 삭제 연산이 반드시 선행되어야 하며, 기입되는 데이터의 단위보다 삭제되는 데이터의 단위가 큰 특징을 가지고 있다. 이러한 특징은 플래시 메모리를 주 메모리로 사용하는 것을 어렵게 할 뿐만 아니라, 플래시 메모리가 보조기억장치로 사용되는 경우에도 일반 하드디스크용 파일 시스템(file system)을 그대로 활용하는 것을 저해하는 요인이 된다.
따라서 플래시 메모리의 삭제 연산을 감추기 위해 파일 시스템과 플래시 메 모리 사이에 플래시 변환 계층(Flash Translation Layer : FTL)이 사용된다.
FTL은 플래시 메모리의 기입 동작시 파일 시스템이 생성한 논리주소를 삭제연산이 수행된 플래시 메모리의 물리 주소로 매핑시켜 주는 역할을 수행한다. FTL에서 수행되는 어드레스 매핑(address mapping)의 예는 미국특허공보 제5,404,485호("Flash File System"), 미국특허공보 제5,937,425호("Flash File System Optimized for Page-Mode Flash Technologies") 및 미국특허공보 제6,381,176호(Method of Driving Remapping in Flash Memory and Flash Memory Architecture Suitable Therefor")에 게재되어 있다. 여기서 FTL은 빠른 어드레스 매핑이 이루어질 수 있도록 어드레스 매핑 테이블(address mapping table)을 사용한다. 참고로 어드레스 매핑 테이블은 비교적 고가인 SRAM으로 구성된다.
FTL의 어드레스 매핑 기능으로 인해, 호스트는 플래시 메모리 장치를 하드디스크 드라이버(또는 SRAM)로 인식하고, 하드디스크 드라이버와 동일한 방식으로 플래시 메모리 장치를 액세스할 수 있게 된다. FTL은 호스트 시스템으로부터 독립된 하드웨어 형태로 구현될 수도 있고, 호스트 시스템 내부의 디바이스 드라이버 형태로 구현될 수도 있다.
FTL의 어드레스 매핑 기능은 어드레스 매핑 단위에 따라 크게 페이지 단위(즉, 데이터 기입 단위) 어드레스 매핑(page-level address mapping)과, 블록단위(즉, 데이터 소거 단위) 어드레스 매핑(block-level address mapping)으로 구분된다.
이때, 페이지단위 어드레스 매핑은 정교하게 주소를 변환하기 때문에 성능은 좋지만, 고가인 어드레스 매핑 테이블의 크기가 크기 때문에 제작비용이 높은 단점이 있다. 또한, 블록단위 어드레스 매핑은 비 정교하게 주소를 변환하기 때문에 어드레스 매핑 테이블의 크기는 작지만, 내부 하나의 페이지에 대한 수정 연산이 발생할 경우에도 전체 블록을 삭제하고 갱신해야 하는 추가 비용이 발생하는 문제점이 있다. 뿐만 아니라, 블록단위 어드레스 매핑은 어드레스 매핑하는 도중에 결함(fault)이 발생되면 데이터의 일관성을 깨뜨릴 수 있는 문제점이 있다.
이와 같은 문제점을 해결하기 위해, 최근에는 로그블록 기법(log-block scheme)이 제안되어 사용되고 있다. 이 방식은 로그 구조파일 시스템(Log-Structure File System : LFS)과 유사하게 데이터를 로그 형태로 저장한다.
로그블록 기법은 페이지 단위 어드레스 매핑과 블록단위 어드레스 매핑 기법을 병합한 형태로 비교적 큰 단위로 요청되는 입출력은 블록 단위로 처리하고, 작은 단위로 요청되는 입출력은 페이지 단위로 처리한다.
이외에도 최근 M-System에서 개발해서 리눅스에 오픈 소스로 공개되어 있는 FTL 기법 및 NFTL 기법이 있다. 이는 로그 블록에서 오프셋(offset)과 동일한 위치에 페이지를 기록하고, 로그 블록은 리스트로 관리하는 방법이나, NAND 플래시 메모리에 사용 시에 효율이 떨어지는 문제점이 있다.
그러나 이와 같은 기존의 FTL의 어드레스 매핑 방법들은 메인 메모리 사용량과 매핑 속도와의 균형(tradeoff) 관계를 해결하는 방법에 초점을 맞추고 있다. 즉 메모리 사용량이 적으면 매핑 속도가 떨어지고, 매핑 속도가 높으면 메인 메모리 사용량이 많은 단점이 있다. 따라서 어떠한 어드레스 매핑 방법이 적용되더라도 데 이터 저장 장치의 용량이 증가함에 따라 어드레스 매핑 테이블의 크기가 증가되는 것을 회피할 수 없다.
그러므로 메모리의 용량이 커지더라도 적은 메모리 용량을 차지하면서도 플래시 메모리에 대한 어드레스 매핑 정보를 효율적으로 관리할 수 있는 어드레스 매핑 테이블을 통해 어드레스의 매핑 속도를 높이면서도 메모리 사용량이 적은 FTL의 어드레스 매핑 방법의 개발이 요구되고 있다.
본 발명은 상기와 같은 문제점을 해결하기 위해 안출한 것으로서, 매핑 코드를 갖는 블록 매핑 테이블을 이용하여 매핑 속도를 높이면서도 메모리 사용량을 작게 하는 FTL의 어드레스 매핑 방법을 제공하는데 그 목적이 있다.
본 발명의 다른 목적은 메모리 사용량을 줄임에 따라 매핑 정보 테이블을 모두 메인 메모리상에 로드해서 매핑 속도를 높이는 FTL의 어드레스 매핑 방법을 제공하는데 있다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 FTL의 어드레스 매핑 방법의 특징은 호스트를 통해 쓰기 요청에 대한 LSN 번호가 입력되는 단계와, 상기 입력되는 LSN 번호를 플래시 메모리의 물리적 메모리 영역의 빈 페이지로 차례로 기록되는 단계와, 동일한 LSN에 수정 요청이 들어오면 기 저장된 플래시 메모리의 페이지는 무효한(invalid) 상태로 변경하고 다음 빈 페이지를 할당 받아서 업데이트 내용을 기록하는 단계와, 상기 기록된 물리적 메모리 영역 내의 유효한 데이터 가 기록된 물리 블록 번호, 상기 유효한 물리 블록 번호내의 페이지 상태 및 유효한 논리 페이지 번호가 기록된 블록 매핑 코드 정보를 블록 매핑 테이블에 저장하는 단계를 포함하는데 있다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 FTL의 어드레스 매핑 방법의 다른 특징은 호스트를 통해 읽기 요청이 입력되는 단계와, 블록 매핑 코드에 기록되어 있는 물리 블록 번호 정보를 이용하여 유효한 데이터가 기록된 블록을 검출하는 단계와, 블록 매핑 코드에 기록되어 있는 페이지 상태 정보를 이용하여 상기 검출된 블록내의 유효한 페이지를 검출하는 단계와, 블록 매핑 코드에 기록되어 있는 논리 페이지 번호 정보를 이용하여 상기 검출된 유효한 페이지의 논리 페이지 번호를 읽어오는 단계를 포함하는데 있다.
바람직하게 상기 페이지 상태 정보는 논리 페이지 번호(Logical Page Number : LPN)가 기입되어 있는 유효한 페이지 정보와, 무효 데이터가 저장된 것으로 처리된 페이지 정보와, 빈 페이지 정보 중 적어도 하나 이상의 정보인 것을 특징으로 한다.
바람직하게 상기 페이지 상태 정보는 연속적으로 데이터가 저장됨을 나타내는 정보를 더 포함하는 것을 특징으로 한다.
바람직하게 상기 블록 매핑 테이블을 모두 메인 메모리상에 로드하여 맵핑하는 것을 특징으로 한다.
본 발명의 다른 목적, 특성 및 이점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.
본 발명에 따른 FTL의 어드레스 매핑 방법의 바람직한 실시예에 대하여 첨부한 도면을 참조하여 설명하면 다음과 같다. 그러나 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록 하며 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
도 1 은 본 발명의 제 1 실시예에 따른 데이터 저장 장치를 포함한 메모리 시스템의 전체 블록도이고, 도 2 는 본 발명의 제 2 실시예에 따른 데이터 저장 장치를 포함한 메모리 시스템의 전체 블록도이다.
도 1 및 도 2와 같이, 메모리 시스템은 호스트(100) 및 데이터 저장 장치(200)를 포함한다. 그리고 데이터 저장 장치(200)는 데이터를 저장하는 플래시 메모리(210)와, 호스트(100)와 플래시 메모리(210)에서 인터페이스 역할을 하는 제어부(220)로 구성된다.
플래시 메모리(210)는 블록 매핑 테이블(211), 물리적 메모리 영역(213), 로그 영역(미도시) 및 메타 영역(미도시)을 포함한다. 이때, 블록 매핑 테이블(211)에는 블록 매핑 코드 정보가 저장되어 있는 블록 매핑 코드부(212)가 있다.
상기 블록 매핑 코드 정보는 첫째, 물리 블록 번호(Physical Block Number : PPN), 둘째, 페이지 상태(0:LPN, 1:무효한(invalid), 2:연속성(sequence), 3:자유페이지(free)) 및 셋째, 논리 페이지 번호(Logical Page Number : LPN) 정보를 기록하고 있어서, 물리적 메모리 영역(213)의 위치 정보를 제공한다.
제어부(220)는 호스트(100)로부터 액세스 요청이 있을 때 상기 플래시 메모 리(200)를 제어하도록 구성되며, 제어로직(221)과 FTL(222)을 포함한다. 제어로직(221)은 호스트(100)로부터의 액세스 요청이 있을 때, FTL(222)이 동작되도록 제어한다.
이때, 상기 플래시 메모리(210)는 바람직하게는 낸드(NAND) 플래시 메모리로서, 블록 단위로 소거 동작이 이루어지며 페이지 단위로 읽기 및 쓰기 동작이 이루어진다.
이와 같이 구성된 본 발명의 실시예에 따른 FTL의 어드레스 매핑 방법의 동작을 첨부한 도면을 참조하여 상세히 설명하면 다음과 같다.
제 1 실시예
도 1 은 본 발명의 제 1 실시예에 따른 데이터 저장 장치를 포함한 메모리 시스템의 전체 블록도이다.
도 1을 참조하여 본 발명에 따른 제 1 실시예를 설명하면, 먼저 호스트(100)를 통해 쓰기 요청에 대한 LSN 번호가 입력되면, 플래시 메모리의 물리적 메모리 영역(213)에는 빈 페이지로 차례로 기록된다. 이때, 동일한 LSN에 수정 요청이 들어오면 기존의 플래시 메모리의 페이지는 무효한(invalid) 상태가 되고 다음 빈 페이지(free)를 할당 받아서 업데이트 내용을 적어준다.
즉, 제 0, 2, 3, 5 블록(BL0, BL2, BL3, BL5)이 빈 페이지를 갖고, 각 블록은 4 페이지로 구성되며, 쓰기 요청에 대한 LSN 번호“0, 0, 0, 2, 2, 2, 3, 1, 1, 1, 1, 3, 3, 3”이 차례로 입력된다고 가정한다.
그럼, 1 번째 LSN 번호“0”이 입력되면 물리적 메모리 영역(213) 내의 빈 페이지를 갖는 제 0 블록(BL0)의 1 번째 페이지로 입력된다.
이어 2 번째 LSN 번호가 1 번째 LSN 번호와 동일한“0”의 수정 요청이 입력되면, 해당되는 제 0 블록(BL0)의 1 번째 페이지를 무효 데이터가 저장된 것으로 처리한다(I로 표기). 그리고 2 번째 LSN 번호“0”은 물리적 메모리 영역(213) 내의 다음 빈 페이지를 갖는 제 0 블록(BL0)의 2 번째 페이지로 입력된다.
이어 3 번째 LSN 번호가 2 번째 LSN 번호와 동일한“0”이 입력되면, 제 0 블록(BL0)의 1 번째 페이지와 마찬가지로, 제 0 블록(BL0)의 2 번째 페이지를 무효 데이터가 저장된 것으로 처리한다(I로 표기). 그리고 3 번째 LSN 번호“0”은 물리적 메모리 영역(213) 내의 다음 빈 페이지를 갖는 제 0 블록(BL0)의 3 번째 페이지로 입력된다.
이어 4 번째 LSN 번호“2”가 입력되면 물리적 메모리 영역(213) 내의 다음 빈 페이지를 갖는 제 0 블록(BL0)의 4 번째 페이지로 입력된다.
이어 5 번째 LSN 번호가 4 번째 LSN 번호와 동일한“2”의 수정 요청이 입력되면, 해당되는 제 0 블록(BL0)의 4 번째 페이지를 무효 데이터가 저장된 것으로 처리한다(I로 표기). 그리고 5 번째 LSN 번호“0”은 물리적 메모리 영역(213) 내의 다음 빈 페이지를 갖는 다음 빈 페이지를 갖는 블록인 제 2 블록(BL2)의 1 번째 페이지로 입력된다.
그리고 위와 동일한 방법으로 입력되는 쓰기 요청에 대한 모든 LSN 번호를 차례로 빈 페이지를 갖는 물리적 메모리 영역(213)에 입력한다. 그러면, 도 1에서 도시된 물리적 메모리 영역(213)과 같이 정의되며, 이때 해칭된 페이지가 현재 유효한(valid) 데이터가 기록되어 있는 페이지이다.
그러면, 제어부(220)내의 FTL(Flash Translation Layer)(222)은 제어로직(221)의 제어를 통해 물리적 메모리 영역(213)내 데이터 블록의 해당 페이지의 할당(Allocation) 여부에 대한 정보를 블록 매핑 테이블(211)에 저장한다. 이때, 블록 매핑 테이블(211)은 블록 매핑 코드부(212)를 통해 블록 매핑 코드 정보를 저장한다.
상기 블록 매핑 코드 정보는 위에서 설명된 것과 같이 물리 블록 번호(Physical Block Number : PPN), 페이지 상태(0:LPN, 1:무효한(invalid), 3:빈 페이지(free)) 및 논리 페이지 번호(Logical Page Number : LPN)의 정보를 기록한다.
이에 블록 매핑 코드부(212)의 1 번째 정보는 물리적 메모리 영역(213)에 유효한 데이터가 기록되어 있는 블록의 정보를 나타낸다. 따라서 해칭으로 표시된 유효한 데이터가 기록되어 있는 블록인 제 0, 2, 3, 5 블록(BL0, BL2, BL3, BL5)을 나타낸다. 이때 정보 저장의 비트수를 줄이기 위해 각 블록 사이의 차이값을 기록하며, 이에 따라 1 번째 코드에는 “0212”라는 정보가 기록된다.
따라서 이후 읽기 요청에 대해, 블록 매핑 코드부(212)의 1 번째 코드에 기록된 “0212”정보를 이용하여 제 0 블록(BL0), 제 2 블록(BL2), 제 3 블록(BL3), 제 5 블록(BL5)에 유효한 페이지가 있다는 것을 알 수 있게 된다.
또한, 블록 매핑 코드부(212)의 2 번째 정보는 1 번째 정보에서 추출한 유효 페이지의 위치 정보를 나타낸다. 이때, 논리 페이지 번호(Logical Page Number : LPN)가 기입되어 있는 유효한 페이지인 경우는 “0”, 무효 데이터가 저장된 것으로 처리된 페이지(I로 표기)인 경우는 “1”, 빈 페이지인 경우는 3을 기입한다. 이에 따라 2 번째 코드에는“1101 1011 1101 1033”라는 정보가 기록된다.
따라서 이후 읽기 요청에 대해, 블록 매핑 코드부(212)의 2 번째 코드에 기록된 “1101 1011 1101 1033”정보를 이용하여 제 0 블록(BL0)의 3 번째 페이지, 제 2 블록(BL2)의 2 번째 페이지, 제 3 블록(BL3)의 3 번째 페이지 및 제 5 블록(BL5)의 2 번째 페이지가 유효한 페이지인 것을 알 수 있다. 그리고 4 번째 블록의 3, 4 번째 페이지는 빈 페이지인 것을 알 수 있다.
마지막으로, 블록 매핑 코드부(212)의 3 번째 정보는 1 번째 정보에서 유효 페이지의 논리적 섹터 번호(Logical Sector Number : LSN) 정보를 나타낸다. 따라서 해칭으로 표시된 유효한 데이터의 값을 기록하며, 이에 따라 3 번째 코드에는 “0213”이라는 데이터 정보가 기록된다.
그러므로 이후 읽기 요청에 대해, 블록 매핑 코드부(212)의 3 번째 코드에 기록된 “0213”정보를 이용하여 1, 2 번째 코드 정보를 통해 추출된 유효한 페이지 중 제 0 블록(BL0)의 3 번째 페이지에는 데이터 “0”이, 제 2 블록(BL2)의 2 번째 페이지에는 데이터 “2”가, 제 3 블록(BL3)의 3 번째 페이지에는 데이터 “1”이, 그리고 마지막인 제 5 블록(BL5)의 2 번째 페이지에는 데이터 “3”이 기록되어 있는 것을 알 수 있다.
이처럼, 블록 매핑 테이블(211)은 물리 블록 번호, 페이지 상태 및 논리 페 이지 번호의 정보를 갖는 블록 매핑 코드로 구현됨으로써, 메모리 사용량을 획기적으로 줄일 수 있다. 이에 따라, 종래에는 메모리의 용량이 커서 블록 매핑 테이블을 모두 메인 메모리상에 로드할 수 없었던 것을, 메모리의 용량이 커지더라도 적은 메모리 용량을 갖도록 블록 매핑 테이블(211)을 구성함으로써, 상기 블록 매핑 테이블(211)을 모두 메인 메모리상에 로드할 수 있다. 따라서 매핑 속도를 더욱 높일 수 있게 된다. 이는 MP3와 같은 용량이 크면서도 연속적으로 이루어지는 데이터인 경우에 더욱 효과적이다.
제 2 실시예
도 2 는 본 발명의 제 2 실시예에 따른 데이터 저장 장치를 포함한 메모리 시스템의 전체 블록도이다. 제 2 실시예는 제 1 실시예에 추가적으로 연속된 데이터의 저장에 대한 정보 사용량을 줄이기 위해 상기 블록 매핑 코드부(212)의 2 번째 정보에 “2”라는 값을 주어서 해당 정보가 연속적으로 물리 플래시 메모리에 저장되어 있는 것을 알 수 있도록 한 것이다.
도 2를 참조하여 본 발명에 따른 제 2 실시예를 설명하면, 먼저 호스트(100)를 통해 쓰기 요청에 대한 LSN 번호가 입력되면, 플래시 메모리의 물리적 메모리 영역(213)에는 빈 페이지로 차례로 기록된다. 이때, 동일한 LSN에 수정 요청이 들어오면 기존의 플래시 메모리의 페이지는 무효한(invalid) 상태가 되고 다음 빈 페이지(free)를 할당 받아서 업데이트 내용을 적어준다.
즉, 제 0, 2, 3, 5 블록(BL0, BL2, BL3, BL5)이 빈 페이지를 갖고, 각 블록 은 4 페이지로 구성되며, 쓰기 요청에 대한 LSN 번호“0, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9”가 차례로 입력된다고 가정한다.
그럼, 1 번째 LSN 번호“0”이 입력되면 물리적 메모리 영역(213) 내의 빈 페이지를 갖는 제 0 블록(BL0)의 1 번째 페이지로 입력된다.
이어 2 번째 LSN 번호“1”이 입력되면 물리적 메모리 영역(213) 내의 빈 페이지를 갖는 제 0 블록(BL0)의 2 번째 페이지로 입력된다.
이어 3 번째 LSN 번호가 1 번째 LSN 번호와 동일한“0”의 수정 요청이 입력되면, 해당되는 제 0 블록(BL0)의 1 번째 페이지를 무효 데이터가 저장된 것으로 처리한다(I로 표기). 그리고 3 번째 LSN 번호“0”은 물리적 메모리 영역(213) 내의 다음 빈 페이지를 갖는 제 0 블록(BL0)의 3 번째 페이지로 입력된다.
이어 4 번째 LSN 번호가 2 번째 LSN 번호와 동일한“1”이 입력되면, 제 0 블록(BL0)의 1 번째 페이지와 마찬가지로, 제 0 블록(BL0)의 2 번째 페이지를 무효 데이터가 저장된 것으로 처리한다(I로 표기). 그리고 4 번째 LSN 번호“1”은 물리적 메모리 영역(213) 내의 다음 빈 페이지를 갖는 제 0 블록(BL0)의 4 번째 페이지로 입력된다.
이어 5 번째 LSN 번호“2”가 입력되면 물리적 메모리 영역(213) 내의 다음 빈 페이지를 갖는 제 2 블록(BL2)의 1 번째 페이지로 입력된다.
이어 6 번째 LSN 번호“3”이 입력되면 물리적 메모리 영역(213) 내의 다음 빈 페이지를 갖는 제 2 블록(BL2)의 2 번째 페이지로 입력되고, 7 번째 LSN 번호“4”가 입력되면 물리적 메모리 영역(213) 내의 다음 빈 페이지를 갖는 제 2 블 록(BL2)의 3 번째 페이지로 입력된다.
위와 동일한 방법으로 입력되는 쓰기 요청에 대한 모든 LSN 번호를 차례로 빈 페이지를 갖는 물리적 메모리 영역(213)에 입력한다. 그러면, 도 2에서 도시된 물리적 메모리 영역(213)과 같이 정의되며, 이때 해칭된 페이지가 현재 유효한(valid) 데이터가 기록되어 있는 페이지이다.
그러면, 제어부(220)내의 FTL(Flash Translation Layer)(222)은 제어로직(221)의 제어를 통해 물리적 메모리 영역(213)내 데이터 블록의 해당 페이지의 할당(Allocation) 여부에 대한 정보를 블록 매핑 테이블(211)에 저장한다. 이때, 블록 매핑 테이블(211)은 블록 매핑 코드부(212)를 통해 블록 매핑 코드 정보를 저장한다.
상기 블록 매핑 코드 정보는 위에서 설명된 것과 같이 물리 블록 번호(Physical Block Number : PPN), 페이지 상태(0:LPN, 1:무효한(invalid), 2:연속성(sequence), 3:빈 페이지(free)) 및 논리 페이지 번호(Logical Page Number : LPN)의 정보를 기록한다.
이에 블록 매핑 코드부(212)의 1 번째 정보는 물리적 메모리 영역(213)에 유효한 데이터가 기록되어 있는 블록의 정보를 나타낸다. 따라서 해칭으로 표시된 유효한 데이터가 기록되어 있는 블록인 제 0, 2, 3 블록(BL0, BL2, BL3)을 나타낸다. 이때 정보 저장의 비트수를 줄이기 위해 각 블록 사이의 차이값을 기록하며, 이에 따라 1 번째 코드에는 “011”라는 정보가 기록된다.
따라서 이후 읽기 요청에 대해, 블록 매핑 코드부(212)의 1 번째 코드에 기 록된 “011”정보를 이용하여 제 0 블록(BL0), 제 2 블록(BL2), 제 3 블록(BL3)에 유효한 페이지가 있다는 것을 알 수 있게 된다.
또한, 블록 매핑 코드부(212)의 2 번째 정보는 1 번째 정보에서 추출한 유효 페이지의 위치 정보를 나타낸다. 이때, 논리 페이지 번호(Logical Page Number : LPN)가 기입되어 있는 유효한 페이지인 경우는 “0”, 무효 데이터가 저장된 것으로 처리된 페이지(I로 표기)인 경우는 “1”, 연속적으로 데이터가 저장된 경우는 “2”, 빈 페이지인 경우는 3을 기입한다. 이에 따라 2 번째 코드에는“1122 2222 2222”라는 정보가 기록된다.
따라서 이후 읽기 요청에 대해, 블록 매핑 코드부(212)의 2 번째 코드에 기록된 “1122 2222 2222”정보를 이용하여 제 0 블록(BL0)의 1, 2 번째 페이지는 무효한 페이지이고, 제 0 블록(BL0)의 3, 4 번째 페이지, 제 2 블록(BL2)의 1 내지 4 번째 페이지, 제 3 블록(BL3)의 1 내지 4번째 페이지가 유효한 페이지로 LSN이 연속된 페이지가 10개 이어지는 것을 알 수 있다.
마지막으로, 블록 매핑 코드부(212)의 3 번째 정보는 1 번째 정보에서 유효 페이지의 논리적 섹터 번호(Logical Sector Number : LSN) 정보를 나타낸다. 따라서 해칭으로 표시된 유효한 데이터의 값을 기록하며, 이에 따라 3 번째 코드에는 “0”이라는 LSN 정보가 기록된다.
그러므로 이후 읽기 요청에 대해, 블록 매핑 코드부(212)의 3 번째 코드에 기록된 “0”정보를 이용하여 1, 2 번째 코드 정보를 통해 추출된 유효한 페이지 중 제 0 블록(BL0)의 3, 4 번째 페이지부터, 제 2 블록(BL2)의 1 내지 4 번째 페이 지, 제 3 블록(BL3)의 1 내지 4번째 페이지로 LSN 번호가“0”부터 “9”가 10개 연속으로 저장되어 있다는 것을 알 수 있다.
이처럼, 블록 매핑 테이블(211)은 물리 블록 번호, 페이지 상태 및 논리 페이지 번호의 정보를 갖는 블록 매핑 코드로 구현되고 아울러, 블록 매핑 코드부(212)의 3 번째 정보를 처음과 끝 정보만을 적어줌으로 해서 중간에 필요한 LSN 정보를 줄일 수 있게 됨으로써 메모리 사용량을 줄일 수 있다. 이에 따라, 종래에는 메모리의 용량이 커서 블록 매핑 테이블을 모두 메인 메모리상에 로드할 수 없었던 것을, 메모리의 용량이 커지더라도 적은 메모리 용량을 갖도록 블록 매핑 테이블(211)을 구성함으로써, 상기 블록 매핑 테이블(211)을 모두 메인 메모리상에 로드할 수 있다. 따라서 매핑 속도를 더욱 높일 수 있게 된다. 이는 MP3와 같은 용량이 크면서도 연속적으로 이루어지는 데이터인 경우에 더욱 효과적이다.
상기에서 설명한 본 발명의 기술적 사상은 바람직한 실시예에서 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 본 발명의 기술적 분야의 통상의 지식을 가진 자라면 본 발명의 기술적 사상의 범위 내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
이상에서 설명한 바와 같은 본 발명에 따른 FTL의 어드레스 매핑 방법은 다음과 같은 효과가 있다.
첫째, 블록 매핑 코드를 갖는 블록 매핑 테이블을 이용하여 매핑 속도를 높이면서도 메모리 사용량을 작게 사용하는 효과가 있다.
둘째, 종래의 메모리 사용량이 커서 매핑 정보의 일부만을 메모리에 로드하므로 스와핑(swapping)이 발생하던 것을 본 발명에서 메모리 사용량을 줄임에 따라 매핑 정보 테이블을 모두 메인 메모리상에 로드할 수 있어 매핑 속도를 더욱 높일 수 있는 효과가 있다.
셋째, NAND 플래시 메모리를 사용하는 다양한 임베디드 기기의 제어기로 사용이 가능하다.
넷째, MP3와 같은 용량이 크면서도 연속적으로 이루어지는 데이터에서 더욱 효과적이다.

Claims (8)

  1. 호스트를 통해 쓰기 요청에 대한 LSN 번호가 입력되는 단계와,
    상기 입력되는 LSN 번호를 플래시 메모리의 물리적 메모리 영역의 빈 페이지로 차례로 기록되는 단계와,
    동일한 LSN에 수정 요청이 들어오면 기 저장된 플래시 메모리의 페이지는 무효한(invalid) 상태로 변경하고 다음 빈 페이지를 할당 받아서 업데이트 내용을 기록하는 단계와,
    상기 기록된 물리적 메모리 영역 내의 유효한 데이터가 기록된 물리 블록 번호, 상기 유효한 물리 블록 번호내의 페이지 상태 및 유효한 논리 페이지 번호가 기록된 블록 매핑 코드 정보를 블록 매핑 테이블에 저장하는 단계와,
    상기 블록 매핑 테이블을 메인 메모리상에 로드하여 맵핑하는 단계를 포함하는 것을 특징으로 하는 FTL의 어드레스 매핑 방법.
  2. 제 1 항에 있어서, 상기 페이지 상태 정보는
    논리 페이지 번호(Logical Page Number : LPN)가 기입되어 있는 유효한 페이지 정보와, 무효 데이터가 저장된 것으로 처리된 페이지 정보와, 빈 페이지 정보 중 적어도 하나 이상의 정보인 것을 특징으로 하는 FTL의 어드레스 매핑 방법.
  3. 제 2 항에 있어서,
    상기 페이지 상태 정보는 연속적으로 데이터가 저장됨을 나타내는 정보를 더 포함하는 것을 특징으로 하는 FTL의 어드레스 매핑 방법.
  4. 삭제
  5. 호스트를 통해 읽기 요청이 입력되는 단계와,
    블록 매핑 코드에 기록되어 있는 물리 블록 번호 정보를 이용하여 유효한 데이터가 기록된 블록을 검출하는 단계와,
    블록 매핑 코드에 기록되어 있는 페이지 상태 정보를 이용하여 상기 검출된 블록내의 유효한 페이지를 검출하는 단계와,
    블록 매핑 코드에 기록되어 있는 논리 페이지 번호 정보를 이용하여 상기 검출된 유효한 페이지의 논리 페이지 번호를 읽어오는 단계를 포함하여 이루어지는 FTL의 어드레스 매핑 방법.
  6. 제 5 항에 있어서,
    상기 블록 매핑 코드는 물리 블록 번호 정보, 페이지 상태 정보 및 논리 페이지 번호 정보 중 적어도 하나 이상을 갖는 것을 특징으로 하는 FTL의 어드레스 매핑 방법.
  7. 제 5 항에 있어서, 상기 페이지 상태 정보는
    논리 페이지 번호(Logical Page Number : LPN)가 기입되어 있는 유효한 페이지 정보와, 무효 데이터가 저장된 것으로 처리된 페이지 정보와, 빈 페이지 정보 중 적어도 하나 이상인 것을 특징으로 하는 FTL의 어드레스 매핑 방법.
  8. 제 7 항에 있어서,
    상기 페이지 상태 정보는 연속적으로 데이터가 저장됨을 나타내는 정보를 더 포함하는 것을 특징으로 하는 FTL의 어드레스 매핑 방법.
KR1020060129464A 2006-12-18 2006-12-18 Ftl의 어드레스 매핑 방법 KR100845552B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060129464A KR100845552B1 (ko) 2006-12-18 2006-12-18 Ftl의 어드레스 매핑 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060129464A KR100845552B1 (ko) 2006-12-18 2006-12-18 Ftl의 어드레스 매핑 방법

Publications (2)

Publication Number Publication Date
KR20080056491A KR20080056491A (ko) 2008-06-23
KR100845552B1 true KR100845552B1 (ko) 2008-07-10

Family

ID=39802673

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060129464A KR100845552B1 (ko) 2006-12-18 2006-12-18 Ftl의 어드레스 매핑 방법

Country Status (1)

Country Link
KR (1) KR100845552B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678145A (zh) * 2012-09-06 2014-03-26 慧荣科技股份有限公司 数据储存装置与快闪存储器控制方法
US9355028B2 (en) 2012-05-30 2016-05-31 Silicon Motion, Inc. Data-storage device and flash memory control method
US11567864B2 (en) 2014-12-15 2023-01-31 Samsung Electronics Co., Ltd. Operating method of storage device

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100941423B1 (ko) * 2008-02-21 2010-02-11 인하대학교 산학협력단 메모리의 페이지 할당 방법 및 이를 수행하기 위한프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체
KR101594029B1 (ko) 2009-07-06 2016-02-16 삼성전자주식회사 데이터 조작 방법 및 그 방법을 이용하는 시스템 장치
KR101638061B1 (ko) 2009-10-27 2016-07-08 삼성전자주식회사 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법
KR101257691B1 (ko) 2011-08-12 2013-04-24 아주대학교산학협력단 메모리 컨트롤러 및 이의 데이터 관리방법
KR101519069B1 (ko) * 2013-12-03 2015-05-12 에스케이텔레콤 주식회사 메모리장치 및 메모리장치의 동작 방법
US10860228B1 (en) * 2019-06-24 2020-12-08 Western Digital Technologies, Inc. Method to switch between traditional SSD and open-channel SSD without data loss

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
KR20040034580A (ko) * 2001-09-28 2004-04-28 엠-시스템스 플래쉬 디스크 파이오니어스 리미티드 순차적 기록만을 사용하는 플래시 관리 시스템
KR20060090087A (ko) * 2005-02-07 2006-08-10 삼성전자주식회사 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
KR20040034580A (ko) * 2001-09-28 2004-04-28 엠-시스템스 플래쉬 디스크 파이오니어스 리미티드 순차적 기록만을 사용하는 플래시 관리 시스템
KR20060090087A (ko) * 2005-02-07 2006-08-10 삼성전자주식회사 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9355028B2 (en) 2012-05-30 2016-05-31 Silicon Motion, Inc. Data-storage device and flash memory control method
CN103678145A (zh) * 2012-09-06 2014-03-26 慧荣科技股份有限公司 数据储存装置与快闪存储器控制方法
US11567864B2 (en) 2014-12-15 2023-01-31 Samsung Electronics Co., Ltd. Operating method of storage device

Also Published As

Publication number Publication date
KR20080056491A (ko) 2008-06-23

Similar Documents

Publication Publication Date Title
US10997065B2 (en) Memory system and operating method thereof
KR100845552B1 (ko) Ftl의 어드레스 매핑 방법
US8180955B2 (en) Computing systems and methods for managing flash memory device
KR100684887B1 (ko) 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
KR100771519B1 (ko) 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
US8117374B2 (en) Flash memory control devices that support multiple memory mapping schemes and methods of operating same
KR100706242B1 (ko) 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법
US8364884B2 (en) Memory system with a memory controller controlling parallelism of driving memories
TWI474324B (zh) 平均讀寫記憶元件的方法及記憶體系統
US8364931B2 (en) Memory system and mapping methods using a random write page mapping table
JP5728672B2 (ja) ハイブリッドメモリ管理
US9753847B2 (en) Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US8055873B2 (en) Data writing method for flash memory, and controller and system using the same
US7386700B2 (en) Virtual-to-physical address translation in a flash file system
US8694748B2 (en) Data merging method for non-volatile memory module, and memory controller and memory storage device using the same
KR20100094241A (ko) 예비 블록을 포함하지 않는 불휘발성 메모리 장치
US20140223075A1 (en) Physical-to-logical address map to speed up a recycle operation in a solid state drive
US20100318726A1 (en) Memory system and memory system managing method
US8429339B2 (en) Storage device utilizing free pages in compressed blocks
US9378130B2 (en) Data writing method, and memory controller and memory storage apparatus using the same
JP4558054B2 (ja) メモリシステム
KR101027687B1 (ko) 라이트 동작을 제어하는 반도체 스토리지 시스템 및 그 제어 방법
KR100780963B1 (ko) 메모리 카드 및 메모리 카드의 구동 방법
US9830077B2 (en) Data writing method, memory control circuit unit and memory storage apparatus
KR101437091B1 (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: 20130619

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140611

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150623

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160628

Year of fee payment: 9