KR101083683B1 - 플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법 - Google Patents

플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법 Download PDF

Info

Publication number
KR101083683B1
KR101083683B1 KR1020110026959A KR20110026959A KR101083683B1 KR 101083683 B1 KR101083683 B1 KR 101083683B1 KR 1020110026959 A KR1020110026959 A KR 1020110026959A KR 20110026959 A KR20110026959 A KR 20110026959A KR 101083683 B1 KR101083683 B1 KR 101083683B1
Authority
KR
South Korea
Prior art keywords
block
map
reads
read operation
flash memory
Prior art date
Application number
KR1020110026959A
Other languages
English (en)
Other versions
KR20110048494A (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 KR1020110026959A priority Critical patent/KR101083683B1/ko
Publication of KR20110048494A publication Critical patent/KR20110048494A/ko
Application granted granted Critical
Publication of KR101083683B1 publication Critical patent/KR101083683B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • 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/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명에 의한 플래쉬 메모리 장치는 복수의 블럭을 포함하는 플래쉬 메모리 및 각 블럭에 대한 리드 횟수에 따라, 블럭의 교체 여부를 결정하는 리드동작 제어 회로를 포함한다.

Description

플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법{Flash Memory Apparatus and Read Operation Control Method Therefor}
본 발명은 반도체 메모리 장치에 관한 것으로, 보다 구체적으로는 플래쉬 메모리 장치 및 이를 위한 리드동작 제어 회로 및 방법에 관한 것이다.
일반적으로, 플래쉬(flash) 메모리는 복수의 블럭으로 이루어지며, 각각의 블럭은 복수의 페이지로 구성된다. 아울러, 리드(read) 및 라이트(write) 동작은 페이지 단위로 수행되며, 소거(erase) 동작은 블럭 단위로 이루어진다.
또한, 플래쉬 메모리는 데이터를 기록하기 전에 해당 페이지가 소거되어 있어야 하므로, 어플리케이션에서 발생된 데이터 주소를 이용하여 곧바로 플래쉬 메모리에 데이터를 기록하는 경우 심각한 성능 저하를 일으킬 수 있다.
도 1은 일반적인 플래쉬 메모리 장치의 구성도이다.
도시한 것과 같이, 플래쉬 메모리 장치는 플래쉬 메모리(10), 지정된 데이터 연산을 요청하는 사용자 프로그램으로서의 어플리케이션(12), 어플리케이션(12)의 요청에 따라 플래쉬 메모리(10)에서 데이터 연산이 수행되도록 하는 제어부(14) 및 플래쉬 메모리(10)에 대한 물리적인 접근을 수행하는 드라이버(16)를 포함한다.
여기에서, 제어부(14)는 파일 시스템(142) 및 소프트웨어 추상화 레이어(Flash Translation Layer; FTL, 144)를 포함한다.
파일 시스템(142)은 사용자에게 보다 효율적인 저장 장치 환경을 제공하기 위하여 파일 및 디렉토리 관리 등의 기능을 수행한다.
FTL(144)은 플래쉬 메모리(10)를 가상의 블럭 디바이스처럼 사용할 수 있도록 하며, 이를 위하여 주소 매핑 기능을 수행한다. 즉, 어플리케이션(12)에서 전달하는 논리 주소를 플래쉬 메모리(10)에서 사용하는 물리 주소로 변경하는 것이다.
이에 더하여, FTL(144)은 웨어-레벨링(Wear-leveling) 기능을 수행한다. 플래쉬 메모리(10)는 데이터를 오버-라이트(over-write)할 수 없으므로, 라이트 동작을 수행하기 전 이전 데이터를 소거해야 하는데, 지정된 횟수 이상 소거 동작이 이루어지면, 해당 블럭은 더 이상 사용할 수 없게 되는 문제가 있다. 따라서, 각 블럭마다 소거 동작이 균등하게 이루어져야 플래쉬 메모리의 수명을 최대한 연장할 수 있으며, 이를 가능하게 하는 것이 웨어-레벨링이다. FTL(144)은 각 블럭에 대한 소거 횟수를 관리하여, 소거 동작이 많이 일어난 블럭에 저장된 데이터를 그렇지 않은 동작으로 대체(replacement)하여 플래쉬 메모리가 디스크로서의 역할을 충분히 수행할 수 있도록 한다.
한편, 플래쉬 메모리는 MP3 플레이어, 휴대용 게임기, 이동통신 단말기 등 소형 전자기기에 주로 사용된다.
이러한 휴대용 소형 전자기기는 메모리에 데이터를 기록하는 동작보다는 기록된 데이터를 반복적으로 리드하는 특성이 있다. 그런데, 리드동작이 반복적으로 일어날 경우 누설 전류가 발생하고, 이에 따른 핫 캐리어(hot carrier)가 액세스하지 않은 인접 셀에 영향을 주게 된다.
즉, 플래쉬 메모리에서는 라이트 동작시에는 소정 레벨 이상의 전압을 인가하게 되는데, 특정 페이지에 대한 반복적 리드동작으로 발생하는 핫 캐리어(hot carrier)에 의해 인접 셀의 전압이 소정 레벨까지 상승하면, 해당 인접 셀에 데이터를 라이트한 것과 같은 결과를 가져오게 된다.
이에 따라, 플래쉬 메모리에 저장된 데이터가 원치 않는 값으로 변경될 수 있고, 추후 리드 동작시 잘못된 데이터가 독출되는 문제가 있다.
본 발명은 상술한 문제점을 해결하기 위하여 안출된 것으로서, 반복되는 리드동작으로 인한 인접 셀의 영향을 최소화할 수 있는 플래쉬 메모리 장치 및 이를 위한 리드동작 제어 방법을 제공하는 데 그 기술적 과제가 있다.
본 발명의 다른 기술적 과제는 리드동작이 반복되는 블럭을 여분의 블럭으로 대체하여 플래쉬 메모리 장치의 동작 신뢰성을 향상시키는 데 있다.
본 발명의 또 다른 기술적 과제는 리드동작을 위해 액세스되는 블럭에 대한 리드 횟수를 관리하여 자원을 효율적으로 이용할 수 있는 플래쉬 메모리 장치 및 이를 위한 리드동작 제어 방법을 제공하는 데 있다.
상술한 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 의한 플래쉬 메모리 장치는 복수의 블럭을 포함하는 플래쉬 메모리; 및 상기 각 블럭에 대한 리드 횟수에 따라, 상기 블럭의 교체 여부를 결정하는 리드동작 제어 회로;를 포함하고, 상기 리드동작 제어 회로는 상기 복수의 블럭 중 리드 동작을 위해 액세스되는 블럭만에 대한 리드 횟수를 블럭 어드레스와 매칭시켜 저장하는 카운터 맵을 생성 및 관리하는 맵 관리부를 포함하고, 상기 맵 관리부는 리드 동작을 위해 액세스된 블럭의 리드 횟수에 따라 상기 블럭 어드레스를 정렬한다.
한편, 본 발명의 일 실시예에 의한 플래쉬 메모리 장치의 리드동작 제어 방법은 복수의 블럭을 포함하는 플래쉬 메모리 장치의 리드 동작 제어 방법으로서, 카운터 맵을 생성하는 단계; 리드 명령이 입력됨에 따라, 리드동작이 수행되는 블럭의 리드 횟수를 카운트하는 단계; 상기 리드동작이 수행되는 블럭만에 대한 리드 횟수를 블럭 어드레스와 매칭시켜 상기 카운터 맵에 저장하는 단계; 상기 리드 횟수와 기 설정된 최대 반복 리드 횟수를 비교하는 단계; 상기 리드 횟수가 상기 최대 반복 리드 횟수를 초과하는 경우 블럭을 교체하는 단계; 및 상기 리드동작이 수행되는 블럭의 리드 횟수에 따라 상기 카운터 맵의 상기 블럭 어드레스를 정렬하는 단계;를 포함한다.
본 발명에 의하면, 특정 블럭에 대한 리드동작이 반복 수행되는 경우 해당 블럭에 기록된 데이터를 타 블럭으로 이동시킴으로써 인접 셀의 데이터가 변경되는 것을 방지할 수 있고, 이에 따라 플래쉬 메모리 장치의 신뢰성을 향상시킬 수 있다.
또한, 데이터를 타 블럭으로 이동시킨 후에는 이전 데이터 블럭의 리드 횟수를 초기화함으로써 플래쉬 메모리 소자의 수명을 연장할 수 있다.
아울러, 모든 블럭에 대한 리드횟수를 관리하지 않고, 리드동작을 위해 액세스되는 블럭에 대한 리드 횟수만을 관리함으로써, 플래쉬 메모리 장치의 자원을 효율적으로 이용할 수 있고, 이로 인해 절약되는 공간을 데이터 저장에 사용할 수 있는 이점이 있다.
도 1은 일반적인 플래쉬 메모리 장치의 구성도,
도 2는 본 발명의 일 실시예에 의한 플래쉬 메모리 장치의 구성도,
도 3은 도 2에 도시한 리드동작 제어 회로의 상세 구성도,
도 4는 도 3에 도시한 맵 관리부의 상세 구성도,
도 5는 본 발명의 일 실시예에 의한 리드동작 제어 방법을 설명하기 위한 흐름도,
도 6은 도 5에 도시한 블럭 교체 과정의 상세 흐름도,
도 7은 도 5에 도시한 맵 저장 과정의 상세 흐름도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 보다 구체적으로 설명한다.
도 2는 본 발명의 일 실시예에 의한 플래쉬 메모리 장치의 구성도이다.
도시한 것과 같이, 본 발명에 의한 플래쉬 메모리 장치는 복수의 데이터 블럭을 포함하는 플래쉬 메모리(10), 지정된 데이터 연산을 요청하는 사용자 프로그램으로서의 어플리케이션(12), 어플리케이션(12)의 요청에 따라 플래쉬 메모리(10)에서 데이터 연산이 수행되도록 하는 제어부(14), 플래쉬 메모리(10)에 대한 물리적인 접근을 수행하는 드라이버(16) 및 데이터 블럭에 대한 리드 횟수에 따라 블럭의 교체 여부를 결정하여 교체가 필요한 경우 제어부(14)로 블럭 교체를 요청하는 리드동작 제어 회로(20)를 포함한다.
보다 구체적으로, 리드동작 제어 회로(20)는 데이터 블럭에 대한 최대 반복 리드 회수(Nrd_max)를 결정해 두고, 특정 데이터 블럭에 대한 리드 횟수(Nrd)가 최대 반복 리드 횟수(Nrd_max)를 초과하는 경우, 해당 데이터 블럭을 다른 데이터 블럭으로 교체한다.
이를 위하여, 리드 횟수를 관리하는 카운터 맵을 생성하고, 플래쉬 메모리(10)의 일부 영역을 할당하여 카운터 맵을 저장한다.
플래쉬 메모리(10)를 사용하기 위한 동작이 개시되는 경우, 플래쉬 메모리(10)에 저장된 카운터 맵은 캐쉬 메모리로 로딩되고, 특정 블럭에 대한 리드동작이 반복되는 경우 해당 블럭의 어드레스와 매칭되도록 카운터 맵에 리드 횟수를 저장한다.
이 때, 리드동작 제어 회로(20)는 리드동작을 위해 액세스되는 블럭에 대한 리드 횟수만을 카운터 맵에 저장하여, 이에 따라 자원 절약 효율을 높일 수 있다.
도 3은 도 2에 도시한 리드동작 제어 회로의 상세 구성도이다.
도시한 것과 같이, 리드동작 제어 회로(20)는 맵 관리부(210), 카운터(220), 비교부(230) 및 초기화부(240)를 포함한다.
먼저, 맵 관리부(210)는 리드동작을 위해 액세스되는 데이터 블럭에 대한 리드 횟수를 저장하기 위하여, 플래쉬 메모리(10)데 저장 영역을 할당하고, 카운터 맵을 초기화시킨다. 플래쉬 메모리 장치가 동작을 개시함에 따라, 플래쉬 메모리(10)에 저장되어 있는 카운터 맵은 캐쉬 메모리로 로딩되고, 캐쉬 메모리에 로딩된 카운터 맵의 데이터는 지정된 주기로 플래쉬 메모리(10)에 저장된다.
도 4는 도 3에 도시한 맵 관리부의 상세 구성도이다.
본 발명의 일 실시예에서, 맵 관리부(210)는 메모리 할당 모듈(212), 맵 초기화 모듈(214) 및 맵 저장 모듈(216)을 포함하고, 플래그 관리 모듈(218)을 추가로 더 포함할 수 있다.
메모리 할당 모듈(212)은 카운터 맵을 저장하기 위하여 플래쉬 메모리(10)의 특정 영역을 할당하고, 맵 초기화 모듈(214)은 플래쉬 메모리 장치의 동작 초기에 카운터 맵을 초기화한다.
한편, 맵 저장 모듈(216)은 플래쉬 메모리 장치가 동작을 개시하여 캐쉬 메모리에 상주된 카운터 맵이 갱신된 후, 지정된 주기로 플래쉬 메모리(10)에 저장될 때, 이전 데이터의 소거 및 라이트 동작을 통해 카운터 맵을 기 할당된 영역에 저장한다. 이때, 맵 저장 모듈(216)은 리드 횟수(Nrd)가 많은 순으로 데이터 블럭의 어드레스를 정렬하는 것이 바람직하다. MP3 플레이어, 휴대용 게임기, 이동통신 단말기 등과 같은 소형 전자기기는 메모리에 데이터를 기록하는 동작보다는 기록된 데이터를 반복적으로 리드하는 특성이 있다. 따라서, 반복적으로 리드 횟수(Nrd)가 많은 순으로 데이터 블럭의 어드레스를 정렬하게 되면 카운터 맵의 관리 효율을 향상시킬 수 있다.
플래그 관리 모듈(218)은 카운터 맵이 저장된 데이터 블럭의 교체 필요 여부를 플래그로서 관리한다. 맵 저장 모듈(216)이 플래쉬 메모리(10)에 카운터 맵을 저장하기 위해서는 이전 데이터를 소거하는 과정이 필수적으로 수반되는데, 플래쉬 메모리(10)는 지정될 횟수 이상 소거 동작이 이루어진 데이터 블럭은 더 이상 사용할 수 없는 특성이 있다.
따라서, 소거 동작 반복으로 인해 해당 데이터 블럭이 무용화되는 것을 방지하기 위해, FTL(144)의 웨어-레벨링 기능을 이용한다. 즉, 초기에 플래그를 기 설정된 값(예를 들어, 0)으로 설정해 두고, 카운터 맵 저장시마다 소거 횟수(Ner) 누산한다. 그리고, 누산된 소거 횟수가 기 설정된 최대 소거 횟수(Ner_max)를 초과하는 경우 플래그를 예를 들어, 1로 변경하여, 다음 소거 동작시 블럭 교체가 이루어질 수 있도록 한다. 여기에서, 최대 소거 횟수(Ner_max)는 해당 데이터 블럭이 무용화되지 않도록 하는 횟수로 설정될 수 있다.
카운터 맵은 메모리 낭비를 방지하기 위해, 리드동작을 위해 액세스되는 데이터 블럭에 대한 리드 횟수만을 관리할 수 있다.
다시, 도 3을 참조하여 본 발명의 일 실시예에 의한 리드동작 제어 회로(20)의 구성을 설명한다.
카운터(220)는 리드 명령이 입력됨에 따라, 데이터 블럭의 리드 횟수를 카운트하여 카운터 맵(210)에 저장한다.
비교부(230)는 카운터(220)에서 카운트한 리드 횟수(Nrd)가 기 설정된 최대 반복 리드 횟수(Nrd_max)를 초과하는지 확인하여, 초과하는 경우 제어부(14)로 블럭 교체를 요청한다. 여기에서, 최대 반복 리드 횟수(Ner_max)는 플래쉬 메모리(10)에 대한 리드 테스트 과정을 거쳐 인접 셀에 영향을 주지 않는 횟수로서 설정될 수 있다.
초기화부(240)는 특정 블럭에 대한 리드 횟수(Nrd)가 최대 반복 리드 횟수(Nrd_max)를 초과하여 블럭 교체가 이루어진 경우, 블럭 교체 전 데이터가 저장되어 있던 데이터 블럭에 대한 리드 횟수(Nrd)를 리셋한다.
이와 같이, 본 발명에서는 최대 반복 리드 횟수(Nrd_max)를 기 결정해 두고, 특정 데이터 블럭에 대한 리드 횟수(Nrd)가 최대 반복 리드 횟수(Nrd_max)를 만족하는 경우, 해당 데이터 블럭에 대해서 더 이상 반복 리드동작이 이루어지지 않도록 한다.
따라서, 반복되는 리드동작으로 인해 발생되는 핫 캐리어에 의해 인접 셀의 데이터가 변경되는 것을 방지할 수 있다.
도 5는 본 발명의 일 실시예에 의한 리드동작 제어 방법을 설명하기 위한 흐름도이다.
특정 데이터 블럭에 대한 리드 횟수를 카운트하기 위하여, 먼저 맵 관리부(210)는 플래쉬 메모리(10)의 특정 영역을 카운터 맵 저장 영역으로 할당하고, 카운터 맵을 생성 및 초기화한다(S101).
이와 같이 카운터 맵이 초기화된 후, 플래쉬 메모리 장치가 동작을 개시하면 플래쉬 메모리(10)는 제어부(14)로부터의 명령이 입력될 때까지 대기상태를 갖는다(S103).
그리고, 리드 명령이 입력됨에 따라(S105), 카운터(220)는 리드 명령에 포함된 어드레스를 참조하여, 해당 데이터 블럭의 리드 횟수(Nrd)를 카운트하고, 카운트 횟수를 카운터 맵에 저장한다(S107). 여기에서, 리드 명령을 수행할 데이터 블럭의 어드레스는 논리 주소 또는 FTL(144)에 의해 변환된 물리 주소가 될 수 있다.
다음, 비교부(230)는 기 설정된 최대 반복 리드 횟수(Nrd_max)와 단계 S107에서 카운트한 리드 횟수(Nrd)를 비교한다(S109).
단계 S109의 비교 결과, 리드 횟수(Nrd)가 최대 반복 리드 횟수(Nrd_max)를 초과하는 경우, 비교부(230)는 제어부(14)의 FTL(144)로 블럭 교체를 요구한다(S111).
FTL(144)에 의해 블럭 교체가 이루어진 후, 초기화부(240)는 카운터 맵에 접근하여 블럭 교체 전 리드동작이 반복 수행된 데이터 블럭에 대한 리드 횟수(Nrd)를 리셋하고(S113), 맵 관리부(210)는 갱신된 카운터 맵을 저장한다(S115).
도 6은 도 5에 도시한 블럭 교체 과정의 상세 흐름도이다.
플래쉬 메모리 장치의 FTL(144)은 웨어-레벨링 기능을 수행하며, 그 중 하나로 블럭 교체를 들 수 있다.
본 발명에서는 리드동작 제어 회로(20)의 요청에 따라, 기 설정된 최대 반복 리드 횟수(Nrd)max)만큼 리드동작이 이루어진 데이터 블럭에 대해 블럭 교체가 이루어지며, 보다 구체적으로 설명하면 다음과 같다.
먼저, FTL(144)은 데이터를 복사할 프리 블럭이 존재하는지 확인한다(S201).
일반적으로, 플래쉬 메모리(10)는 맵 영역, 로그 영역, 데이터 영역 및 여유 영역으로 구분된다. 맵 영역은 주소 매핑 테이블이 저장되는 부분이며, 로그 영역은 데이터 영역에 우선하여 데이터의 리드/라이트가 이루어지는 부분이다. 데이터 영역은 로그 영역에 더 이상 프리 블럭이 존재하지 않는 경우, 로그 영역에 저장된 데이터가 옮겨져 저장된다.
따라서, FTL(144)은 로그 영역에 존재하는 프리 블럭을 검색하고, 검색된 로그 영역의 프리 블럭에 리드 횟수(Nrd)가 최대 반복 리드 횟수(Nrd_max)를 초과한 데이터 블럭의 데이터를 저장한다(S203).
이를 통해 데이터 저장 영역이 변경되었으므로, FTL(144)은 주소 매핑 테이블에 접근하여 어드레스를 변경하고(S205), 리드 횟수(Nrd)가 최대 반복 리드 횟수(Nrd_max)를 초과한 데이터 블럭에 대한 소거 동작을 수행한다(S207).
FTL(144)에 의한 블럭 교체 과정 즉, 데이터 이동, 어드레스 변경 및 소거 과정은 플래쉬 메모리를 이용하는 시스템에서 통상적으로 수행되는 절차이며, 상기한 설명에 한정되지 않는다. 즉, 플래쉬 메모리 장치의 다양한 블럭 교체 과정을 통해 수행되는 것으로 이해 되어야 한다.
한편, 본 발명에서, 리드 횟수(Nrd) 카운트 결과가 저장되는 카운터 맵은 지정된 주기로 플래쉬 메모리(10)에 저장된다. 카운터 맵을 기 플래쉬 메모리(10)의 할당된 블럭에 저장할 때에는 리드 횟수(Nrd)가 많은 순으로 데이터 블럭의 어드레스를 정렬하는 것이 바람직하며, 이를 통해 카운터 맵의 관리 효율을 향상시킬 수 있다.
플래쉬 메모리(10)에 데이터를 저장하기 위해서는 이전 데이터를 소거하는 과정이 선행되어야 하며, 소거 횟수(Ner)가 지정된 횟수를 초과하면 해당 블럭을 사용할 수 없게 된다.
따라서, 카운터 맵이 저장되는 데이터 블럭에 대한 누적 소거 횟수(Ner)에 따라, 해당 데이터 블럭의 소거 횟수(Ner)가 기 설정된 최대 소거 횟수(Ner_max)를 초과하면 카운터 맵이 저장된 데이터 블럭을 타 데이터 블럭으로 교체할 수 있다.
도 7은 도 5에 도시한 맵 저장 과정의 상세 흐름도이다.
카운터 맵을 저장하기 위하여, 맵 관리부(210)는 누적 소거 횟수(Ner)에 따른 블럭 교체 필요 여부를 플래그로 관리한다.
따라서, 카운터 맵을 저장하기 전, 플래그 관리 모듈(218)은 플래그를 확인하여(S301), 카운터 맵이 저장될 데이터 블럭의 교체가 필요한지 확인한다(S303).
블럭 교체가 불필요한 경우, 맵 저장 모듈(216)에 의해 카운터 맵을 저장하고(S305), 이에 따른 소거 횟수(Ner)를 카운트한다(S307).
카운터(220)는 단계 S307에서 카운트한 소거 횟수(Ner)가 최대 소거 횟수(Ner_max)를 초과하는지 비교하여(S309), 초과하는 경우 플래그를 갱신하고(S311), 그렇지 않은 경우 이전 플래그를 유지한다(S313).
한편, 단계 S303의 판단 결과, 블럭 교체가 필요한 것으로 판단되는 경우, 예를 들어 도 6에 도시한 것과 같은 FTL의 블럭 교체 알고리즘에 의해 블럭 교체 과정이 수행된다(S315). 그리고, 블럭 교체가 수행됨에 따라, 해당 카운터 맵이 저장된 블럭에 대한 플래그가 갱신된다(S311).
이 때, FTL(144)은 웨어-레벨링 기능에 따라, 소거 횟수가 적은 프리 블럭을 선택하여 카운터 맵이 저장되는 블럭을 교체하는 것이 바람직하다.
카운터 맵을 저장하기 위한 블럭 교체 과정에서도, 먼저 로그 영역에 데이터를 저장하고, 이후 데이터 영역으로 카운터 맵을 이동시킬 수 있다.
그리고, 반복 리드동작으로 인한 블럭 교체시, 또는 카운터 맵이 저장된 데이터 블럭의 교체시 로그 영역에 대한 블럭 병합(merge) 과정이 수반될 수 있으며, 이때에도 FTL(144)은 웨어-레벨링 기능에 따라 각 블럭에 대한 소거 횟수를 카운트함은 물론이다.
이와 같이, 본 발명이 속하는 기술분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
플래쉬 메모리 장치는 휴대형 전자기기에 적용되는 저장장치로, 휴대형 전자기기는 특정 데이터 블럭을 반복 리드하는 특성을 갖는다.
따라서, 반복되는 리드동작에 의한 핫 캐리어가 인접 셀을 프로그램시키는 결과를 야기할 수 있다.
본 발명은 인접 셀에 영향을 주지 않는 범위 내에서 리드동작이 반복되도록 하고, 이후에는 타 데이터 블럭으로 블럭 교체를 수행함으로써, 플래쉬 메모리 장치의 동작 신뢰성을 확보할 수 있다.
더욱이, 블럭의 리드 횟수를 관리하는 데 있어서, 리드동작을 위해 액세스되는 블럭에 대한 리드 횟수만을 관리한다. 따라서, 카운터 맵의 크기를 최적화할 수 있음은 물론, 한정된 플래쉬 메모리의 자원을 효율적으로 이용할 수 있고, 절약된 메모리 공간을 데이터 저장에 사용할 수 있는 이점이 있다.
10 : 플래쉬 메모리 12 : 어플리케이션
14 : 제어부 142 : 파일 시스템
144 : 소프트웨어 추상화 레이어(FTL)
16 : 드라이버 20 : 리드동작 제어 회로
210 : 맵 관리부 220 : 카운터
230 : 비교부 240 : 초기화부

