PCIe總線的基礎(chǔ)知識(shí)
4.1.1端到端的數(shù)據(jù)傳遞
PCIe鏈路使用“端到端的數(shù)據(jù)傳送方式”,發(fā)送端和接收端中都含有TX(發(fā)送邏輯)和RX(接收邏輯),其結(jié)構(gòu)如圖4?1所示。
本文引用地址:http://www.ex-cimer.com/article/201612/330484.htm由上圖所示,在PCIe總線的物理鏈路的一個(gè)數(shù)據(jù)通路(Lane)中,由兩組差分信號(hào),共4根信號(hào)線組成。其中發(fā)送端的TX部件與接收端的RX部件使用一組差分信號(hào)連接,該鏈路也被稱為發(fā)送端的發(fā)送鏈路,也是接收端的接收鏈路;而發(fā)送端的RX部件與接收端的TX部件使用另一組差分信號(hào)連接,該鏈路也被稱為發(fā)送端的接收鏈路,也是接收端的發(fā)送鏈路。一個(gè)PCIe鏈路可以由多個(gè)Lane組成。
高速差分信號(hào)電氣規(guī)范要求其發(fā)送端串接一個(gè)電容,以進(jìn)行AC耦合。該電容也被稱為AC耦合電容。PCIe鏈路使用差分信號(hào)進(jìn)行數(shù)據(jù)傳送,一個(gè)差分信號(hào)由D+和D-兩根信號(hào)組成,信號(hào)接收端通過(guò)比較這兩個(gè)信號(hào)的差值,判斷發(fā)送端發(fā)送的是邏輯“1”還是邏輯“0”。
與單端信號(hào)相比,差分信號(hào)抗干擾的能力更強(qiáng),因?yàn)椴罘中盘?hào)在布線時(shí)要求“等長(zhǎng)”、“等寬”、“貼近”,而且在同層。因此外部干擾噪聲將被“同值”而且“同時(shí)”加載到D+和D-兩根信號(hào)上,其差值在理想情況下為0,對(duì)信號(hào)的邏輯值產(chǎn)生的影響較小。因此差分信號(hào)可以使用更高的總線頻率。
此外使用差分信號(hào)能有效抑制電磁干擾EMI(Electro Magnetic Interference)。由于差分信號(hào)D+與D-距離很近而且信號(hào)幅值相等、極性相反。這兩根線與地線間耦合電磁場(chǎng)的幅值相等,將相互抵消,因此差分信號(hào)對(duì)外界的電磁干擾較小。當(dāng)然差分信號(hào)的缺點(diǎn)也是顯而易見(jiàn)的,一是差分信號(hào)使用兩根信號(hào)傳送一位數(shù)據(jù);二是差分信號(hào)的布線相對(duì)嚴(yán)格一些。
PCIe鏈路可以由多條Lane組成,目前PCIe鏈路可以支持1、2、4、8、12、16和32個(gè)Lane,即×1、×2、×4、×8、×12、×16和×32寬度的PCIe鏈路。每一個(gè)Lane上使用的總線頻率與PCIe總線使用的版本相關(guān)。
第1個(gè)PCIe總線規(guī)范為V1.0,之后依次為V1.0a,V1.1,V2.0和V2.1。目前PCIe總線的最新規(guī)范為V2.1,而V3.0正在開(kāi)發(fā)過(guò)程中,預(yù)計(jì)在2010年發(fā)布。不同的PCIe總線規(guī)范所定義的總線頻率和鏈路編碼方式并不相同,如表4?1所示。
表4?1PCIe總線規(guī)范與總線頻率和編碼的關(guān)系
PCIe總線規(guī)范 | 總線頻率[1] | 單Lane的峰值帶寬 | 編碼方式 |
1.x | 1.25GHz | 2.5GT/s | 8/10b編碼 |
2.x | 2.5GHz | 5GT/s | 8/10b編碼 |
3.0 | 4GHz | 8GT/s | 128/130b編碼 |
如上表所示,不同的PCIe總線規(guī)范使用的總線頻率并不相同,其使用的數(shù)據(jù)編碼方式也不相同。PCIe總線V1.x和V2.0規(guī)范在物理層中使用8/10b編碼,即在PCIe鏈路上的10 bit中含有8 bit的有效數(shù)據(jù);而V3.0規(guī)范使用128/130b編碼方式,即在PCIe鏈路上的130 bit中含有128 bit的有效數(shù)據(jù)。
由上表所示,V3.0規(guī)范使用的總線頻率雖然只有4GHz,但是其有效帶寬是V2.x的兩倍。下文將以V2.x規(guī)范為例,說(shuō)明不同寬度PCIe鏈路所能提供的峰值帶寬,如表4?2所示。
PCIe總線的數(shù)據(jù)位寬 | ×1 | ×2 | ×4 | ×8 | ×12 | ×16 | ×32 |
峰值帶寬(GT/s) | 5 | 10 | 20 | 40 | 60 | 80 | 160 |
由上表所示,×32的PCIe鏈路可以提供160GT/s的鏈路帶寬,遠(yuǎn)高于PCI/PCI-X總線所能提供的峰值帶寬。而即將推出的PCIe V3.0規(guī)范使用4GHz的總線頻率,將進(jìn)一步提高PCIe鏈路的峰值帶寬。
在PCIe總線中,使用GT(Gigatransfer)計(jì)算PCIe鏈路的峰值帶寬。GT是在PCIe鏈路上傳遞的峰值帶寬,其計(jì)算公式為總線頻率×數(shù)據(jù)位寬×2。
在PCIe總線中,影響有效帶寬的因素有很多,因而其有效帶寬較難計(jì)算,這部分內(nèi)容詳見(jiàn)第8.4.1節(jié)。盡管如此,PCIe總線提供的有效帶寬還是遠(yuǎn)高于PCI總線。PCIe總線也有其弱點(diǎn),其中最突出的問(wèn)題是傳送延時(shí)。
PCIe鏈路使用串行方式進(jìn)行數(shù)據(jù)傳送,然而在芯片內(nèi)部,數(shù)據(jù)總線仍然是并行的,因此PCIe鏈路接口需要進(jìn)行串并轉(zhuǎn)換,這種串并轉(zhuǎn)換將產(chǎn)生較大的延時(shí)。除此之外PCIe總線的數(shù)據(jù)報(bào)文需要經(jīng)過(guò)事務(wù)層、數(shù)據(jù)鏈路層和物理層,這些數(shù)據(jù)報(bào)文在穿越這些層次時(shí),也將帶來(lái)延時(shí)。本書(shū)將在第8.4節(jié)詳細(xì)討論P(yáng)CIe總線的延時(shí)與帶寬之間的聯(lián)系。
在基于PCIe總線的設(shè)備中,×1的PCIe鏈路最為常見(jiàn),而×12的PCIe鏈路極少出現(xiàn),×4和×8的PCIe設(shè)備也不多見(jiàn)。Intel通常在ICH中集成了多個(gè)×1的PCIe鏈路用來(lái)連接低速外設(shè),而在MCH中集成了一個(gè)×16的PCIe鏈路用于連接顯卡控制器。而PowerPC處理器通常能夠支持×8、×4、×2和×1的PCIe鏈路。
PCIe總線物理鏈路間的數(shù)據(jù)傳送使用基于時(shí)鐘的同步傳送機(jī)制,但是在物理鏈路上并沒(méi)有時(shí)鐘線,PCIe總線的接收端含有時(shí)鐘恢復(fù)模塊CDR(Clock Data Recovery),CDR將從接收?qǐng)?bào)文中提取接收時(shí)鐘,從而進(jìn)行同步數(shù)據(jù)傳遞。
值得注意的是,在一個(gè)PCIe設(shè)備中除了需要從報(bào)文中提取時(shí)鐘外,還使用了REFCLK+和REFCLK-信號(hào)對(duì)作為本地參考時(shí)鐘,這個(gè)信號(hào)對(duì)的描述見(jiàn)下文。
4.1.2PCIe總線使用的信號(hào)
PCIe設(shè)備使用兩種電源信號(hào)供電,分別是Vcc與Vaux,其額定電壓為3.3V。其中Vcc為主電源,PCIe設(shè)備使用的主要邏輯模塊均使用Vcc供電,而一些與電源管理相關(guān)的邏輯使用Vaux供電。在PCIe設(shè)備中,一些特殊的寄存器通常使用Vaux供電,如Sticky Register,此時(shí)即使PCIe設(shè)備的Vcc被移除,這些與電源管理相關(guān)的邏輯狀態(tài)和這些特殊寄存器的內(nèi)容也不會(huì)發(fā)生改變。
在PCIe總線中,使用Vaux的主要原因是為了降低功耗和縮短系統(tǒng)恢復(fù)時(shí)間。因?yàn)閂aux在多數(shù)情況下并不會(huì)被移除,因此當(dāng)PCIe設(shè)備的Vcc恢復(fù)后,該設(shè)備不用重新恢復(fù)使用Vaux供電的邏輯,從而設(shè)備可以很快地恢復(fù)到正常工作狀狀態(tài)。
PCIe鏈路的最大寬度為×32,但是在實(shí)際應(yīng)用中,×32的鏈路寬度極少使用。在一個(gè)處理器系統(tǒng)中,一般提供×16的PCIe插槽,并使用PETp0~15、PETn0~15和PERp0~15、PERn0~15共64根信號(hào)線組成32對(duì)差分信號(hào),其中16對(duì)PETxx信號(hào)用于發(fā)送鏈路,另外16對(duì)PERxx信號(hào)用于接收鏈路。除此之外PCIe總線還使用了下列輔助信號(hào)。
評(píng)論