ARM Cortex-A学习(3):MMU内存管理单元

这篇具有很好参考价值的文章主要介绍了ARM Cortex-A学习(3):MMU内存管理单元。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

内存管理单元(MMU)负责虚拟地址到物理地址的转换。MMU通过翻译表将程序使用的虚拟地址映射到实际的物理内存位置,实现对内存的动态管理和隔离。这不仅允许更灵活的内存分配,还提高了系统的安全性和稳定性。了解MMU的工作原理对于开发底层代码、BootLoader和驱动程序都很重要。

1 虚拟地址和物理地址

关于虚拟地址的概念,可以参考我的这篇文章:物理地址、链接地址、加载地址、虚拟/逻辑地址的区别

虚拟地址允许操作系统控制呈现给应用程序的内存视图,如操作系统可以控制内存的可见性和访问权限。这使得操作系统能够对应用程序进行沙盒化,并提供对底层硬件的抽象。它的好处如下:

  • 操作系统可以将多个分散的物理内存区域呈现为一个连续的虚拟地址空间供应用程序使用。

  • 软件开发人员无需关心物理内存,地址转换是由操作系统和硬件共同完成的。

在实际应用中,每个应用程序可以使用自己的一组虚拟地址,将其映射到物理系统中的不同位置。当操作系统将控制权从一个应用程序转移到另一个应用程序时,它会更新内部的映射表,以确保当前运行的应用程序的虚拟地址正确地映射到物理内存中的相应位置。这样,即使不同应用程序使用相同的虚拟地址,它们实际上指向不同的物理内存位置,从而实现了应用程序之间的隔离和独立性。

虚拟地址和物理地址之间通过翻译页表进行映射:

arm cortex-ax mmu,ARM,arm开发,学习

翻译页表存储在内存中,通常由操作系统进行管理。页表的映射可以通过软件配置,从而改变虚拟地址和物理地址之间的映射关系。

2 MMU

MMU执行地址转换操作,它包含以下组成部分:

  • 表遍历单元:包含从内存读取翻译页表的逻辑
  • 翻译后备缓冲区(TLBs,Translation Lookaside Buffers):用于缓存最近使用的页表翻译转换结果,这可以加快内存的访问速度

由软件发出的内存地址都是虚拟的,虚拟地址传递给MMUMMU检查TLBs缓存,若缓存未命中,则表遍历单元将从主存中读取数据并缓存,如下所示:

arm cortex-ax mmu,ARM,arm开发,学习

在访问内存之前,虚拟地址必须被翻译为物理地址。另外,在Armv6及更高版本的处理器上,数据缓存使用物理地址(物理标记的地址)存储数据。所以,在进行缓存查找时,需要提前将虚拟地址翻译为物理地址。

2.1 表的条目

翻译页表通过将虚拟地址空间分成相等大小的块,并为每个块在表中提供一个条目来实现。

  • 翻译表的每个条目对应着虚拟地址空间中的一个块,而这些块会被映射到物理地址空间的相应块。
  • 表中的第0个条目对应着虚拟地址空间中的块0,第1个条目对应着块1,以此类推。
  • 表中条目包含相应物理内存块的地址以及访问该物理地址时要使用的属性(如读/写/缓存策略等)。

arm cortex-ax mmu,ARM,arm开发,学习

2.2 表的查找

表查找发生在虚拟地址转化为物理地址的时候。此时,由软件发出的虚拟地址被分为两部分:

arm cortex-ax mmu,ARM,arm开发,学习

上图为单层查找的例子。其中:

  • Which entry:应该查找哪个块条目,并将其用作对表的索引,该块条目包含虚拟地址对应的物理地址
  • Offset in block:块内的偏移,翻译过程中不会改变

2.3 多级页表

在2.1中的图为单级查找,虚拟地址空间被分割成相等的大小。但在实际的页表实现中是使用多级页表实现的。

一级表将虚拟地址空间分割成大块,该表中的每个条目可以指向相等大小的物理内存块,或者它可以指向另一个表,该表将块细分为更小的块。下图是三级多级页表的示例:

arm cortex-ax mmu,ARM,arm开发,学习

