The data lanes that make up a data interface between two devices, or chips, are called a data link. The different lanes in the data link are typically synchronized to the slowest lane. The different lanes on a receiving device receive data segments of a data frame at different times. However, a complete data frame is only transmitted from one layer to another after the last data word has arrived at the receiving device and the receiving device is then able to accept the data. This delay in transmission can cause latency in high-speed communications between devices. Depending upon the delay of individual data segments and the time at which the data frame was transmitted, the data frame might not be available for immediate use by the receiving device, and therefore would have to be stored until it can be used by the receiving device. This incurs additional undesirable latency.
For example, and with reference to FIG. 1, data is transferred over an interface link 104a or 104b from at least one first device 102 to a second device 106, such as a device that has some kind of internal resource 108. Timing offsets are determined between each lane of the link 104 and the lane of the link 104 containing the slowest arriving data, which determines when the frame is ready to be forwarded to the next layer. A serializer/deserializer 110 (SerDes) contains a buffer to hold data from the various lanes during this synchronization or deskewing process.
If, after the data is link-synchronized in the manner described above, the resource 108 is not accessible, then a resource buffer 109 is used to store the frame data until the resource 108 is able to accommodate the frame of data.