Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

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.

InventorsWilliam J. Krueger, Sriram Rajagopalan
Original AssigneeMicrosoft Corporation
Current U.S. Classification1/1; 707/999.205; 707/E17.01; 707/E17.037; 711/E12.008; 714/E11.136
International Classification: G06F 1730

View patent at USPTO
Search USPTO Assignment Database

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US4408273May 27, 1980Oct 4, 1983International Business Machines CorporationMethod and means for cataloging data sets using dual keyed data sets and direct pointers
US4435752Apr 9, 1980Mar 6, 1984Texas Instruments IncorporatedAllocation of rotating memory device storage locations
US4507752Feb 22, 1983Mar 26, 1985International Business Machines CorporationIn-place index compression
US4584644Mar 8, 1982Apr 22, 1986International Business Machines Corp.Method of controlling use of resources in a data processing system by at least two processes
US4606002Aug 17, 1983Aug 12, 1986Wang Laboratories, Inc.B-tree structured data base using sparse array bit maps to store inverted lists
US4630234Apr 11, 1983Dec 16, 1986GTI CorporationLinked list search processor
US4704678Nov 16, 1983Nov 3, 1987Inmos LimitedFunction set for a microcomputer
US4939598Feb 8, 1988Jul 3, 1990International Business Machines CorporationManaging data storage space on large capacity record media
US4942541Jan 22, 1988Jul 17, 1990Oms, Inc.Patchification system
US4953080Apr 25, 1988Aug 28, 1990Hewlett-Packard CompanyObject management facility for maintaining data in a computer system
US4953122Oct 31, 1986Aug 28, 1990Laserdrive Ltd.Pseudo-erasable and rewritable write-once optical disk memory system
US4989132Oct 24, 1988Jan 29, 1991Eastman Kodak CompanyObject-oriented, logic, and database programming tool with garbage collection
US5025367May 28, 1987Jun 18, 1991Victoria University of Manchester
Matsushita Electrical Industrial Co., Ltd.
Storage allocation and garbage collection using liberate space tokens
US5029125Mar 7, 1989Jul 2, 1991Drexler Technology CorporationMethod of reading and writing files on nonerasable storage media
US5060147Aug 22, 1989Oct 22, 1991General Electric CompanyString length determination on a distributed processing system
US5115504Nov 1, 1988May 19, 1992Lotus Development CorporationInformation management system
US5132853Apr 4, 1990Jul 21, 1992International Business Machines CorporationAllocation procedures for optical disk recorders
US5161256Aug 24, 1989Nov 3, 1992Kabushiki Kaisha ToshibaMethod and system for allocating file area in memory area of IC card
US5229992Mar 28, 1991Jul 20, 1993Sprint International Communications Corp.Fixed interval composite framing in integrated services networks
US5247516Mar 28, 1991Sep 21, 1993Sprint International Communications Corp.Configurable composite data frame
US5247658Oct 31, 1989Sep 21, 1993Microsoft CorporationMethod and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers
US5257141Jul 26, 1991Oct 26, 1993Matsushita Electric Industrial Co., Ltd.Method of recording a digital video signal
US5268870Aug 6, 1990Dec 7, 1993Flash EEPROM system and intelligent programming and erasing methods therefor
US5392427May 18, 1993Feb 21, 1995Microsoft CorporationSystem for updating data stored on a flash-erasable, programmable, read-only memory (FEPROM) based upon predetermined bit value of indicating pointers

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US6393540Jun 30, 1998May 21, 2002EMC CorporationMoving a logical object from a set of source locations to a set of destination locations using a single command
US6542909Jun 30, 1998Apr 1, 2003EMC CorporationSystem for determining mapping of logical objects in a computer system
US6883063Jun 30, 1998Apr 19, 2005EMC CorporationMethod and apparatus for initializing logical objects in a data storage system
US6895464Jun 3, 2002May 17, 2005Honeywell International Inc.Flash memory management system and method utilizing multiple block list windows
US6920466Dec 10, 2001Jul 19, 2005Canon Kabushiki KaishaInformation file recording apparatus
US6938059Feb 19, 2003Aug 30, 2005EMC CorporationSystem for determining the mapping of logical objects in a data storage system
US7013455Oct 19, 2000Mar 14, 2006International Business Machines CorporationSystem for automatically altering environment variable to run proper executable file by removing references to all except one duplicate file in the path sequence
US7032090Apr 8, 2003Apr 18, 2006International Business Machines CorporationMethod, system, and apparatus for releasing storage in a fast replication environment
US7051054May 30, 2000May 23, 2006DPHI Acquisitions, Inc.Method and apparatus for emulating read/write file system on a write-once storage disk
US7069402Jun 2, 2003Jun 27, 2006International Business Machines CorporationHost-independent incremental backup method, apparatus, and system
US7072910Mar 22, 2002Jul 4, 2006Network Appliance, Inc.File folding technique
US7108605Sep 30, 2002Sep 19, 2006IGTEPROM file system in a gaming apparatus
US7181585Apr 30, 2003Feb 20, 2007International Business Machines CorporationDefensive heap memory management
US7383294Jul 28, 2005Jun 3, 2008EMC CorporationSystem for determining the mapping of logical objects in a data storage system
US7457822Nov 1, 2002Nov 25, 2008BlueArc UK LimitedApparatus and method for hardware-based file system
US7457827Apr 26, 2005Nov 25, 2008Canon Kabushiki KaishaInformation file recording apparatus
US7698704Feb 17, 2005Apr 13, 2010International Business Machines CorporationMethod for installing operating system on remote storage: flash deploy and install zone
US7765426Jun 7, 2007Jul 27, 2010Micron Technology, Inc.Emerging bad block detection
US7827375Jan 24, 2007Nov 2, 2010International Business Machines CorporationDefensive heap memory management
US7954004Jul 19, 2010May 31, 2011Micron Technology, Inc.Systems and methods for retrieving data
US8041735Nov 1, 2002Oct 18, 2011BlueArc UK LimitedDistributed file system and method
US8166074Jan 28, 2010Apr 24, 2012Index data structure for a peer-to-peer network
US8180897Jul 12, 2004May 15, 2012BlueArc UK LimitedApparatus and method for hardware implementation or acceleration of operating system functions
US8224877Aug 20, 2007Jul 17, 2012BlueArc UK LimitedApparatus and method for hardware-based file system

Claims

1. 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.