主存储器
一、性能指标
存储容量
字:存储单元个数 × 存储字长,例:1024 * 32 b
字节:字节数,例:1024 B
存取速度
存取时间:启动一次存储器操作到操作完成所需时间
存取周期:存储器连续两次独立操作所需最小时间间隔,存取周期 = 存取时间 + 恢复时间
存储器带宽:存取频率,就是存取周期的倒数
注意,存储容量中 1M = 1024 1024, 存取速率中 1 M = 1000 1000
二、存储芯片
SRAM
全称 Static Random Access Memory,特点是速度快,不需要刷新电路,但是集成度低,成本高,常作为小容量主存或者 cache
WE:读写控制指令,H(读),L(写)
CS:片选信号,低有效(选中)
DRAM
全称 Dynamic Random Access Memory,特点是集成度高,成本低,但是必须进行定时刷新,常作为大容量主存
CAS:Column Address Select
RAS:Row Address Select
DRAM 采用的是电容保存数据的值,所以每次读取数据的时候都是破坏性读出(因为电容上电荷跑光了),因此必须要有再生过程(将读出的数据在写回存储元)。
另外,由于电容的特性,电荷总在不断流失,需要刷新来补充电荷,为提升效率,每次刷新都会刷新存储阵列中的一行存储单元,而保证数据不因电荷流逝的最大时间间隔称为最大刷新间隔
集中式刷新:最大刷新间隔中,集中安排一段时间,但是刷新时无法访存,形成“死时间”
分散式刷新:每个读写周期后,紧跟着一个刷新周期,但是浪费时间
异步式刷新:逐行轮流刷新
ROM
正常工作时,只读不写,写入操作需通过特殊手段完 成,其它特点同RAM。 非电易失,可靠性高,常用于主存的系统程序区和各种固件
三、地址译码
在上一个部分可以看到,无论 RAM 还是 ROM,都是将地址信号经过译码后进行数据存取的,下面来看一下地址译码的两种方式:
线选法(单译码结构)
直观地说就是地址只有 1 维,戳到哪拿哪的数据,有点速度快,缺点很明显,费驱动:
重合法(双译码结构)
这个就是 DRAM 中最常用的 2 维地址咯,只取 X 地址,Y 地址交叉点的值
四、片间连接
下面看一看存储芯片是怎么组成完整存储器的,以 SRAM 为例:
比如说现在需要一个 4 k 16 b 的存储器,但是手头上只有 1k 4 b 的 SRAM,那么就需要进行字位扩展:
字扩展,将 SRAM 拼出所需存储器字长的亚子,所需存储器字长 16 b,手上的 SRAM 字长 4b,那么就需要 4 片芯片组成(不需要片选,因为一旦选中就全部输出)
位扩展,将 SRAM 拼出所需存储器位长的亚子,所需存储器位长 4 k,SRAM 位长 1 k,所以需要 4 片芯片组成,通过片选信号来控制究竟选择哪一片
字位扩展,4 * 4 = 16,共需要 16 个 SRAM,如下图
如果使用 ROM ,则方法基本上一直,不过注意 ROM 是没有 WE 信号的(因为 ROM 只读不写)
至于 DRAM,稍微比较复杂一些:
Ai 需要分行、列两组地址,由多路选择器分时送入芯片
片选译码器
加入 RAS 信号,使片选译码输出时间与 RAS 一致
加入 REF (刷新定时信号),在刷新的时候强迫译码输出全部有效
采用 唯 RAS 有效刷新时,CAS 可按片并联
五、CPU-主存连接
MDR:Memory Data Register,用于暂存 CPU 和主存间交换的数据
MAR:Memory Address Register,用于暂存 CPU 正在访问的存储单元地址
SRAM 连接方法
地址线:低位直接与个存储芯片地址引脚相连,高位与片选译码器相连
数据线:数据总线连入存储器数据引出端
读写控制线:控制总线中读写命令线连入存储器 WE 端
片选时间控制:控制总线中的 MREQ(访存请求)信号与片选译码器使能输入端连接
ROM 连接方法:和 SRAM 一样,唯一不同在于 ROM 没有 WE 端
DRAM 连接方法
刷新地址计数器:刷新时向 DRAM 提供刷新行地址,并自动顺序计数到下一行地址
地址多路选择器:在行、列、刷新地址三者间选一路送给 DRAM
定时刷新器:根据所选用的刷新定时方式控制刷新时间,当需要刷新时及时发出刷新请求信号
仲裁电路:在 CPU(I/O) 访存请求、刷新请求中仲裁出一种执行访存的操作
定时发生器:产生一系列 DRAM 工作时所需要的时间控制信号(RAS, CSA, WE 等)