現在、山﨑研究室では「組込みリアルタイムシステム」をメインテーマに、ハードウェアグループとソフトウェアグループの2つに別れて研究開発を行っています。研究のターゲットアプリケーションとしては、ロボットや宇宙機、自動車などの高性能・高機能・大規模な分散型の組込みシステムが挙げられます。近年このようなシステムでは、高信頼性化、超小型化、高機能化、低消費電力化、スケーラビリティなど、ディペンダビリティに対する非常に多くの要求があります。山﨑研究室では、ディペンダビリティを信頼性・可用性・安全性・保守性を兼ね備えた性質と定義し、各性質を満たすように様々な基盤技術を研究開発しています。具体的には、ハードウェア側ではプロセッサアーキテクチャ、オンチップネットワーク、チップ間通信リンク、動的電圧周波数制御を、ソフトウェア側ではQoSを制御可能なリアルタイムオペレーティングシステムやスケジューリングアルゴリズムを研究開発しています(個々の技術に関しては、各グループの研究内容を見てください)。
山﨑研究室では、ハードウェア・ソフトウェアともに自分たちで一から設計しています。CPUもOSも一から書き上げ、レイアウトの作成やアプリケーションの記述まで全てを行っています。通常、こうした作業は企業でも部署に分けて行うところですが、山﨑研究室ではそれを一研究室内で完結させます。そもそも、独自CPUを設計開発している国内メーカーが少ない昨今、大学(院)でこのレベルの研究開発を行っているのは世界的にも珍しいです。
以前のプロジェクトでは、独自CPU・独自OSを共同研究先(東京大学JSK稲葉研)のヒューマノイドロボットに組み込み、動作させることが最終目標でした(図1)。 また現在では宇宙機向けのプロジェクトが進行しています。独自CPUを宇宙機向けに改良して人工衛星に組み込み、打ち上げて運用することを目標としています。( 図2) それを実現するために、Patrol and Correct (宇宙線によって破壊されたメモリを走査し、適宜エラー訂正する機能)や、マイクロ秒単位の時刻同期などソフトウェア、ハードウェア両面からのアプローチを行っています。 他にも、レスポンシブリンクのように、通信についても理論、実装の両面からの研究を行っています。 「CPUを作ってみたい!」「OSを一から書いてみたい!」「通信の研究をしてみたい!」そう思う方は是非、研究室見学に来てください。また、見ての通り、山﨑研究室では多岐にわたる分野を対象としているので、まだ自分のやりたいことが見つからない方も一度は見学に来ることをオススメします。
従来、ソフトウェアで行われてきたリアルタイム処理の時間粒度は、1msecのオーダでした。しかし、ヒューマノイドロボットに組み込まれるような大出力・大規模分散モータドライバでは、その制御に10〜100usecという非常に細かい時間粒度を要求します。
ハードウェアグループでは、この細粒度のリアルタイム処理を実現するために、ソフトウェアの領域で考えられてきたリアルタイム処理をハードウェアレベルで行う研究を行っています。
現在ハードウェアグループでは、分散リアルタイム処理用プロセッサResponsive Multithreaded(RMT)Processorの研究開発を行っています。RMT Processorとは、リアルタイム処理機能(RMT Processing Unit: RMT PU)、リアルタイム通信機能(Responsive Link)、コンピュータ用周辺機能(DDR SDRAM I/F, DMAC, PCI, IEEE1394, RS-232Cなど)、制御用周辺機能(PWM発生器, パルスカウンタなど)を一つのチップ上に集積したSystem-on-Chip(SoC)です。RMT ProcessorのプロセッシングユニットであるRMT PUは、従来ソフトウェアで行っていたコンテキストスイッチを優先度付きSMT機構に置き換えて実行することによりハードウェアによるリアルタイム処理をサポートします。また、マルチメディア処理などの高いスループットが求められるアプリケーションに対応するために2次元ベクトル演算機構を備えています。これらにより、RMT PUはリアルタイム性を保証しつつ高いスループットを実現することができます(RMT PUとResponsive Linkが持つ固有の機能については、以降の節で詳しく説明します)。
RMT Processorは時代とともにバージョンを重ね、現在はDependable Responsive Multithreaded Processor(D-RMTP)の研究開発を行っています(図3)。山﨑研究室では、ディペンダビリティを信頼性・可用性・安全性・保守性を兼ね備えた性質と定義し、各性質を満たすためにD-RMTPに様々な機能を搭載しています。そして、そのハードウェア論理の記述からレイアウトの作成までの全てを私たちが行っています。
さらに、出来上がったSoCとメモリ、コンバータ、センサなどを統合し、一つにパッケージ化したSystem-in-Package(SiP)を設計・実装しています。図4は30mm角D-RMT SiPです。この30mm四方の基板上にD-RMT1個とDRAM, Flash, FPGA, A/Dコンバータ、温度センサなどが搭載され、ロボットなどのリアルタイム性を重視するの組込み機器に組み込まれる予定です。最近は小型化に成功し、20mm四方まで小さくすることができました(図5)。
このSiPに加え、モータ制御用のI/O(PWM発生器、エンコーダ)のピンや通信用I/O(Responsive Link, RS-232C, USB)のポート、給電用のDCジャックを備えた評価キットを作成しました(図6)。名刺サイズの大きさなので、外部の発表などでも持ち出しやすいようになっています。これを用いてソフトウェアグループがD-RMTPのデバッグをします。
従来のリアルタイム処理では、まずスケジューラが時間的な制約を基に各処理の優先度を決定します。スケジューラは優先度に従って処理を切り替えながら実行することによって、各処理の時間制約を守ります。実行する処理を切り替える場合、コンテキストスイッチが発生しますが、ソフトウェアによるコンテキストスイッチは多くのメモリアクセスが発生するため、オーバーヘッドが大きくなるという問題がありました。
この問題を解決するために、プロセッシングユニット内にハードウェアコンテキスト(プログラムカウンタ、レジスタファイルなど)を複数保持しておき、優先度に従ってそれらを順に実行する機構、優先度付きマルチスレッディング機構について研究しています。この機構によりコンテキストスイッチのオーバーヘッドを削減できるため、ソフトウェアによる処理よりも時間粒度の細かいリアルタイム処理を実現することができます(図7)。また、マルチスレッディングにはSMT(Simultaneous Multithreading)と呼ばれる機構を採用しており、最大8スレッドを同時に実行することでリアルタイム性を維持しながらスループットを向上させることができます(図8)。
マルチメディア演算などのソフトリアルタイム処理では大量のデータを演算しますが、ソフトリアルタイム処理で扱うデータはデータの並列性が高いという特徴があります。この特徴を利用して、演算性能を向上させるための機構、SIMD(Single Instruction Multiple Data)演算機構やベクトル演算機構について研究しています(図9)。
リアルタイム処理にSMT機構を用いる場合にはスレッドの組み合わせによって各スレッドの実行速度が変動する可能性があり、厳密にはリアルタイム性を保証できなくなってしまいます(図10)。スレッドの実行速度というのは1クロックサイクルあたりの命令実行数、IPC(Instructions Per Clock cycle)で表すことができます。私たちは各スレッドのIPCを制御することにより、実行速度の変動を抑える機構(IPC制御機構)を研究しています。IPC制御によって各スレッドのIPCの値が安定化させることで、タスクの最悪実行時間の予測性を向上させることができます(図11)。
優先度を考慮してスレッド間の排他制御を行う場合、低優先度スレッドが高優先度スレッドの実行を妨げる優先度逆転問題が発生する可能性があります。ソフトウェアでもこの問題の解決は可能ですが、ロック要求のための命令の繰り返し、ロックを獲得するスレッドの選択などにより、高優先度スレッドの実行に影響が生じます。私たちはリアルタイム性を保証するために、高優先度スレッドの実行を妨げずに排他制御する実現する機構が必要と考え、ハードウェアによるスレッド間同期機構について研究しています。
Responsive Linkとは、山﨑先生が開発したリアルタイム通信規格です(国際規格として標準化されています!)。Responsive Linkは柔軟なリアルタイム通信を実現するために以下の機能を持っています。
ハードウェアグループは、チップのレイアウトを行うので大きなディスプレイを持っているのが特徴的です(B4でトリプルディスプレイにしている人も!)。ここで一人一つの机とマシンを持ち、作業を分担し、仕事をしています。ただし、実際にシミュレーションやチップのレイアウトを行うのは別室にあるサーバマシンであり、膨大な計算資源を思いのままに利用できるのもハードウェアグループの特徴です(図15)。山﨑研究室では、CAD(コンピュータ支援設計)ツールを使うためのライセンスを大量に持っているため、高性能なツールをいくらでも使うことができます。例えば、設計した回路の波形を表示したり(図16)、設計したモジュールや電源を配置したり(図17)します。
RMT Processorはかなり規模が大きいので、高性能なCADツールを使っても、開発にはかなりの時間がかかります。作業によっては、研究室内最速のマシンを使ったとしても、その処理を終えるのに数日〜数週間かかることもあります。慣れないうちは大変かもしれませんが、一般的なメーカーでもこれと全く同じことをしており、将来のためにも貴重な経験を積むことができます。また、これ以外のことでも研究室から大きく離れた内容でなければ、自由に研究することが出来ます。
ソフトウェアグループは分散リアルタイム処理を可能とするソフトウェアの研究を行っています。「リアルタイム」という言葉は皆さんにとってはあまり聞き慣れないものかもしれませんが、簡単に言うと「時間制約がある」という意味になります。時間制約と聞くと、どうしても「できるだけ早く」という意味に取られてしまいがちですが、正確には「時間通りに」という意味になります。リアルタイム性を必要とするシステムには以下のようなものが挙げられます。
航空機や自動車が向きを変えるときに、できるだけ早く向きが変わっては危険です。どんな時でも同じ時間に同じ分だけ変わらなくてはなりません。このようなリアルタイム性が求められるシステムの事をリアルタイムシステムと呼びます。また、ノードが複数存在するリアルタイムシステムの事を、特に分散リアルタイムシステムと呼び、近年盛んに研究が行われている分野です。
ソフトウェアグループでは、中でも以下のカテゴリに注目して研究開発を行っています。
皆さんが「組込みリアルタイムシステム」の授業で学んだリアルタイムスケジューリング理論を改良する研究を行っています。既存のリアルタイムスケジューリング理論であるRate MonotonicやEarliest Deadline Firstアルゴリズムなどは実用化の面で様々な問題を抱えています。そこで、ソフトウェアグループではこれらのアルゴリズムの問題を解決するための、新しいアルゴリズムの研究に取り組んでいます。
特に、タスクの時間成約を満たしつつ結果の制度を高めるための計算モデルインプリサイス計算モデルについて広く研究しています。インプリサイス計算モデルでは、タスクは必須部分(mandatory part)と付加部分(optional part)に分けられます。必須部分はリアルタイム性が要求されるクリティカルな処理部分であり、付加部分は必須部分が生成した結果の精度を高める非リアルタイムの処理部分です。システムが過負荷状態に陥って付加部分に割り当てる実行時間が無くなったとしても、付加部分を中断することでデッドラインミスを回避することが可能です。このようなモデルに対して、固定優先度スケジューリングアルゴリズム向けにRate Monotonic with Wind-up Part(RMWP)というスケジューリングアルゴリズムを提案しました(図18)。現在も、マルチプロセッサ向けに拡張したり、温度制御を考慮したスケジューリングを考案しています。
リアルタイムシステムにおいて、OSはタスクの時間制約を満たすために、どのタスクから処理を行っていくのかを厳密に制御する必要があります。しかし、皆さんが普段使っているWindowsやLinuxなどの商用OSは、リアルタイムシステム上で使われることを想定していないため、そのような制御機構はありません。そこで、ソフトウェアグループでは同期処理、省電力技術、QoS制御、タスクスケジューリングといった観点からオリジナルのリアルタイムOSの研究開発に取り組んでいます(図19)。また、最近ではITRON仕様OSのRMT Processorへの移植なども行いました。
近年、携帯電話やヒューマノイドロボットなどの組込みリアルタイムシステムには、時間制約だけではなく、低消費電力や高性能も要求されます。動的に供給電力と動作周波数を制御する動的電圧周波数制御(Dynamic Voltage and Frequency Scaling: DVFS)は、エネルギー効率を向上させるために様々なシステムに使用されています。しかし、システム実行時に電圧と周波数を変更するとオーバヘッドが発生します。特に、電圧遷移に要する時間は厳しい時間制約を持つ組込みリアルタイムシステムにとっては深刻な問題となります。私たちはリアルタイムスケジューリング解析にDVFSのオーバヘッドを考慮することで時間制約を保証できるリアルタイム動的電圧周波数制御(RT-DVFS)を提案しています。実際の電圧遷移の遅延はRT-DVFSのための重要なパラメータであるので、我々はD-RMTP評価キットでのDVFSのオーバヘッドを測定しました(図20)。そして、測定したオーバヘッドを考慮したRT-DVFSを提案しています。
複数のノードから構成される分散リアルタイムシステムでは、ノード間でもリアルタイム性を保証した通信が必要になります。現在の高速通信規格としてEthernet, ATM, IEEE 1394, CANなどが挙げられますが、どれもリアルタイム性の面で問題を抱えています。そこで山﨑先生が開発したResponsive Link上でリアルタイム性を保証できるルーティングアルゴリズムや通信プロトコルの研究を行っています。
分散システムにおいてプログラム中の変数やオブジェクトは様々なノードに分散しています。そのような環境でのプログラミングが非常に複雑になるであろうことは想像に難くないと思います。そこで近年、階層的にOSとアプリケーションの間に位置し、他ノードに存在する変数の参照や、手続きの依頼をアプリケーションから隠蔽するミドルウェアというソフトウェアが注目を集めています。ミドルウェアは分散プログラミング環境を構築する上で非常に有効ですが、時間制約を満たすことを保証する機能はありません。ソフトウェアグループでは、リアルタイム性を考慮したミドルウェアの研究にも取り組んでいます。
RMT ProcessorはMIPSというプロセッサを参考にして作られましたが、多くの機能が山﨑研オリジナルです。なので、世の中にRMT Processor用のコンパイラ/アセンブラが存在しません。これら開発環境をGCC/BINUTILSというオープンソースをポーティングしてRMT Processor用の機械語を吐けるようにするのもソフトウェアグループの仕事です。 このように、山﨑研のソフトウェアグループにいると、OSやネットワークなどソフトウェアのコア部分がわかるようになるだけでなく、ハードウェアに関する知識も非常に多くつきます。プログラミングの好きな方、実力をつけたい方はぜひ見に来てみて下さい。
ソフトウェアグループは、自分の机でひたすらコーディングするか(図21)、作業台に移って実機を用いた検証・評価を行います(図22)。 OSやデバイスドライバを記述するときは、ハードウェアグループが作成した仕様書をもとにします。また、仕様通りにCPUが設計されているかの検証をシミュレーションレベルもしくは実機レベルで検証するのも、ソフトウェアグループの仕事です。実機デバッグでは、波形を見るためにオシロスコープやロジック・アナライザを使用することもあります。
最後に少しだけ、山﨑研究室での輪講について紹介します。山﨑研究室での輪講は大きく分けて2つあります。教科書の輪講と論文の輪講です。
教科書の輪講は主にハードウェア(パタヘネ、ヘネパタ)、リアルタイムシステムスケジューリング、OSについての教科書を各自で分担して発表します。
論文輪講は主にB4の輪講発表とM1のサーベイ発表の論文を探す目的になっています。この時に良い論文を探してこれないと辛かったりしますが、まあなんとかなります。悪い論文は先生に「西(しゃー)じゃん」と言われます.