存储器系统

存储管理 - 软考备战(十八)-CSDN博客

中央处理器、存储器 - 软考备战(四)-CSDN博客

设备管理 - 软考备战(十九)-CSDN博客

目录

存储器系统

第一章:主存储器(RAM与ROM的家族树)

1.1 RAM家族(断电即忘)

SRAM(静态RAM)

DRAM(动态RAM)

1.2 ROM家族(断电不丢,只读家族的“进化史”)

掩膜ROM

PROM

EPROM

EEPROM(E²PROM)

★ Flash Memory(闪存)

第二章:辅助存储器(磁盘计算与RAID阵列)

2.1 磁盘存储器

结构概念

★ 存储容量公式

★ 时间参数

2.2 ★ RAID 磁盘阵列

RAID 0

RAID 1

RAID 5

RAID 6

RAID 10 (1+0)

第三章:Cache 存储器

3.1 为什么要有 Cache?

程序的局部性原理(理论基础)

时间局部性

空间局部性

3.2 地址映射方式(主存块怎么放进Cache里)

直接映射

全相联映射

组相联映射

3.3 Cache 的替换算法

LRU(最近最少使用)

FIFO(先进先出)

RAND(随机)

3.4 Cache 的写策略(如何与主存保持数据一致)

写命中时(要改的数据在Cache里)

写不命中时(要改的数据不在Cache里)

3.5 Cache 命中率与平均访问时间

第四章:例题总结

对口绑定

RAID特征

替换算法

写回法标志

容量计算易错点


第一章:主存储器(RAM与ROM的家族树)

1.1 RAM家族(断电即忘)

SRAM(静态RAM)

只要不断电,数据就一直稳如泰山。

特点:极快、极贵、集成度低(容量小)。

★ 唯一绑定: “做 Cache(高速缓存)用”,选 SRAM。

DRAM(动态RAM)

用电容存数据,电容会漏电,所以必须每隔几毫秒“充电”一次(这叫刷新)。

特点:较慢、便宜、集成度高(容量大)。

★ 唯一绑定: “做主存(内存条)用”,选 DRAM。(你买的DDR4、DDR5内存条,本质都是DRAM的升级版)。

1.2 ROM家族(断电不丢,只读家族的“进化史”)

掩膜ROM

厂家生产时直接写死,你永远改不了。

PROM

你可以写一次,写完就变掩膜ROM了(好比一次性刻录光盘)。

EPROM

可以改多次,但改之前要拿“紫外线灯”照半天(芯片上有个透明的玻璃窗),极其麻烦。

EEPROM(E²PROM)

升级了,加电就能擦除改写,不用拿紫外线照了(常用于早期的BIOS芯片)。

★ Flash Memory(闪存)

EEPROM的终极进化版。断电不丢,读写极快,体积小。

应用:U盘、SD卡、固态硬盘(SSD)。

第二章:辅助存储器(磁盘计算与RAID阵列)

2.1 磁盘存储器

结构概念

盘片有正反两面(记录面),面上有许多同心圆(磁道),最外圈是0道。多个盘片上同一个位置的磁道组成一个“柱面”。

★ 存储容量公式

非格式化容量 = 位密度 × 最内圈周长 × 总磁道数(一般不考)

格式化容量 = 磁道数 × 扇区数 × 每扇区字节数(通常是512B) × 记录面数

注:也可以用 柱面数 × 扇区数 × 512B × 记录面数,结果一样。

★ 时间参数

寻道时间(找磁道):机械臂移动,最慢。

旋转等待时间:盘片转,等那个扇区转到磁头下面。平均等待时间 = 磁盘转一圈时间 ÷ 2。

数据传输时间:真正读数据,相对较快。

2.2 ★ RAID 磁盘阵列

RAID 0

把数据切成小块,分散存到多个盘上(条带化)。

没有冗余,没有容错。坏一块盘,全盘皆输。优点是最快。

RAID 1

两张盘存一模一样的数据(镜像)。

最安全,但容量利用率只有 50%(买100G只能用50G)。

