JP2004302856A - Integrated circuit device and data configuring device for device thereof - Google Patents

Integrated circuit device and data configuring device for device thereof Download PDF

Info

Publication number
JP2004302856A
JP2004302856A JP2003095039A JP2003095039A JP2004302856A JP 2004302856 A JP2004302856 A JP 2004302856A JP 2003095039 A JP2003095039 A JP 2003095039A JP 2003095039 A JP2003095039 A JP 2003095039A JP 2004302856 A JP2004302856 A JP 2004302856A
Authority
JP
Japan
Prior art keywords
array
setting
circuit
loaded
row
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.)
Granted
Application number
JP2003095039A
Other languages
Japanese (ja)
Other versions
JP3989397B2 (en
Inventor
Makoto Okada
誠 岡田
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 JP2003095039A priority Critical patent/JP3989397B2/en
Publication of JP2004302856A publication Critical patent/JP2004302856A/en
Application granted granted Critical
Publication of JP3989397B2 publication Critical patent/JP3989397B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To increase use efficiency of a reconfigurable circuit. <P>SOLUTION: Two mul commands and one add command corresponding to a program is loaded, and a sub command, div command, and add command corresponding to another program are loaded in a vacant region. A plurality of functional circuits are loaded in one ALU array. When the program is loaded, the use state of ALU is monitored and recorded. <P>COPYRIGHT: (C)2005,JPO&NCIPI

Description

【0001】
【発明の属する技術分野】
この発明は、集積回路技術に関し、特にリコンフィギュラブル回路、およびそれを利用可能な集積回路装置とデータ変換装置に関する。
【0002】
【従来の技術】
最近、携帯電話、GPS、VICSなど、無線通信が広く普及し、無線機の種類も増えている。これらの無線機またはその機能をすべてハードウエアで実装すると、コストや実装面積が嵩む。そこで、ハードウエアとしては汎用的な能力を有する回路を搭載しておき、それにロードするソフトウエアを切り替えることで多様な機能を実現する「ソフトウエア無線機」という考え方がある。
【0003】
ソフトウエア無線機を実現する回路として、FPGA(Field Programmable Gate Array)やDSP(Digital Signal Processor)がある。特許文献1には、FPGAを動的に再構成することで、回路構成の再利用を図る方法が提案されている。動的変更が可能なタイプの回路を以下リコンフィギュラブル回路ともいう。
【0004】
【特許文献1】
特開平10−256383号公報 (全文、第1−4図)
【0005】
【発明が解決しようとする課題】
FPGAをベースとすれば、論理回路の真理値表を格納するためのルックアップテーブル(LUT)を使っていろいろな論理を実現できるが、一般には論理素子の単位が小さく、所期の機能の実現に多くのLUTと配線リソースが必要となる。その結果、通常のLSIと比べると、一般に実装面積が大きく、コスト高になる。また、回路を書き換えるためのプログラム時間がある程度長く、リアルタイムの機能切替に適さないことが多い。
【0006】
本発明はこうした現状に鑑みてなされたものであり、その目的は、コスト、書換速度、回路利用効率、消費電力などの観点において有利なリコンフィギュラブル回路とそれを用いた集積回路装置およびデータ設定装置を提供することにある。
【0007】
【課題を解決するための手段】
本発明のある態様は、集積回路装置に関し、それぞれが複数の算術論理機能を選択的に実行可能な論理回路のアレイと、アレイにおける各論理回路の機能と論理回路間の接続関係を設定するための設定データを記憶する記憶部と、記憶部から設定データを読み込み、前記アレイにロードする設定部とを含み、設定データは、アレイに第1の機能回路をロードしたときに未使用となる領域に第2の機能回路をロードするよう記述されている。
【0008】
設定部は、たとえばこの装置が有するCPU(中央処理装置)のプログラムの組合せのほか、専用ハードウエアで構成してもよい。アレイは例えば論理回路を8×8に配置して構成される。アレイ、すなわち機能構成の最小単位に複数の機能をロードする結果、アレイの有効利用率が高まる。
【0009】
前記の設定データは、未使用となる領域中、第2の機能回路を入力段に近い行に詰めて配置するよう記述されていてもよい。または、第2の機能回路を前記第1の機能回路がロードされている論理回路に近い列に詰めて配置するよう記述されていてもよい。いずれの場合も、そうした規則を課して第2の機能回路を配置することにより、その回路をアレイ内に収容しやすくなる。また、さらに第3の機能回路を実装する余地も出る。
【0010】
本発明の別の態様も集積回路装置に関し、それぞれが複数の算術論理機能を選択的に実行可能な論理回路のm行n列のアレイを有し、このアレイの1行1列から第1の機能回路をロードして配置し、その結果アレイにおいて未使用となる領域において、i行j列(1≦i≦m,1≦j≦n)から第2の機能回路をロードして配置し、前記のiまたはjの一方が最小になるよう第2の機能回路をロードおよび配置したものである。
【0011】
本発明の別の態様も集積回路装置に関し、それぞれが複数の算術論理機能を選択的に実行可能な論理回路のm行n列のアレイを有し、このアレイの1行1列から第1の機能回路をロードして配置し、その結果アレイにおいて未使用となる領域において、可能な限り行番号の小さな行および列番号の小さな列を利用して第2の機能回路をロードして配置したものである。
【0012】
これらの構成において、適宜スルーノードを利用して第2の機能回路を最適化配置してもよい。「最適化配置」とは、配置が可能になることのみをいう場合、配置したとき使用する論理回路の総数が最小になる場合、さらに第3の機能回路を配置する余地が生ずる場合など、何らかの意味において有用な配置をいう。「スルーノード」はNOP(ノーオペレーション)、すなわち何もしないノードをいい、実際には論理回路の内部で単に入力と出力をつなぐ配線を選択したり、論理回路を恒等写像演算器、すなわち乗算器として1を掛けたり、加算器としてゼロを足したりする回路に設定すれば、この論理回路がスルーノードとなる。
【0013】
本発明のさらに別の態様は、データ設定装置に関する。この装置は、たとえば前述の集積回路装置に対して設定データを提供する外部装置であってもよく、C言語その他の高級言語で書かれたプログラムを設定データへ変換するコンパイラを備えてもよい。設定データは、例えばデータフローグラフに対応する。
【0014】
この装置は、それぞれが複数の算術論理機能を選択的に実行可能な論理回路のアレイを含む集積回路装置に所期の機能をロードするための設定データを生成する制御部と、設定データをロードしたとき、アレイにおいて使用されている領域を監視する監視部とを含む。制御部および場合により監視部は、コンパイラまたはそれとCPUその他、任意のハードウエア、ソフトウエアの組合せからなる。制御部が、監視部による監視の結果を受けて、アレイにおいて未使用の領域に別の機能をロードするための設定データを生成すれば、アレイの利用効率が高まる。
【0015】
なお、以上の集積回路装置とデータ設定装置は、単一の装置であってもよい。その場合、例えば前者の設定部と後者の制御部などを単一のCPUおよびプログラムで構成できる。前者の一部と後者の一部を単一の装置として構成してもよい。
【0016】
以上いずれの場合も、論理回路のアレイは、横方向に並べられた論理回路の列が縦方向に複数段組み合わされた配列であり、横方向の論理回路間の接続用結線はなく、各段の論理回路列の出力と直後の段の論理回路列の入力との間に接続用結線が設けられた構造であってもよい。
【0017】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラムとして表現したものもまた、本発明の態様として有効である。
【0018】
【発明の実施の形態】
実施の形態は、ALU(Arithmetic Logic Unit)アレイを基本素子とするリコンフィギュラブル回路に関する。このタイプの回路は、ひとつのALUがひとつの論理単位を構成し、この論理単位が複数の算術演算を選択的に実行できるため、回路構成が簡単であり、後述のデータフローグラフを直接的にマッピング可能なため、コンフィグレーションにかかる時間も節約できる。マッピングとは、リコンフィギュラブル回路で実行すべきプログラムの命令セットと、それを実現するためにリコンフィギュラブル回路内で必要な接続データセットをALUアレイ(以下単に「アレイ」ともいう)にロードして設定することをいう。以下、構成を定義する。
【0019】
1.アレイ・・・ALUをm×nのマトリックス状に有する。
2.リコンフィギュラブル回路・・・アレイを複数内蔵するが、以下の説明ではひとつのアレイに注目する(以下、このアレイを「注目アレイ」ともよぶ)。
【0020】
ALUは「論理単位」であるが、通常はひとつのALUでひとつの機能を実現する。このため、アレイが「機能単位」となる。アレイの大きさ、すなわち、上記のmとnの値の設定は、実現すべき機能の想定をもとに経験則からなされる。アレイが小さすぎるとひとつの機能を実現しきれず、一方、大きすぎると、ひとつの機能をロードしたとき、未使用のALUが増えて利用効率が悪い。
【0021】
こうした観点から、実施の形態の特徴は、機能単位であるアレイに複数の機能を実装することにある。すなわち、まず第1の機能回路をロードし、未使用の領域があれば、第2の機能回路をロードしてアレイの有効利用を図る。もちろん、さらに残余の領域に第3以下の機能回路をロードすれば効果的である。
【0022】
図1は、実施の形態に係る集積回路装置10およびデータ設定装置24の構成を示す。データ設定装置24は、集積回路装置10の回路構成を設定するためのデータを作成して集積回路装置10に供給する。
【0023】
集積回路装置10は、リコンフィギュラブル回路12と、リコンフィギュラブル回路12を再構成するための設定データ17を格納する設定データ記憶部16と、リコンフィギュラブル回路12に設定データ17をロードする設定部14とを含む。「再構成」とは、所期の機能を実現するための回路を作ることをいい、実際には設定データ17のロードがそれに当たる。
【0024】
データ設定装置24は、制御部18と、コンパイル部20と、プログラム記憶部22と、注目アレイにおけるALUの利用状況を監視する監視部23とを含む。
監視部23は、制御部18から設定データ17が送出されるとき、または設定部14によって設定データ17が設定されるときなど、いくつか可能なタイミングのいずれかで設定データ17を監視する。これにより、常に注目アレイにおいて使用されているALUを把握し、逆に、未使用のALUを特定し、制御部18へ伝える。制御部18は、ALUの使用状況から注目アレイに第2の機能回路をロードできるかどうかを判断し、可能ならロードするよう設定データ17を生成する。不可能であれば、別のアレイに第2の機能回路をマッピングするよう設定データ17を変更する。
【0025】
データ設定装置24のプログラム記憶部22は、集積回路装置10が実行すべき各種のプログラム19を保持する。コンパイル部20はプログラム記憶部22に格納されたプログラム19をコンパイルして、データフローグラフ21に変換してプログラム記憶部22に格納する。データフローグラフ21は、後述のように、入力変数および定数の演算の流れをグラフ構造で示したものである。
【0026】
制御部18は、データフローグラフ21をリコンフィギュラブル回路12の回路構成にマッピングするための設定データ17に変換し、集積回路装置10の設定部14に供給する。この際、監視部23から未使用ALUの情報を取得し、可能なかぎり注目アレイに複数の機能回路がロードされるよう設定データ17を記述する。設定データ17は設定データ記憶部16に格納される。
【0027】
設定部14は、設定データ記憶部16から設定データ17を読み出し、リコンフィギュラブル回路12にロードすることで、リコンフィギュラブル回路12を再構成する。再構成されたリコンフィギュラブル回路12は、ロードされた設定データ17にもとづいた処理を行う。
【0028】
図2は、注目アレイ12aの構成を示す。注目アレイ12aは、設定データ17をロードするためのデータ入力部40と、ALUの行が配列された領域42を含み、各行に設けられた接続スイッチ44と接続結線30によって、前行のALUの出力と後行のALUの入力が設定により任意に接続可能となっている。接続スイッチ44によって接続結線30が選択されるが、以降、「接続結線30による設定」とも略記する。各ALUは、例えば加算器、減算器、乗算器などを内蔵している。
【0029】
同図のように、横方向にはY個、縦方向にはX個のALUが配置されており、第1行のALU11、ALU12、・・・、ALU1Yには、入力変数や定数が入力され、設定により所定の演算がなされる。演算結果の出力は、第1行の接続結線30に設定された接続にしたがって、第2行のALU21、ALU22、・・・、ALU2Yに入力される。第1行の接続結線30は、第1行のALU群の出力と第2行のALU群の入力の間の任意の接続関係を実現できるように結線が構成されており、設定により特定の結線が有効となる。以下、第(X−1)行の接続結線30まで、同様の構成であり、最終行である第X行のALU群は演算の最終結果を出力する。なお、各ALUは、後述のmov演算を実行するために、入力をそのまま出力するスルーの経路(図示せず)を有し、これを選択することでそのALUがスルーノードとなる。
【0030】
データフローグラフ21を注目アレイ12aにマッピングするための設定データ17には、各ALUの演算を選択する情報、ALU行間の接続結線を選択する情報、第1行のALU群に入力される変数と定数の値が含まれる。
【0031】
いま、以下の実行対象プログラムを考える。
int main(int a, int b){
int x = 2*a;
int x = 5*b;
return (x+y);

図3は上記プログラムに対応するデータフローグラフを示す。図中、定数、変数および演算子は丸で囲まれ、mulは乗算、addは加算を示す。これをそのままリコンフィギュラブル回路12へマッピングすると、図4の状態になる。以上が実施の形態の基礎である。
【0032】
以下、ふたつ以上の機能回路をロードする方法を述べる。いま、図5のごとく、2行4列のアレイに含まれるALUを(i,j)で座標表示する。ただし、i=1,2、j=1,2,3,4である。図6、図7はそれぞれ、図4の設定を座標表示したところである。ここでは、例えばふたつのmulとひとつのaddがそれぞれ(1,1)(1,2)(2,1)に設定され、(1,1)と(1,2)の出力がともに(2,1)の入力へ接続されている。
【0033】
監視部23は、すでに命令が設定されている、すなわち使用済みのALUを調べ、その結果を自己の内部メモリ(図示せず)に記録する。図8はそのための処理を示す。ここで、アレイはZ行W列とし、内部変数i,jをそれぞれ行、列のカウンタとして使用する。同図のごとく、まずカウンタi,jに初期値「1」がセットされ(S10)、iとZが比較され(S12)、iがZ以下なら(S12のY)調査すべき行がまだ残っているので、S14へ進む。S14では、jとWが比較され、jがW以下なら(S14のY)まだ列が残っているため、S16へ進む。
【0034】
S16では、(i,j)のALUが未設定であるか、すなわち空いているか調べ、空いていれば(S16のY)「i行の空き数がW−j+1、使用数がj−1」を出力し(S22)、iをインクリメントおよびjを「1」に戻し(S24)、次の行を調査すべくS12へ戻る。S16で(i,j)のALUが使用済みであればS18へ進み、jをインクリメントしてS14へ戻る。
【0035】
S14においてjがすでにWの値を超えていれば(S14のN)、その行には空きがなかったため、「i行の空き数がゼロ、使用数がW」を出力し(S20)、S24へ進む。
【0036】
S12においてiがすでにZを超えていれば(S12のN)、すべての行の調査が終わっているので処理を終了する。以上の処理により、監視部23は各行の空き数を記録できる。空き数がわかるため、監視部23は結果的にいずれのi,jについても(i,j)のALUが空いているか使用済みかを知ることができる。
【0037】
このアレイに、第2のプログラム、すなわち第2の機能回路を設定する。このプログラムは以下のとおりである。
int main(int c, int d){
int x = 3−c;
int y = d/8;
return (x+y);

図9はこのプログラムのデータフローグラフ、図10は仮にこのプログラムのみをアレイにロードした場合の設定を座標表示で示す。しかし、すでに最初のプログラムがロードされているので、第2のプログラムのロードに当たり、空いているALUへ命令を設定していく。
【0038】
図11は制御部18が第2のプログラムのロードが可能かどうかを判定する処理を示す。ここでNは第2のプログラムの設定に必要な行数である。まず、カウンタiを「1」とし(S30)、iとNを比較する(S32)。iがN以下であれば設定は完了していないため、S34へ進み、i行目の空いているALUに第2のプログラムの実現に必要な命令をすべて収容できるか否かを判定する。これは、ALUの空き数をもとに判断される。収容可能であれば(S34のY)設定データ17に反映してiをインクリメントし(S36)、その行で新たに設定したALUの個数だけ空き数を減らし(S38)、S32へ戻る。
【0039】
S34において、i行目への命令の収容が不可能だったとき、すなわち、収容すべき命令の数が空き数を上回ったとき(S34のN)、エラー処理(S40)を実行して処理を終える。エラー処理(S40)として、このアレイ以外のアレイへの第2のプログラムのロードがある。別の処理として、後述の図14の処理がある。一方、S32において、iの値がすでにNを超えていれば、全命令の設定が完了したことになるので、同じく処理を終える。
【0040】
図12、図13は、第2のプログラムが設定された状態を各命令とALUの座標表示の関係で示している。subは(1,3)のごとく、空いていたALUを利用している。図13は、第1、第2のプログラムを実装した状態のアレイの様子を示す。
【0041】
図14は、前述のエラー処理の一例を示す。最初に処理の概要を述べ、後に実例を挙げる。
図14のごとく、まずカウンタi、j、kに「1」をセットする(S50)。ここでkは、新たにロードすべきプログラムを構成する第k番目の命令とし、そのプログラムには全部L個の命令があるとする。
【0042】
制御部18は、kがL以下(S52)で、iがZ以下(S54)で、jがW以下(S56)のとき、(i,j)のALUが空いているかどうか調べる(S58)。空いていれば第kの命令がそのALUに設定可能かどうか検査する(S60)。後述のごとく、ALUが空いていても、この命令に必要な入力ノード数と出力ノード数によっては、このALUが使用できないことがある。検査の結果使用できるとわかれば(S60のY)、設定データ17に反映し、kをインクリメントし(S62)、jをインクリメントし(S64)、S52へ戻る。S60でALUが第k命令のために使用できないとわかれば(S60のN)、S62をスキップしてS64へ進む。S58で(i,j)が空いていないことがわかれば、S60とS62をスキップしてS64へ進む。
【0043】
S56でjがすでにWを超えていれば、その行の検査は終わっているため(S56のN)、次の行を検査すべくjを「1」に戻し、iをインクリメントし(S66)、S54へ戻る。
【0044】
S54でiがすでにZを超えていれば、このプログラムの設定が完了せずに終わったため、エラー処理(S68)を実行して処理を終える。一方、S52でkがすでにLを超えていれば、このプログラムの設定が完了したため、正常に処理を終える。S68のエラー処理として、このプログラムを別のアレイへロードする等がある。以上が処理の大筋である。
【0045】
図15以下、図11および図14の処理を総括して実例で示す。ここでは、複数のプログラムに対応する第1データフローグラフ、第2データフローグラフ、・・・を設定する場合、アレイの空き領域に合わせて適宜データフローグラフを変形することにある。データフローグラフの設定は以下の手順に従う。
【0046】
(1) 第1データフローグラフを設定する。
(2) 第1データフローグラフの設定情報から未設定のALUに関する情報を取得し、その未設定のALUに第2データフローグラフが設定できれば、そのまま設定する(図11の場合)。
(3) 未設定のALUに第2データフローグラフが収まらない場合、第2データフローグラフを変形し、設定する(図14の場合)。
(4) どのように変形しても第2データフローグラフが収まらない場合、残りのデータフローグラフに対して設定処理を行う(図14のエラー処理)。
(5) 最終的に設定できなかったデータフローグラフは、別のALUアレイに設定を行う(同エラー処理)。
【0047】
図15、図16、図17は、設定すべき3つのデータフローグラフを模式的に示す。但し、番号はノードの番号を表し、各ノードには所定の論理演算が割り当てられている。また、アレイは8×8とする。
【0048】
まず、アレイは初期状態では未設定の状態なので、第1データフローグラフはそのまま設定できる。図18はその状態を示す。図19はこの時点でのALUの空き状態を示す。
【0049】
つぎに、第2データフローグラフを設定する。図19の空き状態と図16の必要なALU数から、第2データフローグラフもそのまま設定できることが分かる。図20は、アレイに第2データフローグラフを設定しおえた状態を示す。また、図21はこの時点でのALUの空き状態を示す。
【0050】
最後に、第3データフローグラフを設定する。図17から判明する必要なALU数と図19から判明する空き状態を比較すると、第3データフローグラフはそのままの接続状態ではアレイに設定できないことがわかる。第3データフローグラフの接続状態を変更することにより、設定が可能になるか検査する。アレイにノードを設定する規則は以下の通りである。
【0051】
(1) できるだけ上の行(iが小さい行)に設定する。
(2) できるだけ左寄りの列(jが小さい列)に設定する。
(3) 空いているALUが不足するなどの問題があり、データフローグラフを変形するとき、適宜スルーノードを追加する。
【0052】
図19に示す未使用のALUの位置を分かりやすくするため、既述の座標表示を使う。最上行から検査すると、(8,1)に設定できるのは、入力ノード数0で出力ノード数1のノードのみである。図22は第3データフローグラフを構成する各ノードの入力ノード数と出力ノード数を示す。図22から、ノード24を(8,1)に設定する。図23はこの時点での設定状態を上3行について示す。
【0053】
次に、設定したノード24の出力ノードを調べる。ノード24は出力ノードとしてノード28を持つが、ノード28は入力ノード数2であるため、(8,2)には設定できない。従って、更に下行に設定する。ここでは左寄せにするので、ノード28を仮に(6,3)に設定する。しかし、その場合でもノード28の2つの入力ノードの設定できないため、更に下行であって左寄せを満たす(4,4)に設定する。ノード24とノード28は接続されているので、(6,3)、(8,2)にスルーノード(図中「N」)を設定することにより接続する。図24はこの時点での設定状態を示す。
【0054】
つづいて、ノード28の入力ノードであるノード25を設定する。ノード25はノード28の上行に設定すればよいので、(7,3)へ設定する。以上でノード28の入力ノードの設定が終了する。図25はこの時点での設定状態を示す。
【0055】
次に、ノード28の出力ノードはノード31のみである。既述同様、ノード31を設定し、ノード31の入力ノードのうち未設定のノード29を(5,4)に設定する。更にノード29の入力ノードのうち未設定のノード26を(8,4)に設定する。図26はこの時点での設定状態を示す。
【0056】
つづいて、ノード31の出力のノード33を設定する。ノード33は入力ノード数が2であるので(1,6)に設定を行い、その入力ノードの設定を前述同様に設定する。しかし、ノード30の入力ノードのノード27に対して設定可能なALUがないため、設定は失敗となる。よって、ノード33以降の設定をクリアする。図27はクリア前の設定状態を示す。
【0057】
ノード27を設定するために(1,6)にスルーノードを挿入し、ノード33の設定位置を1行下げてスペースを作る。ノード33は(1,7)へ設定する。以上の手順で、図28のごとく、第3データフローグラフの設定が完了する。
【0058】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下、そうした例を挙げる。
【0059】
図1のデータ設定装置24その他にタイマー(図示せず)を設け、制御部18がタイマー出力に応じてリコンフィギュラブル回路12にロードする機能を切り替えてもよい。その場合、複数の機能を順次切り替えて実現することができる。この方法は、集積回路装置10にいろいろな機能を時分割で行わせる場合、有効である。
【0060】
実施の形態の集積回路装置10は、例えばソフトウエア無線機に応用できる。その場合、リコンフィギュラブル回路12には、適宜FMラジオ、カーナビゲーション機能、テレビジョン受像機能、音声通話機能などをロードすればよい。
【0061】
【発明の効果】
本発明によれば、利用効率面で改善された集積回路装置、およびその装置にデータを設定するためのデータ設定装置を提供できる。また、同じ機能を実現する際、回路規模、消費電力を削減することができる。
【図面の簡単な説明】
【図1】実施の形態に係る集積回路装置およびデータ設定装置の構成図である。
【図2】図1のリコンフィギュラブル回路の中のALUアレイ部分の構成図である。
【図3】あるプログラムの処理を表したデータフローグラフを示す図である。
【図4】図3のデータフローグラフに対応してマッピングされたALUアレイの構成図である。
【図5】2×4のALUアレイを座標表示して示す図である。
【図6】命令セットとALUの対応関係を示す図である。
【図7】命令セットとALUの対応関係を示す図である。
【図8】監視部がALUの空き状態を検査する手順を示すフローチャートである。
【図9】ALUアレイにロードすべき第2のプログラムのデータフローグラフを示す図である。
【図10】第1のプログラムを考慮しない場合、第2のプログラムの命令セットとALUの対応関係を示す図である。
【図11】第2のプログラムが、あるALUアレイにロード可能かどうかを判定する手順を示すフローチャートである。
【図12】第1のプログラムを考慮した場合、第2のプログラムの命令セットとALUの対応関係を示す図である。
【図13】第1および第2のプログラムがALUアレイにロードされた状態を示す図である。
【図14】第2以下のプログラムをALUアレイにロードする際、ロード可能か否かを判定する手順を示し、とくに図11のエラー処理の一例を示すフローチャートである。
【図15】第1データフローグラフで使用すべきALUを番号をつけて示す図である。
【図16】第2データフローグラフで使用すべきALUを番号をつけて示す図である。
【図17】第3データフローグラフで使用すべきALUを番号をつけて示す図である。
【図18】第1データフローグラフを8×8のALUアレイにロードした状態を示す図である。
【図19】図18の時点でのALUの使用状態を示す図である。
【図20】第2データフローグラフを8×8のALUアレイにロードした状態を示す図である。
【図21】図20の時点でのALUの使用状態を示す図である。
【図22】第3データフローグラフに必要なALUの入力および出力ノード数を示す図である。
【図23】第3データフローグラフのノード「24」を設定した状態を示す図である。
【図24】第3データフローグラフのノード「28」を設定した状態を示す図である。
【図25】第3データフローグラフのノード「25」を設定した状態を示す図である。
【図26】第3データフローグラフのノード「26」「29」「31」を設定した状態を示す図である。
【図27】第3データフローグラフのノード「27」が設定できず、設定が一時的に失敗して状態を示す図である。
【図28】図28の失敗を解消して第3データフローグラフの設定が完了した状態を示す図である。
【符号の説明】
10 集積回路装置、 12 リコンフィギュラブル回路、 12a ALUアレイ、 14 設定部、 18 制御部、 20 コンパイル部、 21 データフローグラフ、 23 監視部、 24 データ設定装置。
[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to an integrated circuit technology, and particularly to a reconfigurable circuit, and an integrated circuit device and a data conversion device that can use the same.
[0002]
[Prior art]
Recently, wireless communications such as mobile phones, GPS, and VICS have become widespread, and the types of wireless devices have been increasing. If all of these radios or their functions are implemented by hardware, the cost and the mounting area increase. Therefore, there is a concept of a "software radio" in which a circuit having general-purpose capability is mounted as hardware, and various functions are realized by switching software to be loaded on the circuit.
[0003]
As a circuit for realizing the software defined radio, there are an FPGA (Field Programmable Gate Array) and a DSP (Digital Signal Processor). Patent Document 1 proposes a method for reusing a circuit configuration by dynamically reconfiguring an FPGA. A type of circuit that can be dynamically changed is also referred to as a reconfigurable circuit.
[0004]
[Patent Document 1]
Japanese Patent Application Laid-Open No. H10-256383 (Full text, Fig. 1-4)
[0005]
[Problems to be solved by the invention]
Various logic can be realized by using a look-up table (LUT) for storing a truth table of a logic circuit based on an FPGA. However, in general, a unit of a logic element is small, and a desired function is realized. Requires many LUTs and wiring resources. As a result, as compared with a normal LSI, the mounting area is generally large and the cost is high. Also, the program time for rewriting the circuit is long to some extent, and is often not suitable for real-time function switching.
[0006]
SUMMARY OF THE INVENTION The present invention has been made in view of such circumstances, and has as its object to provide a reconfigurable circuit advantageous in terms of cost, rewriting speed, circuit use efficiency, power consumption, and the like, an integrated circuit device using the same, and data setting. It is to provide a device.
[0007]
[Means for Solving the Problems]
One embodiment of the present invention relates to an integrated circuit device, which is used to set an array of logic circuits each of which can selectively execute a plurality of arithmetic logic functions and a connection relationship between the functions of each logic circuit and the logic circuits in the array. And a setting unit that reads the setting data from the storage unit and loads the setting data into the array, wherein the setting data is an area that becomes unused when the first functional circuit is loaded into the array. To load the second functional circuit.
[0008]
The setting unit may be configured by dedicated hardware, for example, in addition to a combination of programs of a CPU (central processing unit) included in the device. The array is configured by arranging, for example, 8 × 8 logic circuits. As a result of loading a plurality of functions into an array, ie, the smallest unit of a functional configuration, the effective utilization of the array is increased.
[0009]
The setting data may be described so that the second functional circuit is arranged in a row near the input stage in an unused area. Alternatively, it may be described that the second functional circuit is packed and arranged in a column close to the logic circuit in which the first functional circuit is loaded. In either case, placing such a rule to place the second functional circuit makes it easier to accommodate that circuit in the array. Further, there is still room for mounting a third functional circuit.
[0010]
Another embodiment of the present invention also relates to an integrated circuit device, each having an array of m rows and n columns of a logic circuit capable of selectively performing a plurality of arithmetic logic functions, wherein each of the m rows and the n columns includes a first row to a first column. Loading and arranging a functional circuit, and loading and arranging a second functional circuit from i-th row and j-th column (1 ≦ i ≦ m, 1 ≦ j ≦ n) in an area which is unused in the array as a result; The second functional circuit is loaded and arranged so that one of the aforementioned i and j is minimized.
[0011]
Another embodiment of the present invention also relates to an integrated circuit device, each having an array of m rows and n columns of a logic circuit capable of selectively performing a plurality of arithmetic logic functions, wherein each of the m rows and the n columns includes a first row to a first column. A function circuit is loaded and arranged, and a second function circuit is loaded and arranged using a row and a column with a small row number as much as possible in an area unused in the array. It is.
[0012]
In these configurations, the second functional circuit may be optimally arranged using a through node as appropriate. The term “optimized placement” refers to a case where placement is only possible, a case where the total number of logic circuits used at the time of placement is minimized, and a case where there is room to place a third functional circuit. An arrangement that is useful in a sense. "Through node" refers to NOP (No Operation), that is, a node that does nothing. In practice, a wiring that simply connects an input and an output is selected inside a logic circuit, or the logic circuit is subjected to an identity mapping operation, that is, multiplication. If the circuit is set to a circuit that multiplies 1 as an adder or adds 0 as an adder, this logic circuit becomes a through node.
[0013]
Still another embodiment of the present invention relates to a data setting device. This device may be, for example, an external device that provides setting data to the above-described integrated circuit device, and may include a compiler that converts a program written in C language or another high-level language into setting data. The setting data corresponds to, for example, a data flow graph.
[0014]
The apparatus includes a control unit that generates setting data for loading a desired function into an integrated circuit device that includes an array of logic circuits each capable of selectively executing a plurality of arithmetic logic functions, and loading the setting data. And a monitoring unit that monitors an area used in the array when the operation is completed. The control unit and possibly the monitoring unit comprise a compiler or a combination thereof with a CPU or any other hardware or software. If the control unit receives the result of monitoring by the monitoring unit and generates setting data for loading another function in an unused area in the array, the use efficiency of the array is improved.
[0015]
The integrated circuit device and the data setting device described above may be a single device. In this case, for example, the former setting unit and the latter control unit can be configured by a single CPU and a single program. A part of the former and a part of the latter may be configured as a single device.
[0016]
In any of the above cases, the array of logic circuits is an array in which a plurality of rows of logic circuits arranged in the horizontal direction are combined in the vertical direction, and there is no connection for connection between the logic circuits in the horizontal direction. May be provided with a connection for connection between the output of the logic circuit row of (1) and the input of the logic circuit row of the next stage.
[0017]
In addition, any combination of the above-described components, and the expression of the present invention expressed as a method, an apparatus, a system, or a computer program are also effective as embodiments of the present invention.
[0018]
BEST MODE FOR CARRYING OUT THE INVENTION
The embodiment relates to a reconfigurable circuit having an ALU (Arithmetic Logic Unit) array as a basic element. In this type of circuit, one ALU constitutes one logical unit, and this logical unit can selectively execute a plurality of arithmetic operations. Therefore, the circuit configuration is simple, and a data flow graph described later can be directly displayed. Configuration time is saved because mapping is possible. Mapping refers to loading an instruction set of a program to be executed in the reconfigurable circuit and a connection data set required in the reconfigurable circuit to realize the program into an ALU array (hereinafter simply referred to as “array”). Setting. Hereinafter, the configuration is defined.
[0019]
1. Array: ALUs are arranged in an m × n matrix.
2. Reconfigurable circuit: A plurality of arrays are built-in, but one array will be noted in the following description (hereinafter, this array is also referred to as an “array of interest”).
[0020]
An ALU is a "logical unit", but usually one ALU implements one function. Thus, the array is a “functional unit”. The size of the array, that is, the setting of the above-mentioned values of m and n is made by empirical rules based on the assumption of the function to be realized. If the array is too small, one function cannot be realized. On the other hand, if the array is too large, when one function is loaded, unused ALUs increase and utilization efficiency is poor.
[0021]
From such a viewpoint, a feature of the embodiment is that a plurality of functions are implemented in an array which is a functional unit. That is, first, the first functional circuit is loaded, and if there is an unused area, the second functional circuit is loaded to effectively use the array. Of course, it is effective to load the third and lower functional circuits in the remaining area.
[0022]
FIG. 1 shows a configuration of an integrated circuit device 10 and a data setting device 24 according to the embodiment. The data setting device 24 creates data for setting the circuit configuration of the integrated circuit device 10 and supplies the data to the integrated circuit device 10.
[0023]
The integrated circuit device 10 includes a reconfigurable circuit 12, a setting data storage unit 16 for storing setting data 17 for reconfiguring the reconfigurable circuit 12, and a setting for loading the setting data 17 into the reconfigurable circuit 12. Unit 14. "Reconstruction" refers to making a circuit for realizing a desired function. In practice, the loading of the setting data 17 corresponds to this.
[0024]
The data setting device 24 includes a control unit 18, a compiling unit 20, a program storage unit 22, and a monitoring unit 23 that monitors the use status of the ALU in the target array.
The monitoring unit 23 monitors the setting data 17 at any of several possible timings, such as when the setting data 17 is transmitted from the control unit 18 or when the setting data 17 is set by the setting unit 14. As a result, the ALU used in the target array is always grasped, and the unused ALU is identified and transmitted to the control unit 18. The control unit 18 determines whether the second functional circuit can be loaded into the array of interest based on the usage status of the ALU, and generates the setting data 17 to load the array if possible. If it is impossible, the setting data 17 is changed so that the second functional circuit is mapped to another array.
[0025]
The program storage unit 22 of the data setting device 24 holds various programs 19 to be executed by the integrated circuit device 10. The compiling unit 20 compiles the program 19 stored in the program storage unit 22, converts the program 19 into a data flow graph 21, and stores the data flow graph 21 in the program storage unit 22. As will be described later, the data flow graph 21 shows the flow of calculation of input variables and constants in a graph structure.
[0026]
The control unit 18 converts the data flow graph 21 into setting data 17 for mapping to the circuit configuration of the reconfigurable circuit 12, and supplies the setting data 17 to the setting unit 14 of the integrated circuit device 10. At this time, information on the unused ALU is acquired from the monitoring unit 23, and the setting data 17 is described so that a plurality of functional circuits are loaded into the array of interest as much as possible. The setting data 17 is stored in the setting data storage unit 16.
[0027]
The setting unit 14 reconfigures the reconfigurable circuit 12 by reading the setting data 17 from the setting data storage unit 16 and loading the setting data 17 into the reconfigurable circuit 12. The reconfigured reconfigurable circuit 12 performs processing based on the loaded setting data 17.
[0028]
FIG. 2 shows the configuration of the target array 12a. The target array 12a includes a data input unit 40 for loading the setting data 17 and an area 42 in which the rows of the ALU are arranged. The connection switch 44 and the connection 30 provided in each row provide the data of the ALU of the preceding row. The output and the input of the following ALU can be arbitrarily connected by setting. Although the connection connection 30 is selected by the connection switch 44, hereinafter, it is abbreviated as "setting by the connection connection 30". Each ALU includes, for example, an adder, a subtractor, a multiplier, and the like.
[0029]
As shown in the figure, Y ALUs are arranged in the horizontal direction and X ALUs are arranged in the vertical direction. Input variables and constants are input to ALU11, ALU12,... , A predetermined calculation is performed according to the setting. The output of the operation result is input to ALU21, ALU22,..., ALU2Y in the second row according to the connection set in the connection connection 30 in the first row. The connection connection 30 in the first row is configured such that an arbitrary connection relationship between the output of the ALU group in the first row and the input of the ALU group in the second row can be realized, and a specific connection is set by setting. Becomes effective. Hereinafter, the configuration is the same up to the connection connection 30 in the (X-1) th row, and the ALU group in the Xth row, which is the last row, outputs the final result of the operation. Each ALU has a through path (not shown) for directly outputting an input in order to execute a mov operation described later, and by selecting this, the ALU becomes a through node.
[0030]
The setting data 17 for mapping the data flow graph 21 to the array of interest 12a includes information for selecting an operation of each ALU, information for selecting a connection connection between ALU rows, and variables input to the ALU group in the first row. Contains the value of the constant.
[0031]
Now, consider the following program to be executed.
int main (int a, int b) {
int x = 2 * a;
int x = 5 * b;
return (x + y);

FIG. 3 shows a data flow graph corresponding to the above program. In the figure, constants, variables and operators are circled, mul indicates multiplication, and add indicates addition. If this is directly mapped to the reconfigurable circuit 12, the state shown in FIG. 4 is obtained. The above is the basis of the embodiment.
[0032]
Hereinafter, a method of loading two or more functional circuits will be described. Now, as shown in FIG. 5, the ALU included in the array of 2 rows and 4 columns is represented by coordinates (i, j). However, i = 1,2 and j = 1,2,3,4. 6 and 7 respectively show coordinates of the setting in FIG. Here, for example, two muls and one add are respectively set to (1, 1) (1, 2) (2, 1), and both outputs of (1, 1) and (1, 2) are (2, 1). It is connected to the input of 1).
[0033]
The monitoring unit 23 checks the ALU for which an instruction has already been set, that is, the used ALU, and records the result in its own internal memory (not shown). FIG. 8 shows the processing for that. Here, the array has Z rows and W columns, and the internal variables i and j are used as row and column counters, respectively. As shown in the figure, first, an initial value "1" is set in counters i and j (S10), i and Z are compared (S12), and if i is equal to or less than Z (Y in S12), a row to be checked still remains. The process proceeds to S14. In S14, j and W are compared, and if j is equal to or less than W (Y in S14), the process proceeds to S16 because there is still a row.
[0034]
In S16, it is checked whether the ALU of (i, j) is unset, that is, whether it is vacant. If it is vacant (Y of S16), "the vacant number of the i-th row is W-j + 1 and the used number is j-1" Is output (S22), i is incremented and j is returned to "1" (S24), and the process returns to S12 to investigate the next line. If the (i, j) ALU has been used in S16, the process proceeds to S18, j is incremented, and the process returns to S14.
[0035]
If j has already exceeded the value of W in S14 (N in S14), there is no free space in that row, so that "the number of free rows in the i row is zero and the number of used rows is W" is output (S20), and S24 is executed. Proceed to.
[0036]
If i has already exceeded Z in S12 (N in S12), the process is terminated because all rows have been examined. With the above processing, the monitoring unit 23 can record the number of empty lines in each row. Since the number of vacancies is known, the monitoring unit 23 can consequently know whether the (i, j) ALU is vacant or used for any i, j.
[0037]
A second program, that is, a second functional circuit is set in this array. This program is as follows.
int main (int c, int d) {
int x = 3-c;
int y = d / 8;
return (x + y);

FIG. 9 shows a data flow graph of this program, and FIG. 10 shows a setting in the case where only this program is temporarily loaded into an array in a coordinate display. However, since the first program has already been loaded, an instruction is set to a vacant ALU when loading the second program.
[0038]
FIG. 11 shows a process in which the control unit 18 determines whether the second program can be loaded. Here, N is the number of lines required for setting the second program. First, the counter i is set to "1" (S30), and i and N are compared (S32). If i is less than or equal to N, the setting is not completed, so the process proceeds to S34, and it is determined whether or not all the instructions necessary for realizing the second program can be accommodated in the vacant ALU in the i-th row. This is determined based on the number of free ALUs. If it can be accommodated (Y in S34), i is incremented by reflecting it in the setting data 17 (S36), the number of free spaces is reduced by the number of ALUs newly set in the row (S38), and the process returns to S32.
[0039]
In S34, when it is impossible to store the instruction in the i-th row, that is, when the number of instructions to be stored exceeds the number of available spaces (N in S34), error processing (S40) is executed to execute the processing. Finish. The error processing (S40) includes loading of the second program into an array other than this array. As another process, there is a process of FIG. 14 described later. On the other hand, in step S32, if the value of i has already exceeded N, it means that the setting of all the instructions has been completed, and the process is similarly ended.
[0040]
12 and 13 show a state in which the second program is set in relation to each command and the coordinate display of the ALU. The sub uses the vacant ALU like (1, 3). FIG. 13 shows the state of the array in a state where the first and second programs are mounted.
[0041]
FIG. 14 shows an example of the above-described error processing. First, an outline of the process will be given, and an actual example will be given later.
As shown in FIG. 14, first, "1" is set to counters i, j, and k (S50). Here, k is the k-th instruction constituting a program to be newly loaded, and it is assumed that the program includes all L instructions.
[0042]
When k is equal to or less than L (S52), i is equal to or less than Z (S54), and j is equal to or less than W (S56), the control unit 18 checks whether the ALU of (i, j) is empty (S58). If free, it is checked whether the k-th instruction can be set in the ALU (S60). As will be described later, even if the ALU is empty, the ALU may not be usable depending on the number of input nodes and the number of output nodes required for this instruction. If the result of the inspection indicates that it can be used (Y in S60), the value is reflected in the setting data 17, k is incremented (S62), j is incremented (S64), and the process returns to S52. If it is determined in S60 that the ALU cannot be used because of the k-th instruction (N in S60), the process skips S62 and proceeds to S64. If (i, j) is found not to be empty in S58, S60 and S62 are skipped and the process proceeds to S64.
[0043]
If j already exceeds W in S56, the inspection of that row has been completed (N of S56), so that j is returned to “1” to inspect the next row, and i is incremented (S66). It returns to S54.
[0044]
If i has already exceeded Z in S54, since the setting of this program has not been completed, error processing (S68) is executed and the processing ends. On the other hand, if k has already exceeded L in S52, the setting of this program has been completed, and the process ends normally. The error processing in S68 includes loading this program into another array. The above is the outline of the processing.
[0045]
15 and subsequent figures, the processes of FIGS. 11 and 14 are collectively shown by actual examples. Here, when the first data flow graph, the second data flow graph,... Corresponding to a plurality of programs are set, the data flow graph is appropriately modified according to the empty area of the array. Set the data flow graph according to the following procedure.
[0046]
(1) Set the first data flow graph.
(2) Information about an unset ALU is acquired from the setting information of the first data flow graph, and if the second data flow graph can be set in the unset ALU, the setting is performed as it is (FIG. 11).
(3) If the second data flow graph does not fit in the unset ALU, the second data flow graph is modified and set (in the case of FIG. 14).
(4) If the second data flow graph does not fit in any way, the setting process is performed on the remaining data flow graphs (error processing in FIG. 14).
(5) The data flow graph that could not be set finally is set in another ALU array (the same error processing).
[0047]
FIGS. 15, 16, and 17 schematically show three data flow graphs to be set. Here, the number indicates the number of the node, and a predetermined logical operation is assigned to each node. The array is 8 × 8.
[0048]
First, since the array is not set in the initial state, the first data flow graph can be set as it is. FIG. 18 shows this state. FIG. 19 shows the vacant state of the ALU at this time.
[0049]
Next, a second data flow graph is set. It can be seen from the empty state in FIG. 19 and the required number of ALUs in FIG. 16 that the second data flow graph can be set as it is. FIG. 20 shows a state where the second data flow graph has been set in the array. FIG. 21 shows the ALU idle state at this time.
[0050]
Finally, a third data flow graph is set. By comparing the required number of ALUs found from FIG. 17 with the empty state found from FIG. 19, it can be seen that the third data flow graph cannot be set in the array in the connected state as it is. It is checked whether setting can be made by changing the connection state of the third data flow graph. The rules for setting nodes in the array are as follows.
[0051]
(1) Set the line as high as possible (the line where i is small).
(2) Set the column as far to the left as possible (the column where j is small).
(3) There is a problem such as a shortage of vacant ALUs, and when deforming the data flow graph, through nodes are added as appropriate.
[0052]
In order to make the position of the unused ALU shown in FIG. 19 easy to understand, the coordinate display described above is used. When inspected from the top row, (8, 1) can be set only to nodes having 0 input nodes and 1 output nodes. FIG. 22 shows the number of input nodes and the number of output nodes of each node constituting the third data flow graph. From FIG. 22, the node 24 is set to (8, 1). FIG. 23 shows the setting state at this time for the upper three rows.
[0053]
Next, the output node of the set node 24 is checked. The node 24 has a node 28 as an output node, but since the node 28 has two input nodes, it cannot be set to (8, 2). Therefore, it is set further down. Here, since it is left-aligned, the node 28 is temporarily set to (6, 3). However, even in this case, since two input nodes of the node 28 cannot be set, (4, 4) which is further down and satisfies the left alignment is set. Since the nodes 24 and 28 are connected, they are connected by setting through nodes ("N" in the figure) at (6, 3) and (8, 2). FIG. 24 shows the setting state at this time.
[0054]
Subsequently, a node 25 which is an input node of the node 28 is set. Since the node 25 may be set in the upper row of the node 28, it is set to (7, 3). Thus, the setting of the input node of the node 28 is completed. FIG. 25 shows the setting state at this time.
[0055]
Next, the output node of the node 28 is only the node 31. As described above, the node 31 is set, and the unset node 29 among the input nodes of the node 31 is set to (5, 4). Further, the unset node 26 among the input nodes of the node 29 is set to (8, 4). FIG. 26 shows the setting state at this time.
[0056]
Subsequently, the output node 33 of the node 31 is set. Since the number of input nodes of the node 33 is 2, the setting is made at (1, 6), and the setting of the input node is set as described above. However, the setting fails because there is no ALU that can be set for the input node 27 of the node 30. Therefore, the settings after the node 33 are cleared. FIG. 27 shows the setting state before clearing.
[0057]
In order to set the node 27, a through node is inserted at (1, 6), and the setting position of the node 33 is lowered by one line to create a space. The node 33 sets (1, 7). With the above procedure, the setting of the third data flow graph is completed as shown in FIG.
[0058]
The present invention has been described based on the embodiments. It should be understood by those skilled in the art that the embodiments are exemplifications, and that various modifications can be made to the combination of each component and each processing process, and that such modifications are also within the scope of the present invention. . The following is an example.
[0059]
A timer (not shown) may be provided in the data setting device 24 in FIG. 1 and the like, and the function of the control unit 18 to load the reconfigurable circuit 12 according to the timer output may be switched. In that case, a plurality of functions can be realized by sequentially switching. This method is effective when the integrated circuit device 10 performs various functions in a time sharing manner.
[0060]
The integrated circuit device 10 of the embodiment can be applied to, for example, a software defined radio. In this case, the FM radio, the car navigation function, the television receiving function, the voice call function, and the like may be loaded into the reconfigurable circuit 12 as appropriate.
[0061]
【The invention's effect】
According to the present invention, it is possible to provide an integrated circuit device improved in utilization efficiency and a data setting device for setting data in the device. Also, when implementing the same function, the circuit scale and power consumption can be reduced.
[Brief description of the drawings]
FIG. 1 is a configuration diagram of an integrated circuit device and a data setting device according to an embodiment.
FIG. 2 is a configuration diagram of an ALU array portion in the reconfigurable circuit of FIG. 1;
FIG. 3 is a diagram showing a data flow graph representing a process of a certain program.
FIG. 4 is a configuration diagram of an ALU array mapped according to the data flow graph of FIG. 3;
FIG. 5 is a diagram showing coordinates of a 2 × 4 ALU array.
FIG. 6 is a diagram showing a correspondence between an instruction set and an ALU.
FIG. 7 is a diagram showing the correspondence between instruction sets and ALUs.
FIG. 8 is a flowchart illustrating a procedure in which a monitoring unit checks an ALU for an empty state;
FIG. 9 is a diagram showing a data flow graph of a second program to be loaded into the ALU array.
FIG. 10 is a diagram showing a correspondence between an instruction set of the second program and an ALU when the first program is not considered;
FIG. 11 is a flowchart illustrating a procedure for determining whether a second program can be loaded into a certain ALU array.
FIG. 12 is a diagram illustrating a correspondence between an instruction set of the second program and an ALU when the first program is considered.
FIG. 13 is a diagram showing a state where the first and second programs are loaded into the ALU array.
14 is a flowchart showing a procedure for determining whether or not loading is possible when loading a second or lower program into the ALU array, and particularly showing an example of error processing in FIG. 11;
FIG. 15 is a diagram showing ALUs to be used in the first data flow graph by numbering;
FIG. 16 is a diagram showing ALUs to be used in the second data flow graph by numbering;
FIG. 17 is a diagram showing ALUs to be used in the third data flow graph by numbering;
FIG. 18 is a diagram showing a state in which a first data flow graph is loaded into an 8 × 8 ALU array.
FIG. 19 is a diagram illustrating the use state of the ALU at the time of FIG. 18;
FIG. 20 is a diagram showing a state in which a second data flow graph is loaded into an 8 × 8 ALU array.
FIG. 21 is a diagram illustrating the use state of the ALU at the time of FIG. 20;
FIG. 22 is a diagram showing the number of input and output nodes of the ALU required for the third data flow graph.
FIG. 23 is a diagram showing a state where a node “24” of the third data flow graph is set.
FIG. 24 is a diagram showing a state where a node “28” of the third data flow graph is set.
FIG. 25 is a diagram showing a state where a node “25” of the third data flow graph is set.
FIG. 26 is a diagram showing a state where nodes “26”, “29”, and “31” of the third data flow graph are set.
FIG. 27 is a diagram showing a state in which the node “27” of the third data flow graph cannot be set, and the setting is temporarily failed.
28 is a diagram showing a state in which the setting of the third data flow graph is completed after the failure in FIG. 28 is resolved.
[Explanation of symbols]
Reference Signs List 10 integrated circuit device, 12 reconfigurable circuit, 12a ALU array, 14 setting unit, 18 control unit, 20 compiling unit, 21 data flow graph, 23 monitoring unit, 24 data setting device.

Claims (9)

それぞれが複数の算術論理機能を選択的に実行可能な論理回路のアレイと、
前記アレイにおける各論理回路の機能と論理回路間の接続関係を設定するための設定データを記憶する記憶部と、
前記記憶部から前記設定データを読み込み、前記アレイにロードする設定部と、
を含み、前記設定データは、前記アレイに第1の機能回路をロードしたときに未使用となる領域に第2の機能回路をロードするよう記述されていることを特徴とする集積回路装置。
An array of logic circuits, each of which can selectively perform a plurality of arithmetic logic functions;
A storage unit that stores setting data for setting a function of each logic circuit in the array and a connection relationship between the logic circuits,
A setting unit that reads the setting data from the storage unit and loads the setting data into the array;
Wherein the setting data is described so as to load a second functional circuit into an area which is not used when the first functional circuit is loaded onto the array.
請求項1に記載の装置において、前記設定データは、前記未使用となる領域中、前記第2の機能回路を入力段に近い行に詰めて配置するよう記述されていることを特徴とする集積回路装置。2. The apparatus according to claim 1, wherein the setting data is described so as to arrange the second functional circuit in a row near an input stage in the unused area. Circuit device. 請求項1または2に記載の装置において、前記設定データは、前記未使用となる領域中、前記第2の機能回路を前記第1の機能回路がロードされている論理回路に近い列に詰めて配置するよう記述されていることを特徴とする集積回路装置。3. The device according to claim 1, wherein the setting data is obtained by packing the second function circuit in a column close to a logic circuit in which the first function circuit is loaded in the unused area. 4. An integrated circuit device that is described to be placed. それぞれが複数の算術論理機能を選択的に実行可能な論理回路のm行n列のアレイを有し、このアレイの1行1列から第1の機能回路をロードして配置し、その結果前記アレイにおいて未使用となる領域において、i行j列(1≦i≦m,1≦j≦n)から第2の機能回路をロードして配置し、前記のiの値が最小になるよう第2の機能回路をロードおよび配置したことを特徴とする集積回路装置。Each has an array of m rows and n columns of logic circuits capable of selectively executing a plurality of arithmetic logic functions, and loads and arranges the first functional circuit from one row and one column of the array, and as a result, In the unused area of the array, the second functional circuit is loaded and arranged from the i-th row and the j-th column (1 ≦ i ≦ m, 1 ≦ j ≦ n), and the second functional circuit is arranged so that the value of i is minimized. An integrated circuit device, wherein the second functional circuit is loaded and arranged. それぞれが複数の算術論理機能を選択的に実行可能な論理回路のm行n列のアレイを有し、このアレイの1行1列から第1の機能回路をロードして配置し、その結果前記アレイにおいて未使用となる領域において、i行j列(1≦i≦m,1≦j≦n)から第2の機能回路をロードして配置し、前記のjの値が最小になるよう第2の機能回路をロードおよび配置したことを特徴とする集積回路装置。Each has an array of m rows and n columns of logic circuits capable of selectively executing a plurality of arithmetic logic functions, and loads and arranges the first functional circuit from one row and one column of the array, and as a result, In the unused area of the array, the second functional circuit is loaded and arranged from the i-th row and the j-th column (1 ≦ i ≦ m, 1 ≦ j ≦ n), and the second functional circuit is arranged so that the value of j is minimized. An integrated circuit device, wherein the second functional circuit is loaded and arranged. それぞれが複数の算術論理機能を選択的に実行可能な論理回路のm行n列のアレイを有し、このアレイの1行1列から第1の機能回路をロードして配置し、その結果前記アレイにおいて未使用となる領域において、可能な限り行番号の小さな行および列番号の小さな列を利用して第2の機能回路をロードして配置したことを特徴とする集積回路装置。Each has an array of m rows and n columns of logic circuits capable of selectively executing a plurality of arithmetic logic functions, and loads and arranges the first functional circuit from one row and one column of the array, and as a result, An integrated circuit device wherein a second functional circuit is loaded and arranged using a row having a small row number and a column having a small column number as much as possible in an unused area of the array. 請求項4から6のいずれかに記載の装置において、適宜スルーノードを利用して第2の機能回路を最適化配置したことを特徴とする集積回路装置。7. The integrated circuit device according to claim 4, wherein the second functional circuit is optimally arranged by using a through node as appropriate. それぞれが複数の算術論理機能を選択的に実行可能な論理回路のアレイを含む集積回路装置に所期の機能をロードするための設定データを生成する制御部と、
前記設定データをロードしたとき、前記アレイにおいて使用されている領域を監視する監視部と、
を含むことを特徴とするデータ設定装置。
A control unit for generating setting data for loading a desired function into an integrated circuit device including an array of logic circuits each capable of selectively executing a plurality of arithmetic logic functions;
When the configuration data is loaded, a monitoring unit that monitors an area used in the array,
A data setting device comprising:
請求項8に記載の装置において、前記制御部は、前記監視部による監視の結果を受けて、前記アレイにおいて未使用の領域に別の機能をロードするための設定データを生成することを特徴とするデータ設定装置。9. The apparatus according to claim 8, wherein the control unit receives a result of monitoring by the monitoring unit and generates setting data for loading another function into an unused area in the array. Data setting device.
JP2003095039A 2003-03-31 2003-03-31 Integrated circuit device and data setting device for the device Expired - Fee Related JP3989397B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003095039A JP3989397B2 (en) 2003-03-31 2003-03-31 Integrated circuit device and data setting device for the device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003095039A JP3989397B2 (en) 2003-03-31 2003-03-31 Integrated circuit device and data setting device for the device

Publications (2)

Publication Number Publication Date
JP2004302856A true JP2004302856A (en) 2004-10-28
JP3989397B2 JP3989397B2 (en) 2007-10-10

Family

ID=33407459

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003095039A Expired - Fee Related JP3989397B2 (en) 2003-03-31 2003-03-31 Integrated circuit device and data setting device for the device

Country Status (1)

Country Link
JP (1) JP3989397B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007241694A (en) * 2006-03-09 2007-09-20 Sanyo Electric Co Ltd Arithmetic mapping method to reconfigurable circuit, reconfigurable circuit and data flow graph
JP2010211496A (en) * 2009-03-10 2010-09-24 Mitsubishi Electric Corp Dynamic reconfiguration device

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007241694A (en) * 2006-03-09 2007-09-20 Sanyo Electric Co Ltd Arithmetic mapping method to reconfigurable circuit, reconfigurable circuit and data flow graph
JP4597075B2 (en) * 2006-03-09 2010-12-15 三洋電機株式会社 Operation mapping method to reconfigurable circuit, reconfigurable circuit, and data flow graph
JP2010211496A (en) * 2009-03-10 2010-09-24 Mitsubishi Electric Corp Dynamic reconfiguration device

Also Published As

Publication number Publication date
JP3989397B2 (en) 2007-10-10

Similar Documents

Publication Publication Date Title
US7953956B2 (en) Reconfigurable circuit with a limitation on connection and method of determining functions of logic circuits in the reconfigurable circuit
US9135387B2 (en) Data processing apparatus including reconfiguarable logic circuit
US7120903B2 (en) Data processing apparatus and method for generating the data of an object program for a parallel operation apparatus
JP4909588B2 (en) Information processing apparatus and method of using reconfigurable device
KR101080465B1 (en) Data processing device
JP2002503839A (en) Method of generating an application specific integrated circuit using a programmable hardware architecture
JP4484756B2 (en) Reconfigurable circuit and processing device
JPWO2002095946A1 (en) Integrated circuit device
US11171652B2 (en) Method and apparatus for implementing configurable streaming networks
WO2001095099A1 (en) System for managing circuitry of variable function information processing circuit and method for managing circuitry of variable function information processing circuit
WO2018067251A1 (en) Methods and apparatus for dynamically configuring soft processors on an integrated circuit
Marconi Online scheduling and placement of hardware tasks with multiple variants on dynamically reconfigurable field-programmable gate arrays
WO2002003592A2 (en) System and method for executing hybridized code on a dynamically configurable hardware environment
JP3832557B2 (en) Circuit reconfiguration method and information processing system for programmable logic circuit
JP5007838B2 (en) Information processing apparatus and information processing program
JP3989397B2 (en) Integrated circuit device and data setting device for the device
JP3613314B2 (en) Information processing system
JP2006018411A (en) Processor
US7017033B2 (en) Arithmetic apparatus and arithmetic method
US20050272197A1 (en) Semiconductor device
JP2018206195A (en) Calculation system, and control method and program of calculation system
JP4208919B2 (en) Activation code generation method
JP4562679B2 (en) Data flow graph generator
US11249753B2 (en) Processor element, programmable device, and processor element control method
Chauhan et al. Reconfiguration of fpga for domain specific applications using embedded system approach

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061205

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070201

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070717

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

Free format text: PAYMENT UNTIL: 20100727

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100727

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110727

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120727

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130727

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees