上一篇文章介紹了Type0型配置空間Header中的BAR的作用和用法,但是PCIe中的橋設備(Switch和Root中的P2P)又是如何判斷某一請求(Request)是否屬于自己或者自己的分支下的設備的呢?這實際上是通過Type1型配置空間Header中的Base和Limit寄存器來實現的,這篇文章來進行簡單地介紹一下。
Base和Limit寄存器在Type1 Header中的位置如下圖所示:
Base和Limit寄存器分別確定了其所有分支下設備(The device that live beneath this bridge)的地址的起始和結束地址。根據請求類型的不同,分別對應不同的Limit&Base組合:
· Prefetchable Memory Space(P-MMIO)
· Non- Prefetchable Memory Space(NP-MMIO)
· IO Space(IO)
一旦該橋分支下面的任意設備的BAR發生改變,該橋的Base&Limit寄存器也需要做出對應的改變。
下面以一個簡單的例子,來分析一下:
如上圖所示,連接到Switch的PortB上的PCIe Endpoint分別配置了NP-MMIO、P-MMIO和IO空間。下面來簡單地分析一下PortB的Header中的Base & Limit 寄存器。
P-MMIO Base & Limit
NP-MMIO Base & Limit
需要注意的是,Endpoint的需要的NP-MMIO的大小明明只有4KB,PortB的Header卻給其1MB的空間(最小1MB),也就是說剩余的空間都將會被浪費掉,并且其他的Endpoint都將無法使用這一空間。
IO Base & Limit
注:IO空間可分配的最小值為4KB,最大值則取決于操作系統和BIOS。
Unused Base and Limit Registers
很多情況下,我們并不需要所有的地址空間類型,比如所在某一個Endpoint中沒有使用IO Space。此時,其對應的橋的Header會把Base的地址設置為大于Limit的地址,也就是把地址范圍設置為無效。
注:Mindshare的書這個地方似乎寫錯了,以PCIe Spec為準。
一個完整的例子如下圖所示:
-
寄存器
+關注
關注
31文章
5401瀏覽量
122786 -
PCIe
+關注
關注
16文章
1301瀏覽量
84383
原文標題:【博文連載】PCIe掃盲——Base & Limit寄存器詳解
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
MDK中寄存器地址名稱映射分析
MDK中寄存器地址名稱映射分析
移位寄存器怎么用_如何使用移位寄存器_移位寄存器的用途
芯片與寄存器

微機原理筆記——x86寄存器

CS,IP和PC寄存器

評論