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

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

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

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

麥辣雞腿堡 ? 來源:TrustZone ? 作者:Hcoco ? 2023-11-26 15:21 ? 次閱讀

最近一直在學(xué)習(xí)內(nèi)存管理,也知道MMU是管理內(nèi)存的映射的邏輯IP,還知道里面有個TLB。

圖片

今天剛剛好看到了幾篇前輩的文章,很是不錯,于是這里來一起學(xué)習(xí)一下吧。

PART 一:MMU 架構(gòu)篇

MMU(Memory Management Unit,內(nèi)存管理單元)是一種硬件模塊,用于在CPU和內(nèi)存之間實現(xiàn)虛擬內(nèi)存管理。

其主要功能是將虛擬地址轉(zhuǎn)換為物理地址,同時提供訪問權(quán)限的控制和緩存管理等功能。

放在整個大系統(tǒng)多核架構(gòu)里面,每個處理器內(nèi)置了MMU模塊,MMU模塊包含了TLB和TWU兩個子模塊。

圖片

1-宏觀理解

地址空間是一個抽象的概念,由CPU體系架構(gòu)的地址總線決定,一般等同于CPU的尋址范圍、x位處理器中的x。地址空間一般分為 虛擬地址空間 和物理地址空間 。

任何時候,計算機上都存在一個程序能夠訪問的地址集合,我們稱之為地址空間。這個空間的大小由CPU的位數(shù)決定,例如一個32位的CPU,它的地址范圍是0 ~0xFFFFFFFF(4G),而對于一個64位的CPU,它的地址范圍為0 ~ 0xFFFFFFFFFFFFFFFF。

這個空間就是我們的程序能夠產(chǎn)生的地址范圍,我們把這個地址范圍稱為 虛擬地址空間,該空間中的某一個地址我們稱之為虛擬地址。與虛擬地址空間和虛擬地址相對應(yīng)的則是物理地址空間和物理地址,大多數(shù)時候我們的系統(tǒng)所具備的物理地址空間只是虛擬地址空間的一個子集。

舉一個例子,對于一臺內(nèi)存為 256MB的 32bit x86主機來說,它的虛擬地址空間范圍是 0 ~
0xFFFFFFFF(4G),而物理地址空間范圍是 0x000000000 ~ 0x0FFFFFFF(256MB)。

為什么需要這樣的轉(zhuǎn)換呢?其實這個就是現(xiàn)在多進(jìn)程多線程、以及解決內(nèi)存碎片化的途徑。這里就不展開了。

虛擬地址又被簡稱為虛地址,物理地址又被稱為實地址。虛擬地址和物理地址之間的轉(zhuǎn)換,又稱為虛實地址轉(zhuǎn)化。

而這個轉(zhuǎn)換的過程是硬件執(zhí)行的:虛擬地址不是被直接送到內(nèi)存地址總線上,而是送到內(nèi)存管理單元MMU。他由一個或一組芯片組成,一般存在與協(xié)處理器中,其功能是把虛擬地址映射為物理地址。

圖片

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

    關(guān)注

    68

    文章

    10890

    瀏覽量

    212430
  • 計算機
    +關(guān)注

    關(guān)注

    19

    文章

    7525

    瀏覽量

    88331
  • 內(nèi)存管理
    +關(guān)注

    關(guān)注

    0

    文章

    168

    瀏覽量

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

    關(guān)注

    0

    文章

    91

    瀏覽量

    18326
收藏 人收藏

    評論

    相關(guān)推薦

    為什么沒有MMU就無法運行Linux系統(tǒng)呢?

    MMU(Memory Management Unit,內(nèi)存管理單元)是一種硬件模塊,用于在CPU和內(nèi)存之間實現(xiàn)虛擬
    發(fā)表于 08-03 10:05 ?979次閱讀
    為什么沒有<b class='flag-5'>MMU</b>就無法運行Linux系統(tǒng)呢?

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

    平板式的地址映射機制對其操作,或需要使用虛擬地址對其進(jìn)行讀寫;系統(tǒng)中,需引入存儲保護(hù)機制,增強系統(tǒng)的安全性。為適應(yīng)如此復(fù)雜的存儲體系要求, ARM 處理器中引入了存儲管理單元管理存儲系統(tǒng)。一
    發(fā)表于 10-23 15:29

    ARM CoreLink MMU-401系統(tǒng)內(nèi)存管理單元技術(shù)參考手冊

    MMU-401提供管理程序虛擬化多個客戶操作系統(tǒng)所需的地址轉(zhuǎn)換。它通過將操作系統(tǒng)(OS)定義的中間物理地址(IPA)轉(zhuǎn)換為系統(tǒng)管理程序定義的物理地址(PA)來實現(xiàn)這一點。如果需要,MMU
    發(fā)表于 08-02 08:02

    Arm CoreLink MMU?700系統(tǒng)內(nèi)存管理單元技術(shù)參考手冊

    MMU?700是一個系統(tǒng)級內(nèi)存管理單元(SMMU),用于將輸入地址轉(zhuǎn)換為輸出地址。此轉(zhuǎn)換基于MMU?700內(nèi)部寄存器和轉(zhuǎn)換表中可用的地址映射
    發(fā)表于 08-08 07:44

    ARM CORELINK?MMU-600AE系統(tǒng)內(nèi)存管理單元技術(shù)參考手冊

    MMU-600AE是MMU-600系統(tǒng)級內(nèi)存管理單元(SMMU)的功能安全(FUSA)變體,可將輸入地址轉(zhuǎn)換為輸出地址。此轉(zhuǎn)換基于
    發(fā)表于 08-09 06:28

    ARM系統(tǒng)內(nèi)存管理單元架構(gòu)規(guī)范SMMU架構(gòu)2.0版

    ARM系統(tǒng)MMU(SMMU)體系結(jié)構(gòu)為存儲器管理單元(MMU)實施提供了靈活的實施框架,具有多個實施定義的選項。 該體系結(jié)構(gòu)可用于系統(tǒng)級的MMU
    發(fā)表于 08-12 06:25

    ARM 內(nèi)存管理單元MMU詳細(xì)圖解資料

    ARM 內(nèi)存管理單元MMU詳細(xì)圖解資料 本文描述基于存儲器管理單元的系統(tǒng)結(jié)構(gòu), 包含以下內(nèi)容:
    發(fā)表于 03-03 16:22 ?97次下載

    S3C2410內(nèi)存管理單元MMU基礎(chǔ)實驗

    (11)實驗十一:MMU 在理論上概括或解釋MMU,這不是我能勝任的。我僅基于為了理解本實驗中操作MMU的代碼而對MMU做些說明,現(xiàn)在先簡單
    發(fā)表于 01-01 02:29 ?17次下載

    ARM存儲管理單元MMU詳解

    15.5 存儲管理單元MMU 在創(chuàng)建多任務(wù)嵌入式系統(tǒng)時,最好有一個簡單的方式來編寫、裝載及運行各自獨立的任務(wù)。目前大多數(shù)的嵌入式系統(tǒng)不再使用自己定制的控制系統(tǒng),而使用操作系統(tǒng)來簡化這個過程。較高
    發(fā)表于 10-17 16:24 ?4次下載

    ARM920T的MMU與Cache介紹

    CPU通過地址來訪問內(nèi)存中的單元,地址有虛擬地址和物理地址之分,如果CPU沒有MMU(Memory Management Unit,內(nèi)存管理
    發(fā)表于 03-28 11:05 ?14次下載
    ARM920T的<b class='flag-5'>MMU</b>與Cache介紹

    一文解讀內(nèi)存管理單元 (MMU)

    一般MMU會有一種disable的模式,即不使能MMU,所有虛擬地址都直接映射到相應(yīng)的物理地址,VA=PA。
    的頭像 發(fā)表于 07-28 18:09 ?4726次閱讀
    一文解讀<b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b><b class='flag-5'>單元</b> (<b class='flag-5'>MMU</b>)

    為什么沒有MMU就無法運行Linux系統(tǒng)

    MMU(Memory Management Unit,內(nèi)存管理單元)是一種硬件模塊,用于在CPU和內(nèi)存之間實現(xiàn)虛擬
    的頭像 發(fā)表于 04-23 10:48 ?934次閱讀
    為什么沒有<b class='flag-5'>MMU</b>就無法運行Linux系統(tǒng)

    MMU內(nèi)存管理單元的工作原理和作用

    MMU(Memory Management Unit,內(nèi)存管理單元)是一種硬件模塊,用于在CPU和內(nèi)存之間實現(xiàn)虛擬
    的頭像 發(fā)表于 08-03 10:03 ?2494次閱讀
    <b class='flag-5'>MMU</b><b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b><b class='flag-5'>單元</b>的工作原理和作用

    什么是MMU?linux為什么需要MMU?

    內(nèi)存管理方面,MMU可以通過頁面表(Page Table)實現(xiàn)虛擬內(nèi)存管理。頁面表是一種數(shù)據(jù)結(jié)構(gòu),記錄了每個虛擬頁面和其對應(yīng)的物理頁面之間
    發(fā)表于 10-09 11:27 ?1469次閱讀
    什么是<b class='flag-5'>MMU</b>?linux為什么需要<b class='flag-5'>MMU</b>?

    內(nèi)存管理單元的重要功能是什么

    微觀理解 內(nèi)存管理單元MMU)的一個重要功能是使系統(tǒng)能夠運行多個任務(wù),作為獨立的程序運行在他們自己的 私有虛擬
    的頭像 發(fā)表于 11-26 15:36 ?714次閱讀
    <b class='flag-5'>內(nèi)存</b><b class='flag-5'>管理</b><b class='flag-5'>單元</b>的重要功能是什么