デジカメや携帯電話、音楽プレーヤーには、画像や音声を処理するためのコンピュータシステム「組み込みシステム」が内蔵されています。他にも炊飯器や洗濯機などの家電製品やゲーム機、医療機器や宇宙開発機器、自動車など、身の回りにあるほとんどの機械に、特定の機能を実現するための組み込みシステムが内蔵されています。
パソコンなどのコンピュータシステムとは異なり、組み込みシステムに要求される機能や性能は極めて限定されています。また、高い信頼性が求められるにもかかわらず、コストやメモリ容量などに厳しい制約を課されることが多いのも特徴です。
私たちが取り組んでいるのは、組み込みシステムを作るためのプログラム(システムプログラム)づくりです。例えば「コンパイラ」というシステムプログラムは、C言語などのプログラム言語で書いたプログラムを、コンピュータが実行できる機械語に変換するものです。こうしたプログラムを作ると、コンピュータやその上で動くプログラムの仕組みも理解できるようになります。
当研究室では企業との共同研究にも取り組んでおり、携帯電話の組み込みシステムの効率化を図るプログラムや、医療用マイクロコンピュータのプログラム開発などに取り組んでいます。もしかしたら、あなたの身の回りの製品に、私たちが作ったプログラムが使われるかもしれません。
システムプログラムにバグ(不具合)は許されないため、数十万パターンものプログラムで徹底的なテストが行われますが、それを経てもまだバグが残ることがあります。そこで私は、ランダムにプログラムを生成して、コンパイラ中の未知のバグを検出する研究に取り組んでいます。実際に、GCCという世界中で使われているコンパイラにバグを発見しましたが、これを報告することで世界のコンパイラの開発に貢献できるというところが、一番の醍醐味ですね。
特定の機能を実現するために家電製品や機械等に組み込まれるコンピュータシステム。
複数のプロセッサ(コア)を1つのVLSIチップ上に集積した「マルチコアプロセッサ」の性能を引き出すためのプログラミング。パソコンにはデュアル(2)コアやクアッド(4)コア、PlayStation 3には8コアのプロセッサが搭載されているが、その性能を引き出すためには、並列処理を意識したプログラミング技術が要求される。
WindowsなどのOSやコンパイラといった基本的なプログラムの総称。