(57)【要約】【課題】ハードウェア／ソフトウェアのいずれかを用い、柔軟かつ高速に処理を実行することができ、ハードウェア機能のキャシングをより効果的に行うことができるコンピュータシステム及びハードウェア／ソフトウェアロジック並びにキャッシュ方法の提供。【解決手段】略等しいデータサイズの複数のスロットに分割された書き換え可能なロジック部を備え、各々の前記スロットが独立して書き換え可能に制御されるプログラマブル論理回路１を含み、同等の機能を有するハードウェアロジック６とソフトウェアロジック９とがソフトウェア５によって選択可能に管理され、要求された処理に対して、対応するハードウェアロジック６の有無、空きスロットの有無、置き換え可能なスロットの有無、スロット１０が扱うデータ量等を参照して、ハードウェア／ソフトウェアの選択を行う。【選択図】図１
2004021426.tif 000002
【特許請求の範囲】
【請求項１】
所定の論理規模の複数のスロットに分割された書き換え可能なロジック部を備え、各々の前記スロットが独立して書き換え可能に制御されるプログラマブル論理回路を少なくとも備えるコンピュータシステムであって、
前記スロットに挿入されるハードウェアロジック及び該ハードウェアロジックと同等の機能を有するソフトウェアロジックを備え、前記ハードウェアロジックと前記ソフトウェアロジックとを選択可能に管理するための管理部を有することを特徴とするコンピュータシステム。
【請求項２】
前記管理部は、要求される処理に該当するハードウェアロジックを調査する機能を備え、該当するハードウェアロジックがない場合に、該ハードウェアロジックと同等の機能を有する前記ソフトウェアロジックを選択することを特徴とする請求項１記載のコンピュータシステム。
【請求項３】
前記管理部は、要求される処理に該当するハードウェアロジックを書き込むスロットを調査する機能を備え、前記スロットに空きがない場合に、前記ハードウェアロジックと同等の機能を有するソフトウェアロジックを選択することを特徴とする請求項１又は２に記載のコンピュータシステム。
【請求項４】
各々の前記スロットに、該スロットの状態を示すフラグが付与され、前記管理部は、前記フラグを参照して、要求される処理に該当するハードウェアロジックを書き込むスロットを調査する機能を備え、前記スロットに空きがない場合に、置き換え可能なスロットを選択し、該スロットに前記ハードウェアロジックを書き込むことを特徴とする請求項１乃至３のいずれか一に記載のコンピュータシステム。
【請求項５】
前記フラグは、未使用／置き換え可能／置き換え不可の３つの状態を含むことを特徴とする請求項４記載のコンピュータシステム。
【請求項６】
前記スロットに挿入される前記ハードウェアロジック毎に、使用回数又は扱うデータ量の閾値が予め定義され、前記使用回数又は前記データ量が前記閾値を越えた場合に、前記フラグの状態が変更されることを特徴とする請求項５記載のコンピュータシステム。
【請求項７】
予め扱うデータ量の閾値が予め定義され、前記管理部では、要求される処理に対するデータ量と前記閾値とが比較され、比較結果を参照して、前記ハードウェアロジック又は前記ソフトウェアロジックのいずれかが選択されることを特徴とする請求項１乃至６のいずれか一に記載のコンピュータシステム。
【請求項８】
前記プログラマブル論理回路の前記複数のスロットが、略等しい論理規模に分割されていることを特徴とする請求項１乃至７のいずれか一に記載のコンピュータシステム。
【請求項９】
前記プログラマブル論理回路に、前記スロットに書き込まれたハードウェアロジックと外部のハードウェア又はソフトウェアとの調停を行う制御手段、前記スロットに書き込まれたハードウェアロジックからの割り込み信号をプロセッサに通知する割り込み制御手段、ハードウェアロジックが書き込まれていない前記スロット、又は、書き換えが行われている前記スロットを論理的に切り離す手段の少なくとも一つを備えることを特徴とする請求項１乃至８のいずれか一に記載のコンピュータシステム。
【請求項１０】
請求項１乃至９のいずれか一に記載の前記スロットの論理規模に適合して構成されることを特徴とするハードウェアロジック。
【請求項１１】
前記ハードウェアロジックは、データ又はファイルの形で前記管理部から参照可能に管理され、該管理部により前記スロットに定義されることを特徴とする請求項１０記載のハードウェアロジック。
【請求項１２】
請求項１０又は１１に記載の前記ハードウェアロジックと同等の機能を有し、該ハードウェアロジックと組になって管理されることを特徴とするソフトウェアロジック。
【請求項１３】
固定ハードウェアロジックを備える論理回路と、プロセッサと、メモリとを少なくとも備えるコンピュータシステムであって、
前記コンピュータシステムに要求される処理を実行するソフトウェアロジックを備え、前記ソフトウェアロジックが管理部によって選択可能に管理されることを特徴とするコンピュータシステム。
【請求項１４】
前記管理部は、要求される処理に対応する固定ハードウェアロジックを調査する機能を備え、前記固定ハードウェアロジックがない場合に、該固定ハードウェアロジックと同等の機能を有する前記ソフトウェアロジックを選択することを特徴とする請求項１３記載のコンピュータシステム。
【請求項１５】
所定の論理規模の複数のスロットに分割された書き換え可能なロジック部を備え、各々の前記スロットが独立して書き換え可能に制御されるプログラマブル論理回路と、プロセッサと、メモリとを少なくとも備えるコンピュータシステムにおけるキャッシュ方法であって、
前記スロットに挿入されるハードウェアロジック及び該ハードウェアロジックと同等の機能を有するソフトウェアロジックを備え、管理部によって前記ハードウェアロジックと前記ソフトウェアロジックとを選択可能に管理し、処理の要求に対して、前記ハードウェアロジック又は前記ソフトウェアロジックのいずれか一方を選択することを特徴とするキャッシュ方法。
【請求項１６】
前記管理部は、要求される処理に該当するハードウェアロジックを調査し、該当するハードウェアロジックがない場合に、該ハードウェアロジックと同等の機能を有する前記ソフトウェアロジックを選択し、実行することを特徴とする請求項１５記載のキャッシュ方法。
【請求項１７】
前記管理部は、要求される処理に該当するハードウェアロジックを書き込むスロットを調査し、前記スロットに空きがない場合に、前記ハードウェアロジックと同等の機能を有するソフトウェアロジックを選択し、実行することを特徴とする請求項１５又は１６に記載のキャッシュ方法。
【請求項１８】
各々の前記スロットに、該スロットの状態を示すフラグを付与し、前記管理部では、前記フラグを参照して、要求される処理に該当するハードウェアロジックを書き込むスロットを調査し、前記スロットに空きがない場合に、置き換え可能なスロットを選択し、該スロットに前記ハードウェアロジックを書き込むことを特徴とする請求項１５乃至１７のいずれか一に記載のキャッシュ方法。
【請求項１９】
前記フラグは、未使用／置き換え可能／置き換え不可の３つの状態を含むことを特徴とする請求項１８記載のキャッシュ方法。
【請求項２０】
前記スロットに挿入される前記ハードウェアロジック毎に、使用回数又は扱うデータ量の閾値を予め定義し、前記使用回数又は前記データ量が前記閾値を越えた場合に、前記フラグの状態を変更する処理を行うことを特徴とする請求項１９記載のキャッシュ方法。
【請求項２１】
予め扱うデータ量の閾値を予め定義し、前記管理部では、要求される処理に対するデータ量と前記閾値とを比較し、比較結果を参照して、前記ハードウェアロジック又は前記ソフトウェアロジックのいずれかを選択することを特徴とする請求項１５乃至２０のいずれか一に記載のキャッシュ方法。
【請求項２２】
前記データ量が前記前記閾値よりも大きい場合に、前記ハードウェアロジックを選択することを特徴とする請求項２１記載のキャッシュ方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステム並びにキャッシュ方法に関し、特に、柔軟かつ高速に処理を実行することができるプログラマブル論理回路を備えたコンピュータシステム及び該コンピュータシステムに適したハードウェアロジック／ソフトウェアロジック並びにキャッシュ方法に関する。
【０００２】
【従来の技術】
高速なコンピュータシステムを構成する方法としては、大別して２つの方法がある。第１の方法は、図１１に示すように、複数のＣＰＵ２を設け、それらを並列に動作させるマルチプロセッサ方式であり、第２の方法は、図１２に示すように、ＣＰＵ２の動作を支援することにより、高速化を達成するものである。
【０００３】
マルチプロセッサの代表例としては、並列型のスーパーコンピュータや高性能なサーバー等が挙げられる。また最近では、ＪＡＶＡ（Ｒ）プロセッサを搭載するケースや、ＤＳＰ（Ｄｉｇｉｔａｌ　Ｓｉｇｎａｌｉｎｇ　Ｐｒｏｃｅｓｓｏｒ）を搭載するケースなど、特定のアプリケーションに特化して性能を向上させることができるようなマルチプロセッサシステムも提案されている。
【０００４】
また、ＣＰＵ２の動作を支援する構成としては、コプロセッサを搭載する構成やＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ　Ｓｐｅｃｉｆｉｃ　Ｉｎｔｅｇｒａｔｅｄ　Ｃｉｒｃｕｉｔ）を搭載する構成等がある。
【０００５】
コプロセッサの代表例として、浮動小数点演算を高速に行うＦＰＵ（Ｆｌｏａｔｉｎｇ−ｐｏｉｎｔ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）がある。このＦＰＵを用いることにより、ＣＰＵがハードで浮動小数点演算を行えず、ソフトウェアで処理しなければならない場合に高速化が可能になる。他の例としては、行列の演算を高速に行うためのベクトルコプロセッサがある。これは、行列演算などの規則的な演算を高速に行うためのハードウェアを備えているものである。このようなコプロセッサを用いることにより、科学技術計算などで規則的な演算が大量に出てくる場合に、ＣＰＵだけで処理するよりも高速に処理することが可能になる。
【０００６】
一方、ＡＳＩＣは、アプリケーションに特化した機能の一部または全部をハードウェアで構成することにより、高速動作を可能にするものであり、その代表例としてゲートアレイが知られている。組み込み型のシステムでは、ＡＳＩＣを搭載することより高速でかつ小型のシステム構築が可能になるが、このＡＳＩＣは、アプリケーションに特化した機能を持つために、さまざまなアプリケーションに対応することができないという欠点がある。
【０００７】
この欠点を補うため、近年、ＦＰＧＡ（Ｆｉｅｌｄ　Ｐｒｏｇｒａｍｍａｂｌｅ　Ｇａｔｅ　Ａｒｒａｙ）やＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ　ｌｏｇｉｃ　ｄｅｖｉｃｅ）等の書き換え可能な領域を備えるデバイス（以下、これらを総称してプログラマブル論理回路と呼ぶ。）の開発が行われている（例えば、米国特許第４，７００，１８７号）。このプログラマブル論理回路は、図１３に示すように、ＬＵＴ（Ｌｏｏｋ　Ｕｐ　Ｔａｂｌｅ）８ａとフリップフロップ８ｂとで構成される基本セル８を配列したものであり、ＬＵＴ８ａを書き換えることにより内部のハードウェアロジックを変更することが出来る。従って、アプリケーションに応じてハードウェアロジックを書き換えることができることから、特殊な用途やサイクルの短い機器等の制御デバイスとして利用されている。
【０００８】
【発明が解決しようとする課題】
一般にコンピュータシステムの高速化を図るには、多くのハードウェアを使用すればよい。例えば、図１１のマルチプロセッサシステムでは、ＣＰＵ２の個数を増やすほど、全体のパフォーマンスは向上する。また、図１２のコプロセッサやＡＳＩＣを搭載するシステムでは、より多くのＣＰＵ２の仕事を肩代わりすることができるようなハードウェアを構成すれば、全体のパフォーマンスは向上する。しかしながら、このような方法ではシステムを構成する部品数が増えるため、システムの高価格化と大規模化を招いてしまう。また、これらのシステムでは、ハードウェアが提供する機能が限定的なものであるために、さまざまなアプリケーションに対応できる機能を提供することができない。
【０００９】
一方、図１３に示すプログラマブル論理回路では、アプリケーションで必要となる複数の処理の回路情報を予めメモリに格納しておき、必要に応じてメモリから読み出して書き換え可能領域に書き込むことにより、その時点で必要となる回路を生成することが可能である。従って、この方法では、回路規模の小さなプログラマブル論理回路を用いて、その回路規模以上の回路を実現することができ、コンピュータシステムの小型化と低コスト化を図ることができる。しかしながら、単一の書き換え可能領域からなるプログラマブル論理回路では、ある時間で見た場合には一つのアプリケーションに特化しており、マルチタスクで動作するコンピュータに比べて高速化に限界がある。
【００１０】
そこで、本願発明者は先願（特願２００２−１５３５８６号）において、コンピュータを高速化させる手段として、プログラマブル論理回路の書き換え可能ロジック部をスロット単位に分割し、各々のスロットにソフトウェア管理化にあるハードウェアロジックをロードすることにより、システム全体の規模を大きくすることなくマルチタスクを含む処理を高速に行うことができるプログラマブル論理回路及びコンピュータシステム並びにハードウェアのキャッシュ方法を提案している。
【００１１】
上記先願のプログラマブル論理回路により、各々のシステムに適した柔軟かつ高速なロジックをつくりあげることができるが、書き換え可能ロジック部を複数のスロットに分割するに際し、ロジック部の規模に応じてスロットの分割数が制限されるため、動作中のスロットの数よりも多いハードウェアが要求された場合に、スロットに空きができるまで該当するプロセスが待たされてしまい、処理の高速化が図れない場合が生じる。
【００１２】
また、固定ハードウェアロジックしか持たない場合はもちろん、書き換え可能ロジック部をスロットに分割しているシステムでも、要求される処理に対応するハードウェアロジックがない場合、高速化が図れないだけでなく、実行そのものが不可能になってしまう。
【００１３】
本発明は、上記問題点に鑑みてなされたものであって、その主たる目的は、ハードウェア／ソフトウェアのいずれかを用い、柔軟かつ高速に処理を実行することができ、更に、複数のスロットに分割された書き換え可能ロジック部を有するプログラマブル論理回路を備える構成において、ハードウェア機能のキャシングをより効果的に行うことができるコンピュータシステム及び該コンピュータシステムに適したハードウェア／ソフトウェアロジック並びにキャッシュ方法を提供することにある。
【００１４】
【課題を解決するための手段】
上記目的を達成するため、本発明のコンピュータシステムは、所定の論理規模の複数のスロットに分割された書き換え可能なロジック部を備え、各々の前記スロットが独立して書き換え可能に制御されるプログラマブル論理回路を少なくとも備えるコンピュータシステムであって、前記スロットに挿入されるハードウェアロジック及び該ハードウェアロジックと同等の機能を有するソフトウェアロジックを備え、前記ハードウェアロジックと前記ソフトウェアロジックとを選択可能に管理するための管理部を有するものである。
【００１５】
本発明においては、前記管理部は、要求される処理に該当するハードウェアロジックを調査する機能を備え、該当するハードウェアロジックがない場合に、該ハードウェアロジックと同等の機能を有する前記ソフトウェアロジックを選択する構成とすることができる。
【００１６】
また、本発明においては、前記管理部は、要求される処理に該当するハードウェアロジックを書き込むスロットを調査する機能を備え、前記スロットに空きがない場合に、前記ハードウェアロジックと同等の機能を有するソフトウェアロジックを選択する構成とすることもできる。
【００１７】
また、本発明においては、各々の前記スロットに、該スロットの状態を示すフラグが付与され、前記管理部は、前記フラグを参照して、要求される処理に該当するハードウェアロジックを書き込むスロットを調査する機能を備え、前記スロットに空きがない場合に、置き換え可能なスロットを選択し、該スロットに前記ハードウェアロジックを書き込む構成とすることもでき、前記フラグは、未使用／置き換え可能／置き換え不可の３つの状態を含み、前記スロットに挿入される前記ハードウェアロジック毎に、使用回数又は扱うデータ量の閾値が予め定義され、前記使用回数又は前記データ量が前記閾値を越えた場合に、前記フラグの状態が変更されることが好ましい。
【００１８】
また、本発明においては、予め扱うデータ量の閾値が予め定義され、前記管理部では、要求される処理に対するデータ量と前記閾値とが比較され、比較結果を参照して、前記ハードウェアロジック又は前記ソフトウェアロジックのいずれかが選択される構成とすることもできる。
【００１９】
また、本発明のハードウェアロジックは、上記スロットの論理規模に適合して構成されるものであり、前記ハードウェアロジックは、データ又はファイルの形で前記管理部から参照可能に管理され、該管理部により前記スロットに定義されることが好ましい。
【００２０】
また、本発明のソフトウェアロジックは、上記ハードウェアロジックと同等の機能を有し、該ハードウェアロジックと組になって管理されるものである。
【００２１】
また、本発明のコンピュータシステムは、固定ハードウェアロジックを備える論理回路と、プロセッサと、メモリとを少なくとも備えるコンピュータシステムであって、前記コンピュータシステムに要求される処理を実行するソフトウェアロジックを備え、前記ソフトウェアロジックが管理部によって選択可能に管理されるものであり、前記管理部は、要求される処理に対応する固定ハードウェアロジックを調査する機能を備え、前記固定ハードウェアロジックがない場合に、該固定ハードウェアロジックと同等の機能を有する前記ソフトウェアロジックを選択する構成とすることができる。
【００２２】
また、本発明のキャッシュ方法は、所定の論理規模の複数のスロットに分割された書き換え可能なロジック部を備え、各々の前記スロットが独立して書き換え可能に制御されるプログラマブル論理回路と、プロセッサと、メモリとを少なくとも備えるコンピュータシステムにおけるキャッシュ方法であって、前記スロットに挿入されるハードウェアロジック及び該ハードウェアロジックと同等の機能を有するソフトウェアロジックを備え、管理部によって前記ハードウェアロジックと前記ソフトウェアロジックとを選択可能に管理し、処理の要求に対して、前記ハードウェアロジック又は前記ソフトウェアロジックのいずれか一方を選択するものである。
【００２３】
このように、本発明の構成によれば、同等の機能を有するハードウェアロジックとソフトウェアロジックとをソフトウェア（管理部）の管理下に置き、システムの状態に応じて適宜ハードウェア／ソフトウェアの選択が行われるため、対応するハードウェアロジックがないために処理が滞るという問題を解決することができる。
【００２４】
特に、書き換え可能ロジック部を複数のスロットに分割し、各々のスロットが書き換え可能に制御されるプログラマブル論理回路を備えるシステムでは、空きスロットの有無やスロットで扱うデータ量等を考慮してハードウェア／ソフトウェアの選択が行われるため、スロット分割数以上の処理が要求された場合であってもハードウェアロジック又はソフトウェアロジックのいずれかで処理を実行することができ、柔軟かつ高速なシステムを構築することができる。
【００２５】
更に、各々のスロットに、未使用／置き換え不可／置き換え可能等の種別を示すフラグを付加することによって、該フラグを参照してハードウェア／ソフトウェアの選択が行われるため、空きスロットがない場合でも、置き換え可能なスロットに新たなハードウェアロジックを書き込むことができ、更に柔軟性、高速性を高めることができる。
【００２６】
【発明の実施の形態】
本発明に係るコンピュータシステムは、好ましい一実施の形態において、略等しい論理規模の複数のスロットに分割された書き換え可能なロジック部を備え、各々の前記スロットが独立して書き換え可能に制御されるプログラマブル論理回路と、プロセッサと、メモリとを少なくとも備え、同等の機能を有するハードウェアロジックとソフトウェアロジックとがソフトウェア（例えば、ハードマクロライブラリ管理部）によって選択可能に管理され、要求された処理に対して、対応するハードウェアロジックの有無、空きスロットの有無、置き換え可能なスロットの有無、スロットが扱うデータ量等を参照して、ハードウェアロジック／ソフトウェアロジックの選択が行われるため、多数の処理が要求された場合であっても柔軟かつ高速に対応することができる。
【００２７】
【実施例】
上記した本発明の実施の形態についてさらに詳細に説明すべく、本発明の一実施例に係るコンピュータシステム及び該コンピュータシステムに適したハードウェア／ソフトウェアロジック並びにキャッシュ方法について、図１乃至図１０を参照して説明する。図１は、本発明の一実施例に係るコンピュータシステムの基本構成及びキャッシュ方法を模式的に示す図であり、図２は、本発明のコンピュータシステムに適用するプログラマブル論理回路の構成を示す図、図３は、該プログラマブル論理回路のスロットの入出力インターフェース構成を示す図である。また、図４及び図５は、本発明のハードウェア／ソフトウェアロジックの選択例を示す図であり、図６は、データ量の違いによるハードウェア／ソフトウェアロジックの性能を比較する図である。また、図７及び図８は、スロットの状態を示すフラグを説明する図であり、図９及び図１０は、本発明のキャッシュ方法の具体的な手順を示すフロー図である。
【００２８】
従来技術において記載したように、本願出願人は先願において、コンピュータを高速化させる手段として、書き換え可能ロジック部をスロット単位に分割したプログラマブル論理回路及びコンピュータシステムを提案している。このプログラマブル論理回路及びコンピュータシステムを用いることにより、各々のスロットにソフトウェア管理化にあるハードウェアロジックを自由にロードすることができ、システムに適した柔軟かつ高速なロジックをつくりあげることができるが、動作中のスロットの数よりも多いハードウェアが要求された場合などに処理が滞る可能性がある。また、固定ハードウェアロジックを用いるコンピュータシステムにおいても、要求された処理に対応するハードウェアロジックがない場合に、実行そのものが不可能になるという問題がある。
【００２９】
そこで本発明では、ハードウェアロジックのみならず、ハードウェアロジックと同等の機能を有するソフトウェアロジックもソフトウェア（例えば、ハードマクロライブラリ管理部）の管理下に置き、システムの状況（空きスロットがない場合や要求される処理に対応するハードウェアロジックがない場合等）に応じてソフトウェアロジックで処理を行うことにより、柔軟かつ高速な処理を実現するものである。
【００３０】
本発明の考え方は、固定ハードウェアロジックを備えるコンピュータシステムにおいても適用できるが、先願記載のプログラマブル論理回路を用いることによって、より柔軟なシステムの構築が可能となる。そこで、本発明のコンピュータシステム及びキャッシュ方法について説明する前に、先願記載のプログラマブル論理回路について説明する。
【００３１】
先願発明の基本的な考え方は、プログラムやデータではなく、ハードウェアの機能をキャッシュする方法を提案するものであり、図２に示すように、書き換え可能領域を含むプログラマブル論理回路１と、ＣＰＵ等のプロセッサ２と、メモリ３とがＰＣＩ等のバス４によって接続されるコンピュータシステムにおいて、プログラマブル論理回路１に、所定の論理規模（容量又はデータサイズと同義、論理規模の表現としてデータ幅を用いることもできる。）、数量に分割された複数のスロット１０からなる書き換え可能領域と、各々のスロット１０に書き込まれたハードウェアロジックと外部のハードウェアやソフトウェアとの調停を行うスロット入力制御部１１及びスロット出力制御部１２と、ハードウェアロジックの割り込み制御を行う割り込み制御部１３と、各々のスロット１０の状態を示すステータス１４とを備えるものである。すなわち、先願では高速化を実現する方法として、複数のプログラマブル論理回路１を設けるのではなく、１つのプログラマブル論理回路１の書き換え可能領域を複数のスロット１０という単位に分割することを特徴としている。
【００３２】
このスロット１０は、図３に示すようなインターフェース信号によって機能する独立した領域であり、各々のスロット１０には自由にハードウェア機能を定義することができる。
【００３３】
このインターフェース信号は、スロット入力制御部１１を介して入力される入力側インターフェース信号（Ａｄｄｒｅｓｓ、Ｄａｔａ＿ｉｎ、Ｃｏｎｔｒｏｌ＿ｉｎ）と、スロット出力制御部１２又は割り込み制御部１３に出力される出力側インターフェース信号（Ｄａｔａ＿ｏｕｔ、Ｃｏｎｔｒｏｌ＿ｏｕｔ、Ｉｎｔｅｒｒｕｐｔ）とに分類され、各々は以下に示す役割を果たす。
【００３４】
・Ａｄｄｒｅｓｓ：１ビット又は複数ビット（スロット共通のビット数）からなり、このＡｄｄｒｅｓｓ信号により、スロット１０内部に埋め込まれる論理にＣＰＵ２又はソフトウェアがアクセスすることができる、
・Ｄａｔａ＿ｉｎ：スロット１０内部の論理に対する入力データであり、例えば、３２ビット等の共通のビット数を持つ、
・Ｃｏｎｔｒｏｌ＿ｉｎ：１ビット又は複数ビットからなり、スロットを制御するための制御信号である。例えば、Ａｄｄｒｅｓｓ信号と同期してスロット内部の論理に対して、ＲｅａｄやＷｒｉｔｅを行う、
・Ｄａｔａ＿ｏｕｔ：スロット１０外部に対して演算結果などを出力するパスであり、例えば、３２ビット等の共通のビット数を持つ、
・Ｃｏｎｔｒｏｌ＿ｏｕｔ：スロット１０内部の論理が外部の論理に対して要求等を通知するための出力信号である、
・（Ｉｎｔｅｒｒｕｐｔ）：オプションとして設けられるもので、ＣＰＵ２又はソフトウェアに、演算の終了通知などを行うための割り込み信号である。
【００３５】
そして、分割された各々のスロット１０にハードウェアロジック６を書き込むが、このハードウェアロジック６は、図１４に示すように、ファイル又はデータの形としてソフトウェア（例えば、ハードマクロライブラリ管理部５）の管理下に置き、ソフトウェアの実行中にスロット１０への定義・リプレースが出来るようにしている。また、このハードウェアロジック６は独立に動作可能な部分であり、メモリ３へのアクセスやＣＰＵ２等のプロセッサとのアクセスを独自に行うことができるようにするために、アドレスの空間を分割している。
【００３６】
また、各ハードウェアロジック６が個別に動作を行うので、外部のハードウェアやソフトウェアとの調停を行う必要がある。そこで、プログラマブル論理回路１内にスロット入力制御部１１、スロット出力制御部１２等の調停ロジックを設け、これにより外部のハードウェアやソフトウェア等との全体の調整を行う。また、指定された処理の終了通知や内部ステータスの変化などを通知するため、各スロット１０からの割り込み要求を受け付け、ＣＰＵ２へ割り込みを通知する割り込み制御部１３を搭載している。このスロット入力制御部１１、スロット出力制御部１２、割り込み制御部１３は、書き換え可能領域にプログラマブルに、又は、書き換え可能領域外部に固定ロジックとして形成される。
【００３７】
また、各々のスロット１０は個別に書き換え可能であるが、あるスロットが書き換えを行っている間は、他のスロットは動作している必要がある。このため、各スロット及びその調停ロジック（スロット入力制御部１１及びスロット出力制御部１２）には、書き換え中のスロット１０を論理的に切り離すロジック（図示せず）を搭載している。
【００３８】
なお、図２の構成は先願のコンピュータシステムの基本的な構成であり、プロセッサ２やメモリ３が複数接続されている構成や、コプロセッサ等のＣＰＵの動作を支援する回路が接続されている構成も含まれる。また、図ではプログラマブル論理回路１とＣＰＵ２とメモリ３とを別ＩＣ（ＬＳＩ）として記載しているが、実際の構成では、これらが一つのシステムＬＳＩ内に含まれる場合もある。
【００３９】
また、スロット１０の分割数や各々のスロット１０の論理規模は任意であり、スロット１０に書き込まれるハードウェアロジックの論理規模やマルチタスクで処理する論理の数、コンピュータシステム全体の規模や性能等を勘案して設定され、プログラマブル論理回路１を汎用性の高いシステムとする場合には、スロット１０は略等しい論理規模に等分割される。同様に、ハードウェアロジック６もその論理規模は任意であるが、論理規模が大きすぎると一度に多くのスロット１０を占有したり、各々のハードウェアロジック６の論理規模が違いすぎると、他のハードウェアロジック６との入れ替えができない場合も生じるため、各々のハードウェアロジック６はスロット１０の論理規模を考慮して構成される。
【００４０】
上記構成の先願に係るプログラマブル論理回路１を用いることにより、適宜ハードウェアロジック６をスロット１０に挿入して処理を行うことができるが、スロット数よりも多い処理が要求された場合であっても対応可能とするために、本発明では、スロット１０に挿入されるハードウェアロジック６と同じ機能を持つソフトウェアロジック９を用意する。または、ハードウェアロジック６がない場合にその代わりになるソフトウェアロジック９を用意する。そして、図１に示すように、ハードウェアロジック６とソフトウェアロジック９とをソフトウェア（例えば、ハードマクロライブラリ管理部５）の管理下に置き、ソフトウェアを用いてハードウェアロジック６とソフトウェアロジック９とを状況に応じて自由に選択することが出来るようにシステムを構成する。
【００４１】
ハードウェアロジック６とソフトウェアロジック９の選択基準としてはいくつか考えられる。第１に、スロット１０の空き状況に応じて選択する方法がある。例えば、図４に示すように、ハードウェアロジック６が必要としているスロット数（図ではハードウェアロジック（１）〜（４）の４つ）よりも空きスロット数（図ではスロット（１）〜（３）の３つ）が少ない場合は、ハードウェアロジック（４）に代えてソフトウェアロジック（４）を選択することにより、該当プロセスをストップさせることなく実行することができる。
【００４２】
また、第２は、該当するハードウェアロジック６がない場合である。図１では、ｎ個のハードウェアロジック６に対してｎ個のソフトウェアロジック９を保有しているが、ハードウェアロジック６とソフトウェアロジック９とは完全に対応させる必要はなく、特定の処理に関してはソフトウェアロジック９のみを設けても良い。この場合、例えば図５では、システム内にハードウェアロジック（２）がないため、ソフトウェアロジック（２）を選択することになる。なお、ハードウェア機能のキャッシングを提供できないシステムにおいても、該当するハードウェアロジック（２）がない場合にソフトウェアロジック（２）で代行することができ、従来システムや他システムとの互換性を確保することもできる。
【００４３】
第３に、扱うデータの量に応じた選択が挙げられる。例えば、扱うデータ量が少ない場合、ソフトウェアロジック９での実行の方が早い場合がある。これは、スロット１０内のハードウェア機能で実行する場合には、起動と終結のオーバーヘッドが入ってしまうからである。例えば、図６に示すように、データ量が１ＭＢと小さい場合は、ハードウェアロジック６の処理自体はソフトウェアロジック９よりも早いが、起動と終結のオーバーヘッドを加味すると結果的にソフトウェアロジック９の方が早くなる。また、データ量が５ＭＢと大きい場合は、ソフトウェアロジック９による処理では１ＭＢの５倍の時間がかかるが、ハードウェアロジック６では起動と終結のオーバーヘッドは同じであり、結果的にハードウェアロジック６の方が処理が早くなる。従って、扱うデータの量に応じてハードウェア／ソフトウェアを選択することにより、システムの高速化を図ることができる。
【００４４】
次に、ハードウェアロジック６が不当にスロット１０を占有しないような工夫を行う。その方法として、図７に示すように、スロット１０毎にハードウェアロジック６の使用状況を示すフラグ１５を設け、例えば、”未使用／置き換え不可／置き換え可”等が識別できるようにフラグ１５を構成する。このフラグ１５はハードウェア／ソフトウェアのどちらで構成しても構わない。
【００４５】
また、図８に示すように、スロット１０に挿入されるハードウェアロジック６毎に使用回数や扱うデータの総量の閾値（図では３ＭＢ）を定義し、その値を超えたらフラグ１５を変更する機構を設けることもできる。例えば、扱うデータの総量が３ＭＢを越えたらフラグ１５を置き換え不可から置き換え可に変更する。
【００４６】
ここで、先願ではスロット１０の使用履歴情報を参照して使用されないハードウェアロジック６の追い出しを行っていたが、この方法では、実際には使用の終わったハードウェアロジック６であるのに関わらず、スロット１０内に残ってしまう場合があったが、本発明では、フラグ１５を未使用／置き換え不可／置き換え可に分類することにより、空きスロットがない場合であっても、置き換え可のスロット１０から置き換えるべきハードウェアロジック６を選択し、そこに新たなハードウェアロジック６を書き込むことができ、スロット１０を有効に利用することができる。
【００４７】
なお、置き換えるべきハードウェアロジック６の選択アルゴリズムとしては、ＬＲＵ（Ｌｅａｓｔ　Ｒｅｃｅｎｔｌｙ　Ｕｓｅｄ）等のアルゴリズムを用いればよい。
【００４８】
このように、同等の機能を有するハードウェアロジック６とソフトウェアロジック９とをソフトウェア（例えば、ハードマクロライブラリ管理部５）の管理下に置き、対応するハードウェアロジック６がない場合にソフトウェアロジック９を選択したり、空きスロットがない場合にソフトウェアロジック９を選択したり、扱うデータ量に応じてハードウェア／ソフトウェアを選択したり、フラグ１５を参照して置き換え可能なスロット１０に新たなハードウェアロジック６を書き込む等の柔軟な処理を行うことにより、処理の遅滞を防止し、システムの高速化を図ることができる。
【００４９】
また、固定ハードウェアロジックを備えるシステムにおいても、要求される処理に対応するハードウェアロジックがない場合にソフトウェアロジックで代行することにより、システムの柔軟性、高速性を高めることができる。
【００５０】
次に、上記構成のコンピュータシステムを用いてアプリケーションからの要求に対してハードウェア又はソフトウェアで処理を行う手順について、図９及び図１０を参照して具体的に説明する。
【００５１】
図のハードマクロライブラリ管理部５は、スロット１０に入れるハードウェアロジック６及びソフトウェアロジック９をライブラリとして持ち、アプリケーション側からの要求により、必要なハードウェアロジック６をスロット１０に挿入し、動作させるソフトウェアであり、このソフトウェアがＣＰＵ２やプログラマブル論理回路部１のスロット入力制御部１１やスロット出力制御部１２、ステータス１４にアクセスしてハードウェアロジック６の書き換え制御を行う。
【００５２】
まず、図９に示すように、アプリケーション（例えば、画像処理プログラム）の動作において、画像処理関数等の演算が必要になった場合、アプリケーションはハードマクロライブラリ管理部５に対して関数コールを行う。この関数コールに対して、ハードマクロライブラリ管理部５では、対応するハードウェアロジック６があるか、空きスロットがあるか、扱うデータ量等を総合的に判断して、ハードウェア／ソフトウェアの選択を行う。
【００５３】
そして、ハードウェアロジック６を選択した場合は、ハードマクロライブラリ管理部５は、ライブラリの中から対応するハードウェアロジック６を取り出し、スロット入力制御部１１を介して図３に示す入力インターフェース信号により、該スロット１０に書き込みを開始する。その際、ハードウェアロジック６とスロット１０の論理規模とが比較され、例えば、ハードウェアロジック６のデータ幅がスロット１０のデータ幅より大きい場合は、複数のスロット１０に対して書き込みを行う。また、書き込み中は他のスロット１０の動作に支障が生じないように、スロット１０及び調停ロジック（スロット入力制御部１１及びスロット出力制御部１２）に設けた切り離しロジックにより、書き込み中のスロット１０を論理的に切り離す。そして、スロット出力制御部１２は、スロット１０への書き込みが終了したら書き込み終了信号をハードマクロライブラリ管理部５に送出する。
【００５４】
次に、ハードマクロライブラリ管理部５は、スロット入力制御部１１を介してスロット１０のＣｏｎｔｒｏｌ　ｉｎに制御信号を送り処理の起動を命令すると共に、Ｄａｔａｉｎに関数の演算に必要なデータを送る。そして、プログラマブル論理回路１では、ハードウェアロジック６により関数の演算を行い、演算が終了したらＤａｔａ　ｏｕｔからハードマクロライブラリ管理部５に演算結果を送ると共に、ｉｎｔｅｒｒｕｐｔから割り込み制御部１３を介してＣＰＵ２に割り込み信号を送り、演算が終了したことを通知する。そして、ハードマクロライブラリ管理部５はその演算結果をアプリケーションに送って一連の処理が終了する（図９上部参照）。
【００５５】
ここで、スロット１０にハードウェアロジック６を書き込む際、スロット１０に空きがない場合もあり得る。この場合は、図１０に示すように、スロット１０のステータスを管理するスロットステータス管理部にアクセスし（ステータスリード）、各々のスロット１０のフラグ１５を取得する（ステータスリターン）。そしてフラグ１５を参照して、置き換え可能なスロット１０を選択する（スワップ対象スロット決定）。
【００５６】
以降、図９と同様に、該スロット１０に新たなハードウェアロジック６を書き込み、書き込み終了信号を受信したら、処理の起動を命令すると共に、関数の演算に必要なデータを送る。そして、ハードウェアロジック６により関数の演算を行い、演算が終了したらハードマクロライブラリ管理部５に演算結果を送ると共に、ＣＰＵ２に割り込み信号を送り、演算が終了したことを通知する。そして、ハードマクロライブラリ管理部５はその演算結果をアプリケーションに送って一連の処理が終了する。
【００５７】
一方、ソフトウェアを選択した場合は、ハードマクロライブラリ管理部５は、スロットステータス管理部に問い合わせることなく、ソフトウェアロジック９を用いて関数の演算を行い、演算が終了したらその演算結果をアプリケーションに送って一連の処理が終了する（図９下部参照）。
【００５８】
このように、本発明のコンピュータシステムでは、アプリケーションから関数コールがあった場合に、自動的に、該関数の演算をハードウェアロジック６で行うかソフトウェアロジック９で行うかが判断され、ハードウェアロジック６で行う場合にはフラグ１５を読み込み、空きスロット又は置き換え可能なスロットに新たなハードウェアロジック６が書き込まれるため、関数コールに対して柔軟に対応することができ、処理の高速化を図ることができる。
【００５９】
【発明の効果】
以上説明したように、本発明のコンピュータシステム及び該コンピュータシステムに適したハードウェア／ソフトウェアロジック並びにキャッシュ方法によれば、下記記載の効果を奏する。
【００６０】
本発明の第１の効果は、様々な要求に対して、柔軟かつ高速に対応することができるということである。
【００６１】
その理由は、同一の機能のハードウェアロジックとソフトウェアロジックとをソフトウェア管理下に置き、対応するハードウェアロジックの有無、空きスロットの有無、扱うデータ量等を勘案してハード／ソフトの選択が行われるため、スロット数以上のハードウェアが要求された場合や対応するハードウェアロジックがない場合であってもソフトウェアロジックで処理を代行することができるからである。
【００６２】
また、本発明の第２の効果は、プログラマブル論理回路のスロットを有効に利用することができるということである。
【００６３】
その理由は、各々のスロットに対して、未使用／置き換え可能／置き換え不可等の種別を示すフラグを設け、フラグを参照してスロットが選択されるため、新たな処理に対して、優先度の低いハードウェアロジックを追い出して置き換えを行うことができるからである。
【図面の簡単な説明】
【図１】本発明の一実施例に係るコンピュータシステムの基本構成及びキャッシュ方法を模式的に示す図である。
【図２】本発明の一実施例に係るコンピュータシステムに適用するプログラマブル論理回路の構成を示す図である。
【図３】プログラマブル論理回路のスロットの入出力インターフェース構成を示す図である。
【図４】本発明の一実施例に係るハード／ソフトの選択例を例示する図である。
【図５】本発明の一実施例に係るハード／ソフトの選択例を例示する図である。
【図６】データ量の違いによるハード／ソフトの性能比較を示す図である。
【図７】本発明の一実施例に係るフラグの構成を示す図である。
【図８】本発明の一実施例に係るフラグの変更方法を示す図である。
【図９】本発明の一実施例に係るハードウェア／ソフトウェアロジックの選択手順を示すフロー図である。
【図１０】本発明の一実施例に係るスロットの選択手順を示すフロー図である。
【図１１】従来のマルチプロセッサシステムの基本構成を示す図である。
【図１２】従来のプロセッサ支援システムの基本構成を示す図である。
【図１３】従来のプログラマブル論理回路の基本構成を示す図である。
【図１４】先願に係るプログラマブル論理回路の基本構成を示す図である。
【符号の説明】
１　プログラマブル論理回路
２　ＣＰＵ
３　メモリ
４　バス
５　ハードマクロライブラリ管理部
５ａ　記憶部
６　ハードウェアロジック
７　コプロセッサ又はＡＳＩＣ
８　単位セル
８ａ　ＬＵＴ
８ｂ　フリップフロップ
９　ソフトウェアロジック
１０　スロット
１１　スロット入力制御部
１２　スロット出力制御部
１３　割り込み制御部
１４　ステータス
１５　フラグ
【図１】
2004021426.tif 000003
【図２】
2004021426.tif 000004
【図３】
2004021426.tif 000005
【図４】
2004021426.tif 000006
【図５】
2004021426.tif 000007
【図６】
2004021426.tif 000008
【図７】
2004021426.tif 000009
【図８】
2004021426.tif 000010
【図９】
2004021426.tif 000011
【図１０】
2004021426.tif 000012
【図１１】
2004021426.tif 000013
【図１２】
2004021426.tif 000014
【図１３】
2004021426.tif 000015
【図１４】
2004021426.tif 000016