1. ハードウェアRTOS (HW-RTOS) とは ?

HW-RTOSはリアルタイムOSをハードウェア化したものです。従来のソフトウェアによるRTOSと比較して、オーバヘッドが少なく高いリアルタイム性能を実現します。セマフォ、イベントフラグなど標準的なシステムコールを約30種類サポートしており、高速でバラつきの少ない実行時間や割り込み応答が可能です。このため、最悪実行時間を規定できるようになり、リアルタイムシステムの設計が容易となります。

HW-RTOSの詳細な情報を下記ビデオでも紹介しております。ご参照ください。

  1. HW-RTOSの概要
  2. HW-RTOSの機能と性能
  3. 次世代HW-RTOS

2. リアルタイム組み込みシステムにおける課題

3. HW-RTOSを実装する製品

現在下記製品にHW-RTOSを実装しております。

RZ/N1D

Cortex®-A7(Dual)
+
Cortex®-M3
4p GbE Switch +1 MAC
EtherCAT Slave Controller
Sercos

RZ/N1S

Cortex®-A7
+
Cortex®-M3
4p GbE Switch +1 MAC
EtherCAT Slave Controller
Sercos

RZ/N1L

Cortex®-M3
4p GbE Switch +1 MAC
EtherCAT Slave Controller
Sercos

RZ/T1

Cortex®-R4 Processor with FPU
+
Cortex®-M3
2p Ether Switch + 1 MAC
EtherCAT Slave Controller* (*Option)

R-IN32M3-EC

Cortex®-M3
2p Ether Switch
On chip PHY
EtherCAT Slave Controller

R-IN32M3-CL

Cortex®-M3
2p GbE Switch
CC-Link IE Field Controller

R-IN32M3-CL2

Cortex®-M4 Processor with FPU
2p GbE Switch
On chip GbE PHY
CC-Link IE Field Controller

4. HW-RTOSの特長

特長1: 世界一のRTOS性能

HW-RTOSは世界一のRTOS性能を提供します。すなわち、超高速なシステムコール実行時間、インターラプト応答性能を提供します。具体的には従来のソフトウェアRTOSに比較し、実質2〜3倍の性能を提供します。また従来のソフトウェアRTOSでは、実行時間や応答時間の最悪値を定義することが困難でした。これは処理時間が内部の状態により刻々と変化するからです。一方HW-RTOSでは条件付きながら各システムコールや割込み応答時間の最悪値を定義することができます。これはリアルタイム設計において大きなアドバンテージです。さらに、割込み応答時間のジッタが極めて小さく、安定した割込みレイテンシを得られるのも大きな特徴です。このようにHW-RTOSにより、エンベデッドシステムにおいて高いハードリアルタイムシステムを実現することが可能です。

特長2: Tickオフローディング

TickはRTOSにおいてリアルタイム動作を実行するための必須機能ですが、このTick処理を完全ハードウェア化致しました。これにより、従来必要であったTickのための周期割込みが不要になり、またTick処理をCPUで実行することが必要なくなり、CPUの処理効率の向上、割込み禁止期間の短縮、Tick周期の大幅短縮による高精度化を実現しました。

特長3: HW ISR (ハードウェアISR)

HW ISRはISR処理を定型化し、ハードウェア化したものです。一般に、ISR(Interrupt Service Routine)実行中は割込み禁止状態になるため、ISRで多くの処理は行わず、セマフォ解放、イベントフラグセット等のシステムコールを発行し、これらの事象を待っていたタスクに処理を引き継ぎます。HW ISRとは、ISRで発行したシステムコールをHW-RTOS内部で自動的に発行するようにした機能です。これにより割込み発生からISRの終了までを全てハードウェアで実現できるため、割込み応答性能が大幅に向上するだけでなく、割込み禁止状態期間も大幅に短縮します。HW ISRはシステムのリアルタイム性能を大きく向上させます。

特長4: 少ないフットプリント

HW-RTOSはほとんどの機能がハードウェアで実装されております。従来のソフトウェアRTOSで必要であったRTOSのためのコード、RTOSが必要とするテーブル類は全てハードウェアコアの中に実装されています。必要なのはHW-RTOSを動作させるためのライブラリソフトウェアのためのメモリエリアのみです。従って、従来のRTOSに比較し、少ないフットプリントを実現しています。

