主存和Cache之间的数据调动是由硬件自动完成的,对所有程序员均是透明的;而主存和辅存之间的数据调动则是由硬件和操作系统共同完成的,对应用程序员是透明的。
MDR和MAR逻辑上在主存中,实际上在CPU中;地址译码器在主存中。
一、半导体随机存取存储器
1.基本结构
2.随机存储器RAM
Cache由静态随机存取SRAM实现,主存由动态随机存储器DRAM实现,它们都是易失的。
(1) 工作原理
- 静态随机存取存储器SRAM
SRAM基于双稳态触发器,存取速度快,但集成度低,功耗较大。
- 动态随机存取存储器DRAM
DRAM基于电荷,采用地址复用技术(地址线是原来的一半),存取速度比SRAM慢,集成度高,价位低,容量大,功耗低。
即时电源不断电,信息也会自动消失,因此每个一个刷新周期(2ms)就要刷新一次,每次占用一个存储周期。
刷新方式:
①集中刷新:在死时间/死区对所有行一次刷新,访存速度快,但在死时间内不能访问存储器。
②分散刷新:把对每行的刷新分散到各个工作周期中去,访存速度慢,但没有死时间。若将刷新安排在不需要访问存储器的译码阶段,则既不会加长存取周期,又不会产生"死时间",这是分散刷新方式的发展,也称为"透明刷新"。
③异步刷新:具体做法是将刷新周期除以行数,得到两次刷新操作之间的时间间隔t,利用逻辑电路每隔时间t产生一次刷新请求。这样可以避免使CPU连续等待过长的时间,而且减少了刷新次数,从根本上提高了整机的工作效率。
刷新需注意以下问题∶
①刷新对CPU透明,即刷新不依赖于外部的访问;
②刷新单位是行,因此刷新操作时仅需要行地址;
③刷新操作类似于读操作,但又有所不同;
④刷新操作仅给栅极电容补充电荷,不需要信息输出;
⑤刷新时不需要选片,即整个存储器中的所有芯片同时被刷新。
(2)SRAM和DRAM的比较
3.只读存储器ROM
结构简单,所以位密度比RAM的高;具有非易失性,所以可靠性高。ROM的升级版有以下几种:
- MROM(Mask Read-Only Memory)∶在生产过程中直接写入,以后任何人都无法改变其内容
- PROM(Programmable ROM)∶允许用户用专门设备写入程序,写入后内容就无法改变
- EPROM(Erasable Programmable ROM)∶允许用户写入程序,程序员可以对其内容进行多次改写
- Flash∶在不加电时仍可长期保存信息且能进行快速擦除重写
- SSD(Solid State Disk):什么都好,但价格高。一般由Flash芯片组成。
以前我总是分不清这几个,后来发现结合英文全称好记多了。
4.RAM和ROM区别
二、主存储器与CPU的连接
1.主存容量的扩展
芯片数=容量/单片芯片容量
2.存储器与CPU的连接
(1)合理选择存储芯片
通常选用 ROM存放系统程序,选用 RAM组成用户区。
(2)地址线的连接
低位用于地址空间,高位用于片选。片选原理会在下面单独介绍。
(3)数据线的连接
对应数据位数。
(4)读写控制线
两根,一根读,一根写。
3.片选
片选信号的产生分为线选法和译码片选法。
- 线选法
优点∶不需要地址译码器,线路简单。缺点∶地址空间不连续,选片的地址线必须分时为低电平(否则不能工作),不能充分利用系统的存储器空间,造成地址资源的浪费。
- 译码片选法
即用一片74LS138作为地址译码器,则A15A14A13=000时选中第一片,A15A14A13=001 时选中第二片,以此类推(即3位二进制编码)。
三、并行技术
1.双端口RAM(空间并行)
当两个端口的地址不相同时,在两个端口上进行读写操作一定不会发生冲突。当对同一个主存操作时,写操作只能互斥进行(不能写写、写读),读操作可以同时进行。
2.多模块存储器(时间并行)
(1)单体多字存储器
存储器中只有一个存储体,每个存储单元存储m个字,总线宽度也为m个字。一次并行读出m个字,地址必须顺序排列并处于同一存储单元。即每隔1/m存取周期,CPU向主存取一条指令。显然,这增大了存储器的带宽,提高了单体存储器的工作速度。
(2)多体并行存储器
多体并行存储器由多体模块组成。每个模块都有相同的容量和存取速度,各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作,又能交叉工作。
- 高位交叉编址(顺序)
总是按顺序访问存储模块,存储模块不能被并行访问,因而不能提高存储器的吞吐率。仍是顺序存储器。
- 低位交叉编址(流水线)
编址后,可在不改变每个模块存取周期的前提下,采用流水线的方式并行存取,提高存储器的带宽。
设模块字长等于数据总线宽度,模块存取一个字的存取周期为T,总线传送周期为r,为实现流水线方式存取,存储器交叉模块数应大于等于m=T/r,以保证启动某模块后经过mxr的时间后再次启动该模块时,其上次的存取操作已经完成(流水线不间断)。
四、高速缓存Cache(采用SRAM)
高速缓冲技术就是利用程序访问的局部性原理,把程序中正在使用的部分存放在一个高速的、容量较小的Cache 中,使CPU的访存操作大多数针对Cache 进行,从而大大提高程序的执行速度。
1.工作原理
- Cache由SRAM实现。
- Cache和主存的交换单位是块(又称行,包含多个字节),主存块远多于Cache块;CPU与Cache之间的数据交换以字为单位。
- Cache保存的仅仅是主存块的副本。
- 当CPU发出请求时,先在Cache里面找,不必访存;若未命中,去主存中找,并把这页调入Cache中。
- 如果Cache满了,需要用替换算法替换某页。
2.Cache命中率与平均访问时间
- 命中率:Nc为Cache命中次数,Nm为主存命中次数
- 平均访问时间:tc为Cache访问时间,tm为主存访问时间
3.Cache和主存的映射方式
- 两个重要概念:
标记:Cache中块是来自主存的哪一块。
有效位:Cache中块/行中的信息是否有效。
(1)方式一: 直接映射
无条件替换,块冲突概率最高,空间利用率最低。
- 地址结构:
(2)方式二:全相联映射
优点是比较灵活,Cache 块的冲突概率低,空间利用率高,命中率也高。
缺点是标记的比较速度较慢,实现成本较高,通常需采用昂贵的按内容寻址的相联存储器进行地址映射。
(3)方式三:组相联映射
- 组相联映射: