《计算机组成与结构PPT课件(全)第7章存储系统.ppt》由会员分享,可在线阅读,更多相关《计算机组成与结构PPT课件(全)第7章存储系统.ppt(86页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第7章章 存储系统存储系统7.1 存储系统的层次结构存储系统的层次结构7.2 高速缓冲存储器(高速缓冲存储器(cache)7.3 虚拟存储器虚拟存储器7.4 相联存储器相联存储器7.5 存储保护存储保护习题习题目前的计算机中,一般用半导体存储器作为主存储目前的计算机中,一般用半导体存储器作为主存储器器(简称主存或内存简称主存或内存),存放当前正在执行的程序和,存放当前正在执行的程序和数据;而用磁盘、磁带、光盘作为外存储器或辅助数据;而用磁盘、磁带、光盘作为外存储器或辅助存储器存储器(简称外存或辅存简称外存或辅存),存放当前不在运行的大,存放当前不在运行的大量程序和数据。量程序和数据。半导体存
2、储器可随机访问任一单元,而辅助存储器半导体存储器可随机访问任一单元,而辅助存储器一般为串行访问存储器。读写该存储器内容时,需一般为串行访问存储器。读写该存储器内容时,需要顺序地一位一位地进行,访问指定信息所需时间要顺序地一位一位地进行,访问指定信息所需时间与信息所在位置有关。与信息所在位置有关。串行存储器又可分成顺序存取存储器和直接存取存串行存储器又可分成顺序存取存储器和直接存取存储器。例如,磁带上的信息以顺序的方式存储在带储器。例如,磁带上的信息以顺序的方式存储在带上,读写时要待磁带移动到合适位置后才能顺序上,读写时要待磁带移动到合适位置后才能顺序读写,需要耗费较多时间,称为顺序存取存储器。
3、读写,需要耗费较多时间,称为顺序存取存储器。而磁盘存储器对信息的存取包括两个操作:而磁盘存储器对信息的存取包括两个操作:磁磁头直接移动到信息所在区域头直接移动到信息所在区域(磁道磁道);从该磁道的从该磁道的合适位置开始顺序读写。比磁带要快得多,是直合适位置开始顺序读写。比磁带要快得多,是直接存取存储器。接存取存储器。7.1 存储系统的层次结构存储系统的层次结构衡量存储器有三个指标:衡量存储器有三个指标:容量、速度和价格位。容量、速度和价格位。一般来讲,速度高的存储器,每位价格也高,因此一般来讲,速度高的存储器,每位价格也高,因此容量不能太大。早期计算机主存容量很小容量不能太大。早期计算机主存容
4、量很小(如几如几K字字节节),程序与数据从辅存调入主存是由程序员自己,程序与数据从辅存调入主存是由程序员自己安排的,程序员必须花费很大精力和时间把大程序安排的,程序员必须花费很大精力和时间把大程序预先分成块,确定好这些程序块在辅存中的位置和预先分成块,确定好这些程序块在辅存中的位置和装入主存的地址,而且还要预先安排好程序运行时装入主存的地址,而且还要预先安排好程序运行时各块如何和何时调入调出。现代计算机主存储器容各块如何和何时调入调出。现代计算机主存储器容量已达几十量已达几十M字节到几百字节到几百M字节,但是程序对存储字节,但是程序对存储容量的要求也提高了,因此仍存在存储空间的分配容量的要求也
5、提高了,因此仍存在存储空间的分配问题。问题。操作系统的形成和发展使得程序员有可能摆脱主、操作系统的形成和发展使得程序员有可能摆脱主、辅存之间的地址人工定位,通过软件、硬件结合,辅存之间的地址人工定位,通过软件、硬件结合,把主存和辅存统一成了一个整体,形成了一个存储把主存和辅存统一成了一个整体,形成了一个存储层次。从整体看,其速度接近于主存的速度,其容层次。从整体看,其速度接近于主存的速度,其容量则接近于辅存的容量,而每位平均价格也接近于量则接近于辅存的容量,而每位平均价格也接近于廉价的慢速的辅存平均价格。这种系统不断发展和廉价的慢速的辅存平均价格。这种系统不断发展和完善,就逐步形成了现在广泛使
6、用的虚拟存储系统。完善,就逐步形成了现在广泛使用的虚拟存储系统。在系统中,应用程序员可用机器指令地址码对整个在系统中,应用程序员可用机器指令地址码对整个程序统一编址,如同程序员具有对应这个地址码宽程序统一编址,如同程序员具有对应这个地址码宽度的全部虚存空间一样。该空间可以比主存实际空度的全部虚存空间一样。该空间可以比主存实际空间大得多,以致可以存得下整个程序。间大得多,以致可以存得下整个程序。这种指令地址码称为虚地址这种指令地址码称为虚地址(虚存地址、虚拟地址虚存地址、虚拟地址)或逻辑地址,其对应的存储容量称为虚存容量或虚或逻辑地址,其对应的存储容量称为虚存容量或虚存空间;而把实际主存的地址称
7、为物理地址或实存空间;而把实际主存的地址称为物理地址或实(存存)地址,其对应的存储容量称为主存容量、实存地址,其对应的存储容量称为主存容量、实存容量或实容量或实(主主)存空间。存空间。当当CPU用虚地址访问主存时,机器自动地把它经辅用虚地址访问主存时,机器自动地把它经辅助软件、硬件变换成主存实地址。察看这个地址所助软件、硬件变换成主存实地址。察看这个地址所对应的单元内容是否已经装入主存,如果在主存就对应的单元内容是否已经装入主存,如果在主存就进行访问,如果不在主存内就经辅助软件、硬件把进行访问,如果不在主存内就经辅助软件、硬件把它所在的那块程序和数据由辅存调入主存,而后进它所在的那块程序和数据
8、由辅存调入主存,而后进行访问。这些操作都不必由程序员来安排,也就是行访问。这些操作都不必由程序员来安排,也就是说,对应用程序员是透明的。说,对应用程序员是透明的。主主-辅存层次满足了存储器的大容量和低成本需求。辅存层次满足了存储器的大容量和低成本需求。在速度方面,计算机的主存和在速度方面,计算机的主存和CPU一直保持了大约一直保持了大约一个数量级的差距。显然这个差距限制了一个数量级的差距。显然这个差距限制了CPU速度速度潜力的发挥。为了弥合这个差距,必须进一步从计潜力的发挥。为了弥合这个差距,必须进一步从计算机系统结构上去研究。设置高速缓冲存储器算机系统结构上去研究。设置高速缓冲存储器(cac
9、he)是解决存取速度的重要方法。在是解决存取速度的重要方法。在CPU和主存和主存中间设置高速缓冲存储器,构成高速缓存中间设置高速缓冲存储器,构成高速缓存(cache)-主存层次,要求主存层次,要求cache在速度上能跟得上在速度上能跟得上CPU的要的要求。求。cache-主存间的地址映像和调度吸取了比它较主存间的地址映像和调度吸取了比它较早出现的主早出现的主-辅存存储层次的技术,不同的是因其辅存存储层次的技术,不同的是因其速度要求高,不是由软、硬件结合而完全由硬件来速度要求高,不是由软、硬件结合而完全由硬件来实现。实现。从从CPU的角度看,的角度看,cache-主存层次的速度接近于主存层次的速
10、度接近于cache,容量与每位价格则接近于主存。因此,解,容量与每位价格则接近于主存。因此,解决了速度与成本之间的矛盾。决了速度与成本之间的矛盾。以上叙述了主存以上叙述了主存-辅存和辅存和cache-主存这两种存储层次。主存这两种存储层次。现代大多数计算机同时采用这两种存储层次,构成现代大多数计算机同时采用这两种存储层次,构成cache-主存主存-辅存三级存储层次如图辅存三级存储层次如图7.1所示。其中所示。其中cache容量最小,辅存容量最大,各层次中存放的容量最小,辅存容量最大,各层次中存放的内容都可以在下一层次中找到。这种多层次结构已内容都可以在下一层次中找到。这种多层次结构已成为现代计
11、算机的典型存储结构。成为现代计算机的典型存储结构。图图7.1 三层次存储系统三层次存储系统7.2 高速缓冲存储器高速缓冲存储器(cache)7.2.1 cache存储器工作原理存储器工作原理 在一个较短的时间间隔内,地址往往集中在存储器在一个较短的时间间隔内,地址往往集中在存储器逻辑地址空间的很小范围内。程序地址的分布本来逻辑地址空间的很小范围内。程序地址的分布本来就是连续的,再加上循环程序段和子程序段要重复就是连续的,再加上循环程序段和子程序段要重复执行多次,因此,对程序地址的访问就自然地具有执行多次,因此,对程序地址的访问就自然地具有相对集中的倾向。数据分布的这种集中倾向不如指相对集中的倾
12、向。数据分布的这种集中倾向不如指令明显,但对数组的存储和访问以及工作单元的选令明显,但对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中。这种对局部范围择都可以使存储器地址相对集中。这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则的存储器地址频繁访问,而对此范围以外的地址则访问甚少的现象就称为程序访问的局部性。访问甚少的现象就称为程序访问的局部性。根据局部性原理,可以在主存和根据局部性原理,可以在主存和CPU之间设置一个之间设置一个高速的容量相对较小的存储器,如果当前正在执行高速的容量相对较小的存储器,如果当前正在执行的程序和数据存放在这个存储器中,当程序运行时,的程序和
13、数据存放在这个存储器中,当程序运行时,不必从主存储器取指令和取数据,而访问这个高速不必从主存储器取指令和取数据,而访问这个高速存储器即可,所以提高了程序运行速度,这个存储存储器即可,所以提高了程序运行速度,这个存储器称作高速缓冲存储器器称作高速缓冲存储器(cache)。cache存储器介于存储器介于CPU和主存之间,它的工作速度和主存之间,它的工作速度数倍于主存,全部功能由硬件实现,并且对程序员数倍于主存,全部功能由硬件实现,并且对程序员是透明的。是透明的。图图7.2表示表示cache的基本结构。的基本结构。图图7.2 cache的基本结构的基本结构cache的容量和块的大小是影响的容量和块的
14、大小是影响cache的效率的重要的效率的重要因素。通常用因素。通常用“命中率命中率”来测量来测量cache的效率。命中的效率。命中率指率指CPU所要访问的信息在所要访问的信息在cache中的比率,而将中的比率,而将所要访问的信息不在所要访问的信息不在cache中的比率称为失效率。中的比率称为失效率。一般来说,一般来说,cache的存储容量比主存的容量小得多,的存储容量比主存的容量小得多,但不能太小,太小会使命中率太低;也没有必要过但不能太小,太小会使命中率太低;也没有必要过大,过大不仅会增加成本,而且当容量超过一定值大,过大不仅会增加成本,而且当容量超过一定值后,命中率随容量的增加将不会有明显
15、地增长。但后,命中率随容量的增加将不会有明显地增长。但随着芯片价格的下降,随着芯片价格的下降,cache的容量还是不断增大,的容量还是不断增大,已由几十已由几十K发展到几百发展到几百K字节,甚至达到几字节,甚至达到几M字节。字节。在从主存读出新的字块调入在从主存读出新的字块调入cache存储器时,如果存储器时,如果遇到遇到cache存储器中相应的位置已被其他字块占有,存储器中相应的位置已被其他字块占有,那么就必须去掉一个旧的字块,让位于一个新的字那么就必须去掉一个旧的字块,让位于一个新的字块。这种替换应该遵循一定的规则,最好能使被替块。这种替换应该遵循一定的规则,最好能使被替换的字块是下一段时
16、间内估计最少使用的。这些规换的字块是下一段时间内估计最少使用的。这些规则称为替换策略或替换算法,由替换部件加以实现。则称为替换策略或替换算法,由替换部件加以实现。cache存储器中保存的字块是主存中相应字块的一存储器中保存的字块是主存中相应字块的一个副本。如果程序执行过程中要对该字块的某个单个副本。如果程序执行过程中要对该字块的某个单元进行写操作,就会遇到如何保持元进行写操作,就会遇到如何保持cache与主存的与主存的一致性问题。通常有两种写入方式:一致性问题。通常有两种写入方式:一种方式是暂一种方式是暂时只向时只向cache存储器写入,并用标志加以注明,直存储器写入,并用标志加以注明,直到经
17、过修改的字块被从到经过修改的字块被从cache中替换出来时才一次中替换出来时才一次写入主存;第二种方式是每次写入写入主存;第二种方式是每次写入cache存储器时存储器时也同时写入主存,使也同时写入主存,使cache和主存保持一致。前一和主存保持一致。前一种方式称为标志交换种方式称为标志交换(flag-swap)方式。只有写标志方式。只有写标志“置位置位”的字块才有必要最后从的字块才有必要最后从cache存储器一次写存储器一次写回主存,所以又称其为回主存,所以又称其为“写回法写回法”。这种方式写操作速度快,但因在此以前,主存中的这种方式写操作速度快,但因在此以前,主存中的字块未经随时修改而可能失
18、效。后一种方式称为通字块未经随时修改而可能失效。后一种方式称为通过式写过式写(write-through),又称写直达法。这种方式,又称写直达法。这种方式实现简单,且能随时保持主存数据的正确性。但是,实现简单,且能随时保持主存数据的正确性。但是,有可能要增加多次不必要的向主存的写入。假如向有可能要增加多次不必要的向主存的写入。假如向cache存储器某一单元写入多少次,也要向主存相存储器某一单元写入多少次,也要向主存相应单元写入多少次。应单元写入多少次。另有一种写操作方法是:另有一种写操作方法是:当被修改的单元根本就不当被修改的单元根本就不在在cache存储器时,写操作直接对主存进行,而不存储器
19、时,写操作直接对主存进行,而不写入写入cache存储器。存储器。为了说明标记是否有效,每个标记至少还应设置一为了说明标记是否有效,每个标记至少还应设置一个有效位,当机器刚加电启动时,总机的个有效位,当机器刚加电启动时,总机的reset信号信号或执行程序将所有标记的有效位置或执行程序将所有标记的有效位置“0”,使标记无,使标记无效。在程序执行过程中,当效。在程序执行过程中,当cache不命中时逐步将不命中时逐步将指令块或数据块从主存调入指令块或数据块从主存调入cache中的某一块,并中的某一块,并将这一块标记中的有效位置将这一块标记中的有效位置“1”,当再次用到这一,当再次用到这一块中的指令或数
20、据时,肯定命中,可直接从块中的指令或数据时,肯定命中,可直接从cache中取指或取数。从这里也可看到,刚加电后所有标中取指或取数。从这里也可看到,刚加电后所有标记位都为记位都为“0”,因此开始执行程序时,命中率较低。,因此开始执行程序时,命中率较低。另外另外cache的命中率还与程序本身有关,即不同的的命中率还与程序本身有关,即不同的程序,其命中率可能不同。程序,其命中率可能不同。具有具有cache的存储器,其平均存取时间计算如下:的存储器,其平均存取时间计算如下:设设cache的存取时间为的存取时间为tc,命中率为,命中率为h,主存的存取,主存的存取时间为时间为tM,则,则平均存取时间平均存
21、取时间=htc+(1-h)(tc+tM)。7.2.2 cache存储器组织存储器组织 1.地址映像地址映像为了把信息放到为了把信息放到cache存储器中,必须应用某种函存储器中,必须应用某种函数把主存地址映像到数把主存地址映像到cache,称作地址映像。在信,称作地址映像。在信息按照这种映像关系装入息按照这种映像关系装入cache后,执行程序时,后,执行程序时,应将主存地址变换成应将主存地址变换成cache地址,这个变换过程叫地址,这个变换过程叫做地址变换。地址的映像和变换是密切相关的。做地址变换。地址的映像和变换是密切相关的。假设主存储器空间被分为假设主存储器空间被分为Mm(0),Mm(1)
22、,Mm(i),Mm(2m-1)共共2m个块,字块大小为个块,字块大小为2b个个字;字;cache存储空间被分为存储空间被分为Mc(0),Mc(1),Mc(j),Mc(2c-1)共共2c个同样大小的块。个同样大小的块。(1)直接映像直接映像在直接映像方式中,主存和在直接映像方式中,主存和cache中字块的对应关中字块的对应关系如图系如图7.3所示。直接映像函数可定义为:所示。直接映像函数可定义为:j=i mod 2c其中,其中,j是是cache的字块号,的字块号,i是主存的字块号。在这是主存的字块号。在这种映像方式中,主存的第种映像方式中,主存的第0块,第块,第2c块,第块,第2c+1块,块,只
23、能映像到,只能映像到cache的第的第0块,而主存的第块,而主存的第1块,块,第第2c+1块,第块,第2c+1+1块,块,只能映像到,只能映像到cache的第的第1块。块。直接映像的优点是实现简单,只需利用主存地址按直接映像的优点是实现简单,只需利用主存地址按某些字段直接判断,即可确定所需字块是否已在某些字段直接判断,即可确定所需字块是否已在cache存储器中。存储器中。图图7.3 直接映像直接映像cache组织组织(2)全相联映像全相联映像全相联映像方式是最灵活但成本最高的一种方式,全相联映像方式是最灵活但成本最高的一种方式,如图如图7.4所示。所示。图图7.4 全相联映像全相联映像cach
24、e组织组织(3)组相联映像组相联映像组相联映像方式是直接映像和全相联映像方式的一组相联映像方式是直接映像和全相联映像方式的一种折衷方案。组相联映像种折衷方案。组相联映像cache组织如图组织如图7.5所示。所示。组相联映像方式的性能与复杂性介于直接映像与全组相联映像方式的性能与复杂性介于直接映像与全相联映像两种方式之间。当相联映像两种方式之间。当r=0时,它就成为直接时,它就成为直接映像方式;当映像方式;当r=c时,就是全相联映像方式。时,就是全相联映像方式。cache的命中率除了与地址映像的方式有关外,还的命中率除了与地址映像的方式有关外,还与与cache的容量有关。的容量有关。cache容
25、量大,命中率高,但容量大,命中率高,但达到一定容量后,命中率的提高就不明显了。达到一定容量后,命中率的提高就不明显了。图图7.5 组相联映像组相联映像cache组织组织 2.替换算法替换算法当新的主存字块需要调入当新的主存字块需要调入cache存储器而它的可用存储器而它的可用位置又已被占满时,就产生替换算法问题。先介绍位置又已被占满时,就产生替换算法问题。先介绍两种替换算法:两种替换算法:先进先出先进先出(FIFO)算法和近期最少算法和近期最少使用使用(LRU)算法。算法。FIFO算法总是把一组中最先调入算法总是把一组中最先调入cache存储器的字存储器的字块替换出去,它不需要随时记录各个字块
26、的使用情块替换出去,它不需要随时记录各个字块的使用情况,所以实现容易,开销小。况,所以实现容易,开销小。LRU算法是把一组中近期最少使用的字块替换出去。算法是把一组中近期最少使用的字块替换出去。这种替换算法需随时记录这种替换算法需随时记录cache存储器中各个字块存储器中各个字块的使用情况,以便确定那个字块是近期最少使用的的使用情况,以便确定那个字块是近期最少使用的字块。字块。LRU替换算法的平均命中率比替换算法的平均命中率比FIFO要高,要高,并且当分组容量加大时,能提高并且当分组容量加大时,能提高LRU替换算法的命替换算法的命中率。中率。LRU是最常使用的一种算法。其设计思想是把组中是最常
27、使用的一种算法。其设计思想是把组中各块的使用情况记录在一张表上各块的使用情况记录在一张表上(如图如图7.6所示所示)。另外还有一种随机替换法另外还有一种随机替换法(RAND),这种算法不考,这种算法不考虑使用情况,在组内随机选择一块来替换。其性能虑使用情况,在组内随机选择一块来替换。其性能比根据使用情况的替换算法要差些。比根据使用情况的替换算法要差些。图图7.6 LRU算法替换登记表算法替换登记表7.2.3 cache存储器举例存储器举例今以今以Intel 82385 cache控制器为例来作进一步说明。控制器为例来作进一步说明。与与80386微处理器相匹配的主存微处理器相匹配的主存-cach
28、e存储系统是由存储系统是由82385 cache控制器来实现地址映像和变换的。可全控制器来实现地址映像和变换的。可全部映像部映像80386的的32位地址提供的位地址提供的4G(千兆千兆)字节的地字节的地址空间,使址空间,使CPU几乎无任何等待地读出数据,命中几乎无任何等待地读出数据,命中率可高达率可高达99%。82385片内只含有片内只含有cache控制器,控制器,cache数据保存在片数据保存在片外的外的SRAM中。中。82385提供了两种地址映像方式:提供了两种地址映像方式:直接映像和两路直接映像和两路组相联映像。组相联映像。当采用直接映像方式时,当采用直接映像方式时,80386的地址总线
29、分配如的地址总线分配如图图7.7所示。所示。图图7.7 80386地址总线字段分配地址总线字段分配(直接映像方式直接映像方式)直接映像直接映像cache组织如图组织如图7.8所示。所示。图图7.8 82385直接映像直接映像cache组织组织在两路组相联映像方式下,在两路组相联映像方式下,80386地址总线分配和地址总线分配和cache组织分别如图组织分别如图7.9和图和图7.10所示。所示。图图7.9 80386地址总线字段分配地址总线字段分配(两路组相联方式两路组相联方式)图图7.10 两路组相联两路组相联cache组织组织Intel 82385还有监听功能,其作用解释如下:还有监听功能,
30、其作用解释如下:现代计算机以存储器为中心,除了现代计算机以存储器为中心,除了CPU访存以外,访存以外,输入输出输入输出(I/O)设备也可直接访问存储器,而设备也可直接访问存储器,而cache中的数据又要与主存储器相应单元的内容保中的数据又要与主存储器相应单元的内容保持一致持一致(相同相同),因此需要对地址进行监听。假如某,因此需要对地址进行监听。假如某一一I/O设备直接向存储器传送数据设备直接向存储器传送数据(写入存储器写入存储器),而,而且其提供的地址中的数据在且其提供的地址中的数据在cache中有副本中有副本(即该地即该地址与址与cache中相应单元的标记相符,且标记的有效中相应单元的标记
31、相符,且标记的有效位为位为“1”),此时如不进行处理,会造成,此时如不进行处理,会造成cache数据与数据与存储器数据的不一致性。存储器数据的不一致性。为简化操作,通常采取将为简化操作,通常采取将cache相应单元的标记有相应单元的标记有效位清效位清“0”的办法,这样当的办法,这样当CPU再访问再访问(读读)该单元时,该单元时,将产生不命中信号,而到存储器去取数,这样可保将产生不命中信号,而到存储器去取数,这样可保证证CPU所取数据的正确性。图所取数据的正确性。图7.11是引入是引入cache后的后的计算机框图,计算机框图,CPU与与cache之间通过内部高速总线之间通过内部高速总线传送地址、
32、数据和控制信号,传送地址、数据和控制信号,CPU通过通过cache与系与系统总线联系。当系统中存在多个统总线联系。当系统中存在多个CPU时,监听功能时,监听功能更显得必要。更显得必要。图图7.11 具有具有cache的计算机框图的计算机框图7.2.4 多层次多层次cache存储器存储器 1.指令指令cache和数据和数据cache计算机开始实现计算机开始实现cache时,是将指令和数据存放在时,是将指令和数据存放在同一同一cache中的。后来随着计算机技术的发展和处中的。后来随着计算机技术的发展和处理速度的加快,存取数据的操作经常会与取指令的理速度的加快,存取数据的操作经常会与取指令的操作发生
33、冲突,从而延迟了指令的读取。发展的趋操作发生冲突,从而延迟了指令的读取。发展的趋势是将指令势是将指令cache和数据和数据cache分开而成为两个相互分开而成为两个相互独立的独立的cache。在给定在给定cache总容量的情况下,单一总容量的情况下,单一cache可以有较可以有较高的利用率。因为在执行不同程序时,高的利用率。因为在执行不同程序时,cache中指中指令和数据所占的比例是不同的,在单一令和数据所占的比例是不同的,在单一cache中,中,指令和数据的空间可以自动调剂,而分开的指令指令和数据的空间可以自动调剂,而分开的指令cache和数据和数据cache则不具有这一优点。但在超标量则不
34、具有这一优点。但在超标量等新型计算机结构中,为了照顾速度,还是采用将等新型计算机结构中,为了照顾速度,还是采用将指令指令cache和数据和数据cache分开的方案。分开的方案。2.多层次多层次cache结构结构当芯片集成度提高后,可以将更多的电路集成在一当芯片集成度提高后,可以将更多的电路集成在一个微处理器芯片中,于是近年来新设计的快速微处个微处理器芯片中,于是近年来新设计的快速微处理芯片都将理芯片都将cache集成在片内,片内集成在片内,片内cache的读取速的读取速度要比片外度要比片外cache快得多。快得多。Pentium微处理器的逻辑微处理器的逻辑结构如图结构如图6.49所示,片内包含
35、有所示,片内包含有8KB数据数据cache和和8KB指令指令cache。cache行的长度为行的长度为32B,采取两路,采取两路组相联组织。组相联组织。数据数据cache有两个端口,分别与两个有两个端口,分别与两个ALU交换数据,交换数据,每个端口传送每个端口传送32位数据,也可组合成位数据,也可组合成64位数据,与位数据,与浮点部件接口相连,传送浮点数。数据浮点部件接口相连,传送浮点数。数据cache采取采取“写回写回”策略,即仅当策略,即仅当cache中的数据要调出,且中的数据要调出,且被修改过,才需要写回主存。被修改过,才需要写回主存。指令指令cache只读不写,其控制比数据只读不写,其
36、控制比数据cache简单。简单。片内片内cache的容量受芯片集成度的限制,一般在几的容量受芯片集成度的限制,一般在几十十KB以内,因此命中率比大容量以内,因此命中率比大容量cache低。于是推低。于是推出了二级出了二级cache方案:方案:其中第一级其中第一级cache(L1)在处理在处理器芯片内部;第二级器芯片内部;第二级cache(L2)在片外,其容量可从在片外,其容量可从几十几十KB到几百到几百KB,采用,采用SRAM存储器,两级存储器,两级cache之间一般有专用总线相连。之间一般有专用总线相连。Pentium微处理器支持微处理器支持片外的第二级片外的第二级cache,其容量为,其容
37、量为256KB或或512KB。也是采用两路组相连方案。也是采用两路组相连方案。3.cache的一致性问题的一致性问题由于数据由于数据cache有写入操作,且有多种写入方案,有写入操作,且有多种写入方案,为了提高计算机处理速度,在每次写入时,并不同为了提高计算机处理速度,在每次写入时,并不同时修改时修改L1,L2和主存储器的内容,造成了数据的和主存储器的内容,造成了数据的不一致,这就是要解决的不一致,这就是要解决的cache一致性问题。程序一致性问题。程序是不允许修改的,因此使用指令是不允许修改的,因此使用指令cache不存在不存在cache一致性问题。一致性问题。Pentium处理器支持处理器
38、支持“修改排它共享无效修改排它共享无效”(modified/exclusive/shared/invalid,简称,简称MESI)协议。它原是为多处理器系统的协议。它原是为多处理器系统的cache一致一致性设计的,但也适用于单处理机的二级性设计的,但也适用于单处理机的二级cache系统。系统。数据数据cache的每一行包含两个状态位,每一的每一行包含两个状态位,每一cache行行处于处于4种状态之一,各状态的意义如下:种状态之一,各状态的意义如下:(1)修改修改(Modified,简称,简称M)本本cache行中的数据已被修改行中的数据已被修改(与主存的内容不同与主存的内容不同),仅在本仅在本
39、cache中的数据是正确的。中的数据是正确的。(2)排它排它(Exclusive,简称,简称E)本本cache行中的数据与主存中的数据相同,但不存行中的数据与主存中的数据相同,但不存在于其他在于其他cache中。中。(3)共享共享(Shared,简称,简称S)本本cache行中的数据与主存中的数据相同,且可存行中的数据与主存中的数据相同,且可存在于其他在于其他cache中。中。(4)无效无效(Invalid,简称,简称I)本本cache行中的数据无效。行中的数据无效。当处理器加电或总清当处理器加电或总清(reset)时,所有时,所有cache行都处于行都处于无效状态。当新数据写入无效行时,数据
40、从主存取无效状态。当新数据写入无效行时,数据从主存取出,并同时存入出,并同时存入L1和和L2,此时,此时cache行处于共享状行处于共享状态。写入操作的一般过程描述如下:态。写入操作的一般过程描述如下:当处理器发出写入数据到存储器的命令时,首先查当处理器发出写入数据到存储器的命令时,首先查询询cache是否命中,如命中,则根据是否命中,如命中,则根据cache行的状态行的状态进行相应的写入数据操作,并修改进行相应的写入数据操作,并修改(或保留或保留)原状态原状态位。位。L1和和L2都设置有都设置有4种状态位,但处理方法不完种状态位,但处理方法不完全相同,情况比较复杂。全相同,情况比较复杂。7.
41、3 虚拟存储器虚拟存储器7.3.1 代数化简法代数化简法虚拟存储器指的是虚拟存储器指的是“主存主存辅存辅存”层次,它能使计层次,它能使计算机具有辅存的容量,接近于主存的速度和辅存的算机具有辅存的容量,接近于主存的速度和辅存的每位成本。使得程序员可以按比主存大得多的空间每位成本。使得程序员可以按比主存大得多的空间来编制程序,即按虚存空间编址。当然,主存实际来编制程序,即按虚存空间编址。当然,主存实际容量的大小是会影响到系统的工作效率,如果程序容量的大小是会影响到系统的工作效率,如果程序过大而主存容量过小,则程序运行速度会明显下降。过大而主存容量过小,则程序运行速度会明显下降。1.主存主存辅存层次
42、与辅存层次与cache主存层次的比较主存层次的比较这两种存储层次有许多相似之处,但也有着重要的这两种存储层次有许多相似之处,但也有着重要的区别。区别。首先,主存首先,主存cache存储器的访问存储器的访问“时间比时间比”较小;较小;每次传送的基本信息单元每次传送的基本信息单元(字块字块)也比较小。而辅存也比较小。而辅存主存的访问主存的访问“时间比时间比”就要大得多,每次传送的基就要大得多,每次传送的基本信息单元本信息单元(段或页面段或页面)也很大。也很大。从原理角度看,主存从原理角度看,主存辅存层次和辅存层次和cache主存层主存层次有很多相似之处。它们采用的地址变换及映像方次有很多相似之处。
43、它们采用的地址变换及映像方法和替换策略,从原理上看是相同的。虚拟存储系法和替换策略,从原理上看是相同的。虚拟存储系统所采取的映像方式同样有全相联映像、组相联映统所采取的映像方式同样有全相联映像、组相联映像和直接映像等,替换算法也多采用像和直接映像等,替换算法也多采用LRU算法。实算法。实际上,这些替换算法和地址映像方式最早应用于虚际上,这些替换算法和地址映像方式最早应用于虚拟存储系统中,后来才发展到拟存储系统中,后来才发展到cache系统中。系统中。2.主存主存辅存层次信息传送单位和存储管理辅存层次信息传送单位和存储管理主存主存辅存层次的信息传送单位可采用几种不同的辅存层次的信息传送单位可采用
44、几种不同的方案:方案:段、页或段页。段、页或段页。段是利用程序的模块化性质,按照程序的逻辑结构段是利用程序的模块化性质,按照程序的逻辑结构划分成的多个相对独立部分。段作为独立的逻辑单划分成的多个相对独立部分。段作为独立的逻辑单位可以被其他程序段调用,这样就形成段间连接,位可以被其他程序段调用,这样就形成段间连接,产生规模较大的程序。一般用段表来指明各段在主产生规模较大的程序。一般用段表来指明各段在主存中的位置,如图存中的位置,如图7.12所示。每段都有它的名称所示。每段都有它的名称(用用户名称或数据结构名或段号户名称或数据结构名或段号)、段起点、段长等。、段起点、段长等。段表本身也是主存储器的
45、一个可再定位段。段表本身也是主存储器的一个可再定位段。图图7.12 段式管理段式管理主存按段分配的存储管理方式称为段式管理。其优主存按段分配的存储管理方式称为段式管理。其优点是段的分界与程序的自然分界相对应;段的逻辑点是段的分界与程序的自然分界相对应;段的逻辑独立性使它易于编译、管理、修改和保护,也便于独立性使它易于编译、管理、修改和保护,也便于多道程序共享。其缺点是容易在段间留下许多空余多道程序共享。其缺点是容易在段间留下许多空余的零碎存储空间不好利用,造成浪费。的零碎存储空间不好利用,造成浪费。页式管理系统的信息传送单位是定长的页,主存的页式管理系统的信息传送单位是定长的页,主存的物理空间
46、也被划分为等长的固定区域,称为页面。物理空间也被划分为等长的固定区域,称为页面。新页调入主存也很容易掌握,只要有空白页面就可。新页调入主存也很容易掌握,只要有空白页面就可。可能造成浪费的是程序最后一页的零头,它比段式可能造成浪费的是程序最后一页的零头,它比段式管理系统的空间浪费要小得多。页式管理系统的缺管理系统的空间浪费要小得多。页式管理系统的缺点正好和段式管理系统相反,由于页不是逻辑上独点正好和段式管理系统相反,由于页不是逻辑上独立的实体,所以处理、保护和共享都不及段式来得立的实体,所以处理、保护和共享都不及段式来得方便。方便。图图7.13表示某个程序有表示某个程序有5页页(逻辑页号逻辑页号
47、04),各页分,各页分别装入主存不连续的页面位置,用页表记录逻辑页别装入主存不连续的页面位置,用页表记录逻辑页号及其所对应的实主存页号,页表是由操作系统建号及其所对应的实主存页号,页表是由操作系统建立的。图立的。图7.13中逻辑页号中逻辑页号0,1,3已分配实主存空间已分配实主存空间,所以装入位为,所以装入位为1。段式和页式存储管理各有其优缺点,可以采用段和段式和页式存储管理各有其优缺点,可以采用段和页结合的段页式存储管理系统。程序按模块分段,页结合的段页式存储管理系统。程序按模块分段,段内再分页,出入主存仍以页为信息传送单位,用段内再分页,出入主存仍以页为信息传送单位,用段表和页表段表和页表
48、(每段一个页表每段一个页表)进行两级管理。进行两级管理。图图7.13 页式管理页式管理7.3.2 页式虚拟存储器页式虚拟存储器 在页式虚拟存储系统中,把虚拟空间分成页,主存在页式虚拟存储系统中,把虚拟空间分成页,主存空间也分成同样大小的页,称为实页或物理页,而空间也分成同样大小的页,称为实页或物理页,而把前者称为虚页或逻辑页。假设虚页号为把前者称为虚页或逻辑页。假设虚页号为0,1,2,m,实页号为,实页号为0,1,l,显然有,显然有ml。由。由于页的大小都取于页的大小都取2的整数幂个字,所以,页的起点的整数幂个字,所以,页的起点都落在低位字段为零的地址上。可把虚拟地址分为都落在低位字段为零的地
49、址上。可把虚拟地址分为两个字段,高位字段为虚页号,低位字段为页内字两个字段,高位字段为虚页号,低位字段为页内字地址。地址。虚拟地址到主存实地址的变换是由页表来实现的。虚拟地址到主存实地址的变换是由页表来实现的。在页表中,对应每一个虚存页号有一个表目,表目在页表中,对应每一个虚存页号有一个表目,表目内容至少要包含该虚页所在的主存页面地址内容至少要包含该虚页所在的主存页面地址(页面页面号号),用它作为实,用它作为实(主主)存地址的高字段;与虚拟地址存地址的高字段;与虚拟地址的字地址字段相拼接,就产生完整的实主存地址,的字地址字段相拼接,就产生完整的实主存地址,据此访问主存。页式管理的地址变换如图据
50、此访问主存。页式管理的地址变换如图7.14所示。所示。图图7.14 页式虚拟存储器结构页式虚拟存储器结构通常,在页表的表项中还包括装入位通常,在页表的表项中还包括装入位(有效位有效位)、修、修改位、替换控制位及其他保护位等组成的控制字。改位、替换控制位及其他保护位等组成的控制字。如装入位为如装入位为“1”,表示该虚页已从辅存调入主存;,表示该虚页已从辅存调入主存;如装入位为如装入位为“0”,则表示对应的虚页尚未调入主存,则表示对应的虚页尚未调入主存,如访问该页就要产生页面失效中断,启动输入输出如访问该页就要产生页面失效中断,启动输入输出子系统,根据外页表项目中查得的辅存地址,由磁子系统,根据外