エンベデッドシステムスペシャリスト試験 のナレッジマップ
エンベデッドシステムスペシャリスト試験 の主要概念 41 件と、そのつながり。上のマップでノードをクリックすると関連用語や前提をたどれます。下は全概念の索引で、定義と「前提・関連する概念」への内部リンクを掲載しています。
概念一覧(41)
クリティカルセクション
共有資源にアクセスする処理のうち、複数のタスクや割込みハンドラが同時に実行すると不整合(競合状態)を引き起こしうる区間。実行中は割込み禁止やミューテックスによる排他制御で他からのアクセスを防ぐ必要があるが、区間を必要以上に長く取ると割込み応答性やタスク切替の遅延を招くため、最小限に留める設計が求められる。
ISR(割込みサービスルーチン)
割込み発生時にハードウェアによって呼び出される専用の処理ルーチン。応答性を確保するため実行時間を最小限に留め、時間のかかる処理は通常タスク側へ委譲する設計が定石とされる。ISR内でリエントラントでない関数を呼んだり長い処理を行うと、他の割込みやタスクの応答性を悪化させる。
関連: リエントラント(再入可能)
ミューテックス
複数タスクが共有資源へ排他的にアクセスするための同期機構。カウント値0/1のバイナリセマフォに似るが、ロックしたタスクのみが解放できる「所有権」の概念を持つ点が異なり、これにより優先度継承プロトコルの適用が可能になる。組込みRTOSでは共有変数やハードウェアリソースの排他制御に用いる。
機能安全
電子・電気システムの誤動作や故障が発生しても、検出・制御機構によって重大な事故につながる状態を防ぐという考え方、およびその実現手法の総称。ハードウェア故障だけでなくソフトウェアの不具合も対象とし、リスクの大きさに応じた安全度水準(SIL/ASIL)を定めて、要求される信頼性のレベルに応じた設計・検証を行う。
関連: ISO 26262
マイコン(MCU)
CPUコア・メモリ(フラッシュ/SRAM)・周辺I/O(タイマ/UART/AD変換等)を1チップに集積した組込み向け処理デバイス。汎用CPU+外部メモリ構成に比べ低コスト・低消費電力・省スペースで、家電やIoT機器の制御に広く使われる。用途(処理性能/消費電力/ピン数/価格)に応じたMCU選定が組込み設計の出発点になる。
前提: SRAM/DRAM、UART(Universal Asynchronous Receiver/Transmitter)
ARM Cortexシリーズ(M/R/A)
ARMアーキテクチャの用途別プロセッサ群。Cortex-Mは低消費電力・低コストのマイコン向け、Cortex-Rはハードリアルタイム性を要する制御用途向け、Cortex-Aは高性能・OS実行(Linux/Android等)向けに設計されている。組込み設計ではリアルタイム性・処理性能・消費電力の要件に応じてシリーズを選定する。
FMEA(故障モード影響解析)
構成部品ごとに想定される故障モード(壊れ方)を洗い出し、それがシステム全体に与える影響を評価するボトムアップ型の解析手法。個々の部品の故障からシステムレベルの影響を積み上げて分析するため、設計段階で見落としがちな単一故障の影響を体系的に洗い出せる。機能安全の設計プロセスで必須の解析として位置づけられる。
前提: 機能安全
IEC 61508
電気・電子・プログラマブル電子(E/E/PE)安全関連系に関する機能安全の国際基本規格。産業機器全般に適用される汎用規格で、リスクの大きさに応じてSIL(安全度水準)1〜4を定義し、設計プロセス・検証・故障率の要求事項を規定する。自動車分野のISO26262など、業界別の派生規格の基礎になっている。
前提: 機能安全
関連: ISO 26262
割込み遅延(レイテンシ)
割込み要求が発生してから、対応する割込みサービスルーチン(ISR)が実際に実行を開始するまでの時間。割込み禁止区間の長さや多重割込みの優先度設計に左右され、リアルタイムシステムではこの遅延の最悪値(ワーストケース)を見積り、デッドラインを満たせるかを検証する必要がある。
リアルタイムOS(RTOS)
タスクの実行順序や応答時間を決定的(予測可能)に制御し、定められたデッドラインを守ることを重視して設計されたOS。汎用OSがスループットや公平性を重視するのに対し、RTOSは優先度ベースのスケジューリングと短く一定の割込み応答時間を提供し、制御系や通信機器のタイミング要件を満たす。
セマフォ
複数のタスク(プロセス)が共有資源に同時アクセスするのを制御する仕組み。資源の利用可能数を示すカウンタを用い、P操作(獲得)・V操作(解放)でアクセスを排他的に管理する。
分岐予測
パイプライン処理において分岐命令の行き先をあらかじめ予測し、予測が正しければパイプラインの乱れを防いで性能を維持する仕組み。予測が外れるとパイプラインフラッシュが発生し遅延が生じるため、組込みのリアルタイム制御では予測ミスによる実行時間のばらつき(ジッタ)が問題になり得る。
前提: パイプライン処理
イベントフラグ
複数のビットで構成され、各ビットが特定のイベント発生を表す同期オブジェクト。タスクは特定のビットパターン(単一イベントまたは複数イベントのAND/OR条件)が成立するまで待機でき、複数の非同期イベントの組合せ条件による同期が必要な場面でセマフォより柔軟に使える。
前提: セマフォ
FTA(故障の木解析)
システムに発生してほしくない望ましくない事象(トップ事象)を頂点に置き、それを引き起こしうる要因を論理ゲート(AND/OR)でツリー状に分解していくトップダウン型の解析手法。FMEAとは逆方向のアプローチで、複数の故障が重なって初めて重大事故に至るような組合せ的なリスクを可視化するのに向く。
前提: FMEA(故障モード影響解析)
GPIO(汎用入出力ポート)
ソフトウェアからレジスタ設定により入力・出力・プルアップ/プルダウン等を切替可能な汎用のデジタル入出力ピン。特定の専用機能を持たず用途を自由に割り当てられるため、スイッチ入力・LED制御・簡易な外部デバイス制御など組込みシステムの最も基本的なI/O手段として使われる。
前提: プルアップ抵抗
ハードリアルタイム/ソフトリアルタイム
デッドライン超過の許容度による分類。ハードリアルタイムはデッドラインを1回でも外すとシステム障害や事故に直結する厳格な要件(エアバッグ制御等)、ソフトリアルタイムはデッドライン超過が性能劣化に留まり許容できる要件(動画再生等)を指す。要件の分類が、採用するスケジューリング方式や検証手法を左右する。
ISO 26262
自動車の電気・電子システムに特化した機能安全の国際規格。IEC61508をベースに自動車分野向けに策定され、危害の程度・発生頻度・回避可能性からASIL(自動車安全度水準)A〜Dを決定し、要求される安全度に応じた開発プロセス・検証手法を規定する。ASIL Dが最も厳格な水準。
メッセージキュー
タスク間またはタスクと割込みハンドラ間でデータを受け渡すための、FIFO(先入れ先出し)方式のバッファ機構。送信側はキューにメッセージを積み、受信側は届くまで待機(ブロック)できるため、直接の関数呼出しより疎結合にタスクを連携させられ、生産者-消費者型の処理に適する。
前提: ISR(割込みサービスルーチン)
多重割込み(ネスト割込み)
割込み処理の実行中に、より優先度の高い別の割込みが発生した場合にそれを受け付け、現在の処理を中断して優先度の高い割込みを先に処理する仕組み。緊急性の高いイベントへの応答性を確保できる一方、スタック消費の増大や、割込み処理中のクリティカルセクション設計を誤ると不整合を招くため注意が要る。
前提: クリティカルセクション
プリエンプション
実行中のタスクよりも優先度の高いタスクが実行可能になった時点で、スケジューラが強制的に実行中タスクを中断し、優先度の高いタスクに切り替える仕組み。緊急性の高い処理への即応性を確保できる一方、切替対象のタスクの実行途中でリソースが不整合な状態のまま中断されないよう、クリティカルセクションの保護設計が必要になる。
前提: クリティカルセクション
優先度逆転
高優先度タスクが、低優先度タスクが保持する共有リソースのロック解放を待つ間に、中間優先度のタスクに実行権を奪われ続け、結果として高優先度タスクの実行が事実上、中優先度タスクより後回しになる現象。デッドラインを外す重大な不具合原因となり、優先度継承や優先度上限プロトコルによる対処が必要。
フリップフロップ
1ビットの情報を保持できる順序回路の基本素子。クロック信号に同期して入力を取り込み、次のクロックまで出力を保持する。レジスタやカウンタなど記憶回路の構成要素になる。
関連: 組合せ回路/順序回路
パイプライン処理
命令の実行を「命令フェッチ・デコード・実行・書き戻し」などの段階に分割し、複数の命令の各段階を並行して処理することでCPUのスループットを高める方式。分岐命令などでパイプラインハザードが起きうる。
前提: ライトスルー/ライトバック
関連: 命令パイプラインハザード
CPUとクロック周波数
CPU(中央処理装置)は演算・制御を担うコンピュータの中枢。クロック周波数はCPUが1秒間に処理できる信号の回数(Hz単位)を表し、一般に数値が大きいほど処理速度が速い目安になる。
稼働率
システムが正常に稼働している時間の割合。稼働率=MTBF÷(MTBF+MTTR) で求められ、故障間隔が長く修復時間が短いほど高くなる。可用性の代表指標で、SLA の合意値(例 99.9%)としても用いる。
前提: 平均故障間隔(MTBF)
組合せ回路/順序回路
組合せ回路は出力が現在の入力のみで決まる回路(AND/OR/NOT等の組合せ)、順序回路はフリップフロップ等の記憶素子を持ち、現在の入力に加え過去の状態(内部状態)にも出力が依存する回路。組込みのタイミング設計や状態遷移設計の基礎となる区別で、後者はクロックに同期した動作解析が必要。
関連: フリップフロップ
命令パイプラインハザード
命令パイプライン処理において、分岐命令やデータ依存により後続命令が正しく実行できず、パイプラインの乱れ(ストール/フラッシュ)が生じる現象。構造ハザード・データハザード・制御(分岐)ハザードに分類され、組込みではリアルタイム性を乱す要因として、分岐予測や命令並べ替えによる対処が設計上重要になる。
前提: 分岐予測
関連: パイプライン処理
優先度継承プロトコル/優先度上限プロトコル
優先度逆転への2つの対処法。優先度継承プロトコルは、高優先度タスクが待っているロックを保持する低優先度タスクの優先度を一時的に待機側と同じ水準まで引き上げ、中間優先度タスクに横取りされないようにする。優先度上限(天井)プロトコルは、各共有リソースにそれを使用しうる全タスク中の最高優先度をあらかじめ設定し、ロック取得時に直ちにその上限まで引き上げる方式で、より単純な実装でデッドロック防止も同時に実現できる。
関連: 優先度逆転
プルアップ抵抗
入力ピンを電源電圧側に抵抗を介して接続し、外部から明示的にLowへ引き下げられない限りHighレベルを維持させる回路。オープンドレイン/オープンコレクタ出力のデバイス(I2C等)や、スイッチが開放状態のときの入力レベルを不定にしないために用いられ、値が未確定(フローティング)になることを防ぐ。
レートモノトニックスケジューリング
周期タスクに対し、周期が短いタスクほど高い優先度を静的に割り当てるスケジューリング方式。周期・実行時間が既知の固定優先度スケジューリングの中で最適とされ、タスク数nに対し利用率がn(2^(1/n)-1)以下ならスケジュール可能という十分条件(Liu & Layland)で、デッドラインを守れるかを設計段階で検証できる。
リエントラント(再入可能)
複数のタスクや割込みハンドラから同時に、あるいは実行が中断されて再度呼び出されても、共有状態を壊さず正しく動作する性質を持つ関数・コード。内部でグローバル変数や静的変数を書き換えずローカル変数のみで完結させることで実現し、割込みハンドラやマルチタスクから共通に呼ばれる関数には必須の性質。
関連: ISR(割込みサービスルーチン)
SRAM/DRAM
SRAMはフリップフロップで1ビットを保持するため高速だがセルサイズが大きく高コスト・低密度、DRAMはコンデンサで電荷として保持するためリフレッシュ動作が必要だが小型・低コストで大容量化しやすい。組込みではキャッシュや高速ワークメモリにSRAM、大容量メインメモリにDRAMを使い分ける。
前提: フリップフロップ
タスク状態遷移
RTOS上のタスクが取り得る状態(実行中/実行可能/待ち等)とその間の遷移。実行中は1つのタスクのみでCPUを占有し、実行可能状態のタスクはスケジューラの選択待ち、待ち状態はイベントやリソースの到着待ちとなる。この遷移モデルを正しく理解することが、デッドロックや優先度逆転など不具合の原因分析の基礎になる。
前提: 優先度逆転、リアルタイムOS(RTOS)
UART(Universal Asynchronous Receiver/Transmitter)
クロック信号を共有せず、送受信の各デバイスが独立したクロックとあらかじめ合意した通信速度(ボーレート)に基づいてデータを非同期にやり取りするシリアル通信方式。配線がTX/RXの2本のみと簡素な一方、双方のボーレート設定が一致していないと通信できない。デバッグ用コンソールや対1機器の単純な通信に広く使われる。
平均故障間隔(MTBF)
修理して使い続けるシステムで、ある故障から次の故障までの平均稼働時間。値が大きいほど故障しにくく信頼性が高い。総稼働時間÷故障回数で算出する。
平均修復時間(MTTR)
故障が発生してから復旧するまでの平均時間。値が小さいほど早く復旧でき、保守性(メンテナンス性)が高い。総修復時間÷故障回数で算出する。稼働率=MTBF÷(MTBF+MTTR) の分母に含まれ、MTBF(平均故障間隔)と対にして信頼性・保守性を評価する。
前提: 稼働率、平均故障間隔(MTBF)
ブートローダ
電源投入・リセット直後に最初に実行される小さなプログラムで、最低限のハードウェア初期化を行った後、フラッシュメモリ等に格納された本体ファームウェアをメモリへロードして実行を開始させる役割を担う。OTA更新の際は新旧ファームウェアの切替や書込み失敗時のロールバックを担うことも多く、機器の信頼性に直結する。
DVFS(動的電圧・周波数制御)
処理負荷に応じてプロセッサの動作クロック周波数と供給電圧を動的に変化させ、必要な性能を確保しつつ消費電力を抑える省電力技術。消費電力は電圧の2乗と周波数に概ね比例するため、負荷が低い場面で周波数・電圧を下げる効果は大きく、バッテリ駆動の組込み機器の電力設計で重要な手法となる。
前提: CPUとクロック周波数
EDF(最早期限優先スケジューリング)
デッドラインが最も近いタスクに動的に最高優先度を与えるスケジューリング方式。固定優先度のレートモノトニックと異なり優先度が実行時に変動する動的優先度方式で、単一プロセッサでは利用率100%までスケジュール可能という点で理論上より高いCPU利用率を達成できるが、実装の複雑さと過負荷時の予測困難性がトレードオフとなる。
セキュアブート
起動時にブートローダやファームウェアのデジタル署名を検証し、正規の(改ざんされていない)ソフトウェアのみを実行させる仕組み。攻撃者が不正なファームウェアを書き込んでも起動を拒否できるため、OTA更新を行うIoT機器において、不正コード実行や乗っ取りを防ぐ組込みセキュリティの基盤機構となる。
前提: ブートローダ
ライトスルー/ライトバック
キャッシュへの書込み方式。ライトスルーはキャッシュと主記憶の両方に同時に書き込むため一貫性は保たれるがバス負荷が高く、ライトバックはキャッシュにのみ書き込み後で主記憶へ反映するため高速だが、反映前に電源断が起きるとデータを失うリスクがある。組込みではリアルタイム性とデータ保全のトレードオフで選定する。

