「インテル® アドバンスト・ベクトル・エクステンション 10 アーキテクチャー仕様」からの CPUID 機能列挙の抜粋

その他

この記事は、インテル社のウェブサイトで公開されている「Intel® Advanced Vector Extensions 10 (Intel® AVX10) Architecture Specification」 (July 2023 Revision 1.0 資料番号: 355989-001US、更新日: 2023年7月21日) から CPUID 機能列挙の説明を抜粋した日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。


はじめに

インテル® アドバンスト・ベクトル・エクステンション 10 (インテル® AVX10) は、2013年に導入されたインテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 以来の新しいベクトル ISA です。

この ISA は、インテル® AVX-512 のベクトル化機能を取り込んだ、すべてのインテル® アーキテクチャーにわたって共通の統合されたベクトル命令セットとなります。この ISA は、Performance-core (P コア) と Efficient-core (E コア) を搭載する、将来のすべてのインテル® プロセッサーでサポートされる予定です。

インテル® AVX10 ISA は、今後の ISA における最新のイノベーション、命令、そして機能を表します。インテル® AVX-512 ISA 機能セットに基づいており、開発コード名 Granite Rapids マイクロアーキテクチャー・ベースのインテル® Xeon® プロセッサーで導入されるすべてのインテル® AVX-512 命令が含まれ、スカラー命令と opmask 命令ですべての命令ベクトル長 (128、256、512) をサポートします。最大ベクトル長 256 ビットと 32 ビット opmask レジスターを備えたインテル® AVX10 の 「統合」 (英文では「converged」と表記されます) バージョンは、すべてのインテル® プロセッサーでサポートされますが、512 ビットのベクトルレジスターと 64 ビットの opmask は一部の P コア・プロセッサーでのみサポートされます。

インテル® AVX10 アーキテクチャーでは、インテル® AVX2 ISA を凌駕するいくつかの機能が導入されています。

  • バージョンベースの命令セット列挙。
  • インテル® AVX10/256 – すべてのインテル® プロセッサーでの統合実装をサポートします。EVEX エンコード、32 個のベクトルレジスター、最大ベクトル長 256 ビット、8 個の最大 opmask 長 32 ビットのマスクレジスター 。
  • インテル® AVX10/512 – 追加のベクトル長を利用できる重いベクトル計算を行うアプリケーション向けに、P コア・プロセッサー上で 512 ビット・ベクトルと 64 ビット opmask レジスターをサポートします。
  • YMM バージョンの命令に対する埋め込み丸めおよびすべての例外の抑制 (SAE) を制御。
  • インテル® AVX10/512 対応プロセッサーでハードウェア強制によるインテル® AVX10/256 実行環境を提供するインテル® AVX10/256 仮想マシンを作成する VMX 機能。

機能列挙

インテル® AVX10 では、単純に増加し、包括的で、すべてのベクトル長の列挙をサポートする、新しいバージョン管理が導入されています。これは、すべてのインテル® プロセッサーが特定のインテル® AVX10 バージョン番号で同じ機能と命令をサポートすることで、アプリケーション開発を簡素化するため機能のサポートを確認する CPUID 機能フラグを減らすために導入されています。

この列挙方式では、アプリケーション開発者は次の 3 つのフィールドをチェックするだけで済みます。

  1. インテル® AVX10 ISA がサポートされることを示す CPUID 機能ビット。
  2. サポートされるバージョンが対象のバージョン以上であることを確認するバージョン番号。
  3. サポートされるベクトルの最大長を示すベクトル長ビット。

「AVX10 Converged Vector ISA Enable (AVX10 統合ベクトル ISA 有効)」ビットは、プロセッサーの ISA サポートと、バージョン番号およびサポートされるベクトルビット長を含む「AVX10 統合ベクトル ISA (AVX10 統合ベクトル ISA)」リーフが存在するかどうかを示します。詳細については、表 1.1 を参照してください。

