リアルタイム制御

ハードリアルタイム

締切を1回でも破ると致命的になる要件。

概要

ハードリアルタイム(Hard Real-time)とは、システムが定めたデッドライン(処理期限)を1回でも超過した場合に、致命的な結果(死亡・重傷・システム全損・回復不能な障害)をもたらす可能性があるリアルタイム要件です。

「ハード」という言葉は「厳格・絶対的」という意味であり、時間制約は交渉の余地のない絶対条件です。デッドラインを守ることがシステムの正確性(Correctness)の定義そのものであり、時間制約を満たさない応答は誤った応答と等価に扱われます。

ソフトリアルタイムと比較すると、ソフトリアルタイムでは多少の遅延があってもシステムが縮退動作を続けられるのに対し、ハードリアルタイムではデッドライン超過が即座に危険な状態へつながります。

代表例として、自動車のエアバッグ制御(衝突検知から展開まで10〜30ms以内)、航空機のフライトコントローラ、原子力発電所の緊急停止系(SCRAM)などが挙げられます。

歴史・背景

ハードリアルタイムという概念が工学的に明確化されたのは1970〜1980年代です。当時、航空宇宙・軍事分野でデジタルコンピュータを制御系に採用する動きが加速し、「コンピュータが時間内に応答しなければ飛行機が落ちる」という現実的な制約から研究が始まりました。

1973年、E.G.CofreyとJ.A.Meadowsが「Scheduling Periodic and Non-periodic Tasks in Real-time Systems」で周期タスクの時間解析を論じました。1973〜1974年にかけてIBMのJ.A.Stankovic、C.L.Liu、J.W.Laylandらが基礎理論を整備し、レートモノトニック(RM)スケジューリングと最悪ケース利用率の上限(n個タスクで約69.3%)を理論的に証明しました(1973年のLiu & Layland論文)。

機能安全の観点では、1998年にIEC 61508「電気・電子・プログラマブル電子安全関連系の機能安全」が制定され、SIL(Safety Integrity Level)という指標でハードリアルタイムシステムの安全性を定量化する枠組みが整いました。自動車分野ではISO 26262(2011年制定)がIEC 61508を自動車向けに特化させたものです。

日本では産業機器・鉄道・エネルギー分野でのリアルタイム制御の歴史が長く、1980年代から制御用コンピュータの時間保証が設計要件として盛り込まれてきました。

技術仕様

SILとデッドライン要件

IEC 61508ではSIL 1〜4の4段階でシステムの安全性を評価します。

SIL要求安全性(低要求モード)代表用途
SIL 110^-5〜10^-6/年産業機械の安全ドア
SIL 210^-6〜10^-7/年鉄道踏切、クレーン
SIL 310^-7〜10^-8/年化学プラント緊急停止
SIL 410^-8〜10^-9/年航空・原子力

SILが高いほどデッドライン超過の許容確率が低く、設計・検証のコストも増大します。

代表的なハードリアルタイム要件数値

用途デッドライン制御周期
自動車エアバッグ展開判断〜5ms0.5〜1ms
ABS(アンチロックブレーキ)〜10ms1〜2ms
航空機フライトコントロール〜40ms20ms(50Hz)
産業サーボモーター制御〜1ms0.25〜1ms
原子炉スクラム(緊急停止)〜100ms10ms
ペースメーカー電気刺激〜5ms心拍検知依存

WCET(最悪実行時間)保証

ハードリアルタイムシステムでは、すべての処理経路のWCETを求め、デッドライン内に収まることを静的解析または実測で保証します。

WCETに影響する主要因:

  • 命令パイプラインのストール(分岐ミス、データハザード)
  • キャッシュミス(Cortex-M7など高性能コアで顕著)
  • DMAとのバス競合
  • 割り込みレイテンシ(ISR処理時間)
  • メモリアクセス待ち(外付けFlash・SDRAM)

動作原理

リアルタイムスケジューリングの理論的根拠

レートモノトニック(RM)スケジューリングは、周期が短いタスクほど優先度を高く割り当てるアルゴリズムです。Liu & Layland(1973)により、最適な静的優先度スケジューリング手法であることが証明されています。

n個の周期タスクがすべてデッドラインを満たすための利用率条件:

U = Σ(Ci/Ti) ≤ n × (2^(1/n) - 1)
n→∞ のとき → ln(2) ≈ 0.6931

例:3タスク(C1=1ms/T1=5ms、C2=2ms/T2=10ms、C3=1ms/T3=20ms)の場合

U = 1/5 + 2/10 + 1/20 = 0.20 + 0.20 + 0.05 = 0.45
上限 = 3 × (2^(1/3) - 1) ≈ 0.780
0.45 < 0.780 → スケジューラビリティ保証

