WO1995018407A1 - Solid state memory system - Google Patents

Solid state memory system Download PDF

Info

Publication number
WO1995018407A1
WO1995018407A1 PCT/GB1994/002825 GB9402825W WO9518407A1 WO 1995018407 A1 WO1995018407 A1 WO 1995018407A1 GB 9402825 W GB9402825 W GB 9402825W WO 9518407 A1 WO9518407 A1 WO 9518407A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
memory
cache
sector
storage system
Prior art date
Application number
PCT/GB1994/002825
Other languages
French (fr)
Inventor
Alexander Roger Deas
Original Assignee
Memory Corporation Plc
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
Application filed by Memory Corporation Plc filed Critical Memory Corporation Plc
Priority to AU13228/95A priority Critical patent/AU1322895A/en
Publication of WO1995018407A1 publication Critical patent/WO1995018407A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system

Abstract

A storage device that connects to a standard computer system and communicates with a computer system bus, being capable of receiving, storing and retrieving data intended for a magnetic disk drive; the storage device comprising: a main memory; a cache memory; block transfer buffer means to store 512 bytes of data; interface means to receive and store address, data and control information from computer system; look-up table means for storing one physical block address corresponding to each address sent by computer system, and to indicate whether the physical block address is for cache or main memory; additional memory means for storing information on the addresses of cache and also main memory which are unused and suitable for writing to; control means to access a record in look-up table means using address sent by computer system, and to determine a physical block address corresponding to standard address format.

Description


  
 



   SOLID STATE MEMORY SYSTEM
The invention relates to a solid state memory system which is applicable in particular, though not exclusively, to non byte-erasable EEPROM technologies.



  Many common memory storage devices are based on rotating storage media such as the magnetic disk drive. The magnetic disk drive contains a number of thin platters which are stacked in a vertical manner and rotate about a spindle.



  Each platter consists of a metal, glass or plastics e. g. polycarbonate disk which is covered on both sides with magnetic recording material. A number of concentric tracks are located on each side of the platter, with each track organised into sectors. A sector is the smallest unit that can be written to or read from.



  To read from or write to the hard disk, the platters within the disk must be rotated and the arms, which usually straddle the platters, must be moved to the correct location. The hard disk system uses a comparatively large amount of power because of the physical movement involved, i. e. the need to rotate the platters and move the arms.



  This consideration is of particular importance when hard disks are to be used in portable computers. Portable computers rely on batteries to provide the power to actuate the disk drive; however, these batteries only last a short time if the disk drive is used frequently. For this reason many portable computers have means for stopping the disk drive rotating if it has not been used for a certain period of time, for example thirty seconds. Another disadvantage associated with the hard disk is the comparatively slow access time for reading or writing data. A further disadvantage associated with disk drive units is that they are not robust because they have moving parts which can be jarred; thus there is the possibility of a hard disk crash if the drive unit is knocked. Hard disk drives are also comparatively heavy.



  To overcome these disadvantages, solid state memory devices  are sometimes used as storage media. Solid state devices have the advantages of light weight, low power consumption, high reliability, robustness, and high performance.



  If volatile memory is used as the solid state media, however, power must be applied to the cells more or less continuously to ensure that data is not lost once the computer is turned off. Non-volatile memory can be used, but the disadvantage associated with some types of nonvolatile memory is that individual bits or bytes cannot have their logic values changed in isolation from the neighbouring bits or bytes. In other words, comparatively large areas of the memory need to be erased at a time.



  Those types of non-volatile memory which are bit or byte erasable are larger than the non-byte erasable type; therefore, they provide lower memory capacity for the same physical area. Another disadvantage associated with nonvolatile memory is that it tends to take longer to write to non-volatile memory than to volatile memory, and a particularly significant problem is the slow erasing of some EEPROM, in particular flash EPROM, memories, coupled to the further problem of limited life in the sense of only being able to withstand a limited number of erasure cycles.



  Much computer software and hardware currently available is designed to work only with hard disk drives. Therefore, it is important to be able to provide a memory system which appears to be a hard disk, even though it is actually a solid state memory device. One problem in making Flash
EPROM memory appear like a hard disk is that Flash memory is normally manufactured with a more or less large predetermined minimum erasable data block size, whereas a hard disk stores data in relatively small sectors of predetermined size, typically 512 bytes.



  The prior art includes references to the idea of having a solid state memory which can take the place of a hard disk.



  However, these systems rely on the Flash memory having the correct sector size, hence the designs are constrained to use Flash memory of that sector size, i. e. Flash memory  customized for the application. For emulating a hard disk, a Flash memory system would be obliged to use a sector size equal to that of the disk (typically 512 bytes). EP392895A claims a device which emulates a hard disk, by using an
