【问题标题】:SSE FPU parallelSSE FPU 并行
【发布时间】:2013-05-09 13:59:36
【问题描述】:

我想知道是否可以将 SSE 与 x87 并行使用。所以考虑下面的伪代码,

1: sse_insn 2:x87_insn

假设它们可以并行执行,管道是否会并行执行 1 和 2?

【问题讨论】:

  • 去试试吧。进行测量。报告结果。

标签: c++ c assembly sse x87


【解决方案1】:

在所有现代(和更早的)处理器中,x87 和 SSE 指令使用相同的执行单元,因此您不太可能从此类代码中受益匪浅。可能存在非常特殊的情况,您可以诱使处理器运行,例如 x87 除法与 SSE 添加并行,或类似的东西,但如果您只是执行类似操作的大循环,几乎可以肯定没有任何好处.

【讨论】:

  • 所以有可能(我的目标处理器是新一代 i7,而不是 p3,所以我可以安全地使用 sse 对 x87 寄存器进行变异)?
  • 您不太可能从中受益,就像我的回答所说的那样(不太可能在大写字母中强调)。换句话说,一旦指令被充分解码,它就是相同的管道,无论是 x87 还是 SSE 指令 - 是的,有单独的寄存器,但任何 FPU 指令不太可能受到寄存器依赖性的限制,这样你就可以从中受益。
  • 如果我要量化一些数据(提前)会怎样。理论上我可以将 ALU 与 x87/sse 并行使用吗?
  • 是的,大多数 SSE/x87 指令将与大多数非 FPU 指令并行运行。处理器对此有相当多的“前瞻”——我认为 AMD 处理器至少有 32 条(RISC)指令可以前瞻,所以再一次,重新排列代码可能不会带来巨大的好处。
  • 我认为关键不是管道而是超标量架构。 i7 有 6 个端口,可以同时进行 1 个 AVX 加法和 1 个 AVX 乘法。那么同时做x87和SSE应该没问题吧?
猜你喜欢
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 1970-01-01
  • 2017-05-08
  • 2017-10-20
  • 1970-01-01
  • 2013-10-29
相关资源
最近更新 更多