MMU 是内存管理单元,在现代的处理器中扮演重要角色,它是CPU用来管理虚拟存储器、物理存储器的控制路线,先举个例子来说明一下MMU的相关概念:
---地址范围、虚拟地址映射为物理地址以及分页机制
地址范围是一个计算机上的一个程序能够产生地址的集合,这个范围的大小由CPU的位数决定,例如一个32位的CPU,它的地址范围是0~0xFFFFFFFF (4G),而对于一个64位的CPU,它的地址范围为0~0xFFFFFFFFFFFFFFFF (16E).这个范围就是我们的程序能够产生的地址范围,我们把这个地址范围称为虚拟地址空间,该空间中的某一个地址我们称之为虚拟地址。与虚拟地址空间和虚拟地址相对应的则是物理地址空间和物理地址,大多数时候我们的系统所具备的物理地址空间只是虚拟地址空间的一个子集。
在没有使用虚拟存储器的机器上,虚拟地址被直接送到内存总线上,使具有相同地址的物理存储器被读写;而在使用了虚拟存储器的情况下,虚拟地址不是被直接送到内存地址总线上,而是送到存储器管理单元MMU,把虚拟地址映射为物理地址。
大多数使用虚拟存储器的系统都使用一种称为分页(paging)机制。虚拟地址空间划分成称为页(page)的单位,而相应的物理地址空间也被进行划分,单位是页帧(frame).页和页帧的大小必须相同。在这个例子中我们有一台可以生成32位地址的机器,它的虚拟地址范围从0~0xFFFFFFFF(4G),而这台机器只有256M的物理地址,因此他可以运行4G的程序,但该程序不能一次性调入内存运行。这台机器必须有一个达到可以存放4G程序的外部存储器(例如磁盘或是FLASH),以保证程序片段在需要时可以被调用。在这个例子中,页的大小为4K,页帧大小与页相同——这点是必须保证的,因为内存和外围存储器之间的传输总是以页为单位的。对应4G的虚拟地址和256M的物理存储器,他们分别包含了1M个页和64K个页帧。
MMU有一下功能:
1, 虚拟内存:通过虚拟地址来实现,它可以在处理器上运行比实际物理内存大 的应用程序,使用虚拟地址,操作系统通常要设置一个交换分区,通过将不活跃的内存中的数据放到交换分区,操作系统可以有空间来为其它的程序服务。
2, 内存保护:对特定的内存区域的访问进行保护。
3,完成了从虚拟地址到物理地址的转换。