JP4260086B2 - データフローグラフ生成装置、処理装置、リコンフィギュラブル回路。 - Google Patents

データフローグラフ生成装置、処理装置、リコンフィギュラブル回路。 Download PDF

Info

Publication number
JP4260086B2
JP4260086B2 JP2004250670A JP2004250670A JP4260086B2 JP 4260086 B2 JP4260086 B2 JP 4260086B2 JP 2004250670 A JP2004250670 A JP 2004250670A JP 2004250670 A JP2004250670 A JP 2004250670A JP 4260086 B2 JP4260086 B2 JP 4260086B2
Authority
JP
Japan
Prior art keywords
data flow
flow graph
node
data
memory
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
JP2004250670A
Other languages
English (en)
Other versions
JP2006065787A (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 JP2004250670A priority Critical patent/JP4260086B2/ja
Publication of JP2006065787A publication Critical patent/JP2006065787A/ja
Application granted granted Critical
Publication of JP4260086B2 publication Critical patent/JP4260086B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Logic Circuits (AREA)

Description

この発明は、機能の変更が可能なリコンフィギュラブル回路の動作設定に必要なデータフローグラフを処理する技術に関する。
近年、ALU(Arithmetic Logic Unit)と呼ばれる基本演算機能を複数持つ多機能素子を用いたリコンフィギュラブルプロセッサの開発が進められている(例えば、特許文献1参照)。リコンフィギュラブルプロセッサでは、コマンドデータをALU回路に順次設定することで、全体として所期の演算処理回路を実現することができる。コマンドデータは、C言語などの高級プログラム言語で記述されたソースプログラムをコンパイル処理することでDFG(データフローグラフ)と呼ばれるデータフローを作成し、そのDFGをALU回路にマッピングするデータとして作成される。
特開2004−220377号公報
従来のリコンフィギュラブルプロセッサでは、ALU回路から出力されるデータをメモリに記憶する際、その格納位置は、プログラムのコンパイル処理時に予め決定されている。従来のリコンフィギュラブルプロセッサでは、メモリの書込アドレスまたは読出アドレスが固定されており、演算処理の実行中に、アドレスを動的に設定することができなかった。また、従来のDFGはノード間のデータ入出力を表現するものであり、メモリアクセスのようにノードを介さないデータの扱いには不適であった。
本発明はこうした状況に鑑みてなされたもので、その目的は、メモリへのアクセスを動的に実行できるデータフローグラフを生成する技術を提供することにある。
発明のある態様は、機能の変更と、メモリにアクセスするためのアドレスの出力と、所望の演算とが実行可能な複数の論理回路を備えたリコンフィギュラブル回路の動作設定に必要な、論理回路の機能をノードとして表現したデータフローグラフを生成するデータフローグラフ生成装置であって、処理の動作を示すデータを読み出す手段と、読み出した前記データ中に、メモリへのアクセスがある場合、前記リコンフィギュラブル回路に接続されるメモリにアクセスするためのアドレスを出力するノードを生成するノード生成手段と、前記ノードを含むデータフローグラフを生成するデータフローグラフ生成手段と、を含むことを特徴とする。
本発明の他の態様は、機能の変更が可能な複数の論理回路を備えたリコンフィギュラブル回路の動作設定に必要な、論理回路の機能をノードとして表現したデータフローグラフを生成するデータフローグラフ生成装置であって、処理の動作を示すデータを読み出す手段と、読み出した前記データ中に、メモリへのアクセスがある場合、メモリへのアクセス順および処理の遅延量に応じて、データフローグラフを1つ以上のサブデータフローグラフに分割する分割手段と、1つ以上のサブデータフローグラフを、メモリへのアクセス順および処理の遅延量に応じて1つのデータフローグラフに結合する結合手段と、を備えることを特徴とする。
リコンフィギュラブル回路は、複数種類の多ビット演算を選択的に実行可能な算術論理回路を有してもよい。
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラムとして表現したものもまた、本発明の態様として有効である。
本発明によれば、メモリへのアクセスを動的に実行できるデータフローグラフを生成する技術を提供することができる。
図1は、実施例に係る処理装置10の構成図である。処理装置10は、集積回路装置26を備える。集積回路装置26は、回路構成を再構成可能とする機能を有する。集積回路装置26は1チップとして構成され、リコンフィギュラブル回路12、設定部14、制御部18、出力回路22、メモリ部27および経路部24、29を備える。リコンフィギュラブル回路12は、設定を変更することにより、機能の変更を可能とする。
設定部14は、リコンフィギュラブル回路12に所期の回路を構成するための設定データ40を供給する。設定部14は、プログラムカウンタのカウント値に基づいて記憶したデータを出力するコマンドメモリとして構成されてもよい。この場合、制御部18がプログラムカウンタの出力を制御する。この意味において、設定データ40はコマンドデータと呼ばれてもよい。経路部24、29は、フィードバックパスとして機能し、リコンフィギュラブル回路12の出力を、リコンフィギュラブル回路12の入力に接続する。出力回路22は、例えばデータフリップフロップ(D−FF)などの順序回路として構成され、リコンフィギュラブル回路12の出力を受ける。メモリ部27は経路部29に接続されている。リコンフィギュラブル回路12は組合せ回路または順序回路等の論理回路として構成される。
メモリ部27は、リコンフィギュラブル回路12から出力されるデータ信号および/または外部から入力されるデータ信号を格納するための記憶領域を有する。メモリ部27はRAMとして構成される。メモリ部27にデータを書き込んで、そのデータを読み出すためには、少なくとも、それぞれの処理につき1クロック分の時間がかかる。メモリ部27に格納されたデータ信号は、経路部29を通じてリコンフィギュラブル回路12の入力として伝達される。なお、本実施例において、メモリ部27に供給するアドレスは、リコンフィギュラブル回路12において生成される。
リコンフィギュラブル回路12は、機能の変更が可能な論理回路を有して構成される。具体的にリコンフィギュラブル回路12は、複数の演算機能を選択的に実行可能な論理回路を複数段に配列させた構成を備え、さらに前段の論理回路列の出力と後段の論理回路列の入力との接続関係を設定可能な接続部を備える。各段に含まれる複数の論理回路は、論理回路の集合体を構成する。この接続部は、前段の論理回路列の出力すなわち内部状態を保持する状態保持回路(以下、FF回路とも呼ぶ)の機能も備える。複数の論理回路は、マトリックス状に配置される。各論理回路の機能と、論理回路間の接続関係は、設定部14により供給される設定データ40に基づいて設定される。設定データ40は、以下の手順で生成される。
集積回路装置26により実現されるべきプログラム36が、記憶部34に保持されている。プログラム36は、回路における処理の動作を記述した動作記述を示し、信号処理回路または信号処理アルゴリズムなどをC言語などの高級言語で記述したものである。コンパイル部30は、記憶部34に格納されたプログラム36をコンパイルし、データフローグラフ(DFG)38に変換して記憶部34に格納する。データフローグラフ38は、回路における演算間の実行順序の依存関係を表現し、入力変数および定数の演算の流れをグラフ構造で示したものである。一般に、データフローグラフ38は、上から下に向かって演算が進むように形成される。
設定データ生成部32は、コンパイル部30により決定されたデータフローグラフ38をもとに、設定データ40を生成する。設定データ40は、データフローグラフ38をリコンフィギュラブル回路12にマッピングするためのデータであり、リコンフィギュラブル回路12における論理回路の機能や論理回路間の接続関係、さらには論理回路に入力させる定数データなどを定める。
設定部14がコマンドメモリとして構成されている場合、制御部18は設定部14に対してプログラムカウンタ値を与え、設定部14は、そのカウンタ値に応じて格納した設定データを、コマンドデータとしてリコンフィギュラブル回路12に設定する。なお、設定部14は、キャッシュメモリや他の種類のメモリを有して構成されてもよい。なお、制御部18が記憶部34から設定データ40を受けて、その設定データ40を設定部14に供給してもよいが、制御部18を介さずに、予め設定部14に設定データを格納しておいてもよい。
設定部14は、設定データ40をリコンフィギュラブル回路12に設定し、リコンフィギュラブル回路12の回路を逐次再構成させる。リコンフィギュラブル回路12は、基本セルとして高性能の演算能力のあるALUを用いており、またリコンフィギュラブル回路12および設定部14を1チップ上に構成することから、コンフィグレーションを高速に、例えば1クロックで実現することができる。制御部18はクロック機能を有し、クロック信号は、出力回路22およびメモリ部27に供給される。また制御部18はカウンタを含み、カウント信号を設定部14に供給してもよい。
図2は、リコンフィギュラブル回路12の構成の一例を示す。リコンフィギュラブル回路12は、それぞれが複数の演算機能を選択的に実行可能な論理回路の多段配列と、前段の論理回路の出力と後段の論理回路の入力の接続関係を任意に設定可能な接続部52とを備える。リコンフィギュラブル回路12では、論理回路の多段配列構造により、上段から下段に向かって演算が進められる。なお、本明細書において「多段」とは、複数の段を意味する。なお、リコンフィギュラブル回路12の回路構成は、必ずしも多段配列を有する必要はないが、回路規模を削減するために全ての論理回路間の接続を可能とするのではなく、一部の論理回路同士の接続を実現させるのが好ましい。
リコンフィギュラブル回路12は、論理回路としてALU(Arithmetic Logic Unit)を有している。ALUは、複数種類の多ビット演算を選択的に実行可能な算術論理回路であって、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行できる。各ALUは、複数の演算機能を設定するためのセレクタを有して構成されている。図示の例では、ALUが、2つの入力端子と1つの出力端子を有して構成される。
リコンフィギュラブル回路12は、縦方向にX個、横方向にY個のALUが配置されたX段Y列のALUアレイとして構成される。ここでは、縦方向に3個、横方向に6個のALUが配置された3段6列のALUアレイを示している。リコンフィギュラブル回路12は、接続部52およびALU列53を備える。ALU列53は複数段に設けられ、接続部52は前後段のALU列53の間に設けられて、前段のALUの出力と後段のALUの入力の接続関係を設定する。
図2に示す例では、第1段のALU列53aと第2段のALU列53bの間に、第2段を構成する接続部52bが設けられ、第2段のALU列53bと第3段のALU列53cの間に、第3段を構成する接続部52cが設けられる。なお、第1段を構成する接続部52aは、第1段のALU列53aの上側に設けられる。
第1段のALU11、ALU12、・・・、ALU16には、入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第2段の接続部52bに設定された接続にしたがって、第2段のALU21、ALU22、・・・、ALU26に入力される。第2段の接続部52bにおいては、第1段のALU列53aの出力と第2段のALU列53bの入力の間で任意の接続関係、あるいは予め定められた接続関係の組合せの中から選択された接続関係を実現できるように接続用結線が構成されており、設定により所期の結線が有効となる。第2段のALU21、ALU22、・・・、ALU26には、ALU列53aの出力が入力され、設定された所定の演算がなされる。演算結果の出力は、第3段の接続部52cの接続用結線において設定された接続にしたがって、第3段のALU31、ALU32、・・・、ALU36に入力される。
最終段となる第3段のALU列53cからの出力データは、出力回路22、メモリ部27または経路部24に出力される。メモリ部27は、経路部29を介して、出力データを接続部52aに入力する。接続部52aは、接続用結線を設定し、第1段のALU11、ALU12、・・・、ALU16にデータを供給する。
図3は、リコンフィギュラブル回路12におけるALU間の接続関係を示す図である。なお、図3では、ALU列の間に配置される接続部52の図示を省略している。第1段の接続部52においては、第1段のALU列の出力と第2段のALU列の入力の間で、一定の接続制限が課された接続関係を実現できるように結線が構成されており、設定により、その範囲内での所期の結線が有効となる。なお、第2段の接続部52においても同様である。最終段である第3段のALU列は演算の最終結果を出力する。接続部52は、ALU段の間で、物理的に近接して配置された論理回路同士を接続可能とするように構成される。これにより、配線長を短くすることができ、回路規模を削減することができる。その結果、低消費電力化及び処理高速化が可能となる。
図3に示すリコンフィギュラブル回路12では、3段×6列のALUが存在し、上段における1つのALUからの配線は、下段の3つのALUに制限される。図示のように、下段における1つのALUの入力は、上段における直上のALUと、直上のALUの左右のALUに制限され、また上段における1つのALUの出力は、下段における直下のALUと、直下のALUの左右のALUに制限される。例えば、ALU22に関してみると、その入力は、ALU11、ALU12、ALU13の3方向に制限され、その出力は、ALU31、ALU32、ALU33の3方向に制限される。なお、左または右に対応するALUが存在しなければ、その入力および出力は、それぞれ2方向に制限される。このような配線とすることにより、上下段の全てのALU間の接続を可能とする場合と比較すると、配線数を大幅に削減することが可能となる。
本実施例において、メモリアクセスは、リコンフィギュラブル回路12で生成されたアドレスにより実行される。データをメモリ部27に書き込むとき、リコンフィギュラブル回路12からの2つの出力が、それぞれ書き込み先のアドレスと書き込むデータとなり、データを読み出すとき、リコンフィギュラブル回路12からの1つの出力が、読み出すアドレスとなる。具体的に、コンパイル部30は、論理回路の機能をノードとして表現し、メモリへのアクセスが可能なノードを含むDFGを生成する。このとき、アドレスを出力するノード、および書込/読出命令を割り当てたノードを作成する。また、DFG作成時に、メモリアクセスを実行するノードに対してアクセス順にアクセス番号を割り振り、アクセス番号が割り振られたノードが1つのサブDFG内に存在するようにDFGを分割する。このとき、サブDFGには、メモリアクセスノードを含むDFGを高々1つ程度含むように分割される。最後に、1つ以上のサブDFGを、アクセス番号の順にしたがって、メモリアクセスが1段中1つ以下になるようにノード配置を行って、結合する。
図4は、メモリへの書き込みを行うCソースの例を示す。図5は、図4に示すCソースを変換したアセンブラ命令を示す。mem_aは演算の出力がアドレスであることを示す命令で、配列aの先頭アドレスと配列のインデクスiを加算し、アドレス値を示す変数adr(=a+i)に代入する。またmem_wはアドレスadrに対して定数1を書き込むことを表す。コンパイル部30は、図5に示すアセンブラ命令から、データの入出力関係を基にDFGを作成する。
図6(a)は、アセンブラ命令を表現したDFGを示す。アドレスとデータはそれぞれのALU出力となるようにDFGを作成する必要がある。mem_wへの入力が定数の場合は、図6(b)に示すようにデータスルーノードであるmovノードを作成する。movノードでは、データに演算を加えることなく、入力したデータをそのまま出力する。最後に、mem_wは機能的に意味が無いため削除する。このようにmem_wのノードは、コンパイル部30で除去されるが、メモリ書き込みに必要な2つのノードを同じ段に配置するために一旦DFG化される。図6(c)は、アドレスとデータを出力する2つのノードmem_aとmovを作成した状態を示す。
リコンフィギュラブル回路12に演算処理を実行させるときには、図7のように、配列a[100]に相当する領域がメモリ部27内に割り当てられ、外部入力であるiの値に従ってa[i]の領域に1が書き込まれる。
図8は、メモリ部27からの読出しを行うCソースの例である。図9は、図8に示すCソースを変換したアセンブラ命令を示す。mem_aにより配列aの先頭アドレスと配列のインデクスiを加算し、アドレス値を示す変数adrに代入する。mem_rはアドレスadrからデータを読み出すことを表す。このようにアセンブラ命令に変換することにより、入出力関係を明らかにする。コンパイル部30は、まず、図9に示すアセンブラ命令から、データの入出力関係を基にDFGを作成する。
図10(a)は、アセンブラ命令を表現したDFGを示す。ノードからアドレスを出力し、データを読み出す処理には遅延が発生するので、図10(b)のようにアドレスを出力したノードとそのアドレスからデータを出力するノードの間に遅延分に相当する数の段を空け、データを出力するmovノードを作成する。この場合、必要な空き段数は3である。続いてコンパイル部30は、mem_rノードは単に段数をカウントするためだけに用意したノードで機能的に意味が無いため削除する。これにより、図10(c)のアドレス出力するmem_aと読み出したデータが入力されるmovが作成され、その出力からデータretを得られる。
リコンフィギュラブル回路12に演算処理を実行させるときには、図11のように、配列a[100]に相当する領域がメモリ内に割り当てられ、外部入力であるiの値に従ってa[i]の領域からデータが読み出される。
図12(a)は、複数のメモリアクセスが行われるCソースの例である。図12(b)は、図12(a)のCソースの動作内容を示す。この動作では、要素数2の配列を用いてFIFOを実現する。図13は、図12(a)に示すCソースを変換したアセンブラ命令を示す。図14は、コンパイル部30で生成された3つのDFGを示す。
Cソースにメモリアクセスが記述されている場合、その記述された順に処理されなければ正しい結果が得られない。しかし、従来のメモリアクセスが無いDFGをリコンフィギュラブル回路12へマッピングする手法では、リコンフィギュラブル回路12にマッピングする順は、DFGを生成した順番になるので、メモリアクセスノードの処理順がCソースに規定された順と異なる場合が発生する。このとき、正しい動作は行われない。そこで、コンパイル部30は、アセンブラの先頭からmem_r及びmem_w命令をサーチし、メモリアクセスノードにインデクスを付加しておく。次にコンパイル部30は、命令をノードに変換し、ノード間の入出力関係を基にDFGを作成する。
図14は、メモリアクセス命令に、アクセスの昇順に「mem_r:1」や「mem_w:3」としてインデクスを割り振った状態を示す。コンパイル部30は、データの読出、書込を行うノードを判定して、インデクスを適宜割り当てる。但し、遅延用のmem_rにはインデクスは付けない。コンパイル部30は、図14(a)、図14(b)、図14(c)に示す3つのDFGを、少なくとも1つのメモリアクセスノードが含まれるように分割する。
コンパイル部30は、まず3つのDFGのノードからメモリアクセスノードのインデクスをサーチし、メモリアクセスノードが見つかると、その入力ノードを順に辿る。入力が定数か変数であるノードか、別のメモリアクセスノードであれば、その時点で別のDFGに分割し、リコンフィギュラブル回路12の接続にあった形にマッピングする。インデクス1のノードが図14(b)に示すDFGに含まれるので、まず、このDFGを分割する。このDFGは、図15(a)に示すDFGに変換される。
次にインデクス2のノードが図14(c)に示すDFGに含まれるので、このDFGを分割する。図14(c)に示すDFGはインデクス2のメモリアクセスノード以外にインデクス3のメモリアクセスノードも含む。そこで、コンパイル部30は、このDFGをインデクス2とインデクス3のそれぞれのメモリアクセスノードを含む2つのサブDFGに分割し、インデクス2を含むサブDFGに対して、インデクス2のメモリアクセスノードとその出力先であるmovノードを割り当てる。インデクス2のメモリアクセスノードを含んだノード群は、図15(b)に示すDFGに変換される。残りのインデクス3のメモリアクセスノードを含んだノード群は、図16に示すDFGに変換される。次に、インデクス3のメモリアクセスノードを含むDFGを図15(c)に示すように生成し、インデクス4のメモリアクセスノードを含むDFGを図15(d)に示すように生成する。
次に、コンパイル部30は、図15(a)〜図15(d)にマッピングされた4つのDFGを、順番に結合する。この際、2つ以上のメモリアクセスが同じ段に存在するとメモリ部27に対して重複アクセスが発生する可能性があるため、メモリアクセスノードは1段に1つ存在するように制限する。これにより、メモリ部27への重複アクセスを防止し、C記述の計算順序と合致したメモリアクセスを実現できる。図4、図8のCソースの例で述べたように、mem_rとmem_wを削除すると、図17のように結合される。
最後に、図17に示すように結合したDFGは、リコンフィギュラブル回路12の行数である3行毎に分割され、設定データに変換される。実行時は、3行毎に設定データが割り当てられ、最下段のALUからのデータは経路部29を用いて、次の3段DFGの最上段のALUに渡される。
図18は、コンパイル部におけるDFG作成処理のフローチャートを示す。本実施例のDFG作成処理では、メモリ部27へのアクセスが可能なノードを含むDFGを生成する。まずアセンブラデータの読み込みを行う(S10)。この読み込みは、1つのアセンブラ命令ごとに実行される。読み込んだアセンブラ命令に対してノードを作成し(S12)、そのノードがmem_wであるか、またはmem_rであるかを判定する(S14)。ノードがmem_wまたはmem_rである場合(S14のY)、インデクスをノードに付加する(S16)。インデクスは、DFG内のメモリアクセスを実行するノードに対してアクセスする順番にしたがって付加されるアクセス番号である。ノードがmem_wまたはmem_rでない場合(S14のN)、メモリアクセスが実行されないため、インデクスはノードに付加されない。
続いて、入力がノードであるか否かを判定する(S18)。入力がノードであれば(S18のY)、ノード間を接続したDFGを生成する(S20)。入力がノードでなければ(S18のN)、ノード間を接続する必要はない。アセンブラデータに未読み込みのものが存在する場合(S22のN)、上記した処理を繰り返し、全アセンブラデータの読み込みが終了すると(S22のY)、mem_a、mem_wの入力が定数であるか否かを判定する(S24)。mem_aは、リコンフィギュラブル回路12からの演算結果をメモリ部27へのアクセスのためのアドレスとして処理するノードである。
mem_a、mem_wの入力が定数である場合(S24のY)、スルーノードであるmovを、mem_a、mem_wの入力に挿入する(S26)。メモリ部27のアドレスと、データを出力するノードは、メモリアクセス用の論理回路の位置にあうように配置される。また、mem_a、mem_wの入力が定数でない場合(S24のN)、mem_rが存在するか否かを判定する(S28)。mem_rが存在していれば(S28のY)、mem_rの下に遅延用のmem_rを挿入する(S30)。ここでは、メモリ部27のアドレスを出力するノードに対して、アドレスから読み出されたデータを受け取るノードの配置を、読出処理の遅延分だけ下段に配置する。遅延用のmem_rは、3つ挿入される。これにより、アクセス遅延を含むDFGを実現できる。メモリアクセス処理のために遅延が生じたALUと同期させるために、同段の処理も遅延するなどの方法をとった場合と比較すると、読出処理の遅延分だけ遅延させることで、遅延分を最小とすることができ、全体としての処理時間を短縮できる。
図19は、コンパイル部におけるDFG分割処理のフローチャートを示す。この分割処理では、リコンフィギュラブル回路12の集合体内の論理回路の数とメモリ部27へのアクセス順および処理の遅延量に応じて、DFGを1つ以上のサブDFGに分割する。まず、iを1に設定する(S100)。インデクスiのメモリアクセスノードの存在を確認し(S102)、メモリアクセスノードが存在していれば(S102のY)、1つのメモリアクセスノードを含むようにDFGを分割して(S104)、サブDFGを生成する(S106)。したがって、サブDFGは、インデクスが割り振られた1つのメモリアクセスノードを有して構成される。インデクスiのメモリアクセスノードが存在しなければ(S102のN)、そのDFGをサブDFGとして取り扱う(S106)。DFG化していないノードが残っている場合には(S108のN)、iを1インクリメントして(S110)、S102に戻り、全ノードのDFG化が終了すると(S108のY)、この分割処理を終了する。
図20は、コンパイル部におけるサブDFG結合処理のフローチャートを示す。このサブDFG結合処理では、1つ以上のサブDFGを、メモリへのアクセス順および処理の遅延量に応じて1つのDFGに結合する。2つ以上のサブDFG間にメモリ部27を介したデータの授受が存在する場合、サブDFG内のメモリアクセスを行うノードのアクセス順と処理遅延量を加味して、サブDFG間を結合する。
まず、jに1を設定する(S200)。サブDFGjにメモリアクセスノードが含まれているか否かを判定し(S202)、メモリアクセスノードが含まれている場合には(S202のY)、mem_r、mem_wノードを取り除く(S204)。これにより、サブDFGjを、サブDFG(j−1)よりも下段に結合する(S206)。なお、サブDFGにメモリアクセスノードが含まれていない場合には(S202のY)、すぐに結合処理を実行する(S206)。jが全サブDFG数と等しくなければ(S210のN)、jを1インクリメントして(S212)、S202に戻る。jが全サブDFG数と等しくなると(S210のY)、この結合処理を終了する。ノードのアクセス順と処理遅延量を加味してサブDFG間を結合することで、アクセス遅延を含むDFGを実現できる。メモリアクセス処理のために遅延が生じたALUと同期させるために、同段の処理も遅延するなどの方法をとった場合と比較すると、読出処理の遅延分だけ遅延させることで、遅延分を最小とすることができ、全体としての処理時間を短縮できる。
本実施例では、メモリアクセス処理をリコンフィギュラブル回路12上で実現することにより、従来実現が困難であった配列への動的アクセスを含むC記述をリコンフィギュラブル回路12上で処理することが可能となる。また、DFG数を少なくできるため、処理時間を短縮でき、消費電力を低減できるという利点もある。さらに、DFG数を少なくすることで、設定データ量を削減でき、設定部14における設定データの格納領域の回路規模を小さくできる。
以上、本発明を実施例もとに説明した。実施例は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば、リコンフィギュラブル回路12におけるALUの配列は、縦方向にのみ接続を許した多段配列に限らず、横方向の接続も許した、メッシュ状の配列であってもよい。また、上記の説明では、段を飛ばして論理回路を接続する結線は設けられていないが、このような段を飛ばす接続結線を設ける構成としてもよい。また、図1では、処理装置10が1つのリコンフィギュラブル回路12を有する場合を示しているが、複数のリコンフィギュラブル回路12を有していてもよい。
今回開示された実施例はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
実施例に係る処理装置の構成図である。 リコンフィギュラブル回路の構成の一例を示す図である。 リコンフィギュラブル回路におけるALU間の接続関係を示す図である。 メモリへの書き込みを行うCソースの例を示す図である。 図4に示すCソースを変換したアセンブラ命令を示す図である。 DFGの生成過程を示す図である。 メモリの割り当てを示す図である。 メモリ部からの読出しを行うCソースの例を示す図である。 図8に示すCソースを変換したアセンブラ命令を示す図である。 DFGの生成過程を示す図である。 メモリの割り当てを示す図である。 (a)は複数のメモリアクセスが行われるCソースの例を示す図であり、(b)は、図12(a)のCソースの動作内容を示す図である。 図12(a)に示すCソースを変換したアセンブラ命令を示す図である。 コンパイル部で生成された3つのDFGを示す図である。 変換されたDFGを示す図である。 変換されたDFGを示す図である。 結合したDFGを示す図である。 コンパイル部におけるDFG作成処理のフローチャートである。 コンパイル部におけるDFG分割処理のフローチャートである。 コンパイル部におけるサブDFG結合処理のフローチャートである。
符号の説明
10・・・処理装置、12・・・リコンフィギュラブル回路、14・・・設定部、18・・・制御部、22・・・出力回路、24・・・経路部、26・・・集積回路装置、27・・・メモリ部、29・・・経路部、30・・・コンパイル部、32・・・設定データ生成部、34・・・記憶部。

Claims (7)

  1. メモリにアクセスするためのアドレスの出力と、前記アドレス以外の出力が可能である、機能の変更が可能な複数の論理回路を備えたリコンフィギュラブル回路の動作設定に必要な、論理回路の機能をノードとして表現したデータフローグラフを生成するデータフローグラフ生成装置であって、
    処理の動作を示すデータを読み出す手段と、
    読み出した前記データ中に、メモリへのアクセスがある場合、前記リコンフィギュラブル回路に接続されるメモリにアクセスするためのアドレスを出力するノードを生成するノード生成手段と、
    前記ノードを含むデータフローグラフを生成するデータフローグラフ生成手段と、
    を含むことを特徴とするデータフローグラフ生成装置。
  2. 前記データフローグラフ生成手段は、メモリのアドレスを出力するノードに対して、アドレスから読み出されたデータを受け取るノードの配置を、読出し処理の遅延分だけ下段に配置することを特徴とする請求項に記載のデータフローグラフ生成装置
  3. 機能の変更が可能な複数の論理回路を備えたリコンフィギュラブル回路の動作設定に必要な、論理回路の機能をノードとして表現したデータフローグラフを生成するデータフローグラフ生成装置であって、
    処理の動作を示すデータを読み出す手段と、
    読み出した前記データ中に、メモリへのアクセスがある場合、メモリへのアクセス順および処理の遅延量に応じて、データフローグラフを1つ以上のサブデータフローグラフに分割する分割手段と、
    1つ以上のサブデータフローグラフを、メモリへのアクセス順および処理の遅延量に応じて1つのデータフローグラフに結合する結合手段と、
    を備えることを特徴とするデータフローグラフ生成装置
  4. メモリにアクセスするためのアドレスの出力と、前記アドレス以外の出力が可能である、機能の変更が可能な複数の論理回路を備えたリコンフィギュラブル回路の動作設定に必要な、論理回路の機能をノードとして表現したデータフローグラフを生成するデータフローグラフ生成装置であって、
    処理の動作を示すデータフローグラフを読み出す手段と、
    読み出した前記データフローグラフ中に、メモリへのアクセスがある場合、前記データフローグラフをメモリアクセスを実行するノードを1つだけ含む複数のサブデータフローグラフに分割する分割手段を備えることを特徴とするデータフローグラフ生成装置。
  5. 機能の変更が可能な複数の論理回路を備えたリコンフィギュラブル回路の動作設定に必要な、論理回路の機能をノードとして表現したデータフローグラフを生成するデータフローグラフ生成装置であって、
    処理の動作を示すデータフローグラフを読み出す手段と、
    2つ以上のデータフローグラフ間にメモリを介したデータの授受が存在する場合、データフローグラフ内のメモリアクセスを行うノードのアクセス順と処理遅延量を加味して、データフローグラフ間を結合する結合手段を備えることを特徴とする、データフローグラフ生成装置
  6. 処理の動作を記述した動作記述をもとにデータフローグラフを生成する請求項1からのいずれかに記載のデータフローグラフ生成装置と、
    前記データフローグラフ生成装置で生成したデータフローグラフをもとに、リコンフィギュラブル回路に機能設定するための設定データを生成する設定データ生成部と、
    を含むことを特徴とする処理装置。
  7. 請求項1ないし5のいずれかに記載のデータフローグラフ生成装置から得られたデータフローグラフにしたがって動作するリコンフィギュラブル回路。
JP2004250670A 2004-08-30 2004-08-30 データフローグラフ生成装置、処理装置、リコンフィギュラブル回路。 Active JP4260086B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004250670A JP4260086B2 (ja) 2004-08-30 2004-08-30 データフローグラフ生成装置、処理装置、リコンフィギュラブル回路。

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004250670A JP4260086B2 (ja) 2004-08-30 2004-08-30 データフローグラフ生成装置、処理装置、リコンフィギュラブル回路。

Publications (2)

Publication Number Publication Date
JP2006065787A JP2006065787A (ja) 2006-03-09
JP4260086B2 true JP4260086B2 (ja) 2009-04-30

Family

ID=36112195

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004250670A Active JP4260086B2 (ja) 2004-08-30 2004-08-30 データフローグラフ生成装置、処理装置、リコンフィギュラブル回路。

Country Status (1)

Country Link
JP (1) JP4260086B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4601567B2 (ja) * 2006-03-09 2010-12-22 三洋電機株式会社 データフローグラフの生成方法、及び処理装置
JP2009187478A (ja) * 2008-02-08 2009-08-20 Sanyo Electric Co Ltd 情報処理装置、情報処理方法およびプロセッサ
JP2012068801A (ja) * 2010-09-22 2012-04-05 Sanyo Electric Co Ltd データフローグラフ処理装置
JP6141073B2 (ja) * 2013-04-02 2017-06-07 キヤノン株式会社 情報処理装置及び情報処理装置の制御方法

Also Published As

Publication number Publication date
JP2006065787A (ja) 2006-03-09

Similar Documents

Publication Publication Date Title
US11386644B2 (en) Image preprocessing for generalized image processing
KR100952760B1 (ko) 집적 회로 장치
JP4104538B2 (ja) リコンフィギュラブル回路、リコンフィギュラブル回路を備えた処理装置、リコンフィギュラブル回路における論理回路の機能決定方法、回路生成方法および回路
JP4484756B2 (ja) リコンフィギュラブル回路および処理装置
JP2006099719A (ja) 処理装置
JP4260086B2 (ja) データフローグラフ生成装置、処理装置、リコンフィギュラブル回路。
US7802005B2 (en) Method and apparatus for configuring buffers for streaming data transfer
CA2495812A1 (en) Technique for improving the efficiency of reconfigurable hardware
JP4535912B2 (ja) データフローグラフ生成装置
JP2006065788A (ja) リコンフィギュラブル回路を備えた処理装置
JP2002269162A (ja) 動作合成方法
JP2001209670A (ja) 高位合成方法、および、高位合成方法の実施に使用される記録媒体
JP2006065786A (ja) 処理装置
JP4436734B2 (ja) 処理装置
JP4562678B2 (ja) データフローグラフ再構成装置、リコンフィギュラブル回路の設定データ生成装置、及び処理装置
JP4562679B2 (ja) データフローグラフ生成装置
JP4276911B2 (ja) 集積回路の回路要素の配置方法および配置プログラム
JP2010146102A (ja) 演算処理装置および記憶領域割当方法
JP2005277673A (ja) 処理装置
Fabiani et al. Intermediate level components for reconfigurable platforms
JP2007207042A (ja) メモリ構築装置
JP4989354B2 (ja) データフローグラフ生成装置、設定データ生成装置、処理装置、及びデータフローグラフ生成方法
JP2010140197A (ja) 演算処理装置、および情報処理装置
JP2006004044A (ja) 回路装置およびプログラム処理方法
JP2009217619A (ja) 動作合成装置、動作合成方法、及び、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080701

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080829

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080924

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081121

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: 20090106

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: 20090203

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

Free format text: PAYMENT UNTIL: 20120220

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4260086

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: 20120220

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120220

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130220

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130220

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140220

Year of fee payment: 5