解除30MB/s魔咒! 實(shí)戰(zhàn)USB 2.0大提速
目前由于設(shè)備傳輸速率限制以及USB 3.0 5Gbps傳輸帶寬的冗余,UASP協(xié)議并沒有急于展開,另外要實(shí)現(xiàn)UASP協(xié)議的支持,除了主控設(shè)備,終端設(shè)備也需要支持UASP,終端設(shè)備的芯片設(shè)計(jì)難度將會(huì)加大,這使得閃存等小型存儲(chǔ)設(shè)備的成本和體積將會(huì)顯著增加,不利于產(chǎn)品推廣,現(xiàn)有的一些支持UASP的設(shè)置僅限于外置存儲(chǔ)。
30MB/s成了USB 2.0存儲(chǔ)設(shè)備的實(shí)際極限速度
回歸到主流的USB 2.0設(shè)備上來,前文我們已經(jīng)提到,受BOT傳輸協(xié)議、編碼方式的影響USB 2.0傳輸速度被限制在35MB/s以下,也就是說USB 2.0傳輸帶寬還有不小的提升空間。
USB 2.0使用了NRZI(Non-Return-to-Zero Inverted)編碼,它是基于串行傳輸模式,傳輸連續(xù)的0、1字符串。在RZ(Return-to-zero Code)編碼中,正電平代表邏輯1,負(fù)電平代表邏輯0,并且每傳輸完一位數(shù)據(jù),信號(hào)返回到零電平,也就是說,信號(hào)線上會(huì)出現(xiàn)3種電平:正電平、負(fù)電平、零電平。
而零電平因?yàn)槭歉郊拥膬?nèi)容浪費(fèi)傳輸帶寬,所以需要去掉歸零,于是就變化成了NRZ(Non-return-to-zero Code)編碼。在USB傳輸中,每個(gè)USB數(shù)據(jù)包,最開始都有個(gè)同步域(SYNC),這個(gè)域固定為0000 0001,這個(gè)域通過NRZI編碼之后,就是一串方波,接受者可以用這個(gè)SYNC域來同步之后的數(shù)據(jù)信號(hào)。此外,因?yàn)樵赨SB的NRZI編碼下,邏輯0會(huì)造成電平翻轉(zhuǎn),所以接受者在接受數(shù)據(jù)的同時(shí),根據(jù)接收到的翻轉(zhuǎn)信號(hào)不斷調(diào)整同步頻率,保證數(shù)據(jù)傳輸正確。
但是,這樣還是會(huì)有一個(gè)問題,就是雖然接受者可以主動(dòng)和發(fā)送者的頻率匹配,但是兩者之間總會(huì)有誤差。假如數(shù)據(jù)信號(hào)是1000個(gè)邏輯1,經(jīng)過USB的NRZI編碼之后,就是很長一段沒有變化的電平,在這種情況下,即使接受者的頻率和發(fā)送者相差千分之一,就會(huì)造成把數(shù)據(jù)采樣成1001個(gè)或者999個(gè)1了。
USB對(duì)這個(gè)問題的解決辦法,就是強(qiáng)制插0,也就是傳說中的bit-stuffing,如果要傳輸?shù)臄?shù)據(jù)中有7個(gè)連續(xù)的1,發(fā)送前就會(huì)在第6個(gè)1后面強(qiáng)制插入一個(gè)0,讓發(fā)送的信號(hào)強(qiáng)制出現(xiàn)翻轉(zhuǎn),從而強(qiáng)制接受者進(jìn)行頻率調(diào)整。接受者只要?jiǎng)h除6個(gè)連續(xù)1之后的0,就可以恢復(fù)原始的數(shù)據(jù)了。
由于強(qiáng)制插0保持發(fā)送者和接收者頻率同步會(huì)造成USB 2.0傳輸帶寬的浪費(fèi),浪費(fèi)的大小則根據(jù)插0的多少而不同。這樣USB 2.0 60MB/s的傳輸帶寬就要打一定折扣了。對(duì)于USB 3.0來說,由于要保證高達(dá)5Gbps數(shù)據(jù)傳輸?shù)恼_性,采用了時(shí)下流行的8b/10b編碼方式,有效數(shù)據(jù)利用率為80%。也就是USB 3.0的有效數(shù)據(jù)傳輸帶寬為500MB/s。
關(guān)注我們
