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