EEPROM with a minimum erasable block size corresponding to a logical hard disk sector size of 512 bytes.



  It is an object of the present invention to avoid or minimize one or more of the above disadvantages. It is a further object to provide a memory system that performs the necessary memory management and converts addresses which are intended for a hard disk (Logical Disk Sector Address also sometimes referred to as Logical Block Address) to a suitable format for use with a solid state memory (Physical
Address).



  According to the present invention there is provided a solid state mass data storage system for connection to an input/output connection interface of a host computer system, the connection interface being configured for coupling to a disk drive and the storage system being arranged to emulate such a disk drive, the system comprising: a primary memory arranged to store data in minimum erasable size data blocks which are larger than the sectors of the emulated disk drive; a cache arranged for storing data temporarily and having a storage capacity of at least one said minimum erasable size data block; memory mapping means for storing mapping data for mapping logical disk sector addresses of the emulated disk drive to respective physical addresses in the primary memory or the cache;

   and host computer interface means for coupling to the host computer input/output connection interface and having control means arranged for determining from the memory mapping means in the case of receipt of read instructions from the host computer, the physical address corresponding to a received logical disk sector address and enabling the host computer to access data stored at that physical  address, and, in the case of receipt of write instructions from the host computer, for writing received data having a given logical address to the cache or the primary memory, according to predetermined memory management criteria, at an existing corresponding physical address or, if required by said criteria, at a new physical address and updating the memory mapping means to indicate the new corresponding physical address,

   the control means being further arranged for copying selectively at least one said minimum erasable size data block to the cache from the primary memory and erasing selectively that data block from the primary memory, in accordance with said predetermined memory management criteria and updating the memory mapping means accordingly, to allow subsequent copying and remapping of data to be stored from said cache to said primary memory, as and when required.



  An advantage of the present invention is that it enables a solid state memory card system based on a Flash memory of relatively large minimum erasable data block size to replace a hard disk, without any loss of functionality or performance, and it gives the added benefits associated with solid state memory, namely: low power consumption, low weight, high reliability and sturdiness.



  Embodiments of the present invention may provide a storage device that connects to a standard computer system in a manner to communicate with a computer system bus, said storage device being capable of receiving and storing data intended for a magnetic disk drive and also being capable of retrieving said data in response to a read request on said system bus.



  A prefered embodiment of the present invention comprises a main memory containing one or more FLASH EPROMs, each of said FLASH EPROMs containing a plurality of minimum erasable size data blocks containing a large plurality of addressable sectors; a cache memory which can be written to faster than said main memory; data transfer buffer means to store at  least one sector sized data segment; interface means to receive and store address, data and control information from said standard computer system; look-up table means for storing one physical sector address corresponding to each logical disk sector address sent by said standard computer system, and to indicate whether said physical address is for said cache memory or said main memory;

   additional memory means for storing information on the addresses of said cache memory which are unused and suitable for writing to, and for storing memory management information including information on the addresses of said main memory which are unused and suitable for writing to; control means to determine when said interface means has received a read or write request from said standard computer system, to access a record in said look-up table means using the logical disk sector address sent by said standard computer system, to determine a physical address corresponding to said standard address format, in the case when a read command is requested to ensure that the appropriate block of data from said main memory or said cache memory is contained in the block transfer buffer means,

   and when a write command is requested to ensure that the appropriate data is transferred from said interface means to said data transfer buffer means then to said cache memory, and to update the relevant entries in said additional memory means.



  For a better understanding of the present invention and to show how the same may be carried into effect, reference will now be made, by way of example, without loss of generality to the accompanying drawings, in which:
Figure 1 shows a block diagram of a solid state memory system arranged to emulate a hard disk drive; and
Figure 2 shows a memory map for a cache device of the system of Figure 1.



  Figure 1 shows in block diagram form: a Disk Interface 1 that conforms to the disk interface standard which is being emulated by the memory system (e. g. IDE or SCSI), a Data
Transfer Buffer 2, a Microcontroller 3, a Cache device 4  containing the look-up tables and a cache or temporary data store, a Flash EPROM semiconductor memory array 5, an
Address Bus 6 between the host processor and the memory system, a bi-directional Data Bus 7 between the host processor and the memory system, a Control Bus 8 between the host processor and the memory system, a second Address Bus 9 between the Disk Interface Block 1 and the Data Transfer
Buffer 2, a second bi-directional Data Bus 10 between the
Disk Interface Block 1 and the Data Transfer Buffer 2, a second Control Bus 11 between the Disk Interface Block 1 and the Data Transfer Buffer 2,

   a third Address Bus 12 from the
