JP4610236B2 - 設定データ生成装置 - Google Patents

設定データ生成装置 Download PDF

Info

Publication number
JP4610236B2
JP4610236B2 JP2004177896A JP2004177896A JP4610236B2 JP 4610236 B2 JP4610236 B2 JP 4610236B2 JP 2004177896 A JP2004177896 A JP 2004177896A JP 2004177896 A JP2004177896 A JP 2004177896A JP 4610236 B2 JP4610236 B2 JP 4610236B2
Authority
JP
Japan
Prior art keywords
condition
circuit
alu
statement
variable
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
JP2004177896A
Other languages
English (en)
Other versions
JP2006004044A (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 JP2004177896A priority Critical patent/JP4610236B2/ja
Publication of JP2006004044A publication Critical patent/JP2006004044A/ja
Application granted granted Critical
Publication of JP4610236B2 publication Critical patent/JP4610236B2/ja
Anticipated expiration legal-status Critical
Active legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)

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アレイは、C言語などで記述されたプログラムをマッピングされて、回路のコンフィギュレーションを実行する。プログラム記述には、所期の処理を実行するための様々な演算処理が含まれており、そのうちの1つに条件文も含まれる。
図1は、プログラム記述に含まれる条件文を示す。この条件文は、if文により示される条件が成立すれば変数aに代入値bを代入し、else文により示される条件が成立すれば変数aに代入値cを代入するものである。なおelse文により示される条件が成立するとは、if文により示される条件が成立しない場合と等価である。したがって、ALUにおいて、conditionが真ならばbを選択し、偽ならばcを選択する機能を実行させることで、図1に示す条件文が処理される。このように、プログラム記述をコンパイルするコンパイル部が、条件文を解析してデータフローグラフ(DFG)を作成することで、ALUに割り当てる機能およびALUの接続関係を定めた設定データが適切に生成されることになる。
しかしながら、図1に示すように、条件文が正確に記述されている場合には適切な設定データを生成することができるが、現実には条件文が省略された形で記述されることが少なくない。例えば、conditionが成立したときには変数aに代入処理を施す必要があるが、成立しないときには変数aに対して新たな代入処理を必要とせず、元の値を維持するような場合や、また条件文以外の箇所に代入処理が既に記述されているような場合である。このとき、変数aの値を変更する代入処理については条件文に記述する必要があるものの、元の値を維持するための処理は必ずしも条件文中に記述されなくてもよい。従来では、このような場合におけるALUへのマッピング処理を適切に実行することが難しく、リコンフィギュラブル回路におけるコンフィギュレーションが正確に実行できない要因となる。
本発明はこうした状況に鑑みてなされたもので、その目的は、ALUアレイなどから構成される回路装置に、適切に機能を割り当てることのできる技術を提供することにある。
発明のある態様は、複数の論理回路を有するリコンフィギュラブル回路に機能を割り当てるための設定データを生成する設定データ生成装置であって、 プログラムを読み出す手段と、読み出したプログラムの記述に含まれるif条件を検出する手段と、前記if条件が成立した場合に実行する変数への第1代入処理を探索する第1の探索手段と、前記if条件に対応するelse条件を検出する手段と、前記else条件が検出されなかった場合に、前記if条件文の実行以前に実行される変数への第2の代入処理を探索する第2の探索手段と、第1の探索手段において探索された第1代入処理と、第2の探索手段において探索された第2代入処理とを、論理回路の入力に割り当てる手段と、第2の探索手段において第2の代入処理が探索されなかった場合に、第1の探索手段において探索された第1代入処理と、記憶部の所定のアドレスに記憶された最新の変数値とを、論理回路の入力に割り当てる手段と、を備えることを特徴とする
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラムとして表現したものもまた、本発明の態様として有効である。
本発明によれば、マッピング用のプログラムを処理して、適切な入力および機能を論理回路にマッピングする技術を提供することができる。
図2は、実施例に係る処理装置10の構成図である。処理装置10は、集積回路装置26を備える。集積回路装置26は、回路構成を再構成可能とする機能を有する。集積回路装置26は1チップとして構成され、リコンフィギュラブル回路12、設定部14、制御部18、出力回路22、メモリ部27および経路部29を備える。リコンフィギュラブル回路12は、設定を変更することにより、機能の変更を可能とする。
設定部14は、リコンフィギュラブル回路12に所期の回路を構成するための設定データ40を供給する。設定部14は、プログラムカウンタのカウント値に基づいて記憶したデータを出力するコマンドメモリとして構成されてもよい。この場合、制御部18がプログラムカウンタの出力を制御する。この意味において、設定データ40はコマンドデータと呼ばれてもよい。経路部29は、フィードバックパスとして機能し、リコンフィギュラブル回路12の出力を、リコンフィギュラブル回路12の入力に接続する。出力回路22は、例えばデータフリップフロップ(D−FF)などの順序回路として構成され、リコンフィギュラブル回路12の出力を受ける。メモリ部27は経路部29に接続されている。リコンフィギュラブル回路12は組合せ回路または順序回路等の論理回路として構成される。
メモリ部27は、制御部18からの指示に基づき、リコンフィギュラブル回路12から出力されるデータ信号および/または外部から入力されるデータ信号を格納するための記憶領域を有する。メモリ部27に格納されたデータ信号は、制御部18からの指示に基づいて、経路部29を通じてリコンフィギュラブル回路12の入力として伝達される。メモリ部27は、制御部18からの指示により所定のタイミングでデータ信号をリコンフィギュラブル回路12に供給することができる。
リコンフィギュラブル回路12は、機能の変更が可能な論理回路を有して構成される。具体的にリコンフィギュラブル回路12は、複数の演算機能を選択的に実行可能な論理回路を複数段に配列させた構成を有し、前段の論理回路列の出力と後段の論理回路列の入力との接続関係を設定可能な接続部を含む。複数の論理回路は、マトリックス状に配置される。各論理回路の機能と、論理回路間の接続関係は、設定部14により供給される設定データ40に基づいて設定される。設定データ40は、以下の手順で生成される。
集積回路装置26により実現されるべきプログラム36が、記憶部34に保持されている。プログラム36は、回路における処理の動作を記述した動作記述を示し、信号処理回路または信号処理アルゴリズムなどをC言語などの高級言語で記述したものである。プログラム36は、条件文などを含んで構成される。コンパイル部30は、記憶部34に格納されたプログラム36をコンパイルし、データフローグラフ(DFG)38に変換して記憶部34に格納する。データフローグラフ38は、回路における演算間の実行順序の依存関係を表現し、入力変数および定数の演算の流れをグラフ構造で示したものである。一般に、データフローグラフ38は、上から下に向かって演算が進むように作成される。
設定データ生成部32は、データフローグラフ38から設定データ40を生成する。設定データ40は、データフローグラフ38をリコンフィギュラブル回路12にマッピングするためのデータであり、リコンフィギュラブル回路12における論理回路の機能や論理回路間の接続関係を定める。設定データ生成部32が、1つの生成すべき回路を分割してできる複数の回路の設定データ40を生成してもよい。
図3は、1つの生成すべきターゲット回路42を分割してできる複数の回路の設定データ40について説明するための図である。1つのターゲット回路42を分割して生成される回路を、「分割回路」と呼ぶ。この例では、1つのターゲット回路42が、4つの分割回路、すなわち分割回路A、分割回路B、分割回路C、分割回路Dに分割されている。ターゲット回路42は、データフローグラフ38における演算の流れにしたがって分割される。データフローグラフ38において、上から下に向かう方向に演算の流れが表現される場合、そのデータフローグラフ38を上から所定の間隔で切り取り、その切り取った部分を分割回路として設定する。流れにしたがって切り取る間隔は、リコンフィギュラブル回路12における論理回路の段数以下に定められる。ターゲット回路42は、データフローグラフ38の横方向で分割されてもよい。横方向に分割する幅は、リコンフィギュラブル回路12における論理回路の1段当たりの個数以下に定められる。
特に、生成すべきターゲット回路42がリコンフィギュラブル回路12よりも大きい場合に、設定データ生成部32は、リコンフィギュラブル回路12にマッピングできる大きさになるように、ターゲット回路42を分割することが好ましい。リコンフィギュラブル回路12へのマッピングは、一度に、例えば1回のクロックで実行することができる。したがって、この場合、4つの分割回路は、4クロックで生成することができる。設定データ生成部32は、リコンフィギュラブル回路12における論理回路の配列構造とデータフローグラフ38によって、ターゲット回路42の分割方法を定める。リコンフィギュラブル回路12の配列構造は、制御部18から設定データ生成部32に伝えられてもよく、また予め記憶部34に記録されていてもよい。また、制御部18が、ターゲット回路42の分割方法を設定データ生成部32に指示してもよい。
以上の手順を実行することにより、記憶部34は、リコンフィギュラブル回路12を所期の回路として構成するための複数の設定データ40を記憶する。複数の設定データ40は、分割回路Aを構成するための設定データ40a、分割回路Bを構成するための設定データ40b、分割回路Cを構成するための設定データ40c、および分割回路Dを構成するための設定データ40dである。既述のごとく、複数の設定データ40は、1つのターゲット回路42を分割した複数の分割回路をそれぞれ表現したものである。各設定データ40を供給することにより、リコンフィギュラブル回路12上に分割回路を1クロックで構成することができる。このように、リコンフィギュラブル回路12の回路規模に応じて、生成すべきターゲット回路42の設定データ40を生成することにより、汎用性の高い処理装置10を実現することが可能となる。別の視点からみると、実施例の処理装置10によれば、回路規模の小さいリコンフィギュラブル回路12を用いて、所望の回路を再構成することが可能となる。
図4は、リコンフィギュラブル回路12の構成を示す。リコンフィギュラブル回路12は、それぞれが複数の演算機能を選択的に実行可能な論理回路の多段配列と、前段の論理回路の出力と後段の論理回路の入力の接続関係を任意に設定可能な接続部52とを備える。リコンフィギュラブル回路12では、論理回路の多段配列構造により、上段から下段に向かって演算が進められる。なお、本明細書において「多段」とは、複数の段を意味する。なお、リコンフィギュラブル回路12の回路構成は、必ずしも多段配列を有する必要はないが、FPGAのように全ての論理回路との接続を可能とさせず、一部の論理回路との接続のみを実現させるのが好ましい。本実施例では、上記したように、リコンフィギュラブル回路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の入力の接続関係を設定する。
図4に示す例では、第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に出力される。メモリ部27は、経路部29を介して、出力データを接続部52aに入力する。接続部52aは、接続用結線を設定し、第1段のALU11、ALU12、・・・、ALU16にデータを供給する。
本実施例において、条件文を含むプログラム36は各ALUに対して適切にマッピング処理されて、演算機能および接続関係の設定がなされる。コンパイル部30は、プログラム36に含まれる条件文を解析し、データフローグラフ38を生成する。if文で始まる条件文のマッピング処理では、ALUの2つの入力端子に代入値を供給し、ALUが、条件の真偽に応じていずれかの代入値を出力するように機能設定される。以下に、条件文を適切に処理することのできる本実施例の集積回路装置26について説明する。
図5(a)は、実施例のリコンフィギュラブル回路12におけるALUが処理可能なプログラム記述における条件文の一例を示す。この条件文には、if(condition)で示される1つの条件のみが含まれ、elseで示される条件が存在しない。なお、本来else文は、if文の条件が成立しなかった場合に実行される処理であって、if文が実行される条件はconditionが真であるときであり、else文が実行される条件はconditionが偽であるときである。本明細書では、conditionが真となる条件を1つの条件とし、その裏返しであるconditionが偽となる条件も1つの条件とする。なお、conditionが真となる条件をif条件とよび、conditionが偽となる条件をelse条件と呼ぶ場合もある。
本実施例のALUは、条件文中にif文として示される第1の条件が存在し、else文として示される第2の条件が存在しない場合において、else条件の成立時に実行する代入処理を、この条件文の実行に先立って行われている直近の代入処理に設定する。ここで直近の代入処理はa=cである。コンパイル部30は、if条件が成立する場合にはa=bの代入処理をALUに実行させ、if条件が成立しない場合にはa=cの代入処理を実行させるように、プログラムをDFGに変換する。このようにコンパイル部30は、図5(a)に示す条件文を処理して、条件文の実行時の変数aの代入値を定めることができる。なお、else文が存在する場合であっても、else条件の成立時に変数aへの代入処理が存在しなければ、変数aに関してみるとelse条件が存在しない状況と同じである。
図5(b)は、実施例のリコンフィギュラブル回路におけるALUが処理可能なプログラム記述における条件文の別の例を示す。この条件文では、if文およびelse文で示される2つの条件が存在しているが、変数aに関する代入処理は、if条件の成立時には規定されておらず、else条件の成立時においてのみ規定されている。本実施例のALUは、条件文中にif文およびelse文で定められる2つの条件が存在し、一方の条件成立時に実行する代入処理が規定されていない場合であっても、当該一方の条件成立時に実行する代入処理を、この条件文の実行に先立って行われている直近の代入処理に設定する。具体的に、図5(b)の例では、if条件の成立時に実行する変数aへの代入処理は規定されておらず、else条件の成立時に実行する変数aへの代入処理のみが存在しており、また直近の代入処理はa=bである。コンパイル部30は、if条件が成立する場合にはa=bの代入処理をALUに実行させ、if条件が成立しない場合にはa=cの代入処理を実行させるように、プログラムをDFGに変換する。このようにコンパイル部30は、図5(b)に示す条件文を処理して、条件文の実行時の変数aの代入値を定めることができる。
図5(a)および図5(b)に示す条件文において、条件文に記述された処理のみからは、if条件ないしはelse条件の一方の条件が成立したときの変数aへの代入処理しか実行することができない。変数aを設定するためのALUの処理を考えると、図5(a)に示す条件文ではif条件が成立しなかったとき、図5(b)に示す条件文ではif条件が成立したときのALUへの代入値を、プログラム記述中の当該条件文以外の他の処理から設定する必要がある。コンパイル部30は、プログラム36中の条件文を解析して、DFGを作成する。
図6(a)は、実施例のリコンフィギュラブル回路12におけるALUが処理可能なプログラム記述における条件文の一例を示す。この条件文には、if文で示される1つの条件のみが含まれ、else文で示される条件が存在しない。また、図5(a)と異なり、この条件文の実行に先立って行われている代入処理も存在しない。したがって、if条件が成立しない場合は、変数aは、変化せずに、直近すなわち最新の値を維持することになる。なお最新の値とは、変数aについて当該条件文の処理の直近の処理で設定された値である。
図6(b)は、実施例のリコンフィギュラブル回路におけるALUが処理可能なプログラム記述における条件文の別の例を示す。この条件文では、if文およびelse文で示される2つの条件が存在しているが、変数aに関する代入処理は、if条件の成立時に実行されず、else条件の成立時にのみ実行される。また、図5(b)と異なり、この条件文の実行に先立って行われている代入処理も存在しない。したがって、else条件が成立しない場合、すなわちif条件が成立した場合には、変数aは、変化せずに、直近すなわち最新の値を維持することになる。
図6(a)および図6(b)に示す条件文において、条件文に記述された処理のみからは、if条件ないしはelse条件の一方の条件が成立したときの変数aへの代入処理しか実行することができない。変数aを設定するためのALUの処理を考えると、図5(a)に示す条件文ではif条件が成立しなかったとき、図5(b)に示す条件文ではif条件が成立したときのALUへの代入値を、プログラム記述中の当該条件文以外の他の処理から設定する必要がある。図6(a)および図6(b)に示す条件文に対しては、それに先立って実行される他の代入処理が存在しないため、変数aとして設定されている過去の最新の値を設定する。これにより、変数aの値を変更せずに、引き継ぐことが可能となる。
図7は、実施例のコンパイル部30による条件文の処理方法を示す。実施例のコンパイル部30は、図5および図6に示す条件文を解析して、条件分岐処理をリコンフィギュラブル回路12に割り当てるDFGを作成する。なお既述のように、DFGは、リコンフィギュラブル回路12における演算間の実行順序の依存関係を表現する。以下では、1つの変数、具体的には変数aについての条件文の処理方法を示す。なお、コンパイル部30は、条件文の処理を変数ごとに実行する。
コンパイル部30は、プログラム中に含まれる条件文中のif文で示される条件を検出して、if文中に含まれる変数aについての代入処理を探索する(S10)。具体的には、if文において、if条件が成立した場合に実行する変数aへの代入処理を探索する。代入文が存在している場合(S10のY)、その代入処理を、if条件成立時の代入処理として決定する(S12)。図5(a)および図6(a)に示す条件文では、if文中に含まれるa=bを、if条件成立時の代入処理として決定する。続いて、条件文中にelse文で示される条件が含まれているか否かを検出する(S14)。else条件が含まれており(S14のY)、且つelse文中に変数aについての代入処理が含まれている場合は(S16のY)、その代入処理を、else条件成立時の代入処理として決定する(S20)。これは、図1に示す条件文のコンパイル処理に相当し、条件文に含まれるif文とelse文とに基づいて、変数aへの代入処理が定められる。
一方、図5(a)および図6(a)に示すようにelse条件が検出されない場合(S14のN)、またelse文が存在していてもelse文中に変数aの代入処理が存在しない場合(S16のN)、対象とする条件文に先立って処理される変数aへの代入処理を探索する(S18)。条件文の実行以前に実行される変数aへの代入処理が存在する場合(S18のY)、その代入処理を、if条件が成立しない場合の代入処理として決定する(S20)。図5(a)に示す条件文では、条件文に先立って実行されているa=cを、if条件が成立しない場合の代入処理として決定する。ここでは、S12においてif条件成立時の代入処理を決定し、S20においてif条件が成立しないときの代入処理を決定して、これらの代入処理を論理回路の入力に割り当てる。なお、ALUには、条件に応じて2つの入力から出力を選択するスイッチとしての機能を割り当てる。
一方、条件文に先立つ変数aへの代入処理が探索されなかった場合(S18のN)、変数aの値は変化しない。したがって、この場合はメモリ部27に記憶されている最新の変数aの値を代入値として決定する(S22)。図6(a)に示す条件文では、記憶部34の所定のアドレスに記憶された最新の変数aの値を、if条件が成立しない場合の代入値として決定する。ここでは、S12においてif条件成立時の代入処理を決定し、S22においてif条件が成立しないときの代入値を決定して、代入処理および代入値をALUの入力に割り当てる。なお、ALUには、条件に応じて2つの入力から出力を選択するスイッチとしての機能を割り当てる。以上により、if文中に代入処理が存在する場合におけるALUへの入力および機能の割当処理が実行される。
一方、if文中に代入処理が探索されなかった場合(S10のN)、コンパイル部30は、プログラム中に含まれる条件文中のelse文で示される条件を検出して、else文中に含まれる変数aについての代入処理を探索する(S30)。具体的には、else文において、else条件が成立した場合に実行する変数aへの代入処理を探索する。図5(b)および図6(b)に示す条件文では、a=cを、else条件が成立したときの代入処理として決定する。なお、else文中に変数aについての代入処理が存在しない場合には、対象とする条件文において変数aについての代入処理が実行されないことになる。
続いて、コンパイル部30は、if条件の成立時に実行する代入処理を探索する。具体的には、コンパイル部30は、対象とする条件文の実行以前に実行される変数aへの代入処理を探索する(S32)。条件文に先立って変数aへの代入処理が存在する場合(S32のY)、その代入処理を、if条件が成立した場合の代入処理として決定する(S34)。図5(b)に示す条件文では、条件文に先立って実行されているa=bを、if条件が成立した場合の代入処理として決定する。ここでは、S30においてelse条件成立時の代入処理を決定し、S34においてif条件が成立したときの代入処理を決定して、これらの代入処理を論理回路の入力に割り当てる。なお、ALUには、条件に応じて2つの入力から出力を選択するスイッチとしての機能を割り当てる。
一方、条件文に先立つ変数aへの代入処理が存在しない場合(S32のN)、変数aの値は変化しない。したがって、この場合はメモリ部27に記憶されている最新の変数aの値を代入値として決定する(S36)。図6(b)に示す条件文では、記憶部34の所定のアドレスに記憶された最新の変数aの値を、if条件が成立した場合の代入値として決定する。ここでは、S30においてelse条件成立時の代入処理を決定し、S36においてif条件が成立したときの代入値を決定して、代入処理および代入値をALUの入力に割り当てる。なお、ALUには、条件に応じて2つの入力から出力を選択するスイッチとしての機能を割り当てる。以上により、if文中に代入処理が存在しない場合におけるALUへの入力および機能の割当処理が実行される。
本実施例のコンパイル部30は、以上のように条件文を処理することができる。これらの処理により、ifまたはelseの片側の条件文がなかったり、片側の条件文中に関係する変数への代入がなくても、それに先行する関係する変数への代入文を利用して、回路を生成できる。また、マッピング用のプログラムを作成するプログラマは、if文およびelse文の双方に代入処理を記述しなくてもよくなり、プログラミングの作業負担を軽減できる。
図8は、図5(a)および図5(b)に示すプログラム記述を実行するALUに割り当てられる入力および機能を示す。既述のように、ALUは2つの入力端子と1つの出力端子を有している。第1の入力端子には、第1の代入値bが入力され、第2の入力端子には、第2の代入値cが入力される。代入値bおよび代入値cは、代入処理により定められる値である。具体的に、代入値bは、if条件成立時に実行される代入処理により定められる値であり、代入値cは、対象となる条件文の条件判定に先立って実行される代入処理により定められる値である。ALUは、if条件が成立したときに変数aに代入値bを代入し、if条件が成立しないときに変数aに代入値cを代入して、代入値を出力する機能を割り当てられる。これらの入力および機能は、条件文中にif条件のみが存在し、else条件が存在しない場合に割り当てられる。なお、条件文中にif条件およびelse条件の双方が存在する場合であって、いずれか一方の条件成立時に変数aへの代入処理が存在しない場合にも、これらの入力および機能が割り当てられる。なお、if条件が成立しないときとは、図5(b)に示す条件文においてはelse条件が成立するときに相当する。
図9(a)は、図6(a)に示すプログラム記述を実行するALUに割り当てられる入力および機能を示す。第1の入力端子には、第1の代入値bが入力され、第2の入力端子には、第2の代入値が入力される。第1の代入値bは代入処理により定められる値であり、第2の代入値は、記憶部34の所定のアドレスに記憶されている変数aの最新の値である。ALUは、if条件が成立したときに変数aに代入値bを代入し、if条件が成立しないときに変数aに最新の変数値を代入して、代入値を出力する機能を割り当てられる。これらの入力および機能は、条件文中にif条件のみが存在し、else条件が存在しない場合であって、且つ条件文の実行以前に実行される変数aへの代入処理が存在しない場合に割り当てられる。なお、条件文中にif条件およびelse条件の双方が存在する場合であって、else条件成立時に変数aへの代入処理が存在しておらず、条件文の実行以前に実行される変数aへの代入処理が存在しない場合にも、これらの入力および機能が割り当てられる。ALUが、第2の入力端子への入力を出力して選択する場合は、変数aの値は、以前と同じ値を維持する。
図9(b)は、図6(b)に示すプログラム記述を実行するALUに割り当てられる入力および機能を示す。第1の入力端子には、第1の代入値が入力され、第2の入力端子には、第2の代入値cが入力される。第1の代入値は、記憶部34の所定のアドレスに記憶されている変数aの最新の値であり、第2の代入値cは代入処理により定められる値である。ALUは、if条件が成立したときに変数aに最新の変数値を代入し、if条件が成立しないときに変数aに代入値cを代入して、代入値を出力する機能を割り当てられる。これらの入力および機能は、条件文中にif条件およびelse条件の双方が存在する場合であって、if条件成立時に変数aへの代入処理が存在しておらず、条件文の実行以前に実行される変数aへの代入処理が存在しない場合に割り当てられる。ALUが、第1の入力端子への入力を出力して選択する場合は、変数aの値は、以前と同じ値を維持する。これらの処理により、ifまたはelseの片側の条件文がなかったり、片側の条件文中に関係する変数への代入がない場合で、且つ、それに先行する関係する変数への代入文もない場合でも、回路を生成できる。また、マッピング用のプログラムを作成するプログラマは、if文およびelse文の双方に代入処理を記述したり、先行する代入文を気にする必要がなくなり、プログラミングの作業負担を軽減できる。
図9(a)および図9(b)において、メモリ部27に供給されるWEは、メモリ部27への書込(ライト)イネーブル信号を表す。図9(a)において、conditionが真のとき、メモリ部27に格納された変数aの値が代入値bに変化するが、偽のときは、メモリ部27の値は変化しない。同様に、図9(b)において、conditionが偽のとき、メモリ部27に格納された変数aの値が代入値cに変化するが、真のときは、メモリ部27の値は変化しない。
図10は、メモリ部27へのデータ書込を制御する回路を示す。ここでは、図9(a)に示すALUへの機能割当の場合を示すが、図9(b)に示す機能割当の場合も同様である。この制御回路は各種ゲート回路により構成されて、制御部18とメモリ部27の間に配置され、WE信号をメモリ部27に供給する。この制御回路は、ALUからの出力によりメモリ部27の内容が変化しない場合に、WE信号をオフにして、メモリ部27への書込を禁止することを目的とする。メモリ部27への同一値の書込を禁止することで、データ書込に伴う電力消費を抑えることができる。以下において、各信号のオンは論理値1を、オフは論理値0を示す。各信号は制御部18により供給されてもよいが、コマンドメモリから供給されてもよい。コマンドメモリから各信号が供給される場合は、制御回路は、設定部14とメモリ部27の間に配置されることになる。
WE_control信号は、メモリ部27が書込可能な状態にあることを示す信号である。具体的には、WE_control信号がオンであれば、ALUからメモリ部27に出力されるタイミングであることを示し、オフであればメモリ部27の書込を禁止する状態にあることを示す。WE_disable信号は、メモリ部27に、代入処理を実行するALUが接続されて、かつ、対象となるメモリ部27の出力がそのまま同一アドレスに入力される可能性がある場合にオンとなる。input_sel信号は、対象となるメモリ部27の出力がそのまま同一アドレスに入力されるパスが、conditionの真側、偽側のいずれに接続されているかを示す信号である。なお、conditionが真側とは、図中の左側に示される代入値bが入力される入力端子側であり、偽側とは、右側に示されるメモリ部27からの変数値が入力される入力端子側である。図10においては、input_sel信号がオンであれば真側、オフであれば偽側に接続されている。
このALUでは、conditionが偽であれば、対象のメモリ部27の出力がそのまま同一アドレスに入力されるパスが選択される。このとき、input_sel信号はオフ、WE_disable信号はオンとなるため、WE信号はオフとなる。したがって、メモリ部27の書き換えは行われず、低消費電力化を実現できる。このように、制御回路は、ALUがメモリ部27からの変数値を出力する場合に、その出力のメモリ部27への書込みを禁止する。これにより、データ更新に伴う消費電力を軽減することが可能となる。特に、集積回路装置26がバッテリ駆動の場合には、バッテリの消費量を節約する効果がある。
図11は、図10に示す制御回路を簡略化した構成を示す。メモリ部27の内容が変わらない場合は、メモリ部27への書込を行わないため、結果的にメモリ部27からの出力ラインは不要となり、さらなる低消費電力化および回路の小型化が可能となる。
以上、本発明を実施例をもとに説明した。実施例は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば、リコンフィギュラブル回路12におけるALUの配列は、縦方向にのみ接続を許した多段配列に限らず、横方向の接続も許した、メッシュ状の配列であってもよい。また、上記の説明では、段を飛ばして論理回路を接続する結線は設けられていないが、このような段を飛ばす接続結線を設ける構成としてもよい。
また、図2では、処理装置10が1つのリコンフィギュラブル回路12を有する場合を示しているが、複数のリコンフィギュラブル回路12を有していてもよい。また、実施例ではリコンフィギュラブル回路について説明したが、C言語や回路記述言語などにより固定回路を生成するツールについても、本発明のプログラム処理方法を適用できることはいうまでもない。
すなわち、本発明は、リコンフィギュラブル回路の動的な回路コンフィギュレーションに限らず、他の回路、例えば固定ハードウェアの回路設計に利用することも可能である。回路実装後の固定ハードウェアにおいては、回路を再生成するなどの処理は行わないが、素子形成の前段階となる回路設計を行なう段階に本手法を利用することで、回路生成用のプログラムを効率的に処理して、回路素子の代入処理機能を決定することで、所期の固定回路を生成することが可能となる。固定回路の場合であっても、ifまたはelseの片側の条件文がなかったり、片側の条件文中に関係する変数への代入がない場合で、且つ、それに先行する関係する変数への代入文もない場合でも、回路素子の機能を決定できる。また、回路生成用のプログラムを作成するプログラマは、if文およびelse文の双方に代入処理を記述したり、先行する代入文を気にする必要がなくなり、プログラミングの作業負担を軽減できる。
今回開示された実施例はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
プログラム記述に含まれる条件文を示す図である。 実施例に係る処理装置の構成図である。 生成すべきターゲット回路を分割してできる複数の回路の設定データについて説明するための図である。 リコンフィギュラブル回路の構成を示す図である。 (a)は、実施例のリコンフィギュラブル回路におけるALUが処理可能なプログラム記述における条件文の一例を示す図であり、(b)は、条件文の別の例を示す図である。 (a)は、実施例のリコンフィギュラブル回路におけるALUが処理可能なプログラム記述における条件文の一例を示す図であり、(b)は、条件文の別の例を示す図である。 実施例のコンパイル部による条件文の処理方法を示す図である。 図5(a)および図5(b)に示すプログラム記述を実行するALUに割り当てられる入力および機能を示す図である。 (a)は、図6(a)に示すプログラム記述を実行するALUに割り当てられる入力および機能を示す図であり、(b)は、図6(b)に示すプログラム記述を実行するALUに割り当てられる入力および機能を示す図である。 メモリ部へのデータ書込を制御する回路を示す図である。 図10に示す制御回路を簡略化した構成を示す図である。
符号の説明
10・・・処理装置、12・・・リコンフィギュラブル回路、14・・・設定部、18・・・制御部、22・・・出力回路、26・・・集積回路装置、27・・・メモリ部、29・・・経路部、30・・・コンパイル部、32・・・設定データ生成部、34・・・記憶部、36・・・プログラム、38・・・データフローグラフ、40・・・設定データ、42・・・ターゲット回路、52・・・接続部、53・・・ALU列。

