内存管理单元MMU学习

Posted bcbobo21cn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存管理单元MMU学习相关的知识,希望对你有一定的参考价值。

MMU

MMU是Memory Management Unit的缩写,中文名是内存管理单元,有时称作分页内存管理单元(英语:paged memory management unit,缩写为PMMU)。
它是一种负责处理中央处理器(CPU)的内存访问请求的计算机硬件。它的功能包括虚拟地址到物理地址的转换(即虚拟内存管理)、内存保护、中央处理器高速缓存的控制;

内存管理单元通常应用在桌面型计算机或者服务器,通过虚拟存储器使得计算机可以使用比实际的物理内存更多的存储空间。同时,内存管理单元还对实际的物理内存进行分割和保护,使得每个软件任务只能访问其分配到的内存空间。如果某个任务试图访问其他任务的内存空间,内存管理单元将自动产生异常,保护其他任务的程序和数据不受破坏。

基本概念
MMU位于处理器内核和连接高速缓存以及物理存储器的总线之间。当处理器内核取指令或者存取数据的时候,都会提供一个有效地址(effective address),或者称为逻辑地址、虚拟地址。应用代码需要使用存储空间时,操作系统通过MMU为其分配合适的物理存储空间。有效地址不需要和系统的实际硬件物理地址相匹配,而是通过MMU将有效地址映射成对应的物理地址,以访问指令和数据。

每条MMU匹配规则所对应的存储器的大小定义为页。通常最小的页设定为4 KB。

为了加快MMU规则匹配的处理过程,有效地址和实际物理地址的对应表通常保存在一块单独的高速缓存中,称为对应查找表(Translation Lookaside Buffer,TLB),TLB和实际物理存储器可以同时进行并行的访问。有效地址的高位作为在TLB进行匹配查找的依据,而有效地址的低位作为页面内的偏址。

TLB可以包含很多个表项(entry),每个表项对应一个MMU的页。操作系统或者应用启动代码必须正确的初始化TLB的所有表项。当应用程序提供的有效地址正好位于某个TLB表项制定的地址范围内时,称为产生了一次TLB命中;如果这个有效地址没有位于任何一个TLB表项制定的地址范围内,称为一个TLB缺失,或者TLB未命中。

========

 以下摘自 Windows内核情景分析 一书;

在CPU的页面映射机制中,MMU的作用是:
    根据虚拟地址计算出该地址所属的页面;
    再根据页面映射表的起始地址计算出该页面映射表项所在的物理地址;
    根据物理地址在高速缓存的TLB中寻找该表项的内容;
    如果该表项不在TLB中,就从内存将其内容装载到TLB中;
    检查该表项的PA_PRESENT标志位,如果为1就表示映射的目标为某个物理页面,因而可以访问这个页面,但是需要进一步检查、比较CPU当前对此页面是否具有所要求的访问权限,如果权限不够就使当前指令的执行失败并产生一次页面异常;
    如果PA_PRESENT标志位为0,则说明该虚存页面的映像不在内存中,当前指令的执行因此而失败,CPU为此产生一次页面异常,此时相应的异常处理程序应采取相应的措施;

内核的内存管理模块就是围绕着MMU的这些功能和要求而设计开发的;        

以上是关于内存管理单元MMU学习的主要内容,如果未能解决你的问题,请参考以下文章

内存管理单元---MMU

操作系统 内存管理单元MMU TLB

操作系统 内存管理单元MMU TLB

操作系统 内存管理单元MMU TLB

Cortex-M MMU内存管理单元和 Linux

内存管理单元MMU简介