RM新时代网站-首页

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

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

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

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

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

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

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

x86:CR3(Control Register 3)

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

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

圖片

頁表基址寄存器存儲了第一級頁表的基地址,通過訪問該寄存器,就能知道頁表在那個位置。

多級頁表轉(zhuǎn)換過程

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

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

圖片

PGD:Pgea Global Directory,全局頁目錄,存儲了下一級頁表的基地址

PTE:Page Table Entrys,頁表入口,PTE才是真正存儲了物理地址的頁表

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

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

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

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

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

    關(guān)注

    31

    文章

    5336

    瀏覽量

    120230
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

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

    關(guān)注

    8

    文章

    3019

    瀏覽量

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

    關(guān)注

    0

    文章

    91

    瀏覽量

    18283
收藏 人收藏

    評論

    相關(guān)推薦

    關(guān)于MMU的問題

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

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

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

    ARM MMU 理解(基于ARM 920T)

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

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

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

    ARM11 S3C6410的地址

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

    裸機加強版MMU章節(jié)創(chuàng)建,地址映射相同

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

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

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

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

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

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

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

    MMU表工作機制的簡單評析

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

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

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

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

    當(dāng)CPU訪問虛擬地址0的時候,MMU會去查上面的第0行,發(fā)現(xiàn)第0行沒有命中,于是無論以何種形式(R讀,W寫,X執(zhí)行)訪問,MMU都會給C
    發(fā)表于 11-09 12:30 ?1182次閱讀
    <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,還知道里面有個TLB。 今天剛剛好看到了幾篇前輩的文章,很是不錯,于是這里來
    的頭像 發(fā)表于 11-26 15:21 ?582次閱讀
    <b class='flag-5'>MMU</b><b class='flag-5'>內(nèi)存</b>管理單元的宏觀理解

    MMU命中、缺頁介紹

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

    MMU多級映射過程

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