端到端的地址翻译

形式上来说,地址翻译是一个N元素的虚拟地址空间(VAS)中的元素和一个M元素的物理地址空间(PAS)中元素之间的映射,
在这里插入图片描述
下面的图片展示了MMU如何利用页表来实现这种映射,CPU中的一个控制寄存器,页表基址寄存器(Page Table Base Register,PTBR)指向当前页表。
使用页表的地址翻译
n位的虚拟地址包含两个部分:一个p位的虚拟页面位移(Virtual Page Offset,VPO)和一个(n-p)位的虚拟页号(Virtual Page Number,VPN),MMU利用VPN来选择适当的PTE。
以此类推,将页表条目中物理页号(PPN)和虚拟地址中的VPO串联起来,就得到相应的物理地址。
注意,因为物理和虚拟页面都是p字节的,所以物理页面偏移(PPO)和VPO是相同的。

一个具体的例子:
假设:
*内存是按字节寻址的。
*内存访问是针对1字节的字的(不是4字节的字)。
*虚拟地址是14位长的(n=14)。
*物理地址是12位长的(m=12)。
*页面大小是64字节(P=64)。
*TLB是四路组相联的,总共有16个条目。
*L1 d-cache是物理寻址、直接映射的,行大小为4字节,而总共有16个组。
在这里插入图片描述

假设:
在这里插入图片描述
CPU执行一条读地址0x03d4处字节的加载指令时:
首先,将地址翻译成二进制
在这里插入图片描述
对比图a:
找出是否命中和和是否缺页
再找出对应的PPN
如果不命中,再到图b中查找对应的PPN。
他通过将来自PTE的PPN和来自虚拟地址的VPO连接起来,就形成了物理地址。
MMU发送物理地址给缓存,缓存从物理地址中抽取出缓存偏移CO,缓存组索引CI
最后再通过查找图c的表格:比较标记位,读取在偏移量CO处的数据字节并将它返回给MMU,随后MMU将它传递到CPU。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值