ARM内存管理MMU详解
这个入口给出粗糙第二级表( bit[1]==0 ),或精细第二级表( bit[1]==1 )。
每一种类型的表描述了它所关联的 1MB 存储区域的映射。粗糙第二级表较小,每个表 1KB ,每个精细第二级表 4KB 。然而粗糙第二级表只能映射大页和小页,精细第二级表可以映射大页、小页和微页。
节描述符和转换节参考
l 如果第一级描述符是节描述符,那么各个字段有如下的意义:
Bits[1:0] 描述符类型标识( 0b10 表示节描述符)
Bits[3:2] 高速缓存和缓冲位
Bits[4] 由具体实现定义
Bits[8:5] 这个描述符控制的节的 16 种域之一
Bits[9] 现在没有使用,应该为零
Bits[11:10] 访问控制,见表 3-3
Bits[19:12] 现在没有使用,应该为零
Bits[31:20] 节基址,形成物理地址的高 12 位
l 如果第一级描述符是粗糙页表描述符,那么各个字段有如下的意义:
Bits[1:0] 描述符类型标识( 0b01 表示粗糙页表描述符)
Bits[4:2] 由具体实现定义
Bits[8:5] 这个描述符控制的页的 16 种域之一
Bits[9] 现在没有使用,应该为零
Bits[31:10] 页表基地址是一个指向第二极粗糙页表的指针,
l 如果第一级描述符是精细页表描述符,那么各个字段有如下的意义:
Bits[1:0] 描述符类型标识( 0b11 表示精细页表描述符)
Bits[4:2] 由具体实现定义
Bits[8:5] 这个描述符控制的页的 16 种域之一
Bits[11:9] 现在没有使用,应该为零
Bits[31:10] 页表基地址是一个指向第二级精细页表的指针,它给出第二级表
访问的基地址。而第二级精细页表必须在 4KB 边界对齐。
3 、第二级转换表 存储大页和小页的转换表。一种类型的第二级表存储微页转换表。
每个粗糙第二级表对映着以4KB 为单位的虚拟地址范围市怎么映射的,每个精细第二级表对映着以1KB 为单位的虚拟地址范围市怎么映射的。那些入口是页描述符,他们能够分别描述大于4KB 或1KB 的页。在这种情况下,这个描述符必须被重复足够次,以保证这个页始终使用相同的描述符,不论访问这个页中的哪个虚拟地址。对于一个第二级描述符,有四种可能,由描述符的bits[1:0] 选择。见表3-2 :
· ? 如果bits[1:0]==0b00 ,说关联的虚拟地址没有被映射,任何对这些虚拟地
址的访问将会导致转换错(fault) 。软件可以利用这样的描述符的bits[31:2] 做自己的用途,因为他们被硬件忽略。推荐为描述符继续保持正确的访问权限。
· ? 如果bits[1:0]==0b01 ,这个入口是大页描述符,描述64KB 的虚拟地址。
见转换大页参考。一个大页描述符在精细第二级表中必须被重复64 次,在粗
糙第二级表中必须被重复16 次以保证所有的虚拟地址都被描述。
· ? 如果bits[1:0]== 0b10 ,这个入口是小页描述符,描述4KB 的虚拟地址。
见转换小页参考。一个小页描述符在精细第二级表中必须被重复4 次,以保
证所有的虚拟地址都被描述。在粗糙第二级表中只有一个实例。
· ? 如果bits[1:0]== 0b11 ,这个入口是微页描述符,描述1KB 的虚拟地址。
见转换微页参考。在精细第二级表中只需要一个微页描述符的实例。微页描
述符不能在粗糙第二级表中出现,如果出现了,结果不可预测。
大页描述符字段
大页描述符的字段有如下意义:
bits[1:0] 表示描述符的类型
bits[3:2] 高速缓促和缓冲位
bits[11:4] 访问权限位。这些为控制对页的访问。关于这些位的解释见表3-3 。
大页被分成4 各子页。
AP0 编码对第一个子页的访问权限。
AP1 编码对第二个子页的访问权限。
AP2 编码对第三个子页的访问权限。
AP3 编码对第四个子页的访问权限。
bits[15:12] 现在没有使用,应该为零。
bits[31:16] 用来形成物理地址的对应位。
?
小页描述符字段
小页描述符的字段有如下意义:
bits[1:0] 表示描述符的类型
bits[3:2] 高速缓促和缓冲位
bits[11:4] 访问权限位。这些为控制对页的访问。关于这些位的解释见表3-3 。
小页被分成4 各子页。
AP0 编码对第一个子页的访问权限。
AP1 编码对第二个子页的访问权限。
AP2 编码对第三个子页的访问权限。
AP3 编码对第四个子页的访问权限。
bits[31:12] 用来形成物理地址的对应位。
微页描述符字段
微页描述符的字段有如下意义:
bits[1:0] 表示描述符的类型
bits[3:2] 高速缓促和缓冲位
bits[5:4] 访问权限位。这些为控制对页的访问。关于这些位的解释见表3-3 关于微页的解释。
bits[9:6] 现在没有使用,应该为零。
bits[31:10] 用来形成物理地址的对应位。
MMU 把 CPU 产生的虚拟地址转换成物理地址去访问外部存储器,同时继承并检查访问权限。地址转换有四条路径。路径的选取由这个地址是被标记成节映射访问还是页映射访问确定。页映射
ARM内存管理MMU详 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)