AVX-512
AVX-512は、2013年7月にIntelが提案したx86命令セットアーキテクチャ(ISA)用の256ビットAdvanced Vector Extensions SIMD命令の512ビット拡張であり、2016年のIntel Xeon Phi x200(Knights Landing)で最初に実装され、[ 1 ]その後、AMDおよびその他のIntel CPU(以下のリストを参照)に多数実装されました。AVX-512は、独立して実装できる複数の拡張機能で構成されています。[ 2 ]このポリシーは、命令ブロック全体を実装するという歴史的要件からの逸脱です。すべてのAVX-512実装では、コア拡張機能であるAVX-512F(AVX-512 Foundation)のみが必要です。
これらの拡張により、ほとんどの256ビット命令が拡張されるだけでなく、新しいデータ変換、スキャッター演算、順列演算など、様々な新しい演算が導入されます。[ 2 ] AVXレジスタの数は16個から32個に増加し、8つの新しい「マスクレジスタ」が追加されました。これにより、変数の選択と命令結果のブレンディングが可能になります。ほとんどのAVX-512対応プロセッサに搭載されているベクトル長(VL)拡張を備えたCPU(「AVX-512対応CPU」の項を参照)では、これらの命令は128ビットおよび256ビットのベクトルサイズでも使用できます。
AVX-512は、Intelがプロセッサに導入した最初の512ビットSIMD命令セットではありません。IntelのLarrabeeプロジェクトから派生した第1世代Xeon Phiコプロセッサで使用されていた以前の512ビットSIMD命令セットは類似していますが、バイナリ互換性がなく、ソース互換性は部分的にしかありませんでした。[ 1 ]
AVX-512の後継は2023年7月に発表されたAVX10である。 [ 3 ] AVX10は命令セットのバージョンを導入することでサポートされている命令の検出を簡素化し、各後続バージョンには前のバージョンのすべての命令が含まれるようになる。AVX10仕様の最初の改訂では、512ビットベクターのサポートはオプションで、IntelはEコアでサポートできるようになった。その後の改訂で、Intelは512ビットベクターを必須にし、PコアとEコアの両方で512ビットベクターをサポートするつもりだ。AVX10の最初のバージョン1では、AVX-512と比べて新しい命令は追加されておらず、512ビットベクターをサポートするプロセッサでは、AVX-512(Intel Sapphire Rapidsプロセッサでサポートされているセット内)と同等である。以降のAVX10バージョンでは新機能が導入される予定である。
命令セット
AVX-512命令セットは、それぞれ固有のCPUID機能ビットを持つ複数の独立したセットで構成されています。ただし、通常は、それらを実装するプロセッサの世代ごとにグループ化されます。
F、CD、ER、PF: Xeon Phi x200 (Knights Landing)および Xeon Scalable ( Skylake SP "Purley") で導入され、最後の 2 つ (ER と PF) は Knights Landing および Knights Mill に固有です。
- AVX-512 Foundation (F) – EVEXコーディングスキームを使用して 、ほとんどの32ビットおよび64ビットベースのAVX命令を拡張し、512ビットレジスタ、演算マスク、パラメータブロードキャスト、組み込み丸めおよび例外制御をサポートします。Knights LandingおよびSkylake Xeonで実装されています。
- AVX-512 競合検出命令 (CD) – より多くのループをベクトル化 できるようにするための効率的な競合検出。Knights Landing [ 1 ]と Skylake Xによって実装されている。
- AVX-512指数および逆数命令 (ER) -指数および逆数演算は超越演算の実装を支援するために設計され、Knights Landingによって実装されました[ 1 ]
- AVX-512 プリフェッチ命令 (PF) - Knights Landing によって実装された新しいプリフェッチ機能[ 1 ]
4VNNIW, 4FMAPS:ナイツミル で導入され、ナイツミルに特有のものです。[ 4 ] [ 5 ]
- AVX-512 ベクトル ニューラル ネットワーク命令ワード可変精度 (4VNNIW) - ディープラーニング、拡張ワード、可変精度用ベクトル命令。
- AVX-512 融合乗算累積パック単精度 (4FMAPS) – ディープラーニング、浮動小数点、単精度のベクトル命令。
VL、DQ、BW: Skylake-X/SP およびCannon Lakeで導入されました。
- AVX-512 ベクトル長拡張(VL) - ほとんどのAVX-512演算を拡張し、XMM(128ビット)およびYMM(256ビット)レジスタでも演算できるようにします[ 6 ]
- AVX-512 ダブルワードおよびクワッドワード命令 (DQ) – 新しい32ビットおよび64ビットのAVX-512命令を追加[ 6 ]
- AVX-512 バイトおよびワード命令 (BW) – AVX-512 を拡張して 8 ビットおよび 16 ビットの整数演算をカバーする[ 6 ]
IFMA、VBMI:キャノンレイク で導入されました。[ 7 ]
- AVX-512 整数融合乗算加算(IFMA) – 52 ビット精度を使用した整数の融合乗算加算。
- AVX-512 ベクトル ビット操作命令 (VBMI)は、AVX-512BW には存在しなかったベクトル バイト置換命令を追加します。
VNNI: Cascade Lake で導入されました。
- AVX-512 ベクトル ニューラル ネットワーク命令 (VNNI) – ディープラーニング用のベクトル命令。
VPOPCNTDQ: ベクトルポピュレーションカウント命令。Knights MillとIce Lakeで導入された。[ 8 ]
VBMI2、BITALG: Ice Lakeで導入されました。[ 8 ]
- AVX-512 ベクトル ビット操作命令 2 (VBMI2) – バイト/ワードのロード、ストア、およびシフトによる連結。
- AVX-512 ビット アルゴリズム (BITALG) – VPOPCNTDQ を拡張するバイト/ワードビット操作命令。
VP2INTERSECT: Tiger Lake で導入されました。
- AVX-512 ベクトルペア交差とマスクレジスタペア (VP2INTERSECT)。
GFNI、VPCLMULQDQ、VAES: Ice Lakeで導入されました。[ 8 ]
- これらはAVX-512の機能そのものではありません。AVX-512と組み合わせることで、GFNI、PCLMULQDQ、AES命令のEVEXエンコード版が可能になります。
BMM: AMD Zen 6 で導入されました。
- AVX-512 ビット操作命令 (BMM) – ビット行列乗算とビット反転演算を含む。[ 9 ]
エンコーディングと機能
AVXとAVX2で使用されるVEXプレフィックスは柔軟性が高いものの、IntelがAVX-512に追加したい機能に対応できる余裕がありませんでした。そのため、EVEXと呼ばれる新しいプレフィックスが定義されました。
VEXと比較して、EVEXには以下の利点があります。[ 5 ]
- 32 個の 512 ビット レジスタを許可する拡張レジスタ エンコーディング。
- ほとんどの AVX-512 命令をマスクするための 8 つの新しい opmask レジスタを追加します。
- ブロードキャストを自動的に実行する新しいスカラー メモリ モードを追加します。
- 各命令に明示的な丸め制御の余地を追加します。
- 新しい圧縮変位メモリアドレス指定モードを追加します。
AVX-512 の拡張レジスタ、SIMD 幅ビット、および opmask レジスタは必須であり、すべて OS からのサポートが必要です。
SIMDモード
AVX-512命令は、128/256ビットのAVX/AVX2命令と性能を損なうことなく混在させることができるように設計されています。しかし、AVX-512VL拡張により、128/256ビットレジスタXMM/YMMでAVX-512命令を使用できるようになったため、ほとんどのSSEおよびAVX/AVX2命令には、オプマスクや追加レジスタなどの新機能にアクセスできるEVEXプレフィックスでエンコードされた新しいAVX-512バージョンがあります。AVX-256とは異なり、新しい命令には新しいニーモニックはありませんが、AVXと名前空間を共有しているため、ソースコードではVEXとEVEXでエンコードされた命令のバージョンを区別することが曖昧になっています。AVX-512Fは32ビットと64ビットの値でのみ動作するため、バイトまたはワードで動作するSSEおよびAVX/AVX2命令は、AVX-512BW拡張(バイトとワードのサポート)でのみ使用できます。[ 5 ]
| 名前 | 拡張セット | レジスター | 種類 |
|---|---|---|---|
| レガシーSSE | SSE–SSE4.2 | xmm0~xmm15 | SSE2 からの単精度浮動小数点数:バイト、ワード、ダブルワード、クワッドワード、および倍精度浮動小数点数 |
| AVX-128(ベックス) | AVX、AVX2 | xmm0~xmm15 | バイト、ワード、ダブルワード、クワッドワード、シングルフロート、ダブルフロート |
| AVX-256(ベックス) | AVX、AVX2 | ymm0~ymm15 | AVX2 の単精度浮動小数点数と倍精度浮動小数点数:バイト、ワード、ダブルワード、クワッドワード |
| AVX-128(エベックス) | AVX-512VL | xmm0~xmm31 (k0~k7) | AVX512BWではダブルワード、クワッドワード、シングルフロート、ダブルフロート:バイトとワード。AVX512 -FP16ではハーフフロート |
| AVX-256 (エベックス) AVX10/256 | AVX-512VL | ymm0~ymm31 (k0~k7) | AVX512BWではダブルワード、クワッドワード、シングルフロート、ダブルフロート:バイトとワード。AVX512 -FP16ではハーフフロート |
| AVX-512 (エベックス) AVX10/512 | AVX-512F | zmm0~zmm31 (k0~k7) | AVX512BW ではダブルワード、クワッドワード、シングルフロート、ダブルフロート: AVX512-FP16 ではバイト、ワード:ハーフフロート |
拡張レジスタ
| 511256 | 255128 | 1270 |
| ZMM0 | YMM0 | XMM0 |
| ZMM1 | YMM1 | XMM1 |
| ZMM2 | YMM2 | XMM2 |
| ZMM3 | YMM3 | XMM3 |
| ZMM4 | YMM4 | XMM4 |
| ZMM5 | YMM5 | XMM5 |
| ZMM6 | YMM6 | XMM6 |
| ZMM7 | YMM7 | XMM7 |
| ZMM8 | YMM8 | XMM8 |
| ZMM9 | YMM9 | XMM9 |
| ZMM10 | YMM10 | XMM10 |
| ZMM11 | YMM11 | XMM11 |
| ZMM12 | YMM12 | XMM12 |
| ZMM13 | YMM13 | XMM13 |
| ZMM14 | YMM14 | XMM14 |
| ZMM15 | YMM15 | XMM15 |
| ZMM16 | YMM16 | XMM16 |
| ZMM17 | YMM17 | XMM17 |
| ZMM18 | YMM18 | XMM18 |
| ZMM19 | YMM19 | XMM19 |
| ZMM20 | YMM20 | XMM20 |
| ZMM21 | YMM21 | XMM21 |
| ZMM22 | YMM22 | XMM22 |
| ZMM23 | YMM23 | XMM23 |
| ZMM24 | YMM24 | XMM24 |
| ZMM25 | YMM25 | XMM25 |
| ZMM26 | YMM26 | XMM26 |
| ZMM27 | YMM27 | XMM27 |
| ZMM28 | YMM28 | XMM28 |
| ZMM29 | YMM29 | XMM29 |
| ZMM30 | YMM30 | XMM30 |
| ZMM31 | YMM31 | XMM31 |
SIMDレジスタファイルの幅は256ビットから512ビットに拡張され、レジスタZMM0~ZMM31は16個から合計32個に拡張されました。これらのレジスタは、AVX拡張命令では256ビットYMMレジスタとして、ストリーミングSIMD拡張命令では128ビットXMMレジスタとしてアドレス指定できます。また、EVEXエンコード形式を使用する場合、従来のAVX命令とSSE命令は、16個の追加レジスタXMM16~XMM31およびYMM16~YMM31を操作できるように拡張できます。
Opmaskレジスタ
AVX-512ベクター命令は、どの値をデスティネーションに書き込むかを制御するために、オペマスクレジスタを指定することができます。命令エンコーディングはこのフィールドに0~7の値をサポートします。ただし、値1~7に対応するマスクとして使用できるのは、オペマスクレジスタk1~k7(k0~k7のうち)のみです。一方、値0はオペマスクレジスタが使用されていないことを示すために予約されています。つまり、マスクされていない操作を示すために、ハードコードされた定数(「k0」の代わりに)が使用されます。特殊なオペマスクレジスタ「k0」は依然として機能する有効なレジスタであり、オペマスクレジスタ操作命令で使用したり、デスティネーションオペマスクレジスタとして使用したりできます。[ 10 ]フラグはオペマスクの動作を制御します。「ゼロ」(マスクで選択されていないすべての値をゼロにする)または「マージ」(選択されていないすべての値をそのままにする)のいずれかになります。マージ動作はブレンド命令と同じです。
opmaskレジスタは通常16ビット幅ですが、AVX-512BW拡張により最大64ビットまで拡張できます。[ 5 ]ただし、実際に使用されるビット数は、マスクされる命令のベクター型によって異なります。32ビットの単精度浮動小数点または倍精度ワードの場合、512ビットレジスタの16個の要素をマスクするために16ビットが使用されます。倍精度浮動小数点および4倍精度ワードの場合、最大8ビットのマスクビットが使用されます。
opmaskレジスタは、本来要素幅を持たないビット単位命令がAVX-512で追加された理由です。例えば、ビット単位のAND、OR、または128ビットシャッフルは、ダブルワードとクアッドワードの両方のバリエーションで存在し、唯一の違いは最終的なマスク処理にあります。
新しいopmask命令
opmaskレジスタには、レジスタを直接操作する新しいミニ拡張命令が追加されました。AVX-512の他の命令とは異なり、これらの命令はすべてVEXエンコードされています。初期のopmask命令はすべて16ビット(ワード)バージョンです。AVX-512DQでは、8つの64ビット値をマスクするニーズに対応するため、8ビット(バイト)バージョンが追加されました。また、AVX-512BWでは、最大64個の8ビット値をマスクできるように、32ビット(ダブル)および64ビット(クアッド)バージョンが追加されました。KORTEST命令とKTEST命令は、マスクレジスタに基づいてx86フラグを設定するために使用できます。これにより、SIMD非対応のx86分岐命令や条件付き命令と併用できます。
| 命令 | 拡張セット | 説明 |
|---|---|---|
KAND | F | ビット論理積マスク |
KANDN | F | ビット論理積NOTマスク |
KMOV | F | マスクレジスタまたは汎用レジスタ間の移動 |
KUNPCK | F | マスクレジスタのアンパック |
KNOT | F | NOTマスクレジスタ |
KOR | F | ビット論理和マスク |
KORTEST | F | ORマスクとフラグの設定 |
KSHIFTL | F | シフトレフトマスクレジスタ |
KSHIFTR | F | シフトライトマスクレジスタ |
KXNOR | F | ビット論理XNORマスク |
KXOR | F | ビット単位の論理XORマスク |
KADD | 体重/失格 | マスクを2つ追加 |
KTEST | 体重/失格 | ビット単位の比較とフラグの設定 |
AVX-512基盤の新しい指示
AVX-512命令の多くは、古いSSEまたはAVX命令のEVEX版です。ただし、いくつかの新しい命令と、新しいAVX-512バージョンに置き換えられた古い命令もあります。新しい命令、または大幅に変更された命令を以下に示します。これらの基本命令には、AVX-512VLおよびAVX-512BWからの拡張も含まれます。これらの拡張は、新しい命令ではなく、これらの命令の新しいバージョンを追加するだけだからです。
マスクを使用してブレンドする
SSE4のブレンド命令にはEVEXプレフィックス版はありません。代わりに、AVX-512には、マスクレジスタをセレクタとして使用する新しいブレンディング命令セットがあります。これらの命令は、後述する一般的なマスク比較命令と組み合わせることで、XOPのVPCMOVに類似した汎用三項演算、つまりCMOVを実装するために使用できます。
ブレンディングはEVEXエンコーディングの不可欠な要素であるため、これらの命令は基本的な移動命令とも考えられます。ゼロイングブレンドモードを使用することで、これらの命令はマスク命令としても使用できます。
| 命令 | 拡張セット | 説明 |
|---|---|---|
VBLENDMPD | F | opmask制御を使用してfloat64ベクトルをブレンドする |
VBLENDMPS | F | opmask制御を使用してfloat32ベクトルをブレンドする |
VPBLENDMD | F | opmask制御を使用してint32ベクトルをブレンドする |
VPBLENDMQ | F | opmask制御を使用してint64ベクトルをブレンドする |
VPBLENDMB | 白黒 | opmask制御を使用してバイト整数ベクトルをブレンドする |
VPBLENDMW | 白黒 | opmask制御を使用して単語整数ベクトルをブレンドする |
マスクと比較
AVX-512Fには4つの新しい比較命令があります。XOPの同等命令と同様に、即値フィールドを用いて8種類の比較方法から選択します。ただし、XOPから派生した命令とは異なり、結果はマスクレジスタに保存され、初期状態ではダブルワードとクワッドワードの比較のみをサポートします。AVX-512BW拡張では、バイト版とワード版が提供されます。これらの命令には2つのマスクレジスタを指定できることに注意してください。1つは書き込み用、もう1つは通常のマスク処理を宣言するためのものです。[ 5 ]
| すぐに | 比較 | 説明 |
|---|---|---|
| 0 | イコライザー | 等しい |
| 1 | LT | 未満 |
| 2 | ル | 以下 |
| 3 | 間違い | ゼロに設定 |
| 4 | NEQ | 等しくない |
| 5 | 新改訳聖書 | より大きいか等しい |
| 6 | NLE | より大きい |
| 7 | 真実 | 1に設定 |
| 命令 | 拡張セット | 説明 |
|---|---|---|
VPCMPD、VPCMPUD | F | 符号付き/符号なしダブルワードをマスクと比較する |
VPCMPQ、VPCMPUQ | F | 符号付き/符号なしクワッドワードをマスクと比較する |
VPCMPB、VPCMPUB | 白黒 | 符号付き/符号なしバイトをマスクと比較する |
VPCMPW、VPCMPUW | 白黒 | 符号付き/符号なしの単語をマスクと比較する |
論理セットマスク
マスクを設定する最後の方法は、論理セットマスクを使用することです。これらの命令はANDまたはNAND演算を実行し、結果値がゼロか非ゼロかに基づいてデスティネーションオペマスクを設定します。比較命令と同様に、これらの命令も2つのオペマスクレジスタを使用します。1つはデスティネーションオペマスクレジスタ、もう1つは通常のオペマスクレジスタです。
| 命令 | 拡張セット | 説明 |
|---|---|---|
VPTESTMD、VPTESTMQ | F | 32 ビットまたは 64 ビットの整数の論理 AND とマスクの設定。 |
VPTESTNMD、VPTESTNMQ | F | 32 ビットまたは 64 ビットの整数の論理 NAND とマスクの設定。 |
VPTESTMB、VPTESTMW | 白黒 | 8 ビットまたは 16 ビットの整数の論理 AND とマスクの設定。 |
VPTESTNMB、VPTESTNMW | 白黒 | 8 ビットまたは 16 ビットの整数の論理 NAND とマスクを設定します。 |
圧縮と拡張
圧縮命令と展開命令は、同名のAPL命令に相当します。これらの命令は、他のAVX-512命令とは少し異なる方法でオペマスクを使用します。圧縮命令は、マスクでマークされた値のみを保存しますが、マークされていない値をスキップし、スペースを確保しないことで、圧縮された状態で保存します。展開命令は逆の動作をし、マスクで指定された数の値をロードし、選択された位置に展開します。
| 命令 | 説明 |
|---|---|
VCOMPRESSPD、VCOMPRESSPS | 疎なパックされた倍精度/単精度浮動小数点値を高密度メモリに格納する |
VPCOMPRESSD、VPCOMPRESSQ | 疎なパックされたダブルワード/クワッドワード整数値を密なメモリ/レジスタに格納する |
VEXPANDPD、VEXPANDPS | 高密度メモリからスパースパックされた倍精度/単精度浮動小数点値をロードします。 |
VPEXPANDD、VPEXPANDQ | 高密度メモリ/レジスタからスパースパックされたダブルワード/クワッドワード整数値をロードします。 |
並べ替え
2入力の完全な順列処理を可能にする、新しい順列命令セットが追加されました。これらの命令はすべて3つの引数、2つのソースレジスタ、1つのインデックスを受け取ります。結果は最初のソースレジスタまたはインデックスレジスタのいずれかを上書きすることで出力されます。AVX-512BWは命令を拡張し、16ビット(ワード)バージョンもサポートします。また、AVX-512_VBMI拡張は命令のバイトバージョンを定義します。
| 命令 | 拡張セット | 説明 |
|---|---|---|
VPERMB | VBMI | パックされたバイト要素を並べ替えます。 |
VPERMW | 白黒 | パックされた単語要素を並べ替えます。 |
VPERMT2B | VBMI | 最初のソースを上書きして完全なバイト順序を変更します。 |
VPERMT2W | 白黒 | 最初のソースを上書きして完全な単語を並べ替えます。 |
VPERMI2PD、VPERMI2PS | F | インデックスを上書きする完全な単精度/倍精度浮動小数点数の並べ替え。 |
VPERMI2D、VPERMI2Q | F | インデックスを上書きして、完全なダブルワード/クワッドワードを並べ替えます。 |
VPERMI2B | VBMI | インデックスを上書きする完全なバイト並べ替え。 |
VPERMI2W | 白黒 | インデックスを上書きして完全な単語を並べ替えます。 |
VPERMT2PS、VPERMT2PD | F | 最初のソースを上書きして、完全な単精度/倍精度浮動小数点の並べ替えを実行します。 |
VPERMT2D、VPERMT2Q | F | 最初のソースを上書きして、完全なダブルワード/クワッドワードを並べ替えます。 |
VSHUFF32x4、、、、VSHUFF64x2VSHUFI32x4VSHUFI64x2 | F | 4 つのパックされた 128 ビット ラインをシャッフルします。 |
VPMULTISHIFTQB | VBMI | クワッドワード ソースからパックされた非整列バイトを選択します。 |
ビット単位の3値論理
追加された2つの新しい命令は、3つの入力間のあらゆる可能なビット演算を論理的に実装できます。これらの命令は、3つのレジスタと8ビットの即値フィールドを入力として受け取ります。出力の各ビットは、入力の対応する3つのビットを参照し、8ビットの即値フィールドの8つの位置のいずれかを選択して生成されます。3ビットでは8通りの組み合わせしかできないため、これにより3入力のあらゆる可能なビット演算を実行できます。[ 5 ] これらはAVX-512Fにおける唯一のビットベクトル命令です。AVX-512DQでは、2つのソースSSEおよびAVXビットベクトル命令AND、ANDN、OR、XORのEVEX版が追加されました。
ダブルワード バージョンとクワッドワード バージョンの違いは、opmask の適用のみです。
| 命令 | 説明 |
|---|---|
VPTERNLOGD、VPTERNLOGQ | ビット単位の3値論理 |
コンバージョン
いくつかの変換命令または移動命令が追加されました。これにより、SSE2 から使用できる変換命令のセットが完成します。
| 命令 | 拡張セット | 説明 |
|---|---|---|
VPMOVQD、、、、、、、、、、、、、、、、、、VPMOVSQDVPMOVUSQDVPMOVQWVPMOVSQWVPMOVUSQWVPMOVQBVPMOVSQBVPMOVUSQBVPMOVDWVPMOVSDWVPMOVUSDWVPMOVDBVPMOVSDBVPMOVUSDB | F | クワッドワードまたはダブルワードをダブルワード、ワード、またはバイト(非飽和、飽和、または飽和符号なし)にダウンコンバートします。SSE4.1の符号/ゼロ拡張命令の逆です。 |
VPMOVWB、、VPMOVSWBVPMOVUSWB | 白黒 | ワードをバイトにダウンコンバートします。不飽和、飽和、または飽和符号なしです。 |
VCVTPS2UDQ、、、、VCVTPD2UDQVCVTTPS2UDQVCVTTPD2UDQ | F | 切り捨てありまたは切り捨てなしで、パックされた単精度または倍精度浮動小数点数をパックされた符号なしダブルワード整数に変換します。 |
VCVTSS2USI、、、、VCVTSD2USIVCVTTSS2USIVCVTTSD2USI | F | 切り捨てありまたは切り捨てなしで、スカラーの単精度または倍精度浮動小数点数を符号なしダブルワード整数に変換します。 |
VCVTPS2QQ、、、、、、、、、VCVTPD2QQVCVTPS2UQQVCVTPD2UQQVCVTTPS2QQVCVTTPD2QQVCVTTPS2UQQVCVTTPD2UQQ | 失格 | 切り捨てありまたは切り捨てなしで、パックされた単精度または倍精度浮動小数点数を、パックされた符号付きまたは符号なしクワッドワード整数に変換します。 |
VCVTUDQ2PS、VCVTUDQ2PD | F | パックされた符号なしダブルワード整数をパックされた単精度または倍精度浮動小数点数に変換します。 |
VCVTUSI2PS、VCVTUSI2PD | F | スカラー符号なしダブルワード整数を単精度または倍精度浮動小数点に変換します。 |
VCVTUSI2SD、VCVTUSI2SS | F | スカラー符号なし整数を単精度または倍精度浮動小数点に変換します。 |
VCVTUQQ2PS、VCVTUQQ2PD | 失格 | パックされた符号なしクワッドワード整数をパックされた単精度または倍精度浮動小数点に変換します。 |
VCVTQQ2PD、VCVTQQ2PS | F | パックされたクワッドワード整数をパックされた単精度または倍精度浮動小数点に変換します。 |
浮動小数点分解
AVX-512F のユニークな新機能の一つに、浮動小数点値を分解する命令と特殊な浮動小数点値を処理する命令があります。これらのメソッドは全く新しいため、スカラーバージョンも存在します。
| 命令 | 説明 |
|---|---|
VGETEXPPD、VGETEXPPS | パックされたfp値の指数をfp値に変換する |
VGETEXPSD、VGETEXPSS | スカラーfp値の 指数をfp値に変換する |
VGETMANTPD、VGETMANTPS | float32/float64ベクトルから正規化された仮数のベクトルを抽出する |
VGETMANTSD、VGETMANTSS | float32/float64スカラーから 正規化された仮数の float32/float64 を抽出します。 |
VFIXUPIMMPD、VFIXUPIMMPS | 特殊なパックされた float32/float64 値を修正 |
VFIXUPIMMSD、VFIXUPIMMSS | 特殊なスカラー float32/float64 値を修正 |
浮動小数点演算
これは新しい浮動小数点演算法の2番目のセットであり、逆数と平方根の逆数の新しいスケーリングと近似計算が含まれています。近似逆数命令は、相対誤差が最大で2 −14であることを保証します。[ 5 ]
| 命令 | 説明 |
|---|---|
VRCP14PD、VRCP14PS | パックされた float32/float64 値の近似逆数を計算します |
VRCP14SD、VRCP14SS | スカラー float32/float64 値の近似逆数を計算する |
VRNDSCALEPS、VRNDSCALEPD | パックされた float32/float64 値を、指定された数の小数ビットを含むように丸める |
VRNDSCALESS、VRNDSCALESD | スカラー float32/float64 値を指定された数の小数ビットを含むように丸める |
VRSQRT14PD、VRSQRT14PS | パックされた float32/float64 値の平方根の近似逆数を計算します。 |
VRSQRT14SD、VRSQRT14SS | スカラー float32/float64 値の平方根の近似逆数を計算します。 |
VSCALEFPS、VSCALEFPD | パックされた float32/float64 値を float32/float64 値でスケールする |
VSCALEFSS、VSCALEFSD | スカラー float32/float64 値を float32/float64 値でスケールする |
放送
| 命令 | 拡張セット | 説明 |
|---|---|---|
VBROADCASTSS、VBROADCASTSD | F、VL | 単精度浮動小数点値/倍精度浮動小数点値をブロードキャストする |
VPBROADCASTB、、、、VPBROADCASTWVPBROADCASTDVPBROADCASTQ | F、VL、DQ、BW | バイト/ワード/ダブルワード/クワッドワードの整数値をブロードキャストする |
VBROADCASTI32X2、、、、、VBROADCASTI64X2VBROADCASTI32X4VBROADCASTI32X8VBROADCASTI64X4 | F、VL、DQ、BW | 2つまたは4つのダブルワード/クワッドワード整数値をブロードキャストする |
その他
| 命令 | 拡張セット | 説明 |
|---|---|---|
VALIGND、VALIGNQ | F、VL | ダブルワードまたはクワッドワードベクトルを整列させる |
VDBPSADBW | 白黒 | 符号なしバイトのダブルブロックパックされた合計絶対差(SAD) |
VPABSQ | F | パックされた絶対値クワッドワード |
VPMAXSQ、VPMAXUQ | F | パックされた符号付き/符号なしクワッドワードの最大値 |
VPMINSQ、VPMINUQ | F | パックされた符号付き/符号なしクワッドワードの最小値 |
VPROLD、、、、、、、、、VPROLVDVPROLQVPROLVQVPRORDVPRORVDVPRORQVPRORVQ | F | ビットを左または右に回転 |
VPSCATTERDD、、、、VPSCATTERDQVPSCATTERQDVPSCATTERQQ | F | 符号付きダブルワードおよびクワッドワードのインデックス を持つスキャッタパックされたダブルワード/クワッドワード |
VSCATTERDPS、、、、VSCATTERDPDVSCATTERQPSVSCATTERQPD | F | 符号付きダブルワードおよびクワッドワードインデックス を持つスキャッタパックされた float32/float64 |
セットごとの新しい指示
競合検出
AVX-512競合検出(AVX-512CD)の命令は、通常は安全にベクトル化できないループ内の要素の競合のないサブセットを効率的に計算できるように設計されています。[ 11 ]
| 命令 | 名前 | 説明 |
|---|---|---|
VPCONFLICTD、VPCONFLICTQ | パックされたダブルワードまたはクワッドワード値のベクトル内の競合を検出する | 最初のソースの各要素を、2番目のソースの同じ場所またはそれより前の場所にあるすべての要素と比較し、結果のビットベクトルを形成します。 |
VPLZCNTD、VPLZCNTQ | パックされたダブルワードまたはクワッドワード値の先頭のゼロビットの数を数える | ベクトル化されたLZCNT命令 |
VPBROADCASTMB2Q、VPBROADCASTMW2D | マスクをベクトルレジスタにブロードキャストする | 8ビットマスクからクワッドワードベクトル、または16ビットマスクからダブルワードベクトル |
指数関数と逆数
AVX-512指数関数および逆数関数(AVX-512ER)命令は、AVX-512ファンデーションの逆数関数よりも精度の高い近似逆数関数命令を含んでおり、相対誤差は最大2 −28です。また、相対誤差が最大2 −23である2つの新しい指数関数も含まれています。[ 5 ]
| 命令 | 説明 |
|---|---|
VEXP2PD、VEXP2PS | パックされた単精度または倍精度浮動小数点値の 近似指数2 xを計算します。 |
VRCP28PD、VRCP28PS | パックされた単精度または倍精度浮動小数点値の近似逆数を計算します |
VRCP28SD、VRCP28SS | スカラー単精度または倍精度浮動小数点値の近似逆数を計算します |
VRSQRT28PD、VRSQRT28PS | パックされた単精度または倍精度浮動小数点値の平方根の近似逆数を計算します。 |
VRSQRT28SD、VRSQRT28SS | スカラー単精度または倍精度浮動小数点値の平方根の近似逆数を計算します。 |
プリフェッチ
AVX-512 プリフェッチ (AVX-512PF) 命令には、 AVX2および AVX-512で導入された新しいスキャッターおよびギャザー機能用の新しいプリフェッチ操作が含まれています。T0プリフェッチはレベル 1 キャッシュへのプリフェッチを意味し、はT1レベル 2 キャッシュへのプリフェッチを意味します。
| 命令 | 説明 |
|---|---|
VGATHERPF0DPS、、、、VGATHERPF0QPSVGATHERPF0DPDVGATHERPF0QPD | 符号付き dword/qword インデックスを使用して、opmask k1 と T0 ヒントを使用して、単精度/倍精度データを含むスパース バイト メモリの場所をプリフェッチします。 |
VGATHERPF1DPS、、、、VGATHERPF1QPSVGATHERPF1DPDVGATHERPF1QPD | 符号付き dword/qword インデックスを使用して、opmask k1 と T1 ヒントを使用して、単精度/倍精度データを含むスパース バイト メモリの場所をプリフェッチします。 |
VSCATTERPF0DPS、、、、VSCATTERPF0QPSVSCATTERPF0DPDVSCATTERPF0QPD | 符号付き dword/qword インデックスを使用して、書き込みマスク k1 と書き込み意図のある T0 ヒントを使用して、単精度/倍精度データを含むスパース バイト メモリの場所をプリフェッチします。 |
VSCATTERPF1DPS、、、、 VSCATTERPF1QPSVSCATTERPF1DPDVSCATTERPF1QPD | 符号付き dword/qword インデックスを使用して、書き込みマスク k1 と T1 ヒントを使用して書き込み目的で単精度/倍精度データを含むスパース バイト メモリの場所をプリフェッチします。 |
4FMAPSと4VNNIW
これら2つの命令セットは、複数の反復処理を実行します。これらは通常、Xeon Phi製品にのみ搭載されています。
| 命令 | 拡張セット | 説明 |
|---|---|---|
V4FMADDPS、V4FMADDSS | 4FMAPS | パック/スカラー単精度浮動小数点融合積和演算(4反復) |
V4FNMADDPS、V4FNMADDSS | 4FMAPS | パック/スカラー単精度浮動小数点融合乗算加算および否定(4 回の反復) |
VP4DPWSSD | 4VNNIW | 符号付きワードのドット積とダブルワード累積(4回の反復) |
VP4DPWSSDS | 4VNNIW | 符号付きワードのドット積とダブルワードの累積および飽和(4回の反復) |
BW、DQ、VBMI
AVX-512DQは、新しいダブルワードおよびクワッドワード命令を追加します。AVX-512BWは、同じ命令のバイト版およびワード版を追加し、AVX-512Fではダブルワード/クワッドワード命令のバイト版およびワード版を追加します。AVX-512BWではワード形式のみとなる一部の命令は、AVX-512_VBMI拡張(、、、)によりバイト形式にVPERMBなります。 VPERMI2BVPERMT2BVPMULTISHIFTQB
マスク命令セットに2つの新しい命令が追加されました:KADDおよびKTEST(AVX-512DQではBおよびW形式、AVX-512BWではDおよびQ形式)。ワード形式のみだった残りのマスク命令は、AVX-512DQではバイト形式、AVX-512BWではダブルワード/クワッドワード形式になりました。はAVX-512BWによっておよびKUNPCKBWに拡張されました。 KUNPCKWDKUNPCKDQ
AVX-512DQ によって追加された命令の中には、AVX-512F では AVX-512 バージョンが取得されなかったいくつかの SSE および AVX 命令があり、その中には 2 つの入力ビット単位命令と整数抽出/挿入命令がすべて含まれています。
完全に新しい手順については以下で説明します。
浮動小数点命令
3つの新しい浮動小数点演算が導入されました。これらはAVX-512に新しく追加されただけでなく、パック/SIMD版とスカラー版の両方が用意されています。
このVFPCLASS命令は、浮動小数点値が8つの特殊な浮動小数点値のいずれかであるかどうかをテストします。8つの値のうちどの値が出力マスクレジスタのビットをトリガーするかは、即値フィールドによって制御されます。VRANGE命令は、即値フィールドの値に応じて最小演算または最大演算を実行します。また、演算が絶対値で行われるかどうか、および符号の処理方法も個別に制御できます。命令はVREDUCE単一のソースを演算し、そのソース値の整数部と、その小数部の即値フィールドで指定されたビット数を減算します。
| 命令 | 拡張セット | 説明 |
|---|---|---|
VFPCLASSPS、VFPCLASSPD | 失格 | パックされた単精度および倍精度浮動小数点値の型をテストします。 |
VFPCLASSSS、VFPCLASSSD | 失格 | スカラーの単精度および倍精度浮動小数点値の型をテストします。 |
VRANGEPS、VRANGEPD | 失格 | パックされた浮動小数点値の範囲制限の計算。 |
VRANGESS、VRANGESD | 失格 | スカラー浮動小数点値の範囲制限計算。 |
VREDUCEPS、VREDUCEPD | 失格 | パックされた浮動小数点値に対して縮約変換を実行します。 |
VREDUCESS、VREDUCESD | 失格 | スカラー浮動小数点値に対して縮約変換を実行します。 |
その他の指示
| 命令 | 拡張セット | 説明 |
|---|---|---|
VPMOVM2D、VPMOVM2Q | 失格 | マスク レジスタをダブル ワードまたはクワッド ワードのベクター レジスタに変換します。 |
VPMOVM2B、VPMOVM2W | 白黒 | マスク レジスタをバイトまたはワード ベクター レジスタに変換します。 |
VPMOVD2M、VPMOVQ2M | 失格 | ダブルワードまたはクワッドワードのベクター レジスタをマスク レジスタに変換します。 |
VPMOVB2M、VPMOVW2M | 白黒 | バイトまたはワード ベクター レジスタをマスク レジスタに変換します。 |
VPMULLQ | 失格 | 乗算パックされたクワッドワードの下位結果を格納します。VPMULLD のクワッドワードバージョンです。 |
VBMI2
VPCOMPRESSとVPEXPANDをバイトおよびワードバリアントで拡張します。シフト命令が新しく追加されました。
| 命令 | 説明 |
|---|---|
VPCOMPRESSB、VPCOMPRESSW | 疎なパックされたバイト/ワード整数値を高密度メモリ/レジスタに格納する |
VPEXPANDB、VPEXPANDW | 高密度メモリ/レジスタからスパースパックされたバイト/ワード整数値をロードする |
VPSHLD | パックされたデータを連結し、論理左シフトする |
VPSHLDV | 連結し、可変長パックデータを左論理シフトする |
VPSHRD | パックされたデータを連結し、右に論理シフトする |
VPSHRDV | 連結および可変シフトパックデータを右論理 |
VNNI
ベクトルニューラルネットワーク命令: [ 12 ] AVX512-VNNIは、後述するEVEXコード命令を追加します。AVX-512Fでは、これらの命令は512ビットベクトルで動作でき、AVX-512VLではさらに128ビットおよび256ビットベクトルのサポートが追加されます。
後にAVX-VNNI拡張により、これらの命令のVEXエンコーディングが追加されましたが、これは128ビットまたは256ビットのベクターでのみ動作します。AVX-VNNIはAVX-512スイートの一部ではなく、AVX-512Fを必要とせず、独立して実装できます。
| 命令 | 説明 |
|---|---|
VPDPBUSD、VPDPBUSDS | 2 番目の入力の 4 組の符号付きバイトのグループを、最初の入力の対応する符号なしバイトと乗算し、それらの積を合計して、出力のダブルワード結果に加算します。VPDPBUSDS結果の符号付き飽和を実行します。 |
VPDPWSSD、VPDPWSSDS | 2 番目の入力の 2 組の符号付きワードのグループを最初の入力の対応する符号付きワードと乗算し、それらの積を合計して出力のダブルワード結果に加算します。VPDPWSSDS結果の符号付き飽和を実行します。 |
IFMA
整数融合乗算加算命令。AVX512-IFMA は、以下に説明するEVEXコード命令を追加します。
これらの命令のVEXエンコーディングは、別途AVX-IFMA命令セット拡張によって定義されています。この拡張はAVX-512スイートの一部ではなく、独立して実装できます。
| 命令 | 拡張セット | 説明 |
|---|---|---|
VPMADD52LUQ | IFMA | 符号なし52ビット整数のパックされた乗算と下位52ビットの積を64ビットのアキュムレータに加算する |
VPMADD52HUQ | IFMA | 符号なし 52 ビット整数のパックされた乗算と上位 52 ビットの積を 64 ビットのアキュムレータに加算します。 |
VPOPCNTDQ と BITALG
| 命令 | 拡張セット | 説明 |
|---|---|---|
VPOPCNTD、VPOPCNTQ | VPOPCNTDQ | ダブルワード/クワッドワードで1に設定されているビットの数を返します。 |
VPOPCNTB、VPOPCNTW | ビタルグ | バイト/ワード内で1に設定されているビットの数を返す |
VPSHUFBITQMB | ビタルグ | バイトインデックスを使用してクワッドワード要素からビットをマスクにシャッフルする |
VP2インターセクト
| 命令 | 拡張セット | 説明 |
|---|---|---|
VP2INTERSECTD、VP2INTERSECTQ | VP2インターセクト | マスクレジスタのペアに対するダブルワード/クワッドワードの交差を計算する |
GFNI
GFNIはスタンドアロンの命令セット拡張であり、AVXまたはAVX-512とは別に有効化できます。CPUがAVXおよびAVX-512Fのサポートを通知しているかどうかに応じて、GFNIサポートは128ビット、256ビット、または512ビットのベクター上で動作するレガシー(SSE)、VEX、またはEVEXコード命令を有効化します。
暗号学では、これらの命令はCamelliaやARIAで使用されているようなRijndaelスタイルのSボックスを実装するために使用できます。[ 13 ] [ 14 ]これらの命令は、ネットワークや信号処理におけるビット操作にも使用できます。[ 15 ]
| 命令 | 説明 |
|---|---|
VGF2P8AFFINEINVQB | ガロア体の逆アフィン変換 |
VGF2P8AFFINEQB | ガロア体のアフィン変換 |
VGF2P8MULB | ガロア体乗算バイト |
VPCLMULQDQ
AVX-512F 対応の VPCLMULQDQ 命令は、EVEX エンコードされた 512 ビット版の PCLMULQDQ 命令を追加します。AVX -512VL 対応の VPCLMULQDQ 命令は、EVEX エンコードされた 256 ビット版と 128 ビット版を追加します。VPCLMULQDQ のみ (つまり、AVX512 非対応の CPU) では、VEX エンコードされた 256 ビット版のみが追加されます (VEX エンコードされた 128 ビット版が利用可能かどうかは、異なる CPUID ビット (PCLMULQDQ と AVX) で示されます)。128 ビットより広い命令のバリエーションは、入力レジスタの各 128 ビット部分に対して同じ操作を実行しますが、異なる 128 ビットフィールドからクワッドワードを選択するように拡張しません (imm8 オペランドの意味は同じで、128 ビットフィールドの下位または上位クワッドワードが選択されます)。
| 命令 | 説明 |
|---|---|
VPCLMULQDQ | キャリーレス乗算クワッドワード |
VAES
VEXおよびEVEXでエンコードされたAES命令。128ビットより広い命令のバリエーションは、入力レジスタの各128ビット部分に対して同じ演算を実行します。VEXバージョンはAVX-512をサポートしなくても使用できます。
| 命令 | 説明 |
|---|---|
VAESDEC | AES復号フローを1ラウンド実行する |
VAESDECLAST | AES復号フローの最終ラウンドを実行する |
VAESENC | AES暗号化フローを1ラウンド実行する |
VAESENCLAST | AES暗号化フローの最終ラウンドを実行する |
BF16
Bfloat16数値を操作する AI アクセラレーション命令。
| 命令 | 説明 |
|---|---|
VCVTNE2PS2BF16 | パックされた単精度数値のベクトル 2 つを、パックされた Bfloat16 数値のベクトル 1 つに変換します。 |
VCVTNEPS2BF16 | パックされた単精度数値のベクトルを、パックされた Bfloat16 数値のベクトルに変換します。 |
VDPBF16PS | 2つのBfloat16ペアのドット積を計算し、結果を1つのパックされた単精度数に累積します。 |
FP16
従来のF16C命令セットを拡張したもので、 binary16浮動小数点数(FP16、float16、または半精度浮動小数点数とも呼ばれる)を包括的にサポートします。新しい命令は、単精度および倍精度浮動小数点数で従来利用可能だったほとんどの演算を実装するほか、新しい複素数命令と変換命令も導入しています。スカラー演算とパック演算がサポートされています。
単精度および倍精度形式の命令とは異なり、半精度オペランドは条件付きでゼロにフラッシュ(FTZ)されることも、設定に基づいて条件付きでゼロとして扱われること( DAZMXCSR )もありません。FP16数値のダイナミックレンジを最大限に活用するため、非正規値はハードウェアによってフルスピードで処理されます。FP32およびFP64数値を生成する命令は、依然としてビットを尊重しますMXCSR.FTZ。[ 16 ]
算術命令
| 命令 | 説明 |
|---|---|
VADDPH、VADDSH | パック/スカラー FP16 数値を追加します。 |
VSUBPH、VSUBSH | パック/スカラー FP16 数値を減算します。 |
VMULPH、VMULSH | パック/スカラー FP16 数値を乗算します。 |
VDIVPH、VDIVSH | パック/スカラー FP16 数値を除算します。 |
VSQRTPH、VSQRTSH | パック/スカラー FP16 数値の平方根を計算します。 |
VFMADD{132, 213, 231}PH、VFMADD{132, 213, 231}SH | パック/スカラー FP16 数値を乗算および加算します。 |
VFNMADD{132, 213, 231}PH、VFNMADD{132, 213, 231}SH | パック/スカラー FP16 数値の否定乗算加算。 |
VFMSUB{132, 213, 231}PH、VFMSUB{132, 213, 231}SH | パック/スカラー FP16 数値の乗算と減算を行います。 |
VFNMSUB{132, 213, 231}PH、VFNMSUB{132, 213, 231}SH | パック/スカラー FP16 数値の乗算と減算を反転します。 |
VFMADDSUB{132, 213, 231}PH | パックされた FP16 数値を乗算して加算 (奇数ベクトル要素) するか、乗算して減算 (偶数ベクトル要素) します。 |
VFMSUBADD{132, 213, 231}PH | パックされた FP16 数値の乗算-減算 (奇数ベクトル要素) または乗算-加算 (偶数ベクトル要素) を行います。 |
VREDUCEPH、VREDUCESH | パック/スカラー FP16 数値の縮約変換を実行します。 |
VRNDSCALEPH、VRNDSCALESH | パック/スカラー FP16 数値を指定された小数ビット数に丸めます。 |
VSCALEFPH、VSCALEFSH | パック/スカラー FP16 数値を 2 の累乗で乗算してスケールします。 |
複雑な算術命令
| 命令 | 説明 |
|---|---|
VFMULCPH、VFMULCSH | パック/スカラー複素数 FP16 数を乗算します。 |
VFCMULCPH、VFCMULCSH | パック/スカラー複素数FP16を乗算します。演算は複素共役形式で行われます。 |
VFMADDCPH、VFMADDCSH | パック/スカラー複素数 FP16 数値を乗算および加算します。 |
VFCMADDCPH、VFCMADDCSH | パック/スカラー複素数FP16の乗算と加算。演算の複素共役形式。 |
おおよその相互指示
| 命令 | 説明 |
|---|---|
VRCPPH、VRCPSH | パック/スカラーFP16数の近似逆数を計算します。近似値の最大相対誤差は2 −11 + 2 −14未満です。 |
VRSQRTPH、 VRSQRTSH | パック/スカラーFP16数の近似逆平方根を計算します。近似値の最大相対誤差は2 −14未満です。 |
比較手順
| 命令 | 説明 |
|---|---|
VCMPPH、VCMPSH | パック/スカラー FP16 数値を比較し、結果をマスク レジスタに格納します。 |
VCOMISH | スカラーFP16数値を比較し、結果をフラグレジスタに格納します。ソースオペランドがQNaNまたはSNaNの場合、例外を通知します。 |
VUCOMISH | スカラーFP16数値を比較し、結果をフラグレジスタに格納します。ソースオペランドがSNaNの場合にのみ例外を通知します。 |
VMAXPH、VMAXSH | ソースのパック/スカラー FP16 数値の各垂直ペアの最大値を選択します。 |
VMINPH、VMINSH | ソースのパック/スカラー FP16 数値の各垂直ペアの最小値を選択します。 |
VFPCLASSPH、 VFPCLASSSH | パック/スカラー FP16 数値を特殊なカテゴリ (NaN、無限大、負のゼロなど) についてテストし、結果をマスク レジスタに格納します。 |
変換手順
| 命令 | 説明 |
|---|---|
VCVTW2PH | パックされた符号付き 16 ビット整数を FP16 数値に変換します。 |
VCVTUW2PH | パックされた符号なし 16 ビット整数を FP16 数値に変換します。 |
VCVTDQ2PH | パックされた符号付き 32 ビット整数を FP16 数値に変換します。 |
VCVTUDQ2PH | パックされた符号なし 32 ビット整数を FP16 数値に変換します。 |
VCVTQQ2PH | パックされた符号付き 64 ビット整数を FP16 数値に変換します。 |
VCVTUQQ2PH | パックされた符号なし 64 ビット整数を FP16 数値に変換します。 |
VCVTPS2PHX | パックされたFP32数値をFP16数値に変換します。F16CVCVTPS2PHとは異なり、VCVTPS2PHXブロードキャストもサポートする異なるエンコーディングを備えています。 |
VCVTPD2PH | パックされた FP64 数値を FP16 数値に変換します。 |
VCVTSI2SH | スカラー符号付き 32 ビットまたは 64 ビット整数を FP16 数値に変換します。 |
VCVTUSI2SH | スカラーの符号なし 32 ビットまたは 64 ビットの整数を FP16 数値に変換します。 |
VCVTSS2SH | スカラー FP32 数値を FP16 数値に変換します。 |
VCVTSD2SH | スカラー FP64 数値を FP16 数値に変換します。 |
VCVTPH2W、VCVTTPH2W | パックされた FP16 数値を符号付き 16 ビット整数に変換します。レジスタVCVTPH2Wに従って値を丸めますMXCSR。VCVTTPH2Wゼロに向かって丸めます。 |
VCVTPH2UW、VCVTTPH2UW | パックされた FP16 数値を符号なし 16 ビット整数に変換します。レジスタVCVTPH2UWに従って値を丸めますMXCSR。VCVTTPH2UWゼロに向かって丸めます。 |
VCVTPH2DQ、VCVTTPH2DQ | パックされた FP16 数値を符号付き 32 ビット整数に変換します。レジスタVCVTPH2DQに従って値を丸めますMXCSR。VCVTTPH2DQゼロに向かって丸めます。 |
VCVTPH2UDQ、VCVTTPH2UDQ | パックされた FP16 数値を符号なし 32 ビット整数に変換します。レジスタVCVTPH2UDQに従って値を丸めますMXCSR。VCVTTPH2UDQゼロに向かって丸めます。 |
VCVTPH2QQ、VCVTTPH2QQ | パックされた FP16 数値を符号付き 64 ビット整数に変換します。レジスタVCVTPH2QQに従って値を丸めますMXCSR。VCVTTPH2QQゼロに向かって丸めます。 |
VCVTPH2UQQ、VCVTTPH2UQQ | パックされた FP16 数値を符号なし 64 ビット整数に変換します。レジスタVCVTPH2UQQに従って値を丸めますMXCSR。VCVTTPH2UQQゼロに向かって丸めます。 |
VCVTPH2PSX | パックされたFP16数値をFP32数値に変換します。F16CVCVTPH2PSとは異なり、VCVTPH2PSXブロードキャストもサポートする異なるエンコーディングを備えています。 |
VCVTPH2PD | パックされた FP16 数値を FP64 数値に変換します。 |
VCVTSH2SI、VCVTTSH2SI | スカラー FP16 数値を符号付き 32 ビットまたは 64 ビットの整数に変換します。レジスタVCVTSH2SIに従って値を丸めますMXCSR。VCVTTSH2SIゼロに向かって丸めます。 |
VCVTSH2USI、VCVTTSH2USI | スカラー FP16 数値を符号なし 32 ビットまたは 64 ビットの整数に変換します。レジスタVCVTSH2USIに従って値を丸めますMXCSR。VCVTTSH2USIゼロに向かって丸めます。 |
VCVTSH2SS | スカラー FP16 数値を FP32 数値に変換します。 |
VCVTSH2SD | スカラー FP16 数値を FP64 数値に変換します。 |
分解手順
| 命令 | 説明 |
|---|---|
VGETEXPPH、VGETEXPSH | パック/スカラー FP16 数値の 指数コンポーネントを FP16 数値として抽出します。 |
VGETMANTPH、VGETMANTSH | パック/スカラー FP16 数値の 仮数部を FP16 数値として抽出します。 |
移動指示
| 命令 | 説明 |
|---|---|
VMOVSH | スカラー FP16 数値をメモリ間またはベクトル レジスタ間で移動します。 |
VMOVW | スカラー FP16 数値をメモリまたは汎用レジスタに移動します。 |
BMM
ビット行列乗算およびビット反転命令。他のAVX-512サブセットとは異なり、AMDによって最初に導入されました。
ビット行列乗算命令は、256ビットおよび512ビットのベクターに対してのみ定義されています。256ビットの各レーンは16×16ビットの行列を表します。512ビット版では、各ベクターには2つの行列が含まれ、演算は並列に実行されます。
ビット反転命令は、128、256、および 512 ビットのベクトルに対して定義されています。
| 命令 | 説明 |
|---|---|
VBMACOR16x16x16 | OR 削減による 16x16 非転置融合 BMM 累積 (BMAC)。 |
VBMACXOR16x16x16 | XOR 削減機能を備えた 16x16 非転置融合 BMM 累積 (BMAC)。 |
VBITREV | バイト境界内でのビット反転。 |
EVEXエンコード版のレガシー命令
| グループ | レガシーエンコーディング | 説明書 | AVX-512拡張 | |||||
|---|---|---|---|---|---|---|---|---|
| SSE SSE2 MMX | AVX SSE3 SSE4 | AVX2 FMA | F | VL | 白黒 | 失格 | ||
| VADD | はい | はい | いいえ | VADDPD、、、、VADDPSVADDSDVADDSS | はい | はい | 北 | 北 |
| ヴァンド | VANDPD、、、、VANDPSVANDNPDVANDNPS | 北 | はい | |||||
| VCMP | VCMPPD、、、、VCMPPSVCMPSDVCMPSS | はい | 北 | 北 | ||||
| VCOM | VCOMISD、VCOMISS | |||||||
| VDIV | VDIVPD、、、、VDIVPSVDIVSDVDIVSS | はい | ||||||
| VCVT | VCVTDQ2PD、、、、、、、、、、、、、、、、、、、、、VCVTDQ2PSVCVTPD2DQVCVTPD2PSVCVTPH2PSVCVTPS2PHVCVTPS2DQVCVTPS2PDVCVTSD2SIVCVTSD2SSVCVTSI2SDVCVTSI2SSVCVTSS2SDVCVTSS2SIVCVTTPD2DQVCVTTPS2DQVCVTTSD2SIVCVTTSS2SI | |||||||
| Vマックス | VMAXPD、、、、VMAXPSVMAXSDVMAXSS | |||||||
| VMIN | VMINPD、、、、VMINPSVMINSDVMINSS | 北 | ||||||
| VMOV | VMOVAPD、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、VMOVAPSVMOVDVMOVQVMOVDDUPVMOVHLPSVMOVHPDVMOVHPSVMOVLHPSVMOVLPDVMOVLPSVMOVNTDQAVMOVNTDQVMOVNTPDVMOVNTPSVMOVSDVMOVSHDUPVMOVSLDUPVMOVSSVMOVUPDVMOVUPSVMOVDQA32VMOVDQA64VMOVDQU8VMOVDQU16VMOVDQU32VMOVDQU64 | はい | はい | |||||
| VMUL | VMULPD、、、、VMULPSVMULSDVMULSS | 北 | ||||||
| VOR | VORPD、VORPS | 北 | はい | |||||
| VSQRT | VSQRTPD、、、、VSQRTPSVSQRTSDVSQRTSS | はい | 北 | |||||
| VSUB | VSUBPD、、、、VSUBPSVSUBSDVSUBSS | |||||||
| ヴコミ | VUCOMISD、VUCOMISS | 北 | ||||||
| ヴンプック | VUNPCKHPD、、、、VUNPCKHPSVUNPCKLPDVUNPCKLPS | はい | ||||||
| VXOR | VXORPD、VXORPS | 北 | はい | |||||
| ベクトラクトプス | いいえ | はい | いいえ | VEXTRACTPS | はい | 北 | 北 | |
| ヴィンサーツプス | VINSERTPS | |||||||
| VPEXTR | VPEXTRB、、、、VPEXTRWVPEXTRDVPEXTRQ | 北 | はい | はい | ||||
| VPINSR | VPINSRB、、、、VPINSRWVPINSRDVPINSRQ | |||||||
| VPACK | はい | はい | はい | VPACKSSWB、、、、VPACKSSDWVPACKUSDWVPACKUSWB | はい | 北 | ||
| VPADD | VPADDB、、、、、、、、、VPADDWVPADDDVPADDQVPADDSBVPADDSWVPADDUSBVPADDUSW | はい | ||||||
| VPAND | VPANDD、、、、VPANDQVPANDNDVPANDNQ | 北 | ||||||
| VPAVG | VPAVGB、VPAVGW | 北 | はい | |||||
| VPCMP | VPCMPEQB、、、、、、、、、VPCMPEQWVPCMPEQDVPCMPEQQVPCMPGTBVPCMPGTWVPCMPGTDVPCMPGTQ | はい | ||||||
| VPMAX | VPMAXSB、、、、、、、、、VPMAXSWVPMAXSDVPMAXSQVPMAXUBVPMAXUWVPMAXUDVPMAXUQ | |||||||
| VPMIN | VPMINSB、、、、、、、、、VPMINSWVPMINSDVPMINSQVPMINUBVPMINUWVPMINUDVPMINUQ | |||||||
| VPMOV | VPMOVSXBW、、、、、、、、、、、、、、VPMOVSXBDVPMOVSXBQVPMOVSXWDVPMOVSXWQVPMOVSXDQVPMOVZXBWVPMOVZXBDVPMOVZXBQVPMOVZXWDVPMOVZXWQVPMOVZXDQ | |||||||
| VPMUL | VPMULDQ、、、、、、、、、VPMULUDQVPMULHRSWVPMULHUWVPMULHWVPMULLDVPMULLQVPMULLW | |||||||
| 副大統領 | VPORD、VPORQ | 北 | ||||||
| VPSUB | VPSUBB、、、、、、、、、VPSUBWVPSUBDVPSUBQVPSUBSBVPSUBSWVPSUBUSBVPSUBUSW | はい | ||||||
| VPUNPCK | VPUNPCKHBW、、、、、、、、、VPUNPCKHWDVPUNPCKHDQVPUNPCKHQDQVPUNPCKLBWVPUNPCKLWDVPUNPCKLDQVPUNPCKLQDQ | |||||||
| VPXOR | VPXORD、VPXORQ | 北 | ||||||
| VPSADBW | VPSADBW | 北 | はい | |||||
| VPSHUF | VPSHUFB、、、、、、、、、、、、、、、、、、、、、、、、、、、VPSHUFHWVPSHUFLWVPSHUFDVPSLLDQVPSLLWVPSLLDVPSLLQVPSRAWVPSRADVPSRAQVPSRLDQVPSRLWVPSRLDVPSRLQVPSLLVWVPSLLVDVPSLLVQVPSRLVWVPSRLVDVPSRLVQVPSHUFPDVPSHUFPS | はい | ||||||
| ベクトラクト | いいえ | はい | はい | VEXTRACTF32X4、、、、、、、、、VEXTRACTF64X2VEXTRACTF32X8VEXTRACTF64X4VEXTRACTI32X4VEXTRACTI64X2VEXTRACTI32X8VEXTRACTI64X4 | 北 | はい | ||
| ヴィンサート | VINSERTF32x4、、、、、、、、、VINSERTF64X2VINSERTF32X8 VINSERTF64x4VINSERTI32X4VINSERTI64X2VINSERTI32X8VINSERTI64X4 | |||||||
| VPABS | VPABSB、、、、VPABSWVPABSDVPABSQ | はい | 北 | |||||
| VPALIGNR | VPALIGNR | 北 | ||||||
| VPERM | VPERMD、、、、、、VPERMILPDVPERMILPSVPERMPDVPERMPSVPERMQ | はい | 北 | |||||
| VPMADD | VPMADDUBSWVPMADDWD | 北 | はい | |||||
| VFMADD | いいえ | いいえ | はい | VFMADD132PD、、、、、、、、、、、、、、VFMADD213PDVFMADD231PDVFMADD132PSVFMADD213PSVFMADD231PSVFMADD132SDVFMADD213SDVFMADD231SDVFMADD132SSVFMADD213SSVFMADD231SS | はい | 北 | ||
| VFMADDSUB | VFMADDSUB132PD、、、、、、VFMADDSUB213PDVFMADDSUB231PDVFMADDSUB132PSVFMADDSUB213PSVFMADDSUB231PS | |||||||
| VFMSUBADD | VFMSUBADD132PD、、、、、、VFMSUBADD213PDVFMSUBADD231PDVFMSUBADD132PSVFMSUBADD213PSVFMSUBADD231PS | |||||||
| VFMSUB | VFMSUB132PD、、、、、、、、、、、、、、VFMSUB213PDVFMSUB231PDVFMSUB132PSVFMSUB213PSVFMSUB231PSVFMSUB132SDVFMSUB213SDVFMSUB231SDVFMSUB132SSVFMSUB213SSVFMSUB231SS | |||||||
| VFNMADD | VFNMADD132PD、、、、、、、、、、、、、、VFNMADD213PDVFNMADD231PDVFNMADD132PSVFNMADD213PSVFNMADD231PSVFNMADD132SDVFNMADD213SDVFNMADD231SDVFNMADD132SSVFNMADD213SSVFNMADD231SS | |||||||
| VFNMSUB | VFNMSUB132PD、、、、、、、、、、、、、、VFNMSUB213PDVFNMSUB231PDVFNMSUB132PSVFNMSUB213PSVFNMSUB231PSVFNMSUB132SDVFNMSUB213SDVFNMSUB231SDVFNMSUB132SSVFNMSUB213SSVFNMSUB231SS | |||||||
| VGATHER | VGATHERDPS、、、、VGATHERDPDVGATHERQPSVGATHERQPD | |||||||
| VPGATHER | VPGATHERDD、、、、VPGATHERDQVPGATHERQDVPGATHERQQ | |||||||
| VPSRAV | VPSRAVW、、VPSRAVDVPSRAVQ | はい | ||||||
AVX-512搭載CPU
- インテル
- ナイツランディング(Xeon Phi x200): [ 1 ] [ 17 ] AVX-512 F、CD、ER、PF
- ナイツミル(Xeon Phi x205):[ 8 ] AVX-512 F、CD、ER、PF、4FMAPS、4VNNIW、VPOPCNTDQ
- Skylake-SP、Skylake-X:[ 18 ] [ 19 ] [ 20 ] AVX-512 F、CD、VL、DQ、BW
- キャノンレイク:[ 8 ] AVX-512 F、CD、VL、DQ、BW、IFMA、VBMI
- カスケードレイク:AVX-512 F、CD、VL、DQ、BW、VNNI
- クーパーレイク:AVX-512 F、CD、VL、DQ、BW、VNNI、BF16
- アイスレイク、[ 8 ]ロケットレイク: [ 21 ] [ 22 ] AVX-512 F、CD、VL、DQ、BW、IFMA、VBMI、VBMI2、VPOPCNTDQ、BITALG、VNNI、VPCLMULQDQ、GFNI、VAES
- Tiger Lake(PentiumとCeleronを除く。ただし、一部のレビュワーはAVX-512対応のCeleron 6305のCPU-Zスクリーンショットを掲載している[ 23 ] [ 24 ]): [ 25 ] AVX-512 F、CD、VL、DQ、BW、IFMA、VBMI、VBMI2、VPOPCNTDQ、BITALG、VNNI、VPCLMULQDQ、GFNI、VAES、VP2INTERSECT
- Alder Lake(Intelによる公式サポートは一度もなく、新しいCPUでは完全に削除されている注1):[ 26 ] [ 27 ] AVX-512 F、CD、VL、DQ、BW、IFMA、VBMI、VBMI2、VPOPCNTDQ、BITALG、VNNI、VPCLMULQDQ、GFNI、VAES、BF16、VP2INTERSECT、FP16
- Sapphire Rapids [ 28 ]以降のPコアのみのXeonプロセッサ: AVX-512 F、CD、VL、DQ、BW、IFMA、VBMI、VBMI2、VPOPCNTDQ、BITALG、VNNI、VPCLMULQDQ、GFNI、VAES、BF16、FP16
- ケンタウロステクノロジー
- AMD
- Zen 4 : [ 31 ] [ 32 ] [ 33 ] [ 34 ] [ 35 ] AVX-512 F、CD、VL、DQ、BW、IFMA、VBMI、VBMI2、VPOPCNTDQ、BITALG、VNNI、VPCLMULQDQ、GFNI、VAES、BF16
- Zen 5 : [ 36 ] AVX-512 F、CD、VL、DQ、BW、IFMA、VBMI、VBMI2、VPOPCNTDQ、BITALG、VNNI、VPCLMULQDQ、GFNI、VAES、BF16、VP2INTERSECT
- Zen 6 : [ 37 ] AVX-512 F、CD、VL、DQ、BW、IFMA、VBMI、VBMI2、VPOPCNTDQ、BITALG、VNNI、VPCLMULQDQ、GFNI、VAES、BF16、VP2INTERSECT、FP16、BMM
サブセット | F | CD | 救急外来 | PF | 4FMAPS | 4VNNIW | VPOPCNTDQ | VL | 失格 | 白黒 | IFMA | VBMI | VNNI | BF16 | VBMI2 | ビタルグ | VPCLMULQDQ | GFNI | VAES | VP2インターセクト | FP16 | BMM |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ナイツランディング(Xeon Phi x200、2016) | はい | はい | いいえ | |||||||||||||||||||
| ナイツミル(Xeon Phi x205、2017) | はい | いいえ | ||||||||||||||||||||
| Skylake-SP、Skylake-X(2017) | いいえ | いいえ | はい | いいえ | ||||||||||||||||||
| キャノン・レイク(2018) | はい | いいえ | ||||||||||||||||||||
| カスケード湖(2019) | いいえ | はい | いいえ | |||||||||||||||||||
| クーパー湖(2020) | はい | いいえ | ||||||||||||||||||||
| アイスレイク(2019) | はい | いいえ | はい | いいえ | ||||||||||||||||||
| タイガーレイク(2020) | はい | いいえ | ||||||||||||||||||||
| ロケットレイク(2021) | いいえ | |||||||||||||||||||||
| アルダー・レイク(2021) | 部分注1 | 部分注1 | いいえ | |||||||||||||||||||
| 禅4(2022) | はい | はい | いいえ | |||||||||||||||||||
| サファイア・ラピッズ (2023) | いいえ | はい | いいえ | |||||||||||||||||||
| 禅5(2024) | はい | いいえ | ||||||||||||||||||||
| Zen 6(未定) | はい | |||||||||||||||||||||
^注1 :IntelはAlder Lake 上でAVX-512ファミリーの命令を公式にはサポートしていません。2022年初頭、IntelはAlder Lakeマイクロプロセッサにおいて、顧客がAVX-512を有効にできないように、シリコン内でAVX-512を無効化(フューズオフ)し始めました。 [ 38 ] BIOSとマイクロコードリビジョンのレガシーな組み合わせを持つ古いAlder LakeファミリーCPUでは、AVX-512用のシリコンを含まないすべての効率コアを無効化した状態でも、AVX-512ファミリーの命令を実行することができました。 [ 39 ] [ 40 ] [ 26 ]
パフォーマンス
インテル® ベクトル化アドバイザー(バージョン2017以降)は、ネイティブAVX-512パフォーマンスおよびベクトルコード品質分析(「Core」、Xeon、およびインテル® Xeon Phi™プロセッサー向け)をサポートしています。従来のホットスポット・プロファイル、アドバイザーの推奨事項、そしてインテル® コンパイラーのベクトル化診断の「シームレスな」統合に加えて、アドバイザー・サーベイ分析では、AVX-512 ISAメトリックと、散布図、圧縮/展開、マスク使用率といった新しいAVX-512固有の「特性」も提供されます。[ 41 ] [ 42 ]
一部のプロセッサ(主にIce Lake以前のIntel)では、AVX-512命令は、以前のものよりもさらに大きな周波数スロットリングを引き起こす可能性があり、混合ワークロードではペナルティとなります。この追加のダウンクロックは、512ビットのベクター幅によって引き起こされ、実行される命令の性質に依存します。AVX-512の128ビット部分または256ビット部分(AVX-512VL)を使用する場合は、このダウンクロックは発生しません。そのため、gccとclangは、Intelターゲットではデフォルトで256ビットベクターを優先して使用します。[ 43 ] [ 44 ] [ 45 ]
C/ C++コンパイラーは、AVX-512を最も効果的に使用するために、ループの展開とパイプラインのストールの防止を自動的に処理します。つまり、言語の組み込み関数を使用してAVX-512の使用を強制しようとするプログラマーは、ソースコードに明示的に記述されたループに遭遇したときに、コンパイラーによって生成されたコードと比較してパフォーマンスが低下することがあります。[ 46 ]また、C/C++コードでAVX-512組み込み関数を使用すると、単純に記述されたC/C++と比較してパフォーマンスが向上する場合があります。[ 47 ]
受付
AVX-512の応用例は数多くあり、メディア処理、暗号化、ビデオゲーム、[ 48 ]ニューラルネットワーク、[ 49 ]さらにはソートにAVX-512を採用しているOpenJDKなどがある。[ 50 ]
2020年によく引用される発言で、リーナス・トーバルズは「AVX-512が苦痛の死を遂げ、インテルが魔法の命令を作ってベンチマークで良い結果を出すのではなく、実際の問題を修正し始めることを望む」と述べている[ 51 ]。彼はトランジスタ予算がコアの追加と整数性能の向上に費やされることを望み、浮動小数点ベンチマークを「嫌悪」している[ 52 ]。
参照
- AArch64 § スケーラブルベクトル拡張 (SVE) – 非常に広いビット幅をサポートする新しいベクトル命令セット (VFP と NEON を補完) と、ハードウェアでサポートされる最大幅に自動的に適応できる単一のバイナリコード
- FMA命令セット(FMA)
- XOP命令セット(XOP)
参考文献
- クッスワーム、ダニエル (2022). 『C++とアセンブリ言語による最新の並列プログラミング:AVX、AVX2、AVX-512を用いたX86 SIMD開発』ニューヨーク、ニューヨーク州: Apress Media LLC. ISBN 978-1-4842-7918-2. OCLC 1304243196 .
- ^ a b c d e f James Reinders (2013年7月23日). 「AVX-512命令」 . Intel . 2013年8月20日閲覧。
- ^ a bクスヴルム 2022、p. 223。
- ^ Bonshor, Gavin (2023年7月25日). 「IntelがAVX10とAPX命令セットを発表:ハイブリッドアーキテクチャ向けにAVX-512を統合」 . AnandTech . 2023年7月25日時点のオリジナルよりアーカイブ。 2024年8月21日閲覧。
- ^ 「Intelがプロセッサにディープラーニング命令を追加」 2016年10月14日。
- ^ a b c d e f g h「Intelアーキテクチャ命令セット拡張プログラミング・リファレンス」(PDF) . Intel . 2014年1月29日閲覧。
- ^ a b c James Reinders (2014年7月17日). 「AVX-512の追加命令」 . Intel . 2014年8月3日閲覧。
- ^ Anton Shilov. 「PC向けIntel『Skylake』プロセッサはAVX-512命令をサポートしない」 Kitguru.net . 2015年3月17日閲覧。
- ^ a b c d e f「Intelアーキテクチャ命令セット拡張および将来の機能プログラミングリファレンス」 Intel 2017年10月16日閲覧。
- ^ 「[PATCH] AMD znver6プロセッサのサポートを追加」。2025年11月19日。
- ^ 「インライン asm のドキュメントでは、k0 (X86 AVX-512) がゼロにハードワイヤードされていると誤って記載されています · Issue #94977 · rust-lang/Rust」。GitHub 。
- ^ 「AVX-512アーキテクチャ/Demikhovskyポスター」(PDF) . Intel . 2014年2月25日閲覧。
- ^ 「Intel® Deep Learning Boost」(PDF) . Intel . 2021年10月11日閲覧。
- ^ Kivilinna, Jussi (2023年4月19日). "camellia-simd-aesni" . GitHub .
新しいx86-64プロセッサは、Camellia s-boxをより簡単に実装し、さらに優れたパフォーマンスを実現するGalois Field New Instructions (GFNI)もサポートしています。
- ^ユ・テヒ;キヴィリンナ、ユッシ。チョ・チュンヒ (2023) 「AVX ベースの ARIA ブロック暗号アルゴリズムの高速化」。IEEE アクセス。11 : 77403–77415。Bibcode : 2023IEEEA..1177403Y。土井:10.1109/ACCESS.2023.3298026。
- ^ Towner, Daniel; Kinsella, Ray (2021年12月9日). 「Galois Field New Instructions (GFNI) テクノロジーガイド」 . Intel Corporation .
- ^ 「Intel® AVX512-FP16 アーキテクチャー仕様、2021年6月、リビジョン1.0、Ref. 347407-001US」(PDF) . Intel. 2021年6月30日. 2021年7月4日閲覧。
- ^ 「Intel Xeon Phiプロセッサー製品概要」 Intel 2016年10月12日閲覧。
- ^ 「IntelがXシリーズ・プラットフォームを発表:最大18コア、36スレッド、価格は242ドルから2,000ドル」 Ars Technica 2017年5月30日閲覧。
- ^ 「Intel Advanced Vector Extensions 2015/2016: GNUコンパイラコレクションでのサポート」(PDF) . Gcc.gnu.org . 2016年10月20日閲覧。
- ^ Patrizio, Andy (2015年9月21日). 「Intelの2016年Xeonロードマップがリーク」 . Itworld.org . 2016年10月21日時点のオリジナルよりアーカイブ。 2016年10月20日閲覧。
- ^ 「Intel Core i9-11900K レビュー - 世界最速のゲーミングプロセッサー?」 www.techpowerup.com 2021年3月30日。
- ^ "「 gccに rocketlake を追加する」コミット。gcc.gnu.org 。
- ^ 「Intel Celeron 6305 プロセッサー(4M キャッシュ、1.80 GHz、IPU 搭載)製品仕様」ark.intel.com。2020年10月18日時点のオリジナルよりアーカイブ。2020年11月10日閲覧。
- ^ラップトップ Murah Kinerja Boleh Diadu | HP 14S DQ2518TU、2021 年 6 月 18 日、2021 年8 月 8 日に取得
- ^ 「GNUコンパイラコレクション(GCC)の使用:x86オプション」 . GNU . 2019年10月14日閲覧。
- ^ a bイアン・カトレス、アンドレイ・フルムサヌ「Intel第12世代Core i9-12900Kレビュー:ハイブリッドパフォーマンスがハイブリッドの複雑さをもたらす」 www.anandtech.com 。 2021年11月4日時点のオリジナルよりアーカイブ。 2021年11月5日閲覧。
- ^ Larabel, Michael. 「Linux上のIntel Core i9 12900K "Alder Lake" AVX-512」www.phoronix.com . 2021年11月8日閲覧。
- ^ Larabel, Michael. 「AVX-512パフォーマンス比較:AMD Genoa vs. Intel Sapphire Rapids & Ice Lake」 www.phoronix.com . 2023年1月19日閲覧。
- ^ 「サーバークラスのCPUと統合AIコプロセッサテクノロジーを搭載した業界初の高性能x86 SOC」。2022年8月2日。2019年12月12日時点のオリジナルよりアーカイブ。
- ^ 「x86、x64 命令レイテンシ、メモリレイテンシ、CPUID ダンプ (instlatx64)」。users.atw.hu。
- ^ 「AMD Zen 4ベースのRyzen CPUは最大24コア、AVX512ベクターのサポートを搭載する可能性」 Hardware Times、2021年5月23日。 2021年9月2日閲覧。
- ^ Hagedoorn, Hilbert (2021年5月18日). 「AMD、驚異的な96コアのEPYCプロセッサを開発中」 . Guru3D.com . 2021年5月25日閲覧。
- ^ clamchowder (2021年8月23日). 「Gigabyte Leakの詳細」 . Chips And Cheese . 2022年6月10日閲覧。
- ^ W1zzard (2022年5月26日). 「AMDがZen 4の技術に関する質問にロバート・ハロック氏に回答」 . TechPowerUp . 2022年5月29日閲覧。
- ^ Larabel, Michael (2022年9月26日). 「Ryzen 9 7950XにおけるAMD Zen 4 AVX-512パフォーマンス分析」 . www.phoronix.com .
- ^ Larabel, Michael (2024年2月10日). 「AMD Zen 5コンパイラーのサポートがGCCで開始 - 新しいAVX機能などを確認」www.phoronix.com .
- ^ Larabel, Michael (2025年11月19日). 「AMD、AMD Zen 6向けGNU Binutilsパッチをリリース - AVX-512の新機能を確認」www.phoronix.com .
- ^ 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日時点のオリジナルよりアーカイブ。 2021年8月25日閲覧。
- ^ Alcorn, Paul (2021年8月19日). 「Intel Architecture Day 2021: Alder Lakeチップ、Golden Cove、Gracemontコア」 . Tom's Hardware . 2021年8月21日閲覧。
- ^ 「Intel Advisor XE 2016 Update 3 の新機能 - Intel ソフトウェア」Software.intel.com。2016年10月20日閲覧。
- ^ 「Intel Advisor - Intel ソフトウェア」 . Software.intel.com . 2016年10月20日閲覧。
- ^ Cordes, Peter. 「SIMD命令によるCPU周波数の低下」 . Stack Overflow .
- ^ Cordes, Peter. 「TigerlakeのGCC自動ベクトル化でZMMレジスタではなくYMMレジスタが使用されるのはなぜか」。Stack Overflow。
- ^ 「LLVM 10.0.0 リリースノート」。
- ^ Matthew Kolbe (2023年10月10日).ライトニングトーク: SIMD組み込み関数を活用して大幅な速度低下を実現する方法 - Matthew Kolbe - CppNow 2023. C++Now . 2023年10月15日閲覧– YouTube経由.
- ^ Clausecker, Robert (2023年8月5日). 「AVX-512命令によるUnicode文字のトランスコーディング」.ソフトウェア:実践と経験. 53 (12): 2430–2462 . arXiv : 2212.05098 . doi : 10.1002/spe.3261 .
- ^ Szewczyk, Chris (2021年11月24日). 「RPCS3 PS3エミュレーターは、AVX-512対応のIntel Alder Lake CPUで大幅なパフォーマンス向上を実現」 . PC Gamer . 2023年10月11日閲覧。
- ^アンドレ、カルネイロ;セルパ、マテウス(2021年9月5日)。 「AVX-512 上の軽量ディープラーニング アプリケーション」。2021 IEEE コンピュータと通信シンポジウム (ISCC)。アテネ:IEEE。 pp. 1–6 . doi : 10.1109/ISCC53001.2021.9631464。
- ^ Parasa, Srinivas (2023年5月30日). 「JDK-8309130: x86_64 AVX512 intrinsics for Arrays.sort methods (int, long, float and double arrays)」 . OpenJDK . 2023年10月11日閲覧。
- ^ Tung, Liam (2020年7月13日). 「Linus Torvalds: IntelのAVX-512が苦痛の死を迎えることを願う」 . ZDNet . 2023年10月11日閲覧。
- ^ Torvalds, Linus (2020年7月11日). 「Alder LakeとAVX-512」 . realworldtech.com . 2023年10月11日閲覧。