KR101437091B1 - 비대칭 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법 - Google Patents

비대칭 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법 Download PDF

Info

Publication number
KR101437091B1
KR101437091B1 KR1020080056871A KR20080056871A KR101437091B1 KR 101437091 B1 KR101437091 B1 KR 101437091B1 KR 1020080056871 A KR1020080056871 A KR 1020080056871A KR 20080056871 A KR20080056871 A KR 20080056871A KR 101437091 B1 KR101437091 B1 KR 101437091B1
Authority
KR
South Korea
Prior art keywords
block
data
page
data block
log
Prior art date
Application number
KR1020080056871A
Other languages
English (en)
Other versions
KR20090131086A (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 KR1020080056871A priority Critical patent/KR101437091B1/ko
Priority to US12/457,485 priority patent/US8027194B2/en
Priority to CN200910205766.2A priority patent/CN101673581B/zh
Publication of KR20090131086A publication Critical patent/KR20090131086A/ko
Priority to US13/137,401 priority patent/US8565021B2/en
Priority to US13/137,409 priority patent/US8638585B2/en
Priority to US13/137,424 priority patent/US8705272B2/en
Priority to US13/137,423 priority patent/US8760918B2/en
Priority to US13/137,422 priority patent/US8614919B2/en
Priority to US13/137,425 priority patent/US8625344B2/en
Application granted granted Critical
Publication of KR101437091B1 publication Critical patent/KR101437091B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication

Abstract

본 발명은 메모리 시스템에 관한 것으로, 더욱 상세하게는 비대칭 맵핑 동작을 수행하는 메모리 시스템 및 그것의 어드레스 맵핑 방법에 관한 것이다.
본 발명에 따른 메모리 시스템은 파일 시스템; 각각이 제 1 및 제 2 페이지 영역으로 구분된 복수의 데이터 블록을 포함하는 플래시 메모리; 및 상기 파일 시스템과 상기 플래시 메모리 사이의 어드레스 맵핑 동작을 관리하기 위한 플래시 변환 레이어를 포함하되, 상기 플래시 변환 레이어는 상기 제 1 페이지 영역에 저장된 데이터의 갱신을 위해 상기 제 2 페이지 영역을 남겨둔다.
본 발명에 따른 메모리 시스템은 비대칭 맵핑 방법을 사용함으로써, 로그 블록의 페이지 이용률을 높일 수 있다. 또한, 본 발명은 병합 연산 및 블록 소거 횟수를 줄일 수 있다. 결국, 메모리 시스템의 성능 및 수명이 증가된다.

Description

비대칭 맵핑 동작을 수행하는 메모리 시스템 및 그것의 어드레스 맵핑 방법{MEMORY SYSTEM PERFORMING ASYMMETRIC MAPPING OPERATION AND ADDRESS MAPPING METHOD THEREOF}
본 발명은 메모리 시스템에 관한 것으로, 더욱 상세하게는 비대칭 맵핑 동작을 수행하는 메모리 시스템 및 그것의 어드레스 맵핑 방법에 관한 것이다.
최근 디지털 카메라, MP3 플레이어, 핸드폰, PDA 등과 같은 휴대용 전자 장치가 많이 사용되고 있다. 이러한 휴대용 전자 장치에는 플래시 메모리가 주로 사용되고 있다. 이는 플래시 메모리가 저전력 및 고집적 등의 특성을 갖는 비휘발성 소자이기 때문이다.
그러나 플래시 메모리는 데이터 덮어쓰기(overwrite)가 가능한 하드 디스크와 달리, 데이터 덮어쓰기가 자유롭지 못하다. 플래시 메모리에 데이터를 덮어쓰기 위해서는 데이터를 쓰기 전에 지워야 한다. 이를 쓰기 전 소거 동작(erase-before-write)이라 한다. 즉, 플래시 메모리는 데이터를 쓰기 전에, 초기 상태 또는 소거 상태로 되돌려 놓아야 한다.
플래시 메모리의 소거 동작은 일반적으로 쓰기 동작에 비해 매우 긴 시간이 소요된다. 또한, 플래시 메모리의 소거 단위는 쓰기 단위보다 훨씬 큰 블록 단위로 수행되기 때문에, 소거되지 않아도 되는 부분까지 함께 지워지는 결과를 초래할 수 있다. 원치않게 지워진 부분은 다시 쓰기 동작을 통해 복원해야 한다.
이와 같이 플래시 메모리는 소거와 쓰기 동작의 단위가 일치하지 않기 때문에, 쓰기 동작의 수행 성능은 읽기 동작에 비해 떨어진다. 또한, 플래시 메모리는 동일한 블록에 대해 10만 번 정도의 소거 동작을 수행하면, 더 이상 사용할 수 없게 된다. 플래시 메모리는 특정 블록에 대해 소거 동작이 반복되는 것을 피하기 위해 웨어 레벨링(wear leveling) 동작을 수행한다.
플래시 변환 레이어(FTL; Flash Translation Layer)는 플래시 메모리의 이러한 단점들을 극복하고, 플래시 메모리를 효율적으로 관리하기 위한 소프트웨어이다. 플래시 변환 레이어(FTL)는 파일 시스템(File System)으로부터 논리 어드레스(LA; Logical Address)를 입력받고, 이를 물리 어드레스(PA; Physical Address)로 변환한다. 여기에서, 물리 어드레스(PA)는 실제 플래시 메모리 내부에서 사용되는 어드레스이다.
플래시 변환 레이어(FTL)는 위와 같은 어드레스 맵핑 동작을 관리하기 위해 어드레스 맵핑 테이블(Address Mapping Table)을 가지고 있다. 어드레스 맵핑 테이블은 주로 랜덤 액세스 메모리(RAM)에 상에서 구동된다. 어드레스 맵핑 테이블에는 논리 어드레스(Logical Address) 및 이에 대응하는 물리 어드레스(Physical Address)가 기록되어 있다. 어드레스 맵핑 테이블은 맵핑 단위에 따라 그 크기가 달라질 수 있으며, 맵핑 단위에 따라 다양한 맵핑 방법을 갖는다.
대표적인 맵핑 방법으로, 페이지 맵핑 방법(page mapping method), 블록 맵핑 방법(block mapping method), 그리고 혼합 맵핑 방법(hybrid mapping method) 등이 있다. 페이지 맵핑 방법에는 페이지 맵핑 테이블이 사용된다. 페이지 맵핑 테이블은 페이지 단위로 맵핑 동작을 수행하기 위한 것이며, 논리 페이지 및 이에 대응하는 물리 페이지를 저장한다. 블록 맵핑 방법에는 블록 맵핑 테이블이 사용된다. 블록 맵핑 테이블은 블록 단위로 맵핑 동작을 수행하기 위한 것이며, 논리 블록 및 이에 대응하는 물리 블록을 저장한다. 혼합 맵핑 방법은 페이지 맵핑 방법과 블록 맵핑 방법을 동시에 사용하는 방법이다.
일반적으로 하나의 메모리 블록은 수십 또는 수백 개의 페이지로 구성된다. 따라서 페이지 맵핑 방법을 사용할 경우에, 맵핑 테이블의 크기는 블록 맵핑 방법을 사용할 때보다 수십 배 또는 수백 배 증가하게 된다. 즉, 페이지 맵핑 방법은 맵핑 테이블을 사용하는 데 너무 많은 메모리 공간을 필요로 한다는 단점을 갖는다.
블록 맵핑 방법은 블록 단위로 맵핑 동작을 수행하기 때문에, 페이지 맵핑 방법에 비해 맵핑 테이블의 크기를 줄일 수 있는 장점을 갖는다. 그러나 블록 맵핑 방법에 의하면, 블록 내에 쓰일 페이지의 위치가 고정되기 때문에, 많은 병합(merge) 연산을 수행해야 한다는 단점을 갖는다.
혼합 맵핑 방법은 로그 블록(log block)에 대해서는 페이지 맵핑 방법을 사용하고, 데이터 블록(data block)에 대해서는 블록 맵핑 방법을 사용한다. 혼합 맵핑 방법은 두 가지 맵핑 방법을 모두 사용함으로, 맵핑 테이블의 크기를 줄임과 동 시에, 병합 연산의 횟수를 줄일 수 있다.
혼합 맵핑 방법에 의하면, 하나 또는 그 이상의 로그 블록은 하나의 데이터 블록에 할당된다. 병합 동작은 로그 블록의 페이지 중에서 일부만 사용한 경우에도 발생할 수 있다. 예를 들어, 로그 블록의 페이지 수가 네 개라고 가정할 때, 세 개 또는 두 개의 페이지가 사용된 상태에서 병합 동작이 일어날 수 있다. 최악의 경우에는 하나의 페이지만 사용된 상태에서도 병합 동작이 일어날 수 있다. 이러한 경우에, 로그 블록의 페이지 이용률은 줄어들게 된다. 로그 블록의 낮은 페이지 이용률은 메모리 시스템의 성능을 저하하는 요인이 되고 있다.
본 발명은 상술한 기술적 과제를 해결하기 위해 제안된 것으로, 본 발명의 목적은 페이지 복사 및 블록 소거 동작을 줄일 수 있고, 로그 블록의 페이지 이용률을 높일 수 있는 메모리 시스템 및 그것의 어드레스 맵핑 방법을 제공하는 데 있다.
본 발명에 따른 메모리 시스템은 파일 시스템; 각각이 제 1 및 제 2 페이지 영역으로 구분된 복수의 데이터 블록을 포함하는 플래시 메모리; 및 상기 파일 시스템과 상기 플래시 메모리 사이의 어드레스 맵핑 동작을 관리하기 위한 플래시 변환 레이어를 포함하되, 상기 플래시 변환 레이어는 상기 제 1 페이지 영역에 저장된 데이터의 갱신을 위해 상기 제 2 페이지 영역을 남겨두는 것을 특징으로 한다.
실시 예로서, 상기 플래시 메모리는 각각이 복수의 페이지로 구성된 복수의 로그 블록을 더 포함하고, 상기 로그 블록은 데이터 블록에 할당되어 상기 데이터 블록에 저장된 데이터의 갱신을 위해 사용된다. 상기 플래시 변환 레이어는 상기 데이터 블록에 저장될 데이터의 패턴에 따라 상기 로그 블록을 상기 데이터 블록에 할당할지 여부를 결정한다. 상기 플래시 변환 레이어는 상기 데이터 블록에 저장될 데이터의 패턴이 랜덤 쓰기인 경우, 상기 제 1 페이지 영역에 저장된 데이터의 갱신을 위해 상기 제 2 페이지 영역을 사용한다. 상기 플래시 변환 레이어는 상기 제 2 페이지 영역이 이미 사용된 경우, 상기 로그 블록을 상기 데이터 블록에 할당한다. 상기 플래시 변환 레이어는 상기 데이터 블록에 저장될 데이터의 패턴이 순차 쓰기인 경우, 상기 로그 블록을 상기 데이터 블록에 할당한다.
다른 실시 예로서, 상기 플래시 변환 계층은 자유 블록이 부족한 경우, 상기 데이터 블록 및 상기 로그 블록을 병합한다. 상기 병합 동작은 단순 병합 동작 또는 스왑 병합 동작 또는 복사 병합 동작인 것을 특징으로 한다. 상기 플래시 변환 레이어는 상기 데이터 블록과 상기 데이터 블록에 할당된 로그 블록 사이의 어드레스 맵핑 동작을 관리하기 위한 페이지 맵핑 테이블을 갖는다.
본 발명에 따른 메모리 시스템의 어드레스 맵핑 방법은 파일 시스템으로부터 논리 어드레스를 입력받는 단계; 및 상기 논리 어드레스에 따라 데이터 블록을 선택하는 단계를 포함하고, 상기 데이터 블록은 제 1 및 제 2 페이지 영역으로 구분되고, 상기 제 2 페이지 영역은 상기 제 1 페이지 영역에 저장된 데이터의 갱신을 위해 남겨진다.
실시 예로서, 상기 데이터 블록에 저장된 데이터의 갱신을 위해 로그 블록을 할당하는 단계를 더 포함한다. 상기 데이터 블록에 저장될 데이터의 패턴에 따라 상기 로그 블록이 상기 데이터 블록에 할당될지 여부가 결정된다. 상기 데이터 블록에 저장될 데이터의 패턴이 랜덤 쓰기인 경우, 상기 제 1 페이지 영역에 저장된 데이터의 갱신을 위해 상기 제 2 페이지 영역이 사용된다. 상기 제 2 페이지 영역이 이미 사용된 경우, 상기 로그 블록이 상기 데이터 블록에 할당된다. 상기 데이터 블록에 저장될 데이터의 패턴이 순차 쓰기인 경우, 상기 로그 블록이 상기 데이터 블록에 할당된다.
본 발명에 따른 메모리 시스템은 비대칭 맵핑 방법을 사용함으로써, 로그 블록의 페이지 이용률을 높일 수 있다. 또한, 본 발명은 병합 연산 및 블록 소거 횟수를 줄일 수 있다. 결국, 메모리 시스템의 성능 및 수명이 증가된다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 바람직한 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
도 1은 플래시 메모리를 사용하는 메모리 시스템의 하드웨어 구조를 보여주는 블록도이다. 도 1을 참조하면, 메모리 시스템(100)은 중앙처리장치(110), 랜덤 액세스 메모리(120), 그리고 플래시 메모리(130)를 포함한다.
플래시 메모리(130)는 당업자에게 잘 알려진 바와 같이, 스트링 구조(string structure)를 갖는 복수의 메모리 셀로 구성된다. 메모리 셀들의 집합은 보통 셀 어레이(cell array)라고 한다. 플래시 메모리(130)의 셀 어레이는 복수의 메모리 블록(memory block)으로 구성된다. 각각의 메모리 블록은 복수의 페이지(page)로 구성된다. 각각의 페이지는 하나의 워드 라인을 공유하는 복수의 메모리 셀로 구성된다.
플래시 메모리(130)는 읽기 및 쓰기 동작의 단위와 소거 동작의 단위가 다르다. 즉, 플래시 메모리(130)는 메모리 블록 단위로 소거 동작을 수행하고, 페이지 단위로 읽기 또는 쓰기 동작을 수행한다. 또한, 플래시 메모리(130)는 다른 반도체 메모리와 달리 덮어쓰기(overwrite)를 지원하지 않는다. 따라서 플래시 메모리(130)는 쓰기 동작 전에 소거 동작을 수행한다.
플래시 메모리(130)의 이와 같은 특성으로 인해, 플래시 메모리(130)를 하드 디스크처럼 사용하기 위해서는, 읽기/쓰기/소거 동작에 대한 별도의 관리가 필요하다. 플래시 변환 레이어(FTL; Flash Translation Layer)는 이러한 목적으로 개발된 시스템 소프트웨어이다. 플래시 변환 레이어(FTL)는 랜덤 액세스 메모리(120) 상에서 구동된다.
도 2는 도 1에 도시된 메모리 시스템의 소프트웨어 구조를 보여주는 블록도이다. 도 2를 참조하면, 메모리 시스템은 애플리케이션(205), 파일 시스템(210), 플래시 변환 레이어(220), 그리고 플래시 메모리(230) 순으로 소프트웨어 계층 구조를 갖는다.
플래시 변환 레이어(220)는 애플리케이션(205) 또는 파일 시스템(210)으로부 터 논리 어드레스(LA; Logical Address)를 입력받는다. 플래시 변환 레이어(220)는 논리 어드레스(LA)를 입력받고, 이를 물리 어드레스(PA; Physical Address)로 변환한다. 물리 어드레스(PA)는 플래시 메모리(230)로 제공된다. 플래시 변환 레이어(220)는 어드레스 변환을 위해 어드레스 맵핑 테이블(Address Mapping Table)을 갖는다. 어드레스 맵핑 테이블은 도 1에 도시된 랜덤 액세스 메모리(120) 상에서 구동된다.
플래시 변환 레이어(220)의 어드레스 맵핑 방법에는 맵핑 단위에 따라 여러 가지가 있다. 대표적인 어드레스 맵핑 방법에는 페이지 맵핑 방법(page mapping method), 블록 맵핑 방법(block mapping method), 그리고 혼합 맵핑 방법(hybrid mapping method)이 있다.
페이지 맵핑 방법은 페이지 단위로 어드레스 맵핑 동작을 수행한다. 페이지 맵핑 방법에 의하면, 페이지 단위로 어드레스 변환 동작이 수행되므로, 후에 페이지 정렬을 위한 병합 동작을 요하지 않는 장점이 있다. 반면에, 페이지 맵핑 방법은 큰 사이즈의 어드레스 맵핑 테이블을 필요로 한다. 즉, 페이지 맵핑 방법을 사용하기 위해서는 용량이 큰 랜덤 액세스 메모리(120)가 필요하다. 이와 같이 페이지 맵핑 방법은 병합 동작을 수행하지 않아도 되는 장점을 갖는 반면에, 페이지 맵핑 테이블을 위해 용량이 큰 메모리를 필요로 하는 단점을 갖는다.
블록 맵핑 방법은 메모리 블록 단위로 어드레스 맵핑 동작을 수행한다. 블록 맵핑 방법은 페이지 맵핑 방법에 비해 메모리 사이즈를 줄일 수 있는 장점을 갖는다. 반면에, 블록 맵핑 방법은 페이지 정렬을 위해 많은 수의 병합 연산을 수행해 야 하는 단점을 갖는다. 혼합 맵핑 방법은 페이지 맵핑 방법과 블록 맵핑 방법을 모두 사용함으로, 맵핑 테이블의 크기를 줄임과 동시에, 병합 연산의 횟수를 줄이기 위한 방법이다. 혼합 맵핑 방법은 이하에서 상세히 설명된다.
도 3은 도 2에 도시된 메모리 시스템의 혼합 맵핑 방법을 보여주기 위한 블록도이다. 도 3을 참조하면, 메모리 시스템(300)은 파일 시스템(310), 플래시 변환 레이어(320), 그리고 플래시 메모리(330)를 포함한다. 플래시 변환 레이어(320)는 파일 시스템(310)으로부터 논리 어드레스(LA)를 입력받고, 맵핑 테이블을 사용하여 물리 어드레스(PA)로 변환한다.
도 3을 참조하면, 플래시 변환 레이어(320)는 블록 맵핑 테이블(321) 및 페이지 맵핑 테이블(322)을 갖는다. 블록 맵핑 테이블(321)은 논리 블록 번호(LBN)를 물리 블록 번호(PBN)로 변환하기 위한 것이다. 페이지 맵핑 테이블(322)은 데이터 블록과 로그 블록의 페이지 맵핑을 위한 것이다.
계속해서 도 3을 참조하면, 플래시 메모리(330)는 데이터 영역(331), 로그 영역(332), 자유 영역(333), 그리고 메타 영역(334)을 포함한다. 데이터 영역(331)은 복수의 데이터 블록으로 구성되며, 사용자 데이터를 저장한다. 로그 영역(332)은 하나 또는 그 이상의 로그 블록으로 구성된다. 로그 블록(332)은 특정 데이터 블록에 할당된다.
데이터를 쓰고자 하는 경우, 데이터는 먼저 데이터 블록에 쓰인 후에 할당된 로그 블록에 쓰여 진다. 그 다음에, 병합(merge) 동작을 통해, 로그 블록의 유효한 페이지와 데이터 블록의 유효한 페이지는 새로운 데이터 블록으로 복사된다.
자유 영역(333)은 복수의 자유 블록으로 구성된다. 자유 블록은 로그 블록의 부족이 발생할 때 로그 블록으로 변환된다. 한편, 병합 동작 후에 소거된 데이터 블록 또는 로그 블록은 자유 블록으로 변환된다. 이와 같이 어느 하나의 메모리 블록은 병합 동작에 의해 데이터 블록, 로그 블록, 자유 블록으로 변환될 수 있다. 병합 동작에 따른 맵핑 정보의 변경은 메타 영역(334)에 저장된다.
도 4는 메모리 시스템의 일반적인 맵핑 방법을 설명하기 위한 개념도이다. 도 4를 참조하면, 플래시 메모리(도 3 참조, 330)는 데이터 블록들로 구성된 데이터 영역(data area), 로그 블록들로 구성된 로그 영역(log area), 그리고 자유 블록들로 구성된 자유 영역(free area)을 갖는다.
데이터 영역(data area)은 DB 100, …, DB 109의 물리 블록 번호(PBN; Physical Block Number)를 갖는 데이터 블록들로 구성된다. 로그 영역(log area)은 LB 200, LB 201, LB 202의 물리 블록 번호(PBN)를 갖는 로그 블록들로 구성된다. 자유 영역(free area)은 최대 3개의 물리 블록을 포함할 수 있다. 도시된 바와 같이, 모든 물리 블록들이 로그 블록으로 할당되었기 때문에 자유 영역은 비어 있다. 로그 블록 200(LB 200)은 데이터 블록 101(DB 101)에 할당되어 있고, 로그 블록 201(LB 201)은 데이터 블록 104(DB 104)에 할당되어 있고, 로그 블록 202(LB 202)는 데이터 블록 108(DB 108)에 할당되어 있다.
파일 시스템(도 3 참조, 310)이 데이터 쓰기 요청(write request)을 하면, 플래시 변환 레이어(도 3 참조, 320)는 해당 데이터 블록에 할당된 로그 블록이 있는지를 검사한다. 해당 데이터 블록에 할당된 로그 블록이 있으면, 할당된 로그 블 록이 사용된다. 그러나 해당 데이터 블록에 할당된 로그 블록이 없으면, 해당 데이터 블록은 자유 블록으로부터 새로운 로그 블록을 할당받는다.
다시 도 4를 참조하면, 데이터 블록 101(DB 101)의 논리 페이지 1(page 1)을 저장하기 위해 로그 블록 200(LB 200)의 물리 페이지 0(PPN 0)이 사용된다. 데이터 블록 101(DB 101)의 물리 페이지 1(PPN 1)은 무효화된다. 또한, 데이터 블록 104(DB 104)의 논리 페이지 2 및 0(page 2, 0)을 저장하기 위해 로그 블록 201(LB 201)의 물리 페이지 0 및 1(PPN 0, 1)이 각각 사용된다. 데이터 블록 104(DB 104)의 물리 페이지 0 및 2(PPN 0, 2)는 무효화된다. 마지막으로, 데이터 블록 108(DB 108)의 논리 페이지 0(page 0)을 저장하기 위해 로그 블록 202(LB 202)의 물리 페이지 0(PPN 0)이 사용된다. 데이터 블록 108(DB 108)의 물리 페이지 0(PPN 0)은 무효화된다.
도 5(a) 및 도 5(b)는 도 4에 도시된 데이터 블록과 로그 블록의 페이지 맵핑 관계를 예시적으로 보여준다. 도 5(a)를 참조하면 로그 블록 201(LB 201)은 데이터 블록 104(DB 104)에 할당되어 있다. 데이터 블록 104(DB 104)와 로그 블록 201(LB 201)은 각각 4개의 물리 페이지(page 0 ~ page 3)로 구성되어 있다. 도 5에 도시된 물리 페이지 번호(PPN)는 각각의 메모리 블록의 페이지 순서를 의미한다.
플래시 변환 레이어(도 3 참조, 320)는 쓰기 요청(write request)에 응답하여, 데이터 블록 104(DB 104)에 저장된 논리 페이지들에 대해 쓰기 동작을 수행한다. 도 5(a)를 참조하면, 파일 시스템(도 3 참조, 310)은 논리 페이지 2(page 2) 및 논리 페이지 0(page 0) 순서로 쓰기 요청을 하고 있다. 여기에서, 논리 페이지 2(page 2)는 데이터 블록 104(DB 104)의 물리 페이지 2(PPN2)에 저장되어 있고, 논리 페이지 0(page 0)은 데이터 블록 104(DB 104)의 물리 페이지 0(PPN 0)에 저장되어 있다.
논리 페이지 2(page 2)에 대한 쓰기 요청이 입력되면, 로그 블록 201(LB 201)의 물리 페이지 0(PPN 0)에 대한 쓰기 동작이 수행된다. 데이터 블록 104(DB 104)의 물리 페이지 2(PPN 2)는 무효화된다. 다음으로, 논리 페이지 0(page 0)에 대한 쓰기 요청이 들어오면, 로그 블록 201(LB 201)의 물리 페이지 1(PPN 1)에 대한 쓰기 동작이 수행된다. 데이터 블록 104(DB 104)의 물리 페이지 0(PPN 0)은 무효화된다.
도 5(b)는 데이터 블록과 로그 블록의 페이지 대응 관계를 보여주는 맵핑 테이블이다. 도 5(b)를 참조하면, 데이터 블록 104(DB 104)의 논리 페이지 2(page 2)는 로그 블록 201(LB 201)의 물리 페이지 0(PPN 0)에 저장되고, 데이터 블록 104(DB 104)의 논리 페이지 0(page 0)은 로그 블록 201(LB 201)의 물리 페이지 1(PPN 1)에 저장됨을 알 수 있다.
그런데, 로그 블록이 부족한 경우, 로그 블록을 자유 블록으로 만들어야 한다. 예를 들어, 도 4에서 데이터 블록 102(DB 102)의 논리 페이지 0(page 0)을 저장하기 위해서는 새로운 로그 블록이 데이터 블록 102(DB 102)에 할당되어야 한다. 그런데, 로그 블록으로 할당될 자유 블록이 없는 경우, 로그 블록을 자유 블록으로 만들어야 할 필요가 생긴다.
도 6은 데이터 블록과 로그 블록을 병합하여 새로운 데이터 블록을 생성하는 방법을 설명하기 위한 도면이다. 도 6을 참조하면, 로그 블록 201(LB 201)의 물리 페이지 0, 1(PPN 0, 1)에 각각 저장된 논리 페이지 2, 0(page 2, 0)과 데이터 블록 104(DB 104)의 물리 페이지 1, 3(PPN 1, 3)에 각각 저장된 논리 페이지 1, 3(page 1, 3)은 새로운 데이터 블록 110(DB 100)으로 복사된다.
먼저, 로그 블록 201(LB 201)의 논리 페이지 0(page 0)이 새로운 데이터 블록 110(DB 100)의 물리 페이지 0(PPN 0)에 복사된다. 다음에, 데이터 블록 104(DB 104)의 논리 페이지 1(page 1)이 새로운 데이터 블록 110(DB 100)의 물리 페이지 1(PPN 1)에 복사된다. 다음에, 로그 블록 201(LB 201)의 논리 페이지 2(page 2)가 새로운 데이터 블록 110(DB 100)의 물리 페이지 2(PPN2)에 복사된다. 다음에, 데이터 블록 104(DB 104)의 논리 페이지 3(page 3)이 새로운 데이터 블록 110(DB 100)의 물리 페이지 3(PPN 3)(PPN3)에 복사된다. 다음에, 로그 블록 201(LB 201) 및 데이터 블록 104(DB 104)은 소거되어 자유 블록으로 전환된다.
도 6에 도시된 맵핑 방법에 의하면, 로그 블록 201(LB 201)과 데이터 블록 104(DB 104)의 유효한 페이지들(valid pages)은 병합 동작에 의해 새로운 데이터 블록 110(DB 100)으로 복사된다. 새로운 데이터 블록 110(DB 100)에는 논리 페이지 0(page 0)부터 논리 페이지 3까지 순차적으로 쓰여 진다. 하나의 블록에 논리 페이지 0(page 0)부터 순차적으로 쓰여 지는 것을 순차 위치 방식(in-place order)라고 한다. 반면에, 하나의 블록에 논리 페이지들이 임의로 쓰여 지는 것을 임의 위치 방식(out-of-place order 또는 random-place order)라고 한다.
쓰기 요청이 논리 페이지 0(page 0) 부터 논리 페이지 3(page 3) 순서이면, 이들 논리 페이지는 로그 블록 300(LB 300)의 제 0 내지 제 3 물리 페이지(page 0 ~ page 3)에 순차적으로 쓰여 진다. 로그 블록 300(LB 300)에 쓰인 페이지들은 별도의 페이지 복사 없이 곧바로 데이터 블록으로 등록될 수 있다. 이것은 로그 블록 300(LB 300)이 순차 위치 방식(in-place order)에 맞게 페이지를 배열하고 있기 때문이다.
그러나 쓰기 요청이 임의적일 때에는, 논리 페이지의 순서를 맞추기 위한 페이지 복사 과정이 반드시 필요하게 된다. 도 6의 예에서는, 4번의 페이지 복사 과정이 필요하다. 또한, 페이지 복사 후에는 로그 블록 201(LB 201)과 데이터 블록 104(DB 104)에 대한 2번의 소거 동작이 필요하다. 이와 같이, 도 4에 도시된 맵핑 방법은 페이지 순서를 맞추기 위해 많은 수의 페이지 복사 과정이 필요하다. 또한, 페이지 복사 후에는 로그 블록(LB)과 데이터 블록(DB)을 소거하기 위해 두 번의 블록 소거 동작이 필요하다. 페이지 복사 동작과 블록 소거 동작은 메모리 시스템의 속도를 저하시킨다.
한편, 도 6에서 로그 블록 201(LB 201)은 네 개의 페이지 중에서 두 개만을 사용하고, 병합 동작에 의해 자유 블록으로 변환된다. 경우에 따라서는, 로그 블록 201(LB 201)의 페이지들 중에서 하나만을 사용한 다음에, 자유 블록으로 변환될 수 있다. 이와 같이 도 5에 도시된 1:2 맵핑 방법에 의하면, 로그 블록을 빈번히 자유 블록으로 변환해야 한다. 병합 동작은 메모리 시스템의 성능 감소의 원인이 되고 있다.
도 7은 본 발명에 따른 메모리 시스템의 비대칭 맵핑 방법을 설명하기 위한 개념도이다. 도 7을 참조하면, 플래시 메모리(도 3 참조, 330)는 데이터 블록들로 구성된 데이터 영역(data area), 로그 블록들로 구성된 로그 영역(log area), 그리고 자유 블록들로 구성된 자유 영역(free area)을 갖는다.
데이터 영역(data area)은 DB 100, …, DB 109의 물리 블록 번호(PBN; Physical Block Number)를 갖는 데이터 블록들로 구성된다. 로그 영역(log area)은 데이터 블록들에 할당된 로그 블록이 없기 때문에 비어 있다. 자유 영역(free area)은 최대 3개의 물리 블록을 포함할 수 있다. 도시된 바와 같이, 데이터 블록에 할당된 로그 블록이 없기 때문에 자유 영역은 세 개의 자유 블록들(FB 300, FB 301, FB 302)을 포함한다.
본 발명에 따른 실시 예에 있어서, 데이터 블록의 일부 물리 페이지가 빈 물리 페이지로 유지된다. 예를 들어 데이터 블록 100의 물리 페이지 0 내지 2(PPN 0 ~PPN 2)에 순차적으로 데이터가 저장된 후에 다음 데이터 블록 101(DB 101)의 물리 페이지 0(PPN 0)에 데이터가 저장된다. 후술 될 바와 같이, 빈 물리 페이지는 데이터 블록 내의 다른 물리 페이지를 저장하기 위해 사용된다.
파일 시스템(도 3 참조, 310)이 데이터 쓰기 요청(write request)을 하면, 플래시 변환 레이어(도 3 참조, 320)는 해당 데이터 블록에 빈 물리 페이지가 있는지를 검사한다. 해당 데이터 블록에 빈 물리 페이지가 있으면, 빈 물리 페이지에 데이터가 저장된다. 그러나 해당 데이터 블록에 빈 물리 페이지가 없으면, 해당 데이터 블록은 자유 블록으로부터 새로운 로그 블록을 할당받는다. 만약 사용 가능한 자유 블록이 없는 경우에는 병합 동작이 수행될 것이다.
만약, 파일 시스템이 데이터 블록 101(DB 101)의 논리 페이지 1(page 1)에 대한 쓰기 요청을 하는 경우, 플래시 변환 레이어(도 3 참조, 320)는 쓰기 요청(write request)에 응답하여, 데이터 블록 101(DB 101)에 빈 물리 페이지가 있는지 여부를 검출한다. 도 7을 참조하면, 데이터 블록 101(DB 101)에 빈 물리 페이지가 있기 때문에 논리 페이지 1(page 1)은 물리 페이지 3(PPN 3)에 저장된다. 그리고, 물리 페이지 1(PPN 1)은 무효화된다.
또한, 파일 시스템이 데이터 블록 104(DB 104)의 논리 페이지 2(page 2)에 대한 쓰기 요청을 하는 경우, 플래시 변환 레이어(도 3 참조, 320)는 쓰기 요청(write request)에 응답하여, 데이터 블록 104(DB 104)에 빈 물리 페이지가 있는지 여부를 검출한다. 도 7을 참조하면, 데이터 블록 104(DB 104)에 빈 물리 페이지가 있기 때문에 논리 페이지 2(page 2)는 물리 페이지 3(PPN 3)에 저장된다. 그리고, 물리 페이지 2(PPN 2)는 무효화된다.
마지막으로, 파일 시스템이 데이터 블록 108(DB 108)의 논리 페이지 0(page 0)에 대한 쓰기 요청을 하는 경우, 플래시 변환 레이어(도 3 참조, 320)는 쓰기 요청(write request)에 응답하여, 데이터 블록 108(DB 108)에 빈 물리 페이지가 있는지 여부를 검출한다. 도 7을 참조하면, 데이터 블록 108(DB 108)에 빈 물리 페이지가 있기 때문에 논리 페이지 0(page 0)은 물리 페이지 3(PPN 3)에 저장된다. 그리고, 물리 페이지 0(PPN 0)은 무효화된다.
상술한 바와 같이, 데이터 블록에 여분의 물리 페이지를 구비함으로써 병합 동작의 실행 횟수를 줄일 수 있다. 도 7을 참조하면, 데이터 블록 101, 104 및 108(DB 101, 104, 108)이 빈 물리 페이지를 구비함으로써 병합 동작을 수행함이 없이 논리 페이지를 저장할 수 있다. 이는 메모리 시스템의 성능을 향상시킨다.
일반적으로 병합 동작에 걸리는 시간은 페이지 복사에 걸리는 시간보다 수십 배 이상이다. 데이터 블록이 하나의 빈 물리 페이지를 구비하는 경우의 병합 동작 수행 횟수는 빈 물리 페이지를 구비하지 않은 경우의 절반이다. 즉, 하나의 빈 물리 페이지를 구비한 데이터 블록은 일반적인 데이터 블록이 두 번 병합 동작을 수행하는 동안 한 번 병합 동작을 수행한다. 따라서, 병합 동작의 수행 횟수가 감소함으로써 메모리 시스템의 속도가 향상된다.
동일한 이유로, 데이터 블록이 N 개의 빈 물리 페이지를 구비하는 경우의 병합 동작 수행 횟수는 빈 물리 페이지를 구비하지 않은 경우의 N+1 분의 1이다. 즉, N 개의 빈 물리 페이지를 구비한 데이터 블록은 일반적인 데이터 블록이 N+1 번 병합 동작을 수행하는 동안 병합 한 번 동작을 수행한다. 따라서, 병합 동작의 수행 횟수가 감소함으로써 메모리 시스템의 속도가 향상된다. 도 7에 도시된 실시 예에 있어서, 데이터 블록은 하나의 빈 물리 페이지를 포함하지만 본 발명의 범위는 이에 한정되지 않는다. 본 발명에 따른 데이터 블록은 임의의 개수의 빈 물리 페이지를 포함할 수 있다.
도 8은 본 발명에 따른 비대칭 맵핑 방법의 다른 실시 예를 보여주는 도면이다. 본 실시 예에서는 데이터의 저장 패턴에 따라 빈 물리 페이지에 데이터를 저장할지 또는 로그 블록을 할당받아 데이터를 저장할지 여부가 결정된다. 도 8을 참조하면, S110 단계에서 파일 시스템으로부터 쓰기 요청이 입력된다. S120 단계에서 플래시 변환 계층은 쓰기 요청에 응답하여 데이터 쓰기 패턴을 검출한다. 자세히 설명하면, 플래시 변환 계층은 데이터가 서로 다른 데이터 블록에 랜덤하게 저장되는지(이하, 랜덤 쓰기) 또는 하나의 데이터 블록의 연속되는 물리 페이지에 저장되는지(이하, 순차 쓰기) 여부를 검출한다.
데이터가 서로 다른 데이터 블록에 랜덤하게 저장되는 경우 S130 단계가 수행된다. 그리고, 데이터가 하나의 데이터 블록의 연속되는 물리 페이지에 저장되는 경우 S140 단계가 수행된다. S130 단계에서 데이터 블록에 빈 물리 페이지가 있는지 여부가 검출된다. 데이터 블록에 빈 물리 페이지가 없는 경우에는 S140 단계가 수행되고, 빈 물리 페이지가 있는 경우에는 S150 단계가 수행된다. S150 단계에서 빈 물리 페이지에 데이터가 저장된다. S140 단계에서 로그 블록이 데이터 블록에 할당된다. 그리고 S160 단계에서 할당된 로그 블록에 데이터가 저장된다.
상술한 바와 같이 데이터 쓰기 패턴에 따라 로그 블록 할당 여부를 결정함으로써 순차 쓰기의 경우 성능 저하를 방지할 수 있다. 랜덤 쓰기 및 순차 쓰기는 후술할 도면들을 참조하여 자세하게 설명될 것이다.
도 9는 도 8에서 설명된 랜덤 쓰기를 자세하게 설명하기 위한 도면이다. 도 9를 참조하면, 먼저 파일 시스템은 데이터 블록 101(DB 101)의 논리 페이지 1(page 1)에 대한 쓰기 요청을 한다. 이 경우, 데이터 블록 101(DB 101)은 빈 물리 페이지 3(PPN 3)을 포함하기 때문에 논리 페이지 1(page 1)은 물리 페이지 3(PPN 3)에 저장된다. 물리 페이지 1(PPN 1)은 무효화된다.
그 다음, 파일 시스템은 데이터 블록 104(DB 104)의 논리 페이지 2(page 2) 에 대한 쓰기 요청을 한다. 이 경우, 데이터 블록 104(DB 104)는 빈 물리 페이지 3(PPN 3)을 포함하기 때문에 논리 페이지 2(page 2)는 물리 페이지 3(PPN 3)에 저장된다. 물리 페이지 2(PPN 2)는 무효화된다.
그 다음, 파일 시스템은 데이터 블록 108(DB 108)의 논리 페이지 0(page 0)에 대한 쓰기 요청을 한다. 이 경우, 데이터 블록 108(DB 108)은 빈 물리 페이지 3(PPN 3)을 포함하기 때문에 논리 페이지 0(page 0)은 물리 페이지 3(PPN 3)에 저장된다. 물리 페이지 0(PPN 0)은 무효화된다.
마지막으로, 파일 시스템은 데이터 블록 104(DB 104)의 논리 페이지 0(page 0)에 대한 쓰기 요청을 한다. 이 경우, 데이터 블록 104(DB 104)는 빈 물리 페이지를 포함하지 않기 때문에 로그 블록 200(LB 200)이 데이터 블록 104(DB 104)에 할당된다. 그리고, 논리 페이지 0(page 0)은 로그 블록의 물리 페이지 0(PPN 0)에 저장된다. 데이터 블록 104(DB 104)의 물리 페이지 0(PPN 0)은 무효화된다.
본 실시 예에 따른 랜덤 쓰기의 경우, 데이터 블록 내의 빈 물리 페이지가 먼저 사용되고, 빈 물리 페이지가 없는 경우에 로그 블록이 데이터 블록에 할당된다. 이와 같은 방법을 사용함으로써 병합 동작 횟수를 감소시킬 수 있다.
상술한 바와 같이 일반적으로 병합 동작에 걸리는 시간은 페이지 복사에 걸리는 시간보다 수십 배 이상이다. 데이터 블록이 하나의 빈 물리 페이지를 구비하는 경우의 병합 동작 수행 횟수는 빈 물리 페이지를 구비하지 않은 경우의 절반이다. 즉, 하나의 빈 물리 페이지를 구비한 데이터 블록은 일반적인 데이터 블록이 두 번 병합 동작을 수행하는 동안 한 번 병합 동작을 수행한다. 따라서, 병합 동작 의 수행 횟수가 감소함으로써 메모리 시스템의 속도가 향상된다.
동일한 이유로, 데이터 블록이 N 개의 빈 물리 페이지를 구비하는 경우의 병합 동작 수행 횟수는 빈 물리 페이지를 구비하지 않은 경우의 N+1 분의 1이다. 즉, N 개의 빈 물리 페이지를 구비한 데이터 블록은 일반적인 데이터 블록이 N+1 번 병합 동작을 수행하는 동안 병합 한 번 동작을 수행한다. 따라서, 병합 동작의 수행 횟수가 감소함으로써 메모리 시스템의 속도가 향상된다. 도 8에 도시된 실시 예에 있어서, 데이터 블록은 하나의 빈 물리 페이지를 포함하지만 본 발명의 범위는 이에 한정되지 않는다. 본 발명에 따른 데이터 블록은 임의의 개수의 빈 물리 페이지를 포함할 수 있다.
도 9를 참조하면, 하나의 데이터 블록에는 하나의 로그 블록이 할당되어 있다. 즉, 외부적으로 하나의 논리 블록에 대해서, 내부적으로 두 개의 물리 블록(예를 들면, 데이터 블록 104(DB 104)과 로그 블록 200(LB 200))이 사용된다. 이러한 의미에서, 도 9에 도시된 혼합 맵핑 방법은 "1:2 맵핑 방법"이라고도 한다. 1:2 맵핑 방법에 의하면, 로그 블록 200(LB 200)은 데이터 블록 104(DB 104)에 속하는 페이지 데이터만을 기록할 수 있다. 단, 본 발명의 범위는 이에 한정되지 않는다. 본 발명에 있어서, 하나의 데이터 블록에 복수 개의 로그 블록이 할당될 수 있다. 즉 1:k 맵핑 방법"이 적용될 수 있다. 예를 들어, 하나의 데이터 블록에 모든 로그 블록이 할당될 수도 있다. 또한, 본 실시 예에서 자유 블록이 3개인 것으로 가정하였으나, 본 발명의 범위는 이에 한정되지 않음이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명할 것이다.
도 10은 도 8에서 설명된 순차 쓰기를 자세하게 설명하기 위한 도면이다. 도 10을 참조하면, 파일 시스템은 데이터 블록 102(DB 102)의 논리 페이지 0, 1, 및 2(page 0, 1, 2)에 대한 쓰기 요청을 한다. 이 경우, 플래시 변환 계층은 데이터 쓰기 패턴이 순차 쓰기인 것으로 인식한다. 따라서, 플래시 변환 계층은 파일 시스템으로부터의 쓰기 요청에 응답하여 로그 블록 201(LB 201)을 데이터 블록 102(DB 102)에 할당한다. 데이터 블록 102(DB 102)의 논리 페이지 0, 1, 및 2(page 0, 1, 2)는 각각 로그 블록 201(LB 201)의 물리 페이지 0, 1, 및 2(PPN 0, 1, 2)에 저장된다. 그리고, 데이터 블록 102(DB 102)의 물리 페이지 0, 1, 및 2(PPN 0, 1, 2)는 무효화된다.
상술한 바와 같이, 데이터 쓰기가 하나의 데이터 블록에 대해 이루어지는 경우, 로그 블록이 데이터 블록에 할당된다. 이와 같은 방법을 사용함으로써 순차 쓰기 성능이 향상될 수 있다.
이상에서 살펴 본 바와 같이, 본 발명에 따른 메모리 시스템은 비대칭 맵핑 방법을 사용함으로써, 로그 블록의 페이지 이용률을 높일 수 있다. 또한, 본 발명은 쓰기 데이터의 패턴에 따라 로그 블록 할당 여부를 결정함으로써 순차 쓰기 성능이 향상될 수 있다. 또한, 본 발명의 경우 로그 블록의 페이지 이용률이 높기 때문에, 종래에 비해 병합 연산 및 블록 소거의 횟수를 줄일 수 있다. 이로 인해 제품의 수명이 증가될 수 있다.
그런데, 모든 자유 블록이 데이터 블록에 할당되어 부족한 경우, 병합 동작에 의해 자유 블록이 확보되어야 한다. 상술한 바와 같이, 데이터 블록 및 이에 할 당된 로그 블록의 병합에 의해 자유 블록이 확보될 수 있다. 그런데, 어느 데이터 블록과 로그 블록을 병합할 것인지가 문제된다. 본 발명에 따른 실시 예에 있어서, 병합 동작이 용이하게 수행될 수 있는 데이터 블록 및 로그 블록이 우선적으로 병합 동작을 위해 선택된다.
도 11은 데이터 블록 내의 모든 논리 페이지들(page 0 ~ page 2)이 로그 블록에 의해 한 번씩만 갱신된 경우를 보여주는 도면이다. 도 11을 참조하면, 로그 블록에 저장된 데이터는 데이터 블록에 저장된 데이터와 동일하다. 따라서, 페이지 복사 동작을 수행함이 없이 로그 블록을 데이터 블록으로 변환함으로써 병합 동작이 수행될 수 있다. 이러한 병합 동작을 스왑 병합(swap merge)이라 한다.
도 12는 데이터 블록 내의 일부 논리 페이지들이 로그 블록에 의해 갱신된 경우를 보여주는 도면이다. 도 12를 참조하면, 데이터 블록의 논리 페이지 0(page 0) 및 논리 페이지 1(page 1)이 이미 갱신된 상태이다. 따라서, 데이터 블록의 논리 페이지 2(page 2)를 로그 블록의 물리 페이지 2(PPN 2)에 저장하고 로그 블록을 데이터 블록으로 변환함으로써 병합 동작이 수행될 수 있다. 이 경우, 병합 동작 동안 한 번의 페이지 복사가 수행된다. 이러한 병합 동작을 복사 병합(copy merge)이라 한다.
도 13은 데이터 블록 내의 일부 페이지들이 로그 블록에 의해 갱신된 경우를 보여주는 도면이다. 도 13을 참조하면, 논리 페이지 0(page 0) 및 논리 페이지 2(page 2)는 로그 블록에 저장되어 있고, 논리 페이지 1(page 1)은 기존의 데이터 블록에 저장되어 있다. 따라서, 새로운 데이터 블록에 논리 페이지 0 내지 논리 페 이지 2(page 0 ~ page 2)를 저장하고 기존의 데이터 블록과 로그 블록을 소거 후 자유 블록으로 변환함으로써 병합 동작이 수행될 수 있다. 이 경우, 병합 동작 동안 세 번의 페이지 복사가 수행된다. 이러한 병합 동작을 단순 병합(simple merge)이라 한다.
도 11 내지 도 13에 각각 도시된 병합 동작에 있어서, 수행되는 페이지 복사 횟수에 차이가 있다. 본 발명에 따른 실시 예에 있어서, 가장 적은 페이지 복사가 요구되는 병합 동작이 먼저 수행된다.
도 12는 본 발명에 따른 플래시 메모리 장치를 포함한 컴퓨팅 시스템(400)을 개략적으로 보여주는 블록도이다. 도 12를 참조하면, 컴퓨팅 시스템(400)은 프로세서(410), 메모리 컨트롤러(420), 입력 장치들(430), 출력 장치들(440), 플래시 메모리(450), 그리고 주 기억 장치(460)를 포함한다. 도면에서 실선은 데이터 또는 명령이 이동하는 시스템 버스(System bus)를 나타낸다.
메모리 컨트롤러(420)와 플래시 메모리 장치(450)는 메모리 카드를 구성할 수 있다. 그리고, 프로세서(410), 입력 장치들(430), 출력 장치들(440), 그리고 주 기억 장치(460)는 메모리 카드를 기억 장치로 사용하는 호스트를 구성할 수 있다.
본 발명에 따른 컴퓨팅 시스템(400)은 입력 장치들(430)(키보드, 카메라 등)을 통해 외부로부터 데이터를 입력받는다. 입력된 데이터는 사용자에 의한 명령이거나 카메라 등에 의한 영상 데이터 등의 멀티 미디어 데이터일 수 있다. 입력된 데이터는 플래시 메모리(450) 또는 주 기억 장치(460)에 저장된다.
프로세서(410)에 의한 처리 결과는 플래시 메모리(450) 또는 주 기억 장 치(460)에 저장된다. 출력 장치들(440)은 플래시 메모리(450) 또는 주 기억 장치(460)에 저장된 데이터를 출력한다. 출력 장치들(440)은 디지털 데이터를 인간이 감지 가능한 형태로 출력한다. 예를 들어, 출력 장치(440)는 디스플레이 또는 스피커 등을 포함한다. 플래시 메모리(450)에는 본 발명에 따른 비대칭 맵핑 방법 방법이 적용될 것이다. 플래시 메모리(450)의 속도 및 수명이 향상됨에 따라 컴퓨팅 시스템(400)의 속도 및 수명도 이에 비례하여 향상될 것이다.
플래시 메모리(450), 그리고/또는 메모리 컨트롤러(420)는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 플래시 메모리(450) 그리고/또는 컨트롤러(420)는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지들을 이용하여 실장될 수 있다.
비록 도면에는 도시되지 않았지만 컴퓨팅 시스템(400)의 동작에 필요한 전원을 공급하기 위한 전원 공급부(Power supply)가 요구됨은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다. 그리고, 컴퓨팅 시스템(400)이 휴대용 기기(mobile device)인 경우, 컴퓨팅 시스템(400)의 동작 전원을 공급하기 위한 배터리(battery)가 추가로 요구될 것이다.
도 13은 본 발명에 따른 SSD 시스템의 구성을 간략히 보여주는 블록도이다. 도 13을 참조하면, SSD 시스템(500)은 SSD 컨트롤러(510)와 플래시 메모리들(520~523)을 포함한다.
본 발명에 따른 반도체 메모리 시스템은 SSD(Solid State Drive)에도 적용될 수 있다. 최근 하드디스크 드라이브(HDD)를 교체해 나갈 것으로 예상되는 SSD 제품이 차세대 메모리 시장에서 각광을 받고 있다. SSD는 일반적인 하드 디스크 드라이브에서 사용되는 회전 접시 대신에 데이터를 저장하는데 플래시 메모리와 같은 메모리 칩들을 사용한 데이터 저장 장치이다. SSD는 기계적으로 움직이는 하드디스크 드라이브에 비해 속도가 빠르고 외부 충격에 강하며, 소비전력도 낮다는 장점을 가진다.
다시 도 13을 참조하면, 중앙처리장치(511)는 호스트로부터 명령어를 전달받아 호스트로부터의 데이터를 플래시 메모리에 저장할지 혹은 플래시 메모리의 저장 데이터를 독출하여 호스트로 전송할지의 여부를 결정하고 제어한다. ATA 인터페이스(512)는 상술한 중앙처리장치(511)의 제어에 따라 호스트 측과 데이터를 교환한다. ATA 인터페이스(512)는 호스트 측으로부터 명령어 및 어드레스를 패치하여 CPU 버스를 통해서 중앙처리장치(511)로 전달한다. ATA 인터페이스(512)를 통해 호스트로부터 입력되는 데이터나 호스트로 전송되어야 할 데이터는 중앙처리장치(511)의 제어에 따라 CPU 버스를 경유하지 않고 SRAM 캐시(513)를 통해 전달된다.
SRAM 캐시(513)는 호스트와 플래시 메모리들(520~523) 간의 이동 데이터를 일시 저장한다. 또한 SRAM 캐시(513)는 중앙처리장치(511)에 의해서 운용될 프로그램을 저장하는 데에도 사용된다. SRAM 캐시(513)는 일종의 버퍼 메모리로 간주할 수 있으며, 반드시 SRAM으로 구성할 필요는 없다. 플래시 인터페이스(514)는 저장 장치로 사용되는 불 휘발성 메모리들과 데이터를 주고받는다. 플래시 인터페이스(514)는 낸드 플래시 메모리, One-NAND 플래시 메모리, 혹은 멀티-레벨 플래시 메모리를 지원하도록 구성될 수 있다.
본 발명에 따른 반도체 메모리 시스템은 이동형 저장 장치로서 사용될 수 있다. 따라서, MP3, 디지털 카메라, PDA, e-Book의 저장 장치로서 사용될 수 있다. 또한, 디지털 TV나 컴퓨터 등의 저장 장치로서 사용될 수 있다.
도 14는 본 발명의 다른 예시적인 실시 예들에 따른 메모리 시스템을 보여주는 블록도이다. 도 14에 도시된 메모리 시스템은 메모리(610)와 메모리 제어기(620)가 카드(600)를 구성한다. 예를 들면, 카드(600)는 플래시 메모리 카드와 같은 메모리 카드일 수 있다. 즉, 카드(600)는 디지털, 카메라, 개인 컴퓨터 등과 같은 전자 장치를 사용하기 위한 어떤 산업 표준을 만족하는 카드일 수 있다. 메모리 제어기(620)가 카드(600)에 의해 또 다른 (예를 들면, 외부) 장치로부터 수신된 제어 신호들에 기초하여 메모리(610)를 제어할 수 있다는 것이 이해될 것이다.
도 15는 본 발명의 다른 예시적인 실시 예들에 따른 메모리 시스템을 보여주는 블록도이다. 도 15에 도시된 시스템은 휴대용 장치(700)를 나타낸다. 휴대용 장치(700)는 MP3 플레이어, 비디오 플레이어, 콤비네이션 비디오 및 오디오 플레이어 등일 수 있다. 도시된 바와 같이, 휴대용 장치(700)는 메모리(710) 및 메모리 제어기(720)를 포함한다. 휴대용 장치(700)는 또한 인코더 및 디코더(730), 프리젠테이션 구성요소들(740) 및 인터페이스(750)를 포함할 수 있다.
인코더 및 디코더(EDC)(730)에 의해 처리된 데이터(비디오, 오디오, 등)는 메모리 제어기(720)를 통해 메모리(710)로 입력되고 메모리(710)로부터 출력될 수 있다. 도 15에서 점선들에 의해 도시된 바와 같이, 데이터는 EDC(730)로부터 메모리(710)로 직접 입력되고 그리고/또는 메모리(710)로부터 EDC(730)로 직접 출력될 수 있다.
EDC(730)는 메모리(710)에 저장하기 위해 데이터를 인코딩할 수 있다. 예를 들면, EDC(730)는 메모리(710)에 저장하기 위해 오디오 데이터에 대해 MP3 인코딩을 수행할 수 있다. 다른 방법으로, EDC(730)는 메모리(710)에 저장하기 위해 비디오 데이터에 대해 MPEG 인코딩(예를 들면, MPEG2, MPEG4, 등)을 수행할 수 있다. 또한, EDC(730)는 다른 데이터 포맷들에 따라 다른 타입들의 데이터를 인코딩하기 위한 복수의 인코더들을 포함할 수 있다. 예를 들면, EDC(730)는 오디오 데이터를 위한 MP3 인코더 및 비디오 데이터를 위한 MPEG 인코더를 포함할 수 있다.
EDC(730)는 메모리(710)로부터의 출력을 디코딩할 수 있다. 예를 들면, EDC(730)는 메모리(710)로부터 출력된 오디오 데이터에 대해 MP3 디코딩을 수행할 수 있다. 다른 방법으로, EDC(730)는 메모리(710)로부터 출력된 비디오 데이터에 대해 MPEG 디코딩(예를 들면, MPEG2, MPEG4, 등)을 수행할 수 있다. 또한, EDC(730)는 다른 데이터 포맷들에 따라 다른 타입들의 데이터를 디코딩하기 위한 복수의 디코더들을 포함할 수 있다. 예를 들면, EDC(730)는 오디오 데이터를 위한 MP3 디코더 및 비디오 데이터를 위한 MPEG 디코더를 포함할 수 있다.
EDC(730)가 디코더들만을 포함할 수 있다는 것이 또한 이해될 것이다. 예를 들면, 이미 인코딩된 데이터는 EDC(730)에 의해 수신될 수 있고 메모리 제어기(720) 및/또는 메모리(710)로 패스될 수 있다. 또한, EDC(730)은 도시되지 않은 범용 프로세서(general purpose processor)에 의해 소프트웨어로 구현되어 사용될 수 있다.
EDC(730)는 인터페이스(750)를 통해 인코딩을 위한 데이터를 수신하거나 이미 인코딩된 데이터를 수신할 수 있다. 인터페이스(750)는 알려진 표준(예를 들면, 펌웨어, USB, 등)에 따를 수 있다. 인터페이스(750)는 또한 하나 이상의 인터페이스를 포함할 수 있다. 예를 들면, 인터페이스(750)는 펌웨어 인터페이스, USB 인터페이스, 등을 포함할 수 있다. 메모리(710)로부터의 데이터는 인터페이스(750)를 통해 출력될 수도 있다.
프리젠테이션 구성요소들(740)은 메모리로부터 출력되고 그리고/또는 EDC(730)에 의해 디코딩된 데이터를 사용자에게 표시할 수 있다. 예를 들면, 프리젠테이션 구성요소들(740)은 오디오 데이터를 출력하기 위한 스피커 잭, 비디오 데이터를 출력하기 위한 디스플레이 스크린, 등을 포함할 수 있다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물 의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
도 1은 플래시 메모리를 사용하는 메모리 시스템의 하드웨어 구조를 보여주는 블록도이다.
도 2는 도 1에 도시된 메모리 시스템의 소프트웨어 구조를 보여주는 블록도이다.
도 3은 도 2에 도시된 메모리 시스템의 혼합 맵핑 방법을 보여주기 위한 블록도이다.
도 4는 메모리 시스템의 일반적인 맵핑 방법을 설명하기 위한 개념도이다.
도 5(a) 및 도 5(b)는 도 4에 도시된 데이터 블록과 로그 블록의 페이지 맵핑 관계를 예시적으로 보여준다.
도 6은 데이터 블록과 로그 블록을 병합하여 새로운 데이터 블록을 생성하는 방법을 설명하기 위한 도면이다.
도 7은 본 발명에 따른 메모리 시스템의 비대칭 맵핑 방법을 설명하기 위한 개념도이다.
도 8은 본 발명에 따른 비대칭 맵핑 방법의 다른 실시 예를 보여주는 도면이다.
도 9는 도 8에서 설명된 랜덤 쓰기를 자세하게 설명하기 위한 도면이다.
도 10은 도 8에서 설명된 순차 쓰기를 자세하게 설명하기 위한 도면이다.
도 11은 데이터 블록 내의 모든 논리 페이지들(page 0 ~ page 2)이 로그 블록에 의해 한 번씩만 갱신된 경우를 보여주는 도면이다.
도 12는 데이터 블록 내의 일부 논리 페이지들이 로그 블록에 의해 갱신된 경우를 보여주는 도면이다.
도 13은 데이터 블록 내의 일부 페이지들이 로그 블록에 의해 갱신된 경우를 보여주는 도면이다.
도 14는 본 발명의 다른 예시적인 실시 예들에 따른 메모리 시스템을 보여주는 블록도이다.
도 15는 본 발명의 다른 예시적인 실시 예들에 따른 메모리 시스템을 보여주는 블록도이다.

Claims (15)

  1. 파일 시스템;
    각각이 제 1 및 제 2 페이지 영역으로 구분된 복수의 데이터 블록을 포함하는 플래시 메모리; 및
    상기 파일 시스템과 상기 플래시 메모리 사이의 어드레스 맵핑 동작을 관리하기 위한 플래시 변환 레이어를 포함하되,
    상기 플래시 변환 레이어는 상기 제 1 페이지 영역에 저장된 데이터의 갱신을 위해 상기 제 2 페이지 영역을 남겨두는 메모리 시스템.
  2. 제 1 항에 있어서,
    상기 플래시 메모리는 각각이 복수의 페이지로 구성된 복수의 로그 블록을 더 포함하고,
    상기 로그 블록은 데이터 블록에 할당되어 상기 데이터 블록에 저장된 데이터의 갱신을 위해 사용되는 메모리 시스템.
  3. 제 2 항에 있어서,
    상기 플래시 변환 레이어는 상기 데이터 블록에 저장될 데이터의 패턴에 따라 상기 로그 블록을 상기 데이터 블록에 할당할지 여부를 결정하는 메모리 시스템.
  4. 제 3 항에 있어서,
    상기 플래시 변환 레이어는 상기 데이터 블록에 저장될 데이터의 패턴이 랜덤 쓰기인 경우, 상기 제 1 페이지 영역에 저장된 데이터의 갱신을 위해 상기 제 2 페이지 영역을 사용하는 메모리 시스템.
  5. 제 4 항에 있어서,
    상기 플래시 변환 레이어는 상기 제 2 페이지 영역이 이미 사용된 경우, 상기 로그 블록을 상기 데이터 블록에 할당하는 메모리 시스템.
  6. 제 3 항에 있어서,
    상기 플래시 변환 레이어는 상기 데이터 블록에 저장될 데이터의 패턴이 순차 쓰기인 경우, 상기 로그 블록을 상기 데이터 블록에 할당하는 메모리 시스템.
  7. 제 2 항에 있어서,
    상기 플래시 변환 계층은 자유 블록이 부족한 경우, 상기 데이터 블록 및 상기 로그 블록을 병합하는 메모리 시스템.
  8. 제 7 항에 있어서,
    상기 병합 동작은 단순 병합 동작 또는 스왑 병합 동작 또는 복사 병합 동작 인 것을 특징으로 하는 메모리 시스템.
  9. 제 2 항에 있어서,
    상기 플래시 변환 레이어는 상기 데이터 블록과 상기 데이터 블록에 할당된 로그 블록 사이의 어드레스 맵핑 동작을 관리하기 위한 페이지 맵핑 테이블을 갖는 메모리 시스템.
  10. 메모리 시스템의 어드레스 맵핑 방법에 있어서:
    파일 시스템으로부터 논리 어드레스를 입력받는 단계; 및
    상기 논리 어드레스에 따라 데이터 블록을 선택하는 단계를 포함하고,
    상기 데이터 블록은 제 1 및 제 2 페이지 영역으로 구분되고, 상기 제 2 페이지 영역은 상기 제 1 페이지 영역에 저장된 데이터의 갱신을 위해 남겨지는 어드레스 맵핑 방법.
  11. 제 10 항에 있어서,
    상기 데이터 블록에 저장된 데이터의 갱신을 위해 로그 블록을 할당하는 단계를 더 포함하는 어드레스 맵핑 방법.
  12. 제 11 항에 있어서,
    상기 데이터 블록에 저장될 데이터의 패턴에 따라 상기 로그 블록이 상기 데 이터 블록에 할당될지 여부가 결정되는 어드레스 맵핑 방법.
  13. 제 12 항에 있어서,
    상기 데이터 블록에 저장될 데이터의 패턴이 랜덤 쓰기인 경우, 상기 제 1 페이지 영역에 저장된 데이터의 갱신을 위해 상기 제 2 페이지 영역이 사용되는 어드레스 맵핑 방법.
  14. 제 13 항에 있어서,
    상기 제 2 페이지 영역이 이미 사용된 경우, 상기 로그 블록이 상기 데이터 블록에 할당되는 어드레스 맵핑 방법.
  15. 제 12 항에 있어서,
    상기 데이터 블록에 저장될 데이터의 패턴이 순차 쓰기인 경우, 상기 로그 블록이 상기 데이터 블록에 할당되는 어드레스 맵핑 방법.
KR1020080056871A 1988-06-13 2008-06-17 비대칭 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법 KR101437091B1 (ko)

Priority Applications (9)

Application Number Priority Date Filing Date Title
KR1020080056871A KR101437091B1 (ko) 2008-06-17 2008-06-17 비대칭 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법
US12/457,485 US8027194B2 (en) 1988-06-13 2009-06-12 Memory system and method of accessing a semiconductor memory device
CN200910205766.2A CN101673581B (zh) 2008-06-13 2009-06-15 存取半导体存储设备的存储系统和方法
US13/137,401 US8565021B2 (en) 2008-06-13 2011-08-11 Memory system and method of accessing a semiconductor memory device
US13/137,409 US8638585B2 (en) 2008-06-13 2011-08-12 Memory system and method of accessing a semiconductor memory device
US13/137,424 US8705272B2 (en) 2008-06-13 2011-08-15 Memory system and method of accessing a semiconductor memory device
US13/137,423 US8760918B2 (en) 2008-06-13 2011-08-15 Memory system and method of accessing a semiconductor memory device
US13/137,422 US8614919B2 (en) 2008-06-13 2011-08-15 Memory system and method of accessing a semiconductor memory device
US13/137,425 US8625344B2 (en) 2008-06-13 2011-08-15 Memory system and method of accessing a semiconductor memory device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080056871A KR101437091B1 (ko) 2008-06-17 2008-06-17 비대칭 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법

Publications (2)

Publication Number Publication Date
KR20090131086A KR20090131086A (ko) 2009-12-28
KR101437091B1 true KR101437091B1 (ko) 2014-09-05

Family

ID=41690385

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080056871A KR101437091B1 (ko) 1988-06-13 2008-06-17 비대칭 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법

Country Status (1)

Country Link
KR (1) KR101437091B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101635446B1 (ko) * 2010-05-25 2016-07-04 삼성전자주식회사 반도체 메모리 장치의 블록 병합 방법
KR101662827B1 (ko) * 2010-07-02 2016-10-06 삼성전자주식회사 쓰기 패턴에 따라 데이터 블록의 쓰기 모드를 선택하는 메모리 시스템 및 그것의 데이터 쓰기 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060090080A (ko) * 2005-02-07 2006-08-10 삼성전자주식회사 런 단위 어드레스 매핑 테이블 및 그것의 구성 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060090080A (ko) * 2005-02-07 2006-08-10 삼성전자주식회사 런 단위 어드레스 매핑 테이블 및 그것의 구성 방법

Also Published As

Publication number Publication date
KR20090131086A (ko) 2009-12-28

Similar Documents

Publication Publication Date Title
US11036628B2 (en) Storage system having a host directly manage physical data locations of storage device
US10997065B2 (en) Memory system and operating method thereof
US11334448B2 (en) Memory system and operating method thereof
US8055873B2 (en) Data writing method for flash memory, and controller and system using the same
US10678476B2 (en) Memory system with host address translation capability and operating method thereof
US20160062885A1 (en) Garbage collection method for nonvolatile memory device
KR102295208B1 (ko) 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법
US20130080689A1 (en) Data storage device and related data management method
US10303367B2 (en) Mapping table updating method without updating the first mapping information, memory control circuit unit and memory storage device
US8819350B2 (en) Memory system
US20100217920A1 (en) Memory system and address allocating method of flash translation layer thereof
KR20120057521A (ko) 개선된 플래시 메모리 호환성을 갖는 전자 장치 및 전자 장치의 플래시 메모리 호환성을 개선하는 방법
US20100211820A1 (en) Method of managing non-volatile memory device and memory system including the same
US10606758B2 (en) Memory system and method of operating the same
US10503433B2 (en) Memory management method, memory control circuit unit and memory storage device
KR100845552B1 (ko) Ftl의 어드레스 매핑 방법
US10990539B2 (en) Controller, memory system including the same, and method of operating memory system
TW201324145A (zh) 用於非揮發性記憶體的資料合併方法、控制器與儲存裝置
TWI540428B (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
CN112306385A (zh) 存储器控制器及其操作方法
KR101437091B1 (ko) 비대칭 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법
US8984212B2 (en) Non-volatile memory system
CN114664361A (zh) 利用nand缓冲器进行无dram的多级单元编程
US20210406169A1 (en) Self-adaptive wear leveling method and algorithm

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee