您的位置:首頁(yè) > 熱點(diǎn) >

為什么串口比并口快?

作為一個(gè)電路設(shè)計(jì)師,我整個(gè)職業(yè)生涯都花在接口電路上,串行并行都做過(guò),且速度不慢(DDR3-1600Mbps, SerDes 30Gbps),這個(gè)問(wèn)題不答實(shí)在技癢難耐。已經(jīng)看到的答案中,大家基本上都命中了關(guān)鍵的知識(shí)點(diǎn),但是沒(méi)有把背后的邏輯說(shuō)清楚,也沒(méi)有人從電學(xué)特性和經(jīng)濟(jì) 的角度分析這個(gè)問(wèn)題。大言不慚,歡迎大家拍磚。

本文引用地址:http://www.eepw.com.cn/article/201606/292913.htm

----------補(bǔ)充--------

名詞解釋:

Mbps, Gbps: 一百萬(wàn)比特每秒,十億比特每秒

skew:時(shí)間偏差,A比B快/慢一秒,就叫skew一秒

PCB:印刷電路板,也就是大多數(shù)電路板

IO: 輸入輸出電路

cable: 線纜

SerDes:串行轉(zhuǎn)并行,并行轉(zhuǎn)串行

還有人說(shuō)貫口最快的,我們來(lái)算一算。業(yè)界目前大量應(yīng)用的28Gbps SerDes,傳一個(gè)比特只要35.7皮秒,這點(diǎn)時(shí)間光在真空中可以走上一厘米,連角膜到視網(wǎng)膜都不夠。哪個(gè)快?

----------正式答案的分割線--------

先說(shuō)我的答案,串行接口為啥比并行接口快?是因?yàn)?em>串口的特性和應(yīng)用場(chǎng)景,決定了它更加適合采用一些提高單根信道速率的設(shè)計(jì)方法,這些方法用在并口上并不合適。

討論這個(gè)問(wèn)題,首先要搞清楚定義,什么叫并行接口(parallel link)? 什么叫串行接口(serial link)?這就可以吵一天。

并 口代表DDR說(shuō):“我是并口的純正血統(tǒng)杰出代表,每8bit要附帶一對(duì)DQS線作為時(shí)鐘,每個(gè)bit都要同步到這對(duì)DQS上去,skew超標(biāo)就不能工 作,64位DDR3-1600總帶寬可以到100Gbps,哪個(gè)串口做得到”?鄙人冷笑,說(shuō):“別以為我不知道你的底細(xì),別看你IO是1.6G,內(nèi)存控制 器給你的一般都是4位并行的400M,你要先悄悄做一下并行轉(zhuǎn)串行,再輸出。何況你傳64bit數(shù)據(jù)需要80根全速率的DQ/DQS線,還要20多根半速 率命令地址線,平均下來(lái)一根線1G還不到”。

XAUI舉手問(wèn):“我算串口么?XAUI一定是8組16根差分線,4組讀4組寫(xiě),缺任何一組都不符合協(xié)議,看著很并行啊?” 32位的PCI-E也一臉關(guān)心的等著答案。

我們先這么定義:在一個(gè)獨(dú)立的信道上,每次同時(shí)傳輸1bit為串口,每次同時(shí)傳輸多個(gè)bit為并口。 標(biāo)準(zhǔn)的串口如XAUI,HDMI等,每對(duì)差分線組成一個(gè)信道(channel),每個(gè)信道是否能成功傳輸并不取決于其他信道。而DDR這種,10根線組成 一個(gè)信道,每次同時(shí)傳8bit,錯(cuò)了某一bit只能重新傳,便是標(biāo)準(zhǔn)并口,芯片內(nèi)部的并轉(zhuǎn)串和IO并不相關(guān),不影響定性。按照這個(gè)定義,大家看看各種接口 協(xié)議怎么劃分呢?我覺(jué)得已經(jīng)很清楚了,以單個(gè)channel的傳輸速率衡量,串口一般來(lái)說(shuō)更快。下一個(gè)問(wèn)題就是,為什么呢?

這是一個(gè)電學(xué)問(wèn)題,但首先是一個(gè)經(jīng)濟(jì)問(wèn)題。

對(duì) 任何一種協(xié)議,提高總帶寬不過(guò)是兩種辦法,首先要提高單根線的傳輸速率,其次只能增加電線的數(shù)目。增加線的數(shù)目實(shí)在費(fèi)錢,首先現(xiàn)在的芯片往往IO都很緊 張,增加了IO PAD還要搭上額外的ESD和面積;封裝和PCB上增加額外的線更復(fù)雜更貴這就不用說(shuō)了,對(duì)于某些用cable的協(xié)議基本就是不可接受的。你是愿意插16 根網(wǎng)線還是一根?接電視機(jī)的時(shí)候喜歡一根線的HDMI,還是五根線的RGB+音頻?還有 @Arthur Wang 提到的150米長(zhǎng)線。。。。。。何況并口還要對(duì)這些線進(jìn)行長(zhǎng)度匹配,想想頭就大了。

