【a接点】《HW》

リレーにおいて、コイルに電流を流したときに閉じる接点のこと。NO(Normally Open)接点とも呼ばれる。
参照: b接点

【Actuator】《HW》

アクチュエータとは、機構の制御を行うための「動き」を生みだす部品を指す用語です。モータはアクチュエータの一種です。
アクチュエータの駆動源としては電力、空気圧(あるいは負圧)、油圧が一般的ですが、最近は圧電素子や形状記憶合金によるものもあります。
電力で動作するモータについては別項を参照していただくとして、電力で動作するアクチュエータの代表的なものとしてここでは電磁ソレノイドを簡単に解説します。電磁ソレノイドは供給電力をオン/オフすることで2点間の往復運動を実現するデバイスで、モータに比べ応答速度が速いことが特徴です。単純な進退機構の実装に使うほかに、ガスなどのバルブ制御の駆動部にもよく使用されます。
アクチュエータによる動作は回転もしくは直進がほとんどですが、ソフトウェアから見て最終的に制御されるべきモノの特性をよく理解し、駆動時間または駆動パラメータ,駆動後のディレイ,駆動後の位置確認の有無などに最適な実装を行う必要があります。場合によっては対象の状況に応じてこれらのパラメータをダイナミックに変える必要もあります。

【ADC】《HW》

ADCはアナログ電圧をデジタル値に変換するデバイスです。 入力のアナログ電圧と出力のデジタル値とは、リニアな関係を持ちます。入力の最小値/最大値と出力の最大値はデバイスによりさまざまですが、例えば「分解能12bit、入力範囲0〜10V」のADCであれば、入力が0Vのときに出力が値0x0、入力が10Vのときに出力が全12bitが「1」の値、すなわち0xFFFを出力します。
先に「リニアな関係」と書きましたが、デジタル(離散値)への変換であるため正確には直線状ではなく階段状です。つまり、1つの段差の途中にある入力値は下の段か上の段のどちらかの出力値とされます。言い換えるとADCは変換に関して1/2LSBの誤差を持つということになります。この誤差を量子化誤差といいます。
入力のアナログ電圧をどれだけ忠実に変換できるかは、分解能、変換の直線性に依存しますし、(時間軸を含む)アナログ波形の変換という用途ではサンプリング・レート(ADCが1秒あたりに変換を行う回数)にも依存します。したがって組込みシステムでアナログ信号を取り込み処理するような用途では、ADCデバイス自体の分解能・直線性とともに、対象とする事象を十分正確にとらえるためにサンプリング周波数がどうあるべきか、を考える必要があります(当然、要求されるサンプリング周波数によっては、ADCデバイスの選定を再考することがあるかもしれません)。
入力のアナログ電圧をデジタル値に変換するには若干の時間がかかります。そのため変換開始時の電圧を保持する「サンプル・ホールド回路」をADCの入力部に組み合わせて使用することが良く行われます。
参照: DAC

【AEPROM(Alcoholic Erasable PROM)】《SW全般》

ニューラルネットを用いたPROMの一種。組込み開発者にしばしば組込まれている。
推論にたけるが、部分的な記録の劣化(度忘れ)や時間による記録の劣化がたまにあるのが欠点と言える。
このPROMを消去する有効な方法はアルコール漬けにすることであるが、まれに消去がうまくいかず、ゴミデータ(妄想や記憶違い)を生み出すことがあるので注意が必要である。
ちなみにアルコールは上質なエタノール混合液が良い。質の悪いものを使用すると宿酔という消去の後遺症が残ることが多く、パフォーマンスが極端に劣化する。

【Algorithm】《SW全般》 → アルゴリズムとデータ構造

【Analog】《HW》 → アナログとデジタル

【Architecture】《SW設計》 → アーキテクチャ設計

【Assembler】《SW全般》 → アセンブラの得意な部分

【b接点】《HW》

リレーにおいて、コイルに電流を流したときに開く接点のこと。NC(Normally Close)接点とも呼ばれる。
参照: a接点

【BGA(Ball Grid Array)】《HW》

LSIの実装体積と質量を小さくする手法のひとつで、CSPのうち、端子間ピッチが比較的広いパッケージを指します。端子が行列(Grid)状に配置されるパッケージが登場した初期の頃は0.8mmピッチが主流でした。狭い面積により多くの端子を配置する要請から端子間隔の狭ピッチ化が進む中で、0.5mm以下のパッケージをCSP,それよりも広い場合をBGAと称する事が一般的になっています。

