对于大多数说明,在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的命令更快?
答案 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个时钟会占用其执行单元 许多循环阻止指令需要执行单元 从被执行。只有在完成指令后才能执行 执行单元可以进入下一条指令。