US5337275A - Method for releasing space in flash EEPROM memory array to allow the storage of compressed data - Google Patents

Method for releasing space in flash EEPROM memory array to allow the storage of compressed data Download PDF

Info

Publication number
US5337275A
US5337275A US08/146,439 US14643993A US5337275A US 5337275 A US5337275 A US 5337275A US 14643993 A US14643993 A US 14643993A US 5337275 A US5337275 A US 5337275A
Authority
US
United States
Prior art keywords
sectors
data
flash eeprom
memory array
eeprom memory
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
US08/146,439
Inventor
Richard P. Garner
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Priority to US08/146,439 priority Critical patent/US5337275A/en
Application granted granted Critical
Publication of US5337275A publication Critical patent/US5337275A/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • 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

Definitions

  • This invention relates to flash electrically-erasable programmable read-only memories (flash EEPROM) and, more particularly, to methods for releasing portions of such arrays in which data of less value is stored so that more important data may be written to such arrays in compressed form.
  • flash EEPROM flash electrically-erasable programmable read-only memories
  • Modern computer systems make extensive use of long term memory.
  • this memory is provided by one or more electro-mechanical hard (fixed) disk drives made of flat circular magnetic disks which rotate about a central axis and which have a mechanical arm to write to or to read from positions on the magnetic disk.
  • Hard disk drives are very useful and have become almost a necessity to the operation of personal computers.
  • electro-mechanical drives are relatively heavy, require a significant amount of space within a computer, require a significant amount of the power in use, and are very susceptible to shock.
  • a hard drive within a portable computer which is dropped is quite likely to cease functioning with a catastrophic loss of data.
  • flash EEPROM flash EEPROM
  • a flash EEPROM memory array includes a large plurality of floating-gate field effect transistors arranged as memory cells in typical row and column fashion with circuitry for accessing the individual cells and placing the memory transistors of those cells in one of two memory conditions.
  • a flash memory cell like a typical EPROM cell retains information when power is removed. Flash EEPROM memory has a number of attributes which adapt it to use as long term memory. It is light in weight, occupies very little space, and consumes less power than electro-mechanical disk drives. More importantly, it is especially rugged. It will withstand without adverse effects repeated drops each of which would destroy a typical electro-mechanical hard disk drive.
  • a peculiarity of flash EEPROM is that it is erased by applying a high voltage simultaneously to the source terminals of all of the transistors (cells) used in a large portion of the array. Because these source terminals are all connected to one another in the array by metallic busing, the entire portion of the array must be erased at once. While an electro-mechanical hard disk drive will typically store information in a first area of the disk and then rewrite that same area of the disk when the information changes, this is not possible with a flash memory array without erasing all of the valid information that remains in that portion of the array along with the invalid (dirty) information.
  • a different arrangement may be advantageously used for rewriting data and erasing dirty sectors of a flash EEPROM array.
  • the entire array is divided into smaller separately erasable blocks so that when a block is erased the amount of valid data which must be reprogrammed is reduced.
  • Such an array is composed of a number of silicon chips; and each such chip includes a number of such blocks. Then, when the information at a data entry changes, the changed information is written to a new sector on an available block rather than written over the old data; and the old data is marked dirty. After a sufficient number of sectors on a block have been marked dirty, the entire block is erased.
  • the flash EEPROM array has been designed to include a hardware compressor/decompressor so that it may store more data.
  • a problem occurs in using such a memory array to store compressed data.
  • the Microsoft DOS operating system (hereinafter DOS) allocates long term memory space through the use of a file allocation table associated with the particular memory hardware. When an electro-mechanical hard disk drive is first put into use, it is divided into sectors each of a fixed size and residing at a fixed place on the drive media. Each sector is numbered.
  • the file allocation table is a way for the DOS operating system to figure out which sectors on a disk are used for a file.
  • the file allocation table is a linked list that maps the file to the sectors; each link in the list includes a number of sectors allocated to a particular file and points to a next link.
  • the DOS system typically saves the file allocation table on the disk with which the table is associated.
  • the allocation of sectors in the file allocation table is the way in which the operating system determines how much memory space is available in the array. Other systems operate similarly.
  • each block of a flash EEPROM memory array must be erased before new data may be written to it.
  • compressed data is being written to a flash EEPROM memory array at a lower than average compression rate so that insufficient space is available in the array for the data, there is no process for determining that this is occurring and for releasing data stored in a flash EEPROM memory array immediately so that there will be sufficient room to store the compressed data.
  • An attempt to write a large amount of data compressed at a rate lower than average will cause the array to return a general disk write error signal. At that point, some method for releasing space in a flash memory array immediately is necessary if the new data is to be written to the array.
  • an object of the present invention to provide a method for releasing allocated space in a flash EEPROM memory array when compressed data is written to the array at a compression rate different than expected.
  • the process includes the steps of accumulating a list of sectors deleted by an operating system, monitoring the storage space available in a flash EEPROM memory array, selecting a sector with data to be released when the free storage space available in a flash EEPROM memory array is less than a predetermined amount, finding a header of a sector with data to be released, setting the indication of validity of the data stored to indicate that the data is invalid, writing a new header for the sector to a new position in the array without data and with an indication that data is not attached, and repeating the operation for each sector on the list of sectors deleted by the operating system until the free storage space available in a flash EEPROM memory array is greater than a predetermined amount.
  • FIG. 1 is a block diagram illustrating a flash EEPROM memory array in which the present invention may be used.
  • FIG. 2 is a diagram illustrating an individual block of the flash EEPROM memory array of FIG. 1.
  • FIG. 3 is a flow chart illustrating a method for deattaching sectors used in practicing the invention.
  • FIGS. 4(a) and (b) are flow charts of two processes which may be used together to practice the present invention.
  • the present invention relates to a method for operating a computer in processing electrical or other (e.g. mechanical, chemical) physical signals to generate other desired physical signals.
  • FIG. 1 there is illustrated in block diagram form a flash EEPROM memory array 10 in which the present invention may be practiced.
  • the array 10 includes a plurality of blocks B0-B15 of flash EEPROM memory.
  • Each block includes floating-gate field effect transistor memory devices or cells (not shown) arranged in typical row and column fashion and having circuitry arranged for selecting any particular block of memory and any particular row and column so that the memory device at that position may be written or read.
  • the details of the layout of transistor memory arrays and the associated accessing circuitry are well known to those skilled in the art and are, therefore, not shown here.
  • Flash EEPROM memory is essentially an EPROM array with facilities provided so that when divided into blocks in the manner illustrated an entire block of N-type memory cells may be erased by a high voltage value applied simultaneously to the source terminals of all the memory transistors of the block. Such an erasure places each of the cells in the one condition. When in that condition, a zero or a one may be written to a cell. A one leaves the cell in the same one condition while a zero switches the cell to the zero condition. A cell cannot be switched back from the zero condition to the one condition without the application at its source terminal of the high value of voltage required for erasure. Since all source terminals of the memory transistors of a block are joined together, a cell in a zero state remains in that state until the entire block of the array is erased once again.
  • blocks B0-B15 of memory are shown positioned on a first chip 11 of the array 10. Additional silicon chips 11 each hold additional blocks of the array 10 to provide a total number of blocks sufficient to furnish the desired size of memory array.
  • data may be written to any position on the entire block.
  • a host begins writing (in a manner to be described) the data to be stored in the array (such as an application program) to some block of the array having free space
  • the data to be stored in the array 10 is written sequentially, sector by sector, to the free space in this first block until that block has been filled with data. Then writing proceeds to the next sequential block having free space.
  • the information may be read back from the array 10 by interrogating the block and sector at which the data is stored.
  • the sector number which is used to indicate where data is stored is really a logical sector number.
  • a lookup table 17 listing logical sector numbers against physical sector positions is utilized with the array 10 so that the physical position in the array 10 at which any particular logical sector exists may be determined.
  • each block of the array will after some time have a number of entries which are marked invalid and cannot be used for storage. Consequently, as the array 10 fills with data, a point will come when it is necessary to clear out invalid data from a block in order to provide space for new data to be stored.
  • the dirtiest block of the array 10 is chosen for erasure. This allows the smallest amount of valid data to be moved to another block of the array from the block to be erased. Once the valid data is written to another block and the new physical addresses are recorded in the lookup table 17, the block from which the information was read is erased. It is then placed back into operation as an entirely clean block.
  • FIG. 2 is an idealized drawing which illustrates one arrangement of an individual block of the array 10 and is useful in describing the way data is stored.
  • a typical block 20 is illustrated as a rectangular area. The area includes a plurality of transistor devices typically arranged in rows and columns to provide the desired storage. The individual transistors and the various column and row select lines and other conductors for operating the block are not illustrated but are well known to those skilled in the art of designing flash memory.
  • data is stored in the block 20 beginning at the top of the block and near to the bottom.
  • a first sector number 58112 is stored as a part of the first header at the top.
  • a pointer value is stored in the header with the sector number.
  • the attributes included in one embodiment are an indication of the validity of the entry, a revision number, an indication whether the data is compressed or not, and a bit which indicates whether the entry includes data.
  • the indication of the validity of the entry stores at least one bit which indicates valid when it is a one value and invalid when it is a zero value; in one embodiment, two bits are used and both must be ones to indicate a valid entry.
  • the revision number is, in one embodiment, a four bit number.
  • the bit which indicates whether the entry includes data or not is utilized to allow sectors to be created without data. This is the initial state of sectors on a block when the array is first formatted. This allows information regarding the condition of sectors to be transferred to the host even though those sectors have not been used or are not presently in use.
  • the pointer value points to a physical address on the block 20 which is an offset from the beginning of the block at which the data for logical sector 58112 is stored.
  • An arrow in FIG. 2 illustrates this physical position at which the first byte of data for the logical sector is stored.
  • logical sector 58112 which is the first sector on the block 20
  • the data is written from the byte at the position indicated by the pointer stored with the sector number 58112 in the header to a point at the beginning of the entire data storage area which is marked by a beginning pointer value illustrated by an arrow extending from the upper left hand corner of the block 20.
  • FIG. 2 also shows a second logical sector 5 and its pointer directed to a physical position on the block 20 which stores the first byte of the data for sector 5.
  • the amount of data written to a logical sector is not fixed and may vary. However, a sector may be of any size less than a typical 512 bytes in one embodiment. Since the data for each new sector is written in all of the rows immediately above the data for the last-written sector, only a trivial amount of data space is wasted.
  • This storage design allows data to be compressed. When the data being sent to storage is compressed, the amount of storage space normally left empty in a fixed size storage arrangement may be eliminated. To indicate that the data is compressed, the compression bit in the header is set.
  • the header for a third logical sector number 867 is also shown; this sector includes an indication "WOD" (without data) that "no data is attached.” By the use of this indication, the header may be positioned on a block of the array, yet the space usually allocated for data is not used. This allows various information about the sector to be transferred to the host without a great deal of space being used.
  • a header requires only four words (eight bytes) of memory in the array whereas a sector of data may use as much as 512 bytes of memory in addition to the data space.
  • the physical position of the sector is stored with the logical sector number in a lookup table 17 (which is preferably held in random access memory 16).
  • the physical position includes the chip number, the block, and the offset for retrieving the data.
  • the data stored in any sector of the block 20 may be retrieved by retrieving the physical position of the logical sector number from the table 17 in random access memory, going to the position on the block 20 where the sector number is stored, and retrieving the pointer to the beginning position of the data and the pointer to the beginning position of the sector whose number is stored immediately above the sector number being retrieved. These two values determine the starting and ending positions (its size) for the sector the data of which is sought.
  • the control circuit 14 utilizes a microprocessor such as the Intel 80188 processor to execute various processes stored in read only memory within the control circuit 14. These processes utilize random access memory 16 to provide various services which allow the array 10 to be utilized as long term storage in the manner described.
  • One of these processes may cause a hardware compressor/decompressor circuit 53 shown as a portion of the control circuit 14 to compress data being sent to the array 10.
  • the details of such a circuit 53 are well known to those skilled in the art.
  • a hardware compressor/decompressor referred to as the Stacker AT/16 Coprocessor Card is marketed by Stac Electronics, 5993 Avenida Encinas, Carlsbad, Calif.
  • the control circuit 14 shown in FIG. 1 is also illustrated as including a command state machine which provides a command interface between the control circuit 14 and the flash EEPROM memory array.
  • the command state machine and the write state machine actually reside on each of the chips 11.
  • the command state machine controls the programming, reading, and erasing of the flash EEPROM memory array.
  • the command state machine using the write state machine sequences the data flow to and from the array to ensure that the writing to, the reading from, and the erasure of the array occur in proper order.
  • the microprocessor of the controller 14 controls the transfer of information between the host and the array and runs processes to provide services to the array; in doing so, the microprocessor may make use of various operations provided by the command state machine.
  • the microprocessor of the control circuit 14 is able to control the operations so that the external host which is writing to and receiving information from the flash array is typically not aware that an erasure is taking place even though the erasure requires one or two seconds.
  • a flash EEPROM memory array described When a flash EEPROM memory array described is manufactured for use in place of an electro-mechanical hard disk drive, it typically receives low level formatting.
  • This low level formatting stores on the blocks of the array data to define all of the logical sectors which may exist in a drive of the particular size. For example, one embodiment of a forty megabyte drive will have approximately 83,000 sectors placed on a first number of blocks, approximately the first forty blocks of the 240 blocks available in this array will hold such preformatted sectors.
  • a limited number of sectors (2047 in one embodiment) may be placed on each of a first number of the blocks of the array; the remaining blocks contain free space.
  • Each of these sectors has a logical sector number and the remainder of the information necessary to complete the header fields. However, since none of the sectors includes data at this point in time, the data attached bit of the attribute field indicates that no data is attached to the sector.
  • a process run by the microprocessor of the controller 14 reviews all of the blocks of the array and compiles the table 17 from the valid logical sector entries found. These valid logical sector numbers are listed in the table 17 along with the physical offset, block, and chip at which they are positioned. Since the addressing scheme used treats the host address as a logical address and records that logical address along with the physical position in the table 17 in random access memory 16, this table 17 must be updated whenever data is written to the array. The writing of changed data to a new physical address requires that the lookup table entry in table 17 be updated with the new physical position of the sector in the array and that the old entry on the block to be erased be marked as invalid by marking the invalid bit(s) of the header for that sector. The old entry must be so marked so that the RAM lookup table 17 may be accurately constructed after power is removed and reapplied.
  • the normal manner in which the writing of data takes place is as follows. Each sector of data is provided by the host with the number of the cylinder, head, and sector to which it is to be written.
  • the microprocessor uses a conversion equation to change this value from the format used by an electro-mechanical drive to a logical sector number for use by the controller 14.
  • the controller 14 looks up the logical sector number in the table 17 and finds the physical position of the sector in the array.
  • the controller finds the sector header in the block of the array on which it is positioned. The first time any sector is written, the header will be one which describes the sector as having no data attached (the low level format condition).
  • the controller 14 marks the old sector header invalid, then assigns free space (space not already assigned to a sector) on some block of the array to the sector, and writes a new header to the free space.
  • This header includes, among other things, the logical sector number, a pointer to a position on the block at which the data will commence, and an indication that data is attached.
  • the controller then writes the data furnished by the host to the data space at the new entry position for the sector.
  • the controller 14 then updates the table 17 with the new physical position of the sector.
  • each block of the array will after some time have a number of entries which are marked dirty and cannot be used for storage.
  • the amount of dirty space in the array will mount as the array is used to store data.
  • a sufficient number of blocks will be filled that it will be desirable to release space by moving the valid information from some especially dirty block to some other block and erasing the entire block from which the valid information has been derived.
  • the process of writing valid data to other blocks and erasing a dirty block is referred to as "cleaning up a block" and has the effect of freeing an additional number of sectors equal to all of the sectors on the erased block which have previously been marked as dirty. This process is run by the microprocessor of the controller 14.
  • the dirtiest block of the array is chosen for erasure. This allows the smallest amount of valid data to be moved from the block being erased to another block of the array.
  • the process is essentially similar to that by which data is written by the host except that the header of a sector is not completed until the valid data has been moved.
  • the controller picks a block of the array to clean up. It finds a block of the array having free space. For each valid sector on the block being erased, the controller writes a header on the block containing the free space which header includes only a pointer to the position for the data for that sector. The controller 14 then writes the valid data from the old sector on the block being cleaned up.
  • the controller When the data has been written, the controller completes the header with the logical sector number and the valid indication from the old header, and invalidates the old header. This delay in completing the header allows changes which occur during the period in which the cleanup write operation is taking place to be taken care of without any loss of data. For example, a power loss leaves data available at the old position even though the write is not completed.
  • the controller then updates the table 17 for the sector and goes to the next valid sector on the block being cleaned up.
  • Sectors are marked dirty only when revised information is written to a sector or when the cleanup process moves valid data from a sector during the cleanup process.
  • Sectors are not marked dirty when an operating system using a process such as the DOS "delete" process marks a table such as the file allocation table kept by DOS to indicate that the file has been deleted. Consequently, data cannot be written to space held in sectors of the array which have been marked free by the host in the file allocation table until the block on which those sectors reside has been erased.
  • the sectors allocated to a file which has been "deleted" by the operating system continue as valid sectors within the flash EEPROM memory array. It is not until the host attempts to write to these supposedly free sectors that they are marked dirty. Consequently, the data in each of these sectors will continue to occupy space in the array which might be otherwise used.
  • the controller 14 is compressing data furnished to the array by the host computer at a rate which is less than the compression rate expected, then the array may begin to use the extra free space necessary to accomplish the programming and cleanup processes. Ultimately, the array may run out of storage space while the host computer still believes space is available because space still exists in the file allocation table. Because the host computer is unable to handle this situation, some process by which a flash memory array may release space to allow continued programming and cleanup is required for a flash memory array using embedded compression.
  • the deattaching process makes use of the "data not attached" bit which may be set in the header of a sector during the process of formatting the array.
  • the deattach process in essence, rewrites a valid sector from which data is to be deattached to a new position in free space in the array.
  • the header of this new rewritten entry has the "data not attached” bit set, and the data is not transferred from the old entry.
  • the old sector entry which includes the data is invalidated, and the table 17 is updated. Invalidating the old sector entry and rewriting the sector header without data will cause the data to disappear when the cleanup process is run to erase data in invalid sectors.
  • FIG. 3 illustrates the details of the deattach process referred to above.
  • the process selects a first sector number (preferrably from a list of sectors containing information which is no longer useful) and signals the controller 14 to write that sector "with no data attached.”
  • the controller 14 searches the lookup table 17 for the physical position of the sector specified. When it finds the physical position, the controller 14 seeks the sector in the memory array. The controller 14 marks the header of the old sector as invalid. Next the controller writes the sector in free space in the memory array as a header with the "no data attached" bit set. No data is written to the new position of the sector.
  • the controller 14 updates the table 17 with the new physical position of the sector. This writing of sectors without data attached continues until all of the sectors desired have been handled in this manner.
  • the deattaching process may be utilized by the process of the present invention to eliminate the problem caused by lack of free space when a hardware compressor/decompressor circuit is used by the array.
  • the process of the present invention is illustrated in FIG. 4(a) and (b). Beginning with FIG. 4(b), the process keeps track of the free space available in the array and stores that value in a table 12 kept in random access memory 16. The process tracks the amount of free space by running a process on the microprocessor of the controller 14 which subtracts from the total amount of space available, the amount of space used by both valid and invalid sectors.
  • a first signal is provided by the controller 14 to the host computer.
  • This signal is sent by the host computer to the user so that the user may run a modified "delete” process illustrated in FIG. 4(a) (hereinafter referred to as an "Fdelete” process) on the host.
  • Associated with the Fdelete process is a terminate and stay resident process run on the host computer which stores a table of files in host memory which have been deleted by the user using the delete command or the Fdelete command. This is accomplished by writing to the table the file name and the sectors allocated to that file when the file allocation table is searched in response to a delete or Fdelete operation.
  • the files are stored by file and by the host designation for the sectors of that file.
  • the Fdelete process begins with the selection of a command (e.g., Fdelete) to initiate the process.
  • the command initiates the normal DOS delete command (or similar commands of another operating system) in which the file allocation table is searched to determine the sectors allocated to the file (or files) to be deleted and marks those sectors as free in the file allocation table.
  • the Fdelete process stores the numbers of the sectors which the delete process found were a part of the file in a table in memory. This table may be stored in memory in the host computer.
  • a file to be deleted is designated and the command is given.
  • the command causes the host operating system "delete" process to be run and the list of sectors designated as deleted to be accumulated in the table stored by the terminate and stay resident process.
  • the deattach process is activated.
  • the sectors stored in the table are furnished to the deattach process one by one, each with the deattach command; and the deattach process writes each such sector to free space without data attached and invalidates the old sector. This allows the cleanup process to immediately cleanup the block(s) of the array storing the deattached sectors and provide free space for storing the additional compressed data.
  • the first signal generated by the microprocessor of the controller 14 when the amount of free space falls below a first predetermined level may be used to automatically run the Fdelete process for any sectors already stored in the table of deleted files in host memory. This automatically frees space in the flash EEPROM array by deattaching any sectors previously deleted by the user whether the user elects to delete additional files or not in response to the first signal.
  • a second enhancement to the process is one by which the Fdelete process does not activate the deattach process so that it begin deattaching sectors until a prescribed number of files have accumulated in the table. When the prescribed number is reached, the deattach process is run beginning with the earliest deleted file. This enhancement allows files which have been "deleted" in the file allocation table to be recovered before they are actually removed from the array. This second enhancement could also be included with the first enhancement mentioned above so that files are not automatically deattached when the first signal is received (even though deleted in the file allocation table) until a prescribed number is reached.
  • the process as described to this point will free space in the array which may be used to store additional compressed data.
  • the process run by the microprocessor of the controller 14 continues to measure the amount of free space.
  • the process of this invention generates a second signal to the host computer. This signal is sent by the host to the user in a manner to be sure to elicit a response from the user. Flashing lights, ringing sounds, or indications on the display may be used.
  • the user may then run the Fdelete process to free space in the array as described above so that the compressed data may be written to the array.
  • the two enhancements described above may also be included for responding to the second signal. That is, the second signal generated by the controller 14 may be used to automatically initiate the Fdelete process on the host for any sectors which have already been deleted. The accumulation of sectors in the table in host memory until a certain level is reached before activating the deattach process may also be implemented for the Fdelete process. Alternatively, since the amount of free space is so low by the time the second signal is generated, the process of this invention may override any accumulation of files set for the Fdelete process and automatically deattach all files which have been deleted by the host operating system.
  • the process as described to this point will again free space in the array which may be used to store additional compressed data.
  • the process run by the microprocessor of the controller 14 continues to measure the amount of free space.
  • the process of this invention generates a third signal. This signal disables all write and erase operations operations by the command state machine of the controller 14 and allows only read operations to continue. The signal may also be sent to the host computer to indicate to the user that write operations have been terminated.

