KR101083683B1 - 플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법 - Google Patents
플래쉬 메모리 장치 및 및 이를 위한 리드동작 제어 방법 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details 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) 메모리는 복수의 블럭으로 이루어지며, 각각의 블럭은 복수의 페이지로 구성된다. 아울러, 리드(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는 본 발명의 일 실시예에 의한 플래쉬 메모리 장치의 구성도,
도 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 : 초기화부
14 : 제어부 142 : 파일 시스템
144 : 소프트웨어 추상화 레이어(FTL)
16 : 드라이버 20 : 리드동작 제어 회로
210 : 맵 관리부 220 : 카운터
230 : 비교부 240 : 초기화부
Claims (12)
- 복수의 블럭을 포함하는 플래쉬 메모리; 및
상기 각 블럭에 대한 리드 횟수에 따라, 상기 블럭의 교체 여부를 결정하는 리드동작 제어 회로;를 포함하고,
상기 리드동작 제어 회로는 상기 복수의 블럭 중 리드 동작을 위해 액세스되는 블럭만에 대한 리드 횟수를 블럭 어드레스와 매칭시켜 저장하는 카운터 맵을 생성 및 관리하는 맵 관리부를 포함하고, 상기 맵 관리부는 리드 동작을 위해 액세스된 블럭의 리드 횟수에 따라 상기 블럭 어드레스를 정렬하는 것을 특징으로 하는 플래쉬 메모리 장치. - 제 1 항에 있어서,
상기 리드동작 제어 회로는, 리드명령에 따라 상기 블럭의 리드 횟수를 카운트하고 상기 블럭의 어드레스 및 카운트 결과를 상기 카운터 맵에 저장하는 카운터; 및
상기 리드 횟수와 기 설정된 최대 반복 리드 횟수를 비교하여, 상기 블럭의 교체 여부를 결정하는 비교부;
를 더 포함하는 플래쉬 메모리 장치. - 제 2 항에 있어서,
상기 리드동작 제어 회로의 요청에 따라, 블럭을 교체하는 소프트웨어 추상화 레이어를 더 포함하는 플래쉬 메모리 장치. - 제 2 항에 있어서,
상기 리드동작 제어 회로는, 블럭이 교체됨에 따라 상기 카운터 맵에 저장된 교체 전 블럭의 상기 리드 횟수를 리셋하는 초기화부를 더 포함하는 플래쉬 메모리 장치. - 제 2 항에 있어서,
상기 맵 관리부는, 상기 카운터 맵을 저장하기 위한 블럭을 할당하는 메모리 할당 모듈;
상기 카운터 맵을 초기화하는 맵 초기화 모듈; 및
상기 카운터 맵이 갱신됨에 따라 상기 할당된 블럭에 상기 카운터 맵을 저장하는 맵 저장 모듈;
을 포함하는 플래쉬 메모리 장치. - 제 5 항에 있어서,
상기 맵 관리부는, 상기 카운터 맵이 저장된 블럭에 대한 교체 필요 여부를 플래그로 저장 및 갱신하는 플래그 관리 모듈을 더 포함하는 플래쉬 메모리 장치. - 제 6 항에 있어서,
상기 맵 저장 모듈은, 상기 플래그를 참조하여, 상기 카운터 맵을 상기 할당된 블럭 또는 교체된 블럭에 저장하는 플래쉬 메모리 장치. - 복수의 블럭을 포함하는 플래쉬 메모리 장치의 리드 동작 제어 방법으로서,
카운터 맵을 생성하는 단계;
리드 명령이 입력됨에 따라, 리드동작이 수행되는 블럭의 리드 횟수를 카운트하는 단계;
상기 리드동작이 수행되는 블럭만에 대한 리드 횟수를 블럭 어드레스와 매칭시켜 상기 카운터 맵에 저장하는 단계;
상기 리드 횟수와 기 설정된 최대 반복 리드 횟수를 비교하는 단계;
상기 리드 횟수가 상기 최대 반복 리드 횟수를 초과하는 경우 블럭을 교체하는 단계; 및
상기 리드동작이 수행되는 블럭의 리드 횟수에 따라 상기 카운터 맵의 상기 블럭 어드레스를 정렬하는 단계;
를 포함하는 플래쉬 메모리 장치의 리드 동작 제어 방법. - 제 8 항에 있어서,
상기 블럭을 교체한 후, 상기 블럭을 교체하기 전의 블럭에 대해 상기 카운터 맵에 저장된 리드 횟수를 리셋하는 단계를 더 포함하는 플래쉬 메모리 장치의 리드동작 제어 방법. - 제 9 항에 있어서,
상기 블럭을 교체하는 단계는, 상기 복수의 블럭 중 프리 블럭을 검색하는 단계;
상기 검색된 프리 블럭에 상기 리드 횟수가 상기 최대 반복 리드 횟수를 초과한 블럭의 데이터를 저장하는 단계;
상기 교체된 블럭의 어드레스에 따라 어드레스 정보를 변경하는 단계; 및
상기 교체 전 상기 블럭에 저장된 데이터를 소거하는 단계;
를 포함하는 플래쉬 메모리 장치의 리드동작 제어 방법. - 제 10 항에 있어서,
상기 블럭을 교체한 후, 상기 카운터 맵을 저장하는 단계를 더 포함하는 플래쉬 메모리 장치의 리드동작 제어 방법. - 제 11 항에 있어서,
상기 카운터 맵을 저장하는 단계는, 상기 카운터 맵이 저장되는 블럭에 대한 소거 횟수를 카운트하는 단계;
상기 소거 횟수와 기 설정된 최대 소거 횟수를 비교하는 단계; 및
상기 소거 횟수가 상기 기 설정된 최대 소거 횟수를 초과하는 경우 상기 카운터 맵을 저장하기 위한 블럭을 교체하는 단계;
를 포함하는 플래쉬 메모리 장치의 리드동작 제어 방법.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140073712A (ko) * | 2012-12-06 | 2014-06-17 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 이의 동작 방법 |
Families Citing this family (2)
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)
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 |
-
2011
- 2011-03-25 KR KR1020110026959A patent/KR101083683B1/ko active IP Right Grant
Patent Citations (1)
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)
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) | ストレージ装置、ストレージシステム及び方法 | |
WO2024129243A1 (en) | Segregating large data blocks for data storage system |
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 |