ストリーミングSIMD拡張命令

インテルが開発した命令セットのひとつ

SIMD: Streaming SIMD Extensions:SSECPUSIMD Advanced Vector Extensions (AVX)  Advanced Matrix Extensions (AMX) 

概要

編集

SSEx868128SIMDAMDK6-2SIMD3DNow!Pentium III432使SSE

Core DuoCPUK8AMDCPU64128212864[1]MMXAMD3DNow!128使RISCCPUSIMD1281Core/AMD K101281SSE

SIMD: Internet Streaming SIMD ExtensionsISSE [1]SSE

SSESSE2SSE3SSSE3Supplemental/SSE3SSE4SSE

沿革

編集

19992: SSEPentium III
20003: SSECeleron

200011: SSE2Pentium 4
20025: SSE2Celeron

20033: SSE2Pentium M

20041: SSE2Celeron M

20042: SSE3Pentium 4
20046: SSE3Celeron D

20061: SSE3Intel Core

20066: SSSE3Xeon 5100
20067: SSSE3Intel Core 2

20078: AMDSSE5

200711: SSE4.1Intel Core 2

200711: AMDSSE4aPhenom

200811: SSE4.2Intel Core i7

20111: AVXIntel Core i7

201110: AMDFMAAMD FX

20136: AVX2Intel Core i7

20166: AVX-512Intel Xeon Phi

20231: AMXIntel Xeon SP

Pentium III70[2]Pentium IIIKatmaiKNI (Katmai New Instructions) [3]MMX2 [4]Celeron Coppermine-128k SSE[5][6]

AMDSIMD3DNow! ProfessionalSSE[7][8]

SSE2SSE144[2]64MMX128

SSE2Pentium 4[9]AMDAMD64x87SSE/SSE2SSESSE2

SSE3SSE213[2]CPU

SSE3PNI (Prescott New Instructions) [2]Pentium 4Prescott2004 -

SSSE3 (Supplemental SSE3) SSE332[2] CoreIntel Core 2 (Conroe) / Intel Xeon (Woodcrest) 

SSSE3MNI (Merom New Instructions; Tejas New Instructions) [2]SSE4

SSE4.1

編集

45nm世代のCore 2のPenrynで搭載。47個の命令が追加になる。

SSE4.2

編集

Nehalem1Intel Core i7SSE 4.2
  • String & Text New Instructions (STTNI)
    • PCMPESTRI
    • PCMPESTRM
    • PCMPISTRI
    • PCMPISTRM
    • PCMPGTQ
  • Application Targeted Accelerators (ATA)

AMD Phenom 4SSE4

x86[10]Fused Multiply-Add (FMA)2007AMDSSE52008AVX[11]2009FMA4 (FMA4) 3 (FMA3) [11]20095AMDSSE5AVXFMA4FMAFMA4FMA3FMAAMDZenFMA4FMA[12]

FMA±(A×B)±C/14

MADD

A×BC

MSUB

A×BC

NMADD

(A×B)C

NMSUB

(A×B)C

//MADDSUB1,3,5...MADD0,2,4...MSUB

FMA1FLOPSAMDBulldozer2128FMAHaswell2256FMA[13]

2008FMA[11]43AMDBulldozerAMDZen[12]

2009使FMAFMA instruction set[14]4313FMAHaswellAMDBulldozerPiledriverAMDSSE5FMA3[15]

mm256_fmadd_psIntel CPU116FMA[16][17] (256 [bit/inst.] ÷ 32 [bit/fp32FMA] ÷ 0.5 [CPI=cycle/inst.][18])3GHz1 48 GMAC/s (=96 GFLOPS) : FLOPS#

FMA4退1Ivy BridgeAMDBulldozermov退

AVX2AVX2CPUID[19]FMA3AMDPiledriverAVX2

Intel AVX

編集

MMX/SSESIMDIntel Advanced Vector ExtensionsSandy Bridge2011 -[20][21]SSE2256184VEX3 or 4退128SSE使AVX256使SIMD

