"ARM 内存管理单元" ARM 内存管理单元(Memory Management Unit,MMU)是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。MMU 通常是 CPU 的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表,此表称作 TLB(转换旁置缓冲区)。所有数据请求都送往 MMU,由 MMU 决定数据是在 RAM 中还是在大容量存储器设备中。如果数据不在 RAM 中,MMU 将产生缺页中断。 MMU 的两个主要功能是: 1.将虚地址转换成物理地址。 2.控制存储器存取允许。 在嵌入式系统中,存储系统差别很大,可包括多种类型的存储器件,如 FLASH、SRAM、SDRAM、ROM 等,这些不同类型的存储器件速度和宽度等各不相同;在访问存储单元时,可能采取平板式的地址映射机制对其操作,或需要使用虚拟地址对其进行读写;系统中,需引入存储保护机制,增强系统的安全性。 MMU 的实现过程,实际上就是一个查表映射的过程。建立页表(translate table)是实现 MMU 功能不可缺少的一步。页表位于系统的内存中,页表的每一项对应于一个虚拟地址到物理地址的映射。每一项的长度即是一个字的长度(在 ARM 中,一个字的长度被定义为 4 字节)。页表项除完成虚拟地址到物理地址的映射功能之外,还定义了访问权限和缓冲特性等。 MMU 的映射分为两种,一级页表的变换和二级页表变换。两者的不同之处就是所实现的变换地址空间大小不同。一级页表变换支持 1M 大小的存储空间的映射,而二级可以支持 64KB、4KB 和 1KB 大小地址空间的映射。 ARM 处理器中引入了存储管理单元来管理存储系统。在实践中,使用 MMU 解决了如下几个问题: 1.使用 DRAM 作为大容量存储器时,如果 DRAM 的物理地址不连续,这将给程序的编写调试造成极大不便,而适当配置 MMU 可将其转换成虚拟地址连续的空间。 2.ARM 内核的中断向量表要求放在 0 地址,对于 ROM 在 0 地址的情况,无法调试中断服务程序,所以在调试阶段有必要将可读写的存储器空间映射到 0 地址。 3.系统的某些地址段是不允许被访问的,否则会产生不可预料的后果,为了避免这类错误,可以通过 MMU 匹配表的设置,将这些地址段设为用户不可存取类型。 MMU 的作用有两个:地址翻译和地址保护。软件的职责是配置页表,硬件的职责是根据页表完成地址翻译和保护工作。如果 CPU 没有硬件 MMU,那么这张表将毫无意义。必须从 CPU 的角度去理解内存映射这个概念,内存映射是 CPU 通过 MMU 把一条指令中要访问的地址转换为物理地址,然后发送到总线上的过程。 在实际的应用中,可能会把两片不连续的物理地址空间分配给 SDRAM。而在操作系统中,习惯于把 SDRAM 的空间连续起来,方便内存管理,且应用程序申请大块的内存时,操作系统内核也可方便地分配。通过 MMU 可实现不连续的物理地址空间映射为连续的虚拟地址空间。 操作系统内核或者一些比较关键的代码,一般是不希望被用户应用程序所访问的。通过 MMU 可以控制地址空间的访问权限,从而保护这些代码不被破坏。
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助