Serial attached storage protocols, such as serial ATA (SATA) and serial SCSI (SAS) are becoming more prevalent for connecting hard drives to a computer system. When connecting hard drives through the SATA or SAS protocols, the I/O interface potential bandwidth may exceed that of the target device media. Therefore, when communicating using these protocols there may be time periods when data is not being sent. At these moments, the SATA and SAS protocols implement a continued repeating primitive sequence of data. For example, a ‘HOLD’ primitive may be repeatedly sent to indicate there is no data on the line.
In practice, the protocol engine for the SATA and SAS protocols generates long sequences of the same primitive repeating. However, such repeated signals can create electromagnetic interference (EMI) problems. To address this problem, the SATA and SAS specifications define a ‘continue’ primitive that indicates random data received prior to the next primitive will be ignored. The protocol engine transmits this randomized “junk” data to minimize EMI during these repeating primitive sequences.
Unlike previous serial interfaces, such a Fibre Channel, the SATA and SAS interfaces are low cost and implemented using inexpensive connectors, oscillators, and transmission lines. Therefore, the probability of receiving corrupted data and primitives is high. Many times errors occur during the transmission of the randomized “junk” data in a continued repeating primitive. When these errors are encountered, current designs indicate the errors to firmware via interrupts, and require retransmission of multiple frames. This process occurs even when a single repeating primitive data double word inside a single frame is in error.
The overhead created by this error condition procedure is high because it requires one or more of a context switch, determination of the invalid I/O device, requesting the target device to retransmit, and the actual retransmittal of the frame information structure (FIS) which is typically more than one frame. This is a relatively common occurrence that degrades system performance. Therefore, a method to validate received frames that have embedded, corrupted data inside continued repeating primitive sequences, without requiring firmware intervention would be beneficial.