(57)【要約】【課題】各種プロトコルを支持する改良型入出力制御システムを提供する。【解決手段】周辺装置を制御し及びそれと通信するオンチップ入出力プロセッサ２は、入出力ピン６を読取り及びセットしタイマをスタートさせ入出力プロセッサコアのための割込みを生成するピンコントローラ、及び、入出力ピン６をサンプリングし入出力ピン６をセットし充分明確な時点で入出力プロセッサコアのための割込みを生成するタイマ、を含み、該ピンコントローラ、該タイマ及び入出力ピン６を制御するための命令を提供する入出力プロセッサコア１２と、該入出力プロセッサコア１２のための命令を保持するオンチップＲＡＭ３と、同じチップ上で該入出力プロセッサ２及び接続されたＣＰＵ１の間で情報を交換するためのレジスタ４と、反対に、コア１２及び入出力ピン６の間に接続され、入信号及び／又は出信号の同期化をするための環境設定可能論理５と、を備える。【選択図】図１
2010033614.tif 000002
【特許請求の範囲】
【請求項１】
周辺装置を制御し及びそれと通信するオンチップ入出力プロセッサであって、
入出力プロセッサコア（１２）と、
物理的入出力ピン（６）を読取り及びセットし、タイマをスタートさせ、並びに該入出力プロセッサコア（１２）のための割込みを生成する少なくとも１つのピンコントローラ（２９）と、
別個のブロックとして構築された少なくとも１つのタイマ（２６）であって、該タイマ（２６）によって規定される時点で、入出力ピン（６）をサンプリングし、入出力ピン（６）をセットし、及び入出力プロセッサコア（１２）のための割込みを生成するように構成された少なくとも１つのタイマ（２６）と、
該入出力プロセッサコア（１２）のための命令を保持するオンチップＲＡＭ（３）と、
該入出力プロセッサ（２）と、同じチップ上に接続されたＣＰＵ（１）と、の間で情報を交換するための少なくとも１つのレジスタ（４）と、
反対に、前記コア（１２）と前記入出力ピン（６）との間に接続され、入信号及び／又は出信号の同期化をするための環境設定可能論理（５）と、
を具備し、前記入出力プロセッサコア（１２）が、前記少なくとも１つのピンコントローラ（２９）、前記少なくとも１つのタイマ（２６）及び入出力ピン（６）を制御するための命令を提供するオンチップ入出力プロセッサ。
【請求項２】
前記環境設定可能論理が、さらに、一つの入出力ピンを選択するピン選択手段（３０）と、選択された入出力ピンのハイ又はロウへの変化を検査するピンレベル比較手段（３１）と、を具備し、該選択された一つの入出力ピンがハイ又はロウへ変化するのに応じて、事象を示す信号（３３）、割込みを示す信号（３２）、又はタイマスタート信号（３４）を生成することを特徴とする、請求項１に記載のオンチップ入出力プロセッサ（図７）。
【請求項３】
前記環境設定可能論理（５）に接続された３２の入出力ピン（６）と、該コア（１２）及びＦＩＦＯ（１１）に接続された２つの８ビットバス（３６）及び２つの１６ビットバス（３７）と、を特徴とする、請求項１又は請求項２のいずれか１項に記載のオンチップ入出力プロセッサ（図２）。
【請求項４】
該バス（３６、３７）と該ＦＩＦＯ（１１）との間の直接転送を許容することにより高速データ転送を可能にする入出力プロセッサアーキテクチャを特徴とする、請求項３に記載のオンチップ入出力プロセッサ（図９）。
【請求項５】
ＲＳ−２３２（１３）、ＩＥＥＥ−１２８４（１４）、ＡＴＡ（１５）及びＳＣＳＩの各プロトコルが支援されていることを特徴とする、請求項１から請求項４までのいずれか１項に記載のオンチップ入出力プロセッサ（図１）。
【請求項６】
該入出力プロセッサ（２）が、一組のピンを選択するための８ビットピンマスクレジスタ（２１）と、８個のタイマからの出力信号と、ＡＮＤゲート（２３）と、事象を示す信号を生成するために選択された一組の信号を記憶する８ビットピンマスク比較レジスタ（２５）と、比較コンポーネント（２４）と、を含み、該８ビットピンマスクレジスタ（２１）からの出力と該８個のタイマからの出力信号とが該ＡＮＤゲート（２３）に接続され、該ＡＮＤゲート（２３）からの出力と該８ビットピンマスク比較レジスタ（２５）からの出力とが該比較コンポーネント（２４）に接続され、該比較コンポーネント（２４）が、該ＡＮＤゲート（２３）からの出力と該８ビットピンマスク比較レジスタ（２５）からの出力との比較に基づいて、事象を示す信号を出力するように構成されている、請求項１から請求項５までのいずれか一項に記載のオンチップ入出力プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オンチップ入出力プロセッサの設計及び実現、より特定的には異なるプロトコルを支援する入出力プロセッサに関する。
【背景技術】
【０００２】
コンピュータの主要な機能には、そのＣＰＵと主メモリが関与する。ＣＰＵは、主メモリから命令及びデータをフェッチし、それらを処理し、結果を主メモリ内に記憶する。コンピュータのその他の重要な機能は、Ｉ／Ｏ操作（入出力操作）にある。これらの操作は、入出力装置又は周辺装置、装置用の制御ユニット、及び入出力操作を実施するためのソフトウェアを含む入出力システムによって実行される。入出力システムの目的は、主メモリ又はＣＰＵと入出力装置との間で情報を転送することにある。
【０００３】
異なる種類の先行技術に基づく入出力システムが現在利用可能であり、これらのシステムは全てがＣＰＵを或る程度利用している。入出力操作がＣＰＵにより完全に制御されている場合、システムは、通常、プログラム入出力システムと呼ばれる。プログラム入出力は、非常にわずかな専用入出力ハードウェアで実現され得る。しかしながら、プログラム入出力システムは、往々にして、単純な入出力操作を行なうのに多大な時間を費すという問題点をもつ。
【０００４】
その他のコンピュータには、ＤＭＡ（直接メモリアクセス）が具備されている。ＤＭＡは、ＤＭＡコントローラといったようないくつかの付加的なハードウェアを必要とする。これらのシステムにおいては、ＤＭＡシステムがＣＰＵの介入なく転送を実施するにもかかわらず、ＣＰＵはなおもブロック転送の開始を担当している。
【０００５】
いくつかの先行技術に基づくシステムにおいては、入出力装置又はそのコントローラには、ＣＰＵからサービス要求又は割込みを実行するための付加的な回路が具備されている。割込み能力は、ＣＰＵを入出力装置ポーリングステータスから解放する。ＤＭＡ要求とは異なり、割込みは、その現行プログラムの状態をセーブして割込み処理プログラムへと「ジャンプする」ことによって、ＣＰＵにプログラムを切換えさせる。割込みが完了した時点で、ＣＰＵは割込まれたプログラムの実行を再開することができる。
【０００６】
入出力操作の完全な制御に向かってのさらなる一歩は、入出力プロセッサを用いることによって得られる。ＤＭＡコントローラと同様に、入出力プロセッサは、主メモリに対し直接アクセスでき、ＣＰＵに割込むことができる。但し入出力プロセッサは、プログラムを直接実行することもできる。これらのいわゆる入出力プログラムはＣＰＵのものとは異なる命令セットを使用することができる。
【０００７】
先行技術の入出力システムでは、ＣＰＵ及びそのメモリは、チャネル又は入出力プロセッサに接続される。各々の入出力プロセッサは、各々ラインプリンタ、レーザープリンタディスク、ＣＤ−ＲＯＭディスクなどといった単数又は複数の同一の又は類似の装置を制御する一定数の周辺装置コントローラを収容することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、異なるプロトコルを支持する改良型入出力制御システムに向けられている。これは、入出力プロセッサを支援するマルチプロトコルを提供することによって達成される。
【０００９】
本発明の目的は、一定数の専用入出力コントローラに置き換わる入出力プロセッサを提供することにある。
【００１０】
さらに、異なるＣＰＵとの互換性ある入出力プロセッサを提供することも本発明の目的である。
【００１１】
本発明のもう１つの目的は、ハードウェアの再設計無く入出力プロトコルを変更する能力をフレキシブル入出力プロセッサに具備することにある。
【００１２】
本発明のさらにもう１つの目的は、異なるプロトコルのための共用ピンを提供する入出力プロセッサを提供することにある。
【００１３】
本発明のさらにもう１つの目的は、新しいプロトコルのための非常に短かい設計時間を可能にする入出力プロセッサを提供することにある。
【００１４】
高クロック周波数で実行する単純な入出力プロセッサを提供することも又、本発明の１つの目的である。
【００１５】
更に、入出力プロセッサからチップ上のピンまで非常にフレキシブルなインタフェース、すなわちピンが特定のプロトコロルに対する決まった専用性をもってはならないインタフェースを提供することも、本発明の１つの目的である。
【課題を解決するための手段】
【００１６】
本発明によれば、周辺装置を制御し及びそれと通信するオンチップ入出力プロセッサにおいて、物理的入出力ピンを読取り及びセットしタイマをスタートさせ入出力プロセッサコアのための割込みを生成する少なくとも１つのピンコントローラ、及び、入出力ピンをサンプリングし入出力ピンをセットし充分明確な時点で入出力プロセッサコアのための割込みを生成する少なくとも１つのタイマ、を含み、前記少なくとも１つのピンコントローラ、前記少なくとも１つのタイマ及び入出力ピンを制御するための命令を提供する入出力プロセッサコアと、該入出力プロセッサコアのための命令を保持するオンチップＲＡＭと、同じチップ上で該入出力プロセッサ及び接続されたＣＰＵの間で情報を交換するための少なくとも１つのレジスタと、反対に、前記コア及び前記入出力ピンの間に接続され、入信号及び／又は出信号の同期化をするための環境設定可能論理と、を特徴とするオンチップ入出力プロセッサ、が提供される。
【００１７】
また、本発明によれば、該入出力プロセッサを使用して周辺装置を制御するための方法において、ＲＳ−２３２信号の受信手順が、ＲＳ−２３２、ＲｘＤ信号をサンプリングするための値及び入出力プロセッサのサイクル数をタイマにロードするステップと、割込みルーチン内で読取り可能な、特別な１ビット幅のレジスタ内にＲｘＤ信号の前記サンプリングされた値を記憶するステップと、入出力プロセッサコントローラを用いてスタートビットをセンスするステップであって、該コントローラが該タイマをスタートさせ割込みを生成するステップと、受信中の該バイトを記憶するための空きレジスタをセットアップするステップと、１つのＲＳ−２３２ビットの長さに等しい値をタイマにロードするステップと、該タイマによって正しい時刻に全てのデータビットをサンプリングするステップと、予め定められた数のデータビットが受信されたか否かを決定するべくカウンタをインクリメントするステップと、全てのデータビットが受信された時点で、ストップビットをサンプリングし、次いで停止するステップと、最後の割込みルーチンにおいて、該ＣＰＵのため該ＦＩＦＯに該受信したバイトを入れるステップと、該タイマ値を再ロードするステップと、受信されるべきもう１つのバイトを指示するもう１つのスタートビットについてセンスするべく該コントローラを開始させるステップと、を具備することを特徴とする方法、が提供される。
【００１８】
更に、本発明によれば、該入出力プロセッサを用いて周辺装置を制御するための方法において、ＩＥＥＥ−１２８４プロトコルにおける互換モードからニブルモードへの折衝が、該データバスに００００００００を置くステップと、ＴＰ  秒間待機するようタイマをロードするステップと、nSelectionをハイに及び nAutoFdをロウにセットするステップと、ＩＥＥＥ−１２８４のための応答署名のためピンPError、  nAck、nFault及びSelectをセンスするステップと、周辺装置が応答しない場合にタイムアウトを計数するべくタイマをスタートさせるステップと、周辺装置が適正に応答した場合、nStrobe 信号をパルス送りするステップと、該タイマがタイムアウトを計数するのを停止させるステップと、周辺装置が要求されたモードを受諾したことを表わすべく、nAckがハイになるのを待機するステップと、を具備することを特徴とする方法、が提供される。
【発明の効果】
【００１９】
かくして、本発明に従ったプロセッサベースの実現の利点は、プロセッサの設計がはるかに再使用可能であり、新しいプロトコルについて短い設計時間を可能にするということにある。
【図面の簡単な説明】
【００２０】
【図１】本発明に従った入出力プロセッサを含むシステム環境の一例の概略的ブロックダイヤグラムである。
【図２】図１中の入出力プロセッサの一実施形態の概略的ブロックダイヤグラムである。
【図３】本発明に従った入出力プロセッサコアの概略的ブロックダイヤグラムである。
【図４】いくつかのプロトコルのために用いられるピンマスク組合せのための１つの配置の概略図である。
【図５】タイマレジスタの概略図である。
【図６】入出力プロセッサタイマの機能図である。
【図７】本発明のコントローラの原理を示している。
【図８】コントローラレジスタを示す。
【図９】入出力プロセッサのデータ転送経路を示している。
【図１０】ＲＳ−２３２のＲｘＤ信号を示す。
【図１１】ＩＥＥＥ−１２８４折衝段階についてのタイミング図である。
【図１２】入出力プロセッサパイプラインステップ（ＩＦ及びＥＸ）の一実施形態である。
【図１３】ＥＸステップ内の異なる段階を示す。
【図１４】ＰＣハンドラ内の適切なＰＣ（プログラムカウンタ）の選択のためのステップを示す。
【図１５】ピントライステート及び値レジスタの概略的ブロックダイヤグラムである。
【発明を実施するための形態】
【００２１】
発明をさらに詳細に説明しかつ本発明の利点及び特長を説明する目的で、以下では添付図面を参照しながら、好ましい実施形態について詳述する。
【００２２】
本発明に従った入出力プロセッサを含むシステム概観の一例が図１に示されている。ＣＰＵ１が本発明に従った入出力プロセッサ２による支援を受けており、これらが合わさって、いかなるハードウェア再設計もなく入出力プロトコルを変更する能力をもつフレキシブルチップを形成している。入出力プログラムコードは、速度を維持するため例えばＲＡＭ３の中に内部的に（オンチップ）記憶されなくてはならない。ＣＰＵ１と入出力プロセッサ２との間で情報を供用するために、レジスタ４が使用される。環境設定可能な論理５が、入信号の同期化を処理し、異なるプロトコル間で入出力ピン６を共用することを可能にする。
【００２３】
図１のシステムには同様に、ＣＰＵの介入無く外部ＲＡＭ８へ又はここからのブロック転送を行なうためのＤＭＡ（直接メモリアクセス）コントローラ７も具備されている。
【００２４】
この実施形態においては、ＣＰＵ１は、キャッシュメモリ９及びバス１０を介して外部ＲＡＭ８に接続されている。一組のＦＩＦＯ１１が、入出力プロセッサ２又はその入出力プロセッサコア１２とＣＰＵ１との間のインタフェースを形成する。
【００２５】
シリコンの性能及びサイズは、様々な入出力プロトコル（例えばＲＳ−２３２、ＳＣＳＩ、Ethernet（登録商標）など）の発達よりも速く増大している。このことは、今や、伝統的にハードカスタムモジュールとして構築されているプロトコルについてさえプロセッサベースの解決法を使用することが可能となるということを示唆している。
【００２６】
本発明に従った入出力プロセッサ２の１つの実施形態は、ＲＳ−２３２プロトコル、ＩＥＥＥ−１２８４プロトコル１４及びＡＴＡプロトコル１５のための支援を提供する。
【００２７】
ＲＳ−２３２は、データ端末装置（ＤＴＥ）とデータ接続装置（ＤＣＥ）との間の電気的直列インタフェースの規格である。ＤＣＥは標準的にはモデムであり、ＤＴＥはＰＣである。ＲＳ−２３２は、同期（Ｘ２５及びＨＤＬＣ）及び非同期直列通信の両方のために使用することができる。
【００２８】
ＲＳ−２３２電気インタフェースは、２５ピン式「ＲＳ−２３２」コネクタから成る。全ての信号が必要とされるわけでなく、したがって、ＰＣ／ＡＴは、ＲＳ−２３２インタフェースとして２５ピンの代りに９ピン式の直列ポートを使用する。
【００２９】
ＲＳ−２３２インタフェースは、付加的な信号が用いられる場合、同期モードで作動可能である。ＳＣＴ、すなわち直列クロック伝送信号は、端末により伝送された各ビットの中心を指示する。ＤＣＥは、この信号の各々の負の側面上のデータをサンプリングする。ＳＣＲ、すなわち直列クロック受信済み信号は、ＤＣＥからの対応するタイミング信号である。
【００３０】
ＲＳ−２３２プロトコル内でデータを転送する最も通常の方法は、非同期モードによるものである。このモードにおいては、各々のバイトにはスタートビットが先行し、ストップビットが後続している。パリティが使用される場合には、最後のデータビットがパリティビットとして使用される。パリティは、偶数又は奇数になるように選ばれることができる。
【００３１】
モデムと端末との間のデータ速度は、特定の値、例えば９６００ｂｐｓに設定されなければならない。これは、パリティが使用されないならば、各バイトは１０びっとからなるため、９６０バイト／秒のデータ転送速度を与えるであろう。パリティが使用されるならば、各々の１０ビットシーケンスが今やわずか７つのデータビットしか含んでいないことから、転送速度は８４０バイト／秒まで減少する。受信器がスタートビットを検出した場合、それは内部計数器（カウンタ）を開始させ、選択された転送速度に応じて、各ビットの中心でデータビットをサンプリングしようとする。サンプリングポイントは、正確に各ビットの中心になくてもよいが、最後のビットにおける合計ドリフトは、１ビット長の１０％を超えてはならない。９６００bps という転送速度では、各ビット長は約１０４μｓである。従ってストップビットのサンプリングは、スタートビットが送られた後８８４±１０μｓで起こるはずである。より高い転送速度はより高い精度を必要とし、１Ｍbps で、最後のサンプルの精度は±１００ｎｓでなくてはならない。１００Ｍhzのクロッキング周波数では、１Ｍbps はサンプリングシステムの合計ドリフト１０サイクル及び１００サイクルのビット長に対応することになる。対応値は、送信器について有効である。最後に送られたビットは、１ビットの長さの１０％以上ドリフトしてはならない。
【００３２】
ＩＥＥＥ−１２８４プロトコルは、端末とプリンタ又はその他の周辺装置との間の接続のために往々にして用いられる非同期双方向並列通信プロトコルである。インタフェースは、５つの異なる通信モードを支援するＩＥＥＥ−１２８４規格に従う。互換モードは、一般に用いられる単方向セントロニクスインタフェースと互換性のある方法でホストから周辺機器への通信を提供する。ニブル及びバイトモードは、周辺機器からホストへの通信を提供し、双方向オペレーションを形成するべく互換モードと組合わせることもできる。ニブルモードでは、データは、ステータスライン上の２つの逐次ニブルとして送られる。ＥＣＰ及びＥＤＰモードは、ホストと周辺機器の間でそれぞれ対称及び非対称の双方向通信を提供する。
【００３３】
１２８４電気インタフェースは、２５ピン式Ｄ−シェルコネクタ、ＩＥＥＥ１２８４−Ａコネクタで構成されている。ＰＣ互換性コネクタは、例えばＩＥＥＥ−１２８４−Ｂコネクタといった古典的な３６ピン式Ｄ−シェルセントロニクスインタフェースとして知られている。ＩＥＥＥ−１２８４−Ｃコネクタはより高密度の３６ピンコネクタである。図示していないが、１９の異なるインタフェースステータス／データ信号が存在する。これらの信号のうちのいくつかは、以下の説明においてその規格名で言及されている。
【００３４】
ＩＥＥＥ−１２８４プロトコルは、双方向データをホストと周辺ユニットの間で転送できるようにする。各々の転送モードは、複数の状態で構成されている。データがホストから周辺ユニットへ転送された時点で、インタフェースは順方向段階にあると言われる。データがもう１方の方向で転送されるとき、インタフェースは逆方向段階にあると言われる。モードを変更しなくてはならない場合、インタフェースはその折衝段階にある。
【００３５】
インタフェースは、データ転送が開始されるのを待って順方向アイドル及び逆方向アイドル段階の両方にある可能性がある。ホストは、８つのデータラインを駆動し、nStrobe をロウ(low) にしてパルス送りする。周辺装置は、ビジー(busy)をハイ(high)にセットすることにより応答する。次のバイトのために使用可能状態となった時点で、周辺装置は、nAckロウをパルス送りし、次に、ビジーをロウにセットする。１０Ｍｂ／秒という転送速度は、１００nsのデータ転送サイクル時間に対応する。１００ＭHzのクロッキング周波数で、これは、各々のデータ転送について１０サイクルを意味する。
【００３６】
ＡＴＡ、アドヴァンステクノロジーアタッチメントは、ＩＤＥつまり集積ディスクエレクトロニクスドインタフェースの公式名である。ＡＴＡは当初、ＩＢＭのＡＴコンピュータのためのハードディスクコントローラとして使用されたが、まもなくその他のメーカーもＩＢＭに追従し、この規格を自社製品に使用し始めた。最初のＡＴＡ規格は、１９９４年に規定され、ＡＮＳＩ  Ｘ３．Ｔ９．２規格として知られている。これが、ハードディスクドライブと共に使用されるべき１６ビットのインタフェース規格を規定した。この規格は、各ケーブル上で２つのハードディスクを支援する。この規格は、プログラム入出力（ＰＩＯ）又は直接メモリアクセス（ＤＭＡ）を介して、２つの異なるデータ転送モードを有する。その後、ＡＴＡ−２、ＡＴＡ−３及びＡＴＡ−４規格が規定された。公式ＡＴＡ規格には、FastＡＴＡ、Ｕltra−ＡＴＡ、ＡＴＡＰＩ、ＩＤＥ及びＥＩＤＥといった複数の通称が続いている。
【００３７】
ＥＩＤＥインタフェースは、正式のＡＴＡ規格ではないが、当初のＡＴＡ規格に対する１組の拡張を規定する。ＥＩＤＥの最大データ転送は１３．３Ｍｂ／秒である。最も新しいＡＴＡ規格は、現在広く用いられるＵltra−ＤＭＡデータ転送プロトコル及びＡＴＡＰＩ（ＡＴＡパケットインタフェース）ＣＤ−ＲＯＭインタフェースを内含するＡＴＡ−４規格である。
【００３８】
ＡＴＡ−３電気インタフェースは、４０ピン式コネクタと付加的な４ピン式直流電力コネクタから成る。この規格は、３１のインタフェースステータス／データ信号を規定する。
【００３９】
ＡＴＡＤＭＡ転送にはつねに、ハードディスクドライブの８ビット特殊レジスタ内のＰＩＯ書込みのシーケンスが先行している。これは、次に続くＤＭＡ転送をセットアップするために行なわれる。ドライブは、ＤＭＡ転送作動可能状態となった時点で、ＤＭＡＲＱ信号を表明する。
【００４０】
ホストは、ＤＭＡＣＫ及びＤＭＡ読取りのためのＤＩＯＲ又はＤＭＡ書込みのためのＤＩＯＷを表明することにより答える。データは、ＤＩＯＲ／ＤＩＯＷの各々の下降エッジ上でラッチされ、明確な時間的間隔内で有効となるべきである。ＤＭＡ転送は、最後の転送中にホストがＤＩＯＲ／ＤＩＯＷを否定する前にＤＭＡＲＱを否定することによって周辺装置により終了される。ＡＴＡサイクルタイムは、ＤＩＯＲ／ＤＩＯＷの２つの下降エッジの間の時間として規定される。ＡＴＡ−３モード２は、１２０nsのサイクル時間を支援する。Ｕltra−ＡＴＡプロトコルは、ドライブが転送を制御できるようになっているという点で、標準的ＡＴＡＤＭＡ転送とは異なっている。これは、インタフェースに対し、HDMARDY Host DNA Ready ; HSTROBE Host Strobe；DDM-ARDY Device DMA Ready ; DSTROBE Device Strobe という４つの制御信号を付加することによって行なわれる。
【００４１】
従来のＡＴＡにおいては、ホストはデータストローブ信号送り（ＤＩＯＲ／ＤＩＯＷ）を制御する。Ｕltra−ＡＴＡでは、ハードディスクドライブが、ＤＭＡ読取り可能バースト中にデータストローブ（ＤＳＴＲＯＢＥ）を制御する一方で、ホストはＤＭＡ書込みバースト中にデータストローブ（ＨＳＴＲＯＢＥ）を制御する。こうしてより高い転送速度が可能となる。データは、ストローブ信号の上昇エッジと下降エッジの両方でラッチされ、こうして従来のＡＴＡＤＭＡ転送に比べ、データ転送速度は倍増する。
【００４２】
Ｕltra−ＡＴＡにおける最小サイクル時間は、５５ns（モード２）に特定される。１００ＭHzのシステムでは、これは、５．５クロックサイクルに対応することになる。
【００４３】
本発明に従った入出力プロセッサは、あらゆる汎用入出力プロトコルに再プログラミング可能でなくてはならない。ここで記述されるプロトコルは、単なる例にすぎない。ＲＳ−２３２の設計最終目標は、１Ｍbit/秒の独立した４つのチャネルである。各チャネルは１つの送信器と１つの受信器から成るため、これには８つの独立したプロセスが必要となる。信号のタイミングは、より高い移送速度ではきわめて正確でなくてはならない。特定長のパルスを作り出す方法及び特定の時間に信号をサンプリングする方法がなくてはならない。さらに、直列から並列に及び並列から直列にデータを変換するための何らかの種類のＵＡＲＴ（万能非同期受信送信機）回路がなくてはならない。
【００４４】
ＩＥＥＥ−１２８４プロトコルは、８ビットのバスを使用し、ここでは、１０Ｍｂ／秒の転送速度に達するべくバスアーキテクチャが使用される。通信は双方向式であり、従って、データバスも同様に双方向でなくてはならない。異なるモード及び多重モード変更が存在するため、主システム（ＣＰＵ）と入出力プロセッサ間の或る種のコマンドが必要となる。
【００４５】
ＡＴＡプロトコルは６０ns前後のサイクル時間を有し、入出力システムの高いクロッキング周波数はＡＴＡサポートの実現を容易にすることになる。１６ビットの双方向データラインの使用には、１６ビットと入出力バスが必要となる。システム全体の性能を増大させるには、ＰＩＯ転送をスピードアップするための自動アドレス増分といったような付加的な機能が好適となるだろう。ＳＣＳＩプロトコルのようなその他のプロトコルにおいては、いくつかのデータ転送は、きわめてタイムクリティカルである。データが周辺ユニットから同期モードで転送されるとき、データが有効でありラッチされなくてはならないというストローブが信号送りされている。データは短時間しか有効ではなく、従って入出力プロセッサは、どんなプロセスが並行して実行されているかにかかわらず、データをラッチするため直ちに正しい状態に入らなくてはならない。ＳＣＳＩは、異なる段階のまわりで構築され、インタフェースは往々にして２つ以上の信号の組合せを聞きとる。これは、何らかの種類のバスアーキテクチャにより解決されるが、異なる組合せの信号を検査するか又は待機する設計を許容することの方がさらに良いと思われる。
【００４６】
以下の記述においては、アドレスサイズ、バス幅、方法中のステップ数などといった数多くの特定的詳細が、本発明をさらに徹底的に記述する目的で提供されている。当業者であれば、本発明が、これらの特定的な詳細無く実施できるものであることは明らかであろう。本発明を不明瞭にしないように、いくつかの周知の特長については記述しない。
【００４７】
図２は、図１の入出力プロセッサ及びその入出力プロセッサコア１２の一実施形態のアーキテクチャの概略的ブロックダイアグラムを示す。
【００４８】
コア１２には、ＦＩＦＯ１１を処理するのに用いられる４つのＦＩＦＯコントローラ１６が具備されている。ＦＩＦＯコントローラ１６は、ＦＩＦＯステータスレジスタを更新する。これらのコントローラは同様にデータブロックを読取り書込み、ここで１ブロックは８、１６、２４又は３２ビットであってよい。読取るべきブロックが一定の数より多く存在するか又は一定数を書き込むのに充分な余地があるか否かを検査できるようにするために、これには２つのレジスタも含まれている。これらのレジスタのうちの１つは、空きブロックの数と比較すべき値を記憶するのに使用される。これは連続的に行なわれ、結果は、ＦＩＦＯステータスレジスタgt freeビット（空きより大きい値）の中に表示される。もう１つのレジスタは、読取りに利用可能なブロックの数と比較すべき値を記憶するのに用いられる。この比較からの結果は、lt avail ビット（利用可能より小さい値）の中に表示される。これらの機能に対する命令は表１に示されている。
【００４９】
【表１】
2010033614.tif 000003
【００５０】
入出力プロセッサコア１２は、１６ビットのＲＩＳＣ構造である。コア１２は、以下で記述する２ステップを伴うパイプラインプロセッサとして構築される。パイプラインステップの数は、１つの命令を終了させるためのクロック速度とクロックサイクル数との間の妥協である。
【００５１】
図３は、本発明に従った入出力プロセッサコアの概略的ブロックダイヤグラムである。ＰＣハンドラ１７（ＰＣ＝プログラム計数器）が、全ての割込み及び事象を管理するのに用いられる。これは又、分岐命令をも取り扱う。割込み及び事象ルーチンのための全てのアドレスは、ＰＣハンドラ１７の中に記憶される。これらのアドレスは、ＬＩＲ（割込みレジスタをロード）及びＬＥＲ（事象レジスタをロード）命令によってセットされる。入出力プロセッサコア１２内の全てのアドレスは、幅１１ビットである。これは、２ｋのオンチップ命令メモリを許容する。これは、少なくとも、記述されたプロトコル１３、１４及び１５を実現するのに充分である。
【００５２】
条件付き分岐を可能にするため、入出力プロセッサコア１２は２つのフラグ：すなわち通常のゼロフラグ（Ｚ−フラグ）と拡張フラグ（Ｘ−フラグ）を有する。Ｚフラグは、結果がゼロに等しい場合、ＡＬＵ１８（論理演算装置）によってセットされる。Ｘフラグは、ＡＬＵシフト命令によってセットされるが、汎用入出力ピンをセンスしたとき及びタイマバッファが読取られたときにもセットされる。表２は、５つの分岐命令を説明している。パイプラインに起因して、全ての分岐命令が１つの遅延スロットを有することに留意すべきである。この遅延スロット（分岐命令の後の命令）は、つねに実施され、（可能であれば）使用されるべきである。
【００５３】
【表２】
2010033614.tif 000004
【００５４】
ＰＣハンドラ１７は同様に、以下のような３つの命令をさらに有している。
１．割込みルーチンの終りで使用されるＲＴＩ（割込みから復帰）命令。これはＰＣを復帰アドレスまで復元させる；これは又、Ｚ及びＸフラグをも復元させる。
２．ユーザーが復帰アドレスを変更できるようにする。何かいけないことが発生したことを割込みが表示した場合に有用である、ＣＲＡ（復帰アドレス変更）。
３．事象又は割込みが発生するまでプロセッサを「休止させる」ＷＴＥ（事象を待つ）命令。
【００５５】
入出力プロセッサコア内のレジスタバンク１９には、１０個の一般的な１６ビット幅のレジスタが収納されている。数多くのプロトコルが８ビット（１バイト）しか使用しないことから、１つの１６ビットレジスタを２つの８ビットレジスタとして使用できるように、レジスタを分割することができる。これは、上位８ビットと下位８ビットをスワップするＳＷＰ（SWaP) 命令を用いてＡＬＵ１８内で行なわれる。このとき、全てのＡＬＵ命令はバイト（下部８ビット）又はワード（全ての１６ビット）のいずれかで行なうことができる。レジスタバンク１９は同様に、ＡＬＵ１８内へのデータも処理する。ＡＬＵ１８内へのデータはレジスタバンク１９からのものであるか又は以下のソースのうちの１つからのものであってよい：
・命令コード、即値データ、ＬＲＩ（レジスタに Immediateをロードする）；
・ＦＩＦＯデータ、Ｆ２Ｒ（ＦＩＦＯからレジスタへ）及びＲ２Ｆ（レジスタからＦＩＦＯへ）；
・ＦＩＦＯ Status、各々のＦＩＦＯ コントローラは、書込み（ＳＦＳ、ＦＩＦＯステータスをセット）及び読取り（ＣＦＳ、ＦＩＦＯステータスを検査）の両方が可能な１６ビット幅のステータスレジスタを有する；
・バスデータ、Ｂ２Ｒ（バスからレジスタへ）及びＲ２Ｂ（レジスタからバスへ）；
・コマンドレジスタ２０、ＣＰＵに向かうレジスタ。ＣＣＲ（検査コマンドレジスタ）での読取り及びＳＣＲ（セットコマンドレジスタ）での書込み；及び
・ピンレジスタ、同時に複数のピンを検査／センスするのに用いられる１４本のピンを伴うレジスタ。
【００５６】
コマンドレジスタ２０（１６ビット）は、ＣＰＵ１と入出力プロセッサ２との間で及びその逆でコマンドを交換するのに用いられる。このレジスタは、実際には２つのレジスタ、すなわちＣＰＵが書込みを行なうレジスタと入出力プロセッサ２が書込みを行なうことのできるレジスタとである。ＣＰＵコマンドレジスタが変更された時点（例えばＣＰＵが１つのコマンドを与えた時点）で、入出力プロセッサ２に対し割込みが生成される。コマンドの１例としては、ＲＳ−２３２チャネルがセットアップされる時のボーレート(baudrate)がある。
【００５７】
ＡＬＵ１８（論理演算装置）は、最も一般的なＡＬＵ命令を有する。上述の通り、レジスタバンク１９の前後で、ＡＬＵ１８はバイト（８ビット）とワード（１６ビット）の両方について演算できる。結果がゼロに等しい場合Ｚフラグがセットされる。表３に全てのＡＬＵ演算を見ることができる。
【００５８】
【表３】
2010033614.tif 000005
【００５９】
入出力プロセッサアーキテクチャは、１６の割込みと４つの事象のまわりで構築される。割込み及び事象を生成する方法はいくつか存在する。表４を参照すること。
【００６０】
【表４】
2010033614.tif 000006
【００６１】
全ての割込み及び事象は、独自のプログラミング可能な命令アドレス例えばサブルーチンアドレスを有する。割込み又は事象のキューイングは全くないことから、信号送りユニットは、肯定応答を受けとるまで信号送りを続けなくてはならない。往々にして実施されるルーチンは非常に短かい（４〜５個の命令）ものであることから、信号のキューイングが不可欠であってはならない。その代り、割込み又は事象の中から選択を行なうのに優先性が用いられる。割込み０は最高の優先性をもち、割込み１５は最低の優先性をもつ。事象は、全ての割込みに比べ低いレベルで作用し、低い優先性を有する。
【００６２】
割込みが発生すると、フラグ及び復帰アドレスが記憶され、実行は対応する割込みアドレスで続行する。割込みルーチン内では、望まれる場合、復帰アドレスを変更することが可能である。これは、誤りが発生し、打切り及び再開が必要である場合に有用である。
【００６３】
１つの事象が発生した場合、実行は対応する事象アドレスで続行する。事象は、復帰アドレスをもたずフラグを記憶しない。事象は、ＷＴＥ（事象待機）命令を用いて、プロセッサが待機モードになるまで活動化されない。
【００６４】
事象は、非クリティカル事象によってロックアウトされてはならない非常に高い優先性をもつ割込みと合わせて使用されるものと仮定される。比較的重要性の低い信号送りは、重要な割込みが直ちに処理され得るようにする事象ハンドラによって処理されるべきである。その好例は、データが有効でありラッチインされ得ることを表わすべく要求信号をハイに周辺ユニットが駆動するプロトコルである。これが非常に高速のプロトコル（すなわちタイムクリティカルなプロトコル）である場合には、入出力プロセッサは直ちに適切な割込みを入力し、データバスを読みとらなくてはならない。
【００６５】
割込みルーチンアドレスは、１６個の１１ビット割込みレジスタ内に記憶される。これらは、ＬＩＲ（割込みレジスタをロード）命令によりロードされる。割込みソース及び優先順は表５に示されている。割込み１３は特別な割込みであり、これは命令コードＩＮＴによって活性化される。この割込みの使用は、例えば、入出力プロセッサが割込み中の割込みを許さないという事実を利用したい場合などが考えられる。かくして、非常にタイムクリティカルな演算を行なわなくてはならない場合、ＩＮＴ命令を用いて割込みルーチンへと進みそこで作業を行なうことが可能である。
【００６６】
【表５】
2010033614.tif 000007
【００６７】
４つの１１ビットの事象レジスタの中に４つの事象アドレスが記憶されている。これらは、ＬＥＲ（事象レジスタをロード）命令によりロードされる。４つの事象は６つのコントローラ、７つのタイマ又は２つのピンマスクからＬＥＳ（事象セレクトをロード）命令により選択できる。割込みの場合と同様、最高の優先性をもつのは event ０である。
【００６８】
図４に示されている通り、入出力プロセッサ２は２つの８ビットピンマスクレジスタ２１を有し、これらのレジスタは、タイマのピンセレクトレジスタ２２と共に用いられる。マスクレジスタ２１は、比較コンポーネント２４を用いて２つの８ビットピンマスク比較レジスタ２５と比較されるピンの組合せをＡＮＤゲーム２３を用いて選択するために用いられる。この解決法は、複数の信号の組合せを待機し、次に事象を生成することを可能にする。この特長は、３つの基本的プロトコル１３、１４及び１５では必要とされないが、その他のプロトコル（すなわちＳＣＳＩ）では、きわめて有用である。
【００６９】
入出力プロセッサのアーキテクチャは、図２に示されている８つの特殊な１５ビットタイマ２６を収納している。タイマ２６の値は、図５に示されている１６ビットのレジスタ２７（タイマレジスタ）の中に記憶され、ここで１６番目のビットは、タイマ２６が活動状態か不活動状態かを表示するために使用される。タイマは、停止させられるまで連続的に計数し、各ラウンド毎に１つの割込み又は事象を生成する。計数中にタイマのレジスタ値を変更することが許されており、次のラウンドで、新しい値はタイマ内にロードされることになる。タイマはコントローラにより又は命令コードから開始させることができる。
【００７０】
第２のレジスタ、つまり８ビット幅のタイマ拡張レジスタ２８は、タイマの特殊な機能のために用いられる。このレジスタを用いると、計数されたラップ毎に異なる機能を行なうことが可能である。このレジスタ中の msbは、事象（ msb＝１）又は割込み（ msb＝０）が生成される予定か否かを選択するために使用される。各タイマについて４つのモードが存在する。表６を参照のこと。異なるモードはタイマ拡張レジスタ２８内で選択される。タイマの機能図は図６に示されている。
【００７１】
【表６】
2010033614.tif 000008
【００７２】
タイマ及びコントローラの両方の例について以下で記述する。
【００７３】
入出力プロセッサアーキテクチャは、同様に、図２に示されている６つの専門ピンコントローラ２９を含んでいる。コントローラがピンセレクタ内の３２本のうちの１つのピンをハイ又はロウについて連続的にセンスしている。選択されたピンが、待機回路３１で検査して、ハイ又はロウになった場合、コントローラ２９は、割込み３２及び／又は事象３３を生成する。コントローラ２９は、同様に入出力プロセッサタイマ３４を開始させることができる。コントローラは、プログラミングされた状態が達成された時点で停止する。図７は、コントローラの原理を示す。
【００７４】
コントローラの挙動は、その１３ビットコントーラレジスタ３５の中でセットされる。表７には異なるモードが記述されている。
【００７５】
【表７】
2010033614.tif 000009
【００７６】
環境設定可能論理は、入信号の同期化を取り扱い、異なるプロトコル間でピンを共用することを可能にする。論理は、ＲＩＳＣコアと物理ピンとの間のインタフェースとして作用する。しかし、この環境設定可能論理をどのように設計すべきなのか？  第１のアプローチは、接続を可能なかぎりフレキシブルにすることであろう。このことはすなわち、各々のピンを汎用入出力ピンとして規定できることを意味している。ＡＴＡデータピンへの書込み操作といったようなバス操作における速度を増大させるため、或る種のバスを規定しなければならない。１つの理想的な解決法は、任意のピンが１つのバスにいかなる特殊な順序でもなく属するように構成する能力をもつことであろう。残念なことに、これには、非現実的なほどに大きいレジスタ及びマルチプレクサを構築することが必要とされる。１２８の入出力ピンで１つのチップ上に４つの１６ビットの入出力バスを規定するためには、最高１５００のメモリ素子（例えばフリップフロップ）と大型マルチプレクサが必要となる。
【００７７】
より現実的な解決法は、並行していくつかのピンからのｒ／ｗ（読取り書込み）を可能にする一定数の予め規定されたバスを有することにあると考えられる。これらのバスは、予め規定されたピンに接続されることになる。バスの他に、ハンドシェーキング及び／又は単一データラインのために用いられるベく作動可能な汎用入出力ピンが一定数存在する。論理は、バス全体又は単一の入出力ピンを解除することができ、その結果トライステートモードがもたらされ、入力が可能となる。
【００７８】
入出力プロセッサ２は、３２本の汎用入出力ピン、２つの８ビットバス３６及び２つの１６ビットバス３７を有する。全てのピン及びバスは、命令ＴＲＰ（ピンをトライステートする）及びＴＲＢ（バスをトライステートする）で（入力を可能にするべく）トライステートにすることができる。出力用にピン又はバスを構成するためには、命令ＮＴＰ（ピンをトライステートしない）及びＮＴＢ（バスをトライステートしない）が使用される。
【００７９】
バス３６、３７とＦＩＦＯ１１との間での高速データ転送を可能にするために、入出力プロセッサアーキテクチャは、図９に示されているように、直接的転送を許容する。使用される命令は、Ｂ２Ｆ（バスからＦＩＦＯ）及びＦ２Ｂ（ＦＩＦＯからバス）である。上述のとおり、レジスタバンク１９を通してデータを導くことによりデータを修正することも可能である。
【００８０】
いくつかのプロトコル上の問題点が記述され、それらの解決法が提示される。プロトコルを記述するプログラムは、アセンブラ命令と共に書き込まれる。このとき入出力プロセッサアセンブリは、この普通のテキストファイルを２進ファイルへと変換する。入出力プロセッサアセンブラは、プログラムの書込みをより容易なものにするため、ラベルを処理することができる。以下の節では、一定数の異なる問題が解決され、記述されている。
【００８１】
この節では、コントローラ及びタイマで問題が解決され、これらのブロックの利点が示されている。我々が以下で見ることになる例は、ＲＳ−２３２の受信手順の一部分である。我々の設計上の最終目標が、同時に４本の双方向ＲＳ−２３２チャネルであったことを思い出して頂きたい。
【００８２】
問題点：  ＲＳ−２３２を受信するとき、スタートビット３８が来るのを待ち、スタートビットの後、ビットの中央で各々のデータビット３９をサンプリングしなくてはならない。最後に、ストップビットを検出しなければならない４０。最後のデータビット（＃７）をパイティビットとして用いることができるが、この小さな例では、パリティチェックの実現方法は示さない。
【００８３】
方法：  タイマをロードする（開始しない）と、タイマ値は１．５ＲＳ−２３２ビットに等しい入出力プロセッササイクルの数にセットされることになる。タイマは同様に、ＲＳ−２３２、ＲｘＤ信号をサンプリングするようセットされることになる。ＲｘＤ信号のサンプリングされた値は、割込みルーチンで読取ることのできる特殊な１ビット幅のレジスタ内に記憶される。
【００８４】
その後、スタートビット３８についてセンスするため入出力プロセッサコントローラを使用する；コントローラはタイマをスタートさせ、割込みを生成することになる。割込みルーチンにおいて、受信中のバイトを記憶するため空きレジスタをセットアップする。同じ割込みルーチンで、タイマに１つのＲＳ−２３２ビットの長さに等しい値をロードする。ここでタイマは、正確に正しい時刻で全てのデータビット３９をサンプリングする。タイマ割込みルーチンにおいて、８つのデータビット３９が受信されたか否かを決定するため、サンプリングされたビット３９を処理し計数器（カウンタ）を増分する。タイマはデータビットを自己サンプリングすることから、割込みのための時間はクリティカルではない。８ビット全てが受信された時点で、タイマはストップビット４０をサンプリングし次に停止しなくてはならない。最後の割込みルーチンにおいて、受信バイトを、ＣＰＵ１に対するＦＩＦＯ１１内に入れることができる。このルーチンは同様にタイマ値を再ロードし（１．５で）、受信すべきもう１つのバイトを表示するもう１つのスタートビットについてセンスするべくコントローラを開始させる。
【００８５】
この節では、問題が事象を用いて解決されている。我々が以下で見る例は、ＩＥＥＥ−１２８４プロトコル内での互換モードからニブルモードへの折衝である。
【００８６】
例：  ＩＥＥＥ−１２８４で通信するときの問題は、ハンドシェイキング時に用いられる多数のピン（８）にある。この例は、図１１に示されているタイミング図に厳密に従っている。ピン名の左側にある数字は、ピン番号である。Ｈ及びＰという文字は、信号がホスト又は周辺装置のいずれにより駆動されているかを表わしている。この例では、ＡＪＡＸはホストとして作動している。最後に、Ｔｐは、このプロトコルにとって最小のパルスであり、この時間は５００nsである。入出力プロセッサが２００ＭHzでクロッキングされていると仮定するならば、これは１００クロックサイクルに等しい。最下部にあるラインの数字が異なるタイミングポイントを表わしていることに留意されたい。
【００８７】
方法：  データバス（バス０）で００００００００を入れ（ポイント０）、次にＴｐ秒間待機するようタイマをロードする。その後、nSelectionをハイ、nAutoFd をロウにセットする（ポイント１）；これらの信号は、それがＩＥＥＥ−１２８４互換性ユニットである場合、周辺機器に対する要求である。
【００８８】
ＩＥＥＥ−１２８４用の応答署名のため、ピン PError 、nAck、nFault及び Select のセンシングを開始する。この時点で、周辺装置が応答しない場合、タイムアウトを計数するべくタイマも開始させなくてはならない。ＩＥＥＥ−１２８４の最大応答時間は３５ｍｓである（７００００００入出力プロセッササイクル）が、この例では、７０００サイクル待機するため（３５μｓに等しい）にだけタイマをセットする。
【００８９】
周辺装置が正しく応答した場合（ポイント２）、 nStrobe信号をパルス送りする（ポイント３、４）。同様にタイムアイトを計数するタイマも停止させる。
【００９０】
nAckがハイとなって、周辺装置が要求対象モードを受諾したことを示すのを待つ（ポイント６）。
【００９１】
入出力プロセッサは主として１段階クロッキングシステム内で実現されるが、エリアをとるレジスタバンクは２段階システム内でラッチとして実現されてきた。設計全体は、２００ＭHzでクロッキングするように意図されている。クロッキング時限が非常に短かく、論理は往々にして２つの等しい遅延部分に分割するのがむずかしいことから、１段階システムが選ばれた。当然のことながら、段階間の時分割は２段階システム内で使用できたであろうが、高度のクロッキング解析を必要としただろう。我々の戦略は論理設計の作業を容易にするが、第２段階で２段階ラッチへの書込み信号が安定したものでなくてはならないことから、レジスタのタイミング制約条件はわずかに一層複雑なものである。もう１つの欠点は、２つの段階が等しくロードされないということにある。これはいくらかのクロックスキューの危険性を増大させるが、近代技術は往々にしてこれらの問題を解決してくれるうまく作用するクロックツリーアーキテクチャを有している。
【００９２】
入出力プロセッサアーキテクチャ内の命令は、汎用命令コーディングプラス汎用命令コーディングを保持するために、２４ビットのワードとなるように選択される。
【００９３】
命令メモリは、好ましくは、オンチップＲＡＭメモリとして実現される。サイズは、最高２０４８ワードであってよい。ＲＳ−２３２、ＩＥＥＥ−１２８４又はＡＴＡプロトコルのうちの１つを支援するため、必要とされる合計サイズは５１２ワード未満である。ＲＡＭ３のタイミングは、例えば５ns未満といった１サイクルにはまり込まなくてはならない。ＲＡＭ３は、ＣＰＵ２によって逐次的にか、又はアーキテクチャ内の必要なピンがＲＡＭプログラミングピンと同時に汎用出入力ピンとなるように規定することによって、ロードされる。
【００９４】
入出力プロセッサコア１２は、図１２に示されている２ステップパイプラインとして実現される。最初のステップは、ＩＦ（命令フェッチ）ステップ（又は段）４１であり、ここで内部ＲＡＭ３から命令が読みとられる。第２のそして最後のステップはＥＸ（拡張）ステップ（又は段）４２であり、ここでオペランドがフェッチされ、ＡＬＵ１８内で実行される。ピンアクセス、ＦＩＦＯアクセスのような機能も全て、この第２のステップ４２内に位置づけられる。
【００９５】
命令メモリは、２つのａ段階フリップフロップ４３、４４の間に位置設定されている。ＥＸステップ４２は、汎用レジスタがエリア節減のためｂ−ラッチとして実現されていることから、少々特殊である。図１３は、ＥＸステップ４２における異なる段階を例示している。
【００９６】
実行は、２つのｂ段階４５、４６例えばレジスタバンク１９とフラグレジスタとの間に位置設定され、１つのａ段階４９により分割される（ラッチ）。レジスタはＩＦステップ４１から１．５サイクル後に更新されるが、これは、レジスタ１９がＩＦステップ４１から０．５サイクル後までアクセスされないことから許されることである。命令は、ＥＸステップ４２の異なるコンポーネントを制御するため、ＥＸステップ４２内の第１及び第２の命令デコーダ４８、４９を通過する。
【００９７】
ＥＸステップの第２段階において分岐決定が下される。これは、入出力プロセッサコア１２の最もタイムクリティカルな部分の１つである。ＰＣハンドラ論理１７は、分岐がとられるべきか否かを決定し、２．５ns未満以内に適切なＰＣを選択しなければならない。
【００９８】
ＰＣハンドラ１７は、２つの異なる部分に分割される。第１のＰＣハンドラ部分はＰＣ及び分岐を制御しており、第２のＰＣハンドラ部分は割込み及び事象ハンドラである。割込み及び事象アドレスレジスタは、ここでも又貴重なエリアを幾分か制約するため、ｂラッチとして実現される。割込みと事象との間の優先性を処理する論理は、きわめて複雑であるが、ＢＤＳコードの中にかくされている。ＩＲＰ（割込み復帰ポインタ）は、１１ビットのフリップフロップであり、ＰＣハンドラ１７の中に内含されている。ＰＣの選択は、タイミング需要が満たされるようにするため、図１４に例示されている２つのステップ５０及び５１に分割される。
【００９９】
即値及び割込みアドレス（ＩＲＱ）は、独自のマルチプレクサ５１により選択されなくてはならない。これらは、最もタイムクリティカルな信号である。ＰＣ＋＋信号は、増分されたＰＣであり、正規の命令において省略時解釈として選択される。ＲＴＩ命令は、第１のマルチプレクサ５０でＩＲＰアドレスを又第２のマルチプレクサで正規を選択する。停止アドレスは、単純に最後のサイクルと同じＰＣである。１つの事象が発生した時点で、セレクト論理は事象アドレスを選択する。設計は、ＣＰＵからコマンドレジスタを介して送られる任意のアドレスにリセットできる。
【０１００】
レジスタバンクは、エリア節約のためｂラッチにより実現される。各々の１６ビットレジスタは、２つの別々の８ビットレジスタに分割される。こうして、レジスタの上部８ビットフィールドに影響を及ぼすことなく、命令が下位８ビットフィールドに対し結果を書き戻すことが可能となる。全ての外部レジスタソースは、表８に従ってレジスタとして直接利用可能である。正しいＦＩＦＯデータ及び外部パスデータは、外部４×１６マルチプレクサによって選択される。
【０１０１】
【表８】
2010033614.tif 000010
【０１０２】
ＡＬＵは、ＢＤＳコード及び手動設計された論理の両方として実現される。結果は２．５ns以内に計算されなくてはならないが、これは主要な問題ではない。Ｚフラグの更新は、最もクリティカルな経路である。インクリメンタ又はデクリメンタを構築しその後生成した結果がＺフラグという結果をもたらすはずか否かを検査することは不可能であった。解決法は、増分されるべき（又は減分されるべき）オペランドが０ｘｆｆｆｆｆｆｆｆ（又は減分演算については０ｘ０００００００１）に等しいか否かを検査することである。これらの値は結果としてセットされたＺ−フラグをもたらすはずであり、テストは単純に８ビットＡＮＤゲートプラスインバータである。これは、増分プラス比較演算よりもはるかに迅速なテストである。
【０１０３】
入出力プロセッサ２の最終的実現は、８つのタイマを含んでいる。タイマは、図６に示されている別々のブロックとして構築される。タイマブロックは各タイマ内に２つのレジスタを内含し、レジスタはフリップフロップとして実現されている。２つの段階の間でタイマが実現される。タイマ事象及び割込み信号は、ＰＣハンドラに接続されている。１つのビットをサンプリングするようタイマがセットされたならば、サンプリングされた結果はフリップフロップ内に記憶される。このフリップフロップは、命令ＲＴＢ（タイマバッファを読取る）により読取ることができる。タイマ拡張レジスタにより選択されたピンは、レジスタブロック１９内のピンレジスタに接続されるが、同様にマスクレジスタ２１にも接続される。表９は、ピンベクトル２２内のピンを示す。
【０１０４】
入出力プロセッサ実現には６つのピンコントローラ２９が存在する。タイマと同様、コントローラは、２つのａ段階の間の別々のブロックとして構築される。コントローラは、フリップフロップと共に実現されるコントローラレジスタを内含している。コントローラ上の記述が図７に例示されている。コントローラ内で選択されたピンは、レジスタバンク内のピンベクトルの中に含まれる。表９を参照のこと。
【０１０５】
【表９】
2010033614.tif 000011
【０１０６】
全てのピン及びバスは、個別にトライステート化されうる。トライステートデータ及びピン値は、図１５内にあるような特殊なレジスタの中に記憶される。
【０１０７】
トライステートレジスタ内のゼロは、ピンを出力として働かせ、１は入力として働かせる。
【０１０８】
本発明が異なるプロトコルを支援する改良型入出力制御システムを提供することは明らかであるはずである。本発明は、この特定の一実施形態に関連して記述されてきたが、当該開示は本発明の原理の例示とみなされるべきものであって本発明を例示された特定の実施形態に制限することを意図したものでないことから、本発明は異なる形態でも実施可能である。
【符号の説明】
【０１０９】
１    ＣＰＵ
２    入出力プロセッサ
３    内部ＲＡＭ
４    レジスタ
５    環境設定可能論理
６    入出力ピン
７    ＤＭＡコントローラ
８    外部ＲＡＭ
９    キャッシュメモリ
１０    バス
１１    一組のＦＩＦＯ
１２    入出力プロセッサコア
１６    ＦＩＦＯコントローラ
１７    ＰＣハンドラ（ＰＣ＝プログラムカウンタ）
１８    ＡＬＵ（論理演算装置）
１９    レジスタバンク
２０    コマンドレジスタ
２１    ８ビットピンマスクレジスタ
２２    タイマのピンセレクトレジスタ
２３    ＡＮＤゲート
２４    比較コンポーネント
２５    ８ビットピンマスク比較レジスタ
２６    １５ビットタイマ
２７    レジスタ（タイマレジスタ）
２８    タイマ拡張レジスタ
２９    ピンコントローラ
３１    待機回路
３２    割込み
３３    事象
３４    入出力プロセッサタイマ
３５    コントーラレジスタ
３６    バス
３７    バス
３８    スタートビット
３９    データビット
４０    ストップビット
４１    ＩＦ（命令フェッチ）ステップ
４２    ＥＸ（拡張）ステップ
４８，４９    命令デコーダ
５１    マルチプレクサ
【図１】
2010033614.tif 000012
【図２】
2010033614.tif 000013
【図３】
2010033614.tif 000014
【図４】
2010033614.tif 000015
【図５】
2010033614.tif 000016
【図６】
2010033614.tif 000017
【図７】
2010033614.tif 000018
【図８】
2010033614.tif 000019
【図９】
2010033614.tif 000020
【図１０】
2010033614.tif 000021
【図１１】
2010033614.tif 000022
【図１２】
2010033614.tif 000023
【図１３】
2010033614.tif 000024
【図１４】
2010033614.tif 000025
【図１５】
2010033614.tif 000026