VLSI-Lecture-11
存储器分类
基于数据存储特性
只读存储器(ROM)
非易失性:核心物理特性,电源断开后,存储的数据不会丢失。
| 类型 | 名称 | 主要特点 | 数据擦除方式 |
|---|---|---|---|
| 固化ROM | 掩膜只读存储器 | 数据在芯片制造时写入,完全不可更改。成本低,用于大批量固定程序。 | 不可擦除 |
| 可改写ROM | EPROM | 可擦除可编程ROM。允许用户编程写入,需要特殊设备。 | 紫外线照射擦除(窗口式) |
| E²PROM | 电可擦除可编程ROM。可以按字节进行擦写,无需从电路上取下。 | 使用电信号擦除 | |
| Flash | 当前最主流的可改写ROM。结合了EPROM的高集成度和E²PROM的电擦除优点,按块擦除。 | 使用电信号擦除(按块或扇区) |
随机存取存储器(RAM)
易失性:局限性所在,电源断开后数据即刻丢失。
| 类型 | 全称 | 存储原理 | 主要特点 |
|---|---|---|---|
| SRAM | 静态随机存取存储器 | 利用双稳态触发器存储数据 | 速度快,无需刷新;但结构复杂,集成度低,面积大,成本高。常用作高速缓存(Cache)。 |
| DRAM | 动态随机存取存储器 | 利用电容上的电荷存储数据 | 集成度高,容量大,成本低;但速度较慢,且电荷会泄漏,需要定时刷新。常用作主内存。 |
特殊用途存储器
| 类型 | 全称 | 工作方式 / 特点 | 应用场景 |
|---|---|---|---|
| FIFO | 先进先出存储器 | 数据按照写入的顺序依次读出,即先写入的数据先读出。 | 数据缓冲、异步通信、不同时钟域的数据交换 |
| LIFO | 后进先出存储器 | 数据按照与写入相反的顺序读出,即最后写入的数据最先读出。 | 堆栈操作、程序调用、算法中的回溯 |
| CAM | 按内容寻址存储器 | 通过输入数据内容进行并行搜索,直接返回匹配项的地址,而非通过地址访问数据。查找速度极快。 | 网络路由器的路由表查找、缓存标签匹配、数据库加速 |
| 多端口存储器 | 多端口存储器 | 具有多个独立的访问端口,允许两个或以上的设备同时读写。 | 多核处理器数据共享、通信交换芯片、图形处理 |
存储器结构
无论SRAM、DRAM还是ROM,其外部接口与内部逻辑架构大体一致,遵循地址解码-阵列访问-数据I/O的模式:

阵列结构的存储器组织
-
存储体():核心数据存储区,形式为二维矩阵。
-
地址解码系统:
-
行译码器:接收位行地址,激活存储阵列中的某一行。
-
列预译码器:接收位列地址,控制列选开关。
-
-
列选开关:由于物理阵列的列数通常多于逻辑字长,该模块用于从激活的行中筛选出目标数据。
-
读写控制:接收外部控制信号(如WE、OE、CS),协调输入/输出电路的工作时序。
-
输入/输出:数据总线的接口缓冲。
信号流向逻辑:地址信号(位行 + 位列)定位单元 控制信号决定读/写操作 数据通过I/O端口传输。
存储体
容量:
-
(字数):存储器能够存储的数据单元的总数量。
-
(位数):每一个数据单元包含的二进制位数(8位、32位)。
为了使版图接近正方形以减少延迟和面积,设计者通常会将多个逻辑字放在同一个物理行中。
-
行数 :物理行的数量通常小于或等于逻辑字数。
-
列数 :物理列的数量通常大于或等于字长。
-
总容量守恒:。
字线(行选)与位线(列选)
字的存储单元通常是按位的顺序分插排放的
-
非交织:字1的所有位排在一起,接着是字2的所有位。
-
实际工程:为了匹配列选开关(MUX)的电路设计和减少寄生效应,通常会将不同字的相同位放在相近的位置,或者按照特定的多路复用规律排列。
字线
在存储阵列的物理行上,同一行中所有存储单元的选择控制端是物理连接在一起的。这条连线被称为字线。
字线直接与行译码器的输出端相连,当位行地址输入行译码器后,译码器会对地址进行解码,并仅将对应的那一条字线置为有效电平,激活该行所有的存储单元。其他未被选中的字线保持无效状态。
位线
在存储阵列的物理列方向上,同一列中所有存储单元的数据输入/输出端是连接在一起的。这条连线被称为位线。
位线连接到列选开关的数据端,负责承载读出的信号或写入的信号。
当某一条字线被激活时,该行所有单元的数据都会被放到各自对应的位线上。
地址译码器
概述
-
行地址译码器:接收 位行地址信号。驱动水平方向的信号线,即字线。
-
列地址译码器:接收 位列地址信号。控制垂直方向的数据通路,即位线的选择。
存储体是一个由 个单元组成的二维矩阵。为了从中精准定位某一个特定的存储单元或字,系统采用了行与列分离的寻址策略。
通过同时选定“某一特定行”和“某一特定列”,两条信号线的交叉点即为目标存储单元。
行地址译码器

