(57)【要約】【課題】再構成デバイスの通信性能を、容易に向上させる。【解決手段】情報処理装置は、バスラインに接続され、メモリをバッファとして用いて再構成デバイスへデータを送信する演算処理装置と、前記バスラインに接続され、前記バッファとして、前記演算処理装置により送信された前記データを一時的に保持するとともに、該データを保持する領域内のアドレスを示す第１のポインタを記憶するメモリと、回路を構成するための回路情報と共に、前記第１ポインタの値と同じ値の第２のポインタを記憶し、該第２のポインタの値に基づいて前記メモリに保持された前記データを読み出し、前記回路情報を基に構成した回路によって該データを処理する再構成デバイスと、を有する。【選択図】図１
2010272021.tif 000002
【特許請求の範囲】
【請求項１】
バスラインに接続され、メモリをバッファとして用いて再構成デバイスへデータを送信する演算処理装置と、
前記バスラインに接続され、前記バッファとして、前記演算処理装置により送信された前記データを一時的に保持するとともに、該データを保持する領域内のアドレスを示す第１のポインタを記憶するメモリと、
回路を構成するための回路情報と共に、前記第１ポインタの値と同じ値の第２のポインタを記憶し、該第２のポインタの値に基づいて前記メモリに保持された前記データを読み出し、前記回路情報を基に構成した回路によって該データを処理する再構成デバイスと、
を有する情報処理装置。
【請求項２】
前記第1のポインタ及び前記第２のポインタのそれぞれは、前記メモリにおけるデータを書き込むアドレスを示すライトポインタと、該メモリにおけるデータを読み出したアドレスを示すリードポインタとを含み、
前記再構成デバイスは、前記第２のポインタに含まれる前記リードポインタ及び前記ライトポインタを参照し、前記リードポインタの値が前記ライトポインタの値以下であれば、前記メモリに保持された前記データを読み出す、請求項１に記載の情報処理装置。
【請求項３】
前記演算処理装置は、前記データを前記メモリへ送信するたびに、前記第１のポインタに含まれるライトポインタ及び前記第２のポインタに含まれるライトポインタを更新し、
前記再構成デバイスは、前記メモリに保持された前記データを読み出すたびに、前記第１のポインタに含まれるリードポインタ及び前記第２のポインタに含まれるリードポインタを更新する、請求項２に記載の情報処理装置。
【請求項４】
前記情報処理装置は、
前記バスライン及び前記再構成デバイスに接続され、前記演算処理装置の制御に従ってデータを該再構成デバイスに書き込む書込装置を更に有し、
前記演算処理装置は、前記書込装置を制御することにより、前記再構成デバイスに、前記回路情報と前記第２のポインタとを保存する、請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記情報処理装置は、
前記バスライン及び前記再構成デバイスに接続され、前記再構成デバイスの制御に従って前記メモリからデータを読み出すバスアクセス装置を更に有し、
前記再構成デバイスは、前記バスアクセス装置を制御することにより、前記メモリに保持された前記データを読み出す、請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
バスラインに接続され、メモリをバッファとして用いて、記憶素子を有する再構成デバイスへデータを送信するとともに、該データが保持される該メモリ上の領域のアドレスを示すポインタの値を管理する演算処理装置が、該記憶素子にアクセスするためのバスアドレスを生成するバスアドレス生成装置であって、
前記再構成デバイスにおける、前記ポインタの値が保存される前記記憶素子の位置を、前記再構成デバイスが構成する回路を示す回路情報から検出する位置検出手段と、
前記演算処理装置及び前記再構成デバイスを有する前記情報処理装置の構成を示す構成情報に基づいて、前記位置検出手段により検出された位置の記憶素子に対応する前記バスアドレスを生成するバスアドレス生成手段と、
を有するバスアドレス生成装置。
【請求項７】
請求項６に記載のバスアドレス生成装置と、
前記再構成デバイスの動作を示す動作記述から、前記ポインタを識別するための識別情報を抽出する抽出装置と、
前記動作記述から、前記回路情報を生成する動作合成装置と、
を有し、
前記位置検出手段は、前記抽出装置により抽出された前記識別情報ごとに、前記動作合成装置により生成された前記回路情報から、前記再構成デバイスにおける、該識別情報の示す前記ポインタの値が保存される記憶素子の位置を検出する、バスアドレス動作合成装置。
【請求項８】
前記動作記述は、前記ポインタとして使用される変数に、所定の付加情報が付加された動作記述であり、
前記抽出装置は、前記付加情報が付加された前記変数の変数名を前記識別情報として抽出する、請求項７に記載のバスアドレス動作合成装置。
【請求項９】
請求項８に記載のバスアドレス動作合成装置と、
前記動作合成装置により生成された前記回路情報に基づいて、前記バスアドレス生成装置により生成された前記バスアドレスから前記記憶素子にアクセスして、前記ポインタの値を該記憶素子に保存する手順を該演算処理装置に実行させるためのプログラムを生成するプログラム生成装置と、
前記プログラム生成装置により生成されたプログラムを前記演算処理装置が実行可能な形式に変換するコンパイル装置と、
を有する設計支援システム。
【請求項１０】
回路を構成するための回路情報と共に、バッファとして使用されるメモリ上のデータが保持されるアドレスを示すポインタの値を記憶し、前記回路情報を基に構成した回路によって該データを処理する再構成デバイスに、
前記ポインタの値に基づいて、前記メモリに保持されたデータを読み出すとともに、前記第１のポインタを更新する手順を実行させるための動作記述。
【請求項１１】
バスラインに接続され、メモリをバッファとして用いて、再構成デバイスへデータを送信する演算処理装置に、
前記メモリ上の前記データが保持される領域のアドレスを示すポインタの値を前記再構成デバイスに保存する手順、
を実行させるためのプログラム。
【請求項１２】
バスラインに接続され、メモリをバッファとして用いて、記憶素子を有する再構成デバイスへデータを送信するとともに、該データが保持される該メモリ上の領域のアドレスを示すポインタの値を管理する演算処理装置が、該記憶素子にアクセスするためのバスアドレスを生成するバスアドレス生成方法であって、
位置検出手段が、前記再構成デバイスにおける、前記ポインタの値が保存される前記記憶素子の位置を、前記再構成デバイスが構成する回路を示す回路情報から検出し、
バスアドレス生成手段が、前記演算処理装置及び前記再構成デバイスを有する前記情報処理装置の構成を示す構成情報に基づいて、前記位置検出手段により検出された位置の記憶素子に対応する前記バスアドレスを生成する、バスアドレス生成方法。
【請求項１３】
記憶素子を備えた再構成デバイスと、バスラインと、該バスラインに接続されたメモリと、該バスラインに接続され、該メモリをバッファとして用いて該再構成デバイスへデータを送信するとともに、該データが保持される該メモリ上の領域のアドレスを示すポインタの値を管理する演算処理装置とを有する情報処理装置において、
抽出手段が、前記再構成デバイスの動作を記載した動作レベル記述から、前記ポインタを識別するための識別情報を抽出し、
動作合成手段が、前記動作レベル記述から、再構成デバイスが構成する回路を示す回路情報を生成し、
位置検出手段が、前記抽出手段により抽出された前記識別情報ごとに、前記動作合成手段により生成された前記回路情報から、該識別情報の示す前記ポインタの値を保存する前記記憶素子の位置を検出し、
バスアドレス生成手段が、前記情報処理装置の構成を示す構成情報に基づいて、前記位置検出手段により検出された位置の記憶素子に対応する前記バスアドレスを生成する、バスアドレス動作合成方法。
【請求項１４】
記憶素子を備えた再構成デバイスと、バスラインと、該バスラインに接続されたメモリと、該バスラインに接続され、該メモリをバッファとして用いて該再構成デバイスへデータを送信するとともに、該データが保持される該メモリ上の領域のアドレスを示すポインタの値を管理する演算処理装置とを有する情報処理装置において、
抽出手段が、前記再構成デバイスの動作を記載した動作レベル記述から、前記ポインタを識別するための識別情報を抽出し、
動作合成手段が、前記動作レベル記述から、再構成デバイスが構成する回路を示す回路情報を生成し、
位置検出手段が、前記抽出手段により抽出された前記識別情報ごとに、前記動作合成手段により生成された前記回路情報から、該識別情報の示す前記ポインタの値を保存する前記記憶素子の位置を検出し、
バスアドレス生成手段が、前記情報処理装置の構成を示す構成情報に基づいて、前記位置検出手段により検出された位置の記憶素子に対応する前記バスアドレスを生成し、
プログラム生成手段が、前記動作合成手段により生成された前記回路情報に基づいて、前記演算処理装置が、前記バスアドレス生成装置により生成された前記バスアドレスから前記記憶素子にアクセスして、前記ポインタの値を該記憶素子に保存する手順を該演算処理装置に実行させるためのプログラムを生成し、
コンパイル手段が、前記プログラム生成手段により生成されたプログラムを前記演算処理装置が実行可能な形式に変換する、設計支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサと再構成デバイスとがデータを送受信する技術に関する。
【背景技術】
【０００２】
情報処理装置は、その利用範囲が広がるにつれ、より高度な演算処理能力、あるいは、画像や動画のような大量のマルチメディアデータを高速に処理する能力が要求されている。このような要求を満たすための手法として、DSP（Digital Signal Processor）や、ＡＳＩＣ（Application Specific Integrated Circuit）など、特定の演算や処理を専用に実行するプロセッサや回路をホストプロセッサとは別に設けることが知られている。この手法によれば、ホストプロセッサの処理負荷を軽減できるので、情報処理装置全体の処理能力を向上させることができる。
【０００３】
しかし、近年では、マルチメディアデータに対して様々な規格の圧縮・伸長処理や演算処理が必要とされる。また、ネットワークを介して各種のデータを送受信するための通信処理においても、様々なプロトコルに基づく処理が必要とされる。更に、セキュリティを確保するために、データの暗号化、復号処理が更に必要とされることもある。
【０００４】
このため、これらの様々な処理に応じて、多数の専用のプロセッサや回路を情報処理装置に設けると、情報処理装置の回路規模やコストが膨大なものとなってしまう。
【０００５】
そこで、情報処理装置に、特許文献１乃至６や非特許文献１に記載されているようなＦＰＧＡ（Field Programmable Gate Array）やＣＰＬＤ（Complex Programmable Logic Device）、あるいはＤＲＰ（Dynamically Reconfigurable Processor）などを設けて様々な処理に対応することが知られている。これらのプログラマブルデバイスを再構成デバイスという。再構成デバイスが回路構成を変化させて様々な処理を実行するので、情報処理装置は、この再構成デバイスの搭載により、低コストで、様々な処理要求に対応することができる。
【０００６】
再構成デバイスは、一般に、コンフィギュレーション・コード、すなわち回路情報と、処理に必要な入力データ、初期値や、処理結果とを一時的に保持するための内部メモリを備える。この内部メモリは、複数の記憶素子から構成される。
【０００７】
また、再構成デバイスを備える情報処理装置には、回路情報を再構成デバイス内の記憶素子に書き込むための書込装置が設けられる。
【０００８】
書込装置は、情報処理装置内のＭＰＵ（Micro Processing Unit）やＣＰＵ（Central Processing Unit）等の制御に従って、回路情報を再構成デバイスの各記憶素子に書き込む。再構成デバイスは、記憶素子に書き込まれた回路情報に基づいて内部に回路を構成する。
【０００９】
ＦＰＧＡを対象とする書込装置は、コンフィギュレーション・ハードウェアやコンフィギュレーション・デバイスとも呼ばれるコンパクトフラッシュを内蔵する。また、情報処理装置は、ＪＴＡＧ（Joint Test Action Group）に準拠した書込みインターフェースなどを用いて、ＦＰＧＡの一部を書き換えることができる。
【００１０】
書込装置を用いて、ＦＰＧＡやＤＲＰなどの再構成デバイス内の記憶素子に保持されたデータを書き換えるためには、書き換える対象のデータに加えて、書き換える対象の記憶素子の位置を書込装置に入力する必要がある。
【００１１】
例えば、ＤＲＰにおいては、ＤＲＰ内の記憶素子のそれぞれにアドレスが割り当てられている。つまり、書込装置から見ると、ＤＲＰは記憶素子からなる巨大なメモリのように見える。このため、書込装置は、アドレスおよびデータの入力に応じて、そのアドレスに対応する記憶素子へ、そのデータを書き込むことができる。
【００１２】
この書込装置のほか、ＭＰＵやＣＰＵなどの演算処理装置は、バスラインに接続される。このバスラインには、共有メモリも接続される。演算処理装置と再構成デバイスは、同時に動作できるように、この共有メモリを介して、再構成デバイスやＭＰＵが処理対象とするデータをやり取りする。
【００１３】
共有メモリを介したデータのやり取りを効率的に行うために、共有メモリ上にリングバッファを形成する方法がよく知られている。
【００１４】
演算処理装置と再構成デバイスとが、データを送受信する場合、データの送り手が、このリングバッファにデータを書き込み、データの受け手が、リングバッファからデータを読み出す。
【００１５】
共有メモリには、データの書き込み位置を指すライトポインタと、データの読み出し位置を示すリードポインタとが格納される。これらのポインタは、共有メモリ上のアドレスを指す論理的位置情報である。
【００１６】
データの送り手は、共有メモリにデータを書き込むごとに、ライトポインタを進める。データの受け手は、リードポインタが示すアドレスとライトポインタが示すアドレスとの間のデータを読み出し、リードポインタを進める。
【００１７】
データの送り手は、ライトポインタがリードポインタを追い越しそうな場合、すなわちリングバッファが満杯（ＦＵＬＬ）の状態である場合、書き込みを一時停止する。一方、データの受け手は、リードポインタがライトポインタを追い越しそうな場合、すなわちリングバッファが空（ＥＭＰＴＹ）の場合、読み出しを一時停止する。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】特開２０００−１３８５７９号公報
【特許文献２】特開２０００―２２４０２５号公報
【特許文献３】特開２０００−２３２３５４号公報
【特許文献４】特開２０００―２３２１６２号公報
【特許文献５】特開２００３−０７６６６８号公報
【特許文献６】特開２００５―２４２８１２号公報
【非特許文献】
【００１９】
【非特許文献１】Hideharu Amano, Akiya Jouraku, Kenichiro Anjo, "A Dynamically Adaptive Hardware on Dynamically Reconfigurable Processor", IEICE Transactions, Vol. E86-B, No.12, pp. 3385-3391, 2003.
【発明の概要】
【発明が解決しようとする課題】
【００２０】
しかしながら、特許文献１乃至６や非特許文献１に記載された再構成デバイスでは、ＭＰＵ等の演算処理装置との間の通信速度を向上させることが困難であった。
【００２１】
演算処理装置と再構成デバイスとがデータを送受信する場合、送受信のたびに、データの送り手と受け手とは、それぞれ、ライトポインタ、リードポインタの値を参照する必要がある。
【００２２】
また、データの送り手または受け手は、ライトポインタまたはリードポインタが進みすぎて、データの送受信を一時停止した場合にも、それらのポインタを定期的に参照して変化があったか否かを確認する。
【００２３】
このように、データの送り手または受け手が、リードポインタ、ライトポインタを参照する動作をポーリングという。
【００２４】
再構成デバイスがポーリングを行うためには、共有メモリにバスラインを介してアクセスする必要がある。
【００２５】
そして、ポーリングは一定間隔で行うため、ポインタに変化があった場合、その変化に対する再構成デバイスの応答が、ある程度遅れてしまう。
【００２６】
再構成デバイスの応答の速度を向上するには、ポーリング間隔を短くすればよいが、そうすると再構成デバイスが繁雑にバスラインにアクセスすることとなる。アクセスが煩雑になると、バスラインへのアクセスには一定の回路リソースを要するため、バスラインの負荷が上昇してしまう。
【００２７】
この結果、再構成デバイスにおいて、演算処理装置との間の通信速度を向上させることが困難であった。
【００２８】
本発明は、再構成デバイスの通信性能を、容易に向上させる技術を提供することを目的とする。
【課題を解決するための手段】
【００２９】
上記目的を達成するために、本発明の情報処理装置は、バスラインに接続され、メモリをバッファとして用いて再構成デバイスへデータを送信する演算処理装置と、前記バスラインに接続され、前記バッファとして、前記演算処理装置により送信された前記データを一時的に保持するとともに、該データを保持する領域内のアドレスを示す第１のポインタを記憶するメモリと、回路を構成するための回路情報と共に、前記第１ポインタの値と同じ値の第２のポインタを記憶し、該第２のポインタの値に基づいて前記メモリに保持された前記データを読み出し、前記回路情報を基に構成した回路によって該データを処理する再構成デバイスと、を有する。
【００３０】
本発明のバスアドレス生成装置は、バスラインに接続され、メモリをバッファとして用いて、記憶素子を有する再構成デバイスへデータを送信するとともに、該データが保持される該メモリ上の領域のアドレスを示すポインタの値を管理する演算処理装置が、該記憶素子にアクセスするためのバスアドレスを生成するバスアドレス生成装置であって、前記再構成デバイスにおける、前記ポインタの値が保存される前記記憶素子の位置を、前記再構成デバイスが構成する回路を示す回路情報から検出する位置検出手段と、前記演算処理装置及び前記再構成デバイスを有する前記情報処理装置の構成を示す構成情報に基づいて、前記位置検出手段により検出された位置の記憶素子に対応する前記バスアドレスを生成するバスアドレス生成手段と、を有する。
【００３１】
本発明のバスアドレス動作合成装置は、本発明のバスアドレス生成装置と、前記再構成デバイスの動作を示す動作記述から、前記ポインタを識別するための識別情報を抽出する抽出装置と、前記動作記述から、前記回路情報を生成する動作合成装置と、を有し、前記位置検出手段は、前記抽出装置により抽出された前記識別情報ごとに、前記動作合成装置により生成された前記回路情報から、前記再構成デバイスにおける、該識別情報の示す前記ポインタの値が保存される記憶素子の位置を検出する。
【００３２】
本発明の設計支援システムは、本発明のバスアドレス動作合成装置と、前記動作合成装置により生成された前記回路情報に基づいて、前記バスアドレス生成装置により生成された前記バスアドレスから前記記憶素子にアクセスして、該ポインタの値を該記憶素子に保存する手順を該演算処理装置に実行させるためのプログラムを生成するプログラム生成装置と、前記プログラム生成装置により生成されたプログラムを前記演算処理装置が実行可能な形式に変換するコンパイル装置と、を有する。
【００３３】
本発明の動作記述は、回路を構成するための回路情報と共に、バッファとして使用されるメモリ上のデータが保持されるアドレスを示すポインタの値を記憶し、前記回路情報を基に構成した回路によって該データを処理する再構成デバイスに、前記ポインタの値に基づいて、前記メモリに保持されたデータを読み出すとともに、前記第１のポインタを更新する手順を実行させるための動作記述である。
【００３４】
本発明のプログラムは、バスラインに接続され、メモリをバッファとして用いて、再構成デバイスへデータを送信する演算処理装置に、前記メモリ上の前記データが保持される領域のアドレスを示すポインタの値を前記再構成デバイスに保存する手順、を実行させるためのプログラムである。
【００３５】
本発明のバスアドレス生成方法は、バスラインに接続され、メモリをバッファとして用いて、記憶素子を有する再構成デバイスへデータを送信するとともに、該データが保持される該メモリ上の領域のアドレスを示すポインタの値を管理する演算処理装置が、該記憶素子にアクセスするためのバスアドレスを生成するバスアドレス生成方法であって、位置検出手段が、前記再構成デバイスにおける、前記ポインタの値が保存される前記記憶素子の位置を、前記再構成デバイスが構成する回路を示す回路情報から検出し、バスアドレス生成手段が、前記演算処理装置及び前記再構成デバイスを有する前記情報処理装置の構成を示す構成情報に基づいて、前記位置検出手段により検出された位置の記憶素子に対応する前記バスアドレスを生成する、バスアドレス生成方法である。
【００３６】
本発明のバスアドレス動作合成方法は、記憶素子を備えた再構成デバイスと、バスラインと、該バスラインに接続されたメモリと、該バスラインに接続され、該メモリをバッファとして用いて該再構成デバイスへデータを送信するとともに、該データが保持される該メモリ上の領域のアドレスを示すポインタの値を管理する演算処理装置とを有する情報処理装置において、抽出手段が、前記再構成デバイスの動作を記載した動作レベル記述から、前記ポインタを識別するための識別情報を抽出し、動作合成手段が、前記動作レベル記述から、再構成デバイスが構成する回路を示す回路情報を生成し、位置検出手段が、前記抽出手段により抽出された前記識別情報ごとに、前記動作合成手段により生成された前記回路情報から、該識別情報の示す前記ポインタの値を保存する前記記憶素子の位置を検出し、バスアドレス生成手段が、前記情報処理装置の構成を示す構成情報に基づいて、前記位置検出手段により検出された位置の記憶素子に対応する前記バスアドレスを生成する、バスアドレス動作合成方法である。
【００３７】
本発明の設計支援方法は、記憶素子を備えた再構成デバイスと、バスラインと、該バスラインに接続されたメモリと、該バスラインに接続され、該メモリをバッファとして用いて該再構成デバイスへデータを送信するとともに、該データが保持される該メモリ上の領域のアドレスを示すポインタの値を管理する演算処理装置とを有する情報処理装置において、抽出手段が、前記再構成デバイスの動作を記載した動作レベル記述から、前記ポインタを識別するための識別情報を抽出し、動作合成手段が、前記動作レベル記述から、再構成デバイスが構成する回路を示す回路情報を生成し、位置検出手段が、前記抽出手段により抽出された前記識別情報ごとに、前記動作合成手段により生成された前記回路情報から、該識別情報の示す前記ポインタの値を保存する前記記憶素子の位置を検出し、バスアドレス生成手段が、前記情報処理装置の構成を示す構成情報に基づいて、前記位置検出手段により検出された位置の記憶素子に対応する前記バスアドレスを生成し、プログラム生成手段が、前記動作合成手段により生成された前記回路情報に基づいて、前記演算処理装置が、前記バスアドレス生成装置により生成された前記バスアドレスから前記記憶素子にアクセスして、前記ポインタの値を該記憶素子に保存する手順を該演算処理装置に実行させるためのプログラムを生成し、コンパイル手段が、前記プログラム生成手段により生成されたプログラムを前記演算処理装置が実行可能な形式に変換する、設計支援方法である。
【発明の効果】
【００３８】
本発明によれば、情報処理装置において、再構成デバイスは、メモリに保存されたポインタの値と同じ値を記憶するので、再構成デバイスは、バスラインを介してメモリに対してポーリングを行わなくて済み、バスラインの負荷が減少する結果、再構成デバイスと演算処理装置との間の通信速度が向上する。
【図面の簡単な説明】
【００３９】
【図１】本実施形態のターゲットシステムの一構成例を示すブロック図である。
【図２】本実施形態の連携動作設計支援システムの一構成例を示すブロック図である。
【図３】本実施形態のバスアドレス動作合成装置の一構成例を示すブロック図である。
【図４】本実施形態の動作レベル記述の一例を示す図である。
【図５】本実施形態のＩＤリストの一例を示す図である。
【図６】本実施形態のバスアドレスリストの一例を示す図である。
【図７】本実施形態の制御プログラムの一例を示す図である。
【図８】本実施形態のＭＰＵプログラムの一例を示す図である。
【図９】本実施形態の連携動作設計支援システムの動作を示すシーケンス図である。
【図１０】本実施形態のＭＰＵの動作を示すフローチャートである。
【図１１】本実施形態の書込処理を示すフローチャートである。
【図１２】本実施形態の読出処理を示すフローチャートである。
【図１３】本実施形態のターゲットシステムの動作を説明するための図である。
【図１４】一般的なターゲットシステムの動作を説明するための図である。
【発明を実施するための形態】
【００４０】
本発明を実施するための形態について図面を参照して詳細に説明する。本実施形態の情報処理装置と、その情報処理装置を対象として設計するための連携動作設計支援システムとのそれぞれの構成を順に説明する。なお、連携動作設計支援システムにとって情報処理装置は設計対象であることから、以下では、情報処理装置をターゲットシステムと称する。
【００４１】
図１は、本実施形態のターゲットシステム１の一構成例を示すブロック図である。図１を参照すると、ターゲットシステム１は、ＭＰＵ１０、バスライン１１、共有メモリ１２、書込装置１３、再構成デバイス１４、およびバスアクセス装置１５を有する。
【００４２】
ＭＰＵ１０は、書込装置１３を制御し、再構成デバイス１４とデータを送受信する演算処理装置である。バスライン１１には、ＭＰＵ１０、共有メモリ１２、書込装置１３、およびバスアクセス装置１５が接続される。
【００４３】
共有メモリ１２には、リングバッファが形成され、そのリングバッファのポインタの値が保持される。この共有メモリ１２には、再構成デバイスが処理対象とするデータや、再構成デバイスが処理した結果が一時的に保持される。
【００４４】
書込装置１３は、ＭＰＵ１０の制御に従って、回路情報を再構成デバイスの記憶素子１４１に書き込む。また、書込装置１３は、回路情報のほか、リングバッファのポインタ値を再構成デバイスの記憶素子１４１に書き込む。
【００４５】
再構成デバイス１４は、ＦＰＧＡ、ＤＲＰなどの再構成デバイスである。再構成デバイス１４内には、複数の記憶素子１４１が設けられる。
【００４６】
記憶素子１４１は、再構成デバイスが処理対象とするデータや処理結果を一時的に保持する。また、記憶素子１４１は、共有メモリ１２に保持されたポインタと同じ値のポインタとして使用される。
【００４７】
再構成デバイス１４は、記憶素子１４１に書き込まれた回路情報の示す回路を構成する。
【００４８】
また、再構成デバイス１４は、共有メモリ１２をバッファとして、バスアクセス装置１５を制御することにより、ＭＰＵ１０との間で、処理対象または処理結果のデータを送受信する。ＭＰＵ１０とデータを送受信する場合、再構成デバイス１４は、記憶素子１４１に保持されたポインタ値を参照し、バスアクセス装置１５を使用して、共有メモリ１２、記憶素子１４１に保持されたポインタの値を更新する。
【００４９】
バスアクセス装置１５は、再構成デバイス１４の制御に従って、バスライン１１を介して共有メモリ１２にアクセスする。
【００５０】
次に、図１に示したＭＰＵ１０に再構成デバイス１４と連携動作させるための実行プログラムの設計を支援する連携動作設計支援システムの構成を説明する。図２は、連携動作設計支援システム２の一構成例を示すブロック図である。
【００５１】
図２を参照すると、連携動作設計支援システム２は、バスアドレス動作合成装置２０と、制御プログラム生成装置２１と、コンパイル装置２２とを有する。バスアドレス動作合成装置２０は、ＩＤ抽出装置２０１と、動作合成装置２０２と、バスアドレス生成装置２０３とを有する。バスアドレス生成装置２０３は、位置検出部２０３１およびバスアドレス変換部２０３２を有する。
【００５２】
ＩＤ抽出装置２０１には、図１における再構成デバイス１４の動作を記述した動作レベル記述が入力される。この動作レベル記述は、例えば、Ｃ言語、Ｃ＋＋言語、あるいはｊａｖａ言語等のプログラミング言語で記述される。また、この動作レベル記述において、リングバッファのポインタとして用いられる変数に、所定のキーワードが付加される。動作レベル記述の記載内容の具体例については、図４で後述する。
【００５３】
ＩＤ抽出装置２０１は、動作レベル記述から、キーワードが付加された変数の変数名を、リングバッファのポインタを特定するための識別情報（以下、「ＩＤ」という）として抽出する。ＩＤ抽出装置２０１は、抽出したＩＤのリストを位置検出部２０３１へ送信する。
【００５４】
動作合成装置２０２には、動作レベル記述と、ターゲットシステム１の構成を示すターゲットシステム情報が入力される。ターゲットシステム情報は、再構成デバイス内の演算器の数や種類、相互接続部の構造、記憶素子の数や種類、バスアドレスのマップ等を示す情報である。
【００５５】
動作合成装置２０２は、ターゲットシステム情報に基づいて、動作レベル記述から、動作合成、論理合成、および配置配線を行い、再構成デバイスの回路の構成、配置、配線を示す回路情報を生成する。この回路情報には、入力された動作レベル記述で使用されている各変数の保存場所が、再構成デバイスのどの場所、例えばレジスタやメモリ、といった記憶素子に割り当てられたかの情報が含まれている。動作合成装置２０２は、生成した回路情報を、位置検出部２０３１および制御プログラム生成装置２１へ送信する。
【００５６】
位置検出部２０３１は、ＩＤ抽出装置２０１で抽出されたＩＤのリストを使用して、動作合成装置２０２により生成された回路情報から、リングバッファのポインタとして使用される各々の記憶素子の、再構成デバイス内における位置を検出する。
【００５７】
バスアドレス変換部２０３２には、位置検出部２０３１で検出された記憶素子の位置と、ターゲットシステム情報とが入力される。バスアドレス変換部２０３２には、ターゲットシステム情報に基づいて、位置検出部２０３１で検出された記憶素子の位置を、バスアドレスに変換する。バスアドレス変換部２０３２は、記憶素子の位置ごとに、その位置に対応するバスアドレスを記載したバスアドレスリストを制御プログラム生成装置２１に送信する。
【００５８】
ここで、バスアドレスとは、例えば、再構成デバイスの記憶素子が物理的に２次元配置されている場合の座標や記憶素子の位置を示すためのエンコードされたアドレス等、再構成デバイスの書き込み装置から回路情報を書き込むときに使用されるアドレスである。すなわち、バスアドレスは、ＭＰＵが、バスラインから、各記憶素子にアクセスするためのアドレスを意味する。
【００５９】
制御プログラム生成装置２１は、バスアドレス変換部２０３２により生成されたバスアドレスリストと、動作合成装置２０２により生成された回路情報とから、制御プログラムを作成する。
【００６０】
制御プログラムは、ＭＰＵが再構成デバイスとデータを送受信したり、ＭＰＵがリングバッファを制御したりするためプログラムである。制御プログラムの詳細については、図８で後述する。制御プログラム生成装置２１は、生成した制御プログラムをコンパイル装置２２へ送信する。
【００６１】
コンパイル装置２２には、制御プログラム生成装置２１により生成された制御プログラムと、ＭＰＵプログラムとが入力される。
【００６２】
コンパイル装置２２は、ＭＰＵプログラムおよび制御プログラムを、ＭＰＵが実行可能な形式（以下、「実行バイナリ」という）に変換して出力する。
【００６３】
上述したように、連携動作設計支援システム２には、動作レベル記述、ＭＰＵプログラム、およびターゲットシステム情報が入力され、連携動作設計支援システム２内部で、ＩＤリスト、回路情報、バスアドレスリスト、および制御プログラムが送受信される。そして、連携動作設計支援システム２は、実行バイナリを出力する。これらの入出力または送受信される情報は、所定の記憶装置（不図示）に格納される。この記憶装置は、連携動作設計支援システム２内部の各装置に設けられていてもよいし、外部に独立して設けられていてもよい。
【００６４】
次に、図２に示したバスアドレス動作合成装置２０の構成を説明する。
【００６５】
図３は、バスアドレス動作合成装置２０の一構成例を示すブロック図である。同図を参照すると、バスアドレス動作合成装置２０は、ＣＰＵ２１０、主記憶装置２１１と、記憶媒体２１２と、データ蓄積装置２１３と、メモリ制御インターフェース部２１４、２１５、２１６と、バス２１７と、Ｉ／Ｏインターフェース部２１８、２１９とを有する。
【００６６】
Ｉ／Ｏインターフェース部２１８には、入力装置４０が接続され、Ｉ／Ｏインターフェース部２１９には、出力装置５０が接続される。
【００６７】
ＣＰＵ２１０は、記憶媒体２１２に記録されたプログラムを実行する。主記憶装置２１１は、ＣＰＵ２１０の処理に必要な情報を一時的に保持する。
【００６８】
記録媒体２１２には、磁気ディスク、半導体メモリ、光ディスクなどの記録媒体であり、バスアドレス動作合成装置２０としての処理を実行させるためのプログラムが記録される。データ蓄積装置２１３には、動作レベル記述、ＩＤリスト、回路情報、およびバスアドレスリストなどが格納される。このデータ蓄積装置２１３は、バスアドレス動作合成装置２０内部でなく、外部に独立して設けられていてもよい。
【００６９】
バスアドレス動作合成装置２０は、ＣＰＵ２１０が実行するプログラムに従って、ＩＤ抽出、動作合成、およびバスアドレス生成の処理をそれぞれ実行する。
【００７０】
メモリ制御インターフェース部２１４、２１５、２１６は、それぞれ、主記憶装置２１１、記憶媒体２１２、およびデータ蓄積装置２１３に接続され、これらの装置と、バス２１７との間のデータ転送を制御する。
【００７１】
バス２１７には、ＣＰＵ２１０と、メモリ制御インターフェース部２１４、２１５、２１６と、Ｉ／Ｏインターフェース部２１８、２１９とが接続される。
【００７２】
Ｉ／Ｏインターフェース部２１８、２１９は、それぞれ、入力装置４０、出力装置５０が、バス２１７に接続された各装置と通信するためのインターフェースである。
【００７３】
入力装置４０は、コマンドや、動作レベル記述、ターゲットシステム情報をバスアドレス動作合成装置２０に入力する。出力装置５０は、バスアドレスリストや回路情報などの処理結果を出力する。
【００７４】
なお、図２に示したＩＤ抽出装置２０１、動作合成装置２０２およびバスアドレス生成装置２０３のそれぞれが図３に示すハードウェア構成であってもよい。この場合、それぞれの装置の機能に対応して処理対象のデータや実行するプログラムが装置毎に異なっている。
【００７５】
また、処理対象のデータや実行するプログラムが異なることを除いて、図２に示した制御プログラム生成装置２１およびコンパイル装置２２のそれぞれは、図３のブロック図に示す構成と同様であるため、制御プログラム生成装置２１およびコンパイル装置２２の構成についての詳細な説明を省略する。
【００７６】
図４は、バスアドレス動作合成装置２０に入力される動作レベル記述の一例である。同図に示すように、リングバッファのポインタとして用いられる変数の定義文の後ろに、所定のキーワード（「ＩＤ＝ＲＩＮＧＢＵＦＦＥＲ」）がコメントで付加されている。このキーワードは、その変数がリングバッファのポインタとして使用されることを示すものである。
【００７７】
リングバッファのポインタとして、再構成デバイス内部における先頭ポインタ（ring_startp）、終端ポインタ（ring_endp）、リードポインタ（ring_rp）、およびライトポインタ（ring_wp）と、ＭＰＵが参照する共有メモリ上のリードポインタ（ring_rp_shared）とが定義される。
【００７８】
ＩＤ抽出装置２０１は、キーワードが付加された変数の変数名を、ＩＤとして抽出する。
【００７９】
また、動作レベル記述には、再構成デバイスが、共有メモリからデータを読み出すための処理が記載される。この動作レベル記述から生成された回路情報に基づいて、再構成デバイスは、データを読み出すときに、リングバッファとして使用される記憶素子にアクセスして、再構成デバイス内に保存されたポインタの値を参照（ポーリング）し、データを取得できるか否かを判断する。ライトポインタ（ring_wp）がリードポインタ（ring_rp）に達している場合は、リングバッファが空であり、データを取得できない。再構成デバイスは、図４の符号３０１の行に示すように、ライトポインタ（ring_wp）とリードポインタ（ring_rp）とが異なるようになるまで、すなわちリングバッファが空になるまで待機する。
【００８０】
ここで、再構成デバイスは、自身の記憶素子に保持されたポインタの値に対してポーリングするため、バスラインを介してポーリングする必要はない。
【００８１】
データが取得できるのであれば、再構成デバイスは、リードポインタ（ring_rp）の値を更新し、バスアクセス装置を使用して共有メモリからデータを取得する。このことが図４の符号３０２に示す行に記述されている。
【００８２】
再構成デバイスは、図４の３０３行に示すように、リードポインタ（ring_rp）が、リングバッファの終端ポインタに達していれば、そのリードポインタに、先頭ポインタを設定する。そして、再構成デバイスは、同図の３０４行に示すように、バスアクセス装置を使用して共有メモリ内のリードポインタ（ring_rp_shared）の値を更新する。
【００８３】
図５は、ＩＤ抽出装置２０１が抽出したＩＤのリストの一例を示す図である。同図に示すように、リングバッファのポインタとして使用される変数の変数名がＩＤとして抽出される。
【００８４】
図６は、バスアドレスリストの一例を示す図である。同図を参照すると、バスアドレスリストには、ＩＤリストに記載された各ＩＤについて、そのＩＤに対応するポインタとして使用される記憶素子へＭＰＵがアクセスするためのバスアドレスが記載される。
【００８５】
図６では、バスアドレスは変数ごとに１つしか記載されていないが、バスアドレスは、変数のビット幅の数だけ列挙されることもある。これは、例えば、１つの記憶素子で保持する情報量が１ビットであった場合は、変数のビット幅の数だけの記憶素子が必要であり、記憶素子の数だけバスアドレスが必要となるからである。
【００８６】
上述したように、回路情報には、動作レベルで使用される各変数が、再構成デバイス内のどの記憶素子に割り当てられているかを示す情報を含むので、バスアドレス生成装置２０３は、この回路情報に基づいて、各ＩＤを、バスアドレスに変換することができる。
【００８７】
図７は、制御プログラムの一例を示す図である。制御プログラムは、ターゲットシステムのＭＰＵで実行されるプログラムから呼び出される、リングバッファ制御関数の実体として生成される。
【００８８】
図７の３０５の部分に示すように、制御プログラムには、ＭＰＵが、書込装置を使用して、再構成デバイス内の記憶素子に、リングバッファのポインタの値（以下、「ポインタ情報」という）を設定するための処理が記載される。この処理は、ＭＰＵが共有メモリを介して再構成デバイスとデータを送信する前に実行される。この処理において、ＭＰＵは、各バスアドレスから再構成デバイス内の記憶素子にアクセスして、各記憶素子に、共有メモリ上のリングバッファのポインタ情報を設定する。
【００８９】
また、制御プログラムには、ＭＰＵが共有メモリに、再構成デバイスが処理対象とするデータを書き込むための処理が記載される。この処理は、ＭＰＵが、データを再構成デバイスに書き込むたびに実行される。
【００９０】
この処理において、図７の３０７行に示すように、ＭＰＵは、データを書き込んだ場合のライトポインタを設定する（３０６）。例えば、データを書き込んだ場合のライトポインタとして、新たに「ring_wp2」を定義し、共有メモリ内のライトポインタ（ring_wp）に１を加えた値を「ring_wp2」に代入する。
【００９１】
ＭＰＵは、データを書き込んだ場合のライトポインタ「ring_wp2」が、リングバッファの終端ポインタに達するのであれば、そのライトポインタに、先頭ポインタを設定する。
【００９２】
図７の３０８行に示すように、ＭＰＵは、共有メモリにアクセスして、共有メモリ内に保存されたポインタの値を参照（ポーリング）し、データを書き込むことができるか否かを判断する。リードポインタ「ring_rp」がライトポインタ「ring_wp2」に達している場合は、リングバッファが満杯であり、データを書き込むことができない。ＭＰＵは、リードポインタ「ring_rp」とライトポインタ「ring_wp2」が異なるようになるまで、すなわち満杯でなくなるまで、定期的にポーリングを行って待機する。
【００９３】
データを書き込めるのであれば、図７の３０９行に示すように、ＭＰＵは、ライトポインタ「ring_wp」に、ライトポインタ「ring_wp2」の値を代入することにより、共有メモリ内のライトポインタ「ring_wp」の値を更新する。同図の３１０行に示すように、ＭＰＵは、共有メモリにデータを書き込み、３１１行に示すように、書込装置を制御してバスアドレスから再構成デバイス内の記憶素子にアクセスすることにより、再構成デバイス内のライトポインタ「ring_wp」の値を更新する。
【００９４】
図８は、本発明のＭＰＵプログラムの一例である。このＭＰＵプログラムには、図７で示した制御プログラムを読み出して実行する処理が記述される。なお、このＭＰＵプログラムでは、ＭＰＵが書込装置を使用して、図４で示した動作レベル記述に対応する回路情報を再構成デバイスに書き込む処理は省略されている。
【００９５】
図９を参照して、連携動作設計支援システム２の動作について説明する。同図は、連携動作設計支援システム２の動作を示すシーケンス図である。
【００９６】
ＩＤ抽出装置２０１は、動作レベル記述から、キーワードが付加された変数の変数名をＩＤとして抽出する（ステップＳ１）。動作合成装置２０２は、ターゲットシステム情報に基づいて、動作レベル記述から回路情報を生成する（ステップＳ２）。
【００９７】
バスアドレス生成装置２０３は、回路情報に基づいて、ＩＤリストにおける各ＩＤに対応するポインタとして使用される記憶素子の位置を検出する（ステップＳ３）。次いで、バスアドレス生成装置２０３は、ＩＤごとに、ＭＰＵが記憶素子へアクセスするためのバスアドレスを生成する（ステップＳ４）。
【００９８】
制御プログラム生成装置２１は、回路情報に基づいて、ＭＰＵがリングバッファを制御するためのプログラムを生成する（ステップＳ５）。コンパイル装置２２は、ＭＰＵプログラムおよび制御プログラムを変換して実行バイナリを生成する（ステップＳ６）。
【００９９】
図１０〜図１２を参照して、ターゲットシステム１の動作について説明する。図１０は、ＭＰＵの動作を示すフローチャートである。この動作は、実行バイナリがＭＰＵにより実行された時に開始する。
【０１００】
ＭＰＵ１０は、書込装置１３を使用して、図４で示した動作記述に対応する回路情報を再構成デバイス１４に書き込む（ステップＴ１）。次に、ＭＰＵ１０は、図７で示した制御プログラムに対応する動作を開始する。ＭＰＵ１０は、各バスアドレスから、再構成デバイス１４内の各記憶素子１４１にアクセスして、それらの記憶素子にポインタ情報を設定する（ステップＴ２）。ＭＰＵ１０は、再構成デバイス１４に書き込むデータがあるか否かを判断する（ステップＴ３）。書き込むデータがあれば（ステップＴ３：ＹＥＳ）、ＭＰＵ１０は書込処理を実行する（ステップＴ４）。ステップＴ４の後、ＭＰＵ１０は、ステップＴ２に戻る。書き込むデータがなければ（ステップＴ３：ＮＯ）、ＭＰＵ１０は動作を終了する。
【０１０１】
図１０におけるステップＴ２〜Ｔ４の処理が、図７における制御プログラムに記述された処理に相当する。図１０におけるステップＴ２の処理が、図７における３０５の部分に記述された処理に相当する。
【０１０２】
図１１は、書込処理を示すフローチャートである。ＭＰＵ１０は、データを書き込んだ場合のライトポインタ「ring_wp2」を定義し、値を設定する（ステップＴ４１）。
【０１０３】
ＭＰＵは、ライトポインタ「ring_wp2」が、データを書き込んだ場合にリングバッファの終端ポインタ「ring_endp」に達するか否かを判断する（ステップＴ４２）。ライトポインタが終端ポインタ「ring_endp」に達するのであれば（ステップＴ４２：ＹＥＳ）、ＭＰＵは、ライトポインタ「ring_wp2」に先頭ポインタを設定する（ステップＴ４３）。
【０１０４】
ライトポインタが終端ポインタに達しない場合（ステップＴ４２：ＮＯ）、またはステップＴ４３の後、ＭＰＵ１０は、共有メモリにアクセスしてライトポインタ「ring_wp2」とリードポインタとの値が一致するか否かを判断する（ステップＴ４４）。一致するのであれば（ステップＴ４４：YES）、ＭＰＵ１０はステップＴ４４に戻り、データの書き込みを一時停止し、定期的にポーリングする。
【０１０５】
ライトポインタとリードポインタとの値が一致しないのであれば（ステップＴ４４：NO）、ＭＰＵ１０は、共有メモリ内のライトポインタ「ring_wp」の値を更新する（ステップＴ４５）。ＭＰＵ１０は、共有メモリにデータを書き込み（ステップＴ４６）、再構成デバイス内のライトポインタの値を更新する（ステップＴ４７）。ステップＴ４７の後、ＭＰＵ１０は、書込処理を終了する。
【０１０６】
図１１におけるステップＴ４１の処理が、図７における３０６行に記述された処理に相当する。図１１におけるステップＴ４２、Ｔ４３の処理が、図７における３０７行に記述された処理に相当する。また、図１１におけるステップＴ４４の処理が、図７における３０８行に記述された処理に相当し、図１１におけるステップＴ４５の処理が、図７における３０９行に記述された処理に相当する。図１１におけるステップＴ７の処理が、図７における３１０行に記述された処理に相当し、ステップＴ８の処理が、図７における３１１行に記述された処理に相当する。
【０１０７】
図１２は、再構成デバイス１４が実行する読出処理を示すフローチャートである。この読出処理は、再構成デバイス１４が、共有メモリからデータを読み出すたびに実行される。
【０１０８】
再構成デバイスは、再構成デバイス１４内部の記憶素子１４１にアクセスして、リードポインタとライトポインタとの値が一致するか否かを判断する（ステップＵ１）。一致すれば（ステップＵ１：YES）、再構成デバイス１４は、ステップＵ１に戻り、不一致するまで、データの読み出しを一時停止する。
【０１０９】
リードポインタとライトポインタとの値が不一致すれば（ステップＵ１：NO）、再構成デバイス１４は、リードポインタ「ring_rp」の値を更新し（ステップＵ２）、共有メモリからデータを取得する（ステップＵ３）。再構成デバイス１４は、リードポインタ「ring_rp」が、リングバッファの終端ポインタに達しているか否かを判断する（ステップＵ４）。リードポインタ「ring_rp」が終端ポインタに達していれば（ステップＵ４：ＹＥＳ）、再構成デバイス１４は、リードポインタ「ring_rp」に先頭ポインタを設定する（ステップＵ５）。
【０１１０】
リードポインタ「ring_rp」が終端ポインタに達していない場合（ステップＵ４：ＮＯ）、またはステップＴ５の後、再構成デバイス１４は、バスアクセス装置１５を使用して、共有メモリ内のリードポインタ「ring_rp_shared」の値を更新する（ステップＵ６）。
【０１１１】
図１３を参照して、ターゲットシステム１全体の動作について説明する。同図は、ターゲットシステム１の動作を説明するための構成図である。同図における矢印は、ＭＰＵ１０または再構成デバイス１４の、リングバッファのポインタに対する参照または更新を意味する。
【０１１２】
図１３においては、ＭＰＵ１０は、再構成デバイス１４内の各記憶素子１４１に、ポインタ情報を既に設定したものとする。ＭＰＵ１０は、共有メモリ１２内の各ポインタを参照して、データを書き込めるか否かを判断する（ステップＴ４４）。データが書き込めるのであれば、ＭＰＵ１０は、共有メモリ１２にデータを追加する（ステップＴ４６）。
【０１１３】
ＭＰＵ１０は、共有メモリ１２内のライトバッファのポインタの値を更新するとともに（ステップＴ４５）、再構成デバイス１４内のライトポインタの値も更新する(ステップＴ４７)。
【０１１４】
一方、再構成デバイス１４は、再構成デバイス１４内のポインタを参照して、データを取得できるか否かを判断する（ステップＵ１）。データが取得できるのであれば、共有メモリ１２からデータを読み出す（ステップＵ３）。再構成デバイス１４は、再構成デバイス１４内のリードポインタの値を更新するとともに（ステップＵ２）、共有メモリ１２内のリードポインタの値も更新する(ステップＵ５)。
【０１１５】
このように、再構成デバイス１４は、ポーリングにおいて、バスラインを介して共有メモリ１２にアクセスする必要がなくなるので、再構成デバイス１４の応答速度が向上する。
【０１１６】
本実施形態の構成では、ＭＰＵ１０が、記憶素子にポインタ情報を設定する処理が追加されるが、このポインタ情報の設定は、処理全体で１回、行うだけなので、ＭＰＵ１０、再構成デバイス１４間の通信速度に影響することはほとんどない。また、ＭＰＵ１０が、再構成デバイス１４内のポインタを更新する処理も追加されるが、この更新処理は、実際に再構成デバイス１４のポインタが更新されるまでＭＰＵ１０が待つ必要はないので、ハードウェアのサポートで、この更新処理による速度低下の影響を小さくできる。
【０１１７】
まとめると、これらのＭＰＵ１０の処理の増加によりわずかに通信速度が低下することがあるものの、この速度低下を再構成デバイス１４がバスラインを介してポーリングを行わなくて済むことによる応答速度の向上が上回る。この結果、全体として、ＭＰＵ１０と再構成デバイス１４との間のデータの送受信速度が向上する。
【０１１８】
ここで、ＭＰＵ１０及び再構成デバイス１４で実行するリングバッファのポインタの値の更新では、２箇所のポインタの値を更新する必要があり、かつ同時に更新することはできないため、一時的に共有メモリ１２及び再構成デバイス１４内のリングバッファのポインタの値は異なることがある。しかしこの非同一性は、ＦＵＬＬフラグもしくはＥＭＰＴＹフラグが解除されるタイミングが遅延するだけであり、リングバッファの動作としては全く問題ない。
【０１１９】
これに対して、図１４に一般的なターゲットシステムの構成を示す。このターゲットシステムでは、リングバッファのポインタは共有メモリ内のみに保持される。このため、再構成デバイスは、ポーリングするたびに、バスラインを介して共有メモリにアクセスして、ポインタ値を参照しなければならない。このような構成では、バスラインに負荷がかかるため、再構成デバイス内でポーリングを行う本発明の構成と比較して、再構成デバイスの応答速度が低くなってしまう。
【０１２０】
なお、本実施形態では、連携動作設計支援システム２は、バスアドレス動作合成装置２０、制御プログラム生成装置２１、コンパイル装置２２に、各機能を分散しているが、これらの装置の全部または２台の機能を１台の装置で実現する構成としてもよい。バスアドレス動作合成装置２０内の各装置についても同様である。
【０１２１】
また、バスアドレス動作合成装置２０内のＩＤ抽出装置２０１、動作合成装置２０２の少なくとも１つ以上を、バスアドレス動作合成装置２０の外部に設ける構成としてもよい。
【０１２２】
本実施形態では、ＭＰＵから再構成デバイスへデータを受け渡す動作レベル記述、および制御プログラムを使用する構成としている。しかし、これらの動作レベル記述、および制御プログラムにおいて、再構成デバイスからＭＰＵへデータを受け渡す処理を追加してもよい。
【０１２３】
具体的には、再構成デバイスがデータを共有メモリに書き込むたびに、共有メモリ内、再構成デバイス内のライトポインタの値を更新する処理を動作レベル記述に追加する。一方、ＭＰＵがデータを共有メモリから読み出すたびに、共有メモリ内、再構成デバイス内のリードポインタの値を更新する処理を制御プログラムに追加する。
【０１２４】
本実施形態では、図７の制御プログラムにおいて、ＭＰＵが、再構成デバイスにポインタの初期値を設定する構成としているが、図４の動作記述において、再構成デバイスが、ＭＰＵの代わりに、ポインタの初期値を自身に設定する構成としてもよい。
【０１２５】
本実施形態では、ＭＰＵ１０が本発明の演算処理装置に相当し、ターゲットシステム情報が本発明の構成情報に相当する。共有メモリ１２に保存されるポインタが本発明の第1のポインタに相当し、再構成デバイス１４に保存されるポインタが本発明の第２のポインタに相当する。バスアドレス変換部２０３２が本発明のバスアドレス生成手段に相当する。動作レベル記述が本発明の動作記述に相当し、制御プログラムが本発明のプログラムに相当する。変数に付加されるキーワードは、本発明の付加情報に相当する。
【０１２６】
以上説明したように、本実施形態によれば、情報処理装置において、演算処理装置は、メモリに保存されたポインタの値と同じ値を記憶するので、再構成デバイスは、バスラインを介してメモリに対してポーリングを行わなくて済み、バスラインの負荷が減少する結果、再構成デバイスと演算処理装置との間の通信速度が向上する。
【符号の説明】
【０１２７】
１    ターゲットシステム
２    連携動作設計支援システム
１０    ＭＰＵ
１１    バスライン
１２    共有メモリ
１３    書込装置
１４    再構成デバイス
１５    バスアクセス装置
２０    バスアドレス動作合成装置
２１    制御プログラム生成装置
２２    コンパイル装置
４０    入力装置
５０    出力装置
１４１    記憶素子
２０１    ＩＤ抽出装置
２０２    動作合成装置
２０３    バスアドレス生成装置
２０３１    位置検出部
２０３２    バスアドレス変換部
２１０    ＣＰＵ
２１１    主記憶装置
２１２    記憶媒体
２１３    データ蓄積装置
２１４、２１５、２１６    メモリ制御インターフェース部
２１７    バス
２１８、２１９    Ｉ／Ｏインターフェース部
Ｓ１〜Ｓ６、Ｔ１〜Ｔ４、Ｔ４１〜Ｔ４７、Ｕ１〜Ｕ６    ステップ
【図１】
2010272021.tif 000003
【図２】
2010272021.tif 000004
【図３】
2010272021.tif 000005
【図４】
2010272021.tif 000006
【図５】
2010272021.tif 000007
【図６】
2010272021.tif 000008
【図７】
2010272021.tif 000009
【図８】
2010272021.tif 000010
【図９】
2010272021.tif 000011
【図１０】
2010272021.tif 000012
【図１１】
2010272021.tif 000013
【図１２】
2010272021.tif 000014
【図１３】
2010272021.tif 000015
【図１４】
2010272021.tif 000016