SSE128AVX256128SSE[21]SSEAVX256AVXSSESSEAVX128退256VZEROUPPER/VZEROALLAVX128SSEVEX使VEX128AVX128AVX

Sandy BridgeSSE128使2256[20]Nehalem2

AMDBulldozerSSE5AMD FXAVX[11]2561282使[22][23]SSE

Intel AVX2

編集

AVX2はAVXの後続となる256ビットレジスタ対象の拡張命令セットである。

命令

編集

256ビットレジスタ上の整数ベクトルに対する算術 (add, sub, mul, madd, abs, sad, sign)、比較(eq, gt)、統計 (ave, min, max)、論理 (and, or, xor, andnot) 、シフト (sll, sra, srl, alignr)、変換 (convert)、要素操作/swizzle (permute, shuffle, broadcast, insert, blend, unpack, pack, extract) をサポートする。また整数ベクトルの入出力 (stream load, masked load/store)、マスク生成 (movemask) も追加されている。シフト命令は要素ごとに独立したシフト量を設定できる。

浮動小数点ベクトルにも影響する命令としてはgather命令(非連続なデータを並べ替えながらロード)が導入されている。

対応

編集

インテルはHaswellマイクロアーキテクチャから搭載している[24]。AMDはExcavatorアーキテクチャからAVX2を実装している[25]。ただし、SIMD演算ユニット自体はZen+まで128bit幅に留まっていたため、AVX2命令を多用する処理はあまり高速化されていなかった。Zen2世代からは256bit幅になり処理速度が改善されている。

実装としてIntel CPUではベクトルレジスタとベクトル用実行ユニットを用いて計算される。例としてint8積和演算(VNNI等価)では"Vec Mul"および"Vec ALU"実行ユニットが典型的に利用される(下表)。

表. Intel CPU AVX2におけるint8積和演算 (pseudo VNNI) 実装
μarch 実行ユニット
VPMADDUBSW, VPMADDWD VPADDD
Haswell "SIMD Misc" x1[26] "SIMD ALU" x2[27] (Port 1, 5)
Skylake "Vec Mul" x2[28] (Port 0, 1) "Vec ALU" x3[29] (Port 0, 1, 5)
Sunny Cove "Vec Mul" x2[30] "Vec ALU" x3[31] (Port 0, 1, 5)
Golden Cove英語版 "Vec Mul/FMA" x2[32] (Port 0, 1) "Vec ALU" x3[33] (Port 0, 1, 5)
Gracemont英語版

AVX2 VNNI

編集

Intel AVX2 Vector Neural Network Instructions (AVX2 VNNI) [34]AVX-512AVX-512 VNNIAVX2 () [int8 | int16][ | ] 4vpdp[bu|ws]sd[|s]/intrinsics[XMM (_mm_) | YMM (_mm256_) ] AVX512 VNNI_avx16

Intel CPU12Intel CoreAlder Lake[35]int8FMA256bit4[36][37]FMA4

Intel AVX-512

編集

ZMM512[38]1632

AVX512F, AVX512CD, AVX512DQ, AVX512PF, AVX512ER, AVX512VL, AVX512BW, AVX512IFMA, AVX512VBMI, AVX512VBMI2, AVX512VAES, AVX512BITALG, AVX5124FMAPS, AVX512VPCLMULQDQ, AVX512GFNI, AVX512_VNNI, AVX5124VNNIW, AVX512VPOPCNTDQ, AVX512_BF16AVX-512

沿革

編集

20162Xeon Phi1Xeon PhiAVX-512Intel IMCI[39]

20171XeonSPSkylake[40]

2018AVX-512 VNNI(AVX-512 Vector Neural Network Instructions)Intel, IEEE Hot Chips 30 Symposium (HCS) 20182Xeon SPCascade Lake

2019Intel10nmCPU10Intel CoreIce Lake AVX-512 

20203Xeon SPCooper Lakebfloat16AVX512_BF16

2021IntelCPUAVX-512Intel Xeon SP12Intel CoreAlder LakeAVX10.2AVX2退AVX2VNNI

2022IntelAMDZen 4AVX-512[41]

Alder Lake以降での無効化

編集

第12世代Intel Core(Alder Lakeマイクロプロセッサ)以降のパソコン向けでは基本的にAVX-512が利用不可になった。Alder Lakeでは2種類のコアを搭載している。PコアのみAVX-512命令セットが実行可能となっており、Gracemontアーキテクチャに基づくEコアでは非対応である。一部のマザーボードではBIOSバージョンとリビジョンの組み合わせにより、Eコアを無効化することでAVX-512を有効化できる。[42][43]Intelは最新リビジョンのAlder LakeではAVX-512命令のサポートをシリコンレベルで打ち切っている。[44]

AVX-512 VNNI

編集

AVX-512 Vector Neural Network instructions (AVX-512 VNNI) int8, int16AVX-512[45]AVXINT8 VPMADDUBSW/VPMADDWD/VPADDD 3AVX248VNNI VPDPBUSD [46]

Intel AVX10

編集

2023年7月に AVX-512 の後継の AVX10 をインテルは発表した。AVX10 は AVX2 と AVX-512 の統合ベクトル命令セットアーキテクチャ(converged vector ISA)[47]である。また、AVX-512は様々なサポート状況のフラグで管理するのが複雑だったため、AVX10はAVX10.1、AVX10.2とバージョン番号で管理する相対的にシンプルな仕組みとなった。

AVX10.1

編集

AVX10.1PIntel Xeon 6Granite Rapids XeonPAVX-512[48][49]

AVX10.2

編集

AVX10.2からは、ARMのScalable Vector Extensionと似た手法を採用し、128, 256, 512ビットレジスタどれであっても動作するようにして、パソコン用を含め、PコアでもEコアでも動作するようになる。インテルのパソコン向けCPUはかつてはAVX-512に対応していたが、Eコアを導入してから、Eコアで512ビットレジスタに対応できないため、AVX2に後退していた。[50]

Intel AMX

編集

Intel Advanced Matrix Extensions (AMX) 2020AVX-512 VNNI21

20231104Intel Xeon SPSapphire RapidsAMX-TILE8bitAMX-INT8bfloat16AMX-BF16Sapphire RapidsTMULTile Matrix Multiply

1/[51]

Intel AMX-INT8: 2048 (=16 * 64 * 2)

Intel AMX-BF16: 1024 (=16 * 32 * 2)

AVX-512INT8256op/cycle8

Intel Xeon 6Granite Rapids AMX-FP16[52]


脚注

編集

注釈

編集
  1. ^ SIMD整数演算に関してはPentium M、Core DuoやK8では64ビット幅の演算器を2つ持つため、コア全体でのSIMD整数演算のスループットは128ビット/クロックであった。

出典

編集


(一)^  (200534). +HT. PC Watch. PC. 20191222

(二)^ abcdef (2006104). SSE4Intel CPU. PC Watch. Weekly. 20191222

(三)^  (1998108). MPEG-2Katmai. PC Watch. Weekly. 20191222

(四)^  (199798). SGIWintel?. PC Watch. Weekly. 20191222

(五)^ IntelCoppermine-128kCeleron 600/566MHz. PC Watch (2000329). 20191222

(六)^  (2000331). Coppermine-128K 600/533A MHz. PC Watch. AKIBA PC Hotline. 20191222

(七)^  (2001831). 179820824. PC Watch. PC Watch. 20191222

(八)^  (20011010). Pentium 4AMD Athlon XP. PC Watch. AKIBA PC Hotline. 20191222

(九)^ . SSE2. PC Watch. 20191222

(十)^ AMDBulldozerHPPA-RISCIBMPowerPowerPCItanium

(11)^ abcd. AMDAVXBulldozer. Weekly. 20191118

