(57)【特許請求の範囲】
【請求項１】
動的再構成回路によって所定の言語で記述されたアプリケーションの処理を実行させるためのドライバ関数を生成する動的再構成支援プログラムであって、
前記アプリケーションの処理が実行される際の前記動的再構成回路のクラスタの構成をあらわす構成定義ファイルを取得する取得工程と、
前記取得工程によって取得された構成定義ファイルに基づいて、前記クラスタ内のプロセッシングエレメント（以下、「ＰＥ」という）のアドレスをあらわすアドレスマップを生成するアドレスマップ生成工程と、
前記ＰＥの中から前記アプリケーションに記述された関数を実行させるＰＥが割り当てられた場合、前記アドレスマップを参照して、前記関数と当該関数を実行させるＰＥのアドレスとを関連付けたドライバ関数を生成するドライバ関数生成工程と、
前記ドライバ関数生成工程によって生成されたドライバ関数を記述したドライバ関数ファイルを作成するドライバ関数ファイル作成工程と、
をコンピュータに実行させることを特徴とする動的再構成支援プログラム。
【請求項２】
動的再構成回路によって所定の言語で記述されたアプリケーションの処理を実行させるためのドライバ関数を生成する動的再構成支援方法であって、
前記アプリケーションの処理が実行される際の前記動的再構成回路のクラスタの構成をあらわす構成定義ファイルを取得する取得工程と、
前記取得工程によって取得された構成定義ファイルに基づいて、前記クラスタ内のプロセッシングエレメント（以下、「ＰＥ」という）のアドレスをあらわすアドレスマップを生成するアドレスマップ生成工程と、
前記ＰＥの中から前記アプリケーションに記述された関数を実行させるＰＥが割り当てられた場合、前記アドレスマップを参照して、前記関数と当該関数を実行させるＰＥのアドレスとを関連付けたドライバ関数を生成するドライバ関数生成工程と、
前記ドライバ関数生成工程によって生成されたドライバ関数を記述したドライバ関数ファイルを作成するドライバ関数ファイル作成工程と、
を含むことを特徴とする動的再構成支援方法。
【請求項３】
前記ドライバ関数ファイル作成工程によって作成されたドライバ関数ファイルと、前記アプリケーションの処理を実行する実行コードとを所定のメモリに格納する格納工程と、
前記格納工程によって前記所定のメモリに格納されたドライバ関数ファイルを参照して、前記動的再構成回路によって実行させる前記実行コードのＰＥのアドレスを、前記動的再構成路のＰＥのアドレスに置き換える置換工程と、
を含むことを特徴とする請求項２に記載の動的再構成支援方法。
【請求項４】
請求項１に記載された動的再構成支援プログラムによって作成されたドライバ関数ファイルと、前記アプリケーションの処理を実行させるための実行コードが格納された格納手段と、
前記アプリケーションの実行指示を受け付けると、前記格納手段から前記実行コードを読み出して実行させる実行手段と、
前記実行手段による実行コードの実行時に、前記格納手段に格納されているドライバ関数ファイルを参照して、前記実行コードのＰＥのアドレスを、前記動的再構成回路のＰＥのアドレスに置き換える置換手段と、
を備えることを特徴とする動的再構成回路。
【請求項５】
プロセッシングエレメント（以下、「ＰＥ」という）を備えたクラスタからなる動的再構成回路の回路構成を変更可能な、所定の言語で記述されたアプリケーションの処理の実行を支援する動的再構成支援装置であって、
前記アプリケーションの処理が実行される際の前記動的再構成回路のクラスタの構成をあらわす構成定義ファイルを取得する取得手段と、
前記取得手段によって取得された構成定義ファイルに基づいて、前記クラスタ内のＰＥのアドレスをあらわすアドレスマップを生成するアドレスマップ生成手段と、
前記ＰＥの中から前記アプリケーションに記述された関数を実行させるＰＥが割り当てられた場合、前記アドレスマップを参照して、前記関数と当該関数を実行させるＰＥのアドレスとを関連付けたドライバ関数を生成するドライバ関数生成手段と、
前記ドライバ関数生成工程によって生成されたドライバ関数を記述したドライバ関数ファイルを作成するドライバ関数ファイル作成手段と、
前記ドライバ関数ファイル作成手段によって作成されたドライバ関数ファイルを所定のメモリに格納する格納手段と、
を備えることを特徴とする動的再構成支援装置。
【請求項６】
プロセッシングエレメント（以下、「ＰＥ」という）を備えたクラスタからなる動的再構成回路の回路構成を変更可能な、所定の言語で記述されたアプリケーションの処理の実行を支援する動的再構成支援システムであって、
前記アプリケーションの処理が実行される際の前記動的再構成回路のクラスタの構成をあらわす構成定義ファイルを取得する取得手段と、
前記取得手段によって取得された構成定義ファイルに基づいて、前記クラスタ内のＰＥのアドレスをあらわすアドレスマップを生成するアドレスマップ生成手段と、
前記ＰＥの中から前記アプリケーションに記述された関数を実行させるＰＥが割り当てられた場合、前記アドレスマップを参照して、前記関数と当該関数を実行させるＰＥのアドレスとを関連付けたドライバ関数を生成するドライバ関数生成手段と、
前記ドライバ関数生成工程によって生成されたドライバ関数を記述したドライバ関数ファイルを作成するドライバ関数ファイル作成手段と、からなる動的再構成支援装置と、
前記アプリケーションの処理を実行させるための実行コードと、前記ドライバ関数ファイル作成手段によって作成されたドライバ関数ファイルとを格納した格納手段と、
前記アプリケーションの実行指示を受け付けると、前記格納手段から前記実行コードを読み出して実行させる実行手段と、
前記実行手段による実行コードの実行時に、前記格納手段に格納されているドライバ関数ファイルを参照して、前記実行コードのＰＥのアドレスを、前記動的再構成回路のＰＥのアドレスに置き換える置換手段と、からなる動的再構成回路と、
を備えることを特徴とする動的再構成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プロセッシングエレメント（以下、「ＰＥ」という）を備えたクラスタからなる動的再構成回路の処理実行を支援する動的再構成支援プログラム、動的再構成支援方法、動的再構成支援装置および動的再構成システムに関する。
【背景技術】
【０００２】
従来より、処理内容を動的に変更することが可能な動的再構成回路を利用して同一の回路によって処理内容の異なる複数の処理を実行させることが可能な動的再構成システムが提供されている。これら動的再構成システムに利用される動的再構成回路には、各種演算、データ格納、カウント処理をおこなう機能を備えた複数種類のＰＥと、これら複数種類のＰＥ間の接続をおこなうネットワーク回路とが含まれている。
【０００３】
そして、動的再構成回路は、処理実行時に、各ＰＥの機能と、各ＰＥ間の接続とを変更することによってユーザの設定した処理内容／性能／消費電力を満たす回路として再構成される（たとえば、下記特許文献１参照。）。
【０００４】
【特許文献１】国際公開第２００２／０９５９４６号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述のようにＬＳＩチップに求められる、複雑な処理への対応と高い演算能力を両立させるため、ＣＰＵと動的再構成回路との協調動作が一般的におこなわれている。このような協調動作をおこなうＣＰＵと動的再構成回路とは、お互いにバスで接続されており、ＣＰＵで実行するプログラム（以下、「メインプログラム」と呼ぶ）による、動的再構成回路のコントロール、および、動的再構成回路を構成する各ＰＥへのアクセスにより上述の協調動作を実現していることを前提とする。
【０００６】
また、一般的に、ＬＳＩチップに搭載される回路に対しては省面積化が要求される。動的再構成回路の省面積化は、たとえば、動的再構成回路の設計時に、動的再構成回路上で実行するアプリケーションの処理内容／性能／消費電力を満たす範囲で、動的再構成回路を構成するクラスタの個数や、各クラスタ内のＰＥの種類や個数を変更することにより可能となる。以下、この変更を「（回路）構成変更」と呼ぶこととし、段落番号０００３において述べた「（動的）再構成」と区別する。
【０００７】
しかしながら、動的再構成回路を構成するクラスタの個数や、各クラスタ内のＰＥの種類や個数を変更した場合、各ＰＥの配置が変更されてしまう可能性がある。ＰＥの配置が変更されると、ＰＥの配置をあらわすアドレスが変更されてしまう。このような場合に、構成変更前に作られたメインプログラムでＰＥのアドレスが固定値として記述されていると、構成変更後もＣＰＵと動的再構成回路を協調動作させるには、メインプログラムでのＰＥのアドレスの記述を変更しなければならないという問題があった。
【０００８】
この発明は、上述した従来技術による問題点を解消するため、回路構成が変更可能な動的再構成回路であっても、メインプログラムの記述内容を変更することなく指定した処理を実行させることができる動的再構成支援プログラム、動的再構成支援方法、動的再構成回路および動的再構成システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、この動的再構成支援プログラム、動的再構成支援方法、動的再構成回路、動的再構成支援装置および動的再構成システムは、動的再構成回路によって所定の言語で記述されたアプリケーションを実行させるためのドライバ関数を生成する動的再構成支援プログラムを備え、前記アプリケーションが実行される際の前記動的再構成回路のクラスタの構成をあらわす構成定義ファイルを取得し、前記取得工程によって取得された構成定義ファイルに基づいて、前記クラスタ内のプロセッシングエレメント（以下、「ＰＥ」という）のアドレスをあらわすアドレスマップを生成するアドレスマップ生成し、前記ＰＥの中から前記アプリケーションに記述された関数を実行させるＰＥが割り当てられた場合、前記アドレスマップを参照して、前記関数と当該関数を実行させるＰＥのアドレスとを関連付けたドライバ関数を生成し、前記ドライバ関数生成工程によって生成されたドライバ関数を記述したドライバ関数ファイルを作成することを要件とする。
【００１０】
上述の要件を満たすことにより、動的再構成回路において構成変更がおこなわれるごとに、構成変更後のＰＥのアドレスを取得してアドレスマップが生成される。このアドレスマップは、コンパイラによってアプリケーションに記述された関数を実行するために割り振られたＰＥのアドレスをあらわしている。したがって、動的再構成回路のＰＥの構成が変更された場合であっても、アプリケーションに記述されている関数を実行するＰＥのアドレスがどのように変更されているかを把握することができる。
【００１１】
また、上記のこの動的再構成支援プログラム、動的再構成支援方法、動的再構成回路、動的再構成支援装置および動的再構成システムは、前記ドライバ関数ファイル作成工程によって作成されたドライバ関数ファイルと、前記アプリケーションの処理を実行する実行コードとを所定のメモリに格納する格納工程と、前記格納工程によって前記所定のメモリに格納されたドライバ関数ファイルを参照して、前記動的再構成回路によって実行させる前記実行コードのＰＥのアドレスを、前記動的再構成回路のＰＥのアドレスに置き換える書換工程をさらに構成を含んでもよい。
【００１２】
上述の要件を満たすことにより、ＰＥのアドレスと関数とを関連付けたドライバ関数ファイルを参照することによって正しいＰＥを利用して実行コードの処理を動作させることができる。
【発明の効果】
【００１３】
この動的再構成支援プログラム、動的再構成支援方法、動的再構成支援装置および動的再構成システムによれば、ＰＥの構成が変更可能な動的再構成回路であっても、構成変更後にユーザがアプリケーションおよびメインプログラムの記述内容を変更することなく指定した処理を実行させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下に添付図面を参照して、この発明にかかる動的再構成支援プログラム、動的再構成支援方法、動的再構成回路および動的再構成システムの好適な実施の形態を詳細に説明する。なお、本実施の形態では、動的再構成回路上で所定の処理を実行させるための一例として、ユーザがＣ言語によって記述したアプリケーションを、動的再構成回路を含んだＬＳＩチップに書き込んで実行させる動的再構成システムについて説明するが、他の高級言語によって記述されたアプリケーションを実行させることもできる。また、動的再構成回路のコントロールや、動的再構成回路を構成する各ＰＥ（ＲＡＭやＤＲＦ）へのアクセスのためにＣＰＵに実行させるプログラムを上述したように「メインプログラム」と呼び、本実施の形態の独自の機能であるドライバ関数ファイルの生成に関わる動的再構成支援プログラムとは区別する。
【００１５】
（動的再構成システムの概要）
・動的再構成システムの構成
まず、本実施の形態において、ドライバ関数ファイルを用いたアプリケーション実行する動的再構成システムの概要について説明する。図１−１は、本実施の形態にかかる動的再構成システムの概要を示す説明図である。図１に示すように、本実施の形態にかかる動的再構成システム１００は、ユーザが用意したアプリケーション１０２を、動的再構成回路を含んだＬＳＩチップ１２０によって実行させるためデータ（具体的には、コンフィグレーションデータ１０４およびロードモジュール１０５）をＰＣ１１０によって生成する。
【００１６】
図１−１のように、ＰＣ１１０には、ユーザから構成定義ファイル１０１と、アプリケーション１０２と、メインプログラム１０３とが提供される。構成定義ファイル１０１とは、動的再構成システム１００において利用されるＬＳＩチップ１２０に搭載された動的再構成回路部を構成するクラスタのＰＥの構成内容をあらわす情報である。
【００１７】
また、アプリケーション１０２とは、ユーザによって作成された所定の処理をおこなうための記述コードであり、本実施の形態では、Ｃ言語の関数で定義された１個の処理単位が記述されている。ＬＳＩチップ１２０は、アプリケーション１０２に記述された所定の処理を動的再構成回路部２３０にて実行させるため、後述するリコンフィグＣコンパイラ１１２によってアプリケーション１０２に対応したコンフィギュレーションデータ１０４と、ロードモジュール１０５を生成する。すなわち、ＬＳＩチップ１２０では、コンフィグレーションデータ１０４およびロードモジュール１０５を実行させることによって、アプリケーション１０２の処理を実行することができる。
【００１８】
ＰＣ１２０には、アドレスマップ生成ツール１１１と、リコンフィグＣコンパイラ１１２と、動的再構成支援プログラム１１３と、ＣＰＵ用コンパイラ１１４とが格納されている。ここで、アドレスマップ生成ツール１１１は、動的再構成回路部を構成する各ＰＥのアドレスを示すアドレスマップを生成する。また、リコンフィグＣコンパイラ１１２は、アプリケーション１０２を動的再構成回路部によって実行させるためのコンフィグレーションデータ１０４を生成する。
【００１９】
また、動的再構成支援プログラム１１３は、アプリケーション１０２を動的再構成回路部によって実行させる際の各ＰＥのドライバ関数ファイルを生成する。そして、ＣＰＵ用コンパイラ１１４は、上述したメインプログラム１０３と、アドレスマップ生成ツール１１１によって生成されたアドレスマップと、動的再構成支援プログラム１１３によって生成されたドライバ関数ファイルとから、ＬＳＩチップ１２０の動的再構成回路部によってアプリケーションを実行させるためのロードモジュール１０５を生成する。
【００２０】
ロードモジュール１０５は、メインプログラム１０６と、回路構成が変更された場合の回路構成素子（ＰＥなど）のアドレス変更に対応するためのドライバ関数１０７とから構成されており、いずれの情報もＣＰＵ用コンパイラ１１４によって、ＬＳＩチップ１２０上で動作させるための実行コード（バイナリーデータ）として生成されている。
【００２１】
・動的再構成システムの処理手順の概要
つぎに、上述した動的再構成システム１００による処理手順について説明する。図１−２および図１−３は、動的再構成システムの処理手順の概要を示す説明図である。動的再構成システム１００のＰＣ１１０によって実行される処理としては、図１−２および図１−３に示したように、ドライバ関数ファイルを生成するための処理と、ロードモジュールを生成するための処理とに大別される。
【００２２】
まず、図１−２を用いて、ドライバ関数ファイルを生成するための手順について説明する。ＰＣ１１０では、まず、アドレスマップ生成ツール１１１によって、構成定義ファイル１０１からアドレスマップ１１６を生成する。また、リコンフィグＣコンパイラ１１２によって、構成定義ファイル１０１およびアプリケーション１０２からコンフィギュレーションデータ１０４を生成する。
【００２３】
なお、リコンフィグＣコンパイラ１１２は、コンフィギュレーションデータ１０４の生成に伴い、アプリケーション１０２の関数と、動的再構成回路部２３０のＰＥとの対応情報を合わせて生成する。また、リコンフィグＣコンパイラ１１２では、１つの処理単位をあらわすアプリケーション１０２に対して、１個以上のクラスタ、１個以上のコンテキストが割り当てられる。また、各クラスタでは、アプリケーション１０２に記述された関数の各引数、変数、戻り値に対応する、ＰＥとしてＲＡＭエレメントやＤＲＦエレメントが割り当てられる。
【００２４】
動的再構成支援プログラム１１３は、リコンフィグＣコンパイラ１１２によって生成された関数とＰＥとの対応情報１１５から、ドライバ関数ファイル１１７を生成する。以上の処理によって生成されたアドレスマップ１１６と、ドライバ関数ファイル１１７とは、ロードモジュールの生成に利用され、コンフィギュレーションデータ１０４は、ＬＳＩチップ１２０に格納される。
【００２５】
つぎに、図１−３を用いて、ロードモジュールを生成するための手順について説明する。ＰＣ１１０は、ＣＰＵ用コンパイラ１１４によって、メインプログラム１０３、ドライバ関数ファイル１１７およびアドレスマップ１１６からロードモジュール１０５を生成する。このとき、メインプログラム１０３を実行させることにより、ドライバ関数を呼び出し、呼び出しに利用されたドライバ関数ファイル１１７をアドレスマップ１１６にインクルードする（組み込む）。
【００２６】
以上説明した手順により、生成されたコンフィギュレーションデータ１０４と、ロードモジュール１０５とが、ＬＳＩチップ１２０に搭載されることによって、アプリケーション１０２を実行する際の動的再構成回路部２３０の構成変更に対応することができる。
【００２７】
（動的再構成回路の構成）
つぎに、ＬＳＩチップ１２０に搭載される動的再構成回路の構成について説明する。図２は、本実施の形態にかかる動的再構成回路の構成を示すブロック図である。図２のようにＬＳＩチップ１２０は、ＣＰＵ２１０と、メモリ２２０と、動的再構成回路部２３０とを含むことにより、動的再構成回路として機能する。なお、ＬＳＩチップ１２０には、動的再構成回路以外の回路機能が搭載されている場合もあるが、ここでは、動的再構成回路としての機能のみに特化して説明する。
【００２８】
ＣＰＵ２１０は、動的再構成回路全体を制御する。具体的には、ＣＰＵ２１０によってメインプログラム１０３を動作させ、メモリ２２０に格納されているロードモジュール１０５を読み出したり、動的再構成回路部２３０を起動させたり、各ＰＥ内のデータの読み出しや書き込みをおこなわせる。
【００２９】
メモリ２２０には、ＰＣ１１０のＣＰＵ用コンパイラ１１４によって生成されたロードモジュール１０５が格納されている。ロードモジュール１０５は、実行コードの状態のメインプログラム１０６およびドライバ関数１０７によって構成されている。ＣＰＵ２１０は、外部から動作指示を受け付けると、メモリ２１０に格納されているメインプログラム（実行コード）１０６を読み出して動作を開始する。ＣＰＵ２１０によるメインプログラム（実行コード）１０６実行に応じてドライバ関数（実行コード）１０７が呼び出され、動的再構成回路部２３０の構成変更に伴うアドレス変更を吸収して、メインプログラム（実行コード）１０６を正しく実行させる。
【００３０】
動的再構成回路部２３０は、コンフィギュレーションデータ１０４を格納するコンフィギュレーションデータ格納部２３１と、コンフィギュレーションデータ１０４に応じて所定の処理を実行するクラスタ２３２とによって構成されている。コンフィギュレーションデータ格納部２３１は、リコンフィグＣコンパイラ１１２によって生成されたコンフィギュレーションデータ１０４をコンテキストとして格納する機能部である。また、クラスタ２３２は、ＰＥと、各ＰＥを接続するネットワーク回路と、コンテキストの切替を制御するシーケンサとを含んで構成される。
【００３１】
動的再構成回路部２３０は、上述のような構成を備え、ＣＰＵ２１０によるメインプログラム１０６の実行に応じて動的に処理内容（コンテキスト）を切り替えることにより、アプリケーション１０２の記述に応じた所定の処理を実行することができる。
【００３２】
本実施の形態にかかる動的再構成システム１００は、以上説明した構成に加え、さらに、下記の様な特徴を備えているものとする。
【００３３】
１）動的再構成回路部２３０は、従来の動的再構成回路と同様に１個のコンフィギュレーションデータ１０２内に、ＰＥの機能／ＰＥ間の接続設定を指定した「コンテキスト」を複数個格納し、メインプログラム（実行コード）１０６の実行時にコンテキストに基づいて処理内容の切り替えを瞬時（数サイクル以内）におこなう。なお、動的再構成回路部２３０にどのコンテキストを適用させるかは、メインプログラム（実行コード）１０６に応じてＣＰＵ２１０から指定される。なお、このときのコンテキスト切り替えは、動的再構成回路部２３０に搭載されたシーケンサが制御する。さらに、動的再構成回路部２３０における処理終了のタイミングを、ＣＰＵ２１０上で動作するメインプログラム（実行コード）１０６によって検出（割り込み検出等）することもできる。
【００３４】
２）動的再構成回路部２３０は、回路構成の設計時にクラスタ２３２の個数および各クラスタ２３２のＰＥの構成（ＰＥの種類／個数）を変更することができる。ＰＥの種類には、各種演算器、ＲＡＭ、データレジスタファイル（ＤＲＦ）等があり、動的再構成回路部２３０の各クラスタ２３２それぞれ複数個搭載することができる。また、クラスタ構成および各クラスタ２３２のＰＥ構成は、構成定義ファイル１０１により指定される。
【００３５】
３）ＬＳＩチップ１２０に搭載されたＣＰＵ２１０は、動的再構成回路部２３０に対して下記のような制御をおこなうことができる。
【００３６】
・コンフィギュレーションデータ２３１のロード処理
・関数の各引数、変数に対応した各ＰＥ（ＲＡＭエレメント、ＤＲＦエレメント）への書き込み
・処理を開始するコンテキストの指定
・処理の実行開始
・処理の実行終了待ち
・関数の各引数、変数に対応した各ＰＥからの読み出し
【００３７】
つぎに、動的再構成回路の回路構成の変更例について説明する。図３は、動的再構成回路Ａを構成するクラスタを示すアドレステーブルである。また、図４は、動的再構成回路Ｂを構成するクラスタを示すアドレステーブルである。ＲＡＭエレメント以外のＰＥについては説明を省略する。
【００３８】
図３、４を参照して動的再構成回路Ａと動的再構成回路Ｂのクラスタの内容を比較してみると、動的再構成回路Ａの場合、図３のテーブル３００であらわしたように１個のクラスタ（クラスタ０）によって構成され、動的再構成回路Ｂの場合、図４のテーブル４００であらわしたように２個のクラスタ（クラスタ０，１）によって構成されている。さらに、各クラスタ内部のＰＥの個数（ここではＲＡＭエレメントの個数）も、回路ごとに異なる。
【００３９】
たとえば、アプリケーション１０２は（リコンフィグＣコンパイラ１１２により）関数の引数、変数に５個のＲＡＭエレメントが割り当てられるものであり、メインプログラム１０６はそれら５個のＲＡＭエレメントに対する書き込み/読み出し処理をおこなうものとする。動的再構成回路Ａで動作するように作られたメインプログラム１０６が、ＲＡＭエレメントのアドレスの値（０ｘ１１１０００等）をそのまま使用するものであった場合、同等の処理を動的再構成回路Ｂでも動作させるには、メインプログラム１０６のＲＡＭエレメントのアドレスの値を動的再構成回路Ｂに合わせて変更しなければならない。
【００４０】
また、リコンフィグＣコンパイラ１１２は、アプリケーション１０２の関数の引数、変数に割り当てるＲＡＭエレメントを決定する際に、回路構成ごとに最適化する場合がある。すなわち、動的再構成回路内のクラスタの個数および各クラスタ内のＲＡＭエレメントの個数は同じであっても、各クラスタ内のその他のＰＥの個数が異なれば、同じアプリケーション１０２の関数の各引数、変数に対して異なるＲＡＭエレメントが割り当てられる可能性がある。
【００４１】
動的再構成システム１００では、上述のような回路構成の変更に伴うＰＥのアドレス変更に対応するためにドライバ関数ファイルを生成し、アプリケーション１０２の処理に対応した実行コード（メインプログラム１０６）の実行時にはこのドライバ関数ファイル１１７を参照して実行コード（ドライバ関数１０７）を生成し、正しいＰＥを利用した処理を実現させる。以下、具体的な動的再構成支援処理の手順について説明する。
【００４２】
本実施の形態において、アドレスと関数とを関連付けた情報を「ドライバ関数」とよぶ。また、ドライバ関数ファイル１１７とは、ユーザの指定したアプリケーション１０２に記述されている関数を実行する際にどのクラスタに含まれたどのＰＥを利用するかを示したファイルである。以下、ＰＣ１１０に搭載された動的再構成支援プログラム１１２によってドライバ関数ファイル１１７を作成する手順を説明する。
【００４３】
（アドレスマップの生成手順）
まず、動的再構成回路部２３０の構成に応じたアドレスマップの生成手順について説明する。図５は、アドレスマップの生成手順を示すフローチャートである。図５のフローチャートにおいて、まず、動的再構成回路部２３０の構成をあらわす構成定義ファイル１０１を取得する（ステップＳ５０１）。
【００４４】
ここで、図６は、構成定義ファイルの一例を示すデータ列である。図６に示した構成定義ファイル１０１のデータ列６００場合、クラスタ０の構成６１０と、クラスタ１の構成６２０の情報が設定されている。たとえば、クラスタ０の構成６１０に記載されている（“ＤＲＦ”  ２）は、クラスタ０には、ＤＲＦ０およびＤＲＦ１の２つのＤＲＦが配置されていることをあらわしている。また、（“ＲＡＭ”  ３）は、クラスタ０には、ＲＡＭ０、ＲＡＭ１およびＲＡＭ２の３つのＲＡＭが配置されていることをあらわしている。
【００４５】
図５の説明にもどり、ステップＳ５０１によって構成定義ファイル１０１を取得すると、各クラスタ内のＰＥ（ＲＡＭやＤＲＦ）のアドレス情報を取得して動的再構成回路部２３０のアドレスマップ１１６を生成する（ステップＳ５０２）。なお、ＰＥのアドレス情報を取得するには、たとえば、動的再構成回路において各ＰＥのアドレスを付与する際の算出ルールを用いて、算出すればよい。
【００４６】
たとえば、図３，４に示した各クラスタを構成するＰＥのアドレスは、下記（１）式によって一意的に付与される。なお、このような算出ルールは外部の別ファイルとして取得してもよい。
【００４７】
クラスタａに配置されたＲＡＭｂのアドレス＝
０ｘ１０００００＋０ｘ１０００×ａ＋０ｘ１０００×ｂ＋１０００  …（１）
【００４８】
また、図７は、アドレスマップの一例を示すデータ列である。図５のステップＳ５０２によって生成されたアドレスマップ１１６は、たとえば、図７のデータ列７００のような構成となる。データ列７００の１行目は、動的再構成回路１３０のベースアドレスをあらわし、以下のデータ列左半分７１０は、各ＰＥの名称をあらわし、データ列右半分は各ＰＥのアドレスを取得するためのマクロの定義をあらわしている。上述のように生成されたアドレスマップ１１６は、ＰＣ１１０に格納される（ステップＳ５０３）。
【００４９】
（ドライバ関数の生成手順）
つぎに、生成されたアドレスマップ１１６を利用した、ドライバ関数の生成手順について説明する。図８は、ドライバ関数の生成手順を示すフローチャートである。図８のフローチャートにおいて、まず、動的再構成回路部２３０によって実行させるアプリケーション１０２を読み出す（ステップＳ８０１）。
【００５０】
図９は、アプリケーションの一例を示すプログラムソースである。図９のように、プログラムソース９００の関数では変数９１０の値を参照しなければならない。そこで、変数９１０に対応するデータを格納するＲＡＭやＤＲＦといったＰＥの割り当てが必要となる。
【００５１】
したがって、ＬＳＩチップ１２０に応じたコンフィギュレーションデータ１０４を生成するために、動的再構成回路部２３０の構成定義ファイルを取得し（ステップＳ８０２）、コンフィグＣコンパイラ１１２を実行する（ステップＳ８０３）。このとき、リコンフィグＣコンパイラ１１２は、アプリケーション１０２に記述された関数の変数がベクトル型である場合には、ＰＥの中からＲＡＭ（ランダムアクセスメモリ）を割り当て、アプリケーション１０２に記述されている関数の変数がスカラー型である場合には、ＰＥの中からＤＲＦ（データレジスタファイル）を割り当てるように設定してもよい。なお、上述したステップＳ８０１とステップＳ８０２はどちらの処理は順不同であり、並列に処理をおこなってもよい。
【００５２】
ステップＳ８０３におけるコンパイルによってアプリケーション１０２に記述された各関数にはそれぞれ対応したＰＥ（ＲＡＭやＤＲＦ）が割り当てられ、この割り当て結果を、関数とＰＥとの対応情報１１５（図１−２参照）として取得する（ステップＳ８０４）。ここで、図１０は、関数とＰＥの対応情報の一例を示すデータ列である。図１０のデータ列１０００では、関数名１０１０ごとに、関数の引数とＰＥとの対応情報１０２０や、変数とＰＥとの対応情報１０３０、戻り値とＰＥとの対応情報１０４０などが設定されている。
【００５３】
図８のフローチャートの説明にもどり、ステップＳ８０４によって関数とＰＥとの対応情報１１５を取得すると、動的再構成支援プログラム１１３によって、関数とＰＥとの対応情報１１５からドライバ関数を生成する（ステップＳ８０５）。このとき、生成されるドライバ関数は、図５のフローチャートによって説明したアドレスマップと関連付けされている。
【００５４】
そして、ステップＳ８０５によって生成されたドライバ関数はアプリケーション１０２に対応した実行コードのドライバ関数１０７として、同じく実行コードであるメインプログラム１０６とともにロードモジュール１０５としてメモリ１２０に蓄積される（ステップＳ８０６）。
【００５５】
上述したような手順でＬＳＩチップ１２０のメモリ２２０に格納されたロードモジュール１０５は、ＣＰＵ２１０が、ユーザや上位システムによってアプリケーション１０２の実行指示を受け付けると、適宜読み出され、実行される。
【００５６】
そして、メインプログラム１０６の実行時、実行コードのＰＥのアドレスが、ドライバ関数１０７によって動的再構成回路のＰＥのアドレスに置き換えられる。この置き換えによって、アプリケーション１０１は、利用ＰＥを誤ることなく処理を実行することができる。
【００５７】
図１１は、ドライバ関数ファイルの一例を示すプログラムソースである。上述の処理の具体例を挙げると、図１１のプログラムソース１１００のように、ドライバ関数名は、動的再構成支援プログラム１１２によってアプリケーション１０２の関数名、変数名から自動的に生成される。また、プログラムソース１１００の引数や戻り値部分（１１１０〜１１６０）には、ステップＳ８０５によって生成されたドライバ関数が適用されている。
【００５８】
プログラムソース１１００を実行する場合、Ｃ言語のマクロ機能により、ＲＣ０＿ＣＬ１＿ＲＡＭ０（１１１０）や、ＲＣ０＿ＣＬ１＿ＲＡＭ１（１１２０）は、先に生成されたアドレスマップによって設定されたアドレス情報「０ｘ１１１０００」、「０ｘ１１２０００」にそれぞれ置き換えられる。
【００５９】
上述したように、従来は動的再構成回路の構成を変更した場合には、変更後のアドレスに対応させてメインプログラム１０６のコードを適宜修正しなければならなかったが、本実施の形態では、構成変更時に上述した動的再構成支援プログラム１１３を適用させればよい。動的再構成支援プログラム１１３を適用することにより、メインプログラム１０６のコード修正することなく、ＣＰＵ２１０は、適切なＰＥにアクセスすることができ、アプリケーション１０２に対応する処理を実行させることができる。したがって、ユーザの処理負担を大幅に軽減させることができる。
【００６０】
以上説明したように、本実施の形態にかかる動的再構成支援プログラム、動的再構成支援方法、動的再構成回路および動的再構成支援システムによれば、ＰＥの構成が変更可能な動的再構成回路であっても、構成変更後にユーザがアプリケーションおよびメインプログラムの記述内容を変更することなく指定した処理を実行させることができる。
【００６１】
なお、本実施の形態で説明した動的再構成支援方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【図面の簡単な説明】
【００６２】
【図１−１】本実施の形態にかかる動的再構成システムの概要を示す説明図である。
【図１−２】動的再構成システムの処理手順の概要（その１）を示す説明図である。
【図１−３】動的再構成システムの処理手順の概要（その２）を示す説明図である。
【図２】本実施の形態にかかる動的再構成回路の構成を示すブロック図である。
【図３】動的再構成回路Ａを構成するクラスタを示すアドレステーブルである。
【図４】動的再構成回路Ｂを構成するクラスタを示すアドレステーブルである。
【図５】アドレスマップの生成手順を示すフローチャートである。
【図６】構成定義ファイルの一例を示すデータ列である。
【図７】アドレスマップの一例を示すデータ列である。
【図８】ドライバ関数の生成手順を示すフローチャートである。
【図９】アプリケーションの一例を示すプログラムソースである。
【図１０】関数とＰＥの対応情報の一例を示すデータ列である。
【図１１】ドライバ関数ファイルの一例を示すプログラムソースである。
【符号の説明】
【００６３】
１００  動的再構成システム
１０１  構成定義ファイル
１０２  アプリケーション
１０３  メインプログラム
１０４  コンフィグレーションデータ１０４
１０５  ロードモジュール
１１０  ＰＣ
１１１  アドレスマップ生成ツール
１１２  リコンフィグＣコンパイラ
１１３  動的再構成支援プログラム
１１４  ＣＰＵ用コンパイラ
１２０  ＬＳＩチップ
２１０  ＣＰＵ
２２０  メモリ
２３０  動的再構成回路部
２３１  コンフィギュレーションデータ格納部
２３２  クラスタ
【図１−１】
0005119902.tif 000002
【図１−２】
0005119902.tif 000003
【図１−３】
0005119902.tif 000004
【図２】
0005119902.tif 000005
【図３】
0005119902.tif 000006
【図４】
0005119902.tif 000007
【図５】
0005119902.tif 000008
【図６】
0005119902.tif 000009
【図７】
0005119902.tif 000010
【図８】
0005119902.tif 000011
【図９】
0005119902.tif 000012
【図１０】
0005119902.tif 000013
【図１１】
0005119902.tif 000014