第3章 ARM体系结构
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关闭时,虚地址直接输出到物理地址总线。 MMU的功能
ARM MMU的功能 CP15的主要管理和配置功能如下; 页表 TLB(转换旁路缓冲器) 域和访问权限 Cache和写缓冲器 页表 TLB(转换旁路缓冲器) 域和访问权限 Cache和写缓冲器 快速上下文切换
ARM MMU的功能 CP15协处理器的功能模块: 功能 使用寄存器 全局控制 寄存器0、1 MMU 寄存器2、3、4、5、6、8,10以及寄存器1中的部分 MPU 寄存器2、3、5、6以及寄存器1中的部分 Cache和Write Buffer 寄存器7、9 FSCE 寄存器13 测试和时钟控制 寄存器15 保留 寄存器11、12、14 MMU和MPU一般二者取其一。
ARM MMU的操作 MMU的功能相关的CP15中寄存器的描述 寄存器 主要操作 R1 使能/禁止MMU、cache、写缓冲 R2 设置变换表基地址(16k对齐) R3 设置16个域的访问权限 R8 操作TLB功能(无效统一TLB、无效指令或数据TLB) MMU的功能相关的CP15中寄存器的描述 MMU的功能相关的CP15中寄存器的描述
ARM MMU的操作 当MMU被禁止的时候存储器按如下处理: 根据具体的情况决定是否允许Cache和写缓冲 物理地址的虚拟地址相同,即平板(flat address mapping)地址映射模式
ARM MMU的操作 R1 控制寄存器 (类型:ARMv3:只写,ARMv4:读写) M (位[0]):允许MMU 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的操作 功能如下所示: R8 TLB功能寄存器(类型:只写): 无效指令TLB 用来执行TLB的操作 无效指令单一入口 无效数据单一入口 R8 TLB功能寄存器(类型:只写): 用来执行TLB的操作 功能 opcode2 CRm Data 指令 无效所有TLB 111 MCR p15, 0, Rd, c8, c7, 0 无效单一入口 1 虚拟地址 MCR p15, 0, Rd, c8, c7, 1 无效整个指令TLB 101 MCR p15, 0, Rd, c8, c5, 0 无效指令单一入口 MCR p15, 0, Rd, c8, c5, 1 无效整个数据TLB 110 MCR p15, 0, Rd, c8, c6, 0 无效数据单一入口 MCR p15, 0, Rd, c8, c6, 1
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 的块组成 页表类型 页表单位数 页表占用内存 支持页的单位 一级页表 4096 16k 1M 粗页表 (corase page) 256 1k 4k或者64k 细页表 (fine page) 1024 4k 1k、4k 或者64k
ARM MMU的地址转换
ARM MMU的地址转换 第一级描述符
ARM MMU的地址转换 MMU二级描述符含义 标志 位 含义 类型 [1:0] 段、粗页或者细页 B [2] 写缓冲使能 C [3] Cache使能 域 domain [8:5] 16个域中的哪一个,根据CP15的R3 AP (仅段描述符) [11:10] 存取权限 段基地址 [31:20] 1M对齐 粗页基地址 [31:10] 1K对齐 细页基地址 [31:12] 4K对齐 MMU二级描述符含义
ARM MMU的地址转换 MMU寻址的方式分类流程
ARM MMU的地址转换 段方式
ARM MMU的地址转换 二级页方式
ARM MMU的地址转换 二级页方式
ARM MMU的地址转换 存储权限
ARM MMU的地址转换 AP(Access permissions,访问权限),访问权限需要结合 CP15寄存器1的第8位有两种含义System (S)或者ROM (R)。 AP S R 特权权限 用户权限 00 不允许访问 1 只读 不确定 01 x 读写 10 11
课程结束