第六章 存储器层次结构
6.1 存储技术
6.1.1 随机访问存储器
随机访问存储器(Random-Access Memory, RAM)分为两类,静态的和动态的。
- 静态RAM
SRAM将每个位存储在一个双稳态的(bistable)存储器单元里。所谓双稳态,就是存在两个稳定状态,其余状态都是不稳定,会迅速转移到两个稳定状态中的一个。
由于SRAM存储器单元的双稳态特性,只要有电,它就会永远地保持它的值。即使有干扰来扰乱电压,当干扰消除时,电路就会恢复到稳定值。
- 动态RAM
DRAM将每个位存储位对一个电容的充电。DRAM存储器单元对干扰非常敏感,当电容的电压被扰乱之后,它就不会恢复了。
很多原因导致漏电,使得DRAM单元在10~100毫秒时间内失去电荷。幸运的是,计算机运行的时钟周期是以纳秒来衡量的,所以相对而言这个保持时间是比较长的。内存系统必须周期性地通过读出,然后重写来刷新内存每一位。
SRAM和DRAM存储器的特性
- 传统的DRAM
DRAM芯片中的单元(位)被分成d
个超单元(supercell),每个超单元都由w
个DRAM单元组成。 一个d×w
的DRAM总共存储了dw
位信息。超单元被组织成一个r行c列的长方形阵列,这里rc=d
。每个超单元有形如(i, j)的地址。
图6-3给出两组引脚:8个data引脚,它们能传送一个字节到芯片或从芯片传出一个字节,以及2个addr引脚,它们携带2位的行和列超单元地址。
每个DRAM芯片被连接到某个称为内存控制器(memory controller) 的电路。
要读出超单元(2,1),内存控制器发送行地址2。DRAM的响应是将行2的整个内容都复制到一个内部行缓冲区。接下来,内存控制器发送列地址1。DRAM的响应是从行缓冲区复制出超单元(2,1)中的8位,并把它发送到内存控制器。
- 内存模块
DRAM芯片封装在内存模块(memory module),它插到主板的拓展槽上。
图6-5展示了一个内存模块的基本思想。示例模块用8个64Mbit
的8M×8
的DRAM芯片(8M个超单元,每个超单元存8位),总共存储64MB(兆字节),这8个芯片编号为0~7。相应超单元地址为(i,j)的8个超单元用来表示主存中字节地址A处的64位字。
所以,要读取内存地址A处的一个字,内存控制器将A转换成一个超单元地址(i,j),每个DRAM输出它的(i,j)超单元的8位内容,合并成一个64位字。
- 增强的DRAM
- 快页模式DRAM
- 扩展数据输出DRAM
- 同步DRAM
- 双倍数据速率同步DRAM
- 视频RAM
- 非易失性存储器
由于历史原因,虽然ROM中有的类型既可以读也可以写,但是它们整体上都被称为只读存储器(Read-Only Memory,ROM),ROM是以它们能够被重编程(写)的次数和对它们进行重编程所用的机制所区分。
PROM(Programmable ROM,可编程ROM) 只能被编程一次。PROM的每个存储器单元有一种熔丝(fuse),只能用高电流熔断一次。
可擦写可编程ROM(Erasable Programmable ROM,EPROM) 有一个透明的石英窗口,允许光达到存储单元。能擦除和重编程的次数的数量级可以达到1000次。
电子可擦除PROM(Electrically Erasable PROM,EEPROM) 可以直接在印刷电路卡上编程。能擦除和重编程的次数的数量级可以达到105次。
闪存(flash memory) 基于EEPROM。固态硬盘是一种新型的基于闪存的磁盘驱动器。