Abstract

A process for releasing sectors of a flash EEPROM memory array in which data furnished by a host computer is stored in compressed form so that memory space used for the sectors may be used to store new data. The flash EEPROM memory array includes a plurality of individually erasable blocks and stores sectors of data in such blocks with a header providing a logical sector number, an indication of validity of data stored. The process stores a list of files and sectors which have been deleted by a host computer in a first table in host memory, stores a value indicating an amount of free space remaining in the flash EEPROM memory array, provides a first signal to the host computer when the value indicating the amount of free space falls below a first predetermined value to indicate that sectors listed in the first table should be released, and provides a second signal when the value indicating the amount of free space falls below a second predetermined value to terminate writes to and erasures of the array.

Description

This is a continuation of application Ser. No. 07/969,759, filed Oct. 30, 1992, abandoned.
BACKGROUND OF THE INVENTION
1. Field of the Invention
This invention relates to flash electrically-erasable programmable read-only memories (flash EEPROM) and, more particularly, to methods for releasing portions of such arrays in which data of less value is stored so that more important data may be written to such arrays in compressed form.
2. History of the Prior Art
Modern computer systems make extensive use of long term memory. Typically this memory is provided by one or more electro-mechanical hard (fixed) disk drives made of flat circular magnetic disks which rotate about a central axis and which have a mechanical arm to write to or to read from positions on the magnetic disk. Hard disk drives are very useful and have become almost a necessity to the operation of personal computers. However, such electro-mechanical drives are relatively heavy, require a significant amount of space within a computer, require a significant amount of the power in use, and are very susceptible to shock. A hard drive within a portable computer which is dropped is quite likely to cease functioning with a catastrophic loss of data.
Recently, forms of long term storage other than electro-mechanical hard disk drives have become feasible for use in computers. One of these is flash EEPROM. A flash EEPROM memory array includes a large plurality of floating-gate field effect transistors arranged as memory cells in typical row and column fashion with circuitry for accessing the individual cells and placing the memory transistors of those cells in one of two memory conditions. A flash memory cell, like a typical EPROM cell retains information when power is removed. Flash EEPROM memory has a number of attributes which adapt it to use as long term memory. It is light in weight, occupies very little space, and consumes less power than electro-mechanical disk drives. More importantly, it is especially rugged. It will withstand without adverse effects repeated drops each of which would destroy a typical electro-mechanical hard disk drive.
A peculiarity of flash EEPROM, however, is that it is erased by applying a high voltage simultaneously to the source terminals of all of the transistors (cells) used in a large portion of the array. Because these source terminals are all connected to one another in the array by metallic busing, the entire portion of the array must be erased at once. While an electro-mechanical hard disk drive will typically store information in a first area of the disk and then rewrite that same area of the disk when the information changes, this is not possible with a flash memory array without erasing all of the valid information that remains in that portion of the array along with the invalid (dirty) information.
Because of this, a different arrangement may be advantageously used for rewriting data and erasing dirty sectors of a flash EEPROM array. In a recently devised arrangement, the entire array is divided into smaller separately erasable blocks so that when a block is erased the amount of valid data which must be reprogrammed is reduced. Such an array is composed of a number of silicon chips; and each such chip includes a number of such blocks. Then, when the information at a data entry changes, the changed information is written to a new sector on an available block rather than written over the old data; and the old data is marked dirty. After a sufficient number of sectors on a block have been marked dirty, the entire block is erased. When erasure occurs, all of the valid data in the block to be erased is written to a new block; and then the dirty block is erased and put back into use as a clean block of memory. Because of this involved erasure process, it typically takes as much as two seconds to erase a block of a flash EEPROM array. However, because erasure need not occur with each entry which is rewritten, erasure may be delayed until a block contains a sufficient amount of dirty information that cleanup is feasible. This reduces the number of erasure operations to a minimum and allows erasure to occur in the background when the facilities for controlling the array are not otherwise occupied with reading and writing. Such an arrangement is described in U.S. patent application Ser. No. 969,131, entitled Method And Circuitry For A Solid State Memory Disk, S. Wells, filed Oct. 30, 1992, and assigned to the assignee of the present invention.
One embodiment of the flash EEPROM array has been designed to include a hardware compressor/decompressor so that it may store more data. A problem occurs in using such a memory array to store compressed data. The Microsoft DOS operating system (hereinafter DOS) allocates long term memory space through the use of a file allocation table associated with the particular memory hardware. When an electro-mechanical hard disk drive is first put into use, it is divided into sectors each of a fixed size and residing at a fixed place on the drive media. Each sector is numbered. The file allocation table is a way for the DOS operating system to figure out which sectors on a disk are used for a file. The file allocation table is a linked list that maps the file to the sectors; each link in the list includes a number of sectors allocated to a particular file and points to a next link. The DOS system typically saves the file allocation table on the disk with which the table is associated. The allocation of sectors in the file allocation table is the way in which the operating system determines how much memory space is available in the array. Other systems operate similarly.
However, when a flash EEPROM memory array which uses internal hardware compression is used with an operating system, an estimate of the average compression rate is used to determine an array size which is used by the operating system in establishing a file allocation table. The operating system creates a file allocation table of a particular size presuming that there are a particular number of sectors in the array. The memory array size furnished presumes that compression will occur at the average rate. If compression occurs at a lesser rate with particular data, then there will be significantly less storage space available than the operating system believes is available.
Unlike electro-mechanical hard disk drives, each block of a flash EEPROM memory array must be erased before new data may be written to it. When compressed data is being written to a flash EEPROM memory array at a lower than average compression rate so that insufficient space is available in the array for the data, there is no process for determining that this is occurring and for releasing data stored in a flash EEPROM memory array immediately so that there will be sufficient room to store the compressed data. An attempt to write a large amount of data compressed at a rate lower than average will cause the array to return a general disk write error signal. At that point, some method for releasing space in a flash memory array immediately is necessary if the new data is to be written to the array.
SUMMARY OF THE INVENTION
It is, therefore, an object of the present invention to provide a method for releasing allocated space in a flash EEPROM memory array when compressed data is written to the array at a compression rate different than expected.
It is another object of the present invention to provide a method for releasing space in a flash EEPROM memory array in response to a command so that additional space will be available for compressed data.
These and other objects of the present invention are realized in a method for releasing sectors of a flash EEPROM memory array which includes a plurality of individually erasable blocks and stores sectors of data in such blocks with a header providing a logical sector number, an indication of validity of data stored, and an indication of whether data is stored with the header, so that the storage area may be used for new data. The process includes the steps of accumulating a list of sectors deleted by an operating system, monitoring the storage space available in a flash EEPROM memory array, selecting a sector with data to be released when the free storage space available in a flash EEPROM memory array is less than a predetermined amount, finding a header of a sector with data to be released, setting the indication of validity of the data stored to indicate that the data is invalid, writing a new header for the sector to a new position in the array without data and with an indication that data is not attached, and repeating the operation for each sector on the list of sectors deleted by the operating system until the free storage space available in a flash EEPROM memory array is greater than a predetermined amount.
These and other objects and features of the invention will be better understood by reference to the detailed description which follows taken together with the drawings in which like elements are referred to by like designations throughout the several views.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram illustrating a flash EEPROM memory array in which the present invention may be used.
FIG. 2 is a diagram illustrating an individual block of the flash EEPROM memory array of FIG. 1.
FIG. 3 is a flow chart illustrating a method for deattaching sectors used in practicing the invention.
FIGS. 4(a) and (b) are flow charts of two processes which may be used together to practice the present invention.
NOTATION AND NOMENCLATURE
Some portions of the detailed descriptions which follow are presented in terms of symbolic representations of operations on data bits within a computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities.
Further, the manipulations performed are often referred to in terms, such as adding or comparing, which are commonly associated with mental operations performed by a human operator. No such capability of a human operator is necessary or desirable in most cases in any of the operations described herein which form part of the present invention; the operations are machine operations. In all cases the distinction between the method operations in operating a computer and the method of computation itself should be borne in mind. The present invention relates to a method for operating a computer in processing electrical or other (e.g. mechanical, chemical) physical signals to generate other desired physical signals.
DETAILED DESCRIPTION
Referring now to FIG. 1, there is illustrated in block diagram form a flash EEPROM memory array 10 in which the present invention may be practiced. The array 10 includes a plurality of blocks B0-B15 of flash EEPROM memory. Each block includes floating-gate field effect transistor memory devices or cells (not shown) arranged in typical row and column fashion and having circuitry arranged for selecting any particular block of memory and any particular row and column so that the memory device at that position may be written or read. The details of the layout of transistor memory arrays and the associated accessing circuitry are well known to those skilled in the art and are, therefore, not shown here.
Flash EEPROM memory is essentially an EPROM array with facilities provided so that when divided into blocks in the manner illustrated an entire block of N-type memory cells may be erased by a high voltage value applied simultaneously to the source terminals of all the memory transistors of the block. Such an erasure places each of the cells in the one condition. When in that condition, a zero or a one may be written to a cell. A one leaves the cell in the same one condition while a zero switches the cell to the zero condition. A cell cannot be switched back from the zero condition to the one condition without the application at its source terminal of the high value of voltage required for erasure. Since all source terminals of the memory transistors of a block are joined together, a cell in a zero state remains in that state until the entire block of the array is erased once again.
In the array 10 illustrated in FIG. 1, blocks B0-B15 of memory are shown positioned on a first chip 11 of the array 10. Additional silicon chips 11 each hold additional blocks of the array 10 to provide a total number of blocks sufficient to furnish the desired size of memory array.
Once any one of the blocks has been erased, data may be written to any position on the entire block. When, a host begins writing (in a manner to be described) the data to be stored in the array (such as an application program) to some block of the array having free space, the data to be stored in the array 10 is written sequentially, sector by sector, to the free space in this first block until that block has been filled with data. Then writing proceeds to the next sequential block having free space. At any point after writing is completed, the information may be read back from the array 10 by interrogating the block and sector at which the data is stored.
When updated information is to be written to a sector which already contains information, in contrast to the prior art, the new information is written to new or newly-erased free space on some one of the blocks of the array 10. This, rather than writing over the old information, occurs because the old information can only be rewritten if the entire block on which it is stored is first erased. To erase an entire block without destroying valid data would entail copying all of the valid data to another block of the array 10, erasing the original block, rewriting the valid data back to the original block, then rewriting the updated data over the old entry on the original block. Instead the updated information is written to a new position on a different unfilled block (e.g., block B7), and the old position is marked invalid (dirty). A block is usually not erased until a large number of dirty sectors exist and the number of valid sectors on that block which must be saved is substantially reduced.
Because of this arrangement by which data is replaced in the array by writing it to a different physical position, the sector number which is used to indicate where data is stored is really a logical sector number. In order to allow the use of logical sector numbers, a lookup table 17 listing logical sector numbers against physical sector positions is utilized with the array 10 so that the physical position in the array 10 at which any particular logical sector exists may be determined.
Also, because of this arrangement by which data is replaced, each block of the array will after some time have a number of entries which are marked invalid and cannot be used for storage. Consequently, as the array 10 fills with data, a point will come when it is necessary to clear out invalid data from a block in order to provide space for new data to be stored. Typically, the dirtiest block of the array 10 is chosen for erasure. This allows the smallest amount of valid data to be moved to another block of the array from the block to be erased. Once the valid data is written to another block and the new physical addresses are recorded in the lookup table 17, the block from which the information was read is erased. It is then placed back into operation as an entirely clean block.
FIG. 2 is an idealized drawing which illustrates one arrangement of an individual block of the array 10 and is useful in describing the way data is stored. A typical block 20 is illustrated as a rectangular area. The area includes a plurality of transistor devices typically arranged in rows and columns to provide the desired storage. The individual transistors and the various column and row select lines and other conductors for operating the block are not illustrated but are well known to those skilled in the art of designing flash memory.
As may be seen in FIG. 2, data is stored in the block 20 beginning at the top of the block and near to the bottom. At the top of the block 20 are stored the logical sector numbers used by the operating system as addresses for the data in an identification field referred to as a sector translation table or "header." For example, a first sector number 58112 is stored as a part of the first header at the top. In the header with the sector number are stored a pointer value and a set of attributes among other things. The attributes included in one embodiment are an indication of the validity of the entry, a revision number, an indication whether the data is compressed or not, and a bit which indicates whether the entry includes data. The indication of the validity of the entry stores at least one bit which indicates valid when it is a one value and invalid when it is a zero value; in one embodiment, two bits are used and both must be ones to indicate a valid entry. The revision number is, in one embodiment, a four bit number. The bit which indicates whether the entry includes data or not is utilized to allow sectors to be created without data. This is the initial state of sectors on a block when the array is first formatted. This allows information regarding the condition of sectors to be transferred to the host even though those sectors have not been used or are not presently in use.
The pointer value points to a physical address on the block 20 which is an offset from the beginning of the block at which the data for logical sector 58112 is stored. An arrow in FIG. 2 illustrates this physical position at which the first byte of data for the logical sector is stored. In the case of logical sector 58112, which is the first sector on the block 20, the data is written from the byte at the position indicated by the pointer stored with the sector number 58112 in the header to a point at the beginning of the entire data storage area which is marked by a beginning pointer value illustrated by an arrow extending from the upper left hand corner of the block 20. FIG. 2 also shows a second logical sector 5 and its pointer directed to a physical position on the block 20 which stores the first byte of the data for sector 5.
Because of this manner of providing data storage space for a sector, the amount of data written to a logical sector is not fixed and may vary. However, a sector may be of any size less than a typical 512 bytes in one embodiment. Since the data for each new sector is written in all of the rows immediately above the data for the last-written sector, only a trivial amount of data space is wasted. This storage design allows data to be compressed. When the data being sent to storage is compressed, the amount of storage space normally left empty in a fixed size storage arrangement may be eliminated. To indicate that the data is compressed, the compression bit in the header is set.
The header for a third logical sector number 867 is also shown; this sector includes an indication "WOD" (without data) that "no data is attached." By the use of this indication, the header may be positioned on a block of the array, yet the space usually allocated for data is not used. This allows various information about the sector to be transferred to the host without a great deal of space being used. A header requires only four words (eight bytes) of memory in the array whereas a sector of data may use as much as 512 bytes of memory in addition to the data space.
As was pointed out above, the physical position of the sector is stored with the logical sector number in a lookup table 17 (which is preferably held in random access memory 16). The physical position includes the chip number, the block, and the offset for retrieving the data. The data stored in any sector of the block 20 may be retrieved by retrieving the physical position of the logical sector number from the table 17 in random access memory, going to the position on the block 20 where the sector number is stored, and retrieving the pointer to the beginning position of the data and the pointer to the beginning position of the sector whose number is stored immediately above the sector number being retrieved. These two values determine the starting and ending positions (its size) for the sector the data of which is sought.
An arrangement has been devised to control the operation of the programming, reading, and erasing of the flash EEPROM memory array. This arrangement is shown as a read/write control circuit 14 in FIG. 1. The control circuit 14 utilizes a microprocessor such as the Intel 80188 processor to execute various processes stored in read only memory within the control circuit 14. These processes utilize random access memory 16 to provide various services which allow the array 10 to be utilized as long term storage in the manner described. One of these processes may cause a hardware compressor/decompressor circuit 53 shown as a portion of the control circuit 14 to compress data being sent to the array 10. The details of such a circuit 53 are well known to those skilled in the art. For example, a hardware compressor/decompressor referred to as the Stacker AT/16 Coprocessor Card is marketed by Stac Electronics, 5993 Avenida Encinas, Carlsbad, Calif.
The control circuit 14 shown in FIG. 1 is also illustrated as including a command state machine which provides a command interface between the control circuit 14 and the flash EEPROM memory array. In one embodiment, the command state machine and the write state machine actually reside on each of the chips 11. The command state machine controls the programming, reading, and erasing of the flash EEPROM memory array. The command state machine using the write state machine sequences the data flow to and from the array to ensure that the writing to, the reading from, and the erasure of the array occur in proper order. The microprocessor of the controller 14 controls the transfer of information between the host and the array and runs processes to provide services to the array; in doing so, the microprocessor may make use of various operations provided by the command state machine. Details of the command state machine and the write state machine are disclosed in U.S. patent application Ser. No. 07/655,643, entitled Command State Machine, Fandrich et al, filed Feb. 11, 1991, and assigned to the assignee of the present invention, and in U.S. patent application Ser. No. 07/654,375, entitled Circuitry and Method For Programming and Erasing A Non-volatile Semiconductor Memory, Kynett et al, filed Feb. 11, 1991, and assigned to the assignee of the present invention.
Because it controls all information passed between the host and the command state machine interface to the memory array, the microprocessor of the control circuit 14 is able to control the operations so that the external host which is writing to and receiving information from the flash array is typically not aware that an erasure is taking place even though the erasure requires one or two seconds.
When a flash EEPROM memory array described is manufactured for use in place of an electro-mechanical hard disk drive, it typically receives low level formatting. This low level formatting stores on the blocks of the array data to define all of the logical sectors which may exist in a drive of the particular size. For example, one embodiment of a forty megabyte drive will have approximately 83,000 sectors placed on a first number of blocks, approximately the first forty blocks of the 240 blocks available in this array will hold such preformatted sectors. In this embodiment, a limited number of sectors (2047 in one embodiment) may be placed on each of a first number of the blocks of the array; the remaining blocks contain free space. Each of these sectors has a logical sector number and the remainder of the information necessary to complete the header fields. However, since none of the sectors includes data at this point in time, the data attached bit of the attribute field indicates that no data is attached to the sector.
Each time power is applied to the array, a process run by the microprocessor of the controller 14 reviews all of the blocks of the array and compiles the table 17 from the valid logical sector entries found. These valid logical sector numbers are listed in the table 17 along with the physical offset, block, and chip at which they are positioned. Since the addressing scheme used treats the host address as a logical address and records that logical address along with the physical position in the table 17 in random access memory 16, this table 17 must be updated whenever data is written to the array. The writing of changed data to a new physical address requires that the lookup table entry in table 17 be updated with the new physical position of the sector in the array and that the old entry on the block to be erased be marked as invalid by marking the invalid bit(s) of the header for that sector. The old entry must be so marked so that the RAM lookup table 17 may be accurately constructed after power is removed and reapplied.
The normal manner in which the writing of data takes place is as follows. Each sector of data is provided by the host with the number of the cylinder, head, and sector to which it is to be written. The microprocessor uses a conversion equation to change this value from the format used by an electro-mechanical drive to a logical sector number for use by the controller 14. The controller 14 looks up the logical sector number in the table 17 and finds the physical position of the sector in the array. The controller then finds the sector header in the block of the array on which it is positioned. The first time any sector is written, the header will be one which describes the sector as having no data attached (the low level format condition). The controller 14 marks the old sector header invalid, then assigns free space (space not already assigned to a sector) on some block of the array to the sector, and writes a new header to the free space. This header includes, among other things, the logical sector number, a pointer to a position on the block at which the data will commence, and an indication that data is attached. The controller then writes the data furnished by the host to the data space at the new entry position for the sector. The controller 14 then updates the table 17 with the new physical position of the sector.
This places the table 17 in condition so that the changed (new information) may be recovered. This also leaves the old sector marked invalid so that it may be cleaned up when a sufficient number of sectors on the block have been marked dirty.
Because the space marked dirty on a block cannot be released for use until the entire block is erased, each block of the array will after some time have a number of entries which are marked dirty and cannot be used for storage. Thus, the amount of dirty space in the array will mount as the array is used to store data. After some period of time, a sufficient number of blocks will be filled that it will be desirable to release space by moving the valid information from some especially dirty block to some other block and erasing the entire block from which the valid information has been derived. The process of writing valid data to other blocks and erasing a dirty block is referred to as "cleaning up a block" and has the effect of freeing an additional number of sectors equal to all of the sectors on the erased block which have previously been marked as dirty. This process is run by the microprocessor of the controller 14.
Typically, when cleanup takes place, the dirtiest block of the array is chosen for erasure. This allows the smallest amount of valid data to be moved from the block being erased to another block of the array. The process is essentially similar to that by which data is written by the host except that the header of a sector is not completed until the valid data has been moved. The controller picks a block of the array to clean up. It finds a block of the array having free space. For each valid sector on the block being erased, the controller writes a header on the block containing the free space which header includes only a pointer to the position for the data for that sector. The controller 14 then writes the valid data from the old sector on the block being cleaned up. When the data has been written, the controller completes the header with the logical sector number and the valid indication from the old header, and invalidates the old header. This delay in completing the header allows changes which occur during the period in which the cleanup write operation is taking place to be taken care of without any loss of data. For example, a power loss leaves data available at the old position even though the write is not completed. The controller then updates the table 17 for the sector and goes to the next valid sector on the block being cleaned up.
Once all of the valid information has been written to another block(s) and the new physical addresses have been recorded in the lookup table 17, the block from which the information was read is erased. It is then placed back into operation as an entirely clean block of free space. The cleanup process is described in detail in U.S. patent application Ser. No. 969,760, entitled A Method Of Cleaning Up A Solid State Memory Disk Storing Floating Sector Data, S. Wells, filed Oct. 30, 1992, and assigned to the assignee of the present invention.
In order to allow this cleanup operation to occur, some number of blocks must be kept in reserve to be used when cleanup is necessary. It is important that this free space be available or the cleanup operation cannot occur and the array will cease to function correctly. In one arrangement in which the present invention is utilized, fourteen blocks of 240 blocks available are used to provide sufficient space for both continuing write operations and for cleanup operations.
As will be understood from the above discussion, it is only sectors which are marked dirty which are erased. Sectors are marked dirty only when revised information is written to a sector or when the cleanup process moves valid data from a sector during the cleanup process. Sectors are not marked dirty when an operating system using a process such as the DOS "delete" process marks a table such as the file allocation table kept by DOS to indicate that the file has been deleted. Consequently, data cannot be written to space held in sectors of the array which have been marked free by the host in the file allocation table until the block on which those sectors reside has been erased. When the user desires to remove the data from the array, all that has occurred using the prior art "delete" process is that the file allocation table kept by the host operating system has been marked to indicate that the space is free; however, the sectors in the block of flash memory are still marked valid and cannot be overwritten.
The sectors allocated to a file which has been "deleted" by the operating system continue as valid sectors within the flash EEPROM memory array. It is not until the host attempts to write to these supposedly free sectors that they are marked dirty. Consequently, the data in each of these sectors will continue to occupy space in the array which might be otherwise used.
As was pointed out above, this is not normally a problem. However, if the controller 14 is compressing data furnished to the array by the host computer at a rate which is less than the compression rate expected, then the array may begin to use the extra free space necessary to accomplish the programming and cleanup processes. Ultimately, the array may run out of storage space while the host computer still believes space is available because space still exists in the file allocation table. Because the host computer is unable to handle this situation, some process by which a flash memory array may release space to allow continued programming and cleanup is required for a flash memory array using embedded compression.
There is a process available to the control circuit 14 which releases space allocated to useless data. However, this process was not designed to release space for an array using embedded compression; instead it is designed to allow an increase in the efficiency of the cleanup operation which has been described above. This "deattaching" process may be used to eliminate waste space allocated to sectors which have been deleted so that the sectors are not moved about the array with each cleanup operation on the block in which they are situated. This process is described in detail in U.S. patent application Ser. No. 969,466, entitled Method for Deattaching Sectors In a Flash EEPROM Memory Array, filed 30 Oct. 1992, and assigned to the assignee of the present invention.
In general, the deattaching process makes use of the "data not attached" bit which may be set in the header of a sector during the process of formatting the array. The deattach process, in essence, rewrites a valid sector from which data is to be deattached to a new position in free space in the array. The header of this new rewritten entry has the "data not attached" bit set, and the data is not transferred from the old entry. Then the old sector entry which includes the data is invalidated, and the table 17 is updated. Invalidating the old sector entry and rewriting the sector header without data will cause the data to disappear when the cleanup process is run to erase data in invalid sectors. Since an operating system such as DOS attempts to write the data in a file to sequential sectors of a hard disk drive so that access to that data will be more rapid, the sectors of a file are usually stored adjacent one another in a block or blocks of a flash EEPROM memory array. Consequently, the cleanup process will occur rapidly whenever the sectors of a sufficiently large file are deattached. This will immediately release for each sector so deattached on the block, space equal to the space occupied by the data which was stored. It will be understood by those skilled the art that this deattaching process increases the efficiency of the operation of the above-described flash EEPROM memory array.
FIG. 3 illustrates the details of the deattach process referred to above. The process selects a first sector number (preferrably from a list of sectors containing information which is no longer useful) and signals the controller 14 to write that sector "with no data attached." For each selected sector, the controller 14 searches the lookup table 17 for the physical position of the sector specified. When it finds the physical position, the controller 14 seeks the sector in the memory array. The controller 14 marks the header of the old sector as invalid. Next the controller writes the sector in free space in the memory array as a header with the "no data attached" bit set. No data is written to the new position of the sector. For each sector, the controller 14 then updates the table 17 with the new physical position of the sector. This writing of sectors without data attached continues until all of the sectors desired have been handled in this manner.
When any block containing the invalid sectors produced by the deattaching process becomes sufficiently dirty (as soon as the deattach process is complete for a large group of sectors), the cleanup process will write the valid data remaining on the block to free space and erase the entire block. Thus, the cleanup process releases the space allocated to data in the dirty sectors of a block which has been cleaned up to free space.
It has been discovered that the deattaching process may be utilized by the process of the present invention to eliminate the problem caused by lack of free space when a hardware compressor/decompressor circuit is used by the array. The process of the present invention is illustrated in FIG. 4(a) and (b). Beginning with FIG. 4(b), the process keeps track of the free space available in the array and stores that value in a table 12 kept in random access memory 16. The process tracks the amount of free space by running a process on the microprocessor of the controller 14 which subtracts from the total amount of space available, the amount of space used by both valid and invalid sectors. When the amount of free space in the array falls below some predetermined amount which in one embodiment is one-half (seven blocks) of the allotted amount of safety space (fourteen blocks), a first signal is provided by the controller 14 to the host computer. This signal is sent by the host computer to the user so that the user may run a modified "delete" process illustrated in FIG. 4(a) (hereinafter referred to as an "Fdelete" process) on the host.
Associated with the Fdelete process is a terminate and stay resident process run on the host computer which stores a table of files in host memory which have been deleted by the user using the delete command or the Fdelete command. This is accomplished by writing to the table the file name and the sectors allocated to that file when the file allocation table is searched in response to a delete or Fdelete operation. The files are stored by file and by the host designation for the sectors of that file.
The Fdelete process begins with the selection of a command (e.g., Fdelete) to initiate the process. The command initiates the normal DOS delete command (or similar commands of another operating system) in which the file allocation table is searched to determine the sectors allocated to the file (or files) to be deleted and marks those sectors as free in the file allocation table. Next the Fdelete process stores the numbers of the sectors which the delete process found were a part of the file in a table in memory. This table may be stored in memory in the host computer.
When the Fdelete process is run by a user, a file to be deleted is designated and the command is given. The command causes the host operating system "delete" process to be run and the list of sectors designated as deleted to be accumulated in the table stored by the terminate and stay resident process. After the delete process is run (or as soon as sectors are accumulated in the table depending on the embodiment), the deattach process is activated. The sectors stored in the table are furnished to the deattach process one by one, each with the deattach command; and the deattach process writes each such sector to free space without data attached and invalidates the old sector. This allows the cleanup process to immediately cleanup the block(s) of the array storing the deattached sectors and provide free space for storing the additional compressed data.
Two enhancements may be added to the process of the invention at this point. First, the first signal generated by the microprocessor of the controller 14 when the amount of free space falls below a first predetermined level may be used to automatically run the Fdelete process for any sectors already stored in the table of deleted files in host memory. This automatically frees space in the flash EEPROM array by deattaching any sectors previously deleted by the user whether the user elects to delete additional files or not in response to the first signal.
A second enhancement to the process is one by which the Fdelete process does not activate the deattach process so that it begin deattaching sectors until a prescribed number of files have accumulated in the table. When the prescribed number is reached, the deattach process is run beginning with the earliest deleted file. This enhancement allows files which have been "deleted" in the file allocation table to be recovered before they are actually removed from the array. This second enhancement could also be included with the first enhancement mentioned above so that files are not automatically deattached when the first signal is received (even though deleted in the file allocation table) until a prescribed number is reached.
As will be seen by those skilled in the art, the process as described to this point will free space in the array which may be used to store additional compressed data. However, presuming that a user does not delete files using the Fdelete command, or that the enhancement for automatically deattaching already deleted files is not enabled, or (if enabled) that already deleted files do not exist, then the process run by the microprocessor of the controller 14 continues to measure the amount of free space. When the free space becomes less than a second predetermined amount still sufficient to run the processes of the array, the process of this invention generates a second signal to the host computer. This signal is sent by the host to the user in a manner to be sure to elicit a response from the user. Flashing lights, ringing sounds, or indications on the display may be used. Presumably, The user may then run the Fdelete process to free space in the array as described above so that the compressed data may be written to the array.
The two enhancements described above may also be included for responding to the second signal. That is, the second signal generated by the controller 14 may be used to automatically initiate the Fdelete process on the host for any sectors which have already been deleted. The accumulation of sectors in the table in host memory until a certain level is reached before activating the deattach process may also be implemented for the Fdelete process. Alternatively, since the amount of free space is so low by the time the second signal is generated, the process of this invention may override any accumulation of files set for the Fdelete process and automatically deattach all files which have been deleted by the host operating system.
As will be seen by those skilled in the art, the process as described to this point will again free space in the array which may be used to store additional compressed data. However, presuming that a user still does not delete files using the Fdelete command, or that the enhancement for automatically deattaching already deleted files is not enabled, or that already deleted files do not exist, then the process run by the microprocessor of the controller 14 continues to measure the amount of free space. When the free space becomes less than a third predetermined amount which is still just sufficient to run the processes of the array, the process of this invention generates a third signal. This signal disables all write and erase operations operations by the command state machine of the controller 14 and allows only read operations to continue. The signal may also be sent to the host computer to indicate to the user that write operations have been terminated.
Although the present invention has been described in terms of a preferred embodiment, it will be appreciated that various modifications and alterations might be made by those skilled in the art without departing from the spirit and scope of the invention. The invention should therefore be measured in terms of the claims which follow.

