目录
主存
- 按存储元件分类
- 半导体
- 磁性材料
- 光介质
- 存取方式
- 随机存取存储器RAM
- 半导体存储器
- 是否破坏性读取
- 动态存储器DRAM
- 用电容存bit信息
- 破坏性读取
- 读出时电荷释放,原信息丢失
- 电荷会自然流失,需要定时刷新补充电荷
- 集中刷新
- 停止读写,逐行刷新
- 分散刷新
- 定时周期刷新
- 异步刷新
- 集中+分散
- 集中刷新
- 破坏性读取
- 快速分页组织
- 一般用于低速大容量半导体存储器
- 主存
- 用电容存bit信息
- 静态存储器SRAM
- 用触发器存bit信息
- 无需读后再生
- 无需刷新
- 一般用于高速小容量半导体存储器
- cache
- 用触发器存bit信息
-
DRAM SRAM 存储信息 电容 触发器 破坏性读出 是 否 需要刷新 是 否 送行列地址 分两次送 同时送 访问速度 慢 快 集成度 高 低 发热量 小 大 存储成本 低 高
- 动态存储器DRAM
- 顺序存取存储器SAM
- 磁带
- 直接存取存储器DAM
- 磁盘
- 按内容存取存储器CAM(相联存储器AM)
- 随机存取存储器RAM
- 可更改性
- 可读可写存储器
- 只读存储器ROM
- 随机存取
- 断电后信息的可保存性
- 非易失(不挥发)
- ROM、磁表面存储器、光存储器
- 易失(挥发)
- RAM、cache
- 非易失(不挥发)
- 存储器的层次结构
- 寄存器
- cache
- 主存
- 外存
- 一致性原则:不同层次存储器中,相同信息保持一致
- 包含性原则:内层信息含于外层信息
外部辅助存储
磁盘
为cache缺页而生
写入数据同时计算校验码一起写入
2×4×2000×3000×512B=24GB
- 2:1个盘片有2面
1转1/7200分=1/120秒
RAID
RAID0
- 没有冗余
- 条带化
- 容量大速度高,可靠性低
RAID1
- 冗余备份,复制所有信息
- 无校验
- 读性能翻倍
- 写性能下降
- 并不是翻倍,可并行执行,由慢者决定
- 成本高,很可靠
RAID2
- 并行访问
- 驱动器间同步
- 工作单位为字(字节)
- 小条带分布交叉
- 使用海明校验冗余
- 校验盘与数据盘成正比
- 数据传输率高
- 大I/O快
- I/O响应慢
- 小I/O快
- 开销过大,不再使用
RAID3
- 并行访问
- 小条带分布交叉
- 每个字计算1个校验位
- 只使用一个冗余盘
- 重构
- 数据传输率高
- 大I/O快
- I/O响应慢
- 小I/O快
RAID4
- 独立访问
- 无需驱动器间同步
- 大数据块交叉
- 只使用一个冗余盘
- 重构
- 小I/O有写损失
RAID5
- 独立访问
- 大数据块交叉
- 将校验位循环均匀分布在所有驱动器上
- I/O快
- 被广泛使用
RAID6
- 独立访问
- 大数据块交叉
- 将校验位循环均匀分布在所有驱动器上
- 双维块奇偶校验
- 允许双盘出错
- 高度可靠
RAID7
- 带cache的RAID
【2020-912】存储100MB的数据,RAID1的磁盘的大小为_____,RAID5的磁盘的大小为_____。
RAID1:直接复制备份,200MB
RAID5:4+1备份,125MB
(不说默认N=4,4+1备份)
【2022-912】一个4+1的RAID5磁盘组织,同一个地址在前四个磁盘中的数据分别为0x11、0x22、0x33、0x44,此时第五个磁盘出错,新磁盘替换后,新磁盘中该地址上的数据初始化为_____。
0x11=00010001
0x22=00100010
0x33=00110011
0x44=01000100
做异或操作得01000100=0x44
Flash闪存
- 高密度非易失性读写存储器
- 电擦除可编程ROM替代品,可存储BIOS
- 编程:充电
- 擦除:放电
- 读取
- 存储元件为MOS管
SSD固态硬盘
- 存储介质为闪存颗粒
- 数据按页进行读取
- 闪存芯片-区块-页
- 对某页写前,必须擦除该页所属的整个区块
- 写入时按顺序写入
- 只有有限的读写次数
- 闪存翻译层FTL
- 将逻辑磁盘块映射为物理存储块
- 均化磨损电路
- 将擦除操作平均分布,延长使用寿命
【2023-912】下列关于闪存及FTL(Flash Translation Layer)的说法,错误的是(B)
A.闪存的写入端粒度和擦除端粒度不同
B.闪存每单元能编码的比特数越多,闪存的寿命越长
C.FTL提供逻辑块地址到物理块地址的映射
D.闪存物理页在更新之前要进行擦除
数据校验
码距:两个合法二进制码之间最少不同位数量
- 码距为1,即任何两个二进制码间最少有1位不同,平凡情况,无校验能力,检错位数为0
- 码距为2,检错位数为1
- (纠错理论)
- L为码距
- D为检错位数
- C为纠错位数
奇偶校验
用于并行传输
在数据位以外增加1位校验位,使得总共1的数量为奇数或偶数
- 码距为2
- 检错位数为1
- 纠错位数为0
海明Hamming校验
用于并行传输
- 含总校验位
- 码距为4
- 检错位数为2
- 纠错位数为1
- 不含总校验位
- 码距为3
- 检错位数为1
- 纠错位数为1
利用排列组合直接计算即可。
【2017-912】若海明码P1P2D1P3D2D3P4为0101100,则该海明码有__位错误(0位,1位,2位),正确的D1D2D3为______。
(海明码要是能纠错,只能错1位)
P1:D1,D2
P2:D1,D3
P3:D2,D3
P4:D1,D2,D3
S1=P1⊕D1⊕D2=1
S2=P2⊕D1⊕D3=1
S3=P3⊕D2⊕D3=0
S4=P4⊕P3⊕P2⊕P1⊕D3⊕D2⊕D1=1
错了1位,S4S3S2S1=1011,在只错1位的情形下错误在S1S2交集中,是D1,D1D2D3=110
(也可011B=3,是数据第3位D1)
循环冗余校验CRC
用于串行传输
Cache
程序的局部性原理
- 行
- 块
- 一行有多长
- 有效位:标记该行是否被占用中
- 命中
- 命中率Hit Rate
- HR=命中次数/访问次数
- 影响因素
- 容量
- 命中率-容量为不足对数函数
- cache超过32kB后,整体性能不会显著提高
- cache块大小
- cache块太小,容易局部性受限
- cache块太大
- cache总行数会变小
- 单次装填成本增大
- 容量
- 命中时间=访问cache块时间
- 命中率Hit Rate
- 缺失
- 缺失率Miss Rate
- MR=1-HR
- 缺失损失=替换cache块时间+传输给CPU的时间
- 原因
- 必然缺失
- 第一次访问或刚开机
- 容量缺失
- cache容量不够
- 冲突缺失
- 两块不同的内存块映射到相同的cache块
- 直接映射最明显(利用率低)
- 无效缺失
- 必然缺失
- 缺失率Miss Rate
- 平均访问时间=HR×命中时间+MR×缺失损失
- 缺失率低未必平均访问更低
- 块更大意味着需要更多时间去装填数据块
- 应当追求使得平均访问时间最低的块大小,而非缺失率最低
- 缺失率低未必平均访问更低
映射方式
- 直接映射:守序
- 全相联映射:混乱
- 组相联映射:中立
直接映射
亦称为模映射
cache行号 = 主存块号 % cache行数
- 简单,命中时间短
- 利用率低、命中率低
全相联映射
- 相联存储器:按内容访问
- 全相联:比对要遍历全cache
主存块可装入任何一个cache行中
- 利用率高,冲突率低
- 使用成本太高
- 每次比对都要遍历cache
组相联映射
x路组相连
- cache一个组有x行
- 主存每组有cache行总数块
- cache一组内可以存放x组主存块
- 组间模映射,组内全映射
命中率比较
- 在cache大小不变的前提下
- 2路显著优于直接
- 4路优于2路,但远没有上者显著
- 大小为N,采用直接映射的命中率与大小为N/2、采用2路组相联命中率相当
替换策略
- 直接映射没有选择
- 全/组相联映射
- 最近最少使用LRU
- 先进先出FIFO
- 随机RAND
一致性保持
写直达
一旦cache更新,立刻更新主存
拖后写
cache被替换时再写回主存
多级Cache
- 多级Cache
- 指令Cache+数据Cache
- 流水线考虑
Cache接入体系结构
- 侧接法:如同普通IO
- 隔断法:插入原总线
【2018-912】以下说法正确的是(C)
A 缓存越大程序执行速度越快B TLB也是一种缓存数据和指令的缓存器
C 指令和数据采用不同的缓存可以提高流水线速度
D 缓存可以提高主存容量
【2021-912】某按字节编址的计算机层次存储系统,地址位数为32位,缓存的大小为1024字节,缓存行大小为8字节,采用2路组相联的方式,索引的位数为____位,标记位为____位。
cache有128行,64组,索引位有6位,块内地址位有3位(因为按字节编址),标记位有23位
【2024-912】已知Cache命中的访问时间为2ns,Cache缺失访问时间为50ns,CPU执行一段程序时,CPU访问内存系统共10000次,其中缺失次数为500次,那么CPU平均访存时间为_______。
(9500×2ns+500×50ns)/10000=4.4ns