本文我們展示一個只有一級頁表,虛擬地址轉換為物理地址的示例。
其中VA為32比特(共4GB地址空間),每個頁大小為1MB,所以一共4096個頁表項。
每個頁表項指向的都是1MB頁表大小的頁表項,其中會給出物理地址的高位比特([31:20])。
上圖中的頁表基地址Translation Table Base Address(TTBA)是由軟件指定的。當MMU執行硬件頁表轉換時,需要根據頁表的基地址和VA[31:20] index獲取VA-PA映射關系,以頁表粒度完成VA-PA的轉換,例如1MB粒度,那么
VA[19:0]=PA[19:0]
上圖中頁表的基地址為0x12300000,每個頁表項的大小為4Byte,VA為0x00100000,高12比特(0x001)作為頁表的索引index。所以這個VA-PA需要使用到的頁表項存儲地址為
Base addr + 0x001 * 4 bytes = 0x12300004
最后,根據拿到的VA-PA映射關系就可以拿到PA了,具體的頁表格式根據不同的實現而異。
上圖是個示例的32比特頁表格式,根據低2比特確定這個頁表項的類型。
2`b00:invalid 頁表,上報異常,由軟件處理。
2`b10:指向的是物理地址。
2`b01:指向的是下一級頁表的基地址。
假設低2比特為2’b10,那么這個頁表項中的內容就是實際指向的物理地址。頁表項中除了指定了物理地址,還包含了頁的內存屬性(訪問權限、cache屬性、buffer屬性等等)。
簡單來說就是指定了訪問物理地址空間所需的全部信息。
審核編輯:劉清
-
存儲
+關注
關注
13文章
4261瀏覽量
85669 -
Cache
+關注
關注
0文章
129瀏覽量
28297 -
內存交換
+關注
關注
0文章
2瀏覽量
6356
發布評論請先 登錄
相關推薦
評論