PCIE接口
- PIC接口
- 介紹
- PIC總線結構
- PCI總線特點
- PCI總線的主要性能
- PIC的歷程
- PCIE接口
- 介紹
- PCIe接口總線位寬
- PCIE速率
- GT/s和Gbps區別
- PCIE帶寬計算
- PCIE架構
- PCIe體系結構
- 端到端的差分數據傳遞
- PCIe總線的層次結構
- 事務層
- 數據鏈路層
- 物理層
- PCIe層級結構及功能框圖
- PCIe鏈路初始化
- PCIe鏈路的擴展
- PCIe鏈路均衡
- PCIe的接口形態
- PCIe Add-in-Card(AIC)
- PCIe的信號連接
- +3.3V和AUX3.3V電源分開設計原因
- M.2接口
- OAM 卡
PIC接口
介紹
PCI即Peripheral Component Interconnect,中文意思是“外圍器件互聯”,是由PCISIG (PCI Special Interest Group)推出的一種局部并行總線標準。PCI總線是由ISA(Industy Standard Architecture)總線發展而來的,ISA并行總線有8位和16位兩種模式,時鐘頻率為8MHz,工作頻率為33MHz/66MHz。是一種同步的獨立于處理器的32位或64位局部總線。從結構上看,PCI是在CPU的供應商和原來的系統總線之間插入的一級總線,具體由一個橋接電路實現對這一層的管理,并實現上下之間的接口以協調數據的傳送。從1992年創立規范到如今,PCI總線已成為了計算機的一種標準總線。已成為局部總線的新標準,廣泛用于當前高檔微機、工作站,以及便攜式微機。主要用于連接顯示卡、網卡、聲卡。PCI總線是32位同步復用總線。其地址和數據線引腳是AD31~AD0。PCI的工作頻率為33MHz。
PIC總線結構
PCI總線是一種樹型結構,并且獨立于CPU總線,可以和CPU總線并行操作。PCI總線上可以掛接PCI設備和PCI橋片,PCI總線上只允許有一個PCI主設備,其他的均為PCI 從設備,而且讀寫操作只能在主從設備之間進行,從設備之間的數據交換需要通過主設備中轉。 [1] PCI總線結構如下圖所示。
在處理器系統中,含有PCI總線和PCI總線樹這兩個概念。這兩個概念并不相同,在一顆PCI總線樹中可能具有多條PCI總線,而具有血緣關系的PCI總線組成一顆PCI總線樹。PCI總線由HOST主橋或者PCI橋管理,用來連接各類設備,如聲卡、網卡和IDE接口卡等。在一個處理器系統中,可以通過PCI橋擴展PCI總線,并形成具有血緣關系的多級PCI總線,從而形成PCI總線樹型結構。在處理器系統中有幾個HOST主橋,就有幾顆這樣的PCI總線樹,而每一顆PCI總線樹都與一個PCI總線域對應。
與HOST主橋直接連接的PCI總線通常被命名為PCI總線0。考慮到在一個處理器系統中可能有多個主橋。
PCI總線取代了早先的ISA總線。當然與在PCI總線后面出現專門用于顯卡的AGP總線,與現在的PCI Express總線相比,功能沒有那么強大,但是PCI能從1992用到現在,說明他有許多優點,比如即插即用(Plug and Play)、中斷共享等。在這里我們對PCI總線做一個深入的介紹。
從數據寬度上看,PCI總線有32bit、64bit之分,從總線速度上分,有33MHz、66MHz兩種。目前流行的是32bit @ 33MHz,而64bit系統正在普及中。改良的PCI系統,PCI-X,最高可以達到64bit @ 133MHz,這樣就可以得到超過1GB/s的數據傳輸速率。如果沒有特殊說明,以下的討論以32bit @ 33MHz為例。
不同于ISA總線,PCI總線的地址總線與數據總線是分時復用的。這樣做的好處是,一方面可以節省接插件的管腳數,另一方面便于實現突發數據傳輸。在做數據傳輸時,由一個PCI設備做發起者(主控,Initiator或Master),而另一個PCI設備做目標(從設備,Target或Slave)。總線上的所有時序的產生與控制,都由Master來發起。PCI總線在同一時刻只能供一對設備完成傳輸,這就要求有一個仲裁機構(Arbiter),來決定在誰有權力拿到總線的主控權。
當PCI總線進行操作時,發起者(Master)先置REQ#,當得到仲裁器(Arbiter)的許可時(GNT#),會將FRAME#置低,并在AD總線上放置Slave地址,同時C/BE#放置命令信號,說明接下來的傳輸類型。所有PCI總線上設備都需對此地址譯碼,被選中的設備要置DEVSEL#以聲明自己被選中。然后當IRDY#與TRDY#都置低時,可以傳輸數據。當Master數據傳輸結束前,將FRAME#置高以標明只剩最后一組數據要傳輸,并在傳完數據后放開IRDY#以釋放總線控制權。
這里我們可以看出,PCI總線的傳輸是很高效的,發出一組地址后,理想狀態下可以連續發數據,峰值速率為132MB/s。實際上,目前流行的33M@32bit北橋芯片一般可以做到100MB/s的連續傳輸。
PCI總線特點
- 傳輸速率高最大數據傳輸率為132MB/s,當數據寬度升級到64位,數據傳輸率可達264MB/s。這是其他總線難以比擬的。它大大緩解了數據I/O瓶頸,使高性能CPU的功能得以充分發揮,適應高速設備數據傳輸的需要。
- 多總線共存采用PCI總線可在一個系統中讓多種總線共存,容納不同速度的設備一起工作。通過HOST-PCI橋接組件芯片,使CPU總線和PCI總線橋接;通過PCI-ISA/EISA橋接組件芯片,將PCI總線與ISA/EISA總線橋接,構成一個分層次的多總線系統。高速設備從ISA/EISA總線卸下來,移到PCI總線上,低速設備仍可掛在ISA/EISA總線上,繼承原有資源,擴大了系統的兼容性。
- 獨立于CPU PCI總線不依附于某一具體處理器,即PCI總線支持多種處理器及將來發展的新處理器,在更改處理器品種時,更換相應的橋接組件即可。
- 自動識別與配置外設 用戶使用方便。
- 并行操作能力。
PCI總線的主要性能
- 總線時鐘頻率33.3MHz/66.6MHz。
- 總線寬度32位/64位。
- 最大數據傳輸率132MB/s(264MB/s)。
- 支持64位尋址。
- 適應5V和3.3V電源環境。
PIC的歷程
話說上世紀80年代處理器的速度是越來越快,早期的ISA并行總線有8位和16位兩種模式,時鐘頻率為8MHz,總線帶寬可以達到8MB/s和16MB/s;到88年推出了EISA在兼容ISA的基礎上將位寬增加到32位,帶寬因此也能達到32MB/s,當時這速率連接386/486之類的處理器已足夠;但隨著處理器速度越來越快,EISA總線的帶寬已經滿足不了CPU的需求,CPU外網總線帶寬已經成為制約計算機處理能力繼續提高的瓶頸。于是在1991年,Intel、IBM、HP、Compaq、DEC等100多家計算機公司成立了PCISIG,聯合推出PCI(Peripheral Component Interconnect),92年PCI1.0便Release。
隨著PCI總線的發展,PCI總線又發展到PCI-X(Peripheral Component Interconnect eXtended)。與PCI總線相比,PCI-X總線的位寬未改變,而是將時鐘頻率進行了提高。PCI-X 1.0的時鐘頻率有66MHz/100MHz/133MHz,總線帶寬分別為:264MB/s,400MB/s和532MB/s(32位),528MB/s,800MB/s和1064MB/s;PCI-X2.0的時鐘頻率有266MHZ/533MHz/1066MHz,總線帶寬分別為1064MB/s、2132MB/s和4264MB/s(32位),3128MB/s,4264MB/s和8512MB/s(64位)。PCI-X與PCI在結構上完全兼容。不過PCI-X出現不就便出現了PCIe,因此在工業界,PCI-X應用遠沒有PCI和PCIe廣泛。
90年代處理器按照摩爾定律發展,PCI碰到了和ISA一樣的問題–趕不上處理器發展速度。想要提高速度,還是并行總線的PCI,要么提升頻率要么提升位寬;如果提升頻率的話并行信號間的串擾讓時序難以收斂,提高位寬的話,信號線數量又大大增加。于是高速的串行總線開始替代并行總線,差分線替代并行線,在2003年的時候PCIe誕生了。
PCIE接口
介紹
PCI Express是新一代的總線接口。早在2001年的春季,英特爾公司就提出了要用新一代的技術取代PCI總線和多種芯片的內部連接,并稱之為第三代I/O總線技術。隨后在2001年底,包括Intel、AMD、DELL、IBM在內的20多家業界主導公司開始起草新技術的規范,并在2002年完成,對其正式命名為PCI Express,它原來的名稱為“3GIO”。
從概念上來說,PCIe總線架構實際上是舊的PCI總線的高速串行替代產品,其最大的差別在于總線的拓撲結構:PCI總線使用的是共享并行總線架構,所有的PCI主機和所有的設備共享一組通用的地址、數據和控制線,由于其共享式總線拓撲結構,因此采用的是仲裁方式訪問,單個方向上一次只允許一個主設備存在。PCIe采用了目前業內流行的點對點串行連接,以及交換式架構。單獨的串行鏈路將每個設備連接到host(root complex),每個設備都有自己的專用連接,不需要向整個總線請求帶寬,而且可以把數據傳輸率提高到一個很高的頻率。
在數據傳輸方面,舊的PCI時鐘方案采用的是總線上最慢的設備頻率作為基準數據傳輸頻率(不管有多少設備,也不管其他設備的情況如何),因此整體傳輸效率會被較慢的設備拉低。鑒于此,在傳統的PCI-AGP系統中,AGP總線需要單獨的控制器才能訪問和控制,并和通用的PCI鏈路徹底隔離。這樣顯然增加了系統的復雜程度。
相比之下,PCIe改用了全新的任意兩個端點的全雙工通信,同時對多個端點的并發訪問沒有限制,系統只需要保留一個或者數個多通路的PCIe控制器,就可以實現對不同帶寬需求的設備進行控制。比如顯卡需要PCIe x16,SSD需要PCIe x4,聲卡需要PCIe x1,這些設備都可以掛接在一個PCIe控制器上,互相之間也不會受到影響。
在總線協議方面,PCIe的通信數據使用了特殊的數據包封裝,打包和解包數據以及狀態消息流的工作由PCIe的端口事物層處理,不需要CPU的干涉。此外,PCIe總線在鏈接配對方面存在極高的靈活性。兩個設備之間的PCIe鏈路可以在x1和x32之間自由變動,此時吞吐量將隨著鏈路變動而變動。
在實際工作中,鏈路之間的通道數量可以在設備初始化期間自動協商連接,可以采用最低鏈路的設備規格,也可以采用其他規格。舉例來說,可以將只支持PCIe x1的設備插入PCIe x4或者x16的插槽中,初始化時將自動設置為最高可相互支持的物理鏈接通道數。反之,也可以自行配置較少的通道數,這樣能夠在設備出現壞道或者不可靠通道時提供容錯性。
信號方面,PCIe規定了每一個通道中包含兩組差分信號對,其中一對差分信號用于接收數據,另外一對差分信號用于發送數據。因此每個PCIe通道都需要4條線纜或者信號跡線。一般來說,人們對這種同時可以收發的信息通道稱作“全雙工”信息傳輸通道。每次傳輸、鏈路端點之間的兩個方向上都會傳遞8位字節格式的數據包。采用串行信息的優勢在于,每個通道的每個方向只有一個差分信號,并且嵌入了時鐘信息,這使得整個系統的抗干擾能力大大增強,并且頻率極限被提升至千兆赫茲。
PCIe的初始標準定義了七種鏈路寬度,對應七種不同的物理插槽規格。這七種鏈路規格的通道數量分別為1組、2組、4組、8組、12組、16組和32組,對應的標識分別采用x1、x2、x4、x8、x12、x16和x32,不同規格的鏈路也和相應長度的物理插槽規格相匹配。一般來說,x16插槽是最常見的插槽規格,它用于接駁顯卡或者萬兆網絡、超高速SSD等高性能高帶寬設備。x32的插槽不太多見,往往用于服務器或者特殊場合。
值得一提的是,由于PCIe規范的靈活性,人們往往設計智能切換方案來進行插槽鏈路配置,而不再需要和物理鏈路規格綁定。舉例來說,一個x16的PCIe鏈路,可以同時面向一個x16規格的物理插槽和一個x4規格的物理插槽。
當x4物理接口沒有插入任何設備時,在優先級配置規范的指引下,PCIe鏈路將全部分配給x16的物理插槽;當x4規格接口插入設備后,PCIe鏈路可以根據配置需要,分配x12或者x8的鏈路給原本為x16的物理插槽,新的x4接口可以在不啟用和獲得x4帶寬之間自由選擇。
除了上述傳輸方面的設計外,PCIe在電源方面也作出了加強。根據PCIe規范,PCIe設計了數個專用的+12V和+3.3V引腳,最大可供電能力為75W,這個供電能力已經完全可以滿足大部分普通設備的需求了。不過在實際使用中,受制于主板設計、PCB設計以及系統供電等原因,PCIe插槽的供電能力有可能達不到75W,各家廠商也會在相應的產品中予以說明。
顯卡所使用的6pin、8pin供電標準也是PCIe規范所定義的。
PCIe接口總線位寬
PCI Express的接口根據總線位寬不同而有所差異,包括X1、X4、X8以及X16(X2模式將用于內部接口而非插槽模式)。較短的PCI Express卡可以插入較長的PCI Express插槽中使用(自動識別并兼容)。PCI Express接口能夠支持熱拔插,這也是個不小的飛躍。PCI Express卡支持的三種電壓分別為+3.3V、3.3Vaux以及+12V。用于取代AGP接口的PCI Express接口位寬為X16,將能夠提供5GB/s的帶寬,即便有編碼上的損耗但仍能夠提供4GB/s左右的實際帶寬,遠遠超過AGP 8X的2.1GB/s的帶寬。
PCI Express規格從1條通道連接到32條通道連接,有非常強的伸縮性,以滿足不同系統設備對數據傳輸帶寬不同的需求。例如,PCI Express X1規格支持雙向數據傳輸,每向數據傳輸帶寬250MB/s,PCI Express X1已經可以滿足主流聲效芯片、網卡芯片和存儲設備對數據傳輸帶寬的需求,但是遠遠無法滿足圖形芯片對數據傳輸帶寬的需求。 因此,必須采用PCI Express X16,即16條點對點數據傳輸通道連接來取代傳統的AGP總線。PCI Express X16也支持雙向數據傳輸,每向數據傳輸帶寬高達4GB/s,雙向數據傳輸帶寬有8GB/s之多,相比之下,目前廣泛采用的AGP 8X數據傳輸只提供2.1GB/s的數據傳輸帶寬。
PCIE速率
2021年,PCIe 6.0 規范發布。每通道數據傳輸速率從PCIe 5.0的32 GT/s翻番至64 GT/s,PCIe 6.0*16通道的帶寬高達256 GB/s,除了帶寬和效率的提升外,PCIe 6.0還具有更低的延遲,是PCIe技術的又一大飛躍。
GT/s和Gbps區別
在數據傳輸中,GT/s和Gbps的數值是否相等,取決于每個傳輸(Transfer)包含多少比特(bit)。
- GT/s —— Giga transation per second(千兆傳輸/秒),即每一秒內傳輸的次數。重點在于描述物理層通信協議的速率屬性,可以不和鏈路寬度等關聯。
- Gbps —— Giga Bits Per Second(千兆位/秒)。GT/s 與Gbps 之間不存在成比例的換算關系。
1、雙倍數據速率(DDR)場景:
若總線時鐘頻率為F GHz,在雙倍速率(DDR)下,每秒傳輸次數為2F GT/s。若每次傳輸對應 1 個比特(例如串行通信,每個傳輸周期發送 1 bit),則:數據傳輸速率=2F Gbps。此時2F GT/s 在數值上等于2F Gbps,即GT/s = Gbps。
2、復雜情況的影響:
并行傳輸:若每次傳輸通過多根數據線發送多個比特(如 64 位總線),則Gbps=GT/s×總線寬度。
編碼開銷:若使用編碼(如 8b/10b),有效數據速率會降低(例如10GT/s的實際有效速率為8Gbps)。
3、總結:
在理想情況下(單比特傳輸、無編碼開銷),當數據傳輸速率為總線時鐘的兩倍時,數值上1GT/s = 1Gbps。若存在并行傳輸或編碼,則兩者不等。
PCIE帶寬計算
PCIe 吞吐量(可用帶寬)計算方法:
吞吐量 = 傳輸速率 * 編碼方案
例如:PCI-e2.0協議支持5.0GT/s,即每一條Lane 上支持每秒鐘內傳輸5G個Bit;但這并不意味著 PCIe 2.0協議的每一條Lane支持5Gbps的速率。因為PCIe 2.0的物理層協議中使用的是8b/10b的編碼方案。 即每傳輸8個Bit,需要發送10個Bit;這多出的2個Bit并不是對上層有意義的信息。那么, PCIe 2.0協議的每一條Lane支持 5x8/10 = 4Gbps = 500MB/s的速率。以一個PCIe 2.0 x8的通道為例,x8的可用帶寬為 4x8 = 32Gbps = 4GB/s。
同理,PCI-e3.0協議支持8.0GT/s, 即每一條Lane 上支持每秒鐘內傳輸 8G個Bit。而PCIe 3.0的物理層協議中使用的是128b/130b的編碼方案。 即每傳輸128個Bit,需要發送130個Bit。那么,PCIe 3.0協議的每一條Lane支持 8x128/130 = 7.877Gbps = 984.6MB/s 的速率。一個PCIe 3.0 x16的通道,x16 的可用帶寬為7.877x16 = 126.031Gbps = 15.754GB/s。
PCIE架構
PCIe采用的是樹型拓撲結構, 一般由根復合體(Root Complex),中繼器(Repeater),終端設備(Endpoint)等類型的PCIe設備組成。接下來將講述PCIe如何通過下圖突出顯示的典型鏈路進行初始化和傳輸。
Root Complex: 根復合體是CPU和PCIe總線連接的接口。主要負責存儲器域到PCIe總線域的地址轉換,隨著虛擬化技術的引入,根復合體的功能也越來越復雜。根復合體把來自CPU的request轉化成PCIe的4類request(configuration、memory、I/O、message)并發送給下面的設備。
Repeater:中繼器是一種信號調節裝置,可分為兩類:Retimers和Redriver,兩者都是常用的PCIe組件,Retimer通過內部時鐘重構信號,再恢復后發送出去;Redriver則是通過信號均衡化和預加強等技術,重新加強再發送出去。在圖示中,我們將使用PCIe 4.0兼容的Retimers舉例。
PCIe Endponit: PCIe終端設備,是PCIe樹型結構的末端節點。比如SSD,網卡、GFX卡等等。
PCIe體系結構
PCIe總線作為處理器系統的局部總線,其作用與PCI總線類似,主要目的是為了連接處理器系統中的外部設備,當然PCIe總線也可以連接其他處理器系統。在不同的處理器系統中,PCIe體系結構的實現方法略有不同。但是在大多數處理器系統中,都使用了RC、Switch和PCIe-to-PCI橋這些基本模塊連接PCIe和PCI設備。在PCIe總線中,基于PCIe總線的設備,也被稱為EP。
在下圖的結構中,處理器系統首先使用一個虛擬的PCI橋分離處理器系統的存儲器域與PCI總線域。FSB總線下的所有外部設備都屬于PCI總線域。與這個虛擬PCI橋直接相連的總線為PCI總線0。這種架構與Intel的x86處理器系統較為類似。
端到端的差分數據傳遞
“端到端的數據傳送方式”是PCIe和PCI最大的差別,PCI是物理層為并行總線傳輸。PCIe鏈路使用“端到端的數據傳送方式”,發送端和接收端中都含有TX(發送邏輯)和RX(接收邏輯)。
在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總線的層次結構
PCIe總線采用了串行連接方式,并使用數據包(Packet)進行數據傳輸,采用這種結構有效去除了在PCI總線中存在的一些邊帶信號,如INTx和PME#等信號。在PCIe總線中,數據報文在接收和發送過程中,需要通過多個層次,包括事務層、數據鏈路層和物理層。PCIe總線的層次結構如圖所示。具體每一層的硬件邏輯后續章節會詳細介紹。
PCIe總線的層次組成結構與網絡中的層次結構有類似之處,但是PCIe總線的各個層次都是使用硬件邏輯實現的。在PCIe體系結構中,數據報文首先在設備的核心層(Device Core)中產生,然后再經過該設備的事務層(Transaction Layer)、數據鏈路層(Data Link Layer)和物理層(Physical Layer),最終發送出去。而接收端的數據也需要通過物理層、數據鏈路和事務層,并最終到達Device Core。
數據包在各個層的處理如下所示:
事務層
事務層定義了PCIe總線使用總線事務,其中多數總線事務與PCI總線兼容。這些總線事務可以通過Switch等設備傳送到其他PCIe設備或者RC。RC也可以使用這些總線事務訪問PCIe設備。
事務層接收來自PCIe設備核心層的數據,并將其封裝為TLP(Transaction Layer Packet)后,發向數據鏈路層。此外事務層還可以從數據鏈路層中接收數據報文,然后轉發至PCIe設備的核心層。
數據鏈路層
數據鏈路層保證來自發送端事務層的報文可以可靠、完整地發送到接收端的數據鏈路層。來自事務層的報文在通過數據鏈路層時,將被添加Sequence Number前綴和CRC后綴。數據鏈路層使用ACK/NAK協議保證報文的可靠傳遞。
PCIe總線的數據鏈路層還定義了多種DLLP(Data Link Layer Packet),DLLP產生于數據鏈路層,終止于數據鏈路層。值得注意的是,TLP與DLLP并不相同,DLLP并不是由TLP加上Sequence Number前綴和CRC后綴組成的。
物理層
物理層是PCIe總線的最底層,將PCIe設備連接在一起。PCIe總線的物理電氣特性決定了PCIe鏈路只能使用端到端的連接方式。PCIe總線的物理層為PCIe設備間的數據通信提供傳送介質,為數據傳送提供可靠的物理環境。
物理層是PCIe體系結構最重要,也是最難以實現的組成部分。PCIe總線的物理層定義了LTSSM(Link Training and Status State Machine)狀態機,PCIe鏈路使用該狀態機管理鏈路狀態,并進行鏈路訓練、鏈路恢復和電源管理。
PCIe層級結構及功能框圖
下圖為PCIe設備核心層、事務層、數據鏈路層、物理層的結構及功能框圖。
PCIe鏈路初始化
在了解PCIe鏈路是如何建立以及數據如何通過PCIe協議傳輸之前,我們先了解一下常見PCIe控制信號的功能。
PERST#信號為全局復位信號,由處理器系統提供。處理器系統需要為PCIe插槽和PCIe設備提供該復位信號。PCIe設備使用該信號復位內部邏輯,當該信號有效時,PCIe設備將進行復位操作。
WAKE#和CLKREQ#信號都用于在本文討論范圍之外的低功率狀態之間轉換。
REFCLK#是PCIe設備開始數據傳輸的先決條件,PCIe設備通過使用REFCLK#提供的100MHz外部參考時鐘(Refclk),用于協調在兩個PCIe設備間的數據傳輸。
PCIe鏈路在初始狀態時,需要檢測對端設備是否存在,然后才能進行鏈路訓練。所有PCIe設備通電并提供參考時鐘信號后在每個通道上將擁有接收器檢測電路(Receiver Detection circuit),該電路將允許PCIe設備確定是否有要配對的鏈路伙伴。假設PCIe Rx檢測電路檢測到另一個設備,則每個通道將開始以2.5 GT/s的速度進行傳輸串行數據。
2.5 GT/s是第一代PCIe 1.0采用的數據速率,另外由于PCIe 1.0與任何PCIe設備兼容,因此每個PCIe鏈路都以相同的鏈路初始化過程開始。以下圖為例,Root Complex、Retimer和Endpoint都以PCIe 1.0的速度開始傳輸。
在經過PCIe鏈路初始化后,每個器件將能接收到數據并做出相應的響應。PCIe連接開始鏈路訓練過程并進入配置階段,在該階段中,由于通道長度變化而導致數據中的任何偏差都能得到校準,PCIe鏈路的寬度、鏈路速率、鏈路翻轉和鏈路極性也在此階段確定。
如果存在多條鏈路,則PCIe連接稱為PCIe分叉。在示例中,有一個非分叉連接,即所有通道都分配給編號為0的鏈路。由于Retimer鏈路分為兩部分,其兩側的鏈路分別進行鏈路初始化。在確定鏈路和通道號后,PCIe鏈路可以進入多種狀態。
以進入L0狀態舉例,這是發送和接收數據與數據包的正常操作狀態。到達L0后Root Complex和Enpoint可相互通信,PCIe鏈路也可轉換為多種低功耗狀態或另一種鏈路訓練狀態。在此不做過多闡述。
PCIe鏈路的擴展
PCIe鏈路使用端到端的數據傳送方式。在一條PCIe鏈路中,這兩個端口是完全對等的,分別連接發送與接收設備,而且一個PCIe鏈路的一端只能連接一個發送設備或者接收設備。因此PCIe鏈路必須使用Switch擴展PCIe鏈路后,才能連接多個設備。使用Switch進行鏈路擴展的實例如圖所示。
PCIe鏈路均衡
PCIe設備都支持PCIe Gen2,則鏈路速度也會隨之提高。如果數據速率為PCIe Gen3或以上,PCIe鏈路將需要經歷額外鏈路優化過程(稱為鏈路均衡)。
鏈路均衡以建立設備間穩定的連接為目的。通過調節Tx (傳輸端)和Rx (接收端)的設置,提高信號質量,使PCIe鏈路以最穩定且更快的速率傳輸。由于PCIe在Gen3及以上的每一代均需優化連接,因此鏈路均衡過程可能發生多次。
例如:若所有PCIe設備為Gen5,則有3次鏈路均衡過程(第1次:Gen1-Gen3;第2次:Gen3-Gen4;第3次:Gen4-Gen5)。鏈路均衡通過PCIe 規范中定義的preset值來實現,preset指不同的預過沖(Preshoot)和去加重(De-emphasis)的組合。對于Gen3和Gen4,有11個preset值,即preset0-preset10。對于不同的鏈路情況,系統要求Rx端發送Tx EQ preset設置請求給Tx端,讓其做對應的preset均衡設置;Tx端發送Rx EQ均衡設置,要求Rx端做相應的設置,最終獲得一個最優的均衡組合和Rx端的眼圖。
Phase0:第1階段鏈路均衡涉及上游端口(Upstream port)和下游端口(Downstream port)之間的精確動態協商,下游端口通過向上游設備發送每個通道所需的發送器preset值來開始鏈路均衡,被稱為第0階段鏈接均衡。在接收到下游端口的請求后不久,上游端口增加到第3代(Gen3)鏈路數據速率,并開始使用所需preset將訓練序列發送回下游端口。鏈路速度增加至Gen3(8 GT/s)后,鏈路均衡過程通過來回發送preset值來協商每個端口的preset配置,從而繼續優化鏈路。
Phase1:為了充分優化鏈路,以便能夠交換訓練序列(Training Sequences)并且完成用于精調目的的剩余鏈路均衡階段,盡管有出現鏈路質量差的可能性,但相同的訓練序列會被重復發送,來確保下游端口接收到正確的preset值。
Phase2:在第1階段鏈路的誤碼率實現BER≤10e-4后,進入到Phase 2,隨后進一步優化上游端口的preset值,直至獲得最優設置,鏈路的誤碼率應滿足BER ≤ 1E-12。
Phase3:到第3階段對下游端口執行相同的協商。上游端口通過訓練序列發送均衡請求去調整下游端口的preset值,直至獲得最優設置,鏈路的誤碼率應滿足BER ≤ 1E-12。
當Phase3完成后,鏈路均衡也已完成,此時鏈路以Gen3的速率進入L0狀態,并在該速率進行穩定通信。對于更高的傳輸速率,PCIe設備必須進行多次鏈路均衡過程。
然而在某些主板設計中,尤其是那些具有長通道鏈路的主板,這種信號質量無法實現,可能需要另外的信號調節。在這種情況下,中繼器(如ReDriver,ReTimer)則被用來做信號調節,并在PCIe設備和根復合體(在CPU,存儲設備和PCIe設備之間的重要連接部分)之間提供高質量信號。
PCIe的接口形態
目前已有的接口規范有下面幾種
- PCIe Add-in-Card(AIC)
- PCIe M.2
- OAM等異形插槽
PCIe Add-in-Card(AIC)
PCIe AIC 是最常見的PCIe接口形態,組裝過電腦的可能比較清楚,電腦上的主板上都會有下面的幾排插槽,這就是典型的PCIe AIC的插槽,比較常見的插槽位寬為x16和x1
插在上面的卡就是PCIe AIC。PCIe AIC常見的有顯卡,無線網卡,存儲設備等等。這個AIC上的插頭有個閃亮的名字,叫“金手指”。金手指來源于PCB制作工藝中的沉金工藝,為了導電性良好,這上面可是有真金哦。這個金手指有兩面,兩面都有信號連接。
PCIe的信號連接
- 電源和地,包括必備的12V電源和可選的3.3V電源
- SerDes的差分信號,支持多少條Lane就有多少組差分信號,例如16Lane的PCIe AIC就有16x4=64個信號
- 附屬信號(Auxlilary Signal),必選的包括
參考時鐘(REFCLK-/REFCLK+),給PCIe AIC提供時鐘。復位信號(PERST#),用于復位PCIe AIC。插入檢測信號(PRSNT1# ,PRSNT2#)。這個信號在金手指上會短一點,所以如果這個信號已經連上了說明整個插口已經插進去了。WAKE#:喚醒信號,用于喚醒設備。
詳細的金手指兩面的信號如下:
具體的Spec可以參考PCI Express? Card Electromechanical Specification
+3.3V和AUX3.3V電源分開設計原因
在PCI Express(PCIe)規范中,+3.3V和AUX3.3V電源分開設計有其特定的原因和優勢。以下是這兩個電源分開的主要原因:
1、獨立供電
- +3.3V:主要用于設備的正常工作供電,提供穩定的3.3V電源。
- AUX3.3V:主要用于設備的初始化、低功耗模式和熱插拔支持,提供獨立的3.3V輔助電源。
2、熱插拔支持
- AUX3.3V:在設備熱插拔時,AUX3.3V電源可以提供持續的電力,確保設備在插入或拔出過程中不會因為斷電而損壞。這有助于系統檢測設備的插入和拔出狀態,確保正確的熱插拔操作。
- +3.3V:在設備正常工作時提供電力,但在熱插拔過程中可能無法提供持續的電力。
3、低功耗模式
- AUX3.3V:在設備處于低功耗模式或待機模式時,AUX3.3V電源可以繼續為設備的關鍵部件供電,以維持基本功能。這有助于設備快速響應和恢復到正常工作狀態。
- +3.3V:在設備正常工作時提供電力,但在低功耗模式下可能被關閉以節省能源。
4、信號完整性
- AUX3.3V:通過提供獨立的輔助電源,可以減少主電源線路的干擾,提高系統的穩定性和性能,特別是在高速數據傳輸時。
- +3.3V:主要用于設備的正常工作,確保信號的完整性和可靠性。
5、設備初始化
- AUX3.3V:在設備啟動和初始化階段,AUX3.3V電源可以為設備提供必要的電力,確保設備能夠順利啟動。
- +3.3V:在設備正常工作時提供電力,但在啟動和初始化階段可能無法提供足夠的電力。
總結:
+3.3V和AUX3.3V電源分開設計的主要目的是確保設備在各種工作狀態下的穩定性和可靠性。AUX3.3V電源在設備初始化、低功耗模式、熱插拔支持和信號完整性方面起著關鍵作用,而+3.3V電源則主要用于設備的正常工作。這種設計使得PCIe設備在各種場景下都能表現出良好的性能和可靠性。
M.2接口
M.2接口主要用于小型SSD的連接,我們熟悉的M.2 SSD是這樣的,M.2接口勝在小巧。
M.2接口分為:
- B Key,支持PCIe x2 Lane
- M Key,支持PCIe x4 Lane
- B+M Key,支持PCIe x2 Lane,同時兼容插在M Key上
OAM 卡
OAM 是OCP(Open Compute) 定義的指導AI硬件加速模塊和系統設計的標準,可以在服務器上實現更優的AI硬件加速模塊的互聯。外形長成這個樣子:
詳細的信息可以參考Open Compute Project
更多:
PCIE接口介紹