SIMD延迟吞吐量

时间:2015-02-15 23:02:41

标签: c++ sse simd

对于大多数说明,在Intel Intrisics Guide上,它还具有延迟和吞吐量的值。例如:

__ m128i _mm_min_epi32

Performance
Architecture Latency Throughput
Haswell      1       0.5
Ivy Bridge   1       0.5
Sandy Bridge 1       0.5
Westmere     1       1
Nehalem      1       1

这些数字究竟是什么意思?我认为较慢的延迟意味着命令执行时间较长,但Nehalem的吞吐量1和常春藤的0.5,意味着Nehalem的命令更快?

2 个答案:

答案 0 :(得分:12)

"延迟"对于指令,执行一条指令需要多少个时钟周期(指令完成需要多长时间。

通常吞吐量是每个时钟周期的指令数,但这里吞吐量是每个独立指令开始的时钟周期数 - 所以0.5个时钟周期意味着可以在一个时钟周期内发出2条指令,结果就绪在下一个时钟周期。

英特尔在此处记录: https://software.intel.com/en-us/articles/measuring-instruction-latency-and-throughput

答案 1 :(得分:4)

以下是英特尔页面Measuring Instruction Latency and Throughput的引用。

  

延迟和吞吐量

     

延迟是指令所需的处理器时钟数   使其数据可供另一条指令使用。因此,   具有6个时钟延迟的指令将具有其数据   可用于另一条指令,它启动后的许多时钟   执行。

     

吞吐量是一个处理器时钟的数量   执行或执行其计算的指令。一条指令   吞吐量为2个时钟会占用其执行单元   许多循环阻止指令需要执行单元   从被执行。只有在完成指令后才能执行   执行单元可以进入下一条指令。