物理頁(yè)面大小一級(jí)地址總線(xiàn)寬度不同,頁(yè)表的級(jí)數(shù)也不同。以AArch64運(yùn)行狀態(tài),4KB大小物理頁(yè)面,48位地址寬度為例,頁(yè)表映射的查詢(xún)過(guò)程如圖:
對(duì)于多任務(wù)操作系統(tǒng),每個(gè)用戶(hù)進(jìn)程都擁有獨(dú)立的進(jìn)程地址空間,也有相應(yīng)的頁(yè)表負(fù)責(zé)虛擬地址到物理地址之間的轉(zhuǎn)換。MMU查詢(xún)的過(guò)程中,用戶(hù)進(jìn)程的一級(jí)頁(yè)表的基址存放在TTBR0。操作系統(tǒng)的內(nèi)核空間公用一塊地址空間,MMU查詢(xún)的過(guò)程中,內(nèi)核空間的一級(jí)頁(yè)表基址存放在TTBR1。當(dāng)TLB未命中時(shí),處理器查詢(xún)頁(yè)表的過(guò)程如下:
? 處理器根據(jù)虛擬地址第63位,來(lái)選擇使用TTBR0或者TTBR1。當(dāng)VA[63]為0時(shí),選擇TTBR0,TTBR中存放著L0頁(yè)表的基址。
? 處理器以VA[47:39]作為L(zhǎng)0的索引,在L0頁(yè)表中查找頁(yè)表項(xiàng),L0頁(yè)表有512個(gè)頁(yè)表項(xiàng)。
?L0頁(yè)表的頁(yè)表項(xiàng)中存放著L1頁(yè)表的物理基址。處理器以VA[38:30]作為L(zhǎng)1索引,在L1頁(yè)表中找到相應(yīng)的頁(yè)表項(xiàng),L1頁(yè)表中有512個(gè)頁(yè)表項(xiàng)。
?L1頁(yè)表的頁(yè)表項(xiàng)中存放著L2頁(yè)表的物理基址。處理器以VA[29:21]作為L(zhǎng)2索引,在L2頁(yè)表中找到相應(yīng)的頁(yè)表項(xiàng),L2頁(yè)表中有512個(gè)頁(yè)表項(xiàng)。
?L2頁(yè)表的頁(yè)表項(xiàng)中存放著L3頁(yè)表的物理基址。處理器以VA[20:12]作為L(zhǎng)1索引,在L3頁(yè)表中找到相應(yīng)的頁(yè)表項(xiàng),L3頁(yè)表中有512個(gè)頁(yè)表項(xiàng)。
?L3頁(yè)表的頁(yè)表項(xiàng)里,存放著4KB頁(yè)面的物理基址,然后加上VA[11:0],這樣就構(gòu)成了物理地址,至此處理器完成了一次虛擬地址到物理地址的查詢(xún)與翻譯的工作。
-
處理器
+關(guān)注
關(guān)注
68文章
19740瀏覽量
232871 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7025瀏覽量
124702 -
MMU
+關(guān)注
關(guān)注
0文章
92瀏覽量
18571
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
關(guān)于MMU的一級(jí)頁(yè)表為什么必須是16K對(duì)齊
關(guān)于頁(yè)表和MMU的問(wèn)題
ARM MMU 理解(基于ARM 920T)
MMU沒(méi)映射的地址訪(fǎng)問(wèn)會(huì)怎么處理?
MMU的產(chǎn)生及MMU工作過(guò)程詳解
ARM11 S3C6410的地址表
裸機(jī)加強(qiáng)版MMU章節(jié)頁(yè)表創(chuàng)建,地址映射相同
為什么我把MMU裸機(jī)程序修改成兩級(jí)頁(yè)表后程序編譯時(shí)提示找不到‘memset’函數(shù)?
映射過(guò)程中映射到FPGA上的LUT時(shí)利用率都會(huì)達(dá)到0%是為什么?
ARM的內(nèi)存管理(MMU)是如何實(shí)現(xiàn)的?
鴻蒙內(nèi)核源碼分析(內(nèi)存映射篇):虛擬地址與物理地址之間是如何映射的
詳解ARMv8-A系列CPU的MMU隱射查找過(guò)程
對(duì)MMU和頁(yè)表工作機(jī)制的簡(jiǎn)單評(píng)析

MMU如何知道頁(yè)表在內(nèi)存中的具體地址

MMU中的頁(yè)命中、缺頁(yè)介紹

評(píng)論