0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PCIe鏈路端到端的數(shù)據(jù)傳遞 PCLe總線的層次結(jié)構(gòu)

電子設(shè)計 ? 來源:CSDN博主 ? 作者:李海偉404 ? 2020-11-21 10:42 ? 次閱讀

PCIe總線概述

隨著現(xiàn)代處理器技術(shù)的發(fā)展,在互連領(lǐng)域中,使用高速差分總線替代并行總線是大勢所趨。與單端并行信號相比,高速差分信號可以使用更高的時鐘頻率,從而使用更少的信號線,完成之前需要許多單端并行數(shù)據(jù)信號才能達到的總線帶寬。

PCI總線使用并行總線結(jié)構(gòu),在同一條總線上的所有外部設(shè)備共享總線帶寬,而PCIe總線使用了高速差分總線,并采用端到端的連接方式,因此在每一條PCIe鏈路中只能連接兩個設(shè)備。這使得PCIe與PCI總線采用的拓撲結(jié)構(gòu)有所不同。PCIe總線除了在連接方式上與PCI總線不同之外,還使用了一些在網(wǎng)絡(luò)通信中使用的技術(shù),如支持多種數(shù)據(jù)路由方式,基于多通路的數(shù)據(jù)傳遞方式,和基于報文的數(shù)據(jù)傳送方式,并充分考慮了在數(shù)據(jù)傳送中出現(xiàn)服務(wù)質(zhì)量QoS (Quality of Service)問題。

PCIe總線的基礎(chǔ)知識

與PCI總線不同,PCIe總線使用端到端的連接方式,在一條PCIe鏈路的兩端只能各連接一個設(shè)備,這兩個設(shè)備互為是數(shù)據(jù)發(fā)送端和數(shù)據(jù)接收端。PCIe總線除了總線鏈路外,還具有多個層次,發(fā)送端發(fā)送數(shù)據(jù)時將通過這些層次,而接收端接收數(shù)據(jù)時也使用這些層次。PCIe總線使用的層次結(jié)構(gòu)與網(wǎng)絡(luò)協(xié)議棧較為類似。

1.1 端到端的數(shù)據(jù)傳遞

PCIe鏈路使用“端到端的數(shù)據(jù)傳送方式”,發(fā)送端和接收端中都含有TX(發(fā)送邏輯)和RX(接收邏輯),其結(jié)構(gòu)如圖41所示。


由上圖所示,在PCIe總線的物理鏈路的一個數(shù)據(jù)通路(Lane)中,由兩組差分信號,共4根信號線組成。其中發(fā)送端的TX部件與接收端的RX部件使用一組差分信號連接,該鏈路也被稱為發(fā)送端的發(fā)送鏈路,也是接收端的接收鏈路;而發(fā)送端的RX部件與接收端的TX部件使用另一組差分信號連接,該鏈路也被稱為發(fā)送端的接收鏈路,也是接收端的發(fā)送鏈路。一個PCIe鏈路可以由多個Lane組成。

高速差分信號電氣規(guī)范要求其發(fā)送端串接一個電容,以進行AC耦合。該電容也被稱為AC耦合電容。PCIe鏈路使用差分信號進行數(shù)據(jù)傳送,一個差分信號由D+和D-兩根信號組成,信號接收端通過比較這兩個信號的差值,判斷發(fā)送端發(fā)送的是邏輯“1”還是邏輯“0”。

與單端信號相比,差分信號抗干擾的能力更強,因為差分信號在布線時要求“等長”、“等寬”、“貼近”,而且在同層。因此外部干擾噪聲將被“同值”而且“同時”加載到D+和D-兩根信號上,其差值在理想情況下為0,對信號的邏輯值產(chǎn)生的影響較小。因此差分信號可以使用更高的總線頻率。

此外使用差分信號能有效抑制電磁干擾EMI(Electro Magnetic Interference)。由于差分信號D+與D-距離很近而且信號幅值相等、極性相反。這兩根線與地線間耦合電磁場的幅值相等,將相互抵消,因此差分信號對外界的電磁干擾較小。當然差分信號的缺點也是顯而易見的,一是差分信號使用兩根信號傳送一位數(shù)據(jù);二是差分信號的布線相對嚴格一些。

PCIe鏈路可以由多條Lane組成,目前PCIe鏈路可以支持1、2、4、8、12、16和32個Lane,即×1、×2、×4、×8、×12、×16和×32寬度的PCIe鏈路。每一個Lane上使用的總線頻率與PCIe總線使用的版本相關(guān)。