【Block Diagram】《SW設計》 → ブロックダイアグラム

【Bottom up】《SW設計》 → トップダウンとボトムアップの混合

【Brain Storming】《SW全般》 → ブレーンストーミング

【BSP(Board Support Package)】《SW全般》

OS(オペレーティングシステム)のメーカやCPUリファレンスボードのメーカが提供するソフトウェアパッケージで、しばしばBSPと省略されます。
BSPは通常、CPUボード上で特定のOSを実行させるために必要なソフトウェアライブラリであり、ハードウェアの初期化処理、メモリマッピング処理、ブートローダ、シリアル回線やタイマーなどのデバイスを動作させるためのコンフィギュレーションコードとデバイスドライバなどから構成されます。
BSPには通常、ソースファイル、バイナリファイルのどちらか、または両方が含まれています。組み込みソフトウェアの開発者は、サンプルのソースコードを利用して、開発対象のCPUボードに合わせたスタートアップ・ルーチンを作成したり、デバイスドライバのテンプレートを利用して新たなデバイスのドライバを作成することができます。

【C0】《テスト》 → カバレッジ

【C1】《テスト》 → カバレッジ

【C2】《テスト》 → カバレッジ

【Concept Modeling】《SW設計》

執筆募集中!

【Cache】《プロセッサ》 → キャッシュ

【Chattering】《SW全般》 → チャタリング

【COC(Chip on Chip)】《HW》

LSIの集積度を上げる手法のひとつで、複数の半導体チップを1つのパッケージ内部で積み重ねて実装し、複合機能を実現するものです。チップ間はワイヤ(ワイヤボンディング)によりまたは直接(フリップチップ接続)接続します。
年々高密度実装化が要求される、携帯電話に代表されるモバイル向け携帯機器では、電気的特性の向上がこれまで以上に求められています。電気的特性を向上させるためには、半導体チップと半導体チップをつなぐ端子容量を小さくし、配線長を短くすることが重要で、このような理由でCOCの技術が採用されています。代表的な半導体チップの組み合わせは、マイコンとメモリです。
MCP(Multi Chip Package) の呼称がより一般的です。

【Compiler】《ツール》 → コンパイラのくせやバグ

【Coverage】《テスト》 → カバレッジ

【CPU】《プロセッサ》 → シングル・プロセッサ/マルチ・プロセッサ

【CSP(Chip Scale Package)】《HW》

LSIの実装体積と質量を小さくする手法のひとつで、ダイ(半導体チップ)の面積とLSI部品としての完成品がほぼ同じ面積を持つパッケージを指します。
チップ周辺に端子を配置するとパッケージサイズが大きくなるため、CSP ではチップ裏面に端子を行列(Grid)状に配置します。

【Cut Point】《HW》 → カットポイント/ソルダーポイント

【DAC】《HW》

DACはデジタル値をアナログ電圧あるいはアナログ電流に変換するデバイスです。
入力のデジタル値と出力のアナログ値とは、リニアな関係を持ちます。入力の最大値と出力の最小値/最大値はDACデバイスによって異なりますが、例えば「分解能12bit、出力範囲-10V〜10V」のDACであれば、入力が0x0のときに出力が-10V、入力が0xFFFのときに出力が+10Vとなります。
入力のデジタル値をアナログ電圧に変換するには若干の時間がかかります。これを安定時間と言います。変換開始を指示するトリガーの時間間隔は安定時間の間隔よりも長くなければなりません。
参照: ADC

【Data Flow】

 → データフロー分析/テスト《SW設計》
 → データフロー設計《SW設計》
 → データフローからプログラム構造への変換《SW設計》

【Debug】

 → バグ《SW全般》
 → デバッガ《ツール》
 → デバッグ容易コーディング《SW全般》
 → バグの分析/切り分け《SW全般》

【Design Pattern】《SW全般》

デザインパターンとは、問題領域に依存しない、よく使われる設計の形のことを言います。優秀な設計が培った設計の知恵をデザインパターンとしてまとめ、初心者を含めた様々な経歴を持つ人が、それを利用することにより、早く良い設計を行うことが出来ます。また、デザインパターンが流通することにより、設計の概要をパターンを通して知ることが出来るという、設計者同士のコミュニケーションの向上にもつながります。
一般的に、デザインパターンと言えば、オブジェクト指向設計における、GoFの23個のデザインパターンのことを指します。GoFのデザインパターン『オブジェクト指向における再利用のためにデザインパターン』の著者の一人であるEric Gammaは、デザインパターンのことを『モジュール性、柔軟性、拡張性、そして再利用性を改善するための設計構造の抽象的な記述』と定義しています。GoFのデザインパターンには、生成・構造・振る舞いに関するパターンが23個記載されており、オブジェクト指向設計開発者の間では、パターン名はそのまま設計用語として普通に利用されています。
(注)GoFはGang of Fourの略。Erich Gamma, Richard Helm, Ralph Johnson,John Vlissidesの4氏を指す。

