モノトーンの伝説日記

Apex Legends, Splatoon, Programming, and so on...

SSE (SIMD) レイテンシー/スループット メモ

 使ってるやつから軽くピックアップ。Intel Core 2 から Skylake アーキテクチャーまで一覧として見れるものがなかったので作成。cpuid は未掲載のものもあるかも。不正確な情報や,追加して欲しいものがあったら連絡くれれば随時追加します。

 Sandy Bridge が一つの大きな境目とみなせると思いますし,その前後で別実装を用意するのもアリかもしれません。それ以前だと MMX の方が早いとかもあるかも。

 以下のページの4番の PDF を引くことを推奨。AMD, Intel, VIA の CPU に関するものが全てまとめてあります。

www.agner.org

1. SSE

1.1 _mm_add/sub_ps (ADD/SUBPS)

レイテンシースループット
Yonah (06_0E)
Conroe, Allendale, Merom (06_0F)31
Wolfdale, Penryn, Yorkfield (06_17)
Nehalem (06_1A, 06_1E, 06_1F, 06_2E)
Westmere (06_25, 06_2C, 06_2F?)
Sandy Bridge (06_2A, 06_2D)
Ivy Bridge (06_3A, 06_3E)
Haswell (06_3C, 06_45, 06_46, 06_3F)
Broadwell (06_3D, 06_47, 06_56)
Skylake (06_4E, 06_5E)40.5
Bulldozer5-60.5
Piledriver
Steamroller5-61
Excavator
Bobcat31
Jaguar
Ryzen30.5

1.2 _mm_mul_ps (MULPS)

レイテンシースループット
Conroe, Allendale, Merom (06_0F)41
Wolfdale, Penryn, Yorkfield (06_17)
Nehalem (06_1A, 06_1E, 06_1F, 06_2E)
Westmere (06_25, 06_2C, 06_2F?)
Sandy Bridge (06_2A, 06_2D)51
Ivy Bridge (06_3A, 06_3E)
Haswell (06_3C, 06_45, 06_46, 06_3F)50.5
Broadwell (06_3D, 06_47, 06_56)30.5
Skylake (06_4E, 06_5E)40.5
Bulldozer5-60.5
Piledriver
Steamroller
Excavator50.5
Bobcat22
Jaguar42
Ryzen30.5

1.3 _mm_div_ps (DIVPS)

 最新アーキテクチャーだと Newton Raphson による逆数より DIV 使った方が早いかもですね。ただ,実質 AVX が使える環境になるので,Sandy Bridge を境目にするなら VEX エンコーディングで書き出す環境向けコードとそうでないコードで分けると綺麗な気がします。

レイテンシースループット
Conroe, Allendale, Merom (06_0F)< 21< 16
Wolfdale, Penryn, Yorkfield (06_17)< 21< 14
Nehalem (06_1A, 06_1E, 06_1F, 06_2E)< 16< 12
Westmere (06_25, 06_2C, 06_2F?)
Sandy Bridge (06_2A, 06_2D)1414
Ivy Bridge (06_3A, 06_3E)10-1414 (6)
Haswell (06_3C, 06_45, 06_46, 06_3F)< 136
Broadwell (06_3D, 06_47, 06_56)< 113
Skylake (06_4E, 06_5E)113
Bulldozer9-244.5-9.5
Piledriver9-275-10
Steamroller9-174-6
Excavator8-224-8
Bobcat3838
Jaguar1919
Ryzen103

1.4 _mm_min/max_ps (MIN/MAXPS)

 Intel は ADD/SUB と同じ

レイテンシースループット
Conroe, Allendale, Merom (06_0F)31
Wolfdale, Penryn, Yorkfield (06_17)
Nehalem (06_1A, 06_1E, 06_1F, 06_2E)
Westmere (06_25, 06_2C, 06_2F?)
Sandy Bridge (06_2A, 06_2D)
Ivy Bridge (06_3A, 06_3E)
Haswell (06_3C, 06_45, 06_46, 06_3F)
Broadwell (06_3D, 06_47, 06_56)
Skylake (06_4E, 06_5E)40.5
Bulldozer20.5
Piledriver
Steamroller
Excavator
Bobcat22
Jaguar21
Ryzen10.5

