<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PCIe總線的基礎知識

          PCIe總線的基礎知識

          作者: 時間:2016-12-15 來源:網(wǎng)絡 收藏

          1事務層

          事務層定義了PCIe總線使用總線事務,其中多數(shù)總線事務與PCI總線兼容。這些總線事務可以通過Switch等設備傳送到其他PCIe設備或者RC。RC也可以使用這些總線事務訪問PCIe設備。

          事務層接收來自PCIe設備核心層的數(shù)據(jù),并將其封裝為TLP(Transaction Layer Packet)后,發(fā)向數(shù)據(jù)鏈路層。此外事務層還可以從數(shù)據(jù)鏈路層中接收數(shù)據(jù)報文,然后轉發(fā)至PCIe設備的核心層。

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

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

          數(shù)據(jù)鏈路層保證來自發(fā)送端事務層的報文可以可靠、完整地發(fā)送到接收端的數(shù)據(jù)鏈路層。來自事務層的報文在通過數(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設備連接在一起。PCIe總線的物理電氣特性決定了PCIe鏈路只能使用端到端的連接方式。PCIe總線的物理層為PCIe設備間的數(shù)據(jù)通信提供傳送介質,為數(shù)據(jù)傳送提供可靠的物理環(huán)境。

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

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

          4.1.4PCIe鏈路的擴展

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

          在PCIe總線中,Switch[2]是一個特殊的設備,該設備由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中,還有兩個與端口相關的概念,分別是Egress端口和Ingress端口。這兩個端口與通過Switch的數(shù)據(jù)流向有關。其中Egress端口指發(fā)送端口,即數(shù)據(jù)離開Switch使用的端口;Ingress端口指接收端口即數(shù)據(jù)進入Switch使用的端口。

          Egress端口和Ingress端口與上下游端口沒有對應關系。在Switch中,上下游端口可以作為Egress端口,也可以作為Ingress端口。如圖4?5所示,RC對EP3的內部寄存器進行寫操作時,Switch的上游端口為Ingress端口,而下游端口為Egress端口;當EP3對主存儲器進行DMA寫操作時,該Switch的上游端口為Egress端口,而下游端口為Ingress端口。

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

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

          處理器系統(tǒng)1與處理器系統(tǒng)2間的數(shù)據(jù)交換可以通過Crosslink進行。當處理器系統(tǒng)1(2)訪問的PCI總線域的地址空間或者Requester ID不在處理器系統(tǒng)1(2)內時,這些數(shù)據(jù)將被Crosslink端口接收,并傳遞到對端處理器系統(tǒng)中。Crosslink對端接口的P2P橋將接收來自另一個處理器域的數(shù)據(jù)請求,并將其轉換為本處理器域的數(shù)據(jù)請求。

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

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

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

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


          上一頁 1 2 3 下一頁

          關鍵詞: PCIe總線基礎知

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();