Advanced Vector Extensions ( AVX、別名Gesher New Directions、後にSandy Bridge New Directionsとも呼ばれる) は、 IntelおよびAdvanced Micro Devices (AMD)のマイクロプロセッサ向けのx86命令セット アーキテクチャに対するSIMD拡張機能です。2008 年 3 月に Intel によって提案され、 2011 年第 1 四半期に出荷されたSandy Bridge [1]マイクロアーキテクチャで初めて Intel によってサポートされ、その後、2011 年第 4 四半期に出荷されたBulldozer [2]マイクロアーキテクチャで AMD によってサポートされました。AVX は、新しい機能、新しい命令、および新しいコーディング スキームを提供します。
AVX2 ( Haswell New instructionとも呼ばれる) は、ほとんどの整数コマンドを 256 ビットに拡張し、新しい命令を導入します。これらは、2013 年に出荷されたHaswellマイクロアーキテクチャで Intel によって初めてサポートされました。
AVX-512は、 2013年7月にIntelによって提案され、 2016年に出荷されたKnights LandingコプロセッサでIntelによって初めてサポートされた新しいEVEXプレフィックスエンコーディングを使用して、AVXを512ビットサポートに拡張します。 [3] [4]従来のプロセッサでは、AVX-512は2017年にSkylakeサーバーおよびHEDTプロセッサで導入されました。
高度なベクトル拡張
AVX は 16 個の YMM レジスタを使用して、複数のデータに対して 1 つの命令を実行します ( SIMDを参照)。各 YMM レジスタは、次の操作 (計算) を保持して同時に実行できます。
- 8つの32ビット単精度浮動小数点数または
- 4 つの 64 ビット倍精度浮動小数点数。
SIMD レジスタの幅は 128 ビットから 256 ビットに増加し、XMM0–XMM7 から YMM0–YMM7 に名前が変更されました ( x86-64モードでは、XMM0–XMM15 から YMM0–YMM15 に変更)。従来のSSE命令は、 VEX プレフィックスを介して引き続き利用でき、YMM レジスタの下位 128 ビットで操作できます。
AVX は、宛先レジスタが 2 つのソースオペランドと異なる、VEX コーディング方式と呼ばれる 3 オペランド SIMD 命令形式を導入します。たとえば、従来の 2 オペランド形式a ← a + b を使用するSSE命令は、両方のソースオペランドを保持する非破壊的な 3 オペランド形式c ← a + bを使用できるようになりました。もともと、AVX の 3 オペランド形式は SIMD オペランド (YMM) を持つ命令に限定されており、汎用レジスタ (EAX など) を持つ命令は含まれていませんでした。これは後に、BMIなどの後の拡張で汎用レジスタ上の新しい命令をコーディングするために使用されました。VEX コーディングは、 AVX-512で導入された k0-k7 マスクレジスタ上で動作する命令にも使用されます。
SIMDメモリオペランドのアライメント要件は緩和されています。[5]非VEXコード化ベクトル命令とは異なり、ほとんどのVEXコード化ベクトル命令では、メモリオペランドをベクトルサイズに合わせる必要はなくなりました。ただし、命令ではメモリオペランドをアライメントする必要があることに留意してください。
VMOVDQA
新しいVEX コーディング スキームでは、オペコードスペースを拡張し、命令に 2 つ以上のオペランドを持たせ、SIMD ベクトル レジスタを 128 ビットより長くする新しいコード プレフィックス セットが導入されています。VEX プレフィックスは、従来の SSE 命令にも使用でき、3 つのオペランド形式にして、およびを必要とせずに AVX 命令とより効率的にやり取りできるようにしVZEROUPPERますVZEROALL。
AVX命令は128ビットと256ビットの両方のSIMDをサポートしています。128ビットバージョンは、ベクトル化を拡大する必要なく古いコードを改善するのに役立ち、SSEからAVXへの移行によるペナルティを回避できます。また、AVXの初期のAMD実装ではより高速です。このモードはAVX-128と呼ばれることもあります。[6]
新しい指示
これらの AVX 命令は、従来の 128 ビット SSE 命令の 256 ビット拡張である命令に加えて、ほとんどの命令は 128 ビットと 256 ビットの両方のオペランドで使用できます。
AVX 搭載 CPU
- インテル
- Sandy Bridgeプロセッサ(2011年第1四半期)以降(CeleronおよびPentiumブランドのモデルを除く)。[9]
- Tiger Lake(2020年第3四半期)以降のPentiumおよびCeleronブランドのプロセッサ。 [10]
- AMD :
- Bulldozerプロセッサ(2011年第4四半期)以降。[11]
将来の Intel プロセッサと AMD プロセッサ間の互換性に関する問題については、 XOP 命令セットで説明します。
コンパイラとアセンブラのサポート
- Absoft は-mavx フラグでサポートします。
- Free Pascalコンパイラは、バージョン 2.7.1 以降、-CfAVX および -CfAVX2 スイッチを使用して AVX および AVX2 をサポートします。
- RAD studio(v11.0 Alexandria)はAVX2とAVX512をサポートしています。[12]
- GNUアセンブラ(GAS)インラインアセンブリ関数はこれらの命令(GCC経由でアクセス可能)をサポートしており、IntelプリミティブやIntelインラインアセンブラ(GASと互換性が高いが、インラインコード内のローカル参照の処理はより一般的)も同様です。GASはbinutilsバージョン2.19以降でAVXをサポートしています。[13]
- GCCバージョン 4.6 以降 (ただし、特定のサポートを含む 4.3 ブランチもありました) および Intel コンパイラ スイート バージョン 11.1 以降では AVX がサポートされています。
- Open64コンパイラ バージョン 4.5.1は、-mavx フラグを使用して AVX をサポートします。
- PathScale は-mavx フラグを介してサポートされます。
- Vector Pascalコンパイラは、-cpuAVX32 フラグを介して AVX をサポートします。
- Visual Studio 2010/2012コンパイラは、組み込みおよび /arch:AVX スイッチを介して AVX をサポートします。
- NASMはバージョン2.03以降から始まりました。バージョン2.04ではAVXに関連する多数のバグ修正とアップデートがありました。[14]
- MASM VS2010バージョン、YASM、[15] FASM、JWASMなどの他のアセンブラ。
オペレーティングシステムのサポート
AVX は 256 ビット幅の YMM レジスタ ファイルを通じて新しいレジスタ状態を追加するため、コンテキスト スイッチ間で AVX の拡張レジスタを適切に保存および復元するには、明示的なオペレーティング システムのサポートが必要です。次のオペレーティング システム バージョンは AVX をサポートしています。
- DragonFly BSD : 2013 年初頭にサポートが追加されました。
- FreeBSD : 2012年1月21日に提出されたパッチでサポートが追加され、[16] 9.1安定版リリースに含まれました。[17]
- Linux : カーネルバージョン2.6.30以降でサポートされており、[18] 2009年6月9日にリリースされました。[19]
- macOS : 2011年6月23日にリリースされた10.6.8 ( Snow Leopard ) アップデート[20] [信頼できない情報源? ]でサポートが追加されました。実際、macOS VenturaはAVX2命令セットのないx86プロセッサをサポートしていません。[21]
- OpenBSD : 2015年3月21日にサポートが追加されました。[22]
- Solaris : Solaris 10 Update 10 および Solaris 11 でサポートされます。
- Windows : Windows 7 SP1、Windows Server 2008 R2 SP1、[23] Windows 8、Windows 10でサポートされています。
- Windows Server 2008 R2 SP1 と Hyper-V では、AMD AVX (Opteron 6200 および 4200 シリーズ) プロセッサをサポートするために修正プログラムが必要です (KB2568088)
- Windows XPおよびWindows Server 2003 は、カーネル ドライバーとユーザー アプリケーションの両方で AVX をサポートしていません。
高度なベクトル拡張 2
AVX2(Advanced Vector Extensions 2)は、 Haswell New Industriesとも呼ばれ、[24] IntelのHaswellマイクロアーキテクチャで導入されたAVX命令セットの拡張版です。AVX2では以下の機能が追加されています。
- ほとんどのベクトル整数SSEおよびAVX命令を256ビットに拡張
- ギャザーサポートにより、連続していないメモリ位置からベクトル要素をロードできるようになります。
- DWORD および QWORD 粒度の任意対任意順列
- ベクトルシフト。
3 オペランド融合積和演算(FMA3) 拡張は、Intel によって同じプロセッサ マイクロアーキテクチャに導入されたため、AVX2 の一部と見なされることがあります。これは、独自のCPUIDフラグを使用する別の拡張であり、以下ではなく 独自のページで説明されています。
新しい指示
AVX2 搭載 CPU
- インテル
- Haswellプロセッサ (2013 年第 2 四半期) 以降 (Celeron および Pentium ブランドのモデルを除く)。
- Tiger Lake(2020年第3四半期)以降のCeleronおよびPentiumブランドのプロセッサ。 [10]
- アム
- 掘削機プロセッサ (2015 年第 2 四半期) 以降。
- 経由:
- ナノクアッドコア
- エデンX4
AVX-512
AVX-512は、 2013年7月にIntelが提案したx86命令セットアーキテクチャ用の256ビットAdvanced Vector Extensions SIMD命令の512ビット拡張です。[3]
AVX-512 命令は、新しいEVEX プレフィックスでエンコードされます。これにより、4 つのオペランド、8 つの新しい 64 ビットopmask レジスタ、自動ブロードキャストによるスカラー メモリ モード、明示的な丸め制御、および圧縮変位メモリアドレッシング モードが可能になります。x86-64 モードでは、レジスタ ファイルの幅が 512 ビットに拡張され、レジスタの総数は 32 (レジスタ ZMM0 ~ ZMM31) に増加します。
AVX-512 は複数の命令サブセットで構成されていますが、そのすべてがそれを実装するすべてのプロセッサでサポートされるわけではありません。命令セットは次のもので構成されています。
- AVX-512 Foundation (F) – いくつかの新しい命令を追加し、 EVEXコーディングスキームを使用してほとんどの32ビットおよび64ビット浮動小数点SSE-SSE4.1およびAVX/AVX2命令を拡張し、512ビットレジスタ、演算マスク、パラメータブロードキャスト、および組み込み丸めと例外制御をサポートします。
- AVX-512 競合検出命令 (CD) – より多くのループをベクトル化できるようにする効率的な競合検出。Knights Landing [3]でサポートされています。
- AVX-512 指数および逆数命令(ER) - 指数および逆数演算は超越演算の実装を支援するために設計されており、Knights Landingによってサポートされている[3]
- AVX-512 プリフェッチ命令 (PF) – Knights Landing [3]がサポートする新しいプリフェッチ機能
- AVX-512 ベクトル長拡張(VL) - ほとんどのAVX-512操作を拡張し、XMM(128ビット)およびYMM(256ビット)レジスタ(x86-64モードではXMM16-XMM31およびYMM16-YMM31を含む)でも操作できるようにします[25]
- AVX-512バイトおよびワード命令(BW) - AVX-512を拡張して8ビットおよび16ビットの整数演算をカバーする[25]
- AVX-512 ダブルワードおよびクワッドワード命令(DQ) - 強化された32ビットおよび64ビット整数演算[25]
- AVX-512 整数融合乗算加算(IFMA) – 512ビット整数の融合乗算加算。[26] : 746
- AVX-512 ベクトル バイト操作命令 (VBMI) は、AVX-512BW には存在しないベクトル バイト置換命令を追加します。
- AVX-512 ベクトル ニューラル ネットワーク命令 ワード可変精度 (4VNNIW) – ディープラーニング用のベクトル命令。
- AVX-512 融合乗算累積パック単精度 (4FMAPS) – ディープラーニング用のベクトル命令。
- VPOPCNTDQ – 1に設定されたビットの数。[27]
- VPCLMULQDQ – キャリーレスクワッドワード乗算。[27]
- AVX-512 ベクトルニューラルネットワーク命令(VNNI) - ディープラーニング用のベクトル命令。[27]
- AVX-512 ガロア体新命令(GFNI) -ガロア体を計算するためのベクトル命令。[27]
- AVX-512 ベクトルAES命令(VAES) - AESコーディング用のベクトル命令。[27]
- AVX-512 ベクトルバイト操作命令2(VBMI2) – シフトによるバイト/ワードのロード、ストア、連結。[27]
- AVX-512ビットアルゴリズム(BITALG) - VPOPCNTDQを拡張したバイト/ワードビット操作命令。[27]
- AVX-512 Bfloat16浮動小数点命令 (BF16) – AI アクセラレーション用のベクトル命令。
- AVX-512半精度浮動小数点命令 (FP16) – 精度を下げた浮動小数点数と複素数を演算するためのベクトル命令。
すべての実装ではコア拡張 AVX-512F (AVX-512 Foundation) のみが必要ですが、現在のすべての実装では CD (競合検出) もサポートされています。AVX-512 を搭載したすべての中央プロセッサは、VL、DQ、および BW もサポートしています。ER、PF、4VNNIW、および 4FMAPS 命令セット拡張は、現在 Intel コンピューティング コプロセッサにのみ実装されています。
AVX-512Fで更新されたSSE/AVX命令は、AVXバージョンと同じニーモニックを使用します。512ビットのZMMレジスタで動作でき、128/256ビットのXMM/YMMレジスタ(AVX-512VLを使用)とバイト、ワード、ダブルワード、クワッドワードの整数オペランド(AVX-512BW/DQおよびVBMIを使用)もサポートします。[26] : 23
AVX-512 CPU 互換性表
[28]
^注1 :IntelはAlder Lakeマイクロプロセッサで AVX-512ファミリの命令を公式にはサポートしていません。2022年初頭、IntelはAlder Lakeマイクロプロセッサのシリコン内でAVX-512を無効化(フューズオフ)し、顧客がAVX-512を有効にできないようにしました。 [29] BIOSとマイクロコードリビジョンのレガシーな組み合わせを備えた古いAlder LakeファミリCPUでは、AVX-512用のシリコンを含まないすべての効率コアを無効にすると、AVX-512ファミリの命令を実行することができました。 [30] [31] [32]
AVX-512をサポートするコンパイラ
AVX-512 をサポートするアセンブラ
AVX-VNNI、AVX-IFMA
AVX-VNNI は、AVX512-VNNI命令セット拡張のVEXコード版です。同様に、 AVX-IFMA は、 AVX512-IFMAのVEXコード版です。これらの拡張は、 AVX-512 の対応するものと同じ操作セットを提供しますが、256 ビット ベクターに制限されており、ブロードキャスト、opmask レジスタ、16 を超えるベクター レジスタへのアクセスなど、 EVEXエンコーディングの追加機能はサポートしていません。これらの拡張により、プロセッサに完全なAVX-512サポートが実装されていない場合でも、 VNNI および IFMA 操作をサポートできます。
AVX-VNNI 搭載 CPU
- インテル
- Alder Lakeプロセッサ (2021 年第 4 四半期) 以降。
- アム
- Zen 5プロセッサ(2024年第3四半期)以降。[37]
AVX-IFMA 搭載 CPU
- インテル
- Sierra Forest E コアのみの Xeon プロセッサ (2024 年第 2 四半期) 以降。
- Grand Ridge 専用プロセッサおよびそれ以降のバージョン。
- Meteor Lakeモバイル プロセッサ (2023 年第 4 四半期) 以降。
- Arrow Lakeデスクトップ プロセッサ (2024 年第 4 四半期) 以降。
AVX10
2023年7月に発表されたAVX10 [38]は、新しい「統合型」AVX命令セットです。AVX-512のいくつかの問題、特に分割されすぎている部分が多いこと[39](20個の機能フラグ)と、512ビットベクトルのサポートが必須であることに対処しています。AVX10は、命令サポートをテストするための簡略化されたCPUIDインターフェイスを提供します。これは、AVX10バージョン番号(サポートされている命令セットを示し、後のバージョンは常に以前のバージョンのスーパーセットになります)と利用可能な最大ベクトル長(256または512ビット)で構成されます。[40]バージョンとベクトル長を示すために、組み合わせ表記が使用されます。たとえば、AVX10.2 / 256は、CPUが最大ベクトル幅256ビットのAVX10の2番目のバージョンに対応していることを示します。[41]
AVX10 の最初の「初期」バージョンである AVX10.1 では、 AVX-512 にすでにある機能 (具体的には、Intel Sapphire Rapidsの場合: AVX-512F、CD、VL、DQ、BW、IFMA、VBMI、VBMI2、BITALG、VNNI、GFNI、VPOPCNTDQ、VPCLMULQDQ、VAES、BF16、FP16) 以外の命令やエンコード機能は導入されません。2 番目の「フル機能」バージョンである AVX10.2 では、YMM 埋め込み丸めやすべての例外の抑制などの新機能が導入されています。AVX10 および 512 ビット ベクターをサポートする CPU では、すべての従来の AVX-512 機能フラグが設定されたままになり、AVX-512 をサポートするアプリケーションが引き続き AVX-512 命令を使用できるようになります。[41]
AVX10.1/512はIntel Granite Rapids [41] (2024年第3四半期)で初めてリリースされ、AVX10.2/512はDiamond Rapids [42]で利用可能になる予定です。
インド
APXは新しい拡張機能です。ベクトル計算に焦点を当てているわけではありませんが、汎用レジスタの数を32に倍増し、3オペランド命令形式を導入することで、x86-64アーキテクチャにRISCのような拡張機能を提供します。AVXは、APXが拡張オペランドを導入するため、わずかに影響を受けます。[43] [44]
アプリケーション
- マルチメディア、科学、金融アプリケーションにおける浮動小数点を多用する計算に適しています(AVX2 では整数演算のサポートが追加されます)。
- 浮動小数点SIMD計算における並列性とスループットを向上します。
- 非破壊命令によりレジスタの負荷を軽減します。
- Linux RAIDソフトウェアのパフォーマンスを向上(AVX2が必要、AVXだけでは不十分)[45]
ソフトウェア
- 暗号化
- Bloombase は、Bloombase 暗号化モジュール (BCM) で AVX、AVX2、および AVX-512 を使用します。
- Botan は、ChaCha などの一部のアルゴリズムを高速化するために、利用可能な場合は AVX と AVX2 の両方を使用します。
- BSAFE Cツールキットは、さまざまな暗号化アルゴリズムを高速化するために、必要に応じてAVXとAVX2を使用します。[46]
- Crypto++ は、Salsa や ChaCha などの一部のアルゴリズムを高速化するために、利用可能な場合は AVX と AVX2 の両方を使用します。
- OpenSSLはバージョン1.0.2以降、AVXおよびAVX2に最適化された暗号化機能を使用しています。[47] AVX-512のサポートはバージョン3.0.0で追加されました。[48]これらの最適化の一部は、LibreSSLなどのさまざまなクローンやフォークにも存在します。
- Linux カーネルは、AES-GCM暗号化アルゴリズムの最適化された実装として、 AVX または AVX2 をAES-NIとともに使用できます。
- Linux カーネルは、利用可能な場合は AVX または AVX2 を使用して、Camellia、CAST5、CAST6、Serpent、Twofish、 MORUS-1280 などの他の複数の暗号化方式、およびPoly1305、SHA-1、SHA-256、SHA-512、ChaCha20などの他のプリミティブ方式を最適化して実装します。
- libsodium は、Curve25519およびEd25519アルゴリズムのスカラー乗算の実装に AVX を使用し、 BLAKE2b、Salsa20、ChaCha20に AVX2 を使用し、Argon2アルゴリズムの実装に AVX2 と AVX-512 を使用します。
- マルチメディア
- BlenderはCyclesレンダリングエンジンでAVX、AVX2、AVX-512を使用します。[49]
- x264、x265、およびVTMビデオ エンコーダーは、AVX2 または AVX-512 を使用してエンコードを高速化できます。
- Native InstrumentsのMassive XソフトシンセにはAVXが必要です。[50]
- dav1d AV1デコーダーは、サポートされているCPUでAVX2とAVX-512を使用できます。[51] [52]
- SVT-AV1 AV1エンコーダはAVX2とAVX-512を使用してビデオエンコーディングを高速化できます。[53]
- libvpx は、 VP8/VP9 エンコーダー/デコーダーのオープン ソース リファレンス実装であり、利用可能な場合は AVX2 または AVX-512 を使用します。
- libjpeg-turbo はAVX2 を使用して画像処理を高速化します。
- 科学、工学、その他
- Esri ArcGIS Data StoreはグラフストレージにAVX2を使用します。[54]
- GIMPSに使用されているソフトウェアであるPrime95 /MPrimeは、バージョン27.1以降でAVX命令を使用し始め、バージョン28.6以降でAVX2、バージョン29.1以降でAVX-512の使用を開始しました。[55]
- distribution.netが使用するソフトウェアであるdnetc には、RC5 プロジェクト用の AVX2 コアが用意されており、OGR-28 プロジェクト用の AVX2 コアもまもなくリリースされる予定です。
- Einstein@Homeは重力波を探索する分散アプリケーションの一部にAVXを使用しています。[56]
- Folding@home は、GROMACSライブラリで実装された計算コアで AVX を使用します。
- Heliosは64ビットx86ハードウェア上でAVXおよびAVX2ハードウェアアクセラレーションを使用します。[57]
- Horizon: Zero Dawn はDecima ゲーム エンジンで AVX を使用します。
- PCSX2とRPCS3 は、それぞれ AVX2 とAVX-512命令を使用してゲームをエミュレートするオープンソースのPS2およびPS3エミュレーターです。
- ライブ放送制作用に NewTek が開発した IP ビデオ/オーディオ プロトコルであるNetwork Device Interface は、パフォーマンスを向上させるために AVX と AVX2 を使用します。
- TensorFlowバージョン1.6以降およびそれ以上のバージョンでは、少なくともAVXをサポートするCPUが必要です。[58]
- さまざまな CPU ベースの暗号通貨マイナー ( BitcoinおよびLitecoin用の pooler の cpuminer など) は、 SHA-256やscryptなどのさまざまな暗号化関連のルーチンに AVX と AVX2 を使用します。
- FFTW は、利用可能な場合、AVX、AVX2、および AVX-512 を利用できます。
- Gallium とLLVMインフラストラクチャを使用するMesaのソフトウェア OpenGL レンダラーである LLVMpipe は、利用可能な場合は AVX2 を使用します。
- glibc は、 libc内のさまざまな数学関数 (つまり、 、 、 ) および文字列関数 ( 、 など) の最適化された実装にAVX2 ( FMA付き)およびAVX - 512を使用します。
expfsinfpowfatanfatan2fmemmovememcpy - OpenCLの実装を提供するポータブル コンピューティング言語である POCL は、可能な場合は AVX、AVX2、および AVX-512 を使用します。
- .NETおよび.NET Framework は、ジェネリック
System.Numerics.Vectors名前空間を通じて AVX、AVX2 を利用できます。 - .NET Core では、バージョン 2.1 以降、バージョン 3.0 以降では、
System.Runtime.Intrinsics.X86名前空間を通じてすべての AVX、AVX2 組み込み関数を直接使用できます。 - EmEditor 19.0以降では、処理を高速化するためにAVX2を使用しています。[59]
- Microsoft Teamsは、ビデオチャット参加者の背後にぼかしやカスタム背景を作成するためにAVX2命令を使用し、[60]背景ノイズを抑制します。[61]
- Pale Moonカスタム Windows ビルドでは、AVX2 の使用によりブラウジングの速度が大幅に向上します。
- JSON解析ライブラリであるsimdjsonは、AVX2とAVX-512を使用してデコード速度を向上させます。[62] [63]
- x86-simd-sortは、16、32、64ビットの数値データ型のソートアルゴリズムを備えたライブラリで、AVX2とAVX-512を使用します。このライブラリは、NumPyとOpenJDKでソートアルゴリズムを高速化するために使用されます。[64]
- zlibの最適化バージョンである zlib-ngには、いくつかのデータ圧縮アルゴリズムの AVX2 および AVX-512 バージョンが含まれています。
- Tesseract OCRエンジンは、文字認識を高速化するためにAVX、AVX2、AVX-512を使用します。[65]
ダウンクロック
AVX命令はより広いため、より多くの電力を消費し、より多くの熱を発生します。CPUクロック周波数が高い状態で重いAVX命令を実行すると、負荷過渡時の過度の電圧低下によりCPUの安定性に影響する可能性があります。一部のIntelプロセッサには、そのような命令が実行されているときにTurbo Boost周波数制限を下げる機能があります。この削減は、CPUが熱および電力消費の制限に達していなくても行われます。Skylakeとその派生製品では、スロットリングは3つのレベルに分かれています。 [ 66 ] [67]
- L0(100%):通常のターボブースト限界。
- L1 (~85%): 「AVX ブースト」の制限。256 ビットの「重い」(浮動小数点ユニット: FP 演算および整数乗算) 命令によってソフト トリガーされます。「軽い」(その他すべて) 512 ビット命令によってハード トリガーされます。
- L2 (~60%): [疑わしい–議論]「AVX-512 ブースト」の制限。512 ビットの重い命令によってソフトトリガーされます。
周波数の遷移はソフトまたはハードにすることができます。ハード遷移とは、そのような命令が発見されるとすぐに周波数が下がることを意味します。ソフト遷移とは、一致する命令の数がしきい値に達した後にのみ周波数が下がることを意味します。制限はスレッドごとにあります。[66]
Ice Lakeでは2つのレベルのみが存続する: [68]
- L0(100%):通常のターボブースト限界。
- L1 (~97%): 512 ビット命令によってトリガーされますが、シングルコア ブーストがアクティブな場合のみであり、複数のコアがロードされている場合はトリガーされません。
Rocket Lakeプロセッサは、ベクトルサイズに関係なく、あらゆる種類のベクトル命令を実行しても周波数の低下を引き起こしません。[68]ただし、熱や電力の制限に達するなど、他の理由によりダウンクロックが発生する可能性があります。
ダウンクロックとは、Intelプロセッサで混合ワークロードでAVXを使用すると、周波数ペナルティが発生する可能性があることを意味します。ワイドで重い命令の使用を避けることで、このような場合の影響を最小限に抑えることができます。AVX-512VLは、AVX-512命令で256ビットまたは128ビットのオペランドを使用できるため、混合負荷の合理的なデフォルトになります。[69]
ダウンクロックするプロセッサのサポート対象およびロック解除済みのバリアントでは、クロック比削減オフセット(通常、AVXおよびAVX-512オフセットと呼ばれる)は調整可能であり、Intelのオーバークロック/チューニングユーティリティまたはBIOS(サポートされている場合)を介して完全にオフ(0xに設定)にすることができます。[70]
参照
- F16C命令セット拡張
- メモリ保護拡張
- ARM 用スケーラブル ベクター拡張- AVX-512 に類似した新しいベクター命令セット ( VFPとNEONを補完) で、いくつかの追加機能を備えています。
参考文献
- ^ Kanter, David (2010 年 9 月 25 日). 「Intel の Sandy Bridge マイクロアーキテクチャ」www.realworldtech.com . 2018 年2 月 17 日閲覧。
- ^ Hruska, Joel (2011年10月24日). 「Bulldozerの分析: AMDのチップが期待外れな理由 - 5ページ中4ページ - ExtremeTech」. ExtremeTech . 2018年2月17日閲覧。
- ^ abcde James Reinders (2013 年 7 月 23 日)、AVX-512 命令、Intel 、2013 年8 月 20 日閲覧
- ^ 「Intel Xeon Phi プロセッサー 7210 (16GB、1.30 GHz、64 コア) 製品仕様」。Intel ARK (製品仕様) 。2018 年3 月 16 日閲覧。
- ^ "14.9". Intel 64 および IA-32 アーキテクチャ ソフトウェア開発者マニュアル 第 1 巻: 基本アーキテクチャ(PDF) (-051US 版). Intel Corporation. p. 349 . 2014 年8 月 23 日閲覧。VEX
プレフィックスを持つほとんどの命令のメモリ引数は、バイト粒度のアラインメントで #GP(0) を引き起こすことなく正常に動作します (レガシー SSE 命令とは異なります)。
- ^ 「i386 および x86-64 オプション - GNU コンパイラ コレクション (GCC) の使用」。2014 年2 月 9 日閲覧。
- ^ 「Intel、AMD、VIA CPU のマイクロアーキテクチャ: アセンブリ プログラマとコンパイラ メーカー向けの最適化ガイド」(PDF) 。2016年10 月 17 日閲覧。
- ^ 「Chess programming AVX2」。2017年7月10日時点のオリジナルよりアーカイブ。2016年10月17日閲覧。
- ^ 「Intel が Nehalem と Larrabee のプレビューを提供」ExtremeTech、2008 年 3 月 17 日。
- ^ ab 「Intel® Celeron® 6305 プロセッサー (4M キャッシュ、1.80 GHz、IPU 搭載) 製品仕様」。ark.intel.com。2020年11月 10 日閲覧。
- ^ Butler, Michael; Barnes, Leslie; Das Sarma, Debjit; Gelinas, Bob (2011年3月~4月). 「Bulldozer: マルチスレッドコンピューティングパフォーマンスへのアプローチ」(PDF) . IEEE Micro . 31 (2): 6–15. doi :10.1109/MM.2011.23. S2CID 28236214. 2024年5月19日時点のオリジナル(PDF)からアーカイブ。
- ^ 「新機能 - RAD Studio」. docwiki.embarcadero.com . 2021年9月17日閲覧。
- ^ 「GAS Changes」. sourceware.org . 2024年5月3日閲覧。
- ^ ab 「NASM - The Netwide Assembler、付録 C: NASM バージョン履歴」。nasm.us。2024年5 月 3 日閲覧。
- ^ 「YASM 0.7.0 リリースノート」。yasm.tortall.net。
- ^ amd64 の拡張 FPU 状態のサポートを追加、ネイティブ 64 ビットおよび 32 ビット ABI の両方に対応、svnweb.freebsd.org、2012 年 1 月 21 日、 2012 年1 月 22 日取得
- ^ 「FreeBSD 9.1-RELEASE 発表」 。2013年5 月 20 日閲覧。
- ^ x86: YMM 状態に対する Linux カーネルのサポートを追加、2009 年7 月 13 日取得
- ^ Linux 2.6.30 - Linux Kernel Newbies 、2009年7月13日閲覧
- ^ Twitter 、 2010年6月23日閲覧
- ^ 「開発者は、macOS Venturaをサポートされていない10年前のMacで実行できるように進歩しています」。2022年8月23日。
- ^ XSAVE/XRSTOR を使用して FPU の状態を保存/復元するためのサポートを追加します。、2015 年3 月 25 日取得
- ^ 64 ビット ドライバーの浮動小数点サポート、2009 年12 月 6 日取得
- ^ Haswell の新しい命令記述が利用可能になりました、Software.intel.com 、 2012 年1 月 17 日取得
- ^ abc James Reinders (2014 年 7 月 17 日). 「追加の AVX-512 命令」. Intel . 2014 年8 月 3 日閲覧。
- ^ ab 「Intel アーキテクチャ命令セット拡張プログラミング・リファレンス」(PDF)。Intel 。2014 年1 月 29日閲覧。
- ^ abcdefg 「Intel® アーキテクチャ命令セット拡張および将来の機能プログラミング リファレンス」。Intel。2017年10 月 16 日閲覧。
- ^ 「Intel® Software Development Emulator | Intel® Software」。software.intel.com 。 2016年6月11日閲覧。
- ^ Alcorn, Paul (2022年3月2日). 「IntelがAlder LakeのAVX-512サポートを廃止、今度はシリコンで廃止」. Tom's Hardware . 2022年3月7日閲覧。
- ^ Cutress, Ian; Frumusanu, Andrei (2021年8月19日). 「Intel Architecture Day 2021: Alder Lake、Golden Cove、Gracemont の詳細」. AnandTech . 2021年8月25日閲覧。
- ^ Alcorn, Paul (2021年8月19日). 「Intel Architecture Day 2021: Alder Lake Chips, Golden Cove and Gracemont Cores」. Tom's Hardware . 2021年8月21日閲覧。
- ^ Cutress, Ian; Frumusanu, Andrei. 「Intel 12th Gen Core i9-12900K レビュー: ハイブリッド パフォーマンスがハイブリッドの複雑性をもたらす」www.anandtech.com 。2021年11 月 5 日閲覧。
- ^ 「LLVM 3.9 リリースノート — LLVM 3.9 ドキュメント」releases.llvm.org . 2017 年4 月 3 日閲覧。
- ^ 「GCC 4.9 リリース シリーズ — 変更点、新機能、修正 – GNU プロジェクト - フリーソフトウェア財団 (FSF)」。gcc.gnu.org。2017年4 月 3 日閲覧。
- ^ 「Intel® Parallel Studio XE 2015 Composer Edition C++ リリースノート | Intel® Software」。software.intel.com 。2017年4月3日閲覧。
- ^ 「Microsoft Visual Studio 2017 が Intel® AVX-512 をサポート」。2017 年 7 月 11 日。
- ^ 「AMD Zen 5 コンパイラーのサポートが GCC 向けに発表 - 新しい AVX 機能などを確認」www.phoronix.com 。2024年2 月 10 日閲覧。
- ^ Bonshor, Gavin (2023年7月25日). 「IntelがAVX10およびAPX命令セットを発表:ハイブリッドアーキテクチャ向けにAVX-512を統合」AnandTech . 2024年8月21日閲覧。
- ^ Mann, Tobias (2023年8月15日). 「IntelのAVX10は、AVX-512の利点を負担なしで実現することを約束します」。www.theregister.com 。2023年8月20日閲覧。
- ^ 「コンバージド ベクター ISA: Intel® Advanced Vector Extensions 10 テクニカル ペーパー」。Intel。
- ^ abc 「Intel® Advanced Vector Extensions 10 (Intel® AVX10) アーキテクチャー仕様」。Intel。
- ^ Larabel, Michael (2024年10月23日). 「Intel、Diamond Rapidsに先駆けてAMXとISAの新機能向けにGCCコンパイラを準備」. Phoronix . 2024年10月23日閲覧。
- ^ 「Intel® Advanced Performance Extensions (Intel® APX) アーキテクチャ仕様」。Intel。
- ^ Robinson, Dan (2023年7月26日). 「Intel、将来のチップ向けにx86およびベクター命令を公開」www.theregister.com . 2023年8月20日閲覧。
- ^ 「Linux RAID」。LWN。2013年2月17日。2013年4月15日時点のオリジナルよりアーカイブ。
- ^ 「BSAFE暗号化ライブラリ実装の比較」2023年7月25日。
- ^ 「OpenSSL パフォーマンスの向上」。2015 年 5 月 26 日。2017 年2 月 28 日閲覧。
- ^ 「OpenSSL 3.0.0 リリースノート」。GitHub 。 2021年9月7日。
- ^ ヤロス、ミラノ;ストラコシュ、ペトル。ジーハ、ルボミル(2022年5月28日)。 「AVX-512 ベクトル化を使用した Blender でのレンダリング」(PDF)。インテル エクストリーム パフォーマンス ユーザー グループ。オストラヴァ工科大学。2022 年10 月 28 日に取得。
- ^ 「MASSIVE XにはAVX互換プロセッサが必要」Native Instruments . 2019年11月29日閲覧。
- ^ 「dav1d: 最初のリリースのパフォーマンスと完了」。2018年11月21日。 2018年11月22日閲覧。
- ^ 「dav1d 0.6.0 リリースノート」。2020年3月6日。
- ^ 「SVT-AV1 0.7.0 リリースノート」。2019年9月26日。
- ^ 「ArcGIS Data Store 11.2 システム要件」。ArcGIS Enterprise。2024年1 月 24 日閲覧。
- ^ 「Prime95 リリースノート」 。 2022年7月10日閲覧。
- ^ 「Einstein@Home アプリケーション」。
- ^ 「FAQ、Helios」。Helios 。 2021年7月5日閲覧。
- ^ 「Tensorflow 1.6」。GitHub。
- ^ バージョン 19.0 の新機能 – EmEditor (テキスト エディター)
- ^ 「Microsoft Teams のハードウェア要件」。Microsoft。2020年4 月 17 日閲覧。
- ^ 「Teams 会議でバックグラウンド ノイズを減らす」 。Microsoftサポート。2021年1 月 5 日閲覧。
- ^ Langdale, Geoff; Lemire, Daniel (2019). 「1秒あたり数ギガバイトのJSONの解析」VLDBジャーナル. 28 (6): 941–960. arXiv : 1902.08318 . doi :10.1007/s00778-019-00578-5. S2CID 67856679.
- ^ 「simdjson 2.1.0 リリースノート」。GitHub 。 2022年6月30日。
- ^ Larabel、Michael(2023年10月6日)。「OpenJDKがIntelのx86-simd-sortを統合し、データソートを7〜15倍高速化」。Phoronix。
- ^ Larabel, Michael (2022年7月7日). 「Tesseract OCR 5.2エンジンがAVX-512Fで成功を収める」. Phoronix .
- ^ ab Lemire, Daniel (2018 年 9 月 7 日). 「AVX-512: これらの新しい命令をいつ、どのように使用するか」. Daniel Lemire のブログ.
- ^ BeeOnRope. 「SIMD 命令により CPU 周波数が低下する」. Stack Overflow .
- ^ ab Downs, Travis (2020 年 8 月 19 日). 「Ice Lake AVX-512 のダウンクロック」. Performance Matters ブログ.
- ^ 「x86 - 単純な配列処理ループにおける AVX 512 と AVX2 のパフォーマンス」。Stack Overflow。
- ^ 「インテル® エクストリーム・チューニング・ユーティリティー (インテル® XTU) オーバークロック・ガイド: 高度なチューニング」。Intel 。 2021年7月18日閲覧。
リンク先のセクションの画像を参照してください。AVX2 比率は 0 に設定されています。
外部リンク
- Intel イントリンシクス ガイド
- x86 アセンブリ言語リファレンスマニュアル
