《计算机组成原理》课程组《计算机组成与结构》——本科生课程教学计算机学院计算机组成与结构本课程主要讲授计算机系统的硬件和软件构成方法,包括硬件系统中运算器、控制器、存储器、输入设备和输出设备和总线系统的构成原理等;并与当代先进的计算机技术相结合。是计算机科学与技术本科专业核心课程。本课程着重计算机系统组成与结构方面的教学和研究。计算机结构定义为系统程序员所能见到的计算机硬件特性;计算机组成是指计算机硬件的具体实现。计算机学院第七章存储系统存储系统的层次结构高速缓冲存储器虚拟存储器相联存储器存储保护计算机学院7.1存储系统的层次结构一、存储系统的分类从不同的角度和观点,可将存储系统分为不同的类型。1、按存储介质分磁表面存储器:用磁性材料做成的存储器半导体存储器:用半导体器件组成的存储器光存储器:用感光材料做成的存储器2、按存储方式分随机存储器:任何存储单元的内容都能被随机存取,且存取时间和存储单元的物理位置无关顺序存储器:只能按某种顺序来存取,存取时间和存储单元的物理位置有关计算机学院7.1存储系统的层次结构3、按存储器的读写功能分:ROM,RAM4、按信息的可保存性分:非永久记忆,永久记忆5、按在计算机系统中的作用分:主存、辅存、高速缓存、控制存储器计算机学院7.1存储系统的层次结构二、存储系统层次结构计算机系统对存储器的要求是:容量大、速度快、成本低,但由于各类存储器各具其特点,即半导体存储器速度快、成本较高;磁表面存储器容量大、成本低但速度慢,无法与CPU高速处理信息的能力相匹配。因此,在计算机系统中,通常采用三级存储器结构,即使用高速缓冲存储器、主存储器和外存储器组成的结构。CPU能直接访问的存储器称为内存储器,它包括高速缓冲存储器和主存储器;CPU不能直接访问外存储器,外存储器的信息必须调入内存储器后才能为CPU进行处理。计算机学院7.1存储系统的层次结构Cache-主存-辅存三级存储层次如图所示。其中Cache容量最小,辅存容量最大,各层次中存放的内容都可以在下一层次中找到。这种多层次结构已成为现代计算机的典型存储结构。CacheCPU高速缓冲寄存器组存储器主外存设主机计算机学院7.1存储系统的层次结构主—辅存层次满足了存储器的大容量和低成本需求。在速度方面,计算机的主存和CPU一直保持了大约一个数量级的差距。显然这个差距限制了CPU速度潜力的发挥。为了弥合这个差距,必须进一步从计算机系统结构上去研究。设置高速缓冲存储器(cache)是解决存取速度的重要方法。在CPU和主存中间设置高速缓冲存储器,构成高速缓存(cache)—主存层次。要求cache在速度上能跟得上CPU的要求。计算机学院7.1存储系统的层次结构从CPU的角度看,cache—主存层次的速度接近于cache,容量与每位价格则接近于主存。因此,解决了速度与成本之间的矛盾。上述主存—辅存和cache—主存这两种存储层次。现代大多数计算机同时采用这两种存储层次,构成cache—主存—辅存三级存储层次,与CPU之间的关系如下图所示。计算机学院7.1存储系统的层次结构计算机学院7.1存储系统的层次结构寄存器微处理器内部的存储单元高速缓存(Cache)完全用硬件实现主存储器的速度提高主存储器存放当前运行程序和数据,采用半导体存储器构成辅助存储器磁记录或光记录方式磁盘或光盘形式存放可读可写或只读内容以外设方式连接和访问虚拟存储器计算机学院7.1存储系统的层次结构其中cache容量最小,辅存容量最大,各层次中存放的内容都可以在下一层次中找到。这种多层次结构已成为现代计算机的典型存储结构。计算机学院7.2高速缓冲存储器(Cache)一、Cache存储器工作原理对大量的典型程序的运行情况的分析结果表明,在一个较短的时间间隔内,地址往往集中在存储器逻辑地址空间的很小范围内。程序地址的分布本来就是连续的,再加上循环程序段和子程序段要重复执行多次,因此,对程序地址的访问就自然地具有相对集中的倾向。数据分布的这种集中倾向不如指令明显,但对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中。这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少的现象就称为程序访问的局部性。计算机学院7.2高速缓冲存储器(Cache)根据局部性原理,可以在主存和CPU之间设置一个高速的容量相对较小的存储器,如果当前正在执行的程序和数据存放在这个存储器中,当程序运行时,不必从主存储器取指令和取数据,而访问这个高速存储器即可,所以提高了程序运行速度,这个存储器称作高速缓冲存储器(cache)。cache存储器介于CPU和主存之间,它的工作速度数倍于主存,全部功能由硬件实现,并且对程序员是透明的。计算机学院7.2高速缓冲存储器(Cache)CPU与cache之间的数据交换以字(字节)为单位Cache与主存间的数据传送以数据块为单位一个块(Block)由若干字组成Cache的基本结构如图7.2所示。计算机学院7.2高速缓冲存储器(Cache)计算机学院7.2高速缓冲存储器(Cache)Cache的数据块称为行(线Line,槽Slot)用Li表示,其中i=0,1,…,m-1,共有m=2r行主存的数据块称为块(Block)用Bj表示,其中j=0,1,…,n-1,共有n=2s块行与块是等长的,包含k=2w个主存字字是CPU每次访问存储器时可存取的最小单位Cache由数据存储器和标签存储器组成数据存储器:高速缓存主存数据标签存储器:保存数据所在主存的地址信息计算机学院7.2高速缓冲存储器(Cache)设主存有2n个单元,地址码为n位,将主存分块(block),每块有B个字节,则共分成M=2n/B块。cache也由同样大小的块组成,由于其容量小,所以块的数目小得多,主存中只有一小部分块的内容可存放在cache中。在cache中,每一块外加有一个标记,指明它是主存的哪一块的副本,所以该标记的内容相当于主存中块的编号,设主存地址为n位,且n=m+b,则可得出:主存的块数M=2m,块内字节数B=2b。cache地址码为(c+b)位。cache的块数为2c。块内字节数与主存相同。计算机学院7.2高速缓冲存储器(Cache)主存与Cache之间地址关系如下:主存的地址主存块号块标记Cache块号块内地址m位b位c位b位Cache的地址格式计算机学院7.2高速缓冲存储器(Cache)当CPU发出读请求时,将主存地址m位(或m位中的一部分)与cache某块的标记相比较,根据其比较结果是否相等而区分出两种情况:当比较结果相等时,说明需要的数已在cache中,那么直接访问cache就行了,在CPU与cache之间,通常一次传送一个字;当比较结果不相等时,说明需要的数据尚未调入cache,那么就要把该数据所在的整个字块从主存一次调进来。前一种情况称为访问cache命中,后一种情况称为访问cache不命中。计算机学院7.2高速缓冲存储器(Cache)高速命中(Hit):微处理器读取主存的内容已包含在Cache中,可以直接读取Cache,不用访问主存。高速失效(Miss)、缺失、未命中:微处理器读取主存的内容不在Cache中,需要访问主存读取一个数据块。Cache的读操作Y(命中hit)N(失效miss)从CPU接收地址RA开始Cache中含RA?从Cache读RA的字送CPU从主存读含RA的块向CPU传送RA的字向Cache传送含RA的主存块结束计算机学院7.2高速缓冲存储器(Cache)Cache的容量和块的大小是影响Cache的效率的重要因素。通常用“命中率”来测量Cache的效率。命中率(HitRate):高速命中的概率h=NcNc+NmCache/主存系统的平均访问时间ta:ta=htc+(1-h)tmtc=命中时的cache访问时间tm=未命中时的主存访问时间h=命中率Nc=cache完成存取的总次数Nm=主存完成存取的总次数计算机学院7.2高速缓冲存储器(Cache)Cache的访问效率e设r=tm/tc表示主存慢于Cache的倍率tce=ta=tchtc+(1-h)tm1=r+(1-r)h1h+(1-h)r=计算机学院7.2高速缓冲存储器(Cache)【例】CPU执行一段程序时,Cache完成存取的次数为1900次,主存完成存取的次数为100次,已知Cache存取周期为50ns,主存存取周期为250ns,求Cache/主存系统的效率和平均访问时间。【解】h=Nc/(Nc+Nm)=1900/(1900+100)=0.95r=tm/tc=250ns/50ns=5e=1/(r+(1-r)h)=1/(5+(1-5)×0.95)=83.3%ta=tc/e=50ns/0.833=60ns或者,ta=h·tc+(1-h)·tm=60ns计算机学院7.2高速缓冲存储器(Cache)二、Cache存储器的组织1、地址映像为了把信息放到Cache存储器中,必须应用某种函数把主存地址映像到Cache,称作地址映像。在信息按照这种映像关系装入Cache后,执行程序时,应将主存地址变换成Cache地址,这个变换过程叫做地址变换。计算机学院7.2高速缓冲存储器(Cache)Cache通过地址映射(mapping)的方法确定主存块与Cache行之间的对应关系,确定一个主存块应该存放到哪个Cache行中,几种基本地址映像方式如下:全相联映射(fullyassociativemapping)可以将一个主存块存储到任意一个Cache行直接映射(directmapping)将一个主存块存储到唯一的一个Cache行组相联映射(setassociativemapping)可以将一个主存块存储到唯一的一个Cache组中任意一个行计算机学院7.2高速缓冲存储器(Cache)1)直接映像在直接映像方式中,映像函数可定为:j=imod2c其中,j是Cache的字块号,i是主存的字块号。在这种映像方式中,主存的第0块,第2c块,第2c+1块,…,只能映像到Cache的第0块,而主存的第l块,第2c+1块,第2c+1+1块…,只能映像到Cache的第l块。在直接映像方式中,主存和Cache中字块的对应关系如图7.3所示。计算机学院7.2高速缓冲存储器(Cache)计算机学院7.2高速缓冲存储器(Cache)【例】设主存容量1MB,高缓容量16KB,块的大小为512字节。(1)分析Cache地址格式(2)写出主存地址格式(3)计算块表的容量为多大?(4)画出直接方式地址映像及变换示意图(5)主存地址为CDE8FH的单元在cache中的什么位置?【解答】(1)Cache容量16KB,16KB=214,所以Cache地址为14位;块的大小为512字节,所以块内地址为9位,块地址为5位。计算机学院7.2高速缓冲存储器(Cache)Cache地址格式为:13980块地址块内地址(2)主存容量1MB,1MB=220,所以主存地址为20位;块的大小为512字节,所以块内地址为9位,块地址为5位,块标记为6位。主存地址格式为:191413980块标记块地址块内地址(3)Cache的每一块在块表中有一项,Cache的块地址为5位,所以块表的单元数为25;块表中存放的是块标记,由于块标记为6位,所以块表的字长为6位。故块表的容量为:25字×6位。计算机学院7.2高速缓冲存储器(Cache)(4)直接方式地址映像及变换示意图如图所示:MM主存地址第0块主存区号区内块号块内地址第1块6位5位9位………第0区Cache地址第31块比较命中Cache第0块0第0块第1块1第1块………第1区2第31块第0块区号Y第Y块第1块………第2区30第30块第31块31第31块第0块第1块………第63区第31块计算机学院7.2高速缓冲存储器(Cache)(5)因为cache容量为16KB=214B,块长为512B,所以