文章目录
cache预取技术技术
1.cache提升性能原理
cache对于大多数程序员是透明的,cache之所以对性能有提升,主要体现在:
- 时间局部性:程序即将使用的数据,和当前的正在使用的数据有重叠,比如for循环中会重复使用相同的变量。所以将当前正在使用的数据,缓存在cache中一段时间,可以提升运行性能。
- 空间局部性:程序即将使用的数据,和当前的数据可能在空间上是连续的,比如遍历数组,那么将相邻内存区域的数据进行cache缓存,能够提升运行性能。
2.硬件预取和软件预取
cache就是预测数据并将数据缓存到cache中。cahce预取包括:
- 硬件预取:在程序访问数据出现一定规律,且硬件预取单元捕捉到这种规律,就会触发cache预取。
- 软件预取:硬件预取单元捕捉的规律如果和程序实际的规律不一致,反而会出现性能下降的情况,比如为了cache不需要的数据,替换了需要的数据。为了实现软件对cache的控制,一些处理增加了预取指令,如下表:
| PREFETCH0 | 将数据放在每一级缓存 |
|---|---|
| PREFETCH1 | 将数据放在L1之外的每一级缓存 |
| PREFETCH2 | 将数据放在L1、L2之外的每一级缓存 |
| PREFETCHNTA | 和PREFETCH0功能类似,区别在于数据使用一次之后,就可以被淘汰了 |
如果软件cache使用不当,会造成cache区填充了大量没用数据,反而导致程序性能下降,因此软件cache不应频繁使用,只

最低0.47元/天 解锁文章
1805

被折叠的 条评论
为什么被折叠?



