USB2.0 規範中傳輸速度是 480 Mbps(即 60 MB/s)。但是很多 USB2.0 設備在實際工作時的數據傳輸速度卻與此相差甚遠,比如用 PC 用 U 盤拷個東西,往往比 60MB/s 慢很多,這是為什麼呢?
其實想想也能知道一些原因,USB 匯流排中傳輸數據的就一對差分線,單是其要同時支持各種設備(一個 USB HOST 設備通過 USB HUB 下面掛多個從設備是可以同時用的),支持雙向傳輸,必然存在複雜的協議,協議上面的開銷肯定不少,另外對於其中的單個設備來說也只能得到部分傳輸帶寬。

總的來說,主要有以下幾個因素:USB 協議開銷,USB 帶寬的分配,硬體結構,USB 設備驅動程序
USB 協議開銷
在 USB 數據通信的過程中,匯流排上傳輸的並不是所有都是有效信息,還要包括諸如同步信號、類型標識、校驗碼、握手信號等各種協議信息。因此實際數據傳輸的速率根本沒有可能達到匯流排傳輸的極限速度 480 Mbps。且對不同的傳輸類型,存在不同的協議開銷。
USB 有 4 中傳輸模式:控制傳輸、批量傳輸、中斷傳輸、同步傳輸。
根據 USB 協議,USB2.0 的告訴模式,1 秒有 8 個微幀,計算 4 中模式的最大速度傳輸如下:
| 傳輸類型 | 數據包長度 /Byte | 每微幀最大傳輸次數 | 最大速度 /(MB/s) |
| 控制傳輸 | 64 | 31 | 15.137 |
| 中斷傳輸 | 1024 | 3 | 23.436 |
| 批量傳輸 | 512 | 13 | 50.781 |
| 同步傳輸 | 1024 | 3 | 24.436 |
控制傳輸:控制傳輸是雙向傳輸,數據量通常較小,主要用來進行查詢、配置和給 USB 設備發送通用的命令。
中斷傳輸:中斷傳輸方式主要用於定時查詢設備是否有中斷數據要傳送,該傳輸方式應用在少量的、分散的、不可預測的數據傳輸場合。鍵盤,滑鼠等。
批量傳輸:在訪問 USB 匯流排時,相對其他傳輸類型具有最低的優先順序,USB HOST 總是優先安排其他類型的傳輸,當匯流排帶寬有富餘時才安排批量傳輸,印表機,掃描儀,存儲設備等。
同步傳輸:同步傳輸適用於以固定速率傳輸,可以容忍偶爾錯誤的數據上。實時傳輸一般用於 UVC 攝像頭等設備。數據傳錯時不會重傳。
USB 帶寬的分配
USB 協議規定,控制傳輸應確保在低 / 全速時能夠使用 10%的帶寬,高速時能夠使用 20%的帶寬。而批量傳輸並沒有保留任何帶寬。即批量傳輸只有在控制傳輸和其它傳輸不需要使用其帶寬的情況下,方能使用剩下的帶寬。因此,儘管匯流排閑置時批量傳輸可以在一段時間裡儘快地傳輸大量的數據,但匯流排忙時批量傳輸就可能工作很慢。
通常主機同時使用滑鼠、鍵盤、攝像頭、印表機和掃描儀等多種 USB 設備,它們分別採用不同的傳輸方式。如果開始只有一個設備以批量傳輸方式獨佔系統的全部帶寬,速度會很快(接近 53 MB/s)。但如果新插入的若干設備需要使用控制傳輸全部 20%的保留帶寬,那麼先前設備批量傳輸的可用帶寬就會下降到原先的 80%,傳輸速度可能變為 42 MB/s 以下。作為一種更極端情況是批量傳輸設備插入前,已有設備以控制傳輸方式完全佔有了 20%的保留帶寬。其它設備也以中斷或者同步傳輸方式共同佔據了剩下的 80%帶寬,那麼批量傳輸設備就會因為沒有保留帶寬,只能處於等待的狀態。
硬體結構
其實常用 USB 介面的硬體結構如下圖,一個 USB HUB 下面掛了多個設備,即時我們用 PC 時是直接用的電腦的 USB 介面,那也是因為廠家把 USB HUB 做到 PC 裡面了,這樣才能有這麼多的 USB 介面。
USB HUB 的外設(Device 端)所有的數據之和是和 HOST 端一樣的,而 HOST 端也不能超過 480Mb/s,所以 480Mb/s 的速度是大家共享的,而不是某一個獨享。

USB 設備驅動程序
USB 設備的驅動可以分為設備驅動程序、USB 匯流排驅動程序、USB 控制器驅動程序三個部分。應用程序通過使用 API 函數與 USB 設備驅動程序聯繫。USB 設備驅動程序通過調用驅動程序完成對設備的數據讀寫。USB 匯流排驅動程序和 USB2.0 控制器驅動程序由操作系統提供。設備驅動通過構造 URB(USB Request Block),並傳給匯流排驅動程序來完成與匯流排驅動程序的通信。
通常情況下設備驅動程序需要頻繁產生中斷。而設備驅動程序系統優先順序並不高,當計算機負荷較重或者有其它優先順序較高的中斷髮生時,它的中斷得不到處理而需要等待。如果設備驅動程序向 USB 匯流排傳遞 URB 的時候設置一個較大的緩衝區 . 便可減少了中斷的頻率而減少等待時間。從而提高數據傳輸的速度。此外,調整驅動程序中諸如命令排隊策略、改變請求包大小等措施,也能對 USB 的數據傳輸速度產生一定的影響。
綜上所述,通常所說的 480 Mbps 是 USB2.0 匯流排速度的上限 . 考慮通信協議的開銷後,實際數據的傳輸速度存理論上最高也只有 53 MB/s(426Mbps). 實際綜合條件下 15 MB/s 至 25 MB/s 都可以作為合理的高速目標。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/276509.html
微信掃一掃
支付寶掃一掃