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