寄存器
cache
主存(内存)
磁盘(辅存)
硬盘、光盘、U盘等(外存)
越往上层,速度越快、容量越小、造价越高
辅存和外存中的数据只调入内存中才能被CPU访问
主存-辅存:实现了虚拟存储系统,解决了主存容量不够的问题,由“硬件+操作系统”完成
cache-主存:解决了CPU和主存速度不匹配的问题,由硬件自动完成
按层次分类:
可直接被CPU读写:cache、主存
不可直接被CPU读写:辅存、外存
按存储介质:
半导体器件:cache、主存
磁性材料:磁盘、磁带
光介质:光盘
按存取方式:
按地址访问:
RAM(随机存取存储器):读取时间与存储单元位置无关,如 “内存条”、ROM
SAM(顺序存取存储器):读写时间取决于存储单元位置,如 “磁带”
DAM(直接存取存储器):既有随机存取特性,也有顺序存取特性,先直接选取信息区域,再顺序存取,如 “磁盘”
按内容访问:
CAM(按内容访问的存储器/相联存储器):根据内容检索存储位置,如 “快表”
注:SAM 和 DAM 统称串行访问存储器:读写时间与存储位置有关
按信息的可更改性:
读写存储器
只读存储器 ROM(实际上也可以修改,只不过比较麻烦)
按信息的可保存性:
易失性存储器:cache、主存
非易失性存储器:磁盘、光盘
破坏性读出:DRAM 芯片
非破坏性读出:SRAM 芯片、磁盘、光盘
存储容量:存储字数 × 存储字长
单位成本:每bit价格 = 总价格 / 总容量
存储速度:数据传输率 = 存储字长(数据宽度) / 存取周期(存取时间 + 恢复时间)
主存带宽(数据传输率):每秒从主存进出信息的最大数量,单位:字/s、B/s、b/s
基本原件:
MOS 管,作为通电 “开关”
电容,存储电荷,即存储二进制 0/1
存储芯片的结构:
🚩 译码驱动电路:译码器将地址信号转化为字选通线的高低电平
存储矩阵(存储体):由多个存储单元构成,每个存储单元又由多个存储元构成
读写电路:每次读/写一个存储字
🚩 存储芯片对外暴露的金属引脚个数:(除了金属引脚,还有供电引脚、接地引脚)
n1(地址线数)+
n2(数据线数) +
1(片选线)+
1 或 2(读/写控制线)
用了地址线复用技术:
n1/2(地址线数/2)+
n2(数据线数) +
2(行列选通线) +
1(片选线)+
1 或 2(读/写控制线)
寻址
现代计算机通常按字节寻址
按字节寻址、按字寻址、按半字寻址、按双字寻址
DRAM 的刷新:
刷新周期:一般为 2 ms
每次刷新一行存储单元(使用行列地址是为了减少选通线的数量)
如何刷新:有硬件支持,不需要CPU控制,读出一行的信息后重新写入,占用一个读/写周期
🚩 什么时候刷新:
分散刷新
集中刷新
异步刷新
注意:DRAM 已经过时,现在的主存通常采用 SDRAM 芯片(同步动态随机存储器)
DRAM 和 SRAM 的区别⬇
DRAM 芯片 | SRAM 芯片 | |
---|---|---|
🚩存储元件 | 栅极电容 | 双稳态触发器 |
破坏性读出 | 是 | 否 |
读后需要重写 | 是 | 否 |
读写速度 | 慢 | 快 |
用途 | 主存 | cache |
制造成本 | 低 | 高 |
集成度 | 高 | 低 |
功耗 | 低 | 高 |
易失性存储器 | 是 | 是 |
需要刷新 | 是 | 否 |
🚩送行列地址 | 分两次送(地址线复用技术) | 同时送 |
各种 ROM:
MROM(掩模式)—— 芯片生产过程中直接写入信息,之后只能读出
PROM(可编程)—— 用专门的 PROM 写入器写入信息,写一次后不可更改
EPROM(可擦除可编程)—— 可进行多次重写
UVEPROM(用紫外线)—— 擦除所有信息
EEPROM(电擦除)—— 擦除特定的字
Flash Memory(闪存)—— 可多次快速擦除重写,eg:U盘、SD卡
每个存储单元只需单个 MOS 管,位密度比 RAM 高(联想U盘大小)
闪存的 “写” 速度比 “读” 速度慢,因为写之前需要擦除
SSD(固态硬盘)—— 由控制单元+存储单元(flash芯片)组成,可多次快速擦除重写,速度快,功耗低,价格高
特殊的 ROM:
主板上的 BIOS 芯片
注:
我们常说的“内存条”就是“主存”,但事实上,主板上的 ROM 芯片也是主存的一部分
逻辑上,主存由 RAM+ROM 组成,且二者统一编址
很多 ROM 芯片虽然名字是 “Read-Only”,但很多 ROM 也可以写
RAM 芯片是易失性的,ROM 芯片是非易失性的
很多 ROM 也有 “随机存取” 的特性
位扩展
字扩展
线选法
🚩 译码片选法:译码器的使用、分析地址空间
字位同时扩展
🚩 选择存储器芯片
与CPU进行连接
线选法 | 译码片选法 |
---|---|
n 条线 ➡ n 个片选信号 | n 条线 ➡ 2 n 2^n 2n 个片选信号 |
电路简单 | 电路复杂 |
地址空间不连续 | 地址可空间连续 |
74L138 型号的译码器结构:
目的:提升主存速度
🚩 存取周期 T = 存取时间 r + 恢复时间
双端口 RAM:
作用:优化多核 CPU 访问一根内存条的速度
✔ 可同时读/写不同的存储单元
✔ 可同时读同一个存储单元
❌ 不能同时写一个同一个存储单元
❌ 不能一个读一个写一个存储单元
若发生冲突,则发出 “BUSY” 信号,其中一个 CPU 的访问端口暂时关闭
多模块存储器(m 个模块):
单体多字存储器——类似于主存储器的位扩展
每个存储单元存储 m 个字,总线宽度也为 m 个字,一次并行读出 m 个字,不能单独取其中的某个字
多体并行存储器——各个模块之间相互独立
高位交叉编址的多体存储器:由于通常使连续访问的,因此性能提升不明显
🚩 低位交叉编址的多体存储器
m ≥ T/r
每个存储周期内可读写地址连续的 m 个字
磁盘原理
磁盘设备的组成
存储区域:磁头、柱面、扇区
音高内存储器:磁盘驱动器、磁盘控制器、盘片
🚩 性能指标
容量:格式化与非格式化
记录密度:道密度、位密度、面密度
数据传输率
磁盘地址
驱动器号、柱面号、盘面号、扇区号
🚩 磁盘冗余阵列
思想:利用磁盘廉价的特点提高存储性能、可靠性和安全性
RAID0:条带化,提高存储速度,没有容错能力
RAID1:镜像磁盘互为备份
RAID2~5:通过数据校验提高容错能力
组成
闪存翻译层——基于闪存技术,属于 EEPROM
存储介质:多个闪存芯片——每个芯片包含多个块——每个块包含多个页
🚩 读写性能特性
以 “页” 为单位读写
以 “块” 为单位擦除
支持随机访问
读快、写慢
与机械硬盘相比的特点
SSD 读写更快,随机访问性能高,用电路控制访问位置;
SSD 安静无噪音、耐摔抗震、能耗低、造价更贵
🚩 容易磨损——SSD 的一个块被擦除次数过多可能会坏掉,而机械磁盘的扇区不会因为写太多而坏掉
🚩 磨损均衡技术
思想:将 “擦除” 平均分布在各个块上
动态磨损均衡——写入数据时,寻找擦除次数少的新闪存块
静态磨损均衡——SSD 监测并自动进行数据分配、迁移
让老的闪存块承担以读为主的内容
让新的闪存块承担以写为主的内容
工作原理
将某些主存块复制到 cache 中,缓和 CPU 和主存之间的速度矛盾
局部性原理
时间局部性:现在访问的地址,之后可能会再被访问
空间局部性:现在访问的地址,周围的地址可能会被访问
性能分析
理解 cache 命中率、缺失率
两种方式
1、先访问 cache,未命中再访问主存
2、同时访问 cache 和主存,当 cache 命中时停止访问主存
其他概念
主存与 cache 之间以 “块” 为单位进行数据交换
主存的 “块” 又叫:页、页框、页面
cache 的 “块” 又叫:行
主存地址可以拆分为(主存块号、块内地址)的形式
cache 中存储的信息
有效位(0/1)+ 标记 + 整块数据
其中 “标记” 用于指明对应的内存块,不同的映射方式,“标记” 的位数不同
全相联映射
主存块可以复制到 cache 的任何位置
🚩 主存地址结构:标记(主存块号) + 块内地址
优点:空间利用充分,命中率高
缺点:查找 “标记” 最慢
直接映射
主存块只能放到特定的 cache 行,cache 行号 = 主存块号 % cache 总行数
🚩 主存地址结构:标记(主存块号前几位) + 行号(主存块号末几位) + 块内地址
优点:查找 “标记” 最快
缺点:空间利用不充分,命中率低
组相联映射
主存块可以放到特定组中的任意位置,所属组号 = 主存块号 % cache 组数
🚩 贮存地址结构:标记(主存块号前几位) + 组号(主存块号末几位) + 块内地址
优点:另外两种的这种,综合效果较好
术语:n 路组相联映射——每 n 个 cache 行为一组
随机算法(RAND)
随便选择一个块替换
效果很差
先进先出算法(FIFO)
优先替换最先被调入 cache 的主存块
不遵循局部性原理,效果差
🚩 近期最少使用(LRU)
将最久没有被访问过的主存块替换,每个 cache 行设置一个 “计数器”(cache 有 2^n 块 —— n 位),用于记录多久没有被访问
遵循局部性原理,时间运行效果优秀,cache 命中率高
最不经常使用(LFU)
将被访问次数最少的块替换,每个 cache 行设置一个 “计数器”,用于记录被访问过多少次
曾经被经常访问的块在未来不一定会用到,实际运行效果不好
写命中
全写法(写直通法):把数据同时写入 cache 和主存,一般使用写缓冲
写回法:只修改 cache 的内容,只有此块被换出时再写入主存
写不命中
写分配法:把主存中的块调入 cache 中修改,通常搭配 “写回法” 使用
非写分配法:只写入主存,不调入 cache,通常搭配 “全写法” 使用
多级 cache
各级 cache 间常采用 “全写法 + 非写分配法”
cache 和主存间常采用 “写回法 + 分配法”
1、相联存储器是按 "内容指定方式和地址指定方式相结合" 进行寻址的存储器
2、动态 RAM 采用 "分散刷新" 不存在死时间,采用 "集中刷新、异步刷新" 存在死时间
3、半导体 RAM 是易失性 RAM,但只要电源不断电,所存信息是不丢失的 (√)
4、随机存取与随机存取存储器(RAM)不同
5、DRAM 一次完整的刷新过程只需要占用 "一个" 存储周期
6、闪存的存储元由 MOS 管组成,是一种半导体存储器
7、存取周期:可以连续读/写的最短时间间隔
8、高位四体交叉存储器可能在一个存储周期内连续访问 4 个模块 (√)
9、闪存是在 EEPROM 的基础上发展起来的,本质上是只读存储器
10、RAID0 方案是无冗余和无校验的磁盘整列,而 RAID1~5 方案均是加入了冗余(镜像)或校验的磁盘阵列
11、磁盘存取时间 = 寻道时间 + 延迟时间 + 传输时间 + 其他时间
平均延迟时间为旋转半周的时间
12、磁盘存储器的最小读写单位为一个扇区,即磁盘按块存取
13、CPU 与 cache(或主存)间信息交互的单位是字,而 cache 与主存之间信息交互的单位是块
14、虚拟存储系统利用的是局部性原理,程序应当具有较好的局部性
15、当 CPU 访存时,先要到 cache 中查看该主存地址是否在 cache 中,所以发送的时主存的物理地址。只有在虚拟存储器中,CPU 发出的才是虚拟地址。