9 <Appendix>組込みマルチコア用語集

組込みマルチコアコンソーシアム マルチコア適用委員会(WG3)が作成した「マルチコア適用ガイド(2017年度作成分)」の解説資料の中から、70程度の専門用語を選定し、用語集としてまとめた。

用語の説明のほか、用語の英語表記、略語を開いたときのフルスペル、同義語、対義語を記載した。

  • 本章の対象読者
    • 知識・経験:レベル1(入門者)マルチコアの知識なし
    • プロセス:要件定義、設計、実装、テスト
    • ドメイン:組込み全般
    • キーワード:用語集、技術用語、テクニカルターム、略語、同義語、対義語
  • 本章を読んで得られるもの
    • マルチコア技術の専門用語の意味が分かる。
    • 車載電子システムの専門用語の意味が分かる。

9.1 ア行

  • アクセラレータ(accelerator)
    • システムの中核をなす標準的なCPU(central processing unit)に対して、負荷の大きい特定の処理を大幅に高速化(accelerate)して、CPUの負荷を肩代わりする周辺プロセッサや周辺ハードウェアを「アクセラレータ」と呼ぶ。例えば、GPU(graphics processing unit)やDSP(digital signal processing unit)、IPU(image processing unit)、NPU(neural network processing unit)、ビデオCODEC(coder decoder)、暗号回路、ユーザ定義のカスタム回路などがある。アクセレータは、SoC(system on a chip)としてCPUコアと1チップ化される場合もあるし、サーバシステムなどに組み込む拡張ボードの形をとる場合もある。
  • アサーション(assertion)
    • →「検査式」を参照。
  •  エミュレータ(emulator)
    • 広義の意味では、オリジナルのシステムの動作を模倣(emulate)する装置やソフトウェアを指す。例えば、ある命令セットのプロセッサの動作を別の命令セットのプロセッサを使って実現するため、命令列の変換処理(バイナリ変換)などを行うソフトウェアを「エミュレータ」と呼ぶ。組込みシステム開発では、ソフトウェアのデバッグやシステムの評価に利用するフルICE(in-circuit emulator)やJTAG(Joint Test Action Group) ICEを「エミュレータ」と呼ぶことが多い。こうしたデバッグ用アダプタ(ハードウェア)は、デバッグ回路を内蔵するプロセッサやその代替となる評価用チップを利用して、プロセッサ内部の状態を監視したり、プログラムの実行を制御したり、プロセッサの実行履歴を取得したりする機能を備えている。
  • オートマトン(automaton)
    • コンピュータの計算機構を抽象的に表したモデル。複数の内部状態を持ち、現在の状態と入力の組み合わせに基づいて次の状態へ移行する。状態遷移図や状態遷移表に対応する。状態数が有限のものを「有限オートマトン」と呼び、さらに現在との状態と入力によって次の状態が一意的に決まるものを「決定性有限オートマトン(DFM:deterministic finite automaton)」、一意的に決まらないものを「非決定性有限オートマトン(NFM:nondeterministic finite automaton)」と呼ぶ。また、ソフトウェアの挙動を検証する際には、これらを拡張したモデルを利用することが多い。このような拡張モデルの例として、SPIN(Simple Promela Interpreter)が採用としているBüchi オートマトンや、UPPAALが採用しているNTA(Networks of Timed Automata)などがある。

