分类: 嵌入式
2013-09-07 21:56:16
转换过程:
(1)根据给定的虚拟地址找到一级页表的描述符
(2)如果此描述符是段描述符,则返回物理地址,转换结束
(3)否则如果是二级页表描述符,继续利用虚拟地址在此二级页表中找到下一个描述符
(4)如果这二个描述符是页描述符,则返回物理地址
(5)其他情况出错
TTB base代表一级页表地址,将它写入协处理器CP15的寄存器C2(称为页表基址寄存器),一级页表的地址必须是16K对齐的(位[14:0]为0),一级页表中使用4096个描述符来表示这4G空间,每个描述符对应1M的虚拟地址,要么存储了他对应的1M物理空间的起始地址,要么存储了下一级页表的地址,使用虚拟地址MVA[31:20]进行引索(2的12次方正好为4096)
当一级描述符的最低两位为10时表示段段描述符[31:20]称为段基址,此描述符的低20位填充0后就是一块1MB的物理地址空间的起始地址,使用MVA[19:0]在这1MB来引索,所以,描述符的位[31:20]和MVA[19:0]就构成了这个虚拟地址MVA对应的物理地址
1:页表基址寄存器(TTB)位[31:14]和MVA[31:20]组成一个低两位为0的32位地址,MMU利用这个地址找到段描述符
2:取出段描述符的 [31:20],即段基址,它和MVA[19:0]组成一个32位的物理地址,这就是虚拟地址对应的物理地址 当一级描述符的最低两位为10时表示段段描述符[31:20]称为段基址,此描述符的低20位填充0后就是一块1MB的物理地址空间的起始地址,使用MVA[19:0]在这1MB来引索,所以,描述符的位[31:20]和MVA[19:0]就构成了这个虚拟地址MVA对应的物理地址
1:页表基址寄存器(TTB)位[31:14]和MVA[31:20]组成一个低两位为0的32位地址,MMU利用这个地址找到段描述符
2:取出段描述符的 [31:20],即段基址,它和MVA[19:0]组成一个32位的物理地址,这就是虚拟地址对应的物理地址
1:页表基址寄存器(TTB)位[31:14]和MVA[31:20]组成一个低两位为0的32位地址,MMU利用这个地址找到细页表描述符
2:取出细页地址描述符的位[31:12],即细页表基址,它和细页引索MVA[19:10]组成低两位为0的32位物理地址,据此即可找到极小页描述符
当二级页表的描述符的最低两位为10时表示小页
小页描述符位[31:12]称为小页基址,此描述符的低12位填充0后就是一块4KB物理地址空间的起始地址,粗页表中美个描述符表示4KB的物理空间,如果小页描述符保存在粗页表中,则只需要用一条描述符来保存一条小页描述符,类似,细页表中每条描述符只能表示1KB的物理空间,如果小页描述符保存在细页表中,则连续4个描述符都保存同一个小页描述符以保存在粗页表中的小页描述符,说明地址转换过程
1:页表基址寄存器(TTB)位[31:14]和MVA[31:20]组成一个低两位为0的32位地址,MMU利用这个地址找到粗页表描述符
2:取出粗页地址描述符的位[31:10],即粗页表基址,它和粗页引索MVA[19:12]组成低两位为0的32位物理地址,据此即可找到小页描述符
3:取出大页描述符的位[31:12],即小页基址,它和小页引索MVA[11:0]组成一个32位的物理地址,这就是虚拟地址对应的物理地址以保存在细页表中的小页描述符,说明地址转换过程
1:页表基址寄存器(TTB)位[31:14]和MVA[31:20]组成一个低两位为0的32位地址,MMU利用这个地址找到细页表描述符
2:取出细页地址描述符的位[31:12],即细页表基址,它和细页引索MVA[19:10]组成低两位为0的32位物理地址,据此即可找到小页描述符
3:取出小页描述符的位[31:12],即小页基址,它和小页引索MVA[11:0]组成一个32位的物理地址,这就是虚拟地址对应的物理地址用于在细页表中的引索的MVA[19:10]与用于小页引索的MVA[11:0]有重合位[11:10],当位[11:10]从00变化到11时,步骤2返回的大页描述符相同,所以粗页表中连续4个描述符都保存同一个大页