分科会F3: プロセッサ/LSIにこんな機能はいらない・欲しい 会場: E会場 時間: 7/25 15:10〜17:00 参加人数: 30人程度 座長とポジショントークを行う人を中心に,3人がけの机を円上につき合わせた 形で参加者が座った.さらにその外側の列に座る参加者もいた. 最初に司会が参加者に対して所属や専門分野に関する質問を行い,その後,本分 科会の趣旨を説明した.議論は,3人がポジショントークを行い,それを起点と して行った.3人のポジショントークは連続して行うのではなく,1人がポジショ ントークをした後に議論して,その議論が一段落したら次の人がポジショントー クを行う,という形で行われた. 以下,順を追って詳細に報告する. 1.導入 最初に司会が参加者に対して以下の質問を行い,挙手により回答を得た.質問の 内容と回答の結果は以下の通りである. 質問1.所属機関 産    : 12名 学(教員): 5名 学(学生): 9名 官    : 1名 質問2.DAシンポジウムへの登録状況 登録した人   : 6名 登録しなかった人: 残りの人 質問3.専門分野(複数回答可能) LSI 開発         : 10名 ボード開発,セット    : 3名 ファームウェア・基本ソフト: 14名 アプリケーションソフト  : 3名 次に司会が本分科会の趣旨について説明した.趣旨を要約すると以下の通りであ る. 「LSIの開発者が必ずしもソフトウェアに関する知識を持っておらず,結果とし て,ソフトウェア開発者が使いにくいLSIを作ってしまうことは実際に頻発して いると思われる.そこで,本分科会ではソフトウェア開発者にとって使いやすい LSIやプロセッサについて議論したい.ソフトウェア開発者には,どのような LSI/プロセッサが使いやすいか/使いにくいかを指摘して欲しい.LSI開発者は, どの程度ソフトウェアの事を考えてLSI開発を行っているか話して欲しい.この 分科会を通じて,ハードウェア開発者のための心得のようなものを作りたいと考 えている.それはLSIのアーキテクチャに関することでもいいし,開発プロセス や教育に関することなど,何でも構わない」 また,ソフトウェア開発者が使いにくいLSIを作ってしまった事例として,豊橋 技術科学大学・講師の高田広章先生が Design Wave Magazine の2001年2月号に 寄稿した「ハード開発者が苦労して得た性能をソフト開発者が浪費する!!」と いう記事の紹介をした.この記事では,周辺デバイス回路の状態レジスタに,モー ド設定用のビットを混在させてしまったために,デバイスドライバを開発する際 に,本来1行で済むはずだった処理が,10倍にもなってしまったという例が紹介 されている.これは,このデバイス回路の開発者が,デバイスドライバ開発に対 して全く考慮しなかったことが原因である. この記事の紹介の後,ポジショントークと議論が行われた. 2.プロセッサ・アーキテクチャについて 2.1.ポジショントーク 最初のポジショントークは,元FAシステムの開発者で(主にボードやセットの開 発),現在はLSI設計に携わっている技術者が行った(仮にA氏とする). まず,FAシステムの特徴について説明が行われた. 「大量生産で製品寿命が短い携帯電話やPDAとは異なり,FA装置は少量生産で製 品寿命が長い.また,設計のバグが重大な危険をもたらす恐れがある.最悪の場 合,人命に関わる.LSIを新規に設計する頻度は少なく,回路規模も小さい.ま た,設計期間についても,携帯電話と比較して,将来の設計変更に対して配慮で きる程度の余裕がある.しかし,顧客に莫大な損害を与える可能性があるため, 設計は慎重に行われる」 次に,FAシステムに望まれる,あるいは,望まれないプロセッサ・アーキテクチャ について意見が述べられた.まず,最近産業界の実設計でも使用され始めた,各 アプリケーションに応じて設計最適化が可能なパラメタライズド・プロセッサ (コンフィギュラブル・プロセッサ)について否定的な意見が述べられた. 「FAシステムにはパラメタライズド・プロセッサは受け入れにくい.それは,主 にテスト/設計検証の手間が爆発的に増えるためである.ハードウェアだけでな く,ソフトウェアのテストもやり直さなければならない.パラメータの全組み合 わせの検証は物理的に不可能だし,目に見えないバグが潜んでいる可能性がある. それは恐くて使えない.また,市販の組み込みマイコンのほうが高性能で高品質 であり,不具合発生時の責任の所在が明確である.よって,パラメタライズド・ プロセッサを使う必要性は低い.ただし,これらの問題点が解決されれば,将来 的に使ってみたいという興味はある」 次に,FAシステムに望まれるプロセッサ・アーキテクチャとして,複雑なアーキ テクチャよりも,シンプルなアーキテクチャが好ましいと主張した. 「複雑な高速化機構,例えば,深いパイプライン,複雑なメモリ保護,高度な分 岐予測,階層化されたキャッシュよりも,アーキテクチャはシンプルにして,高 速な倍精度浮動小数点ユニットや,大容量オンチップメモリなどに回路を使って 欲しい.要は,単純なアーキテクチャで,高速で,かつ,安定していて欲しい」 2.2.議論 司会が参加者全員に向かって,「実際にコンフィギュラブル・プロセッサを使っ た成功例があるか?」と問いかけたが,成功例を持った人はおらず,実際に使っ ているという人もいなかった.A氏から「コンフィギュラブル・プロセッサが有 効であるか有効でないは,分野によると思う.例えば,制御系と情報系は求めら れるものが違う.情報系では有効かも知れないが,制御系ではメリットは小さい」 という意見が出された.また,会場からは,「使うプロセッサを顧客から指定さ れることがある.仮に,それが価格対性能比や開発コストの面で良くないプロセッ サだとしても,使わざるを得ない」という意見や,「コンフィギュラブル・プロ セッサを使う場合でも,全ての機能(パラメータ)を使うわけではない.それは検 証が無理.ある設定に対して検証して,それ以外の設定をした場合の動作は保証 しない」,「採用するプロセッサを決定する際は,プロセッサ自身だけではなく, 開発環境も含めて検討する.コンフィギュラブル・プロセッサは開発環境の信頼 性が心配」という意見が出た. 一方,コンフィギュラブル・プロセッサに対して肯定的な意見も出た.「メーカー が製品を出す場合,機能を多少変えて,そのシリーズをラインナップする必要が ある.品質保証ができるのであれば,コンフィギュラブル・プロセッサは有効な のではないか?」という意見や,コンフィギュラブル・プロセッサの研究を行っ ている大学関係者からは,「プロセッサを変更すると,それに応じてコンパイラ を自動生成している」という研究紹介がなされた. しかしながら,ソフトウェア開発者の多勢は,「命令セットの構成が変わってし まうコンフィギュラビリティは,CPUが変わってしまうこととほぼ等価で,受け 入れにくい.再教育が必要で,コードも作り直しになる.特に,汎用性を失う ようなコンフィギュレーションは論外」という意見であった. また,プロセッサ・アーキテクチャに関して,「深いパイプラインやキャッシュ は,平均の性能は向上するが,最悪時の性能はあまり向上しない.動作の予測が 困難なので,設計が困難になるだけである.それよりは,高速な演算器や,高速 な主記憶が欲しい」という意見が出て,会場の支持を得た. 3.デバッグ機能について 3.1.ポジショントーク 2人目のポジショントークでは(仮にB氏とする),デバイスドライバやファーム ウェアなど,ハードウェアに密着したソフトウェア開発者の立場から,デバッグ 機能に関して意見が述べられた.B氏の主張の要旨は以下の通りである. 「i386のデバッグレジスタは,マルチタスク環境下でも,ICEなどを使わずにきっ ちりとデバッグできる機能として非常に便利であった.ハードウェアは出来あがっ たから終わりだが,ソフトウェアはそこからデバッグをしなければならない. LSIが高機能化,複雑化した現在,後からCPU内部で何が起きているかを知るのは 大変である.基本的に,外に出ている信号から内部で何が起きているかを判断す るしかないが,外に出ている信号と内部の状態が違ったり,外から状況がわから なくなっていたりする.LSIの集積度が上がったのならば,デバッグの機能を載 せておいてほしい.例えば,ロジアナの機能のようなデバッグ機能があるとデバ イスドライバ開発者はうれしい」 3.2.議論 この議論の最初で,まず「テスト」という用語の意味を確認した.ソフトウェア の世界で「テスト」と呼ばれる作業は,LSIの世界では「検証」の呼ばれる. LSIの世界の「テスト」は製造不良を発見する作業であり,設計誤りを発見する のは「検証」である. 次に司会者が,「デバッグ(テスト)支援という意味では,LSIでも集積度の向 上に伴って内部回路のテスト方法が問題になっている.トランジスタの集積度の 向上に比べて,I/Oピンの数は増えていないのが原因である.そのため,自分自 身をテストするための回路をあらかじめLSIに埋め込んでおく,BIST (Built-In Self Test.組込み型自己テスト)技術が用いられている.しかし,こ れはLSIでいうテスト(製造不良の検査)のためであり,設計誤りを発見するた めのものではない」という説明を行った. それに対して,B氏から「ピンの問題はあるだろうから,デバッグ用のシリアル バスのようなものでつなぐ方法ではどうか」という意見や,「LSIは動いて当然 で,ソフトウェア開発者はLSI内部の細かいことが知たいわけではない.今問題 なのは,LSIの実行を停止するためにLSIに信号を送っても,LSI内部では処理が 行われてしまい,ステートが変わってしまうことである.それではデバッグがで きない.まず,LSIがしっかり停止することが基本である.そうすればステップ 実行でデバッグが出来る」という意見が出された.また,他の参加者からは「ス トアド・プログラムになったとたんにデバッグが難しくなる」,「現在はICEを 使って外からデータを引っ張るしかない.ECU(エンジン制御ユニット)なんかは 最初からデバッグ機能を持っているので簡単な値を引ける.でも汎用的なものだ と,データが多くなる」,「マルチプロセッサもデバッグが難しい.ICEを並べ る事もなかなか出来ない」など,現在のデバッグに関する問題点が指摘された. 中でも興味深かったのは,B氏による「ヒストリ機能をLSIに持たせて欲しい」と いう提案であった.「例えば数十ステップ分の実行トレースをLSIに記憶させて, LSIを停めたときにそれを取り出せれば便利である.状態を元に戻せれば更に良 い」,更に,「LSIのテスト用につけた機能をソフトウェアのデバッグようにも 使えるようにすると面白いかもしれない」というアイデアも出た. ソフトウェアのデバッグを支援する機能をLSIが持たなければならない,という ことについては,参加者全員の認識がとれたと思われる. 4.設計方法論,RTOS,そして,教育問題について 4.1.ポジショントーク 3人目のポジショントークは,企業でLSIやプリント基板等を開発した経験を持 ち,現在は教員をしている研究・教育者(仮にC氏とする)より,組込みシステム 設計全般に関して,LSIからRTOS,そして,教育問題にまで幅広く意見が述べら れた. まず,現在の組込みシステムの設計プロセスについて,次の問題が指摘された. 「従来の組込みシステムは,(a)MPU・LSI選択,(b)回路・プリント基板設計, (c)OS設計(移植),(d)アプリケーション設計を並行的に行うのではなく,これ ら全てを理解している人が段階的に行ってきた.しかし現在はこれらが並行的に 行われるようになり,その結果,これらの関係を埋める技術者がおらず,良い設 計ができていないことが多い.ハードウェアとソフトウェアの両方分かる人が設 計のキーパーソンになるが,そうした人材が少ない」 また,C氏はRTOSの機能をLSI上に実装する研究を行ってきた経験に基づき,ハー ドウェアとソフトウェアの両方を理解することの重要性,その架け橋となるOSや ファームウェアの重要性,並びに,(アプリケーションソフトウェア,ファーム ウェア,LSIを含めて)システム全体を最適化することの重要性を強調した.それ に関連して,「例えば,オブジェクト指向設計をやりたいのであればそれ用のプ ロセッサを,JAVAを使いたければJAVA用のプロセッサを,新たに作れば良い.今 までの延長ではなく,要求に合ったプロセッサを新たに作ることも必要である」 との主張を行った. 最後に,組込みシステムの教育問題について指摘した.「学生に割込みとかアセ ンブラの教育がちゃんとされていなく,どのようなものかというイメージが欠け ている.現在は,計算機を使うことが情報であるというイメージを持っている. そうではなくて,『VHDLでプロセッサを作ったり,アセンブラを書いたりして, 計算機の内部を知ることが情報なんだよ』と学生に教育している」 4.2.議論 議論は教育問題から始まった. 参加者より,「今の学生はCは書けるが,割り込みとかアセンブラはできない. コンピュータのイメージがブラックボックス化しており,裸のプロセッサのイメー ジに欠けている.またそうした教育もされていない」という意見や,「多くの学 生はTVゲームとかCGには興味があるが,ハードウェアやファームウェアへの興味 が希薄である.これは,大学で教える情報科目の内容にも問題があるかも知れな い」という意見が出された. 司会者より,「小さいときから計算機教育を行うことが重要だろう.自分が所属 している研究機関では,プロセッサを内蔵した小さな移動ロボットを使った,小 学生を対象とした計算機原理教育を行っている.どう動かすかをプログラミング させて,迷路を走らせる.それにより,計算機には何が何が出来て何が出来ない かを直観的に理解させる.コンピュータは勝手に動いているのではなく,人間が 指示した通りにしか動かず,指示が間違っていれば正常に動作しないということ を体感出来る」という紹介がなされた. ここで再度,LSIに何が必要で何が必要でないのかという話に戻った. C氏の「それぞれの要求にあったプロセッサを新たに作ることも必要である」と いうポジショントークでの意見に対し,ソフトウェア開発者より「プロセッサに 機能を作り込み過ぎるのは個人的には好きではない.プロセッサ本体は固定で、 周りはコンフィギュラブルというのが好ましい」という反論がなされ,それに対 してC氏は「自分の研究では,RTOSのいくつかの機能をLSIのモジュール(IP)とし て実装し,必要に応じてCPUの外につけるようにしている.CPUの内部に作り込ん でいる訳ではない」と回答した. ソフトウェアを開発する立場としては,「万能なプロセッサが1つあればよい. プロセッサは変更して欲しくない」というのが本音だろう.しかし,組込みシス テムと言ってもその分野は広く,各アプリケーションは異なる特性や要求を持つ. そのため,「中途半端なプロセッサよりは,アプリケーションに特化したものが 欲しい」という意見も出された. 5.まとめ 最後に司会が議論のまとめを行った.多くの参加者の支持を得た意見は以下の通 りである. (a)CPUに余計な機能はいらない. (b)必要に応じてCPUの外に機能をつけるべき. (c)アーキテクチャはシンプルであるべき. (d)今後LSIにソフトウェアのデバッグのための機能が必要である. (e)組込みシステム設計の教育が重要である.