存储器 #
Review
- 2019/10/14
1. 概述 #
存储器是计算机系统中用于存储程序和数据的部件,可分为主存储器(内存)和辅助存储器(外存)。主存储器通常采用半导体存储器件,直接与CPU交换信息;辅助存储器如硬盘、固态硬盘等,容量大但速度较慢。
存储器的主要技术指标:
- 存储容量:存储单元的总数
- 存取速度:数据的读写时间
- 存储密度:单位面积上所容纳的二进制信息位数
- 功耗和成本
2. 半导体存储芯片 #
半导体存储器按存取方式可分为随机存取存储器(RAM)和只读存储器(ROM)。半导体芯片的基本结构包括:
- 存储矩阵:由多个存储单元组成
- 地址译码器:将地址信息转换为选择信号
- 读写控制电路:控制数据的读取和写入操作
- 数据输入/输出缓冲器:暂存输入/输出数据
3. 随机存取存储器(RAM) #
RAM是一种可读可写的存储器,断电后数据会丢失(易失性)。
3.1 静态RAM(SRAM) #
保存0和1的原理是什么? #
SRAM使用触发器来存储信息。每个存储单元由6个晶体管组成的双稳态触发器构成。只要电源不断,触发器可以无限期地保持其状态,不需要刷新操作。
基本单元电路的构成是什么? #
SRAM的基本单元是由两个互连的反相器和两个访问晶体管构成的6T(六晶体管)结构:
- 两个CMOS反相器形成双稳态电路,可以保持两个稳定状态(0或1)
- 两个访问晶体管用于控制存储单元与位线的连接
对单元电路如何读出和写入? #
- 读操作:激活字线(WL),使访问晶体管导通,存储单元连接到位线(BL和BLB)上,数据通过感测放大器读出
- 写操作:激活字线,同时在位线上施加要写入的数据,强制改变存储单元的状态
典型芯片的结构是什么样子的? #
典型SRAM芯片由以下部分组成:
- 存储阵列:m×n个存储单元
- 行译码器:选择特定的字线
- 列译码器/复用器:选择特定的位线
- 感测放大器:读取位线上的微小信号
- 输入/输出缓冲器
- 控制逻辑电路
静态RAM芯片是如何进行读出和写入操作的? #
读操作流程:
- 地址线提供要访问的单元地址
- 行译码器选择对应的字线
- 列译码器选择对应的位线
- 感测放大器检测位线上的电压差并放大
- 数据被送到输出缓冲器
写操作流程:
- 地址线提供要访问的单元地址
- 数据输入到输入缓冲器
- 行译码器选择对应的字线
- 列译码器选择对应的位线
- 写入驱动器向位线施加适当的电压,强制改变存储单元状态
3.2 动态RAM(DRAM) #
DRAM使用电容存储电荷来表示数据,更加密集且成本更低,但需要定期刷新以防止数据丢失。
工作原理 #
- 每个存储单元由一个访问晶体管和一个存储电容构成(1T1C结构)
- 存储电容充电表示"1",放电表示"0"
- 由于电容漏电,DRAM需要周期性刷新(通常每几毫秒刷新一次)
DRAM的读写操作 #
- 读操作:激活字线,电容上的电荷流向位线,电压变化被感测放大器检测,同时进行刷新
- 写操作:激活字线,通过位线向电容充电或放电
DRAM的刷新方式 #
- 分散刷新:在正常工作间隙对各行进行刷新
- 集中刷新:在固定时间段内连续完成所有行的刷新
- 异步刷新:按一定时间间隔逐行进行刷新
3.3 动态RAM和静态RAM的比较 #
特性 | 静态RAM (SRAM) | 动态RAM (DRAM) |
---|---|---|
存储原理 | 触发器电路 | 电容充放电 |
集成度 | 较低 | 较高 |
速度 | 快 | 慢 |
功耗 | 较高 | 较低 |
价格 | 较贵 | 较便宜 |
刷新 | 不需要 | 需要定期刷新 |
应用 | 高速缓存(Cache) | 主存储器 |
4. 只读存储器(ROM) #
ROM是一种只读或很少写入的非易失性存储器,断电后数据不会丢失。
4.1 掩模ROM(MROM) #
在制造过程中写入数据,用户无法修改。
4.2 可编程ROM(PROM) #
用户可以使用专用设备一次性写入数据,写入后不可更改。
4.3 可擦除可编程ROM(EPROM) #
可以通过紫外线照射擦除数据,然后重新编程。
4.4 电可擦除可编程ROM(EEPROM) #
可以通过电信号擦除和重写数据,无需物理操作。
4.5 闪存(Flash Memory) #
结合了EPROM和EEPROM的特点,可以电擦除,但以块为单位操作,广泛应用于U盘、SSD等。
5. 存储器与CPU的连接 #
5.1 存储器总线连接 #
- 地址总线:CPU指定要访问的存储单元
- 数据总线:在CPU和存储器之间传输数据
- 控制总线:传输读/写、片选等控制信号
5.2 存储器的地址分配 #
- 线性编址:所有存储器共享同一地址空间
- 分段编址:按不同的功能划分地址段
5.3 存储器的片选逻辑 #
通过地址译码器生成片选信号,选择特定的存储芯片进行访问。
6. 存储器的校验 #
6.1 奇偶校验 #
在数据中添加一个奇偶位,使1的总数为奇数(奇校验)或偶数(偶校验)。
6.2 海明码 #
可以检测并纠正单比特错误,检测多比特错误。
6.3 循环冗余校验(CRC) #
通过多项式除法生成校验值,可靠性高。
7. 提高访存速度的措施 #
7.1 高速缓存(Cache) #
在CPU和主存之间增加一级或多级高速缓存,利用程序的局部性原理提高访存速度。
7.2 存储器分层结构 #
- L1/L2/L3缓存:速度从快到慢,容量从小到大
- 主存:容量较大,速度中等
- 辅存:容量最大,速度最慢
7.3 多体交叉存储器 #
将存储器分为多个独立的存储体,可以并行访问不同的存储体,提高带宽。
7.4 虚拟存储器 #
利用外存扩展内存的容量,通过地址映射和页面置换机制实现。