第1個PCIe總線規(guī)范為V1.0,之后依次為V1.0a,V1.1,V2.0和V2.1。目前PCIe總線的最新規(guī)范為V2.1,而V3.0正在開發(fā)過程中,預(yù)計在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ī)范為例,說明不同寬度PCIe鏈路所能提供的峰值帶寬,如表42所示。

表42 PCIe總線的峰值帶寬


由上表所示,×32的PCIe鏈路可以提供160GT/s的鏈路帶寬,遠高于PCI/PCI-X總線所能提供的峰值帶寬。而即將推出的PCIe V3.0規(guī)范使用4GHz的總線頻率,將進一步提高PCIe鏈路的峰值帶寬。

在PCIe總線中,使用GT(Gigatransfer)計算PCIe鏈路的峰值帶寬。GT是在PCIe鏈路上傳遞的峰值帶寬,其計算公式為總線頻率×數(shù)據(jù)位寬×2。

在PCIe總線中,影響有效帶寬的因素有很多,因而其有效帶寬較難計算。盡管如此,PCIe總線提供的有效帶寬還是遠高于PCI總線。PCIe總線也有其弱點,其中最突出的問題是傳送延時。

PCIe鏈路使用串行方式進行數(shù)據(jù)傳送,然而在芯片內(nèi)部,數(shù)據(jù)總線仍然是并行的,因此PCIe鏈路接口需要進行串并轉(zhuǎn)換,這種串并轉(zhuǎn)換將產(chǎn)生較大的延時。除此之外PCIe總線的數(shù)據(jù)報文需要經(jīng)過事務(wù)層、數(shù)據(jù)鏈路層和物理層,這些數(shù)據(jù)報文在穿越這些層次時,也將帶來延時。

在基于PCIe總線的設(shè)備中,×1的PCIe鏈路最為常見,而×12的PCIe鏈路極少出現(xiàn),×4和×8的PCIe設(shè)備也不多見。Intel通常在ICH中集成了多個×1的PCIe鏈路用來連接低速外設(shè),而在MCH中集成了一個×16的PCIe鏈路用于連接顯卡控制器。而PowerPC處理器通常能夠支持×8、×4、×2和×1的PCIe鏈路。

PCIe總線物理鏈路間的數(shù)據(jù)傳送使用基于時鐘的同步傳送機制,但是在物理鏈路上并沒有時鐘線,PCIe總線的接收端含有時鐘恢復(fù)模塊CDR(Clock Data Recovery),CDR將從接收報文中提取接收時鐘,從而進行同步數(shù)據(jù)傳遞。

值得注意的是,在一個PCIe設(shè)備中除了需要從報文中提取時鐘外,還使用了REFCLK+和REFCLK-信號對作為本地參考時鐘,這個信號對的描述見下文。

1.2 PCIe總線使用的信號

PCIe設(shè)備使用兩種電源信號供電,分別是Vcc與Vaux,其額定電壓為3.3V。其中Vcc為主電源,PCIe設(shè)備使用的主要邏輯模塊均使用Vcc供電,而一些與電源管理相關(guān)的邏輯使用Vaux供電。在PCIe設(shè)備中,一些特殊的寄存器通常使用Vaux供電,如Sticky Register,此時即使PCIe設(shè)備的Vcc被移除,這些與電源管理相關(guān)的邏輯狀態(tài)和這些特殊寄存器的內(nèi)容也不會發(fā)生改變。

在PCIe總線中,使用Vaux的主要原因是為了降低功耗和縮短系統(tǒng)恢復(fù)時間。因為Vaux在多數(shù)情況下并不會被移除,因此當PCIe設(shè)備的Vcc恢復(fù)后,該設(shè)備不用重新恢復(fù)使用Vaux供電的邏輯,從而設(shè)備可以很快地恢復(fù)到正常工作狀狀態(tài)。

PCIe鏈路的最大寬度為×32,但是在實際應(yīng)用中,×32的鏈路寬度極少使用。在一個處理器系統(tǒng)中,一般提供×16的PCIe插槽,并使用PETp0~15、PETn0~15和PERp0~15、PERn0~15共64根信號線組成32對差分信號,其中16對PETxx信號用于發(fā)送鏈路,另外16對PERxx信號用于接收鏈路。除此之外PCIe總線還使用了下列輔助信號。

1 PERST#信號

該信號為全局復(fù)位信號,由處理器系統(tǒng)提供,處理器系統(tǒng)需要為PCIe插槽和PCIe設(shè)備提供該復(fù)位信號。PCIe設(shè)備使用該信號復(fù)位內(nèi)部邏輯。當該信號有效時,PCIe設(shè)備將進行復(fù)位操作。PCIe總線定義了多種復(fù)位方式,其中Cold Reset和Warm Reset這兩種復(fù)位方式的實現(xiàn)與該信號有關(guān),詳見第1.5節(jié)。