9.2 カ行

  • 機能安全(functional safety)
    • 人や環境に危害を加えるリスクそのものを取り除くことを「本質安全」と呼ぶ。これに対して、システムに機能的な工夫を施し、許容できるレベルの安全を確保することを「機能安全」と呼ぶ。機器やシステムの開発において、設計段階でリスクを100%取り除くことが望ましいが、運用時に想定外の事態が生じたり、対策に膨大なコストがかかったりするなど、現実にはリスクを完全に排除することが難しい。そこで、合理的なリスク分析に基づき、設計段階では排除しきれない残留リスクへの対策となる機能を、別途付加しておく。機械製造やプラント、交通輸送、医療、防衛などの分野で、機能安全への対応が求められる。機能安全の国際標準規格として、電気電子システム全般を対象とする「IEC 61508」をベースに、「ISO 26262」(自動車)や「IEC 61513」(原子力)、「JAR/FAR25 1309」(航空機)などの分野別の規格が制定されている。
  • 機能分散(functional distribution)
    • マルチプロセッサやマルチコアによる分散コンピューティングの一形態。ソフトウェアを複数のまとまった機能に分割し、それぞれの機能を個々のプロセッサ(またはCPUコア)に割り当てて、同時並行に実行する。ソフトウェアの分割は人手で行うことが多く、開発者が考えやすい単位で機能を分割するのが一般的。
    • 対義語: 負荷分散
  • 形式手法(formal method)
    • 数学的に厳密に意味づけられた言語を用いて情報システム(ソフトウェア、ハードウェア)の要求や設計などを記述する手法。例えば、情報システムがユーザの要求を満たしているか否かを、論理的に推論するための仕組みを提供する。証明したい仕様や論理的な性質は、「形式仕様記述言語」と呼ぶ言語で記述する。鉄道や航空宇宙、電力など、高い信頼性と安全性、セキュリティが求められる分野で利用されている。
  • 形式仕様記述(formal specification description)
    • プログラムが満たすべき仕様や論理的な性質を記述するための言語。形式手法で用いられ、システムの状態とその変化、事前・事後条件、並行動作、データ構造などを表現する。Z、VDM、B、CSP、Event-B、Alloyなど、形式手法ごとにさまざまな言語が提案されている。
  • 決定性(deterministic)
    • 情報システムにおいて、現在の状態と入力により、次の状態が一意的に決まる性質を「決定性」と呼ぶ。「決定性有限オートマトン」や「決定性(決定的)アルゴリズム」といった使い方をする。決定性のあるアルゴリズムを実行すると、常に同じ手順で計算を行い、常に同じ結果を出力する。
    • 対義語: 非決定性
  • 検査式(assertion)
    • プログラムが満たすべき論理的な性質(成立条件)を表現した数式。モデル検査(形式手法)では、検査式の表現として時相論理式(temporal logic)を利用することが多い。
    • 同義語: アサーション
  • 故障注入(fault injection)
    • システムに故障が発生したとき、実際に安全な状態へ移行するかどうかをテストする手法。故障が想定される箇所の信号やメモリ、レジスタの値を強制的に変化させて擬似的に故障状態を再現し、システムの挙動を観測する。制御用ボードなどの実機(ハードウェア)上で実際の信号の値を変化させる方法や、制御プログラムを改変してメモリやレジスタの値を書き換える方法、ICEなどのデバッガを使ってメモリやレジスタの値を変更する方法、シミュレーション(仮想プラットフォーム)を用いてシステムの故障状態を模擬する方法など、さまざまな手法がある。自動車向け機能安全規格のISO 26262では、故障注入テストの適用が推奨されている。
  • コンテキスト(context)
    • 本来の意味は、文章などの前後の脈絡(文脈)。情報システムでは、割り込みなどが原因でCPUがタスクの処理を中断したとき、タスク実行の状態にかかわるCPUの情報(データ)をいったんレジスタやメモリに保存する。このときに保存する情報を「コンテキスト」と呼んでいる。マルチタスクシステムにおいて、処理するタスクを切り替えるためにCPUの状態情報を保存したり復元したりする動作を「コンテキストスイッチ」と呼ぶ。

