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


評論