歷史上,工程師們確實(shí)是先做了串口,速度不夠沒(méi)辦法只好含淚加電線上并口,直到他們發(fā)現(xiàn)了三大法寶來(lái)提速,并口的動(dòng)力就不那么強(qiáng)勁了,正如 @auxten 所言。但是在芯片內(nèi)部,增加總線寬度的代價(jià)并不高,因此CPU里面有個(gè)1024位的數(shù)據(jù)總線也不奇怪。

為了提高單根線的傳輸速率,必須要講到我們模擬電路工程師的三大法寶,差分信號(hào)(differential signaling),時(shí)鐘-數(shù)據(jù)恢復(fù)(Clock-Data Recovery,簡(jiǎn)稱CDR),和信道均一化(Channel Equalization,Eq)。

差分信號(hào)的好處 ,不外乎抗干擾能力強(qiáng),引入的噪聲也比較小,雖然必須要兩根線,但速度從幾百M(fèi)提高到幾G,還是很值得的。

CDR的好處 @龔黎明 也說(shuō)過(guò)了,消滅了skew,減少了時(shí)鐘的功耗和噪聲(但多出了CDR電路本身的功耗和噪聲),同時(shí)避免了電磁干擾。想想在PCB或者電線上傳一個(gè)15G的時(shí)鐘,太帶感了,幸虧我們不用做這種事。

信道均一化 相當(dāng)值得一提,這才是SerDes高速發(fā)展的決定性因素,所以我決定花點(diǎn)文字講一下。

一般來(lái)說(shuō),真實(shí)世界中的信道都是低通特性的,到處都是小電容,所謂絕緣體中的分子在高頻情況下吸收電場(chǎng)能量,再加上金屬線中的趨膚效應(yīng),所以我們想要的高頻信號(hào)走不了多遠(yuǎn)就不像樣子了,比如下面某信道的頻率特性(綠線)。

如圖所示,在對(duì)應(yīng)28Gbps的頻點(diǎn)上,信號(hào)能量被衰減了30db,電壓幅度只剩3%了;在對(duì)應(yīng)56Gbps的頻點(diǎn)上更慘,65db意味著信號(hào)電壓擺幅剩下不到千分之一。在這種信道中,發(fā)送端一個(gè)完美漂亮的數(shù)據(jù)眼圖:

到了接收端會(huì)變成這樣的一堆垃圾:

什么都辨認(rèn)不出來(lái)對(duì)吧。但是,經(jīng)過(guò)我們聰明的工程師們一番努力,均一化開(kāi)關(guān)打開(kāi),信號(hào)就變成了這樣:

神奇么?我覺(jué)得挺神奇的,我認(rèn)識(shí)的電子工程師們第一次看到這個(gè),沒(méi)人覺(jué)得不神奇。

下面一個(gè)重要的問(wèn)題,既然有了三大法寶,他們只能用在串口上嗎?

答案很顯然,不是,串口可以用的,我們并口一樣可以用。那為什么并口不用呢?

差分信號(hào)這條不用說(shuō)了,并口的電線本來(lái)已經(jīng)夠多了,數(shù)目還要再翻一倍?系統(tǒng)工程師會(huì)殺人的。

CDR 意義也不大,反正你并口速度也不高,一堆數(shù)據(jù)線中順便傳下時(shí)鐘,比做接收端做CDR再采樣每一位數(shù)據(jù)省事多了。

信道均一化屬于屠龍之技,不用差分信號(hào)的話也就傳幾百M(fèi),本來(lái)就沒(méi)啥衰減,用這個(gè)干啥?還是考慮下各種噪聲串?dāng)_的問(wèn)題吧。

于是答案就呼之欲出了。串口為啥比并口快?是因?yàn)榇诘奶匦院蛻?yīng)用場(chǎng)景,決定了它更加適合采用一些可以提高單根信道速率的設(shè)計(jì)方法,這些方法用在并口上并不合適。

從 現(xiàn)有的應(yīng)用看來(lái),需要持續(xù)穩(wěn)定高帶寬的應(yīng)用,往往使用高速串行接口,一根帶寬不夠再加一根,各種視頻網(wǎng)絡(luò)應(yīng)用,基本如此。而一些歷史遺留速度不高的應(yīng)用, 還有一些需要突發(fā)性高帶寬的應(yīng)用,并口仍然存活,比如很特殊的DDR。雖然XDR/GDDR/HMC/HCM這些新標(biāo)準(zhǔn)都在試圖引入SerDes, 但DRAM行業(yè)的特殊性還是讓并口繼續(xù)存活著。

標(biāo)簽: 串口 并口

相關(guān)閱讀