存储器阵列
存储器阵列(memory arrays)分为随机访问存储(random access memory),串行访问存储(serial access memory)与内容可寻址存储(content addressable memory)。
随机访问存储就是给定地址,访问位于该地址的存储。访问延迟与地址值无关。其又分为
RAM 又分为 SRAM(Static RAM)与 DRAM(Dynamic RAM)。
存储器阵列的结构:
- 行:$2^n$ 个字(word),列:$2^m$ 位(bit)
- 行译码器(row decoder)根据 $n$ 位地址激活其中一行的字线(wordline)使得该行有效。读操作期间,存储单元(cell)驱动位线(bitline),列电路中的放大器(amplifier)便通过位线感测数据。写操作期间则是位线驱动存储单元。
- 存储器阵列中往往 $n>>m$,因此一行存储 $2^k$ 个字,阵列共 $2^{n-k}$ 行,$2^{m+k}$ 列
SRAM
12T SRAM 单元:

一个位线,一对读线和一对写线。访问传输门 2T,两个三相反相器 2x4T,反相器 2T。
- Hold:
write=0, write_b=1;写入传输门关闭,上方的三相反相器打开,与普通反相器形成闭环,保持数据。 - Read:
read=1, read_b=0;下方的三相反相器打开,单元驱动位线。 - Write:
write=1, write_b=0;写入传输门打开,上方的三相反相器关闭,位线上的值覆盖单元中的值。
6T SRAM 单元:

一对位线和一个字线。左右两个访问晶体管 N2,N4;两个交叉反馈的反相器,左边 P1+N1,右边 P2+N3。
- Hold:
word=0;N2、N4 均关闭,数据在交叉反馈的反相器中保持。 - Read:一对位线预充至高电平,
word=1;假设内部节点A=1, A_b=0,左边的位线仍然保持高电平,右边的位线通过 N3 慢慢放电;感测放大器(sense amplifier)检测到差分电压,判断A=1;反之同理。 - Write:若要写入
A=1,位线bit预充至高电平,bit_b低电平,word=1;bit通过导通的 N2 将A拉高,bit_b通过导通的 N4 将A_b拉低。
执行读入操作时,两个位线均预充为高电平。假设内部节点 A_b=0,位线 bit_b=1 会试图通过 N4 把 A_b 拉高;如果真的拉高到 1,单元中存储的值就被影响了。因此 N3 拉低 A_b 一定要强于 N4 拉高 A_b,晶体管 N3 >> N4,同理 N1 >> N2。
考虑内部节点 A=1,将要被写入位线 bit=0;位线通过 N2 试图将 A 拉低,因此 N2 拉低 A 一定要强于 P1 拉高 A,所以有 N2 >> P1,同理 N4 >> P2。
这种安排(N1,N3 >> N2,N4 >> P1,P2),使得在写入翻转过程中是低位线负责 overpower 高内部节点,高位线只负责提供互补条件。
6T SRAM 棒图见 Lecture 7 pp.14。
DRAM
DRAM 使用电容(上的电荷)而非交叉耦合反相器存数据。
- 一位只需要 1 晶体管和 1 电容(1T1C),密度(density)可以做得很高。
- 电容会漏电,所以 DRAM 需要周期性地刷新(periodically refresh);即读出数据并重新写入。因此 DRAM 的延迟比较大。
DRAM Read:预充 bit=Vdd/2,word=1。电容与位线 charge sharing。
- 若电容存的是 1,位线电压会稍微上升
- 若电容存的是 0,位线电压会稍微下降
感测放大器检测位线电压的变化,判断 1/0。每次读都会导致电容上的电荷泄露,因此需要重写入。
DRAM Write:
- 写 1:预充
bit=Vdd,word=1,电容充电至 1 - 写 0:预充
bit=0,word=1,电容放电至 0
字线 word=1 需要把电压升到 Vdd+Vtn,以防止电容端(即访问晶体管的源端)收到 degraded 1。
FSM
有限状态自动机(finite state machine,FSM)。两种 FSM:
- 米利型 Mealy machine:输出由当前状态与输入信号共同决定
- 摩尔型 Moore machine:输出仅由当前状态决定
状态图(state diagram),节点表示状态,有向边表示转移。转移在时钟脉冲沿(clock pulse edge)发生。对于米利型自动机,边上会标注 $X/Z$,表示在该状态下输入信号为 $X$ 时输出为 $Z$。对于摩尔型自动机,$Z$ 将写在节点内。
给定一个状态图,求其最简形式(状态最小化 state minimization)。
- 填出状态转移表(state transition table):当前状态,下一状态(X=0/1),输出
- 画出 implication chart $X$,三角形组成,横轴为 $S_{0}\sim S_{n-1}$,纵轴为 $S_1\sim S_n$,$X_{ij}$ 表示 $S_i$ 与 $S_j$ 是否为等价状态
- 若 $S_i$ 与 $S_j$ 有不同的输出,划去 $X_{ij}$
- 在未被划去的格子写下对于所有输入信号的 implied state pairs。检查 $X_{ij}$ 的所有 implied state pairs $(S_m,S_n)$ ,如果 $X_{mn}$ 已被划去,划去 $X_{ij}$。重复这一步直到没有新的格子可以被划去。
最后,implication chart 中每个未被划去的格子 $X_{ij}$ 表示 $S_i,S_j$ 是等价的。