总结
-
没有 TLB 的情况下,单级页表访问一次,多级页表可能需要访问两次甚至更多次。
-
使用 TLB 后,大部分情况下只需访问一次页表(命中情况下直接完成转换),未命中的情况下才需访问页表的所有层级。
通过 TLB 缓解页表访问延迟是现代虚拟存储管理的重要优化手段。
¶1. 单级页表的地址转换
在单级页表中,虚拟地址通过以下步骤转换为物理地址:
-
页号查找:通过虚拟地址中的页号部分访问页表,找到对应的页表项,获取物理页号。
-
偏移量加法:将物理页号与虚拟地址中的页内偏移量结合,得到物理地址。
此时,页表只需访问一次。但由于页表存储在主存中,这次访问本身也需要访问主存一次,增加了访问延迟。
¶2. 多级页表的地址转换
在多级页表中(例如二级页表),为了减小页表占用的内存,页表被分解为多个层级。虚拟地址的转换过程如下:
-
从虚拟地址中提取多级页号(如一级页号和二级页号)。
-
第一级页表访问:使用一级页号查找一级页表,找到指向二级页表的地址。
-
第二级页表访问:使用二级页号查找二级页表,找到对应的物理页号。
-
偏移量加法:将物理页号与页内偏移量结合,生成最终物理地址。
此时,由于需要分别访问一级页表和二级页表,因此需要两次内存访问。
¶3. TLB 的作用
为了避免多次访问页表带来的性能开销,现代系统中通常会使用 TLB 来缓存常用的页表项。如果虚拟地址对应的页表项已经在 TLB 中:
-
地址转换直接通过 TLB 完成,只需访问一次主存。
-
如果 TLB 未命中,则需要按上述流程访问多级页表,并更新 TLB。
¶4. 具体分析
-
单级页表:理论上只需访问一次页表(加上实际的数据访问总共两次主存访问)。
-
多级页表:可能需要访问页表两次(或更多次),再加上最终的数据访问,总计三次或更多主存访问。
-
带 TLB 的多级页表:在 TLB 命中的情况下,地址转换和数据访问总共只需两次主存访问。
¶总结
-
没有 TLB 的情况下,单级页表访问一次,多级页表可能需要访问两次甚至更多次。
-
使用 TLB 后,大部分情况下只需访问一次页表(命中情况下直接完成转换),未命中的情况下才需访问页表的所有层级。
通过 TLB 缓解页表访问延迟是现代虚拟存储管理的重要优化手段。