EDF(Earliest Deadline First)スケジューリングは動的優先度割り当てで、利用率100%まで保証できる最適アルゴリズムですが、オーバーロード時の挙動が複雑です。

実装パターン:割り込みと高優先度タスクの分離

/* ハードリアルタイム制御の典型的パターン(FreeRTOS + STM32) */

/* ISR:最小限の処理のみ(数μs以内) */
void TIM1_IRQHandler(void) {
    BaseType_t xHigherPriorityTaskWoken = pdFALSE;
    HAL_TIM_IRQHandler(&htim1);

    /* センサ値をキューへ(コピーのみ) */
    uint16_t raw = ADC1->DR;
    xQueueSendFromISR(sensorQueue, &raw, &xHigherPriorityTaskWoken);
    portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
}

/* 最高優先度制御タスク(デッドライン:5ms) */
void controlTask(void *pvParameters) {
    uint16_t raw;
    TickType_t xLastWakeTime = xTaskGetTickCount();

    for (;;) {
        /* キューから値を受け取り(ブロッキング、タイムアウト設定) */
        if (xQueueReceive(sensorQueue, &raw, pdMS_TO_TICKS(5)) == pdTRUE) {
            float volt = (float)raw * 3.3f / 4096.0f;
            float output = pidUpdate(volt);
            setOutput(output);

            /* ウォッチドッグリセット(処理完了を証明) */
            HAL_IWDG_Refresh(&hiwdg);
        } else {
            /* デッドライン超過 → 安全状態へ遷移 */
            enterSafeState();
        }
    }
}

用途・ユースケース

自動車(Automotive)

現代の自動車は数十〜百個以上のECU(電子制御ユニット)で構成され、その多くがハードリアルタイム要件を持ちます。

  • エアバッグECU: 加速度センサで衝突を検知し、点火タイミングを制御。展開判断は5ms以内、全展開まで30ms以内
  • ABS/ESC: 車輪速センサを1〜2ms周期で監視し、ブレーキ圧を制御
  • AUTOSAR準拠システム: 自動車向けソフトウェアアーキテクチャ標準。タスクの周期・デッドライン・優先度を明示的に管理

航空宇宙

  • フライトコントローラ: DO-178CレベルAに適合したソフトウェア。全コードのWCET検証が必須
  • ロケット誘導制御: ITAR規制対象の高信頼ソフトウェア。三重系冗長構成が一般的
  • 衛星姿勢制御(ADCS): リアクションホイールを数Hz〜数十Hz周期で制御

産業・医療

  • CNC工作機械: サーボ軸を0.5〜1ms周期で位置・速度制御
  • 人工呼吸器: 圧力センサを1ms以下で監視し、バルブを制御
  • 放射線治療装置: 照射量をリアルタイムで監視・遮断

実装・開発のポイント

設計原則

  1. 最悪ケース設計(Worst-Case Design) 平均性能でなくWCEPを基準に設計します。if分岐の最長パス、ループの最大反復回数を常に意識します。

  2. 静的メモリ割り当て malloc/freeはWCETが不定になるため禁止。スタック・データは起動時に全確保します。

  3. ロックフリーデータ構造の活用 割り込みハンドラとタスク間の通信には、割り込み禁止不要のリングバッファ(SPSC Queue)を使用することで、デッドロックリスクを排除します。

  4. ウォッチドッグタイマの必須化 ハードリアルタイムシステムでは独立したハードウェアウォッチドッグを必ず搭載し、制御タスクが定期的にリセットしなければ系をリセットします。

認証・検証

  • 形式手法(Formal Methods): TLA+やCOQを使って仕様を数学的に証明
  • MISRA-C準拠: 自動車向けCコーディング規約。未定義動作・危険な構文を禁止
  • 静的解析ツール: AbsInt aiT、RAPITA RVT などでWCETを自動計算
  • HIL(Hardware-in-the-Loop)テスト: 実際のECUを使ったシステムレベルのタイミング検証

他技術との比較

観点ハードリアルタイムソフトリアルタイムベストエフォート
デッドライン超過の影響致命的(安全障害)品質低下(縮退動作)性能低下のみ
WCET保証必須(静的解析)推奨(実測)不要
OS選択RTOS(OSEK/FreeRTOS/Zephyr)RTOS or PREEMPT_RT Linux汎用OS
メモリ管理静的割り当て必須静的推奨動的可
CPU利用率70%未満が目安80〜90%制限なし
認証規格ISO 26262/DO-178C/IEC 61508なし〜任意なし

ハードリアルタイムシステムの設計は、単なる高速化とは根本的に異なります。最悪ケースの時間保証、安全設計、認証取得という多層的なアプローチが不可欠です。

関連用語

参考リンク