
高性能计算机系统结构_高速缓存.pdf
65页1 高性能计算机系统结构 胡伟武胡伟武 2 高速缓存(Cache) • 存储层次的基本概念存储层次的基本概念 • Cache结构结构 • Cache性能优化性能优化 • 常见处理器的存储层次常见处理器的存储层次 3 存储层次的基本概念 4 CPU与RAM的速度剪刀差 • 摩尔定律摩尔定律 • CPU的频率和的频率和RAM的容量每的容量每18个月翻一番个月翻一番 • 但但RAM的速度增加缓慢的速度增加缓慢 • 通过存储层次来弥补差距通过存储层次来弥补差距 • 寄存器、寄存器、Cache、存储器、、存储器、IO 5 处理器和内存速度剪刀差 • 早期早期Alpha处理器处理器Cache失效延迟失效延迟 • 1st Alpha (7000): 340 ns/5.0 ns = 68 clks x 2 or 136 • 2nd Alpha (8400): 266 ns/3.3 ns = 80 clks x 4 or 320 • 3rd Alpha (t.b.d.): 180 ns/1.7 ns =108 clks x 6 or 648 • 当前主流处理器主频当前主流处理器主频2GHz以上以上 • IBM Power 6主频主频6GHz以上以上 • 内存延迟内存延迟50ns左右左右 • 访存延迟访存延迟>100拍拍 • 多发射加剧了访存瓶颈多发射加剧了访存瓶颈 6 摩尔定律使CPU的内容发生了变化 • 冯诺依曼结构的核心思想冯诺依曼结构的核心思想 • 存储程序:指令和数据都存放在存储器中存储程序:指令和数据都存放在存储器中 • 计算机的五个组成部分计算机的五个组成部分 • 运算器、控制器、存储器、输入、输出运算器、控制器、存储器、输入、输出 • 运算器和控制器合称中央处理器(运算器和控制器合称中央处理器(CPU)) • 为了缓解存储瓶颈,把部分存储器做在片内为了缓解存储瓶颈,把部分存储器做在片内 • 现在的现在的CPU芯片:控制器芯片:控制器+运算器运算器+部分存储器部分存储器 • 片内片内Cache占了整个芯片的很大一部分面积占了整个芯片的很大一部分面积 7 外存储器内存储器输出役备输入设备运算器控制器外存储器 输入设备 输出设备 控制器 运算器 数据线数据线 控制线控制线 CPU 计算机硬件系统的组成 内存 Cache 8 CPU中RAM的面积和晶体管比例 CPUCPU名称名称 片内片内RAMRAM面积面积 片内片内RAMRAM晶体管晶体管 Alpha 21164 37% 77% StrongArm SA110 61% 94% Pentium Pro 64% 88% 龙芯3A 31% 80% 9 存储层次基本原理 • 程序访问的局部性:时间局部性和空间局部性程序访问的局部性:时间局部性和空间局部性 • 新型的应用(如媒体)对传统的局部性提出了挑战新型的应用(如媒体)对传统的局部性提出了挑战 • 越小越简单的硬件越快越小越简单的硬件越快 • 越快的硬件越昂贵越快的硬件越昂贵 存储层次存储层次大小大小访问时间访问时间 数据调度数据调度 调度单位调度单位实现技术实现技术 寄存器寄存器100GB5ms人工人工文件文件磁盘磁盘10 Cache结构 11 Cache的结构 • Cache的特征的特征 • Cache的内容是主存储器内容的一个子集的内容是主存储器内容的一个子集 • Cache没有没有程序上的意义,只是为了降低访存延迟程序上的意义,只是为了降低访存延迟 • 处理器访问处理器访问Cache和访问存储器使用相同的地址和访问存储器使用相同的地址 • Cache的结构特点的结构特点 • 同时存储数据和地址同时存储数据和地址 • 通过地址的比较判断相应数据是否在通过地址的比较判断相应数据是否在Cache中中 • 需要考虑所需要的数据不在需要考虑所需要的数据不在Cache中的情况中的情况 • 替换机制,写策略等替换机制,写策略等 StateTagDataCPU读写请求 Cache返回数据 Cache访存请求 内存返回数据 处理器处理器 存储器存储器 12 Cache的类型 • Cache块的位置块的位置 • 全相联(全相联(Fully Associative)) • 组相联(组相联( Set Associative)) • 直接相联(直接相联( Direct Mapped)) • Cache失效时的替换机制失效时的替换机制? • 随机替换随机替换, LRU, FIFO • 写策略写策略 • 写命中策略:写回(写命中策略:写回(Write Back))vs. 写穿透(写穿透( Write Through)) • 写失效策略:写分配(写失效策略:写分配(Write Allocate))vs. 写不分配写不分配 ((Write Non-allocate)) 13 全相联、直接相联、组相联 • 同一单元在不同同一单元在不同 结构结构Cache中的位中的位 置置 • 直接相联直接相联 • 全相联全相联 • 组相联组相联 0 1 2 3 4 5 6 70 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 310 1 2 3 4 5 6 70 1 2 3 4 5 6 7(a)直接相联 (b)全相联 (c)组相联 内存 14 全相联 • 命中率高命中率高 • 硬件复杂、延迟大硬件复杂、延迟大 state tag data C C C C C C C C Tag Offset Mux + hit data … 15 state tag data C Tag Offset Mux Index hit data 直接相联 • 硬件简单、延迟最小硬件简单、延迟最小 • 命中率低命中率低 16 data tag state Tag Offset Index C hit Mux state tag data Mux C Mux data + Tag Tag hit0 hit1 data1 data0 组相联 • 介于全相联和直接相联之间介于全相联和直接相联之间 17 Cache替换算法 • 对直接相联对直接相联Cache不存在替换算法问题不存在替换算法问题 • 常见的替换算法常见的替换算法 • 随机替换:随机替换: • LRU:: • FIFO:: • 每每1000条指令失效次数统计条指令失效次数统计 • SPEC CPU2000中的中的gap, gcc, gzip, mcf, perl, applu, art, equake, lucas, swim 10个程序个程序 • Aplha结构,块大小结构,块大小64KB 2-way 4-way 8-way LRU Rand FIFO LRU Rand FIFO LRU Rand FIFO 16KB 114.1 117.3 115.5 111.7 115.1 113.3 109.0 111.8 110.4 64KB 103.4 104.3 103.9 102.4 102.3 103.1 99.7 100.5 100.3 256KB 92.2 92.1 92.5 92.1 92.1 92.5 92.1 92.1 92.5 18 写命中时采取的策略 • 写穿透(写穿透(Write Through)) • 写写Cache的同时写内存的同时写内存 • 内存里的数据永远是最新的,内存里的数据永远是最新的,Cache替换时直接扔掉替换时直接扔掉 • Cache块管理简单,只需有效位块管理简单,只需有效位 • 写回(写回(Write-back)) • 只写只写Cache不写内存不写内存 • 替换时要把替换时要把Cache块写回内存块写回内存 • Cache块状态复杂一些,需要有效位和脏位块状态复杂一些,需要有效位和脏位 • 写回写回/写穿透的使用写穿透的使用 • L1到到L2用写穿透的多,用写穿透的多,L2较快较快 • L2到内存用写回的多,内存太慢了到内存用写回的多,内存太慢了 • 龙芯龙芯2号两级都采用写回策略。
号两级都采用写回策略 19 写失效时采取的策略 • 写分配(写分配( Write Allocate )) • 先把失效块读到先把失效块读到Cache,再在,再在Cache中写中写 • 一般用在写命中时采用写回策略的一般用在写命中时采用写回策略的Cache中中 • 写不分配(写不分配(Write Non-allocate)) • 写写Cache失效时直接写进内存失效时直接写进内存 • 一般用在写命中时采用写穿透的一般用在写命中时采用写穿透的Cache中中 20 Cache性能优化 21 Cache性能分析 • CPU执行时间与访存延迟的关系执行时间与访存延迟的关系 • AMAT = Average Memory Access Time • CPIALUOps 不包括访存指令不包括访存指令 CycleTimeAMATInstMemAccessCPIInstAluOpsICCPUtimeAluOps yMissPenaltMissRateHitTimeAMAT DataDataDataInstInstInst yMissPenaltMissRateHitTimeyMissPenaltMissRateHitTime 22 Cache性能优化 • 降低失效率(降低失效率(MissRate)) • 降低失效延迟(降低失效延迟(MissPenalty)) • 降低命中延迟(降低命中延迟(HitTime)) • 提高提高Cache访问并行性访问并行性 yMissPenaltMissRateHitTimeAMAT CycleTimeAMATInstMemAccessCPIInstAluOpsICCPUtimeAluOps 23 降低失效率 • 增加块大小增加块大小 • 增加增加Cache容量容量 • 增加相联数目增加相联数目 • 路预测(路预测(Way Prediction)) • 软件优化软件优化 24 引起Cache失效的因素(3C/4C) • 冷失效(冷失效(Cold Miss或或Compulsory Miss)) • CPU第一次访问第一次访问Cache块时块时Cache中还没有该中还没有该Cache块引起的失效块引起的失效 • 冷失效是不可避免的,即使冷失效是不可避免的,即使Cache容量再大也会有容量再大也会有 • 容量失效(容量失效(Capacity Miss)) • 程序执行过程中,有限的程序执行过程中,有限的Cache容量导致容量导致Cache放不下时替换出部分放不下时替换出部分 Cache块,被替换的块,被替换的Cache块再被访问时引起失效块再被访问时引起失效 • 一定容量下全相联一定容量下全相联Cache中的失效中的失效 • 冲突失效(冲突失效(Conflict Miss)) • 直接相联或组相联直接相联或组相联Cache中,不同中,不同Cache块由于块由于index相同引起冲突相同引起冲突 • 在全相联在全相联Cache不存在不存在 • 一致性失效(一致性失效(Coherence Miss)) • 由于维护由于维护Cache一致性引起的失效一致性引起的失效 25 Cache Size (KB) Miss Rate per Type 0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 1 2 4 8 16 32 64 128 1-way 2-way 。
