在学习计算机系统时,最需要掌握的内容包括内存部分。在冯诺依曼架构中,计算机分为运算器、控制器、存储器、输入设备和输出设备五个部分。其中存储器包含内存和外存,外存作为非易失性存储器,断电数据不会丢失,但是数据交互慢,频率低,导致高频工作的运算器和控制器存在空转的问题。为提升效率,使用内容进行数据访问加速。
计算机内存架构通常采用分层设计,从高速、小容量的存储到低速、大容量的存储,形成一个金字塔结构。这种设计是为了在性能和成本之间取得平衡。
+---------------------+
| 寄存器 (Registers) | <- 最快、最小、最贵
+---------------------+
| 高速缓存 (Cache) |
+---------------------+
| 主存 (Main Memory) |
+---------------------+
| 辅助存储 (Storage) | <- 最慢、最大、最便宜
+---------------------+
(1) 寄存器(Registers)
- 位置: 位于CPU内部。
- 速度: 最快的存储单元,访问速度与CPU时钟周期相同。
- 容量: 非常小,通常只有几十到几百个字节。
- 用途: 用于存储当前正在执行的指令和数据。
- 特点: 由硬件直接管理,程序员通常通过汇编语言或编译器间接使用。
(2) 高速缓存(Cache)
- 位置: 位于CPU内部或紧邻CPU。
- 速度: 非常快,访问速度比主存快10到100倍。
- 容量: 较小,通常为几KB到几十MB。
- 层次: 通常分为多级(L1、L2、L3):
- L1 Cache: 最快,容量最小,通常分为指令缓存和数据缓存。
- L2 Cache: 速度稍慢,容量较大。
- L3 Cache: 速度较慢,容量最大,通常由多个 CPU 核心共享。
- 用途: 缓存主存中的热点数据,减少CPU访问主存的延迟。
(3) 主存(Main Memory,RAM)
- 位置: 位于主板上,通过内存总线与CPU连接。
- 速度: 比缓存慢,但比辅助存储快。
- 容量: 较大,通常为几GB到几百GB。
- 用途: 存储正在运行的程序和数据。
- 特点: 易失性(断电后数据丢失),直接由CPU访问。
(4) 辅助存储(Secondary Storage)
- 类型: 包括硬盘(HDD)、固态硬盘(SSD)、光盘、磁带等。
- 速度: 较慢,访问速度比主存慢几个数量级。
- 容量: 非常大,通常为几百 GB 到几十 TB。
- 用途: 长期存储操作系统、应用程序和用户数据。
- 特点: 非易失性(断电后数据不丢失),需要通过 I/O 操作与主存交换数据。
主存又分为两部分,SRAM和DRAM,虽然SRAM 是static的,但是数据也是断电丢失的。SRAM和DRAM的区别主要如下:
- SRAM:
- 每个存储单元由6个晶体管(4个用于存储,2个用于控制)组成。
- 不需要刷新电路,数据在通电期间保持不变。
- 结构复杂,占用更多芯片面积。
- DRAM:
- 每个存储单元由1个晶体管和1个电容组成。
- 需要定期刷新以维持数据,结构简单,占用较小芯片面积。
SRAM由于6个晶体管组成(4 个用于存储,2 个用于控制)了一个双稳态电路(如交叉耦合的反相器),使其可以稳定地保持两种状态(0 或 1),只要电源持续供电,数据就会一直保持不变。同时由于数据是通过晶体管的开关状态存储的,不需要额外的操作来维持数据,因此 SRAM 不需要刷新电路。DRAM的存储单元由于电容会随着时间的推移逐渐漏电,导致存储的电荷流失,数据(0 或 1)可能会丢失,为了保持数据的完整性,DRAM 需要定期读取每个存储单元的数据并重新写入(刷新),以补充电容的电荷。典型的刷新周期为 64ms,在此期间需要刷新所有行。