RAID 5

也是条带化,但额外算出一份“奇偶校验数据”,分散存放在各个盘里(没有 dedicated 专用校验盘)。

特征:

至少需要 3块盘。

允许坏 1块 盘(坏了拿校验码算回来)。

利用率 = (n-1)/n。

RAID 6

类似RAID 5,但算了两份独立的校验数据。

允许同时坏 2块 盘。

RAID 10 (1+0)

先做RAID 1(镜像),再做RAID 0(条带)。

兼顾了速度和安全,但成本极高。

第三章:Cache 存储器

3.1 为什么要有 Cache?

因为 CPU 太快了,内存太慢了。

为了不让 CPU 干等内存,在 CPU 内部塞了一块极小但极快的 SRAM,这就是 Cache。

程序的局部性原理(理论基础)
时间局部性

刚刚被访问过的数据,很快还会被访问(比如 for 循环里的变量 i)。

空间局部性

被访问数据附近的数据,很快也会被访问(比如遍历数组,存的是连续地址)。

3.2 地址映射方式(主存块怎么放进Cache里)

直接映射

主存里的第 X 块,只能放在 Cache 的第 Y 块(Y = X mod Cache块数)。

规矩死,容易冲突(明明Cache有空位,但因为不是它的“专属坑位”而放不进去)。

全相联映射

主存的块,爱放哪个Cache坑位放哪个。

极其灵活,不冲突,但找起来太慢(电路复杂)。

组相联映射

折中方案。先把Cache分组,组内全相联(随便放),组间直接映射(固定死)。

 “n路组相联”(把Cache分成若干组,每组里有n个坑位,这n个坑位内可以随便放)。

3.3 Cache 的替换算法

当 Cache 满了,又要放新数据进来,踢谁?

LRU(最近最少使用)

把“最久没被碰过”的数据踢出去。(比如A是10分钟前用的,B是1分钟前用的,踢A)。

FIFO(先进先出)

把“最早进来”的踢出去。简单粗暴,但可能把常用的老数据踢掉。

RAND(随机)

随便踢一个,靠运气。

3.4 Cache 的写策略(如何与主存保持数据一致)

CPU 修改了 Cache 里的数据,主存里的数据怎么办?

写命中时(要改的数据在Cache里)
全写法

改 Cache 的同时,也把主存改了。慢,但一致性好。

写回法

只改 Cache,不立刻改主存。只有当这个块要被踢出 Cache 时,才写回主存。

快,但要给每个块加一个脏位,标记它被改过。

写不命中时(要改的数据不在Cache里)
写分配

把主存这块数据先调到 Cache 里,再在 Cache 里改(通常配合写回法)。

非写分配

不调入 Cache,直接去主存里改完拉倒(通常配合全写法)。

3.5 Cache 命中率与平均访问时间

核心公式

命中率 h = Cache命中次数 / (Cache命中次数 + 访问主存次数)

平均访问时间 Ta = h × Tc + (1 - h) × Tm

(Tc 是 Cache 的存取时间,Tm 是主存的存取时间)

同时查找 vs 顺序查找
顺序查找(先查Cache)

用上面那个标准公式。如果没命中,浪费了查Cache的时间。

同时查找(现代计算机常用)

CPU 发出请求后,Cache和主存同时开始找!

如果是同时查找,整体时间取决于谁慢,也就是 Ta 不可能超过 Tm。

第四章:例题总结

对口绑定

主存用 DRAM,Cache 用 SRAM。

RAID特征

看到“允许坏1块,利用率(n-1)/n” ➡️ RAID 5;

看到“安全性最高,利用率50%” ➡️ RAID 1。

替换算法

替换算法不用纠结,99%的题考的都是 LRU(最近最少使用)。

写回法标志

看到题目提到“脏位”这个词 ➡️ 立刻联想到 写回法。

容量计算易错点

算磁盘容量时,别忘了乘以“记录面数”(正反两面,通常是2),但不要乘以磁头数(因为磁头数通常就等于记录面数,乘了就重复了)。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