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

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

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

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