【Design Review】《品質》 → デザインレビュー

【Digital】《HW》 → アナログとデジタル

【DFD(Data Flow Diagram)】《SW設計》

DFDはデータフローダイアグラムの略です。
DFDは構造化分析で中心的に用いられる図であり、システムをその構成要素と要素間のデータの流れにより記述します。基本的な構成要素は以下の通りです。

構成要素 記述方法例
データフロー データの名前付きの矢印つきの線で表す
プロセス 円で表す
ファイル 直線で表す
データの源泉と吸収 四角形で表す

基本的な考え方に大きな差はありませんがDFDは提唱者により記述方法等に差があります。上の記述方法例は最も有名なDeMarcoのものです。
構造化分析では1枚のDFDに多くの内容を詰め込むことはせず、階層化されたDFDにするのが一般的です。また上記記述方法の様にプロセスを円で表すことが多い為DFDをバブルチャート、プロセスをバブルと呼ぶこともあります。
DeMarco等のDFDはデータの流れを静的に分析するものであり、コントロールの流れは記述しません。このため組み込みシステムには適用しずらい面がありHarelのアクティビティーチャート(UMLのアクティビティー図とはまったくの別物)の様に組み込みシステム用に拡張されたものも幾つかあります。

【DMA(Direct Memory Access)】《プロセッサ》

