KR100614469B1 - Storage device - Google Patents
Storage device Download PDFInfo
- 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
- data
- block
- address
- empty block
- controller
- Prior art date
Links
Images
Classifications
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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/0625—Power saving in storage systems
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
본 발명은 소용적 및 저소비전력의 블록소거형 기억장치와 그 액세스방법을 제공하는 것으로서, 메모리셀어레이(1)를 액세스하기 위한 논리어드레스와 물리어드레스의 대응관계를 기억하는 어드레스변환테이블과 빈블록의 위치를 나타내는 빈블록테이블을 메모리셀어레이(1) 자신의 임의의 블록에 기억시키고, 메모리셀어레이(1)로부터 데이터를 판독할 때는 메모리셀어레이(1)에 기억되어 있는 어드레스변환테이블을 참조하여 물리어드레스를 구하여 데이터를 판독하며, 또 데이터를 기록할 때는 메모리셀어레이(1)에 격납된 빈블록테이블로부터 빈블록을 판별하고, 그 빈블록에 데이터를 기록하며, 또한 갱신된 어드레스변환테이블과 빈블록테이블을 다른 빈블록에 기록하는 것을 특징으로 한다.SUMMARY OF THE INVENTION The present invention provides a block erasing memory device having a small capacity and low power consumption, and an access method thereof, comprising: an address translation table and an empty block for storing a correspondence relationship between a logical address and a physical address for accessing a memory cell array 1; The empty block table indicating the position of the memory is stored in an arbitrary block of the memory cell array 1 itself, and when reading data from the memory cell array 1, the address conversion table stored in the memory cell array 1 is referred to. To read the data by reading the physical address, and to write the data, the free block is determined from the free block table stored in the memory cell array 1, and the data is written to the free block. And write the empty block table to another empty block.
기억장치, 액세스방법Storage device, access method
Description
본 발명은 기억장치 및 액세스방법에 관한 것으로 특히 블록소거형 기억장치와 그 액세스방법에 관한 것이다.TECHNICAL FIELD The present invention relates to a storage device and an access method, and more particularly to a block erasing storage device and an access method thereof.
플래시메모리 등의 블록소거형 기억매체를 구비하고, 중앙처리장치(CPU)나 전용컨트롤러의 제어 하에 정보를 판독· 기록하는 블록소거형 기억장치가 알려져 있다.Background Art A block erasing memory device having a block erasing memory medium such as a flash memory and reading and writing information under control of a central processing unit (CPU) or a dedicated controller is known.
블록소거형 기억매체란, 데이터를 기록하기 위해서는 기록의 대상으로 되는 영역의 기억내용이 미리 소거되어 있지 않으면 안되고, 소거의 처리가 기록처리에 의해 취급되는 최소기억용량의 단위(일반적으로 페이지, 세그먼트 등으로 불린다)에 동등한 크기이거나 또는 보다 큰 단위(일반적으로 블록으로 불린다)로 밖에 실시할 수 없는 기억매체를 가리킨다.In the case of a block erasing storage medium, in order to record data, the storage contents of a region to be recorded must be erased in advance, and the unit of the minimum storage capacity (typically pages or segments) in which the erasing process is handled by the recording process Refers to a storage medium that can be implemented in a unit equal to, or larger than, a block (usually called a block).
블록소거형 기억장치는 외부로부터의 액세스를 관리하기 위해 빈블록의 위치를 나타내는 정보를 격납하는 빈블록테이블이나 논리어드레스와 물리어드레스의 대응관계를 나타내는 정보를 격납하는 어드레스변환테이블을 기억하는 SRAM(스태틱형 랜덤 액세스 메모리)등을 구비하고 있다. The block erasure type storage device includes an SRAM for storing an empty block table for storing information indicating the position of an empty block or an address translation table for storing information indicating a correspondence relationship between a logical address and a physical address in order to manage access from the outside. Static random access memory).
블록소거형 기억장치는 기록요구를 수신하면 빈블록테이블에 등록되어 있는 빈블록을 검색하고, 색출한 블록에 데이터를 기록하며, 그 블록의 물리어드레스와 논리어드레스의 대응관계를 어드레스변환테이블에 추가하고, 또한 그 블록을 빈블록테이블로부터 삭제한다.When the block erase type storage device receives a write request, the block erase type memory device searches for an empty block registered in the empty block table, writes data to the retrieved block, and adds a correspondence between the physical address and the logical address of the block to the address conversion table. Also, the block is deleted from the empty block table.
또 블록소거형 기억장치는 판독요구를 수신하면 판독대상데이터의 논리어드레스를 키로서 어드레스변환테이블을 검색하여 판독대상의 데이터가 기억되어 있는 위치의 물리어드레스를 판별하고, 그 위치로부터 데이터를 판독하고 있다.When the block erasing memory device receives the read request, the block erase type memory device searches the address conversion table using the logical address of the read target data as a key to determine the physical address of the position where the read target data is stored, and reads the data from the position. have.
이와 같은 기억장치에서는 SRAM 등이 차지하는 용적의 분량만큼 기억장치 전체의 용적도 증대한다, 이로 인해 이와 같은 기억장치는 JEIDA / PCMCIA 카드 등 저(低)용적이 요구되는 용도에 이용하는 경우에는 용적을 억제하기 위한 연구가 필요했었다.In such a memory device, the volume of the entire memory device is also increased by the amount of the space occupied by the SRAM. Thus, such a memory device can suppress the volume when it is used for applications requiring low volume such as JEIDA / PCMCIA cards. There was a need for research.
또 SRAM은 소비전력이 크고, 각종 테이블을 격납하기 위해 SRAM을 사용하면 기억장치 전체로서의 소비전력도 증가하여 버리고, JEIDA / PCMCIA 카드 등 저(低)소비전력이 요구되는 용도에 적합하지 않게 되어 버린다고 하는 문제가 있었다.In addition, SRAM consumes a lot of power, and if SRAM is used to store various tables, the power consumption of the entire storage device also increases, making it unsuitable for applications requiring low power consumption such as JEIDA / PCMCIA cards. There was a problem.
본 발명은 상기 실상(實狀)에 감안하여 이루어진 것으로, 소(小)용적 및 저소비전력의 블록소거형 기억장치와 그 액세스방법을 제공하는 것을 목적으로 한다.SUMMARY OF THE INVENTION The present invention has been made in view of the foregoing circumstances, and an object thereof is to provide a block erasing memory device having a small volume and low power consumption, and an access method thereof.
상기 목적을 달성하기 위해 본 발명의 제 1 관점에 관련되는 기억장치는,The memory device according to the first aspect of the present invention for achieving the above object is,
물리어드레스가 할당된 복수의 메모리블록을 포함하는 기억수단(1)과,Storage means (1) comprising a plurality of memory blocks to which physical addresses are assigned;
상기 기억수단의 기억데이터를 메모리블록단위로 일괄하여 소거하는 소거수단(1e)과,Erasing means (1e) for collectively erasing the stored data of said storage means in units of memory blocks;
데이터와 논리어드레스를 입력하고, 해당 데이터의 상기 기억수단 내의 기억위치를 결정하며, 해당 데이터를 해당 기억위치에 기록하는 기록수단(4X, 4B, 5, 20)으로 구성되고, A recording means (4X, 4B, 5, 20) for inputting data and a logical address, determining a storage position of the data in the storage means, and recording the data in the storage position;
상기 기억수단은 상기 논리어드레스와 상기 기억수단의 물리어드레스의 대응관계를 나타내는 정보를 격납하는 어드레스변환테이블을 기억하며,The storage means stores an address conversion table for storing information indicating a correspondence relationship between the logical address and the physical address of the storage means,
상기 기록수단은 상기 데이터를 기록한 위치의 물리어드레스와 입력한 논리어드레스의 대응 지움을 나타내는 정보를 상기 어드레스변환테이블에 추가하고, 또는 상기 어드레스변환테이블을 갱신하는 수단(4X, 4B, 5, 20)을 구비하는 것을 특징으로 한다.The recording means adds (4X, 4B, 5, 20) information to the address conversion table or adds information indicating the correspondence between the physical address of the position at which the data is recorded and the input logical address; It characterized by having a.
이 구성의 기억장치에서는, 어드레스변환테이블은 블록소거형 기억매체인 기억수단에 기억되어 있다. 이로 인해 상기 기억수단 외에 어드레스변환테이블 기억용의 SRAM 등의 기억매체를 배치할 필요가 없다. 따라서 비교적 소용적으로 저소비전력의 블록소거형 기억장치를 제공할 수 있다.In the storage device of this configuration, the address conversion table is stored in the storage means which is a block erasing storage medium. This eliminates the necessity of disposing a storage medium such as an SRAM for address conversion table storage in addition to the storage means. Therefore, it is possible to provide a low power consumption block erasing memory device relatively relatively.
상기 기억장치는,The memory device,
상기 어드레스변환테이블이 기록되어 있는 블록의 물리어드레스를 기억하는 수단(20)과, Means (20) for storing physical addresses of blocks in which the address conversion table is recorded;
상기 어드레스변환테이블이 격납되어 있는 블록을 액세스하고, 판독대상데이터의 논리어드레스에 대응하는 물리어드레스를 판독하는 물리어드레스판독 수단(4X, 4B, 5, 20)과,Physical address reading means (4X, 4B, 5, 20) for accessing the block in which the address conversion table is stored and for reading the physical address corresponding to the logical address of the data to be read;
상기 물리어드레스판독수단에 의해 판독된 물리어드레스에 격납되어 있는 데 이터를 판독하여 출력하는 수단(4X, 4B, 5, 20)으로 구성되는 판독수단(4X, 4B, 5, 20)을 추가로 배치해도 좋다.A read means 4X, 4B, 5, 20, further comprising means 4X, 4B, 5, 20 for reading out and outputting data stored in the physical address read by the physical address reading means; You may also
이 판독수단에 의해 판독대상데이터의 물리어드레스를 기억수단에 격납된 어드레스변환테이블로부터 판별하여 판독할 수 있다.By this reading means, the physical address of the data to be read can be distinguished from the address conversion table stored in the storage means and read out.
상기 기억수단은 데이터를 기억하고 있지 않은 빈블록을 나타내는 정보를 격납하는 빈블록테이블을 기억해도 좋다.The storage means may store an empty block table that stores information indicating empty blocks that do not store data.
이와 같은 구성으로 하면 기억수단 외에 사용하는 SRAM 등의 메모리의 사용량을 또한 저감하고, 소용적화, 저소비전력화를 진행할 수 있다.With such a configuration, the amount of memory used for the SRAM and the like used in addition to the storage means can be further reduced, and the capacity and the power consumption can be reduced.
그리고, 상기 빈블록에 상기 정보가 기록되기 전에 존재한 상기 빈블록의 정보를 격납하는 상기 빈블록테이블은 제거되며, 그리고, 상기 빈블록기록수단에 의해 상기 빈블록에 상기 정보가 기록된 후에 잔존하는 상기 빈블록의 정보를 격납하는 상기 빈블록테이블을 상기 기억수단에 기억시키도록 하면 빈블록테이블에 포함되는 빈블록의 정보는 갱신되고, 수시로 최신의 빈블록정보를 얻을 수 있다. Then, the empty block table for storing information of the empty block existing before the information is recorded in the empty block is removed, and remains after the information is recorded in the empty block by the empty block recording means. When the empty block table for storing the empty block information is stored in the storage means, the empty block information included in the empty block table is updated, and the latest empty block information can be obtained at any time.
또 상기 기억수단은, 예를 들면 복수 칩의 플래시메모리에 의해 구성된 것으로 할 수 있다. 이 경우 상기 어드레스변환테이블(및 상기 빈블록테이블)은 어느 것인가 칩의 플래시메모리의 임의의 1개의 블록에 기억하면 좋다. 그리고, 어드레스변환테이블 및 빈블록테이블이 어느 칩의 어느 블록에 기억되어 있는지를 나타내는 정보를 기억하는 수단을 설치하면 좋다. The storage means can be constituted by, for example, a flash memory of a plurality of chips. In this case, the address conversion table (and the empty block table) may be stored in any one block of the flash memory of the chip. Then, a means for storing information indicating which block of which chip the address conversion table and the empty block table are stored may be provided.
상기 기억수단은, 예를 들면 상기 어드레스변환테이블과 상기 빈블록테이블을 1개의 블록 내에 기억한다. The storage means stores, for example, the address conversion table and the empty block table in one block.
이와 같은 구성으로 하면 어드레스변환테이블과 빈블록테이블의 격납을 위해 사용하는 블록을 1개로 억제하여 기억수단의 기억용량을 유효하게 사용할 수 있다. 또 이들 테이블의 기억위치의 관리 등이 용이하게 된다. With such a configuration, the block used for storing the address conversion table and the empty block table can be suppressed to one, and the storage capacity of the storage means can be effectively used. In addition, it becomes easy to manage the storage positions of these tables.
또 본 발명의 제 2 관점에 관련되는 기억장치는,Moreover, the memory | storage device which concerns on a 2nd viewpoint of this invention is
물리어드레스가 할당된 복수의 메모리블록을 포함하는 기억수단(1)과,Storage means (1) comprising a plurality of memory blocks to which physical addresses are assigned;
상기 기억수단의 기억데이터를 메모리블록단위로 일괄하여 소거하는 소거수단(1e)과,Erasing means (1e) for collectively erasing the stored data of said storage means in units of memory blocks;
기록대상의 데이터와 논리어드레스를 입력하고, 해당 데이터의 상기 기억수단 내의 기억위치를 결정하며, 해당 데이터를 해당 기억위치에 기록하는 기록수단(4X, 4B, 5, 20)으로 구성되고, A recording means (4X, 4B, 5, 20) for inputting data to be recorded and a logical address, determining a storage position of the data in the storage means, and recording the data at the storage position;
상기 기억수단은 상기 데이터를 기억하고 있지 않은 빈블록을 나타내는 빈블록정보를 기억하고 있으며,The storage means stores the free block information indicating the free block which does not store the data.
상기 기록수단은 상기 빈블록정보가 나타내는 빈블록에 상기 데이터를 기록하는 것을 특징으로 한다.And the recording means records the data in the empty block indicated by the empty block information.
이 구성에 따르면 빈블록정보는 블록소거형 기억매체인 기억수단에 기억되어 있다. 이로 인해 상기 기억수단 외에 빈블록정보 기억용의 SRAM 등 외의 기억매체를 배치할 필요가 없다. 따라서 비교적 소용적으로 저소비전력의 블록소거형 기억장치를 제공할 수 있다. According to this configuration, the empty block information is stored in a storage means which is a block erasing storage medium. For this reason, it is not necessary to arrange a storage medium other than the storage means other than the SRAM for free block information storage. Therefore, it is possible to provide a low power consumption block erasing memory device relatively relatively.
또 상기 기록수단은 상기 기억수단에 기억된 상기 빈블록정보를 상기 기록수단에 의해 상기 빈블록에 상기 데이터가 기록된 후에 잔존하는 상기 빈블록의 정보 를 나타내는 상기 빈블록정보에 갱신하는 수단(1e, 4X, 4B, 5, 20)을 추가로 구비하도록 하면 상기 빈블록정보는 갱신되고, 수시로 최신의 빈블록정보를 얻을 수 있다.The recording means further includes means for updating the empty block information stored in the storage means to the empty block information indicating information of the empty block remaining after the data is recorded in the empty block by the recording means (1e). , 4X, 4B, 5, 20), the empty block information is updated, and the latest empty block information can be obtained at any time.
상기 빈블록정보는 각 빈블록의 일부에 기억되고, 다른 1개의 빈블록을 나타내도록 연쇄적으로 등록된 연쇄정보로 구성되는 것으로 할 수 있다. 이 경우 상기 기록수단은 상기 연쇄정보에 따라 빈블록을 판별하고, 해당 빈블록에 상기 데이터를 기록하는 수단(4X, 4B, 5, 20)을 구비하는 것으로 할 수 있다. The empty block information may be constituted by chain information stored in a part of each empty block and registered serially to represent another empty block. In this case, the recording means may be provided with means (4X, 4B, 5, 20) for discriminating the empty block according to the chain information and for recording the data in the empty block.
이 구성에 따르면 빈블록테이블을 격납하기 위해 1개의 블록을 사용할 필요가 없어 기억매체의 사용효율이 높다. 또 빈블록의 연쇄정보에 의거하여 기록대상의 블록을 특정하기 때문에 각 블록의 사용빈도를 균일화할 수 있다,According to this configuration, since one block does not need to be used to store the empty block table, the use efficiency of the storage medium is high. In addition, since the block to be recorded is specified based on the chain information of the free block, the frequency of use of each block can be made uniform.
상기 빈블록정보를 연쇄정보로 구성하는 경우 최초의 빈블록어드레스를 기억하는 선두(先頭)빈블록기억수단(20) 등을 배치하고, 여기에 기억된 물리어드레스가 붙여진 빈블록에 데이터를 기록하며, 선두빈블록기억수단의 내용을 데이터를 기록한 블록에 등록되어 있는 연쇄정보로 갱신해도 좋다.When the empty block information is composed of chain information, the first empty block storage means 20 for storing the first empty block address is arranged, and the data is recorded in the empty block to which the stored physical address is attached. The contents of the first empty block storage means may be updated with the chain information registered in the block in which data is recorded.
기억수단을 플래시메모리 등으로 구성하는 경우, 기억영역은 데이터영역과 리던던트영역으로 구성된다. 이 경우 연쇄정보를 상기 리던던트영역에 격납하여 둘 수 있다.When the storage means is constituted by a flash memory or the like, the storage area is composed of a data area and a redundant area. In this case, chain information may be stored in the redundant area.
이와 같은 기억장치에 있어서는 연쇄정보는 빈블록의 상기 리던던트영역에 기록되고, 상기 데이터는 이미 연쇄정보가 기록되어 있는 빈블록에 덮어 쓰여진다.In such a storage device, concatenated information is recorded in the redundant area of the empty block, and the data is overwritten on the empty block in which the concatenated information is already recorded.
이 때 상기 데이터영역과 상기 리던던트영역은 상기 기억영역 중에서 서로 중복하지 않도록 배치됨으로써 상기 데이터의 덮어쓰기에 의해서도 상기 연쇄정보는 파괴되지 않는다. At this time, the data area and the redundant area are arranged so as not to overlap each other in the storage area, so that the chain information is not destroyed even when the data is overwritten.
또 이 제 2 관점에 관련되는 기억장치에 있어서도 상기 기억수단은, 예를 들면 복수 칩의 플래시메모리에 의해 구성된 것으로 할 수 있다. 이 경우 상기 연쇄정보는 다음의 빈블록이 어느 칩의 어느 블록에 기록되어 있는지를 나타내는 정보에 의해 구성하면 좋다.Also in the storage device according to the second aspect, the storage means may be constituted by, for example, a flash memory of a plurality of chips. In this case, the chain information may be constituted by information indicating which block of which chip the next empty block is recorded.
또 본 발명의 제 3 관점에 관련되는 액세스방법은,In addition, the access method according to the third aspect of the present invention,
블록단위로 데이터의 소거가 가능하고, 미리 데이터가 소거된 빈블록에 데이터의 기록이 가능한 블록소거형의 메모리로의 액세스방법으로,In a method of accessing a block erasure type memory in which data can be erased in units of blocks and data can be written to an empty block from which data has been previously erased.
상기 메모리에 붙여진 물리어드레스와 데이터의 논리어드레스의 대응관계를 나타내는 어드레스변환테이블을 상기 메모리 자신에 기억시키고,Storing in the memory itself an address conversion table indicating a correspondence relationship between a physical address attached to the memory and a logical address of data;
기록대상데이터와 그 논리어드레스가 공급되었을 때는 해당 논리어드레스에 이미 데이터가 기록되어 있는지 없는지를 상기 어드레스변환테이블에 의해 판별하며, 존재한다고 판별했을 때는 상기 빈블록을 판별하여 상기 데이터를 해당 빈블록에 기록하는 동시에 구데이터를 갖는 블록을 소거하고, 존재하지 않는다고 판별했을 때는 상기 빈블록을 판별하여 상기 데이터를 해당 빈블록에 기록하며, 다음에,When the data to be recorded and its logical address are supplied, it is determined by the address conversion table whether or not data has already been recorded in the logical address. When it is determined, the empty block is determined and the data is assigned to the empty block. At the same time, the block having the old data is erased, and when it is determined that the block does not exist, the empty block is determined and the data is recorded in the empty block.
상기 데이터가 기록된 상기 블록의 물리어드레스와 상기 논리어드레스의 대응을 나타내는 정보를 상기 메모리 내의 상기 어드레스변환테이블에 추가하거나, 또는 그 정보를 갱신하고, Add information indicating the correspondence between the physical address of the block in which the data is written and the logical address to the address conversion table in the memory, or update the information;
판독대상데이터의 논리어드레스가 공급되었을 때는 상기 메모리 내의 상기 어드레스변환테이블을 액세스하여 해당 데이터가 격납된 위치의 물리어드레스를 판별하고, 해당 물리어드레스로부터 데이터를 판독하여 출력하는 것을 특징으로 한다.When the logical address of the data to be read is supplied, the address conversion table in the memory is accessed to determine the physical address of the position where the data is stored, and the data is read and output from the physical address.
또 본 발명의 제 4 관점에 관련되는 액세스방법은,Moreover, the access method which concerns on the 4th viewpoint of this invention is
블록단위로 데이터의 소거가 가능하고, 미리 데이터가 소거된 빈블록에 데이터의 기록이 가능한 블록소거형의 메모리로의 액세스방법으로,In a method of accessing a block erasure type memory in which data can be erased in units of blocks and data can be written to an empty block from which data has been previously erased.
상기 메모리에 빈블록을 나타내는 빈블록테이블을 기억시켜 두고, 기록대상데이터가 공급되었을 때에 상기 메모리 내의 빈블록테이블에 의거하여 빈블록을 판별하여 판별한 빈블록에 해당 데이터를 기록하는 것을 특징으로 한다.And storing the empty block table representing the empty block in the memory, and recording the corresponding data in the empty block determined by discriminating the empty block based on the empty block table in the memory when the data to be recorded is supplied. .
제 3 및 제 4 관점에 관련되는 액세스방법에 따르면, 메모리의 일부를 어드레스변환테이블이나 빈블록테이블로서 사용할 수 있고, 이들의 테이블을 격납하기 위한 SRAM 등 외의 메모리를 배치할 필요가 없어 소용량화, 저소비전력화에 기여한다.According to the access method according to the third and fourth aspects, a part of the memory can be used as an address translation table or an empty block table, and it is not necessary to arrange a memory other than an SRAM for storing these tables. Contributes to lower power consumption.
또 본 발명의 제 5 관점에 관련되는 액세스방법은,Moreover, the access method which concerns on the 5th viewpoint of this invention is
블록단위로 데이터의 소거가 가능하고, 미리 데이터가 소거된 빈블록에 데이터의 기록이 가능한 블록소거형 메모리로의 액세스방법으로,In a method of accessing a block erase type memory in which data can be erased in block units and data can be written to an empty block from which data has been previously erased.
상기 메모리가 구비하는 블록에 해당 메모리의 빈블록을 나타내는 빈블록정보를 기억시키고,Free block information indicating a free block of the corresponding memory is stored in a block included in the memory,
기록대상데이터가 공급되었을 때에 상기 빈블록정보에 의거하여 빈블록을 판별하며, 판별한 빈블록에 해당 데이터를 기록하는 동시에 상기 빈블록정보에 의거 하여 빈블록을 새로이 판별하고, 상기 빈블록정보를 기억하는 상기 블록의 기억내용을 소거하는 동시에 새로이 판별한 상기 빈블록에 갱신된 빈블록정보를 기록하는 것을 특징으로 한다.When the data to be recorded is supplied, the free block is discriminated based on the free block information, the corresponding data is recorded in the determined free block, the free block is newly determined based on the free block information, and the free block information is determined. It is characterized by erasing the stored contents of the block to be stored and updating updated free block information in the newly determined free block.
제 5 관점에 관련되는 액세스방법에 따르면 메모리의 일부를 어드레스변환테이블이나 빈블록테이블로서 사용할 수 있어 소용량화, 저소비전력화를 도모할 수 있는 데다 상기 빈블록의 정보가 갱신됨으로써 수시로 최신의 빈블록정보를 얻을 수 있다. According to the access method according to the fifth aspect, a part of the memory can be used as an address translation table or an empty block table, so that a small capacity and low power consumption can be achieved. Can be obtained.
또 본 발명의 제 6 관점에 관련되는 액세스방법은,The access method according to the sixth aspect of the present invention is
블록단위로 데이터의 소거가 가능하고, 미리 데이터가 소거된 빈블록에 데이터의 기록이 가능한 블록소거형 메모리로의 액세스방법으로,In a method of accessing a block erase type memory in which data can be erased in block units and data can be written to an empty block from which data has been previously erased.
상기 메모리의 각 빈블록의 일부에 차례로 다른 빈블록을 나타내는 정보로 이루어지는 빈블록연쇄정보를 격납하고,A part of each free block of the memory stores free block chain information consisting of information representing another free block,
기록대상데이터가 공급되었을 때에 빈블록연쇄정보에 의해 정의되는 빈블록 연쇄의 선두빈블록을 판별하며, 판별한 빈블록에 데이터를 기록하는 것을 특징으로 한다.When the recording target data is supplied, the head empty block of the free block chain defined by the free block chain information is discriminated, and data is recorded in the determined free block.
제 6 관점에 관련되는 액세스방법에 따르면 메모리의 일부를 빈블록테이블로서 사용할 수 있다.According to the access method related to the sixth aspect, a part of the memory can be used as the empty block table.
또 데이터가 기록되는 블록이 연쇄정보에 의해 정의되는 연쇄의 차례대로 되기 때문에 기록빈도를 메모리 전체에서 균일화할 수 있다.In addition, since the blocks in which data is written are in the order of the chains defined by the chain information, the recording frequency can be made uniform throughout the memory.
도 1은 본 발명의 실시형태에 관련되는 기억장치의 기본구성을 나타내는 블록도.1 is a block diagram showing a basic configuration of a storage device according to an embodiment of the present invention.
도 2는 메모리셀어레이의 구성을 나타내는 도면.2 is a diagram illustrating a configuration of a memory cell array.
도 3은 기억영역의 논리적 구조를 나타내는 도면.3 illustrates a logical structure of a storage area.
도 4는 빈블록테이블구성의 한 예를 나타내는 도면.4 is a diagram showing an example of an empty block table configuration.
도 5는 어드레스변환테이블 구성의 한 예를 나타내는 도면.5 is a diagram showing an example of an address conversion table configuration.
도 6은 데이터를 판독하는 처리를 나타내는 흐름도.6 is a flowchart showing a process of reading data;
도 7은 물리어드레스결정의 처리를 나타내는 흐름도.7 is a flowchart showing processing of physical address determination;
도 8은 기록처리를 나타내는 흐름도.8 is a flowchart showing recording processing;
도 9는 구 데이터 소거의 처리를 나타내는 흐름도.9 is a flowchart showing processing of old data erasing.
도 10은 빈블록테이블 및 어드레스변환테이블을 갱신하는 처리를 나타내는 흐름도.10 is a flowchart showing a process of updating an empty block table and an address conversion table.
도 11은 제 2 실시형태의 기억장치에 있어서의 빈블록의 연쇄를 나타내는 개념도.Fig. 11 is a conceptual diagram showing a chain of empty blocks in the storage device of the second embodiment.
도 12는 제 2 실시형태의 기억장치에 있어서의 데이터기록처리의 흐름도.12 is a flowchart of data recording processing in the storage device of the second embodiment.
도 13은 제 2 실시형태의 기억장치에 있어서의 빈블록정보 및 어드레스변환테이블을 갱신하는 처리를 나타내는 흐름도 이다.Fig. 13 is a flowchart showing processing of updating empty block information and an address conversion table in the storage device of the second embodiment.
※도면의 주요 부분에 대한 부호의 설명※ Explanation of code for main part of drawing
1: 메모리셀어레이1: memory cell array
1e: 소거제어회로1e: erase control circuit
2: I/O버퍼2: I / O buffer
3B: 블록어드레스버퍼3B: Block Address Buffer
3X: X어드레스버퍼3X: X address buffer
4B: 블록어드레스디코더4B: Block Address Decoder
4X: X어드레스디코더4X: X address decoder
5: 제어회로5: control circuit
6: 글로벌버퍼6: global buffer
10: 플래시메모리유닛10: flash memory unit
11: 컴퓨터11: computer
12: CPU12: CPU
13: 버스라인13: bus line
20: 컨트롤러20: controller
이하, 본 발명을 실시하기 위한 최선의 형태에 관련되는 기억장치를 설명한다.The storage device according to the best mode for carrying out the present invention will be described below.
(제 1 실시형태)(1st embodiment)
본 실시 형태에 관련되는 기억장치는 어드레스변환테이블 등을 플래시메모리유닛 자신에 기억하는 것이고, 도 1에 나타내는 바와 같이 플래시메모리유닛(10)과 컨트롤러(20)로 구성된다.The storage device according to the present embodiment stores an address conversion table or the like in the flash memory unit itself, and is constituted by the
플래시메모리유닛(10)은 메모리셀어레이(1)와, I/O버퍼(2)와, X어드레스버퍼(3X)와, 블록어드레스버퍼(3B)와, X어드레스디코더(4X)와, 블록어드레스디코더(4B)와, 제어회로(5)와, 글로벌버퍼(6)로 구성된다. The
메모리셀어레이(1)는 복수의 셀로 구성되어 있다, 각 메모리셀은, 예를 들면 NAND형의 것으로서 1바이트의 기억용량을 갖는다. 이들의 메모리셀은 논리적으로는 도 2에 나타내는 바와 같이 세로 16,384행, 가로 528열의 매트릭스상으로 배치되어 있다. 따라서 메모리셀어레이(1)는 전체로서는 8. 65메가 바이트의 기억용량을 갖는다. The
메모리셀어레이(1)는 8개의 데이터입출력단(Tdata)과, 대응하는 행의 메모리셀에 공통으로 접속된 16,384개의 행제어입력단(Trowcont)과, 모든 메모리셀에 공통의 판독제어단(Treadcont) 및 기록제어단(Twritecont)과, 데이터 소거용의 소거제어회로(1e)를 구비한다.The
메모리셀어레이(1)의 판독제어단(Treadcont)에 제어신호가 입력되어 있을 때, 행제어입력단(Trowcont)에 제어신호가 공급되면 제어신호를 공급받은 행의 메모리셀은 그 기억내용을 선두부터 메모리셀 1개 분량(즉 1바이트)씩 528회에 나누어 데이터출력단(Tdata)에 출력한다.When the control signal is input to the read control terminal Treadcont of the
한편 기록제어단(Twritecont)에 제어신호가 입력되어 있을 때는 데이터입출력단(Tdata)으로부터 입력되는 데이터를 1바이트씩 528회에 나누어 선두의 메모리셀부터 기억한다,On the other hand, when a control signal is input to the write control terminal Twritecont, the data inputted from the data input / output terminal Tdata is divided into 528 times for each byte and stored from the first memory cell.
단, 각 메모리셀은 NAND형이기 때문에 데이터의 기록은 기록 값을 「1」에서 「0」으로 하는 방향으로밖에 실시할 수 없으며, 일단 기억 값이 「0」으로 된 메 모리셀은 기억내용이 리셋될 때까지 기억 값이 「0」의 상태를 유지한다. However, since each memory cell is of the NAND type, data can only be written in the direction in which the recording value is set from "1" to "0". The memory value remains "0" until it is reset.
도 2에 나타내는 바와 같이 메모리셀의 매트릭스 각 행은 528바이트의 기억용량을 갖는 페이지를 구성한다, 페이지에는 연속적으로 1에서 16,384까지의 페이지어드레스가 부여되고, 각 페이지에 포함되는 메모리셀에는 연속적으로 1에서 528까지의 번호가 부여되어 있다.As shown in Fig. 2, each row of the matrix of memory cells constitutes a page having a storage capacity of 528 bytes. A page address of 1 to 16,384 is continuously given to the page, and the memory cells included in each page are continuously
도 2 및 도 3에 나타내는 바와 같이 각 페이지는 선두부터 16페이지 단위로 1개의 블록을 구성한다. 각 블록은 8킬로 바이트의 기억용량을 갖고, 기억영역 전체는 1,024개의 블록으로 구성되어 있다.As shown in Figs. 2 and 3, each page constitutes one block in units of 16 pages from the beginning. Each block has a storage capacity of 8 kilobytes, and the entire storage area consists of 1,024 blocks.
또 각 페이지는 도 3에 나타내는 바와 같이 선두부터 512바이트의 영역을 차지하는 데이터영역과 말미 16바이트를 차지하는 리던던트부로 구성된다. 데이터영역에는 본래의 데이터가 격납되고, 리던던트부에는 에러체크코드 등이 격납된다.As shown in Fig. 3, each page is composed of a data area occupying an area of 512 bytes from the beginning and a redundant part occupying the last 16 bytes. The original data is stored in the data area, and an error check code or the like is stored in the redundant part.
그리고, 데이터소거용의 소거제어회로(1e)에 특정 블록의 데이터를 소거하도록 지시하는 제어신호가 입력되면 해당 블록에 포함되는 모든 메모리셀의 기억내용이 리셋된다(즉 각 메모리셀의 기억 값이 「1」로 된다).When the control signal for instructing data erasure is input to the erasing control circuit 1e for erasing data, the memory contents of all memory cells included in the block are reset (that is, the memory value of each memory cell is reset). It becomes "1").
메모리셀어레이(1)에는 이 메모리셀어레이(1)에 액세스하기 위한 빈블록테이블 및 어드레스변환테이블이 격납되어 있다.The
빈블록테이블은 메모리셀어레이(1)의 임의의 블록 선두페이지에 기억되어 있고, 메모리셀어레이(1)의 각 블록의 어느 것인가가 빈블록(즉 리셋된 상태이고, 데이터「0」을 기억한 메모리셀을 포함하지 않은 블록)인가를 나타내는 정보를 격납한다, 빈블록테이블이 격납되어 있는 블록의 정보는 후술하는 바와 같이 제어회로(5)에 기억된다.The empty block table is stored in the first page of any block of the
메모리셀어레이(1)의 블록 총수가 1,024개일 때 빈블록테이블구조의 한 예를 도 4에 나타낸다. 이 빈블록테이블은 특정 블록 선두의 128바이트의 메모리셀(즉 선두부터 1,024비트)로 구성되고. 선두의 비트부터 차례로 블록 1부터 블록 1,024에 1 대 1로 대응하며, 대응하는 블록이 빈블록일 때 「1」, 빈블록이 아닐 때 「0」을 격납한다.An example of the empty block table structure when the total number of blocks of the
어드레스변환테이블은 빈블록테이블이 격납되어 있는 블록의 제 2 페이지 이후에 기억되고, 메모리셀어레이(1)의 각 블록에 할당되어 있는 논리어드레스를 나타내는 정보를 격납한다.The address conversion table is stored after the second page of the block in which the empty block table is stored, and stores information indicating a logical address assigned to each block of the
논리어드레스는 이 기억장치가 후술하는 동작에 의해 판독· 기록되었을 때에 후술하는 외부의 컴퓨터(11)가 구비하는 CPU(중앙처리유닛)(12)나 컨트롤러(20) 등에 의해 테이터 판독· 기록의 단위로서 인식되는 단위이다.The logical address is a unit of data reading and writing by the CPU (central processing unit) 12, the
논리어드레스가 할당되어 있는 영역의 총량은 메모리셀어레이(1)의 기억용량보다 작은 소정의 값, 예를 들면 16,000페이지 분량이며, 각 논리어드레스가 차지하는 기억용량은, 예를 들면 1페이지가 차지하는 기억영역에 일치한다.The total amount of the area to which the logical addresses are allocated is a predetermined value smaller than the memory capacity of the
논리어드레스는 구체적으로는, 예를 들면 메모리셀어레이(1)의 기억용량보다 작은 소정의 값에 상당하는 크기(예를 들면 16,000페이지 분량)의 가상의 기억영역을 512바이트마다의 구획으로 나누고, 각 구획에 0부터 시작하는 연번(連番)을 붙인 경우의 해당 연번, 즉 LBA(Logic Block Address)로 구성되어 있다.Specifically, the logical address is, for example, a virtual storage area of a size (e.g., 16,000 pages) corresponding to a predetermined value smaller than the storage capacity of the
어드레스변환테이블 구조의 한 예를 도 5에 나타낸다. 어드레스변환테이블 은 복수의 레코드로 이루어지고, 각 레코드의 선두에는 논리어드레스가 격납되며, 이어서 해당 논리어드레스에 대응 지워져있는 영역의 선두페이지가 위치하는 블록의 번호(블록어드레스)와 그 선두페이지의 번호가 격납되어 있다.One example of the address conversion table structure is shown in FIG. The address conversion table is composed of a plurality of records, and the logical address is stored at the head of each record. Subsequently, the block number (block address) where the first page of the area corresponding to the logical address is located and the number of the first page are stored. Is stored.
I/O버퍼(2)는 도 1에 나타내는 바와 같이 글로벌버퍼(6)와 메모리셀어레이(1)의 데이터입출력단(Tdata)과 제어회로(5)에 접속되어 있다.The I / O buffer 2 is connected to the data input / output terminal Tdata and the control circuit 5 of the global buffer 6 and the
I/O버퍼(2)는 제어회로(5)의 지시에 따라 글로벌버퍼(6)가 기억하는 데이터를 메모리셀어레이(1)의 데이터입출력단(Tdata)에 1바이트씩 출력하는 동작과 데이터입출력단(Tdata)으로부터 출력되는 데이터를 글로벌버퍼(6)에 1바이트씩 출력하는 동작을 실시한다.The I / O buffer 2 outputs the data stored in the global buffer 6 to the data input / output terminal Tdata of the
X어드레스버퍼(3X)는 글로벌버퍼(6)로부터 메모리셀어레이(1)의 행어드레스(즉 페이지어드레스)를 나타내는 행어드레스신호를 입력하여 X어드레스디코더(4X)에 출력한다.The
X어드레스디코더(4X)는 행어드레스신호가 나타내는 행 또는 제어회로(5)가 지시하는 행의 행제어입력단(Trowcont)에 액티브레벨의 제어신호를 공급한다.The
블록어드레스버퍼(3B)는 글로벌버퍼(6)로부터 메모리셀어레이(1)의 각 블록의 어드레스를 나타내는 블록어드레스신호를 입력하여 블록어드레스디코더(4B)에 출력한다. The
블록어드레스디코더(4B)는 블록어드레스신호가 나타내는 블록 또는 제어회로(5)가 지시하는 블록의 데이터를 소거하도록 지시하는 신호를 소거제어회로(1e)에 공급한다. The block address decoder 4B supplies a signal indicating to erase data of a block indicated by the block address signal or a block indicated by the control circuit 5 to the erasure control circuit 1e.
제어회로(5)는 글로벌버퍼(6)로부터 커맨드를 입력하여 해석하고, 해석 결과에 따라 X어드레스버퍼(3X), X어드레스디코더(4X), 블록어드레스디코더(4B) 및 I/O버퍼(2)를 제어한다.The control circuit 5 analyzes by inputting a command from the global buffer 6, and according to the analysis result, the
또 제어회로(5)는 컨트롤러(20)로부터 기록신호(Swrite) 및 래치신호(Slatch)의 공급을 받는다. 그리고 이들의 신호에 따라 메모리셀어레이(1) 및 글로벌버퍼(6)를 후술하는 바와 같이 제어한다. 또 제어회로(5)는 컨트롤러(20)에 후술하는 타이밍으로 비지신호(Sbusy) 및 리디신호(Sready)를 공급한다.In addition, the control circuit 5 receives the write signal Swrite and the latch signal Slatch from the
또 제어회로(5)는 글로벌버퍼(6)에 격납된 데이터가 후술하는 셋업커맨드나 소거커맨드 등의 소정의 커맨드를 나타낼 때 그 커맨드가 지시하는 처리를 후술하는 바와 같이 실행한다.In addition, when the data stored in the global buffer 6 indicates a predetermined command such as a setup command or an erase command described later, the control circuit 5 executes the processing indicated by the command as described later.
또한 비지신호(Sbusy) 및 리디신호(Sready)는 동일의 신호선을 통해서 전송하도록 해도 좋다. 따라서 예를 들면 제어회로(5)가 소정의 신호선에 2값 논리값“1”을 나타내는 전압을 인가하고 있을 때는 제어회로(5)가 비지신호(Sbusy)를 공급하고 있는 것으로 하고, 2값 논리값“0”을 나타내는 전압을 인가하고 있을 때는 리디신호(Sready)를 공급하고 있는 것으로 해도 좋다. In addition, the busy signal Sbusy and the ready signal Sready may be transmitted through the same signal line. Therefore, for example, when the control circuit 5 is applying a voltage representing the two-value logic value "1" to a predetermined signal line, the control circuit 5 supplies the busy signal Sbusy. When a voltage indicating the value "0" is applied, the read signal Sready may be supplied.
글로벌버퍼(6)는 I/O버퍼(2)와 제어회로(5)와, 컨트롤러(20)에 접속되어 있다. 그리고 제어회로(5)로부터 출력되는 제어신호에 따라 버스라인(13)상의 신호 및 I/O버퍼(2)의 기억내용 중 해당 제어신호가 공급된 시점에서 자기에게 공급되어 있는 것을 기억하고, 기억한 내용을 X어드레스버퍼(3X) 또는 제어회로(5)에 출력한 다.The global buffer 6 is connected to the I / O buffer 2, the control circuit 5, and the
컨트롤러(20)는 CPU 등으로 이루어지고, 플래시메모리유닛(10)의 제어회로(5)에 접속되어 있으며, 또 버스라인(13)을 통해서 플래시메모리유닛(10)의 글로벌버퍼(6) 및 컴퓨터(11)의 CPU(12)에 접속되어 있다. 단, 컨트롤러(20)를 구성하는 CPU는 컴퓨터(11)의 CPU(12)와 동일의 것이어도 좋다.The
컨트롤러(20)는 외부의 컴퓨터(11)가 구비하는 CPU(12) 등에 의해 공급되는 커맨드에 따라 후술하는 바와 같이 제어회로(5)에 기록신호(Swrite)나 래치신호(Slatch)를 공급하고, 글로벌버퍼(6)에는 물리어드레스, 기록대상의 데이터, 커맨드 등을 공급하여 플래시메모리유닛(10)을 제어한다.The
또 컨트롤러(20)는 어드레스변환테이블 및 빈블록테이블의 위치와 최후에 기록이 이루어진 블록의 위치를 나타내는 데이터를 기억하고, CPU(12)로부터 공급된 커맨드에 따른 후술의 처리를 실행할 때에 자기가 기억하고 있는 데이터를 참조한다. 또 컨트롤러(20)는 CPU(12)로부터 판독대상의 데이터를 바이트 단위로 나타낸 양(즉 바이트 수)을 공급받으면 이것을 기억하고, 후술하는 처리에 있어서 참조한다.The
(제 1 실시형태의 동작)(Operation of the First Embodiment)
다음에 본 기억장치에 데이터를 기록하는 처리를 도 6∼도 10을 참조하여 설명한다.Next, a process of writing data into this storage device will be described with reference to FIGS.
도 6은 데이터를 판독하는 처리를 나타내는 흐름도이다.6 is a flowchart showing a process of reading data.
도 7은 물리어드레스 결정의 처리를 나타내는 흐름도이다. 7 is a flowchart showing a process of determining a physical address.
도 8은 기록처리를 나타내는 흐름도이다.8 is a flowchart showing recording processing.
도 9는 구데이터 소거의 처리를 나타내는 흐름도이다.9 is a flowchart showing a process of erasing old data.
도 10은 빈블록테이블 및 어드레스변환테이블을 갱신하는 처리를 나타내는 흐름도이다.10 is a flowchart showing a process of updating an empty block table and an address conversion table.
(데이터판독)(Data read)
컴퓨터(11) 내의 CPU(12)는 이 기억장치로부터 데이터를 판독하는 경우, 도 6에 나타내는 데이터판독의 처리를 실행한다.When the
처리가 개시되면 CPU(12)는 판독대상의 데이터가 격납되어 있는 논리어드레스를 버스라인(13)상에 출력하고, 컨트롤러(20)에 데이터의 판독을 지시하는 커맨드와 판독데이터가 격납되어 있는 기억영역의 페이지 수를 공급한다(도 6, 스텝 S101).When the processing starts, the
컨트롤러(20)는 CPU(12)로부터의 커맨드에 응답하고, 버스라인(13)을 통해서 공급된 논리어드레스 및 페이지 수를 취득하여 양자를 기억한다(스텝 S102).The
그리고 컨트롤러(20)는 어드레스변환테이블 선두페이지의 물리어드레스를 글로벌버퍼(6)에 공급하고, 제어회로(5)에 래치신호(Slatch)를 송출하여 제어회로(5)로부터 리디신호(Sready)가 공급되는 것을 대기한다(스텝 S103).The
제어회로(5)는 컨트롤러(20)로부터의 래치신호(Slatch)에 응답하고, 컨트롤러(20)에의 비지신호(Sbusy)의 공급을 개시하며, 컨트롤러(20)가 공급하고 있는 물리어드레스를 래치하는 지시를 글로벌버퍼(6)에 보낸다. 이 지시에 응답하여 글로벌버퍼(6)는 컨트롤러(20)가 공급하고 있는 물리어드레스를 래치한다(스텝 S104). 글로벌버퍼(6)에 래치된 물리어드레스 중 블록어드레스에 해당하는 부분은 블록어드레스버퍼(3B)를 통해서 블록어드레스디코더(4B)에 공급되고, 페이지어드레스에 해당하는 부분은 X어드레스버퍼(3X)를 통해서 X어드레스디코더(4X)에 공급된다.The control circuit 5 responds to the latch signal Slatch from the
제어회로(5)는 어드레스변환테이블의 판독을 실시하기 위해 글로벌버퍼(6)로부터 페이지어드레스를 공급받은 X어드레스디코더(4X)에 해당 페이지어드레스가 나타내는 페이지를 선택하도록 지시한다.The control circuit 5 instructs the
X어드레스디코더(4X)는 제어회로(5)로부터의 지시에 응답하여 어드레스변환테이블이 격납되어 있는 페이지의 행제어입력단(Trowcont)에 액티브레벨의 제어신호를 출력한다. 이에 따라 어드레스변환테이블 중 컨트롤러(20)가 지시하는 페이지가 선택된다.In response to an instruction from the control circuit 5, the
다음에 제어회로(5)는 메모리셀어레이(1)의 판독제어단(Treadcont)에 데이터판독의 지시를 보내고, 비지신호(Sbusy)의 공급을 정지하여 컨트롤러(20)에 리디신호(Sready)를 공급한다. 한편 메모리셀어레이(1)는 제어회로(5)로부터 보내진 지시에 응답하여 어드레스변환테이블이 있는 해당 페이지의 기억내용을 I/O버퍼 및 글로벌버퍼(6)를 통해서 컨트롤러(20)에 1바이트씩 차례로 출력한다.Next, the control circuit 5 sends a data read instruction to the read control terminal Treadcont of the
한편 컨트롤러(20)는 글로벌버퍼(6)로부터 공급되는 정보를 차례로 판독함으로써 해당 페이지에 기억되어 있는 각 논리어드레스와 각 논리어드레스에 대응 지워진 물리어드레스를 판독한다(스텝 S105).On the other hand, the
그리고, 컨트롤러(20)는 어드레스변환테이블로부터 판독한 논리어드레스 중에 스텝 S102에서 CPU(12)로부터 취득한 논리어드레스와 일치하는 것이 있는지 없 는지를 판별한다(스텝 S106).Then, the
스텝 S106에 있어서 일치하는 논리어드레스가 없다고 판별했을 때 컨트롤러(20)는 글로벌버퍼(6)에 어드레스변환테이블의 다음 페이지의 물리어드레스를 공급하고, 제어회로(5)에 래치신호(Slatch)를 송출하며(스텝 S107), 이 기억장치는 처리를 스텝 S104로 되돌린다.When it is determined in step S106 that there is no matching logical address, the
한편 스텝 S106에 있어서 일치하는 논리어드레스가 있다고 판별했을 때는 처리를 S108로 옮긴다.On the other hand, when it is determined in step S106 that there is a matching logical address, the process shifts to S108.
스텝 S108에 있어서 컨트롤러(20)는 스텝 S106에서 일치한다고 판별한 논리어드레스가 나타내는 물리어드레스(즉 판독대상의 데이터가 있는 페이지 중 선두페이지의 물리어드레스)의 값을 글로벌버퍼(6)에 공급하고, 제어회로(5)에 래치신호(Slatch)를 송출한다.In step S108, the
그러면 플래시메모리유닛(10)은 컨트롤러(20)가 스텝 S103에서 공급한 래치신호(Slatch)에 응답한 경우의 처리와 실질적으로 동일의 처리를 실시하고, 컨트롤러(20)가 글로벌버퍼(6)에 공급한 물리어드레스의 기억내용(즉 판독대상의 데이터 중 아직 판독되어 있지 않은 부분의 선두페이지의 내용)을 글로벌버퍼(6)를 통해서 컨트롤러(20)에 1바이트씩 차례로 공급한다(스텝 S109).Then, the
한편 컨트롤러(20)는 스텝 S109에서 글로벌버퍼(6)가 공급하는 정보를 차례로 판독함으로써 판독하는 대상의 데이터를 판독하고, 판독한 데이터를 버스라인(13)을 통해서 CPU(12)에 공급한다(스텝 S110).On the other hand, the
그리고, 컨트롤러(20)는 스텝 S108의 처리를 개시하여 이후에 판독한 페이지 수가 CPU(12)로부터 공급되어 스텝 S102에서 자기가 기억한 페이지 수에 이르고 있는지 없는지를 판별한다(스텝 S111).Then, the
그리고, 이르고 있지 않다고 판별했을 때 컨트롤러(20)는 제어회로(5)가 비지신호(Sbusy)의 공급을 정지한 타이밍에서 판독대상의 데이터가 있는 다음의 물리어드레스를 글로벌버퍼(6)에 공급하고, 제어회로(5)에 래치신호(Slatch)를 송출한다(스텝 S112). 그리고, 이 기억장치는 처리를 스텝 S109로 되돌린다.When it is determined that it is not reached, the
한편 이르고 있다고 판별하면 컨트롤러(20)는, 예를 들면 버스라인(13)을 통해서 CPU(12)에 종료코드를 보내거나, 도시하지 않는 제어신호를 CPU(12)에 출력함으로써 CPU(12)에 판독종료를 통지한다(스텝 S113).On the other hand, if it is determined that it is reached, the
CPU(12)는 판독종료를 검지하면(스텝 S114), 데이터판독의 처리를 종료한다.The
스텝 S101∼S114의 처리에 의해 메모리셀어레이(1) 자체에 격납된 어드레스변환테이블을 이용하여 논리어드레스에 대응하는 물리어드레스의 위치가 검색되어 그 위치에 있는 데이터가 차례로 판독된다.By the processing of steps S101 to S114, the position of the physical address corresponding to the logical address is searched using the address conversion table stored in the
판독대상의 논리어드레스가 복수 있을 때는 스텝 S101∼S114의 처리를 판독대상의 논리어드레스의 수만큼 반복하여 실시한다.When there are a plurality of logical addresses to be read, the processes of steps S101 to S114 are repeated by the number of logical addresses to be read.
(데이터기록: 새로운 물리어드레스의 결정)(Data Record: Determination of New Physical Address)
메모리셀어레이(1)에 데이터를 기록하는 경우. 이 기억장치는 우선 도 7에 나타내는 물리어드레스결정의 처리를 실시하고, 데이터기록대상의 물리어드레스를 결정하는 처리를 실행한다.When data is recorded in the
CPU(12)는, 예를 들면 우선 기록대상데이터의 크기부터 1페이지의 기억용량 을 512바이트로 하여 기록에 요하는 페이지 수를 산출하고, 기록의 대상으로 하는 논리어드레스를 결정한다.The
그리고, CPU(12)는 기록대상의 논리어드레스 중 가장 번호가 이른 것을 버스라인(13)상에 출력하고, 컨트롤러(20)에 데이터의 기록을 지시하는 커맨드를 보낸다(스텝 S201).Then, the
컨트롤러(20)는 스텝 S201에서 CPU(12)로부터 보내진 커맨드에 응답하여 도 6의 처리에 있어서의 스텝 S103∼S107의 처리와 실질적으로 동일의 처리를 실시한다(스텝 S202).The
즉 플래시메모리유닛(10)으로부터 어드레스변환테이블의 내용을 판독하고, 판독한 내용 중 스텝 S201에서 CPU(12)로부터 취득한 논리어드레스와 일치하는 것이 있는지 없는지를 차례로 판별함으로써 CPU(12)로부터 취득한 해당 논리어드레스에 대응 지워져있는 물리어드레스를 특정한다.That is, the corresponding logic acquired from the
스텝 S202에서 물리어드레스가 특정되면 컨트롤러(20)는 특정된 물리어드레스를 기억한다(스텝 S203). 그리고, 빈블록테이블을 판독하기 위해 글로벌버퍼(6)에 빈블록테이블의 물리어드레스를 공급하고, 제어회로(5)에 래치신호(Slatch)를 보낸다(스텝 S204).If the physical address is specified in step S202, the
제어회로(5)는 스텝 S103에서 래치신호(Slatch)를 공급받았을 경우와 똑같이 하여 X어드레스디코더(4X)에 빈블록테이블이 있는 페이지를 선택시킨다.The control circuit 5 selects a page with an empty block table in the
그리고, 제어회로(5)는 페이지가 선택되면 메모리셀어레이(1)의 판독제어단(Treadcont)에 데이터 판독의 지시를 보낸다. 메모리셀어레이(1)는 지 시를 받으면 빈블록테이블이 있는 해당 페이지의 기억내용을 I/O버퍼(2) 및 글로벌버퍼(6)를 통해서 컨트롤러(20)에 1바이트씩 차례로 출력한다.When the page is selected, the control circuit 5 sends an instruction to read data to the read control terminal Treadcont of the
그리고, 컨트롤러(20)는 글로벌버퍼(6)로부터 공급되는 정보를 차례로 판독함으로써 빈블록테이블을 취득한다(스텝 S205).Then, the
다음에 컨트롤러(20)는 취득한 빈블록테이블의 내용에 의거하여 임의의 빈블록에 속하는 물리어드레스를 특정하고(스텝 S206), 이후 스텝 S206에서 특정한 물리어드레스를 기록대상의 논리어드레스가 나타내는 물리어드레스인 것으로서 취급하는 것으로 결정한다.Next, the
단, 스텝 S206에 있어서는 도 7의 처리를 개시하여 이후 이미 스텝 S206에서 특정된 물리어드레스를 재차 특정하지 않도록 하는 것으로 한다.However, in step S206, the processing of FIG. 7 is started so that the physical address already specified in step S206 is not specified again later.
또 스텝 S206에 있어서는 도 7의 처리를 개시하여 이후에 스텝 S206에서 특정된 물리어드레스가 속하는 블록은 해당 물리어드레스에 데이터가 기록된 후에도 빈블록인 것으로서 취급한다.In step S206, the processing shown in Fig. 7 is started, and the block to which the physical address specified in step S206 belongs is treated as an empty block even after data is recorded in the physical address.
또 데이터기록대상의 물리어드레스로서 논리어드레스가 할당되어 있지 않은 물리어드레스가 선택돼도 좋다.As the physical address to be recorded, a physical address to which no logical address is assigned may be selected.
(데이터기록: 플래시메모리로의 기록)(Data recording: Recording to flash memory)
스텝 S206의 처리를 종료하면 컨트롤러(20)는 도 8에 나타내는 기록처리를 실행한다.When the process of step S206 ends, the
즉 컨트롤러(20)는 스텝 S206의 처리에 의해 물리어드레스를 특정하면 글로벌버퍼(6)에 특정한 물리어드레스를 공급하고, 제어회로(5)에 래치신호(Slatch)를 보낸다(스텝 S211).That is, when the
제어회로(5)는 래치신호(Slatch)에 응답하여 비지신호(Sbusy)의 공급을 정지하고, 컨트롤러(20)에의 리디신호(Sready)의 공급을 개시한다. 그리고, X어드레스디코더(4X)에 스텝 S206에서 특정된 물리어드레스를 선택시킨다.The control circuit 5 stops the supply of the busy signal Sbusy in response to the latch signal Slatch, and starts the supply of the ready signal Sready to the
한편 컨트롤러(20)는 리디신호(Sready)에 응답하여 CPU(12)에 기록대상의 데이터공급을 요구하고(스텝 S212), CPU(12)는 이 요구에 응답하여 기록대상의 데이터 중 선두의 1바이트 분량을 버스라인(13)을 통해서 컨트롤러(20)에 공급한다.On the other hand, the
그리고 컨트롤러(20)는 버스라인(13)을 통해서 CPU(12)로부터 공급된 기록대상의 데이터를 기억하여 글로벌버퍼(6)에 공급하고, 제어회로(5)에 기록신호(Swrite)를 보낸다(스텝 S213).The
제어회로(5)는 기록신호(Swrite)에 응답하여 글로벌버퍼(6)에 공급된 기록대상의 데이터를 래치하도록 글로벌버퍼(6)에 지시하고, 리디신호(Sready)의 공급을 정지하여 컨트롤러(20)에의 비지신호(Sbusy)의 공급을 재개한다. 글로벌버퍼(6)는 버스라인(13)상의 데이터를 래치하여 I/O버퍼(2)에 격납한다.The control circuit 5 instructs the global buffer 6 to latch the data to be recorded supplied to the global buffer 6 in response to the write signal Swrite, and stops the supply of the ready signal Sready to control the controller ( Supply of busy signal Sbusy to 20 is resumed. The global buffer 6 latches data on the
다음에 제어회로(5)는 I/O버퍼(2)에 I/O버퍼(2)가 격납하고 있는 데이터를 데이터입출력단(Tdata)에 출력하도록 지시한다. 지시에 응답하고, I/O버퍼(2)는 글로벌버퍼(6)에 의해 자기에 격납된 데이터를 데이터입출력단(Tdata)에 출력한다.Next, the control circuit 5 instructs the I / O buffer 2 to output the data stored in the I / O buffer 2 to the data input / output terminal Tdata. In response to the instruction, the I / O buffer 2 outputs the data stored in the self by the global buffer 6 to the data input / output terminal Tdata.
다음에 제어회로(5)는 메모리셀어레이(1)에 데이터입출력단(Tdata)에 현재 입력되어 있는 데이터를 기억시키기 위해 기록제어단(Twritecont)에 액티브레벨의 기록제어신호를 출력한다. 기록제어신호에 응답하여 메모리셀어레이(1)는 데이터 입출력단(Tdata)에 입력되어 있는 데이터를 현재 선택되어 있는 페이지의 선두메모리셀에 기록한다.Next, the control circuit 5 outputs an active level write control signal to the write control stage Twritecont in order to store data currently input to the data input / output terminal Tdata in the
메모리셀어레이(1)의 기록제어단(Twritecont)에 액티브레벨의 기록제어신호를 출력한 후 제어회로(5)는 비지신호(Sbusy)의 공급을 정지하고, 컨트롤러(20)에의 리디신호(Sready)의 공급을 재개한다. 컨트롤러(20)는 리디신호(Sready)의 공급 재개를 검지하면 스텝 S214로 처리를 옮긴다.After outputting the active level write control signal to the write control terminal Twritecont of the
스텝 S214에 있어서 컨트롤러(20)는 후속데이터를 요구하는 신호를 보낸 후 바이트 카운터의 값을 참조하여 현재 선택 중의 페이지에 512바이트의 데이터가 기록되었는지 아닌지를 판별한다.In step S214, after sending a signal for requesting subsequent data, the
그리고 512바이트 기록되었다고 판별하면 컨트롤러(20)는 CPU(12)에 다음의 논리어드레스를 보내는 것을 요구한다(스텝 S215).If it is determined that 512 bytes have been recorded, the
그리고, CPU(12)가 다음의 논리어드레스를 버스라인(13)상에 송출하고, 컨트롤러(20)가 그 논리어드레스를 취득하면 컨트롤러(20)는 그 논리어드레스를 스텝 S201에서 취득한 것으로서 취급하는 것으로 하고, 처리를 도 7의 처리에 있어서의 스텝 S202로 되돌린다.When the
한편 512바이트 기록되어 있지 않다고 판별하면 컨트롤러(20)는 CPU(12)에 기록대상의 후속데이터를 요구하는 신호를 보낸다(스텝 S216).On the other hand, if it is determined that 512 bytes are not recorded, the
CPU(12)는 이 신호에 응답하여 기록대상의 후속데이터가 있는지 없는지를 판별하고, 후속데이터가 없다고 판별하면 버스라인(13)에 기록종료를 나타내는 제어코드를 공급한다. 한편 후속데이터가 있다고 판별하면 CPU(12)는 버스라인(13)에 후속의 1바이트의 데이터를 공급한다.In response to this signal, the
컨트롤러(20)는 스텝 S216에서 후속데이터를 요구하는 신호를 보낸 후 CPU(12)로부터 후속의 데이터 또는 기록종료를 나타내는 제어코드를 공급받으면 공급된 것이 기록종료를 나타내는 제어코드인지 아닌지를 판별한다(스텝 S217).When the
그리고, 해당 제어코드가 아니라고 판별하면 컨트롤러(20)는 처리를 스텝 S213으로 되돌리고, 해당 제어코드라고 판별하면 도 9에 나타내는 구데이터소거의 처리로 옮긴다.If it is determined that it is not the control code, the
또한 CPU(12)가 기록대상의 데이터가 아닌 것을 컨트롤러에 통지하는 수법은 임의이고, 제어코드를 버스라인(13)을 통해서 공급하는 수법에 한하지 않고, 예를 들면 다른 임의의 제어선을 통해서 기록대상의 데이터가 아닌 것을 나타내는 제어신호를 컨트롤러에 송출하도록 해도 좋다.In addition, the method of notifying the controller that the
(데이터기록: 구데이터의 소거)(Data record: Erase old data)
기록종료의 제어코드를 취득한 컨트롤러(20)는 도 9에 나타내는 구데이터소거의 처리를 실행한다.The
도 9의 처리를 개시하면 컨트롤러(20)는 우선 이미 판독한 어드레스변환테이블의 내용에 의거하여 스텝 S203에서 자기가 기억한 물리어드레스(즉 스텝 S206에서 새로이 물리어드레스가 대응 지워질 때까지 기록대상의 논리어드레스에 대응 지워져있었던 오래된 물리어드레스)와 동일의 블록에 속하는 물리어드레스를 특정한다(스텝 S221).When the processing of Fig. 9 is started, the
그리고, 이 기억장치는 스텝 S221에서 특정한 물리어드레스의 각각을 판독대 상데이터의 선두페이지를 나타내는 것으로 하고, 이들의 물리어드레스의 각각에 붙어 도 6의 스텝 S108∼S114의 처리에 따라 데이터판독을 실시한다(스텝 S222). 그리고, 컨트롤러(20)는 또한 스텝 S204∼S206 처리와 실질적으로 동일의 처리를 실시하고, 스텝 S222에서 판독한 데이터를 격납하는 물리어드레스를 특정한다(스텝 S223).This storage device assumes that each of the physical addresses specified in step S221 represents the first page of the target data for reading, and attaches to each of these physical addresses in accordance with the processing of steps S108 to S114 in FIG. (Step S222). The
단, 스텝 S223에 있어서는 데이터를 격납하는 물리어드레스로서 판독한 데이터가 격납되어 있었던 블록과 동일의 블록에 속하는 물리어드레스를 특정하지 않도록 한다.However, in step S223, the physical address belonging to the same block as the block in which the read data is stored as the physical address for storing the data is not specified.
다음에 이 기억장치는 스텝 S222에서 판독한 데이터를 스텝 S223에서 특정한 어드레스에 도 8의 처리에 따라 기록한다(스텝 S224).Next, this memory device writes the data read in step S222 to the address specified in step S223 in accordance with the process of Fig. 8 (step S224).
다음에 컨트롤러(20)는 글로벌버퍼(6)에 기억내용을 소거하는 대상의 블록지정을 실시하기 위한 소정의 셋업커맨드를 공급하여 제어회로(5)에 래치신호(Slatch)를 보낸다(스텝 S225).Next, the
제어회로(5)는 스텝 S225에서 래치신호(Slatch)가 공급되었을 때 글로벌버퍼(6)에 공급된 데이터가 셋업커맨드인 것을 검지하여 다음에 글로벌버퍼(6)에 공급되는 데이터를 소거하는 대상블록의 블록어드레스로서 취급하는 것을 결정한다.The control circuit 5 detects that the data supplied to the global buffer 6 is the setup command when the latch signal Slatch is supplied in step S225, and then erases the data supplied to the global buffer 6 next. It decides to treat as block address of.
다음에 컨트롤러(20)는 글로벌버퍼(6)에 기억내용을 소거하는 대상블록(즉 스텝 S203에서 자기가 기억한 물리어드레스가 속하는 블록)의 블록어드레스를 공급하여 제어회로(5)에 래치신호(Slatch)를 보낸다(스텝 S226).
Next, the
제어회로(5)는 스텝 S226에서 공급된 래치신호(Slatch)에 응답하여 글로벌버퍼(6)에 지시를 보내고, 컨트롤러(20)가 공급하고 있는 블록어드레스를 글로벌버퍼(6)에 래치시킨다. 글로벌버퍼(6)에 래치된 블록어드레스는 블록어드레스버퍼(3B)를 통해서 블록어드레스디코더(4B)에 공급되고, 이에 따라 기억내용을 소거하는 대상의 블록이 선택된다.The control circuit 5 sends an instruction to the global buffer 6 in response to the latch signal Slatch supplied in step S226, and latches the block address supplied by the
다음에 컨트롤러(20)는 글로벌버퍼(6)에 기억내용을 소거하기 위한 소정의 소거커맨드를 공급하여 제어회로(5)에 래치신호(Slatch)를 보낸다(스텝 S227).Next, the
제어회로(5)는 스텝 S227에서 래치신호(Slatch)가 공급되었을 때 글로벌버퍼(6)에 공급된 데이터가 소거커맨드인 것을 검지하여 블록어드레스디코더(4B)에 선택되어 있는 블록의 기억내용을 소거하도록 지시한다.The control circuit 5 detects that the data supplied to the global buffer 6 is the erase command when the latch signal Slatch is supplied in step S227, and erases the contents of the block selected by the block address decoder 4B. Instruct them to.
지시를 받은 블록어드레스디코더(4B)는 소거의 대상으로서 선택되어 있는 블록의 데이터를 소거하도록 지시하는 신호를 소거제어회로(1e)에 보낸다. 이에 따라 해당 블록의 기록내용은 소거된다.The block address decoder 4B which has been instructed sends a signal to the erasure control circuit 1e which instructs to erase the data of the block selected as the object of erasing. As a result, the contents of the block are erased.
스텝 S221∼S227의 처리에 의해 메모리셀어레이(1)에 기록된 데이터는 소거되고, 소거된 데이터와 같은 블록에 기억되어 있던 데이터는 다른 페이지로 퇴피된다.By the processing of steps S221 to S227, the data recorded in the
또한 구데이터소거의 처리는 기록처리의 후에 실시되는 것일 필요는 없다. 따라서 예를 들면 데이터를 기록대상의 물리어드레스를 결정한 후, 그 물리어드레스에 새로이 대응 지워진 논리어드레스에 대응 지워져있었던 오래된 물리어드레스가 있는 블록의 기억내용을 우선 소거하고, 이어서 데이터를 기록대상의 물리어드 레스에 새로운 데이터를 기록하도록 해도 좋다.In addition, the old data erasing process need not be performed after the recording process. Thus, for example, after determining the physical address of the data to be recorded, the memory contents of the block in which the old physical address corresponding to the newly deleted logical address is deleted in the physical address are first erased, and then the data is stored in the physical address of the recording target. New data may be recorded in the address.
또 데이터의 소거가 실시되는 장면은 상술의 스텝 S221∼S227의 경우와 같은 데이터의 기록처리의 일환으로서 이루어지는 장면에 한정되지 않는다.The scene in which data is erased is not limited to the scene which is performed as part of the data recording process as in the case of steps S221 to S227 described above.
따라서 데이터의 소거는 새로운 데이터의 기록을 동반하지 않고 실시돼도 좋다.Therefore, erasure of data may be performed without accompanying recording of new data.
구체적으로는 예를 들면 우선 CPU(12)가 데이터의 소거를 지시하는 커맨드를 컨트롤러(20)에 보내고, 소거대상의 논리어드레스를 버스라인(13)을 통해서 컨트롤러(20)에 공급한다.Specifically, for example, the
컨트롤러(20)는 커맨드에 응답하여 도 7 처리의 스텝 S201∼S203에 있어서의 처리와 똑같은 처리를 실시하고, 소거대상의 논리어드레스가 나타내는 물리어드레스(즉 소거대상의 물리어드레스)를 특정한다.In response to the command, the
그리고, 컨트롤러(20)는 특정된 소거대상의 물리어드레스를 스텝 S203에서 특정된 물리어드레스인 것으로서 취급하고, 상술한 스텝 S221∼S227의 처리를 실시한다. 이에 따라 소거대상의 물리어드레스가 속하는 블록의 기록내용이 소거된다.Then, the
또한 상술의 데이터기록처리에 있어서 컨트롤러(20)는 새로이 기록대상의 물리어드레스를 지정할 때 데이터가 최후에 데이터가 기록된 빈블록 이후의 블록에 차례로 기록되고 후속의 블록에 빈블록이 없을 때는 선두블록 이후의 빈블록에 차례로 기록되도록 지정해도 좋다.In the above data recording process, when the
이에 따라 빈블록에의 기록은 사이클링으로 이루어지기 때문에 특정 블록만의 데이터갱신의 빈도가 높게 되는 일이 없고, 따라서 특정 블록의 성능이 집중적 으로 열화(劣化)하는 사태가 방지된다.As a result, the writing to the empty block is performed by cycling, so that the frequency of data update of only a specific block does not become high, thereby preventing the intensive deterioration of the performance of the specific block.
(빈블록테이블 및 어드레스변환테이블 갱신)(Update empty block table and address conversion table)
이상의 처리에 의해 데이터소거나 데이터기록이 완료하면 컨트롤러(20)는 빈블록테이블 및 어드레스변환테이블을 갱신하기 위해 도 10에 나타내는 처리를 개시한다,When data writing or data writing is completed by the above processing, the
도 10에 나타내는 처리에 있어서 우선 컨트롤러(20)는 빈블록테이블을 갱신하기 위해 도 7의 스텝 S201∼S205의 처리와 실질적으로 동일의 처리를 실시하여 플래시메모리유닛(10)으로부터 빈블록테이블을 취득하고, 그 빈블록테이블을 일시 기억한다(스텝 S301).In the process shown in FIG. 10, the
다음에 컨트롤러(20)는 일시 기억한 빈블록테이블의 내용에 의거하여 새로이 빈블록테이블 및 어드레스변환테이블을 기록하기 위한 빈블록을 1개 특정하고, 그 블록의 선두페이지를 기억한다(스텝 S302).Next, the
그리고, 컨트롤러(20)는 일시 기억한 빈블록테이블 중 데이터의 기록이 이루어진 빈블록 및 스텝 S302에서 특정된 빈블록을 나타내는 비트나 스텝 S206 및 S223에서 특정된 물리어드레스가 속하는 블록을 나타내는 비트를 「1」에서 「0」으로 변환한다.Then, the
또 컨트롤러(20)는 빈블록테이블 및 어드레스변환테이블이 현재 있는 블록을 나타내는 비트나 스텝 S227에서 기록내용이 소거된 블록을 나타내는 비트를 「0」에서 「1」로 변환한다(스텝 S303).The
다음에 컨트롤러(20)는 스텝 S302에서 특정한 빈블록의 선두페이지의 물리어 드레스를 글로벌버퍼(6)에 공급하고, 제어회로(5)에 래치신호(Slatch)를 보낸다(스텝 S304).In step S302, the
제어회로(5)는 래치신호(Slatch)에 응답하여 비지신호(Sbusy)의 공급을 정지하고, 컨트롤러(20)에의 리디신호(Sready)의 공급을 개시한다. 그리고, X어드레스디코더(4X)에 컨트롤러(20)로부터 글로벌버퍼(6)에 공급된 물리어드레스를 선택시킨다.The control circuit 5 stops the supply of the busy signal Sbusy in response to the latch signal Slatch, and starts the supply of the ready signal Sready to the
한편 컨트롤러(20)는 리디신호(Sready)에 응답하여 스텝 S303에서 변환완료의 빈블록테이블 중 선두의 1바이트 분량을 글로벌버퍼(6)에 공급하고(스텝 S305), 제어회로(5)에 기록신호(Swrite)를 보낸다(스텝 S306).On the other hand, the
제어회로(5)는 기록신호(Swrite)에 응답하여 컨트롤러(20)로부터 글로벌버퍼(6)에 공급된 데이터를 글로벌버퍼(6)에 래치시켜 리디신호(Sready)의 공급을 정지하고, 컨트롤러(20)에의 비지신호(Sbusy)의 공급을 재개한다. 글로벌버퍼(6)는 버스라인(13)상의 데이터를 래치하여 I/O버퍼(2)에 격납한다.The control circuit 5 latches data supplied from the
다음에 제어회로(5)는 I/O버퍼(2)에 I/O버퍼(2)가 격납하고 있는 데이터를 데이터입출력단(Tdata)에 공급시켜 기록제어단(Twritecont)에 액티브레벨의 기록제어신호를 공급하여 데이터입출력단(Tdata)에 공급되어 있는 데이터를 현재 선택되어 있는 페이지의 선두메모리셀에 기록시킨다.Next, the control circuit 5 supplies the data stored in the I / O buffer 2 to the data input / output terminal Tdata in the I / O buffer 2 to control the write of the active level to the write control terminal Twritecont. A signal is supplied to write data supplied to the data input / output terminal Tdata to the head memory cell of the currently selected page.
그리고, 제어회로(5)는 비지신호(Sbusy)의 공급을 정지하고, 컨트롤러(20)에의 리디신호(Sready)의 공급을 재개한다.Then, the control circuit 5 stops the supply of the busy signal Sbusy and resumes the supply of the ready signal Sready to the
컨트롤러(20)는 리디신호(Sready)의 공급 재개를 검지하면 자기가 일시 기억 하는 빈블록테이블 중 아직 플래시메모리유닛(10)에 공급하고 있지 않은 부분이 남아있는지 없는지를 판별한다(스텝 S307).When the
그리고, 남아있다고 판별하면 컨트롤러(20)는 자기가 일시 기억하는 빈블록테이블의 후속의 1바이트를 글로벌버퍼(6)에 공급하여(스텝 S308) 처리를 스텝 S306으로 옮긴다.If it is determined that it remains, the
한편 남아있지 않다고 판별하면 컨트롤러(20)는 어드레스변환테이블을 갱신하기 위해 어드레스변환테이블의 선두페이지의 물리어드레스를 글로벌버퍼(6)에 공급하고, 제어회로(5)에 래치신호(Slatch)를 공급하여 제어회로(5)로부터 리디신호(Sready)가 공급되는 것을 대기한다(스텝 S309).On the other hand, if it is determined that it is not left, the
그러면 플래시메모리유닛(10)은 스텝 S103에서 래치신호(Slatch)가 공급된 경우와 똑같이 하여 비지신호(Sbusy)의 공급을 정지하여 컨트롤러(20)에 리디신호(Sready)를 공급하고, 어드레스변환테이블 중 컨트롤러(20)가 지시하는 페이지의 기억내용을 컨트롤러(20)에 공급한다.Then, the
한편 컨트롤러(20)는 스텝 S105와 똑같이 하여 플래시메모리유닛(10)으로부터 자기가 공급한 물리어드레스에 해당하는 페이지에 기억되어 있는 각 논리어드레스와 각 논리어드레스에 대응 지워진 물리어드레스를 판독하여 일시 기억한다(스텝 S310).On the other hand, the
다음에 컨트롤러(20)는 일시 기억한 각 논리어드레스 중에 물리어드레스의 할당이 변경될 대상으로서 자기가 기억하고 있는 논리어드레스와 일치하는 것이 있는지 없는지를 판별한다(스텝 S311).
Next, the
일치하는 것이 없다고 판별했을 때, 컨트롤러(20)는 처리를 스텝 S313으로 옮긴다. 일치하는 것이 있다고 판별했을 때, 컨트롤러(20)는 자기가 일시 기억하고 있는 물리어드레스 중 일치한다고 판별한 논리어드레스에 대응 지워져있는 것을 그 논리어드레스에 새로이 대응 지워질 물리어드레스로 변환하고(스텝 S312). 처리를 스텝 S313으로 옮긴다. When it is determined that there is no match, the
예를 들면 데이터 기록의 대상으로서 CPU(12)가 컨트롤러(20)에 공급한 논리어드레스는 스텝 S311에 있어서 물리어드레스의 할당이 변경될 대상으로서 컨트롤러(20)가 기억하는 논리어드레스와 일치한다고 판별된다. 그리고, 스텝 S312에서 해당 논리어드레스가 나타내는 물리어드레스는 스텝 S202에서 특정된 오래된 물리어드레스로부터 스텝 S206에서 특정된 새로운 물리어드레스로 변환된다.For example, the logical address supplied to the
다음에 이 기억장치는 스텝 S301∼S308의 처리와 실질적으로 동일의 처리를 실시함으로써 메모리셀어레이(1) 중 도 10의 처리를 개시하여 이후에서 최신의 기록이 이루어진 페이지의 다음 페이지에 어드레스변환테이블 중 자기가 일시 기억하는 1페이지 분량의 부분을 기록한다(스텝 S313).Next, the memory device starts the processing shown in Fig. 10 of the
기록이 완료하면 컨트롤러(20)는 스텝 S313에서 기록한 페이지의 수가 어드레스변환테이블의 총 페이지 수에 동등한지 아닌지를 판별함으로써 어드레스변환테이블의 기록을 완료했는지 아닌지를 판별한다(스텝 S314).When writing is completed, the
그리고, 완료했다고 판별했을 때는 처리를 스텝 S316으로 옮긴다. 완료하지 않았다고 판별했을 때는 글로벌버퍼(6)에 어드레스변환테이블의 다음 페이지의 물리어드레스를 공급하고, 제어회로(5)에 래치신호(Slatch)를 송출하여(스텝 S315) 처리를 스텝 S310으로 되돌린다.And when it determines with completion, it transfers a process to step S316. When it is determined that it is not completed, the physical address of the next page of the address conversion table is supplied to the global buffer 6, a latch signal (Slatch) is sent to the control circuit 5 (step S315), and the process returns to step S310. .
스텝 S316에 있어서 컨트롤러(20)는 갱신 후의 빈블록테이블 및 어드레스변환테이블의 위치를 기억한다.In step S316, the
그리고, 이 기억장치는 상술한 스텝 S221∼S227과 똑같은 처리에 따라 갱신 전의 빈블록테이블 및 어드레스변환테이블이 있는 논리어드레스의 기억내용을 소거한다(스텝 S317).Then, this memory device erases the contents of the storage of the logical address including the empty block table and the address conversion table before the update in the same processing as in steps S221 to S227 described above (step S317).
또한 이 기억장치에서는 데이터의 기록순서에 그 데이터의 논리어드레스와 물리어드레스의 대응관계를 어드레스변환테이블에 기록하고 있었다. 그리고, 데이터의 판독 때에는 어드레스변환테이블을 차례로 조사하여 논리어드레스와 물리어드레스의 대응관계를 판독하고 있었다. 이에 대해 논리어드레스와 물리어드레스의 대응관계의 판독에 다음과 같은 고속화수법을 이용해도 좋다. In this storage device, the correspondence relationship between the logical address and the physical address of the data is recorded in the address conversion table in the data recording order. In reading the data, the address conversion table was examined in order to read the correspondence relationship between the logical address and the physical address. On the other hand, the following speedup method may be used to read the correspondence relationship between the logical address and the physical address.
예를 들면 컨트롤러(20)는 데이터의 기록 시에 CPU(12)로부터 보내진 논리어드레스로부터 소정의 해시(hash)관계를 사용하여 논리어드레스와 물리어드레스의 대응관계의 어드레스변환테이블 내에서의 기억위치를 구하고, 구한 기억위치에 논리어드레스와 물리어드레스의 대응관계를 기억하도록 플래시메모리유닛(10)을 제어해도 좋다. 그리고, 컨트롤러(20)는 데이터판독 시에도 같은 해시관계를 사용하여 CPU(12)로부터 보내진 논리어드레스로부터 논리어드레스와 물리어드레스의 대응관계의 기억위치를 구하고, 플래시메모리유닛(10) 중 자기가 구한 기억위치로부터 물리어드레스를 판독하면 좋다.For example, the
이 경우 CPU(12)로부터 보내진 논리어드레스로부터 구한 기억위치의 충돌이 일어나는 경우가 발생하는데, 이 때는 구한 기억위치의 다음 기억위치에 논리어드레스와 물리어드레스의 대응관계를 기억해도 충돌한 것을 기억하는 영역을 특별히 설치해도 좋다.In this case, there is a case where a collision of the storage position obtained from the logical address sent from the
이상 설명한 바와 같이 이 기억장치에서는 메모리셀어레이(1) 자신에 어드레스변환테이블과 빈블록테이블을 격납하고, 또한 이들의 테이블을 이용하여 데이터의 판독 및 기록이 가능하게 된다.As described above, in this memory device, the
또한 각 블록의 크기는 상술의 크기에 한하지 않는다. 예를 들면 각 블록은 16페이지로 구성될 필요는 없고, 예를 들면 각 페이지 크기의 정수 배이면 좋다.In addition, the size of each block is not limited to the size mentioned above. For example, each block need not consist of 16 pages, for example, an integer multiple of each page size.
또 이 기억장치가 예를 들면 JEIDA/PCMCIA 인터페이스를 구비한 플래시메모리인 경우 각 페이지의 크기는 컴퓨터(11) 상에서 실행되는 OS(오퍼레이팅 시스템)에 의해 결정되는 것이 일반적인데. 반드시 OS에 의해 결정될 필요는 없다.In addition, when the storage device is, for example, a flash memory having a JEIDA / PCMCIA interface, the size of each page is generally determined by an OS (operating system) running on the
또 각 블록의 크기는 이 기억장치에 고유의 값인 것이 일반적인데, 이 기억장치에 있어서의 각 블록의 크기는 외부로부터의 제어에 의해 지정할 수 있는 것이어도 좋다.In addition, although the size of each block is a value unique to this storage device, the size of each block in this storage device may be specified by control from the outside.
(제 2 실시형태)(2nd embodiment)
제 1 실시형태의 기억장치에서는 빈블록의 위치를 나타내는 정보가 특정의 영역에 집중하여 격납되어 있었다. 그러나 빈블록의 위치를 나타내는 정보는 집중하여 보존될 필요는 없고, 예를 들면 각 빈블록에 다른 빈블록의 위치를 나타내는 정보를 차례로 격납함으로써 빈블록을 연쇄시키는 형태를 취하여 빈블록의 관리를 실시할 수 있다. In the storage device of the first embodiment, information indicating the position of the empty block is concentrated and stored in a specific area. However, the information indicating the positions of the empty blocks does not need to be concentrated and preserved. For example, the empty blocks are managed by storing information indicating the positions of other empty blocks in sequence, thereby managing the empty blocks. can do.
이하 그와 같은 연쇄한 빈블록을 구비하는 제 2 실시형태의 기억장치 및 그 빈블록관리의 처리를 도 11∼도 13을 참조하여 설명한다.Hereinafter, the storage device of the second embodiment having such concatenated free blocks and the processing of the free block management will be described with reference to Figs.
이 실시형태 기억장치의 기본구성은 제 1 실시형태 기억장치의 기본구성과 실질적으로 동일하다. 단 이 실시형태에서는 어드레스변환테이블은 임의의 블록 선두영역에 격납되어 있다.The basic configuration of this embodiment storage device is substantially the same as the basic configuration of the first embodiment storage device. In this embodiment, however, the address conversion table is stored in an arbitrary block head area.
또 각 빈블록의 리던던트부의 소정위치에는 도 11에 나타내는 바와 같이 그 빈블록보다도 논리적으로 뒤에 있는 빈블록 중 가장 가까운 빈블록의 번호를 나타내는 빈블록정보가 기억되어 있다.In the predetermined position of the redundant portion of each free block, as shown in Fig. 11, free block information indicating the number of the closest free block among the free blocks logically behind the free block is stored.
이 빈블록정보에 의해 정의되는 빈블록의 연쇄는 물리적인 빈블록의 배치와는 다른 순번으로 연쇄되어 있다.The concatenation of empty blocks defined by this empty block information is concatenated in a different order from the arrangement of physical empty blocks.
또 제어회로(5)는 빈블록 연쇄 중의 최초 빈블록의 빈블록번호를 기억하고 있다.The control circuit 5 also stores the free block number of the first free block in the free block chain.
이 실시형태의 기억장치에서는 상술과 같이 데이터영역과 리던던트부가 각 페이지 중에 서로 중복하지 않도록 배치되어 있다.In the storage device of this embodiment, as described above, the data area and the redundant part are arranged so as not to overlap each other in each page.
이로 인해 이미 빈블록정보가 기록되어 있는 빈블록에 데이터를 기록하는 처리를, 데이터를 단지 덮어쓰는 것에 의해 실행해도 빈블록의 리던던트부에 기록된 빈블록정보가 파괴되는 일은 없다.For this reason, even if the process of recording data in the empty block in which empty block information has already been recorded is executed by simply overwriting the data, the empty block information recorded in the redundant portion of the empty block is not destroyed.
(제 2 실시형태의 동작)(Operation of the Second Embodiment)
이 기억장치에 데이터를 기록하는 처리는 데이터기록의 처리와 빈블록정보 및 어드레스변환테이블 갱신의 처리를 제하고, 제 1 실시형태의 처리와 동일하다. 그래서 데이터기록처리와 빈블록정보 및 어드레스변환테이블을 갱신하는 처리를 중심으로 도 12∼도 13을 참조하여 이 기억장치의 동작을 설명한다.The process of writing data in this storage device is the same as that of the first embodiment except for the process of writing the data and the process of updating the free block information and the address conversion table. Thus, the operation of this storage device will be described with reference to Figs. 12 to 13, focusing on data writing processing and updating of free block information and address conversion table.
(데이터기록) (Data record)
이 기억장치에 있어서 데이터를 기록할 때는 도 12에 나타내는 스텝 S501부터 처리를 개시한다.When recording data in this storage device, the process starts from step S501 shown in FIG.
스텝 S501에 있어서 CPU(12)는 기록대상의 논리어드레스를 특정한 후 그 논리어드레스 중 가장 번호가 이른 것의 값을 버스라인(13)상에 공급하고, 컨트롤러(20)에 데이터기록을 지시하는 커맨드를 공급한다.In step S501, the
컨트롤러(20)는 스텝 S501에서 공급된 커맨드에 응답하고 버스라인(13)을 통해서 CPU(12)로부터 공급된 논리어드레스를 기록대상의 논리어드레스로서 기억한다(스텝 S502).The
이어서 컨트롤러(20)는 앞에 서술한 스텝 S202의 처리와 실질적으로 동일의 처리를 실시함으로써 자기가 기억하는 기록대상의 논리어드레스에 대응 지워져있는 물리어드레스를 특정한다(스텝 S503).Subsequently, the
다음에 컨트롤러(20)는 자기가 기억하는 데이터를 참조하고, 선두빈블록의 선두페이지를 특정한다(스텝 S504). 그리고, 이후 스텝 S503에서 특정한 물리어드레스와 스텝 S504에서 특정한 페이지에 해당하는 물리어드레스를 서로 교체하여 취급하는 것으로 결정한다(스텝 S505). 이에 따라 기록대상의 물리어드레스는 스텝 S504에서 특정된 연쇄의 선두빈블록에 해당하는 물리어드레스로 된다.Next, the
다음에 컨트롤러(20)는 글로벌버퍼(6)에 스텝 S505에서 기록대상으로서 결정 된 물리어드레스를 공급하고, 제어회로(5)에 해당 물리어드레스가 나타내는 페이지의 선두부터 513바이트 째 이후를 판독하는 것을 지시한다(스텝 S506).Next, the
제어회로(5)는 스텝 S504에서 특정된 페이지를 선택하도록 X어드레스디코더(4X)에 지시하고, 이어서 메모리셀어레이(1)의 판독제어단(Tteadcont)에 데이터 판독의 지시를 보낸다. 메모리셀어레이(1)는 해당 페이지의 리던던트부에 기억되어 있는 빈블록정보를 I/O버퍼(2) 및 글로벌버퍼(6)를 통해서 컨트롤러(20)에 1바이트씩 차례로 공급한다.The control circuit 5 instructs the
컨트롤러(20)는 플래시메모리유닛(10)으로부터 공급된 빈블록정보를 판독하면 그 빈블록정보를 선두의 빈블록의 위치정보로서 기억한다(스텝 S507). 스텝 S507에서 기억된 빈블록정보는 도 12에 나타내는 처리를 거친 후에 새로이 연쇄의 선두로 되는 빈블록을 나타낸다.When the
이어서 이 기억장치는 스텝 S505에서 기록대상으로서 결정한 페이지에 해당하는 물리어드레스를 제 1 실시형태에 있어서의 스텝 S206에서 특정된 물리어드레스로서 취급하고, 상술의 스텝 S211∼S217의 처리와 실질적으로 동일의 처리를 실시하여 데이터를 기록한다(스텝 S508).Subsequently, the storage device treats the physical address corresponding to the page determined as the recording target in step S505 as the physical address specified in step S206 in the first embodiment, and is substantially the same as the processing of steps S211 to S217 described above. Processing is performed to record data (step S508).
그리고, 스텝 S508의 처리 중 스텝 S217에 해당하는 처리에 있어서 CPU(12)로부터 기록종료를 나타내는 제어코드가 공급되었다고 판별하면 컨트롤러(20)는 데이터기록의 처리를 종료한다.When the control code indicating the end of recording is supplied from the
또 스텝 S214에 해당하는 처리에 있어서 현재 선택 중의 페이지에 512바이트의 데이터가 기록되었다고 판별하면 컨트롤러(20)는 CPU(12)에 다음 논리어드레스 의 공급을 요구하는 신호를 보내고, CPU(12)는 이 신호에 응답하여 다음의 논리어드레스를 버스라인(13)상에 송출한다. 그리고 컨트롤러(20)는 버스라인(13)을 통해서 CPU(12)로부터 다음의 논리어드레스를 취득하면 그 논리어드레스를 기록대상의 논리어드레스로서 종전 기억하고 있었던 논리어드레스에 덮어써서 기억하고, 처리를 스텝 S503으로 되돌린다.If it is determined in the processing corresponding to step S214 that 512 bytes of data are recorded on the page currently being selected, the
이상 설명한 스텝 S501∼S508의 처리에 의해 기록대상의 논리어드레스가 나타내는 물리어드레스가 빈블록 연쇄의 선두에서 차례로 특정되고, 특정된 빈블록에 데이터의 기록이 실시된다.By the processes of steps S501 to S508 described above, the physical addresses indicated by the logical addresses to be recorded are sequentially specified at the beginning of the free block chain, and data is recorded in the specified free blocks.
(빈블록정보 및 어드레스변환테이블 갱신)(Free block information and address conversion table update)
컨트롤러(20)는 빈블록테이블 및 어드레스변환테이블을 갱신할 때 도 13의 스텝 S601부터 처리를 개시한다.The
도 13에 나타내는 처리에 있어서 우선 컨트롤러(20)는 자기가 기억하는 데이터를 참조하고, 선두빈블록의 선두페이지를 특정한다(스텝 S601).In the process shown in FIG. 13, the
다음에 컨트롤러(20)는 스텝 S601에서 특정한 페이지의 물리어드레스를 글로벌버퍼(6)에 공급하고, 제어회로(5)에 래치신호(Slatch)를 보낸다(스텝 S602).Next, the
제어회로(5)는 래치신호(Slatch)에 응답하고, 글로벌버퍼(6)에 공급된 물리어드레스가 나타내는 페이지를 선택하도록 X어드레스디코더(4X)에 지시하며, 페이지가 선택되면 메모리셀어레이(1)의 판독제어단(Treadcont)에 데이터판독의 지시를 보낸다. 메모리셀어레이(1)는 해당 페이지의 기억내용을 I/O버퍼(2) 및 글로벌버퍼(6)를 통해서 컨트롤러(20)에 1바이트씩 차례로 출력한다.
The control circuit 5 responds to the latch signal (Slatch), instructs the
그리고, 컨트롤러(20)는 글로벌버퍼(6)로부터 공급되는 해당 기억내용 중 선두부터 513바이트 째 이후를 차례로 판독함으로써 판독된 페이지의 리던던트부에 기억되어 있는 빈블록정보를 취득한다(스텝 S603).The
컨트롤러(20)는 빈블록정보를 판독하면 그 빈블록정보를 스텝 S601에서 특정한 선두빈블록의 선두페이지의 정보에 덮어쓰기 한다. 즉 선두빈블록의 위치정보를 그 다음 빈블록의 위치정보에 갱신한다(스텝 S604).When the
다음에 컨트롤러(20)는 앞에 서술한 스텝 S309∼S315의 처리를 실행하여 어드레스변환테이블의 위치를 기억한다(스텝 S606).Next, the
단 갱신 후의 어드레스변환테이블은 스텝 S601에서 특정되어 현재 선택되어 있는 페이지에 해당하는 논리어드레스에 기록한다. 또 갱신될 정보에는 논리어드레스가 새로이 할당된 물리블록정보 외, 앞에서 서술한 스텝 S505에 있어서의 물리어드레스의 변환결과의 정보가 포함된다.However, the updated address conversion table is recorded in the logical address corresponding to the page currently specified in step S601 and currently selected. The information to be updated includes, in addition to the physical block information newly assigned the logical address, the information of the conversion result of the physical address in step S505 described above.
다음에 컨트롤러(20)는 빈블록정보를 추가하기 위해 자기가 기억하는 데이터를 참조하고, 선두빈블록의 선두페이지를 특정한다(스텝 S607).Next, the
다음에 컨트롤러(20)는 자기가 현재 특정하고 있는 페이지의 물리어드레스를 글로벌버퍼(6)에 공급하고, 제어회로(5)에는 래치신호(Slatch)를 보낸다(스텝 S608).Next, the
제어회로(5)는 래치신호(Slatch)에 응답하고, 글로벌버퍼(6)에 공급된 물리어드레스가 나타내는 페이지를 X어드레스디코더(4X)에 선택시켜 메모리셀어레이(1)의 판독제어단(Treadcont)에 데이터판독의 지시를 보내어 메모리셀어레이(1)에 해 당 페이지의 기억내용을 I/O버퍼(2) 및 글로벌버퍼(6)를 통해서 컨트롤러(20)에 차례로 공급시킨다.The control circuit 5 responds to the latch signal (Slatch), selects the page indicated by the physical address supplied to the global buffer 6 to the
그리고, 컨트롤러(20)는 글로벌버퍼(6)로부터 공급되는 정보 중 선두부터 513바이트 째 이후를 차례로 판독함으로써 해당 페이지의 리던던트부에 기억되어 있는 정보를 취득한다(스텝 S609).Then, the
다음에 컨트롤러(20)는 스텝 S609에서 판독한 정보 중에 빈블록정보가 있는지 없는지를 판별한다(스텝 S610).Next, the
빈블록정보가 있을 때 컨트롤러(20)는 그 빈블록정보가 나타내는 다음 빈블록의 선두페이지를 특정하고(스텝 S611), 처리를 스텝 S608로 되돌린다.When there is free block information, the
빈블록정보가 없을 때 현재 특정되어 있는 페이지는 말미 빈블록의 선두페이지이다.When there is no free block information, the currently specified page is the first page of the last free block.
이 때 컨트롤러(20)는 상술의 스텝 S301∼S308의 처리와 실질적으로 똑같은 처리를 실시하고, 선두의 512바이트가 공백으로 513바이트 째 이후에 빈블록정보로서 갱신 전의 오래된 어드레스변환테이블이 현재 격납되어 있는 블록의 정보를 포함하고 있는 데이터를 현재 특정되어 있는 페이지에 기록시키도록 플래시메모리유닛(10)을 제어한다(스텝 S612).At this time, the
이에 따라 오래된 어드레스변환블록이 현재 격납되어 있는 블록은 빈블록연쇄의 말미에 편입된다.Accordingly, the block in which the old address translation block is currently stored is incorporated at the end of the free block chain.
다음에 이 기억장치는 상술한 스텝 S221∼S227과 똑같은 처리에 따라 갱신 전의 어드레스변환테이블이 있는 블록의 기억내용을 소거한다(스텝 S613). 이에 따라 오래된 어드레스변환블록이 격납되어 있던 블록은 빈블록으로 된다.Next, the memory device deletes the contents of the block in which the address conversion table before updating is performed in the same processing as in steps S221 to S227 described above (step S613). As a result, the block in which the old address translation block is stored becomes an empty block.
이상 설명한 스텝 S601∼S613의 처리에 의해 빈블록정보 및 어드레스변환테이블은 갱신된다.The free block information and the address conversion table are updated by the processing of steps S601 to S613 described above.
또한 메모리셀어레이(1)를 초기화하는 경우 컨트롤러(20)는 일단 메모리셀어레이(1)의 전체 블록의 내용을 소거한 후 각 블록의 리던던트부에 빈블록연쇄정보를 기록하도록 플래시메모리유닛(10)을 제어한다.When the
이 때 컨트롤러(20)는 도 11에 나타내는 바와 같이 빈블록이 띄엄띄엄 연쇄되도록 연쇄정보를 기록한다. 연쇄정보를 이와 같은 구성으로 하여 데이터의 기록위치를 분산시키면 일부의 영역에만 반복하여 데이터가 기록되는 사태를 방지할 수 있다.At this time, the
또한 본 발명은 상기 실시형태에 한정되지 않고 여러 종류의 변형 및 응용이 가능하다.In addition, this invention is not limited to the said embodiment, A various kind of deformation | transformation and application are possible.
예를 들면 상기 실시형태에서는 이해를 용이하게 하기 위해 CPU(12)와 기억장치 사이의 데이터의 수수를 1바이트 단위로 실시했는데, 2바이트, 4바이트 단위로 실시하는 등 데이터의 전송단위는 임의이다. 똑같이 메모리셀의 용량도 1바이트에 한정되지 않고 2바이트 등이어도 좋다.For example, in the above embodiment, in order to facilitate understanding, the data transfer unit between the
또 상기 실시형태의 기억장치에 사용되고 있는 메모리셀어레이(1)는 1개 칩뿐이었다. 그러나 복수 칩의 플래시메모리를 갖는 기억장치에 본 발명을 적용하는 것도 가능하다. 이 경우 어드레스변환테이블(및 빈블록테이블)을 어느 것인가 1개 칩의 플래시메모리의 어느 것인가 1개의 블록 내에 기억하고, 또한 컨트롤러(20)가 어드레스변환테이블(및 빈블록테이블)을 기억하는 칩의 정보를 기억하면 좋다. 또 상기의 제 2 실시형태와 같이 빈블록정보를 연쇄정보에 의해 구성하는 경우에는 다음의 빈블록이 있는 칩과 블록번호를 나타내는 연쇄정보를 리던던트영역에 기록하면 좋다.The
또한 상기 실시형태에서는 메모리셀어레이(1)는 NAND형의 것에 의해 구성되어 있었는데, NOR형의 것에 의해 구성할 수도 있다.In the above embodiment, the
또 상기 실시형태에서는 기억장치 내에 제어회로(5)를 배치했는데, 제어회로(5)가 실행하는 동작을 컨트롤러(20)나 CPU(12)에 실시시킴으로써 제어회로(5)를 사용하지 않고 메모리셀어레이(1)로의 액세스를 제어하는 것도 가능하다. 또 컨트롤러(20)가 실행하는 동작을 CPU(12)에 실시시킴으로써 컨트롤러(20)를 사용하지 않고 메모리셀어레이(1)로의 액세스를 제어하는 것도 가능하다.In the above embodiment, the control circuit 5 is arranged in the storage device, but the
제어회로(5)나 컨트롤러(20)의 동작을 CPU(12)가 실행하는 경우 상술의 제어 동작을 실행하기 위한 프로그램을 격납한 매체(플로피디스크, CD-ROM 등)로부터 해당 프로그램을 컴퓨터(11)에 인스톨하고, OS(오퍼레이팅 시스템) 상에서 동작시킴으로써 상술의 처리를 실행시킨다.When the
이상 설명한 바와 같이 본 발명에 따르면 빈블록의 위치를 나타내는 정보나 논리어드레스와 물리어드레스의 대응관계를 나타내는 정보 등이 블록소거형 기억매체에 기억된다. 이로 인해 빈블록의 위치를 나타내는 정보나 논리어드레스나 물리어드레스의 대응관계를 나타내는 정보 등을 기억하는 기억매체를 별도로 준비할 필 요가 없다.As described above, according to the present invention, information indicating the position of the empty block, information indicating the correspondence relationship between the logical address and the physical address, and the like are stored in the block erasing storage medium. Therefore, it is not necessary to separately prepare a storage medium for storing information indicating the position of the empty block or information indicating the correspondence relationship between logical addresses and physical addresses.
Claims (24)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP97-335596 | 1997-12-05 | ||
JP33559697 | 1997-12-05 | ||
PCT/JP1998/005441 WO1999030239A1 (en) | 1997-12-05 | 1998-12-02 | Memory and access method |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20000070451A KR20000070451A (en) | 2000-11-25 |
KR100614469B1 true KR100614469B1 (en) | 2006-08-25 |
Family
ID=18290361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019997006688A KR100614469B1 (en) | 1997-12-05 | 1998-12-02 | Storage device |
Country Status (6)
Country | Link |
---|---|
US (1) | US6477632B1 (en) |
EP (1) | EP0973097A4 (en) |
JP (1) | JP3680142B2 (en) |
KR (1) | KR100614469B1 (en) |
TW (1) | TW400476B (en) |
WO (1) | WO1999030239A1 (en) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000311469A (en) * | 1999-02-26 | 2000-11-07 | Matsushita Electric Ind Co Ltd | Disk controller and disk device using the same |
JP3443093B2 (en) * | 2000-12-27 | 2003-09-02 | 株式会社東芝 | Digital recording and playback device |
JP4772214B2 (en) * | 2001-06-08 | 2011-09-14 | ルネサスエレクトロニクス株式会社 | Nonvolatile memory device and rewrite control method thereof |
KR100437609B1 (en) * | 2001-09-20 | 2004-06-30 | 주식회사 하이닉스반도체 | Method for address translation of semiconductor memory device and apparatus the same |
US6678785B2 (en) * | 2001-09-28 | 2004-01-13 | M-Systems Flash Disk Pioneers Ltd. | Flash management system using only sequential write |
EP1523711A1 (en) * | 2002-06-19 | 2005-04-20 | 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 |
JP3694501B2 (en) * | 2002-10-30 | 2005-09-14 | 松下電器産業株式会社 | Storage device |
US20050050285A1 (en) * | 2003-08-26 | 2005-03-03 | Haas William Robert | Memory control system and method for installing new memory |
JP2005092678A (en) * | 2003-09-19 | 2005-04-07 | Matsushita Electric Ind Co Ltd | Semiconductor memory card and method for deleting data in nonvolatile memory |
JP2005285191A (en) * | 2004-03-29 | 2005-10-13 | Nec Electronics Corp | Nonvolatile semiconductor memory device and its driving method |
US7237062B2 (en) * | 2004-04-02 | 2007-06-26 | Seagate Technology Llc | Storage media data structure system and method |
JP4157501B2 (en) * | 2004-06-30 | 2008-10-01 | 株式会社東芝 | Storage device |
JP4637524B2 (en) * | 2004-07-27 | 2011-02-23 | ルネサスエレクトロニクス株式会社 | Memory card |
KR100622349B1 (en) * | 2004-08-04 | 2006-09-14 | 삼성전자주식회사 | Flash Memory for performing Bad Block Management and Method for performing Bad Block Management of Flash Memory |
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 (en) * | 2004-12-24 | 2011-11-02 | 富士通セミコンダクター株式会社 | File information writing processing method and program |
KR100630735B1 (en) | 2005-01-14 | 2006-10-02 | 삼성전자주식회사 | Method for providing selective access to plural devices and apparatus thereof |
US8072987B1 (en) * | 2005-09-30 | 2011-12-06 | Emc Corporation | Full array non-disruptive data migration |
US8107467B1 (en) | 2005-09-30 | 2012-01-31 | Emc Corporation | Full array non-disruptive failover |
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 |
WO2009090692A1 (en) * | 2008-01-16 | 2009-07-23 | Panasonic Corporation | Semiconductor memory device and semiconductor memory system |
TWI415134B (en) * | 2008-04-10 | 2013-11-11 | Phison Electronics Corp | Data accessing method, controller and system using the same |
TWI381393B (en) * | 2008-10-06 | 2013-01-01 | Phison Electronics Corp | Block management and replacement method, flash memory storage system and controller using the same |
TWI427476B (en) * | 2009-02-24 | 2014-02-21 | Silicon Motion Inc | Flash memory device and method for accessing a flash memory |
CN101556556B (en) * | 2009-05-22 | 2012-02-22 | 炬力集成电路设计有限公司 | Data storage method and device |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR930020469A (en) * | 1992-03-31 | 1993-10-19 | 사또 후미오 | Nonvolatile Semiconductor Memory Device |
JPH06187205A (en) * | 1992-12-18 | 1994-07-08 | Nikon Corp | Method for accessing eeprom and surveying equipment |
WO1994020906A1 (en) * | 1993-03-08 | 1994-09-15 | M-Systems Ltd. | Flash file system |
JPH07134674A (en) * | 1993-11-10 | 1995-05-23 | Matsushita Graphic Commun Syst Inc | Memory managing device and facsimile equipment using the same |
JPH08249225A (en) * | 1995-03-10 | 1996-09-27 | Nec Corp | Memory management device |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61245253A (en) * | 1985-04-24 | 1986-10-31 | Hitachi Ltd | Input and output control system for virtual computer |
JPS6319051A (en) * | 1986-07-11 | 1988-01-26 | Fujitsu Ltd | Memory acquiring system |
GB2251323B (en) * | 1990-12-31 | 1994-10-12 | Intel Corp | Disk emulation for a non-volatile semiconductor memory |
JP2582487B2 (en) * | 1991-07-12 | 1997-02-19 | インターナショナル・ビジネス・マシーンズ・コーポレイション | External storage system using semiconductor memory and control method thereof |
JP3178909B2 (en) * | 1992-01-10 | 2001-06-25 | 株式会社東芝 | Semiconductor memory device |
US5375222A (en) * | 1992-03-31 | 1994-12-20 | Intel Corporation | Flash memory card with a ready/busy mask register |
US5485595A (en) | 1993-03-26 | 1996-01-16 | Cirrus Logic, Inc. | Flash memory mass storage architecture incorporating wear leveling technique without using cam cells |
DE4410060B4 (en) * | 1993-04-08 | 2006-02-09 | Hewlett-Packard Development Co., L.P., Houston | Translating device for converting a virtual memory address into a physical memory address |
JP2971302B2 (en) * | 1993-06-30 | 1999-11-02 | シャープ株式会社 | Recording device using EEPROM |
JPH08137634A (en) * | 1994-11-09 | 1996-05-31 | Mitsubishi Electric Corp | Flash disk card |
JP3464836B2 (en) * | 1995-01-19 | 2003-11-10 | 富士通株式会社 | Memory management device for storage device |
US5978808A (en) * | 1995-12-27 | 1999-11-02 | Intel Corporation | Virtual small block file manager for flash memory array |
JPH09198195A (en) * | 1996-01-19 | 1997-07-31 | Nec Corp | Disk device capable of rearranging data |
JP3321587B2 (en) * | 1996-02-01 | 2002-09-03 | 東京エレクトロンデバイス株式会社 | Data rewriting method and memory control device in flash memory system |
JPH09212411A (en) * | 1996-02-06 | 1997-08-15 | Tokyo Electron Ltd | Memory system |
-
1998
- 1998-12-02 WO PCT/JP1998/005441 patent/WO1999030239A1/en not_active Application Discontinuation
- 1998-12-02 JP JP53061499A patent/JP3680142B2/en not_active Expired - Fee Related
- 1998-12-02 US US09/319,621 patent/US6477632B1/en not_active Expired - Fee Related
- 1998-12-02 EP EP98957137A patent/EP0973097A4/en not_active Withdrawn
- 1998-12-02 KR KR1019997006688A patent/KR100614469B1/en not_active IP Right Cessation
- 1998-12-03 TW TW087120109A patent/TW400476B/en not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR930020469A (en) * | 1992-03-31 | 1993-10-19 | 사또 후미오 | Nonvolatile Semiconductor Memory Device |
JPH06187205A (en) * | 1992-12-18 | 1994-07-08 | Nikon Corp | Method for accessing eeprom and surveying equipment |
WO1994020906A1 (en) * | 1993-03-08 | 1994-09-15 | M-Systems Ltd. | Flash file system |
JPH07134674A (en) * | 1993-11-10 | 1995-05-23 | Matsushita Graphic Commun Syst Inc | Memory managing device and facsimile equipment using the same |
JPH08249225A (en) * | 1995-03-10 | 1996-09-27 | Nec Corp | Memory management device |
Also Published As
Publication number | Publication date |
---|---|
EP0973097A1 (en) | 2000-01-19 |
JP3680142B2 (en) | 2005-08-10 |
EP0973097A4 (en) | 2000-04-12 |
KR20000070451A (en) | 2000-11-25 |
TW400476B (en) | 2000-08-01 |
WO1999030239A1 (en) | 1999-06-17 |
US6477632B1 (en) | 2002-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100614469B1 (en) | Storage device | |
KR100375533B1 (en) | Data processing system, block erasing type memory device and memory medium storing program for controlling memory device | |
EP0712067B1 (en) | Flash disk card | |
EP1729304B1 (en) | Space management for managing high capacity nonvolatile memory | |
EP1739683B1 (en) | Space management for managing high capacity nonvolatile memory | |
US7404031B2 (en) | Memory card, nonvolatile semiconductor memory, and method of controlling semiconductor memory | |
US6202138B1 (en) | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices | |
US6757800B1 (en) | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices | |
US7424593B2 (en) | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices | |
EP1242868B1 (en) | Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time | |
US5946714A (en) | Semiconductor storage device utilizing address management tables and table state maps for managing data storage and retrieval | |
EP1323165B1 (en) | Flash memory architecture with separate storage of overhead and user data | |
US6459644B2 (en) | Semiconductor memory device with block alignment function | |
US20050055493A1 (en) | [method for accessing large block flash memory] | |
KR20040023643A (en) | Flash memory apparatus and method for merging data stored in the same | |
JP3421581B2 (en) | Storage device using nonvolatile semiconductor memory | |
US20080209161A1 (en) | Storage device and method of mapping a nonvolatile memory based on a map history | |
US20090125668A1 (en) | Management of erased blocks in flash memories | |
US20040255076A1 (en) | Flash memory controller, memory control circuit, flash memory system, and method for controlling data exchange between host computer and flash memory | |
JPH05150913A (en) | Silicon disk with flash memory as storage medium | |
US6898680B2 (en) | Minimization of overhead of non-volatile memory operation | |
KR100490603B1 (en) | Control method and apparatus for operations of flash memory system | |
KR20210149444A (en) | Memory and operation method of memory |
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 |