Block-based data striping to flash memory
First Claim
1. A method for block striping data to write data to or to read data from a plurality of channels coupled with a plurality of storage devices, the method comprising:
- receiving an input logical block address (LBA) for a block of data, an input sector count for the block of data, and a read or write command for the block of data;
dividing the received input LBA by a number of channels of the plurality of channels to compute a first quotient result that includes (i) an output divided LBA that is passed to each channel and (ii) an output divided remainder (modulus);
using the output divided remainder (modulus) to determine a selected starting channel for a block striped read or write operation;
dividing the input sector count by the number of channels to compute a second quotient result that includes (iii) an output divided sector count for each of the plurality of channels and (iv) an output divided sector count remainder (modulus);
using the divided sector count remainder (modulus) to determine an exact sector count for each channel of the plural channel data block striped read or write operation; and
executing the received read or write command by reading data from or to writing data to the plurality of channels as blocks using the determined selected starting channel and exact sector count for each channel and each storage device.
5 Assignments
0 Petitions
Accused Products
Abstract
In various embodiments, options for data striping to FLASH memory are provided. In one embodiment, an apparatus is provided. The apparatus includes an SATA to ATA bridge, an ATA to USB bridge coupled to the SATA to ATA bridge, and a USB interface coupled to the ATA to USB bridge. The apparatus also includes a first FLASH memory controller coupled to the USB interface. The apparatus further includes a first FLASH memory module coupled to the first FLASH memory controller. The apparatus also includes a second FLASH memory controller coupled to the USB interface and a second FLASH memory module coupled to the second FLASH memory controller. A method for block striping data to or from a plurality of read or write channels.
101 Citations
33 Claims
-
1. A method for block striping data to write data to or to read data from a plurality of channels coupled with a plurality of storage devices, the method comprising:
-
receiving an input logical block address (LBA) for a block of data, an input sector count for the block of data, and a read or write command for the block of data; dividing the received input LBA by a number of channels of the plurality of channels to compute a first quotient result that includes (i) an output divided LBA that is passed to each channel and (ii) an output divided remainder (modulus); using the output divided remainder (modulus) to determine a selected starting channel for a block striped read or write operation; dividing the input sector count by the number of channels to compute a second quotient result that includes (iii) an output divided sector count for each of the plurality of channels and (iv) an output divided sector count remainder (modulus); using the divided sector count remainder (modulus) to determine an exact sector count for each channel of the plural channel data block striped read or write operation; and executing the received read or write command by reading data from or to writing data to the plurality of channels as blocks using the determined selected starting channel and exact sector count for each channel and each storage device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A block data striper for writing data to or for reading data from a plurality of channels coupled with a plurality of memory devices, comprising:
-
means for receiving an input logical block address (LBA) for a block of data, an input sector count for the block of data, and a read or write command for the block of data; means for dividing the received input LBA by a number of channels of the plurality of channels to compute a first quotient result that includes (i) an output divided LBA that is passed to each channel and (ii) an output divided remainder (modulus); means for using the output divided remainder (modulus) to determine a selected starting channel for a block striped read or write operation; means for dividing the input sector count by the number of channels to compute a second quotient result that includes (iii) an output divided sector count for each of the plurality of channels and (iv) an output divided sector count remainder (modulus); means for using the divided sector count remainder (modulus) to determine an exact sector count for each channel of the plural channel data block striped read or write operation; and means for executing the received read or write command by reading data from or to writing data to the plurality of channels as blocks using the determined selected starting channel and exact sector count for each channel and each memory device. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29)
-
-
30. A block data striper for writing data to or for reading data from a plurality of channels coupled with a plurality of memory devices, comprising:
-
a receiver unit receiving an input logical block address (LBA) for a block of data, an input sector count for the block of data, and a read or write command for the block of data; a first divider unit dividing the received input LBA by a number of channels of the plurality of channels to compute a first quotient result that includes (i) an output divided LBA that is passed to each channel and (ii) an output divided remainder (modulus); a first logic unit using the output divided remainder (modulus) to determine a selected starting channel for a block striped read or write operation; a second divider unit dividing the input sector count by the number of channels to compute a second quotient result that includes (iii) an output divided sector count for each of the plurality of channels and (iv) an output divided sector count remainder (modulus); a second logic unit using the divided sector count remainder (modulus) to determine an exact sector count for each channel of the plural channel data block striped read or write operation; and an execution unit executing the received read or write command by reading data from or to writing data to the plurality of channels as blocks using the determined selected starting channel and exact sector count for each channel and each memory device. - View Dependent Claims (31, 32, 33)
-
Specification