Armは2月26日(英国時間)、エッジAIに向けたCPUとして「Cortex-A320」を発表した。これに関する事前説明会が日本法人のアームより行われたので、その内容をご紹介したい。

Cortex-A320は、名前の通りCortex-Aシリーズに属するMPU向けCPU IPであるが、位置づけ的にはCortex-A35の後継に近い。ただし特徴として

  • ローエンドの組み込み向けとしては初めて、Armv9A(正確にはArm v9.2-A)準拠
  • 絶対性能よりも高効率性に重点を置いた製品

という位置づけになっている(Photo01)。

  • Kleidi AI

    Photo01:Kleidi AIについてはこちらを参照。今回は単にCortex-A320でKleidi AIを利用できる様になったという話であり、Kleidi AIがなにか変更されたという話ではない

興味深いのは、このCortex-A320がNPU「Ethos-U85」と組み合わせてエッジAIプラットフォームとして提供されようとしている、という事だ(Photo02)。

  • CPU IP単体での提供

    Photo02:プラットフォームという名称ではあるが、別にEthos-U85と併せてCSSの様なパッケージになっているわけではなく、CPU IP単体での提供になるとのこと

背景となるのはLLMをEdge Localで実行したいというニーズである。例えば10億個のパラメータを持つ小規模なLLMであっても、Weight(BF16なら2GB)だけで結構なメモリ量になってしまう。これまでエンドポイントAIという形でArmはCortex-M85にEthos-U85を組み合わせて提供してきたが、Cortex-Mベースではどうやっても4GB以上のメモリを利用できないから、こうしたLLMの動作には限界がある。こうした理由から、64bitアドレスが利用できるCortex-Aを組み合わせることで大量の外部メモリを利用できる様にしてLLMの実行を可能にしよう、というのが直接的な動機の模様だ(Photo03)。

  • Cortex-A320では32bitのサポート計画はない

    Photo03:こういう動機なので、Cortex-A320に関しては、かつてのCortex-A35に対するCortex-A32の様に、32bitのみサポートの派生型の計画は無いとの事。そもそも32bitモードのサポートもあるかどうか怪しいところ

Cortex-A320は効率性重視という事もあり、In-OrderかつSingle-Issueのシンプルな構造であるが、それでもオプションでSVE2を利用可能であり、ML性能は最大10倍。スカラー性能もCortex-A35比で30%向上しており、性能消費電力比ではCortex-A520と比べても50%向上するとしている。

  • スカラー性能30%向上

    Photo04:スカラー性能30%向上は、同一周波数比での性能比較とのこと

ちなみにまだエリアサイズなど細かい話は公開できないとの事だが、同一プロセス・同一オプションならCortex-A520よりも当然小さなエリアサイズになるとの事だった。ただ性能向上はむしろSVE2のサポートに係る部分が大きく、これを利用する事で特にAI関連処理が大幅に向上(Photo04で言うなら最大10倍)するほか、Arm v9.2-Aで追加されたMemory TaggingやPointer Authentication/BTIなどの仕組みも搭載されている(Photo05)。

  • コアを小さくシンプルかつまとめたのがCrotex-A320

    Photo05:このV9.2-Aでのセキュリティ拡張を全部取り込みながら、コアを小さくシンプルかつまとめることに相当苦労した、という話であった

ただそうした苦労の甲斐があり、上位のプロセッサとBinary Compatibilityがあるので、要はクラウドあるいは従来のエッジAIで使われてきたArm向けのSoftware StackをそのままCortex-A320で利用できるのが強み、という話であった(Photo06)。

  • Cortex-A320は最大4コアまでの構成をサポート

    Photo06:ちなみにCortex-A320は最大4コアまでの構成をサポートしており、それ以上の性能が欲しいというニーズに対しては例えばCortex-A520などの検討をお勧めするとの事

ところで面白いのはCortex-M85からの移行も念頭に置いている様なのだが、そこにFreeRTOSやらZephyrまで並んでいる事だ(Photo07)。

  • PX5の方が移行は楽かもしれない

    Photo07:ひょっとするとPX5の方が移行は楽かもしれない

例えばZephyrはArmv8Aのサポートはすでに存在するが、今のところArmv9-Aのサポートは無い(Backward Compatibleはあるので、Armv8-Aのままでもある程度は動きそうだが)。FreeRTOSもCortex-A9での動作例はあったりするが、まぁそのまま動くわけではない。そこで「ひょっとしてMMUがMPU的な動作をするモードでもあるのか?」と確認したところ、そうではなく自分で頑張れという返答であった。そういう状態でリストに出すのはどうかと思わなくもないのだが、要するにエッジでもLLMが動くようなものは、もうMCUではなくMPUを使えというArmからのメッセージなのかもしれない。

Cortex-A320のIPは同日より提供開始だそうである。ただAFA(Arm Flexible Access)に関しては、数か月後に提供開始となるのではないか? との事。少なくとも現状はまだということらしい。