PCI總線具有32位數據/地址復用總線,所以其存儲地址空間為2的32次方=4GB。也就是PCI上的所有設備共同映射到這4GB上,每個PCI設備占用唯一的一段PCI地址,以便于PCI總線統一尋址。每個PCI設備通過PCI寄存器中的基地址寄存器來指定映射的首地址。如下圖所示:
注:需要注意的是PCI的地址空間和x86系統中的FSB并不是對等的,而是具有一定的映射關系。
PCI體系結構中,一共支持三種地址空間:Memory Address Space、I/O Address Space和Configuration Address Space。其中x86處理器可以直接訪問的只有Memory Address Space和I/O Address Space。而訪問Configuration Address Space則需要通過索引IO寄存器來完成。
注:在PCIe中,則引入了一種新的Configuration Address Space訪問方式:將其直接映射到了Memory Address Space當中。
如上圖所示,最左邊的即為Memory Address Space,其中包括了多個PCI Memory、AGP Video(顯卡)Memory以及Extended Memory、Boot ROM等。中間的為I/O Address Space,需要注意的是,雖然PCI支持32位的地址,但是由于x86的CPU只支持16位的I/O空間,這就限制了PCI的I/O Address Space最大只有64KB。最右邊的則為Configuration Address Space,由于每一個PCI設備最多支持8中功能(Function),每一條PCI總線最多支持32個設備,而每一個PCI總線系統最多又支持256個子總線(通過PCI橋)。因此,總的Configuration Address Space的大小為:256 Bytes/function x 8 functions/device x 32 devices/bus x 256 buses/system = 16MB。
如圖中所示,Configuration Address Space所使用的IO寄存器范圍為0xCF8~0xCFF。其中0xCF8~0xCFB為端口地址,0xCFC~0xCFF為配置數據。
-
寄存器
+關注
關注
31文章
5363瀏覽量
121194 -
pci總線
+關注
關注
1文章
203瀏覽量
31930
原文標題:【博文連載】PCIe掃盲——PCI總線的地址空間分配
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論