存储器
1. 分类
(1)按存储介质分类:
存储介质是能寄存”0“或"1"两种代码的物质或元器件。
包括半导体器件,磁性材料,光盘等。
半导体存储器:半导体器件组成的存储器。断电后数据会丢失,易失性存储器。
磁表面存储器:在金属或塑料基体的表面涂的一层磁性材料。按载磁体形状不同,分为磁盘磁带,磁鼓。
磁芯存储器:硬磁材料做成的环形器件 。
光盘存储器:激光在介质上读写。
(2)按存取方式分类:
随机存储器:RAM(random access memory)
数据在存储单元随机存取。存取时间与存储单元位置无关。
只读存储器:ROM(read only memory)程序执行的时候,只能读出,不能写入。
半导体ROM器件分为MOS型和TTL型。
分为:
1)掩模型只读存储器MROM(masked ROM),
2)可编程只读存储器(programmable PROM):一次性编程,熔丝熔断原理。
3)可擦除可编程只读存储器(erasable programmable ROM ) EPPROM.
改写的两种方法:紫外线照射和电气方法擦除。
最近出现的FLASH具有EEPROM特点,速度比它更快。
顺序存储器:对存储单元读写时候,按存储单元的先后顺序寻找地址的存储器称为串行访问存储器。又叫顺序存储器,比如磁带,需要从头开始读取。
直接存储器:如磁盘,属于部分访问的存储器,先直接指出存储区域-磁道,然后顺序访问,直到找到,所以前半段是直接访问,后半段是串行访问。
(3按照计算机中的作用
主存储器:可以和CPU直接交信息。
辅助存储器:存放当前不用的数据和程序。
主存与辅存相比:主存容量小,速度快,每位价格高。
缓冲存储器:用在速度不同的存储器之间。
存储器的两个层次:
主存-缓存层次和主存-辅存层次;
主存-缓存层次:缓存比主存储器容量更小,解决CPU和主存速度不匹配的问题。
主存-辅存层次:解决存储系统容量问题,辅存比主存容量更大,存放大量未用到的信息。
存储的技术指标
(1)存储容量:
存放二进制代码的总位数。
存储容量=存储单元个数*存储字长;
地址寄存器MAR的位数反映了存储单元的个数。MAR为16位表示,有2^16个存储单元(即64K个存储字,1k=1024).即64k个存储字。
数据寄存器MDR的位数反映了存储字长。
(2)存储速度:
存储速度由存取时间和存取周期表示。
存取时间:启动一次操作到完成该操作用时。
存取周期:存储器连续两次独立操作需要的最小间隔时间。
(3)存储器带宽:
表示单位时间存储器读取的信息量。zu
提高带宽的方法:
(1)缩短存取周期。
(2)增加存储字长。
(3)增加存储体。
剖析CPU与芯片的连接方式
设CPU有16根地址线,8根数据线,并用;
存储器的校验
汉明码校验:
汉明码:具有一位纠错能力,不仅能发现错误,还能找出错误位置并纠正。
纠错理论得:任何一种编码是否具有检测能力和纠错能力,由编码的最小距离有关;
编码的最小距离:在一种编码系统中,任意两组合法编码之间的最小二进制位数的差异。
L-1=D+C;且D>=C;
最小距离L越大,检测错误的位数D越大,纠正错误的位数C也越大,且纠错能力等于检错能力。
设要检测的二进制代码位n位,需要添加k位检测位,组成n+k位的代码。
2^k>=n+k+1;
我们只要知道要检测的二进制的代码位数,即可计算出检测位位数。
接下来确定这k位检测位位置以及取值。
设要检测的n为和k位检测码一共组成n+k位。
设k位检测位为ci(i=1,2,4,8...),安插在n+k位组合位上,检测位取值用来对不同小组奇偶检测;
c1:检测的小组包括1,2,4,8...位。
c2:检测的小组包括2,3,6,7,20,22,24,25...位。
c4:检测的小组包括4,5,6,7,12,13,14,15..位。
c8:检测的小组包括8,9,20,22,22,13,14,15,24,..位。
如图,每个ci组,连续i个数字,间隔i+1位;
将纠错位ci加入;
例题:
给大家举个例子:这里假设发送abcd四位数据,即二进制位数n=4,k=3,要添加3位检测位,
位置为第1,2,4位(由之前所说可知)
即
之后根据奇数校验还是偶数校验,根据各自小组中1的位数(去除本身,即每个ci所处位)给每组ci取值1或者0达到奇数校验或者偶数校验的目的,(奇数校验,如果小组成员的1的个数为奇数,那么校验位ci取值0,否则为1,使1的个数为奇数个,偶数校验与此类似)。
这里采用偶校验,
令二进制数abcd=0101;
c1:第1,3,5,7位,1的个数为2,c1为0;
c2:第3,6,7位,1的个数为1,c2为1;
c4:第5,6,7位,1的个数为2,c4为0;
即汉明码0100101;
汉明码纠错过程:
将收到的每个小组整体成员进行检测(包括ci检测位),
p1:汉明码第1,3,5,7位,1的个数2,p1为0;
p2:汉明码第2,3,6,7位,1的个数为2,p2为0;
p4:汉明码第4,5,6,7位,1的个数为2,p4为0;
如果都为0,说明传输正确;
假设传输错误,0100101传输为0100111,那么再次计算:
使用偶校验,因为发送时检验使用的是偶校验,与其保持一致。
e:汉明码第4,5,6,7位,1的个数为3,e为1;
f:汉明码第2,3,6,7位,1的个数为3,f为1;
g:汉明码第1,3,5,7位,1的个数2,g为0;
可见e,f值为1,出现错误;
只要对比校验值为1中相同的位数,但该位数不能与别的检验值的位数重合,进一步确定出错位数;e,f中第6,7位相同,那么进一步查看,第7位与别的检验值g的第7位重合,所以第六位出错。
有趣的是efg值组成的二进制数110,为6,正是出错位数。
发现出错位数直接纠错即可,因为二进制每位只有0或者1两种可能。直接出错位取反即可。