Claims (16)

What is claimed is:
1. A process for releasing sectors of a flash EEPROM memory array in which data furnished by a host computer is stored in compressed form so that memory space used for the sectors may be used to store new data, the flash EEPROM memory array including a plurality of individually erasable blocks and storing sectors of data in such blocks with a header providing a logical sector number, an indication of validity of data stored, the process comprising the steps of:
storing a list of files and sectors which have been deleted by a host computer in a first table in host memory,
storing a value indicating an amount of free space remaining in the flash EEPROM memory array,
providing a first signal to the host computer when the value indicating the amount of free space falls below a first predetermined value to indicate that sectors listed in the first table should be released, and
providing a second signal when the value indicating the amount of free space falls below a second predetermined value.
2. A process for releasing sectors of a flash EEPROM memory array as claimed in claim 1 further comprising the step of responding to the second signal by disabling write and erase operations in the flash EEPROM memory array.
3. A process for releasing sectors of a flash EEPROM memory array as claimed in claim 1 further comprising the step of providing a third signal to the host computer when the value indicating the amount of free space falls below a third predetermined value which is less than the first predetermined value but greater than the second predetermined value to indicate that it is more urgent that sectors listed in the first table be released than when the first signal was given.
4. A process for releasing sectors of a flash EEPROM memory array as claimed in claim 1 further comprising the step of responding to the first signal by automatically releasing the data allotted to a predetermined number of sectors listed in the first table.
5. A process for releasing sectors of a flash EEPROM memory array as claimed in claim 4 in which the step of responding to the first signal by automatically releasing the data allotted to a predetermined number of sectors listed in the first table comprises the steps of writing any valid data remaining in a selected portion of the flash EEPROM memory array having a predetermined number of headers specified as invalid to free space in the flash EEPROM memory array, and
erasing the entire selected portion of the flash EEPROM memory array.
6. A process for releasing sectors of a flash EEPROM memory array as claimed in claim 4 in which the step of responding to the first signal by automatically releasing the data allotted to a predetermined number of sectors listed in the first table comprises the steps of:
selecting a first sector from the first table,
searching a second table for a physical position of a sector selected,
seeking a sector specified by a physical position of a sector selected,
marking a header of a sector specified by a physical position of a sector selected as invalid,
writing a new header for a sector selected in free space in the flash EEPROM memory array without data,
updating the second table with a new physical position of a new header for a sector specified by the first designation, and
repeating the process from the step of selecting a first designation for a sector from the first table until the predetermined number of sectors listed in the first table have been released.
7. A process for releasing sectors of a flash EEPROM memory array as claimed in claim 4 in which the predetermined number of sectors listed in the first table is all of the sectors listed in the first table.
8. A process for releasing sectors of a flash EEPROM memory array as claimed in claim 4 in which the predetermined number of sectors listed in the first table is selected to leave a number of sectors equal to at least one host computer file in the first table.
9. A process for releasing sectors of a flash EEPROM memory array as claimed in claim 3 further comprising the step of responding to the third signal by automatically releasing the data allotted to a predetermined number of sectors listed in the first table.
10. A process for releasing sectors of a flash EEPROM memory array as claimed in claim 9 in which the step of responding to the third signal by automatically releasing the data allotted to a predetermined number of sectors listed in the first table comprises the steps of writing any valid data remaining in a selected portion of the flash EEPROM memory array having a predetermined number of headers specified as invalid to free space in the flash EEPROM memory array, and
erasing the entire selected portion of the flash EEPROM memory array.
11. A process for releasing sectors of a flash EEPROM memory array as claimed in claim 9 in which the step of responding to the third signal by automatically releasing the data allotted to sectors listed in the first table comprises the steps of:
selecting a first sector from the first table,
searching a second table for a physical position of a sector selected,
seeking a sector specified by a physical position of a sector selected,
marking a header of a sector specified by a physical position of a sector selected as invalid,
writing a new header for a sector selected in free space in the flash EEPROM memory array without data,
updating the second table with a new physical position of a new header for a sector specified by the first designation, and
repeating the process from the step of selecting a first designation for a sector from the first table until a selected number of sectors listed in the first table have been selected.
12. A process for releasing sectors of a flash EEPROM memory array as claimed in claim 9 in which the predetermined number of sectors listed in the first table is all of the sectors listed in the first table.
13. A process for releasing sectors of a flash EEPROM memory array as claimed in claim 9 in which the predetermined number of sectors listed in the first table is selected to leave a number of sectors equal to at least one host computer file in the first table.
14. A process for releasing sectors of a flash EEPROM memory array as claimed in claim 1 in which the step of storing a list of files and sectors which have been deleted by a host computer in a first table in host memory comprises listing all files and sectors of files indicated to be deleted in a host file allocation table.
15. A process for releasing sectors of a flash EEPROM memory array in which data furnished by a host computer is stored in compressed form so that memory space used for the sectors may be used to store new data, the flash EEPROM memory array including a plurality of individually erasable blocks and storing sectors of data in such blocks with a header providing a logical sector number, an indication of validity of data stored, the process comprising the steps of:
storing a list of files and sectors which have been deleted by a host computer in a first table in host memory, storing a value indicating an amount of free space remaining in the flash EEPROM memory array,
providing a first signal to the host computer when the value indicating the amount of free space falls below a first predetermined value to indicate that sectors listed in the first table should be released,
responding to the first signal by automatically releasing the data allotted to a predetermined number of sectors listed in the first table,
providing a second signal to the host computer when the value indicating the amount of free space falls below a second predetermined value to indicate that it is more urgent that sectors listed in the first table be released than when the first signal was given, and
responding to the second signal by automatically releasing the data allotted to a predetermined number of sectors listed in the first table,
providing a third signal when the value indicating the amount of free space falls below a third predetermined value, and
responding to the third signal by disabling write and erase operations in the flash EEPROM memory array.
16. A process for releasing sectors of a flash EEPROM memory array as claimed in claim 15 in which the steps of responding to the first and the second signals by automatically releasing the data allotted to a predetermined number of sectors listed in the first table
comprises the step of writing all sectors containing valid data to new storage areas from a block storing a plurality of invalid indications, and
erasing the block from which the valid data has been written.
US08/146,439 1992-10-30 1993-11-01 Method for releasing space in flash EEPROM memory array to allow the storage of compressed data Expired - Lifetime US5337275A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US08/146,439 US5337275A (en) 1992-10-30 1993-11-01 Method for releasing space in flash EEPROM memory array to allow the storage of compressed data

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US96975992A 1992-10-30 1992-10-30
US08/146,439 US5337275A (en) 1992-10-30 1993-11-01 Method for releasing space in flash EEPROM memory array to allow the storage of compressed data

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US96975992A Continuation 1992-10-30 1992-10-30