Claims (12)

  1. 복수의 블럭을 포함하는 플래쉬 메모리; 및
    상기 각 블럭에 대한 리드 횟수에 따라, 상기 블럭의 교체 여부를 결정하는 리드동작 제어 회로;를 포함하고,
    상기 리드동작 제어 회로는 상기 복수의 블럭 중 리드 동작을 위해 액세스되는 블럭만에 대한 리드 횟수를 블럭 어드레스와 매칭시켜 저장하는 카운터 맵을 생성 및 관리하는 맵 관리부를 포함하고, 상기 맵 관리부는 리드 동작을 위해 액세스된 블럭의 리드 횟수에 따라 상기 블럭 어드레스를 정렬하는 것을 특징으로 하는 플래쉬 메모리 장치.
  2. 제 1 항에 있어서,
    상기 리드동작 제어 회로는, 리드명령에 따라 상기 블럭의 리드 횟수를 카운트하고 상기 블럭의 어드레스 및 카운트 결과를 상기 카운터 맵에 저장하는 카운터; 및
    상기 리드 횟수와 기 설정된 최대 반복 리드 횟수를 비교하여, 상기 블럭의 교체 여부를 결정하는 비교부;
    를 더 포함하는 플래쉬 메모리 장치.
  3. 제 2 항에 있어서,
    상기 리드동작 제어 회로의 요청에 따라, 블럭을 교체하는 소프트웨어 추상화 레이어를 더 포함하는 플래쉬 메모리 장치.
  4. 제 2 항에 있어서,
    상기 리드동작 제어 회로는, 블럭이 교체됨에 따라 상기 카운터 맵에 저장된 교체 전 블럭의 상기 리드 횟수를 리셋하는 초기화부를 더 포함하는 플래쉬 메모리 장치.
  5. 제 2 항에 있어서,
    상기 맵 관리부는, 상기 카운터 맵을 저장하기 위한 블럭을 할당하는 메모리 할당 모듈;
    상기 카운터 맵을 초기화하는 맵 초기화 모듈; 및
    상기 카운터 맵이 갱신됨에 따라 상기 할당된 블럭에 상기 카운터 맵을 저장하는 맵 저장 모듈;
    을 포함하는 플래쉬 메모리 장치.
  6. 제 5 항에 있어서,
    상기 맵 관리부는, 상기 카운터 맵이 저장된 블럭에 대한 교체 필요 여부를 플래그로 저장 및 갱신하는 플래그 관리 모듈을 더 포함하는 플래쉬 메모리 장치.
  7. 제 6 항에 있어서,
    상기 맵 저장 모듈은, 상기 플래그를 참조하여, 상기 카운터 맵을 상기 할당된 블럭 또는 교체된 블럭에 저장하는 플래쉬 메모리 장치.
  8. 복수의 블럭을 포함하는 플래쉬 메모리 장치의 리드 동작 제어 방법으로서,
    카운터 맵을 생성하는 단계;
    리드 명령이 입력됨에 따라, 리드동작이 수행되는 블럭의 리드 횟수를 카운트하는 단계;
    상기 리드동작이 수행되는 블럭만에 대한 리드 횟수를 블럭 어드레스와 매칭시켜 상기 카운터 맵에 저장하는 단계;
    상기 리드 횟수와 기 설정된 최대 반복 리드 횟수를 비교하는 단계;
    상기 리드 횟수가 상기 최대 반복 리드 횟수를 초과하는 경우 블럭을 교체하는 단계; 및
    상기 리드동작이 수행되는 블럭의 리드 횟수에 따라 상기 카운터 맵의 상기 블럭 어드레스를 정렬하는 단계;
    를 포함하는 플래쉬 메모리 장치의 리드 동작 제어 방법.
  9. 제 8 항에 있어서,
    상기 블럭을 교체한 후, 상기 블럭을 교체하기 전의 블럭에 대해 상기 카운터 맵에 저장된 리드 횟수를 리셋하는 단계를 더 포함하는 플래쉬 메모리 장치의 리드동작 제어 방법.
  10. 제 9 항에 있어서,
    상기 블럭을 교체하는 단계는, 상기 복수의 블럭 중 프리 블럭을 검색하는 단계;
    상기 검색된 프리 블럭에 상기 리드 횟수가 상기 최대 반복 리드 횟수를 초과한 블럭의 데이터를 저장하는 단계;
    상기 교체된 블럭의 어드레스에 따라 어드레스 정보를 변경하는 단계; 및
    상기 교체 전 상기 블럭에 저장된 데이터를 소거하는 단계;
    를 포함하는 플래쉬 메모리 장치의 리드동작 제어 방법.
  11. 제 10 항에 있어서,
    상기 블럭을 교체한 후, 상기 카운터 맵을 저장하는 단계를 더 포함하는 플래쉬 메모리 장치의 리드동작 제어 방법.
  12. 제 11 항에 있어서,
    상기 카운터 맵을 저장하는 단계는, 상기 카운터 맵이 저장되는 블럭에 대한 소거 횟수를 카운트하는 단계;
    상기 소거 횟수와 기 설정된 최대 소거 횟수를 비교하는 단계; 및
    상기 소거 횟수가 상기 기 설정된 최대 소거 횟수를 초과하는 경우 상기 카운터 맵을 저장하기 위한 블럭을 교체하는 단계;
    를 포함하는 플래쉬 메모리 장치의 리드동작 제어 방법.
