
これは、新しいIntel IceLakeチップのライセンスされたダウンロックに関連するAVX2およびAVX-512の動作の研究に関する短い投稿です。
ライセンスダウンロック1は、特定のSIMD命令、特に重い浮動小数点命令または512ビット幅の命令が実行されたときに周波数制限が公称値を下回るというあまり知られていない効果です。StackOverflowのこの回答で
、この種のダウンロックの詳細を読むことができます。このような遷移の低レベルのメカニズムについては、すでに詳細に説明しています。説明書もありますこの問題を念頭に置いて、ワイドSIMD(単一命令複数データ:命令セットアーキテクチャのタイプまたは拡張、たとえば、SIMDレジスタにパックされた要素に対して複数の同一操作を実行できるIntelAVXまたはARMNEON)を利用する方法2。
リンクに関する情報は、AVX-512をサポートする第1世代のチップであるSkylake-SP(SKX、Skylake-SP、Skylake-X、Skylake-Wを含むIntel Skylakeサーバーアーキテクチャ)のコンテキストで記述されています。
Ice Lakeの状況はどうですか?SKXからのAVX-512命令と新しいAVX-512命令セットの両方をサポートする最新のチップがありますか?これらの新しい指示を遠くから見る必要があり、ダウンロックのためにそれらを使用できなくなりますか?
記事を読んで理解するか、[概要]セクションにスキップしてください。
AVX-ターボ
avx-turbo ユーティリティを使用して、コア数と命令セットに対する周波数依存性を測定します。このツールは簡単に機能します。特定の数のコアに対して特定の一連の命令を実行し、テスト中に到達した周波数を測定します。
たとえば、ILPが高い重い256ビット命令の
avx256_fma_tコストを測定するベンチマーク(命令レベルの並列処理:スーパースカラープロセッサの命令間レベルでの並列処理の量)は、次のFMAシーケンスを実行します。
vfmadd132pd ymm0,ymm10,ymm11
vfmadd132pd ymm1,ymm10,ymm11
vfmadd132pd ymm2,ymm10,ymm11
vfmadd132pd ymm3,ymm10,ymm11
vfmadd132pd ymm4,ymm10,ymm11
vfmadd132pd ymm5,ymm10,ymm11
vfmadd132pd ymm6,ymm10,ymm11
vfmadd132pd ymm7,ymm10,ymm11
vfmadd132pd ymm8,ymm10,ymm11
vfmadd132pd ymm9,ymm10,ymm11
; repeat 10x for a total of 100 FMAs
合計で5つのテストを使用して、コマンドラインに入力することにより、軽い256ビットと重い256ビットおよび512ビットの命令とスカラー命令(128ビットSIMDはスカラー命令と同じように動作します)の各組み合わせをテストします。
./avx-turbo --test=scalar_iadd,avx256_iadd,avx512_iadd,avx256_fma_t,avx512_fma_t
アイスレイクの結果
上記のように、最大3.7GHzで動作するミッドレンジのIceLakeクライアントプロセッサであるIceLakei5-1035G4でavx-turboを実行しました。完全な結果は要点に隠されています、そしてここで私は得られた周波数の最も重要な結果を提示します(すべての値はGHzであります):
| 指図書 | 活性核 | |||
|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |
| スカラー/ 128ビット | 3.7 | 3.6 | 3.3 | 3.3 |
| 軽い256ビット | 3.7 | 3.6 | 3.3 | 3.3 |
| ヘビー256ビット | 3.7 | 3.6 | 3.3 | 3.3 |
| 軽い512ビット | 3.6 | 3.6 | 3.3 | 3.3 |
| 重い512ビット | 3.6 | 3.6 | 3.3 | 3.3 |
予想どおり、アクティブコアの数が増えると周波数が最大に低下しますが、各列を下に見て、命令カテゴリへの影響を確認してください。この軸に沿ってダウンロックはほとんど発生しません!アクティブコアが1つしかない場合、幅の広い命令で減少し、わずか100MHzだけ減少します。512ビットの命令を使用すると3700MHzから3600MHzになります。
いくつかのアクティブコアや重い256ビットコアを含む他のすべての場合、ライセンスされたダウンロックはゼロです。すべてがスカラー命令の場合と同じように高速に動作します。
ライセンスの種類
ここに別の変更があります。SKXアーキテクチャには、L0、L1、およびL2の3つのライセンスまたはダウンロック命令のカテゴリがあります。ここで、クライアントICLには、2つ(3)しかなく、SKXの3つのカテゴリに不正確に対応しています。
SKXのライセンスは、次のように命令の幅と重みに対応しています。
| 幅 | 肺 | ヘビー |
|---|---|---|
| スカラー/ 128 | L0 | L0 |
| 256 | L0 | L1 |
| 512 | L1 | L2 |
特に、重い256ビット命令は軽い512ビット命令と同じライセンスでライセンスされていることに注意してください。
クライアントICLでは、スキームは次のとおりです。
| 幅 | 肺 | ヘビー |
|---|---|---|
| スカラー/ 128 | L0 | L0 |
| 256 | L0 | L0 |
| 512 | L1 | L1 |
ここでは、重い256ビット命令と軽い512ビット命令は異なるカテゴリにあります!実際、軽い命令と重い命令の概念はここでは当てはまらないようです。分類は幅4に完全に依存しています。
だから何?
では、これはどうですか?
少なくとも、これは、周波数に対するAVX-512命令のコストのメンタルモデルを変更する必要があることを意味します。このIceLakeチップは、「通常、重大なダウンロックを引き起こす」と言うのではなく、AVX-512がライセンスされたダウンロックをほとんどまたはまったく引き起こさないと言えます。これは、他のIceLakeクライアントチップにも当てはまると思います。
ただし、この期待の変化には重要な欠陥があります。ライセンスされたダウンロックだけではありません。ダウンロックの原因。また、電力、熱、または電流の制限に遭遇する可能性があります。一部の構成では、すべてのコアでワイドSIMD命令を短時間しか実行できず、動作電力制限を超えます。私の場合、テストしていた250ドルのラップトップの冷却は非常に不十分で、電力制限の代わりに、すべてのコアで重い命令を実行した直後に熱放散制限(100°C)に遭遇しました。
ただし、これらの他の制限は、ライセンス制限とは質的に異なります。基本的に5彼らはあなたが使うものに対する支払いの原則を制限します:幅の広い命令または重い命令(あるいはその両方)を使用する場合、これらの命令のみに関連する電力または発熱の微視的な増加のみが発生します。これは、周波数の変更がコアまたはチップ全体で発生し、これらのタイプの命令に関係のない後続の実行に大きな影響を与える一部のライセンス効果とは異なります。
ワイドオペレーションは通常、同様の数のナローオペレーションよりも電力消費が少ないため6、ワイドオペレーションがそれに値するかどうかはすぐにわかります。少なくとも、幅の増加に伴って適切にスケーリングする場合。とはいえ、この問題はほとんどローカルです。隣接するコードの動作には依存しません。
結果
これが私の結論です。
- Ice Lake i5-1035プロセッサは、512ビット命令を実行するときに、1つのアクティブコアで100MHzライセンスのダウンロックのみを示します。
- 他のすべての場合、ダウンロックはありません。
- すべてのコアで512ビット命令を実行するターボ周波数は3.3GHzであり、これは1つのコアでのスカラー操作の最大実行周波数(3.7 GHz)の89%であるため、電力と熱放散の制限内で、このチップの周波数は非常に「フラット」です。中毒。
- SKXアーキテクチャとは異なり、このIce Lakeチップは、
周波数をスケーリングするために「軽い」命令と「重い」命令への分割を使用しません。FMA操作は、軽い操作と同じ方法で実行されます。
つまり、クライアントICLのダウンロックを恐れる必要はありません。これがサーバー側のICLにも当てはまるかどうかは、将来的にのみわかります。
議論とコミュニケーション
この投稿については、HackerNewsで説明できます。
質問やその他のフィードバックがある場合は、元の投稿にコメントを残すことができます。他のICLチップ、たとえばi3およびi7バージョンでの結果にも興味があります。それらがある場合はお知らせください。結果を取得できます。
ノート
- 私はすでにライセンスされたダウンロックを繰り返すことにうんざりしているので、「ダウンロック」という用語を使用することがよくありますが、これはライセンスされたバージョンであり、他のタイプの周波数スロットリングではないことは明らかです。
- ダニエルがいることを注意書き については この くらい 長く、より一度。
- : , - ( ) , , .
- , , ICL FMA : 512- . , 256- : - 2x256- FMA , , 1x512- FMA . , , 512- .
- , , , , , . , , ,
vzerouppervzeroall. - たとえば、1つの512ビット整数加算は、通常、同じ結果を計算するために必要な2つの256ビット操作よりもエネルギー消費が少なくなります。これは、実行のオーバーヘッドが幅の増加とともに非線形に増加するためです(実行自体を除くほとんどすべてが含まれます)。