後藤弘茂のWeekly海外ニュース

Armが次々世代CPUコア「Matterhorn」の技術を発表

機械学習にフォーカスしたパフォーマンス拡張

 ARMは、米サンノゼで同社の技術カンファレンス「ARM Techcon」を、10月8日~10日まで開催している。初日のキーノートスピーチでは、次々世代のCortex-AクラスCPUコアアーキテクチャ「Matterhorn(マッターホルン:英語読みではマッターホーン)」の新演算命令や、Cortex-Aコアへのサイドチャネルアタック対策のセキュリティ機能の実装、Cortex-Mへのカスタム命令の取り込み、ゲームエンジンUnityのARMコア群への最適化などが発表された。新しいサーバーCPUコアIPなども、カンファレンス期間中に発表される見込みだ。

 ArmのIan Smythe氏(Vice President Marketing Operations, Arm)は、Cortex系のCPUコアの今後の技術的な方向性について説明を行なった。同氏は業界のトレンドとして、半導体プロセスがどんどん複雑となり高コストになっていると指摘。その問題に対するクリアな解答はドメインスペシフィック(領域特化)コンピューティングだと説明する。

ドメインスペシフィックコンピューティングの時代が来るとArmは説明
将来のワークロードに対応するためには包括的なトータルコンピュートソリューションが必要とArmは説明

 また、サイバー犯罪が大きな課題となっていること、製品フォーカスからソリューションフォーカスへと変わっていること、IPの境界を越えて最適化する必要が出ていることを指摘。そうした問題に対して、Armはシステム的なアプローチとして「トータルコンピュート(Total Compute)」を推進して行くと説明した。

ArmのIan Smythe氏(Vice President Marketing Operations, Arm)

 Armがトータルコンピュートと言っているのは、コンピューティングの性能を引き上げるだけでなく、セキュリティやソフトウェア&ツールまで包括的なソリューションの提案だ。トータルコンピュート自体は、マーケティングキャッチフレーズだが、需要な要素を含んでいる。

次世代CPUコアの3つのポイント

Matterhornでは新命令セットARMv8.6-Aをサポート

 まず、パフォーマンス拡張では、ドメインスペシフィックな拡張として、深層学習向けの新命令をMatterhornで導入する。新命令によって、機械学習のマトリックス演算性能を、Cortex-A73比で10倍に引き上げる。

 「機械学習では、Cortex-A75/55でドットプロダクト命令を(SIMD)に導入した。Cortex-A76ではさらに性能を2倍にした。そして、Herculesの後の世代となるMatterhornではk、新しい命令をアーキテクチャに導入する。マトリックス乗算(Matrix Multiply)、『MatMul』と呼ぶ命令で、CPUの性能をさらに大幅に引き上げる」とSmythe氏は語る。

Matterhornではマトリックス演算の命令が追加へ
マトリックス演算命令「MatMul」の追加によってマトリックス演算性能は10倍に

 ArmのCortex-A/NeoverseクラスCPUの命令セットは「ARMv8-A」。現在、ARMv8-Aは小数点下のバージョンアップが続いている。今回発表された新しいマトリックス乗算命令MatMulは次期バージョンの「ARMv8.6-A」に取りこまれるという。CPUにベクタ命令だけでなく、マトリックス演算型の命令が加わることになる。といっても、NVIDIAがベクタプロセッサであるGPUに、本格的なマトリックス演算ユニット「テンサーコア」を取り込んだ例とは少し異なる。

 ARMがARMv8.6で取り込むマトリックス命令MatMulの実行ユニットは、比較的小規模なユニットだ。レジスタも128-bitの従来のベクタ長のものを使う。データ精度は16-bitの「bfloat16」で、128-bitレジスタに収めた2x4のbfloat16の値を、もう1つのレジスタの2x4のbfloat16と乗算。その結果を32-bit単精度FP32として出力し、別なFP32の値と加算する。性能向上は、現行のCortex-A77に対して5倍程度となる。

 ここで、ポイントは、ARMがbfloat16をデータフォーマットに採用したことだ。bfloat16(Brain Floating Point 16)は、ニューラルネットワーク用途を前提として提案された新しい浮動小数点数のフォーマットだ。Googleが採用し、Intelも続いているが、ARMも2020年のMatterhornコアから採用する。

ダイナミックレンジを重視したbfloat16フォーマット
PDF版はこちら

 従来のIEEE 754の浮動小数点は、FP32(32-bit 単精度浮動小数点数)が、符号部(Sign) 1-bit、指数部(Exponent) 8-bit、仮数部(Mantissa) 23-bitで構成されている。bfloat16では符号部(Sign) 1-bit、指数部(Exponent) 8-bit、仮数部(Mantissa) 7-bitと、FP32と同じ指数部のダイナミックレンジを備える。データサイズを半分にしながら、ダナミックレンジはFP32と同等で、ダイナミックレンジが重要となるニューラルネットワークに適したフォーマットだ。

 ARMは、深層学習向けプロセッサである「ARM ML」アーキテクチャでは、bfloat16を採用していない。これは、ターゲットが推論であるためで、トレーニングで有用性の高いbfloat16は対応しなかった。しかし、CPU側では、今後、bfloat16を採用する。これは、データセンター向けのNeoverseも睨んだ拡張と見られる。

bfloat16のダイナミックレンジの概念図
PDF版はこちら

サイドチャネル攻撃に対するセキュリティ対策

 セキュリティでは、ここ数年話題となっているCPUアーキテクチャに対するサイドチャネル攻撃(MeltdownやSpectreなど)への対策が挙げられた。ARMは、この問題に対してマイクロアーキテクチャレベルで対策を講じる。具体的には「メモリタギング(Memory Tagging)」や「ポインタオーセンティケーション(Pointer Authentication)」などを実装する。

 メモリタギングでは、メモリリージョンに4-bitのタグをつける。CPUからのメモリアクセスでは、アクセスするアドレスを格納したレジスタのタグと、メモリのタグを比較。タグカラーが一致した場合のみ、アクセスを許可する。タグは4-bitと小さいため、再利用されるが、それでも悪意のあるプログラムからのアクセスを高確率で防ぐことができる。メモリタギングの応用で、ポインタや分岐ターゲットアイデンティファイヤも保護する。

セキュリティではプラットフォームレベルのセキュリティから、サイドチャネルアタック対策のインプロセスセキュリティ、アプリケーションレベルのセキュリティまで
メモリアクセスやスタックアクセスに対するセキュリティ機能を統合

ゲームエンジンとの提携を発表

 このほか、Smythe氏のセッションでは、ソフトウェアエコシステムの発展の一環としてゲームエンジンベンダーのUnityとのパートナーシップが発表された。これまでも、UnityのエンジンはArm系SoCで走っていた。今後は、両社はパートナーシップを発展され、より最適化が進んだソフトウェアとハードウェアの統合を目指す。

 具体的にはUnityのレンダリングパイプラインをArmコアに最適化、マルチコアでの性能を発揮するマルチスレッドコードを生成できる「Data Oriented Tech Stack(DOTS)」をArmコアに最適化、UnityのARソリューション「AR Foundation」もArmコアの性能を引き出すことができるようにする。Unityは、Unityエンジンにおいて、Armのニューラルネットワークコアにも対応すると謳っている。

ArmはUnityとのパートナーシップを発表
スマートフォンゲームのエンジンではトップを独走するunity
UnityエンジンをArmコア群に最適化する
レンダリングエンジンもArmのGPUコアにより最適化する
CPUコア数が増えるスマートフォンの性能を引き出す
Armが力を入れるスマートフォンベースのARソリューションもUnityが後押し