存储系统
存储系统的层次结构
存储系统是计算机体系结构的核心组成部分之一,用于存储程序指令和数据,以支持处理器的运算需求。为了平衡速度、容量和成本,现代计算机采用了分层存储体系结构,从最快速但容量有限的寄存器到容量大但速度较慢的辅助存储设备,形成了存储层次结构。
如上图所示,越靠近金字塔上层的容量越小但速度越快,越靠近金字塔下层的容量越大但速度越慢。计算机的存储系统包含以下层次:
- 寄存器(Registers):
- 寄存器是位于处理器内部的最快速存储单元。
- 它们提供极快的数据访问速度,但其容量非常有限。
- 一级缓存(L1 Cache):
- L1 缓存位于处理器内部,比寄存器稍大,但比其他缓存慢。
- 它通常分为 数据缓存(用于存储数据)和指令缓存(用于存储指令)。
- 二级缓存(L2 Cache):
- L2 缓存比 L1 缓存大,并且位于处理器和主内存之间。
- 它的速度比 L1 慢,但比主内存快。
- 三级缓存(L3 Cache):
- 在某些系统中,还有 L3 缓存,这是一种更大但速度更慢的缓存。
- 它位于 L2 缓存和主内存之间,旨在进一步减少对主内存的访问。
- 主存(RAM):
- 就是我们常说的内存,比缓存慢,但比硬盘快得多,并且容量比缓存大。
- 主内存用于存储正在运行的程序和当前使用的数据。
- 辅助存储(如硬盘驱动器或固态驱动器):
存储器层次结构的主要思想是上一层的存储器作为低一层存储器的高速缓存。当 CPU 要从存储器中存取数据时,先访问 Cache,若不在 Cache 中,则访问主存,若不在主存中,则访问磁盘,此时,操作数从磁盘读出送到主存,然后从主存送到 Cache。
Cache——主存层 主要解决 CPU 和主存速度不匹配的问题,主存和 Cache 之间的数据调动是由硬件自动完成的, 主存一辅存层 主要解决存储系统的容量问题,主存和辅存之间的数据调动是由硬件和操作系统共同完成的,两者对于应用程序员都是透明的。
RAM
半导体随机存储器的英文为 Semiconductor Random-Access Memory
( RAM
)。
首先说一下这个名词中的几个部分:
- 半导体:这种存储器使用半导体材料(如硅)制成。晶体管是构成半导体存储器的基本组成部分。
- 随机:随机的意思是随机访问,意味着可以以几乎恒定的时间访问存储器中的任意位置,它与其他存储技术(如磁盘或磁带)不同,后者需要按顺序访问数据。
随机存储器主要分为 SRAM 和 DRAM 两种。
SRAM
SRAM(Static RAM,静态随机存取存储器)使用触发器(通常由 4-6 个晶体管组成)构成存储器的基本存储单元,存储每个比特的数据,如下图所示:
只要电源持续供应,数据无需刷新即可保持稳定。
SRAM 通过将触发器组织成二维阵列构成存储器,每行连接一个字线(Word Line),控制该行所有单元的访问。 每列连接一对位线(Bit Line),用于传输数据。
SRAM 主要用于 CPU 缓存(L1/L2/L3 Cache)、寄存器、嵌入式系统中的小型高速存储。
DRAM
DRAM(Dynamic RAM,动态随机存储器)使用 1 个晶体管和 1 个电容器(1T1C 结构)构成存储器的基本存储单元,存储每个比特的数据。
- 电容器存储电荷,表示 1 比特数据(有电荷为 1,无电荷为 0)。
- 晶体管作为开关,控制电容器与外部位线(bit line)的连接,读写数据。
与触发器不同,电容器具有 动态特性,会随时间漏电,导致数据丢失,因此需要 定期刷新(通常每几毫秒)以恢复电荷。
DRAM 和 SRAM 的存储阵列在宏观上类似,都采用二维矩阵结构,通过字线和位线实现随机访问,主要区别在于基本存储单元的不同:
它以低成本和高容量著称,主要用于 计算机主内存(如系统 RAM)、显卡内存等。
SRAM 和 DRAM 对比如下表所示:
特性 | DRAM | SRAM |
---|---|---|
存储单元 | 1 晶体管 +1 电容器 | 4-6 晶体管 |
速度 | 较慢 | 更快 |
功耗 | 刷新导致较高功耗 | 静态低,总体较高 |
成本 | 低 | 高 |
容量 | 大 | 小 |
刷新需求 | 需要定期刷新 | 无需刷新 |
应用 | 主内存、显存 | CPU 缓存、寄存器 |
Flash 存储
Flash 存储器是一种 非易失性 的电子存储设备,它利用半导体技术来存储数据。通常用于长期数据存储,如 USB 闪存驱动器、固态硬盘(SSD)和移动设备的内部存储。它在读取速度上比 RAM 慢,但优于传统的硬盘驱动器(HDD)。
Flash 存储器使用电子方式来擦写和重新编程存储单元。这意味着可以通过电信号快速擦除和写入数据。数据存储在小型存储单元中,每个单元由浮动门晶体管组成。这些晶体管可以保持其充电状态,从而代表不同的数据位。
Flash 存储主要分为 NAND Flash
和 NOR Flash
这两种类型。
ROM
ROM(Read-Only Memory)是一种 非易失性 存储设备,主要用于永久性地存储数据。
ROM 主要用于读取操作。虽然早期的 ROM 在制造过程中就已经被编程,不能修改,但现代的 ROM(如 EPROM 和 Flash 存储器)可以被重新编程。
ROM 常用于存储固件,这是一种软件程序,直接嵌入在硬件设备中,用于控制设备的基本操作。例如,BIOS(基本输入输出系统)通常存储在 ROM 中。
注意一下 ROM 和 RAM 的对比如下:
特征 | RAM(随机存取存储器) | ROM(只读存储器) |
---|---|---|
易失性 | 是(断电时数据丧失) | 否(数据在断电时不丧失) |
读写能力 | 可以被随机读取和写入 | 通常只读,只读数据不能随机写入 |
用途 | 用于存储正在运行的程序、操作系统和数据 | 用于存储固定程序代码、固件、启动程序等 |
存储容量 | 通常较大,以支持多个程序同时运行 | 通常较小,主要用于存储核心系统和固件 |
数据持续性 | 不持久,数据在断电时丧失 | 持久,数据在断电时不丧失 |
修改权限 | 可以随机修改和写入数据 | 通常只读,只读数据无法被修改 |
ROM 类型:
- EPROM:可以通过紫外线照射来擦除数据,然后重新写入数据。写入数据和擦除数据都较为繁琐,且需要物理操作。常用作电脑的 BIOS 芯片,支持随机存取。
- CDROM:一种光盘存储设备,数据在生产时一次性写入,不能被修改(只能读取)。