Claims (1)

  1. 複数の論理回路を有するリコンフィギュラブル回路に機能を割り当てるための設定データを生成する設定データ生成装置であって、
    プログラムを読み出す手段と、
    読み出したプログラムの記述に含まれるif条件を検出する手段と、
    前記if条件が成立した場合に実行する変数への第1代入処理を探索する第1の探索手段と、
    前記if条件に対応するelse条件を検出する手段と、
    前記else条件が検出されなかった場合に、前記if条件文の実行以前に実行される変数への第2の代入処理を探索する第2の探索手段と、
    第1の探索手段において探索された第1代入処理と、第2の探索手段において探索された第2代入処理とを、論理回路の入力に割り当てる手段と、
    第2の探索手段において第2の代入処理が探索されなかった場合に、第1の探索手段において探索された第1代入処理と、記憶部の所定のアドレスに記憶された最新の変数値とを、論理回路の入力に割り当てる手段と、
    を備えることを特徴とする設定データ生成装置。
JP2004177896A 2004-06-16 2004-06-16 設定データ生成装置 Active JP4610236B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004177896A JP4610236B2 (ja) 2004-06-16 2004-06-16 設定データ生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004177896A JP4610236B2 (ja) 2004-06-16 2004-06-16 設定データ生成装置

Publications (2)