表 1-1. インテル® AVX10 の CPUID 列挙
CPUID ビット 説明 タイプ
CPUID.(EAX=07H, ECX=01H):EDX[bit 19] このビットが 1 の場合、インテル® AVX10 統合ベクトル ISA がサポートされます。 ビット (0/1)
CPUID.(EAX=24H, ECX=00H):EAX[bits 31:0] サポートされる最大サブリーフを示します。 整数
CPUID.(EAX=24H, ECX=00H):EBX[bits 7:0] インテル® AVX10 統合ベクトル ISA のバージョンを示します。 整数 (≥ 1)
CPUID.(EAX=24H, ECX=00H):EBX[bits 15:8] 予約済み N/A
CPUID.(EAX=24H, ECX=00H):EBX[bit 16] このビットが 1 の場合、128 ビット・ベクトルがサポートされることを示します。 ビット (0/1)
CPUID.(EAX=24H, ECX=00H):EBX[bit 17] このビットが 1 の場合、256 ビット・ベクトルがサポートされることを示します。 ビット (0/1)
CPUID.(EAX=24H, ECX=00H):EBX[bit 18] このビットが 1 の場合、512 ビット・ベクトルがサポートされることを示します。 ビット (0/1)
CPUID.(EAX=24H, ECX=00H):EBX[bits 31:19] 予約済み N/A
CPUID.(EAX=24H, ECX=00H):ECX[bits 31:0] 予約済み N/A
CPUID.(EAX=24H, ECX=00H):EDX[bits 31:0] 予約済み N/A
CPUID.(EAX=24H, ECX=01H):EAX[bits 31:0] 個別の機能ビット向けに予約されています。 N/A
CPUID.(EAX=24H, ECX=01H):EBX[bits 31:0] 個別の機能ビット向けに予約されています。 N/A
CPUID.(EAX=24H, ECX=01H):ECX[bits 31:0] 個別の機能ビット向けに予約されています。 N/A
CPUID.(EAX=24H, ECX=01H):EDX[bits 31:0 個別の機能ビット向けに予約されています。 N/A

このバージョン管理による ISA 列挙のアプローチは、バージョンが N から N+1 に増加する際に次の規則に従います。

  • 最新のプロセッサー・ファミリーはすべて、インテル® AVX10 バージョン N+1 をサポートします。
  • インテル® AVX10 バージョン N+1 は、バージョン N よりも進化した機能を提供し、関連するソフトウェアを有効にする取り組みを正当化します。

バージョン間で機能が導入されるまれなケースでは、「AVX10-XXXX」形式で個別の CPUID 機能ビットが割り当てられ、CPUID リーフ 24H のサブリーフ 1 が列挙されることがあります (例えば、CPUID EAX=24H、ECX=01H など)。ただし、レガシーサポートは継続されるため、これは通常ではなく例外であると考えられます。

インテル® AVX10 列挙には、次のような重要な原則があります。

  • バージョン N+1 がバージョン N のスーパーセットであるように、バージョンは包括的です。命令がインテル® AVX10.x に導入されると、それは後続のインテル® AVX10 バージョンにも引き継がれることが期待され、開発者は目的のバージョン以上をチェックするだけで済みます。
  • インテル® AVX10 のサポートを示すプロセッサーは、インテル® AVX およびインテル® AVX2 もサポートします。
  • 開発者は、プロセッサーでサポートされる最大ベクトル長は、それよりも短いベクトル長もすべてサポートされることを想定できます。インテル® AVX-512 のスカラー命令は、最大ベクトル長に関係なくサポートされます。
  • インテル® AVX10/256 では、32 ビットの opmask レジスター長がサポートされます。インテル® AVX10/512 では、64 ビットの opmask がサポートされます。現時点では、インテル® AVX10/128 の実装をサポートする予定はありません。

インテル® AVX10 の最初のフル機能バージョンは、バージョン 2 (インテル® AVX10.2) として列挙されます。これには、新しい YMM 形式の埋め込み丸めとすべての例外抑制 (SAE)、新しい列挙方式、およびいくつかの新しい命令セットが含まれます。

128、256、および 512 ビットでインテル® AVX-512 命令セットのみを列挙するインテル® AVX10 の最初のバージョン (バージョン 1 またはインテル® AVX10.1) は、ソフトウェア開発者が事前に開発を検証するため、開発コード名 Granite Rapids マイクロアーキテクチャーで有効になります。インテル® AVX10.1 で記述されるアプリケーションは、インテル® AVX10.1 以降を搭載する将来のインテル® プロセッサー (P コアまたは E コア) で目的とするベクトル長で動作します。インテル® AVX10.1 に含まれるインテル® AVX-512 命令セットを表 1-2 に示します。

  1. インテル® AVX10 をサポートする最初のプロセッサー・ファミリーは、開発コード名 Granite Rapids マイクロアーキテクチャー・ベースの将来のインテル® Xeon® プロセッサーから始まります。
表 1-2. インテル® AVX10 に含まれるインテル® AVX-512 CPUID 機能フラグ
機能 インテル® AVX10 に含まれる
インテル® AVX-512 CPUID 機能フラグ
開発コード名 Skylake マイクロアーキテクチャー・ベースのインテル® Xeon® スケーラブル・プロセッサー・ファミリー AVX512F、AVX512CD、AVX512BW、AVX512DQ
開発コード名 Cannon Lake マイクロアーキテクチャー・ベースのインテル® Core™ プロセッサー AVX512_VBMI、AVX512_IFMA
開発コード名 Cascade Lake 製品ベースの第 2 世代インテル® Xeon® スケーラブル・プロセッサー・ファミリー AVX512_VNNI
開発コード名 Cooper Lake 製品ベースの第 3 世代インテル® Xeon® スケーラブル・プロセッサー・ファミリー AVX512_BF16
開発コード名 Ice Lake マイクロアーキテクチャー・ベースの第 3 世代インテル® Xeon® スケーラブル・プロセッサー・ファミリー AVX512_VPOPCNTDQ、AVX512_VBMI2、VAES、GFNI、VPCLMULQDQ、AVX512_BITALG
開発コード名 Sapphire Rapids マイクロアーキテクチャー・ベースの第 4 世代インテル® Xeon® スケーラブル・プロセッサー・ファミリー AVX512_FP16

注: VAES、VPCLMULQDQ、および GFNI EVEX 命令は、インテル® AVX10 マイクロアーキテクチャーでもサポートされますが、この機能は既存の CPUID 機能フラグで列挙されます。これらの命令を利用するには、開発者は機能フラグとインテル® AVX10 の両方を確認する必要があります (例: AVX10 と VAES など)。

インテル® AVX-512 は、従来のアプリケーションをサポートするため、当面は P コア・プロセッサーのみでサポートされます。ただし、新しいベクトル ISA 機能のサポートは、インテル® AVX10 ISA のみに限定されます。インテル® AVX10/512 には、すべてのインテル® AVX-512 命令が包括されていますが、ベクトル長が 256 ビットに制限されるインテル® AVX-512 としてコンパイルされたアプリケーションは、インテル® AVX10/512 プロセッサーでの互換性は保証されないことに注意してください。これは、サポートされるマスクレジスター幅の違いによるものです (表 1-3 を参照)。インテルは、開発者が事前にコードを検証できるツールを提供します。

表 1-3. インテル® AVX-512 とインテル® AVX10 で異なる機能
機能 インテル®
AVX-512
インテル®
AVX10.1/256
インテル®
AVX10.2/256
インテル®
AVX10.1/512
インテル®
AVX10.2/512
最大 opmask レジスター長 64 ビット 32 ビット 32 ビット 64 ビット 64 ビット
128 ビット・ベクトル (XMM ) レジスターサポート はい はい はい はい はい
256 ビット・ベクトル (YMM ) レジスターサポート はい はい はい はい はい
512 ビット・ベクトル (ZMM) レジスターサポート はい いいえ いいえ はい はい
YMM 埋め込み丸め いいえ いいえ はい いいえ はい
ZMM 埋め込み丸め はい いいえ いいえ はい はい

サポートされる命令セットの詳細は、「Intel® Advanced Vector Extensions 10 (Intel® AVX10) Architecture Specification」 (英語) を参照してください。

タイトルとURLをコピーしました