计算机组成原理第5章5.1存储系统的组成5.2主存储器的组织5.3半导体随机存储器和只读存储器5.4主存储器的连接与控制5.5提高主存读写速度的技术5.6多体交叉存储技术5.7高速缓冲存储器5.8虚拟存储器计算机组成原理存储层次1.主-辅存存储层次:问题:计算机主存容量相对于程序员所需要的容量来说总是太小,程序与数据从辅存调入主存如果由程序员自己安排的,程序员必须花费很大精力和时间把大程序预先分成块,确定好这些程序块在辅存中的位置和装入主存的地址,而且还要预先安排好程序运行时各块如何和何时调入调出,因此存在存储空间的分配问题。好在操作系统的形成和发展使得程序员尽可能摆脱主、辅存之间的地址定位,同时形成了支持这些功能的“辅助硬件”,通过软件、硬件的结合,把主存和辅存统一成了一个整体,如图所示。这时,由主存、辅存形成了一个存储层次,即存储系统。从整体看,其速度接近于主存的速度,其容量则接近于辅存的容量,每位的平均价格也接近于廉价的慢速的辅存平均价格。这种系统不断发展和完善,就逐步形成了现在广泛使用的虚拟存储系统。在系统中,应用程序员可用机器指令地址码对整个程序统一编址,如同程序员具有对应这个地址码宽度的全部虚存空间一样。该空间可以比主存实际空间大得多,以致可以存得下整个程序。这种指令地址码称为虚地址(虚存地址、虚拟地址)或逻辑地址,其对应的存储容量称为虚存容量或虚存空间;而把实际主存的地址称为物理地址、实(存)地址,其对应的存储容量称为主存容量、实存容量或实(主)存空间计算机组成原理计算机组成原理2.CACHE-主存存储层次当用虚地址访问主存时,机器自动地把它经辅助软件、硬件变换成主存实地址。查看这个地址所对应的单元内容是否已经装入主存,如果在主存就进行访问,如果不在主存内就经辅助软件、硬件把它所在的那块程序和数据由辅存调入主存,而后进行访问。这些操作都不必由程序员来安排,也就是说,对应用程员员是透明的。主-辅存层次解决了存储器大容量要求和低成本之间的矛盾。在速度方面,计算机的主存和CPU间保持了大约一个数量级的差距。显然这个差距限制了CPU速度潜力的发挥。为了弥合这个差距,仅采用一种工艺的单一存储器是行不通的,必须进一步从计算机系统结构和组织上去研究。设置高速缓冲存储器(Cache)是解决存取速度的重要方法。在CPU和主存中间设置高速缓冲存储器,构成高速缓存(Cache)-主存层次,要求Cache在速度上能跟得上CPU的要求。Cache-主存间的地址映象和调度吸取了比它较早出现的主-辅存存储层次的技术,不同的是因其速度要求高,不是由软、硬件结合而完全由硬件来实现,如图所示。计算机组成原理计算机组成原理1.程序的局部性原理程序的局部性包括:时间局部性和空间局部性。时间局部性是指如果一个存储单元被访问,则可能该单元会很快被再次访问。这是因为程序存在着循环。空间局部性是指如果一个存储单元被访问,则该单元邻近的单元也可能很快被访问。这是因为程序中大部分指令是顺序存储、顺序执行的,数据一般也是以向量、数组、树、表等形式簇聚地存储在一起的。5.7.1高速存储工作原理计算机组成原理5.7高速缓冲存储器高速缓冲技术就是利用程序的局部性原理,把程序中正在使用的部分存放在一个高速的容量较小的Cache中,使CPU的访存操作大多数针对Cache进行,从而使程序的执行速度大大提高。2.Cache的基本结构Cache和主存都被分成若干个大小相等的块,每块由若干字节组成。由于Cache的容量远小于主存的容量,它保存的信息只是主存中最活跃的若干块的副本。计算机组成原理高速缓冲存储器是存在于主存与CPU之间的一级存储器,由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多,接近于CPU的速度。主要由三大部分组成:Cache存储体:存放由主存调入的指令与数据块。地址转换部件:建立目录表以实现主存地址到缓存地址的转换。替换部件:在缓存已满时按一定策略进行数据块替换,并修改地址转换部件。Cache的结构计算机组成原理计算机组成原理Cache的工作原理高速缓冲存储器通常由高速存储器、联想存储器、替换逻辑电路和相应的控制线路组成。在有高速缓冲存储器的计算机系统中,中央处理器存取主存储器的地址划分为行号、列号和组内地址三个字段。于是,主存储器就在逻辑上划分为若干行;每行划分为若干的存储单元组;每组包含几个或几十个字。高速存储器也相应地划分为行和列的存储单元组。二者的列数相同,组的大小也相同,但高速存储器的行数却比主存储器的行数少得多。联想存储器用于地址联想,有与高速存储器相同行数和列数的存储单元。当主存储器某一列某一行存储单元组调入高速存储器同一列某一空着的存储单元组时,与联想存储器对应位置的存储单元就记录调入的存储单元组在主存储器中的行号。计算机组成原理当中央处理器存取主存储器时,硬件首先自动对存取地址的列号字段进行译码,以便将联想存储器该列的全部行号与存取主存储器地址的行号字段进行比较:若有相同的,表明要存取的主存储器单元已在高速存储器中,称为命中,硬件就将存取主存储器的地址映射为高速存储器的地址并执行存取操作;若都不相同,表明该单元不在高速存储器中,称为脱靶,硬件将执行存取主存储器操作并自动将该单元所在的那一主存储器单元组调入高速存储器相同列中空着的存储单元组中,同时将该组在主存储器中的行号存入联想存储器对应位置的单元内。计算机组成原理当出现脱靶而高速存储器对应列中没有空的位置时,便淘汰该列中的某一组以腾出位置存放新调入的组,这称为替换。确定替换的规则叫替换算法,常用的替换算法有:最近最少使用算法(LRU)、先进先出法(FIFO)、随机法(RAND)等。替换逻辑电路就是执行这个功能的。另外,当执行写主存储器操作时,为保持主存储器和高速存储器内容的一致性,对命中和脱靶须分别处理。计算机组成原理5.7高速缓冲存储器5.7.2Cache的读写操作1.Cache的读操作如果Cache命中,就直接对Cache进行读操作,与主存无关;如果Cache不命中,则仍需访问主存,并把该块信息一次从主存调入Cache内。2.Cache的写操作如果Cache命中,需要进行一定的写处理,处理的方法有:写直达法和写回法,计算机组成原理Cache更新策略为了解决Cache与主存不一致的问题,Cache必须更新。选择合适的更新策略计算机组成原理·目的:维护Cache、主存数据的一致性。·主要方式:3.写一次法:上述两种方法的结合,主要用于多个Cache数据不一致的维护,具体策略可参考体系结构的相关内容。Cache更新策略计算机组成原理从CPU发出的写信号送Cache的同时也写入主存。CPUCache主存1、通写法计算机组成原理数据一般只写到Cache,当Cache中的数据被再次更新时,将原更新的数据写入主存相应单元,并接受新的数据。CPUCache主存更新写入2、回写法计算机组成原理3、写一次法写一次法与回写法的写策略基本相同,写一次法只是在第一次写命中时要同时写入主存。这是因为CPU第一次写Cache命中时,CPU要在总线上启动一个存储器写周期,其他Cache监听到此主存块地址及写信号后,即把他们各自保存的主存块该保存到主存中就拷贝,该作废的就作无效处理,以便维护全部Cache与主存的一致性。然后CPU对Cache的写命中则按照回写法的策略对待,这可以节省CPU的总线周期,有利于超标量流水线的进程,有利于提高系统的运行速度计算机组成原理5.7高速缓冲存储器5.7.3地址映象地址映象是指某一数据在内存中的地址与在缓冲中的地址,两者之间的对应关系。下面介绍三种地址映象的方式。1.全相联映像地址映象规则:主存的任意一块可以映象到Cache中的任意一块(1)主存与缓存分成相同大小的数据块。(2)主存的某一数据块可以装入缓存的任意一块空间中。计算机组成原理计算机组成原理计算机组成原理如果Cache的块数为Cb,主存的块数为Mb,则映象关系共有Cb×Mb种。目录表存放在相关(联)存储器中,其中包括三部分:数据块在主存的块地址、存入缓存后的块地址、及有效位(也称装入位)。由于是全相联方式,因此,目录表的容量应当与缓存的块数相同。优点:灵活,命中率比较高,Cache的块冲突概率最低,Cache存储空间利用率高。缺点:访问相关存储器时,每次都要与全部内容比较,速度低,成本高,实现苦难,因而应用少。计算机组成原理例:设访问存储器地址的块号序列为22、26、22、26、16、4、16、18,采用全相联映射方式时,Cache行分配情况计算机组成原理5.7高速缓冲存储器2.直接映像地址映象规则:主存储器中一块只能映象到Cache的一个特定的块中。若这个位置已有内容,则产生块冲突,原来的块将无条件地被替换出去。(1)主存与缓存分成相同大小的数据块。(2)主存容量应是缓存容量的整数倍,将主存空间按缓存的容量分成区,主存中每一区的块数与缓存的总块数相等。(3)主存中某区的一块存入缓存时只能存入缓存中块号相同的位置。计算机组成原理某一主存块只能能映射到Cache的特定行i=jmodm其中:i:Cache的行号;j:主存的块号;m:Cache的总行数计算机组成原理直接映射方式计算机组成原理计算机组成原理计算机组成原理主存中各区内相同块号的数据块都可以分别调入缓存中块号相同的地址中,但同时只能有一个区的块存入缓存。由于主、缓存块号相同,因此,目录登记时,只记录调入块的区号即可。主、缓存块号及块内地址两个字段完全相同。目录表存放在高速小容量存储器中,其中包括二部分:数据块在主存的区号和有效位。目录表的容量与缓存的块数相同。优点:地址映象方式简单,数据访问时,只需检查区号是否相等即可,因而可以得到比较快的访问速度,硬件设备简单。缺点:替换操作频繁,命中率比较低。计算机组成原理5.7高速缓冲存储器3.组相联映像方式组相联的映象规则:(1)主存和Cache按同样大小划分成块。(2)主存和Cache按同样大小划分成组。(3)主存容量是缓存容量的整数倍,将主存空间按缓冲区的大小分成区,主存中每一区的组数与缓存的组数相同。(4)当主存的数据调入缓存时,主存与缓存的组号应相等,也就是各区中的某一块只能存入缓存的同组号的空间内,但组内各块地址之间则可以任意存放,即从主存的组到Cache的组之间采用直接映象方式;在两个对应的组内部采用全相联映象方式。组相联映像将Cache空间分成大小相同的组,让主存中的一块直接映像装入Cache中对应组的任何一块位置上,即组间采取直接映像,而组内采取全相联映像。计算机组成原理计算机组成原理计算机组成原理例1:设Cache有8个行,分成2个组,设访问存储器地址的块号序列为22、26、22、26、16、4、16、18,采用组相联映射方式时,Cache行分配情况计算机组成原理主存地址与缓存地址的转换有两部分,组地址是按直接映象方式,按地址进行访问,而块地址是采用全相联方式,按内容访问。组相联的地址转换部件也是采用相关存储器实现。优点:块的冲突概率比较低,块的利用率大幅度提高,块失效率明显降低。缺点:实现难度和造价要比直接映象方式高。计算机组成原理比较:计算机组成原理CPU在任一时刻从高速缓冲中直接可靠获取数据的几率。命中率越高,直接获取数据的可靠性就越大。高速缓冲空间与主存空间在一定范围内保持适当比例的映射关系,可以使高速缓冲的命中率相当高。一般情况,高速缓冲与内存的空间比为4:1000即128kB高速缓冲可映射32MB内存256kB高速缓冲可映射64MB内存在这种情况下,命中率都在90%以上命中率:计算机组成原理1.随机算法2.近期最少使用(LRU)算法3.先进先出(FIFO)算法三种替换策略(算法)计算机组成原理PC机的Cache技术的实现1.单/多级Cache刚开始Cache是单级的;后来发展后大多使用多级Cache(增加Cache的级数,将统一的Cache变成分开的Cache)80386以前的Cache都是外部的;L1:容量几十KB;速度与CPU相当;L2:容量256KB~2MB;速度与主板