9.3 サ行

  • 自動並列化コンパイラ(automatic parallelizing compiler)
    • →「並列化コンパイラ」を参照。
  • 状態遷移(state transition)
    • 状態機械(state machine)において、ある状態から別の状態へ移行すること。状態機械は「状態」と「状態間の遷移」から構成される。状態機械の動作は、状態遷移図や状態遷移表として表現される。
  • 診断カバレッジ(diagnostic coverage)
    • →「ダイアグカバレッジ」を参照。
  • スレッドセーフ(thread safe)
    • 複数のスレッドが並行に動作するマルチスレッドシステムでは、複数のスレッドが同時に、同一のコードを実行する状態が起こりうる。このような状況でも問題が発生しない性質を「スレッドセーフ」と呼ぶ。スレッドセーフを維持するためには、例えばリエントラント(再入可能)な関数を使用したり、共有データへのアクセスを管理する排他制御を行ったりする必要がある。
  • 静的解析(static analysis)
    • ソフトウェアやシステムの解析手法のうち、実際のプログラムの実行を伴わないものを「静的解析」と呼ぶ。テストやデバッグなどに利用する。例えば、プログラムの構造(制御フロー、データフロー)を解析して、バッファオーバフローやポインタの範囲外参照を指摘する手法や、ソースコード記述を解析して、プログラムが指定されたコーディング規約に従っているかどうかを判定したりする手法などが、静的解析に分類される。
    • 対義語: 動的解析
  • 静的テスト(static test)
    • 静的解析の手法を利用するテスト技術。原理的にはプログラムのすべてのパスを解析できるので、プログラムの実行を伴う動的テストと比べて、テストのカバレッジ(網羅率)を引き上げやすい。また、テストケースを用意する必要もない。ただし、プログラムの規模が大きくなると解析に時間がかかることが多く、頻発する誤検知(実用上問題がなくても不具合と判定してしまう状態)に悩まされることも少なくない。
    • 対義語: 動的テスト
  • 設計パターン(design pattern)
    • 開発者がよく出会う問題に適切に対処するための指針をまとめた定石集(カタログ)。設計パターンを利用することにより、再利用性の高いソフトウェアを効率よく作成できるようになる。例えば、インスタンスの生成方法やクラスの抽出方法、実装とインターフェースの切り分け方などがまとめられている。システム全体の構造を決める際に役立つパターン(アーキテクチャパターン)や、失敗に陥るパターン(アンチパターン)などを含めて「設計パターン」と呼ぶ場合もある。
    • 同義語: デザインパターン

