26考研——存储系统(3)

408答疑


文章目录


一、存储器概述

二、主存储器

三、主存储器与 CPU 的连接

四、外部存储器

五、高速缓冲存储器

六、虚拟存储器

七、参考资料

鲍鱼科技课件

b站免费王道课后题讲解:

网课全程班:

26王道考研书


八、总结

复习提示

本章是历年命题重点,特别是有关 Cache 和虚拟存储器的考点容易出综合题。此外,存储器的特点、存储器的扩展(芯片选择、连接方式、地址范围等)、交叉存储器、Cache 的相关计算与替换算法、虚拟存储器与 TLB 也容易出选择题。读者应在掌握基本原理的基础上,多结合习题进行反复训练,以加深巩固。另外,读者需掌握存在 Cache 和 TLB 的计算机中的地址翻译与 Cache 映射问题,也建议结合 OS 复习。

思考题

  1. 存储器系统为何要分这些层次?计算机如何管理这些层次?
    • Cache-主存层在存储系统中主要对 CPU 访存起加速作用,即从整体运行的效果看,CPU 访存速度加快,接近于 Cache 的速度,而寻址空间和位价却接近于主存。
    • 主存-辅存层在存储系统中主要起扩容作用,即从程序员的角度看,他所使用的存储器的容量和位价接近于辅存,而速度接近于主存。因此从整个存储系统来看,就达到了速度快、容量大、位价低的效果。
    • 主存与 Cache 之间的信息调度全部由硬件自动完成。
    • 而主存与辅存的信息调度则采用虚拟存储技术实现,即将主存与辅存的一部分通过软/硬结合的技术组成虚拟存储器,程序员可用这个比主存实际空间(物理地址空间)大得多的虚拟地址空间(逻辑地址空间)编程,当程序运行时,再由软/硬件自动配合完成虚拟地址空间与主存实际物理空间的转换。
  2. 影响 Cache 性能的因素有哪些?
    • 决定 Cache 系统访存效率重要因素是命中率,它与很多因素有关:
      • 命中率与映射方式有关,全相联映射方式的命中率最高,直接映射方式的命中率最低。
      • 命中率与 Cache 容量有关,显然 Cache 容量越大,命中率就越高。
      • 命中率还与主存块(或 Cache 行)的大小有关,主存块的大小要适中。
    • 除上述因素外,系统是采用单级还是采用多级 Cache、数据 Cache 和指令 Cache 是分离还是合在一起、主存-总线-Cache-CPU 之间采用什么架构等,都会影响 Cache 的总体性能。
  3. 虚拟存储系统的页面是设置得大一些好还是设置得小一些好?
    • 页面大小要适中。
    • 页面大小时,平均页内剩余空间较小,可节省存储空间,但会使得页表增大,页面大小时也不能充分利用空间局部性来提高命中率;
    • 页面太大时,可减少页表空间,但平均页内剩余空间较大,会浪费较多存储空间,页面太大还会使页面调入/调出的时间较长。

常见问题和易混淆知识点

  1. Cache 行的大小和命中率之间有什么关系?

    • Cache 行的长度较大时,能充分利用程序访问的空间局部性,使一个较大的局部空间被一起调到 Cache 中,因此可以增加命中机会。但是,行长也不能太大,主要原因有两个:

      • 行长大使失效损失变大。也就是说,若未命中,则需花更多时间从主存读块。
      • 行长太大,Cache 项数变少,因此命中的可能性变小。
    • Cache 行的长度较小时,命中率会很低,但好处是存取块的代价较小。

  2. 发生取指令 Cache 缺失的处理过程是什么?

    • 程序计数器恢复当前指令的值。
    • 对主存进行读的操作。
    • 将读入的指令写入 Cache 中,更改有效位和标记位。
    • 重新执行当前指令。
  3. Cache 总容量与映射方式有何种关系?

    • C a c h e 总容量 = [ 每个 C a c h e 行标记项的容量(有效位、脏位、 L R U 替换位、标记位) + C a c h e 行长 ] × C a c h e 总行数 Cache 总容量 = [每个 Cache 行标记项的容量(有效位、脏位、LRU 替换位、标记位)+ Cache 行长] × Cache 总行数 Cache总容量=[每个Cache行标记项的容量(有效位、脏位、LRU替换位、标记位)+Cache行长]×Cache总行数

    • 其中,有效位和标记位是所有 Cache 所必需的;脏位只在 Cache 采用回写法时才需要设置;LRU 替换位只在 Cache 采用 LRU 替换算法时才需要设置。

    • 有效位:占1位,用于说明 Cache 行中的数据是否有效。

    • 脏位(修改位):占 1 位,回写法才需要设置,用以说明 Cache 行中的数据是否被修改过。

    • LRU 替换位:位数为 log ⁡ 2 \log_2 log2(组内块数),用于 LRU 替换算法中的访问计数。

    • 标记位 Tag:主存地址结构中的标记字段,其位数取决于所用的映射方式,用于匹配 Cache 行对应主存中的哪个块。

    • Cache 容量与映射方式的具体关系如下图所示。

相关推荐
梁下轻语的秋缘4 小时前
每日c/c++题 备战蓝桥杯(P1049 [NOIP 2001 普及组] 装箱问题)
c语言·c++·学习·蓝桥杯
加点油。。。。5 小时前
C语言高频面试题——指针函数和函数指针的区别
c语言·面试
刘婉晴5 小时前
【信息安全工程师备考笔记】第三章 密码学基本理论
笔记·安全·密码学
lkbhua莱克瓦246 小时前
用C语言实现——一个中缀表达式的计算器。支持用户输入和动画演示过程。
c语言·开发语言·数据结构·链表·学习方法·交友·计算器
晓数7 小时前
【硬核干货】JetBrains AI Assistant 干货笔记
人工智能·笔记·jetbrains·ai assistant
我的golang之路果然有问题7 小时前
速成GO访问sql,个人笔记
经验分享·笔记·后端·sql·golang·go·database
搞机小能手8 小时前
六个能够白嫖学习资料的网站
笔记·学习·分类
nongcunqq8 小时前
爬虫练习 js 逆向
笔记·爬虫
汐汐咯9 小时前
终端运行java出现???
笔记