KR20060127760A - 기억장치 - Google Patents
기억장치 Download PDFInfo
- Publication number
- KR20060127760A KR20060127760A KR1020060049916A KR20060049916A KR20060127760A KR 20060127760 A KR20060127760 A KR 20060127760A KR 1020060049916 A KR1020060049916 A KR 1020060049916A KR 20060049916 A KR20060049916 A KR 20060049916A KR 20060127760 A KR20060127760 A KR 20060127760A
- Authority
- KR
- South Korea
- Prior art keywords
- address
- data
- page
- area
- memory
- Prior art date
Links
Images
Classifications
-
- 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
-
- 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/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
비선택 데이터의 리던던트(redundant) 기입 조작을 제거하고, 페이지의 배열을 통해 효율이 좋은 상태로 최적화하는 것이 가능한 기억장치를 제공한다. 병렬로 액세스 가능한 복수의 메모리를 포함하는 플래쉬 메모리부와, 상기 복수의 메모리의 2개 이상으로부터 병렬로 데이터를 취득하고, 일시적으로 기억하는 페이지 레지스터와, 상기 페이지 레지스터에 병렬로 저장되는 데이터 단위로 논리 어드레스와 물리 어드레스의 대응성을 관리하는 어드레스 변환 테이블을 가지며, 상기 어드레스 변환 테이블의 갱신과 기억 미디어에 대한 추가 기입에 의해 데이터를 재기입한다.
Description
도 1은, NAND형 플래쉬 메모리의 내부 구성예를 나타내는 도면이다.
도 2는, 기억장치를 구성하는 플래쉬 메모리의 개념도를 나타내는 도면이다.
도 3은. 본 발명의 제 1의 실시 형태와 관련되는 기억장치를 나타내는 구성도이다.
도 4는, 본 발명의 제 1의 실시 형태와 관련되는 어드레스 변환 테이블의 구성예를 나타내는 도면이다.
도 5a, 5b는, 추가 기입형태의 기입을 실시했을 경우에 생기는 문제점과 해결법에 대해 설명하기 위한 도면이다.
도 6은, 본 발명의 제 2의 실시 형태와 관련되는 기억장치를 나타내는 구성도이다.
도 7a, 7b는, 본 발명의 제 2의 실시 형태와 관련되는 어드레스 변환 테이블의 구성예를 나타내는 도면이다.
도 8은, 본 발명의 제 3의 실시 형태와 관련되는 기억장치를 나타내는 구성도이다.
도 9a, 9b는, 본 발명의 제 3의 실시 형태와 관련되는 어드레스 변환 테이블의 구성예를 나타내는 도면이다.
도 10a-10c는, 사용된 RAM 용량을 압축하기 위한 어드레스 변환에 사용하는 어드레스 변환 테이블을 나타내는 도면이다.
도 11a-11c는, 스페어 테이블의 RAM 용량을 압축한 예를 나타내는 도면이다.
도 12a-12c는, 사용된 RAM 용량을 압축하기 위한 어드레스 변환에 사용하는 어드레스 변환 테이블의 다른 예를 나타내는 도면이다.
도 13은, 본 발명의 제 4의 실시 형태와 관련되는 기억장치를 나타내는 구성도이다.
도 14는, 본 발명의 제 4의 실시 형태와 관련되는 소거 블록 내부의 데이터 처리에 대해 설명하기 위한 도면이다.
도 15a-15c는, 본 발명의 제 4의 실시 형태에 있어서의 어드레스 변환 테이블 갱신의 구체적인 예를 설명하기 위한 도면이다.
도 16은, 본 발명의 제 5의 실시 형태와 관련되는 기억장치를 나타내는 구성도이다.
도 17a-17b는, 본 발명의 제 5의 실시 형태와 관련되는 제어 회로의 어드레스 변환 테이블 및 페이지 상태의 관리 테이블의 구성예를 나타내는 도면이다.
도 18a-18c는, 본 발명의 제 5의 실시 형태의 무효 영역의 회복 순서를 설명하기 위한 도면이다.
도 19는, 본 발명의 제 6의 실시 형태를 나타내는 도면이며, ECC 처리와 결함 블록 관리를 도입한, 제 5의 실시 형태(도 18)의 장치 구성상의 응용 변형예를 나타내는 도면이다.
도 20은, 본 발명의 제 6의 실시 형태와 관련되는 제어 회로의 어드레스 변환 테이블 및 페이지 상태의 관리 테이블의 구성예를 나타내는 도면이다.
도 21은, 본 발명의 제 7의 실시 형태와 관련되는 컴퓨터 시스템의 구성예를 나타내는 도면이다.
도 22는, 본 발명의 제 7의 실시 형태와 관련되는 제어 회로의 어드레스 변환 테이블의 구성예를 나타내는 도면이다.
본 발명은 2005년 6월 6일 일본 특허청에 제출된 2005-165234호와, 2006년 4월 19일 제출된 2006-115779호에 기재된 주제와 관련되며, 그 내용은 본 참조난에 포함되어 있다.
본 발명은, 불휘발성 메모리를 포함하는 기억장치에 관한 것이며, 특히 플래쉬 메모리를 포함하는 기억장치에 있어서의 데이터 전송의 고속화에 관한 것이다.
근년, 디지털 스틸 카메라와 모바일 컴퓨터 기기의 기억 매체로서 플래쉬 메모리가 주목받고 있다.
플래쉬 메모리는, 터널링(tunneling)이나 핫 일렉트론 가속을 이용하고, 전자에 게이트 절연막을 통과시키고, 그것들을 부유 게이트나 트랩층에 주입하여, 셀 트랜지스터의 반응을 일으키는 최소의 물리량을 변화시킴으로써 데이터를 기억시키는 반도체 메모리이다.
적층 게이트 구조나 NMOS 구조등을 이용한 트랜지스터 1개만으로 메모리 셀을 구성할 수 있기 때문에, 저렴하면서, 대용량인 메모리를 실현할 수 있다. 그 대표적인 예로서 NAND형 플래쉬 메모리를 들 수 있다.
도 1은, NAND형 플래쉬 메모리의 내부 구성예를 나타내는 도면이다.도 1의 NAND형 플래쉬 메모리는, 비트선(BL1-BLn)에 접속된 복수의 메모리유닛트(1-1 - 1-n)가 어레이내에(수직과 수평으로) 배열되어 있다. 예를 들어, 선택용 트랜지스터 2의 게이트가 선택 게이트선(SL1)에 접속되며 선택용 트랜지스터 3의 게이트가 선택 게이트선(SL2)에 접속되어 있다. 또한, 각 메모리 셀(N0-N15)의 게이트가 워드라인(WL0-WL15)에 접속되어 있다.
각 메모리 셀(N0-N15)은 적층 게이트 구조를 가지며, 부유 게이트에저장된 전하 축적량에 따라서 데이터를 기억한다. 즉, 부유 게이트에 많은 전자가 축적되고 있으면, 트랜지스터의 반응을 일으키는 최소의 물리량이 상승하므로, 충전된 비트선(BL1-BLn)으로부터 메모리 유닛트(1)(-1에서 -n까지)로 전류 관통의 유무를, 센스 증폭기등을 포함하는 액세스 회로(4)로 검출하여 데이터 판정을 실시한다.
이러한 NAND형 플래쉬 메모리는, 메모리 셀마다 비트선으로 컨택트 영역을 제공할 필요가 없기 때문에, 특히 대용량과 염가의 기억장치의 매체에 적합하다.
그런데, 일반적으로 플래쉬 메모리의 프로그램 속도는 매우 늦고, 셀 당 수백μ 초를 필요로 한다. 또한, 데이터의 오버라이트가 발생되지 않으므로, 프로그래밍 이전에 소거를 실시할 필요가 있다. 이러한 작업에는, 수 m초의 시간이 걸린다. 이러한 문제에 대해서는, 많은 메모리 셀을 병렬처리 하여 대처하고 있 다.
즉, 예를 들어 동일 워드라인(WL0)에 접속되어 페이지 단위를 이루는 메모리 셀군(5)내에 동시에 데이터를 기입하고, 메모리 유닛트를 공유하는 페이지군으로 구성되는 셀 블록(6)을 모두 일괄적으로 소거함으로써, 프로그램의 전송 속도를 향상시키고 있다.
구체적으로는, 예를 들어 ISSCC2002 Draft, p106, 세션 6.4에는 1Gb의 NAND형 플래쉬 메모리가 게재되어 있으며, 페이지 사이즈를 2k바이트, 소거 블록 사이즈를 128kB로 하고 있다. 즉, 하나의 메모리 어레이내에서 128k바이트의 메모리 셀군을 병렬 소거하고, 메모리 셀을 2k바이트마다 병렬로 프로그램함으로써, 10MB/s의 프로그램 전송 속도를 실현하고 있다.
또한, 근년 플래쉬 메모리는 한층 더 다층화와 미세화가 진행되고 있으므로, 그에 따르는 신호량의 저하에 대처하기 위해, 비선택된 셀에 대해 악영향이 적은 기입 수법이 검토되어 실시되고 있다.
예를 들어 NAND형 플래시에 대해서는, 소거 블록내의 페이지의 기입순서에도 제한을 가하는 것이 주요 기술이 되고 있다. 특개 2002-260390호 공보에는 그 하나로서 로컬 셀프 부스트와(Local Self-Boost)로 불리는 수법을 이용한 기입 순서가 기재되어 있다. 도 1의 NAND형 플래쉬 메모리에서 그러한 기입의 예를 이하에 설명한다.
예를 들어, 메모리 셀(N1)에 기입을 실시하고, 그 부유 게이트에 전자를 주입하는 경우, 우선, 메모리 셀(N1)을 사이에 두는 전후의 워드라인 (WL0, WL2)을 각각 0V로 하고, 선택용 트랜지스터(2)를 온 상태로 하며, 선택용 트랜지스터(3)를 오프로 한다. 여기서 비트선(BL1)을 0V, 기입을 실시하고 싶지 않은 인접 비트선(BL2)을 3V로 하고, 선택 워드라인(WL1)을 20 V로, 그 이외의 전체 워드라인(WL3-WL15)을 10V로 상승시킨다. 이러한 기입 순서를 이용하면, 0V의 워드라인(WL0, WL2) 사이에 있으며, 비선택 비트선에 연결되는 노드는 다른 노드로부터 분리되어 워드라인(WL1)으로부터의 커플링이 이루어지면, 10V정도까지 전위가 상승한다. 한편, 선택된 메모리 셀(N1)에 대해서는, 인접한 셀 트랜지스터(N0)가 공핍(depletion) 상태에 있는 경우에만, 비트선(BL1)에 인가된 0V가 셀 트랜지스터(N1)의 채널에 전달되어 기입이 실시된다. 즉, 위와 같은 기입 수법을 이용하는 경우, 기입을 실시하는 셀의 비트선측의 인접 셀은 항상 소거되어 공핍 상태가 된다. 그 때문에, 블록 전체를 소거한 후, 기입동작은 메모리 셀(N15, N14, N13,.. N0)에 대해서 순서적으로 실행되는 것이 필수의 조건이 된다.
이와 같이 근년의 대용량 플래쉬 메모리에서는, 그 페이지 기입에 대해서도, 랜덤한 기입은 허용하지 않고, 블록중의 상위 어드레스로부터 하위 어드레스를 향해 차례차례 기입을 실시하는 것이 필수적으로 여겨지는 경향으로 가고 있다.
근년, 하드 디스크의 소비 전력의 크기나, 탐색 시간의 길이, 내충격성이나 휴대성등의 문제를 해소하기 위하여, 플래쉬 메모리가 그 대체 방법으로 기대되고 있다. 그러나 상술한 바와같이, 플래쉬 메모리에는 액세스 단위를 크게 하지 않으면 고속화할 수 없다는 결점이 있다. 또한, 데이터의 오버라이트가 허용되지 않으므로, 재기입은 반드시 소거가 필요하고, 그 때의 소거 블록은 한층 더 커지게 된다. 이와 같이 액세스 단위에 대해서 소거 단위가 수십배 큰 것은, 소거 시간이 길고, 기입시에 비선택 셀에 혼란(disturbances)이 생기는 플래쉬 메모리에는 일반적인 사양이다. 그러나 이에 의해 그 기입 효율은 현저하게 저하한다. 예를 들어, 작은 영역을 갱신하려고 하면, 위에서 설명한 바와 같이 기존 데이터의 복사 조작이 필요하며, 그 기입 효율은 현저하게 저하한다.
예를 들어 상기 2kB단위로 페이지를 기입하고, 128kB단위의 블록 소거하는 전송 속도 10MB/s 플래쉬 메모리를 이용하여, 하드 디스크 대체용의 기억장치를 구성한다고 가정한다. 그 전송 속도를, 직렬 ATA 접속의 고속 기억을 목표로 하는 160MB/s까지 높이려고 했을 경우, 멀티 뱅크나 다중 칩의 구성을 취하면서, 예를 들어 16개의 메모리 어레이를 병렬 동작시킬 필요가 있다.
도 2는, 그러한 기억장치를 구성하는 플래쉬 메모리의 개념도를 나타내는 도면이다. 도 2에서, 20은 실페이지 영역을, 21은 실소거 블록 영역을, 22는 메모리 영역을, 23은 버퍼 메모리를, 25는 소거가 끝난 블록을 각각 가리키고 있다.
도 2에서, 고속 전송을 실현하기 위해, 16개의 어레이(AR0-AR15)를 동시에 동작시킨다. 이 경우 데이터 기입시는, 예를 들어 페이지(P0, P1)를 동시에 기입하고, 소거시는 블록(B0-B15)을 동시 소거한다. 이 때, 기입 단위가 되는 실페이지 영역(20)은 32kB, 일괄 소거 단위가 되는 실소거 블록 영역(21)은 2MB에 이르게 된다. 즉 불과 1섹터(512B)의 데이터를 고쳐 쓰는 경우에도, 최악의 상태가 되는 2MB의 데이터의 복사 및 이동이 필요하게 된다.
이 때, 예를 들어 통상의 NAND형 플래쉬 메모리에서는 1블록에 64페이지를 포함하고, 모두를 읽어내 복사하려면 30ms를 필요로 한다. 멀티층형의 NAND형 플래시는 1블록에 128페이지를 포함하며, 각 페이지의 기입 속도 자체도 늦기 때문에, 모두를 읽어내 복사하려면 100ms이상을 필요로 한다. 따라서 실제적인 전송 성능은 현저하게 낮은 것이 되어 버린다. 이러한 사정으로부터, 플래쉬 메모리를 이용한 현재의 기억장치는, 특별히 기입시에 있어서는, 하드 디스크 드라이브보다 훨씬 낮은 전송 성능밖에 얻지 못하고 있다.
한편, 통상의 파일 시스템에서는, 최소의 기입 단위를 이루는 클러스터 사이즈는 4kB정도이며, 이 단위는 랜덤인 액세스를 위해 이용된다. 게다가 통상의 파일 기억장치는, ATA등의 인터페이스 사양에 따라서, 예를 들어 512바이트의 섹터 단위로 랜덤 억세스 된다. 그 경우, 예를 들어 페이지(P0와 P1)만을 고쳐 쓰는 요구가 빈번히 발생한다. 그러나, 상술과 같은 장치로 그러한 액세스를 실시하면, 결국 실소거 블록 영역(21) 전체를 소거해야 한다. 한편 그 중의 비선택 영역에 유효 파일이 있으면, 그것을 소거로부터 보호할 필요가 있다. 그 전형적인 예는 도 2와 관련하여 다음과 같이 설명된다.
1. 우선 플래쉬 메모리로부터, 별도 설치된 버퍼 메모리(23)의 메모리 영역(22)에, 실소거 블록 영역(21) 전체의 데이터를 읽어낸다.
2. 다음에 메모리 영역(22)내에서, 페이지(P0와 P1)에 상당하는 데이터를 갱신한다.
3. 다음에 플래쉬 메모리상의 블록 영역(21)의 소거를 실행한다.
4. 마지막으로, 상기 소거된 영역(21)에, 갱신 후의 메모리 영역(22)의 블록 데이터를 모두 다시 기입한다.
즉, 4 k바이트의 기입을 위해서, 실제적으로, 소거와 2MB의 데이터의 읽기 및 기입이 필요하다. 구체적으로는, 1페이지 분의 데이터의 읽기 및 기입에는 각각 200μs를 필요로 하며, 블록의 소거에는 2ms를 필요로 하므로, 30ms 정도가 필요하다.
이에 대해, 미리 예비 소거가 끝난 블록(25)을 준비해 두고, 소거가 끝난 블록(25)에 실소거 블록 영역(21)의 원래의 데이터와 페이지(P0와 P1)를 갱신한 후의 데이터를 합성시키고 기입을 실시하는 수법도 있다. 이 경우, 가상 어드레스(virtual address)의 구성을 이용하여, 소거 블록 단위로 논리 어드레스와 물리 어드레스의 대응성을 갱신한다. 액세스 대상으로 여겨진 논리 어드레스에 대응하는 물리 블록은 원래의 소거 블록 영역(21)으로부터 데이터가 이동되는 블록 영역(25)에 추가된다. 그러나 이 경우도, 유효 데이터를 소거 블록 영역(21)으로부터 목적지 블록 영역(25)으로 캐싱(caching)하는 작업이 필요하다. 또한 이 때, 통상은 원래의 블록 영역 (21)을 소거하고, 예비 블록으로 대체한다. 따라서, 결국은 종래와 거의 같은 읽기, 기입, 및 소거작업이 필요하고, 큰 오버헤드가 생기는 것에는 변함이 없다.
따라서, 실제적인 전송 성능은 현저하게 낮게 되어 버린다. 이러한 사정으로부터, 플래쉬 메모리를 이용한 현재의 기억장치는, 특별히 기입시에 있어서는, 하드 디스크 드라이브보다 훨씬 낮은 전송 성능 밖에 얻지 못하고 있다.
또, 전술한 바와같이, 근년 NAND형 플래쉬 메모리에서는, 같은 소거 블록내의 페이지는 하위 어드레스로부터 상위 어드레스의 순서로 기입할 수 없다. 이와 같이 소거 블록내의 기입 순서에도 제한이 가해진 경우, 문제는 한층 더 심각하게 된다. 일반적인 파일 시스템에 대해서는, 섹터간의 기입 순서에 대해서는 보증되지 않는다. 따라서, 소거 블록 도중부터 기입이 이루어지는 것이 자주 있지만, 그 경우, 블록내에 있어서의 하위, 즉 전방의 어드레스 영역이 비어 있어도, 거기에 데이터는 쓸 수 없게 된다. 그 결과, 다음에 그러한 영역에 기입 요구가 발생되면, 재기입과 같은 처리가 필요하며, 전술의 데이터 캐싱, 소거, 기입을 반복하지 않을 수 없게 된다.
이러한 문제는 단지 전송 성능을 저하시킬 뿐만 아니라, 플래쉬 메모리의 소거 횟수를 증가시켜, 그 수명까지 저하시켜 버린다. 또한 거대한 파일을 재기입하는 경우에도, 그 선두는 소거 블록의 중도에 존재하는 경우가 대부분이므로, 역시 동일 블록내에 존재하는 재기입을 위해 사용되지 않는 데이터는 캐시되어야 한다. 이러한 조작은 파일 액세스의 지연시간에 영향을 준다. 파일의 말미에 대해서도 같은 오버헤드가 발생한다.
그러므로, 본 발명의 목적은, 전송 속도의 저하나 기입시의 열화(deterioration)의 발생을 저감하는 것이 가능하고, 나아가서는 신뢰성이 높고, 고속의 기억 시스템을 실현할 수 있는 기억장치를 제공하는 것에 있다.
본 발명의 제 1의 양태에 따르면, 병렬로 액세스 가능한 복수의 메모리를 포함하는 플래쉬 메모리부와, 상기 복수의 메모리의 2개 이상으로부터 병렬로 데이터 를 취득하고, 일시적으로 기억하는 페이지 레지스터와, 상기 페이지 레지스터에 병렬로 저장되는 데이터 단위로 논리 어드레스와 물리 어드레스의 대응성을 관리하는 어드레스 변환 테이블을 가지며, 상기 어드레스 변환 테이블의 갱신과 기억 미디어에 대한 추가 기입에 의해 데이터를 재기입하는 기억장치가 제공된다.
바람직하게는, 상기 페이지 레지스터에 저장되는 데이터 단위는 복수의 섹터를 포함하며, 상기 기억장치는 섹터 단위로 데이터를 액세스한다.
본 발명의 제 2의 양태에 따르면, 논리 어드레스와 물리 어드레스의 대응성을 나타내는 어드레스 변환 테이블과, 상기 어드레스 변환 테이블에 따라서 데이터를 저장하고, 상기 어드레스 변환 테이블의 갱신과 기억 미디어에 대한 추가 기입을 실행함으로써, 데이터를 재기입하는 기능을 가지며, 상기 데이터는 예비 영역을 가지며, 상기 예비 영역에는 데이터의 논리 어드레스와 상기 데이터의 갱신 이력을 나타내는 정보가 기재되어 있는 기억장치가 제공된다.
바람직하게는, 상기 갱신 이력은, 데이터를 상기 기억 미디어에 기입할 때의 타임 스탬프 또는 데이터를 상기 기억 미디어에서 갱신하는 갱신 횟수를 포함한다.
바람직하게는, 상기 기억 미디어를 스캔하고, 상기 예비 영역의 논리 어드레스와 갱신 이력을 기초로 하여, 어드레스 테이블을 재구축 하는 기능을 가진다.
본 발명의 제 3의 양태에 따르면, 논리 어드레스와 물리 어드레스의 대응성을 나타내는 어드레스 변환 테이블과, 상기 어드레스 변환 테이블에 따라서 데이터를 저장하고, 상기 어드레스 변환 테이블의 갱신과 기억 미디어에 대한 추가 기입을 실행함으로써, 데이터를 재기입하는 기능과, 카운터를 가지며, 미디어 전역 또 는 복수 데이터를 포함하는 특정 영역에 대해서 상기 추가 기입이 실행될 때마다 카운터치가 갱신되어, 상기 카운터치 또는 상기 카운터치와 정확하게 대응하는 값이, 상기 데이터의 예비 영역에 데이터와 동시에 기입되는 기억장치가 제공된다.
본 발명의 제 4의 양태에 따르면, 논리 어드레스와 물리 어드레스의 대응성을 나타내는 어드레스 변환 테이블과, 상기 어드레스 변환 테이블에 따라서 데이터를 저장하고, 상기 어드레스 변환 테이블의 갱신과 기억 미디어에 대한 추가 기입을 실행함으로써, 데이터를 재기입하는 기능과, 장치에 입력된 논리 어드레스를, 상기 어드레스 변환 테이블에 의해 제 1의 물리 어드레스로 변환하고, 기억 미디어상에 결함 영역을 비선택적으로 만드는 어드레스 변환 기능을 가지며, 상기 제 1의 물리 어드레스의 적어도 일부 비트는, 상기 어드레스 변환 기능에 의해 제 2의 물리 어드레스로 변환되며, 기억 미디어는 상기 제 2의 물리 어드레스와 상기 제 1의 물리 어드레스의 나머지의 비트를 이용해 액세스되는 기억장치가 제공된다.
본 발명의 제 5의 양태에 따르면, 논리 어드레스와 물리 어드레스의 대응성을 나타내는 어드레스 변환 테이블과, 상기 어드레스 변환 테이블에 따라서 데이터를 저장하고, 상기 어드레스 변환 테이블의 갱신과 기억 미디어에 대한 추가 기입을 실행함으로써, 데이터를 재기입하는 기능과, 상기 기억 미디어에 있어서의 결함 영역과 미기입 영역의 소재를 나타내는 테이블과, 결함 영역 이외의 미기입 영역을 상기 추가 기입을 위한 영역으로 선택하는 기능을 가지는 기억장치가 제공된다.
본 발명의 제 6의 양태에 따르면, 기억 미디어로서의 플래쉬 메모리와, 논리 어드레스와 물리 어드레스의 대응성을 나타내는 어드레스 변환 테이블에 따라서 데 이터를 저장하고, 상기 어드레스 변환 테이블의 갱신과 기억 미디어에 대한 추가 기입을 실행함으로써, 데이터를 재기입하는 기능과,상기 재기입에 의해 무효화된 영역을 포함하는 제 1의 소거 블록내에 잔존하고 있는 유효 데이터를, 선택적으로 소거된 제 2의 소거 블록에 차례대로 복사하고, 그 후에 상기 제 1의 블록을 소거하여, 상기 무효화된 영역에 신규 기입을 할 수 있도록 하는 회복 처리를 실시하는 기능을 가지는 기억장치가 제공된다.
이하, 본 발명의 실시 형태를 도면을 참조하면서 설명한다.
도 3은, 본 발명의 제 1의 실시 형태와 관련되는 기억장치를 나타내는 구성도이다.
도 3의 기억장치(30)는, 인터페이스 회로(I/F)(31), 페이지 버퍼 (32), 내부 데이터 버스(33), 전송 제어 회로(34), 및 NAND형 플래쉬 메모리(35, 36)를, 주구성 요소로 가지고 있다.
기억장치(30)에서, 32비트의 내부 데이타 버스(33)에는, 16비트의 입출력을 가지는 2칩의 NAND형 플래쉬 메모리(35, 36)가 병렬 접속되어 있다. 2개의 NAND형 플래쉬 메모리(35, 36)는 판독이나 기입시에, 동시에 병렬로 액세스된다. 페이지 버퍼(32)는, 액세스된 페이지 데이터를 내부 데이터 버스(33)를 통해 일시 기억하며, 외부와는 인터페이스 회로(31)에 접속되어 있다. 전송 제어 회로(34)는, 2개의 칩의 플래쉬 메모리(35, 36)와 페이지 버퍼(32)간의 전송을 관리한다. 전송 제어 회로(34)는, RAM(37)을 내장하고 있으며, 내장된 RAM(37)에는 도 4에 도시한 어드레스 변환 테이블 (38)이 구축되어 있다.
기억장치(30)는 다음과 같이 액세스된다. 여기에서는, 단순성을 위해, 16 진수의 어드레스는 다음과 같이 할당된다고 가정한다. 예를 들어 외부 입력 어드레스가 “0x5500C”일 경우, 상위 “0x5500”은 페이지 어드레스, 하위 “0xC”는 페이지 안의 섹터 어드레스이며, 기억장치는 1섹터 단위로 랜덤 억세스가 가능하다.
판독시에, 외부로부터 “0x5500C”의 섹터 드레스가 입력되면, 전송 제어 회로(34)는 상위의 페이지 어드레스를 받아 내장 RAM(37)을 액세스 하고, 어드레스 변환 테이블(38)로부터 논리 페이지 어드레스(LA:LOGICAL ADDRESS)“0x5500”에 대응하는 물리 페이지 어드레스(PA:PHISICAL ADDRESS)“0x00B0”을 취득한다. 이 물리 어드레스를 기초로 메모리 칩이 되는 NAND형 플래쉬 메모리(35,36)가 모두 액세스되어, 각각으로부터 페이지 어드레스 “0x00B0”에 저장된 페이지 데이터(39,40)가 판독되어 페이지 버퍼(32)에 저장된다. 인터페이스 회로(31)는 페이지 버퍼(32)의 페이지 데이터중에서, 하위 어드레스 “0xC”에 상당하는 섹터를 선택하고, 외부에 출력한다.
한편, 외부로부터 “0x5500C”에 기입을 실시하는 경우는, 우선 판독과 같은 순서대로 페이지 데이터(39,40)가 메모리칩이 되는 플래쉬 메모리 (35,36)로부터 판독되어 페이지 버퍼(32)에 저장된다. 그 후 하위 어드레스 “0xC”에 상당하는 섹터가 선택되어, 외부로부터 입력된 데이터로 갱신된다. 갱신 후의 페이지 데이터는, 플래쉬 메모리(35,36)에 다시 기입된다. 그 때 데이터는 각각의 빈 영역(41,42)에 기입된다. 게다가 페이지 테이블의 논리 어드레스 "0x5500"에 대응하는 물리 어드레스는, 빈영역 (41, 42)의 어드레스 "0x0280"으로 갱신된다. 이와 같이 갱신된 데이터는, 플래쉬 메모리상의 적당한 빈 영역에, 기입된다. 랜덤 페이지(random pages)가 갱신되더라도, 논리 어드레스로부터 물리 어드레스로 리맵핑하는 단계에 의해 소거가 끝난 블록내의 하위 어드레스로부터 차례차례 연속적으기입하는 것이 가능하게 된다.
본 구성에서는 2개의 메모리 칩이 되는 플래쉬 메모리(35, 36)가 병렬로 배치되어 있으며, 각각으로부터 판독된 페이지 데이터가, 페이지 버퍼 (32)에 함께 저장된다. 이 때, 단독 단일한 칩을 사용했을 경우에 비해 메모리 용량은 2배가 되지만, 논리 페이지의 용량이 2배가 되므로, 페이지수는 증가하지 않는다. 따라서, 어드레스 변환 테이블(38)은 변화하지 않고, 그것을 저장하는 RAM(37)의 용량도 증가하지 않는다.
한편, 병렬 구성의 단점, 즉 소거 횟수의 증가나, 재기입 수고(rewriting fatigues)의 가속화는 페이지 단위의 어드레스 변환을 이용하는 추기형(추가 기입 형태)(additional write type)의 기입에 의해 큰 폭으로 완화된다. 즉, 플래쉬 메모리의 고정도 병렬구성과, 페이지 단위의 어드레스 변환에 의한 추기형 기입은, 양자를 조합함으로써 서로의 약점을 서로 보충한다. 그리고 특히 메모리 셀의 기입 시간이 속도를 결정하는 기입 공정에 대해서는, 병렬도에 비례하여 전송 속도가 향상된다.
본 실시 형태에 대해서는, 16비트 IO칩 2개를 32비트 버스에 접속하여 완전 한 병렬 동작이 이루어졌지만, 요점은 실효적인 페이지 사이즈를 병렬도(parallelness)에 비례하여 증가시키는 형태로 액세스할 수 있으면 좋은 것이고, 병렬화의 수법은 여러가지 형태가 생각된다. 예를 들어, 두 개의 메모리 칩은 반드시 정확하게 동시에 판독과 기입을 개시할 필요는 없다. 각 메모리에 대한 기입 동작은 페이지 버퍼로부터 메모리 칩으로 데이터를 전송하는 공정과 메모리 칩내에 기입하는 공정의 두 개의 처리(작업)를 포함하지만, 예를 들어 16비트의 버스가 두 개의 칩에 의해 공유되면, 전송은 개별적으로 실시된다. 그 경우, 페이지 버퍼로부터 한쪽 편의 메모리 칩에 데이터를 전송하고 있는 동안에, 다른 메모리 칩내에서 기입이 시작된다. 즉, 두 개의 칩으로 데이터가 차례대로 전송된 후에, 기입을 동시에 시작해도 좋다. 이와 같이, 각각의 칩의 동작 타이밍을 오프세팅(offsetting)하면서 양자를 병렬 동작시키는 수법은 일반적이며, 그러한 케이스에도 본 발명은 문제없이 적용할 수 있다. 또한, 예를 들어, 1개의 칩이 2개의 뱅크에 의해 구성되고, 다른 메모리 어레이로부터 동시에 데이터가 판독되거나 또는 다른 메모리 어레이에 동시에 기입된 데이터가 하나의 실효 페이지를 구성하는 경우에도, 같은 효과를 얻을 수 있다.
전술한 바와같이, 근년의 플래쉬 메모리의 상당수는, 동일 블록내의 페이지 기입 순서에 대해서도, 하위 어드레스로부터 순서대로 기입하도록 제한되어 있다. 이러한 단점을 가지고 상술한 추기형 기입을 실시했을 경우에 생기는 문제점과 해결법에 대해서, 도 5a, 5b를 참조하여 구체적으로 설명한다.
어드레스 변환 테이블(38b)은 RAM(37)상에 구성되지만, 그것은 전원을 떨어 뜨리면 사라져 버린다. 그 전에 플래쉬 메모리(35b)내에 전용 영역을 제공하여 데이터를 보존해 두는 방법도 있지만, 정전에 의한 전원 단절등을 고려하면, 완벽한 대책이라고는 할 수 없다. 어드레스 변환 테이블이 소실 혹은 손상되었을 경우, 메모리에 대한 액세스 자체를 전혀할 수 없게 되어, 전체 데이터가 파괴된다는 치명적 상황에 빠지므로, 그 보호는 지극히 중요하다.
따라서, 페이지 데이터를 기입할 때 마다, 그 중에 예비 영역(spare region)을 설치하고, 테이블의 갱신 내용을 반영해 두는 것이 최선의 대책이 된다. 구체적으로는, 그 페이지의 논리 어드레스를 기재해 둔다. 이에 의해, 전원 투입시에 플래쉬 메모리(35b)에 의해 구성된 칩의 보존 데이터를 상위(물리) 어드레스로부터 스캔해 나가는 것이 가능하여, 물리 어드레스와 논리 어드레스와의 대응성이 판명되어, 변환 테이블을 재구축할 수 있다. 여기서 논리 페이지 "0x5500"이 갱신되고 원래의 페이지 데이터(39b)가 갱신되고, 갱신 후 데이터가 빈 영역(41b)에 기입되어 있다고 가정한다. 이 때, 페이지 데이터(39b)의 예비 영역(43b)에는 이미 논리 페이지 어드레스 “0x5500”이 기재되어 있으며, 빈 영역(41b)의 예비 영역(45b)에도 같은 논리 어드레스 “0x5500”이 기재된다.
그런데, 동일 블록내의 페이지의 기입순서가 규정되어 있는 경우, 페이지(39b)내에 미기입의 예비 영역이 있더라도, 기입은 불가능하게 된다. 즉 갱신되어 무효화된 원래의 페이지를 나중에 표시하는 수단이 없다. 그렇게 되면, 테이블 재구축을 위해서 스캔을 실시하는 시점에서는 유효 데이터와 무효 데이터의 판별이 되지 않기 때문에, 같은 논리 어드레스가 복수개 나타나고, 올바른 어드레스 변환 테이블을 구축할 수 없게 된다.
그러므로, 본 실시 형태에서는, 각 페이지 데이터의 기입시에, 그 예비 영역에 논리 어드레스와 함께, 어느 데이터가 최신 데이터인지를 판별하기 위한 갱신 이력을 기재한다. 예를 들어, 갱신시의 타임 스탬프, 또는 논리 어드레스에 대응하는 누계 갱신 횟수를 기재해 둔다. 누계 갱신 횟수에 관해서는, 예를 들어 모든 논리 어드레스에 있어서의 갱신의 누계 횟수, 혹은 분할한 논리 어드레스마다의 갱신의 누계 횟수를 보관 유지하는 카운터를 메모리에 제공하고, 각 페이지 데이터의 기입시에 대응하는 카운터치를 증가시키고, 그 결과를 상기 예비 영역에 기재해 두는 것이 좋다.또, 블록내의 페이지 기입 순서가 규정되어 있는 경우에는, 동일 블록내의 페이지의 상대적인 에이지(relative ages)는 명확하게 정해지므로, 상기 카운터는 기입된 블록이 바뀌었을 때만 카운터치를 증가시키고, 그것을 누계 갱신 횟수라고 한다. 어드레스 변환 테이블의 재구축시에는, 그 이력을 참조하여 가장 새로운 논리 어드레스와 물리 어드레스의 대응성을, 테이블에 반영시킨다.
구체적인 테이블의 재구축은, 메모리 용량을 절약하기 위해, 예를 들어 다음과 같이 실시하면 좋다. 어드레스 변환 테이블(38b)과 함께, 같은 메모리상에 예비의 테이블 영역(예비 테이블)(46b)을 준비해 둔다. 플래쉬 메모리(35b)의 물리 어드레스를 스캔하여 페이지 데이터를 판독하고, 논리 어드레스를 취득할 때마다, 논리 어드레스와 물리 어드레스의 대응성을 어드레스 변환 테이블(38b)에 반영해 둔다. 전술의 예에 따르면, 이 때, 예를 들어 플래쉬 메모리(35b)의 “0x00B0”의 페이지를 판독하면, 논리 어드레스 “0x5500”이 취득되므로, 우선 “0x5500 ”의 논리 어드레스에 대응하는 물리 어드레스의 필드(47b)에 “0x00B0”이 기재된다. 게다가, 차례차례 스캔을 계속하여, “0x0280”의 페이지를 읽어내면, 같은 논리 어드레스 “0x5500”이 취득되어지나, 이미 “0x5500”에 대응하는 물리 어드레스 필드 (47b)에는 “0x00B0”이 기입되어 있다. 이와 같이 하여 물리 어드레스의 중복이 검출되면, 예비 테이블(46b)상에 기억 영역(48b)이 확보되어 물리 어드레스 필드(47b)의 값은 예비 테이블(46b)에 있어서의 기억 영역(48b)의 인덱스에 재기입된다.
이와 같이. 물리 어드레스가 중복된 논리 어드레스에 대해서 기억 영역이 확보되면, 다시 플래쉬 메모리(35b)의 물리 어드레스를 최초부터 스캔한다. 이와 같이 재차 “0x00B0”의 페이지를 읽어내면, 논리 어드레스 “0x5500”이 취득되지만, 그 물리 어드레스의 필드(47b)는 예비 테이블(46b)상의 기억 영역(48b)에 그 인덱스를 저장하고 있다. 그러므로, 기억 영역(48b)에 물리 어드레스 “0x00B0”과 상기 이력 데이터가 기입된다. 차례차례 스캔을 계속하여 ”0x0280“의 페이지를 읽어내면, 같은 논리 어드레스 ”0x5500“이 취득되어, 동일한 방법으로 기억 영역(48b)에 대한 인덱스가 취득된다. 여기에 기재되어 있는 이력 데이터를 스스로의 이력 데이터와 비교하면, 스스로의 이력이 더욱 새로우면, 물리 어드레스와 이력 데이터를 고쳐 기입한다.
이와같이 두 번째의 스캔이 종료하면, 예비 테이블(46b)에는 최신의 물리 어드레스가 저장되게 된다. 그 후 어드레스 변환 테이블(38b)을 위로부터 스캔하고, 물리 어드레스의 필드에 예비 테이블(46b)에 대한 인덱스가 있으면, 그 값을 인덱스의 목적지에 저장된 물리 어드레스로 대체시킨다. 이상의 과정을 거쳐, 완전한 어드레스 변환 테이블이 재구축 된다.이러한 방식에서는, 물리 어드레스와 중복된 논리 페이지 어드레스에 대해서만 이력 데이터를 저장하는 메모리가 확보되므로, 어드레스 변환 테이블에 관련한 RAM의 사용량을 줄일 수 있다.
대용량의 플래쉬 메모리에 대한 결함의 관리도 중요하게 된다. 예를 들어 플래쉬 메모리의 경우, 하나의 메모리 셀에, 예를 들어 게이트 파괴등의 결함이 있으면, 그것은 소거 블록 전체의 신뢰성을 저하시킨다. 따라서, 결함은 일반적으로 소거 블록의 단위로 관리되고, 결함 셀을 포함하는 소거 블록은 예비 블록으로 치환된다. 이러한 치환은 에러 수정시에 결함을 검출함으로써, 출하 후에 동적으로 실행된다. 또, 동시에 이러한 블록 관리는 소거 횟수의 평균화등에도 사용된다. 몇몇 경우에서는, 재기입 횟수가 많은 블록과 적은 블록으로 데이터를 대체하는 대책이 취해지기도 한다.
이러한 소거 블록 단위의 메모리 관리와 페이지 단위로 메모리 관리를 달성하는 실시예는 도 6을 참조하여 설명한다.
도 6은, 제 2의 실시 형태와 관련되는 기억장치를 나타내는 구성도이다. 도 7a, 7b는 제 2의 실시 형태와 관련되는 전송 제어 회로에 있어서의 어드레스 변환 테이블의 구성예를 나타내는 도면이다.
제 2의 실시 형태와 관련되는 기억장치(30C)의 기본 구성은 제 1의 실시 형태에 있어서의 플래쉬 메모리를 1개의 칩으로 한 것에 가깝지만, 전송 제어 회로(34c)에는 페이지 어드레스의 변환 테이블(38c)을 구성하는 RAM(37c)과 함께, 소 거 블록 단위의 어드레스 변환 테이블(51c)을 구성하는 RAM(50c)이 탑재되어 있다. 논리 어드레스와 물리 어드레스를 연결할 때에 결함 블록을 정상 블록으로 대체함으로써, 어드레스 변환 테이블(51c)은 결함을 포함하는 블록에 대한 액세스를 방지한다.
기억장치(30C)의 액세스는 이하와 같이 된다. 판독시에, 예를 들어 외부로부터 “0x5500C”의 섹터 드레스가 입력되면, 전송 제어 회로(34c)는 상위의 페이지 어드레스 “0x5500”를 받아 내장 RAM(37c)을 액세스하고, 어드레스 변환 테이블(38c)로부터 상기 논리 페이지 어드레스(LPA)에 대응하는 물리 페이지 어드레스(PPA)“0x0180“를 취득한다. 이 물리 어드레스 가운데, 상위의 ”0x01“은 소거 블록에 대응하는 어드레스이며, 이 값은 어드레스 변환 테이블(51c)에 의해서 재차 변환되어 물리 블록 어드레스 (PBA) ”0x70“이 취득된다. 실제의 플래쉬 메모리(35c)에서는, 어드레스 변환 테이블(38c)로부터 얻어지는 하위의 물리 페이지 어드레스 ”0x80“와 어드레스 변환 테이블(51c)로부터 얻어지는 물리 블록 어드레스 ”0x70“이 합성되어, 메모리상의 물리 어드레스 ”0x7080“에 상당하는 페이지 영역(39c)이 액세스 되어 페이지 버퍼(32c)에 저장된다. 인터페이스 회로(31c)는 그 중에서, 하위 어드레스 ”0xC“에 상당하는 섹터를 선택하여, 외부에 출력한다.
한편, 외부로부터 “0x5500C”에 기입을 실시하는 경우는, 우선 판독과와 같은 순서대로 페이지 데이터(39c)가 메모리 칩인 플래쉬 메모리(35c)로부터 판독되어 페이지 버퍼(32c)에 저장된다. 그 후, 하위 어드레스 “0 xC”에 상당하는 섹터가 선택되어 외부로부터 입력된 데이터로 갱신된다. 갱신 후의 페이지 데이터는, 플래쉬 메모리(35c)에 다시 기입되지만, 그 때 어드레스 변환 테이블(51c)의 각 논리 어드레스에 대응하는 물리 어드레스가 참조되어 그 블록내의 빈영역이 검색된다. 예를 들어, 논리 어드레스 (LBA) “0x40”에서, 대응하는 물리 어드레스 PBA(0x71)의 블록에 적당한 빈 영역(41c)이 존재하며, 그 메모리상의 페이지 어드레스는 “0x71F0”이라고 가정한다. 이 때 페이지 데이터는 빈 영역(41c)에 기입되며, 페이지 테이블의 논리 어드레스(LPA) “0x5500“에 대응하는 물리 어드레스(PPA)는 “0x40F0”으로 갱신된다.
이러한 가상 어드레스의 계층화는, 복수 칩이나 복수 뱅크의 병렬화에 대해서도, 융통성 있는 관리를 가능하게 한다. 도 8에 병렬화된 2개의 칩을 이용한 제 3의 실시 형태를 도시하고 있다.
도 8은, 제 3의 실시 형태와 관련되는 기억장치를 나타내는 구성도이다. 도 9a, 9b는 제 3의 실시 형태와 관련되는 전송 제어 회로에 있어서의 어드레스 변환 테이블의 구성예를 나타내는 도면이다.
제 3의 실시 형태와 관련되는 기억장치(30D)에서는 제 2의 실시 형태의 플래쉬 메모리의 2개의 칩을 병렬로 배치하고, 소거 블록 단위의 어드레스 변환 테이블(51d)에 있어서의 물리 어드레스 필드(PBA0와 PBA1)를 플래쉬 메모리(35d, 36d)의 칩들에 대해 개별적으로 설치했다. 즉, 전송 제어 회로(34d)에 내장된 RAM(50d)에는, 소거 블록 단위의 어드레스 변환 테이블이 실질적으로 2세트 구성되어 있다.
기억장치의 액세스는 이하와 같이 된다. 판독시에, 예를 들어 외부로부터 “0x5500C”의 섹터 드레스가 입력되면, 전송 제어 회로(34d)는 상위의 페이지 어드레스 “0x5500”를 받아 내장 RAM(37d)에 액세스하고, 어드레스 변환 테이블(38d)로부터 상기 논리 페이지 어드레스(LPA)에 대응하는 물리 페이지 어드레스(PPA) “0x0180”을 취득한다. 이 물리 어드레스 가운데, 상위의 “0x01”은 소거 블록에 대응하는 어드레스이며, 이 값은 어드레스 변환 테이블(51d)에 의해서 재차 변환되어 메모리 칩인 플래쉬 메모리 (35d)에 대한 물리 블록 어드레스(PBA0) “0x70” 및 플래쉬 메모리(36d)에 대한 물리 블록 어드레스(PBA1) “0x01”이 취득된다. 실제의 플래쉬 메모리 (35d)에 대해서는, 어드레스 변환 테이블(38d)로부터 얻어지는 하위의 물리 페이지 어드레스 “0x80”과 어드레스 변환 테이블(51d)의 PBA0 필드로부터 얻어지는 물리 블록 어드레스 “0x70”이 합성되어, 메모리상의 물리 어드레스 “0x7080”에 상당하는 페이지 영역(39d)이 액세스된다. 플래쉬 메모리(36d)에 대해서는, 어드레스 변환 테이블(38d)로 얻어지는 하위의 물리 페이지 어드레스 “0x80”과 어드레스 변환 테이블(51d)의 PBA1 필드로부터 얻어지는 물리 블록 어드레스 “0x01”이 합성되어, 메모리상의 물리 어드레스 “0x0180”에 상당하는 페이지 영역(40d)이 액세스 된다. 양자로부터 판독된 페이지 데이터는 페이지 버퍼(32d)에 일괄 저장된다. 인터페이스 회로(31d)는 그 중에서, 하위 어드레스 “0xC”에 상당하는 섹터를 선택해, 외부에 출력한다.
한편, 외부로부터 “0x5500d”에 기입을 실시하는 경우는, 우선 판독과 같은 순서대로 페이지 데이터(39d, 40d)가 각각 메모리칩인 플래쉬 메모리 (35d, 36d)로 부터 판독되어 페이지 버퍼(32d)에 일괄 저장된다. 그 후 하위 어드레스 “0xC”에 상당하는 섹터가 선택되어 외부로부터 입력된 데이터로 갱신된다. 갱신 후의 페이지 데이터는, 플래쉬 메모리(35d 및 36d)에 다시 기입되지만, 그 때 어드레스 변환 테이블(51d)의 각 논리어드레스에 대응하는 물리 어드레스가 참조되어 그 블록내의 빈 영역이 검색된다. 예를 들어, 논리 어드레스(LBA) “0x40”에 대응하고, 플래쉬 메모리(35d)상의 물리 어드레스(PBA0) “0x71”의 블록에 빈 영역(41d)이 존재하고, 플래쉬 메모리 (36d)상의 물리 어드레스(PBA1) “0x7C”의 블록에 빈 영역(42d)이 존재한다고 가정한다. 이 때, 메모리상의 페이지 어드레스는 각각 “0x71F0” 및 “0x7CF0”이 된다. 이 때 페이지 데이터는 빈 영역((41d, 42d)에 기입되어지며, 페이지 테이블(38d)의 논리 어드레스(LPA) “0x5500”에 대응하는 물리 어드레스(PPA)는 “0x40F0”으로 갱신된다.
본 실시 형태에서는 독립한 물리 어드레스 필드를 가지는 소거 블록 단위의 어드레스 변환 테이블(51d)을 채용하여, 플래쉬 메모리(35d 및 36d)의 결함 관리를 완전히 독립적으로 실시할 수 있다. 한편, 그것들은 페이지 단위의 어드레스 변환 테이블(38d)에서는, 단일한 칩과 같이 다루어진다. 이와 같이, 본 실시 형태에 있어서의 가상 어드레스의 계층화는, 추기형의 기억장치에서, 칩 마다 독립한 복잡한 결함 관리도 가능하게 된다.
상기 실시 형태에서는 블록 레벨의 어드레스 변환에 어드레스 변환 테이블(51d)을 사용했다. 그러나 이러한 대조 테이블을 사용하면, 각각의 칩 마다 물리 어드레스 필드를 마련할 필요가 있으며, RAM 용량에 문제가 생기게 된다. 이 에 대해서 사용 RAM 용량을 압축한 어드레스 변환의 예를 나타낸다. 하드웨어 구성은 도 8과 마찬가지로 한다.
도 10a - 10c는, 사용 RAM 용량을 압축한 어드레스 변환에 사용하는 어드레스 변환 테이블을 나타내는 도면이다.
RAM(37d)에 저장되는 어드레스 변환 테이블(38g)은 제 3의 실시 형태와 같다. 다만, RAM(50d)에는 보다 소형의 테이블(51g 및 52g)이 저장되어 있다. 본 예에서는, 각 논리블록 어드레스(LBA)에 대해서는, 미리 같은 값의 물리 블록 어드레스(0x00 - 0x6F)가 암시적으로 이미 할당되어 있다. 한편, 물리 블록 어드레스(0x70 - 0x7F)의 영역은 스페어 블록에 할당된다. 블록 테이블(51g)에는 단지 1비트의 결함 플래그(DEF)와 스페어 테이블의 인덱스를 저장하기 위한 5비트의 필드(SID)가 제공되어 있다. 한편 스페어 테이블(52g)에는, 각 스페어 인덱스(SID)에 대응하여, 각 플래시 칩의 결함 플래그(DEF0, DEF1)와 스페어 오프셋(SOF0, SOF1)이 저장되어 있다.
예를 들어, 외부로부터 논리 페이지 어드레스(LPA) "0x5500"에 액세스가 되어, 어드레스 변환 테이블(38g)로부터 물리 페이지 어드레스(PPA) "0x0180“을 취득했다고 가정한다. 이 물리 어드레스 가운데, 상위의 ”0x01”은 소거 블록에 대응하는 논리 어드레스이다. 테이블(51g)에서, 블록 어드레스(LBA) “0x01”에 결함 플래그가 설정되며, 스페어 인덱스 필드 (SID)에는 10이 기록되어 있다. 스페어 테이블(52g)을 참조하면, 칩(35 d)에는 결함이 없고, 칩(36d)에서는 스페어 오프셋(SOF1) "0x4"에 대응하는 스페어 블록으로 결함 블록이 치환되어야 한다는 것을 알 수 있다. 따라서, 변환 후의 물리 블록 어드레스는 칩(35d)내의 논리 어드레스와 같은 "0x01"로, 칩(36d)에서는 스페어군으로부터 "0x74"라고 판정된다. 그것들은 페이지의 하위 어드레스 (80)과 합성되고, 각각의 플래쉬 메모리에 있어서의 대응 페이지 "0x0180 및 0x7480"이 액세스 된다.
제 3의 실시 형태에 있어서의 테이블(51d)에서는 112개의 각 논리 블록에 대해서, 각 플래시 칩의 물리 어드레스 저장용으로 7비트 필드가 설치되어 있었다. 따라서 최소한 7x2x112 - 1.57k비트의 메모리 용량을 필요로 했지만, 테이블(51g)은 각 논리 어드레스에 6비트, 테이블(52g)은 32개의 스페어 블록에 10비트를 사용할 뿐이므로, 합해도 6x112+10x32 - 0.99k비트면 충분하다. 따라서, 사용하는 RAM 용량을 압축할 수 있다.
이와 같이 결함 블록을 회피하기 위한 변환 수법에는 다양한 변형 방법이 생길 수 있다. 그러나 어느 경우에서도, 우선 어드레스 변환 테이블을 이용하여 페이지 단위의 어드레스 변환을 실시한 후, 그 일부 비트에 재차 결함 회피용의 변환을 실행하고, 변환 후의 값을 나머지의 비트로 합성시켜 플래쉬 메모리에 액세스하고 있다. 이에 의해서 페이지 단위의 기입과 블록 단위의 결함 관리를 유연하게 달성시키는 것이 가능하게 된다.
게다가, 상기 실시 형태의 스페어 테이블의 RAM 용량을 압축한 예를 도 11a - 11c에 도시하고 있다.
예를 들어, 도 10의 실시 형태의 칩 수가 2개에서 4개로 증가했을 경우, 도 10의 스페어 테이블(52g)의 각 행은 횡방향에 필드를 동일한 수만큼 추가하게 된 다. 한편, 결함을 포함한 블록의 총수도 최대 2배로 될 수 있으므로, SID도 두 배가 되어, 범위는 0x00 - 0x3F가 된다. 이와 같이 사용 칩 수가 N배가 되면, 스페어 테이블(52g)의 RAM 사이즈는 N의 제곱배로 증가된다.
이러한 문제를 다루기 위해, 도 11의 실시 형태의 스페어 테이블(52i)은, 수직으로 스택된(stacked) 동일한 각 논리 블록 어드레스(LBA)에 대응하는 복수의 치환 블록을 정의하고 있다. “Last” 필드는 정의의 말미를 나타내며, “Chip” 필드는 치환을 실시하는 칩 어드레스이다. 테이블(51i)에서, 블록 어드레스(LBA) “0x01”에는 결함 플래그가 설정되어 있으며, 스페어 인덱스 필드(SID)에는 “0x00”이 기록되어 있다. 그러므로, 스페어 테이블(52i)을 참조하면, 칩(0x0 및 0x2)에서, 결함 블록들은 스페어 오프셋(SOF) “0x0”에 대응하는 스페어 블록으로 치환된다는 것을 알 수 있다. 또한, 테이블(51i)에서, 블록 어드레스(LBA) “0x6E”에는 결함 플래그가 설정되며, 스페어 인덱스 필드(SID)에는 “0x1F”이 기록되어 있다. 그러므로, 스페어 테이블(52i)을 참조하면, 칩(0x1, 0x2 및 0x3)에서, 결함 블록들은 각각 스페어 오프셋(SOF)“0x6”, “0xA” 및 “0x4”에 대응하는 스페어 블록으로 치환되어야 한다. 본 예에서는, 스페어 테이블(52i)의 SID는 결함의 총수를 나타내므로, 범위는 0x00 - 0x3F가 되며, 실시예 A1과 같이 증가한다. 그러나 행방향의 비트 수의 증가는 큰 폭으로 저감할 수 있으므로, 스페어 테이블에 필요로 하는 RAM 용량을 압축할 수 있다.
위에서 설명한 바와 같이 다중 변환을 실시하는 또 하나의 해결 수법을 도시하고 있다. 간편성을 위해, 하드웨어 구성은 도 7과 마찬가지로 한다.
도 12a-12c는, 사용 RAM 용량을 압축한 어드레스 변환에 사용하는 어드레스 변환 테이블의 다른 예를 나타내는 도면이다.
RAM(37c)에 저장되어 있는 어드레스 변환 테이블(38h)은 제 2의 실시 형태와 같다. 다만, RAM(50c)에는 각 물리 블록 어드레스(PBA)에 있어서의 결함 상태와 블록의 사용 상태를 나타내는 테이블(51h)이 저장되어 있다. 결함 플래그(DEF)는 대상 블록내의 결함의 유무를 나타낸다. 한편, 사용 플래그(USD)는 블록 소거 후에 0이 되며, 한 곳이라도 데이터가 기입되면 1이 된다. 게다가, 이미 기입된 페이지 어드레스를 나타내는 기입 포인터가 레지스터(53h)에 저장되어 있다. 일반적으로 기입은, 포인터를 증가하는 형태로 실시된다. 즉, 동일 블록내에서는, 페이지 어드레스 “0x00”으로부터 “0xFF”를 향해서 차례로 기입된다.
본 실시 형태에서는, 플래쉬 메모리내에 기입이 실시될 때, 테이블 (51h)과 레지스터(53h)로부터 기입용의 물리 페이지 어드레스가 결정된다.이 때, 결함 정보가 검출된 결함 블록은 스킵되며(skipped), 결함 블록내의 페이지내에는 기입이 실행되지 않는다. 따라서, 소거 블록 어드레스를 변환하는 일없이 결함 블록에 대한 액세스를 회피할 수 있다.
예를 들어 논리 페이지 어드레스 “0x5500”의 일부를 갱신한다고 가정한다. 이 때, 우선 페이지 버퍼의 판독이 실시되지만, 어드레스 변환 테이블(38h)로부터 얻어지는 물리 페이지 어드레스 “0x0180”에서 직접 플래시 칩(35c)를 액세스해도 좋다. 이렇게 판독된 페이지 버퍼상에서 갱신된 데이터는, 이하의 순서대로 플래쉬 메모리(35c)의 빈영역에 기입된다.
1. 레지스터(53h)의 포인터치 “0x01FF”는 직전에 기입을 실시한 페이지의 물리 어드레스를 나타내고 있다.
이것은 블록 “0x01”의 말미의 페이지이며, 이 블록은 완전히 기입된다. 따라서 시스템은, 블록 어드레스를 증가시키면서 테이블(53h)을 스캔하여, 다음의 기입 블록을 찾는다.
2. 다음의 어드레스 “0x02”의 블록의 DEF는 “1”이며, 결함 블록을 나타낸다. 그러므로, 이 블록은 스킵된다.
3. 다음의 어드레스 “0x03” 블록의 USD가 “1”이며, 사용이 끝난 블록을 나타낸다. 그러므로, 이 블록은 스킵된다.
4. 다음의 어드레스 “0x04” 블록은 이미 소거된 우량품 블록이다. 따라서 레지스터(53h)의 포인터치는 그 선두 페이지 어드레스 “0x0400”으로 설정되어 갱신 후에, 데이터가 기입된다.
5. 어드레스 테이블(38h)의 논리 페이지 어드레스 “0x5500”에 대응하는 물리 어드레스 필드가, “0x0400”으로 갱신된다.
즉, 본 실시 형태에서는, 물리 블록 어드레스 마다 대응 블록의 결함과 비어 있다는 정보(empty information)를 기재한 테이블을 제공하고, 플래쉬 메모리에 대한 기입의 시점에서 기입용 페이지를 선택할 때에, 상술한 테이블을 참조하여, 결함 블록을 회피하는 기능을 갖춘다. 따라서, 어드레스 변환 테이블(38h)에 있어서의 물리 페이지의 어드레스 필드에는 결함 블록내의 페이지는 포함되지 않으므로, 블록 어드레스를 변환시킬 필요가 없다.
각 실시 형태는 모두 플래쉬 메모리를 예로 들었지만, 이러한 추기형 기억 시스템은, 예를 들어 전기적 소거를 할 수 없는 EPROM나 OTP등에도 적용할 수 있다. 그 외, 바이트 단위로 데이터가 랜덤하게 재기입될 수 없는 모든 메모리에 대해서 본 발명을 적용하는 것이 가능하다.
그런데, 추기형 기억 시스템에 대해서는, 갱신된 후에 남는 과거의 데이터 영역은 무효가 된다. 특히 플래쉬 메모리에 대해서는, 그것들은 소거 블록 단위로 회복 처리가 실시되어, 기입 가능한 빈 영역으로 변환된다. 특히 소거 블록내의 기입 순서에 제약이 있는 경우에는, 그 적절한 회복 순서를, 제 4의 실시 형태로서 도 13에 도시하고 있다.
도 13은, 본 발명의 제 4의 실시 형태와 관련되는 기억장치를 나타내는 구성도이다. 도 14a-14c는, 본 발명의 제 4의 실시 형태에 있어서의 소거 블록 내부의 데이터 처리 순서를 나타내는 도면이다.
제 4의 실시 형태와 관련되는 기억장치(30E)의 구성은, 기본적으로 제 2의 실시 형태와 같다. 다만, 전송 제어 회로(34e)내에는, 페이지 어드레스 테이블 및 블록 어드레스 테이블을 구축하는 RAM(37e, 50e)외에도, 후술의 페이지 어드레스 갱신 부분을 일시적으로 기억하는 레지스터(60)가 설치되어 있다. 이와 같이, 기존의 RAM 영역의 일부를 이용해도 좋다. 여기에서, 플래쉬 메모리(35e)내의 소거 블록(61)이, 무효 영역의 회복을 위해 처리된다고 가정한다. 이 때, 예비의 소거가 끝난 블록(62)을 동시에 사용한다.
여기서, 도 14a, 14b, 14c를 참조하면서 제 4의 실시 형태와 관련되는 소거 블록(61, 62) 내부의 데이터 처리에 대해 설명한다.
도 14a에 도시한 바와같이, 소거 블록(61)에는, 한 번 데이터가 기입된 후에, 갱신에 의해서 무효화된 영역(66, 67, 68)이, 유효한 페이지 데이터(63, 64, 65)와 공존하고 있다. 여기서 유효 페이지 데이터를 그대로 두면서, 무효화 영역을 빈 영역으로 회복시킬 필요가 있다. 페이지 데이터(63, 64, 65)에는 예비 영역(69, 70, 71)이 제공되어 있으며, 거기에는 각 페이지의 논리 어드레스가 저장되어 있다. 한편, 예비 블록(62)은 소거가 끝난 빈 상태이다.
도 14b에 도시한 바와같이, 유효한 페이지 데이터(63, 64, 65)를 예비 블록(62)내의 빈 영역(72, 73, 74)으로 차례대로 복사해 나간다. 게다가, 예비 영역(69, 70, 71)에 기재된 각 페이지의 논리 어드레스와 신규로 복사된 영역의 물리 어드레스와의 조합을, 레지스터(60)에 저장한다. 이 때 무효화된 영역(66, 67, 68)은 복사 대상으로 여겨지지 못하고, 상기 유효한 페이지 데이터만이 예비 블록(62)에 복사되어 그것을 상부까지 채우게 된다. 이러한 선택적 복사 조작은, 도 2에 도시된 일반적인 복사 조작과는 현저하게 다르며, 블록내의 각 페이지의 상대 위치의 변화를 수반하고 있다.
도 14c에 도시한 바와같이, 블록 어드레스 테이블(50e)을 갱신하고, 원래의 소거 블록(61)을 예비 블록(62)으로 대체하고, 블록(61)을 예비 블록으로서 소거한다. 게다가, 레지스터(60)의 값을 근거로 하여, RAM(37e)의 페이지 테이블(어드레스 변환 테이블)(38e)을 갱신한다.
상기 순서에 수반하는, 어드레스 변환 테이블 갱신의 구체적인 예를 도 15a, 15b, 15c에 도시하고 있다. 도 14에 있어서의 유효 페이지 데이터(64)(도 14a-14c)의 논리 페이지 어드레스는 (0x5500)이다. 이 값은 예비 영역(70)(도 14a-14c)에 기재되어 있다. 이하, 이 데이터의 변환을 설명한다.
도 15a에 도시한 바와같이, 어드레스 변환 테이블(38e)로부터, 논리 페이지 어드레스 (0x5500)에 대응하는 물리 페이지 어드레스는, “0x0180”이된다. 그 소거 블록 어드레스 “0x01”은 어드레스 변환 테이블(51e)에서 변환된 후에도 동일하게 “0x01”이 된다. 즉, 논리 어드레스 “0x5500”에 대응하는 페이지 데이터(64)(도 14a-14c)는, 물리 어드레스 “0x01”의 소거 블록(61)내의, 물리 어드레스 “0x80”에 상당하는 페이지 영역(64)에 저장되어 있다.
도 15b에 도시된 바와같이, 상기 데이터는 물리 어드레스 “0x72”에 대응하는 예비 블록(62)(도 14a-14c)내의, 물리 어드레스 “0x04”에 대응하는 페이지(73)(도 14a-14c)에 복사되었다고 가정한다. 이 때 레지스터(60)에는 이하의 대응성(correspondence)이 저장된다.
현재 테이블(51e)을 이용하여 액세스되고 있는 논리 블록 어드레스 “0x01”.
복사 데이터의 신규 저장처인 영역(73)(도 14a-14c)의 물리 페이지 어드레스 “0x04”.
예비 영역(70)(도 14a-14c)에 저장된 논리 페이지 어드레스 “0x5500”.
도 15c에 도시된 바와같이, 상기 레지스터(60)의 대응성을 반영시켜, 페이지 어드레스 변환 테이블(38e)을 갱신하고, 논리 페이지 어드레스 “0x5500“에 대응 하는 물리 페이지 어드레스를 ”0x0104“에 재기입한다. 예비 블록(62)(도 14a-14c)과 원래의 블록(61)(도 14a-14c)간의 교체에 수반하여, 블록 어드레스 변환 테이블(51e)을 갱신하고, 논리 블록 어드레스 ”0x01“에 대응하는 물리 블록 어드레스를 ”0x72“에 재기입한다.
이러한 순서를 거쳐 테이블 갱신이 이루어진 후에는, 우선 외부로부터 입력된 논리 페이지 어드레스 “0x5500”에 대해, 우선 어드레스 변환 테이블(38e)에서 물리 페이지 어드레스 ”0x0104“가 취득되고, 어드레스 변환 테이블(51e)에서 상위 ”0x01“에 대한 물리 블록 어드레스 ”0x72“가 취득된다. 이에 의해, 신규 영역(73)(도 14a-14c)에 정확하게 액세스하는 것이 가능하게 된다.
즉, 무효 데이터의 회복 처리에 따라 유효 데이터를 이동시킬 때, 예비 영역에 기재된 논리 페이지 어드레스를 레지스터에 일시 기억시키고, 이 값을 페이지 어드레스 변환 테이블에 반영시킴으로써, 블록내의 데이터 저장 장소의 순서 변경에도 적절히 대응하는 것이 가능하게 되었다.
이상 설명한 것처럼, 본 실시 형태에 의하면, 예를 들어 플래쉬 메모리를 기억 미디어로서 사용할 때, 신뢰성이 높고, 고속의 기억 시스템을 실현할 수 있다. 본 실시 형태에 의하면, 블록 단위의 소거나, 블록내의 데이터 기입 순서의 제약에 따라 전송 속도의 악화나 기입의 어려움의 발생을, 큰 폭으로 저감하는 것이 가능하다. 게다가, 이러한 성능 향상을 얻으면서, 불량 블록의 치환등도 융통성있게 실시할 수 있어, 플래쉬 메모리에 대해 무효화된 영역의 회복도 적절히 실시할 수 있다.
본 발명의 제 5의 실시 형태와 관련되는 기억장치에 대해 설명한다.
도 16은, 본 발명의 제 5의 실시 형태와 관련되는 기억장치를 나타내는 구성도이다. 도 17a, 17b는, 제 5의 실시 형태와 관련되는 제어 회로의 어드레스 변환 테이블 및 페이지 상태의 관리 테이블의 구성예를 나타내는 도면이다. 본 발명의 제 5의 실시 형태와 관련되는 기억장치(70)의 구성은, 기본적으로 제 1의 실시 형태와 같다. 단, 제어 회로 장치(74)에 내장된 RAM(77)에는, 어드레스 변환 테이블(78)외에, 페이지 상태의 관리 테이블(86)이 구축되어 있다.
도 16의 기억장치(70)는, 인터페이스 회로 (I/F)(71), 페이지 버퍼 (72), 내부 데이터 버스(73), 제어 회로(74), 및 NAND형 플래쉬 메모리(75, 76)를, 주요 구성요소로 가지고 있다.
기억장치(70)에서는, 32비트의 내부 데이터 버스(73)에, 16비트의 입출력을 가지는 2 칩의 NAND형 플래쉬 메모리(75, 76)가 병렬 접속되어 있다. 2개의 칩의 플래쉬 메모리(75, 76)는 판독 및 기입에 대해서, 동시 병렬로 액세스된다. 페이지 버퍼(72)는, 액세스된 페이지 영역을 일시 기억하는 버퍼이며, 외부에 인터페이스 회로(71)에 접속되어 있다. 제어 회로(74)는, 메모리 칩인 플래쉬 메모리(75, 76)와 페이지 버퍼(72) 및 인터페이스 회로(71)의 사이에서 데이터 교환을 관리하는 제어기이며, 처리 유니트인 내장 CPU(85)에 의해서 제어된다. 이와 같이, 내장된 RAM(77)에는, CPU(85)를 제어하기 위한 프로그램 영역이나 작업 영역이 확보되는 것과 동시에, 어드레스 변환 테이블(78), 및 페이지 상태의 관리 테이블(86)이 구축되어 있다.
기억장치(70)의 액세스는 이하와 같이 된다. 여기에서는 단순성을 위해, 16 진수의 어드레스는 다음과 같이 할당된다고 가정한다. 예를 들어, 외부 입력 어드레스가 “0x5500C”인 경우, 상위의 “0x5500”은 페이지 어드레스, 하위 “0xC”는 페이지 영역내의 섹터 드레스이며, 기억장치(70)는 1 섹터 단위로 랜덤 억세스가 가능하다.
판독시에, 외부로부터 (0x5500C)의 섹터 드레스가 입력되면, 제어 회로(74)는 상위의 페이지 어드레스를 받아 내장 RAM(77)에 액세스하고, 어드레스 변환 테이블(78)로부터 논리 페이지 어드레스(LA:LOGICAL ADDRESS) “0x5500”에 대응하는 물리 페이지 어드레스(PA:PHISICAL ADDRESS)“0x00B0”을 취득한다. 이 물리 페이지 어드레스 PA중, 상위의 (0x00)는 메모리 칩의 플래쉬 메모리(75, 76)내의 소거 블록(83, 84)의 어드레스이다. 하위 “0xB0”은 각 소거 블록내의 페이지 영역(79, 80)의 어드레스이다. 이 물리 어드레스(PA)를 기초로 하여 메모리 칩의 플래쉬 메모리(75, 76)가 모두 액세스되어, 각각으로부터 페이지 어드레스 “0x00B0”에 저장된 페이지 영역(79, 80)의 데이터가 판독되어 페이지 버퍼(72)에 저장된다. 인터페이스 회로(71)는 그 중에서, 하위 어드레스 “0xC”에 상당하는 섹터를 선택해, 외부에 출력한다.
한편, 외부로부터 “0x5500C“에 기입을 실시하는 경우는, 우선 판독과같은 순서대로 페이지 영역(79, 80)의 데이터가 메모리 칩의 플래쉬 메모리 (75, 76)로부터 판독되어 페이지 버퍼(72)에 저장된다. 그 후, 하위 어드레스 ”0xC“에 상당하는 섹터가 선택되어 외부로부터 입력된 데이터로 갱신된다.
갱신 후의 페이지 데이터는, 플래쉬 메모리(75, 76)에 재기입된다. 그러나, 이 때 데이터는 판독된 페이지 영역(79, 80)내에 재기입되는 것이 아니라, 빈 영역(81, 82)내에 기입된다. 이 페이지 영역의 물리 페이지 어드레스는 “0x0280”이며, 즉 소거 블록 “0x02”내의 “0x80”의 페이지에 상당한다. 또, 이 처리 전까지, 그 영역은 어드레스 변환 테이블(78)의 어느 물리 어드레스 필드에도 등록되어 있지 않은, 미사용의 빈 페이지였다. 갱신 후의 데이터가 이 영역에 추가 기입형태로 기입되는 동시에, 어드레스 변환 테이블(78)의 논리 어드레스 “0x5500”에 대응하는 물리 어드레스 필드에는, 빈 영역(81, 82)의 물리 페이지 어드레스 ”0x0280“이 등록된다.
이와 같이, 갱신 데이터를 추가적으로 기입하기 위한 빈 영역의 관리는, 예를 들어 도 16에 도시한 페이지 상태 관리 테이블(86)을 RAM(77)상에 구축하여 사용한다. 테이블은(BA:Block Address)로 표현되는 각 소거 블록에 저장된 각각의 페이지 상태를 2비트의 플래그열로 기록하고 있다. 0은 빈 영역이며, 1은 기입이 행해진 유효 영역, 2는 데이터가 갱신되어 무효화된 무효 영역을 나타낸다.
도 17a, 17b의 상태에는, 블록 어드레스 “0x02”에 있어서의 물리 페이지 “0x80”과 그 이후의 페이지들이 모두 빈 상태가 되어 있다. 예를 들어, 추가 기입을 위한 빈 영역을 결정하기 위해서, 현재 검색 대상인 블록 “0x02”에 대한 포인터를 메모리 영역(87)에 보존해 둔다. 플래쉬 메모리에 기입요청이 있을 때에, 상부 페이지로부터 이 테이블의 플래그를 스캔 하여 빈 영역을 검색한다. 블록의 모든 빈 영역이 사용되고 있으면, 포인터를 증가시키고, 다음에 “0x03”의 블록으로부터 빈 페이지 영역을 찾는다. 이와 같이, 포인터를 블록 어드레스의 선두로부터 말미에 걸쳐 순환시켜 가면, 플래쉬 메모리 전역에 대해서 균일한 기입을 실시할 수 있다.
본 구성에서는, 두 개의 메모리 칩인 플래쉬 메모리(75, 76)가 병렬로 형성되어 있으며, 각각으로부터 판독된 페이지 데이터가, 페이지 버퍼 (72)에 일괄 저장된다. 이 때, 단일한 칩을 사용했을 경우에 비해 메모리 용량은 2배가 되지만, 이것은 일괄 액세스 단위이며, 어드레스 변환 테이블(78)의 관리 단위이기도 한 페이지 영역의 용량이 2배가 되므로, 페이지수는 증가하지 않는다. 따라서, 어드레스 변환 테이블(78)은 변화하지 않고, 그것을 저장하는 메모리(RAM : 77)의 용량도 증가하지 않는다. 한편, 병렬화의 약점인 소거 횟수의 증가나, 기입 피로의 가속화는 페이지 단위의 어드레스 변환을 이용한 추기형의 기입에 의해 큰 폭으로 완화된다.
대형의 파일의 재기입 또는, 소거 블록 전체를 고쳐 기입하는 경우에는, 유효 데이터의 캐싱 처리는 근본적으로 불필요하고, 블록 소거만으로 좋다. 따라서, 이러한 케이스에서는 상기 추기형 기입의 채용의 유무에 의해 큰 성능차이는 생기지 않는다. 따라서, 일반형의 재기입 동작과 추기형 재기입 동작을 케이스에 따라 조합해도 좋다.
그런데, 상술한 바와같이, 추기형 기입을 실시했을 경우, 갱신 전의 데이터가 저장되어 있는 물리 페이지 어드레스 “0x00B0”에 상당하는 페이지 영역(79, 80)은 어드레스 변환 테이블(78)의 물리 어드레스 필드로부터 삭제되므로, 외부에 서 액세스할 수 없게 된다. 즉, 무효화된다. 그러나 그 내부에는 데이터가 기입되어 있으며, 빈 영역으로서 사용되지 못한다. 상술한 바와같이 반복적으로 데이터를 재기입할 때에, 많은 무효 페이지 영역이 발생한다. 그것들은 다시 빈 영역으로서 사용할 수 있도록, 소거하여 회복시킬 필요가 있다. 또한, 그 경우, 소거 블록(83, 84)에 남겨진 유효 데이터는 캐시되어야한다.
이러한 회복 처리는, 예를 들어 우선 대상 블록내의 유효 데이터를, 갱신 때와 같이, 일단 페이지 버퍼에 판독하고 나서, 예비의 페이지 영역에 추가 기입한다. 이것은 실질적인 캐시에 해당한다. 즉, 유효 페이지를 일시적으로 갱신하여, 그 원래의 영역을 모두 무효화한다. 그 후, 대상 블록을 소거함으로써, 회복 처리가 실시된다.
도 18a-18c는, 무효 영역의 회복 순서를 설명하기 위한 도면이다. 도 18a-18c에는, 소거 블록(83, 84) 내부의 유효 데이터를 캐시함으로써, 무효 페이지 영역을 실질적으로 회복시키는, 구체적 순서<1>,<2>,<3>을 예시하고 있다.
순서 <1>
도 17a, 17b의 상태로부터 추가 기입에 의한 재기입이 진행된다고 가정한다. 소거 블록(83, 84)에는, 한 번 데이터가 기입된 후, 갱신에 의해서 무효화된 페이지 영역군(94, 96)이, 유효한 페이지 영역군(93, 95, 97)과 공존하고 있다고 가정한다. 여기서, 유효 페이지 영역의 데이터를 그대로 두면서, 무효화 영역을 빈 영역으로 회복시킬 필요가 있다. 한편, 블록(91, 92)은 현재 추가 기입을 위한 빈 영역으로서 사용하고 있는 소거 블록이며, 페이지 영역(102)까지 기입이 이루어 지고 있다.
순서 <2>
상부까지 채움으로써 유효한 페이지 영역군(93, 95, 97)을 소거 블록(91, 92)내의 빈 영역 (98, 99, 100)에 순서대로 복사해 나간다. 이 때, 예를 들어 도 16의 페이지 버퍼(72)에 소거 블록(83, 84)으로부터 차례차례 1페이지 영역씩을 판독하고, 소거 블록(91, 92)에 데이터를 기입하는 동시에, 어드레스 변환 테이블(78)을 갱신한다. 즉, 각각의 페이지 영역의 논리 어드레스에 대응하는 물리 어드레스 필드에, 복사되는 물리 페이지 어드레스를 등록해 나간다. 이 때, 각각의 페이지 영역의 논리 어드레스는, 각 페이지 영역에 데이터가 기입될 때에, 그 예비 영역에 기재되며, 복사시에 페이지 버퍼(72)로 판독될 때에 얻어진다. 이 조작은, 유효 페이지 영역군(93, 95, 97)을 추가 기입 방법에 의해 재기입하는 작업(처리)과 동일하다. 혹은, 미리 예비 영역내 데이터를 페이지 버퍼(72)로 판독하고, 우선 논리 어드레스를 취득한 후에, 그 논리 어드레스에 대해서 페이지 갱신 처리를 실시하는 것이 가능하므로, 통상의 페이지 갱신 처리와 완전히 같은 프로그램에 의해, 복사 작업과 어드레스 변환 테이블(78)의 갱신 작업이 자동적으로 실행된다. 실제로는, 데이터가 재기입되지 않으며, 단지 복사되며, 이 작업에 의해서 소거 블록(83 및 84)내의 모든 페이지는 무효화되고, 유효 페이지 영역의 데이터는 소거 블록(91, 92)에 실질적으로 캐시되어진다.
순서 <3>
소거 블록(83, 84)을 소거한다. 이에 의해서 그 내부는 모두 빈 영역이 되 며, 이후의 추가 기입을 위해 사용하는 것이 가능하게 된다. 이에 의해, 무효 영역(94, 96)은 실효적으로 회복된다.
이와 같이, 무효 페이지 영역의 회복 처리는, 각 유효 페이지 영역의 복사에 의한 캐시 처리와, 원래의 소거 블록의 소거에 의해 형성된다. 게다가. 회복 대상이 되는 소거 블록내의 유효 페이지에 통상의 갱신 처리와 같은 순서대로 더미의 갱신을 실행하여, 페이지의 캐시를 실행하는 것이 가능하다. 그러므로, 회복 처리시의 유효 페이지 캐싱(caching)을 통상의 기입 알고리즘으로 통합시키는 것이 가능하다. 이 경우, 제어가 용이하게 되며, 플래쉬 메모리에 대한 기입의 균일화등, 기입시의 신뢰성 향상을 위한 각종의 수단을 회복 처리에도 적용할 수 있으므로, 기억장치의 종합적인 신뢰성을 향상시킬 수 있다.
이상, 본 발명을 이용한 기억장치에 대해 구체적인 실시 형태를 설명했지만, 장치 내부의 구성은 수정될 수 있다. 예를 들어, 도 16에 있어서의 페이지 버퍼(72)는, 제어 회로(74) 내부의 RAM(77)상에 구축해도 좋다. 그러한 경우에, 인터페이스 회로(71), 플래쉬 메모리(75, 76) 및 제어 회로(74)는 공통의 내부 데이터 버스(73)로 접속된 구성이 된다. 또는, 페이지 버퍼(72)와 플래쉬 메모리(75, 76)의 사이에 ECC에 의한 에러 수정 회로를 제공하고, 페이지 버퍼로부터 플래쉬 메모리내에 페이지 데이터 기입시에는 암호화를 실시하여, 패리티 비트를 추가하고, 플래쉬 메모리로부터 페이지 버퍼로 페이지 데이터의 판독시에는 복호화를 실행해도 좋다. 그러한 장치 구성의 차이에 관련되지 않고, 본 발명을 적용하는 것은 가능하다. 또는 먼저 설명한 제1 - 제 4의 실시 형태에서 설명한 것처 럼, 어드레스 변환 테이블(78, 121)에 따라서 페이지 단위의 어드레스 변환을 실시한 후, 플래쉬 메모리내의 결함 블록을 스킵하기 위해서, 블록 레벨로의 어드레스 변환을 삽입해도 좋다. 이러한 경우에도, 전술한 예와 같은 제어로, 본 발명을 문제없이 적용하는 것이 가능하다.
도 19는, 제 6의 실시 형태를 나타내는 도면이며, ECC 처리와 결함 블록 관리를 도입한, 제 5의 실시 형태(도 18)의 장치 구성의 응용 변형예를 나타내는 도면이다. 도 20a, 20b는, 제 6의 실시 형태와 관련되는 제어 회로의 어드레스 변환 테이블 및 페이지 상태의 관리 테이블의 구성예를 나타내는 도면이다.
기억장치(110)에서는, 32비트의 내부 데이터 버스(113)에, 16비트의 입출력을 가지는 2 칩의 NAND형 플래쉬 메모리(115, 116)가 병렬 접속되어 있다. 2개의 칩의 플래쉬 메모리(115, 116)는 판독과 기입시에, 동시 에 병렬로 액세스된다. 페이지 버퍼(112)는 액세스된 페이지 영역을 일시적으로 기억하는 버퍼이며, 외부와는 인터페이스 회로(111)에 제 2의 내부 데이터 버스(118)를 통해 접속되어 있다. 게다가, 제 2의 내부 데이터 버스(118)에는 캐시 기억 장치(117)가 접속되어 있다. 제어 회로(123)는 플래쉬 메모리(115, 116)와 페이지 버퍼(112) 사이의 전송을 제어한다. 제어 회로(123)에는 플래쉬 메모리내의 결함 블록이 액세스되지 않도록, 그 내장 RAM(124)상에, 블록 단위의 어드레스 변환에 의해 결함 블록들을 스킵 하기 위한 어드레스 변환 테이블(126)이 구축되어 있다. 게다가, 제어 회로(123)에는 ECC 회로(125)가 탑재되어 있으며, 페이지 버퍼(112)로부터 플래쉬 메모리(115, 116)에 데이터를 기입할 때에 인코딩함으로써 패리티 비트의 추가를 실시하고, 플래쉬 메모리(115, 116)로부터 페이지 버퍼(112)에 데이터가 판독될 때에, 복호화에 의한 에러 수정을 실시한다. 제어 회로 (114)는 페이지 버퍼(112), 캐시 기억 장치(117) 및 인터페이스 회로(111) 사이의 데이터의 교환을 관리하는 제어기이며, 내장 CPU(119)에 의해서 제어된다. 이와 같이, 내장된 RAM(120)에는, CPU(119)를 제어하기 위한 프로그램 영역이나 작업 영역이 확보되는 것과 동시에, 어드레스 변환 테이블 (121)이 구축되어 있다. 게다가, 제어 회로(114)에는, CPU의 제어 없이 캐시 기억 장치(117)와 인터페이스 회로(111)간의 데이터 전송을 제어하는제어 회로(122)가 탑재되어 있다. 또한, 본 도면에 있어서 제어선의 기재는 생략되어 있다.
본 발명의 제 6의 실시 형태와 제 5의 실시 형태(도 18a-18c)와의 주된 차이는, 페이지 버퍼(112)와 플래쉬 메모리(115, 116) 사이의 전송을 위해, 어드레스 변환 테이블(126)과 ECC 회로(125)를 보유하는 전용의 제어 회로 (123)가 설치되고 있다는 것이다. 이에 의해 외부로부터 입력된 논리 어드레스는, 그것을 바탕으로 플래쉬 메모리(115,116)에 대한 액세스가 이루어지는 경우, 어드레스 변환 테이블(121, 126)에 의해 이중의 변환을 받는다. 입출력 데이터에도 ECC 인코드, 복호화의 변환이 실행된다. 구체적인 동작을 이하에서 설명한다.
판독시에, 외부로부터 “0x5500C”의 섹터 드레스가 입력되면, 제어 회로 (114)는 상위의 페이지 어드레스를 받아 내장 RAM(117)을 액세스하고, 어드레스 변환 테이블(121)로부터 논리 페이지 어드레스(LPA:LOGICAL PAGE ADDRE SS)“0x5500”에 대응하는 물리 페이지 어드레스(PPA:PHISICAL P AGE ADDRESS)”0x00B0“을 취득한다. 이 물리 페이지 어드레스 PA중, 상위의 ”0x00“은 소거 블록의 어드레스를 나타내지만, 제어 회로(123)에 입력되면, 이 부분은 논리 블록 어드레스(LBA:LOGICAL BLOCK ADDRESS)로서 취급되어, 어드레스 변환 테이블(126)로부터 물리 블록 어드레스(PBA:PHISICAL BLOCK ADDRESS)”0x01“이 취득된다. 이것이 메모리 칩의 플래쉬 메모리(115, 116)내의 소거 블록(127, 128)의 어드레스이다.
한편, 하위 “0xB0”은 각 소거 블록(127, 128)내의 페이지 영역(1271, 1281)의 어드레스이다. 이 물리 어드레스를 기초로 하여 플래쉬 메모리 (115, 116)가 모두 액세스되며, 각각으로부터 페이지 어드레스 “0x01B0”에 저장된 페이지 영역(1271, 1281)의 데이터가 판독된다. 그리고, ECC 복호화가 실행되고, 결과는 페이지 버퍼(112)에 저장된다.
한편, 외부로부터 “0x5500C”에 기입을 실시하는 경우는, 우선 판독과 같은 순서로 페이지 영역(1271, 1281)의 데이터가 플래쉬 메모리(115, 116)로부터 판독되어 페이지 버퍼(112)에 저장된다. 그 후 버퍼내의 소망하는 장소가, 기입 데이터로 갱신된다. 갱신 후의 페이지 데이터는, 플래쉬 메모리(115, 116)에 다시 기입되며, 그 때 판독된 페이지 영역(1271, 1281)에 기입되지 않고, 어드레스 변환 테이블(121)의 어느 물리 어드레스 필드에도 등록되지 않은, 미사용의 빈 페이지에 기입된다. 그러한 빈 페이지는 제어 회로(114)측에서 관리되며, 예를 들어 도 16과 같은 관리 테이블 (86)이 사용되며, 물리 페이지 어드레스 “0x0280”이 선택된다. 이중 상위의 “0x02”는 제어 회로(123)에 입력되면, 어드레스 변환 테이블(126)로부터 “0x03”으로 변환되며, 메모리 칩의 플래쉬 메모리(115, 116)의 페이지 영역(129a, 129b)에, 페이지 버퍼(112)의 갱신 데이터가 기입되어 전송된다.이 때, 데이터에는, ECC 인코드에 의한 패리티 비트가 추가된다.
한편, 제어 회로(114)는, 어드레스 변환 테이블(121)의 논리 페이지 어드레스 “0x5500”에 대응하는 물리 페이지 어드레스의 필드에, “0x0280”을 등록하고, 원래의 물리 페이지 어드레스 “0x00B0”은 무효화 페이지 영역으로서 관리한다. 모든 페이지 어드레스는 제어 회로(123)의 변환을 거치면, 플래쉬 메모리(115, 116)상의 올바른 페이지 영역을 가리킨다.
본 발명의 제 6의 실시 형태에서는, 제어 회로(114)에 의해 도출되는 물리 페이지 어드레스는, 제어 회로(123)에 의해서 일대일의 블록 레벨의 변환을 거치지만, 그 때 동일 블록내의 각 페이지의 상대 위치는 전혀 변함이 없다. 따라서, 제어 회로(123)에서 실행되는 각종 형태의 변환은 제어 회로(114)로부터의 블랙 박스로 간주해도 좋다. 즉, 제어 회로(114)는, 메모리 칩의 플래쉬 메모리(115, 116)와 제어 회로(123)를 일체화한 플래쉬 메모리 디바이스로 간주하고, 독립적인 논리에 의해 임의의 액세스를 실시해도, 불대응성이 발생하지 않는다. 이것은 ECC에 의한 인코드, 복호화에 대해서도 동일하다. 그 결과, 제어 회로(114)는, 본 발명의 제 5의 실시 형태와 완전히 같은 알고리즘으로 무효화 영역의 회복 처리를 실시하는 것이 가능해진다.
여기까지는, 독립한 기억장치의 내부에 어드레스 변환 장치와 회복 처리 장치를 설치하는 경우에 대해 설명해 왔다. 그러나, 이러한 어드레스 변환 테이블의 관리와 회복 처리를, 호스트측의 제어로 실시하는 것도 가능하다. 그러한 컴 퓨터 시스템을 제 7의 실시 형태로서 도 21에 도시하고 있다.
도 21은, 본 발명의 제 7의 실시 형태와 관련되는 컴퓨터 시스템의 구성예를 나타내는 도면이다. 또한, 도 22는, 본 발명의 제 7의 실시 형태와 관련되는 제어 회로의 어드레스 변환 테이블의 구성예를 나타내는 도면이다.
도 21의 컴퓨터 시스템(130)은, 처리 유니트로서의 CPU(131), 시스템메모리인 RAM(132), 시스템 버스(133), 브릿지 회로(133), NAND형 플래쉬 메모리(135, 136), 데이터 버스(137), 및 페이지 버퍼(138)를, 주구성 요소로서 가지고 있다.
CPU(131)는 32비트의 시스템 버스(133)를 통해 시스템 메모리인 RAM (132)에 접속되어 있다. 게다가, 시스템 버스(133)에는 브릿지 회로(134)가 접속되어 있다. 브릿지 회로(134)에 연결되는 32비트의 데이터 버스(137)에는, 16비트의 입출력을 가지는 2칩의 NAND형 플래쉬 메모리 (135, 136)가 병렬 접속되어 있다. 2칩의 플래쉬 메모리(135, 136)는 판독과 기입에 대해서, 동시에 병렬로 액세스된다. 페이지 버퍼(138)는 액세스된 페이지 영역을 일시 기억하는 버퍼이며, 브릿지 회로(134)에 내장되어 있다. 브릿지 회로(134)는 CPU(131)로부터 각종 명령을 받아, 플래쉬 메모리(135, 136)와 CPU(131) 또는 시스템 메모리(132) 사이에서의 데이터의 교환을, 페이지 버퍼(138)를 이용해 조정한다. 브릿지 회로(134)가 수신한 명령은, 예를 들어 플래쉬 메모리(135, 136)의 소정의 페이지에 대한 액세스외에도, 플래쉬 메모리의 소정 블록의 소거, 및 소정 페이지의 지정 어드레스에 대한 복사, 플래쉬 메모리의 재설정등을 포함한다.
한편, 시스템 메모리(132)내에는 상기 플래시 기억 시스템을 제어하기 위한 드라이버(139)가 내장되어 있다. 이 드라이버(139)는, OS나 어플리케이션으로부터 기억장치에 대한 액세스를 수신하고 동일한 메모리내에 구성된 어드레스 변환 테이블(140)을 참조하여 액세스 시간에 페이지 어드레스를 변환한다.
기억 시스템의 액세스는 이하와 같이 된다. 여기에서는 간단하게 설명하기 위해, 16진수의 어드레스는 다음과 같이 할당된다고 가정한다. 예를 들어, 외부 입력 어드레스가 “0x5500C”이 되는 경우, 상위의 “0x5500”은 페이지 어드레스, 하위 (0xC)는 페이지 영역내의 섹터 드레스이며, 기억장치는 1섹터 단위로 랜덤 억세스가 가능하다.
판독시에, 예를 들어 어플리케이션으로부터 어드레스 “0x5500C”의 섹터의 판독이 요구되면, 드라이버(139)는 상위의 페이지 어드레스를 받아 어드레스 변환 테이블(140)으로부터 논리 페이지 어드레스(LA:LOGIC ALADDRESS)“0x5500”에 대응하는 물리 페이지 어드레스(PA:PHISICAL ADDRES S)“0x00B0”을 취득한다. 이 물리 페이지 어드레스 PA중, 상위의 “0x00”은 메모리 칩의 플래쉬 메모리(135, 136)내의 소거 블록(141, 142)의 어드레스이다. 하위 “0xB0”, 각 소거 블록내의 페이지 영역(143, 144)의 어드레스이다. 이 물리 어드레스를 기초로 하여, 브릿지 회로(134)를 통해 메모리칩의 플래쉬 메모리(135, 136)이 모두 액세스 되며, 각각으로부터 페이지 어드레스 “0x00B0”에 저장된 페이지 영역(143, 144)의 데이터가 판독되어 페이지 버퍼(138)에 저장된다. 브릿지 회로(134)는 그 중에서, 하위 어드레스 “0xC”에 상당하는 섹터를 선택하고, CPU(131) 또는 시스템 메모리(132)에 출력한다.
한편, 어플리케이션으로부터 “0x5500C”에 기입 요구를 받았을 경우는, 우선 판독과 같은 순서대로 드라이버(139)에 의해서 어드레스 변환이 실시되어, 페이지 영역(143, 144)의 데이터가 메모리 칩의 플래쉬 메모리 (135, 136)로부터 판독되어 페이지 버퍼(138)에 저장된다. 그 후, 하위 어드레스 “0xC”에 대응하는 섹터가 선택되어 신규 데이터로 갱신된다. 갱신 후의 페이지 데이터는, 플래쉬 메모리(135, 136)에 다시 기입되지만, 그 때 각각의 빈 영역(145, 146)에 기입된다. 이 페이지 영역의 물리 페이지 어드레스는 “0x0280”이며, 즉 소거 블록 “0x02”내의 “0x80”의 페이지에 상당한다. 또 이러한 처리 전까지, 그 영역은 어드레스 변환 테이블(140)의 어느 물리 어드레스 필드에도 등록되지 않은, 미사용의 빈 페이지였다. 갱신 후의 데이터가 이 영역에 추가 기입 형태로 기입되는 것과 동시에, 어드레스 변환 테이블(140)의 논리 어드레스 “0x5500”에 대응하는 물리 어드레스 필드에는, 빈 영역(145, 146)의 물리 페이지 어드레스“0x0280”이 등록된다.
상술한 추기형 기입을 실시했을 경우, 갱신 전의 데이터가 저장되어 있는 물리 페이지 어드레스 “0x00B0”에 상당하는 페이지 영역(143, 144)은, 어드레스 변환 테이블(140)의 물리 어드레스 필드로부터 삭제되어 무효화된다. 그러나 그것들에는 데이터가 기입되어 있으며, 그대로 빈 영역으로서 사용되지 않는다. 상술한 바와같이 반복하여 데이터를 재기입할 때에, 많은 무효 페이지 영역이 발생한다. 그것들은 다시 빈 영역으로서 사용할 수 있도록, 소거해 회복시킬 필요가 있다. 또한, 그 경우, 소거 블록 (141, 142)에 남겨진 유효 데이터는 캐시되 어야 한다.
이러한 회복 처리는, 예를 들어 도 18a-18c를 참조하면서 전술한 알고리즘에 근거하여, 빈 영역을 가지는 블록(147, 148)을 사용하여 행해진다. 즉, 회복 처리의 대상 블록인 소거 블록(141, 142)상의 유효한 페이지 영역군의 데이터는 상부까지 채움으로써 캐싱 블록(147, 148)내의 빈 영역에 순차적으로 복사되고, 그에 따라 어드레스 변환 테이블(140)의 물리 어드레스를 갱신한다. 모든 유효 페이지 데이터가 복사되어 끝나면, 원래의 블록(141, 142)을 소거한다.
본 발명의 제 9의 실시 형태에서는, 드라이버(139)를 이용하여 호스트 CPU(131)가 브릿지 회로(134)에 명령을 전송하여 처리(작업)를 제어한다. 예를 들어, 호스트 CPU(131)로부터의 복사 명령에 따라, 브릿지 회로(134)가 소정의 페이지를 복사하는 측으로부터 페이지 버퍼(138)로 판독하고, 복사의 목적지에서 동일한 페이지를 기입함으로써, 상기 회복 작업에 있어서의 유효 페이지 데이터의 복사가 이루어진다. 또는, 소정의 블록을 소거한다. 이 때 시스템 버스(133)는 사용되지 않기 때문에, 만약 필요하다면, CPU(131)가 상기 명령을 송신한 후에 다른 처리(작업)를 병행해 실시하는 것도 가능하다.
이러한 시스템에서도, 먼저 설명한 제 1-제 6의 실시 형태에서 설명한 것처럼, 어드레스 변환 테이블(140)에 따라 페이지 단위의 어드레스 변환을 실시한 후, 플래쉬 메모리내의 결함 블록을 스킵하기 위해서, 블록 레벨에서의 어드레스 변환을 삽입해도 좋다.
상술한 바와 같이, 본 기억장치에 의하면, 플래쉬 메모리내의 단점들을 해결하기 위해서, 발명자들이 추기형 기억장치에 주목하였다. 이러한 시스템에서는, 빈 영역내에 갱신 데이터를 기입하고, 원래의 데이터를 무효화함으로써 재기입이 실행된다. 즉, 논리 어드레스와 물리 어드레스를 연결하는 어드레스 변환 테이블이 사용되며, 데이터는 관련된 데이터의 물리 어드레스를 변화시키고 기억 매체내의 빈 영역내에 추가적으로 기입함으로써 재기입된다. 본 발명의 종래기술로서, 예를 들어, 일본 특허 8-328762호는 어드레스 변환 테이블을 이용하는 추기형 기억 시스템내의 관리방법의 구체적인 사항을 기재하고 있다. 이것은 단일한 칩을 가정한 상태에서 이루어진 것이므로, 용량의 증가에 따라 어드레스 변환 테이블이 크게 된다는 단점이 있다. 본 실시예들의 기억 장치들은 이것을 극복하고 있으며, 본 실시예들의 기억 장치들은, 최근에 증가하는 용량을 가지는 플래쉬 메모리에 적용시키기 위해 다음과 같은 기능을 가지고 있다.
1. 상술한 페이지 기입의 순서 제한을 지키면서 충분한 신뢰성을 가지는 추기형 기억 시스템으로 동작한다.
2. 불휘발성 메모리가 자주 내부 결함을 포함한다는 사실을 해결한다. 특히, 플래쉬 메모리에서는, 단일한 결함이 전체 소거 블록에 악영향을 끼친다. 그러므로, 대부분의 경우에, 기입 단위와 결함관리 단위가 다르다. 본 기억장치는 상기 기억 시스템과 함께 이러한 결함 관리를 해결한다.
3. 추가 기입 형태에 의해 데이터를 갱신하는 것은 이전 데이터의 기억 영역을 바로 소거하지 않는다. 그러나, 그것을 무효화시킨다. 플래쉬 메모리에서, 이러한 무효화된 영역을 빈 영역으로 회복시키는 수단이 필요하다. 본 기억장치는 상기 제한에 따라 적합하게 영역들을 회복시킨다.
본 발명의 실시예들의 효과를 요약하면, 본 발명의 실시예에 따라, 플래쉬 메모리를 기억매체로 사용하는 경우, 고신뢰성을 가지는 기억 시스템이 달성된다. 본 발명의 실시예에 따르면, 블록 단위의 소거나, 블록내의 데이터 기입 순서의 제약에 수반하는 전송 속도의 악화나 기입의 문제점을, 큰 폭으로 저감하는 것이 가능하다. 본 발명에 의하면, 플래쉬 메모리를 기억 미디어로서 사용하면서, 실제 사용시에 항상 고속으로 재기입하는 것을 실현할 수 있다. 또한, 소거 횟수도 감소시킬 수 있고 재기입수고를 저감하므로, 신뢰성이 높은 재기입이 가능하다. 게다가, 이와같이 성능 향상을 얻으면서, 불량 블록의 치환등도 융통성있게 실시할 수 있으므로, 플래쉬 메모리에서 무효화된 영역의 회복도 적절히 실행되며, 전원차단등으로 인해 어드레스 변환 테이블이 파괴되었을 경우에서도, 문제없이 재구축하는 것이 가능하다.
첨부된 청구항들과 그와 동등한 것의 범위내에서 설계요건 및 기타 인자에 따라 여러 가지 수정과, 변경, 결합, 및 소결합이 이루어진다는 것을 당업자가 알 수 있다.
Claims (14)
- 기억장치에 있어서,병렬로 액세스 가능한 복수의 메모리를 포함하는 플래쉬 메모리부와,상기 복수의 메모리의 2개 이상으로부터 병렬로 데이터를 취득하고, 일시적으로 기억하는 페이지 레지스터와,상기 페이지 레지스터에 병렬로 저장되는 데이터 단위로 논리 어드레스와 물리 어드레스의 대응성을 관리하는 어드레스 변환 테이블을 가지며,상기 어드레스 변환 테이블의 갱신과 기억 미디어에 대한 추가 기입에 의해 데이터를 재기입하는 기억장치.
- 제 1항에 있어서,상기 페이지 레지스터에 저장되는 데이터 단위는 복수의 섹터를 포함하며, 상기 기억장치는 섹터 단위로 데이터를 액세스하는 기억장치.
- 기억장치에 있어서,논리 어드레스와 물리 어드레스의 대응성을 나타내는 어드레스 변환 테이블과,상기 어드레스 변환 테이블에 따라서 데이터를 저장하고, 상기 어드레스 변환 테이블의 갱신과 기억 미디어에 대한 추가 기입을 실행함으로써, 데이터를 재기 입하는 기능을 가지며,상기 데이터는 예비 영역을 가지며,상기 예비 영역에는 데이터의 논리 어드레스와 상기 데이터의 갱신 이력을 나타내는 정보가 기재되어 있는 기억장치.
- 제 3항에 있어서,상기 갱신 이력은, 데이터를 상기 기억 미디어에 기입할 때의 타임 스탬프를 포함하는 기억장치.
- 제 3항에 있어서,상기 갱신 이력은, 데이터를 상기 기억 미디어에서 갱신하는 갱신 횟수를 포함하는 기억장치.
- 제 3항에 있어서,상기 기억 미디어를 스캔하고, 상기 예비 영역의 논리 어드레스와 갱신 이력을 기초로 하여, 어드레스 테이블을 재구축 하는 기능을 가지는 기억장치.
- 기억장치에 있어서,논리 어드레스와 물리 어드레스의 대응성을 나타내는 어드레스 변환 테이블과,상기 어드레스 변환 테이블에 따라서 데이터를 저장하고, 상기 어드레스 변환 테이블의 갱신과 기억 미디어에 대한 추가 기입을 실행함으로써, 데이터를 재기입하는 기능과,카운터를 가지며,미디어 전역 또는 복수 데이터를 포함하는 특정 영역에 대해서 상기 추가 기입이 실행될 때마다 카운터치가 갱신되어, 상기 카운터치 또는 상기 카운터치와 정확하게 대응하는 값이, 상기 데이터의 예비 영역에 데이터와 동시에 기입되는 기억장치.
- 기억장치에 있어서,논리 어드레스와 물리 어드레스의 대응성을 나타내는 어드레스 변환 테이블과,상기 어드레스 변환 테이블에 따라서 데이터를 저장하고, 상기 어드레스 변환 테이블의 갱신과 기억 미디어에 대한 추가 기입을 실행함으로써, 데이터를 재기입하는 기능과,장치에 입력된 논리 어드레스를, 상기 어드레스 변환 테이블에 의해 제 1의 물리 어드레스로 변환하고, 기억 미디어상에 결함 영역을 비선택적으로 만드는 어드레스 변환 기능을 가지며,상기 제 1의 물리 어드레스의 적어도 일부 비트는, 상기 어드레스 변환 기능에 의해 제 2의 물리 어드레스로 변환되며,기억 미디어는 상기 제 2의 물리 어드레스와 상기 제 1의 물리 어드레스의 나머지의 비트를 이용해 액세스되는 기억장치.
- 제 8항에 있어서,상기 어드레스 변환 기능의 상기 제 2의 어드레스 변환은, 영역마다 복수의 변환 세트로 분할되어 있는 기억장치.
- 제 8항에 있어서,상기 기억 미디어는 플래쉬 메모리이며,상기 어드레스 변환 기능은, 결함이 존재하는 소거 블록의 어드레스를, 정상적인 소거 블록의 어드레스로 대체하는 기능을 포함하는 기억장치.
- 기억장치에 있어서,논리 어드레스와 물리 어드레스의 대응성을 나타내는 어드레스 변환 테이블과,상기 어드레스 변환 테이블에 따라서 데이터를 저장하고, 상기 어드레스 변환 테이블의 갱신과 기억 미디어에 대한 추가 기입을 실행함으로써, 데이터를 재기입하는 기능과,상기 기억 미디어에 있어서의 결함 영역과 미기입 영역의 위치를 나타내는 테이블과,결함 영역 이외의 미기입 영역을 상기 추가 기입을 위한 영역으로서선택하는 기능을 가지는 기억장치.
- 제 11항에 있어서,상기 기억 미디어는 플래쉬 메모리이며,결함이 존재하는 소거 블록을 제외한 영역이 상기 추가 기입을 위한 영역으로서 선택되는 기억장치.
- 기억장치에 있어서,기억 미디어로서의 플래쉬 메모리와,논리 어드레스와 물리 어드레스의 대응성을 나타내는 어드레스 변환 테이블에 따라서 데이터를 저장하고, 상기 어드레스 변환 테이블의 갱신과 기억 미디어에 대한 추가 기입을 실행함으로써, 데이터를 재기입하는 기능과,상기 재기입에 의해 무효화된 영역을 포함하는 제 1의 소거 블록내에 잔존하고 있는 유효 데이터를, 선택적으로 소거된 제 2의 소거 블록에 차례대로 복사하고, 그 후에 상기 제 1의 블록을 소거하여, 상기 무효화된 영역에 신규 기입을 할 수 있도록 하는 회복 처리를 실시하는 기능을 가지는 기억장치.
- 제 13항에 있어서,각 데이터는 예비 영역을 가지며,상기 예비 영역에는 데이터의 논리 어드레스가 기재되어 있으며,상기 유효 데이터의 복사시에는 상기 논리 어드레스치에 따라 어드레스 변환 테이블을 갱신하는 기억장치.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JPJP-P-2005-00165234 | 2005-06-06 | ||
JP2005165234 | 2005-06-06 | ||
JPJP-P-2006-00115779 | 2006-04-19 | ||
JP2006115779A JP5130646B2 (ja) | 2005-06-06 | 2006-04-19 | 記憶装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20060127760A true KR20060127760A (ko) | 2006-12-13 |
Family
ID=37573203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020060049916A KR20060127760A (ko) | 2005-06-06 | 2006-06-02 | 기억장치 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8285916B2 (ko) |
JP (1) | JP5130646B2 (ko) |
KR (1) | KR20060127760A (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110003728A (ko) * | 2009-07-06 | 2011-01-13 | 삼성전자주식회사 | 데이터 조작 방법 및 그 방법을 이용하는 시스템 장치 |
KR101121698B1 (ko) * | 2008-12-22 | 2012-02-28 | 가부시끼가이샤 도시바 | 반도체 기억 장치 및 기억 제어 방법 |
US8700881B2 (en) | 2009-04-22 | 2014-04-15 | Samsung Electronics Co., Ltd. | Controller, data storage device and data storage system having the controller, and data processing method |
KR101532840B1 (ko) * | 2013-10-17 | 2015-06-30 | 서울대학교산학협력단 | 거친 쓰기 및 미세 쓰기를 이용하여 데이터 프로그램을 수행하는 방법 및 장치 |
Families Citing this family (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7769944B2 (en) * | 2004-10-01 | 2010-08-03 | Supertalent Electronics, Inc. | Partial-write-collector algorithm for multi level cell (MLC) flash |
JP4956922B2 (ja) * | 2004-10-27 | 2012-06-20 | ソニー株式会社 | 記憶装置 |
KR100771521B1 (ko) * | 2006-10-30 | 2007-10-30 | 삼성전자주식회사 | 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법 |
KR100881669B1 (ko) * | 2006-12-18 | 2009-02-06 | 삼성전자주식회사 | 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치 |
JP4967680B2 (ja) * | 2007-01-23 | 2012-07-04 | ソニー株式会社 | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 |
US7804718B2 (en) * | 2007-03-07 | 2010-09-28 | Mosaid Technologies Incorporated | Partial block erase architecture for flash memory |
JP2008300020A (ja) * | 2007-06-04 | 2008-12-11 | Toshiba Corp | 再生装置 |
US9396103B2 (en) * | 2007-06-08 | 2016-07-19 | Sandisk Technologies Llc | Method and system for storage address re-mapping for a memory device |
JP2009015978A (ja) | 2007-07-05 | 2009-01-22 | Toshiba Corp | 半導体記憶装置及びメモリシステム |
TWI404076B (zh) * | 2008-01-07 | 2013-08-01 | Powerchip Technology Corp | 記憶體裝置以及資料讀取方法 |
US7813212B2 (en) | 2008-01-17 | 2010-10-12 | Mosaid Technologies Incorporated | Nonvolatile memory having non-power of two memory capacity |
US20090271562A1 (en) * | 2008-04-25 | 2009-10-29 | Sinclair Alan W | Method and system for storage address re-mapping for a multi-bank memory device |
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 |
CN101419838B (zh) * | 2008-09-12 | 2011-01-19 | 中兴通讯股份有限公司 | 一种提高flash使用寿命的方法 |
JP2010086009A (ja) * | 2008-09-29 | 2010-04-15 | Hitachi Ltd | 記憶装置およびメモリ制御方法 |
US8725927B2 (en) | 2008-10-15 | 2014-05-13 | Micron Technology, Inc. | Hot memory block table in a solid state storage device |
JP2010152517A (ja) * | 2008-12-24 | 2010-07-08 | Toshiba Corp | 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のアドレス管理方法 |
KR101005120B1 (ko) * | 2009-02-04 | 2011-01-04 | 주식회사 하이닉스반도체 | 불휘발성 메모리 소자의 프로그램 방법 |
KR20100091544A (ko) * | 2009-02-10 | 2010-08-19 | 삼성전자주식회사 | 메모리 시스템 및 그 마모도 관리 방법 |
KR101638061B1 (ko) | 2009-10-27 | 2016-07-08 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법 |
CN101706788B (zh) * | 2009-11-25 | 2012-11-14 | 惠州Tcl移动通信有限公司 | 一种嵌入式文件系统的跨区访问方法 |
US8473669B2 (en) * | 2009-12-07 | 2013-06-25 | Sandisk Technologies Inc. | Method and system for concurrent background and foreground operations in a non-volatile memory array |
US8223525B2 (en) * | 2009-12-15 | 2012-07-17 | Sandisk 3D Llc | Page register outside array and sense amplifier interface |
US8531504B2 (en) * | 2010-06-11 | 2013-09-10 | Intel Corporation | System and method for 3D video stabilization by fusing orientation sensor readings and image alignment estimates |
US8452911B2 (en) | 2010-09-30 | 2013-05-28 | Sandisk Technologies Inc. | Synchronized maintenance operations in a multi-bank storage system |
US9007836B2 (en) * | 2011-01-13 | 2015-04-14 | Kabushiki Kaisha Toshiba | Non-volatile semiconductor memory device |
JP5377526B2 (ja) | 2011-01-13 | 2013-12-25 | 株式会社東芝 | 不揮発性半導体記憶装置 |
US9571547B2 (en) * | 2011-03-14 | 2017-02-14 | Canon Kabushiki Kaisha | Method and device for generating media fragment requests for requesting fragments of an encoded media stream |
CN103797492B (zh) * | 2011-07-27 | 2016-09-21 | 希捷科技有限公司 | 用于安全存储劫持保护的方法和装置 |
US8806111B2 (en) * | 2011-12-20 | 2014-08-12 | Fusion-Io, Inc. | Apparatus, system, and method for backing data of a non-volatile storage device using a backing store |
US8762627B2 (en) | 2011-12-21 | 2014-06-24 | Sandisk Technologies Inc. | Memory logical defragmentation during garbage collection |
JP5674634B2 (ja) * | 2011-12-28 | 2015-02-25 | 株式会社東芝 | コントローラ、記憶装置およびプログラム |
US9223693B2 (en) | 2012-12-31 | 2015-12-29 | Sandisk Technologies Inc. | Memory system having an unequal number of memory die on different control channels |
US9734911B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
US9465731B2 (en) | 2012-12-31 | 2016-10-11 | Sandisk Technologies Llc | Multi-layer non-volatile memory system having multiple partitions in a layer |
US8873284B2 (en) | 2012-12-31 | 2014-10-28 | Sandisk Technologies Inc. | Method and system for program scheduling in a multi-layer memory |
US9734050B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for managing background operations in a multi-layer memory |
US9348746B2 (en) | 2012-12-31 | 2016-05-24 | Sandisk Technologies | Method and system for managing block reclaim operations in a multi-layer memory |
US9336133B2 (en) | 2012-12-31 | 2016-05-10 | Sandisk Technologies Inc. | Method and system for managing program cycles including maintenance programming operations in a multi-layer memory |
CN103645990B (zh) * | 2013-12-24 | 2016-05-25 | 飞天诚信科技股份有限公司 | 一种基于大页面Flash的数据更新和读取方法 |
US9582205B2 (en) * | 2014-04-17 | 2017-02-28 | Sandisk Technologies Llc | Protection scheme with dual programming of a memory system |
JP5950286B2 (ja) | 2014-05-29 | 2016-07-13 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | アドレス変換テーブルを書き込む装置及び方法 |
US10120753B2 (en) | 2015-05-26 | 2018-11-06 | Micron Technology, Inc. | Methods and apparatuses for error correction |
US10120613B2 (en) | 2015-10-30 | 2018-11-06 | Sandisk Technologies Llc | System and method for rescheduling host and maintenance operations in a non-volatile memory |
US10042553B2 (en) | 2015-10-30 | 2018-08-07 | Sandisk Technologies Llc | Method and system for programming a multi-layer non-volatile memory having a single fold data path |
US9778855B2 (en) | 2015-10-30 | 2017-10-03 | Sandisk Technologies Llc | System and method for precision interleaving of data writes in a non-volatile memory |
US10133490B2 (en) | 2015-10-30 | 2018-11-20 | Sandisk Technologies Llc | System and method for managing extended maintenance scheduling in a non-volatile memory |
US9841918B2 (en) | 2015-12-02 | 2017-12-12 | Samsung Electronics Co., Ltd. | Flash memory device including deduplication, and related methods |
US10031803B2 (en) | 2015-12-14 | 2018-07-24 | International Business Machines Corporation | Distributed coding for multiple dimensional parities |
KR102233400B1 (ko) | 2017-05-29 | 2021-03-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10592414B2 (en) * | 2017-07-14 | 2020-03-17 | International Business Machines Corporation | Filtering of redundantly scheduled write passes |
FR3072476A1 (fr) * | 2017-10-13 | 2019-04-19 | Proton World International N.V. | Unite logique de memoire pour memoire flash |
JP7010740B2 (ja) | 2018-03-16 | 2022-01-26 | キオクシア株式会社 | メモリシステムおよび制御方法 |
JP2020154603A (ja) | 2019-03-19 | 2020-09-24 | キオクシア株式会社 | メモリシステム |
US11017866B2 (en) * | 2019-09-03 | 2021-05-25 | Silicon Storage Technology, Inc. | Method of improving read current stability in analog non-volatile memory using final bake in predetermined program state |
JP2021068129A (ja) * | 2019-10-21 | 2021-04-30 | Tdk株式会社 | メモリコントローラ及びフラッシュメモリシステム |
CN111897766B (zh) * | 2020-06-19 | 2023-05-30 | 西安微电子技术研究所 | 一种星载固态存储器及边记边擦的数据处理方法 |
JP7013546B2 (ja) * | 2020-10-23 | 2022-01-31 | キオクシア株式会社 | メモリシステム |
KR20220142192A (ko) * | 2021-04-14 | 2022-10-21 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3485938B2 (ja) * | 1992-03-31 | 2004-01-13 | 株式会社東芝 | 不揮発性半導体メモリ装置 |
DE69316955T2 (de) * | 1992-09-18 | 1998-07-30 | Hitachi Ltd | Rechenanlage mit synchronem, dynamischem Speicher |
JP3539752B2 (ja) * | 1994-03-02 | 2004-07-07 | 沖電気工業株式会社 | 半導体記憶装置とメモリ制御方法 |
JPH0869404A (ja) * | 1994-08-29 | 1996-03-12 | Fujitsu Ltd | データのバックアップ方法及びそれを利用したデータ処理装置 |
JPH0877066A (ja) * | 1994-08-31 | 1996-03-22 | Tdk Corp | フラッシュメモリコントローラ |
US6081878A (en) * | 1997-03-31 | 2000-06-27 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
US6105113A (en) * | 1997-08-21 | 2000-08-15 | Silicon Graphics, Inc. | System and method for maintaining translation look-aside buffer (TLB) consistency |
JP3702080B2 (ja) * | 1997-11-28 | 2005-10-05 | 株式会社東芝 | メモリ管理装置及び情報処理装置 |
US6763424B2 (en) | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
US6691205B2 (en) * | 2001-03-05 | 2004-02-10 | M-Systems Flash Disk Pioneers Ltd. | Method for using RAM buffers with simultaneous accesses in flash based storage systems |
JP3957985B2 (ja) | 2001-03-06 | 2007-08-15 | 株式会社東芝 | 不揮発性半導体記憶装置 |
JP2003216507A (ja) * | 2002-01-22 | 2003-07-31 | Sharp Corp | 記憶容量処理システム |
US7107389B2 (en) * | 2002-08-29 | 2006-09-12 | Matsushita Electric Industrial Co., Ltd. | Semiconductor memory device and method for writing data into flash memory |
CA2508141C (en) * | 2002-12-02 | 2009-11-03 | Silverbrook Research Pty Ltd | Dead nozzle compensation |
JP4242245B2 (ja) * | 2003-10-06 | 2009-03-25 | 株式会社ワークビット | フラッシュrom制御装置 |
US20050120191A1 (en) * | 2003-12-02 | 2005-06-02 | Intel Corporation (A Delaware Corporation) | Checkpoint-based register reclamation |
JP4938328B2 (ja) * | 2006-03-28 | 2012-05-23 | 株式会社日立製作所 | 記憶システム及びその電源制御方法並びにストレージ装置 |
-
2006
- 2006-04-19 JP JP2006115779A patent/JP5130646B2/ja not_active Expired - Fee Related
- 2006-06-02 KR KR1020060049916A patent/KR20060127760A/ko not_active Application Discontinuation
- 2006-06-05 US US11/446,367 patent/US8285916B2/en active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101121698B1 (ko) * | 2008-12-22 | 2012-02-28 | 가부시끼가이샤 도시바 | 반도체 기억 장치 및 기억 제어 방법 |
US8700881B2 (en) | 2009-04-22 | 2014-04-15 | Samsung Electronics Co., Ltd. | Controller, data storage device and data storage system having the controller, and data processing method |
US9135167B2 (en) | 2009-04-22 | 2015-09-15 | Samsung Electronics Co., Ltd. | Controller, data storage device and data storage system having the controller, and data processing method |
KR20110003728A (ko) * | 2009-07-06 | 2011-01-13 | 삼성전자주식회사 | 데이터 조작 방법 및 그 방법을 이용하는 시스템 장치 |
KR101532840B1 (ko) * | 2013-10-17 | 2015-06-30 | 서울대학교산학협력단 | 거친 쓰기 및 미세 쓰기를 이용하여 데이터 프로그램을 수행하는 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
US20060285397A1 (en) | 2006-12-21 |
JP5130646B2 (ja) | 2013-01-30 |
JP2007018499A (ja) | 2007-01-25 |
US8285916B2 (en) | 2012-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20060127760A (ko) | 기억장치 | |
JP4961693B2 (ja) | コンピュータシステム | |
JP4910360B2 (ja) | 記憶装置、コンピュータシステム、およびデータ書き込み方法 | |
US8745310B2 (en) | Storage apparatus, computer system, and method for managing storage apparatus | |
JP5076411B2 (ja) | 記憶装置、コンピュータシステム | |
JP5162846B2 (ja) | 記憶装置、コンピュータシステム、および記憶システム | |
JP4956922B2 (ja) | 記憶装置 | |
KR100896698B1 (ko) | 메모리의 페이지 및/또는 블럭의 사이즈와 상이한사이즈를 구비하는 데이터 섹터를 갖는 비-휘발성 메모리시스템을 작동시키는 방법 | |
US8041884B2 (en) | Controller for non-volatile memories and methods of operating the memory controller | |
US9239781B2 (en) | Storage control system with erase block mechanism and method of operation thereof | |
JP5728672B2 (ja) | ハイブリッドメモリ管理 | |
US8291155B2 (en) | Data access method, memory controller and memory storage system | |
KR101760144B1 (ko) | 비휘발성 메모리 및 기록 캐시를 분할하는 방법 | |
JP2008146255A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 | |
KR20060120231A (ko) | 다중 블록 유닛들로의 블록의 적응형 결정론적 그룹화 | |
JP2008146253A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 | |
US10929303B2 (en) | Data storage device utilizing virtual blocks to improve performance and data storage method thereof | |
JP2008146254A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 | |
JP2007334413A (ja) | 記憶装置 | |
JP5617873B2 (ja) | 記憶装置 | |
US11080203B2 (en) | Data storage device and control method for non-volatile memory | |
JP2008181203A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 | |
KR100780963B1 (ko) | 메모리 카드 및 메모리 카드의 구동 방법 | |
US8713242B2 (en) | Control method and allocation structure for flash memory device | |
US20230089246A1 (en) | Memory system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |