10月8日から10月10日まで、サンノゼコンベンションセンター(SJCC)において「Arm TechCon 2019」が開催されている。最初のレポートでは、初日に開催された基調講演の内容からいくつか話題をご紹介したい。

ユーザーがカスタム命令を実装可能になった「Arm Custom Instruction」

  • Arm

    Photo01:Arm Custom Instructionを発表するCEOのSimon Segas氏

さて、まず最初の発表は「Arm Custom Instruction」(Photo02)の発表である。すでにプレスリリースも出ているが、要するにユーザーがカスタム命令を組み込めるようにしたという仕組みで、これまで頑なに命令セットの公開を拒んできたArmの方針を考えると、天と地ほどの方向転換ということになる。

  • Arm

    Photo02:図の左下に"Cortex-M33 with Arm Custom Instructions"の文字が

実装としては、かつてPower ISAで提供されてきたBook VLE(Variable Length Encoded)に近いものがある。Cortex-M33には最初から命令拡張用の機能が用意されており、ここでユーザー(つまりCortex-M33のIPを購入して自身でMCUを作ろうとしているベンダー)は独自の命令とそれの処理に必要な回路を組み込み、提供することが可能になっている。

  • Arm

    Photo03:ちなみに最初の製品がCortex-M33というだけで、今後は他のMCUとか、長期的にはCortex-A/Rについても可能性はあり得るとの話だった

実装はこんな感じ(Photo04)で、デコーダ段とWriteBack段には拡張命令用のStubがあらかじめ用意されており、なので実行ユニットを追加するだけで新命令が利用できるようになる、というわけだ。

  • Arm

    Photo04:ただそもそもCortex-M33はThumb-2命令のみのサポートなので、どういう形で拡張命令をそれと認識させるのかは現状不明である。Custom Instruction Spaceは、Thumb-2ではないのかもしれない

この拡張命令については、それに対応するライブラリを組み合わせることで標準の開発環境でサポートされる(Photo05)という話で、カスタム命令を最小の手間で利用できるように配慮されている。

  • Arm

    Photo05:開発だけでなく、デバッグ/プロファイルについても標準のI/Fでそのままカスタム命令がサポートされるとの事だった

このカスタム命令については、まだ明確でない部分がかなりあるので、もう少し細かいことが分ったら改めてご紹介したい。

次々世代Cortex-A向け拡張命令

次は次々世代Cortex-A向けの拡張命令の話題だ。Ian Smithe氏(Photo06)より、次世代コア(Hercules)のさらに次となる、「Matterhorn」に関する話が出てきた。

  • Arm

    Photo06:もはやおなじみとも言えるIan Smithe氏

このMatterhorn、まず「MatMul」と呼ばれる行列掛算を高速に実行できる拡張命令が搭載されるとする。ちなみに性能としては、GEMM(General Matrix Multiply)でHercules世代と比べても10倍に高速化される、と説明された。

  • Arm

    Photo07:これだけ見るとAI向けの拡張に見えるが、どうももっと汎用な、NEONの後継命令という気がする

ちなみに基調講演後にコチラで多少詳細が説明されているが、これを見る限りは汎用の数値演算ライブラリに加えてML命令も搭載されているそうで、話としては丁度IntelのAVX512のように、様々な拡張命令の集合体というあたりではないかと思われる。

  • Arm

    Photo08:世代的に言えば、Arm V9-aという感じもするが、このあたりはまだ確認できていない

加えて、このMatterhorn世代ではセキュリティ対策としてMemmory TaggingとかPointer Authentificationなどの対策が追加されたことも明らかにされた(Photo09)。

  • Arm

    Photo09:Memory Taggingは、PTEにTagフィールドが追加され、このTagフィールドのIDを利用してアクセス制御を行うといった話ではないかと思われる。一方Pointer Authentification and Branch Target Identifiersはちょっと実装が面倒そう