彙編學習筆記 27 PCIe

2022-06-29 19:09:07 字數 1942 閱讀 4963

pci的拓撲結構和列舉過程

首先我們來看一下在x86系統中,pcie是什麼樣的乙個體系架構。下圖是乙個pcie的拓撲結構示例,pcie協議支援256個bus, 每條bus最多支援32個device,每個device最多支援8個function,所以由bdf(bus,device,function)構成了每個pcie裝置節點的身份證號。

pcie體系架構一般由root complex,switch,endpoint等型別的pcie裝置組成,在root complex和switch中通常會有一些embeded endpoint(這種裝置對外不出pcie介面)。這麼多的裝置,cpu啟動後要怎麼去找到並認出它們呢? host對pcie裝置掃瞄是採用了深度優先演算法,其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個節點只能訪問一次。我們一般稱這個過程為pcie裝置列舉。列舉過程中host通過配置讀事物包來獲取下游裝置的資訊,通過配置寫事物包對下游裝置進行設定。

第一步,pci host主橋掃瞄bus 0上的裝置(在乙個處理器系統中,一般將root complex中與host bridge相連線的pci匯流排命名為pci bus 0),系統首先會忽略bus 0上的embedded ep等不會掛接pci橋的裝置,主橋發現bridge 1後,將bridge1 下面的pci bus定為 bus 1,系統將初始化bridge 1的配置空間,並將該橋的primary bus number 和 secondary bus number暫存器分別設定成0和1,以表明bridge1 的上游匯流排是0,下游匯流排是1,由於還無法確定bridge1下掛載裝置的具體情況,系統先暫時將subordinate bus number設為0xff。

pcie的配置

每個pci裝置根據插入的物理位置的不同會得到乙個 bus device function(bdf)的編號,用來唯一定位這個裝置

每個pci裝置都會有乙個配置空間,

可以通過io空間的的兩個暫存器來訪問指定裝置的配置空間

cf8h: config_address ; pci配置空間位址埠(bdf)

31 位:enabled位。

23:16 位:匯流排編號。

15:11 位:裝置編號。

10: 8 位:功能編號。

7: 2 位:配置空間暫存器編號。

1: 0 位:恒為「00」。這是因為cf8h、cfch埠是32位埠。

cfch: config_data

pcie規定這個配置空間的大小是4k, 所以上面的方式只能訪問255b的資料,於是還有記憶體對映的方式

pci規定 一套系統最多支援255個bus,每個bus最多32個devices,每個devices最多支援8個function,配置空間最大是256mb,當然實際肯定是用不了這麼多的。

系統採用 mmio就是將這個空間對映到實體地址的方式實現訪問,具體對映的空間,配置root comples(rc)暫存器中.

配置空間的結構會根據裝置的型別不同而有所區別,

以非bridge裝置為例,其中包含了device id 和 vendor id,這兩個id需要向委員會申請,程式可以通過這兩個id配短處具體裝置二選擇對應的驅動程式。

同時配置空間中也包含了他資料空間訪問方式的配置,以及資料空間大大小

比如bar的bit0 用於表示要對映到 io空間還是記憶體空間

而base address值表明資料對映的位址,base address會固定一些位為0並且唯讀,用於表示資料的大小。

這樣作業系統就可以通過

1. rc暫存器知道配置空間 或 (config_address / config_data) 找到配置空間。

2. 配置 配置空間的內容來位資料區域對映 訪問位址。

3. 通過對映的訪問位址操作硬體完成功能。

同時pci裝置也是可以有中斷線連線到 io apic的。

文獻:

彙編基礎學習27

文章 http www.mcany.cn article 302.htm 博主 沒落的殘陽 這節來學習下有符號整數的乘法運算,imul指令。這個指令保留了乘積的符號位。imul指令,ia 32指令集中有三種格式 單運算元 雙運算元和三運算元。在單運算元格式中,乘數和被乘數尺寸大小相同,乘積的大小是乘...

PCIe學習筆記分享

本總結隨著dm8168中pcie的學習,以及pcie原理的學習而新增,都是一些零碎的知識點,有部分個人理解,將來溫故知新用。欠奉。pcie裝置需要使用refclk refclk作為本地參考時鐘,其時鐘頻率固定為100mhz,在dm8168系統中,需要提供兩個100mhz時鐘,乙個給dm8168用於檢...

deeplearn學習筆記2 7

day4 1.機器學習的一些歷史和發展 2.幾個典型應用 2.1.關聯規則 2.2.聚類 2.3.樸素貝葉斯和決策樹 2.4.ctr預估和協同過濾 2.5.典型自然語言和影象識別 3.資料分析和機器學習的區別 最大的區別就是資料分析是分析過去的情況,機器學習是 未來的情況 4.機器學習的常見演算法分...