(57)【特許請求の範囲】
【請求項１】
プログラマブル・ロジック、第１のメモリおよび第２のメモリを含み、前記第１のメモリは、前記プログラマブル・ロジックを構成するようにそれぞれ動作可能ないくつかのロジック・デザインを格納するように構成された再構成可能なロジック回路と、
前記再構成可能なロジック回路に結合され、１つまたは複数のアプリケーション・プログラムおよびインターフェース・プログラムを同時に実行するように動作可能なコンピュータであって、１つまたは複数のアプリケーション・プログラムは、前記再構成可能なロジック回路を利用するためのいくつかの要求を生成し、インターフェース・プログラムは要求に応答して、１つまたは複数のアプリケーション・プログラムと前記再構成可能なロジック回路の間に共存するいくつかのプログラム・インターフェースを開き、このプログラム・インターフェースはそれぞれ前記第１のメモリに格納されたロジック・デザインのうち１つに対応するコンピュータとを備えるシステムであって、
前記再構成可能なロジック回路はインターフェース・プログラムに応答して、いくつかのインターフェース・バッファを前記第２のメモリ内に提供し、インターフェース・バッファのそれぞれはプログラム・インターフェースの１つに対応し、且つこのインターフェース・バッファは前記コンピュータと前記再構成可能なロジック回路の間を通過するデータを格納するように動作可能であるシステム。
【請求項２】
コンピュータ・インターフェースを通じて通信するように構成された再構成可能なロジック回路を含む装置であって、前記再構成可能なロジック回路は、
プログラマブル・ロジックと、
第１のロジック・デザインのための第１のインターフェース情報を格納するために前記プログラマブル・ロジックに動作可能に結合された、第１のメモリ・デバイスと、
第２のロジック・デザインのための第２のインターフェース情報を格納するために前記プログラマブル・ロジックに動作可能に結合された、第２のメモリ・デバイスと、
メモリ・インターフェース・ロジックであって、前記プログラマブル・ロジックによる前記第１のメモリにおける前記第１のインターフェース情報へのローカル・アクセス、および、前記第１のロジック・デザインによる前記プログラマブル・ロジック構成中の前記メモリ・インターフェース・ロジックを通じた前記第２のメモリにおける前記第２のインターフェース情報へのリモート・アクセスを同時に提供するように、かつアクセス・モードを変更して、前記プログラマブル・ロジックによる前記第２のメモリにおける前記第２のインターフェース情報へのローカル・アクセス、および、前記第２のロジック・デザインによる前記プログラマブル・ロジックの構成に応答しての前記メモリ・インターフェース・ロジックを通じた前記第１のメモリにおける前記第１のインターフェース情報へのリモート・アクセスを同時に提供するように構成されるメモリ・インターフェース・ロジックとを含む装置。
【請求項３】
プログラマブル・ロジック、第１のメモリ・デバイスおよび第２のメモリ・デバイスを含む再構成可能なロジック回路に結合されたコンピュータを動作すること、
第１のロジック・デザインのための第１のインターフェース情報を第１のメモリ・デバイスに格納し、第２のロジック・デザインのための第２のインターフェース情報を第２のメモリ・デバイスに格納すること、
プログラマブル・ロジックによる第１のインターフェース情報への、かつ、第１のロジック・デザインによるプログラマブル・ロジックのオペレーション中に、コンピュータによる第２のインターフェース情報へのアクセスを同時に提供すること、および、
プログラマブル・ロジックによる第２のインターフェース情報への、かつ、第２のロジック・デザインによるプログラマブル・ロジックのオペレーション中に、コンピュータによる第１のインターフェース情報へのアクセスを同時に提供することを含む方法。
【請求項４】
プログラマブル・ロジックおよびローカル・メモリを含み、前記ローカル・メモリは前記プログラマブル・ロジックのためのいくつかのロジック・デザインに関係するインターフェース情報を格納するように動作可能である再構成可能なロジック回路と、
前記再構成可能なロジック回路に結合され、１つまたは複数のプロセッサ、および前記１つまたは複数のプロセッサに結合されたメイン・メモリを含み、１つまたは複数のアプリケーション・プログラムおよびインターフェース・プログラムを実行するように動作可能であるコンピュータであって、１つまたは複数のアプリケーション・プログラムが前記再構成可能なロジック回路を利用するためのいくつかの要求を生成するように動作可能であり、インターフェース・プログラムは要求に応答して、前記プログラマブル・ロジックへのロジック・デザインの適用を制御し、インターフェース・プログラムは、前記メイン・メモリにおいて前記ローカル・メモリのオーバーフローのためのメモリ・スペースを選択的に割り振るように動作可能であるコンピュータとを含むシステム。
【請求項５】
少なくとも１つのアプリケーション・プログラムおよびインターフェース・プログラムを、プログラマブル・ロジックおよびローカル・メモリを含む再構成可能なロジック回路に結合されたコンピュータ上で実行すること、
それぞれがプログラマブル・ロジックを構成するように動作可能である、いくつかのロジック・デザインをローカル・メモリに、インターフェース・プログラムにより格納すること、
少なくとも１つのアプリケーション・プログラムと再構成可能なロジック回路の間の、それぞれがロジック・デザインのうち選択された１つに対応する２つ以上の共存するプログラム・インターフェースをインターフェース・プログラムにより、前記格納の後に開くこと、
入力データを、プログラム・インターフェースのうち選択された１つのための再構成可能なロジック回路に書き込むこと、
プログラマブル・ロジックを、ロジック・デザインのうち選択された１つにより構成すること、
入力データをプログラマブル・ロジックにより、前記構成の後に処理すること、
出力データを、プログラム・インターフェースのうち選択された１つのための再構成可能なロジック回路から、前記処理の後に読み取ること、
他のプログラム・インターフェースは開いたまま、プログラム・インターフェースのうち選択された１つを、インターフェース・プログラムによる前記読み取りの後に閉じること、および、
ロジック・デザインの第１の１つを異なるロジック・デザインで置き換えることを含む方法。
【請求項６】
再構成可能なロジック回路に結合されたコンピュータによって実行するためのいくつかの命令を格納するコンピュータ可読デバイスであって、再構成可能なロジック回路は、プログラマブル・ロジック、および、プログラマブル・ロジックを構成するようにそれぞれ動作可能ないくつかのロジック・デザインを格納するためのローカル・メモリを含み、命令は、コンピュータによって実行されたいくつかのアプリケーション・プログラムからの、再構成可能なロジック回路を利用するための要求に応答するインターフェース・プログラムを提供するように構成され、そのインターフェース・プログラムは、
それぞれが、１つまたは複数のいくつかのロジック・デザインのいくつかのインスタンスのうち対応するものによるプログラマブル・ロジックの構成を可能にする、対応する数が共存する、アプリケーション・プログラムと再構成可能なロジック回路の間のプログラム・インターフェースを開くように数回実行可能な第１のルーチンと、
前記第１のルーチンによって開かれた前記プログラム・インターフェースのうち選択された１つのための入力データを再構成可能なロジック回路に、前記インスタンスのうち前記対応するものにより構成されるときにプログラマブル・ロジックによる処理のために、提供するための第２のルーチンと、
前記インスタンスのうち前記対応するものによって構成されるときにプログラマブル・ロジックによって生成される出力データを、前記プログラム・インターフェースのうち前記選択された１つについて、再構成可能なロジック回路から要求するため第３のルーチンと、
他の前記プログラム・インターフェースを開いたまま、前記第１のルーチンにより確立された前記プログラム・インターフェースのうち指定されたものを選択的に閉じるための第４のルーチンとを含む、コンピュータ可読デバイス。
【発明の詳細な説明】
【０００１】
（関連出願の相互参照）
本願は、２０００年２月１５日出願の米国特許出願第０９／５０５，０５９号の一部継続出願であり、これは参照により本明細書に組み込まれる。
【０００２】
（背景）
本願はコンピューティング・システムに関し、より詳細には、それに限らないが、コンピュータのパフォーマンスを加速するための再構成可能なロジックを対象とする。加えて、あるいは別法として、本発明は他の応用例および技術を対象とすることができることが想定される。
【０００３】
デジタル・ロジック・デザインを大量生産に引き渡す前のテストおよび修正を容易にするために、プログラマブル・ロジック・デバイス（ＰＬＤ）が開発されている。これらのデバイスがソフトウェア・データ処理と専用ハードウェア・データ処理の間の独特なギャップを満たすので、ソフトウェア・アクセス可能なプログラマブル・ロジック・デバイスを有する入出力（Ｉ／Ｏ）モジュールをインストールすることによって既存のコンピュータ・システムを増強しようという試みがなされている。通常、これらのモジュールは１つのソフトウェア・アプリケーションのみをサポートする。さらに、これらのＩ／Ｏモジュールは、システム・プロセッサとの通信が非常に遅く、そうでない場合は望ましいであろう多数の実施にとって実際上有益にはならない傾向がある。Ｋｏｕ他の米国特許第５，９７８，８６２号、Ｔａｙｌｏｒの米国特許第５，８５７，１０９号、Ｓｈａｎｄの米国特許第５，６９２，１５９号、Ｔａｙｌｏｒの米国特許第５，５３５，３４２号、およびＢｕｔｔｓ他の米国特許第５，０３６，４７３号を、これらの構成における他の背景情報について参照する。
【０００４】
別の面では、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）集積回路開発では、シングル・チップ、マルチ・コンテキスト構成に焦点を置き始めている。Ｔｒｉｍｂｅｒｇｅｒの米国特許第６，０１１，７４０号、Ｔｒｉｍｂｅｒｇｅｒ他の米国特許第５，９７８，２６０号、ＤｅＨｏｎ他の米国特許第５，９５６，５１８号、Ｍｉｒｓｋｅｙ他の米国特許第５，９１５，１２３号、Ｔｒｉｍｂｅｒｇｅｒの米国特許第５，８３８，９５４号、Ｃｈａｔｔｅｒの米国特許第５，８３８，１６５号、Ｔｒｉｍｂｅｒｇｅｒ他の米国特許第５，６４６，５４５号、およびＴｒｉｍｂｅｒｇｅｒ他の米国特許第５，６００，２６３号が、これらのタイプのチップに関する他の情報を提供する。これらの努力にもかかわらず、これらのより複雑なデザインを実施する方法に関して課題が残っている。これらの課題は、これらの複雑なデバイスと標準のコンピューティング・システムをインターフェースすること、およびこのようなシステムを有するデバイスの管理に関して特に深刻である。
【０００５】
したがって、この技術分野における他の寄与の必要性がある。
【０００６】
（概要）
本発明の１つの態様は、ユニークなコンピューティング・システムである。他の態様には、プログラマブル・ロジックを再構成するためのユニークなシステムおよび方法が含まれる。他の態様には、再構成可能なロジック回路とインターフェースするためのユニークな技術が含まれる。なお他の態様では、再構成可能なロジックを有するユニークな装置が提供される。本発明のさらに他の態様、実施態様、目的、長所、利点、特徴および態様は、本明細書に含まれた詳細な説明および図面から明らかになるであろう。
【０００７】
（選択された実施形態の詳細な説明）
本発明の原理を理解しやすくするため、以下で図面に例示した実施形態を参照し、特定の言葉を使用してこの実施形態について述べる。しかし、それにより本発明の範囲を限定することを意図するものでないことは理解されよう。記載したデバイスにおけるいかなる変更および他の修正、および本明細書で記載した本発明の原理のいかなる他の応用例も、本発明が関連する技術分野の当業者には通常想起されるものと企図する。
【０００８】
図１は、本発明の一実施形態のコンピューティング・システム２０の概略図である。システム２０はコンピュータ２２を含む。コンピュータ２２はプロセッサ・バス２４を含み、これが中央処理装置（ＣＰＵ）２６ａ、２６ｂ、２６ｃ、２６ｄのクラスタ２５を共に動作可能に結合するように構成されている。ＣＰＵのうち４つを示す（まとめてプロセッサ２６とする）。一実施形態では、クラスタ２５は、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎにより供給された最大４つのＰＥＮＴＩＵＭ（登録商標）  ＩＩマイクロプロセッサを含み、プロセッサ・バス２４はＰＥＮＴＩＵＭ  ＩＩマイクロプロセッサ・クラスタを相互接続するために適したタイプのものである。Ｔｏｍ  Ｓｈａｎｌｅｙ著「Ｐｅｎｔｉｕｍ（登録商標）  Ｐｒｏ  ａｎｄ  Ｐｅｎｔｉｕｍ  ＩＩ  Ｓｙｓｔｅｍ  Ａｒｃｈｉｔｅｃｔｕｒｅ」（２ｄ  ｅｄ．，Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ  Ｂｏｏｋｓ，１９９８年）を、このタイプのプロセッサ・クラスタおよびバス構成についてのより多くの情報のソースとして参照し、これは参照により本明細書に組み込まれる。もう１つの実施形態では、Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎによる１つまたは複数のＰＥＮＴＩＵＭ  ＩＩＩマイクロプロセッサが、相応じて構成されたプロセッサ・バス２４と共に利用される。なお他の実施形態では、より多くのプロセッサまたはプロセッサ１つだけを利用することができる。また、他のタイプであり他のメーカによる１つまたは複数のプロセッサを使用することができる。１つの代替実施形態では、コンピュータ２２が単一のプロセッサのみを有し、プロセッサ・バス２４が非クラスタ・タイプのものである。さらに、本発明のプロセッサまたはＣＰＵが１つまたは複数のコンポーネントを含むことができ、プロセッサ・バス２４がそのオペレーションを管理するために１つまたは複数のコンポーネントを含むことができることを理解されたい。
【０００９】
コンピュータ２２はまたメモリ・コントローラ２７も含み、これはプロセッサ・バス２４に結合される。メモリ・コントローラ２７はメイン・メモリ２８をプロセッサ・バス２４に、メモリ・バス２９を介して動作可能に結合する。メモリ・コントローラ２７はメイン・メモリ２８へのアクセスを、プロセッサ・バス２４を介して管理し、１つまたは複数の専用コンポーネントの形態またはシステム２０の１つまたは複数の他のコンポーネントの一部にすることができる。メイン・メモリ２８は、揮発性または不揮発性タイプの１つまたは複数のコンポーネントからなり、サイズを変えることができる。クラスタ２５の典型的なＰＥＮＴＩＵＭ  ＩＩ構成では、メイン・メモリ２８は通常、ダイナミック・ランダム・アクセス・メモリ（ＲＡＭ）タイプであるが、メイン・メモリ２８の他の構成をクラスタ２５のためのＰＥＮＴＩＵＭ  ＩＩ構成と共に、あるいはそれなしに利用することができる。
【００１０】
コンピュータ２２はまた入出力（Ｉ／Ｏ）サブシステム３２も含む。サブシステム３２はＩ／Ｏブリッジ３０を含み、これはプロセッサ・バス２４に動作可能に結合される。Ｉ／Ｏブリッジ３０もＩ／Ｏバス３４に動作可能に結合される。Ｉ／Ｏブリッジ３０はプロセッサ・バス２４とＩ／Ｏバス３４の間の通信リンクとしての機能を果たし、バッファリング、再フォーマット、アービトレーションおよび／または他のオペレーションを提供して、バスの間で所望の通信を容易にする。Ｉ／Ｏバス３４は１つまたは複数のＩ／Ｏデバイスをプロセッサ・バス２４へ、Ｉ／Ｏブリッジ３０を介して動作可能に接続する。２つのＩ／Ｏモジュール３６ａ、３６ｂを図１に示す（まとめてモジュール３６とする）。より多くの、あるいはより少ないＩ／Ｏモジュール３６をＩ／Ｏバス３４に結合できることを理解されたい。１つの実施では、Ｉ／Ｏブリッジ３０およびメモリ・コントローラ２７が、単一のコンポーネントまたは専用のコンポーネントのセットとして結合された形態において提供されて、Ｉ／Ｏおよびプロセッサ・バス２４によるメイン・メモリ・トランザクションが管理される。コンピュータ２２は別法としてあるいは追加として、１つまたは複数の他のＩ／Ｏブリッジを含むことができ、これはＩ／Ｏバス３４および／またはプロセッサ・バス２４に結合されて、相応じて同じあるいは異なるタイプの他のＩ／Ｏバスが提供される。他の実施形態では、種類の異なるＩ／Ｏブリッジおよび／またはＩ／Ｏバスが不在である。
【００１１】
クラスタ２５のＰＥＮＴＩＵＭ  ＩＩ構成による一実施形態では、Ｉ／Ｏバス３４は標準の周辺装置相互接続（ＰＣＩ）ローカル・バス・タイプのものである。この実施形態では、Ｉ／Ｏバス３４の帯域幅がプロセッサ・バス２４の帯域幅より低い。ただし帯域幅は、所与のバスのデータ幅およびバス速度の積である（通常、周波数に関する）。また、プロセッサ・バス２４上の異なるエージェントの間のデータ転送のための待ち時間は通常、この実施形態では、プロセッサ・バス２４上のデバイスの１つとＩ／Ｏバス３４上のデバイスの１つの間のデータ転送のための待ち時間よりも少ない。本明細書では、「待ち時間」は、第１のデバイスによる、第２のデバイスからデータを受信するための要求から、この要求に応答して第１のデバイスが第２のデバイスからそのデータを受信することを開始するまでの時間の尺度を意味する（通常、バス・サイクルに関する）。したがって、データ・ブロックのための「合計転送時間」は待ち時間の関数であり、帯域幅およびデータ・ブロック・サイズの積であり、これは通常、プロセッサ・バス２４上のデバイスの間の転送の方が、プロセッサ・バス２４上のデバイスとＩ／Ｏバス３４上のデバイスの間の転送よりも少ない。
【００１２】
この実施形態はまた、プロセッサ・バス２４に結合された他のＩ／Ｏバスへの１つまたは複数の追加のＩ／Ｏブリッジを含むこともできる。別法としてあるいは追加として、Ｉ／Ｏブリッジを設けて、ＰＣＩタイプのＩ／Ｏバスを他の種類のものに結合することができ、これらはＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）および／またはＥＩＳＡ（Ｅｘｔｅｎｄｅｄ  Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）タイプなどである。ＰＥＮＴＩＵＭ  ＩＩベースの実施形態の１つの特定の例では、追加のＥＩＳＡタイプのＩ／ＯブリッジがＰＣＩ形態のＩ／Ｏバス３４に結合されて、Ｉ／Ｏバス３４がＥＩＳＡ拡張され、ＡＰＩＣ（Ａｄｖａｎｃｅｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ）バスがプロセッサ２６、および、追加のＥＩＳＡブリッジに接続されるＩ／Ｏ  ＡＰＩＣモジュールに接続される。さらに、他の実施形態では、異なるＩ／Ｏブリッジおよび／またはＩ／Ｏバス・タイプを、ＰＥＮＴＩＵＭ  ＩＩプロセッサ・クラスタを有するかあるいは有していないＩ／Ｏサブシステム３２のために利用することができ、これは当業者には想起されるものであろう。
【００１３】
Ｉ／Ｏモジュール３６ｂをさらに、不揮発性マス・メモリ・インターフェースとして示す。このインターフェースは、永続的にインストールされた、かつ／またはポータブルなコンピュータ可読デバイス３７用のものであり、これを概略的に図１に示す。デバイス３７は電磁気、光学式、半導体および／または他の種類のものにすることができ、これは当業者には想起されるものであろう。たとえば、デバイス３７は、少々例を挙げると、読み取り専用または読み書きタイプの、光学的に符号化されたコンパクト・ディスク（ＣＤ）またはデジタル・ビデオ・ディスク（ＤＶＤ）、電磁ハード・ドライブ・ディスク、ポータブル・フロッピー（登録商標）・ドライブ・ディスク、テープまたはバブル・メモリ・カートリッジ、および／または、プログラマブル読み取り専用メモリ（ＰＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能読み取り専用メモリ（ＥＥＲＯＭ）、フラッシュ、および／またはスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）タイプの不揮発性半導体カートリッジまたはカードでポータブルのバック・アップ電源を有するものにすることができる。一実施形態では、Ｉ／Ｏモジュール３６ａおよびデバイス３７をまとめてＰＣＩ／ＩＳＡ／ＩＤＥアクセラレータ・コンポーネントおよびＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）ハード・ドライブ・ユニットとする。
【００１４】
コンピュータ２２が再構成可能なロジック回路４０に、プロセッサ・バス２４によって結合される。再構成可能なロジック回路４０はプログラマブル・ロジック５０を含む。本明細書で使用する「プログラマブル・ロジック」は、複数回プログラムすることができるいかなる形態のハードウェア・ロジックをも幅広く指し、これには、それだけに限定されるものではないが、少数のみ例を挙げると、１つまたは複数のプログラマブル・ロジック・デバイス（ＰＬＤ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）および／またはダイナミカリー・プログラマブル・ゲート・アレイ（ＤＰＧＡ）が含まれる。プログラマブル・ロジック５０がインターフェース・メモリ６０に、メモリ・バス６４によって結合され、デザイン・ローディング・ロジック７０に、バス７４によって結合される。デザイン・ローディング・ロジック７０がロジック・デザイン・メモリ８０に、バス８４によって結合される。インターフェース・メモリ６０およびロジック・デザイン・メモリ８０はまとめてローカル・メモリ９０とする。一実施形態では、再構成可能なロジック回路４０がユニットとして設けられ、これは、取外し可能にコンピュータ２２のプロセッサ・バス２４とインターフェースするためのコネクタを有する。この実施形態では、再構成可能なロジック回路４０を含む１つまたは複数のコンポーネントを、共通のプリント基板に、プラガブル・カード・エッジ・コネクタにより取り付けることができる。再構成可能なロジック回路４０の多数のコンポーネントの実施形態では、このようなコンポーネントを複数のプリント基板またはカード上に取り付けることができ、あるいはそうでない場合はシステム２０全体に分散させることができる。実際に、再構成可能なロジック回路４０を、永続的にインストールされたサブシステムとして、コンピュータ２２の様々なコンポーネントと共に共有されたマザー・ボード上に設けることができる。したがって、別法として、再構成可能なロジック回路４０をコンピュータ２２の一体部分と見なすことができる。
【００１５】
加えて図２を参照して、再構成可能なロジック回路４０をさらに詳細に記載する。プログラマブル・ロジック５０はコンピュータ・インターフェース・ロジック部５４、メモリ・インターフェース・ロジック部５６およびユーザ定義プログラマブル・ロジック部５８を備える。プログラマブル・ロジック５０は、揮発性タイプの１つまたは複数のＦＰＧＡデバイスからなり、これはＸｉｌｉｎｘまたはＡｌｔｅｒａにより製造されたものなどであることが好ましいが、１つまたは複数の他のデバイス・タイプまたは異なるデバイス・タイプの組み合わせがプログラマブル・ロジック５０を含むことができる。プログラマブル・ロジック５０の揮発性構成では、コンピュータ・インターフェース・ロジック部５４および／またはメモリ・インターフェース・ロジック部５６を、電源またはリセット信号が再構成可能なロジック回路４０に印加されるとき、初期化オペレーションの一部としてプログラムすることができ、これについては以下でより十分に図３に関して記載する。
【００１６】
プログラマブル・ロジック５０のコンピュータ・インターフェース・ロジック部５４がプロセッサ・バス２４に動作可能に結合されて、コンピュータ２２の１つまたは複数のプロセッサ２６との直接の双方向通信経路が設けられる。コンピュータ・インターフェース・ロジック部５４はまたデザイン・ローディング・ロジック７０にも、バス７４によって動作可能に結合される。デザイン・ローディング・ロジック７０をロジック・デザイン・メモリ８０にバス８４で接続するので、情報をコンピュータ２２とロジック・デザイン・メモリ８０の間で、コンピュータ・インターフェース・ロジック部５４およびデザイン・ローディング・ロジック７０を介して通信することができる。ロジック・デザイン・メモリ８０は、いくつかのコア・ロジック・デザイン８６をメモリ８０に格納するように構成され、そのうちの少数を個別に図２においてコア０、コア１、コア２、．．．およびコアｎとして示した。ただし「ｎ」は格納されたコア・ロジック・デザインの総数である。デザイン８６を最初にロジック・デザイン・メモリ８０にコンピュータ２２から提供することができる。デザイン８６はそれぞれ異なる構成のユーザ定義ロジック部５８を提供する。デザイン・ローディング・ロジック７０は適切な信号またはコマンドに応答して、格納されたロジック・デザイン８６のうち選択された１つをプログラマブル・ロジック５０に、バス８４および７４を介してロードする。メモリ８０における１つまたは複数のデザイン８６を、プログラマブル・ロジック５０へ適用するためにスケジュールすることができる。
【００１７】
プログラマブル・ロジック５０のメモリ・インターフェース・ロジック部５６は、インターフェース・メモリ６０からコンピュータ２２およびユーザ定義ロジック部５８への通信経路を提供する。インターフェース・メモリ６０が動的に割り振られて、１つまたは複数の制御構造６６、スクラッチ・メモリ・スペース６７および１つまたは複数のインターフェース・バッファ６８を含む。それぞれのスケジュールされた、あるいはアクティブなデザイン８６について、制御構造６６の１つおよび１つまたは複数の対応するインターフェース・バッファ６８が割り振られて、所与のデザイン８６とコンピュータ２２の間のインターフェースに直接関係のある情報が格納される。スクラッチ・メモリ・スペース６７は、ユーザ定義ロジック５８によるアクセスのために使用可能である。
【００１８】
加えて図３を参照して、ロジック・デザイン８６によるプログラマブル・ロジック５０の構成を管理かつスケジューリングするための１つの技術を、図３の流れ図によって例示されたプロセス２１０に関連して記載する。プロセス２１０は、システム２０のリセットまたは電源オンの状態２１２から開始する。状態２１２から、オペレーション２１４で、コンピュータ２２が再構成可能なロジック回路４０を、指定されたメモリ・スペース「ＲＬ」にマップする。オペレーション２１６で、ローディング・ロジック７０が、コア０をプログラマブル・ロジック５０にメモリ８０からロードするように構成される。ロードされた後、コア０が再構成可能なロジック回路４０を、コンピュータ２２と、プロセッサ・バス２４を介してインターフェースするようにセットアップする。これはプログラマブル・ロジック５０のコンピュータ・インターフェース・ロジック部５４およびメモリ・インターフェース・ロジック部５６を定義することによって行う。通常、コア０は、プログラマブル・ロジック５０のユーザ定義ロジック部５８を指定する必要のない特殊な初期化デザインである。プロセス２１０では、デザイン・ローディング・ロジック７０およびコア・ロジック・デザイン・メモリ８０の少なくとも１部を不揮発性タイプのものにして、パワーアップ時にコンピュータ・インターフェース・ロジック部５４およびメモリ・インターフェース・ロジック部５６のローディングに備えることが望ましいことを理解されたい。一実施形態では、ローディング・ロジック７０が不揮発性のコンプレックス・プログラマブル・ロジック・デバイス（ＣＰＬＤ）、多数のデバイスのハードワイヤード・ステート・マシンなどによって提供され、メモリ８０が１つまたは複数の不揮発性フラッシュタイプのデバイスを含む。各コア・ロジック・デザイン８６を、コンピュータ・インターフェース・ロジック部５４および／またはメモリ・インターフェース・ロジック部５６をユーザ定義ロジック部５８と共に構成するようにすることができることを理解されたい。別法として、インターフェース・ロジック部５４および／または５６が、パワーアップまたはリセット状態２１２において構成された後、異なるコア・ロジック・デザイン８６によるプログラマブル・ロジック５０の後続の構成は、ユーザ定義ロジック部５８のみを変更する。さらに他の実施形態では、インターフェース・ロジック部５４、５６が不揮発性であり、初期ローディングがパワーアップ時に必要とされなくなる。
【００１９】
コンピュータ・インターフェース・ロジック部５４およびメモリ・インターフェース・ロジック部５６がオペレーション２１６において確立された後、コンピュータ２２と再構成可能なロジック５０の間の通信を、プロセッサ・バス２４を介して行うことができる。たとえば、メモリ・スペースＲＬにおけるメモリ・アドレスにアクセスすることによって、コンピュータ２２の１つまたは複数のプロセッサ２６が再構成可能なロジック回路４０に、プログラマブル・ロジック５０によって処理される入力データまたは再構成可能なロジック回路４０へのコマンドなどのインターフェース情報を書き込むことができ、プログラマブル・ロジック５０からの処理結果または再構成可能なロジック回路４０のステータスなどのインターフェース情報を読み取ることができる。コンピュータ２２はいくつかのアプリケーション・プログラム１１２およびロジック・インターフェース・プログラム１２２（図２を参照）を実行する。ロジック・インターフェース・プログラム１２２は上位レベル・インターフェース・プログラミング・レイヤを提供し、これはアプリケーション・プログラム１１２による、再構成可能なロジック回路４０を利用するための要求に応答する。ロジック・インターフェース・プログラム１２２は再構成可能なロジック回路４０と、デバイス・ドライバ・ルーチン１２４の形態における第２の下位レベルのプログラミング・レイヤを通じて通信する。デバイス・ドライバ・ルーチン１２４が、再構成可能なロジック回路４０のためのデザインの詳細まで、ロジック・インターフェース・プログラム１２２からの通信を、再構成可能なロジック回路４０によって認識されたフォーマットに変換するようにカスタマイズされる。したがって、この実施形態では、別法として、いくつかの異なるデバイス・ドライバ・ルーチン１２４を利用して、相応じて異なる再構成可能なロジック・デザインとインターフェースすることができる。これらの異なるデバイス・ドライバ・ルーチン１２４はそれぞれロジック・インターフェース・プログラム１２２と、共通プロトコルを通じて通信するが、一般に、関連する再構成可能なロジック・デザインに特有の異なる通信プロトコルを有する。他の実施形態では、同じ、より多い、あるいはより少ないプログラミング・レイヤを含む、異なるインターフェース・プログラム構成を利用することができる。実際に、１つの代替実施形態では、ロジック・インターフェース・プログラム１２２が一体としてデバイス・ドライバ・ルーチン１２４に結合されて、単一レイヤのロジック・インターフェース・プログラミングが提供される。他の代替実施形態では、ロジック・インターフェース・プログラム１２２が多数のデバイス・ドライバを、選択可能なサブルーチンの形態において含むことができ、かつ／または３つ以上のプログラミング・レイヤを含むことができる。
【００２０】
図２では、アプリケーション・プログラム１１２をＡＰＰ１、ＡＰＰ２、．．．およびＡＰＰｍと示し、ただし「ｍ」は、コンピュータ２２による同時実行を受けるアプリケーション・プログラム１１２の総数である。本明細書で使用する、２つ以上のプログラムの「同時実行」とは、コンピュータが一度にプログラムのうち１つのための命令しか実行できない場合であっても、２つ以上のプログラムの実行をコンピュータによって同時に開始かつ管理することを指す。同時実行には、それだけに限定されるものではないが、コンテキスト・スイッチ、タイム・スライシングまたは別のモードを通じた２つ以上のプログラムのマルチタスキング、および／または、各プログラムを異なるＣＰＵ上で同時に実行することによる２つ以上のプログラムのマルチプロセッシングが含まれる。
【００２１】
通常、アプリケーション・プログラム１１２は、要求されたコア・ロジック・デザイン８６とともにプログラマブル・ロジック５０による処理のための入力データを提供し、プログラマブル・ロジック５０が入力データを処理して、対応する出力データを生成する。各要求側アプリケーション・プログラム１１２のためのこの入力および出力データの管理は、ロジック・インターフェース・プログラム１２２、コンピュータ・インターフェース・ロジック部５４および／またはメモリ・インターフェース・ロジック部５６によって実行されるタスクの中のものである。
【００２２】
多数のアプリケーションに対して、再構成可能なロジック回路４０が利用されて、計算的に強化されたアルゴリズムが加速される。このようなアルゴリズムは一般に、暗号化／解読、画像処理、音声認識または合成、テレビ会議などに含まれる。アプリケーション・プログラム１１２で使用可能な様々なコア・ロジック・デザイン８６および／またはロジック・デザインのインスタンスを作成することによって、これらおよび他の一般に実行されたプロセスの加速が可能となる。一実施形態では、コンピュータ２２がＭＩＣＲＯＳＯＦＴによるＷＩＮＤＯＷＳ（登録商標）ベースのオペレーティング・システムにより動作し、ロジック・インターフェース・プログラム１２２が、ＷＩＮＤＯＷＳ互換インターフェース・プロトコルをアプリケーション・プログラム１１２のために提供するように構成される。この実施形態では、ロジック・インターフェース・プログラム１２２が標準のアプリケーション・プログラム・インターフェース（ＡＰＩ）を提供して、ＷＩＮＤＯＷＳオペレーティング・システム下で実行されたアプリケーション・プログラム１１２と通信する。それにもかかわらず、他の実施形態では、異なるオペレーティング・システムおよび／またはロジック・インターフェース・プログラム１２２に対するオペレーション・システム関係を利用することができる。
【００２３】
オペレーション２１６の後、プロセス２１０が処理／監視ループ２２０に進行する。ループ２２０で、オペレーション２３０は、オペレーション・ブロック２３２においてロジック・プログラム・インターフェース１２２による、かつオペレーション・ブロック２３４において再構成可能なロジック回路４０によるタスクの実行を含む。オペレーション・ブロック２３２で、ロジック・インターフェース・プログラム１２２が、再構成可能なロジック回路４０のメモリ・スペースＲＬへの様々な読み取り／書き込みアクセスを生成する。再構成可能なロジック回路４０はオペレーション・ブロック２３４で、コンピュータ・ロジック・インターフェース部５４を介して、これらのメモリ・アクセスを解釈し、これらに応答する。
【００２４】
オペレーション２３０の一部として、ロジック・インターフェース・プログラム１２２、コンピュータ・インターフェース・ロジック部５４またはこれらの組み合わせが、ロジック・デザイン・メモリ８０のうちアプリケーション・プログラム１１２からの要求にサービスするようにスケジュールされているコア・ロジック・デザイン８６の間で周期的に切り替えるように構成される。一実施形態では、コンテキスト・スイッチが、プログラマブル・ロジック５０の構成を１つの要求されたコア・ロジック・デザイン８６から次のものへ、各変更の間の一様な時間間隔の経過に基づいて変更することによって実行される。もう１つの実施形態では、コンテキスト・スイッチのタイミングが、コア・ロジック・デザインおよび／またはロジック・インターフェース・プログラム１２２からの入力に応じて変わる可能性がある。たとえば、これらの入力は、別のコア・ロジック・デザインと比較してより大量のデータを扱う所与のコア・ロジック・デザインを処理するための追加の時間の必要性に関係する可能性がある。さらにもう１つの実施形態では、ロジック・インターフェース・プログラム１２２が、アプリケーション・プログラム１１２による要求により効率的に、限定されたコンテキスト・スイッチと共に、あるいはそれなしで処理することによって対処することができるときを認識するように構成される。それにもかかわらず、代替実施形態は、優先度または他の入力にかかわらず、コンテキスト・スイッチを含むことができる。さらに他の実施形態は、ロジック・インターフェース・プログラム１２２の一部として、多数のコンテキスト・スイッチ・モードおよびコンテキスト・スイッチがないオプションに備える。実際に、他の実施形態では、ロジック・インターフェース・プログラム１２２が、異なるコア・ロジック・デザインの同時処理を、再構成可能なロジック回路４０に含まれた多数のプログラマブル・ロジック・デバイス５０によって扱うように構成される（図示せず）。ロジック・インターフェース・プログラム１２２はスケジューラ・ルーチンを含み、これは異なるロジック・デザイン８６によるプログラマブル・ロジック５０の構成をスケジュールかつ管理するためのものである。
【００２５】
異なるアプリケーション・プログラム要求が、同じコア・ロジック・デザインのためのものである場合にも、ロジック・インターフェース・プログラム１２２は異なる論理的または仮想プログラム・インターフェースを各アプリケーション・プログラム要求についてインスタンス化する。これは所与の要求のための入力および／または出力データが通常は異なるからである。したがって、同じコア・ロジック・デザインか異なるコア・ロジック・デザインかにかかわらず、これらの各インスタンス化または「インスタンス」が別々にロジック・インターフェース・プログラム１２２によって確立かつ維持される。ロジック・インターフェース・プログラム１２２はさらに、所与のインスタンス化またはロジック・デザインの「インスタンス」に新しいロジック・デザインのアクティベーション／ローディングが必要であるかどうか、またはそれがすでにスケジュールされているかどうかを決定するように構成される。この機能に対応して、インスタンスおよび／またはアクティブなインスタンスについて確立された仮想プログラム・インターフェースを「クライアント」としてモデリングすることができ、ロジック・インターフェース・プログラム１２２／再構成可能なロジック回路４０をこれらのクライアントのための「サーバ」としてモデリングすることができる。
【００２６】
共通コア・ロジック・デザインの多数のインスタンスを対象とする一実施例では、暗号化コア・ロジック・デザインがいくつかのアプリケーション・プログラム１１２によって要求され、これはプログラマブル・ロジック５０のユーザ定義ロジック部５８において実施される。このデザインは部分的に、あるいは完全に、再構成可能なロジック回路４０に提供されたデータを暗号化し、暗号化の結果をコンピュータ２２へ、プロセッサ・バス２４を介して戻す。このようなコア・ロジック・デザインを、異なるアプリケーション・プログラムによって数回、あるいは同じアプリケーション・プログラムによって何度も、各要求について異なる入力データにより要求できることを理解されたい。したがって、ロジック・インターフェース・プログラム１２２が各インスタンスについて別々の指示子を追跡するが、対応するユーザ定義ロジック部５８が暗号化ロジックにより構成された後、これを変更する必要はない。さらに、共通デザインの多数のインスタンスが他のデザインのスケジューリングと共に指示されるとき、ロジック・インターフェース・プログラム１２２を、これらの各インスタンスを連続的に処理して、そうでない場合にプログラマブル・ロジック５０の内外への異なるコア・ロジック・デザインのスワッピングにより起こる可能性のあるオーバーヘッドを削減するオプションを提供するように、構成することができる。それにもかかわらず、他の実施形態では、コンテキスト・スイッチを、同じデザインの多数のインスタンスについて調整することなく提供すること、またはそうでない場合は割り振りを、当業者には想起されるように調整することが、さらに有利である可能性がある。
【００２７】
ロジック・インターフェース・プログラム１２２／再構成可能なロジック回路４０は、ローカル・メモリ９０における変動する需要に対処するために必要とされるような、メイン・メモリ２８におけるオーバーフロー・メモリ・スペースの割り振りに備える。図２はオーバーフロー・メモリ・スペース１２８を示し、これは、参照番号１２８ａ、１２８ｂ、１２８ｃ、１２８ｄによって示す少数の典型的なオーバーフロー・セグメントを有する。セグメント１２８ａ、１２８ｃは、コア・ロジック・デザイン・プログラムのためのオーバーフロー・セグメントを表し、これらについてはさらに図４のルーチン３１０に関して記載する。セグメント１２８ｂ、１２８ｄはインターフェース情報オーバーフロー２および５を表し、これらはプログラマブル・ロジック５０による実行のためにスケジュールされたロジック・デザイン・インスタンス２および５に対応する。コア・ロジック・デザインまたはロジック・デザイン・インスタンスの間のコンテキスト・スイッチ中に、メモリ６０のサイズは、非アクティブ化されている間のコンテキストの所望の入力、出力および／またはステート情報を格納するために十分でない可能性がある。したがって、オーバーフロー・セグメント１２８ｂおよび１２８ｄを、プログラマブル・ロジック５０がこの特定のコンテキストを処理するために再度割り振られるまで、使用することができる。それにもかかわらず、他の実施形態では、このようなオーバーフロー・スペースが必要ではない可能性があるか、あるいは割り振られない可能性があり、その代わりにオペレーションを、再構成可能なロジック回路４０のローカル・メモリ９０における使用可能なスペースに限定する。
【００２８】
アプリケーション・プログラム１１２が再構成可能なロジック回路４０を利用するための要求が、いくつかの共存する仮想プログラム・インターフェースの結果となる可能性があることを理解されたい。これらの各仮想プログラム・インターフェースは再構成可能なロジック回路４０と、各ロジック・デザイン・インスタンスを論理ファイルに比較可能な方法において処理するロジック・インターフェース・プログラムの標準ルーチンまたはファンクションのセットを通じて通信する。これらのルーチンは、図３におけるオペレーション・ブロック２３２の一部としてリストされる。ロジック・インターフェース・プログラム１２２は仮想プログラム・インターフェースをファイルのような方法において管理する。ロジック・インターフェース・プログラム１２２はこれらの標準コマンド／ファンクションを、デバイス・ドライバ・ルーチン１２４を通じて通信する。デバイス・ドライバ・ルーチン１２４が各読み取りまたは書き込みアクセスを生成し、これに再構成可能なロジック回路４０が応答する。プログラマブル・ロジック５０のコンピュータ・インターフェース・ロジック部５４はプロセッサ・バス２４を、デバイス・ドライバ・ルーチン１２４によるメモリ・スペースＲＬへの適切な読み取りまたは書き込みアクセスについて監視する。有効なアクセスが検出された場合、再構成可能なロジック回路４０は、コンピュータ２２によって通信されたコマンド、要求またはデータに従って応答する。
【００２９】
オペレーション２３２、２３４をさらに、以下のようなロジック・インターフェース・プログラム１２２の様々なルーチンのために実行されるタスクに関して記載する。新しいコア・ロジック・デザインが再構成可能なロジック回路４０にコンピュータ２２から、Ｃｒｅａｔｅ（Ｃｏｒｅ  Ｄｅｓｉｇｎ）ルーチン３１０によりロードされ、これについてはさらに図４の流れ図に関して記載する。ルーチン３１０は指定ステージ３１２により開始する。ステージ３１２から、ルーチン３１０は条件３１４に進行し、ここでメモリ・スペースがロジック・デザイン・メモリ８０において使用可能であるかどうかを決定する。一実施形態では、このテストがロジック・インターフェース・プログラム１２２によって実行され、これがリセットまたは電源オンの状態２１２以来、ロジック・デザイン・メモリ８０において使用可能なメモリ・スペースの量の記録を維持する。代替実施形態では、このテストを部分的にあるいは完全にコンピュータ・インターフェース・ロジック部５４および／またはデザイン・ローディング・ロジック７０によって実行することができる。メモリ・スペースがロジック・デザイン・メモリ８０において使用可能であった場合、ルーチン３１０がステージ３２２に進行して、ステージ３２２で新しいロジック・コア・デザインをロジック・デザイン・メモリ８０にプッシュする。ステージ３２２の実行は、新しいコア・ロジック・デザインをロジック・インターフェース・プログラム１２２の制御下で、メイン・メモリ１２８および／またはコンピュータ可読デバイス３７などのＩ／Ｏデバイスからロジック・デザイン・メモリ８０へ、コンピュータ・インターフェース・ロジック部５４、バス７４、ローディング・ロジック７０およびバス８４を介して転送することを含む。
【００３０】
ルーチン３１０はステージ３２４に進行する。ステージ３２４で、ロジック・インターフェース・プログラム１２２が一意の識別（ＩＤ）を、ロジック・デザイン・メモリ８０において格納された新しいコア・ロジック・デザインについて割り当て、これをロジック・インターフェース・プログラム１２２の他のルーチンにおいて使用することができる。次いで、ルーチン３１０が停止し、図３のプロセス２１０のオペレーション２３０に戻る。オペレーション２３０から、プロセス２１０が条件２３６に進行する。条件２３６は、パワーダウンまたはリセットが起こっているかどうかをテストする。パワーダウンまたはリセットの状態が起こっていない場合、ループ２２０がオペレーション２３０に戻るように行われて、オペレーション・ブロック２３２においてロジック・インターフェース・プログラム１２２の、かつオペレーション・ブロック２３４において再構成可能なロジック回路４０の次のタスクが処理される。パワーダウンまたはリセットの状態が起こっていた場合、プロセス２１０が停止する。
【００３１】
図４の条件３１４に戻ると、スペースがロジック・メモリ８０において使用可能でなかった場合、ルーチン３１０が条件３１６に進行する。条件３１６は、オーバーフロー・メモリ・スペース１２８がメイン・メモリ２８において使用可能かどうかをテストする。図２に示すように、オーバーフロー・メモリ・スペース１２８がそれぞれコアＸおよびコアＹロジック・デザインのためのオーバーフロー・セグメント１２８ａおよび１２８ｂを含む。オーバーフロー・スペースが使用可能でなかった場合、ルーチン３１０がステージ３１８に進行し、ここでＣｒｅａｔｅファンクションの障害を示し、対応する指示を返す。ステージ３１８から、ルーチン３１０が停止し、制御がプロセス２１０のオペレーション２３０に戻る。
【００３２】
条件３１６によってテストされたとき、オーバーフロー・メモリ・スペースがメイン・メモリ２８において使用可能であると決定された場合、ルーチン３１０がステージ３２０に進行する。ステージ３２０で、ロジック・インターフェース・プログラム１２２が、最低使用頻度のコア・ロジック・デザインをメイン・メモリ２８に転送するように指示する。図２では、コアＸまたはコアＹをこのようなデザインにすることができる。どのロジック・デザインが最低使用頻度かについての決定は、ロジック・インターフェース・プログラム１２２によるインターフェース・メモリ６０への参照を含み、これはプログラマブル・ロジック５０のメモリ・インターフェース・ロジック部５６を通じて行われ、これについてはより詳細に以下で図５に示すルーチン４１０の流れ図および図６のメモリ図に関して説明する。ステージ３２０の後、ルーチン３１０がステージ３２２および３２４で、先に記載したように再開する。次いで、ルーチン３１０が停止し、制御が図３に示すプロセス２１０のオペレーション２３０に戻る。
【００３３】
ルーチン３１０を数回繰り返して、いくつかの所望のコア・ロジック・デザイン８６をメモリ８０に適切にローディングすることに備えることができる。所望のロジック・デザイン８６がメモリ８０に格納された後、そのデザインに対する仮想プログラム・インターフェースが確立され、これはロジック・デザインのインスタンスをＯｐｅｎ（ＩＤ，ＰＬ）ルーチン４１０によりアクティベート（インスタンス化）することによって行われ、これについてはさらに図５の流れ図および図６のメモリ図に関して記載する。ルーチン４１０はステージ４１２で開始し、ただし「ＩＤ」は、先にＣｒｅａｔｅ（Ｃｏｒｅ  Ｄｅｓｉｇｎ）ルーチン３１０により作成されたコア・ロジック・デザインのＩＤであり、「ＰＬ」は選択された優先度レベルである。ステージ４１２から、ルーチン４１０がステージ４１３に進行し、ここでコア・ロジック・デザインＩＤのインスタンスのための論理／仮想プログラム・インターフェースを、ロジック・インターフェース・プログラム１２２により確立する。ステージ４１３はまた一意のインスタンス識別子ＩＩＤをそのインスタンスについて割り当てる。ステージ４１３でプログラム・インターフェースを開いた後、ルーチン４１０が条件４１４に進行して、プログラマブル・ロジック５０が、新たに開かれたインスタンスＩＩＤに対応するコア・ロジック・デザインＩＤを実行するために使用可能であるかどうかをテストする。それが使用可能であった場合、ステージ４１６で、ＩＤによって指定されたコア・ロジック・デザインがプログラマブル・ロジック５０にロードされる。それが使用可能でなかった場合、ステージ４１８で、ロジック・インターフェース・プログラム１２２のスケジューラ・ルーチンが実行されて、ＩＤによって指定されたコア・ロジック・デザインのアクティブ・インスタンスが、その割り当てられた優先度レベルＰＬに従ってスケジュールされる。ステージ４１６または４１８のいずれかが完了された後、ルーチン４１０が停止し、制御がプロセス２１０のオペレーション２３０に戻る。
【００３４】
ステージ４１６または４１８のどちらがルーチン４１０によって実行されるかにかかわらず、メモリ８０に格納されたコア・ロジック・デザインＩＤがアクティベートされて、即時にプログラマブル・ロジック５０にローディング・ロジック７０を介してロードされるか、あるいはこのようなロディングのためにスケジュールされる。このローディング・プロセスは、適切な指示をロジック・インターフェース・プログラム１２２から、デバイス・ドライバ・ルーチン１２４を介してデザイン・ローディング・ロジック７０へ、コンピュータ・インターフェース・ロジック部５４を通じて送信することを含む。次いで、デザイン・ローディング・ロジック７０が、ＩＤによって指定された適切なコア・ロジック・デザイン８６を、バス８４および７４を介して、即時にステージ４１６のために、あるいはステージ４１８において確立されたスケジュールに従って送信する。Ｃｒｅａｔｅ（Ｃｏｒｅ  Ｄｅｓｉｇｎ）ルーチンの場合のように、Ｏｐｅｎ（ＩＤ）ルーチンを数回繰り返して、いくつかの共存するプログラム・インターフェースを異なるロジック・デザイン・インスタンスのために確立することができる。他の実施形態では、Ｃｒｅａｔｅ（Ｃｏｒｅ  Ｄｅｓｉｇｎ）およびＯｐｅｎ（ＩＤ）のオペレーションを、他のオペレーションを伴うかあるいは伴わない単一のルーチンまたはファンクションに結合できることを理解されたい。この結合手法の１つの形態では、新しいコア・ロジック・デザインが再構成可能なロジック回路４０にロードされ、ロジック・デザイン・インスタンスがルーチンに応答してインスタンス化される。同じプログラムをロードしようとする後続の試みでは、新しいインスタンスをインスタンス化するが、デザインをリロードしない。
【００３５】
加えて図６を参照すると、コア・ロジック・デザイン８６のうち１つのインスタンスＩＩＤの各確立により、ロジック・インターフェース・プログラム１２２が、対応する制御構造６６およびインターフェース・バッファ６８の確立も、プログラマブル・ロジック５０のコンピュータ・インターフェース・ロジック部５４およびメモリ・インターフェース・ロジック部５６を介して指示する。上から下に向かって、メモリ６０がその最下位アドレスからその最上位アドレスまで図示される。ルーチン４１０に従って開かれている各インスタンスＩＩＤについて、対応するコア・ロジック・デザインのための制御構造が、下位メモリから上位メモリに向けて追加され、ただし、構造６６の間の省略符号は類似の構造を表し、これらは明瞭さを保つために図示しない。メモリ６０の最上位アドレスから下位アドレスに向けて、インターフェース制御バッファ６８が、コア・メモリ・デザインの各インスタンスＩＩＤについてセットで割り振られる。再度、省略符号をインターフェース・バッファ６８の間に示して類似のバッファを表し、これらは明瞭さを保つために特に例示しない。制御構造６６とインターフェース・バッファ６８の間にスクラッチ・メモリ・スペース６７を例示し、これは割り振られた制御構造６６およびインターフェース・バッファ６８の数に応じてサイズが動的に変化する。
【００３６】
図６はより詳細に、制御構造６６のうち１つについての典型的な制御構造エントリ・セット６９ａを例示する。セット６９ａのエントリは、指定されたコア１ロジック・デザイン（ＩＤ＝コア１）のためのインターフェース情報を格納するように構成される。エントリ６６ａは一意の識別子を指定して、コア１を特定のインスタンスのための対応するロジック・デザインとして指定する。エントリ６６ｂは、インスタンスＩＩＤを最後に使用した時間を指定するデータを含む。エントリ６６ｂにおける情報を参照して、ルーチン３１０のステージ３２０でどのロジック・デザインが最低使用頻度のものであるかを決定することができる。
【００３７】
図６はまたより詳細に、典型的なインターフェース・バッファ・セット６９ｂも例示する。インターフェース・バッファ・セット６９ｂはインターフェース・バッファ６８を含み、これはコア１ロジック・デザインのロジック・デザイン・インスタンスＩＩＤに、制御構造エントリ・セット６９ａと共に割り振られる。制御構造エントリ・セット６９ａのエントリ６６ｃは、セット６９ｂの入力バッファ６８ａのインターフェース・メモリ６０における開始アドレスを指定するポインタである。セット６９ａのエントリ６６ｄは入力バッファ６８ａのサイズを指定する。したがって、入力バッファ６８ａは、対応する制御構造６６のエントリ６６ｃ、６６ｄを通じて割り振られる。データが入力バッファ６８ａに、コンピュータ２２によって格納され、これは、コア１ロジック・デザインの要求されたインスタンスＩＩＤによって、以下でさらに記載するＷｒｉｔｅ（ＩＩＤ）ファンクションを介して処理するためである。
【００３８】
制御構造エントリ・セット６９ａのエントリ６６ｅは、インターフェース・バッファ・セット６９ｂの出力バッファ６８ｂの開始アドレスへのポインタである。エントリ６６ｆは、出力バッファ６８ｂのサイズを指定する。したがって、出力バッファ６８ｂは、対応する制御構造６６のエントリ６６ｅ、６６ｆを通じて割り振られる。データが出力バッファ６８ｂからコンピュータ２２によって、以下でさらに記載するＲｅａｄ（ＩＩＤ）ファンクションにより読み取られる。この出力データは、入力バッファ６８ａにおけるデータを、インスタンスＩＩＤのためのコア１ロジック・デザインにより処理することによって得られた結果を含む。
【００３９】
制御構造エントリ・セット６９ａのエントリ６６ｇは、インターフェース・バッファ・セット６９ｂのステート・バッファ６８ｃの開始アドレスを指定する。制御構造６６ａのエントリ６６ｈはステート・バッファ６８ｃのサイズを指定する。ステート・バッファを、コンテキスト・スイッチ中の中間結果の格納のために使用して、入力バッファ６８ａおよび／または出力バッファ６８ｂのためのオーバーフローを提供することができ、あるいはそうでない場合は当業者には想起されるように使用することができる。
【００４０】
メモリ６０の他の制御構造６６およびインターフェース・バッファ６８はそれぞれ各インスタンスＩＩＤについてセット６９ａ、６９ｂと同様に構成される。他の実施形態では、制御構造６６のためのエントリの数およびタイプが変わる可能性がある。同様に、インターフェース制御バッファ６８の数およびタイプが、数およびタイプにおいて異なる可能性があり、実際には、異なるコア・ロジック・デザインまたはロジック・デザイン・インスタンスでは、あるものから次のものへと変わる可能性がある。１つの変形形態では、共通のバッファがインスタンスＩＩＤによって入力および出力データを格納するために使用される。異なる各インスタンスＩＩＤのための制御構造６６における値の割り振りおよび格納を、ロジック・インターフェース・プログラム２２によって、デバイス・ドライバ・ルーチン１２４、コンピュータ・インターフェース・ロジック部５４、メモリ・インターフェース・ロジック部５６またはこれらの組み合わせを介して実行かつ管理することができる。したがって、スクラッチ・スペース６７の割り振りは、各制御構造６６によって定義されたバッファのサイズ、位置および数から引き続く。
【００４１】
再度、図３に示すプロセス２１０のオペレーション２３０を参照して、オペレーション・ブロック２３２のＷｒｉｔｅ（ＩＩＤ）ファンクションをさらに、図７の流れ図において詳述したルーチン５１０ａに関して記載する。Ｗｒｉｔｅ（ＩＩＤ）ルーチン５１０ａが実行されて、要求側アプリケーション・プログラム１１２からの入力データが提供され、これは再構成可能なロジック回路４０によってロジック・インターフェース・プログラム１２２およびデバイス・ドライバ・ルーチン１２４を介して処理するためのものである。Ｗｒｉｔｅ（ＩＩＤ）ファンクションは、対応するインスタンスＩＩＤがインスタンス化された後にのみ実行される。ステージ５１２ａにおける指示から、ルーチン５１０ａが条件５１４ａに進行する。条件５１４ａで、ルーチン５１０ａが、特定のコア・ロジック・デザインＩＩＤが再構成可能なロジック回路４０のハードウェアによる実行のための優先度を有するかどうかをテストする。このような優先度は動的あるいは静的にすることができ、１つまたは複数の要素に基づくようにすることができる。このような要素には、少々例を挙げると、様々なアクティブ・インスタンスＩＩＤの相対的優先度レベルＰＬ、所与のインスタンスＩＩＤにハードウェア優先度が与えられて以来の時間量、再構成可能なロジック回路４０の利用の度合い、および／またはソフトウェア・ルーチンの代替物の可用性が含まれる可能性がある。１つの形態では、優先度が、１つまたは複数のこれらの要素に基づいて時々更新されるステータス・フラグに基づいて決定される。
【００４２】
コア・ロジック・デザイン・インスタンスＩＩＤが、条件５１４ａによってテストされたとき、優先度を有する場合、ルーチン５１０ａが条件５１６ａに進行し、ここで対応するコア・ロジック・デザインＩＤがプログラマブル・ロジック５０にロードされるかどうかをテストする。ＩＤによって指定されたコア・ロジック・デザインがロードされなかった場合、ステージ５１８ａが行われ、ここでＩＤによって指定された適切なコア・ロジック・デザインがプログラマブル・ロジック５０に、ロジック・インターフェース・プログラム１２２のスケジューラ・ルーチンに従って切り替えられるまで待機する。通常、この待機は次のコンテキスト・スイッチのためのものである。次にステージ５１９ａに進行し、ここでＷｒｉｔｅ（ＩＩＤ）のオペレーションについて処理されるデータが、インターフェース・バッファ６８の対応する入力バッファにプッシュされる。条件５１６ａのテストが肯定的であった場合、すなわち、所望のコア・ロジック・デザインＩＤがすでにプログラマブル・ロジック５０にロードされている場合、ルーチン５１０ａが直接ステージ５１９ａに、条件５１６ａの肯定的分岐から進行する。
【００４３】
次いで、ルーチン５１０ａが条件５２０ａにおけるプロトコル・テストにより再開する。条件５２０ａで、特定のコア・ロジック・デザインが即時にルーチン５１０ａの一部、「イーガー（ｅａｇｅｒ）・プロトコル」として適用されるかどうかを決定する。所与のインスタンスＩＩＤのためのプロトコルが、条件５２０ａによってテストされたとき、イーガー・タイプのものであった場合、ルーチン５１０ａがステージ５２２ａに進行して、対応するコア・ロジック・デザインを適用する。次いで、ルーチン５１０ａがプロセス２１０に戻り、次のオペレーションを待機する。同様に、条件５２０ａのテストが否定的であった場合、すなわち、プロトコルがイーガー・タイプのものでなかった場合、ルーチン５１０ａが直接プロセス２１０に、条件５２０ａの否定的分岐から戻る。
【００４４】
条件５１４ａに戻ると、インスタンスＩＩＤがハードウェア実行のための優先度を有していなかった場合、ルーチン５１０ａがステージ５３０ａに進行する。ステージ５３０ａで、インスタンスＩＩＤが優先度を有していた場合に再構成可能なロジック回路４０によって処理されていたであろう入力データが、その代わりに、対応するコア・ロジック・デザインＩＤをエミュレートするソフトウェア・ルーチンに提供される。この入力データを対応するソフトウェア入力バッファに、エミュレーション・ルーチンのために格納することができる。次に、条件５３２ａに進行し、ここで条件５２０ａと同じプロトコル・テストを実行する。条件５３２ａによってテストされたとき、プロトコルがイーガー・タイプのものであった場合、ステージ５３４ａで、ソフトウェア・エミュレーション・ルーチンが適用される。次いで、Ｗｒｉｔｅ（ＩＩＤ）ルーチン５１０が戻る。同様に、プロトコル・タイプがイーガー・タイプのものでなかった場合、ルーチン５１０が条件５３２ａの否定的分岐から直接戻る。
【００４５】
オペレーション・ブロック２３２のＲｅａｄ（ＩＩＤ）ファンクションをさらに、図８の流れ図において詳述したルーチン５１０ｂに関して記載する。Ｒｅａｄ（ＩＩＤ）ルーチン５１０ｂが実行されて、ルーチン５１０ａに従って１つまたは複数のＷｒｉｔｅ（ＩＩＤ）ファンクションの実行を通じて先に入力されたデータの処理に関係する出力データが得られる。同様に、Ｒｅａｄ（ＩＩＤ）ファンクションは、対応するインスタンスＩＩＤがインスタンス化された後にのみ実行される。ステージ５１２ｂにおける指示から、ルーチン５１０ｂが条件５１４ｂに進行する。条件５１４ｂで、ルーチン５１０ａの条件５１４ａと同じテストを実行する。これは特定のコア・ロジック・デザインＩＩＤが再構成可能なロジック回路４０のハードウェアによる実行のための優先度を有するかどうかに関するものである。コア・ロジック・デザイン・インスタンスＩＩＤが、条件５１４ｂによってテストされたとき、優先度を有する場合、ルーチン５１０ｂが条件５１６ｂに進行し、ここで対応するコア・ロジック・デザインＩＤがプログラマブル・ロジック５０にロードされるかどうかをテストする。ＩＤによって指定されたコア・ロジック・デザインがロードされなかった場合、オペレーション５１８ｂが行われ、ここでＩＤによって指定された適切なコア・ロジック・デザインがプログラマブル・ロジック５０に、ロジック・インターフェース・プログラム１２２のスケジューラ・ルーチンに従って切り替えられるまで待機する。通常、この待機は次のコンテキスト・スイッチのためのものである。次いで、ルーチン５１０ｂが条件５２０ｂで再開する。条件５１６ｂのテストが肯定的であった場合、すなわち、所望のコア・ロジック・デザインＩＤがすでにプログラマブル・ロジック５０にロードされている場合、ルーチン５１０ｂが直接、条件５２０ｂに、条件５１６ｂの肯定的分岐から進行する。
【００４６】
条件５２０ｂが、ルーチン５１０ａの条件５２０ａ、５３２ａと同じく、インスタンスＩＩＤがイーガー・タイプのものであるかどうかを決定するためのプロトコル・テストを提供する。所与のインスタンスＩＩＤがイーガー・タイプのものでなかった場合、ステージ５２２ｂに進行し、ここで対応するコア・ロジック・デザインを適用する。ルーチン５１０ｂがステージ５４０ｂに進行する。インスタンスＩＩＤが、条件５２０ｂによってテストされたとき、イーガー・タイプのものであった場合、ルーチン５１０ｂが直接、条件５２０ｂの肯定的分岐からステージ５４０ｂに進行する。ステージ５４０ｂで、処理された出力データが、インターフェース・バッファ６８の対応する出力バッファから、インターフェース・プログラム１２２によって、デバイス・ドライバ・ルーチン１２４を介してプルされて、対応するアプリケーション・プログラム１１２に戻される。
【００４７】
条件５１４ｂに戻ると、インスタンスＩＩＤがハードウェア実行のための優先度を有していなかった場合、ルーチン５１０ｂが条件５３２ｂに進行し、ここで条件５２０ｂと同じプロトコル・テストを実行する。条件５３２ｂのテストが否定的であった場合、すなわちイーガーでない（ｎｏｎｅａｇｅｒ）インスタンスＩＩＤであった場合、ルーチン５１０ｂがステージ５３４ｂに進行してエミュレーション・ソフトウェアを適用する。ルーチンがステージ５３４ｂからステージ５４２ｂに進行して、出力データを、コア・ロジック・デザインをエミュレートするソフトウェア・ルーチンによって生成された要求側アプリケーション・プログラム１１２に提供する。条件５３２ｂのテストが肯定的であった場合、すなわち、インスタンスＩＩＤがイーガーであった場合、ルーチン５１０ｂが直接、ルーチン５３２ｂの肯定的分岐からステージ５４２ｂに進行する。ルーチン５１０ｂはプロセス２１０へ、ステージ５４２ｂの実行の後に戻る。
【００４８】
図７および８を参照すると、イーガー・タイプのインスタンスＩＩＤは、Ｗｒｉｔｅ（ＩＩＤ）ルーチン５１０ａの実行の一部として、それぞれステージ５１９ａまたは５３０ａにおける関連するデータ入力の、ステージ５２２ａまたは５３４ａにおける処理に有利である。したがって、データがすでに処理されているので、Ｒｅａｄ（ＩＩＤ）ルーチン５１０ｂの対応するステージ５４０ｂ、５４２ｂでは検索することのみが必要である。対照的に、イーガーでないタイプのインスタンスＩＩＤでは、Ｗｒｉｔｅ（ＩＩＤ）ルーチン５１０ａがそれぞれ５１９ａまたは５３０ａにおけるデータを適用なしで入力する。その代わりに、Ｒｅａｄ（ＩＩＤ）ルーチン５１０ｂが入力データをそれぞれステージ５２２ｂまたは５３４ｂで処理する。
【００４９】
Ｃｌｏｓｅ（ＩＩＤ）ルーチン６１０を、図９の流れ図において詳述する。これは、Ｏｐｅｎ（ＩＤ）ルーチンにより確立されたロジック・デザインＩＤの開いたインスタンスＩＩＤを選択的に閉じるように実行される。識別子６１２から、ルーチン６１０がステージ６１３に進行する。ステージ６１３で、コア・ロジック・デザイン・インスタンスＩＩＤが閉じられる。ルーチン６１０が条件６１４で再開する。条件６１４で、ロジック・インターフェース・プログラム１２２が、ＩＩＤが対応するコア・ロジック・デザインＩＤの唯一のインスタンスであったかどうかをテストする。これが唯一のインスタンスであった場合、ルーチン６１０がステージ６１５に進行する。ステージ６１５では、フラグが設定されて、再構成可能なロジック４０が別のデザインを受け入れることができることが指示される。このフラグをルーチン３１０の条件３１４および／または３１６について読み取り、新しいロジック・デザインをロードできるかどうかを決定することができる。次いで、ルーチン６１０がステージ６２５または条件６１４についての否定的結果から条件６１６に進行して、プログラマブル・ロジック５０を利用するために保留中である要求があるかどうかを決定する。このような要求は、ロジック・インターフェース・プログラム１２２のためのスケジューラ・ルーチンの一部として維持される。保留中の要求がなかった場合、ステージ６１８が行われて、プログラマブル・ロジック５０の可用性を指示するフラグが設定される。このフラグを、ルーチン４１０の条件４１４を実行するときに読み取り、ロジック・デザインを実行できるかどうかを決定することができる。保留中の要求があった場合、ステージ６２０が行われる。ステージ６２０で、ロジック・インターフェース・プログラム１２２がそのスケジューラ・ルーチンを実行して、別のコア・ロジック・デザインをプログラマブル・ロジック５０にロードするか、あるいは別のインスタンスＩＩＤにサービスする。条件６１６で決定されたように、ステージ６１８または６２０のいずれかの実行から、ルーチン６１０が停止し、図３に示したプロセス２１０のオペレーション２３０に戻る。
【００５０】
オペレーション２３２のＲｅｌｅａｓｅ（ＩＤ）ルーチン７１０を、図１０に示す流れ図によってさらに詳述する。ルーチン７１０は、Ｃｒｅａｔｅ（Ｃｏｒｅ  Ｄｅｓｉｇｎ）ルーチン３１０により確立されたコア・ロジック・デザインＩＤのために取っておかれたリソースをリリースするように実行され、コア・ロジック・デザインＩＤのためのすべてのインスタンスＩＩＤを最初にＣｌｏｓｅ（ＩＩＤ）ルーチン６１０により閉じることを必要とする。識別子７１２から、ルーチン７１０がステージ７１４に進行して、コア・ロジック・デザイン識別子ＩＤを、異なるコア・ロジック・デザインによる使用のために解放する。次いで、ルーチン７１０がステージ７１６に進行して、リリースされたコア・ロジック・デザインを、ロジック・デザイン・メモリ８０におけるストレージおよびメイン・メモリ２８に含まれたいかなるオーバーフロー・スペースからもパージする。このパージは、関連するメモリ・スペースに、後続のデザインによって上書きされるように、かつ／またはロジック・デザイン情報を消去するためのアクションを取るようにマークすることによって、実施することができる。ステージ７１６の後、ルーチン７１０が停止し、制御をプロセス２１０のオペレーション２３０に戻す。他の実施形態では、Ｃｌｏｓｅ（ＩＩＤ）およびＲｅｌｅａｓｅ（ＩＤ）のオペレーションを、他のオペレーションを伴うかあるいは伴わない単一のルーチンまたはファンクションに結合することができることを理解されたい。１つの形態では、コア・ロジック・デザインＩＤのすべてのインスタンスＩＩＤが閉じられ、コア・ロジック・デザイン・メモリ・スペースが、この結合されたルーチンの実行に応答してリリースされる。
【００５１】
図１１は、本発明のもう１つの実施形態の再構成可能なロジック回路１４０を例示し、類似の参照番号は、先に記載した実施形態の類似の機能を表す。再構成可能なロジック回路１４０はシステム２０の再構成可能なロジック回路４０と交換可能である。再構成可能なロジック回路１４０は、コンピュータ２２とインターフェースするプログラマブル・ロジック１５０を含み、このようなインターフェースは、たとえば、システム２０の場合のようにプロセッサ・バス２４への結合によるものにすることができる。プログラマブル・ロジック１５０はコンピュータ・インターフェース・ロジック１５４、メモリ・インターフェース・ロジック１５６およびユーザ定義ロジック部５８を含む。コンピュータ・インターフェース・ロジック１５４はコンピュータ２２へプロセッサ・バス２４によって、かつローディング・ロジック１７０へバス１７４によって結合され、これは再構成可能なロジック回路４０のコンピュータ・インターフェース・ロジック部５４、バス７４およびデザイン・ローディング・ロジック７０について記載したものに類似した方法による。
【００５２】
メモリ・インターフェース１５６はインターフェース・メモリ１６０に、メモリ・バス１６４ａおよび１６４ｂによって結合される。インターフェース・メモリ１６０は２つのデバイス、メモリ・デバイス１６０ａおよびメモリ・デバイス１６０ｂからなる。各メモリ・デバイス１６０ａおよび１６０ｂは１つまたは複数の対応する制御構造１６６ａ、１６６ｂ、スクラッチ・スペース１６７ａ、１６７ｂおよびインターフェース・バッファ１６８ａ、１６８ｂをそれぞれ含む。図示の実施例では、メモリ・デバイス１６０ａがコア１ロジック・デザインのための制御構造１６６ａおよびインターフェース・バッファ１６８ａを格納し、メモリ・デバイス１６０ｂがコア２ロジック・デザインのための制御構造１６６ｂおよびインターフェース・バッファ１６８ｂを格納する。メモリ・インターフェース１５６が区分され、ユーザ定義ロジック部１５８がデバイス１６０ａ、１６０ｂのうち一方に、バス１６４ａ、１６４ｂのうち一方においてアクセスできるようにし（ローカル・アクセス・モード）、同時にコンピュータ２２がデバイス１６０ａ、１６０ｂのうち他方に、バス１６４ａ、１６４ｂの他方においてアクセスできるようにする（リモート・アクセス・モード）。たとえば、コア１デザインにより構成される間のプログラマブル・ロジック１５０のオペレーション中に、ユーザ定義ロジック部５８がローカルでスクラッチ・スペース１６７ａおよび／またはインターフェース・バッファ１６８ａにアクセスすることができ、コンピュータ２２がリモートでデバイス１６０ｂに同時にアクセスすることができる。同様に、コア２ロジック・デザインにより構成されたプログラマブル・ロジック１５０のオペレーション中に、ユーザ定義ロジック部５８がローカルでスクラッチ・スペース１６７ｂおよび／またはインターフェース・バッファ１６８ｂにアクセスすることができ、コンピュータ２２がリモートでデバイス１６０ａに同時にアクセスすることができる。
【００５３】
この並列アクセス能力により、ロジック・インターフェース・プログラム１２２がデバイス１６０ａ、１６０ｂのうち第１の１つに関するインターフェース情報を送信／受信することができ、同時にプログラマブル・ロジック１５０のユーザ定義ロジック部５８の実行が、デバイス１６０ａ、１６０ｂのうち第２の１つのインターフェース情報および／またはスクラッチ・スペース１６７ａ、１６７ｂを利用する。したがって、コンピュータ２２のみ、あるいはユーザ定義ロジック部５８によるインターフェース・メモリ６０へのアクセスが所与の時間に許可される技術に比較して、より高い効率を実現することができる。通常、コンピュータ２２およびユーザ定義ロジック部５８がデバイス１６０ａまたは１６０ｂのうち一方へのアクセスをシーク中であるとき、コンピュータ２２によるリモート・アクセスに優先度が与えられる。
【００５４】
多数のインスタンスのための多数の制御構造および対応するインターフェース・バッファをメモリ・デバイス１６０ａおよび１６０ｂのいずれかに格納できることを理解されたい。このような構成では、コンテキスト・スイッチを、各デバイス１６０ａおよび１６０ｂについてローカルおよびリモート・アクセス・モードの間で交互に切り換えるように構成することができる。非限定的な例として、コア１ロジック・デザイン、コア２ロジック・デザイン、コア３ロジック・デザインおよびコア４ロジック・デザインのシーケンスを有する４つの異なるロジック・デザインの間のコンテキスト・スイッチでは、コア１およびコア３ロジック・デザインのためのインターフェース情報をメモリ・デバイス１６０ａに格納することができ、コア２よびコア４ロジック・デザインのためのインターフェース情報をメモリ・デバイス１６０ｂに格納することができ、ローカル／リモート・アクセスの交互の切り換えが得られる。別法としてあるいは追加として、それぞれ分離したアクセス・バスを有する３つ以上のメモリ・デバイスを、実行中の特定のコア・ロジック・デザインに対応して、ローカルおよびリモート・アクセス・モードにより動作させることができる。
【００５５】
コンピュータ・インターフェース・ロジック１５４はまたローディング・ロジック１７０にも、バス１７４を介して結合される。ローディング・ロジック１７０はロジック・デザイン・メモリ１８０に、バス１８４を介して結合される。ロジック・デザイン・メモリ１８０は１つまたは複数の揮発性メモリ・デバイス１８０ａおよび１つまたは複数の不揮発性メモリ・デバイス１８０ｂを含む。一実施形態では、１つまたは複数の不揮発性メモリ・デバイス１８０ｂが少なくとも１つのフラッシュ・メモリ・デバイスを、コア・ロジック・デザインの初期格納のために含む。１つまたは複数の揮発性メモリ・デバイス１８０ａは、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、これらの組み合わせおよび／または当業者には想起されるであろうこのような他のタイプのメモリを含むことができる。制限は通常、デバイス１８０ｂのフラッシュ・メモリを書き換えることができる回数に関して存在するので、１つまたは複数の揮発性デバイス１８０ａが、コア・ロジック・デザインを格納するための別の手段として機能することができ、それによりこれを利用してこのような制限に到達する可能性を低減することができる。一実施形態では、揮発性デバイス１８０ａが、不揮発性デバイス１８０ｂに格納されたコア・ロジック・デザインに比較してより頻繁に変化するように予想されるコア・ロジック・デザインのために、ストレージを提供するように構成される。したがって、ロジック・インターフェース・プログラム１２２および／またはデバイス・ドライバ・ルーチン１２４を、所望のコア・ロジック・デザインの格納の形態に関するオプションを提供するように構成することができる。さらに、ＳＲＡＭおよびＤＲＡＭタイプのデバイス１８０ａがしばしばフラッシュ・メモリ・タイプのデバイス１８０ｂより大きい記憶密度を提供することができ、より多くのコア・ロジック・デザイン情報をローカルで格納することが容易になることを理解されたい。
【００５６】
図１２は、本発明のもう１つの実施形態のコンピュータ・システム２００を例示し、類似の参照番号は、先に記載した実施形態の類似の機能を指す。システム２００はコンピュータ２２を、図１に関連して記載したように含む。システム２００はまた、再構成可能なロジック回路２４０を含み、これはメモリ・バス２９に、メイン・メモリ２８と共に動作可能に結合される。メモリ・コントローラ２７はメモリ・バス２９およびプロセッサ・バス２４とインターフェースをとり、１つまたは複数のプロセッサ２６によるメイン・メモリ２８または再構成可能なロジック回路２４０へのアクセスを管理する。
【００５７】
加えて図１３を参照すると、再構成可能なロジック回路２４０は、プログラマブル・ロジック２５０、インターフェース・メモリ２６０、コア・ローディング・ロジック２７０およびコア・ストレージ２８０を含む。インターフェース・メモリ２６０は、別々にアクセス可能な２つのインターフェース・ストレージ・メモリ２６０ａおよび２６０ｂを含む。先にメモリ６０および１６０について記載したように、インターフェース・ストレージ・メモリ２６０ａおよび２６０ｂはそれぞれ１つまたは複数のメモリ・タイプから構成することができ、かつ／または１つまたは複数のコンポーネントからなることができる。各インターフェース・ストレージ・メモリ２６０ａおよび２６０ｂはメモリ・バス２９に、それぞれ異なる分離したバス・スイッチ２３０ａおよび２３０ｂによって選択的に結合される。各バス・スイッチ２３０ａおよび２３０ｂがバス２９に、１つまたは複数の経路２９ａによって結合され、これはデータを各インターフェース・ストレージ・メモリ２６０ａまたは２６０ｂへ、かつそこから、メモリ・バス２９を介して伝送するために必要とされるものである。バス・スイッチ２３０ａおよび２３０ｂは、対応する制御経路２３１ａおよび２３１ｂによって互いに独立して制御することができる。
【００５８】
プログラマブル・ロジック２５０は、制御インターフェース２５４、メモリ・インターフェース２５６およびユーザ定義ロジック２５８を含む。プログラマブル・ロジック２５０は、再構成可能なロジック回路４０または１４０に関して記載されたタイプの１つまたは複数のデバイスからなることができ、あるいはそうでない場合は当業者には想起されるように構成することができる。制御インターフェース２５４が直接メモリ・バス２９に、１つまたは複数の経路２９ｂによって結合され、また分離したバス・スイッチ２３０ｃにも結合される。バス・スイッチ２３０ｃがメモリ・バス２９に、１つまたは複数の経路２９ｃによって結合される。制御インターフェース２５４はまた、バス・スイッチ２３０ｃへの制御経路２３１ｃも含む。
【００５９】
制御インターフェース２５４がコア・ローディング・ロジック２７０に、バス２７４を介して結合され、コア・ローディング・ロジック２７０はコア・ストレージ２８０に、バス２８４によって結合される。コア・ローディング・ロジック２７０は、デザイン・ローディング・ロジック７０または１７０と同じく構成することができ、コア・ストレージ２８０は、ロジック・デザイン・メモリ８０または１８０と同じく構成することができる。別法として、コア・ローディング・ロジック２７０および／またはコア・ストレージ２８０を、当業者には想起されるであろうこのような他の構成により構成することができる。プログラマブル・ロジック２５０の制御インターフェース２５４は同様に、特定のコア・ローディング・ロジック２７０およびコア・ストレージ２８０構成と互換性のあるように構成される。
【００６０】
メモリ・インターフェース２５６がインターフェース・ストレージ・メモリ２６０ａおよび２６０ｂに、それぞれローカル・メモリ・バス２６４ａおよび２６４ｂによって結合される。メモリ・インターフェース２５６はまた制御経路２３１ａおよび２３１ｂにも結合されて、バス・スイッチ２３０ａおよび２３０ｂのオペレーションをそれぞれ指示する。メモリ・インターフェース２５６は、インターフェース・ストレージ・メモリ２６０ａおよび２６０ｂへのアクセスを、再構成可能なロジック回路１４０のメモリ・デバイス１６０ａおよび１６０ｂに関して記載した方法において、一方にローカルでアクセスすることができ、同時に他方にリモートでアクセスすることができるように、管理するように構成することができる。また、インターフェース・ストレージ・メモリ２６０ａおよび２６０ｂをそれぞれ、１つまたは複数のコア・ロジック・デザインのための制御構造、スクラッチ・スペースおよび／またはインターフェース・バッファ構造を、メモリ・デバイス１６０ａおよび１６０ｂに関して記載したように含むように、編成することができる。
【００６１】
ユーザ定義ロジック２５８をユーザ定義ロジック５８と同じく構成することができる。相応じて、ユーザ定義ロジック２５８を１つまたは複数のコア・ロジック・デザインにより、コンピュータ２２の制御下で、図３〜１０に関して記載したルーチンまたはプロセスのいずれかに従って、あるいはそうでない場合は当業者には想起されるように構成することができる。
【００６２】
一般に図１２および１３を参照して、次にシステム２００のオペレーションを記載する。先に記載したように、１つまたは複数のプロセッサ２６が再構成可能なロジック回路２４０を利用して、コンピュータ２２によって実行中である１つまたは複数のアプリケーションによって指示された補助処理を実行することができる。プロセッサ２６は再構成可能なロジック回路２４０に、プロセッサ・バス２４、メモリ・コントローラ２７およびメモリ・バス２９を介してアクセスする。通常、再構成可能なロジック回路２４０は、メイン・メモリ２８をオーバーラップしない、指定されたメモリ・スペースにマップされる。１つまたは複数のプロセッサ２６によって実行される再構成可能なロジック・インターフェース・プログラムを、情報を再構成可能なロジック回路２４０へ、あるいはそこから伝送し、かつ／または再構成可能なロジック回路２４０のオペレーションを、指定されたメモリ・スペースにアクセスすることによって指示するように構成することができる。プログラマブル・ロジック２５０の制御インターフェース２５４は、このようなアクセスが起こっているときを、メモリ・バス２９の選択された信号を、経路２９ｂを介して監視することによって決定する。これらの信号は、たとえば、指定されたメモリ・スペースにおけるアドレスにすることができる。
【００６３】
これらの信号のいくつかは、様々なオペレーションを実行するための再構成可能なロジック回路２４０へのコマンドに対応することができる。このようなコマンドは、先に記載したプロセス、ルーチンおよび／またはオペレーションの実行を、再構成可能なロジック回路２４０を再構成可能なロジック回路４０または１４０の代わりに使用して、容易にするように構成することができる。１つのコマンドのセットは、コア・ロジック・デザインをコア・ストレージ２８０に書き込み、かつそこから読み取ることを、ローディング・ロジック２７０を介して指示することができ、コア・ロジック・デザイン実行の管理を、ユーザ定義ロジック２５８によって指示することができる。このセットの１つのコマンドは制御インターフェース２５４に、所与のコア・ロジック・デザインをユーザ定義ロジック２５８に、たとえばコア・ストレージ２８０からロードすることを指示させることができる。他のコマンドは制御インターフェース２５４に、１つまたは複数のコア・ロジック・デザインをメモリ・バス２９から、バス・スイッチ２３０ｃの選択的なアクティベーションを通じて、制御経路２３１ｃを介してロードすることを指示させることができる。アクティベートされないとき、バス・スイッチ２３０ｃはバス２９を制御インターフェース２５４から切り離し、ただし経路２９ｂの直接結合は例外である。このようなコマンドを、再構成可能なロジック回路２４０による、先に記載したＣｒｅａｔｅ（Ｃｏｒｅ  Ｄｅｓｉｇｎ）、Ｏｐｅｎ（ＩＤ，ＰＬ）、Ｃｌｏｓｅ（ＩＩＤ）および／またはＲｅｌｅａｓｅ（ＩＤ）ルーチンの実行において使用することができる。
【００６４】
もう１つのコマンドのセットは、インターフェース・メモリ２６０の管理を対象とすることができる。これらのコマンドでは、制御インターフェース２５４が入力信号を解釈し、相応じてメモリ・インターフェース２５６のオペレーションを指示する。このセットの様々なコマンドに応答して、メモリ・インターフェース２５６は、メモリ・バス２９とインターフェース・メモリ２６０の間のアクセスを、バス・スイッチ２３０ａおよび２３０ｂの選択的なアクティベーションを通じて、各制御経路２３１ａおよび２３１ｂを介して制御することができる。このようなコマンドを、たとえば、再構成可能なロジック回路２４０による、先に記載したＲｅａｄ（ＩＩＤ）およびＷｒｉｔｅ（ＩＩＤ）ルーチンの実行において使用することができる。アクティブでないとき、バス・スイッチ２３０ａおよび２３０ｂは各インターフェース・ストレージ・メモリ２６０ａおよび２６０ｂをメモリ・バス２９から絶縁する。
【００６５】
このセットのさらに他のコマンドはメモリ・インターフェース２５６に、各ローカル・メモリ・バス２６４ａまたは２６４ｂを介した、インターフェース・ストレージ・メモリ２６０ａまたは２６０ｂとプログラマブル・ロジック２５０の間のデータの伝送を指示させることができる。再構成可能なロジック回路１４０に関して記載したように、各インターフェース・ストレージ・メモリ２６０ａまたは２６０ｂを、各ローカル・メモリ・バス２６４ａまたは２６４ｂを介したローカル・アクセスと、バス・スイッチ２３０ａまたは２３０ｂを介してメモリ・バス２９を介したリモート・アクセスの間で切り替えることができる。ローカルおよびリモート・アクセスの間で交互に切り換える能力により、ユーザ定義ロジック２５８によるいくつかの異なるロジック・デザインの間のマルチタスキングが容易になる。したがって、ロジック・デザインがユーザ定義ロジック２５８によって実行中であるとき、インターフェース・ストレージ・メモリ２６０ａまたは２６０ｂのうち一方において対応するメモリ・インターフェース情報にローカルでアクセスすることができ、同時に、他方のインターフェース・ストレージ・メモリにリモートで、メモリ・バス２９および対応するバス・スイッチ２３０ａまたは２３０ｂを介してアクセスすることができる。バス・スイッチ２３０ａ、２３０ｂおよび２３０ｃによって提供された切り離しにより、データを、プログラマブル・ロジック２５０を通じてバッファリングすることは不要となる。同様に、プログラマブル・ロジック２５０のインターフェースを、専用データ切り離しロジックにより構成する必要はない。さらに、この構成により、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）デバイスの形態におけるインターフェース・メモリ２６０の一部またはすべての実施が容易になる。
【００６６】
一般に図１〜１３を参照すると、他の実施形態では、メモリ６０、１６０および２６０および／またはメモリ８０、１８０および２８０を部分的あるいは完全にコンピュータ２２のメイン・メモリ２８によって設けることができる。さらに他の実施形態では、メイン・メモリ２８を、再構成可能なロジック回路４０、１４０、２４０のオーバーフローのためにまったく利用することができない。別法としてあるいは追加として、再構成可能なロジック回路４０、１４０、２４０は、２つ以上のコア・ロジック・デザインにより、かつコンピュータ２２によって実行された１つまたは複数のロジック・インターフェース・プログラムにより同時に構成されてこのようなデザインのインスタンスを制御し、かつこれらとインターフェースするように構成された、プログラマブル・ロジックを含むことができる。
【００６７】
コンピュータ・インターフェース・ロジック５４、１５４および２５４、およびメモリ・インターフェース・ロジック５６、１５６および２５６は頻繁に変化する可能性が低いので、これを完全にあるいは部分的に、コア・ロジック・デザインを格納するためのデバイスから分離している１つまたは複数のフラッシュ・メモリ・デバイスおよび／または他の不揮発性タイプのメモリ・デバイスに格納することができる。１つの代替実施形態では、コンピュータ・インターフェース・ロジック５４、１５４または２５４および／またはメモリ・インターフェース・ロジック５６、１５６または２５６の一部またはすべてを、パワーアップ時にコンピュータ２２からダウンロードすることができる。もう１つの代替実施形態では、コンピュータ・インターフェース・ロジック５４、１５４または２５４および／またはメモリ・インターフェース・ロジック５６、１５６または２５６が部分的にあるいは完全に、プログラマブル・ロジック５０、１５０または２５０においてそれぞれ構成されるのではなく、特定用途向け集積回路（ＡＳＩＣ）、または他のハードワイヤード・ロジック形態において提供される。
【００６８】
代替実施形態では、本発明による１つまたは複数の再構成可能なロジック回路をプロセッサ・バス２４に、図１に関して記載したように接続することができ、本発明による１つまたは複数の他の再構成可能なロジック回路をメモリ・バス２９に、図１２に関して記載したように接続することができることを理解されたい。さらに他の実施形態では、本発明による１つまたは複数の再構成可能なロジック回路をＩ／Ｏモジュールとして、プロセッサ・バス２４および／またはメモリ・バス２９に接続される他の再構成可能なロジック回路を伴うかあるいは伴わずに構成することができる。さらに、本発明の再構成可能なロジック回路を、１つまたは複数の点でプロセッサをエミュレートさえするアクティブ・バス・エージェントとして、パッシブなメモリマップド・エージェントとは対照的に構成することができる。
【００６９】
他の実施形態では、再構成可能なロジック回路４０、１４０または２４０のうち１つまたは複数の機能を、再構成可能なロジック回路４０、１４０または２４０のうちもう１つの１つまたは複数の機能と結合し、これを追加し、あるいは交換することができ、これは当業者には想起されるであろう。再構成可能なロジック回路４０、１４０および／または２４０は、コンピュータとインターフェースするために適切なコネクタにより、共通のプリント基板上に取り付けられた１つまたは複数のコンポーネントからなることができる。別法としてあるいは追加として、１つまたは複数のコンポーネントをマルチチップ・モジュールの形態のものにすることができる。さらに他の実施形態では、再構成可能なロジック４０、１４０または２４０の一部またはすべてを、コンピュータ２２に共通の基板上に設けることができ、あるいはそうでない場合は当業者には想起されるように構成することができる。
【００７０】
本発明の多数の他の実施形態が想定される。たとえば、もう１つの実施形態では、システムが、プロセス・クラスタを相互接続するように動作可能なデジタル・プロセッサ・バス、再構成可能なロジック・デバイス、メイン・メモリ、および１つまたは複数のプロセッサを含み、これらはプロセッサ・バスによって共に結合される。プロセッサのうち少なくとも１つは、再構成可能なロジック・デバイスにアクセスするように動作可能である。入出力ブリッジがプロセッサ・バスに結合され、また入出力バスにも結合され、これはプロセッサ・バスより低速の伝送クロック速度を有する。
【００７１】
他の実施形態では、装置が、コンピュータ・インターフェースにより構成された再構成可能なロジック回路を含む。この回路は、プログラマブル・ロジック、プログラマブル・ロジックを構成するようにそれぞれ選択されたいくつかのロジック・デザインを動的に格納するための第１のメモリ、および各ロジック・デザインのためのインターフェース制御情報を動的に格納するための第２のメモリを含む。この情報は、各ロジック・デザインのために第２のメモリにおいて割り振られた１つまたは複数のバッファに関係する。これらのバッファはデータを、コンピュータ・インターフェースを通じて伝送するために設けられる。
【００７２】
他の実施形態では、再構成可能なロジック回路が、プログラマブル・ロジック、プログラマブル・ロジックに接続されたデザイン・ローディング・ロジック、および１つまたは複数のメモリ・デバイスを含む。これらのメモリ・デバイスは第１のメモリ・スペースを含み、これはプログラマブル・ロジックのためのいくつかのロジック・デザインを格納するように動作可能である。第１のメモリ・スペースはローディング・ロジックによって、１つまたは複数のロジック・デザインをプログラマブル・ロジックに選択的にロードするためにアクセス可能である。メモリ・デバイスはまた第２のメモリ・スペースも含み、これは、ロジック・デザインのうち１つの異なるインスタンスにそれぞれ対応するいくつかのインターフェース制御構造を格納するように動作可能である。第２のメモリ・スペースは、プログラマブル・ロジックによってアクセス可能である。
【００７３】
もう１つの実施形態は、プログラマブル・ロジック、第１のメモリ・デバイスおよび第２のメモリ・デバイスを有する再構成可能なロジック回路に結合されたコンピュータを動作することを含む。この実施形態はまた、第１のロジック・デザインのための第１のインターフェース情報を第１のメモリ・デバイスに、第２のロジック・デザインのための第２のインターフェース情報を第２のメモリ・デバイスに格納することも含む。さらに、第１のロジック・デザインによる構成中にプログラマブル・ロジックによるオペレーションを実行すること、および、第１のメモリ・デバイスへプログラマブル・ロジックにより、かつ第２のメモリ・デバイスへコンピュータにより、実行中にアクセスすることを含む。
【００７４】
さらにもう１つの実施形態では、システムが再構成可能なロジック回路およびコンピュータを含む。再構成可能なロジック回路は、プログラマブル・ロジックおよびローカル・メモリを含み、ローカル・メモリはプログラマブル・ロジックのためのいくつかのロジック・デザインに関係するインターフェース情報を格納するように動作可能である。コンピュータは再構成可能なロジック回路に動作可能に結合され、１つまたは複数のプロセッサおよびメイン・メモリを含む。コンピュータは、１つまたは複数のアプリケーション・プログラムおよびロジック・インターフェース・プログラムを実行するように動作可能である。１つまたは複数のアプリケーション・プログラムが、再構成可能なロジック回路を利用するためのいくつかの要求を生成するように動作可能である。ロジック・インターフェース・プログラムはこれらの要求に応答して、プログラマブル・ロジックへのロジック・デザインの適用を制御する。ロジック・インターフェース・プログラムはメイン・メモリにおいて、ローカル・メモリのオーバーフローのためのメモリ・スペースを選択的に割り振るように動作可能である。
【００７５】
さらにもう１つの実施形態では、方法が、少なくとも１つのアプリケーション・プログラムおよびロジック・インターフェース・プログラムを、プログラマブル・ロジックおよびローカル・メモリを含む再構成可能なロジック回路に結合されたコンピュータ上で実行すること、いくつかのロジック・デザインをローカル・メモリに、それぞれがプログラマブル・ロジックを構成するように動作可能であるロジック・インターフェース・プログラムにより格納すること、および、１つまたは複数のアプリケーション・プログラムと再構成可能なロジック回路の間の２つ以上の共存するプログラム・インターフェースをインターフェース・プログラムにより開くことを含み、プログラム・インターフェースはそれぞれロジック・デザインのうち選択された１つに対応し、さらに、入力データを、プログラム・インターフェースのうち選択された１つのための再構成可能なロジック回路に書き込むこと、プログラマブル・ロジックを、ロジック・デザインのうち選択された１つにより構成すること、入力データをプログラマブル・ロジックにより、この構成の後に処理すること、出力データを、選択されたプログラム・インターフェースのための再構成可能なロジック回路から、この処理の後に読み取ること、および、選択されたプログラム・インターフェースを、インターフェース・プログラムによる読み取りの後に閉じることを含み、プログラム・インターフェースのうち他のものは開いたまま残り、さらに、ロジック・デザインのうち第１の１つを異なるロジック・デザインで置き換えることを含む。
【００７６】
本発明のもう１つの方法は、プログラマブル・ロジックに結合されたコンピュータを動作すること、および、２つ以上のアプリケーション・プログラムをコンピュータにより同時に実行することを含み、アプリケーション・プログラムはそれぞれ、実行中にプログラマブル・ロジックを利用するための複数の要求のうち少なくとも１つを生成し、さらに、要求を、コンピュータによって実行されたインターフェース・プログラムにより処理すること、および、プログラマブル・ロジックをインターフェース・プログラムにより制御して、それを要求に従ってアプリケーション・プログラムの実行中に数回再構成することを含む。
【００７７】
本発明の追加の実施形態はコンピュータ可読デバイスを含み、これは再構成可能なロジック回路に結合されたコンピュータによる実行のためのいくつかの命令を格納するものであり、再構成可能なロジック回路は、プログラマブル・ロジック、および、プログラマブル・ロジックを構成するようにそれぞれ動作可能ないくつかのロジック・デザインを格納するためのローカル・メモリを有する。この命令は、コンピュータによって実行中であるいくつかのアプリケーション・プログラムからの、再構成可能なロジック回路を利用するための要求に応答する、ロジック・インターフェース・プログラムを提供するように構成される。ロジック・インターフェース・プログラムは、アプリケーション・プログラムと再構成可能なロジック回路の間の対応する数の共存するプログラム・インターフェースを開くように数回実行可能な第１のルーチンを含む。プログラム・インターフェースはそれぞれ、第１のルーチンにより格納されたロジック・デザインのうち対応するものによるプログラマブル・ロジックの構成に備える。また、このプログラムに含まれるものは、第１のルーチンによって開かれたプログラム・インターフェースのうち選択された１つのための入力データを再構成可能なロジック回路に、プログラマブル・ロジックによる処理のために提供するための第２のルーチンである。第３のルーチンも、出力データを再構成可能なロジック回路から要求するために含まれる。ロジック・インターフェース・プログラムはまた、第１のルーチンにより確立されたプログラム・インターフェースのうち指定されたものを選択的に閉じるための第４のルーチンも有する。
【００７８】
本発明の他の実施形態は、コンピュータのメモリ・バスを通じて通信するように構成された再構成可能なロジック回路を含む装置を含む。この回路は、プログラマブル・ロジック、第１のインターフェース・メモリ回路、第２のインターフェース・メモリ回路およびメモリ・インターフェース・ロジックを含む。第１のインターフェース・メモリ回路は、第１のメモリ・デバイス、および、プログラマブル・ロジックによって制御される第１のバス・スイッチを含む。第１のバス・スイッチは第１のインターフェース・メモリ回路をメモリ・バスに結合し、第１のメモリ・デバイスがプログラマブル・ロジックに結合されて、第１のロジック・デザインのためのインターフェース情報が格納される。第２のインターフェース・メモリ回路は、第２のメモリ・デバイス、および、プログラマブル・ロジックによって制御される第２のバス・スイッチを含む。第２のバス・スイッチは第２のインターフェース・メモリ回路をメモリ・バスに結合し、第２のメモリ・デバイスがプログラマブル・ロジックに結合されて、第２のロジック・デザインのためのインターフェース情報が格納される。メモリ・インターフェース・ロジックは、プログラマブル・ロジックによる第１のメモリ・デバイスにおけるインターフェース情報へのローカル・アクセス、および、第１のロジック・デザインによるプログラマブル・ロジックの構成中に第２のバス・スイッチを通じて第２のメモリ・デバイスにおけるインターフェース情報へのリモート・アクセスを同時に提供する。さらに、メモリ・インターフェース・ロジックはアクセス・モードを変更して、プログラマブル・ロジックによる第２のメモリ・デバイスにおけるインターフェース情報へのローカル・アクセス、および、第２のロジック・デザインによるプログラマブル・ロジックの構成に応答して第１のバス・スイッチを通じて第１のメモリ・デバイスにおけるインターフェース情報へのリモート・アクセスを同時に提供するように構成される。
【００７９】
他の実施形態では、システムがプロセッサ・バスを含み、これがプロセッサ・クラスタ、プロセッサ・バスに結合されたメモリ・コントローラ、メモリ・コントローラに接続されたメモリ・バス、メモリ・バスに接続されたシステム・メモリ、およびプログラマブル・ロジックおよび第１のインターフェース・メモリを含む再構成可能なロジック・デバイスを相互接続するように動作可能である。プログラマブル・ロジックがメモリ・バスに、第１のバス・スイッチによって接続され、第１のインターフェース・メモリがメモリ・バスに、プログラマブル・ロジックによって制御された第２のバス・スイッチによって接続される。加えて、１つまたは複数のプロセッサが含まれ、これらが再構成可能なロジック・デバイスに、プロセッサ・バス、メモリ・コントローラおよびメモリ・バスによって結合される。さらに、このシステムは、入出力ブリッジによってプロセッサに結合された入出力バス、および、入出力ブリッジおよび入出力バスによって１つまたは複数のプロセッサに結合された入出力モジュールを含む。プロセッサのうち少なくとも１つがデータを再構成可能なロジック・デバイスに第１の待ち時間で転送し、入出力モジュールに、第１の待ち時間より長い第２の待ち時間で転送する。
【００８０】
本明細書で引用されたすべての出版物および特許出願は、各出版物または特許出願が特にかつ個別に、参照により組み込まれるように指示されているように、参照により本明細書に組み込まれる。本発明を詳細に図面および前述の説明において例示かつ記載したが、これは特性において例示的であり、制限的ではないものと見なされるべきであり、好ましい実施形態のみを図示かつ記載したこと、および、本明細書で、あるいは以下の特許請求の範囲によって定義された本発明の精神内に入るすべての均等物、変更および修正は保護されることが望ましいことは理解されよう。
【図面の簡単な説明】
【図１】  再構成可能なロジックを有するコンピューティング・システムの概略図である。
【図２】  図１のシステムの一部をさらに詳細に示す概略図である。
【図３】  図１に示すシステムの再構成可能なロジックを利用するためのプロセスの流れ図である。
【図４】  図３のプロセスのための「Ｃｒｅａｔｅ」ルーチンをさらに詳細に示す流れ図である。
【図５】  図３に示すプロセスのための「Ｏｐｅｎ」ルーチンをさらに詳細に示す流れ図である。
【図６】  図１および２に示すインターフェース・メモリのためのメモリ割り振り図である。
【図７】  図３に示すプロセスのための「Ｗｒｉｔｅ」ルーチンをさらに詳細に示す流れ図である。
【図８】  図３に示すプロセスのための「Ｒｅａｄ」ルーチンをさらに詳細に示す流れ図である。
【図９】  図３に示すプロセスのための「Ｃｌｏｓｅ」ルーチンをさらに詳細に示す流れ図である。
【図１０】  図３に示すプロセスのための「Ｒｅｌｅａｓｅ」ルーチンをさらに詳細に示す流れ図である。
【図１１】  再構成可能なロジックのもう１つの構成の概略図である。
【図１２】  さらにもう１つの再構成可能なロジック構成を有するもう１つのコンピューティング・システムの概略図である。
【図１３】  図１２のシステムの一部をさらに詳細に示す概略図である。
【図１】
0004510353.tif 000002
【図２】
0004510353.tif 000003
【図３】
0004510353.tif 000004
【図４】
0004510353.tif 000005
【図５】
0004510353.tif 000006
【図６】
0004510353.tif 000007
【図７】
0004510353.tif 000008
【図８】
0004510353.tif 000009
【図９】
0004510353.tif 000010
【図１０】
0004510353.tif 000011
【図１１】
0004510353.tif 000012
【図１２】
0004510353.tif 000013
【図１３】
0004510353.tif 000014