Coalescing multiple contexts into a single data transfer in a media controller architecture
First Claim
1. A method of transferring data between a host device and a storage media coupled to a media controller, the method comprising:
- receiving a host command requesting a data transfer;
determining a total size of a data transfer between the host device and the media controller based on a corresponding host command request;
generating one or more contexts for the media controller corresponding to the total size of the requested data transfer, each context corresponding to operations at one or more contiguous addresses of the storage media for the requested data transfer;
associating, by the media controller, the one or more contexts with a transfer of data of the corresponding host command request between the host device and the storage media;
wherein,if the data transfer is a write operation;
transferring one or more data segments from the host device into a receive buffer, wherein a combined size of the one or more received data segments corresponds to the total size of the data transfer, wherein a size of each of the data transfer segments corresponds to a packet size of a communication protocol of the host device;
transferring, in accordance with the one or more contexts, the one or more data segments from the receive buffer to the storage media, wherein a size of each of the one or more contexts is equal to an integer multiple of a storage boundary size of the storage media and wherein the size of the data transfer segments and the size of the contexts are substantially independent of one another; and
if the requested data transfer is a read operation;
retrieving, in accordance with the one or more contexts, data from the storage media into a transmit buffer, wherein the size of each of the one or more contexts is equal to an integer multiple of a storage boundary size of the storage media and wherein the size of the data transfer segments and the size of the contexts are substantially independent of one another;
grouping the retrieved data into one or more segments wherein a combined size of the one or more retrieved data segments corresponds to the total size of the data transfer, wherein the size of each of the data transfer segments corresponds to a packet size of a communication protocol of the host device; and
transmitting the one or more segments based on the total size of the data transfer.
4 Assignments
0 Petitions
Accused Products
Abstract
Described embodiments provide for transferring data between a host device and a storage media. A host data transfer request is received and a total size of the data transfer is determined. One or more contexts corresponding to the total size of the requested transfer are generated and are associated with transfers of data. If the data transfer is a write operation, one or more data segments from the host device are transferred into a buffer. The combined size of the data segments corresponds to the total size of the data transfer. In accordance with the contexts, the one or more data segments are transferred from the buffer to the storage media. If the requested data transfer is a read operation, in accordance with the contexts, data from the storage media is retrieved into a buffer and grouped into one or more segments, which are transmitted to the host device.
-
Citations
16 Claims
-
1. A method of transferring data between a host device and a storage media coupled to a media controller, the method comprising:
-
receiving a host command requesting a data transfer; determining a total size of a data transfer between the host device and the media controller based on a corresponding host command request; generating one or more contexts for the media controller corresponding to the total size of the requested data transfer, each context corresponding to operations at one or more contiguous addresses of the storage media for the requested data transfer; associating, by the media controller, the one or more contexts with a transfer of data of the corresponding host command request between the host device and the storage media;
wherein,if the data transfer is a write operation; transferring one or more data segments from the host device into a receive buffer, wherein a combined size of the one or more received data segments corresponds to the total size of the data transfer, wherein a size of each of the data transfer segments corresponds to a packet size of a communication protocol of the host device; transferring, in accordance with the one or more contexts, the one or more data segments from the receive buffer to the storage media, wherein a size of each of the one or more contexts is equal to an integer multiple of a storage boundary size of the storage media and wherein the size of the data transfer segments and the size of the contexts are substantially independent of one another; and if the requested data transfer is a read operation; retrieving, in accordance with the one or more contexts, data from the storage media into a transmit buffer, wherein the size of each of the one or more contexts is equal to an integer multiple of a storage boundary size of the storage media and wherein the size of the data transfer segments and the size of the contexts are substantially independent of one another; grouping the retrieved data into one or more segments wherein a combined size of the one or more retrieved data segments corresponds to the total size of the data transfer, wherein the size of each of the data transfer segments corresponds to a packet size of a communication protocol of the host device; and transmitting the one or more segments based on the total size of the data transfer. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A non-transitory machine-readable medium, having encoded thereon program code, wherein, when the program code is executed by a machine, the machine implements a method of transferring data between a host device and a storage media coupled to a media controller, the method comprising:
-
receiving a host command requesting a data transfer; determining a total size of a data transfer between the host device and the media controller based on a corresponding host command request; generating one or more contexts for the media controller corresponding to the total size of the requested data transfer; associating, by the media controller, the one or more contexts with a transfer of data of the corresponding host command request between the host device and the storage media;
wherein,if the data transfer is a write operation; transferring one or more data segments from the host device into a receive buffer, wherein a combined size of the one or more received data segments corresponds to the total size of the data transfer, wherein a size of each of the data transfer segments corresponds to a packet size of a communication protocol of the host device; transferring, in accordance with the one or more contexts, the one or more data segments from the receive buffer to the storage media, wherein a size of each of the one or more contexts is equal to an integer multiple of a storage boundary size of the storage media and wherein the size of the data transfer segments and the size of the contexts are substantially independent of one another; and if the requested data transfer is a read operation; retrieving, in accordance with the one or more contexts, data from the storage media into a transmit buffer, wherein the size of each of the one or more contexts is equal to an integer multiple of a storage boundary size of the storage media and wherein the size of the data transfer segments and the size of the contexts are substantially independent of one another; grouping the retrieved data into one or more segments wherein a combined size of the one or more retrieved data segments corresponds to the total size of the data transfer, wherein the size of each of the data transfer segments corresponds to a packet size of a communication protocol of the host device; and transmitting the one or more segments based on the total size of the data transfer.
-
-
9. A media controller for transferring data between a host device and a storage media coupled to the media controller, the media controller comprising:
-
a receive buffer for receiving a host command requesting a data transfer between the host device and the media controller; an instruction interface for i) determining a total size of the requested data transfer based on the received host command, and ii) generating one or more contexts corresponding to the total size of the requested data transfer, wherein the contexts are stored in a pending write table of the media controller and the contexts are employed by the media controller to transfer data between the host device and the storage media; wherein, if the requested data transfer is a write operation; the receive buffer i) receives one or more data segments from the host device, the one or more received data segments corresponding to the total size of the data transfer, wherein a size of each of the data transfer segments corresponds to a packet size of a communication protocol of the host device, and ii) transfers, by the one or more contexts, the received data to the storage media, wherein a size of each of the one or more contexts is equal to an integer multiple of a storage boundary size of the storage media and wherein the size of the data transfer segments and the size of the contexts are substantially independent of one another; or, wherein if the requested data transfer is a read operation; a transmit buffer is configured to i) receive, by the one or more contexts, data from the storage media to a transmit buffer, wherein the size of each of the one or more contexts is equal to an integer multiple of a storage boundary size of the storage media and wherein the size of the data transfer segments and the size of the contexts are substantially independent of one another, ii) group the retrieved data into one or more segments, wherein the size of each of the data transfer segments corresponds to a packet size of a communication protocol of the host device, and iii) provide the one or more segments to a link protocol core for transmission to the host device. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
Specification