内存管理单元MMU
一、MMU是什么?
高性能处理器一般会提供一个内存管理单元(MMU),该单元辅助操作系统进行内存管理,提供虚拟地址和物理地址的映射、内存访问权限保护和 Cache 缓存控制等硬件支持。操作系统内核借助 MMU,可以让用户感觉到好像程序可以使用非常大的内存空间,从而使得编程人员在写程序时不用考虑计算机中的物理内存的实际容量。
二、MMU原理
1.基本概念
为了理解基本的 MMU 操作原理,先要介绍几个基本概念
TLB:Translation Lookaside Buffer,即转换旁路缓存,TLB 是 MMU 的核心部件,它缓存少量的虚拟地址与物理地址的转换关系,是转换表的Cache,因此也经常被称为“快表”。
TTW:Translation Table walk,即转换表漫游,当 TLB 中没有缓冲对应的地址转换关系时,需要通过对内存中转换表的访问来获得虚拟地址和物理地址的对应关系。TTW成功后,结果应写入 TLB。
2.处理器访问内存过程
当处理器要访问存储器时,MMU 先查找 TLB 中的虚拟地址表。处理器的 MMU 如下图所示。
上图有几个概念需要明确一下:
C(高速缓存)和 B(缓冲)位:它们被用来控制对应地址的高速缓存和写缓冲,并决定是否高速缓存。
访问权限和域位:它们被用来用来控制读写访问是否被允许。如果不允许,则 MMU 将向ARM 处理器发送一个存储器异常,否则访问将被允许进行。
若 TLB 中没有虚拟地址的入口,则转换表遍历硬件从存放于主存储器中的转换表中获取地址转换信息和访问权限(即执行 TTW),同时将这些信息放入 TLB,它或者被放在一个没有使用的入口或者替换一个已经存在的入口。之后,在 TLB 条目中控制信息的控制下,当访问权限允许时,对真实物理地址的访问将在 Cache 或者在内存中发生,如下图所示: