Z800 CPU の全貌 10ページ
拡張アーキテクチャ
特徴
 Zilog拡張アーキテクチャ(EPA = Extended Processing Architecture)は、Z800CPUのハードウェアとソフトウェアの両面を拡張する極めて柔軟なモジュール方式の手法を提供します。EPAの機能は、
Z800 CPU命令セットを外部デバイスにより拡張可能
最大4つの専用外部プロセッサをCPUと並行して使うことによってシステムのスループットを向上が図れる
Z8070フローティングポイントEPUが使用可能
Z800CPUベースのシステムのモジュール設計が可能
「シングル命令ストリーム」通信を使ってマルチマイクロプロセッサの管理を容易にできる
EPUとZ800MPUの接続には、追加の外部ロジックを全く必要としない
信頼できるソフトウェアによって、怪しいハードウェアのデバッグをサポート
システムが成長したり、新たな機能を持つEPUが開発されても、新しくEPUを追加することが可能
概要
 Zilog Z-BUS Z8000マイクロプロセッサの処理パワーは、それがもともと持っている機能を、拡張処理アーキテクチャ(EPA)により強化拡張することができます。EPAによってZ800CPUは、メイン命令実行ストリームと並行して特化された機能を実行する最大4つの拡張プロセシングユニット(EPU)を扱うことができるのです。
 これらEPUは直接Z-BUSと接続され、EPU向けの命令(テンプレート)が来ないかCPU命令の流れを常に監視しています。テンプレートが見つかると、Z800CPUが生成した制御シグナルを使い、その機能を実行することによって、Z-BUS上のデータやステータス情報を取得して、適切なEPUがそれに応答します。
 CPUはEPUに指示したりオペランドやデータを渡す必要があります。EPUはその内部レジスタ内のテンプレートのand/orのデータを供給されたデータを使うことで、そのテンプレートを認識し、実行します。
 EPU命令には3つのクラスがあります。
メインメモリとEPUレジスタ間のデータ転送
CPUレジスタとEPUステータスレジスタ間のデータ転送
EPU内部操作
 また、6つのアドレッシングモードが、EPUレジスタおよびCPU、メインメモリ間の転送に利用できます。
直接アドレス
レジスタ間接
インデックス付き
スタックポインタ相対
相対
ベースインデックス
 Z800MPUには、EPAがハードウェア実装されているときの機能だけでなく、EPU機能のソフトウェアシミュレーションを実現するための拡張命令トラップメカニズムもあります。Z800MPUトラップコントロールレジスタのEPU実装ビットは、EPUが実装されているか否かを示します。もしEPUが実装されていなければ、拡張命令が検出されたときにCPUがトラップし、「トラップハンドラ」ルーチンがEPU機能をエミュレートすることが可能です。このようにして、EPAトラップルーチンがEPUの実装されていないシステムをサポートするわけです。
 EPAおよびCPU命令の実行の様子を下図に示します。CPUは命令をフェッチし、それがEPU命令であるかどうかを判断することから処理を始めます。もしその命令がEPU命令であるなら、トラップコントロールレジスタのEPUイネーブルビットの状態がテストされます。もしEPUイネーブルビットがリセットされている(E = 0)なら、CPUはトラップを発生させ、EPU命令は「EPU命令トラップルーチン」によってシミュレートされます。しかし、EPUイネーブルビットがセットされている(E = 1)と、システム内にEPUが存在することが明示され、4バイトのEPUテンプレートがメモリからフェッチされます。EPUテンプレートのフェッチはステータスラインST0-ST3でわかります。EPUはその間ずっとZ-BUSと自身のテンプレートのステータスラインを監視します。EPUテンプレートをフェッチ後、必要であれば、CPUはCPUとメモリまたはCPUとEPUの間のデータ転送を実行します。これらのトランザクションの状態はステータスラインでわかるようになっています。もしテンプレートとデータが現れたときにEPUがフリー状態だと、EPUテンプレートが実行されます。もしEPUがまだ前の命令を処理している最中なら、実行が完了するまで、CPUがそれ以上命令を実行しないように、PAUSEライン(Z8216のみ)をアクティブ化します。テンプレートの実行が完了した後、EPUはPAUSEラインをイナクティブ化し、CPU命令の実行が継続されます。
EPAとZ8216CPUの命令実行フロー
↑図をクリックすると拡大されます。
page 10