インサーキット・エミュレータ

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

インサーキット・エミュレータ (In-circuit emulator, ICE) はデジタル機器の開発装置の1つである。CPUとも呼ばれるマイクロプロセッサの機能をエミュレートするハードウェアを主体としており、実際のマイクロプロセッサと同じ機能を実装し、さらにブレーク・ポイントといったプログラムの実行途中で一時停止するといったデバッグ機能を操作するためのソフトウェアと組み合わされた装置である。ソフトウェアデバッガでは実時間での処理が行えないので、デジタル機器類での組み込みシステムBIOSといった入出力動作を確認する必要がある開発環境で使用される。ICEアイス)と呼ばれることが多い。

"In-Circuit Emulator"は、米インテル社の登録商標である[1]

ICEの基本形態と動作[編集]

基本的には、本来のCPUを外したCPUソケットにICEのプローブを接続する形態をとり、外部でCPUの動作を行いながら主要な信号の変化を追うことが可能である。CPUは多様なデジタル機器に実装されるがICEをCPUソケットにつなぐために、最終製品が動作する環境でデバッグが可能となる[2]。さらに指定したメモリアドレスへのアクセスのような特定条件でのブレークやプログラムが暴走した時に強制ブレークをかけるなどの強力なデバッグ機能を持ち、ハードウェアの動作検証用にテストプログラムを実行するなど、ソフトウェア開発だけでなくハードウェア開発においても用いられる。多くがPCと接続されて操作される。

ICEの変遷[編集]

初期のフルICE[編集]

最も初期のICEでは、CPUの内部回路をいくつかに分けて基板上に再現したものが存在した。これが古典的なICEであり、CPU回路が複雑化し動作速度も向上すると、外部でフリップフロップ回路をつないでいたのでは対応できなくなり、初期のフルICEの方式は比較的短命であった[3]

フルICE[編集]

高性能CPU用のフルICE

量産されるCPUチップでも、動作確認用に内部回路の読み出し機能やブレークポイント機能はダイ上に設けられることが多く、僅かなボンディング操作や専用コードの実行によってEVAチップと同様にICE用に使用できるCPUチップが得られた。こういったチップを使って高性能なフルICEを作る事ができた。CPUの動作速度が早くなると、メモリアクセスでのウェイト数の増加程度では収まらなくなり[4]、高性能CPU用のフルICEは現実的ではなくなった[5]

8ビット等のフルICE

8ビットのコントローラ製品などは動作速度も遅いため、配線の引き回しや外部に置いたデバッグ支援回路が作り易い。このため、プローブの交換で幾つもの製品に対応できるICE製品が存在した[6]

EVAチップによるICE[編集]

CPUメーカーでは、評価用チップ (Evaluation chip) と呼ばれる、確実な動作までは保証しないが概ね量産品と似たようには動くレベルの試作品の半導体を、大口顧客である電子機器メーカーへ提供することで、量産出荷前に最終製品の開発を始められるようにすることが多い。

CPUメーカーでもこの評価用チップ上にデバッグ回路を作り込むことで、社内での半導体の検証作業を行うことが多く、こういったチップを顧客へ提供し、多少の外部回路と操作用ソフトウェアを加えることで、ICEに似た動作が行えた。これが「EVAチップ」と呼ばれるものであり、1980年代から2000年までの間は、フルICE製品に代ってこのような、ある種のニッチな需要に対する開発装置が製造されて販売されていた。

古典的なものを含めたフルICEやEVAチップを使用したICEも、ともに開発環境として使用するには最強と言えるが、

  • 高価格である
  • 特定のCPUにしか対応できない
  • 高速化したCPUでは外部に信号線を引き回すことが難しい
  • 組み込みシステムではASICを採用する例が多くなってきており、ICEを使用できない

といった事情により、1980年代中ごろから徐々に、特に高速で高性能なCPU用としてはICE製品そのものが少なくなり、1990年代を通じてEVAチップやそれと同等のチップを用いたICE製品はしだいに少なくなった[7]

JTAG ICE[編集]

デジタル製品では、開発時や製造した製品の動作確認等のために外部ピンに多数のプローブを接続して信号を得ていたが、高密度実装によってピンの間隔が狭まったりBGAのような端子そのものが隠れてしまうようになった。これに対応して、デジタル回路の内部に、要所要所の信号を外部に読み出せるようにした専用端子が設けられるようになり、その仕組みは1990年に「JTAG」という名前で標準化された。

JTAG端子は内部的には数珠つなぎになっているので読み出しに時間がかかったり、回路ブロックそのものが停止すれば読み出せなくなるなど、ロジックアナライザ用やICE用の信号を得る手段としては万全ではないが、フルICEに比べて簡便なプローブで接続できるため、多くの大規模ロジック回路を持つ半導体製品用の開発装置として利用され、JTAGエミュレータやROMエミュレータなどのオンチップ・エミュレータを使用することが多くなってきている。このような開発装置の中には「ICE」と名乗るものもあり、従来型のフルICEとの違いで多少の混乱がある[8]

脚注[編集]

  1. ^ みわよしこ「"ICE"の魅力」みわよしこ、他『組込みソフトウェアエンジニアのためのハードウェア入門』Chapter 19、技術評論社、p242
  2. ^ みわよしこ「"ICE"の魅力」みわよしこ、他『組込みソフトウェアエンジニアのためのハードウェア入門』Chapter 19、技術評論社、p242~248
  3. ^ みわよしこ「"ICE"の魅力」みわよしこ、他『組込みソフトウェアエンジニアのためのハードウェア入門』Chapter 19、技術評論社、p242~243
  4. ^ i80386の40MHz動作ではICEプローブの寄生容量さえも問題となった。
  5. ^ インテル社のIA-32アーキテクチャのCPUはICE機能を内蔵していて、ハードウェア・ブレークポイントの設定やコンテキストへの介入を自ら行う事ができた。内蔵ICEへのアクセスは外部のコンピューターの助けがあった方が望ましいが、主要な動作をソフトウエアで行う"ICD"(インサーキット・デバッガー)と呼ばれる製品もあった。マイクロプロセッサのデバッガの代表であった時代が長かったこともあり、現在でも組み込みシステム向けのデバッガを総称して「ICE」と呼んでいる技術者も少なくない。
  6. ^ みわよしこ「"ICE"の魅力」みわよしこ、他『組込みソフトウェアエンジニアのためのハードウェア入門』Chapter 19、技術評論社、p248
  7. ^ みわよしこ「"ICE"の魅力」みわよしこ、他『組込みソフトウェアエンジニアのためのハードウェア入門』Chapter 19、技術評論社、p243~244
  8. ^ みわよしこ「"ICE"の魅力」みわよしこ、他『組込みソフトウェアエンジニアのためのハードウェア入門』Chapter 19、技術評論社、p247

参考文献[編集]

みわよしこ、他著、『組込みソフトウェアエンジニアのためのハードウェア入門』、技術評論社、2009年11月25日発行、ISBN 978-4-7741-4015-5