<>一.概述
<>1.存储器的分类
<>1.1 按照存储介质分类
<>1.2 按照访存周期是否均等
<>1.3 按照访问类型分类(下面俩个如果是半导体类型的那他就是随机的)
<>1.4 按照在计算机系统中的作用分类
<>2.存储器的层次结构
速度从上到下,逐渐加快
容量从上到下,逐渐变大
价格/位从上到下,逐渐变低
实现原理——局部性原理:
(1)时间局部性:现在正在访问的信息可能马上还会被访问到
(2)空间局部性:现在正在访问的信息,与之相邻的信息可能马上也会被访问到
<>二.主存储器
<>1.主存储器的技术指标
<>1.1 存储容量
存储容量=存储单元个数 ✖ 存储字长
为了便于相互比较,现在习惯上把存储字长转换为Byte(8位)的倍数
<>1.2 速度
存取时间:启动一次操作到完成该操作的时间,仅与器件本身有关
存储周期:在系统中,存储器进行俩次连续独立操作的最小间隔时间
<>1.3 带宽(单位时间内存储器完成的最大数据传输位数)
是一个速率值,单位时间通常取 1s
<>2.半导体存储器的基本组成
<>2.1 译码驱动方式
(1)线性译码
特点:控制简单、速度快、但地址空间较小
(2)多重译码
特点:控制复杂、地址空间大
<>2.2半导体存储芯片
<>2.3 静态RAM(SRAM)
特点:存储一位二进制数需要6个三极管(触发器工作原理) 速度快、控制简单、容量小
<>2.3.1 静态RAM存储元结构
T 1 、 T 2 T_{1}、T_{2} T1、T2:触发
T 3 、 T 4 T_{3}、T_{4} T3、T4:负载
T 5 、 T 6 T_{5}、T_{6} T5、T6:门控(只有门控打开,才能与外部联通)
<>2.3.2 静态RAM基本电路
<>2.3.3 静态RAM的读操作
<>2.3.3 静态RAM的写操作(左边反相、右边原相)
<>2.3.4 静态RAM芯片举例——Intel2114
<>2.3 动态RAM(DRAM)
特点:存储一位二进制数仅需要1个三极管(靠三极管的极间电容存储数据) 速度略慢、控制复杂、需要刷新和重写操作、容量大
<>2.3.1 动态RAM三管
<>2.3.1 动态RAM单管
<>2.3.1 动态RAM的刷新(刷新的时候需要2根选择线同时有效)
所有的刷新操作都是按行进行的,刷新时选中某一行让他的读写选择线同时有效。
对于以下这个案例,只需要32次操作
<>2.3.2 动态RAM的刷新方式
<>2.3.2.1 集中刷新(有死时间)
<>2.3.2.2 分散刷新(无死时间,但刷新间隔少了很多)
<>2.4 动态RAM和静态RAM对比
<>2.4 只读存储器(ROM)
<>2.4.1 掩膜ROM(芯片生产后,内部数据无法更改,典型意义的ROM)
掩膜一个元器件,读出存储元数据为0。不淹膜,读出存储元数据为1
<>2.4.1 可编程ROM(PROM)
<>2.4.2 可擦除PROM(EPROM)(可多次操作)
电压是Vcc时,门开,高电压。电压换到Vpp时,浮动栅阻碍,门关,变成低电压。
<>2.4.3 电可擦PROM(EEPROM)
操作过程不需要紫外线,直接用特定电流。擦除更方便,但读写速度变慢。
<>2.4.4 闪存(高速的电可擦电路)
可以理解为一种快速的EEPROM,即闪存存储器,我们用的U盘就是这样的
<>2.5主存储器
<>2.5.1 存储容量的扩展
主存多由DRAM芯片构成(通常为多片)
(1)拓展链接:拓展数据
例:用芯片2114(1K✖4),构成1K✖8的存储器
解:1K:需要10根地址线 8:需要8根数据线
2114只能提供4位,所以我们需要俩个芯片。
(俩个芯片,1个提供低4位,一个提供高4位)
为了让他们同时操作,需要一个片选同时选中俩个。为了让他们同时读写,读写信号同时连接俩个芯片。
(2)扩字连接(扩展地址)
由于俩个芯片在地址线上不能完全一样,所以要加一个非门
(3)既需要扩字又需要扩位
将8个芯片分成4组,用2-4译码器,依次选择00、01、10、11来控制哪一组工作
<>2.5.1 存储芯片与CPU的连接
例一:
由于6000H-67FFH有11位变化,所以选 2 11 = 2 K 2^{11}=2K 211=2K,8根数据线1个就够了
由于6800H-6BFFH有10位变化,所以选 2 10 = 1 K 2^{10}=1K 210=1K,8根数据线要用2个
以上总共俩组芯片,前面的高位地址只有一位在变化。 A 11 A_{11} A11在变化,肯定在选,再选相邻的 A 12 、 A 13
A_{12}、A_{13}A12、A13作为3-8译码器的片选端C、B、A。则溢出的译码线为:100、101
则用剩下的 A 14 置 一 , 用 A 15 置 0 A_{14}置一,用A_{15}置0 A14置一,用A15置0
剩下的就 A 10 A_{10} A10对于1K的RAM没有被用,可以让 A 10 与 A 15 A_{10}与A_{15} A10与A15
共同控制,构成与门
例二:
高三位是:101=5
原因:Y5接地或故障
<>2.6存储器的校验
<>2.6.1 编码的最小距离
任意俩组合法代码之间二进制之间的差异
L 最 小 码 距 − 1 = D 校 错 位 数 + C 纠 错 位 数 ( D ≥ C ) L_{最小码距}-1=D_{校错位数}+C_{纠错位数}
(D≥C)L最小码距−1=D校错位数+C纠错位数(D≥C)
由上面的公式,如果最小码距为1则既不能纠错也不能检错
如果想校错,L至少为2。如果想纠错,L至少为3。
<>2.6.2 奇偶校验码
在我们添加完一位之后,最小码距变为2.可以校验1位出错,但不能纠错。
<>2.6.3 汉明码
汉明码的组成需要添加k位检测位,且满足下列公式
2 k = n 数 码 的 位 数 + k 增 添 的 位 数 + 1 2^{k}=n_{数码的位数}+k_{增添的位数}+1 2k=n数码的位数+k增添
的位数+1
如果经过判断,发现 C 1 对 , C 2 和 C 4 C_{1}对,C_{2}和C_{4} C1对,C2和C4
出错。则一定是他们共有的那一位出错,即第6位
<>2.7 提高方寸速度的措施
<>2.7.1 单体多字
只有一个存储体,但是能提供多个存储字。利用了访存的局部性原理,实际上是一种增加存储器带宽的方法。
存储体速度慢,所以要把他放到速度更快的数据寄存器里面。
<>2.7.2 多体并行系统——高位交叉(体内连续)
高位片选存储体,地位选择体内地址。
例如可以把CPU的访存放在0体,把IO放在3体,各个体并行工作互不干扰即可提高访存速度。
<>2.7.3 多体并行系统——低位交叉(体内连续)
第一个数需要一个存储周期,其余只需要间隔1/4周期得到。
必须连续访存才能提高速度,否则不行。
<>2.7.4 存储器控制部件
一般来说,IO优先级大于CPU,写操作优先级大于读操作。
但也要具体情况具体分析