本文我們展示一個(gè)只有一級(jí)頁表,虛擬地址轉(zhuǎn)換為物理地址的示例。
其中VA為32比特(共4GB地址空間),每個(gè)頁大小為1MB,所以一共4096個(gè)頁表項(xiàng)。
每個(gè)頁表項(xiàng)指向的都是1MB頁表大小的頁表項(xiàng),其中會(huì)給出物理地址的高位比特([31:20])。

上圖中的頁表基地址Translation Table Base Address(TTBA)是由軟件指定的。當(dāng)MMU執(zhí)行硬件頁表轉(zhuǎn)換時(shí),需要根據(jù)頁表的基地址和VA[31:20] index獲取VA-PA映射關(guān)系,以頁表粒度完成VA-PA的轉(zhuǎn)換,例如1MB粒度,那么
VA[19:0]=PA[19:0]
上圖中頁表的基地址為0x12300000,每個(gè)頁表項(xiàng)的大小為4Byte,VA為0x00100000,高12比特(0x001)作為頁表的索引index。所以這個(gè)VA-PA需要使用到的頁表項(xiàng)存儲(chǔ)地址為
Base addr + 0x001 * 4 bytes = 0x12300004

最后,根據(jù)拿到的VA-PA映射關(guān)系就可以拿到PA了,具體的頁表格式根據(jù)不同的實(shí)現(xiàn)而異。

上圖是個(gè)示例的32比特頁表格式,根據(jù)低2比特確定這個(gè)頁表項(xiàng)的類型。
2`b00:invalid 頁表,上報(bào)異常,由軟件處理。
2`b10:指向的是物理地址。
2`b01:指向的是下一級(jí)頁表的基地址。
假設(shè)低2比特為2’b10,那么這個(gè)頁表項(xiàng)中的內(nèi)容就是實(shí)際指向的物理地址。頁表項(xiàng)中除了指定了物理地址,還包含了頁的內(nèi)存屬性(訪問權(quán)限、cache屬性、buffer屬性等等)。
簡(jiǎn)單來說就是指定了訪問物理地址空間所需的全部信息。
審核編輯:劉清
-
存儲(chǔ)
+關(guān)注
關(guān)注
13文章
4793瀏覽量
90075 -
Cache
+關(guān)注
關(guān)注
0文章
130瀏覽量
29714 -
內(nèi)存交換
+關(guān)注
關(guān)注
0文章
2瀏覽量
6478
發(fā)布評(píng)論請(qǐng)先 登錄
線性技術(shù)LTC4316:I2C/SMBus地址轉(zhuǎn)換器的卓越之選
Linux內(nèi)核大塊內(nèi)存申請(qǐng):從場(chǎng)景到落地全解析
【「Linux 設(shè)備驅(qū)動(dòng)開發(fā)(第 2 版)」閱讀體驗(yàn)】充分發(fā)揮硬件潛力
RK平臺(tái)Linux IOMMU開發(fā):從原理到實(shí)戰(zhàn)
【「Linux 設(shè)備驅(qū)動(dòng)開發(fā)(第 2 版)」閱讀體驗(yàn)】+讀深入理解Linux內(nèi)核內(nèi)存分配
FLASH中的代碼是如何得到運(yùn)行的呢
網(wǎng)絡(luò)通訊的結(jié)構(gòu)及地址
請(qǐng)問e203定義的地址空間是虛擬地址還是物理地址?
關(guān)于系統(tǒng)鏈接腳本的介紹
從零開始學(xué)IP地址
芯知識(shí)|WT2003H語音芯片音頻地址詳解:一線/UART模式差異及靜音地址實(shí)踐
TECS OpenStack資源池虛擬機(jī)網(wǎng)絡(luò)二層地址無法互通的問題處理
季豐推出SRAM錯(cuò)誤地址定位黑科技
一級(jí)頁表虛擬地址轉(zhuǎn)換為物理地址示例
評(píng)論