0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者:Vincent ? 2023-10-08 11:52 ? 次閱讀

MMU怎么知道這個(gè)頁(yè)表在內(nèi)存中的具體地址呢?

通常CPU會(huì)提供一個(gè)頁(yè)表基址寄存器操作系統(tǒng)使用,用于給MMU指示頁(yè)表的基地址。不同處理器架構(gòu)對(duì)應(yīng)的寄存器也不一樣:

x86:CR3(Control Register 3)

ARM-v8:系統(tǒng)寄存器TTBR(Translation Table Base egister)

RISC-V:SATP(Supervisor Address Translation and Protection)

圖片

頁(yè)表基址寄存器存儲(chǔ)了第一級(jí)頁(yè)表的基地址,通過訪問該寄存器,就能知道頁(yè)表在那個(gè)位置。

多級(jí)頁(yè)表轉(zhuǎn)換過程

實(shí)際使用中,都是用多級(jí)頁(yè)表來存儲(chǔ)虛擬地址和物理地址的映射關(guān)系,

以二級(jí)頁(yè)表為例(假設(shè)是32位系統(tǒng)),其虛擬地址轉(zhuǎn)換為物理地址的過程如圖所示:

圖片

PGD:Pgea Global Directory,全局頁(yè)目錄,存儲(chǔ)了下一級(jí)頁(yè)表的基地址

PTE:Page Table Entrys,頁(yè)表入口,PTE才是真正存儲(chǔ)了物理地址的頁(yè)表

VA到PA的轉(zhuǎn)換過程:

MMU通過訪問頁(yè)表基址寄存器,得到一級(jí)頁(yè)表PGD的基地址,再結(jié)合虛擬地址中的PGD index找到了下一級(jí)頁(yè)表PTE的基地址;得到了PTE的基址,再結(jié)合虛擬地址中的PTE index找到PFN,然后再和VA相加得到物理地址。

這里需要注意,使用多少級(jí)的頁(yè)表、以及虛擬地址、物理地址的格式、PTE的格式等等,與32系統(tǒng)還是64位系統(tǒng)有關(guān),也與處理器的架構(gòu)有關(guān),需要根據(jù)不同系統(tǒng)、不同處理器架構(gòu)分析。