9.4 タ行

  • ダイアグカバレッジ(diagnostic coverage)
    • 故障には、システムの状態を安全側へ導く安全側故障と、危険側へ導く危険故障がある。危険側故障のうち、故障検出機能によってその発生を検知できる(危険に対処できる)ものの割合を「ダイアグカバレッジ」と呼ぶ。機能安全の考え方では、危険側故障が発生しても、それを故障検出機能によって検知できるのであれば、すなわちダイアグカバレッジが高ければ、「安全度が高い」とする。
    • 同義語: 診断カバレッジ
  • タスク(task)
    • 組込みシステムでは広くOS(operating system)が普及しており、OS上から見たときの処理の実行単位を「タスク」と呼ぶことが多い(第2部 <動作の見える化>を参照)。その一方で、OSを使用しないベアメタル方式の組込みシステムもあり、単に処理する仕事の実行単位を「タスク」としている場合もある(第1部 <並列化フロー>を参照)。
  • デザインパターン(design pattern)
    • →「設計パターン」を参照。
  • データ競合(data race)
    • 複数の異なるスレッドがメモリ上の同一のアドレスに対して同時アクセス(ただし、少なくとも一つは書き込み)を行うと、実行結果は予期できないものになる。このような状態を「データ競合」と呼ぶ。これを回避するには、スレッドの実行順序関係が明確になるように排他制御を行う必要がある。
  • デッドロック(deadlock)
    • 二つのタスクがそれぞれ別々のリソースをロックしている時に、同時に相手がロックしているリソースの解放を待つ状態に陥り、その状態から抜けられなくなる現象。マルチコアシステムや、シングルコアのマルチタスクシステムにおいて発生する可能性がある。デッドロックは、非常にレアな条件が成立したときにしか発生しないことが多く、短時間のテストでは現象を再現することが難しい。
  • デバッグインターフェース(debag interface)
    • プロセッサが備えるデバッグ専用のシリアル通信ポート。プロセッサ内部のデバッグ機能の制御に用いる。標準的な仕様として、4~5ピンのJTAG(Joint European Test Action Group)や2ピンのSWD(Serial Wire Debug)がある。JTAG ICEなどのデバッグ用アダプタは、デバッグインターフェースに接続して使用する。
  • デバッグモニタ(debag monitor)
    • プロセッサ上で動作するデバッグ用のプログラム。例えばハードウェアを初期化したり、レジスタの値を読み出したり、ブレークポイントを設定したりする。外部の開発用PC(その上で動作するデバッグアプリケーション)との間でコマンドやデータを受け渡しながら動作する。
  • 動的解析(dynamic analysis)
    • ソフトウェアやシステムの解析手法のうち、実際のプログラムの実行を伴うものを「動的解析」と呼ぶ。テストやデバッグに利用する。例えば、プログラムモジュールに入力パターンを与えて実行し、出力結果の期待値照合を行う手法や、プログラムの中にチェックコードを埋め込むなどして観測点を設け、プログラムを実行しながらデバッグに有用な情報を取得(トレース)する手法などが、動的解析に分類される。。
    • 対義語: 静的解析
  • 動的テスト(dynamic test)
    • 動的解析の手法を利用するテスト技術。動的解析によるテストの良し悪しは、用意するテストケースに依存する。起こりうるすべての状態を再現するテストケースを用意することは、現実には難しく、静的テストのような網羅的なテストは行えない。そのため、検証の進捗を計測する「カバレッジ(網羅率)解析」と組み合わせて適用することがある。
    • 対義語: 静的テスト
  • トレース(trace)
    • システムの内部状態を監視・記録すること。ソフトウェア開発では、主にデバッグに役立つ各種の実行履歴(ログ)を取得する作業を指す。例えばプロセッサは、プログラムの実行中に命令の実行履歴やレジスタ値の推移をデータパケットにして外部へ転送する機能を備えている。OSには、システムの動作中にプロセスやタスクの実行履歴を記録する機能がある。こうした機能を利用してシステムを評価したり、プログラムをデバッグしたりする作業を「トレース解析」と呼んでいる。

