『computer organization-2』memory
主存储器
一、存储系统概述
存储器的分类:可按"介质"分类、按"访问方式"分类,按"功能"分类
- 按介质分类:半导体存储器(易失) or 磁介质存储器 or 光盘存储器
- 按访问方式分类:随机访问存储器(RAM) or 只读存储器(ROM)or 顺序访问存储器(Tape)
- 按功能分类:高速缓存 or 主存 or 辅助存储器
存储器的性能指标:
- 访问时间:给定地址 \(\Rightarrow\) 完成读(写)操作所需时间
- 存储周期:两次访问存储单元之间的最小时间间隔
- 带宽:即数据传输率
半导体存储器:包括 "RAM" 和 "ROM"
SRAM:静态RAM,速度更快也更贵,加电时信息能一直保持,一般用于制作Cache
DRAM:动态RAM,速度较慢但便宜,每隔一段时间必须刷新一次,一般用于制作主存
PROM:一次性可编程ROM
EPROM 与 EEPROM:紫外线可擦除可编程ROM 与 电可擦除可编程ROM
Flash ROM:闪存,本质上是电擦除可编程ROM,一般用于制作SD卡、BIOS存储器、图形卡等
二、存储芯片结构
存储单元电路:存储 1bit 二进制信息的电路,可实现状态写入和读取
存储芯片的容量描述:\(2^n \times m\),即 字数 \(\times\) 单字的位数
- 存储位元:\(2^n \times m\) 个 bit
- 地址线:\(n\) 条地址线 \(\text{A}_0\dots \text{A}_{n-1}\),可表示 \(2^n\) 个字(单向线)
- 数据线:\(m\) 条数据线,可表示一个字的 \(m\) 个 bit(双向线,可读可写)
一维地址结构:只有"行译码"
- 译码电路:将二进制地址编码 \(\text{A}_0\dots \text{A}_{n-1}\) 转化为十进制独热片选信号,使唯一的字选线 \(\text{W}_i\) 处于工作状态
- 数据线:读出或写入字选线选中的那个字的各 bit 信号 \(\text{D}_0\dots \text{D}_{n-1}\)
二维地址结构:"行译码" + "列译码",地址格式为 \(2^m \times 2^{n-m} \times n\)
译码电路:将一维地址拆分为行地址 + 列地址
- 行地址:地址线 \(\text{A}_0\dots \text{A}_{m-1}\),用于选择某一行的所有字,编址范围 \(0 \sim 2^m - 1\)
- 列地址:地址线 \(\text{A}_{m}\dots \text{A}_{n-1}\),用于进一步选择某一行的其中一个字,编址范围 \(0 \sim 2^{n-m} - 1\)
三、存储器扩展
位扩展:适用于 CPU 提供的数据总线 > 芯片数据总线 的情况
- 位芯片数量 = CPU DBs / Chip DBs
- 连线方式:各芯片共享地址线,分用低位数据线和高位数据线
字扩展:适用于 CPU 提供的数据总线 > 芯片数据总线 的情况
- 字扩展芯片数量 = \(2^{\text{CPU ABs}} \div 2^{\text{Chip ABs}}\)
- 连线方式:各芯片共享数据线,CPU提供的多余地址线用于设计选片信号CS(extra ABs Mux CS)
混合扩展:适用于以上两种混合情况
- 总扩展芯片数量 = 位扩展芯片数量 \(\times\) 字扩展芯片数量
- 连线方式:同一字空间的 CS 连在一起,同一位空间芯片共享CPU数据总线
注意:同地址范围的各芯片必须被同时选中(共享CS信号),同地址范围的各芯片分用高/低数据总线
四、DRAM的刷新
为什么要刷新:读操作是"破坏性"的,读"1"时放电,读"0"时充电,故会削弱原数据的强度,需要读后恢复
传感放大器:让读出的信号更显著,"1" 的电平更高,"0" 的电平更低,故读出放大过程就是刷新过程
DRAM 刷新特点:按行刷新,刷新与CPU访存分开进行
"刷新间隔" 与 "刷新周期":
- 刷新间隔:某一行两次刷新之间的时间差(不固定)
- 刷新周期:存储芯片固定的时间间隔,要求在一个周期内将所有内存单元都刷新一遍
刷新方式:DRAM 需要在规定的刷新周期内将所有内存单元都刷新一遍
集中式刷新:将集中刷新间隔分为"集中访存"和"集中刷新"两部分,两阶段任务互斥
该方式 集中刷新间隔 = 刷新周期,存在不能读写内存的访存死区
分散式刷新:CPU与刷新电路交替访问内存,一个存储周期/刷新一行,最后一行刷新后又回到第一行
该方式 分散刷新间隔 = 存储周期 \(\times\) 总刷新行数 \(\le\) 刷新周期(访存刷新绑定),不存在访存死区,但会降低系统速率
异步刷新:保证一个刷新周期内将所有行都刷新一遍即可(单行刷新间隔不固定)
该方式 异步刷新间隔 = 刷新周期,兼顾以上两种方法优势,充分利用一整个刷新周期