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