Chinaunix首页 | 论坛 | 博客
  • 博客访问: 543997
  • 博文数量: 99
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 1117
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-23 15:17
文章分类

全部博文(99)

文章存档

2011年(4)

2010年(13)

2009年(82)

我的朋友

分类: LINUX

2009-11-23 14:06:24

上周调试一个有关SEP4020的硬件的问题时候,需要开启720T的二级页表,顺便对二级页表有了一个比较深入的认识了,以前开过一级页表,在我的博客当中应该能找到如何开启一级页表,这次我们一起来学会怎样使用二级页表。
一、Arm内存管理单元(MMU)的知识:
下面这一部分是摘录于王洪辉老师的博客中,在此学习下,呵呵
1ARM地址变换过程
虚拟存储空间到物理存储空间的映射是以内存块为单位进行的,虚拟存储空间中的一块连续存储空间被映射成物理存储空间中同样大小的一块连续存储空间。每一个地址变换条目(页表项)记录了一个虚拟存储空间的存储块的基地址与物理存储空间相应的一个存储块的基地址的对应关系。根据存储块大小不同,可以有多种地址变换。
ARM处理器支持的存储块大小有以下几种:
1)段(section):大小为1MB的存储块。
2)大页(Large Page):大小为64KB的存储块。
3)小页(Small Page):大小为4KB的存储块。
4)极小页(Tiny Page):大小为1KB的存储块。
通过采用适当的访问控制机制,还可以将大页分成大小为16KB的子页,也可将小页分成大小为1KB的子页,但极小页不能再细分,只能以1KB大小的整页为单位。
ARM处理器采用两级页表实现地址映射:
1)一级页表中包含以段为单位的地址变换条目或者指向二级页表的指针,一级页表实现的地址映射粒度较大。
2)二级页表中包含以大页、小页和极小页为单位的地址变换条目。
当以二级分页管理某段存储空间时,要同时设置一级页表项和二级页表项,一个一级页表项对应一段(1section=1MB)虚拟存储空间的映射关系,一个一级页表项对应一张二级页表,这张二级页表中的所有页表项合在一起对应了前面一级页表项所对应的一段虚拟存储空间的映射关系。ARM处理器的二级页表分为粗粒度二级页表和细粒度二级页表,一张粗粒度二级页表的最大容量为1KB,一张细粒度二级页表的最大容量为4KB,不管是粗粒度还是细粒度页表,每张页表都对应一段虚拟存储空间的映射关系。所以粗粒度二级页表的页表项(页描述符)最小只能描述4KB大小(小页)虚拟存储空间的映射关系,如果再小就没有足够的页表空间来存放一段虚拟存储空间的全部页表项(因为粗粒度二级页表的最大容量为1KB),而细粒度二级页表的页描述符最小可以描述1KB大小(极小页)的虚拟存储空间的映射关系。
综上所述,我们可以归纳出以下6种ARM处理器的地址变换方法:
1)分段地址变换,这种变换只需要一级地址变换,而下面5种都需要两级地址变换;
2)粗粒度大页地址变换;
3)粗粒度小页地址变换(Linux通常使用的地址变换方法);
4)细粒度大页地址变换;
5)细粒度小页地址变换;
6)细粒度极小页地址变换。
在讲解以上各种地址变换方法之前我们先介绍一下一级映射描述符和二级映射描述符的定义。
2)一级页表描述符;
ARM处理器MMU的一级映射描述符编码格式如下所示:
31      20    19 14   1312 1110  9    8   5  4  3  2  1 0
 
 
0  0
 
 
粗粒度二级页表基址
0
Domain
U
 
 
0  1
 
 
段基址
0
TEX
AP
P
Domain
U
C
B
1  0
 
 
细粒度二级页表基址
0
Domain
U
 
 
1  1
 
 
 
   
Bit[1:0]
一级描述符类型标识。00:无效;01:粗页;10:段;11:细页
CB
该一级描述符对应的存储空间的cacheWrite Buffer特性控制位,如表4-4所示
U
由用户定义
Domain
指明该存储空间所属的域号0~15;见前面“MMU中的域”说明
P
保护标志位;只有ARMv5或以上版本处理器有定义
AP
访问权限控制位,详见前面“ARM处理器的存储域”说明
TEX
ARMv5以上版本处理器中有定义,如果TEX等于1,表示系统支持写时分配cache
粗粒度二级页表基址:
如果bit[1:0]=01,那么该存储空间是二级分大页管理,1=4KB,粗粒度二级页表基址表示的是页描述符表的基址,1KB对齐,一张页描述符表占1KB空间,256个页描述符条目,描述了1MB空间的映射关系以及访问权限和域控制属性
段基址:
如果bit[1:0]=10,那么该存储空间是分段管理,该段描述符号描述了1MB存储空间的映射关系以及访问权限和域控制属性,段基址就是该存储空间的物理基地址,1MB对齐
细粒度二级页表基址:
如果bit[1:0]=11,那么该存储空间是二级分小页管理,1=1KB,细粒度二级页表基址表示的是页描述符表的基址,4KB对齐,一张页描述符表占4KB空间,1 024个页描述符条目,描述了1MB空间的映射关系以及访问权限和域控制属性
 
C
B
写通类型cache
写回类型cache
可选择写通属性的写回类型cache
0
0
Uncached/unbuffered
Uncached/unbuffered
Uncached/unbuffered
0
1
Uncached/buffered
Uncached/buffered
Uncached/buffered
1
0
cached/unbuffered
不可预测
写通cached/buffered
1
1
Cached/buffered
Cached/buffered
写回cached/buffered
2)二级页表描述符
ARM处理器MMU的二级映射描述符编码格式如下所示:
31                         16   15     12  11 10  9 8  7 6   5 4   3   2  1 0
 
00
大页基地址
0
AP3
AP2
AP1
AP0
C
B
01
小页基地址
AP3
AP2
AP1
AP0
C
B
10
极小页基地址
0
AP
C
B
11
 
阅读(2781) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~