9.5 ハ行

  • ハイパーバイザ(hypervisor)
    • コンピュータを仮想化し、種類の異なる複数のOSを一つのシステムの中で並列稼動させるためのソフトウェア。ハードウェアの動作を模擬する「仮想マシン(VM:virtual machine)」を利用して実現する。ハイパーバイザには、CPU上で直接動作し、その上で複数のOSが稼動するタイプ(いわゆるハイパーバイザ型。XenやVMware ESX、Hyper-V、KVMなど)と、ある特定のOSの上のアプリケーションソフトウェアとして動作し、その上で別のOSが稼動するタイプ(ホスト型。VMware Server やVirtual PC、Microsoft Virtual Server、Parallels Desktop、QEMUなど)の2種類がある。ハイパーバイザは、サーバやクラウドコンピューティングの基盤技術として発展した。組込みOSベンダの多くは、汎用OS(LinuxやWindows)とリアルタイムOSを同時に動かせる組込みシステム向けのハイパーバイザを提供している。
  • 非決定性(nondeterministic)
    • 情報システムにおいて、現在の状態と入力により、次の状態が一意的に決まらない性質を「非決定性」と呼ぶ。「非決定性有限オートマトン」や「非決定性(非決定的)アルゴリズム」といった使い方をする。例えば入力以外の条件によって次の状態が変わったり、タイミングに依存する処理を行ったりした場合、決定性の条件がくずれて非決定性となる。
    • 対義語: 決定性
  • 負荷分散(load distribution、load balancing)
    • マルチプロセッサやマルチコアによる分散コンピューティングの一形態。特定のプロセッサ(またはCPUコア)に負荷が偏らないように、OSや負荷分散ソフトウェアが特定のルールに基づいてソフトウェアのタスクを複数のプロセッサ(またはCPUコア)へ振り分け、全体としてバランスよく並行処理を進める。同種のプロセッサを組み合わせるホモジニアス構成のコンピュータ上で実現することが多い。
    • 対義語: 機能分散
  • プロセス代数(process algebra)
    • 並行システムの動作や構造を形式的に記述する手法の一つ。並行に動作するプロセスの間の相互作用や通信、同期といった関係を数学的な代数式で表現する。式(プロセス記述)を操作する代数的規則も定義されている。例えば並列プログラムが仕様どおりに作成されているかどうかの検証や、二つのプロセスが等価かどうかの分析などに用いる。プロセス代数体系の例として、CSP(Communicating Sequential Process)やACP(Algebra of Communication Process)、CCS(Calculus of Communicating Systems)などがある。
  • プロファイリング(profiling)
    • システムの性能を解析するため、プログラムを実行しながらその挙動や特性を調べる作業。動的解析手法の一つ。プログラムの実行中に関数呼び出しなどのイベントとその処理時間を記録する。記録したデータに統計的な処理を施し、実行により多くの時間がかかっている関数(性能向上のボトルネックとなっている箇所)を見つけ出す。このような部分を修正・最適化すれば、システム全体の性能を改善できる。プロファイリングの作業を支援するツールを「プロファイラ」と呼ぶ。
  • 並行処理(concurrent processing)
    • 「並行処理」とは、複数の処理が(少なくとも論理的に)同時に走っていて、処理やイベントが起きるタイミングが任意のものを指す。
  • 並列化コンパイラ(parallelizing compiler)
    • 単一のプロセッサで動作する「逐次プログラム」から並列化が可能な箇所を抽出し、並列コンピュータやマルチコアプロセッサで実行可能な「並列プログラム」に変換するソフトウェアツール。並列化コンパイラは、まずプログラム内部のデータ依存や制御依存の関係を解析して並列処理構造(データフローグラフや制御フローグラフなど)を抽出し、等価な処理を行う並列表現に置き換える。次に、分割された並列実行可能な箇所をターゲットとなる複数のプロセッサ(または複数のCPUコア)へ割り当て、処理の実行順序を決定する。続いて、データ転送のオーバーヘッドやメモリの使用効率を考慮して、メモリ上のデータの分散配置を決定する。最後に、各プロセッサ(各CPUコア)で動作するC言語プログラム、または並列化指示の記述を含むスレッド化されたソースコードを生成する。オスカーテクノロジーやドイツSilexica社などが並列化コンパイラ製品を開発・販売している。
    • 同義語: 自動並列化コンパイラ
  • 並列処理(parallel processing)
    • 「並列処理」とは、実際に処理が同時に起こっていることを指す。目的は、主に計算速度の向上。従って、1コアのCPU(シングルコアプロセッサ)を一つだけ使うシステムの場合、「並列処理」という表現は意味をなさない。
  • 並列プログラム(parallel program)
    • 並列計算によって処理性能を向上できるプログラム。プログラム内部の並列性(データ並列化やタスク並列化、パイプライン並列化)を利用して、処理性能を引き上げる。並列コンピュータやマルチコアプロセッサの上で動作する。並列プログラムを開発する環境として、人手で並列性を記述するOpenMPやIntel TBB(Threading Building Blocks)、POSIX thread(pthread)などのスレッドライブラリがある。並列化コンパイラを利用すると、単一プロセッサ向けの通常のプログラム(逐次プログラム)を並列プログラムへ自動変換できる。
    • 対義語: 逐次プログラム
  • ヘテロジニアス(heterogeneous)
    • 「異質の」、「異種の」を意味する言葉。「ヘテロジニアスマルチコア」と言った場合、異なるハードウェアアーキテクチャ、異なる命令セットアーキテクチャを備える複数のプロセッサ、およびアクセラレータのコア(大規模回路ブロック)を集積したSoC(system on a chip)タイプのLSIを指す。例えば、汎用的なCPUコアに加えて、GPU(graphics processing unit)コアやNPU(neural network processing unit)コア、FPGA(field programmable gate array)のプログラマブル論理のコアなどを混載したSoCが考えられる。
    • 対義語: ホモジニアス
  • ボディ系(body system)
    • 自動車の車体(ボディ)まわりの電子システム。ドアやパワーウィンドウ、ミラー、ライト、エアコン、キーレスエントリーなどの制御を行う。自動車の駆動に直接かかわる「パワートレイン系」や人命にかかわる「安全系」と比べると、安全性や信頼性の要求レベルは相対的に低い。
  • ホモジニアス(homogeneous)
    • 「同質の」、「同種の」を意味する言葉。「ホモジニアスマルチコア」と言った場合、同じハードウェアアーキテクチャ、かつ同じ命令セットアーキテクチャを採るプロセッサコアを複数内蔵したプロセッサLSIを指す。SMP(symmetrical multi-processing)構成のコンピュータを実現する場合、ホモジニアスマルチコアのプロセッサLSIを使うことが多い。
    • 対義語: ヘテロジニアス

