JP4601567B2 - データフローグラフの生成方法、及び処理装置 - Google Patents

データフローグラフの生成方法、及び処理装置 Download PDF

Info

Publication number
JP4601567B2
JP4601567B2 JP2006063742A JP2006063742A JP4601567B2 JP 4601567 B2 JP4601567 B2 JP 4601567B2 JP 2006063742 A JP2006063742 A JP 2006063742A JP 2006063742 A JP2006063742 A JP 2006063742A JP 4601567 B2 JP4601567 B2 JP 4601567B2
Authority
JP
Japan
Prior art keywords
data flow
function
flow graph
library
dfg
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2006063742A
Other languages
English (en)
Other versions
JP2007241695A (ja
Inventor
誠 岡田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sanyo Electric Co Ltd
Original Assignee
Sanyo Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sanyo Electric Co Ltd filed Critical Sanyo Electric Co Ltd
Priority to JP2006063742A priority Critical patent/JP4601567B2/ja
Publication of JP2007241695A publication Critical patent/JP2007241695A/ja
Application granted granted Critical
Publication of JP4601567B2 publication Critical patent/JP4601567B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Microcomputers (AREA)

Description

本発明は、リコンフィギュラブル回路にマッピングするデータフローグラフの生成方法、及びデータフローグラフを用いるリコンフィギュラブル回路を備える処理装置に関する。
最近、携帯電話、GPS、VICSなど、無線通信が広く普及し、無線機の種類も増えている。これらの無線機またはその機能をすべてハードウエアで実装すると、コストや実装面積が嵩む。そこで、ハードウエアとしては汎用的な能力を有する回路を搭載しておき、それにロードするソフトウエアを切り替えることで多様な機能を実現する「ソフトウエア無線機」という考え方がある。
ソフトウエア無線機を実現する回路として、FPGA(Field Programmable Gate Array)やDSP(Digital Signal Processor)がある。特許文献1には、FPGAを動的に
再構成することで、回路構成の再利用を図る方法が提案されている。動的変更が可能なタイプの回路を以下リコンフィギュラブル回路という。
FPGAはLSI製造後に回路データを書き込んで比較的自由に回路構成を設計することが可能であり、専用ハードウェアの設計に利用されている。FPGAは、論理回路の真理値表を格納するためのルックアップテーブル(LUT)と出力用のフリップフロップからなる基本セルと、その基本セル間を結ぶプログラマブルな配線リソースとを含む。FPGAでは、LUTに格納するデータと配線データを書き込むことで目的とする論理演算を実現できる。しかし、FPGAでLSIを設計した場合、ASIC(Application Specific IC)による設計と比べると、実装面積が非常に大きくなり、コスト高になる。そこで
、FPGAを動的に構成することによって、回路構成の再利用を計る方法が提案されている(例えば、特許文献1参照)。
回路規模を削減したリコンフィギュラブル回路として、例えば、特許文献2の技術がある。特許文献2のリコンフィギュラブル回路は、機能の変更が可能な複数のALUを備える。複数のALUはマトリックス状に配置され、ALUの各段の間には、ALUの接続を選択的に確立可能な少なくとも1つの接続部が設けられている。この接続部は、上下段における全ての論理回路同士を接続可能とするものではなく、論理回路が、別の段に属する一部の論理回路のみと接続可能であるように構成される。
リコンフィギュラブル回路の動作設定に必要なデータフローグラフ(DFG)を処理する技術として、例えば特許文献3の技術がある。
特許文献3のデータフローグラフ処理方法は、生成した1以上のDFGを、リコンフィギュラブル回路の集合体内の論理回路の数に応じて複数のサブDFGに分割する。リコンフィギュラブル回路が多段接続構造を有する場合、サブDFGの列数は、リコンフィギュラブル回路の1段あたりの論理回路の個数以下となるように設定される。続いて、サブDFGを結合して、結合DFGを生成する。結合DFGの列数も、リコンフィギュラブル回路の1段あたりの論理回路の個数以下となるように設定される。この結合DFGを、リコンフィギュラブル回路の段数以下となるように再分割し、リコンフィギュラブル回路にマッピング可能なサブ結合DFGを生成する。
特開平10−256383号公報 特開2005−182654号公報 特開2006−4345号公報
例えば衛星放送では、季節などにより、放送モードを切り替えて画質の調整などを行うことがある。衛星放送受信機では、放送モードごとに複数の回路を予めハードウェア上に作り込んでおき、放送モードに合わせて選択器で回路を切り替えて受信している。従って、受信機の他の放送モード用の回路はその間遊んでいることになる。モード切替のように、複数の専用回路を切り替えて使用し、その切替間隔が比較的長い場合、複数の専用回路を作り込む代わりに、切替時にLSIを瞬時に再構成することにすれば、回路構造を簡単にして汎用性を高め同時に実装コストを抑えることができる。このようなニーズに応えるべく、動的に再構成可能なLSIに製造業界の関心が高まってきている。特に、携帯電話やPDA(Personal Digital Assistant)などのモバイル端末に搭載されるLSIは小型化が必要であり、LSIを動的に再構成し、用途に合わせて適宜機能を切り替えることができれば、LSIの実装面積を小さく抑えることができる。
FPGAは回路構成の設計自由度が高く、汎用的である反面、全ての基本セル間の接続を可能とするため、多数のスイッチとスイッチのON/OFFを制御するための制御回路を含む必要があり、必然的に制御回路の実装面積が大きくなる。また、基本セル間の接続に複雑な配線パターンをとるため、配線が長くなる傾向がある。さらに1本の配線に多くのスイッチが接続される構造であるため、遅延が大きくなる。そのため、FPGAによるLSIは、試作や実験のために利用されるにとどまることが多く、実装効率、性能コストなどを考えると、量産には適していない。さらに、FPGAによるLSIでは、多数のLUT方式の基本セルに設定データを送る必要があるため、回路のコンフィギュレーションにはかなりの時間を要する。そのため、瞬時に回路構成の切替が必要な用途にはFPGAによるLSIは適していない。
それらの課題を解決するため、近年、ALU(Arithmetic Logic Unit)と呼ばれる基
本演算機能を複数有する多機能素子を用いたリコンフィギュラブルプロセッサの開発が進められている。リコンフィギュラブルプロセッサでは、コマンドデータが設定されることにより、ALU回路の演算機能構成と接続部が制御され、全体として所期の演算処理回路を実現することが可能となる。コマンドデータは、一般にC言語等の高級プログラム言語で記述されたソースプログラムからDFG(Data Flow Graph)と呼ばれるデータフロー
を作成し、その情報をもとに作成される。
特許文献2は、演算手段間の構成を格段構成とし、しかも一つの演算手段の出力は下段の制限された演算手段にしか接続されない、いわゆる接続制限されたリコンフィギュラブル回路と、接続制限されたリコンフィギュラブル回路への機能のマッピング方法が記載されている。特許文献2の技術では、マッピング時に使用する演算手段を順次探す手法を採るために、マッピング処理に時間がかかるという不都合があった。また、マッピング処理は必ずしも最適なマッピングを行うとは限らなかった。
本発明はこうした状況に鑑みてなされたものであり、回路規模の縮小化と処理時間の短縮化等に貢献する、リコンフィギュラブル回路へのマッピング処理方法を提供することを目的とする。
上記目的を達成するため、本発明の第1の観点に係るリコンフィギュラブル回路にマッピングするデータフローグラフの生成方法は、それぞれが複数の算術論理演算機能を選択的に実行可能な複数の論理回路から構成される演算部と、前記複数の論理回路の間の接続
関係を保持する接続部と、を備えるリコンフィギュラブル回路に、所期の処理機能の動作を設定するために必要なデータフローグラフを生成するデータフローグラフ生成方法であって、前記リコンフィギュラブル回路に所定の関数の動作を行わせる少なくとも1つのデータフローグラフを登録したライブラリに登録された前記関数を、前記所期の処理機能の動作を記述したソースプログラムから抽出する登録関数抽出ステップと、前記ソースプログラムの前記ライブラリに登録された関数以外の処理を前記データフローグラフに変換する変換ステップと、前記登録関数抽出ステップで抽出された関数のデータフローグラフを、前記ライブラリから読み出すライブラリ読み出しステップと、前記変換ステップで変換したデータフローグラフと、前記ライブラリ読み出しステップで読み出したデータフローグラフとを結合して、前記リコンフィギュラブル回路に前記所期の処理機能の動作を設定するために必要なデータフローグラフを生成する結合ステップと、を備えることを特徴とする。
さらに、前記結合ステップで生成するデータフローグラフが、所定の評価基準に照らして最適となるように、前記変換ステップで変換したデータフローグラフと前記ライブラリ読み出しステップで読み出したデータフローグラフとの配置を、前記リコンフィギュラブル回路の範囲内で調節する最適化ステップを備える、ことを特徴とする。
なお、前記ライブラリは、少なくとも1つの関数について、該関数に対応する異なる形態の複数のデータフローグラフを含み、前記登録関数抽出ステップで抽出された関数について、前記ライブラリに異なる形態の複数のデータフローグラフが登録されている場合に、前記ライブラリ読み出しステップは、前記異なる形態の複数のデータフローグラフを読み出し、前記異なる形態の複数のデータフローグラフから、前記結合ステップで生成するデータフローグラフが、所定の評価基準に照らして最適となるデータグラフを選択する選択ステップを備える、ことを特徴とする。
特に、前記リコンフィギュラブル回路が、前記論理回路の1以上の列からなる段を1つ以上備える接続構造を有する場合に、前記所定の評価基準は、前記リコンフィギュラブル回路の列数の範囲で、前記論理回路の段数が最小であることを特徴とする。
本発明の第2の観点に係る処理装置は、それぞれが複数の算術論理演算機能を選択的に実行可能な複数の論理回路から構成される演算部と、前記複数の論理回路の間の接続関係を保持する接続部と、を備えるリコンフィギュラブル回路と、前記リコンフィギュラブル回路に、所期の処理機能の動作を設定するために必要なデータフローグラフを生成するデータフローグラフ生成手段と、前記データフローグラフ生成手段で生成したデータフローグラフに基づいて、前記リコンフィギュラブル回路に前記所期の処理機能の動作を行う回路を構成するための設定データを生成する設定データ生成手段と、を含む処理装置であって、前記データフローグラフ生成手段は、前記リコンフィギュラブル回路に所定の関数の動作を行わせる少なくとも1つのデータフローグラフを登録したライブラリに登録された前記関数を、前記所期の処理機能の動作を記述したソースプログラムから抽出する登録関数抽出ステップと、前記ソースプログラムの前記ライブラリに登録された関数以外の処理を前記データフローグラフに変換する変換ステップと、前記登録関数抽出ステップで抽出された関数のデータフローグラフを、前記ライブラリから読み出すライブラリ読み出しステップと、前記変換ステップで変換したデータフローグラフと、前記ライブラリ読み出しステップで読み出したデータフローグラフとを結合して、前記リコンフィギュラブル回路に前記所期の処理機能の動作を設定するために必要なデータフローグラフを生成する結合ステップと、によって前記データフローグラフを生成することを特徴とする。
本発明に係るリコンフィギュラブル回路への演算マッピング方法と、リコンフィギュラ
ブル回路の一実施の形態について、図を参照して説明する。図1は、本発明の一実施の形態に係るリコンフィギュラブル回路を含む処理装置の構成を示すブロック図である。図1に示すように、処理装置10は、集積回路装置26を備える。集積回路装置26は、回路構成を再構成可能とする機能を有する。集積回路装置26は1チップとして構成され、リコンフィギュラブル回路1、設定部14、制御部18、内部状態保持回路20、出力回路22および経路部24を備える。リコンフィギュラブル回路1は、設定を変更することにより、機能の変更を可能とする。
設定部14は、第1設定部14a、第2設定部14b、第3設定部14c、第4設定部14dおよび選択器16を有し、リコンフィギュラブル回路1に所期の回路を構成するための設定データ40を供給する。経路部24は、フィードバックパスとして機能し、リコンフィギュラブル回路1の出力を、リコンフィギュラブル回路1の入力に接続する。内部状態保持回路20および出力回路22は、例えばデータフリップフロップ(D−FF)などの順序回路あるいはメモリで構成され、リコンフィギュラブル回路1の出力を受ける。内部状態保持回路20は経路部24に接続されている。リコンフィギュラブル回路1は組合せ回路、またはD−FFのような状態保持を含む順序回路として構成される。
図2は、ALUアレイを用いたリコンフィギュラブル回路1の構成例を示す図である。図2に示すように、リコンフィギュラブル回路1は、機能の変更が可能なALU(算術論理演算ユニット)などを含む演算部である論理回路2の集合体を複数備えた構造を有し、また、それぞれの集合体の間に設けられて、集合体間の論理回路2の接続を選択的に確立可能な少なくとも1つの接続部3を有する。
リコンフィギュラブル回路1において、演算機能を選択的に実行可能な複数の論理回路2がマトリックス状に配列されて、図2の例では、X段Y列のALUアレイを構成し、各段に配列された複数の論理回路2が集合体を構成して、前段の集合体における処理結果が、接続部3において選択的に確立される接続にしたがって後段の集合体に引き渡される。上段から下段への論理回路2間のデータ渡しは、論理回路2間の接続切替を行う接続スイッチに接続データセットを設定することで、下段のどの論理回路2にデータを渡すかが定められる。動作時には、構成情報に従って演算処理し、結果を出力する。
各論理回路2の機能と、論理回路2間の接続関係は、図1に示す設定部14により供給される設定データ40に基づいて設定される。設定データ40は、以下の手順で生成される。
集積回路装置26により実現されるべきソースプログラム36が、記憶部34に保持されている。ソースプログラム36は、信号処理回路または信号処理アルゴリズムなどをC言語などの高級言語で記述したものである。コンパイル部30は、記憶部34に格納されたソースプログラム36をコンパイルし、データフローグラフ(以下、DFGともいう)38に変換して記憶部34に格納する。データフローグラフ38は、入力変数および定数による入力データから出力データに至る演算ないしはデータの流れをグラフ構造で表現したものである。
記憶部34は、リコンフィギュラブル回路1に設定する処理機能で頻出する関数(ライブラリ関数)について、予めデータフローグラフに変換されたライブラリDFGを格納したDFGライブラリ37を備える。コンパイル部30は、ソースプログラム36に含まれるライブラリ関数について、対応するライブラリDFGをDFGライブラリ37から読み込み、新たに生成するデータフローグラフ(DFG)と組み合わせて、ソースプログラム36に対応するデータフローグラフ38を生成する。コンパイル部30はまた、リコンフィギュラブル回路1における論理回路2の集合体の接続制限に応じて、データフローグラ
フ38を生成する。
なお、DFGライブラリ37は、記憶部34とは別の記憶装置等に格納されていてもよい。例えば、処理装置10と通信ネットワークで接続される別のサーバ等(図示せず)にDFGライブラリ37を格納してもよい。コンパイル部30は、ソースプログラム36をコンパイルするときに通信ネットワークを経由して、そのサーバ等に格納されたDFGライブラリ37から、ソースプログラム36に含まれるライブラリ関数に対応するライブラリDFGを読み込むように構成することができる。DFGライブラリ37をサーバ等に格納することによって、複数の処理装置10でDFGライブラリ37を共同利用することができる。このように構成すると、処理装置10は膨大なDFGライブラリ37を保持せずに済み、しかもソースプログラム36に応じてあらゆるライブラリDFGを利用できる。
設定データ生成部32は、データフローグラフ38から設定データ40を生成する。設定データ40は、データフローグラフ38をリコンフィギュラブル回路1にマッピングするためのデータであり、リコンフィギュラブル回路1における論理回路2の機能や論理回路2間の接続関係を定める。
本実施の形態では、具体的な関数を例にとって、本発明のリコンフィギュラブル回路1にマッピングするデータフローグラフ38の生成方法を説明する。図3は、リコンフィギュラブル回路1にマッピングするソースプログラム36の例を示す。図3のソースプログラム36は、関数funcA()、関数func_lib()、関数funcB()をその順序で含む。関数func_lib()はライブラリ関数であり、そのDFGがライブラリDFGとして、DFGライブラリ37に登録されている。
図4は、DFGライブラリ37の構成を模式的に示す。図4に示すように、関数(ライブラリ関数)に対応したDFG情報として、ライブラリDFGが登録されている。DFGライブラリ37には、1つのライブラリ関数に対して、複数のDFGが登録されている場合がある。図4では、ライブラリ関数func_lib()に対して、2つのDFGが登録されている様子を示す。
図5は、図3のソースプログラム36に現れる関数に対応するDFGの例を示す。図5(a)は、関数funcA()のDFGを示す。図5(b)は、ライブラリ関数func_lib()のDFGを示す。図5(c)は、関数funcB()のDFGを示す。図5において、丸印は1つの論理回路2を示す。最後段の四角は、その関数の出力である関数の値を表す。各論理回路2に割り当てられる演算は図5には示されていないが、実際にはそれぞれの論理回路2に加算、減算、論理和、論理積、ビットシフト演算、大小比較などの演算が割り当てられる。また図5では、各DFGの入力が省略されている。
図5の例では、関数funcA()は幅3列、縦3段で合計6個の論理回路2を使用する。関数func_lib()は幅4列、縦4段で合計11個の論理回路2を使用する。また、関数funcB()は幅2列、縦3段で合計4個の論理回路2を使用する。このようなDFG38への展開は一般に、一意には決まらない。後述するように、1つの関数に対して、リコンフィギュラブル回路1へマッピングするデータフローグラフ38は複数あり得る。
図6は、図5に示すそれぞれの関数のDFGを結合して、1つのDFG38としたものである。図6の一点鎖線で囲んだ範囲が関数funcA()のDFGを、破線で囲んだ範囲が関数func_lib()のDFGを、線で囲われていない部分が関数funcB()のDFGを表す。関数funcA()のDFGと関数func_lib()のDFGの間の論理回路2を、関数funcB()のDFGで使用するように、関数funcB()
のDFGの最初の段の論理回路2が1列右に移動されている。
関数funcA()、func_lib()、funcB()のDFGはこの順序で縦に接続されるのではなく、平行して処理されるように配置されている。ここでは、入力が省略されているが、少なくとも、関数func_lib()の最初の段の論理回路2の入力は、関数funcA()の2段目以降の論理回路2の出力を使用しないことが条件になっている。また、関数funcB()の初段の論理回路2の入力は、関数funcA()の最終段の論理回路2の出力を使用せず、関数func_lib()と平行して処理できることが条件になっている。これらの条件は、ソースプログラム36及び関数のコンパイル結果から導かれる。
図6の結合DFGでは、リコンフィギュラブル回路1は、少なくとも6列の論理回路2を備えていることが条件になっている。リコンフィギュラブル回路1の論理回路2等の条件の範囲で、最適な配置となるように、それぞれの関数のDFGを変形して組み合わせる。最適な配置としては、多くの場合、DFG全体の論理回路2の段数が最も少なくなるものを選択する。リコンフィギュラブル回路1で実行する処理の時間が最も短くなるからである。入力があってから結果が出力されるまでの時間が決められているような場合に、その規定の処理時間になるように論理回路2の段数を合わせることが最適の場合もあり得る。
コンパイル部30は、ソースプログラム36からDFGライブラリ37に登録された関数を抽出し、その関数のDFG(ライブラリDFG)をDFGライブラリ37から読み出す。また、ソースプログラム36のライブラリ関数以外の部分をDFGに変換し、読み出したライブラリDFGと組み合わせて、結合DFGを生成する。そのとき、ソースプログラム36の処理を割り当てるリコンフィギュラブル回路1の条件と、処理内容の条件の範囲で、結合DFGが最適な構成になるように、各DFGの配置を決める。特に、処理全体の論理回路2の段数が最小となるように、各DFGが割り当てられる論理回路2の左右の位置を変更して、無効な論理回路2ができないように配置を決定する。
リコンフィギュラブル回路1の条件が異なれば、最適な結合DFGの形は変化する。例えば、図7は、リコンフィギュラブル回路1が論理回路2を4列しか備えていない場合の結合DFGの構成例を表す。図7は、図6の結合DFGと同じように、図5に示す3つのDFGを結合して1つのDFG38としたものである。図7においても一点鎖線で囲んだ範囲が関数funcA()のDFGを、破線で囲んだ範囲が関数func_lib()のDFGを、線で囲われていない部分が関数funcB()のDFGを表す。
図7のリコンフィギュラブル回路1は、論理回路2を4列しか備えていない場合を想定している。図7では、関数funcA()のDFGは、図5(a)のDFGを左右反転した形となっているが、演算内容は同じである。また、関数funcB()のDFGは最初の段が1列右に移動している。コンパイル部30は、結合DFGが使用する論理回路2の列数が、リコンフィギュラブル回路1の論理回路列数を越えないように、各DFGの配置を決める。
こうして、頻出する関数について予め変換したDFGをライブラリに登録しておいて、ソースプログラム36からDFGに変換するときに、ソースプログラム36に含まれる関数(ライブラリ関数)について、それに対応するライブラリDFGをライブラリから読み出して結合することによって、DFG生成の処理時間を短縮することができる。また、ライブラリDFGと、その他のDFG(分割DFG)を、リコンフィギュラブル回路1の条件に合わせて配置することによって、最適な結合DFG(データフローグラフ38)を得ることができる。
次に、1つのライブラリ関数に対して、複数のライブラリDFGがDFGライブラリ37に登録されている場合の、結合DFGを生成する方法について説明する。図8は、1つの関数について2通りのDFGの例を表す。図8のDFGの関数は、8入力の和
z = a+b+c+d+e+f+g+h
を表す。図8(A)は、最大4列の論理回路2を使用するDFGで、論理回路2は3段、合計7個の論理回路2から構成される。図8(B)は、初段だけ2列の論理回路2を使用するDFGで、論理回路2は6段、合計7個の論理回路2から構成される。図8の(A)と(B)のDFGは、入力及び出力と、演算内容が同じである。図8(A)のDFGは列が多い代わりに処理段数が少なく、図8(B)のDFGは処理段数が多い代わりに列数が少ない。
また、それぞれのDFGの下に、各DFGのデータ表現の例を記載している。このデータ表現は、論理回路2をノード番号で表して、
ノード番号:演算 出力、入力1、入力2
の形式になっている。出力と入力の数字はノード番号を表す。アルファベットは変数を表す。例えば、図8(A)のノード番号1の論理回路2は、演算が加算(add)で、出力がノード番号5、入力がaとbであることを表し、DFGのノード1に対応している。ノード番号7の論理回路2は、ノード番号5と6の論理回路2の出力を入力として、演算が加算であり、出力が変数zであることを表し、上のDFGのノード7に対応している。各ノード番号についてDFGとデータ表現が対応していることが確かめられる。図8(B)についても、DFGとデータ表現が対応していることが確かめられる。
データ表現では、論理回路2の1つの段の中の配置は決まらないが、論理回路2の演算と、論理回路2相互の関係が決められている。従って、データ表現に基づいて、DFGの配置を決めることができる。
図9は、図8のライブラリDFGとある関数のDFGを結合した例を示す。図9の一点鎖線で囲んだ範囲は、図8(A)に示すライブラリDFGである。図9のDFG38は、ライブラリDFGに、次の式(1)に示す7入力の関数のDFGを配置している。
(a+b−(c>>1))*(d+e+f+g) (1)
ここで、c>>1は変数cの内容を1ビット右にシフトする演算を表す。図9の例では、リコンフィギュラブル回路1の論理回路2の列数は4であるとする。
式(1)の関数の場合、図8(B)のDFGを組み合わせると、論理回路2の列数が4なので、上の式(1)の関数とライブラリ関数の順序を変えることできるとしても、式(1)の関数のDFGの2段目からしかライブラリ関数の処理を開始できないので、全体の論理回路2の段数は7となる。図8(A)のDFGを組み合わせる方が論理回路2の段数が少ない。従って、その他の条件が無ければ、コンパイル部30は、図8(A)のライブラリDFGを選択して、結合DFG(データフローグラフ38)を生成する。
図10は、別の関数と図8のライブラリDFGとを結合した例を示す。図10のDFGは、ライブラリDFGと別に、次の式(2)に示す8入力の関数のDFGを配置している。
(((a−b)+c*d−e*f)*g)*h (2)
ここで、*gと*hの積の順は入れ替えられないものとする。図10の例でも、リコンフィギュラブル回路1の論理回路2の列数は4であるとする。
式(2)の関数の場合、図8(A)のDFGと別を組み合わせると、論理回路2の列数が4なので、全体の論理回路2の段数は7段となる。図8(B)のDFGと別を組み合わ
せる方が論理回路2の段数が少ない。従って、その他の条件に適合すれば、コンパイル部30は、図8(B)のライブラリDFGを選択して、結合DFGを生成する。
1つの関数について、異なる構成の複数のDFGをライブラリに登録しておいて、組み合わせるDFGの構成と、リコンフィギュラブル回路1の条件に応じて、結合DFGが最適な構成になるライブラリDFGを選択して用いることができる。特に、結合DFG全体の論理回路2の段数が最小になるライブラリDFGを選択する。その結果、DFG生成の処理時間を短縮することができる。さらに、複数のライブラリDFGから最適な構成を選択するので、処理内容とリコンフィギュラブル回路1に最適な結合DFGの構成を得ることができる。
次に、本発明のデータフローグラフ生成の動作について説明する。図11は、コンパイル部30の動作の一例を示すフローチャートである。コンパイル部30は、まず、記憶部34からソースプログラム36を読み込む(ステップA1)。そして、読み込んだソースプログラム36からライブラリ関数を抽出し、ライブラリ読み込みリスト41に読み込むライブラリの関数名を記録する(ステップA2)。ついで、コンパイル部30は、ソースプログラム36を中間ファイルに変換して、中間ファイル42に書き出す(ステップA3)。
図12は、ライブラリ関数の抽出(ステップA2)と中間ファイル変換(ステップA3)を展開したフローチャートである。図12において、パーサ部(ステップB1)では、ソースプログラム36の字句解析と、構文解析を行う。字句解析は、ソースプログラム36を、「字句(トークン)」の並びに分割する。構文解析は、解析された「字句(トークン)」の並びから、解析木を構築する。
次に、プリプロセッシング(Preprocessing)(ステップB2)では,コンパイル部3
0がソースプログラム36からDFG38を生成する前に,ソースファイルの一部を条件的にスキップしたり,他のソースファイル(ヘッダファイル)を読み込んだり,マクロを置き換えるための処理を行う。
処理分割(ステップB3)では、構文解析した結果からライブラリ関数を抽出し、ライブラリ読み込みリスト41を作成する。図13は、処理分割を展開したフローチャートの一例を示す。
図13において、ソースプログラム36(構文解析結果)から関数名を探索する(ステップC1)。ライブラリ登録関数を見つけたら(ステップC2;Yes)、その関数名をライブラリ読み込みリスト41に追加する(ステップC3)。そして、その関数の前後でソースプログラム36を分割する(ステップC4)。図3のソースプログラム36を例にすると、関数func_lib()の前、funcA()以前と、func_lib()の後、funcB()以後に分割する。ソースプログラム36が尽きるまで、ステップC1〜C4を繰り返し、ライブラリ登録関数がもはやなくなれば(ステップC2;No)、処理分割を終了する。
図12のフローチャートに戻って、処理分割(ステップB3)の後、ライブラリ登録関数の前後で分割されたソースプログラム36ごとに中間ファイルに変換し、中間ファイル42に書き出す(ステップB4)。図3のソースプログラム36を例にすると、関数funcA()以前と、funcB()以後をそれぞれ中間ファイルに変換して、中間ファイル42に書き出す。
中間ファイル変換は、意味解析とも呼ばれ、解析木を元に、変数の型など意味情報を考
慮して、解析木を中間表現(中間ファイル)に変換する。この中間表現は、対象となるリ
コンフィギュラブル回路1に依存しない、抽象度の高い中間的なコードである。中間表現は、実際のリコンフィギュラブル回路1の制限などに関係なく、その後のDFG38の最適化が行いやすい。
図11のフローチャートに戻って、中間ファイル変換(ステップA3)の後、ライブラリ読み込みリスト41に従って、DFGライブラリ37からライブラリDFGを読み込む(ステップA4)。
図14は、DFGライブラリ読み込みを分解したフローチャートの一例を示す。ライブラリ読み込みリスト41から関数名を取り出し(ステップD1)、その関数名のライブラリDFGをDFGライブラリ37から読み出す(ステップD2)。その関数名のライブラリDFGが複数登録されている場合は、複数のDFGを読み出す。そして、読み込んだライブラリDFGを、元のソースプログラム36のライブラリ関数に対応する部分的なDFGファイルとして、分割DFGファイル43に書き出す(ステップD3)。
ライブラリ読み込みリスト41があれば(ステップD4;Yes)、ステップD1〜D3を繰り返す。ライブラリ読み込みリスト41が尽きれば(ステップD4;No)、DFGライブラリ読み込みを終了する。
再び図11のフローチャートに戻って、中間ファイル変換で分割されたソースプログラム36ごとにDFGに変換し、分割DFGファイル43に書き出す(ステップA5)。同時に、分割DFG同士の結合情報として、結合リスト44を作成する。
DFGライブラリ読み込み(ステップA4)と分割DFG変換(ステップA5)で作成された分割DFG43と結合リスト44から、ソースプログラム36に対応する結合DFG38に変換し、データフローグラフ38を書き出す(ステップA6)。
図15は、結合DFG変換を分解したフローチャートの一例を示す。ライブラリ読み込みリスト41から、関数名を読み込み、処理する部分の関数を選択する(ステップE1)。分割DFGファイル43から、その関数に対応するライブラリDFGを1つ読み込む(ステップE2)。
結合リスト44を参照して、分割DFGファイル43から読み込んだライブラリDFGとライブラリ以外の分割DFGを組み合わせる(ステップE3)。そして、その分割DFGの組み合わせで最適な構成となるようにDFGの配置を決める(ステップE4)。そして、そのライブラリDFGについて評価基準に照らして評価値を算出する。ここでは、論理回路2の段数を評価値とする。結合DFGの論理回路2の段数が前の回よりも小さければ(ステップE5;Yes)、ライブラリDFGを今回のものに置き換える(ステップE6)。そのライブラリ関数について最初のライブラリDFGの場合は、前回の組み合わせがないので、置き換えることはない。
そのライブラリ関数について、ライブラリDFGが他にあれば(ステップE7;Yes)、ライブラリDFG読み込み(ステップE2)に戻って、異なるライブラリDFGを読み込んで、分割DFGの組み合わせを行い(ステップE3)、DFG最適配置を行って(ステップE4)、論理回路2段数が前の回より小さければライブラリDFGを置き換える(ステップE6)。そのライブラリ関数について登録されている複数のDFGについて組み合わせ・最適配置を行って(ステップE7;Noになるまで)、最適な構成になるライブラリDFGを選択する。
ステップE1からステップE7を、ソースプログラム36に含まれる全てのライブラリ関数について行う(ステップE8;Yes)。全てのライブラリ関数について、組み合わせ・最適配置が終了すれば、その結果得られた結合DFGは最適組み合わせ、及び最適配置であるから、その結合DFGをデータフローグラフ38として格納する(ステップE9)。
前述のとおり、設定データ生成部32は、データフローグラフ38から設定データ40を生成する(図1参照)。設定データ40は、データフローグラフ38をリコンフィギュラブル回路1にマッピングするためのデータであり、リコンフィギュラブル回路1における論理回路2の機能や論理回路2間の接続関係を定める。
以上、説明したとおり、ライブラリに登録された関数のDFGを読み込んで、ソースプログラム36に対応する結合DFGを生成するので、データフローグラフ生成の処理時間を短縮することができる。また、結合DFGを生成するときに、ライブラリDFG及び分割DFGを最適な構成になるように配置するので、対象となるリコンフィギュラブル回路1に最適な配置のデータフローグラフ38を得ることができる。
さらに、1つの関数について異なる構成の複数のDFGをライブラリに登録しておいて、結合DFGを生成するときに最適な構成となるライブラリDFGを選択するので、リコンフィギュラブル回路1により適したデータフローグラフ38を迅速に得ることができる。その結果、リコンフィギュラブル回路1の回路規模を小さくし、効率的に動作させることが期待できる。
そして、結合DFG(データフローグラフ38)として論理回路2の段数が最小の構成となるように、ライブラリDFGを選択し、最適配置するので、ソースプログラム36の処理をリコンフィギュラブル回路1に実行させたときの処理時間が最小になる。
その他、前記のハードウエア構成やフローチャートは一例であり、任意に変更及び修正が可能である。
本発明の実施の形態に係るリコンフィギュラブル回路を備える処理装置の構成を示すブロック図である。 本発明の実施の形態に係るリコンフィギュラブル回路の構成の例を示すブロック図である。 リコンフィギュラブル回路にマッピングするソースプログラムの例を示す図である。 データフローグラフライブラリの構成を模式的に示す図である。 図3のソースプログラムに現れる関数に対応するDFGの例を示す図である。 図5に示すそれぞれの関数のDFGを結合した例を表す図である。 リコンフィギュラブル回路が論理回路を4列しか備えていない場合の結合DFGの構成例を表す図である。 1つの関数について2通りのDFGの例を表す図である。 図8のライブラリDFGとある関数のDFGを結合した例を示す図である。 別の関数と図8のライブラリDFGとを結合した例を示す図である。 本発明に係るコンパイル部の動作の一例を示すフローチャートである。 ライブラリ関数の抽出と中間ファイル変換を展開したフローチャートである。 処理分割を展開したフローチャートの一例を示す図である。 DFGライブラリ読み込みを分解したフローチャートの一例を示す図である。 結合DFG変換を分解したフローチャートの一例を示す図である。
符号の説明
1 リコンフィギュラブル回路
2 論理回路
3 接続部
10 処理装置
30 コンパイル部
32 設定データ生成部
34 記憶部
36 ソースプログラム
37 DFGライブラリ
38 データフローグラフ
40 設定データ

Claims (5)

  1. それぞれが複数の算術論理演算機能を選択的に実行可能な複数の論理回路から構成される演算部と、前記複数の論理回路の間の接続関係を保持する接続部と、を備えるリコンフィギュラブル回路に、所期の処理機能の動作を設定するために必要なデータフローグラフを生成するデータフローグラフ生成方法であって、
    前記リコンフィギュラブル回路に所定の関数の動作を行わせる少なくとも1つのデータフローグラフを登録したライブラリに登録された前記関数を、前記所期の処理機能の動作を記述したソースプログラムから抽出する登録関数抽出ステップと、
    前記ソースプログラムの前記ライブラリに登録された関数以外の処理を前記データフローグラフに変換する変換ステップと、
    前記登録関数抽出ステップで抽出された関数のデータフローグラフを、前記ライブラリから読み出すライブラリ読み出しステップと、
    前記変換ステップで変換したデータフローグラフと、前記ライブラリ読み出しステップで読み出したデータフローグラフとを結合して、前記リコンフィギュラブル回路に前記所期の処理機能の動作を設定するために必要なデータフローグラフを生成する結合ステップと、
    を備えることを特徴とするデータフローグラフ生成方法。
  2. 前記結合ステップで生成するデータフローグラフが、所定の評価基準に照らして最適となるように、前記変換ステップで変換したデータフローグラフと前記ライブラリ読み出しステップで読み出したデータフローグラフとの配置を、前記リコンフィギュラブル回路の範囲内で調節する最適化ステップを備える、
    ことを特徴とする請求項1に記載のデータフローグラフ生成方法。
  3. 前記ライブラリは、少なくとも1つの関数について、該関数に対応する異なる形態の複数のデータフローグラフを含み、
    前記登録関数抽出ステップで抽出された関数について、前記ライブラリに異なる形態の複数のデータフローグラフが登録されている場合に、
    前記ライブラリ読み出しステップは、前記異なる形態の複数のデータフローグラフを読み出し、
    前記異なる形態の複数のデータフローグラフから、前記結合ステップで生成するデータフローグラフが、所定の評価基準に照らして最適となるデータグラフを選択する選択ステップを備える、
    ことを特徴とする請求項1または2に記載のデータフローグラフ生成方法。
  4. 前記リコンフィギュラブル回路が、前記論理回路の1以上の列からなる段を1つ以上備える接続構造を有する場合に、
    前記所定の評価基準は、前記リコンフィギュラブル回路の列数の範囲で、前記論理回路の段数が最小であることを特徴とする請求項2または3に記載のデータフローグラフ生成方法。
  5. それぞれが複数の算術論理演算機能を選択的に実行可能な複数の論理回路から構成される演算部と、前記複数の論理回路の間の接続関係を保持する接続部と、を備えるリコンフィギュラブル回路と、
    前記リコンフィギュラブル回路に、所期の処理機能の動作を設定するために必要なデータフローグラフを生成するデータフローグラフ生成手段と、
    前記データフローグラフ生成手段で生成したデータフローグラフに基づいて、前記リコンフィギュラブル回路に前記所期の処理機能の動作を行う回路を構成するための設定データを生成する設定データ生成手段と、
    を含む処理装置であって、
    前記データフローグラフ生成手段は、
    前記リコンフィギュラブル回路に所定の関数の動作を行わせる少なくとも1つのデータフローグラフを登録したライブラリに登録された前記関数を、前記所期の処理機能の動作を記述したソースプログラムから抽出する登録関数抽出ステップと、
    前記ソースプログラムの前記ライブラリに登録された関数以外の処理を前記データフローグラフに変換する変換ステップと、
    前記登録関数抽出ステップで抽出された関数のデータフローグラフを、前記ライブラリから読み出すライブラリ読み出しステップと、
    前記変換ステップで変換したデータフローグラフと、前記ライブラリ読み出しステップで読み出したデータフローグラフとを結合して、前記リコンフィギュラブル回路に前記所期の処理機能の動作を設定するために必要なデータフローグラフを生成する結合ステップと、
    によって前記データフローグラフを生成することを特徴とする処理装置。
JP2006063742A 2006-03-09 2006-03-09 データフローグラフの生成方法、及び処理装置 Active JP4601567B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006063742A JP4601567B2 (ja) 2006-03-09 2006-03-09 データフローグラフの生成方法、及び処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006063742A JP4601567B2 (ja) 2006-03-09 2006-03-09 データフローグラフの生成方法、及び処理装置

Publications (2)

Publication Number Publication Date
JP2007241695A JP2007241695A (ja) 2007-09-20
JP4601567B2 true JP4601567B2 (ja) 2010-12-22

Family

ID=38587173

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006063742A Active JP4601567B2 (ja) 2006-03-09 2006-03-09 データフローグラフの生成方法、及び処理装置

Country Status (1)

Country Link
JP (1) JP4601567B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5197061B2 (ja) * 2008-02-19 2013-05-15 三洋電機株式会社 プログラム分割装置および方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006065787A (ja) * 2004-08-30 2006-03-09 Sanyo Electric Co Ltd データフローグラフ処理方法、リコンフィギュラブル回路

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006065787A (ja) * 2004-08-30 2006-03-09 Sanyo Electric Co Ltd データフローグラフ処理方法、リコンフィギュラブル回路

Also Published As

Publication number Publication date
JP2007241695A (ja) 2007-09-20

Similar Documents

Publication Publication Date Title
JP4275013B2 (ja) データフローグラフ処理装置、処理装置、リコンフィギュラブル回路。
US20220261248A1 (en) Encoding and Decoding Variable Length Instructions
JP4893309B2 (ja) 再構成可能な論理回路を有するデータ処理装置
JP4104538B2 (ja) リコンフィギュラブル回路、リコンフィギュラブル回路を備えた処理装置、リコンフィギュラブル回路における論理回路の機能決定方法、回路生成方法および回路
WO2010107114A1 (ja) パターンマッチング装置
JP4484756B2 (ja) リコンフィギュラブル回路および処理装置
JP2010102716A (ja) マスクプログラム可能なロジックデバイスをプログラムする方法およびその方法によってプログラムされたデバイス
EP1659486B1 (en) Data processing device
JP4601567B2 (ja) データフローグラフの生成方法、及び処理装置
Krishnapriya et al. High level synthesis for retiming stochastic VLSI signal processing architectures
JP4208751B2 (ja) データフローグラフ処理装置。
JP4669781B2 (ja) 処理装置
JP4673739B2 (ja) リコンフィギュラブル回路
JP2005276854A (ja) 処理装置
JP4156010B2 (ja) 処理装置
JPH096821A (ja) 論理回路の合成方法、半導体装置の製造方法および二分決定グラフの最適化方法
JP4562679B2 (ja) データフローグラフ生成装置
JP4413052B2 (ja) データフローグラフ処理装置および処理装置
Hentati et al. Software Defined Radio Equipment: What's the Best Design Approach to Reduce Power Consumption and Increase Reconfigurability?
JP4357326B2 (ja) リコンフィギュラブル回路および処理装置
JP2007241694A (ja) リコンフィギュラブル回路への演算マッピング方法、リコンフィギュラブル回路、及びデータフローグラフ
JP2005128709A (ja) リコンフィギュラブル回路を備えた処理装置
JP2007272394A (ja) データフローグラフ再構成装置、リコンフィギュラブル回路の設定データ生成装置、処理装置、及びリコンフィギュラブル回路
JP4330472B2 (ja) 処理装置
Kilic et al. A Top‐Down Optimization Methodology for Mutually Exclusive Applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081110

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100831

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100928

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131008

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4601567

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131008

Year of fee payment: 3