ARM存储器之:存储管理单元MMU
(4)段描述符及其地址变换过程
如果一级页表页表项的bits[1∶0]=0b10,说明此页表项指向一个1MB的存储段。页表项的高12位代替虚拟地址的高12位来产生物理地址。该页表项还包含域属性、Cahche属性、缓冲器属性和访问权限属性。具体定义如表15.22所示。
表15.22 段页表项中各字段含义
字段 | 含义 |
bits[1:0] | 段页表项标识 |
bits[3:2] | 定义段的Cache和写缓存属性 |
bit[4] | 生产商定义 |
bits[8:5] | 本段所在的域 |
bit[9] | 当前未被使用,设置成0 |
bits[11:10] | 访问权限控制AP位,见表15.23 |
bits[19:12] | 当前未被使用,设置成0 |
bits[31:20] | 该段对应的物理空间基地址的高12位 |
表15.23 访问权限控制位的编码及其含义
访问权限控制AP | S | R | 特权模式 | 用户模式 |
0b00 | 0 | 0 | 不可访问 | 不可访问 |
0b00 | 1 | 0 | 只读 | 不可访问 |
0b00 | 0 | 1 | 只读 | 只读 |
0b00 | 1 | 1 | 不可预知 | 不可预知 |
0b01 | X | X | 读/写 | 无访问 |
0b10 | X | X | 读/写 | 只读 |
0b11 | X | X | 读/写 | 读/写 |
表中S和R位是CP15寄存器c1中的控制位,它们分别对应系统(S)和ROM(R)位。这两位用来在不同模式加速系统中访问大的存储块。
设置S位使得所有页具有不可访问权限,从而允许特权模式任务对页有读访问权限。因此通过改变CP15寄存器c1中的一位,所有标识为不可访问的空间一下子变为可用,而不需要改变每个页表项的AP位,节省了开销。
改变R位使得所有页具有不可访问权限,因而特权模式任务和用户模式任务对页都有读访问权限。同样,这一位可以加速对大块存储块的访问,而不需要修改许多页表项的值。
注意 | 地址转换过程中,在物理地址产生之前,将会按表2.22的编码对访问地址的权限进行检测。 |
基于段的地址变换过程如图15.27所示。
图15.27基于段的地址变换过程
(5)粗二级页表描述符及其地址变换过程
如果一级页表项的bits[1∶0]=0b01,说明此页表项包含一个粗二级页表首地址指针,同时还包含一级页表项代表的1MB虚存段的域信息。粗页表必须与1KB的倍数地址对齐。页表项具体定义见表15.24。
表15.24 粗二级页表项中各字段含义
字段 | 含义 |
bits[1:0] | 粗二级页表描述符标识 |
bits[4:2] | 生产商定义 |
bits[8:5] | 域标识符 |
bit[9] | 当前未被使用,设置成0 |
bits[31:10] | 粗二级页表基地址,该地址1KB对齐 |
基于粗二级页表的地址变换过程如图15.28所示。
(6)细二级页表描述符及其地址变换过程
如果一级页表项的bits[1:0]=0b11,说明此页表项包含一个细二级页表首地址指针,同时还包含一级页表项代表的1MB虚存段的域信息。细页表必须与4KB的倍数地址对齐。页表项具体定义如表15.25所示。
图15.28基于粗二级页表的地址变换过程
表15.25 细二级页表项中各字段含义
字段 | 含义 |
bits[1:0] | 细二级页表描述符标识 |
bits[4:2] | 生产商定义 |
bits[8:5] | 域标识符 |
bits[11:9] | 当前未被使用,设置成0 |
bits[31:12] | 细二级页表基地址,该地址4KB对齐 |
存储器相关文章:存储器原理
评论