從內部線路瞭解狀況
其實要搞懂USB的傳輸速度,最簡單的方式就是從歷代規範的內部線路下手,只要弄清楚運作的原理,傳輸速度的問題就能迎刃而解。
回過頭看USB 1.0到2.0的規範,資料是透過1對半雙工的線路(代號為D+、D-)進行傳輸,無論是從裝置傳輸至電腦,或是反過來從電腦傳輸至裝置,都是在同一條線路上完成,只不過他同時只能進行單向傳輸,所以當雙向都需要傳輸資料的時候,就需要排隊輪流進行。
到了USB 3.0以及USB 3.1 Gen1的Type-A與Type-B等規範,傳輸線路改為2對單工的線路(代號為SSTR+、SSTR-以及SSTX+、SSTX-),雖然每組線路只能往單向傳送資料,但是因為彼此能夠同步運作的關係,所以裝置與電腦間的資料不需排隊,就能進行雙向傳輸。
USB 3.1 Gen2維持了USB 3.1 Gen1的線路配置,但是將傳輸速度提高為2倍,並改善資料編碼效率,因此具有更高的資料傳輸速度。
至於USB 3.1 Gen1與USB 3.1 Gen2的Type-C端子部分,則是為了達到無方向性的設計,而在內部準備了2套線路,也就是說總共有2套SSTR以及SSTX,但是在運作的時候只會使用其中1套線路。
而最新的USB 3.2則是沿用Type-C端子設計,不過運作時會同時使用2套線路,以雙通道的方式傳輸資料,來達到傳輸速度加倍的功效。
此外在USB 3.0至USB 3.2中的所有規範,都保留了USB 2.0用的資料線路,以達到向下相容的需求。
速度由最慢的環節決定
在瞭解規範的線路配置之後,不難發現高版本中的線路都能相容低版本的需求,例如USB 3.1 Gen2能夠以USB 3.1 Gen1模式運作,如果要搭配USB 2.0的裝置的話,也有對應的線路能夠使用。
也就是因為這個緣故,所有USB的電腦、裝置、線材都能混搭使用,只不過速度會以其中最慢的環節決定。舉例來說,將USB 2.0的隨身碟插入USB 3.2的電腦上時,就會以USB 2.0的速度運作。
所以要榨出USB 3.2的最高速度,除了電腦與裝置都需支援USB 3.2之外,也需要使用通過認證USB 3.1 Gen2 Type-C線材,才能完整發揮2,424MB/s的最高速度,若是搭配認證USB 3.1 Gen1 Type-C線材則只有1,000MB/s。如過搭配Type-A轉接線材連接至USB 3.1 Gen2或USB 3.1 Gen1的話,則因為只能以單通道模式運作,所以速度分別會降為1,212MB/s、500MB/s。
需要注意的是,有些Type-C線材內部可能只有USB 2.0所使用的D+、D-線路,所以使用這種線材連接各種裝置的話,速度就會下降至USB 2.0的水準,所以不要因為省錢購買便宜線材,而犧牲了高速傳輸的優勢。
編碼以避免訊號干擾
USB開發者論壇(USB Implementers Forum)在制定USB 3.0規範的時候,將資料傳輸率設定在5Gbps,後來推出USB 3.1時,USB 3.0被重新命名為USB 3.1 Gen1,所以其實兩者是相同的技術。
至於新推出的升級版規範,則命名為USB 3.1 Gen2,資料傳輸率從5Gbps翻倍至10Gbps,並改變使用的編碼方式,進一步提升實際傳輸效能。至於最新推出的USB 3.2,則使用2條USB 3.1 Gen1或Gen2的資料線路,進行雙通道傳輸。
不過為了降低資料傳輸的過程中產生的電磁波干擾,各世代規範都會先將資料編碼處理後再送出。
USB 3.1 Gen1運作時,會將長度為8bit的資料透過8b/10b編碼,打散(Scramble)成長度為10bit的符號(Symbol),並搭配展頻技術(Spread Spectrum)將編碼後的符號傳送出去,以降低電磁波干擾的情況。接收端收到訊號後,則可經由解碼程序將10bit符號還原為8bit資料。
然而USB 3.1 Gen2捨棄了8b/10b編碼,改為採用以10GbE乙太網路使用的64 b/66b編碼衍生的128b/132b編碼。這種編碼會將8組8bit的資料組成1個訊框(Frame),並在區塊前端加上4bit的辨識碼(Identifier),傳輸時仍會搭配展頻技術,但可視狀況決定是否打散。接收端收到訊號後,會將132bit訊框還原為128bit資料。
Gen2能降低傳輸耗損
Gen1與Gen2最大的差別,在於使用的編碼不同,在傳輸過程中產生的耗損也有所不同。在Gen1的情況中,每傳輸10bit的流量,其中只有8bit為真正的資料,耗損高達20%。而在Gen2中,每傳輸132bit的流量,就有128bit為真正的資料,耗損大約只有3%。
所以在計算理論傳輸速度的時候,USB 3.0與USB 3.1 Gen1的計算方式如下:
5Gbps(資料傳輸率) x 8/10(耗損)= 4,096Mbps(理論傳輸速度) = 500MB/s
而USB 3.1 Gen2的計算方式如下:
10Gbps(資料傳輸率) x 128/134(耗損) = 9,552Mbps(理論傳輸速度)= 1,212MB/s
至於USB 3.2的情況則最簡單,因為他是採用2條USB 3.1 Gen1或Gen2資料通道,所以只要直接乘上2倍就好,計算方式如下:
500MB/s x 2 = 1,000MB/s
(或) 1,212MB/s x 2 = 2,424MB/s
不過由於這邊提到的速度都是理論值,在實際應用的情況,會受到線材、端子品質,訊號干擾甚至是裝置效能等因素影響,根據經驗至少要打8折才會是實際速度,所以往後測試USB裝置的效能表現比不上官方宣稱的速度,也不用大驚小怪了。