A device (155, 250) comprising: a buffer configured to hold one or more blocks of data corresponding to one or more respective commands, where each command identifies a block of data and a first sequence in which portions of the identified block of data are to be transmitted to a host (105, 205) issuing the command, where portions of the blocks of data are stored in respective non-volatile memory units, where each non-volatile memory unit includes multiple sectors and where portions of a block of data are stored across the sectors of the non-volatile memory units; and a data retriever configured to: retrieve in parallel, in response to two or more commands, two or more blocks of data, wherein portions of the two or more blocks of data are retrieved from the respective non-volatile memory units through multiple channels in a second sequence that is different from the first sequence identified by the corresponding command, the second sequence corresponding to a sequence in which the portions are stored in the sectors of the non-volatile memory units; interleave portions of a block of data corresponding to a first command with portions of a block of data corresponding to a second command; and transmit the retrieved portions of the two or more blocks of data to the buffer, where the buffer is further configured to transmit a block of data to the host in response to an indication that the data retriever has retrieved all portions included in the block of data, the device further comprising: a sequencer that is configured to track portions of a block of data retrieved in the second sequence. a buffer configured to hold one or more blocks of data corresponding to one or more respective commands, where each command identifies a block of data and a first sequence in which portions of the identified block of data are to be transmitted to a host (105, 205) issuing the command, where portions of the blocks of data are stored in respective non-volatile memory units, where each non-volatile memory unit includes multiple sectors and where portions of a block of data are stored across the sectors of the non-volatile memory units; and a data retriever configured to: retrieve in parallel, in response to two or more commands, two or more blocks of data, wherein portions of the two or more blocks of data are retrieved from the respective non-volatile memory units through multiple channels in a second sequence that is different from the first sequence identified by the corresponding command, the second sequence corresponding to a sequence in which the portions are stored in the sectors of the non-volatile memory units; interleave portions of a block of data corresponding to a first command with portions of a block of data corresponding to a second command; and transmit the retrieved portions of the two or more blocks of data to the buffer, retrieve in parallel, in response to two or more commands, two or more blocks of data, wherein portions of the two or more blocks of data are retrieved from the respective non-volatile memory units through multiple channels in a second sequence that is different from the first sequence identified by the corresponding command, the second sequence corresponding to a sequence in which the portions are stored in the sectors of the non-volatile memory units; interleave portions of a block of data corresponding to a first command with portions of a block of data corresponding to a second command; and transmit the retrieved portions of the two or more blocks of data to the buffer, where the buffer is further configured to transmit a block of data to the host in response to an indication that the data retriever has retrieved all portions included in the block of data, the device further comprising: a sequencer that is configured to track portions of a block of data retrieved in the second sequence.