Publication Number Publication Date
JP2006004044A JP2006004044A (ja) 2006-01-05
JP4610236B2 true JP4610236B2 (ja) 2011-01-12

Family

ID=35772407

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004177896A Active JP4610236B2 (ja) 2004-06-16 2004-06-16 設定データ生成装置

Country Status (1)

Country Link
JP (1) JP4610236B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04242791A (ja) * 1991-01-08 1992-08-31 Toshiba Corp 電子機器
JPH04248675A (ja) * 1991-02-05 1992-09-04 Toshiba Corp Lsi設計支援装置
JPH0916650A (ja) * 1995-06-30 1997-01-17 Fujitsu Ltd 多段論理回路の設計装置及びそのラッチ回路の決定方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04242791A (ja) * 1991-01-08 1992-08-31 Toshiba Corp 電子機器
JPH04248675A (ja) * 1991-02-05 1992-09-04 Toshiba Corp Lsi設計支援装置
JPH0916650A (ja) * 1995-06-30 1997-01-17 Fujitsu Ltd 多段論理回路の設計装置及びそのラッチ回路の決定方法

Also Published As

Publication number Publication date
JP2006004044A (ja) 2006-01-05

Similar Documents

Publication Publication Date Title
JP4275013B2 (ja) データフローグラフ処理装置、処理装置、リコンフィギュラブル回路。
JP4484756B2 (ja) リコンフィギュラブル回路および処理装置
US7953956B2 (en) Reconfigurable circuit with a limitation on connection and method of determining functions of logic circuits in the reconfigurable circuit
EP0668659A2 (en) Reconfigurable ASIC
EP1184785A2 (en) System and method for preparing software for execution in a dynamically configurable hardware environment
JP2002503839A (ja) プログラマブルハードウェアアーキテクチャを用いた特定用途向け集積回路を生成する方法
US20180101633A1 (en) Methods and apparatus for dynamically configuring soft processors on an integrated circuit
JP4011007B2 (ja) リコンフィギュラブル回路を備えた集積回路装置および処理装置
JP4610236B2 (ja) 設定データ生成装置
JP4553615B2 (ja) 処理装置
JP4208751B2 (ja) データフローグラフ処理装置。
JP2006065788A (ja) リコンフィギュラブル回路を備えた処理装置
JP4562678B2 (ja) データフローグラフ再構成装置、リコンフィギュラブル回路の設定データ生成装置、及び処理装置
JP4260086B2 (ja) データフローグラフ生成装置、処理装置、リコンフィギュラブル回路。
JP4562679B2 (ja) データフローグラフ生成装置
JP2006065786A (ja) 処理装置
JP2006018411A (ja) プロセッサ
JP4413052B2 (ja) データフローグラフ処理装置および処理装置
JP4260197B2 (ja) 処理装置
JP4330472B2 (ja) 処理装置
JP4553614B2 (ja) 処理装置
JP4436734B2 (ja) 処理装置
JP2005128709A (ja) リコンフィギュラブル回路を備えた処理装置
JP2010146102A (ja) 演算処理装置および記憶領域割当方法
JP3989397B2 (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: 20090811

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090928

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100209

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100427

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100603

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

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

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

Free format text: PAYMENT UNTIL: 20131022

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4610236

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

Year of fee payment: 3