発表・掲載日:2013/03/07

高精度な実時間OS「ART-Linux」を公開

-システム障害に強い頑健性を確保-

ポイント

  • 複数のCPUコアを独立して利用することでシステムの信頼性を向上
  • 実時間性の必要なシステムの即応性を高めると共に、頑健性と汎用性を高める
  • Linuxを基本にしているため、Linuxを利用するほぼ全てのアプリケーションが動作可能

概要

 独立行政法人 産業技術総合研究所【理事長 野間口 有】(以下「産総研」という)デジタルヒューマン工学研究センター【研究センター長 持丸 正明】加賀美 聡 副研究センター長は、複数の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で発表される。

複数のCPUコアを独立して利用するシステムの構成例の画像
図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と実時間拡張を施したLinuxAMP(Asymmetric Multi-Processing)の組み合わせにより実現する方法である(図2)。このようなシステムは、通常のLinuxの側でオープンソースの汎用ソフトウエアやデバイスを利用できる一方で、実時間Linuxの側では、任意のI/Oデバイスを占有しながら、制御系、安全系、監視系、高信頼のための二重系などのディペンダビリティー機能を、お互いに非干渉な形で独立させて実装できるという利点がある。


SMPのシステム(左)、AMPのシステムの1例(中)、SMP・AMP混在システムの例(右)の図
図2 SMPのシステム(左)、AMPのシステムの1例(中)、SMP・AMP混在システムの例(右)

 このために主に下記の2つの設計と開発を行った。

  1. x86/Linuxで最もハードリアルタイム性能の高いOSの設計と開発
    割り込みハンドラの周期実行、プライオリティーインヘリタンス機構の導入などにより、x86系でLinux互換のシステムとして、最小のジッターと最短の周期実行性能を実現。
  2. 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のバージョンアップに追従してアップデートの作業を行う。



用語の説明

