内存管理(硬件编程)
一、MMU是什么?
早期的CPU(比如8086),或者现在用的MCU(单片机) , 程序直接运行在物理内存(SDRAM或者NOR Flash)上 。程序运行时 , 通过总线访问的数据 , 读写的地址都是物理地址 。例如 , 程序计数器PC中的值是预取指令所在的物理存储器的地址值 。
冯-诺依曼计算机模型
这种方法比较容易实现硬件电路的设计 , 程序的处理逻辑也比较简单,但是不适合复杂的系统,尤其是多任务操作系统 。首先,我们来看看原方法的不足和缺陷 。
物理内存不足 。比如一个程序运行需要64K内存,而机器只有32K物理内存 。
程序运行的地址不确定 。相同的程序可以每次加载到不同地址的存储器中 。
内存使用率低 。如果你需要运行一个程序,你需要将整个程序加载到内存中来运行它 。
无法支持多任务处理 。有一个问题是进程间地址空没有隔离 , 或者一个任务失败 , 可能导致整个系统宕机 。
然而,随着计算机科学技术的发展,所要解决的问题越来越复杂 , 单任务批处理已经不能满足需求 。此外,应用程序所需的内存量也在不断增加 。而且随着多任务的需求,这种技术架构已经不能满足需求 。在这种背景下,MMU应运而生,这说明任何技术的发展必然是需求驱动的 。MMU(内存管理单元)主要用于管理虚拟内存和物理内存的控制电路,还负责虚拟地址到物理地址的映射,提供硬件机制和多任务多进程操作系统的内存访问授权 。
如果处理器使能MMU,CPU执行单元发送的内存地址会被MMU截获 。CPU到MMU的地址称为虚拟地址(VA),MMU将这个地址翻译成另一个地址发送到CPU芯片的外部地址引脚,也就是将VA映射到PA,如下图所示:
MMU硬件电路的功能
二、MMU的具体功能
1.页表的映射转换
MMU的主要功能是虚拟地址到物理地址的转换 。但是“映射”有两个问题需要解决:映射的最小单位(粒度)和映射的规则 。
a、将虚拟地址空划分为一个称为页面的单元,对应的物理地址空也划分为页框,并且页面和页框的大小必须相同 。映射的最小粒度是从单个虚拟页面到物理页面,页面大小通常是4K,即一次至少要将整个4K大小的VA页面块映射到4K PA页面块(用从0开始的4K对齐来划分页面块),页面内偏移量不变 。
例如,VA的页面0x30004000~0x30004fff映射到PA的页面0x00008000~0x00008fff 。当CPU执行单元访问虚拟地址0x30004008时,实际访问的物理地址是0x00008008(0x30004008和0x0008008分别位于实地址和实地址/[/中 。以页面为最小单位,无法将VA中的一个页面分成若干小块分别映射到不同的PA,也无法将VA中属于不同页面的小块映射到PA中一个页面的不同部分,所以需要进行页面到页面的整体映射 。
B.MMU软件配置的核心是页表,页表描述了MMU的映射规则,即虚拟内存的哪些页映射到物理内存的哪些页框 。页表由表示映射规则的记录组成,每个记录称为一个页表条目(PTE) 。整个页表存储在片外存储器中 。MMU通过查找页表来确定一个VA应该映射到哪个PA,以及是否有权限映射 。
C.如果MMU每次都在位于外部存储器的页表中查找PTE,那么转换速度会大大降低,于是出现了TLB 。TLB(translation look aside buffers)是翻译快速表 , 也简称为快速表 。可以理解为MMU中存储页表的专用缓存,保存最近使用的PTE甚至所有页表 。收到虚拟地址后,MMU首先在TLB中查找它 。如果找到VA对应的PTE,就直接转换 。如果没有找到,它将在外部存储器页表中查找并将其替换到TLB中 。TLB是一种具有快速存取速度的片上SRAM 。通过在TLB中缓存PTE,可以节省MMU访问外部存储器页表的时间,从而加速虚拟和真实地址的转换 。TLB的工作原理和CPU缓存一样 , 只是TLB是专门为MMU缓存页表的 。
地址翻译的全过程
2.MMU的内存保护功能既然所有发送到内存的地址信号都要经过MMU的处理,那么如果只做地址翻译,岂不是浪费了这个专门安装的翻译层?显然,它有能力对虚拟地址访问做出更多的限制(就像路由器在转发网络数据包的同时可以过滤各种非法访问一样) , 比如内存保护 。可以在PTE条目中保留几个位来设置访问权限的属性,例如访问禁止、可读、可写和可执行 。设置后,当CPU访问一个VA时,MMU在页表中找到对应的PTE,将指令的权限要求与PTE中的限制条件进行比较,如果满足要求,则将VA转换为PA,否则不允许访问,并产生异常 。
推荐阅读
- 痰迷心窍是精神病吗 痰迷心窍
- 1是偶数还是奇数 1是偶数还是奇数啊
- 电磁炉电路板多少钱一块 电路板多少钱
- 第五人格雪花碎片怎么获得 雪花碎片获得方法介绍
- 道家完整内丹功法 九转内丹术
- 腱子肉是人哪个部位,腱子肉 部位
- 烤箱做蛋糕视频教程 做蛋糕怎么做视频
- 0.8元等于多少角 5元5角等于多少角
- 高雅的运动 速度最快的球类运动