新型CPUのブログを書くに及んで
更新日:2015年09月14日
組込みシステムが複雑系に入るに及んで、アプリケーション側のSWの品質を追求する必要が出てきた。それに伴い、SWの本質の部分に立ち帰って眺めて見る必要性が出てきている。そのことが、マクロに言えば、最近の状況ではないかと理解する。つまり、OSやコンパイラの世界へとアプリ側が足を踏み入れてSWを理解しなければ、SWの品質向上につながらないという状況になって来ていると言うことである。行き着くところは、CPUのHWの理解が必要になって行くはずである。その際に、OSやコンパイラの在りようが、創意工夫の積み重ねのような無数の考え方の下で進化(変化?)した結果、それらを理解するのが大変になっているのではないか。
さりながら、もっと困った問題は、組込みシステムの開発に於いて、CPUのHW側が、低コストや高速演算処理時間への要求から、その在りようを常に変えている点がある。HWが変化することがなければ、アプリケーション側からのSW品質向上のためのアプローチは功を奏すると思われるが、CPUのHW側の変化がそれを拒む構図となっている。
そこで、アプリ側のSWでの対応の煩雑さを回避(吸収)しようとしているのが、ミドルウエアの世界と言える。それは、とどのつまり、無数の組み合わせの煩わしさを誰が負うか(ババを引くか)の問題を請け負っているということに過ぎない。その煩わしさを請け負ってくれることで便益が発生するのであれば、それはある種の価値であるので、商売として成立していてもおかしくはない。しかし、その煩雑さが膨大な時、本当に請け負った側がそれを正しく吸収できるかとなる。ひょっとして間違っているかもしれないものを拠り所にして、残り全てのアプリ(SW)を成立させているとすれば、それは大変危うい世界と言わざるを得ない。特に車のような安全に係わる製品(組込みシステム)が、そのような世界にいつまでも身を寄せているのは如何なものかと言わざるを得ない。
CPUのHWとアプリケーションのSWとの関係を、その間をつなぐコンパイラやOSやミドルウエアといったSWも含め、抜本的にその在りようを考え、見直す時期に来ていると思われる。しかるに、車という組込みシステムでのHWとSWの在りようの整理がなされないまま、また、SWに対するファンダメンタルを所有しないまま、マルチコアとかメニーコアといったCPUの採用を進めたならば、HW側の対象が増えることにより、無限なHW~SWでの組み合わせに拍車がかかるだけであり、今の問題構造を増大させるだけである。その中で、重箱の隅の改善を膨大な工数を掛けて追求する従来方式で対応しようとしても、その成果は、労多くして益少なしの結果で終わることになる。
そろそろ車の中でのHWとSWの在りようを見直し、そこから、HWとSWの関係がどうあるべきかを導き出し、HW、SWそれぞれをどうして行けばよいのかを方向づけすべきである。
SWに関して言えば、SWを別のブログ欄で紹介する「新・形式」という枠組を以て新たに捉え直すことにより、SW開発の一連のプロセスに於いて、統一した理論的背景の下、体系的に繋がりを以て理解し直すことができる。つまり、要件を“IF~THEN~”の構図で捉えるところからはじめ、SWもその構造で捉えてはとするものである。さすれば、SWをスクラッチで開発する際にも、過去のSW資産を利用して機能追加する際も、SWをシステムアーキテクチャーとして捉える際も、開発したSWを解析する際も、既存のSWから要件/仕様を抽出する際にも、共通の概念/基盤の中でSWを捉えることができる。
他方、HWに関して言えば、車の中には今や100個程ものECUが存在する状況になっており、その在りようを見直すべき時期に来ていると思われる。
そもそも、現在のECUの大半は、時間軸で言えば、眠っているものが多い。これはもったいない話である。マルチコア化して(ある種ECUの数を増やして)演算処理を高速化し且つ同時に多くの機能を実現しようとするより、先ずは、時間軸で見て遊んでいるCPUを利用するべきである。つまり、既存の多くの眠っているCPUの並列処理活用を考えるべきということである。
その次に来るのが同じCPUでの多機能利用(時間軸での機能の差し替え)化である。これらの世界を形作って行くと、多機能処理を実現しながらCPUの数を減らすことができる。つまり低コスト化できる。
最終的には、現在話題になっている自動運転に見るように、実世界で多くのセンサーからの情報を基に、瞬時に適切な判断を下し車を制御する必要が出て来る。そのことから超高速演算処理が将来的には必須である。この為には、HWとしては、従来のノイマン型CPUでは処理速度が不足することから、イベントドリブン型CPUへと切り替える必要が出てくる。こういった過程を経るとした際、SWとしても、どのようにあるべきか、考える必要が出て来る。その答えの候補の一つが、前述の新・形式手法である。
SWのあるべき姿については、別のブログ欄で紹介することとし、本ブログ欄では、このHWのあるべき一連の推移に於ける具体的な新型CPUの例として、
- SVIRAL社の”Virtual Machine” ;既存のCPUを、並列処理のためCPUとして代替利用することで、新たなCPU を導入せずして多機能・高性能なCPUを実現しようとするもの。
- Element社の”Element” ;必要最小限のメモリー容量のCPUで、クロックサイクル毎に必要機能を差し替える ことができる多機能CPUを実現するリ・コンフィギュアラブルCPUである。
- Pico社の”並列処理化FPGA” ;エベントドリブン型CPUであるFPGAを、多数用意し並列処理させることで、 超高速演算処理を実現するもの。
を採り上げ、順次ご紹介して行ければと考えているので、お付合い頂ければ幸いである。
以上