1. HW-RTOSについて

HW-RTOSは、リアルタイムOSをハードウェアで実現した、ルネサスエレクトロニクスのオリジナル技術です。HW-RTOSは約30種類のシステムコールをサポートしており、これら全てがハードウェアにより実装されております。ハードウェアにより実現することにより、 従来のソフトウェアRTOSに比較し極めて高いRTOS性能を提供します。具体的には、

  • 高速かつバラツキの少ないシステムコールの実行時間
  • 高速かつバラツキの少ない割込み応答性能
  • 極めて短い割込み禁止期間

を実現します。従来のソフトウェアRTOSと異なり、最悪実行時間を規定することが可能です。これはリアルタイムシステムの設計を容易にします。

HW-RTOSは高性能なRTOSを提供するだけなく、組込みシステムのRTOSとして十分な機能を提供しております。HW-RTOSがサポートするシステムコールは以下の通りです。

  • セマフォ
  • イベントフラグ
  • メールボックス
  • CPUロック、ディスパッチ禁止
  • スリープ/ウェイクアップ
  • 強制待ち解除
  • Readyキュー回転
  • 優先度変更

2. システムコールの発行方法

HW-RTOSはシステムバス上の周辺モジュールの一つとして配置されます。HW-RTOSは図のようにHW-RTOSを利用するために、「システムコールレジスタ」、「引数レジスタ」、「結果レジスタ」を用意しています。ルネサスではこれらをアクセスするためにOSライブラリを用意し、利用者はOSライブラリのAPIを使って通常のソフトウェアRTOSと同様にシステムコールを簡単に発行することができます。
図のようなシステムコール(set_flg)が発行された場合、OSライブラリは引数を引数レジスタに、システムコールの種類をシステムコールレジスタに書き込みます。HW-RTOSはこれを受け、システムコールを実行し、戻り値を結果レジスタに書き込ます。OSライブラリはAPIを介して戻り値を発行アプリケーションに伝えます。
システムコールを実行した結果、タスク切換が必要な場合があります。このとき、HW-RTOSはタスク切換が必要である旨および次に実行すべきタスクIDを結果レジスタに書き込み、OSライブラリに伝えます。OSライブラリはこれに伴いソフトウェアにより、コンテキストスイッチを実行します。

3. Tickオフローディング

RTOSではソフトウェアで時間を計測しています。例えば、あるタスクがスリープし、1秒後に再起動する場合、RTOSはこの1秒を測定しなければなりません。このように時間計測のためのソフトウェアが周期的に起動されます。これがTick処理です。図のように、Tickを実現するため、周期割込みが必要です。
Tickは必須機能ですが、以下3つの弊害があります。第一に、図のように周期的にアプリケーションが中断されるわけであり、CPUの使用効率が低下します。第二に、Tickは極めてクリティカルな処理を行っているため、割込み禁止状態になるのが一般的です。従って割込み応答性能が劣化します。第三にTick処理をソフトウェアで実現する必要があるため、Tick周期は極端に短くできない、すなわち高精度な時間管理はできないと言うことが言えます。

一方HW-RTOSでは、Tick処理を完全にハードウェア化しました。これをTickオフローディング機能と言います。HW-RTOS内で、Tick処理が実行されます。したがって、Tickのための周期的な割込みの必要がなくなりますし、CPUはTick処理をする必要がなくなります。図のように、CPUは常にアプリケーションソフトウェアを実行することができ、唯一中断されるのは、タイムアウトによるコンテキストスイッチが発生した時のみです。また、Tick処理は大変高速に実行されるため、Tick周期を短くすることができます。以上のようにTickオフローディング機能により、従来のソフトウェアに比較し以下のアドバンテージを得ることができます。

  • Tick処理によるCPU効率低下がない
  • Tick処理による割込み禁止期間がない
  • Tick精度の大幅向上

4. ハードウェアISR (HW ISR)

