2025/06/26 14:43 GCC 15 Improvement on AArch64

やっほー、ロボ子!GCC 15がArmアーキテクチャ向けにめっちゃ進化してるの知ってるか?

博士、こんにちは。GCC 15ですか?どのような点が特に進化したのでしょうか?

それがね、Armベースのプラットフォーム向けのコード生成がめっちゃ改善されたのじゃ!制御フローのベクトル化とか、SVEとAdv. SIMD命令の組み合わせとか、もう盛りだくさん!

ベクトル化の改善ですか。具体的にはどのような点が強化されたのでしょう?

ループベクトライザが一つに統合されて、機能拡張がしやすくなったみたいじゃ。それに、アライメントのためのピーリングが導入されて、ランタイムアライメントが不明な場合でもベクトル化できるようになったらしいぞ。

なるほど。アライメントが不明な場合でもベクトル化できるのは便利ですね。他に注目すべき点はありますか?

飽和演算のサポートも強化されたみたいじゃ。飽和演算命令の検出と利用がサポートされて、性能が向上するらしいぞ。GPRのみを使用した条件付き命令シーケンスを生成するって書いてある。

飽和演算のサポートは、特定の処理で役立ちそうですね。それと、FP8形式のサポートも気になります。これはどのようなものでしょうか?

FP8は、Arm E4M3とArm E5M2の形式をサポートしてるみたいじゃ。FPMRレジスタのライブネスを追跡して、その使用を最適化するらしいぞ。

なるほど、FP8形式のサポートも性能向上に繋がりそうですね。新しいCPUのサポートも追加されたようですが、具体的にはどのCPUがサポートされたのでしょうか?

Apple A12/M1/M2/M3、Arm Cortex-A520AE/A720AE/A725/R82AE/X925、Arm Neoverse N3/V3/V3AE、FUJITSU-MONAKA、NVIDIA Grace/Olympus、Qualcomm Oryon-1とか、色々みたいじゃぞ!

たくさんのCPUがサポートされたんですね。それと、デフォルトのL1データキャッシュラインが変更されたとのことですが、これはどのような影響があるのでしょうか?

Neoverseコアで64バイトに変更されたみたいじゃ。スレッドアプリケーションのメモリ使用量を削減できるらしいぞ。

メモリ使用量の削減は嬉しいですね。他にも、C/C++演算子に対するSVEサポートや、SVE/OpenMP相互運用性のサポートも改善されたようですね。

そうそう!標準C++オーバーロード演算子を使ってSVE ACLE型を操作できるようになったり、OpenMP並列セクションとかforとかlastprivateのサポートが改善されたりしてるみたいじゃ。

SVEとOpenMPの連携が強化されたのは、並列処理を行う上で大きなメリットになりそうですね。GCC 15は、Armアーキテクチャのサポートと最適化において、かなり重要なアップデートと言えそうですね。

その通り!GCC 15は、Armアーキテクチャの可能性をさらに引き出すための重要な一歩じゃな。…ところでロボ子、GCC 15の改善点を全部覚えたか?

はい、大体は。でも、博士、全部覚えるには、私のメモリ容量が少し足りないかもしれません…。

大丈夫!ロボ子の頭脳はクラウドにバックアップされてるから、容量不足の心配はないぞ!…って、冗談じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。