Moving sectors within a block of information in a flash memory mass storage architecture
DCFirst Claim
1. A memory controller for use with a host requiring access to a nonvolatile memory, the controller being responsive to commands and logical block addresses (LBA'"'"'s) received from the host, a group of LBAs for identifying one or more information blocks to be accessed in the nonvolatile memory, each of the information blocks including a plurality of N sectors, the nonvolatile memory including a plurality of selectively erasable block locations, each of the block locations having a plurality of physical block address locations (PBA locations), each of the PBA locations for storing a portion of an information block, the controller being operative to develop physical block addresses (PBA'"'"'s) for addressing corresponding ones of the PBA locations, the controller also being operative to access portions of an information block stored in more than one of the block locations, whereby the controller avoids transfer of a particular information block from one block location to another block location each time the host requests that a portion of the particular information block be rewritten.
9 Assignments
Litigations
0 Petitions
Accused Products
Abstract
A device is disclosed for storing mapping information for mapping a logical block address identifying a block being accessed by a host to a physical block address, identifying a free area of nonvolatile memory, the block being selectively erasable and having one or more sectors that may be individually moved. The mapping information including a virtual physical block address for identifying an "original" location, within the nonvolatile memory, wherein a block is stored and a moved virtual physical block address for identifying a "moved" location, within the nonvolatile memory, wherein one or more sectors of the stored block are moved. The mapping information further including status information for use of the "original" physical block address and the "moved" physical block address and for providing information regarding "moved" sectors within the block being accessed.
-
Citations
26 Claims
- 1. A memory controller for use with a host requiring access to a nonvolatile memory, the controller being responsive to commands and logical block addresses (LBA'"'"'s) received from the host, a group of LBAs for identifying one or more information blocks to be accessed in the nonvolatile memory, each of the information blocks including a plurality of N sectors, the nonvolatile memory including a plurality of selectively erasable block locations, each of the block locations having a plurality of physical block address locations (PBA locations), each of the PBA locations for storing a portion of an information block, the controller being operative to develop physical block addresses (PBA'"'"'s) for addressing corresponding ones of the PBA locations, the controller also being operative to access portions of an information block stored in more than one of the block locations, whereby the controller avoids transfer of a particular information block from one block location to another block location each time the host requests that a portion of the particular information block be rewritten.
-
18. In a memory controller for use with a host requiring access to a nonvolatile memory, the controller being responsive to a logical block addresses (LBAs) received from the host, a group of LBAs for identifying one or more information blocks to be accessed in the nonvolatile memory, each of the information blocks including a plurality of N sectors, the nonvolatile memory including a plurality of selectively erasable block locations, each of the block locations having a plurality of physical block address locations (PBA locations), each of the PBA locations for storing a portion of an information block, the controller being operative to develop physical block addresses (PBA'"'"'s) for addressing corresponding ones of the PBA locations, a method for storing and retrieving portions of an information block to and from more than one of the block locations, the method comprising the steps of:
-
receiving a first write command indicating a particular LBA, and receiving an information block indicated by the particular LBA from the host, the information block including a plurality of original sectors, the first write command requesting the controller to store the information block in the nonvolatile memory; determining a first block location which is free; storing the information block in the first block location; receiving a second write command indicating the particular LBA, and receiving at least one rewrite sector superseding corresponding superseded ones of the original sectors of the stored information block, the second write command requesting the controller to rewrite the at least one rewrite sector to the nonvolatile memory; determining a second block location which is free; storing the at least one rewrite sector in the second block location; generating and storing mapping information associated with the particular LBA, the mapping information including, a first virtual block address indicating the first block location, a second virtual block address indicating the second block location, and status information indicating whether any of the original sectors of the stored information block have been superseded; whereby the controller avoids transfer of the entire particular information block to another block location each time the host requests that a portion of the particular information block be re-written. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26)
-
Specification