(57)【特許請求の範囲】
【請求項１】
所与のアプリケーションを処理するためにコンピュータシステムの能力を最適化するように再構成可能なプログラマブルロジックリソースを備える再構成可能なコンピュータにおいてリソースを管理する方法であって、該方法は、該コンピュータシステムによって実行され、該コンピュータシステムは、プロセッサとメモリとを備え、
該方法は、
該プロセッサが、該メモリから取り出されたリソースライブラリによって特定された該再構成可能なコンピュータのリソースと、該再構成可能なコンピュータの該リソースの特性とに少なくとも基づいて、該所与のアプリケーションの複数の機能をソフトウェア機能およびハードウェア機能に分割することであって、該所与のアプリケーションの該複数の機能のうちの所与の少なくとも１つの機能は、ソフトウェア機能およびハードウェア機能の両方に分割される、ことと、
該プロセッサが、
ランタイム時の該再構成可能なコンピュータの利用可能なリソースの処理バンド幅であって、該処理バンド幅は、使用されていないリソースの数と、使用されているリソースが利用可能である時間の量と、該リソースライブラリによって特定された該再構成可能なコンピュータの該リソースの特性に基づいて計算され、該リソースライブラリによって特定された該再構成可能なコンピュータの該リソースの特性は、該利用可能なリソースの処理能力を含む、処理バンド幅と、
該所与の少なくとも１つの機能のリソース要件と
に少なくとも基づいて、該所与の少なくとも１つの機能を実行するために、ソフトウェア機能を使用するかハードウェア機能を使用するかを、該所与の少なくとも１つの機能に対して、ランタイム中に決定することと
を含む、方法。
【請求項２】
前記再構成可能なコンピュータは、少なくとも１つのプログラマブルロジックデバイス上で実行される中央プロセッシングユニットと、該中央プロセッシングユニットに結合されたプログラマブルロジックとを備え、該プログラマブルロジックは、前記所与のアプリケーションを処理するために前記コンピュータシステムの能力を最適化するように再構成可能である、請求項１に記載の方法。
【請求項３】
前記再構成可能なコンピュータは、マイクロプロセッサ上で実行される中央プロセッシングユニットと、該中央プロセッシングユニットに結合されたプログラマブルロジックとを備え、
該プログラマブルロジックは、前記所与のアプリケーションを処理するために前記コンピュータシステムの能力を最適化するように再構成可能である、請求項１に記載の方法。
【請求項４】
前記再構成可能なコンピュータは、部分的にマイクロプロセッサ上で実行されるとともに部分的にプログラマブルロジックデバイス上で実行される中央プロセッシングユニットと、該中央プロセッシングユニットに結合されたプログラマブルロジックとを備え、該プログラマブルロジックは、該所与のアプリケーションを処理するために該コンピュータシステムの能力を最適化するように再構成可能である、請求項１に記載の方法。
【請求項５】
前記リソースライブラリは、前記プログラマブルロジックリソースの特性を特定する、請求項１に記載の方法。
【請求項６】
前記リソースライブラリは、前記プログラマブルロジックリソースの特性および前記再構成可能なコンピュータに関連付けられたメモリの特性を特定する、請求項１に記載の方法。
【請求項７】
前記プロセッサが、ユニットハードウェア概念に基づいてハードウェア機能を作成することをさらに含む、請求項１に記載の方法。
【請求項８】
前記プロセッサは、前記ハードウェア機能と前記ソフトウェア機能とを自動的に分割する、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラマブルロジックデバイス技術に係り、より具体的には、システムの能力を高められるように最適化して与えられたアプリケーションを実施するようプログラマブルロジックが再構成されるコンピュータシステムに関する。
【背景技術】
【０００２】
従来のコンピュータ構造における唯一のプログラマブル要素はマイクロプロセッサである。マイクロプロセッサは特定のアプリケーションに対応してカスタマイズすることができない固定的な命令セットをもって構成されている。マイクロプロセッサは、アプリケーションのいずれのソフトウェア実行機能をも仮想的に実行させることができる点において柔軟である。しかしながら、所与の機能の実行速度は、マイクロプロセッサ上において実行すると一般的に低下する。これは、ソフトウェアで実行される機能はマイクロプロセッサの一般命令セットを使用するにはかなり複雑なものであるためである。
【０００３】
従来のコンピュータ構造によれば、ソフトウェアは通常限られた範囲のプラットフォーム上でのみ動作する。アプリケーション技術者が所与のマイクロプロセッサ上で動作するようにアプリケーションを作成することを決定した場合、アプリケーション技術者が使用することができる命令セットはマイクロプロセッサ上に永久的に常駐するものの１つとして限定される。従ってアプリケーション技術者は、アプリケーションがハードウェアプラットフォームに適しているか、またはソフトウェアプラットフォームに適しているかを選択する必要がある。ハードウェアに基づいたシステムが非柔軟かつ非効率的であるためしばしばソフトウェアプラットフォームが好まれるが、多くの場合において、マイクロプロセッサ上に常駐する一般命令セットが特定のタイプのアプリケーションソフトウェアに対して不充分な性能をもたらす。例えば、グラフィックスを多用するアプリケーションは、通常例えば３Ｄ処理等のアプリケーションのうちの特定のグラフィック要素に特別に適したハードウェアを必要とする。ハードウェアプラットフォーム用のプログラミングに関する複雑性を回避するため技術者はソフトウェアに頼るが、これによってアプリケーションの速度が大幅に低下する危険性がある。
【０００４】
最近、プログラマブルロジックデバイスに基づいた再構成可能なコンピュータの概念が提案された。この種のシステムは、例えば、欧州特許第Ａ−０８０１３５１号公報（インタナショナルコンピュータリミテッド）に記載されており、これは再構成可能な回路を有する内蔵周辺機器コントローラを開示している。この種のシステムは、さらに国際特許出願第ＷＯ９４／１０６２７号公報（ギガオペレーションズコーポレーション）にも記載されており、これは再構成可能な回路を有する分散プロセッシングユニットを開示している。“プログラマブルハードウェアデバイスソフトウェアアクセレーション”（エドワード・Ｍ・Ｄ氏等によるＩＥＥ会報：コンピュータおよびデジタル技術、ＧＢ、ＩＥＥ、１９９６年第１４３刊第１号、第５５−６３頁、ＸＰ０００５５４８２０号、ＩＳＳＮ：１３５０−２３８７）および米国特許第５６８４９８４号公報には、ハードウェアに基づいた機能を実行するために使用されるプログラマブルハードウェアが開示されている。再構成可能なコンピュータの目的は、カスタマイズすることができるハードウェアを使用して並行性ならびに高速実行時間を提供することによって従来のコンピュータより性能を向上させることである。プログラマブルロジックデバイスを使用することによって柔軟性を増加させることができ、これはこの種のプログラマブルロジックデバイスがデバイス内に新しい構成データをロードすることによって再構成し得るためである。このことにより再構成可能なコンピュータにおいて、従来のコンピュータのような単一の命令セットではなく多数の命令セットを付加することができる。コンピュータが再構成可能なロジックを使用する場合、一定数のハードウェアを使用してより多くの機能を実行することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】欧州特許第Ａ−０８０１３５１号公報
【特許文献２】国際特許出願第ＷＯ９４／１０６２７号公報
【特許文献３】米国特許第５６８４９８４号公報
【非特許文献】
【０００６】
【非特許文献１】“プログラマブルハードウェアデバイスソフトウェアアクセレーション”（エドワード・Ｍ・Ｄ氏等によるＩＥＥ会報：コンピュータおよびデジタル技術、ＧＢ、ＩＥＥ、１９９６年第１４３刊第１号、第５５−６３頁、ＸＰ０００５５４８２０号、ＩＳＳＮ：１３５０−２３８７）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、与えられたアプリケーションを処理するコンピュータの能力を最適化するよう再プログラムすることができるプログラマブルロジックデバイスに基づいた、改善された再構成可能なコンピュータを提供することである。
【課題を解決するための手段】
【０００８】
本発明のこれらおよびその他の対象は、本発明の原理に従ってプログラマブルロジックに基づいた再構成可能なコンピュータシステムを提供することによって解決される。
【０００９】
再構成可能なコンピュータのアプリケーションを開発しているアプリケーション技術者は、そのコンピュータ上でどのリソースが使用可能であるかについて配慮する必要はない。単一のプログラマブルロジックデバイスのサイズまたはプログラマブルロジックデバイスの集合に基づいたハードウェア集約が使用される。アプリケーションがコンパイルされると、ハードウェア内で実行されるアプリケーションの機能は、プログラマブルロジックデバイスと同じサイズかまたはこれより小さいサイズの、構成データを含むブロックに分割される。
【００１０】
再構成可能なコンピュータシステムは、モジュール式かつ拡張可能である。より多くのハードウェアリソースが追加された場合、システムの性能が向上する。増強された性能の利点を得るためにアプリケーションを再度コンパイルする必要はない。
【００１１】
ある実行時間中において使用可能なリソースに基づいて、どの手段が動作するかを選択するために仮想のコンピュータオペレーティングシステムを使用する。アプリケーション技術者が高レベルの言語を使用してプログラマブルロジックリソースを使用する再構成可能なコンピュータシステム上で実行することができるアプリケーションのためのハードウェア手段およびソフトウェア手段の両方を開発することを可能にするソフトウェア開発ツールを提供することができる。これらのツールは関数からなるシステム設計言語によって書かれた特性を自動的に分割しソフトウェア機能またはハードウェア機能に割り当てる分割手段を備えることができる。ソフトウェア機能およびハードウェア機能は、スレッドならびにプログラマブルロジックリソース構成データにそれぞれコンパイルすることができる。これらのスレッドならびに構成データは、アプリケーションを実行するために実行時間中において仮想コンピュータオペレーティングシステムによって使用することができる。
【００１２】
再構成可能なコンピュータシステムは、アプリケーション技術者に対して１つのアプリケーションのための性能要件を特定するメカニズムを提供する。例えば、グラフィックスアプリケーションは、単位時間にディスプレイスクリーン上に描写される多辺形の数に応じて特定の処理量を必要とする。秒当りに百万の多辺形を描写する必要がある場合、例えば、アプリケーション技術者は、仮想コンピュータオペレーティングシステムに対して、多辺形を描写する機能が１μｓ以内のその動作を完了させる必要があることを特定することができる。
【００１３】
仮想コンピュータオペレーティングシステムは、このシステムを使用して動作するアプリケーションの性能（ならびに個々の機能）をモニタする能力と、特定のアプリケーションおよび個々の機能に対してより多くのリソースを再配分して性能要件を満たすことを保持する能力を備えている。仮想コンピュータオペレーティングシステムは、特定の機能を実行する際においてシステムの能力に従ってこの機能をソフトウェアバージョンで実行するかまたはハードウェアバージョンで実行するかを決定することもできる。例えば、別の集中的な演算を要するアプリケーションを実行している際に多辺形描写機能を同時に実行することがスケジュールされた場合、仮想コンピュータオペレーティングシステムによって実行される動的な構成が、いつリソースの配分を決定するか、およびソフトウェアバージョンの多辺形描写機能を使用するかまたはハードウェアバージョンの多辺形描写機能を使用するかを考慮することができる。
【００１４】
プログラマブルロジックリソースの中からアプリケーションの機能を配分する仮想コンピュータオペレーティングシステムが提供される。仮想コンピュータオペレーティングシステムは、仮想コンピュータ核サービス要素を含むことができる。仮想コンピュータ核サービス要素は仮想ロジックリソースマネージャを含む多様なリソースマネージャを含むことができる。
【００１５】
実行時間中、特定の再構成可能なコンピュータシステムが仮想ロジック能力を伴う仮想オペレーティングシステムを有する場合、仮想ロジックマネージャはプログラマブルロジックリソースと二次記憶デバイスとの間におけるプログラマブルロジック構成データおよびアプリケーション状態情報の交換を制御することができる。このことによって限られたリソースしか持たない再構成可能なコンピュータシステムにおいて複雑なアプリケーションを実行することが可能になる。
【００１６】
本発明のその他の詳細、特徴、ならびに種々の利点は、添付図面を参照しながら以下に記述する好適な実施例の詳細な説明によって明らかにされる。
【図面の簡単な説明】
【００１７】
【図１】本発明に係る説明的な再構成可能なコンピュータシステムを示すブロック線図である。
【図２】本発明に係る再構成可能なコンピュータのブートプロセス内に含まれる代表的なステップを示すフローチャートである。
【図３】本発明に係る再構成可能なコンピュータの代表的なオペレーティングシステム核サービスを示すブロック線図である。
【図４】本発明に係る再構成可能なコンピュータ内へ機能をロードするために仮想コンピュータオペレーティングシステムによって使用される代表的なステップのフローチャートである。
【図５Ａ】本発明に従って、仮想コンピュータオペレーティングシステムがユニットハードウェアに対して設計されたアプリケーションをどのように使用し、コンピュータシステム内の１つまたは複数のプログラマブルロジックリソースをアプリケーションの機能に対してどのように配分するかを示す概略図である。
【図５Ｂ】本発明に従ってプログラマブルロジックリソースがどのように複数の機能に対して配分されるかを示す概略図である。
【図６】本発明に係る再構成可能なコンピュータの代表的なソフトウェア開発の流れを示すブロック線図である。
【図７】本発明に係る再構成可能なコンピュータのための単純化された代表的なソフトウェア開発の流れを示すブロック線図である。
【発明を実施するための形態】
【００１８】
図１において、本発明に係る再構成可能なコンピュータシステムの全体的な構造が概略図として示されている。再構成可能なコンピュータシステム５内のハードウェアリソースは、プログラマブルロジックデバイス内で実行可能な中央演算装置（ＣＰＵ）１６、実在のマイクロプロセッサ、またはこれらの要素の組み合わせと、メモリ１２と、入力／出力（Ｉ／Ｏ）デバイス１８（プログラマブルロジックデバイスまたはその他の適宜なデバイスに基づくものとし得る）と、相互接続ネットワーク２２とからなる。
【００１９】
プログラマブルロジックデバイスは、通常プログラマブルロジック領域、ルーティング構造、入力および出力領域、メモリ領域、ならびに構成記憶装置（すなわちプログラマブルロジック領域内のロジック要素を構成するために使用される構成データを記憶するためのメモリ）のアレーを備えている。プログラマブルロジックデバイスによって実行されるロジック機能は、構成記憶装置内に蓄積された構成データ、構成記憶装置からロジック領域、ルーティング構造、入力および出力領域、ならびにメモリ領域への接続によって決定される。構成記憶装置は、例えば、実質的に無限回書き込むことができるスタティックＲＡＭに基づいたものとすることができる。他方、消去可能なプログラマブルＲＯＭデバイス等のプログラマブルロジックデバイスの外部のデバイスを、プログラマブルロジックデバイスの内部スタティックＲＡＭに代えて構成記憶装置として使用することもできる。必要に応じて、実質的に回数を書き込むことができるその他のいずれかのメモリまたは記録デバイスを使用することができる。従って、プログラマブルロジックデバイスによって実行されるロジック機能は、無数回にわたって回路内で変更することができる。好適なプログラマブルロジックデバイスの一例として、カリフォルニア州サンノゼ市アルテラ社によるフレックスＥＰＦ１０Ｋ５０デバイスが挙げられる。この型式のプログラマブルロジックデバイスは単に例示的なものである。必要に応じて、その他の適宜な型式のプログラマブルロジックデバイスをシステム５内において使用することができる。必要であれば、プログラマブルロジックデバイスは１つまたは複数の構成記憶装置の部分的な再構成を補助することができる。
【００２０】
不揮発ＲＡＭ１０は、初期化情報を記憶するために使用することができる。再構成可能なコンピュータシステムに初めて電源が付加された際、コンピュータを初期化するために初期化情報を使用することができる。このプロセスは“ブートストラッピング”として知られている。
【００２１】
演算に使用されるメモリデバイスは、ＲＡＭデバイス１２とすることができる。これは、スタティックまたはダイナミック集積回路メモリ技術によって形成することができる。スタティックまたはダイナミックメモリ技術の選択は、このメモリによって実行されることを必要とする演算機能に基づいて決定することができる。スタティックＲＡＭデバイスはダイナミックＲＡＭに比べて高速なアクセス時間を有するが、記録セルごとにより多くのトランジスタを使用する上に、同等な記録密度でもより高い製造コストを要する。所定の演算機能に対する好適なメモリ技術の決定において、アクセス時間、密度、ならびにコストの組み合わせが要素となる。
【００２２】
相互接続ネットワーク２２は、それぞれの物理的リソースを結合するワイヤ（例えば、バス）として形成される。相互接続ネットワーク技術は、位相幾何を動的に再構成することができるプログラマブルロジックデバイスまたはプログラマブル相互接続デバイスを使用して形成することができる。この技術は、特定の演算機能に対して最適化される。考えられるネットワーク位相幾何の例としては、メッシュ、全または部分クロスバー、小集団、ハイパーキューブ、分散または共有メモリ階層構造等が挙げられる。
【００２３】
Ｉ／Ｏ接続２０は、再構成可能な演算アレーをキーボード、光学ディスプレイ、等の外部機器、ハードディスクドライブ等の大量記憶装置に結合するか、または他の再構成可能または再構成不可能なコンピュータシステムを含んだコンピュータネットワークに接続するワイヤによって形成することができる。
【００２４】
必要であれば、プログラマブルロジックデバイスは、ロジックデバイス１４に対する組み合わせあるいは連続ロジック機能か、マイクロプロセッサ１６に対するマイクロプロセッサ機能か、またはＩ／Ｏインタフェース１８に対するＩ／Ｏ機能を実行するように使用することができる。これらの機能のうちのどれか、例えばマイクロプロセッサ機能は、必要に応じて固定されたハードウェアによって実行することができる。
【００２５】
この種のシステムの拡張は、より多くのプログラマブルロジックデバイスの追加を含むことができる。システムにプログラマブルロジックデバイスを追加するに従って、処理能力が増加する。拡張性およびモジュール性によってプログラマブルロジックデバイスリソースの増加が可能となり、結果としてシステム能力の増加がもたらされる。
【００２６】
メモリ１２は、アプリケーションならびにシステムプログラムおよびデータを実行するためのメモリ階層構造を補助する。アプリケーションおよびシステムプログラムは、マイクロプロセッサコードおよびプログラマブルロジックデバイス構成データを含むことができる。
【００２７】
プログラマブルロジックデバイスは、アプリケーションの継続中にのみ必要とされるアプリケーション固有のＩ／Ｏデバイス１８を形成するよう構成することができる。この種のデバイスは、イーザネットプロトコル、スモールコンピュータシステムズインタフェース（ＳＣＳＩ）プロトコル、周辺機器相互接続（ＰＣＩ）プロトコル、ビデオドライバプロトコル等のプロトコルを含むことができる。
【００２８】
相互接続ネットワーク２２は以下の機能を提供するために使用することができ、それらは：プログラマブルロジックデバイス構成バス、アプリケーションメモリバス、およびＩ／Ｏバスである。各バスは独立して機能することができる。プログラマブルロジック構成バスは、システム内において各プログラマブルロジックデバイスを形成するために使用することができる。プログラマブルロジックデバイス構成アドレッシングモードに従って、このデータはプログラマブルロジックデバイスのグループまたは個別のプログラマブルロジックデバイスに同時に伝送することができる。アプリケーションメモリバスは、システムがプログラマブルロジックデバイスのアレーとともに共有または分散メモリシステムを形成することを可能にする。Ｉ／Ｏバスはプログラマブルロジックデバイスを外部のＩ／Ｏデバイスに接続することを可能にする。
【００２９】
不揮発メモリデバイス１０内の情報は、図２に示されているようにシステムをブートストラップするために使用される。ステップ３０においてシステムに電源が投入されると、演算に使用されるプログラマブルロジックデバイスおよびＲＡＭ１２はいずれも前回の構成からの情報を維持しない。不揮発メモリ１０内に記録された情報の目的は、ブートストラップマネージャをロードすることである（ステップ）ブートストラップマネージャは、続いてステップ３４においてベーシックＩ／Ｏサービス（ＢＩＯＳ）をロードし、ステップ３６においてパワーオン自己検査診断プログラムをロードおよび実行し、ステップ３８においてオペレーティングシステム核をロードおよび実行することができる。
【００３０】
不揮発メモリ１０内に記録されたブートストラップインストラクションは、ステップ３６中において演算リソース上で実行することができる。このリソースは専用マイクロプロセッサ、マイクロプロセッサとして構成されたプログラマブルロジックデバイス、マイクロプロセッサと部分的にマイクロプロセッサとして構成されたプログラマブルロジックデバイスとの組み合わせ、またはプログラマブルロジックデバイスロジック回路とすることができる。リソースが専用のマイクロプロセッサである場合、不揮発メモリ１０は単にブートストラッププロセスを実行するために必要とされるマイクロプロセッサインストラクションのみを含んでいる。プログラマブルロジックデバイスをマイクロプロセッサとして構成する必要がある場合、不揮発メモリ１０はプログラマブルロジックデバイス構成データならびにマイクロプロセッサインストラクションを含むことができる。その他の場合、不揮発メモリ１０はロジック回路のためのプログラマブルロジックデバイス構成データを含むことができ、これはブートストラッププロセスを実行するために追加的なプログラムインストラクション必要とするものかあるいは必要としないもののいずれでも可能である。
【００３１】
最終的なブートストラッププロセスはオペレーティングシステム核をロードすることである。このローディングプロセスはプログラマブルロジックデバイスを使用して実行されるマイクロプロセッサのインストラクションのローディングを含むか、またはプログラマブルロジックデバイスに対する構成のローディングを含むことができる。いずれの構成（マイクロプロセッサおよびインストラクション、またはインストラクションを伴っているかあるいは伴わないロジック回路）を使用しても、オペレーティングシステムは仮想コンピュータオペレーティングシステム（ＶＣ−ＯＳ）と呼称することができる。
【００３２】
仮想コンピュータオペレーティングシステムの典型的な要素が図３に示されている。図３の仮想コンピュータオペレーティングシステム４０は、従来のオペレーティングシステムがランタイムマネージメントに関して提供していた基本的なサービスを提供することができる。加えて、仮想コンピュータオペレーティングシステムは、プログラマブルロジックの使用に関してシステム５のサービスを補助する。
【００３３】
仮想コンピュータオペレーティングシステムは、与えられたアプリケーションの機能が実行されることを保証するランタイムマネージメントツールを含んでいる。例えば、ランタイムマネージメント機能は、システム設計レベルで特定された機能およびタイミング条件が満たされていることを保証する。
【００３４】
例えば、マイクロソフトウィンドウズ（登録商標）ＮＴ等の従来のオペレーティングシステムは、従来のコンピュータシステムにおいてランタイム中に使用可能なリソース上において実行される機能をスケジューリングする。この種の従来のコンピュータシステム内のリソースは、アプリケーションプログラムの要求ならびにリソースの使用可能性に基づいてランタイム中に動的に再配分される。各リソースは、物理メモリの再配分を行う仮想メモリマネージャ等のリソースマネージャを備える。従来のオペレーティングシステムにおける最も一般的なリソースマネージャは、ファイルシステムマネージャ、グラフィックスマネージャ、Ｉ／Ｏマネージャ（大容量記録アクセスまたはキーボードあるいはマウス等のシンプルＩ／Ｏデバイスを操作するため）、ネットワークマネージャ、および仮想メモリマネージャである。
【００３５】
本発明によれば、仮想コンピュータオペレーティングシステム４０は、仮想コンピュータオペレーティングシステム４０とこの仮想コンピュータオペレーティングシステム４０のために書かれたアプリケーションとの間のインタフェースを提供するアプリケーションプログラムインタフェース４４を備えている。仮想コンピュータオペレーティングシステム４０は、さらにリソースマネージメント機能を提供する核サービス４２を含んでいる。システム内の各サービスはリソースマネージャを有することができる。例えば、ファイルリソースはファイルシステムマネージャ４６によって操作することができる。グラフィックスリソースはグラフィックスマネージャ４７によって操作し、Ｉ／ＯリソースはＩ／Ｏマネージャ４８によって操作し、ネットワークリソースはネットワークマネージャマネージャ５０によって操作し、仮想メモリリソースは仮想メモリマネージャ５２によって操作することができる。再構成可能なコンピュータシステムは仮想ロジックを有することができ、これは仮想ロジックマネージャ５４によって管理することができ、この仮想ロジックマネージャはアプリケーションによって形成されシステム５内の限られたプログラマブルロジックリソースにアクセスする要求を処理するものである。
【００３６】
従来のオペレーティングシステムは、ＲＡＭの制限を克服するために仮想メモリに依存する。仮想メモリは、ランタイムデータを一時的に保存するために二次記憶装置（ハードディスク等）を使用することができ、そうでない場合このデータは一次記憶装置（ＲＡＭ等）に記録される。アプリケーションによって機能およびデータが要求されると、オペレーティングシステムは要求されたデータがその時点で仮想メモリ内に記録されているかどうかを判断し、もし記録されている場合、そのデータを物理メモリ内にある他のアプリケーションのためのデータをその時点で仮想メモリから要求されている機能およびデータに置き換える。
【００３７】
しかしながら、本発明に係る仮想ロジックマネージャは、プログラマブルロジックデバイスのランタイム配分を行うことができる。仮想ロジックマネージャは、多様なアプリケーションが要求するプログラマブルロジック内で実行される機能のランタイム要件を満たすものである。１つのアプリケーションは、要求を処理するために存在するプログラマブルロジックデバイスを使用して処理される以上の機能を要求することがあり得る。従って、仮想ロジックマネージャは、プログラマブルロジック内で実行される機能のランタイム交換を管理する必要がある。
【００３８】
従来の仮想メモリマネージャは、比較的少ない量の物理メモリを比較的大量の論理メモリとしてアプリケーションに対して提供していた。これは、物理メモリ内外のメモリページを二次記憶装置（通常はローカルハードディスク）に対して（またはここから）ランタイム交換することによって達成される。本発明に係る仮想ロジックマネージャ５４を使用すれば、比較的少ない量の物理プログラマブルロジックデバイスをアプリケーションに対しては比較的大量の論理プログラマブルロジックデバイスとして提供することができる。これは、仮想ロジックマネージャ５４を使用してプログラマブルロジックデバイス構成メモリ（すなわち、構成ストア）内外のプログラマブルロジックデバイス構成データおよび状態情報を二次記憶装置（通常ローカルハードディスクドライブ）に対して（またはここから）ランタイム交換することを実施することによって達成される。
【００３９】
図４には、システム内で実行する機能をロードするプロセスが示されている。このプロセスは、機能が実行される時間に使用される最適の機能手段（ソフトウェアまたはハードウェア）を選択するために使用される。
【００４０】
使用可能なシステムのハードウェア処理バンド幅ならびに使用可能なシステムのソフトウェア処理バンド幅がステップ１５０において決定される。ソフトウェア処理バンド幅は、システム内の全てのマイクロプロセッサが休止中で機能を実行していない時間の総量から算出される。ハードウェア処理バンド幅は、システム内の非使用のプログラマブルロジックリソースと使用されているプログラマブルロジックリソースがデータを処理していない時間の総量とに基づいて計算される。
【００４１】
機能のために必要とされるハードウェア処理バンド幅ならびに機能のために必要とされるソフトウェア処理バンド幅は、ステップ１５２において決定される。これらの要求は、アプリケーション技術者によって絶対要求として特定されるか、または前記の実行される機能に並んで付加された追加的な小機能を実行する際のシステムの性能に基づいて特定することができる。この小機能はステップ１５２で実施することができるとともにシステムの性能を測定することができる。
【００４２】
ステップ１５４において、要求されるソフトウェア処理バンド幅がシステム内で使用可能なバンド幅より小さいかどうかが判断される。要求されるソフトウェア処理バンド幅がシステム内で使用可能なバンド幅よりも小さい場合、ソフトウェア手段がシステムにロードされステップ１６０においてマイクロプロセッサ上で実行される。ソフトウェア手段がハードウェア手段よりも少ないシステムリソースを使用するため、この選択がなされる。
【００４３】
ソフトウェア処理バンド幅が適正でない場合、ステップ１５６においてハードウェア手段が評価される。使用可能なハードウェアバンド幅が許容可能である場合、ステップ１６２において機能がシステム上にロードされてプログラマブルロジックリソース上で直接的に実行される。ステップ１５６において、使用可能なハードウェアのバンド幅が許容不可能であると判断され、さらにステップ１５８において性能要求が“ハード”でありつまり性能要求を満たす必要がある場合、ユーザに対してエラーメッセージが提供されステップ１６４において機能（およびその親機能）のロードが中止される。要求が“ハード”でない場合、ステップ１６２において機能がロードされ、低減された性能レベルで実行される。
【００４４】
いずれかの機能手段がシステム内にロードされた後（どの機能が優先度が低いものでありこの優先度の低い機能を必要に応じて除去するかどうかを決定するために通常の手段を使用し）、システム内の機能の性能がステップ１６６でモニタされる。バンド幅を処理するシステムの機能に対して与えられた優先度は、要求されるバンド幅と実現される実際のバンド幅との差に比例する。
【００４５】
優先度マネージメントプロセスによってリソース配分に対して新しい機能がスケジューリングされると、仮想コンピュータオペレーティングシステムのリソース再配分ルーチンによって実施される第１のステップは、機能の拘束を満たすことができるリソースが存在するかどうかを判断することである。このようなリソースが存在する場合、このリソースが前記機能に対して配分される。存在しない場合、物理リソースのプール内に存在する最適の候補が適宜な代替法則を使用して検索される。例えば、あるアプリケーションの所定の機能を実行するために再構成することが可能なプログラマブルロジックリソースが不充分であると判断された場合、仮想コンピュータオペレーティングシステムは再構成が不要なハードウェアリソース（例えば、専用マイクロプロセッサまたはＣＰＵとして動作するよう構成されたプログラマブルロジックデバイス）を使用して所与の機能を実行し得ることを保証するために使用することができる。仮想コンピュータオペレーティングシステムは、マイクロプロセッサ上で機能を実行する前に適正なソフトウェアバージョンの機能がアプリケーション技術者によって提供されているかどうかを保証することができる。
【００４６】
機能の拘束に従って、適宜な置換法則が使用され、これはファーストインファーストアウト、ラストリーセントリユースド、またはラストフリークェントリユースドを含んでいる。ランタイムマネージメントシステムがリアルタイムインタラプト処理プロセス等の優先度の高い機能を検出した際、極端なケースとして１番目の最適なリソースのオンデマンド交換があり得る。
【００４７】
リソース配分およびスケジューリングに関連して、従来のコンピュータ構造のオペレーティングシステムによるランタイムリソースマネージメントは、ＣＰＵスケジューリングのための種々の技術を含んでいる。ワンバイワンベーシック上のコンピュータシステム操作アプリケーション（ならびに同じアプリケーション下の個々の機能）を有することは極めて非効率的となり得る。与えられたいずれかの時間に処理される与えられたいずれかの時間に処理されるタスクに応じて、いくつかのリソースが拘束され、一方その他のリソースはアイドルとなり得る。結果は極めて遅いコンピュータとなる。これに対応して、従来のオペレーティングシステムの殆どにおいては徐々にＣＰＵスケジューリングのコンセプトが適用されるようになってきた。
【００４８】
従来のコンピュータシステムにおけるＣＰＵスケジューリングは、リソースを配分しシステムによって処理される全ての機能の順序がスケジューリングされる。ＣＰＵスケジューリングの目的は、安定したマルチタスク環境を形成することである。この環境は、優先度、Ｉ／Ｏ遅延による機能停止、または各機能を処理する順序を決定付けるために使用されるその他の要因等の各要因の組み合わせに基づいてＣＰＵリソースをアルゴリズム的に配分することによって形成される。例えば、マイクロプロセッサがユーザの入力を待つ点に到達している機能を処理する場合、従来のオペレーティングシステムのＣＰＵスケジューリング特性は、ユーザの入力が可能になるまでの間マイクロプロセッサのリソース（同様に他の使用可能なシステムリソース）を使用する可能性のある他の機能を提供することができる。ユーザの入力が可能になった際、最初の機能がシステム内で休止状態になっていた際に放棄していたリソースを再び使用する。
【００４９】
本発明によれば、１つまたは複数のマイクロプロセッサ上においてプログラマブルロジックデバイスが完全または部分的に構成される再構成可能なコンピュータシステムにおいて、スケジューリングシステムの機能は従来のＣＰＵスケジューリングシステムと比べていくらか異なった作用をもたらす。従来のＣＰＵスケジューリングはマイクロプロセッサリソースを各機能に対して配分し、プログラマブルロジックスケジューリングはプログラマブルロジックリソース（そのうちのいくつかとすることもできる）を各機能に配分する。プログラマブルロジックリソースはマイクロプロセッサとしてプログラムする必要はないが、所要の機能、例えばＩ／Ｏ機能、グラフィックス機能、ネットワーク機能等を実行するようにプログラムすることができる。再構成可能なコンピュータのオペレーティングシステム内のこの種の特徴の目的は、複数グループのプログラマブルロジックリソース中において多様なタスクを同時に処理するタスクを管理することを補助することである。他方、従来のコンピュータのオペレーティングシステムにおいて、ＣＰＵスケジューリング能力の第一の目的は、与えられたある時点において能動である種々のタスクによって高い処理能力が要求されるために生じるマイクロプロセッサの停止を削減することである。
【００５０】
再構成可能なコンピュータに対する典型的なスケジューリングは、プログラマブルロジックリソースを各アプリケーション機能に配分することができるタイムマルチプレクシングを使用することができる。このことは、予め設定された時間間隔における異なった機能間の切換えを含むことができる。重要な例外は、リアルタイムインタラプトとＩ／Ｏ機能である。
【００５１】
再構成可能なコンピュータシステムにおいてリソースが休止状態になりすぐに配分される機能が１つもスケジューリングされていない場合、機能先取りが、機能が要求される前にプログラマブルリソースを構成データとともにロードし得るようにするためのプログラマブルロジックリソース構成オーバヘッドに関連する時間コストを最小化することを補助する。
【００５２】
プログラマブルロジックデバイスをロードすることに関連する時間コストは、現在市販されているプログラマブルロジックデバイスにおいてミリ秒の単位である。必要であれば、プログラマブルロジックデバイスを構成するために必要とされる時間は、増加されたパイプラインおよび並列性をデバイス上において使用することによって縮小（例えば、ナノ秒の単位まで）することができる。
【００５３】
従って、一群のプログラマブルロジックリソースに基づいた再構成可能なコンピュータシステムは、システム内で使用することができるプログラマブルロジックの数が比較的大きいため、比較的大きな処理能力を備えると言う利点を有する。再構成可能なシステムにおいて、より多くの処理能力が必要とされる場合、単に相互接続ネットワーク上により多くのプログラマブルロジックデバイスを追加すれば良い。システムにより多くのプログラマブルロジックデバイスを追加した後アプリケーションを再度コンパイルする必要はなく、これはランタイムマネージャが新しいハードウェアを自動的に検出してランタイム実行能力の中に組み込むからである。これらのデバイスの全てが仮想コンピュータオペレーティングシステムを使用して制御および監視される。
【００５４】
ソフトウェア設計者によって設定された最小および最大機能実行目標は、リソース配分に対してスケジューリングされた次の機能を決定することができる。加えて、その時点で実行している機能の優先度もスケジューリングされる次の機能の決定に使用される。
【００５５】
本発明の別の特徴は、プログラマブルロジックデバイスのデフラグメント能力である。従来のコンピュータにおいて、ハードドライブ等の記憶装置はドライブ上のリソースが継続的に配分および消去されることによって生じる問題を防止するためにデフラグメントすることが可能であった。従来のハードドライブ上の消去されたスペースは、連続する大きなスペースを必要とする機能に対して再配分するために充分なスペースを有してないことがあり得る。本発明によれば、単一のプログラマブルロジックデバイスの部分構成をデフラグメントするためにプログラマブルロジックデフラグメンテーションを使用することができる。これによって、予め配分された多数の小さなプログラマブルロジックの領域を使用可能なプログラマブルロジックのより大きな稼動領域を形成するために再配分することが可能になる。このことは、プログラマブルロジックの多様な部分への特定の各スイッチに対して再構成データを再配分して所要のプログラマブルロジックデバイス機能を提供することを含んでいる。
【００５６】
本発明の別の特徴は、ソフトウェア開発に関するものである。ソフトウェア開発プロセスは、演算システムを使用する重要な部分である。複雑な機能を実行するとともにユーザが演算システムと相互交信するための複雑なインタフェースを形成することが重要である。最も一般的な開発ツールは、ＪＡＶＡ（登録商標）、Ｃ＋＋、ＡＤＡ、ＬＩＳＰ、ＣＯＢＯＬ、ＶＩＳＵＡＬ  ＢＡＣＩＣ等の高級プログラム言語を含んでいる。ソフトウェア開発プロセス中における一貫性を保持するため、再構成可能なコンピュータシステムに対する高級言語は、従来の高級プログラミング言語の原理を使用して設計されている。
【００５７】
アプリケーションは、通常複数の機能を備えている。例えば、グラフィックを多用するアプリケーションは、ある機能をレンダリングサーフェイスのために使用し、その他の機能を光線追跡のために使用することができる。仮想コンピュータオペレーティングシステムは、プログラマブルロジックデバイスリソースをアプリケーションの機能に対して配分する。
【００５８】
ユニットハードウェア概念が使用される。すなわち、アプリケーションエンジニアは、そのアプリケーションを実行するいずれかの特定のシステムがいくつのプログラマブルロジックデバイスリソースを有しているかを考慮する必要はない。むしろ、少なくとも１つのプログラマブルロジックデバイスの最小リソース要求に従って、全てのリソースを使用可能とする概念が形成される。
【００５９】
このことは、図５Ａに示されている。ハードウェア機能１８１はユニットハードウェア概念（すなわち、このアプリケーションに対するハードウェア描写言語は、ハードウェア１８２のユニットとして示されているプログラマブルロジックリソースまたはプログラマブルロジックリソースの集合体内で実行される構成データのブロックにコンパイルされると仮定する）に基づいてＨＤＬコンパイラ１８０によってコンパイルされる。ユニットハードウェア１８２は、例えば、単一のプログラマブルロジックデバイスまたは単一のプログラマブルロジックデバイスの一部分とすることができる。ＨＤＬコンパイラ１８０は、構成データを伴ったＶＣ−ＯＳ１８４を構成データのブロックの形式で提供し、ここで各ブロックはユニットハードウェア１８２に適合するものである。ＶＣ−ＯＳ１８４は必要に応じてプログラマブルロジックデバイスリソースを前記のブロック（これらが機能を形成し、さらにこれがアプリケーションを形成する）に配分する。
【００６０】
図５Ａの例において、ＶＣ−ＯＳ１８４はアプリケーションのブロック１に配分されたプログラマブルロジックリソース１８６を有し、アプリケーションのブロック２に配分されたプログラマブルロジックリソース１８８を有し、・・・アプリケーションのブロックｎに配分されたプログラマブルロジックリソース１９０を有する。ロジックリソース１８０，１８８，および１９０等のロジックリソースは、それぞれ単一のプログラマブルロジックデバイスに基づくか、それぞれプログラマブルロジックデバイスの一部分に基づくか、それぞれそのようなデバイス構成組み合わせに基づくか、またはそれぞれ他の好適なロジックリソースに基づくものとすることができる。配分されるリソースはシステム毎あるいはあるシステムにおいてもランタイム毎に変化することができるが、ＨＤＬコンパイラ１８０は不変のユニットハードウェア概念に基づいてアプリケーションをコンパイルすることができる。仮想ロジックマネージャは、特定のプログラマブルロジックリソースが限られている場合、その中の構成データのブロックを交換することができる。さらに、図５Ｂに示されているように、ＶＣ−ＯＳは１つのプログラマブルロジックデバイスリソースを複数の構成データのブロックに配分することができる。
【００６１】
図６には、高レベルの設計仕様またはアルゴリズムのコンパイル、ならびに再構成可能なハードウェア構造上での実行が詳細に示されている。仕様（アルゴリズム）７０、拘束のセット７４、およびリソースライブラリ７６がソフトウェア開発ツール１９２上に入力として提供される。仕様は、システム設計言語で書くことができる。仕様において、アプリケーション技術者はシステム設計言語によって提供されるツールを使用してアプリケーションを書くだけで良い。アプリケーション技術者は、システム設計言語によって作成された機能のソフトウェアバージョンならびにハードウェアバージョンを考慮する必要はない。分割手段７２は仕様７０をソフトウェア機能７８およびハードウェア機能８０に分割することができる。その結果、各機能は完全にソフトウェア上（例えばマイクロプロセッサ）で実行するか、完全にハードウェア上（例えばプログラマブルロジックデバイス）で実行するか、またはそれらの組み合わせとすることができる。それぞれの機能的分割部分に対してソフトウェア操作およびハードウェア操作の両方が形成され、これは所要の部分手段を実行する決定がランタイムが開始するまで遅延する可能性があるからである。システム設計言語プロファイラは、システム設計言語コード上で実行され重要なパスの分析および区分の割当てを行うこともできる。
【００６２】
分割操作は拘束７４を考慮に入れることもできる。２つの一般型式の拘束７４が存在する。第１に、システム設計言語仕様７０の機能的限界は、機能間のタイミング関係を含むことができ、機能間に並行または連続的拘束が存在することも可能である。第２に、コスト関数はリソースライブラリ７６内のハードウェアリソースを使用することに関連付けられる。リソースライブラリ７６は、使用可能な各ハードウェアリソースついての詳細を含んでいる（一般的にこれらはマイクロプロセッサ、メモリ、およびプログラマブルロジックデバイス）。これらは、計算速度、待ち時間、ならびにリソースの応答時間あるいは時間のコスト関数（通常はソフトウェア手段に対する）、エリア（通常はハードウェア手段に対する）、または通信（時間およびエリアの両方にまたがる）等を含むことができる。
【００６３】
適合しなければならない拘束を“ハード”拘束と定義することができる。ハード拘束の１例は、リアルタイムＩ／Ｏまたはインタラプトプロセスを含む拘束である。“ソフト”拘束と定義される拘束もあり得る。ソフト拘束の１例は、スプレッドシート内の等差関数に関連付けられた拘束である。これらの等差関数が特定の時間内に実行されることは重要でなく、これらの機能が高速に実行されることと、アプリケーションの使用が簡便になることが重要である。
【００６４】
リソースライブラリ７６は、各種のリソースの特性を記している。例えば、マイクロプロセッサは特定のインストラクションセットおよびデータパス幅等の特性を有し、メモリは特定のデータパス幅を有し、プログラマブルロジックデバイスは特定のロジック容量ならびにＩ／Ｏカウントを有することができる。分割ツール７２はリソースライブラリ７６ならびに拘束７４の特性を考慮するが、あるシステム内に各リソースがそれぞれ何個存在するかは考慮することができない。ランタイムリソースマネージャは、実行中のアプリケーションからの要求に従って機能分割を使用可能なハードウェアリソースにマッピングする必要がある。
【００６５】
一度システム設計言語仕様７０がソフトウェア機能７８とハードウェア機能８０とに分割されると、これらの機能の間においてパラメータの伝送が可能になるようインタフェース機能８６が形成される。これらのインタフェース機能８６は、メモリマッピングされたハードウェア機能８０にパラメータを書き込むソフトウェア手段とするか、またはプログラマブルロジックデバイス内にハードディスクインタフェース回路を構成してファイルシステムの形成を可能にすることを含むことができる。
【００６６】
全ての機能について、ハードウェアならびにソフトウェア手段の両方を備える必要はない。アプリケーション技術者は、ソフトウェアおよびハードウェアの全ての機能を作成することができ、両方を作成できる人とどちらか一方のみを作成できる人が存在する。しかしながら、最適な組み合わせの機能ならびに手段を選択する際にオペレーティングシステムに柔軟性を与えるために両方のバージョンを有することが好適である。
【００６７】
各機能に分割した後、ソフトウェアおよびハードウェア内の各要素は物理的実行技術にマッピングする必要がある。このことは、高級言語コンパイラ８２を使用してソフトウェア機能７８をスレッド８８にコンパイルし、ハードウェア表記言語コンパイラ８４を使用してハードウェア機能８０を構成パターン９０にコンパイルすることを含んでいる。このステージにおいて、例えば一定増加（等差および幾何学の両方）、強度低下（例えば、ａ＋ａ＝２＊ａ、これは考え得るコスト積算段を除去する）、パイプライン化、またはリソース共有等の多様な最適化および節約技術が適用される。
【００６８】
実行可能な最後のコードイメージ（ソフトウェアおよびハードウェア機能ならびにパラメータアドレスを有するリンカ９２）は、主機能と動的に連結された機能を有し、それらの全てがソフトウェアまたはハードウェア、あるいはその両方において実行される。システム設計言語分割手段７２によって形成されるこれらの機能および拘束７４は、仮想コンピュータオペレーティングシステム９４への入力である。
【００６９】
他方、図７に示されているように、仕様をソフトウェア要素およびハードウェア要素に分割することによって、ユーザは設計の流れを単純化することができる。この流れは、機能的タイミング拘束はまったく受け継がない（これはシステム設計言語によって書かれてないためである）。必要であれば、拘束を考慮に入れることも可能である。制御の主的な流れはマイクロプロセッサ１３０（またはマイクロプロセッサとしてプログラムされたプログラマブルロジックデバイス）上において実行され、これはプログラマブルロジック１３２上に存在する機能を呼び出すことができる。
【００７０】
マイクロプロセッサ１３０またはプログラマブルロジックデバイス１３２のいずれかを目的とするアルゴリズム機能は、プログラマブルロジック１３２内で実行される機能のために、高級言語１１４によって書くことができ、高級言語−ハードウェア記載言語コンパイラ１１８を使用してハードウェア記述言語に変換される。ソフトウェア機能とハードウェア機能との間でパラメータを伝送するためのインタフェース機能１１２も高級言語で書かれている。
【００７１】
高級言語コンパイラ１１６は、ソフトウェア機能１１０をコンパイルするとともに、リンカ１２４内のハードウェア記載言語コンパイラ１２０からの構成データ１２６に連結されているスレッド１２２を形成する。これらの機能は、その後仮想コンピュータオペレーティングシステム１２８によって使用される。
【００７２】
使用可能なリソース、アプリケーション技術者のインストラクション、および拘束に基づいて、仮想コンピュータオペレーティングシステムは、特定のアプリケーションを実行するためにソフトウェア手段、ハードウェア手段、またはその組み合わせのいずれかを使用するかを決定することができる（実行時間中またはソフトウェア実行中のいずれか）。このことにより、ソフトウェア上で実行するためにより適した機能がソフトウェアを使用して実行されるため極めて効果的な処理が可能となり、他方プログラマブルロジックハードウェアデバイスに適した機能はプログラマブルロジックリソースを使用して実行される。
【００７３】
以上の記述は単に本発明の原理を説明する目的のものであり、当業者においては本発明の視点および概念を逸脱することなく種々の設計変更をなし得ることが理解されよう。
【図１】
0005509107.tif 000002
【図２】
0005509107.tif 000003
【図３】
0005509107.tif 000004
【図４】
0005509107.tif 000005
【図５Ａ】
0005509107.tif 000006
【図５Ｂ】
0005509107.tif 000007
【図６】
0005509107.tif 000008
【図７】
0005509107.tif 000009