赞
踩
三种类型的不命中(3C)
强制性不命中(Compulsory miss)
容量不命中(Capacity miss )
冲突不命中(Conflict miss)
规则
相联度越高,冲突不命中就越少;
强制性不命中和容量不命中不受相联度的影响;
强制性不命中不受Cache容量的影响,但容量不命中却随着容量的增加而减少。
减少三种不命中的方法
优化策略一:增加 Cache 块大小
优化策略二:增加Cache的容量
最直接的方法是增加Cache的容量
缺点:
这种方法在片外Cache中用得比较多
优化策略三:提高相联度
优化策略四:伪相联 Cache,列相联 Cache
多路组相联的低不命中率和直接映像的命中速度
伪相联 Cache 优缺点
基本思想及工作原理
快速命中与慢命中
优化策略五:硬件预取
优化策略六:编译器控制的预取
在编译时加入预取指令,在数据被用到之前发出预取请求。
按照预取数据所放的位置,可把预取分为两种类型:
按照预取的处理方式不同,可把预取分为:
在预取数据的同时,处理器应能继续执行。
编译器控制预取的目的
每次预取需要花费一条指令的开销
优化策略七:编译器优化
基本思想:通过对软件进行优化来降低不命中率。(特色:无需对硬件做任何改动)
程序代码和数据重组
可以重新组织程序而不影响程序的正确性
把一个程序中的过程重新排序,就可能会减少冲突不命中,从而降低指令不命中率。
把基本块对齐,使得程序的入口点与Cache块的起始位置对齐,就可以减少顺序代码执行时所发生的Cache不命中的可能性。(提高大Cache块的效率)
如果编译器知道一个分支指令很可能会成功转移,那么它就可以通过以下两步来改善空间局部性:
数据对存储位置的限制更少,更便于调整顺序。
优化策略八:“牺牲”Cache
一种能减少冲突不命中次数而又不影响时钟频率的方法。
基本思想(类似多级 cache 的思想,但是更小)
作用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。