《ComputerArchitecture》计算机学院Cache性能评价提高Cache性能Cache性能本章内容Cache存储系统《ComputerArchitecture》计算机学院Cache性能评价本章内容Cache存储系统Cache性能CPU执行时间平均存储器访问时间(AMAT)《ComputerArchitecture》计算机学院CPU执行时间本章内容Cache存储系统Cache性能Cache性能评价其中:时钟周期时间存储器停顿周期数时钟周期数执行时间)CPU(CPU缺失代价缺失率指令存储器访问次数指令数缺失代价指令缺失次数指令数缺失代价缺失次数存储器停顿周期数3之1《ComputerArchitecture》计算机学院例子本章内容Cache存储系统Cache性能Cache性能评价问:假定有一台计算机,当所有存储器访问操作都能在Cache中命中时,CPI为1.0;数据访问只有load和store指令,这些指令占全部指令的50%;缺失代价为25个时钟周期,缺失率为2%。问当所有指令都在Cache中命中时,计算机性能能提高多少?答:Cache始终命中时的计算机性能为:时钟周期指令数时钟周期指令数时钟周期存储器停顿周期数时钟周期数执行时间理想0.1)0CPI()CPU(CPU3之2《ComputerArchitecture》计算机学院例子(续)本章内容Cache存储系统Cache性能Cache性能评价时钟周期指令数时钟周期指令数指令数时钟周期存储器停顿周期数时钟周期数执行时间实际75.1)2502.0)5.01(CPI()CPU(CPU实际Cache的计算机性能为:两者的性能比为:结论:不发生Cache缺失时计算机性能是原来的1.75倍75.10.175.1CPUCPU时钟周期指令数时钟周期指令数执行时间执行时间理想实际3之3《ComputerArchitecture》计算机学院平均存储器访问时间(AMAT)本章内容Cache存储系统Cache性能Cache性能评价3之1缺失代价缺失率命中时间主存T)H1(THAMATCache《ComputerArchitecture》计算机学院例子本章内容Cache存储系统Cache性能Cache性能评价问:一个由8KB的I-Cache和8KB的D-Cache所构成的分立Cache(哈佛结构)与一个16KB的统一Cache哪一个具有更低的缺失率?假设命中所需的开销为1个时钟周期,不命中的开销为50个时钟周期,统一Cache的load或store命中需花费1个时钟周期的额外开销。75%的存储器存取是指令访问。Cache大小I-Cache缺失率D-Cache缺失率统一Cache缺失率4KB1.78%15.94%7.24%8KB1.10%10.19%4.57%16KB0.64%6.47%2.87%32KB0.39%4.82%1.99%3之2《ComputerArchitecture》计算机学院答:分立Cache的整体缺失率为:由表中可知,16KB的统一Cache的缺失率为2.87%。因此,统一Cache结构具有较低的缺失率。尽管分立Cache具有较高的缺失率,但其AMAT与统一Cache的AMAT是基本相同的,可见哈佛结构有优势。大多数现代处理器都采用分立Cache技术。例子(续)本章内容Cache存储系统Cache性能Cache性能评价3.37%10.19%)(25%1.10%)(75%2.68650)10.19%(125%50)1.10%(175%AMATsplit2.68550)2.87%1(125%50)2.87%(175%AMATunified3之3《ComputerArchitecture》计算机学院提高Cache性能本章内容Cache存储系统Cache性能缺失代价缺失率命中时间主存T)H1(THAMATCache可见主要途径有:降低缺失代价降低缺失率通过并行性降低缺失代价/缺失率降低Cache命中时间《ComputerArchitecture》计算机学院降低缺失代价本章内容Cache存储系统Cache性能提高Cache性能多级Cache关键字优先和提前重启动给出读缺失对写的优先级合并写缓冲区牺牲者Cache《ComputerArchitecture》计算机学院多级Cache本章内容Cache存储系统Cache性能提高Cache性能降低缺失代价基本思想性能分析设计考虑《ComputerArchitecture》计算机学院基本思想本章内容Cache存储系统Cache性能提高Cache性能降低缺失代价多级Cache通过在原始Cache和存储器之间增加另一级Cache,第一级Cache可以小到足以跟上飞快的CPU,而第二级Cache能够大到足以捕捉到对主存进行的大多数访问,因而可以减少有效缺失代价。《ComputerArchitecture》计算机学院性能分析本章内容Cache存储系统Cache性能提高Cache性能降低缺失代价多级Cache局部缺失率本级Cache的缺失数除以对本级Cache的存储器访问总数。例如:第一级Cache的局部缺失率为缺失率L1,第二级Cache的局部缺失率为缺失率L2全局缺失率本级Cache的缺失数除以CPU产生的存储器访问总数。例如:第一级Cache的全局缺失率为缺失率L1,第二级Cache的全局缺失率为缺失率L1×缺失率L2。)缺失代价缺失率(命中时间缺失率命中时间缺失代价缺失率命中时间2L2L2L1L1L1L1L1LAMAT《ComputerArchitecture》计算机学院设计考虑本章内容Cache存储系统Cache性能提高Cache性能降低缺失代价多级Cache第二级Cache的容量?采用大容量设计。因为第一级Cache中的所有信息都可能会出现在第二级Cache中,所以第二级Cache应该比第一级Cache大得多。如果第二级Cache只是稍微大一点,则局部缺失率会很高。第二级Cache采用组相联映射还是直接映射?采用组相联映射比采用直接映射性能要好。2之1《ComputerArchitecture》计算机学院设计考虑本章内容Cache存储系统Cache性能提高Cache性能降低缺失代价多级Cache2之2是否第一级Cache中所有数据都包含在第二级Cache中?有两种方案:多级包含L1中的数据通常都出现在L2中。这是通常做法。多级排除L1中的数据从不会出现在L2中。当L2Cache容量略大于L1Cache时可以采用此法,不浪费L2Cache的空间。《ComputerArchitecture》计算机学院关键字优先和提前重启动思想因为CPU在同一时刻只需要块中的一个字,所以本技术不必等到全部块装入就可以将所需字送出,然后重新启动CPU。方法关键字优先首先向存储器请求缺失的字,一旦它到了就将它发送到CPU中;让CPU继续执行,同时装入块中的其他字。本章内容Cache存储系统Cache性能提高Cache性能降低缺失代价提前重启动按正常次序获取字,只要被请求的字一到达就将它发送到CPU中,让CPU继续执行。2之1《ComputerArchitecture》计算机学院局限性本技术的收益取决于块的大小(块越大,收益越大)和对块中未装入部分的访问可能性。本章内容Cache存储系统Cache性能提高Cache性能降低缺失代价2之2《ComputerArchitecture》计算机学院给出读缺失对写的优先级本章内容Cache存储系统Cache性能提高Cache性能降低缺失代价问题对于一个写直达的Cache,需要设置容量适中的写缓冲区(见后图)。然而写缓冲区使得存储器访问变的复杂,因为其中可能包含读缺失时所需要的更新数据。SWR3,512(R0);M[512]←R3(CacheIndex0)LWR1,1024(R0);R1←M[1024](CacheIndex0)LWR2,512(R0);R2←M[512](CacheIndex0)3之1《ComputerArchitecture》计算机学院给出读缺失对写的优先级本章内容Cache存储系统Cache性能提高Cache性能降低缺失代价writebufferCPUinoutDRAM(orlowermem)3之2《ComputerArchitecture》计算机学院给出读缺失对写的优先级本章内容Cache存储系统Cache性能提高Cache性能降低缺失代价解决最简单的解决方法:读缺失等待,直到写缓冲区为空为止;但该方法会增加读缺失代价。另一种解决方法:在读缺失时查看写缓冲区中的内容,如果没有冲突而且存储器系统可以访问,就让读缺失继续;即:使读缺失优先于写缺失。3之3在写回法的Cache中,在替换块时也要使用一个简单的写缓冲,同样处理。《ComputerArchitecture》计算机学院合并写缓冲区本章内容Cache存储系统Cache性能提高Cache性能降低缺失代价思想在写缓冲区中,将多个连续的数据组合起来,加快存储器的写速度。《ComputerArchitecture》计算机学院牺牲者Cache本章内容Cache存储系统Cache性能提高Cache性能降低缺失代价思想在Cache和它的替换路径之间增加一个小的、全相联的Cache(牺牲者Cache),这个牺牲者Cache中只包含Cache中因为缺失而被替换出的块(牺牲者),然后在缺失发生时,在要访问下层存储器之前,先检查牺牲者Cache,看其中是否包含有期望的数据,如果有,则牺牲块与Cache块互换(见后图)。性能依赖于特定的程序,一个包含4个存储字的牺牲者Cache能减少20%~90%的冲突缺失。2之1《ComputerArchitecture》计算机学院牺牲者Cache本章内容Cache存储系统Cache性能提高Cache性能降低缺失代价2之2《ComputerArchitecture》计算机学院降低缺失率本章内容Cache存储系统Cache性能提高Cache性能导致缺失的原因降低缺失率的技术增加块容量增加Cache容量增加相联度路预测和伪相联Cache编译优化《ComputerArchitecture》计算机学院导致缺失的原因本章内容Cache存储系统Cache性能提高Cache性能降低缺失率强制(Compulsory)缺失对一个块的第一次访问一定不在Cache中,所以该块必须被调入到Cache中(这也称为:冷启动缺失、首次访问缺失等)。容量(Capacity)缺失如果Cache容纳不了一个程序持续执行所需要的所有块,将会发生容量缺失,某些块将被放弃,随后再被调入。冲突(Conflict)缺失如果采用组相联/直接相联,则可能有多个块映射到同一块中,发生冲突缺失。4之1《ComputerArchitecture》计算机学院3Cs总缺失率SPEC92;32Bblocks;LRU;DECstation5000;本章内容Cache存储系统Cache性能提高Cache性能降低缺失率4之2MissRateperType0.020.040.060.080.10.120.14CacheSize(KB)01248163264128CompulsoryCapacity4-way2-way1-way8-wayConflict《ComputerArc