0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MMU内存管理单元的宏观理解

麦辣鸡腿堡 来源:TrustZone 作者:Hcoco 2023-11-26 15:21 次阅读

最近一直在学习内存管理,也知道MMU是管理内存的映射的逻辑IP,还知道里面有个TLB。

图片

今天刚刚好看到了几篇前辈的文章,很是不错,于是这里来一起学习一下吧。

PART 一:MMU 架构篇

MMU(Memory Management Unit,内存管理单元)是一种硬件模块,用于在CPU和内存之间实现虚拟内存管理。

其主要功能是将虚拟地址转换为物理地址,同时提供访问权限的控制和缓存管理等功能。

放在整个大系统多核架构里面,每个处理器内置了MMU模块,MMU模块包含了TLB和TWU两个子模块。

图片

1-宏观理解

地址空间是一个抽象的概念,由CPU体系架构的地址总线决定,一般等同于CPU的寻址范围、x位处理器中的x。地址空间一般分为 虚拟地址空间 和物理地址空间 。

任何时候,计算机上都存在一个程序能够访问的地址集合,我们称之为地址空间。这个空间的大小由CPU的位数决定,例如一个32位的CPU,它的地址范围是0 ~0xFFFFFFFF(4G),而对于一个64位的CPU,它的地址范围为0 ~ 0xFFFFFFFFFFFFFFFF。

这个空间就是我们的程序能够产生的地址范围,我们把这个地址范围称为 虚拟地址空间,该空间中的某一个地址我们称之为虚拟地址。与虚拟地址空间和虚拟地址相对应的则是物理地址空间和物理地址,大多数时候我们的系统所具备的物理地址空间只是虚拟地址空间的一个子集。

举一个例子,对于一台内存为 256MB的 32bit x86主机来说,它的虚拟地址空间范围是 0 ~
0xFFFFFFFF(4G),而物理地址空间范围是 0x000000000 ~ 0x0FFFFFFF(256MB)。

为什么需要这样的转换呢?其实这个就是现在多进程多线程、以及解决内存碎片化的途径。这里就不展开了。

虚拟地址又被简称为虚地址,物理地址又被称为实地址。虚拟地址和物理地址之间的转换,又称为虚实地址转化。

而这个转换的过程是硬件执行的:虚拟地址不是被直接送到内存地址总线上,而是送到内存管理单元MMU。他由一个或一组芯片组成,一般存在与协处理器中,其功能是把虚拟地址映射为物理地址。

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10451

    浏览量

    206583
  • 计算机
    +关注

    关注

    19

    文章

    6652

    浏览量

    84573
  • 内存管理
    +关注

    关注

    0

    文章

    163

    浏览量

    14057
  • MMU
    MMU
    +关注

    关注

    0

    文章

    91

    浏览量

    17946
收藏 人收藏

    评论

    相关推荐

    为什么没有MMU就无法运行Linux系统呢?

    MMU(Memory Management Unit,内存管理单元)是一种硬件模块,用于在CPU和内存之间实现虚拟
    发表于 08-03 10:05 552次阅读
    为什么没有<b class='flag-5'>MMU</b>就无法运行Linux系统呢?

    ARM的内存管理MMU)是如何实现的?

    平板式的地址映射机制对其操作,或需要使用虚拟地址对其进行读写;系统中,需引入存储保护机制,增强系统的安全性。为适应如此复杂的存储体系要求, ARM 处理器中引入了存储管理单元管理存储系统。一
    发表于 10-23 15:29

    ARM CoreLink MMU-401系统内存管理单元技术参考手册

    MMU-401提供管理程序虚拟化多个客户操作系统所需的地址转换。它通过将操作系统(OS)定义的中间物理地址(IPA)转换为系统管理程序定义的物理地址(PA)来实现这一点。如果需要,MMU
    发表于 08-02 08:02

    Arm CoreLink MMU‑700系统内存管理单元技术参考手册

    MMU‑700是一个系统级内存管理单元(SMMU),用于将输入地址转换为输出地址。此转换基于MMU‑700内部寄存器和转换表中可用的地址映射
    发表于 08-08 07:44

    ARM CORELINK™MMU-600AE系统内存管理单元技术参考手册

    MMU-600AE是MMU-600系统级内存管理单元(SMMU)的功能安全(FUSA)变体,可将输入地址转换为输出地址。此转换基于
    发表于 08-09 06:28

    ARM系统内存管理单元架构规范SMMU架构2.0版

    ARM系统MMU(SMMU)体系结构为存储器管理单元(MMU)实施提供了灵活的实施框架,具有多个实施定义的选项。 该体系结构可用于系统级的MMU
    发表于 08-12 06:25

    ARM 内存管理单元MMU详细图解资料

    ARM 内存管理单元MMU详细图解资料 本文描述基于存储器管理单元的系统结构, 包含以下内容:
    发表于 03-03 16:22 94次下载

    S3C2410内存管理单元MMU基础实验

    (11)实验十一:MMU 在理论上概括或解释MMU,这不是我能胜任的。我仅基于为了理解本实验中操作MMU的代码而对MMU做些说明,现在先简单
    发表于 01-01 02:29 17次下载

    ARM存储管理单元MMU详解

    15.5 存储管理单元MMU 在创建多任务嵌入式系统时,最好有一个简单的方式来编写、装载及运行各自独立的任务。目前大多数的嵌入式系统不再使用自己定制的控制系统,而使用操作系统来简化这个过程。较高
    发表于 10-17 16:24 4次下载

    STM32 内存分配解析及变量的存储位置

    在一些桌面程序中,整个内存映射是通过虚拟内存来进行管理的,使用一种称为内存管理单元(
    发表于 02-09 10:41 3次下载
    STM32 <b class='flag-5'>内存</b>分配解析及变量的存储位置

    Linux内核虚拟内存管理中的mmu_gather操作

    本文讲解Linux内核虚拟内存管理中的mmu_gather操作,看看它是如何保证刷tlb和释放物理页的顺序的,又是如何将更多的页面聚集起来统一释放的。
    的头像 发表于 05-20 14:37 1609次阅读

    一文解读内存管理单元 (MMU)

    一般MMU会有一种disable的模式,即不使能MMU,所有虚拟地址都直接映射到相应的物理地址,VA=PA。
    的头像 发表于 07-28 18:09 3963次阅读
    一文解读<b class='flag-5'>内存</b><b class='flag-5'>管理</b><b class='flag-5'>单元</b> (<b class='flag-5'>MMU</b>)

    为什么没有MMU就无法运行Linux系统

    MMU(Memory Management Unit,内存管理单元)是一种硬件模块,用于在CPU和内存之间实现虚拟
    的头像 发表于 04-23 10:48 587次阅读
    为什么没有<b class='flag-5'>MMU</b>就无法运行Linux系统

    MMU内存管理单元的工作原理和作用

    MMU(Memory Management Unit,内存管理单元)是一种硬件模块,用于在CPU和内存之间实现虚拟
    的头像 发表于 08-03 10:03 1357次阅读
    <b class='flag-5'>MMU</b><b class='flag-5'>内存</b><b class='flag-5'>管理</b><b class='flag-5'>单元</b>的工作原理和作用

    内存管理单元的重要功能是什么

    微观理解 内存管理单元MMU)的一个重要功能是使系统能够运行多个任务,作为独立的程序运行在他们自己的 私有虚拟
    的头像 发表于 11-26 15:36 264次阅读
    <b class='flag-5'>内存</b><b class='flag-5'>管理</b><b class='flag-5'>单元</b>的重要功能是什么