PCIe總線的提出可以算是代表著傳統(tǒng)并行總線向高速串行總線發(fā)展的時代的到來。實際上,不僅是PCI總線到PCIe總線,高速串行總線取代傳統(tǒng)并行總線是一個大的趨勢。如ATA到SATA,SCSI到USB等…… 不過,為了兼容之前的PCI總線設備,雖然PCIe是一種串行總線,無法再物理層上兼容PCI總線,但是在軟件層上面卻是兼容PCI總線的。 和很多的串行總線一樣,PCIe采用了全雙工的傳輸設計,即允許在同一時刻,同時進行發(fā)送和接收數(shù)據(jù)。如下圖所示,設備A和設備B之間通過雙向的Link相連接,每個Link支持1到32個通道(Lane)。由于是串行總線,因此所有的數(shù)據(jù)(包括配置信息等)都是以數(shù)據(jù)包為單位進行發(fā)送的。 與絕大部分的高速連接一樣,PCIe采用了差分對進行收發(fā),以提高總線的性能。一個PCIe Lane的例子如下圖所示: 除了差分總線,PCIe還引入了嵌入式時鐘的技術(Embedded Clock),即發(fā)送端不再向接收端發(fā)送時鐘,但是接收端可以通過8b/10b的編碼從數(shù)據(jù)Lane中恢復出時鐘。一個簡單的時鐘恢復電路模型如下圖所示: 注:PCie Gen3以及之后的版本采用了128b/130b的編碼方式。 PCIe相對于PCI總線的另一個大的優(yōu)勢是其的Scalable Performance,即可以根據(jù)應用的需要來調(diào)整PCIe設備的帶寬。如需要很高的帶寬,則采用多個Lane(比如顯卡);如果并不需要特別高的帶寬,則只需要一個Lane就可以了(比如說網(wǎng)卡等)。 和PCI-X總線一樣,由于非常高的傳輸速度,PCIe是一種點對點連接的總線,而不像PCI那樣的共享總線。但是PCIe總線系統(tǒng)可以通過Switch連接多個PCIe設備,也可以通過PCIe橋連接傳統(tǒng)的PCI和PCI-X設備。一個簡單的PCIe總線系統(tǒng)的拓撲結構圖如下所示: 注:這里的Switch實際上包含了多個類似于PCI總線中橋的概念。 圖中的Root Complex經(jīng)常被稱為RC或者Root。在PCIe的Spec中,并沒有特別詳細的關于Root Complex的定義,從實際的角度來講,可以把Root Complex理解為CPU與PCIe總線系統(tǒng)通信的媒介。Endpoint處于PCIe總線系統(tǒng)拓撲結構中的最末端,一般作為總線操作的發(fā)起者(initiator,類似于PCI總線中的主機)或者終結者(Completers,類似于PCI總線中的從機)。顯然,Endpoint只能接受來自上級拓撲的數(shù)據(jù)包或者想上級拓撲發(fā)送數(shù)據(jù)包。 所謂Lagacy PCIe Endpoint是指那些原本準備設計為PCI-X總線接口的設備,但是卻被改為PCIe接口的設備。而Native PCIe Endpoint則是標準的PCIe設備。其中,Lagacy PCIe Endpoint可以使用一些在Native PCIe Endpoint禁止使用的操作,如IO Space和Locked Request等。Native PCIe Endpoint則全部通過Memory Map來進行操作,因此,Native PCIe Endpoint也被稱為Memory Mapped Devices(MMIO Devices)。 |
|