3存储器系统要点.docx
《3存储器系统要点.docx》由会员分享,可在线阅读,更多相关《3存储器系统要点.docx(33页珍藏版)》请在冰豆网上搜索。
3存储器系统要点
《第5章多级结构的存储器系统》
主要内容:
RAM、SRAM、DRAM、ROM、EEROM、磁盘、光盘、内存、外存、高速缓存、虚拟存储器、程序运行的局部性原理、多级存储系统
5.1概述
从物理层面看
●半导体存储器:
SRAM,DRAM,ROM,EEPROM……
●磁盘存储器:
硬盘
●光盘存储器
从冯诺依曼计算机的组织结构看,从CPU的角度看,存储器分为:
●内存(主存):
存放计算机中当前运行的程序和数据。
CPU从内存中读取指令和数据,并把计算结果写回内存。
主存使用半导体存储器。
●外存(辅存):
存放计算机中的程序和数据,在CPU需要时才调往主存。
所存储的信息可以长期保存。
外存主要由硬盘、磁带、光盘等构成。
●相对于内存,外存读写速度慢,但容量大,价格低廉。
从逻辑角度,存储器系统分为3级,2个层次,包括:
●缓存层次:
由缓存(Cache)-主存构成。
目的是为了和CPU的速度相匹配。
缓存是速度比主存快、容量比主存小的半导体存储器SRAM组成。
●虚存层次:
由主存-辅存构成。
目的是为了和CPU希望访问信息的容量相匹配。
●根本目的是使CPU访问存储器的读写速度接近于高速缓存,容量和成本接近于虚存,实现一个性能/价格比较高的存储系统。
层次间应满足的原则:
◆一致性原则:
处在不同层次的同一个信息应保持相同的值。
◆包含性原则:
处在内层的信息一定被包含在其外层的存储器中,反之不成立。
存储器系统能够有效工作的根本原因:
程序的局部性特征。
早期的计算机直接访问内存,没有缓存和虚存。
5.2存储器分类
按存储介质分类:
1 半导体存储器:
MOS型存储器:
集成度高、功耗低、成本低;但速度慢。
双极型(TTL型或ECL型):
用作主存或高速缓存。
2 磁表面存储器:
将磁性材料涂复于金属或塑料基体上,用磁层记录信息,例如磁盘、磁带等。
容量大、速度慢、价格低,一般用作辅助存储器。
3 光存储器:
基于激光技术的存储器,如光盘。
存储容量很大,用作辅助存储器。
按访问方式分类:
✧随机访问存储器(RandomAccessMemory,RAM)
●访问任何一个单元的时间都相同。
●RAM的物理实现是半导体存储器。
●主存和高速缓存都属于随机访问工作方式。
✧只读存储器(ReadOnlyMemory,ROM):
●只可一次写入、多次读出,与RAM类似。
●可靠性高和成本低。
●ROM和RAM可以共享主存的地址空间,是主存的组成部分。
ROM用来保存断电后依然不丢失的信息,例如计算机的引导程序,各种字符及符号的字型库等。
✧顺序访问存储器(SerialAccessStorage):
●访问不同存储单元需要的时间不同。
●磁盘、磁带等磁介质存储器属于这种工作方式。
按信息是否易失分类:
●RAM中保存的信息在断电后立即消失,被称作易失性存储器。
●ROM、磁性存储器、光存储器中保存的信息能长期保存,不受断电的影响,称作非易失性存储器。
如果当前操作的结果保存在易失性存储器中,必须将其转移到非易失性存储器中,才可以结束当前的工作;否则,这些信息将被丢失。
5.3主存储器RAM的基本原理:
主存储器是整个存储系统的核心,计算机运行期间所需的程序和数据都存放在这里,CPU可直接地、随机地访问主存中任何单元。
主存储器是随机访问存储器,可由RAM和ROM组成。
RAM的结构
5.3.1静态存储器(SRAM)StaticRandomAccessMemory
基本存储元是触发器。
●Sel:
地址选择线,即字线。
地址译码器的输出,用于选择字。
●Sel=0时,晶体管T截止,触发器与外界隔离,实现信息存储。
●Sel=1时,晶体管T导通,结点a与结点data接通。
●Write=1且Read=0:
数据输入端di与结点data接通。
若sel=1,则新的信号值将到达结点a,经过2级反向器的传输
延迟后,再次到达结点a,形成反馈。
触发器将保持此值不变。
实现写入存储元的功能。
●Write=0且Read=1:
结点data与数据输入端di断开,而与数据输出端qi接通;
使触发器中原来保存的值到达SRAM的输出端qi。
实现从存储元读出的功能。
5.3.2动态存储器
DynamicRandomAccessMemory(DRAM)的基本原理:
虚线框内是DRAM的基本存储元。
依靠储存在电容C上的电荷保存信息。
电容C上有电荷表示'1';电容C上无电荷表示'0'。
Sel=1时,DRAM的基本单元被选中,MOS晶体管T
导通,可以通过T向电容C充电或放电。
Sel=0时,晶体管T截止,电容C被隔离,电容上的
电荷得以保存。
●写数据:
data=1,通过晶体管T向电容C充电;
data=0,电容C上的电荷通过晶体管T向结点data放电。
●读数据:
若原来C上有电荷,则经过晶体管T在数据线data上产生读电流;若原来C上无电荷,则数据线data上无电流。
✓以数据线上是否有电流鉴别原来储存的信息是‘1’还是‘0’。
✓破坏性读出,必须采取重写措施以恢复原来的信息。
✓重写使读写周期延长。
v由于漏电流的存在,电容上的电荷会丢失。
为了防止信息丢失,每隔一段时间必须对电容补充电荷(称作刷新)。
v刷新的时间间隔取决于漏电流的大小,漏电流的大小和集成电路工艺有关,刷新周期的典型值为2ms。
vDRAM的读操作是一种破坏性读出,读出数据之后必须紧跟一个重写,给电容C充电。
所以,读操作可以补充相应电容C上的电荷,实现刷新。
v以刷新为目的的读操作称作假读,为了保证信息的安全,刷新操作应优先于正常的读/写操作,正常的读/写操作被延后。
DRAM的刷新方式:
v假定DRAM允许的刷新周期为2ms,容量为1024字,128行,读写周期=100ns,每行的刷新一般与一次的读/写周期相等。
v分散(布)式刷新:
把每行存储元件的刷新分散安排在各个读写周期内即把读写周期分为两段,前段表示读写,后段表示刷新时间。
DRAM的刷新方式:
集中式刷新:
在整个的2ms的时间内集中对每一行进行刷新,刷新时读/写操作停止。
异步式刷新:
将集中式和分散式结合起来,即在2ms内分散地把128行刷新一遍.
5.3.3ROM
保存的信息不会丢失,工作时只能读出,不能写入。
向ROM写入原始数据的过程称为编程,依据编程方法的不同,可将ROM分为以下4类:
◆掩模式只读存储器
◆一次可编程只读存储器(PROM)
◆可擦除的可编程只读存储器(EPROM)
◆闪速存储器(FlashMemory):
掩膜式ROM
特点:
数据在芯片制造过程中就已确定,由厂家制成,用户不能修改。
存储元:
二极管,双极型晶体管,MOS管
工作原理:
管子的基极连选择线,该管导通,反向后输出为“1”,反之输出为“0”。
优 点:
可靠性和集成度高。
缺 点:
不能重写
PROM
特点:
用户可自行改变产品中某些存储元的数据,可编程一次。
存储元:
二极管,双极型晶体管,MOS管
工作原理:
熔丝型PROM:
熔丝烧断输出为1,不断为0.
PN结击穿型:
可编程的连接点之间是PN结;编程时有选择地将某些PN结击穿,实现连接。
优点:
可以根据用户需要编程。
缺点:
只能一次性改写
EPROM:
可擦除可编程只读存储器(ErasibleProgrammableROM)
特点:
可以用紫外光照射或电擦除原来的数据,然后再重新写入新的数据。
存储元:
MOS管
优点:
可以多次改写ROM中的内容。
FlashMemory:
闪速存储器
快速擦写存储器,可以低电压在线进行擦除和重写。
EEPROM可以进行字节擦除,而FlashMemory不能按字节擦除,只能整片擦除。
大容量、低价格。
用于固态盘,U盘。
5.3.4主存储器的主要技术指标:
◆存储容量M:
字数*字长,KB,MB,GB,TB
◆存取时间Ta:
从CPU向主存发出读(写)命令的时刻开始,到主存送出(写入)数据的时刻为止,称为读出(写入)时间。
一般情况下,将读出时间和写入时间不加区分,统称为存取时间。
◆存取周期Tm:
连续2次访问主存所需的最小时间间隔称为存取周期或读写周期。
一般情况下,Tm>Ta。
◆主存带宽Bm:
每秒钟从主存中读出的字节数称为主存带宽,表示主存的数据传输率。
◆平均无故障时间(MeanTimeBetweenFailures,MTBF):
表征存储器的可靠性。
◆功耗
5.4构成主存储器的有关技术
5.4.1主存容量的扩展
目前的工艺水平,单个芯片的存储容量往往难以系统对主存储器的需求,需用多个RAM芯片进行扩展,组成主存储器。
扩展分为:
●字向扩展
●位向扩展
●字位扩展
假设基本RAM芯片的规格为16K×8。
需求主存储器的容量为64K×16位。
则需要4组作字向(纵向)扩展,每组2片作位向(横向)扩展,总共使用8片RAM芯片。
假设基本RAM芯片的规格为64K×8。
需求主存储器的容量为256K×16位。
则需要4片作字向(纵向)扩展。
5.4.2单向数据总线和双向数据总线
若CPU和主存在同一个芯片内,可使用单向总线。
若CPU和主存不在同一个芯片内,则应使用双向数据总线,因为数据总线所用引脚数量可减少一半,降低成本。
但CPU和主存之间数据传送的复杂程度略有增加。
5.4.3地址码的一级译码和二级译码
一级(单)译码方案:
输入地址不分段,译码器输出的地址连接到代表一个字的n个基本单元。
二级(双)译码方案:
输入地址被等分为2部分,称为行地址X和列地址Y,行地址经行译码器译出,列地址经列译码器译出。
有利于降低译码器的成本。
CPU向主存传送地址分为:
一次传送和二次传送。
二次传送:
第一次传送行地址,第二次传送列地址。
二次传送使地址总线的宽度减半,减少了芯片引脚的数量,降低了成本。
但是,由此而加长了地址传送所需要的时间,降低了读写速度。
DRAM的地址采用二次传送方式。
5.4.4主存的检错与纠错
计算机运行过程中,CPU和主存频繁地交换数据,为了提高数据传输的可靠性,可以设立检错/纠错电路。
现代微型计算机中的容错能力可以分为以下3个等级:
◆无检错/纠错电路。
◆设奇偶校验电路,通常是8位数据配1个奇校验位。
此方案可以检验1位出错的发生,但无纠错能力。
◆设检错/纠错电路(ErrorCheckingandCorrecting,ECC),通常采用海明码。
ECC码的开销为:
32位的数据需要配7位ECC码,64位的数据需要配8位ECC码。
主存的组织结构:
◆单体单字结构:
主存由1个基本模块组成,以“字”为单位进行读/写操作。
◆单体多字结构:
存储体由多个基本模块组成,每个基本模块的数据宽度为1个字(宽度为W)。
多个基本模块公用一套地址寄存器和译码电路,多个模块并行工作,一次读(或写)操作可以并行读出连续的多个字。
可以将这多个存储体看作1个字长为n*W的大存储器,能够提高存储器的吞吐率。
◆多体交叉结构:
存储体由多个基本模块组成,每个基本模块的数据宽度为1个字(宽度为W),彼此是单独的存储体不共享地址寄存器和译码器。
交叉方式:
用地址码的低位字段经过译码选择不同的模块,而高位字段指向相应模块内的存储字。
这样,连续地址分布在相邻的不同模块中,而同一模块内的地址都是不连续的。
因此,对连续字的成块传送,交叉方式的存储器可以实现多模块流水式并行存取,大大提高存储器的带宽。
由4个模块组成的单体多字结构
由4个模块组成的模4交叉编址结构。
主存的并行读写技术
由4个模块组成的模4交叉编址结构的分时工作示意图,在理想情况下,存取速度达到原来的4倍。
5.4.6CPU与主存的协同工作—同步与异步
异步工作方式
读操作:
✧CPU将地址发送至地址总线,主存接受地址并译码。
✧CPU发出读命令,然后等待主存发回的工作完成信号。
✧主存接到读命令后,将数据读出送至数据总线并发出工作完成信号。
✧CPU接到主存的工作完成信号后,接受来自数据总线的数据。
开始下一次的读/写操作。
写操作:
✧CPU将地址发送至地址总线,主存接受地址并译码。
✧CPU将数据发送至数据总线。
✧CPU发出写命令,然后等待主存发回的工作完成信号。
✧主存接到写命令后将数据总线上的数据写入指定单元并发出工作完成信号。
✧CPU接到主存的工作完成信号后,可以开始下一次的读/写操作。
同步工作方式
CPU和主存被同一个时钟信号Clock所同步,不需要应答信号。
因而有可能得到较高的读/写速度。
5.5辅助存储器
5.5.1磁记录原理与记录方式
◆将很薄的磁性材料(记录介质)涂敷在某种载体上,并根据载体的特征而得名。
磁介质存储器的工作原理:
◆磁头和记录介质之间做相对运动,通过相互之间的电磁感应完成写入和读出。
◆写入:
磁头的写入线圈中通过某个方向的电流Iw,则磁头中形成一定方向和强度的磁场。
由于磁头工作间隙处磁阻较大,磁场通过间隙时形成漏磁场。
在漏磁场的作用下,将磁头工作间隙下方一个小区域的磁介质磁化,形成一个磁化单元。
磁化单元的磁场方向与Iw的方向有关,不同的磁化方向标志着该磁化单元所记录的是1还是0。
◆读出:
当磁介质表面在磁头下方匀速通过时,磁化单元中的剩磁将使磁头中的磁力线发生变化,从而使读出线圈产生感应电势e。
感应电势e的方向和磁化单元的磁化方向有关。
因此,感应电势e的极性标志着读出的数据。
5.5.2磁盘存储器
温彻斯特盘(简称温盘)
Ø温盘的结构:
盘片固定在主轴上高速旋转,磁头通过磁头臂固定在小车上,小车带着众磁头作径向运动,使磁头可以找到相应的磁道。
Ø温盘的信息分布:
盘片两面都涂敷有磁性材料,以主轴为圆心划分成多个同心圆,称为磁道。
不同盘片的同一磁道称为柱面。
磁道再分为扇区。
Ø磁盘以扇区为单位记录信息。
Ø扇区之间是隔离带,起始部分是前导区,用于对磁头进行同步。
数据区典型值为512B。
数据区之后是校验码,例如海明码或Reed-Solomon码。
Ø隔离带、前导区、校验区在磁盘格式化时形成。
Ø磁盘格式化前后的容量不同。
Ø磁道划分的扇区数,每个扇区存放信息块的字节数,一般由操作系统决定。
5.5.3磁盘阵列存储器RAID
RAID1:
每一个硬盘都有一个与之对应的镜像硬盘,二者互为备份。
有极高的可靠性。
但RAID1盘的利用率只有50%。
5.5.4光盘存储器(OpticalDisk)
利用凹坑的有无来记录信息
5.5.5移动式存储器
移动式存储器用于在计算机之间传递信息
5.6高速缓冲存储器
高速缓存在多级存储器系统中处于CPU和主存之间。
高速缓存用SRAM实现,而主存则用DRAM实现。
CPU与CACHE之间的数据是以字为单位,而CACHE与主存之间的数据交换是以块为单位的。
当CPU读取主存中一个字时,便发出此字的内存地址到CACHE和主存。
此时CACHE控制逻辑依据地址判断此字当前是否在CACHE中,若是,此字立即传送CPU;若非,则用主存读周期把此字从内存读出送到CPU,与此同时,把含由这个字的整个数据块从主存读出送到CACHE中。
v程序局部性原理:
计算机程序具有局部性原理,即CPU对主存的访问,在某一个时间段内基本上处于某一小块存储区间内。
v程序局部性原理可以通过统计数据证实,也可以用以下理由加以解释:
v由于程序中存在循环,所以某个存储单元被访问后不久,可能很快被再次访问,这一现象称为时间局部性。
v由于程序执行过程中大部分是顺序执行,所以某个存储单元被访问后,其临近的单元也可能很快被访问,这一现象称为空间局部性。
如:
数组、表、树等。
v把CPU当前经常使用的这一小块存储空间由主存复制到高速缓存,CPU就可以直接和缓存打交道,从而解决速度匹配问题。
⏹缓存的容量远小于主存的容量,缓存和主存之间以块为单位相互对应。
块的大小为B个字,块内地址码的长度b(B=2b)。
设主存地址码长度为n,则主存块号地址的长度m=n–b。
,因此缓存块号地址为c,c远小于m。
既然缓存中块的数目远小于主存中块的数目,缓存中的每一块都必须有一个块标记,表明该块此时是主存中哪一块的副本。
⏹块标记:
主存块号和有效标志位。
标志位为'1'时表示块中内容有效,标志位为'0'时表示该块为空。
5.6.2地址映像
主存与缓存之间以块为单位相互对应,块地址之间的对应关系称为地址映像。
地址映像方式有3种。
直接映像方式:
主存中每一块只允许映射到缓存中某一个特定位置。
设主存的块地址为m,缓存的块地址为c,缓存中块的数目C=2c,则
例:
某机主存为1MB,Cache为8KB,每块512B;则Cache每行512B,划分16行,主存划分2048块,共分0~127区,每区16块;
在访存时,只需比较两者标记,如相同则命中
全相联映像方式:
允许主存中任意一块映射到缓存中任意一个块位置。
映像方式不受任何限制,访问缓存时发生块冲突的概率低,命中率高。
缺点是地址变换复杂和成本高昂。
例:
某机主存为1MB(20位),Cache为8KB(13位),要求每块512B(9位),则主存要划分2048块(占11位);Cache要划分16行(占4位)
由于每个Cache行可以映射2048个主存块中的任一块,因此每块的Cache标记也需要11位,表明它现在所映象的主存块号。
组相联映像方式:
折衷算法。
v将缓存等分为若干组,每组再等分为若干块。
v将主存等分为若干区,区的规模与缓存的规模相同;区内的进一步划分与缓存相同。
v主存与缓存的组间映像采用直接映像方式,组内则采用全相联映像方式。
v组的规模越大,越接近于全相联映像方式,此时地址变换复杂、造价较高;但是块冲突发生的概率较低,命中率较高。
某一主存块j按模Q映射到缓存的第i组中的任一块
直接映射的仿真
5.6.3替换算法和更新策略
●对于直接映像方式来说,只有惟一的一种选择。
●全相联映像和组相联映像方式则存在多中选一的问题。
常用的替换算法有以下4种:
随机替换算法
先进先出(FirstInFirstOut,FIFO)算法
使用次数最少(LeastFrequentlyUsed,LFU)算法
近期最少使用(LeastRecentlyUsed,LRU)算法
设一个寄存器堆,每个寄存器中存放一个块号,寄存器的地址表示该块的优先级别。
地址0中的块号级别最高,表示近期刚刚被访问过的块;地址n中的块号级别最低,表示最长时间没有被访问过的块,是即将被换出的候选块。
当缓存中某块被访问时,根据其块号查出其在寄存器堆中的地址k,然后令寄存器堆从地址0到地址k执行一次循环移位,改变各块的优先级。
当前被访问块的优先级被提升到最高,其余各块的优先级递降一级。
LRU算法
更新策略:
●写直达(WriteThrough)法:
CPU执行写操作时,必须把数据同时写入主存和缓存。
●拖后写(WriteBack)法:
CPU执行写操作时,当时只把数据写入缓存而不写入主存,写入主存的时机拖到以后再说。
目的是为了减少访问主存的次数,但同时还得保持主存与缓存数据的一致性,为此需要增添一些硬件设施和合理的更新策略。
Ø为了实现拖后写,需要在块标记中再增加1个“已修改”标志位。
在执行写操作时,需要将该块的“已修改”标志位置1,表示此块的内容已经和主存不一致。
Ø当有另外的CPU或外设执行读操作时,需要根据访问主存的地址检查该块是否在缓存中。
如果在缓存中,还要检查该块的“已修改”标志是否为1,若为1则需要暂停此读操作,将此块写回主存后再启动被暂停的读操作。
Ø当缓存中某块被选做替换块时,先检查其“已修改”标志是否为1,若为1则需要先将此旧块整块写回主存,然后再换入新块。
5.7.1虚拟存储器的基本概念
◆虚拟存储器:
面向应用程序员提供一个虚拟存储空间,该空间远大于实际的主存空间。
用户编程的地址称为虚地址或逻辑地址,而实际的主存地址则称为实地址,虚地址远大于实地址。
◆虚拟存储器的物理基础:
主存和辅存。
◆虚拟存储器的工作原理:
与缓存相似,将主存和辅存划分成若干块,主存中每一块都是辅存中对应块的副本。
程序和数据初始状态在辅存中,在CPU用到它们时才调入主存,如果主存已被装满,则采用适当的替换算法在主存和辅存之间交换。
◆根据块的划分方法,虚拟存储器分为:
✓段式虚拟存储器;
✓页式虚拟存储器;
✓段页式虚拟存储器。
缓存和虚存的比较
5.7.2段式虚拟存储器
●以段为单位在主存和辅存之间进行信息交换。
●段的大小不固定,由程序的逻辑结构决定,例如函数、过程、数据表等。
●段的特点:
由于段的分界和程序的自然分界相对应,段的逻辑独立性使它易于编译、管理、修改和保护,这是段式管理的优点。
5.7.3页式虚拟存储器
虚存空间和实存空间都分为大小相同的页,前者称为虚页或逻辑页,后者称为实页或物理页。
◆页面的规模相对于程序的逻辑块的规模要小很多。
◆在页式管理中,一个连续的逻辑块以页为单位映射到不连续的主存空间。
◆页式的特点:
主存中的空白区只要大于1个页面的规模,就可以被利用,因而主存的空间利用率很高。
由于页不是逻辑上独立的实体,在截取页的时候可能把某些程序、数组等数据结构截断,所以在对页面进行修改、保护和共享等方面,页式虚拟存储器不如段式虚拟存储器方便。
5.7.4段页式虚拟存储器
v段页式虚拟存储器:
兼取段式虚拟存储器和页式虚拟存储器的优点:
v程序按逻辑结构分段,每个程序对应一个段表。
v段内分页,辅存和主存的页面大小相同,每段对应一个页表。
v页面长度取2的整数幂个字。
v段长是页长的整数倍,段的起点必须是某一页的起点。
v操作系统按段进行保护和共享,按页在主存和辅存之间进行调入/调出操作。
v虚拟地址分为3部分:
段号、段内页号和页内地址。
快表与慢表结合方式下的虚-实地址变换过程。
vCPU访问虚拟存储器时,首先根据段号在段表中查到该段的页表起始地址,接着根据段内页号在页表中查到实页号,最后将实页号与页内地址相拼接,形成实地址。
v虚-实地址变换过程须要经过2次查表,第一次查段表,第二次查页表。
v虚拟存储器中虚-实地址变换必须经过查表。
如果这些表本身都在主存中,则严重影响虚拟存储器的读写速度。
v为了提高查表的速度,将页表中最活跃的一部分,仿照高速缓存的方法,用硬件实现,并置于处理器内部,称为快表。
将放在主存中的页表称为慢表。
v快表时时是慢表中对应部分的副本,相对于慢表要小很多。
v快表用相联存储器(AssociativeMemory)实现。
练习:
设有32片256K×1位的SRAM芯片,问:
(1)采用位扩展方法可构成多大容量的存储器?
(2)该存储器需要多少字节地址位?
(3)画出该存储器与CPU连接的结构图,设CPU的接口信号有地址信号、数据信号、控制信号MREQ#和R/W#。
解:
32片256K×1位