本文我們展示一個只有一級頁表,虛擬地址轉(zhuǎn)換為物理地址的示例。
其中VA為32比特(共4GB地址空間),每個頁大小為1MB,所以一共4096個頁表項。
每個頁表項指向的都是1MB頁表大小的頁表項,其中會給出物理地址的高位比特([31:20])。
上圖中的頁表基地址Translation Table Base Address(TTBA)是由軟件指定的。當(dāng)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文章
4180瀏覽量
85498 -
Cache
+關(guān)注
關(guān)注
0文章
129瀏覽量
28233 -
內(nèi)存交換
+關(guān)注
關(guān)注
0文章
2瀏覽量
6353
發(fā)布評論請先 登錄
相關(guān)推薦
評論