彻底搞懂虚拟地址翻译为物理地址的过程( 三 )


TLB映射表

彻底搞懂虚拟地址翻译为物理地址的过程

文章插图
高速缓冲映射表
页表总共有256项,我们把前16项列出,如下图
彻底搞懂虚拟地址翻译为物理地址的过程

文章插图
页表前16项
好了,一切就绪,假设CPU访问的虚拟地址是0x03d4,它的二进制是16位即00000011 11010100,而虚拟地址只有14位,所以高2位被抛弃,如下图
彻底搞懂虚拟地址翻译为物理地址的过程

文章插图
0x03d4虚拟地址分布图
由上图得知,组号(TLBI)为11即0x03,标记位(TLBT)为000011即0x03,从TLB映射表查找,发现命中了,如下图
彻底搞懂虚拟地址翻译为物理地址的过程

文章插图
TLB命中
由上图命中了红色部分的标记位,PTE中的PPN=0x0D,有效位为1,我们根据PPN然后在加上虚拟页偏移量,如下图
彻底搞懂虚拟地址翻译为物理地址的过程

文章插图
虚拟地址
由上图,我们得知虚拟页偏移量(VPO)为010100=0x14,虚拟页偏移量(VPO)=物理页偏移量(PPO),即PPO=0x14,PPN和PPO连接起来就是物理地址PA即001101010100=0x354,如下图
彻底搞懂虚拟地址翻译为物理地址的过程

文章插图
物理地址
由上图得知,组号是0101即0x05,块号(CO)为00即0x00,标记位为001101即0x0D,通过组号+标记位+块号,可以定位到高速缓冲的数据0x36,如下图所示
彻底搞懂虚拟地址翻译为物理地址的过程

文章插图
物理地址命中数据
物理地址对应的数据找到了,返回给了CPU,当然也可能发生其他的情况,如TLB未命中,高速缓冲未命中,缺页等,这些读者可以自行实践 。
好了,虚拟地址翻译物理的过程和实践,介绍完了,谈下一个话题 。




推荐阅读