◆CPUコア(Central Processing Unit Core(s))
計算機の処理を行う論理回路の単位。中央処理装置。近年は複数のCPUコアを1つのパッケージに収めたマルチコアプロセッサーと呼ばれるものが増えてきている。この場合、外見上は1つのプロセッサーでありながら内部的には複数のプロセッサーとして認識される。このため、主に並列処理を行わせる環境では、プロセッサー・チップ全体での処理能力を上げ性能向上を果たすために行われるが、ART-Linuxではこれを利用したディペンダビリティーの向上を図った。[参照元へ戻る]
◆ディペンダビリティー
安全性、信頼性、可用性、一貫性、メンテナンス性を含む広義の信頼性と定義される。システムを安全に保つ、異常があった際の被害を最小化する、システムの再開を最短化する、システムの説明責任を果たすなど、システムに異常が起きた際の対処方法について準備ができていることを指す。[参照元へ戻る]
◆実時間OS(Realtime Operating System)
計算機のハードウエア資源を抽象化したインターフェースをアプリケーションソフトウエアに提供し、アプリケーションが要求する時刻に計算機資源を配分する機能を持つ、システムの基本ソフトウエア。[参照元へ戻る]
Linux
Linuxは、Unixを手本としたオペレーティングシステム (OS) の1つであり、フリーかつオープンソースなソフトウエア開発・頒布モデルのもとに構築されている。1991年にヘルシンキ大学のリーナス・トーバルズによって開発が開始された。サーバ、組み込みシステム(android携帯電話やテレビなど)、デスクトップPC、メインフレーム、スーパーコンピュータなどあらゆる用途で使用されている。[参照元へ戻る]
◆ダウンタイム
システムが機能せず、停止している時間。[参照元へ戻る]
◆SMP(Symmetric Multi-Processing)
SMPは複数プロセッサーによる並列処理方式の一つ。計算機に複数存在するCPUとその物理メモリーを共有させ、特定のリソースを非対称的に割り付けることなく、すべてのCPUに対して対称的、均一的に処理を割り付ける方式。アプリケーションソフトウエアから見るとあたかも1つのCPUで動作しているようにOSが管理している。複数プロセッサーを持つシステムにおいて、もっとも一般的に用いられている。[参照元へ戻る]
◆AMP(Asymmetric Multi-Processing)
AMPも複数プロセッサーによる並列処理方式の一つ。計算機に複数存在するCPUとその物理メモリーを個別に分割し、個別にアプリケーションを割り付ける。アプリケーションソフトウエアはどのCPUで処理しているかを意識する必要がある。リソースの最適化に優れるという特徴を持つ。[参照元へ戻る]
◆I/Oデバイス
計算機で特定の入出力を行うためにオプションとして装着する回路。グラフィックボードのようにそれ自体が汎用の大規模計算機にもなれるものや、アナログ信号の入出力を行うためのもの、モーターの制御をするためのもの、特別な信号による通信を行うためのものなど、用途に合わせて汎用計算機の標準に搭載された機能を拡張するために用いられる。[参照元へ戻る]
◆割り込みハンドラ
計算機の各種I/Oデバイスなどのハードウエアからの処理要求信号は割り込み(インタラプト)と呼ばれる。この割り込みを処理するためにOSは割り込みハンドラと呼ばれる処理を実装し、ハードウエアから要求された処理を行う必要がある。現在の計算機では一秒間に数十万回の割り込みを処理する必要がある。この割り込み処理は実時間OSにとっては実時間処理の不規則性を発生させる要因となっているために、ART-Linuxでは割り込みハンドラも周期実行される実時間処理のタスクとなっている。[参照元へ戻る]
◆プライオリティーインヘリタンス機構
計算機の実時間処理において、計算機のあるリソースを低優先度のタスクが占有しているために、高優先度のタスクが割り込めない現象を、優先度逆転と呼ぶ。これは実時間処理において、有害なジッターを生じさせる。そこで高優先度のタスクを割り込ませるための方法として、プライオリティーインヘリタンスを実装した。高優先度のタスクがブロックされていることを検知すると、低優先度のタスクを高優先度に一時的に格上げし、優先的にブロックを解放するまで処理を行い、ブロックが解除されると、待機していた高優先度のタスクを実行する。これにより待機時間を最小化する手法である。ART-Linuxではカーネル内にある各種ロック機構をこのプライオリティーインヘリタンス機能を持つものに置き換えることにより、優先度逆転を解消している。[参照元へ戻る]
◆ジッター
実時間タスクは、次の起床時刻が定められており、予定された起床時刻と、実際の起床時刻の間のずれの時間をジッターと呼ぶ。ジッターは少ないほどよく、実時間システムにおいては、このジッターの最大値がアプリケーションにとって許容範囲以下であることが要求される。[参照元へ戻る]
◆カーネル
カーネルはOSの中核として、アプリケーションとハードウエアの間の仲立ちをする働きをする。このためにアプリケーションがハードウエアを利用するためにハードウエアを抽象化し、インターフェースを提供する。またプロセスの抽象化、プロセス間通信、システムコールなどの機能を提供する。[参照元へ戻る]
◆リロケーションブート
Linuxカーネルを、指定したプロセッサーからブート(起動)させるときに、計算機の任意のメモリー空間を利用してメモリーにロードし、ロードされたカーネルを解凍して、その指定された空間を利用してブートさせる。これにより、指定したプロセッサーが指定されたメモリー空間を利用可能となる。[参照元へ戻る]
◆仮想シリアル通信
計算機において古くから用いられているRS232、RS485などのシリアル通信の規格がある。開発したシステムでは複数のOSが同時に動作するために、この規格に則った通信をOS間通信の一つの手法として提供する。[参照元へ戻る]
◆オーバーヘッド
システムへ負荷がかかっていることを示す。[参照元へ戻る]

関連記事


お問い合わせ

お問い合わせフォーム