リアルタイム性を強く要求されるシステムにおいては、RT(リアルタイム)パッチによるカーネルのリアルタイム性の向上やLinux+RTOSのハイブリッドなシステムをご提案しています。ZynqなどのマルチコアCPUでは各CPUにそれぞれのOSを割り当て、Linuxの汎用性とRTOSのリアルタイム性の両方を兼ね備えたシステムの構築をサポートします。
弊社ではお客様が必要とする性能に応じて、(1) RTパッチ (2) AMP Linux + RTOS (3) AMP Linux + ベアメタル を軸にリアルタイムシステムの構築をご提案します。
(1) RTパッチ
Ingo Molnar氏がpreemptパッチを積極的に作成していたRTパッチを使用し、カーネル自身のリアルタイム性を向上させます。
RTパッチを使用することによって、より細かな粒度でコンテキストを切り替えることが可能となり、
stockカーネルよりも高速なレイテンシ(待ち時間)を実現できます。
stockカーネル(2.6.18以降)はCONFIG_PREEMPTを設定することにより数msのレイテンシがほぼ確保できるようになったと考えています。
しかし、リアルタイム性を考慮しているドライバを選択利用せずに用いると数msのレイテンシが保てないので、リアルタイム性を維持するためにはドライバの選択が重要になってきます。
(2) AMP Linux + RTOS
本来の意味でリアルタイム処理を行うためには全てのプロセスのデッドラインを保証しなければ
なりません。これはRTパッチを使ったとしてもLinuxでは実現は困難です。
そこで近年マルチコアを持つCPUが普及したこともあり、1つのCPUでLinuxを動かし、
もう1つのCPUではRTOSを動かすことができるようになりました。
Linux+RTOSを使った場合の利点は、TCP/IPなどの汎用処理はLinuxに任せて、
リアルタイム処理はRTOSが動いているCPUで独立して処理できることです。
そのため、LinuxとRTOSが独立して動くため、タスクの切り替えなどの仕掛けを自力で準備する必要がなく、ある程度複雑なアプリケーションもリアルタイム処理として実装できます。
(3) AMP Linux + ベアメタル
この組み合わせが最も高速なリアルタイム処理を実現できます。CPU1個を完全に
リアルタイム処理のためだけに使用することができます。
OSを使わずにアプリだけを動かしたり(ベアメタルと
呼ばれています)することができるようになりました。
シンプルなアプリケーションであれば、この方法が最も高いリアルタイム性能を実現できます。
ZYNQではXilinxがZYNQ SoCデバイスの制御用ライブラリを提供しています。この制御用のライブラリをお客様のボードに合わせて移植を行います。
近年のCPUは高機能化しているため、割込みコントローラにしても、
DMAコントローラにしても、制御方法は複雑で正しい設定が必要になります。
そのため、高いリアルタイム性能を実現するために細部に渡るカスタマイズと設定を行います。
|