KR20020092487A - 플래시 메모리 관리방법 - Google Patents

플래시 메모리 관리방법 Download PDF

Info

Publication number
KR20020092487A
KR20020092487A KR1020010031124A KR20010031124A KR20020092487A KR 20020092487 A KR20020092487 A KR 20020092487A KR 1020010031124 A KR1020010031124 A KR 1020010031124A KR 20010031124 A KR20010031124 A KR 20010031124A KR 20020092487 A KR20020092487 A KR 20020092487A
Authority
KR
South Korea
Prior art keywords
block
log
page
data
data block
Prior art date
Application number
KR1020010031124A
Other languages
English (en)
Other versions
KR100389867B1 (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 KR10-2001-0031124A priority Critical patent/KR100389867B1/ko
Priority to JP2001384833A priority patent/JP3708047B2/ja
Priority to CNB01144049XA priority patent/CN1322428C/zh
Priority to US10/029,966 priority patent/US6938116B2/en
Publication of KR20020092487A publication Critical patent/KR20020092487A/ko
Application granted granted Critical
Publication of KR100389867B1 publication Critical patent/KR100389867B1/ko
Priority to US11/848,005 priority patent/USRE44052E1/en
Priority to US13/151,735 priority patent/USRE45577E1/en
Priority to US13/134,225 priority patent/USRE45222E1/en
Priority to US14/628,462 priority patent/USRE46404E1/en

Links

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/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4239Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with asynchronous protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

플래시 메모리 관리방법이 개시된다.
본 발명에 따르면, 쓰기가 수행되어 소정 데이터가 기록되어 있는 페이지에 쓰기가 요청되었을 때 상기 페이지가 포함된 데이터 블록에 대응되도록 마련된 로그 블록에 쓰기를 수행하고, 상기 페이지에 쓰기를 다시 요청받으면 상기 로그 블록 내의 비어있는 자유 페이지에 쓰기를 수행한다. 이에 따르면 동일한 페이지에 연속적으로 쓰기가 요청되는 경우에도 하나의 로그 블록 내에서 처리할 수 있기 때문에 플래시 메모리 자원의 효율성을 제고할 수 있다.

Description

플래시 메모리 관리방법{Flash memory management method}
본 발명은 플래시 메모리에 관한 것으로, 보다 상세하게는 플래시 메모리를 기반으로 한 시스템에 있어서 플래시 메모리 관리방법에 관한 것이다.
플래시 메모리는 전기적으로 데이터를 지우거나 쓸 수 있는 비휘발성 기억소자이다. 마그네틱 디스크 메모리를 기반으로 한 저장장치에 비해 플래시 메모리를 기반으로 한 그것은 전력소모가 적으며 크기가 작아서 마그네틱 디스크 메모리의 대안으로서 연구 및 개발이 활발하게 진행되고 있다. 특히, 플래시 메모리는 디지털 카메라, 모바일 폰, PDA(Personal Digital Assistant)와 같은 모바일 컴퓨팅 기기를 위한 저장장치로서 각광받을 것이 예상된다.
그러나, 플래시 메모리는 데이터의 덮어쓰기가 자유로운 마그네틱 디스크 메모리와 달리 데이터의 덮어쓰기가 불가능하다. 플래시 메모리에 데이터를 덮어쓰기 위해서는 먼저 데이터를 지워야한다. 즉, 메모리 셀들을 쓰기 가능한 초기상태로 되돌려놓아야 한다. 이와 같은 작업은 지우기(erase)라고 한다. 지우기는 일반적으로 쓰기에 비해 매우 긴 시간이 소요된다. 더욱이, 지우기는 쓰기보다 훨씬큰 블록 단위로 수행되기 때문에 쓰기가 요청되지 않은 부분까지 함께 지워지는 결과를 초래할 수 있다. 부득이하게 지워진 부분은 다시 쓰기를 통해 복원되어야 하므로 최악의 경우 데이터 하나의 쓰기 요청이 하나의 지우기와 지워진 단위 만큼의 쓰기를 필요로 하게 된다. 이와 같이 지우기와 쓰기의 실행 단위의 불일치로 인해 쓰기의 수행 성능은 읽기의 그것에 비해 현저히 떨어지며, 심지어 기계동작으로 인한 필연적인 지연을 수반하게 되는 마그네틱 디스크 기반의 저장장치의 그것보다 낮다. 따라서 플래시 메모리를 기반으로 한 저장장치의 설계에 있어서 쓰기의 성능개선은 핵심기술에 해당된다.
미국특허 No. 5,388,083은 요청된 쓰기가 선행되어야 하는 지우기에 의해 지연되는 것을 막기 위해 지우기를 수행하지 않고 빈 공간에 쓰는 대신 사용자가 요청한 논리적 주소를 플래시 메모리 상의 물리적 주소로 변환하는 캠(CAM) 구조를 제안하고 있다. 그러나 캠 구조를 구현하기 위해서는 값비싼 회로를 필요로 한다. 미국특허 No. 5,485,595는 쓰기가 요청된 경우 지우기를 수행하지 않고 빈 공간에 쓰는 대신 각 페이지의 부가 영역에 논리적 주소를 기입하며 부가 영역에 기록된 논리적 주소를 순차적으로 검색하여 읽기를 수행하는 방식을 제안하고 있다. 그러나 이와 같은 주소변환 메커니즘은 NAND 타입의 플래시 메모리와 같이 읽기의 단위가 큰 경우에는 흩어져 저장된 주소변환 정보를 읽는데 적지 않은 시간이 소요되어 실효성이 낮은 문제점이 있다.
미국특허 No. 5,845,313은 저장장치를 초기화할 때 플래시 메모리에 저장된 논리적 주소를 스캐닝하여 별도의 RAM에 직접 주소 변환을 수행할 수 있는 선형적인 주소변환 테이블을 구축하는 방법을 제시하고 있다. 그러나 주소변환 테이블을 저장하기 위해서는 대용량 RAM이 필요하다. 예를 들어, 전체 저장용량이 32MB이고 페이지의 크기가 512B인 플래시 메모리 기반 저장장치의 주소변환 테이블을 저장하기 위해서는 65,536개의 페이지 당 2B가 필요하므로 총 128KB의 RAM이 필요하게 된다. 이러한 요구량은 모바일 기기 등 자원이 귀한 소규모 시스템에 있어서는 지나치게 크다.
미국특허 No. 5,404,485는 쓰기를 위해 새로운 블록(교체 블록)을 할당하고 할당된 블록에 쓰기를 수행하는 방식을 제안하고 있다. 그러나, 이에 따르면 쓰기를 위해 계속 새로운 블록이 할당되므로 동일한 페이지가 기록된 서로 다른 버전의 복수개의 블록이 존재하게 된다. 즉, 묵시적으로 모든 블록마다 적어도 하나의 교체 블록이 존재할 것을 요구하여 플래시 메모리의 용량이 상당히 줄어들게 된다. 또한, 새로운 블록에 쓰여지는 페이지는 항상 이전 블록의 그것과 동일한 위치에 쓰여져야 하므로, 특정 페이지에 대해서만 잦은 갱신이 이루어지고 나머지 페이지는 갱신이 거의 없는 경우 특정 페이지의 내용만 상이할 뿐 나머지 페이지의 내용은 동일한 교체 블록이 복수개 존재하게 되어 플래시 메모리의 저장공간의 낭비가 심하게 되는 문제점이 있다. 이에, 모바일 기기 등 소규모 시스템에 적합하지 않다.
따라서, 본 발명의 목적은 플래시 메모리의 성능을 개선시킬 수 있는 플래시 메모리 기반 시스템 및 그 관리방법을 제공하는 것이다.
본 발명의 다른 목적은 전원 차단 등의 비상시에 일관성있는 데이터의 복원이 가능한 플래시 메모리 기반 시스템 및 그 관리방법을 제공하는 것이다.
본 발명의 또 다른 목적은 FAT(File Allocation Table) 기반으로 한 DOS 파일시스템에서와 같이 특정 페이지에 대한 데이터 갱신이 잦은 환경에서도 시스템의 성능이 저하되지 않는 플래시 메모리 기반 시스템 및 그 관리방법을 제공하는 것이다.
도 1은 본 발명의 바람직한 실시예에 따른 플래시 메모리 기반 시스템의 블록도,
도 2는 본 발명에 따라 플래시 메모리(1)에 마련되어 일반 데이터가 저장되기 위한 블록들을 설명하기 위한 참고도,
도 3은 로그 블록과 데이터 블록에 대한 읽기를 설명하기 위한 참고도,
도 4는 본 발명의 일 실시예에 따른 플래시 메모리(1)의 영역 분할을 설명하기 위한 참고도,
도 5는 본 발명의 다른 실시예에 따른 플래시 메모리(1)의 영역 분할을 설명하기 위한 참고도,
도 6은 로그 포인터 테이블을 설명하기 위한 참고도,
도 7은 로그 포인터 테이블 엔트리의 구조도,
도 8은 로그 포인터 테이블과 플래시 메모리(1)의 참조관계도,
도 9는 지우기-가능 블록을 설명하기 위한 참고도,
도 10은 단순 병합의 개념도,
도 11은 복사 병합의 개념도,
도 12는 본 발명에 따른 블록 병합을 수행함에 따른 블록의 전이관계를 보여주는 관계도,
도 13은 본 발명에 따른 읽기방법을 설명하기 위한 플로우챠트,
도 14는 본 발명에 따른 쓰기방법을 설명하기 위한 플로우챠트,
도 15는 도 14의 블록 병합을 설명하기 위한 플로우챠트이다.
상기 목적은 플래시 메모리에 소정 데이터를 쓰는 방법에 있어서, (a) 쓰기가 수행되어 소정 데이터가 기록되어 있는 페이지에 쓰기를 요청받는 단계; (b) 상기 페이지가 포함된 데이터 블록에 대응되도록 마련된 로그 블록에 쓰기를 수행하는 단계; (c) 상기 페이지에 쓰기를 다시 요청받는 단계; 및 (d) 상기 로그 블록 내의 비어있는 자유 페이지에 쓰기를 수행하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 쓰기방법에 의해 달성된다.
상기 (b)단계는 (b11) 비어있는 자유 페이지에 쓰기를 수행하는 단계를 포함하거나, (b21) 상기 로그 블록을 할당하는 단계; 및 (b22) 상기 쓰기가 요청된 페이지의 상기 데이터 블록에서의 위치와 동일한 위치의 자유 페이지에 쓰기를 수행하는 단계를 포함하는 것이 바람직하다.
또한, 플래시 메모리에 소정 데이터를 쓰는 방법에 있어서, (a) 소정 페이지에 쓰기를 요청받는 단계; (b) 상기 페이지가 포함된 제1 데이터 블록에 대응되는 제1-1 로그 블록을 할당하는 단계; (c) 상기 제1-1 로그 블록 내의 비어있는자유 페이지에 쓰기를 수행하는 단계; (d) 상기 페이지에 쓰기를 다시 요청받는 단계; 및 (e) 상기 제1-1 로그 블록 내의 비어있는 자유 페이지에 쓰기를 수행하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 쓰기방법에 의해서도 달성된다.
상기 (b)단계는 (b1) 제2 데이터 블록 및 이에 대응되는 제2 로그 블록을 기초로 제3 데이터 블록을 생성하는 블록 병합을 수행하는 단계; 및 (b2) 상기 제2 데이터 블록에 대한 지우기를 수행하여 얻어진 자유 블록을 상기 제1 로그 블록으로 할당하는 단계를 포함하는 것이 바람직하다. 상기 (b1)단계는 상기 제1-1 로그 블록을 할당하기 위한 자유 블록이 존재하지 않을 때 수행되거나, 상기 제1 데이터 블록에 대응되는 기존의 로그 블록이 모두 사용 중일 경우 수행되는 것이 바람직하다.
또한, 상기 (b1)단계는 (b11) 상기 제2 로그 블록의 페이지와 상기 제2 데이터 블록의 페이지의 배열순서가 동일하고 일대일 대응되는 경우 상기 제2 로그 블록을 상기 제3 데이터 블록으로 전이시키는 교환 병합을 수행하는 단계를 포함하거나,
(b12) 상기 제2 로그 블록에 존재하는 페이지들이 모두 한번씩만 쓰기 요청된 경우 상기 제2 로그 블록의 자유 페이지에 상기 제2 데이터 블록의 해당 페이지를 복사하여 상기 제3 데이터 블록을 생성하는 복사 병합을 수행하는 단계를 포함하거나,
(b13) 데이터가 기록되어 있지 않은 자유 블록에 상기 제2 로그 블록에 존재하는 최신 페이지들을 복사하고, 나머지 자유 페이지에 상기 제2 데이터 블록의 해당 페이지를 복사하여 상기 제3 데이터 블록을 생성하는 단순 병합을 수행하는 단계를 포함하는 것이 더욱 바람직하다.
상기 (e)단계는 (e1) 상기 제1-1 로그 블록 내에 자유 페이지가 존재하지 않을 경우 새로운 제1-2 로그 블록을 할당하는 단계; 및 (e2) 상기 제1-2 로그 블록 내의 자유 페이지에 쓰기를 수행하는 단계를 포함하고, 상기 (e1)단계는 (e11) 상기 제1-1 로그 블록의 페이지와 상기 제1 데이터 블록의 페이지의 배열순서가 동일하고 일대일 대응되는 경우 상기 제1-1 로그 블록을 제2 데이터 블록으로 전이시키는 교환 병합을 수행하는 단계; 및 (e12) 상기 제1 데이터 블록에 대한 지우기를 수행하여 얻어진 자유 블록을 상기 제1-2 로그 블록으로 할당하는 단계를 포함하거나,
(e21) 상기 제1-1 로그 블록에 존재하는 페이지들이 모두 한번씩만 쓰기 요청된 경우 상기 제1-1 로그 블록의 자유 페이지에 상기 제1 데이터 블록의 해당 페이지를 복사하여 제2 데이터 블록을 생성하는 복사 병합을 수행하는 단계; 및 (e22) 상기 제1 데이터 블록에 대한 지우기를 수행하여 얻어진 자유 블록을 상기 제1-2 로그 블록으로 할당하는 단계를 포함하거나,
(e31) 자유 블록에 상기 제1-1 로그 블록에 존재하는 최신 페이지들을 복사하고, 나머지 자유 페이지에 상기 제1 데이터 블록의 해당 페이지를 복사하여 제2 데이터 블록을 생성하는 단순 병합을 수행하는 단계; 및 (e32) 상기 제1 데이터 블록 또는 상기 제1-1 로그 블록에 대한 지우기를 수행하여 얻어진 자유 블록을 상기제1-2 로그 블록으로 할당하는 단계를 포함하는 것이 특히 바람직하다.
상기 (e2)단계는 (e21) 쓰기가 요청된 페이지의 상기 데이터 블록에서의 위치와 동일한 위치의 자유 페이지에 쓰기를 수행하는 단계를 포함하는 것이 바람직하다.
한편, 본 발명의 다른 분야에 따르면, 상기 목적은 플래시 메모리로부터 소정 데이터를 읽는 방법에 있어서, (a) 로그 포인터 테이블에 요청된 페이지의 논리적 주소 중 블록 주소 부분이 기록된 엔트리를 검색하는 단계; (b) 검색된 엔트리에 상기 요청된 페이지의 논리적 주소가 기록되어 있는지 여부를 확인하는 단계; 및 (c) 검색된 엔트리에 기록된 대응 로그 블록의 물리적 주소와, 검색된 논리적 주소의 상기 검색된 엔트리에서의 기록 위치를 참조하여 상기 로그 블록의 해당 페이지에 접근하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 읽기방법에 의해서도 달성된다.
상기 (c)단계는 상기 로그 블록의 해당 페이지에 접근 함에 있어 상기 검색된 논리적 주소의 상기 검색된 엔트리에서의 기록 위치와 동일한 위치의 페이지에 접근하는 것이 바람직하다.
한편, 본 발명의 다른 분야에 따르면, 상기 목적은, 데이터 블록, 및 상기 데이터 블록을 갱신하기 위한 데이터를 쓰기 위한 로그 블록을 포함하는 플래시 메모리를 관리하는 방법에 있어서, (a) 제1 데이터 블록의 페이지와 상기 제1 데이터 블록에 대응되는 제1 로그 블록의 페이지의 배열순서가 동일하고 일대일 대응되는 경우 상기 제1 로그 블록을 제2 데이터 블록으로 전이시키는 단계; 및 (b) 주소변환 정보를 갱신하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 관리방법에 의해서도 달성된다.
또한, 데이터 블록, 및 상기 데이터 블록을 갱신하기 위한 데이터를 쓰기 위한 로그 블록을 포함하는 플래시 메모리를 관리하는 방법에 있어서, (a) 제1 로그 블록에 존재하는 페이지들이 모두 한번씩만 쓰기 요청된 경우 상기 제1 로그 블록의 자유 페이지에 대응 제1 데이터 블록의 해당 페이지를 복사하여 제2 데이터 블록을 생성하는 단계; 및 (b) 주소변환 정보를 갱신하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 관리방법에 의해서도 달성된다.
또한, 데이터 블록, 및 상기 데이터 블록을 갱신하기 위한 데이터를 쓰기 위한 로그 블록을 포함하는 플래시 메모리를 관리하는 방법에 있어서, (a) 데이터가 기록되어 있지 않은 자유 블록에 제1 로그 블록에 존재하는 최신 페이지들을 복사하고, 나머지 자유 페이지에 대응 제1 데이터 블록의 해당 페이지를 복사하여 제2 데이터 블록을 생성하는 단계; 및 (b) 주소변환 정보를 갱신하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 관리방법에 의해서도 달성된다.
상기 (a)단계 이전에 (a0) 상기 (a)단계 또는 (b)단계의 수행 중 시스템이 중단되는 경우 데이터를 복구하기 위한 복구 정보를 기록하는 단계를 더 포함하는 것이 바람직하다.
상기 플래시 메모리 관리방법은 (c) 상기 (a)단계 또는 (b)단계의 수행 중 시스템이 중단되는 경우 상기 복구 정보를 참조하여 데이터를 복원하는 단계를 더 포함하는 것이 바람직하다.
상기 복구 정보는 상기 자유 블록의 리스트, 로그 블록의 리스트, 상기 로그 블록을 관리하기 위한 데이터 구조인 로그 포인터 테이블을 포함하며, 상기 로그 포인터 테이블에는 로그 블록에 대응되는 갯수의 로그 포인터 테이블 엔트리가 구성되어 있고, 각 엔트리에는 대응 데이터 블록의 논리적 주소와 해당 로그 블록의 물리적 주소가 매핑되어 있으며, 해당 로그 블록 내의 각 페이지들의 물리적 배열 순서에 따라 해당 데이터 블록의 요청된 페이지의 논리적 주소가 기록되어 있다.
또한, 상기 목적은, 데이터 블록, 및 상기 데이터 블록을 갱신하기 위한 데이터를 쓰기 위한 로그 블록을 포함하는 플래시 메모리를 관리하는 방법에 있어서, (a) 플래시 메모리의 소정 영역을 할당하고 할당된 영역에 복구 정보로서 상기 데이터 블록 및 상기 로그 블록의 리스트, 및 상기 로그 블록을 관리하기 위한 데이터 구조를 기록하는 단계; (b) 시스템이 중단되는 경우 상기 복구 정보를 기초로 현재 플래시 메모리에 기록된 상태를 점검하여 오류 발생 여부를 확인하는 단계; 및 (c) 오류가 발생된 경우 상기 복구 정보를 참조하여 데이터를 복원하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 관리방법에 의해서도 달성된다.
이하, 첨부된 도면을 참조하여 본 발명 바람직한 실시예를 설명한다.
도 1은 본 발명의 바람직한 실시예에 따른 플래시 메모리 기반 시스템의 블록도이다.
도 1을 참조하면, 시스템은 플래시 메모리(1), ROM(2), RAM(3) 및 프로세서(4)를 구비한다. 프로세서(4)는 통상 ROM(2)에 기록되어 있는 프로그램코드와 결합되어 플래시 메모리(1) 또는 RAM(2)에 대한 일련의 읽기 또는 쓰기 명령을 발한다. 플래시 메모리(1)에는 본 발명의 플래시 메모리 관리방법에 따른 쓰기와 읽기가 수행된다. ROM(2)과 RAM(3)에는 프로세서(4)에서 수행되는 응용 프로그램 코드 또는 관련 데이터 구조가 저장된다.
도 2는 본 발명에 따라 플래시 메모리(1)에 마련되어 일반 데이터가 저장되기 위한 블록들을 설명하기 위한 참고도이다.
도2를 참조하면, 플래시 메모리(1)에는 복수개의 데이터 블록과 적어도 일부의 데이터 블록에 대응되도록 마련되는 로그 블록이 존재한다. 「데이터 블록」은 일반 데이터를 저장하는 블록을 가리키며, 「로그 블록」은 데이터 블록의 소정 부분을 수정하고자 할 경우에 할당되어 수정 내용을 기록하는 용도로 활용되는 블록을 가리킨다. 따라서, 로그 블록은 오직 하나의 데이터 블록에 대응되며 해당 데이터 블록의 수정된 페이지들을 저장한다. 로그 블록에 저장되어 있는 페이지들은 데이터 블록에 저장되어 있는 해당 페이지보다 우선적으로 참조된다. 이처럼 우선적으로 참조되는 페이지를 본 명세서에서는 「유효 페이지」라고 한다. 더불어, 물리적으로 유효한 데이터가 기록되어 있더라도 유효 페이지에 의해 그 내용이 무시되는 페이지는 논리적인 의미에서 「무효 페이지」라고 부른다.
도 3은 로그 블록과 데이터 블록에 대한 읽기를 설명하기 위한 참고도이다.
도 3을 참조하면, 사용자로부터 논리적 주소(Logical address)와 함께 소정 페이지에 대한 읽기가 요청되면 프로세서(4)는 RAM(3)에 기록되어 있는 로그 포인터 테이블을 참조하여 해당 로그 블록이 존재하는지 여부를 확인하고, 존재할 경우그 로그 블록에 요청된 페이지가 유효하게 저장되어 있는지 여부를 확인한다. 요청된 페이지가 유효하게 저장되어 있으면 로그 블록의 해당 페이지를 읽고 그렇지 않으면 해당 데이터 블록에 기록된 해당 페이지를 읽는다. 로그 포인터 테이블은 후술한다.
도 4는 본 발명의 일 실시예에 따른 플래시 메모리(1)의 영역 분할을 설명하기 위한 참고도이다. 도 4를 참조하면, 플래시 메모리(1)는 맵 영역, 로그 블록 영역, 데이터 블록 영역, 및 자유 블록 영역으로 분할될 수 있다. 맵 영역에는 주소변환 정보가 저장되고, 로그 블록 영역은 로그 블록으로 할당되기 위한 영역이며, 데이터 블록 영역은 일반 데이터가 기록되는 영역이고, 자유 블록 영역은 로그 블록 또는 데이터 블록으로 할당하기 위한 영역이다. 여기서, 각 영역은 논리적으로 분할된 영역을 의미한다. 따라서, 물리적으로는 서로 뒤섞여서 불연속적으로 존재할 수 있다. 특히, 데이터 블록 영역, 로그 블록 영역, 및 자유 블록 영역은 그러하다.
도 5는 본 발명의 다른 실시예에 따른 플래시 메모리(1)의 영역 분할을 설명하기 위한 참고도이다. 도 5를 참조하면, 플래시 메모리(1)는 맵 영역, 체크 포인트 영역, 로그 블록 영역, 데이터 블록 영역, 및 자유 블록 영역으로 분할될 수 있다. 본 실시예에서는 도 4의 영역 분할에 비해 체크 포인트 영역이 새롭게 마련되어 있다. 체크 포인트 영역에는 데이터 복구를 위해 필요한 복구 정보가 기록된다. 한편, 도 4의 경우와 마찬가지로, 맵 영역에는 주소변환 정보가 저장되고, 로그 블록 영역은 로그 블록으로 할당되기 위한 영역이며, 데이터 블록 영역은 일반데이터가 기록되는 영역이고, 자유 블록 영역은 로그 블록 또는 데이터 블록으로 할당하기 위한 자유 영역이다. 맵 영역에 기록되는 주소변환 정보 및 체크 포인트 영역에 기록되는 복구 정보에 대한 상세한 설명은 후술한다.
「로그 포인터 테이블」은 로그 블록의 관리를 위한 데이터 구조이다. 로그 포인터 테이블에는 대응 데이터 블록의 논리적 주소, 해당 로그 블록의 물리적 주소, 및 로그 블록 내의 각 페이지들의 물리적 배열 순서에 따라 해당 데이터 블록의 갱신된 페이지의 오프셋값(요청된 페이지의 논리적 주소)이 기록된다. 로그 포인터 테이블은 본 실시예에 따라 RAM(3)에 구축되어야 하므로 프로세서(4)가 로그 블록 영역을 스캔하여 구성한다. 도 6을 참조하면, 로그 포인터 테이블에는 로그 블록에 대응되는 갯수의 로그 포인터 테이블 엔트리가 배치되어 있다. 해당 페이지의 논리적 주소와 함께 쓰기 또는 읽기 명령이 요청되면 프로세서(4)는 로그 포인터 테이블을 참조하여 해당 엔트리의 존재여부에 따라 로그 블록 또는 데이터 블록에 접근하게 된다.
도 7은 로그 포인터 테이블 엔트리의 구조도이다.
도 7을 참조하면, 로그 포인터 테이블 엔트리에는 데이터 블록의 논리적 주소(log_blk)와 해당 로그 블록의 물리적 주소(phy_blk)가 기록되어 있다. 또한, 데이터 블록의 페이지가 기록된 순서대로 해당 로그 블록 내의 대응 페이지의 논리적 주소 page #0, page #1,‥,page #N가 기록되어 있다.
예를 들면, 1개의 블록에 16개의 페이지가 존재하는 경우 논리적 주소가 02FF(16진수)라면, 앞의 세자리 02F는 블록 주소를 의미하고, 마지막 한자리 F는해당 블록에 존재하는 페이지의 오프셋값이 된다. 따라서, 로그 포인터 테이블의 log_blk 중 02F가 있는지 여부를 검색하여 대응 로그 블록의 존재여부를 확인할 수 있다. 대응 로그 블록이 존재하면 요청된 페이지의 논리적 주소 02FF, 또는 오프셋값 F가 기록되어 있는지 여부를 확인하여 해당 로그 블록 내의 갱신된 페이지의 위치를 알 수 있다. 예를 들어, 만약 page #0가 F라면 로그 블록 내의 첫 번째 물리적 페이지에 요청된 페이지가 기록되어 있다.
이처럼, 요청된 논리적 주소 중 일부분, 즉 블록 주소 부분만을 사용하여 로그 블록의 존재 여부를 확인하여 해당 로그 블록에 접근하는 것을 「블록 어드레싱」이라 정의하고, 요청된 논리적 주소 전체(또는 오프셋값)를 사용하여 해당 로그 블록의 페이지에 액세스하는 것을 「페이지 어드레싱」으로 정의한다. 이처럼, 본 발명은 블록 어드레싱과 페이지 어드레싱을 함께 채용하여 동일한 페이지가 여러번 갱신되더라도 하나의 로그 블록에 이를 모두 기록할 수 있다.
도 8은 로그 포인터 테이블과 플래시 메모리(1)의 참조관계도이다.
도 8에 도시된 바와 같이, log_blk를 참조하여 해당 데이터 블록에 대한 로그 블록이 존재하는지를 검색할 수 있으며, phy_blk를 참조하여 대응 로그 블록이 기록된 위치를 알 수 있다. 또한, 로그 포인터 테이블 엔트리에는 본 실시예에 따라 해당 로그 블록의 각 페이지의 논리적 주소 page #0, page #1,‥,page #15가 기록될 수 있다. 본 실시예에서의 각 블록에는 16개의 페이지가 포함된다.
원칙적으로 갱신된 페이지들은 로그 블록에 기록됨에 있어 해당 데이터 블록의 대응 페이지와 동일한 위치에 기록된다. 실제로, 로그 블록에 갱신된 페이지가처음 기록되는 경우에는 데이터 블록의 해당 페이지와 동일한 위치에 기록될 수 있다. 그러나, 이후에는 반드시 그런 것은 아니다. 즉, 해당 데이터 블록의 소정 페이지가 나머지 페이지가 한번씩 갱신되기 이전에 재차 갱신되어야 하는 경우에는 해당 로그 블록의 나머지 빈 공간에 기록된다.
도 9는 지우기-가능 블록을 설명하기 위한 참고도이다.
데이터 블록의 모든 페이지들이 모두 한번씩만 갱신되면 로그 블록의 페이지들은 도 8에 도시된 바와 같이, 해당 데이터 블록의 각 페이지들에 일대일 대응된다. 이같은 경우에는 로그 블록이 해당 데이터 블록의 모든 내용을 포함하고 있으므로 해당 데이터 블록을 지우더라도 데이터의 손실은 발생되지 않는다. 이처럼 더 이상 유효한 데이터를 가지고 있지 않은(완전히 새도우된) 데이터 블록은 「지우기-가능(erasable) 블록」이라고 부른다. 지워진 블록은 「자유(free) 블록」이라 한다. 지우기-가능 블록은 언제라도 지울 수 있으며 자유 블록은 필요에 따라 데이터 블록 또는 로그 블록으로 할당할 수 있다.
한편, 본 발명에서는 「블록 병합(block merge)」이 수행된다. 블록 병합은 원칙적으로 쓰기가 반복되어 로그 블록에 쓰기 가능한 페이지가 존재하지 않게 되면 이루어진다. 이같은 경우, 블록 병합을 통해 로그 블록과 해당 데이터 블록을 합하여 새로운 데이터 블록을 생성하고 기존의 로그 블록은 지워서 자유 블록으로 만들어준다.
특히, 데이터 블록의 모든 페이지들이 모두 한번씩만 갱신되어 로그 블록과 데이터 블록의 페이지 배열이 동일한 경우 수행되는 블록 병합은 「교환병합(switch merge)」이라고 부른다.
로그 블록의 페이지와 해당 데이터 블록의 페이지의 배열이 일치하지 않을 경우에는 「단순 병합(simple merge)」이 이루어진다. 나아가, 로그 블록이 현재 모두 사용 중이기 때문에 새로 요청된 쓰기를 수행하기 위해 로그 블록이 다시 할당되어야 할 경우에도 수행된다. 이 같은 경우에는 병합 대상이 되는 로그 블록이 아직 사용되지 않은 자유 페이지를 가지고 있을 수 있다.
만약 로그 블록에 존재하는 페이지들이 단 한번씩만 갱신된 경우라면 비어 있는 페이지들을 데이터 블록의 해당 페이지들로 채움으로써 로그 블록을 데이터 블록으로 전이시킬 수 있으며, 이러한 블록 병합을 「복사 병합(copy merge)」이라고 한다. 정리하면, 블록 병합은 교환 병합, 단순 병합, 및 복사 병합의 세 가지가 있다.
교환 병합은 도 9를 참조하여 전술한 바와 같이 데이터 블록의 모든 페이지들이 모두 한번씩만 갱신된 로그 블록을 그대로 데이터 블록으로 전이시킴으로써 수행된다. 블록의 전이는 데이터 블록 또는 로그 블록에 기록된 데이터의 복사없이 주소변환 정보만을 갱신함으로써 이루어진다. 즉, 맵 영역에 기록된 주소변환 정보를 갱신하여 사용자가 요청한 논리적 주소에 대해 해당 로그 블록이 매핑되도록 한다. 맵 영역에는 블록 어드레싱을 가능하게 하기 위해 각 블록마다의 주소변환 정보가 기록되어 있다. 여기서, 무효 페이지는 전술한 바와 같이 유효 페이지로 인해 그 내용이 무시되는 페이지라는 의미로 사용된 것이며 실제 구현에 있어서는 물리적으로 유효한 페이지일 수 있다.
단순 병합에 의해, 도 10에 도시된 바와 같이, 새로운 자유 블록의 동일한 위치에 데이터 블록의 유효 페이지 및 해당 로그 블록의 유효 페이지를 기록하여 새로운 데이터 블록이 생성된다. 이에 기존의 데이터 블록과 로그 블록은 지우기-가능 블록이 된다.
복사 병합은 도 11에 도시된 바와 같이, 기존의 데이터 블록에 기록된 유효 페이지를 로그 블록의 자유 페이지에 복사함으로써 이루어진다. 기존의 데이터 블록은 지우기-가능 블록으로 전이된다. 블록 병합에 있어서 지칭되는 무효 페이지는 전술한 바와 같이 맨 먼저 참조되지 않는 페이지라는 의미로 사용된 것이며 실제 구현에 있어서는 물리적으로 유효한 페이지일 수 있다.
도 12는 본 발명에 따른 블록 병합을 수행함에 따른 블록의 전이관계를 보여주는 관계도이다.
도 12를 참조하면, 자유 블록은 로그 블록 또는 데이터 블록으로 전이된다. 로그 블록은 교환 병합 또는 복사 병합을 통해 데이터 블록으로 전이되거나 단순 병합을 통해 지우기-가능 블록으로 전이된다. 데이터 블록은 교환 병합, 단순 병합 및 복사 병합을 통해 지우기-가능 블록으로 전이될 수 있다. 지우기-가능 블록은 지워짐으로써 다시 자유 블록으로 전이된다.
블록 병합을 수행하기 위해서는 플래시 메모리(1)에 존재하는 자유 블록과 지우기-가능 블록에 대한 리스트를 가지고 있어야 한다. 자유 블록과 지우기-가능 블록의 리스트는 RAM(3)에 로그 포인터 테이블과 함께 기록되는 데이터 구조로서, 맵 영역 또는 체크 포인트 영역에 기록될 수 있다.
자유 블록의 리스트, 지우기-가능 블록의 리스트, 및 로그 포인터 테이블은 시스템이 초기화될 때 RAM(3)에 복원되어야 한다. 체크 포인트 영역은 이들의 신속하고 완전한 복구를 위해 필요한 복구 정보가 기록되기 위해 본 발명의 일 실시예에 따라 할당된 영역이다. 체크 포인트 영역이 설정되는 경우, 여기에는 복구 정보로서 앞서 언급한 바 있는 자유 블록의 리스트, 지우기-가능 블록의 리스트, 및 로그 블록의 리스트가 저장된다. 특히, 체크 포인트 영역에는 블록 병합의 수행 중 시스템의 폭주나 갑작스러운 전원 차단 등으로 정보가 손상되는 것을 방지하기 위해, 블록 병합을 수행하기 이전에 어떤 블록 병합을 수행할 것이며 그 결과 어떤 블록이 어떤 블록으로 전이될 것인지를 기술하는 플랜 로그(plan log)가 저장된다. 플랜 로그에는 수행하고자 하는 블록 병합의 종류, 자유 블록에서 데이터 블록으로 전이되는 블록, 자유 블록에서 로그 블록으로 전이되는 블록, 데이터 블록에서 자유 블록으로 전이되는 블록, 로그 블록에서 자유 블록으로 전이되는 블록의 물리적 주소가 기록된다. 체크 포인트 영역에는 주소변환 정보의 구축을 위해 필요한 정보(예를 들면 주소변환 정보가 저장된 위치)도 기록된다. 체크 포인트 영역 자체의 위치는 플래시 메모리(1)의 미리 정해진 블록에 기록된다.
상기와 같은 구성에 의해 본 발명의 바람직한 실시예에 따른 플래시 메모리 관리방법을 설명하면 다음과 같다. 이하에서는 본 발명에 따른 플래시 메모리 관리방법을 시스템 초기화에 수반되는 데이터 구조 구축 및 복구 방법, 읽기방법 및 쓰기방법으로 나누어 기술한다.
먼저 시스템 초기화에 수반되는 플래시 메모리 관리방법은 데이터 구조 구축 및 복구 방법을 의미한다. 즉, 쓰기 및 읽기에 필요한 데이터 구조(자유 블록의 리스트, 지우기-가능 블록의 리스트, 로그 블록의 리스트 및 로그 포인터 테이블) 및 주소변환 정보를 구축하고 구축된 정보의 일관성(integrity) 검사를 수행하여 복구 작업이 필요한 경우 복구 정보를 바탕으로 복구 작업을 수행하는 것을 의미한다. 도 1의 시스템이 초기화되면 프로세서(4)는 RAM(3)에 로그 포인터 테이블, 자유 블록의 리스트, 지우기-가능 블록의 리스트, 및 로그 블록의 리스트를 구축하여야 한다. 이를 위해 프로세서(4)는 플래시 메모리(1)의 체크 포인트 영역의 가장 최근에 기록된 페이지로부터 복구 정보를 읽어들인다. 복구 정보가 순차적으로 기록되는 경우에는 체크 포인트 영역에서 첫 번째로 발견되는 자유 페이지(비어있는 페이지)의 직전에 위치한 페이지에 최신의 복구 정보가 기록되기 때문이다. 다만, 전술한 가장 최근에 기록된 페이지의 식별이 가능한 한 복구 정보의 기록순서는 필요에 따라 변경할 수 있다.
로그 포인터 테이블은 복구 정보에 지정된 로그 블록들의 모든 페이지들을 스캐닝하여 매 페이지마다 부가되어 있는 영역에 저장된 논리적 주소를 읽어냄으로써 구축할 수 있다. 맵 영역에서도 주소변환 정보는 순차적으로 기록되므로 마지막으로 기록된 페이지(첫 번째 자유 페이지의 직전에 위치한 페이지)를 최종 변경된 것으로 간주하여 이를 기초로 주소변환 정보를 구축할 수 있다. 자유 블록 리스트와 지우기-가능 블록 리스트는 또한 복구 정보를 토대로 그대로 복구가 가능하다.
다음으로 플랜 로그를 참조하여 구축한 정보(자유 블록의 리스트, 지우기-가능 블록의 리스트, 로그 블록의 리스트 및 로그 포인터 테이블)를 검증한다. 다시 말해, 블록 병합을 수행하는 도중 시스템 동작이 중단된 경우 등이 발생되어 구축한 정보가 실제 상황과 맞는지 여부를 검사하여야 한다. 구체적으로, 시스템 동작이 중단되는 경우는 첫째, 체크 포인트 영역에 복구 정보를 쓰는 중, 둘째 블록 병합을 수행하는 중, 셋째 맵 영역에 주소변환 정보를 갱신하는 중, 넷째 지우기 중의 네 가지로 분류할 수 있으며, 각각의 경우 구축된 정보가 실제 상황과 맞는지 여부를 검사하여 맞지 않을 경우 복구하는 방법은 다음과 같다.
1. 체크 포인트 영역에 복구 정보를 쓰는 중에 시스템 동작이 중단된 경우: 체크 포인트 영역의 첫 번째 자유 페이지를 찾아 이 페이지가 실제로 자유 페이지인지 아닌지 여부를 데이터를 읽어 확인한다. 만약 자유 페이지가 비어있지 않다면 체크 포인트 영역에 복구 정보를 쓰는 중에 시스템의 동작이 중단된 것으로 판단할 수 있다. 이같은 경우는 실제 데이터가 쓰기가 수행되기 전이므로 별개의 복구절차를 밟을 필요가 없으며 다만 최종적으로 기록된 복구 정보를 무시한다.
2. 블록 병합을 수행하는 중에 시스템 동작이 중단된 경우: 플랜 로그에 데이터 블록으로 전이될 것으로 기재된 블록의 모든 페이지에 제대로 데이터가 기록되어 있는지(유효한지) 여부를 검사한다. 만일 하나의 페이지라도 유효하지 않다면 블록 병합 도중 시스템 동작이 중단된 것으로 판단할 수 있다. 이와 같은 경우에는 블록 병합을 다시 수행함으로써 데이터를 올바르게 복구할 수 있다.
3. 주소변환 정보의 갱신 중에 시스템 동작이 중단된 경우: 플랜 로그에 데이터 블록으로 전이될 것으로 기록된 블록으로부터 논리적 주소를 읽어들여 맵 영역에 기록된 정보와 일치하는지 여부를 확인한다. 일치하지 않으면 주소변환 정보를 갱신하는 중에 시스템 동작이 중단된 것으로 볼 수 있다. 이같은 경우에는 데이터 블록으로부터 얻은 논리적 주소와 해당 물리적 주소를 바탕으로 주소변환 정보를 수정함으로써 복원이 가능하다.
4. 지우기 중에 시스템 동작이 중단된 경우: 플랜 로그에 자유 블록으로 전이될 예정으로 기록된 블록들이 실제 자유 블록인지 여부를 검사한다. 자유 블록이 아니라면(페이지가 전부 비어 있지 않다면) 비어있지 않은 블록에 대해 지우기를 다시 수행한다.
시스템 초기화에 수반되는 플래시 메모리 관리방법을 통해 전술한 바와 같이 필요한 데이터 구조를 구축하고 일관성 검사까지 완료되면 읽기 및 쓰기를 할 수 있다.
도 13은 본 발명에 따른 읽기방법을 설명하기 위한 플로우챠트이다.
이해를 돕기 위해 읽기방법을 개관하면, 프로세서(4)는 요청된 페이지가 로그 블록에 존재하는지 여부를 검색하고, 검색된 로그 블록으로부터 해당 페이지를 읽어온다.
보다 구체적으로, 먼저 프로세서(4)는 요청된 페이지의 논리적 주소를 기초로 로그 포인터 테이블을 순차적으로 검색하여 부합하는 엔트리가 있는지 살펴본다(1301단계). 요청된 페이지의 논리적 주소는 블록 어드레싱 부분과 페이지 어드레싱 부분으로 결합되어 있기 때문에 블록 어드레싱 부분을 참조하여 엔트리를 검색한다. 부합되는 엔트리가 발견되면(1302단계), 발견된 엔트리를 검색하여 요청된 페이지가 존재하는지 살펴본다(1303단계)
해당 페이지가 발견되면 이를 읽는다(1305단계). 이 때, 동일한 페이지가 둘 이상 발견되면 동일한 오프셋값을 갖는 것을 제외하고 가장 마지막으로 발견된 것을 최신의 것으로 간주하여 로그 블록의 해당 페이지를 읽는다. 부합되는 엔트리가 발견되지 않거나(1302단계), 대응 로그 블록에 해당 페이지가 존재하지 않으면(1304단계) 요청된 논리적 주소를 기초로 데이터 블록 내의 해당 페이지를 읽는다(1306단계).
도 14는 본 발명에 따른 쓰기방법을 설명하기 위한 플로우챠트이다.
이해를 돕기 위해 쓰기방법을 개관하면, 프로세서(4)는 요청된 페이지가 로그 블록에 존재하는지 여부를 먼저 검색하고, 로그 블록이 존재할 경우 로그 블록에 요청된 페이지와 동일한 위치의 페이지가 사용가능한 상태인지 여부를 검사한다. 사용가능하면 해당 페이지에 쓰기를 수행하며, 그렇지 않은 경우에는 로그 블록의 사용가능한 다른 페이지에 쓰기를 수행하며, 로그 블록에 사용가능한 페이지가 존재하지 않으면 로그 블록을 새롭게 할당하여 동일한 위치에 쓰기를 수행한다.
보다 구체적으로, 프로세서(4)는 요청된 페이지의 논리적 주소에 기초하여 로그 포인터 테이블을 검색한다(1401단계). 엔트리가 발견되면(1402단계), 해당 로그 블록이 존재한다는 것을 의미하므로 엔트리를 검색하여 요청된 페이지와 동일한 오프셋값을 갖는 페이지가 사용가능한지 여부를 판단하고(1403단계), 사용가능하면 해당 페이지에 쓰기를 수행한다(1404단계). 여기서, 사용가능한 페이지라 함은 로그 블록의 해당 페이지에 아직 쓰기가 수행되지 않아 비어있는 페이지(자유 페이지)를 말한다. 자유 페이지가 존재하는지 여부는 엔트리를 검색하여 해당 페이지가 유효한지 여부(우선적으로 참조되는지, 즉 데이터가 기록되어 있는지)로 판단할 수 있다. 다음으로, 로그 포인터 테이블의 해당 엔트리에 쓰기가 수행된 페이지의 논리적 주소에 대응하는 물리적 주소를 기입한다. 이 경우 사용자의 쓰기 요청은 플래시 메모리에 대한 하나의 쓰기만으로 완료된다.
대응 로그 블록은 발견되었으나 오프셋값이 같은 페이지가 이미 사용되었다면(1403단계), 로그 블록 내에 다른 자유 페이지가 할당될 수 있는지 확인하고(1406단계), 할당된 자유 페이지에 쓰기를 수행한다(1407단계). 두 개 이상의 자유 페이지가 존재한다면 로그 블록의 시작 지점부터 순차적으로 검색하여 가장 가까운 페이지를 할당할 수 있다. 이어서, 로그 포인터 테이블의 대응 엔트리에 요청된 페이지의 논리적 주소에 대응되도록, 할당된 페이지의 물리적 주소를 기록한다(1405단계).
로그 포인터 테이블을 검색한 결과 요청된 페이지에 대한 대응 엔트리가 발견되지 않으면 새 로그 블록이 할당가능한지 여부를 확인한다(1408단계). 새 로그 블록으로 할당될 자유 블록이 남아 있으면 그 중 하나를 새 로그 블록으로 할당하고(1408단계), 자유 블록이 남아있지 않은 경우 블록 병합을 통해 자유 블록을 생성한 다음 생성된 자유 블록을 새 로그 블록으로 할당한다(1409단계). 할당된 로그 블록에 있어서 쓰기가 요청된 페이지와 동일한 오프셋값을 갖는 페이지에 쓰기를 수행한다(1410단계). 다음으로, 로그 포인터 테이블에 대응 엔트리를생성한다(1405단계).
도 15는 도 14의 블록 병합을 설명하기 위한 플로우챠트이다.
블록 병합은 앞서 설명한 바와 같이 로그 블록 내의 페이지 배치상태에 따라 각각 다른 방법으로 수행된다. 보다 구체적으로, 프로세서(4)는 로그 블록의 모든 페이지가 대응 데이터 블록의 그것과 동일한 위치에 있는지 여부를 확인하여(1501단계), 그러하면 로그 블록의 모든 페이지가 유효한지 여부를 확인한다(1502단계).
로그 블록의 모든 페이지가 데이터 블록의 그것과 동일하게 배치되어 있고 모두 유효하면 교환 병합이 수행된다. 한편, 프로세서(4)는 교환 병합을 수행하기 전에 체크 포인트 영역에 복구 정보를 기록한다(1503단계). 다만, 1503단계는 수행되지 않을 수 있다. 수행여부는 시스템 설계자의 선택사항이다. 교환 병합을 위해, 프로세서(4)는 상기 로그 블록을 새로운 데이터 블록이 되도록 맵 영역의 주소변환 정보를 갱신한다(1504단계). 즉, 로그 블록이 새로운 데이터 블록으로 전이되면 사용자 관점에서 논리적 주소에 대응되는 물리적 주소가 변경되므로 주소변환 정보의 갱신이 필요하게 된다. 실제로, 맵 영역의 첫 자유 페이지에 갱신된 주소변환 정보를 기록하면 된다. 맵 영역 또한 마찬가지로 순차적으로 기록되며 더 이상 자유 페이지가 없을 경우에는 자유 블록을 맵 영역으로 할당하여 기록한다. 자유 블록의 할당방법은 도 14를 참조하여 설명한 그것과 동일하게 이루어진다. 이에, 데이터 블록은 지우기-가능 블록으로 전이되며 따라서 데이터 블록을 지운 다음 체크 포인트 영역에 기록된 자유 블록 리스트를 갱신한다(1505단계).
로그 블록의 어느 한 페이지라도 데이터 블록의 그것과 동일하게 배치되어있지 않으면 단순 병합이 수행된다. 마찬가지로, 프로세서(4)는 단순 병합을 수행하기 전에 체크 포인트 영역에 복구 정보를 기록한다(1506단계). 1506단계 또한 시스템 설계자의 선택사항이다. 이어서, 자유 블록을 할당받아 여기에 로그 블록의 유효 페이지를 복사하고(1507단계), 나머지 부분은 데이터 블록의 해당 페이지를 기록한 다음(1508단계), 자유 블록이 새로운 데이터 블록이 되도록 맵 영역의 주소변환 정보를 갱신한다(1509단계). 자유 블록의 할당방법은 도 14를 참조하여 설명한 그것과 동일하게 이루어진다. 한편, 로그 블록과 데이터 블록은 지우기-가능 블록으로 전이되며 따라서 로그 블록과 데이터 블록을 지운 다음 체크 포인트 영역에 기록된 자유 블록 리스트를 갱신한다(1510단계).
로그 블록의 모든 페이지가 데이터 블록의 그것과 동일하게 배치되어 있지만 데이터 블록의 일부 페이지가 로그 블록에 존재하지 않으면 복사 병합이 수행된다. 마찬가지로, 프로세서(4)는 복사 병합을 수행하기 전에 체크 포인트 영역에 복구 정보를 기록한다(1511단계). 1511단계 또한 시스템 설계자의 선택사항이다. 이어서, 데이터 블록의 유효 페이지를 읽어 로그 블록에 복사한다(1512단계). 다음으로, 로그 블록을 새로운 데이터 블록이 되도록 맵 영역의 주소변환 정보를 갱신하고(1504단계), 데이터 블록을 지운 다음 체크 포인트 영역에 기록된 자유 블록 리스트를 갱신한다(1505단계).
이처럼, 데이터 갱신을 위한 로그 블록이 발견되지 않은 경우에는 자유 블록을 할당받아 로그 블록으로 전이시키고 여기에 쓰기를 수행한다. 자유 블록이 하나밖에 남지 않아 로그 블록을 할당할 수 없을 경우에는 기존의 로그 블록 중 임의의 하나를 선택하여 블록 병합을 수행함으로써 새로운 자유 블록을 확보하고 난 다음 로그 블록을 할당해야 한다. 이와 같은 상황에서는 블록 병합에 소요되는 비용과 블록들의 향후 사용 가능성을 적절히 고려하여 적절한 선택이 이루어져야 한다. 향후 사용 가능성은 수행하고자 하는 응용 프로그램의 특징에 종속될 수 있다. 본 발명에서는 교체 알고리즘에 대해 특별히 규정하지 않는다. 따라서 본 발명을 구현하기 위해 LRU와 같은 일반화된 교체 알고리즘을 사용하는 것도 가능하다.
전술한 바와 같이, 본 발명의 목적은 플래시 메모리의 성능을 개선시킬 수 있는 플래시 메모리 관리방법을 제공한다. 종래에는 하나의 데이터 블록의 일부를 갱신하기 위해 나머지 부분까지 복사하거나 대규모의 주소변환 정보를 필요로 하였다. 그러나, 본 발명에 따르면 동일한 페이지에 연속적으로 쓰기가 요청되는 경우에도 하나의 로그 블록 내에서 처리할 수 있기 때문에 플래시 메모리 자원의 효율성을 제고할 수 있다. 나아가, 블록 병합 수행 중에 전원 차단 등을 이유로 시스템이 중단되는 경우에도 일관성있는 데이터의 복원이 가능하다.

Claims (28)

  1. 플래시 메모리에 소정 데이터를 쓰는 방법에 있어서,
    (a) 쓰기가 수행되어 소정 데이터가 기록되어 있는 페이지에 쓰기를 요청받는 단계;
    (b) 상기 페이지가 포함된 데이터 블록에 대응되도록 마련된 로그 블록에 쓰기를 수행하는 단계;
    (c) 상기 페이지에 쓰기를 다시 요청받는 단계; 및
    (d) 상기 로그 블록 내의 비어있는 자유 페이지에 쓰기를 수행하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 쓰기방법.
  2. 제1항에 있어서,
    상기 (b)단계는
    (b11) 비어있는 자유 페이지에 쓰기를 수행하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 쓰기방법.
  3. 제1항에 있어서,
    상기 (b)단계는
    (b21) 상기 로그 블록을 할당하는 단계; 및
    (b22) 상기 쓰기가 요청된 페이지의 상기 데이터 블록에서의 위치와 동일한 위치의 자유 페이지에 쓰기를 수행하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 쓰기방법.
  4. 플래시 메모리에 소정 데이터를 쓰는 방법에 있어서,
    (a) 소정 페이지에 쓰기를 요청받는 단계;
    (b) 상기 페이지가 포함된 제1 데이터 블록에 대응되는 제1-1 로그 블록을할당하는 단계;
    (c) 상기 제1-1 로그 블록 내의 비어있는 자유 페이지에 쓰기를 수행하는 단계;
    (d) 상기 페이지에 쓰기를 다시 요청받는 단계; 및
    (e) 상기 제1-1 로그 블록 내의 비어있는 자유 페이지에 쓰기를 수행하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 쓰기방법.
  5. 제4항에 있어서,
    상기 (b)단계는
    (b1) 제2 데이터 블록 및 이에 대응되는 제2 로그 블록을 기초로 제3 데이터 블록을 생성하는 블록 병합을 수행하는 단계; 및
    (b2) 상기 제2 데이터 블록에 대한 지우기를 수행하여 얻어진 자유 블록을 상기 제1 로그 블록으로 할당하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 쓰기방법.
  6. 제5항에 있어서,
    상기 (b1)단계는 상기 제1-1 로그 블록을 할당하기 위한 자유 블록이 존재하지 않을 때 수행되는 것을 특징으로 하는 플래시 메모리 쓰기방법.
  7. 제5항에 있어서,
    상기 (b1)단계는 상기 제1 데이터 블록에 대응되는 기존의 로그 블록이 모두 사용 중일 경우 수행되는 것을 특징으로 하는 플래시 메모리 쓰기방법.
  8. 제5항에 있어서,
    상기 (b1)단계는
    (b11) 상기 제2 로그 블록의 페이지와 상기 제2 데이터 블록의 페이지의 배열순서가 동일하고 일대일 대응되는 경우 상기 제2 로그 블록을 상기 제3 데이터 블록으로 전이시키는 교환 병합을 수행하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 쓰기방법.
  9. 제5항에 있어서,
    상기 (b1)단계는
    (b12) 상기 제2 로그 블록에 존재하는 페이지들이 모두 한번씩만 쓰기 요청된 경우 상기 제2 로그 블록의 자유 페이지에 상기 제2 데이터 블록의 해당 페이지를 복사하여 상기 제3 데이터 블록을 생성하는 복사 병합을 수행하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 쓰기방법.
  10. 제5항에 있어서,
    상기 (b1)단계는
    (b13) 데이터가 기록되어 있지 않은 자유 블록에 상기 제2 로그 블록에 존재하는 최신 페이지들을 복사하고, 나머지 자유 페이지에 상기 제2 데이터 블록의 해당 페이지를 복사하여 상기 제3 데이터 블록을 생성하는 단순 병합을 수행하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 쓰기방법.
  11. 제4항에 있어서,
    상기 (e)단계는
    (e1) 상기 제1-1 로그 블록 내에 자유 페이지가 존재하지 않을 경우 새로운 제1-2 로그 블록을 할당하는 단계; 및
    (e2) 상기 제1-2 로그 블록 내의 자유 페이지에 쓰기를 수행하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 쓰기방법.
  12. 제11항에 있어서
    상기 (e1)단계는
    (e11) 상기 제1-1 로그 블록의 페이지와 상기 제1 데이터 블록의 페이지의 배열순서가 동일하고 일대일 대응되는 경우 상기 제1-1 로그 블록을 제2 데이터 블록으로 전이시키는 교환 병합을 수행하는 단계; 및
    (e12) 상기 제1 데이터 블록에 대한 지우기를 수행하여 얻어진 자유 블록을 상기 제1-2 로그 블록으로 할당하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 쓰기방법.
  13. 제11항에 있어서,
    상기 (e1)단계는
    (e21) 상기 제1-1 로그 블록에 존재하는 페이지들이 모두 한번씩만 쓰기 요청된 경우 상기 제1-1 로그 블록의 자유 페이지에 상기 제1 데이터 블록의 해당 페이지를 복사하여 제2 데이터 블록을 생성하는 복사 병합을 수행하는 단계; 및
    (e22) 상기 제1 데이터 블록에 대한 지우기를 수행하여 얻어진 자유 블록을 상기 제1-2 로그 블록으로 할당하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 쓰기방법.
  14. 제11항에 있어서,
    상기 (e1)단계는
    (e31) 자유 블록에 상기 제1-1 로그 블록에 존재하는 최신 페이지들을 복사하고, 나머지 자유 페이지에 상기 제1 데이터 블록의 해당 페이지를 복사하여 제2 데이터 블록을 생성하는 단순 병합을 수행하는 단계; 및
    (e32) 상기 제1 데이터 블록 또는 상기 제1-1 로그 블록에 대한 지우기를 수행하여 얻어진 자유 블록을 상기 제1-2 로그 블록으로 할당하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 쓰기방법.
  15. 제11항에 있어서,
    상기 (e2)단계는
    (e21) 쓰기가 요청된 페이지의 상기 데이터 블록에서의 위치와 동일한 위치의 자유 페이지에 쓰기를 수행하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 쓰기방법.
  16. 플래시 메모리로부터 소정 데이터를 읽는 방법에 있어서,
    (a) 로그 포인터 테이블에 요청된 페이지의 논리적 주소 중 블록 주소 부분이 기록된 엔트리를 검색하는 단계;
    (b) 검색된 엔트리에 상기 요청된 페이지의 논리적 주소가 기록되어 있는지 여부를 확인하는 단계; 및
    (c) 검색된 엔트리에 기록된 대응 로그 블록의 물리적 주소와, 검색된 논리적 주소의 상기 검색된 엔트리에서의 기록 위치를 참조하여 상기 로그 블록의 해당 페이지에 접근하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 읽기방법.
  17. 제16항에 있어서,
    상기 (c)단계는
    상기 로그 블록의 해당 페이지에 접근함에 있어 상기 검색된 논리적 주소의 상기 검색된 엔트리에서의 기록 위치와 동일한 위치의 페이지에 접근하는 것을 특징으로 하는 플래시 메모리 읽기방법.
  18. 데이터 블록, 및 상기 데이터 블록을 갱신하기 위한 데이터를 쓰기 위한 로그 블록을 포함하는 플래시 메모리를 관리하는 방법에 있어서,
    (a) 제1 데이터 블록의 페이지와 상기 제1 데이터 블록에 대응되는 제1 로그 블록의 페이지의 배열순서가 동일하고 일대일 대응되는 경우 상기 제1 로그 블록을 제2 데이터 블록으로 전이시키는 단계; 및
    (b) 주소변환 정보를 갱신하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 관리방법.
  19. 데이터 블록, 및 상기 데이터 블록을 갱신하기 위한 데이터를 쓰기 위한 로그 블록을 포함하는 플래시 메모리를 관리하는 방법에 있어서,
    (a) 제1 로그 블록에 존재하는 페이지들이 모두 한번씩만 쓰기 요청된 경우 상기 제1 로그 블록의 자유 페이지에 대응 제1 데이터 블록의 해당 페이지를 복사하여 제2 데이터 블록을 생성하는 단계; 및
    (b) 주소변환 정보를 갱신하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 관리방법.
  20. 데이터 블록, 및 상기 데이터 블록을 갱신하기 위한 데이터를 쓰기 위한 로그 블록을 포함하는 플래시 메모리를 관리하는 방법에 있어서,
    (a) 데이터가 기록되어 있지 않은 자유 블록에 제1 로그 블록에 존재하는 최신 페이지들을 복사하고, 나머지 자유 페이지에 대응 제1 데이터 블록의 해당 페이지를 복사하여 제2 데이터 블록을 생성하는 단계; 및
    (b) 주소변환 정보를 갱신하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 관리방법.
  21. 제18항 내지 제20항 중 어느 한 항에 있어서,
    상기 (a)단계 이전에
    (a0) 상기 (a)단계 또는 (b)단계의 수행 중 시스템이 중단되는 경우 데이터를 복구하기 위한 복구 정보를 기록하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 관리방법.
  22. 제21항에 있어서,
    (c) 상기 (a)단계 또는 (b)단계의 수행 중 시스템이 중단되는 경우 상기 복구 정보를 참조하여 데이터를 복원하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 관리방법.
  23. 제22항에 있어서,
    상기 복구 정보는 상기 자유 블록의 리스트, 로그 블록의 리스트, 상기 로그 블록을 관리하기 위한 데이터 구조인 로그 포인터 테이블을 포함하는 것을 특징으로 하는 플래시 메모리 관리방법.
  24. 제23항에 있어서,
    상기 로그 포인터 테이블에는 로그 블록에 대응되는 갯수의 로그 포인터 테이블 엔트리가 구성되어 있고, 각 엔트리에는 대응 데이터 블록의 논리적 주소와 해당 로그 블록의 물리적 주소가 매핑되어 있고, 해당 로그 블록 내의 각 페이지들의 물리적 배열 순서에 따라 해당 데이터 블록의 요청된 페이지의 논리적 주소가 기록되어 있는 것을 특징으로 하는 플래시 메모리 관리방법.
  25. 제23항에 있어서,
    상기 로그 포인터 테이블은 상기 로그 블록들이 기록된 로그 블록 영역을 스캔하여 필요한 정보를 얻어 구성되는 것을 특징으로 하는 플래시 메모리 관리방법.
  26. 데이터 블록, 및 상기 데이터 블록을 갱신하기 위한 데이터를 쓰기 위한 로그 블록을 포함하는 플래시 메모리를 관리하는 방법에 있어서,
    (a) 플래시 메모리의 소정 영역을 할당하고 할당된 영역에 복구 정보로서 상기 데이터 블록 및 상기 로그 블록의 리스트, 및 상기 로그 블록을 관리하기 위한 데이터 구조를 기록하는 단계;
    (b) 시스템이 중단되는 경우 상기 복구 정보를 기초로 현재 플래시 메모리에 기록된 상태를 점검하여 오류 발생 여부를 확인하는 단계; 및
    (c) 오류가 발생된 경우 상기 복구 정보를 참조하여 데이터를 복원하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 관리방법.
  27. 제26항에 있어서,
    상기 복구 정보는 자유 블록의 리스트를 더 포함하는 것을 특징으로 하는 플래시 메모리 관리방법.
  28. 제27항에 있어서,
    상기 로그 포인터 테이블에는 로그 블록에 대응되는 갯수의 로그 포인터 테이블 엔트리가 구성되어 있고, 각 엔트리에는 대응 데이터 블록의 논리적 주소와 해당 로그 블록의 물리적 주소가 매핑되어 있고, 해당 로그 블록 내의 각 페이지들의 물리적 배열 순서에 따라 해당 데이터 블록의 요청된 페이지의 논리적 주소가 기록되어 있는 것을 특징으로 하는 플래시 메모리 관리방법.
KR10-2001-0031124A 2001-06-04 2001-06-04 플래시 메모리 관리방법 KR100389867B1 (ko)

Priority Applications (8)

Application Number Priority Date Filing Date Title
KR10-2001-0031124A KR100389867B1 (ko) 2001-06-04 2001-06-04 플래시 메모리 관리방법
JP2001384833A JP3708047B2 (ja) 2001-06-04 2001-12-18 フラッシュメモリの管理方法
CNB01144049XA CN1322428C (zh) 2001-06-04 2001-12-28 闪速存储器管理方法
US10/029,966 US6938116B2 (en) 2001-06-04 2001-12-31 Flash memory management method
US11/848,005 USRE44052E1 (en) 2001-06-04 2007-08-30 Flash memory management method
US13/151,735 USRE45577E1 (en) 2001-06-04 2011-06-02 Method of writing to a flash memory including data blocks and log blocks
US13/134,225 USRE45222E1 (en) 2001-06-04 2011-06-02 Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table
US14/628,462 USRE46404E1 (en) 2001-06-04 2015-02-23 Flash memory management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0031124A KR100389867B1 (ko) 2001-06-04 2001-06-04 플래시 메모리 관리방법

Publications (2)

Publication Number Publication Date
KR20020092487A true KR20020092487A (ko) 2002-12-12
KR100389867B1 KR100389867B1 (ko) 2003-07-04

Family

ID=19710358

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0031124A KR100389867B1 (ko) 2001-06-04 2001-06-04 플래시 메모리 관리방법

Country Status (4)

Country Link
US (5) US6938116B2 (ko)
JP (1) JP3708047B2 (ko)
KR (1) KR100389867B1 (ko)
CN (1) CN1322428C (ko)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100526188B1 (ko) * 2003-12-30 2005-11-04 삼성전자주식회사 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
KR100577384B1 (ko) * 2004-07-28 2006-05-10 삼성전자주식회사 페이지 정보를 이용한 페이지 대체 방법
KR100684887B1 (ko) * 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
KR100687151B1 (ko) * 2004-05-27 2007-02-27 가부시끼가이샤 도시바 메모리 카드, 반도체 장치, 및 반도체 메모리의 제어 방법
KR100695267B1 (ko) * 2004-08-23 2007-03-14 에스케이 텔레콤주식회사 이동통신 단말기의 랜덤 액세스 메모리의 저장 공간을절감하는 방법
US7287117B2 (en) 2003-12-10 2007-10-23 Samsung Electronics Co. Ltd. Flash memory and mapping control apparatus and method for flash memory
KR100801072B1 (ko) * 2005-09-30 2008-02-11 삼성전자주식회사 플래시 메모리, 이를 위한 맵핑 장치 및 방법
JP2008103071A (ja) * 2006-10-19 2008-05-01 Samsung Electronics Co Ltd 不揮発性メモリ装置およびそれを動作させる方法
EP1923792A1 (en) 2006-11-20 2008-05-21 Samsung Electronics Co., Ltd Apparatus and method of managing nonvolatile memory
US7529879B2 (en) 2004-06-30 2009-05-05 Samsung Electronics Co., Ltd. Incremental merge methods and memory systems using the same
KR100954039B1 (ko) * 2008-08-11 2010-04-20 (주)인디링스 플래시 메모리 제어 방법 및 제어 장치
WO2010067919A1 (ko) * 2008-12-08 2010-06-17 주식회사 이스트후 플래시 메모리 시스템 및 플래시 메모리의 관리 방법
KR100970537B1 (ko) * 2008-11-20 2010-07-16 서울시립대학교 산학협력단 Ssd 관리 장치 및 방법
KR101011434B1 (ko) * 2008-10-28 2011-01-28 코오롱건설주식회사 침지형분리막여과조의 공기공급장치
US7899974B2 (en) 2005-01-12 2011-03-01 Samsung Electronics Co., Ltd. Nonvolatile memory, mapping control apparatus and method of the same
US8117374B2 (en) 2005-02-07 2012-02-14 Samsung Electronics Co., Ltd. Flash memory control devices that support multiple memory mapping schemes and methods of operating same
US8122193B2 (en) 2004-12-21 2012-02-21 Samsung Electronics Co., Ltd. Storage device and user device including the same
US8417872B2 (en) 2008-01-24 2013-04-09 Samsung Electronics Co., Ltd. Write and merge methods in memory card systems for reducing the number of page copies
US8423706B2 (en) 2007-07-04 2013-04-16 Samsung Electronics Co., Ltd. Apparatus and method to prevent data loss in nonvolatile memory
KR101477047B1 (ko) * 2008-02-29 2014-12-30 삼성전자주식회사 메모리 시스템 및 그것의 블록 병합 방법
KR101519069B1 (ko) * 2013-12-03 2015-05-12 에스케이텔레콤 주식회사 메모리장치 및 메모리장치의 동작 방법
US9837166B2 (en) 2016-03-21 2017-12-05 SK Hynix Inc. Data storage device and operating method thereof

Families Citing this family (129)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7108975B2 (en) * 2001-09-21 2006-09-19 Regents Of The University Of Michigan Atlastin
JP3967121B2 (ja) * 2001-12-11 2007-08-29 株式会社ルネサステクノロジ ファイルシステム、ファイルシステム制御方法およびファイルシステムを制御するためのプログラム
US7111289B2 (en) * 2001-12-21 2006-09-19 Agere Systems, Inc. Method for implementing dual link list structure to enable fast link-list pointer updates
CN101114255A (zh) * 2002-08-29 2008-01-30 松下电器产业株式会社 用于将数据写入快闪存储设备的半导体存储器的装置和方法
KR100484485B1 (ko) * 2002-10-01 2005-04-20 한국전자통신연구원 비휘발성 메모리에의 데이터 저장 방법 및 장치
US6910106B2 (en) * 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
JP3928724B2 (ja) * 2003-02-20 2007-06-13 ソニー株式会社 記録媒体の記録制御方法および記録媒体の記録制御装置
CN100511181C (zh) * 2003-08-29 2009-07-08 松下电器产业株式会社 非易失性存储装置及其写入方法
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
KR100533683B1 (ko) * 2004-02-03 2005-12-05 삼성전자주식회사 플래시 메모리의 데이터 관리 장치 및 방법
JP4701618B2 (ja) * 2004-02-23 2011-06-15 ソニー株式会社 情報処理装置及び情報処理方法、並びにコンピュータ・プログラム
CN100437517C (zh) * 2004-04-28 2008-11-26 松下电器产业株式会社 非易失性存储装置和数据写入方法
WO2005106673A1 (ja) * 2004-04-28 2005-11-10 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置及びデータ書込み方法
JP2006003966A (ja) * 2004-06-15 2006-01-05 Oki Electric Ind Co Ltd フラッシュメモリの書込方法
US7302543B2 (en) * 2004-06-16 2007-11-27 Nec Laboratories America, Inc. Compressed memory architecture for embedded systems
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US20090172269A1 (en) * 2005-02-04 2009-07-02 Samsung Electronics Co., Ltd. Nonvolatile memory device and associated data merge method
US20060184718A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US20060184719A1 (en) 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US7877539B2 (en) 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
KR100703753B1 (ko) * 2005-04-14 2007-04-06 삼성전자주식회사 파일 시스템 관리 장치 및 방법
US7275140B2 (en) * 2005-05-12 2007-09-25 Sandisk Il Ltd. Flash memory management method that is resistant to data corruption by power loss
KR100706246B1 (ko) * 2005-05-24 2007-04-11 삼성전자주식회사 읽기 성능을 향상시킬 수 있는 메모리 카드
JP4723921B2 (ja) * 2005-06-13 2011-07-13 株式会社日立製作所 記憶制御装置及びその制御方法
US20060294049A1 (en) * 2005-06-27 2006-12-28 Microsoft Corporation Back-off mechanism for search
US7685380B1 (en) * 2005-06-29 2010-03-23 Xilinx, Inc. Method for using configuration memory for data storage and read operations
JP4547028B2 (ja) * 2005-08-03 2010-09-22 サンディスク コーポレイション ブロック管理を伴う不揮発性メモリ
US7949845B2 (en) 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7480766B2 (en) * 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7669003B2 (en) 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7552271B2 (en) * 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7558906B2 (en) * 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
WO2007019155A1 (en) * 2005-08-03 2007-02-15 Sandisk Corporation Reclaiming data storage capacity in flash memory systems
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7474559B1 (en) 2005-08-30 2009-01-06 Xilinx, Inc. Circuit and method for employing unused configuration memory cells as scratchpad memory
CN100573476C (zh) * 2005-09-25 2009-12-23 深圳市朗科科技股份有限公司 闪存介质数据管理方法
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7814262B2 (en) 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
US7516267B2 (en) * 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US20070136671A1 (en) * 2005-12-12 2007-06-14 Buhrke Eric R Method and system for directing attention during a conversation
US8914557B2 (en) * 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
EP1966701A2 (en) * 2005-12-21 2008-09-10 Nxp B.V. Memory with block-erasable locations
US7769978B2 (en) 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7793068B2 (en) 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7676474B2 (en) * 2005-12-22 2010-03-09 Sap Ag Systems and methods for finding log files generated by a distributed computer
EP1808863A1 (en) * 2006-01-16 2007-07-18 Deutsche Thomson-Brandt Gmbh Method and apparatus for recording high-speed input data into a matrix of memory devices
JP4898252B2 (ja) * 2006-03-15 2012-03-14 パナソニック株式会社 不揮発性記憶装置及びそのデータ管理方法
US7861159B2 (en) * 2006-04-07 2010-12-28 Pp Associates, Lp Report generation with integrated quality management
JP2007280108A (ja) * 2006-04-07 2007-10-25 Sony Corp 記憶媒体制御装置、記憶媒体制御方法、プログラム
US8307148B2 (en) * 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US20080005449A1 (en) * 2006-07-03 2008-01-03 Phison Electronics Corp. Generalized flash memory and method thereof
KR101430097B1 (ko) * 2006-09-15 2014-08-13 샌디스크 테크놀로지스, 인코포레이티드 비휘발성 메모리 및 클래스 기반의 업데이트 블록 대체 규칙을 위한 방법
JP4609406B2 (ja) * 2006-10-12 2011-01-12 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
KR100771521B1 (ko) 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
JP2008152464A (ja) 2006-12-15 2008-07-03 Toshiba Corp 記憶装置
US8560760B2 (en) * 2007-01-31 2013-10-15 Microsoft Corporation Extending flash drive lifespan
KR100823171B1 (ko) * 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
KR100885181B1 (ko) * 2007-02-06 2009-02-23 삼성전자주식회사 그룹 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법
KR100817087B1 (ko) * 2007-02-13 2008-03-27 삼성전자주식회사 플래시 메모리를 구비하는 스토리지 장치에서의 버퍼 캐시운용 방법
US7657572B2 (en) 2007-03-06 2010-02-02 Microsoft Corporation Selectively utilizing a plurality of disparate solid state storage locations
JP4468407B2 (ja) * 2007-05-14 2010-05-26 フェリカネットワークス株式会社 データ管理システム、管理サーバ、データ管理方法、およびプログラム
KR100857761B1 (ko) * 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
KR101472797B1 (ko) * 2007-07-16 2014-12-15 삼성전자주식회사 데이터를 읽거나 쓰기 위한 방법 및 장치
US8572307B2 (en) 2007-07-20 2013-10-29 Panasonic Corporation Memory controller, memory card, and nonvolatile memory system
KR101447188B1 (ko) * 2007-07-31 2014-10-08 삼성전자주식회사 플래시 메모리에 최적화된 입출력 제어 방법 및 장치
JP2009139990A (ja) * 2007-12-03 2009-06-25 Internatl Business Mach Corp <Ibm> 情報の不正取得を防止する技術
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
CN101256564B (zh) * 2007-12-25 2010-06-02 深圳市同洲电子股份有限公司 一种循环文件的操作方法
CN101632068B (zh) 2007-12-28 2015-01-14 株式会社东芝 半导体存储装置
US8352671B2 (en) 2008-02-05 2013-01-08 Spansion Llc Partial allocate paging mechanism using a controller and a buffer
US8332572B2 (en) * 2008-02-05 2012-12-11 Spansion Llc Wear leveling mechanism using a DRAM buffer
US8275945B2 (en) 2008-02-05 2012-09-25 Spansion Llc Mitigation of flash memory latency and bandwidth limitations via a write activity log and buffer
US8370519B2 (en) * 2008-02-12 2013-02-05 Microsoft Corporation Copying data onto an expandable memory in a wireless device using a desktop interface
KR101067457B1 (ko) 2008-03-01 2011-09-27 가부시끼가이샤 도시바 메모리 시스템
JP4498426B2 (ja) * 2008-03-01 2010-07-07 株式会社東芝 メモリシステム
JP4745356B2 (ja) * 2008-03-01 2011-08-10 株式会社東芝 メモリシステム
US7979626B2 (en) * 2008-05-13 2011-07-12 Microsoft Corporation Flash recovery employing transaction log
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
JP5132451B2 (ja) * 2008-07-02 2013-01-30 株式会社リコー 画像形成装置
JP2010020586A (ja) * 2008-07-11 2010-01-28 Nec Electronics Corp データ処理装置
CN101324903B (zh) * 2008-07-24 2013-02-13 深圳市同洲电子股份有限公司 一种循环文件转循环线性文件方法及其访问操作方法
KR101086857B1 (ko) * 2008-07-25 2011-11-25 주식회사 팍스디스크 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
US20100057755A1 (en) * 2008-08-29 2010-03-04 Red Hat Corporation File system with flexible inode structures
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
JP5175703B2 (ja) * 2008-12-11 2013-04-03 株式会社東芝 メモリデバイス
CN101763320B (zh) * 2008-12-24 2011-11-30 鸿富锦精密工业(深圳)有限公司 存储方法
KR101028929B1 (ko) * 2008-12-31 2011-04-12 성균관대학교산학협력단 실시간 시스템을 위한 로그 블록 연관성 분산 방법 및 이를수행하는 플래시 메모리 장치
KR101581859B1 (ko) * 2009-02-27 2016-01-21 삼성전자주식회사 메모리 시스템 및 그것의 플래시 변환 계층의 데이터 관리 방법
KR100994052B1 (ko) 2009-05-06 2010-11-11 성균관대학교산학협력단 플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치
TWI457940B (zh) * 2009-05-15 2014-10-21 Macronix Int Co Ltd 區塊為基礎快閃記憶體之位元組存取
WO2011007511A1 (ja) * 2009-07-16 2011-01-20 パナソニック株式会社 メモリコントローラ、不揮発性記憶装置、アクセス装置、不揮発性記憶システム
KR101143397B1 (ko) 2009-07-29 2012-05-23 에스케이하이닉스 주식회사 페이지 복사 발생 빈도를 줄이는 반도체 스토리지 시스템 및 그 제어 방법
KR20110018157A (ko) * 2009-08-17 2011-02-23 삼성전자주식회사 플래시 메모리 장치의 액세스 방법
TWI446349B (zh) 2010-03-04 2014-07-21 Phison Electronics Corp 非揮發性記憶體存取方法、系統,與非揮發性記憶體控制器
CN102193871B (zh) * 2010-03-12 2014-08-20 群联电子股份有限公司 非挥发性存储器存取方法、***及非挥发性存储器控制器
US20110283044A1 (en) * 2010-05-11 2011-11-17 Seagate Technology Llc Device and method for reliable data storage
US20110289289A1 (en) * 2010-05-20 2011-11-24 Microsoft Corporation Backup and restore of items using bounded checkpoint and log buffers in memory
WO2012169038A1 (ja) * 2011-06-09 2012-12-13 Necディスプレイソリューションズ株式会社 電子機器、電源操作ログ記録方法および記録媒体
TWI521343B (zh) * 2011-08-01 2016-02-11 Toshiba Kk An information processing device, a semiconductor memory device, and a semiconductor memory device
CN102521289B (zh) * 2011-11-29 2013-12-04 华为技术有限公司 一种文件同步方法、装置及***
WO2013091167A1 (zh) * 2011-12-21 2013-06-27 华为技术有限公司 日志存储方法及***
US8966205B1 (en) 2012-05-10 2015-02-24 Western Digital Technologies, Inc. System data management using garbage collection and hybrid self mapping
US8984247B1 (en) * 2012-05-10 2015-03-17 Western Digital Technologies, Inc. Storing and reconstructing mapping table data in a data storage system
US9977612B1 (en) 2012-05-11 2018-05-22 Western Digital Technologies, Inc. System data management using garbage collection and logs
US9170932B1 (en) 2012-05-22 2015-10-27 Western Digital Technologies, Inc. System data storage mechanism providing coherency and segmented data loading
KR101997572B1 (ko) * 2012-06-01 2019-07-09 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 쓰기 방법
KR102147359B1 (ko) * 2012-06-29 2020-08-24 삼성전자 주식회사 비휘발성 메모리 장치의 관리 방법 및 비휘발성 메모리 장치
KR20140078893A (ko) * 2012-12-18 2014-06-26 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법
CN103077118A (zh) * 2012-12-28 2013-05-01 深圳市硅格半导体有限公司 一种无效数据回收方法及***
KR102069273B1 (ko) 2013-03-11 2020-01-22 삼성전자주식회사 시스템 온 칩 및 그 동작방법
US9471485B2 (en) 2013-03-12 2016-10-18 Macronix International Co., Ltd. Difference L2P method
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
US10228875B2 (en) 2013-12-24 2019-03-12 Feitian Technologies Co., Ltd. Data writing and reading methods for flash
CN103778964B (zh) * 2013-12-30 2016-08-17 上海晨思电子科技有限公司 一种NAND Flash烧写数据的处理、使用方法及装置、***
CN104021088B (zh) * 2014-06-24 2017-11-21 广东睿江云计算股份有限公司 日志存储方法和装置
JP2016018473A (ja) * 2014-07-10 2016-02-01 株式会社東芝 半導体記憶装置、メモリコントローラ、及びメモリコントローラの制御方法
TWI512609B (zh) * 2014-09-05 2015-12-11 Silicon Motion Inc 讀取命令排程方法以及使用該方法的裝置
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
RU2636107C1 (ru) * 2016-10-28 2017-11-20 Общество с ограниченной ответственностью "Лаборатория информационно-измерительной и преобразовательной техники" Способ записи данных на накопитель цифровой информации на базе flash-памяти типа nand
US9905294B1 (en) 2017-05-03 2018-02-27 Seagate Technology Llc Writing logically offset pages of data to N-level memory cells coupled to a common word line
TWI650660B (zh) * 2017-09-21 2019-02-11 和碩聯合科技股份有限公司 交易式檔案存取方法與電子裝置
CN109800178B (zh) 2017-11-17 2023-05-16 爱思开海力士有限公司 垃圾收集方法以及用于混合地址映射的存储器***
US10884947B2 (en) 2017-11-17 2021-01-05 SK Hynix Inc. Methods and memory systems for address mapping
US11947839B2 (en) 2021-05-10 2024-04-02 Samsung Electronics Co., Ltd. Storage device, system, and method for customizable metadata

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69024086T2 (de) * 1989-04-13 1996-06-20 Sundisk Corp EEprom-System mit Blocklöschung
US5226133A (en) * 1989-12-01 1993-07-06 Silicon Graphics, Inc. Two-level translation look-aside buffer using partial addresses for enhanced speed
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
US5652723A (en) * 1991-04-18 1997-07-29 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device
JP3485938B2 (ja) * 1992-03-31 2004-01-13 株式会社東芝 不揮発性半導体メモリ装置
JP3328321B2 (ja) * 1992-06-22 2002-09-24 株式会社日立製作所 半導体記憶装置
US5528764A (en) * 1992-12-24 1996-06-18 Ncr Corporation Bus system with cache snooping signals having a turnaround time between agents driving the bus for keeping the bus from floating for an extended period
JPH06222986A (ja) * 1993-01-26 1994-08-12 Oki Electric Ind Co Ltd メモリ制御装置
US5266133A (en) 1993-02-17 1993-11-30 Sika Corporation Dry expansible sealant and baffle composition and product
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5388083A (en) * 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5479638A (en) 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
JP3184383B2 (ja) * 1993-11-26 2001-07-09 シャープ株式会社 ホームコントローラ
JP3507132B2 (ja) * 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
JP3706167B2 (ja) * 1995-02-16 2005-10-12 株式会社ルネサステクノロジ 半導体ディスク装置
JPH08314794A (ja) * 1995-02-28 1996-11-29 Matsushita Electric Ind Co Ltd 安定記憶装置へのアクセス待ち時間を短縮するための方法およびシステム
JPH08328762A (ja) * 1995-06-06 1996-12-13 Mitsubishi Electric Corp 半導体ディスク装置及びそのメモリ管理方法
US5778427A (en) 1995-07-07 1998-07-07 Sun Microsystems, Inc. Method and apparatus for selecting a way of a multi-way associative cache by storing waylets in a translation structure
US5845313A (en) * 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
JPH0997205A (ja) * 1995-09-28 1997-04-08 Canon Inc フラッシュrom管理方法及び装置及びコンピュータ制御装置
US5696929A (en) * 1995-10-03 1997-12-09 Intel Corporation Flash EEPROM main memory in a computer system
JPH09185551A (ja) * 1996-01-08 1997-07-15 Mitsubishi Electric Corp 半導体記憶装置
KR980010782A (ko) * 1996-07-02 1998-04-30 이대원 플래시 메모리의 오버라이트 방법
JPH1040175A (ja) * 1996-07-19 1998-02-13 Canon Inc フラッシュromの記憶管理方法及び装置
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US5745418A (en) 1996-11-25 1998-04-28 Macronix International Co., Ltd. Flash memory mass storage system
US5956473A (en) 1996-11-25 1999-09-21 Macronix International Co., Ltd. Method and system for managing a flash memory mass storage system
JPH10154101A (ja) * 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US6418506B1 (en) * 1996-12-31 2002-07-09 Intel Corporation Integrated circuit memory and method for transferring data using a volatile memory to buffer data for a nonvolatile memory array
WO1998043248A1 (en) * 1997-03-21 1998-10-01 Canal+ Societe Anonyme Computer memory organization
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US5937425A (en) * 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
ES2241167T3 (es) * 1997-10-16 2005-10-16 The University Of Manchester Circuito temporizador.
US6076137A (en) * 1997-12-11 2000-06-13 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
US6263398B1 (en) * 1998-02-10 2001-07-17 Ramtron International Corporation Integrated circuit memory device incorporating a non-volatile memory array and a relatively faster access time memory cache
US6298428B1 (en) 1998-03-30 2001-10-02 International Business Machines Corporation Method and apparatus for shared persistent virtual storage on existing operating systems
US6327638B1 (en) 1998-06-30 2001-12-04 Lsi Logic Corporation Disk striping method and storage subsystem using same
JP2000057039A (ja) * 1998-08-03 2000-02-25 Canon Inc アクセス制御方法及び装置及びファイルシステム及び情報処理装置
KR20000039727A (ko) * 1998-12-15 2000-07-05 구자홍 플래시 메모리 접근 방법
JP2001006379A (ja) * 1999-06-16 2001-01-12 Fujitsu Ltd 複写、移動機能を有するフラッシュメモリ
KR100577380B1 (ko) * 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
KR100703680B1 (ko) * 1999-10-14 2007-04-05 삼성전자주식회사 플래시 파일 시스템
JP2001209543A (ja) * 2000-01-28 2001-08-03 Nec Ic Microcomput Syst Ltd フラッシュ・マイコンにおけるプログラム書き換え方法
JP3734408B2 (ja) 2000-07-03 2006-01-11 シャープ株式会社 半導体記憶装置
US6704835B1 (en) * 2000-09-26 2004-03-09 Intel Corporation Posted write-through cache for flash memory
US6564286B2 (en) * 2001-03-07 2003-05-13 Sony Corporation Non-volatile memory system for instant-on
US6836816B2 (en) * 2001-03-28 2004-12-28 Intel Corporation Flash memory low-latency cache
US6760805B2 (en) * 2001-09-05 2004-07-06 M-Systems Flash Disk Pioneers Ltd. Flash management system for large page size
US8504798B2 (en) * 2003-12-30 2013-08-06 Sandisk Technologies Inc. Management of non-volatile memory systems having large erase blocks

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7287117B2 (en) 2003-12-10 2007-10-23 Samsung Electronics Co. Ltd. Flash memory and mapping control apparatus and method for flash memory
KR100526188B1 (ko) * 2003-12-30 2005-11-04 삼성전자주식회사 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
KR100687151B1 (ko) * 2004-05-27 2007-02-27 가부시끼가이샤 도시바 메모리 카드, 반도체 장치, 및 반도체 메모리의 제어 방법
US7529879B2 (en) 2004-06-30 2009-05-05 Samsung Electronics Co., Ltd. Incremental merge methods and memory systems using the same
KR100577384B1 (ko) * 2004-07-28 2006-05-10 삼성전자주식회사 페이지 정보를 이용한 페이지 대체 방법
KR100695267B1 (ko) * 2004-08-23 2007-03-14 에스케이 텔레콤주식회사 이동통신 단말기의 랜덤 액세스 메모리의 저장 공간을절감하는 방법
US8533391B2 (en) 2004-12-21 2013-09-10 Samsung Electronics Co., Ltd. Storage device and user device including the same
US8122193B2 (en) 2004-12-21 2012-02-21 Samsung Electronics Co., Ltd. Storage device and user device including the same
US7899974B2 (en) 2005-01-12 2011-03-01 Samsung Electronics Co., Ltd. Nonvolatile memory, mapping control apparatus and method of the same
KR100684887B1 (ko) * 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US7487303B2 (en) 2005-02-04 2009-02-03 Samsung Electronics Co., Ltd. Flash memory device and associated data merge method
US8117374B2 (en) 2005-02-07 2012-02-14 Samsung Electronics Co., Ltd. Flash memory control devices that support multiple memory mapping schemes and methods of operating same
KR100801072B1 (ko) * 2005-09-30 2008-02-11 삼성전자주식회사 플래시 메모리, 이를 위한 맵핑 장치 및 방법
JP2008103071A (ja) * 2006-10-19 2008-05-01 Samsung Electronics Co Ltd 不揮発性メモリ装置およびそれを動作させる方法
US7783851B2 (en) 2006-10-19 2010-08-24 Samsung Electronics Co., Ltd. Methods of reusing log blocks in non-volatile memories and related non-volatile memory devices
EP1923792A1 (en) 2006-11-20 2008-05-21 Samsung Electronics Co., Ltd Apparatus and method of managing nonvolatile memory
US8423706B2 (en) 2007-07-04 2013-04-16 Samsung Electronics Co., Ltd. Apparatus and method to prevent data loss in nonvolatile memory
US8417872B2 (en) 2008-01-24 2013-04-09 Samsung Electronics Co., Ltd. Write and merge methods in memory card systems for reducing the number of page copies
KR101477047B1 (ko) * 2008-02-29 2014-12-30 삼성전자주식회사 메모리 시스템 및 그것의 블록 병합 방법
KR100954039B1 (ko) * 2008-08-11 2010-04-20 (주)인디링스 플래시 메모리 제어 방법 및 제어 장치
KR101011434B1 (ko) * 2008-10-28 2011-01-28 코오롱건설주식회사 침지형분리막여과조의 공기공급장치
KR100970537B1 (ko) * 2008-11-20 2010-07-16 서울시립대학교 산학협력단 Ssd 관리 장치 및 방법
WO2010067919A1 (ko) * 2008-12-08 2010-06-17 주식회사 이스트후 플래시 메모리 시스템 및 플래시 메모리의 관리 방법
KR101022001B1 (ko) * 2008-12-08 2011-03-17 주식회사 이스트후 플래시 메모리 시스템 및 플래시 메모리의 관리 방법
KR101519069B1 (ko) * 2013-12-03 2015-05-12 에스케이텔레콤 주식회사 메모리장치 및 메모리장치의 동작 방법
US9837166B2 (en) 2016-03-21 2017-12-05 SK Hynix Inc. Data storage device and operating method thereof

Also Published As

Publication number Publication date
KR100389867B1 (ko) 2003-07-04
US20020184436A1 (en) 2002-12-05
USRE45577E1 (en) 2015-06-23
CN1389790A (zh) 2003-01-08
USRE46404E1 (en) 2017-05-16
JP3708047B2 (ja) 2005-10-19
CN1322428C (zh) 2007-06-20
US6938116B2 (en) 2005-08-30
JP2002366423A (ja) 2002-12-20
USRE44052E1 (en) 2013-03-05
USRE45222E1 (en) 2014-10-28

Similar Documents

Publication Publication Date Title
KR100389867B1 (ko) 플래시 메모리 관리방법
US11669444B2 (en) Computing system and method for controlling storage device
US11467955B2 (en) Memory system and method for controlling nonvolatile memory
US7761655B2 (en) Storage system and method of preventing deterioration of write performance in storage system
JP4633802B2 (ja) 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
KR100684887B1 (ko) 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
CN111414315B (zh) 用来管理一记忆装置的方法以及其相关的记忆装置
KR102252419B1 (ko) 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
JP4738038B2 (ja) メモリカード
JP2005242897A (ja) フラッシュディスク装置
US20050172068A1 (en) Memory card and semiconductor device
KR20070096429A (ko) 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템
KR20110117099A (ko) 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법
JPWO2005106673A1 (ja) 不揮発性記憶装置及びデータ書込み方法
JP2023000085A (ja) メモリシステム及び情報処理システム
US7058784B2 (en) Method for managing access operation on nonvolatile memory and block structure thereof
JP2009205689A (ja) フラッシュディスク装置
CN116364148A (zh) 一种面向分布式全闪存储***的磨损均衡方法及***
Lee et al. An efficient buffer management scheme for implementing a B-tree on NAND flash memory
KR100745163B1 (ko) 동적 매핑 테이블을 이용한 플래시 메모리 관리방법
US20060224817A1 (en) NOR flash file allocation
KR100868674B1 (ko) 플래시메모리 관리방법
KR101022001B1 (ko) 플래시 메모리 시스템 및 플래시 메모리의 관리 방법
US12039193B2 (en) Apparatus, method and computer program for managing memory page updates within non-volatile memory
KR101791855B1 (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: 20130531

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20140530

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20150601

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20160531

Year of fee payment: 14