资源描述
计算机系统结构教程,陈嘉多媒体教学课件福州大学软件学院,存储系统的层次结构与性能指标,存储系统的设计目标:以较小的成本使存储系统的工作速度与处理机的速度相匹配,同时要求存储系统有尽可能大的容量。,程序访问局部性:,时间局部性:程序在最近的未来要用到的信息很可能是现在正在使用的信息。(如循环程序),空间局部性:程序在最近的未来要用到的信息很可能同现在正在使用的信息在存储空间位置上相邻近。(如顺序执行程序,数据聚族存储),存储系统的多级层次结构:,M1(T1,S1,C1),M2(T2,S2,C2),Mn(Tn,Sn,Cn),T1T2Tn存储器访问周期,S1S2Cn单位容量平均价格,通过程序访问局部性原理使存储系统的等效访问速度接近于M1的访问速度存储系统的容量为Mn的容量,每位价格接近于Mn的每位价格,程序局部性不仅使层次结构的存储系统在速度、容量和价格的综合水平较高,而且可对存储空间采用分块或分页的管理方式来获得对M1较高的命中率,由于程序访问的时间和空间局部性,从而保证对M1有较高的命中率,存储系统层次结构要解决的问题:,定位问题,寻址问题,替换问题,写回问题,三级存储系统,Cache,内存,辅存,Cache存储器,虚拟存储器,虚拟存储器(主存-辅存存储系统)是针对主存容量不能满足要求而提出的,对应用程序员透明,对系统程序员不透明。,虚拟存储器的等效访问速度接近于主存访问速度,容量却是辅存的容量,每位价格接近辅存的每位价格,Cache存储器(Cache-主存存储系统)是针对主存速度不能满足要求而提出的,对应用程序员和系统程序员都透明。,虚拟存储器在主存和辅存之间增加辅助的硬、软件,使主存和辅存构成一个整体,Cache存储器的等效访问速度接近于物理Cache的访问速度,其容量却是主存的容量,每位价格接近主存的每位价格,在物理Cache和主存之间增加辅助硬件,使Cache和主存构成一个整体,存储系统的性能指标:,存储容量,“Cache-主存”存储系统存储系统的容量就是主存的容量,“主存-辅存”存储系统虚拟地址空间的容量,虚拟地址空间既不是主存的地址空间,也不是辅存的地址空间,这个虚拟地址空间比主存的实际地址空间大得多,并采用像主存一样的随机访问方式,存储系统带宽,存储器最大带宽每秒从存储器进出信息的最大数量(若存储周期200ns,存储字为32位,则存储器带宽为160M位/秒),存储器带宽存储器被连续访问时能提供的数据传输速率实际带宽最大带宽,单位容量平均价格,S1S2,CC2,如果S1与S2相差太大,则会使得对M1的命中率很低要使C接近于C2,还应使增加的辅助软硬件价格只占价格中很小比例,否则性价比将会显著降低,命中率,命中率由CPU产生的逻辑地址在存储器M1中访问到指定信息的概率,H=,与命中率相关的因素,程序的访存地址流,采用的M1和M2之间的地址映像关系,采用的块或页面替换算法,M1的容量,等效访问周期,T=HT1+(1-H)T2,H1,TT1,访问效率,访问效率与命中率和两级存储器的访问周期比有关,存储系统的透明性要求,地址变换和替换算法对程序员都应是透明的,这种透明性由对存储系统进行管理的硬件和软件自动实现,地址映象虚拟地址与物理地址间对应关系的规则,地址变换虚拟存储系统按照某种地址映象方式把虚拟地址转换成物理地址,相邻层之间的数据传送单位,CPU与高速缓存之间:字高速缓存与主存储器之间:块(每块32个字节)主存与磁盘之间:页面(每页4K字节,包括128块)磁盘与磁带之间:段,并行存储器,并行存储器通过设置多个存储器或存储体,使它们并行工作,在一个存储器访问周期能并行访问到多个存储字,单体多字并行存储器,把存储器的存储字字长增加n倍,以存放n个指令字或数据字,从而在一个存储周期内能访问到n个指令字或数据字,最大带宽比单体单字存储器的最大带宽提高n倍,优点:实现简单,缺点:访问冲突概率大,取指令冲突一个存储字中有一个转移指令字时,转移指令后预取的指令字只能作废,读操作数冲突单体多字并行存储器一次取出的n个数据字不一定都是要执行的指令所需要的操作数,而当前执行指令需要的全部操作数也可能不包含在一个存储字中而不能被一次取出数据存放的随机性比指令存放的随机性大,所以读操作数冲突的概率较大,写数据冲突必须凑齐n个数据字后才能作为一个存储字一次写入存储器。需要先把属于一个存储字的n个数读到数据寄存器中,然后再把整个存储字写回存储器,读写冲突在要读出的数据字和要写入的数据字同处于一个存储字时,读和写的操作就无法在同一个存储周期中完成,交叉访问存储器,由多个存储体组成一个更大容量的主存时,对存储器的多个存储体的存储单元采用交叉编址方式,组成交叉访问存储器,高位交叉访问存储器,高位(体号k),低位(体内地址j),log2m位,log2n位,由m个存储体组成,每个存储体的容量均为n个字,缺点:由于程序的连续性和局部性,在程序执行过程中被访问的指令序列和数据绝大多数会分布在同一存储体中,引起访问冲突,优点:有利于扩大常规主存容量,00000000,00000001,00ffffff,01000000,01000001,01ffffff,ff000000,ff000001,ffffffff,译码器,高位(体号),低位(体内地址),地址寄存器,高位(体内地址j),低位(体号k),log2n位,log2m位,A=j*m+k(0jn,0km),k=Amodm,低位交叉访问存储器,由m个存储体组成,每个存储体的容量均为n个字,优点:避免了顺序执行程序和顺序读取指令时存储体的访问冲突,缺点:不便于主存容量的扩充,在执行转移指令或随机访问数据时仍会产生访问冲突,按m个连续的存储单元地址访问存储器,将对m个不同的存储体中各自一个存储单元进行访问,即在一个存储器访问周期中访问了m个存储单元,00000000,00000100,ffffff00,00000001,00000101,ffffff01,000000ff,000001ff,ffffffff,译码器,高位(体内地址),低位(体号),地址寄存器,无冲突访问存储器,一维数组的无冲突访问,在低位交叉访问存储器中,由于程序中的转移指令和数据访问的随机性仍可能产生访问存储体的冲突,0号体,1号体,2号体,3号体,0,1,2,3,体内地址,变址位移量,访问4个元素的冲突情况,1,无冲突,2,一半冲突,3,无冲突,4,全冲突,通常把存储体的个数n选为质数,变址位移量选为同n互质,若存储体的个数与变址位移量互质,就不会产生一维数组的访问冲突,二维数组的无冲突访问,要求对存放在并行存储器中的二维数组按行,按列,按对角线,按反对角线访问均能实现无冲突访问,0号体,1号体,2号体,3号体,0,1,2,3,体内地址,按列访问冲突!,0号体,1号体,2号体,3号体,0,1,2,3,体内地址,按对角线和反对角线访问冲突!,a00,a01,a02,a03,a11,a12,a13,a10,a22,a23,a20,a21,a33,a30,a31,a32,体内地址=i体号=(j-i)%N,0号体,1号体,2号体,3号体,0,1,2,3,体内地址,a00,a11,a22,a33,a03,a02,a01,a12,a13,a10,a21,a20,a23,a30,a31,a32,按行,按列,按对角线及反对角线访问均不产生冲突。但需要对准网络把数组元素的地址变换成并行存储器的实际地址,0号体,1号体,2号体,3号体,0,1,2,3,体内地址,0号体,1号体,2号体,3号体,0,1,2,3,体内地址,体号=2*(iLjH)+(iHiLjL)(为异或运算)体内地址=j,P.Budnik和D.J.Kuck提出了一种能对n*n二维数组实现按行,按列,按对角线,按子对角线,按反对角线,并行访问数组中任意一个n0.5n0.5子数组中的n个元素无冲突的存储方案:要求并行存储体的个数mn,且m取质数。,二维数组的任意元素aij在无冲突并行存储器中的体号和体内地址分别为:体号=(2p*i+j+k)modm体内地址=i其中,p是满足m=22p+1的任意自然数;k是数组第一个元素a00所在存储体的体号,一般取k=0。,0号体,1号体,2号体,3号体,4号体,0,1,2,3,体内地址,n=4,m=5,p=1,k=0,存储空间的(m-n)/m被浪费,存储空间利用率不高m个存储体组成的并行存储器的最大带宽为fmax=mW/T,n*n的二维数组错位存储后,可达到的实际带宽为f=(n/m)fmax,虚拟存储器,虚拟存储器中的三种地址空间,主存储器地址空间由主存单元地址表示的可以随机访问的地址空间,虚拟存储器为应用程序员提供一个比主存容量大得多的可以按接近主存的工作速度运行的存储空间,虚拟地址空间既不是主存的地址空间,也不是辅存的地址空间,是由虚拟地址表示的,比主存的实际地址空间大得多且可以随机访问的空间,辅存地址空间由数据块的外部地址表示的顺序访问的地址空间,虚拟存储器中的三种地址,主存地址主存存储单元的地址,辅存地址辅存上数据的存放地址,虚拟地址程序经编译生成的访存地址,地址映象虚拟地址与主存物理地址间对应关系的规则,地址变换虚拟存储系统按照某种地址映象方式把虚拟地址转换成物理地址的过程对应用程序员透明,由存储系统自动完成,外部地址变换将虚拟地址转换为磁盘存储器物理地址外部地址变换更多依靠软件实现,替换算法当有新数据块调入主存,而主存已没有空闲位置时,需要采用某种替换算法确定新数据块调入主存的位置,段式虚拟存储器的地址映象与地址变换,由程序员将一个大的复杂程序划分为逻辑上相互独立的若干模块或它们的部分集合,这些模块称为段。每个程序段都从0开始编址(段内偏移),段可长可短。,段式管理:把主存空间按段进行分配的存储管理方式,段表:存放程序的各段装入主存的相关信息段长,起始地址,访问方式,装入位,装入位表示要访问的程序段是否已经装入主存,访问方式可以指出本程序段是否需要保护和保护的级别,例如允许读允许写,允许读禁止写,每个程序都用一个段表来存放该程序的各段装入主存的有关信息,段式虚拟存储器的地址映象,多用户虚地址Av,+,+,段表,段表基址寄存器,检查是否越界,主存或磁盘,0,N-1,As,CPU内有一个段表基址寄存器堆,每道程序使用其中的一个段表基址寄存器,如果装入位给出的信息表示要访问的段不在主存中,则称发生了段失效,那么不能将虚地址变换成主存实地址。需要从磁盘存储器中把该段读入主存,并在段表中填入该段的相关信息,随着长度不等的段在主存中不断调入调出,主存中出现段间零头(不足以容纳一个段),使主存空间利用率较低可通过定时运行段间零头回收程序来合并段间零头成为一个连续空间,但将增加系统运行的时间开销,段表中的起始地址字段的长度就是主存实地址的长度,段长字段的长度就是主存空间大小的表示长度,这两个字段都很长。这样既增加了段表本身的存储开销,又增加了虚实地址变换的时间开销。,段式虚拟存储器的主要优点:(1)程序的模块化性能好。(2)便于程序和数据的共享。(3)程序的动态链接和调度比较容易。(4)便于实现信息保护。,段式虚拟存储器的主要缺点:地址变换所花费的时间比较长(做两次加法运算,访存读写段表的时间长)(2)主存储器的利用率往往比较低,易出现段间零头(3)对辅存(磁盘存储器)的管理比较困难,因为段长度不定,而磁盘是按固定的块来访问(4)段表所占的存储空间大,页式虚拟存储器的地址映象与地址变换,页式管理:把虚拟地址空间和主存地址空间都划分为同样大小的页面,程序以页为单位调入调出主存。虚拟空间的页称为虚页,主存空间的页称为实页。,地址空间的页面划分和页面大小是由虚拟存储器的页式管理软硬件实现的,页式虚拟存储器的地址映象,多用户虚地址Av,+,页表,页表基址寄存器,主存实地址A,Pa,页表:在页式虚拟存储器中,每个程序都用一个页表来存放程序的各虚页装入主存实页位置的有关信息主存页号,修改位,装入位,一个虚页占用页表中的一行修改位表示对应的实页是否被修改。如果没有被修改,则在需要把该实页替换出主存时,不必把它写回到磁盘存储器去更新相应的页,只需用调入的新页来覆盖它即可。如果被修改过,替换时则需要把它先写回磁盘存储器。,CPU内有一个基址寄存器堆,每道程序使用其中的一个基址寄存器存放该程序的页表在主存中的基地址,当一个虚地址变换成主存实地址时,需要变换的是把虚地址中的虚页号变换成实地址的实页号,从而大大缩短了要进行变换的地址长度,既节省了硬件和存储开销,又能加快地址变换的速度,内部地址变换:一个用户程序要访问虚存时,必须先给出多用户虚拟地址Av,在操作系统和有关硬件共同管理下,首先进行内部地址变换,如果成功,则得到实页号P。如果不成功,则:,外部地址变换:需要用软件实现,首先查外页表,得到与虚页号对应的磁盘存储器的实地址,然后查内页表(主存页表),看主存是否有空页。如有,把整页磁盘数据调入主存,修改页表。如果没有,则:页面替换:把主存中暂时不用的一页写回到磁盘存储器中原来的位置上,磁盘存储器的地址格式,在操作系统中,把页面失效当作一种异常故障来处理。失效几率很低,1%,因此外部地址变换采用软件来实现每个用户程序都有一张外页表,虚拟地址空间中的每一页或每个程序段,在外页表中都有对应的一个存储字。每一个存储字除了磁盘存储器的地址之外,至少还包括一个装入位。,外部地址变换,多用户虚地址Av,外页表,页式虚拟存储器的优点:主存空间利用率较高页内零头远小于段间零头地址变换速度快只做一次地址加法运算页表的一行长度比段表的一行长度要短,读出和写入一行信息费时较少对辅存的管理容易,固定页对应固定块,页式虚拟存储器的缺点:程序的链接和调度不方便一个程序代码段或数据块中可能先只有部分代码和数据调入主存,在主存中占用若干个不连续的实存空间,模块化性能差,程序和数据的保护不方便对属于同一个程序段的多个页的访问方式标志要同样设置和同样修改,由于每一个虚页都要占用页表的一行,导致页表行数很多,需占用很大主存空间,段页式虚拟存储器的地址映象与地址变换,段页式管理:对用户编写程序的虚拟空间采用分段方式管理,对主存的物理空间采用分页方式管理,用户仍然按照逻辑分段来编写程序,但是虚拟空间到主存物理空间的映像是分页进行的,段表:页表长度,页表起始地址,装入位,修改位,,页表:实页号,修改位,装入位,,用户程序,主存储器,段表,段0的页表,段1的页表,段2的页表,12K,10K,5K,多用户虚地址Av:,段表基址寄存器,多用户段表,+,+,As,Ap,实页号p,页内偏移d,多用户页表,主存地址A,段页式虚拟存储器的优点:主存空间利用率较高每段出现一个页内零头,不会出现段间碎片对辅存的管理容易,固定页对应固定块便于程序的调度和链接程序段和数据段的共享和保护方便,段页式虚拟存储器的缺点:地址转换速度慢需访存3次,进行2次地址加法需设置段表和多个页表,占用存储空间大,加快地址变换的方法,目录表,基本思想:用一个小容量高速存储器存放目录表,目录表存储容量由实页数决定,使目录表占用存储空间少,采用相联存储器的并行相联查找功能访问目录表,加快查表速度,如果将容量较大的页表放在主存中,由于主存的工作速度较低,所以地址变换费时较多,相联存储器(按内容访问存储器)能实现对存储器中所有存储字的并行查找操作,查找速度快,造价高,容量小,屏蔽字用来屏蔽掉寄存器C中不需要查找的某些位,多用户虚地址,目录表按内容访问的相联存储器,实页号p,页内偏移d,相联访问,主存实地址,目录表地址变换方法的优点:由于采用相联存储器,因此查表速度快,目录表地址变换方法的缺点:可扩展性差:随着主存容量的增加,目录表的容量也必须增加,原有的相联存储器的容量就可能不够。如果扩大相联存储器的容量就使造价太高,查表速度也会因此降低,快慢表,快表(TLB):是慢表的一个部分副本,在相联存储器中存放一段时间内经常要访问的存储字,容量可为816个存储字,访问速度与CPU中的通用寄存器相当。,程序在执行过程中具有局部性,慢表:存放页表的所有存储字,放在主存中,快慢表地址变换的速度接近快表的访问速度,并使主存中的慢表容量不受限制,多用户虚地址Av,快表(按内容相联访问),慢表(按地址访问),主存实地址,快表的查找速度很快,只要对快表的命中率较高,地址变换所需时间与主存的一个存储周期相比就几乎可以忽略不计。虚拟存储器的访问速度就可以接近主存的工作速度,例:某页式虚拟存储器的虚空间分为8个虚页,虚页号为07,页的大小为1024个字,主存容量为4096个字。采用页表进行地址变换时,页表的当前内容如下表所示。,(1)列出会发生页面失效的全部虚页号。(2)若程序按以下虚地址访存:0,3728,1023,1024,2055,7800,4096,6800,请计算出变换的主存实地址(用十进制表示)。,(1)2,3,5,7,页面替换算法,在产生页面失效,需将新页调入主存,主存已被虚页占满的情况下,控制腾出主存中哪个页面以接纳新页的算法,评价页面替换算法的优劣准则主存命中率是否便于实现实现成本,随机算法(RAND算法),用软件或硬件随机产生被替换的虚页号,优点:简单,易于实现,缺点:没有利用主存使用的“历史”情况,没有利用程序的局部性,使主存命中率低,先进先出算法(FIFO算法),选择最早装入主存的虚页作为被替换页实现方法:为页表或目录表中的每个页增设一个“年龄计数器”字段,刚调入的虚页的计数器的计数值为0,每调入一个新的虚页时,其他装入页的计数值都加1,需要替换时,计数值最大的装入页就是最先进入主存的虚页,优点:较易实现,利用了主存使用的“历史”信息,缺点:最先进入的页很可能是现在经常要用到的页,不一定能反映出程序的局部性,近期最少使用替换算法(LRU算法),选择过去近期最少访问的虚页作为被替换页实现方法:,在页表或目录表中,对每个页增设一个“使用次数计数器”字段,某个页被访问一次时,该页的计数器字段加1,使用次数最少的页是被替换页,优点:由于一般近期最少使用的页在未来一段时间内也将最少被访问,因此能较好地反映程序的局部性,缺点:,是按页的过去使用情况来确定被替换页,不是按页的未来使用情况确定被替换页,具有一定的局限性,实现困难,近期最近未使用替换算法选择过去近期最久未被访问的虚页作为被替换页在页表或目录表中,对每个页增设一个“使用计时器”字段某个页被访问时,该页的计时器字段清0,其他装入页的计时器的值都加1使用最久的页(即计时器的值最大)是被替换页,近期最久未使用替换算法的“使用计时器”字段的位数比近期最少使用替换算法的“使用次数计时器”字段的位数少,使页表增加的容量较少。,最优替换算法(OPT算法),选择将来一段时间内最久不被访问的页作为被替换页,优点:根据虚页未来使用情况来确定被替换页,命中率最高,缺点:只有让程序先运行一遍得到程序访存的虚页地址流,才能在替换时确定未来一段时间内哪一页是最久不被访问的。是一种理想化的算法,不具有实用价值,常用作评价其它页面替换算法优劣的标准,例:设有一道程序,有04共5个虚页,程序执行时的访存地址流为:0,1,0,4,3,0,2,3,1,3若分配给该道程序有3个实页,请图示分别采用FIFO,LRU和OPT替换算法对3页主存空间的使用和替换过程,并分别计算主存命中率。,时间t,12345678910,虚页地址流,0104302313,0,0,1,0,1,0*,1,4,调进,调进,命中,调进,替换,3,1*,4,3,0,4*,替换,3*,0,2,替换,3*,0,2,命中,1,0*,2,替换,1,3,2*,替换,先进先出FIFO,命中2次,时间t,12345678910,虚页地址流,0104302313,0,0,1,0,1,0,1*,4,调进,调进,命中,调进,替换,0*,3,4,0,3,4*,0,3*,2,替换,0*,3,2,命中,1,3,2*,替换,1,3,2*,近期最少使用LRU,命中4次,命中,命中,时间t,12345678910,虚页地址流,0104302313,0,0,1,0,1,0,1,4*,调进,调进,命中,调进,替换,0,1*,3,0*,1,3,2*,1,3,替换,2*,1,3,命中,2*,1,3,2*,1,3,最优替换算法OPT,命中5次,命中,命中,命中,例:设有一道循环程序,有03共4个虚页,分配给该程序的主存实页只有3个。程序执行时的访存地址流为:0,1,2,3,0,1,2,3,请图示分别采用FIFO,LRU和OPT替换算法对主存实页的使用和替换过程,并分别计算主存命中率。,时间t,12345678,虚页地址流,01230123,0,0,1,0*,1,2,3,1*,2,调进,调进,替换,3,0,2*,3*,0,1,替换,2,0*,1,替换,2,3,1*,先进先出FIFO,命中0次,调进,替换,替换,时间t,12345678,虚页地址流,01230123,0,0,1,0*,1,2,3,1*,2,调进,调进,替换,3,0,2*,3*,0,1,替换,2,0*,1,替换,2,3,1*,调进,替换,替换,近期最少使用LRU,命中0次,时间t,12345678,虚页地址流,01230123,0,0,1,0,1,2*,0,1,3*,调进,调进,命中,0*,1,3,0,1*,3,0,2*,3,替换,0,2,3*,调进,替换,命中3次,最优替换算法OPT,命中,命中,在程序按虚页地址流访问主存过程中,每次发生替换时的被替换页就是下次要使用的页,产生“颠簸”。,若再多分配一个主存实页,3种算法均能命中4次,达到最大主存命中率。,命中率与分配给程序的主存实页数有关。,例:设有一道循环程序,有04共5个虚页,程序执行时的访存地址流为:0,1,2,3,0,1,4,0,1,2,3,4请图示采用FIFO算法,在分配给程序的主存实页数分别为3页和4页时的命中率。,并不是分配给程序的主存实页数越多,主存访问的命中率就越高。,时间t,123456789101112,虚页地址流,012301401234,0,0,1,0*,1,2,3,1*,2,调进,调进,替换,3,0,2*,3*,0,1,替换,4,0*,1,替换,4,0*,1,命中,4,0*,1,4,2,1*,替换,n=3,命中3次,调进,替换,命中,4*,2,3,替换,4*,2,3,命中,时间t,123456789101112,虚页地址流,012301401234,0,0,1,0,1,2,0*,1,2,调进,调进,0*,1,2,0*,1,2,4,1*,2,替换,4,0,2*,4,0,1,4*,0,1,替换,n=4,命中2次,调进,3,0*,1,替换,3,4,1*,3,3,3,3,3,3*,2,2,2,调进,命中,命中,替换,替换,替换,堆栈型替换算法,堆栈型替换算法的定义:设A是长度为L的任意一个虚页地址流,t为已处理过t-1个虚页的时间点,n为分配给该虚页地址流的主存实页数,Bt(n)表示在t时间点,在n个实页中的虚页集合,Lt表示到t时间点已处理过的虚页地址流中虚页号相异的页数。如果替换算法具有下列包含性质:nLt时,Bt(n)cBt(n+1)nLt时,Bt(n)=Bt(n+1)则称此替换算法属于堆栈型替换算法。,堆栈型替换算法具有性质:随着分配给程序的主存实页数增加,堆栈型替换算法保证访问主存的命中率也随之增加,至少不下降,LRU算法及OPT算法是堆栈型替换算法FIFO算法非堆栈型替换算法,对于LRU算法,在主存中保留的是最近使用过的虚页,最近使用过的n+1个虚页中必包含最近使用过的n个虚页,对于OPT算法,在主存中保留的是最近的将来要访问的虚页,最近的将来要访问的n+1个虚页中必包含最近的将来要访问的n个虚页,可采用堆栈处理技术对访存虚页地址流处理一次,就可同时获得对此虚页地址流分配不同主存实页数时的主存命中率,用堆栈处理技术对虚页地址流进行处理时,主存在t时间点的状态用堆栈St表示,St是Lt个不同虚页号在堆栈中的有序集。St(1)是栈顶项,St(2)是次栈顶项nLtBt(n)=St(1),St(2),St(n)nLtBt(n)=St(1),St(2),St(Lt),对虚页地址流A在时间点t的At虚页是否命中,只需看St的前n项中是否有At页,若有,则命中,LRU算法把刚访问过的虚页号压入栈顶单元后,把栈顶单元中的虚页号与其他堆栈单元的虚页号进行比较,去掉与栈顶单元虚页号相同的其他堆栈单元,保证栈中保留的虚页号都是相异的。,例:设有一道程序,有04共5个虚页,程序执行时的访存地址流为:1,2,1,0,4,1,3,4,2,1,4,1若分配给该道程序有3个实页,采用LRU算法对虚页地址流进行堆栈处理。分别求出分配给该程序主存实页数为1,2,3,4和5页时的主存命中率。,n=1,H1=0n=2,H2=2/12=0.167n=3,H3=5/12=0.417n=4,H4=6/12=0.5n=5,H5=7/12=0.583,时间t,123456789101112,虚页地址流,121041342141,1,n=1,n=2,n=3,n=4,n=5,St(1),St(2),St(3),St(4),St(5),2,1,1,2,调入,调入,调入,调入,调入,替换,调入,调入,调入,调入,替换,命中,命中,命中,命中,0,1,2,替换,替换,调入,调入,调入,4,0,1,2,替换,替换,替换,调入,调入,1,4,0,2,替换,替换,命中,命中,命中,3,1,4,0,2,替换,替换,替换,替换,调入,4,3,1,0,2,替换,替换,命中,命中,命中,2,4,3,1,0,替换,替换,替换,替换,命中,1,2,4,3,0,替换,替换,替换,命中,命中,4,1,2,3,0,替换,替换,命中,命中,命中,1,4,2,3,0,替换,命中,命中,命中,命中,高速缓冲存储器,Cache-主存存储系统与主存-辅存存储系统之间的区别:两级存储器间的信息交换单位不同主存与辅存间的信息交换单位是页(1K几十K个存储字),Cache与主存间的信息交换单位是块(几个几十存储字)两级存储器的速度比不同:主存速度是磁盘速度的105倍,Cache速度是主存速度的310倍,CPU与Cache及主存均有直接通路CPU对Cache未命中可直接访问主存;辅存与CPU间没有直接通路,CPU访存未命中,需等待虚页调入主存再访存Cache-主存存储系统以提高速度为目标,各项管理功能由硬件实现;主存-辅存存储系统以扩大容量为目标,各项管理功能由软件实现Cache-主存存储系统对应用程序员和系统程序员均透明;主存-辅存存储系统仅对应用程序员透明,Cache的工作原理,主存和Cache都划分成相同大小的块,Cache的地址映象与地址变换,Cache的地址映象:把主存地址空间映象到Cache地址空间,建立起主存块与Cache块间位置对应关系的规则。,Cache的地址变换:在程序实际运行过程中,把主存地址变换为Cache地址的过程。,选择地址映象方式考虑的因素:用硬件实现地址变换的难易地址变换速度主存或Cache空间利用率块调入时发生块位置冲突的概率,全相联映象及其地址变换,全相联映象:主存中的任意一块可以映象到Cache中的任意块位置上,若Cache块数为Cb,主存块数为Mb,则主存与Cache间的对应关系有CbMb种,块0,块Cb-1,块1,块0,块1,块i,块Mb-1,Cache,主存,全相联映象方式的优点:Cache块位置冲突概率低,Cache空间利用率高。全相联映象方式的缺点:随着Cache容量的增大,而Cache块受主存频宽的限制容量较小,因此Cache块数增多,目录表行数增多,要求相联存储器的容量越来越大。过大的相联存储器不仅价格昂贵,而且也会降低地址变换的速度,直接相联映象及其地址变换,主存中的一块只能映象到Cache的一个特定块位置上。b=BmodCb,设主存的块数为Mb,将主存按Cache的大小分为Me=Mb/Cb个区,(主存块块号为B,Cache块块号为b,Cache的块数为Cb),直接映像方式中,Cache的地址与主存地址除区号外的低位部分完全相同,用于保存地址变换信息的表称为区表,为了提高Cache的访问速度,有些系统将区表存储器与Cache合并成一个存储器,直接相联映象方式的优点:区表的空间占用量比目录表小地址变换仅需处理区号部分,变换速度更快区表可存放在按地址访问的Cache中,不需相联存储器,降低了地址变换的成本直接相联映象方式的缺点:块冲突率高,使Cache空间利用率低,块替换频繁,组相联映象及其地址变换,主存的组与Cache的组之间采用直接映象方式,两个对应组的块间采用全相联映象方式,把主存按Cache的容量分区,主存中的各区和Cache再按同样大小划分成数量相同的组,组内按同样大小划分成数量相同的块,Gb:组内块数Cg:组数Me:区数Cb=GbCg:区内块数Mb=GbCgMe=CbMe:内存总块数,块表存储器采用按地址访问和相联访问两种方式工作主存区号E+主存组内块号B+Cache组内块号b+有效位,保存地址变换信息的表称为块表,块表的行数与Cache的块数相等,在块内字数不多时将块表存储器与Cache合并为一个存储器:将原块表中相联比较的一个组按块方向展开存放使块表的行数是Cache的组数Cg,一行由Cb个存储字组成(Cb是组内块数)用多个相等比较器代替相联访问,加快查表速度将Cache的地址变换与访问Cache并行进行,组相联映象方式的优点:块冲突概率较低,Cache空间利用率较高,块表占用空间较少,地址变换速度较快组相联映象方式的缺点:实现难度高,Cache的替换算法及其实现,各种地址映象方式的替换范围:直接映象方式:只能换出与主存地址的区内块号同号的Cache块全相联映象方式:由替换算法换出主存中的某Cache块组相联映象方式:由替换算法换出与主存地址的区内组号同号的Cache组中某块,Cache系统要求访问速度很高,替换算法必须全部用硬件实现,随机替换算法实现硬件:随机数发生器优点:实现简单缺点:未利用程序的局部性特点,也未利用历史的块地址流分布情况,因此命中率低,FIFO替换算法实现硬件:每块设置一个计数器在块表内增设一个计数器字段,其长度与Cache地址中的组内块号字段长度相同新装入块时,将所属的计数器清零,同组的其他块所属的计数器都加1需要替换时,在同组中选择计数器的值最大的块作为被替换块,每组设置一个计数器为每组设置一个模为Cb的计数器,最先指向该组最先进来的块,该块被替换后计数值加1,指向下一个要替换的块,优点:利用了Cache块地址流的历史信息缺点:最先装入的块有可能是经常要用的块,命中率仍不高,LRU替换算法实现硬件:计数器法为每块设置一个计数器,其长度与组内块号字段的长度相同。被装入或被替换的块,其对应的计数器清0,同组中其他所有块所属的计数器均加1,命中的块所对应计数器清0,同组中计数值小于命中块原计数值的均加1需替换时,以计数值最大的计数器所对应块作为被替换块,例:某Cache系统,采用组相联映象方式,每组4块,用计数器实现LRU替换算法。若访存块地址流为:1,2,3,4,5,4,且设所有块均被映象到同一Cache组中。请说明该Cache相应组内4个Cache块计数器的工作情况。,块号,计数器,块号,计数器,块号,计数器,块号,计数器,块号,计数器,块号,计数器,块地址流,主存块1,主存块2,主存块3,主存块4,主存块5,主存块4,Cache块0,Cache块1,Cache块2,Cache块3,1,00,01,01,01,2,00,01,10,10,3,01,10,00,11,4,10,11,01,00,5,11,00,10,01,1,1,2,3,1,2,4,3,2,5,4,3,2,11,01,10,00,比较对法让2个块组成一个比较对,用一个触发器的状态表示该比较对的两块被访问过的先后次序,经门电路组合,可从多个块中找出最久未被访问的块若块数为p,则触发器的个数为Cp2=p(p-1)/2,门电路个数为p个。由于触发器个数随块数的平方递增,故比较对法只适用于组内块数较少的情况,TAB,TAC,0,TBC,0,1,&,&,&,0,1,1,ALRU,BLRU,CLRU,访问B,访问A,访问C,CLRU=TACTBC=1,ALRU=TABTAC=1,BLRU=TABTBC=1,影响对Cache的命中率H的主要因素:访存的块地址流Cache的容量大小Cache存储器采用的地址映象Cache存储器采用的块替换算法,Cache的一致性问题,导致主存某单元内容与Cache对应单元内容不一致的原因:,CPU写Cache,并不同时写回主存,造成主存内容的过时,I/O或其它处理机从主存得到错误输出信息,I/O或其它处理机写主存,并不同时更新Cache,造成Cache中内容过时,CPU从Cache中读出错误信息,解决主存内容跟不上Cache对应内容变化的方法:写回法CPU执行写操作时,被写数据只写入Cache,不写入主存。仅当需要替换时,才将修改过的Cache块写回主存。,在采用写回法的Cache块表中,一般有一个“修改位”,优点:使主存与Cache的通信量较小,成本较低缺点:会出现主存与Cache的不一致;增加了Cache的复杂性(需设置修改位以确定是否需要写回及控制先写回后才调入的执行顺序)为保证可靠性,需在Cache中采用纠错码,导致冗余信息位更多。,写直达法CPU执行写操作时,必须把数据同时写入Cache和主存。优点:可始终保持Cache和主存的一致性;Cache块表中不需设置修改位,降低了Cache的复杂性;Cache块的错误可由主存纠正,Cache中只需设置一位奇偶校验位,可靠性较好;缺点:需设置大量缓冲寄存器以减少CPU为等待写主存完成所耗费的时间,成本较高;Cache与主存的通信量过大;,解决Cache内容跟不上主存内容变化的方法:不按写分配法发生写Cache不命中时,只把所写字写入主存,不把包括所写字在内的一个块从主存读入Cache。优点:Cache与主存的信息流量小;缺点:会出现Cache与主存内容的不一致;,当出现写Cache不命中时,是否要把包括所写字在内的一个块从主存读入Cache的问题,按写分配法发生写Cache不命中时,先把所要写的字写入主存,再把包括所写字在内的一个块从主存读入Cache。,优点:能保证Cache的更新跟上主存的更新缺点:Cache与主存的通信量过大,当I/O处理机未经Cache往主存写入新内容时,由操作系统经专用指令清除整个Cache缺点:使Cache存储器对系统程序员不透明当I/O处理机往主存某个区域写入新内容时,由专用硬件自动将Cache内对应此区域的副本作废(通过将有效位置0)使CPU,I/O处理机共享同一Cache,写回法+按写分配法写直达法+不按写分配法,三级存储系统,两个存储系统的组织方式,组织为“Cache-主存”和“主存-磁盘”两个独立的存储系统物理地址Cache存储系统,CPU,MMU,高速缓存Cache,主存储器,虚拟地址,物理地址,物理地址,数据/指令,数据/指令,数据/指令,物理地址Cache存储系统结构框图,一个存储系统的组织方式,由Cache、主存和磁盘组织成一个“Cache-主存-磁盘”存储系统虚拟地址Cache存储系统,CPU,MMU,高速缓存Cache,主存储器,虚拟地址,物理地址,数据/指令,数据/指令,数据/指令,虚拟地址Cache存储系统结构框图,全Cache存储系统的组织方式,没有主存储器,只用Cache和磁盘两种存储器构成“Cache-磁盘”存储系统接近Cache的访问周期,容量等价虚拟地址空间,P1,P2,Pn,IOP1,IOPm,C1,C2,Cn,Cio1,Ciom,Cg,处理机,局部Cache,共享Cache,多处理机系统中的全Cache存储系统结构,作业1,某页式虚拟存储器的虚拟空间分为8个虚页,虚页号为07,页的大小为1024个字,主存容量为4096个字。采用页表进行地址变换时,页表内容如表所示。(1)列出会发生页面失效的全部虚页号。(2)若程序按以下虚地址访存:128,1024,2048,4055,请计算出变换的主存实地址(用十进制表示)。,0,2,5,7,128(0,128)失效,1024(1,0)1024,2048(2,0)失效,(3,983)3*1024+983=4055,作业2,一个程序由920条指令组成,每条指令都是单字长。假设这个程序访问虚拟存储器的字地址流为(地址用十进制数表示):20,22,208,214,146,618,370,490,492,868,916,728采用FIFO替换算法,分别计算下列情况的主存命中率:,(1)页面大小为200字,分配的主存容量为400字。(2)页面大小为100字,分配的主存容量为400字。(3)页面大小为400字,分配的主存容量为400字。(4)由题(1)、(2)、(3)的结果,可得出什么结论?(5)页面大小为200字,分配的主存容量为800字。由题(1)和题(5)的结果,可得出什么结论?,(1)(0,20)(0,22)(1,8)(1,14)(0,146)(3,18)(1,170)(2,90)(2,92)(4,68)(4,116)(3,128),命中6次,(2)(0,20)(0,22)(2,8)(2,14)(1,46)(6,18)(3,70)(4,90)(4,92)(8,68)(9,16)(7,28),命中3次,(3)(0,20)(0,22)(0,208)(0,214)(0,146)(1,218)(0,370)(1,90)(1,92)(2,68)(2,116)(1,328),调入,命中,命中,命中,命中,替换,替换,替换,命中,替换,命中,替换,命中6次,(5)(0,20)(0,22)(1,8)(1,14)(0,146)(3,18)(1,170)(2,90)(2,92)(4,68)(4,116)(3,128),命中7次,作业3,在页式虚拟存储器中,一个程序由04共5个虚页组成,在程序执行过程中,访存虚页地址流为:0,1,0,4,3,0,2,3,1,3假设分配给这个程序的主存空间有3个实页,分别采用FIFO、LRU和OPT替换算法进行替换调度。(1)分别画出3种替换算法对主存3个实页位置的使用过程。,(2)分别计算3种替换算法的主存命中率。,使用FIFO替换算法命中2次,使用LRU替换算法命中3次,使用OPT替换算法命中5次,作业4,有一个Cache存储器,主存有8块(07),Cache有4块(03),采用组相联映像,组内块数为2块。采用LRU替换算法。(1)写出主存地址和Cache地址的格式,并指出各字段的长度。(2)指出主存各块与Cache各块之间的映像关系(3)某程序运行过程中,访存的主存块地址流为1,2,4,1,3,7,0,1,2,5,4,6,4,7,2说明该程序访存对Cache的块位置的使用情况,指出发生块失效且块争用的时刻,计算Cache命中率。,124137012546472,调入,调入,调入,命中,调入,替换,替换,命中,替换,替换,替换,替换,命中,替换,替换,作业5,在一个采用组相联映像的Cache存储器中,Cache容量为16K字,主存采用8个低位交叉编址的存储体组成,主存容量为8M字。要求Cache的每一块能在一个主存访问周期从主存取得。采用按地址访问存储器存放块表实现地址变换,并采用8个相等比较电路。(1)设计主存地址和Cache地址的格式,并说明地址各字段的长度。(2)设计地址变换的块表,求出该表的行数、宽度和容量,说明每个比较电路进行相等比较的位数。,(1)主存地址格式为(E,G,B,W),各有9、8、3、3位Cache地址格式为(g,b,w),各有8、3、3位(2)块表的行数为28行,宽度为8*16位,容量为28*8*16,每个比较电路进行相等比较的位数为12位。,
展开阅读全文