Moving sequential sectors within a block of information in a flash memory mass storage architecture
DCFirst Claim
1. A method for updating sector information in a digital system having a host coupled through a controller to a nonvolatile memory device for storing digital information organized into sectors in the nonvolatile memory, each sector having a data portion and an overhead portion and being uniquely identifiable by the host using an LBA (Logical Block Address), the sector information stored within a sector location within the nonvolatile memory device, a group of sector locations defining a block addressable by the controller using a VPBA (Virtual Physical Block Address), and each sector location within a block being identifiable by the controller using a PBA (Physical Block Address), wherein the sector information stored in a sector location of a block within the nonvolatile memory device is updated prior to erasure of the block, the method comprising:
- a. developing an LBA value corresponding to a host-addressed sector in response to a command received from the host to re-write sector information to a sector identified by the host;
b. developing an LBA block address from the LBA value for addressing a block within the memory device within which the sector provided by the host is to be stored;
c. comparing the LBA value with a previous LBA (PREV-- LBA) value to determine whether or not there is a match;
d. if the LBA value and PREV-- LBA match, checking for a previous write operation to have been performed on the LBA block since the last erase operation of the LBA block;
e. if a previous write operation has been performed, checking for whether or not any of the sectors of the block identified by the LBA block address have been transferred from one location within the memory device to another location within the memory device since the occurrence of the last erase operation on the LBA block;
f. if the sectors of the block identified by the LBA block address have not been transferred, finding a free block within the nonvolatile memory device for storing the sector information, the free block being identified by a VPBA value corresponding to the LBA block;
g. storing the sector information within a sector location of the free block corresponding to the sector location of the LBA block;
h. storing the VPBA value in a PBA storage location for indicating the free block location within the memory device wherein the new sector information resides;
i. incrementing the LBA value by one; and
j. replacing the PREV-- LBA value with the incremented LBA value,wherein single sequential write operations are performed on a sector of a block that was previously written and not yet erased without moving all other sectors of the block.
10 Assignments
Litigations
0 Petitions
Accused Products
Abstract
A method and apparatus is disclosed for increasing the system performance of a digital system having a controller for controlling nonvolatile devices for storing blocks of information, each block having a group of sectors. When sectors within a block are being re-written in sequential order, the controller writes the new sector information into a sector location of another block without the need to move any of the sectors within the original block thereby reducing the number of read and write cycles needed to avoid erase-before-write operations. A `used` flag, stored in the sector location of each block, indicates that the sector has been transferred to another block or, alternatively, a move locator word maintains status information regarding the position of the sectors within the block that have been moved.
307 Citations
14 Claims
-
1. A method for updating sector information in a digital system having a host coupled through a controller to a nonvolatile memory device for storing digital information organized into sectors in the nonvolatile memory, each sector having a data portion and an overhead portion and being uniquely identifiable by the host using an LBA (Logical Block Address), the sector information stored within a sector location within the nonvolatile memory device, a group of sector locations defining a block addressable by the controller using a VPBA (Virtual Physical Block Address), and each sector location within a block being identifiable by the controller using a PBA (Physical Block Address), wherein the sector information stored in a sector location of a block within the nonvolatile memory device is updated prior to erasure of the block, the method comprising:
-
a. developing an LBA value corresponding to a host-addressed sector in response to a command received from the host to re-write sector information to a sector identified by the host; b. developing an LBA block address from the LBA value for addressing a block within the memory device within which the sector provided by the host is to be stored; c. comparing the LBA value with a previous LBA (PREV-- LBA) value to determine whether or not there is a match; d. if the LBA value and PREV-- LBA match, checking for a previous write operation to have been performed on the LBA block since the last erase operation of the LBA block; e. if a previous write operation has been performed, checking for whether or not any of the sectors of the block identified by the LBA block address have been transferred from one location within the memory device to another location within the memory device since the occurrence of the last erase operation on the LBA block; f. if the sectors of the block identified by the LBA block address have not been transferred, finding a free block within the nonvolatile memory device for storing the sector information, the free block being identified by a VPBA value corresponding to the LBA block; g. storing the sector information within a sector location of the free block corresponding to the sector location of the LBA block; h. storing the VPBA value in a PBA storage location for indicating the free block location within the memory device wherein the new sector information resides; i. incrementing the LBA value by one; and j. replacing the PREV-- LBA value with the incremented LBA value, wherein single sequential write operations are performed on a sector of a block that was previously written and not yet erased without moving all other sectors of the block. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A digital system for use with a host for receiving commands therefrom and a nonvolatile memory device for storing digital information, the digital information being organized into sectors with each sector having a data portion and an overhead portion, and being stored in a sector location within the nonvolatile memory device, a group of said sector locations defining a block addressable by the controller using a VPBA (Variable Physical Block Address) value, and each sector location within a block being identified by the controller using a PBA (Physical Block Address) value, the digital system comprising:
-
a controller including, a. a host interface means responsive to a write command from the host for re-writing sector information to a sector identified by a sector address and operative to generate an LBA (Logical Block Address) value corresponding to the host-addressed sector and further operative to generate an LBA block address from the LBA value for addressing a block within the memory device for storing the sector information; b. means for comparing the LBA value with a PREV-- LBA value; c. means for checking for a previous write operation to have been performed on the LBA block since the last erase operation of the LBA block; d. means for detecting whether or not any of the sectors of the block identified by the LBA block address have been transferred from one location within the memory device to another location within the memory device since the occurrence of the last erase operation on the LBA block, means for searching for a free block within the nonvolatile memory device for storing the sector information, the free block identified by a VPBA value corresponding to the LBA block; e. means for storing the sector information within a sector location of the VPBA block corresponding to the sector location of the LBA block; f. means for storing the VPBA value in a PBA storage location for indicating the block location within the memory device wherein the new sector information resides; g. means for incrementing the LBA by one, and means for replacing the PREV-- LBA value with the incremented LBA value, wherein single sequential write operations are performed on a sector of a block that was previously written and not yet erased without the need for moving all other sectors of the block.
-
Specification