KR20040042478A - 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법 - Google Patents

플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법 Download PDF

Info

Publication number
KR20040042478A
KR20040042478A KR1020020070785A KR20020070785A KR20040042478A KR 20040042478 A KR20040042478 A KR 20040042478A KR 1020020070785 A KR1020020070785 A KR 1020020070785A KR 20020070785 A KR20020070785 A KR 20020070785A KR 20040042478 A KR20040042478 A KR 20040042478A
Authority
KR
South Korea
Prior art keywords
mapping
block
mapping table
information
flash memory
Prior art date
Application number
KR1020020070785A
Other languages
English (en)
Other versions
KR100457812B1 (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-2002-0070785A priority Critical patent/KR100457812B1/ko
Priority to US10/695,397 priority patent/US7191306B2/en
Publication of KR20040042478A publication Critical patent/KR20040042478A/ko
Application granted granted Critical
Publication of KR100457812B1 publication Critical patent/KR100457812B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/56External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
    • G11C29/56004Pattern generation
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

본 발명은 플래시 메모리의 맵 블록에 데이터 블록의 상태를 나타내는 소정의 사상 테이블을 만들고, 이를 참조하여 보다 효율적인 메모리 액세스 및 오류블록 복구가 가능하도록 하는 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및 방법을 개시한 것이다.
본 발명의 플래시 메모리는 데이터 블록을 구성하는 각 블록에 할당되는 물리 주소와 각 블록의 상태 정보로 이루어지는 사상 테이블인 제 1 사상 테이블과, 오류 블록이 제외된 상기 제 1 사상 테이블의 각 블록에 대한 물리 주소와 논리 주소간의 사상정보로 이루어지는 사상테이블인 제 2 사상 테이블과, 상기 제 2 사상 테이블의 갱신동작을 최소화하기 위해 최근의 사상정보를 지정된 값만큼 기록하고 처리하는 사상테이블인 제 3 사상 테이블로 이루어진 맵 블록을 포함하여 구성되는 것으로서, 이를 통해 플래시 메모리를 보다 효율적으로 액세스하고 관리할 수 있으며 플래시 메모리 사용상의 안정성을 극대화 시킬 수 있는 효과를 제공한다.

Description

플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및 방법{FLASH MEMORY, ACCESS APPARATUS AND METHOD USING FLASH MEMORY}
본 발명은 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및 방법에 관한 것으로서, 특히 플래시 메모리(Flash Memory)의 블록 할당 맵(Block Allocation Map:이하, 맵 블록(Map block)이라 칭함)에 데이터 블록(Data Block)의 물리 주소 및 상태를 나타내는 소정의 사상(mapping) 테이블을 만들고, 이를 참조하여 보다 효율적인 메모리 액세스 및 오류 블록 복구가 가능하도록 하는 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및 방법에 관한 것이다.
일반적으로, 플래시 메모리는 데이터의 기록 및 삭제가 자유로운 램(RAM:Random Access Memory)의 장점과 전원의 공급 없이도 저장된 데이터를 보존하는 롬(ROM:Read Only Memory)의 장점을 동시에 지니고 있어, 최근 디지털 카메라, PDA, MP3 플레이어와 같은 휴대용 전자기기의 저장 매체로 널리 사용되고 있다.
이 같은 플래시 메모리는 기존의 RAM이나 비휘발성 저장 장치, 마그네틱 등과 마찬가지로 특정 위치에 저장된 데이터를 임의로 접근할 수 있지만, 데이터를 수정하거나 삭제하는 방법에 있어서는 기존의 저장장치와 다르게 블록(block)을 기본단위로 하여 액세스가 이루어진다.
즉, 플래시 메모리에 기록된 데이터를 수정 또는 삭제하고자 하면 해당되는 데이터를 포함하는 데이터 블록을 삭제한 후 재 기록해야하는데, 일 예로, 글자나알파벳을 하나씩 수정하는 대신 '삭제'키를 눌러 전체 단어를 다 삭제한 후 다시 수정하는 것과 같다.
이하, 사용되는 용어 가운데 블록은 플래시 메모리에서 한번의 삭제 연산으로 지울수 있는 단위를 나타내는 것이고, 페이지(page)는 판독/기록 연산 시에 읽거나 기록할 수 있는 데이터 크기를 의미한다.
플래시 변환 계층(Flash Translation Layer:이하,FTL이라 칭함)은 플래시 메모리를 블록 디바이스처럼 사용할 수 있게 해주는 소프트웨어로서, 일반적으로 플래시 메모리를 효율적으로 관리하기 위한 방법으로 블록(또는 섹터) 재사상(remapping)기법을 지원한다.
블록(또는 섹터) 재사상 기법은 수정 또는 삭제로 인하여 플래시 메모리에 기록된 데이터의 물리적인 블록번호(Physical Block Number:이하, PBN이라 칭함)가 변경되어도 동일한 논리적인 블록번호(Logical Block Number:이하, LBN이라 칭함)로 플래시 메모리에 기록된 데이터에 접근할 수 있도록, 특정 데이터에 대한 LBN와 PBN간의 사상 정보를 관리하는 것이다.
그러나 플래시 메모리는 메모리 셀의 수명이 약 100,000 기록 사이클 밖에 안 되기 때문에 부분 기록(Partial Write) 횟수가 제한되어 있다.
또한, 쓰기 연산 수행과정에서 전원 중단이 발생되는 경우, 기록되던 사용자의 데이터나 재사상을 위해 사용되는 데이터가 손실될 수 있는 문제점이 있었다.
따라서 종래에는 블록에 메모리 상태 정보를 기록하고 연산 수행시마다 상태 정보를 적절히 수정하도록 하였는데, 사상 정보를 저장하고 관리하기 위한 저장 공간과 시간이 소요되므로 효율적인 처리 방법이 요구되었다.
일 예로, 현재 상용화되고 있는 M-Systems의 NOR 방식 FTL 또는 NAND 방식 FTL은 별도의 대체 페이지 맵(replacement Virtual Page Map: 이하, replacement VPM이라 칭함)을 사용하여 기록(Write) 연산 수행시마다 변경된 사상 정보를 기록해야하기 때문에 모든 데이터 블록마다 replacement VPM을 갖게 되므로 최대 플래시 메모리의 50%가 낭비되는 문제점이 있었다.
이러한 종래 기술의 문제점을 보완하기 위하여 앞서 제안된 바 있는, 한국 등록특허 제10-0319598호(발명의 명칭: 플래시 메모리 어레이 액세스 방법 및 장치)는 메모리를 블록 단위로 나누고 각 블록마다 룩업(look up) 테이블을 두어 메모리 액세스 효율을 높이는 액세스 방법 및 장치를 제시한 것이나, 각 블록마다 룩업 테이블을 별도로 구비해야하기 때문에 플래시 메모리의 저장 공간이 효율적으로 사용되지 못하게 되는 문제점이 있었다.
또한, 한국 공개특허 제 2001- 0029171호(발명의 명칭: 플래시 메모리와 그 제어방법)는 플래시 메모리에 구비되는 유니트를 통해 데이터를 효율적으로 기록 및 갱신할 수 있도록 하는 플래시 메모리와 제어 방법을 제시한 것이나, 소정의 블록으로 이루어지는 유니트 단위의 데이터 사상을 제시하고 있을 뿐 블록 데이터를 보다 효율적으로 억세스 하기 위한 재사상 방법은 제시하지 못하고 있다.
그리고, 한국 공개특허 제 2002-0028624호(발명의 명칭: 플래시 메모리를 위한 재사상 제어방법 및 그에 따른 플래시 메모리 구조)는 부분기록을 최소화하면서 블록과 유니트의 상태를 기록하고 처리할 수 있는 재사상 제어방법 및 플래시 메모리 구조를 제시한 것이나, 호스트에 의한 삭제, 변경 또는 쓰기 등의 연산동작으로 사상관계가 변경될 때마다 맵 블록에 기록된 논리적/물리적 블록 번호간의 사상정보를 검색하여 해당되는 블록의 사상정보를 계속적으로 갱신시켜야하기 때문에 충분한 램 용량이 요구되므로 효율적인 플래시 메모리 관리방법을 제시하지는 못하고 있다.
본 발명은 상기한 문제점들을 해결하기 위해 안출된 것으로, 플래시 메모리에서 판독 또는 기록 연산 시 플래시 메모리의 맵 블록에 구비되는 소정의 사상 테이블을 참조하여 판독 또는 기록이 요구되는 플래시 메모리의 물리 주소를 효율적으로 액세스할 수 있도록 하는 것을 목적으로 한다.
본 발명의 다른 목적은 플래시 메모리의 오류 블록 및 갑작스런 전원 중단으로 인해 발생된 오류를 감지하고 데이터 복구를 효과적으로 할 수 있도록 하는
본 발명의 또 다른 목적은 효율적인 메모리 액세스 및 오류 복구가 가능한 안정적인 플래시 메모리를 제공하는 것이다.
도 1은 본 발명에 따른 플래시 메모리 및 그에 따른 플래시 메모리 액세스 장치를 나타낸 것이다.
도 2는 플래시 메모리 컨트롤러에서 UT를 생성하는 논리합을 도시한 것이다.
도 3의 a 내지 c는 본 발명에 따른 PAT, BIT, TC, UT에 대한 사상 테이블을 일 예로 도시한 것이다.
도 4는 본 발명의 플래시 메모리 액세스 방법에 따른 플래시 메모리의 초기화 과정을 나타낸 동작 흐름도이다.
도 5는 도 4에 도시된 S150 단계에서 PAT를 독출하는 과정을 나타낸 동작 흐름도이다.
도 6은 본 발명의 플래시 메모리 액세스 방법에 따른 읽기 연산 처리과정을 나타낸 동작 흐름도이다.
도 7은 본 발명의 플래시 메모리 액세스 방법에 따른 쓰기 연산 처리과정을 나타낸 동작 흐름도이다.
도 8은 본 발명의 플래시 메모리 액세스 방법에 따른 TC 용량이 부족한 경우의 쓰기 연산 처리과정을 나타낸 동작 흐름도이다.
도 9는 본 발명의 플래시 메모리 액세스 방법에 따른 BIT와 TC 용량이 부족한 경우의 쓰기 연산 처리과정을 나타낸 동작 흐름도이다.
도 10은 본 발명의 플래시 메모리 액세스 방법에 따른 이전의 데이터를 수정 또는 추가하는 경우의 쓰기 연산 처리과정을 나타낸 동작 흐름도이다.
도 11은 본 발명의 플래시 메모리 액세스 방법에 따른 오류복구를 위한 연산 처리과정을 나타낸 동작 흐름도이다.
도 12의 a내지 c는 본 발명의 일 실시 예에 따른 사상정보 갱신 과정에서 발생되는 오류 복구 과정을 사상테이블로 나타낸 것이다.
도 13의 a, b는 본 발명의 일 실시 예에 따른 데이터 기록 과정에서 발생되는 오류 복구 과정을 사상테이블로 나타낸 것이다.
* 도면의 주요부분에 대한 부호의 설명 *
100 : 플래시 메모리
110 : 헤더 130 : 맵 블록
131 : PAT 132 : PAT spare
133 : BIT 134 : BIT spare
135 : TC 136 : TC spare
137 : UT
150 : 데이터 블록
300 : 플래시 메모리 컨트롤러 500 : 프로세서
700 : 램
이하, 본 발명에 따른 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및 방법을 첨부된 도면을 참조하여 상세히 설명한다.
본 발명에 따른 플래시 메모리는 데이터 블록을 구성하는 각 블록에 할당되는 물리 주소와 각 블록의 상태 정보로 이루어지는 사상 테이블인 제 1 사상 테이블과, 오류 블록이 제외된 상기 제 1 사상 테이블의 각 블록에 대한 물리 주소와논리 주소간의 사상정보로 이루어지는 사상테이블인 제 2 사상 테이블과, 제 2 사상 테이블의 갱신동작을 최소화하기 위해 최근의 사상정보를 지정된 값만큼 기록하고 처리하는 사상테이블인 제 3 사상 테이블로 이루어진 맵 블록을 포함하는 것을 특징으로 한다.
또한, 제 1 사상 테이블, 제 2 사상 테이블, 제 3 사상 테이블에 대한 각각의 여유 블록을 더 포함하는 것을 특징으로 한다.
본 발명에 따른 플래시 메모리 액세스 장치는 데이터 블록의 물리 주소 정보로 이루어지는 제 1 사상 테이블과 오류블록이 제외된 제 1 사상 테이블의 사상정보로 이루어지는 제 2 사상 테이블과 가장 최근의 사상정보로 이루어지는 제 3 사상 테이블과 각각의 여유 블록으로 이루어지는 맵 블록을 포함하는 플래시 메모리, 플래시 메모리의 맵 블록으로부터 얻어지는 제 1 및 제 2 및 제 3 사상 테이블을 통해 자유블록 정보로 이루어지는 제 4 사상 테이블을 생성하고 판독 및 기록 연산 시 제 2 및 제 3 사상 테이블 또는 제 4 사상 테이블을 참조하여 데이터를 판독/기록할 물리 주소를 액세스하는 플래시 메모리 컨트롤러를 포함하는 것을 특징으로 한다.
또한, 플래시 메모리 컨트롤러는 제 2 사상 테이블과 제 3 사상 테이블 및 제 4 사상 테이블을 통해 사상정보 갱신 또는 데이터 기록 과정에서의 전원 중단에 의한 오류를 감지하고 데이터를 복구하는 것을 특징으로 한다.
본 발명에 따른 플래시 메모리 액세스 방법은 프로세서로부터 판독 및 기록 연산이 요구되면 커맨드와 함께 논리 주소를 입력받는 단계; 판독 및 기록 연산을위해 플래시 메모리로부터 독출되는 데이터 블록의 물리 주소 정보 가운데 오류블록이 제외된 사상정보로 이루어지는 제 2 사상 테이블과 가장 최근의 사상정보로 이루어지는 제 3 사상 테이블에서 상기 논리 주소를 체크하는 단계; 제 2 사상 테이블과 제 3 사상 테이블에 상기 논리 주소가 존재하면 지정되는 데이터 블록의 물리 주소를 액세스 하여 판독 및 기록 연산을 처리하는 단계를 포함하는 것을 특징으로 한다.
또한, 제 2 사상 테이블과 제 3 사상 테이블에 상기 논리 주소가 존재하지 않으면 판독 또는 기록 연산에 따라 판독 오류 처리하거나 플래시 메모리 컨트롤러에 의해 생성되는 자유블록 정보로 이루어지는 제 4 사상 테이블을 통해 할당되는 자유블록의 물리 주소를 액세스하여 기록 연산을 처리하는 단계를 더 포함하는 것을 특징으로 한다.
그리고, 프로세서로부터 요구되는 연산동작에 따라 상기 플래시 메모리를 효율적으로 액세스하기 위한 사상정보를 플래시 메모리의 맵 블록으로부터 로딩하여 플래시 메모리를 초기화하는 단계를 더 포함하는 것을 특징으로 한다.
그리고, 기록 연산 과정에서 발생되는 전원 중단에 의한 오류를 감지하고 데이터를 복구하는 단계를 더 포함하는 것을 특징으로 한다.
이하, 본 발명의 구성 및 동작을 일 실시 예를 통해 설명을 위하여, 제 1 사상 테이블은 물리적 주소 테이블(Physical Address Table: 이하, PAT라 칭함), 제 2 사상 테이블은 블록 정보 테이블(Block Information Table: 이하, BIT라 칭함), 제 3 사상 테이블은 사상 정보 테이블(Table Cache : 이하, TC라 칭함), 제 4 사상테이블은 미사용 블록 테이블(Unused Table: 이하, UT라 칭함), 각각의 사상 테이블에 대한 여유 블록은 spare(PAT spare, BIT spare, TC spare)로 정의한다.
우선, 본 발명에 따른 플래시 메모리의 구조 및 그에 따른 플래시 메모리 액세스 장치의 구성과 동작을 첨부된 도면을 참조하여 일 실시 예로 상세히 설명한다.
도 1은 본 발명에 따른 플래시 메모리 및 그에 따른 플래시 메모리 액세스 장치를 나타낸 것이다.
도 1에 도시된 바와 같이, 본 발명에 따른 플래시 메모리(100)는 헤더(Header)(110), 맵 블록(130), 데이터 블록(150)으로 구성된다.
헤더(110)는 플래시 메모리 모델, 메모리 용량, 데이터 블록(150) 관리를 위한 정보 등과 같은 플래시 메모리에 대한 전반적인 정보 및 PAT 주소 정보가 저장된 블록 정보가 저장된다.
이러한 헤더(110)에 메인 펌웨어(main firmware)가 구비되면, 플래시 메모리 초기화를 위한 데이터가 보다 빠르게 로딩되고 플래시 메모리 초기화 과정이 효율적으로 이루어진다.
맵 블록(130)은 데이터 블록(150)을 통한 데이터 판독/기록/삭제 연산을 수행하기 위한 사상정보가 기록된다.
데이터 블록(150)은 데이터 블록(150)은 블록 단위로 액세스될 수 있도록 FTL에 의해 일정한 크기의 블록으로 분할된 다수의 블록으로 이루어지는 것으로, 각 블록은 순차적으로 부여되는 PBN을 갖는다.
이와 같이 이루어지는 플래시 메모리(100) 가운데 도 1에 별도로 도시되는 본 발명에 따른 맵 블록(130)의 구조를 첨부된 도면을 참조하여 상세히 설명한다.
맵 블록(130)은 도 1에 도시한 바와 같이, PAT(131), BIT(133), TC(135) 및 각 사상 테이블의 갱신 정보를 기록하기 위해 구비되는 여유 블록인 PAT spare(132)/BIT spare(134)/TC spare(136)로 이루어진다.
PAT(131)는 데이터 블록(150)을 구성하는 다수의 블록, 각 블록에 할당되는 PBN 및 각 블록의 상태 정보로 이루어지는 사상 테이블이다.
이러한 PAT(131)는 오류블록이 발생될 때마다 갱신되고, 갱신되는 내용은 현재 PAT가 기록된 페이지의 다음 페이지에 기록되며 이전의 페이지에는 일 예로, 0x00와 같은 코드로 내용이 변경되었음을 표시한다.
또한, 플래시 메모리 초기화 과정에서 현재 사용되어야할 PAT(131)를 확인할 수 있도록 내용이 변경될 때마다 변경되는 PAT 주소 정보를 헤더(110)에 기록한다.
BIT(133)는 오류 블록이 제외된 PAT(131)의 각 블록에 대한 LBN와 PBN간의 사상정보로 이루어지는 사상테이블이다.
이러한 BIT(133)는 효율적인 기록 연산을 위한 것으로, 프로세서(500)로부터 요구되는 기록 연산 시 플래시 메모리 컨트롤러(300)에서 BIT(133)를 통해 쓰기 가능한 비어있는 블록(이하, 자유블록(free block)이라 칭함)을 확인하고 데이터를 기록함으로써 데이터 블록에서 일일이 자유블록을 검색하지 않고 빠르게 기록 연산을 수행할 수 있도록 한다.
또한, PAT(131)와 같이 새로운 사상정보가 갱신될 때마다 BIT 내용을 변경하고, 변경되는 BIT를 현재 BIT가 기록된 페이지 다음 페이지에 기록하며 BIT 사용영역을 나타낸 포인터를 변경시킨다.
TC(135)는 BIT(133)의 갱신동작을 최소화하기 위해 최근의 사상정보를 지정된 값만큼 기록하고 처리하는 사상테이블이다.
이러한 TC(135)는 기록/삭제 연산 동작마다 매번 BIT(313)를 갱신시킴으로써 발생되는 부하를 최소화하기 위한 것으로, 프로세서(500)로부터 요구되는 기록/삭제 연산에 의해 발생되는 최근의 사상정보를 지정된 값만큼 기록하고 사상정보가 지정된 값에 도달하면 BIT(133)로 갱신함으로써 BIT(133)를 기록/삭제시마다 매번 갱신하지 않고 갱신 동작을 최소화하게 된다.
또한, BIT(133)의 반복적인 갱신동작으로 인한 기록 속도 저하도 막을 수 있다.
일 예로, TC(135)에 기록되는 사상정보가 3개로 지정된 경우, 프로세서(500)로부터 요구되는 기록/삭제 연산에 따라 TC(135)에 기록되는 사상정보가 3개에 이르면 TC(315)에 기록된 3개의 사상정보는 BIT(313)에 옮겨 기록된다.
PAT spare(132)/BIT spare(134)/TC spare(136)는 PAT(131)/BIT(133)/TC(135)의 특정 블록이 기록/삭제 연산에 의해 반복적으로 사용되는 것을 막기 위해 구비된다.
이 가운데 BIT spare(134)/TC spare(136)는 기록/삭제 연산에 따라 상기 BIT(133) 및 TC(135)의 사상 정보를 갱신하는 과정에서 발생되는 갑작스런 전원 중단에 의한 오류 발생에 대비할 수 있도록 갱신되는 기존의 BIT 및 TC의 사상정보를저장한다.
일 예로, 프로세서(500)로부터 요구되는 기록연산 처리과정에서 발생되는 새로운 사상정보를 TC(135)에 기록하고자 하는 경우, TC(135)에 기록된 이전의 사상정보가 할당된 저장 용량에 도달하거나 지정된 값에 도달하면 TC(135)의 사상정보를 BIT(133)로 옮겨 기록한다.
이 경우, 기존의 사상정보를 BIT(133)로 갱신하기 전에 TC spare(136)에 기존의 사상정보를 기록함으로써, 플래시 메모리 컨트롤러(300)에서 TC(135)의 사상정보를BIT(133)에 기록하는 과정에서 발생되는 갑작스런 전원 중단으로 인한 오류를 확인하고 오류 블록을 처리할 수 있도록 한다.
또 다른 예로, 사상정보 BIT(133)에 기록된 이전의 사상정보가 할당된 저장 용량에 도달하면 BIT(133)블록에서 다음 페이지로 BIT 사상정보를 옮겨 기록한다.
이 경우, 기존의 사상정보를 다음 페이지로 갱신하기 전에 BIT spare(134)에 기존의 사상정보를 기록함으로써, 플래시 메모리 컨트롤러(300)에서 BIT(133)의 사상정보를 다음 페이지에 기록하는 과정에서 발생되는 갑작스러운 전원 중단으로 인한 오류를 확인하고 오류 블록을 처리할 수 있도록 한다.
이와 같이 구성되는 플래시 메모리(100)를 이용하여 프로세서(500)로부터 요구되는 판독/기록 연산 시마다 플래시 메모리(100)를 효율적으로 액세스하기 위한 플래시 메모리 액세스 장치는 도 1에 도시한 바와 같이, 크게 플래시 메모리(100)와, 플래시 메모리 컨트롤러(300)로 구성되며, 본 발명을 일 실시 예에 따른 구현을 위해 프로세서(500), 램(700)을 더 포함한다.
본 발명에 따른 플래시 메모리 컨트롤러(300)는 플래시 메모리(100)의 맵 블록(130)으로부터 얻어지는 데이터 블록(150)에 대한 물리 주소 및 사상 정보로 이루어지는 PAT(131)/BIT(133)/TC(135)를 통해 미사용 블록 테이블(Unused Table : 이하, UT라 칭함)(137)을 생성하고 판독/기록 연산 시 BIT(133)/TC(135) 또는 UT(137)를 참조하여 데이터를 판독/기록할 물리 주소를 액세스한다.
프로세서(500)는 플래시 메모리(100)에 기록된 데이터를 판독하거나 데이터를 기록하기 위한 제어 명령어를 발생시켜 플래시 메모리 컨트롤러(300)로 전송한다.램(700)은 프로세서(500) 및 플래시 메모리 컨트롤러(300)에 의한 플래시 메모리(100) 액세스 과정에서 얻어지는 데이터를 저장한다.
플래시 메모리 컨트롤러(300)에 의해 생성되는 UT(137)는 도 2에 도시된 바와 같이, PAT(131), BIT(133) 및 TC(135)를 논리합으로 병합하는 것으로, BIT(133)와 TC(137)에 기록된 사상정보가 추가된 PAT(131)로 이루어진다.
이러한 과정을 통해 생성된 UT(137)는 플래시 메모리 컨트롤러(300)에 의해 상대적으로 빠른 읽기가 가능한 램(700)에 저장되어 기록 연산 시 자유블록 검색이 빠르도록 하는데, 이 때문에 플래시 메모리(100)에 기록되는 PAT(131), BIT(133), TC(135)와는 달리 플래시 메모리(100)를 초기화 시킬 때마다 플래시 메모리 컨트롤러(300)에 의해 생성된다.
이와 같이 이루어지는 본 발명에 따른 플래시 메모리(100) 및 플래시 메모리 액세스 장치에서 PAT(131), BIT(133), TC(135), UT(137)를 첨부된 도면을 참조하여 일 실시 예로 상세히 설명한다.
도 3의 a 내지 c는 본 발명에 따른 PAT(131), BIT(133), TC(135), UT(137)에 대한 사상 테이블을 일 예로 도시한 것이다.
PAT(131)는 도 3의 a에 도시된 바와 같이, 데이터 블록(150)의 물리 주소 정보를 나타내는 것으로, FTL에 의해 블록 디바이스와 같이 일정한 크기의 블록으로 분할된 다수의 블록, 각 블록에 순차적으로 할당되는 PBN, 각 블록에 기록되는 상태 정보로 이루어진다.
각 블록의 상태 정보는 정상적인 블록(Good Block)을 나타내는 '0'과 사용하지 못하는 오류 블록(Bad Block)을 나타내는 '1'로 이루어진다.
BIT(133)는 도 3의 b에 도시된 바와 같이, 데이터 블록(150)의 블록들에 대한 사용정보를 나타내는 것으로, 오류 블록이 제외된 PAT(131)의 각 블록에 대한 LBN와 PBN간의 사상정보로 이루어진다.
즉, 도시된 바와 같이, 프로세서(500)로부터 기록이 요구되는 LBN에 사상되는 특정 PBN, 사용되지 않는 LBN을 나타내는 소정의 코드(일 예로, 0xFFFF)가 기록된다.
TC(135)는 도 3의 b에 도시된 바와 같이, 프로세서(500)로부터 요구되는 기록연산 처리결과 발생되는 최근의 사상정보로 이루어진다.
이러한 TC(135)의 사상정보는 기록되는 사상정보가 제한되어 지정된 값만큼 기록되면, BIT(133)로 갱신된다.
일 예로, TC(135)에 기록되는 사상정보가 3개로 지정된 경우, 프로세서(500)에 의한 기록/삭제 연산에 따라 TC(135)에 기록되는 사상정보가 3개에 이르면TC(315)에 기록된 3개의 사상정보는 BIT(313)에 옮겨 기록된다.
이에 따라, BIT(313)는 TC(315)로부터 사상정보가 옮겨질 때에만 다음 페이지로 갱신되므로, 기록/삭제 연산 시마다 매번 갱신하지 않고 갱신 동작을 최소화하게 된다.
또한, BIT(133)와 TC(135)는 단계적 사상 기법을 통해 LBN과 PBN을 1:1로 사상하지 않고, 프로세서(500)로부터 데이터 기록이 요구되면 임의의 자유블록을 데이터를 기록할 블록으로 할당하여 입력되는 데이터를 기록한 후 프로세서(500)에 의해 요구된 논리 블록 주소가 사상된 물리 블록 주소를 저장한다.
도 3의 b를 참조하여 이러한 BIT(133)와 TC(135)간의 사상정보 갱신 과정을 일 예로 상세히 설명한다.
만일, 플래시 메모리가 초기상태이면(갱신 전) BIT(133)와 TC(135)는 사용되지 않는 상태(OxFFFF)인 LBN으로 이루어지고, 이러한 초기 상태에서 프로세서(500)로부터 기록 연산이 요구될 때마다 새로운 LBN과 PBN간의 사상 정보는 TC(135)에 순차적으로 기록된다.
예를 들어, TC(135)의 첫 번째 LBN(0)에는 프로세서(500)로부터 입력되는 데이터가 기록된 PBN인 '1'이 기록되는데, '1'은 프로세서(500)에 의해 기록이 요구되는 논리 블록 주소가 사상되는 물리 블록 정보에 해당된다.
이와 같이, 두 번째 LBN(1)에는 프로세서(500)로부터 입력되는 데이터가 기록된 PBN인 '4'가 기록되고, 세 번째 LBN(2)에는 프로세서(500)로부터 입력되는 데이터가 기록된 PBN인 '56'이 기록된다.
만일, TC(315)에 저장 가능한 사상정보가 3개로 지정되어 있다면, TC(315)의 사상정보가 지정된 값에 도달했으므로 TC(315)의 사상정보는 BIT(313)로 갱신된다.
이에 따라, BIT(313)에는 TC(135)로부터 갱신되는 사상정보가 해당되는 각각의 LBN에 기록되는데, 각 LBN에 해당되는 PBN가 기록되고 , TC(315)의 사상정보는 삭제된다(갱신 후).
UT(137)는 도 3의 C 에 도시된 바와 같이, 데이터 블록(150)의 블록들 가운데 사용 가능한 블록 정보를 나타내는 것으로, BIT(133) 및 TC(135)의 사상정보가 추가되는 PAT(131)로 이루어진다.
이러한 UT(137)는 프로세서(500)로부터 요구되는 기록 연산에 따라 데이터를 기록할 자유블록을 제공하는 것으로, 보다 효율적인 자유블록을 액세스할 수 있도록 포인터로 첫 자유블록을 지시한다.
이와 같은 본 발명에 따른 플래시 메모리와 플래시 메모리 액세스 장치를 이용하여 플래시 메모리를 액세스하는 방법을 첨부된 도면을 참조하여 일 실시 예로 상세히 설명한다.
먼저, 플래시 메모리 컨트롤러(300)를 통해 플래시 메모리(100)를 초기화하는 과정을 설명하고, 초기화된 플래시 메모리(100)에서 프로세서(500)로부터 요구되는 판독/기록 연산을 수행하는 처리과정을 설명한다.
1. 초기화 과정
초기화 과정은 프로세서(500)로부터 요구되는 연산동작에 따라 플래시 메모리(100)를 효율적으로 액세스하기 위한 사상정보를 플래시 메모리(100)로부터 로딩하는 것이다.
도 4는 본 발명에 따른 플래시 메모리 초기화 과정을 나타낸 동작 흐름도이고, 도 5는 도 4의 PAT(131) 독출 과정을 상세히 나타낸 것이다.
도 4에 도시된 바와 같이, 우선, 플래시 메모리 컨트롤러(300)에서는 플래시 메모리(100)의 헤더(110)에 기록된 플래시 메모리에 대한 전체 정보 및 PAT 주소정보가 기록된 블록의 주소정보와 같은 플래시 정보를 체크하고(S110), 플래시 메모리(100)의 맵 블록(130)에 기록된 PAT(131), BIT(133) 및 TC(135)를 독출하기 위한 변수를 초기화(Init Variables) 한다(S130).
그 다음, 헤더(110)의 특정 블록으로부터 얻어지는 PAT 주소정보를 이용하여, 플래시 메모리(100)의 맵 블록(130)에 할당된 PAT 블록 영역 가운데 현재 사용되어야할 PAT가 저장된 블록을 검색하고, 해당 블록에 기록된 PAT(131)를 독출한다.
또한, 플래시 메모리(100)의 맵 블록(130)에 할당된 BIT/TC 블록 영역의 모든 블록을 검색하여 BIT(133) 및 TC(135)를 독출한다(S150).
이와 같이, PAT(131), BIT(133), TC(135)가 독출되면, 플래시 메모리 컨트롤러(300)에서는 독출된 PAT(131), BIT(133) 및 TC(135)를 논리합으로 병합시켜 UT(137)를 생성하고, 생성된 UT(137)를 램(700)에 저장한다(S170).
이러한 초기화 과정이 완료되면, 프로세서(500)로부터 요구되는 판독 또는 기록 연산에 따른 연산동작을 수행하기 위해 대기한다(S190).
이러한 초기화 과정 가운데 PAT(131)를 독출하는 단계(S130)를 첨부된 도 5를 참조하여 상세히 설명한다.
도 5에 도시된 바와 같이, 우선, 플래시 정보를 체크하는 단계(S110)에서 헤더(110)로부터 얻어지는 PAT 주소정보가 기록된 블록에 대한 주소정보를 이용하여 헤더(110)의 블록들 가운데 지정된 블록에서 PAT 주소정보를 검색한다(S151).
PAT 주소정보 검색 결과를 통해 PAT 주소정보가 존재하는지 여부를 판별하여(S152), 판별결과 PAT 주소정보가 존재하면 검색된 PAT 주소정보를 판독하고(S153), 판별결과 PAT 주소정보가 존재하지 않으면 맵 영역(130)에 할당된 PAT 블록영역의 모든 블록에서 PAT를 검색한다(S154).
PAT 블록영역의 모든 블록에 대한 PAT 검색 결과를 통해 PAT가 PAT 블록 영역에 존재하는지 여부를 판별하여(S155), 판별결과 PAT(131)가 검색되면 PAT(131)가 검색된 블록의 주소정보를 헤더(110)의 지정된 블록에 PAT 주소정보로 기록한다(S156).
또한, 판별결과 PAT(131)가 존재하지 않으면 데이터 블록(150)의 각 블록들에 PBN을 할당하고 각 PBN의 상태를 검사하여 새로운 PAT(131)를 생성하고, 생성된 PAT(131)를 PAT 블록 영역의 특정 블록에 기록한 후 헤더(110)의 지정된 블록에 PAT(131)가 기록된 블록 주소를 PAT 주소정보로 기록한다(S157).
이러한 과정을 통해 PAT 주소정보가 생성되거나 독출되면 플래시 메모리 컨트롤러(300)에서는 독출된 PAT 주소정보를 이용하여 PAT 블록 영역에서 PAT(131)를 독출한다(S158).
2. 판독 연산 과정
판독 연산 과정은 프로세서(500)로부터 소정의 데이터에 대한 판독이 요구될 때에 판독 커맨드와 함께 논리 주소가 입력되면, 플래시 메모리(100)의 데이터 블록(150)에서 해당되는 물리 주소를 검색하여 기록된 데이터를 프로세서(500)로 제공하는 것이다.
도 6은 본 발명의 플래시 메모리 액세스 방법에 따른 판독 연산 처리과정을 나타낸 동작 흐름도이다.
도 6에 도시된 바와 같이, 우선, 플래시 메모리 컨트롤러(300)에서는 프로세서(500)로부터 판독 동작 요구와 함께 해당되는 데이터의 논리 주소인 소정의 논리 블록 주소가 입력되면(S300), BIT(133)와 TC(135)를 참조하여 입력된 논리 블록 주소를 플래시 메모리(100)의 물리 블록 주소로 변환한다(S301)
이와 같이 논리 주소가 물리 주소로 변환되면, 변환된 물리 주소를 통해 프로세서(500)로부터 판독 요구되는 논리 주소가 실제 존재하는 주소인지 여부를 확인하기 변환된 물리 주소가 데이터 블록(150)의 물리 주소범위에 존재하는지 여부를 판별하여(S302), 판별결과 존재하지 않는 물리 주소이면 프로세서(500)로 판독 오류 코드를 포함하는 메시지를 전송하여 오류 처리한다(S303).
판별결과 존재하는 물리 주소이면 변환된 물리 주소를 이용하여 플래시 메모리(100)의 데이터 블록(150)에서 해당되는 물리 주소를 검색하고(S304), 검색된 물리 주소에 기록된 데이터를 독출하여 프로세서(500)로 전송한다(S305).
3. 기록 연산 과정
기록 연산 과정은 프로세서(500)로부터 소정의 데이터에 대한 기록이 요구될때에 기록 커맨드와 함께 논리 주소가 입력되면, 첫 자유블록 또는 단계적 사상기법에 의해 할당되는 물리 주소를 데이터가 기록될 블록으로 결정하고 논리 주소와 데이터가 기록되는 물리 주소를 기록 연산에 따른 사상정보로 TC(135)에 기록하는 것이다.
이러한 기록 연산은 맵 블록(130) 또는 데이터 블록(150)의 상태에 따라 크게, 고려해야 될 사항이 거의 없는 경우, 맵 블록(130)에 할당된 TC 블록 영역에 기록된 사상정보로 인해 TC(135) 저장용량이 부족한 경우, TC(135) 및 BIT(133) 저장용량이 부족한 경우, 기록 요구되는 논리 주소에 존재하는 기존에 기록된 데이터를 수정 또는 추가하는 경우로 이루어진다.
먼저, 고려해야 될 사항이 거의 없는 순수한 기록 연산 처리과정을 설명하고, 순차적으로 각 상황에 따른 기록 연산 처리 과정을 설명한다.
도 7은 본 발명에 따른 플래시 메모리 액세스 방법에 따른 순수한 쓰기 연산 처리 과정만을 나타낸 동작 흐름도이다.
도 7에 도시된 바와 같이, 플래시 메모리 컨트롤러(300)에서는 프로세서(500)로부터 기록 연산이 요구되고 소정의 논리 블록 주소가 입력되면(S510), 입력된 논리 블록 주소를 통해 해당되는 블록 주소가 BIT(133)/TC(135)에 존재하는지 여부를 판별한다(S511).
판별결과 논리 블록 주소가 BIT(133)/TC(135)에 존재하지 않으면 UT(137)를 참조하여 포인터로 지시되는 쓰기 가능한 첫 자유 블록을 검색하고(S512), 판별결과 논리 블록 주소가 BIT(133)/TC(135)에 존재하면 단계적 사상기법을 통해 할당되는 임의의 블록을 데이터를 기록할 블록으로 선택한다.
이러한 과정을 통해 데이터를 기록할 블록으로 선택되는 첫 자유 블록 또는 단계적 사상에 의해 할당되는 임의의 블록에 해당되는 물리 주소와 프로세서(500)에 의해 쓰기 요구되는 논리 주소간의 사상정보를 TC(135)에 기록하고 새로 기록되는 사상정보에 따라 변경되는 사용 영역을 나타내는 TC(135) 포인터를 변경한다(S513).
일 예로, 프로세서(500)로부터 기록이 요구되는 논리 주소가 BIT(131)/TC(135)에 존재하지 않는 경우, 플래시 메모리 프로세서(300)에서는 UT(137)의 첫 자유블록을 데이터를 기록할 블록으로 사용하기 위해 다음과 같이 정의된 함수를 호출한다.
Get_Free_Block()
return value is this block number
This Block is the first unused block at UT
이와 같은 함수가 호출됨에 따라, 도 3의 c에 도시된 UT(137)에서 포인터로 지시되고 있는 첫 자유블록이 검색된다.
이와 같이, 데이터를 기록한 블록이 결정되고 TC(135)의 사상정보가 변경되면, 버퍼를 통해 프로세서(500)로부터 데이터를 입력받는다(S514).
플래시 메모리 프로세서(300)에서는 데이터 입력이 완료되면 입력받은 데이터를 플래시 메모리(100)의 데이터 블록(150) 가운데 데이터를 기록할 블록으로 결정된 물리 주소에 기록한다(S515).
이러한 과정을 통해 데이터를 기록하면서 플래시 메모리 컨트롤러(300)에서는 갑작스런 전원 중단에 의한 오류가 발생하는지 여부를 판별한다(S516).
판별결과에 따라 데이터 기록을 완료하거나, 데이터를 기록하던 블록을 오류 블록으로 지정한 후 PAT(131)에 오류 블록을 기록하고 변경된 PAT(131)를 현재 PAT가 기록된 다음 페이지에 기록한다.
또한, 오류 블록에 의해 변경된 PAT 주소정보를 헤더(110)에 기록하고, 데이터 기록을 완료하기 위해 UT(137)를 참조하여 데이터를 기록할 첫 자유블록을 검색하는 루틴으로 리턴한다(S517).
도 8은 TC(135)의 용량이 부족한 경우에 이루어지는 본 발명의 플래시 메모리 액세스 방법에 따른 쓰기 연산 처리 과정을 나타낸 동작 흐름도이다.
TC(135) 용량이 부족한 쓰기 연산 과정은 도 9의 일반적인 쓰기 연산과정과 유사하므로 중복되는 설명은 생략한다.
도 8에 도시한 바와 같이, 우선, 프로세서(500)로부터 기록 연산이 요구되면 해당되는 커맨드와 함께 소정의 논리 블록 주소를 입력받는다(530).
그 다음, 플래시 메모리 컨트롤러(300)에서는 입력된 논리 주소가 BIT(133)/TC(135)에 존재하는지 여부를 판별하고(S531), 판별 결과에 따라 UT(137)를 참조하여 사용 가능한 첫 자유 블록을 검색하거나(S532), 단계적 사상기법에 의해 할당되는 임의의 블록을 통해 데이터를 기록할 블록을 검색한다(S533).
이러한 과정에 따라 첫 자유블록 또는 임의의 블록이 데이터를 기록할 블록으로 결정되면 이에 따른 사상정보를 TC(135)에 기록한다.
그러나, TC(135)의 저장용량이 부족하므로 맵 블록(130)의 BIT 블록 영역 가운데 새로운 블록을 할당받아 TC(135)로부터 갱신되는 사상정보로 변경되는 BIT(133)를 기록하고(S534), 이전의 TC(135)를 삭제한다(S535).
이와 같이 새로 할당된 블록에 갱신되는 BIT(133)를 기록하고 이전의 TC 블록을 삭제함에 따라, BIT(133) 및 TC(135)의 블록이 변경되어 BIT 또는 TC 블록 영역 내에서 사용되고 있는 영역을 지시하는 BIT(133)와 TC(135) 포인터를 변경한다(S536).
BIT(133)와 TC(135)의 포인터를 변경한 후 플래시 메모리 컨트롤러(300)에서는 기록 연산에 따라 프로세서(500)로부터 전송되는 데이터를 버퍼로 입력받고(S537), 지정된 플래시 메모리(100)의 물리 주소에 기록한다(S538).
또한, 데이터 기록과정에서의 오류 발생 여부를 판별하여(S539), 오류가 발생되면 데이터를 기록하던 블록을 오류 블록으로 지정한 후 PAT(131)에 오류 블록을 기록하고 변경된 PAT(131)를 현재 PAT가 기록된 다음 페이지에 기록한다.
또한, 오류 블록에 의해 변경된 PAT 주소정보를 헤더(110)에 기록하고, 데이터 기록을 완료하기 위해 UT(137)를 참조하여 데이터를 기록할 첫 자유블록을 검색하는 루틴으로 리턴한다(S540).
도 9는 BIT(313) 및 TC(135)의 용량이 부족한 경우에 이루어지는 본 발명의 플래시 메모리 액세스 방법에 따른 쓰기 연산 처리 과정을 나타낸 동작 흐름도이다.
BIT(313) 및 TC(135) 용량이 부족한 쓰기 연산 과정은 도 8의 TC(135) 용량이 부족한 경우에 이루어지는 쓰기 연산과정과 유사하므로 중복되는 설명은 생략한다.
도 9에 도시한 바와 같이, 우선, 프로세서(500)로부터 기록 연산이 요구되면 해당되는 커맨드와 함께 소정의 논리 블록 주소를 입력받는다(550).
그 다음, 플래시 메모리 컨트롤러(300)에서는 입력된 논리 주소가 BIT(133)/TC(135)에 존재하는지 여부를 판별하고(S551), 판별 결과에 따라 UT(137)를 참조하여 사용 가능한 첫 자유 블록을 검색하거나(S552), 단계적 사상기법에 의해 할당되는 임의의 블록을 통해 데이터를 기록할 블록을 검색한다(S553).
이러한 과정에 따라 첫 자유블록 또는 임의의 블록이 데이터를 기록할 블록으로 결정되면 이에 따른 사상정보를 TC(135)에 기록한다.
그러나, BIT(133) 및 TC(135)의 용량이 부족하므로, BIT 블록 영역에서 새로운 블록을 할당받아 TC(135)의 사상정보가 갱신되는 BIT(133)를 기록하고(S554), 이전의 BIT(133) 및 TC(135)를 삭제한다.(S555).
이와 같이, 새로운 블록을 할당받아 갱신되는 BIT(133)를 기록하고 이전의 BIT(133)와 TC(135)를 삭제함으로써 BIT(133) 및 TC(135)의 블록이 변경되어 BIT 또는 TC 블록 영역 내에서 사용되고 있는 영역을 지시하는 BIT(133)와 TC(135) 포인터를 변경한다(S556).
이러한, BIT(133)와 TC(135)의 사상정보 변경 후 프로세서(500)로부터 버퍼로 데이터를 입력받고(S557), 선택된 물리 주소에 해당되는 플래시 메모리(100)의 데이터 블록에 기록한다(S558).
또한, 데이터 기록 과정에서의 오류 발생 여부를 판별하여(S559), 오류 발생 시 데이터가 기록되던 블록을 오류블록으로 지정한 후 PAT(131)에 기록하고, 변경된 PAT(131)를 현재 PAT가 기록된 다음 페이지에 기록하며 이에 따라 변경되는 PAT 주소정보를 헤더(110)에 기록한다.
그리고 데이터 기록을 완료하기 위해 UT(137)를 참조하여 데이터를 기록할 첫 자유블록을 검색하는 루틴으로 리턴한다(S560).
도 10은 기존에 기록된 데이터를 수정 또는 추가하는 경우에 이루어지는 본 발명의 플래시 메모리 액세스 방법에 따른 쓰기 연산 처리 과정을 나타낸 동작 흐름도이다.
데이터를 수정 또는 추가하는 쓰기 연산 과정은 도 7의 쓰기 연산과정과 유사하므로 중복되는 설명은 생략한다.
도 10에 도시한 바와 같이, 먼저 플래시 메모리 컨트롤러(300)에서는 데이터를 기록할 블록을 결정하고 이에 따라 변경되는 사상 정보를 TC(135)에 기록 한다.
그 다음, 프로세서(500)로부터 전송되는 데이터를 버퍼로 입력받고(S575), 입력된 데이터와 기존에 기록된 데이터를 병합하여 플래시 메모리(100)의 데이터 블록(150) 가운데 지정된 물리 주소에 기록한다(S576).
이와 같이 수정 또는 추가되는 데이터를 기록한 후에 플래시 메모리 컨트롤러(300)에서는 이전에 데이터가 기록되었던 블록에 기록된 데이터를 삭제한다(S577).
또한, 데이터 기록 과정에서 오류 발생 여부를 판별하여 오류 발생 여부에따라 오류 복구를 한다.
4. 오류복구 연산 과정
오류복구 연산 과정은 데이터 기록 과정에서 갑작스런 전원 중단과 같은 오류가 발생된 경우, 오류 발생을 감지하고 데이터 복구를 수행하는 것이다.
이러한 오류복구 연산은 프로세서(500)로부터 요구되는 기록 연산을 수행하는 과정 중 BIT(133) 또는 TC(135)의 사상정보를 갱신하는 과정에서 전원 중단이 발생되는 경우, 프로세서(500)로부터 입력되는 데이터를 해당 물리 주소에 기록하는 과정에서 발생되는 경우로 이루어진다.
본 발명에 따른 오류복구 연산에서는 오류복구를 위해, 먼저 사상정보 갱신하는 과정에서 오류가 발생여부를 판별하여 사상정보를 복구한 후, 데이터를 기록하는 과정에서도 오류가 발생되었는지를 판별하여 데이터를 복구한다.
이를 통해 갑작스런 전원 중단이 발생되었을 경우, 사상정보를 기록하는 과정에서의 오류 및 데이터를 기록하는 과정에서의 오류를 모두 판별하고 복구할 수 있게 된다.
도 11은 본 발명의 플래시 메모리 액세스 방법에 따른 오류복구를 위한 연산 처리과정을 나타낸 동작 흐름도이다.
도 11에 도시한 바와 같이, 먼저 맵 블록(130)으로부터 얻어지는 BIT(313)/TC(315)를 체크하여(S700), BIT spare(134)/TC spare(136)를 포함하는 모든 BIT/TC 블록 영역에 BIT(133)/TC(135)가 복수개 존재하는지 여부를 판별한다(S701).
판별결과 BIT(133)/TC(135)가 복수개 존재하면 사상정보를 갱신하는 과정에서 전원 중단에 의해 오류가 발생되어 BIT spare(134)/TC spare(136)에 사상정보가 기록되어 있는 상태로 판단한다.
이러한 경우, 갑작스런 전원 중단에 의한 사상정보 오류를 복구하기 위해 BIT(133)/TC(135)에 기록된 사상정보 가운데 가장 최근의 사상정보를 삭제하고, 최근의 사상정보가 삭제된 BIT(133)/TC(135)와 맵 블록(130)으로부터 얻어지는 PAT(131)를 초기화 과정에서 플래시 메모리(300)에 의해 생성된 UT(137)에 병합시킨다(S702).
판별결과 BIT(133)/TC(135)가 하나만 존재하면, 검색된 BIT(133)/TC(135) 및 맵 블록(130)으로부터 얻어지는 PAT(131)를 초기화 과정에서 플래시 메모리 컨트롤러(300)에 의해 생성된 UT(137)에 병합시킨다(S703).
이와 같은 과정을 통해 사상정보 갱신과정에서의 오류 발생 여부를 확인하고 사상정보 오류를 복구한 후, UT(137)를 통해 UT(137)의 첫 자유블록에 데이터가 기록되어 있는지 여부를 검색한다(S704).
UT(137)의 첫 자유블록에 대한 검색 결과를 통해 첫 자유 블록이 순수한 자유블록인지 여부를 판별하여(S705), 첫 자유블록이 순수한 자유블록이 아닌 경우에는 첫 자유블록에 기록된 데이터를 삭제한다(S706).
이러한 과정을 통해 프로세서(500)로부터 요구되는 기록연산 수행과정에서 발생되는 오류를 감지하고 데이터를 복구할 수 있다.
또한, 이러한 오류복구 연산 과정은 갑작스런 전원 중단 후 인가되는 전원에의해 플래시 메모리를 초기화 하는 과정뿐만 아니라, 플래시 메모리 컨트롤러(300)의 제어에 따라 수시로 수행될 수 있다.
도 12의 a내지 c는 본 발명에 따른 오류 복구 과정 가운데 사상정보 갱신 과정에서의 오류 복구 과정을 나타낸 것으로, 도 12의 a는 BIT(133) 및 TC(135)의 사상 정보가 갱신되기 이전의 초기 상태이고, 도 12의 b는 새로운 사상 정보로 인해 TC(135)의 사상정보를 BIT(133)로 갱신하는 과정에서의 전원 중단 발생된 상태이고, 도 12의 c는 전원이 인가되어 초기화 과정이 이루어진 상태를 나타낸 것이다.
도 12의 a에 도시된 바와 같이, 프로세서(500)로부터 요구되는 기록 또는 삭제 연산에 의해 변경되는 사상정보가 TC(135)에 기록되고, 이러한 과정에서 프로세서(500)로부터 요구된 기록 연산에 의해 새로 생성된 사상정보에 의해 LBN(2)의 사상정보가 갱신되면, 도 12의 b에 도시한 바와 같이 TC(135)의 LBN(2)에 새로운 사상정보가 기록된다.
만일, TC(135)에 지정된 저장 가능한 값이 3개의 사상정보라면, TC(135)에 기록된 사상정보가 지정된 값에 도달되었기 때문에 BIT(133)로 사상정보를 갱신한다.
TC(135)의 사상정보를 BIT(133)로 갱신하기 위해서는 도 12의 b에 도시한 바와 같이, 먼저, 여유블록인 TC spare(136)에 기존의 사상정보를 기록하고, BIT(133)로 사상정보를 갱신한다.
이러한 사상정보 갱신 과정에 따라 BIT(133)의 LBN(0)에 데이터를 기록한 후 갑작스런 전원 중단이 발생되었다면, 현재의 상태에서 데이터 기록이 중단된다.
이 후, 전원이 인가되면 플래시 메모리 컨트롤러(300)에 의해 플래시 메모리 초기화 과정이 수행되고, PAT(131), BIT(133), TC(135)가 검출된다.
플래시 메모리 컨트롤러(300)에서는 초기화 과정을 수행되면 갑작스런 전원 중단에 의한 오류를 감지하고 복구하기 위해, 맵 블록(130)에 할당된 BIT 블록영역 및 TC 블록영역을 검색한다.
검색결과 도 12의 c에 도시한 바와 같이,BIT(133), TC(135), TC spare(136)가 검색되었다면, 플래시 메모리 컨트롤러(300)에서는 TC(135)에 해당되는 사상정보가 복수개 검색되었기 때문에 전원 중단으로 인해 오류가 발생된 것으로 판단하고 사상정보 오류를 복구하기 위해 BIT(133) 및 TC(135)에 기록된 최근의 사상정보를 삭제한다.
이에 따라, BIT(133)의 LBN(0)에 기록된 PBN는 삭제되고, TC(135)의 LBN(2)에 기록된 PBN도 삭제된다.
이와 같은 과정을 통해서, 프로세서(500)로부터 요구되는 기록 연산에 따라 발생된 사상정보를 갱신하는 과정에서의 데이터 오류를 복구한다.
도 13의 a 및 b는 이러한 본 발명에 따른 오류 복구 과정 가운데 데이터 기록 과정에서의 오류 복구 과정을 나타낸 것으로, 도 13의 a는 데이터 기록과정에서의 전원 중단을 나타낸 것이고, 도 13의 b는 전원을 인가한 후의 사상 테이블 및 데이터 블록의 상태를 나타낸 것이다.
도 13의 a에 도시한 바와 같이, 프로세서(500)로부터 요구되는 기록 연산에 따라 새로 생성된 사상정보에 의해 LBN(2)의 사상정보가 갱신되면, TC(135)의LBN(2)에 새로운 사상정보가 기록된다.
이와 같이, TC(135)의 LBN(2)에 새로운 사상정보가 기록되면, LBN(2)은 사용되고 있는 논리 주소이기 때문에 유효하지 않은 상태(invalid)로 지정되고, 해당되는 물리적 주소 '56'에 프로세서(500)로부터 입력되는 데이터가 기록되기 시작한다.
만일, 이러한 과정에서 갑작스런 전원 중단이 발생한다면 데이터 기록은 중단되고, 전원 인가 후 초기화 과정이 수행된다.
초기 과정에 따라 TC(135)가 독출되면, TC(135)의 LBN(2)는 도 13의 b에 도시된 바와 같이, 데이터 기록이 중단되었기 때문에 유효한 상태(valid)로 지정된다.
플래시 메모리 컨트롤러(300)에서는 초기화 과정에서 독출된 PAT(131), BIT(133), TC(135) 또는 초기화 과정에서 독출된 PAT(131)와 최근 사상 정보가 삭제된 BIT(133), TC(135)를 UT(137)에 병합하고 UT(137)의 첫 자유블록(valid)을 검사하면 이전에 기록되던 물리 주소가 존재하는 것으로 검사된다.
이에 따라, 플래시 메모리 컨트롤러(300)는 오류 블록을 복구하기 위하여, 첫 자유블록으로 지정된 PBN(2)에 기록된 물리 주소를 통해 해당되는 데이터 블록(150)에 기록된 데이터를 삭제한다.
이러한 과정을 통해 갑작스런 전원 중단이 발생된 후, 전원이 인가되면 플래시 메모리 컨트롤러(300)에서는 프로세서(500)로부터 요구된 기록 또는 삭제 연산에 따른 재 사상과정에서의 오류 및 데이터 기록 과정에서의 오류를 감지하고 복구할 수 있다.
본 발명은 도면에 도시된 일 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명에 따르면, 플래시 메모리 액세스 시에 데이터 블록의 상태 정보를 포함하는 사상 테이블을 참조하여 읽기 또는 쓰기가 요구되는 데이터 블록을 효율적으로 액세스할 수 있다.
또한, 갑작스런 전원 중단으로 인해 발생되는 오류 블록을 감지하고 효과적으로 복구할 수 있는 효과를 제공한다.
그리고, 이러한 효과를 통해 플래시 메모리의 안정성을 극대화 시킬 수 있는 효과를 제공한다.

Claims (18)

  1. 데이터 블록을 구성하는 각 블록에 할당되는 물리 주소와 각 블록의 상태 정보로 이루어지는 사상 테이블인 제 1 사상 테이블과,
    오류 블록이 제외된 상기 제 1 사상 테이블의 각 블록에 대한 물리 주소와 논리 주소간의 사상정보로 이루어지는 사상테이블인 제 2 사상 테이블과,
    상기 제 2 사상 테이블의 갱신동작을 최소화하기 위해 최근의 사상정보를 지정된 값만큼 기록하고 처리하는 사상테이블인 제 3 사상 테이블로 이루어진 맵 블록을 포함하는 것을 특징으로 하는 플래시 메모리.
  2. 제 1항에 있어서,
    상기 제 1 사상 테이블, 제 2 사상 테이블, 제 3 사상 테이블에 대한 각각의 여유 블록을 더 포함하는 것을 특징으로 하는 플래시 메모리.
  3. 제 2항에 있어서,
    상기 제 2 사상 테이블 및 제 3 사상 테이블에 대한 여유 블록은 기록 및 삭제 연산에 따라 발생되는 사상정보로 인해 갱신되는 이전의 사상정보를 저장하는 것을 특징으로 하는 플래시 메모리.
  4. 데이터 블록의 물리 주소 정보로 이루어지는 제 1 사상 테이블과 오류블록이제외된 제 1 사상 테이블의 사상정보로 이루어지는 제 2 사상 테이블과 가장 최근의 사상정보로 이루어지는 제 3 사상 테이블과 각각의 여유 블록으로 이루어지는 맵 블록을 포함하는 플래시 메모리,
    상기 플래시 메모리의 맵 블록으로부터 얻어지는 제 1 및 제 2 및 제 3 사상 테이블을 통해 자유블록 정보로 이루어지는 제 4 사상 테이블을 생성하고 판독 및 기록 연산 시 제 2 및 제 3 사상 테이블 또는 제 4 사상 테이블을 참조하여 데이터를 판독/기록할 물리 주소를 액세스하는 플래시 메모리 컨트롤러를 포함하는 것을 특징으로 하는 플래시 메모리 액세스 장치.
  5. 제 4항에 있어서,
    상기 플래시 메모리 컨트롤러는 상기 제 2 사상 테이블과 제 3 사상 테이블 및 제 4 사상 테이블을 통해 사상정보 갱신 또는 데이터 기록 과정에서의 전원 중단에 의한 오류를 감지하고 데이터를 복구하는 것을 특징으로 하는 플래시 메모리 액세스 장치.
  6. 프로세서로부터 판독 및 기록 연산이 요구되면 커맨드와 함께 논리 주소를 입력받는 단계;
    상기 판독 및 기록 연산을 위해 플래시 메모리로부터 독출되는 데이터 블록의 물리 주소 정보 가운데 오류블록이 제외된 사상정보로 이루어지는 제 2 사상 테이블과 가장 최근의 사상정보로 이루어지는 제 3 사상 테이블에서 상기 논리 주소를 체크하는 단계;
    상기 제 2 사상 테이블과 제 3 사상 테이블에 상기 논리 주소가 존재하면 지정되는 데이터 블록의 물리 주소를 액세스 하여 판독 및 기록 연산을 처리하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 액세스 방법.
  7. 제 6항에 있어서,
    상기 제 2 사상 테이블과 제 3 사상 테이블에 상기 논리 주소가 존재하지 않으면 판독 또는 기록 연산에 따라 판독 오류 처리하거나 플래시 메모리 컨트롤러에 의해 생성되는 자유블록 정보로 이루어지는 제 4 사상 테이블을 통해 할당되는 자유블록의 물리 주소를 액세스하여 기록 연산을 처리하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 액세스 방법.
  8. 제 6항에 있어서,
    상기 프로세서로부터 요구되는 연산동작에 따라 상기 플래시 메모리를 효율적으로 액세스하기 위한 사상정보를 플래시 메모리의 맵 블록으로부터 로딩하여 플래시 메모리를 초기화하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 액세스 방법.
  9. 제 6항에 있어서,
    상기 기록 연산 과정에서 발생되는 전원 중단에 의한 오류를 감지하고 데이터를 복구하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 액세스 방법.
  10. 제 6항에 있어서,
    상기 판독 연산은
    상기 프로세서로부터 판독 연산이 요구되면 데이터 판독을 위한 소정의 논리 주소를 입력받는 단계;
    상기 입력되는 논리 주소를 상기 제 2 사상 테이블과 제 3 사상 테이블을 참조하여 실제로 데이터가 기록된 플래시 메모리의 물리 주소로 변환하는 단계;
    상기 물리주소로의 변환 과정에서 프로세서로부터 판독이 요구되는 논리 주소가 데이터 블록에 존재하는 유효한 주소인지를 판별하는 단계;
    상기 판별결과 유효한 주소가 아닌 경우에는 판독 오류로 처리하고 유효한 주소인 경우에는 상기 물리 주소를 통해 플래시 메모리에 기록된 데이터를 독출하여 상기 프로세서로 전송하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 액세스 방법.
  11. 제 6항에 있어서,
    상기 기록 연산은
    상기 프로세서로부터 기록 연산이 요구되면 데이터 기록을 위한 소정의 논리 주소를 입력받는 단계;
    상기 입력된 논리 주소가 상기 제 2 및 제 3 사상 테이블에 존재하는지 여부를 판별하는 단계;
    상기 판별결과에 따라 단계적 사상기법을 통해 지정되는 임의의 블록 또는 플래시 메모리 컨트롤러에 의해 생성되는 자유블록 정보로 이루어지는 제 4 사상 테이블을 통해 할당되는 자유블록을 데이터가 기록될 물리 주소로 지정하는 단계;
    상기 지정된 물리 주소에 따라 상기 논리 주소와 물리 주소간의 사상정보를 상기 제 3 사상 테이블에 기록하고 갱신되는 사상정보에 따라 사용 영역을 나타내는 상기 제 3 사상 테이블의 포인터를 변경하는 단계;
    상기 프로세서로부터 전송되는 데이터를 버퍼로 입력받고 입력된 데이터를 상기 물리 주소에 기록하는 단계;
    상기 데이터 기록 과정에서의 오류 발생 여부를 판별하는 단계;
    상기 판별결과 오류가 발생되면 플래시 메모리로부터 독출되는 데이터 블록의 물리 주소 정보로 이루어지는 제 1 사상 테이블에 상기 물리 주소의 블록을 오류블록으로 기록하고 갱신되는 오류정보에 따라 현재의 사상 정보를 나타내는 주소정보를 갱신된 제 1 사상 테이블이 기록된 주소로 변경하며 자유블록을 검색하여 데이터를 기록을 시도하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 액세스 방법.
  12. 제 11항에 있어서,
    상기 플래시 메모리에 할당된 제 3 사상 테이블의 사상정보 저장 용량이 이전의 사상정보로 인해 부족하면, 상기 제 3 사상 테이블의 사상정보를 상기 제 2 사상 테이블로 갱신하기 위해 새로운 블록을 할당받아 상기 제 3 사상 테이블의 사상 정보가 갱신되는 제 2 사상 테이블의 사상정보를 할당된 블록에 기록하는 단계;
    상기 제 3 사상 테이블에 기록된 이전의 사상 정보를 삭제하는 단계;
    상기 갱신 또는 삭제되는 사상정보에 따라 사용 영역을 나타내는 상기 제 2 및 제 3 사상 테이블의 포인터를 변경하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 액세스 방법.
  13. 제 11항에 있어서,
    상기 플래시 메모리에 할당된 제 2 및 제 3 사상 테이블의 사상정보 저장 용량이 이전의 사상정보로 인해 부족하면, 상기 제 3 사상 테이블의 사상정보를 상기 제 2 사상 테이블로 갱신하기 위해 새로운 블록을 할당받아 상게 제 3 사상 테이블의 사상 정보가 갱신되는 제 2 사상 테이블의 사상정보를 할당된 블록에 기록하는 단계;
    상기 제 2 및 제 3 사상 테이블에 기록된 이전의 사상 정보를 삭제하는 단계;
    상기 갱신 또는 삭제되는 사상정보에 따라 사용 여역을 나타내는 상기 제 2 및 제 3 사상 테이블의 포인터를 변경하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 액세스 방법.
  14. 제 11항에 있어서,
    상기 논리 주소에 기존에 기록된 데이터가 존재하면, 상기 프로세서로부터 입력되는 데이터를 버퍼로 입력받고, 입력된 데이터와 기존에 기록된 데이터를 병합하여 병합된 데이터를 상기 물리 주소에 기록하는 단계;
    상기 데이터 기록이 완료되면 기존에 데이터가 기록되었던 블록의 데이터를 삭제하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 액세스 방법.
  15. 제 11 내지 13항 중 어느 한 항에 있어서,
    상기 제 2 및 제 3 사상 테이블의 사상 정보를 갱신할 때마다 각 사상 테이블의 여유 블록에 갱신되는 이전의 사상정보를 저장하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 액세스 방법.
  16. 제 8항에 있어서,
    상기 플래시 메모리를 초기화 하는 단계는
    상기 플래시 메모리의 지정된 블록에 기록되는 제 1 사상 테이블 주소정보에 대한 저장정보를 포함하는 플래시 메모리에 대한 전체 정보를 체크하는 단계;
    상기 플래시 메모리의 맵 블록으로부터 제 1 사상 테이블을 독출하고, 맵 블록에 할당된 제 2 및 제 3 사상 테이블 영역을 통해 제 2 및 제 3 사상 테이블을 독출하는 단계;
    상기 독출된 제 1 및 제 2 및 제 3 사상 테이블을 논리합으로 병합하여 제 4사상 테이블을 생성하고, 생성된 제 4 사상 테이블을 램에 저장하는 단계;
    상기 프로세서로부터 요구되는 판독 또는 기록 연산을 처리하기 위해 대기하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 액세스 방법.
  17. 제 16항에 있어서,
    상기 제 1 사상 테이블을 독출하는 단계는
    상기 저장정보를 이용하여 지정된 블록에서 제 1 사상 테이블의 주소정보를 검색하는 단계;
    상기 검색결과 상기 주소정보가 검색되면 주소정보를 검출하는 단계;
    상기 검색결과 상기 주소정보가 검색되지 않으면 상기 플래시 메모리에 할당되는 제 1 사상 테이블 블록 영역에서 상기 제 1 사상 테이블을 검색하여 상기 제 1 사상 테이블이 검색된 주소정보를 지정된 블록에 기록하거나 상기 제 1 사상 테이블 블록 영역을 검사하여 제 1 사상 테이블을 생성하고 생성된 제 1 사상 테이블이 기록된 주소정보를 지정된 블록에 기록하는 단계;
    상기 검색 또는 생성된 주소정보를 이용하여 상기 플래시 메모리로부터 제 1 사상 테이블을 독출하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 액세스 방법.
  18. 제 9항에 있어서,
    상기 오류를 감지하고 데이터를 복구하는 단계는
    상기 제 2 및 제 3 사상 테이블을 상기 플래시 메모리의 맵 블록에서 체크하여, 현재 사용되는 제 2 및 제 3 사상 테이블이 복수개 존재하는지 여부를 판별하는 단계;
    상기 판별결과 제 2 및 제 3 사상 테이블이 복수개 존재하면 사상정보를 갱신하는 과정에서 전원 중단에 의해 오류가 발생된 것으로 판단하여 상기 제 2 및 제 3 사상 테이블에 기록된 가장 최근의 사상정보를 삭제하는 단계;
    상기 판별결과에 따라 검색된 제 2 및 제 3 사상 테이블 또는 최근의 사상 정보가 삭제된 제 2 및 제 3 사상 테이블을 상기 플래시 메모리로부터 독출되는 제 1 사상 테이블과 함께 초기화 과정에서 플래시 메모리 컨트롤러에 의해 생성되는 제 4 사상 테이블에 병합시키는 단계;
    상기 병합된 제 4 사상 테이블에서 첫 자유블록을 검색하여 검색된 자유블록이 기록된 데이터가 없는 순수한 자유블록인지 여부를 판별하는 단계;
    상기 판별결과 순수한 자유블록이 아닌 경우에는 데이터를 기록하는 과정에서 전원 중단에 의해 오류가 발생된 것으로 판단하여 기록된 데이터를 삭제하는 단계를 단계를 포함하는 것을 특징으로 하는 플래시 메모리 액세스 방법.
KR10-2002-0070785A 2002-11-14 2002-11-14 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법 KR100457812B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR10-2002-0070785A KR100457812B1 (ko) 2002-11-14 2002-11-14 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법
US10/695,397 US7191306B2 (en) 2002-11-14 2003-10-29 Flash memory, and flash memory access method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0070785A KR100457812B1 (ko) 2002-11-14 2002-11-14 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법

Publications (2)

Publication Number Publication Date
KR20040042478A true KR20040042478A (ko) 2004-05-20
KR100457812B1 KR100457812B1 (ko) 2004-11-18

Family

ID=32171630

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0070785A KR100457812B1 (ko) 2002-11-14 2002-11-14 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법

Country Status (2)

Country Link
US (1) US7191306B2 (ko)
KR (1) KR100457812B1 (ko)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100572328B1 (ko) * 2004-07-16 2006-04-18 삼성전자주식회사 배드 블록 관리부를 포함하는 플래시 메모리 시스템
KR100703806B1 (ko) * 2006-02-16 2007-04-09 삼성전자주식회사 비휘발성 메모리, 이를 위한 데이터 유효성을 판단하는장치 및 방법
KR100758585B1 (ko) * 2005-09-30 2007-09-13 시그마텔, 인크. 비휘발성 컴퓨터 메모리에 액세스하는 시스템 및 방법
KR100783560B1 (ko) * 2005-11-11 2007-12-07 (주)아이디스 데이터 처리 시스템 및 데이터 구성 방법과 저장 방법
KR100881052B1 (ko) * 2007-02-13 2009-01-30 삼성전자주식회사 플래시 메모리의 매핑 테이블 검색 시스템 및 그에 따른검색방법
KR100881597B1 (ko) * 2007-02-02 2009-02-03 지인정보기술 주식회사 읽기 요청 처리 시스템 및 방법
US7613982B2 (en) 2004-11-16 2009-11-03 Samsung Electronics Co., Ltd. Data processing apparatus and method for flash memory
US8015344B2 (en) 2004-11-19 2011-09-06 Samsung Electronics Co., Ltd. Apparatus and method for processing data of flash memory
KR101114398B1 (ko) * 2010-01-25 2012-02-22 인하대학교 산학협력단 삭제 그룹 플래시 변환 계층을 이용한 퓨전 플래시 메모리의 주소 변환 방법 및 다중 블록 삭제 방법
US8745312B2 (en) 2007-02-22 2014-06-03 Samsung Electronics Co., Ltd. Storage device and method of mapping a nonvolatile memory based on a map history
KR20190124041A (ko) * 2018-04-25 2019-11-04 삼성전자주식회사 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6426893B1 (en) * 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
JP2005204174A (ja) * 2004-01-16 2005-07-28 Seiko Epson Corp 画像形成装置、及び記憶媒体
TWI249670B (en) * 2004-04-29 2006-02-21 Mediatek Inc System and method capable of sequentially writing a flash memory
JP4208805B2 (ja) * 2004-09-15 2009-01-14 キヤノン株式会社 電子機器及びその制御方法、及びプログラム
KR100706242B1 (ko) * 2005-02-07 2007-04-11 삼성전자주식회사 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법
US20070083697A1 (en) * 2005-10-07 2007-04-12 Microsoft Corporation Flash memory management
JP5076411B2 (ja) * 2005-11-30 2012-11-21 ソニー株式会社 記憶装置、コンピュータシステム
KR100781520B1 (ko) * 2006-02-24 2007-12-03 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 이를위한 맵핑 정보 복구 방법
JP4229140B2 (ja) * 2006-06-16 2009-02-25 ソニー株式会社 集積回路チップ、データ読み出し方法、データ書き込み方法、icカード、および携帯電話機
KR100845137B1 (ko) 2006-10-02 2008-07-09 삼성전자주식회사 메모리 장치의 배드 블록 주소를 번역하는 방법, 메모리장치의 배드 블록 주소를 번역하는 장치 및 이를 포함하는메모리 장치 컨트롤러
US7769945B2 (en) * 2007-01-18 2010-08-03 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US7669092B2 (en) 2007-02-26 2010-02-23 Micron Technology, Inc. Apparatus, method, and system of NAND defect management
US7978516B2 (en) 2007-12-27 2011-07-12 Pliant Technology, Inc. Flash memory controller having reduced pinout
US8285940B2 (en) * 2008-02-29 2012-10-09 Cadence Design Systems, Inc. Method and apparatus for high speed cache flushing in a non-volatile memory
JP2009211233A (ja) 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
WO2009143885A1 (de) * 2008-05-28 2009-12-03 Hyperstone Gmbh Verfahren zum adressieren von seitenorientierten nichtflüchtigen speichern
US8732388B2 (en) * 2008-09-16 2014-05-20 Micron Technology, Inc. Embedded mapping information for memory devices
KR101510120B1 (ko) 2008-11-21 2015-04-10 삼성전자주식회사 메모리 장치 및 메모리 장치의 관리 방법
US8612718B2 (en) * 2009-08-19 2013-12-17 Seagate Technology Llc Mapping alignment
TWI395102B (zh) * 2009-10-02 2013-05-01 Via Tech Inc 資料儲存裝置與方法
TW201113886A (en) * 2009-10-09 2011-04-16 Silicon Motion Inc Method for enhancing performance of accessing a flash memory, and associated memory device and controller thereof
US8688897B2 (en) 2010-05-28 2014-04-01 International Business Machines Corporation Cache memory management in a flash cache architecture
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US20140258628A1 (en) * 2013-03-11 2014-09-11 Lsi Corporation System, method and computer-readable medium for managing a cache store to achieve improved cache ramp-up across system reboots
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
JP6008325B2 (ja) * 2013-05-17 2016-10-19 学校法人 中央大学 データ記憶システムおよびその制御方法
US8886874B1 (en) 2013-06-24 2014-11-11 Freescale Semiconductor, Inc. System and method for low-latency addressing in flash memory
KR20150006614A (ko) * 2013-07-09 2015-01-19 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9235509B1 (en) 2013-08-26 2016-01-12 Sandisk Enterprise Ip Llc Write amplification reduction by delaying read access to data written during garbage collection
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
TWI489279B (zh) * 2013-11-27 2015-06-21 Realtek Semiconductor Corp 虛擬實體位址轉換系統以及虛擬實體位址轉換系統的管理方法
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
TWI502345B (zh) 2014-05-12 2015-10-01 Via Tech Inc 快閃記憶體控制晶片以及資料儲存裝置以及快閃記憶體控制方法
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US10002044B2 (en) 2014-08-19 2018-06-19 Samsung Electronics Co., Ltd. Memory devices and modules
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
CN106155939B (zh) * 2015-03-30 2019-05-31 联想(北京)有限公司 一种信息处理方法及电子设备
US9916091B2 (en) * 2015-07-13 2018-03-13 Samsung Electronics Co., Ltd. Memory system architecture
KR102415385B1 (ko) 2015-07-22 2022-07-01 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 저장 장치
US10445195B2 (en) * 2017-08-07 2019-10-15 Micron Technology, Inc. Performing data restore operations in memory
CN107678686B (zh) * 2017-09-19 2020-07-14 山东存储之翼电子科技有限公司 基于硬件实现闪存的ftl功能的方法及其数据存储装置
US11048597B2 (en) 2018-05-14 2021-06-29 Micron Technology, Inc. Memory die remapping
KR20220075945A (ko) * 2020-11-30 2022-06-08 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
CN112612418B (zh) * 2020-12-25 2024-03-08 航天信息股份有限公司 一种用于大容量NandFlash坏块管理的方法及系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5907856A (en) * 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6038639A (en) * 1997-09-09 2000-03-14 Storage Technology Corporation Data file storage management system for snapshot copy operations
KR20000003162A (ko) * 1998-06-26 2000-01-15 윤종용 효율적인 플래시 메모리 운용 방법
JP4315488B2 (ja) * 1998-06-30 2009-08-19 ソニー株式会社 データ記憶装置、データ処理装置、データ処理システム並びにデータ処理方法
KR20010028624A (ko) 1999-09-22 2001-04-06 김현태 유아용 인형
KR100577380B1 (ko) * 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
TWI237759B (en) * 2001-10-04 2005-08-11 Via Tech Inc Method for data accessing in a computer and the computer thereof
US6711663B2 (en) * 2001-11-15 2004-03-23 Key Technology Corporation Algorithm of flash memory capable of quickly building table and preventing improper operation and control system thereof
KR100484147B1 (ko) * 2002-07-26 2005-04-18 삼성전자주식회사 플래시 메모리 관리 방법
KR100914646B1 (ko) * 2002-08-31 2009-08-28 지인정보기술 주식회사 멀티-플레인 구조의 플래시 메모리 관리 방법
CN100489843C (zh) * 2003-01-02 2009-05-20 洛马林达大学医学中心 用于质子束治疗系统的配置管理和选取系统

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7472331B2 (en) 2004-07-16 2008-12-30 Samsung Electronics Co., Ltd. Memory systems including defective block management and related methods
KR100572328B1 (ko) * 2004-07-16 2006-04-18 삼성전자주식회사 배드 블록 관리부를 포함하는 플래시 메모리 시스템
US7613982B2 (en) 2004-11-16 2009-11-03 Samsung Electronics Co., Ltd. Data processing apparatus and method for flash memory
US8015344B2 (en) 2004-11-19 2011-09-06 Samsung Electronics Co., Ltd. Apparatus and method for processing data of flash memory
US8230166B2 (en) 2004-11-19 2012-07-24 Samsung Electronics Co., Ltd. Apparatus and method for processing data of flash memory
KR100758585B1 (ko) * 2005-09-30 2007-09-13 시그마텔, 인크. 비휘발성 컴퓨터 메모리에 액세스하는 시스템 및 방법
KR100783560B1 (ko) * 2005-11-11 2007-12-07 (주)아이디스 데이터 처리 시스템 및 데이터 구성 방법과 저장 방법
KR100703806B1 (ko) * 2006-02-16 2007-04-09 삼성전자주식회사 비휘발성 메모리, 이를 위한 데이터 유효성을 판단하는장치 및 방법
KR100881597B1 (ko) * 2007-02-02 2009-02-03 지인정보기술 주식회사 읽기 요청 처리 시스템 및 방법
US8255663B2 (en) 2007-02-02 2012-08-28 Yookun Cho System and method for processing read request
KR100881052B1 (ko) * 2007-02-13 2009-01-30 삼성전자주식회사 플래시 메모리의 매핑 테이블 검색 시스템 및 그에 따른검색방법
US8745312B2 (en) 2007-02-22 2014-06-03 Samsung Electronics Co., Ltd. Storage device and method of mapping a nonvolatile memory based on a map history
KR101114398B1 (ko) * 2010-01-25 2012-02-22 인하대학교 산학협력단 삭제 그룹 플래시 변환 계층을 이용한 퓨전 플래시 메모리의 주소 변환 방법 및 다중 블록 삭제 방법
KR20190124041A (ko) * 2018-04-25 2019-11-04 삼성전자주식회사 불휘발성 메모리 장치 및 제어기를 포함하는 스토리지 장치

Also Published As

Publication number Publication date
KR100457812B1 (ko) 2004-11-18
US7191306B2 (en) 2007-03-13
US20040085849A1 (en) 2004-05-06

Similar Documents

Publication Publication Date Title
KR100457812B1 (ko) 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법
US7702844B2 (en) Address mapping method and mapping information managing method for flash memory, and flash memory using the same
US6711663B2 (en) Algorithm of flash memory capable of quickly building table and preventing improper operation and control system thereof
US9520992B2 (en) Logical-to-physical address translation for a removable data storage device
JP4832521B2 (ja) フラッシュメモリメディアにおけるデータ管理方法
KR100526190B1 (ko) 플래시 메모리의 재사상 방법
KR100577380B1 (ko) 플래시 메모리와 그 제어 방법
US8312204B2 (en) System and method for wear leveling in a data storage device
KR100608602B1 (ko) 플래시 메모리, 이를 위한 사상 제어 장치 및 방법
KR20080037283A (ko) 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
JPWO2004031966A1 (ja) 不揮発性記憶装置の制御方法
KR100703680B1 (ko) 플래시 파일 시스템
KR20040085422A (ko) 플래시 메모리 액세스 장치 및 방법
CN113961140A (zh) 数据处理方法及对应的数据储存装置
US20070005929A1 (en) Method, system, and article of manufacture for sector mapping in a flash device
US8068363B2 (en) Flash memory apparatus and read operation control method therefor
JP2000285001A (ja) 半導体フラッシュメモリ装置及びその制御方法
CN113885779A (zh) 数据处理方法及对应的数据储存装置
TWI766526B (zh) 資料處理方法及對應之資料儲存裝置
CN115221566A (zh) 一种存储器断电恢复的方法、系统及存储器
TWI758944B (zh) 資料處理方法及對應之資料儲存裝置
JP2022143231A (ja) ストレージデバイス、ストレージシステム、及び制御方法
JP2005092678A (ja) 半導体メモリカード及び不揮発性メモリのデータ消去処理方法
JP3303011B2 (ja) 半導体メモリ装置
JPH05258585A (ja) ファイル装置

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: 20121031

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20131031

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee