KR20040071574A - 불휘발성 반도체 메모리 - Google Patents
불휘발성 반도체 메모리 Download PDFInfo
- Publication number
- KR20040071574A KR20040071574A KR1020030056379A KR20030056379A KR20040071574A KR 20040071574 A KR20040071574 A KR 20040071574A KR 1020030056379 A KR1020030056379 A KR 1020030056379A KR 20030056379 A KR20030056379 A KR 20030056379A KR 20040071574 A KR20040071574 A KR 20040071574A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- erase
- page
- memory
- pages
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
-
- 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
Landscapes
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System (AREA)
Abstract
블록은, 물리 어드레스 0, 1, 2, 3으로 구성된다. 초기 상태에서는 물리 어드레스 0, 1, 2, 3은 전부 소거 상태에 있다. 물리 어드레스 0, 1, 2, 3에 데이터 LA0, LA1, LA2, LA3이 기입되면, 카운트값은 각각 "1"이 된다. 이와 같이, 페이지(물리 어드레스) 단위의 기입/소거 동작이 행해지고, 데이터 갱신이 행해진 물리 어드레스의 카운트값에 대해서는 그 값을 갱신한다. 최종적으로, 블록 내의 카운트값의 합계가 허용치 32에 도달하면, 리프레시가 행해지고, 블록 내의 메모리 셀의 상태가 초기화된다.
Description
본 발명은 불휘발성 반도체 메모리에 있어서의 기입/소거 횟수의 관리에 관한 것으로, 특히 NAND형 플래시 메모리에 사용된다.
최근, NAND형 플래시 메모리를 사용한 플래시 메모리 카드가 디지털 카메라를 비롯한 각종 휴대 정보 단말기 등의 기억 매체로서 사용되고 있다. 도 1 및 도 2에, NAND형 플래시 메모리의 메모리 셀 배치의 개요를 나타낸다.
NAND형 플래시 메모리의 메모리 셀 어레이는, NAND 유닛 NU라고 불리는 기본 단위의 집합체로 구성된다. NAND 유닛 NU는 직렬 접속되는 복수의 메모리 셀 M0, M1, … M31로 이루어지는 셀 열과, 그 셀 열의 양단에 접속되는 2개의 셀렉트 게이트 트랜지스터 ST1, ST2로 구성된다.
NAND 유닛 NU 내에서는, 서로 인접하여 배치된 2개의 메모리 셀은 1개의 소스/드레인 영역을 공유한다. 또한, 셀렉트 게이트 트랜지스터 ST1은 비트선 BL에 접속되고, 셀렉트 게이트 트랜지스터 ST2는 소스선 SL에 접속된다.
메모리 셀 어레이는 페이지 또는 블록의 단위로 구분되어 있다. 페이지는, 1개의 워드선에 접속되는 메모리 셀의 집합체를 의미한다. 페이지는, 예를 들면 기입, 소거, 판독 등의 동작을 행하는데 있어서 기본 단위가 된다. 블록은, 비트선측 셀렉트 게이트 트랜지스터 ST1과 소스선측 셀렉트 게이트 트랜지스터 ST2 사이에 끼워진 페이지의 집합체를 의미한다.
도 1의 예에 따르면, 메모리 셀 어레이는 X+1개의 블록으로 구성되고, 또한 1개의 블록은 32페이지로 구성된다. 1페이지의 데이터 길이는 528바이트이다. 이 중, 512바이트는 사용자가 자유롭게 사용할 수 있는 데이터 영역(사용자 데이터부)이고, 남은 16바이트는 용장 영역에 대응한다. 일반적으로, 용장 영역에는 데이터 영역에 대한 에러 정정을 위한 ECC(Error Correction Circuit) 부호, 논리 어드레스, 블록이 옳은지(right) 그른지(wrong)를 나타내는 플래그 등이 저장된다.
이러한 NAND형 플래시 메모리에서는, 통상 데이터 소거는 블록 단위로 행해진다(블록 소거). 이 경우, 블록보다 작은 단위, 예를 들면 페이지 단위의 데이터 기입/소거에서는 기입/소거의 대상이 되는 페이지를 포함하는 블록 내의 셀 데이터를, 일시적으로 다른 블록 등의 데이터 기억부에 보관(save)하여, 기입/소거의 대상이 되지 않는 페이지의 셀 데이터를 보호해야 한다.
따라서, 이러한 보관 동작(save operation)에 많은 시간을 요하는 등, NAND형 플래시 메모리의 기입/소거 성능의 향상에 지장을 초래한다.
이 문제를 해결하기 위해서, 최근에는 데이터 소거를 페이지 단위로 행할 수 있는 NAND형 플래시 메모리가 개발되고 있다(예를 들면, 문헌 1, 2, 3을 참조).
문헌 1 : 일본 특개평3-295097호 공보
문헌 2 : 일본 특개평8-143398호 공보
문헌 3 : 일본 특개평11-176177호 공보
페이지 단위의 데이터 소거(페이지 소거)에서는 선택된 1개의 블록 내에서, 기입/소거의 대상이 되는 페이지의 셀 데이터만 소거될 수 있었다. 그러므로, 원칙적으로 기입/소거의 대상이 되지 않는 페이지의 셀 데이터를 다른 데이터 기억부에 보관할 필요가 없다.
그러나, 페이지 소거 기능을 구비한 NAND형 플래시 메모리에는, 신뢰성 측면에서 다음과 같은 문제점이 있다.
선택된 1개의 블록 내의 특정한 1페이지에 대해서만, 기입/소거 동작이 반복적으로 행해진다. 이러한 경우, 기입/소거의 대상이 되지 않는 페이지의 메모리 셀에 대하여, 반복적으로 전압 스트레스(중간 전압)가 인가된다.
예를 들면, 데이터 기입이 실행될 때마다, 기입/소거의 대상이 되지 않는 페이지의 메모리 셀에는 기입 전압보다 작은 중간 전압이 인가된다.
그 결과, 선택된 1개의 블록 내의 기입/소거의 대상이 되지 않는 페이지의 메모리 셀의 임계값 상태가 점차 변동한다. 최종적으로는 셀 데이터의 파괴를 초래하는 결과에 이른다. 이로 인해, 종래에는 페이지 소거 기능을 사용하여, 예를 들면 파일 데이터의 기입/소거 속도의 고속화를 도모하는 것은 곤란한 것으로 되어 왔다.
상술한 바와 같이, 종래에는 불휘발성 반도체 메모리의 기입/소거 성능의 향상을 실현시키기 위한 효과적인 기술이 존재하지 않았다.
따라서, 페이지 소거 기능을 활용하여, 데이터의 기입/소거 성능을 향상시킴과 함께, 기입/소거의 대상이 되지 않는 페이지의 메모리 셀에 인가되는 전압 스트레스에 기인하는 문제도 회피할 수 있는 불휘발성 반도체 메모리의 개발에 대한 요구가 있어 왔다.
본 발명의 일 양태에 따르면, 1개의 블록이 복수의 페이지로 구성되고, 페이지 단위 또는 그보다 작은 단위로 데이터 기입/소거가 행해지고, 또한 상기 복수의 페이지의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 페이지별로 관리하는 제어 회로를 구비하는 불휘발성 반도체 메모리가 제공된다.
도 1은 종래의 메모리 셀 어레이의 구성예를 나타내는 도면.
도 2는 NAND 셀 유닛의 예를 나타내는 도면.
도 3은 본 발명의 예에 따른 메모리 셀 어레이의 데이터 구분을 나타내는 도면.
도 4는 본 발명의 예에 따른 시스템의 개요를 나타내는 도면.
도 5는 본 발명의 제1 실시 형태에 따른 데이터 갱신 동작을 설명하는 흐름도.
도 6은 본 발명의 제2 실시 형태에 따른 데이터 갱신 동작을 설명하는 흐름도.
도 7은 제1, 제2 실시 형태에 따른 실시예 1의 카운트 동작을 나타내는 도면.
도 8은 제1, 제2 실시 형태에 따른 실시예 2의 카운트 동작을 나타내는 도면.
도 9는 제1, 제2 실시 형태에 따른 실시예 3의 카운트 동작을 나타내는 도면.
도 10은 본 발명의 제3 실시 형태에 따른 데이터 갱신 동작을 설명하는 흐름도.
도 11은 본 발명의 제4 실시 형태에 따른 데이터 갱신 동작을 나타내는 플로우차트.
도 12는 제3, 제4 실시 형태에 따른 실시예 1의 카운트 동작을 나타내는 도면.
도 13은 제3, 제4 실시 형태에 따른 실시예 2의 카운트 동작을 나타내는 도면.
도 14는 제3, 제4 실시 형태에 따른 실시예 3의 카운트 동작을 나타내는 도면.
도 15는 그 밖의 카운트 동작의 실시예를 나타내는 도면.
도 16은 그 밖의 카운트 동작의 실시예를 나타내는 도면.
도 17은 그 밖의 카운트 동작의 실시예를 나타내는 도면.
도 18은 그 밖의 카운트 동작의 실시예를 나타내는 도면.
도 19는 그 밖의 카운트 동작의 실시예를 나타내는 도면.
도 20은 그 밖의 카운트 동작의 실시예를 나타내는 도면.
도 21은 그 밖의 카운트 동작의 실시예를 나타내는 도면.
도 22는 그 밖의 카운트 동작의 실시예를 나타내는 도면.
도 23은 페이지 소거 시의 커맨드의 발생예를 나타내는 파형도.
도 24는 본 발명의 예가 적용되는 메모리 카드의 예를 나타내는 도면.
도 25는 본 발명의 예가 적용되는 시스템의 예를 나타내는 도면.
도 26은 본 발명의 예가 적용되는 메모리 카드의 예를 나타내는 도면.
〈도면의 주요 부분에 대한 부호의 설명〉
10, 10a, 10b : 메모리
11 : 컨트롤러
12, 12a, 12b : 메모리 카드
13 : 디지털 카메라
14 : ASIC
15 : 제어 회로
NU : NAND 유닛
WL0, WL1, … WL31 : 워드선
BL : 비트선
SGD, SGS : 셀렉트 게이트선
SL : 소스선
M0, M1, … M31 : 메모리 셀
ST1, ST2 : 셀렉트 게이트 트랜지스터
이하, 도면을 참조하여, 본 발명의 예에 따른 불휘발성 반도체 메모리에 대해 상세히 설명한다.
1. 개요
본 발명의 예는 페이지 소거 기능을 갖는 NAND형 플래시 메모리에 적용된다. 즉, 본 발명의 예에 따른 NAND형 플래시 메모리에서는 페이지 소거 기능을 활용하여, 데이터의 기입/소거 성능의 향상을 도모한다. 또한, 페이지 소거 기능에 기인하는 전압 스트레스의 문제는 1개의 블록 내의 페이지의 데이터 기입/소거 횟수를 페이지별로 관리함으로써 해결한다. 그 구체예에 대해서는, 후술하는 각 실시 형태에서 설명한다.
본 발명의 예는, 특히 작은 사이즈의 데이터의 기입/소거(예컨대, FAT(File Allocation Table) 정보의 기입/소거 등)이 빈번하게 행해지는 시스템에 적용된다. 왜냐하면, 페이지 소거 기능은, 주로 이러한 작은 사이즈의 데이터의 기입/소거에 대하여, 그 성능의 향상을 도모하기 때문이다. 본 발명의 예는, 플래시 메모리 카드나, 그것을 이용한 전자 기기 등에 응용된다.
2. NAND형 플래시 메모리의 예
우선, 본 발명의 예를 설명함에 있어서, 그 전제가 되는 NAND형 플래시 메모리의 예에 대하여 설명한다.
도 1 및 도 2는 NAND형 플래시 메모리의 메모리 셀 어레이의 예를 나타내고 있다.
NAND형 플래시 메모리의 메모리 셀 어레이는 NAND 유닛 NU라고 불리는 기본 단위의 집합체로 구성된다. NAND 유닛 NU는 직렬 접속되는 복수의 메모리 셀 M0, M1, … M31로 이루어지는 셀 열과, 그 셀 열의 양단에 각각 접속되는 2개의 셀렉트 게이트 트랜지스터 ST1, ST2로 구성된다.
NAND 유닛 NU 내에서, 서로 인접하여 배치된 2개의 메모리 셀은 1개의 소스/드레인 영역을 공유한다. 또한, 셀렉트 게이트 트랜지스터 ST1은 비트선 BL에 접속되고, 셀렉트 게이트 트랜지스터 ST2는 소스선 SL에 접속된다.
메모리 셀 어레이는 페이지 또는 블록의 단위로 구분되어 있다. 페이지는, 1개의 워드선에 접속되는 메모리 셀의 집합체를 의미한다. 페이지는, 예를 들면 기입, 소거, 판독 등의 동작을 행하는데 기본 단위가 된다. 블록은, 비트선측 셀렉트 게이트 트랜지스터 ST1과 소스선측 셀렉트 게이트 트랜지스터 ST2 사이에 끼워진 페이지의 집합체를 의미한다.
도 1의 예에 따르면, 메모리 셀 어레이는 X+1개의 블록으로 구성되고, 또한 1개의 블록은 32페이지로 구성된다. 1페이지의 데이터 길이는 528바이트이다. 이 중, 512바이트는 사용자가 자유롭게 사용할 수 있는 데이터 영역(사용자 데이터부)에 대응하고, 남은 16바이트는 용장 영역에 대응한다. 일반적으로, 용장 영역에는 데이터 영역에 대한 에러 정정을 위한 ECC(Error Correction Circuit) 부호, 논리 어드레스, 블록이 옳은지 그른지를 나타내는 플래그 등이 저장된다.
본 발명의 예가 적용되는 NAND형 플래시 메모리는 페이지 소거 기능을 갖는다. 이 경우, 블록보다 작은 단위, 예를 들면 페이지 단위의 데이터 기입/소거를실행하는데, 원칙적으로 기입/소거의 대상이 되는 페이지를 포함하는 블록 내의 셀 데이터를, 일시적으로 다른 블록 등의 데이터 기억부에 보관할 필요가 없다. 따라서, 데이터 기입/소거 속도의 고속화를 도모할 수 있다.
여기서, 페이지 소거 시의 전위 관계, 및 그 후의 기입 시의 전위 관계에 대하여 설명한다.
페이지 소거 시, 예를 들면 도 1의 블록 1 내의 페이지 0의 셀 데이터를 소거하는 것으로 가정한다. 이 경우, 블록 1 내의 워드선 WL0(도 2)을 접지 레벨(0V)로 설정하고, 블록 1 내의 다른 워드선 WL1, WL2, … WL31(도 2) 및 블록 1 내의 웰을 각각 고전위(예를 들면, 20V)로 설정한다. 또, 웰은 블록마다 형성되고, 비선택의 블록 내의 워드선 및 웰은 접지 레벨로 설정된다.
그 결과, 워드선 WL0과 웰 사이에만, 큰 전위차가 발생하고, 워드선 WL0에 접속되어 있는 메모리 셀, 즉 페이지 0 내의 메모리 셀만의 셀 데이터가 소거된다.
복수 페이지를 동시에 소거하는 경우도, 마찬가지로 페이지 소거를 행할 수 있다. 즉, 소거의 대상이 되는 페이지에 대응하는 워드선의 전위를 접지 레벨로 설정하고, 그 밖의 워드선을 고전위로 설정하면 된다. 예를 들면, 블록 1 내의 페이지 0∼2의 셀 데이터를 소거하면, 도 2의 워드선 WL0∼WL2에 접지 레벨을 제공하고, 도 2의 다른 워드선 WL3, … WL31과 웰에, 각각 고전위를 제공하면 된다.
이와 같이 페이지 소거 동작에서는, 동일한 블록 내에서, 선택된 1개 또는 복수의 페이지의 셀 데이터만 소거되고, 비선택의 페이지의 셀 데이터는 소거되지 않고, 그대로 보호된다.
기입 동작은, 페이지 소거 후, 페이지별로 실행된다.
예를 들면, 도 1의 블록 1 내의 페이지 0에 대하여 기입 동작을 실행하는 것으로 가정한다. 이 경우, 블록 1 내의 워드선 WL0(도 2)을 고전위(예를 들면, 20V)로 설정하고, 블록 1 내의 다른 워드선 WL1, WL2, … WL31(도 2)을 중간 전위(접지 레벨과 고전위 사이의 전위, 예를 들면 10V 정도)로 설정한다. 또한, 블록 1 내의 웰을 접지 레벨(예를 들면, 0V)로 설정한다.
그 결과, 워드선 WL0과 웰 사이에만, 큰 전위차가 발생하고, 워드선 WL0에 접속되어 있는 메모리 셀, 즉 페이지 0 내의 메모리 셀에 대해서만, 비트선의 전위 레벨에 따른 데이터가 기입된다.
이와 같이 기입 동작에서는, 선택된 블록 내에서, 선택된 1개의 페이지에 대해서만 데이터가 기입되고, 이 때, 남은 비선택의 페이지의 메모리 셀에는 전압 스트레스가 인가된다.
3. 간단화
본 발명의 예가 적용되는 NAND형 플래시 메모리에 대하여 설명하였지만, 이하에 설명하는 실시 형태에서는 그 설명을 간략화하기 위해서, 도 3에 도시한 바와 같이 1개의 블록은 4페이지로 구성되어 있는 것으로 가정한다.
또한, 본 발명의 예에서는 상술한 바와 같이 페이지 소거 기능에 기인하는 전압 스트레스의 문제에 관해서는 1개의 블록 내의 페이지의 데이터 기입/소거 횟수를 페이지별로 관리함으로써 해결한다. 이 데이터 기입/소거 횟수는 도 3에 도시한 바와 같이 메모리 셀 어레이의 용장 영역에, 페이지별로, 카운트값으로서 기억된다.
본 발명의 예에서는 이 카운트값이 중요하고, 용장 영역에 기억되는 다른 데이터, 즉 논리 어드레스, 블록이 옳은지 그른지를 나타내는 플래그(블록 스테이터스), ECC 부호 등은 종래와 동일하다. 따라서, 이하에 설명하는 실시 형태에서는 용장 영역에 대해서는 설명의 간단화를 위해, 데이터 기입/소거 횟수, 즉 카운트값만 나타내기로 한다.
또한, NAND형 플래시 메모리의 설명에서, 기입 동작 시에, 비선택의 페이지의 메모리 셀에 전압 스트레스가 인가되는 것을 설명하였다. 여기서, 셀 데이터가 파괴되지 않고 이 전압 스트레스에 메모리 셀이 견딜 수 있는 횟수, 즉 비선택의 페이지 내의 메모리 셀이 경험할 수 있는 데이터 기입/소거의 횟수(기입/소거 횟수)의 최대값(허용치)을 32회로 가정한다.
4. 제1 실시 형태
이하, 제1 실시 형태에 대하여 설명한다.
본 실시 형태의 특징은 페이지 소거 기능을 갖는 NAND형 플래시 메모리에 있어서, 페이지 단위로, 데이터 기입/소거 횟수를 관리하는 것이다. 또한, 1개의 블록 내의 각 페이지의 데이터 기입/소거 횟수가 소정의 조건을 만족하였을 때, 그 1개의 블록에 대하여 리프레시 동작을 행한다는 점에 있다.
여기서, 데이터 기입/소거는 1개 또는 복수의 페이지 단위로 행해도 되고, 또한 블록 단위로 행해도 된다. 중요한 점은 데이터 기입/소거를 행할 때마다, 데이터 기입/소거를 실행한 페이지에 대하여, 페이지별로, 데이터 기입/소거 횟수를카운트하는 데 있다. 또, 후술하지만, 카운트 방법은, 특별히 한정되지 않는다.
또한, 여기서 말하는 「리프레시 동작」은, 1개의 블록 내의 특정한 페이지(전체 페이지 또는 1개 이상의 페이지)에 대하여, 데이터의 재기입(rewrite)을 행하는 것이다. 리프레시 동작의 의미 또는 목적은, 전압 스트레스에 의해 비선택 페이지의 데이터를 파괴하기 전에 비선택 페이지의 데이터가 리프레시된다는 것이다. 그러한 의미 또는 목적은 DRAM의 리프레시 동작과 동일하다. 또, 리프레시 동작의 방법에 대해서도, 후술하는 바와 같이 특별히 한정되지 않는다.
도 4는 본 발명의 제1 실시 형태에 따른 시스템을 나타내고 있다. 도 5는 본 발명의 제1 실시 형태에 따른 시스템의 동작의 주요부를 나타내고 있다.
메모리(10)는, 예를 들면 페이지 소거 기능을 갖는 NAND 플래시 메모리이다. 컨트롤러(11)는, 메모리(10)의 동작을 컨트롤하고, 또한 페이지별로 데이터 기입/소거 횟수를 관리하는 컨트롤 회로이다.
메모리(10)와 컨트롤러(11)는 1칩화될 수도 있고, 각각 다른 칩에 형성되어 있을 수도 있다. 또한, 양자는 메모리 카드와 같은 1개의 기기 내에 배치되어 있을 수도 있고, 메모리 카드 및 전자 기기와 같이 다른 기기 내에 배치되어 있을 수도 있다.
우선, 컨트롤러(11)로부터의 기입/소거 신호를 수신하면, 메모리(10)는 데이터 기입/소거를 행하는 페이지를 포함하는 선택된 블록 내의 전체 페이지의 카운트값의 판독을 실행한다(단계 ST1∼ST2).
컨트롤러(11)는 선택된 블록 내의 전체 페이지 중, 데이터 기입/소거를 실행하는 페이지에 대하여, 카운트값의 갱신을 행한다. 여기서는 카운트 방법에 따라, 카운트의 방식이 다르기 때문에, "카운트값의 갱신"이라는 용어를 사용하고 있다(단계 ST2).
이 후, 데이터 소거 및 데이터 기입을 실행한다(단계 ST3∼ST4).
데이터 소거에 있어, 페이지 단위로 데이터가 소거되는 페이지 소거가 실행될 수도 있고, 블록 단위 또는 칩 단위로 데이터가 소거되는 블록 소거 또는 칩 소거가 실행될 수도 있다. 즉, 메모리(10)가 페이지 단위로 데이터를 소거하는 페이지 소거 기능을 가지고 있을 수도 있다.
데이터 기입은 페이지 단위로 실행된다. 선택된 블록 내의 복수 또는 모든 페이지에 대한 데이터 기입/소거를 실행하는 경우에는, 예를 들면 소스선에 가까운 메모리 셀부터 순서대로, 1페이지씩, 데이터 기입을 실행한다. 데이터 기입에서는 새로운 데이터가 데이터 영역에 기억됨과 함께, 새로운 카운트값이 용장 영역에 기억된다.
다음으로, 컨트롤러(11)는 선택된 블록 내의 각 페이지의 카운트값에 기초하여, 데이터 기입/소거 횟수가 최대값(허용치)에 도달하였는지를 판단한다(단계 ST5).
데이터 기입/소거 횟수가 최대값(허용치)에 도달해 있지 않는 경우에는, 본 발명에 관한 동작으로서는, 특별히, 아무것도 행하지 않는다. 즉, 메모리(10)는 컨트롤러(11)의 컨트롤 하에서, 통상의 동작을 행한다.
데이터 기입/소거 횟수가 최대값(허용치)에 도달한 경우에, 컨트롤러(11)는메모리(10)에 대하여 리프레시 동작을 행하는 명령을 발행한다. 리프레시 동작의 방법에 대해서는 후에 상세하게 설명한다. 리프레시 동작을 행하면, 원칙적으로 그 선택된 블록 내의 각 페이지의 데이터 기입/소거 횟수(카운트값)를 초기화한다. 더불어, 카운트 방법에 따라 데이터 기입/소거 횟수를 초기화하지 않아도 되는 경우도 있다(단계 ST6).
5. 제2 실시 형태
이하, 제2 실시 형태에 대하여 설명한다.
본 실시 형태는 제1 실시 형태의 변형예이다. 본 실시 형태에서는 제1 실시 형태에서의 용어의 정의 및 그 밖의 조건이 그대로 적용된다.
제1 실시 형태에서는 데이터 기입/소거 횟수가 소정의 조건을 만족하였을 때에 리프레시 동작을 행하였다.
그러나, 이 경우, 최후의 데이터 기입/소거의 대상이 되는 페이지에 대해서는 데이터 소거 및 기입을 실행한 후에, 연속적으로 리프레시 동작(소거 및 기입)이 실행된다. 즉, 최후의 데이터 기입/소거 동작은 용장이 된다.
따라서, 본 실시 형태에서는 최후의 데이터 기입/소거의 대상이 되는 페이지에 대한 데이터 기입/소거 동작은 리프레시 동작 중에 행해진다. 이와 같이 하면, 불필요한 데이터 기입/소거 동작을 없앨 수 있어, 데이터 기입/소거 성능의 향상을 도모할 수 있다.
도 4는 본 발명의 제2 실시 형태에 따른 시스템을 나타내고 있다. 도 6은 본 발명의 제2 실시 형태에 따른 시스템의 동작의 주요부를 나타내고 있다.
메모리(10) 및 컨트롤러(11)에 대해서는, 이미 상술한 제1 실시 형태에서 설명하였으므로, 여기서는 생략한다.
우선, 컨트롤러(11)로부터의 기입/소거 신호를 수신하면, 메모리(10)는 데이터 기입/소거를 행하는 페이지를 포함하는 선택된 블록 내의 전체 페이지의 카운트값의 판독을 실행한다(단계 ST1∼ST2).
컨트롤러(11)는 선택된 블록 내의 전체 페이지 중, 데이터 기입/소거를 실행하는 페이지에 대하여, 카운트값의 갱신을 행한다. 상술한 바와 같이 카운트 방법에 따라 카운트의 방식이 다르기 때문에 "카운트값의 갱신"이라는 용어가 사용되는 것이다(단계 ST2).
다음으로, 컨트롤러(11)는 선택된 블록 내의 각 페이지의 카운트값에 기초하여, 데이터 기입/소거 횟수가 최대값(허용치)에 도달하였는지를 판단한다(단계 ST3).
데이터 기입/소거 횟수가 최대값(허용치)에 도달해 있지 않는 경우에는, 데이터 소거 및 데이터 기입을 실행한다(단계 ST4∼ST5).
데이터 소거에 있어, 페이지 단위로 데이터가 소거되는 페이지 소거가 실행될 수도 있고, 블록 단위 또는 칩 단위로 데이터가 소거되는 블록 소거 또는 칩 소거가 실행될 수도 있다.
데이터 기입은 페이지 단위로 실행된다. 선택된 블록 내의 복수 또는 모든 페이지에 대한 데이터 기입/소거를 실행하는 경우에는, 예를 들면 소스선에 가까운 메모리 셀부터 순서대로, 1페이지씩, 데이터 기입을 실행한다. 데이터 기입에 있어, 새로운 데이터가 데이터 영역에 기억됨과 함께, 새로운 카운트값이 용장 영역에 기억된다.
데이터 기입/소거 횟수가 최대값(허용치)에 도달한 경우에는, 컨트롤러(11)는, 메모리(10)에 대하여 리프레시 동작을 행하는 명령을 발행한다(단계 ST6).
리프레시 동작의 방법에 대해서는 후에 상세하게 설명한다. 제2 실시 형태에서는, 적어도 선택된 블록 내의 데이터 기입/소거의 대상이 되는 페이지에 대해서는 이 리프레시 동작에 의해 데이터 기입/소거를 실행한다. 또한, 선택된 블록 내의 데이터 기입/소거의 대상이 되지 않는 페이지에 대해서는 통상의 리프레시 동작이 실행된다.
리프레시 동작을 행하면, 원칙적으로 그 선택된 블록 내의 각 페이지의 데이터 기입/소거 횟수(카운트값)를 초기화한다. 더불어, 카운트 방법에 따라 데이터 기입/소거 횟수를 초기화하지 않아도 되는 경우도 있다.
6. 제1, 제2 실시 형태에 따른 실시예
이하, 제1, 제2 실시 형태에 따른 카운트 동작의 실시예에 대하여 설명한다.
(1) 실시예
① 카운트 방법
도 7은 본 발명의 실시예 1에 따른 카운트 방법을 나타내고 있다.
본 예에서, 카운트값은 NAND형 플래시 메모리의 메모리 셀 어레이 내의 용장 영역에 기억된다. 카운트값은 페이지에 대한 데이터 기입/소거 횟수를 나타내고 있으며, 페이지별로 기억된다.
리프레시 동작은 블록 내의 각 페이지의 카운트값의 합계가 최대값(허용치), 32회에 도달하는 조건 하에 실행된다. 즉, 데이터 기입/소거 동작에 관하여, 최악의 경우에는 적어도 1개의 페이지가 한 번도 선택되지 않는 경우를 생각할 수 있다. 이 선택되지 않는 페이지 내의 메모리 셀은 32회까지의 데이터 기입/소거에 의해 야기되는 전압 스트레스를 견딜 수 있으므로, 상술한 바와 같은 조건이 설정된다.
또, 실시예 1의 설명에서, 물리 어드레스 0, 1, 2, 3은, 어드레스 신호 0, 1, 2, 3에 의해 선택되는 메모리 셀, 즉 페이지 0, 1, 2, 3을 나타낸다.
물리 어드레스 0, 1, 2, 3의 용어를 채용한 이유는, 1개의 워드선에 접속되는 복수의 메모리 셀(1 물리 어드레스)의 각각이 1비트 데이터를 기억하는 경우에, 1페이지는 1물리 어드레스와 동일하다는 것을 고려하기 때문이다. 그러나, 복수 비트를 기억하는 경우(다치 메모리인 경우), 1페이지는 1물리 어드레스와 동일하지 않다.
논리 어드레스 0, 1, 2, 3은, 어드레스 신호 0, 1, 2, 3이다.
또한, 예를 들어, 물리 어드레스 0이 논리 어드레스 0에 의해 선택되므로, 물리 어드레스 0에 기억되는 데이터는 「LA0」으로 기재된다. 데이터는 1비트인지 다수 비트인지에 무관하게 각 메모리 셀에 기억된다는 것에 주의해야 한다. 마찬가지의 이유로 인해, 물리 어드레스 1, 2, 3에 기억되는 데이터는 「LA1」, 「LA2」, 「LA3」으로 기재된다. 「E」는 메모리 셀이 소거 상태에 있는 것을 나타낸다.
(a) 초기 상태
블록 내의 모든 물리 어드레스(페이지) 0, 1, 2, 3 내의 메모리 셀은 소거 상태에 있다.
(b) 기입
우선, 물리 어드레스 0에 데이터 LA0이 기입되고, 물리 어드레스 1에 데이터 LA1이 기입되고, 물리 어드레스 2에 데이터 LA2가 기입되고, 물리 어드레스 3에 데이터 LA3이 기입된다.
물리 어드레스 0에 대한 데이터 LA0의 기입 시에, 물리 어드레스 0의 카운트값, 즉 데이터 기입/소거 횟수로서, "1"이 용장 영역에 기입된다. 마찬가지로, 물리 어드레스 1, 2, 3에 대한 데이터 LA1, 2, 3의 기입 시에는, 물리 어드레스 1, 2, 3의 카운트값, 즉 데이터 기입/소거 횟수로서, "1"이 기입된다.
(c) 및 (d) 물리 어드레스 0의 데이터 기입/소거
컨트롤러(11)는, 메모리(10)에 대하여 물리 어드레스 0의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 내의 모든 물리 어드레스 0, 1, 2, 3의 카운트값이 판독된다. 또한, 도 4의 컨트롤러(11)에 있어서, 데이터 기입/소거의 대상이 되는 물리 어드레스 0의 카운트값에, "1"이 가산된다. 그 결과, 물리 어드레스 0의 카운트값은 "2"가 된다. 물리 어드레스 0, 1, 2, 3의 카운트값은, 예를 들면 도 4의 컨트롤러(11) 내의 메모리(RAM 등)에 일시적으로 기억된다.
이 후, 물리 어드레스 0에 기억된 데이터 LA0 및 카운트값의 소거가 실행된다((c) 참조). 계속해서, 물리 어드레스 0에 대하여, 갱신 데이터 LA0 및 카운트값(="2")이 기입된다((d) 참조).
또한, 도 4의 컨트롤러(11)에 있어서, 모든 물리 어드레스 0, 1, 2, 3의 카운트값의 합계값이 산출된다. 이 시점에서, 물리 어드레스 0의 카운트값은 "2"이고, 또한 물리 어드레스 1, 2, 3의 카운트값은 "1"이므로, 모든 물리 어드레스 0, 1, 2, 3의 카운트값의 합계값은 "5"가 된다. 이 합계값은 최대값(허용치), "32"보다 작다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(e) 및 (f) 물리 어드레스 2의 데이터 기입/소거
컨트롤러(11)는, 메모리(10)에 대하여 물리 어드레스 2의 데이터 갱신 요구를 출력한다(도 4 참조).
블록 내의 모든 물리 어드레스 0, 1, 2, 3의 카운트값이 판독된다. 또한, 도 4의 컨트롤러(11)에 있어서, 데이터 기입/소거의 대상이 되는 물리 어드레스 2의 카운트값에, "1"이 가산된다. 그 결과, 물리 어드레스 2의 카운트값은 "2"가 된다. 물리 어드레스 0, 1, 2, 3의 카운트값은, 예를 들면 도 4의 컨트롤러(11) 내의 메모리(RAM 등)에 일시적으로 기억된다.
이 후, 물리 어드레스 2에 기억된 데이터 LA2 및 카운트값의 소거가 실행된다((e) 참조). 계속해서, 물리 어드레스 2에 대하여, 갱신 데이터 LA2 및 카운트값(="2")이 기입된다((f) 참조).
또한, 도 4의 컨트롤러(11)에 있어서, 모든 물리 어드레스 0, 1, 2, 3의 카운트값의 합계값이 산출된다. 이 시점에서, 물리 어드레스 0, 2의 카운트값은 "2"이고, 또한 물리 어드레스 1, 3의 카운트값은 "1"이므로, 모든 물리 어드레스 0, 1, 2, 3의 카운트값의 합계값은 "6"이 된다. 이 합계값은 최대값(허용치), "32"보다 작다.
따라서, 이 시점에서도, 리프레시 동작은 행해지지 않는다.
(g) 리프레시
데이터 갱신 요구에 따라, 상술한 (c) 및 (d)의 동작, 또는 (e) 및 (f)의 동작과 마찬가지의 동작이 실행되어, 최종적으로 물리 어드레스 0, 1, 2, 3의 카운트값이 (g)에 도시한 바와 같이 된 것으로 한다.
도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값의 합계값이 "32"인 것을 확인하면, 리프레시 동작을 행하는 명령을 도 4의 메모리(10)에 제공한다.
본 예의 경우, 물리 어드레스 0, 1, 2, 3의 카운트값은, 전부 "1" 이상으로 되어 있다. 즉, 물리 어드레스 0, 1, 2, 3 중 어느 것에 관해서도, 32회의 데이터 기입/소거 동작 중, 적어도 1회는 데이터 기입/소거의 대상으로 되어 있다. 따라서, 어드레스가 데이터 기입/소거의 대상이 되지 않는 상태에서 32회의 전압 스트레스를 받는 물리 어드레스는 존재하지 않는다.
그러나, 상술한 바와 같이 최악의 경우에는 32회의 데이터 기입/소거 동작 시에, 적어도 1개의 물리 어드레스가 한 번도 선택되지 않는 경우를 생각할 수 있다. 이 경우, 그 적어도 1개의 물리 어드레스는 데이터 기입/소거의 대상이 되지않는 상태에서 32회의 전압 스트레스를 받게 된다.
그 다음, 물리 어드레스 0, 1, 2, 3의 카운트값의 합계값이 최대값(허용치), "32"에 도달하였을 때에는 각 물리 어드레스 0, 1, 2, 3의 카운트값에 무관하게 리프레시 동작을 실행한다.
또, 본 예에 있어, 초기 상태에서는 모든 물리 어드레스 0, 1, 2, 3이 소거 상태이고, 1회째 동작으로서 모든 물리 어드레스 0, 1, 2, 3에 대해 데이터 기입 동작이 우선 실행된다. 따라서, 최악의 경우에는, 어드레스가 2회째 이후의 동작에서는, 한 번도 데이터 기입/소거의 대상이 되지 않게 된다.
즉, 메모리 셀의 데이터가 32회의 전압 스트레스까지는 파괴되지 않는 경우, 리프레시의 조건에서 물리 어드레스 0, 1, 2, 3의 카운트값의 합계값은 "33"에 도달한다.
본 예에서는, 리프레시의 조건은 물리 어드레스 0, 1, 2, 3의 카운트값의 합계값에 기초하지만, 이 조건은 메모리의 초기 상태에 따라 변경된다. 중요한 것은 최악의 경우를 상정하여, 이 최악의 경우에 기초하여 최대값(허용치)을 결정하는 데 있다.
리프레시 동작에서는 데이터 영역에 기억되는 데이터에 대해서는 재기입에 의해 리프레시되지만, 용장 영역의 카운트값은 리프레시 동작 시에, 예를 들면 (b)의 상태로 초기화된다. 즉, 리프레시에 있어서의 기입 동작에서는 물리 어드레스 0, 1, 2, 3에 대응하는 용장 영역에, 각각 카운트값 "1"이 기입된다.
② 리프레시 동작의 방법
리프레시 동작의 방법에 대하여 설명한다.
리프레시는, 상술된 바와 같이 블록 내의 전체 페이지 또는 1개 이상의 페이지에 대하여, 데이터의 재기입(rewrite)을 행하는 것이다. 리프레시의 목적은 메모리 셀의 데이터가 전압 스트레스에 의한 임계값 변동에 의해 파괴되기 전에, 그 메모리 셀의 데이터를 리프레시한다는 것에 있다. 이러한 목적을 실현할 수 있다면, 어떠한 방법을 이용해도 된다.
(a) 리프레시의 예 1
예를 들면, 리프레시를 행하는 블록 내의 모든 물리 어드레스의 데이터를, 컨트롤러 내의 메모리(RAM 등)에 전송한 후, 그 블록 내의 모든 물리 어드레스의 데이터를 소거한다. 이 소거는 블록 소거일 수도 있고, 페이지 소거일 수도 있다. 그리고, 컨트롤러 내의 메모리에 일시적으로 기억된 데이터를, 다시 그 블록 내의 물리 어드레스로 복귀시킨다. 따라서, 리프레시의 대상이 된 물리 어드레스를 구성하는 메모리 셀의 데이터가 리프레시된다.
(b) 리프레시의 예 2
우선, 리프레시를 행하는 1개의 블록 내의 모든 물리 어드레스의 데이터를, 리프레시를 행하지 않는 다른 블록으로 전송한 후, 1개의 블록 내의 모든 물리 어드레스의 데이터를 소거한다. 이 소거는 블록 소거일 수도 있고, 페이지 소거일 수도 있다. 그리고, 다른 블록에 일시적으로 기억된 데이터를, 1개의 블록 내의 물리 어드레스로 복귀시킨다. 따라서, 리프레시의 대상이 된 물리 어드레스를 구성하는 메모리 셀의 데이터가 리프레시된다. 본 예에서는, 1개의 블록과 다른 블록은 동일 칩 내에 형성될 수도 있고, 각각 다른 칩 내에 형성될 수도 있다.
③ 리프레시 동작의 타이밍
리프레시 동작을 실시하는 타이밍은 특별히 한정되지 않는다.
예를 들면, 허용치가 "32"인 경우, 블록 내의 물리 어드레스의 카운트값의 합계값이 32회에 도달한다. 32회째의 기입/소거 동작이 종료되면, 즉시, 리프레시 동작이 실행될 수 있다. 또한, 32회째의 기입/소거 동작을 끝낸 후의 적당한 시기, 예를 들면 호스트로부터의 액세스가 중지된 후에, 리프레시 동작이 실행될 수도 있다.
또, 제2 실시 형태에 기초한 실시예인 경우에는, 32회째의 데이터 기입/소거 동작을 리프레시 동작 중에 행한다. 따라서, 블록 내의 물리 어드레스의 카운트값의 합계값이 32회에 도달하는 경우, 리프레시 동작은 32회째의 기입/소거 동작과 함께 즉시 실행된다.
④ 기타
본 예에서는 카운트값은 0, 1, 2, …와 같이, "0"에서 시작해서, 데이터 갱신 횟수에 따라 "1"씩 증가하지만, 본 발명의 예는 이러한 카운트 방법에 한정되는 것이 아니다.
예를 들면, 초기값은 "0" 이외의 수치, 예를 들면 "2", 이진수에서는 "10"일 수도 있다. 증가분은 "1" 이외의 다른 수치, 예를 들면 "2"일 수도 있다. 이 경우, 데이터 기입/소거 횟수의 최대값(허용치)도, 당연히 변한다. 본 예에서는 카운트값은 "32"가 최대가 되므로, 메모리 셀 어레이의 용장 영역으로서는 "32"까지의 수를 카운트할 수 있을 만큼의 비트 수를 확보해 두면 충분하다. 즉, 1개의 물리 어드레스에 대해서는, 용장 영역 중의 5비트를 카운트값을 기억하기 위한 영역으로서 사용한다.
또한, 카운트값의 증가분은 등차수열이 아닐 수도 있다.
예를 들면, 메모리 셀 어레이의 용장 영역 중, 4바이트, 즉 32비트분을 카운트값을 기억하는 영역으로 사용하는 경우에, 데이터 기입/소거 횟수는 이들 32비트 중, "1" 상태에 있는 비트의 수에 의해 판단될 수도 있다.
구체적으로, 소정의 물리 어드레스에 대응하는 카운트값의 초기값은, "00000 …000(32비트)"으로 설정해 두고, 데이터 갱신 횟수에 따라, 이 영역에서의 "1"의 수를 늘려 간다. 예를 들면, 데이터 갱신 횟수가 1회인 경우에는 "00000 …001"(32비트중 "1"의 수는 1개)이 얻어진다. 데이터 갱신 횟수가 2회인 경우에는 "00000 …011"(32비트중 "1"의 수는 2개)이 얻어진다.
또한, 예를 들면 메모리 셀 어레이의 용장 영역 중, 4바이트, 즉 32비트분을, 카운트값을 기억하는 영역으로 사용하는 경우에는, 데이터 기입/소거 횟수는 이들 32비트 중, "1" 상태에 있는 비트의 위치에 의해 판단될 수도 있다.
구체적으로, 소정의 물리 어드레스에 대응하는 카운트값의 초기값은, "00000 …000(32비트)"으로 설정해 두고, 데이터 갱신 횟수에 따라, 이 영역에서의 "1"의 위치를 바꿔 간다. 예를 들면, 데이터 갱신 횟수가 1회의 경우에는 "00000 …001"(32비트 중 "1"의 위치는 우측 단부)이 얻어진다. 데이터 갱신 횟수가 증가함에 따라, "1"의 위치를 1개씩 좌측으로 시프트된다.
또한, 카운트값은 데이터 갱신 횟수에 따라 증가하는 대신, 감소될 수도 있다. 예를 들면, 카운트값의 초기값을 "32"로 하여, 데이터 갱신 횟수에 따라, 이 수를 1씩 줄여 갈 수도 있다.
<30-60>
(2) 실시예 2
① 카운트 방법
도 8은 본 발명의 실시예 2에 따른 카운트 방법을 나타내고 있다.
상술한 실시예 1(도 7)에서는, 페이지별로 데이터 기입/소거 횟수를 관리하며, 컨트롤러는 페이지별 데이터 기입/소거 횟수에 기초하여, 블록 내의 데이터 기입/소거 횟수의 합계값을 산출한다.
반면에, 실시예 2에서는 블록 내에서의 데이터 기입/소거 횟수의 합계값을 관리한다. 즉, 데이터 기입/소거의 대상이 된 페이지의 카운트값은 그 페이지에 대한 데이터 기입/소거 횟수가 아니라, 그 페이지를 포함하는 블록 내에서의 데이터 기입/소거 횟수의 합계값으로 설정된다.
따라서, 컨트롤러는 데이터 기입/소거할 때마다, 블록 내의 각 페이지의 카운트값 중에서 최대값 Nmax를 선택할 수도 있다.
또한, 리프레시의 실시는 블록 내의 각 페이지의 카운트값 중의 최대값 Nmax가 허용치인 32회에 도달한 조건 하에 수행된다. 왜냐하면, 데이터 기입/소거 동작에 관하여, 최악의 경우에는 적어도 1개의 페이지가 한 번도 선택되지 않는 경우가 고려되기 때문이다. 이 선택되지 않은 페이지 내의 메모리 셀에 대해서는 32회까지의 데이터 기입/소거에 의해 야기되는 전압 스트레스에 견딜 수 있으므로, 상술한 바와 같은 조건을 설정한다.
또, 실시예 2의 설명에서도, 물리 어드레스 0, 1, 2, 3 및 논리 어드레스 0, 1, 2, 3의 의미는 실시예 1과 동일하므로, 여기서는 그 설명을 생략한다. 또한, LA0, LA1, LA2, LA3 및 E의 의미에 대해서도, 실시예 1과 동일하므로, 여기서는 그 설명을 생략한다.
(a) 초기 상태
블록 내의 모든 물리 어드레스(페이지) 0, 1, 2, 3 내의 메모리 셀은 소거 상태에 있다.
(b) 기입
우선, 물리 어드레스 0에 데이터 LA0이 기입되고, 물리 어드레스 1에 데이터 LA1이 기입되고, 물리 어드레스 2에 데이터 LA2가 기입되고, 물리 어드레스 3에 데이터 LA3이 기입된다.
물리 어드레스 0에 대한 데이터 LA0의 기입 시에는, 물리 어드레스 0의 카운트값, 즉 데이터 기입/소거 횟수로서, "1"이 기입된다. 또한, 물리 어드레스 1에 대한 데이터 LA1의 기입 시에는, 블록 전체적으로 보면 2회째의 데이터 기입/소거가 수행된다. 따라서, 물리 어드레스 1의 카운트값, 즉 데이터 기입/소거 횟수로서 "2"가 기입된다.
마찬가지로, 물리 어드레스 2에 대한 데이터 LA2의 기입 시에는, 블록 전체적으로 보면 3회째의 데이터 기입/소거가 수행된다. 따라서, 물리 어드레스 2의카운트값, 즉 데이터 기입/소거 횟수로서 "3"이 기입된다. 또한, 물리 어드레스 3에 대한 데이터 LA3의 기입 시에는, 블록 전체적으로 보면 4회째의 데이터 기입/소거가 수행된다. 따라서, 물리 어드레스 3의 카운트값, 즉 데이터 기입/소거 횟수로서 "4"가 기입된다.
(c) 및 (d) 물리 어드레스 0의 데이터 기입/소거
컨트롤러(11)는, 메모리(10)에 대하여 물리 어드레스 0의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 내의 모든 물리 어드레스 0, 1, 2, 3의 카운트값이 판독된다. 도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중에서 최대값 Nmax를 선택한다. 이 시점에서 물리 어드레스 3의 카운트값 "4"가 가장 큰 값을 갖는다. 도 4의 컨트롤러(11)는 물리 어드레스 3의 카운트값 "4"에 "1"을 가산하여, 카운트값 "5"를 데이터 기입/소거의 대상이 되는 물리 어드레스 0의 카운트값으로 사용한다. 물리 어드레스 0, 1, 2, 3의 카운트값은, 예를 들면 도 4의 컨트롤러(11) 내의 메모리(RAM 등)에 일시적으로 기억된다.
이 후, 물리 어드레스 0에 기억된 데이터 LA0 및 카운트값의 소거가 실행된다((c) 참조). 계속해서, 물리 어드레스 0에 대하여, 갱신 데이터 LA0 및 카운트값(="5")이 기입된다((d) 참조).
또한, 도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중의 최대값 Nmax가, 허용치인 "32"에 도달해 있는지를 판단한다. 이 시점에서는 물리 어드레스 0의 카운트값 "5"가 가장 크지만, 그 값은 허용치인 "32"에 도달해 있지 않다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(e) 및 (f) 물리 어드레스 2의 데이터 기입/소거
컨트롤러(11)는, 메모리(10)에 대하여 물리 어드레스 2의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 내의 모든 물리 어드레스 0, 1, 2, 3의 카운트값이 판독된다. 도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중에서 최대값 Nmax를 선택한다. 이 시점에서는 물리 어드레스 0의 카운트값 "5"가 가장 큰 값을 갖는다. 도 4의 컨트롤러(11)는 물리 어드레스 0의 카운트값 "5"에 "1"을 가산하여, 카운트값 "6"을 데이터 기입/소거의 대상이 되는 물리 어드레스 2의 카운트값으로 사용한다. 물리 어드레스 0, 1, 2, 3의 카운트값은, 예를 들면 도 4의 컨트롤러(11) 내의 메모리(RAM 등)에 일시적으로 기억된다.
이 후, 물리 어드레스 2에 기억된 데이터 LA2 및 카운트값의 소거가 실행된다((e) 참조). 계속해서, 물리 어드레스 2에 대하여, 갱신 데이터 LA2 및 카운트값(="6")이 기입된다((f) 참조).
또한, 도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중의 최대값 Nmax가, 허용치인 "32"에 도달해 있는지를 판단한다. 이 시점에서는 물리 어드레스 2의 카운트값 "6"이 가장 크지만, 그 값은 허용치인 "32"에 도달해 있지 않다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(g) 리프레시
데이터 갱신 요구에 따라, 상술한 (c) 및 (d)의 동작 또는 (e) 및 (f)의 동작과 마찬가지의 동작이 실행되어, 최종적으로 물리 어드레스 0, 1, 2, 3의 카운트값이 (g)에 도시한 바와 같이 된 것으로 한다.
도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값의 최대값 Nmax가 "32"인 것을 확인하면, 리프레시 동작을 행하는 명령을 도 4의 메모리(10)에 제공한다.
본 예의 경우, 물리 어드레스 0, 1, 2, 3의 카운트값은, 전부 "1" 이상으로 되어 있다. 즉, 물리 어드레스 0, 1, 2, 3 중 어느 것에 대해서도, 32회의 데이터 기입/소거 동작 중, 적어도 1회는 데이터 기입/소거의 대상으로 되어 있다. 따라서, 데이터 기입/소거의 대상이 되지 않는 상태에서 32회의 전압 스트레스를 받은 물리 어드레스는 존재하지 않는다.
그러나, 상술한 바와 같이 최악의 경우에는 32회의 데이터 기입/소거 동작 시에, 적어도 1개의 물리 어드레스가 한 번도 선택되지 않는 경우를 생각할 수 있다. 이 경우, 그 적어도 1개의 물리 어드레스에 대해서는 데이터 기입/소거의 대상이 되지 않는 상태에서 32회의 전압 스트레스를 받은 것으로 된다.
따라서, 물리 어드레스 0, 1, 2, 3의 카운트값의 최대값 Nmax가, 허용치인 "32"에 도달하였을 때에는 각 물리 어드레스 0, 1, 2, 3의 카운트값에 관계없이 리프레시 동작을 실행한다.
본 예에서는 초기 상태에서 모든 물리 어드레스 0, 1, 2, 3이 소거 상태이며, 또한 최초의 1회째에는 모든 물리 어드레스 0, 1, 2, 3에 대한 데이터 기입 동작으로 되어 있다. 따라서, 최악의 경우에는 정확하게는 2회째 이후, 한 번도 데이터 기입/소거의 대상이 되지 않는 경우가 된다.
즉, 메모리 셀의 데이터 파괴가 32회의 전압 스트레스까지 발생하지 않으면, 리프레시의 조건은 물리 어드레스 0, 1, 2, 3의 카운트값의 최대값 Nmax가 "33"에 도달한 것이 된다.
본 예에서는 리프레시의 조건은 물리 어드레스 0, 1, 2, 3의 카운트값의 최대값 Nmax에 기초하고 있지만, 이 조건은 메모리의 초기 상태에 따라 변경된다. 중요한 점은 최악의 경우를 상정하여, 이 최악의 경우에 기초하여, 허용치를 결정하는 데 있다.
리프레시 동작에서는 데이터 영역에 기억되는 데이터에 대해서는 기입/소거에 의해 리프레시되지만, 용장 영역의 카운트값에 대해서는 리프레시 동작 시에, 예를 들면 (b)의 상태로 초기화된다. 즉, 리프레시에 있어서의 기입 동작에서는 물리 어드레스 0, 1, 2, 3에 대응하는 용장 영역에, 각각 카운트값 "1", "2", "3", "4"가 기입된다.
② 리프레시 동작의 방법
리프레시 동작은 메모리 셀의 데이터가 전압 스트레스에 의한 임계값 변동에 의해 파괴되기 전에, 그 메모리 셀의 데이터를 리프레시하는 목적을 달성할 수 있으면, 어떠한 방법을 이용해도 된다. 예를 들면, 리프레시 동작의 방법으로서는 실시예 1에서 설명한 예 1 및 예 2를 그대로 사용할 수 있으므로, 그 상세한 설명에 대해서는 생략한다.
③ 리프레시 동작의 타이밍
리프레시 동작을 실시하는 타이밍은, 특별히 한정되지 않는다.
예를 들면, 허용치가 "32"인 경우, 블록 내의 물리 어드레스의 카운트값의 최대값 Nmax가 32회에 도달한다. 32회째의 기입/소거 동작이 종료될 때, 즉시 리프레시 동작을 실행해도 된다. 또한, 32회째의 기입/소거 동작을 끝낸 후의 적당한 시기, 예를 들면 호스트로부터의 액세스가 끊어진 후에, 리프레시 동작을 실행해도 된다.
제2 실시 형태에 기초한 실시예인 경우에는 32회째의 데이터 기입/소거 동작을 리프레시 동작 중에서 행하고 있다. 이 때문에, 리프레시 동작은 블록 내의 물리 어드레스의 카운트값의 최대값 Nmax가 32회에 도달하면, 32회째의 기입/소거 동작과 함께, 즉시 실행된다.
④ 기타
본 예에서는 카운트값은 0, 1, 2, …의 상태로, "0"부터 시작하여, 블록 내에서의 데이터 갱신 횟수에 따라 "1"씩 증가하지만, 본 발명의 예는 이러한 세는 방법에 한정되는 것이 아니다.
예를 들면, 실시예 1과 마찬가지로 초기값은 "0" 이외의 수치, 예를 들면 "2", 혹은 이진수에서는 "10"일 수도 있다. 증가분은 "1" 이외의 수치, 예를 들면 "2"일 수도 있다. 이 경우, 블록 내의 데이터 기입/소거 횟수의 허용치도, 당연히 변한다.
본 예에서는 카운트값은 "32"보다 커지지 않기 때문에, 메모리 셀 어레이의 용장 영역으로서는 "32"까지 카운트할 수 있을 만큼의 비트 수를 확보해 두면 충분하다. 즉, 메모리 셀 어레이의 용장 영역 중의 5비트를 카운트값을 기억하기 위한 영역으로 사용하면 된다.
또한, 카운트값의 증가분은 등차수열이 아닐 수도 있다. 실시예 1에서 설명한 바와 같이, 예를 들면 메모리 셀 어레이의 용장 영역 중, 4바이트, 즉 32비트분을 카운트값을 기억하는 영역으로 사용하고, 데이터 기입/소거 횟수에 대해서는 이들 32비트 중, "1" 상태에 있는 비트의 수에 의해 판단해도 된다. 또한, 예를 들면 데이터 기입/소거 횟수에 대해서는 이들 32비트중 "1" 상태에 있는 비트의 위치에 의해 판단해도 된다.
또한, 카운트값은 데이터 갱신 횟수에 따라 증가시키는 것이 아니라, 감소시키도록 해도 된다. 예를 들면, 카운트값의 초기값을 "32"로 설정하고, 데이터 갱신 횟수에 따라, 이 수를 1씩 줄여 가도 된다.
(3) 실시예 3
① 카운트 방법
도 9는 본 발명의 실시예 3에 따른 카운트 방법을 나타내고 있다.
상술한 실시예 1 및 실시예 2에서는 최악의 조건을 가정하여, 블록 내에서의 데이터 기입/소거 횟수의 합계값이 허용치, 예를 들면 32회에 도달할 때, 리프레시 동작을 실행하는 방법을 채용하였다. 이 경우, 블록 내에서의 데이터 기입/소거 횟수의 합계값이 허용치에 도달하면, 각 페이지에 있어서의 데이터 기입/소거 횟수에 관계없이 항상 리프레시 동작이 행해진다.
이에 반해, 이것은 리프레시 동작을 행할 필요가 없다는 것을 의미하고, 이러한 경우에, 블록 내의 각 페이지가 짧은 주기(32회 미만)로 데이터 기입/소거의 대상이 된다. 이러한 경우에도, 블록 내의 데이터 기입/소거 횟수가 허용치에 도달하면, 리프레시 동작이 필연적으로 행해진다. 즉, 불필요한 리프레시 동작이 행해질 가능성이 있다.
실시예 3에서는, 불필요한 리프레시 동작을 완전하게 제거하기 위한 방법을 제안한다.
카운트 방법에 관해서는 실시예 3은 실시예 2와 동일하다. 즉, 데이터 기입/소거의 대상이 된 페이지의 카운트값은, 그 페이지에 대한 데이터 기입/소거 횟수가 아니라, 그 페이지를 포함하는 블록 내에서의 데이터 기입/소거 횟수의 합계값으로 설정된다.
그러나, 실시예 3에서는 리프레시의 발생 조건이 실시예 2와 서로 다르다.
실시예 2에서는 컨트롤러는 데이터 기입/소거할 때마다, 블록 내의 각 페이지의 카운트값 중에서 최대값 Nmax인 것을 선택하여, 그 최대값 Nmax가 허용치, 예를 들면 32회에 도달해 있는지를 판단하였다. 이에 반해, 실시예 3에서는 컨트롤러는 데이터 기입/소거할 때마다, 블록 내의 각 페이지의 카운트값 중에서 최대값 Nmax와 최소값 Nmin을 선택하여, 그 최대값 Nmax와 최소값 Nmin과의 차가 허용치, 예를 들면 32회에 도달해 있는지를 판단한다.
여기서, 카운트값이 최대값 Nmax이라고 하는 것은, 그 카운트값에 대응하는페이지의 데이터 갱신이 현재에 대하여 가장 가까운 시기에 행해진 것을 의미한다. 또한, 카운트값이 최소값 Nmin이라고 하는 것은, 그 카운트값에 대응하는 페이지의 데이터 갱신이 현재에 대하여 가장 먼 시기에 행해진 것을 의미한다.
또한, 최대값 Nmax와 최소값 Nmin과의 차는 카운트값이 최소값 Nmin인 페이지의 데이터 갱신이 마지막으로 행해진 후의 블록 내의 데이터 기입/소거 횟수를 의미한다. 즉, 카운트값이 최소값 Nmin인 페이지 내의 메모리 셀은 그 페이지의 데이터 갱신이 마지막으로 행해진 후, 최대값 Nmax와 최소값 Nmin과의 차에 상당하는 횟수의 전압 스트레스를 받은 것으로 된다.
이와 같이 실시예 3에서는 블록 내의 각 페이지의 카운트값 중 최대값 Nmax와 최소값 Nmin을 추출하여, 그 차분으로, 리프레시 동작의 필요성을 판단하고 있다.
실시예 3의 이점은 최대값 Nmax와 최소값 Nmin의 차분이 허용치 미만이면, 리프레시 동작을 실행하지 않고, 데이터 기입/소거 동작을 계속해서 행할 수 있다는 점에 있다. 즉, 실시예 3은 불필요한 리프레시 동작을 생략함으로써, 실시예 1 및 실시예 2에 비하여, 리프레시 동작의 횟수를 대폭 줄일 수 있다.
또, 실시예 3의 설명에서도, 물리 어드레스 0, 1, 2, 3 및 논리 어드레스 0, 1, 2, 3의 의미는 실시예 1과 동일하므로, 여기서는 그 설명을 생략한다. 또한, LA0, LA1, LA2, LA3 및 E의 의미에 대해서도, 실시예 1과 동일하므로, 여기서는 그 설명을 생략한다.
(a) 초기 상태
블록 내의 모든 물리 어드레스(페이지) 0, 1, 2, 3 내의 메모리 셀은 소거 상태에 있다.
(b) 기입
우선, 물리 어드레스 0에 데이터 LA0이 기입되고, 물리 어드레스 1에 데이터 LA1이 기입되고, 물리 어드레스 2에 데이터 LA2가 기입되고, 물리 어드레스 3에 데이터 LA3이 기입된다.
물리 어드레스 0에 대한 데이터 LA0의 기입 시에는, 물리 어드레스 0의 카운트값, 즉 데이터 기입/소거 횟수로서, "1"이 기입된다. 또한, 물리 어드레스 1에 대한 데이터 LA1의 기입 시에는, 블록 전체적으로 보면 2회째의 데이터 기입/소거가 수행된다. 따라서, 물리 어드레스 1의 카운트값, 즉 데이터 기입/소거 횟수로서는 "2"가 기입된다.
마찬가지로, 물리 어드레스 2에 대한 데이터 LA2의 기입 시에는, 블록 전체적으로 보면 3회째의 데이터 기입/소거가 수행된다. 따라서, 물리 어드레스 2의 카운트값, 즉 데이터 기입/소거 횟수로서는 "3"이 기입된다. 또한, 물리 어드레스 3에 대한 데이터 LA3의 기입 시에는, 블록 전체적으로 보면 4회째의 데이터 기입/소거가 수행된다. 따라서, 물리 어드레스 3의 카운트값, 즉 데이터 기입/소거 횟수로서는 "4"가 기입된다.
(c) 및 (d) 물리 어드레스 0의 데이터 기입/소거
컨트롤러(11)는, 메모리(10)에 대하여 물리 어드레스 0의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 내의 모든 물리 어드레스 0, 1, 2, 3의 카운트값이 판독된다. 도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중에서 최대값 Nmax를 선택한다. 이 시점에서는 물리 어드레스 3의 카운트값 "4"가 가장 큰 값을 갖는다. 도 4의 컨트롤러(11)는 물리 어드레스 3의 카운트값 "4"에 "1"을 가산하여, 카운트값 "5"를 데이터 기입/소거의 대상이 되는 물리 어드레스 0의 카운트값으로 사용한다. 물리 어드레스 0, 1, 2, 3의 카운트값은, 예를 들면 도 4의 컨트롤러(11) 내의 메모리(RAM 등)에 일시적으로 기억된다.
이 후, 물리 어드레스 0에 기억된 데이터 LA0 및 카운트값의 소거가 실행된다((c) 참조). 계속해서, 물리 어드레스 0에 대하여, 갱신 데이터 LA0 및 카운트값(="5")이 기입된다((d) 참조).
또한, 도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중의 최대값 Nmax와 최소값 Nmin을 추출하고, 이 최대값 Nmax와 최소값 Nmin과의 차를 계산하여, 이 차가 데이터 기입/소거 횟수의 최대값(허용치), 즉 "32"에 도달해 있는지를 판단한다.
이 시점에서는 물리 어드레스 0의 카운트값 "5"가 가장 크고, 물리 어드레스 1의 카운트값 "2"가 가장 작다. 따라서, 최대값 Nmax-최소값 Nmin은 "3"이고, 이 수치는 "32"보다 작다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(e) 및 (f) 물리 어드레스 2의 데이터 기입/소거
컨트롤러(11)는, 메모리(10)에 대하여 물리 어드레스 2의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 내의 모든 물리 어드레스 0, 1, 2, 3의 카운트값이 판독된다. 도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중에서 최대값 Nmax를 선택한다. 이 시점에서는 물리 어드레스 0의 카운트값 "5"가 가장 큰 값을 갖는다. 도 4의 컨트롤러(11)는 물리 어드레스 0의 카운트값 "5"에 "1"을 가산하여, 카운트값 "6"을 데이터 기입/소거의 대상이 되는 물리 어드레스 2의 카운트값으로 사용한다. 물리 어드레스 0, 1, 2, 3의 카운트값은, 예를 들면 도 4의 컨트롤러(11) 내의 메모리(RAM 등)에 일시적으로 기억된다.
이 후, 물리 어드레스 2에 기억된 데이터 LA2 및 카운트값의 소거가 실행된다((e) 참조). 계속해서, 물리 어드레스 2에 대하여, 갱신 데이터 LA2 및 카운트값(="6")이 기입된다((f) 참조).
또한, 도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중의 최대값 Nmax와 최소값 Nmin을 추출한다. 계속해서, 컨트롤러(11)는 이 최대값 Nmax와 최소값 Nmin과의 차를 계산하고, 이 차가 데이터 기입/소거 횟수의 최대값(허용치), 즉 "32"에 도달해 있는지를 판단한다.
이 시점에서는 물리 어드레스 2의 카운트값 "6"이 가장 크고, 물리 어드레스 1의 카운트값 "2"가 가장 작다. 따라서, 최대값 Nmax-최소값 Nmin은 "4"이고, 이 수치는 "32"보다 작다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(g) 리프레시
데이터 갱신 요구에 따라, 상술한 (c) 및 (d)의 동작 또는 (e) 및 (f)의 동작과 마찬가지의 동작이 실행되어, 최종적으로 물리 어드레스 0, 1, 2, 3의 카운트값이 (g)와 같이 된 것으로 한다.
도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값으로부터 최대값 Nmax와 최소값 Nmin을 추출한다. 최대값 Nmax는 물리 어드레스 0의 카운트값으로, 그 값은 "65"이다. 또한, 최소값 Nmin은 물리 어드레스 3의 카운트값으로, 그 값은 "33"이다. 최대값 Nmax와 최소값 Nmin과의 차는 "32"가 된다.
즉, 물리 어드레스 3의 데이터가 마지막으로 갱신된 후, 물리 어드레스 3은 32(=65-33)회의 데이터 기입/소거에 의한 전압 스트레스를 받게 된다. 따라서, 도 4의 컨트롤러(11)는 이 사실을 확인하면, 리프레시 동작을 행하는 명령을 도 4의 메모리(10)에 제공한다.
본 예에서는 블록 내의 각 물리 어드레스 0, 1, 2, 3의 카운트값의 최대값 Nmax와 최소값 Nmin의 차에 기초하여, 리프레시 동작의 필요성을 판단하고 있다. 이 때문에, 그 차가 허용치 미만이면, 리프레시 동작을 행할 필요가 없다. 경우에 따라서는 리프레시 동작을 전혀 행하지 않고, 데이터 기입/소거 동작을 계속해서 행할 수 있다.
또한, 본 예에서는 카운트값의 최대값 Nmax와 최소값 Nmin의 차에 기초하여 리프레시 동작의 필요성을 판단하고 있기 때문에, 실시예 1, 2와 같이 리프레시의 조건이 메모리의 초기 상태에 의존하지 않는다. 또한, 본 예에서는 실시예 1, 2와 같이 최악의 경우를 상정하여, 리프레시의 조건을 설정하지 않아도 된다.
리프레시 동작에서는 데이터 영역에 기억되는 데이터에 대해서는 기입/소거에 의해 리프레시되지만, 용장 영역의 카운트값에 대해서는 리프레시 동작 시에, 예를 들면 (b)의 상태로 초기화된다. 즉, 리프레시에 있어서의 기입 동작에서는 물리 어드레스 0, 1, 2, 3에 대응하는 용장 영역에, 각각 카운트값 "1" "2" "3" "4"가 기입된다.
또, 본 예에서는 상술한 리프레시 조건(Nmax-Nmin≥32)을 만족하였을 때에, 카운트값이 최소값 Nmin인 물리 어드레스에 대해서만, 리프레시를 행하도록 해도 된다. 이 경우, 리프레시 동작 후에는 리프레시의 대상이 된 물리 어드레스의 카운트값만을 갱신하고, 다른 카운트값을 초기화하지 않고, 그대로 계속해서 카운트한다.
예를 들면, 도 9의 예의 경우에는, (g)에서, 물리 어드레스 LA3에 대해서만 리프레시를 행한다. 이 리프레시 동작에 의해, 물리 어드레스 LA3의 카운트값을 "66"(=65+1)으로 설정해도 된다. 물리 어드레스 LA0, LA1, LA2의 데이터는 리프레시되지 않기 때문에, 그 카운트값에 대해서는 현상을 유지시킨다.
② 리프레시 동작의 방법
리프레시 동작은 메모리 셀의 데이터가 전압 스트레스에 의한 임계값 변동에 의해 파괴되기 전에, 그 메모리 셀의 데이터를 리프레시한다고 하는 목적을 달성할 수 있으면, 어떠한 방법을 이용해도 된다. 예를 들면, 리프레시 동작의 방법으로서는 실시예 1에서 설명한 예 1 및 예 2를 그대로 사용할 수 있으므로, 그 상세한 설명에 대해서는 생략한다.
또한, 본 예에서는 상술한 바와 같이 리프레시 동작은 블록 내의 모든 물리 어드레스에 대해서 행해질 수도 있다. 또한 블록 내의 물리 어드레스 중, 카운트값이 최소값 Nmin인 물리 어드레스에 대해서만 행해질 수도 있다.
③ 리프레시 동작의 타이밍
리프레시 동작을 실시하는 타이밍은 특별히 한정되지 않는다.
예를 들면, 허용치가 "32"인 경우, 블록 내의 물리 어드레스의 카운트값의 최대값 Nmax와 최소값 Nmin과의 차가 "32"에 도달하였으면, 데이터 기입/소거 동작을 끝낸 후, 즉시 리프레시 동작을 실행해도 된다. 또한, 데이터 기입/소거 동작을 끝낸 후의 적당한 시기, 예를 들면 호스트로부터의 액세스가 끊어진 후에, 리프레시 동작을 실행해도 된다.
제2 실시 형태에 기초한 실시예인 경우에는, 최대값 Nmax와 최소값 Nmin과의 차가 "32"에 도달하였을 때의 데이터 기입/소거 동작을 리프레시 동작 중에서 행하고 있다. 이 때문에, 리프레시 동작은 블록 내의 물리 어드레스의 카운트값의 최대값 Nmax와 최소값 Nmin과의 차가 "32"에 도달하면, 즉시 실행된다.
④ 기타
본 예에서는 카운트값은 0, 1, 2, …의 상태로, "0"부터 시작하여, 블록 내에서의 데이터 기입/소거 횟수에 따라 "1"씩 증가하지만, 본 발명의 예는 이러한 카운팅 방법에 한정되는 것이 아니다.
예를 들면, 실시예 1과 마찬가지로 초기값은 "0" 이외의 수치, 예를 들면 "2"이어도 되고, 증가분은 "1"이 아니라 다른 수치, 예를 들면 "2"이어도 된다.
본 예에서는 최대값 Nmax-최소값 Nmin이 리프레시 조건을 만족하지 않으면, 카운트값은 한도없이 증가해 간다. 그러나, 카운트값을 기억하기 위한 용장 영역의 비트 수에는 제한이 있다.
따라서, 예를 들면 카운트값이 그것을 기억하기 위한 용장 영역의 비트 수에 의해 결정되는 상한치에 도달하였을 때에는 상술한 리프레시 조건에 관계없이 블록 내의 모든 물리 어드레스에 대하여 리프레시를 행하고, 또한 모든 물리 어드레스의 카운트값을 초기화해도 된다.
카운트값의 증가분은 등차수열이 아닐 수도 있다. 실시예 1에서 설명한 바와 같이, 예를 들면 메모리 셀 어레이의 용장 영역 중, 4바이트, 즉 32비트분을, 카운트값을 기억하는 영역으로 사용하고, 데이터 기입/소거 횟수에 대해서는 이들 32비트 중, "1" 상태에 있는 비트의 수에 의해 판단해도 된다. 또한, 예를 들면 데이터 기입/소거 횟수에 대해서는 이들 32비트 중, "1" 상태에 있는 비트의 위치에 의해 판단해도 된다.
또한, 카운트값은, 데이터 갱신 횟수에 따라 증가시키는 대신에, 감소시키도록 해도 된다. 예를 들면, 카운트값의 초기값을 카운트값을 기억하기 위한 용장 영역의 비트 수에 의해 결정되는 상한치로 설정하고, 데이터 갱신 횟수에 따라, 이 수를 1씩 줄여가도 된다.
7. 제3 실시 형태
이하, 제3 실시 형태에 대하여 설명한다.
제3 실시 형태는 데이터 갱신 중에 전원의 차단(메모리 카드로 말하면, 본체로부터의 불의의 추출 등을 포함함)에 대응할 수 있는 시스템에 관한 것이다.
데이터 갱신(데이터 기입/소거)의 방법으로서는, 제1, 제2 실시 형태에 따른 실시예 1, 2, 3에서 설명한 바와 같이, 예를 들면 a. 플래시 메모리의 블록 내의 모든 물리 어드레스의 카운트값을 컨트롤러 내의 휘발성 메모리(RAM 등)에 전송하고, 이 후, b. 데이터 갱신의 대상이 되는 물리 어드레스의 오래된 데이터 및 오래된 카운트값을 소거하고, 이 후, c. 새로운 데이터를 데이터 갱신의 대상이 되는 물리 어드레스에, 새로운 카운트값을 용장 영역에, 각각 기입/소거하는 방법이 채용된다.
이 경우, b.의 단계로부터 c.의 단계까지의 사이에 전원이 차단되면, 데이터 갱신의 대상이 되는 물리 어드레스에 관해서는, 오래된 데이터, 새로운 데이터, 오래된 카운트값 및 새로운 카운트값의 전부가 소실된다.
후술하지만, 본 발명의 예는 퍼스널 컴퓨터의 파일 갱신에 적용되는 경우, 비교적 작은 용량으로, 또한 고빈도로 데이터 갱신이 행해지는 FAT(File Allocation Table) 정보의 갱신에 대하여 유효하게 되는 것으로 생각된다. 그러나, 본 발명의 예를 적용함으로써, 전원의 차단에 기인하여 데이터를 잃게 되면, 퍼스널 컴퓨터 등의 시스템은 치명적인 손상을 받게 된다.
제3 실시 형태는 이러한 전원의 차단에도 대응할 수 있도록, 제1 실시 형태를 개량한 개량예이다.
이하의 제3 실시 형태는, 주로 데이터 갱신 방법에 대한 설명이 되지만, 리프레시 방법에 적용할 수도 있다. 즉, 제3 실시 형태에 따르면, 마찬가지의 원리에 의해, 리프레시 동작 시의 전원의 차단에 대응할 수 있다.
리프레시 동작의 정의나 의미 등에 대해서는 제1 실시 형태와 동일하므로, 여기서는 그 설명을 생략한다.
도 4는 본 발명의 제3 실시 형태에 따른 시스템을 나타내고 있다. 도 10은 본 발명의 제3 실시 형태에 따른 시스템의 동작의 주요부를 나타내고 있다.
메모리(10) 및 컨트롤러(11)에 대해서는, 이미 상술한 제1 실시 형태에서 설명하였으므로, 여기서는 그 설명을 생략한다.
제3 실시 형태에서는 전제 조건으로서, 2개의 메모리 영역(불휘발)을 쌍으로 사용한다. 각각의 메모리 영역은 1개 이상의 페이지를 갖는다. 또한, 2개의 메모리 영역은 동일한 수의 페이지를 갖는다.
2개의 메모리 영역은, 메모리(10)의 1개의 블록 내에 배치되어 있어도 된다. 또한, 2개의 메모리 영역은 각각 메모리(10)가 다른 블록 내에 배치되어 있어도 된다. 또한, 2개의 메모리 영역은 각각 다른 메모리 내에 배치되어 있어도 된다.
우선, 메모리(10)는 컨트롤러(11)로부터의 기입/소거 신호를 받으면, 데이터 기입/소거를 행하는 페이지를 포함하는 2개의 메모리 영역 내의 전체 페이지의 데이터 및 카운트값의 판독을 실행한다(단계 ST1 및 ST2).
컨트롤러(11)는 데이터 기입/소거를 실행하는 페이지에 대하여, 카운트값의 갱신을 행한다. 여기서, 제3 실시 형태가 제1 실시 형태와 다른 점은, 이 후, 즉시 데이터 기입을 실행하고, 그 후에, 데이터 소거를 실행하는 점에 있다(단계 ST3 및 ST4).
1개의 메모리 영역 내의 페이지에 대하여 데이터 기입/소거를 실행하는 경우, 데이터 기입은 그 1개의 메모리 영역과 쌍으로 되어 있는 다른 1개의 메모리 영역 내의 페이지에 대하여 실행된다. 데이터 기입에서는 새로운 데이터가 데이터 영역에 기억됨과 함께, 새로운 카운트값이 용장 영역에 기억된다.
데이터 기입 후에, 데이터 소거가 행해진다.
데이터 소거는 1개의 메모리 영역 내의 페이지에 대하여 실행된다. 데이터 소거는 페이지 단위로 소거를 실행하는 페이지 소거이어도 되고, 블록 단위 또는 칩 단위로 소거를 실행하는 블록 소거 또는 칩 소거이어도 된다.
다음으로, 컨트롤러(11)는 2개의 메모리 영역 내의 각 페이지의 카운트값에 기초하여, 데이터 기입/소거 횟수가 최대값(허용치)에 도달하였는지를 판단한다(단계 ST5).
데이터 기입/소거 횟수가 최대값(허용치)에 도달해 있지 않는 경우에는, 본 발명에 따른 동작으로서는, 특별히 아무것도 행하지 않는다. 즉, 메모리(10)는 컨트롤러(11)의 컨트롤 하에서, 통상의 동작을 행한다.
데이터 기입/소거 횟수가 최대값(허용치)에 도달한 경우에, 컨트롤러(11)는, 메모리(10)에 대하여 리프레시 동작을 행하는 명령을 한다. 리프레시 동작을 행하면, 원칙적으로 2개의 메모리 영역 내의 각 페이지의 데이터 기입/소거 횟수(카운트값)를 초기화한다. 또한, 카운트 방법에 따라서는 데이터 기입/소거 횟수를 초기화하지 않아도 되는 경우가 있다(단계 ST6).
이와 같이 제3 실시 형태에서는 2개의 메모리 영역을 쌍으로 사용한다. 항상 새로운 데이터 및 새로운 카운트값을 2개의 메모리 영역 중 한쪽에 기입한 후에, 2개의 메모리 영역 중 다른 한 쪽에 기억된 오래된 데이터 및 오래된 카운트값을 소거하도록 하고 있다. 이 때문에, 데이터 기입/소거 동작이 가장 활발할 때에, 전원의 차단이 발생해도, 적어도 2개의 메모리 영역 중 어느 한쪽에는 데이터 및 카운트값이 보존되어 있으므로, 시스템에 있어서의 치명적인 손상을 받지 않는다.
8. 제4 실시 형태
이하, 제4 실시 형태에 대하여 설명한다. 본 실시 형태는 제3 실시 형태의 변형예이다. 리프레시 동작의 정의나 의미 등에 대해서는 제1 실시 형태와 동일하므로, 여기서는 그 설명을 생략한다.
제3 실시 형태에서는 데이터 기입/소거 횟수가 소정의 조건을 만족하였을 때에 리프레시 동작을 행하였다. 이에 대하여, 제4 실시 형태에서는 카운트값이 허용치에 도달하는 최후의 데이터 기입/소거 동작에 대해서는, 리프레시 동작 중에서 행하도록 한다.
제3 실시 형태에서는 전원의 불의의 차단에 의한 데이터 소실을 방지하기 위해서, 2개의 메모리 영역(불휘발)을 쌍으로 사용한다. 데이터 갱신 동작에서는 기입 동작을 행한 후에 소거 동작을 행하도록 하고 있다. 그러나, 리프레시 동작은 2개의 메모리 영역에 대하여, 동시에 행하게 된다.
따라서, 제4 실시 형태에서는 카운트값이 허용치에 도달하는 최후의 데이터 갱신 동작에 대해서는, 예를 들면 제2 실시 형태와 마찬가지의 방법에 의해, 리프레시 동작(데이터 기입/소거 동작을 포함함)을 실행한다.
또한, 미사용의 메모리 영역(불휘발성)이 존재하면, 리프레시 시에, 그 미사용의 메모리 영역에, 새로운 데이터 및 새로운 카운트값을 기입한 후, 2개의 메모리 영역의 데이터 및 카운트값을 소거해도 된다.
도 4는 본 발명의 제4 실시 형태에 따른 시스템을 나타내고 있다. 도 11은 본 발명의 제4 실시 형태에 따른 시스템의 동작의 주요부를 나타내고 있다.
메모리(10) 및 컨트롤러(11)에 대해서는, 이미 상술한 제1 실시 형태에서 설명하였으므로, 여기서는 그 설명을 생략한다.
우선, 메모리(10)는 컨트롤러(11)로부터의 기입/소거 신호를 받으면, 데이터 기입/소거를 행하는 페이지를 포함하는 선택된 블록 내의 전체 페이지의 데이터 및 카운트값의 판독을 실행한다(단계 ST1 및 ST2). 컨트롤러(11)는 선택된 블록 내의 전체 페이지 중, 데이터 기입/소거를 실행하는 페이지에 대하여, 데이터 기입/소거 횟수의 갱신을 행한다(단계 ST2).
다음으로, 컨트롤러(11)는 선택된 블록 내의 각 페이지의 카운트값에 기초하여, 데이터 기입/소거 횟수가 최대값(허용치)에 도달하였는지를 판단한다(단계 ST3).
데이터 기입/소거 횟수가 최대값(허용치)에 도달해 있지 않는 경우에는, 데이터 기입 및 데이터 소거를 실행한다(단계 ST4 및 ST5).
1개의 메모리 영역 내의 페이지에 대하여 데이터 기입/소거를 실행하는 경우, 데이터 기입은 그 1개의 메모리 영역과 쌍으로 되어 있는 다른 1개의 메모리영역 내의 페이지에 대하여 실행된다. 데이터 기입에서는 새로운 데이터가 데이터 영역에 기억됨과 함께, 새로운 카운트값이 용장 영역에 기억된다.
데이터 기입의 후에, 데이터 소거가 행해진다.
데이터 소거는 1개의 메모리 영역 내의 페이지에 대하여 실행된다. 데이터 소거는 페이지 단위로 소거를 실행하는 페이지 소거이어도 되고, 블록 단위 또는 칩 단위로 소거를 실행하는 블록 소거 또는 칩 소거이어도 된다.
데이터 기입/소거 횟수가 최대값(허용치)에 도달한 경우에, 컨트롤러(11)는, 메모리(10)에 대하여 리프레시 동작을 행하는 명령을 한다(단계 ST6). 따라서, 쌍으로 되어 있는 2개의 메모리 영역 내의 데이터가 리프레시됨과 함께, 데이터 기입/소거의 대상이 되는 페이지에 대해서는 데이터 기입/소거가 실행된다.
리프레시 동작을 행하면, 원칙적으로 2개의 메모리 영역 내의 각 페이지의 데이터 기입/소거 횟수(카운트값)를 초기화한다. 또한, 카운트 방법에 따라서는 데이터 기입/소거 횟수를 초기화하지 않아도 되는 경우가 있다.
9. 제3, 제4 실시 형태에 따른 실시예
이하, 제3, 제4 실시 형태에 따른 실시예에 대하여 설명한다.
(1) 실시예 1
① 데이터 갱신 방법
도 12는 본 발명의 실시예 1에 따른 데이터 갱신 방법을 나타내고 있다.
또, 본 예에서는 카운트 방법으로서, 제1, 제2 실시 형태에 따른 실시예 2의 방법이 적용된다.
본 예에서는 1개의 블록은 4개의 물리 어드레스를 갖고 있지만, 그 1개의 블록 내에는, 그 절반, 즉 2개의 물리 어드레스(2페이지)분의 데이터만을 저장한다. 이 점에서, 본 예는 1개의 블록 내의 4개의 물리 어드레스에, 4개의 물리 어드레스(4 페이지)분의 데이터를 저장하는 제1, 제2 실시 형태에 따른 실시예 1, 2, 3과는 다르다.
물리 어드레스 0, 1이 1개의 메모리 영역을 구성하고, 물리 어드레스 2, 3이 다른 1개의 메모리 영역을 구성한다. 이들 2개의 메모리 영역은 데이터 갱신 동작에 관하여, 쌍을 구성한다.
(a) 초기 상태
블록 내의 모든 물리 어드레스(페이지) 0, 1, 2, 3 내의 메모리 셀은 소거 상태에 있다.
(b) 기입
우선, 물리 어드레스 0에 데이터 LA0이 기입되고, 물리 어드레스 1에 데이터 LA1이 기입된다. 물리 어드레스 0에 대한 데이터 LA0의 기입 시에는, 물리 어드레스 0의 카운트값, 즉 데이터 기입/소거 횟수로서, "1"이 기입된다. 또한, 물리 어드레스 1에 대한 데이터 LA1의 기입 시에는, 블록 전체적으로 보면 2회째의 데이터 기입/소거이다. 따라서, 물리 어드레스 1의 카운트값, 즉 데이터 기입/소거 횟수로서는 "2"가 기입된다.
(b) 및 (c) 물리 어드레스 0의 데이터 기입/소거
컨트롤러(11)는, 메모리(10)에 대하여 물리 어드레스 0의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 내의 모든 물리 어드레스 0, 1, 2, 3의 카운트값이 판독된다. 도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중에서 최대값 Nmax를 선택한다. 또, E(소거 상태)로 나타내는 카운트값은 "0"에 상당한다. 이 시점에서는 물리 어드레스 1의 카운트값 "2"가 가장 큰 값을 갖는다. 도 4의 컨트롤러(11)는 물리 어드레스 1의 카운트값 "2"에 "1"을 가산하여, 카운트값 "3"을 물리 어드레스 2의 카운트값으로 한다. 물리 어드레스 0, 1, 2, 3의 카운트값은, 예를 들면 도 4의 컨트롤러(11) 내의 메모리(RAM 등)에 일시적으로 기억된다.
이 후, 물리 어드레스 2에 대하여, 데이터 LA0 및 카운트값(="3")이 기입된다((c) 참조). 이 후, 물리 어드레스 0에 기억된 데이터 LA0 및 카운트값의 소거가 실행된다((c) 참조). 이와 같이 갱신 데이터 LA0 및 카운트값을 기입한 후, 오래된 데이터 LA0 및 카운트값을 소거한다. 이에 따라, 불의의 전원 차단에도 충분히 대응할 수 있다.
또한, 도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중의 최대값 Nmax가, 허용치, "32"에 도달해 있는지를 판단한다. 이 시점에서는 물리 어드레스 2의 카운트값 "3"이 가장 크지만, 그 값은 허용치, "32"에 도달해 있지 않다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(c) 및 (d) 물리 어드레스 1의 데이터 기입/소거
컨트롤러(11)는 메모리(10)에 대하여 물리 어드레스 1의 데이터 갱신 요구를출력한다(도 4 참조).
우선, 블록 내의 모든 물리 어드레스 0, 1, 2, 3의 카운트값이 판독된다. 도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중에서 최대값 Nmax를 선택한다. 이 시점에서는 물리 어드레스 2의 카운트값 "3"이 가장 큰 값을 갖는다. 도 4의 컨트롤러(11)는 물리 어드레스 2의 카운트값 "3"에 "1"을 가산하여, 카운트값 "4"를 물리 어드레스 3의 카운트값으로 한다. 물리 어드레스 0, 1, 2, 3의 카운트값은, 예를 들면 도 4의 컨트롤러(11) 내의 메모리(RAM 등)에 일시적으로 기억된다.
이 후, 물리 어드레스 3에 대하여, 데이터 LA1 및 카운트값(="4")이 기입된다((d) 참조). 다음으로, 물리 어드레스 1에 기억된 데이터 LA1 및 카운트값의 소거가 실행된다((d) 참조).
또한, 도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중의 최대값 Nmax가 허용치인 "32"에 도달해 있는지를 판단한다. 이 시점에서는 물리 어드레스 3의 카운트값 "4"가 가장 크지만, 그 값은 허용치인 "32"에 도달해 있지 않다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(d) 및 (e) 물리 어드레스 2의 데이터 기입/소거
컨트롤러(11)는 메모리(10)에 대하여 물리 어드레스 0의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 내의 모든 물리 어드레스 0, 1, 2, 3의 카운트값이 판독된다.도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중에서 최대값 Nmax를 선택한다. 이 시점에서는 물리 어드레스 3의 카운트값 "4"가 가장 큰 값을 갖는다. 도 4의 컨트롤러(11)는 물리 어드레스 3의 카운트값 "4"에 "1"을 가산하여, 카운트값 "5"를 물리 어드레스 0의 카운트값으로 한다. 물리 어드레스 0, 1, 2, 3의 카운트값은, 예를 들면 도 4의 컨트롤러(11) 내의 메모리(RAM 등)에 일시적으로 기억된다.
이 후, 물리 어드레스 0에 대하여 데이터 LA0 및 카운트값(="5")이 기입된다((e) 참조). 그리고, 이 후 물리 어드레스 2에 기억된 데이터 LA0 및 카운트값의 소거가 실행된다((e) 참조).
또한, 도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중의 최대값 Nmax가, 허용치인 "32"에 도달해 있는지를 판단한다. 이 시점에서는 물리 어드레스 0의 카운트값 "5"가 가장 크지만, 그 값은 허용치인 "32"에 도달해 있지 않다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(e) 및 (f) 물리 어드레스 3의 데이터 기입/소거
컨트롤러(11)는 메모리(10)에 대하여 물리 어드레스 3의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 내의 모든 물리 어드레스 0, 1, 2, 3의 카운트값이 판독된다. 도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중에서 최대값 Nmax를 선택한다. 이 시점에서는 물리 어드레스 0의 카운트값 "5"가 가장 큰 값을 갖는다. 도 4의 컨트롤러(11)는 물리 어드레스 0의 카운트값 "5"에 "1"을 가산하여, 카운트값 "6"을 물리 어드레스 1의 카운트값으로 한다. 물리 어드레스 0, 1, 2, 3의 카운트값은, 예를 들면 도 4의 컨트롤러(11) 내의 메모리(RAM 등)에 일시적으로 기억된다.
이 후, 물리 어드레스 1에 대하여, 갱신 데이터 LA1 및 카운트값(="6")이 기입된다((f) 참조). 그리고, 이 후 물리 어드레스 3에 기억된 데이터 LA1 및 카운트값의 소거가 실행된다((f) 참조).
또한, 도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값 중의 최대값 Nmax가, 허용치인 "32"에 도달해 있는지를 판단한다. 이 시점에서는 물리 어드레스 1의 카운트값 "6"이 가장 크지만, 그 값은 허용치인 "32"에 도달해 있지 않다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(g) 리프레시
데이터 갱신 요구에 따라, 상술한 동작이 반복적으로 실행되어, 최종적으로 물리 어드레스 0, 1, 2, 3의 카운트값이 (g)에 도시한 바와 같이 된 것으로 가정한다.
도 4의 컨트롤러(11)는 물리 어드레스 0, 1, 2, 3의 카운트값의 최대값 Nmax가 "32"인 것을 확인하면, 리프레시 동작을 행하는 명령을 도 4의 메모리(10)에게 제공한다.
또, 리프레시 동작에 대해서는, 제1, 제2 실시 형태에 따른 실시예 1, 2, 3과 동일한 방법을 채용할 수 있다. 추가적으로, 본 예에서는 상술한 데이터 갱신 방법을 리프레시 방법에도 적용할 수 있다.
예를 들면, 물리 어드레스 0, 1, 2, 3의 카운트값이 (g)에 도시한 바와 같은 상태에 있는 것으로 한다. 우선, 컨트롤러(11)는 블록 내의 물리 어드레스 0, 1의 데이터 및 카운트값을 판독한다.
이 후, 물리 어드레스 2에 대하여, 데이터 LA0 및 카운트값(="1")을 기입하고, 물리 어드레스 3에 대하여, 데이터 LA1 및 카운트값(="2")을 기입한다. 그리고, 이 후 물리 어드레스 0, 1에 기억된 데이터 LA0, LA1 및 카운트값을 소거한다.
이상 설명한 대로, 리프레시 동작은 종료한다.
이와 같이, 실시예 1에서는, 항상 새로운 데이터를 플래시 메모리에 기입하고 나서 오래된 데이터를 소거하고 있다. 따라서, 새로운 데이터를 플래시 메모리에 기입하고 있는 단계에서 전원의 차단 등이 발생하였다고 해도, 최소한 데이터 갱신 직전의 상태는 보존되어 있기 때문에 시스템에 있어서의 치명적인 손상은 회피할 수 있다.
실시예 1은 블록 용량에 비하여, 충분히 적은 용량의 논리 데이터의 기입/소거를 행하는 경우에 유효하다. 이러한 경우에, 1개의 블록 내에, 본 실시예에서의 쌍을 구성하는 두개의 메모리 영역을 배치할 수 있다.
② 리프레시 동작의 방법
상술된 바와 같이 리프레시 동작의 방법으로서는, 제1, 제2 실시 형태에 따른 카운트 동작의 예들인 1, 2가 그대로 사용할 수 있다. 또한, 본 실시예에서의데이터 갱신 방법을 적용할 수 있다.
③ 리프레시 동작의 타이밍
리프레시 동작을 실시하는 타이밍은, 특별히 한정되지 않는다.
예를 들면, 허용치가 "32"인 경우, 블록 내의 물리 어드레스의 카운트값의 최대값 Nmax가 32회에 도달하고, 또한 32회째의 기입/소거 동작을 끝내었으면, 즉시 리프레시 동작을 실행해도 된다. 더나아가, 32회째의 기입/소거 동작을 끝낸 후의 적당한 시기, 예를 들면 호스트로부터의 액세스가 중단된 후에 리프레시 동작을 또한 실행해도 된다.
또, 제4 실시 형태에 기초한 실시예인 경우에는 32회째의 데이터 기입/소거동작을 리프레시 동작 중에서 행하고 있다. 이 때문에, 리프레시 동작은 블록 내의 물리 어드레스의 카운트값의 최대값 Nmax가 32회에 도달한 후, 32회째의 기입/소거 동작과 함께 즉시 실행된다.
④ 기타
본 예에서는 카운트값은 0, 1, 2, …와 같이, "0"부터 시작하여 블록 내에서의 데이터 갱신 횟수에 따라 "1"씩 증가하지만, 본 발명의 예는 이렇게 세는 방법에 한정되는 것은 아니다.
예를 들면, 제1, 제2 실시 형태에 따른 실시예 1과 마찬가지로 초기값은 "0" 이외의 수치, 예를 들면 "2"이어도 되고, 증가분은 "1"이 아니라 다른 수치, 예를 들면 "2"이어도 된다. 이 경우, 블록 내의 데이터 기입/소거 횟수의 허용치도, 당연히 변한다.
본 예에서는 카운트값은 "32"보다 커지는 것은 없기 때문에, 메모리 셀 어레이의 용장 영역으로서는 "32"까지의 수를 카운트할 수 있을 만큼의 비트 수를 확보해 두면 충분하다. 즉, 메모리 셀 어레이의 용장 영역 중의 5비트를 카운트값을 기억하기 위한 영역으로 사용하면 된다.
또한, 카운트값의 증가분은 등차수열적이 아니어도 된다. 실시예 1에서 설명한 바와 같이, 예를 들면 메모리 셀 어레이의 용장 영역 중, 4바이트, 즉 32비트분을 카운트값을 기억하는 영역으로 사용하고, 데이터 갱신 횟수에 대해서는 이들 32비트 중, "1" 상태에 있는 비트의 수에 의해 판단해도 된다. 또한, 예를 들면 데이터 갱신 횟수에 대해서는 이들 32비트 중 "1" 상태에 있는 비트의 위치에 의해 판단해도 된다.
또한, 카운트값은 데이터 갱신 횟수에 따라 증가시키는 것이 아니라, 감소시키도록 해도 된다. 예를 들면, 카운트값의 초기값을 "32"로 하여, 데이터 갱신 횟수에 따라, 이 수를 1씩 줄여 가도 된다.
(2) 실시예 2
도 13은 본 발명의 실시예 2에 따른 데이터 갱신 방법을 나타내고 있다.
본 예에서는 카운트 방법으로서는 제1, 제2 실시 형태에 따른 실시예 1의 방법을 사용한다. 그러나, 그 밖의 카운트 방법, 예를 들면 제1, 제2 실시 형태에 따른 실시예 2, 3의 방법 등을 사용할 수도 있다.
본 예에서는 서로 다른 두개의 블록 A, B를 쌍으로 사용한다. 이들 두개의 블록 A, B는 한 개의 NAND형 플래시 메모리 내에 배치되어 있어도 되고, 다른 NAND형 플래시 메모리들 내에 배치되어 있어도 된다. 각 블록 A, B는 4개의 물리 어드레스를 갖고 있다.
본 예에서는 특정한 물리 어드레스에 대하여 복수회의 데이터 기입/소거를 행하는 경우에, 2개의 블록 A, B에 대하여, 매회마다 교대로 데이터를 기입하고, 오래된 데이터에 대해서는 기입 동작의 후에 그 때마다 소거한다. 또한, 카운트값에 대해서는 홀수회 째의 기입 시에 갱신한다. 예를 들면, 블록 A 측으로부터 기입을 시작하는 경우에는 블록 A에 대한 기입 시에만 카운트값의 갱신을 행하고, 블록 B에 대한 기입 시에는 카운트값의 갱신을 행하지 않는다.
(a) 초기 상태
블록 A의 물리 어드레스 0에 데이터 LA0이 기입되고, 블록 A의 물리 어드레스 1에 데이터 LA1이 기입되어 있다. 물리 어드레스 0, 1의 카운트값, 즉 데이터 기입/소거 횟수는, 모두 "1"이다. 블록 A의 물리 어드레스 2, 3 및 그 카운트값은 소거 상태에 있으며, 블록 B의 물리 어드레스 0, 1, 2, 3 및 그 카운트값은 소거 상태에 있다.
(b)-1 물리 어드레스 0의 데이터 기입/소거
컨트롤러(11)는 메모리(10)에 대하여 물리 어드레스 0의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 A, B 내의 물리 어드레스 0의 카운트값이 판독된다. 블록 A 내의 물리 어드레스 0의 카운트값은 "1"이고, 블록 B 내의 물리 어드레스 0의 카운트값은 "0"이다. 이 때문에, 이 후, 블록 B 내의 물리 어드레스 0에 대하여, 갱신데이터 LA0 및 카운트값(="1")이 기입된다.
여기서, 블록 B에 대한 기입 시에는, 카운트값의 갱신은 행해지지 않는다. 즉, 블록 A 내의 물리 어드레스 0의 카운트값이, 그대로 블록 B 내의 물리 어드레스 0의 카운트값으로서 기입된다.
이 후, 블록 A 내의 물리 어드레스 0에 기억된 데이터 LA0 및 카운트값이 소거된다. 이와 같이 본 예에서는 갱신 데이터 LA0 및 카운트값을 기입한 후에, 오래된 데이터 LA0 및 카운트값이 소거된다. 따라서, 불의의 전원 차단에도, 충분히 대응할 수 있다.
또한, 도 4의 컨트롤러(11)는 블록 A 내의 물리 어드레스 0, 1, 2, 3의 카운트값 및 블록 B 내의 물리 어드레스 0, 1, 2, 3의 카운트값의 합계값이 허용치, "32"에 달해 있는지를 판단한다. 이 시점에서는 이들 카운트값의 합계값은 "2"이고, 허용치인 "32" 에 도달해 있지 않다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(b)-2 물리 어드레스 1의 데이터 기입/소거
컨트롤러(11)는 메모리(10)에 대하여 물리 어드레스 1의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 A, B 내의 물리 어드레스 1의 카운트값이 판독된다. 블록 A 내의 물리 어드레스 1의 카운트값은 "1"이고, 블록 B 내의 물리 어드레스 1의 카운트값은 "0"이다. 이 때문에, 이 후, 블록 B 내의 물리 어드레스 1에 대하여, 갱신 데이터 LA1 및 카운트값(="1")이 기입된다. 여기서, 블록 B에 대한 기입 시에는카운트값의 갱신은 행해지지 않는다. 이 후, 블록 A 내의 물리 어드레스 1에 기억된 데이터 LA1 및 카운트값이 소거된다.
또한, 도 4의 컨트롤러(11)는 블록 A 내의 물리 어드레스 0, 1, 2, 3의 카운트값 및 블록 B 내의 물리 어드레스 0, 1, 2, 3의 카운트값의 합계값이 허용치, "32"에 도달해 있는지를 판단한다. 이 시점에서는 이들 카운트값의 합계값은 "2"이고, 허용치인 "32"에 도달해 있지 않다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(b)-3 물리 어드레스 2의 데이터 기입/소거
컨트롤러(11)는 메모리(10)에 대하여 물리 어드레스 2의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 A, B 내의 물리 어드레스 2의 카운트값이 판독된다. 블록 A 내의 물리 어드레스 2의 카운트값은 "0"이고, 블록 B 내의 물리 어드레스 0의 카운트값도 "0"이다. 양방이 "0"인 경우에는 블록 A 내의 물리 어드레스 2에 대하여, 갱신 데이터 LA2 및 카운트값(="1")이 기입된다.
또한, 도 4의 컨트롤러(11)는 블록 A 내의 물리 어드레스 0, 1, 2, 3의 카운트값 및 블록 B 내의 물리 어드레스 0, 1, 2, 3의 카운트값의 합계값이 허용치인 "32"에 도달해 있는지를 판단한다. 이 시점에서는 이들 카운트값의 합계값은 "3"이고, 허용치인 "32"에 도달해 있지 않다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(c)-1 물리 어드레스 0의 데이터 기입/소거
컨트롤러(11)는 메모리(10)에 대하여 물리 어드레스 0의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 A, B 내의 물리 어드레스 0의 카운트값이 판독된다. 블록 A 내의 물리 어드레스 0의 카운트값은 "0"이고, 블록 B 내의 물리 어드레스 0의 카운트값은 "1"이다. 이 때문에, 이 후, 블록 A 내의 물리 어드레스 0에 대하여, 갱신 데이터 LA0 및 카운트값(="2")이 기입된다. 여기서, 블록 A에 대한 기입 시에는 카운트값의 갱신(본 예에서는 +1)이 행해진다.
이와 같이 제어하면, 카운트값은 블록 A 내의 물리 어드레스 i에 대한 기입/소거 횟수, 또는 블록 B 내의 물리 어드레스 i에 대한 기입/소거 횟수를 나타내고 있다. 즉, 데이터는 블록 A, B 중 어느 한 쪽에 기억되고, 또한 그 때의 카운트값은 블록 A, B 내의 물리 어드레스 i에 대한 데이터 기입/소거 횟수를 나타내고 있다.
이 후, 블록 B 내의 물리 어드레스 0에 기억된 데이터 LA0 및 카운트값이 소거된다.
또한, 도 4의 컨트롤러(11)는 블록 A 내의 물리 어드레스 0, 1, 2, 3의 카운트값 및 블록 B 내의 물리 어드레스 0, 1, 2, 3의 카운트값의 합계값이 허용치인 "32"에 도달해 있는지를 판단한다. 이 시점에서는 이들 카운트값의 합계값은 "4"이고, 허용치인 "32"에 도달해 있지 않다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(c)-2 물리 어드레스 2의 데이터 기입/소거
컨트롤러(11)는 메모리(10)에 대하여 물리 어드레스 2의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 A, B 내의 물리 어드레스 2의 카운트값이 판독된다. 블록 A 내의 물리 어드레스 2의 카운트값은 "1"이고, 블록 B 내의 물리 어드레스 0의 카운트값은 "0"이다. 따라서, 블록 B 내의 물리 어드레스 2에 대하여, 갱신 데이터 LA2 및 카운트값(="1")이 기입된다.
또한, 도 4의 컨트롤러(11)는 블록 A 내의 물리 어드레스 0, 1, 2, 3의 카운트값 및 블록 B 내의 물리 어드레스 0, 1, 2, 3의 카운트값의 합계값이 허용치인 "32" 에 도달해 있는지를 판단한다. 이 시점에서는 이들 카운트값의 합계값은 "4"이고, 허용치인 "32" 에 도달해 있지 않다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(d) 리프레시
데이터 갱신 요구에 따라, 상술한 동작이 반복적으로 실행되어, 최종적으로 물리 어드레스 0, 1, 2, 3의 카운트값이 (d)에 도시한 바와 같이 된 것으로 한다.
데이터 기입/소거 횟수는 다음과 같다. 블록 A에서는 물리 어드레스 0은 8회, 물리 어드레스 1은 11회, 물리 어드레스 2는 2회, 물리 어드레스 3은 11회를 표시한다. 물리 어드레스 2, 3에 대해서는 그 카운트값은 블록 B 내의 물리 어드레스 2, 3의 카운트값과 같아진다.
블록 B에서는 물리 어드레스 0은 7회, 물리 어드레스 1은 10회, 물리 어드레스 2는 2회, 물리 어드레스 3은 11회를 표시한다. 물리 어드레스 0, 1에 대해서는그 카운트값은 블록 A 내의 물리 어드레스 0, 1의 카운트값으로부터 카운트값의 증가분(본 예에서는 "1")을 뺀 값과 같아진다.
블록 A에서는 데이터 기입/소거 동작이 합계 32회 행해지기 때문에, 이 후 블록 A, B의 쌍방에 대하여 리프레시 동작이 실행된다.
예를 들면, 블록 B 내에 모든 물리 어드레스 0, 1, 2, 3의 데이터를 모은 후, 블록 A 내의 모든 물리 어드레스 0, 1, 2, 3의 데이터를 소거한다. 그 후에, 모든 물리 어드레스 0, 1, 2, 3의 데이터를 블록 B로부터 블록 A에 모은 후, 블록 B 내의 모든 물리 어드레스 0, 1, 2, 3의 데이터를 소거한다. 그 다음, 리프레시가 쉽게 실행될 수 있다.
또한, 모든 물리 어드레스 0, 1, 2, 3의 데이터를 시스템 내의 버퍼에 전송한 후, 블록 A, B 내의 모든 물리 어드레스 0, 1, 2, 3의 데이터에 대하여 소거를 실행한다. 그 후에, 모든 물리 어드레스 0, 1, 2, 3의 데이터를 시스템 내의 버퍼로부터 블록 A로 복귀시켜도 된다. 버퍼 대신에, 플래시 메모리 내의 다른 블록을 사용해도 된다.
본 예에서는, 이와 같이 2개의 블록 A, B를 쌍으로 사용하여 데이터 갱신을 계속한다. 블록 A와 블록 B는 동일한 플래시 메모리 칩 내에 존재해도 되고, 다른 플래시 메모리 칩들 내에 존재해도 된다. 시스템(예를 들면, 플래시 메모리 카드) 내에, 복수의 플래시 메모리 칩이 존재하는 경우에는 블록 A, B를 시스템 내의 다른 플래시 메모리 칩들에 할당해도 된다. 이 경우, 블록 B에 대한 기입 동작 중에 블록 A에 대한 페이지 소거를 행하는 것과 같이 시스템의 성능 향상에 기여할 수있다.
(3) 실시예 3
도 14는 본 발명의 예에 따른 데이터 갱신 방법을 나타내고 있다.
본 예에서는, 예를 들면 NAND형 플래시 메모리의 다른 블록을, 버퍼와 같이 사용한다. 여기서는 데이터 갱신을 행하는 블록을 블록 A라고 하고, 데이터 갱신 시에 일시 기억을 위한 데이터 버퍼로서 사용하는 블록을 버퍼 블록이라고 한다.
(a) 초기 상태
물리 어드레스 0에는 데이터 LA0이 저장되어 있다. 물리 어드레스 0에 대한 데이터 기입/소거 횟수, 즉 카운트값은 "0"으로 설정되어 있다.
(b) 내지 (d) 물리 어드레스 0의 데이터 기입/소거
컨트롤러(11)는 메모리(10)에 대하여 물리 어드레스 0의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 A 내의 모든 물리 어드레스 0, 1, 2, 3의 카운트값이 판독된다. 또한, 데이터 기입/소거의 대상이 되는 물리 어드레스 0의 카운트값 "1" 및 갱신 데이터 LA0이 버퍼 블록에 기입된다((b) 참조).
이 후, 블록 A 내의 물리 어드레스 0의 오래된 데이터 LA0 및 카운트값이 소거된다((c) 참조).
또한, 도 4의 컨트롤러(11)에 있어서, 물리 어드레스 0의 카운트값이 갱신된다. 예를 들면, 물리 어드레스 0의 카운트값 "1"에, 카운트값의 증가분, 본 예에서는 "1"이 가산된다. 그 결과, 물리 어드레스 0의 카운트값은 "2"가 된다. 그리고, 카운트값 "2" 및 갱신 데이터 LA0은 블록 A 내의 물리 어드레스 0에 기입된다((d) 참조).
이 후, 버퍼 블록 내의 물리 어드레스 0의 갱신 데이터 LA0 및 카운트값이 소거된다((d) 참조).
이러한 동작이 반복되어, 블록 A 내의 물리 어드레스 0, 1, 2, 3의 카운트값이 리프레시 조건을 만족하였을 때에는 리프레시 동작이 실행된다. 본 예에 따르면, 갱신 데이터 및 카운트값은, 항상 적어도, 블록 A 및 버퍼 블록 중 어느 하나에 기억되어 있다. 예를 들면, 불의의 전원 차단 등의 비상 사태가 발생해도, 시스템에 있어서의 치명적인 손상을 회피할 수 있다.
10. 그 밖의 실시예
제1, 제2 실시 형태에 따른 실시예 1, 2, 3 및 제3, 제4 실시 형태에 따른 실시예 1, 2, 3은, 주로 FAT(File Allocation Table) 정보의 갱신을 염두에 둔 것이다. 이하에서는 파일 본체의 데이터 기입/소거를 취급하는 실시예에 대하여 설명한다.
(1) 그 밖의 실시예 1
도 15는 본 발명의 그 밖의 실시예 1의 데이터 갱신 방법을 나타내고 있다.
우선, 블록의 구성예로서는 페이지 사이즈를 512바이트(용장 영역을 포함하면, 528바이트)로 하고, 블록 사이즈를 16KB(용장 영역을 제외함)로 한다. 1개의 블록은 32페이지로 구성되는 것으로 한다.
파일 데이터가 FAT 정보와 다른 점은, 다음과 같다.
① 파일 데이터의 갱신 요구가 발생하면 갱신 전의 오래된 데이터는 이미 불필요하다는 점,
② 파일 데이터는 FAT 정보에 비하여 동일한 논리 어드레스에 대한 데이터 갱신의 빈도가 현저하게 작은 점, 및
③ 만일, 전원 차단 등에 의해 갱신 데이터나 오래된 데이터가 소실되어도, 갱신 데이터가 호스트 시스템 내부에 존재하고 있는 것으로부터 시스템에 관하여 치명적인 손상이 발생하지 않는 점.
따라서, 파일 데이터의 갱신 시에는, FAT 정보의 갱신에 비하여 제한 사항이 완화되는 것이 고려된다.
제1, 제2 실시 형태에 따른 실시예 1, 2, 3 및 제3, 제4 실시 형태에 따른 실시예 1, 2, 3에서는 1개의 블록이 4페이지로 구성되고, 데이터 재기입 동작은 기본적으로 1페이지 단위로 발생하는 것을 전제로 하고 있다. 본 예는 앞에서 설명한 실시예의 1페이지를 복수 페이지로 치환하고, 또한 데이터 기입/소거 동작을 복수 페이지 통합하여 행하는 것이라고 생각할 수 있다.
본 예에서는 데이터 갱신이 8페이지 단위로 행해지는 것을 전제로 한다. 이 8페이지(물리 어드레스)는 도 15에서의 칸 1개분에 상당한다. 따라서, 도 13은 제1, 제2 실시 형태에 따른 실시예 1, 2, 3 및 제3, 제4 실시 형태에 따른 실시예 1, 2, 3에서 사용한 도면과 거의 동일하게 된다.
(a) 초기 상태
블록 내의 모든 물리 어드레스(페이지) 0∼7, 8∼15, 16∼23, 24∼31 내의메모리 셀은 소거 상태에 있다.
(b) 기입
물리 어드레스 0∼7에 데이터 LA64∼71이 기입되고, 물리 어드레스 8∼15에 데이터 LA72∼79(1섹터가 512바이트라고 하면, 8섹터분)가 기입되고, 물리 어드레스 16∼23에 데이터 LA80∼87이 기입되고, 물리 어드레스 24∼31에 데이터 LA88∼95가 기입된다.
(c) 및 (d) 물리 어드레스 8∼15의 데이터 기입/소거
컨트롤러(11)는, 메모리(10)에 대하여 물리 어드레스 8∼15의 데이터 갱신 요구를 출력한다(도 4 참조).
블록 내의 물리 어드레스 8∼15의 데이터가 소거된다. 본 예에서는 지금까지의 실시예에서 본 것과 같은, 페이지별 데이터 기입/소거 횟수의 관리를 하지 않기 때문에, 카운트값의 판독은 행해지지 않는다. 이 후, 물리 어드레스 8∼15에 대하여, 갱신 데이터 LA72∼79가 기입된다.
이상과 같이 본 예에서는 페이지별 데이터 기입/소거 횟수의 관리를 행하지 않는다. 그 효과는 다음과 같다.
예를 들면, 물리 어드레스 8∼15에 대하여, 데이터 갱신 요구가 발생한 것으로 한다. 이 경우, 종래에는 이미 상술한 바와 같이 소거 상태의 버퍼 블록을 준비하여, 데이터 갱신이 필요가 없는 물리 어드레스 0∼7, 16∼31의 데이터 LA64∼LA71, LA80∼LA95를 그 버퍼 블록에 복사하고, 이 후 데이터 기입/소거의 대상이 되는 블록에 대하여 블록 소거를 실행하는 작업을 행하고 있었다.
즉, 종래의 방법에서는 데이터 갱신 시에, 갱신의 필요가 없는 데이터 LA64∼LA71, LA80∼LA95에 대한 복사 작업이 발생하여 데이터 기입/소거 속도의 저하를 초래하였다.
이에 대하여, 본 예에 따르면, 데이터 기입/소거의 대상이 되는 물리 어드레스 8∼15만을 페이지 소거한 후 그 물리 어드레스 8∼15에 갱신 데이터 LA72∼LA79를 기입하면 된다. 따라서, 불필요한 데이터 복사 작업이 없어지고, 그 만큼 데이터 기입/소거 속도를 고속화 할 수 있다.
여기서, 페이지 소거라는 말에는 블록 내의 1페이지만을 대상으로 하는 소거 외에, 블록 내의 복수 페이지를 통합하여 소거하는 부분 소거도 포함되어 있다. 또한, 블록 내의 복수 페이지를 통합하여 소거하는 경우에는 부분 소거로 한 번에 소거해도 되고, 1페이지씩 복수회(여기서는 8회)로 나누어 페이지 소거를 행해도 된다. 또한, 이러한 경우에, 2페이지씩 복수회(여기서는 4회)로 나누어 소거해도 된다.
또한, 예를 들면 1개의 비트선을 복수의 감지 증폭기가 공유하는 다치 플래시 메모리의 경우에는, 물리적으로 페이지 소거를 실행하면 외부에서 볼 때 복수 페이지분의 데이터가 일괄적으로 소거된 것이 된다. 이러한 경우라도, 블록 내의 전체 페이지를 소거하는 대신 페이지의 일부만을 소거한다. 이러한 관점에서 보면, 본 예의 소거와 동등하다.
플래시 메모리 카드가 많이 사용되는 디지털 카메라 등의 분야에서는, 메모리 카드의 용량분만큼 촬영을 행하고, 화상을 퍼스널 컴퓨터 등의 시스템으로 전송하고, 이어서, 전체 화상 파일을 소거하는 등의 사용 방법이 많다. 이러한 경우에는 플래시 메모리에 대한 데이터 기입/소거 횟수도 한정되어 있으며, 또한 파일 본체의 영역에서의 기입/소거의 집중 현상도 발생하지 않는다.
따라서, 파일 데이터인 경우에는, 본 예와 같이, 페이지별 데이터 기입/소거횟수를 관리하지 않아도, 실용상의 문제는 발생하지 않는다. 본 예는 이러한 분야에 유효하다.
또, 파일 데이터의 갱신에 대해서도, 당연히, 제1, 제2, 제3, 제4 실시 형태에 따른 카운트 동작의 실시예 1, 2, 3에서 설명한 바와 같이 데이터 기입/소거 횟수의 관리를 행해도 된다.
이하에서는 파일 데이터의 갱신 시에, 데이터 기입/소거 횟수의 관리를 행하는 실시예에 대하여 설명한다.
(2) 그 밖의 실시예 2
도 16 및 도 17은 본 발명의 그 밖의 실시예 2에 따른 데이터 갱신 방법을 나타내고 있다.
본 예의 데이터 갱신 방법 및 카운트 방법은 제1, 제2 실시 형태에 따른 실시예 3의 방법(도 9 참조)과 동일하다. 단, 본 예에서는 제1, 제2 실시 형태에 따른 실시예 3에서의 1페이지를 일부분 소거 단위(「1에리어」라고 함)로 치환한다. 즉, 본 예에서는 1에리어는 복수 페이지를 포함하면서 소거의 최소 단위가 된다.
(a) 초기 상태
블록 내의 모든 에리어, 즉 물리 어드레스(페이지) 0∼31 내의 메모리 셀은소거 상태에 있다.
(b) 기입
우선, 물리 어드레스(1에리어) 0∼7에 데이터 LA64∼LA71(1섹터가 512바이트라고 하면 8섹터분)이 기입된다. 마찬가지로, 물리 어드레스(1에리어) 8∼15에 데이터 LA72∼LA79가 기입되고, 물리 어드레스(1에리어) 16∼23에 데이터 LA80∼LA87이 기입되고, 물리 어드레스(1에리어) 24∼31에 데이터 LA88∼LA95가 기입된다.
물리 어드레스 0∼7에 대한 데이터 LA64∼LA71의 기입 시에는, 물리 어드레스 0∼7의 카운트값, 즉 데이터 기입/소거 횟수로서, "1"이 기입된다. 또한, 물리 어드레스 8∼15에 대한 데이터 LA72∼LA79의 기입 시에는, 블록 전체적으로 보면 2회째의 데이터 기입/소거가 수행된다. 따라서, 물리 어드레스 8∼15의 카운트값, 즉 데이터 기입/소거 횟수로서는 "2"가 기입된다.
마찬가지로, 물리 어드레스 16∼23에 대한 데이터 LA80∼LA87의 기입 시에는, 블록 전체적으로 보면 3회째의 데이터 기입/소거가 수행된다. 따라서, 물리 어드레스 16∼23의 카운트값, 즉 데이터 기입/소거 횟수로서는 "3"이 기입된다. 또한, 물리 어드레스 24∼31에 대한 데이터 LA88∼LA95의 기입 시에는, 블록 전체적으로 보면 4회째의 데이터 기입/소거가 수행된다. 따라서, 물리 어드레스 24∼31의 카운트값, 즉 데이터 기입/소거 횟수에 대해서는 "4"가 기입된다.
(c) 및 (d) 물리 어드레스 0∼7의 데이터 기입/소거
컨트롤러(11)는, 메모리(10)에 대하여 물리 어드레스 0∼7의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 내의 모든 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31의 카운트값이 판독된다. 도 4의 컨트롤러(11)는 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31의 카운트값 중에서 최대값 Nmax를 선택한다. 이 시점에서는 물리 어드레스 24∼31의 카운트값 "4"가 가장 큰 값을 갖는다. 도 4의 컨트롤러(11)는 물리 어드레스 24∼31의 카운트값 "4"에 "1"을 가산하여, 카운트값 "5"를 데이터 기입/소거의 대상이 되는 물리 어드레스 0∼7의 카운트값으로 한다. 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31의 카운트값은, 예를 들면 도 4의 컨트롤러(11) 내의 메모리(RAM 등)에 일시적으로 기억된다.
이 후, 물리 어드레스 0∼7에 기억된 데이터 LA64∼LA71 및 카운트값의 소거가 실행된다((c) 참조). 계속하여, 물리 어드레스 0∼7에 대하여, 갱신 데이터 LA64∼71 및 카운트값(="5")이 기입된다((d) 참조).
또한, 도 4의 컨트롤러(11)는 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31의 카운트값 중의 최대값 Nmax 와 최소값 Nmin을 추출한다. 그리고, 이 최대값 Nmax와 최소값 Nmin과의 차를 계산하여, 이 차가 데이터 기입/소거 횟수의 최대값(허용치), 즉 "32"에 도달해 있는지를 판단한다.
이 시점에서는 물리 어드레스 0∼7의 카운트값 "5"가 가장 크고, 물리 어드레스 8∼15의 카운트값 "2"가 가장 작다. 따라서, <최대값 Nmax-최소값 Nmin> 은 "3"이고, 이 수치는 "32"보다 작다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(e) 및 (f) 물리 어드레스 2의 데이터 기입/소거
컨트롤러(11)는 메모리(10)에 대하여 물리 어드레스 16∼23의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 내의 모든 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31의 카운트값이 판독된다. 도 4의 컨트롤러(11)는 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31의 카운트값 중에서 최대값 Nmax를 선택한다. 이 시점에서는 물리 어드레스 0∼7의 카운트값 "5"가 가장 큰 값을 갖는다. 도 4의 컨트롤러(11)는 물리 어드레스 0∼7의 카운트값 "5"에 "1"을 가산하여, 카운트값 "6"을 데이터 기입/소거의 대상이 되는 물리 어드레스 16∼23의 카운트값으로 한다. 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31의 카운트값은, 예를 들면 도 2의 컨트롤러(11) 내의 메모리(RAM 등)에 일시적으로 기억된다.
이 후, 물리 어드레스 16∼23에 기억된 데이터 LA80∼LA87 및 카운트값의 소거가 실행된다((e) 참조). 계속해서, 물리 어드레스 16∼23에 대하여, 갱신 데이터 LA80∼LA87 및 카운트값(="6")이 기입된다((f) 참조).
또한, 도 4의 컨트롤러(11)는 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31의 카운트값 중의 최대값 Nmax와 최소값 Nmin을 추출한다. 그리고, 이 최대값 Nmax와 최소값 Nmin과의 차를 계산하여, 이 차가 데이터 기입/소거 횟수의 최대값(허용치), 즉 "32"에 도달해 있는지를 판단한다.
이 시점에서는 물리 어드레스 16∼23의 카운트값 "6"이 가장 크고, 물리 어드레스 8∼15의 카운트값 "2"가 가장 작다. 따라서, <최대값 Nmax-최소값 Nmin>은 "4"이고, 이 수치는 "32"보다 작다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
(g) 리프레시
데이터 갱신 요구에 따라, 상술한 (c) 및 (d)의 동작 또는 (e) 및 (f)의 동작과 마찬가지의 동작이 실행되어, 최종적으로 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31의 카운트값이 (g)에 도시한 바와 같이 된 것으로 한다.
도 4의 컨트롤러(11)는 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31의 카운트값으로부터 최대값 Nmax와 최소값 Nmin을 추출한다. 최대값 Nmax는 물리 어드레스 0∼7의 카운트값이고, 그 값은 "65"이다. 또한, 최소값 Nmin은 물리 어드레스 24∼31의 카운트값이고, 그 값은 "33"이다. 최대값 Nmax와 최소값 Nmin과의 차는 "32"가 된다.
즉, 물리 어드레스 24∼31의 데이터가 마지막으로 갱신된 후, 물리 어드레스 24∼31은 32(=65-33)회의 데이터 기입/소거에 의한 전압 스트레스를 받고 있는 것으로 된다. 따라서, 도 4의 컨트롤러(11)는 이 사실을 확인하면 리프레시 동작을 행하는 명령을 도 4의 메모리(10)에 제공한다.
본 예에서는, 블록 내의 각 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31의 카운트값의 최대값 Nmax와 최소값 Nmin의 차에 기초하여, 리프레시 동작의 필요성을 판단하고 있다. 이 때문에, 그 차가 허용치 미만이면 리프레시 동작을 행할 필요가 없다. 경우에 따라서는 리프레시 동작을 전혀 행하지 않고 데이터 기입/소거동작을 계속해서 행할 수 있다.
또한, 본 예에서는 카운트값의 최대값 Nmax와 최소값 Nmin의 차에 기초하여리프레시 동작의 필요성을 판단하고 있기 때문에, 리프레시의 조건이 메모리의 초기 상태에 의존하지 않는다. 또한, 본 예에서는 최악의 경우를 상정하여, 리프레시의 조건을 설정하지 않아도 된다.
리프레시 동작에서는 데이터 영역에 기억되는 데이터에 대해서는 재기입에 의해 리프레시되지만, 용장 영역의 카운트값에 대해서는 리프레시 동작 시에, 예를 들면 (b)의 상태로 초기화된다. 즉, 도 17의 (b)에 있어, (h) 및 (i)에 도시한 바와 같이 리프레시에 있어서의 기입 동작에서는 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31에 대응하는 용장 영역에, 각각 카운트값 "1" "2" "3" "4"가 기입된다.
또, 본 예에서는 상술한 리프레시 조건(Nmax-Nmin≥32)을 만족하였을 때에, 카운트값이 최소값 Nmin인 물리 어드레스 24∼31에 대해서만 리프레시를 행하도록 해도 된다. 이 경우, 도 17의(a)에 있어, (h) 및 (i)에 도시한 바와 같이, 리프레시 동작 후에는 리프레시의 대상이 된 물리 어드레스 24∼31의 카운트값의 갱신만을 행하여, 다른 카운트값을 초기화하지 않고 그대로 계속해서 카운트한다.
예를 들면, 도 17의 (a)에 있어, (h) 및 (i)의 예에서는, 물리 어드레스 LA24∼31의 리프레시 동작에 의해, 물리 어드레스 LA24∼31의 카운트값을 "66"(=65+1)으로 설정해도 된다. 물리 어드레스 0∼7, 8∼15, 16∼23은 리프레시되지 않기 때문에, 그 카운트값에 대해서는 현상을 유지시킨다.
이와 같이 본 예에서는, 에리어별로 데이터 기입/소거 횟수가 기억되고 데이터 기입/소거 요구가 발생할 때마다 데이터 기입/소거 횟수(카운트값)의 최대값Nmax와 최소값 Nmin을 추출하여, 그 차분으로 리프레시 동작의 필요성을 판단하고 있다. 본 예의 이점은 최대값과 최저값의 차분이 허용치 미만이면 리프레시 동작을 실행하지 않고 데이터 기입/소거 동작을 계속해서 행할 수 있다는 점에 있다.
또, 에리어를 구성하는 각 페이지별로 데이터 기입/소거 횟수를 관리해도 된다. 이것은 블록 내의 에리어의 사이즈가 반드시 고정될 필요는 없고, 가변이어도 되는 것에 기인한다. 예를 들면, 에리어의 사이즈가 고정된 경우에는 데이터 기입/소거 횟수는 영역 단위로 관리하면 된다. 그러나, 에리어의 사이즈가 가변인 경우에는 데이터 기입/소거 횟수는 에리어 내의 페이지별로 관리하는 것이 편리하다.
리프레시 방법에 대해서는 상술한 바와 같이 여러가지 방법을 채용할 수 있다. 예를 들면, 리프레시의 대상이 되는 에리어의 데이터를 시스템 내의 버퍼에 일시적으로 세이브하여, 그 후 해당 에리어의 소거를 실행하고 마지막으로 시스템 내의 버퍼로부터 해당 에리어로 다시 데이터를 복귀시키는 방법을 채용할 수 있다. 또한, 두개의 블록을 쌍으로 사용하여 리프레시의 대상이 되는 에리어의 데이터를 다른 블록으로 이동시켜도 된다.
이상, 파일 본체를 염두에 둔 실시예에 대하여 설명하였다. 본 예는 제1, 제2 실시 형태에 따른 카운트 동작의 실시예 3에 대응하고 있지만, 당연히, 예를 들면 제1, 제2 실시 형태에 따른 카운트 동작의 실시예 1, 2, 및 제3, 제4 실시 형태에 따른 카운트 동작의 실시예 1, 2, 3에 대응시킬 수도 있다.
(3) 그 밖의 실시예 3
도 18 및 도 19는 본 발명의 그 밖의 실시예 3에 따른 데이터 갱신 방법을 나타내고 있다.
기본적인 알고리즘은 제3, 제4 실시 형태에 따른 실시예 3(도 14 참조)과 동일하다. 본 예에서는 NAND형 플래시 메모리의 다른 블록을 데이터 갱신 시에 있어서의 데이터의 일시 기억을 위한 버퍼로서 사용한다. 여기서는 데이터 기억을 위한 블록을 블록 A로 하고, 데이터의 일시 기억을 위한 블록을 버퍼 블록으로 한다.
(a) 초기 상태
블록 A의 상태에 대해서는, 다음과 같다.
물리 어드레스(1 에리어) 0∼7에는 데이터 LA64∼LA71(1섹터가 512바이트라고 하면, 8섹터분)이 저장된다. 마찬가지로, 물리 어드레스(1 에리어) 8∼15에 데이터 LA72∼LA79가 저장되고, 물리 어드레스(1 에리어) 16∼23에 데이터 LA80∼LA87이 저장되고, 물리 어드레스(1 에리어) 24∼31에 데이터 LA88∼LA95가 저장된다.
물리 어드레스 0∼7의 카운트값, 즉 데이터 기입/소거 횟수는 "1"이다. 또한, 물리 어드레스 8∼15의 카운트값, 즉 데이터 기입/소거 횟수는 "2"이다. 마찬가지로, 물리 어드레스 16∼23의 카운트값, 즉 데이터 기입/소거 횟수는 "3"이고, 물리 어드레스 24∼31의 카운트값, 즉 데이터 기입/소거 횟수는 "4"이다.
버퍼 블록에 대해서는 모든 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31이 소거 상태로 설정되어 있다.
(b) 내지 (e) 물리 어드레스 0∼7의 데이터 기입/소거
컨트롤러(11)는, 메모리(10)에 대하여 물리 어드레스 0∼7의 데이터 갱신 요구를 출력한다(도 4 참조).
우선, 블록 A 내의 모든 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31의 카운트값이 판독된다. 또한, 도 4의 컨트롤러(11)에 있어서, 물리 어드레스 0∼7의 카운트값이 갱신된다.
예를 들면, 도 4의 컨트롤러(11)는 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31의 카운트값 중에서 최대값 Nmax를 선택한다. 이 시점에서는 물리 어드레스 24∼31의 카운트값 "4"가 가장 큰 값을 갖는다. 도 4의 컨트롤러(11)는 물리 어드레스 24∼31의 카운트값 "4"에 "1"을 가산하여, 카운트값 "5"를 데이터 기입/소거의 대상이 되는 물리 어드레스 0∼7의 카운트값으로 한다.
그리고, 갱신 데이터 LA64∼71 및 물리 어드레스 0∼7의 카운트값 "5"는 버퍼 블록 내의 물리 어드레스 0∼7에 기억된다((b) 참조).
이 후, 블록 A 내의 물리 어드레스 0∼7에 기억된 데이터 LA64∼LA71 및 카운트값의 소거가 실행된다((c) 참조). 계속해서, 블록 A 내의 물리 어드레스 0∼7에 대하여, 갱신 데이터 LA64∼LA71 및 카운트값 "5"가 기입된다((d) 참조). 또한, 버퍼 블록 내의 물리 어드레스 0∼7에 기억된 데이터 LA64∼LA71 및 카운트값의 소거가 실행된다((e) 참조).
그리고, 도 4의 컨트롤러(11)는 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31의 카운트값에 기초하여, 최대값 Nmax-최소값 Nmin이 허용치, "32"에 도달해 있는지의 여부를 판단한다. 이 시점에서는 물리 어드레스 0∼7의 카운트값 "5"가 가장크고, 물리 어드레스 8∼15의 카운트값 "2"가 가장 작지만, 그 차분은 허용치, "32"에 도달해 있지 않다.
따라서, 이 시점에서는 리프레시 동작은 행해지지 않는다.
이러한 동작이 반복되어, 블록 A 내의 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31의 카운트값이 리프레시 조건을 만족하였을 때에는 리프레시 동작이 실행된다. 본 예에 따르면, 갱신 데이터 및 카운트값은, 블록 A 및 버퍼 블록 중 어느 하나에 기억되어 있다. 예를 들면 불의의 전원 차단 등의 비상 사태가 발생해도, 시스템에 있어서의 치명적인 손상을 회피할 수 있다.
블록 A 내의 데이터 및 카운트값은, 최종적으로 도 19의 (f)에 도시한 바와 같이 된 것으로 가정한다. (f)에서는 물리 어드레스 24∼31의 카운트값이 가장 작고, 가장 오래된 것이다. 한편, 물리 어드레스 0∼7의 카운트값이 가장 크고, 가장 최신의 것이다. 양자의 차분의 의미는 물리 어드레스 24∼31의 데이터가 마지막(33회째)으로 갱신된 후, 물리 어드레스 24∼31의 메모리 셀이 32(=65-33)회의 데이터 기입/소거에 기인하는 전압 스트레스를 받고 있다는 것이다. 따라서, 이 시점에서는 리프레시 동작의 필요성이 발생하고 있다.
이상과 같이, 본 예에서는 블록 내의 각 에리어의 데이터 기입/소거 횟수의 최대값 Nmax와 최소값 Nmin을 추출하고, 그 차분으로, 리프레시 동작의 필요성을 판단하고 있다. 본 예의 이점은 최대값 Nmax와 최소값 Nmin의 차분이 허용치 미만이면, 리프레시 동작을 실행하지 않고, 계속해서 데이터 기입/소거를 행할 수 있다는 점에 있다.
또한, 본 예에서는 카운트값의 최대값 Nmax와 최소값 Nmin의 차에 기초하여 리프레시 동작의 필요성을 판단하고 있기 때문에, 리프레시의 조건이 메모리의 초기 상태에 의존하지 않는다. 또한, 본 예에서는 최악의 경우를 상정하여, 리프레시의 조건을 설정하지 않아도 된다.
리프레시 동작에서는 데이터 영역에 기억되는 데이터에 대해서는 재기입에 의해 리프레시되지만, 용장 영역의 카운트값에 대해서는 리프레시 동작 시에, 예를 들면 (b)의 상태로 초기화된다. 즉, 리프레시에 있어서의 기입 동작에서는 물리 어드레스 0∼7, 8∼15, 16∼23, 24∼31에 대응하는 용장 영역에, 각각 카운트값 "1", "2", "3", "4"가 기입된다.
또한, 본 예에서는 상술한 리프레시 조건(Nmax-Nmin≥32)을 만족하였을 때에, 카운트값이 최소값 Nmin인 물리 어드레스 24∼31에 대해서만, 리프레시를 행하도록 해도 된다. 이 경우, 도 19의 (f) 및 (g)에 도시한 바와 같이 리프레시 동작 후에는 리프레시의 대상이 된 물리 어드레스 24∼31의 카운트값의 갱신만 행하여, 다른 카운트값을 초기화하지 않고, 그대로 계속해서 카운트한다.
예를 들면, 도 17의 (f) 및 (g)의 예에서는, 물리 어드레스 LA24∼31의 리프레시 동작에 의해, 물리 어드레스 LA24∼31의 카운트값을 "66"(=65+1)으로 설정해도 된다. 물리 어드레스 0∼7, 8∼15, 16∼23은 리프레시되지 않으므로, 그 카운트값에 대해서는 현상을 유지시킨다.
또, 에리어를 구성하는 각 페이지별로, 데이터 기입/소거 횟수를 관리해도 된다. 이것은 블록 내의 에리어의 사이즈가 반드시 고정일 필요는 없고, 가변이어도 되는 것에 기인한다. 예를 들면, 에리어의 사이즈가 고정인 경우에는 데이터 기입/소거 횟수는 영역 단위(area unit)로 관리하면 된다. 그러나, 에리어의 사이즈가 가변인 경우에는 데이터 기입/소거 횟수를 에리어 내의 페이지별로 관리하는 것이 편리하다.
리프레시 방법에 대해서는 상술한 바와 같이, 다양한 방법을 채용할 수 있다. 본 예에서는 도 19의 (g) 및 (h)에 도시한 바와 같이 리프레시의 대상이 되는 에리어의 데이터를 버퍼 블록에 일시적으로 퇴피시키고, 그 후 해당 에리어의 소거를 실행하여, 시스템 내의 버퍼로부터 해당 에리어로 다시 데이터를 되돌리고, 마지막으로, 버퍼 블록의 데이터의 소거를 실행하는 방법을 채용하고 있다.
그 밖의 실시예 1, 2, 3에서는 복수 페이지로 구성되는 에리어를 정의하고, 기본적으로는 그 에리어의 사이즈(용량)와 동일한 사이즈(용량)의 데이터의 갱신이 발생하는 것으로 가정하였다. 그러나, 통상의 시스템에서는 에리어의 사이즈보다 작은 사이즈의 데이터의 갱신이 발생하는 경우도 있다.
이 경우, 에리어 내의 갱신되지 않는 데이터에 관해서는, 예를 들면 시스템 내의 버퍼나, 다른 블록(버퍼 블록) 등에 퇴피되어, 갱신 데이터와 함께 원래의 블록 내에 재기입된다. 또한, 2개의 블록을 쌍으로 사용하여, 그 블록들에 교대로 데이터를 기입하는 경우에는 한쪽의 블록에 대한 기입 동작에서는 갱신 데이터와, 다른 쪽의 블록으로부터 판독된 갱신하지 않는 데이터가 기입된다.
이것은, 예를 들면 제1, 제2 실시 형태에 따른 실시예 1, 2, 3 및 제3, 제4 실시 형태에 따른 실시예 1, 2, 3에서, 페이지의 사이즈보다 작은 사이즈의 데이터의 갱신이 발생하는 경우에도 적용될 수 있는 것이다.
(4) 그 밖의 실시예 4
도 20 내지 도 22는 본 발명의 그 밖의 실시예 4에 따른 데이터 갱신 방법을 나타내고 있다.
본 예의 데이터 갱신 방법 및 카운트 방법은 도 12 내지 도 14의 데이터 갱신 방법 및 카운트 방법의 변형예이다. 본 예에서는 도 12 내지 도 14에서의 1 페이지가 부분 소거 단위, 즉 1 에리어로 대체된다. 본 예에서는 1 에리어가 복수의 페이지를 포함하고, 최소의 소거 단위를 형성한다.
11. 기타
페이지별 또는 에리어별 데이터 기입/소거 횟수(소거 또는 기입 횟수도 무방함)를 나타내는 카운트값은, 통상 데이터를 기억하는 페이지와 동일한 페이지에 존재하는 용장 영역에 기억된다. 그러나, 그 카운트값은 데이터를 기억하는 페이지와 동일한 페이지에 존재하는 용장 영역 이외의 부분에 기억해도 상관없다.
예를 들면, 페이지별 또는 에리어별 데이터 기입/소거 횟수를 집중 관리하는 메모리 영역을 플래시 메모리 내에 형성하고, 그 메모리 영역 내에서 데이터 기입/소거 횟수를 관리해도 된다. 또한, 논리 어드레스와 물리 어드레스의 변환 테이블을 플래시 메모리 내에 갖는 경우에는 데이터 기입/소거 횟수를 그 테이블을 구성하는 요소로서 관리해도 된다.
본 발명의 예는, 주로 사용자 데이터, 즉 퍼스널 컴퓨터로 말하면, 파일 본체의 데이터나, 파일 관리 정보(FAT 테이블 정보나, 디렉토리 정보) 등의 갱신에적용된다. 그러나, 본 발명의 예는 이러한 사용자 데이터의 갱신에 한정되지 않고, 사용자 데이터와 직접 관계가 없는 데이터의 갱신, 예를 들면 플래시 메모리 카드 내부에서 사용하는 관리 정보 등의 갱신 등에 적용할 수도 있다.
카드 내부에서 사용하는 관리 정보로서는, 예를 들면 논리 어드레스와 물리 어드레스의 변환 테이블 정보, 카드의 속성 정보 및 그 갱신 정보, 라이트 프로텍트 정보, 패스워드 등의 시큐러티에 관련된 정보, 내장 플래시 메모리의 불량 블록의 관리 정보, 플래시 메모리의 데이터 기입/소거 횟수 등의 정보, 플래시 메모리 카드 내부의 컨트롤러의 제어 펌웨어 등이 있다.
본 발명의 예는 종래의 블록 단위의 데이터 기입/소거와 조합하여 사용할 수도 있다. 예를 들면, 비교적 큰 단위, 예를 들면 클러스터 단위로, 기입 요구가 이루어지는 파일의 본체의 데이터는 종래의 블록 단위의 데이터 기입/소거에 의해 다루어진다. 비교적 작은 단위로, 기입 요구가 이루어지는 FAT 데이터, 디렉토리 정보 등은 본 발명의 예에 따른 페이지 소거를 사용한 데이터 기입/소거에 의해 다루어진다.
이 경우, 컨트롤러에, 데이터 구조를 분석하는 기능을 부가한다. FAT 데이터나 디렉토리(서브 디렉토리 정보를 포함함)의 갱신이면, 본 발명의 예에 따른 알고리즘이 발동하도록 해도 된다. 또한 미리 설정한 논리 어드레스의 범위 이내이면, FAT나 디렉토리 정보라고 판단하여, 본 발명의 알고리즘이 발동하도록 해도 된다.
상술한 각 실시예에서는, 플래시 메모리의 페이지 사이즈가 512바이트(용장영역을 제외함)인 NAND형 플래시 메모리를 예로 들었다. 그러나, 최근에 있어서의 메모리 용량의 대용량화에 따라, 페이지 사이즈가 2KB의 플래시 메모리나, 복수 페이지에 대하여 동시에 데이터 기입을 행할 수 있는 플래시 메모리 등이 개발되어 있다.
본 발명의 예는, 이러한 최근의 새로운 플래시 메모리에도 적용 가능하다. 예를 들면, 페이지 사이즈가 2KB, 1블록이 64페이지, 블록 사이즈가 128KB, 블록 내의 부분 소거(소거 단위)의 크기로서는 16KB인 NAND형 플래시 메모리에 본 발명을 적용할 수도 있다.
이 경우, 외부 사양으로서는 8페이지분의 데이터를 일괄적으로 소거하게 된다. 그러나, 1개의 비트선을 2개의 감지 증폭기가 공유하는 2치 플래시 메모리인 경우에는, 물리적으로는 4페이지분의 데이터를 소거하게 된다.
소거 동작은, 실제로는 소거의 대상이 되는 페이지의 워드선(컨트롤 게이트 전극)을 접지 레벨로 설정하고, 기판을 고전위(예를 들면, 약 20V)로 설정하는 것을 포함하여 이루어진다. 이 때, 부유 게이트 전극과 기판 사이에는 큰 전위차가 발생하므로, FN 터널링 현상에 의해 부유 게이트 전극의 전하가 배출되어, 메모리 셀의 데이터가 소거된다.
소거의 대상이 되지 않는 페이지의 워드선은, 예를 들면 기판과 동 전위(예를 들면, 약 20V)로 설정된다. 이 때문에, 소거의 대상이 되지 않는 페이지에서는, 부유 게이트 전극과 기판 사이에 큰 전위차가 발생하지 않고, 메모리 셀의 데이터가 소거되지 않는다.
본 발명의 예는, 페이지 사이즈에 관해서는 2KB의 것에 한정되지 않고, 임의의 사이즈의 플래시 메모리에 적용할 수 있다.
도 23은 NAND형 플래시 메모리의 페이지 소거 시의 커맨드의 발생예를 나타내고 있다.
블록 소거, 페이지 소거, 및 복수 페이지를 동시에 소거하는 블록 내의 부분 소거는, 각각 다른 커맨드 코드에 의해 구별된다.
도 24 내지 도 26은 본 발명의 예가 적용되는 시스템 예를 나타내고 있다.
도 24의 예는 컨트롤러와 플래시 메모리를 포함하는 메모리 카드에 관한 것이다.
메모리 카드(12)에는 컨트롤러(11) 및 복수의 플래시 메모리(10a, 10b)가 탑재된다. 컨트롤러(11)는 RAM 및 CPU를 포함하고 있다. 호스트 인터페이스로서는 ATA 인터페이스, PC 카드 인터페이스, USB 등, 여러 가지 것이 생각되지만, 본 발명의 예는 어떠한 인터페이스에도 적용 가능하다.
본 예에서는 메모리 카드(12) 내의 컨트롤러(일반적으로는 마이크로 컴퓨터를 탑재되어 있음)(11)가 본 발명의 예에 따른 데이터 갱신 동작, 카운트 방법, 리프레시에의 이행 조건 등을 컨트롤한다. 즉, 컨트롤러(11)는 페이지 소거, 블록 내의 부분 소거 등을 위한 커맨드를 발생하여, 이들 커맨드를 플래시 메모리(10a, 10b)에 제공한다.
컨트롤러(11)와 플래시 메모리(10a, 10b)는 1칩화되어 있어도 되고, 별개의 칩에 형성되어 있어도 된다.
도 25의 예는 컨트롤러를 탑재하지 않는 메모리 카드에 관한 것이다.
본 예에서는 플래시 메모리(10a)만 탑재한 카드(12a)나, 비교적 소규모의 로직 회로(ASIC)(14)를 탑재한 카드(12b)를 대상으로 한다. 이 경우, 예를 들면 카드(12a, 12b)가 접속되는 호스트측의 기기를 디지털 카메라(13)라고 가정하면, 디지털 카메라(13)의 내부에 배치된 플래시 메모리 카드 제어용 컨트롤러(11)는 카드(12a, 12b) 내의 플래시 메모리(10a, 10b)에 대하여, 페이지 소거, 블록 내의 부분 소거를 위한 커맨드를 공급한다.
도 26의 예는 본 발명의 예에 따른 제어의 전부 또는 일부를 행하는 제어 회로가 탑재된 플래시 메모리에 관한 것이다.
메모리 카드(12)에는 컨트롤러(11) 및 플래시 메모리(10)가 탑재된다. 플래시 메모리(10)는, 예를 들면 페이지의 데이터 기입/소거 횟수에 관련된 정보를 생성하는 제어 회로(15)를 갖고 있다. 플래시 메모리(10)는 이 제어 회로(15)에 의해, 이러한 정보를 자신이 작성하고, 또한 이 정보를 예를 들면, 메모리 셀 어레이의 용장 영역(에러 정정 부호 등의 저장 영역)에 저장한다. 플래시 메모리(10)에는 페이지의 데이터 기입/소거 횟수에 관련된 정보를 외부로부터 참조할 수 있는 기능을 부가해도 된다.
페이지의 데이터 기입/소거 횟수에 관련된 정보는 플래시 메모리의 외부로부터는 직접 참조할 수 없는 특수한 메모리 셀 영역에 저장되어도 된다. 이 경우에는 특정 커맨드에 의해, 이러한 정보가 외부로 판독될 수 있도록 해도 되고, 리프레시 조건이 만족하는지에 관한 정보를 외부로 판독할 수 있도록 해도 된다.
플래시 메모리(10) 내의 제어 회로(15)는, 예를 들면 특정 커맨드의 응답으로서, 페이지 소거가 가능한지의 여부, 페이지 소거가 정상적으로 행해졌는지의 여부, 또는 페이지 소거가 금지되어 실행되지 않았는지의 정보를 컨트롤러(11)에 응답하는 기능을 갖고 있어도 된다.
이 경우에는 플래시 메모리(칩)(10)의 외부에 설치된 컨트롤러(11)는 특정 커맨드에 대한 응답을 해석하고, 필요에 따라, 리프레시 동작 또는 그에 상당하는 동작을 실행한다.
또한, 플래시 메모리(10)에 탑재된 제어 회로(15)는 상기에서 부가하여 설명한 바와 같이, 페이지의 데이터 기입/소거 횟수에 관련된 정보의 저장에 관한 동작뿐만 아니라, 리프레시 조건을 판단하는 동작이나, 구체적인 리프레시 동작 등을 컨트롤하는 기능을 갖고 있어도 된다.
상술한 바와 같이, 본 발명의 예는 페이지 소거 기능을 갖는 불휘발성 반도체 메모리와, 데이터 기입/소거 횟수에 관련된 정보를 제어하는 컨트롤러를 포함하는 시스템이면, 어떠한 것에도 적용할 수 있다.
또한, 상술한 실시예에서는, 주로 NAND형 플래시 메모리를 전제로 하여 설명하였지만, 본 발명의 예는 그 밖의 불휘발성 반도체 메모리, 예를 들면 NOR형, AND형, DINOR형 등의 불휘발성 반도체 메모리에도 적용 가능하다. 또한, 불휘발성 반도체 메모리로서는 플래시 메모리 외에, 최근 주목받고 있는 메모리 셀에 자성체를 사용한 MRAM(Magnetic Random Access Memory), 메모리 셀에 강유전체를 사용한 FeRAM(Ferroelectric Random Access Memory)나, 메모리 셀에칼코겐화물(chalcogenide)을 사용한 OUM(0vonics Unified Memory) 등도 포함된다.
상술한 바와 같이 본 발명의 예에 따르면, 블록 내의 일부분의 소거가 가능하고, 데이터 갱신 시에, 블록 내의 갱신하지 않는 데이터를 다른 블록에 퇴피시키는 빈도가 감소하여, 기입 성능의 대폭적인 향상을 기대할 수 있다.
이상 설명한 바와 같이 본 발명에 따르면, 페이지 소거 기능을 갖는 NAND형 플래시 메모리를 사용하는 플래시 메모리 카드에 있어서, 블록 내의 각 페이지의 데이터 기입/소거 횟수를 일정 조건 내에 제한한다. 그에 따라, 페이지 소거 동작이 다른 비선택 페이지에 제공하는 스트레스에 기인하는 문제를 회피할 수 있다. 따라서, 비교적 작은 사이즈의 데이터 기입/소거가 빈번히 발생해도, 기입 성능이 열화되지 않는 플래시 메모리 카드를 제공할 수 있다.
Claims (53)
- 페이지 단위로 기입/소거하기 위한 1개의 블록이 복수의 페이지를 포함하는 메모리 셀 어레이와,상기 복수의 페이지의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 페이지별로 관리하는 제어 회로를 포함하는 불휘발성 반도체 메모리.
- 제1항에 있어서,상기 불휘발성 반도체 메모리는 페이지 소거 기능을 갖는 불휘발성 반도체 메모리.
- 제1항에 있어서,상기 제어 회로는 상기 불휘발성 반도체 메모리 내에 혼합식(mixed manner)으로 탑재되어 있는 불휘발성 반도체 메모리.
- 제1항에 있어서,상기 정보는 상기 불휘발성 반도체 메모리 내의 메모리 셀 어레이의 용장 영역(redundancy area)에 기억되는 불휘발성 반도체 메모리.
- 제1항에 있어서,상기 정보는 상기 불휘발성 반도체 메모리 내의 메모리 셀 어레이와는 다른 특수한 메모리 셀 영역에 기억되는 불휘발성 반도체 메모리.
- 제1항에 있어서,상기 정보는 상기 불휘발성 반도체 메모리와는 다른 불휘발성 반도체 메모리 내에 기억되는 것을 특징으로 하는 불휘발성 반도체 메모리.
- 제1항에 있어서,상기 제어 회로는 상기 데이터 기입/소거 시마다, 모든 페이지들에 대하여, 상기 정보를 판독하는 불휘발성 반도체 메모리.
- 제7항에 있어서,상기 제어 회로는 상기 데이터 기입/소거 시마다, 상기 데이터 기입/소거의 대상이 되는 페이지에 대하여, 상기 정보를 갱신하는 불휘발성 반도체 메모리.
- 제8항에 있어서,상기 데이터 기입/소거는, 상기 정보를 판독한 후, 상기 데이터 기입/소거의 대상이 되는 페이지의 데이터를 소거하고, 또한 상기 데이터 기입/소거의 대상이 되는 페이지에 갱신 데이터를 기입함으로써 행해지는 불휘발성 반도체 메모리.
- 제8항에 있어서,상기 제어 회로는 상기 데이터 기입/소거 시마다, 모든 페이지에 관한 상기 정보에 기초하여, 상기 블록 내의 모든 페이지 또는 상기 데이터 기입/소거의 대상이 되는 페이지의 메모리 셀들의 상태를 초기 상태로 복귀시키는 리프레시를 행할지 여부를 결정하는 불휘발성 반도체 메모리.
- 제10항에 있어서,상기 정보의 갱신은, 상기 데이터 기입/소거의 대상이 되는 페이지에 관한 상기 정보를 상기 데이터 기입/소거의 대상이 되는 페이지의 데이터 기입/소거 횟수로 설정함으로써 행해지는 불휘발성 반도체 메모리.
- 제11항에 있어서,상기 리프레시는, 모든 페이지에 대하여 상기 데이터 기입/소거 횟수의 합계값이 허용치에 도달하였을 때에 실행되는 불휘발성 반도체 메모리.
- 제12항에 있어서,상기 리프레시에 의해 상기 정보는 초기화되는 불휘발성 반도체 메모리.
- 제10항에 있어서,상기 정보의 갱신은, 상기 데이터 기입/소거의 대상이 되는 페이지에 관한 상기 정보를 상기 블록 내에 있어서 데이터 기입/소거 횟수의 합계값으로 설정함으로써 행해지는 불휘발성 반도체 메모리.
- 제14항에 있어서,상기 리프레시는, 모든 페이지에 대하여 상기 데이터 기입/소거 횟수 중의 최대값이 허용치에 도달하였을 때에 실행되는 불휘발성 반도체 메모리.
- 제15항에 있어서,상기 리프레시에 의해 상기 정보는 초기화되는 불휘발성 반도체 메모리.
- 제14항에 있어서,상기 리프레시는, 모든 페이지에 대하여 상기 데이터 기입/소거 횟수 중, 최대값으로부터 최소값을 뺀 값이 허용치에 도달하였을 때에 실행되는 불휘발성 반도체 메모리
- 제17항에 있어서,상기 리프레시에 의해 상기 정보는 초기화되는 불휘발성 반도체 메모리.
- 제17항에 있어서,상기 리프레시에 의해, 상기 리프레시의 대상이 되는 페이지에 관한 상기 정보가 갱신되는 불휘발성 반도체 메모리.
- 제10항에 있어서,상기 데이터 기입/소거는 상기 리프레시의 일환으로서 행해지는 불휘발성 반도체 메모리.
- 제1항에 있어서,상기 불휘발성 반도체 메모리는 NAND형 플래시 메모리인 불휘발성 반도체 메모리.
- 페이지 단위로 데이터 기입/소거 동작을 행하기 위한 1개의 블록이 복수의 페이지를 포함하는 메모리 셀 어레이와,상기 복수의 페이지의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 페이지별로 관리하는 컨트롤러를 포함하는 메모리 시스템.
- 제22항에 있어서,상기 메모리 시스템은 메모리 카드를 구성하고 있는 메모리 시스템.
- 제22항에 있어서,상기 메모리 시스템은, 상기 불휘발성 반도체 메모리를 포함하는 메모리 카드와 상기 컨트롤러를 포함하는 전자 장치를 포함하여 이루어지는 것을 특징으로 하는 메모리 시스템.
- 영역 단위(area unit)로 데이터 기입/소거 동작을 행하기 위한 1개의 블록이 복수의 에리어를 포함하는 메모리 셀 어레이와,상기 복수의 에리어의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 에리어별로 관리하는 제어 회로를 포함하는 불휘발성 반도체 메모리.
- 제25항에 있어서,상기 복수의 에리어의 각각은 복수의 페이지를 포함하고 있는 불휘발성 반도체 메모리.
- 영역 단위로 데이터 기입/소거 동작을 행하기 위한 1개의 블록이 복수의 에리어를 포함하는 메모리 셀 어레이와,상기 복수의 에리어의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 에리어별로 관리하는 컨트롤러를 포함하는 메모리 시스템.
- 제27항에 있어서,상기 복수의 에리어의 각각은 복수의 페이지를 포함하고 있는 메모리 시스템.
- 제27항에 있어서,상기 메모리 시스템은 메모리 카드를 구성하고 있는 메모리 시스템.
- 제27항에 있어서,상기 메모리 시스템은, 상기 불휘발성 반도체 메모리를 포함하는 메모리 카드와 상기 컨트롤러를 포함하는 전자 장치를 포함하여 이루어지는 메모리 시스템.
- 1개의 블록이 복수의 페이지를 포함하는 제1 및 제2 메모리 영역을 포함하여 이루어지는 메모리 셀 어레이와,상기 복수의 페이지의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 페이지별로 관리하는 제어 회로를 포함하고,상기 정보는 상기 데이터 기입/소거가 행해질 때마다, 상기 제1 및 제2 메모리 영역 중 한쪽에 교대로 기억되는 불휘발성 반도체 메모리.
- 1개의 블록이 복수의 페이지를 포함하는 제1 및 제2 메모리 영역을 포함하여이루어지는 메모리 셀 어레이와,상기 복수의 페이지의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 페이지별로 관리하는 컨트롤러를 포함하고,상기 정보는 상기 데이터 기입/소거가 행해질 때마다, 상기 제1 및 제2 메모리 영역 중 한쪽에 교대로 기억되는 메모리 시스템.
- 1개의 블록이 복수의 에리어를 포함하는 제1 및 제2 메모리 영역을 포함하여 이루어지는 메모리 셀 어레이와,상기 복수의 에러어의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 에리어별로 관리하는 제어 회로를 포함하고,상기 에리어는 복수의 페이지를 포함하고, 상기 정보는 상기 데이터 기입/소거가 행해질 때마다, 상기 제1 및 제2 메모리 영역 중 한쪽에 교대로 기억되는 불휘발성 반도체 메모리.
- 1개의 블록이 복수의 에리어를 포함하는 제1 및 제2 메모리 영역을 포함하여 이루어지는 메모리 셀 어레이와,상기 복수의 에러어의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 에리어별로 관리하는 컨트롤러를 포함하고,상기 에리어는 복수의 페이지를 포함하고, 상기 정보는 상기 데이터 기입/소거가 행해질 때마다, 상기 제1 및 제2 메모리 영역 중 한쪽에 교대로 기억되는 메모리 시스템.
- 복수의 페이지를 포함하는 제1 및 제2 블록을 포함하여 이루어지는 메모리 셀 어레이와,상기 복수의 페이지의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 페이지별로 관리하는 제어 회로를 포함하고,상기 정보는 상기 데이터 기입/소거가 행해질 때마다, 상기 제1 및 제2 블록 중 한쪽에 교대로 기억되는 불휘발성 반도체 메모리.
- 복수의 페이지를 포함하는 제1 및 제2 블록을 포함하여 이루어지는 메모리 셀 어레이와,상기 복수의 페이지의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 페이지별로 관리하는 컨트롤러를 포함하고,상기 정보는 상기 데이터 기입/소거가 행해질 때마다, 상기 제1 및 제2 블록 중 한쪽에 교대로 기억되는 메모리 시스템.
- 복수의 에리어를 포함하는 제1 및 제2 블록을 포함하여 이루어지는 메모리 셀 어레이와,상기 복수의 에리어의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 에리어별로 관리하는 제어 회로를 포함하고,상기 에리어는 복수의 페이지를 포함하고, 상기 정보는 상기 데이터 기입/소거가 행해질 때마다, 상기 제1 및 제2 블록 중 한쪽에 교대로 기억되는 불휘발성 반도체 메모리.
- 복수의 에리어를 포함하는 제1 및 제2 블록을 포함하여 이루어지는 메모리 셀 어레이와,상기 복수의 에리어의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 에리어별로 관리하는 컨트롤러를 포함하고,상기 에리어는 복수의 페이지를 포함하고, 상기 정보는 상기 데이터 기입/소거가 행해질 때마다, 상기 제1 및 제2 블록 중 한쪽에 교대로 기억되는 메모리 시스템.
- 복수의 페이지를 포함하는 제1 블록을 포함하여 이루어지는 메모리 셀 어레이와,상기 복수의 페이지의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 페이지별로 관리하는 제어 회로를 포함하는 불휘발성 반도체 메모리에 있어서,상기 정보는 상기 데이터 기입/소거가 행해질 때마다, 상기 제1 블록 및 상기 불휘발성 반도체 메모리와 동일한 구성을 포함하는 다른 불휘발성 반도체 메모리 내의 제2 블록 중 한쪽에 교대로 기억되는 불휘발성 반도체 메모리.
- 복수의 페이지를 포함하는 제1 블록을 포함하여 이루어지고 페이지 단위로 데이터 기입/소거를 행하는 제1 불휘발성 반도체 메모리와,복수의 페이지를 포함하는 제2 블록을 포함하여 이루어지고 페이지 단위로 데이터 기입/소거를 행하는 제2 불휘발성 반도체 메모리와,상기 복수의 페이지의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 페이지별로 관리하는 컨트롤러를 포함하고,상기 정보는 상기 데이터 기입/소거가 행해질 때마다, 상기 제1 및 제2 블록 중 한쪽에 교대로 기억되는 메모리 시스템.
- 블록이 복수의 페이지를 포함하고, 상기 복수의 페이지의 각각이 로우 방향으로 배치되는 복수의 메모리 셀을 포함하고, 상기 블록 단위로 행해지는 블록 소거와 상기 페이지 단위로 행해지는 페이지 소거를 선택하는 기능을 갖는 불휘발성 반도체 메모리와,상기 불휘발성 반도체 메모리에 대하여, 상기 페이지 소거를 실행하기 위한 커맨드를 발행하는 제어 회로를 포함하는 메모리 시스템.
- 제41항에 있어서,상기 페이지 소거는, 상기 블록 내에 기억된 데이터 중, 적어도 1개의 페이지 내의 불필요한 데이터를 소거하는 기능인 메모리 시스템.
- 제41항에 있어서,상기 제어 회로는 상기 복수의 페이지의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 페이지별로 관리하는 메모리 시스템.
- 제43항에 있어서,상기 제어 회로는, 모든 페이지에 관한 상기 정보 중, 최대값으로부터 최소값을 뺀 값이 허용치에 도달하였는지 여부를 관리하는 메모리 시스템.
- 제41항에 있어서,상기 불휘발성 반도체 메모리는, 직렬 접속되는 복수의 메모리 셀을 포함하는 셀 열(cell row)을 포함하여 이루어지고, 상기 셀 열의 일단은 소스선에 접속되고 상기 셀 열의 타단은 비트선에 접속되는 메모리 시스템.
- 블록이 복수의 페이지를 포함하고, 상기 복수의 페이지의 각각이 로우 방향으로 배치되는 복수의 메모리 셀을 포함하고, 상기 블록 단위로 행해지는 블록 소거와 상기 페이지 단위로 행해지는 페이지 소거를 선택하는 기능을 갖는 불휘발성 반도체 메모리의 제어 방법에 있어서,상기 블록 내에 기억된 데이터 중, 적어도 1개의 페이지 내의 불필요한 데이터를 상기 페이지 소거에 의해 소거하는 것을 특징으로 하는 불휘발성 반도체 메모리의 제어 방법.
- 제46항에 있어서,상기 제어 회로는, 상기 복수의 페이지의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 페이지별로 관리하는 불휘발성 반도체 메모리의 제어 방법.
- 제46항에 있어서,상기 제어 회로는, 모든 페이지에 관한 상기 정보 중, 최대값으로부터 최소값을 뺀 값이 허용치에 도달하였는지 여부를 관리하는 불휘발성 반도체 메모리의 제어 방법.
- 제46항에 있어서,상기 불휘발성 반도체 메모리는 직렬 접속되는 복수의 메모리 셀을 포함하는 셀 열을 포함하여 이루어지고, 상기 셀 열의 일단은 소스선에 접속되고 상기 셀 열의 타단은 비트선에 접속되는 불휘발성 반도체 메모리의 제어 방법.
- 블록이 복수의 페이지를 포함하고, 상기 복수의 페이지의 각각이 로우 방향으로 배치되는 복수의 메모리 셀을 포함하는 메모리 셀 어레이와,상기 블록 단위로 행해지는 블록 소거와 상기 페이지 단위로 행해지는 페이지 소거를 선택하는 기능과,상기 복수의 페이지의 각각에 대한 데이터 기입/소거 횟수에 관련된 정보를 페이지별로 관리하는 기능을 포함하는 불휘발성 반도체 메모리.
- 제50항에 있어서,상기 페이지 소거는, 상기 블록 내에 기억된 데이터 중, 적어도 1개의 페이지 내의 불필요한 데이터를 소거하는 기능인 불휘발성 반도체 메모리.
- 제50항에 있어서,상기 불휘발성 반도체 메모리는, 직렬 접속되는 복수의 메모리 셀을 포함하는 셀 열을 포함하여 이루어지고, 상기 셀 열의 일단은 소스선에 접속되고 상기 셀 열의 타단은 비트선에 접속되는 불휘발성 반도체 메모리.
- 제50항에 따른 불휘발성 반도체 메모리를 포함하는 메모리 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003027314A JP4256175B2 (ja) | 2003-02-04 | 2003-02-04 | 不揮発性半導体メモリ |
JPJP-P-2003-00027314 | 2003-02-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040071574A true KR20040071574A (ko) | 2004-08-12 |
KR100502378B1 KR100502378B1 (ko) | 2005-07-19 |
Family
ID=32767622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2003-0056379A KR100502378B1 (ko) | 2003-02-04 | 2003-08-14 | 불휘발성 반도체 메모리 |
Country Status (3)
Country | Link |
---|---|
US (2) | US7006383B2 (ko) |
JP (1) | JP4256175B2 (ko) |
KR (1) | KR100502378B1 (ko) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100704679B1 (ko) * | 2005-10-18 | 2007-04-06 | 한국전자통신연구원 | 초고속 휴대 인터넷 시스템 및 그 페이징 방법 |
US7542353B2 (en) | 2006-05-12 | 2009-06-02 | Hynix Semiconductor Inc. | Flash memory device and erase method thereof |
KR100974954B1 (ko) * | 2008-06-26 | 2010-08-10 | 에스디씨마이크로 주식회사 | 플래시 메모리를 이용한 저장장치에서의 읽기 웨어 레벨링방법 |
KR20110104292A (ko) * | 2010-03-16 | 2011-09-22 | 삼성전자주식회사 | 메모리 시스템, 그것의 동작 방법, 그리고 그것을 포함하는 컴퓨팅 시스템 |
KR101304040B1 (ko) * | 2005-09-27 | 2013-09-04 | 패트레넬라 캐피탈 엘티디., 엘엘씨 | 메모리 |
KR20150027635A (ko) * | 2013-09-04 | 2015-03-12 | 삼성전자주식회사 | 비휘발성 메모리 장치의 테스트 및 운영 방법 |
US9213592B2 (en) | 2012-08-30 | 2015-12-15 | SK Hynix Inc. | Semiconductor memory device and method of operating the same |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7716725B2 (en) * | 2002-09-20 | 2010-05-11 | Fortinet, Inc. | Firewall interface configuration and processes to enable bi-directional VoIP traversal communications |
EP1843358B1 (en) * | 2002-10-02 | 2010-06-16 | Panasonic Corporation | Control method of a non-volatile memory apparatus |
JP3587842B2 (ja) * | 2002-12-17 | 2004-11-10 | 沖電気工業株式会社 | データ書き換え装置およびデータ書き換え方法ならびにフラッシュメモリ装置 |
JP2005191413A (ja) * | 2003-12-26 | 2005-07-14 | Toshiba Corp | 不揮発性半導体記憶装置 |
US7259989B2 (en) * | 2004-09-03 | 2007-08-21 | Matsushita Electric Industrial Co., Ltd. | Non-volatile memory device |
JP4843222B2 (ja) * | 2005-01-11 | 2011-12-21 | 株式会社東芝 | 半導体記憶装置の制御方法、メモリカード、及びホスト機器 |
JP4282612B2 (ja) * | 2005-01-19 | 2009-06-24 | エルピーダメモリ株式会社 | メモリ装置及びそのリフレッシュ方法 |
WO2006095278A1 (en) * | 2005-03-07 | 2006-09-14 | Nxp B.V. | Driving of a memory matrix of resistance hysteresis elements |
JP2006302342A (ja) * | 2005-04-15 | 2006-11-02 | Toshiba Corp | 不揮発性半導体メモリ装置とメモリシステム |
JP4215746B2 (ja) | 2005-05-20 | 2009-01-28 | Necインフロンティア株式会社 | 情報処理装置および寿命監視方法 |
US8019275B2 (en) * | 2005-10-12 | 2011-09-13 | The Directv Group, Inc. | Band upconverter approach to KA/KU signal distribution |
WO2007105688A1 (ja) * | 2006-03-16 | 2007-09-20 | Matsushita Electric Industrial Co., Ltd. | メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム |
US7551492B2 (en) | 2006-03-29 | 2009-06-23 | Mosaid Technologies, Inc. | Non-volatile semiconductor memory with page erase |
US7467253B2 (en) | 2006-04-13 | 2008-12-16 | Sandisk Corporation | Cycle count storage systems |
US7451264B2 (en) | 2006-04-13 | 2008-11-11 | Sandisk Corporation | Cycle count storage methods |
US7447096B2 (en) * | 2006-05-05 | 2008-11-04 | Honeywell International Inc. | Method for refreshing a non-volatile memory |
JP2007328620A (ja) * | 2006-06-08 | 2007-12-20 | Toshiba Corp | アクセス頻度評価装置およびアクセス頻度評価方法 |
KR100875292B1 (ko) | 2006-09-19 | 2008-12-23 | 삼성전자주식회사 | 플래시 메모리 장치 및 그것의 리프레쉬 방법 |
JP5661227B2 (ja) * | 2007-02-07 | 2015-01-28 | 株式会社メガチップス | メモリコントローラ |
US7577059B2 (en) * | 2007-02-27 | 2009-08-18 | Mosaid Technologies Incorporated | Decoding control with address transition detection in page erase function |
US7804718B2 (en) * | 2007-03-07 | 2010-09-28 | Mosaid Technologies Incorporated | Partial block erase architecture for flash memory |
JP2008257773A (ja) * | 2007-04-02 | 2008-10-23 | Toshiba Corp | 不揮発性半導体記憶装置、不揮発性半導体記憶装置の制御方法、不揮発性半導体記憶システム、及びメモリカード |
JP5049733B2 (ja) * | 2007-10-17 | 2012-10-17 | 株式会社東芝 | 情報処理システム |
JP4439569B2 (ja) * | 2008-04-24 | 2010-03-24 | 株式会社東芝 | メモリシステム |
JP2009276883A (ja) * | 2008-05-13 | 2009-11-26 | Oki Electric Ind Co Ltd | 半導体補助記憶装置 |
JP4719247B2 (ja) * | 2008-05-28 | 2011-07-06 | 京セラ株式会社 | 送信装置および無線通信方法 |
US7719876B2 (en) | 2008-07-31 | 2010-05-18 | Unity Semiconductor Corporation | Preservation circuit and methods to maintain values representing data in one or more layers of memory |
JP5478855B2 (ja) * | 2008-08-08 | 2014-04-23 | ルネサスエレクトロニクス株式会社 | 不揮発性メモリ制御方法及び半導体装置 |
JPWO2011043012A1 (ja) * | 2009-10-05 | 2013-02-28 | パナソニック株式会社 | 不揮発性半導体記憶装置、信号処理システム、及び信号処理システムの制御方法、並びに不揮発性半導体記憶装置の書き換え方法 |
TWI424438B (zh) * | 2009-12-30 | 2014-01-21 | Asolid Technology Co Ltd | 非揮發性記憶體控制裝置及其多階重新排序方法 |
KR101625641B1 (ko) | 2010-04-08 | 2016-05-30 | 삼성전자주식회사 | 비휘발성 메모리 장치, 이의 동작 방법 및 이를 포함하는 장치들 |
JP5722685B2 (ja) | 2011-04-12 | 2015-05-27 | 株式会社日立製作所 | 半導体装置、不揮発性メモリ装置の制御方法 |
US9158336B2 (en) * | 2011-05-06 | 2015-10-13 | Micron Technology, Inc. | Cases for tablet computers and methods |
JP5792019B2 (ja) | 2011-10-03 | 2015-10-07 | 株式会社日立製作所 | 半導体装置 |
US9355719B2 (en) | 2012-07-19 | 2016-05-31 | Hitachi, Ltd. | Semiconductor device |
FR3006804A1 (fr) * | 2013-06-05 | 2014-12-12 | St Microelectronics Rousset | Procede d’effacement par bloc d’une memoire de type eeprom effacable par page |
JP5983665B2 (ja) * | 2014-03-17 | 2016-09-06 | 日本電気株式会社 | アクセス回数カウント装置、メモリシステム、および、アクセス回数カウント方法 |
CN104156317A (zh) * | 2014-08-08 | 2014-11-19 | 浪潮(北京)电子信息产业有限公司 | 一种非易失性闪存的擦写管理方法及系统 |
CN106778289A (zh) * | 2015-11-24 | 2017-05-31 | 虹光精密工业(苏州)有限公司 | 信息安全管理系统及应用该系统的事务机 |
KR20180014975A (ko) * | 2016-08-02 | 2018-02-12 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20190092941A (ko) * | 2018-01-31 | 2019-08-08 | 에스케이하이닉스 주식회사 | 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 |
JP7212239B2 (ja) * | 2018-06-05 | 2023-01-25 | ユナイテッド・セミコンダクター・ジャパン株式会社 | 不揮発性半導体記憶装置及び不揮発性半導体記憶装置の書き換え方法 |
KR20220145223A (ko) * | 2021-04-21 | 2022-10-28 | 삼성전자주식회사 | 프로세싱 소자 및 프로세싱 소자를 포함하는 전자 장치 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3099887B2 (ja) | 1990-04-12 | 2000-10-16 | 株式会社東芝 | 不揮発性半導体記憶装置 |
JP3199989B2 (ja) | 1994-09-30 | 2001-08-20 | 株式会社東芝 | 不揮発性半導体記憶装置とその過書込み救済方法 |
JPH08124393A (ja) * | 1994-10-20 | 1996-05-17 | Fujitsu Ltd | データ消去回数に制限のあるメモリの制御方法及びこの方法を用いた装置 |
KR0148599B1 (ko) | 1994-11-15 | 1998-12-01 | 양승택 | 유전체 박막상의 무결함 화합물 반도체 박막의 제조방법 |
ATE225961T1 (de) * | 1996-08-16 | 2002-10-15 | Tokyo Electron Device Ltd | Halbleiterspeicheranordnung mit fehlerdetektion und -korrektur |
JP3599541B2 (ja) * | 1997-11-27 | 2004-12-08 | シャープ株式会社 | 不揮発性半導体記憶装置 |
JPH11176177A (ja) | 1997-12-12 | 1999-07-02 | Toshiba Corp | 不揮発性半導体記憶装置 |
JP3549723B2 (ja) * | 1998-03-27 | 2004-08-04 | 富士通株式会社 | 半導体記憶装置 |
JP2002230984A (ja) * | 2001-02-05 | 2002-08-16 | Fujitsu Ltd | 不揮発性半導体記憶装置 |
US6831865B2 (en) * | 2002-10-28 | 2004-12-14 | Sandisk Corporation | Maintaining erase counts in non-volatile storage systems |
JP4220319B2 (ja) * | 2003-07-04 | 2009-02-04 | 株式会社東芝 | 不揮発性半導体記憶装置およびそのサブブロック消去方法 |
JP4287222B2 (ja) * | 2003-09-03 | 2009-07-01 | 株式会社東芝 | 不揮発性半導体記憶装置 |
JP4175991B2 (ja) * | 2003-10-15 | 2008-11-05 | 株式会社東芝 | 不揮発性半導体記憶装置 |
JP2005191413A (ja) * | 2003-12-26 | 2005-07-14 | Toshiba Corp | 不揮発性半導体記憶装置 |
-
2003
- 2003-02-04 JP JP2003027314A patent/JP4256175B2/ja not_active Expired - Fee Related
- 2003-07-18 US US10/621,451 patent/US7006383B2/en not_active Expired - Fee Related
- 2003-08-14 KR KR10-2003-0056379A patent/KR100502378B1/ko not_active IP Right Cessation
-
2005
- 2005-09-16 US US11/227,516 patent/US7046558B2/en not_active Expired - Fee Related
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101304040B1 (ko) * | 2005-09-27 | 2013-09-04 | 패트레넬라 캐피탈 엘티디., 엘엘씨 | 메모리 |
KR100704679B1 (ko) * | 2005-10-18 | 2007-04-06 | 한국전자통신연구원 | 초고속 휴대 인터넷 시스템 및 그 페이징 방법 |
US7542353B2 (en) | 2006-05-12 | 2009-06-02 | Hynix Semiconductor Inc. | Flash memory device and erase method thereof |
KR100974954B1 (ko) * | 2008-06-26 | 2010-08-10 | 에스디씨마이크로 주식회사 | 플래시 메모리를 이용한 저장장치에서의 읽기 웨어 레벨링방법 |
KR20110104292A (ko) * | 2010-03-16 | 2011-09-22 | 삼성전자주식회사 | 메모리 시스템, 그것의 동작 방법, 그리고 그것을 포함하는 컴퓨팅 시스템 |
US9213592B2 (en) | 2012-08-30 | 2015-12-15 | SK Hynix Inc. | Semiconductor memory device and method of operating the same |
KR20150027635A (ko) * | 2013-09-04 | 2015-03-12 | 삼성전자주식회사 | 비휘발성 메모리 장치의 테스트 및 운영 방법 |
Also Published As
Publication number | Publication date |
---|---|
JP2004240572A (ja) | 2004-08-26 |
US7006383B2 (en) | 2006-02-28 |
US7046558B2 (en) | 2006-05-16 |
US20060007751A1 (en) | 2006-01-12 |
JP4256175B2 (ja) | 2009-04-22 |
KR100502378B1 (ko) | 2005-07-19 |
US20040151031A1 (en) | 2004-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100502378B1 (ko) | 불휘발성 반도체 메모리 | |
US6988175B2 (en) | Flash memory management method that is resistant to data corruption by power loss | |
KR101040961B1 (ko) | 온-칩 비휘발성 메모리 기록 캐쉬를 사용하기 위한 시스템및 방법 | |
US7299314B2 (en) | Flash storage system with write/erase abort detection mechanism | |
KR101122485B1 (ko) | 메모리 시스템 | |
JP4643711B2 (ja) | 状況依存メモリ性能 | |
US7529129B2 (en) | Single level cell programming in a multiple level cell non-volatile memory device | |
US8874832B2 (en) | AD HOC flash memory reference cells | |
US20080180996A1 (en) | Flash Memory With Improved Programming Precision | |
KR20170035155A (ko) | 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법 | |
TWI388982B (zh) | 包含具有電荷累積層及控制閘極之記憶胞的半導體記憶裝置及記憶系統 | |
US9361221B1 (en) | Write amplification reduction through reliable writes during garbage collection | |
WO2007121025A1 (en) | Cycle count storage methods and systems | |
US8725930B2 (en) | Semiconductor memory device | |
KR20220025401A (ko) | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 | |
JP2008234714A (ja) | 不揮発性半導体記憶装置の書き込み制御方法及びメモリシステム | |
JP2004265447A (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: 20110617 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |