CPU访问一个虚拟地址的整体流程(CPU访问存储系统的整体流程)

一、虚拟地址转换成物理地址

  1. 涉及到的部件:
    • MMU:虚拟地址—MMU—>物理地址。MMU会控制整个流程(查快表、查慢表等等)
    • TLB快表:组号(若为组相联TLB)、TLB标记、有效位、页框号
    • 页表(慢表):(隐含页目录号)、有效位、在外存中地址、脏位、页框号(应该还有其他的位,但408不需要了)
      • 每个进程有自己的页表,操作系统负责分配物理主存和更新页表。页表包含了每个可能的虚拟页的映射(磁盘上的位置以及调入主存后的主存物理地址),因此不需要标记位
    • 虚页号与实页号的对应关系存在页表中,页表存在主存中,比较活跃的页表项存在TLB中,TLB相当于专用于存页表的Cache。故转换时先查TLB,若TLB不命中,再查页表,若页表不命中(有效位为0),说明该页还未调入主存,需发出缺页中断,从辅存中调入并更新页表和TLB。若TLB或页表命中,则说明该页面已经在主存中
  2. 流程:
    • 先判断是否越界:虚拟页号是否小于页表长度。若越界则产生越界中断(内中断),不越界才能正常往下执行
    • 用虚拟页号查TLB
      • 全相联TLB:用虚拟页号和TLB标记比较;组相联TLB:用虚拟页号后 l o g 2 ( 组数 ) log_2(组数) log2(组数)位选中一个分组,用虚拟页号前面剩下的位和组内的(路数)个TLB标记比较
      • 处理TLB缺失:当TLB中没有一个表项能匹配虚拟地址时,TLB缺失就会发生。TLB缺失有以下两种可能
        • 页在主存中,只需创建缺失的TLB表项。MIPS的方案是先从主存中取出页表项装入TLB,然后重新执行引起TLB缺失的那条指令,这时就会得到TLB命中
        • 页不在主存中,需要先缺页中断。缺页将在指令周期的中断周期被发现。为了在缺页处理完毕后重新启动引起缺页的指令,必须保存该指令的PC值。
    • 若TLB未命中,用虚拟页号查页表(慢表)
      • 若慢表中对应虚拟页号的页表项,有效位为1,说明其在内存中,通过其物理页框号得到该虚拟地址的实际物理地址
      • 若慢表中对应虚拟页号的页表项,有效位为0,说明其不在内存中,产生缺页中断
        • 通过其在外存中的地址(页表项中的一项内容),将该页从外存调入内存。
          • 若有空闲页框,则直接分配内存(页框),将目标页调入内存(涉及磁盘I/O),修改页表
          • 若为进程分配的驻留集已满,则根据规定的置换算法,从当前页表中那些有效的页表项中选一页,换进来。这会导致当前访问的虚拟页号所对应的页表项的物理页框号和那个刚刚被换出的物理页框号一样。主要此时这个被换出的页的有效位为0
      • 页表的位置位于页表寄存器中(一共有1个页表寄存器,每个进程都有自己的页表始址。操作系统调度进程上处理机运行时,会从该进程的PCB中读取其页表始址,将其复制到页表寄存器中)。页表始址+页号就可以定位到指定页表项(因为页表项的大小一样,和数组一样,可实现随机查找)
        请添加图片描述

注:上面这张图在处理完缺页后的流程不太适用于408真题,请参见这篇博客,详细说明了这里的步骤

  1. 查阅:
    • 计算机组成:P2-存储器管理
    • 计算机组成:saotu-存储系统大全图
    • 操作系统:P2_进程的内存示意图
    • 操作系统PPT:3.1.4_2 基本地址变换机构
    • 09年统考真题(书P212)
    • 中文版计组软硬件接口

二、根据物理地址获取数据

查cache、查内存。
待续。。。

  • 提高相联度需要更多比较器,同时cache块中的标记位数也要增加

三、一道题目

在这里插入图片描述
如本题就是在考察CPU给一个地址处的变量增3的过程,访问主存最少时的过程如下:

  1. 地址xaddr实际上是虚拟地址,需要先经过虚实地址转换,过程为
    • 先用虚拟地址xaddr去查TLB,命中,MMU给出xaddr对应的物理地址
  2. CPU拿着这个物理地址,先将该地址内的变量读进来,+3,然后再写回去,具体如下:
    • 先用这个物理地址去匹配cache,命中,将cache中该地址的内容+3
    • 由于采用直写法(即全写法),则需要将+3后的内容写回主存和cache,这里需要访存
  3. 由此,最少访问1次主存,选B

访问主存最多时的过程如下(自己写的,不保证对):

  1. 虚实地址转换:
    • 查TLB,没有
    • 查页表(第1次访存):该页面的有效位为0,产生缺页中断,通过页表项中该页在外存中的地址,将该页从外存调入内存
      • 若有空闲页框,则直接分配内存(第2次访存)
      • 若为进程分配的驻留集已满,则根据置换算法选出一页换出去(第2次访存),然后将该页调入页表和TLB(第3次访存)【因为这里是算最多情况,因此下面的都从这开始算】
    • 缺页中断完成后,重新执行这条指令
      • 访问TLB(命中),MMU给出xaddr对应的物理地址
  2. 访问数据:CPU拿着这个物理地址:
    • 访问cache:不命中
    • 访问主存,将该地址的内容读进来(第4次访存)
    • 将内容+3后写回主存(第5次访存)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值