在Armv8-A架构中,多级表的最大级别为四级(0到3)。虚拟地址空间被划分为不同级别的表,第一级表负责将虚拟地址空间分成大块,而每个表项可以指向相等大小的物理内存块,或者指向另一个表,该表将块细分为更小的块。这种多级结构的设计使得系统可以同时处理大范围的内存块和较小的内存块,从而在灵活性和效率之间找到平衡。

  • 大块相对于小块需要更少的读取级别来进行转换,大块在TLB中缓存更高效
  • 小块使软件能够对内存分配进行精细控制,但小块在TLB中的缓存效率较低,因为小块需要通过多个级别进行多次读取以进行转换
  • 为了平衡使用大映射的效率与使用小映射的灵活性以获得最佳性能,操作系统必须管理这种权衡

3 例:ARMv8-A的地址空间

不同的异常等级(Exception Level,EL)通常对应于不同的特权级别和内存空间。每个EL都有其自己的地址空间和访问权限。这种设计提供了对系统资源的分隔和管理,同时允许在不同特权级别上运行不同的软件实体,如用户空间应用程序、操作系统内核、虚拟化管理器等。

这里以ARMv8-A为例,在ARMv8-A架构中有以下4种EL

  • EL0(用户空间): 通常用于运行普通应用程序代码,访问受限制的用户空间内存。
  • EL1(内核空间): 用于运行操作系统内核代码,具有更高的特权级别和对系统资源的更广泛访问权限。
  • EL2(hypervisor级别): 通常用于虚拟化支持,允许运行多个虚拟机实例。它有自己的地址空间和控制权,可以管理虚拟机的运行。
  • EL3(监管者级别): 可能用于处理一些与系统安全性相关的任务,例如启动过程中的安全任务。它也有自己的地址空间和特权级别。

arm cortex-ax mmu,ARM,arm开发,学习

  • 图中EL前面的NS表示Non-Secure,图表中未显示Secure EL0Secure EL1Secure EL2的虚拟地址空间,实际上EL0-EL3也是有安全空间的。

  • 由于存在多个虚拟地址空间,指定一个地址属于哪个地址空间变得很重要

    • 例如,NS.EL2:0x8000指的是在非安全hypervisor级别(NS.EL2)的虚拟地址空间中的0x8000。在其它的EL中也可以有自己的0x8000.

虚拟化

从上图还可知,Non-secure EL0Non-secure EL1的虚拟地址经过两组表。这些表支持虚拟化,并允许hypervisor(即虚拟机监控程序,位于NS.EL2)虚拟化虚拟机所看到的物理内存视图。

虚拟化分为两个阶段:

(1)第一阶段:表由操作系统控制,它将虚拟地址翻译为中间物理地址(intermediate physical addresses,IPA)。在第一阶段中,操作系统认为这些IPAs是物理地址空间。

(2)第二阶段:虚拟机监控程序(hypervisor)控制第二组翻译,它将IPAs翻译为物理地址

arm cortex-ax mmu,ARM,arm开发,学习

尽管表格格式存在细微的差异,但通常阶段1和2的地址翻译过程是相同的。

4 总结

本文大概地介绍了一下ARM中MMU的概念,主要是了解一下在Cortex-A核中有这样一个内存管理单元,它可以将虚拟地址转化为物理地址。对于具体地,内存是如何映射的,TLB表格是如何缓存的等知识,都与操作系统的实现有关,后续我们学到Linux再介绍。文章来源地址https://www.toymoban.com/news/detail-812066.html