2 REFCLK+和REFCLK-信號

在一個處理器系統(tǒng)中,可能含有許多PCIe設(shè)備,這些設(shè)備可以作為Add-In卡與PCIe插槽連接,也可以作為內(nèi)置模塊,與處理器系統(tǒng)提供的PCIe鏈路直接相連,而不需要經(jīng)過PCIe插槽。PCIe設(shè)備與PCIe插槽都具有REFCLK+和REFCLK-信號,其中PCIe插槽使用這組信號與處理器系統(tǒng)同步。

在一個處理器系統(tǒng)中,通常采用專用邏輯向PCIe插槽提供REFCLK+和REFCLK-信號,如圖42所示。其中100Mhz的時鐘源由晶振提供,并經(jīng)過一個“一推多”的差分時鐘驅(qū)動器生成多個同相位的時鐘源,與PCIe插槽一一對應(yīng)連接。


PCIe插槽需要使用參考時鐘,其頻率范圍為100MHz±300ppm。處理器系統(tǒng)需要為每一個PCIe插槽、MCH、ICH和Switch提供參考時鐘。而且要求在一個處理器系統(tǒng)中,時鐘驅(qū)動器產(chǎn)生的參考時鐘信號到每一個PCIe插槽(MCH、ICH和Swith)的距離差在15英寸之內(nèi)。通常信號的傳播速度接近光速,約為6英寸/ns,由此可見,不同PCIe插槽間REFCLK+和REFCLK-信號的傳送延時差約為2.5ns。

當PCIe設(shè)備作為Add-In卡連接在PCIe插槽時,可以直接使用PCIe插槽提供的REFCLK+和REFCLK-信號,也可以使用獨立的參考時鐘,只要這個參考時鐘在100MHz±300ppm范圍內(nèi)即可。內(nèi)置的PCIe設(shè)備與Add-In卡在處理REFCLK+和REFCLK-信號時使用的方法類似,但是PCIe設(shè)備可以使用獨立的參考時鐘,而不使用REFCLK+和REFCLK-信號。

在PCIe設(shè)備配置空間的Link Control Register中,含有一個“Common Clock Configuration”位。當該位為1時,表示該設(shè)備與PCIe鏈路的對端設(shè)備使用“同相位”的參考時鐘;如果為0,表示該設(shè)備與PCIe鏈路的對端設(shè)備使用的參考時鐘是異步的。

在PCIe設(shè)備中,“Common Clock Configuration”位的缺省值為0,此時PCIe設(shè)備使用的參考時鐘與對端設(shè)備沒有任何聯(lián)系,PCIe鏈路兩端設(shè)備使用的參考時鐘可以異步設(shè)置。這個異步時鐘設(shè)置方法對于使用PCIe鏈路進行遠程連接時尤為重要。

在一個處理器系統(tǒng)中,如果使用PCIe鏈路進行機箱到機箱間的互連,因為參考時鐘可以異步設(shè)置,機箱到機箱之間進行數(shù)據(jù)傳送時僅需要差分信號線即可,而不需要參考時鐘,從而極大降低了連接難度。

3 WAKE#信號

當PCIe設(shè)備進入休眠狀態(tài),主電源已經(jīng)停止供電時,PCIe設(shè)備使用該信號向處理器系統(tǒng)提交喚醒請求,使處理器系統(tǒng)重新為該PCIe設(shè)備提供主電源Vcc。在PCIe總線中,WAKE#信號是可選的,因此使用WAKE#信號喚醒PCIe設(shè)備的機制也是可選的。值得注意的是產(chǎn)生該信號的硬件邏輯必須使用輔助電源Vaux供電。

WAKE#是一個Open Drain信號,一個處理器的所有PCIe設(shè)備可以將WAKE#信號進行線與后,統(tǒng)一發(fā)送給處理器系統(tǒng)的電源控制器。當某個PCIe設(shè)備需要被喚醒時,該設(shè)備首先置WAKE#信號有效,然后在經(jīng)過一段延時之后,處理器系統(tǒng)開始為該設(shè)備提供主電源Vcc,并使用PERST#信號對該設(shè)備進行復(fù)位操作。此時WAKE#信號需要始終保持為低,當主電源Vcc上電完成之后,PERST#信號也將置為無效并結(jié)束復(fù)位,WAKE#信號也將隨之置為無效,結(jié)束整個喚醒過程。

