[31:10]为粗页表基址,此描述符低10位填充0后就是一个二级页表的物理地址,二级页表含256个条目(使用[9:2],2^8=256个),称为粗页表(Coarse page table)。其中每个条目表示4KB大小的物理地址空间,一个粗页表表示1MB物理地址
0b10:段(Section)
[31:20]为段基址,此描述符低20位填充0后就是一块1MB物理地址空间的起始地址。MVA[19:0],用来在这1MB空间中寻址。描述符的位[31:20]和MVA[19:0]构成了这个虚拟地址MVA对应的物理地址
以段的方式进行映射时,虚拟地址MVA到物理地址PA的转换过程如下:
1、页表基址寄存器位[31:14]和MVA[31:20]组成一个低两位为0的32位地址,MMU利用这个地址找到段描述符
2、取出段描述符的位[31:20](段基址),它和MVA[19:0]组成一个32位的物理地址(这就是MVA对应的PA)
0b11:细页表(Fine page table)
[31:12]为细页表基址(Fine page table base address),此描述符的低12位填充0后,就是一个二级页表的物理地址。此二级页表含1024个条目(使用[11:2],10位),其中每个条目表示大小1kb的物理地址空间,一个细页表表示1MB物理地址空间
二级页表描述符
最低两位:
0b00:无效
0b01:大页描述符
位[31:16]为大页基址,此描述符的低16位填充0后就是一块64KB物理地址空间的起始地址粗页表中的每个条目只能表示4KB物理空间,如果大页描述符保存在粗页表中,则连续16个条目都保存同一个大页描述符。类似的,细页表中每个条目只能表示1KB的物理空间,如果大页描述符保存在细页表中,则连续64个条目都保存同一个大页描述符。
下面以保存在粗页表中的大页描述符为例,说明地址转化那过程
1、页表基址寄存器[31:14]和MVA[31:20]组成一个低两位为0的32位地址,MMU利用这个地址找到粗页表描述符
2、取出粗页表描述符的[31:10](即粗页表基址),它和MVA[19:12]组成一个低两位为0的32位物理地址,通过这个地址找到大页描述符
3、取出大页描述符的[31:16](即大页基址),它和MVA[15:0]组成一个32位的物理地址,即MVA对应的PA
步骤2和3中,用于在粗页表中索引的MVA[19:12]、用于在大页内寻址的MVA[15:0]有重合的位[15:12],当位[15:12]从0b0000变化到0b1111时,步骤2得到的大页描述符相同,所以粗页表中有连续16个条目保存同一个大页描述符
0b10:小页描述符
[31:12]为小页基址(Small page base address),此描述符的低12位填充0后就是一块4kb([11:0],一共12位,2^12=4096)物理地址空间的起始地址。粗页表中每个条目表示4kb的物理空间,如果小页描述符保存在粗页表中,则只需要用一个条目来保存一个小页描述符。类似的,细页表中每个条目只能表示1kb的物理空间,如果小页保存在细页表中,则连续4个条目都保存同一个小页描述符。
下面以保存在粗页表中的小页描述符为例,说明地址转换过程:
1、页表基址[31:14]和MVA[31:20]组成一个低两位为0的32位地址,MMU利用这个地址找到粗页表描述符
2、取出粗页表描述符[31:10](即粗页表基址),它和MVA[19:12]组成一个低两位为0的32位物理地址,用这个地址找到小页描述符
3、取出小页描述符的位[31:12](即小页基址),它和MVA[11:0]组成一个32位物理地址(即MVA对应的PA)
小页描���符保存在细页表中,地址转换过程和上面类似。
0b11:极小页描述符