270 likes | 457 Views
第 3 章 ARM 体系结构. 3.4 ARM 内存管理单元. ARM MMU概述 ARM MMU的功能 ARM MMU的 操作 ARM MMU的 地址转换. ARM MMU概述.
E N D
3.4 ARM 内存管理单元 • ARM MMU概述 • ARM MMU的功能 • ARM MMU的操作 • ARM MMU的地址转换
ARM MMU概述 MMU是内存管理单元(Memory Management Unit)的缩写。MMU在处理器中实现内存管理的功能,完成物理地址到虚拟地址的映射。MMU本身有少量存储空间存放从虚拟地址到物理地址的匹配表。此表称作TLB(转换旁置缓冲区)。所有数据请求都送往MMU,由MMU决定数据是在RAM内还是在大容量存储器设备内。如果数据不在存储空间内,MMU将产生页面错误中断。 在通常情况下,MMU的两个主要功能是: 1. 将虚地址转换成物理地址 2. 控制内存的访问权限 MMU关闭时,虚地址直接输出到物理地址总线。
ARM MMU的功能 • CP15的主要管理和配置功能如下; • 页表 • TLB(转换旁路缓冲器) • 域和访问权限 • Cache和写缓冲器 • 快速上下文切换
ARM MMU的功能 CP15协处理器的功能模块:
ARM MMU的操作 MMU的功能相关的CP15中寄存器的描述
ARM MMU的操作 • 当MMU被禁止的时候存储器按如下处理: • 根据具体的情况决定是否允许Cache和写缓冲 • 没有存储区访问的权限,MMU也不会产生异常信号 • 物理地址的虚拟地址相同,即平板(flat address mapping)地址映射模式
ARM MMU的操作 R1 控制寄存器 (类型:ARMv3:只写,ARMv4:读写) M (位[0]):允许MMU A (位[1]):允许定位故障检测 C (位[2]):允许数据Cache或者统一Cache W (位[3]):允许写缓冲 P (位[4]):从26-32位异常处理 D (位[5]):从26-32位地址区域 L (位[6]):至上一次中止区域 B (位[7]):从小端到大端 S (位[8]):修改MMU系统
ARM MMU的操作 R (位[9]):ROM保护状态 F (位[10]):控制外协处理器通信速度 Z (位[11]):允许分支预测 I (位[12]):允许指令Cache V (位[13]):向量地址 (从0x00000000 - 0x0000001C到0xFFFF0000 - 0xFFFF001C) RR (位[14]):控制Cache置换算法 L4 (位[15]):对于ARMv5以后版本,控制向后兼容 位[31:16]:保留 注意:对于MMU,其实只和CP15的寄存器的0、1、8、9位有关
ARM MMU的操作 R2 地址变换表基址寄存器 (类型:ARMv3:只写,ARMv4:读写) 位[31:14]:变换表基地址,定位界限为16KB
ARM MMU的操作 R3 域访问控制寄存器: (类型:ARMv3:只写,ARMv4:读写) 数据的含义如下: 00 不允许访问,任何访问将产生域错误 01 客户(Client)使用域,根据段和页描述符的访问权限检验 10 保留 11 管理(Manager)使用域,不检查访问许可位,任何都不会产生域错误
ARM MMU的操作 R6 故障地址寄存器: (类型:ARMv3:只读,ARMv4:读写) 上一次数据存取中止的地址
ARM MMU的操作 R5 故障状态寄存器: (类型:ARMv3:只读,ARMv4:读写) Bit[8]:0 Bits[7:4]:当错误发生时,确定16个域中(D15–D0) 哪个被访问。 Bits[3:0]:指出试图访问的类型
ARM MMU的操作 功能如下所示: • 无效指令TLB • 无效指令单一入口 • 无效整个数据TLB • 无效数据单一入口 R8 TLB功能寄存器(类型:只写): 用来执行TLB的操作
ARM MMU的操作 R10 TLB锁住寄存器:(类型:读写) TLB锁定是一些ARM存储器系统的特性,它允许把特定的转换表搜索结果装载到TLB中。这种方式能否被后来的结果覆盖由寄存器R10决定。 如果TLB为分离的,该寄存器有2个 通过<opcode2>来区分MCR或者MRC对该寄存器的访问。 <opcode2> == 0 选择数据TLB锁定寄存器 <opcode2> == 1 选择指令TLB锁定寄存器 例如: mcr p15,0,r0,c10,c0,0 ;数据寄存器 mcr p15,0,r0,c10,c0,1 ;指令寄存器 如果TLB为统一的,寄存器只有1个存在,<opcode2>必须为0。 例如: mcr p15,0,r0,c10,c0,0 ;统一寄存器 辅助寄存器必须为c0
ARM MMU的地址转换 在存储器的管理中,地址转换的含义是从逻辑地址转换成物理地址。在MMU开启之后,处理器内核所处理的都是逻辑地址,当处理器内核要访问一个逻辑地址的时候,MMU负责将这个逻辑地址转换成相应的物理地址,完成实际地址的访问。
ARM MMU的地址转换 ARM的MMU支持如下的段和页: • 段(sections),由1MB的块组成 • 大页(large pages),由64KB 的块组成 • 小页(small pages),由4KB 的块组成 • 微小页(tiny pges),由1KB 的块组成
ARM MMU的地址转换 第一级描述符
ARM MMU的地址转换 MMU二级描述符含义
ARM MMU的地址转换 段方式
ARM MMU的地址转换 二级页方式
ARM MMU的地址转换 二级页方式
ARM MMU的地址转换 存储权限
ARM MMU的地址转换 AP(Access permissions,访问权限),访问权限需要结合 CP15寄存器1的第8位有两种含义System (S)或者ROM (R)。