PCIe設(shè)備除了可以使用WAKE#信號實現(xiàn)喚醒功能外,還可以使用Beacon信號實現(xiàn)喚醒功能。與WAKE#信號實現(xiàn)喚醒功能不同,Beacon使用In-band信號,即差分信號D+和D-實現(xiàn)喚醒功能。Beacon信號DC平衡,由一組通過D+和D-信號生成的脈沖信號組成。這些脈沖信號寬度的最小值為2ns,最大值為16us。當PCIe設(shè)備準備退出L2狀態(tài)(該狀態(tài)為PCIe設(shè)備使用的一種低功耗狀態(tài))時,可以使用Beacon信號,提交喚醒請求。

4 SMCLK和SMDAT信號

SMCLK和SMDAT信號與x86處理器的SMBus(System Mangement Bus)相關(guān)。SMBus于1995年由Intel提出,SMBus由SMCLK和SMDAT信號組成。SMBus源于I2C總線,但是與I2C總線存在一些差異。

SMBus的最高總線頻率為100KHz,而I2C總線可以支持400KHz和2MHz的總線頻率。此外SMBus上的從設(shè)備具有超時功能,當從設(shè)備發(fā)現(xiàn)主設(shè)備發(fā)出的時鐘信號保持低電平超過35ms時,將引發(fā)從設(shè)備的超時復(fù)位。在正常情況下,SMBus的主設(shè)備使用的總線頻率最低為10KHz,以避免從設(shè)備在正常使用過程中出現(xiàn)超時。

在SMbus中,如果主設(shè)備需要復(fù)位從設(shè)備時,可以使用這種超時機制。而I2C總線只能使用硬件信號才能實現(xiàn)這種復(fù)位操作,在I2C總線中,如果從設(shè)備出現(xiàn)錯誤時,單純通過主設(shè)備是無法復(fù)位從設(shè)備的。

SMBus還支持Alert Response機制。當從設(shè)備產(chǎn)生一個中斷時,并不會立即清除該中斷,直到主設(shè)備向0b0001100地址發(fā)出命令。

上文所述的SMBus和I2C總線的區(qū)別還是局限于物理層和鏈路層上,實際上SMBus還含有網(wǎng)絡(luò)層。SMBus還在網(wǎng)絡(luò)層上定義了11種總線協(xié)議,用來實現(xiàn)報文傳遞。

SMBus在x86處理器系統(tǒng)中得到了大規(guī)模普及,其主要作用是管理處理器系統(tǒng)的外部設(shè)備,并收集外設(shè)的運行信息,特別是一些與智能電源管理相關(guān)的信息。PCI和PCIe插槽也為SMBus預(yù)留了接口,以便于PCI/PCIe設(shè)備與處理器系統(tǒng)進行交互。

Linux系統(tǒng)中,SMBus得到了廣泛的應(yīng)用,ACPI也為SMBus定義了一系列命令,用于智能電池、電池充電器與處理器系統(tǒng)之間的通信。在Windows操作系統(tǒng)中,有關(guān)外部設(shè)備的描述信息,也是通過SMBus獲得的。

5 JTAG信號

JTAG(Joint Test Action Group)是一種國際標準測試協(xié)議,與IEEE 1149.1兼容,主要用于芯片內(nèi)部測試。目前絕大多數(shù)器件都支持JTAG測試標準。JTAG信號由TRST#、TCK、TDI、TDO和TMS信號組成。其中TRST#為復(fù)位信號;TCK為時鐘信號;TDI和TDO分別與數(shù)據(jù)輸入和數(shù)據(jù)輸出對應(yīng);而TMS信號為模式選擇。

JTAG允許多個器件通過JTAG接口串聯(lián)在一起,并形成一個JTAG鏈。目前FPGA和EPLD可以借用JTAG接口實現(xiàn)在線編程ISP(In-System Programming)功能。處理器也可以使用JTAG接口進行系統(tǒng)級調(diào)試工作,如設(shè)置斷點、讀取內(nèi)部寄存器和存儲器等一系列操作。除此之外JTAG接口也可用作“逆向工程”,分析一個產(chǎn)品的實現(xiàn)細節(jié),因此在正式產(chǎn)品中,一般不保留JTAG接口。

6 PRSNT1#和PRSNT2#信號

PRSNT1#和PRSNT2#信號與PCIe設(shè)備的熱插拔相關(guān)。在基于PCIe總線的Add-in卡中,PRSNT1#和PRSNT2#信號直接相連,而在處理器主板中,PRSNT1#信號接地,而PRSNT2#信號通過上拉電阻接為高。PCIe設(shè)備的熱插拔結(jié)構(gòu)如圖43所示。


如上圖所示,當Add-In卡沒有插入時,處理器主板的PRSNT2#信號由上拉電阻接為高,而當Add-In卡插入時主板的PRSNT2#信號將與PRSNT1#信號通過Add-In卡連通,此時PRSNT2#信號為低。處理器主板的熱插拔控制邏輯將捕獲這個“低電平”,得知Add-In卡已經(jīng)插入,從而觸發(fā)系統(tǒng)軟件進行相應(yīng)地處理。