割込みが発生すると、インターラプトサービスルーチン (ISR) が起動されます。ISR実行中は割込み禁止状態になるのが一般的です。上の図では割込みの種類により交互にISR1とISR2が起動しています。
もし、ISR1の処理が長引くと、下の図のように他の割込みを取りこぼしたり、遅延したりします。リアルタイムシステムでは割込みの取りこぼしはあってはならないことですし、遅延も避けたいところです。

このような問題を避けるため、一般的には以下の様な手法をとります。

図のように、ISR1の処理はタスク1に、ISR2の処理はタスク2に引き継ぎます。タスクは割込み禁止にはなりませんので、他の割込みを影響を与えることはありません。

引き継ぐ方法は以下の通りです。タスク1はフラグ待ちとし、割込み1が発生した時、ISR1ではタスク1の「待ち解除」をするためのシステムコールを実行します。

このようにすることにより割込み処理が、他の割込みへの影響を最小限にすることができます。

「割込みが発生したら、ISRでシステムコールを発行する」、これをもう少し詳しく見てみましょう。下図はこれを示しています。Task A実行中、割込みが発生したとします。

  1. RTOSはCPUのレジスタを入れ替え、ISRを起動します。
  2. ISRでは割込み要因をチェックし、その割込みに対応したシステムコールを発行します。
  3. このシステムコールを実行します。
  4. システムコールが終わると、ISRも終了します。
  5. システムコールの結果、Readyキューに変化が生じ、Task AよりISRの処理を引き継ぐTask Bのほうが優先度が高ければ、ディスパッチを実行し、Task Bを実行させます。

 

以上の流れになります。しかし、この処理はかなり複雑で、一般的には500サイクルから1,500サイクルもの時間が消費されます。

一方、HW-RTOSを使用すると、図のRTOSの処理はDispatch処理以外はハードウェア化されているので大変高速に処理されることになります。

すなわちISRの処理を高速化したのです。ISRは割込み要因に対応したシステムコールを発行するだけです。したがって、この部分をハードウェア化し、高速化しました。これをハードウェアISR (HW ISR) と言います。下図にこのタイミングチャートを示します。

 

  1. 割込みが発生し、HW-RTOSが動作開始します。HW-RTOSはHW ISRを起動します。
  2. HW ISRでは割込みに対応したシステムコールを発行します。
  3. 発行されたシステムコールをHW-RTOSが実行します。
  4. システムコールの結果、Readyキューに変化が生じ、Task AよりISRの処理を引き継ぐTask Bのほうが優先度が高ければ、ディスパッチを実行し、Task Bを実行させます。

 

以上がHW ISRによる割込み処理です。注目すべきポイントはHW-RTOSおよびHW ISRの処理中CPUはTask Aの処理をし続けることができると言うことです。したがって、CPUが中断されるのはタスク切換の期間のみになります。

下図は、前記4.において、ISR処理を引き継ぐべきTask BがReady状態になるものの、Task Bの優先度がTask A以下であった場合の例です。この場合はタスク切換の必要がありませんので、Task Aは処理をし続けることができます。割込みが発生してもCPUに全くオーバヘッドがかかりません。これは驚くべき事です。

以上がHW ISRの説明です。HW ISRを利用することにより以下の様なベネフィットを得ることができます。

  1. CPUの割込み時のオーバヘッドの大幅削減
  2. 割込み禁止期間の大幅削減
  3. コンテキストスイッチの回数の大幅削減

一般的なシステムにおいてはほとんどの割込みはHW ISRに置き換えることが可能です。迅速に実行したい処理はHW ISRで起動されるタスクの優先度を上げれば良いだけです。もちろん、HW-RTOSを利用し、従来のISRによる処理も可能です。

 

5. HW-RTOSの性能

システムコールの実行時間を示します。紫色が従来のソフトウェアRTOS、薄紫色がHW-RTOSの実行時間です。

HW-RTOSはソフトウェアRTOSに比較して、実行時間が短いだけでなく、あまり大きく変動しないことが特徴です。

この図はインタラプト応答の性能を示しています。割込みが発生してからISRが起動されるまでの時間と次のタスクが起動されるまでの時間を測定しました。ソフトウェアRTOSを使用した場合、測定する度に値が変化するのに対し、HW-RTOSでは一定であるのが大きな特徴です。またHW ISRを使用した場合は、大きな性能向上になることがわかります。

