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