9.6 マ行

  • マルチコアOS(multicore operating system)
    • マルチコアプロセッサ上での動作に対応したOS。SMP構成に対応したものやAMP構成に対応したもの、その両方に対応したものなどがある。SMP OSは、負荷分散アルゴリズムに従って、複数のコアへ動的にタスクを振り分ける機能を備えている。AMP OSが備える機能は開発元によって異なるが、多くのAMP OSはコア間の同期・通信処理をコーディングしやすいように、セマフォやイベントフラグ、データキューなどのAPI(application programming interface)を用意している。T-Engineフォーラムが開発したAMP OS「AMP T-Kernel」の場合、ファイル管理機能もマルチコア向けに拡張されている。TOPPERSプロジェクトの「TOPPERS/FMP」の場合、リアルタイム性の確保のため、基本はタスクをコアに固定するASP OSだが、システムの稼働中にタスクをあるコアから別のコアへ移動させるAPIを用意しており、このAPIを使用することにより、SMP OSと同等の機能を実現している。
  • マルチタスク(multitasking)
    • 人やコンピュータが、複数の作業(タスク)を切り替えながら同時並行に実行すること。コンピュータにマルチタスクを導入する場合、ごく短い時間(例えば数ミリ~数十ミリ秒)ごとに実行タスクを切り替えることで、I/O処理や通信処理に伴うCPUの待ち時間を削減できることが多い。ユーザからは複数のアプリケーションが同時に実行されているように見える。タスク切り替えの管理は、マルチタスクに対応したOSが行う。
  • メトリクス(metrics)
    • 「尺度」、「評価基準」を意味する言葉。「ソフトウェアメトリクス」と言った場合、ソフトウェアの品質を定量的に測定する手法やその際の評価基準を指す。例えば、コード行数(規模)やモジュール間の呼び出し関係(結合度)、ifやfor、whichといった分岐が発生する構文の数(複雑度)、同一または類似コードの量(コードクローン)、テスト項目数、バグの数、レビュー時の指摘件数などを指標として品質管理を行う。これらの数値は、ツールや開発環境を使って自動的に収集することが多い。
  • メニーコア(many core)
    • 複数のプロセッサコアを1チップに集積したLSI(マルチコアプロセッサ)のうち、コア数が非常に多いものを指す。「何個以上がメニーコア」という明確な基準はないが、10コア以上、あるいは16コア以上のチップをメニーコアと呼ぶことが多い。GPU(graphics processing unit)やNPU(neural network processing unit)、データフロープロセッサなど、演算ユニットの数が多いアーキテクチャを採るプロセッサ(アクセラレータ)をメニーコアに含める場合もある。コア数が増えると、分散処理やコア間通信の管理が複雑になる。そのため、コア数の増加にスケーラブルに対応できるメニーコア向けのOSが開発されており、組込みシステム向けにはイーソルが製品化している。
  • モデル検査(model checking)
    • 形式手法の一つ。ツールを使って、すべての状態と実行パスを網羅的に検証する。ユーザは、専用言語を使って検証対象となる仕様書やソースコードからモデルを作成し、併せてそのモデルが満たすべき条件式(検証式)を用意する。モデルが条件式を満たしているかどうかをツールが自動的に判定し、条件を満たしていない場合は反例(不具合が生じる実行パスの例)を出力する。モデル検査には、モデルの規模が大きくなると計算時間が非常に長くなるという課題がある。その場合は、モデルの分割や絞り込み、抽象化といった対策を施す必要がある。モデル検査ツールには、SMV(Symboric Model Verifier)やSPIN(Simple Promela Interpreter)など、多くの種類がある。
  • モデルベース開発(model based development)
    • グラフィカル形式やテキスト形式のモデリング表記を用いて、開発の各工程の作業(要求分析、設計、検証・テストなど)を行う方法論。モデリングは、実現すべき機能性(開/閉ループの制御、監視)の概念の獲得、および現実の物理的システム(例えば、自動車の場合は車両環境)の挙動のシミュレーションなどに使用する。モデリング表記には、形式的(例えば、基礎となる数学的定義による表記)と、準形式的(例えば、不完全に定義された意味論を有する構造化表記)がある。モデルベース開発パラダイムの一つの特徴は、機能モデルが、その望まれている機能を仕様化するだけでなく、設計情報も提供する点にある。そして最後には、コード生成手段による実装の基盤も提供する。すなわち、そのような機能モデルは、設計および実装の側面だけでなく、仕様の側面も表している。モデリング表記法として、UML(Unified Modeling Language)やSysML(Systems Modeling Language)、米国MathWorks社の「MATLAB/Simulink」などがある。
    • 同義語: MBD
  • モデルベース並列化(model based parallelization)
    • 米国MathWorks社のシステム設計ツール「Simulink」で作成したブロック線図のモデルからマルチコア向けの並列プログラムを生成する技術。やみくもにソフトウェアの並列性を探索するのではなく、モデルベース開発手法にのっとって作成されたブロック線図の構造を生かしながら並列化する箇所を決定する。ソースコードではなく抽象度の高いモデルの段階で並列化を検討することから、開発コストや開発期間の削減を期待できる。モデルベース並列化は、名古屋大学大学院 枝廣研究室が研究・開発しており、イーソルがその成果を利用した商用ツールを開発・販売している。
    • 同義語: MBP
  • モデル予測制御(model predictive control)
    • 動的な計算モデルを使って制御対象の未来の応答を予測し、その予測に基づいて最適制御する手法。性能や安全などの制約を反映しやすく、多入力の複雑なシステムにも適用できる、という特徴がある。ただし制御対象のふるまいを随時計算する必要があるので、PID(proportional integral differential)制御などと比べて計算量は多くなる。プラント制御やエンジン制御などに使われている。

