"所与のアプリケーションを処理するためにコンピュータシステムの能力を最適化するよう再構成可能なプログラマブルロジックリソースを備える再構成可能なコンピュータ用のソフトウェアを開発するためにソフトウェア開発ツールを使用する方法であり:アプリケーションの機能を形成するためにシステム設計言語を使用し;機能をランタイム中に存在するソフトウェア機能およびハードウェア機能に分割し、少なくとも1つのソフトウェア機能がハードウェア機能のうちの1つと同一の機能を実行し;ランタイム中にソフトウェア機能を使用するかあるいはハードウェア機能を使用するかを決定する、ことからなる方法。再構成可能なコンピュータは少なくとも1つのプログラマブルロジックデバイス上で実行される中央プロセッシングユニットとこの中央プロセッシングユニットに結合されたプログラマブルロジックとを備え、プログラマブルロジックは所与のアプリケーションを処理するためにコンピュータシステムの能力を最適化するよう再構成可能である請求項1記載の方法。再構成可能なコンピュータはマイクロプロセッサ上で実行される中央プロセッシングユニットとこの中央プロセッシングユニットに結合されたプログラマブルロジックとを備え、プログラマブルロジックは所与のアプリケーションを処理するためにコンピュータシステムの能力を最適化するよう再構成可能である請求項1記載の方法。再構成可能なコンピュータは部分的にマイクロプロセッサ上で実行されるとともに部分的にプログラマブルロジックデバイス上で実行される中央プロセッシングユニットとこの中央プロセッシングユニットに結合されたプログラマブルロジックとを備え、プログラマブルロジックは所与のアプリケーションを処理するためにコンピュータシステムの能力を最適化するよう再構成可能である請求項1記載の方法。プログラマブルロジックリソースの特性上の分割手段に対して情報を提供するためのリソースライブラリを使用することをさらに含む請求項1記載の方法。プログラマブルロジックリソースの特性上および再構成可能なコンピュータ内のメモリの特性上の分割手段に対して情報を提供するためのリソースライブラリを使用することをさらに含む請求項1記載の方法。ユニットハードウェア概念に基づいて作成およびコンパイルされたハードウェア機能を形成することを特徴とする請求項1記載の方法。分割手段を使用してハードウェア機能およびソフトウェア機能を自動的に分割することをさらに含む請求項1記載の方法。ハードウェア機能およびソフトウェア機能を手動で分割することをさらに含む請求項1記載の方法。所与のアプリケーションを実行させるためにコンピュータシステムの能力を最適化するよう再構成可能なプログラマブルロジックリソースを含む再構成可能なコンピュータのリソースを管理する方法であり:仮想ロジックマネージャを使用してプログラマブルロジックリソース配分を行っている間に二次記憶装置とプログラマブルロジックリソースとの間において構成データを交換する方法。再構成可能なコンピュータは少なくとも1つのプログラマブルロジックデバイス上で実行される中央プロセッシングユニットとこの中央プロセッシングユニットに結合されたプログラマブルロジックとを備え、プログラマブルロジックは所与のアプリケーションを処理するためにコンピュータシステムの能力を最適化するよう再構成可能である請求項10記載の方法。再構成可能なコンピュータはマイクロプロセッサ上で実行される中央プロセッシングユニットとこの中央プロセッシングユニットに結合されたプログラマブルロジックとを備え、プログラマブルロジックは所与のアプリケーションを処理するためにコンピュータシステムの能力を最適化するよう再構成可能である請求項10記載の方法。再構成可能なコンピュータは部分的にマイクロプロセッサ上で実行されるとともに部分的にプログラマブルロジックデバイス上で実行される中央プロセッシングユニットとこの中央プロセッシングユニットに結合されたプログラマブルロジックとを備え、プログラマブルロジックは所与のアプリケーションを処理するためにコンピュータシステムの能力を最適化するよう再構成可能である請求項10記載の方法。本発明の目的は、与えられたアプリケーションを処理するコンピュータの能力を最適化するよう再プログラムすることができるプログラマブルロジックデバイスに基づいた、改善された再構成可能なコンピュータを提供することである。本発明のこれらおよびその他の対象は、本発明の原理に従ってプログラマブルロジックに基づいた再構成可能なコンピュータシステムを提供することによって解決される。再構成可能なコンピュータのアプリケーションを開発しているアプリケーション技術者は、そのコンピュータ上でどのリソースが使用可能であるかについて配慮する必要はない。単一のプログラマブルロジックデバイスのサイズまたはプログラマブルロジックデバイスの集合に基づいたハードウェア集約が使用される。アプリケーションがコンパイルされると、ハードウェア内で実行されるアプリケーションの機能は、プログラマブルロジックデバイスと同じサイズかまたはこれより小さいサイズの、構成データを含むブロックに分割される。再構成可能なコンピュータシステムは、モジュール式かつ拡張可能である。より多くのハードウェアリソースが追加された場合、システムの性能が向上する。増強された性能の利点を得るためにアプリケーションを再度コンパイルする必要はない。ある実行時間中において使用可能なリソースに基づいて、どの手段が動作するかを選択するために仮想のコンピュータオペレーティングシステムを使用する。アプリケーション技術者が高レベルの言語を使用してプログラマブルロジックリソースを使用する再構成可能なコンピュータシステム上で実行することができるアプリケーションのためのハードウェア手段およびソフトウェア手段の両方を開発することを可能にするソフトウェア開発ツールを提供することができる。これらのツールは関数からなるシステム設計言語によって書かれた特性を自動的に分割しソフトウェア機能またはハードウェア機能に割り当てる分割手段を備えることができる。ソフトウェア機能およびハードウェア機能は、スレッドならびにプログラマブルロジックリソース構成データにそれぞれコンパイルすることができる。これらのスレッドならびに構成データは、アプリケーションを実行するために実行時間中において仮想コンピュータオペレーティングシステムによって使用することができる。再構成可能なコンピュータシステムは、アプリケーション技術者に対して1つのアプリケーションのための性能要件を特定するメカニズムを提供する。例えば、グラフィックスアプリケーションは、単位時間にディスプレイスクリーン上に描写される多辺形の数に応じて特定の処理量を必要とする。秒当りに百万の多辺形を描写する必要がある場合、例えば、アプリケーション技術者は、仮想コンピュータオペレーティングシステムに対して、多辺形を描写する機能が1μs以内のその動作を完了させる必要があることを特定することができる。仮想コンピュータオペレーティングシステムは、このシステムを使用して動作するアプリケーションの性能ならびに個々の機能をモニタする能力と、特定のアプリケーションおよび個々の機能に対してより多くのリソースを再配分して性能要件を満たすことを保持する能力を備えている。仮想コンピュータオペレーティングシステムは、特定の機能を実行する際においてシステムの能力に従ってこの機能をソフトウェアバージョンで実行するかまたはハードウェアバージョンで実行するかを決定することもできる。例えば、別の集中的な演算を要するアプリケーションを実行している際に多辺形描写機能を同時に実行することがスケジュールされた場合、仮想コンピュータオペレーティングシステムによって実行される動的な構成が、いつリソースの配分を決定するか、およびソフトウェアバージョンの多辺形描写機能を使用するかまたはハードウェアバージョンの多辺形描写機能を使用するかを考慮することができる。プログラマブルロジックリソースの中からアプリケーションの機能を配分する仮想コンピュータオペレーティングシステムが提供される。仮想コンピュータオペレーティングシステムは、仮想コンピュータ核サービス要素を含むことができる。仮想コンピュータ核サービス要素は仮想ロジックリソースマネージャを含む多様なリソースマネージャを含むことができる。実行時間中、特定の再構成可能なコンピュータシステムが仮想ロジック能力を伴う仮想オペレーティングシステムを有する場合、仮想ロジックマネージャはプログラマブルロジックリソースと二次記憶デバイスとの間におけるプログラマブルロジック構成データおよびアプリケーション状態情報の交換を制御することができる。このことによって限られたリソースしか持たない再構成可能なコンピュータシステムにおいて複雑なアプリケーションを実行することが可能になる。本発明のその他の詳細、特徴、ならびに種々の利点は、添付図面を参照しながら以下に記述する好適な実施例の詳細な説明によって明らかにされる。図1において、本発明に係る再構成可能なコンピュータシステムの全体的な構造が概略図として示されている。再構成可能なコンピュータシステム5内のハードウェアリソースは、プログラマブルロジックデバイス内で実行可能な中央演算装置CPU16、実在のマイクロプロセッサ、またはこれらの要素の組み合わせと、メモリ12と、入力/出力I/Oデバイス18プログラマブルロジックデバイスまたはその他の適宜なデバイスに基づくものとし得ると、相互接続ネットワーク22とからなる。プログラマブルロジックデバイスは、通常プログラマブルロジック領域、ルーティング構造、入力および出力領域、メモリ領域、ならびに構成記憶装置すなわちプログラマブルロジック領域内のロジック要素を構成するために使用される構成データを記憶するためのメモリのアレーを備えている。プログラマブルロジックデバイスによって実行されるロジック機能は、構成記憶装置内に蓄積された構成データ、構成記憶装置からロジック領域、ルーティング構造、入力および出力領域、ならびにメモリ領域への接続によって決定される。構成記憶装置は、例えば、実質的に無限回書き込むことができるスタティックRAMに基づいたものとすることができる。他方、消去可能なプログラマブルROMデバイス等のプログラマブルロジックデバイスの外部のデバイスを、プログラマブルロジックデバイスの内部スタティックRAMに代えて構成記憶装置として使用することもできる。必要に応じて、実質的に回数を書き込むことができるその他のいずれかのメモリまたは記録デバイスを使用することができる。従って、プログラマブルロジックデバイスによって実行されるロジック機能は、無数回にわたって回路内で変更することができる。好適なプログラマブルロジックデバイスの一例として、カリフォルニア州サンノゼ市アルテラ社によるフレックスEPF10K50デバイスが挙げられる。この型式のプログラマブルロジックデバイスは単に例示的なものである。必要に応じて、その他の適宜な型式のプログラマブルロジックデバイスをシステム5内において使用することができる。必要であれば、プログラマブルロジックデバイスは1つまたは複数の構成記憶装置の部分的な再構成を補助することができる。不揮発RAM10は、初期化情報を記憶するために使用することができる。再構成可能なコンピュータシステムに初めて電源が付加された際、コンピュータを初期化するために初期化情報を使用することができる。このプロセスはブートストラッピングとして知られている。演算に使用されるメモリデバイスは、RAMデバイス12とすることができる。これは、スタティックまたはダイナミック集積回路メモリ技術によって形成することができる。スタティックまたはダイナミックメモリ技術の選択は、このメモリによって実行されることを必要とする演算機能に基づいて決定することができる。スタティックRAMデバイスはダイナミックRAMに比べて高速なアクセス時間を有するが、記録セルごとにより多くのトランジスタを使用する上に、同等な記録密度でもより高い製造コストを要する。所定の演算機能に対する好適なメモリ技術の決定において、アクセス時間、密度、ならびにコストの組み合わせが要素となる。相互接続ネットワーク22は、それぞれの物理的リソースを結合するワイヤ例えば、バスとして形成される。相互接続ネットワーク技術は、位相幾何を動的に再構成することができるプログラマブルロジックデバイスまたはプログラマブル相互接続デバイスを使用して形成することができる。この技術は、特定の演算機能に対して最適化される。考えられるネットワーク位相幾何の例としては、メッシュ、全または部分クロスバー、小集団、ハイパーキューブ、分散または共有メモリ階層構造等が挙げられる。I/O接続20は、再構成可能な演算アレーをキーボード、光学ディスプレイ、等の外部機器、ハードディスクドライブ等の大量記憶装置に結合するか、または他の再構成可能または再構成不可能なコンピュータシステムを含んだコンピュータネットワークに接続するワイヤによって形成することができる。必要であれば、プログラマブルロジックデバイスは、ロジックデバイス14に対する組み合わせあるいは連続ロジック機能か、マイクロプロセッサ16に対するマイクロプロセッサ機能か、またはI/Oインタフェース18に対するI/O機能を実行するように使用することができる。これらの機能のうちのどれか、例えばマイクロプロセッサ機能は、必要に応じて固定されたハードウェアによって実行することができる。この種のシステムの拡張は、より多くのプログラマブルロジックデバイスの追加を含むことができる。システムにプログラマブルロジックデバイスを追加するに従って、処理能力が増加する。拡張性およびモジュール性によってプログラマブルロジックデバイスリソースの増加が可能となり、結果としてシステム能力の増加がもたらされる。メモリ12は、アプリケーションならびにシステムプログラムおよびデータを実行するためのメモリ階層構造を補助する。アプリケーションおよびシステムプログラムは、マイクロプロセッサコードおよびプログラマブルロジックデバイス構成データを含むことができる。プログラマブルロジックデバイスは、アプリケーションの継続中にのみ必要とされるアプリケーション固有のI/Oデバイス18を形成するよう構成することができる。この種のデバイスは、イーザネットプロトコル、スモールコンピュータシステムズインタフェースSCSIプロトコル、周辺機器相互接続PCIプロトコル、ビデオドライバプロトコル等のプロトコルを含むことができる。相互接続ネットワーク22は以下の機能を提供するために使用することができ、それらは:プログラマブルロジックデバイス構成バス、アプリケーションメモリバス、およびI/Oバスである。各バスは独立して機能することができる。プログラマブルロジック構成バスは、システム内において各プログラマブルロジックデバイスを形成するために使用することができる。プログラマブルロジックデバイス構成アドレッシングモードに従って、このデータはプログラマブルロジックデバイスのグループまたは個別のプログラマブルロジックデバイスに同時に伝送することができる。アプリケーションメモリバスは、システムがプログラマブルロジックデバイスのアレーとともに共有または分散メモリシステムを形成することを可能にする。I/Oバスはプログラマブルロジックデバイスを外部のI/Oデバイスに接続することを可能にする。不揮発メモリデバイス10内の情報は、図2に示されているようにシステムをブートストラップするために使用される。ステップ30においてシステムに電源が投入されると、演算に使用されるプログラマブルロジックデバイスおよびRAM12はいずれも前回の構成からの情報を維持しない。不揮発メモリ10内に記録された情報の目的は、ブートストラップマネージャをロードすることであるステップブートストラップマネージャは、続いてステップ34においてベーシックI/OサービスBIOSをロードし、ステップ36においてパワーオン自己検査診断プログラムをロードおよび実行し、ステップ38においてオペレーティングシステム核をロードおよび実行することができる。不揮発メモリ10内に記録されたブートストラップインストラクションは、ステップ36中において演算リソース上で実行することができる。このリソースは専用マイクロプロセッサ、マイクロプロセッサとして構成されたプログラマブルロジックデバイス、マイクロプロセッサと部分的にマイクロプロセッサとして構成されたプログラマブルロジックデバイスとの組み合わせ、またはプログラマブルロジックデバイスロジック回路とすることができる。リソースが専用のマイクロプロセッサである場合、不揮発メモリ10は単にブートストラッププロセスを実行するために必要とされるマイクロプロセッサインストラクションのみを含んでいる。プログラマブルロジックデバイスをマイクロプロセッサとして構成する必要がある場合、不揮発メモリ10はプログラマブルロジックデバイス構成データならびにマイクロプロセッサインストラクションを含むことができる。その他の場合、不揮発メモリ10はロジック回路のためのプログラマブルロジックデバイス構成データを含むことができ、これはブートストラッププロセスを実行するために追加的なプログラムインストラクション必要とするものかあるいは必要としないもののいずれでも可能である。最終的なブートストラッププロセスはオペレーティングシステム核をロードすることである。このローディングプロセスはプログラマブルロジックデバイスを使用して実行されるマイクロプロセッサのインストラクションのローディングを含むか、またはプログラマブルロジックデバイスに対する構成のローディングを含むことができる。いずれの構成マイクロプロセッサおよびインストラクション、またはインストラクションを伴っているかあるいは伴わないロジック回路を使用しても、オペレーティングシステムは仮想コンピュータオペレーティングシステムVC-OSと呼称することができる。仮想コンピュータオペレーティングシステムの典型的な要素が図3に示されている。図3の仮想コンピュータオペレーティングシステム40は、従来のオペレーティングシステムがランタイムマネージメントに関して提供していた基本的なサービスを提供することができる。加えて、仮想コンピュータオペレーティングシステムは、プログラマブルロジックの使用に関してシステム5のサービスを補助する。仮想コンピュータオペレーティングシステムは、与えられたアプリケーションの機能が実行されることを保証するランタイムマネージメントツールを含んでいる。例えば、ランタイムマネージメント機能は、システム設計レベルで特定された機能およびタイミング条件が満たされていることを保証する。例えば、マイクロソフトウィンドウズ登録商標NT等の従来のオペレーティングシステムは、従来のコンピュータシステムにおいてランタイム中に使用可能なリソース上において実行される機能をスケジューリングする。この種の従来のコンピュータシステム内のリソースは、アプリケーションプログラムの要求ならびにリソースの使用可能性に基づいてランタイム中に動的に再配分される。各リソースは、物理メモリの再配分を行う仮想メモリマネージャ等のリソースマネージャを備える。従来のオペレーティングシステムにおける最も一般的なリソースマネージャは、ファイルシステムマネージャ、グラフィックスマネージャ、I/Oマネージャ大容量記録アクセスまたはキーボードあるいはマウス等のシンプルI/Oデバイスを操作するため、ネットワークマネージャ、および仮想メモリマネージャである。本発明によれば、仮想コンピュータオペレーティングシステム40は、仮想コンピュータオペレーティングシステム40とこの仮想コンピュータオペレーティングシステム40のために書かれたアプリケーションとの間のインタフェースを提供するアプリケーションプログラムインタフェース44を備えている。仮想コンピュータオペレーティングシステム40は、さらにリソースマネージメント機能を提供する核サービス42を含んでいる。システム内の各サービスはリソースマネージャを有することができる。例えば、ファイルリソースはファイルシステムマネージャ46によって操作することができる。グラフィックスリソースはグラフィックスマネージャ47によって操作し、I/OリソースはI/Oマネージャ48によって操作し、ネットワークリソースはネットワークマネージャマネージャ50によって操作し、仮想メモリリソースは仮想メモリマネージャ52によって操作することができる。再構成可能なコンピュータシステムは仮想ロジックを有することができ、これは仮想ロジックマネージャ54によって管理することができ、この仮想ロジックマネージャはアプリケーションによって形成されシステム5内の限られたプログラマブルロジックリソースにアクセスする要求を処理するものである。従来のオペレーティングシステムは、RAMの制限を克服するために仮想メモリに依存する。仮想メモリは、ランタイムデータを一時的に保存するために二次記憶装置ハードディスク等を使用することができ、そうでない場合このデータは一次記憶装置RAM等に記録される。アプリケーションによって機能およびデータが要求されると、オペレーティングシステムは要求されたデータがその時点で仮想メモリ内に記録されているかどうかを判断し、もし記録されている場合、そのデータを物理メモリ内にある他のアプリケーションのためのデータをその時点で仮想メモリから要求されている機能およびデータに置き換える。しかしながら、本発明に係る仮想ロジックマネージャは、プログラマブルロジックデバイスのランタイム配分を行うことができる。仮想ロジックマネージャは、多様なアプリケーションが要求するプログラマブルロジック内で実行される機能のランタイム要件を満たすものである。1つのアプリケーションは、要求を処理するために存在するプログラマブルロジックデバイスを使用して処理される以上の機能を要求することがあり得る。従って、仮想ロジックマネージャは、プログラマブルロジック内で実行される機能のランタイム交換を管理する必要がある。従来の仮想メモリマネージャは、比較的少ない量の物理メモリを比較的大量の論理メモリとしてアプリケーションに対して提供していた。これは、物理メモリ内外のメモリページを二次記憶装置通常はローカルハードディスクに対してまたはここからランタイム交換することによって達成される。本発明に係る仮想ロジックマネージャ54を使用すれば、比較的少ない量の物理プログラマブルロジックデバイスをアプリケーションに対しては比較的大量の論理プログラマブルロジックデバイスとして提供することができる。これは、仮想ロジックマネージャ54を使用してプログラマブルロジックデバイス構成メモリすなわち、構成ストア内外のプログラマブルロジックデバイス構成データおよび状態情報を二次記憶装置通常ローカルハードディスクドライブに対してまたはここからランタイム交換することを実施することによって達成される。図4には、システム内で実行する機能をロードするプロセスが示されている。このプロセスは、機能が実行される時間に使用される最適の機能手段ソフトウェアまたはハードウェアを選択するために使用される。使用可能なシステムのハードウェア処理バンド幅ならびに使用可能なシステムのソフトウェア処理バンド幅がステップ150において決定される。ソフトウェア処理バンド幅は、システム内の全てのマイクロプロセッサが休止中で機能を実行していない時間の総量から算出される。ハードウェア処理バンド幅は、システム内の非使用のプログラマブルロジックリソースと使用されているプログラマブルロジックリソースがデータを処理していない時間の総量とに基づいて計算される。機能のために必要とされるハードウェア処理バンド幅ならびに機能のために必要とされるソフトウェア処理バンド幅は、ステップ152において決定される。これらの要求は、アプリケーション技術者によって絶対要求として特定されるか、または前記の実行される機能に並んで付加された追加的な小機能を実行する際のシステムの性能に基づいて特定することができる。この小機能はステップ152で実施することができるとともにシステムの性能を測定することができる。ステップ154において、要求されるソフトウェア処理バンド幅がシステム内で使用可能なバンド幅より小さいかどうかが判断される。要求されるソフトウェア処理バンド幅がシステム内で使用可能なバンド幅よりも小さい場合、ソフトウェア手段がシステムにロードされステップ160においてマイクロプロセッサ上で実行される。ソフトウェア手段がハードウェア手段よりも少ないシステムリソースを使用するため、この選択がなされる。ソフトウェア処理バンド幅が適正でない場合、ステップ156においてハードウェア手段が評価される。使用可能なハードウェアバンド幅が許容可能である場合、ステップ162において機能がシステム上にロードされてプログラマブルロジックリソース上で直接的に実行される。ステップ156において、使用可能なハードウェアのバンド幅が許容不可能であると判断され、さらにステップ158において性能要求がハードでありつまり性能要求を満たす必要がある場合、ユーザに対してエラーメッセージが提供されステップ164において機能およびその親機能のロードが中止される。要求がハードでない場合、ステップ162において機能がロードされ、低減された性能レベルで実行される。いずれかの機能手段がシステム内にロードされた後どの機能が優先度が低いものでありこの優先度の低い機能を必要に応じて除去するかどうかを決定するために通常の手段を使用し、システム内の機能の性能がステップ166でモニタされる。バンド幅を処理するシステムの機能に対して与えられた優先度は、要求されるバンド幅と実現される実際のバンド幅との差に比例する。優先度マネージメントプロセスによってリソース配分に対して新しい機能がスケジューリングされると、仮想コンピュータオペレーティングシステムのリソース再配分ルーチンによって実施される第1のステップは、機能の拘束を満たすことができるリソースが存在するかどうかを判断することである。このようなリソースが存在する場合、このリソースが前記機能に対して配分される。存在しない場合、物理リソースのプール内に存在する最適の候補が適宜な代替法則を使用して検索される。例えば、あるアプリケーションの所定の機能を実行するために再構成することが可能なプログラマブルロジックリソースが不充分であると判断された場合、仮想コンピュータオペレーティングシステムは再構成が不要なハードウェアリソース例えば、専用マイクロプロセッサまたはCPUとして動作するよう構成されたプログラマブルロジックデバイスを使用して所与の機能を実行し得ることを保証するために使用することができる。仮想コンピュータオペレーティングシステムは、マイクロプロセッサ上で機能を実行する前に適正なソフトウェアバージョンの機能がアプリケーション技術者によって提供されているかどうかを保証することができる。機能の拘束に従って、適宜な置換法則が使用され、これはファーストインファーストアウト、ラストリーセントリユースド、またはラストフリークェントリユースドを含んでいる。ランタイムマネージメントシステムがリアルタイムインタラプト処理プロセス等の優先度の高い機能を検出した際、極端なケースとして1番目の最適なリソースのオンデマンド交換があり得る。リソース配分およびスケジューリングに関連して、従来のコンピュータ構造のオペレーティングシステムによるランタイムリソースマネージメントは、CPUスケジューリングのための種々の技術を含んでいる。ワンバイワンベーシック上のコンピュータシステム操作アプリケーションならびに同じアプリケーション下の個々の機能を有することは極めて非効率的となり得る。与えられたいずれかの時間に処理される与えられたいずれかの時間に処理されるタスクに応じて、いくつかのリソースが拘束され、一方その他のリソースはアイドルとなり得る。結果は極めて遅いコンピュータとなる。これに対応して、従来のオペレーティングシステムの殆どにおいては徐々にCPUスケジューリングのコンセプトが適用されるようになってきた。従来のコンピュータシステムにおけるCPUスケジューリングは、リソースを配分しシステムによって処理される全ての機能の順序がスケジューリングされる。CPUスケジューリングの目的は、安定したマルチタスク環境を形成することである。この環境は、優先度、I/O遅延による機能停止、または各機能を処理する順序を決定付けるために使用されるその他の要因等の各要因の組み合わせに基づいてCPUリソースをアルゴリズム的に配分することによって形成される。例えば、マイクロプロセッサがユーザの入力を待つ点に到達している機能を処理する場合、従来のオペレーティングシステムのCPUスケジューリング特性は、ユーザの入力が可能になるまでの間マイクロプロセッサのリソース同様に他の使用可能なシステムリソースを使用する可能性のある他の機能を提供することができる。ユーザの入力が可能になった際、最初の機能がシステム内で休止状態になっていた際に放棄していたリソースを再び使用する。本発明によれば、1つまたは複数のマイクロプロセッサ上においてプログラマブルロジックデバイスが完全または部分的に構成される再構成可能なコンピュータシステムにおいて、スケジューリングシステムの機能は従来のCPUスケジューリングシステムと比べていくらか異なった作用をもたらす。従来のCPUスケジューリングはマイクロプロセッサリソースを各機能に対して配分し、プログラマブルロジックスケジューリングはプログラマブルロジックリソースそのうちのいくつかとすることもできるを各機能に配分する。プログラマブルロジックリソースはマイクロプロセッサとしてプログラムする必要はないが、所要の機能、例えばI/O機能、グラフィックス機能、ネットワーク機能等を実行するようにプログラムすることができる。再構成可能なコンピュータのオペレーティングシステム内のこの種の特徴の目的は、複数グループのプログラマブルロジックリソース中において多様なタスクを同時に処理するタスクを管理することを補助することである。他方、従来のコンピュータのオペレーティングシステムにおいて、CPUスケジューリング能力の第一の目的は、与えられたある時点において能動である種々のタスクによって高い処理能力が要求されるために生じるマイクロプロセッサの停止を削減することである。再構成可能なコンピュータに対する典型的なスケジューリングは、プログラマブルロジックリソースを各アプリケーション機能に配分することができるタイムマルチプレクシングを使用することができる。このことは、予め設定された時間間隔における異なった機能間の切換えを含むことができる。重要な例外は、リアルタイムインタラプトとI/O機能である。再構成可能なコンピュータシステムにおいてリソースが休止状態になりすぐに配分される機能が1つもスケジューリングされていない場合、機能先取りが、機能が要求される前にプログラマブルリソースを構成データとともにロードし得るようにするためのプログラマブルロジックリソース構成オーバヘッドに関連する時間コストを最小化することを補助する。プログラマブルロジックデバイスをロードすることに関連する時間コストは、現在市販されているプログラマブルロジックデバイスにおいてミリ秒の単位である。必要であれば、プログラマブルロジックデバイスを構成するために必要とされる時間は、増加されたパイプラインおよび並列性をデバイス上において使用することによって縮小例えば、ナノ秒の単位まですることができる。従って、一群のプログラマブルロジックリソースに基づいた再構成可能なコンピュータシステムは、システム内で使用することができるプログラマブルロジックの数が比較的大きいため、比較的大きな処理能力を備えると言う利点を有する。再構成可能なシステムにおいて、より多くの処理能力が必要とされる場合、単に相互接続ネットワーク上により多くのプログラマブルロジックデバイスを追加すれば良い。システムにより多くのプログラマブルロジックデバイスを追加した後アプリケーションを再度コンパイルする必要はなく、これはランタイムマネージャが新しいハードウェアを自動的に検出してランタイム実行能力の中に組み込むからである。これらのデバイスの全てが仮想コンピュータオペレーティングシステムを使用して制御および監視される。ソフトウェア設計者によって設定された最小および最大機能実行目標は、リソース配分に対してスケジューリングされた次の機能を決定することができる。加えて、その時点で実行している機能の優先度もスケジューリングされる次の機能の決定に使用される。本発明の別の特徴は、プログラマブルロジックデバイスのデフラグメント能力である。従来のコンピュータにおいて、ハードドライブ等の記憶装置はドライブ上のリソースが継続的に配分および消去されることによって生じる問題を防止するためにデフラグメントすることが可能であった。従来のハードドライブ上の消去されたスペースは、連続する大きなスペースを必要とする機能に対して再配分するために充分なスペースを有してないことがあり得る。本発明によれば、単一のプログラマブルロジックデバイスの部分構成をデフラグメントするためにプログラマブルロジックデフラグメンテーションを使用することができる。これによって、予め配分された多数の小さなプログラマブルロジックの領域を使用可能なプログラマブルロジックのより大きな稼動領域を形成するために再配分することが可能になる。このことは、プログラマブルロジックの多様な部分への特定の各スイッチに対して再構成データを再配分して所要のプログラマブルロジックデバイス機能を提供することを含んでいる。本発明の別の特徴は、ソフトウェア開発に関するものである。ソフトウェア開発プロセスは、演算システムを使用する重要な部分である。複雑な機能を実行するとともにユーザが演算システムと相互交信するための複雑なインタフェースを形成することが重要である。最も一般的な開発ツールは、JAVA登録商標、C、ADA、LISP、COBOL、VISUALBACIC等の高級プログラム言語を含んでいる。ソフトウェア開発プロセス中における一貫性を保持するため、再構成可能なコンピュータシステムに対する高級言語は、従来の高級プログラミング言語の原理を使用して設計されている。アプリケーションは、通常複数の機能を備えている。例えば、グラフィックを多用するアプリケーションは、ある機能をレンダリングサーフェイスのために使用し、その他の機能を光線追跡のために使用することができる。仮想コンピュータオペレーティングシステムは、プログラマブルロジックデバイスリソースをアプリケーションの機能に対して配分する。ユニットハードウェア概念が使用される。すなわち、アプリケーションエンジニアは、そのアプリケーションを実行するいずれかの特定のシステムがいくつのプログラマブルロジックデバイスリソースを有しているかを考慮する必要はない。むしろ、少なくとも1つのプログラマブルロジックデバイスの最小リソース要求に従って、全てのリソースを使用可能とする概念が形成される。このことは、図5Aに示されている。ハードウェア機能181はユニットハードウェア概念すなわち、このアプリケーションに対するハードウェア描写言語は、ハードウェア182のユニットとして示されているプログラマブルロジックリソースまたはプログラマブルロジックリソースの集合体内で実行される構成データのブロックにコンパイルされると仮定するに基づいてHDLコンパイラ180によってコンパイルされる。ユニットハードウェア182は、例えば、単一のプログラマブルロジックデバイスまたは単一のプログラマブルロジックデバイスの一部分とすることができる。HDLコンパイラ180は、構成データを伴ったVC-OS184を構成データのブロックの形式で提供し、ここで各ブロックはユニットハードウェア182に適合するものである。VC-OS184は必要に応じてプログラマブルロジックデバイスリソースを前記のブロックこれらが機能を形成し、さらにこれがアプリケーションを形成するに配分する。図5Aの例において、VC-OS184はアプリケーションのブロック1に配分されたプログラマブルロジックリソース186を有し、アプリケーションのブロック2に配分されたプログラマブルロジックリソース188を有し、アプリケーションのブロックnに配分されたプログラマブルロジックリソース190を有する。ロジックリソース180,188,および190等のロジックリソースは、それぞれ単一のプログラマブルロジックデバイスに基づくか、それぞれプログラマブルロジックデバイスの一部分に基づくか、それぞれそのようなデバイス構成組み合わせに基づくか、またはそれぞれ他の好適なロジックリソースに基づくものとすることができる。配分されるリソースはシステム毎あるいはあるシステムにおいてもランタイム毎に変化することができるが、HDLコンパイラ180は不変のユニットハードウェア概念に基づいてアプリケーションをコンパイルすることができる。仮想ロジックマネージャは、特定のプログラマブルロジックリソースが限られている場合、その中の構成データのブロックを交換することができる。さらに、図5Bに示されているように、VC-OSは1つのプログラマブルロジックデバイスリソースを複数の構成データのブロックに配分することができる。図6には、高レベルの設計仕様またはアルゴリズムのコンパイル、ならびに再構成可能なハードウェア構造上での実行が詳細に示されている。仕様アルゴリズム70、拘束のセット74、およびリソースライブラリ76がソフトウェア開発ツール192上に入力として提供される。仕様は、システム設計言語で書くことができる。仕様において、アプリケーション技術者はシステム設計言語によって提供されるツールを使用してアプリケーションを書くだけで良い。アプリケーション技術者は、システム設計言語によって作成された機能のソフトウェアバージョンならびにハードウェアバージョンを考慮する必要はない。分割手段72は仕様70をソフトウェア機能78およびハードウェア機能80に分割することができる。その結果、各機能は完全にソフトウェア上例えばマイクロプロセッサで実行するか、完全にハードウェア上例えばプログラマブルロジックデバイスで実行するか、またはそれらの組み合わせとすることができる。それぞれの機能的分割部分に対してソフトウェア操作およびハードウェア操作の両方が形成され、これは所要の部分手段を実行する決定がランタイムが開始するまで遅延する可能性があるからである。システム設計言語プロファイラは、システム設計言語コード上で実行され重要なパスの分析および区分の割当てを行うこともできる。分割操作は拘束74を考慮に入れることもできる。2つの一般型式の拘束74が存在する。第1に、システム設計言語仕様70の機能的限界は、機能間のタイミング関係を含むことができ、機能間に並行または連続的拘束が存在することも可能である。第2に、コスト関数はリソースライブラリ76内のハードウェアリソースを使用することに関連付けられる。リソースライブラリ76は、使用可能な各ハードウェアリソースついての詳細を含んでいる一般的にこれらはマイクロプロセッサ、メモリ、およびプログラマブルロジックデバイス。これらは、計算速度、待ち時間、ならびにリソースの応答時間あるいは時間のコスト関数通常はソフトウェア手段に対する、エリア通常はハードウェア手段に対する、または通信時間およびエリアの両方にまたがる等を含むことができる。適合しなければならない拘束をハード拘束と定義することができる。ハード拘束の1例は、リアルタイムI/Oまたはインタラプトプロセスを含む拘束である。ソフト拘束と定義される拘束もあり得る。ソフト拘束の1例は、スプレッドシート内の等差関数に関連付けられた拘束である。これらの等差関数が特定の時間内に実行されることは重要でなく、これらの機能が高速に実行されることと、アプリケーションの使用が簡便になることが重要である。リソースライブラリ76は、各種のリソースの特性を記している。例えば、マイクロプロセッサは特定のインストラクションセットおよびデータパス幅等の特性を有し、メモリは特定のデータパス幅を有し、プログラマブルロジックデバイスは特定のロジック容量ならびにI/Oカウントを有することができる。分割ツール72はリソースライブラリ76ならびに拘束74の特性を考慮するが、あるシステム内に各リソースがそれぞれ何個存在するかは考慮することができない。ランタイムリソースマネージャは、実行中のアプリケーションからの要求に従って機能分割を使用可能なハードウェアリソースにマッピングする必要がある。一度システム設計言語仕様70がソフトウェア機能78とハードウェア機能80とに分割されると、これらの機能の間においてパラメータの伝送が可能になるようインタフェース機能86が形成される。これらのインタフェース機能86は、メモリマッピングされたハードウェア機能80にパラメータを書き込むソフトウェア手段とするか、またはプログラマブルロジックデバイス内にハードディスクインタフェース回路を構成してファイルシステムの形成を可能にすることを含むことができる。全ての機能について、ハードウェアならびにソフトウェア手段の両方を備える必要はない。アプリケーション技術者は、ソフトウェアおよびハードウェアの全ての機能を作成することができ、両方を作成できる人とどちらか一方のみを作成できる人が存在する。しかしながら、最適な組み合わせの機能ならびに手段を選択する際にオペレーティングシステムに柔軟性を与えるために両方のバージョンを有することが好適である。各機能に分割した後、ソフトウェアおよびハードウェア内の各要素は物理的実行技術にマッピングする必要がある。このことは、高級言語コンパイラ82を使用してソフトウェア機能78をスレッド88にコンパイルし、ハードウェア表記言語コンパイラ84を使用してハードウェア機能80を構成パターン90にコンパイルすることを含んでいる。このステージにおいて、例えば一定増加等差および幾何学の両方、強度低下例えば、aa=2a、これは考え得るコスト積算段を除去する、パイプライン化、またはリソース共有等の多様な最適化および節約技術が適用される。実行可能な最後のコードイメージソフトウェアおよびハードウェア機能ならびにパラメータアドレスを有するリンカ92は、主機能と動的に連結された機能を有し、それらの全てがソフトウェアまたはハードウェア、あるいはその両方において実行される。システム設計言語分割手段72によって形成されるこれらの機能および拘束74は、仮想コンピュータオペレーティングシステム94への入力である。他方、図7に示されているように、仕様をソフトウェア要素およびハードウェア要素に分割することによって、ユーザは設計の流れを単純化することができる。この流れは、機能的タイミング拘束はまったく受け継がないこれはシステム設計言語によって書かれてないためである。必要であれば、拘束を考慮に入れることも可能である。制御の主的な流れはマイクロプロセッサ130またはマイクロプロセッサとしてプログラムされたプログラマブルロジックデバイス上において実行され、これはプログラマブルロジック132上に存在する機能を呼び出すことができる。マイクロプロセッサ130またはプログラマブルロジックデバイス132のいずれかを目的とするアルゴリズム機能は、プログラマブルロジック132内で実行される機能のために、高級言語114によって書くことができ、高級言語-ハードウェア記載言語コンパイラ118を使用してハードウェア記述言語に変換される。ソフトウェア機能とハードウェア機能との間でパラメータを伝送するためのインタフェース機能112も高級言語で書かれている。高級言語コンパイラ116は、ソフトウェア機能110をコンパイルするとともに、リンカ124内のハードウェア記載言語コンパイラ120からの構成データ126に連結されているスレッド122を形成する。これらの機能は、その後仮想コンピュータオペレーティングシステム128によって使用される。使用可能なリソース、アプリケーション技術者のインストラクション、および拘束に基づいて、仮想コンピュータオペレーティングシステムは、特定のアプリケーションを実行するためにソフトウェア手段、ハードウェア手段、またはその組み合わせのいずれかを使用するかを決定することができる実行時間中またはソフトウェア実行中のいずれか。このことにより、ソフトウェア上で実行するためにより適した機能がソフトウェアを使用して実行されるため極めて効果的な処理が可能となり、他方プログラマブルロジックハードウェアデバイスに適した機能はプログラマブルロジックリソースを使用して実行される。以上の記述は単に本発明の原理を説明する目的のものであり、当業者においては本発明の視点および概念を逸脱することなく種々の設計変更をなし得ることが理解されよう。"