但是MMU工作原理都是一樣的,不管是二級(jí)頁(yè)表、三級(jí)頁(yè)表還是四級(jí)頁(yè)表,都是通過第一級(jí)頁(yè)表找到第二級(jí)頁(yè)表,通過第二級(jí)頁(yè)表找到第三級(jí)頁(yè)表。最終找到物理地址。只要明白了MMU的工作原理,分析其他的頁(yè)表也是大同小異。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5343

    瀏覽量

    120385
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11304

    瀏覽量

    209543
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3025

    瀏覽量

    74060
  • MMU
    MMU
    +關(guān)注

    關(guān)注

    0

    文章

    91

    瀏覽量

    18300
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    關(guān)于頁(yè)MMU的問題

    剛開始學(xué),好多東西都云里霧里的TT為什么在bootloader里要進(jìn)行頁(yè)初始化然后開啟MMU,然后在進(jìn)入內(nèi)核后還要?jiǎng)?chuàng)建頁(yè)開啟
    發(fā)表于 05-06 17:25

    帶你走進(jìn)嵌入式ARM MMU神秘的內(nèi)部世界

    頁(yè)表項(xiàng),2bit可以區(qū)分4種頁(yè)表項(xiàng),具體每種頁(yè)表項(xiàng)的結(jié)構(gòu)如下: 簡(jiǎn)而言之L1頁(yè)
    發(fā)表于 08-22 11:22

    ARM MMU 理解(基于ARM 920T)

    、4KB和1KB大小地址空間的映射。要實(shí)現(xiàn)從虛擬地址到物理地址的映射,必然會(huì)遇到一個(gè)問題,如何找到這個(gè)頁(yè)。對(duì)于
    發(fā)表于 08-29 11:10

    MMU的產(chǎn)生及MMU工作過程詳解

    送到內(nèi)存地址總線上,而是送到內(nèi)存管理單元——MMU(主角終于出現(xiàn)了)。他由一個(gè)或一組芯片組成,一般存在與協(xié)處理器,其功能是把虛擬地址映射為
    發(fā)表于 07-03 08:19

    ARM11 S3C6410的地址

    存放二級(jí)頁(yè)的基址; 二級(jí)頁(yè)基址+ VA[19:12] = 二級(jí)頁(yè)描述符的入口
    發(fā)表于 08-17 00:53

    裸機(jī)加強(qiáng)版MMU章節(jié)頁(yè)創(chuàng)建,地址映射相同

    ARM裸機(jī)1期加強(qiáng)版 024_mmu_cache_021\002_mmu_021_004\mmu.c 文件/* 2.3 for 64M sdram */創(chuàng)建頁(yè)
    發(fā)表于 04-18 07:45

    CC2541燒寫加密設(shè)置的具體地址在哪里?

    structure具體地址是在哪里呢?我在0x7FF0和0xFFF0地址都試過填寫加密位,讀取的加密狀態(tài)都為0(DBGLOCK設(shè)置為0);2.Flash一共128頁(yè)(0~127),但是FLASH_PAGES-1:0最多只有12
    發(fā)表于 09-23 08:53

    ARM的內(nèi)存管理(MMU)是如何實(shí)現(xiàn)的?

    ( translate table )是實(shí)現(xiàn) MMU 功能不可缺少的一步。頁(yè)是位于系統(tǒng)的內(nèi)存頁(yè)
    發(fā)表于 10-23 15:29

    鴻蒙內(nèi)核源碼分析(內(nèi)存映射篇):虛擬地址與物理地址之間是如何映射的

    和常量數(shù)據(jù),全局變量數(shù)據(jù)以及運(yùn)行時(shí)動(dòng)態(tài)申請(qǐng)內(nèi)存所分配的實(shí)際物理內(nèi)存存放位置。MMU采用頁(yè)(page table)來實(shí)現(xiàn)虛實(shí)
    發(fā)表于 11-19 10:52

    對(duì)MMU頁(yè)表工作機(jī)制的簡(jiǎn)單評(píng)析

    對(duì)于一個(gè)有MMU的CPU而言,MMU開啟后,CPU是這樣尋址的:CPU任何時(shí)候,一切時(shí)候,發(fā)出的地址都是虛擬地址,這個(gè)虛擬地址發(fā)給
    的頭像 發(fā)表于 02-02 14:08 ?1.1w次閱讀
    對(duì)<b class='flag-5'>MMU</b>和<b class='flag-5'>頁(yè)</b>表工作機(jī)制的簡(jiǎn)單評(píng)析

    為什么要用MMU?為什么要用虛擬地址

    既然MMU開啟后,硬件會(huì)自動(dòng)的將虛擬地址轉(zhuǎn)換成物理地址,那么還需要我們軟件做什么事情呢?即創(chuàng)建一個(gè)頁(yè)翻譯都需要做哪些事情呢?或者說啟用一個(gè)
    的頭像 發(fā)表于 04-26 14:37 ?4944次閱讀

    MMU原理:CPU是如何訪問到內(nèi)存的?

    當(dāng)CPU訪問虛擬地址0的時(shí)候,MMU會(huì)去查上面頁(yè)的第0行,發(fā)現(xiàn)第0行沒有命中,于是無(wú)論以何種形式(R讀,W寫,X執(zhí)行)訪問,MMU都會(huì)給C
    發(fā)表于 11-09 12:30 ?1193次閱讀
    <b class='flag-5'>MMU</b>原理:CPU是如何訪問到<b class='flag-5'>內(nèi)存</b>的?

    MMU內(nèi)存管理單元的宏觀理解

    最近一直在學(xué)習(xí)內(nèi)存管理,也知道MMU是管理內(nèi)存的映射的邏輯IP,還知道里面有個(gè)TLB。 今天剛剛好看到了幾篇前輩的文章,很是不錯(cuò),于是這里來
    的頭像 發(fā)表于 11-26 15:21 ?597次閱讀
    <b class='flag-5'>MMU</b><b class='flag-5'>內(nèi)存</b>管理單元的宏觀理解

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

    頁(yè)命中、缺頁(yè) (1)頁(yè)命中 ? a) 處理器要對(duì)虛擬地址VA進(jìn)行訪問。 ? b) MMU的TLB沒有命中,通過TWU遍歷主存頁(yè)
    的頭像 發(fā)表于 11-26 16:19 ?1130次閱讀
    <b class='flag-5'>MMU</b><b class='flag-5'>中</b>的<b class='flag-5'>頁(yè)</b>命中、缺頁(yè)介紹

    MMU多級(jí)頁(yè)映射過程

    空間,也有相應(yīng)的頁(yè)負(fù)責(zé)虛擬地址到物理地址之間的轉(zhuǎn)換。MMU查詢的過程,用戶進(jìn)程的一級(jí)
    的頭像 發(fā)表于 11-26 16:28 ?965次閱讀
    <b class='flag-5'>MMU</b>多級(jí)<b class='flag-5'>頁(yè)</b><b class='flag-5'>表</b>映射過程