(12)^ abGDC 2017AMDRyzen - 4Gamer.net. (201739). https://www.4gamer.net/games/300/G030061/20170308070/ 2017310 

(13)^ Hisa Ando (2012103). HPCHaswell() -256bitFMA2. . https://news.mynavi.jp/techplus/article/20121003-idf_haswell_hpc_01/ 20191118 

(14)^ "CHAPTER 6 INSTRUCTION SET REFERENCE - FMA ... FMA INSTRUCTION SET ... Performs a set of SIMD multiply-add computation on packed" Intel. Intel® Architecture Instruction Set Extensions Programming Reference. pp.6_1-6_2.

(15)^ Junya Suzuki (2007831). AMD3FMASSE5. . https://news.mynavi.jp/article/20070831-a002/ 20191118 

(16)^ "to sustain Haswells CPU peak (e.g., 16 multiply-adds per cycle)" . (2016). What You Must Know about Memory, Caches, and Shared Memory. , .

(17)^ "Intel® AVX 2.0 delivers 16 double precision and 32 single precision floating point operations per second per clock cycle within the 256-bit vectors, with up to two 256-bit fused-multiply add (FMA) units." Intel. Intel® Advanced Vector Extensions 512. 2022-04-04.

(18)^ "__m256 _mm256_fmadd_ps ... Throughput (CPI) ... Haswell ... 0.5" Intel Intrinsics Guide. 2022-04-03.

(19)^ "12 FMA ... 28 AVX" Intel. (2021). Intel® Architecture Instruction Set Extensions and Future Features. p.1_27.

(20)^ ab (2010917). Sandy Bridge. PC Watch. Weekly. 20191222

(21)^ ab2011-01-03 (). Sandy Bridge. 4Gamer.net. 20191222

(22)^  (20101012). AMDBulldozerCPUFX10. 4Gamer.net. 20191222

(23)^  (201132). 8CPUBulldozer. PC Watch. Weekly. 20191222

(24)^  (2012924). CPU HaswellCPU . ASCII.jp. . 20191118

(25)^ AMDCarrizo6AMD A  - PC Watch. (201563). https://pc.watch.impress.co.jp/docs/news/event/705132.html 20151215 

(26)^ "Haswell ... Execution Unit ... SIMD Misc ... # of Ports ... 1 ... Instructions ... (v)pmadd*" p.32 of Intel. (2017). Intel® 64 and IA-32 Architectures Optimization Reference Manual. Order Number: 248966-037 July 2017. iSUS.

(27)^ "Haswell ... Execution Unit ... SIMD ALU ... # of Ports ... 2 ... Instructions ... (v)padd*" p.32 of Intel. (2017). Intel® 64 and IA-32 Architectures Optimization Reference Manual. Order Number: 248966-037 July 2017. iSUS.

(28)^ "Skylake Client Microarchitecture Execution Units ... Execution Unit ... Vec Mul ... # of Unit ... 2 ... Instructions ... (v)pmadd*" p.2_27 of Intel. (2022). Intel® 64 and IA-32 Architectures Optimization Reference Manual. Order Number: 248966-045 February 2022.

(29)^ "Skylake Client Microarchitecture Execution Units ... Execution Unit ... Vec ALU ... # of Unit ... 3 ... Instructions ... (v)paddb/w/d/q" p.2_27 of Intel. (2022). Intel® 64 and IA-32 Architectures Optimization Reference Manual. Order Number: 248966-045 February 2022.

(30)^ "Ice Lake Client Microarchitecture Execution Units ... Execution Unit ... Vec Mul ... # of Unit ... 2 ... Instructions ... (v)pmadd*" p.2_13 of Intel. (2022). Intel® 64 and IA-32 Architectures Optimization Reference Manual. Order Number: 248966-045 February 2022.

