存储器主存扩展
[TOC]
- 存储体:由若干存储单元组成,是存储数据的核心载体
- 存储字长:每个存储单元可存储的二进制比特数(所有存储单元的存储字长相同),与存储器数据寄存器(MDR)位数相等(MDR 用于暂存读写的存储器数据,位数需匹配存储单元单次读写的比特数)
主存容量 = 存储字长(bit)× 存储单元数量 = 存储字长(bit)× 2^(MAR 位数)
存储器容量 = 存储字长 × 存储单元数量
2.2.1 存取时间
- 定义:启动一次存储器操作(读出 / 写入)到操作完成所经历的时间,反映存储器 “单次读写有多快”。
- 分类
- 读出时间:从发出 “读指令” 到数据从存储器传输到 MDR 的时间
- 写入时间:从发出 “写指令” 到数据从 MDR 写入存储器的时间
- 关键特点:读出时间与写入时间可能不相等
2.2.2 存取周期
- 定义:连续两次访问存储器(两次读、两次写或一读一写)的最短时间间隔,反映存储器 “连续读写的最小间隔”,是衡量存储器连续工作能力的关键指标。
- 与存取时间的关系
- 主存的存取周期 = 存取时间 + 存储器状态稳定恢复时间(操作完成后,存储器需短暂时间恢复到可再次操作的稳定状态)
- 结论:存取周期略大于存取时间(如某内存存取时间为 10ns,存取周期为 12ns,其中 2ns 为稳定恢复时间)
2.2.3 存储器带宽
-
定义:单位时间内存储器能传输的二进制信息总量,反映存储器 “数据传输速率”,单位为比特每秒(bit/s)、字节每秒(Byte/s,B/s)等(常用 KB/s、MB/s、GB/s 表示)。
-
影响因素
- 单次传输数据位宽:位宽越大(如 64bit 比 32bit),单位时间内传输的数据量越多
- 存取时间:存取时间越短,单位时间内可完成的传输次数越多
-
计算公式:存储器带宽 = 单次传输数据量(bit/Byte)÷ 存取周期(s)
主存的核心概念与基本硬件组成
2.1 主存的定义与访问特性
-
定义:主存(内存)是机器指令直接操作的存储器,需基于 “存储地址” 实现随机访问(即通过地址可直接定位任意存储单元,无需顺序查找)。
-
关键术语解析
术语 定义 示例 存储元件 主存的最小存储单位,仅能存储 1 位二进制数(0 或 1) 一个晶体管或电容元件 存储单元 由若干存储元件组成,可存储 “一串二进制信息” 8 个存储元件构成 1 个 8 位存储单元 存储字 存储单元中存放的 “一串二进制信息” 存储单元内的 “10110011” 存储字长 存储字的二进制位数,常见 8 位(1 字节)、16 位、32 位、64 位 8 位存储字长对应 1 字节数据
2.2 主存的三大硬件组成部分
2.2.1 存储体
- 功能:主存的 “数据存储核心”,由大量存储单元按一定规则排列构成,所有二进制数据最终存放在存储体的存储元件中。
- 结构关系:存储体 → 存储单元 → 存储元件(1 位),即 “整体 - 局部 - 最小单位” 的层级结构。
2.2.2 存储器数据寄存器(MDR)
- 功能:暂存两类数据
- 从存储体某存储单元读出的信息(准备送往 CPU);
- CPU 准备写入存储体某单元的信息(暂存后等待写入)。
- 关键特性:MDR 的位数 必须与存储字长相等(若存储字长为 8 位,MDR 也为 8 位,确保能完整容纳 1 个存储字)。
2.2.3 存储器地址寄存器(MAR)
-
功能:存放 “欲访问的存储单元的地址”(相当于主存的 “门牌号登记表”)。
-
关键特性
MAR 的位数决定主存可容纳的存储单元总数,计算公式为:存储单元总数 = $2^{(MAR位数)}$
(原理:n 位二进制数可表示 $2^n$ 种不同地址,对应 $2^n$ 个存储单元)
单译码结构(线性译码结构)
2.1 核心原理
单译码结构仅使用一个地址译码器,将输入的 $N$ 位地址信号直接译为 $2^N$ 条译码输出线,每条输出线对应一个存储单元,通过该输出线的 “有效电平”(高电平或低电平,由硬件设计决定)选中唯一对应的存储单元。
双译码结构(二维译码结构)
3.1 核心原理
针对单译码结构的局限性,双译码结构将存储单元排列成 “二维阵列”(行 × 列),使用两个独立的译码器(行地址译码器、列地址译码器):
- 先将 N 位地址信号拆分为两部分(通常为等分为 $N/2$ 位,若 N 为奇数则按 “整数部分 + 余数部分” 拆分,如 N=7 时拆分为 3 位 + 4 位),分别送入行、列译码器。
- 行译码器输出 “行选信号”,选中某一行的所有存储单元;列译码器输出 “列选信号”,选中某一列的所有存储单元。
- 行选信号与列选信号的 “交集”(同时有效)对应唯一的存储单元,实现对存储单元的选中。
二、机器字长与存储字长的区别
1. 核心定义
| 术语 | 定义 | 关键说明 |
|---|---|---|
| 机器字长 | CPU 一次能处理的二进制数据位数 | 决定 CPU 的运算能力,常见 32 位、64 位(如 Intel i5 处理器多为 64 位机器字长) |
| 存储字长 | 主存中一个存储单元能存储的二进制位数 | 决定主存单次读写的基本数据量,由存储芯片硬件设计决定 |
| 关系 | 二者无强制相等关系,存储字长通常是字节(8 位)的 2 的整数次幂倍(1、2、4、8 字节等) | 例:32 位机器字长的计算机,存储字长可设为 16 位(2 字节)、32 位(4 字节)或 64 位(8 字节) |
2. 例题:机器字长与存储字长匹配分析
已知某计算机 CPU 为 64 位机器字长(一次能处理 64 位数据),主存存储字长设计为 32 位(一个存储单元存 32 位)。请问:
- CPU 执行一次 64 位数据运算时,需要从主存读取几次数据?
- 若存储字长改为 64 位,读取次数会如何变化?
解析:
-
64 位机器字长需 64 位数据,存储字长 32 位时,需读取
64 ÷ 32 = 2次; -
存储字长改为 64 位时,单次读取即可获取 64 位数据,读取次数变为 1 次。
结论:存储字长与机器字长匹配时,可减少主存访问次数,提升效率。
三、地址访问模式(主存按字节编址)
1. 基础规则
主存默认按字节编址(每个字节对应唯一地址,1 字节 = 8 位),存储字长是字节的 $2^n$倍( $n$ 为 0、1、2…),因此支持多粒度地址访问,常见访问类型如下:
| 访问类型 | 对应字节数 | 存储字长要求 | 地址特征(以 32 位机器为例) |
|---|---|---|---|
| 字节访问 | 1 字节(8 位) | 无特殊要求 | 地址可为任意值(如 0x0001、0x0002) |
| 半字访问 | 2 字节(16 位) | 存储字长$≥$2 字节 | 地址最低位为 0(即地址是 2 的整数倍,如 0x0002、0x0004) |
| 字访问 | 4 字节(32 位) | 存储字长$≥$4 字节 | 地址最低两位为 00(即地址是 4 的整数倍,如 0x0004、0x0008) |
| 双字访问 | 8 字节(64 位) | 存储字长$≥$8 字节 | 地址最低三位为 000(即地址是 8 的整数倍,如 0x0008、0x0010) |
2. 地址转换关系(32 位机器示例)
以字节地址为基础,不同访问类型的地址转换遵循 “右移 n 位” 规则(n 为访问字节数的对数):
-
字节地址 → 半字地址:
字节地址逻辑右移 1 位
(因 2 字节 = 2¹,右移 1 位等价于除以 2);
例:字节地址 0x0004(二进制 100)右移 1 位 → 半字地址 0x0002(二进制 10)。
-
字节地址 → 字地址:
字节地址逻辑右移 2 位
(4 字节 = 2²);
例:字节地址 0x0008(二进制 1000)右移 2 位 → 字地址 0x0002(二进制 10)。
四、大端方式与小端方式(数据字节序)
1. 核心定义
数据的 “字节序” 指多字节数据在主存中的字节排列顺序,核心区别在于低字节与高字节的地址分配:
| 存放方式 | 定义 | 优势 |
|---|---|---|
| 小端方式(Little-Endian) | 数据的低字节存放在主存低地址,高字节存放在主存高地址 | 符合地址与数据位权的逻辑(低地址对应低位数据),CPU 运算时无需调整字节顺序 |
| 大端方式(Big-Endian) | 数据的高字节存放在主存低地址,低字节存放在主存高地址 | 符合人类(大人)读写习惯(如十六进制数据从左到右对应高到低字节),便于数据直观查看 |
2. 实例对比(以 32 位数据 0x12345678 为例)
假设数据存放在主存地址 0x0000~0x0003 处,两种方式的字节分布如下:
| 地址 | 小端方式(低字节存低地址) | 大端方式(高字节存低地址) |
|---|---|---|
| 0x0000(低地址) | 0x78(数据低字节) | 0x12(数据高字节) |
| 0x0001 | 0x56 | 0x34 |
| 0x0002 | 0x34 | 0x56 |
| 0x0003(高地址) | 0x12(数据高字节) | 0x78(数据低字节) |
3. 例题:小端方式下的数据读取
已知某计算机采用小端方式,主存地址 0x0002~0x0005 处的字节数据依次为 0x88、0x77、0x66、0x55。若按 32 位字访问(地址 0x0002),读取的数据是多少?
解析:
- 小端规则:低地址存低字节,高地址存高字节;
- 地址 0x0002(低地址)→ 低字节 0x88,地址 0x0005(高地址)→ 高字节 0x55;
- 拼接顺序:高字节→低字节(0x55 0x66 0x77 0x88),即读取的数据为 0x55667788。
五、数据的边界对齐
1. 核心目的
为减少 CPU 访问主存的次数(提升效率):CPU 访问主存时,通常按 “存储字长” 单次读取,若数据未对齐,需多次读取并拼接,增加延迟;对齐后可单次读取,降低开销。
2. 对齐规则(按字节编址)
不同数据类型的起始地址需满足 “2ⁿ整数倍” 规则(n 为数据字节数的对数),具体如下:
| 数据类型 | 字节数 | 起始地址要求(最低 n 位) | 示例(合法地址 / 非法地址) |
|---|---|---|---|
| 字节(char) | 1 | 无要求(n=0) | 合法:0x0001、0x0002;无非法地址 |
| 半字(short) | 2 | 最低 1 位为 0(n=1) | 合法:0x0002、0x0004;非法:0x0003 |
| 字(int) | 4 | 最低 2 位为 00(n=2) | 合法:0x0004、0x0008;非法:0x0005 |
| 双字(long) | 8 | 最低 3 位为 000(n=3) | 合法:0x0008、0x0010;非法:0x0009 |
3. 对齐与存储空间的权衡
- 优势:提升访问效率(如 32 位 int 存于 0x0004,CPU 单次读取即可);
- 代价:可能浪费存储空间(称为 “内存空洞”)。
例题:结构体的边界对齐(32 位系统,编译器默认对齐)
定义 C 语言结构体如下:
1 | struct Data { |
求该结构体的总字节数(不考虑编译器优化)。
解析:
- 成员
a(char):起始地址 0x0000(合法),占用 0x0000; - 成员
b(int):需起始地址最低 2 位为 00(4 的整数倍),因此从 0x0004 开始,占用 0x0004~0x0007(0x0001~0x0003 为内存空洞,浪费 3 字节); - 成员
c(short):需起始地址最低 1 位为 0(2 的整数倍),从 0x0008 开始,占用 0x0008~0x0009; - 结构体总字节数:0x0009 - 0x0000 + 1 = 10 字节(实际占用 10 字节,含 3 字节空洞)。
六、408 真题实战(大端 / 小端 + 边界对齐)
1. 2012 年 408 真题(综合考察)
题目:
假设某计算机的主存按字节编址,Cache 采用直接映射方式,每个 Cache 块大小为 4 字节,主存块号为 3 的 Cache 块对应的主存地址范围是( )。
(注:题目核心关联 “地址与块号的对应”,需结合边界对齐,选项略,重点讲分析逻辑)
解析:
-
Cache 块大小 4 字节 → 块内偏移量占 2 位($2^2=4$);
-
主存块号 = 3(二进制 11) → 主存地址结构:块号(高位)+ 块内偏移(低位);
-
块内偏移范围 0~3(二进制 00~11);
-
主存地址范围 = 块号 × 块大小~块号 × 块大小 + 块大小 - 1 = 3×4 ~ 3×4+3 = 12~15(十六进制 0x0C~0x0F)。
答案:对应选项中地址范围为 0x0C~0x0F 的选项(通常为 D)。
2. 2018 年 408 真题(小端 + 补码)
题目:
若计算机主存按字节编址,采用小端方式存放数据。某指令周期内,CPU 需读取地址 0x100 处的 16 位补码整数,该整数的十六进制表示为 0x8000,则该整数的十进制值为( )。
$A. -32768$ $B. -128$ $C. 128$ $D. 32768$
解析:
-
16 位补码 0x8000 的二进制:1000 0000 0000 0000;
-
小端方式:地址 0x100 存低字节 0x00,地址 0x101 存高字节 0x80,拼接后仍为 0x8000;
-
补码转十进制:最高位 1(负数),数值位取反加 1:0111 1111 1111 1111 +1 = 1000 0000 0000 0000(即 32768),故十进制值为 - 32768。
答案:A。
SRAM 定义与分类归属
- 全称:静态随机存取存储器(Static Random Access Memory)
- 核心特征:“静态” 指通电状态下,数据无需周期性刷新即可持续保持,区别于需定期刷新的动态随机存取存储器(DRAM)。
- 易失性属性:SRAM 与 DRAM 均为易失性存储器,断电后存储的数据会立即丢失;而 ROM(只读存储器)为非易失性存储器,断电后数据仍可保留。
存储元核心组成
典型 SRAM 存储元由 8 个 MOS 管(金属 - 氧化物 - 半导体场效应晶体管)构成,各 MOS 管功能分工明确:
| MOS 管编号 | 功能分类 | 核心作用 | 等效理解 |
|---|---|---|---|
| T1、T2 | 工作管 | 构成反相器,存储二进制位(0/1) | 数据存储核心 |
| T3、T4 | 负载管 | 提供稳定偏置电压,维持工作管状态 | 上拉电阻 |
| T5~T8 | 门控管 | 控制存储元与位线的通断,实现读写控制 | 开关阀门 |
MOS 管开关工作原理
MOS 管是数字电路中的核心开关元件,其工作状态由栅极(G)输入电平控制:
-
栅极输入高电平(1):源极(S)与漏极(D)导通,相当于开关闭合;
-
栅极输入低电平(0):源极(S)与漏极(D)截止,相当于开关断开。
(注:MOS 管符号中,G 为栅极、S 为源极、D 为漏极,是理解存储元工作的关键)
SRAM 存储元上电后的初始状态随机(可能是 0,也可能是 1),需通过写操作写入目标数据。
四、SRAM 存储元读操作原理
1. 操作前提
行选通线 X、列选通线 Y 均输入高电平(1) ,门控管 T5~T8 导通,存储元内部 A、B 点与外部位线 IO、IO 反(IŌ)连通。
2. 核心流程
- 存储元内部稳定电平(如 A 高 B 低)通过导通的门控管传递到位线;
- 位线 IO 与 IŌ的电平信号输入差分放大器,通过检测两路信号的电流方向差异,还原存储的二进制数据;
- 读操作不破坏原有数据:整个过程中 A、B 点电平保持不变,仅通过信号传递实现数据读取。
3. 与 DRAM 的关键区别
DRAM 的读操作具有 “破坏性”(读取后存储元电平会改变),需立即执行写操作恢复数据;而 SRAM 读操作无破坏性,无需额外恢复步骤。
五、SRAM 存储元写操作原理
1. 操作前提
与读操作一致,行选通线 X、列选通线 Y 均输入高电平(1) ,门控管 T5~T8 导通,建立存储元与位线的连接。
2. 核心流程(以 “写 0” 为例)
假设存储元当前存储比特 1(稳定状态:A 高 B 低),写入比特 0 的步骤:
- 向位线 IO 输入低电平,向 IŌ输入高电平;
- 低电平通过导通的 T5 传递到 A 点,将 A 点拉低;
- A 点变为低电平→T2 截止→B 点失去接地通路,被 T3 上拉为高电平;
- B 点变为高电平→T1 导通→A 点通过 T1 接地,保持低电平;
- 最终形成稳定状态 “A 低 B 高”,完成比特 0 的写入。
3. 写操作本质
通过外部位线强制改变 A、B 点电平,打破原有稳定状态,建立新的对应存储数据的稳定状态。
例题 5:写操作流程分析
若 SRAM 存储元当前存储比特 0(A 低 B 高),要写入比特 1,需执行的步骤是( )
A. 向 IO 输入高电平,IŌ输入低电平 B. 向 IO 输入低电平,IŌ输入高电平
C. 行选通线 X 输入低电平 D. 无需改变位线电平,直接断开门控管
答案:A
解析:写入比特 1 需最终形成 “A 高 B 低” 的稳定状态,需通过位线强制改变电平:IO 输入高电平(拉高 A 点),IŌ输入低电平(拉低 B 点),配合门控管导通实现状态切换(A 正确);写操作需 X、Y 线为高电平(C 错误)。
六、操作后状态与 SRAM 存储元核心特点
1. 操作后状态维持
读 / 写操作完成后,行选通线 X、列选通线 Y 恢复为低电平→门控管 T5~T8 截止→存储元与位线断开;电源 VCC 通过 T3、T4 持续为工作管供电,维持 A、B 点的稳定电平,数据在断电前保持不变。
2. 核心特点(对比 DRAM)
| 特点 | SRAM(静态) | DRAM(动态) |
|---|---|---|
| 数据保持 | 无需刷新,通电即稳定 | 需定期刷新(电容放电特性) |
| 读写速度 | 快(无刷新延迟) | 慢(刷新占用时间) |
| 用管数量 | 8 个 / 存储元 | 1 个 / 存储元(电容 + MOS 管) |
| 芯片面积 / 成本 | 面积大,成本高 | 面积小,成本低 |
| 功耗 | 高(持续供电维持状态) | 低(仅刷新和读写时耗电) |
| 典型应用 | 高速缓冲存储器(Cache) | 计算机主存(内存) |
例题 6:SRAM 应用场景判断
下列设备中,最可能使用 SRAM 作为存储介质的是( )
A. 笔记本电脑内存 B. CPU 的 L1 缓存 C. U 盘 D. 硬盘
答案:B
解析:笔记本内存用 DRAM(A 错误);U 盘和硬盘为非易失性存储(C、D 错误);CPU 缓存需高速读写,SRAM 的速度优势适配该场景(B 正确)。
习题1解析(答案B)
题目:某SRAM中每个存储单元为8位
- Ⅰ. 数据线为8位 ✓
正确。存储单元位数决定了数据线的宽度,8位单元需要8根数据线并行读写。 - Ⅱ. 地址线为3位 ✗
错误。地址线数量由存储容量(地址空间大小)决定,与单元位数无关。8位字长可以是任意容量。 - Ⅲ. 存储字长为8位 ✓
正确。“存储单元为8位” 直接对应存储字长(每次存取的数据宽度)为8位。 - Ⅳ. 机器字长为8位 ✗
错误。机器字长是CPU的属性,由CPU架构决定,不能从存储器参数推断。
结论:仅Ⅰ、Ⅲ正确 → 选B
习题2解析(答案B)
题目:某SRAM的存储容量为8K×8 位
- 地址线计算:
8K=8×1024=213 个存储单元
需要 13根地址线(A0 ~ A12 )才能寻址 213 个位置 - 数据线计算:
每个单元8位 → 需要 8根数据线(D0 ~ D7 )
结论:13根地址线,8根数据线 → 选B
习题3解析(答案D)
题目:某SRAM芯片容量为256K×16 位,求除电源和接地外的最小引脚数
计算过程:
- 地址线:
256K=256×1024=218 → 18根地址线 - 数据线:
16位字长 → 16根数据线 - 控制线(最小配置):
- 片选信号(CS/CE):1根(必选,使能芯片)
- 读/写控制(R/W):1根(高电平读,低电平写)
最小情况下可省略独立的输出使能(OE),通过CS和R/W组合控制双向数据总线。
- 总引脚数:
18+16+2=36 根
结论:最小引脚数为36 → 选D
2.2.1 硬件组成
- 核心元件:1 个增强型 MOS 管(控制数据读写通路)、1 个存储电容 C(暂存电荷表示数据)。
- 电路连接:MOS 管漏极接存储电容 C,电容另一端接地(GND);MOS 管源极接位线(列线),栅极接字线(行线)。
-
2.2.2 数据表示原理(二进制 0/1 的物理映射)
| 二进制数据 | 实现方式 | 关键过程 |
|---|---|---|
| 1 | 存储电容 C 充满电荷 | MOS 管栅极加高电平(字线有效)→ 源漏极导通 → 位线提供高电平 → 电容充电至 VCC |
| 0 | 存储电容 C 完全放电 | MOS 管栅极加高电平(字线有效)→ 源漏极导通 → 电容通过位线放电 → 电荷释放至 GND |
- 电容参数:容量约为几十飞法(fF,1fF=10⁻¹⁵F),充电速度极快(<10ns),满足高频读写需求。
三、DRAM 的特殊问题:破坏性读与动态刷新
3.1 破坏性读操作(核心特性)
3.1.1 现象与原因
- 现象:读取存储电容中的 “1”(充满电荷)时,电容会通过导通的 MOS 管向位线放电,导致电容电荷流失,数据从 “1” 变为 “0”,即读操作破坏原有数据。
- 解决措施:数据恢复—— 读取数据后,立即通过位线重新向电容充电,恢复原有数据(由灵敏读出恢复放大器完成)。
3.1.2 例题:破坏性读操作的影响分析
若某 DRAM 存储元存储数据 “1”,在未执行数据恢复的情况下连续读取 2 次,第二次读取的结果是什么?
解:第二次读取结果为 0。理由:第一次读取时,存储电容向位线放电,数据从 “1” 变为 “0”;因未执行数据恢复,电容未重新充电,第二次读取时电容已无电荷,故结果为 0。
3.2 动态刷新(“动态” 的核心含义)
3.2.1 刷新原因
MOS 管存在漏电流(无法完美关断),存储电容中的电荷会缓慢泄漏,通常 “1” 的电荷只能保持 64ms(行业标准),超过时间后数据丢失。
3.2.2 刷新机制
- 本质:定期(如每 64ms)对所有存储元执行 “伪读操作”—— 通过导通 MOS 管检测电容电荷,若电荷不足则重新充电,补充电荷以维持数据。
- 注意:刷新操作不影响正常读写,但会占用存储控制器的少量时间(通常可通过 “隐藏刷新” 优化,不影响用户感知)。
四、DRAM 存储阵列扩展:从单个存储元到多 bit 存储
4.1 扩展原理(以 16bit 存储为例)
4.1.1 阵列结构
将 16 个 “1MOS+1 电容” 存储元排列为4 行 ×4 列的二维阵列,实现 “行选 + 列选” 的寻址方式:
- 行线(字线):每一行所有存储元的 MOS 管栅极连接到同一条行线,控制整行存储元的导通 / 截止。
- 列线(位线):每一列所有存储元的 MOS 管源极连接到同一条列线,传输列内存储元的数据。
- 辅助电路:每一列需配备预充电控制电路和灵敏读出恢复放大器(核心功能:预充电、信号检测、数据恢复)。
4.1.2 关键概念:寄生电容
- 定义:列线因连接多个 MOS 管,自身存在的 “非设计性电容”(并非额外添加,而是导线与基板间的寄生效应)。
- 参数:容量约为存储电容的 10 倍(如存储电容为 50fF,寄生电容约为 500fF),会影响位线电压变化幅度,需通过灵敏放大器检测微弱信号。
4.2 读操作完整流程(五步)
以读取 “第 2 行第 3 列存储元(数据为 1)” 为例,流程如下:
- 预充电操作:预充电电路将所有列线电压充至 VCC/2(如 VCC=3.3V,则充至 1.65V),随后关闭预充电电路,列线寄生电容保持该电压。
- 访问操作:向第 2 行行线输入高电平(行选有效),该行所有 MOS 管导通;第 2 行第 3 列存储元的电容(充满电荷)向列线放电,列线电压从 1.65V 升至 1.65V+ΔV(ΔV 约 0.1-0.5mV,微弱信号)。
- 信号检测:灵敏读出恢复放大器检测列线电压变化 —— 若电压升高(+ΔV),判定存储数据为 1;若电压降低(-ΔV),判定为 0。
- 数据恢复:放大器根据检测结果,将列线电压拉至 VCC(数据 1)或 GND(数据 0),通过导通的 MOS 管向存储电容重新充电 / 放电,恢复原有数据。
- 数据输出:向第 3 列列线输入列选通信号,列线数据通过 I/O 接口输出到外部(如 CPU)。
4.3 写操作流程(与读操作的差异)
- 前四步:与读操作完全相同(预充电→访问→检测→恢复),目的是通过 “行刷新” 维持该行所有存储元的数据。
- 第五步:数据输入—— 外部数据通过 I/O 接口送至列线,放大器将列线电压拉至对应电平(1→VCC,0→GND),通过导通的 MOS 管向存储电容充电 / 放电,完成数据写入。
4.4 例题:DRAM 阵列读操作电压变化分析
已知某 DRAM 存储元的存储电容 C=40fF,列线寄生电容 C_par=400fF,预充电电压为 1.5V(VCC=3V)。当存储元存储 “1”(电容电压 3V)时,读取过程中列线电压最终变为多少?(忽略漏电流,电荷守恒:Q=C×V)
解:根据电荷守恒,存储电容放电前电荷 Q1=C×VCC=40fF×3V=120fC;放电后,存储电容与寄生电容并联,总电容 C_total=40fF+400fF=440fF;总电荷不变,故列线最终电压 V=Q1/C_total=120fC/440fF≈0.27V?
注意:实际场景中,预充电后列线已有 1.5V 电压(寄生电容电荷 Q_par=400fF×1.5V=600fC),总电荷应为 Q1+Q_par=120fC+600fC=720fC,最终电压 V=720fC/440fF≈1.64V,即 ΔV≈0.14V,符合灵敏放大器的检测范围。
五、DRAM 与 SRAM 核心特性对比(总结与区分)
| 对比维度 | DRAM(动态随机存取存储器) | SRAM(静态随机存取存储器) |
|---|---|---|
| 存储元结构 | 1MOS 管 + 1 电容 | 6MOS 管双稳态电路 |
| 读操作特性 | 破坏性读(需数据恢复) | 非破坏性读(无需恢复) |
| 刷新需求 | 需定期刷新(64ms / 次) | 无需刷新(断电前稳定) |
| 地址线设计 | 行 / 列地址线复用(减少引脚) | 行 / 列地址线独立(无需复用) |
| 速度 | 慢(约 10-100ns,含刷新延迟) | 快(约 1-10ns,无延迟) |
| 集成度 | 高(单位面积存储量约为 SRAM 的 4 倍) | 低(单位面积存储量小) |
| 功耗 | 低(仅读写 / 刷新时耗电) | 高(持续供电维持状态) |
| 成本 | 低(单位存储成本约为 SRAM 的 1/5) | 高(单位存储成本高) |
| 典型应用 | PC 内存(DDR4/DDR5)、服务器内存 | CPU Cache(L1/L2/L3 Cache) |
例题:根据需求选择存储类型
某高性能服务器需设计 “CPU 与内存之间的高速数据缓冲层”,要求 “速度极快、支持随机读写、无需频繁维护”,应选择 DRAM 还是 SRAM?并说明理由。
解:选择 SRAM。理由:高速数据缓冲层的核心需求是 “低延迟、无读写 / 刷新开销”,SRAM 无需刷新且读操作无破坏性,速度远快于 DRAM(可匹配 CPU 的 GHz 级主频);虽 SRAM 成本高,但缓冲层容量通常较小(如 L3 Cache 为 32MB/64MB),成本可接受,符合 “高速缓冲” 的应用场景。
核心技术:地址复用技术
-
技术目的:减少地址引脚数量(针对大容量 DRAM,降低芯片封装复杂度)
-
实现原理
:行地址线与列地址线
分时复用
同一组地址引脚
- 原需求:行地址 7 条 + 列地址 7 条 = 14 条地址线
- 复用后:仅需 7 条地址引脚(行、列地址分不同时间通过这 7 条引脚传输)
-
地址锁存控制
- 行地址锁存:通过行地址选通信号(RAS,低电平有效),将 7 位地址(A0-A6)锁存到行地址锁存器
- 列地址锁存:通过列地址选通信号(CAS,低电平有效),将 7 位地址锁存到列地址锁存器
- 时序配合:由时钟发生器提供定时,确保行、列地址分时传输不冲突
-
地址复用的额外作用:7 条行地址线可作为刷新地址,用于 DRAM 的逐行刷新(后续 4-3-2 已讲刷新,此处关联应用)
(三)数据输入 / 输出控制
-
数据传输特性:每次仅能输入或输出 1 位二进制信息(因容量为 16K×1 位,无多位并行传输能力),且输入、输出通道分开并支持锁存
-
控制信号规则
控制信号 功能 有效电平 CAS(列地址选通) 控制数据输出 低电平 W(写使能)+CAS 共同控制数据输入 均为低电平 RAS(行地址选通) 控制行地址锁存,兼作片选 低电平 EN(使能) 辅助功能使能 高电平 -
特殊说明:2116 无独立片选信号(CS),由 RAS 和 CAS 共同代替片选功能(当 RAS、CAS 均为低电平时,芯片被选中)
二、考研真题解析(2018 年 408 真题)
(一)题目条件
已知 DRAM 芯片规格为 2K×1 位,采用地址复用技术,需确定行地址线、列地址线的合理分配(目标:减少刷新开销)
(二)解题步骤
-
第一步:计算总地址线需求
- 2K=2¹¹,即需 11 条地址线才能寻址所有 2¹¹(2048)个存储单元
- 因采用地址复用技术,实际地址引脚数为 “行地址线数 + 列地址线数” 的复用,需满足 “行地址线数 + 列地址线数 = 11”
-
第二步:列出两种地址分配方案
方案 行地址线数 列地址线数 行选通线条数(2^ 行地址线数) 列选通线条数(2^ 列地址线数) 方案一 6 条 5 条 2⁶=64 条 2⁵=32 条 方案二 5 条 6 条 2⁵=32 条 2⁶=64 条 -
第三步:根据刷新规则选择最优方案
- DRAM 刷新原理:按行刷新(每次刷新一行,行数越多,刷新次数越多,刷新开销越大)
- 核心原则:减少行数→降低刷新开销
- 结论:方案二(行 32 条、列 64 条)更优,对应选项 C
1. 存储器扩展概述
1.1 扩展的核心目的
解决“单存储芯片的容量不足”或“位宽不匹配CPU/系统需求”的问题,通过多芯片组合实现目标存储器的参数(容量、位宽)。
1.2 扩展的三种类型
- 字扩展:仅增加存储容量(字数),位宽不变;
- 位扩展:仅增加数据位宽,容量不变;
- 字位同时扩展:同时增加容量+位宽。
2. 字扩展(仅扩容,位宽不变)
2.1 定义
通过多片位宽与目标一致的存储芯片,组合成更大容量的存储器(仅增加“可存储的单元数量”)。
2.2 适用场景
单芯片位宽匹配CPU数据总线,但容量小于目标需求。
例:CPU数据总线是8位,单芯片是256K×8位,需构建2M×8位存储器。
2.3 核心步骤
- 计算所需芯片数:
芯片数 = 目标容量 ÷ 单芯片容量 - 分配地址线:
- 片内地址线:数量由“单芯片容量”决定(公式:$2^n = 单芯片容量$,$n$为片内地址线数);
- 片选地址线:数量由“芯片数”决定(公式:$2^m = 芯片数$,$m$为片选地址线数);
- 连接片选信号:
用“地址译码器”将“片选地址线”转换为“片选信号”,每片芯片对应1个独立片选信号(同一时间仅1片被选中); - 统一连接公共信号:
所有芯片的地址线(片内部分)、数据线、控制线(读/写使能等) 直接并联。
2.4 典型例题
题目:CPU数据总线位宽8位,地址总线位宽21位;单SRAM芯片参数为256K×8位。需构建2M×8位存储器,完成以下步骤:
- 计算芯片数;
- 分配地址线;
- 选择译码器类型。
解答:
- 芯片数 = $2M ÷ 256K = 2048K ÷ 256K = 8$片;
- 地址线分配:
- 片内地址线:$2^n = 256K = 2^{18}$ → $n=18$(用CPU地址线$A_{0}~A_{17}$);
- 片选地址线:$21-18=3$根(用CPU地址线$A_{18}~A_{20}$);
- 译码器类型:3根输入对应8个输出 → 选择“3-8译码器”(输出$\overline{Y_0}~\overline{Y_7}$分别控制8片芯片的片选端)。
3. 位扩展(仅加宽位宽,容量不变)
3.1 定义
通过多片容量与目标一致的存储芯片,组合成更宽位宽的存储器(仅增加“一次能传输的数据位数”)。
3.2 适用场景
单芯片容量匹配目标需求,但位宽小于CPU数据总线。
例:CPU数据总线是8位,单芯片是1K×4位,需构建1K×8位存储器。
3.3 核心步骤
- 计算所需芯片数:
芯片数 = 目标位宽 ÷ 单芯片位宽 - 连接公共信号:
所有芯片的地址线、控制线、片选线 全部并联; - 拼接数据线:
将各芯片的数据线按位拼接,组成目标位宽(如2片1K×4位芯片,分别输出$D_0~D_3$和$D_4~D_7$,拼接为8位)。
3.4 典型例题
题目:单存储芯片为1K×4位,需构建1K×8位存储器,完成以下步骤:
- 计算芯片数;
- 描述硬件连接逻辑。
解答:
- 芯片数 = $8位 ÷ 4位 = 2$片;
- 连接逻辑:
- 地址线:2片芯片的$A_0~A_9$(1K对应10根地址线)并联;
- 控制线:2片芯片的“读使能$\overline{OE}$”“写使能$\overline{WE}$”并联;
- 片选线:2片芯片的$\overline{CS}$并联;
- 数据线:第1片输出$D_0~D_3$,第2片输出$D_4~D_7$,拼接为8位数据线。
4. 字位同时扩展(既扩容又加宽)
4.1 定义
同时组合“位扩展模块”与“字扩展”,实现容量和位宽同时满足目标需求。
4.2 适用场景
单芯片既容量不足,位宽也不匹配目标。
例:单芯片是1K×4位,需构建4K×8位存储器。
4.3 核心步骤
- 计算总芯片数:
总芯片数 = 字扩展数 × 位扩展数- 位扩展数 = 目标位宽 ÷ 单芯片位宽;
- 字扩展数 = 目标容量 ÷ 单芯片容量;
- 先构建“位扩展模块”:
用“位扩展”将多片芯片拼成“1组与目标位宽一致的模块”; - 再做“字扩展”:
用“地址译码器”对多组“位扩展模块”做片选,实现容量扩展; - 统一连接公共信号:
所有模块的地址线、数据线、控制线 保持并联。
4.4 典型例题
题目:单存储芯片为1K×4位,需构建4K×8位存储器,完成以下步骤:
- 计算总芯片数;
- 描述扩展逻辑。
解答:
- 总芯片数:
- 位扩展数 = $8位 ÷ 4位 = 2$片/组;
- 字扩展数 = $4K ÷ 1K = 4$组;
- 总芯片数 = $4×2=8$片;
- 扩展逻辑:
- 位扩展:每2片
1K×4位芯片拼成1组1K×8位模块(地址线、控制线、片选线并联,数据线拼接为8位); - 字扩展:用“2-4译码器”(2根片选地址线)控制4组模块的片选端;
- 最终:4组×1K=4K容量,8位位宽,满足
4K×8位需求。
- 位扩展:每2片
5. 三种扩展方式对比总结
| 扩展类型 | 核心变化 | 芯片数计算 | 关键连接点 |
|---|---|---|---|
| 字扩展 | 容量↑,位宽不变 | 目标容量÷单芯片容量 | 译码器分片选 |
| 位扩展 | 位宽↑,容量不变 | 目标位宽÷单芯片位宽 | 数据线拼接 |
| 字位同时扩展 | 容量↑+位宽↑ | 字扩展数×位扩展数 | 先位扩展拼组,再字扩展分片选 |
主存系统优化方法总览(4-6-1 至 4-6-4)
一、4-6-1 主存系统的优化 — 双端口存储器
1.1 核心定义与解决的问题
双端口存储器是一种具有两个独立读写端口(每个端口包含独立的地址线、数据线和控制线)的存储模块,可同时响应两个独立设备(如CPU与DMA控制器、两个CPU)的读写请求,核心解决“单端口存储器同一时间只能处理一个访问请求”的瓶颈问题。
1.2 关键结构特点
- 双端口设计:两个端口(通常称为Port A和Port B)完全独立,各自有一套地址寄存器(AR)、数据寄存器(DR)和控制逻辑(如读/写信号R/W)。
- 存储体共享:两个端口共用同一存储体(存储单元阵列),需通过冲突检测机制避免“同时访问同一存储单元”的冲突。
1.3 冲突检测与处理
- 冲突场景:当两个端口的地址寄存器(ARₐ、ARᵦ)同时指向同一存储单元,且至少有一个端口发出“写请求”时,会产生访问冲突。
- 处理方式:
- 硬件优先级:默认一个端口(如Port A)优先级更高,优先执行其请求,另一个端口等待一个时钟周期。
- 忙信号反馈:冲突时,向优先级低的端口输出“忙信号(Busy)”,使其暂停访问,直至冲突解除。
1.4 应用场景与优势
- 典型场景:CPU与DMA控制器协同工作(如磁盘数据读写)——CPU通过Port A执行指令读写,DMA通过Port B直接与存储器交换数据,无需CPU干预,提升数据传输效率。
- 核心优势:在不增加存储体数量的前提下,通过双端口并行访问,提升主存的“访问并行度”,减少设备等待时间。
二、4-6-2 主存系统的优化 — 单体多字存储器
2.1 核心定义与解决的问题
单体多字存储器是“单个存储体 + 多字数据总线”的设计,存储体每次读写时,会同时读出/写入多个连续的字(如一次读4个字),核心解决“单字存储器每次仅能传输1个字,数据吞吐量低”的问题。
2.2 关键结构与工作原理
- 存储体:仅一个存储体,存储单元按“字块”(如4字/块)连续排列,地址按“块号”编制(而非单个字地址)。
- 多字数据总线:数据总线宽度是“单字总线”的N倍(如N=4,总线宽度为4×32位),可一次性传输N个字。
- 工作流程(以N=4为例):
- CPU给出“块地址”(如块号0),指向存储体中第0~3号字的连续块。
- 存储体一次读出块内4个连续字,通过4字数据总线传输到CPU的“多字缓冲寄存器”。
- CPU从缓冲寄存器中按顺序取用单个字,无需多次访问存储体。
2.3 优势与局限性
- 优势:提升“数据吞吐量”(单位时间传输的总字数)——若单字访问时间为t,单字存储器每秒传输1/t个字,而4字存储器每秒传输4/t个字,吞吐量提升N倍(N为每次传输的字数)。
- 局限性:
- 依赖“程序的空间局部性”:仅当CPU需要连续字(如数组、连续指令)时,才能发挥优势;若访问离散字(如随机访问不同地址的单个字),会读出无用数据,浪费总线带宽。
- 存储体未并行:本质仍是“单个存储体”,每次访问需占用存储体完整周期,无法实现多个独立请求的并行处理。
三、4-6-3 主存系统的优化 — 多体交叉存储器(1)高位多体交叉
3.1 核心定义与基础结构
多体交叉存储器由N个独立存储模块(M₀~Mₙ₋₁)构成,每个模块容量、存取速度完全相同,且共用一套系统总线。高位多体交叉的核心特征是“高位地址区分模块,低位地址区分块内单元”,也称为“顺序编制模式”。
3.2 地址结构与分配(结合例题)
例题:4个模块(M₀~M₃),每个模块8个存储单元
- 地址拆分:
- 模块地址(高位):模块数=4=2²,需2位二进制(00~11,对应M₀~M₃)。
- 块内地址(低位):单个模块单元数=8=2³,需3位二进制(000~111,对应模块内第0~7单元)。
- 总地址位数:2+3=5位(总容量=4×8=32单元=2⁵,匹配地址位数)。
- 地址分配规律:连续地址先全部分配给一个模块,再顺序分配给下一个模块(如下表):
| 存储模块 | 模块地址(高位2位) | 块内地址(低位3位) | 完整地址(5位) | 十进制地址 |
|---|---|---|---|---|
| M₀ | 00 | 000~111 | 00000~00111 | 0~7 |
| M₁ | 01 | 000~111 | 01000~01111 | 8~15 |
| M₂ | 10 | 000~111 | 10000~10111 | 16~23 |
| M₃ | 11 | 000~111 | 11000~11111 | 24~31 |
3.3 核心局限性与作用
- 局限性:无法并行访问:因程序具有“局部性”(指令/数据连续存储),CPU会频繁访问单个模块(如地址0~10仅涉及M₀和M₁),其他模块空闲,无法发挥多模块并行优势。
- 主要作用:扩充容量:本质是“存储器字扩展”——N个模块的总容量=单个模块容量×N,如4个1KB模块可扩展为4KB主存。
四、4-6-4 主存系统的优化 — 多体交叉存储器(2)低位多体交叉
4.1 核心定义与解决的问题
低位多体交叉是多体交叉存储器的另一种编制方式,核心特征是“低位地址区分模块,高位地址区分块内单元”,也称为“交叉编制模式”。其设计目的是解决“高位多体交叉无法并行访问”的问题,实现多模块并行工作。
4.2 地址结构与分配(结合例题)
例题:4个模块(M₀~M₃),每个模块8个存储单元(总容量32单元,5位地址)
- 地址拆分:
- 模块地址(低位):模块数=4=2²,需最低2位二进制(00~11,对应M₀~M₃)。
- 块内地址(高位):单个模块单元数=8=2³,需高3位二进制(000~111,对应模块内第0~7单元)。
- 地址分配规律:连续地址“交叉分配”给不同模块,即第k个地址分配给“模块k mod N”(N=4),如下表:
| 十进制地址 | 5位二进制地址 | 模块地址(低位2位) | 块内地址(高位3位) | 对应模块 |
|---|---|---|---|---|
| 0 | 00000 | 00 | 000 | M₀ |
| 1 | 00001 | 01 | 000 | M₁ |
| 2 | 00010 | 10 | 000 | M₂ |
| 3 | 00011 | 11 | 000 | M₃ |
| 4 | 00100 | 00 | 001 | M₀ |
| 5 | 00101 | 01 | 001 | M₁ |
| … | … | … | … | … |
4.3 并行访问原理(关键优势)
基于“交叉地址分配”,程序的连续指令/数据会分散在不同模块中,结合“存储模块存取周期重叠”,实现并行访问:
- 示例:CPU连续读取地址0~3(4个字),流程如下:
- 时间t₀:CPU向M₀发送地址0(读请求),M₀开始读取(存取周期为T)。
- 时间t₀+Δt(Δt为地址发送延迟):CPU向M₁发送地址1(读请求),M₁开始读取(与M₀重叠工作)。
- 时间t₀+2Δt:向M₂发送地址2,M₂启动;t₀+3Δt:向M₃发送地址3,M₃启动。
- 时间t₀+T:M₀完成读取,输出数据;随后M₁(t₀+T+Δt)、M₂(t₀+T+2Δt)、M₃(t₀+T+3Δt)依次输出数据。
- 结果:原本“4个模块串行读取需4T”,现在仅需T+3Δt(Δt远小于T),数据吞吐量接近原来的4倍,实现“多模块并行访问”。
4.4 局限性
- 对“离散地址访问”不友好:若CPU随机访问非连续地址(如地址0、4、8、12,均指向M₀),会导致M₀连续忙碌,其他模块空闲,并行优势失效。
- 需复杂的地址控制逻辑:需将CPU给出的“连续地址”拆分为“低位模块地址+高位块内地址”,并协调多个模块的访问时序,硬件成本略高于高位多体交叉。
五、四种优化方法对比总结
| 优化方法 | 核心特征 | 核心优势 | 核心局限性 | 适用场景 |
|---|---|---|---|---|
| 双端口存储器 | 单存储体+双独立端口 | 支持两个设备并行访问 | 仅1个存储体,无多体并行性 | CPU与DMA协同、双CPU共享存储器 |
| 单体多字存储器 | 单存储体+多字数据总线 | 提升连续字的吞吐量 | 依赖空间局部性,无多体并行 | 连续数据访问(如数组、连续指令) |
| 高位多体交叉 | 多模块+高位地址分模块 | 扩充主存容量 | 无法并行访问,仅单模块工作 | 需扩展容量但对并行性要求低的场景 |
| 低位多体交叉 | 多模块+低位地址分模块 | 多模块并行,大幅提升吞吐量 | 依赖连续地址,离散访问失效 | 需高吞吐量的连续数据访问(如内存) |









