计算机组成原理-主存储器
概述
1、主存的基本组成:
2、主存和CPU之间的联系:
3、主存中存储单元地址的分配:
- 将高位字节的地址作为存储字的地址
- 将低位字节的地址作为存储字的地址
- 按字寻址:字是由若干个字节组成的单位,一根地址线指向一个字,其中为了定位到字中的字节位置,需要分出地址线用于指向字中的字节具体位置。(如果有4根地址线,按字寻址,字长为16位,16位就是2个字节,所以需要分出一根地址线,剩余三根地址线,能够指向2^3=8个字,对应的内存大小就是8*16b)
- 按字节寻址:一根地址线表示的状态与一个字节地址相对应,1根地址线对应2个字节地址,也就是2B,16b的内存大小
4、主存的技术指标:
- 存储容量:主存存放二进制代码的总位数
- 存储速度:存取时间(存储器的访问时间分为读出时间和写入时间),存取周期(连续两次独立的存储器操作所需的最小时间间隔)
- 存储器的带宽
半导体芯片简介
半导体存储芯片的基本结构
片选线:决定是对哪个存储芯片进行操作,可以用于拓展芯片:对一组芯片同一地址的数据线进行同时访问和操作:
读写控制线:表示对芯片做读操作还是写操作
半导体存储芯片的译码驱动方式
(1)线选法:
地址译码器:枚举输入线的各种状态,如图输入4根线,能够表示16种状态,输出0-15的地址索引。其中只有一根线表示有效状态
缺点:容量大的芯片经过地址译码器后会产生大量地址线,不利于芯片集成
(2)重合法:
随机存取存储器(RAM)
静态RAM(SRAM)
基本电路:
T1~T4是双稳态触发器
动态RAM(DRAM)
基本电路:
用电容Cg是否有电标识0或1
使用动态RAM,地址译码器输出的信号线将会被分成读选择线和写选择线,是之前信号线数量的两倍
动态RAM刷新
因为电容容易漏电,所以要定期对每一行进行刷新;
分为集中刷新(存取周期为0.5微秒,以128*128矩阵举例):
在刷新时不能与任何元器件进行通信,被称为死区。
这个集中刷新的死区为 0.5 微妙*128 = 64微妙,死时间率为 128/4000 = 3.2%
分散刷新(存取周期为1微秒,以128*128矩阵举例):
每次读写操作过后立即执行刷新,将芯片读写周期延长为原来的两倍,但是没有死区
分散刷新与集中刷新相结合(异步刷新):
对于128*128,每隔2毫秒/128 = 15.6微秒刷新一行。
对于每行来说,每隔刷新时间2毫秒就会被刷新一次,“死区”为每15.6微妙出现0.5微妙死区
如果将刷新安排在指令译码的阶段,就不会出现死区
只读存储器(ROM)
掩模ROM(MROM)
厂家写了信息在芯片内,用户不可进行修改
行列选择线交叉处有MOS管为“1”
行列选择线交叉处无MOS管为“0”
PROM(一次性编程)
EPROM(多次编程)
N型沟道浮动栅MOS电路
D端加正电压形成浮动栅,S和D不导通为“0”
D端不加正电压不形成浮动栅,S和D导通为“1”
需要通过照射紫外线擦除编程记录
EEPROM(多次性编程)
电可擦写,局部擦写,全部擦写
FlashMemory(闪速型存储器)
存储器与CPU的连接
存储器容量的扩展
位扩展
eg:用2片1K*4位存储芯片组成1K*8位的存储器
使用同一根片选线链接两个芯片,使两个芯片能够同时工作
字扩展
用2片1K*8位存储芯片组成2K*8位的存储器
利用片选线作为芯片的第11根地址线,用于选择对哪个芯片进行操作
字、位扩展
用8片1K*4位存储芯片组成4K*8位的存储器
CPU与存储器连接
- 地址线的连接
- 数据线的连接
- 读/写命令线的连接
- 片选线的连接
- 芯片的选择
存储器的校验
合法代码集合
1、{000,001,010,011,100,101,110,111}完全不能检错和纠错
2、{000,011,101,110}(1的个数必须是偶数),能够检测1位错,不能纠错
3、{000,111}(三倍冗余,用000表示0,111表示1),因为1位错的概率比多位错的概率大很多,所以能检1位错,纠1位错
4、{0000,1111}(四倍冗余)能检2位错,纠1位错
5、{00000,11111}(5倍冗余)能检2位错,纠2位错
编码的最小距离:任意两组合法代码之间二进制位数的最少差异(几倍冗余)
L - 1 = D + C(D>=C)
L-编码的最小距离,D-检测错误位数,C-纠正错误的位数
汉明码
汉明码是一种分组的奇偶校验
基本的分组奇偶校验:
校验位:对应编码范围种1的个数
汉明码的分组是一种非划分方式
第一组:xxxx1
第二组:xxx1x
第三组:xx1xx
第四组:x1xxx
eg:为0101配置偶校验汉明码,需要存储4位,我们可以用3位汉明码校验位来实现,
第一位校验码C1:位置2的0次方:第一位,处理的位置是二进制以1结尾的位置:1,3,5,7
第二位校验码C2:位置2的1次方:第二位,处理的位置是二进制XX1X的位置:2,3,6,7
第三位校验码C3:位置2的2次方:第四位,处理的位置是二进制X1XX的位置:4,5,6,7
将0101放入剩余位置:3,5,6,7
所以C1要使得1,3,5,7位的一的个数为偶数,故为0;C2为1,C3为0
最后的汉明码为0100101
eg:接收到按配偶原则配置的汉明码为0100111尝试纠错
汉明码C1,C2,C3为1,2,4位,为0,1,0
控制位置分别为:1,3,5,7;2,3,6,7;4,5,6,7(原理同上)
所以C1正确,C2错误,C3错误,所以最后结果因为C1是正确的XXX1的位置没错,假设只有一位错误的情况下,导致C2,C3均有错误的只有第6位,所以正确信息可能是0100101
提高访存速度的措施
采用高速器件;采用层次结构Cache—主存;
调整主存结构
单体多字系统
增加存储器的带宽,虽然每个单个存储字中存了多个机器字,单导致这多个机器字需要共同存取,可能导致一系列问题
多体并行系统
高位交叉,顺序编址
将地址的前两位作为存储体的编号,后续地址为存储体内地址,单个存储体由于局部性原理,可能被多次访问,而其他存储体可能在此期间一直处于空闲状态
地位交叉,各个体轮流编址
图片来源于网络