前面三小節,介紹了PCIE的基本知識和概念,以及掃描流程。在不求甚解的情況下,我想各位小伙伴應該對PCIE有了個宏觀的認識,OK,那么本章我們在之前的基礎上,再單獨把一些概念和更深層次的問題摘出來具體討論。
首先依舊是國際慣例,先列問題:
1. PCIE的各個模塊中,經常提到Bridge/Host Bridge,Root Complex, Root port以及一些其他常用的部件概念要怎么理解?
2. PCI總線模型和PCIE是點對點模型,要怎么理解?
3. EndPint是否可以直接訪問另外一個EndPoint
1. Bridge/Host Bridge,Root Complex, Root port這些要怎么理解(以下解釋來源於PCIE Spec)
Host bridge的概念:Root Complex中用來鏈接一個主CPU或多個CPU和一個層次結構的一個部分。英文原意如下:
Port 的概念:
1.邏輯上: 位於部件和一個PCIE鏈路之間的接口。 2. 物理上: 位於同一個芯片上用來定義一個鏈路的一組發射器和接收器。 原意如下:
Add Receiver&Reveiver Port
Root Port的概念:一個位於Root Complex上通過相關聯的虛擬PCI-PCI Bridge映射一個層次結構整體部分的的PCIE Port,
Root Complex的概念: 一個的系統元素,包含一個Host Bridge, 0個或多個集成EndPoints的Root Complex, 0個或多個Root Complex時間收集器,0個或多個Root Ports
Add Root complex Componen
Switch的概念:一個定義好的用來連接兩個或多個Ports且允許數據包在不同Ports之間被路由轉發的一個系統元素。通過配置軟件,一個switch也被配置為一組虛擬PCI-to-PCI Bridges的集合
Link的概念:兩個Ports和他們之間所連接Lanes的集合。一個Link是一個雙工通信通道在兩個部件之間。
Lane的概念:一組不同的信號對,一對用來傳送,一堆用來接收。由於PCIE使用差分信號傳輸,一條lane四條線,兩條線組成一對,供發送。另外兩條接收!
2. PCI總線模型和PCIE是點對點模型,要怎么理解?
PCI總線模型: 在傳統的PCI總線模型中,一個設備通過在Bus上判斷DEVSEL(設備選擇)來認領一個請求。如果在一段時鍾周期后沒有設備認領一個請求,這個請求就被放棄。
PCIE點對點模型:PCI是一種點對點的傳輸模型,不像PCI總線那樣,在總線上有平等認領請求的機制。所有的傳送總是由一個Device發給Link上的另外一個Device。所以,對於所有接收方來說,接收方將會直接判斷這個請請求是否要被認領。
3. EndPint是否可以直接訪問另外一個EndPoint
在PCIE這種點對點的模型中,設備之間之間的互聯訪問是可以的。
情況一:不需要CPU參與
最典型的應用就是在一個帶有DMA功能的Switch下,掛載兩個EP,CPU需要首先配置DMA控制器,包括設置一些源地址,目標地址,傳輸數據以及數據量。然后每個設備發起DMA傳輸的時候,會直接透過Switch中的DMA控制器,發數據到另外一個設備,這個過程不需要CPU干預
情況二:CPU參與
這個過程就相對來說簡單了,CPU從一個PCIE設備中讀取出要發送的數據,然后直接發送給指定的目的PCIE設備節點即可。