存储介质是指能寄存“0”、“1”两种代码并能区分两种状态的物质或元器件。
存取方式可以分为存取时间与物理地址无关和存取时间与物理地址有关两类,应用前者的有随机存储器和只读存储器,后者有顺序存取存储器和直接存取存储器。
早期的ROM无法更改存储的信息,叫做掩膜型只读存储器(MROM),随着技术的发展,ROM派生出了可编程只读存储器PROM、可擦除可编程只读存储器EPROM以及用电可擦除可编程只读存储器EEPROM,近年来还出现了快擦型存储器Flash Memory,具有EEPROM的特点但速度要快很多。
存储器有三个主要特性:速度、容量和价位。我们追求的是大容量、高速度、低价位的存储器,但这是很难达到的,具体原因可以下一下存储器的分层结构图(下图):
最上层的寄存器放在CPU的内部,主存用来存放参与程序运行的数据,两者之前速度差距很大,为了两者更好的匹配,在主存与CPU之间加入了高速缓存(Cache),有时候Cache会有多级,其中靠近CPU的那一级也会放入CPU内。CPU不能直接与辅存通信,辅存只能与主存交换信息。
存储器的结构层次主要体现在缓存-主存和主存-辅存这两个存储层次。
从CPU的角度看,缓存-主存这一层次的速度是接近缓存的速度,容量和价位接近主存的容量和价位,主存-辅存这一层次,整体分析,速度接近主存,容量和价位接近辅存,缓存、主存和辅存的三级结构解决了速度、容量、成本三者矛盾。
现代计算机的主存由半导体集成电路构成,MAR、MDR制作在CPU芯片内,驱动器、译码器和读写电路制作在存储芯片内。存储芯片和CPU芯片可通过总线连接。
12345678H这个十六进制数在主存中如何存储?
区别与联系:大端/小端法,主机字节序/网络字节序
不同的CPU有不同的字节序类型,这些字节序是指整数在内存中保存的顺序,叫做主机序。主机字节序包括大端法和小端法,x86系列的CPU都是小端法。
网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字节序是大端法。
存储容量:指主存存放二进制代码的总位数。
地址线和数据线共同反映存储芯片的容量。地址线10根,数据线为4根,则芯片总容量为2^10x4=4K。
控制线包括片选线和读/写控制线,片选线用来选择存储芯片。
随机存取存储器按其存储信息的原理不同,可分为静态RAM(SRAM)和动态RAM(DRAM)。
所谓的刷新指的是先将原信息读出,再由刷新放大器形成原信息并重新写入的再生过程。
根据两者的特点,DRAM主要用于主存,SRAM主要用于缓存。
原因:在计算机运行的过程中,由于种种原因致使数据在存储过程中可能出现差错,为了能及时发现并纠正错误,需要校验机制。
合法代码集{000,001,010,011,100,101,110,111},编码最小距离为1;合法代码集{000,111},编码最小距离为3
编码的纠错、参错能力与编码的最小距离有关。
公式:L - 1 = D + C(D >= C)
式中,L:编码的最小距离,D:检测错误的位数,C:纠正错误的位数。
如果L=3,即合法代码集为{000,111}, 由公式可得,D=C=1,即有1位检错能力和1位纠错能力。比如输出代码为100,我们会认为这是由代码000改变1位得来的(因为只有1位改变的几率要高于2位改变的几率),此时检测到1位错误,知道正确代码为000,因此具有1位纠错能力。
汉明码就是具有一位纠错能力的编码。
举例:对代码00100011进行偶校验,因为代码中已经含有3个1,所以校验位为1,将校验位与数据代码结合,得到汉明码100100011,经过传输后,如果输出的汉明码中1的个数变为奇数了,那我们就知道9位中有1位发生了改变,但改变的是哪一位,并不知道,此时可以采用分组校验,把8位数据分为2组,每4位加一个校验码,此时的汉明码为1001000011,还可以继续分组。
检验位应该放在哪些位置?放在1,2,4,8,…
如何分组?第1组:XXXX1,右边第1位都是1;第2组,XXX1X,右边第2位都是1;第3组,XX1XX,右边第3位都是1;…
汉明码的三要素:
需要增添k检测位,k如何计算?
2^k >= n + k + 1, n为数据位数
检测位位置?
2^i(i = 0, 1, 2, 3,…)
检测位取值,0还是1?
与奇校验还是偶校验有关
例题:求0101按“偶校验”配置的汉明码
解:因为n = 4,根据公式2^k >= n + k + 1,得k = 3,共需要3位检测位,位置为1, 2, 4,因此汉明码为C1 C2 0 C3 1 0 1,又因为是偶校验,第一组的分组为XXXX1,所以包含的位数是1,3,5,7,第3位是0,第5位是1,第7位是1,1的个数是偶数,所以C1为0,同理可得,C2是1,C3是0,所以,0101的汉明码为0100101.
调整主存结构有两种方式,单体多字系统和多体并行系统。
1.单体多字系统
程序和数据在内存中是连续存放的,因此CPU访存取出的信息也是连续的,因此,我们可以一次性取出多条指令,然后再逐条送往CPU,这样就增大了存储器的带宽,提高了单体存储器的工作速度。如果碰到跳转指令或者数据存放不连续,效果就不好了。
2.多体并行系统
采用多体模块组成的存储器,每个模块有相同的容量和速度,各模块各自有独立的地址寄存器、地址译码器、驱动电路和读写电路。并行工作即同时访问N个模块,同时启动,同时读出,完全并行的工作
还可以细分为高位交叉和低位交叉
(1)高位交叉
按顺序进行编址。地址的高位表示体号,低位表示体内的地址,在存放数据时,一个体存满后,再存入下一个体。
缺点很明显,容易发生某个存储体被频繁使用,而其他存储体空闲的状况。
(2)低位交叉
为了解决高位交叉的问题,我们采用各个存储体轮流便编址,地址的低位表示体号,高位表示体内地址。
特点:不直接与CPU交换信息,构成主存—辅存层次
本片文章就分享到这了,有任何问题可以在下方评论。
更多关于内容可以移步我的博客,热爱生活,分享知识。
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!