關於MMU的頁表的理解 (轉)
MMU的主要軟體配置和控制模組有:頁表;轉換旁路緩衝器(TLB);域和訪問許可權;cache和寫緩衝器;CP15:c1控制暫存器;快速上下文切換擴充套件。
ARMMMU硬體採用2級頁表結構:一級頁表(L1)和二級頁表(L2)
一級頁表只有一個L1主頁表(L1 master page table)。L1主頁表包含2中型別的頁表項:儲存指向二級頁表起始地址指標的頁表項和儲存用於轉換1MB的頁的頁表項。L1主頁表也稱為段頁表(section page table)。
L1主頁表將4GB的地址空間劃分為4096個1MB的段(section)。L1主頁表既可作為L2頁表的頁目錄,也可作為用於轉換1MB
當L1頁表作為頁目錄時,其頁表項(PTE)包含的就是1MB虛擬空間的L2粗(coarse)頁表或L2細(fine)頁表的指標;當L1頁表用於轉換一個1MB的段時,其頁表項(PTE)包含的就是物理儲存器中1MB頁幀(page frame)的首地址。
一個L2粗頁表有256(1MB/4KB)個頁表項,佔用1KB的主存空間,每個頁表項將一個4KB的虛擬儲存塊轉換成一個4KB的物理儲存塊。粗頁表支援4KB或64KB的頁,頁表項包含的是4KB或64KB的頁幀的首地址。如果轉換的是一個64KB的頁,對於每個64KB的頁,同一個頁表必須在頁表中重複16次。
一個L2細頁表有1024
一級頁表支援4種類型的頁表項:
1MB段轉換項;(指向一個1MB的儲存段)
指向L2細頁表的目錄項;(包含一個L2細頁表首地址的指標,同時包含L1表項代表的1MB虛存段的域資訊。細頁表必須與4KB的倍數地址對齊)
指向L2粗頁表的目錄項;(粗頁表必須與1KB的倍數地址對齊)
產生中止異常的錯誤項。
二級頁表有4種類型的頁表項:
定義64KB頁幀屬性的大(large)頁表項;(包含一個64KB
定義4KB頁幀屬性的小(small)頁表項;
定義1KB頁幀屬性的微(tiny)頁表項;
訪問時產生頁錯中止異常的錯誤頁表項。
(注意區別大頁,小頁,微頁和粗頁表,細頁表)
虛實地址轉換
1.單步頁表搜尋(搜尋1MB大小的段頁,存放在L1主頁表中)
圖 1MB段L1頁表虛實地址轉換
2.二步頁表搜尋(搜尋的是大小為1KB,4KB,16KB,64KB的頁)
第1步,用L1偏移量部分索引L1頁表項,找到虛擬地址的L1頁表項(1級描述符)。
第2步,將L2偏移量部分合併到第一步找到的L2也表的基地址,將得到的地址用來選擇包含所搜尋頁的轉換資料的頁表項。基地址與虛擬地址的偏移量部分合並起來組成所請求的物理儲存器地址。
圖 基於微頁的二級虛實地址轉換