A method and system for memory management of a block-erasable flash-EProm. The system comprises a FEProm manager and a file system. The FEProm manager manages memory allocation and deallocation of the FEProm. The file system is a hierarchical directory system and uses the FEProm manager to allocate and deallocate memory. In a preferred embodiment, the FEProm manager of the present invention provides for allocation of free space, deallocation of allocated space, and reclamation of deallocated space in a block-erasable FEProm. Each block of the FEProm contains a block allocation structure, data regions, and free space. The block allocation structure contains an allocation array which describes the allocation of the data region. |
Citations|
| US4408273 | May 27, 1980 | Oct 4, 1983 | International Business Machines Corporation | Method and means for cataloging data sets using dual keyed data sets and direct pointers | | US4435752 | Apr 9, 1980 | Mar 6, 1984 | Texas Instruments Incorporated | Allocation of rotating memory device storage locations | | US4507752 | Feb 22, 1983 | Mar 26, 1985 | International Business Machines Corporation | In-place index compression | | US4584644 | Mar 8, 1982 | Apr 22, 1986 | International Business Machines Corp. | Method of controlling use of resources in a data processing system by at least two processes | | US4606002 | Aug 17, 1983 | Aug 12, 1986 | Wang Laboratories, Inc. | B-tree structured data base using sparse array bit maps to store inverted lists | | US4630234 | Apr 11, 1983 | Dec 16, 1986 | GTI Corporation | Linked list search processor | | US4704678 | Nov 16, 1983 | Nov 3, 1987 | Inmos Limited | Function set for a microcomputer | | US4939598 | Feb 8, 1988 | Jul 3, 1990 | International Business Machines Corporation | Managing data storage space on large capacity record media | | US4942541 | Jan 22, 1988 | Jul 17, 1990 | Oms, Inc. | Patchification system | | US4953080 | Apr 25, 1988 | Aug 28, 1990 | Hewlett-Packard Company | Object management facility for maintaining data in a computer system | | US4953122 | Oct 31, 1986 | Aug 28, 1990 | Laserdrive Ltd. | Pseudo-erasable and rewritable write-once optical disk memory system | | US4989132 | Oct 24, 1988 | Jan 29, 1991 | Eastman Kodak Company | Object-oriented, logic, and database programming tool with garbage collection | | US5025367 | May 28, 1987 | Jun 18, 1991 | Victoria University of Manchester Matsushita Electrical Industrial Co., Ltd. | Storage allocation and garbage collection using liberate space tokens | | US5029125 | Mar 7, 1989 | Jul 2, 1991 | Drexler Technology Corporation | Method of reading and writing files on nonerasable storage media | | US5060147 | Aug 22, 1989 | Oct 22, 1991 | General Electric Company | String length determination on a distributed processing system | | US5115504 | Nov 1, 1988 | May 19, 1992 | Lotus Development Corporation | Information management system | | US5132853 | Apr 4, 1990 | Jul 21, 1992 | International Business Machines Corporation | Allocation procedures for optical disk recorders | | US5161256 | Aug 24, 1989 | Nov 3, 1992 | Kabushiki Kaisha Toshiba | Method and system for allocating file area in memory area of IC card | | US5229992 | Mar 28, 1991 | Jul 20, 1993 | Sprint International Communications Corp. | Fixed interval composite framing in integrated services networks | | US5247516 | Mar 28, 1991 | Sep 21, 1993 | Sprint International Communications Corp. | Configurable composite data frame | | US5247658 | Oct 31, 1989 | Sep 21, 1993 | Microsoft Corporation | Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers | | US5257141 | Jul 26, 1991 | Oct 26, 1993 | Matsushita Electric Industrial Co., Ltd. | Method of recording a digital video signal | | US5268870 | Aug 6, 1990 | Dec 7, 1993 | | Flash EEPROM system and intelligent programming and erasing methods therefor | | US5392427 | May 18, 1993 | Feb 21, 1995 | Microsoft Corporation | System for updating data stored on a flash-erasable, programmable, read-only memory (FEPROM) based upon predetermined bit value of indicating pointers |
Referenced by|
| US6393540 | Jun 30, 1998 | May 21, 2002 | EMC Corporation | Moving a logical object from a set of source locations to a set of destination locations using a single command | | US6542909 | Jun 30, 1998 | Apr 1, 2003 | EMC Corporation | System for determining mapping of logical objects in a computer system | | US6883063 | Jun 30, 1998 | Apr 19, 2005 | EMC Corporation | Method and apparatus for initializing logical objects in a data storage system | | US6895464 | Jun 3, 2002 | May 17, 2005 | Honeywell International Inc. | Flash memory management system and method utilizing multiple block list windows | | US6920466 | Dec 10, 2001 | Jul 19, 2005 | Canon Kabushiki Kaisha | Information file recording apparatus | | US6938059 | Feb 19, 2003 | Aug 30, 2005 | EMC Corporation | System for determining the mapping of logical objects in a data storage system | | US7013455 | Oct 19, 2000 | Mar 14, 2006 | International Business Machines Corporation | System for automatically altering environment variable to run proper executable file by removing references to all except one duplicate file in the path sequence | | US7032090 | Apr 8, 2003 | Apr 18, 2006 | International Business Machines Corporation | Method, system, and apparatus for releasing storage in a fast replication environment | | US7051054 | May 30, 2000 | May 23, 2006 | DPHI Acquisitions, Inc. | Method and apparatus for emulating read/write file system on a write-once storage disk | | US7069402 | Jun 2, 2003 | Jun 27, 2006 | International Business Machines Corporation | Host-independent incremental backup method, apparatus, and system | | US7072910 | Mar 22, 2002 | Jul 4, 2006 | Network Appliance, Inc. | File folding technique | | US7108605 | Sep 30, 2002 | Sep 19, 2006 | IGT | EPROM file system in a gaming apparatus | | US7181585 | Apr 30, 2003 | Feb 20, 2007 | International Business Machines Corporation | Defensive heap memory management | | US7383294 | Jul 28, 2005 | Jun 3, 2008 | EMC Corporation | System for determining the mapping of logical objects in a data storage system | | US7457822 | Nov 1, 2002 | Nov 25, 2008 | BlueArc UK Limited | Apparatus and method for hardware-based file system | | US7457827 | Apr 26, 2005 | Nov 25, 2008 | Canon Kabushiki Kaisha | Information file recording apparatus | | US7698704 | Feb 17, 2005 | Apr 13, 2010 | International Business Machines Corporation | Method for installing operating system on remote storage: flash deploy and install zone | | US7765426 | Jun 7, 2007 | Jul 27, 2010 | Micron Technology, Inc. | Emerging bad block detection | | US7827375 | Jan 24, 2007 | Nov 2, 2010 | International Business Machines Corporation | Defensive heap memory management | | US7954004 | Jul 19, 2010 | May 31, 2011 | Micron Technology, Inc. | Systems and methods for retrieving data | | US8041735 | Nov 1, 2002 | Oct 18, 2011 | BlueArc UK Limited | Distributed file system and method | | US8166074 | Jan 28, 2010 | Apr 24, 2012 | | Index data structure for a peer-to-peer network | | US8180897 | Jul 12, 2004 | May 15, 2012 | BlueArc UK Limited | Apparatus and method for hardware implementation or acceleration of operating system functions | | US8224877 | Aug 20, 2007 | Jul 17, 2012 | BlueArc UK Limited | Apparatus and method for hardware-based file system |
Claims1. A manager for a computer memory comprising: - a block allocation routine, the memory divided into blocks of memory locations, each block having an allocation table and a data region divided into data areas, each allocation table having entries corresponding to region data areas, the block allocation routine for selecting a block in which to store data;
- a data area allocation routine for selecting a data area within the data region for the selected block in which to store data, for selecting an allocation table entry to correspond to the selected data area, and for setting the selected allocation table entry to correspond to the selected data area and to an allocated state; and
- a storage routine for storing data in the selected data area.
2. The manager for a computer memory of claim 1 further comprising: - a data area deallocation routine for setting an allocation table entry that is in the allocated state to a deallocated state; and
- a block reclamation routine for reclaiming data areas corresponding to allocation table entries that are in that deallocated state.
3. The manager for a computer memory of claim 1 further comprising: - an initialization routine, each block having header information, the initialization routine for gathering information from the headers and from the allocation tables and storing the gathered information in a memory cache.
4. A method of reclaiming deallocated space in a block-eraseable, programmable, read-only memory, the memory having blocks, the method comprising the steps of: - identifying data regions as deallocated or allocated in a block to be reclaimed;
- erasing a spare block; and
- copying allocated data regions from the block to be reclaimed to the spare block whereby a memory area corresponding to the deallocated data region is reclaimed for allocation.
5. The method of claim 4 wherein the allocated data regions are copied into contiguous memory locations in the spare block. 6. A method of addressing a data region in a computer memory device, the memory divided into blocks, each block having a physical block number, the method comprising the steps of: - storing an allocation table in each block, the allocation table having entries that indicate an offset of a data region within the block and that have an entry index;
- storing a logical block number in each block;
- identifying a data region by logical block number and allocation table entry index; and
- generating an address to the identified data region based on the logical block number and the allocation table entry index.
7. The method of claim 6 wherein the step of generating an address includes the steps of: - determining the physical block number from the logical block number, each block having a corresponding start address;
- retrieving the offset from the allocation table entry in the determined physical block number that is indexed by the allocation table entry index; and
- adding the retrieved offset to the start address of the block with the determined physical block number to generate the address of the identified data region.
8. The method of claim 6 or 7 wherein the computer memory device is a block-erasable, programmable, read-only memory. 9. A method of leveling block erasures in a block-erasable, programmable, read-only memory, the method comprising the steps of: - identifying a first block that has been erased;
- identifying a second block that has been erased a fewer number of times than the first block; and
- swapping the data in the first block with the data in the second block.
10. A method of managing memory in a block-erasable, programmable, read-only memory, the memory being divided into blocks of memory locations, each block having an allocation table and a data region divided into data areas, each allocation table having entries corresponding to region data areas, the method comprising the steps of: - selecting a block in which to store data;
- selecting a data area within the data region for the selected block in which to store data;
- selecting an allocation table entry to correspond to the selected data area;
- setting the selected allocation table entry to correspond to the selected data area and to an allocated state; and
- storing data in the selected data area.
11. The method of claim 10, further comprising the steps of: - setting an allocation table entry that is in the allocated state to a deallocated state; and
- reclaiming data areas corresponding to allocation table entries that are in that deallocated state.
12. The method of claim 10, each block having header information, further comprising the steps of: - gathering information from the headers and from the allocation tables; and
- storing the gathered information in a memory cache.
13. A method of managing memory in a block-erasable, programmable, read-only memory, the memory being divided into blocks of memory locations, each block have a table and a data region divided into data areas, each table having entries corresponding to the data areas, the method comprising the steps of: - selecting a block in which to store data;
- selecting a data area within the data region for the selected block in which to store data;
- selecting a table entry to correspond to the selected data area;
- setting the selected table entry to correspond to the selected data area and to indicate that the data area contains data; and
- storing data in the selected data area.
|