计算机组成原理---存储系统
文章目录
- 1. 存储器概述
- 1.1 存储系统基本概念
- 1.2 主存储器的基本组成
- 2. 主存储器
- 2.1 SRAM 和 DRAM
- 2.2 只读存储器ROM
- 2.3 双端口RAM & 多模块存储器
- 3. 主存储器与CPU的连接
- 3.1 单块存储芯片与CPU的连接
- 3.2 多块存储芯片与CPU的连接
- Ⅰ 位扩展
- Ⅱ 字扩展
- Ⅲ 字位同时扩展
- 4. 外部存储器
- 4.1 磁盘存储器
- 4.2 固态硬盘(SSD)
- 5. 高速缓冲存储器
- 5.1 Cache基本原理和基本概念
- 5.2 Cache与主存映射方式
- 5.3 Cache替换算法
- 5.4 Cache写策略
- 6. 虚拟存储器
1. 存储器概述
1.1 存储系统基本概念



强调:
- Cache-主存层主要解决CPU和主存速度不匹配的问题,主存和Cache之间的数据调动是由硬件自动完成的,对所有程序员都是透明的
- 主存-辅存层主要解决存储系统的容量问题,主存和辅存之间的数据调动是由硬件和操作系统共同完成的,对应用程序员是透明的
- 存储器层次结构的主要思想是上一层的存储器作为低一层存储器的高速缓存



注意:
- 机械硬盘属于直接存取存储器,访问某个存储单元所需时间与存储单元的物理位置有关

- 现在笔记本电脑中的辅存大多使用SSD(固态硬盘来存储),SSD采用了闪存ROM芯片


小结:

1.2 主存储器的基本组成



- 在一个芯片内,由MAR通过译码器去选择具体的存储单元


- 不同芯片之间的选择还得外接一个片选控制电路,由片选线进行芯片选择


小结:

2. 主存储器
2.1 SRAM 和 DRAM


- DRAM采用栅极电容,是破坏性读出
- SRAM采用双稳态触发器,是非破坏性读出

DRAM与SRAM的对比:



刷新方案优缺分析:
- ①集中刷新优点是读/写操作期间不受刷新操作的影响;缺点是在集中刷新期间(死去)不能访问存储器
- ②分散刷新优点是没有死区;缺点是加长了系统的存取周期
- ③异步刷新结合了前两种方法,使得“死时间”的分布更加分散,避免让CPU连续等待过长的时间
注意:
- ①刷新对CPU是透明的,即刷新不依赖于外部的访问
- ②DRAM的刷新单位是行,由芯片内部自行生成行地址
- ③刷新不需要选片,即整个存储器的所有芯片同时被刷新

- 因为主存采用DRAM,其集成度更高,势必会让其存储字数变多,如果还用一个译码器去进行地址解析的话会使得硬件工艺要求更高,更难实现,所以会有地址线复用技术的出现,即采用行、列两个译码器
DRAM芯片行、列数的优化原则:
- ①应尽量使行、列位数相同,即满足|r - c|最小
- ②DRAM按行刷新,为减少刷新开销,应使行数较少,需满足r<=c,即尽可能保证一行中刷新的单元数更多一些
- ③DRAM芯片内部有一个行缓冲器,行缓冲器常用SRAM实现
小结:

2.2 只读存储器ROM



小结:

2.3 双端口RAM & 多模块存储器


- 双端口RAM知识介绍只在最后小结中给出

强调:
- 存取周期(T)= 存取时间(r) + 恢复时间





- 在连续存储且连续访问的情况下,可见低位交叉编址的多体并行存储器比高位交叉编址的多体并行存储器的存取效率要高


小结:

3. 主存储器与CPU的连接

3.1 单块存储芯片与CPU的连接

- 扩展存储芯片字长,使用位扩展
- 扩展主存字数,使用字扩展
3.2 多块存储芯片与CPU的连接


- 读写控制线可能是一根线,也可能是两根分开的线
Ⅰ 位扩展


Ⅱ 字扩展





对比线选法和片选法:

Ⅲ 字位同时扩展

小结:



【2011 统考真题】某计算机存储器按字节编址,主存地址空间大小为64MB,现用4M×8位的RAM芯片组成32MB的主存储器,则存储器地址寄存器MAR的位数至少是(D)
A. 22位
B. 23位
C. 25位
D. 26位
解答:MAR的位数是跟地址空间大小有关,跟主存实际容量无关,也就是说MAR取决于地址线位数。
4. 外部存储器

4.1 磁盘存储器


硬件图示如下:




注意:
- 磁盘的地址结构是(驱动器号,柱面号,盘面号,扇区号),遵循从大到小的查找顺序




小结:

4.2 固态硬盘(SSD)



5. 高速缓冲存储器
5.1 Cache基本原理和基本概念



注意:
- 空间局部性指未来要用到的信息可能是和现在所用到的信息在空间上是邻近的
- 时间局部性指未来要访问的信息可能是现在正在使用的信息



小结:

5.2 Cache与主存映射方式




- 直接将主存地址中的主存块号与Cache中每块的标记进行比较,需设立比较器,对于全相联映射,有多少个块就设置多少个比较器,这样可以实现并行比较,加快Cache的查找速度
- 然后标记匹配后,检查有效位是否=1,为1就命中,命中就根据主存地址的块内地址去查找信息
- 若标记未匹配或有效位=0,则去访问主存




