← Back to Patent Explorer
US5634050A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and system for file system management using a flash-erasable programmable, read-only memory

Assignee: Microsoft Technology Licensing LLC
•
Filing: 1995-06-07
•
Granted: 1997-05-27
•
Expires: 2015-06-07
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method and system for managing memory in a block-erasable, flash-erasable, programmable, read-only memory. The system comprises a block-erasable FEProm with a block header, a block allocation table, a data storage area, a block allocation routine for selecting a block in which to store data, a data area allocation routine for selecting an entry in the block allocation table and a portion of the data storage area, and a storage routine for storing the data. The system includes a file manager to implement a file system for the block-erasable FEProm.

Inventors

  • 👤 William J. Krueger
  • 👤 Sriram Rajagopalan

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-03 09:17
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/07; G06F11/14; G06F11/1402; G06F11/1415; G06F11/1435; G06F12/00; G06F12/02; G06F12/0223; G06F12/023; G06F12/0238; G06F12/0246; G06F16/00; G06F16/10; G06F16/90; G06F16/901; G06F16/9017; G06F2212/00; G06F2212/72; G06F2212/7205; Y; Y10; Y10S; Y10S707/00; Y10S707/99951; Y10S707/99956

Claims Analysis

Total Claims: 53
Claim 1
Independent Claim 80 words
A block-erasable, write-once, multiple-read memory device, the memory device having one or more blocks, comprising: a data region area in each block, the data region area divided into a plurality of data regions for storing data; and a block structure stored in each block, the block structure having a header and an allocation array, the header containing block-specific information, the allocation array containing an entry corresponding to each data region, each entry containing information relating to the corresponding data region.
Claim 2
Dependent Claim 80 words
A block-erasable, write-once, multiple-read memory device, the memory device having one or more blocks, comprising: a data region area in each block, the data region area divided into a plurality of data regions for storing data; and a block structure stored in each block, the block structure having a header and an allocation array, the header containing block-specific information, the allocation array containing an entry corresponding to each data region, each entry containing information relating to the corresponding data region.
Claim 3
Dependent Claim 22 words
The memory device of claim 1 wherein the header contains a logical block number, a block status, and a block erase count.
Claim 4
Dependent Claim 35 words
The memory device of claim 1 wherein an allocation array entry contains a pointer to the corresponding data region, a length indicating the length of the corresponding data region, and an allocation array entry status.
Claim 5
Dependent Claim 16 words
The memory device of claim 1 wherein the memory device is a block-erasable, programmable, read-only memory.
Claim 6
Independent Claim 48 words
A method of memory management in a block-erasable, programmable, read-only memory, the memory comprising a plurality of blocks, method comprising the steps of: storing block header information in each block; storing an allocation table in each block; and storing data in a data storage area in each block.
Claim 7
Independent Claim 48 words
A method of memory management in a block-erasable, programmable, read-only memory, the memory comprising a plurality of blocks, method comprising the steps of: storing block header information in each block; storing an allocation table in each block; and storing data in a data storage area in each block.
Claim 8
Dependent Claim 23 words
The method of claim 5 wherein the block header information includes a logical block number, a block status, and a block erase count.
Claim 9
Dependent Claim 56 words
The method of claim 5 wherein the allocation table contains entries corresponding to portions of the data storage area, the entries containing a pointer to the corresponding portion of the data storage area, a length indicating the length of the corresponding portion of the data storage area, and a status indicating the status of the entry.
Claim 10
Independent Claim 172 words
A method of managing a block-erasable, write-once, read-many memory in a computer, the memory being divided into blocks of memory locations, each block including an allocation array, data regions, and free space, the allocation array with entries corresponding to the data regions, the method comprising the steps of: receiving a request to store data in the memory, the request including the data to be stored; selecting a block in the memory with sufficient free space to store the data and to store a corresponding entry in the allocation array; and allocating a new data region in the free space of the block in which to store the data by: selecting an allocation array entry to correspond to the new data region; selecting the new data region; setting the selected allocation array entry to contain a reference to the new data region within the block and to indicate that the new data region is allocated; and storing the data in the new data region, thereby completing the allocation of the new data region.
Claim 11
Independent Claim 172 words
A method of managing a block-erasable, write-once, read-many memory in a computer, the memory being divided into blocks of memory locations, each block including an allocation array, data regions, and free space, the allocation array with entries corresponding to the data regions, the method comprising the steps of: receiving a request to store data in the memory, the request including the data to be stored; selecting a block in the memory with sufficient free space to store the data and to store a corresponding entry in the allocation array; and allocating a new data region in the free space of the block in which to store the data by: selecting an allocation array entry to correspond to the new data region; selecting the new data region; setting the selected allocation array entry to contain a reference to the new data region within the block and to indicate that the new data region is allocated; and storing the data in the new data region, thereby completing the allocation of the new data region.
Claim 12
Dependent Claim 43 words
The method of claim 8 wherein the allocation array and the data regions are located at opposite ends of the block and as new data regions and allocation array entries are selected, the allocation array and the data regions grow towards each other.
Claim 13
Dependent Claim 50 words
The method of claim 8 wherein each block has an erase count that indicates the number of times the block has been erased and wherein the step of selecting a block in the memory further comprises the step of selecting the block in the memory based on the erase count.
Claim 14
Dependent Claim 32 words
The method of claim 8, further comprising the step of deallocating a data region in the block by setting the corresponding allocation array entry to indicate that the data region is deallocated.
Claim 15
Dependent Claim 124 words
The method of claim 11, further comprising the step of reclaiming deallocated data regions in the block by: selecting a spare block in the memory; erasing the spare block; and for each allocation array entry, determining whether the corresponding data region is allocated or deallocated; when the corresponding data region is allocated, copying the corresponding data region to the spare block and setting the allocation array entry of the spare block to contain a reference to the data region within the spare block and to indicate that the data region is allocated; and when the corresponding data region is deallocated, setting the allocation array entry of the spare block to indicate that the corresponding data region is free, thereby reclaiming the deallocated data regions.
Claim 16
Dependent Claim 52 words
The method of claim 12 wherein each block has an erase count that indicates the number of times the block has been erased and wherein the step of selecting a spare block in the memory further comprises the step of selecting the spare block in the memory based on the erase count.
Claim 17
Dependent Claim 87 words
The method of claim 8, including the step of, before setting the selected allocation array entry to contain a reference to the new data region, setting the selected allocation array entry to allocation-in-process wherein the step of setting the selected allocation array entry to allocated occurs after the data is stored in the new data region so that if an error occurs when storing the data, the selected allocation array entry will not falsely indicate that the data has been correctly stored in the new data region.
Claim 18
Dependent Claim 30 words
The method of claim 8 wherein the step of selecting an allocation array entry selects an entry that was set to free indicating that its corresponding data region was reclaimed.
Claim 19
Independent Claim 224 words
A method of referencing a data region in a block-erasable, write-once, read-many memory, the memory being divided into blocks of memory locations, each block having a logical block number and a physical block number, each block including an allocation array and data regions, the allocation array with entries corresponding to the data regions, the method comprising: storing an allocation array in blocks of the block-erasable, write-once, read-only memory, each allocation array entry containing an offset of the corresponding data region within the block and having an index; storing a logical block number and a corresponding physical block number and physical start address for each block in a block translation cache; specifying a data region in a block of the block-erasable, write-once, read-only memory by logical block number and allocation array entry index; and generating a physical address of the specified data region by: determining the physical block number of the block from the logical block number using the block translation cache; determining the physical start address of the block from the determined physical block number; retrieving from the allocation array entry index the offset of the specified data region within that block within the block with the determined physical block number; and adding the retrieved offset to the physical start address of the block, thereby generating the physical address of the specified data region.
Claim 20
Independent Claim 224 words
A method of referencing a data region in a block-erasable, write-once, read-many memory, the memory being divided into blocks of memory locations, each block having a logical block number and a physical block number, each block including an allocation array and data regions, the allocation array with entries corresponding to the data regions, the method comprising: storing an allocation array in blocks of the block-erasable, write-once, read-only memory, each allocation array entry containing an offset of the corresponding data region within the block and having an index; storing a logical block number and a corresponding physical block number and physical start address for each block in a block translation cache; specifying a data region in a block of the block-erasable, write-once, read-only memory by logical block number and allocation array entry index; and generating a physical address of the specified data region by: determining the physical block number of the block from the logical block number using the block translation cache; determining the physical start address of the block from the determined physical block number; retrieving from the allocation array entry index the offset of the specified data region within that block within the block with the determined physical block number; and adding the retrieved offset to the physical start address of the block, thereby generating the physical address of the specified data region.
Claim 21
Independent Claim 155 words
A method of referencing a block in a block-erasable, write-once, read-many memory, the memory being divided into blocks of memory locations, each block having a logical block number and a physical block number, each block including an allocation array and data regions, the allocation array with entries corresponding to the data regions, the method comprising: storing a logical block number in each block of the block-erasable, write-once, read-only memory; at initialization, reading the logical block number in each block and storing the logical block number and a corresponding physical block number for each block in a block translation cache; specifying a block of the block-erasable, write-once, read-only memory by logical block number; and generating a physical address of the specified block by: determining the physical block number of the block from the logical block number using the block translation cache; and determining a physical start address of the block from the determined physical block number.
Claim 22
Independent Claim 155 words
A method of referencing a block in a block-erasable, write-once, read-many memory, the memory being divided into blocks of memory locations, each block having a logical block number and a physical block number, each block including an allocation array and data regions, the allocation array with entries corresponding to the data regions, the method comprising: storing a logical block number in each block of the block-erasable, write-once, read-only memory; at initialization, reading the logical block number in each block and storing the logical block number and a corresponding physical block number for each block in a block translation cache; specifying a block of the block-erasable, write-once, read-only memory by logical block number; and generating a physical address of the specified block by: determining the physical block number of the block from the logical block number using the block translation cache; and determining a physical start address of the block from the determined physical block number.
Claim 23
Independent Claim 163 words
A method of leveling erase counts in a block-erasable, write-once, read-many memory, the memory being divided into blocks of memory locations, each block having an erase count that indicates the number of times the block has been erased, the method comprising the steps of: identifying a first block of the block-erasable, write-once, read-only memory that has an erase count; identifying a second block of the block-erasable, write-once, read-only memory that has a lower erase count than the first block; copying the data in the first block to a spare block; erasing the first block; incrementing the erase count for the first block; storing the incremented erase count for the first block in the first block; copying the data from the second block to the first block; erasing the second block; incrementing the erase count for the second block; storing the incremented erase count for the second block in the second block; and copying the data from the spare block to the second block.
Claim 24
Independent Claim 163 words
A method of leveling erase counts in a block-erasable, write-once, read-many memory, the memory being divided into blocks of memory locations, each block having an erase count that indicates the number of times the block has been erased, the method comprising the steps of: identifying a first block of the block-erasable, write-once, read-only memory that has an erase count; identifying a second block of the block-erasable, write-once, read-only memory that has a lower erase count than the first block; copying the data in the first block to a spare block; erasing the first block; incrementing the erase count for the first block; storing the incremented erase count for the first block in the first block; copying the data from the second block to the first block; erasing the second block; incrementing the erase count for the second block; storing the incremented erase count for the second block in the second block; and copying the data from the spare block to the second block.
Claim 25
Independent Claim 194 words
A method for reclaiming memory within a source block in block-erasable, write-once, read-many memory device, the source block having an allocation array and data regions, each data region being allocated or not allocated, the allocation array having entries that reference a data region, each data region being identifiable by an index within the allocation array of the entry that references the data region, the method comprising: for each entry in the allocation array, determining whether the referenced data region is allocated; when the referenced data region is allocated, copying the referenced data region to a data region within a spare block and setting an entry in an allocation array of the spare block to reference the copy of the data region, the entry in the allocation array of the spare block having the same index within the allocation array of the spare block as the entry within the allocation array of the source block so that the data region in the spare block is identifiable by the same index by which the data region of the source block is identifiable, whereby data regions that are not allocated are not copied to the spare block.
Claim 26
Dependent Claim 49 words
The method of claim 19, including: when the referenced data region is not allocated, setting an entry in the allocation table of the spare block to free so that the entry may be used to reference a newly allocated data region of the spare block after completion of reclamation.
Claim 27
Dependent Claim 21 words
The method of claim 20 wherein a data region that is not allocated is a data region that has been deallocated.
Claim 28
Dependent Claim 29 words
The method of claim 20 wherein a data region that is not allocated is a data region that has been superseded by another data region within the source block.
Claim 29
Dependent Claim 20 words
The method of claim 19, including, after copying each allocated data region of the source block, erasing the source block.
Claim 30
Dependent Claim 29 words
The method of claim 19 including after copying each allocated data region of the source block, directing each access for data of a data region to the spare block.
Claim 31
Independent Claim 179 words
A method for reclaiming memory within a block in block-erasable, write-once, read-many memory device, the block having an allocation array and data regions, each data region being allocated or not allocated, the allocation array having entries that reference a data region, each data region being identifiable by an index within the allocation array of the entry that references the data region, the method comprising: copying the allocated regions and the entries that reference the allocated regions from the block to a temporary memory; erasing the block; and for each entry copied, copying the data region referenced by that entry from the temporary memory to a data region within the erased block and setting an entry in an allocation array of the erase block to reference the copy of the data region, the entry in the allocation array of the erased block having the same index within the allocation array of the erased block as the entry within the allocation array of the block before being erased so that the data region is identifiable by the same index after reclamation.
Claim 32
Dependent Claim 41 words
A block erasable, write-once, read-many memory device with a plurality of blocks, containing within a block: a plurality of data regions; and an allocation array with an entry for each data region, each entry having a reference to the data region.
Claim 33
Dependent Claim 41 words
A block erasable, write-once, read-many memory device with a plurality of blocks, containing within a block: a plurality of data regions; and an allocation array with an entry for each data region, each entry having a reference to the data region.
Claim 34
Dependent Claim 19 words
The memory device of claim 26 wherein the reference is an offset of the start of the data region.
Claim 35
Dependent Claim 23 words
The memory device of claim 27 wherein the data regions are variable length and an entry contain the length of the data region.
Claim 36
Dependent Claim 15 words
The memory device of claim 26 wherein a block further contains a logical block number.
Claim 37
Dependent Claim 14 words
The memory device of claim 26 wherein a block further contains an erase count.
Claim 38
Dependent Claim 14 words
The memory device of claim 26 wherein a block further contains a write count.
Claim 39
Dependent Claim 22 words
The memory device of claim 26 wherein an entry contains an indication of state that is either allocated, deallocated, superseded, or free.
Claim 40
Dependent Claim 21 words
The memory device of claim 26 wherein a block contains an indication of state that is either spare, erased, or ready.
Claim 41
Dependent Claim 203 words
A computer-readable medium containing instruction for causing a computer system to reclaim memory within a source block in block-erasable, write-once, read-many memory device, the source block having an allocation array and data regions, each data region being allocated or not allocated, the allocation array having entries that reference a data region, each data region being identifiable by an index within the allocation array of the entry that references the data region, by the method of: for each entry in the allocation array, determining whether the referenced data region is allocated; when the referenced data region is allocated, copying the referenced data region to a data region within a spare block and setting an entry in an allocation array of the spare block to reference the copy of the data region, the entry in the allocation array of the spare block having the same index within the allocation array of the spare block as the entry within the allocation array of the source block so that the data region in the spare block is identifiable by the same index by which the data region of the source block is identifiable, whereby data regions that are not allocated are not copied to the spare block.
Claim 42
Dependent Claim 50 words
The computer-readable medium of claim 34, including: when the referenced data region is not allocated, setting an entry in the allocation table of the spare block to free so that the entry may be used to reference a newly allocated data region of the spare block after completion of reclamation.
Claim 43
Dependent Claim 22 words
The computer-readable medium of claim 35 wherein a data region that is not allocated is a data region that has been deallocated.
Claim 44
Dependent Claim 30 words
The computer-readable medium of claim 35 wherein a data region that is not allocated is a data region that has been superseded by another data region within the source block.
Claim 45
Dependent Claim 21 words
The computer-readable medium of claim 34, including, after copying each allocated data region of the source block, erasing the source block.
Claim 46
Dependent Claim 30 words
The computer-readable medium of claim 34 including after copying each allocated data region of the source block, directing each access for data of a data region to the spare block.
Claim 47
Dependent Claim 160 words
A computer-readable memory containing instruction for causing a computer system to manage a block-erasable, write-once, read-many memory in a computer, the memory being divided into blocks of memory locations, each block including an allocation array, data regions, and free space, the allocation array with entries corresponding to the data regions, by the steps of: selecting a block in the memory with sufficient free space to store data and to store a corresponding entry in the allocation array; and allocating a new data region in the free space of the block in which to store the data by: selecting an allocation array entry to correspond to the new data region; selecting the new data region; setting the selected allocation array entry to contain a reference to the new data region within the block and to indicate that the new data region is allocated; and storing the data in the new data region, thereby completing the allocation of the new data region.
Claim 48
Dependent Claim 160 words
A computer-readable memory containing instruction for causing a computer system to manage a block-erasable, write-once, read-many memory in a computer, the memory being divided into blocks of memory locations, each block including an allocation array, data regions, and free space, the allocation array with entries corresponding to the data regions, by the steps of: selecting a block in the memory with sufficient free space to store data and to store a corresponding entry in the allocation array; and allocating a new data region in the free space of the block in which to store the data by: selecting an allocation array entry to correspond to the new data region; selecting the new data region; setting the selected allocation array entry to contain a reference to the new data region within the block and to indicate that the new data region is allocated; and storing the data in the new data region, thereby completing the allocation of the new data region.
Claim 49
Dependent Claim 44 words
The computer-readable memory of claim 40 wherein the allocation array and the data regions are located at opposite ends of the block and as new data regions and allocation array entries are selected, the allocation array and the data regions grow towards each other.
Claim 50
Dependent Claim 51 words
The computer-readable memory of claim 40 wherein each block has an erase count that indicates the number of times the block has been erased and wherein the step of selecting a block in the memory further comprises the step of selecting the block in the memory based on the erase count.
Claim 51
Dependent Claim 33 words
The computer-readable memory of claim 40, further comprising the step of deallocating a data region in the block by setting the corresponding allocation array entry to indicate that the data region is deallocated.
Claim 52
Dependent Claim 88 words
The computer-readable memory of claim 40, including the step of, before setting the selected allocation array entry to contain a reference to the new data region, setting the selected allocation array entry to allocation-in-process wherein the step of setting the selected allocation array entry to allocated occurs after the data is stored in the new data region so that if an error occurs when storing the data, the selected allocation array entry will not falsely indicate that the data has been correctly stored in the new data region.
Claim 53
Dependent Claim 31 words
The computer-readable memory of claim 40 wherein the step of selecting an allocation array entry selects an entry that was set to free indicating that its corresponding data region was reclaimed.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2000-05-26 2000-11-25 2001-05-27 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2004-05-26 2004-11-25 2005-05-27 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2008-05-26 2008-11-25 2009-05-27 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag