第 16 讲:随机存储器 RAM 与容量扩展

RAM 的“随机”不是随机写数据,而是任意地址都能被直接选中,访问时间不依赖它排在第几个。

RAM 容量、地址与扩展方式

先读懂容量记号

一个 M×NM\times N 位的存储器表示:

  • 有 MM 个可寻址的字;
  • 每个字宽 NN 位;
  • 总存储位数为 MNMN。

若 M=2kM=2^k,需要 kk 根地址线;需要 NN 根数据输入/输出线。比如 1024×81024\times8:

1024=210,1024=2^{10},

所以需要 10 根地址线,每次读写 8 位,总容量为 8192 bit,即 1 KiB。

地址线决定“选哪个字”,数据线决定“一次搬几位”,不要混淆。

RAM 的基本结构

一块 RAM 通常包括:

  1. 存储单元组成的矩阵;
  2. 行、列地址译码;
  3. 读出放大器和写入电路;
  4. 数据输入输出缓冲;
  5. 片选 CS、读写控制 R/W 等控制端。

只有片选有效时,芯片才响应地址和读写信号;未被选中的芯片通常让数据口进入高阻态,才能共享总线。

SRAM:用稳态保存一位

SRAM 单元建立在双稳态锁存结构上,并加入访问晶体管。字线选中某一行,互补位线负责读出或写入。

  • 只要供电存在,锁存状态可以一直保持;
  • 不需要周期刷新;
  • 速度快;
  • 单元晶体管较多,面积和功耗通常更大,密度较低。

“静态”只表示不用刷新,不表示断电后还能保存。课程中的 RAM 都是易失性存储器。

DRAM:用电荷保存一位

DRAM 利用 MOS 栅极电容上的电荷表示数据。课程以三管动态单元说明读、写和刷新:

  • 写入:选通写字线,把位线电平送到存储电容;
  • 读出:位线先预充,再选通读通路,根据存储电荷是否使晶体管导通来改变位线;
  • 刷新:电荷会泄漏,必须周期性读出并重新写回。

DRAM 单元少、密度高,但控制复杂,读出还可能破坏原电荷,因此实际系统需要感放和刷新控制。

位扩展:字数够,字长不够

若现有芯片为 1024×11024\times1,目标为 1024×81024\times8,需要 8 片并联:

  • 所有地址线并接;
  • CS、读写控制并接;
  • 每片各负责数据字的一位。

扩展后字数不变,字长相加:

8×(1024×1)=1024×8.8\times(1024\times1)=1024\times8.

字扩展:字长够,字数不够

若现有芯片为 256×8256\times8,目标为 1024×81024\times8,需要 4 片:

  • 低 8 位地址 A7∼A0A_7\sim A_0 同时接到四片内部地址;
  • 高 2 位地址 A9A8A_9A_8 经 2-4 译码器产生四路片选;
  • 数据线和读写控制并接;
  • 每个时刻只有一片被选中。

地址分区为:

A9A8A_9A_8选中芯片十进制地址范围
0000–255
011256–511
102512–767
113768–1023

高位地址不是送进每片的存储阵列,而是决定“哪一片拥有当前地址”。

同时做字、位扩展

目标容量除以单片容量,可以先分别计算:

Nword=MtargetMchip,Nbit=NtargetNchip.N_{\text{word}}=\frac{M_{\text{target}}}{M_{\text{chip}}}, \qquad N_{\text{bit}}=\frac{N_{\text{target}}}{N_{\text{chip}}}.

总片数为两者乘积。先把若干片并成一个所需字长的“组”,再用高位地址选择不同组,图会最清楚。

地址译码题的检查表

  • 容量单位是 bit、Byte 还是 word;
  • 地址线数量是否满足 2k=M2^k=M;
  • 数据线宽度是否等于字长;
  • 高位地址译码后是否保证只选中一个芯片组;
  • 低位地址是否接到所有芯片;
  • 未选中器件的数据端是否高阻;
  • 地址范围首尾是否连续且没有重叠。

评论