1.5 _mm_andnot/and/or_ps (ANDN/AND/OR)

レイテンシースループット
Conroe, Allendale, Merom (06_0F)11
OR: 0.33
Wolfdale, Penryn, Yorkfield (06_17)10.33
Nehalem (06_1A, 06_1E, 06_1F, 06_2E)
Westmere (06_25, 06_2C, 06_2F?)
Sandy Bridge (06_2A, 06_2D)11
Ivy Bridge (06_3A, 06_3E)
Haswell (06_3C, 06_45, 06_46, 06_3F)
Broadwell (06_3D, 06_47, 06_56)
Skylake (06_4E, 06_5E)10.33
Bulldozer20.5
Piledriver
Steamroller
Excavator
Bobcat11
Jaguar10.5
Ryzen10.25

1.6 _mm_xor_ps (XOR)

 AMD は ANDN/AND/OR に同じ。

レイテンシースループット
Conroe, Allendale, Merom (06_0F)10.33
Wolfdale, Penryn, Yorkfield (06_17)
Nehalem (06_1A, 06_1E, 06_1F, 06_2E)
Westmere (06_25, 06_2C, 06_2F?)
Sandy Bridge (06_2A, 06_2D)
Ivy Bridge (06_3A, 06_3E)11
Haswell (06_3C, 06_45, 06_46, 06_3F)
Broadwell (06_3D, 06_47, 06_56)
Skylake (06_4E, 06_5E)
Bulldozer20.5
Piledriver
Steamroller
Excavator
Bobcat11
Jaguar10.5
Ryzen10.25

1.7 _mm_sqrt_ps (SQRTPS)

レイテンシースループット
Conroe, Allendale, Merom (06_0F)< 32< 27
Wolfdale, Penryn, Yorkfield (06_17)< 21< 14
Nehalem (06_1A, 06_1E, 06_1F, 06_2E)< 20< 16
Westmere (06_25, 06_2C, 06_2F?)
Sandy Bridge (06_2A, 06_2D)1414
Ivy Bridge (06_3A, 06_3E)1414 (7)
Haswell (06_3C, 06_45, 06_46, 06_3F)137
Broadwell (06_3D, 06_47, 06_56)
Skylake (06_4E, 06_5E)
Bulldozer14-154.5-12
Piledriver13-155-12
Steamroller12-134-9
Excavator134
Bobcat4848
Jaguar2121
Ryzen9-104-5

1.8 _mm_rcp/rsqrt_ps (RCP/RSQRTPS)

レイテンシースループット
Conroe, Allendale, Merom (06_0F)3RCP: 1
RSQRT: 2
Wolfdale, Penryn, Yorkfield (06_17)32
Nehalem (06_1A, 06_1E, 06_1F, 06_2E)32
Westmere (06_25, 06_2C, 06_2F?)
Sandy Bridge (06_2A, 06_2D)51
Ivy Bridge (06_3A, 06_3E)
Haswell (06_3C, 06_45, 06_46, 06_3F)
Broadwell (06_3D, 06_47, 06_56)
Skylake (06_4E, 06_5E)41
Bulldozer51
Piledriver
Steamroller
ExcavatorRCP: 5
RSQRT: 4
1
Bobcat32
Jaguar21
Ryzen51

1.9 _mm_unpackhi/lo/shuffle_ps(UNPCKH/L/SHUFPS)

レイテンシースループット
Conroe, Allendale, Merom (06_0F)21
Wolfdale, Penryn, Yorkfield (06_17)11
Nehalem (06_1A, 06_1E, 06_1F, 06_2E)
Westmere (06_25, 06_2C, 06_2F?)
Sandy Bridge (06_2A, 06_2D)
Ivy Bridge (06_3A, 06_3E)
Haswell (06_3C, 06_45, 06_46, 06_3F)
Broadwell (06_3D, 06_47, 06_56)
Skylake (06_4E, 06_5E)
Bulldozer21
Piledriver
Steamroller
Excavator
Bobcat11
Jaguar20.5
Ryzen10.5