なぜ? と言う話は後で触れるとして、カスタム命令の構成から紹介しよう。基本的には既存の「Cortex-M33」コアのFetch(フェッチ)/Writeback(ライトバック)はそのままで、Decode(デコード)部にカスタム命令用の「枠」が用意され、またExecute(実行)部にカスタム命令用のロジックを顧客が追加できるようになっている(図5)。
このカスタム命令は、Architecture Licenseの「Armv8-M」から見れば未定義命令ということになるので、そのままだと利用はできない。ここに関しては、そのカスタム命令を作成する顧客がライブラリでそのカスタム命令をサポートする形で、従来の開発環境に統合できるとする(図6)。この「Custom Instructions Extension」を最初に実装するのはCortex-M33、という話は先に述べた通りで、次いで“all future v8-M class”とあるように、今後のCortex-M製品には標準で搭載されるとする(図7)。そして、最後のポイントが、このCustom Instructions Extensionは無償での提供となる(図8)。要するに標準機能扱いになる訳だ。
さて、これだけだとイメージがわかないと思うが、Arm TechCon 2019の3日目に行われたピーター・グリーンハルシュ(Peter Greenhalgh)氏(Arm VP of Technology and Fellow)の基調講演ではもう少し具体的な話が出てきた。先にも書いたが、デコード段はあらかじめ用意されているカスタム命令用の枠が用意されており、このカスタム命令を呼び出すと、これまでだと未定義命令で例外を発生していたのに対し、Issue(命令発行)段でカスタムロジックを呼び出す制御I/F(インタフェース)が追加されている。その制御I/Fからカスタムロジックを呼び出す、という仕組みである(図9)。
このCustom Instructionの例がこちら(図10)。これは疑似コードだが、例えばBLDCモータをベクトル制御するなんて場合には、短い周期で細かくパラメータを変化させながらI/Oポート経由で出力する、といったことになるから、実はCPUの負荷が非常に高い。MCUメーカーの中には、こうした処理を外付けのアクセラレータでやらせるような仕組みを取っている所もあるが、このアクセラレータをCustom Instructionとして実装できるようになる。
あるいは、最近だと機械学習の推論アルゴリズム(ML Inference)向けの機能をMCUに統合しようなんて話が増えているが、ここで畳み込みの処理をカスタム命令として実装することで、大幅にスループットを引き上げる、なんて実装も可能だ。実際にArmが意図しているのは、こうしたArmv8-Mの命令ベースだと不効率な特定処理を高速化するロジックを、カスタム命令として統合できるようにするという話である。
ちなみに、さらに細かい話をトーマス・エンセルグエイ(Thomas Ensergueix)氏(Arm Senior Director, IoT/Embedded Business)に話を聞いて分かったのは、以下のようなことだった。
Copyright © ITmedia, Inc. All Rights Reserved.