行地址译码器示意图
这个不懂就去翻翻图灵完备那个 3-8 译码器是怎么设计的(每位都有 1 和 0 两种情况,组合成特定组合就点亮对应的字线)。
输入端的 位二进制地址()首先经过缓冲器(增强驱动能力,并产生一对互补地址信号)。
对于任意一个特定的 位地址输入,在 条字线中,==有且仅有一条==字线会被置为有效电平(高电平),其余字线保持无效(多了就会冲突,你到底是读的哪一条字线上的值)。
多级译码技术
当存储容量增大时,单级译码面临扇入过多的物理限制,于是需要和普通逻辑门一样,需要分级输入。

常用译码器设计(作为预译码级)
核心思想:将长地址拆分为若干短地址组,先分别译码,再组合。
实际的行选择是==由 组信号和 组信号在末级进行“与(AND)”操作== 完成的,要选中某一行,需要特定的 和 同时有效。
地址同步控制

地址同步控制示意图
由于布线长度不同或驱动能力差异, 等地址信号到达译码器输入端的时间绝对不一致。在地址切换的瞬态过程中,译码器可能会短暂输入一个错误的中间地址,导致非目标行的字线瞬间产生波动,产生错误结果以及额外的动态功耗。
解决方案
- 引入 :在译码电路中增加一个全局同步控制信号,通常称为时钟信号或使能信号。在地址信号尚未稳定时,令 无效(封锁译码器输出),以达到强行同步的效果。
电路优化
使能控制的位置
因为时钟同步使能控制是最关键的一步,在它有效之前,路径必须被物理切断,而时钟上升沿到来之后,必须让门电路快速输出,因此将同步使能信号()控制的晶体管(通常是NMOS)放置在靠近输出端的位置。
反相器阈值电压调整

阈值电压调整
前级与非门输出低电平,后级反相器需要输出高电平来驱动字线。我们希望字线能尽快升起(被选中)。
因此,我们将产生字线信号的反相器设计为具有较高的阈值电压 (在翻转中间,只要感到了一点的翻转,反相器就立马输出为相反的电平)。
列地址译码器

列地址译码器示意图
读写控制及输入输出电路
各类存储器详解
Mask ROM(固化 ROM)
Mask 指的是光刻环节所使用的光罩。该存储器的编程方式是在芯片制造的物理层面上完成的。Mask ROM 仅适用于存储那些大批量生产且不再需要修改的固定信息(如固件、字库等)。
编程机制:
flowchart LR
A[用户提供码点数据<br>(二进制代码)] --> B[代工厂据此设计物理版图]
B --> C[厂家制作光刻掩膜版<br>(Mask)]
C --> D[流片加工]
不可更改性(非易失性):芯片一旦制造完成,其内部电路结构即固定,存储的信息永久无法改变。
伪 NMOS 或非存储阵列

伪 NMOS 或非存储阵列
-
存储“0”:在字线与位线的交叉点制作一个NMOS存储管。
-
存储“1”:在字线与位线的交叉点不制作NMOS存储管。
对于每一根位线而言,只要挂接在它上面的任意一条被选中的字线对应的位置有管子(NMOS)导通,位线就会呈现低电平。符合“或非(NOR)”逻辑的特性(输入为高,输出为低)。
读取逻辑
| 字线选中 (WL=1) | 字线未选 (WL=0) | |
|---|---|---|
| 有存储管 | **输出“0”** | 高阻态(HZ) |
| 无存储管 | **输出“1”** | 高阻态(HZ) |
特性分析
速度特性
为降低静态功耗,通常使用小尺寸存储管,其驱动能力较弱,导致位线电容放电速度较慢,即下降沿较缓(可以通过缓冲输出电路改善)。
静态功耗
当输出为 “0” 时,上方的负载管(PMOS)和下方的存储管(NMOS)同时导通,形成了一条从电源(Vcc)直通地(GND)的直流电流通路,导致静态功耗的产生。
采用小尺寸的存储管有利于限制直流通路电流,从而降低静态功耗,同时也有助于减小芯片面积。
输出电平
由于伪 NMOS 属于有比逻辑,输出低电平并非理想的0V,而是由负载管导通电阻与存储管导通电阻的分压比决定的。
同时由于输出的低电平较高(),导致输出逻辑摆幅较小,噪声容限降低。
版图特点

伪NMOS或非存储阵列版图设计
资源共享策略(提高集成度)
为了减小芯片面积,版图设计采用了高度复用的策略。
-
共用地线:相邻两行(字线)的存储单元共享同一个接地有源区(两个背靠背的晶体管共用一个源极接地触点)。
-
共用位线:相邻两行也可以共享位线有源区或位线引线孔。
这种“折叠”式的排列方式极大地压缩了单个比特单元的物理尺寸。
数据修改的版图层级
如果在设计迭代中需要改变存储的数据(例如修复Bug或更新固件),==必须更改有源区和引线孔这两层版图==。
数据的“0”和“1”是由“是否有晶体管”决定的。
有源区定义了晶体管的沟道区域,引线孔定义了连接关系。改变这两层就能物理上“生成”或“消除”一个晶体管,从而改变数据。
预充电结构或非存储阵列

预充电结构或非存储阵列
相比于伪NMOS结构,这里的负载管(PMOS)不再恒定接地导通,而是其栅极接了一个时钟信号 。此时,负载管被称为预充管。
和动态逻辑类似,电路的工作分为两个时钟相位:
-
预充电阶段( 低电平):预充管导通,位线被充电至高电平(),即逻辑“1”。此时存储管不工作。
-
求值/读操作阶段( 高电平):预充管截止(关断)。如果被选中的存储管导通(存“0”),位线电荷被放掉,输出变为“0”;如果存储管截止(存“1”),位线电荷维持,输出保持“1”。