機能ブロックCPUの特徴5
標準的なコアはISAが複雑すぎる
x86もArmもそうだが、命令数はかなり多い。MCU向けのCortex-Mはアプリケーション向けのCortex-Aに比べたらだいぶ命令数は少ないものの、汎用という縛りもあり、基本命令だけで113個。これに加えてアクセラレーター(FPU/DSP)命令まである。
問題は、機能ブロックに使うCPUでこの命令を全部サポートする必要があるか? である。答えは否で、互換性はそもそも必要ないから「機能ブロックで使う一部の命令だけをサポート」するようにしたい。しかしこれはx86にせよArmにせよ、許されない(昔のPowerPCなども同じであった)。これを許すと互換性がなくなってしまうからだ。
そして多すぎる命令は実装の負荷がかかる。命令デコードをハードワイヤードで実装していれば、その分回路が複雑になるし、マイクロコードであればマイクロコードROMの容量が増え、どちらにせよ回路の面積増大につながる。これはコスト削減には好ましくない。
機能ブロックCPUの特徴6
勝手に命令を増やせない
逆に機能ブロックを構成する際に、アクセラレーターを簡単にアクセスできるような命令を追加したいと思っても、これまた互換性を保つ観点から許されない。Armは2019年になってやっと、Cortex-M用のArm v8-MにCustom Instruction Extensionと呼ばれる機能を追加。16命令までの独自命令がサポートされるようになったが、それまでは一切独自に命令を増やせなかった。
機能ブロックCPUの特徴7
ロイヤリティーが安くない
x86はそもそも論外として、Armの場合はまずそのコアを採用する際にライセンスを取得(これも決して安くない)したうえで、そのコアを使って量産に入る場合、利用するコアの数に応じてロイヤリティーを支払う必要がある。
これはASICコアに組み込む場合も同じで、契約の形態に応じていろいろ支払い方法はあるようだが、一般には機能ブロックを提供するベンダーではなく、そのASICを製造するメーカーがArmと契約を結んで、コアの数にあわせたロイヤリティーをArmに支払う必要がある。このロイヤリティーがArmの大きな収入源であるわけで、逆に言えばそれだけ機能ブロックのコストが上がることになる。
メンバーはハードウェアよりも
ソフトウェアエコシステムの発展に期待
以上が機能ブロックCPUの特徴だ。こうなると、アプリケーションプロセッサーともかくとして、機能ブロックに組み込むCPUにArmコアを搭載するのはコストパフォーマンスが悪い選択肢になる。
先のFounder企業の中で、台湾のAndes Technology、フランスのCortus、チェコのCodasip、ロシアのSyntacoreなどはいずれもこうした、非Armの独自コアをASICの機能ブロックの組み込み向けなどに向けて提供していたベンダーである。これらのベンダーが提供するコアは命令のカスタマイズや拡張が自由に行なえ、ライセンスやロイヤリティーに関しても柔軟性があり、用途によってはArmコアより高効率であることを特徴としていた。
ただしその反面ソフトウェアのサポートなどはあまり十分ではなく、GNUのToolchainとLinux Kernelが提供される程度。中にはRTOSのサポートが用意されるものがあったが、ラフに言えば機能ブロックを提供するベンダーには必要十分というレベルで、一般に広く使うには足りないものがかなりある、といった感じの状況だった。
こうしたベンダーが一斉にRISC-V FoundationのFounding Memberに名前を連ねた、というのは要するにハードウェアよりもソフトウェアエコシステムの発展に期待をしたから、という話である(続く)。
週刊アスキーの最新情報を購読しよう
本記事はアフィリエイトプログラムによる収益を得ている場合があります