6. ネットワークとRTOS

パソコン用のCPUと違い、組み込みシステム用のCPUにTCP/IPを実装した場合、高いスループットを実現するのは大変困難です。市販のTCP/IPプロトコルスタックで送受信を実行させ、プロファイリングをとったものが上の図です。CPUで実行される処理のうち、複雑なプロトコル処理を行っている時間はわずか11%、その他の時間は「メモリコピー」、「ヘッダ並べ替え」、「TCPチェックサム」、「RTOS処理」を実行していました。このうち、 「メモリコピー」、「ヘッダ並べ替え」、「TCPチェックサム」はハードウェア化が容易であり、これを実現すると真ん中の図のようになります。しかしまだ、RTOS処理が大きなオーバヘッドになっています。TCP/IPのようなプロトコル処理はマルチタスクで実現されるため、パケットを一つ送信または受信するためタスクの切換が発生し、また複数のシステムコールが発生するためRTOSによるオーバヘッドが大きくなります。HW-RTOSはこの問題を解決します。HW-RTOSを使用することにより、下の図のように、大幅にCPU負荷を削減することが可能です。これはすなわち組み込みシステムのような非力なCPUを使用して高いネットワーク性能を達成することに他なりません。また、もしそれほど高いネットワーク・スループットが必要でなければ、低い動作クロックを使用することができ、大幅な消費電力の削減につながります。

図はR-IN32M3のブロック図です。R-INエンジンはHW-RTOS、Cortex®-M3、イーサネットアクセラレータより構成されます。イーサネットアクセラレータは、先に示した「メモリコピー」、「ヘッダ並べ替え」、「TCPチェックサム」を高速化するハードウェアです。R-INエンジンを使用することにより、TCP/IPを始めネットワークプロトコル処理を高速化することが可能になります。R-INエンジンは、R-IN32シリーズ、RZ/N1シリーズの全ての製品およびRZ/T1の一部の製品に実装されております。

この図は、R-IN32M3にUDP/IPを実装してスループットを測定した結果です。動作クロックは100MHz、Ethernetフレーム長は1500バイトです。一番上のバーは、HW-RTOSをOFFにしてソフトウェアRTOSを実装し、UDPチェックサムをソフトウェアで実行したものです。真ん中のバーは、チェックサムをハードウェア化、一番下のバーはさらにHW-RTOSをONにしたものです。このように、HW-RTOSを含むR-INエンジンはネットワークプロトコル処理高速化において大変効果があります。

1. HW-RTOSの基本仕様

HW-RTOSの基本仕様は、R-IN32シリーズ、RZ-T1、RZ-N1シリーズとも、以下の通りです。

項目 仕様
タスク数 64
ISR数 1
割り込み 1
HW ISRのための割り込み数 32
優先度 15
Tick周期 10 [us] ~ 100 [ms] まで1 [us] 間隔で指定可能
セマフォID数 128
イベントフラグID数 64
メールボックスID数 64

2. システムコール一覧

カテゴリ システムコール 備考
タスクの起動・終了 自タスクの終了, 他タスクの終了, タスクの起動  
イベントフラグ イベントフラグ待ち, イベントフラグセット, イベントフラグクリア タイムアウト、ポーリングオプション
セマフォ セマフォ資源の獲得, セマフォ資源の解放 タイムアウト、ポーリングオプション
メールボックス メールボックスからの受信, メールボックスへの送信 タイムアウト、ポーリングオプション
起床 起床待ち, タスクの起床 タイムアウト
優先度 タスク優先度の変更, タスク優先順位の回転  
その他 待ちの強制解除, CPUロック状態への移行, CPUロック状態の解除, ディスパッチ禁止, ディスパッチ許可  

3. HW ISR

HW ISRでは、各割り込み信号に対応して以下のシステムコールをプログラマブルに設定することが可能です。

  • イベントフラグのセット
  • セマフォ資源の解放
  • 起床
  • 待ち状態の強制解除

応用例1: HW ISRを使用した多重割込み

