簡介
USB由于具備簡單,、成熟,、即插即用特征,所以在市場上很流行,。然而,,USB 2.0 480 Mbps的速度無法支持新一代存儲和視頻。因此,,移植到一個更快標(biāo)準(zhǔn)的時機(jī)已經(jīng)成熟,,這就導(dǎo)致了USB 3.0新協(xié)議的開發(fā)。對于開發(fā)商而言,挑戰(zhàn)是如何充分利用USB 3.0的潛能,。本文將探討使用USB 3.0硬件軟件設(shè)計問題,,本文主要介紹的是手持產(chǎn)品。首先,,我們將比較USB 2.0和USB 3.0的性能,,以及過渡到USB 3.0模塊影響到的器件,。
在一個普通的場景中,,在device端,處理器直接連接到USB,、存儲器和外設(shè),。記住這種結(jié)構(gòu),由High-Speed過渡到SuperSpeed,,處理器的影響可以概括如下:
USB 2.0 VS USB 3.0
數(shù)據(jù)速率
USB 2.0和USB 3.0的基本區(qū)別是帶寬,。USB 2.0所提供的理論帶寬是480Mbps。事實上,,收到的最大吞吐量約為320Mbps (40MBps),,它大致是理論值的三分之二。使用USB3.0,,數(shù)據(jù)吞吐量為4.8Gbps,。如果我們用相同的比例,那么預(yù)期的數(shù)據(jù)速率是3.2Gbps (400MBps),。然而,,許多開發(fā)人員希望能提供更高的吞吐量。圖1顯示了USB 3.0 和USB 2.0用于Buffalo外部存儲磁盤進(jìn)行不同大小文件傳輸?shù)臄?shù)據(jù)率差異,。應(yīng)該指出的是,,USB 3.0數(shù)據(jù)速率受儲存設(shè)備約束,否則400 Mbps的數(shù)據(jù)速率很容易達(dá)到,。
圖1可以看出,,單個請求傳輸大小增大了,數(shù)據(jù)傳輸速率也隨之增加了,。這是因為當(dāng)請求傳輸大小增加時,,請求數(shù)量和因此MSC設(shè)備要處理中斷減少,那么整體性能就更好了,。64 KB傳輸過后,,數(shù)據(jù)速率達(dá)到飽和(因為Windows驅(qū)動在一個SCSI請求中不能請求超過64 KB的數(shù)據(jù))。這些數(shù)據(jù)顯示了中斷在整個系統(tǒng)性能的重要性和影響,。
高數(shù)據(jù)率增加了中斷速率和數(shù)據(jù)請求速率,,這使處理器負(fù)荷顯著提高。當(dāng)處理器忙于處理USB相關(guān)的實時請求時,增加了延時,,用戶會看到應(yīng)用處理慢了下來,,這并不是一個滿意的結(jié)果。
數(shù)據(jù)流
USB 2.0數(shù)據(jù)請求一次只能是一個方向,,與USB 2.0標(biāo)準(zhǔn)不同,,USB 3.0支持同時讀和寫。這是因為USB 2.0是半雙工協(xié)議,,而USB 3.0是全雙工協(xié)議,。全雙工通信是通過增加更多連接來支持同時傳輸數(shù)據(jù)的。它同時也帶來了成本的增加和軟件的復(fù)雜性,。使用USB 2.0,,處理器一次只參與傳輸,并且數(shù)據(jù)結(jié)構(gòu)和請求處理非常簡單,。但隨著全雙工USB 3.0的到來,,現(xiàn)在的數(shù)據(jù)結(jié)構(gòu)需要加倍的信息。USB軟件模塊還需要能夠處理同時的數(shù)據(jù)操作,。
電源管理
封包傳輸協(xié)議改變了(例如,,廣播定向),設(shè)備polling消除了,,link的定義和功能級中間狀態(tài),,使USB3.0電源管理要很不錯。我們將討論USB設(shè)備處理器必須要做的事情,,因為第三種降低功耗改變了,,例如多種中間狀態(tài)。
在USB 2.0中,,狀態(tài)只有ACTIVE 和SUSPEND,。SuperSpeed中有兩個以上的狀態(tài):FAST EXIT IDLE 和SLOW EXIT IDL。狀態(tài)越多意味著硬件和軟件兩個方面都更復(fù)雜,。外設(shè)可以使用link級電源管理發(fā)起省電模式,。要獲得實際利益,處理器需要跟蹤USB接口的空閑時間,,智能采取行動,。對于一個設(shè)備來說電源連接狀態(tài)的入口和出口速率可能很頻繁。例如,,同步傳輸允許外設(shè)在服務(wù)間隔進(jìn)入低功耗狀態(tài),。這可以顯著增加處理器負(fù)載運行時間。
流支持
USB3.0拓展了批量傳輸模式,,支持流模式,。批量流提供了同頻帶信號傳輸,通過一個標(biāo)準(zhǔn)批量傳送支持多路多個獨立邏輯數(shù)據(jù)流協(xié)議。這種作法簡化了USB設(shè)計復(fù)雜的類協(xié)議,。例如,,USB SCSI (UAS)海量存儲類使用批量流代替簡單的BOT協(xié)議。在BOT中,,一次只有一個pending請求,,而在UAS中,一次可能有n-1個請求,,這里n是批量端點中支持的流數(shù),。實現(xiàn)和維護(hù)一個復(fù)雜的類協(xié)議也可能使處理器一直很忙。對于BOT來說單個平面數(shù)據(jù)結(jié)構(gòu)就夠了,,UAS協(xié)議要求基于優(yōu)先級的數(shù)據(jù)結(jié)構(gòu)用于實現(xiàn)外設(shè)端固件,。
常用USB設(shè)備結(jié)構(gòu)分析
考慮到海量存儲設(shè)備是市場上最常見的高性能USB外設(shè),,我們會舉一個海量存儲設(shè)備的例子,,來精確的分析其性能。
我們將討論數(shù)據(jù)方面,,這是因為大部分時間里接口將涉及數(shù)據(jù)包傳輸而不是控制包,。
數(shù)據(jù)傳輸步驟:
1.處理器收到一個USB請求。
2.處理器處理這個請求,。
3.處理器依次存儲讀/寫請求,。
4.處理器等待傳輸完成。
5.處理器發(fā)送完成情況到USB host
這次傳輸?shù)臅r間結(jié)構(gòu)
總延時 = X Y Z
這里,,X,,Y和Z是主要的延時構(gòu)成,解釋如下:
1.延時X是傳輸請求數(shù)據(jù)包在主機(jī)和處理器之間所花的時間,。這取決于USB協(xié)議和USB設(shè)備硬件處理效率,。請求數(shù)據(jù)包大小只有幾十個字節(jié),所以延時只有幾納秒,。
2.延時Y代表的是處理器處理USB請求和建立直接存儲器存取所需要的時間,。這取決于處理器類型,線程/過程數(shù)目,,軟件架構(gòu),。對于通用處理器處理大量的過程和任務(wù)來說,操作系統(tǒng)處理延遲可能很大程度取決于中斷延時,,內(nèi)容切換延遲,,隊列延遲等。最壞的情況下,,延時Y可能達(dá)到數(shù)百微秒,。
3.延遲Z是指數(shù)據(jù)在USB和存儲設(shè)備之間傳輸所需的時間,這取決于請求類型。還取決于直接存儲器存取結(jié)構(gòu)和存儲設(shè)備類型,,并不取決于USB速度,,因為這里瓶頸會是存儲速度而不是USB速度(如SuperSpeed)。延遲Z可能在幾毫秒和數(shù)微秒之間,,取決于存儲設(shè)備類型和數(shù)據(jù)大小,。
雖然USB速度快了十倍(從480Mbps 到 5Gbps),但是真正的吞吐量將遠(yuǎn)遠(yuǎn)低于理論值,,因為USB延時(X)比操作系統(tǒng)處理延遲(Y)和存儲傳輸延遲(Z)都小得多,,其相對于總延時可以忽略不計。Z延時可以通過選擇更好的存儲設(shè)備來改進(jìn),,但是Y延時,,則需要通過更有效地系統(tǒng)設(shè)計來管理。
效率
要發(fā)揮USB 3.0的全部潛力,,需進(jìn)行以下變化:
高性能處理器:處理器由于USB 3.0引起的復(fù)雜性和任務(wù)處理的數(shù)量都將大幅上升,。如果希望其他應(yīng)用性能不受影響,就需要一個功能強(qiáng)大的處理器,。
影響:這不僅會增加產(chǎn)品成本,,而且還會增加功耗,對于手持設(shè)備來說,,這是很不利的,。
必須改變現(xiàn)有的系統(tǒng)架構(gòu)來適應(yīng)USB 3.0。同時,,如果USB 3.0的全部潛能都可以實現(xiàn),,就需要大容量和高性能的存儲設(shè)備。
影響:這將增加系統(tǒng)的復(fù)雜度,,因此影響了推向市場的時間和項目風(fēng)險,。
重新設(shè)計來提高性能
不需要將USB控制器連接到通用處理器(GP),可以連接到一個I/O模塊,。這種I/O模塊類型叫做I/O通道,,這里I/O模塊增強(qiáng)為一個獨立的處理器。GP指揮I/O通道在主存儲器中執(zhí)行程序,。I/O通道拿到這些指令并執(zhí)行他們,,并不需要GP干預(yù)。GP只是當(dāng)整個序列完成時產(chǎn)生中斷,。
如果I/O模塊有自己的本地存儲器,,那么就稱為I/O處理器。這種設(shè)置減少了通用處理器的參與,。使用這種方式,,可以避免需要使用高性能處理器和結(jié)構(gòu)的變化,,從而可以減少系統(tǒng)成本和量產(chǎn)風(fēng)險。西橋就是這樣一個智能I/O處理器,,它把外設(shè)控制器增強(qiáng)了并模塊化到了一個嵌入式計算機(jī)結(jié)構(gòu),。南橋也是用很類似的方式來提高數(shù)據(jù)在PC的吞吐量,西橋結(jié)構(gòu)提高了吞吐量,,可以用于USB,,通用處理器,存儲器,,及其他外設(shè)之間的高吞吐量數(shù)據(jù)傳輸,。
西橋器件是專為這種操作設(shè)計的,可以顯著提高性能,。由于數(shù)據(jù)傳輸?shù)目傃舆t依賴于處理延遲,,當(dāng)使用西橋結(jié)構(gòu)后會大大降低這種延遲。
影響通用處理器性能的主要因素取決于中斷的頻率,。簡而言之,,每次GP收到中斷,內(nèi)容都需要切換,,執(zhí)行ISR,,從而增加了其他運行程序的時間,。當(dāng)使用西橋器件時,,大部分USB相關(guān)中斷由它處理,從而提高了GP的性能,。
下面是一個15.1 GB的嵌入式多媒體卡(eMMC) 使用海量存儲類驅(qū)動枚舉的性能測試,。沒有西橋時GP不得不處理很多中斷。下圖描繪了系統(tǒng)的各項任務(wù)處理結(jié)果,。中斷數(shù)量為log2單位,。
上表反映了使用特定應(yīng)用的I/O處理器(如西橋)時,GP必須處理的中斷減少的數(shù)目,。沒有西橋,,GP要處理大量的中斷,產(chǎn)生‘super speed’迫使GP要很長時間保持空閑狀態(tài)(由于次要的內(nèi)容切換),。相反,,GP可以把這些任務(wù)釋放給西橋,保持其處理其他實時任務(wù)的效率,,充分發(fā)揮USB 3.0的潛力,。西橋結(jié)構(gòu)不僅可以簡化整體系統(tǒng)平臺結(jié)構(gòu),它還可以提高整體性能并降低項目風(fēng)險,。