KR101449614B1 - 플래시 메모리의 초기 데이터 관리 방법 - Google Patents

플래시 메모리의 초기 데이터 관리 방법 Download PDF

Info

Publication number
KR101449614B1
KR101449614B1 KR1020130005945A KR20130005945A KR101449614B1 KR 101449614 B1 KR101449614 B1 KR 101449614B1 KR 1020130005945 A KR1020130005945 A KR 1020130005945A KR 20130005945 A KR20130005945 A KR 20130005945A KR 101449614 B1 KR101449614 B1 KR 101449614B1
Authority
KR
South Korea
Prior art keywords
block
bad block
flash memory
bad
replacement table
Prior art date
Application number
KR1020130005945A
Other languages
English (en)
Other versions
KR20140093487A (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 KR1020130005945A priority Critical patent/KR101449614B1/ko
Publication of KR20140093487A publication Critical patent/KR20140093487A/ko
Application granted granted Critical
Publication of KR101449614B1 publication Critical patent/KR101449614B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2284Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by power-on test, e.g. power-on self test [POST]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system

Landscapes

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

Abstract

본 발명은 낸드 플래시 메모리의 초기 데이터 관리 방법에 관한 것이다. 상기 초기 데이터 관리 방법은, (a) 초기 데이터가 기록된 낸드 플래시 메모리가 장착된 제품이 최초 부팅될 때, 낸드 플래시 메모리의 전체 영역을 스캔하여 배드 블록 교체 테이블을 생성하는 단계; (b) 상기 배드 블록 교체 테이블을 이용하여 런타임(run-time) 배드 블록을 관리하는 단계; 를 구비하고, 상기 초기 데이터는 배드 블록 스킵 방식으로 낸드 플래시 메모리에 기록된 것을 특징으로 한다.

Description

플래시 메모리의 초기 데이터 관리 방법{Method for managing the default data of the flash memory}
본 발명은 플래시 메모리의 초기 데이터 관리 방법에 관한 것으로서, 더욱 구체적으로는 배드 블록 스킵 방식으로 초기 데이터를 기록하고 배드 블록 교체 테이블 방식으로 초기 데이터를 관리하는 플래시 메모리의 초기 데이터 관리 방법에 관한 것이다.
낸드(NAND) 플래시 메모리가 장착되는 휴대폰, MP3 플레이어 등의 제품은 공장에서 생산되어 출하될 때 낸드 플래시 메모리가 비어 있지 않고, ‘초기 데이터’가 들어 있다. 초기 데이터는 부트 로더, 운영체제 부팅 이미지, 초기 파일시스템 이미지 등을 포함한다.
종래, 초기 데이터를 낸드 플래시 메모리에 기록하는 방법은 크게 두 가지 형태로 나누어 볼 수 있다. 도 1은 종래의 방식에 따라 낸드 플래시 메모리에 초기 데이터를 기록하는 방법들을 설명하기 위하여 도시한 것으로서, (a)는 배드 블록 스킵 방식을 설명하기 위한 것이며, (b)는 배드 블록 교체 테이블 방식을 설명하기 위한 것이다.
첫 번째 방법은 배드 블록 스킵 방식으로 불리며 도 1의 (a)에 도시되어 있다. 낸드 플래시 메모리에 기록해야 하는 초기 데이터(10)를 읽어 그 순서대로 낸드 플래시 메모리(11) 블록 0 번부터 기록해 나간다. 그 과정에서 배드 블록을 만나면 해당 블록을 건너뛰어 그 다음 블록에 기록해 나간다. 어떤 블록에 대한 쓰기(program) 동작이나 소거(erase) 동작이 실패하면 해당 블록을 배드 블록으로 간주하게 되며, 배드 블록 스킵 방식은 그 이름 그대로 그런 배드 블록을 건너뛰는 매우 간단한 방식이다. 도 1의 (a)의 경우에는 3번 블록에 데이터를 기록하는 과정에서 오류가 발생하였기에 3번 블록을 배드 블록으로 판정한 다음, 이를 건너뛰어 4번 블록에 원래 기록하려던 데이터를 계속 기록해 나간다.
제품 생산 과정에서 제품에 탑재된 낸드 플래시 메모리에 초기 데이터를 기록하는 작업은 반복적이고 대량의 수량을 대상으로 하기 때문에 일반적으로 갱 라이터(gang writer)라 불리는 자동화된 장비를 사용한다. 배드 블록 스킵 방식은 매우 간단하고 기본적인 방식이기 때문에 모든 갱 라이터 장비가 지원한다.
초기 데이터를 낸드 플래시 메모리에 기록하는 두 번째 방법은 배드 블록 교체 테이블 방식이며 도 1의 (b)에 도시되어 있다. 배드 블록 교체 테이블 방식에서는 배드 블록이 발생했을 때 미리 예비해둔 블록으로부터 하나를 선택하여 배드 블록과 교체 사용되도록 하며, 그 교체 정보를 배드 블록 교체 테이블(14)에 기록해 둔다. 배드 블록 교체 테이블 자체도 플래시 메모리 내 특정 블록에 저장되어 관리된다. 도 1b 의 경우에는 3번 블록에 데이터를 기록하는 과정에서 오류가 발생하였기에 3번 블록을 배드 블록으로 판정한 다음, 예비 블록 중 하나인 k 번 블록을 골라 3번 블록 대신에 사용되도록 하고 그 교체 정보를 배드 블록 교체 테이블에 기록한다. 나중에 3번 블록에 대한 접근이 발생하면 배드 블록 교체 테이블을 참조하여 3번 블록 대신 k 번 블록이 접근되도록 한다.
배드 블록 교체 테이블 방식은 배드 블록 교체 테이블의 자료구조를 어떻게 정의하느냐에 따라 동작 알고리즘이 다르기 때문에 특정 배드 블록 교체 테이블 방식을 갱 라이터 장비가 기본적으로 지원할 수는 없다. 따라서, 특정 배드 블록 교체 테이블 방식을 지원하기 위해서는 갱 라이터 장비를 구동하는 응용 프로그램을 그에 맞게 새로 작성해 주어야 한다.
초기 데이터를 낸드 플래시 메모리 상으로 기록하는 두 가지 방법 중에서 배드 블록 스킵 방식은 모든 갱 라이터 장비가 기본적으로 지원하는 방식이기 때문에 사용성 측면에서 큰 장점이 있다. 그러나 배드 블록 스킵 방식은 초기 데이터가 기록된 영역에 대해 읽기만(read-only) 허용된다면 문제가 없지만 읽기-쓰기(read-write)가 모두 허용된다면 문제가 생길 수 있다. 즉, 해당 영역 내 어떤 블록에 대해 쓰는 동작을 수행하다가 실패하는 경우, 해당 블록을 배드 블록으로 간주하고 그 다음 블록에 원래 쓰려고 했던 데이터를 기록해야 하지만, 그 다음 블록에는 이미 다른 데이터가 기록되어 있기 때문이다. 따라서, 파일시스템처럼 읽기-쓰기가 모두 허용되어야 하는 영역을 포함하는 초기 데이터는 배드 블록 스킵 방식으로 기록하지 않고 배드 블록 교체 테이블 방식으로 기록하는 것이 종래의 보편화된 방식이다.
이와 같이, 초기 데이터 기록 방법 중 배드 블록 스킵 방식은 모든 갱 라이터 장비가 기본적으로 지원하는 방식으로서, 사용성 측면이 큰 장점이 있기는 하나, 읽기-쓰기가 모두 허용되는 초기 데이터인 경우 배드 블록 스킵 방식을 사용할 수 없는 문제점이 있다. 따라서, 파일 시스템과 같이 읽기-쓰기가 모두 허용되어야 하는 영역을 포함하는 초기 데이터는 특정 배드 블록 교체 테이블 방식을 지원하기 위한 갱 라이터 장비를 별도로 구비하여, 배드 블록 교체 테이블 방식으로 기록하는 번거로움이 있다.
한국등록특허 제10-0678047호 한국등록특허 제10-0692982호 한국공개특허 제10-2012-0058271호
전술한 문제점을 해결하기 위한 본 발명의 목적은 배드 블록 스킵 방식으로 초기 데이터를 기록한 낸드 플래시 메모리에 있어서 배드 블록 교체 테이블 방식으로 초기 데이터의 배드 블록을 관리할 수 있도록 하는 플래시 메모리의 초기 데이터 관리 방법을 제공하는 것이다.
전술한 기술적 과제를 달성하기 위한 본 발명의 특징에 따른 플래시 메모리의 초기 데이터 관리 방법은, (a) 초기 데이터가 기록된 플래시 메모리가 장착된 제품이 최초 부팅될 때, 플래시 메모리의 전체 영역을 스캔하여 배드 블록 교체 테이블을 생성하는 단계; (b) 상기 배드 블록 교체 테이블을 이용하여 런타임(run-time) 배드 블록을 관리하는 단계; 를 구비하고, 상기 초기 데이터는 배드 블록 스킵 방식으로 플래시 메모리에 기록된 것을 특징으로 한다.
전술한 특징에 따른 플래시 메모리의 초기 데이터 관리 방법에 있어서, 상기 (a) 단계는, (a1) 배드 블록을 처리하기 위한 예비 영역을 설정하는 단계; (a2) 플래시 메모리의 전체 영역을 스캔하여 초기 배드 블록 여부를 확인하는 단계; (a3) 초기 배드 블록이 발견되면 해당 블록의 번호를 배드 블록 교체 테이블에 등록하는 단계; 및 (a4) 배드 블록 교체 테이블을 플래시 메모리에 저장하는 단계;를 구비하고,
상기 (a3) 단계는 초기 배드 블록이 발견되면 해당 블록의 번호를 배드 블록 교체 테이블에 등록하되 교체 블록은 등록하지 않는 것이 바람직하다.
전술한 특징에 따른 플래시 메모리의 초기 데이터 관리 방법에 있어서, 상기 (b) 단계는, (b1) 배드 블록 스킵 카운트를 계산하는 단계; 및 (b2) 상기 배드 블록 스킵 카운트를 이용하여 배드 블록을 관리하는 단계;를 구비하며, 상기 (b2) 단계는 임의의 블록에 대한 참조 처리 단계와 런타임 배드 블록의 처리 단계를 수행하는 것이 바람직하며,
상기 임의의 블록(n)에 대한 참조 처리 단계는, 블록 번호(n)와 배드 블록 스킵 카운트를 이용하여 해당 블록에 저장되었어야 할 데이터가 실제로 저장된 블록(n')을 계산하는 단계; 배드 블록 교체 테이블을 탐색하여 상기 실제 저장된 블록(n')이 런타임 배드 블록으로 등록되어 있는지 여부를 확인하는 단계; 만약 상기 실제 저장된 블록(n')이 런타임 배드 블록으로 등록되어 있지 아니하면, 블록 n'이 참조되도록 하는 단계; 및 만약 상기 실제 저장된 블록(n')이 런타임 배드 블록으로 등록되어 있으면, 배드 블록 교체 테이블을 탐색하여 블록(n)에 대한 교체 블록을 찾고 해당 교체 블록이 참조되도록 하는 단계;를 구비하고,
상기 런타임 배드 블록의 처리 단계는, 런타임 배드 블록을 확인하는 단계; 배드 블록 교체 테이블을 탐색하여 사용되지 않고 있는 블록들 중 하나를 선택하여 교체 블록으로 지정하는 단계; 상기 교체 블록과 상기 런타임 배드 블록에 대한 정보를 배드 블록 교체 테이블에 저장하는 단계; 를 구비하는 것이 더욱 바람직하다.
본 발명에 의하여, 배드 블록 스킵 방식을 이용하여 초기 데이터를 플래시 메모리에 기록한 후 배드 블록 교체 테이블 방식을 이용하여 배드 블록을 관리할 수 있게 됨으로써, 배드 블록 스킵 방식과 배드 블록 교체 테이블 방식의 장점을 모두 수용할 수 있게 된다.
또한, 본 발명에 따르면 플래시 메모리 상에서 읽기-쓰기 접근이 모두 허용되는 영역에 대해서도 배드 블록 스킵 방식으로 초기 데이터를 기록할 수 있다. 그 결과 특정 배드 블록 교체 테이블 방식을 지원하기 위하여 갱 라이터 장비를 설정할 필요가 없기 때문에 제품 양산 과정에서 소요되는 기간과 비용을 줄일 수 있다.
도 1은 종래의 방식에 따라 낸드 플래시 메모리에 초기 데이터를 기록하는 방법들을 설명하기 위하여 도시한 것으로서, (a)는 배드 블록 스킵 방식을 설명하기 위한 것이며, (b)는 배드 블록 교체 테이블 방식을 설명하기 위한 것이다.
도 2는 본 발명의 바람직한 실시예에 따른 플래시 메모리의 초기 데이터 관리 방법을 순차적으로 도시한 흐름도이다.
도 3 은 본 발명의 바람직한 실시예에 따른 초기 데이터 관리 방법에 있어서, 배드 블록 교체 테이블을 생성하는 과정을 순차적으로 도시한 흐름도이다.
도 4는 본 발명의 바람직한 실시예에 따른 초기 데이터 관리 방법에 있어서, 배드 블록 교체 테이블 방식을 사용하여 배드 블록을 관리하는 단계를 순차적으로 도시한 흐름도이다.
도 5는 본 발명의 바람직한 실시예에 따른 초기 데이터 관리 방법에 있어서, 배드 블록 관리 모듈이 수행하는 블록 참조 처리 과정을 순차적으로 도시한 흐름도이다.
도 6은 본 발명의 바람직한 실시예에 따른 초기 데이터 관리 방법에 있어서, 배드 블록 관리 모듈이 수행하는 런타임 배드 블록 처리 과정을 순차적으로 도시한 흐름도이다.
본 발명에 따른 플래시 메모리의 초기 데이터 관리 방법은 초기 데이터를 플래시 메모리에 기록하는 두 가지 방법의 장점만을 취하기 위한 것으로, 초기 데이터를 기록하는 방식은 배드 블록 스킵 방식을 따르되, 일단 초기 데이터가 기록된 다음부터는 배드 블록 교체 테이블 방식으로 배드 블록을 관리하여, 배드 블록 스킵 방식으로 데이터가 기록된 영역에 대해서도 읽기-쓰기가 모두 가능하도록 하는 것을 특징으로 한다. 본 발명에 따른 초기 데이터 관리 방법은 낸드(NAND) 플래시 메모리 및 노아(NOR) 플래시 메모리 모두 사용될 수 있으며, 특히 낸드 플래시 메모리에 더 적합하게 사용될 수 있다. 따라서, 본 명세서는 설명의 편의상 낸드 플래시 메모리에 적용된 초기 데이터 관리 방법을 설명하며, 이는 본 특허의 권리범위를 낸드 플래시 메모리로 한정하고자 하는 것은 아니다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 따른 플래시 메모리의 초기 데이터 관리 방법에 대하여 구체적으로 설명한다.
도 2는 본 발명의 바람직한 실시예에 따른 플래시 메모리의 초기 데이터 관리 방법을 순차적으로 도시한 흐름도이다. 도 2를 참조하면, 본 발명에 따른 플래시 메모리의 초기 데이터 관리 방법은 (a) 초기 데이터(default data)를 준비하는 단계(단계 100), (b) 초기 데이터를 낸드 플래시 메모리에 배드 블록 스킵(Bad Block Skip) 방식으로 기록하는 단계(단계 110), (c) 초기 데이터가 기록된 낸드 플래시 메모리를 제품에 장착하는 단계(단계 120), (d) 낸드 플래시 메모리가 장착된 제품의 최초 부팅시에 배드 블록 교체 테이블을 생성하는 단계(단계 130), (e) 배드 블록 교체 테이블을 이용하여 런타임(run-time) 배드 블록을 관리하는 단계(단계 140)을 구비한다. 이하, 전술한 각 단계들에 대하여 구체적으로 설명한다.
먼저, 초기 데이터를 준비하는 단계(단계 100)에 있어서, 상기 초기 데이터는 제품에 장착되는 낸드 플래시 메모리에 기본적으로 들어있게 되는 데이터이다. 제품 용도에 따라 초기 데이터의 구성은 달라지는데, 보통 부트로더 이미지, 운영체제 부팅 이미지, 파일시스템 기본 이미지 중에서 전부 또는 일부가 포함된다. 초기 데이터는 마스터 칩이라고 불리는 낸드 플래시 메모리 칩에 들어있는 형태로 제공되기도 하고 마스터 칩에서 추출된 형태인 마스터 이미지 파일 형태로 제공되기도 한다. 어떤 형태로 제공되든 그와 무관하게 본 발명은 공히 적용될 수 있다.
초기 데이터가 준비되면 이를 낸드 플래시 메모리에 기록한다(단계 110). 이 때, 도 1의 (a)에 도시한 것과 같은 배드 블록 스킵 방식을 사용하여 기록한다. 즉, 데이터를 낸드 플래시 메모리에 기록해 나가다가 그 과정에서 배드 블록을 만나면 이를 건너 뛰어 그 다음 블록에 계속 기록해 나간다. 상세하게는 두 가지 경우로 나누어 볼 수 있다. 한 가지 경우는 기록하려는 블록이 처음부터 배드 블록인 경우이다. 즉 낸드 플래시 메모리가 제조 공장에서 출하될 때 이미 배드 블록인 것으로, 이를 보통 '초기(initial) 배드 블록'이라 하며 해당 블록 내 스페어 영역(spare area)의 특정 바이트를 읽어 확인할 수 있다. 다른 한 가지 경우는, 원래 배드 블록은 아니었으나 데이터를 기록하기 위해 해당 블록을 소거하는 동작이 실패하거나 또는 해당 블록 내 어떤 페이지를 프로그램 하는 동작이 실패한 경우인데 이와 같이 새로 발생되는 배드 블록을 보통 '런타임 배드 블록'이라 한다. 런타임 배드 블록인 경우에는 해당 블록을 건너 뛰기 전에 해당 블록 내 스페어 영역에 배드 블록 표시를 하여 추후 해당 블록이 더 이상 접근되지 않도록 한다. 배드 블록 스킵 방식은 모든 갱 라이터 장비가 기본적으로 지원하는 방식이기 때문에, 추가의 설정 작업 없이 기존의 갱 라이터 장비를 사용하여 바로 데이터 기록 작업을 수행할 수 있다.
초기 데이터가 성공적으로 기록된 낸드 플래시 메모리는 제품에 장착된다(단계 120). 이후 제품 검수 단계에서 제품이 최초 부팅될 수도 있고 제품이 출하되어 소비자에게 전해진 뒤 소비자에 의해 최초 부팅될 수도 있는데, 배드 블록 교체 테이블은 이렇게 제품이 최초로 부팅될 때 자동적으로 생성된다(단계 130). 배드 블록 교체 테이블을 생성하는 절차에 대해서는 도 3에서 보다 더 상세하게 설명한다.
배드 블록 교체 테이블이 생성된 이후부터는, 초기 데이터가 배드 블록 스킵 방식으로 기록된 영역을 포함하여 모든 낸드 플래시 메모리 영역이 배드 블록 교체 테이블 방식으로 관리된다(단계 140). 상세하게는 런타임 배드 블록을 추가로 배드 블록 교체 테이블에 등록하는 것, 기존의 등록된 배드 블록에 대한 접근 요청이 있을 시 배드 블록 교체 테이블을 참조하여 대신 교체 블록으로 접근이 이루어지도록 하는 것 등이 포함된다. 본 발명에 따른 런타임 배드 블록 관리에 대해서는 도 4 에서 보다 더 자세하게 설명한다.
이하, 도 3을 참조하여, 본 발명의 바람직한 실시예에 따른 초기 데이터 관리 방법에 있어서, 초기 데이터가 기록된 낸드 플래시 메모리를 제품에 장착한 후, 제품을 최초로 부팅시켰을 때 배드 블록 교체 테이블을 자동적으로 생성하는 단계에 대하여 구체적으로 설명한다.
도 3 은 본 발명의 바람직한 실시예에 따른 초기 데이터 관리 방법에 있어서, 배드 블록 교체 테이블을 생성하는 과정을 순차적으로 도시한 흐름도이다. 도 3을 참조하면, 먼저 배드 블록 처리를 위한 예비 영역을 설정하게 되는데(단계 200), 대부분의 경우 낸드 플래시 메모리의 제일 뒷 부분에 예비 영역을 설정하게 된다. 이 예비 영역에는 배드 블록 교체 테이블 생성 단계에서 발견되는 초기 배드 블록이나 나중에 추가적으로 발생하는 런타임 배드 블록 대신 사용하기 위한 교체 블록들이 들어 있으며, 배드 블록 교체 테이블을 저정하기 위한 블록도 들어 있다. 예비 영역의 크기는 일반적으로 사용하는 낸드 플래시 메모리에 대한 데이터 시트(datasheet) 상에 기술되어 있는, 최대로 발생 가능한 배드 블록의 개수에 배드 블록 교체 테이블을 저정하기 위한 블록들의 개수를 합한 크기로 결정된다.
예비 영역의 크기가 결정되면, 배드 블록 교체 테이블을 초기화해야 하는데 이는 전체 낸드 플래시 메모리 블록들을 조사하여 그 중에서 초기 배드 블록을 찾아낸다(단계 210). 초기 배드 블록이 발견되면 해당 블록 번호를 배드 블록 교체 테이블에 등록하며, 이때 교체 블록 번호는 따로 지정하지 아니한다(단계 220). 도 1의 (b) 에서 보았듯이 종래의 일반적인 배드 블록 교체 테이블 방식에서는 초기 배드 블록을 등록할 때 예비 영역 내에서 아직 사용되지 않은 블록을 찾아 교체 블록으로 지정하고 이 교체 블록 번호도 같이 등록하지만, 본 발명에 따른 방식에서는 초기 배드 블록 번호만 등록할 뿐 교체 블록 번호는 따로 지정하지 않는다. 이는 본 발명에 따르면 초기 배드 블록에 대한 교체 블록은 예비 영역 내에 존재하지 않고 배드 블록의 그 다음 블록이 대신 사용되기 때문이다. 이렇게 함으로써 초기 데이터가 배드 블록 스킵 방식으로 기록된 영역에 대해서도 배드 블록 교체 테이블 방식이 올바르게 동작할 수 있게 된다.
낸드 플래시 메모리 전체 블록에 대하여 초기 배드 블록 여부를 조사하고 그 결과 발견된 초기 배드 블록을 배드 블록 교체 테이블에 등록하는 작업이 끝나면, 배드 블록 교체 테이블을 낸드 플래시 메모리에 저장한다(단계 230). 배드 블록 교체 테이블을 낸드 플래시 메모리에 저장함으로써 재부팅 이후에도 동일한 배드 블록 교체 테이블을 참조할 수 있도록 한다.
이하, 도 4를 참조하여, 본 발명의 바람직한 실시예에 따른 초기 데이터 관리 방법에 있어서, 배드 블록 교체 테이블이 생성된 이후, 배드 블록 교체 테이블 방식을 사용하여 배드 블록을 관리하는 단계에 대하여 구체적으로 설명한다.
도 4는 본 발명의 바람직한 실시예에 따른 초기 데이터 관리 방법에 있어서, 배드 블록 교체 테이블 방식을 사용하여 배드 블록을 관리하는 단계를 순차적으로 도시한 흐름도이다. 도 4를 참조하면, 배드 블록 교체 테이블 방식에서는 제품이 처음 부팅되었을 때 ‘배드 블록 스킵 카운트(bad block skip count)’를 계산한다(단계 300). ‘배드 블록 스킵 카운트’는 주메모리(RAM) 상에 잡히는 자료구조로서 낸드 플래시 메모리의 블록 개수만큼 변수가 존재하는 배열 구조이다. 이 배열 변수는 배열의 인덱스로 주어지는 블록 번호에 대해 0번 블록부터 해당 블록까지 존재하는 초기 배드 블록의 개수를 알려 준다. 예를 들어 도 1 의 경우, 블록 3 이 초기 배드 블록이고 블록 0, 1, 2 는 아니므로, 인덱스 0, 1, 2 에 대한 ‘배드 블록 스킵 카운트’변수 값은 모두 0 이고 인덱스 3 및 4 에 대한 해당 변수 값은 모두 1 이다. 만약 블록 5 가 초기 배드 블록이었다면, 인덱스 5 에 대한 ‘배드 블록 스킵 카운트’값은 2 가 된다. ‘배드 블록 스킵 카운트’값은 배드 블록 스킵 방식으로 기록된 데이터의 위치를 찾아갈 때 몇 번 블록을 찾으면 되는지를 알려 준다. 위 예에서 인덱스 5 에 대한 ‘배드 블록 스킵 카운트’ 값이 2 이므로, 블록 번호 5 에 이 값을 더하여 7번 블록에서 원래 5번 블록에 저장되었어야 할 데이터를 찾을 수 있다. 이와 같은 방법으로 전체 플래시 메모리 블록들에 대하여 ‘배드 블록 스킵 카운트’ 값을 계산해 둔다. 이 과정에서 초기 배드 블록들에 블록 번호가 필요한데 이 정보는 도 3 에서 도시한 배드 블록 교체 테이블 생성 단계에서 생성된 배드 블록 교체 테이블로부터 읽어 온다.
다음, 상기 계산된 배드 블록 스킵 카운트를 이용하여 배드 블록 관리 모듈을 무한 반복하여 구동한다(단계 310). 상기 배드 블록 관리 모듈은 크게 두 가지 기능을 수행하게 되는데, 하나는 어떤 블록에 대한 참조를 처리해 주는 것이고(단계 320), 다른 하나는 새롭게 발생한 런타임 배드 블록을 처리하는 것이다(단계 330). 각 기능에 대한 처리가 끝나면 다시 같은 방식으로 배드 블록에 대한 처리를 무한히 반복한다.
이하, 도 5를 참조하여, 본 발명의 바람직한 실시예에 따른 초기 데이터 관리 방법에 있어서, 배드 블록 관리 모듈이 수행하는 블록 참조 처리 과정에 대하여 구체적으로 설명한다.
도 5는 본 발명의 바람직한 실시예에 따른 초기 데이터 관리 방법에 있어서, 배드 블록 관리 모듈이 수행하는 블록 참조 처리 과정을 순차적으로 도시한 흐름도이다. 도 5를 참조하면, 임의의 블록 n 에 대한 참조 처리를 위하여, 먼저 해당 블록 번호(n)에 상기 '배드 블록 스킵 카운트’를 더하여 해당 블록에 저장되었어야 할 데이터가 실제로는 어느 블록(n′)에 위치하는지 계산한다(단계 500). 그렇게 계산된 블록 번호를 n′이라 할 때, 그 다음 순서로 하는 일은 배드 블록 교체 테이블을 탐색하여 이 블록이 런타임 배드 블록으로 등록되어 있는지를 확인하는 것이다(단계 510). 만약 등록되어 있지 않다면 이는 곧 해당 블록이 배드 블록이 아니란 의미이므로 결국 블록 n 에 대한 참조는 블록 n′이 참조되도록 한다(단계 520). 만약 해당 블록이 런타임 배드 블록으로 등록되어 있다면 도 1의 (b)와 같은 구조를 갖는 배드 블록 교체 테이블을 탐색하여 블록 n 에 대한 교체 블록을 찾고, 블록 n 에 대한 참조는 상기 블록 n 에 대한 교체 블록이 참조되도록 한 후(단계 530), 참조 처리 과정을 종료한다.
이하, 도 6을 참조하여, 본 발명의 바람직한 실시예에 따른 초기 데이터 관리 방법에 있어서, 배드 블록 관리 모듈이 수행하는 런타임 배드 블록 처리 과정에 대하여 구체적으로 설명한다.
도 6은 본 발명의 바람직한 실시예에 따른 초기 데이터 관리 방법에 있어서, 배드 블록 관리 모듈이 수행하는 런타임 배드 블록 처리 과정을 순차적으로 도시한 흐름도이다. 도 6을 참조하면, 임의의 블록 m′이 런타임 배드 블록이 된 경우, 먼저 배드 블록 교체 테이블을 탐색하여 예비 영역 내에서 사용되지 않고 있는 블록들 중에서 하나를 선택하여 교체 블록(r)으로 지정한다(단계 600). 이 교체 블록을 r 이라 하면 (m′, r) 과 같은 배드 블록 교체 정보를 배드 블록 교체 테이블에 저장한 후(단계 610), 런타임 배드 블록 처리 과정을 종료한다.
이상에서 본 발명에 대하여 그 바람직한 실시예를 중심으로 설명하였으나, 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 발명의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러가지의 변형과 응용이 가능함을 알 수 있을 것이다. 그리고, 이러한 변형과 응용에 관계된 차이점들은 첨부된 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.
본 발명에 따른 초기 데이터 관리 방법은 낸드 플래시 메모리를 이용한 제품들에 널리 사용될 수 있다.
10, 12 : 초기 데이터
11, 13 : 낸드 플래시 메모리
14 : 배드 블록 교체 테이블

Claims (6)

  1. (a) 초기 데이터가 기록된 플래시 메모리가 장착된 제품이 최초 부팅될 때, 플래시 메모리의 전체 영역을 스캔하여 배드 블록 교체 테이블을 생성하는 단계;
    (b) 상기 배드 블록 교체 테이블을 이용하여 런타임(run-time) 배드 블록을 관리하는 단계;
    를 구비하고, 상기 (b) 단계는,
    (b1) 배드 블록 스킵 카운트를 계산하는 단계; 및
    (b2) 상기 배드 블록 스킵 카운트를 이용하여 배드 블록을 관리하는 단계;
    를 구비하며, 상기 (b2) 단계는 임의의 블록에 대한 참조 처리 단계와 런타임 배드 블록의 처리 단계를 수행하는 것을 특징으로 하며,
    상기 초기 데이터는 배드 블록 스킵 방식으로 플래시 메모리에 기록된 것을 특징으로 하는 플래시 메모리의 초기 데이터 관리 방법.
  2. 제1항에 있어서, 상기 (a) 단계는,
    (a1) 배드 블록을 처리하기 위한 예비 영역을 설정하는 단계;
    (a2) 플래시 메모리의 전체 영역을 스캔하여 초기 배드 블록 여부를 확인하는 단계;
    (a3) 초기 배드 블록이 발견되면 해당 블록의 번호를 배드 블록 교체 테이블에 등록하는 단계; 및
    (a4) 배드 블록 교체 테이블을 낸드 플래시 메모리에 저장하는 단계;
    를 구비하는 것을 특징으로 하는 플래시 메모리의 초기 데이터 관리 방법.
  3. 제2항에 있어서, 상기 (a3) 단계는 초기 배드 블록이 발견되면 해당 블록의 번호를 배드 블록 교체 테이블에 등록하되 교체 블록은 등록하지 않는 것을 특징으로 하는 플래시 메모리의 초기 데이터 관리 방법.
  4. 삭제
  5. 제1항에 있어서, 상기 임의의 블록(n)에 대한 참조 처리 단계는,
    블록 번호(n)와 배드 블록 스킵 카운트를 이용하여 해당 블록에 저장되었어야 할 데이터가 실제로 저장된 블록(n')을 계산하는 단계;
    배드 블록 교체 테이블을 탐색하여 상기 실제 저장된 블록(n')이 런타임 배드 블록으로 등록되어 있는지 여부를 확인하는 단계;
    만약 상기 실제 저장된 블록(n')이 런타임 배드 블록으로 등록되어 있지 아니하면, 블록 n'이 참조되도록 하는 단계; 및
    만약 상기 실제 저장된 블록(n')이 런타임 배드 블록으로 등록되어 있으면, 배드 블록 교체 테이블을 탐색하여 블록(n)에 대한 교체 블록을 찾고 해당 교체 블록이 참조되도록 하는 단계;
    를 구비하는 것을 특징으로 하는 플래시 메모리의 초기 데이터 관리 방법.
  6. 제1항에 있어서, 상기 런타임 배드 블록의 처리 단계는,
    런타임 배드 블록을 확인하는 단계;
    배드 블록 교체 테이블을 탐색하여 사용되지 않고 있는 블록들 중 하나를 선택하여 교체 블록으로 지정하는 단계;
    상기 교체 블록과 상기 런타임 배드 블록에 대한 정보를 배드 블록 교체 테이블에 저장하는 단계;
    를 구비하는 것을 특징으로 하는 플래시 메모리의 초기 데이터 관리 방법.

KR1020130005945A 2013-01-18 2013-01-18 플래시 메모리의 초기 데이터 관리 방법 KR101449614B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130005945A KR101449614B1 (ko) 2013-01-18 2013-01-18 플래시 메모리의 초기 데이터 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130005945A KR101449614B1 (ko) 2013-01-18 2013-01-18 플래시 메모리의 초기 데이터 관리 방법

Publications (2)

Publication Number Publication Date
KR20140093487A KR20140093487A (ko) 2014-07-28
KR101449614B1 true KR101449614B1 (ko) 2014-10-13

Family

ID=51739670

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130005945A KR101449614B1 (ko) 2013-01-18 2013-01-18 플래시 메모리의 초기 데이터 관리 방법

Country Status (1)

Country Link
KR (1) KR101449614B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11467903B2 (en) 2020-11-19 2022-10-11 SK Hynix Inc. Memory system and operating method thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11467903B2 (en) 2020-11-19 2022-10-11 SK Hynix Inc. Memory system and operating method thereof

Also Published As

Publication number Publication date
KR20140093487A (ko) 2014-07-28

Similar Documents

Publication Publication Date Title
JP6198939B2 (ja) ドライバをロードする方法及び組み込みデバイス
CN106708587B (zh) 一种参数配置方法及系统
US10475516B2 (en) Data storage device and data erasing method wherein after erasing process, predetermined value is written to indicate completion of said erasing method
CN108614702B (zh) 字节码优化方法及装置
US9442840B2 (en) Virtual boundary codes in a data image of a read-write memory device
CN102163155A (zh) 存储设备的升级方法及升级控制装置
CN108170456B (zh) 电子设备的固件升级方法及装置
CN114780641A (zh) 多库多表同步方法、装置、计算机设备和存储介质
US20110004719A1 (en) Memory Element
US20100115004A1 (en) Backup system that stores boot data file of embedded system in different strorage sections and method thereof
CN111562882A (zh) 一种数据写入方法、智能终端及存储介质
CN105760382A (zh) 一种将execl数据导入数据库的方法及装置
KR101449614B1 (ko) 플래시 메모리의 초기 데이터 관리 방법
KR101826778B1 (ko) 플래쉬 라이프 사이클 및 성능 개선을 고려한 eeprom 에뮬레이션 구현 방법
CN111694580B (zh) 存储设备升级及初始化的方法、装置、电子设备
US20170052708A1 (en) Method for accessing flash memory and associated memory controller and electronic device
CN107908500B (zh) 一种坏块识别方法及装置
CN114661243A (zh) 一种适ssd的可见容量调整的方法、装置、设备及介质
CN104751881B (zh) 快闪存储器烧录方法
CN102629259A (zh) 嵌入式系统中只读文件系统建立方法,装置及嵌入式系统
US8503241B2 (en) Electronic apparatus and data reading method
CN110471801A (zh) 一种存储设备的量产过程信息的管理方法和装置以及设备
CN109669628B (zh) 基于flash设备的数据存储管理方法及装置
CN110471791A (zh) 一种对闪存的坏块信息的存储方法和装置以及设备
KR20170088966A (ko) 시스템 설계 지원 툴

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190403

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20191004

Year of fee payment: 6

R401 Registration of restoration