(57)【特許請求の範囲】
【請求項１】
プログラマブル論理装置としてのプログラマブル集積回路において、
マイクロプロセサ、
複数個の導電線を有する内部バス、
複数個のピン又はパッド、
各々が前記バスの１つの線へ接続されている複数個のリードと前記ピン又はパッドのうちの１つへ接続されている少なくとも１つのリードとを具備する複数個の入力／出力ブロック、
前記マイクロプロセサの少なくとも１つのリードを前記バスにおける前記導電線の対応する１つへ接続する手段、
前記マイクロプロセサを制御する１組の命令を格納する手段、
を同一チップ上に有しており、前記マイクロプロセサと前記１組の命令とが前記プログラマブル論理装置の機能を実施するプログラマブル集積回路。
【請求項２】
請求項１において、前記マイクロプロセサの少なくとも１つのリードを接続する手段が、前記バス内の複数個の導電線へアクセスする手段を有するプログラマブル集積回路。
【請求項３】
請求項１において、更に、
前記マイクロプロセサによって発生される信号を格納する手段（１０２）、
前記信号を読取る手段、
を有するプログラマブル集積回路。
【請求項４】
請求項１において、前記入力／出力ブロックが少なくとも１つの出力格納レジスタを有しているプログラマブル集積回路。
【請求項５】
請求項４において、前記入力／出力ブロックが、外部ピンへ印加すべきデータを格納するための第一出力格納レジスタと、前記ピンへの印加を制御するための第二出力格納レジスタとを有するプログラマブル集積回路。
【請求項６】
請求項５において、更に、前記第一格納レジスタの出力において３状態バッファが設けられており、且つ第二出力格納レジスタが前記３状態バッファを制御するプログラマブル集積回路。
【請求項７】
請求項１において、前記入力／出力ブロックが少なくとも１個の入力格納レジスタを有するプログラマブル集積回路。
【請求項８】
請求項７において、前記入力／出力ブロックが、更に、前記入力格納レジスタをイネーブルするためのカウンタ手段（２０１）を有するプログラマブル集積回路。
【請求項９】
請求項８において、前記カウンタ手段がカウンタとセット／リセットラッチとを有しており、前記バスがアドレスバスとデータバスとを有しており、前記データバスが前記カウンタへ並列的にロードし、前記アドレスバスが前記カウンタをスタートさせ、且つ前記カウンタが前記ラッチをリセットさせるプログラマブル集積回路。
【請求項１０】
請求項７において、前記入力／出力ブロックが、更に、前記入力格納レジスタによってロードされる３状態バッファを有しているプログラマブル集積回路。
【請求項１１】
請求項１において、前記入力／出力ブロックが入力３状態バッファを有しているプログラマブル集積回路。
【請求項１２】
請求項１１において、前記入力３状態バッファが前記アドレスバスを介してアドレスされるプログラマブル集積回路。
【請求項１３】
請求項１において、前記１組の命令における１つの命令が前記命令において実行される関数を定義するルックアップテーブルを有しているプログラマブル集積回路。
【請求項１４】
請求項１において、前記１組の命令における１つの命令がデータの読取り及び書込みのための複数個のポートを識別するプログラマブル集積回路。
【請求項１５】
請求項１において、前記マイクロプロセサが複数個のマイクロプロセサを有しているプログラマブル集積回路。
【請求項１６】
請求項１５において、前記ピン又はパッドのうちのいずれか１つが前記複数個のマイクロプロセサのうちの１つによってのみ書込まれるプログラマブル集積回路。
【請求項１７】
請求項１５において、更に、複数個のメモリセルを有するメモリが設けられており、前記メモリにおける前記セルのうちのいずれか１つが前記複数個のマイクロプロセサのうちの１つによってのみ書込まれるプログラマブル集積回路。
【請求項１８】
請求項１において、１つの命令が３つのアドレスを呼出し、そのうちの２つが入力用であり且つ１つが出力用であるプログラマブル集積回路。
【請求項１９】
請求項１８において、前記入力アドレスのうちの両方が別個のメモリポートを介して同時的にメモリセルへアクセスするプログラマブル集積回路。
【請求項２０】
請求項１において、１つの命令が４つのアドレスを呼出し、そのうちの３つが入力用であり且つ１つが出力用であるプログラマブル集積回路。
【請求項２１】
請求項１において、前記入力／出力ブロックのうちの少なくとも１つが１つのクロック信号の単一サイクルにおいて複数個のデータビットをロードするために複数個のフリップフロップを有しており、前記フリップフロップを単一のアドレスに応答して制御するプログラマブル集積回路。
【請求項２２】
請求項２１において、前記複数個のデータビットが前記フリップフロップを制御する前記クロック信号の制御下において外部ピンへシフトされ、且つ前記フリップフロップを制御する前記クロック信号が前記マイクロプロセサを制御するクロック信号と異なる速度でスイッチ動作するプログラマブル集積回路。
【発明の詳細な説明】
技術分野
本発明は、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）又はイレーザブルプログラマブル論理装置（ＥＰＬＤ）として知られているような装置であるフィールドプログラマブル集積回路論理装置又はアレイ（ＰＬＡ）に関するものである。
従来の技術
ＰＬＡ，ＰＡＬ，ＡＳＩＣ，ＦＰＧＡ，ＥＰＬＤとして知られるプログラマブル即ち書込み可能な論理装置は従来公知である。このような装置は、例えば、Ｂｉｒｋｎｅｒの米国特許第４，１２４，８９９号、Ｆｒｅｅｍａｎの米国特許第４，８７０，３０２号、Ｃａｒｔｅｒの米国特許第４，７０６，２１６号、Ｅｌｇａｍａｌ  ｅｔ  ａｌ．の米国特許第４，７５８，７４５号、Ｋａｐｌｉｎｓｋｙの米国特許第４，８４７，６１２号等の先の刊行物に記載されている。これら全ての特許は引用により本明細書に導入する。これらの装置は、全て、ユーザによって選択された論理機能乃至は論理関数を実行するためにプログラムすることによって即ち書込みを行なうことによって接続することの可能なハードウエアを有している。これらの装置がユーザによってプログラム即ち書込みが行なわれると、ある外部ピンは入力ピンとして機能し、他のピンは出力ピンとして機能し、ある場合には、幾つかのピンは入力／出力ピンとして機能する。該装置は入力ピン上へ供給される信号及び信号の組合わせに応答して、ユーザによってその装置内にプログラム即ち書込みが行なわれた機能によって決定されるように、その出力ピン上に信号を供給する。
ユーザは多様な問題を解決するためにこれらのプログラマブル即ち書込み可能な装置を使用しており、且つ製造業者は多様な装置寸法及び速度及び装置設計を提供している。ある装置は速度に対して最適化されており、別の装置は柔軟性に対して最適化されており、更に別の装置は複雑性に対して最適化されており、且つある装置の場合には低コストに対して最適化されている。通常、速度が速いこと、柔軟性が高いこと、及び寸法が大きいことは夫々コストが高いことと関連している。既存の装置の場合には、通常高速性能が提供されており、ユーザがそれを必要とするか否かに拘らずそのための対価を支払わねばならない。あるユーザの場合には多数の信号ピンを必要とするが出力バッファが低速であることを我慢できる場合がある。このような特性を有する装置は未だに入手可能なものではない。
発明の要約
本発明によれば、ユーザにとってはプログラマブル論理装置として見えるマイクロプロセサによって制御される装置が提供される。従来の論理装置においてなされるのと同一の態様で、外部ピンにおいて信号がとられ且つそこに信号が供給される。然しながら、論理関数を実行するためのプログラマブル論理装置内に与えられる内部的なハードウエアは関連するメモリを具備するマイクロプロセサによって置換されている。該マイクロプロセサは、入力ピンから入力信号を読取り、所望の論理に関係した計算を実行し、且つ出力ピン上に信号を供給すべくプログラムすることが可能である。従って、このマイクロプロセサにより制御される装置の機能は、外部ピン上における信号を観察することから考えると、従来のＦＰＧＡ又はその他の論理装置のものと同一である。然しながら、内部的には、マイクロプロセサと関連するメモリ内に格納されているプログラムが、マイクロプロセサをして外部ピンから直列的に信号を読取らせ、必要な計算を実行させ、且つ出力ピン上に信号を供給させる。比較的大型の設計である場合に高速性能とするためには、１個を超えた数のマイクロプロセサが使用される。複数個のマイクロプロセサが共用されるデータメモリを介して互いに通信を行なう。一実施形態においては、いずれかの与えられたメモリ空間は１つのマイクロプロセサによってのみ書込むことが可能であるが、任意のマイクロプロセサによって読取ることが可能である。
【図面の簡単な説明】
図１は本発明に基づくマイクロプロセサ制御型論理装置のアーキテクチュアを示している。
図２Ａ−２Ｅは図１の入力／出力バッファの幾つかの実施例を詳細に示している。
図３Ａ及び３Ｂは図２Ａ及び２Ｂに夫々示した記憶装置の実施例を示している。
図４は本発明の動作を説明するために使用する論理関数の例を示している。
図５は２つのマイクロプロセサを使用するマイクロプロセサ制御型論理装置のアーキテクチュアを示している。
図６は図５に示したようにマイクロプロセサを制御するための命令ワードフォーマットを示している。
図７は図５の実施例に対する関連したアクセス回路を有するマイクロプロセサ関連メモリのメモリ部分を示している。
発明の詳細な説明
図１は本発明に基づくマイクロプロセサ制御型装置のアーキテクチュアを示している。図面の回りに位置させて複数個のパッドが設けられている（パッドは集積回路チップの導電性領域であり、それは集積回路パッケージの外部ピンへ接続される）。各パッド、従って各ピンは入力／出力バッファへ接続される。例えば、パッドＰ３は入力／出力バッファＩＯＢ３へ接続される。各入力／出力バッファはアドレス線と、データ線と及び例えばクロック線及びリセット線等のその他の線を有するバスへ接続されている。図１に示した如く、該バスは、アドレス線Ａ０乃至Ａ５、双方向データ線Ｄ、読取／書込信号線Ｒ／Ｗ＿、クロック信号線ＣＬＫ、リセット線ＲＳを有している。尚、英文字記号の後にアンダーライン記号を付したものはその英文字記号の上にオーバーラインを付したものと同一の意味を有している。マイクロプロセサ１０１はＲＯＭ１０３内に格納されているプログラムによって制御される。その他の公知のプログラム及びマイクロプロセサの場合における如く、ＲＯＭ１０３内に格納されているプログラムは、マイクロプロセサ１０１に対して、データに関しての演算を行ない且つオプションとして異なるメモリ位置へジャンプして実行を継続させるための命令を与える。マイクロプロセサ１０１は外部クロック線ＣＬＫによってクロック動作され且つアドレス線Ａ０乃至Ａ５，データ線Ｄ及びシステムクロック線ＣＬＫを介してバスへアクセスする。（システムクロック線ＣＬＫは、マイクロプロセサ１０１を駆動し且つＩＯＢにおけるフリップフロップへ印加されるクロック信号を担持する。このＣＬＫ信号は種々の論理関数（機能）を制御するための典型的なユーザの設計の一部であるクロック信号とは異なるものである。ユーザのクロック信号は、ＲＯＭ１０３内に格納されているプログラムに依存して、システムＣＬＫ信号よりも一桁速度が遅い場合がある。）外部ピンへ供給されることのない内部データ信号の状態はＲＡＭメモリ１０２内に格納される。Ｉ／Ｏバッファへ供給される信号もＲＡＭメモリ１０２内において複製される場合がある。シミュレートすることの可能な内部論理ゲートの数は、信号を格納する場合には、ＲＯＭ１０２内のメモリの量に依存し、且つ命令を格納する場合には、ＲＯＭ１０３内のメモリの量に依存する。ＲＯＭ１０３において必要とされるメモリはロジックゲート当たり１つの命令よりも僅かに大きい程度である。図１において使用される如く、ＲＯＭという用語はマイクロプロセサによって読み取られるがそれに対して書込みを行なうことのないメモリのことを意味する。このメモリは物理的にはＲＡＭ１０２と異なるものではなく、境界が必要なものではない。ＲＯＭ１０３は、単にメモリが格納されているメモリの部分のことを言及するものであり、且つＲＡＭ１０２はデータが格納されているメモリの部分を言及するものである。相対的な寸法は１つのコンフィギュレーション（１組の命令）と別のコンフィギュレーションとで異なる場合がある。
ＲＯＭ１０３内に格納されているプログラムは、周期的にマイクロプロセサ１０１に対して外部ピンを読取るか又は外部ピンに対して書込みを行なうことの命令を与える。通常、マイクロプロセサはＲＡＭ１０２における内部メモリ位置に対しても読取り及び書込みを行なう。例えば、マイクロプロセサが１００ＭＨｚのクロック速度で動作している場合に、プログラムがそれに対して１０サイクル毎にピンＰ３の読取りを行なうこと、２００サイクル毎にピンＰ２の読取りを行なうこと、且つ３０乃至５０サイクル毎に発生する場合のある特定のシーケンスのイベントの後にピン４に対して書込みを行なうことの命令をする場合がある。従って、ピンＰ３において、本装置は１０ＭＨｚの速度を有しているように見え、ピンＰ２においてはそれが０．５ＭＨｚの速度を有しているように見え、且つピンＰ４においては、本装置が２ＭＨｚの速度を有しているように見える。これらは特定の環境に対しては満足のいく速度である場合がある。又、１つのピンにおける速度が許容できない程度に低速である場合には、ＲＯＭ１０３におけるプログラムを修正してあるピンにおける見掛けの速度を増加させることが可能である。
図５に関連して後述する如く、速度を増加させるために並列動作を行なうことが可能であるように１つを超えた数のマイクロプロセサが存在する場合がある。一実施例においては、少数の数のマイクロプロセサを有するシステムがサブセットの外部ピンを各マイクロプロセサで制御する。これらのマイクロプロセサは共用するメモリ及び／又は内部通信線を介して互いに通信を行なう。多数のマイクロプロセサを有する大型の実施例においては、マイクロプロセサが互いに通信を行なうために内部マルチプロセサバスが設けられる。
図２Ａは図１の入力／出力バッファＩＯＢ３のゲート型クロック実施例を詳細に示している。図１のＩＯＢは、当該技術分野において公知の如く、各々が異なるアドレスに応答するということを除いて、同一とすることが可能である。図２Ａの実施例においては、２つのレジスタＲ１及びＲ２が設けられている。レジスタＲ２はトライステートバッファＴＢ３Ｏを介して出力をパッド乃至はピンＰ３へ供給する。レジスタＲ１はトライステートバッファＴＢ３Ｏの状態を制御する。アドレス線Ａ０乃至Ａ５上にアドレスを与えることにより、マイクロプロセサ１０１は入力／出力バッファのうちの任意の選択した１つへアドレスすることが可能である。図２Ａの実施例においては、トライステート制御値をＩＯＢ３のレジスタＲ１内へロードし且つデータをＩＯＢ３のレジスタＲ２内へロードするために設けられている。例えば、図２Ａに示した如く、マイクロプロセサ１０１はレジスタＲ１をアドレス０００１１０でアドレスすることが可能であり且つレジスタＲ２をアドレス０００１１１でアドレスすることが可能である。アドレス０００１１１は、読取り／書込み線Ｒ／Ｗ＿が論理０を担持している場合にのみＡＮＤゲートＡＮＤ３Ｄをターンオンさせ、線Ｄ上のデータがレジスタＲ２内へロードされ従ってピンＰ３に対して書込まれるべきであることを表わす。アドレス０００１１１は、読取り／書込み線Ｒ／Ｗ＿が論理１を担持している場合にトライステートバッファＴＢ３Ｉをターンオンし、ピンＰ３上の値がデータ線Ｄ上へ与えられるべきであることを表わす。レジスタＲ１がアドレスされる場合には、ＡＮＤゲートＡＮＤ３ＯＥが上方へ向かうクロックエッジを発生し、データ線Ｄ上の値をレジスタＲ１内へロードさせる。その値が論理１である場合には、レジスタＲ１がトライステートバッファＴＢ３０をターンオンし、従ってレジスタＲ２内に存在するデータ信号をピンＰ３上へ与える。
図２Ｂはゲート型クロック信号を使用することのない本発明において使用される出力バッファの一実施例を示している。レジスタＲ１１及びＲ１２はクロックイネーブルポートＣＥを有している。この実施例は、ＣＬＫ信号がスイッチ動作する場合にＱ出力において有効信号を与えることが可能であるという点において図２Ａの実施例よりも有利であり、従ってレジスタＲ１２がアドレスされる時に線Ｄ上に所望の信号が存在することを保証することは必要ではない。
一方、図２Ａの実施例は必要とされる部品数が少なく且つより小型のシリコン面積において実現することが可能であるという利点を有している。
図３Ａは図２ＡのレジスタＲ２のレベル感応性実施例を示している。レジスタＲ２は、格納ループの形態に接続されたインバータＩ３１及びＩ３２と格納ループをデータ線Ｄへ接続するアクセストランジスタＴ３１からなる５トランジスタメモリセルを有している。リセットの場合には、線ＲＳが論理１を担持している場合には、トランジスタＴ３２がターンオンし且つ論理０（接地）を該ループの非反転端子へ印加する。従って、レジスタＲ２においては６個のトランジスタが使用されているに過ぎない（公知の如く、ＣＭＯＳインバータＩ３１及びＩ３２は各々が２つのトランジスタを使用している）。
図２ＢのレジスタＲ１２は図３Ｂに示した如くに構成されている。マルチプレクサ１２１がＡＮＤゲートＡＮＤ３ＤＯからのクロックイネーブル出力信号によって制御され、レジスタ１２２の出力Ｑをレジスタ１２２のＤ入力へフィードバックすることのディスエーブルされた状態と、線Ｄ上のデータ信号をレジスタ１２２のＤ入力へ供給することのイネーブルされた状態との間の選択を行なう。従って、レジスタＲ１２がディスエーブル即ち動作不能状態とされる限り、線Ｄ上のデータが変化するか否かに拘らず、クロック信号に応答してＱ出力が変化することはない。レジスタＲ１２がイネーブル即ち動作可能状態とされると、線ＣＬＫ上のクロック信号の上昇エッジにおいてのみ線Ｄ上のデータが有効であることが必要である。クロック信号のタイミングは、図３ＡのＡＮＤゲートＡＮＤ３Ｄの出力のタイミングよりも一層確かである。従って、本実施例は、線Ｄ上のデータがＡＮＤゲート出力の上昇エッジにおいて有効であることを保証することができないがクロック信号の上昇エッジにおいて有効であることを保証することが可能である場合に好適である。
入力／出力バッファ
図２Ｃは、入力バッファであることから出力バッファであることに動的にスイッチ動作することの可能な入力／出力バッファＩＯＢ３を示している。別々のアドレス０００１１０及び０００１１１が、夫々、ＡＮＤゲートＡＮＤ３ＯＥ及びＡＮＤ３ＤＯを介して供給され、出力関数（機能）を制御するレジスタＲ１１及びＲ１２のクロック入力をイネーブルさせる。第３及び第４アドレス０００１００及び０００１０１が、夫々、入力関数（機能）をアドレスするためにＡＮＤゲートＡＮＤ３ＤＩＣ及びＡＮＤ３ＤＩＤを介して供給される。この実施例においては、入力、出力及びイネーブル関数（機能）の間でアドレスが共用されることはなく、従って図２Ａ及び２Ｂに示したようなＲ／Ｗ＿線は使用されることはない。
出力
図２ＣのＡＮＤゲートＡＮＤ３ＯＥは、レジスタＲ１１のクロックイネーブル入力をアドレスし、従って、線ＣＬＫ上の高クロック信号がレジスタＲ１１のクロック入力へ印加されると、線Ｄ０上のデータはレジスタＲ１１のＱ出力へ転送される。レジスタＲ１１のクロックイネーブルピンがアドレスされる場合の線Ｄ０上の値が論理１である場合には、レジスタＲ１１のＱ出力はトライステートバッファＴＢ３Ｏをターンオンさせる。トライステートバッファＴＢ３Ｏは、レジスタＲ１１が再度アドレスされ且つ線Ｄ０上の論理信号がレジスタＲ１１のＱ出力を低状態へ移行させるまで、オン状態に留まる。トライステートバッファＴＢ３Ｏがオンである間は、レジスタＲ１２のＱ出力はピンＰ３へ印加される。マイクロプロセサ１０１は、新たな値が線Ｄ０上にある間、レジスタＲ１２をアドレスすることにより（ＡＮＤゲートＡＮＤ３ＤＯによってデコードされる）ピンＰ３における値を変化させることが可能である。
入力
ピンＰ３は、入力ピンとしてか又は出力ピンとして機能することが可能である。トライステートバッファＴＢ３Ｏがターンオフされ且つレジスタＲ１３がイネーブルされると（ＡＮＤゲートＡＮＤ３ＤＩＣをアドレスすることによりセット／リセットフリップフロップＳＲ３ＤＩをセットする）、パッドＰ３へ印加されるオフチップ信号がシステムクロック信号ＣＬＫの次のサイクルでレジスタＲ１３内へロードされる。マイクロプロセサ１０１（図１参照）は、トライステートバッファＴＢ３Ｉをアドレスすることにより（ＡＮＤゲートＡＮＤ３ＤＩＤによりデコードされる）レジスタＲ１３内の値を読取ることが可能であり、そのことはレジスタＲ１３のＱ出力線上のデータをデータ線Ｄ０上へ配置させる。ピンＰ３は、レジスタＲ１１における値を変化させることにより、入力ピンであることと出力ピンであることとの間でスイッチ動作させることが可能である。
図２Ｃの実施例は、ピンＰ３が入力バスの一部として機能することを許容する。外部バスは、例えばピンＰ３等の幾つかのピンに対して同時的にデータを印加することが可能である。マイクロプロセサが例えばＰ３等のピンの上に全ての入力値を検索するためにはある有限の時間が必要であり、且つこれらの値は検索される前に変化する場合があるので、全ての入力バス値を一度に捕獲するための構成が必要である。従って、ピンＰ３へ印加されるデータはクロック信号ＣＬＫの次のエッジにおいてレジスタＲ１３内に格納され、次いで、マイクロプロセサがトライステートバッファＴＢ３Ｉをアドレスする場合に、内部バスへ転送される。図２Ｃにおいて、３つの線が内部バスの一部として、即ち線Ｄ０乃至Ｄ２として示してあるに過ぎない。然しながら、本発明に基づいて任意の寸法のバスを設けることが可能である。異なる入力／出力ブロックにおける複数個のカウンタ、例えば入力／出力ブロックＩＯＢ３におけるカウンタＣＴＲ３ＤＩは、例えばＡＮＤゲートＡＮＤ３ＤＩＣ等のアドレス手段によって逐次的に初期化される。カウント値はカウンタＣＴＲ３ＤＩ内へ永久的にプログラム即ち書込むことが可能であり、又は、図２Ｃに示した如く、信号が３つの線Ｄ０乃至Ｄ２上へ与えられて８個の可能なカウント値のうちの１つを表示する。選択されたカウント値は、次のクロックサイクルでカウンタＣＴＲ３ＤＩ内へロードされる。次いで、カウンタＣＴＲ３ＤＩは０へカウントダウンし、その場合に、ＮＯＲゲートＮＯＲ３ＤＩは高信号をセット／リセットラッチＳＲ３ＤＩのリセット入力Ｒへ印加し、セット／リセットラッチＳＲ３ＤＩをしてレジスタＲ１３のＣＥ入力上へ低信号を与える。このことは、レジスタＲ１３をしてそのＱ出力上においてピンＰ３からの値を保持させる。ピンＰ３上の信号に対するその後の変化は無視される。逐次的なカウンタ内へ異なるカウントを逐次的にロードすることにより、全てのカウンタはそれらの対応するピンの値を同時的に捕獲するようにセットさせることが可能である。次いで、適宜の時間において、例えばＴＢ３Ｉ等のバッファが例えばＡＮＤ３ＤＩＤ等のアドレス手段によって逐次的にアドレスされてそれらの対応する値を線Ｄ０上へ与える。別法として、同一のアドレスを例えばＤ０，Ｄ１，Ｄ２等の異なるデータバス線へ供給することにより、同一のアドレスにより幾つかのピンをアドレスすることが可能である。この実施例においては、マイクロプロセサはデータバスから同時的に全てのピン値を読取る。
レジスタＲ１１，Ｒ１２，Ｒ１３は、図３Ｂに図示し且つ図２Ｂに関連して上述したように構成することが可能である。
バイト幅データバス
図２ＤはＲＡＭ１０２におけるデータが、単一のアドレスによってアクセスされ８ビットバイトとして格納されている実施例に対するＩＯＢ３の別の実施例を示している。勿論、より大きなバス幅を与えることも可能である。図２Ｄの出力バッファは８個のビットが並列的にロードされ、且つ８ビットの出力を直列的にピンＰ３上へシフト出力させる。図２Ｄの入力部分は図２Ｃの入力部分と同一である。
図１におけるものと同様のアーキテクチュアにおいて、６個のアドレス線Ａ０乃至Ａ５を介して、マイクロプロセサ１０１が、図１に示した線Ｄを介して単一ビットのデータをアクセスする代わりに、ＲＡＭ１０２における８個のデータ線Ｄ０乃至Ｄ７をアクセスする。これらの８個のデータ線は図２Ｄにおいて示してある。トライステート出力バッファＴＢ３ＯをフリップフロップＲ１１のＱ出力上の高信号でイネーブルさせることにより（データ線Ｄ０を介して）、次いでこれら８個のデータビットをデータ線Ｄ０乃至Ｄ７上へ与え、且つＡＮＤゲートＡＮＤ３ＤＯをアドレス１１１０００でアドレスすることにより（それによってＣＬＫ信号が低状態から高状態へ移行する場合に、線ＬＤ上に高並列ロード信号が与えられる）、マイクロプロセサ１０１はマルチプレクサＭ１２−０乃至Ｍ１２−７をしてデータ線Ｄ０乃至Ｄ７上の値を並列的にレジスタＲ１２−０乃至Ｒ１２−７内へロードさせる。システムクロックが相次ぐ高及び低ＣＬＫ信号を発生すると、レジスタＲ１２−０乃至Ｒ１２−７におけるこれら８個のビットはピンＰ３及び外部装置へシフト出力される。従って、マイクロプロセサ１０１はデータ線Ｄ０乃至Ｄ７及び３つのその他の線への単一のアクセスのみで。ピンＰ３上の８個の相次ぐ信号を制御することが可能である。システムクロック速度よりも一層遅いか又は速い速度でこれらの８個のデータ信号がピンＰ３へシフト出力されることが望まれる場合がある。このような実施形態においては、図２Ｄに示したＣＬＫ線は、異なる速度でスイッチ動作する信号を担持する別のクロック信号線と置換される。この別のクロック信号は、通常、システムクロック信号から分割されるものであり、一実施形態においては、選択した数によって割算するためにユーザによって制御される。このような柔軟性は、特に、ユーザが例えばＰ３等のピン上に波形を発生させることを希望し、且つマイクロプロセサからの関与を最小の状態でこの波形の周波数を制御することを所望する場合に有用である。
典型的な単一ポートマイクロプロセサにおいては、単一動作において使用されるメモリ値へのアクセスは逐次的に発生する。従って、２入力ゲートを評価するために、マイクロプロセサは順番にそれら２つの入力へアドレスし、次いで計算を行ない、次いで結果の書込みを行なわねばならない。この動作は３つのメモリアクセスを必要とし、従って３つのメモリクロックサイクルを必要とする。マイクロプロセサが動作を行なう速度を改善するために、マイクロプロセサをマルチポートマイクロプロセサとして形成することが可能である。２つの入力と１つの入力とを使用する動作の場合には、３ポートマイクロプロセサは単一のクロックサイクルで３の全てのポートへアクセスし且つその機能を実行することが可能である。マルチポートマイクロプロセサについては、マルチプロセサチップに関連して以下に説明する。
マイクロプロセサＦＰＧＡの動作
プログラム即ち書込みが行なわれたＦＰＧＡのように動作するためにマイクロプロセサチップのプログラム即ち書込みを行なうためには、正しい時刻に正しい信号をピンから取出し且つ正しい時刻に正しい信号をあるピンへ与えるプログラムをメモリ１０３（図１）へロードすることが必要である。
図４は図１乃至３Ｂのアーキテクチュアで実現すべき論理関数（機能）の一例を示している。この例においては、ユーザは、例えばハードウエア記述言語等の他の論理設計エントリ方法を介して概略図に示したような情報を与えている。別法として状態マシン入力を使用することも可能である。勿論、この例に示したものよりも一層大型の設計とすることも可能であり、又そのようにすることは典型的である。
図４における論理記号はＡＮＤゲーＴ４３と、ＯＲゲート４４とＸＯＲゲート４５と、フリップフロップ４６と、インバータ４７である。例えば、従来のＦＰＧＡにおいて行なわれていたように、プログラマブル論理装置内の内部レジスタにビットを格納させる代わりに、図示した論理図においては、ＲＡＭメモリ１０２が信号の内部状態を格納する。
図４に示したユーザの設計は、ユーザの設計の記述を読取るプログラムを使用する汎用コンピュータによってコンパイルされる（例えば、ユーザの設計のゲート及び接続部を記述するネットリスト内にロードする）。この技術は「コンパイルされたコードシミュレーション」として知られており、公知である。該設計が例えばＡＮＤゲート４３等のＡＮＤゲートを必要とする場合には、該汎用コンピュータプログラムが、第一出力線Ａ上の値を有するメモリセル又は外部ピンをアドレスし、入力線Ａ上の値を検索し、第二入力線Ｂ上の値を有するメモリセル又は外部ピンをアドレスし、入力線Ｂ上の値を検索し、これら２つの検索した値をＡＮＤ処理し、出力線の値を有するべきメモリセル（この場合は、信号Ｅに対するメモリ位置）をアドレスし、且つ信号Ｅに対するそのメモリ位置内にその値をセットするために、オブジェクトコード命令を書く。説明の便宜上、入力信号の値が同一名称のメモリ位置内に格納されているものと仮定する。信号Ａ，Ｂ，Ｃ，Ｄが外部ピン上に与えられ且つメモリ内にはないものと仮定すると、論理値Ｅ，Ｇ，Ｈ，ＫＬＯＫがＲＡＭ１０２のメモリ位置Ｅ，Ｇ，Ｈ，ＫＬＯＫ内に格納される。然しながら、論理値Ｆ及びＩは出力ピン上に与えられねばならない。このことは、例えば図２ＣのレジスタＲ１２等のレジスタ又はＩＯ出力フリップフロップのアドレスに対してそれらを割当てることにより行なわれる。
図４においては４つの論理レベルが表わされている。即ち、入力Ａ，Ｂ，Ｃ，Ｄ，ＫＬＯＫの論理関数は４つの段において計算されねばならず、それらの出力はＬＥＶＥＬ１，ＬＥＶＥＬ２，ＬＥＶＥＬ３，ＬＥＶＥＬ４として表わされている。第一段においては、メモリセルＡ及びＢ内に格納されている論理値Ａ及びＢのＡＮＤ関数４３が計算され且つ、ＯＲ関数４４又はＸＯＲ関数４５を計算する前に、ＲＡＭ１０２のメモリセルＥ内に信号Ｅとして格納されねばならない。マイクロプロセサがその命令セットにおいてＡＮＤ命令を有する場合には、入力Ａ及びＢのＡＮＤ関数を計算することは１つのマシン命令で行なうことが可能である。何故ならば、ＡＮＤ関数を計算するための上述したステップは専用の組合わせハードウエアによって行なわれるからである。
ＬＥＶＥＬ１からＬＥＶＥＬ２へ移行するためには、信号Ｅが使用可能となると、ＯＲ関数４４及びＸＯＲ関数４５をいずれかの順番で計算することが可能である。何故ならば、Ｅが使用可能な状態となると、全ての入力Ｃ，Ｄ，Ｅが使用可能であるからである。好適には、図４に示されている全ての関数ＡＮＤ，ＯＲ，ＸＯＲ，フリップフロップ，ＩＮＶは、マイクロプロセサの命令セット内にあり（各々がそれ自身の専用ハードウエアで実現されている）、且つ各々が単一の命令サイクルで取扱うことが可能なものである。
ＬＥＶＥＬ２からＬＥＶＥＬ３へ移行するためにはマイクロプロセサ１０１に対するフリップフロップ命令がマイクロプロセサ１０１をしてその入力位置Ｇにおけるデータをその出力位置Ｈへ移動させる。フリップフロップ４６を実現するためには、マイクロプロセサがクロック信号をシミュレートするためにＫＬＯＫ信号を頻繁にスイッチ動作するようにプログラムすることが可能である。別法として、ＫＬＯＫ信号は図４に示していないマイクロプロセサによって計算される組合わせ論理関数の出力とするか又はチップへの入力とすることが可能である。この点に関して、ＫＬＯＫ信号は図４の信号Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｇと同様である、本実施例においては、位置Ｇにおける値を位置Ｈへ移動させることは、値ＫＬＯＫが低から高へ変化した後に次のシステムクロックサイクル（図１のＣＬＫ信号）が発生するやいなや発生するようにプログラムすることが可能である。ＫＬＯＫ値が高へセットされた後に、メモリセルＧ内に格納されているＸＯＲゲート４５の出力ＧがメモリセルＨへ移動される。従来のハードウエア構成とは異なり、競合条件が発生する可能性はなく、線Ｈ上のＱ出力はＬＥＶＥＬ２出力ＧがメモリセルＧ内に格納される前に決定される。何故ならば、マイクロプロセサ１０１は逐次的に演算を実行し且つＨを計算する前にＧを計算するからである図４の論理図における各線はＲＡＭ１０２におけるメモリ位置が割当てられている。マイクロプロセサは図４においてＡ，Ｂ，Ｃ，Ｄとして表わされている値をとり且つ関数によって表わされるステップを実行し出力線によって表わされる値を発生する。
表１は図４の論理関数を評価するためにマイクロプロセサ１０１によって行なわれるステップを示している。
0003708541.tif 000002
表１において、メモリ位置Ｈにおける値の補元を位置Ｉ内に与えることにより、フリップフロップ出力反転「ＮＯＴ」の評価が最初に取扱われる。（別法として、この反転ステップは図４において示されるように、最後に取扱うことが可能である。）次に、位置Ａ及びＢ内の値のＡＮＤ関数を計算し且つ位置Ｅ内に与える。次いで、位置Ｃ及びＥ内の値のＯＲ関数を入力／出力ブロックＦへ送給し、次のクロックサイクルで対応するピン上へ与える。Ｄ及びＥにおける値のＸＯＲ関数が位置Ｇに格納される。好適には、マイクロプロセサ１０１は、その命令セットにおいてポピュラーな論理演算であるＡＮＤ，ＯＲ，ＮＡＮＤ，ＮＯＲ，ＸＯＲ，ＸＮＯＲ，ＮＯＴを有しており、従ってこれらの各々は単一のクロックサイクルで評価され且つ格納させることが可能である。次いで、マイクロプロセサがＫＬＯＫの値及びＬＡＳＴＫＬＯＴの値をテストし、それはフリップフロップクロック信号が高へ移行することを検知するためのハードウエアにおけるテストと等価である。（信号ＫＬＯＫは位置ＫＬＯＫ内に現在格納されている値である。ＫＬＯＫは上には示していないコードの一部によって与えられる信号であり、又、別法として、チップへの入力である。ＬＡＳＴＫＬＯＫはこのような逐次的演算を容易化させるために汎用コンピュータコンパイラによって該コードのこの部分へ付加される変数である。）従って、表１にリストしたステップは図４に示した論理を実現する。
スタンダードなコンパイラは表１における各命令を逐次的なステップへ分解する。例えば、表１における「ＡＮＤ  Ａ，Ｂ−＞Ｅ」ステップは、Ａをアドレスし且つそのデータを検索し、Ｂをアドレスし且つそのデータを検索し、これら２つのデータ値をＡＮＤ処理し、且つその結果をＥ内へ格納するという逐次的なステップへ分解される。（マイクロプロセサがマルチポートマイクロプロセサである場合には、これらの動作即ち演算の幾つかは同時的に実行することが可能である。）スタンダードなコンパイラは、更に、ある命令を命令セット内において使用可能なものへ翻訳する。例えば、表１における、
0003708541.tif 000003
勿論、論理信号の各計算は逐次的に行なわれるので、表４に示された論理関数の計算はマイクロプロセサクロック速度よりも一層遅い。ＩＦステーメントを評価するために２つのクロックサイクルが必要であると仮定すると、上述したループ演算は約９個のクロックサイクルを必要とする、従って、図４の論理を実現するために本発明に基づくマイクロプロセサを使用する装置の見掛けの速度はシステムクロックの速度の約１／９である。したがって、１００ＭＨｚのシステムクロックの場合には、装置速度は約１１ＭＨｚである。このような速度は多くの適用場面に対して充分に高速なものである。マイクロプロセサはそれが置換する論理装置要素よりも一層小型のものとすることが可能である。従って、本発明装置は、それが置換するプログラマブル論理装置よりもかなり低価格である。
大型の設計の場合には、見掛けの速度は遅くなる。然しながら、変化を検知し且つ変化が発生した場合にのみレジスタへアクセスするためのプログラムをシミュレータをして書かせることにより高速化させることが可能である。例えば、表１の「ＩＮＶ  −＞Ｉ」ステップは、それが「ＭＯＶＥ  Ｇ−＞Ｈ」ステップの後においてのみ実行されるように移動させることが可能である。フリップフロップ出力以外の信号を付加的にチェックすることにより入力値が変化しなかった場合に論理のアップデートをマイクロプロセサがスキップさせることも可能である。
インタラプト駆動型マイクロプロセサ
ある論理設計においては、全ての入力ピンが同じ周波数で読取られる場合に発生する速度よりも一層迅速にあるピンがサービスされねばならない。上述した如く、一層速い応答を供給せねばならないピンはより頻繁に読取ることが可能である。然しながら、幾つかのピンを頻繁に読取ることは他の機能からマイクロプロセササイクルを取上げ且つ不所望に全体的なチップ性能を遅滞化させる場合がある。１つのピンが比較的たまにしか値を変化させない場合には、頻繁にチェックを行なってもたまにしか変化を発生させることはない。別法は、１つのピン上の信号が変化した時を検知するためにインタラプトメカニズムを使用することである。
図２Ｅはインタラプト駆動型マイクロプロセサと共に使用する入力／出力ブロックＩＯＢ３の実施例を示している。インタラプト線及びインタラプトバスがチップに付加されており、且つ図２Ｄに示した如く、入力構成体へ接続されている。
更に入力／出力ブロックＩＯＢ３へ付加されているものは、変化検知用ＸＯＲゲートＸＯＲ３Ｉ、インタラプト許容ゲートＡＮＤ３Ｉ、セット／リセットラッチＳＲ３Ｉ、リセットゲートＡＮＤ３ＩＲ、トライステート制御ＡＮＤゲートＴＣ３Ｉ、トライステートバッファＴＢ３ＩＡ０乃至ＴＢ３ＩＡ５、インタラプト信号アキュムレータＩＮＴ３である。
ＸＯＲゲートＸＯＲ３Ｉは、レジスタＲ１３のＱ出力をピンＰ３上の値と比較することによりピンＰ３の値における変化を検知する。これらの値における差異はＸＯＲゲートＸＯＲ３Ｉをして論理Ｉを出力させる。インタラプト許容ＡＮＤゲートＡＮＤ３Ｉは、ＸＯＲゲート３Ｉの出力を、ＩＮＴＡＬＬＯＷ信号によってイネーブルされる場合に、セット／リセットラッチＳＲ３Ｉへパスさせる。このＩＮＴＡＬＬＯＷ信号はグローバル信号、一群のピン入力へ印加される信号、又はレジスタＲ１１がアドレスされる態様でアドレスバスからアドレスされる別のレジスタの出力とすることが可能である。
ＩＮＴＡＬＬＯＷ信号が高である場合には、ＸＯＲゲートＸＯＲ３Ｉの出力上の高信号がセット／リセットラッチＳＲ３Ｉをして高インタラプト信号を出力させる。この高信号はインタラプト線上に高信号を発生する。このインタラプト線は図２ＥにおいてインタラプトＯＲゲートＩＮＴ３によって接続された線ＩＮＴＩＮ及び線ＩＮＴＯＵＴとして示してある。線ＩＮＴ３ＩＮ上における高信号又は線ＩＮＴＩＮ上の高信号は、ＯＲゲートＩＮＴ３をして線ＩＮＴＯＵＴ上に高信号を与える。ＯＲゲートＩＮＴ３と等価なゲートが各ピンに対して設けられており、それはインタラプトを発生することが可能であり、且つ例えばストリング又はツリー構成に接続されており、いずれかのインタラプト駆動ピンが値を変化させた場合にマイクロプロセサに対して高インタラプト信号を発生する。その他のインタラプト信号を発生する構成も可能であり、例えばワイヤードＡＮＤインタラプト信号を使用することも可能である。
線ＩＮＴ３ＩＮ上の高信号もＡＮＤゲートＴＣ３Ｉをイネーブル即ち動作可能状態とさせる。ＯＲゲートＩＮＴ３から上流側の別のピンが高ＩＮＴＩＮ信号を発生すると、ＡＮＤゲートＴＣ３ＩはトライステートバッファＴＢ３ＩＡ０乃至ＴＢ３ＩＡ５をターンオンさせることはない。然しながら、上流側のピンがインタラプト信号を発生しない場合には、ＡＮＤゲートＴＣ３Ｉが高出力信号を発生し、それはトライステートバッファＴＢ３ＩＡ０乃至ＴＢ３１Ａ５をしてピンＰ３のインタラプトアドレスを線Ｉ０乃至１５から構成されるインタラプトバス上へ配置させる。
マイクロプロセサがこのインタラプト信号を検知すると、それはその現在のプログラムカウンタとその他の内部状態とをセーブし且つそのピンに対するインタラプトを取扱うコードへ分岐する。インタラプトを取扱うことは、変化した値に基づく関数（機能）を評価することを包含する場合があり、且つ新たな値を他のピンへ書込むこととなる場合がある。与えられたピンに対するインタラプトに応答して行なわれる動作はユーザによって決定され、ユーザはインタラプトイネーブルされるべきピンのサブセット及びそのインタラプトに応答する設計の一部を識別することが可能である。別法として、インタラプト応答はユーザの設計を１組のマイクロプロセサ命令へ変換するコンパイラによって選択することが可能である。
図２Ｅに示した如く、アドレス００００１１はセット／リセットラッチＳＲ３Ｉに対するＡＮＤゲートＡＮＤ３ＩＲによってデコードされるアドレスと同一である。一方、該アドレスはピンＰ３のラベル（０００１１）又はその他の独特のアドレスとすることが可能である。
セット／リセットラッチＳＲ３Ｉによって開始されるインタラプトを受取り且つ処理した後に、マイクロプロセサはＡＮＤゲートＡＮＤ３ＩＲをアドレスしてセット／リセットラッチＳＲ３Ｉをリセットする。ＡＮＤゲートＡＮＤ３ＩＲのアドレスがＡＮＤゲートＡＮＤ３ＤＩＤのアドレスと異なるものであることが重要である。何故ならば、これらのデコーダは同一のアドレスバス上にあるからである。
マイクロプロセサが全てのアクティブ即ち活性状態にあるインタラプトを処理すると、それはその命令空間内にロードされた命令において特定されている計算へ復帰する。インタラプトを取扱うマイクロプロセサの動作に後続するものはインタラプトを取扱う従来のマイクロプロセサによって使用される従来のシーケンスのステップである。このようなステップはジョンワイリィアンドサンズ出版社によって１９７８年に出版されたコンピュータ及び計算の構造（Ｔｈｅ  Ｓｔｒｕｃｔｕｒｅｓ  ｏｆ  Ｃｏｍｐｕｔｅｒｓ  ａｎｄ  Ｃｏｍｐｕｔａｔｉｏｎ）においてＤａｖｉｄ  Ｊ．Ｋｕｃｋによって説明されている。
本発明の多くの実施形態において、幾つかのピンが同一のインタラプトアドレス及びリセットアドレスを共用する場合がある。このことはインタラプト信号が通過せねばならないゲート数を少なくし、インタラプトバス幅を減少し、且つインタラプトベクトルを格納するのに必要なメモリを減少させるが、個々のピンの上の信号を処理することが可能な柔軟性を制限する。
マルチプルマイクロプロセサ実施例
マイクロプロセサの速度が多くの命令を充分な見掛けのクロック速度で取扱うのに充分ではない程度に大型であり且つ尚且つ典型的なＦＰＧＡを必要とするものではないタイプの設計においては、幾つかのマイクロプロセサを１つのチップ内に組込むことが可能である。
図５は２つのマイクロプロセサ１０１ａ及び１０１ｂが設けられているアーキテクチュアを示している。これら２つのマイクロプロセサは共用のメモリ１０２ａ及び１０２ｂを介して互いに通信を行なう。両方のマイクロプロセサは全メモリ空間１０２ａ及び１０２ｂを読取ることが可能である。然しながら、任意の特定のメモリ位置に対して１つのマイクロプロセサのみが書込みを行なうことが可能である。本実施例においては、マイクロプロセサ１０１ａはメモリ空間１０２ａに対して書込みを行なうことが可能であり、且つマイクロプロセサ１０１ｂはメモリ空間１０２ｂに対して書込みを行なうことが可能である。一実施例においては、どちらのマイクロプロセサによってどのメモリ空間に対して書込みを行なうことが可能であるかの選択は、どのマイクロプロセサがどのメモリセルの書込みポートに対してアクセスを有しているかによって決定される。（この実施例については図７に関連して後述する。）別の実施例においては、書込みポートが両方のマイクロプロセサ１０１ａ及び１０１ｂからの殆ど又は全てのメモリセルに対して設けられており、且つ選択は命令空間１０３内に格納されているプログラムによって制御される。この多数読取器−単一書込器条件は、機能的には、幾つかの装置を与えられた線によって駆動することが可能であるが１個の出力ドライバのみが与えられた線に対して信号を与えることが可能であるという公知のハードウエア設計条件と類似している。ハードウエアの場合においては、この条件はファンアウトを可能としながら接続（２つのドライバが異なる電圧を同一の線へ印加すること）を回避する。本マルチプロセサの場合においては、この規則は特定のメモリ位置における値に関しての非予測性を回避し、尚且つ複数個のマイクロプロセサが共用メモリを介して通信することを可能とする。
図５の実施例においては、命令空間１０３における命令はマイクロプロセサ１０１ａを制御する命令空間１０３ａとマイクロプロセサ１０１ｂを制御する命令空間１０３ｂに分割される。これら２つの命令空間が同一の寸法であること、又は命令空間１０３がデータ空間１０２から物理的に異なるものであることは必要ではない。前述した如く、命令空間１０３ａ及び１０３ｂは外部供給源からロードされたメモリの一部である。これらの命令はチップのコンフィギュレーションを確立する（即ち、チップがエミュレートする論理を定義する）。どちらのマイクロプロセサもメモリ空間１０３に対して書込みを行なうことはない。命令空間１０３は図１に示した如く書込みポートを外部ピンに対してのみアクセス可能であるようにすることにより上書きされることから保護することが可能である。一方、命令を発生するために使用されるコンパイラが命令空間の寸法を確立することが可能であり、且つ書込み命令が命令に対して割当てられている空間へアクセスすることがないことを確保することが可能である。
単一サイクルに於いて２つの入力と１つの出力とを有する動作を実行するためにマイクロプロセサは２つの入力へ同時的にアクセスせねばならず、且つこのことはマイクロプロセサが２つの入力ポートを有することを必要とする。同一のサイクルにおいて値を出力することは、上昇クロックエッジで一方の入力を読取ることが可能であり且つ下降エッジで同一のポートに対して出力を送給することが可能であり、従って単一のポートを同一のクロックサイクルにおいて読取り及び書込みの両方のために使用することが可能であるが、典型的に、第三のポートを必要とする。１つのメモリセルが同一のクロックサイクルにおいて読取り及び書込みの両方が行なわれる可能性が存在する場合には、変化された値が再び読取られ且つ同一のクロックサイクルで変化される競合条件を、入力値の非同期的に読取り（命令を受取るやいなや）且つクロックエッジで新たな値を書込むことによって回避することが可能である。
マイクロプロセサが２つの読取りポートを有すべき場合には、マイクロプロセサがどのポートがメモリセル内にその値を与えるかを選択することが可能であるようにメモリセルも２つの読取りポートをもたねばならない。本実施例においては、各マイクロプロセサは２つの入力ポートと１つの出力ポートとを有している。これらの２つのマイクロプロセサは同一のメモリセルへアクセスし、従ってメモリセルはマイクロプロセサへ入力するために４つのポートを持たねばならない。任意の与えられたメモリセルに対してマイクロプロセサのうちの１つのみが書込みを行なうことが可能であるに過ぎないので、書込みのために第５メモリセルポートを使用することが可能である。
図６は２つの入力と、１つの出力と、１つの動作とを識別するために各マイクロプロセサへ与えられる命令のフォーマットを示している。図６の命令内に含まれているものは、マイクロプロセサによって演算されるべき関数Ｆ（典型的に、ブール関数、算術関数、シフト、反転、等を包含しており、これら関数のうちの少なくとも幾つかは単一ビット入力及びマルチビット入力で演算可能である）、Ａポートへ入力されるべきデータのアドレス（行アドレス及び列アドレス）、Ｂポートへ入力されるべきデータのアドレス、及び出力が書込まれるべきアドレスである。マイクロプロセサは識別されたメモリセルに到達するためにデコーダをアドレスすることにより応答する。マイクロプロセサ及びメモリ技術において公知の如く、マイクロプロセサによりアドレスされるデコーダは、マイクロプロセサからの特定のアドレスに応答してどのアドレス線が高ヘプルされ且つマイクロプロセサからの特定のアドレスに応答してどのデータ線が読取られるか又は書込まれるかを選択する。各ポート及び各マイクロプロセサに対して別々のデコーダが設けられている。従って、各行及び各列は５個のデコーダを有している。デコーダは公知であるので、ここでは図示していない。
図５に戻ると、各マイクロプロセサは３つのアドレスバスＡＡ，ＡＢ，ＡＣと３つのデータバスＤＡ，ＤＢ，ＤＣとを有しており、それらは図６に示したフォーマットの命令に応答してアクセスされる。マイクロプロセサ１０１ａからのバスはラベル即ち記号ａを有しており且つマイクロプロセサ１０１ｂからのバスはラベル即ち記号ｂを有している。マイクプロセサ１０１ａのアドレスバスＡＡａ及びＡＢａ及びデータバスＤＡａ及びＤＢａは読取りのためであり、且つＲＡＭ１０２ａ及び１０２ｂの両方へアクセスする。同様に、マイクロプロセサ１０１ｂのアドレスバスＡＡｂ及びＡＢｂ及びデータバスＤＡｂ及びＤＢｂはＲＡＭ１０２ａ及び１０２ｂの両方へアクセスする。更に、アドレスバスＡＡａ，ＡＢａ，ＡＡｂ，ＡＢｂ及びデータバスＤＡａ，ＤＢａ，ＤＡｂ，ＤＢｂはＩ／ＯブロックＩＯＢ０乃至ＩＯＢ１９の全てへアクセスする。然しながら、マイクロプロセサ１０２ａのアドレスバスＡＣａ及びデータバスＤＣａは書込みのためであり、且つＲＡＭ１０２ａのみへアクセスし、一方マイクロプロセサ１０２ｂのアドレスバスＡＣｂ及びデータバスＤＣｂはＲＡＭ１０２ｂのみにアクセスする。マイクロプロセサ１０１ａのアドレスバスＡＣａ及びデータバスＤＣａはＩ／ＯブロックＩＯＢ７乃至ＩＢＯ１７へアクセスし、一方マイクロプロセサ１０１ｂのアドレスバスＡＣｂ及びデータバスＤＣｂはＩ／ＯブロックＩＯＢ１８，ＩＯＢ１９及びＩＯＢ０乃至ＩＯＢ６へアクセスする。従って、各Ｉ／Ｏブロック及び各メモリセルはいずれかのマイクロプロセサによって読取られ且つ１つのマイクロプロセサによってのみ書込みが行なわれる。これら２つのマイクロプロセサは並列的に動作し、ＲＯＭ１０３ａ及び１０３ｂ内に格納されている命令を同時的に実行し、従って単一のマイクロプロセサの速度の最大で２倍の速度を与える。
勿論、その他の実施例においては、その他の分割を行なうことが可能である。重要なことであるが、本発明は２つのマイクロプロセサに制限されるものではない。複数個のマイクロプロセサの間でアクセスされる位置を分割し且つ異なるマイクロプロセサに対して異なる組の命令を与える本明細書に記載した原理を使用して、３２個のプロセサ又はその他のより多くの数のマイクロプロセサを有する実施例を与えることも可能である。
多数のマイクロプロセサとすることは多数のアドレス線及びデータ線が存在することを意味する。多数プロセサ実施例においてのアドレス線及びデータ線の数を制限するために、それらのマイクロプロセサがアドレス線及びデータ線の幾つかを共用することが可能である。これらのマイクロプロセサは、幾つかの共用されていないメモリ（効率的であるが他のマイクロプロセサとの通信のために使用することはできない）、少数の他のマイクロプロセサと共用された幾つかのメモリ、及び他の全てのマイクロプロセサと共用された幾つかのメモリ（相互接続構成体の大きさにおいて高価である）を有することが可能である。
一方、複数個のマイクロプロセサが共用バスを介して互いに通信を行なうことが可能である。このような態様でパスされる情報は、１個を超えた数のマイクロプロセサによって使用さえるデータ値における変化を包含している。このような実施例の場合には、命令は他のマイクロプロセサによるバスアクセスのスケジュールを考慮に入れねばならない。マイクロプロセサに対する適宜のスケージューリングによって、バス競合を回避することが可能である。一方、バス要求とバス許可とを取扱うハードウエアによってバス競合の回避を確保することが可能である。
図７はＲＡＭ１０２ａ用のメモリ構成を示している。６個のメモリセルＭ１，１乃至Ｍ３，２が示されているが、勿論、実際の装置においてはより多くのものが設けられている。これらのメモリセルは行及び列の形態に配列されており、各行へアクセスするための１組のデータ線と各列へアクセスするための１組のアドレス線が設けられている。各メモリセルはループ状に接続された一対のインバータＩ１及びＩ２を有している。これらはメモリセルＭ１，１においてのみラベル即ち記号が付けられている。これはマルチポートメモリであって、即ちマルチポートマイクロプロセサと共に動作するために、メモリセルは５つのアドレス線と５つのデータ線を介してアクセスすることが可能である。ラベル即ち記号において小文字「ａ」を有するアドレス線はマイクロプロセサ１０１ａによってアクセスされ、且つラベル即ち記号において小文字「ｂ」を有するアドレス線はマイクロプロセサ１０１ｂによってアクセスされる。大文字「Ａ」で終了するラベル即ち記号を有するアドレス線は、データを夫々のマイクロプロセサのＡ入力ポート上へ配置させ、一方大文字「Ｂ」で終了するラベル即ち記号を有するアドレス線はデータを夫々のマイクロプロセサのＢ入力ポート上へ配置させる。大文字「Ｃ」で終了するラベル即ち記号を有するアドレス線は、マイクロプロセサから出力され且つ対応するデータ線上に配置されたデータを対応するメモリセルへ書込ませる。例えばメモリセルＭ１，１等のメモリセル内に格納されている値は５つの対応するトランジスタによって制御される５つのポートのうちのいずれかを介してアクセスすることが可能である。例えば、線Ａ１ａＡ上の高信号はトランジスタＴ１，１ａＡをターンオンし、それはメモリセルＭ１，１内の値をデータ線Ｄ１ａＡ上に配置させる。線Ａ１ａＡ上の高信号は、トランジスタＴ２，１ａＡ及び同一の列内のその他のトランジスタをターンオンさせる。注意すべきことであるが、図７に示したメモリ１０２ａの部分はマイクロプロセサ１０１ｂによって書込まれることはない。然しながら、マイクロプロセサ１０１ｂはメモリ１０２ａから値を読取ることが可能であり且つ計算結果をメモリ１０２ｂ内に配置させることが可能であり、それはマイクロプロセサ１０１ａによって読取ることは可能であるがマイクロプロセサ１０１ａによって書込むことはできない。
マイクロプロセサ１０１ａは位置Ｍ１，１及びＭ２，１内の値のＡＮＤ関数を決定し且つその結果を位置Ｍ３，１内に配置させるべく命令されると、図６におけるフォーマットに基づくメモリ１０３内の命令は以下の如くである。
0003708541.tif 000004
この命令は以下の如くに分解される。
0003708541.tif 000005
この命令に応答して、マイクロプロセサ１０１ａはセルＭ１，１からの第一入力をそのＡ入力ポート上へ配置させるために線Ａ１ａＡ及びＤ１ａＡをアドレスし且つセルＭ２，１からの第二入力をそのＤ入力ポート上へ配置させるために線Ａ１ａＢ及びＤ２ａＢをアドレスする。関数ビット０００１はＡＮＤ関数に対する真理値表である。注意すべきことであるが、４つのビットが２つの入力の１６個の組合わせ関数の全てに対する真理値表として作用する。従って、これらの４つの命令ビットは、マイクロプロセサ１０１ａのＡ及びＤ入力ポートへ入力される値によってアドレスされ、且つＣ出力ポート上へ配列されるべき出力値を与える。マイクロプロセサ１０１ａは、ＡＮＤ関数の結果をメモリセルＭ３，１へ書込むために線Ａ１ａＣ及びＤ３ａＣをアドレスする。マイクロプロセサ１０１ａがこの命令を実施している同一のクロックサイクル期間中に、マイクロプロセサ１０１ｂは別の命令を実施し、それは領域１０２ｂ内におけるメモリセルへ値を同時的に書込むこととなる場合があるが、領域１０２ａ内のメモリセルへ値を買い込むこととなることはない。
マイクロプロセサ１０１ａ及び１０１ｂが書込みを行なう位置の中には、チップの周囲に設けられている入力／出力バッファがある。これらのＩ／Ｏバッファの各々は１つのマイクロプロセサによってのみ書込むが行なわれる。図５に示した実施例においては、ハードウエアが単に１つのマイクロプロセサが特定のＩ／Ｏバッファに対して書込みを行なうことを許容する。別の実施例においては、両方のマイクロプロセサが書込みを行なうために全てのＩ／Ｏバッファ及び全ての内部メモリセルへアクセスすることが可能であり、且つメモリ１０３内の命令がどのマイクロプロセサがどのＩ／Ｏバッファへ書込みを行なうかを制御する。このような実施例においては、Ｉ／Ｏバッファ及び内部メモリの書込み制御は、メモリ１０３内の命令内に特定されている場合には、２つのマイクロプロセサの間で行ったり戻ったりすることが可能である。
上述したマルチポートマイクロプロセサの説明では、２つのポートが入力用であり且つ１つが出力用である３ポートマイクロプロセサの例を使用している。このことはマルチポートマイクロプロセサの一般的な構成である。然しながら、本発明は付加的なポートを有するマイクロプロセサを効果的に使用することが可能である。例えば、３入力又は４入力関数に対して装置を最適化させる場合には、３又は４入力ポートマイクロプロセサを与えることが可能である。メモリは対応する数のポートを有している。幾つかのマイクロプロセサが使用される場合には、メモリ又はメモリの一部は２入力ポート例に対して説明した様に、マイクロプロセサの１つまたはそれ以上へアクセスするためのポートを有している。
【図１】
0003708541.tif 000006
【図２Ａ】
0003708541.tif 000007
【図３Ａ】
0003708541.tif 000008
【図２Ｂ】
0003708541.tif 000009
【図３Ｂ】
0003708541.tif 000010
【図２Ｃ】
0003708541.tif 000011
【図２Ｄ】
0003708541.tif 000012
【図２Ｅ】
0003708541.tif 000013
【図４】
0003708541.tif 000014
【図５】
0003708541.tif 000015
【図６】
0003708541.tif 000016
【図７】
0003708541.tif 000017