Microcontroller 3 which goes to the Disk Interface 1, the
Cache device 4, and Flash Memory Array 5, a third bidirectional Data Bus 13 from the Microcontroller 3 which goes to the Disk Interface 1, the Data Transfer Buffer 2, the Cache device 4 and the Flash Memory Array 5, and a third Control Bus 14 from the Microcontroller 3 which goes to the Disk Interface 1, the Data Transfer Buffer 2, the
Cahce device 4 and Flash Memory Array 5. The Disk
Interface 1, the Data Transfer Buffer 2, and the
Microcontroller 3 collectively make the Interface and
Control Block (ICB) 15 which may conveniently be implemented as a single ASIC (Application Specific Inteprated Circuit).



  The Microcontroller 3 and software used therein could be replaced by firm-ware in the form a state-machine which performs the functions of the Microcontroller, although the state-machine may perform some tasks concurrently whereas the Microcontroller performs tasks sequentially.



  The Disk Interface 1 is responsible for communicating directly with the host processor. For this function it has numerous registers (depending on the disk standard being emulated) some of which will contain unique logical disk sector address information in Cylinder, Head, and Sector (CHS) addressing mode or Logical Block Address (LBAD) mode which is an option for ATA standard. It will contain mode control registers to specify which addressing mode will be used, e. g. CHS or Logical Block Address. It may convert this logical disk sector access address to a form suitable  for use with the look-up table stored within the Cache device 4. The Logical Block Address refers to the addressing mode of the drive as being by linear mapping of sectors on the drive. The ATA standard defines an integrated bus interface between disk drives and host processors.



  The Disk Interface 1 will contain latches to store the address and bi-directional data information and also control decode circuitry. On receipt of addressing information and/or a read or write signal from the host processor the
Disk Interface will inform the microcontroller 3 of the read or write request.



  The Data Transfer Buffer 2 may be a dual ported memory, or it may be a memory with extra logic to make it act as a dual ported memory, or it may be a bi-directional FIFO (First In
First Out) buffer arrangement. For the FIFO implementation the Address Bus 9 between the Disk interface 1 and Data
Transfer Buffer 2 would not be necessary. The Data Transfer
Buffer 2 holds data from at least one sector of main memory (typically 512 bytes). Any data sent from or to the host goes via the Data Transfer Buffer 2.



  The Microcontroller 3 is programmed to perform the mapping algorithm and other associated tasks. It responds to control signals from the Disk Interface 1 to transfer data between the various buffers, memories, and stores in the system as necessary to effect read and write commands initiated by the host.



  The Cache device 4 may be an array of perfect working memory devices or it may be an array of partially working devices with the necessary logic and spare memory to provide full memory function. This memory contains information on the physical address or location in Flash memory that corresponds to the logical disk sector address (including cylinder and head information as appropriate) generated by the host processor. For every possible logical disk sector  address combination there exists in the look-up table a corresponding physical address in the Flash memory, or possibly, during use of the storage system for reading or writing, in the cache of the Cache device 4.



  The Flash memory array 5 may be an array of perfect working memory devices or it may be an array of partially working devices.



  The host processor interface comprises: a standard computer
Address Bus 6 which is used to determine which register within the standard disk interface is being accessed; a standard bi-directional Data Bus 7 which is used to transfer information between the interface and the host; and a standard Control Bus 8 which is used to determine, among other things, the direction and speed of the information interchange.



  The Disk Interface to Data Transfer Buffer interface consists of an Address Bus 9, a bi-directional Data Bus 10, and a Control Bus 11, which is used to determine the direction of the information interchange.



  The Microcontroller interface goes between the
Microcontroller 3 and the Disk Interface 1, the Data
Transfer Buffer 2, the Cache device 4, and the Flash Memory
Array 5. It comprises an Address Bus 12, a bi-directional
Data Bus 13, and a Control Bus 14 that determines the direction of the information interchange and which one of the Disk Interface, the Data Transfer Buffer, the Cache device, or the Flash Memory Array is being accessed.



  The Cache device 4 is a memory device containing a relatively large temporary store Cache 22 (see Fig. 2) for data due to be written to the Flash Memory Array 5 although it is quite possible that data stored in the Cache may be changed or even deleted entirely by the host before the memory management criteria have provided for rewriting of that data to the Flash Memory. The Cache device 4 could be volatile memory, such as SRAM, which can be written to, in some cases, much faster than the Flash EPROM main memory.



  The cache device 4 also conveniently contains (as shown in  
Fig. 2) mapping information which may be in the form of a look-up table containing logical disk sector addresses and current corresponding physical addresses (Logical Block
Attributes LBA) 20, as well as memory management information comprising a Buffer Free List (BFL) 16, a Ranked List of Age (RLA) 17, a Flash Free List (FFL) 18, Physical Block
Attributes (PBA) 20, and Erase-block Attributes (EBA) 21.



  In more detail:
