コラム

Core Ultraプロセッサ(シリーズ3)の「Xe3 GPU」の改良点をさらに深掘り 今後の取り組みもチェック!(1/5 ページ)

Intelが2025年末に一部を出荷する予定の「Core Ultraプロセッサ(シリーズ3)」(開発コード名:Panther Lake)は、「Xe3 GPU」なる新しいGPUコアを搭載する。この記事では演算エンジン回りを中心に、Xe3 GPUをもう少し深掘りしていく。

 Intelが2025年末に一部をリリースする予定の「Core Ultraプロセッサ(シリーズ3)」(開発コード名:Panther Lake)には「Xe3 GPU」と呼ばれる新型GPUコア(GPUタイル)が搭載される。前回はこのGPUの概要と、大まかなパフォーマンスを紹介した。

 後編となる本記事では、Xe3 GPUの演算器について“深掘り”すると共に、同GPUの付帯機能について紹介していく。


GPUコアに関するセッションの説明を担当した、Intelのトーマス・ピーターセン氏(アーキテクチャ/グラフィックス/ソフトウェア担当フェロー)。NVIDIAでGPUのテクニカルマーケティングを担当していた経歴を持つ(写真提供:Intel)

Xe3 GPUのXVEを深掘り

 続いて、Xe3 GPUのシェーダープロセッサたる「Xe Vector Engine(XVE)」について深掘りしてみよう。

advertisement

 Xe3 GPUのXeコアは「第3世代」を称しているが、前編でも触れた通り基本設計はIntel Arc BシリーズやCore Ultra 200Vプロセッサ用内蔵GPUとして採用された「Xe2 GPU(開発コード名:Battlemage)」を色濃く受け継いでいる。というか、ほぼBattlemageのままだ。

 下図で示した通り、Xeコア1基当たりの演算器は128基構成のままとなっている。


Xe3 GPUのXeコアにおけるXVEの構成。図中の「+33% L1$/SLM」は何を意味するのか……?

L1キャッシュ/SLMの容量は33%増し

 Xe3 GPUのSIMD16演算ユニットにおける単位演算器は、初代「Xeアーキテクチャ」から変わらず32bit浮動小数点演算器のままとなっている。1基のXVEは、512bitのベクトル演算器(32bit×16レーンSIMD)ということになる。

 ここで気になるのは、上図の「+33% L1$/SLM」という記述。これはどういう意味なのだろうか。

 「L1$」はL1キャッシュを意味する(Intelはキャッシュを「$」と表記することが多い)。「SLM」は「Shared Local Memory(共有ローカルメモリ)」だ。SLMは、同一のXeコア内にあるXVEがリニアなアドレス空間を通してアクセスできる汎用(はんよう)的なSRAM領域だ。

 L1キャッシュ/SLMの容量は「Xe2アーキテクチャ」では192KBだったものが、今回は「+33%」増量されて256KBとなった。ということで、図中の「+33%」は容量の増加を意味する。

 実際の動作では、Xeコア単位で稼働する「カーネル実行」の際に、カーネルが指定した割合でL1キャッシュとSLMの容量が定義される。Intelによると、SLMにより多くの容量を割り当てることが多いとのことだ。

 L1キャッシュの増量は、プログラム実行速度の向上に直結する。一方でSLMの増量については、「Compute Shader(コンピュートシェーダー)」などで“明示的に”活用しない限りパフォーマンス向上には結び付かない。「Mesh Shader(メッシュシェーダー)」の動作の仕組みはCompute Shaderに近いので、SLMの増量がパフォーマンス向上に結びつくかもしれない(ゲーム側のシェーダーコードがSLMサイズの可変に対応している場合に限られるが)。

 なお、L1キャッシュ/SLMの256KBという容量には「L1命令キャッシュ(L1I$)」は含まれていない。今回、L1I$の増量については言及がなかったので、Xe2アーキテクチャと同じ96KBだと思われる。

基本設計は変わらずも、処理できるスレッド数は増加

 Xe3 GPUにおけるXVEのブロックダイアグラムを見てみると、図中に「SIMD16 Native ALUs」「3way Co-issue」「Extended math&FP64」「Xe Matrix Extensions」という記載が見られるが、これらは全てXe2アーキテクチャの仕様を受け継いでおり、大枠として変化はない。


Xe3 GPUのXVEのブロックダイアグラム

 ダイアグラムを見れば分かる通り、3way Co-issue(3ウェイ同時発行)は「浮動小数点演算(FP64含む)」「整数演算および超越関数演算(INT/Extended Math)」「XMX」の3種類の命令を同時発行することを意味する。

 そして上図左側の「Up to 25% more Threads」「Variable Register Allocation」「FP8 Dequantization Support」の3点は、Xe3 GPUにおける拡張ポイントになる。

 Up to 25% more Threadsは、XVEにおいて実行できるスレッド数が25%増えたことを意味する。具体的には、従来は1基当たり最大8スレッドだったものが10スレッドとなった。このことは、Variable Register Allocation(可変レジスター配置)と深く関係しているので詳細は後述する。

 Xe/Xe2アーキテクチャ、そしてXe3 GPUでも、1基のXVEが持つ「汎用レジスタファイル(GRF)」は「512bit(64バイト)×1024本」あるので合計64KBとなっている。この点は各世代で変わりない。一方でXe/Xe2アーキテクチャでは、GRFを128本を割り当てて実行する「小規模スレッド」と、同じく256本を割り当てて実行する「大規模スレッド」の2種類しかない。となると、実行できる最大数は以下の通りとなる。

  • 小規模スレッド:1024本÷128本=8スレッド
  • 大規模スレッド:1024本÷256本=4スレッド

 小規模スレッドと大規模スレッドを混在実行する場合、XVE1基当たりの実行スレッド数は4~8ということになる

 一方で、IntelによるとXe3 GPUではGRFの数を32本の粒度で可変割り当てできるように改善したという。これが「Variable Register Allocation」だ。ハードウェア上、Xe3 GPUではXVE1基当たり最大10スレッドまで実行できるとのことなので、GRFを「32本/32スレッド(1024本÷32本=32スレッド)」あるいは「64本/16スレッド(1024本÷64本=16スレッド)」で割り当てるモードはないと思われる。

 ただし、IntelはGRFを「96本/10スレッド(1024本÷96本≒10スレッド)」で割り当てるモードが存在することは明言しており、これが「Up to 25% more Threads」の言わんとするところだ。一応、計算式は以下の通りとなる。

1024本÷96本=10スレッド(従来の小規模スレッドの25%増し)

 Intelは明言していないものの、計算上は「160本モード(6スレッド)」「192本モード(5スレッド)」「224本モード(4スレッド)」も存在する可能性がある。

FP8演算の変換機能をサポート

 最後の「FP8 Dequantization Support」は、メモリに格納されている8bit浮動小数点(FP8)形式の数値を上位の高精度演算形式に変換(Dequantization)するというものだ。具体的には、FP8を「BF16」「FP16」「FP32」といった16bitや32bitの浮動小数点形式に変換可能だ。

 また、Xe3 GPUではFP8演算において符号1bit/指数部4bit/仮数部3bitからなる「E4M3」形式(別名「HF8(Hybrid Float8)」形式)に初対応した。表現範囲は約±448なので、推論演算により向いているとされる。

 なお、FP8のもう1つの演算形式で、符号1bit/指数部5bit/仮数部2bitからなる「E5M2」形式(別名「BF8(Brain-Float8)」形式)については、Xe2アーキテクチャの段階で対応済みとなっている。こちらの表現範囲は±57344程度で、学習用途に適している。

       | 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.