直訳の「直接メモリ接近」では、なんの事か判りませんね。
これは、周辺I/Oデバイスと主記憶(メモリ)との間のデータのやり取りをプロセッサを介さず、周辺I/Oデバイスとメモリ間で直接行う方式です。
計算機の発達の動機は「プロセッサをいかに効率よく動かすか」です。その観点でDMA誕生までを観てみます。周辺I/Oデバイスはプロセッサに比べると非常に遅いので、周辺I/Oデバイスの状態を監視すると、周辺I/Oデバイスの準備を待つという、無駄なプロセッサ時間が生じてしまいます。そこで「準備が出来たらプロセッサに知らせる。その間プロセッサは別の仕事をする」という仕組みが考案されました。これが「割込み」です。ところが、周辺I/Oデバイスとデータのやり取りをプロセッサが行うと、結局は「周辺I/Oデバイスが次のデータを準備するまで待つ」と言う処理が発生します。ここでも「割込み」を使うことはできますが、プロセッサの負荷は高くなりますし、また、ディスク装置などの大量のデータをやり取りする装置とのデータ転送においては、プロセッサ負荷が非常に高くなります。そこで、本来プロセッサの仕事であった「データ転送」を周辺I/Oデバイスに行わせようとするのが、DMA方式です。
このようにして、プロセッサを効率的に使用できるようにしたことから、「割込み」と「DMA」は計算機の「2大発明」と言われることもあります。
DMA方式を実現するには、DMAコントローラ(DMAC(ディー・マックと読む場合がある)と呼ばれるコントローラが必要です。このDMAコントローラは、プロセッサとは独立に、周辺I/Oデバイスと主記憶(メモリ)とのデータ転送を直接行います。
DMA方式のデータ転送は、以下の順序で行います。

  1. プロセッサがDMAコントローラの設定を行う。(操作の種別、転送元転送先のアドレス、転送サイズなどを設定する)
  2. 該当する周辺I/Oデバイスがデータ転送可能になれば、DMAコントローラはバスの調停を行い、データ転送を開始する。バスを占有するのでは無く、適宜バスを解放している。
  3. データ転送が終了すると、DMAコントローラはプロセッサにそれを通知する。通知方法は、割込みを使用することが多い。プロセッサは、DMAコントローラの状態などを検査し、データ転送時にエラーが発生したか否かを判定する。

このようにして、プロセッサは大量のデータ転送から解放され、データ転送間に他の仕事ができるようになりました。しかし、バスがDMAコントローラに使用されますので、プロセッサが100%の性能で動作できる訳ではありません。このため、DMAコントローラは、バスの占有率を調整できるものもあります。
ソフトウェアとして注意すべきは、「プロセッサの知らないところで、メモリ内容が書き換わっている」ということです。転送先アドレスの設定を間違えると、予期せぬメモリ破壊が発生します。これはプログラムのトレース実行や逆トレースでは発見できません。なぜなら、DMAコントローラのデータ転送にはプロセッサは関与していないからです。この現象はバス動作を監視して予期せぬメモリアクセスが無いかを調査します。
なお、キャッシュを使用している場合は、プロセッサがバスにアクセスする回数が減りますので、DMAコントローラがバスの帯域を殆ど使用でき、かつ、プロセッサの性能も低下しません。
キャッシュ(特にデータキャッシュ)を使用する場合は、DMAコントローラがプロセッサ内のキャッシュを通過することなくメモリを書換えてしまいますの で、キャッシュとメモリの内容が一致しない現象が生じ、メモリを読み出しても、キャッシュに残っているDMAコントローラが書換える前のデータを読み出す可能性があります。このことを、失効データ問題(stale data problem)またはコヒーレンシー問題(coherency problem)と言います。
この問題は、DMAに限らずキャッシュを経由せずメモリを書換えるものが存在する場合に発生します。
この問題を回避するには、以下のいずれかの対応を行います。

後者の方式を、「スヌーピング(Snooping:覗き見)」と言います。
参考文献:パターソン&ヘネシー(David A.Patterson/John h.Hennessy)「コンピュータの構成と設計」 成田光彰訳(日経BP社)

【Document】

 → ドキュメントの書き方《SW全般》
 → ドキュメントの種類《SW全般》

【DP(Dual Port)RAM】《HW》

DPRAMはマルチポートメモリの一種でランダムにアクセスできるポートが2つ用意されたRAMである。複数のCPUが搭載されているシステムで、2つのCPU間でデータの受け渡しのための共用メモリとして作られたものである。これを使用すれば、バスを共用する共用メモリ方式に比べて互いのバスの調停回路等が不要で回路構成が簡単になる。DPRAMには互いのCPUの同期を取ったり排他処理が出来るようにCPUへの割り込み信号、セマフォ等の機能が搭載されたものが多くある。DPRAMは組み込み向けへの用途が多いためメモリセルはSRAMで構成されているものがほとんどのようである。

【DRAM(Dynamic Random Access Memory)】《HW》

DRAMは1ビットの記憶セルがコンデンサ1個とトランジスタ1個で構成されていて、コンデンサに電荷が充電されているか否かで0または1を記憶するようになっています。SRAMに比べて1ビットを記憶するメモリセルの大きさが1/4〜1/6程度に出来るので1つのチップではSRAMより数倍の容量のものが開発されています。SRAMに比べて読み書きの回路が少し複雑ですが容量が大きいのでパソコンの主記憶装置等に大量に使われています。
記憶セルのコンデンサに蓄えられた電荷は時間の経過と共に放電してしまい、何もしなければ書き込まれた内容は数ミリ秒〜数十ミリ秒の間に消えてしまいます。そのためDRAMには一定時間内にコンデンサを再充電する操作が必要で、それをリフレッシュと呼びます。1回のリフレッシュには読み込みや書込み時間と同程度(または若干多め)の時間が必要です。また1回のリフレッシュ操作ではメモリセルの1行だけがリフレッシュされます(メモリセルは行×縦の長方形に並べられていて行と列の番号で特定のメモリセルを指定するようになっています)。全ての行に順次リフレッシュ操作を行いそれを繰り返し行いますので、その繰り返し周期をリフレッシュサイクルと言います。リフレッシュは通常外部回路等で対応しますが、CPU等にその機能が搭載されているものが多いので特別に回路を組むことは余りないようです。
パソコンの高速化に伴い、高速にアクセスできるDRAMが開発されています。FPM(FisrstPage Mode) DRAM、EDO(Extended Data Out) DRAM、SDRAM(SynchronousDRAM)、DDR(Double Data Rate) SDRAM、DRDRAM(Direct Rambus DRAM)等です。それらはパソコン等で使用されているバスの転送方法に適合するような設計がなされていて、連続したメモリ領域がキャッシュメモリ等との間で短時間に集中してデータ転送が出来るように工夫されています。
なお、DRAMの記憶セルコンデンサは容量が非常に小さいため、セルにα線が飛び込んだ場合、その電荷の影響を簡単に受けてしまいます(それによるビット化けを「ソフトエラー」と呼びます)。そのため高信頼性が必要な場合には通常DRAMではなくSRAMが使われます。

【Driver】

 → スタブやドライバ《SW全般》
 → ドライバ/ハンドラ《SW全般》《HW》

【Edge Trigger】《HW》 → 信号検出方式

【Earth】《HW》 → グランド

【EEPROM(Elecrically Erasable Programmable Read Only Memory)】《HW》

電気的消去可能なROMで、実装された状態で読み書きが可能なメモリです。書込みはバイト単位(容量の大きなものではページと呼ばれる連続した領域)で行うことができて、CPUからのライトサイクルやコマンドで書き込みを行った後、書込みが完了するまでに数ミリ秒の時間を待つ必要があります(書き込み中は他の場所にデータを書くことはできません)。尚、消去は書込みの際に自動的に行われるので特に意識する必要はありません。EEPROMに書き込まれる内容は組み込まれる装置の動作に必要なパラメータ等、ユーザが電源を切っても保存しなければならないデータの格納に主として用いられます。書き込み回数に制限があるので(数十万回程度)、書き換えが多い用途には同じアドレスにメーカの指定する制限回数以上書込みをしないようなアルゴリズムが必要です。EEPROMにはシリアルEEPROMと呼ばれる種類があります。シリアルEEPROMにはアドレスバス・データバスといった信号は無く、数本の信号線(クロック、シリアルデータ等)を制御することで読み書きができるようになっています。シリアルEEPROMのメモリ配列をメモリ空間・I/O空間に配置することはできませんが、小型の装置で利用できる8ピン程度のDIPやSOP等のパッケージ製品もあります。

【EPROM(Erasable Programmable Read Only Memory)】《HW》

EPROMは紫外線消去可能なROMでUV-EPROMと書かれることもあります。EPROMには石英ガラスの透明な窓がついていて、ここに紫外線を照射することでメモリの内容を消去することができるようになっています。書込み後はこの窓に遮光ラベルを貼って書いた内容を保護することが必要です。EPROMへの書込みにはROMライタ(ROMプログラマー)と呼ばれる専用ツールがよく使用されます。EPROMには書き込み回数の上限はありますが、実際には紫外線消去の手間が発生するので、その時間的な制約で書き込み制限回数を超えて使用されることはほとんど考えられません。もっとも、消去/再書き込みをするときには普通機械的にソケットから抜き差しするのでその頻度が多いとICのピン磨耗により破損する可能性が大きいと考えられます(ソケットも通常多くても数十回程度の抜き差ししか保証されていませんので注意が必要です)。EPROM部品自体には石英ガラスが必要なのでその分コストアップになり、また実装には通常ソケットが使用されるのでそこにもコストがかかります。しかし、バージョンアップ等のROM交換が現場でできることやEPROM自体が再利用できるメリットがあるので以前はよく使われていました。現在ではフラッシュメモリが代わりに多く使用され需要を伸ばしています。

【Event】《OS》 → イベント

【Event Driven】《SW全般》

Event-driven方式のシステム制御プログラムでは、外部で発生したイベントによりシステムが制御されます。イベントが単なる入力と異なるのは、イベントの発生するタイミングが、イベントに応じるプロセスのコントロール外であるという点です。
一例として、自動車の安全システムのような、迅速なシステム応答が要求されるハードリアルタイム制御を行う場合を考えます。衝突が起こった場合、システムはこれを検知し、運転者の頭部がハンドルにぶつかる前にエアバッグを膨らませる必要があります。このように、複数のイベントに対し、非常に短い限られた時間内に処理を行うために割り込みを利用します。
既知数の割り込みに対し、それぞれに対する処理を提供するために割り込みハンドラを用意します。これらハンドラのアドレスは、割り込みベクタテーブルと呼ばれるメモリ上のテーブルに書き込まれています。特定の割り込みが発生したとき、ハードウエアは、対応する割り込みハンドラに処理を飛ばし、そのハンドラに他のプロセスの起動・終了をまかせます。
この方式では、上述のように、イベントに対し迅速な応答が可能ですが、欠点としては、プログラムが複雑となること、また、バリデーションが難しいということがあげられます。また、用意できる割り込みの数はハードウエアの制限を受けます。複数のイベントをひとつの割り込みハンドラにマップすることも可能ですが、タイミングの問題を考慮しなければならない難しさが残ります。
また、イベントをすべてのサブシステムに配信し、そのイベントに対応するサブシステムが処理を行うブロードキャスト方式のイベントドリブンシステム制御もあります。

【Exception】《SW全般》 → 例外