ARM存储器之:存储管理单元MMU
一级页表和二级页表的特征如表15.21所示。
表15.21 一级页表和二级页表特征
类型 | 页表占用的存储空间 (单位:KB) | 支持的页大小 (单位:KB) | 页表项数目 |
一级页表 | 16 | 1024 | 4096 |
粗二级页表 | 1 | 1,4,64 | 1024 |
细二级页表 | 4 | 1,4,64 | 256 |
(2)传输表基地址
当处理器发出地址请求信号,而其要求的虚拟地址没有包含在TLB中时,MMU将会初始化一个产生过程。传输过程需要的地址转换表——传输表的基地址存放在协处理器寄存器c2中,MMU通过此基地址找到传输表,准备一次地址传输过程。
(3)基于一级页表的地址变换过程
基于一级页表的地址变换过程是指从虚拟地址到物理地址的转换只需要一级页表就能完成的地址转换。一级页表地址转换过程如图15.25所示。
图15.25一级页表地址转换过程
图15.25中,CP15寄存器c2中存放的是内存中一级页表的基地址。因为一级页表大小为16KB,也就是说,一级页表是16KB地址对齐的,所以c2中bits[13∶0]=0,bits[31∶14]为内存中页表基地址。
CP15的寄存器c2的bits[31∶14]和虚拟地址的bits[31∶20]结合作为一个31位数的高30位值,忽略32位值的最后两位,可以使用该值从页表中查到一个4字节的地址页表项。
一级页表支持以下4种类型的页表项。
·1MB段转换项;
·指向细二级页表的目录项;
·指向粗二级页表的目录项;
·产生中止异常的错误项。
系统通过页表项的低两位bits[1:0]来确定页表项的类型。页表项的格式要求二级页表的地址必须与其页大小的倍数对齐。一级页表的各种页表项的格式如图15.26所示。
图15.26一级页表项
如果bits[1:0]=0b10时,该页表项为段描述符(SectionDescriptor),段描述符定义了对应的1MB的虚拟存储空间的地址映射关系。
如果bits[1:0]=0b01时,该页表项包含了粗二级页表的物理地址。该粗二级页表定义了对应的1MB虚拟存储空间的地址映射关系。它可以实现以大页和小页为单位的地址映射。
如果bits[1:0]=0b11时,该页表项包含了细二级页表的物理地址。该细二级页表定义了对应的1MB虚拟存储空间的地址映射关系。它可以实现以大页、小页和极小页为单位的地址映射。
如果bits[1:0]=0b00时,说明此页表项是一个错误页表项。它将产生一个存储页错误。错误条件会导致预取指令中止或数据中止,这取决于具体的存储器访问类型。
存储器相关文章:存储器原理
评论