(57)【特許請求の範囲】
【請求項１】
半導体チップにおいて、
プログラム可能論理装置、
制御ユニットと演算論理ユニット（ＡＬＵ）とを有するマイクロプロセッサ、
レジスタファイル、
を有しており、前記レジスタファイルが前記マイクロプロセッサとは別の前記半導体チップの部分に設けられており且つ前記プログラム可能論理装置の少なくとも一部に隣接して設けられている１個又はそれ以上のレジスタを有しており、前記レジスタの各々はデータを格納し、前記制御ユニットが前記レジスタへデータを書込み、且つ前記レジスタによって格納されているデータは継続的に前記プログラム可能論理装置へ供給されることを特徴とする半導体チップ。
【請求項２】
請求項１において、前記プログラム可能論理装置が複数個のコンフィギャラブル論理ブロック（ＣＬＢ）を有しており、前記レジスタの各々は前記ＣＬＢの対応する一つへ結合されていることを特徴とする半導体チップ。
【請求項３】
請求項２において、前記レジスタがプログラム可能相互接続資源により前記ＣＬＢへ結合されていることを特徴とする半導体チップ。
【請求項４】
請求項２において、前記レジスタが専用相互接続資源により前記ＣＬＢへ結合されていることを特徴とする半導体チップ。
【請求項５】
請求項１において、前記プログラム可能論理装置が前記制御ユニットへ信号を供給すべく結合されていることを特徴とする半導体チップ。
【請求項６】
請求項１において、前記レジスタの各々が、更に、特定のレジスタと関連するアドレスを格納する書込デコーダを有しており、本チップが、更に、
前記制御ユニットを前記レジスタの各々の入力ポートへ接続する第１データバス、
前記制御ユニットを前記レジスタの各々の書込デコーダへ接続する第１アドレスバス、
を有しており、前記制御ユニットは、前記第１データバス上へデータを配置させ、前記レジスタへ書込イネーブル信号を供給し、且つ前記レジスタと関連するアドレスを前記第１アドレスバス上に配置させることにより、データをレジスタへ書き込むことを特徴とする半導体チップ。
【請求項７】
請求項６において、前記第１データバスは、更に、前記ＡＬＵへ接続されており、且つ前記ＡＬＵは前記第１データバスを介して前記ＡＬＵから前記レジスタへ選択的にデータを転送させるドライバ回路を有していることを特徴とする半導体チップ。
【請求項８】
請求項１において、更に、前記レジスタを介しての前記制御ユニットから前記プログラム可能論理装置へのデータ転送を調整するハンドシェーク回路を有していることを特徴とする半導体チップ。
【発明の詳細な説明】
発明の背景
発明の分野
本発明はマイクロプロセサに関するものであって、特に、プログラム可能論理装置によってアクセス可能なレジスタを具備するマイクロプロセサに関するものである。
関連技術の説明
マイクロプロセサは当該技術において公知である。図１は演算論理ユニット（ＡＬＵ）ブロック１０１と制御ユニット１０３とを有するマイクロプロセサを具備するコンピュータ１００の従来の形態を示している。ＡＬＵブロック１０１は、入力／出力（Ｉ／Ｏ）装置１０２及びメモリ１０４によって供給されるデータを処理する。Ｉ／Ｏ装置１０２は出カバス１０９ａ及び入力バス１０９ｂを介してユーザ又は周辺装置（いずれも図１には示していない）と通信を行う。１つのコンピュータにおいては、Ｉ／Ｏ装置１０２はキーボード又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）（図３を参照して更に詳細に説明する）と通信を行う。メモリ１０４は、典型的に、コンピュータプログラムを書込むための例えば電気的にプログラム可能なリードオンリメモリ（ＥＰＲＯＭ）セル等の非揮発性メモリセルを有すると共に、ＡＬＵブロック１０１によって発生されるデータに対する格納を与える例えばランダムアクセスメモリ（ＲＡＭ）セル等の揮発性メモリセルを有している。コンピュータプログラムにおいて供給される命令に依存する制御ユニット１０３は、ＡＬＵブロック１０１、メモリ１０４、Ｉ／Ｏ装置１０２の動作を、夫々、バス１１１Ａ／１１１Ｂ、１０５Ａ／１０５Ｂ、１０８Ａ／１０８Ｂを介して制御を行う。
図２を参照すると、ＡＬＵブロック１０１は、典型的に、ＡＬＵ１１２と、レジスタファイル１１４と、マルチプレクサ１２１と、ラッチ１１３Ａ，１１３Ｂ，１１３Ｃとを有している。バス１１１Ａ上の制御器１０３（不図示）からのアドレスがレジスタファイル１１４の入力ポート１１５Ａへ供給され、その際にクロック信号において出力信号ＹＡを選択する。同様に、バス１１１Ｂ上の制御器１０３からの別のアドレスもレジスタファイル１１４の入力ポート１１５Ｂへ供給され、その際に同一のクロック信号において第二出力信号ＹＢを選択する。このように、出力信号ＹＡ及びＹＢが、夫々、出力線１１８Ａ及び１１８Ｂ上においてレジスタファイル１１４の出力ポートにおいて同時的に与えられる。ラッチ１１３Ａ及び１１３Ｂは、夫々、出力線１１８Ａ及び１１８ＢとＡＬＵ１１２との間に結合されている。従って、継続的にそれらの入力信号をサンプルし且つそれらのイネーブル状態においてレジスタファイル１１４へ供給されるクロック信号とは独立的にそれらの入力信号に応答してそれらの出力信号を変化させるラッチ１１３Ａ及び１１３Ｂは、出力信号ＹＡ及びＹＢをＡＬＵ１１２へ転送する。マルチプレクサ１２１は、ＡＬＵ１１２から出力信号、ライン１０６Ａを介してメモリ１０４からの出力信号、又はライン１０７Ｂを介してＩ／Ｏ装置１０２からの出力信号のいずれかをラッチ１１３Ｃへ転送すべくプログラムされている。ラッチ１１３Ｃは出力信号を夫々バス１０７Ａ及び１０６Ｂを介してＩ／Ｏ装置１０２及びメモリ１０４へ供給する。注意すべきことであるが、ラッチ１１３Ｃは、更に、典型的に、バッファしたフィードバック信号をライン１１９上のバッファ１２０を介してレジスタファイル１１４のデータ入力ポートＤＩＮへ供給する。
従来の縮小命令セットコンピュータ（ＲＩＳＣ）プロセサにおいては、１つの操作は３つの機械操作サイクル（以後、期間と呼ぶ）を必要とする。これらの期間は、読取期間、ＡＬＵ稼動期間、及び書込期間である。例えば、読取期間の期間中、制御ユニット１０３（図１）はメモリ１０４から１つの命令を検索し且つその命令のアドレス部分をバス１１１Ａ又はバス１１１Ｂを介してレジスタファイル１１４（図２）へ転送して、出力線１１８Ａ／１１８Ｂ上にオペランドを検索させる。ＡＬＵ稼動期間の期間中、その命令によって指定された操作がＡＬＵ１１２によって実行される。最後に、書込期間の期間中に、その結果がフィードバック線１１９及びデータ入力ポートＤＩＮを介してレジスタファイル１１４内に格納される。注意すべきことであるが、データ書込アドレスは該命令の一部として含まれており、且つ、典型的に、必要とされるまで保存される。
これらの読取期間、ＡＬＵ稼動期間、及び書込期間はオーバーラップしている。例えば、１個のレジスタは、１つの期間の半分において書込操作を実行し且つその期間の他の半分において読取操作を実行することが可能である。従って、論理的帰結として、期間は特定のクロックサイクルに対応するものではない。アドレスは必要に応じて制御ユニット１０３からバス１１１Ａ又は１１１Ｂ上に供給される。
レジスタファイル１１４に対する１つの典型的な命令は、第一レジスタ内の値を第二レジスタ内の値へ加算し（いずれのレジスタも図示していない）、次いでその加算結果をレジスタファイル１１４の第二レジスタ内へ入れることである。このように、ＡＬＵブロック１０１はアキュムレータとして動作する。一方、ラッチ１１３Ｃ内の値は、出力バス１０７Ａを介して、例えばＦＰＧＡ等のＩ／Ｏ装置１０２へ書込まれる。従って、１つの命令はデータを移動させることが必要とされ、一方別の命令はその結果を検索することが必要とされ、その際にマイクロプロセサ及びＩ／Ｏ装置インターフェースにおいてかなりの遅延を導入する。
従って、マイクロプロセサとＩ／Ｏ装置との間のインターフェースにおいて命令及び関連する遅延を最小とする構成に対する必要性が発生している。
発明の要約
本発明によれば、プログラム可能論理装置及びマイクロプロセサが同一のチップ上に形成されている。１実施例においては、プログラム可能論理装置はコンフィギャラブル即ち形態特定可能な論理ブロック（ＣＬＤ）を具備するフィールドプログラマブルゲートアレイ（ＦＰＧＡ）である。マイクロプロセサの少なくとも１つの関連するレジスタが該ＦＰＧＡ内に分散されている。該分散レジスタは、アーキテクチュアの観点からはマイクロプロセサの一部に留まるものであるが、ＦＰＧＡ内の少なくとも１つのＣＬＢによってアクセスすることが可能である。更に、各分散レジスタはＦＰＧＡ内の特定のコンフィギャラブル論理ブロックと関連しているので、該コンフィギャラブル論理ブロック内の論理機能は該分散レジスタを介してマイクロプロセサにとって効果的に使用可能である。従って、該分散レジスタはＦＰＧＡ内の論理とマイクロプロセサとの間のブリッジとして動作する。
１実施例においては、分散レジスタは複数個のＤフリップフロップを有している。各フリップフロップはその入力信号をサンプルし且つマイクロプロセサによって供給される制御用のクロック信号の上昇端においてその出力信号を変化させる。フリップフロップの出力端子は第一複数個のトライステートバッファへ結合している。分散レジスタと関連している第一デコーダが、第一アドレスバス上に供給された信号が該分散レジスタを識別するアドレスと一致するか否かを検知する。特に、第一デコーダが該分散レジスタのアドレスと一致する第一アドレスバス上の信号を検知すると、第一デコーダは該第一複数個のトライステート出力バッファをイネーブル即ち動作可能状態とさせ、その際に該複数個のＤフリップフロップの格納されているレジスタ値を第一データバス上に供給する。第一アドレスバス及び第一データバスは、該マイクロプロセサ及びＦＰＧＡへ結合しているバス構成体の一部を形成している。１実施例においては、該バス構成体は該ＦＰＧＡの相互接続マトリクスとは別個に形成される。
本発明によれば、該第一データバスは、マイクロプロセサへ出力信号を供給することに加えて、更に、入力バスとして作用する。特に、所定の信号が第一アドレスバス上に供給されると、該第一デコーダは該第一複数個のトライステートバッファをディスエーブル即ち動作不能状態とさせ、且つ第二デコーダが該フリップフロップのクロックイネーブル端子を活性化させ、その際に第一データバス上のデータをこれらのフリップフロップ内に書込むことを可能とさせる。
更に、本発明によれば、該フリップフロップの出力端子は、更に、該ＦＰＧＡ内の少なくとも１つのコンフィギャラブル論理ブロックへ結合している。このように、本発明の１つの利点は、分散レジスタの出力信号が任意の所定のコンフィギャラブル論理ブロックに対して常に直接的に使用可能であるということである。この実施例においては、これらの出力線はＦＰＧＡの相互接続マトリクスの一部として形成されている。
従って、第一データバス及び該フリップフロップの出力線は、該分散レジスタがコンフィギャラブル論理ブロックに対して完全にアクセス可能であることを確保している。このように、ＦＰＧＡはマイクロプロセサへのローカル即ち局所的な接続が効果的に設けられている。このローカル接続は、高速のマイクロプロセサ／ＦＰＧＡインターフェースを確保している。何故ならば、マイクロプロセサからの命令は同時的にコンフィギャラブル論理ブロックへも供給されるからである。同様に、コンフィギャラブル論理ブロック内に設けられる論理機能は、１クロックサイクル内において（即ち、第一及び第二デコーダによって決定される）マイクロプロセサへ供給される。
本発明の別の実施例においては、フリップフロップの出力端子が第二複数個のトライステートバッファへ結合されている。第三デコーダが、分散レジスタのアドレスと一致する第二アドレスバス上の信号を検知すると、該第三デコーダは該第二複数個のトライステートバッファをイネーブルさせ、その際に該複数個のフリップフロップの格納されているレジスタ値を第二データバス上に供給する。該第二アドレスバス及び第二データバスも上述したバス構成体の一部を形成している。本発明の更にその他の実施例においては、上述したバス構成体がＦＰＧＡ相互接続マトリクスの一部を形成する。
【図面の簡単な説明】
図１はマイクロプロセサを具備するコンピュータの従来の形態を示している。
図２は関連するレジスタファイルを具備する従来のＡＬＵブロックを示している。
図３は複数個のコンフィギャラブル（形態特定可能な）論理ブロックを具備するフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を示している。
図４は例示的なコンフィギャラブル論理ブロックを示している。
図５はマイクロプロセサと複数個の分散レジスタとを有する本発明に基づくＦＰＧＡチップを示している。
図６は本発明に基づくレジスタブロックを示している。
図７は本発明の分散レジスタにおいて使用されているフリップフロップの１実施例を示している。
図８は分散レジスタへの接続用のコンフィギャラブル論理ブロックにおける種々の位置を示している。
図９は本発明の分散レジスタとＡＬＵブロックとの相互接続を示している。
図１０は分散レジスタへ接続するための別のコンフィギャラブル論理ブロックにおける種々の位置を示している。
図面の詳細な説明
本発明によれば、マイクロプロセサとフィールドプログラマブルゲートアレイ（ＦＰＧＡ）とが同一のチップ上に形成されている。マイクロプロセサの所定のレジスタがＦＰＧＡ内において分散されており、その際に従来のインターフェースと比較してマイクロプロセサ／ＦＰＧＡインターフェースの動作速度を著しく増加させている。
ＦＰＧＡは当該技術において公知である。図３はコンフィギャラブル即ち形態特定可能な論理ブロック３０１−１乃至３０１−９を具備する簡単化したＦＰＧＡ３００を例示している。各コンフィギャラブル論理ブロック（ＣＬＢ）３０１は供給される入力信号ＣＬＢ３０１に依存して複数個の論理機能のうちのいずれか１つを実行することが可能である（図４を参照して更に詳細に説明する）。複数個の制御信号（不図示）が相互接続マトリクス３０２をプログラムし、その際にＣＬＢ３０１−１乃至３０１−９を互いに且つＩ／Ｏパッド３０３に対しての相互接続を決定する。各Ｉ／Ｏパッド３０３は、相互接続マトリクス３０２を介して、外部パッケージピン（不図示）とＣＬＢ３０１の内部論理との間のインターフェースを与えている。１つの相互接続マトリクス３０２及びその動作の詳細な説明は１９９３年８月３１日付で再発行された米国再発行特許第３４，３６３号に与えられており、その全体を引用によって本明細書に取込む。
例示的なコンフィギャラブル論理ブロック３０１を図４に示してある。この実施例においては、コンフィギャラブル論理ブロック３０１は、ブール関数を実現するための３２×１ルックアップテーブルと、２個のフリップフロップ４０２，４０３と、内部制御セクション（マルチプレクサ４０４−４１２、及びＯＲゲート４１３を含む）とを有する組合わせ機能ブロック４０１を包含している。５つの論理変数入力信号Ａ，Ｂ，Ｃ，Ｄ，Ｅ及びフィードバック信号ＱＸ，ＱＹ（夫々、フリップフロップ４０２，４０３から）が、該ルックアップテーブル内のどのアドレスが選択されるかを決定する。上述した内部制御セクションは、組合わせ機能ブロック４０１の出力信号、即ち信号Ｆ及びＧ、ラインＤＡＴＡ  ＩＮ上のデータ信号、又はフリップフロップ４０２及び４０３からの出力信号がコンフィギャラブル論理ブロック３０１の出力信号Ｘ及びＹとして供給されるか否かを決定する。特に、マルチプレクサ４１１及び４１２は、レジスタ４０２及び４０３からの同期信号を供給するか又は組合わせ機能ブロック４０１からの非同期信号を供給するかの間の選択を行う。マルチプレクサ４０４及び４１０は、フリップフロップ４０２及び４０３へ夫々供給された入力信号が、フィードバック線、ＤＡＴＡ  ＩＮ線、又は組合わせ機能ブロック４０１のＦ又はＧ出力端子（マルチプレクサ４０５及び４０６によって決定される）から派生されたものであるか否かを決定する。マルチプレクサ４０４及び４１０は図７を参照して更に詳細に説明する。コンフィギャラブル論理ブロック３０１及びその動作の詳細な説明はカリフォルニア９５１２４、サンノゼ、２１００ロジックドライブに居所を有するザイリンクス，インコーポレイテッドによって１９９４年に出版された「ザ・プログラマブル・ロジック・データ・ブック（Ｔｈｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄａｔａ  Ｂｏｏｋ）」（この全てを引用によって本明細書に取込む）の２−１０９乃至２−１１７頁に記載されている。
注意すべきことであるが、本発明をＦＰＧＡ３００及びコンフィギャラブル論理ブロック（ＣＬＢ）３０１を参照して詳細に説明するが、本発明はその他のチップアーキテクチュア及びＣＬＢコンフィギュレーション（形態）において実現することが可能である。例えば、本発明は上掲の「ザ・プログラマブル・ロジック・データ・ブック」の２−９乃至２−１８頁及び２−１８７乃至２−１９９頁に夫々記載されており且つ例示されているザイリンクスＸＣ４０００（商標）ファミリィの装置（図１０参照）及びＸＣ２０００（商標）ファミリィの装置のチップアーキテクチュア及びＣＬＢコンフィギュレーション（形態）に対しても適用可能である。
図５は本発明に基づくＦＰＧＡチップ５００の１実施例を示している。この実施例においては、ＦＰＧＡチップ５００はマイクロプロセサユニット５０６（それは、前述したように、制御ユニット及びＡＬＵブロック（いずれも簡単化のために示していない））、及びＣＬＢ５０４の中に分散されている複数個のレジスタブロック５０１Ａ及び５０１Ｂを有している。従って、従来技術（図２）において示されているように、レジスタファイル１１４の全てをＡＬＵ１１２の隣りに物理的に位置させる代わりに、レジスタファイルは複数個のレジスタブロックに分割されており、それらのレジスタブロックはチップ５００全体にわたり分散されている。
レジスタブロック５０１Ａ及び５０１Ｂをマイクロプロセサユニット５０６へ接続させるバス構成体５０２は、アドレスバスとデータバスとを有している（図６を参照して詳細に説明する）。本発明のこの実施例においては、バス構成体５０２のアドレスバス及びデータバスの両方がＦＰＧＡ相互接続マトリクスとは別個に形成されており、一方、別の実施例においては、バス構成体５０２のアドレスバス及びデータバスの両方がＦＰＧＡ相互接続マトリクスの一部を形成している。チップ５００は、更に、チップ５００の周辺部に位置されている複数個のＩ／Ｏブロック５０３を有している。Ｉ／Ｏブロック５０３は上掲した「ザ・プログラマブル・ロジック・データ・ブック」の２−１０７乃至２−１０８頁に詳細に記載されている。
図６は複数個のＤフリップフロップ６０１1乃至６０１N（尚、Ｎは整数）を有する分散型レジスタブロック５０１の１実施例を示している。各フリップフロップ６０１は正エッジトリガ型Ｄフリップフロップであり、それは、Ｄ入力端子においてその入力信号をサンプル即ち採取し且つクロックパルス（ＣＰ）端子上に供給される制御用クロック信号の上昇端においてＱ出力端子上のその出力信号を変化させる。この制御用クロック信号はライン６１０上のマイクロプロセサ５０６（図５）によって供給される。
分散型レジスタブロック５０１と関連するＷＲＩＴＥ（書込）動作は、読取／書込（Ｒ／Ｗ）ライン６２１（図６）を介してマイクロプロセサ５０６から供給される信号によってトリガされる。例えば、本発明の１実施例においては、Ｒ／Ｗライン６２１上に供給される低信号は書込操作を表わす。このデコーダ６０５へ供給される低信号はそのデコーダがトライステートバッファ６０２1乃至６０２Nをディスエーブルさせることのプロンプトを与え、その際にレジスタ値がデータバス６１８Bへ転送されることを防止する。書込状態においてインバータ６２１Ａによって供給される高信号を検知することに加えて、デコーダ６０６は、更に、レジスタブロック５０１のアドレスと一致するアドレスバス６１１B上の信号を検知する場合には、デコーダ６０６はフリップフロップ６０１1乃至６０１Nのクロックイネーブル（ＣＥ）端子に対してイネーブル信号を供給する。
図７は、マルチプレクサ７０２とスタンダードのＢフリップフロップ７０１とを有するフリップフロップ６０１1のような例示的なフリップフロップ６０１の１実施例を示している。フリップフロップ６０１1がイネーブル信号を受取ると、マルチプレクサ７０２はデータライン６１８B1上に供給された信号をＤフリップフロップ７０１のＤ入力端子へ転送する。この信号は、後に、ライン６１０上に供給される次のクロック信号においてフリップフロップ７０１のＱ出力端子へ転送される。
対照的に、Ｒ／Ｗライン６２１（図６）上の高信号（読取動作であることを表わす）はインバータ６２１Ａによって反転され且つデコーダ６０６へ供給される。この低信号は、デコーダ６０６に対して、フリップフロップ６０１のクロックイネーブル（ＣＥ）端子へディスエーブル信号を供給すべくプロンプトを与える。フリップフロップ６０１がライン７０５を介してデコーダ６０６からディスエーブル信号を受取ると（図７）、マルチプレクサ７０２は信号がライン６１８B1からＤフリップフロップ７０１のＤ入力端子へロードされることを防止する。その代わりに、このディスエーブルされた形態においては、ライン６１０上の各クロック信号において、マルチプレクサ７０２がＤフリップフロップ７０１のＱ出力端子上の出力信号をフィードバックループ７０６を介してそのＤ入力端子へ転送する。従って、フリップフロップ７０１のＱ出力端子上の信号は、ライン６０８B1上に供給される信号に拘らずに一定に留まる。再度図６を参照すると、デコーダ６０５が、分散型レジスタブロック５０１のアドレスと一致するアドレスバス６１１B上の信号を検知し且つライン６２１上の高信号を検知すると（ＲＥＡＤ即ち読取状態であることを表わす）、デコーダ６０５はトライステート出力バッファ６０２1乃至６０２Nをイネーブルさせ、その際にフリップフロップ６０１1乃至６０１NのＱ出力端子上の格納されているレジスタ値をデータバス６１８B上に供給する（図８を参照して詳細に説明するマルチプレクサ６２２1乃至６２２Nが適宜プログラムされているものと仮定する）。従って、本発明においては、データバス６１８Bは、マイクロプロセサ５０６（図５）から分散型レジスタブロック５０１へ入力信号を供給することに加えて、更に、出力バスとして作用する。注意すべきことであるが、１実施例においては、初期的リセット期間中に、フリップフロップ６０１1乃至６０９Nがライン７０９1乃至７０９Nを介してそれらのリセット端子Ｒ上に供給される信号によってリセットされる。データバス６１８Bはマイクロプロセサ５０６へ結合されているバス構成体５０２（図５）の一部を形成する。アドレスバス６１１A及び６１１Bは、又、チップ５００のバス構成体５０２の一部を形成している。
デコーダ６０４が分散型レジスタブロック５０１のアドレスと一致するアドレスバス６１１A上の信号を検知すると、デコーダ６０４はトライステート出力バッファ６０３1乃至６０３Nをイネーブルさせ、その際にフリップフロップ６０１1乃至６０１NのＱ出力端子上の格納されているレジスタ値をデータバス６１８A上に供給する（未だにマルチプレクサ６２２1乃至６２２Nを無視する）。注意すべきことであるが、デコーダ６０４は、Ｒ／Ｗライン６２１上の信号に拘らずに、ＲＥＡＤ即ち読取状態において動作する。データバス６１８Aはマイクロプロセサ５０６へ結合しているバス構成体５０２（図５）の一部を形成する。
図９は、ＡＬＵブロック９０１の分散型レジスタブロック５０１（図６）に対する例示的な相互接続を示している。特に、制御器１０３（図１）からのバス１１１Ａ及び１１１Ｂは夫々バス６１１A及び６１１Bへ信号を転送する。従って、バス１１１A及び１１１Bはバス構成体５０２（図５）の一部を形成する。バス６１１A及び６１１BはＡＬＵブロック９０１のみならず分散型レジスタブロック５０１へ信号を転送する。データバス６１８Aのラインのうちの１本、図９においてはライン６１８A1は、レジスタファイル１１４から出力線１１８Ａへ結合している。同様に、データバス６１８Bのラインのうちの１本、図９においてはライン６１８B1はレジスタファイル１１４から出力線１１８Ｂへ結合している。データバス６１８B（図６を参照して詳細に説明する）の双方向特性のために、ライン６１８B1は、更に、ＡＬＵブロック９０１のフィードバックライン１１９へ結合している。この実施例においては、トライステートバッファ９２０Ａ乃至９２０Ｃは、夫々、ライン１１８Ｂ，６１８B1，１１８Ａへの信号の転送を選択的に可能とさせる。制御ユニット１０３（図１）はトライステートバッファ９２０Ａ乃至９２０Ｃの動作を制御する。
再度図６を参照すると、フリップフロップ６０１1乃至６０１Nの夫々の出力線６０９1乃至６０９NはＦＰＧＡチップ５００（図５）上の少なくとも１個のＣＬＢ５０４へ結合している。この実施例においては、出力線６０９1乃至６０９Nは相互接続マトリクス３０２（図３）の一部を形成しており、一方１本の出力線６０９が１個のＣＬＢ５０４（図８を参照して詳細に説明する）へ与えられている。従って、本発明の１つの利点は、分散型レジスタブロック５０１の出力信号は常時所定のＣＬＢ５０４（図５）に対して与えられており且つその後に汎用相互接続体を介して任意のＣＬＢへ与えられるということである。従って、データバス６１８Bのライン及び出力線６０９は、分散型レジスタブロック５０１が局所的にＣＬＢ５０４に対してアクセス可能であることを確保している。このように、ＦＰＧＡアレイは、マイクロプロセサ５０６への高速接続が効果的に与えられている。この高速接続は、高速のマイクロプロセサ／ＦＰＧＡインターフェースを確保している。何故ならば、マイクロプロセサ５０６からの信号はＣＬＢ５０４に対して同時的に与えられるからである。同様に、ＣＬＢ５０４において与えられる論理機能は１クロックサイクル内において（即ち、デコーダ６０４，６０５，６０６によって決定される）マイクロプロセサ５０６へ供給される。
本発明の１実施例においては、ＦＰＧＡ及びマイクロプロセサは非同期的であり、即ち異なるクロックを使用する。従って、マイクロプロセサクロックを使用してマイクロプロセサによってレジスタブロック５０１へ供給されるデータが、実際に、レジスタブロック５０１によって受取られたことを表わす「ハンドシェーク」に対する必要性が発生する。フリップフロップ６１２は、フリップフロップ６０１によって受取られるのと同一のクロックイネーブル信号及びクロックパルス信号を受取る。然しながら、フリップフロップ６０１と異なり、フリップフロップ６１２はそのＤ入力端子上において一定の論理１を受取り且つＦＰＧＡ論理及びマイクロプロセサに対して信号ＦＬＡＧを供給する。従って、フリップフロップ６１２のＱ出力端子上に供給される論理１は、マイクロプロセサによって供給されるデータがレジスタブロック５０１によって受取られたことを表わす。このハンドシェークを完了するため及び次のデータ転送の準備をするために、ＦＰＧＡ論理はフリップフロップ６１２に対して信号ＲＥＳＥＴを供給し、Ｑ出力端子上に格納されている信号の値を０へリセットさせる。
図８は分散型レジスタ５０１（図６）に対して接続を与えることの可能なコンフィギャラブル論理ブロック３０１における位置を例示している。特に、陰線区域８００はデータバス６１８B又は出力線６０９1乃至６０９Nのいずれかへ結合させることの可能な論理要素を表わしている。例えば、１つのコンフィギュレーション即ち形態においては、フリップフロップ４０２及び４０３のＱ出力端子のうちの少なくとも１つがマルチプレクサ６２２（図６）を介してデータバス６１８Bへ結合されている。別のコンフィギュレーション即ち形態においては、マルチプレクサ４０４，４０５，４０６，４１０，４１１又は４１２の出力端子又は組合わせ機能ブロック４０１のＦ及びＧ出力端子のうちの少なくとも１つがマルチプレクサ６２２（図６）を介してデータバス６１８Bへ結合している。更に別の形態においては、出力線６０９が組合わせ機能ブロック４０１の入力端子か又はマルチプレクサ４０４，４０５，４０６，４１０，４１１又は４１２（これらのマルチプレクサは２入力から３入力マルチプレクサへ形態を変化させる）のうちの１つの入力端子のいずれかへ結合されている。図１０は別のコンフィギュレーション論理ブロック（ザイリンクス社ＸＣ４０００（商標）ファミリィの装置に関連している）の簡単化したブロック線図を示しており、その場合に、陰線区域１０００はデータバス６１８Bか又は出力線６０９1乃至６０９N（図６）のいずれかへ結合させることの可能な論理要素を表わしている。
注意すべきことであるが、１実施例においては、本発明におけるレジスタの１ビットがＣＬＢと関連しており（その際に、ＣＬＢにおける１つのソース即ち供給源のみがレジスタへ接続するために選択されることを暗示している）、一方、その他の実施例においては、２ビットがＣＬＢと関連している（その場合には、ＣＬＢにおける２つのソース即ち供給源がレジスタへ接続するために選択されることを暗示している）。
本発明は次のような利点を提供する。
１．マイクロプロセサは従来のマイクロプロセサよりも高速である。何故ならば、本発明に基づくマイクロプロセサは、単一の期間において、ＦＰＧＡ論理で実現されている特別化された複雑な命令を実行するからである。従って、プログラムはより少ない数の命令を有することとなり且つより少ない期間で実行される。
２．分散型レジスタの全てがマイクロプロセサ及びＦＰＧＡに対して同時的に使用可能であるので、操作を並列的に行なうことが可能である。
３．本マイクロプロセサはＦＰＧＡにおける論理をエミュレーションする能力を有している。従って、論理を実現するＣＬＢを有する代わりに、ソフトウエアプログラムがＦＰＧＡからある入力信号を取り、それらをマイクロプロセサにおいて結合し、次いでその結果をＦＰＧＡへ戻すことが可能である。このように、本マイクロプロセサは、幾つかの関数発生器を置換することが可能であり、その際にＦＰＧＡチップ上のかなりの空間を節約する。
４．分散型レジスタは、マイクロプロセサと周辺装置との間においてより高速の通信（ＦＰＧＡ論理を介して）を与える。注意すべきことであるが、１実施例においては、周辺装置はＦＰＧＡにおいて実現される。
本発明の上述した実施例は単に例示的なものであって制限的なものではない。その他の実施例は本明細書及びそれと関連する図面を参照することにより当業者にとって自明なものである。本発明は添付の請求の範囲に記載されるものである。
【図１】
0003948494.tif 000002
【図２】
0003948494.tif 000003
【図３】
0003948494.tif 000004
【図４】
0003948494.tif 000005
【図５】
0003948494.tif 000006
【図６】
0003948494.tif 000007
【図７】
0003948494.tif 000008
【図８】
0003948494.tif 000009
【図９】
0003948494.tif 000010
【図１０】
0003948494.tif 000011