【问题标题】:SSE 4 memory load optimizationsSSE 4 内存负载优化
【发布时间】:2016-09-27 03:51:38
【问题描述】:

当使用 SSE 指令/内在函数时,比如对于 256 位寄存器,是否有人能够通过在下一个 32 字节块上使用预取指令或其他一些技术来减少从内存加载扩展寄存器所花费的时间?假设要加载的数据已经在内存中正确对齐。

【问题讨论】:

  • x86 已经能够做到这一点 - 如果您正在获取一组特定的完全有序的项目(在逻辑内存中),那么这些数据可能会在 mov
  • 标题中的“4”是“for”这个词的简写吗?您似乎不是在谈论 SSE4 的 MOVNTDQA 加载指令,或者与 SSE4 相关的任何其他内容。 (256b 向量是 AVX 功能)。
  • 我故意含糊其辞,因为我们仍在讨论需要特定指令集的商业影响。因此,我的问题更像是询问有关使用宽寄存器减少内存延迟的一般准则。我应该更清楚。

标签: intel sse


【解决方案1】:

有关 x86 CPU 性能的更多信息,请参阅 标签 wiki。硬件预取器非常擅长锁定顺序访问模式,因此您通常不需要软件预取指令。

通常,将宽向量加载并将其解压缩到单独的整数寄存器中并不是一个胜利。一旦你触及了一个高速缓存行,更多的负载就会很便宜,从一级高速缓存到寄存器的吞吐量通常不是问题。使用 ALU 指令将 256b 负载解压缩为单独的 32 或 64b 整数只需要更多指令,这意味着您更有可能成为 ALU 吞吐量的瓶颈。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 2011-12-16
    • 1970-01-01
    相关资源
    最近更新 更多