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未命中,高速缓冲未命中,缺页等,这些读者可以自行实践 。
好了,虚拟地址翻译物理的过程和实践,介绍完了,谈下一个话题 。
推荐阅读
- 彻底搞懂虚拟内存,虚拟地址,虚拟地址空间
- 如何彻底搞懂Mysql事务原理
- 桃花治便秘最彻底的偏方法,桃花的功效与作用
- 帮你彻底搞懂 JS 中的 prototype、__proto__与constructor
- 电池|一季度动力电池装机量排行榜:宁德时代彻底无敌 以一打十
- 虚拟主机和云主机的区别是什么?
- 一篇文章让你彻底理解回调函数
- 一文带你轻松搞懂事务隔离级别
- HashMap初始容量总结,彻底吃透位运算,简历立马多项熟练
- 理论与实践相结合彻底理解CORS