独立行政法人 産業技術総合研究所【理事長 野間口 有】(以下「産総研」という)デジタルヒューマン工学研究センター【研究センター長 持丸 正明】加賀美 聡 副研究センター長は、複数のCPUコア(Central Processing Unit Core(s))を独立して利用することで、システムのディペンダビリティーを向上させることができる高精細な実時間OS(Realtime Operating System)であるART-Linuxを開発し、Web上に一般公開した(http://www.dh.aist.go.jp/jp/research/assist/ART-Linux/)。
今回開発したART-Linuxは、複数のCPUコアをもつ計算機上で、通常のLinuxと、実時間拡張を施したLinuxがそれぞれ独立のCPUコアを使うことで、システムの頑健性の向上が図れるものである(図1)。Linuxを基本にしているため、ほぼすべてのアプリケーションがそのまま動作可能である。今回の開発により、実時間性の必要なシステムの即応性を高めると共に、頑健性と汎用性を高め、システム全体のディペンダビリティーが向上することが期待される。最高優先度のタスクでは10マイクロ秒の周期実行を実現可能となる。
この技術の詳細は、2013年3月8日に東京都江東区の日本科学未来館で開催されるデジタルヒューマン・シンポジウム2013で発表される。
|
図1 複数のCPUコアを独立して利用するシステムの構成例 |
最近、組み込み機器の高機能化とネットワーク・情報化が進められてきており、家電機器、産業機器、プラント制御機器、輸送機器、介護・福祉機器などに至るまで幅広い応用が期待されている。しかし、組み込み機器においてはシステムの制御性能に寄与する実時間性と、ネットワーク・情報性能に寄与する汎用性の双方を向上させる必要があった。このようなシステムに障害が発生すると、システムの複雑化と高機能化に合わせて、その原因も複雑化し影響も拡大する傾向がある。そこでシステムの障害を局所化し、ダウンタイムを減少させ、可用性を向上させる、いわゆるディペンダビリティー技術の向上が望まれてきた。
産総研は、前身の一つである電子技術総合研究所であった1998年より、オープンソースのOSであるLinuxを実時間用途向けに改変したART-Linuxを研究、開発し、公開してきている。本OSは、実時間周期実行性能に特に優れており、Linuxを改変した実時間OSとしては世界トップクラスの性能をもつ。そのため2003年発表したヒューマノイドロボットHRP-2(2003年3月12日 川田工業株式会社・ゼネラルロボティックス株式会社・産総研プレスリリース)、2009年に発表したHRP-4C(2009年3月16日 産総研プレスリリース)に用いられるなど、内外100以上の機関のロボットで用いられてきた実績があり、知能ロボットの研究分野で広く用いられてきている。この実時間性に特化したART-Linuxにディペンダビリティー向上を目的として、複数のCPUコアの非対称利用という手法を研究し、2008年度より研究開発を行ってきた。
なお、本研究開発は、独立行政法人科学技術振興機構(JST)の委託事業「実時間並列ディペンダブルOSとその分散ネットワークの研究」プロジェクト(平成20~25年度)」により行ったものである。
今回の技術は、複数のCPUコアを持つシステムを、SMP(Symmetric Multi-Processing)の通常のLinuxと実時間拡張を施したLinuxのAMP(Asymmetric Multi-Processing)の組み合わせにより実現する方法である(図2)。このようなシステムは、通常のLinuxの側でオープンソースの汎用ソフトウエアやデバイスを利用できる一方で、実時間Linuxの側では、任意のI/Oデバイスを占有しながら、制御系、安全系、監視系、高信頼のための二重系などのディペンダビリティー機能を、お互いに非干渉な形で独立させて実装できるという利点がある。
|
図2 SMPのシステム(左)、AMPのシステムの1例(中)、SMP・AMP混在システムの例(右) |
このために主に下記の2つの設計と開発を行った。
-
x86/Linuxで最もハードリアルタイム性能の高いOSの設計と開発
割り込みハンドラの周期実行、プライオリティーインヘリタンス機構の導入などにより、x86系でLinux互換のシステムとして、最小のジッターと最短の周期実行性能を実現。
-
x86/Linuxで複数CPUコアを非実時間SMPと実時間AMPを組み合わせて利用するOSの設計と開発
各サブシステムのメモリー配分と各カーネルのリロケーションブート、各サブシステムの単一クロックによる時刻同期、サブシステム間の仮想ネットワークと仮想シリアル通信、共有メモリーによるサブシステム間の高速通信、デバイスの各サブシステムへの振り替え機能などの機構を設計、開発した。
図1に開発したART-Linuxにより可能となるシステムの構成例を示す。この図ではCPUとして8個のコアがあるものを挙げ、そのうちの3個で通常の非実時間のSMP-Linuxが動作し、また残りの5つのコアに対してそれぞれ独立に実時間Linuxが動作している例を示している。
青枠で示すP0~P2のプロセッサーで動作する非実時間のSMP-Linuxはディスクやグラフィックス、ネットワークなどのデバイスがアサイン(割り当て)され、ユーザーインターフェースや通常のアプリケーションを処理する。
緑枠で示すP3のプロセッサーにアサインされた実時間Linuxは、実時間監視系として動作し、ログ用のディスクや外部への通知用のネットワークデバイスをアサインしている。本サブシステムは他のサブシステムの内部状態を共有メモリーを通じて監視し(他のサブシステムは自分で共有メモリーに状態を書き出す必要がある)、ログを残すとともに、他のシステムの異常をリアルタイムで検知し、非常系に知らせるなどの機能を果たす。
赤枠で示すP4のプロセッサーで動作する実時間Linuxでは、制御のために必要なI/O デバイスをアサインしている。他のオーバーヘッドがなく、制御のみに専念することができるために、低いジッターによる高い実時間制御性能や、リソース配分の簡単化によるシステム設計の容易さと障害の起きにくさが期待できる。
紫枠で示すP5のプロセッサーで動作する実時間Linuxは非常系として独自のI/O デバイスをアサインしている。システムの異常を検知すると、I/Oデバイスを通じて緊急停止などの安全動作を行う。
橙枠で示すP6~P7のプロセッサーにアサインされた実時間Linuxは二重系として動作する。独立にI/O デバイスをアサインしており、両側で同じ処理を行うことでシステムの信頼性を確保する。
これまでにもVxWorks™やQNX™などの実時間OSにおいて、このように複数コアを利用するSMP/AMP混在のシステム構成が可能なものは存在したが、広く用いられているLinuxにおいては世界初である。これを実現するために、最初にベースプロセッサーから立ち上げる通常の非実時間のSMP-Linuxの起動時に、a) 使用するプロセッサー、b) 使用するメモリー、c)共有メモリーとして使用する領域、を指定して、ブート(起動)し、次に立ち上がったSMP-Linuxから、アプリケーションプロセッサーから立ち上げる実時間Linuxを、同様にa)~c)を指定することで起動する。ヴァーチャルマシンの仕組みではなく、直接個々のプロセッサーで実時間OSが実行されることから、実時間処理性能を最大化できるという利点がある。
このOSを用いれば、複数コアを持つシステムにおいて、通常のSMP-Linuxを実行しながら、数個のコアが専用の実時間処理をしていたり、安全系を構成していたり、というシステム構成が実現可能となり、組み込みシステムであってもディペンダブルなシステムが構築できる。
公開したソフトウエアについて、バグ報告に応じて更新するとともに、Linuxのバージョンアップに追従してアップデートの作業を行う。