KR100614469B1 - 기억장치 - Google Patents

기억장치 Download PDF

Info

Publication number
KR100614469B1
KR100614469B1 KR1019997006688A KR19997006688A KR100614469B1 KR 100614469 B1 KR100614469 B1 KR 100614469B1 KR 1019997006688 A KR1019997006688 A KR 1019997006688A KR 19997006688 A KR19997006688 A KR 19997006688A KR 100614469 B1 KR100614469 B1 KR 100614469B1
Authority
KR
South Korea
Prior art keywords
block
data
address
controller
stored
Prior art date
Application number
KR1019997006688A
Other languages
English (en)
Other versions
KR20000070451A (ko
Inventor
기쿠치슈이치
Original Assignee
동경 엘렉트론 디바이스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to JP97-335596 priority Critical
Priority to JP33559697 priority
Application filed by 동경 엘렉트론 디바이스 주식회사 filed Critical 동경 엘렉트론 디바이스 주식회사
Priority to PCT/JP1998/005441 priority patent/WO1999030239A1/ja
Publication of KR20000070451A publication Critical patent/KR20000070451A/ko
Application granted granted Critical
Publication of KR100614469B1 publication Critical patent/KR100614469B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing
    • Y02D10/10Reducing energy consumption at the single machine level, e.g. processors, personal computers, peripherals or power supply
    • Y02D10/13Access, addressing or allocation within memory systems or architectures, e.g. to reduce power consumption or heat production or to increase battery life

Abstract

본 발명은 소용적 및 저소비전력의 블록소거형 기억장치와 그 액세스방법을 제공하는 것으로서, 메모리셀어레이(1)를 액세스하기 위한 논리어드레스와 물리어드레스의 대응관계를 기억하는 어드레스변환테이블과 빈블록의 위치를 나타내는 빈블록테이블을 메모리셀어레이(1) 자신의 임의의 블록에 기억시키고, 메모리셀어레이(1)로부터 데이터를 판독할 때는 메모리셀어레이(1)에 기억되어 있는 어드레스변환테이블을 참조하여 물리어드레스를 구하여 데이터를 판독하며, 또 데이터를 기록할 때는 메모리셀어레이(1)에 격납된 빈블록테이블로부터 빈블록을 판별하고, 그 빈블록에 데이터를 기록하며, 또한 갱신된 어드레스변환테이블과 빈블록테이블을 다른 빈블록에 기록하는 것을 특징으로 한다.
기억장치, 액세스방법

Description

기억장치{STORAGE DEVICE}

본 발명은 기억장치 및 액세스방법에 관한 것으로 특히 블록소거형 기억장치와 그 액세스방법에 관한 것이다.

플래시메모리 등의 블록소거형 기억매체를 구비하고, 중앙처리장치(CPU)나 전용컨트롤러의 제어 하에 정보를 판독· 기록하는 블록소거형 기억장치가 알려져 있다.

블록소거형 기억매체란, 데이터를 기록하기 위해서는 기록의 대상으로 되는 영역의 기억내용이 미리 소거되어 있지 않으면 안되고, 소거의 처리가 기록처리에 의해 취급되는 최소기억용량의 단위(일반적으로 페이지, 세그먼트 등으로 불린다)에 동등한 크기이거나 또는 보다 큰 단위(일반적으로 블록으로 불린다)로 밖에 실시할 수 없는 기억매체를 가리킨다.

블록소거형 기억장치는 외부로부터의 액세스를 관리하기 위해 빈블록의 위치를 나타내는 정보를 격납하는 빈블록테이블이나 논리어드레스와 물리어드레스의 대응관계를 나타내는 정보를 격납하는 어드레스변환테이블을 기억하는 SRAM(스태틱형 랜덤 액세스 메모리)등을 구비하고 있다.

블록소거형 기억장치는 기록요구를 수신하면 빈블록테이블에 등록되어 있는 빈블록을 검색하고, 색출한 블록에 데이터를 기록하며, 그 블록의 물리어드레스와 논리어드레스의 대응관계를 어드레스변환테이블에 추가하고, 또한 그 블록을 빈블록테이블로부터 삭제한다.

또 블록소거형 기억장치는 판독요구를 수신하면 판독대상데이터의 논리어드레스를 키로서 어드레스변환테이블을 검색하여 판독대상의 데이터가 기억되어 있는 위치의 물리어드레스를 판별하고, 그 위치로부터 데이터를 판독하고 있다.

이와 같은 기억장치에서는 SRAM 등이 차지하는 용적의 분량만큼 기억장치 전체의 용적도 증대한다, 이로 인해 이와 같은 기억장치는 JEIDA / PCMCIA 카드 등 저(低)용적이 요구되는 용도에 이용하는 경우에는 용적을 억제하기 위한 연구가 필요했었다.

또 SRAM은 소비전력이 크고, 각종 테이블을 격납하기 위해 SRAM을 사용하면 기억장치 전체로서의 소비전력도 증가하여 버리고, JEIDA / PCMCIA 카드 등 저(低)소비전력이 요구되는 용도에 적합하지 않게 되어 버린다고 하는 문제가 있었다.

본 발명은 상기 실상(實狀)에 감안하여 이루어진 것으로, 소(小)용적 및 저소비전력의 블록소거형 기억장치와 그 액세스방법을 제공하는 것을 목적으로 한다.

상기 목적을 달성하기 위해 본 발명의 제 1 관점에 관련되는 기억장치는,

물리어드레스가 할당된 복수의 메모리블록을 포함하는 기억수단(1)과,

상기 기억수단의 기억데이터를 메모리블록단위로 일괄하여 소거하는 소거수단(1e)과,

데이터와 논리어드레스를 입력하고, 해당 데이터의 상기 기억수단 내의 기억위치를 결정하며, 해당 데이터를 해당 기억위치에 기록하는 기록수단(4X, 4B, 5, 20)으로 구성되고,

상기 기억수단은 상기 논리어드레스와 상기 기억수단의 물리어드레스의 대응관계를 나타내는 정보를 격납하는 어드레스변환테이블을 기억하며,

상기 기록수단은 상기 데이터를 기록한 위치의 물리어드레스와 입력한 논리어드레스의 대응 지움을 나타내는 정보를 상기 어드레스변환테이블에 추가하고, 또는 상기 어드레스변환테이블을 갱신하는 수단(4X, 4B, 5, 20)을 구비하는 것을 특징으로 한다.

이 구성의 기억장치에서는, 어드레스변환테이블은 블록소거형 기억매체인 기억수단에 기억되어 있다. 이로 인해 상기 기억수단 외에 어드레스변환테이블 기억용의 SRAM 등의 기억매체를 배치할 필요가 없다. 따라서 비교적 소용적으로 저소비전력의 블록소거형 기억장치를 제공할 수 있다.

상기 기억장치는,

상기 어드레스변환테이블이 기록되어 있는 블록의 물리어드레스를 기억하는 수단(20)과,

상기 어드레스변환테이블이 격납되어 있는 블록을 액세스하고, 판독대상데이터의 논리어드레스에 대응하는 물리어드레스를 판독하는 물리어드레스판독 수단(4X, 4B, 5, 20)과,

상기 물리어드레스판독수단에 의해 판독된 물리어드레스에 격납되어 있는 데 이터를 판독하여 출력하는 수단(4X, 4B, 5, 20)으로 구성되는 판독수단(4X, 4B, 5, 20)을 추가로 배치해도 좋다.

이 판독수단에 의해 판독대상데이터의 물리어드레스를 기억수단에 격납된 어드레스변환테이블로부터 판별하여 판독할 수 있다.

상기 기억수단은 데이터를 기억하고 있지 않은 빈블록을 나타내는 정보를 격납하는 빈블록테이블을 기억해도 좋다.

이와 같은 구성으로 하면 기억수단 외에 사용하는 SRAM 등의 메모리의 사용량을 또한 저감하고, 소용적화, 저소비전력화를 진행할 수 있다.

그리고, 상기 빈블록에 상기 정보가 기록되기 전에 존재한 상기 빈블록의 정보를 격납하는 상기 빈블록테이블은 제거되며, 그리고, 상기 빈블록기록수단에 의해 상기 빈블록에 상기 정보가 기록된 후에 잔존하는 상기 빈블록의 정보를 격납하는 상기 빈블록테이블을 상기 기억수단에 기억시키도록 하면 빈블록테이블에 포함되는 빈블록의 정보는 갱신되고, 수시로 최신의 빈블록정보를 얻을 수 있다.

또 상기 기억수단은, 예를 들면 복수 칩의 플래시메모리에 의해 구성된 것으로 할 수 있다. 이 경우 상기 어드레스변환테이블(및 상기 빈블록테이블)은 어느 것인가 칩의 플래시메모리의 임의의 1개의 블록에 기억하면 좋다. 그리고, 어드레스변환테이블 및 빈블록테이블이 어느 칩의 어느 블록에 기억되어 있는지를 나타내는 정보를 기억하는 수단을 설치하면 좋다.

상기 기억수단은, 예를 들면 상기 어드레스변환테이블과 상기 빈블록테이블을 1개의 블록 내에 기억한다.

이와 같은 구성으로 하면 어드레스변환테이블과 빈블록테이블의 격납을 위해 사용하는 블록을 1개로 억제하여 기억수단의 기억용량을 유효하게 사용할 수 있다. 또 이들 테이블의 기억위치의 관리 등이 용이하게 된다.

또 본 발명의 제 2 관점에 관련되는 기억장치는,

물리어드레스가 할당된 복수의 메모리블록을 포함하는 기억수단(1)과,

상기 기억수단의 기억데이터를 메모리블록단위로 일괄하여 소거하는 소거수단(1e)과,

기록대상의 데이터와 논리어드레스를 입력하고, 해당 데이터의 상기 기억수단 내의 기억위치를 결정하며, 해당 데이터를 해당 기억위치에 기록하는 기록수단(4X, 4B, 5, 20)으로 구성되고,

상기 기억수단은 상기 데이터를 기억하고 있지 않은 빈블록을 나타내는 빈블록정보를 기억하고 있으며,

상기 기록수단은 상기 빈블록정보가 나타내는 빈블록에 상기 데이터를 기록하는 것을 특징으로 한다.

이 구성에 따르면 빈블록정보는 블록소거형 기억매체인 기억수단에 기억되어 있다. 이로 인해 상기 기억수단 외에 빈블록정보 기억용의 SRAM 등 외의 기억매체를 배치할 필요가 없다. 따라서 비교적 소용적으로 저소비전력의 블록소거형 기억장치를 제공할 수 있다.

또 상기 기록수단은 상기 기억수단에 기억된 상기 빈블록정보를 상기 기록수단에 의해 상기 빈블록에 상기 데이터가 기록된 후에 잔존하는 상기 빈블록의 정보 를 나타내는 상기 빈블록정보에 갱신하는 수단(1e, 4X, 4B, 5, 20)을 추가로 구비하도록 하면 상기 빈블록정보는 갱신되고, 수시로 최신의 빈블록정보를 얻을 수 있다.

상기 빈블록정보는 각 빈블록의 일부에 기억되고, 다른 1개의 빈블록을 나타내도록 연쇄적으로 등록된 연쇄정보로 구성되는 것으로 할 수 있다. 이 경우 상기 기록수단은 상기 연쇄정보에 따라 빈블록을 판별하고, 해당 빈블록에 상기 데이터를 기록하는 수단(4X, 4B, 5, 20)을 구비하는 것으로 할 수 있다.

이 구성에 따르면 빈블록테이블을 격납하기 위해 1개의 블록을 사용할 필요가 없어 기억매체의 사용효율이 높다. 또 빈블록의 연쇄정보에 의거하여 기록대상의 블록을 특정하기 때문에 각 블록의 사용빈도를 균일화할 수 있다,

상기 빈블록정보를 연쇄정보로 구성하는 경우 최초의 빈블록어드레스를 기억하는 선두(先頭)빈블록기억수단(20) 등을 배치하고, 여기에 기억된 물리어드레스가 붙여진 빈블록에 데이터를 기록하며, 선두빈블록기억수단의 내용을 데이터를 기록한 블록에 등록되어 있는 연쇄정보로 갱신해도 좋다.

기억수단을 플래시메모리 등으로 구성하는 경우, 기억영역은 데이터영역과 리던던트영역으로 구성된다. 이 경우 연쇄정보를 상기 리던던트영역에 격납하여 둘 수 있다.

이와 같은 기억장치에 있어서는 연쇄정보는 빈블록의 상기 리던던트영역에 기록되고, 상기 데이터는 이미 연쇄정보가 기록되어 있는 빈블록에 덮어 쓰여진다.

이 때 상기 데이터영역과 상기 리던던트영역은 상기 기억영역 중에서 서로 중복하지 않도록 배치됨으로써 상기 데이터의 덮어쓰기에 의해서도 상기 연쇄정보는 파괴되지 않는다.

또 이 제 2 관점에 관련되는 기억장치에 있어서도 상기 기억수단은, 예를 들면 복수 칩의 플래시메모리에 의해 구성된 것으로 할 수 있다. 이 경우 상기 연쇄정보는 다음의 빈블록이 어느 칩의 어느 블록에 기록되어 있는지를 나타내는 정보에 의해 구성하면 좋다.

또 본 발명의 제 3 관점에 관련되는 액세스방법은,

블록단위로 데이터의 소거가 가능하고, 미리 데이터가 소거된 빈블록에 데이터의 기록이 가능한 블록소거형의 메모리로의 액세스방법으로,

상기 메모리에 붙여진 물리어드레스와 데이터의 논리어드레스의 대응관계를 나타내는 어드레스변환테이블을 상기 메모리 자신에 기억시키고,

기록대상데이터와 그 논리어드레스가 공급되었을 때는 해당 논리어드레스에 이미 데이터가 기록되어 있는지 없는지를 상기 어드레스변환테이블에 의해 판별하며, 존재한다고 판별했을 때는 상기 빈블록을 판별하여 상기 데이터를 해당 빈블록에 기록하는 동시에 구데이터를 갖는 블록을 소거하고, 존재하지 않는다고 판별했을 때는 상기 빈블록을 판별하여 상기 데이터를 해당 빈블록에 기록하며, 다음에,

상기 데이터가 기록된 상기 블록의 물리어드레스와 상기 논리어드레스의 대응을 나타내는 정보를 상기 메모리 내의 상기 어드레스변환테이블에 추가하거나, 또는 그 정보를 갱신하고,

판독대상데이터의 논리어드레스가 공급되었을 때는 상기 메모리 내의 상기 어드레스변환테이블을 액세스하여 해당 데이터가 격납된 위치의 물리어드레스를 판별하고, 해당 물리어드레스로부터 데이터를 판독하여 출력하는 것을 특징으로 한다.

또 본 발명의 제 4 관점에 관련되는 액세스방법은,

블록단위로 데이터의 소거가 가능하고, 미리 데이터가 소거된 빈블록에 데이터의 기록이 가능한 블록소거형의 메모리로의 액세스방법으로,

상기 메모리에 빈블록을 나타내는 빈블록테이블을 기억시켜 두고, 기록대상데이터가 공급되었을 때에 상기 메모리 내의 빈블록테이블에 의거하여 빈블록을 판별하여 판별한 빈블록에 해당 데이터를 기록하는 것을 특징으로 한다.

제 3 및 제 4 관점에 관련되는 액세스방법에 따르면, 메모리의 일부를 어드레스변환테이블이나 빈블록테이블로서 사용할 수 있고, 이들의 테이블을 격납하기 위한 SRAM 등 외의 메모리를 배치할 필요가 없어 소용량화, 저소비전력화에 기여한다.

또 본 발명의 제 5 관점에 관련되는 액세스방법은,

블록단위로 데이터의 소거가 가능하고, 미리 데이터가 소거된 빈블록에 데이터의 기록이 가능한 블록소거형 메모리로의 액세스방법으로,

상기 메모리가 구비하는 블록에 해당 메모리의 빈블록을 나타내는 빈블록정보를 기억시키고,

기록대상데이터가 공급되었을 때에 상기 빈블록정보에 의거하여 빈블록을 판별하며, 판별한 빈블록에 해당 데이터를 기록하는 동시에 상기 빈블록정보에 의거 하여 빈블록을 새로이 판별하고, 상기 빈블록정보를 기억하는 상기 블록의 기억내용을 소거하는 동시에 새로이 판별한 상기 빈블록에 갱신된 빈블록정보를 기록하는 것을 특징으로 한다.

제 5 관점에 관련되는 액세스방법에 따르면 메모리의 일부를 어드레스변환테이블이나 빈블록테이블로서 사용할 수 있어 소용량화, 저소비전력화를 도모할 수 있는 데다 상기 빈블록의 정보가 갱신됨으로써 수시로 최신의 빈블록정보를 얻을 수 있다.

또 본 발명의 제 6 관점에 관련되는 액세스방법은,

블록단위로 데이터의 소거가 가능하고, 미리 데이터가 소거된 빈블록에 데이터의 기록이 가능한 블록소거형 메모리로의 액세스방법으로,

상기 메모리의 각 빈블록의 일부에 차례로 다른 빈블록을 나타내는 정보로 이루어지는 빈블록연쇄정보를 격납하고,

기록대상데이터가 공급되었을 때에 빈블록연쇄정보에 의해 정의되는 빈블록 연쇄의 선두빈블록을 판별하며, 판별한 빈블록에 데이터를 기록하는 것을 특징으로 한다.

제 6 관점에 관련되는 액세스방법에 따르면 메모리의 일부를 빈블록테이블로서 사용할 수 있다.

또 데이터가 기록되는 블록이 연쇄정보에 의해 정의되는 연쇄의 차례대로 되기 때문에 기록빈도를 메모리 전체에서 균일화할 수 있다.

도 1은 본 발명의 실시형태에 관련되는 기억장치의 기본구성을 나타내는 블록도.

도 2는 메모리셀어레이의 구성을 나타내는 도면.

도 3은 기억영역의 논리적 구조를 나타내는 도면.

도 4는 빈블록테이블구성의 한 예를 나타내는 도면.

도 5는 어드레스변환테이블 구성의 한 예를 나타내는 도면.

도 6은 데이터를 판독하는 처리를 나타내는 흐름도.

도 7은 물리어드레스결정의 처리를 나타내는 흐름도.

도 8은 기록처리를 나타내는 흐름도.

도 9는 구 데이터 소거의 처리를 나타내는 흐름도.

도 10은 빈블록테이블 및 어드레스변환테이블을 갱신하는 처리를 나타내는 흐름도.

도 11은 제 2 실시형태의 기억장치에 있어서의 빈블록의 연쇄를 나타내는 개념도.

도 12는 제 2 실시형태의 기억장치에 있어서의 데이터기록처리의 흐름도.

도 13은 제 2 실시형태의 기억장치에 있어서의 빈블록정보 및 어드레스변환테이블을 갱신하는 처리를 나타내는 흐름도 이다.

※도면의 주요 부분에 대한 부호의 설명

1: 메모리셀어레이

1e: 소거제어회로

2: I/O버퍼

3B: 블록어드레스버퍼

3X: X어드레스버퍼

4B: 블록어드레스디코더

4X: X어드레스디코더

5: 제어회로

6: 글로벌버퍼

10: 플래시메모리유닛

11: 컴퓨터

12: CPU

13: 버스라인

20: 컨트롤러

이하, 본 발명을 실시하기 위한 최선의 형태에 관련되는 기억장치를 설명한다.

(제 1 실시형태)

본 실시 형태에 관련되는 기억장치는 어드레스변환테이블 등을 플래시메모리유닛 자신에 기억하는 것이고, 도 1에 나타내는 바와 같이 플래시메모리유닛(10)과 컨트롤러(20)로 구성된다.

플래시메모리유닛(10)은 메모리셀어레이(1)와, I/O버퍼(2)와, X어드레스버퍼(3X)와, 블록어드레스버퍼(3B)와, X어드레스디코더(4X)와, 블록어드레스디코더(4B)와, 제어회로(5)와, 글로벌버퍼(6)로 구성된다.

메모리셀어레이(1)는 복수의 셀로 구성되어 있다, 각 메모리셀은, 예를 들면 NAND형의 것으로서 1바이트의 기억용량을 갖는다. 이들의 메모리셀은 논리적으로는 도 2에 나타내는 바와 같이 세로 16,384행, 가로 528열의 매트릭스상으로 배치되어 있다. 따라서 메모리셀어레이(1)는 전체로서는 8. 65메가 바이트의 기억용량을 갖는다.

메모리셀어레이(1)는 8개의 데이터입출력단(Tdata)과, 대응하는 행의 메모리셀에 공통으로 접속된 16,384개의 행제어입력단(Trowcont)과, 모든 메모리셀에 공통의 판독제어단(Treadcont) 및 기록제어단(Twritecont)과, 데이터 소거용의 소거제어회로(1e)를 구비한다.

메모리셀어레이(1)의 판독제어단(Treadcont)에 제어신호가 입력되어 있을 때, 행제어입력단(Trowcont)에 제어신호가 공급되면 제어신호를 공급받은 행의 메모리셀은 그 기억내용을 선두부터 메모리셀 1개 분량(즉 1바이트)씩 528회에 나누어 데이터출력단(Tdata)에 출력한다.

한편 기록제어단(Twritecont)에 제어신호가 입력되어 있을 때는 데이터입출력단(Tdata)으로부터 입력되는 데이터를 1바이트씩 528회에 나누어 선두의 메모리셀부터 기억한다,

단, 각 메모리셀은 NAND형이기 때문에 데이터의 기록은 기록 값을 「1」에서 「0」으로 하는 방향으로밖에 실시할 수 없으며, 일단 기억 값이 「0」으로 된 메 모리셀은 기억내용이 리셋될 때까지 기억 값이 「0」의 상태를 유지한다.

도 2에 나타내는 바와 같이 메모리셀의 매트릭스 각 행은 528바이트의 기억용량을 갖는 페이지를 구성한다, 페이지에는 연속적으로 1에서 16,384까지의 페이지어드레스가 부여되고, 각 페이지에 포함되는 메모리셀에는 연속적으로 1에서 528까지의 번호가 부여되어 있다.

도 2 및 도 3에 나타내는 바와 같이 각 페이지는 선두부터 16페이지 단위로 1개의 블록을 구성한다. 각 블록은 8킬로 바이트의 기억용량을 갖고, 기억영역 전체는 1,024개의 블록으로 구성되어 있다.

또 각 페이지는 도 3에 나타내는 바와 같이 선두부터 512바이트의 영역을 차지하는 데이터영역과 말미 16바이트를 차지하는 리던던트부로 구성된다. 데이터영역에는 본래의 데이터가 격납되고, 리던던트부에는 에러체크코드 등이 격납된다.

그리고, 데이터소거용의 소거제어회로(1e)에 특정 블록의 데이터를 소거하도록 지시하는 제어신호가 입력되면 해당 블록에 포함되는 모든 메모리셀의 기억내용이 리셋된다(즉 각 메모리셀의 기억 값이 「1」로 된다).

메모리셀어레이(1)에는 이 메모리셀어레이(1)에 액세스하기 위한 빈블록테이블 및 어드레스변환테이블이 격납되어 있다.

빈블록테이블은 메모리셀어레이(1)의 임의의 블록 선두페이지에 기억되어 있고, 메모리셀어레이(1)의 각 블록의 어느 것인가가 빈블록(즉 리셋된 상태이고, 데이터「0」을 기억한 메모리셀을 포함하지 않은 블록)인가를 나타내는 정보를 격납한다, 빈블록테이블이 격납되어 있는 블록의 정보는 후술하는 바와 같이 제어회로(5)에 기억된다.

메모리셀어레이(1)의 블록 총수가 1,024개일 때 빈블록테이블구조의 한 예를 도 4에 나타낸다. 이 빈블록테이블은 특정 블록 선두의 128바이트의 메모리셀(즉 선두부터 1,024비트)로 구성되고. 선두의 비트부터 차례로 블록 1부터 블록 1,024에 1 대 1로 대응하며, 대응하는 블록이 빈블록일 때 「1」, 빈블록이 아닐 때 「0」을 격납한다.

어드레스변환테이블은 빈블록테이블이 격납되어 있는 블록의 제 2 페이지 이후에 기억되고, 메모리셀어레이(1)의 각 블록에 할당되어 있는 논리어드레스를 나타내는 정보를 격납한다.

논리어드레스는 이 기억장치가 후술하는 동작에 의해 판독· 기록되었을 때에 후술하는 외부의 컴퓨터(11)가 구비하는 CPU(중앙처리유닛)(12)나 컨트롤러(20) 등에 의해 테이터 판독· 기록의 단위로서 인식되는 단위이다.

논리어드레스가 할당되어 있는 영역의 총량은 메모리셀어레이(1)의 기억용량보다 작은 소정의 값, 예를 들면 16,000페이지 분량이며, 각 논리어드레스가 차지하는 기억용량은, 예를 들면 1페이지가 차지하는 기억영역에 일치한다.

논리어드레스는 구체적으로는, 예를 들면 메모리셀어레이(1)의 기억용량보다 작은 소정의 값에 상당하는 크기(예를 들면 16,000페이지 분량)의 가상의 기억영역을 512바이트마다의 구획으로 나누고, 각 구획에 0부터 시작하는 연번(連番)을 붙인 경우의 해당 연번, 즉 LBA(Logic Block Address)로 구성되어 있다.

어드레스변환테이블 구조의 한 예를 도 5에 나타낸다. 어드레스변환테이블 은 복수의 레코드로 이루어지고, 각 레코드의 선두에는 논리어드레스가 격납되며, 이어서 해당 논리어드레스에 대응 지워져있는 영역의 선두페이지가 위치하는 블록의 번호(블록어드레스)와 그 선두페이지의 번호가 격납되어 있다.

I/O버퍼(2)는 도 1에 나타내는 바와 같이 글로벌버퍼(6)와 메모리셀어레이(1)의 데이터입출력단(Tdata)과 제어회로(5)에 접속되어 있다.

I/O버퍼(2)는 제어회로(5)의 지시에 따라 글로벌버퍼(6)가 기억하는 데이터를 메모리셀어레이(1)의 데이터입출력단(Tdata)에 1바이트씩 출력하는 동작과 데이터입출력단(Tdata)으로부터 출력되는 데이터를 글로벌버퍼(6)에 1바이트씩 출력하는 동작을 실시한다.

X어드레스버퍼(3X)는 글로벌버퍼(6)로부터 메모리셀어레이(1)의 행어드레스(즉 페이지어드레스)를 나타내는 행어드레스신호를 입력하여 X어드레스디코더(4X)에 출력한다.

X어드레스디코더(4X)는 행어드레스신호가 나타내는 행 또는 제어회로(5)가 지시하는 행의 행제어입력단(Trowcont)에 액티브레벨의 제어신호를 공급한다.

블록어드레스버퍼(3B)는 글로벌버퍼(6)로부터 메모리셀어레이(1)의 각 블록의 어드레스를 나타내는 블록어드레스신호를 입력하여 블록어드레스디코더(4B)에 출력한다.

블록어드레스디코더(4B)는 블록어드레스신호가 나타내는 블록 또는 제어회로(5)가 지시하는 블록의 데이터를 소거하도록 지시하는 신호를 소거제어회로(1e)에 공급한다.

제어회로(5)는 글로벌버퍼(6)로부터 커맨드를 입력하여 해석하고, 해석 결과에 따라 X어드레스버퍼(3X), X어드레스디코더(4X), 블록어드레스디코더(4B) 및 I/O버퍼(2)를 제어한다.

또 제어회로(5)는 컨트롤러(20)로부터 기록신호(Swrite) 및 래치신호(Slatch)의 공급을 받는다. 그리고 이들의 신호에 따라 메모리셀어레이(1) 및 글로벌버퍼(6)를 후술하는 바와 같이 제어한다. 또 제어회로(5)는 컨트롤러(20)에 후술하는 타이밍으로 비지신호(Sbusy) 및 리디신호(Sready)를 공급한다.

또 제어회로(5)는 글로벌버퍼(6)에 격납된 데이터가 후술하는 셋업커맨드나 소거커맨드 등의 소정의 커맨드를 나타낼 때 그 커맨드가 지시하는 처리를 후술하는 바와 같이 실행한다.

또한 비지신호(Sbusy) 및 리디신호(Sready)는 동일의 신호선을 통해서 전송하도록 해도 좋다. 따라서 예를 들면 제어회로(5)가 소정의 신호선에 2값 논리값“1”을 나타내는 전압을 인가하고 있을 때는 제어회로(5)가 비지신호(Sbusy)를 공급하고 있는 것으로 하고, 2값 논리값“0”을 나타내는 전압을 인가하고 있을 때는 리디신호(Sready)를 공급하고 있는 것으로 해도 좋다.

글로벌버퍼(6)는 I/O버퍼(2)와 제어회로(5)와, 컨트롤러(20)에 접속되어 있다. 그리고 제어회로(5)로부터 출력되는 제어신호에 따라 버스라인(13)상의 신호 및 I/O버퍼(2)의 기억내용 중 해당 제어신호가 공급된 시점에서 자기에게 공급되어 있는 것을 기억하고, 기억한 내용을 X어드레스버퍼(3X) 또는 제어회로(5)에 출력한 다.

컨트롤러(20)는 CPU 등으로 이루어지고, 플래시메모리유닛(10)의 제어회로(5)에 접속되어 있으며, 또 버스라인(13)을 통해서 플래시메모리유닛(10)의 글로벌버퍼(6) 및 컴퓨터(11)의 CPU(12)에 접속되어 있다. 단, 컨트롤러(20)를 구성하는 CPU는 컴퓨터(11)의 CPU(12)와 동일의 것이어도 좋다.

컨트롤러(20)는 외부의 컴퓨터(11)가 구비하는 CPU(12) 등에 의해 공급되는 커맨드에 따라 후술하는 바와 같이 제어회로(5)에 기록신호(Swrite)나 래치신호(Slatch)를 공급하고, 글로벌버퍼(6)에는 물리어드레스, 기록대상의 데이터, 커맨드 등을 공급하여 플래시메모리유닛(10)을 제어한다.

또 컨트롤러(20)는 어드레스변환테이블 및 빈블록테이블의 위치와 최후에 기록이 이루어진 블록의 위치를 나타내는 데이터를 기억하고, CPU(12)로부터 공급된 커맨드에 따른 후술의 처리를 실행할 때에 자기가 기억하고 있는 데이터를 참조한다. 또 컨트롤러(20)는 CPU(12)로부터 판독대상의 데이터를 바이트 단위로 나타낸 양(즉 바이트 수)을 공급받으면 이것을 기억하고, 후술하는 처리에 있어서 참조한다.

(제 1 실시형태의 동작)

다음에 본 기억장치에 데이터를 기록하는 처리를 도 6∼도 10을 참조하여 설명한다.

도 6은 데이터를 판독하는 처리를 나타내는 흐름도이다.

도 7은 물리어드레스 결정의 처리를 나타내는 흐름도이다.

도 8은 기록처리를 나타내는 흐름도이다.

도 9는 구데이터 소거의 처리를 나타내는 흐름도이다.

도 10은 빈블록테이블 및 어드레스변환테이블을 갱신하는 처리를 나타내는 흐름도이다.

(데이터판독)

컴퓨터(11) 내의 CPU(12)는 이 기억장치로부터 데이터를 판독하는 경우, 도 6에 나타내는 데이터판독의 처리를 실행한다.

처리가 개시되면 CPU(12)는 판독대상의 데이터가 격납되어 있는 논리어드레스를 버스라인(13)상에 출력하고, 컨트롤러(20)에 데이터의 판독을 지시하는 커맨드와 판독데이터가 격납되어 있는 기억영역의 페이지 수를 공급한다(도 6, 스텝 S101).

컨트롤러(20)는 CPU(12)로부터의 커맨드에 응답하고, 버스라인(13)을 통해서 공급된 논리어드레스 및 페이지 수를 취득하여 양자를 기억한다(스텝 S102).

그리고 컨트롤러(20)는 어드레스변환테이블 선두페이지의 물리어드레스를 글로벌버퍼(6)에 공급하고, 제어회로(5)에 래치신호(Slatch)를 송출하여 제어회로(5)로부터 리디신호(Sready)가 공급되는 것을 대기한다(스텝 S103).

제어회로(5)는 컨트롤러(20)로부터의 래치신호(Slatch)에 응답하고, 컨트롤러(20)에의 비지신호(Sbusy)의 공급을 개시하며, 컨트롤러(20)가 공급하고 있는 물리어드레스를 래치하는 지시를 글로벌버퍼(6)에 보낸다. 이 지시에 응답하여 글로벌버퍼(6)는 컨트롤러(20)가 공급하고 있는 물리어드레스를 래치한다(스텝 S104). 글로벌버퍼(6)에 래치된 물리어드레스 중 블록어드레스에 해당하는 부분은 블록어드레스버퍼(3B)를 통해서 블록어드레스디코더(4B)에 공급되고, 페이지어드레스에 해당하는 부분은 X어드레스버퍼(3X)를 통해서 X어드레스디코더(4X)에 공급된다.

제어회로(5)는 어드레스변환테이블의 판독을 실시하기 위해 글로벌버퍼(6)로부터 페이지어드레스를 공급받은 X어드레스디코더(4X)에 해당 페이지어드레스가 나타내는 페이지를 선택하도록 지시한다.

X어드레스디코더(4X)는 제어회로(5)로부터의 지시에 응답하여 어드레스변환테이블이 격납되어 있는 페이지의 행제어입력단(Trowcont)에 액티브레벨의 제어신호를 출력한다. 이에 따라 어드레스변환테이블 중 컨트롤러(20)가 지시하는 페이지가 선택된다.

다음에 제어회로(5)는 메모리셀어레이(1)의 판독제어단(Treadcont)에 데이터판독의 지시를 보내고, 비지신호(Sbusy)의 공급을 정지하여 컨트롤러(20)에 리디신호(Sready)를 공급한다. 한편 메모리셀어레이(1)는 제어회로(5)로부터 보내진 지시에 응답하여 어드레스변환테이블이 있는 해당 페이지의 기억내용을 I/O버퍼 및 글로벌버퍼(6)를 통해서 컨트롤러(20)에 1바이트씩 차례로 출력한다.

한편 컨트롤러(20)는 글로벌버퍼(6)로부터 공급되는 정보를 차례로 판독함으로써 해당 페이지에 기억되어 있는 각 논리어드레스와 각 논리어드레스에 대응 지워진 물리어드레스를 판독한다(스텝 S105).

그리고, 컨트롤러(20)는 어드레스변환테이블로부터 판독한 논리어드레스 중에 스텝 S102에서 CPU(12)로부터 취득한 논리어드레스와 일치하는 것이 있는지 없 는지를 판별한다(스텝 S106).

스텝 S106에 있어서 일치하는 논리어드레스가 없다고 판별했을 때 컨트롤러(20)는 글로벌버퍼(6)에 어드레스변환테이블의 다음 페이지의 물리어드레스를 공급하고, 제어회로(5)에 래치신호(Slatch)를 송출하며(스텝 S107), 이 기억장치는 처리를 스텝 S104로 되돌린다.

한편 스텝 S106에 있어서 일치하는 논리어드레스가 있다고 판별했을 때는 처리를 S108로 옮긴다.

스텝 S108에 있어서 컨트롤러(20)는 스텝 S106에서 일치한다고 판별한 논리어드레스가 나타내는 물리어드레스(즉 판독대상의 데이터가 있는 페이지 중 선두페이지의 물리어드레스)의 값을 글로벌버퍼(6)에 공급하고, 제어회로(5)에 래치신호(Slatch)를 송출한다.

그러면 플래시메모리유닛(10)은 컨트롤러(20)가 스텝 S103에서 공급한 래치신호(Slatch)에 응답한 경우의 처리와 실질적으로 동일의 처리를 실시하고, 컨트롤러(20)가 글로벌버퍼(6)에 공급한 물리어드레스의 기억내용(즉 판독대상의 데이터 중 아직 판독되어 있지 않은 부분의 선두페이지의 내용)을 글로벌버퍼(6)를 통해서 컨트롤러(20)에 1바이트씩 차례로 공급한다(스텝 S109).

한편 컨트롤러(20)는 스텝 S109에서 글로벌버퍼(6)가 공급하는 정보를 차례로 판독함으로써 판독하는 대상의 데이터를 판독하고, 판독한 데이터를 버스라인(13)을 통해서 CPU(12)에 공급한다(스텝 S110).

그리고, 컨트롤러(20)는 스텝 S108의 처리를 개시하여 이후에 판독한 페이지 수가 CPU(12)로부터 공급되어 스텝 S102에서 자기가 기억한 페이지 수에 이르고 있는지 없는지를 판별한다(스텝 S111).

그리고, 이르고 있지 않다고 판별했을 때 컨트롤러(20)는 제어회로(5)가 비지신호(Sbusy)의 공급을 정지한 타이밍에서 판독대상의 데이터가 있는 다음의 물리어드레스를 글로벌버퍼(6)에 공급하고, 제어회로(5)에 래치신호(Slatch)를 송출한다(스텝 S112). 그리고, 이 기억장치는 처리를 스텝 S109로 되돌린다.

한편 이르고 있다고 판별하면 컨트롤러(20)는, 예를 들면 버스라인(13)을 통해서 CPU(12)에 종료코드를 보내거나, 도시하지 않는 제어신호를 CPU(12)에 출력함으로써 CPU(12)에 판독종료를 통지한다(스텝 S113).

CPU(12)는 판독종료를 검지하면(스텝 S114), 데이터판독의 처리를 종료한다.

스텝 S101∼S114의 처리에 의해 메모리셀어레이(1) 자체에 격납된 어드레스변환테이블을 이용하여 논리어드레스에 대응하는 물리어드레스의 위치가 검색되어 그 위치에 있는 데이터가 차례로 판독된다.

판독대상의 논리어드레스가 복수 있을 때는 스텝 S101∼S114의 처리를 판독대상의 논리어드레스의 수만큼 반복하여 실시한다.

(데이터기록: 새로운 물리어드레스의 결정)

메모리셀어레이(1)에 데이터를 기록하는 경우. 이 기억장치는 우선 도 7에 나타내는 물리어드레스결정의 처리를 실시하고, 데이터기록대상의 물리어드레스를 결정하는 처리를 실행한다.

CPU(12)는, 예를 들면 우선 기록대상데이터의 크기부터 1페이지의 기억용량 을 512바이트로 하여 기록에 요하는 페이지 수를 산출하고, 기록의 대상으로 하는 논리어드레스를 결정한다.

그리고, CPU(12)는 기록대상의 논리어드레스 중 가장 번호가 이른 것을 버스라인(13)상에 출력하고, 컨트롤러(20)에 데이터의 기록을 지시하는 커맨드를 보낸다(스텝 S201).

컨트롤러(20)는 스텝 S201에서 CPU(12)로부터 보내진 커맨드에 응답하여 도 6의 처리에 있어서의 스텝 S103∼S107의 처리와 실질적으로 동일의 처리를 실시한다(스텝 S202).

즉 플래시메모리유닛(10)으로부터 어드레스변환테이블의 내용을 판독하고, 판독한 내용 중 스텝 S201에서 CPU(12)로부터 취득한 논리어드레스와 일치하는 것이 있는지 없는지를 차례로 판별함으로써 CPU(12)로부터 취득한 해당 논리어드레스에 대응 지워져있는 물리어드레스를 특정한다.

스텝 S202에서 물리어드레스가 특정되면 컨트롤러(20)는 특정된 물리어드레스를 기억한다(스텝 S203). 그리고, 빈블록테이블을 판독하기 위해 글로벌버퍼(6)에 빈블록테이블의 물리어드레스를 공급하고, 제어회로(5)에 래치신호(Slatch)를 보낸다(스텝 S204).

제어회로(5)는 스텝 S103에서 래치신호(Slatch)를 공급받았을 경우와 똑같이 하여 X어드레스디코더(4X)에 빈블록테이블이 있는 페이지를 선택시킨다.

그리고, 제어회로(5)는 페이지가 선택되면 메모리셀어레이(1)의 판독제어단(Treadcont)에 데이터 판독의 지시를 보낸다. 메모리셀어레이(1)는 지 시를 받으면 빈블록테이블이 있는 해당 페이지의 기억내용을 I/O버퍼(2) 및 글로벌버퍼(6)를 통해서 컨트롤러(20)에 1바이트씩 차례로 출력한다.

그리고, 컨트롤러(20)는 글로벌버퍼(6)로부터 공급되는 정보를 차례로 판독함으로써 빈블록테이블을 취득한다(스텝 S205).

다음에 컨트롤러(20)는 취득한 빈블록테이블의 내용에 의거하여 임의의 빈블록에 속하는 물리어드레스를 특정하고(스텝 S206), 이후 스텝 S206에서 특정한 물리어드레스를 기록대상의 논리어드레스가 나타내는 물리어드레스인 것으로서 취급하는 것으로 결정한다.

단, 스텝 S206에 있어서는 도 7의 처리를 개시하여 이후 이미 스텝 S206에서 특정된 물리어드레스를 재차 특정하지 않도록 하는 것으로 한다.

또 스텝 S206에 있어서는 도 7의 처리를 개시하여 이후에 스텝 S206에서 특정된 물리어드레스가 속하는 블록은 해당 물리어드레스에 데이터가 기록된 후에도 빈블록인 것으로서 취급한다.

또 데이터기록대상의 물리어드레스로서 논리어드레스가 할당되어 있지 않은 물리어드레스가 선택돼도 좋다.

(데이터기록: 플래시메모리로의 기록)

스텝 S206의 처리를 종료하면 컨트롤러(20)는 도 8에 나타내는 기록처리를 실행한다.

즉 컨트롤러(20)는 스텝 S206의 처리에 의해 물리어드레스를 특정하면 글로벌버퍼(6)에 특정한 물리어드레스를 공급하고, 제어회로(5)에 래치신호(Slatch)를 보낸다(스텝 S211).

제어회로(5)는 래치신호(Slatch)에 응답하여 비지신호(Sbusy)의 공급을 정지하고, 컨트롤러(20)에의 리디신호(Sready)의 공급을 개시한다. 그리고, X어드레스디코더(4X)에 스텝 S206에서 특정된 물리어드레스를 선택시킨다.

한편 컨트롤러(20)는 리디신호(Sready)에 응답하여 CPU(12)에 기록대상의 데이터공급을 요구하고(스텝 S212), CPU(12)는 이 요구에 응답하여 기록대상의 데이터 중 선두의 1바이트 분량을 버스라인(13)을 통해서 컨트롤러(20)에 공급한다.

그리고 컨트롤러(20)는 버스라인(13)을 통해서 CPU(12)로부터 공급된 기록대상의 데이터를 기억하여 글로벌버퍼(6)에 공급하고, 제어회로(5)에 기록신호(Swrite)를 보낸다(스텝 S213).

제어회로(5)는 기록신호(Swrite)에 응답하여 글로벌버퍼(6)에 공급된 기록대상의 데이터를 래치하도록 글로벌버퍼(6)에 지시하고, 리디신호(Sready)의 공급을 정지하여 컨트롤러(20)에의 비지신호(Sbusy)의 공급을 재개한다. 글로벌버퍼(6)는 버스라인(13)상의 데이터를 래치하여 I/O버퍼(2)에 격납한다.

다음에 제어회로(5)는 I/O버퍼(2)에 I/O버퍼(2)가 격납하고 있는 데이터를 데이터입출력단(Tdata)에 출력하도록 지시한다. 지시에 응답하고, I/O버퍼(2)는 글로벌버퍼(6)에 의해 자기에 격납된 데이터를 데이터입출력단(Tdata)에 출력한다.

다음에 제어회로(5)는 메모리셀어레이(1)에 데이터입출력단(Tdata)에 현재 입력되어 있는 데이터를 기억시키기 위해 기록제어단(Twritecont)에 액티브레벨의 기록제어신호를 출력한다. 기록제어신호에 응답하여 메모리셀어레이(1)는 데이터 입출력단(Tdata)에 입력되어 있는 데이터를 현재 선택되어 있는 페이지의 선두메모리셀에 기록한다.

메모리셀어레이(1)의 기록제어단(Twritecont)에 액티브레벨의 기록제어신호를 출력한 후 제어회로(5)는 비지신호(Sbusy)의 공급을 정지하고, 컨트롤러(20)에의 리디신호(Sready)의 공급을 재개한다. 컨트롤러(20)는 리디신호(Sready)의 공급 재개를 검지하면 스텝 S214로 처리를 옮긴다.

스텝 S214에 있어서 컨트롤러(20)는 후속데이터를 요구하는 신호를 보낸 후 바이트 카운터의 값을 참조하여 현재 선택 중의 페이지에 512바이트의 데이터가 기록되었는지 아닌지를 판별한다.

그리고 512바이트 기록되었다고 판별하면 컨트롤러(20)는 CPU(12)에 다음의 논리어드레스를 보내는 것을 요구한다(스텝 S215).

그리고, CPU(12)가 다음의 논리어드레스를 버스라인(13)상에 송출하고, 컨트롤러(20)가 그 논리어드레스를 취득하면 컨트롤러(20)는 그 논리어드레스를 스텝 S201에서 취득한 것으로서 취급하는 것으로 하고, 처리를 도 7의 처리에 있어서의 스텝 S202로 되돌린다.

한편 512바이트 기록되어 있지 않다고 판별하면 컨트롤러(20)는 CPU(12)에 기록대상의 후속데이터를 요구하는 신호를 보낸다(스텝 S216).

CPU(12)는 이 신호에 응답하여 기록대상의 후속데이터가 있는지 없는지를 판별하고, 후속데이터가 없다고 판별하면 버스라인(13)에 기록종료를 나타내는 제어코드를 공급한다. 한편 후속데이터가 있다고 판별하면 CPU(12)는 버스라인(13)에 후속의 1바이트의 데이터를 공급한다.

컨트롤러(20)는 스텝 S216에서 후속데이터를 요구하는 신호를 보낸 후 CPU(12)로부터 후속의 데이터 또는 기록종료를 나타내는 제어코드를 공급받으면 공급된 것이 기록종료를 나타내는 제어코드인지 아닌지를 판별한다(스텝 S217).

그리고, 해당 제어코드가 아니라고 판별하면 컨트롤러(20)는 처리를 스텝 S213으로 되돌리고, 해당 제어코드라고 판별하면 도 9에 나타내는 구데이터소거의 처리로 옮긴다.

또한 CPU(12)가 기록대상의 데이터가 아닌 것을 컨트롤러에 통지하는 수법은 임의이고, 제어코드를 버스라인(13)을 통해서 공급하는 수법에 한하지 않고, 예를 들면 다른 임의의 제어선을 통해서 기록대상의 데이터가 아닌 것을 나타내는 제어신호를 컨트롤러에 송출하도록 해도 좋다.

(데이터기록: 구데이터의 소거)

기록종료의 제어코드를 취득한 컨트롤러(20)는 도 9에 나타내는 구데이터소거의 처리를 실행한다.

도 9의 처리를 개시하면 컨트롤러(20)는 우선 이미 판독한 어드레스변환테이블의 내용에 의거하여 스텝 S203에서 자기가 기억한 물리어드레스(즉 스텝 S206에서 새로이 물리어드레스가 대응 지워질 때까지 기록대상의 논리어드레스에 대응 지워져있었던 오래된 물리어드레스)와 동일의 블록에 속하는 물리어드레스를 특정한다(스텝 S221).

그리고, 이 기억장치는 스텝 S221에서 특정한 물리어드레스의 각각을 판독대 상데이터의 선두페이지를 나타내는 것으로 하고, 이들의 물리어드레스의 각각에 붙어 도 6의 스텝 S108∼S114의 처리에 따라 데이터판독을 실시한다(스텝 S222). 그리고, 컨트롤러(20)는 또한 스텝 S204∼S206 처리와 실질적으로 동일의 처리를 실시하고, 스텝 S222에서 판독한 데이터를 격납하는 물리어드레스를 특정한다(스텝 S223).

단, 스텝 S223에 있어서는 데이터를 격납하는 물리어드레스로서 판독한 데이터가 격납되어 있었던 블록과 동일의 블록에 속하는 물리어드레스를 특정하지 않도록 한다.

다음에 이 기억장치는 스텝 S222에서 판독한 데이터를 스텝 S223에서 특정한 어드레스에 도 8의 처리에 따라 기록한다(스텝 S224).

다음에 컨트롤러(20)는 글로벌버퍼(6)에 기억내용을 소거하는 대상의 블록지정을 실시하기 위한 소정의 셋업커맨드를 공급하여 제어회로(5)에 래치신호(Slatch)를 보낸다(스텝 S225).

제어회로(5)는 스텝 S225에서 래치신호(Slatch)가 공급되었을 때 글로벌버퍼(6)에 공급된 데이터가 셋업커맨드인 것을 검지하여 다음에 글로벌버퍼(6)에 공급되는 데이터를 소거하는 대상블록의 블록어드레스로서 취급하는 것을 결정한다.

다음에 컨트롤러(20)는 글로벌버퍼(6)에 기억내용을 소거하는 대상블록(즉 스텝 S203에서 자기가 기억한 물리어드레스가 속하는 블록)의 블록어드레스를 공급하여 제어회로(5)에 래치신호(Slatch)를 보낸다(스텝 S226).

제어회로(5)는 스텝 S226에서 공급된 래치신호(Slatch)에 응답하여 글로벌버퍼(6)에 지시를 보내고, 컨트롤러(20)가 공급하고 있는 블록어드레스를 글로벌버퍼(6)에 래치시킨다. 글로벌버퍼(6)에 래치된 블록어드레스는 블록어드레스버퍼(3B)를 통해서 블록어드레스디코더(4B)에 공급되고, 이에 따라 기억내용을 소거하는 대상의 블록이 선택된다.

다음에 컨트롤러(20)는 글로벌버퍼(6)에 기억내용을 소거하기 위한 소정의 소거커맨드를 공급하여 제어회로(5)에 래치신호(Slatch)를 보낸다(스텝 S227).

제어회로(5)는 스텝 S227에서 래치신호(Slatch)가 공급되었을 때 글로벌버퍼(6)에 공급된 데이터가 소거커맨드인 것을 검지하여 블록어드레스디코더(4B)에 선택되어 있는 블록의 기억내용을 소거하도록 지시한다.

지시를 받은 블록어드레스디코더(4B)는 소거의 대상으로서 선택되어 있는 블록의 데이터를 소거하도록 지시하는 신호를 소거제어회로(1e)에 보낸다. 이에 따라 해당 블록의 기록내용은 소거된다.

스텝 S221∼S227의 처리에 의해 메모리셀어레이(1)에 기록된 데이터는 소거되고, 소거된 데이터와 같은 블록에 기억되어 있던 데이터는 다른 페이지로 퇴피된다.

또한 구데이터소거의 처리는 기록처리의 후에 실시되는 것일 필요는 없다. 따라서 예를 들면 데이터를 기록대상의 물리어드레스를 결정한 후, 그 물리어드레스에 새로이 대응 지워진 논리어드레스에 대응 지워져있었던 오래된 물리어드레스가 있는 블록의 기억내용을 우선 소거하고, 이어서 데이터를 기록대상의 물리어드 레스에 새로운 데이터를 기록하도록 해도 좋다.

또 데이터의 소거가 실시되는 장면은 상술의 스텝 S221∼S227의 경우와 같은 데이터의 기록처리의 일환으로서 이루어지는 장면에 한정되지 않는다.

따라서 데이터의 소거는 새로운 데이터의 기록을 동반하지 않고 실시돼도 좋다.

구체적으로는 예를 들면 우선 CPU(12)가 데이터의 소거를 지시하는 커맨드를 컨트롤러(20)에 보내고, 소거대상의 논리어드레스를 버스라인(13)을 통해서 컨트롤러(20)에 공급한다.

컨트롤러(20)는 커맨드에 응답하여 도 7 처리의 스텝 S201∼S203에 있어서의 처리와 똑같은 처리를 실시하고, 소거대상의 논리어드레스가 나타내는 물리어드레스(즉 소거대상의 물리어드레스)를 특정한다.

그리고, 컨트롤러(20)는 특정된 소거대상의 물리어드레스를 스텝 S203에서 특정된 물리어드레스인 것으로서 취급하고, 상술한 스텝 S221∼S227의 처리를 실시한다. 이에 따라 소거대상의 물리어드레스가 속하는 블록의 기록내용이 소거된다.

또한 상술의 데이터기록처리에 있어서 컨트롤러(20)는 새로이 기록대상의 물리어드레스를 지정할 때 데이터가 최후에 데이터가 기록된 빈블록 이후의 블록에 차례로 기록되고 후속의 블록에 빈블록이 없을 때는 선두블록 이후의 빈블록에 차례로 기록되도록 지정해도 좋다.

이에 따라 빈블록에의 기록은 사이클링으로 이루어지기 때문에 특정 블록만의 데이터갱신의 빈도가 높게 되는 일이 없고, 따라서 특정 블록의 성능이 집중적 으로 열화(劣化)하는 사태가 방지된다.

(빈블록테이블 및 어드레스변환테이블 갱신)

이상의 처리에 의해 데이터소거나 데이터기록이 완료하면 컨트롤러(20)는 빈블록테이블 및 어드레스변환테이블을 갱신하기 위해 도 10에 나타내는 처리를 개시한다,

도 10에 나타내는 처리에 있어서 우선 컨트롤러(20)는 빈블록테이블을 갱신하기 위해 도 7의 스텝 S201∼S205의 처리와 실질적으로 동일의 처리를 실시하여 플래시메모리유닛(10)으로부터 빈블록테이블을 취득하고, 그 빈블록테이블을 일시 기억한다(스텝 S301).

다음에 컨트롤러(20)는 일시 기억한 빈블록테이블의 내용에 의거하여 새로이 빈블록테이블 및 어드레스변환테이블을 기록하기 위한 빈블록을 1개 특정하고, 그 블록의 선두페이지를 기억한다(스텝 S302).

그리고, 컨트롤러(20)는 일시 기억한 빈블록테이블 중 데이터의 기록이 이루어진 빈블록 및 스텝 S302에서 특정된 빈블록을 나타내는 비트나 스텝 S206 및 S223에서 특정된 물리어드레스가 속하는 블록을 나타내는 비트를 「1」에서 「0」으로 변환한다.

또 컨트롤러(20)는 빈블록테이블 및 어드레스변환테이블이 현재 있는 블록을 나타내는 비트나 스텝 S227에서 기록내용이 소거된 블록을 나타내는 비트를 「0」에서 「1」로 변환한다(스텝 S303).

다음에 컨트롤러(20)는 스텝 S302에서 특정한 빈블록의 선두페이지의 물리어 드레스를 글로벌버퍼(6)에 공급하고, 제어회로(5)에 래치신호(Slatch)를 보낸다(스텝 S304).

제어회로(5)는 래치신호(Slatch)에 응답하여 비지신호(Sbusy)의 공급을 정지하고, 컨트롤러(20)에의 리디신호(Sready)의 공급을 개시한다. 그리고, X어드레스디코더(4X)에 컨트롤러(20)로부터 글로벌버퍼(6)에 공급된 물리어드레스를 선택시킨다.

한편 컨트롤러(20)는 리디신호(Sready)에 응답하여 스텝 S303에서 변환완료의 빈블록테이블 중 선두의 1바이트 분량을 글로벌버퍼(6)에 공급하고(스텝 S305), 제어회로(5)에 기록신호(Swrite)를 보낸다(스텝 S306).

제어회로(5)는 기록신호(Swrite)에 응답하여 컨트롤러(20)로부터 글로벌버퍼(6)에 공급된 데이터를 글로벌버퍼(6)에 래치시켜 리디신호(Sready)의 공급을 정지하고, 컨트롤러(20)에의 비지신호(Sbusy)의 공급을 재개한다. 글로벌버퍼(6)는 버스라인(13)상의 데이터를 래치하여 I/O버퍼(2)에 격납한다.

다음에 제어회로(5)는 I/O버퍼(2)에 I/O버퍼(2)가 격납하고 있는 데이터를 데이터입출력단(Tdata)에 공급시켜 기록제어단(Twritecont)에 액티브레벨의 기록제어신호를 공급하여 데이터입출력단(Tdata)에 공급되어 있는 데이터를 현재 선택되어 있는 페이지의 선두메모리셀에 기록시킨다.

그리고, 제어회로(5)는 비지신호(Sbusy)의 공급을 정지하고, 컨트롤러(20)에의 리디신호(Sready)의 공급을 재개한다.

컨트롤러(20)는 리디신호(Sready)의 공급 재개를 검지하면 자기가 일시 기억 하는 빈블록테이블 중 아직 플래시메모리유닛(10)에 공급하고 있지 않은 부분이 남아있는지 없는지를 판별한다(스텝 S307).

그리고, 남아있다고 판별하면 컨트롤러(20)는 자기가 일시 기억하는 빈블록테이블의 후속의 1바이트를 글로벌버퍼(6)에 공급하여(스텝 S308) 처리를 스텝 S306으로 옮긴다.

한편 남아있지 않다고 판별하면 컨트롤러(20)는 어드레스변환테이블을 갱신하기 위해 어드레스변환테이블의 선두페이지의 물리어드레스를 글로벌버퍼(6)에 공급하고, 제어회로(5)에 래치신호(Slatch)를 공급하여 제어회로(5)로부터 리디신호(Sready)가 공급되는 것을 대기한다(스텝 S309).

그러면 플래시메모리유닛(10)은 스텝 S103에서 래치신호(Slatch)가 공급된 경우와 똑같이 하여 비지신호(Sbusy)의 공급을 정지하여 컨트롤러(20)에 리디신호(Sready)를 공급하고, 어드레스변환테이블 중 컨트롤러(20)가 지시하는 페이지의 기억내용을 컨트롤러(20)에 공급한다.

한편 컨트롤러(20)는 스텝 S105와 똑같이 하여 플래시메모리유닛(10)으로부터 자기가 공급한 물리어드레스에 해당하는 페이지에 기억되어 있는 각 논리어드레스와 각 논리어드레스에 대응 지워진 물리어드레스를 판독하여 일시 기억한다(스텝 S310).

다음에 컨트롤러(20)는 일시 기억한 각 논리어드레스 중에 물리어드레스의 할당이 변경될 대상으로서 자기가 기억하고 있는 논리어드레스와 일치하는 것이 있는지 없는지를 판별한다(스텝 S311).

일치하는 것이 없다고 판별했을 때, 컨트롤러(20)는 처리를 스텝 S313으로 옮긴다. 일치하는 것이 있다고 판별했을 때, 컨트롤러(20)는 자기가 일시 기억하고 있는 물리어드레스 중 일치한다고 판별한 논리어드레스에 대응 지워져있는 것을 그 논리어드레스에 새로이 대응 지워질 물리어드레스로 변환하고(스텝 S312). 처리를 스텝 S313으로 옮긴다.

예를 들면 데이터 기록의 대상으로서 CPU(12)가 컨트롤러(20)에 공급한 논리어드레스는 스텝 S311에 있어서 물리어드레스의 할당이 변경될 대상으로서 컨트롤러(20)가 기억하는 논리어드레스와 일치한다고 판별된다. 그리고, 스텝 S312에서 해당 논리어드레스가 나타내는 물리어드레스는 스텝 S202에서 특정된 오래된 물리어드레스로부터 스텝 S206에서 특정된 새로운 물리어드레스로 변환된다.

다음에 이 기억장치는 스텝 S301∼S308의 처리와 실질적으로 동일의 처리를 실시함으로써 메모리셀어레이(1) 중 도 10의 처리를 개시하여 이후에서 최신의 기록이 이루어진 페이지의 다음 페이지에 어드레스변환테이블 중 자기가 일시 기억하는 1페이지 분량의 부분을 기록한다(스텝 S313).

기록이 완료하면 컨트롤러(20)는 스텝 S313에서 기록한 페이지의 수가 어드레스변환테이블의 총 페이지 수에 동등한지 아닌지를 판별함으로써 어드레스변환테이블의 기록을 완료했는지 아닌지를 판별한다(스텝 S314).

그리고, 완료했다고 판별했을 때는 처리를 스텝 S316으로 옮긴다. 완료하지 않았다고 판별했을 때는 글로벌버퍼(6)에 어드레스변환테이블의 다음 페이지의 물리어드레스를 공급하고, 제어회로(5)에 래치신호(Slatch)를 송출하여(스텝 S315) 처리를 스텝 S310으로 되돌린다.

스텝 S316에 있어서 컨트롤러(20)는 갱신 후의 빈블록테이블 및 어드레스변환테이블의 위치를 기억한다.

그리고, 이 기억장치는 상술한 스텝 S221∼S227과 똑같은 처리에 따라 갱신 전의 빈블록테이블 및 어드레스변환테이블이 있는 논리어드레스의 기억내용을 소거한다(스텝 S317).

또한 이 기억장치에서는 데이터의 기록순서에 그 데이터의 논리어드레스와 물리어드레스의 대응관계를 어드레스변환테이블에 기록하고 있었다. 그리고, 데이터의 판독 때에는 어드레스변환테이블을 차례로 조사하여 논리어드레스와 물리어드레스의 대응관계를 판독하고 있었다. 이에 대해 논리어드레스와 물리어드레스의 대응관계의 판독에 다음과 같은 고속화수법을 이용해도 좋다.

예를 들면 컨트롤러(20)는 데이터의 기록 시에 CPU(12)로부터 보내진 논리어드레스로부터 소정의 해시(hash)관계를 사용하여 논리어드레스와 물리어드레스의 대응관계의 어드레스변환테이블 내에서의 기억위치를 구하고, 구한 기억위치에 논리어드레스와 물리어드레스의 대응관계를 기억하도록 플래시메모리유닛(10)을 제어해도 좋다. 그리고, 컨트롤러(20)는 데이터판독 시에도 같은 해시관계를 사용하여 CPU(12)로부터 보내진 논리어드레스로부터 논리어드레스와 물리어드레스의 대응관계의 기억위치를 구하고, 플래시메모리유닛(10) 중 자기가 구한 기억위치로부터 물리어드레스를 판독하면 좋다.

이 경우 CPU(12)로부터 보내진 논리어드레스로부터 구한 기억위치의 충돌이 일어나는 경우가 발생하는데, 이 때는 구한 기억위치의 다음 기억위치에 논리어드레스와 물리어드레스의 대응관계를 기억해도 충돌한 것을 기억하는 영역을 특별히 설치해도 좋다.

이상 설명한 바와 같이 이 기억장치에서는 메모리셀어레이(1) 자신에 어드레스변환테이블과 빈블록테이블을 격납하고, 또한 이들의 테이블을 이용하여 데이터의 판독 및 기록이 가능하게 된다.

또한 각 블록의 크기는 상술의 크기에 한하지 않는다. 예를 들면 각 블록은 16페이지로 구성될 필요는 없고, 예를 들면 각 페이지 크기의 정수 배이면 좋다.

또 이 기억장치가 예를 들면 JEIDA/PCMCIA 인터페이스를 구비한 플래시메모리인 경우 각 페이지의 크기는 컴퓨터(11) 상에서 실행되는 OS(오퍼레이팅 시스템)에 의해 결정되는 것이 일반적인데. 반드시 OS에 의해 결정될 필요는 없다.

또 각 블록의 크기는 이 기억장치에 고유의 값인 것이 일반적인데, 이 기억장치에 있어서의 각 블록의 크기는 외부로부터의 제어에 의해 지정할 수 있는 것이어도 좋다.

(제 2 실시형태)

제 1 실시형태의 기억장치에서는 빈블록의 위치를 나타내는 정보가 특정의 영역에 집중하여 격납되어 있었다. 그러나 빈블록의 위치를 나타내는 정보는 집중하여 보존될 필요는 없고, 예를 들면 각 빈블록에 다른 빈블록의 위치를 나타내는 정보를 차례로 격납함으로써 빈블록을 연쇄시키는 형태를 취하여 빈블록의 관리를 실시할 수 있다.

이하 그와 같은 연쇄한 빈블록을 구비하는 제 2 실시형태의 기억장치 및 그 빈블록관리의 처리를 도 11∼도 13을 참조하여 설명한다.

이 실시형태 기억장치의 기본구성은 제 1 실시형태 기억장치의 기본구성과 실질적으로 동일하다. 단 이 실시형태에서는 어드레스변환테이블은 임의의 블록 선두영역에 격납되어 있다.

또 각 빈블록의 리던던트부의 소정위치에는 도 11에 나타내는 바와 같이 그 빈블록보다도 논리적으로 뒤에 있는 빈블록 중 가장 가까운 빈블록의 번호를 나타내는 빈블록정보가 기억되어 있다.

이 빈블록정보에 의해 정의되는 빈블록의 연쇄는 물리적인 빈블록의 배치와는 다른 순번으로 연쇄되어 있다.

또 제어회로(5)는 빈블록 연쇄 중의 최초 빈블록의 빈블록번호를 기억하고 있다.

이 실시형태의 기억장치에서는 상술과 같이 데이터영역과 리던던트부가 각 페이지 중에 서로 중복하지 않도록 배치되어 있다.

이로 인해 이미 빈블록정보가 기록되어 있는 빈블록에 데이터를 기록하는 처리를, 데이터를 단지 덮어쓰는 것에 의해 실행해도 빈블록의 리던던트부에 기록된 빈블록정보가 파괴되는 일은 없다.

(제 2 실시형태의 동작)

이 기억장치에 데이터를 기록하는 처리는 데이터기록의 처리와 빈블록정보 및 어드레스변환테이블 갱신의 처리를 제하고, 제 1 실시형태의 처리와 동일하다. 그래서 데이터기록처리와 빈블록정보 및 어드레스변환테이블을 갱신하는 처리를 중심으로 도 12∼도 13을 참조하여 이 기억장치의 동작을 설명한다.

(데이터기록)

이 기억장치에 있어서 데이터를 기록할 때는 도 12에 나타내는 스텝 S501부터 처리를 개시한다.

스텝 S501에 있어서 CPU(12)는 기록대상의 논리어드레스를 특정한 후 그 논리어드레스 중 가장 번호가 이른 것의 값을 버스라인(13)상에 공급하고, 컨트롤러(20)에 데이터기록을 지시하는 커맨드를 공급한다.

컨트롤러(20)는 스텝 S501에서 공급된 커맨드에 응답하고 버스라인(13)을 통해서 CPU(12)로부터 공급된 논리어드레스를 기록대상의 논리어드레스로서 기억한다(스텝 S502).

이어서 컨트롤러(20)는 앞에 서술한 스텝 S202의 처리와 실질적으로 동일의 처리를 실시함으로써 자기가 기억하는 기록대상의 논리어드레스에 대응 지워져있는 물리어드레스를 특정한다(스텝 S503).

다음에 컨트롤러(20)는 자기가 기억하는 데이터를 참조하고, 선두빈블록의 선두페이지를 특정한다(스텝 S504). 그리고, 이후 스텝 S503에서 특정한 물리어드레스와 스텝 S504에서 특정한 페이지에 해당하는 물리어드레스를 서로 교체하여 취급하는 것으로 결정한다(스텝 S505). 이에 따라 기록대상의 물리어드레스는 스텝 S504에서 특정된 연쇄의 선두빈블록에 해당하는 물리어드레스로 된다.

다음에 컨트롤러(20)는 글로벌버퍼(6)에 스텝 S505에서 기록대상으로서 결정 된 물리어드레스를 공급하고, 제어회로(5)에 해당 물리어드레스가 나타내는 페이지의 선두부터 513바이트 째 이후를 판독하는 것을 지시한다(스텝 S506).

제어회로(5)는 스텝 S504에서 특정된 페이지를 선택하도록 X어드레스디코더(4X)에 지시하고, 이어서 메모리셀어레이(1)의 판독제어단(Tteadcont)에 데이터 판독의 지시를 보낸다. 메모리셀어레이(1)는 해당 페이지의 리던던트부에 기억되어 있는 빈블록정보를 I/O버퍼(2) 및 글로벌버퍼(6)를 통해서 컨트롤러(20)에 1바이트씩 차례로 공급한다.

컨트롤러(20)는 플래시메모리유닛(10)으로부터 공급된 빈블록정보를 판독하면 그 빈블록정보를 선두의 빈블록의 위치정보로서 기억한다(스텝 S507). 스텝 S507에서 기억된 빈블록정보는 도 12에 나타내는 처리를 거친 후에 새로이 연쇄의 선두로 되는 빈블록을 나타낸다.

이어서 이 기억장치는 스텝 S505에서 기록대상으로서 결정한 페이지에 해당하는 물리어드레스를 제 1 실시형태에 있어서의 스텝 S206에서 특정된 물리어드레스로서 취급하고, 상술의 스텝 S211∼S217의 처리와 실질적으로 동일의 처리를 실시하여 데이터를 기록한다(스텝 S508).

그리고, 스텝 S508의 처리 중 스텝 S217에 해당하는 처리에 있어서 CPU(12)로부터 기록종료를 나타내는 제어코드가 공급되었다고 판별하면 컨트롤러(20)는 데이터기록의 처리를 종료한다.

또 스텝 S214에 해당하는 처리에 있어서 현재 선택 중의 페이지에 512바이트의 데이터가 기록되었다고 판별하면 컨트롤러(20)는 CPU(12)에 다음 논리어드레스 의 공급을 요구하는 신호를 보내고, CPU(12)는 이 신호에 응답하여 다음의 논리어드레스를 버스라인(13)상에 송출한다. 그리고 컨트롤러(20)는 버스라인(13)을 통해서 CPU(12)로부터 다음의 논리어드레스를 취득하면 그 논리어드레스를 기록대상의 논리어드레스로서 종전 기억하고 있었던 논리어드레스에 덮어써서 기억하고, 처리를 스텝 S503으로 되돌린다.

이상 설명한 스텝 S501∼S508의 처리에 의해 기록대상의 논리어드레스가 나타내는 물리어드레스가 빈블록 연쇄의 선두에서 차례로 특정되고, 특정된 빈블록에 데이터의 기록이 실시된다.

(빈블록정보 및 어드레스변환테이블 갱신)

컨트롤러(20)는 빈블록테이블 및 어드레스변환테이블을 갱신할 때 도 13의 스텝 S601부터 처리를 개시한다.

도 13에 나타내는 처리에 있어서 우선 컨트롤러(20)는 자기가 기억하는 데이터를 참조하고, 선두빈블록의 선두페이지를 특정한다(스텝 S601).

다음에 컨트롤러(20)는 스텝 S601에서 특정한 페이지의 물리어드레스를 글로벌버퍼(6)에 공급하고, 제어회로(5)에 래치신호(Slatch)를 보낸다(스텝 S602).

제어회로(5)는 래치신호(Slatch)에 응답하고, 글로벌버퍼(6)에 공급된 물리어드레스가 나타내는 페이지를 선택하도록 X어드레스디코더(4X)에 지시하며, 페이지가 선택되면 메모리셀어레이(1)의 판독제어단(Treadcont)에 데이터판독의 지시를 보낸다. 메모리셀어레이(1)는 해당 페이지의 기억내용을 I/O버퍼(2) 및 글로벌버퍼(6)를 통해서 컨트롤러(20)에 1바이트씩 차례로 출력한다.

그리고, 컨트롤러(20)는 글로벌버퍼(6)로부터 공급되는 해당 기억내용 중 선두부터 513바이트 째 이후를 차례로 판독함으로써 판독된 페이지의 리던던트부에 기억되어 있는 빈블록정보를 취득한다(스텝 S603).

컨트롤러(20)는 빈블록정보를 판독하면 그 빈블록정보를 스텝 S601에서 특정한 선두빈블록의 선두페이지의 정보에 덮어쓰기 한다. 즉 선두빈블록의 위치정보를 그 다음 빈블록의 위치정보에 갱신한다(스텝 S604).

다음에 컨트롤러(20)는 앞에 서술한 스텝 S309∼S315의 처리를 실행하여 어드레스변환테이블의 위치를 기억한다(스텝 S606).

단 갱신 후의 어드레스변환테이블은 스텝 S601에서 특정되어 현재 선택되어 있는 페이지에 해당하는 논리어드레스에 기록한다. 또 갱신될 정보에는 논리어드레스가 새로이 할당된 물리블록정보 외, 앞에서 서술한 스텝 S505에 있어서의 물리어드레스의 변환결과의 정보가 포함된다.

다음에 컨트롤러(20)는 빈블록정보를 추가하기 위해 자기가 기억하는 데이터를 참조하고, 선두빈블록의 선두페이지를 특정한다(스텝 S607).

다음에 컨트롤러(20)는 자기가 현재 특정하고 있는 페이지의 물리어드레스를 글로벌버퍼(6)에 공급하고, 제어회로(5)에는 래치신호(Slatch)를 보낸다(스텝 S608).

제어회로(5)는 래치신호(Slatch)에 응답하고, 글로벌버퍼(6)에 공급된 물리어드레스가 나타내는 페이지를 X어드레스디코더(4X)에 선택시켜 메모리셀어레이(1)의 판독제어단(Treadcont)에 데이터판독의 지시를 보내어 메모리셀어레이(1)에 해 당 페이지의 기억내용을 I/O버퍼(2) 및 글로벌버퍼(6)를 통해서 컨트롤러(20)에 차례로 공급시킨다.

그리고, 컨트롤러(20)는 글로벌버퍼(6)로부터 공급되는 정보 중 선두부터 513바이트 째 이후를 차례로 판독함으로써 해당 페이지의 리던던트부에 기억되어 있는 정보를 취득한다(스텝 S609).

다음에 컨트롤러(20)는 스텝 S609에서 판독한 정보 중에 빈블록정보가 있는지 없는지를 판별한다(스텝 S610).

빈블록정보가 있을 때 컨트롤러(20)는 그 빈블록정보가 나타내는 다음 빈블록의 선두페이지를 특정하고(스텝 S611), 처리를 스텝 S608로 되돌린다.

빈블록정보가 없을 때 현재 특정되어 있는 페이지는 말미 빈블록의 선두페이지이다.

이 때 컨트롤러(20)는 상술의 스텝 S301∼S308의 처리와 실질적으로 똑같은 처리를 실시하고, 선두의 512바이트가 공백으로 513바이트 째 이후에 빈블록정보로서 갱신 전의 오래된 어드레스변환테이블이 현재 격납되어 있는 블록의 정보를 포함하고 있는 데이터를 현재 특정되어 있는 페이지에 기록시키도록 플래시메모리유닛(10)을 제어한다(스텝 S612).

이에 따라 오래된 어드레스변환블록이 현재 격납되어 있는 블록은 빈블록연쇄의 말미에 편입된다.

다음에 이 기억장치는 상술한 스텝 S221∼S227과 똑같은 처리에 따라 갱신 전의 어드레스변환테이블이 있는 블록의 기억내용을 소거한다(스텝 S613). 이에 따라 오래된 어드레스변환블록이 격납되어 있던 블록은 빈블록으로 된다.

이상 설명한 스텝 S601∼S613의 처리에 의해 빈블록정보 및 어드레스변환테이블은 갱신된다.

또한 메모리셀어레이(1)를 초기화하는 경우 컨트롤러(20)는 일단 메모리셀어레이(1)의 전체 블록의 내용을 소거한 후 각 블록의 리던던트부에 빈블록연쇄정보를 기록하도록 플래시메모리유닛(10)을 제어한다.

이 때 컨트롤러(20)는 도 11에 나타내는 바와 같이 빈블록이 띄엄띄엄 연쇄되도록 연쇄정보를 기록한다. 연쇄정보를 이와 같은 구성으로 하여 데이터의 기록위치를 분산시키면 일부의 영역에만 반복하여 데이터가 기록되는 사태를 방지할 수 있다.

또한 본 발명은 상기 실시형태에 한정되지 않고 여러 종류의 변형 및 응용이 가능하다.

예를 들면 상기 실시형태에서는 이해를 용이하게 하기 위해 CPU(12)와 기억장치 사이의 데이터의 수수를 1바이트 단위로 실시했는데, 2바이트, 4바이트 단위로 실시하는 등 데이터의 전송단위는 임의이다. 똑같이 메모리셀의 용량도 1바이트에 한정되지 않고 2바이트 등이어도 좋다.

또 상기 실시형태의 기억장치에 사용되고 있는 메모리셀어레이(1)는 1개 칩뿐이었다. 그러나 복수 칩의 플래시메모리를 갖는 기억장치에 본 발명을 적용하는 것도 가능하다. 이 경우 어드레스변환테이블(및 빈블록테이블)을 어느 것인가 1개 칩의 플래시메모리의 어느 것인가 1개의 블록 내에 기억하고, 또한 컨트롤러(20)가 어드레스변환테이블(및 빈블록테이블)을 기억하는 칩의 정보를 기억하면 좋다. 또 상기의 제 2 실시형태와 같이 빈블록정보를 연쇄정보에 의해 구성하는 경우에는 다음의 빈블록이 있는 칩과 블록번호를 나타내는 연쇄정보를 리던던트영역에 기록하면 좋다.

또한 상기 실시형태에서는 메모리셀어레이(1)는 NAND형의 것에 의해 구성되어 있었는데, NOR형의 것에 의해 구성할 수도 있다.

또 상기 실시형태에서는 기억장치 내에 제어회로(5)를 배치했는데, 제어회로(5)가 실행하는 동작을 컨트롤러(20)나 CPU(12)에 실시시킴으로써 제어회로(5)를 사용하지 않고 메모리셀어레이(1)로의 액세스를 제어하는 것도 가능하다. 또 컨트롤러(20)가 실행하는 동작을 CPU(12)에 실시시킴으로써 컨트롤러(20)를 사용하지 않고 메모리셀어레이(1)로의 액세스를 제어하는 것도 가능하다.

제어회로(5)나 컨트롤러(20)의 동작을 CPU(12)가 실행하는 경우 상술의 제어 동작을 실행하기 위한 프로그램을 격납한 매체(플로피디스크, CD-ROM 등)로부터 해당 프로그램을 컴퓨터(11)에 인스톨하고, OS(오퍼레이팅 시스템) 상에서 동작시킴으로써 상술의 처리를 실행시킨다.

이상 설명한 바와 같이 본 발명에 따르면 빈블록의 위치를 나타내는 정보나 논리어드레스와 물리어드레스의 대응관계를 나타내는 정보 등이 블록소거형 기억매체에 기억된다. 이로 인해 빈블록의 위치를 나타내는 정보나 논리어드레스나 물리어드레스의 대응관계를 나타내는 정보 등을 기억하는 기억매체를 별도로 준비할 필 요가 없다.

Claims (24)

  1. 물리 어드레스가 할당된 복수의 메모리 블록을 포함하는 기억수단(1);
    컨트롤러(20); 및
    엑세스수단(4X, 4B, 5)을 포함하며;
    상기 기억수단에 저장된 데이터는 메모리 블록 단위로만 소거될 수 있으며;
    상기 엑세스수단은 상기 기억수단으로부터 기억 데이터를 메모리 블록 단위로 일괄하여 소거하는 소거수단(1e)을 포함하며;
    데이터와 논리 어드레스가 입력되는 상기 컨트롤러는, 상기 기억수단에 상기 데이터가 기억되는 위치를 임의적으로 결정하고, 상기 엑세스수단으로 하여금 상기 위치에 상기 데이터를 기록하도록 제어하며;
    상기 기억수단은 상기 논리 어드레스와 물리 어드레스의 대응관계를 나타내는 정보를 격납하는 어드레스 변환 테이블을 기억하며;
    상기 컨트롤러는, 상기 엑세스수단으로 하여금, 상기 데이터가 기록된 위치의 물리 어드레스와 입력된 논리 어드레스의 대응관계를 나타내는 정보를 상기 어드레스 변환 테이블에 추가하거나, 상기 어드레스 변환 테이블을 갱신하도록 제어하며;
    상기 컨트롤러는 상기 어드레스 변환 테이블이 기록된 블록의 물리 어드레스를 격납하며;
    상기 컨트롤러는, 상기 엑세스수단으로 하여금, 상기 어드레스 변환 테이블이 격납되어 있는 블록에 액세스하고, 판독대상 데이터의 논리 어드레스에 대응하는 물리 어드레스를 판독하도록 제어하며;
    상기 컨트롤러는, 상기 엑세스수단으로 하여금, 상기 엑세스수단에 의해 판독된 물리 어드레스에 격납되어 있는 데이터를 판독하여 출력하도록 제어하며;
    상기 기억수단은 데이터를 기억하고 있지 않은 빈 블록을 나타내는 정보를 격납하는 빈 블록 테이블을 기억하고;
    상기 어드레스 변환 테이블 및/또는 상기 빈 블록 테이블은 상기 기억수단에만 저장이 되며;
    상기 컨트롤러는, 상기 빈 블록 테이블이 기억되어 있는 블록을 엑세스하고, 상기 빈 블록 테이블에 등록되어 있는 빈 블록 중에서 기록 대상 블록을 선택하며, 상기 엑세스수단으로 하여금 기록 대상의 데이터를 상기 선택된 빈 블록에 기록하도록 제어하며;
    상기 컨트롤러는, 상기 엑세스 수단으로 하여금, 상기 엑세스 수단이 상기 빈 블록에 상기 데이터를 기록하기 전까지 존재한 상기 빈 블록을 나타내는 정보를 격납하는 상기 빈 블록 테이블을 제거하도록 제어하며; 그리고,
    상기 컨트롤러는, 상기 엑세스수단으로 하여금, 상기 엑세스 수단이 상기 빈 블록에 상기 데이터를 기록한 후에 잔존하는 빈 블록을 나타내는 정보를 격납하는 상기 빈 블록 테이블을 상기 기억수단에 기억시키도록 제어하는 것을 특징으로 하는 기억장치.
  2. 제 1 항에 있어서,
    상기 기억수단은 상기 어드레스 변환 테이블과 상기 빈 블록 테이블을 하나의 블록 내에 기억하는 것을 특징으로 하는 기억장치.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 물리 어드레스가 할당된 복수의 메모리 블록을 포함하는 기억수단(1);
    컨트롤러(20); 및
    엑세스수단(4X, 4B, 5)을 포함하며;
    상기 기억수단에 저장된 데이터는 메모리 블록 단위로만 소거될 수 있으며;
    상기 엑세스수단은 상기 기억수단으로부터 기억 데이터를 메모리 블록 단위로 일괄하여 소거하는 소거수단(1e)을 포함하며;
    데이터와 논리 어드레스가 입력되는 상기 컨트롤러는, 상기 기억수단에 상기 데이터가 기억되는 위치를 임의적으로 결정하고, 상기 엑세스수단으로 하여금 상기 위치에 상기 데이터를 기록하도록 제어하며;
    상기 기억수단은 상기 논리 어드레스와 물리 어드레스의 대응관계를 나타내는 정보를 격납하는 어드레스 변환 테이블을 기억하며;
    상기 컨트롤러는, 상기 엑세스수단으로 하여금, 상기 데이터가 기록된 위치의 물리 어드레스와 입력된 논리 어드레스의 대응관계를 나타내는 정보를 상기 어드레스 변환 테이블에 추가하거나, 상기 어드레스 변환 테이블을 갱신하도록 제어하며;
    상기 컨트롤러는 상기 어드레스 변환 테이블이 기록된 블록의 물리 어드레스를 격납하며;
    상기 컨트롤러는, 상기 엑세스수단으로 하여금, 상기 어드레스 변환 테이블이 격납되어 있는 블록에 액세스하고, 판독대상 데이터의 논리 어드레스에 대응하는 물리 어드레스를 판독하도록 제어하며;
    상기 컨트롤러는, 상기 엑세스수단으로 하여금, 상기 엑세스수단에 의해 판독된 물리 어드레스에 격납되어 있는 데이터를 판독하여 출력하도록 제어하며;
    상기 기억수단은 상기 데이터가 기억되지 않은 빈 블록을 나타내는 빈 블록 정보를 기억하고;
    상기 어드레스 변환 테이블 및/또는 상기 빈 블록 테이블은 상기 기억수단에만 저장이 되며;
    상기 컨트롤러는, 상기 엑세스 수단으로 하여금, 상기 빈 블록 정보에 의해 나타내어지는 빈 블록에 상기 데이터를 기록하도록 제어하고;
    상기 컨트롤러는, 상기 엑세스 수단으로 하여금, 상기 기억수단에 기억된 상기 빈 블록 정보를, 상기 엑세스 수단에 의해 상기 빈 블록에 상기 데이터가 기록된 후에 잔존하는 상기 빈블록의 정보를 나타내는 상기 빈 블록 정보로 변경시키도록 제어하며;
    상기 빈 블록 정보는 각 빈 블록의 일부에 기억되고, 다른 빈 블록을 나타내도록 연쇄적으로 등록된 연쇄정보를 포함하며,
    상기 컨트롤러는, 상기 엑세스 수단으로 하여금, 상기 연쇄정보에 따라 선두 빈 블록을 판별하고, 상기 빈 블록에 상기 데이터를 기록하도록 제어하며; 그리고,
    상기 컨트롤러는, 상기 엑세스 수단으로 하여금, 가장 최근의 소거처리가 행해진 빈 블록을 나타내는 연쇄정보가 상기 빈 블록 정보의 연쇄말단에 편입되는 식으로 상기 빈 블록 정보를 갱신하도록 제어하는 것을 특징으로 하는 기억장치.
  8. 제 7 항에 있어서,
    상기 기억수단은 데이터 영역과 리던던트 영역을 갖고, 상기 연쇄정보는 상기 리던던트 영역에 기억되는 것을 특징으로 하는 기억장치.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
KR1019997006688A 1997-12-05 1998-12-02 기억장치 KR100614469B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP97-335596 1997-12-05
JP33559697 1997-12-05
PCT/JP1998/005441 WO1999030239A1 (fr) 1997-12-05 1998-12-02 Memoire et procede d'acces

Publications (2)

Publication Number Publication Date
KR20000070451A KR20000070451A (ko) 2000-11-25
KR100614469B1 true KR100614469B1 (ko) 2006-08-25

Family

ID=18290361

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019997006688A KR100614469B1 (ko) 1997-12-05 1998-12-02 기억장치

Country Status (6)

Country Link
US (1) US6477632B1 (ko)
EP (1) EP0973097A4 (ko)
JP (1) JP3680142B2 (ko)
KR (1) KR100614469B1 (ko)
TW (1) TW400476B (ko)
WO (1) WO1999030239A1 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000311469A (ja) * 1999-02-26 2000-11-07 Matsushita Electric Ind Co Ltd ディスク制御装置及びそれを用いたディスク装置
JP3443093B2 (ja) * 2000-12-27 2003-09-02 株式会社東芝 ディジタル記録再生装置
KR100437609B1 (ko) * 2001-09-20 2004-06-30 주식회사 하이닉스반도체 반도체 메모리 장치의 어드레스 변환 방법 및 그 장치
US6678785B2 (en) * 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US20060143365A1 (en) * 2002-06-19 2006-06-29 Tokyo Electron Device Limited Memory device, memory managing method and program
US7120068B2 (en) * 2002-07-29 2006-10-10 Micron Technology, Inc. Column/row redundancy architecture using latches programmed from a look up table
US20050050285A1 (en) * 2003-08-26 2005-03-03 Haas William Robert Memory control system and method for installing new memory
JP2005092678A (ja) * 2003-09-19 2005-04-07 Matsushita Electric Ind Co Ltd 半導体メモリカード及び不揮発性メモリのデータ消去処理方法
JP2005285191A (ja) * 2004-03-29 2005-10-13 Nec Electronics Corp 不揮発性半導体記憶装置及びその駆動方法
US7237062B2 (en) * 2004-04-02 2007-06-26 Seagate Technology Llc Storage media data structure system and method
JP4157501B2 (ja) 2004-06-30 2008-10-01 株式会社東芝 記憶装置
JP4637524B2 (ja) * 2004-07-27 2011-02-23 ルネサスエレクトロニクス株式会社 メモリカード
KR100622349B1 (ko) 2004-08-04 2006-09-14 삼성전자주식회사 불량 블록 관리 기능을 가지는 플레시 메모리 장치 및플레시 메모리 장치의 불량 블록 관리 방법.
EP1630657A1 (en) * 2004-08-30 2006-03-01 STMicroelectronics S.r.l. Embedded storage device with integrated data-management functions and storage system incorporating it
JP4806183B2 (ja) 2004-12-24 2011-11-02 富士通セミコンダクター株式会社 ファイル情報の書き込み処理方法およびプログラム
KR100630735B1 (ko) 2005-01-14 2006-10-02 삼성전자주식회사 복수의 소자에 대한 선택적 억세스를 제공하는 방법 및 그장치
US8107467B1 (en) 2005-09-30 2012-01-31 Emc Corporation Full array non-disruptive failover
US8072987B1 (en) * 2005-09-30 2011-12-06 Emc Corporation Full array non-disruptive data migration
US8589504B1 (en) 2006-06-29 2013-11-19 Emc Corporation Full array non-disruptive management data migration
US7769945B2 (en) * 2007-01-18 2010-08-03 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
WO2008087634A1 (en) * 2007-01-18 2008-07-24 Sandisk Il Ltd. A method and system for facilitating fast wake-up of a flash memory system
US9098211B1 (en) 2007-06-29 2015-08-04 Emc Corporation System and method of non-disruptive data migration between a full storage array and one or more virtual arrays
US9063895B1 (en) 2007-06-29 2015-06-23 Emc Corporation System and method of non-disruptive data migration between heterogeneous storage arrays
US8751770B2 (en) * 2008-01-16 2014-06-10 Panasonic Corporation Semiconductor recording apparatus and semiconductor recording system
TWI415134B (zh) * 2008-04-10 2013-11-11 Phison Electronics Corp 資料存取方法、使用此方法的控制器與儲存系統
TWI381393B (zh) * 2008-10-06 2013-01-01 Phison Electronics Corp 區塊管理與更換方法、快閃記憶體儲存系統及其控制器
TWI427476B (zh) * 2009-02-24 2014-02-21 Silicon Motion Inc 快閃記憶體的存取方法及快閃記憶體裝置
CN101556556B (zh) * 2009-05-22 2012-02-22 炬力集成电路设计有限公司 一种数据存储方法及装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2582487B2 (ja) * 1991-07-12 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 半導体メモリを用いた外部記憶システム及びその制御方法
US5375222A (en) * 1992-03-31 1994-12-20 Intel Corporation Flash memory card with a ready/busy mask register
JP3485938B2 (ja) * 1992-03-31 2004-01-13 株式会社東芝 不揮発性半導体メモリ装置
JPH06187205A (ja) 1992-12-18 1994-07-08 Nikon Corp Eepromのアクセス方法および測量機
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5485595A (en) 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
JP2971302B2 (ja) * 1993-06-30 1999-11-02 シャープ株式会社 Eepromを使用した記録装置
JP2938732B2 (ja) 1993-11-10 1999-08-25 松下電送システム株式会社 メモリ管理装置とこれを用いたファクシミリ装置
JPH08249225A (ja) 1995-03-10 1996-09-27 Nec Corp メモリ管理装置
US5978808A (en) * 1995-12-27 1999-11-02 Intel Corporation Virtual small block file manager for flash memory array
JPH09212411A (ja) * 1996-02-06 1997-08-15 Tokyo Electron Ltd メモリシステム

Also Published As

Publication number Publication date
JP3680142B2 (ja) 2005-08-10
WO1999030239A1 (fr) 1999-06-17
US6477632B1 (en) 2002-11-05
TW400476B (en) 2000-08-01
KR20000070451A (ko) 2000-11-25
EP0973097A4 (en) 2000-04-12
EP0973097A1 (en) 2000-01-19

Similar Documents

Publication Publication Date Title
US9552311B2 (en) Method for assigning addresses to memory devices
US9026721B2 (en) Managing defective areas of memory
US8437190B2 (en) Interleaved flash storage system and method
US5544356A (en) Block-erasable non-volatile semiconductor memory which tracks and stores the total number of write/erase cycles for each block
US5835933A (en) Method and apparatus for updating flash memory resident firmware through a standard disk drive interface
US7802054B2 (en) Apparatus and methods using invalidity indicators for buffered memory
CN1658171B (zh) 通过控制频繁受访问扇区对非易失性存储器的更快写操作
US5890188A (en) Nonvolatile semiconductor memory device having means for selective transfer of memory block contents and for chaining together unused memory blocks
CN102354299B (zh) 存储卡和半导体器件
EP1158533B1 (en) Eeprom array with flash-like core
US5524230A (en) External information storage system with a semiconductor memory
US7552311B2 (en) Memory device with preread data management
KR100926267B1 (ko) 플래시 메모리에서의 복사 동작을 관리하는 방법
US7363421B2 (en) Optimizing write/erase operations in memory devices
JP3921174B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
CN100589203C (zh) 非易失存储器系统中不可用块的管理
US6396729B1 (en) Memory system having flexible bus structure and method
EP2003569B1 (en) Flash memory controller
EP2275914B1 (en) Non-volatile memory control
US20130138873A1 (en) Memory systems
US6029209A (en) Method and arrangement for allowing a computer to communicate with a data storage device
US6131139A (en) Apparatus and method of simultaneously reading and writing data in a semiconductor device having a plurality of flash memories
CN100487672C (zh) 用于分割一逻辑块的方法及设备
US5410707A (en) Bootstrap loading from external memory including disabling a reset from a keyboard controller while an operating system load signal is active
KR100439507B1 (ko) 고 용량 플래시 메모리 카드 시스템에서의 데이터 운영 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
N231 Notification of change of applicant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee