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

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

Info

Publication number
JP4275013B2
JP4275013B2 JP2004182516A JP2004182516A JP4275013B2 JP 4275013 B2 JP4275013 B2 JP 4275013B2 JP 2004182516 A JP2004182516 A JP 2004182516A JP 2004182516 A JP2004182516 A JP 2004182516A JP 4275013 B2 JP4275013 B2 JP 4275013B2
Authority
JP
Japan
Prior art keywords
data flow
flow graph
sub
dfg
circuit
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
JP2004182516A
Other languages
English (en)
Other versions
JP2006004345A (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 JP2004182516A priority Critical patent/JP4275013B2/ja
Priority to EP05105338A priority patent/EP1610242A3/en
Priority to CN2005100786053A priority patent/CN1713185B/zh
Priority to US11/155,667 priority patent/US7895586B2/en
Publication of JP2006004345A publication Critical patent/JP2006004345A/ja
Application granted granted Critical
Publication of JP4275013B2 publication Critical patent/JP4275013B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Description

この発明は、機能の変更が可能なリコンフィギュラブル回路の動作設定に必要なデータフローグラフを処理する技術に関する。
近年、アプリケーションに応じてハードウェアの動作を変更可能なリコンフィギュラブルプロセッサの開発が進められている。リコンフィギュラブルプロセッサを実現するためのアーキテクチャとしては、DSP(Digital Signal Processor)や、FPGA(Field Programmable Gate Array)を用いる方法が存在する。
FPGA(Field Programmable Gate Array)はLSI製造後に回路データを書き込んで比較的自由に回路構成を設計することが可能であり、専用ハードウエアの設計に利用されている。FPGAは、論理回路の真理値表を格納するためのルックアップテーブル(LUT)と出力用のフリップフロップからなる基本セルと、その基本セル間を結ぶプログラマブルな配線リソースとを含む。FPGAでは、LUTに格納するデータと配線データを書き込むことで目的とする論理演算を実現できる。しかし、FPGAでLSIを設計した場合、ASIC(Application Specific IC)による設計と比べると、実装面積が非常に大きくなり、コスト高になる。そこで、FPGAを動的に再構成することで、回路構成の再利用を図る方法が提案されている(例えば、特許文献1参照。)。
特開平10−256383号公報
例えば衛星放送では、季節などにより、放送モードを切り替えて画質の調整などを行うこともある。受信機では、放送モードごとに複数の回路を予めハードウェア上に作り込んでおき、放送モードに合わせて選択器で回路を切り替えて受信している。したがって、受信機の他の放送モード用の回路はその間、遊んでいることになる。モード切り替えのように、複数の専用回路を切り替えて使用し、その切り替え間隔が比較的長い場合、複数の専用回路を作り込む代わりに、切り替え時にLSIを瞬時に再構成することにすれば、回路構造をシンプルにして汎用性を高め、同時に実装コストを抑えることができる。このようなニーズに応えるべく、動的に再構成可能なLSIに製造業界の関心が集まっている。特に、携帯電話やPDA(Personal Data Assistance)などのモバイル端末に搭載されるLSIは小型化が必須であり、LSIを動的に再構成し、用途に合わせて適宜機能を切り替えることができれば、LSIの実装面積を抑えることができる。
FPGAは回路構成の設計自由度が高く、汎用的である反面、全ての基本セル間の接続を可能とするため、多数のスイッチとスイッチのON/OFFを制御するための制御回路を含む必要があり、必然的に制御回路の実装面積が大きくなる。また、基本セル間の接続に複雑な配線パターンをとるため、配線が長くなる傾向があり、さらに1本の配線に多くのスイッチが接続される構造のため、遅延が大きくなる。そのため、FPGAによるLSIは、試作や実験のために利用されるにとどまることが多く、実装効率、性能、コストなどを考えると、量産には適していない。さらに、FPGAでは、多数のLUT方式の基本セルに構成情報を送る必要があるため、回路のコンフィグレーションにはかなりの時間がかかる。そのため、瞬時に回路構成の切り替えが必要な用途にはFPGAは適していない。
それらの課題を解決するため、近年、ALU(Arithmetic Logic Unit)と呼ばれる基本演算機能を複数持つ多機能素子を多段に並べたALUアレイの検討が行われるようになった。ALUアレイでは、処理が上から下の一方向に流れるので、水平方向のALUを結ぶ配線は基本的には不要である。そのため、FPGAと比較して回路規模を小さくすることが可能となる。
ALUアレイでは、コマンドデータによりALU回路の演算機能構成と前後段のALUを接続する接続部の配線が制御され、所期の演算処理を実行することができる。コマンドデータは、一般にC言語等の高級プログラム言語で記述されたソースプログラムからデータフローグラフ(DFG:Data Flow Graph)を作成し、その情報をもとに作成される。
ALUアレイ上に1度にマッピングできるDFGの大きさはALUアレイの回路規模により制限されるため、大きなDFGは複数のDFGに分割して結合させる必要がある。結合して生成されるDFGの大きさは、ALUアレイで実行する回路コンフィギュレーションの回数に直接的な影響を与えるため、できるだけ小さく生成することが好ましい。
本発明はこうした状況に鑑みてなされたもので、その目的は、リコンフィギュラブル回路の動作設定に必要なデータフローグラフを効率よく処理できる技術を提供することにある。
本発明のある態様は、機能の変更が可能な複数の論理回路を備えたリコンフィギュラブル回路の動作設定に必要なデータフローグラフを処理するデータフローグラフ処理装置であって、 データフローグラフリコンフィギュラブル回路の論理回路の数に対応しない場合、論理回路の数に対応した複数のサブデータフローグラフに分割する第1分割手段と、ブデータフローグラフを変形して他のサブデータフローグラフ間に配置結合することにより、前記論理回路の数に対応した結合データフローグラフを生成する結合手段とを備える。理回路の数に応じてデータフローグラフを分割することで、もとのデータフローグラフがリコンフィギュラブル回路の大きさを超える場合であっても、適切な大きさに分けて、結合させることができる。
本発明の他の態様は、機能の変更が可能な複数の論理回路を備え、論理回路の1段以上の接続構造を有するリコンフィギュラブル回路の動作設定に必要なデータフローグラフを処理するデータフローグラフ処理装置であって、 データフローグラフの列数がリコンフィギュラブル回路の1段あたりの論理回路の数を超える場合、列数が前記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は、制御部18からの指示に基づき、リコンフィギュラブル回路12から出力されるデータ信号および/または外部から入力されるデータ信号を格納するための記憶領域を有する。メモリ部27はRAMとして構成される。メモリ部27にデータを書き込んで、そのデータを読み出すためには、少なくとも、それぞれの処理につき1クロック分の時間がかかる。メモリ部27に格納されたデータ信号は、制御部18からの指示に基づいて、経路部29を通じてリコンフィギュラブル回路12の入力として伝達される。メモリ部27は、制御部18からの指示により所定のタイミングでデータ信号をリコンフィギュラブル回路12に供給することができる。なお、メモリ部27は、設定部14からの指示によりデータ信号を出力してもよい。設定部14がコマンドメモリとして構成されている場合、メモリ部27の出力タイミングを指示するコマンドデータを有し、制御部18からのカウント値に基づいてコマンドデータをメモリ部27に出力してもよい。この場合、設定部14は、メモリ部27の動作を制御する制御部としても機能する。
リコンフィギュラブル回路12は、機能の変更が可能な論理回路を有して構成される。具体的にリコンフィギュラブル回路12は、複数の演算機能を選択的に実行可能な論理回路を複数段に配列させた構成を備え、さらに前段の論理回路列の出力と後段の論理回路列の入力との接続関係を設定可能な接続部を備える。各段に含まれる複数の論理回路は、論理回路の集合体を構成する。この接続部は、前段の論理回路列の出力すなわち内部状態を保持する状態保持回路(以下、FF回路とも呼ぶ)の機能も備える。複数の論理回路は、マトリックス状に配置される。各論理回路の機能と、論理回路間の接続関係は、設定部14により供給される設定データ40に基づいて設定される。設定データ40は、以下の手順で生成される。
集積回路装置26により実現されるべきプログラム36が、記憶部34に保持されている。プログラム36は、回路における処理の動作を記述した動作記述を示し、信号処理回路または信号処理アルゴリズムなどをC言語などの高級言語で記述したものである。コンパイル部30は、記憶部34に格納されたプログラム36をコンパイルし、プログラム全体のデータフローグラフ(DFG)38に変換して記憶部34に格納する。データフローグラフ38は、回路における演算間の実行順序の依存関係を表現し、入力変数および定数の演算の流れをグラフ構造で示したものである。一般に、データフローグラフ38は、上から下に向かって演算が進むように形成される。
データフローグラフ処理部31は、コンパイル部30により生成された1以上のDFGを、リコンフィギュラブル回路12の論理回路の集合体に含まれる論理回路の数に応じて、複数のサブDFGに分割する。具体的には、1以上のDFGを、リコンフィギュラブル回路12の段あたりの論理回路数、すなわち列数以下となる大きさに分割する。リコンフィギュラブル回路12が6列×3段の論理回路を有して構成される場合、DFGが6列を超えている場合に、列数を6以下とするサブDFGに分割する。
データフローグラフ処理部31は、分割した複数のサブDFGを、論理回路の列数を超えないように結合する。これにより、列数を論理回路の集合体の列数以下とする結合DFGを生成する。続いて、データフローグラフ処理部31は、結合DFGを分割して、複数のサブ結合DFGを生成する。このとき、サブ結合DFGの段数が、リコンフィギュラブル回路の論理回路の集合体の個数以下となるように、結合したDFGは分割される。具体的に、データフローグラフ処理部31は、結合したDFGをリコンフィギュラブル回路12の回路の段数以下となるように再分割する。リコンフィギュラブル回路12が6列×3段の論理回路を有して構成される場合、結合したDFGは、3段以下のサブ結合DFGに再分割される。分割した複数のサブ結合DFGは記憶部34に格納される。リコンフィギュラブル回路12に、分割した複数のサブ結合DFGにより定められる回路を繰り返し生成することで、リコンフィギュラブル回路12上に所期の回路を表現することが可能となる。
また、プログラム36の構成上、コンパイルした時点で複数のDFGが生成されることもある。例えば、互いに関連する複数のプログラム36をコンパイルする場合や、繰り返し呼び出されるルーチンプログラムが複数存在するプログラム36をコンパイルする場合などである。処理装置10において、複数のDFGがコンパイル部30により生成され、またコンパイル部30により生成されたDFGをデータフローグラフ処理部31が上述した処理を行うことで、複数のサブ結合DFGが生成される。
このようにして生成された複数のデータフローグラフ38は、その実行順序が不明であるため、それを適切に定める必要がある。複数のデータフローグラフ38に対して実行順序を任意に設定すると、演算に必要な入力データが揃っていないデータフローグラフ38を実行しなければならない事態も生じ得る。例えば、今回実行するデータフローグラフ38に必要な入力データを生成するためのデータフローグラフ38が、今回実行するデータフローグラフ38の実行順序よりも後にあるような場合には、その回路の演算処理が実現不可能となることもある。また、メモリ部27から必要な入力データを読み出す時間がかかり、その間、データ待ちのために処理を停止するような場合は、短時間で回路のコンフィギュレーションを実現することが困難となる。これは、処理のリアルタイム性、すなわち高速性が要求される場合に、大きな制約となることがある。
以上の理由から、実施例のデータフローグラフ処理部31は、最終的にリコンフィギュラブル回路12にマッピングする回数を少なくするように、データフローグラフ38を適切に処理する。データフローグラフ38の処理方法については、図6以降の説明において詳細に示す。
設定データ生成部32は、データフローグラフ処理部31により決定されたデータフローグラフ38をもとに、設定データ40を生成する。設定データ40は、データフローグラフ38をリコンフィギュラブル回路12にマッピングするためのデータであり、リコンフィギュラブル回路12における論理回路の機能や論理回路間の接続関係、さらには論理回路に入力させる定数データなどを定める。以下では、設定データ生成部32が、1つの生成すべきターゲット回路を分割してできる複数の回路の設定データ40を生成する例について説明する。
図2は、ターゲット回路42を分割してできる複数の回路について説明するための図である。1つのターゲット回路42を分割して生成される回路を、「分割回路」と呼ぶ。この例では、1つのターゲット回路42が、上下方向および左右方向に4つの分割回路、すなわち分割回路A、分割回路B、分割回路C、分割回路Dに分割されている。複数の分割回路は、リコンフィギュラブル回路12の列数の範囲内でそれぞれ結合され、実質的に等価な新たなターゲット回路として再生成されることになる。
本実施例では、生成すべきターゲット回路42の横方向のノード数がリコンフィギュラブル回路12の横方向のノード数(列数)よりも大きい場合、リコンフィギュラブル回路12にマッピングできる大きさになるように、ターゲット回路42のデータフローグラフ38がデータフローグラフ処理部31において左右方向に分割される。なおノードは、データフローグラフ38において論理回路の機能を表現する。また、リコンフィギュラブル回路12の列数や、ALU間の入出力制限などにより、上下方向のノード間の接続を変更する必要がある場合に、ターゲット回路42のデータフローグラフ38が上下方向に分割される。リコンフィギュラブル回路12の配列構造は、制御部18からデータフローグラフ処理部31に伝えられてもよく、また予め記憶部34に記録されていてもよい。本実施例において、データフローグラフ38は演算間の実行順序の依存関係を表現するものであり、データフローグラフ処理部31は、データフローグラフを、リコンフィギュラブル回路12の列数に応じて分割し、分割したデータフローグラフをサブデータフローグラフとして設定する。
データフローグラフ処理部31は、複数のサブDFGの接続関係を調査する。なお、左右方向のみに分割した場合も同様に、データフローグラフ処理部31は、その接続関係を調査する必要がある。接続関係を調査すると、データフローグラフ処理部31は、接続関係にしたがって、複数のサブDFGを結合し、1つの大きな結合DFGを生成する。なお、この結合DFGは、その列数がリコンフィギュラブル回路12の列数以下となるように生成される。データフローグラフ処理部31は、結合したDFGを、リコンフィギュラブル回路12の段数以下に分割していき、複数のサブ結合DFGを生成する。
設定データ生成部32は、複数のサブ結合DFGの設定データ40を生成し、記憶部34に記憶する。複数の設定データ40は、リコンフィギュラブル回路12の段数以下に分割した複数のサブ結合DFGを、リコンフィギュラブル回路12にマッピングするためのデータとして表現したものである。これにより、リコンフィギュラブル回路12の回路規模よりも大きいデータフローグラフを、リコンフィギュラブル回路12にマッピング可能な大きさに処理することが可能となる。このように、リコンフィギュラブル回路12の列数に応じてDFGを再構成して、ターゲット回路42の設定データ40を生成することにより、汎用性の高い処理装置10を実現することが可能となる。別の視点からみると、実施例の処理装置10によれば、回路規模の小さいリコンフィギュラブル回路12を用いて、所望の回路を再構成することが可能となる。
図3は、リコンフィギュラブル回路12の構成を示す。リコンフィギュラブル回路12は、複数の演算機能を選択的に実行可能な論理回路50より構成される論理回路列を複数備える。具体的に、リコンフィギュラブル回路12は、論理回路列の多段接続構造と、各段に設けられた接続部52を備えて構成される。ここで多段とは、2以上の段であることを意味する。接続部52は、前段の論理回路の出力と後段の論理回路の入力の任意の接続関係あるいは予め定められた接続関係の組合せの中から選択された接続関係を設定することができる。また接続部52は、前段の論理回路の出力信号を保持することができる。リコンフィギュラブル回路12では、論理回路の多段接続構造により、上段から下段に向かって演算が進められる。なお、リコンフィギュラブル回路12は、論理回路列の1段の接続構造を有していてもよい。
リコンフィギュラブル回路12は、論理回路50としてALU(Arithmetic Logic Unit)を有している。ALUは、複数種類の多ビット演算を選択的に実行可能な算術論理回路であって、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行できる。各ALUは、複数の演算機能を設定するためのセレクタを有して構成されている。図示の例では、ALUが、2つの入力端子と2つの出力端子を有して構成される。
図示のように、リコンフィギュラブル回路12は、縦方向にX個、横方向にY個のALUが配置されたX段Y列のALUアレイとして構成される。第1段のALU11、ALU12、・・・、ALU1Yには、入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第1段の接続部52に設定された接続にしたがって、第2段のALU21、ALU22、・・・、ALU2Yに入力される。第1段の接続部52においては、第1段のALU列の出力と第2段のALU列の入力の間で任意の接続関係、あるいは予め定められた接続関係の組合せの中から選択された接続関係を実現できるように結線が構成されており、設定により所期の結線が有効となる。以下、最終段である第X段の接続部52まで同様の構成である。ALU列は、ALUの集合体に相当する。
なお、図3のリコンフィギュラブル回路12においては、接続部52が、ALU列と交互に1段ずつ設けられた構成を示している。この接続部52を各ALU列の下段に配置することにより、リコンフィギュラブル回路12は、1段ずつのALU列から構成されるX段のリコンフィギュラブルユニットに分割されることになる。具体的に、1段のリコンフィギュラブルユニットは、1段のALU列と1段の接続部52で構成される。この分割は、接続部52に含まれるFF回路にしたがうものであり、例えば2段のALU列ごとに接続部52を設け、2段のALU列の間を、FF回路を有しない接続部で接続する場合には、2段ずつのALU列で構成されるX/2段のリコンフィギュラブルユニットに分割されることになる。それ以外にも、FF回路を所定段のALU列ごとに設けることにより、所望段のリコンフィギュラブルユニットを構成することができる。
回路のコンフィギュレーションは1クロックで行われる。具体的に、設定部14が1クロックごとに設定データをリコンフィギュラブル回路12にマッピングする。各ALU列の出力は、後段の接続部52に保持される。なお、メモリ部27へのデータの書込および読出しも、それぞれ1クロックで行われる。したがって、メモリ部27にデータを書き込んで、そのデータを読み出すためには、少なくともALU列2段分の処理に相当する時間が必要となる。
接続部52は、外部やメモリ部27から供給される変数や定数を、所期のALUに供給する機能を有している。この機能を途中入力機能と呼ぶ。また、接続部52は、前段のALUの演算結果を外部に直接出力することもできる。この機能を途中出力機能と呼ぶ。この構成により、多様な組合せ回路を構成することが可能となり、設計の自由度が向上する。
図4は、データフローグラフ38の構造を説明するための図である。データフローグラフ38においては、入力される変数や定数の演算の流れが段階的にグラフ構造で表現されている。図中、演算子は丸印で示されており、ノードを表現する。設定データ生成部32は、このデータフローグラフ38をリコンフィギュラブル回路12にマッピングするための設定データ40を生成する。実施例では、特にデータフローグラフ38をリコンフィギュラブル回路12にマッピングしきれない場合に、データフローグラフ38を複数の領域に分割して結合し、さらに再分割することによって分割回路の設定データ40を生成する。データフローグラフ38による演算の流れを回路上で実現するべく、設定データ40は、演算機能を割り当てる論理回路を特定し、また論理回路間の接続関係を定め、さらに入力変数や入力定数などを定義したデータとなる。したがって、設定データ40は、各論理回路50の機能を選択するセレクタに供給する選択情報、接続部52の結線を設定する接続情報、必要な変数データや定数データなどを含んで構成される。
図1に戻って、回路の構成時、制御部18は、1つのターゲット回路42を構成するための複数の設定データ40を記憶部34から選択して読み出す。設定部14がコマンドメモリとして構成されている場合、制御部18は設定部14に対してプログラムカウンタ値を与え、設定部14は、そのカウンタ値に応じて格納した設定データを、コマンドデータとしてリコンフィギュラブル回路12に設定する。なお、設定部14は、キャッシュメモリや他の種類のメモリを有して構成されてもよい。なお、制御部18が記憶部34から設定データ40を受けて、その設定データ40を設定部14に供給してもよいが、制御部18を介さずに、予め設定部14に設定データを格納しておいてもよい。この場合、制御部18は、設定部14に予め格納された複数の設定データの中からターゲット回路42に応じた設定データがリコンフィギュラブル回路12に供給されるように、設定部14のデータ読出しを制御する。
設定部14は、設定データ40をリコンフィギュラブル回路12に設定し、リコンフィギュラブル回路12の回路を逐次再構成させる。これにより、リコンフィギュラブル回路12は、ターゲット回路に基づく所期の演算を実行できる。リコンフィギュラブル回路12は、基本セルとして高性能の演算能力のあるALUを用いており、またリコンフィギュラブル回路12および設定部14を1チップ上に構成することから、コンフィグレーションを高速に、例えば1クロックで実現することができる。制御部18はクロック機能を有し、クロック信号は、出力回路22およびメモリ部27に供給される。また制御部18は4進カウンタを含み、カウント信号を設定部14に供給してもよい。
図5は、リコンフィギュラブル回路12におけるALU間の接続関係を示す図である。なお、図5では、ALU列の間に配置される接続部52の図示を省略している。図5に示すリコンフィギュラブル回路12では、横方向に6個、縦方向に3個のALUが配置されたALUアレイとして構成される。第1段のALU11、ALU12、・・・、ALU16には、入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第1段の接続部52に設定された接続にしたがって、第2段のALU21、ALU22、・・・、ALU26に入力される。第1段の接続部52においては、第1段のALU列の出力と第2段のALU列の入力の間で、一定の接続制限が課された接続関係を実現できるように結線が構成されており、設定により、その範囲内での所期の結線が有効となる。なお、第2段の接続部52においても同様である。最終段である第3段のALU列は演算の最終結果を出力する。接続部52は、ALU段の間で、物理的に近接して配置された論理回路同士を接続可能とするように構成される。これにより、配線長を短くすることができ、回路規模を削減することができる。その結果、低消費電力化及び処理高速化が可能となる。
図5に示すリコンフィギュラブル回路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間の接続を可能とする場合と比較すると、配線数を大幅に削減することが可能となる。
図6は、本実施例におけるデータフローグラフ38の処理フローを示す。コンパイル部30がプログラム36をコンパイルして(S10)、1以上のデータフローグラフ38を生成する(S12)。データフローグラフ処理部31は、生成された1以上のデータフローグラフ38を、列数がリコンフィギュラブル回路12の列数以下となるように分割して、サブDFGを生成し(S14)、分割した複数のサブDFGの接続関係を調査して決定する(S16)。
次に、データフローグラフ処理部31は、複数のサブDFGの接続関係をもとに、複数のサブDFGを結合して、結合DFGを生成する(S18)。また、データフローグラフ処理部31は、複数のサブDFGを結合することで生成される結合DFGを、リコンフィギュラブル回路12の段数以下となるように再分割する(S20)。設定データ生成部32は、再分割したDFGをもとに設定データ40を生成する(S22)。設定データ40はリコンフィギュラブル回路12の機能および接続関係などを設定し、リコンフィギュラブル回路12は、設定データ40により各種機能を設定されることで、所期の回路処理を実行することができる。
図7は、データフローグラフ処理部31の構成を示す。データフローグラフ処理部31は、第1DFG分割部60、DFG結合部61、および第2DFG分割部62を備える。実施例におけるデータフローグラフ処理機能は、処理装置10において、CPU、メモリ、メモリにロードされたDFG処理用プログラムなどによって実現され、ここではそれらの連携によって実現される機能ブロックを描いている。DFG処理用プログラムは、処理装置10に内蔵されていてもよく、また記録媒体に格納された形態で外部から供給されるものであってもよい。したがってこれらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者に理解されるところである。
(DFGの分割)
第1DFG分割部60は、コンパイル部30により生成されたDFGの列数がリコンフィギュラブル回路12の論理回路の集合体の数を超える場合、DFGの列数が論理回路の集合体の数以下となるようにDFGを分割する。これにより、DFGは複数のサブDEGに分割される。
図8は、リコンフィギュラブル回路12の回路規模を超えるDFGの例を示す。図中、四角の中に示す数字は、ノードの番号を示す。このDFGは12段7列のノードを有して構成される。図5に示すように、3段6列のALUが存在する場合、DFGは縦横ともにALU回路の大きさを超えている。最終的には、DFGを分割して、ALU回路にマッピングできる大きさ、すなわち3段6列以下となる大きさにする必要があるが、本実施例では、段方向の分割は後回しとし、最初に第1DFG分割部60が、列方向のノード数が6列以下となるようにDFGを分割していく。
第1DFG分割部60は、列方向を6列以下とし、また上下段の接続に用いられるノードが6列を超えないように、図8に示す7列のDFGを分割して、サブDFGを生成する。このとき、図5に示すように、ALU間には3方向の接続制限が課されているものとする。
図8において、3段目と4段目の間の接続関係について検討する。ノード21は、ノード15およびノード17と接続するため、図示のように第2列に配置される必要がある。4段目では、第2列のノード21から第6列のノード25まで隙間を空けずに配置されるが、ノード25は、第7列のノード20と接続される。したがって、4段目のALUは、3段目の7列のALUに対して接続されることになる。そのため3段目のALU列と4段目のALU列の間は、直接接続することができず、上下方向に分割する必要があることが分かる。
同様に、6段目と7段目の間の接続関係について検討する。7段目においてノード41からノード47まで隙間なく配置されているが、6段目からみると、ノード34からノード39までの出力が、7段目の7つのALUに接続される。したがって、6段目のALUは、7段目の7列のALUに対して接続されることになる。そのため6段目のALU列と7段目のALU列の間は、直接接続することができず、分割する必要があることが分かる。以上の処理は、第1DFG分割部60により実行される。
図9は、図8に示すDFGを分割して生成した6つのサブDFGを示す。第1DFG分割部60は、列数を6以下とするようにサブDFGを生成する。なお、サブDFGは、できるだけノードを左側および上側につめるように生成される。サブDFG38a〜38fは、列方向のみを6列以下にするように生成されるが、段方向についての制限は課されない。
(サブDFG接続関係の決定)
DFG結合部61は、複数のサブDFGの接続関係を調査する。例えば、サブDFG38aの出力が別のサブDFG38cの入力に必要とされる場合、サブDFG38aの出力がデータフローグラフ38cの入力と接続する関係にあることが定められる。DFG結合部61は、このようなサブDFG間の接続関係を調査する。
図10は、DFG結合部61により定められる図9に示すサブDFGの接続関係を示す。ここでは、サブDFGを1つのブロックとしてみなし、ブロック間の接続関係を定めている。この接続関係図では、処理の流れを上段から下段にかけて示す。サブDFG38aとサブDFG38bの間には接続関係はない。サブDFG38aの出力は、サブDFG38cおよびサブDFG38dの入力に接続され、サブDFG38bの出力は、サブDFG38cの入力に接続される。またサブDFG38cの出力は、サブDFG38eおよびサブDFG38fの入力に接続される。なお、この接続関係は、図8に示すDFGのノード間の接続から導き出されるものである。
(サブDFGの結合)
図11は、サブDFGを結合するフローチャートを示す。なおサブDFGを仮想的なノード空間に配置する具体的な処理については、図12のフローチャートに示される。まず、図10に示す接続関係図をもとに、サブDFGを、他のサブDFGに入力される出力をもつDFG群(DFG群1)と、他のサブDFGに入力される出力をもたないDFG群(DFG群2)に分類する(S102)。図10において、サブDFG38aの出力はサブDFG38c、38dの入力となっており、サブDFG38bの出力はサブDFG38cの入力となっており、サブDFG38cの出力はサブDFG38e、38fの入力となっている。したがって、サブDFG38a、38b、38cはDFG群1に属し、サブDFG38d、38e、38fは、その出力が他のサブDFGに入力されないため、DFG群2に属する。
DFG群1に属するサブDFGは、その出力を必要とする他のサブDFGが存在しているため、サブDFGを結合して生成する結合DFGの規模を小さくするためには、できるだけ上段に配置されることが好ましい。これは、DFG群1のサブDFGの下方に、さらにサブDFG群2のサブDFGを結合する必要があるためである。一方、DFG群2に属するサブDFGは、自身の入力データを受け取り可能な位置であれば、基本的にはどこに配置してもよい。したがって、本実施例では、DFG群1の結合処理のあとに、DFG群2の結合処理を実行することとする。これにより、DFG群2に属するサブDFGを、既に配置済みのサブDFG間の隙間などに配置結合させることが可能となり、結合して生成する結合DFGの段数を減らすことができる。したがって、最終的に結合DFGを再分割して生成するサブ結合DFGの個数を少なくできるため、リコンフィギュラブル回路12への効率的なマッピング処理が可能となる。
DFG群1において、図10に示す接続関係の各段ごとに、サブDFGをノード数の多い順に探索する(S104)。DFG群1の1段目のサブDFG38a、38bのノード数を比較すると、サブDFG38aのノード数が17、サブDFG38bのノード数が3であり、サブDFG38aのノード数の方が多い。したがって、DFG群の1段目では、サブDFG38a、サブDFG38bの順番が設定される。2段目はサブDFG38cのみであるため、ノード数の多い順を探索する必要はない。mをDFG群1の接続関係の総段数とする(S106)。DFG群1は、1段目のサブDFG38a、38bと2段目のサブDFG38cとから構成されており、したがってDFG群1の総段数mは2である。i=1(S108)、j=1(S110)をセットし、nをDFG群1の接続関係のi段目のDFGの総数とする(S112)。DFG群1の1段目のサブDFGの総数は2であるため、nに2がセットされる。
DFG群1の接続関係のi段目、j個目のサブDFGを選択する(S114)。ここでは、まず1段目1個目のサブDFG38aが選択される。続いて、選択したサブDFG38aに対して、結合処理を実行する(S120)。結合処理については、図12に関連して後述する。
結合処理の後、jがnに達しているか否かを判断する(S122)。ここで、j=1、n=2であるため(S122のN)、jに1を加えて(S124)、S114に戻る。S114では、DFG群1の1段目2個目のサブDFG38bが選択され、結合処理される。この後、j=n(S122のY)となり、iがmに達しているか否かを判断する(S126)。i=1、m=2であるため(S126のN)、iに1を加えて(S128)、S110に戻り、jを1にセットする。なお、2段目のDFGの総数nは1にセットされる。
2段目1個目のサブDFG38cを選択して、結合処理を行った後、j=1、n=1(S122のY)により、iがmに達しているか否かを判断する(S126)。i=2、m=2であり(S126のY)、これによりDFG群1に属するすべてのサブDFGの結合が終了する。
次に、DFG群2に属するサブDFGの結合を行う。DFG群2において、DFG群2に属するすべてのサブDFGをノード数の多い順に探索する(S130)。DFG群2に属するサブDFG38dのノード数は4、サブDFG38eのノード数は23、サブDFG38fのノード数は4である。なおサブDFG38d、38fのノード数は等しく、どちらのサブDFGを先に結合してもよいが、この例ではDFG38dをDFG38fの先の順番として、結果としてサブDFG38e、サブDFG38d、サブDFG38fの順番が設定される。続いて、mをDFG群2のDFGの総数とする(S132)。ここでは、m=3となる。またiに1をセットする(S134)。
設定した順にしたがって、DFG群2のi個目のサブDFGを選択する(S136)。ここでは、DFG群2における1番目のサブDFG38eが選択される。このサブDFG38eに対して、結合処理を行う(S140)。結合処理の後、iがmに達しているか否かを判断する(S142)。i=1、m=3であるため(S142のN)、iに1を加えてS136に戻る。この処理を繰り返し、2個目のサブDFG38dを選択して結合処理を行い、また3個目のサブDFG38fを選択して結合処理を行うことで、iがmに到達する(S142のY)。以上により、すべてのサブDFGの結合が終了する。
本実施例では、DFG群1をDFG群2よりも先に結合することで、結果として全体では、サブDFG38a、サブDFG38b、サブDFG38c、サブDFG38e、サブDFG38d、サブDFG38fの順番で結合処理が行われたことになる。
なお、DFG群1およびDFG群2の双方において、本実施例では、上段のサブDFGから結合処理を行っている。これにより、新たに結合処理するサブDFGの入力データは、すでに結合処理されたサブDFGの出力または外部入力とすることができ、入力データの揃うタイミングの時間遅延を低減できる。これは、DFGの処理が、上から下に向かって演算が進むように実行されるためである。これにより、リコンフィギュラブル回路12でのコンフィギュレーション処理において、データの読み出し待ちなどを最小限にすることができ、効率的に設定データを作成することが可能となる。
図12は、図11のS120およびS140に示す結合処理のフローチャートを示す。結合処理では、列数をリコンフィギュラブル回路12の列数に合わせた仮想的なノード空間に、サブDFGを結合配置させる。
図13は、列数を6とし、段数を無限とする仮想的なノード空間を示す。結合処理では、このノード空間に収まるように、サブDFGを配置していく。なお、横方向(列方向)をx軸とし、縦方向(段方向)をy軸としている。
最初に、1番目のサブDFG38aの結合処理の手順を示す。サブDFG38aの結合処理においては、仮想ノード空間に配置されている他のサブDFGは存在しない。まず、結合処理するサブDFGの最上段、最左のノードを選択する(S200)。最初に結合処理するサブDFG38aの最上段、最左のノードはノード番号1のノードである(図9参照)。続いて、y=1(S202)、x=1(S204)をセットする。続いて、配置位置(x,y)に、すでに他のノードが配置されているか否かを判断する(S206)。サブDFG38aは最初に配置するDFGであるため、(1,1)に配置されているノードは存在しない。(x,y)の位置に他のノードが配置されていない場合(S206のN)、最上段且つ最左のノードを(x,y)に配置したときに、サブDFG38aのすべてのノードが配置可能であるか否かを調査する(S208)。
配置調査では、以下の条件を設定する。
(1)配置するサブDFGが、図13に示す仮想ノード空間を超えないこと。
(2)新たに配置するサブDFGのノードに対して入力されるデータが全て揃うこと。
(3)入出力制限等のリコンフィギュラブル回路特有の制限を満たしていること。
(3)の条件は、例えば図5に示すように、ALUからの入出力が同列および左右列の3方向に制限されていることなどを含む。
なお、配置するサブDFG同士は、図8に示すもとのDFGにおける演算関係を維持することが必要である。なお、すでに配置されているノードに対して、配置位置をずらすことにより、ノードの配置が可能となる場合には、配置可能な全ての場合について配置調査を行うことで、全ての選択肢の中から効率的な配置を選択することも可能となる。例えば、サブDFG38aは、ノード1を(1,1)に配置する場合以外に配置できる位置を有していないが、例えば他のサブDFGで、(1,1)にも(2,1)にも配置可能な場合には、それぞれの場合についての結合処理を行って、最終的に生成される結合DFGの段数の少ないものを選択することとしてもよい。
配置調査では、上記した条件が、結合処理するサブDFGのすべてのノードに対して満たされているか否かを調査する(S210)。ノード1を、(1,1)の位置に配置した場合に、サブDFG38aの全てのノードを配置することが可能となる。全てのノードを配置可能な場合(S210のY)、サブDFG38aのノードを仮想ノード空間に配置して(S218)、1番目のサブDFG38aの結合処理を終了する。
次に、2番目のサブDFG38bの結合処理の手順を示す。サブDFG38bの最上段、最左のノードとして存在するノード番号7のノードを選択する(S200)。続いて、y=1(S202)、x=1(S204)をセットする。次に、ノード7の配置位置(x,y)に、すでに他のノードが配置されているか否かを判断する(S206)。
この場合、サブDFG38aがすでに配置済みであって、(1,1)の位置にはすでにノード1が配置されている(S206のY)。このとき、x=1であって、Xmaxである6には達していないため(S212のN)、xに1を加えて(S216)、(2,1)の位置に他のノードが配置されているか否かを判断する(S206)。この処理はxをインクリメントして、x=6となるまで続けられる(S212のY)。続いて、yに1を加えて(S214)、またx=1をセットする(S204)。この処理は、他のノードが配置されていない(x,y)が見つけられるまで繰り返される。この探索処理を繰り返すと、(6,3)の位置に他のノードが配置されていないことが判断される(S206のN)。続いて、DFG38bのノード7を(6,3)に配置した場合に、DFG38bの他のすべてのノードが配置可能であるか否かを調査する(S208)。この場合、すべてのノードの配置が可能であるため(S210のY)、サブDFG38bを仮想ノード空間に配置して(S218)、サブDFG38bの結合処理を終了する。
次に、3番目のサブDFG38cの結合処理の手順を示す。サブDFG38cの最上段、最左のノードとして存在するノード番号21のノードを選択する(S200)。続いて、y=1(S202)、x=1(S204)をセットする。次に、ノード21の配置位置(x,y)に、すでに他のノードが配置されているか否かを判断する(S206)。
この場合、サブDFG38aおよびサブDFG38bがすでに配置済みであり、したがって(x,y)を探索すると、(6,3)の位置まで他のノードが配置されている(S206のY)。探索の結果、(1,4)の位置に、ノード21を配置できることが判断される(S206のN)。
このとき、(1,4)の位置にノード21を配置することは、ノード27が仮想ノード空間からはみ出すため、適切でない。またノード21はノード15とノード17の出力を入力としており(図8参照)、ノード21を(1,4)に配置すると、ALUの入出力制限のため、ノード15には接続可能であるが、ノード17とは接続することができない。以上により、ノード21は(1,4)に配置することができない。また、ノード25がノード14と重なるため、ノード21は(2,4)にも配置できない。したがって、ノード25は4段目に配置できないことが分かる。
ノード間を直接的に接続することができない場合、ノードの出力データは、一旦メモリ部27に格納される。出力データがメモリ部27を経由して所期のALUに入力されるためには、メモリ部27の書き込みと読み出しにかかる時間を考慮すると、少なくとも2クロック分の時間が必要となる。このように、リコンフィギュラブル回路12の論理回路の出力データを一旦メモリ部27に書き込み、そのデータを読み出して、異なる又は同一の論理回路に入力する際に、時間遅延が発生する。リコンフィギュラブル回路12において、ALU列の1段分の演算処理は1クロックかかるため、したがってメモリ部27に一旦格納して、再度読み出す処理は、少なくともALU2段分の演算処理時間に相当する。
本実施例では、メモリ部27への書き込み、および読出し時間を考慮してノードを配置することで、ノードにおける処理時には、必ず入力データが揃っている状況をつくることができる。これにより、切れ目無くDFGを処理できるとともに、データ待ちの間に他の演算処理を実行させることが可能であるため、全体の処理時間を短縮化でき、処理パフォーマンスを向上できる。さらに、消費電力を少なくできるという利点もある。
この場合、ノード15、ノード17が3段目に配置されているため、ノード21を4段目に配置できないのであれば、ノード21は、6段目以降に配置しなければいけないことになる。このように、新たに結合するサブDFGのノードの位置は、既に配置されたノードの位置から、時間遅延分に相当するALU列の段数以上の段数をあけることにより決定される。(x,y)の探索を行い、ノード21を(2,6)の位置に配置した場合に、サブDFG38cのすべてのノードを仮想ノード空間上に配置することが可能となる(S210のY)。このとき、ノード25はノード20と接続される。このように、メモリ部27からの読出し処理を介さない場合、サブDFGの結合処理は、サブDFG間におけるノードの接続を維持するように行われる。以上によりサブDFG38cを仮想ノード空間に配置して(S218)、サブDFG38cの結合処理を終了する。
次に、4番目のサブDFG38eの結合処理の手順を示す。サブDFG38eの最上段、最左のノードとして存在するノード番号41のノードを選択する(S200)。以下、S202以降の処理を実行すると、ノード41を(1,9)の位置に配置したとき、ノード41〜46が直上の段のノードと接続することができ、サブDFG38eのすべてのノードを配置することができる(S210のY)。サブDFG38eを仮想ノード空間に配置して(S218)、サブDFG38eの結合処理を終了する。
次に、5番目のサブDFG38dの結合処理の手順を示す。サブDFG38dの最上段、最左のノードとして存在するノード番号26のノードを選択する(S200)。ノード26はノード19からの出力データを入力としている。したがって、ノード26を配置可能な位置は、ALUの入出力制限の関係に基づいてノード19から出力データを直接受け取れる(4,4)、(5,4)、(6,4)の位置か、または一旦メモリ部27に格納して、それから読み出す場合には6段目以降の位置である必要がある。S202以降の処理を実行すると、ノード26を(1,10)の位置に配置したとき、サブDFG38dのすべてのノードを配置することができる(S210のY)。以上によりサブDFG38dを仮想ノード空間に配置して(S218)、サブDFG38dの結合処理を終了する。
最後に、6番目のサブDFG38fの結合処理の手順を示す。サブDFG38fの最上段、最左のノードとして存在するノード番号47のノードを選択する(S200)。ノード47はノード39からの出力データを入力としている。したがって、ノード47を配置可能な位置は、ALUの入出力制限の関係に基づいてノード39から出力データを直接受け取れる(5,9)、(6,9)の位置か、または一旦メモリ部27に格納して、それから読み出す場合には11段目以降の位置である必要がある。S202以降の処理を実行すると、ノード47を(6,11)の位置に配置したとき、サブDFG38fのすべてのノードを配置することができる(S210のY)。以上によりサブDFG38fを仮想ノード空間に配置して(S218)、サブDFG38fの結合処理を終了する。
図14は、結合処理の結果、生成された結合DFGを示す。結合DFGの列数は、リコンフィギュラブル回路12の列数以下となるように設定される。リコンフィギュラブル回路12へのマッピング効率を高めるために、結合DFGの列数は、リコンフィギュラブル回路12の列数と等しくなるように定められる。
本実施例では、DFG群1およびDFG群2のそれぞれにおいて、サブDFGに含まれるノード数が多い順に配置処理を行っている。ノード数の少ないサブDFGを後から配置結合させることで、サブDFGを結合処理して空いた隙間に、ノード数の少ないサブDFGを効率的に配置する可能性を高めることができ、結合DFGの段数を減らすことができる。本実施例では、サブDFG38eをサブDFG38fよりも先に配置させているが、サブDFG38fを先に配置させると、サブDFG38eの位置が下方にずれるため、結合DFGの段数が増えることになる。
以上の処理により、結合DFGの段数を少なくできることで、処理時間を短縮化でき、処理パフォーマンスを向上できる。さらに、消費電力が少なくなる利点もある。また、コマンドデータ量を削減できるため、コマンドメモリを小さく構成することができ、したがって回路規模を小さくできる。
(結合したDFGの再分割)
図7に戻って、第2DFG分割部62は、DFG結合部61において結合された結合DFGを、リコンフィギュラブル回路12の段数に収まるように分割する。ALU列の段数は3段であるため(図5参照)、結合DFGを3段ごとに分割する。図14に示すように、結合DFGは、点線の部分で分割され、最終的に5つのサブ結合DFGが作成される。図示の例では、DFGi、DFGii、DFGiii、DFGiv、DFGvが生成される。なお、生成されるサブ結合DFGは、もとの結合DFGにおける順番どおりに処理すれば、データ待ちは発生しない。したがって、サブ結合DFGの処理順序は、上のものから自動的に決定することができ、処理順序を改めて検討する必要はない。ノード7とノード14のように、点線部分をまたがるノード間のデータは、経路部24を通じて、メモリ部27を介さずにリコンフィギュラブル回路12にフィードバックされる。このように、3段目から4段目のデータの受け渡しには、データ待ち時間は発生しない。
3段ずつ分割されたサブ結合DFGは、記憶部34に格納される。設定データ生成部32は、サブDFGからそれぞれ設定データを生成する。なお、分割されたサブ結合DFGは、直接設定データ生成部32に供給されてもよい。
以上、本発明を実施例もとに説明した。実施例は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば、リコンフィギュラブル回路12におけるALUの配列は、縦方向にのみ接続を許した多段配列に限らず、横方向の接続も許した、メッシュ状の配列であってもよい。また、上記の説明では、段を飛ばして論理回路を接続する結線は設けられていないが、このような段を飛ばす接続結線を設ける構成としてもよい。
また、図1では、処理装置10が1つのリコンフィギュラブル回路12を有する場合を示しているが、複数のリコンフィギュラブル回路12を有していてもよい。例えば、図17に示すような接続関係図が生成された場合であっても、接続関係図により並列処理可能なDFGが分かるため、3つのリコンフィギュラブル回路12が存在する場合は、2段目の3つのDFGを同時に処理することが可能となり、データ処理時間を短縮することが可能となる。
今回開示された実施例はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
実施例に係る処理装置の構成図である。 ターゲット回路を分割してできる複数の回路について説明するための図である。 リコンフィギュラブル回路の構成図である。 データフローグラフの構造を説明するための図である。 リコンフィギュラブル回路におけるALU間の接続関係を示す図である。 本実施例におけるデータフローグラフの処理フローチャートである。 データフローグラフ処理部の構成図である。 リコンフィギュラブル回路の回路規模を超えるDFGの例を示す図である。 図8に示すDFGを分割して生成した6つのサブDFGを示す図である。 DFG結合部により定められるサブDFGの接続関係図である。 サブDFGを結合するフローチャートである。 図11に示す結合処理のフローチャートである。 仮想的なノード空間を示す図である。 結合して生成された結合DFGを示す図である。
符号の説明
10・・・処理装置、12・・・リコンフィギュラブル回路、14・・・設定部、18・・・制御部、22・・・出力回路、24・・・経路部、26・・・集積回路装置、27・・・メモリ部、29・・・経路部、30・・・コンパイル部、31・・・データフローグラフ処理部、32・・・設定データ生成部、34・・・記憶部、36・・・プログラム、38・・・データフローグラフ、40・・・設定データ、50・・・論理回路、52・・・接続部、60・・・第1DFG分割部、61・・・DFG結合部、62・・・第2DFG分割部。

Claims (7)

  1. 機能の変更が可能な複数の論理回路を備えたリコンフィギュラブル回路の動作設定に必要なデータフローグラフを処理するデータフローグラフ処理装置であって、
    データフローグラフリコンフィギュラブル回路の論理回路の数に対応しない場合、論理回路の数に対応した複数のサブデータフローグラフに分割する第1分割手段と、
    ブデータフローグラフを変形して他のサブデータフローグラフ間に配置結合することにより、前記論理回路の数に対応した結合データフローグラフを生成する結合手段と、
    を備えることを特徴とするデータフローグラフ処理装置。
  2. 機能の変更が可能な複数の論理回路を備え、論理回路の1段以上の接続構造を有するリコンフィギュラブル回路の動作設定に必要なデータフローグラフを処理するデータフローグラフ処理装置であって、
    データフローグラフの列数がリコンフィギュラブル回路の1段あたりの論理回路の数を超える場合、列数が前記1段あたりの論理回路の数以下となる複数のサブデータフローグラフに分割する第1分割手段と、
    サブデータフローグラフを変形して他のサブデータフローグラフ間に配置結合することにより、前記1段あたりの論理回路の数以下となる結合データフローグラフを生成する結合手段と、
    を備えことを特徴とするデータフローグラフ処理装置。
  3. 合データフローグラフの段数がリコンフィギュラブル回路の段数を超える場合、段数がリコンフィギュラブル回路の段数以下となるように、複数のサブ結合データフローグラフを生成する第2分割手段を備えることを特徴とする、請求項1又は2に記載のデータフローグラフ処理装置。
  4. ータフローグラフには論理回路の機能を表現するノードが含まれており、理回路の出力を、異なる又は同一の論理回路に入力する際に時間遅延をともなう場合に、
    結合手段は、新たに結合するデータフローグラフ中に、すでに結合データフローグラフを構成しているノードの出力データを入力するノードがあれば、当該ノードの配置する位置を、既に配置された当該ノードの位置から、時間遅延分に相当する段数以上をあけることにより決定することを特徴とする、請求項1から3のいずれかに記載のデータフローグラフ処理装置。
  5. データフローグラフには論理回路の機能を表現するノードが含まれており、
    結合手段は、分割したサブデータフローグラフ間におけるノードの接続を維持するように、複数のサブデータフローグラフを結合することを特徴とする請求項1からのいずれかに記載のデータフローグラフ処理装置。
  6. 処理の動作を記述した動作記述をもとに、演算間の実行順序の依存関係を表現するデータフローグラフを生成するデータフローグラフ生成部と、
    データフローグラフ生成部で生成したデータフローグラフに対して所定の処理を実行する請求項1からのいずれかに記載のデータフローグラフ処理装置と、
    データフローグラフ処理装置から出力されたデータフローグラフをもとに、リコンフィギュラブル回路に機能設定するための設定データを生成する設定データ生成部と、
    を含むことを特徴とする処理装置。
  7. 請求項1からのいずれかに記載のデータフローグラフ処理装置から得られたデータにしたがって動作するリコンフィギュラブル回路。
JP2004182516A 2004-06-21 2004-06-21 データフローグラフ処理装置、処理装置、リコンフィギュラブル回路。 Active JP4275013B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2004182516A JP4275013B2 (ja) 2004-06-21 2004-06-21 データフローグラフ処理装置、処理装置、リコンフィギュラブル回路。
EP05105338A EP1610242A3 (en) 2004-06-21 2005-06-16 Data flow graph processing method, reconfigurable circuit and processing apparatus
CN2005100786053A CN1713185B (zh) 2004-06-21 2005-06-20 数据流图处理方法、可重构电路及处理装置
US11/155,667 US7895586B2 (en) 2004-06-21 2005-06-20 Data flow graph processing method, reconfigurable circuit and processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004182516A JP4275013B2 (ja) 2004-06-21 2004-06-21 データフローグラフ処理装置、処理装置、リコンフィギュラブル回路。

Publications (2)

Publication Number Publication Date
JP2006004345A JP2006004345A (ja) 2006-01-05
JP4275013B2 true JP4275013B2 (ja) 2009-06-10

Family

ID=35033367

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004182516A Active JP4275013B2 (ja) 2004-06-21 2004-06-21 データフローグラフ処理装置、処理装置、リコンフィギュラブル回路。

Country Status (4)

Country Link
US (1) US7895586B2 (ja)
EP (1) EP1610242A3 (ja)
JP (1) JP4275013B2 (ja)
CN (1) CN1713185B (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7464375B2 (en) * 2004-06-24 2008-12-09 International Business Machines Corporation Method for flattening hierarchically structured flows
US7941794B2 (en) * 2004-08-30 2011-05-10 Sanyo Electric Co., Ltd. Data flow graph processing method and processing apparatus provided with reconfigurable circuit
JP4562678B2 (ja) * 2006-03-30 2010-10-13 三洋電機株式会社 データフローグラフ再構成装置、リコンフィギュラブル回路の設定データ生成装置、及び処理装置
JP4562679B2 (ja) * 2006-03-30 2010-10-13 三洋電機株式会社 データフローグラフ生成装置
DE102006027181B4 (de) * 2006-06-12 2010-10-14 Universität Augsburg Prozessor mit internem Raster von Ausführungseinheiten
WO2008001368A2 (en) * 2006-06-27 2008-01-03 Hadasit Medical Research Services And Development Ltd. Use of stilbene derivatives for treatment and prevention of aquatic mold infections
WO2009001368A2 (en) * 2007-06-28 2008-12-31 Indian Institute Of Science A method and system-on-chip fabric
JP4989354B2 (ja) * 2007-08-09 2012-08-01 三洋電機株式会社 データフローグラフ生成装置、設定データ生成装置、処理装置、及びデータフローグラフ生成方法
US20090112570A1 (en) * 2007-10-26 2009-04-30 Microsoft Corporation Declarative model interpretation
WO2010001412A2 (en) * 2008-07-01 2010-01-07 Nandy S K A method and system on chip (soc) for adapting a reconfigurable hardware for an application at runtime
JP5056644B2 (ja) 2008-07-18 2012-10-24 富士通セミコンダクター株式会社 データ変換装置、データ変換方法及びプログラム
JP4635082B2 (ja) * 2008-09-30 2011-02-16 株式会社東芝 マルチプロセッサシステム及びグルーピング方法
US8136063B2 (en) * 2008-11-14 2012-03-13 Synopsys, Inc. Unfolding algorithm in multirate system folding
WO2010065511A1 (en) 2008-12-02 2010-06-10 Ab Initio Software Llc Mapping instances of a dataset within a data management system
KR20150038757A (ko) * 2009-02-13 2015-04-08 아브 이니티오 테크놀로지 엘엘시 데이터 저장 시스템과의 통신
JP5599987B2 (ja) 2009-06-12 2014-10-01 スパンション エルエルシー 多重化用補助peおよび半導体集積回路
US8214313B1 (en) * 2009-09-04 2012-07-03 Ford Motor Company Turn rate calculation
JP6121163B2 (ja) 2009-09-16 2017-04-26 アビニシオ テクノロジー エルエルシー データセット要素のマッピング
WO2011081776A1 (en) * 2009-12-14 2011-07-07 Ab Initio Technology Llc Specifying user interface elements
US8364946B2 (en) * 2010-03-22 2013-01-29 Ishebabi Harold Reconfigurable computing system and method of developing application for deployment on the same
US8555265B2 (en) * 2010-05-04 2013-10-08 Google Inc. Parallel processing of data
CA2814835C (en) 2010-10-25 2019-01-08 Ab Initio Technology Llc Managing data set objects in a dataflow graph that represents a computer program
US9747187B2 (en) 2010-10-27 2017-08-29 International Business Machines Corporation Simulating black box test results using information from white box testing
US8495556B2 (en) * 2010-11-09 2013-07-23 Chipworks Inc. Circuit visualization using flightlines
WO2012097278A1 (en) 2011-01-14 2012-07-19 Ab Initio Technology Llc Managing changes to collections of data
JP5907607B2 (ja) * 2011-02-16 2016-04-26 キヤノン株式会社 処理配置方法及びプログラム
US20130218866A1 (en) * 2012-02-20 2013-08-22 Microsoft Corporation Multimodal graph modeling and computation for search processes
US10489360B2 (en) 2012-10-17 2019-11-26 Ab Initio Technology Llc Specifying and applying rules to data
US9811233B2 (en) 2013-02-12 2017-11-07 Ab Initio Technology Llc Building applications for configuring processes
JP6141073B2 (ja) * 2013-04-02 2017-06-07 キヤノン株式会社 情報処理装置及び情報処理装置の制御方法
US9195570B2 (en) 2013-09-27 2015-11-24 International Business Machines Corporation Progressive black-box testing of computer software applications
US11314808B2 (en) 2013-12-19 2022-04-26 Micro Focus Llc Hybrid flows containing a continous flow
EP3191962B1 (en) 2014-07-18 2019-12-11 AB Initio Technology LLC Managing parameter sets
US9626393B2 (en) 2014-09-10 2017-04-18 Ab Initio Technology Llc Conditional validation rules
US9529587B2 (en) * 2014-12-19 2016-12-27 Intel Corporation Refactoring data flow applications without source code changes or recompilation
US10191724B2 (en) * 2016-10-21 2019-01-29 Intel Corporation Compiler-based instruction scoreboarding
WO2018169911A1 (en) 2017-03-14 2018-09-20 Yuan Li Reconfigurable parallel processing
US11423083B2 (en) 2017-10-27 2022-08-23 Ab Initio Technology Llc Transforming a specification into a persistent computer program
CN112269581B (zh) * 2020-12-24 2021-07-02 北京清微智能科技有限公司 一种可重构芯片的内存耦合编译方法及系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487707A (en) * 1994-08-29 1996-01-30 Xerox Corporation Puzzle cut seamed belt with bonding between adjacent surfaces by UV cured adhesive
US5514436A (en) * 1994-08-29 1996-05-07 Xerox Corporation Endless puzzle cut seamed belt
US6311595B1 (en) * 1996-09-26 2001-11-06 Xerox Corporation Process and apparatus for producing an endless seamed belt
JPH10256383A (ja) 1997-03-12 1998-09-25 Toshiba Corp 半導体装置及びその回路構成方法
US6368440B1 (en) * 2000-03-22 2002-04-09 Xerox Corporation Method for fabricating a flexible belt with a puzzle-cut seam
US6440515B1 (en) * 2000-09-29 2002-08-27 Xerox Corporation Puzzle-cut on puzzle-cut seamed belts
US6488798B1 (en) * 2000-11-28 2002-12-03 Xerox Corporation Method of making imageable seamed intermediate transfer belts having burnished seams
US20020074082A1 (en) * 2000-12-15 2002-06-20 Xerox Corporation Fabrication method for an electrostatographic member having a virtual flexible seamless substrate (subtantially seamless electrostatographic member fabrication method with interlock)
US20020074520A1 (en) * 2000-12-15 2002-06-20 Xerox Corporation Substantially seamless electrostatographic member fabrication apparatus
US6681671B2 (en) * 2002-03-07 2004-01-27 Xerox Corporation Method and system for cutting puzzle cut petals in belts
GB0224023D0 (en) * 2002-10-16 2002-11-27 Roysmith Graeme Reconfigurable integrated circuit
US6964029B2 (en) * 2002-10-31 2005-11-08 Src Computers, Inc. System and method for partitioning control-dataflow graph representations
US7155708B2 (en) * 2002-10-31 2006-12-26 Src Computers, Inc. Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation
US6983456B2 (en) * 2002-10-31 2006-01-03 Src Computers, Inc. Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms
US7299458B2 (en) * 2002-10-31 2007-11-20 Src Computers, Inc. System and method for converting control flow graph representations to control-dataflow graph representations
WO2004072796A2 (en) * 2003-02-05 2004-08-26 Arizona Board Of Regents Reconfigurable processing

Also Published As

Publication number Publication date
US20050283768A1 (en) 2005-12-22
CN1713185B (zh) 2010-09-08
CN1713185A (zh) 2005-12-28
EP1610242A3 (en) 2011-06-08
US7895586B2 (en) 2011-02-22
JP2006004345A (ja) 2006-01-05
EP1610242A2 (en) 2005-12-28

Similar Documents

Publication Publication Date Title
JP4275013B2 (ja) データフローグラフ処理装置、処理装置、リコンフィギュラブル回路。
JP4104538B2 (ja) リコンフィギュラブル回路、リコンフィギュラブル回路を備えた処理装置、リコンフィギュラブル回路における論理回路の機能決定方法、回路生成方法および回路
US5596743A (en) Field programmable logic device with dynamic interconnections to a dynamic logic core
US7028281B1 (en) FPGA with register-intensive architecture
JP4484756B2 (ja) リコンフィギュラブル回路および処理装置
JP2008537268A (ja) 可変精度相互接続を具えたデータ処理エレメントの配列
WO2018067251A1 (en) Methods and apparatus for dynamically configuring soft processors on an integrated circuit
US8957701B2 (en) Integrated circuit
JP4562679B2 (ja) データフローグラフ生成装置
US10810341B1 (en) Method and system for making pin-to-pin signal connections
JP4601567B2 (ja) データフローグラフの生成方法、及び処理装置
WO2005033939A1 (ja) リコンフィギュラブル回路を備えた処理装置、集積回路装置およびそれらを利用した処理方法
JP4156010B2 (ja) 処理装置
JP4413052B2 (ja) データフローグラフ処理装置および処理装置
JP2005276854A (ja) 処理装置
JP3896083B2 (ja) リコンフィギュラブル回路とそれを利用可能な集積回路装置
JP4330472B2 (ja) 処理装置
JP4011012B2 (ja) リコンフィギュラブル回路を備えた処理装置
Marquet et al. Massively parallel processing on a chip
JP4357326B2 (ja) リコンフィギュラブル回路および処理装置
JP4562678B2 (ja) データフローグラフ再構成装置、リコンフィギュラブル回路の設定データ生成装置、及び処理装置
US20160283439A1 (en) Simd processing module having multiple vector processing units
US20080082951A1 (en) Structure Cluster and Method in Programmable Logic Circuit
JP2007172285A (ja) リコンフィギュラブル回路及び処理装置
JP4610236B2 (ja) 設定データ生成装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080701

A521 Request for written amendment filed

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 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081020

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081222

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

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

R151 Written notification of patent or utility model registration

Ref document number: 4275013

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130313

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140313

Year of fee payment: 5

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S131 Request for trust registration of transfer of right

Free format text: JAPANESE INTERMEDIATE CODE: R313135

SZ02 Written request for trust registration

Free format text: JAPANESE INTERMEDIATE CODE: R313Z02

S131 Request for trust registration of transfer of right

Free format text: JAPANESE INTERMEDIATE CODE: R313135

SZ02 Written request for trust registration

Free format text: JAPANESE INTERMEDIATE CODE: R313Z02

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S131 Request for trust registration of transfer of right

Free format text: JAPANESE INTERMEDIATE CODE: R313135

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250