In the present disclosure, a persistent storage device includes both persistent storage, which includes a set of persistent storage blocks, and a storage controller. The persistent storage device stores and retrieves data in response to commands received from an external host device. The persistent storage device stores data, from a contiguous data block, to two or more sets of logical address blocks in persistent storage. The persistent storage device also retrieves data, corresponding to a contiguous data block, from two or more sets of logical address blocks in persistent. In both instances, the two or more sets of logical address blocks in persistent storage, in aggregate, are not contiguous.
Legal claims defining the scope of protection. Each claim is shown in both the original legal language and a plain English translation.
1. A persistent storage device, comprising: persistent storage, comprising a set of persistent storage blocks; and a storage controller configured to store and retrieve data in response to commands received from an external host device, the storage controller further configured to: in response to a host write command, store all data from a single write data contiguous data block to persistent storage blocks corresponding to two or more sets of logical address blocks specified by the host write command, each set of logical address blocks specified by the host write command comprising a set of contiguous logical address blocks, wherein the two or more sets of logical address blocks specified by the host write command, in aggregate, are not contiguous; and in response to a host read command, retrieve data corresponding to all locations of a single read data contiguous data block from persistent storage blocks corresponding to two or more sets of logical address blocks specified by the host read command, each set of logical address blocks specified by the host read command comprising a set of contiguous logical address blocks, wherein the two or more sets of logical address blocks specified by the host read command, in aggregate, are not contiguous.
A persistent storage device, like a flash drive, has persistent storage (organized into blocks) and a controller. The controller handles read/write commands from a host device (like a computer). When writing data, the controller takes a single, contiguous block of data from the host and splits it up, storing it into multiple non-contiguous sets of storage blocks based on logical addresses provided in the write command. Conversely, when reading, the controller retrieves data from multiple non-contiguous sets of storage blocks (specified by the host read command using logical addresses), combines them, and presents them as a single contiguous data block to the host. Each set of logical address blocks specified by the host command comprises contiguous logical address blocks, and these sets, in aggregate, are non-contiguous.
2. The persistent storage device of claim 1 , wherein the storage controller is further configured to execute the host write command atomically, such that failure of said host write command to execute results in none of said two or more sets of logical address blocks specified by the host write command being stored in said persistent storage, and successful execution of said host write command results in all of said two or more sets of logical address blocks specified by the host write command being stored in said persistent storage.
The persistent storage device described above (a flash drive with a controller) ensures that host write commands are atomic. This means that a write operation either completely succeeds, storing data to *all* the specified non-contiguous storage blocks, or completely fails, leaving *none* of the data stored. If something goes wrong during the write, any partially written data is rolled back, ensuring data consistency.
3. The persistent storage device of claim 1 , wherein the storage controller is further configured to execute the host read command atomically, such that failure of said host read command to execute results in none of said two or more sets of logical address blocks specified by the host read command being read from said persistent storage into said read data contiguous data block, and successful execution of said host read command results in all of said two or more sets of logical address blocks specified by the host read command read from said persistent storage into said read data contiguous data block.
The persistent storage device described in Claim 1 also ensures atomic host read commands. If a read operation fails midway, no data is written to the contiguous data block; the whole read command either succeeds completely and populates the contiguous block, or it fails, and the contiguous data block remains unchanged, maintaining data integrity and avoiding partial reads.
4. The persistent storage device of claim 1 , wherein the host write command specifies storage of a first block of data to a first persistent storage block corresponding to a first logical address block and storage of a second block of data to a second persistent storage block corresponding to a second logical address block, wherein the first and second blocks of data are contiguously stored in the write data contiguous data block, and wherein the first and second logical address blocks are noncontiguous.
In the persistent storage device described in Claim 1, the host write command specifies that a first block of data is to be stored in a first storage block with a first logical address, and a second block of data is to be stored in a second storage block with a second logical address. The first and second blocks are adjacent in the single, contiguous write data block sent by the host, but the logical addresses of the first and second storage blocks are not adjacent, showing how contiguous data becomes fragmented across non-contiguous storage locations.
5. The persistent storage device of claim 1 , wherein the host read command specifies retrieval of a first block of data from a first persistent storage block corresponding to a first logical address block and retrieval of a second block of data from a second persistent storage block corresponding to a second logical address block, wherein the first and second blocks of data are, after retrieval, contiguously stored in the read data contiguous data block, and wherein the first and second logical address blocks are noncontiguous.
In the persistent storage device described in Claim 1, the host read command specifies that a first block of data should be retrieved from a first storage block with a first logical address, and a second block of data should be retrieved from a second storage block with a second logical address. Even though the first and second logical addresses are non-contiguous, after retrieval, the first and second blocks of data are placed adjacently in a single contiguous read data block presented to the host, illustrating how non-contiguous stored data is assembled into a contiguous form.
6. The persistent storage device of claim 1 , wherein the single write data contiguous data block is a contiguous data block in memory of the external host device.
In the persistent storage device described in Claim 1, the single contiguous block of write data that the storage controller receives from the host device (before splitting it and writing to non-contiguous locations) is located in the host device's memory.
7. The persistent storage device of claim 1 , further comprising a host interface for interfacing the persistent storage device to a memory controller of the external host device.
The persistent storage device described in Claim 1 also contains a host interface. This interface allows the persistent storage device to connect and communicate directly with the memory controller of the external host device.
8. The persistent storage device of claim 1 , further comprising a logical address to physical address map for associating logical block addresses with persistent storage blocks in the persistent storage device.
The persistent storage device described in Claim 1 utilizes a logical address to physical address map. This map translates the logical block addresses (LBAs) provided by the host device into the physical addresses of the storage blocks within the persistent storage device.
9. The persistent storage device of claim 1 , wherein the two or more sets of logical address blocks specified by the host read command comprise logical block addresses, each associated with a corresponding persistent storage block, and the corresponding persistent storage blocks are a noncontiguous set of storage blocks identified by the storage controller using a logical block address to physical address mapping.
Within the persistent storage device described in Claim 1, the host read command specifies logical addresses for data retrieval. These logical block addresses each correspond to a specific persistent storage block. The persistent storage controller uses a logical block address to physical address mapping to identify the set of non-contiguous storage blocks associated with the logical addresses.
10. The persistent storage device of claim 1 , wherein the write data contiguous data block or the read data contiguous data block corresponds to a single contiguous data block in memory on the external host device.
In the persistent storage device described in Claim 1, either the write data (being written) or the read data (being retrieved) exists as a single, contiguous block within the memory of the external host device before or after the storage device processes it into non-contiguous blocks (write) or from non-contiguous blocks (read).
11. A method for managing a persistent storage device, comprising: at the persistent storage device comprising persistent storage and a storage controller, the persistent storage comprising a set of persistent storage blocks: in response to a host write command received from an external host device, storing all data from a single write data contiguous data block to persistent storage blocks corresponding to two or more sets of logical address blocks specified by the host write command, each set of logical address blocks specified by the host write command comprising a set of contiguous logical address blocks, wherein the two or more sets of logical address blocks specified by the host write command, in aggregate, are not contiguous; and in response to a host read command, retrieving data corresponding to all locations of a single read data contiguous data block from persistent storage blocks corresponding to two or more sets of logical address blocks specified by the host read command, each set of logical address blocks specified by the host read command comprising a set of contiguous logical address blocks, wherein the two or more sets of logical address blocks specified by the host read command, in aggregate, are not contiguous.
A method for managing data in a persistent storage device (like a flash drive) involves the device's controller receiving a host write command and splitting a single, contiguous block of write data from the host, writing it to multiple, non-contiguous sets of storage blocks based on logical addresses from the write command. The controller also handles host read commands, retrieving data from multiple, non-contiguous sets of storage blocks (specified by logical addresses) and combines them into a single, contiguous block of read data to send back to the host. Each set of logical address blocks specified by the host command comprises contiguous logical address blocks, and these sets, in aggregate, are non-contiguous.
12. The method of claim 11 , wherein execution of the host write command is performed atomically, such that failure of said host write command to execute results in none of said two or more sets of logical address blocks specified by the host write command being stored in said persistent storage, and successful execution of said host write command results in all of said two or more sets of logical address blocks specified by the host write command being stored in said persistent storage.
The method described in Claim 11, where a persistent storage device's controller receives a host write command and splits a contiguous block of data into non-contiguous storage blocks, guarantees atomicity for write commands. If the write fails at any point, none of the data is written. If the write succeeds, then *all* data is written to the specified non-contiguous locations, maintaining data consistency.
13. The method of claim 11 , wherein execution of the host read command is performed atomically, such that failure of said host read command to execute results in none of said two or more sets of logical address blocks specified by the host read command being read from said persistent storage into said read data contiguous data block, and successful execution of said host read command results in all of said two or more sets of logical address blocks specified by the host read command read from said persistent storage into said read data contiguous data block.
The method described in Claim 11, where a persistent storage device's controller retrieves data from non-contiguous storage blocks and combines it into a contiguous block, ensures atomicity for read commands. A failed read leaves the contiguous read data block unchanged. A successful read will completely fill the contiguous data block with requested data, preventing partial reads.
14. The method of claim 11 , wherein the host write command specifies storage of a first block of data to a first persistent storage block corresponding first logical address block and storage of a second block of data to a second persistent storage block corresponding to a second logical address block, wherein the first and second blocks of data are contiguously stored in the write data contiguous data block, and wherein the first and second logical address blocks are noncontiguous.
This method writes two separate pieces of data to different storage locations (that are not next to each other logically) even though the data was originally sent as one continuous block.
15. The method of claim 11 , wherein the host read command specifies retrieval of a first block of data from a first persistent storage block corresponding first logical address block and retrieval of a second block of data from a second persistent storage block corresponding to a second logical address block, wherein the first and second blocks of data are then, after retrieval, contiguously stored in the read data contiguous data block, and wherein the first and second logical address blocks are noncontiguous.
The method described in Claim 11, where a persistent storage device combines non-contiguous storage into contiguous read data, involves the host's read command specifying that the first block of data is retrieved from a first persistent storage block corresponding to the first logical address and the second block of data is retrieved from a second persistent storage block corresponding to a second logical address. The first and second blocks of data retrieved are then placed contiguously into the read data block to be sent to the host, even though they were retrieved from non-contiguous locations.
16. The method of claim 11 , wherein the single write data contiguous data block is a contiguous data block in memory of the external host device.
The method described in Claim 11, which details how the storage device manages host reads and writes, includes the condition that the single, contiguous block of write data originates in the memory of the external host device.
17. The method of claim 11 , the persistent storage device further comprises a host interface for interfacing the persistent storage device to a memory controller of the external host device.
The method described in Claim 11, concerning how a storage device splits and combines data, involves the persistent storage device having a host interface. This interface allows the storage device to connect and communicate directly with the external host device's memory controller.
18. The method of claim 11 , further comprising associating logical block addresses specified by the host write command and host read command with persistent storage blocks in the persistent storage device using a logical address to physical address map.
The method described in Claim 11, which details a device's process for splitting and combining data, includes the step of using a logical address to physical address map. This mapping associates the logical block addresses (LBAs) from the host's read and write commands with the physical storage blocks within the persistent storage device.
19. The method of claim 11 , wherein the two or more sets of logical address blocks specified by the host read command comprise logical block addresses, each associated with a corresponding persistent storage block, and the corresponding persistent storage blocks are a noncontiguous set of storage blocks identified by the storage controller using a logical block address to physical address mapping.
The method described in Claim 11, concerning how a storage device processes data retrieval, specifies that the host read command includes logical addresses corresponding to specific persistent storage blocks. The storage controller then uses a logical-to-physical address map to translate these logical addresses into a non-contiguous set of physical storage blocks for retrieval.
20. The method of claim 11 , wherein the write data contiguous data block or the read data contiguous data block corresponds to a single contiguous data block in memory on the external host device.
In the method described in Claim 11, either the write data (before writing) or read data (after retrieval) corresponds to a single contiguous block of data located in the external host device's memory.
21. A non-transitory computer readable storage medium storing one or more programs for execution by a storage controller of a persistent storage device, the persistent storage device comprising persistent storage and the storage controller, the persistent storage comprising a set of persistent storage blocks, wherein the one or more programs, when executed by the storage controller of the persistent storage device, cause the persistent storage device to perform a method comprising: in response to a host write command received from an external host device, storing all data from a single write data contiguous data block to persistent storage blocks corresponding to two or more sets of logical address blocks specified by the host write command, each set of logical address blocks specified by the host write command comprising a set of contiguous logical address blocks, wherein the two or more sets of logical address blocks specified by the host write command, in aggregate, are not contiguous; and in response to a host read command, retrieving data corresponding to all locations of a single read data contiguous data block from persistent storage blocks corresponding to two or more sets of logical address blocks specified by the host read command, each set of logical address blocks specified by the host read command comprising a set of contiguous logical address blocks, wherein the two or more sets of logical address blocks specified by the host read command, in aggregate, are not contiguous.
A non-transitory computer-readable storage medium (like a flash drive's firmware) stores programs for a persistent storage device's controller. When executed, these programs enable the controller to manage data by: receiving a host write command and splitting a single, contiguous block of write data, and writing it to multiple, non-contiguous sets of storage blocks (based on logical addresses); and retrieving data from multiple, non-contiguous sets of storage blocks (using logical addresses from the read command) and combining them into a single, contiguous block of read data. Each set of logical address blocks specified by the host command comprises contiguous logical address blocks, and these sets, in aggregate, are non-contiguous.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
March 14, 2013
April 4, 2017
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.