存储器
概述
一、 存储器分类
按存储介质分类
半导体存储器 (易失)
- TTL (晶体管、晶体管、逻辑) :集成度低,功耗高,速度快
- MOS (金属、氧化物、半导体) : 功耗低,集成度高,构成现代计算机存储器(尤其是内存)
- 磁表面存储器(磁盘、磁带)
磁头、磁载体 - 磁芯存储器 (王安博士 1948 年)core memory
硬磁材料,环状元件 - 光盘存储器
按存取方式分类
存取时间与物理地址无关(随机访问)
- 随机存储器 (RAM)
在程序执行过程中可读可写 - 只读存储器
在程序执行过程中只读,存放系统参数或系统程序。
- 随机存储器 (RAM)
存取时间与物理地址有关(串行访问)
- 顺序存储存储器:磁带
- 直接存取存储器: 磁盘
按在计算机中的作用分类:
主存储器:
RAM (随机访问存储器)
- 静态 RAM
- 动态 RAM
ROM (只读存储器)
- MROM: 掩膜型只读存储器
- PROM:可编程只读存储器
- EPROM:电可编程只读存储器
- EEPROM:电可擦写可编程只读存储器
- Flash Memory:一种半导体存储器,速度比磁盘快,比主存储器慢
- 告诉缓冲存储器(Cache):存在于主存储器和 CPU 之间
- 辅助存储器: 磁盘、磁带、光盘
二、 存储器的层次结构
存储器三个主要特性的关系
容量 速度 价位在此金字塔形的存储器层次结构中速度、容量、价位由上到下依次是:
速度由快到慢
容量由小到大
价格由高到低- 为什么要整这么多种类?
- 满足用户的需求,用户需求高速大容量低价格。因此要使用多种存储器构成一个存储体系。 - 存储体系:用两种及以上存储介质构成的存储器,用软硬件将它们连接成一个整体,使得对于某一级程序员来说可以得到一个理想的储存器。
两个重要的存储层次
缓存 - 主存层次
主存 - 辅存层次对于应用程序员来说,这个整体拥有主存的速度,辅存的容量和价格。程序数据的调度由‘软硬件’实现。
- 缓存 - 主存层次:这个层次主要解决速度问题,使用主存储器的地址 —— 实地址(物理地址)。
- 主存 - 辅存层次:主要解决,容量问题,又称虚拟存储器,其地址由一个新的地址空间 —— 虚地址(逻辑地址)定义。
逻辑地址:大家都知道,我们所接触的地址大多都从 0 开始,这边是逻辑地址,而真正的物理地址,是在程序被装入内存之前,由特定机构,将逻辑地址转换成物理地址。
- 缓存实际上是由内容来查找的,即使有所谓的缓存地址,那也只是一个缓存块的编号(块号)。
- 为什么要整这么多种类?
主存储器
一、概述
- 主存储器的基本组成
CPU 和贮存的联系
- 连接信号分成三类
数据总线:完成 cpu 和主存间的数据传输,直接连接在 MDR 上,双向的,可读可写
地址总线:连接在 MAR 和主存间,单向传输,从 CPU 送到主存
控制总线:读写,单向的。
- 连接信号分成三类
主存中存储单元的地址分配
- 大端(大尾)法:高位字节存放在低地址,低位字节存在高地址,以高位地址作为高地址。
- 小端(小尾法):低位字节存放在低地址,高位字节存放在高地址,以低位字节地址为字地址
主存的技术指标
(1) 存储容量:主存存放二进制代码的总位数
(2) 存储速度:- 存取时间:存储器的访问时间,分为读出时间和写入时间
- 存取周期:连续两次独立存储器操作 (读 / 写) 所需要的最小时间间隔分为读周期和写周期
存取时间一般短于存取周期 - 存储器的带宽 位 / 秒
二、半导体芯片
- 基本结构:
地址线(单向) | 数据线(双向) | 芯片容量 |
---|---|---|
10 | 4 | 1K*4 |
14 | 1 | 16K*1 |
13 | 8 | 8K*8 |
片选线:CS、CE
读 / 写控制线: WE(低电平写,高电平读)
OE(允许读) WE(允许写)
- 片选线的作用:让某些芯片同时工作
译码驱动方式
(1) 候选法- 原理:地址译码器输入端输入 4 条线,输出 15 条字线,控制后面的 15 片存储器,读写控制电路有 8 条位线,将多片存储器并联读 / 写数据。当 $A_0$——$A_3$ 输入 4 位的信号时,地址译码器将 15 条输出线中的其中一条置为高电平,表示这根线上的存储器片有效。
- 缺点:引出的地址线太多,如一个 1M*8 的存储器,地址译码器会输出出 1M 根线。
(2) 重合法:把所有存储单元布局成二维阵列。
- 原理:在重合法中,读 / 写数据线只有一位,每一个存储单元的位数也只有一位,当 X 地址 (行地址)给出 00000,Y 地址 (列地址) 给出 00000。则此时 $X_0$ 输出高电平,存储单元 0,0 和 0,31 被激活 (被选中),而列地址这边,$Y_0$ 输出高电平,$Y_0$ 所连接的开关被打开允许数据通过,至此,0,0 可以被读写。
- 优势:当我们使用重合法控制 1M*8 的存储器时,我们将它们列成二维矩阵,将 20 位地址分成两部分,每一部分都是 10 位,则行地址译码器和列地址译码器输出的线都是 1K 条,合计 2K 条
三、随机存取存储器 (RAM)
静态 RAM (SRAM)
静态 RAM 基本电路
其中:
$T_1$ ~ $T_4$ 触发器(存储数据)
$T_5$、$T_6$ 行开关(一行共用)
$T_7$、$T_8$ 列开关(一列共用)
A 触发器源端(正常数据)
$A'$ 触发器非端(相当于数据取反的结果)- 读操作
- 写操作
- 读操作
静态 RAM 芯片举例
- Intel 2114 外特性
- 因此 2114 有 1K*4 个基本单元电路,选用之前所提到的重合法进行译码驱动,但是当时的例子中,一个地址只包含了一位数据 (nK*1),因此在 2114 还需要进行改进使得一位地址可以包含四位数据 (nK*4)。
Intel 2114 矩阵 (64*64) 读
4K 个存储单元可以按照重合法被组合成(64*64)的矩阵。如下图所示,我们可以将 64 列每 16 列一组分成 4 组。64 行保持不变。因此改进后的矩阵结构应该是:* 行地址保持不变,有 6 位行地址,经过译码之后可以产生 64 种行选信号,而行地址只有 4 位,经过译码之后产生 16 中列选信号,因此给出一个列地址,有四行被同时选中。Intel 2114 矩阵 (64*64) 写操作与之类似
- 读写操作动态演示:
读:
写:
- Intel 2114 外特性
动态 RAM (DRAM)
- 动态 RAM 基本单元电路:
动态 RAM 主要分为两种,分别是三管式 (左) 和单管式 (右)
- 三管式原理:
T1,T2,T3 为控制管,数据通过它们进行读写,当读选择线有效时,T2 会被导通;写选择线有效,T3 会导通,外部数据可以通过 T3 对电容器进行读写。(单管式原理与三管式相似) 三管式工作原理:
- T4 是预充电管,当预充电信号有效时,T4 会被打开,Vdd 会经由 T4 对读数据线充电。
- 如果我们选择读出的话,读选择线有效,T2 导通。假如此时 $C_g$ 中保存的信息是 0,此时读数据线依然保持高电平(1)。假如此时 $C_g$ 中保存的信息是 1,此时 T1 被导通,此时读数据线被接地,因此读数据线中的数据为 0 (低电平)
由此可见 :读出与原信息相反,写入与原信息相同
动态 RAM 芯片举例
- 三管动态 RAM 芯片 (Intel 1103) 读
1103 的地址线有 10 根,每次读出写入只有 1K 的数据,说明其存储容量为 1K*1。并且每行地址译码以后每一行都对应了两根控制线,分别是读选择线和写选择线。由此可见在行地址译码的过程中,参与译码的不只是行选信号,还有读写信号。
刷新放大器:Intel 1103 三管动态 RAM 中,每列都有一个刷新放大器用来形成再生信息。
- 单管动态 RAM 4116 (16K*1) 外特性:
正常 16K 容量的存储器需要 14 根地址线,但是 4116 只有 7 根,这就涉及到地址线的复用,14 位地址通过两次传输进存储器中,首先接收到的是 7 位的行地址,地址放入行地址缓冲器中,在接收 7 位的列地址到列地址缓冲器再进行译码。
4116 还有一个自己的小控制器,由行选通信号 (RAS),列选通信号 (CAS),读写控制信号 (WE)。产生三类时钟信号 (行 / 列时钟,写时钟)- 4116 读原理:
- 读放大器:跷跷板电路(类似于非门),因此存储器中储存的数据是真实数据取反的结果(疑问:这样做有什么作用?)
- 单管动态 RAM 4116 (16K*1) 外特性:
- 三管动态 RAM 芯片 (Intel 1103) 读
动态 RAM 刷新:刷新只和行地址有关
- 集中式刷新 (存取周期为 0.5μs):将刷新的时间,集中在一个相对集中的时间段中操作。(以 128*128 矩阵为例)
首先我们都知道,动态 RAM 的刷新时间间隔大概为 2ms,因此集中刷新将 2ms 分成两部分,前 3872 个周期 (1936μs) 用于 cup/io 对于存储器的读写操作,后 128 周期 (64μs) 用于存储器芯片自身的刷新,无论 cup 或 io 都无法同存储器进行数据交换,又称之为死区 (0.5μs * 128 = 64μs)。死时间率为:128/4000*100% = 3.2%.
分散刷新:(存取周期为 0.5μs)
$t_M$ 为正常的 cup/io 操作周期,$t_R$ 为刷新的周期
$t_C$ = $t_M$ + $t_R$
刷新间隔 128 个刷新间隔,会造成过度刷新。- 异步刷新 (分散和集中相结合):每隔 15.6μs 刷新一行。对于每 15.6μs 来说,是集中刷新,对于整个时间来说,属于分散刷新。死区为 0.5*128 = 64μs,并且如果将刷新安排在指令编译状态,就不会出现死区。
- 动态 RAM 基本单元电路:
- 动态 RAM 和静态 RAM 的比较:
DPAM | SRAM | |
---|---|---|
存储原理 | 电容 | 触发器 |
集成度 | 高 | 低 |
芯片引脚 | 少 (因为复用) | 多 (不复用) |
功耗 | 小 | 大 |
价格 | 低 | 高 |
速度 | 慢 | 快 |
刷新 | 有 | 无 |
零散知识点
- 主存可由 RAM 和 ROM 组成