Add-In卡拔出的工作機制與插入類似。當Add-in卡連接在處理器主板時,處理器主板的PRSNT2#信號為低,當Add-In卡拔出后,處理器主板的PRSNT2#信號為高。處理器主板的熱插拔控制邏輯將捕獲這個“高電平”,得知Add-In卡已經(jīng)被拔出,從而觸發(fā)系統(tǒng)軟件進行相應(yīng)地處理。

不同的處理器系統(tǒng)處理PCIe設(shè)備熱拔插的過程并不相同,在一個實際的處理器系統(tǒng)中,熱拔插設(shè)備的實現(xiàn)也遠比圖43中的示例復(fù)雜得多。值得注意的是,在實現(xiàn)熱拔插功能時,Add-in Card需要使用“長短針”結(jié)構(gòu)。

如圖43所示,PRSNT1#和PRSNT2#信號使用的金手指長度是其他信號的一半。因此當PCIe設(shè)備插入插槽時,PRSNT1#和PRSNT2#信號在其他金手指與PCIe插槽完全接觸,并經(jīng)過一段延時后,才能與插槽完全接觸;當PCIe設(shè)備從PCIe插槽中拔出時,這兩個信號首先與PCIe插槽斷連,再經(jīng)過一段延時后,其他信號才能與插槽斷連。系統(tǒng)軟件可以使用這段延時,進行一些熱拔插處理。

1.3 PCLe總線的層次結(jié)構(gòu)

PCIe總線采用了串行連接方式,并使用數(shù)據(jù)包(Packet)進行數(shù)據(jù)傳輸,采用這種結(jié)構(gòu)有效去除了在PCI總線中存在的一些邊帶信號,如INTx和PME#等信號。在PCIe總線中,數(shù)據(jù)報文在接收和發(fā)送過程中,需要通過多個層次,包括事務(wù)層、數(shù)據(jù)鏈路層和物理層。PCIe總線的層次結(jié)構(gòu)如圖44所示。


PCIe總線的層次組成結(jié)構(gòu)與網(wǎng)絡(luò)中的層次結(jié)構(gòu)有類似之處,但是PCIe總線的各個層次都是使用硬件邏輯實現(xiàn)的。在PCIe體系結(jié)構(gòu)中,數(shù)據(jù)報文首先在設(shè)備的核心層(Device Core)中產(chǎn)生,然后再經(jīng)過該設(shè)備的事務(wù)層(Transaction Layer)、數(shù)據(jù)鏈路層(Data Link Layer)和物理層(Physical Layer),最終發(fā)送出去。而接收端的數(shù)據(jù)也需要通過物理層、數(shù)據(jù)鏈路和事務(wù)層,并最終到達Device Core。

1 事務(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ù)報文,然后轉(zhuǎn)發(fā)至PCIe設(shè)備的核心層。

事務(wù)層的一個重要工作是處理PCIe總線的“序”。在PCIe總線中,“序”的概念非常重要,也較難理解。在PCIe總線中,事務(wù)層傳遞報文時可以亂序,這為PCIe設(shè)備的設(shè)計制造了不小的麻煩。事務(wù)層還使用流量控制機制保證PCIe鏈路的使用效率。有關(guān)事務(wù)層的詳細說明見第6章。

2 數(shù)據(jù)鏈路層

數(shù)據(jù)鏈路層保證來自發(fā)送端事務(wù)層的報文可以可靠、完整地發(fā)送到接收端的數(shù)據(jù)鏈路層。來自事務(wù)層的報文在通過數(shù)據(jù)鏈路層時,將被添加Sequence Number前綴和CRC后綴。數(shù)據(jù)鏈路層使用ACK/NAK協(xié)議保證報文的可靠傳遞。

PCIe總線的數(shù)據(jù)鏈路層還定義了多種DLLP(Data Link Layer Packet),DLLP產(chǎn)生于數(shù)據(jù)鏈路層,終止于數(shù)據(jù)鏈路層。值得注意的是,TLP與DLLP并不相同,DLLP并不是由TLP加上Sequence Number前綴和CRC后綴組成的。

3 物理層

物理層是PCIe總線的最底層,將PCIe設(shè)備連接在一起。PCIe總線的物理電氣特性決定了PCIe鏈路只能使用端到端的連接方式。PCIe總線的物理層為PCIe設(shè)備間的數(shù)據(jù)通信提供傳送介質(zhì),為數(shù)據(jù)傳送提供可靠的物理環(huán)境。

