上一篇文章介紹了Type0型配置空間Header中的BAR的作用和用法,但是PCIe中的橋設(shè)備(Switch和Root中的P2P)又是如何判斷某一請(qǐng)求(Request)是否屬于自己或者自己的分支下的設(shè)備的呢?這實(shí)際上是通過(guò)Type1型配置空間Header中的Base和Limit寄存器來(lái)實(shí)現(xiàn)的,這篇文章來(lái)進(jìn)行簡(jiǎn)單地介紹一下。
Base和Limit寄存器在Type1 Header中的位置如下圖所示:

Base和Limit寄存器分別確定了其所有分支下設(shè)備(The device that live beneath this bridge)的地址的起始和結(jié)束地址。根據(jù)請(qǐng)求類(lèi)型的不同,分別對(duì)應(yīng)不同的Limit&Base組合:
· Prefetchable Memory Space(P-MMIO)
· Non- Prefetchable Memory Space(NP-MMIO)
· IO Space(IO)
一旦該橋分支下面的任意設(shè)備的BAR發(fā)生改變,該橋的Base&Limit寄存器也需要做出對(duì)應(yīng)的改變。
下面以一個(gè)簡(jiǎn)單的例子,來(lái)分析一下:

如上圖所示,連接到Switch的PortB上的PCIe Endpoint分別配置了NP-MMIO、P-MMIO和IO空間。下面來(lái)簡(jiǎn)單地分析一下PortB的Header中的Base & Limit 寄存器。
P-MMIO Base & Limit

NP-MMIO Base & Limit

需要注意的是,Endpoint的需要的NP-MMIO的大小明明只有4KB,PortB的Header卻給其1MB的空間(最小1MB),也就是說(shuō)剩余的空間都將會(huì)被浪費(fèi)掉,并且其他的Endpoint都將無(wú)法使用這一空間。
IO Base & Limit

注:IO空間可分配的最小值為4KB,最大值則取決于操作系統(tǒng)和BIOS。
Unused Base and Limit Registers
很多情況下,我們并不需要所有的地址空間類(lèi)型,比如所在某一個(gè)Endpoint中沒(méi)有使用IO Space。此時(shí),其對(duì)應(yīng)的橋的Header會(huì)把Base的地址設(shè)置為大于Limit的地址,也就是把地址范圍設(shè)置為無(wú)效。
注:Mindshare的書(shū)這個(gè)地方似乎寫(xiě)錯(cuò)了,以PCIe Spec為準(zhǔn)。
一個(gè)完整的例子如下圖所示:

-
寄存器
+關(guān)注
關(guān)注
31文章
5601瀏覽量
129576 -
PCIe
+關(guān)注
關(guān)注
16文章
1437瀏覽量
87940
原文標(biāo)題:【博文連載】PCIe掃盲——Base & Limit寄存器詳解
文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
MDK中寄存器地址名稱(chēng)映射分析
MDK中寄存器地址名稱(chēng)映射分析
數(shù)據(jù)寄存器,數(shù)據(jù)寄存器是什么意思
寄存器培訓(xùn)教程
移位寄存器怎么用_如何使用移位寄存器_移位寄存器的用途
寄存器操作方法_對(duì)寄存器操作的通用方法總結(jié)
芯片與寄存器
微機(jī)原理筆記——x86寄存器
CS,IP和PC寄存器
如何在VHDL中實(shí)現(xiàn)一個(gè)簡(jiǎn)單的寄存器
分析一下PortB的Header中的Base & Limit寄存器
評(píng)論