The Buffer Free List 16 contains a list of all Cache memory sectors that are not currently being used. This list may be ranked in order of the physical address of the sectors or it may be in the form of a linked list. If it is in the form of a linked list then together with each address there is a pointer which points to the next free sectors.



  The Ranked List of Age 17 is a list of currently used sectors of Cache memory which are ordered with respect to the last time that the sector was accessed.



  The Flash Free List 18 is a list of all Flash memory sectors that are not currently being used and are free to be written to. This list may be an ordered list or it may be a linked list.



  The Logical Block Attributes 19 contains information required for mapping Logical Disk sector Address accesses to current Physical Address accesses. The information for each Logical disk sector address is the Physical Address (PBAD) and an InBuffer flag. The InBuffer flag indicates whether a sector accessed is in the cache 4 or in Flash memory 5.



  The Physical Block Attributes 20 contains two flags for each sector of Flash memory that is not in the Flash Free List.



  These flags are Used and Erased. Used indicates whether or not the sector holds valid data. Erased indicates whether or not a previously used sector has been written to all zeros.  



  The Erase-block Attributes 21 counts how many times each minimum erasable size data block has been erased. The minimum erasible size data block is determined in the manufacture of the EEPROM and can have any convenient value.



  In general it would be at least 100K bytes, though considerably larger sizes e. g. 1M byte may be used with suitable memory management. It will of course be appreciated that the look-up table and at least some of the memory management information require to be stored in nonvolatile memory, conveniently in part of the EEPROM 5 itself before powering-down of the storage system (unless the cache device is battery backed) and read into the cache device 4 upon powering-up of the storage system under the control of the microcontroller 3.



  The operation of this embodiment of the design will now be described in detail, without loss of generality.



  A host processor, for example a microprocessor or
Microcontroller, (not shown) requests either a read from or write to the disk which is being emulated by the data storage system. The host processor uses the communications interface protocol specified by the disk standard being emulated. Typical read and write operations shall now be described in detail.



  During the read operation the host processor stores the logical disk sector address of the sector to be read, in the corresponding registers of the Disk Interface. The host processor then writes a read command to the ICB 15. The
