一、link和lane
一組link就是連接兩個(gè)port之間的若干條lane,通常為x1/x2/x4/x8/x16。每條lane包含四根線tx_p/m,rx_p/m(兩組差分對(duì))。
這里的port/component可以理解為一個(gè)設(shè)備,如果pcie支持bifurcation,則一個(gè)x16的接口可以連接多個(gè)port(2個(gè)x8/1個(gè)x16/4個(gè)x4/8個(gè)x2等),每個(gè)port中每條lane的linkID相同,不同port間的linkID不同。
二、PCIE體系結(jié)構(gòu)說(shuō)明
Root Complex:
RC是CPU和PCIE總線連接的接口。主要功能是完成存儲(chǔ)器域到PCIE總線域的地址轉(zhuǎn)換,隨著虛擬化技術(shù)的引入,RC功能也越來(lái)越復(fù)雜。RC把來(lái)自CPU的request轉(zhuǎn)化成PCIE的4類request(configuration、memory、I/O、message)并發(fā)送給下面的設(shè)備。
Switch & Bridge
Switch提供了分散/聚合的功能,它允許更多的設(shè)備接入到一個(gè)PCIE port。它扮演了數(shù)據(jù)包路由的功能。Bridge提供了一個(gè)轉(zhuǎn)換接口用來(lái)連接其他的總線,如PCI/PCI-X。這樣可以允許在PCIE的系統(tǒng)中接入一張舊的PCI設(shè)備。
PCIE Endpoint:
它只有一個(gè)上游端口,位于PCIE拓?fù)浣Y(jié)構(gòu)的樹(shù)的末端。他作為請(qǐng)求的發(fā)起者或者完成者。分為L(zhǎng)egacy Endpoint、PCIE Endpoint和Root Complex Integrated Endpoint三種。
虛擬化技術(shù):
虛擬化可以理解為一臺(tái)電腦運(yùn)行了兩套系統(tǒng),比如我們?cè)趙indows下安裝linux虛擬機(jī),兩套操作系統(tǒng)共用一套硬件,這要求每套系統(tǒng)的存儲(chǔ)域范圍不重疊,即對(duì)應(yīng)了兩套地址轉(zhuǎn)換,將存儲(chǔ)器地址轉(zhuǎn)換為不同的物理地址,以此實(shí)現(xiàn)一套硬件運(yùn)行多系統(tǒng)。虛擬化技術(shù)的核心是地址的映射和轉(zhuǎn)換。
三、PCIElane翻轉(zhuǎn)和PN翻轉(zhuǎn)
為了方便板子布線,允許lane翻轉(zhuǎn)
每條lane的差分信號(hào)也可翻轉(zhuǎn)。
lane翻轉(zhuǎn)和pn極性翻轉(zhuǎn)有以下要求:
1、PN翻轉(zhuǎn)無(wú)限制,可翻轉(zhuǎn)部分lane,也可只翻轉(zhuǎn)TX或RX
2、lane翻轉(zhuǎn)必須全部翻轉(zhuǎn),不能部分翻轉(zhuǎn)
3、lane翻轉(zhuǎn)TX/RX必須同時(shí)翻轉(zhuǎn),不能只翻轉(zhuǎn)TX或RX
4、lane翻轉(zhuǎn)和PN翻轉(zhuǎn)可以同時(shí)存在
四、吞吐量
PCIE gen1/2使用8b/10b編碼,編碼效率為0.8
PCIE gen3/4/5使用128b/130b≈0.985
PCIE 5.0x4的速率為:32Gbpsx4x128÷130÷8b/B≈15.754GB/s
?
五、PCIE枚舉圖
開(kāi)機(jī)啟動(dòng)時(shí)軟件會(huì)掃描系統(tǒng)中的所有PCIE設(shè)備(PCIE枚舉),對(duì)軟件而言,Bus/Device/Function是必不可少的。
Bus:在一個(gè)系統(tǒng)中存在1~256個(gè)bus; Device:在一條bus中存在1~32個(gè)設(shè)備; Function:每個(gè)設(shè)備有1~8個(gè)功能;
對(duì)于每個(gè)中間橋而言,三條Bus必須知道:Primary Bus/Secondary Bus/Subordinate Bus: Primary Bus:上游bus號(hào) Secondary Bus:下游第一級(jí)bus號(hào) Subordinate Bus:下游最大的bus號(hào)
?
六、PCIE設(shè)備與系統(tǒng)地址映射
PCIE設(shè)備有四種地址空間:
1、Configuration Space配置空間;
2、Memory Space存儲(chǔ)空間;
3、I/O Space空間,存在于老的PCI設(shè)備;
4、Message Space,PCIE設(shè)備新增,包含邊帶指示信號(hào),比如中斷; 這些PCIE總線地址空間需要在初始化時(shí)就映射為存儲(chǔ)器域的存儲(chǔ)器地址空間,方便處理器訪問(wèn)。
系統(tǒng)軟件對(duì)PCIE總線進(jìn)行配置時(shí),首先獲得BAR寄存器的初始化信息,之后根據(jù)處理器系統(tǒng)的配置,將合理的基地址寫入到相應(yīng)的BAR寄存器中,這個(gè)過(guò)程在BIOS運(yùn)行階段和OS啟動(dòng)階段完成。
系統(tǒng)軟件還可以使用該寄存器獲得PCIE設(shè)備使用的BAR空間的長(zhǎng)度,其方法是向BAR寄存器寫入0xFFFF_FFFF后再讀取該寄存器。
每個(gè)PCIE設(shè)備在BAR中描述自己需要占用多少地址空間,BIOS或OS通過(guò)所有設(shè)備的這些信息構(gòu)建一張完整的地址映射表,描述系統(tǒng)中資源的分配情況,然后再合理地將地址空間配置給每個(gè)PCI設(shè)備。
BAR在bit0來(lái)表示該設(shè)備是映射到memory還是I/O,BAR的bit0是readonly的,就是說(shuō)設(shè)備寄存器映射到memory還是I/O是由設(shè)備制造商決定的,其他人無(wú)法修改。
PCI的配置空間如上圖所示,每個(gè)設(shè)備的每個(gè)function都有獨(dú)立的配置空間,大小為256B,前64B為表頭,PCIE設(shè)備的配置空間拓展為4KB。 所有PCI的配置空間為: 16MB=256Busx32Device/Busx8Function/Devicex256B/Func 所有PCIE的配置空間為: 256MB=256Busx32Device/Busx8Function/Devicex4KB/Func X86架構(gòu)地址又分為memory space和I/O space。
I/O space可以理解為直接寄存器讀寫地址空間,屬于X86早期產(chǎn)物,訪問(wèn)速率較慢。 x86:32bit(4GB) x64:64bit(16EB) I/O space:16bit(64KB)
從上圖可知Memory地址前640KB為Conventional Memory,1MB間的為Boot ROM,中間一段為DRAM內(nèi)存,其余的分配給PCI存儲(chǔ)器域。I/O地址中可以通過(guò)CF8-CFB和CFC-CFF訪問(wèn)PCI的16MB配置空間,剩下的為各PCI設(shè)備映射的I/O地址空間。
對(duì)于PCIE而言,配置空間通過(guò)memory的方式映射(MMIO),不再通過(guò)I/O Map的方式訪問(wèn),這會(huì)占用一部分系統(tǒng)內(nèi)存,也是內(nèi)存用不滿的原因(還有主板上的集成顯卡/BIOS等也會(huì)占用內(nèi)存)。
審核編輯:劉清
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7454瀏覽量
163613 -
差分信號(hào)
+關(guān)注
關(guān)注
3文章
367瀏覽量
27658 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
908瀏覽量
28109 -
LINUX內(nèi)核
+關(guān)注
關(guān)注
1文章
316瀏覽量
21619 -
PCIe接口
+關(guān)注
關(guān)注
0文章
120瀏覽量
9680
原文標(biāo)題:技術(shù)交流 | 協(xié)議類 — PCIE協(xié)議
文章出處:【微信號(hào):IP與SoC設(shè)計(jì),微信公眾號(hào):IP與SoC設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論