系列文章目录
第四章 存储器
文章目录
- 系列文章目录
- 前言
- 一、存储器概述
- 二、 半导体存储器芯片简介
-
- 2.1 半导体存储芯片的基本结构
- 2.2 半导体存储芯片的解码驱动模式-线选法
- 2.3 半导体存储芯片的解码驱动模式-重合法
- 三、随机存取存储器(RAM)
-
- 3.1 静态RAM(SRAM)
-
- 3.1.1 静态RAM基本电路
- 3.1.2 静态RAM经典芯片
- 3.2 动态RAM(DRAM)
-
- 3.2.1 第一个基本单元电路,三管动态RAM
- 3.2.2 第二种基本单元电路,单管动态RAM
- 3.2.3 动态RAM经典芯片(三管)
- 3.2.4 动态RAM经典芯片(单管)
- 3.2.5 动态RAM刷新
- 3.3 动态RAM和静态RAM的比较
- 四、只读存储器(ROM)
-
- 4.1 发展历程
- 4.2 掩模ROM(MROM)
- 4.3 PROM(一次性编程)
- 4.4 EPROM(多次编程)
- 4.5 EEPROM(多次性编程)与 Flash Memory 等待其他存储器
- 五、存储器和CPU的连接
-
- 5.1 扩展存储容量
-
- 5.1.1 位扩展(如两个 I K × 4 IK\times4 IK×4位组成 I K × 8 IK\times8 IK×8位)
- 5.1.2 字扩展
- 5.1.3 同时扩展
- 5.2 存储器与CPU的连接
- 六、 检查存储器
-
- 6.1 检测和纠错编码的能力
- 6.2 典型例子:汉明码
-
- 6.2.1 简要介绍汉明码
- 6.2.2 如何分组汉明码?
- 6.2.3 汉明码的组成
- 6.2.4 编码例题
- 6.2.5 汉明码纠错过程
- 七、提高访存速度的措施
-
- 7.1 提高访存速度的措施
-
- 7.1.1 调整主存结构之一:单体多字系统
- 7.1.2 调整主存结构之二:高位交叉
- 7.1.3 调整主存结构三:低交叉
- 7.1.4 调整主存储结构4:高性能存储芯片
- 八、习题课
-
- 8.1 字节编址和地址分配
- 8.2 由存储器组成的简单计算
- 8.3 以及存储芯片的选择CPU与其连接题(经典74138译码器与书中的例题一致)
- 8.4 以及存储芯片的选择CPU与之相连的高级题
- 8.5 交叉编址和多体并行系统
- 九、高速缓冲存储器
-
- 9.1 概述
-
- 9.1.1 为什么用cache
- 9.1.2 cache的工作原理
- 9.1.3 cache的基本结构
- 9.1.4 cache的读写操作
- 9.1.5 cache的改进
- 9.2 cache-主存地址映射
-
- 9.2.1 直接映射
- 9.2.2 全相联映射
- 9.2.3 组相联映射(几路就是一组有多少块)
- 9.3 替换算法
- 十、辅助存储器
-
- 10.1概述
- 10.2 磁记录原理
- 10.3 硬磁盘存储器
- 10.4 软磁盘存储
- 10.5 光盘存储器
前言
现在是7月12号了,继续学习第四章存储器的内容
一、存储器概述
执行程序需要的指令数据都来自存储器,执行结果也存储在存储器中
1.1 存储器类型(分类)
教材给出了三种分类方法
1.1.1 按存储介质分类
- 半导体存储器——电脑的内存条/U盘——分为两种一种是TTL(晶体管-晶体管逻辑)另一种是MOS(金属-氧化物半导体场效应晶体管) TTL:集成度低、功耗高、速度快 MOS:集成度高、功耗低 现在计算机内存主要是MOS型的半导体
- 磁表面存储器(要有磁头和载磁体)
- 磁芯存储器 (core memory)
- 光盘存储器 激光、磁光材料构成
1.1.2 按存取方式分类
- 存取时间与物理地址无关(随机访问) 随机存储器 在程序的执行过程中 ——RAM 只读存储器——程序执行过程中 ,可以用来存放系统参数与系统程序
- 存取时间和物理地址有关(串行访问) 顺序存取存储器——磁带 直接存取存储器——磁盘
1.1.3 按在计算机中作用分类
存储器分为主存储器和辅助存储器 分为: RAM(可读可写)——随机存储器,用户的数据和用户的程序。分为静态RAM和动态RAM(电容) ROM (只读)
主存储器和辅助存储器之间可以再放上 U盘,半导体存储器,速度比磁盘块,比主存储器慢; 计算机硬盘(比较高性能的计算机); 在主存储器和辅助存储器之间的缓存,SSD核心的存储材料就是Flash Memory
放在主存储器和CPU之间,比主存、Flash Memory快,通常用静态RAM来做
1.2 存储器的层次结构
1.2.1 存储器三个主要特征的关系
速度、容量、价格/位
寄存器和缓存的一部分在CPU中,不过一些I/O端口中也有寄存器
寄存器分为两类:
1.2.2 两个重要的存储层次:缓存—主存层次 和 主存—辅存层次
缓存—主存层次 主存—辅存层次
缓存—主存层次的整体看作主存储器,使用的地址直接是主存的地址,如果缓存有就会通过分块偏移找到位置 主存—辅存的整体看作虚拟存储器,使用的时候用的是虚拟地址,逻辑地址
1.3 主存储器概述
1.3.1 主存的基本组成
我们已经直到存储器的构成是:存储体、MAR、MDR。主存要更复杂一些 MAR存储地址,通过译码器等等器件在存储体找到位置 控制电路通过读写电路控制数据方向
1.3.2 主存与CPU之间的联系
连接是三种类型的信号: 数据总线 地址总线 控制总线(读、写等控制信号)
1.3.3 主存中存储单元地址的分配
假设存储字长:32位,即对这个存储器的读和写,一次是读或者写32个0/1 主存的编址,编址是8位,每一个字节都有个地址。
那么定义:这存储字的每一个字节都有一个字节地址,但是存储字的字地址在大端方式中是高位字节的地址 在小端方式中是低位字节地址
1.3.4 主存的技术指标
两个技术指标——速度和容量
是第一次开始到第二次开始之间的最小时间间隔 任何一种存储器,在读写操作后,总要有一段恢复内部状态的复原时间。对于破坏性读出的存储器,存取周期往往比存取时间大得多,因为存储器中的信息读出后需要马上进行再生。
存储器带宽是单位时间传输的位数或者字节数
二、 半导体存储器芯片简介
2.1 半导体存储芯片的基本结构
地址线是单向的,可以是CPU或者是I/O设备的控制器指向存储器 读/写控制线可以是一条也可以是两条
片选线 半导体芯片片选线有两种标识方式: C S ‾ \overline{CS} CS和 C E ‾ \overline{CE} CE 这两个上面都有一个横线,都是表示低电平有效
C S ‾ \overline{CS} CS 芯片选择 C E ‾ \overline{CE} CE 芯片使能信号 W E ‾ \overline{WE} WE 读/写控制线 ,一根线。低电平表示写操作 若是两根线,那么是 W E ‾ \overline{WE} WE与 O E ‾ \overline{OE} OE 与读/写控制线 ,两根线,前者低电平表示写,后者低电平表示读
2.2 半导体存储芯片的译码驱动方式——线选法
地址有4位,每一个地址输出数据8位,那么就是 16 ∗ 8 16*8 16∗8 但是如果是1M*8的存储器,那就需要20根地址线,从地址译码器发出的线有100万根线,很难做到集成
2.3 半导体存储芯片的译码驱动方式——重合法
A 0 A 4 是行地址 A_0~A_4是行地址 A0 A4是行地址 A 5 A 9 是列地址 A_5~A_9是列地址 A5 A9是列地址 第0行的X0是有效的 第0列的Y0是有效的 Y0有效,两个开关打开,(0,0)输出到I/O Y31则因为管子不导通,无法输出到I/O设备 此时线选法的20位的地址,译码得到的1M根线,重合法只需要行1K,列1K,只需要20条线,集成度可以做得更好。
三、随机存取存储器(RAM)
内存就是由随机存储器构成 RAM是对应用户的区域和系统程序运行的区域(ROM存储系统程序和保存配置信息的)
3.1 静态RAM(SRAM)
3.1.1 静态RAM基本电路
下面是静态RAM的基本单元 T 1 T_1 T1~ T 4 T_4 T4是触发器用于保存0和1 T 5 T_5 T5和 T 6 T_6 T6是由行地址选择,用来控制读和写 这一个小单元是一共是6个晶体管
T 7 T_7 T7和 T 8 T_8 T8是一列共有的开关,叫做列开关 如果选中一个行,那么这行的 T 5 T_5 T5和 T 6 T_6 T6都会被打开,但是只有列开关打开的才可以读写操作 注意写操作的时候,因为存储器是双稳态的触发器,所以写入的时候要分两边传,一个传0一个传1 读操作如下: 写操作如下:
3.1.2 静态RAM经典芯片
静态RAM芯片举例: W E ‾ \overline{WE} WE 读/写控制线 ,低电平则有效,为写操作。高电平是读操作 C S ‾ \overline{CS} CS 片选信号,只有为低电平时候这个芯片才会被选中 A 0 A 9 A_0~A_9 A0 A9是十根地址线,2114芯片是1K个存储单元 I / O 1 I / O 4 I/O_1~I/O_4 I/O1 I/O4是四根数据线,每个存储单元选中后都可以读出或写入4位信号,每个存储单元有四个基本电路 1 K × 4 1K\times4 1K×4在实现中就是 64 × 64 64\times64 64×64的阵列 一个列选信号可以同时选择四列的操作(下图就是每一组的第一列) 读操作如下: 写操作:
3.2 动态RAM(DRAM)
静态RAM使用的是双稳态触发器,动态RAM用的是电容 电容保存了电荷则认为是1,电容中没有电则认为是0
3.2.1 第一种基本单元电路,三管动态RAM
基本单元电路如下: 信息保存在 C g C_g Cg T 1 T_1 T1、 T 2 T_2 T2和 T 3 T_3 T3是控制管,进行读出和写入。选择线有效,对应控制管可以导通 以读操作为例,过程如下: 通过预充电信号让 T 4 T_4 T4这个晶体管导通, V D D V_DD VDD会通过 T 4 T_4 T4晶体管给读数据线进行充电。读数据线是1 读操作,读选择线有效, T 2 T_2 T2导通
- 若 C g C_g Cg中保存的信号是0,那么 T 1 T_1 T1不会导通 读数据线保持高电平,那么读数据线上就是1( C g C_g Cg为0)
- 若 C g C_g Cg中保存的信号是1,那么 T 1 T_1 T1导通 读数据线会通过 T 1 T_1 T1和 T 2 T_2 T2两个管子进行放电,那么读数据线上就是0( C g C_g Cg为1)
3.2.2 第二种基本单元电路,单管动态RAM
竖着的是字线(控制线),相应的行被选中后,T会被打开 C s C_s Cs是1的时候,数据线为1; C s C_s Cs为0的时候,数据线为0
3.2.3 动态RAM经典芯片(三管)
读操作: 存储容量 1 K × 1 1K\times1 1K×1 行地址译码器处,参加译码的不仅仅是地址还有读写控制信号 需要注意的三角形的,因为电容会漏电,刷新放大器对电容保存的信息进行刷新 写操作:
3.2.4 动态RAM经典芯片(单管)
16K应该是14位,地址应该是14位,但是这里只有7位,之前的14位需要分两次传入,第一次传入行地址,第二次传入列地址 芯片有自己的控制器 R A S ‾ \overline{RAS} RAS——行选通信号——行时钟 C A S ‾ \overline{CAS} CAS——列选通信号——列时钟 W E ‾ \overline{WE} WE——读写控制信号——写时钟 读放大器一侧是0那么另一侧是1 一侧是1那么另一侧是0 所以在读放大器的左侧的行 C s C_s Cs是1,输出却是0;右侧则正常输出 然后通过紫色的通道输出 我们再看一下写操作,通过选中的行和选中的列,通过读放大器后做了一次相反操作,存储的信息与输入信息相反(0~63行)但是要注意,正好他们在读的时候也会进行一次取反,两次取反抵消了。
3.2.5 动态RAM刷新
电容容易漏电,一定时间内不对电容的信息进行再生,电容中的电会慢慢漏掉——动态RAM刷新
- 集中式刷新——刷新时间集中在一起 问题:在死区时间内CPU与I/O设备只能进行等待 死区的计算是对每一行都进行刷新,每一次刷新都是用一个存储周期
- 分散刷新 这里假设的存储周期要比集中刷新的存储周期时间长 这是因为: t M t_M tM:正常的CPU或者I/O与内存进行信息交换的存取周期 t R t_R tR:专门用于动态RAM芯片某一行的刷新 t C t_C tC: t M t_M tM+ t R t_