HW ISRを利用すると簡単に多重割込みが実現できます。従来の割込みでは割込み信号線に優先度を対応させ、多重割込みを実現していましたが、HW ISRでは起動されるタスクの優先度により多重割込みを実現します。優先度は、数値が小さい方が優先度が高いとします。下記ではタスクAが優先度が最高となります。割込み線にそれぞれHW ISRでセマフォ6の解放、セマフォ3の解放、セマフォ4の解放のシステムコールが実行されるように設定します。割込みが発生すると、待ち状態のタスクの優先度に従って多重割込みが実現できます。

応用例2: サイクリック起動タスク

HW-RTOSにはサイクリックハンドラ機能がありません。しかし、HW ISRを使用することにより、同等な機能を実現できます。さらに、HW ISR機能を使用したサイクリック起動タスクは、従来のソフトウェアRTOS上で動作するサイクリックハンドラより起動時間が高速です。手順は簡単です。R-INエンジン実装製品の内蔵タイマの出力をHW ISRの入力として定義します。図の例ではタスクAがサイクリック起動タスクになります。起動時間は最悪3.5usec@100MHzになりますので、極めてリアルタイム性の高い周期処理が可能になります。

応用例1で示した多重割込みとあわせてシステムを構築することにより、複数のサイクリック起動タスクを実現できます。図は2つのサイクリック起動タスクです。タスクBはタスクAの5倍の周期で起動するサイクリック起動タスクです。実際には、3つ以上のサイクリック起動タスクを定義することができますし、また全く同期の取れていない周期での起動や、外部端子からのサイクリック起動も可能です。

応用例3: 網同期によるサイクリック起動タスク

R-INエンジンの実装された製品ではIEEE1588を実現するためのハードウェアが実装されています。IEEE1588プロトコルソフトウェアを実装することにより、ネットワークを介してステーション間で時刻同期を取ることができます。この同期信号をタイマに入力し、応用例2を実現することにより、ネットワークを介して離れた場所にあるHW-RTOSにおいて、同時にサイクリックタスクを周期的に起動することができるようになります。サイクリックタスクの起動誤差は極めて小さく、IEEE1588による誤差に最悪で3.5μ秒の遅延が加算されます。時刻同期はEtherCATにより実現することも可能です。

HW-RTOSチュートリアル

HW-RTOSの詳細な情報を紹介しております。

HW-RTOS outline

1. HW-RTOSの概要

HW-RTOSのベネフィットと、従来のソフトウェアRTOSの比較を簡単に説明します。

Function and Performance of HW-RTOS

2.HW-RTOSの機能と性能

概要、HW-RTOSが持っている特別な機能やそれによるベネフィット、HW-RTOSの性能、HW-RTOSのアプリケーション、HW-RTOSを実装している当社製品について説明します。

Next Generation HW-RTOS

3.次世代HW-RTOS

次世代のHW-RTOSについて説明します。特に密結合型HW-RTOSやそれによる性能向上、またマルチコア対応機能やその応用例について解説します。

従来のRTOSに関する基礎技術

従来のソフトウェアによるリアルタイムOSについて紹介します。

Why RTOS is required

1. なぜRTOSが必要なのか

RTOSがなぜ必要なのか、RTOSを使用するとなぜ便利なのかを解説します。

Task, Handler and API

2. タスク

タスクとは何か、タスクの優先度やタスクの状態、タスク切換とはどういうことかを解説しています。

Semaphore, Hander, API

3. ハンドラ

ハンドラについて解説します。またOS管理外割り込み、OS管理割り込みの違いや、ハンドラ中からのシステムコールの発行について解説します。

Architecture and Performance of RTOS

4. RTOSの構造と性能

RTOSの構造について解説します。RTOSはオーバヘッドが大きいといわれますが、なぜオーバヘッドが大きいのか理解することができます。具体的にはキュー処理やTick処理により割り込み禁止期間が増えるメカニズム等を説明します。またこれにあわせて、RTOSの性能についても解説します。

RTOS for Muti-core systems

5. マルチコアとRTOS

マルチコアシステムにおいて、RTOSを導入することによるソフトウェアアドバンテージについて説明します。特にシステムコールを利用したCPU間同期、CPU間通信について説明します。また一方で処理時間が大幅に増えるなどの弊害についても説明します。