● 2003/07/23(水)

第5回 組込みシステム技術に関するサマーワークショップ(SWEST5)@浜松湖ミニレポート

 300名近い組み込み技術者が一同に集まるワークショップSWEST。5回目の今回は浜松湖畔の遠鉄ホテルエンパイアにて開催されました。

 当日午前11時30分にホテルに到着すると、SWESTの「座長」の高田 広章先生(TOPPERSでも有名ですね)が準備をされていたのでまず挨拶する。また、Interface誌で「組み込みプログラミングノウハウ入門」を連載されている藤倉先生も見かけたので「ラショナルからIBMに変わってどんな感じですか?」とか話しかけようとしたものの(当時、ラショナルがIBMに買収されてラショナル事業部に代わった直後でした)、ノートPCに向かって展示の準備をしているらしく挨拶だけに。あと東陽テクニカの二上さんにも挨拶。UMLロボコンの主催の一人で、SESAMEでも有名な方です。

 開場して座長の挨拶が終わったあと、RoboCup主催などで知られる松原仁氏(はこだて未来大学)による「災害救助からエンタテインメントまで−−未来のITロボットの行方−−」が記念講演として行われました。内容は2050年までにWorldCupに出られるロボットを作るというRoboCupについて、サッカーとは別に救助用ロボットを作るRoboCup-Rescueについて、瓦礫の下にいる人を発見するロボットの紹介などなど。また、ロボット以外にも火災シミュレーションシステムでは、周囲に延焼するようすをシミュレートし、「6ヶ所で火災が発生したが4台しか消防車がない」というような状況で、どのような順で消火すればトータルで一番被害が少ないかをシミュレートしたところ、「すべての消防車を1ヶ所に集め、順に消火する」のが一番被害が少ないという結果を導き出しました。これは実際の消防隊の経験則にも合致した結果になったとのことで非常に興味深いところです。

 そのあとポスターセッションの概要説明。今回から一般的発表を取り止め(記念講演や一部セミナ形式による発表を除く)、ポスターを前に各自研究発表を行うという形式になりました。このほうが活発な議論もできて良いだろうということで、実際これは成功だった模様。概要説明自体は、各発表者が持ち時間3分くらいで内容を説明し、興味をもった発表に関しては各自ポスターセッションで聞くことになります。

 その後、大広間で懇親会兼夕食。TOPPERSのメインコーダーの若林さん(豊橋→名大の助手)の後ろに付けていろいろ話し込んだりしました。このようにSWESTは、組み込み関連の有名な先生から現場の技術者まで、さまざまな方が参加されているため、実際に会って話を伺うことができる場です。弊誌の執筆者の方も多いため、連載についての意見や感想を話し合うにも良い機会かもしれません。

 そしてほどよくアルコールが回った状態で50人くらいのグループに分かれて討論会。私が参加したのは「『設計と実装の距離』について」。「実装のことまでを考えた設計をしないと破綻する」とか、「なんで設計の最初の段階でタイマのクラスが出てくるのか(タイマ・クラスのような、ハードウェアべったりのクラスは、詳細設計を煮つめて行って最後に登場すべし)」などの興味深い話が。良い実装は良い設計が必要というだけでなく、良い設計のためには実装に対する深い洞察が必要、など「卵が先か鶏が先か」的な部分も多く、一筋縄では行かないようです。



● 2003/07/24(木)

・SWEST@遠鉄ホテルエンパイア 2日目

 2日目は朝食の後、各種セッションが開催されました。

 東京大学の中村宏氏によるセッション「最近のプロセッサ・アーキテクチャ技術」はPower4やDEC Alphaで採用されている高速化技術について。やはり現代プロセッサにおいては分岐予測が重要だとのこと。Powerでも使われている「分岐命令ごとに統計を取って予測(たとえば、beq命令が外れたら、次のbeq命令も外れると予測)」「分岐命令の絶対アドレスを覚えておいて、履歴を取って予測(アドレス0xhhhhにある分岐命令は前回外れたから次も外れる)」というものから、Alphaでの「2回連続で予測が外れたら、予測を修正(従来は1回外れたら修正)」まで。なおかつ、これらの複数のアルゴリズムで予測し、そのどちらのアルゴリズムを採用するかも履歴から判断するのだとのこと。分岐予測関係はあんまりちゃんと勉強したことがないので、個人的には新鮮でした。あとはパイプラインを埋めるための技術。RISCの場合、命令順を入れ換えるとパイプラインを埋めて無駄なく実行できることが多いのですが(この辺をよく知りたい方はTECH I vol.20『マイクロプロセッサ・アーキテクチャ入門』をどうぞ)、前後の命令に依存関係があると入れ換えできず、ストールすることがあります(「r0に書き込む命令」と「r0から読み出す命令」は入れ換えられない)。この例は前後の2命令だけですが、前後256命令を調べて入れ換えても、じつはたいしてパフォーマンスが上がらないのだとか。そこで「命令間の依存性が低い方が良い」ということで「スレッド間の命令を入れ換える」という方法が提案されています。具体的には「スレッドAの命令を実行→スレッドBの命令を実行→スレッドCの以下同文」ということ。まあたしかに複数のスレッド間の命令に依存関係はないけど、本当にそんなことができるのか…というのが驚きです(この場合、レジスタ・リネーミングが必須になります)。うまくスケジューリングすれば、「スレッドAの命令をフェッチしながらスレッドBの命令を実行しながらスレッドCの命令の結果をライト」できるのだそうです。頭では理解できるものの、本当に行うとなると凄い技術です。

 午後のセッションはイーエルティの江端俊昭氏による「オープンソースによる組込み開発と法的課題について」。100分まるごと使って、ひたすらGNU GPLを読むという非常に濃い内容。「GPLの冒頭に著作権表示があるのはなぜか」という質問、よく考えれば確かにヘンですよね。普通、契約書に著作権表示しませんから(GPLはソフトウェアの使用許諾書)。なんでかと言うと「改変を防止するため」なのだそうです。なるほど、著作権で保護された著作物であれば勝手に改変できなません。通常の契約書は、甲と乙の間での合意の元で改変も可能ですが、GPLの特殊性(通常の「甲と乙との契約」では語れない部分:GNUのソフトウェアを使うために、わざわざストールマンと話し合ったりしない)を考えると、そういう解決法をとったことも納得できます。なるほど。

 最後、「オープンソースは組込みシステムに適用できるか?」は座談会形式でコミュニティとかモチベーションの維持などの話題について取り上げました。印象的だったのはTOPPERSのメイン開発者の若林さんの「就職した後もオープンソースソフトウェアの開発が行うためには、理解のある上司が必要」「TOPPERSの開発を行って得られているものは学位と名誉だけで、今はお金払って(学費)、OS作っている(笑)」。本当に(笑)だったかどうかは微妙なところですが、これからも作り続けるためには考えていかなければならないところです。

 ということで全日程が終了しました。お疲れさま。