KR1020110026959A 2011-03-25 2011-03-25 플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법 KR101083683B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110026959A KR101083683B1 (ko) 2011-03-25 2011-03-25 플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110026959A KR101083683B1 (ko) 2011-03-25 2011-03-25 플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020080136385A Division KR101033465B1 (ko) 2008-12-30 2008-12-30 플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법

Publications (2)

Publication Number Publication Date
KR20110048494A KR20110048494A (ko) 2011-05-11
KR101083683B1 true KR101083683B1 (ko) 2011-11-16

Family

ID=44239641

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110026959A KR101083683B1 (ko) 2011-03-25 2011-03-25 플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법

Country Status (1)

Country Link
KR (1) KR101083683B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140073712A (ko) * 2012-12-06 2014-06-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 이의 동작 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10860219B2 (en) 2018-10-05 2020-12-08 Micron Technology, Inc. Performing hybrid wear leveling operations based on a sub-total write counter
US11056192B2 (en) * 2018-12-21 2021-07-06 Micron Technology, Inc. Monotonic counters in memories

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080181018A1 (en) 2007-01-25 2008-07-31 Kabushiki Kaisha Toshiba Memory system and control method thereof

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080181018A1 (en) 2007-01-25 2008-07-31 Kabushiki Kaisha Toshiba Memory system and control method thereof

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140073712A (ko) * 2012-12-06 2014-06-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 이의 동작 방법
KR102022446B1 (ko) 2012-12-06 2019-09-19 에스케이하이닉스 주식회사 데이터 저장 장치 및 이의 동작 방법

