c/c++语言开发共享当程序将受益于预取和非临时加载/存储?

我做了一个测试

for (i32 i = 0; i < 0x800000; ++i) { // Hopefully this can disable hardware prefetch i32 k = (i * 997 & 0x7FFFFF) * 0x40; _mm_prefetch(data + ((i + 1) * 997 & 0x7FFFFF) * 0x40, _MM_HINT_NTA); for (i32 j = 0; j < 0x40; j += 0x10) { //__m128 v = _mm_castsi128_ps(_mm_stream_load_si128((__m128i *)(data + k + j))); __m128 v = _mm_load_ps((float *)(data + k + j)); a_single_chain_computation //_mm_stream_ps((float *)(data2 + k + j), v); _mm_store_ps((float *)(data2 + k + j), v); } } 

结果很奇怪。

    你需要在这里分开两个不同的东西(不幸的是有类似的免费精选名字大全):

    关于你的问题 –

    如果您的计算链非常短,并且如果您按顺序读取内存,那么CPU将自行预取并实际工作得更快,因为它的解码器工作量较少。

    仅当您不打算在不久的将来访问此内存时,流加载和存储才有用。 它们主要针对处理图形表面时通常会发现的未缓存的回写(WB)内存。 显式预处理可以在一个体系结构(CPU模型)上很好地工作,并对其他模型产生负面影响,因此在优化时将它们用作最后​​的选择。

    需要了解更多c/c++开发分享当程序将受益于预取和非临时加载/存储?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享当程序将受益于预取和非临时加载/存储?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979199.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