Patent ID: 8650438

Claim:
A device comprising: a buffer configured to hold a block of data corresponding to a command, where the command identifies the block of data and a first sequence in which portions of the identified block of data is to be transmitted to a host issuing the command, where the portions of the block of data are stored in respective non-volatile memory units; a data retriever configured to retrieve, in response to the command, the portions of the block of data from the respective non-volatile memory units in a second sequence that is different from the first sequence, the second sequence associated with retrieving the portions of the block of data non-successively; an error checking and correction unit operatively coupled to the data retriever, the error checking and correction unit configured to: receive the portions of the block of data from the data retriever according to the second sequence, as the portions of the block of data are being received from the data retriever according to the second sequence, check each of the portions of the block of data to determine that the portion of the block of data is error-free, and transmit the checked portions of the block of data to the buffer according to the second sequence; and a sequencer operatively coupled to the error checking and correction unit, the sequencer configured to: receive the first sequence, track the portions of the block of data retrieved in the second sequence, and provide an indication that the error checking and correction unit has transmitted all of the portions included in the block of data to the buffer, where the error checking and correction unit is configured to transmit a signal to the sequencer that indicates that a portion of the block of data is error-free, where the sequencer tracks the block of data retrieved in the second sequence by determining that, for each portion of the block of data, the error checking and correction unit transmits an identifier of the portion of the block of data and a signal indicating that the portion is error free, and where the buffer receives the checked portions of the block of data according to the second sequence, stores each of the checked portions of the block of data in a buffer space identified based on the first sequence, and transmits the block of data to the host according to the first sequence in response to the indication that the error checking and correction unit has transmitted all of the portions included in the block of data to the buffer.