关于虚拟内存和物理内存的映射和地址转换

· 地址翻译及数据获取
页表存储的是虚拟内存和物理内存之间的一种映射关系,而MMU是实现地址翻译的一个模块。CPU通过虚拟地址请求数据且页面命中的过程大致如下:
(1)CPU生成一个虚拟地址传递给MMU
(2)MMU会根据虚拟地址生成PTE地址,然后到内存中查询PTE
(3)内存返回PTE给MMU
(4)MMU解析PTE,得到物理地址,传送回内存
(5)最后内存将数据传给CPU。
在这里插入图片描述
上图是较为简单的结构,实际上系统会对PTE条目进行缓存,利用高速缓存区或者TLB。
TLB为翻译后备缓存器,包含在MMU中,其中每一行保存一个由单个PTE组成的块。
在这里插入图片描述
·和学习高速缓存一样,下面以一个具体的地址翻译例子,来加深对这部分内容的理解。
假设有以下系统:
· 内存按字节寻址
· 内存访问针对1字节的字(而不是4字节的字)
· 虚拟地址14位
· 物理地址12位
· 页面大小64字节
· TLB四路组相联,共16个条目(4组每组4个条目).
· L1 d-cache是物理寻址,直接映射的。行大小为4字节,共有16个组。

1.先来分析虚拟地址和物理地址中页号和偏移量的占位情况。
(1)虚拟地址14位,即范围为214(16K),又页面大小为64(26)
用2^14 / 2^6 = 2^8,即有256个页,所以需要8位来表示页号。
故页号为8位,偏移量为14-8 = 6
在这里插入图片描述
(2)物理地址中偏移位数与虚拟地址中一致,所以物理地址中物理页偏移位数为6,物理页号位数为12-6 = 6位。
在这里插入图片描述
(3)TLB是通过VPN进行寻址的,四组相联,即组索引为2位(TLBI),标志位8-2 = 6位(TLBT)。
在这里插入图片描述
2.下面给出TLB,高速缓存的存储情况
TLB
TLB中缓存了一部分PTE,目前我们只需要关注该部分,即考虑PTE命中。
在这里插入图片描述
回顾之前学的高速缓存,现在需要将物理地址划分为:标记,组索引,偏移量。
16个组,所以组索引(CI)为4位;行大小为4字节,所以偏移量(CO)需2位;剩下的标记位(CT)12-4-2 = 6位。
在这里插入图片描述
下面给出高速缓存存储情况
在这里插入图片描述
3.寻址
假设CPU要执行一条读地址为0x03d4处字节。
该地址是虚拟地址,先解析出其信息
在这里插入图片描述
即组为3,标记位为03,查表得
在这里插入图片描述
PTE命中,有效位为1,且该页在内存中,页命中。此时获得物理页号,又VPO为0x14,所以PPO也为0x14。将物理页号和PPO连起来
在这里插入图片描述
获得物理地址PA = 0x354,再划分位数,从高速缓冲区获取数据 标记0D,第5组,0偏移量。
在这里插入图片描述
在这里插入图片描述
获得字节数据0x36。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值