Coelacanth's Dream

Meteor Lake GPU GT2/GT3 の EU数

Intel の Lionel Landwerlin 氏により、Mesa3D ライブラリ、ドライバーに Meteor Lake GPU の EU数と GPU構成に関するパッチ、マージリクエストが投稿されている。

パッチは Intel GPU がハードウェア内部に持つ Performance Counter Unit を用いた性能測定において、Meteor Lake GPU のサポートを追加するものとなる。
ハードウェア内部のユニットを用いる関係上、パッチには Meteor Lake GPU の EU数や GPU構成の情報が含まれる。

Meteor Lake GT2/GT3

パッチでは Meteor Lake-M/P 共通して、EU数が 64基以下は GT2、それに当てはまらず、かつ 128基以下の場合は GT3 の設定ファイルを適用している。
Meteor Lake からは CPU/GPU/SoC 部をそれぞれタイル (ダイ) に分けて搭載するタイルアーキテクチャが採用されるが、恐らく現状では GT2 (EU 最大 64基)、GT3 (EU 最大 128基) の GPUタイルの構成が用意されているのではないかと思われる。

    +   case INTEL_PLATFORM_MTL_M:
    +   case INTEL_PLATFORM_MTL_P:
    +      if (intel_device_info_eu_total(devinfo) <= 64)
    +         return intel_oa_register_queries_mtlgt2;
    +      if (intel_device_info_eu_total(devinfo) <= 128)
    +         return intel_oa_register_queries_mtlgt3;
    +      return NULL;

また、設定ファイルを見ると、GT2 は Slice 0 Xe Core 3 までの、GT3 は Slice 1 Xe Core 3 までの設定が用意されている。
それらの記述から、Meteor Lake GPU (Xe-LPG) でも Xe-HPG と同じ Render Slice あたり Xe-Core 4基 (4x EU 16基) の構成を採り、そして GT2 は Render Slice 1基、GT3 は Render Slice 2基という規模であることが読み取れる。

    +    <counter name="Slice1 Xe Core3 Input Available"
    +             symbol_name="Sampler13InputAvailable"
    +             underscore_name="sampler13_input_available"
    +             description="The percentage of time in which slice1 Xe core3 sampler input is available"
    +             data_type="float"
    +             max_equation="100"
    +             units="percent"
    +             semantic_type="duration"
    +             equation="C 4 READ 100 UMUL $GpuCoreClocks FDIV"
    +             availability="$GtSlice1XeCore3"
    +             mdapi_group="GPU/Sampler"
    +             mdapi_usage_flags="Tier3 Overview Frame Batch Draw"
    +             mdapi_supported_apis=""
    +             mdapi_hw_unit_type="dualsubslice"
    +             />

Meteor Lake における、製品情報やドキュメント中では L2、ドライバー中では L3 とされているキャッシュの詳細は不明だが、キャッシュバンク数については Xe-HPG と同じ設定だとすると GT2 はバンク数 6基、GT3 はバンク数 8基となる。
キャッシュバンクあたりのサイズも同じ 512KiB である場合、GT2 は 3072KiB、GT3 は 4096KiB となる。

    static void
    update_l3_banks(struct intel_device_info *devinfo)
    {
       if (devinfo->ver != 12)
          return;
    
       if (devinfo->verx10 >= 125) {
          if (devinfo->subslice_total > 16) {
             assert(devinfo->subslice_total <= 32);
             devinfo->l3_banks = 32;
          } else if (devinfo->subslice_total > 8) {
             devinfo->l3_banks = 16;
          } else {
             devinfo->l3_banks = 8;
          }
       } else {
          assert(devinfo->num_slices == 1);
          if (devinfo->subslice_total >= 6) {
             assert(devinfo->subslice_total == 6);
             devinfo->l3_banks = 8;
          } else if (devinfo->subslice_total > 2) {
             devinfo->l3_banks = 6;
          } else {
             devinfo->l3_banks = 4;
          }
       }
    }

今回のパッチから、Meteor Lake GPU (Xe-LPG) GT3 では DG2-G11/ACM-G11 と EU数では同規模の EU 128基になると見られるが、Tiger Lake GPU GT2 の EU 96基、L3キャッシュ 3840KiB と比べると向上幅が小さいように感じるかもしれない。
しかし、Meteor Lake GPU (Xe-LPG) ではレイトレーシングや Mesh Shader のサポート、ハードウェア的な FP64 データタイプのサポートが復活する等、機能の追加や改良が施されている。
あとはより高速なメモリのサポートによるメモリ帯域の向上が期待できる。

参考リンク