PCI express if often quoted as having 500 MB/sec data transmission speed per lane. I've decided to blog the calculation, since I don't see it pulled together satisfactorily anywhere.
- Each "lane" of a PCI Express slot consists of a transmit path and a recieve path, each path capable of 5 Giga-transfers per second (5 GT/sec) (see https://secure.wikimedia.org/wikipedia/en/wiki/Gigatransfer for details on this unit).
- The path is 1 bit wide or 1/8 of a byte wide.
- Also, the transmission uses 8B/10B encoding, which means 10 bits are transmitted for every 8 bits of data. (See http://en.wikipedia.org/wiki/8B10B).
1/8 byte / transfer x 5 GT/sec x 8/10= 0.5 GB/sec = 500 MB/sec
Also remember that this data rate is each way simultaneously, since each lane has two paths for full duplex operation. That is why you sometimes see an "aggregate rate" advertised of 1000 MB/sec or 1 GB/sec.
Typical PCIe Gen 2 slot sizes on performance machines are 1x, 2x, 4x, 8x and 16x, where the numbers refer to the number of lanes. The lanes can be used in concert to multiply the data rate.
|Type||One-way Data Rate (GB/sec)||"Aggregate" Data Rate (GB/sec)|
I hope this clarifies things somewhat for somebody else out there.
PCI Express 3.0 is coming. The transfer rate has been increased from 5 GT/sec to 8 GT/sec, and some tricks around encoding have been pulled off. The new encoding scheme uses 128B/130B encoding. So, one way on a single lane, the data rate is as follows:
1/8 byte/transfer x 8 GT/sec x 128/130 = 128/130 GB/sec ~ 0.985 GB/sec ~ 985 MB/sec
So, by increasing the clock rate by 60% and the encoding efficiency by 20%, the data rate has been nearly doubled in this new generation.
SATA 2 and SATA 3
Referring simply to one-way data speeds, SATA 2 is capable of 3 GT/sec and SATA 3 of 6 GT/sec. Both use 8B/10B encoding, which gives data speeds of 0.3 and 0.6 GB/sec respectively.