容量扩展
存储芯片 $\to$ 存储器 容量记作 $m\mathrm{k}\times n/片$
- $m$ := 字
- $n$ := 位/字长
字与容量
注意不要把容量等于字数! e.g. 字长为 4B,则 32KB = 8K $\times$ 4B,字数为 8K
| 扩展方式 | 位扩展 | 字扩展 | 字位同时扩展 |
|---|---|---|---|
| 存储芯片容量 | $m\mathrm{k}\times n/片$ | $m\mathrm{k}\times n/片$ | $m\mathrm{k}\times n/片$ |
| 存储器容量 | $m\mathrm{k}\times N$ | $M\mathrm{k}\times n$ | $M\mathrm{k}\times N$ |
| 芯片数量 | $\lceil N/n \rceil$ | $\lceil M/m \rceil$ | $\lceil M/m \rceil\lceil N/n \rceil$ |
| 特殊连接 | 各芯片数据线 $\xleftrightarrow{依次}$ 数据总线 | 片选信号 $\leftrightarrow$ 外部译码器 |
地址复用
在地址引脚上先后传递两次拼接得到地址信息,节省一半引脚
注意!地址引脚 $\neq$ 地址总线,地址总线不能地址复用!
地址引脚&数据引脚
- 地址引脚:一般采用译码法+地址复用(先后两次传递地址信息)
- 最少地址引脚数 = ($\log_{2}$ 字数 $m$) / 2
- 地址引脚 +1 根,由于地址复用,内存翻 4 倍
- 数据引脚:一般采用线选法
- 数据引脚数 = 字长
MAR
MAR 应保证访问整个地址空间,而不是某个芯片 所以 $\mathrm{bit}(\mathrm{MAR})\geq \log_{2} \left| 地址空间 \right|$
与 CPU 连接
- 确定总容量
- 确定芯片类型&数量
- 分配地址线
- 确定片选信号
地址线
地址分配 = 片选(高位) + 字选(低位)
| 选择信号方式 | 线选法 | 译码器 |
|---|---|---|
| 原理 | 一位 for 一片 低电位选中 |
译码为线选 |
| 需要位数(线数) | $=芯片数$ | $=\log_{2}芯片数$ |
| 优点 | 无需译码,线路简单 | |
| 缺点 | 地址分配不充分&浪费 必须低电位工作 |
|
| 字选看做只有"线选法" |
数据线
注意位扩展连接即可
控制线
- 注意读写线是否分开
- 注意读写线高低电平工作
MREQ
$\bar{\mathrm{MREQ}}$ := 访存信号线
- 低电平: 选择存储芯片
- 高电平: IO
通信方式
- 异步连接
- CPU $\xrightarrow{地址}$ 主存:译码
- CPU:等待 $\xrightarrow{\mathrm{R/W}命令}$ 主存
- CPU $\xleftarrow{完成信号}$ 主存
- CPU $\xleftarrow{数据}$ 主存
- 同步连接
- 同一时钟信号控制
- 无需应答信号