PCI總線具有32位數(shù)據(jù)/地址復(fù)用總線,所以其存儲(chǔ)地址空間為2的32次方=4GB。也就是PCI上的所有設(shè)備共同映射到這4GB上,每個(gè)PCI設(shè)備占用唯一的一段PCI地址,以便于PCI總線統(tǒng)一尋址。每個(gè)PCI設(shè)備通過PCI寄存器中的基地址寄存器來指定映射的首地址。如下圖所示:
注:需要注意的是PCI的地址空間和x86系統(tǒng)中的FSB并不是對(duì)等的,而是具有一定的映射關(guān)系。
PCI體系結(jié)構(gòu)中,一共支持三種地址空間: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當(dāng)中。
如上圖所示,最左邊的即為Memory Address Space,其中包括了多個(gè)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,由于每一個(gè)PCI設(shè)備最多支持8中功能(Function),每一條PCI總線最多支持32個(gè)設(shè)備,而每一個(gè)PCI總線系統(tǒng)最多又支持256個(gè)子總線(通過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為配置數(shù)據(jù)。
-
寄存器
+關(guān)注
關(guān)注
31文章
5294瀏覽量
119816 -
pci總線
+關(guān)注
關(guān)注
1文章
203瀏覽量
31777
原文標(biāo)題:【博文連載】PCIe掃盲——PCI總線的地址空間分配
文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論