到了这里,关于ARM Cortex-A学习(3):MMU内存管理单元的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何评估现代处理器的性能——以ARM Cortex-A53为例

    现代处理器内核的性能可以从以下几个方面进行评估: 时钟速度(Clock Speed):它是CPU内部时钟发生器的频率,以赫兹(Hz)为单位。时钟速度越高,每秒钟内执行的指令数就越多,因此性能也会更好。 指令级并行性(ILP):现代处理器采用了一些技术来提高指令级并行性,

    2024年02月03日
    浏览(67)
  • NXP i.MX 8M Plus工业开发板硬件说明书( 四核ARM Cortex-A53 + 单核ARM Cortex-M7,主频1.6GHz)

    本文主要介绍创龙科技TLIMX8MP-EVM评估板硬件接口资源以及设计注意事项等内容。 创龙科技TLIMX8MP-EVM是一款基于NXP i.MX 8M Plus的四核ARM Cortex-A53 + 单核ARM Cortex-M7异构多核处理器设计的高性能工业评估板,由核心板和评估底板组成。ARM Cortex-A53(64-bit)主处理单元主频高达1.6GHz,ARM

    2024年02月11日
    浏览(84)
  • NXP i.MX 8M Mini工业核心板硬件说明书(四核ARM Cortex-A53 + 单核ARM Cortex-M4,主频1.6GHz)

    创龙科技SOM-TLIMX8是一款基于NXP i.MX 8M Mini的四核ARM Cortex-A53 + 单核ARM Cortex-M4异构多核处理器设计的高端工业级核心板,ARM Cortex-A53(64-bit)主处理单元主频高达1.6GHz,ARM Cortex-M4实时处理单元主频高达400MHz。处理器采用14nm最新工艺,支持1080P60 H.264视频硬件编解码、1080P60 H.265视频硬

    2024年02月11日
    浏览(46)
  • OpenCV交叉编译—arm(imx6ull,Cortex-A7)

    opencv - 4.2.0(opencv4.5.4版本在交叉编译时会报错) Ubuntu - 20.04 64位 gcc version 4.9.4 (Linaro GCC 4.9-2017.01) arm板:imx6ull, Cortex - A7 内核挂载:nfs+SecureCRT 1、下载 2、选择路径 根据自己Ubuntu来下载,下载完以后复制到自己要安装的路径,也可以不移动。 完成以后使用命令解压: 3、解压

    2024年02月06日
    浏览(41)
  • Xilinx XCZU7EV评估板规格书(四核ARM Cortex-A53 + 双核ARM Cortex-R5 + FPGA,主频1.5GHz)

    创龙科技TLZU-EVM是一款基于Xilinx UltraScale+ MPSoC系列XCZU7EV高性能处理器设计的高端异构多核SoC评估板,处理器集成PS端(四核ARM Cortex-A53 + 双核ARM Cortex-R5) + PL端UltraScale+架构可编程逻辑资源,支持4K@60fps H.264/H.265视频硬件编解码,并支持SATA大容量存储接口,评估板由核心板与评

    2024年02月11日
    浏览(42)
  • 【ARM】Day9 cortex-A7核I2C实验(采集温湿度)

     1. 2、编写IIC协议,采集温湿度值 iic.h si7006.h iic.c si7006.c main.c 运行结果: 2.思维导图  

    2024年02月11日
    浏览(34)
  • TI AM64x开发板规格书(双核ARM Cortex-A53 + 单/四核Cortex-R5F + 单核Cortex-M4F,主频1GHz)

    创龙科技TL64x-EVM是一款基于TI Sitara系列AM64x双核ARM Cortex-A53 + 单/四核Cortex-R5F + 单核Cortex-M4F多核处理器设计的高性能评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,高性能低功耗,稳定可靠,可满足各种工业应用环境。 评估板接口资源丰富,

    2024年02月11日
    浏览(109)
  • 【资料分享】RK3568核心板规格书(4x ARM Cortex-A55(64bit),主频1.8GHz)

    创龙科技SOM-TL3568是一款基于瑞芯微RK3568J/RK3568B2处理器设计的四核ARM Cortex-A55全国产工业核心板,每核主频高达1.8GHz/2.0GHz。核心板CPU、ROM、RAM、电源、晶振、连接器等所有器件均采用国产工业级方案,国产化率100%。 核心板通过工业级B2B连接器引出GMAC、USB、SATA、PCIe、HDMI、L

    2024年02月16日
    浏览(39)
  • 【资料分享】RK3568开发板规格书(4x ARM Cortex-A55(64bit),主频1.8GHz)

    创龙科技TL3568-EVM是一款基于瑞芯微RK3568J/RK3568B2处理器设计的四核ARM Cortex-A55国产工业评估板,每核主频高达1.8GHz/2.0GHz,由核心板和评估底板组成。核心板CPU、ROM、RAM、电源、晶振、连接器等所有器件均采用国产工业级方案,国产化率100%。同时,评估底板大部分元器件亦采用

    2024年02月12日
    浏览(38)
  • 【资料分享】Xilinx Zynq-7010/7020工业评估板规格书(双核ARM Cortex-A9 + FPGA,主频766MHz)

    创龙科技TLZ7x-EasyEVM是一款基于Xilinx Zynq-7000系列XC7Z010/XC7Z020高性能低功耗处理器设计的异构多核SoC评估板,处理器集成PS端双核ARM Cortex-A9 + PL端Artix-7架构28nm可编程逻辑资源,评估板由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包