在多级页表系统中,TLB(Translation Lookaside Buffer)存储的是最终的虚拟页号(VPN)到物理页号(PPN)的映射,而不是单独的一级或二级页表的映射。在24位虚拟地址空间中(12位一级页表,12位二级页表,10位块内偏移),TLB的映射是基于完整的24位虚拟页号的。
当发生TLB缺失时,处理器需要访问一级和二级页表来获取映射。首先,处理器使用前12位访问一级页表,获取二级页表的地址。然后,使用后12位访问二级页表,获取物理页号。这个24位虚拟页号到物理页号的映射然后被添加到TLB中。
因此,在这个系统中,虽然一级和二级页表分别使用12位地址,但TLB中的映射是基于完整的24位虚拟页号的。这样,即使二级页表中的页号可能与一级页表中的页号不同,但在TLB中,它们都是基于完整的虚拟页号的。
假设我们有一个二级页表系统,并且我们有一个快表。以下是一个虚拟地址到物理地址的转换过程:
-
CPU生成一个虚拟地址。这个虚拟地址被分为三部分:一级页表索引,二级页表索引和页内偏移。
-
CPU首先使用一级页表索引和二级页表索引来查找快表。如果在快表中找到了匹配的项(即快表命中),则使用快表中的物理页帧号和页内偏移来生成物理地址。
-
如果在快表中没有找到匹配的项(即快表未命中),则CPU使用一级页表索引来访问一级页表。一级页表中的条目指向二级页表。
-
CPU使用二级页表索引来访问二级页表。二级页表中的条目包含物理页帧号。
-
CPU将二级页表中的物理页帧号和页内偏移组合起来生成物理地址。
-
同时,CPU将一级页表索引,二级页表索引和物理页帧号的组合添加到快表中,以便下次可以直接从快表中获取这些信息,而无需访问页表。