- 直接映射进一步将主存块号划分为了标记位+行号的形式,先根据行号去确定Cache行,然后再拿标记位去进行比较,只需设置一个比较器即可。所以标记位可以进一步优化成主存块号 - log2Cache的行号数\log_{2}Cache的行号数log2Cache的行号数的形式
- 若标记匹配且有效位=1,则访问Cache
- 若标记不匹配或有效位=0,则访问主存


- 组相联映射是组间采用直接映射、而组内采用全相联映射的方式。它将主存块号划分为了标记+组号的形式,先根据组号确定主存块所在Cache的组,然后在组内进行标记位的比较匹配,需设立n个比较器,n是分组内有多少个Cache行。所以标记位是主存块号 - log2Cache的分组数\log_{2}Cache的分组数log2Cache的分组数。
- 若标记匹配且有效位=1,则访问Cache
- 若标记不匹配或有效位=0,则访问主存
小结:

5.3 Cache替换算法




- 在计算机组成原理中,Cache的FIFO算法需要对每个Cache行记录替换信息,即设立时间戳,是从硬件的角度考虑
- 在操作系统中,主存和外存之间的FIFO算法,可以借助队列来实现,是从软件的角度考虑,当然用硬件实现方式也行
- 在操作系统中,FIFO算法是会出现Belady异常的,即随着分配页面数的增加,反而缺页率会上升

遵循的替换规则:
- ①命中时,所命中的行的计数器清零,比其低的计数器加1,其余不变;
- ②未命中且还有空闲行时,新装入的行的计数器置0,其余非空闲行全加1
- ③为命中且无空闲行时,计数器最大的行的信息块被淘汰,新装入的块的计数器置0,其余全加1
好处:
- 假设Cache块有2n个,那么计数器的位数只需设置为n即可,由上述规则保证计数器的大小一定不会超过n位2进制所能表示的范围






- 这里计数器没有位数限制,可能某块的计数器会很大


对比LRU和LFU:
- LRU的计数器是记录每个Cache块已经多久没被访问了,计数器的位数固定为log2Cache块的块数\log_{2}Cache块的块数log2Cache块的块数,LRU具有很好的局部性
- LFU的计数器是记录每个Cache块被访问过几次,计数器的位数不固定,可能有多位,相对于LRU来说,其局部性并不是很好。如某段时间内进行视频聊天,则与视频聊天相关的块的计数器会一直累加,结束视频聊天后,由于视频聊天的Cache块计数器太大了,替换不出来,一直占用Cache块,浪费资源
小结:

5.4 Cache写策略

- 对于涉及Cache写来说,需要在Cache中另外设置一个脏位,来记录改Cache是否被修改过了

- 写回法:写命中时,只对Cache进行修改,对主存的修改则放到对应Cache被调出时才进行

- 全写法:写命中时,同时对Cache和主存进行修改

- 全写法也可以搭配写缓冲来提升效率

- 写分配法:对Cache写不命中时,把主存块调入Cache,在Cache中修改,常搭配写回法使用

- 非写分配法:对Cache写不命中时,只写入主存,不调入Cache,常搭配全写法使用

分析:
- Cache之间采用全写+非写分配的原因是Cache之间速度比较匹配,写的速度快一些
- Cache-主存之间采用写回+写分配的原因是Cache与主存之间速度相差过大,从时间开销角度来看先在Cache中写,调出时再写回主存的时间花销更小,且为了遵循局部性原理,在Cache中没有的主存块需要调入Cache中,以便未来使用
小结:

【2021 统考真题】若计算机主存地址为32位,按字节编址,Cache数据区大小为32KB,主存块大小为32B,采用直接映射方式和回写法,则Cache行的位数至少是(A)
A. 275
B. 274
C. 258
D. 257
解答:
- ①先求标记位 — —在直接映射中,主存地址结构划分为了标记数+Cache行号数+块内地址数,其中块大小为32B,对应块内地址数为5位,Cache数据区大小为32KB,对应Cache行号数为32KB/32B=210个,即主存地址结构中Cache行号数为10位,故标记位为32-10-5=17位
- ②再求总位数,这里总位数 = 有效位 + 脏位 + 标记位 + 数据位 = 1 + 1 + 17 + 32×8 = 275位,选A
6. 虚拟存储器
此节在操作系统中已经涉及,这里不在展开,只进行补充。
补充:
-
- 虚拟存储器更看重命中率,因此虚拟存储机制采用全相联映射
-
- 在具有TLB和Cache的多级存储系统中,会先用TLB完成地址转换后,再去Cache中查找
-
- Page缺失时,TLB和Cache也必然缺失
-
- Cache主要解决系统速度,而虚拟存储器主要解决主存容量
-
- Cache全由硬件实现,其对所有程序员均透明;而虚拟存储器由OS和硬件共同实现,是逻辑上的存储器,对系统程序员不透明,但对应用程序员透明
-
- 缺页是CPU在执行指令过程中进行取指令或读/写数据时发生的一种故障,属于内部异常,需要调用OS提供的中断服务程序来处理
-
- 缺页处理由缺页中断处理程序完成,根据发生缺页故障的地址从外存读入所缺失的页,缺页处理完成后回到发生缺页的指令处继续执行
至此第三章就结束了,本章最重要的就是高速缓冲存储器(Cache)以及主存储器与CPU的连接,建议搭配习题食用
参考:《王道计算机考研 计算机组成原理》
https://www.bilibili.com/video/BV1ps4y1d73V?t=0.5&p=2
