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