(57)【特許請求の範囲】
【請求項１】
プログラムにより実行される処理の少なくとも一部分の処理が、プログラマブル論理回路で処理できるものであって、かつ、前記プログラムが、プログラム言語で処理を記述したソフトウエアモジュールの組み合わせからなると共に、前記プログラマブル論理回路に構成する回路情報で、前記ソフトウエアモジュールが行なう処理と同じ処理を記述したハードウエアモジュールを、前記プログラム内に備える情報処理システムにおいて、
前記プログラムにより実行される処理の開始と同時に、前記同じ処理を行なう前記ソフトウエアモジュールと前記ハードウエアモジュールとを同時に並行して実行して、前記ソフトウエアモジュールによる処理時間と、プログラマブル論理回路の回路構成時間を含む前記ハードウエアモジュールによる処理時間とを比較する処理時間比較手段と、
前記処理時間比較手段での比較結果に基づいて、前記プログラムに記述された処理を継続して実行するモジュールを、前記ソフトウエアモジュールまたはハードウエアモジュールの一方に決定して、当該決定したモジュールにより前記プログラムに記述された処理を継続して実行する実行モジュール決定手段と、
を備えることを特徴とする情報処理システム。
【請求項２】
請求項１に記載の情報処理システムにおいて、
前記処理時間比較手段は、前記同じ処理を行なう前記ソフトウエアモジュールと前記ハードウエアモジュールとの、それぞれ一回の処理時間を計測することにより、前記ソフトウエアモジュールと前記ハードウエアモジュールとの処理時間が同じになる繰り返し回数を算出し、
前記実行モジュール決定手段は、前記処理時間比較手段により算出された前記繰り返し回数よりも大きい繰り返し回数の処理については、前記ハードウエアモジュールを継続して実行するモジュールとして決定する
ことを特徴とする情報処理システム。
【請求項３】
請求項１に記載の情報処理システムにおいて、
前記処理時間比較手段は、前記同じ処理を行なう前記ソフトウエアモジュールと前記ハードウエアモジュールとの処理時間が、同じになる繰り返し回数を算出し、
前記実行モジュール決定手段は、前記処理時間比較手段により算出された繰り返し回数よりも小さい繰り返し回数の処理については、前記ソフトウエアモジュールを、継続して実行するモジュールとして決定する
ことを特徴とする情報処理システム。
【請求項４】
請求項１に記載の情報処理システムにおいて、
前記処理時間比較手段は、前記同じ処理を行なう前記ソフトウエアモジュールと前記ハードウエアモジュールとの、それぞれ一回の処理時間を計測することにより、前記ソフトウエアモジュールと前記ハードウエアモジュールとの処理時間が同じになる繰り返し回数を算出し、
前記実行モジュール決定手段は、前記処理時間比較手段により算出された前記繰り返し回数と同じ繰り返し回数の処理については、事前に決めた優先モジュールを、継続して実行するモジュールとして決定する
ことを特徴とする情報処理システム。
【請求項５】
請求項１に記載の情報処理システムにおいて、
前記処理時間比較手段は、前記同じ処理を行なう前記ソフトウエアモジュールと前記ハードウエアモジュールとの、それぞれ一回の処理時間を計測することにより、前記ソフトウエアモジュールと前記ハードウエアモジュールとの処理時間が同じになる繰り返し回数を算出し、
前記実行モジュール決定手段は、前記処理時間比較手段により算出された前記繰り返し回数と同じ繰り返し回数の処理については、ハードウエアモジュールを、継続して実行するモジュールとして決定すると共に、次のソフトウエアモジュールを並行して実行するように指示する
ことを特徴とする情報処理システム。
【請求項６】
請求項２に記載の情報処理システムにおいて、
前記実行モジュール決定手段は、前記ハードウエアモジュールを、継続して実行するモジュールとして決定することに加えて、次のソフトウエアモジュールを並行して実行するように指示する
ことを特徴とする情報処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、少なくとも処理の一部分が、回路構成を再構成できるプログラマブル論理回路で処理可能である情報処理システムに関するものである。
【０００２】
【従来の技術】
デジタル回路装置、特に特定用途向け集積回路（ＡＳＩＣ）の分野において、製品の開発期間を短縮するために、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）やプログラマブルロジックデバイス（ＰＬＤ）などで構成されたプログラマブル論理回路が広く使われている。
【０００３】
これらのプログラマブル論理回路は、論理回路を記述する回路情報をこれらに読み込ませることで、内部の論理回路と論理回路間の結線を自由に構成することができる。このため、プログラマブル論理回路装置を用いることで、従来は回路設計の終了後に数週間から数か月を必要とした集積回路の作製時間が不要になるというメリットがある。特に、米国特許第４，７００，１８７号の発明のような電気的に再構成可能なプログラマブル論理回路装置は、一度作製した回路を必要に応じて自由に何度でも変更できるという利点があり、プログラマブル論理回路装置は、ますます広く使われるようになってきている。
【０００４】
ところで、最近の論理回路は複雑さが増し、一つのプログラマブル論理回路装置では実現できない規模にまで回路規模が大きくなっている。
【０００５】
この問題を解決するためのひとつの方法として、異なる時間に異なる論理回路を実現するためにプログラマブル論理回路を処理の途中で再構成することが提案されている。この方法を用いることにより、携帯情報端末のように、装置が小型であるため、内蔵できる回路規模に制約がある場合でも、様々な処理が比較的高速に行えるという利点がある。
【０００６】
しかし、プログラマブル論理回路を再構成するときには、回路全体の回路情報を再度読み込ませるため、再構成に時間がかかるという欠点がある。さらに、処理の途中で再構成することは、処理を一時中断し、その時のデータをプログラマブル論理回路の外部の記憶装置に待避させ、新たな回路情報を読み込んで再構成し、再構成前のデータと再構成に伴う新しいデータを入力するという余分な処理が必要で、データを出し入れする処理は冗長なものとになる。
【０００７】
この問題を解決するために、米国アトメル社の「ＣＯＮＦＩＧＵＲＡＢＬＥ  ＬＯＧＩＣ」という名のデータブックに記載されているプログラマブル論理回路、および米国ザイリンクス社の「ＴＨＥ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＬＯＧＩＣ」という名のデータブックに記載されているプログラマブル論理回路では、データを記憶するためのデータ記憶装置を有し、回路の動作中でも外部の記憶装置から回路情報の一部を読み込んで部分的に再構成を行うことで、再構成するための時間を最小に留めるようにしている。
【０００８】
以上のようなプログラマブル論理回路を用いて、高速かつ簡便に処理することができる計算機システムが、特開平６−３０１５２２号公報に開示されている。この計算機システムは、複数のプログラムを元に、プログラマブル論理回路上にハードウエアを構成する例である。これを、図１１を参照しながら説明する。
【０００９】
すなわち、図１１の従来例においては、計算機で実行するソースプログラム１０００は、回路構成を変更できない固定部と、プログラマブル論理回路のように回路構成を変更できる可変部とで構成される。ライブラリ１００１には、固定部の構成に関する情報と、可変部が構成することができる回路の情報が格納されている。
【００１０】
コンパイラ１００２は、ソースプログラム１０００を解析し、ライブラリ１００１を参照しながら、オブジェクトコードと、ハードウエア構成データに変換する。例えば、コンパイラ１００２は、ソースプログラムのフロー解析を行い、関数の頻度を検出し、その検出した頻度に基づいて、呼び出し回数の多い関数をハードウエアで処理する関数として決定し、ハードウエア構成データ１００３を作成し、出力する。
【００１１】
次に、コンパイラ１００２は、ハードウエアで処理すると決めた部分を所定の可変部で処理することを示すコードを生成する。そして、このコードを、残りのソフトウエアで処理する部分に付加してオブジェクトコード１００４を作成し、出力する。計算機１００５は、固定部と、ハードウエア構成データにより構成された可変部とを用いて、オブジェクトコードに応じた処理を実行する。
【００１２】
このようにして、従来例１では、コンパイル時に呼び出し回数の多い関数をハードウエア化することにより処理全体の高速化を図っている。
【００１３】
次に、前記問題を解決する従来例２として、特開平５−１５０９４３号公報に開示されるコンピュータ装置の場合を説明する。この従来例２においては、プログラマブル論理回路で行う処理と、固定的な論理回路装置で行う処理とに分離された処理を、アプリケーションプログラムとして、情報処理システムとしてのコンピュータ装置で実行する。
【００１４】
この従来例２のコンピュータ装置は、ＣＰＵ、メモリ、プログラマブル論理回路、ハードディスクなどの外部記憶装置、およびその他の入出力インターフェースで構成される。
【００１５】
外部記憶装置には、プログラマブル論理回路の回路データと、アプリケーションプログラムが記憶してある。メモリには、外部記憶装置からアプリケーションプログラムをロードするイニシャルローディングプログラムが記憶してある。
【００１６】
ＣＰＵは、これらのプログラムを実行するとともに、プログラマブル論理回路に回路データを書き込む。プログラマブル論理回路は、ＣＰＵのバスラインに接続され、バスライン上の信号を入力し、論理処理を施してバスラインへ信号を返す。この従来例２における処理手順を、図１２に示す。
【００１７】
まず、実行すべきプログラムファイルを指定する（ステップＳ１）。次に、指定したプログラムファイルに回路データが含まれるか否か判別し（ステップＳ２）、含まれる場合は、回路データ書き込みプログラムをロードして実行し（ステップＳ３）、続いて回路データをロードして（ステップＳ４）、その回路データをプログラマブル論理回路に書き込む（ステップＳ５）。その後、アプリケーションプログラムをロードし（ステップＳ６）、実行する（ステップＳ７）。
【００１８】
指定したプログラムファイルに回路データが含まれていない場合には、ステップＳ２からステップＳ６に飛び、そのまま、アプリケーションプログラムをロードし、実行する。
【００１９】
以上のように、この従来例２の場合、プログラマブル論理回路上の機能を用いる命令実行時に、回路が所定の論理処理を行う。これにより、アプリケーションごとに特殊なハードウエアを設けることなく、必要に応じた論理回路を構成して処理の高速化を図ることができる。
【００２０】
【発明が解決しようとする課題】
しかしながら、以上説明した、処理の一部分をプログラマブル論理回路で処理する情報処理システムの従来例は、次のような問題がある。
【００２１】
従来例１では、プログラマブル論理回路により構成される可変部で実行する処理を、ひとつのプログラム内で呼び出し回数の多い関数のように一元的に決めている。
【００２２】
プログラマブル論理回路は、処理を実行する前に、回路を構成する時間が必要である。したがって、本来、この回路構成時間を含めた可変部の処理時間と固定部の処理時間とを比較して可変部で実行する処理を決める必要があるが、従来例１では、このプログラマブル論理回路の構成時間を考慮して、プログラマブル論理回路により構成される可変部で実行する処理を決めるようにしてはいない。このため、従来例１の場合において、実際には、固定部で処理した方が早い場合も生じ、効率的な処理が行えない問題がある。
【００２３】
このプログラマブル論理回路の回路構成時間を考慮して、可変部と固定部のどちらで処理を実行するかをきめる場合の問題点をさらに、説明する。
【００２４】
一般に、呼び出し回数や処理回数が少ない場合は、実際の処理時間に対して、プログラマブル論理回路の回路構成時間の割合が大きいので、固定部でソフトウエア的に処理したほうが処理時間が短い。一方、呼び出し回数や処理回数が多い場合は、実際の処理時間に対して、プログラマブル論理回路の回路構成時間の割合が小さいので、可変部でハードウエア的に処理したほうが処理時間が短い。
【００２５】
このとき、処理を可変部と固定部に振り分ける基準となる、関数などの呼び出し回数や処理回数は、使用する可変部と固定部のアーキテクチャと処理速度（クロック周波数）により決まる。ある処理を行うために必要なクロック数は、可変部と固定部のアーキテクチャにより決まり、処理時間は必要なクロック数に、クロック周波数の逆数を掛け合わせることにより求められる。
【００２６】
一般的に、情報処理システムのアーキテクチャが異なれば、情報処理を行うプログラムも異なるので、アーキテクチャ毎にプログラムを用意する必要がある。一方、アーキテクチャが同じであれば、クロック周波数が異なっても同じプログラムを用いることができ、クロック周波数が高くなれば処理速度が早くなることが期待できる。
【００２７】
ところが、処理の一部分をプログラマブル論理回路で処理する情報処理システムは、アーキテクチャが同じであっても、先に述べたように、固定部と可変部のクロック周波数が異なれば、可変部と固定部に処理を振り分ける基準となる呼び出し回数や処理回数が異なるので、可変部と固定部のいずれを使用するかを簡単に決めることができるようにするためには、クロック周波数の組み合わせ毎にプログラムを準備する必要がある。
【００２８】
最近では半導体デバイスの製造技術の進歩が早いので、同じアーキテクチャであってもクロック周波数の高い半導体デバイスが次々と開発される。このような状況を鑑みると、クロック周波数の組み合わせ毎にプログラムを準備することは、大変な労力を必要とし、実用的な情報処理システムに適用することは現実的ではないという問題がある。
【００２９】
次に、従来例２では、プログラム毎にハードウエアで処理する部分を、プログラム実行前に、プログラマブル論理回路に構成している。情報処理システムが、複数のプログラムを用いて複数の処理を連続して実行するときには、先に実行されたプログラムによってプログラマブル論理回路上に構成された回路と同じ回路を、後に実行されるプログラムが使用できる場合がある。
【００３０】
先に実行されたプログラムによってプログラマブル論理回路に構成された回路を利用することができれば、回路を構成する時間が短くできるので、先に述べた処理を振り分ける基準となる呼び出し回数や処理回数も小さくなり、比較的、呼び出し回数や処理回数が少ない処理も、プログラマブル論理回路に構成された回路でハードウエア的に処理することで、プログラム全体の処理時間を短くすることができる。
【００３１】
ところが、個々のプログラムを作成するときには、情報処理システムで連続して実行されるプログラムを予測することはできないので、共通に利用されるであろう回路を見出すことは不可能である。よって、複数のプログラムで共通に利用することができる回路であっても、これを利用して、プログラム全体の処理時間を短くすることができないという問題がある。
【００３２】
この発明は、以上の点にかんがみ、プログラマブル論理回路の回路構成時間を考慮して、ソフトウエアとハードウエアのどちらで処理を実行するかを効率良く決定することができるようにした情報処理システムを提供することを目的とする。
【００３３】
【課題を解決するための手段】
上記課題を解決するため、請求項１の発明による情報処理システムは、
プログラムにより実行される処理の少なくとも一部分の処理が、プログラマブル論理回路で処理できるものであって、かつ、
前記プログラムが、プログラム言語で処理を記述したソフトウエアモジュールの組み合わせからなると共に、前記プログラマブル論理回路に構成する回路情報で、前記ソフトウエアモジュールが行なう処理と同じ処理を記述したハードウエアモジュールを、前記プログラム内に備える情報処理システムにおいて、
前記プログラムでの処理開始と同時に、前記同じ処理を行なう前記ソフトウエアモジュールと前記ハードウエアモジュールとを同時に並行して実行して、前記ソフトウエアモジュールによる処理時間と、プログラマブル論理回路の回路構成時間を含む前記ハードウエアモジュールによる処理時間とを比較する処理時間比較手段と、
前記処理時間比較手段での比較結果に基づいて、前記プログラムに記述された処理を継続して実行するモジュールを、前記ソフトウエアモジュールまたはハードウエアモジュールの一方に決定して、当該決定したモジュールにより前記プログラムに記述された処理を継続して実行する実行モジュール決定手段と、
を備えることを特徴とする。
また、請求項２の発明は、請求項１に記載の情報処理システムにおいて、
前記処理時間比較手段は、前記同じ処理を行なう前記ソフトウエアモジュールと前記ハードウエアモジュールとの、それぞれ一回の処理時間を計測することにより、前記ソフトウエアモジュールと前記ハードウエアモジュールとの処理時間が同じになる繰り返し回数を算出し、
前記実行モジュール決定手段は、前記処理時間比較手段により算出された前記繰り返し回数よりも大きい繰り返し回数の処理については、前記ハードウエアモジュールを継続して実行するモジュールとして決定する
ことを特徴とする。
【００３４】
請求項３の発明は、請求項１に記載の情報処理システムにおいて、
前記処理時間比較手段は、前記同じ処理を行なう前記ソフトウエアモジュールと前記ハードウエアモジュールとの処理時間が、同じになる繰り返し回数を算出し、
前記実行モジュール決定手段は、前記処理時間比較手段により算出された繰り返し回数よりも小さい繰り返し回数の処理については、前記ソフトウエアモジュールを、継続して実行するモジュールとして決定する
ことを特徴とする。
【００３５】
また、請求項４の発明は、請求項１に記載の情報処理システムにおいて、
前記処理時間比較手段は、前記同じ処理を行なう前記ソフトウエアモジュールと前記ハードウエアモジュールとの、それぞれ一回の処理時間を計測することにより、前記ソフトウエアモジュールと前記ハードウエアモジュールとの処理時間が同じになる繰り返し回数を算出し、
前記実行モジュール決定手段は、前記処理時間比較手段により算出された前記繰り返し回数と同じ繰り返し回数の処理については、事前に決めた優先モジュールを、継続して実行するモジュールとして決定する
ことを特徴とする。
【００３６】
また、請求項５の発明は、請求項１に記載の情報処理システムにおいて、
前記処理時間比較手段は、前記同じ処理を行なう前記ソフトウエアモジュールと前記ハードウエアモジュールとの、それぞれ一回の処理時間を計測することにより、前記ソフトウエアモジュールと前記ハードウエアモジュールとの処理時間が同じになる繰り返し回数を算出し、
前記実行モジュール決定手段は、前記処理時間比較手段により算出された前記繰り返し回数と同じ繰り返し回数の処理については、ハードウエアモジュールを、継続して実行するモジュールとして決定すると共に、次のソフトウエアモジュールを並行して実行するように指示する
ことを特徴とする。
【００３７】
また、請求項６の発明は、請求項２に記載の情報処理システムにおいて、
前記実行モジュール決定手段は、前記ハードウエアモジュールを、継続して実行するモジュールとして決定することに加えて、次のソフトウエアモジュールを並行して実行するように指示する
ことを特徴とする。
【００３８】
【作用】
上述の構成の発明による情報処理システムにおいては、プログラムにソフトウエアモジュールと、ハードウエアモジュールとが記述されている。処理時間比較手段は、同じ処理を行うソフトウエアモジュールとハードウエアモジュールとを同時に実行して、処理時間を比較する。そして、実行モジュール決定手段は、処理時間が速い方で処理を実行するように決定する。
【００３９】
請求項２の発明においては、同じ処理を行うソフトウエアモジュールとハードウエアモジュールとを同時に実行し、それぞれ１回の処理時間を計測することにより、ソフトウエアモジュールとハードウエアモジュールとの処理時間が、同じになる繰り返し回数を算出する。そして、算出された繰り返し回数よりも大きい繰り返し回数の処理は、ハードウエアモジュールで実行する。
【００４０】
したがって、実際の処理時間として速くなる繰り返し回数からハードウエアモジュールによる処理を用いて処理を実行することができるようになる。
【００４１】
請求項３の発明においては、繰り返し処理であっても、ソフトウエアモジュールで処理をした方が速い間は、ソフトウエアモジュールで処理が行われる。
【００４２】
請求項４の発明においては、ソフトウエアモジュールとハードウエアモジュールとの処理時間が、同じになる繰り返し回数を算出し、算出された繰り返し回数とおなじ繰り返し回数の処理は、事前に決めた優先モジュールで実行される。
【００４３】
請求項５の発明においては、ソフトウエアモジュールとハードウエアモジュールとの処理時間が、同じになる繰り返し回数を算出し、算出された繰り返し回数とおなじ繰り返し回数の処理は、ハードウエアモジュールは実行することとすると共に、次の処理はソフトウエアモジュールで実行するようにする。
【００４４】
この請求項５の発明によれば、ハードウエアモジュールで繰り返し処理を実行中にソフトウエアモジュールによる処理を行うことができ、効率の良い処理が行える。
【００４５】
請求項６の発明においては、請求項５の場合と同様に、ハードウエアモジュールで実行することとに加えて、次のソフトウエアモジュールを実行するようにするので、請求項５の発明と同様の作用効果が得られる。
【００４６】
【発明の実施の形態】
以下、この発明による情報処理システムの実施の形態を、図を参照しながら説明する。
【００４７】
この発明による、少なくとも処理の一部分が回路構成を再構成できるプログラマブル論理回路で処理される情報処理システムの実施の形態の主要な概念構成を図１に示す。
【００４８】
一般的に、情報処理システムが実行するひとつの処理は、さらに細かい処理に分けることができる。この実施の形態において、対象とするアプリケーションプログラム（以下の説明においては、単にプログラムという場合もある）１００は、当該プログラム１００により実行しようとする一連の処理を複数個の処理に分離し、分離された各処理ごとにモジュールとして構成する。この分離された個々の処理を、この明細書では処理モジュールと称することとする。
【００４９】
この第１の実施の形態では、プログラム１００は、個々の処理モジュールをプログラム言語で記述したソフトウエアモジュールＳＭの集まりで構成される。さらに、プログラム１００は、ソフトウエアモジュールＳＭが行う処理と同じ処理を、プログラマブル論理回路３００に構成する回路情報で記述したモジュール（この明細書では、このモジュールをハードウエアモジュールと称する）ＨＭも持つ。
【００５０】
ソフトウエアモジュールＳＭはＣＰＵ２００で実行され、ハードウエアモジュールＨＭはプログラマブル論理回路３００上に構成された回路で実行される。
【００５１】
ここで、プログラム１００には、すべてのソフトウエアモジュールＳＭに対応したハードウエアモジュールＨＭを用意する必要はない。
【００５２】
高精度の乗算や、浮動小数点計算のような数値処理は、プログラマブル論理回路より専用の乗算器や、浮動小数点演算器を備えたＣＰＵやＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）のような専用処理デバイスで実行したほうが処理時間を短くすることができる。
【００５３】
一方、パターンマッチングや整数演算のようなビットレベル処理は、処理ビット幅で並列処理ができるプログラマブル論理回路のほうが効率よく処理できる。また、ハードウエアモジュールＨＭは、プログラマブル論理回路上に回路を構成するための余分な時間が必要である。
【００５４】
よって、繰り返し回数が少ない処理では、たとえプログラマブル論理回路が得意なビットレベル処理であっても、回路構成時間まで考慮すると、ソフトウエアモジュールＳＭによる処理時間よりも長くなる場合もある。よって、処理時間がＣＰＵによる処理より短く、かつ、繰り返し回数が多いために処理時間に占める回路構成時間が充分小さい処理のように、プログラマブル論理回路で処理することにより処理時間を短くできる可能性のあるソフトウエアモジュールＳＭに対応するハードウエアモジュールＨＭのみを用意する。
【００５５】
プログラム１００上、ソフトウエアモジュールＳＭのみで記述される処理は、ＣＰＵ２００で実行される。また、ソフトウエアモジュールＳＭとハードウエアモジュールＨＭとで記述される処理は、それぞれを同時に、ＣＰＵ２００とプログラマブル論理回路３００で実行し、処理時間比較手段４００が処理時間を予測し、その予測に基づいて、実行モジュール決定手段５００が処理時間を最短にするように、ソフトウエアモジュールＳＭとハードウエアモジュールＨＭのどちらで処理を継続するかを決定する。
【００５６】
［実施の形態のハードウエア構成例］
図２は、この発明の実施の形態の情報処理システム１０のハードウエア構成例を示すブロック図である。この実施の形態の情報処理システム１０においては、ＣＰＵ１１のホストバス１１Ｂに、チップセット１２に含まれるメモリコントローラ（図示せず）を介して、例えばＤＲＡＭで構成されるメインメモリ１３が接続される。
【００５７】
ホストバス１１Ｂは、また、チップセット１２に含まれるホスト−ＰＣＩバスブリッジ（図示せず）を介して、ＰＣＩバス１４に接続される。ＰＣＩバス１４には、プログラマブル論理回路インターフェース１５を介してプログラマブル論理回路１６と、ハードディスクインターフェース１７を介してハードディスクドライブ１８と、通信インターフェース１９とが接続される。通信インターフェース１９は、ＬＡＮやインターネットなどのネットワーク２０を介して記憶装置（サーバ）２１に接続される。
【００５８】
ハードディスクドライブ１８により読み書きされるハードディスクには、アプリケーションプログラムが格納されている。また、アプリケーションプログラムは、ネットワーク２０上の記憶装置２１に格納されている場合もある。
【００５９】
この実施の形態では、処理時間比較手段４００と実行モジュール決定手段５００が、図２で示した情報処理システム１０のＯＳのひとつの機能としてソフトウエア的に実装される。
【００６０】
次に、プログラマブル論理回路１６の構造を図３に示す。プログラマブル論理回路１６は、図４に示すように、回路情報を格納するためのコンフィギュレーションメモリ１６０と、論理セル１６１と、配線領域１６２と、入出力端子１６３とで構成される。
【００６１】
コンフィギュレーションメモリ１６０は、論理セル１６１内および配線領域１６２内のＳＲＡＭ、ＤＲＡＭなどの書き換え可能なメモリ素子で構成されている。コンフィギュレーションメモリ１６０にアドレスＡＤＲが与えられて、新しい回路情報のデータＤＡが格納されると、この回路情報に従って、論理セル１６１内の回路構成と、論理セル１６１および入出力端子１６３を相互に接続する配線領域１６２の接続状態が再構成される。この一連の動作をコンフィギュレーションと呼ぶ。コンフィギュレーションメモリ１６０の一部分を書き換えることで、プログラマブル論理回路が動作中であっても、回路を部分的に再構成することができる。
【００６２】
図４に示すように、プログラマブル論理回路１６に再構成されて形成された回路素子１６４に、処理すべきデータが入力され、また、その処理結果が出力される。
【００６３】
［この発明の実施の形態による処理の説明］
４つの８ビット数Ａ、Ｂ、Ｃ、Ｄの和Ｑを、ｍ回繰り返して求める整数演算を例に用いて、この実施の形態における処理時間比較手段４００と実行モジュール決定手段５００の動作を説明する。
【００６４】
図５は、４つの８ビット数Ａ，Ｂ，Ｃ，Ｄの和Ｑを求めるハードウエアモジュールＨＭの例を示す。このハードウエアモジュールＨＭは、２入力の８ビット加算器２１、２２および２入力の９ビット加算器２３で構成される。
【００６５】
加算器２１でＡとＢの和を求め、加算器２２でＣとＤの和を求める。加算器２１と加算器２２は、桁上がりを考慮した９ビットの値を出力する。加算器２３でこれらの値の和を求めることにより、和Ｑを得る。加算器２１と加算器２２の計算は並列的に実行されるので、このハードウエアモジュールＨＭでの処理は、１クロックの処理時間で終了する。
【００６６】
図６は、４つの８ビット数Ａ，Ｂ，Ｃ，Ｄの和Ｑを求めるソフトウエアモジュールＳＭの例を示す。このソフトウエアモジュールＳＭは、最初にＬｏａｄ命令を用いてＡをＣＰＵのレジスタにロードする。次に、Ａｄｄ命令を用いて、ＡをロードしたレジスタにＢを加える。さらに、Ａｄｄ命令を繰り返すことにより、ＣとＤを同じレジスタに加える。最後に、Ｍｏｖｅ命令を用いて、和Ｑを出力する。このソフトウエアモジュールＳＭでは、命令は逐次的に実行されるので、５クロックの処理時間が必要である。
【００６７】
［処理の第１の実施例］
第１の実施例として、ＣＰＵ２００とプログラマブル論理回路３００とが同じクロック周波数で動作する場合に、ソフトウエアモジュールＳＭとハードウエアモジュールＨＭにより前述の和Ｑを求めるときの処理動作のフローチャートを図７に示し、また、そのときの繰り返し回数と、クロック数で表した処理時間の関係を図８に示す。
【００６８】
図７に示すように、プログラムが開始すると、ソフトウエアモジュールＳＭによる処理と、ハードウエアモジュールＨＭによる処理とが並行して実行し、１回目の処理が終了した時点で、ソフトウエアモジュールによる１回の処理時間ａが計測される（ステップＳ１０１）と共に、ハードウエアモジュールによる１回の処理時間ｂと、回路構成時間ｃとが計測される（ステップＳ１０２）。
【００６９】
ソフトウエアモジュールＳＭによる１回の処理時間ａは、前述したように、この例の場合の和Ｑを求めるソフトウエアモジュールＳＭは、５クロック分である。一方、対応するハードウエアモジュールＨＭは、１回の処理時間ｂは１クロック分である。
【００７０】
そして、回路構成時間ｃは次の通りとなる。図５に示した８ビット加算器２１と２２は、２４個の論理セルで構成され、９ビット加算器２３は２７個の論理セルで構成される。１論理セルを構成するために必要な回路情報は８ビットであるので、加算器を構成するために必要な回路情報量は、
（２４セル×８ビット／  セル）  ×２個
＋２７セル×８ビット／セル＝６００ビット
である。
【００７１】
さらに、加算器２１、２２、２３を配線するために４０ビットの回路情報が必要である。よって、必要な回路情報量は６４０ビットである。プログラマブル論理回路のコンフィギュレーションメモリは３２ビット幅で書き込むことができるので、求める回路構成時間ｃは、
６４０ビット÷３２ビット／クロック＝２０クロック
分となる。
【００７２】
この計測結果に基づいて、処理時間比較手段４００は、図８に示すチャートを用いて、ソフトウエアモジュールＳＭによる処理時間Ｔｓが回路構成時間ｃに等しくなる繰り返し回数ｎ１と、ソフトウエアモジュールＳＭによる処理時間ＴｓとハードウエアモジュールＨＭによる処理時間Ｔｈとが同じになる繰り返し回数ｎ２を求める（ステップＳ１０３）。このとき、１回目の処理が早く終了するソフトウエアモジュールＳＭは、ハードウエアモジュールＨＭが１回目の処理を終了するまで処理を継続する。
【００７３】
前述したように、この例の場合のソフトウエアモジュールＳＭによる処理では、５クロック毎に１回の処理を実行するので、処理時間Ｔｓはくり返し回数ｎに比例し、
Ｔｓ＝ａ×ｎ    …（１）
と表される。ただし、ａ＝５（クロック／処理）である。
【００７４】
また、この例の場合のハードウエアモジュールＨＭによる処理では、１クロック毎に１回の処理を実行するが、実行開始前にプログラマブル論理回路に回路を構成する時間ｃが必要なので、処理時間Ｔｈは、
Ｔｈ＝ｂ×ｎ＋ｃ    …（２）
と表される。なお、ｂ＝  １（クロック／  処理）である。
【００７５】
したがって、ソフトウエアモジュールＳＭによる処理時間Ｔｓが回路構成時間ｃに等しくなる繰り返し回数ｎ１は、式（１）から、
ｎ１＝ｃ／ａ    …（３）
となり、この例ではｎ１＝４である。
【００７６】
また、ソフトウエアモジュールＳＭによる処理時間ＴｓとハードウエアモジュールＨＭによる処理時間Ｔｈとが同じになる繰り返し回数ｎ２は、式（１）、式（２）から、
ｎ２＝ｃ／（ａ−ｂ）    …（４）
となり、この例では、ｎ２＝５である。
【００７７】
実行モジュール決定手段は、以上のようにして、処理時間比較手段が求めた繰り返し回数ｎ１とｎ２とに基づいて、プログラム上設定されている繰り返し回数ｍの処理時間を最短にするモジュールを次のように決定する（ステップＳ１０４）。
【００７８】
ｍ≦ｎ１の場合
ハードウエアモジュールＨＭの回路が構成される前に、ソフトウエアモジュールＳＭによる処理で処理が終了してしまう場合である。すなわち、処理時間比較手段４００と実行モジュール決定手段５００による判断を行う前に処理が終了し、次の処理を開始することができる（ステップＳ１０５）。
【００７９】
ｎ１＜ｍ＜ｎ２の場合
ソフトウエアモジュールＳＭによる処理時間Ｔｓが、ハードウエアモジュールＨＭよる処理時間Ｔｈよりも短いと予測されるので、ソフトウエアモジュールＳＭによる処理を継続する。ハードウエアモジュールＨＭによる処理は、１回めの処理が終了した時点で中止する（ステップＳ１０６）。
【００８０】
ｍ＝ｎ２の場合
ソフトウエアモジュールＳＭによる処理時間ＴｓとハードウエアモジュールＨＭによる処理時間Ｔｈとが同じであると予測されるので、他の要因で実行するモジュールを決定する（ステップＳ１０７）。
【００８１】
例えば、この和Ｑのｍ回の繰り返し演算処理のモジュールの次に実行するモジュールが、ソフトウエアモジュールであり、現在実行している演算処理と独立に実行できる処理であれば、ハードウエアモジュールによる処理を継続し、ＣＰＵ２００は、次の処理をソフトウエアモジュールで並行して実行することで、プログラム全体の処理時間を短縮することができる。
【００８２】
他に決定する要因がなければ、どちらのモジュールで実行してもプログラム全体の処理時間が同じであるので、事前に優先モジュールを決めておき、それに従うものとする。
【００８３】
ｎ２＜ｍの場合
ハードウエアモジュールＨＭよる処理時間Ｔｈが、ソフトウエアモジュールＳＭによる処理時間Ｔｓより短いと予測されるので、ハードウエアモジュールＨＭによる処理を継続する。ソフトウエアモジュールＳＭによる処理は、ハードウエアモジュールＨＭによる１回目の処理が終了した時点で中止する。
【００８４】
この場合に、次に実行するモジュールがソフトウエアモジュールであり、現在実行している処理と独立に実行できる処理であれば、ＣＰＵ２００は、次のソフトウエアモジュールＳＭを並行して実行することで、プログラム全体の処理時間を短縮することができる。
【００８５】
上述した第１の実施例の場合、ｎ１＝４回、ｎ２＝５回である。ｍ＝１０回とすれば、ｎ２＜ｍであるので、実行モジュール決定手段５００は、ハードウエアモジュールＨＭによる処理の継続をプログラマブル論理回路に指示し、ソフトウエアモジュールＳＭによる処理の中断をＣＰＵ２００に指示する。また、ハードウエアモジュールＨＭによる処理は、３０クロックの処理時間を必要とすることが予測できる。たとえば、クロック周波数が１０ＭＨｚであれば、処理時間は３μｓである。
【００８６】
さらに、この第１の実施例のソフトウエアモジュールＳＭとハードウエアモジュールＨＭとが、図１に示したソフトウエアモジュール２とハードウエアモジュール２のように、次に実行するするモジュールがソフトウエアモジュールであり、かつ、前の処理と独立に実行できる処理であれば、ＣＰＵ２００は、ソフトウエアモジュール３を実行することにより、プログラム全体の処理時間を短縮することができる。
【００８７】
［第２の実施例］
この第２の実施例は、ＣＰＵ２００と、プログラマブル論理回路３００とが、異なるクロック周波数で動作する場合である。そして、この第２の実施例においても、第１の実施例の場合と同様に、図５および図６に示したようなハードウエアモジュールＨＭおよびソフトウエアモジュールＳＭを用いて和Ｑを求める場合である。
【００８８】
異なるクロック周波数で動作するＣＰＵとプログラマブル論理回路を用いて、ソフトウエアモジュールＳＭとハードウエアモジュールＨＭにより和Ｑを求めるときの、繰り返し回数とプログラマブル論理回路のクロック数であらわした処理時間の関係を図９に示す。
【００８９】
この第２の実施例では、第１の実施例と同じソフトウエアモジュールＳＭとハードウエアモジュールＨＭを用いるが、ＣＰＵ２００のクロック周波数がプログラマブル論理回路３００の２倍である場合である。よって、ＣＰＵ２００における５クロックのソフトウエアモジュール処理は、プログラマブル論理回路３００の２．５クロックに相当する。
【００９０】
この第２の実施例の場合には、ｎ１＝８回、ｎ２＝１３．３回となる。ｍ＝１０回とすれば、ｎ１＜ｍ＜ｎ２であるので、実行モジュール決定手段５００は、ソフトウエアモジュールＳＭによる処理の継続をＣＰＵ２００に指示し、ハードウエアモジュールＨＭによる処理の中断をプログラマブル論理回路３００に指示する。また、ソフトウエアモジュールＳＭによる処理は、プログラマブル論理回路３００のクロック周波数で２５クロックの処理時間を必要とすることが予測できる。例えば、クロック周波数が１０ＭＨｚであれば、処理時間は２．５μｓである。
【００９１】
半導体デバイス技術の進歩により、次々とクロック周波数の高いデバイスが開発される状況を鑑みると、プログラムを実行するＣＰＵとプログラマブル論理回路のクロック周波数が一定の値にとどまることはない。たとえ、将来のクロック周波数を予測することができたとしても、それらの組み合せ毎に処理時間が最小になるようにソフトウエアモジュールとハードウエアモジュールを組み合わせたプログラムを作成して使い分けることは、多くの労力を必要とする。
【００９２】
第１の実施例と第２の実施例により、ＣＰＵとプログラマブル論理回路のクロック周波数が異なる場合は、処理時間を最短にするモジュールも異なることが分かる。すなわち、この発明を用いれば、ＣＰＵやプログラマブル論理回路のクロック周波数などの種々の状況においても、同じプログラムを実行して常に処理時間を最小に保つことができる。
【００９３】
［第３の実施例］
第３の実施例として、異なるクロック周波数で動作するＣＰＵとプログラマブル論理回路とを用いて、ソフトウエアモジュールとハードウエアモジュールにより和Ｑを求める場合であって、すでにハードウエアモジュールの一部がプログラマブル論理回路に構成されている場合の例を説明する。
【００９４】
この第３の実施例の場合の、繰り返し回数とプログラマブル論理回路のクロック数で表した処理時間の関係を図１０に示す。
【００９５】
この第３の実施例も、第１の実施例と同じソフトウエアモジュールとハードウエアモジュールを用いているが、ＣＰＵのクロック周波数がプログラマブル論理回路の２倍の場合である。よって、ＣＰＵにおける５クロックのソフトウエアモジュール処理は、プログラマブル論理回路の２．５クロックに相当する。
【００９６】
さらに、この第３の実施例では、先に実行されたプログラムにより、加算器２１と加算器２２がプログラマブル論理回路上に構成されているとする。よって、第３の実施例の場合は、２７個の論理セルで構成される９ビット加算器２３と、加算器２１、２２、２３間の配線を構成すればよいので、必要な回路情報量は、
２７セル×８ビット／セル＋４０ビット＝２５６ビット
となる。
【００９７】
プログラマブル論理回路のコンフィギュレーションメモリは３２ビット幅で書き込むことができるので、この第３の実施例の場合の回路構成時間ｃは、
ｃ＝２５６ビット÷３２ビット／クロック＝８クロック
となる。
【００９８】
したがって、この第３の実施例の場合、ｎ１＝３．２回、ｎ２＝５．３回とあなる。ｍ＝１０回とすれば、ｎ２＜ｍであるので、実行モジュール決定手段５００は、ハードウエアモジュールＨＭによる処理の継続をプログラマブル論理回路３００に指示し、ソフトウエアモジュールＳＭによる処理の中断をＣＰＵ２００に指示する。また、この場合、ハードウエアモジュールＨＭによる処理は、１８クロックの処理時間を必要とすることが予測できる。例えば、クロック周波数が１０ＭＨｚであれば、処理時間は１．８μｓである。
【００９９】
情報処理システムが、複数のプログラムを用いて複数の処理を連続して実行するときには、あるプログラムによってプログラマブル論理回路上に構成された回路と同じ回路を、後に実行されるプログラムが使用する場合がある。先に実行されたプログラムによってプログラマブル論理回路に構成された回路を利用することができれば、その回路を構成する時間が短くできる。
【０１００】
ところが、個々のプログラムを作成するときには、情報処理システムで連続して実行されるプログラムを予測することはできないので、共通に利用されるであろう回路を見出すことは不可能である。しかし、この発明の実施の形態の場合には、情報処理システムで行う処理を複数個に分離し、その分離した処理モジュール単位で処理を行わせるように、プログラムを作成している。したがって、前の処理モジュールでプログラマブル論理回路上に構成された回路と同じ回路を、後に実行される処理モジュールで使用することが可能になる。
【０１０１】
以上のように、第２の実施例と第３の実施例のより、ハードウエアモジュールの一部がすでにプログラマブル論理回路上に構成されているときには、処理時間を最短にするモジュールも異なることが分かる。このように、この発明を用いれば、このような状況においても、同じプログラムを実行して処理時間を最小に保つことができる。
【０１０２】
以上説明したように、ＣＰＵで実行されるソフトウエアモジュール処理に必要なクロック数と、プログラマブル論理回路で実行されるハードウエアモジュール処理に必要なクロック数を事前に予測することはできる。実際の処理時間は、クロック数にクロック周波数の逆数を掛けあわせたものになるので、プログラムの処理時間を最小にするソフトウエアモジュールと、ハードウエアモジュールの組み合わせは、クロック周波数によって異なる。
【０１０３】
一般的に、ＣＰＵとプログラマブル論理回路は異なるクロック周波数で動作し、さらに、最近の半導体デバイス技術の進歩により、次々とクロック周波数の高いデバイスが開発される。この実施の形態によれば、このような状況下においても、同じプログラムを用いて、常に処理時間を最小に保つことができる。
【０１０４】
先に実行されたプログラムによってプログラマブル論理回路に構成された回路を利用することができれば、回路を構成する時間が短くできる。ところが、個々のプログラムを作成するときには、情報処理システムで連続して実行されるプログラムを予測することはできないので、共通に利用されるであろう回路を見いだすことは不可能である。この発明によれば、このような状況においても、同じプログラムを用いて、すでにプログラマブル論理回路上に構成されいる複数のプログラムで共通に利用することができる回路を利用して、プログラム全体の処理時間を最小に保つことができる。
【０１０５】
【発明の効果】
以上説明したように、この発明によれば、少なくとも処理の一部分が回路構成を再構成できるプログラマブル論理回路で処理される情報処理システムにおいて、ソフトウエアとハードウエアとを同時に実行しながら、処理時間が最も最適なとなるソフトウエアの処理とハードウエアの処理の組み合わせを選択して処理を実行することができる。
【図面の簡単な説明】
【図１】この発明による情報処理システムの実施の形態の概念構成を示すブロック図である。
【図２】この発明による情報処理システムの実施の形態のハードウエア構成例を示す図である。
【図３】プログラマブル論理回路の一例を説明するための図である。
【図４】プログラマブル論理回路の一例を説明するための図である。
【図５】ハードウエアモジュールの例を示す図である。
【図６】ソフトウエアモジュールの例を示す図である。
【図７】この発明による情報処理システムの実施の形態の主要な処理動作を説明するためのフローチャートである。
【図８】この発明による情報処理システムの第１の実施例の動作を説明するために用いる図である。
【図９】この発明による情報処理システムの第２の実施例の動作を説明するために用いる図である。
【図１０】この発明による情報処理システムの第３の実施例の動作を説明するために用いる図である。
【図１１】従来の情報処理システムの一例を説明するための図である。
【図１２】従来の情報処理システムの他の一例を説明するための図である。
【符号の説明】
１０  情報処理システム
１１  ＣＰＵ
１２  チップセット
１３  メインメモリ
１４  バス
１５  プログラマブル論理回路インターフェース
１６  プログラマブル論理回路
１７  ハードディスクインターフェース
１８  ハードディスクドライブ
２１  ネットワーク上の記憶装置
１００  アプリケーションプログラム
２００  ＣＰＵ
３００  プログラマブル論理回路
４００  処理時間比較手段
５００  実行モジュール決定手段
【図１】
0003613314.tif 000002
【図２】
0003613314.tif 000003
【図３】
0003613314.tif 000004
【図４】
0003613314.tif 000005
【図５】
0003613314.tif 000006
【図６】
0003613314.tif 000007
【図７】
0003613314.tif 000008
【図８】
0003613314.tif 000009
【図９】
0003613314.tif 000010
【図１０】
0003613314.tif 000011
【図１１】
0003613314.tif 000012
【図１２】
0003613314.tif 000013