Chinaunix首页 | 论坛 | 博客
  • 博客访问: 34956
  • 博文数量: 8
  • 博客积分: 50
  • 博客等级: 民兵
  • 技术积分: 25
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-27 11:47
文章分类
文章存档

2013年(5)

2012年(3)

我的朋友

分类:

2013-03-22 10:23:13

[旧blog文章搬移]
    为方便以后查阅和学习以及留有备案,特翻译了《ARM Architecture Reference ManualSencond Edition》中的Memory Management Unit部分,供参考和交流。
    [译者]黄振华
    [声明]本翻译仅供参考和交流,不得用于任何商业用途。由于本人水平有限,其中的理解和表达错误在所难免,欢迎指正。如需转载请注明作者和出处。

3.3.8 大页地址翻译过程

       3-6给出了在一个粗糙二级表中对一个64KB的大页的完整的翻译顺序。在精细二级表中对大页的翻译过程与此类似,不过要使用在Fine page table descriptorB3-10中定义的二级描述符地址。

——Note——

       由于虚拟地址中的页内偏移量(Page Index)的高四位与二级表内索引(Second-level Table Index)的低四位相互交迭(即虚拟地址的bits[15:12]既用作构成页内偏移量,也用于构成二级表内索引),因此对于一个大页,每个页表条目(entry)必须在一个粗糙页表中重复16次(在连续的内存区域中)——意思是,虚拟地址的其他位不变,只改变bits[15:12],则可以得到16个不同的虚拟地址和相应的二级表内索引,这16个二级表内索引是连续变化的,由此可以得到16个连续的二级描述符地址,但这16个地址中存放同一个大页基地址,即指向同一个大页。这样做是为了保证虚拟地址的高16位不变而低16bits[15:0]连续变化时,所得到的连续的64K个地址在同一个大页内。即保证连续的虚拟地址空间映射到连续的物理地址空间。类似的,每一大页的页表条目必须在精细页表中重复64次。

       ——————

 

3.3.9 小页地址翻译过程

3-7给出了在一个粗糙二级表中对一个4KB的小页的完整的翻译顺序。在精细二级表中对小页的翻译过程与此类似,不过要使用在Fine page table descriptorB3-10中定义的二级描述符地址。

——Note——

       当小页出现于精细二级表中时,虚拟地址中的页内偏移量(Page Index)的高两位与二级表内索引(Second-level Table Index)的低两位相互交迭,因此对于一个小页,每个页表条目必须在精细页表中重复4次(在连续的内存区域中)。

——————

  

 

3.3.10 微页地址翻译过程

       3-8给出了在一个精细二级表中对一个1KB的微页的完整的翻译顺序。

       ——Note——

       微页不可出现在粗糙二级表中。

       ——————

 

[译者注:ARM v6体系结构不再支持微页,因此从移植性考虑,不推荐使用这种映射方式。]

 

 

3.4 访问权限

       段描述符和页描述符中的访问权限位对相应段或页的访问进行控制。访问权限还通过CP15的寄存器1中的System(S)ROM(R)控制位进行修正。表3-3描述了结合SR位的访问权限位的含义。如果试图访问没有访问权限的存储区域,则产生访问允许错误(Permission Fault,见AbortsB3-18)。

3-3 MMU访问权限控制

AP

S    R

特权级访问权限

用户级访问权限

0b00

0    0

无访问权限

无访问权限

0b00

1    0

只读

无访问权限

0b00

0    1

只读

只读

0b00

1    1

不可预知

不可预知

0b01

×   ×

/

无访问权限

0b10

×   ×

/

只读

0b11

×   ×

/

/

 

3.5

       域是一些段、大页或者小页的集合。ARM体系结构支持16个域。对每一个域的访问通过域访问控制寄存器(Domain Access Control RegisterC15中的C3)中的每相邻2bit来控制。这样可以很快地对整个域的访问进行使能或禁止,因而可以非常高效地将某个域的地址空间包含在虚拟存储空间中,或者排除在虚拟空间之外。ARM支持两种域访问模式:

       客户   是域的使用者(执行程序、访问数据),并受到组成该域的各个段和页的访问权限的监控;

       管理员:控制域的行为(域中的当前段和页、以及域的访问),并且不受组成该域的各个段和页的访问权限的监控。

      

       一个程序可以是某些域的客户(Client),以及其他某些域的管理员(Manager),而对其余的域没有访问权。这使得在执行需要访问多种存储区域资源的程序时,对内存的保护非常灵活。表3-4说明了域访问控制寄存器中的相邻2bits是如何定义域访问权限的。

 

       3-4 域访问控制字段编码含义

访问类型

描述

0b00

无访问权

任何访问都将产生域错误(domain fault)。

0b01

 

客户

Client

根据段描述符或页描述符中的访问权限控制位来决定访问权。

0b10

保留

使用该值会产生不可预知的结果

0b11

 

管理员

Manager

访问不受段描述符或页描述符中访问权限控制位的制约,因而不会产生访问错误。

 

 

 

Sequential Memory Access:顺序内存访问

 

  [您的文章太长,超过了系统限制,如果文章太长,请使用专辑连载的方式!]


[参考资料]

[1]ARM Architecture Reference ManualSencond Editionby David Seal and Addison Wesley. Download this manual

[2]

[3]

[4]ARM体系结构与编程,杜春雷,清华大学出版社,20032

 

阅读(1333) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~