(57)【要約】【課題】パイプライン動作を維持するようにデータフローグラフに対して分割を施し、マルチコンテキスト型の動的再構成可能な回路の性能低下を抑制できるようにする。【解決手段】任意の回路記述からデータフローグラフを生成し、生成されたデータフローグラフを複数のコンテキストで実行させるように分割数と実行サイクルを決定し、コンテキスト切り替えによっても回路動作の整合性を維持するようデータフローグラフに対して調整を行い、動的再構成可能な仮想領域を含めた回路リソースに搭載可能な仮想回路の配置配線を行い、動的再構成可能な回路で実行可能なデータを生成するようにして、コンテキストの切り替えを伴いながらデータフローグラフの動作を実現させる。【選択図】図３
2010026806.tif 000002
【特許請求の範囲】
【請求項１】
動的に再構成可能な回路に係る入力される回路記述を回路構成情報に変換するデータ変換装置であって、
前記回路記述からデータフローグラフを生成する第１の生成部と、
前記第１の生成部により生成されたデータフローグラフを分割する分割数を決定する分割数決定部と、
前記動的に再構成可能な回路のリソースを前記分割数決定部により決定された分割数倍分有する仮想回路を作成する仮想回路作成部と、
前記回路記述から前記仮想回路作成部により作成された仮想回路に対するデータフローグラフを生成する第２の生成部と、
前記第２の生成部により生成されたデータフローグラフに従って、前記仮想回路のリソースの割り当て及び調整を行い、前記回路構成情報を生成する変換部とを有することを特徴とするデータ変換装置。
【請求項２】
前記変換部が、前記第２の生成部により得られたデータフローグラフに従って行う調整には、前記仮想回路のリソースに対するデータ入出力に係るタイミング調整、使用するリソースの配置調整、及びリソースに係る配線調整の少なくとも１つを含むことを特徴とする請求項１記載のデータ変換装置。
【請求項３】
前記変換部は、前記第２の生成部により得られたデータフローグラフに従って、前記仮想回路のリソースの割り当て及び調整を行った結果、前記動的に再構成可能な回路の制約を満たす場合には前記回路構成情報を生成することを特徴とする請求項１又は２記載のデータ変換装置。
【請求項４】
前記第２の生成部により得られたデータフローグラフに従って、前記仮想回路のリソースの割り当て及び調整を行った結果、前記動的に再構成可能な回路の制約を満たさない場合には、前記変換部が前記分割数を増加させ、前記分割数決定後の処理を再度行うことを特徴とする請求項３記載のデータ変換装置。
【請求項５】
前記分割数決定部は、前記動的に再構成可能な回路のリソースに応じて、前記分割数を決定することを特徴とする請求項１〜４の何れか１項に記載のデータ変換装置。
【請求項６】
前記分割数決定部は、外部から前記分割数の指定を受けた場合には、当該分割数に決定することを特徴とする請求項５記載のデータ変換装置。
【請求項７】
動的に再構成可能な回路に係る入力される回路記述を回路構成情報に変換するデータ変換方法であって、
前記回路記述からデータフローグラフを生成する第１の生成工程と、
前記第１の生成工程で生成されたデータフローグラフを分割する分割数を決定する分割数決定工程と、
前記動的に再構成可能な回路のリソースを前記分割数決定工程で決定された分割数倍分有する仮想回路を作成する仮想回路作成工程と、
前記回路記述から前記仮想回路作成工程で作成された仮想回路に対するデータフローグラフを生成する第２の生成工程と、
前記第２の生成工程で生成されたデータフローグラフに従って、前記仮想回路のリソースの割り当て及び調整を行い、前記回路構成情報を生成する変換工程とを有することを特徴とするデータ変換方法。
【請求項８】
入力される動的に再構成可能な回路に係る回路記述からデータフローグラフを生成する第１の生成ステップと、
前記第１の生成ステップにて生成されたデータフローグラフを分割する分割数を決定する分割数決定ステップと、
前記動的に再構成可能な回路のリソースを前記分割数決定ステップにて決定された分割数倍分有する仮想回路を作成する仮想回路作成ステップと、
前記回路記述から前記仮想回路作成ステップにて作成された仮想回路に対するデータフローグラフを生成する第２の生成ステップと、
前記第２の生成ステップにて生成されたデータフローグラフに従って、前記仮想回路のリソースの割り当て及び調整を行い、前記動的に再構成可能な回路の回路構成情報を生成する変換ステップとをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ変換装置、データ変換方法及びプログラムに関し、特に、動的再構成可能な回路に供給する回路構成情報の変換技術に関する。
【背景技術】
【０００２】
近年、ＬＳＩ等の半導体集積回路において、回路構成を動的に再構成し、用途に合わせて適宜切り替えることができる動的再構成可能な回路（以下、リコンフィグ回路）がある（特許文献１等参照）。リコンフィグ回路の実現方法の一つにマルチコンテキスト型がある。
【０００３】
マルチコンテキスト型のリコンフィグ回路は、ある機能を有する回路種（以下、プロセッシングエレメント（ＰＥ））を有する。そして、さまざまな種類のプロセッシングエレメントの動作と接続関係を規定した回路構成情報（以下、コンテキスト(面)）をＬＳＩ上に展開することで布線論理を実現し、コンテキストを時系列で切り替えることでハードウェア資源を仮想化しつつ動作する。
【０００４】
このようにして実現される機能回路は、コンテキストの単位と切替可能なコンテキスト数の制限の中で動作しなくてはならない。しかし、コンテキストを切り替える契機や各コンテキストに割り当てるプロセッシングエレメント数等の設定は性能や仮想化効率へ影響する。
【０００５】
あるコンテキスト上の機能回路が処理するデータは、レジスタファイルや内部メモリ（内部ＲＡＭ）等の記憶要素へ格納され、コンテキスト間でのデータ移動は記憶要素を介して行われる。したがって、あるコンテキストで実行するのは全体の機能回路のうち意味のある一つのタスクである必要はなく、単一の大きなタスクを時分割多重で実行するのにも用いられる。また、仮想化とは、例えば図１８のコンテキスト切替ではＣｏｎｔｅｘｔ＃０（１８００）とＣｏｎｔｅｘｔ＃１（１８０１）を交互に再構成しながら実行し、仮想的に図１９のような機能回路（あるいはタスク）１９００を実現していることをいう。
【０００６】
コンテキスト切替の制御は、各プロセッシングエレメントの動作の指定、プロセッシングエレメントの結線情報、何サイクル実行するかという切替の契機に関する制御あるいはコンテキストの実行終了を検出する機能など多岐に渡る。そのため、リコンフィグ回路は制御機構（以下、シーケンサ）を必要とし、シーケンサによりコンテキストに動的な要素を与えることができる。実行可能なコンテキスト面数はコンフィギュレーションメモリの分だけあり、コンフィギュレーションメモリがｎ面分の情報を持つとき、切替可能なコンテキスト数は最大ｎ面である。
【０００７】
【特許文献１】特開２００７−１８８５２８号公報
【特許文献２】特開２００６−４３４５号公報
【特許文献３】特開平１０−２５６３８３号公報
【特許文献４】特開２００２−１２３５６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
マルチコンテキスト型のリコンフィグ回路では、ｎ時分割多重をすると面積が１／ｎになる一方で、スループットも１／ｎになってしまう。しかし、分割前の回路ではすべての演算器が必ずしも常に動作しているとは限らない。したがって、演算器の利用効率を高めれば、性能低下を抑えることが可能である。また、そのような工夫を施すことで、現状のリコンフィグ回路においても効率よくパイプライン化動作を維持できる機構を整えつつある。
【０００９】
近年のリコンフィグ回路は、構成を高速で切り替えられ、かつコンテキスト間のデータの受け渡しのオーバーヘッドがなくなっているため、潜在的にパイプライン動作可能だと考えられる。ただし、どのような工夫を施せばパイプラインを維持したままリコンフィグ回路に最適な制御を与えられるかという方法については定まっておらず、現状ではタスク単位での切り替えやステートマシンの状態割り当てが適用されている。
【００１０】
タスク単位での切り替えは、実現したい機能回路からコンテキストへの分割が比較的容易であるが、ひとつのタスクの処理が終了するまでコンテキストを切り替えられず、連続する複数のタスク間でパイプラインを分断してしまう。ステートマシンの状態遷移に伴う切り替え方法は、Ｃ言語を始めとする高級言語による機能記述からの変換と親和性が高く、例えば状態遷移に伴う選択実行をコンテキスト切り替えで実現する方式がある。しかし、複数の状態が同時にパイプライン化動作できず、常に１状態の中でデータが処理される。このような分割方法においては、分割前の機能回路が本来パイプライン動作が可能な場合でも、逐次処理タスクや状態遷移機械へ変換されることが問題であった。
【００１１】
本発明は、分割前のパイプライン動作可能なデータフローグラフに対してパイプライン動作を維持するように分割を施し、マルチコンテキスト型のリコンフィグ回路の性能低下を抑制することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一観点によれば、動的に再構成可能な回路に係る回路記述からデータフローグラフを生成する第１の生成部と、第１の生成部で生成されたデータフローグラフを分割する分割数を決定する分割数決定部と、動的に再構成可能な回路のリソースを決定された分割数倍分有する仮想回路を作成する仮想回路作成部と、前記回路記述から作成された仮想回路に対するデータフローグラフを生成する第２の生成部と、第２の生成部により生成されたデータフローグラフに従って、仮想回路のリソースの割り当て及び調整を行い、回路構成情報を生成する変換部とを有するデータ変換装置が提供される。
前記構成によれば、動的に再構成可能な回路が実際に有するリソースを分割数倍有する仮想回路に対してデータフローグラフを生成し、それに基づいてリソースの割り当て及び調整を行うことで、リソースの使用効率を向上させることができる。
【発明の効果】
【００１３】
本発明によれば、パイプライン動作が可能なハードウェアに対してパイプラインを分断することなくコンテキスト切替を行うことで性能の低下を抑制することができる。さらには、元のデータフローグラフからコンテキスト切替に適したデータフローグラフへの自動変換装置によってユーザの負担を軽減することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施形態を図面に基づいて説明する。
【００１５】
本発明の一実施形態に係るデータ変換装置は、マルチコンテキスト型のリコンフィグ回路に供給する回路構成情報（コンテキスト）に関し、パイプライン化ハードウェアに対しパイプラインを維持したままコンテキスト切替によりハードウェアを仮想化しつつ、性能の低下を抑えるよう分割を施す。ここで、パイプライン化ハードウェアは、しばしばデータフローグラフ（ＤＦＧ）として表現される。以下では、実現される機能回路とデータフローグラフは同じものとして扱う。
【００１６】
コンテキスト切替でパイプラインを維持するには、煩雑な制御が必要とされる。そのような制御自体は、リコンフィグ回路に設けられたシーケンサによって実現されるものの、従来においては、その手順は開発者が与えなければならず、開発者にとって大きな負担となっている。データフローグラフに対してパイプラインを維持しつつ分割を施す際の要件には、次のようなものがある。
【００１７】
（１）コンテキスト間でプロセッシングエレメントの使いまわしを考える場合には、どのコンテキストでどの回路として振舞うかをスケジュールする必要がある。
（２）物理的なコンテキストに応じて、分割数と切替えサイクルを決めなくてはならない。
（３）調整なしに分割されたデータフローグラフは、そのままでは単一のコンテキストに収まらないこともあり、またそれぞれの使用ＰＥの偏りも生じる。そのため、分割数を変更するか、コンテキスト間での使用プロセッシングエレメント数を平均化するようにデータフローグラフに変更を加える必要がある。
（４）対象とするリコンフィグ回路や周辺アーキテクチャに依存する制御とのタイミング的な整合性を保つようスケジュールする、又はデータフローグラフを変更する必要がある。
（５）前記（１）〜（４）での操作や変更に伴って、データの合流（データ入力やデータ出力に係るタイミング）や依存関係（データの順序等）に不整合が生じないようにデータフローグラフのタイミング調整が必要になる。
【００１８】
上述した要件はリコンフィグ回路の最大面数とコンテキストあたりのプロセッシングエレメント数に依存しているが、仮想化効率と性能はトレードオフの関係であり、どのような方針で（１）〜（５）の要件を満たすようデータフローグラフを調整するかが重要である。
【００１９】
上述したように、現状のコンテキスト切替はタスク単位など大きな単位で切替を行っているため、切替の頻度は数サイクル〜数十サイクルに一度である。多重度はパイプラインのスループットと直接関連するので、本実施形態では、多重度をできるだけ下げて性能の低下を抑えるために、できるだけ少ないサイクルでコンテキストを切り替えるようにする。以下では、パイプライン維持を目的とし、上述した（１）〜（５）の要件を満たすような分割方法を細分化コンテキスト切替とも呼ぶ。また、分割された各コンテキストをサブコンテキストとも呼ぶ。
【００２０】
細分化コンテキスト切替が必要となるのは、リコンフィグ回路において一度に利用できる物理的なコンフィギュレーションに収まらない機能回路を動作させたい場合である。リコンフィグ回路に収まるかどうか、すなわち所望の機能回路をマッピング可能かどうかはリコンフィグ回路向けコンパイラによって判断される。本実施形態では、これらのツールを利用することで分割数を見積もったり分割数を変更したりする。
【００２１】
図１は、本発明の一実施形態に係るデータ変換装置を含むシステム構成例を示す図である。
【００２２】
図１において、本実施形態に係るデータ変換装置１０は、例えばパーソナル・コンピュータ、ワークステーション等である。データ変換装置１０は、リコンフィグ用コンパイラ及び細分化コンテキスト切替処理に係るプログラムを有し、ＲＴＬやＣ言語を用いて示される回路記述１１を基に、リコンフィグ回路３０で所望の機能回路を実現するための回路構成情報等を含む実行可能データ１２を生成する。
【００２３】
データ変換装置１０で生成された実行可能データは、ローダ２０を介してリコンフィグ回路３０に供給される。リコンフィグ回路３０は、コンフィギュレーションメモリ３１、シーケンサ３２、処理回路３３、及び内部メモリ（ＲＡＭ）／レジスタ３４を有する。
【００２４】
ローダ２０を介して入力されたコンテキスト（回路構成情報）は、コンフィギュレーションメモリ３１に格納される。シーケンサ３２は、コンフィギュレーションメモリ３１からコンテキスト（回路構成情報）を読み出して処理回路３３に供給する。そして、シーケンサ３２は、処理回路３３から実行終了した旨の通知を受けると、次のコンテキスト（回路構成情報）をコンフィギュレーションメモリ３１から読み出して処理回路３３に供給する。
【００２５】
処理回路３３は、複数のプロセッシングエレメントを有し、シーケンサ３２より供給されるコンテキスト（回路構成情報）に応じて、回路構成を動的に再構成する。内部メモリ／レジスタ３４は、あるコンテキスト上の機能回路が処理するデータを格納するものであり、コンテキスト間でのデータの移動は内部メモリ／レジスタ３４を用いて実現される。
【００２６】
図２は、本実施形態に係るデータ変換装置１０のハードウェア構成例を示す図である。
データ変換装置１０は、図２に示すように、ＣＰＵ２０１と、ＲＯＭ２０２と、ＲＡＭ２０３と、操作部（ＣＯＮＳ）２０９のコントローラ（ＣＯＮＳＣ）２０５と、表示部としてのディスプレイ（ＤＩＳＰ）２１０のディスプレイコントローラ（ＤＣＯＮＴ）２０６と、ハードディスク（ＨＤ）２１１及びフレキシブルディスク等の記憶デバイス（ＳＴＤ）２１２のコントローラ（ＤＣＯＮＴ）２０７と、ネットワークインタフェースカード（ＮＩＣ）２０８とが、システムバス２０４を介して互いに通信可能に接続された構成としている。
【００２７】
ＣＰＵ２０１は、ＲＯＭ２０２又はＨＤ２１１に記憶されたソフトウェア（プログラム）、又はＳＴＤ２１２より供給されるソフトウェア（プログラム）を実行することで、システムバス２０４に接続された各構成部を総括的に制御する。すなわち、ＣＰＵ２０１は、後述するような処理動作を行うための処理プログラムを、ＲＯＭ２０２、ＨＤ２１１、又はＳＴＤ２１２から読み出して実行することで、後述するデータ変換動作を実現するための制御を行う。ＲＡＭ２０３は、ＣＰＵ２０１の主メモリ又はワークエリア等として機能する。
【００２８】
ＣＯＮＳＣ２０５は、ＣＯＮＳ２０９や図示していないポインティングデバイス等からの指示入力を制御する。ＤＩＳＰＣ２０６は、ＤＩＳＰ２１０の表示を制御する。ＤＣＯＮＴ２０７は、ブートプログラム、種々のアプリケーション、ユーザファイル、ネットワーク管理プログラム、及び後述するデータ変換動作における処理プログラム等を記憶するＨＤ２１１及びＳＴＤ２１２とのアクセスを制御する。ＮＩＣ２０８はネットワーク２１３上の他の装置と双方向にデータをやりとりする。
【００２９】
図３は、本実施形態におけるデータ変換装置１０での処理動作例を示すフローチャートである。図３には、もっとも単純な細分化コンテキスト切替の処理手順を示している。以下、図３に示す各処理手順について説明する。
【００３０】
（論理コンパイル３０３及び物理コンパイル３０５）
例えば、Ｃ言語やＲＴＬ等によるユーザ高位設計記述のデータフローグラフへの変換は、既存のリコンフィグ回路向けコンパイラを利用可能である。
【００３１】
論理コンパイル３０３は、プロセッシングエレメントの数と配線ネットワークに制限がないと仮定して行うコンパイルであり、ユーザの設計記述３０１をターゲットとするリコンフィグ回路（ターゲットマシン）３０２のプロセッシングエレメント情報を用いた論理データフローグラフ３０４に変換する。したがって、論理データフローグラフ３０４は、リコンフィグ回路に係るアーキテクチャ依存が少ない、緩い制約でのハードウェア表現である。設計記述に記述ルール上のエラーがなければ論理コンパイル３０３により論理データフローグラフ３０４が生成される。
【００３２】
物理コンパイル３０５は、実際のリコンフィグ回路のプロセッシングエレメントの数や配線ネットワークの制限の上でユーザの設計記述を物理データフローグラフ３０７に変換する。物理データフローグラフ３０７は、リコンフィグ回路上での動作を表したハードウェア表現である。以下の処理手順の説明においては、論理コンパイル３０３及び物理コンパイル３０５は、公知のリコンフィグ回路向けコンパイラを利用するものとする。
【００３３】
（分割数計算：Ｓ１）
論理データフローグラフ３０４が物理的なコンテキストに収まらない場合には時分割多重化を行うがこのときデータフローグラフをいくつに分割するか、すなわちデータフローグラフを何面に折り畳むかを決めなければならない。例えば、論理データフローグラフ３０４が物理的なコンテキストの２倍のプロセッシングエレメントの使用を要求する場合には、少なくとも２面以上に折り畳まなくてはならない。設計記述３０１から後述の物理データフローグラフ３０５への変換では、回路の配置配線問題を含むため、分割数を多くとると解を得られる可能性が高まる。よって、例えば、分割数の計算は最低必要とされるプロセッシングエレメントのリソース数を満たす数以上になるように係数をかけて算出するか、又はユーザによって分割数を指定する方法をとってもよい。
【００３４】
分割数の計算手順の一例を図４に示す。
まず、ＣＰＵ２０１は、ユーザが分割数を指定するか否かを判断する（Ｓ２１）。その結果、ユーザが分割数を指定する場合には、ユーザ指定の数値を分割数として（Ｓ３１）、処理を終了する。
【００３５】
一方、ユーザが分割数を指定しない場合には、ＣＰＵ２０１は、変数ｉに１を代入する（Ｓ２２）。ここで、変数ｉは、１、２、…、ｍであり、ｍはプロセッシングエレメントの種類の総数である。
【００３６】
次に、ＣＰＵ２０１は、変数ｎに１を代入し（Ｓ２３）、続いて論理データフローグラフ３０４により要求されているプロセッシングエレメント数Ｕｉが、現実に使用可能な１コンテキストあたりのプロセッシングエレメント数Ｔｉに変数ｎを乗じた数以上であるか否かを判定する。その結果、プロセッシングエレメント数Ｕｉが、値Ｔｉ×ｎ以上の場合には、変数ｎの値を１インクリメントして（Ｓ２５）、ステップＳ２４に戻る。一方、プロセッシングエレメント数Ｕｉが、値Ｔｉ×ｎより小さい場合には、値Ｖｉとしてそのときの変数ｎの値を代入する（Ｓ２６）。
【００３７】
次に、ＣＰＵ２０１は、変数ｉが値ｍであるか否か、すなわちすべての種類のプロセッシングエレメントについて、値Ｖｉを求めたか否かを判断する（Ｓ２７）。そして、変数ｉが値ｍでない場合には、ＣＰＵ２０１は、変数ｉの値を１インクリメントして（Ｓ２８）、ステップＳ２３に戻り、すべての種類のプロセッシングエレメントについて値Ｖｉが求まるまで上述した処理を繰り返す。
【００３８】
ＣＰＵ２０１は、変数ｉが値ｍである、すなわちすべての種類のプロセッシングエレメントについて値Ｖｉを求めたと判断した場合には、値Ｖ１〜Ｖｍの中から最大値を求める（Ｓ２９）。さらに、ＣＰＵ２０１は、ステップＳ２９で求めた値に係数ｋをかけて分割数とし（Ｓ３０）、処理を終了する。ここで、係数ｋは、１以上の値であり、プロセッシングエレメントのリソース数に余裕を持たせるために乗じている。なお、係数ｋをかけることなく、ステップＳ２９で求めた値を分割数としてもよい。
【００３９】
（分割数判定：Ｓ２）
分割数計算Ｓ１で得られた分割数が、コンテキスト切替可能面数以下であるか（コンテキストをコンフィギュレーションメモリに格納可能であるか）を判定する。その結果、分割数計算Ｓ１で得られた分割数がコンテキスト切替可能面数より大きい場合には、物理的に収まらないのでエラー処理Ｓ１４を行い、処理を終了する。
【００４０】
（ループ周期計算：Ｓ３）
論理データフローグラフ３０４にループバックがある場合には、データフローグラフの合流点とそのときのサブコンテキスト（以下、合流面）を一致させなくてはならない。そのため、分割数とコンテキスト実行サイクルは、パイプラインループの実行周期に依存する。そこで、ループ周期計算では、合流面を一致させるようにサブコンテキストの実行周期を決定する。
【００４１】
なお、周期の決め方は数多く考えられるが、以下に算出方法の例を示す。なお、以下に示す例は、一例であり、これに限定されるものではない。
【００４２】
（１）多重ループが一つのみ、あるいは全てのパイプラインループの周期が同一の場合
（１−ａ）分割数がパイプラインループの周期の約数の場合
１サイクル毎にコンテキストを切替える。折り畳みサイクル（全てのサブコンテキストを一巡するのに掛かるサイクル数）は分割数と同じとする。例えば、パイプラインループの周期が８サイクルで、分割数が４の場合には、折り畳みサイクルは４となる。
（１−ｂ）分割数がパイプラインループの周期の１より大きい約数よりも少ない場合
パイプラインループの周期の約数のうち最小の数、ただし分割数より大きい数とする。例えば、パイプラインループの周期が８サイクルで、分割数が３の場合には、折り畳みサイクルは４となる。このとき、３サブコンテキスト中どれか１つは２サイクル実行されることになる。このようにサブコンテキスト毎に実行時間を調整する場合もある。
（１−ｃ）分割数がパイプラインループの周期よりも多い場合
パイプラインループの周期を分割数に合わせた上で、１サイクル毎にコンテキストを切替える。例えば、分割数が７の場合には、パイプラインループの周期が６サイクル以下であっても７サイクルになるように調整を施す。
【００４３】
（２）全てのパイプラインループの周期の最大公約数が１より大きい場合
（２−ａ）分割数が公約数の場合
１サイクル毎にコンテキストを切替える。後は、（１−ａ）と同様である。
（２−ｂ）分割数が１より大きい公約数よりも少ない場合
分割数より大きなものの中で最小の公約数を折り畳みサイクルとする。後は、（１−ａ）と同様である。
（２−ｃ）それ以外
一番周期の長いループに他のループの周期を合わせる。後は、（１）の処理を行う。
【００４４】
（３）それ以外
一番周期の長いループに他のループの周期を合わせる。後は、（１）を適用する。
【００４５】
なお、ユーザがパイプラインループの周期を指定することも可能であり、実際にその周期でスケジュール可能な場合には、その周期を調整前のパイプラインループの周期として採用しても良い。例えば、（３）の場合にユーザが分割数の指定とパイプラインループの周期の指定を行うことで、（２−ａ）又は（２−ｂ）の場合に変更することができ、ある程度パフォーマンスを制御することができる。
【００４６】
（仮想ターゲットマシン（仮想ＴＭ）作成：Ｓ４）
ターゲットマシンは、ターゲットとするリコンフィグ回路のアーキテクチャ情報のことで、主に動的再構成に必要な情報を含む。仮想ターゲットマシン３０６はプロセッシングエレメントやその配線（ネットワーク）を細分化コンテキスト切替によって期待される仮想的に大きな空間として定義したターゲットマシンであり、物理的なターゲットマシンと分割数から算出する。単純には、分割数倍の仮想ターゲットマシンが得られる。
【００４７】
仮想ターゲットマシンを作成する場合、仮想化できるプロセッシングエレメントとそうでないプロセッシングエレメントを分けて計算しなくてはならない。例えば、サブコンテキスト間で使いまわすような演算器については仮想化が可能であるが、複数コンテキストに渡って値を維持するレジスタやＲＡＭについては仮想化することはできない。
【００４８】
（物理データフローグラフ変換（物理コンパイル）：３０５）
物理データフローグラフ変換では仮想ターゲットマシン３０６に対して動作するデータフローグラフを生成する（仮想ターゲットマシン３０６を用いてコンパイルするとも言う）。物理データフローグラフ変換では、論理データフローグラフ変換と違い、配置配線を行うために、配置配線が完了しない、すなわち解が得られないことがある。その場合には、分割数を増やしてさらに大きな仮想ターゲットマシンを作成して物理コンパイル３０５を行えば解が得られやすくなる。
【００４９】
（ＰＥ動作サイクル割り当て：Ｓ５）
プロセッシングエレメント（ＰＥ）サイクル割り当ては、プロセッシングエレメントの動作サイクルのスケジューリング、すなわち物理データフローグラフ３０７の個々のプロセッシングエレメントに対し、どのサブコンテキストで実行されるかを指定するものである。これは先に決定した分割数と切替周期から一意に決定する。
【００５０】
（合流面調整：Ｓ６）
動作サイクルが割り当てられた物理データフローグラフを見ると、合流点でサイクルが一致しない、つまりデータの入出力タイミングに不整合が生じることがある。これを調整するために遅延などを挿入し調整する。
【００５１】
（ＰＥ調整：Ｓ７）
サブコンテキストは、現実のターゲットマシン（実ターゲットマシン）のプロセッシングエレメントのリソースしか使用できないため、ＰＥ動作サイクル割り当てＳ５の結果、プロセッシングエレメントが足りなくなるサブコンテキストが発生する場合がある。これは、使用プロセッシングエレメントがコンテキスト間で偏ってしまった結果である。この場合にも、遅延を挿入することで別のサブコンテキストへプロセッシングエレメントを移動させることができるので、遅延によって調整を行う。
【００５２】
（配線調整及び判定：Ｓ８、Ｓ９、Ｓ１３）
上述した調整によって、もとの物理データフローグラフに変更が加えられたこととなるので、それに伴い、配線等の調整も必要となってくる（Ｓ８）。合流面調整、ＰＥ調整、配線調整によって改めてハードウェア制約を満足しているか判定し（Ｓ９）、制約を満たさなかった場合には、仮想ターゲットマシンを大きくとる（分割数を増加させる）（Ｓ１３）などして再コンパイルする。
【００５３】
（ＰＥリセット動作設定、シーケンサ設定、アセンブラ生成：Ｓ１０、Ｓ１１、Ｓ１２）
ＰＥリセット動作設定では、サブコンテキストで使用していないプロセッシングエレメントは誤動作がないようにリセット状態に設定する。
シーケンサ設定では、上述のように各種調整を施したデータフローグラフとＰＥリセット設定をシーケンサの制御として設定する。すなわち、ハードウェアが実現するときに、どの部分で情報を書き込むかを設定する。
アセンブラ生成では、シーケンサ設定をリコンフィグ回路用のアセンブラが解釈可能なアセンブリ言語へと変換する。
【００５４】
本実施形態によれば、実ターゲットマシンに対して分割数倍の仮想ターゲットマシンを用いて物理コンパイルを行い、その後、合流面調整、ＰＥ調整、配線調整を行うことによって、所望の機能回路構成を実現する場合のプロセッシングエレメント等の使用効率を向上させることができる。また、データ変換装置を用いて、コンテキスト切替に適したデータフローグラフへの変換を自動的に行うことでユーザの負担を軽減することができる。
【００５５】
本実施形態におけるデータ変換の一例を示す。以下では、データフローグラフにループバックがない場合と、ループバックがある場合とについてそれぞれ説明する。
【００５６】
（ループバックを持たない例）
あるリコンフィグ回路が図５に示すプロセッシングエレメント５０１、５０２、５０３、５０４、５０５からなる実ターゲットマシン５００をひとつのコンテキストとして持つと想定する。図５（Ａ）に示すプロセッシングエレメント５０１〜５０５はすべて１サイクルで処理結果を出力するものとし、特にＤｅｌａｙと表記したものは１サイクル遅延させる１入力１出力のプロセッシングエレメントとする。図５（Ｂ）に示す実ターゲットマシン５００は図５（Ａ）に示す各種プロセッシングエレメント５０１〜５０５を一つずつ搭載していることを表している。
【００５７】
ここで、図６に示すプロセッシングエレメント６０１〜６０９からなる論理データフローグラフ６００をリコンフィグ回路上で動作させることを考える。論理データフローグラフ６００の回路規模は、実ターゲットマシン５００より大きいので、コンテキスト切替で論理データフローグラフ６００を複数コンテキストに分割しなければならない。
【００５８】
論理データフローグラフ６００で最も多く使用されているプロセッシングエレメント（ＰＥ２）に注目すると、少なくとも実ターゲットマシンの４倍のターゲットマシンが必要となる。そこで、本例では、図７に示すような実ターゲットマシン５００の４倍に相当する仮想ターゲットマシン７００を想定する。すなわち、分割数は４、コンテキストは４面分使用される。また、物理コンパイルによって図７に示す仮想ターゲットマシン７００上で図６のデータフローグラフが実現可能であることが保証されているとする。
【００５９】
次に、ＰＥ動作サイクル割り当てを行う。図６に示すデータフローグラフ６００で使用されるプロセッシングエレメントは全て１サイクルで演算が終了し、ループバックもないので、このパイプラインハードウェアは毎サイクルデータ入力が可能である。したがって、コンテキスト切替も毎サイクル切り替えることとする。分割数４、切替サイクルが毎サイクルの場合には、ＰＥ動作サイクルは図８に示すように割り当てられる。
【００６０】
ただし、コンテキスト番号は０から始まるとする。また、コンテキストの切替制御は、コンテキスト番号０から始めて、コンテキスト番号３まで達したらコンテキスト番号０へ戻るように循環することを前提とする。
【００６１】
動作サイクル周期が決まったら、データフローグラフの先頭から順にどのコンテキストで実行させるか割り当てていく。図７に示した仮想ターゲットマシン７００を４つのコンテキストに分けて、図８に示す実行サイクルとコンテキスト番号の通りに割り振ると、図９に示すようになる。
【００６２】
コンテキスト番号０では、実行サイクル１で動作するＰＥ１（９０１−０）、ＰＥ２（９０２−０）と、実行サイクル５で動作するＰＥ１（６０７）が置かれるが、コンテキスト番号０ではＰＥ１は一つしか置けないため、実行サイクル５で動作するＰＥ１（６０７）をコンテキストに収まらないプロセッシングエレメントとする。逆に、ＰＥ３（９０３−０）、ＰＥ４（９０４−０）、Ｄｅｌａｙ（９０５−０）に関してはコンテキスト番号０では使用されないため、未使用のプロセッシングエレメントとする。
【００６３】
同様に、コンテキスト番号１においても２つのＰＥ２（６０８、６０９）が収まらない状態で、ＰＥ１（９０１−１）、ＰＥ４（９０４−１）、Ｄｅｌａｙ（９０５−１）が未使用である。
【００６４】
次に、合流面について考えると、ＰＥ３、ＰＥ４のような入力について合流を持つプロセッシングエレメントに注目し、その入力タイミングが揃っているかチェックする。本例ではサイクル間のずれはみられないので調整は不要である。
【００６５】
次に、ＰＥ調整を行う。図９に示したコンテキスト番号０では１つのＰＥ１（６０７）が足りないが、コンテキスト番号１ではＰＥ１（９０１−１）は未使用となっている。そこで、コンテキスト番号１にコンテキスト番号０のコンテキストに収まらないＰＥ１（６０７）を移動させることで使用率を上げる（図１０）。そのために、図１０に示すように、Ｄｅｌａｙ（９０５−０）を用いてＰＥ調整用遅延を挿入する。それに伴い、後段のプロセッシングエレメントもずれることになるので続けて後段のプロセッシングエレメントに対して調整を施す。本例では、図１１に示すように、Ｄｅｌａｙ（９０５−０）、Ｄｅｌａｙ（９０５−２）の２箇所の遅延挿入でコンテキストに収まらないプロセッシングエレメントはなくなる。ところが、この調整によって２つの出力ｏｕｔ０、ｏｕｔ１の出力タイミングがずれるので、さらに出力タイミングを合わせるためにＤｅｌａｙ（９０５−３）を用いた調整遅延を挿入する。
【００６６】
次に、配線調整を行う。図１１に示すようにコンテキスト間を接続している配線は配線ネットワークの構成によっては制限があり、先のＰＥ調整同様に配線リソースが不足する場合がある。しかし、これも遅延の挿入によって調整可能であるため、ここでは省略し、配線リソースは足りているものとする。
なお、ここまでの調整では遅延にＤｅｌａｙを用いるが、これが足りなくなり調整ができなくなった場合には分割数を増やして仮想ターゲットマシンを再度作り直せばよい。
【００６７】
以上の調整によって、図１２に示すようなプロセッシングエレメント６０１〜６０９及び遅延調整のＤｅｌａｙ１２０１〜１２０３からなるコンテキスト切替可能なデータフローグラフ６００Ａが得られた。結果的には遅延挿入によって図６に示したデータフローグラフ６００を図１２に示すデータフローグラフ６００Ａへ変換したことになる。図１２に示すものでは、コンテキスト切替によって４サイクルに一度データを投入することができる。
【００６８】
次に、ＰＥリセット動作設定を行う。図１１に示した各未使用のプロセッシングエレメント９０１−２、９０１−３、９０３−０、９０３−２、９０４−０、９０４−１、９０４−３、９０５−１については別サイクルで動作していたＰＥの設定を引き継がないようにリセットをかける設定にしておく。
最後に上述したすべての動作設定をシーケンサに設定するようなアセンブラを生成する。
【００６９】
（ループバックがある例）
プロセッシングエレメントの種類は、上述したループバックがない例と同様とする。以下の例では、実ターゲットマシンを図１３（Ａ）に示すように２個のＰＥ１（１３０１、１３０２）、１個のＰＥ２（１３０３）、２個のＰＥ３（１３０４、１３０５）、１個のＰＥ４（１３０６）、３個のＤｅｌａｙ（１３０７、１３０８、１３０９）からなる実ターゲットマシン１３００とする。なお、Ｄｅｌａｙ（１３０７、１３０８、１３０９）は図の上では重ねて表示してある。
【００７０】
ここで、図１４に示すようなプロセッシングエレメント１４０１〜１４０９からなる論理データフローグラフ１４００を考え、これに細分化コンテキスト切替を施す。使用するプロセッシングエレメント数を実ターゲットマシンと比べると、実ターゲットマシン１３００の２倍のプロセッシングエレメントを必要とするので、図１３（Ｂ）に示す仮想ターゲットマシン１３１０を用意する。すなわち、分割数は２である。
【００７１】
次に、ループ周期を計算する。図１４に示す論理データフローグラフ１４００では、ループの周期が５サイクルであるので、このデータフローグラフにデータを入力できるのは５サイクルに１回である。分割数２、ループ周期５サイクルのとき、２面のコンテキストをそれぞれ２サイクルと３サイクルに分けて実行するとループ周期と一致する。すでに図１４ではコンテキストの割り振りがなされているが、これはコンテキスト番号０（Ｃｏｎｔｅｘｔ＃０）を２サイクル実行、コンテキスト番号１（Ｃｏｎｔｅｘｔ＃１）を３サイクル実行する場合の例である。
【００７２】
図１４に基づいて、各コンテキストに使用するプロセッシングエレメントを割り振ったものを図１５に示す。図１５においては、Ｃｏｎｔｅｘｔ＃０ではＰＥ２（１５１０）がコンテキストに収まらないが、Ｃｏｎｔｅｘｔ＃１ではＰＥ２（１５０３−１）があまっている。そこで、Ｄｅｌａｙを挿入してＰＥ２（１５１０）をＣｏｎｔｅｘｔ＃１へ割り振るようにする。ここで、移動させるプロセッシングエレメントは、Ｄｅｌａｙ挿入によって影響を受ける後段のフローを減らすために、出力側のプロセッシングエレメントであるほうが望ましい。
【００７３】
図１６は、上述した調整後のデータフローグラフであり、２つのＤｅｌａｙ（１５０７−０、１５０８−０）が使われている。さらに出力タイミングを合わせるため、図１７に示すように出力ｏｕｔ１に対して２つのＤｅｌａｙ（１５０９−０、１５０７−１）を挿入する。ＰＥリセット動作以降の処理はループバックを持たない場合の例と同様であるので、説明は省略する。
【００７４】
なお、上述したデータ変換に係る処理動作は、例えばコンピュータのＣＰＵ又はＭＰＵ、ＲＡＭ、ＲＯＭなどで構成できるものであり、ＲＡＭやＲＯＭに記憶されたプログラムが動作することによって実現でき、前記プログラムは本発明の実施形態に含まれる。また、コンピュータが前記機能を果たすように動作させるプログラムを、例えばＣＤ−ＲＯＭのような記録媒体に記録し、コンピュータに読み込ませることによって実現できるものであり、前記プログラムを記録した記録媒体は本発明の実施形態に含まれる。前記プログラムを記録する記録媒体としては、ＣＤ−ＲＯＭ以外に、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、不揮発性メモリカード等を用いることができる。
また、コンピュータがプログラムを実行し処理を行うことにより、前記実施形態の機能が実現されるプログラムプロダクトは、本発明の実施形態に含まれる。前記プログラムプロダクトとしては、前記実施形態の機能を実現するプログラム自体、前記プログラムが読み込まれたコンピュータ、ネットワークを介して通信可能に接続されたコンピュータに前記プログラムを提供可能な送信装置、及び当該送信装置を備えるネットワークシステム等がある。
また、コンピュータが供給されたプログラムを実行することにより前記実施形態の機能が実現されるだけでなく、そのプログラムがコンピュータにおいて稼働しているＯＳ（オペレーティングシステム）又は他のアプリケーションソフト等と共同して前記実施形態の機能が実現される場合や、供給されたプログラムの処理の全て又は一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて前記実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。また、本発明をネットワーク環境で利用するべく、全部又は一部のプログラムが他のコンピュータで実行されるようになっていても良い。
【００７５】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【００７６】
【図１】本発明の一実施形態に係るデータ変換装置を含むシステム構成例を示す図である。
【図２】本実施形態に係るデータ変換装置のハードウェア構成例を示す図である。
【図３】本実施形態におけるデータ変換装置での処理動作例を示すフローチャートである。
【図４】本実施形態における分割数の計算手順の一例を示すフローチャートである。
【図５】本実施形態における実ターゲットマシンの一例を示す図である。
【図６】本実施形態におけるデータ変換の一例を説明するためのデータフローグラフを示す図である。
【図７】本実施形態における仮想ターゲットマシンの一例を示す図である。
【図８】本実施形態におけるデータ変換の一例を説明するための図である。
【図９】本実施形態におけるデータ変換の一例を説明するための図である。
【図１０】本実施形態におけるデータ変換の一例を説明するための図である。
【図１１】本実施形態におけるデータ変換の一例を説明するための図である。
【図１２】本実施形態におけるデータ変換の一例を説明するためのデータフローグラフを示す図である。
【図１３】本実施形態における実ターゲットマシン及び仮想ターゲットマシンの他の例を示す図である。
【図１４】本実施形態におけるデータ変換の他の例を説明するためのデータフローグラフを示す図である。
【図１５】本実施形態におけるデータ変換の他の例を説明するための図である。
【図１６】本実施形態におけるデータ変換の他の例を説明するための図である。
【図１７】本実施形態におけるデータ変換の他の例を説明するための図である。
【図１８】従来のコンテキスト切替を説明するための図である。
【図１９】図１８に示したコンテキスト切替により実現される機能回路を示す図である。
【符号の説明】
【００７７】
１０  データ変換装置
２０  ローダ
３０  リコンフィグ回路
３１  コンフィギュレーションメモリ
３２  シーケンサ
３３  処理回路
３４  内部メモリ／レジスタ
２０１  ＣＰＵ
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  システムバス
２０５  コントローラ（ＣＯＮＳＣ）
２０６  ディスプレイコントローラ（ＤＣＯＮＴ）
２０７  コントローラ（ＤＣＯＮＴ）
２０８  ネットワークインタフェースカード
２０９  操作部
２１０  ディスプレイ
２１１  ハードディスク
２１２  記憶デバイス
２１３  外部ネットワーク
３０１  ユーザ高位設計記述
３０２  ターゲットマシン（ＴＭ）
３０３  論理コンパイル
３０４  論理データフローグラフ（ＤＦＧ）
３０５  物理コンパイル
３０６  仮想ターゲットマシン（ＴＭ）
３０７  物理データフローグラフ（ＤＦＧ）
５００  プロセッシングエレメント（ＰＥ１〜ＰＥ５）からなる実ターゲットマシン
５０１  プロセッシングエレメント（ＰＥ１）
５０２  プロセッシングエレメント（ＰＥ２）
５０３  プロセッシングエレメント（ＰＥ３）
５０４  プロセッシングエレメント（ＰＥ４）
５０５  プロセッシングエレメント（Ｄｅｌａｙ）
６００  論理データフローグラフ（ＤＦＧ）
７００  仮想ターゲットマシン（ＴＭ）
９１０  コンテキストに収まらないプロセッシングエレメント
６００Ａ  細分化コンテキスト切替適用後のデータフローグラフ（ＤＦＧ）
１３００  実ターゲットマシン（ＴＭ）
１３１０  仮想ターゲットマシン（ＴＭ）
１４００  論理データフローグラフ（ＤＦＧ）
１８００  Ｃｏｎｔｅｘｔ  ＃０のコンテキスト
１８０１  Ｃｏｎｔｅｘｔ  ＃１のコンテキスト
１９００  データフローグラフ
【図１】
2010026806.tif 000003
【図２】
2010026806.tif 000004
【図３】
2010026806.tif 000005
【図４】
2010026806.tif 000006
【図５】
2010026806.tif 000007
【図６】
2010026806.tif 000008
【図７】
2010026806.tif 000009
【図８】
2010026806.tif 000010
【図９】
2010026806.tif 000011
【図１０】
2010026806.tif 000012
【図１１】
2010026806.tif 000013
【図１２】
2010026806.tif 000014
【図１３】
2010026806.tif 000015
【図１４】
2010026806.tif 000016
【図１５】
2010026806.tif 000017
【図１６】
2010026806.tif 000018
【図１７】
2010026806.tif 000019
【図１８】
2010026806.tif 000020
【図１９】
2010026806.tif 000021