本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对
计算机组成
知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!!
关于对存储系统
章节知识点总结的十分全面,涵括了《计算机组成原理》课程里的全部要点(本人来来回回过了三遍视频),其中还陆陆续续补充了许多内容,所以读者可以相信本篇博客对于考研计算机组成原理 “存储系统” 章节知识点的正确性与全面性;
但如果还有自主命题的学校,还需额外读者自行再观看对应学校的自主命题材料。
计算机组成原理
笔记导航
- 第一章 计算机系统概述
- 第二章 数据的表示和运算
- 第三章 存储系统
⇦当前位置
- 第四章 指令系统
- 第五章 中央处理器
- 第六章 总线
- 第七章 输入输出系统
计算机组成原理 复试精简笔记 (加班中...)
- 408 全套初复试笔记汇总 传送门
如果本篇文章对大家起到帮助的话,跪求各位帅哥美女们,
求赞 、求收藏 、求关注!
你必考上研究生!
我说的,耶稣来了也拦不住!
食用说明书:
第一遍学习王道课程时,我的笔记只有标题和截图,后来复习发现看只看图片,并不能很快的了解截图中要重点表达的知识点。
在第二遍复习中,我给每一张截图中 标记了重点,以及 每张图片上方总结了该图片 对应的知识点 以及自己的 思考 。
最后第三遍,查漏补缺。
所以 ,我把目录放在博客的前面,就是希望读者可以结合目录结构去更好的学习知识点,之后冲刺复习阶段脑海里可以浮现出该知识结构,做到对每一个知识点熟稔于心!
请读者放心!目录展示的知识点结构是十分合理的,可以放心使用该结构去记忆学习!
注意(⊙o⊙)!,每张图片上面的文字,都是该图对应的知识点总结,方便读者更快理解图片内容。
【考纲内容】
王道 P94
(一) 存储器分类
(二) 层次化存储器的基本结构(一)和(二)网课耗时:
1 h
(三) 半导体随机存取存储器
- SRAM、DRAM、Flash存储器;
(四) 主存储器
- DRAM芯片和内存条、多模块存储器、主存和CPU之间的连接;
(三)和(四)网课耗时:
0.5 h
(五) 外部存储器
网课耗时:
1 h
- 磁盘存储器、固态硬盘(SSD);
(六) 高速缓冲存储器(Cache)
网课耗时:
1.5 h
- Cache的基本原理;
- Cache和主存之间的映射方式;
- Cache中主存块的替换算法;
- Cache写策略
(七) 虚拟存储器
网课耗时:
1 h
- 虚拟存储器的基本概念;
- 页式虚拟存储器:基本原理、页表、地址转换、TLB(快表);
- 段式虚拟存储器的基本原理;
- 段页式虚拟存储器的基本原理;
【复习提示】
本章是历年命题重点,特别是有关 Cache 和 虚拟存储器 的考点容易出 综合题 ;
存储器的特点,存储器的扩展(芯片选择、连接方式、地址范围等),交叉存储器,Cache的相关计算与替换算法,虚拟存储器与快表也容易出 选择题 ;
读者需掌握存在 Cache 和 TLB 的计算机中的地址翻译与Cache映射问题,也建议结合 操作系统 - 内存管理 一起复习;
知识点 | 选择题 | 综合题 |
---|---|---|
存储器的特点 | ✔ | |
存储器的扩展 | ✔ | |
交叉存储器 | ✔ | |
Cache | ✔ | ✔ |
Cache的相关计算与替换算法 | ✔ | |
虚拟存储器 | ✔ | ✔ |
快表 | ✔ |
1. 存储器的层次结构
存储器的三大评判指标:速度、容量、价格
使用任意一种存储器,都无法满足用户对存储器 高速、大容量、低价格 的需求,所以采用 多级结构 形成对应的 “存储体系“。
存储体系:把两个或两个以上的存储介质,通过 软件、硬件 或 软硬件结合 的方式,把它们连成一个整体。使得这个存储体系具有高速、大容量、低价格的特点。
- 主存 - 辅存 结构解决 容量 问题;
- 缓存 - 主存 结构解决 速度 问题;
主存和CPU两者的速度存在不匹配问题,故使用 cache缓存 进行解决,这里面还涉及到 局部性原理(时间、空间)
缓存 - 主存 层次采用 硬件方式 连成一个整体(为了追求速度);
主存 - 辅存 层次采用 软、硬件结合方式 连成一个整体;
主存 - 辅存 构成 虚拟存储器 ,使用虚地址(逻辑地址);
缓存 - 主存 使用主存储器地址,也就是实地址(物理地址);
2. 存储器的分类
① 按 层次结构 分类
② 按 存储介质 分类
- 半导体存储器
- 磁表面存储器
- 光存储器
③ 按 存取方式 分类
- 随机存储器:存储器的任何存储单元都能被 随机存取 ,且存取时间和存储单元的物理位置 无关;(半导体存储器是随机)
- 顺序存储器:存储器只能按照 某种顺序来存取 ,存取时间和存储单元的物理位置 有关;(磁带是顺序,磁盘是半顺序)
④ 按 信息的可更改性 分类
- 只读存储器(ROM)
- 随机读写存储器(RAM)
⑤ 按 信息的可保持性 分类
- 易失性存储器
- 非易失性存储器
3. 存储器的性能指标
字存储单元 :存放一个机器字的存储单元,相应的单元地址叫做 字地址 ;
字节存储单元 :存放一个字节的存储单元,相应的单元地址叫做 字节地址 ;
按字寻址 :计算机可编址的最小单位是 字存储单元 ;
按字节寻址 :计算机可编址的最小单位是 字节存储单元 ;
再补充下 字的概念:
- 如果指单位 :一个字 = 2个字节 ;
- 如果指机器字 :就是计算机一次运算的数据位数(32位、64位);
- 如果指存储字 :每个存储单元的位数(一般是1B);
存储字长是指存放在一个存储单元中的二进制代码个数,内存中存储字的长度,存储字长可以是8位、16位、32位等;
不要把字节和字长混淆 。因为1字节 = 8位(一般情况下),所以存储字长都是8的倍数。(1字长 = n字节)
下图举例说明:
地址线24根,224 = 16MB, 此时 1字节就是1B,所以按字节寻址的范围就是16M;
按字寻址时,如果字长为16位,那么1字长(16)就是2字节(2 * 8),此时按字寻址的范围就是8M;
关键就是看 字长等于几字节
小结
CPU 要实现对存储单元的访问,首先要 选择存储芯片 ,即进行 片选;
然后为选中的芯片依地址码 选择相应的存储单元 ,以进行数据的存取,即进行 字选;
片内的字选通常是由CPU送出的N条低位地址线完成的,地址线直接接到所有存储芯片的地址输入端 (N 由片内存储容量决定);
片选信号的产生分为 线选法 和 译码片选法;
1. 半导体元件的原理
每个存储器由 存储体、MAR 和 MDR 构成,在 时序控制逻辑 的控制下有条不紊地运行; 存储体(存储矩阵)由多个 存储单元 构成,一个存储单元由多个 存储元 构成;
2. 存储芯片的基本原理
如何根据地址,去读/写某个存储字? n位地址 代表 2n个存储单元,译码器 根据地址寄存器送来的地址,转为某一条 字选线 的高电平信号;
加压之后,对应的MOS管连通,之后进行读、写操作;
MAR 不稳定,只有当其电信号稳定之后,控制电路 才会打开 译码器 的开关,让其翻译地址;
当 MDR 的输出稳定之后,控制电路 才会认为此时的输出是正确的,才让其给 数据总线 传输数据;
片选线:选择存储芯片是否有效;
考试还会让你根据地址线、数据线、片选线、读/写控制线等信息,确定金属引脚的数量;
3. 如何实现不同的寻址方式
小结
1. DRAM和SRAM存储元件不同导致的特性差异
栅极电容是 ==破坏性读出,==读出就放电了,所以在读出之后还得 重写;
双稳态触发器是 ==非破坏读出,==所以速度更快;
双稳态触发器成本高,功耗高,更贵;
DRAM v.s SRAM
电容里面的电荷会逐渐消失,所以必须在消失前进行 刷新
2. DRAM的刷新
3. DRAM的地址线复用技术
行地址,列地址一共n位,但可以用 n/2条地址线分别送到行地址缓冲器、列地址缓冲器里;
小结
1. 各种ROM的信息
2. 计算机内的重要ROM
小结
补充一下:地址线和数据线的根数 取决于 存储器芯片 的容量,如何理解这句话?
分析:
① 先假设有一个存储芯片的容量为1GB
② 可能是下面几种情况:
1GB = 1G * 1B
= 512M * 2B
= 256M * 4B = 存储单位个数 * 存储单位位数
虽然这三种情况容量都是1GB,但代表了三个不一样的存储器。
③ 以 1G * 1B 举例:
1G = 230,也就是 30根地址线
1字节 = 8位,也就是 8根数据线
(1) 位扩展
(2) 字扩展
① 线选法
② 译码片选法
使用 1-2 译码器 进行字扩展,1-2 代表输入一位信号得到2种输出结果;
下图左边存储芯片,当地址为 1x xxxx xxxx xxxx 时,存储芯片工作;
下图右边存储芯片,当地址为 0x xxxx xxxx xxxx 时,存储芯片工作;
==3-8 译码器,==输入 ==000,==对应的 第1条线高电平信号;
==3-8 译码器,==输入 ==001,==对应的 第2条线高电平信号;
==3-8 译码器,==输入 ==010,==对应的 第3条线高电平信号;
使用 2-4 译码器 进行字扩展
输入 00、01、10、11
当 2-4 译码器 的两条输入线接 A13、A15 时,A14 是什么都没关系;
(3) 字位扩展
位扩展,增加存储字长,提高数据总线传输能力;
字扩展,增加存储字数,提高CPU寻址能力;
小结
3-8 译码器
下图右边的译码器,有 EN 使能端 和 小圆圈(非门)
使能端,让译码器工作;
注意下图多个 使能,只有输入 100 时,译码器才有效;
CPU可使用译码器的 使能端 控制 片选信号 的生效时间;
CPU先送出地址信号,说我要取数据了;
但是 MRER 会等到 地址信号稳定后再发出存储器请求信号
双端口RAM可以优化 多核CPU 访问一根内存的速度;
(1) 多体并行存储器
采用高位交叉编制时,用高位的地址来区分使用哪个存储单元;低位交叉编制同理;
高位编制,访问 ==00 000 ~ 00 100,==读了5个存储字,耗时5T
对于低位交叉编制,耗时:T + (n-1) × r
为什么低位交叉编制可以不用等待恢复时间呢 ?
因为低位交叉编制,是 一个个存储芯片交替使用,高位交叉是一直占用一个存储芯片,直到满了再去下一个存储芯片;
为什么要探讨 连续访问 的情况 ?
因为很多数据、数据结构在内存中就是被连续存储;
m ≥ T / r
一般来说,存取时间 与 总线传输周期 是同一个概念
(2) 单体多字存储器
小结
注意和==《操作系统》第5章 输入输出管理 5.3 磁盘和固态硬盘== 联系起来学习;
1. 磁盘原理
(1) 磁盘设备的组成
(2) 磁盘的性能指标
(3) 磁盘地址
2. 磁盘阵列
小结
1. Cache的工作原理
【问题】Cache的作用 ?
答:弥补CPU与内存之间的速度差异;
【问题】Cache的工作原理 ?
答:程序访问的局部性;
Cache由SRAM构成,具体特性可复习 3.2.2 SRAM和DRAM;
目前已经被集成到CPU内部,下图中Cache在CPU外部只是为了更好地展示效果;
2. 局部性原理
3. 性能分析
4. 主存和缓存的编址
主存与Cache之间以 块 为单位进行数据交换;
小结
【问题】什么是地址映射 ?
答:从主存调入指定块到Cache里,该放到Cache的哪一块里;
【问题】Cache如何标记已经存放的主存块 ?
答:使用 ==有效位 + 标记位,==标记位记录存放的是哪一块主存块,有效位记录标记位是否有效;
全相联映射,任意找空闲块存放;
使用 全相联映射 的访存过程
直接映射,固定的映射关系;
缺点:空闲区不能用,必须一一对应;
对 标记 进行优化
使用 直接映射 的访存过程
组相联映射:组间直接映射 + 组内全相联映射;
组相联映射 的地址结构
使用 组相联映射 的访存过程
小结
Cache 的总容量包括:存储容量、标记阵列容量(有效位、标记位)
(标记阵列中的一致性维护位 和 Cache 数据一致性维护方式相关,替换算法控制位和替换算法相关)
直接映射方式无需考虑替换算法
FIFO没考虑 ==局部性原理,==可能会发生 抖动现象
LRU算法的Cache命中率高;但如果 ==频繁访问的主存块数量 > Cach行的数量,==则有可能发生 抖动;
LRU的缺点:过去经常访问的主存块在未来不一定会用到;
小结
近期最少使用 与 最不经常使用 很容易混淆,区别小技巧:
LRU 淘汰一段时间内最久没有被访问的,可以理解为 淘汰老人(很久没被访问了) ;
LFU 淘汰访问次数最小的,可以理解为 淘汰废物(不怎么被访问)
因为读操作不会导致Cache与主存的数据不一致,所以只需考虑写操作;
当CPU对Cache写操作时,如果Cache里有目标块,就是 写命中 ,没有目标块就是 写不命中 ;
① 写回法
写回法:Cache块换出时,对块的 修改位 (脏位) 进行判断,再决定时写回还是舍弃;
② 全写法
全写法(写直达):命中时,Cache与内存一块写;
当CPU不对Cache写操作的时候,写缓冲 就可以在专门的控制电路下去写回主存,保持Cache与主存数据一致;
① 写分配法
② 非写分配法
直接对主存写数据,不会调入Cache
3. 多级Cache
小结
章节小结
Cache的总容量:用户Cache容量 + CAM+ 计数器 + 修改位
- 用户Cache容量:狭义上, 指 2c = C - 1 块Cache块;
- CAM (相联存储表) :Cache的一部分,完成由主存地址到Cache地址的转换;
- 计数器: 替换算法计数;
- 修改位:写策略标记;
注意和==《操作系统》第3章 内存管理 3.2 虚拟内存管理== 联系起来学习;
1. 页式存储的思想
小结
1. 存取时间 Ta 就是存储周期 Tm 吗 ?
不是;
存取时间 Ta 是执行一次读操作或写操作的时间,分为 读出时间 和 写入时间 ;
读出时间是从主存接收到有效地址开始到数据稳定为止的时间;
写入时间是从主存接收到有效地址开始到数据写入被写单元为止的时间;
存储周期 Tm 是指存储器进行连续两次独立地读或写操作所需的最小时间间隔;
所以存取时间 Ta 不等于 存储周期 Tm 。通常存储周期T大于存取时间T;
2. Cache行的大小和命中率之间有什么关系 ?
行的长度较大,可以充分利用程序访问的空间局部性,使一个较大的局部空间被一起调到Cache 中,因而可以增加命中机会;
但是,行长也不能太大,主要原因有两个:
- ① 行长大使失效损失变大。也就是说,若未命中,则需花更多时间从主存读块;
- ② 行长太大,Cache项数变少,因而命中的可能性变小;
3. 发生取指令Cache缺失的处理过程是什么 ?
- ① 程序计数器恢复当前指令的值;
- ② 对主存进行读的操作;
- ③ 将读入的指令写入Cache 中,更改有效位和标记位;
- ④ 重新执行当前指令;
1)存储器的 层次结构 主要体现在何处 ?为何要分这些层次 ?计算机如何管理这些层次 ?
存储器的层次结构主要体现在 Cache - 主存和 主存 - 辅存 这两个存储层次上;
Cache - 主存层次 在存储系统中主要对 CPU访存起加速作用 ;
即从整体运行的效果分析,CPU访存速度加快,接近于Cache的速度,而寻址空间和位价却接近于主存;
主存 - 辅存层次 在存储系统中主要起 扩容作用 ;
即从程序员的角度看,他所使用的存储器的容量和位价接近于辅存,而速度接近于主存;
综合上述两个存储层次的作用,从整个存储系统来看,就达到了 速度快、容量大、位价低 的优化效果;
主存与Cache 之间的信息调度功能全部由 硬件自动完成 ;
而主存与辅存层次的调度目前广泛采用 虚拟存储技术 实现,即将主存与辅存的一部分通过 软/硬结合 的技术组成虚拟存储器;
程序员可用这个比主存实际空间(物理地址空间)大得多的虚拟地址空间(逻辑地址空间)编程,当程序运行时,再由软/硬件自动配合完成虚拟地址空间与主存实际物理空间的转换;
因此,这两个层次上的调度或转换操作对于程序员来说都是 透明 的;
2)存储周期和存取时间 有何区别 ?
存取周期和存取时间的主要区别是:存取时间 仅为完成一次操作的时间 ;
而存取周期不仅包含操作时间,而且包含操作后线路的恢复时间,即 存取周期 = 存取时间+恢复时间
3)在虚拟存储器中,页面是设置得大一些好还是小一些好 ?
页面不能设置得过大,也不能设置得过小;
因为页面太小时,平均页内剩余空间较少,可节省存储空间,但会使得页表增大,而且页面太小时不能充分利用访存的空间局部性来提高命中率;
页面太大时,可减少页表空间,但平均页内剩余空间较大,会浪费较多存储空间,页面太大还会使页面调入/调出的时间较长;