9.7 ラ行,ワ行

  • リエントラント(re-entrant)
    • あるプログラム(関数やサブルーチン、メソッド)の実行中に割り込み処理などが発生し、その実行が完了しないうちに、再びそのプログラムが呼び出されることがある。このように同一のプログラムが多重に起動し、並列実行が生じても、問題が発生しない性質を「リエントラント(再入可能)」と呼ぶ。
  • ロックステップ(lock-step)
    • 「足並みをそろえた行進」を意味する言葉。コンピュータシステムの場合、二つ、またはそれ以上のCPUに同一のプログラムを実行させ、それらの計算結果を比較してシステムの異常を検出する耐故障(フォールトトレラント)設計の技術を指す。マルチコアプロセッサ内部の二つのCPUコアにこの技術を適用した場合、「デュアルコアロックステップ」と呼ぶ。航空機や自動車など、主に信頼性や機能安全に対する要求の厳しいシステムに利用されている。
  • ワイヤハーネス(wire harness)
    • 複数の電線(ワイヤ)を束ねたケーブルやコネクタなどの配線部品を指す。機器や部品への電源供給、機器間の通信などに用いる。自動車や航空機では、ワイヤハーネスの重量が燃費や航続距離に影響を与える。そのため、高速なシリアル通信(車載ネットワーク)を導入したり、複数のECU(electronic control unit)を一つに集約したりするなどして、配線量の削減を図っている。