(31)^ "Ice Lake Client Microarchitecture Execution Units ... Execution Unit ... Vec ALU ... # of Unit ... 3 ... Instructions ... (v)paddb/w/d/q" p.2_13 of Intel. (2022). Intel® 64 and IA-32 Architectures Optimization Reference Manual. Order Number: 248966-045 February 2022.

(32)^ "Golden Cove Microarchitecture Execution Units ... Execution Unit ... Vec Mul/FMA ... # of Unit ... 2x256-bit (1 or 2)x512-bit ... Instructions ... (v)pmadd*" p.2_9 of Intel. (2022). Intel® 64 and IA-32 Architectures Optimization Reference Manual. Order Number: 248966-045 February 2022.

(33)^ "Golden Cove Microarchitecture Execution Units ... Execution Unit ... Vec ALU ... # of Unit ... 3x256-bit ... Instructions ... (v)paddb/w/d/q" p.2_8 of Intel. (2022). Intel® 64 and IA-32 Architectures Optimization Reference Manual. Order Number: 248966-045 February 2022.

(34)^ "Intel® AVX2 Vector Neural Network Instructions (AVX2 VNNI) Vector instructions for deep learning extension for AVX2." Intel. Core Processors Datasheet, Volume 1 of 2. 2022-04-04.

(35)^ "Intel® SDP for Desktop Based on Alder Lake S ... Supported Technologies ... Intel® AVX2 VNNI" Intel. Core Processors Datasheet, Volume 1 of 2. 2022-04-04.

(36)^ "VPDPBUSD_YMMi32_YMMu32_YMMu32 ... throughput ... 0.5 ... Latency ... 5" L.2266 of Intel. (2022). Intel® Processors and Processor Cores based on Golden Cove Microarchitecture. March 2022 Revision 2.0.

(37)^ _mm_dpbusds_epi32XMM128bit CPI0.5Intel Intrinsics Guide

(38)^  (201921). Intel10nmCPUSunny CoveAVX-512. PC Watch. Weekly. 20191222

(39)^ ® Xeon Phi  7120P (16GB1.238 GHz61) -  | . Intel. 2024312

(40)^ Intel® Architecture Instruction Set Extensions Programming Reference (pdf) (). p. 12(1-2). 20184302017119 AVX512F, AVX512CD

(41)^ Zen 4AVX-512. PC Watch (201921). 2022617

(42)^ Intel Architecture Day 2021: Alder Lake, Golden Cove, and Gracemont Detailed (). AnandTech (2021819). 2021825

(43)^ Alcorn, Paul (2021819). Intel Architecture Day 2021: Alder Lake Chips, Golden Cove and Gracemont Cores (). Tom's Hardware. 2021821

(44)^ Alcorn, Paul (202232). Intel Nukes Alder Lake's AVX-512 Support, Now Fuses It Off in Silicon (). Tom's Hardware. 202237

(45)^ "a new Intel AVX-512 extension called Intel DL Boost, which contains the Vector Neural Network instruction (VNNI). Designed to improve the throughput of integer linear algebra" Intel. Code Sample: Intel® AVX512-Deep Learning Boost: Intrinsic Functions.

(46)^ "the new instruction in VNNI VPDPBUSD replaces the three separate FMA instructions VPMADDUBSW, VPMADDWD, and VPADDD." Intel. Code Sample: Intel® AVX512-Deep Learning Boost: Intrinsic Functions.

(47)^ The Converged Vector ISA: Intel® Advanced Vector Extensions 10 Technical Paper. Intel. 202458

(48)^ Bonshor, Gavin. Intel Unveils AVX10 and APX Instruction Sets: Unifying AVX-512 For Hybrid Architectures. AnandTech. 202454

(49)^ . IntelP/EAVX10. PC Watch. 202454

(50)^ The Converged Vector ISA: Intel® Advanced Vector Extensions 10

(51)^ Accelerate Artificial Intelligence (AI) Workloads with Intel Advanced Matrix Extensions (Intel AMX). Intel. 2023413

(52)^   ® Xeon® . Intel. 2024525

関連項目

編集