带你学习《深入理解计算机系统》虚拟存储器(2)——端到端地址翻译与多级页表

本文通过一个具体的示例详细解释了虚拟地址到物理地址的端到端地址翻译过程,涉及TLB的四路组相联结构和页表的分解。此外,还介绍了多级页表的概念,阐述了如何通过两级页表结构来优化空间利用和提高地址查找效率,强调了页表和页面的区别,以及多级页表在现代操作系统中的应用。
摘要由CSDN通过智能技术生成

 

一、端到端地址翻译示例

        从图上看,TLBI占了t位,而TLBT占了n-p-t位。

        上节我们刚把TLB开了个头,多说无益,还是具体来玩个实际例子吧,具体来做一个端到端(虚拟地址到物理地址)的地址翻译示例,来统筹下之前讲的知识点。先来做如下约定:

 

        1、老规矩,存储器按字节寻址,访问也按一字节访问;

        2、虚拟地址14位长(n=14),物理地址12位长(m=12),位数少点玩起来方便;

        3、页面大小是64字节(P=64),也就是说(p=6)

        4、TLB是四路组相联,总共16个条目;

        5、L1 d-cache是物理寻址、直接映射的,行大小为4字节,总共有16个组。

 

        这里得先贴出各个单元内的数据快照,以便分析,首先是TLB。

 

        先看上面的图,要明确一点,引入TLB就是为了进一步分级VPN的,而分解方式跟VPN本身的页表逻辑可能没有对应关系!

        由于页面大小64字节,p=6,因此虚拟页偏移VPO占用6位,既然是6位,再看虚拟地址是14位长(事先约定的,所以不是32位),剩下VPN是8位,也就是说TLB需要处理2^8也就是256个VPN值。而TLB是四路组相联,从上到下0~3这四路,由VPN的低两位——TLBI来标识;而TLB的四组中每组有四个条目,要处理总共256个VPN,它们被分成四路,也就是说每组还要对口处理64个VPN(256÷4=64)……注意到剩了6位给TLBT,他就是所谓的标记位,正刚好就能区分2^6=64个VPN,因此不管某个VPN被映射到哪一组,在同一组内是不会出现VPN重复歧义现象的,由TLBI确定组,再由TLBT确定标记位,于是8位VPN就这样通过6+2的方式被TLB分解和存储!

 

        好,那假设现在CPU要读取虚拟地址0x03d4处的值会出现什么情况?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值