9.8 A-Z

  • エーダス
    • ADAS(advanced driver assistance systems)
    • 日本語は「先進運転支援システム」。自動車などの輸送システムにおいて、ドライバの運転操作の負担を軽減したり、事故を回避したりする機能全般を指す。例えば、ヘッドライト自動点灯、緊急時自動ブレーキ制御、歩行者・障害物検知、交通標識認識、車線逸脱警告、車線維持制御、先行車速度追随型のクルーズ制御、自動駐車支援などがある。可視光カメラや赤外線カメラ、ミリ波レーダ、LiDAR(レーザーレーダ)、光センサ、加速度/ジャイロセンサ、GPSなどの各種センサを利用する。ADASをベースに、自動車の周囲地図作成や走行ルート計画、行動方針決定などの機能を強化し、運転操作におけるドライバの関与を減らしていくと、自動運転の技術になる。
  • エーエムピー
    • AMP(asymmetrical multi-processing)
    • 日本語は「非対称型マルチプロセシング」。複数のCPUを使用した並列分散処理における、タスクの処理方式の一つ。各CPUに対して、実行するタスクを事前に人手で(静的に)割り付ける方式。システムの実行中にOSが動的にタスクを振り分けるSMP(symmetrical multi-processing)とは異なり、タスク分割(機能分散)の方針を開発者自身が考えなければならない。リアルタイム制約や信頼性の要件が厳しい機器の場合、開発者がシステム全体のふるまいを見通しやすく、動作保証しやすいAMP方式が好んで採用されている。ただし、CPUの数やタスクの数が多くなるにつれて、人手による適切なタスクの割り付けが難しくなる。
    • 対義語: SMP
  • エーシル
    • ASIL(Automotive Safety Integrity Level)
    • 「SIL(Safety Integrity Level)」は、電気電子システム全般を対象とする機能安全規格であるIEC 61508が規定する、システムが備えるべき安全性能の尺度。日本語では「安全性要求レベル」という。これに対してASILは、自動車向けの機能安全規格であるISO 26262が規定する、車載電子システム(automotive)の安全性要求レベル。ASILでは、安全性要求の水準をA~Dの4段階で示す(Dがもっとも厳しく、Aがもっともゆるい)。障害が発生したときの被害の大きさ(severity)、障害の発生頻度(exposure)、障害に対する対処のしやすさ(controllability)をもとに算出する。
  • ビーエムピー
    • BMP(bound multi-processing)
    • 複数のCPUを使用した並列分散処理における、タスクの処理方式の一つ。SMP(symmetrical multi-processing)システムの中に、AMP(asymmetrical multi-processing)的なタスク割り付けの制約を取り込んでいる。一部のタスクは事前に人手で特定のCPUへ割り付け、それ以外のタスクはOSがCPUへ自動的に振り分ける。例えば、単一CPU上での実行を前提に開発された既存資産のタスクは同一のCPU上で実行し、それ以外のタスクは、CPUの負荷に応じてOSが自動振り分けを行う、といった使い方が考えられる。
  • ビーエスダブリュ
    • BSW(basic software)