物理層是PCIe體系結(jié)構(gòu)最重要,也是最難以實現(xiàn)的組成部分。PCIe總線的物理層定義了LTSSM(Link Training and Status State Machine)狀態(tài)機,PCIe鏈路使用該狀態(tài)機管理鏈路狀態(tài),并進行鏈路訓(xùn)練、鏈路恢復(fù)和電源管理。

PCIe總線的物理層還定義了一些專門的“序列”,有的書籍將物理層這些“序列”稱為PLP(Phsical Layer Packer),這些序列用于同步PCIe鏈路,并進行鏈路管理。值得注意的是PCIe設(shè)備發(fā)送PLP與發(fā)送TLP的過程有所不同。對于系統(tǒng)軟件而言,物理層幾乎不可見,但是系統(tǒng)程序員仍有必要較為深入地理解物理層的工作原理

1.4 數(shù)據(jù)鏈路的擴展

PCIe鏈路使用端到端的數(shù)據(jù)傳送方式。在一條PCIe鏈路中,這兩個端口是完全對等的,分別連接發(fā)送與接收設(shè)備,而且一個PCIe鏈路的一端只能連接一個發(fā)送設(shè)備或者接收設(shè)備。因此PCIe鏈路必須使用Switch擴展PCIe鏈路后,才能連接多個設(shè)備。使用Switch進行鏈路擴展的實例如圖45所示。


在PCIe總線中,Switch[2]是一個特殊的設(shè)備,該設(shè)備由1個上游端口和2~n個下游端口組成。PCIe總線規(guī)定,在一個Switch中可以與RC直接或者間接相連[3]的端口為上游端口,在PCIe總線中,RC的位置一般在上方,這也是上游端口這個稱呼的由來。在Switch中除了上游端口外,其他所有端口都被稱為下游端口。下游端口一般與EP相連,或者連接下一級Switch繼續(xù)擴展PCIe鏈路。其中與上游端口相連的PCIe鏈路被稱為上游鏈路,與下游端口相連的PCIe鏈路被稱為下游鏈路。

上游鏈路和下游鏈路是一個相對的概念。如上圖所示,Switch與EP2連接的PCIe鏈路,對于EP2而言是上游鏈路,而對Switch而言是下游鏈路。

在上圖所示的Switch中含有3個端口,其中一個是上游端口(Upstream Port),而其他兩個為下游端口(Downstream Port)。其中上游端口與RC或者其他Switch的下游端口相連,而下游端口與EP或者其他Switch的上游端口相連。

在Switch中,還有兩個與端口相關(guān)的概念,分別是Egress端口和Ingress端口。這兩個端口與通過Switch的數(shù)據(jù)流向有關(guān)。其中Egress端口指發(fā)送端口,即數(shù)據(jù)離開Switch使用的端口;Ingress端口指接收端口即數(shù)據(jù)進入Switch使用的端口。

Egress端口和Ingress端口與上下游端口沒有對應(yīng)關(guān)系。在Switch中,上下游端口可以作為Egress端口,也可以作為Ingress端口。如圖45所示,RC對EP3的內(nèi)部寄存器進行寫操作時,Switch的上游端口為Ingress端口,而下游端口為Egress端口;當EP3對主存儲器進行DMA寫操作時,該Switch的上游端口為Egress端口,而下游端口為Ingress端口。

PCIe總線還規(guī)定了一種特殊的Switch連接方式,即Crosslink連接模式。支持這種模式的Switch,其上游端口可以與其他Switch的上游端口連接,其下游端口可以與其他Switch的下游端口連接。

PCIe總線提供CrossLink連接模式的主要目的是為了解決不同處理器系統(tǒng)之間的互連,如圖46所示。使用CrossLink連接模式時,雖然從物理結(jié)構(gòu)上看,一個Switch的上/下游端口與另一個Switch的上/下游端口直接相連,但是這個PCIe鏈路經(jīng)過訓(xùn)練后,仍然是一個端口作為上游端口,而另一個作為下游端口。


處理器系統(tǒng)1與處理器系統(tǒng)2間的數(shù)據(jù)交換可以通過Crosslink進行。當處理器系統(tǒng)1(2)訪問的PCI總線域的地址空間或者Requester ID不在處理器系統(tǒng)1(2)內(nèi)時,這些數(shù)據(jù)將被Crosslink端口接收,并傳遞到對端處理器系統(tǒng)中。Crosslink對端接口的P2P橋?qū)⒔邮諄碜粤硪粋€處理器域的數(shù)據(jù)請求,并將其轉(zhuǎn)換為本處理器域的數(shù)據(jù)請求。

