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 容量与映射方式的具体关系如下图所示。

相关推荐
掘金-我是哪吒23 分钟前
分布式微服务系统架构第134集:笔记1运维服务器经验,高并发,大数据量系统
运维·笔记·分布式·微服务·系统架构
XQ丶YTY39 分钟前
TCP/UDP协议原理和区别 笔记
笔记·tcp/ip·udp
孞㐑¥1 小时前
Linux之基础IO
linux·开发语言·c++·经验分享·笔记
瓦力wow1 小时前
c语言 写一个五子棋
c语言·c++·算法
hjjdebug2 小时前
c/c++数据类型转换.
c语言·c++·数据类型变换
花火QWQ2 小时前
图论模板(部分)
c语言·数据结构·c++·算法·图论
Pacify_The_North3 小时前
【进程控制二】进程替换和bash解释器
linux·c语言·开发语言·算法·ubuntu·centos·bash
wuqingshun3141593 小时前
经典算法 (A/B) mod C
c语言·开发语言·c++·算法·蓝桥杯
半青年3 小时前
Qt图表库推荐指南与分析
c语言·开发语言·javascript·c++·qt·信息可视化
jackson凌3 小时前
【Java学习笔记】【第一阶段项目实践】房屋出租系统(面向对象版本)
java·笔记·学习