Microcontroller 3 in the ICB 15 responds to this command by performing the following tasks:
I. it reads the logical disk sector address from the disk interface registers 1
II. it searches the look-up table 19 in the cache device 4 for this address
III. it reads the Physical Address associated with this logical address (this may point to either Flash memory 5 or' the cache 22 in the Cache device 4)
IV. it copies the 512 byte data segment from the Flash memory 5 or the Cache 4 and stores it in the Data Transfer
Buffer 2  
V. it indicates to the host that the data is ready by writing to a disk interface register.



  If a state-machine and hard logic is used to perform the functions of the Microcontroller 3 then the search in step (II) would be a hardware parallel access. Some or all of the above operations may be performed in parallel. The above operations may or may not be performed in the sequence shown.



  During the write operation the host processor stores the logical disk Sector address (or the Logical Block Address) of the data segment to be written in the corresponding registers of the Interface and Control Block 15. The host processor then writes a write command to the ICB 15. The
Microcontroller 3 in the ICB 15 responds to this command by performing the following tasks:
I. it reads the logical disk sector address from the disk interface registers
II. it searches the look-up table 19 list for this address using a suitable algorithum programmed into the microcontroller 3 to obtain the corresponding physical address
III. it determines whether or not the current physical address is in the cache 22 and whether or not there is room in the cache 22. If the physical address is in the cache 22 then it carries out the sub tasks under task IV.

   If the block is not in the cache 22 and there is not room in the cache 22 for the block, then it carries out the sub tasks under tasks V and VI. If the block is not in the cache 22 and there is room in the cache 22 for this block, then it carries out the sub tasks under task VI.



  IVa. the sector containing old data in the cache 22 is overwritten with the new data
IVb. if the disk standard dictates, the host is notified that the operation is complet.



  Va. the sector containing the oldest segment of data within the cache 22, according to the Ranked List of Age 17, is written to a free sector of Flash 5, according to the Flash  
Free List 18
Vb. the Look-up table 19 is updated with the physical address of the Flash memory sector used in Va
Vc. the Ranked List of Age 17, the Flash Free List 18, and the Buffer Free List 16 are updated
VIa. the new data segement is written to a free sector of cache 22 according to the Buffer Free List 16
VIb. the Look-up table 19 is updated with the physical address of the sector in cache 22 which was written to in
VIa
VIc. the Buffer Free List 16 is updated.



  If a state-machine and hard logic is used to perform the functions of the Microcontroller 3 then the search in step (II) would be a hardware parallel access. Some or all of the above operations may be performed in parallel. The above operations may or may not be performed in the sequence shown.



  When the memory system is not handling host initiated functions, such as read and write operations, the Interface
Control Block (ICB) Microcontroller 3 can perform certain supervisory actions.



  The Microcontroller 3 notes the sectors that have been marked as unused and writes each cell to logic zero.



  The Microcontroller 3 also counts unused sectors in a minimum erasable size data block to identify sparsely occupied blocks. If the number of unused sectors is above a predetermined threshold the following cleanup operation is carried out:
I. all used sectors are copied to another minimum erasable size data block
II. the sparsely occupied block is erased and all successfully erased blocks (i. e. those blocks which don't fail the verify test) are put on the Flash Free List 18
The normal Flash Erase process is desirably modified in the following manner to reduce stress on the Flash memory device. The cells of all unused sectors will be written to logic zero if the process has not already been carried out  by the supervisory functions. This is in accordance with the normal Flash erase algorithm. The Erase-block command will be issued to the Flash memory device only once.

   This differs from the normal Flash erase cycle. Any blocks containing cells that have not been erased will be written to logic zero and marked as unused but not free. The remaining blocks will be marked as free and added to the
Flash Free List 18.



  In conventional systems if one cell failed to erase properly the entire device would be rendered unusable. However, due to the mapping system employed within this invention, if one cell failed to erase properly then only one sector of Flash (typically 512 bytes) would be unusable. The remainder of the device would be used as normal.



  When a destination sector of Flash memory 5 is written to, its data is verified by comparing it to the original source data. If the destination and source data are not identical then the destination block is written to logic zero, marked as unused but not free, and another destination block is selected from the Flash Free List 18.



  In conventional systems any cell which fails to write properly renders the entire device unusable. Due to the mapping system employed within this invention, only one block of Flash (typically 512 bytes) is unusable. The remainder of the device is used as normal.



  Data in the temporary store 22 is transferred to the Flash memory array 5 as an instant action when there is no free space in the temporary store 22. Data may also be transferred from the Read/Write buffer 4 to Flash memory 5 by the supervisory mechanism when the free space in the temporary store 22 falls below a predetermined threshold.



  In the former case, only one block of data will be written to the Flash memory array 5, freeing one block of memory in the Read/Write buffer 4. In the latter case, the data transfer would cease when the free space in the temporary store 22 exceeded another predetermined threshold (not  necessarily the same predetermined threshold used to start the transfer procedure).



  A PCMCIA form of the Memory System will normallyincorporate a battery backup which will perform one of two functions.



  In one embodiment the battery will power the Read/Write buffer while the card is not connected to the host. In the other embodiment the battery will power the system for as long as it takes to write the information stored in the
Read/Write buffer to Flash Memory when the card is removed from the host.



  It will be appreciated that various modifications may be made to the above embodiment within the scope of the present invention. Thus for example other criteria could be used in the memory management in addition to and/or instead of some of the criteria mentioned hereinbefore in accordance with general practice in the management of cache e. g. using data file size and/or random elements.
  

Claims

CLAIMS 1. A solid state mass data storage system for connection to an input/output connection interface of a host computer system, the connection interface being configured for coupling to a disk drive and the storage system being arranged to emulate such a disk drive, the system comprising: a primary memory arranged to store data in minimum erasable size data blocks which are larger than the sectors of the emulated disk drive; a cache arranged for storing data temporarily and having a storage capacity of at least one said minimum erasable size data block; memory mapping means for storing mapping data for mapping logical disk sector addresses of the emulated disk drive to respective physical addresses in the primary memory or the cache;
and host computer interface means for coupling to the host computer input/output connection interface and having control means arranged for determining from the memory mapping means in the case of receipt of read instructions from the host computer, the physical address corresponding to a received logical disk sector address and enabling the host computer to access data stored at that physical address, and, in the case of receipt of write instructions from the host computer, for writing received data having a given logical address to the cache or the primary memory, according to predetermined memory management criteria, at an existing corresponding physical address or, if required by said criteria, at a new physical address and updating the memory mapping means to indicate the new corresponding physical address,
the control means being further arranged for copying selectively at least one said minimum erasable size data block to the cache from the primary memory and erasing selectively that data block from the primary memory, in accordance with said predetermined memory management criteria and updating the memory mapping means accordingly, to allow subsequent copying and remapping of data to be stored from said cache to said primary memory, as and when required.
2. A storage system according to claim 1, wherein the memory mapping means is arranged to store a list of all sectors in the cache and the primary memory which are free, the control means being arranged, upon receipt of write instructions, to determine from the memory mapping means whether or not there is room in the cache to store a received data segment, and, in the case that there is room, to write the received data segment to a sector in the cache for temporary storage therein, and, in the case that there is not room, to make room by transferring a data segment currently stored in a sector in the cache to a free sector in the primary memory.
3. A storage system according to claim 2, wherein one or both of the cache and primary memory free sector lists are arranged as a linked list, each entry in the list including a pointer identifying the next free sector in the cache primary memory.
4. A storage system according to claim 2 or 3, wherein the memory mapping means is arranged to store a list of currently occupied sectors in the cache ordered according to the last time when the data in those sectors was accessed, the control means being arranged to transfer the data in that block which has not been accessed for the longest period in order to create free sectors in the cache.
5. A storage system according to any one of claims 2 to 4, wherein the control means is arranged to write the cells of all unused sectors of the primary memory to zero, to write any cells failing to erase to zero, and to list as unused but not free any blocks containing cells which do not erase to zero.
6. A storage device according to any one of the preceeding claims, wherein the control means is arranged to compare a sector of data in the primary memory with the corresponding sector in the cache following copying the data therein for the purpose of transfering its physical address to the primary memory and if a discrepancy exists, to list the sector in the primary memory as unused but not free and to transer the data from said cache sector to another sector in the primary memory.
7. A storage system according to any one of the preceeding claims, wherein the memory mapping means is arranged to store the number of times which each minimum erasable size data block of the primary memory has been erased, the control means being arranged to consult the memory mapping means in accordance with said predetermined memory management criteria in order to minimise the number of times which each minimum erasable size data block of the primary memory is erased.
8. A storage system according to any one of the preceeding claims, wherein each physical address stored in the memory mapping means comprises a root address and a flag which indicates whether the corresponding sector is stored in the cache or in the primary memory.
9. A storage system according to any one of the preceeding claims wherein said host computer interface means includes data transfer buffer means for holding data for writing pending re-mapping of the logical address thereof to a corresponding physical address, and, where required, remapping of an existing physical address to a new physical address.
10. A storage system according to claim 9, wherein the data buffer means is a SRAM.
11. A storage system according to claim 9 or 10, wherein the data buffer means is a bidirectional first-in-first-out (FIFO) buffer.
12. A storage system according to claim 9 or 10, wherein the buffer means is a dual ported memory.
13. A storage system according to any one of the preceeding claims, wherein the primary memory is a flash EPROM memory.
14. A storage system according to any one of the preceeding claims, wherein the sector size of the disk drive being emulated is 512 bytes.
15. A storage system according to any one of the preceeding claims, wherein the control means comprises a microprocessor and software.
16. A storage system according to any one of claims 1 to 14, wherein the control means comprises a state machine.
17. A storage system according to any one of the preceding claims, wherein the memory mapping means comprises a portion of the cache device.
18. A storage system according to any one of the preceeding claims, wherein the cache device is a SRAM.
19. A storage system according to any one of the preceeding claims, which is implemented in the form of a PCMCIA type card.
20. A mass storage memory system comprising a disk-compatible memory system interface means coupled to an EEPROM memory means and control processor means formed and arranged for controlling reading and writing of data between said interface and said EEPROM memory, said EEPROM memory comprising a plurality of large individually erasable blocks of data storage cells each of said large blocks being substantially larger than a disk sector, and said EEPROM memory being provided with fast temporary data storage means capable of being rewritten substantially faster than said EEPROM memory, for storing at least some data prior to writing thereof to the EEPROM memory, said control processor means being formed and arranged for:
maintaining mapping information providing current physical addresses corresponding to logical disk sector addresses and located somewhere within said EEPROM memory and said temporary data store, and buffering writing of at least some data having a given logical address, to said EEPROM memory, by initially writing said data to said temporary data store and updating the mapping information for said data to indicate the current physical address thereof in said temporary data store, said data being subsequently rewritten to said EEPROM memory with further updating of the mapping information for said data to indicate the new physical address thereof in said EEPROM memory.
21. A method of storing data generated by a host computer having an input/output connection interface configured for coupling to a disk drive, into a mass storage system arranged to emulate such a disk drive, the method comprising: storing in the storage system mapping data mapping logical disk sector addresses of the emulated disk drive to respective current physical addresses in a primary memory and a cache of the storage system, wherein the primary memory stores data within minimum erasable size blocks which are larger than the sectors of the emulated drive; on receipt of read instructions including a logical sector address from the host computer, determining from the mapping data a physical address in the primary memory or the cache corresponding to the received logical address and reading a sector of data from that physical address for transfer to the host computer;
on receipt of a write instruction including a logical disk sector address from the host computer, writing a received sector of data to the cache or primary memory according to predetermined memory management criteria at a physical address corresponding to the received sector address or, if necessary, at a new physical address and updating the memory mapping means to indicate the new corresponding physical address, wherein, when the physical address corresponds to a primary location, data is temporarily stored in the cache prior to transfer to the primary memory;
and, when required, copying selectively at least one said minimum erasable size data blocks to the cache from the primary memory and erasing selectively that minimum erasable size data block from the primary memory, in accordance with the predetermined memory management criteria, and updating the memory mapping means, thereby to allow further data to be transferred from the cache to the primary memory.
22. A solid state mass storage system including an interface for coupling to a disk compatible input/output part of a host computer, a data transfer buffer coupled to the interface, a flash EPROM memory having a minimum erasable block size and a read/white memory block which provides a tempory data store both of which are coupled to the data transfer buffer, wherein the read/write memory block contains look-up tables which enable the flash memory to become functionally identical to a hard disk drive with a predetermined sector size.
PCT/GB1994/002825 1993-12-24 1994-12-28 Solid state memory system WO1995018407A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU13228/95A AU1322895A (en) 1993-12-24 1994-12-28 Solid state memory system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9326499.2 1993-12-24
GB9326499A GB9326499D0 (en) 1993-12-24 1993-12-24 Flash memory system with arbitrary block size

Publications (1)

Publication Number Publication Date
WO1995018407A1 true WO1995018407A1 (en) 1995-07-06

Family

ID=10747258

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/GB1994/002825 WO1995018407A1 (en) 1993-12-24 1994-12-28 Solid state memory system

Country Status (3)

Country Link
AU (1) AU1322895A (en)
GB (1) GB9326499D0 (en)
WO (1) WO1995018407A1 (en)

Cited By (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19532147A1 (en) * 1995-08-04 1997-02-06 Peter Heinz Franck Data memory for data processing and control systems - has disc controller coupled to both disc memory and solid state memory
US5930167A (en) * 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6717847B2 (en) 2001-09-17 2004-04-06 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
WO2003029951A3 (en) * 2001-09-28 2004-06-03 Lexar Media Inc Non-volatile memory control
GB2397408A (en) * 2003-01-15 2004-07-21 Agilent Technologies Inc EEPROM emulation in an optical transceiver
US7747627B1 (en) * 2005-12-09 2010-06-29 Cisco Technology, Inc. Method and system for file retrieval using image virtual file system
US8635407B2 (en) 2011-09-30 2014-01-21 International Business Machines Corporation Direct memory address for solid-state drives
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US8966191B2 (en) 2011-03-18 2015-02-24 Fusion-Io, Inc. Logical interface for contextual storage
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US9058123B2 (en) 2012-08-31 2015-06-16 Intelligent Intellectual Property Holdings 2 Llc Systems, methods, and interfaces for adaptive persistence
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9348518B2 (en) 2014-07-02 2016-05-24 International Business Machines Corporation Buffered automated flash controller connected directly to processor memory bus
US9542284B2 (en) 2014-08-06 2017-01-10 International Business Machines Corporation Buffered automated flash controller connected directly to processor memory bus
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US9600184B2 (en) 2007-12-06 2017-03-21 Sandisk Technologies Llc Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US9734086B2 (en) 2006-12-06 2017-08-15 Sandisk Technologies Llc Apparatus, system, and method for a device shared between multiple independent hosts
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10133663B2 (en) 2010-12-17 2018-11-20 Longitude Enterprise Flash S.A.R.L. Systems and methods for persistent address space management
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US11960412B2 (en) 2022-10-19 2024-04-16 Unification Technologies Llc Systems and methods for identifying storage resources that are not in use

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0392895A2 (en) * 1989-04-13 1990-10-17 Sundisk Corporation Flash EEprom system
EP0522780A2 (en) * 1991-07-12 1993-01-13 International Business Machines Corporation Control method for a computer memory device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0392895A2 (en) * 1989-04-13 1990-10-17 Sundisk Corporation Flash EEprom system
EP0522780A2 (en) * 1991-07-12 1993-01-13 International Business Machines Corporation Control method for a computer memory device

Cited By (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19532147A1 (en) * 1995-08-04 1997-02-06 Peter Heinz Franck Data memory for data processing and control systems - has disc controller coupled to both disc memory and solid state memory
US5930167A (en) * 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US7177184B2 (en) 2001-09-17 2007-02-13 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6717847B2 (en) 2001-09-17 2004-04-06 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US7385854B2 (en) 2001-09-17 2008-06-10 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
WO2003029951A3 (en) * 2001-09-28 2004-06-03 Lexar Media Inc Non-volatile memory control
EP2275914A3 (en) * 2001-09-28 2011-05-11 Lexar Media, Inc. Non-volatile memory control
GB2397408B (en) * 2003-01-15 2005-11-16 Agilent Technologies Inc Transceiver
US7107414B2 (en) 2003-01-15 2006-09-12 Avago Technologies Fiber Ip (Singapore) Ptd. Ltd. EEPROM emulation in a transceiver
GB2397408A (en) * 2003-01-15 2004-07-21 Agilent Technologies Inc EEPROM emulation in an optical transceiver
US7747627B1 (en) * 2005-12-09 2010-06-29 Cisco Technology, Inc. Method and system for file retrieval using image virtual file system
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US9824027B2 (en) 2006-12-06 2017-11-21 Sandisk Technologies Llc Apparatus, system, and method for a storage area network
US9734086B2 (en) 2006-12-06 2017-08-15 Sandisk Technologies Llc Apparatus, system, and method for a device shared between multiple independent hosts
US11640359B2 (en) 2006-12-06 2023-05-02 Unification Technologies Llc Systems and methods for identifying storage resources that are not in use
US11847066B2 (en) 2006-12-06 2023-12-19 Unification Technologies Llc Apparatus, system, and method for managing commands of solid-state storage using bank interleave
US11573909B2 (en) 2006-12-06 2023-02-07 Unification Technologies Llc Apparatus, system, and method for managing commands of solid-state storage using bank interleave
US9600184B2 (en) 2007-12-06 2017-03-21 Sandisk Technologies Llc Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US10133663B2 (en) 2010-12-17 2018-11-20 Longitude Enterprise Flash S.A.R.L. Systems and methods for persistent address space management
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US9092337B2 (en) 2011-01-31 2015-07-28 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing eviction of data
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US8966191B2 (en) 2011-03-18 2015-02-24 Fusion-Io, Inc. Logical interface for contextual storage
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US9250817B2 (en) 2011-03-18 2016-02-02 SanDisk Technologies, Inc. Systems and methods for contextual storage
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
DE102012216034B4 (en) 2011-09-30 2021-11-25 International Business Machines Corporation Direct memory addressing for solid-state drives
US8683131B2 (en) 2011-09-30 2014-03-25 International Business Machines Corporation Direct memory address for solid-state drives
US8635407B2 (en) 2011-09-30 2014-01-21 International Business Machines Corporation Direct memory address for solid-state drives
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US9058123B2 (en) 2012-08-31 2015-06-16 Intelligent Intellectual Property Holdings 2 Llc Systems, methods, and interfaces for adaptive persistence
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US10346095B2 (en) 2012-08-31 2019-07-09 Sandisk Technologies, Llc Systems, methods, and interfaces for adaptive cache persistence
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US10573392B2 (en) 2014-07-02 2020-02-25 International Business Machines Corporation Buffered automated flash controller connected directly to processor memory bus
US9852798B2 (en) 2014-07-02 2017-12-26 International Business Machines Corporation Buffered automated flash controller connected directly to processor memory bus
US9348518B2 (en) 2014-07-02 2016-05-24 International Business Machines Corporation Buffered automated flash controller connected directly to processor memory bus
US9542284B2 (en) 2014-08-06 2017-01-10 International Business Machines Corporation Buffered automated flash controller connected directly to processor memory bus
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US11960412B2 (en) 2022-10-19 2024-04-16 Unification Technologies Llc Systems and methods for identifying storage resources that are not in use

Also Published As

Publication number Publication date
GB9326499D0 (en) 1994-03-02
AU1322895A (en) 1995-07-17

Similar Documents

Publication Publication Date Title
WO1995018407A1 (en) Solid state memory system
US7634624B2 (en) Memory system for data storage and retrieval
JP4511576B2 (en) Memory system
US8327068B2 (en) Memory module, memory controller, nonvolatile storage, nonvolatile storage system, and memory read/write method
KR100684887B1 (en) Data storing device including flash memory and merge method of thereof
US8041884B2 (en) Controller for non-volatile memories and methods of operating the memory controller
US8037232B2 (en) Data protection method for power failure and controller using the same
US5832493A (en) Flash file management system
KR100771519B1 (en) Memory system including flash memory and merge method of thereof
US7454558B2 (en) Non-volatile memory with erase block state indication in data section
US8200922B2 (en) Storage system snapshot assisted by SSD technology
US9110594B2 (en) File management system for devices containing solid-state media
JP3534585B2 (en) Data storage control method and apparatus for external storage device using a plurality of flash memories
US7529879B2 (en) Incremental merge methods and memory systems using the same
KR930010981A (en) Storage device using flash memory
US9037814B2 (en) Flash memory management method and flash memory controller and storage system using the same
EP0852765A1 (en) Memory management
JPH08137634A (en) Flash disk card
JPH11338782A (en) Storage device and its defective sector substituting method
JP3421581B2 (en) Storage device using nonvolatile semiconductor memory
US5337197A (en) Method and system for maintaining directory consistency in magneto-optic media
KR100932801B1 (en) Memory management methods, memory devices, and computer readable storage media
JPH11282765A (en) External storage device using flash memory
JPH05150913A (en) Silicon disk with flash memory as storage medium
KR20050086389A (en) Mirror interfacing method for flash memory cards.

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AM AT AU BB BG BR BY CA CH CN CZ DE DK EE ES FI GB GE HU JP KE KG KP KR KZ LK LR LT LU LV MD MG MN MW NL NO NZ PL PT RO RU SD SE SI SK TJ TT UA US UZ VN

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): KE MW SD SZ AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct application non-entry in european phase
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

NENP Non-entry into the national phase

Ref country code: CA