USB2.0實際傳輸速度為什么與480mbps相差甚遠


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/s25 MB/s都可以作為合理的高速目標


————————————————
原文鏈接:https://blog.csdn.net/weixin_42005993/article/details/89076941

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM