内存管理单元MMU

内存管理单元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 如下图所示。

MMU处理逻辑
上图有几个概念需要明确一下:
C(高速缓存)和 B(缓冲)位:它们被用来控制对应地址的高速缓存和写缓冲,并决定是否高速缓存。

访问权限和域位:它们被用来用来控制读写访问是否被允许。如果不允许,则 MMU 将向ARM 处理器发送一个存储器异常,否则访问将被允许进行。

若 TLB 中没有虚拟地址的入口,则转换表遍历硬件从存放于主存储器中的转换表中获取地址转换信息和访问权限(即执行 TTW),同时将这些信息放入 TLB,它或者被放在一个没有使用的入口或者替换一个已经存在的入口。之后,在 TLB 条目中控制信息的控制下,当访问权限允许时,对真实物理地址的访问将在 Cache 或者在内存中发生,如下图所示:

在这里插入图片描述

许多年以前,当人 们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小, 但还是可以容纳当时的程序。但随着图形界面的兴起还用用户需求的不断增大,应用程序的规模也随之膨胀起来,终于一个难题出现在程序员的面前,那就是应用程 序太大以至于内存容纳不下该程序,通常解决的办法是把程序分割成许多称为覆盖块(overlay)的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块的交换是由OS完成的,但是必须先由程序员把程序先进行分割,这是一个费时费力的工作,而且相当枯燥。人们必须找到更好的办法从根本上解决这个问题。不久人们找到了一个办法,这就是虚拟存储器(virtual memory).虚拟存储器的基本思想是程序,数据,堆栈的总的大小可以超过物理存储器的大小,操作系统把当前使用的部分保留在内存中,而把其他未被使用的部分保存在磁盘上。比 如对一个16MB的程序和一个内存只有4MB的机器,OS通过选择,可以决定各个时刻将哪4M的内容保留在内存中,并在需要时在内存和磁盘间交换程序片 段,这样就可以把这个16M的程序运行在一个只具有4M内存机器上了。而这个16M的程序在运行前不必由程序员进行分割。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值