Also Published As

Publication number Publication date
KR20110048494A (ko) 2011-05-11

Similar Documents

Publication Publication Date Title
US20220327050A1 (en) Storage system and information processing system for controlling nonvolatile memory
US20220083278A1 (en) Storage system, information processing system and method for controlling nonvolatile memory
US10372331B2 (en) Storage system, information processing system and method for controlling nonvolatile memory
US10353612B2 (en) Storage system, information processing system and method for controlling nonvolatile memory
US8909846B2 (en) Memory storage device and control method thereof
US7962687B2 (en) Flash memory allocation for improved performance and endurance
CN110781096B (zh) 用于通过预测需求时间来执行垃圾收集的设备和方法
US7191306B2 (en) Flash memory, and flash memory access method and apparatus
KR100823171B1 (ko) 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
KR101110901B1 (ko) 비-휘발성 저장 시스템의 소모 레벨링
US8174912B2 (en) Systems and methods for circular buffering control in a memory device
WO2012161659A1 (en) A memory storage device, and a related zone-based block management and mapping method
JP2006504221A (ja) 不揮発性記憶システムにおける最高頻度消去ブロックの追跡
CN106598504B (zh) 数据存储方法及装置
KR101033465B1 (ko) 플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법
US20150220433A1 (en) Method for managing flash memories having mixed memory types using a finely granulated allocation of logical memory addresses to physical memory addresses
Chang et al. How to enable software isolation and boost system performance with sub-block erase over 3D flash memory
KR101083683B1 (ko) 플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법
KR100982440B1 (ko) 단일 플래시 메모리의 데이터 관리시스템
TWI829363B (zh) 資料處理方法及對應之資料儲存裝置
TW202414217A (zh) 資料處理方法及對應之資料儲存裝置
JP2021140464A (ja) ストレージ装置、ストレージシステム及び方法
TW202414221A (zh) 資料處理方法及對應之資料儲存裝置
CN117806533A (zh) 数据处理方法及对应的数据储存装置

Legal Events

Date Code Title Description
A107 Divisional application of patent
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: 20141021

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151020

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161024

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171025

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181022

Year of fee payment: 8