【发布时间】:2016-11-17 03:49:40
【问题描述】:
我想了解更多关于_mm_lddqu_si128intrinsic(自SSE3 以来的lddqu 指令)与_mm_loadu_si128 内在(自SSE2 以来的movdqu 指令)相比的信息。
我今天才发现_mm_lddqu_si128。英特尔内在指南说
当数据跨越缓存线边界时,此内在函数可能比 _mm_loadu_si128 执行得更好
在某些情况下会表现得更好,但绝不会表现得更差。
那么为什么没有更多地使用它(SSE3 是一个相当低的标准,因为所有 Core2 处理器都有它)?为什么当数据通过高速缓存行时性能会更好? lddqu 仅在某些处理器子集上可能更好。例如。在尼哈勒姆之前?
我意识到我可以通过阅读英特尔手册找到答案,但我认为这个问题可能对其他人来说很有趣。
【问题讨论】:
-
我都试过了,没有发现性能差异(在 Core i7 2600 上试过)
-
@Rotem 可能只有在 Nehalem 之前更好(即在具有 SSE3 和 SSSE3 但没有 SSE4.1 的系统上)但这只是一个猜测。
-
“我意识到我可以通过阅读英特尔手册找到答案,但我认为其他人可能会对此问题感兴趣。” 我赞成这个问题,但请让我们不要在这里讨论主题......
-
@harold:不,只有 Prescott P4,不是 Merom。
-
不是完全重复,但我对新问题的回答涵盖了这一点以及更多内容。它们应该以某种方式联系在一起,我认为重复的作品。 (我可以用指向另一个的链接来编辑它们。)有趣的是,大约 1.5 年后,我最终写了关于 AVX 256b 版本的几乎相同的答案。
标签: x86 sse intrinsics