使用Crosslink方式連接兩個拓撲結(jié)構(gòu)完全相同的處理器系統(tǒng)時,仍然有不足之處。假設(shè)圖46中的處理器系統(tǒng)1和2的RC使用的ID號都為0,而主存儲器都是從0x0000-0000開始編址時。當處理器1讀取EP2的某段PCI總線空間時,EP2將使用ID路由方式,將完成報文傳送給ID號為0的PCI設(shè)備,此時是處理器2的RC而不是處理器1的RC收到EP2的數(shù)據(jù)。因為處理器1和2的RC使用的ID號都為0,EP2不能區(qū)分這兩個RC。

由上所述,使用Crosslink方式并不能完全解決兩個處理器系統(tǒng)的互連問題,因此在有些Switch中支持非透明橋結(jié)構(gòu)。這種結(jié)構(gòu)與PCI總線非透明橋的實現(xiàn)機制類似,本章對此不做進一步說明。

使用非透明橋僅解決了兩個處理器間數(shù)據(jù)通路問題,但是不便于NUMA結(jié)構(gòu)對外部設(shè)備的統(tǒng)一管理。PCIe總線對此問題的最終解決方法是使用MR-IOV技術(shù),該技術(shù)要求Switch具有多個上游端口分別與不同的RC互連。目前PLX公司已經(jīng)可以提供具有多個上游端口的Switch,但是尚未實現(xiàn)MR-IOV技術(shù)涉及的一些與虛擬化相關(guān)的技術(shù)。

即便MR-IOV技術(shù)可以合理解決多個處理器間的數(shù)據(jù)訪問和對PCIe設(shè)備的配置管理,使用PCIe總線進行兩個或者多個處理器系統(tǒng)間的數(shù)據(jù)傳遞仍然是一個不小問題。因為PCIe總線的傳送延時仍然是制約其在大規(guī)模處理器系統(tǒng)互連中應(yīng)用的重要因素。

