KR101465789B1 - 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법 - Google Patents
페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법 Download PDFInfo
- Publication number
- KR101465789B1 KR101465789B1 KR1020080007647A KR20080007647A KR101465789B1 KR 101465789 B1 KR101465789 B1 KR 101465789B1 KR 1020080007647 A KR1020080007647 A KR 1020080007647A KR 20080007647 A KR20080007647 A KR 20080007647A KR 101465789 B1 KR101465789 B1 KR 101465789B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- page
- log
- log block
- free
- 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
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K19/00—Record carriers for use with machines and with at least a part designed to carry digital markings
- G06K19/06—Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
- G06K19/067—Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
- G06K19/07—Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
본 발명은 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의 쓰기 및 병합 방법에 관한 것이다. 본 발명에 따른 메모리 카드 시스템의 쓰기 방법은 소정의 페이지에 대한 쓰기 요청을 수신하는 단계; 상기 페이지가 포함된 제 1 데이터 블록에 대응하는 제 1 로그 블록에 쓰기를 수행하는 단계; 상기 페이지에 대한 갱신 요청을 수신하는 단계; 및 상기 제 1 데이터 블록에 대응하는 제 2 로그 블록에 쓰기를 수행하는 단계를 포함한다. 또한, 발명에 따른 메모리 카드 시스템의 병합 방법은 제 1 데이터 블록과 대응하는 제 1 로그 블록을 병합하여 제 2 데이터 블록을 생성하는 단계를 포함한다. 여기에서, 상기 제 2 데이터 블록 내 페이지들은 비순차적(out-of-place order) 방식으로 쓰이는 것을 특징으로 한다. 본 발명에 따른 메모리 카드 시스템은 해당 페이지에 대한 최초의 쓰기 요청인지 갱신 요청인지에 따라 로그 블록을 다르게 함으로써 무효 페이지를 없앨 수 있다. 또한, 본 발명은 데이터 블록 내 페이지들을 비순차적 방식으로 쓰기 동작을 수행함으로써, 병합 동작 시 페이지 복사 횟수를 줄일 수 있다. 본 발명은 이로 인해 메모리 카드 시스템의 성능을 향상시킬 수 있다.
Description
본 발명은 메모리 카드 시스템에 관한 것으로, 더욱 상세하게는 메모리 카드 시스템의 쓰기 방법에 관한 것이다.
최근 디지털 카메라, MP3 플레이어, 핸드폰, PDA 등과 같은 휴대용 전자 장치가 많이 사용되고 있다. 이러한 휴대용 전자 장치에는 플래시 메모리가 주로 사용되고 있다. 이는 플래시 메모리가 저전력 및 고집적 등의 특성을 갖는 비휘발성 소자이기 때문이다.
그러나 플래시 메모리는 데이터 덮어 쓰기(over write)가 가능한 하드 디스크와 달리, 데이터 덮어쓰기가 자유롭지 못하다. 플래시 메모리에 데이터를 덮어쓰기 위해서는 데이터를 쓰기 전에 지워야 한다. 이를 쓰기 전 소거 동작(erase-before-write)이라 한다. 즉, 플래시 메모리는 데이터를 쓰기 전에, 초기 상태 또는 소거 상태로 되돌려 놓아야 한다.
플래시 메모리의 소거 동작은 일반적으로 쓰기 동작에 비해 매우 긴 시간이 소요된다. 또한, 플래시 메모리의 소거 단위는 쓰기 단위보다 훨씬 큰 블록 단위로 수행되기 때문에, 소거되지 않아도 되는 부분까지 함께 지워지는 결과를 초래할 수 있다. 원치 않게 지워진 부분은 다시 쓰기 동작을 통해 복원해야 한다.
이와 같이 플래시 메모리는 소거와 쓰기 동작의 단위가 일치하지 않기 때문에, 쓰기 동작의 수행 성능은 읽기 동작에 비해 현저하게 떨어지며, 심지어 하드 디스크보다 그 성능이 떨어진다. 또한, 플래시 메모리는 동일한 블록에 대해 10만 번 정도의 소거 동작을 수행하면, 더 이상 사용할 수 없게 된다. 플래시 메모리는 특정 블록에 대해 소거 동작이 반복되는 것을 피하기 위해 웨어 레벨링(wear leveling) 동작을 수행한다.
플래시 변환 레이어(FTL; Flash Translation Layer)는 플래시 메모리의 이러한 단점들을 극복하고, 플래시 메모리를 효율적으로 관리하기 위한 소프트웨어이다. 플래시 변환 레이어(FTL)는 호스트로부터 논리 주소(LA; Logical Address)를 입력받고, 이를 물리 주소(PA; Physical Address)로 변환한다. 여기에서, 물리 주소(PA)는 실제 플래시 메모리에서 사용할 주소이다.
위와 같은 주소 맵핑 동작을 관리하기 위해 주소 맵핑 테이블(Address Mapping Table)이 필요하다. 주소 맵핑 테이블은 주로 랜덤 액세스 메모리(RAM)에 상에서 구동된다. 주소 맵핑 테이블에는 논리 주소(Logical Address) 및 이에 대응하는 물리 어드레스(Physical Address)가 기록되어 있다. 주소 맵핑 테이블은 맵핑 단위에 따라 그 크기가 달라질 수 있으며, 맵핑 단위에 따라 다양한 맵핑 방법을 갖는다.
대표적인 맵핑 방법으로, 페이지 맵핑 방법(page mapping method), 블록 맵핑 방법(block mapping method), 그리고 혼합 맵핑 방법(hybrid mapping method) 등이 있다.
페이지 맵핑 방법에는 페이지 맵핑 테이블이 사용된다. 페이지 맵핑 테이블은 페이지 단위로 맵핑 동작을 수행하기 위한 것이며, 논리 페이지 및 이에 대응하는 물리 페이지를 저장한다. 블록 맵핑 방법에는 블록 맵핑 테이블이 사용된다. 블록 맵핑 테이블은 블록 단위로 맵핑 동작을 수행하기 위한 것이며, 논리 블록 및 이에 대응하는 물리 블록을 저장한다. 혼합 맵핑 방법은 페이지 맵핑 방법과 블록 맵핑 방법을 동시에 사용하는 방법이다.
일반적으로 하나의 메모리 블록은 수십 또는 수백 개의 페이지로 구성된다. 따라서 페이지 맵핑 방법을 사용할 경우에, 맵핑 테이블의 크기는 블록 맵핑 방법을 사용할 때보다 수십 배 또는 수백 배 증가하게 된다. 즉, 페이지 맵핑 방법은 맵핑 테이블을 사용하는 데 너무 많은 메모리 공간을 필요로 한다는 단점을 갖는다.
반면, 블록 맵핑 방법은 블록 단위로 맵핑 동작을 수행하기 때문에, 페이지 맵핑 방법에 비해 맵핑 테이블의 크기를 줄일 수 있는 장점을 갖는다. 그러나 블록 맵핑 방법에 의하면, 블록 내에 쓰일 페이지의 위치가 고정되기 때문에, 많은 병합(merge) 연산을 수행해야 한다는 단점을 갖는다.
혼합 맵핑 방법은 로그 블록(log block)에 대해서는 페이지 맵핑 방법을 사용하고, 데이터 블록(data block)에 대해서는 블록 맵핑 방법을 사용한다. 혼합 맵 핑 방법은 두 가지 맵핑 방법을 모두 사용함으로, 맵핑 테이블의 크기를 줄임과 동시에, 병합 연산의 횟수를 줄일 수 있다.
쓰기 동작 시에, 데이터 블록에 저장될 페이지 데이터는 먼저 로그 블록에 비순차적(out-of-place order) 방식으로 저장된다. 즉, 호스트로부터 전송된 페이지들의 논리적 번호(logical page number)에 상관없이, 로그 블록의 빈 페이지에 저장된다. 로그 블록의 모든 페이지가 사용되었거나 사용 가능한 로그 블록이 없을 경우, 로그 블록 및 이에 대응하는 데이터 블록에 저장된 페이지 데이터는 병합 동작을 통해 새로운 데이터 블록(new data block)에 저장된다. 로그 블록과는 달리 데이터 블록에는 순차적(in-place order) 방식으로 저장된다. 즉, 저장될 페이지 데이터들의 논리적 번호(logical page number)에 따라, 데이터 블록 내 해당되는 위치의 페이지에 저장된다.
이와 같은 방식으로 병합 동작을 수행하면, 복수의 페이지 복사 및 복수의 블록 소거 동작을 수행해야 한다. 예를 들어, 하나의 데이터 블록이 4개의 페이지로 구성되어 있다고 가정하면, 위의 예에서 4번의 페이지 복사 및 2번의 블록 소거 동작이 수행된다. 혼합 맵핑 방법을 사용함에 있어서, 많은 수의 페이지 복사 동작은 메모리 카드 시스템의 성능을 저하하는 요인이 되고 있다.
한편, 혼합 맵핑 방법에 의하면, 하나의 데이터 블록은 하나의 로그 블록만을 할당한다. 따라서 페이지의 데이터를 갱신할 경우 이전 페이지는 무효 페이지(invalid page)가 되어, 로그 블록 내에는 유효 페이지와 무효 페이지가 혼재하게 된다. 무효 페이지가 포함된 로그 블록과 이에 대응하는 데이터 블록을 병 합할 경우 많은 수의 페이지 복사 동작이 필요하다. 이와 같이 무효 페이지가 포함된 로그 블록은 병합 동작 시 많은 수의 페이지 복사 동작이 필요하게 되어 메모리 카드 시스템의 성능을 저하하고 있다.
본 발명은 상술한 기술적 과제를 해결하기 위해 제안된 것으로, 본 발명의 목적은 병합 동작 시 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템, 그것의 쓰기 방법 및 병합 방법을 제공하는 데 있다.
본 발명에 따른 메모리 카드 시스템의 쓰기 방법은 소정의 페이지에 대한 쓰기 요청을 수신하는 단계; 상기 페이지가 포함된 제 1 데이터 블록에 대응하는 제 1 로그 블록에 쓰기를 수행하는 단계; 상기 페이지에 대한 갱신 요청을 수신하는 단계; 및 상기 제 1 데이터 블록에 대응하는 제 2 로그 블록에 쓰기를 수행하는 단계를 포함한다.
본 발명에 따른 메모리 카드 시스템의 병합 방법은 제 1 데이터 블록과 대응하는 제 1 로그 블록을 병합하여 제 2 데이터 블록을 생성하는 단계를 포함하되,
상기 제 2 데이터 블록 내 페이지들은 비순차적(out-of-place order) 방식으로 쓰이는 것을 특징으로 한다.
본 발명에 따른 메모리 카드 시스템은 데이터 블록 및 상기 데이터 블록을 갱신하기 위한 로그 블록을 포함하는 적어도 하나 이상의 비휘발성 메모리; 및 상 기 비휘발성 메모리의 동작을 제어하는 메모리 컨트롤러를 포함하되, 상기 메모리 컨트롤러는, 소정의 페이지에 대한 쓰기 동작 시 상기 소정의 페이지가 포함된 제 1 데이터 블록에 대응하는 제 1 로그 블록에 쓰도록 제어하고, 상기 페이지의 갱신 동작 시 제 2 로그 블록에 쓰도록 제어하는 것을 특징으로 한다.
이상에서 살펴본 바와 같이, 본 발명에 따른 메모리 카드 시스템은 해당 페이지에 대한 최초의 쓰기 요청인지 갱신 요청인지에 따라 로그 블록을 다르게 함으로써 무효 페이지를 없앨 수 있다. 또한, 본 발명은 데이터 블록 내 페이지들을 비순차적(out-of-place order) 방식으로 쓰기 동작을 수행함으로써, 병합 동작 시 페이지 복사 횟수를 줄일 수 있다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명한다.
도 1은 일반적인 메모리 카드 시스템을 보여주는 블록도이다. 도 1을 참조하면, 메모리 카드 시스템(100)은 호스트(110)와 메모리 카드(120)를 포함한다. 메모리 카드(120)는 버퍼 메모리(133), ROM(135) 그리고 중앙처리장치(137)로 구성된 메모리 컨트롤러(130)와 적어도 하나 이상의 비휘발성 메모리(150~152)를 포함한다. 버퍼 메모리는 DRAM, SRAM, Phase-Change RAM(PRAM), Magnetic RAM(MRAM), Ferro-Electric RAM(FRAM)이 될 수 있다. 비휘발성 메모리는 플래시 메 모리(Flash Memory), Phase-Change RAM(PRAM), Magnetic RAM(MRAM), Ferro-Electric RAM(FRAM) 등이 될 수 있으며 플래시 메모리를 예로 들어 설명하기로 한다.
플래시 메모리(150~152)는 당업자에게 잘 알려진 바와 같이, 스트링 구조(string structure)를 갖는 복수의 메모리 셀로 구성된다. 메모리 셀들의 집합은 보통 셀 어레이(cell array)라고 한다. 플래시 메모리의 셀 어레이는 복수의 메모리 블록(memory block)으로 구성된다. 각각의 메모리 블록은 복수의 페이지(page)로 구성된다. 각각의 페이지는 하나의 워드 라인을 공유하는 복수의 메모리 셀로 구성된다.
플래시 메모리는 읽기 및 쓰기 동작의 단위와 소거 동작의 단위가 다르다. 즉, 플래시 메모리(150~152)는 메모리 블록 단위로 소거 동작을 수행하고, 페이지 단위로 읽기 또는 쓰기 동작을 수행한다. 또한, 플래시 메모리(150~152)는 다른 반도체 메모리와 달리 겹쳐 쓰기(over write)를 지원하지 않는다. 따라서 플래시 메모리(150~152)는 쓰기 동작 전에 소거 동작을 수행한다.
플래시 메모리의 이와 같은 특성으로 인해, 플래시 메모리(150~152)를 하드 디스크처럼 사용하기 위해서는, 읽기/쓰기/소거 동작에 대한 별도의 관리가 필요하다. 플래시 변환 레이어(FTL; Flash Translation Layer)는 이러한 목적으로 개발된 시스템 소프트웨어이다. 플래시 변환 레이어(FTL)는 메모리 컨트롤러(130) 내부의 ROM(135)이나 플래시 메모리(150~152)에 저장되어 있다가 버퍼 메모리(133) 상에서 구동된다.
메모리 컨트롤러(130)는 호스트(110)로부터 논리 주소(LA; Logical Address)를 입력받고, 이를 물리 주소(PA; Physical Address)로 변환한다. 물리 주소(PA)는 플래시 메모리(150~152)로 제공된다. 메모리 컨트롤러(130)는 주소 변환을 위해 주소 맵핑 테이블(Address Mapping Table)을 갖는다. 주소 맵핑 테이블은 버퍼 메모리(133) 상에서 구동된다.
주소 맵핑 방법에는 맵핑 단위에 따라 여러 가지가 있다. 대표적인 주소 맵핑 방법에는 페이지 맵핑 방법(page mapping method), 블록 맵핑 방법(block mapping method), 그리고 혼합 맵핑 방법(hybrid mapping method)이 있다.
페이지 맵핑 방법은 페이지 단위로 주소 맵핑 동작을 수행한다. 페이지 맵핑 방법에 의하면, 페이지 단위로 주소 변환 동작이 수행되므로, 후에 페이지 정렬을 위한 머지 동작을 수행하지 않아도 되는 장점이 있다. 반면에, 페이지 맵핑 방법은 큰 사이즈의 주소 맵핑 테이블을 필요로 한다. 즉, 페이지 맵핑 방법을 사용하기 위해서는 용량이 큰 버퍼 메모리(133)가 필요하다. 이와 같이 페이지 맵핑 방법은 머지 동작을 수행하지 않아도 되는 장점을 갖는 반면에, 페이지 맵핑 테이블을 위해 용량이 큰 메모리를 필요로 하는 단점을 갖는다.
블록 맵핑 방법은 메모리 블록 단위로 주소 맵핑 동작을 수행한다. 블록 맵핑 방법은 페이지 맵핑 방법에 비해 메모리 사이즈를 줄일 수 있는 장점을 갖는다. 반면에, 블록 맵핑 방법은 페이지 정렬을 위해 많은 수의 머지 연산을 수행해야 하는 단점을 갖는다. 혼합 맵핑 방법은 페이지 맵핑 방법과 블록 맵핑 방법을 모두 사용함으로, 맵핑 테이블의 크기를 줄임과 동시에, 병합 연산의 횟수를 줄이기 위 한 방법이다. 혼합 맵핑 방법은 이하에서 상세히 설명된다.
도 2는 도 1에 도시된 메모리 카드 시스템의 혼합 맵핑 방법을 보여주는 블록도이다. 도 2를 참조하면 플래시 메모리(예를 들면, 150)는 메타 영역(251), 로그 영역(252), 데이터 영역(253), 그리고 자유 영역(254)을 포함한다. 데이터 영역(253)은 복수의 데이터 블록으로 구성되며, 사용자 데이터를 저장한다. 로그 영역(252)은 하나 이상의 로그 블록으로 구성되며, 특정 데이터 블록에 할당된다. 자유 영역(333)은 복수의 자유 블록으로 구성된다. 자유 블록은 로그 블록의 부족이 발생할 때, 로그 블록으로 변환된다. 메타 영역(251)은 여러 종류의 맵핑 테이블, 예를 들면, 블록 맵핑 테이블(220) 및 페이지 맵핑 테이블(230)을 저장한다. 블록 맵핑 테이블(220)은 논리 블록 번호를 물리 블록 번호로 변환하기 위한 것이다. 페이지 맵핑 테이블(230)은 논리 페이지 번호를 물리 페이지 번호로 변환하기 위한 것이다.
계속해서 도 2를 참조하면, 메모리 컨트롤러(도 1 참조, 130)는 호스트(도 1 참조, 110)로부터 논리 주소(LA, 210)를 입력받고, 맵핑 테이블을 사용하여 물리 주소(PA)로 변환한다. 논리 주소(LA, 210)는 논리 블록 번호(Logical Block Number)와 논리 페이지 번호(Logical Page Number)로 나누어진다. 논리 블록 번호를 사용하여 블록 맵핑 테이블(220)에서 해당하는 물리 블록을 찾고, 논리 페이지 번호를 사용하여 페이지 맵핑 테이블(230)에서 해당하는 물리 페이지를 찾는다.
특정 데이터 블록에 데이터를 쓰고자 하는 경우, 데이터는 특정 데이터 블록에 직접 쓰여 지는 것이 아니라, 할당된 로그 블록에 먼저 쓰여 진다. 호스트(도 1 참조, 110)가 데이터 쓰기 요청(write request)을 하면, 플래시 변환 레이어(미도시)는 해당 데이터 블록에 할당된 로그 블록이 있는지를 검사한다. 해당 데이터 블록에 할당된 로그 블록이 있으면, 할당된 로그 블록이 사용된다. 그러나 해당 데이터 블록에 할당된 로그 블록이 없으면, 해당 데이터 블록은 자유 블록으로부터 새로운 로그 블록을 할당받는다. 새롭게 할당된 로그 블록에 대해서는 프로그램 동작 전에 소거 동작이 수행된다.
일반적으로 로그 블록과 데이터 블록에는 유효 페이지(valid page)와 무효 페이지(invalid page)가 혼재되어 있다. 로그 블록의 유효 페이지는 최신 데이터가 저장되어 있는 페이지이며, 무효 페이지는 갱신된 데이터가 다른 페이지에 저장되어 있어 더 이상 필요 없는 페이지이다. 데이터 블록의 유효 페이지는 로그 블록에 갱신된 데이터가 없는 페이지이며, 무효 페이지는 갱신된 데이터가 로그 블록 내에 있어 더 이상 필요 없는 페이지이다.
로그 블록 내의 모든 페이지가 사용되었거나 사용 가능한 로그 블록이 없을 경우 병합(merge) 동작이 수행된다. 병합(merge) 동작을 통해, 로그 블록의 유효 페이지와 데이터 블록의 유효 페이지는 새로운 데이터 블록으로 복사된다. 병합 동작 후에 소거된 데이터 블록 또는 로그 블록은 자유 블록으로 변환된다. 이와 같이 어느 하나의 메모리 블록은 병합 동작에 의해 데이터 블록, 로그 블록, 자유 블록으로 변환될 수 있다. 병합 동작에 따른 맵핑 정보의 변경은 메타 영역(251)에 저장된다.
이러한 병합 동작은 사용 가능한 로그 블록의 개수가 소정의 개수보다 적을 때에도 일어날 수 있다.
도 3은 도 2에 도시된 데이터 블록과 로그 블록의 머지 방법을 예시적으로 보여준다. 도 3을 참조하면, 로그 블록 300은 하나의 데이터 블록(100)에 할당되어 있다. 데이터 블록 100과 로그 블록 300은 각각 4개의 물리 페이지로 구성되어 있다. 도 3에 도시된 물리 페이지 번호(PPN)는 각각의 메모리 블록의 페이지 순서를 의미한다.
메모리 컨트롤러(도 1 참조, 130)는 쓰기 요청(write request)에 응답하여, 데이터 블록 100에 대응하는 로그 블록 300에 페이지 쓰기 동작을 수행한다. 도 3을 참조하면, 호스트(도 1 참조, 110)는 2번, 3번, 0번, 1번 논리 페이지 순서로 쓰기 요청을 하고 있다. 여기에서, 1번 논리 페이지는 데이터 블록 100의 제 2 물리 페이지(PPN2)에 저장되어 있다.
2번 논리 페이지에 대한 쓰기 요청이 입력되면, 로그 블록 300의 제 1 물리 페이지(PPN1)에 대한 쓰기 동작이 수행된다. 다음으로, 3번 논리 페이지에 대한 쓰기 요청이 들어오면, 로그 블록 300의 제 2 물리 페이지(PPN2)에 대한 쓰기 동작이 수행된다. 그리고 0번 논리 페이지에 대한 쓰기 요청이 들어오면, 로그 블록 300의 제 3 물리 페이지(PPN3)에 대한 쓰기 동작이 수행된다.
이때, 전체 로그 블록이 부족하여, 로그 블록 300을 자유 블록(free block)으로 만들어야 하는 상황이 발생한다면, 메모리 컨트롤러(130)는 병합 동작을 수행한다. 새로운 데이터 블록 101을 할당한 후, 로그 블록 300의 제 1 내지 제 3 물리 페이지(PPN1, PPN2, PPN3)에 저장된 2번, 3번, 0번 논리 페이지와 데이터 블록 100 의 제 2 물리 페이지(PPN2)에 저장된 1번 논리 페이지를 새로운 데이터 블록 101로 복사한다.
먼저, 로그 블록 300의 0번 논리 페이지가 새로운 데이터 블록 101의 제 1 물리 페이지(PPN1)에 복사된다. 다음에, 데이터 블록 100의 1번 논리 페이지가 새로운 데이터 블록 101의 제 2 물리 페이지(PPN2)에 복사된다. 다음에, 로그 블록 300의 2번 및 3번 논리 페이지가 새로운 데이터 블록 101의 제 3 및 제 4 물리 페이지(PPN3, PPN4)로 복사된다.
도 3에 도시된 혼합 맵핑 방법에 의하면, 로그 블록 300과 데이터 블록 100의 유효한 페이지(valid page)는 머지 동작에 의해 새로운 데이터 블록 101로 복사된다. 새로운 데이터 블록 101에는 0번 논리 페이지부터 3번 논리 페이지까지 순차적으로 쓰인다. 하나의 블록에 0번 논리 페이지부터 순차적으로 쓰여 지는 것을 순차적(in-place order) 방식이라고 한다. 반면에, 하나의 블록에 논리 페이지들이 임의로 쓰이는 것을 비순차적(out-of-place order 또는 random-place order) 방식이라고 한다. 혼합 맵핑 방식에서는 로그 블록 내 페이지들은 비순차적 방식으로 쓰이며 데이터 블록 내 페이지들은 순차적 방식으로 쓰인다.
쓰기 요청이 0번, 1번, 2번, 3번 논리 페이지 순서이면, 이들 논리 페이지는 로그 블록 300의 제 1 내지 제 4 물리 페이지에 순차적으로 쓰인다. 로그 블록 300에 쓰인 페이지들은 별도의 페이지 복사 없이 곧바로 데이터 블록으로 등록될 수 있다. 이것은 로그 블록 300이 순차 위치 방식(in-place order)에 맞게 페이지를 배열하고 있기 때문이다.
그러나 쓰기 요청이 임의적일 때에는, 데이터 블록으로 등록하기 위해 논리 페이지의 순서를 맞추기 위한 페이지 복사 과정이 반드시 필요하게 된다. 도 3의 예에서는, 4번의 페이지 복사 과정이 필요하다. 이와 같이, 도 3에 도시된 혼합 맵핑 방법은 데이터 블록 내 페이지들을 순차적 방식으로 정렬하기 위해 많은 수의 페이지 복사 과정이 필요하고 이는 메모리 시스템의 성능 감소의 원인이 되고 있다.
한편, 혼합 맵핑 방법에 의하면, 하나의 데이터 블록은 하나의 로그 블록만을 할당한다. 이미 로그 블록에 데이터가 쓰여져 있는 페이지를 갱신할 경우 이전 페이지는 무효 페이지(invalid page)가 되고 새로 쓰인 페이지는 유효 페이지(valid page)가 된다. 따라서 로그 블록 내에는 유효 페이지와 무효 페이지가 혼재하게 된다. 무효 페이지가 포함된 로그 블록과 이에 대응하는 데이터 블록을 병합할 경우에도 많은 수의 페이지 복사 동작이 필요하다. 이와 같이 무효 페이지가 포함된 로그 블록은 병합 동작 시 많은 수의 페이지 복사 동작이 필요하게 되어 메모리 카드 시스템의 성능을 저하하고 있다.
도 4는 본 발명에 따른 데이터 블록과 로그 블록의 병합 방법을 예시적으로 보여준다. 도 3에서 이미 기술한 바와 같이, 메모리 컨트롤러(도 1 참조, 130)는 쓰기 요청(write request)에 응답하여, 데이터 블록 100에 대응하는 로그 블록 300에 페이지 쓰기 동작을 수행한다.
2번 논리 페이지에 대한 쓰기 요청이 입력되면, 로그 블록 300의 제 1 물리 페이지(PPN1)에 대한 쓰기 동작이 수행된다. 다음으로, 3번 논리 페이지에 대한 쓰 기 요청이 들어오면, 로그 블록 300의 제 2 물리 페이지(PPN2)에 대한 쓰기 동작이 수행된다. 그리고 0번 논리 페이지에 대한 쓰기 요청이 들어오면, 로그 블록 300의 제 3 물리 페이지(PPN3)에 대한 쓰기 동작이 수행된다.
메모리 컨트롤러는 병합이 필요한 지 검사를 수행하여 필요할 경우 병합 동작을 수행한다. 병합 동작은 데이터 블록과 대응하는 로그 블록의 유효 페이지만을 따로 모아 새로운 데이터 블록(new data block)을 생성하는 동작이다. 메모리 컨트롤러(130)는 해당 로그 블록에 자유 페이지(free page)가 없을 경우나 새로운 로그 블록을 할당하기 위한 자유 블록이 없을 경우 병합 동작을 수행한다. 또한, 메모리 컨트롤러(130)는 로그 블록의 개수가 소정의 개수보다 적을 경우에도 병합 동작을 수행할 수 있다.
본 발명에서, 로그 블록과 데이터 블록 내 페이지들은 비순차적(out-of-place order) 방식으로 쓰일 수 있다. 이를 통해 본 발명은 병합 동작 시 발생하는 페이지 복사 횟수를 대폭 줄일 수 있다. 도 4를 참조하면, 데이터 블록 100과 대응하는 로그 블록 300을 병합해야 할 경우, 먼저 데이터 블록 100의 제 2 물리 페이지(PPN2)에 저장된 1번 논리 페이지를 로그 블록 300에 복사한다. 다음에는 로그 블록 300을 데이터 블록 101로 변경하고 데이터 블록 100은 자유 블록으로 변경한다.
본 발명에서는 자유 블록으로부터 새로운 데이터 블록을 할당할 필요가 없게 된다. 즉, 새로운 데이터 블록은 병합하려고 하는 데이터 블록 또는 이에 대응하는 로그 블록 중 하나로부터 생성된다.
또한, 데이터 블록으로 등록하기 위해 논리 페이지의 순서를 맞추기 위한 페이지 복사 과정이 필요 없게 된다. 단지 데이터 블록 또는 로그 블록 중 유효 페이지 개수가 적은 블록을 유효 페이지 개수가 많은 블록으로 복사하기만 하면 된다. 도 4의 예에서는, 데이터 블록 100의 유효 페이지를 로그 블록 300에 복사하면 되므로 단지 1번의 페이지 복사 과정이 필요하다. 이와 같이, 도 4에 도시된 본 발명의 병합 동작은 페이지 복사 횟수를 대폭 줄일 수 있어 메모리 시스템의 성능을 향상시킬 수 있다.
로그 블록 및 데이터 블록 내 페이지들을 비순차적(out-of-place) 방식으로 관리하기 위해서는 로그 블록 및 데이터 블록에 대한 페이지 맵핑 테이블이 필요하다. 비휘발성 메모리(도 1 참조, 150~152)들은 각각 메타 영역(도 2 참조, 251)에 로그 블록 및 데이터 블록의 페이지 맵핑 테이블을 저장하고 있다. 페이지 맵핑 테이블들은 메모리 컨트롤러(130) 내의 버퍼 메모리(도 1 참조, 133)에 로딩(loading)되어야 한다. 그러나 버퍼 메모리(133) 용량은 한정되어 있기 때문에 현재 액세스 되고 있는 데이터 블록에 대한 페이지 맵핑 테이블만 비휘발성 메모리로부터 버퍼 메모리로 로드된다. 로그 블록에 대한 페이지 맵핑 테이블은 액세스 여부에 상관없이 모두 버퍼 메모리에 로드될 수 있다.
도 5는 본 발명에 따른 메모리 카드 시스템의 쓰기 방법을 예시적으로 보여준다. 메모리 컨트롤러(도 1 참조, 130)는 쓰기 요청(write request)에 응답하여, 데이터 블록 100에 대응하는 제 1 로그 블록 300에 페이지 쓰기 동작을 수행한다.
2번 논리 페이지에 대한 쓰기 요청이 입력되면, 제 1 로그 블록 300의 제 1 물리 페이지(PPN1)에 대한 쓰기 동작이 수행된다. 다음으로, 3번 논리 페이지에 대한 쓰기 요청이 들어오면, 제 1 로그 블록 300의 제 2 물리 페이지(PPN2)에 대한 쓰기 동작이 수행된다. 그리고 0번 논리 페이지에 대한 쓰기 요청이 들어오면, 제 1 로그 블록 300의 제 3 물리 페이지(PPN3)에 대한 쓰기 동작이 수행된다.
이때, 페이지 갱신 요청이 입력된다고 가정하자.
예를 들어, 2번 논리 페이지에 대한 갱신 요청이 입력될 경우 기존 방법에서는 제 1 로그 블록 300의 제 4 물리 페이지(PPN4)에 쓰기 동작이 수행된다. 따라서 제 1 로그 블록 300의 제 1 물리 페이지(PPN1)는 무효 페이지(invalid page)가 되어 병합 동작을 수행할 경우 많은 횟수의 페이지 복사 과정이 필요하다.
본 발명에서는 제 1 로그 블록에 무효 페이지가 존재하지 않게 함으로써 데이터 블록과 로그 블록의 병합 시 페이지 복사 동작을 대폭적으로 줄일 수 있다. 도 5를 참조하면, 2번 논리 페이지에 대한 갱신 요청이 입력될 경우 자유 블록들로부터 새로운 로그 블록(제 2 로그 블록 500)을 할당받는다. 다음으로, 제 2 로그 블록 500의 제 1 물리 페이지(PPN1)에 쓰기 동작이 수행된다. 다시 2번 논리 페이지에 대한 갱신 요청이 들어오더라도 제 1 로그 블록 300이 아닌 제 2 로그 블록 500에 쓰기 동작이 수행된다. 따라서 제 1 로그 블록에는 무효 페이지가 존재하지 않게 된다.
도 6은 본 발명에 따른 데이터 블록과 로그 블록의 병합 방법을 예시적으로 보여준다.
메모리 컨트롤러(도 1 참조, 130)는 병합이 필요한 지 검사를 수행하여 필 요할 경우 병합 동작을 수행한다. 병합 동작은 데이터 블록과 대응하는 로그 블록의 유효 페이지만을 따로 모아 새로운 데이터 블록(new data block)을 생성하는 동작이다.
메모리 컨트롤러(130)는 새로운 로그 블록을 할당하기 위한 자유 블록이 없거나, 사용 가능한 로그 블록의 개수가 소정의 개수보다 적을 경우 병합 동작을 수행한다. 본 발명에서는 제 1 데이터 블록 100과 대응하는 로그 블록을 병합해야 할 경우, 제 1 데이터 블록 100과 무효 페이지가 존재하지 않는 제 1 로그 블록 300을 병합한다.
도 6을 참조하면, 제 1 로그 블록 300에 자유 페이지(free page)가 존재할 경우, 먼저 제 1 데이터 블록 100의 제 2 물리 페이지(PPN2)에 저장된 1번 논리 페이지를 제 1 로그 블록 300에 복사한다. 다음으로, 제 1 로그 블록 300은 제 2 데이터 블록 101로, 제 1 데이터 블록 100은 자유 블록으로, 그리고 제 2 로그 블록 500은 제 1 로그 블록으로 변경한다.
그러나 제 1 로그 블록 300에는 자유 페이지가 존재하지 않고 제 2 로그 블록 500에는 자유 페이지가 존재할 경우, 먼저 제 1 로그 블록 300의 유효 페이지들을 제 2 로그 블록 500의 자유 페이지에 복사한다. 다음으로, 제 2 로그 블록 500은 제 2 데이터 블록 101로, 제 1 로그 블록 300은 자유 블록으로 변경한다.
제 1 로그 블록 300에는 자유 페이지가 존재하지 않고 제 2 로그 블록 500에는 자유 페이지가 존재할 경우의 또 다른 병합 방법은, 먼저 제 1 데이터 블록 100과 제 1 로그 블록 300의 유효 페이지들을 제 2 로그 블록 500의 자유 페이지에 복사한다. 다음으로, 제 2 로그 블록 500은 제 2 데이터 블록 101로, 제 1 데이터 블록 100과 제 1 로그 블록 300은 자유 블록으로 변경한다.
제 1 로그 블록 300과 제 2 로그 블록 500에 모두 자유 페이지가 존재하지 않을 경우, 먼저 제 1 자유 블록을 할당한다. 여기서, 제 1 자유 블록은 일반적인 자유 블록들로부터 할당되는 것이 아니라 예비용으로 보유하고 있는 블록들로부터 할당된다. 다음으로, 제 1 로그 블록 300과 제 2 로그 블록 500의 유효 페이지들을 제 1 자유 블록에 복사한다. 다음으로, 제 1 로그 블록과 제 2 로그 블록은 자유 블록으로, 제 1 자유 블록은 제 1 데이터 블록으로 변경한다.
이와 같이, 도 6에 도시된 본 발명의 병합 동작은 제 1 로그 블록에 무효 페이지가 존재하지 않음으로써 페이지 복사 횟수를 대폭 줄일 수 있어 메모리 시스템의 성능을 향상시킬 수 있다.
메모리 컨트롤러(130)는 제 1 로그 블록에 자유 페이지(free page)가 없을 경우에, 예로서, 다음과 같은 세 가지 병합 동작을 수행할 수 있다.
첫째, 제 1 데이터 블록 100을 자유 블록으로 변경한다. 그리고 제 1 로그 블록 300을 제 1 데이터 블록으로, 제 2 로그 블록 500을 제 1 로그 블록으로 변경한다.
둘째, 제 2 로그 블록 500의 자유 페이지에 제 1 로그 블록 300의 유효 페이지들을 복사한다. 다음으로, 제 1 데이터 블록 100과 제 1 로그 블록 300을 자유 블록으로, 제 2 로그 블록 500을 제 1 데이터 블록으로 변경한다.
셋째, 제 1 자유 블록을 할당한다. 여기서, 제 1 자유 블록은 일반적인 자 유 블록들로부터 할당될 수도 있고, 예비용으로 보유하고 있는 블록들로부터 할당될 수도 있다. 다음으로, 제 2 로그 블록 500의 유효 페이지들을 제 1 자유 블록에 복사한다. 다음으로, 제 1 데이터 블록 100과 제 2 로그 블록 500을 자유 블록으로 변경한다. 그리고 제 1 로그 블록 300을 제 1 데이터 블록으로, 제 1 자유 블록을 제 1 로그 블록으로 변경한다.
한편, 제 1 및 제 2 로그 블록(300, 500)에 자유 페이지가 없는 경우에는 다음과 같이 병합 동작을 수행할 수 있다. 먼저, 제 1 자유 블록을 할당한다. 여기서, 제 1 자유 블록은 일반적인 자유 블록들로부터 할당될 수도 있고, 예비용으로 보유하고 있는 블록들로부터 할당될 수도 있다. 다음으로, 제 1 로그 블록 300과 제 2 로그 블록 500의 유효 페이지들을 제 1 자유 블록에 복사한다. 다음으로, 제 1 로그 블록 300과 제 2 로그 블록 500을 자유 블록으로, 제 1 자유 블록을 제 1 로그 블록으로 변경한다.
이와 같이, 제 1 로그 블록에 무효 페이지가 존재하지 않음으로써 페이지 복사 횟수를 대폭 줄일 수 있어 메모리 시스템의 성능을 향상시킬 수 있다.
도 7은 본 발명에 따른 메모리 카드 시스템의 쓰기 방법을 설명하기 위한 흐름도이다. 이하에서는 도 1에 도시된 메모리 카드 시스템을 참조하여, 도 7에 도시된 쓰기 방법을 상세하게 설명한다.
S110 단계에서, 메모리 컨트롤러(도 1 참조, 130)는 호스트(도 1 참조, 110)로부터 논리 주소, 데이터와 함께 쓰기 요청을 수신한다. 메모리 컨트롤러(130)는 논리 주소를 사용하여 버퍼 메모리(도 1 참조, 133) 상에 로딩되 어 있는 맵핑 테이블을 검색한다.
S120 단계에서, 메모리 컨트롤러(130)는 데이터 블록에 대응하는 로그 블록 및 해당 로그 블록 내에 자유 페이지의 존재 여부를 판단한다. 도 7을 참조하면, 메모리 컨트롤러(130)는 먼저 맵핑 테이블을 통해 데이터 블록을 찾고 대응하는 제 1 로그 블록이 있는지 판별한다(S121). S121 단계의 판별 결과, 제 1 로그 블록이 존재하지 않으면 S130 단계가 수행된다. 그러나 제 1 로그 블록이 존재하면 논리 주소를 사용하여 계산된 해당 페이지에 대한 최초의 쓰기 요청인 지를 판별한다(S123).
S123 단계의 판별 결과, 최초의 쓰기 요청이 아닌 경우에는 S140 단계가 수행된다. 그러나 최초의 쓰기 요청일 경우에는 제 1 로그 블록에 자유 페이지가 존재하는 지 판별한다(S125). S125 단계의 판별 결과, 자유 페이지가 존재하지 않으면 S143 단계가 수행된다. 그러나 자유 페이지가 존재할 경우에는 제 1 로그 블록의 자유 페이지에 호스트로부터 전송된 데이터를 쓴다(S127). 다음으로, 맵핑 테이블을 갱신하고(S150), 쓰기 동작을 완료한다.
S130 단계는 S121 단계에서 데이터 블록에 대응하는 제 1 로그 블록이 존재하지 않는 경우에 수행된다. 해당 제 1 로그 블록이 존재하지 않는 경우에, 메모리 컨트롤러(130)는 자유 블록으로부터 새로운 로그 블록을 할당할 수 있는지 판별한다(S131). S131 단계의 판별 결과, 새로운 로그 블록을 할당할 수 있으면, 해당 로그 블록의 자유 페이지에 쓰기 동작을 수행하고(S135), 맵핑 테이블을 갱신한다(S150). 그러나 S131 단계의 판별 결과, 새로운 로그 블록을 할당할 수 없 으면, 병합 동작을 수행(S133)한 다음에, S135 단계 및 S150 단계를 수행한다.
S140 단계는 S123 단계에서, 해당 페이지에 대한 최초의 쓰기 요청이 아닌 경우에 수행된다. 즉, S140 단계는 해당 페이지에 대한 갱신 요청일 경우에 수행된다. 먼저, 제 2 로그 블록이 존재하는 지를 판별한다(S141). S141 단계의 판별 결과, 제 2 로그 블록이 존재하지 않으면 자유 블록으로부터 새로운 로그 블록을 할당할 수 있는 지를 판별한다(S131). 그리고 앞에서 언급한 S133 단계, S135 단계, 그리고 S150 단계를 수행한다. 그러나 제 2 로그 블록이 존재하면 제 2 로그 블록에 자유 페이지가 존재하는 지를 판별한다(S143).
S143 단계의 판별 결과, 자유 페이지가 존재할 경우 제 2 로그 블록의 자유 페이지에 호스트로부터 전송된 데이터를 쓰고(S145), 맵핑 테이블을 갱신한다(S150). S141 단계의 판별 결과, 제 2 로그 블록의 자유 페이지가 존재하지 않으면, 병합 동작을 수행(S133)한 다음에, S135 단계 및 S150 단계를 수행한다.
이상에서 살펴 본 바와 같이, 본 발명에 따른 메모리 카드 시스템은 해당 페이지에 대한 최초의 쓰기 요청인지 갱신 요청인지에 따라 로그 블록을 다르게 함으로써 무효 페이지를 없앨 수 있다. 또한, 본 발명은 데이터 블록 내 페이지들을 비순차적(out-of-place order) 방식으로 쓰기 동작을 수행함으로써, 병합 동작 시 페이지 복사 횟수를 줄일 수 있다. 본 발명은 이로 인해 메모리 카드 시스템의 성능을 향상시킬 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으 나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 일반적인 메모리 카드 시스템을 보여주는 블록도이다.
도 2는 도 1에 도시된 메모리 카드 시스템의 혼합 맵핑 방법을 보여주는 블록도이다.
도 3은 도 2에 도시된 데이터 블록과 로그 블록의 머지 방법을 설명하기 위한 개념도이다.
도 4는 본 발명에 따른 데이터 블록과 로그 블록의 병합 방법을 설명하기 위한 개념도이다.
도 5는 본 발명에 따른 메모리 카드 시스템의 쓰기 방법을 설명하기 위한 개념도이다.
도 6은 본 발명에 따른 데이터 블록과 로그 블록의 병합 방법을 설명하기 위한 개념도이다.
도 7은 도 5에 도시된 메모리 카드 시스템의 쓰기 방법을 설명하기 위한 흐름도이다.
* 도면의 주요 부분에 대한 부호 설명 *
100; 메모리 카드 시스템 110; 호스트
120; 메모리 카드 130; 메모리 컨트롤러
150~152; 비휘발성 메모리 220; 블록 맵핑 테이블
230, 250; 페이지 맵핑 테이블
Claims (27)
- 메모리 카드 시스템의 쓰기 방법에 있어서:소정의 페이지에 대한 쓰기 요청을 수신하는 단계;상기 페이지가 포함된 제 1 데이터 블록에 제 1 로그 블록을 할당하는 단계;상기 제 1 로그 블록에 쓰기를 수행하는 단계;상기 페이지에 대한 갱신 요청을 수신하는 단계;상기 제 1 데이터 블록에 제 2 로그 블록을 할당하는 단계; 및상기 제 2 로그 블록에 쓰기를 수행하는 단계를 포함하는 쓰기 방법.
- 삭제
- 제 1 항에 있어서,상기 제 1 또는 제 2 로그 블록에 자유 페이지가 존재하는지 여부를 검사하는 단계를 더 포함하는 쓰기 방법.
- 제 3 항에 있어서,상기 제 1 로그 블록에 자유 페이지가 없을 경우,상기 제 1 데이터 블록은 자유 블록으로 반환(return)하며, 상기 제 1 로그 블록은 상기 제 1 데이터 블록으로 변경하는 단계; 및상기 제 2 로그 블록을 상기 제 1 로그 블록으로 변경하는 단계를 더 포함하는 쓰기 방법.
- 삭제
- 제 3 항에 있어서,상기 제 1 로그 블록에 자유 페이지가 없을 경우,상기 제 2 로그 블록의 자유 페이지에 상기 제 1 로그 블록의 유효 페이지들을 복사하는 단계; 및상기 제 1 데이터 블록과 상기 제 1 로그 블록은 자유 블록으로 반환하며, 상기 제 2 로그 블록은 상기 제 1 데이터 블록으로 변경하는 단계를 더 포함하는 쓰기 방법.
- 제 3 항에 있어서,상기 제 1 로그 블록에 자유 페이지가 없을 경우,제 1 자유 블록을 상기 제 1 데이터 블록에 할당하는 단계;상기 제 2 로그 블록의 유효 페이지들을 상기 제 1 자유 블록에 복사하는 단계; 및상기 제 1 데이터 블록과 상기 제 2 로그 블록은 각각 제 2, 제 3 자유 블록으로 반환하며, 상기 제 1 로그 블록은 상기 제 1 데이터 블록으로, 상기 제 1 자유 블록은 상기 제 1 로그 블록으로 변경하는 단계를 더 포함하는 쓰기 방법.
- 제 3 항에 있어서,상기 제 2 로그 블록에 자유 페이지가 없을 경우,제 1 자유 블록을 상기 제 1 데이터 블록에 할당하는 단계;상기 제 1 로그 블록과 상기 제 2 로그 블록의 유효 페이지들을 상기 제 1 자유 블록에 복사하는 단계; 및상기 제 1 로그 블록과 상기 제 2 로그 블록은 각각 제 2, 제 3 자유 블록으로 반환하며, 상기 제 1 자유 블록은 상기 제 1 로그 블록으로 변경하는 단계를 더 포함하는 쓰기 방법.
- 제 1 항에 있어서,상기 제 1 또는 제 2 로그 블록을 할당하기 위한 사용 가능한 자유 블록이 존재하는 지 여부, 또는 사용 가능한 상기 로그 블록의 개수가 소정의 개수보다 적은지 여부를 검사하는 단계; 및제 2 데이터 블록 및 상기 제 2 데이터 블록에 할당된 제 3 로그 블록을 병합하여 제 3 데이터 블록을 생성하는 단계를 더 포함하되,상기 제 3 로그 블록은 상기 제 2 데이터 블록에 포함된 페이지에 대한 최초의 쓰기 요청에 응답하여 쓰인 상태이며,제 4 로그 블록은 상기 페이지에 대한 갱신 요청에 응답하여 쓰여진 상태인 것을 특징으로 하는 쓰기 방법.
- 삭제
- 제 9 항에 있어서,상기 제 3 로그 블록의 자유 페이지에 상기 제 2 데이터 블록의 해당 페이지들을 복사하는 단계;상기 제 2 데이터 블록은 자유 블록으로 반환하며, 상기 제 3 로그 블록은 상기 제 3 데이터 블록으로 변경하는 단계; 및상기 제 4 로그 블록을 상기 제 3 로그 블록으로 변경하는 단계를 더 포함하는 쓰기 방법.
- 삭제
- 제 9 항에 있어서,상기 제 4 로그 블록의 자유 페이지에 상기 제 2 데이터 블록과 상기 제 3 로그 블록의 유효 페이지들을 복사하는 단계; 및상기 제 2 데이터 블록과 상기 제 3 로그 블록은 자유 블록으로 반환하며, 상기 제 4 로그 블록은 상기 제 3 데이터 블록으로 변경하는 단계를 더 포함하는 쓰기 방법.
- 제 9 항에 있어서,상기 제 4 로그 블록의 자유 페이지에 상기 제 3 로그 블록의 유효 페이지들을 복사하는 단계; 및상기 제 3 로그 블록은 자유 블록으로 반환하며, 상기 제 4 로그 블록은 상기 제 3 데이터 블록으로 변경하는 단계를 더 포함하는 쓰기 방법.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080007647A KR101465789B1 (ko) | 2008-01-24 | 2008-01-24 | 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법 |
TW098102547A TWI494922B (zh) | 2008-01-24 | 2009-01-22 | 記憶卡系統中減少頁複製數的寫入與合併方法 |
US12/358,374 US8417872B2 (en) | 2008-01-24 | 2009-01-23 | Write and merge methods in memory card systems for reducing the number of page copies |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080007647A KR101465789B1 (ko) | 2008-01-24 | 2008-01-24 | 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090081657A KR20090081657A (ko) | 2009-07-29 |
KR101465789B1 true KR101465789B1 (ko) | 2014-11-26 |
Family
ID=40900386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080007647A KR101465789B1 (ko) | 2008-01-24 | 2008-01-24 | 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8417872B2 (ko) |
KR (1) | KR101465789B1 (ko) |
TW (1) | TWI494922B (ko) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110018157A (ko) * | 2009-08-17 | 2011-02-23 | 삼성전자주식회사 | 플래시 메모리 장치의 액세스 방법 |
TWI421869B (zh) * | 2009-10-14 | 2014-01-01 | Phison Electronics Corp | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 |
KR101734200B1 (ko) * | 2010-12-03 | 2017-05-11 | 삼성전자주식회사 | 적응적 머지를 수행하는 메모리 시스템 및 그것의 데이터 쓰기 방법 |
TWI479313B (zh) * | 2012-07-11 | 2015-04-01 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
CN103577344B (zh) * | 2012-07-20 | 2017-03-01 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
US10176048B2 (en) | 2014-02-07 | 2019-01-08 | International Business Machines Corporation | Creating a restore copy from a copy of source data in a repository having source data at different point-in-times and reading data from the repository for the restore copy |
US11194667B2 (en) | 2014-02-07 | 2021-12-07 | International Business Machines Corporation | Creating a restore copy from a copy of a full copy of source data in a repository that is at a different point-in-time than a restore point-in-time of a restore request |
US10372546B2 (en) | 2014-02-07 | 2019-08-06 | International Business Machines Corporation | Creating a restore copy from a copy of source data in a repository having source data at different point-in-times |
US11169958B2 (en) | 2014-02-07 | 2021-11-09 | International Business Machines Corporation | Using a repository having a full copy of source data and point-in-time information from point-in-time copies of the source data to restore the source data at different points-in-time |
US10387446B2 (en) | 2014-04-28 | 2019-08-20 | International Business Machines Corporation | Merging multiple point-in-time copies into a merged point-in-time copy |
KR102275710B1 (ko) | 2015-02-02 | 2021-07-09 | 삼성전자주식회사 | 오버-라이트가 가능한 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작방법 |
TWI566182B (zh) * | 2015-03-24 | 2017-01-11 | 群聯電子股份有限公司 | 儲存裝置管理方法與系統及其記憶體儲存裝置 |
TWI620115B (zh) * | 2015-06-17 | 2018-04-01 | 旺宏電子股份有限公司 | 用於寫入資料的方法及設備與儲存媒體 |
TWI601141B (zh) * | 2015-08-21 | 2017-10-01 | 晨星半導體股份有限公司 | 快閃記憶體的存取方法及相關的記憶體控制器與電子裝置 |
TWI571881B (zh) * | 2015-10-23 | 2017-02-21 | 群聯電子股份有限公司 | 有效資料合併方法、記憶體控制器與記憶體儲存裝置 |
US10455045B2 (en) | 2016-09-06 | 2019-10-22 | Samsung Electronics Co., Ltd. | Automatic data replica manager in distributed caching and data processing systems |
US10467195B2 (en) | 2016-09-06 | 2019-11-05 | Samsung Electronics Co., Ltd. | Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system |
CN115981875B (zh) * | 2023-03-21 | 2023-08-25 | 人工智能与数字经济广东省实验室(广州) | 内存存储***的增量更新方法、装置、设备、介质和产品 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100389867B1 (ko) * | 2001-06-04 | 2003-07-04 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7631138B2 (en) | 2003-12-30 | 2009-12-08 | Sandisk Corporation | Adaptive mode switching of flash memory address mapping based on host usage characteristics |
KR100638638B1 (ko) | 2004-09-03 | 2006-10-26 | 명지대학교 산학협력단 | 플래시 메모리의 제어 방법 |
US7395404B2 (en) * | 2004-12-16 | 2008-07-01 | Sandisk Corporation | Cluster auto-alignment for storing addressable data packets in a non-volatile memory array |
KR100684887B1 (ko) * | 2005-02-04 | 2007-02-20 | 삼성전자주식회사 | 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법 |
KR100684942B1 (ko) * | 2005-02-07 | 2007-02-20 | 삼성전자주식회사 | 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템 |
KR100806343B1 (ko) * | 2006-10-19 | 2008-02-27 | 삼성전자주식회사 | 플래시 메모리를 포함한 메모리 시스템 및 그것의 맵핑테이블 관리 방법 |
KR101086857B1 (ko) * | 2008-07-25 | 2011-11-25 | 주식회사 팍스디스크 | 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법 |
-
2008
- 2008-01-24 KR KR1020080007647A patent/KR101465789B1/ko not_active IP Right Cessation
-
2009
- 2009-01-22 TW TW098102547A patent/TWI494922B/zh active
- 2009-01-23 US US12/358,374 patent/US8417872B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100389867B1 (ko) * | 2001-06-04 | 2003-07-04 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
Also Published As
Publication number | Publication date |
---|---|
TW200933631A (en) | 2009-08-01 |
TWI494922B (zh) | 2015-08-01 |
KR20090081657A (ko) | 2009-07-29 |
US20090193191A1 (en) | 2009-07-30 |
US8417872B2 (en) | 2013-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101465789B1 (ko) | 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법 | |
KR100885181B1 (ko) | 그룹 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법 | |
US11030094B2 (en) | Apparatus and method for performing garbage collection by predicting required time | |
US8386746B2 (en) | Storage unit management methods and systems | |
KR100806343B1 (ko) | 플래시 메모리를 포함한 메모리 시스템 및 그것의 맵핑테이블 관리 방법 | |
US8364931B2 (en) | Memory system and mapping methods using a random write page mapping table | |
US8843699B2 (en) | Flash memory device with multi-level cells and method of writing data therein | |
US9436615B2 (en) | Optimistic data read | |
US9990277B2 (en) | System and method for efficient address translation of flash memory device | |
TWI399644B (zh) | 非揮發記憶體區塊管理方法 | |
US7287117B2 (en) | Flash memory and mapping control apparatus and method for flash memory | |
US20080082729A1 (en) | Device driver including a flash memory file system and method thereof and a flash memory device and method thereof | |
US11216368B2 (en) | Memory system for garbage collection using page offsets, invalid offset ratio, sequential ratio, and logical address prediction | |
KR101041837B1 (ko) | 파일저장 제어장치 및 방법 | |
US8856475B1 (en) | Efficient selection of memory blocks for compaction | |
KR20160106240A (ko) | 반도체 장치 및 그 동작 방법 | |
US20100318726A1 (en) | Memory system and memory system managing method | |
US20050169058A1 (en) | Data management apparatus and method used for flash memory | |
CN111831576A (zh) | 包括多个存储数据的区域的存储器***及其操作方法 | |
US11921641B1 (en) | Address translation for zoned namespace nonvolatile memory using a compacted logical-to-physical table | |
US11657000B2 (en) | Controller and memory system including the same | |
US20220164119A1 (en) | Controller, and memory system and data processing system including the same | |
US20240069775A1 (en) | Compaction of a Logical-to-Physical Table for Zoned Namespace Nonvolatile Memory | |
CN112527692A (zh) | 数据储存装置以及非挥发式存储器控制方法 |
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 | ||
LAPS | Lapse due to unpaid annual fee |