计算机组成原理
第三章 存储系统
author:slightwjq
2022年12月28日
3.1 存储器概述
按作用分类
主存储器:CPU可以直接访问,也可以和高速缓冲存储器及辅助存储器交换数据。
辅助存储器:永久性保存信息。
高速缓冲存储器:简称Cache,位于CPU和主存之间。
按存取方式分类
随机存储器RAM:主要用于主存和高速缓存。
只读存储器ROM:断电不丢失。
3.2 主存储器
主存储器由DRAM实现,Cache由SRAM实现。
DRAM按行刷新,地址线复用。
引脚数 = 地址线 + 数据线 + 片选线(1) + 读写控制线(1/2)+ (供电 + 接地)
多模块存储器
多模块存储器是一种空间并行技术。
单体多字存储器
只有一个存储体。
多体并行存储器
分为高位交叉和地位交叉两种。
高位交叉:高位地址表示体号,低位地址是体内地址。仍是串行存取,不能提高吞吐率。
低位交叉:低位地址是体号,高位是体内地址。类似流水线作业,提高吞吐率。
3.3 主存与CPU连接
主存储器通过数据总线,地址总线,控制总线与CPU连接。
由于单个芯片容量有限,可以使用位拓展和字拓展来拓展主存容量。实际上往往需要字位同时拓展。
3.4 外部存储器
磁盘存储器和固态硬盘。
3.5 高速缓存存储器
高速缓冲器利用局部性原理。
Cache和主存都被划分成相等的块,每块由若干字节组成。
CPU和Cache之间数据交换以字为单位,Cache与主存之间数据交换以块为单位。
Cache和主存映射方式
为了说明Cache行中信息是否有效,每个Cache行需要一个有效位。
直接映射
主存中的每一块只能装入Cache中唯一位置。若该位置已有内容则会产生冲突,原来的快被无条件替换出去。
Cache行号 = 主存块号 mod Cache总行数
但是行号隐藏,不占用位数。
给Cache行设置一个长为(主存块的位数 - Cache块的位数)的标记(tag)。
全相连映射
主存中的每一块可以装入Cache中的任何位置,每行的标记用于指出改行取自主存的哪一块。tag长度 = 主存块的位数
组相连映射
将Cache分成Q个大小相等的组,每组k个块,成为k路组相连,每个主存快可以装入固定组的任意一行。
Cache组号 = 主存块号 mod Cache组数
tag长度 = 主存块的位数 - 组号位数
注:每个Cache行对应一个标记项,包括有效位、标记位tag、一致性维护位、替换算法控制位。
替换算法分为:随机算法、先入先出算法FIFO、最近最少使用算法LRU、最不经常使用算法。
Cache写策略分为全写法(每次读写后直接写回主存)和回写法(被从Cache换出时再写回主存)。
3.6虚拟存储器
主存和辅存共同构成了虚拟存储器。
页式虚拟存储器
以页为基本单位。虚拟空间和主存空间都被划分成同样大小的页。把虚拟地址分为虚页号和页内地址,虚地址到物理地址的转换是由页表实现的。页不是逻辑独立实体。
组成:逻辑页号+主存块号+外存块号+有效位+访问为+脏位
快表TLB
依据局部性原理,把页表项(并非数据)放在高速缓冲器组成的快表中。通常采用全相连和组相连方式。
段式虚拟存储器
段是按程序的逻辑结构划分的,段长因程序而异。虚拟地址分为段号和段内地址。段表中要给出各段起始地址与段长。
段页式虚拟存储器
把程序按照逻辑分段,每段再划分成固定大小的页。主存的调入调出以页为基本单位,缺点是地址变换时需要两次查表。
Cache和虚拟存储器比较
1、Cache解决系统速度,虚拟存储器解决容量。
2、Cache全由硬件实现,虚拟存储器由OS和硬件共同实现
3、虚拟存储器不命中时影响更大
4、虚拟存储器不命中时只能先由硬盘调入主存,不能和CPU直接通信。
- 本文作者: 魏静崎
- 本文链接: https://slightwjq.github.io/2023/10/17/计算机组成原理-第三章/
- 版权声明: 该文章来源及最终解释权归作者所有