編輯:hfy


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19387

    瀏覽量

    230517
  • PCIe
    +關(guān)注

    關(guān)注

    15

    文章

    1247

    瀏覽量

    82890
  • PCIE總線
    +關(guān)注

    關(guān)注

    0

    文章

    58

    瀏覽量

    13422
  • 差分信號
    +關(guān)注

    關(guān)注

    3

    文章

    378

    瀏覽量

    27729
  • 數(shù)據(jù)鏈路
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    8959
收藏 人收藏

    評論

    相關(guān)推薦

    特斯拉帶火“”智駕,國內(nèi)車企加速上車

    在內(nèi)的全自動駕駛軟硬件架構(gòu)。而FSDV12采用的“”的自動駕駛系統(tǒng),能夠高度模擬人類駕駛行為,實現(xiàn)感知決策一體化。近日,特斯拉正式
    的頭像 發(fā)表于 12-02 08:45 ?1719次閱讀
    特斯拉帶火“<b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>”智駕,國內(nèi)車企加速上車

    自動駕駛技術(shù)研究與分析

    傳遞和全局優(yōu)化的優(yōu)勢,成為智能駕駛技術(shù)發(fā)展的重要方向。與傳統(tǒng)模塊化架構(gòu)相比,技術(shù)通過深度神經(jīng)網(wǎng)絡(luò)實現(xiàn)從傳感器數(shù)據(jù)輸入
    的頭像 發(fā)表于 12-19 13:07 ?262次閱讀

    調(diào)試PCIE動態(tài)均衡介紹

    ,它會衰減數(shù)據(jù)流中的關(guān)鍵高頻分量,此外,由連接器和過孔引起的阻抗不連續(xù)會進一步降低性能。 PCI
    的頭像 發(fā)表于 12-05 09:18 ?668次閱讀
    調(diào)試<b class='flag-5'>PCIE</b><b class='flag-5'>鏈</b><b class='flag-5'>路</b>動態(tài)均衡介紹

    已來,智駕仿真測試該怎么做?

    智駕方案因強泛化能力、可持續(xù)學(xué)習(xí)與升級等優(yōu)勢備受矚目,但這對仿真測試帶來了巨大挑戰(zhàn)。康謀探索了一種有效的
    的頭像 發(fā)表于 12-04 09:59 ?2698次閱讀
    <b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>已來,智駕仿真測試該怎么做?

    PCIe數(shù)據(jù)傳輸協(xié)議詳解

    、網(wǎng)卡和聲卡等,以實現(xiàn)高效的數(shù)據(jù)傳輸。以下是對PCIe數(shù)據(jù)傳輸協(xié)議的介紹: 一、PCIe協(xié)議的基本概念 PCIe協(xié)議定義了一系列規(guī)范和要求,
    的頭像 發(fā)表于 11-26 16:12 ?1404次閱讀

    爆火的如何加速智駕落地?

    自動駕駛,唯有?)技術(shù)通過消除模塊間數(shù)據(jù)傳遞
    的頭像 發(fā)表于 11-26 13:17 ?343次閱讀
    爆火的<b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>如何加速智駕落地?

    連接視覺語言大模型與自動駕駛

    自動駕駛在大規(guī)模駕駛數(shù)據(jù)上訓(xùn)練,展現(xiàn)出很強的決策規(guī)劃能力,但是面對復(fù)雜罕見的駕駛場景,依然存在局限性,這是因為
    的頭像 發(fā)表于 11-07 15:15 ?298次閱讀
    連接視覺語言大模型與<b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>自動駕駛

    智己汽車“”智駕方案推出,老司機真的會被取代嗎?

    與Momenta聯(lián)合打造的IM AD 3.0端直覺智能駕駛系統(tǒng),在結(jié)構(gòu)設(shè)計和決策邏輯上,進行了大膽的創(chuàng)新,試圖用“直覺化”思維模式替代傳統(tǒng)的模塊化系統(tǒng)。 ? IM AD 3.0的技術(shù)架構(gòu):
    的頭像 發(fā)表于 10-30 09:47 ?316次閱讀
    智己汽車“<b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>”智駕方案推出,老司機真的會被取代嗎?

    InfiniBand網(wǎng)絡(luò)解決LLM訓(xùn)練瓶頸

    的,這需要大量的計算資源和高速數(shù)據(jù)傳輸網(wǎng)絡(luò)。InfiniBand(IB)網(wǎng)絡(luò)作為高性能計算和AI模型訓(xùn)練的理想選擇,發(fā)揮著重要作用。在本文中,我們將深入探討大型語言模型(LLM)
    的頭像 發(fā)表于 10-23 11:26 ?480次閱讀
    <b class='flag-5'>端</b><b class='flag-5'>到</b><b class='flag-5'>端</b>InfiniBand網(wǎng)絡(luò)解決LLM訓(xùn)練瓶頸

    測試用例怎么寫

    編寫測試用例是確保軟件系統(tǒng)從頭到尾能夠正常工作的關(guān)鍵步驟。以下是一個詳細的指南,介紹如何編寫
    的頭像 發(fā)表于 09-20 10:29 ?519次閱讀

    PCle培訓(xùn)概述

    電子發(fā)燒友網(wǎng)站提供《PCle培訓(xùn)概述.pdf》資料免費下載
    發(fā)表于 09-11 09:16 ?0次下載
    <b class='flag-5'>PCle</b><b class='flag-5'>鏈</b><b class='flag-5'>路</b>培訓(xùn)概述

    IR615如何實現(xiàn)VPN備份?

    網(wǎng)絡(luò)連通性,可以看到模擬故障后丟失三個數(shù)據(jù)包。 模擬故障恢復(fù),連接wan口網(wǎng)線,查看路由表??梢钥吹铰酚梢呀?jīng)恢復(fù)wan口。 OpenServer查看看,可以看到
    發(fā)表于 07-25 08:27

    XIO2221單功能PCI ExpressTM (PCle)PCI本地總線轉(zhuǎn)換橋數(shù)據(jù)

    電子發(fā)燒友網(wǎng)站提供《XIO2221單功能PCI ExpressTM (PCle)PCI本地總線轉(zhuǎn)換橋數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 07-10 11:21 ?0次下載
    XIO2221單功能PCI ExpressTM (<b class='flag-5'>PCle</b>)<b class='flag-5'>到</b>PCI本地<b class='flag-5'>總線</b>轉(zhuǎn)換橋<b class='flag-5'>數(shù)據(jù)</b>表

    小鵬汽車發(fā)布大模型

    小鵬汽車近日宣布,其成功研發(fā)并發(fā)布了“國內(nèi)首個量產(chǎn)上車”的大模型,該模型可直接通過傳感器輸入內(nèi)容來控制車輛,標志著智能駕駛技術(shù)的新突破。
    的頭像 發(fā)表于 05-21 15:09 ?703次閱讀

    基于安PCIe SGDMA高速數(shù)據(jù)傳輸方案

    科技提供基于PCIe 硬核控制器開發(fā)的SGDMA IP。SGDMA可作為一個PCIe2AXI4系列接口的橋或者一個高性能DMA使用。
    的頭像 發(fā)表于 04-08 14:29 ?696次閱讀
    基于安<b class='flag-5'>路</b><b class='flag-5'>PCIe</b> SGDMA高速<b class='flag-5'>數(shù)據(jù)傳</b>輸方案