PCIe總線概述
隨著現(xiàn)代處理器技術(shù)的發(fā)展,在互連領(lǐng)域中,使用高速差分總線替代并行總線是大勢(shì)所趨。與單端并行信號(hào)相比,高速差分信號(hào)可以使用更高的時(shí)鐘頻率,從而使用更少的信號(hào)線,完成之前需要許多單端并行數(shù)據(jù)信號(hào)才能達(dá)到的總線帶寬。
PCI Express是新一代的總線接口。早在2001年的春季,英特爾公司就提出了要用新一代的技術(shù)取代PCI總線和多種芯片的內(nèi)部連接,并稱(chēng)之為第三代I/O總線技術(shù)。隨后在2001年底,包括Intel、AMD、DELL、IBM在內(nèi)的20多家業(yè)界主導(dǎo)公司開(kāi)始起草新技術(shù)的規(guī)范,并在2002年完成,對(duì)其正式命名為PCI Express。它采用了目前業(yè)內(nèi)流行的點(diǎn)對(duì)點(diǎn)串行連接,比起PCI以及更早期的計(jì)算機(jī)總線的共享并行架構(gòu),每個(gè)設(shè)備都有自己的專(zhuān)用連接,不需要向整個(gè)總線請(qǐng)求帶寬,而且可以把數(shù)據(jù)傳輸率提高到一個(gè)很高的頻率,達(dá)到PCI所不能提供的高帶寬。
PCI總線使用并行總線結(jié)構(gòu),在同一條總線上的所有外部設(shè)備共享總線帶寬,而PCIe總線使用了高速差分總線,并采用端到端的連接方式,因此在每一條PCIe鏈路中只能連接兩個(gè)設(shè)備。這使得PCIe與PCI總線采用的拓?fù)浣Y(jié)構(gòu)有所不同。PCIe總線除了在連接方式上與PCI總線不同之外,還使用了一些在網(wǎng)絡(luò)通信中使用的技術(shù),如支持多種數(shù)據(jù)路由方式,基于多通路的數(shù)據(jù)傳遞方式,和基于報(bào)文的數(shù)據(jù)傳送方式,并充分考慮了在數(shù)據(jù)傳送中出現(xiàn)服務(wù)質(zhì)量QoS (Quality of Service)問(wèn)題。
PCIe總線的基礎(chǔ)知識(shí)
與PCI總線不同,PCIe總線使用端到端的連接方式,在一條PCIe鏈路的兩端只能各連接一個(gè)設(shè)備,這兩個(gè)設(shè)備互為是數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端。PCIe總線除了總線鏈路外,還具有多個(gè)層次,發(fā)送端發(fā)送數(shù)據(jù)時(shí)將通過(guò)這些層次,而接收端接收數(shù)據(jù)時(shí)也使用這些層次。PCIe總線使用的層次結(jié)構(gòu)與網(wǎng)絡(luò)協(xié)議棧較為類(lèi)似。
1.1 端到端的數(shù)據(jù)傳遞
PCIe鏈路使用“端到端的數(shù)據(jù)傳送方式”,發(fā)送端和接收端中都含有TX(發(fā)送邏輯)和RX(接收邏輯),其結(jié)構(gòu)如圖41所示。
由上圖所示,在PCIe總線的物理鏈路的一個(gè)數(shù)據(jù)通路(Lane)中,由兩組差分信號(hào),共4根信號(hào)線組成。其中發(fā)送端的TX部件與接收端的RX部件使用一組差分信號(hào)連接,該鏈路也被稱(chēng)為發(fā)送端的發(fā)送鏈路,也是接收端的接收鏈路;而發(fā)送端的RX部件與接收端的TX部件使用另一組差分信號(hào)連接,該鏈路也被稱(chēng)為發(fā)送端的接收鏈路,也是接收端的發(fā)送鏈路。一個(gè)PCIe鏈路可以由多個(gè)Lane組成。
高速差分信號(hào)電氣規(guī)范要求其發(fā)送端串接一個(gè)電容,以進(jìn)行AC耦合。該電容也被稱(chēng)為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ī)范所定義的總線頻率和鏈路編碼方式并不相同,如表41所示。
表41 PCIe總線規(guī)范與總線頻率和編碼的關(guān)系
如上表所示,不同的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鏈路所能提供的峰值帶寬,如表42所示。
表42 PCIe總線的峰值帶寬
由上表所示,×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ì)算。盡管如此,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í)。
在基于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í)鐘。
評(píng)論