~無限の可能性を持つソフトコアCPUの世界へようこそ~

浅井様のご紹介・連載タイトルはこちらから

 

浅井様へご相談等ありましたら、下記アドレスへ

はじめに

半年以上にわたりソフトコアCPUのすばらしさについて連載してきました。好き勝手な文書にも関わらずお付き合い頂いた皆様に厚く御礼申し上げます。さて今回はいよいよ最終回として、簡単な総括と私が思い描いているソフトコアCPUの将来像についてお話しさせて頂きます。

 

FPGAの最大のメリットとCPU搭載の相乗効果

FPGAのメリット

Field Programmableの名の通り、FPGAのメリットはその場で書き替えられるということでしょう。論理シミュレーションをやらずに直接実機で動作確認して不具合発生時の対策が遅れるという弊害もありますが、それはあくまでも担当者の問題で、開発完了直前まで最適解へのアプローチができるというメリットはASICにはない大きなメリットです。

 

CPU搭載の相乗効果

組込み機器で一般的な市販マイコンとFPGAという組合せでは、前述のメリットは当然FPGA内に組み込んだ機能にしか適用できません。つまり一度基板が組み上がってしまうと、何らかの理由でCPUの変更が必要な状況に陥った場合は最初から設計をし直さざるを得ない訳です。しかしFPGAにCPUまで組み込む事を前提にプラットフォーム化を意識した設計をしておけば、基板はそのままで幅広い範囲への適用が可能になります。そうしておけば設計工程でコストパフォーマンスを考慮しながら、ある処理をハードウェア/ソフトウェアいずれでの実現も選択できる様になります。

総括なので具体的な事例は割愛させて頂きますが、システムデバッグ段階で機能/性能が達成できないことが判明し対応に苦慮された経験は、皆さんも少なからずお持ちだと思います。開発対象の全てに対して目を届かせ、ムダのないシステム設計ができる方(会社)には意味のない話ですが、エキスパートがいないもしくはシステムが大規模すぎて1人では把握しきれない様な状況では、あらかじめ何らかの手段で「転ばぬ先の杖」を仕込んでおく設計が必要と考えています。

 

CPU搭載FPGAをベースにしたシステム設計は、その1手段となり得るのです。

 

ソフトコアCPUの将来像

実行すべき命令セットのみを実装したCPUの自動生成

CPUには転送、演算、分岐等の命令が数多くサポートされていますが、実際のアプリケーションで全ての命令を使うことはまれです。言い換えればそのアプリケーションにとっては余計な命令デコードや実行論理をもったCPUを使っている事になります。つまり連載の最初の頃に解説した市販マイコンのデメリットと同様の事がここでも言えるのです。

そこで私はソフトコアCPUが出始めた当初から、図 1に示す様な開発フローが理想だと考えています。高級言語で記述されたアプリケーションを分析し、命令の実行状況からビット長も含めた命令セットの最適化を行い、それを実行するために最適化されたCPUの論理を構成すると共に、そのCPU用のオブジェクトコードを生成(コンパイル)するものです。この内波線で示した部分については、命令セットとパイプライン段数等CPUの設計制約を与えるとRTLとコンパイラを一括で生成してくれるツールが、既に某メーカから販売されています。更に高級言語からCPUのアーキテクチャを生成する研究も学会などで進められていますので、アプリケーション毎に最適化されたCPUを簡単に使える時代もそう遠くないかもしれません。

 

図 1 CPUの自動生成フロー