4月
20
気になったので測定してみました。
ここに置かれている PDF を見るとレイテンシとスループットが載っているのですが、たまに俄かには信じがたい数値が書いてあったりします。もやっとするので必要な分だけ自分で測定することにしました。
結果は以下の通り。ハイフンの前がレイテンシで後がスループット(1クロックに何命令発行できるか)の逆数。どちらも数値が大きいほど「遅い」ことになります。
命令 | Conroe | Penryn | Nehalem | Sandy |
---|---|---|---|---|
PS[LR]LDQ | 2-1 | 1-1 | 1-0.5 | 1-0.5 |
PALIGNR | 2-1 | 1-1 | 1-1 | 1-1 |
PSHUFB | 3-2 | 1-1 | 1-0.5 | 1-0.5 |
PUNPCK[LH]{BW,WD,DQ} | 4-2 | 1-1 | 1-0.5 | 1-0.5 |
PUNPCK[LH]QDQ | 1-1 | 1-1 | 1-0.5 | 1-0.5 |
PACK{USWB,SSWB,SSDW} | 4-2 | 1-1 | 1-0.5 | 1-0.5 |
PACKUSDW | N/A | 1-1 | 1-0.5 | 1-0.5 |
PBLENDVB | N/A | 2-2 | 2-1 ※ | 2-1 ※ |
Conroe: Core 2 Quad Q6600 (Kentsfield)
Penryn: Core 2 Duo E8200 (Wolfdale)
Nehalem: Core i3-380M (Arrandale なので厳密には Westmere)
Sandy: Core i7-2600K
※ ただし、デスティネーションオペランドが確定してからのレイテンシだけは 2 ではなく 1 になる。
ここから分かることは、
- Conroe はかなり遅いが、Penryn になって劇的に高速化された。便利な命令は高速化されやすい。
- PS[LR]LDQ はちゃんと 1-0.5 まで高速化されているのに、PALIGNR は 1-1 まで。惜しい。
- Nehalem/Sandy の PBLENDVB の挙動を見ると内部処理が透けてくる。
こんなところでしょうか。
なんでこんなもの調べているのかというとそれはもうお察しの通りです。
SSE のシャッフル関係命令のベンチマーク(Haswell 対応版)
Intel 最適化マニュアルを見ると、Haswell ではシャッフル関係命令が遅くなっているようです。せっかく AVX2 で SIMD-int が 256bit 幅で使えるようになったのに遅くなったのでは意味が無いので…