Publications (1)

Publication Number Publication Date
US5337275A true US5337275A (en) 1994-08-09

Family

ID=25515959

Family Applications (1)

Application Number Title Priority Date Filing Date
US08/146,439 Expired - Lifetime US5337275A (en) 1992-10-30 1993-11-01 Method for releasing space in flash EEPROM memory array to allow the storage of compressed data

Country Status (1)

Country Link
US (1) US5337275A (en)

Cited By (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995010083A1 (en) * 1993-10-04 1995-04-13 Cirrus Logic, Inc. Flash memory with reduced erasing and overwriting
US5432748A (en) * 1992-11-13 1995-07-11 Silicon Storager Technology, Inc. Solid state peripheral storage device
US5479638A (en) * 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
GB2298063A (en) * 1995-02-16 1996-08-21 Mitsubishi Electric Corp Semiconductor disk device
US5553261A (en) * 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
US5640529A (en) * 1993-07-29 1997-06-17 Intel Corporation Method and system for performing clean-up of a solid state disk during host command execution
WO1998008223A1 (en) * 1996-08-21 1998-02-26 Grundig Ag Process and circuit arrangement for storing dictations in a digital dictating machine
US5765175A (en) * 1994-08-26 1998-06-09 Intel Corporation System and method for removing deleted entries in file systems based on write-once or erase-slowly media
US5787445A (en) * 1996-03-07 1998-07-28 Norris Communications Corporation Operating system including improved file management for use in devices utilizing flash memory as main memory
US5838614A (en) * 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US5845313A (en) * 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US5896393A (en) * 1996-05-23 1999-04-20 Advanced Micro Devices, Inc. Simplified file management scheme for flash memory
US5907856A (en) * 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
WO1999027453A1 (en) 1997-11-24 1999-06-03 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
US5930815A (en) * 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US5928370A (en) * 1997-02-05 1999-07-27 Lexar Media, Inc. Method and apparatus for verifying erasure of memory blocks within a non-volatile memory structure
US5943692A (en) * 1997-04-30 1999-08-24 International Business Machines Corporation Mobile client computer system with flash memory management utilizing a virtual address map and variable length data
US5978808A (en) * 1995-12-27 1999-11-02 Intel Corporation Virtual small block file manager for flash memory array
US5987478A (en) * 1995-10-31 1999-11-16 Intel Corporation Virtual small block file manager for flash memory array
US6014724A (en) * 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US6034897A (en) * 1999-04-01 2000-03-07 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
US6038166A (en) * 1998-04-01 2000-03-14 Invox Technology High resolution multi-bit-per-cell memory
US6038636A (en) * 1998-04-27 2000-03-14 Lexmark International, Inc. Method and apparatus for reclaiming and defragmenting a flash memory device
US6040997A (en) * 1998-03-25 2000-03-21 Lexar Media, Inc. Flash memory leveling architecture having no external latch
US6076137A (en) * 1997-12-11 2000-06-13 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
US6081878A (en) * 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6122195A (en) * 1997-03-31 2000-09-19 Lexar Media, Inc. Method and apparatus for decreasing block write operation times performed on nonvolatile memory
EP1039473A2 (en) * 1999-03-23 2000-09-27 Toshiba Video Products Japan Co., Ltd. Digital data recording apparatus
US6141249A (en) * 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US6208273B1 (en) 1999-01-29 2001-03-27 Interactive Silicon, Inc. System and method for performing scalable embedded parallel data compression
US6262918B1 (en) 1999-04-01 2001-07-17 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
WO2001080000A2 (en) * 2000-04-12 2001-10-25 Intel Corporation Accessing file data stored in non-volatile re-programmable semiconductor memories
US20010038642A1 (en) * 1999-01-29 2001-11-08 Interactive Silicon, Inc. System and method for performing scalable embedded parallel data decompression
US20020010819A1 (en) * 1994-11-16 2002-01-24 Interactive Silicon, Inc. Memory controller including a hardware compression and decompression engine for managing system memory
US6374337B1 (en) 1998-11-17 2002-04-16 Lexar Media, Inc. Data pipelining method and apparatus for memory control circuit
US6411546B1 (en) 1997-03-31 2002-06-25 Lexar Media, Inc. Nonvolatile memory using flexible erasing methods and method and system for using same
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US20020101367A1 (en) * 1999-01-29 2002-08-01 Interactive Silicon, Inc. System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US20020188812A1 (en) * 2001-06-12 2002-12-12 Akila Sadhasivan Implementing a dual partition flash with suspend/resume capabilities
US20030058873A1 (en) * 1999-01-29 2003-03-27 Interactive Silicon, Incorporated Network device with improved storage density and access speed using compression techniques
US6567307B1 (en) 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
US20030126481A1 (en) * 2001-09-28 2003-07-03 Payne Robert Edwin Power management system
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
WO2004042740A1 (en) * 2002-11-08 2004-05-21 Infineon Technologies Ag Method for operating a memory arrangement
US6757800B1 (en) 1995-07-31 2004-06-29 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6772274B1 (en) 2000-09-13 2004-08-03 Lexar Media, Inc. Flash memory system and method implementing LBA to PBA correlation within flash memory array
US6801979B1 (en) 1995-07-31 2004-10-05 Lexar Media, Inc. Method and apparatus for memory control circuit
US20040205311A1 (en) * 2003-04-08 2004-10-14 International Business Machines Corporation Method, system, and apparatus for releasing storage in a fast replication environment
US6813678B1 (en) 1998-01-22 2004-11-02 Lexar Media, Inc. Flash memory system
US6819271B2 (en) 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6822589B1 (en) 1999-01-29 2004-11-23 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US20040243775A1 (en) * 2003-06-02 2004-12-02 Coulter Robert Clyde Host-independent incremental backup method, apparatus, and system
US20050013154A1 (en) * 2002-10-02 2005-01-20 Toshiyuki Honda Non-volatile storage device control method
US20050018527A1 (en) * 2001-09-28 2005-01-27 Gorobets Sergey Anatolievich Non-volatile memory control
US6879266B1 (en) 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US6898662B2 (en) 2001-09-28 2005-05-24 Lexar Media, Inc. Memory system sectors
US6950918B1 (en) 2002-01-18 2005-09-27 Lexar Media, Inc. File management of one-time-programmable nonvolatile memory devices
US6957295B1 (en) 2002-01-18 2005-10-18 Lexar Media, Inc. File management of one-time-programmable nonvolatile memory devices
US6978342B1 (en) * 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US20060020745A1 (en) * 2004-07-21 2006-01-26 Conley Kevin M Fat analysis for optimized sequential cluster management
US7000064B2 (en) 2001-09-28 2006-02-14 Lexar Media, Inc. Data handling system
US20060034124A1 (en) * 1997-08-07 2006-02-16 Sandisk Corporation Novel multi-state memory
US7102671B1 (en) 2000-02-08 2006-09-05 Lexar Media, Inc. Enhanced compact flash memory card
US20060224817A1 (en) * 2005-03-31 2006-10-05 Atri Sunil R NOR flash file allocation
US7155559B1 (en) 2000-08-25 2006-12-26 Lexar Media, Inc. Flash memory architecture with separate storage of overhead and user data
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US7185208B2 (en) 2001-09-28 2007-02-27 Lexar Media, Inc. Data processing
US7190284B1 (en) 1994-11-16 2007-03-13 Dye Thomas A Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
US7231643B1 (en) 2002-02-22 2007-06-12 Lexar Media, Inc. Image rescue system including direct communication between an application program and a device driver
US7275686B2 (en) 2003-12-17 2007-10-02 Lexar Media, Inc. Electronic equipment point-of-sale activation to avoid theft
US7280398B1 (en) * 2006-08-31 2007-10-09 Micron Technology, Inc. System and memory for sequential multi-plane page memory operations
US7340581B2 (en) 2001-09-28 2008-03-04 Lexar Media, Inc. Method of writing data to non-volatile memory
US20080064501A1 (en) * 2005-04-28 2008-03-13 Bally Gaming, Inc. Download and configuration capable gaming machine operating system, gaming machine and method
US7370166B1 (en) 2004-04-30 2008-05-06 Lexar Media, Inc. Secure portable storage device
US20080263293A1 (en) * 2007-04-19 2008-10-23 Gregory Tad Kishi Method for Selectively Performing a Secure Data Erase to Ensure Timely Erasure
US20080263271A1 (en) * 2007-04-19 2008-10-23 Gregory Tad Kishi System for Selectively Performing a Secure Data Erase to Ensure Timely Erasure
US7464306B1 (en) 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
US7594063B1 (en) 2004-08-27 2009-09-22 Lexar Media, Inc. Storage capacity status
US20100011150A1 (en) * 2008-07-10 2010-01-14 Dean Klein Data collection and compression in a solid state storage device
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US20100169543A1 (en) * 2008-12-31 2010-07-01 Joseph Edgington Recovery for non-volatile memory after power loss
US20100205354A1 (en) * 2008-03-26 2010-08-12 Masumi Suzuki Storage device using flash memory
EP2254053A3 (en) * 2004-07-21 2010-12-08 Sandisk Corporation Fat analysis for optimized sequential cluster management
US20110016239A1 (en) * 2009-07-20 2011-01-20 Ross John Stenfort System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
US7917709B2 (en) 2001-09-28 2011-03-29 Lexar Media, Inc. Memory system for data storage and retrieval
US20110125956A1 (en) * 2006-11-24 2011-05-26 Sandforce Inc. Techniques for multi-memory device lifetime management
US20110167199A1 (en) * 2006-11-24 2011-07-07 Sandforce Inc. Techniques for prolonging a lifetime of memory by controlling operations that affect the lifetime of the memory
US8001340B2 (en) 2007-04-19 2011-08-16 International Business Machines Corporation Method for determining allocation of tape drive resources for a secure data erase process
US8006050B2 (en) 2007-04-19 2011-08-23 International Business Machines Corporation System for determining allocation of tape drive resources for a secure data erase process
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US8230184B2 (en) 2007-11-19 2012-07-24 Lsi Corporation Techniques for writing data to different portions of storage devices based on write frequency
US8339881B2 (en) 2007-11-19 2012-12-25 Lsi Corporation Techniques for increasing a lifetime of blocks of memory
US8380949B2 (en) 2010-05-20 2013-02-19 International Business Machines Corporation Managing write operations to an extent of tracks migrated between storage devices
US8402184B2 (en) 2006-11-24 2013-03-19 Lsi Corporation Techniques for reducing memory write operations using coalescing memory buffers and difference information
WO2013098463A1 (en) * 2011-12-29 2013-07-04 Nokia Corporation Method for erasing data entity in memory module
US8504783B2 (en) 2006-12-08 2013-08-06 Lsi Corporation Techniques for providing data redundancy after reducing memory writes
TWI506421B (en) * 2007-11-28 2015-11-01 Lsi Corp System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
US9454492B2 (en) 2006-12-06 2016-09-27 Longitude Enterprise Flash S.A.R.L. Systems and methods for storage parallelism
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
CN106293517A (en) * 2007-04-19 2017-01-04 微软技术许可有限责任公司 Remove-on-delete technologies for solid state drive optimization
US20170038985A1 (en) * 2013-03-14 2017-02-09 Seagate Technology Llc Nonvolatile memory data recovery after power failure
US9672158B2 (en) * 2006-11-04 2017-06-06 Virident Systems Inc. Asymmetric memory migration in hybrid main memory
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
US10133663B2 (en) 2010-12-17 2018-11-20 Longitude Enterprise Flash S.A.R.L. Systems and methods for persistent address space management
US10558371B2 (en) 2006-12-06 2020-02-11 Fio Semiconductor Technologies, Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
CN111507072A (en) * 2019-01-31 2020-08-07 瑞昱半导体股份有限公司 Compression end and decompression end based on robust header compression and data processing method thereof

Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0175458A2 (en) * 1984-07-24 1986-03-26 Texas Instruments Incorporated Method for managing virtual memory to separate active and stable memory blocks
US4642759A (en) * 1984-04-02 1987-02-10 Targa Electronics Systems Inc. Bubble memory disk emulation system
US4644494A (en) * 1984-02-06 1987-02-17 Sundstrand Data Control, Inc. Solid state memory for aircraft flight data recorder systems
US4757533A (en) * 1985-09-11 1988-07-12 Computer Security Corporation Security system for microcomputers
US4802117A (en) * 1985-12-16 1989-01-31 Pitney Bowes Inc. Method of preserving data storage in a postal meter
US4896262A (en) * 1984-02-24 1990-01-23 Kabushiki Kaisha Meidensha Emulation device for converting magnetic disc memory mode signal from computer into semiconductor memory access mode signal for semiconductor memory
US4958315A (en) * 1985-07-02 1990-09-18 The United States Of America As Represented By The Secretary Of The Navy Solid state electronic emulator of a multiple track motor driven rotating magnetic memory
US5070474A (en) * 1988-07-26 1991-12-03 Disk Emulation Systems, Inc. Disk emulation system
US5077737A (en) * 1989-08-18 1991-12-31 Micron Technology, Inc. Method and apparatus for storing digital data in off-specification dynamic random access memory devices
GB2251323A (en) * 1990-12-31 1992-07-01 Intel Corp Disk emulation for a non-volatile semiconductor memory
GB2251324A (en) * 1990-12-31 1992-07-01 Intel Corp File structure for a non-volatile semiconductor memory
US5131089A (en) * 1989-06-12 1992-07-14 Grid Systems Corporation Solid state disk drive emulation
US5199033A (en) * 1990-05-10 1993-03-30 Quantum Corporation Solid state memory array using address block bit substitution to compensate for non-functional storage cells
US5200959A (en) * 1989-10-17 1993-04-06 Sundisk Corporation Device and method for defect handling in semi-conductor memory
US5224070A (en) * 1991-12-11 1993-06-29 Intel Corporation Apparatus for determining the conditions of programming circuitry used with flash EEPROM memory
CA2088442A1 (en) * 1992-01-29 1993-07-30 William J. Krueger Method and system for file system management using a flash-erasable, programmable, read-only memory
EP0392895B1 (en) * 1989-04-13 1995-12-13 Sundisk Corporation Flash EEprom system

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4644494A (en) * 1984-02-06 1987-02-17 Sundstrand Data Control, Inc. Solid state memory for aircraft flight data recorder systems
US4896262A (en) * 1984-02-24 1990-01-23 Kabushiki Kaisha Meidensha Emulation device for converting magnetic disc memory mode signal from computer into semiconductor memory access mode signal for semiconductor memory
US4642759A (en) * 1984-04-02 1987-02-10 Targa Electronics Systems Inc. Bubble memory disk emulation system
EP0175458A2 (en) * 1984-07-24 1986-03-26 Texas Instruments Incorporated Method for managing virtual memory to separate active and stable memory blocks
US4958315A (en) * 1985-07-02 1990-09-18 The United States Of America As Represented By The Secretary Of The Navy Solid state electronic emulator of a multiple track motor driven rotating magnetic memory
US4757533A (en) * 1985-09-11 1988-07-12 Computer Security Corporation Security system for microcomputers
US4802117A (en) * 1985-12-16 1989-01-31 Pitney Bowes Inc. Method of preserving data storage in a postal meter
US5070474A (en) * 1988-07-26 1991-12-03 Disk Emulation Systems, Inc. Disk emulation system
EP0392895B1 (en) * 1989-04-13 1995-12-13 Sundisk Corporation Flash EEprom system
US5131089A (en) * 1989-06-12 1992-07-14 Grid Systems Corporation Solid state disk drive emulation
US5077737A (en) * 1989-08-18 1991-12-31 Micron Technology, Inc. Method and apparatus for storing digital data in off-specification dynamic random access memory devices
US5200959A (en) * 1989-10-17 1993-04-06 Sundisk Corporation Device and method for defect handling in semi-conductor memory
US5199033A (en) * 1990-05-10 1993-03-30 Quantum Corporation Solid state memory array using address block bit substitution to compensate for non-functional storage cells
GB2251324A (en) * 1990-12-31 1992-07-01 Intel Corp File structure for a non-volatile semiconductor memory
GB2251323A (en) * 1990-12-31 1992-07-01 Intel Corp Disk emulation for a non-volatile semiconductor memory
US5224070A (en) * 1991-12-11 1993-06-29 Intel Corporation Apparatus for determining the conditions of programming circuitry used with flash EEPROM memory
CA2088442A1 (en) * 1992-01-29 1993-07-30 William J. Krueger Method and system for file system management using a flash-erasable, programmable, read-only memory

Cited By (258)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7898868B2 (en) 1992-01-14 2011-03-01 Sandisk Corporation Multi-state memory
US5432748A (en) * 1992-11-13 1995-07-11 Silicon Storager Technology, Inc. Solid state peripheral storage device
US5500826A (en) * 1992-11-13 1996-03-19 Silicon Storage Technology, Inc. Solid state peripheral storage device
US5479638A (en) * 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5640529A (en) * 1993-07-29 1997-06-17 Intel Corporation Method and system for performing clean-up of a solid state disk during host command execution
WO1995010083A1 (en) * 1993-10-04 1995-04-13 Cirrus Logic, Inc. Flash memory with reduced erasing and overwriting
US5553261A (en) * 1994-04-01 1996-09-03 Intel Corporation Method of performing clean-up of a solid state disk while executing a read command
US5765175A (en) * 1994-08-26 1998-06-09 Intel Corporation System and method for removing deleted entries in file systems based on write-once or erase-slowly media
US6170047B1 (en) 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US20090125698A1 (en) * 1994-11-16 2009-05-14 Dye Thomas A Memory controller including a hardware compression and decompression engine for managing system memory and graphical operations
US7190284B1 (en) 1994-11-16 2007-03-13 Dye Thomas A Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
US8711164B2 (en) 1994-11-16 2014-04-29 Intellectual Ventures I Llc Memory controller including a hardware compression and decompression engine for managing system memory and graphical operations
US8176288B2 (en) 1994-11-16 2012-05-08 Mossman Holdings Llc Memory controller including a hardware compression and decompression engine for managing system memory and graphical operations
US6370631B1 (en) * 1994-11-16 2002-04-09 Interactive Silicon, Inc. Memory controller including compression/decompression capabilities for improved data access
US20020010819A1 (en) * 1994-11-16 2002-01-24 Interactive Silicon, Inc. Memory controller including a hardware compression and decompression engine for managing system memory
GB2298063B (en) * 1995-02-16 1997-04-02 Mitsubishi Electric Corp Semiconductor disk device
GB2298063A (en) * 1995-02-16 1996-08-21 Mitsubishi Electric Corp Semiconductor disk device
US7111140B2 (en) 1995-07-31 2006-09-19 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6128695A (en) * 1995-07-31 2000-10-03 Lexar Media, Inc. Identification and verification of a sector within a block of mass storage flash memory
US8397019B2 (en) 1995-07-31 2013-03-12 Micron Technology, Inc. Memory for accessing multiple sectors of information substantially concurrently
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US20040199714A1 (en) * 1995-07-31 2004-10-07 Petro Estakhri Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6801979B1 (en) 1995-07-31 2004-10-05 Lexar Media, Inc. Method and apparatus for memory control circuit
US7549013B2 (en) 1995-07-31 2009-06-16 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6912618B2 (en) 1995-07-31 2005-06-28 Lexar Media, Inc. Direct logical block addressing flash memory mass storage architecture
US8032694B2 (en) 1995-07-31 2011-10-04 Micron Technology, Inc. Direct logical block addressing flash memory mass storage architecture
US6757800B1 (en) 1995-07-31 2004-06-29 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US8554985B2 (en) 1995-07-31 2013-10-08 Micron Technology, Inc. Memory block identified by group of logical block addresses, storage device with movable sectors, and methods
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6115785A (en) * 1995-07-31 2000-09-05 Lexar Media, Inc. Direct logical block addressing flash memory mass storage architecture
US6978342B1 (en) * 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5845313A (en) * 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US8078797B2 (en) 1995-07-31 2011-12-13 Micron Technology, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US7908426B2 (en) 1995-07-31 2011-03-15 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5907856A (en) * 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US7523249B1 (en) 1995-07-31 2009-04-21 Lexar Media, Inc. Direct logical block addressing flash memory mass storage architecture
US5838614A (en) * 1995-07-31 1998-11-17 Lexar Microsystems, Inc. Identification and verification of a sector within a block of mass storage flash memory
US8793430B2 (en) 1995-07-31 2014-07-29 Micron Technology, Inc. Electronic system having memory with a physical block having a sector storing data and indicating a move status of another sector of the physical block
US6145051A (en) * 1995-07-31 2000-11-07 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5930815A (en) * 1995-07-31 1999-07-27 Lexar Media, Inc. Moving sequential sectors within a block of information in a flash memory mass storage architecture
US6172906B1 (en) 1995-07-31 2001-01-09 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US7441090B2 (en) 1995-07-31 2008-10-21 Lexar Media, Inc. System and method for updating data sectors in a non-volatile memory using logical block addressing
US6202138B1 (en) 1995-07-31 2001-03-13 Lexar Media, Inc Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US7424593B2 (en) 1995-07-31 2008-09-09 Micron Technology, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6223308B1 (en) 1995-07-31 2001-04-24 Lexar Media, Inc. Identification and verification of a sector within a block of mass STO rage flash memory
US7263591B2 (en) 1995-07-31 2007-08-28 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6397314B1 (en) 1995-07-31 2002-05-28 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US9026721B2 (en) 1995-07-31 2015-05-05 Micron Technology, Inc. Managing defective areas of memory
US7774576B2 (en) 1995-07-31 2010-08-10 Lexar Media, Inc. Direct logical block addressing flash memory mass storage architecture
US6393513B2 (en) 1995-07-31 2002-05-21 Lexar Media, Inc. Identification and verification of a sector within a block of mass storage flash memory
US6125435A (en) * 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
US6014724A (en) * 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US5987478A (en) * 1995-10-31 1999-11-16 Intel Corporation Virtual small block file manager for flash memory array
US5978808A (en) * 1995-12-27 1999-11-02 Intel Corporation Virtual small block file manager for flash memory array
US5787445A (en) * 1996-03-07 1998-07-28 Norris Communications Corporation Operating system including improved file management for use in devices utilizing flash memory as main memory
US5839108A (en) * 1996-03-07 1998-11-17 Norris Communications, Inc. Flash memory file system in a handheld record and playback device
US5896393A (en) * 1996-05-23 1999-04-20 Advanced Micro Devices, Inc. Simplified file management scheme for flash memory
WO1998008223A1 (en) * 1996-08-21 1998-02-26 Grundig Ag Process and circuit arrangement for storing dictations in a digital dictating machine
US6275804B1 (en) 1996-08-21 2001-08-14 Grundig Ag Process and circuit arrangement for storing dictations in a digital dictating machine
US5928370A (en) * 1997-02-05 1999-07-27 Lexar Media, Inc. Method and apparatus for verifying erasure of memory blocks within a non-volatile memory structure
US6081878A (en) * 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6411546B1 (en) 1997-03-31 2002-06-25 Lexar Media, Inc. Nonvolatile memory using flexible erasing methods and method and system for using same
US6122195A (en) * 1997-03-31 2000-09-19 Lexar Media, Inc. Method and apparatus for decreasing block write operation times performed on nonvolatile memory
US6587382B1 (en) 1997-03-31 2003-07-01 Lexar Media, Inc. Nonvolatile memory using flexible erasing methods and method and system for using same
US5943692A (en) * 1997-04-30 1999-08-24 International Business Machines Corporation Mobile client computer system with flash memory management utilizing a virtual address map and variable length data
US7573740B2 (en) 1997-08-07 2009-08-11 Sandisk Corporation Multi-state memory
US20060034124A1 (en) * 1997-08-07 2006-02-16 Sandisk Corporation Novel multi-state memory
US7385843B2 (en) 1997-08-07 2008-06-10 Sandisk Corporation Multi-state memory
US6879266B1 (en) 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
EP1036364A1 (en) * 1997-11-24 2000-09-20 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
EP1036364B1 (en) * 1997-11-24 2011-01-12 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
WO1999027453A1 (en) 1997-11-24 1999-06-03 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
US6327639B1 (en) 1997-12-11 2001-12-04 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
US6076137A (en) * 1997-12-11 2000-06-13 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
US6813678B1 (en) 1998-01-22 2004-11-02 Lexar Media, Inc. Flash memory system
US6040997A (en) * 1998-03-25 2000-03-21 Lexar Media, Inc. Flash memory leveling architecture having no external latch
US6038166A (en) * 1998-04-01 2000-03-14 Invox Technology High resolution multi-bit-per-cell memory
US6038636A (en) * 1998-04-27 2000-03-14 Lexmark International, Inc. Method and apparatus for reclaiming and defragmenting a flash memory device
US6374337B1 (en) 1998-11-17 2002-04-16 Lexar Media, Inc. Data pipelining method and apparatus for memory control circuit
US6819271B2 (en) 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US7129860B2 (en) 1999-01-29 2006-10-31 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US6822589B1 (en) 1999-01-29 2004-11-23 Quickshift, Inc. System and method for performing scalable embedded parallel data decompression
US6885319B2 (en) 1999-01-29 2005-04-26 Quickshift, Inc. System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US7538694B2 (en) 1999-01-29 2009-05-26 Mossman Holdings Llc Network device with improved storage density and access speed using compression techniques
US20020101367A1 (en) * 1999-01-29 2002-08-01 Interactive Silicon, Inc. System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US20010038642A1 (en) * 1999-01-29 2001-11-08 Interactive Silicon, Inc. System and method for performing scalable embedded parallel data decompression
US6208273B1 (en) 1999-01-29 2001-03-27 Interactive Silicon, Inc. System and method for performing scalable embedded parallel data compression
US20030058873A1 (en) * 1999-01-29 2003-03-27 Interactive Silicon, Incorporated Network device with improved storage density and access speed using compression techniques
EP1039473A3 (en) * 1999-03-23 2001-02-07 Toshiba Video Products Japan Co., Ltd. Digital data recording apparatus
EP1039473A2 (en) * 1999-03-23 2000-09-27 Toshiba Video Products Japan Co., Ltd. Digital data recording apparatus
US6467016B1 (en) 1999-03-23 2002-10-15 Kabushiki Kaisha Toshiba Apparatus to record digital data on non-volatile memory card for recording in units of blocks of digital data and method thereof
US6141249A (en) * 1999-04-01 2000-10-31 Lexar Media, Inc. Organization of blocks within a nonvolatile memory unit to effectively decrease sector write operation time
US6262918B1 (en) 1999-04-01 2001-07-17 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
US6134151A (en) * 1999-04-01 2000-10-17 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
US6034897A (en) * 1999-04-01 2000-03-07 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
US7102671B1 (en) 2000-02-08 2006-09-05 Lexar Media, Inc. Enhanced compact flash memory card
US20060109712A1 (en) * 2000-02-17 2006-05-25 Conley Kevin M Flash EEPROM system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US7646667B2 (en) 2000-02-17 2010-01-12 Sandisk Corporation Flash EEprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US20090175082A1 (en) * 2000-02-17 2009-07-09 Conley Kevin M Flash EEprom System With Simultaneous Multiple Data Sector Programming and Storage of Physical Block Characteristics in Other Designated Blocks
US20090175080A1 (en) * 2000-02-17 2009-07-09 Conley Kevin M Flash EEprom System With Simultaneous Multiple Data Sector Programming and Storage of Physical Block Characteristics in Other Designated Blocks
US7532511B2 (en) 2000-02-17 2009-05-12 Sandisk Corporation Flash EEPROM system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6760255B2 (en) 2000-02-17 2004-07-06 Sandisk Corporation Flash EEPROM system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US8503240B2 (en) 2000-02-17 2013-08-06 Sandisk Corporation Flash EEPROM system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US8223547B2 (en) 2000-02-17 2012-07-17 Sandisk Corporation Flash EEprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US7889554B2 (en) 2000-02-17 2011-02-15 Sandisk Corporation Flash EEPROM system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US7184306B2 (en) 2000-02-17 2007-02-27 Sandisk Corporation Flash EEPROM system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6996008B2 (en) 2000-02-17 2006-02-07 Sandisk Corporation Flash EEPROM system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US7889590B2 (en) 2000-02-17 2011-02-15 Sandisk Corporation Flash EEPROM system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US7362613B2 (en) 2000-02-17 2008-04-22 Sandisk Corporation Flash EEPROM system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6580638B2 (en) 2000-02-17 2003-06-17 Sandisk Corporation Flash EEPROM system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US8797798B2 (en) 2000-02-17 2014-08-05 Sandisk Corporation Flash EEPROM system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US7646666B2 (en) 2000-02-17 2010-01-12 Sandisk Corporation Flash EEPROM system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US20090204651A1 (en) * 2000-04-12 2009-08-13 Rhoads Edward R Accessing file data stored in non-volatile re-programmable semiconductor memories
US6741978B1 (en) 2000-04-12 2004-05-25 Intel Corporation Accessing file data stored in non-volatile re-programmable semiconductor memories
WO2001080000A2 (en) * 2000-04-12 2001-10-25 Intel Corporation Accessing file data stored in non-volatile re-programmable semiconductor memories
US8078586B2 (en) 2000-04-12 2011-12-13 Intel Corporation Accessing file data stored in non-volatile re-programmable semiconductor memories
WO2001080000A3 (en) * 2000-04-12 2002-09-06 Intel Corp Accessing file data stored in non-volatile re-programmable semiconductor memories
US20040230573A1 (en) * 2000-04-12 2004-11-18 Rhoads Edward R. Accessing file data stored in non-volatile re-programmable semiconductor memories
CN100399276C (en) * 2000-04-12 2008-07-02 英特尔公司 Accessing file data stored in non-volatile reprogrammable semiconductor memories
US7519632B2 (en) * 2000-04-12 2009-04-14 Intel Corporation Accessing file data stored in non-volatile re-programmable semiconductor memories
US8250294B2 (en) 2000-07-21 2012-08-21 Micron Technology, Inc. Block management for mass storage
US7734862B2 (en) 2000-07-21 2010-06-08 Lexar Media, Inc. Block management for mass storage
US8019932B2 (en) 2000-07-21 2011-09-13 Micron Technology, Inc. Block management for mass storage
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US6567307B1 (en) 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
US20090259807A1 (en) * 2000-08-25 2009-10-15 Micron Technology, Inc. Flash memory architecture with separate storage of overhead and user data
US7155559B1 (en) 2000-08-25 2006-12-26 Lexar Media, Inc. Flash memory architecture with separate storage of overhead and user data
US9384127B2 (en) 2000-08-25 2016-07-05 Micron Technology, Inc. Flash memory architecture with separate storage of overhead and user data
US8161229B2 (en) 2000-08-25 2012-04-17 Micron Technology, Inc. Flash memory architecture with separate storage of overhead and user data
US8595421B2 (en) 2000-08-25 2013-11-26 Petro Estakhri Flash memory architecture with separate storage of overhead and user data
US10078449B2 (en) 2000-08-25 2018-09-18 Micron Technology, Inc. Flash memory architecture with separate storage of overhead and user data
US6772274B1 (en) 2000-09-13 2004-08-03 Lexar Media, Inc. Flash memory system and method implementing LBA to PBA correlation within flash memory array
US20020188812A1 (en) * 2001-06-12 2002-12-12 Akila Sadhasivan Implementing a dual partition flash with suspend/resume capabilities
US7062616B2 (en) * 2001-06-12 2006-06-13 Intel Corporation Implementing a dual partition flash with suspend/resume capabilities
US7000064B2 (en) 2001-09-28 2006-02-14 Lexar Media, Inc. Data handling system
US8135925B2 (en) 2001-09-28 2012-03-13 Micron Technology, Inc. Methods of operating a memory system
US9489301B2 (en) 2001-09-28 2016-11-08 Micron Technology, Inc. Memory systems
US7944762B2 (en) 2001-09-28 2011-05-17 Micron Technology, Inc. Non-volatile memory control
US8386695B2 (en) 2001-09-28 2013-02-26 Micron Technology, Inc. Methods and apparatus for writing data to non-volatile memory
US20030126481A1 (en) * 2001-09-28 2003-07-03 Payne Robert Edwin Power management system
US20120173804A1 (en) * 2001-09-28 2012-07-05 Micron Technology, Inc Methods of operating a memory system
US8208322B2 (en) 2001-09-28 2012-06-26 Micron Technology, Inc. Non-volatile memory control
US9032134B2 (en) * 2001-09-28 2015-05-12 Micron Technology, Inc. Methods of operating a memory system that include outputting a data pattern from a sector allocation table to a host if a logical sector is indicated as being erased
US7917709B2 (en) 2001-09-28 2011-03-29 Lexar Media, Inc. Memory system for data storage and retrieval
US7681057B2 (en) 2001-09-28 2010-03-16 Lexar Media, Inc. Power management of non-volatile memory systems
US7185208B2 (en) 2001-09-28 2007-02-27 Lexar Media, Inc. Data processing
US7340581B2 (en) 2001-09-28 2008-03-04 Lexar Media, Inc. Method of writing data to non-volatile memory
US8694722B2 (en) 2001-09-28 2014-04-08 Micron Technology, Inc. Memory systems
US7215580B2 (en) 2001-09-28 2007-05-08 Lexar Media, Inc. Non-volatile memory control
US7254724B2 (en) 2001-09-28 2007-08-07 Lexar Media, Inc. Power management system
US20050018527A1 (en) * 2001-09-28 2005-01-27 Gorobets Sergey Anatolievich Non-volatile memory control
US6898662B2 (en) 2001-09-28 2005-05-24 Lexar Media, Inc. Memory system sectors
US6950918B1 (en) 2002-01-18 2005-09-27 Lexar Media, Inc. File management of one-time-programmable nonvolatile memory devices
US6957295B1 (en) 2002-01-18 2005-10-18 Lexar Media, Inc. File management of one-time-programmable nonvolatile memory devices
US7231643B1 (en) 2002-02-22 2007-06-12 Lexar Media, Inc. Image rescue system including direct communication between an application program and a device driver
US8166488B2 (en) 2002-02-22 2012-04-24 Micron Technology, Inc. Methods of directly accessing a mass storage data device
US9213606B2 (en) 2002-02-22 2015-12-15 Micron Technology, Inc. Image rescue
EP1843358A1 (en) * 2002-10-02 2007-10-10 Matsushita Electric Industrial Co., Ltd. Control method of a non-voaltile memory apparatus
US20050013154A1 (en) * 2002-10-02 2005-01-20 Toshiyuki Honda Non-volatile storage device control method
US20050251643A1 (en) * 2002-11-08 2005-11-10 Infineon Technologies Ag Memory arrangement
WO2004042740A1 (en) * 2002-11-08 2004-05-21 Infineon Technologies Ag Method for operating a memory arrangement
US20060129775A1 (en) * 2003-04-08 2006-06-15 Hulsey John A Method, system and apparatus for releasing storage in a fast replication environment
US20040205311A1 (en) * 2003-04-08 2004-10-14 International Business Machines Corporation Method, system, and apparatus for releasing storage in a fast replication environment
US7032090B2 (en) 2003-04-08 2006-04-18 International Business Machines Corporation Method, system, and apparatus for releasing storage in a fast replication environment
US7069402B2 (en) 2003-06-02 2006-06-27 International Business Machines Corporation Host-independent incremental backup method, apparatus, and system
US20040243775A1 (en) * 2003-06-02 2004-12-02 Coulter Robert Clyde Host-independent incremental backup method, apparatus, and system
US7275686B2 (en) 2003-12-17 2007-10-02 Lexar Media, Inc. Electronic equipment point-of-sale activation to avoid theft
US8090886B2 (en) 2004-04-20 2012-01-03 Micron Technology, Inc. Direct secondary device interface by a host
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US8316165B2 (en) 2004-04-20 2012-11-20 Micron Technology, Inc. Direct secondary device interface by a host
US10049207B2 (en) 2004-04-30 2018-08-14 Micron Technology, Inc. Methods of operating storage systems including encrypting a key salt
US7370166B1 (en) 2004-04-30 2008-05-06 Lexar Media, Inc. Secure portable storage device
US9576154B2 (en) 2004-04-30 2017-02-21 Micron Technology, Inc. Methods of operating storage systems including using a key to determine whether a password can be changed
US8151041B2 (en) 2004-04-30 2012-04-03 Micron Technology, Inc. Removable storage device
US8612671B2 (en) 2004-04-30 2013-12-17 Micron Technology, Inc. Removable devices
US7865659B2 (en) 2004-04-30 2011-01-04 Micron Technology, Inc. Removable storage device
US20060020745A1 (en) * 2004-07-21 2006-01-26 Conley Kevin M Fat analysis for optimized sequential cluster management
US8607016B2 (en) 2004-07-21 2013-12-10 Sandisk Technologies Inc. FAT analysis for optimized sequential cluster management
EP2254053A3 (en) * 2004-07-21 2010-12-08 Sandisk Corporation Fat analysis for optimized sequential cluster management
US7743290B2 (en) 2004-08-27 2010-06-22 Lexar Media, Inc. Status of overall health of nonvolatile memory
US7949822B2 (en) 2004-08-27 2011-05-24 Micron Technology, Inc. Storage capacity status
US7464306B1 (en) 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
US7594063B1 (en) 2004-08-27 2009-09-22 Lexar Media, Inc. Storage capacity status
US8296545B2 (en) 2004-08-27 2012-10-23 Micron Technology, Inc. Storage capacity status
US20060224817A1 (en) * 2005-03-31 2006-10-05 Atri Sunil R NOR flash file allocation
US20080064501A1 (en) * 2005-04-28 2008-03-13 Bally Gaming, Inc. Download and configuration capable gaming machine operating system, gaming machine and method
US8900054B2 (en) * 2005-04-28 2014-12-02 Bally Gaming, Inc. Download and configuration capable gaming machine operating system, gaming machine and method
US7450462B2 (en) 2006-08-31 2008-11-11 Micron Technology, Inc. System and memory for sequential multi-plane page memory operations
US7280398B1 (en) * 2006-08-31 2007-10-09 Micron Technology, Inc. System and memory for sequential multi-plane page memory operations
US7580283B2 (en) 2006-08-31 2009-08-25 Micron Technology, Inc. System and memory for sequential multi-plane page memory operations
US8289802B2 (en) 2006-08-31 2012-10-16 Round Rock Research, Llc System and memory for sequential multi-plane page memory operations
US20080055993A1 (en) * 2006-08-31 2008-03-06 Micron Technology, Inc. System and memory for sequential multi-plane page memory operations
US20110164453A1 (en) * 2006-08-31 2011-07-07 Round Rock Research, Llc System and memory for sequential multi-plane page memory operations
US20100008144A1 (en) * 2006-08-31 2010-01-14 Micron Technology, Inc. System and memory for sequential multi-plane page memory operations
US20080056026A1 (en) * 2006-08-31 2008-03-06 Micron Technology, Inc System and memory for sequential multi-plane page memory operations
US8050131B2 (en) 2006-08-31 2011-11-01 Round Rock Research, Llc System and memory for sequential multi-plane page memory operations
US9672158B2 (en) * 2006-11-04 2017-06-06 Virident Systems Inc. Asymmetric memory migration in hybrid main memory
US8230183B2 (en) 2006-11-24 2012-07-24 Lsi Corporation Techniques for prolonging a lifetime of memory by controlling operations that affect the lifetime of the memory
US8402184B2 (en) 2006-11-24 2013-03-19 Lsi Corporation Techniques for reducing memory write operations using coalescing memory buffers and difference information
US8230164B2 (en) 2006-11-24 2012-07-24 Lsi Corporation Techniques for multi-memory device lifetime management
US20110167199A1 (en) * 2006-11-24 2011-07-07 Sandforce Inc. Techniques for prolonging a lifetime of memory by controlling operations that affect the lifetime of the memory
US20110125956A1 (en) * 2006-11-24 2011-05-26 Sandforce Inc. Techniques for multi-memory device lifetime management
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US9632727B2 (en) 2006-12-06 2017-04-25 Longitude Enterprise Flash S.A.R.L. Systems and methods for identifying storage resources that are not in use
US9575902B2 (en) 2006-12-06 2017-02-21 Longitude Enterprise Flash S.A.R.L. Apparatus, system, and method for managing commands of solid-state storage using bank interleave
US10387327B2 (en) 2006-12-06 2019-08-20 Fio Semiconductor Technologies, Llc Systems and methods for identifying storage resources that are not in use
US9454492B2 (en) 2006-12-06 2016-09-27 Longitude Enterprise Flash S.A.R.L. Systems and methods for storage parallelism
US10558371B2 (en) 2006-12-06 2020-02-11 Fio Semiconductor Technologies, Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
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
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
US8504783B2 (en) 2006-12-08 2013-08-06 Lsi Corporation Techniques for providing data redundancy after reducing memory writes
US20080263271A1 (en) * 2007-04-19 2008-10-23 Gregory Tad Kishi System for Selectively Performing a Secure Data Erase to Ensure Timely Erasure
CN106293517B (en) * 2007-04-19 2019-09-20 微软技术许可有限责任公司 Remove-on-delete technologies for solid state drive optimization
US8006050B2 (en) 2007-04-19 2011-08-23 International Business Machines Corporation System for determining allocation of tape drive resources for a secure data erase process
US9098717B2 (en) 2007-04-19 2015-08-04 International Business Machines Corporation System for selectively performing a secure data erase to ensure timely erasure
US9141303B2 (en) 2007-04-19 2015-09-22 International Business Machines Corporation Method for selectively performing a secure data erase to ensure timely erasure
US8301834B2 (en) 2007-04-19 2012-10-30 International Business Machines Corporation System for determining allocation of tape drive resources for a secure data erase process
US8332599B2 (en) 2007-04-19 2012-12-11 International Business Machines Corporation Method for determining allocation of tape drive resources for a secure data erase process
US10976928B2 (en) 2007-04-19 2021-04-13 Microsoft Technology Licensing, Llc Remove-on-delete technologies for solid state drive optimization
US8001340B2 (en) 2007-04-19 2011-08-16 International Business Machines Corporation Method for determining allocation of tape drive resources for a secure data erase process
US20110225357A1 (en) * 2007-04-19 2011-09-15 International Business Machines Corporation System for Determining Allocation of Tape Drive Resources for a Secure Data Erase Process
US8661195B2 (en) 2007-04-19 2014-02-25 International Business Machines Corporation Reallocation of tape drive resources associated with a secure data erase process
US20080263293A1 (en) * 2007-04-19 2008-10-23 Gregory Tad Kishi Method for Selectively Performing a Secure Data Erase to Ensure Timely Erasure
US20110225356A1 (en) * 2007-04-19 2011-09-15 International Business Machines Corporation Method for Determining Allocation of Tape Drive Resources for a Secure Data Erase Process
CN106293517A (en) * 2007-04-19 2017-01-04 微软技术许可有限责任公司 Remove-on-delete technologies for solid state drive optimization
US9542109B2 (en) 2007-04-19 2017-01-10 International Business Machines Corporation Method for selectively performing a secure data erase to ensure timely erasure
US9933959B2 (en) 2007-04-19 2018-04-03 International Business Machines Corporation Method for selectively performing a secure data erase to ensure timely erasure
US8339881B2 (en) 2007-11-19 2012-12-25 Lsi Corporation Techniques for increasing a lifetime of blocks of memory
US8230184B2 (en) 2007-11-19 2012-07-24 Lsi Corporation Techniques for writing data to different portions of storage devices based on write frequency
US10318181B2 (en) 2007-11-28 2019-06-11 Seagate Technology Llc System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
TWI506421B (en) * 2007-11-28 2015-11-01 Lsi Corp System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
US9645750B2 (en) 2007-11-28 2017-05-09 Seagate Technology Llc System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
US9183133B2 (en) * 2007-11-28 2015-11-10 Seagate Technology Llc System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
US20100205354A1 (en) * 2008-03-26 2010-08-12 Masumi Suzuki Storage device using flash memory
US20100011150A1 (en) * 2008-07-10 2010-01-14 Dean Klein Data collection and compression in a solid state storage device
US10691588B2 (en) 2008-07-10 2020-06-23 Micron Technology, Inc. Memory systems for data collection and compression in a storage device
US9772936B2 (en) * 2008-07-10 2017-09-26 Micron Technology, Inc. Data collection and compression in a solid state storage device
US10176091B2 (en) 2008-07-10 2019-01-08 Micron Technology, Inc. Methods of operating a memory system including data collection and compression
US9612954B2 (en) * 2008-12-31 2017-04-04 Micron Technology, Inc. Recovery for non-volatile memory after power loss
US20100169543A1 (en) * 2008-12-31 2010-07-01 Joseph Edgington Recovery for non-volatile memory after power loss
US10552311B2 (en) 2008-12-31 2020-02-04 Micron Technology, Inc. Recovery for non-volatile memory after power loss
US8516166B2 (en) 2009-07-20 2013-08-20 Lsi Corporation System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
US20110016239A1 (en) * 2009-07-20 2011-01-20 Ross John Stenfort System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
US8656122B2 (en) 2010-05-20 2014-02-18 International Business Machines Corporation Managing write operations to an extent of tracks migrated between storage devices
US8380949B2 (en) 2010-05-20 2013-02-19 International Business Machines Corporation Managing write operations to an extent of tracks migrated between storage devices
US9218141B2 (en) 2010-05-20 2015-12-22 International Business Machines Corporation Managing write operations to an extent of tracks migrated between storage devices
US10133663B2 (en) 2010-12-17 2018-11-20 Longitude Enterprise Flash S.A.R.L. Systems and methods for persistent address space management
US10048884B2 (en) 2011-12-29 2018-08-14 Memory Technologies Llc Method for erasing data entity in memory module
WO2013098463A1 (en) * 2011-12-29 2013-07-04 Nokia Corporation Method for erasing data entity in memory module
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
US10048879B2 (en) * 2013-03-14 2018-08-14 Seagate Technology Llc Nonvolatile memory recovery after power failure during write operations or erase operations
US20170038985A1 (en) * 2013-03-14 2017-02-09 Seagate Technology Llc Nonvolatile memory data recovery after power failure
CN111507072A (en) * 2019-01-31 2020-08-07 瑞昱半导体股份有限公司 Compression end and decompression end based on robust header compression and data processing method thereof
US11240352B2 (en) * 2019-01-31 2022-02-01 Realtek Semiconductor Corporation Compressor and decompressor based on Robust Header Compression

Similar Documents

Publication Publication Date Title
US5337275A (en) Method for releasing space in flash EEPROM memory array to allow the storage of compressed data
US5357475A (en) Method for detaching sectors in a flash EEPROM memory array
US5341330A (en) Method for writing to a flash memory array during erase suspend intervals
US5341339A (en) Method for wear leveling in a flash EEPROM memory
EP1739683B1 (en) Space management for managing high capacity nonvolatile memory
EP1228510B1 (en) Space management for managing high capacity nonvolatile memory
EP1410399B1 (en) Method and apparatus for decreasing block write operation times performed on nonvolatile memory
US5581723A (en) Method and apparatus for retaining flash block structure data during erase operations in a flash EEPROM memory array
EP0712067B1 (en) Flash disk card
US6170066B1 (en) Power-off recovery management for sector based flash media managers
JP4588431B2 (en) Faster write operations to non-volatile memory due to the operation of frequently accessed sectors
JP3695766B2 (en) Memory defect management method
KR100324028B1 (en) Method for performing a continuous over-write of a file in a nonvolatile memory
US5448577A (en) Method for reliably storing non-data fields in a flash EEPROM memory array
US5987478A (en) Virtual small block file manager for flash memory array
KR100975178B1 (en) Data storage device
US7752412B2 (en) Methods of managing file allocation table information
US7681008B2 (en) Systems for managing file allocation table information
US5841699A (en) Storage device and method to detect its degradation
JP2003308241A (en) Data storage device
KR20040067856A (en) Memory Device and Recording/Reproducing Apparatus Using the Same
US5724544A (en) IC memory card utilizing dual eeproms for image and management data
KR100914646B1 (en) Management Scheme for Flash Memory with the Multi-Plane Architecture
KR20010037155A (en) Flash file system
EP0338839A2 (en) Optical recording medium recording and reproducing device

Legal Events

Date Code Title Description
STCF Information on status: patent grant

Free format text: PATENTED CASE

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

REMI Maintenance fee reminder mailed
FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 12