分类:
2013-03-22 10:23:13
3.3.8 大页地址翻译过程
图3-6给出了在一个粗糙二级表中对一个64KB的大页的完整的翻译顺序。在精细二级表中对大页的翻译过程与此类似,不过要使用在Fine page table descriptor,B3-10中定义的二级描述符地址。
——Note——
由于虚拟地址中的页内偏移量(Page Index)的高四位与二级表内索引(Second-level Table Index)的低四位相互交迭(即虚拟地址的bits[15:12]既用作构成页内偏移量,也用于构成二级表内索引),因此对于一个大页,每个页表条目(entry)必须在一个粗糙页表中重复16次(在连续的内存区域中)——意思是,虚拟地址的其他位不变,只改变bits[15:12],则可以得到16个不同的虚拟地址和相应的二级表内索引,这16个二级表内索引是连续变化的,由此可以得到16个连续的二级描述符地址,但这16个地址中存放同一个大页基地址,即指向同一个大页。这样做是为了保证虚拟地址的高16位不变而低16位bits[15:0]连续变化时,所得到的连续的64K个地址在同一个大页内。即保证连续的虚拟地址空间映射到连续的物理地址空间。类似的,每一大页的页表条目必须在精细页表中重复64次。
——————
3.3.9 小页地址翻译过程
图3-7给出了在一个粗糙二级表中对一个4KB的小页的完整的翻译顺序。在精细二级表中对小页的翻译过程与此类似,不过要使用在Fine page table descriptor,B3-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描述了结合S和R位的访问权限位的含义。如果试图访问没有访问权限的存储区域,则产生访问允许错误(Permission Fault,见Aborts,B3-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 Register,C15中的C3)中的每相邻2个bit来控制。这样可以很快地对整个域的访问进行使能或禁止,因而可以非常高效地将某个域的地址空间包含在虚拟存储空间中,或者排除在虚拟空间之外。ARM支持两种域访问模式:
客户: 是域的使用者(执行程序、访问数据),并受到组成该域的各个段和页的访问权限的监控;
管理员:控制域的行为(域中的当前段和页、以及域的访问),并且不受组成该域的各个段和页的访问权限的监控。
一个程序可以是某些域的客户(Client),以及其他某些域的管理员(Manager),而对其余的域没有访问权。这使得在执行需要访问多种存储区域资源的程序时,对内存的保护非常灵活。表3-4说明了域访问控制寄存器中的相邻2bits是如何定义域访问权限的。
表3-4 域访问控制字段编码含义
值 |
访问类型 |
描述 |
0b00 |
无访问权 |
任何访问都将产生域错误(domain fault)。 |
0b01 |
客户 (Client) |
根据段描述符或页描述符中的访问权限控制位来决定访问权。 |
0b10 |
保留 |
使用该值会产生不可预知的结果 |
0b11 |
管理员 (Manager) |
访问不受段描述符或页描述符中访问权限控制位的制约,因而不会产生访问错误。 |
Sequential Memory Access:顺序内存访问
[参考资料]
[1]ARM Architecture Reference Manual,Sencond Edition,by David Seal and Addison Wesley. Download this manual:
[2]
[3]
[4]ARM体系结构与编程,杜春雷,清华大学出版社,2003年2月