(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムによる処理の少なくとも一部分を、プログラマブル論理回路で処理する情報処理システムにおいて、
前記プログラマブル論理回路を備え、前記アプリケーションプログラムからの命令により、前記プログラマブル論理回路に構成された回路を用いて処理を実行する処理手段と、
前記プログラマブル論理回路に前記回路を構成するための複数個の回路情報を記憶する記憶手段と、
指定情報により指定される一つの回路の回路情報を、前記記憶手段に記憶された複数の回路情報を用いて生成する機能を備える編集手段と、
前記プログラマブル論理回路に構成する回路を特定するために前記アプリケーションプログラムにより指定される情報を、前記指定情報として、前記編集手段に渡し、前記編集手段から到来する前記指定情報により指定された回路の回路情報を取得し、この回路情報により前記処理手段のプログラマブル論理回路に前記指定された回路を構成すると共に、前記プログラマブル論理回路に構成されている回路の情報を記憶する取得手段と、
を備え、
前記取得手段に記憶される前記プログラマブル論理回路に構成されている回路情報には、回路の識別子と、その回路の前記プログラマブル論理回路上の配置情報とを含み、
前記編集手段は、前記回路の識別子および前記配置情報を参照することにより、前記指定情報により指定される回路の回路情報が、前記プログラマブル論理回路に構成されている回路を利用できる状態で生成できる場合には、前記プログラマブル論理回路に構成されている回路部分は再構成することなく利用する状態で、前記回路情報を生成する
ことを特徴とする情報処理システム。
【請求項２】
アプリケーションプログラムによる処理の少なくとも一部分を、プログラマブル論理回路で処理する情報処理システムにおいて、
前記プログラマブル論理回路を備え、前記アプリケーションプログラムからの命令により、前記プログラマブル論理回路に構成された回路を用いて処理を実行する処理手段と、
前記プログラマブル論理回路に前記回路を構成するための複数個の回路情報を記憶する記憶手段と、
指定情報により指定される一つの回路の回路情報を、前記記憶手段に記憶された複数の回路情報を用いて生成する機能を備える編集手段と、
前記プログラマブル論理回路に構成する回路を特定するために前記アプリケーションプログラムにより指定される情報を、前記指定情報として、前記編集手段に渡し、前記編集手段から到来する前記指定情報により指定された回路の回路情報を取得し、この回路情報により前記処理手段のプログラマブル論理回路に前記指定された回路を構成すると共に、前記プログラマブル論理回路に構成されている回路の情報を記憶する取得手段と、
を備え、
前記記憶手段に記憶される複数個の回路情報のそれぞれは、自己の回路情報の識別子を備えるとともに、当該回路情報の一部または全部を他の回路情報で構成する場合には、前記プログラマブル論理回路に回路を構成するための回路データとして、当該他の回路情報の識別子を参照識別子として備えるものであり、
前記編集手段は、前記取得手段からの前記指定情報により指定される回路の回路情報を、当該指定された回路の回路情報と前記参照識別子で示される他の回路情報とを前記記憶手段から入手して生成するものであると共に、
前記編集手段は、前記記憶手段から入手した前記参照識別子により指定される回路の存在を、その参照識別子により前記取得手段に照会することにより、前記プログラマブル論理回路に当該参照識別子で示される回路が構成されていることを認識すると共に、前記取得手段からの、そのプログラマブル論理回路に構成されている回路の配置情報を取得し、前記記憶手段から取得した回路情報を用いて、前記プログラマブル論理回路に構成されている回路部分は再構成することなく利用する状態で、前記回路情報を生成する
ことを特徴とする情報処理システム。
【請求項３】
請求項２に記載の情報処理システムにおいて、
前記編集手段は、前記取得手段からの指定情報に対応して、この指定情報により指定される回路の回路情報を、その識別子により前記記憶手段に照会し、
前記記憶手段は、前記編集手段からの照会に応じて、その照会時の識別子で示される回路情報が参照識別子を含む場合には、その参照識別子を前記編集手段に返し、
前記編集手段は、前記記憶手段から入手した参照識別子により指定される回路の存在を、その参照識別子により前記取得手段に照会し、
前記取得手段は、前記編集手段からの照会に応じて、その照会時の参照識別子で示される回路が前記プログラマブル論理回路に存在する場合には、その回路の前記プログラマブル論理回路上の配置情報を編集手段に返し、
前記配置情報を受け取った前記編集手段は、前記記憶手段から入手した前記プログラマブル論理回路に存在しない回路の参照識別子を用いて、前記記憶手段から当該参照識別子で示される前記他の回路情報を取得し、前記プログラマブル論理回路に構成されている回路部分は再構成することなく利用する状態で、前記回路情報を生成する
ことを特徴とする情報処理システム。
【請求項４】
アプリケーションプログラムによる処理の少なくとも一部分を、プログラマブル論理回路で処理する情報処理システムにおいて、
前記プログラマブル論理回路を備え、前記アプリケーションプログラムからの命令により、前記プログラマブル論理回路に構成された回路を用いて処理を実行する処理手段と、
前記プログラマブル論理回路に前記回路を構成するための複数個の回路情報を記憶する記憶手段と、
指定情報により指定される一つの回路の回路情報を、前記記憶手段に記憶された複数の回路情報を用いて生成する機能を備える編集手段と、
前記プログラマブル論理回路に構成する回路を特定するために前記アプリケーションプログラムにより指定される情報を、前記指定情報として、前記編集手段に渡し、前記編集手段から到来する前記指定情報により指定された回路の回路情報を取得し、この回路情報により前記処理手段のプログラマブル論理回路に前記指定された回路を構成すると共に、前記プログラマブル論理回路に構成されている回路の情報を記憶する取得手段と、
を備え、
前記記憶手段に記憶される複数個の回路情報のそれぞれは、自己の回路情報の識別子を備えるとともに、当該回路情報の一部または全部を他の回路情報で構成する場合には、前記プログラマブル論理回路に回路を構成するための回路データとして、当該他の回路情報の識別子を参照識別子として備えるものであり、
前記編集手段は、前記取得手段からの前記指定情報により指定される回路の回路情報を、当該指定された回路の回路情報と前記参照識別子で示される他の回路情報とを前記記憶手段から入手して生成するものであると共に、
前記取得手段は、前記指定情報と共に、前記プログラマブル論理回路に構成されている回路の情報を前記編集手段に送り、
前記編集手段は、前記取得手段からの指定情報に対応して、この指定情報により指定される回路の回路情報を、その識別子により前記記憶手段に照会し、
前記記憶手段は、前記編集手段からの照会に応じて、その照会時の識別子で示される回路情報が参照識別子を含む場合には、その参照識別子を前記編集手段に返し、
前記編集手段は、前記記憶手段から入手した参照識別子により指定される回路の存在を、その参照識別子により前記取得手段から得た前記プログラマブル論理回路に構成されている回路の情報を参照することにより、前記指定情報で指定される回路の回路情報の参照識別子で示される回路が前記プログラマブル論理回路に存在するかどうかを識別し、前記記憶手段から入手した前記プログラマブル論理回路に存在しない回路の参照識別子を用いて、前記記憶手段から当該参照識別子で示される前記他の回路情報を取得し、前記プログラマブル論理回路に構成されている回路部分は再構成することなく利用する状態で、前記回路情報を生成する
ことを特徴とする情報処理システム。
【請求項５】
アプリケーションプログラムによる処理の少なくとも一部分を、プログラマブル論理回路で処理する情報処理システムであって、
前記プログラマブル論理回路を備え、前記アプリケーションプログラムからの命令により、前記プログラマブル論理回路に構成された回路を用いて処理を実行する処理手段と、
前記プログラマブル論理回路に前記回路を構成するための複数個の回路情報を記憶する記憶手段と、
指定情報により指定される一つの回路の回路情報を、前記記憶手段に記憶された複数の回路情報を用いて生成する機能を備える編集手段と、
前記プログラマブル論理回路に構成する回路を特定するために前記アプリケーションプログラムにより指定される情報を、前記指定情報として、前記編集手段に渡し、前記編集手段から到来する前記指定情報により指定された回路の回路情報を取得し、この回路情報により前記処理手段のプログラマブル論理回路に前記指定された回路を構成すると共に、前記プログラマブル論理回路に構成されている回路の情報を記憶する取得手段と、
を備え、
前記編集手段は、前記指定情報により指定される回路の回路情報を生成する際に、前記取得手段から得た前記プログラマブル論理回路に構成されている回路の情報を参照して、前記プログラマブル論理回路に構成されている回路部分は再構成することなく利用する状態で、前記回路情報を生成する情報処理システムにおいて、
前記記憶手段に記憶される複数個の回路情報のそれぞれは、回路データ部と、その付加情報部とからなり、
前記付加情報部は、自己の回路情報の識別子を含むとともに、当該回路情報の一部または全部を他の回路情報で構成する場合には、当該他の回路情報の識別子を参照識別子として含むものであり、
前記回路データ部は、前記プログラマブル論理回路のコンフィギュレーションメモリのアドレスと、そのアドレスに格納される回路データとの対で記述されるものであって、当該回路情報の一部または全部を他の回路情報で構成する場合には、その回路情報の一部または全部の回路データは、前記参照識別子を用いて記述したものとされるとともに、前記参照識別子が、前記回路情報において前記他の回路情報を参照する位置に対応するアドレスの回路データとして記述されており、
前記編集手段は、前記取得手段からの前記指定情報に対応して、当該指定情報により指定される回路の回路情報を、その識別子により前記記憶手段に照会し、  前記記憶手段は、前記編集手段からの照会に応じて、その照会時の前記識別子で示される回路情報の前記付加情報部が参照識別子を含む場合には、その参照識別子を前記編集手段に返し、
前記編集手段は、前記記憶手段から入手した前記参照識別子を用いて、前記記憶手段から前記他の回路情報を取得し、取得した他の回路情報は、指定情報により指定された回路の回路情報の回路データとして参照識別子が記述されたアドレスと、前記処理手段に存在する参照識別子で示される回路のアドレスとの差分アドレスを、前記参照識別子に対応する前記他の回路情報の回路データ部のすべてのアドレスに加えて、前記参照識別子が記述された回路情報に結合する
ことを特徴とする情報処理システム。
【請求項６】
請求項１〜５のいずれかに記載の情報処理システムにおいて、
前記記憶手段を構成する部分と、前記編集手段を構成する部分と、前記取得手段および処理手段を構成する部分とが、ネットワークを介して接続されている
ことを特徴とする情報処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、アプリケーションプログラムによる処理の少なくとも一部分を、回路構成を再構成できるプログラマブル論理回路で処理することが可能である情報処理システムに関する。
【０００２】
【従来の技術】
デジタル回路装置、特に特定用途向け集積回路（ＡＳＩＣ）の分野において、製品の開発期間を短縮するために、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）やプログラマブルロジックデバイス（ＰＬＤ）などで構成されたプログラマブル論理回路が広く使われている。
【０００３】
これらのプログラマブル論理回路は、論理回路を記述する回路情報をこれらに読み込ませることで、内部の論理回路と論理回路間の結線を自由に構成することができる。このため、プログラマブル論理回路を用いることで、従来は回路設計の終了後に数週間から数か月を必要とした集積回路の作製時間が不要になるというメリットがある。特に、米国特許第４，７００，１８７号の発明のような電気的に再構成可能なプログラマブル論理回路は、一度作製した回路を必要に応じて自由に何度でも変更できるという利点があり、プログラマブル論理回路は、ますます広く使われるようになってきている。
【０００４】
この種のプログラマブル論理回路の回路を設計する装置のひとつとして、特開平６−２３２２５９号公報に開示される「ＦＰＧＡ回路設計装置及び方法」の例がある。これを従来例１として図１８及び図１９を参照しながら説明する。
【０００５】
図１８は、大規模ＦＰＧＡ回路を設計するＣＡＤシステムの構成図を示したものである。この装置は、予め、配置配線情報および論理機能情報を有したＦＰＧＡ機能モジュールよりなるハードマクロセルを、複数個、登録したデータベース１２を有し、このデータベースに登録された複数のハードマクロセルを用いて配置、配線することで、より大規模のＦＰＧＡ集積回路を設計するものである。
【０００６】
この装置においては、マンマシンインターフェースとしてのデータ入出力装置１０に対して設計者が操作してファイル管理プログラム群１１を動作させる。このファイル管理プログラム群１１は、論理ファイル管理プログラム、ライブラリ管理プログラム、配置配線管理プログラム等を有し、これらにより、管理対象であるデータベース１２を管理する。
【０００７】
データベース１２は、ＦＰＧＡの論理機能情報を多数登録した論理ファイルと、機能モジュールとしてのＦＰＧＡセルを登録したセルライブラリと、ＦＰＧＡ内外の配置配線情報を登録した配置配線ファイルとからなる。セルライブラリには、予め配置配線情報および論理機能情報を持ち、ペリフェラル回路等として特定の機能を実行するハードマクロセルを予め多数登録する。このデータベース１２の各ファイルの内容は、適宜、診断システム１３により読み出されて診断され、その診断データ１４が出力される。
【０００８】
そして、このデータベースに登録される各ファイルの内容に従い、図面入力システム、ネットリスト生成システム、レイアウトシステム、セル内配置配線システム、出力プログラムを順次用いることにより、大規模ＦＰＧＡ回路を実現するための設計図面及びそのプログラムを出力させる。
【０００９】
このＣＡＤシステムによって設計された１チップのＦＰＧＡによるマイクロコンピュータシステムの構成例を図１９に示す。このＦＰＧＡチップ２０は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、Ｉ／Ｏポート２４、処理すべきプログラムの経過時間を計るＰＩＴ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｖａｌ  Ｔｉｍｅｒ）２５、同時に発生した複数の装置からの割り込み信号を制御するＰＩＣ  （Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ）２６、ＣＰＵ２１と必要なメモリアクセスの調停を行うＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）２７のそれぞれが、アドレス／データバス２８および制御信号線２９に接続されて構成される。
【００１０】
このうち、Ｉ／Ｏポート２４、ＰＩＴ２５、ＰＩＣ２６、ＤＭＡＣ２７に相当するハードマクロセルが、あらかじめデータベース１２のセルライブラリに登録されており、これらは、このハードマクロセルをそのまま読み出してＦＰＧＡチップ２０上にマッピングするのみで、これらのＦＰＧＡセル内の配置配線処理を終えることができる。
【００１１】
以上のようにして、この従来例１によれば、あらかじめ配置配線情報及び論理機能情報を有したＦＰＧＡ機能モジュールよりなるハードマクロセルを複数登録したライブラリを有し、このライブラリに登録された複数のハードマクロセルを用いて配置、配線を行うことで、既存のＦＰＧＡ回路を設計財産として活かし、システム設計の負担を軽減して開発期間を短縮した設計ができる。
【００１２】
ところで、以上説明した従来例１は、１個のＦＰＧＡチップを設計する際の発明に関するものであるが、最近の論理回路は複雑さが増し、一つのプログラマブル論理回路装置では実現できない規模にまで回路規模が大きくなっている。
【００１３】
この問題を解決するためのひとつの方法として、異なる時間に異なる論理回路を実現するために、プログラマブル論理回路を処理の途中で再構成することが提案されている。この方法を用いることにより、携帯情報端末のように、装置が小型であるため、内蔵できる回路規模に制約がある場合でも、様々な処理が比較的高速に行えるという利点がある。
【００１４】
しかし、プログラマブル論理回路を再構成するときには、回路全体の回路情報を再度読み込ませるため、再構成に時間がかかるという欠点がある。さらに、処理の途中で再構成することは、処理を一時中断し、その時のデータをプログラマブル論理回路の外部の記憶装置に待避させ、新たな回路情報を読み込んで再構成し、再構成前のデータと再構成に伴う新しいデータを入力するという余分な処理が必要で、データを出し入れする処理は冗長なものとになる。
【００１５】
この問題を解決するために、米国アトメル社の「ＣＯＮＦＩＧＵＲＡＢＬＥ  ＬＯＧＩＣ」という名のデータブックに記載されているプログラマブル論理回路、および米国ザイリンクス社の「ＴＨＥ  ＰＲＯＧＲＡＭＭＡＢＬＥ  ＬＯＧＩＣ」という名のデータブックに記載されているプログラマブル論理回路では、データを記憶するためのデータ記憶装置を有し、回路の動作中でも外部の記憶装置から回路情報の一部を読み込んで部分的に再構成を行うことで、再構成するための時間を最小に留めるようにしている。
【００１６】
このようなプログラマブル論理回路を情報処理システムに用いるときの問題は、所望の論理回路を構成するための回路情報を格納先から取り出し、必要に応じて複数の回路情報を合成して処理に適切な形式に変換し、所望の論理回路を再構成することを高速かつ効率的に行わねばならないことである。
【００１７】
上述した複数の回路情報をプログラマブル論理回路に異なる時間に再構成して所定の処理を行う情報システムは、ネットワークに接続して利用することができる。その例として、特開平１０−７８９３２号公報に記載される「リコンフィグラブル・ネットワークコンピュータ」があり、それを従来例２として図２０を参照しながら説明する。
【００１８】
この従来例２の情報処理システムは、通信ネットワークＮＥＴに接続された複数のコンピュータで構成され、その内の少なくとも一つがアプリケーションプログラムを配布するコンピュータ（アプリケーション・サーバ）ＳＢであり、残りのコンピュータが前記アプリケーションプログラムをダウンロードし、実行するクライアントとなるコンピュータ（クライアント・コンピュータ）ＣＬで構成されたシステムである。複数のクライアント・コンピュータＣＬの一部に、プログラムにより機能を随時変更し再構成することが可能な拡張ハードウェア（拡張ＨＷ）３１が搭載されている。
【００１９】
サーバＳＢに格納されたアプリケーションプログラムＡＰにおいては、その一部の機能に対して、拡張ハードウェアのプログラムコード（拡張コード）と、クライアント・コンピュータＣＬのメインのプロセッサ（メインＰ）３２のコードが含まれている。
【００２０】
クライアント・コンピュータＣＬのＯＳは、拡張ハードウェア３１が実装されているか否かを判断する機能を持ち、拡張ハードウエア３１が実装されている場合には、図２０の上側のクライアント・コンピュータＣＬのように、アプリケーションプログラムＡＰの中からハードウェア構成に適したコードのみ取り出すコード選択機能３３を持っている。また、図２０の下側のクライアント・コンピュータＣＬのように、拡張ハードウェア３１を持たない場合には、コード選択機能３３により、メインプロセッサ３２のコードが選択されてアプリケーションを利用できる。
【００２１】
別の構成では、拡張ハードウェア３１で実現する機能を、クライアント・コンピュータＣＬ上に後から動的に追加／削除が可能なＯＳの拡張機能あるいは動的ライブラリとして実現し、アプリケーションプログラムＡＰがＯＳに対し処理中に利用する拡張機能あるいは動的ライブラリの種類を登録する。ＯＳは、拡張機能あるいは動的ライブラリがクライアント上に存在する場合にはそれを用い、存在しない場合にはネットワークＮＥＴ上のサーバＳＢから必要とする拡張機能あるいは動的ライブラリを転送し、利用する。
【００２２】
また、メインプロセッサ３２用のコード、拡張ハードウェア３１用のコードは、一体となっているのではなく、アプリケーションプログラムＡＰまたはＯＳの拡張機能または動的ライブラリ毎に、個々のコードをホストコンピュータに上に備えることもできる。
【００２３】
さらに、従来例２の場合には、拡張ハードウエアを構成するプログラマブル論理回路の構成が、クライアント間で異なる場合は、拡張コードを、適当なゲート数と入出力端子数の論理回路の機能をブール式等で記述した基本モジュールと、それらの接続関係を表現したコードとすることもできる。なお、基本モジュールは、他の回路が参照して設計財産として再利用することができる。
【００２４】
さらに、この基本モジュールを、それぞれプログラマブル論理回路の基本プログラムに割り付ける機能と、複数のプログラマブル論理回路チップにまたがる大きな拡張コードの場合には、基本モジュールを接続の度合いに応じて分割し、各プログラマブル論理回路チップに配置配線する機能を、サーバまたはクライアント上に持つ。
【００２５】
また、拡張ハードウェアを利用する複数のアプリケーションを同時に実行できるように、必要のなくなったハードウェア資源を別のアプリケーションプログラムのために再利用するハードウェア資源の管理機能と、拡張ハードウェアに入りきらない拡張コードを時分割で入れ替えるコード入れ替え機能を持つ。
【００２６】
また、クライアント上で実行されるアプリケーションプログラム毎に適宜設定されるプライオリティ値、メインプロセッサの処理能力値、拡張ハードウェアの処理能力値、ハードウェア資源量、コード入れ替えのために必要な処理能力値を基に、ハードウェア資源に入りきらない複数のアプリケーションプログラムに対して選択する拡張ハードウェア管理機能を持つ。
【００２７】
複数のアプリケーションが同時に同じ拡張コードを拡張ハードウェアで利用する場合には、内部状態のみを時分割で切り替えて機能を共有する。
【００２８】
以上のように、従来例２の場合には、ネットワークで接続されたコンピュータ上で、サーバから配布されたアプリケーションプログラムをクライアント側で実行する際、クライアント側に、プログラムにより機能を随時変更し、再構成可能な拡張ハードウェアを搭載し、サーバに格納されたアプリケーションプログラムには、クライアントのメインプロセッサコードと拡張コードを含ませ、拡張ハードウェアの有無、種類を判断したコード選択機能によって、クライアント側の計算機の構成を変え、処理に適した構成にすることでアプリケーションプログラムを高速に処理できる。
【００２９】
また、ネットワーク上で、クライアント側に特殊なハードウエアを必要とする新しいサービスを開始しようとする場合には、従来は、クライアント側のユーザはそのために新しいハードウエアを導入する必要があり、また、サービスの提供者は、新しいハードウエアをもつ一部のユーザに対してのみ、新しいサービスを提供することになったが、上述の従来例２を実施することにより、新しいハードウエアを導入することなく、新しいサービスを開始することが可能となる。
【００３０】
【発明が解決しようとする課題】
しかしながら、従来例２においては、新たなアプリケーションで必要とする拡張コードが、すでに拡張ハードウェアに構成されている拡張コードの一部分と共通の場合でも、全体の拡張コードをサーバーから転送して再構成する必要があり、転送および再構成に要する時間分だけ処理時間が長くなり、処理速度の低下を招く問題があった。さらに、拡張ハードウエア上に同じ回路が重複して再構成されるので、拡張ハードウエアの利用効率が悪いという問題があった。
【００３１】
この発明は、上記の点にかんがみ、プログラマブル論理回路上に構成されている回路を、できるだけ利用することができるようにプログラマブル論理回路の回路情報を生成することにより、処理速度の低下の問題を解決すると共に、プログラマブル論理回路上に構成されている回路の利用効率の向上を図ることを目的とする。
【００３２】
【課題を解決するための手段】
上記課題を解決するため、この発明による情報処理システムは、
アプリケーションプログラムによる処理の少なくとも一部分を、プログラマブル論理回路で処理する情報処理システムにおいて、
前記プログラマブル論理回路を備え、前記アプリケーションプログラムからの命令により、前記プログラマブル論理回路に構成された回路を用いて処理を実行する処理手段と、
前記プログラマブル論理回路に前記回路を構成するための複数個の回路情報を記憶する記憶手段と、
指定情報により指定される一つの回路の回路情報を、前記記憶手段に記憶された複数の回路情報を用いて生成する機能を備える編集手段と、
前記プログラマブル論理回路に構成する回路を特定するために前記アプリケーションプログラムにより指定される情報を、前記指定情報として、前記編集手段に渡し、前記編集手段から到来する前記指定情報により指定された回路の回路情報を取得し、この回路情報により前記処理手段のプログラマブル論理回路に前記指定された回路を構成すると共に、前記プログラマブル論理回路に構成されている回路の情報を記憶する取得手段と、
を備え、
前記取得手段に記憶される前記プログラマブル論理回路に構成されている回路情報には、回路の識別子と、その回路の前記プログラマブル論理回路上の配置情報とを含み、
前記編集手段は、前記回路の識別子および前記配置情報を参照することにより、前記指定情報により指定される回路の回路情報が、前記プログラマブル論理回路に構成されている回路を利用できる状態で生成できる場合には、前記プログラマブル論理回路に構成されている回路部分は再構成することなく利用する状態で、前記回路情報を生成する
ことを特徴とする。
【００３３】
また、第２の発明による情報処理システムは、上記第１の発明において、
前記取得手段に記憶される前記プログラマブル論理回路に構成されている回路情報には、回路の識別子と、その回路の前記プログラマブル論理回路上の配置情報とを含み、
前記編集手段は、前記回路の識別子および前記配置情報を参照することにより、前記指定情報により指定される回路の回路情報が、前記プログラマブル論理回路に構成されている回路を利用できる状態で生成できる場合には、前記プログラマブル論理回路に構成されている回路部分は再構成することなく利用する状態で、前記回路情報を生成することを特徴とする。
【００３４】
第３の発明による情報処理システムは、上記第１の発明において、
前記記憶手段に記憶される複数個の回路情報のそれぞれは、自己の回路情報の識別子を備えるとともに、当該回路情報の一部または全部を他の回路情報で構成する場合には、前記プログラマブル論理回路に回路を構成するための回路データとして、当該他の回路情報の識別子を参照識別子として備えるものであり、
前記編集手段は、前記取得手段からの前記指定情報により指定される回路の回路情報を、当該指定された回路の回路情報と前記参照識別子で示される他の回路情報とを前記記憶手段から入手して生成するものであって、
前記編集手段は、前記記憶手段から入手した前記参照識別子により指定される回路の存在を、その参照識別子により前記取得手段に照会することにより、前記プログラマブル論理回路に当該参照識別子で示される回路が構成されていることを認識すると共に、前記取得手段からの、そのプログラマブル論理回路に構成されている回路の配置情報を取得し、前記記憶手段から取得した回路情報を用いて、前記プログラマブル論理回路に構成されている回路部分は再構成することなく利用する状態で、前記回路情報を生成する
ことを特徴とする。
【００３５】
また、第４の発明の情報処理装置は、上記第３の発明において、
前記編集手段は、前記取得手段からの指定情報に対応して、この指定情報により指定される回路の回路情報を、その識別子により前記記憶手段に照会し、
前記記憶手段は、前記編集手段からの照会に応じて、その照会時の識別子で示される回路情報が参照識別子を含む場合には、その参照識別子を前記編集手段に返し、
前記編集手段は、前記記憶手段から入手した参照識別子により指定される回路の存在を、その参照識別子により前記取得手段に照会し、
前記取得手段は、前記編集手段からの照会に応じて、その照会時の参照識別子で示される回路が前記プログラマブル論理回路に存在する場合には、その回路の前記プログラマブル論理回路上の配置情報を編集手段に返し、
前記配置情報を受け取った前記編集手段は、前記記憶手段から入手した前記プログラマブル論理回路に存在しない回路の参照識別子を用いて、前記記憶手段から当該参照識別子で示される前記他の回路情報を取得し、前記プログラマブル論理回路に構成されている回路部分は再構成することなく利用する状態で、前記回路情報を生成する
ことを特徴とする。
【００３６】
第５の発明による情報処理システムは、上記第１の発明において、
前記記憶手段に記憶される複数個の回路情報のそれぞれは、自己の回路情報の識別子を備えるとともに、当該回路情報の一部または全部を他の回路情報で構成する場合には、前記プログラマブル論理回路に回路を構成するための回路データとして、当該他の回路情報の識別子を参照識別子として備えるものであり、
前記編集手段は、前記取得手段からの前記指定情報により指定される回路の回路情報を、当該指定された回路の回路情報と前記参照識別子で示される他の回路情報とを前記記憶手段から入手して生成するものであって、
前記取得手段は、前記指定情報と共に、前記プログラマブル論理回路に構成されている回路の情報を前記編集手段に送り、
前記編集手段は、前記取得手段からの指定情報に対応して、この指定情報により指定される回路の回路情報を、その識別子により前記記憶手段に照会し、
前記記憶手段は、前記編集手段からの照会に応じて、その照会時の識別子で示される回路情報が参照識別子を含む場合には、その参照識別子を前記編集手段に返し、
前記編集手段は、前記記憶手段から入手した参照識別子により指定される回路の存在を、その参照識別子により前記取得手段から得た前記プログラマブル論理回路に構成されている回路の情報を参照することにより、前記指定情報で指定される回路の回路情報の参照識別子で示される回路が前記プログラマブル論理回路に存在するかどうかを識別し、前記記憶手段から入手した前記プログラマブル論理回路に存在しない回路の参照識別子を用いて、前記記憶手段から当該参照識別子で示される前記他の回路情報を取得し、前記プログラマブル論理回路に構成されている回路部分は再構成することなく利用する状態で、前記回路情報を生成する
ことを特徴とする。
【００３７】
第６の発明による情報処理システムは、上記第１の発明において、
前記記憶手段に記憶される複数個の回路情報のそれぞれは、回路データ部と、その付加情報部とからなり、
前記付加情報部は、自己の回路情報の識別子を含むとともに、当該回路情報の一部または全部を他の回路情報で構成する場合には、当該他の回路情報の識別子を参照識別子として含むものであり、
前記回路データ部は、前記プログラマブル論理回路のコンフィギュレーションメモリのアドレスと、そのアドレスに格納される回路データとの対で記述されるものであって、当該回路情報の一部または全部を他の回路情報で構成する場合には、その回路情報の一部または全部の回路データは、前記参照識別子を用いて記述したものとされるとともに、前記参照識別子が、前記回路情報において前記他の回路情報を参照する位置に対応するアドレスの回路データとして記述されており、
前記編集手段は、前記取得手段からの前記指定情報に対応して、当該指定情報により指定される回路の回路情報を、その識別子により前記記憶手段に照会し、
前記記憶手段は、前記編集手段からの照会に応じて、その照会時の前記識別子で示される回路情報の前記付加情報部が参照識別子を含む場合には、その参照識別子を前記編集手段に返し、
前記編集手段は、前記記憶手段から入手した前記参照識別子を用いて、前記記憶手段から前記他の回路情報を取得し、取得した他の回路情報は、指定情報により指定された回路の回路情報の回路データとして参照識別子が記述されたアドレスと、前記処理手段に存在する参照識別子で示される回路のアドレスとの差分アドレスを、前記参照識別子に対応する前記他の回路情報の回路データ部のすべてのアドレスに加えて、前記参照識別子が記述された回路情報に結合する
ことを特徴とする。
【００３８】
第７の発明による情報処理システムは、上記第１〜第６の発明のいずれかにおいて、
前記記憶手段を構成する部分と、前記編集手段を構成する部分と、前記取得手段および処理手段を構成する部分とが、ネットワークを介して接続されている
ことを特徴とする。
【００３９】
【作用】
第１の発明の情報処理システムにおいては、アプリケーションプログラムの実行時に、当該アプリケーションプログラムにより、処理手段のプログラマブル論理回路で処理を実行させるために、当該プログラマブル論理回路に構成する回路を特定するための情報が取得手段に送られる。取得手段は、この情報を、回路情報の指定情報として編集手段に渡す。編集手段は、この指定情報を記憶手段に送る。
【００４０】
すると、記憶手段は、指定情報で指定される回路情報を編集手段に返す。編集手段は、これを受け取り、指定された回路情報を生成するために、記憶手段の他の回路情報も必要と判断すると、当該他の回路情報も記憶手段から取得するようにする。この際に、編集手段は、取得手段から得たプログラマブル論理回路に構成されている回路の情報を参照し、指定された回路情報が、プログラマブル論理回路に構成されている回路を含んでいるかどうかを判別する。
【００４１】
そして、編集手段は、記憶手段から取得した複数個の回路情報から、指定された回路情報を、プログラマブル論理回路に構成されている回路部分を利用する状態で、すなわち、プログラマブル論理回路に構成されている回路部分を除いて、生成し、それを指定情報により要求された情報として取得手段に返す。取得手段は、編集手段から取得した回路情報を処理手段のプログラマブル論理回路に再構成する。
【００４２】
処理手段は、このプログラマブル論理回路に再構成された回路を用いてアプリケーションプログラムにより指示された処理を実行することができる。
【００４３】
以上のようにして、この第１の発明の情報処理システムにおいては、アプリケーションプログラムの実行時に、取得手段に指定情報を渡すと、この取得手段からの要求に応じて、編集手段が、処理手段のプログラマブル論理回路に既に構成されている回路をそのまま利用する状態で、処理手段のプログラマブル論理回路に構成すべき回路情報を自動的に生成して取得手段に返し、取得手段がプログラマブル論理回路に回路情報を再構成するように動作する。
【００４４】
したがって、プログラマブル論理回路上に既に構成されている回路を再構成する必要がないので、その分の再構成時間が短縮化され、処理時間の短縮化に供給すると共に、プログラマブル論理回路上に構成されている回路の効率的な利用を図ることができる。
【００４５】
また、この発明によれば、アプリケーションプログラムの指示に従って、取得手段と編集手段とが、記憶手段の情報を用いて、必要な回路情報を生成するようにするので、予め回路情報をアプリケーションプログラム内などに格納しておく必要はない。
【００４６】
また、第２の発明の情報処理システムにおいては、取得手段には、プログラマブル論理回路に構成されている回路の回路配置情報が記憶されており、編集手段は、この回路配置情報から、指定情報により指定された回路が、既にプログラマブル論理回路上に在る回路を用いて構成することができるか否かを判定して、必要な回路情報を生成することができる。
【００４７】
したがって、プログラマブル論理回路上に構成されている回路の効率的な利用を、確実に、図ることができる。
【００４８】
また、第３の発明の情報処理システムにおいては、記憶手段に記憶される回路情報の構造は、他の回路を参照しない回路データの構成の回路情報を最下層の回路情報として、いわゆるツリー構造となる。
【００４９】
すなわち、各回路情報は、自己の識別子として例えば回路名を備える。そして、各回路情報は、その一部または全部を他の回路情報で構成する場合には、回路データとして、当該他の回路情報の識別子を参照識別子として備える。参照識別子は、他の回路情報の回路名を用いることができる。参照識別子で示される他の回路情報も、その一部または全部を他の回路情報で構成することができる。そして、最下層の回路情報は、参照識別子を回路データに持たない構造となる。取得手段が記憶するプログラマブル論理回路に構成されている回路の情報は、例えば回路名として、この参照識別子を持つ。
【００５０】
そして、編集手段は、取得手段から渡された指定情報で示される回路情報の識別子により記憶手段に回路情報の照会を行う。記憶手段は、編集手段から回路情報の識別子を受け取ると、その回路情報を編集手段に返すとともに、その識別子で示される回路情報が参照識別子を含む場合には、その参照識別子を編集手段に返す。
【００５１】
編集手段は、受け取った参照識別子により指定される回路がプログラマブル論理回路に存在するか否かを、その参照識別子により取得手段に照会する。取得手段は、この編集手段からの照会に応じて、その照会時の参照識別子で示される回路がプログラマブル論理回路に存在する場合には、そのプログラマブル論理回路上の配置情報を編集手段に返す。
【００５２】
編集手段は、この配置情報を受け取ると、記憶手段から取得した回路情報を用いて、前記プログラマブル論理回路に構成されている回路部分は再構成することなく利用する状態で、前記回路情報を生成する。
【００５３】
この第３の発明によれば、指定された回路情報を構成する複数の回路の一部をプログラマブル論理回路に存在している回路を用いるようにすることができ、そのプログラマブル論理回路に存在している回路の再構成が不要になると共に、当該回路の効率的な利用を図ることができる。
【００５４】
また、第４の発明においては、編集手段は、記憶手段から受け取った参照識別子により指定される回路がプログラマブル論理回路に存在するか否かを、その参照識別子により取得手段に照会し、取得手段からの返答により、指定情報で指定された回路情報のうちのプログラマブル論理回路に構成されている回路を認識する。そして、指定情報で指定された回路情報のうちの、プログラマブル論理回路上に構成されていない他の回路情報を、記憶手段から取得したその参照識別子を用いて、記憶手段から取得する。そして、前記プログラマブル論理回路に構成されている回路部分を除く回路部分の回路情報を、指定された回路情報として生成する。
【００５５】
この第４の発明によれば、記憶手段からは、プログラマブル論理回路上に存在しない回路情報のみを取得するだけでよく、プログラマブル論理回路上に存在している回路情報の記憶手段からの取得時間分だけ、処理を早くすることができる。
【００５６】
また、第５の発明においては、取得手段からのプログラマブル論理回路に構成されている回路の情報は、回路情報の指定情報と共に、編集手段に送られる。したがって、編集手段は、第３の発明のように、記憶手段から取得した参照識別子を取得手段に照会することなく、この編集手段の中で、プログラマブル論理回路に構成されている回路を確認することにより、前述した第３の発明と同様にして、プログラマブル論理回路に構成されている回路を、できるだけ利用しながら、必要な回路情報を生成することができる。
【００５７】
また、第６の発明においては、回路情報の回路データ部は、プログラマブル論理回路のコンフィギュレーションメモリのアドレスと、そのアドレスに格納される回路データとの対で記述されているとともに、回路情報の一部または全部が他の回路情報で構成される場合には、参照識別子が、回路情報において他の回路情報を参照する位置に対応するアドレスの回路データとして記述されている。
【００５８】
したがって、編集手段は、回路データ部のデータ内容に従って、参照識別子で示される回路情報を割り付けることにより、指定情報で指定された回路の回路情報を、迅速に組み立てることができる。
【００５９】
特に、指定情報で指定された回路の回路情報にプログラマブル論理回路に既に構成されている回路を含む場合に、その回路部分をそのまま利用する状態となるように回路情報を生成するとき、プログラマブル論理回路に存在する一つの参照識別子で示される回路のアドレスと、記憶手段から取得したその他の参照識別子で示される回路のアドレスとの差分アドレスを、前記他の回路情報の回路データ部のすべてのアドレスに加えて、前記参照識別子が記述された回路情報に結合することにより必要な回路情報を生成する。
【００６０】
このように、第６の発明によれば、単に、アドレスにオフセットを付加するだけで、参照識別子で示される回路情報を、その参照識別子が記述された回路情報に結合することができ、配置配線の演算時間がほとんど不要になる。このため、編集手段では、短時間で回路情報を生成することができる。
【００６１】
さらに、プログラマブル論理回路に構成されている回路の部分の回路情報の部分は、その他の回路情報にアドレスに前述のようなオフセットを付加することにより、生成する回路情報に含ませないようにすることができる。したがって、プログラマブル論理回路に存在する回路を利用する状態での回路情報の生成が容易になるものである。
【００６２】
また、第７の発明の情報処理システムにおいては、記憶手段を構成する部分と、編集手段を構成する部分と、取得手段および処理手段を構成する部分とが、ネットワークを介して接続されており、一つの情報処理装置内に編集手段や記憶手段を持つ必要がない。このため、取得手段および処理手段とアプリケーションプログラムで動作する情報処理装置から見ると、指定情報をネットワークを通じて送出すると、その指定情報に対応した回路情報が自動的に送られてくるシステムの構造となり、記憶手段部分、編集手段部分、取得手段および処理手段の部分の構成は、それぞれ任意にできる。
【００６３】
【発明の実施の形態】
以下、この発明による情報処理システムの実施の形態を、図を参照しながら説明する。
【００６４】
［情報処理システム全体の構成の概要］
この発明による、少なくとも処理の一部分が、回路構成を再構成できるプログラマブル論理回路を保有する処理手段で処理される情報処理システムの第１の実施の形態の主要な概念構成を図１に示す。
【００６５】
この場合の情報処理システムは、情報処理部１００と、記憶部２００と、編集部３００とからなる。これら情報処理部１００と、記憶部２００と、編集部３００とは、一つの情報処理装置内に構成されることもできるし、それぞれ別々の装置として、互いにネットワークを介して接続するようにして構成することもできる。
【００６６】
また、記憶部２００と編集部３００とを一つのコンピュータシステムにより構成し、これと、コンピュータシステムからなる情報処理部１００とをネットワークを通じて接続して、情報処理システムを構成するようにすることもできる。
【００６７】
以下に説明する例では、これら情報処理部１００、記憶部２００、編集部３００は、それぞれ別々の装置として、互いにネットワークを介して接続する場合として説明する。
【００６８】
情報処理部１００においては、アプリケーションプログラム１０１は、実行しようとする一連の処理を複数個の処理に分割し、分割した処理をＣＰＵ１０２またはプログラマブル論理回路を保有するハードウエア処理部１０３で実行する。アプリケーションプログラム１０１には、ＣＰＵ１０２で行う処理は、ＣＰＵ１０２の命令コードで記述され、また、ハードウエア処理部１０３で行う処理は、これが保有するプログラマブル論理回路１０４に構成する回路名と、その回路を構成要素の一部として構成されたハードウエア処理部１０３の制御コードで記述されている。
【００６９】
ハードウエア処理部１０３は、処理手段を構成するもので、プログラマブル論理回路１０４として、この例ではＦＰＧＡタイプのプログラマブル論理回路を保有し、このプログラマブル論理回路１０４に構成された回路を利用して処理を行う。
【００７０】
取得手段を構成する回路情報取得部１０５は、アプリケーションプログラム１０１からの、ハードウエア処理部１０３のプログラマブル論理回路１０４に構成する回路の要求（回路の指定情報）を受けて、その回路を構成するための回路情報を編集部３００に要求し、その要求した回路情報を編集部３００から取得する。後で説明するように、回路情報はヘッダ部とコード部（回路データ部）で構成されている。
【００７１】
そして、回路情報取得部１０５は、取得した回路情報のコード部に記述されている回路データを、ハードウエア処理部１０３にロードして、そのプログラマブル論理回路１０４に回路を構成する。さらに、回路情報取得部１０５は、回路情報のヘッダ部に記述されている入出力ポート情報をアプリケーションプログラム１０１に提供する。
【００７２】
アプリケーションプログラム１０１は、この回路情報取得部１０５からの入出力ポート情報に基づいて、ハードウエア処理部１０３のプログラマブル論理回路１０４に構成された回路に、データを入出力する。
【００７３】
また、回路情報取得部１０５は、そのときにハードウエア処理部１０３のプログラマブル論理回路１０４に、どのような回路がどのように配置されているかの情報を、構成回路メモリ１０６に格納して保存している。保存情報は、プログラマブル論理回路１０４に存在している回路名と、その回路がプログラマブル論理回路上に構成されている領域の配置アドレス情報とからなる。
【００７４】
さらに、この実施の形態では、回路情報取得部１０５は、後述する編集部３００からの照会に応じて、そのときにプログラマブル論理回路１０４にどのような回路がどのように配置されているかの情報を編集部３００に返す機能を備えている。
【００７５】
記憶部２００は、プログラマブル論理回路１０４の回路を構成する複数の回路情報を格納する。後述するように、この場合、回路情報は、他の回路情報を参照することにより、記述することができる、いわゆるツリーデータ構造によって記憶部２００に記憶することができるようにされており、これにより、過去に生成された回路情報資源を有効に活用することができるとともに、記憶部２００の記憶素子の記憶容量の削減を図っている。
【００７６】
この記憶部２００は、この例の場合には、後述するように、情報処理部１００に接続されるネットワーク上のコンピュータシステムに設けるが、情報処理部１００と一体のコンピュータシステム内に設けてもよい。
【００７７】
編集部３００は、情報処理部１００の回路情報取得部１０５から要求された回路の回路情報を生成するために必要な回路情報を、記憶部２００から取得する。そして、取得した回路情報を、必要に応じて、編集して、プログラマブル論理回路１０４に再構成する回路の回路情報を生成する。
【００７８】
この回路情報の編集、生成の際に、編集部３００は、回路情報取得部１０５に対して、再構成のために回路情報を生成しようとする回路中に、そのときにプログラマブル論理回路１０４に存在している回路を含むかどうかを判別するための問い合わせを行う。
【００７９】
そして、再構成しようとする回路中に、プログラマブル論理回路１０４に存在している回路が含まれる場合には、そのプログラマブル論理回路１０４に存在している回路を、そのまま利用する状態で、新回路を再構成するようにする回路情報を生成する。したがって、回路情報としては、プログラマブル論理回路上に存在している回路部分は空間として生成される。生成した回路情報は、回路情報取得部１０５に提供する。
【００８０】
編集部３００から回路情報の提供を受けた回路情報取得部１０５は、ハードウエア処理部１０３にロードして、その回路情報による回路を、プログラマブル論理回路１０４に再構成する。そして、再構成した回路の配置アドレスを含む回路情報が、構成回路メモリ１０６に記憶される。
【００８１】
後で詳細に説明するように、回路情報は他の回路情報を参照することができるデータ構造であるので、編集部３００は、記憶部２００に要求する回路情報を照会して参照関係を解決する参照解決処理と、参照解決処理の結果に基づいて、回路情報を編集する再配置処理を行う。
【００８２】
この編集部３００は、この例の場合には、後述するように、情報処理部１００に接続されるネットワーク上のコンピュータシステムに設けるが、情報処理部１００と一体のコンピュータシステム内に設けてもよい。
【００８３】
［記憶部２００に記憶される回路情報の構造］
記憶部２００が格納する回路情報２０１は、図２に示すように、付加情報部であるヘッダ部２０２と、回路データ部であるコード部２０３からなる。ヘッダ部２０２には、回路名情報２０４と、入出力ポート情報２０５とが記述される。
【００８４】
回路名情報２０４には、自己の回路情報の識別子ＩＤとして、この例では、当該回路情報２０１がプログラマブル論理回路１０４に構成する回路名（以下、自回路名と呼ぶ）が記述されている。この自己の回路情報の識別子ＩＤとしての自回路名は、その回路情報２０１に付けられた名前でもある。この例では、アプリケーションプログラム１０１は、後述するように、プログラマブル論理回路１０４に構成する回路の指定情報として、この回路情報の識別子ＩＤとしての自回路名を用いる。
【００８５】
自回路名に加えて、ヘッダ部２０２の回路名情報２０４には、その回路情報２０１が参照する他の回路情報を特定するための参照識別子ｒｅｆＩＤとして、その参照する回路情報の回路名（以下、参照回路名と呼ぶ）も記述される。自己の回路情報の識別子ＩＤとしてヘッダ部２０２に記述される自回路名はひとつであるが、参照回路名は、参照する回路情報の数に応じて、複数の参照回路名がヘッダ部２０２に記述されることもある。
【００８６】
ヘッダ部２０２の入出力ポート情報２０５は、回路名情報２０４の記述の後に記述される。この入出力ポート情報２０５は、回路に対する信号の流れの方向に応じて、入力（ＩＮ）、出力（ＯＵＴ）または双方向（ＩＮ／ＯＵＴ）から選ばれるポートの種類２０６、論理セル（後に説明する）を単位にしたポートの位置座標（Ｘ，Ｙ）２０７、およびポートのデータ幅（ビット数）２０８で構成される。
【００８７】
コード部（回路データ部）２０３は、アドレスＡＤＲとデータＤＴの対の集まりで構成される。アドレスＡＤＲは、プログラマブル論理回路１０４を構成する論理セルや配線の状態を決定するコンフィギュレーションメモリ（後に説明する）のアドレスである。データＤＴは、書き込まれたコンフィギュレーションメモリのアドレスに対応する論理セルや配線の状態を決める。
【００８８】
記憶部２００に格納されている各回路情報２０１のコード部２０３のアドレスは、ある特定のアドレス（例えば１６ビットアドレスであれば０ｘ００００など：Ｏｘは１６進表示を意味している。以下同じ）から開始する。後述するように、このアドレスに一定の値を加えてオフセットすることで、コード部のアドレスは、ハードウエア処理部１０３のプログラマブル論理回路１０４上に実際に構成する回路位置に対応したアドレスに変換される。
【００８９】
ヘッダ部２０２の回路名情報２０４に、参照回路名が記述されている場合には、その参照回路名で示される回路情報が、その参照回路名が記述されている回路情報で構成される回路において、どのように結合されるかを決める参照回路情報がコード部２０３に記述される。
【００９０】
この参照回路情報は、アドレス（参照アドレスと呼ぶ）と参照回路名の対として参照元の回路情報のコード部に記述される。例えば、図２の例のアドレスｉと参照回路名ｐや、アドレスｋと参照回路名ｑなどのように記述される。後述もするように、編集部３００は、参照回路名により参照された回路情報のコード部の開始アドレスに、参照回路情報の参照アドレスを加えてオフセットした回路データを、参照元の回路情報のコード部に結合することにより、参照回路を参照元回路に結合する。
【００９１】
また、後で説明するように、アドレスＡＤＲと論理セルは一定の対応関係があるので、編集部３００は、参照アドレスから参照回路の入出力ポート位置のオフセット座標を算出して、参照回路の入出力ポート位置座標にオフセット座標を加えてオフセットした参照回路の入出力ポート情報を、参照元回路の回路情報のヘッダ部に結合する。
【００９２】
参照する他の回路情報を用いない回路情報は、ヘッダ部２０２に参照回路名を持たない。基本回路モジュールのような最小単位の回路情報は、ヘッダ部２０２に参照回路名を持たない回路情報である。参照回路名により参照される他の回路情報が、そのヘッダ部２０２に参照回路名を持つ場合もある。このような多層構造のツリー構造の場合には、編集部３００では、最下層の回路情報から順次に回路情報を結合することにより、取得部１０５から指定された回路名の回路情報を生成するようにする。
【００９３】
なお、回路情報取得部１０５の構成回路メモリ１０６に格納されるプログラマブル論理回路に構成されている回路の情報は、アプリケーションプログラム１０１で指示された回路名の回路情報であるが、その回路データ部２０３のアドレスが、プログラマブル論理回路１０４上の配置アドレスに変換されたものとなる。したがって、当該回路名の回路情報が参照回路を含むものであれば、その参照回路部分は、参照アドレスと、参照回路名とからなっている。そして、その回路情報のヘッダ部２０２には、その参照回路名が記述されている。
【００９４】
［情報処理システムのハードウエア構成］
図３は、この実施の形態の情報処理システムのハードウエア構成例を示すブロック図である。この実施の形態の情報処理システムにおいて、情報処理部１００は、ＣＰＵ１１１のホストバス１１１Ｂに、チップセット１１２に含まれるメモリコントローラ（図示せず）を介して、例えばＤＲＡＭで構成されるメインメモリ１１３が接続される。
【００９５】
ホストバス１１１Ｂは、また、チップセット１１２に含まれるホスト−ＰＣＩバスブリッジ（図示せず）を介して、ＰＣＩバス１１４に接続される。ＰＣＩバス１１４には、プログラマブル論理回路インターフェース１１５を介してプログラマブル論理回路１１６と、ハードディスクインターフェース１１７を介してハードディスクドライブ１１８と、通信インターフェース１１９とが接続される。プログラマブル論理回路１１６は、図１のハードウエア処理部１０３のプログラマブル論理回路１０４に相当する。
【００９６】
通信インターフェース１１９は、ＬＡＮやインターネットなどのネットワーク４００を介して、複数個のコンピュータシステム５００に接続される。コンピュータシステム５００は、少なくとも、ＣＰＵ（図示せず）、メインメモリ（図示せず）、およびハードディスクドライブ（図示せず）などの記憶装置を保有する。
【００９７】
ハードディスクドライブ１１８により読み書きされるハードディスクには、アプリケーションプログラム（図示せず）が格納されている。アプリケーションプログラムは、ハードディスクインターフェース１１７、ＰＣＩバス１１４およびチップセット１１２に含まれるホスト−ＰＣＩブリッジ（図示せず）を介して、ハードディスクドライブ１１８からメインメモリ１１３にロードされてＣＰＵ１１１によって実行される。
【００９８】
また、アプリケーションプログラムは、ネットワーク４００に接続されるいずれかのコンピュータシステム５００の記憶装置（図示せず）に格納されている場合もある。この場合は、情報処理部１００が、アプリケーションプログラムを、ネットワーク４００に接続されるコンピュータシステム５００から、通信インターフェース１１９を介してメインメモリ１１３に取得して実行する。
【００９９】
ネットワーク４００に接続されるいずれかのコンピュータシステム５００の記憶装置（図示せず）は、回路情報を格納して、図１の記憶部２００を構成する。また、情報処理部１００のハードディスクドライブ１１８が、回路情報を格納して、図１の記憶部２００を構成することもある。
【０１００】
コンピュータシステム５００が、図１の記憶部２００として格納する回路情報を検索したり、ネットワーク４００を介して他のコンピュータシステム５００へ転送する機能は、コンピュータシステム５００の機能のひとつとしてソフトウエア的に実装される。
【０１０１】
図１の編集部３００は、ネットワーク４００に接続されるいずれかのコンピュータシステム５００の機能のひとつとして、ソフトウエア的に実装される。図１の編集部３００を構成するコンピュータシステム５００と、図１の記憶部２００を構成するコンピュータシステム５００は、同じコンピュータシステムであってもよいし、別のコンピュータシステムであってもよい。
【０１０２】
図１の編集部３００を構成するコンピュータシステム５００と、図１の記憶部２００を構成するコンピュータシステム５００が、別のコンピュータシステムである場合は、ネットワーク４００を介して互いに通信する。
【０１０３】
情報処理部１００の図１の回路情報取得部１０５は、通信インターフェース１１９を介してネットワーク４００に接続されたいずれかのコンピュータシステムで構成される編集部３００と通信する機能と、ＰＣＩバス１１４に接続されたプログラマブル論理回路インターフェース１１５を介してプログラマブル論理回路１１６に回路データをロードする機能とを含んだ機能として、ソフトウエア的に情報処理部１００に実装される。
【０１０４】
このように、回路情報取得部１０５は、情報処理部１００にソフトウエア的に実装されるので、情報処理部１００で実行されるアプリケーションプログラムと通信することができる。
【０１０５】
図１のハードウエア処理部１０３は、プログラマブル論理回路インターフェース１１５とプログラマブル論理回路１１６とで構成される。ハードウエア処理部１０３は、ＰＣＩバス１１４に接続されたプログラマブル論理回路インターフェース１１５を介して、ＣＰＵ１１１で実行されるアプリケーションプログラムと通信する機能を持つ。
【０１０６】
［ＦＰＧＡタイプのプログラマブル論理回路の説明］
前述したように、この実施の形態においては、ＦＰＧＡタイプのプログラマブル論理回路を、プログラマブル論理回路１１６（図１のプログラマブル論理回路１０４）を用いる。このＦＰＧＡタイプのプログラマブル論理回路５０の平面構造を図４に、内部構造のブロック図を図５に示す。
【０１０７】
このプログラマブル論理回路５０は、回路情報を格納するためのコンフィギュレーションメモリ６１と、論理セル５１や配線領域５２からなる回路素子６２と、入出力端子５３とで構成される。
【０１０８】
コンフィギュレーションメモリ６１は、ＥＥＰＲＯＭ、ＳＲＡＭなどの書き換え可能なメモリ素子で構成されている。回路データは、アドレスＡＤＲとデータＤＴの対で構成される。コンフィギュレーションメモリ６１にアドレスＡＤＲを与えて、そのアドレスＡＤＲに対応するメモリセルに、アドレスＡＤＲと対になったデータＤＴが格納されると、このデータＤＴに従って、論理セル５１内の回路構成や、論理セル５１と入出力端子５３を相互に接続する配線領域５２の接続状態が再構成される。コンフィギュレーションメモリ６１の一部分を書き換えることにより、プログラマブル論理回路５０が動作中であっても、回路を部分的に再構成することができる。
【０１０９】
プログラマブル論理回路５０に再構成された回路素子６２に、入出力端子５３を介して、処理すべきデータが入力され、また、その処理結果が出力される。データ入力先の論理セルと、データ出力元の論理セルを、論理セルの位置に対応するセル座標を示した制御コードによって、アプリケーションプログラム（図１の例では、アプリケーションプログラム１０１）が指定する。
【０１１０】
［実施の形態の情報処理システムの処理動作の説明］
以上のように構成された実施の形態の情報処理システムの処理動作を、図１の構成図と、図６〜図１０に示したフローチャートを用いて説明する。
【０１１１】
情報処理装置（図示せず）で起動したアプリケーションプログラム１０１は、一連の処理を、ＣＰＵ１０２またはハードウエア処理部１０３のプログラマブル論理回路１０４で実行する。アプリケーションプログラム１０１からＣＰＵ１０２への処理の指示は、通常の計算機を用いた処理と同じ手順で行われる。
【０１１２】
以下の説明は、アプリケーションプログラム１０１が処理を実行するために必要な回路を、既にプログラマブル論理回路１０４に構成されている回路を用いて、プログラマブル論理回路１０４に再構成する場合の例である。すなわち、情報処理システムが、プログラマブル論理回路１０４に構成されている回路を参照して回路情報を生成し、その回路情報に基づいてハードウエア処理部１０３のプログラマブル論理回路１０４に回路を構成し、その構成された回路を用いて処理を行う手順を示すものである。
【０１１３】
（回路情報要求）
図６のフローチャートに示すように、情報処理装置（図示せず）で起動したアプリケーションプログラム１０１が、ハードウエア処理部１０３で実行する処理に必要な回路の指定情報を回路情報取得部１０５に指示する（ステップＳ１０１）。この例では、回路の指定情報として、その回路名（自回路名）が用いられる。
【０１１４】
アプリケーションプログラム１０１から、回路の指定情報としての回路名を受け取った回路情報取得部１０５は、その回路名を編集部３００へ伝え、ハードウエア処理部１０３が必要とする回路を構成することができる回路情報の編集を編集部３００へ指示する（ステップＳ１０２）。
【０１１５】
（参照解決処理）
編集部３００は、取得部１０５から受け取った回路名を記憶部２００に渡して、照会することにより、その回路名の回路情報を取得するのであるが、上述したように、この例の場合には、その回路名で指定される回路情報が、他の回路情報を参照するものである場合があることから、その参照回路名を知るための処理として参照解決の処理が行われる（ステップＳ１０３）。
【０１１６】
この参照解決の処理手順を図７、図８および図９のフローチャートを参照して説明する。図７は、この参照解決処理として編集部３００で実行される処理のフローチャートであり、図８は、参照解決処理として記憶部２００で実行される処理のフローチャートであり、図９は、参照解決処理として回路情報取得部１０５で実行される処理である。
【０１１７】
まず、図７に示すように、編集部３００は、回路情報取得部１０５から得た回路名を記憶部２００に問い合わせる（ステップＳ１１１）。
【０１１８】
図８に示すように、記憶部２００は、この編集部３００からの回路名の照会が有ったことを検知すると（ステップＳ１２１）、その回路名を取得し（ステップＳ１２２）、その回路名に対応する回路情報２０１のヘッダ部２０２を調べて、参照回路が有るか否かを、参照回路名が記述されているか否かにより判別する（ステップＳ１２３）。そして、参照回路名が記述されている場合は、ヘッダ部２０２に記述されている参照回路名を編集部３００に答える（ステップＳ１２４）。
【０１１９】
そして、記憶部２００は、編集部３００からの回路名の照会の終了通知が来ない時には、ステップＳ１２１に戻って、更なる編集部３００からの回路名の照会を待ち、編集部３００から回路名の照会の終了通知が来たときに、この図８の参照解決の処理ルーチンを終了する（ステップＳ１２５）。
【０１２０】
編集部３００は、ステップＳ１１１での回路名の照会に対して、記憶部２００からの参照回路名の返答があるか否か判別し（ステップＳ１１２）、参照回路名の返答がなければ、この参照解決処理を終了する。また、参照回路名の返答がある場合は、記憶部２００からの参照回路名を取得保持する（ステップＳ１１３）。そして、取得した参照回路名を回路情報取得部１０５に照会する（ステップＳ１１４）。
【０１２１】
図９に示すように、回路情報取得部１０５は、この編集部３００からの参照回路名による照会をステップＳ１３１で検知すると、その参照回路名を取得して（ステップＳ１３２）、構成回路メモリ１０６に記憶してあるプログラマブル論理回路１０４上に構成されている回路の回路名を調べ、その参照回路名の回路がプログラマブル論理回路１０４上に構成されているか否かを判別する（ステップＳ１３３）。
【０１２２】
そして、プログラマブル論理回路１０４上に、当該参照回路名の回路が構成されているときは、構成回路メモリ１０６に記憶してある、その参照回路名の回路のプログラマブル論理回路１０４上の配置アドレスを調べて、編集部３００に、その配置アドレスを答える（ステップＳ１３４）。当該参照回路名の回路が構成されていない場合は、この例では、編集部３００に、プログラマブル論理回路１０４上に対応回路が存在しない旨を返す。なお、配置アドレスを返さないことにより、プログラマブル論理回路１０４上に対応回路が存在しない旨を表すようにしてもよい。
【０１２３】
編集部３００は、この回路情報取得部１０５からの参照回路名の回路の配置アドレスあるいは対応回路存在なしの返答により、照会した参照回路名の回路がプログラマブル論理回路１０４に構成されているか否かを判別し（ステップＳ１１５）、照会した参照回路名の回路がプログラマブル論理回路１０４に構成されている場合には、回路情報取得部１０５からの、その回路配置アドレスを回路名と共に一時保存する（ステップＳ１１６）。そして、次のステップＳ１２０に進む。
【０１２４】
一方、ステップＳ１１５において、照会した参照回路名の回路がプログラマブル論理回路１０４に構成されていないと判別された場合には、編集部３００は、記憶部２００から受け取った参照回路名に対応する回路が、さらに参照している参照回路名を知るために、受け取った参照回路名を再び記憶部２００に問い合わせる（ステップＳ１１７）。
【０１２５】
この照会に対して、記憶部２００は、前述した図８のフローチャートのステップＳ１２１以降を再び実行して、その参照回路名に対応する回路情報のヘッダ部を調べて、参照回路名が記述されている場合は、参照回路名を編集部に答え、参照回路名が記述されていない場合は、次の処理に移る。
【０１２６】
編集部３００は、記憶部２００に照会した回路名に参照回路があるか否かを記憶部２００からの参照回路名の返答があるかないかにより判別し（ステップＳ１１８）、参照回路名の返送があれば、それを取得して一時保持する（ステップＳ１１９）。参照回路がなければ、次の処理ステップＳ１２０に進む。
【０１２７】
ステップＳ１２０では、回路情報取得部１０５から受け取った指定回路の回路情報を生成するための全ての参照回路名の、回路情報取得部１０５や記憶部２００への照会が終了したか否か判別し、終了していなければ、ステップＳ１１４に戻り、上述の動作を繰り返す。そして、編集部３００は、回路が参照する参照回路名をすべて知ったら、この参照解決の処理を終了する。
【０１２８】
この編集部３００での参照解決の終了により、記憶部２００および取得部１０５でも、参照解決の処理を終了する（ステップＳ１２５およびステップＳ１３５）。
【０１２９】
この結果、回路情報取得部１０５が編集部３００に要求した回路名の回路を構成するために必要な全ての回路名と、そのうちハードウエア処理部１０３のプログラマブル論理回路１０４に構成されている回路名とその回路配置アドレスとを、編集部３００が入手することができる。
【０１３０】
（再配置処理）
次に、図６に示すように、編集部３００は、上述の参照解決の処理で得られた情報に基づいて、記憶部２００から回路情報取得部１０５が編集部３００に要求した回路名の回路情報を生成するために必要な回路情報を取得し、それらの回路情報を結合して、再配置の処理を行う（ステップＳ１０４）。再配置の処理の手順を図１０に示す。
【０１３１】
編集部３００は、まず、指定された回路の回路情報は、プログラマブル論理回路１０４上にある回路を利用して生成するか否かを判別し（ステップＳ１４０）、プログラマブル論理回路に構成されている回路を利用しない場合には、ステップＳ１４２以降を実行する。
【０１３２】
プログラマブル論理回路１０４に構成されている回路を利用する場合には、記憶部２００から取得したその指定回路名の回路情報の回路データ部２０３から、利用する回路の参照回路名のアドレス、すなわち、参照アドレスを抽出し、プログラマブル論理回路１０４に構成されている回路の配置アドレスから、その参照アドレスを引くことにより、オフセットアドレスを算出する（ステップＳ１４１）。
【０１３３】
この処理は、プログラマブル論理回路１０４上の利用する回路の配置位置を変えずに、そのまま利用することができるようにするため、当該利用する回路の位置を基準にして、指定回路の、前記利用する回路以外の他の回路情報を結合して生成するようにするためのものである。このステップＳ１４１の後は、ステップＳ１４２以降に進む。
【０１３４】
なお、ステップＳ１４０でプログラマブル論理回路１０４上に構成されている回路を利用しない場合には、オフセットアドレスはゼロアドレス（例えば０ｘ００００）の状態が保持される。
【０１３５】
すなわち、編集部３００は、回路情報取得部１０５から受け取った指定回路の回路情報と、その指定回路を参照元回路として参照する参照回路の回路情報を記憶部２００に要求する。また、参照回路を参照元回路として、さらに参照回路があれば、その参照回路の回路情報も要求し、必要なすべての回路情報を取得する（ステップＳ１４２）。
【０１３６】
ここで、プログラマブル論理回路１０４にある回路の回路情報も記憶部２００から取得してもよいが、この実施の形態の場合には、プログラマブル論理回路１０４上に存在すると認識された参照回路の回路情報は、回線情報の生成に不要であり、その回路情報の記憶部２００から編集部３００への転送時間が無駄になるため、記憶部２００には要求しない。
【０１３７】
記憶部２００は、要求された回路名の回路情報を編集部３００に提供するので、編集部３００はこれを受け取る（ステップＳ１４３）。なお、指定回路の回路情報は、参照解決の最初の回路名の照会の際に、記憶部２００から取得するようにしてもよい。
【０１３８】
以上のようにして、記憶部２００から回路情報を取得すると、編集部３００は、その回路は、プログラマブル論理回路１０４上に存在する回路であるか否か判別し（ステップＳ１４４）、存在しない回路であれば、編集部３００は、受け取った参照回路の回路データのアドレスに、参照元回路の参照アドレスと、ステップＳ１４１で算出したオフセットアドレスを加えてオフセットして、参照元の回路情報のコード部に結合する（ステップＳ１４５）。この処理については、具体例を挙げて後で詳述する。
【０１３９】
なお、このステップＳ１４５では、ステップＳ１４０でプログラマブル論理回路１０４上に構成されている回路を利用しないとされた場合には、オフセットアドレスがゼロアドレスであるので、このゼロアドレスがオフセットアドレスとして加算される。つまり、オフセットアドレスは加算されない。
【０１４０】
以上の結合の結果、生成される回路が、プログラマブル論理回路１０４上の回路構成領域に収まるか否か判別し（ステップＳ１４６）、収まらなければ、ステップＳ１４７に進んで、再配置の処理をすべてやり直す。すなわち、プログラマブル論理回路１０４上に構成されている回路は利用できないので、当該利用しようとした回路部分をも含めて、再配置をやり直す。そして、この再配置の処理ルーチンを終了する。
【０１４１】
また、ステップＳ１４４で、参照回路がプログラマブル論理回路１０４に構成されていると判別された場合には、回路データを参照元の回路情報のコード部に結合するステップＳ１４５は行わずに、ステップＳ１４６に進む。
【０１４２】
ステップＳ１４６で、結合後の回路がプログラマブル論理回路１０４上の回路構成領域に収まると判断されたときには、ステップＳ１４８に進む。編集部３００では、ステップＳ１４８においては、参照アドレスから、あるいはプログラマブル論理回路１０４の回路を利用する場合には、参照アドレスと前記オフセットアドレスとから、参照回路の入出力ポート位置のオフセットセル座標を算出して、参照回路の入出力ポート位置座標にオフセットセル座標を加えて、参照元回路の回路情報のヘッダ部に結合する。この処理についても、具体例について後で詳述する。
【０１４３】
編集部３００は、全ての回路名に対して上記の手順が行われるまで、上記の手順を繰り返す（ステップＳ１４９）。
【０１４４】
以上のようにして再配置の処理が終わると、図６に示すように、編集部３００は、生成した回路情報を、回路情報取得部１０５へ提供する（ステップＳ１０５）。この生成された回路情報は、プログラマブル論理回路１０４上の回路を利用する場合には、ステップＳ１４５がバイパスされるため、その回路部分の回路情報は含まない。
【０１４５】
（ロード）
回路情報取得部１０５は、編集部３００から入手した回路情報のコード部に記述されている回路データを、ハードウエア処理部１０３にロードして、プログラマブル論理回路１０４に回路を再構成し（ステップＳ１０６）、ヘッダ部に記述されている入出力ポート情報を、アプリケーションプログラム１０１に提供する（ステップＳ１０７）。
【０１４６】
プログラマブル論理回路１０４に存在していた回路を利用する状態で、回路情報が生成された場合には、前記存在していた回路は、そのままに、その回路部分に他の回路部分が結合する形態で、指定された回路がプログラマブル論理回路１０４上に形成される。そして、この形成された回路の配置アドレスを含む回路情報が、構成回路メモリ１０６に記憶される。
【０１４７】
（アプリケーションによる処理）
ハードウエア処理部１０３は、入出力ポート情報に基づいたアプリケーションプログラム１０１からの制御コードに従って、プログラマブル論理回路１０４に再構成された回路とデータの入出力を行い、プログラマブル論理回路１０４に再構成された回路を用いた情報処理を行う（ステップＳ１０８）。
【０１４８】
［情報処理システムによる処理の実施例：線画処理］
次に、上述の実施の形態の情報処理システムを、画像処理に適用したより詳細な実施例について説明する。この実施例では、２値化処理、エッジ検出処理および反転処理の三種類の処理を、次に説明する三種類の画像フィルタを用いて画像データに行うことにより多階調画像を線画像に変換する線画処理の場合を示す。以下に説明する場合は、上記のエッジ検出処理で用いられる回路名「Ｌａｐｌａｃｅ」のエッジ検出回路が、ハードウエア処理部１０３のプログラマブル論理回路１０４に、すでに、構成されている場合である。始めに、上記の三種類の画像フィルタについて説明する。
【０１４９】
［フィルタの説明］
画像処理のひとつである空間フィルタ処理は、単位画素から構成される画像ファイルの単一もしくは複数画素に対して演算を行う。これは、ある画素（データｘｌ，ｍ  ）の近傍の画素（データｐｌ，ｍ  ）に、マスクデータｆｉｌｔｅｒｌ，ｍ  を掛けて足し合わせ、係数Ｎを乗じたものを処理後の画素値ｘｌ，ｍ  として得る処理として、次の式（１）のように表すことができる。ここで、マスクデータｆｉｌｔｅｒｌ，ｍ  や係数Ｎの値を変えることにより、空間フィルタは様々な処理を実行することが可能である。
【０１５０】
ｘｌ，ｍ  ＝Ｎ×｛ｌ−１〜ｌ＋１｝Σ｛ｍ−１〜ｍ＋１｝Σ（ｐｌ，ｍ  ×ｆｉｌｔｅｒｌ，ｍ  ）  …（１）
ただし、｛ｌ−１〜ｌ＋１｝Σ（）は、（）内の値の、（ｌ−１）  から（ｌ＋１）  までの総和の演算を意味し、同様に、｛ｍ−１〜ｍ＋１｝Σ（）は、（）内の値の、（ｍ−１）  から（ｍ＋１）  までの総和の演算を意味している。
【０１５１】
（エッジ検出Ｌａｐｌａｃｉａｎフィルタ）
図１１は、２次微分によりエッジを検出するＬａｐｌａｃｉａｎフィルタと呼ばれる画像フィルタのマスクデータの例である。このフィルタ処理を施すことにより、画像の輪郭検出を行うことができる。
【０１５２】
図１２は、図１１のＬａｐｌａｃｉａｎフィルタ処理を実現する回路（回路名Ｌａｐｌａｃｅ）の回路構成の一例である。まず、元の画像ファイルからフィルタ処理を行うマスク領域のうち、ｐ［ｌ］［ｍ］，ｐ［ｌ−１］［ｍ］，ｐ［ｌ］［ｍ−１］，ｐ［ｌ］［ｍ＋１］，ｐ［ｌ＋１］［ｍ］の５画素分のデータを、例えば１画素あたり８ビットデータとして、回路に転送する。
【０１５３】
転送された５画素分のデータは、回路の入力ポートＬａｐｌａｃｅＩｎ０、ＬａｐｌａｃｅＩｎ１、ＬａｐｌａｃｅＩｎ２、ＬａｐｌａｃｅＩｎ３、ＬａｐｌａｃｅＩｎ４にそれぞれ入力され、最初のクロックでレジスタ３０１、３０２、３０３、３０４、３０５に入力される。入力されたデータは、レジスタの出力Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５とされ、出力Ｄ１とＤ２が加算器３１１に入力され、出力Ｄ３とＤ４が加算器３１２に入力される。そして、加算器３１１、３１２および３１３による演算によって、加算器３１３の出力Ａ１３は、
Ａ１３＝ｐ［ｌ−１］［ｍ］＋ｐ［ｌ］［ｍ−１］＋ｐ［ｌ］［ｍ＋１］＋ｐ［ｌ＋１］［ｍ］
となる。
【０１５４】
一方、シフタ３２１は、レジスタ３０５の出力Ｄ５を上位に２ビットシフトして接続し、下位２ビットは常に０を入力することで、シフタ３２１の出力Ａ１４は、
Ａ１４＝４×ｐ［ｌ］［ｍ］
となる。
【０１５５】
そして、減算器３１４によりシフタ３２１の出力Ａ１４から、加算器３１３の出力Ａ１３の減算が行われ、この減算器３１４の出力Ａ１５は、
Ａ１５＝４×ｐ［ｌ］［ｍ］−（ｐ［ｌ−１］［ｍ］＋ｐ［ｌ］［ｍ−１］＋ｐ［ｌ］［ｍ＋１］＋ｐ［ｌ＋１］［ｍ］）
となり、結果が出力ポートＬａｐｌａｃｅＯｕｔ０に出力される。以上で、単位マスク領域でのＬａｐｌａｃｉａｎフィルタ処理が終了する。以降この処理を繰り返すことで、画像全体の処理が施される。
【０１５６】
（２値化Ｂｉｎａｒｙフィルタ）
図１３は、２値化フィルタ処理を実現する回路（回路名Ｂｉｎａｒｙ）の回路構成例を示すものである。この例では、１画素当りのデータが８ビットの画像データを処理する。また、用いるプログラマブル論理回路１０４の論理セルは、入出力とも８ビットの信号線を持つ。よって、以下に示す８ビットのレジスタと、インバータとは、ひとつの論理セルで実現され、８ビットのコンパレータとセレクタとは、ふたつの論理セルで実現される。
【０１５７】
図１３において、１画素分のデータが、入力ポートＢｉｎａｒｙＩｎ０に入力され、最初のクロックでレジスタ４０１に保持される。レジスタ４０２には、事前に２値化の閾値となる値が保持されている。
【０１５８】
次のクロックで、コンパレータ４０３は、レジスタ４０１に保持されている入力データと、レジスタ４０２に保持されている閾値を比較する。もし、入力データの値が閾値より小さいときは、「＜」出力がローレベル状態となる。それ以外の場合は、「＜」出力はデフォルトのハイレベル状態を保持する。
【０１５９】
コンパレータ４０３の「＜」出力は、セレクタ４０４のＳ入力へ入力される。Ｓ入力がハイレベル状態のときは、８ビットの「０ｘＦＦ（１６進表示）」が入力されているＡ入力の値が８ビットのＹ出力から出力され、Ｓ入力がローレベル状態のときは、８ビットの「０ｘ００」が入力されているＢ入力の値が８ビットのＹ出力から出力される。
【０１６０】
すなわち、入力データが閾値より小さいときは、セレクタ４０４のＳ入力がローレベル状態となって、Ｙ出力が接続されているＢｉｎａｒｙＯｕｔ０より、８ビットの「０ｘ００」が出力され、それ以外の場合は、セレクタ４０４のＳ入力がハイレベル状態となって、Ｙ出力が接続されているＢｉｎａｒｙＯｕｔ０より、８ビットの「０ｘＦＦ」が出力されることにより、画素が２値化される。
【０１６１】
（反転Ｉｎｖｅｒｓｅフィルタ）
図１４は、反転処理を実現する回路（回路名Ｉｎｖｅｒｓｅ）の回路構成例を示すものである。この実施例では、１画素当りのデータが８ビットの画像データを処理する。
【０１６２】
図１４において、１画素分のデータが、入力ポートＩｎｖｅｒｓｅＩｎ０に入力され、データ各ビットの値を反転したデータがＩｎｖｅｒｓｅＯｕｔ０から出力される。すなわち、画素が反転される。
【０１６３】
［ＦＰＧＡタイプのプログラマブル論理回路のアドレス構成］
この実施例で用いるＦＰＧＡタイプのプログラマブル論理回路は、列方向に３２個を、また、行方向に３２個を、それぞれ配置した合計１０２４個の論理セルで構成される。ひとつの論理セルは、６４アドレスのコンフィギュレーションメモリで設定され、１アドレスのコンフィギュレーションメモリは８ビットのデータを保持する。すなわち、ひとつの論理セルは、６４バイトの回路データで設定される。
【０１６４】
図１５にコンフィギュレーションメモリのアドレス設定の方法を示す。プログラマブル論理回路のセル座標は、左下を原点（０，０）として定義される。ひとつの論理セルを設定するコンフィギュレーションメモリは、８×８のメモリ空間に対応し、プログラマブル論理空間全体で２５６×２５６のメモリ空間を構成する。アドレスは、１６ビットアドレスで「０ｘ００００」を開始アドレスとして、セル座標の原点（０，０）から「０ｘＦＦＦＦ」まで定義される。
【０１６５】
このとき、アドレスとセル座標は次の関係を持つ。すなわち、図１５の表に示すように、１６ビットアドレスＡ［１５：０］の上位８ビットＡ［１５：８］が、２５６×２５６のメモリ空間の列アドレスに、下位８ビットＡ［７：０］が、当該メモリ空間の行アドレスに、それぞれ対応する。
【０１６６】
そして、１６ビットアドレスＡ［１５：０］の５ビットＡ［１５：１１］（８ビットの列アドレスの上位５ビット）が列セル座標に、３ビットＡ［１０：８］（８ビットの列アドレスの下位３ビット）が列メモリ座標に、それぞれ対応する。また、１６ビットアドレスＡ［１５：０］の５ビットＡ［７：３］（８ビットの行アドレスの上位５ビット）が行セル座標に、３ビットＡ［２：０］（８ビットの行アドレスの下位３ビット）が行メモリ座標に、それぞれ対応する。この関係を用いることにより、参照アドレスから入出力ポート情報のオフセットセル座標を簡単に知ることができる。
【０１６７】
（線画処理の手順）
次に、線画処理を行うアプリケーションプログラム１０１の処理手順を説明する。アプリケーションプログラム１０１は、図１６に示すように、線画処理に先立って、別の画像処理を行い、プログラマブル論理回路１０４のアドレス「０ｘ２０１８」にエッジ検出回路（回路名Ｌａｐｌａｃｅ）を構成している。図１６の回路名「画像処理」の回路情報は、回路情報取得部１０５の構成回路メモリ１０６に記憶されている内容に等しい。
【０１６８】
（線画処理参照解決）
アプリケーションプログラム１０１は、回路情報取得部１０５に、線画処理の回路名「ＬｉｎｅＡｒｔ」を伝えて、ハードウエア処理部１０３に、線画処理回路を構成するように指示する（前述の図６のステップＳ１０１）。
【０１６９】
すると、前述したように、回路情報取得部１０５は、線画処理の回路名「ＬｉｎｅＡｒｔ」を編集部３００に伝え、編集部３００は、図６、図７、図８、図９および図１０に示した手順に従って、参照解決処理と再配置処理を行い、記憶部２００に記憶されている回路情報を用いて、線画処理の回路の回路情報を生成する。
【０１７０】
この例の場合、図１６に示すように、回路名「ＬｉｎｅＡｒｔ」の回路情報には、参照回路名「Ｂｉｎａｒｙ」、「Ｌａｐｌａｃｅ」および「Ｉｎｖｅｒｓｅ」が、そのヘッダ部に記述されており、そして、コード部（回路データ部）には、回路名「Ｂｉｎａｒｙ」を、参照アドレス「０ｘ００００」、「０ｘ００１０」、「０ｘ００２０」、「０ｘ００３０」、「０ｘ００４０」において、回路名「Ｌａｐｌａｃｅ」を、アドレス「０ｘ１８００」において、回路名「Ｉｎｖｅｒｓｅ」を、アドレス「０ｘ３８００」において、それぞれ参照するように記述されている。
【０１７１】
このため、参照解決の処理（図６のステップＳ１０３、図７〜図９参照）において、記憶部２００は、編集部３００からの回路名「ＬｉｎｅＡｒｔ」の照会に対して、参照回路名「Ｂｉｎａｒｙ」、「Ｌａｐｌａｃｅ」および「Ｉｎｖｅｒｓｅ」を返す。
【０１７２】
次に、編集部３００は、この記憶部２００から取得した参照回路名を用いて、それらの参照回路名の回路が、ハードウエア処理部１０３のプログラマブル論理回路１０４上に構成されていないかを、回路情報取得部１０５に照会する（ステップＳ１１４）。
【０１７３】
もし、参照回路がプログラマブル論理回路１０４上に構成されていれば、編集部３００は、その配置アドレスを取得保持した後（ステップＳ１１６）、次の参照回路が、プログラマブル論理回路１０４上に構成されていないかを、回路情報取得部１０５に照会する。
【０１７４】
また、もし、参照回路がプログラマブル論理回路１０４上に構成されていなければ、参照回路がさらに他の回路を参照していないかを記憶部２００に照会する（ステップＳ１１７）。この照会の結果、他の回路を参照していれば、その参照回路に対しても、上述の参照解決の処理を行う。すべての参照回路に対して参照解決の処理を行った時点で、参照解決が終了する。
【０１７５】
この実施例の場合は、始めに、回路名「Ｂｉｎａｒｙ」の２値化回路についてを、プログラマブル論理回路１０４上に構成されているかを調べる。この例の場合、回路名「Ｂｉａｎｒｙ」の２値化回路は、プログラマブル論理回路１０４上に構成されていないので、回路情報取得部１０５は、その旨を編集部３００に返す。そこで、編集部３００は、記憶部２００に、その回路名「Ｂｉａｎｒｙ」についての参照回路の照会を行う。このとき、回路名「Ｂｉｎａｒｙ」の２値化回路は、他の回路を参照していないので、記憶部２００から参照回路名は編集部３００には帰ってこない。
【０１７６】
次に、編集部３００は、回路名「Ｌａｐｌａｃｅ」のエッジ検出回路を、回路情報取得部１０５に照会すると、それは、プログラマブル論理回路１０４上に存在するので、回路情報取得部１０５は、その配置アドレス「０ｘ２０１８」を編集部３００に返す。そこで、編集部３００は、回路名「Ｌａｐｌａｃｅ」の回路は、プログラマブル論理回路１０４上に在ることを認識し、その配置アドレスを取得して、保持する（図７のステップＳ１１５、Ｓ１１６）。このエッジ検出回路「Ｌａｐｌａｃｅ」についての記憶部２００への参照回路の照会は、プログラマブル論理回路１０４に、この回路が存在するため、必要ないので行われない。
【０１７７】
最後に、編集部３００は、回路名「Ｉｎｖｅｒｓｅ」の反転回路を回路情報取得部１０５に照会すると、それはプログラマブル論理回路１０４上に構成されていないので、編集部３００には、その旨の返事が帰ってくる。そこで、編集部３００は、記憶部２００に、回路名「Ｉｎｖｅｒｓ」を照会すると、回路名「Ｉｎｖｅｒｓｅ」の反転回路は他の回路を参照していないので、参照回路名は帰ってこない。以上で、すべての参照回路に対する照会が終わったので、参照解決を終了する。
【０１７８】
（線画処理再配置）
編集部３００は、２値化回路「Ｂｉｎａｒｙ」、エッジ検出回路「Ｌａｐｌａｃｅ」、反転回路「Ｉｎｖｅｒｓｅ」のそれぞれの回路の参照関係に基づいて、各回路モジュールの相対関係を決定する。
【０１７９】
すなわち、エッジ検出回路「Ｌａｐｌａｃｅ」は、すでに、処理部１０３のプログラマブル論理回路１０４の配置アドレス「０ｘ２０１８」に構成されているので、編集部３００は、残りの２値化回路「Ｂｉｎａｒｙ」、反転回路「Ｉｎｖｅｒｓｅ」の回路情報を記憶部２００から取得し、相対位置関係に基づいて各回路モジュールの回路情報の位置座標を平行移動する。
【０１８０】
回路情報は再配置可能な形式で記述されているので、エッジ検出回路「Ｌａｐｌａｃｅ」の配置位置を基準にした回路モジュールの原点位置に対応するオフセットアドレスを求める（図１０のステップＳ１４１）。
【０１８１】
この実施例の場合には、このオフセットアドレスは、（０ｘ２０１８−０ｘ１８００＝０ｘ０８１８）である。参照回路のそれぞれの配置アドレスは、このオフセットアドレスと参照アドレスとを加算することにより得る。
【０１８２】
すなわち、回路名「ＬｉｎｅＡｒｔ」の回路情報は、図１６に示すように構成されているので、５個の２値化回路「Ｂｉｎａｒｙ」は、それぞれ、「０ｘ００００＋０ｘ０８１８」、「０ｘ００１０＋０ｘ０８１８」、「０ｘ００２０＋０ｘ０８１８」、「０ｘ００３０＋０ｘ０８１８」、「０ｘ００４０＋０ｘ０８１８」だけ、それぞれアドレスをオフセットして配置アドレスを定め、また、反転回路「Ｉｎｖｅｒｓｅ」は、「０ｘ３８００＋０ｘ０８１８」だけオフセットして配置アドレスを定め、それぞれ回路名「ＬｉｎｅＡｒｔ」の回路情報として結合する。
【０１８３】
この場合、エッジ検出回路「Ｌａｐｌａｃｅ」は、プログラマブル論理回路１０４上の配置アドレス「０ｘ１８００＋０ｘ０８１８＝０ｘ０２１８」に存在するので、この部分は、回路名「ＬｉｎｅＡｒｔ」の回路情報では、回路情報がなく、空間となるが、入出力ポートについては、結合されているので（ステップＳ１４６）、プログラマブル論理回路１０４上では、３つの回路は、結合されて、線画処理回路が生成されることになる。
【０１８４】
以上のようにして、再配置を終了した２値化回路「Ｂｉｎａｒｙ」の回路データと、反転回路「Ｉｎｖｅｒｓｅ」の回路データと、プログラマブル論理回路に構成されいるエッジ検出回路「Ｌａｐｌａｃｅ」に対応する空間とから成る回路情報全体を、線画処理回路「ＬｉｎｅＡｒｔ」として、回路情報取得部１０５に転送する。回路情報取得部１０５では受け取った回路情報を、プログラマブル論理回路１０４にダウンロードし、回路再構成を行う。
【０１８５】
これにより、前述したように、２値化回路「Ｂｉｎａｒｙ」と、エッジ検出回路「Ｌａｐｌａｃｅ」と、反転回路「Ｉｎｖｅｒｓｅ」とからなる線画処理回路「ＬｉｎｅＡｒｔ」がプログラマブル論理回路１０４上に生成される。プログラマブル論理回路１０４上に構成された線画処理回路「ＬｉｎｅＡｒｔ」を、図１７に示す。
【０１８６】
（線画処理アプリケーション実行）
以上で、アプリケーションプログラム１０１が要求した線画処理回路が、プログラマブル論理回路１０４上に再構成されたので、この回路を使って、処理を実行することで、所望の線画処理を行われる。
【０１８７】
［他の実施の形態］
上述の実施の形態における参照解決の処理では、編集部３００が、回路情報取得部１０５に参照回路がプログラマブル論理回路１０４上に構成されているかどうかを照会するようにしたが、参照解決の処理は、次のようにすることもできる。
【０１８８】
すなわち、回路情報取得部１０５は、プログラマブル論理回路１０４上に構成されている回路の情報を構成回路メモリ１０６に格納しているので、アプリケーションプログラム１０１からの回路の指定情報を受け、編集部３００に、当該回路の生成を要求するときに、プログラマブル論理回路１０４上に構成されている回路名および配置アドレス情報を併せて、編集部３００に通知することができる。これにより、編集部３００からの回路情報取得部１０５への照会を無くすことができる。
【０１８９】
この場合には、編集部３００は、回路情報取得部１０５から通知された回路名および配置アドレスの情報を記憶するための内部記憶部が必要になる。この場合の参照解決の手順は、参照回路が処理部１０３のプログラマブル論理回路１０４上に構成されているかどうかを、回路情報取得部１０５に照会する代わりに、内部記憶部に照会する以外は上述の手順と同じである。
【０１９０】
また、上述の実施の形態の説明では、プログラマブル論理回路１０４上に、アプリケーションプログラム１０１により指定された回路を構成する参照回路が、プログラマブル論理回路１０４上に構成されている場合についてのみ言及したが、指定された回路そのものがプログラマブル論理回路１０４上に構成されている場合には、編集部３００では、回路情報を再構成する必要は全くなく、そのプログラマブル論理回路１０４上に存在する回路を、そのまま利用することができる。
【０１９１】
すなわち、回路情報取得部１０５は、ハードウエア処理部１０３のプログラマブル論理回路１０４上に構成されている回路の情報を、構成回路メモリ１０６に保持しているので、回路情報取得部１０５は、アプリケーションプログラム１０１からの指定情報で指定される回路が、構成回路メモリ１０６上に存在する回路であるかどうかを検知することができる。
【０１９２】
そして、もしも、指定された回路が、プログラマブル論理回路１０４に存在するときには、上述したような編集部３００への回路情報の編集指示を行う必要はなく、プログラマブル論理回路１０４上に存在している回路を用いて処理を行うことができる。ただし、その場合には、回路情報取得部１０５は、アプリケーションプログラム１０１に対して、その存在している回路の入力ポートおよび出力ポートの位置情報を知らせる。これにより、アプリケーションプログラム１０１は、その回路の入力ポートに必要な入力データを入力し、出力ポートから処理結果を得るようにして処理を実行することができる。
【０１９３】
【発明の効果】
以上説明したように、この発明によれば、すでにプログラマブル論理回路に構成されている回路を、そのまま利用する状態で、再構成する回路の回路情報を生成するので、当該回路情報による再構成には、プログラマブル論理回路上にある回路の構成時間を省くことができ、再構成の時間を短縮することができる。また、プログラマブル論理回路上の回路を利用することができるため、プログラマブル論理回路の使用効率もあげることができる。
【０１９４】
また、この発明によれば、アプリケーションプログラムの少なくとも一部を、プログラマブル論理回路で処理する情報処理システムにおいて、予め、プログラマブル論理回路の回路情報を持つことが不要である情報処理システムが提供できる。
【０１９５】
また、この発明によれば、アプリケーションプログラムを開始する前に、事前に回路情報を生成しておく必要がなく、プログラマブル論理回路上にその回路情報の生成の際に存在する回路を利用しながら、効率的な再構成のための回路情報の生成ができる。
【図面の簡単な説明】
【図１】この発明による情報処理システムの実施の形態の全体の概要を示すブロック図である。
【図２】実施の形態における回路情報管理を説明するための図である。
【図３】この発明による情報処理システムの実施の形態のハードウエア構成図である。
【図４】ＦＰＧＡタイプのプログラマブル論理回路を説明するための図である。
【図５】ＦＰＧＡタイプのプログラマブル論理回路を説明するための図である。
【図６】この発明による情報処理システムの実施の形態による具体的な処理手順のフローチャートである。
【図７】図６のフローチャートの一部の処理の詳細な手順のフローチャートである。
【図８】図６のフローチャートの一部の処理の詳細な手順のフローチャートである。
【図９】図６のフローチャートの一部の処理の詳細な手順のフローチャートである。
【図１０】図６のフローチャートの一部の処理の詳細な手順のフローチャートである。
【図１１】この発明による情報処理システムの実施の形態で用いる具体的な処理の例を説明するための図である。
【図１２】プログラマブル論理回路に構成された回路例を示す図である。
【図１３】プログラマブル論理回路に構成された回路例を示す図である。
【図１４】プログラマブル論理回路に構成された回路例を示す図である。
【図１５】実施の形態において、プログラマブル論理回路に回路構成するためのアドレス配置を説明するための図である。
【図１６】この発明による情報処理システムの実施の形態で用いる具体的な処理手順の説明に用いる図である。
【図１７】プログラマブル論理回路に構成された回路例を示す図である。
【図１８】従来の情報処理システムの一例を説明するための図である。
【図１９】図１８の従来例で生成されるプログラマブル論理回路の回路例を示す図である。
【図２０】従来の情報処理システムの他の例を説明するための図である。
【符号の説明】
１００  情報処理部
１０１  アプリケーションプログラム
１０２  ＣＰＵ
１０３  ハードウエア処理部（処理手段）
１０４  プログラマブル論理回路
１０５  回路情報取得部（取得手段）
１０６  構成回路メモリ
２００  記憶部
３００  編集部
２０１  回路情報
２０２  ヘッダ部（付加情報部）
２０３  コード部（回路データ部）
ＡＤＲ  アドレス
ＤＴ  回路データ
４００  ネットワーク
５００  コンピュータシステム
【図１】
0003573193.tif 000002
【図２】
0003573193.tif 000003
【図３】
0003573193.tif 000004
【図４】
0003573193.tif 000005
【図５】
0003573193.tif 000006
【図６】
0003573193.tif 000007
【図７】
0003573193.tif 000008
【図８】
0003573193.tif 000009
【図９】
0003573193.tif 000010
【図１０】
0003573193.tif 000011
【図１１】
0003573193.tif 000012
【図１２】
0003573193.tif 000013
【図１３】
0003573193.tif 000014
【図１４】
0003573193.tif 000015
【図１５】
0003573193.tif 000016
【図１６】
0003573193.tif 000017
【図１７】
0003573193.tif 000018
【図１８】
0003573193.tif 000019
【図１９】
0003573193.tif 000020
【図２０】
0003573193.tif 000021