您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第三章存储系统[三].
第三章存储系统存储器概述主存储器的基本构造和操作主存储器组织高速缓冲存储器Cache高速存储器半导体存储器芯片虚拟存储器3.5Cache存储器3.5.1多级存储体系结构3.5.2Cache工作原理3.5.3主存与Cache的地址映射和地址变换3.5.4Cache的替换策略及写操作策略中央处理器主存外存cacheCPUM1M2M3辅助硬件辅助软硬件3.5.1多级存储体系结构为解决存储容量、存取速度和价格之间的矛盾,通常将各种不同存储容量、不同存取速度的存储器,按一定的体系结构组织起来,形成一个统一整体.典型的三级存储系统:图3.25三级存储系统示意图•Cache-主存层次Cache一般由SRAM构成,容量小,存取速度快,依据程序局部性原理,存放的是主存中当前最需要执行的信息副本.目的:主存容量不足的问题.利用辅助硬件和操作系统中的存储管理软件,将主存和辅存构成一个整体.目的:解决CPU和主存速度不匹配的问题.•主存-辅存层次•总体效果:存取速度接近Cache,而存储容量接近于辅存,整体价格也较合理.3.5Cache存储器3.5.1多级存储体系结构3.5.2Cache工作原理3.5.3主存与Cache的地址映射和地址变换3.5.4Cache的替换策略及写操作策略3.5.2Cache工作原理1.Cache的工作机制Cache工作是以程序访问的局部性原理为基础的,即,一个程序的指令大都顺序存放、顺序执行,与程序相关的数据在存储器中也相对集中.所以程序运行时,尤其有循环程序段和子程序段时,在较短时间区间内,常会对局部范围的存储器频繁访问,而此范围之外的地址访问甚少.这种现象称为程序访问的局部性.把局部范围的主存内容从主存放到一个高速小容量存储器中,使CPU在这一段时间内直接访问它,以减少或不去访问慢速的主存,程序运行速度将明显提高.2.Cache工作原理例:某机主存容量为1MB,Cache容量为8KB,若以字节编址,每512B为一块,则主存有2048块,Cache有16块.块000000H00001H…..001FFH…块2047FFE00HFFE01H…FFFFFH主存块00000H0001H…..01FFH…块151E00H1E01H…1FFFHCache•块的概念一般将主存和Cache的存储空间分块,每块大小相同,包括相同数量的存储单元.•Cache构成及工作过程CPU主存主存地址寄存器MAR主存—Cache地址变换机构(块表)Cache存储器Cache地址寄存器替换控制部件ABDB单字宽多字宽不命中命中(块)Cache包括Cache存储器及相应控制部件,全部由硬件组成,速度快,对所有程序员均透明.CAR•Cache命中率设Nc为Cache完成存取的总次数,Nm为主存完成存取的总次数,h为命中率,则有:设r=tm/tc表示主存慢于Cache的倍率,e表示访问效率,则有:高速缓存命中率:CPU访存时,信息恰巧在Cache中的概率.h=Nc/(Nc+Nm)若tc表示命中时的Cache访问时间,tm表示未命中时的主存访问时间,1-h表示未命中率,则Cache/主存系统的平均访问时间ta为:ta=htc+(1-h)tme=tc/ta=tc/[htc+(1-h)tm]=1/[h+(1-h)r]=1/[r+(1-r)h]例:CPU执行一段程序时,Cache完成存取的次数1900次,主存完成存取的次数为100次,已知Cache的存取周期为1ns,主存存取周期为5ns,求Cache/主存系统的效率和平均访问时间.解:h=Nc/(Nc+Nm)=1900/(1900+100)=0.95r=tm/tc=5ns/1ns=5e=1/[r+(1-r)h]=1/[5+(1-5)X0.95]=83.3%ta=tc/e=1ns/0.833=1.2ns例:某计算机的存储系统由Cache和主存组成,某程序执行过程中访存1000次,其中访问Cache缺失(未命中)50次,则Cache的命中率是().A.5%B.9.5%C.50%D.95%•影响Cache命中率的因素☆Cache的大小容量相对较大的Cache,命中率也相应提高,但容量太大,成本会变得不合理.☆程序的特点遵循局部性原理的程序在运行时Cache的命中率也会很高,相反,在程序中频繁且无规则地使用Call或JMP命令,将严重影响基于Cache的系统性能.☆Cache的组织结构Cache组织结构的好坏,对命中率也会产生较大影响.Cache的组织结构有三种类型:全相联映射、直接映射和组相联映射.3.5Cache存储器3.5.1多级存储体系结构3.5.2Cache工作原理3.5.3主存与Cache的地址映射和地址变换3.5.4Cache的替换策略及写操作策略3.5.3主存与Cache的地址映射和地址变换1.全相联映射:允许主存中的每一个块可以映射到Cache的任何一块位置上.映射过程如下图所示:一.全相联映射及其地址变换二者密切相关--地址变换由地址映射方式决定.•主存--Cache地址变换:程序运行时,根据地址映射把主存地址变换成Cache地址.•主存--Cache地址映射(mapping):把存放在主存中的程序按某种规则装入Cache中,并依此建立主存地址与Cache地址的对应关系,即块表.●块表—存放数据或指令在内存中所在单元地址的存储器,用于判断Cache命中以及实现地址映射,其字数等于Cache的块数.……块0块1块15块0块1块2047Cache主存…全相联映射2.全相联映射方式下的地址变换主存块号块内地址(1)主存地址格式:(标志字段)图3.26全相联映射示意图例:某机主存容量为1MB,Cache容量为8KB,若以字节编址,每512B为一块,则主存有2048块,Cache有16块。主存地址格式:0000000000000000000000000000000111111111…块号(0块)块内存储单元(0-511)…块号(1块)块内存储单元(0-511)0000000000100000000000000000001111111111…块号(2047块)块内存储单元(0-511)1111111111100000000011111111111111111111……Cache块号块内地址主存块号转换为Cache块号,块内地址不变(3)地址变换(将主存地址转换为Cache地址):(2)Cache地址格式:…块号(0块)块内存储单元(0-511)…块号(1块)块内存储单元(0-511)00010000000000001111111111…块号(15块)块内存储单元(0-511)11110000000001111111111111……00000000000000000111111111主存块号B(标志字段)块内地址WCache块号b块内地址w主存块号BCache块号bBb••••••比较命中MARCAR图3.27全相联映射的地址变换块表(块表容量的计算:字数等于高缓块数,字长由主存块数和高缓块数决定)不命中则访问主存注意:在全相联映射中,主存块号作为识别是否命中的标志,标志位的长度由主存块数决定.字块0字块1字块2C-1…标记标记标记设Cache有2C-1块,主存有2m-1块,即Cache块地址有c位,主存块地址有m位.字块0字块1字块2C-1……字块2m-1主存地址格式:主存字块标记块内地址m位图3.28全相联映射的另一种常见图解3.全相联映射的优缺点i=jmodm(m为Cache中总块数)映射规则:主存中任何一组的第i块只能放入Cache的第i块.主存第j块(大排块数)和Cache第i块有如下函数关系:1.直接映射:首先,主存在分块的基础上分组,每组大小与Cache的大小相同。二.直接映射及其地址变换(2)缺点:块表的查找时间长,速度慢.(1)优点:块冲突概率最低,只有当Cache中全部装满后,才有可能出现块冲突,块分配灵活;其中,商为主存第j块所在主存的组数,余数为在该组的块数.块0块1块15Cache....…..0组1组127组块0块1块15块16块17块31块2047…主存块2032块2033图3.29直接映射示意图2.直接联映射方式下的地址变换Cache块号组号块内地址Cache块号块内地址组内块号(2)Cache地址格式:(1)主存地址格式:…块号(0块)块内存储单元(0-511)…块号(1块)块内存储单元(0-511)0000000000100000000000000000001111111111…块号(2047块)块内存储单元(0-511)1111111111100000000011111111111111111111……主存地址格式:0000000000000000000000000000000111111111组号(0-127)组内块号(0-15)(3)地址变换(将主存地址转换为Cache地址):Cache块号b组号G(标志字段)MARCache块号b块内地址wCAR命中不命中访问主存块内地址W比较组号GCache地址根据CAR的内容访问Cache主存地址中的“组内块号(Cache块号)+块内地址”=Cache地址注意:在直接映射中,主存组号作为识别是否命中的标志,标志位的长度由主存组数决定.3.直接映射的优缺点:块内地址(9位)组内块号(4位)组号(7位)Cache地址格式块内地址(9位)块号(4位)解:(1)主存地址格式(1)分别写出主存地址格式和Cache地址格式;(2)画出直接映射及地址变换图;(3)主存地址为0022AH的单元在Cache中什么位置?例题:某机主存容量为1MB,Cache容量为8KB,每块512B,如果采用直接映射,请回答:(2)缺点:Cache的空间利用率低,块冲突较多,命中率也低.(1)优点:硬件实现简单,成本低.块0块1块15Cache....…..0组1组块0块1块15块16块17块31块2047…块2032块2033127组主存7位4位9位组号G组内块号b块内地址主存地址比较组号不命中,访问主存Cache地址01…b……15(2)直接映射及地址变换示意图命中,MARCAR4位9位则根据CAR的内容访问Cache地址映射地址变换(3)主存地址为0022AH的单元在Cache中什么位置组(0组)组内块号(1块)块内地址(42字)另外一种求法:0022AH=(00000000001000101010)2因为主存第j块和Cache第i块有如下函数关系:i=jmodm(m为Cache中总块数)这里,j=1,m=16,所以i=1mod16=1例:设一个Cache中有8个块,访问主存进行读操作的块地址序列为22、26、22、26、16、4、16、18,求每次访问后Cache中的内容.解:地址命中与否地址转换关系22不命中22MOD8=626不命中26MOD8=222命中22MOD8=626命中26MOD8=216不命中16MOD8=04不命中4MOD8=416命中16MOD8=018不命中18MOD8=2直接映象下Cache访问情况直接映象的块分配情况访问顺序12345678地址222622261641618块分配情况22操作状态调进2226调进2226命中2226命中222616调进2241626调进2216264命中2216184替换练习1.设有一个Cache的容量为2K字,每块16字,在直接映象方式下,求:(1)该Cache可容纳多少个块?(2)如果主存的容量为256K字,则有多少个块?(3)主存的地址格式?Cache的地址格式?(4)主存中的第032AB单元映象到Cache中哪一块?练习2.设计算机的存储器为64K×16位,直接地址映射的Cache容量为1K字,每块4字,问:(1)主存中地址的标志字段、块号和块内地址字段分别有多少位?(2)Cache中可装入多少块数据?三.组相联映射及其地址变换n路组相联:每组中有n块.有全相联映射:主存第g组第i块可映射到Cache第i组中任一块的位置.有直接映射:主存第g组第i块只能映射到Cache第i组
本文标题:第三章存储系统[三].
链接地址:https://www.777doc.com/doc-2120979 .html