优化不是你想像-2:主动内存预取技术
2007-08-21 10:18
633 查看
在优化memcpy之前,还需要先了解一下和缓存预取有关的资料:
和缓存预取有关的指令:
操作码 指令 Description
0F 18 /1 PREFETCHT0 m8 预取数据到所有级别的缓存,包括L0。
0F 18 /2 PREFETCHT1 m8 预取数据到除L0外所有级别的缓存。
0F 18 /3 PREFETCHT2 m8 预取数据到除L0和L1外所有级别的缓存。
0F 18 /0 PREFETCHNTA m8 预取数据到非临时缓冲结构中,可以最小化对缓存的污染。
Intel® C++ Compiler的Intrinsic等效方法:
void _mm_prefetch(char *p, int i)
从地址P处预取尺寸为cache line大小的数据缓存,参数i指示预取方式(_MM_HINT_T0, _MM_HINT_T1, _MM_HINT_T2, _MM_HINT_NTA,分别表示不同的预取方式)
如果在CPU操作数据之前,我们就已经将数据主动加载到缓存中,那么就减少了由于缓存不命中,需要从内存取数的情况,这样就可以加速操作,获得性能上提升。使用主动缓存技术来优化内存拷贝,理论上应该能够提高性能,看来值得一试。
注意,CPU对数据操作拥有绝对自由!使用预取指令只是按我们自己的想法对CPU的数据操作进行补充,有可能CPU当前并不需要我们加载到缓存的数据,这样,我们的预取指令可能会带来相反的结果,比如对于多任务系统,有可能我们冲掉了有用的缓存。不过,在多任务系统上,由于线程或进程的切换所花费的时间相对于预取操作来说太长了,简直好象一个世纪,所以可以忽略线程或进程切换对缓存预取的影响。
和缓存预取有关的指令:
操作码 指令 Description
0F 18 /1 PREFETCHT0 m8 预取数据到所有级别的缓存,包括L0。
0F 18 /2 PREFETCHT1 m8 预取数据到除L0外所有级别的缓存。
0F 18 /3 PREFETCHT2 m8 预取数据到除L0和L1外所有级别的缓存。
0F 18 /0 PREFETCHNTA m8 预取数据到非临时缓冲结构中,可以最小化对缓存的污染。
Intel® C++ Compiler的Intrinsic等效方法:
void _mm_prefetch(char *p, int i)
从地址P处预取尺寸为cache line大小的数据缓存,参数i指示预取方式(_MM_HINT_T0, _MM_HINT_T1, _MM_HINT_T2, _MM_HINT_NTA,分别表示不同的预取方式)
如果在CPU操作数据之前,我们就已经将数据主动加载到缓存中,那么就减少了由于缓存不命中,需要从内存取数的情况,这样就可以加速操作,获得性能上提升。使用主动缓存技术来优化内存拷贝,理论上应该能够提高性能,看来值得一试。
注意,CPU对数据操作拥有绝对自由!使用预取指令只是按我们自己的想法对CPU的数据操作进行补充,有可能CPU当前并不需要我们加载到缓存的数据,这样,我们的预取指令可能会带来相反的结果,比如对于多任务系统,有可能我们冲掉了有用的缓存。不过,在多任务系统上,由于线程或进程的切换所花费的时间相对于预取操作来说太长了,简直好象一个世纪,所以可以忽略线程或进程切换对缓存预取的影响。
相关文章推荐
- Android之优化技术--android GC内存泄露问题
- 使用预取技术优化网站性能
- C++ Primer 学习笔记_99_特殊工具与技术 --优化内存分配[续1]
- .C++ primer第二次阅读学习笔记(第18章:特殊工具与技术:优化内存分配)
- mysql在高内存、IO利用率上的几个优化点 (sync+fsync) 猎豹移动技术博客
- hdu_2647_拓扑排序_邻接表或者vector_优化内存_拓扑+贪心_用的是拓扑思想_并不是拓扑
- C++ Primer 学习笔记_99_非一般工具与技术 -优化内存分配[续1]
- 35、C++ Primer 4th笔记,特殊工具与技术,优化内存分配(2)
- 使用预取技术优化网站
- 技术积累 — Keil 查看内存占用/优化代码
- C++ Primer 学习笔记_100_特殊工具与技术 优化内存分配[续2]
- 如何优化内存?Unity中的内存种类;冯乐乐的总结的优化技术。
- kvm 优化特性:ksm技术,大页内存等
- CPU、内存、IO虚拟化关键技术及其优化探索
- Android进阶#(6/12)让程序更优的技术——性能优化_内存泄漏
- 优化不是你想像-1:开始
- Android优化技术详解-第五章 Android内存系统(笔记)
- Flash 平台技术的优化(二) 节省内存
- 使用预取技术优化网站
- 优化不是你想像-3:三种不同的方式