ARM存儲器之:存儲管理單元MMU
一級頁表和二級頁表的特征如表15.21所示。
表15.21 一級頁表和二級頁表特征
類型 | 頁表占用的存儲空間 (單位:KB) | 支持的頁大小 (單位:KB) | 頁表項數(shù)目 |
一級頁表 | 16 | 1024 | 4096 |
粗二級頁表 | 1 | 1,4,64 | 1024 |
細二級頁表 | 4 | 1,4,64 | 256 |
(2)傳輸表基地址
當處理器發(fā)出地址請求信號,而其要求的虛擬地址沒有包含在TLB中時,MMU將會初始化一個產(chǎn)生過程。傳輸過程需要的地址轉(zhuǎn)換表——傳輸表的基地址存放在協(xié)處理器寄存器c2中,MMU通過此基地址找到傳輸表,準備一次地址傳輸過程。
(3)基于一級頁表的地址變換過程
基于一級頁表的地址變換過程是指從虛擬地址到物理地址的轉(zhuǎn)換只需要一級頁表就能完成的地址轉(zhuǎn)換。一級頁表地址轉(zhuǎn)換過程如圖15.25所示。
圖15.25一級頁表地址轉(zhuǎn)換過程
圖15.25中,CP15寄存器c2中存放的是內(nèi)存中一級頁表的基地址。因為一級頁表大小為16KB,也就是說,一級頁表是16KB地址對齊的,所以c2中bits[13∶0]=0,bits[31∶14]為內(nèi)存中頁表基地址。
CP15的寄存器c2的bits[31∶14]和虛擬地址的bits[31∶20]結(jié)合作為一個31位數(shù)的高30位值,忽略32位值的最后兩位,可以使用該值從頁表中查到一個4字節(jié)的地址頁表項。
一級頁表支持以下4種類型的頁表項。
·1MB段轉(zhuǎn)換項;
·指向細二級頁表的目錄項;
·指向粗二級頁表的目錄項;
·產(chǎn)生中止異常的錯誤項。
系統(tǒng)通過頁表項的低兩位bits[1:0]來確定頁表項的類型。頁表項的格式要求二級頁表的地址必須與其頁大小的倍數(shù)對齊。一級頁表的各種頁表項的格式如圖15.26所示。
圖15.26一級頁表項
如果bits[1:0]=0b10時,該頁表項為段描述符(SectionDescriptor),段描述符定義了對應的1MB的虛擬存儲空間的地址映射關系。
如果bits[1:0]=0b01時,該頁表項包含了粗二級頁表的物理地址。該粗二級頁表定義了對應的1MB虛擬存儲空間的地址映射關系。它可以實現(xiàn)以大頁和小頁為單位的地址映射。
如果bits[1:0]=0b11時,該頁表項包含了細二級頁表的物理地址。該細二級頁表定義了對應的1MB虛擬存儲空間的地址映射關系。它可以實現(xiàn)以大頁、小頁和極小頁為單位的地址映射。
如果bits[1:0]=0b00時,說明此頁表項是一個錯誤頁表項。它將產(chǎn)生一個存儲頁錯誤。錯誤條件會導致預取指令中止或數(shù)據(jù)中止,這取決于具體的存儲器訪問類型。
存儲器相關文章:存儲器原理
評論