
Cache基本知识存储空间分割与地址计算.ppt
45页5.2 Cache基本知识1.存储空间分割与地址计算 2/465.2.1 映象规则1. 全相联映象 全相联:主存中的任一块可以被放置到全相联:主存中的任一块可以被放置到CacheCache中的任意一个位置中的任意一个位置举例举例对比:对比:阅览室位置阅览室位置────随便坐随便坐特点:特点:空间利用率最高,冲突概率最低,空间利用率最高,冲突概率最低,实现最复杂实现最复杂2.Cache和主存分块5.2 Cache 基本知识4/462. 直接映象◆ 直接映象:主存中的每一块只能被放置到直接映象:主存中的每一块只能被放置到 CacheCache中唯一的一个位置中唯一的一个位置 举例举例((循环分配循环分配) )◆ 对比:阅览室位置对比:阅览室位置────只有一个位置可只有一个位置可以坐以坐◆ 特点:空间利用率最低,冲突概率最高,特点:空间利用率最低,冲突概率最高, 实现最简单。
实现最简单◆ 对于主存的第对于主存的第ii块,若它映象到块,若它映象到CacheCache的第的第 jj块,则块,则: :j j==i imod(mod(MM))((M M为为CacheCache的块数)的块数)5.2 Cache 基本知识6/46◆ 组相联:主存中的每一块可以被放置到组相联:主存中的每一块可以被放置到CacheCache中唯一的一个组中的任何一个位置中唯一的一个组中的任何一个位置举例举例◆ 组相联是直接映象和全相联的一种折衷组相联是直接映象和全相联的一种折衷◆ 设设M M==2 2m m,则当表示为二进制数时,,则当表示为二进制数时,jj实际实际 上就是上就是ii的低的低mm位:位:3. 组相联映象m位位ji::5.2 Cache 基本知识8/46◆ 上述的上述的j j 和和k k 通常称为索引通常称为索引◆ 组的选择常采用位选择算法组的选择常采用位选择算法若主存第若主存第ii块映象到第块映象到第kk组,则组,则: :k k==iimodmod((G G)) ((G G为为CacheCache的组数)的组数) 设设G G==2 2g g,则当表示为二进制数时,,则当表示为二进制数时,kk实实际上就是际上就是ii的低的低 gg位:位:g 位位ki::5.2 Cache 基本知识9/46◆ 绝大多数计算机的绝大多数计算机的Cache:Cache:nn≤4≤4 想一想:相联度一定是越大越好?想一想:相联度一定是越大越好?◆ nn路组相联:每组中有路组相联:每组中有nn个块个块( (n n==M M/ /GG) )nn称为相联度。
称为相联度相联度越高,相联度越高,CacheCache空间的利用率就越高,空间的利用率就越高, 块冲突概率就越低,失效率也就越低块冲突概率就越低,失效率也就越低 全相联全相联直接映象直接映象 组相联 组相联n n ( (路数路数) )G G ( (组数组数) )M MM M1 11 11 1<<n n<<M M1 1<<G G<<M M5.2 Cache 基本知识10/465.2.2 查找方法1. 如何确定Cache中是否有所要访问的块? 若有的话如何确定其位置?若有的话如何确定其位置?答案答案5.2 Cache 基本知识◆ 目录表的结构目录表的结构◆ 只需查找候选位置所对应的目录表项只需查找候选位置所对应的目录表项◆ 并行查找与顺序查找并行查找与顺序查找14/46◆ 提高性能的重要思想:主候选位置提高性能的重要思想:主候选位置(MRU(MRU块块))前瞻执行前瞻执行15/46◆ 并行查找的实现方法:并行查找的实现方法:5.2 Cache 基本知识举例:举例: 4路组相联并行标识比较4路组相联并行标识比较(比较器的个数及位数)(比较器的个数及位数)l 相联存储器相联存储器l 单体多字存储器+比较器单体多字存储器+比较器◆ 4路组相联4路组相联CacheCache的查找过程的查找过程◆ 直接映象直接映象CacheCache的查找过程的查找过程19/465.2.3 替换算法所要解决的问题:当新调入一块,而所要解决的问题:当新调入一块,而CacheCache又已被占满时,替换哪一块?又已被占满时,替换哪一块?2. FIFO3. LRU优点:失效率低优点:失效率低LRULRU和随机法的失效率的比较和随机法的失效率的比较1. 随机法优点:实现简单优点:实现简单5.2 Cache 基本知识20/4621/465.2.4 写策略1. “写”操作所占的比例LoadLoad指令:指令:2626%%StoreStore指令:指令:9 9%%““写写””在所有访存操作中所占的比例:在所有访存操作中所占的比例:99%%/(100/(100%+%+2626%+%+9 9%%)≈7)≈7%%““写写””在访问在访问CacheCache操作中所占的比例:操作中所占的比例:99%%/(26/(26%+%+9 9%%)≈25)≈25%%3.“写”访问有可能导致Cache和主存内容的不一致2. “写”操作必须在确认是命中后才可进行5.2 Cache 基本知识22/464.两种写策略 ◆ 写直达法写直达法执行执行““写写””操作时,不仅写入操作时,不仅写入CacheCache,而且,而且也写入下一级存储器。
也写入下一级存储器 ◆写回法写回法执行执行““写写””操作时,只写入操作时,只写入CacheCache仅当CacheCache中相应的块被替换时,才写回主存中相应的块被替换时,才写回主存((设置设置““污染位污染位”)”)5.2 Cache 基本知识23/465 5.两种写策略的比较.两种写策略的比较 ◆ 写回法的优点:速度快,所使用的存储器频写回法的优点:速度快,所使用的存储器频 带较低;带较低; ◆ 写直达法的优点:易于实现,一致性好写直达法的优点:易于实现,一致性好24/466. 写缓冲器8. 写策略与调块 写回法写回法────按写分配按写分配写直达法写直达法────不按写分配不按写分配7. “写”操作时的调块 ◆ 按写分配按写分配( (写时取写时取) )写失效时,先把所写单元所在的块调入写失效时,先把所写单元所在的块调入CacheCache,再行写入。
再行写入 ◆ 不按写分配不按写分配( (绕写法绕写法) )写失效时,直接写入下一级存储器而不调块写失效时,直接写入下一级存储器而不调块5.2 Cache 基本知识25/465.2.5 Cache的结构例子:例子:DECDEC的的AlphaAXP21064AlphaAXP21064中的内部数据中的内部数据CacheCache1. 简介 容量:容量:8KB8KB块大小:块大小:32B32B块数:块数:256256采用不按写分配采用不按写分配映象方法:直接映象映象方法:直接映象““写写””策略:写直达策略:写直达写缓冲器大小:写缓冲器大小:4 4个块个块5.2 Cache 基本知识2. 结构图3. 工作过程◆““读读””访问命中访问命中◆““写写””访问命中访问命中29/465. 混合Cache与分离Cache(1)(1)优缺点优缺点(2)(2)失效率的比较失效率的比较5.2 Cache 基本知识◆ 失效情况下的操作失效情况下的操作30/4616 KB16 KB容 量容 量1 KB1 KB2 KB2 KB4 KB4 KB8 KB8 KB32 KB32 KB指令指令 Cache3.06%失失 效效 率率 的的 比比 较较64 KB64 KB128 KB128 KB数据数据 Cache混合混合 Cache2.26%1.78%1.10%0.64%0.39%0.15%0.02%24.61%20.57%15.94%10.19%6.47%4.82%3.77%2.88%13.34%9.78%7.24%4.57%2.87%1.99%1.36%0.95%31/46(3)(3)分离分离CacheCache平均失效率的计算:平均失效率的计算:访问指令访问指令CacheCache的百分比的百分比××指令指令CacheCache的失效率的失效率+访问数据+访问数据CacheCache的百分比的百分比××数据数据CacheCache的失效率的失效率5.2.6 Cache性能分析2. 平均访问时间 平均访问时间=命中时间+失效率平均访问时间=命中时间+失效率××失效开销失效开销1. 失效率32/46例例5.15.1 假设假设CacheCache的命中时间为的命中时间为1 1个时钟周期,失效个时钟周期,失效开销为开销为5050个时钟周期,在混合个时钟周期,在混合CacheCache中一次中一次loadload或或storestore操作访问操作访问CacheCache的命中时间都要增加一个的命中时间都要增加一个时钟周期时钟周期( (因为混合因为混合CacheCache只有一个端口,无法同只有一个端口,无法同时满足两个请求。
按照前一章中有关流水线的术时满足两个请求按照前一章中有关流水线的术语,混合语,混合CacheCache会导致结构冲突会导致结构冲突) ),根据表,根据表5 5--4 4所所列的失效率,试问指令列的失效率,试问指令CacheCache和数据和数据CacheCache容量均容量均为为16KB16KB的分离的分离CacheCache和容量为和容量为32KB32KB的混合的混合CacheCache相相5.2 Cache 基本知识33/46解:解: 如前所述,约如前所述,约75%75%的访存为取指令因此,的访存为取指令因此,分离分离CacheCache的总体失效率为:的总体失效率为:(75%×0.64%)(75%×0.64%)++(25%×6.47%)(25%×6.47%)==2.10%2.10%根据表根据表5 5--4 4,容量为,容量为32KB32KB的混合的混合CacheCache的失的失效率略低一些,只有效率略低一些,只有1.99%.1.99%.比,哪种比,哪种CacheCache的失效率更低?又假设采用写直达的失效率更低?又假设采用写直达策略,且有一个写缓冲器,并且忽略写缓冲器引策略,且有一个写缓冲器,并且忽略写缓冲器引起的等待。
请问上述两种情况下平均访存时间各起的等待请问上述两种情况下平均访存时间各是多少?是多少?5.2 Cache 基本知识34/46平均访存时间公式可以分为指令访问和数据平均访存时间公式可以分为指令访问和数据访问两部分:访问两部分:平均访存时间=指令所占的百分比平均访存时间=指令所占的百分比××((指令命中时间+指令失效率指令命中时间+指令失效率××失效开销失效开销) )++数据所占的百分比数据所占的百分比××((数据命中时间+数据失效率数据命中时间+数据失效率××失效开销失效开销) )所以,两种结构的平均访存时间分别为:所以,两种结构的平均访存时间分别为:平均访存时间平均访存时间分离分离==75%×(175%×(1++0.64%×50)0.64%×50)++25%×(125%×(1++6.47%×50)6.47%×50)==(75%×1.32)(75%×1.32)++(25%×4.325)(25%×4.325)==0.9900.990++1.0591.059==2.052.055.2 Cache 基本知识35/46平均访存时间平均访存时间混合混合==75%×(175%×(1++1.99%×50)1.99%×50)++25%×(125%×(1++1 1++1.99%×50)1.99%×50)==(75%×1.995)(75%×1.995)++(25%×2.995)(25%×2.995)==1.4961.496++0.7490.749==2.242.243. 程序执行时间 CPUCPU时间=时间=(CPU(CPU执行周期数+存储器停顿周期数执行周期数+存储器停顿周期数) )××时钟周期时间时钟周期时间其中,其中,存储器停顿周期数=访存次数存储器停顿周期数=访存次数××失效率失效率××失效开销失效开销5.2 Cache 基本知识36/46CPUCPU时间=时间=IC×IC×[CPIexeCPIexe+每条指令的平均存储+每条指令的平均存储器停顿周期数器停顿周期数]××时钟周期时间时钟周期时间CPUCPU时间=时间=IC×IC×[CPIexeCPIexe+访存次数+访存次数/ /指令数指令数××失效率失效率××失效开销失效开销]××时钟周期时间时钟周期时间5.2 Cache 基本知识37/46例例5.25.2我们用一个和我们用一个和AlphaAXPAlphaAXP类似的机器作为类似的机器作为第一个例子。
假设第一个例子假设CacheCache失效开销为失效开销为5050个时钟个时钟周期,当不考虑存储器停顿时,所有指令的周期,当不考虑存储器停顿时,所有指令的执行时间都是执行时间都是2.02.0个时钟周期,个时钟周期,CacheCache的失效的失效率为率为2%2%,平均每条指令访存,平均每条指令访存1.331.33次试分析次试分析CacheCache对性能的影响对性能的影响38/46考虑考虑CacheCache的失效后,性能为:的失效后,性能为:CPUCPU时间时间有有cachecache==ICIC×(2.0×(2.0++(1.33×2%×50))(1.33×2%×50))××时钟周期时间时钟周期时间==ICIC×3.33××3.33×时钟周期时间时钟周期时间CPUCPU时间=时间=ICIC×(×(CPICPIexeexe++────────)────────)××时钟周期时间时钟周期时间存储器停顿周期数存储器停顿周期数指令数指令数解:解:5.2 Cache 基本知识实际实际CPICPI::3.333.333.33/2.0=1.67(3.33/2.0=1.67(倍倍) )39/46CPUCPU时间也增加为原来的时间也增加为原来的1.671.67倍。
但若不倍但若不采用采用Cache,Cache,则:则:CPICPI==2.0+50×1.332.0+50×1.33==68.568.55.2 Cache 基本知识40/46考虑两种不同组织结构的考虑两种不同组织结构的CacheCache:直接映象:直接映象CacheCache和两路组相联和两路组相联CacheCache,试问它们对,试问它们对CPUCPU的性的性能有何影响?先求平均访存时间,然后再计算能有何影响?先求平均访存时间,然后再计算CPUCPU性能分析时请用以下假设:性能分析时请用以下假设:⑴⑴理想理想Cache(Cache(命中率为命中率为100100%%) )情况下的情况下的CPICPI为为2.02.0,时钟周期为,时钟周期为2ns2ns,平均每条指令,平均每条指令访存访存1.31.3次⑵⑵两种两种CacheCache容量均为容量均为64KB64KB,块大小都是,块大小都是3232字节例例5.35.35.2 Cache 基本知识41/46⑶⑶图图5.105.10说明,在组相联说明,在组相联CacheCache中,我们必须增中,我们必须增加一个多路选择器,用于根据标识匹配结果加一个多路选择器,用于根据标识匹配结果从相应组的块中选择所需的数据。
因为从相应组的块中选择所需的数据因为CPUCPU的速度直接与的速度直接与CacheCache命中的速度紧密相关命中的速度紧密相关, ,所所以对于组相联以对于组相联CacheCache,由于多路选择器的存,由于多路选择器的存在而使在而使CPUCPU的时钟周期增加到原来的的时钟周期增加到原来的1.101.10倍 ⑷⑷这两种结构这两种结构CacheCache的失效开销都是的失效开销都是70ns70ns在实际应用中,应取整为整数个时钟周期实际应用中,应取整为整数个时钟周期 ⑸⑸命中时间为命中时间为1 1个时钟周期,个时钟周期,64KB64KB直接映象直接映象CacheCache的失效率为的失效率为1.4%1.4%,相同容量的两路组,相同容量的两路组相联相联CacheCache的失效率为的失效率为1.0%1.0%5.2 Cache 基本知识42/4643/46由由: :平均访存时间=命中时间+失效率平均访存时间=命中时间+失效率××失效开销失效开销得得: :平均访存时间平均访存时间1 1路路==2.02.0++(0.014×70)(0.014×70)==2.98ns2.98ns平均访存时间平均访存时间2 2路路==2.0×1.102.0×1.10++(0.010×70)(0.010×70)==2.90ns2.90ns由由: :CPUCPU时间=时间=ICIC×(×(CPICPIexeexe+每条指令的平均存储器+每条指令的平均存储器停顿周期数停顿周期数)×)×时钟周期时间时钟周期时间==ICIC×(×(CPICPIexeexe××时钟周期时间+时钟周期时间+每条指令的平均存储器停顿时间每条指令的平均存储器停顿时间) )解:解:5.2 Cache 基本知识44/46CPUCPU时间时间1 1路路==IC×(2.0×2IC×(2.0×2++(1.3×0.014×70))(1.3×0.014×70))==5.27×IC5.27×ICCPUCPU时间时间2 2路路==IC×(2.0×2×1.10IC×(2.0×2×1.10++(1.3×0.010×70))(1.3×0.010×70))==5.31×IC5.31×IC得:得:5.31×IC5.31×ICCPUCPU时间时间1 1路路──────────==──────────==1.011.015.27×IC5.27×ICCPUCPU时间时间2 2路路5.2 Cache 基本知识45/46平均访存时间=命中时间+失效率平均访存时间=命中时间+失效率××失效开销失效开销可以从三个方面改进可以从三个方面改进CacheCache的性能:的性能:(1)(1)降低失效率降低失效率(2)(2)减少失效开销减少失效开销(3)(3)减少减少CacheCache命中时间命中时间下面介绍下面介绍1515种种CacheCache优化技术优化技术5.2.7 改进Cache性能5.2 Cache 基本知识。












