(57)【要約】【課題】  メモリ制御を効率的に実行する処理装置を提供する。【解決手段】  本発明の処理装置は、機能の変更が可能な複数の論理回路（ＡＬＵ）を備えたリコンフィギュラブル回路１２と、ＡＬＵの機能を設定する設定部とを備える。設定部は、複数のＡＬＵのうちの一部の機能を、所定期間の間、同一にさせる。同一に設定される機能は、所定期間の間の出現頻度の高い機能であってもよく、また出現頻度の高いことが予測される機能であってもよい。【選択図】図９
2006065786.tif 000002
【特許請求の範囲】
【請求項１】
機能の変更が可能な複数の論理回路を備えたリコンフィギュラブル回路と、前記論理回路の機能を設定する設定部とを備えた処理装置であって、
前記設定部は、前記複数の論理回路のうちの少なくとも一部の機能を、所定期間の間、同一の機能に設定することを特徴とする処理装置。
【請求項２】
前記設定部により同一に設定される機能は、所定期間の間の出現頻度が高い機能であることを特徴とする請求項１に記載の処理装置。
【請求項３】
前記設定部により同一に設定される機能は、所定の処理を実現する機能であることを特徴とする請求項１に記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、機能の変更が可能なリコンフィギュラブル回路を備えた処理装置に関する。
【背景技術】
【０００２】
近年、ＡＬＵ(Arithmetic Logic Unit)と呼ばれる基本演算機能を複数持つ多機能素子を用いたリコンフィギュラブルプロセッサの開発が進められている（例えば、特許文献１参照）。リコンフィギュラブルプロセッサでは、コマンドデータをＡＬＵ回路に順次設定することで、全体として所期の演算処理回路を実現することができる。コマンドデータは、Ｃ言語などの高級プログラム言語で記述されたソースプログラムをコンパイル処理することでＤＦＧ（データフローグラフ）と呼ばれるデータフローを作成し、そのＤＦＧをＡＬＵアレイにマッピングするデータとして作成される。コマンドデータは、コマンドメモリに格納される。
【特許文献１】特開２００４−２２０３７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ソースプログラムをＤＦＧ化すると、配列やポインタ回路を実現する処理などの特定の処理が、頻繁に出現する場合がある。ＤＦＧは、ＡＬＵアレイの大きさに合わせて分割されるため、同一の処理であっても、最終的にＡＬＵアレイにマッピングするＤＦＧの形は異なることが多い。そのため、同じ処理のＤＦＧを連続してＡＬＵアレイにマッピングする場合であっても、同じＡＬＵに同じ機能が割り当てられることは稀である。
【０００４】
リコンフィギュラブルプロセッサをバッテリで駆動する場合、消費電力をいかに低減させるかがリコンフィギュラブルプロセッサを普及させるために重要な要素となる。１クロックごとにコマンドデータをＡＬＵアレイにマッピングするとき、それぞれのＡＬＵに対して割り当てる機能が変更されると、機能の切替処理に伴って電力が消費されることになる。なお、バッテリ駆動のリコンフィギュラブルプロセッサでなくても、消費電力を低減することは好ましい。
【０００５】
本発明はこうした状況に鑑みてなされたもので、その目的は、リコンフィギュラブル回路における論理回路への機能割当てを効率的に実行する技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様は、機能の変更が可能な複数の論理回路を備えたリコンフィギュラブル回路と、論理回路の機能を設定する設定部とを備えた処理装置に関する。この態様の処理装置において、設定部は、複数の論理回路のうちの少なくとも一部の機能を、所定期間の間、同一の機能に設定する。この処理装置によると、所定期間、特定の論理回路については機能変更を行わないため、機能の切替にともなう電力消費を低減することが可能となる。
【０００７】
リコンフィギュラブル回路は、複数種類の多ビット演算を選択的に実行可能な算術論理回路を有してもよい。
【０００８】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラムとして表現したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明によれば、リコンフィギュラブル回路における論理回路への機能割当てを効率的に実行する技術を提供することができる。
【発明を実施するための最良の形態】
【００１０】
図１は、実施例に係る処理装置１０の構成図である。処理装置１０は、集積回路装置２６を備える。集積回路装置２６は、回路構成を再構成可能とする機能を有する。集積回路装置２６は１チップとして構成され、リコンフィギュラブル回路１２、設定部１４、制御部１８、出力回路２２、メモリ部２７および経路部２４、２９を備える。リコンフィギュラブル回路１２は、設定を変更することにより、機能の変更を可能とする。リコンフィギュラブル回路１２は組合せ回路または順序回路等の論理回路として構成される。
【００１１】
設定部１４は、リコンフィギュラブル回路１２に所期の回路を構成するための設定データ４０を供給する。設定部１４は、プログラムカウンタのカウント値に基づいて記憶したデータを出力するコマンドメモリとして構成されてもよい。この場合、制御部１８がプログラムカウンタの出力を制御する。この意味において、設定データ４０はコマンドデータと呼ばれてもよい。
【００１２】
経路部２４、２９は、フィードバックパスとして機能し、リコンフィギュラブル回路１２の出力を、リコンフィギュラブル回路１２の入力に接続する。出力回路２２は、例えばデータフリップフロップ（Ｄ−ＦＦ）などの順序回路として構成され、リコンフィギュラブル回路１２の出力を受ける。
【００１３】
メモリ部２７は、リコンフィギュラブル回路１２から出力されるデータ信号および／または外部から入力されるデータ信号を格納するための記憶領域を有する。メモリ部２７はＲＡＭとして構成される。メモリ部２７に格納されたデータ信号は、経路部２９を通じてリコンフィギュラブル回路１２の入力として伝達される。
【００１４】
リコンフィギュラブル回路１２は、機能の変更が可能な論理回路を有して構成される。具体的にリコンフィギュラブル回路１２は、複数の演算機能を選択的に実行可能な論理回路を複数段に配列させた構成を備え、さらに前段の論理回路列の出力と後段の論理回路列の入力との接続関係を設定可能な接続部を備える。各段に含まれる複数の論理回路は、論理回路の集合体を構成する。この接続部は、前段の論理回路列の出力すなわち内部状態を保持する状態保持回路の機能も備える。複数の論理回路は、マトリックス状に配置される。各論理回路の機能と、論理回路間の接続関係は、設定部１４により供給される設定データ４０に基づいて設定される。設定データ４０は、以下の手順で生成される。
【００１５】
集積回路装置２６により実現されるべきプログラム３６が、記憶部３４に保持されている。プログラム３６は、回路における処理の動作を記述した動作記述を示し、信号処理回路または信号処理アルゴリズムなどをＣ言語などの高級言語で記述したものである。コンパイル部３０は、記憶部３４に格納されたプログラム３６をコンパイルし、データフローグラフ（ＤＦＧ）３８に変換して記憶部３４に格納する。ＤＦＧ３８は、回路における演算間の実行順序の依存関係を表現し、入力変数および定数の演算の流れをグラフ構造で示したものである。一般に、ＤＦＧ３８は、上から下に向かって演算が進むように形成される。
【００１６】
コンパイル処理時、コンパイル部３０は、ＤＦＧの中から、出現頻度の高い処理や、特定の処理を抽出する。出現頻度の高い処理は、ＤＦＧ中に登場する回数の多少で決定されてもよい。また、特定の処理は、出現頻度を判断するのではなく、出現頻度が高くなることが想定される処理として予め決定されておいてもよい。コンパイル部３０は、抽出した処理を、所定期間の間、リコンフィギュラブル回路１２上にマッピングし続けるように、ＤＦＧを再生成する。このとき、コンパイル部３０は、リコンフィギュラブル回路１２の複数の論理回路を２つに分割し、分割した一方の領域を、抽出した処理を実行させるための専用領域としてもよい。コンパイル部３０は、この専用領域に、抽出した処理が配置されるようにＤＦＧを再生成する。
【００１７】
設定データ生成部３２は、コンパイル部３０により決定されたＤＦＧ３８をもとに、設定データ４０を生成する。設定データ４０は、ＤＦＧ３８をリコンフィギュラブル回路１２にマッピングするためのデータであり、リコンフィギュラブル回路１２における論理回路の機能や論理回路間の接続関係、さらには論理回路に入力させる定数データなどを定める。
【００１８】
設定部１４がコマンドメモリとして構成されている場合、制御部１８は設定部１４に対してプログラムカウンタ値を与え、設定部１４は、そのカウンタ値に応じて格納した設定データを、コマンドデータとしてリコンフィギュラブル回路１２に設定する。設定部１４は、キャッシュメモリや他の種類のメモリを有して構成されてもよい。なお、制御部１８が記憶部３４から設定データ４０を受けて、その設定データ４０を設定部１４に供給してもよいが、制御部１８を介さずに、予め設定部１４に設定データを格納しておいてもよい。
【００１９】
設定部１４は、設定データ４０をリコンフィギュラブル回路１２に設定し、リコンフィギュラブル回路１２の回路を逐次再構成させる。リコンフィギュラブル回路１２は、基本セルとして高性能の演算能力のあるＡＬＵを用いており、またリコンフィギュラブル回路１２および設定部１４を１チップ上に構成することから、コンフィグレーションを高速に、例えば１クロックで実現することができる。制御部１８はクロック機能を有し、クロック信号は、出力回路２２およびメモリ部２７に供給される。なお、出力回路２２およびメモリ部２７に供給する制御信号は、設定データとして設定部１４に予め格納されており、設定部１４から出力回路２２およびメモリ部２７にそれぞれ供給されてもよい。このとき、設定部１４は、複数の論理回路のうちの少なくとも一部の機能を、所定期間の間、同一となるように設定データ４０をリコンフィギュラブル回路１２に供給する。上記したように、論理回路の機能を固定する設定データ４０は、コンパイル部３０により生成されたＤＦＧに基づいて生成されている。
【００２０】
図２は、リコンフィギュラブル回路１２の構成の一例を示す。リコンフィギュラブル回路１２は、それぞれが複数の演算機能を選択的に実行可能な論理回路の多段配列と、前段の論理回路の出力と後段の論理回路の入力の接続関係を任意に設定可能な接続部５２とを備える。リコンフィギュラブル回路１２では、論理回路の多段配列構造により、上段から下段に向かって演算が進められる。なお、本明細書において「多段」とは、複数の段を意味する。なお、リコンフィギュラブル回路１２の回路構成は、必ずしも多段配列を有する必要はないが、回路規模を削減するために全ての論理回路間の接続を可能とするのではなく、一部の論理回路同士の接続を実現させるのが好ましい。
【００２１】
リコンフィギュラブル回路１２は、論理回路としてＡＬＵ(Arithmetic Logic Unit)を有している。ＡＬＵは、複数種類の多ビット演算を選択的に実行可能な算術論理回路であって、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行できる。各ＡＬＵは、複数の演算機能を設定するためのセレクタを有して構成されている。図示の例では、ＡＬＵが、２つの入力端子と１つの出力端子を有して構成される。
【００２２】
リコンフィギュラブル回路１２は、縦方向にＸ個、横方向にＹ個のＡＬＵが配置されたＸ段Ｙ列のＡＬＵアレイとして構成される。ここでは、縦方向に３個、横方向に６個のＡＬＵが配置された３段６列のＡＬＵアレイを示している。リコンフィギュラブル回路１２は、接続部５２およびＡＬＵ列５３を備える。ＡＬＵ列５３は複数段に設けられ、接続部５２は前後段のＡＬＵ列５３の間に設けられて、前段のＡＬＵの出力と後段のＡＬＵの入力の接続関係を設定する。
【００２３】
図２に示す例では、第１段のＡＬＵ列５３ａと第２段のＡＬＵ列５３ｂの間に、第２段を構成する接続部５２ｂが設けられ、第２段のＡＬＵ列５３ｂと第３段のＡＬＵ列５３ｃの間に、第３段を構成する接続部５２ｃが設けられる。なお、第１段を構成する接続部５２ａは、第１段のＡＬＵ列５３ａの上側に設けられる。
【００２４】
第１段のＡＬＵ１１、ＡＬＵ１２、・・・、ＡＬＵ１６には、入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第２段の接続部５２ｂに設定された接続にしたがって、第２段のＡＬＵ２１、ＡＬＵ２２、・・・、ＡＬＵ２６に入力される。第２段の接続部５２ｂにおいては、第１段のＡＬＵ列５３ａの出力と第２段のＡＬＵ列５３ｂの入力の間で任意の接続関係、あるいは予め定められた接続関係の組合せの中から選択された接続関係を実現できるように接続用結線が構成されており、設定により所期の結線が有効となる。第２段のＡＬＵ２１、ＡＬＵ２２、・・・、ＡＬＵ２６には、ＡＬＵ列５３ａの出力が入力され、設定された所定の演算がなされる。演算結果の出力は、第３段の接続部５２ｃの接続用結線において設定された接続にしたがって、第３段のＡＬＵ３１、ＡＬＵ３２、・・・、ＡＬＵ３６に入力される。
【００２５】
最終段となる第３段のＡＬＵ列５３ｃからの出力データは、出力回路２２、メモリ部２７または経路部２４に出力される。メモリ部２７は、経路部２９を介して、出力データを接続部５２ａに入力する。経路部２４からは、接続部５２ａに出力データが直接供給される。接続部５２ａは、接続用結線を設定し、第１段のＡＬＵ１１、ＡＬＵ１２、・・・、ＡＬＵ１６にデータを供給する。
【００２６】
図３は、リコンフィギュラブル回路１２におけるＡＬＵ間の接続関係を示す図である。なお、図３では、ＡＬＵ列の間に配置される接続部５２の図示を省略している。第１段の接続部５２においては、第１段のＡＬＵ列の出力と第２段のＡＬＵ列の入力の間で、一定の接続制限が課された接続関係を実現できるように結線が構成されており、設定により、その範囲内での所期の結線が有効となる。なお、第２段の接続部５２においても同様である。最終段である第３段のＡＬＵ列は演算の最終結果を出力する。接続部５２は、ＡＬＵ段の間で、物理的に近接して配置された論理回路同士を接続可能とするように構成される。これにより、配線長を短くすることができ、回路規模を削減することができる。その結果、低消費電力化及び処理高速化が可能となる。
【００２７】
図３に示すリコンフィギュラブル回路１２では、上段における１つのＡＬＵからの配線は、下段の３つのＡＬＵに制限される。図示のように、下段における１つのＡＬＵの入力は、上段における直上のＡＬＵと、直上のＡＬＵの左右のＡＬＵに制限され、また上段における１つのＡＬＵの出力は、下段における直下のＡＬＵと、直下のＡＬＵの左右のＡＬＵに制限される。例えば、ＡＬＵ２２に関してみると、その入力は、ＡＬＵ１１、ＡＬＵ１２、ＡＬＵ１３の３方向に制限され、その出力は、ＡＬＵ３１、ＡＬＵ３２、ＡＬＵ３３の３方向に制限される。なお、左または右に対応するＡＬＵが存在しなければ、その入力および出力は、それぞれ２方向に制限される。このような配線とすることにより、上下段の全てのＡＬＵ間の接続を可能とする場合と比較すると、配線数を大幅に削減することが可能となる。
【００２８】
以下に、本実施例において、図２および図３に示したリコンフィギュラブル回路１２にマッピングするためのＤＦＧを生成する方法を説明する。プログラム記述として代表的なＣ記述には、加減算演算、ビット積やビット和等のビット処理演算、シフト演算、大小比較演算、論理積や論理和の論理演算、単項演算などが存在する。本実施例のＡＬＵは、これらの演算機能を有し、設定データ４０に応じて機能の切替を行うように構成されている。
【００２９】
これらの演算処理とは別に、Ｃ記述には、配列、ポインタによる値のやり取り、ｆｏｒ文、ｗｈｉｌｅ文、ｄｏ文によるループ制御、ｉｆ文、ｃａｓｅ文による条件分離などの処理も存在する。処理装置１０では、これらの処理をＤＦＧで表現し、リコンフィギュラブル回路１２で実現する。コンパイル部３０は、例えばループ制御文を展開して、上記した演算処理の組合せとして表現し、展開した演算をＤＦＧ３８に変換する。以下、図４から図８を参照して、Ｃ記述における各種演算処理を説明する。
【００３０】
図４（ａ）は、ｆｏｒ文によるループ制御を記述したプログラム例を示し、図４（ｂ）は、図４（ａ）のプログラムの処理を示す。このプログラムは、インクリメント演算を実行し、ＡＬＵの有する加算演算処理を用いて展開されている。図４（ｃ）は、インクリメント演算をＤＦＧ化した表現を示す。ここでは、ＤＦＧの上段の出力結果が、下段の加算演算に利用されている。
【００３１】
図５（ａ）は、条件分離文のプログラム例を示し、図５（ｂ）は、図５（ａ）のプログラム処理をＤＦＧ化した表現を示す。このＤＦＧでは、２段目中央のＡＬＵによりａ＝０であるか否かが判定され、ａ＝０であればＴ（論理値１）を、ａ＝０でなければＦ（論理値０）を下段のマージノード機能を割り当てられたＡＬＵに出力する。マージノードは、制御信号として入力される論理値に応じて出力を定めるノードであり、ここでは判定結果が論理値１であればｃを選択してｂとして出力し、論理値０であればｄを選択してｂとして出力する。
【００３２】
処理装置１０は、メモリ部２７へのアクセスを、リコンフィギュラブル回路１２におけるＡＬＵにて演算処理した結果をもとに実行する機能をもつ。具体的に、メモリアクセスは、リコンフィギュラブル回路１２で生成されたアドレスにより実行される。データをメモリ部２７に書き込むとき、リコンフィギュラブル回路１２からの２つの出力が、それぞれ書き込み先のアドレスと書き込むデータとなり、データを読み出すとき、リコンフィギュラブル回路１２からの１つの出力が、読み出すアドレスとなる。このメモリアクセス機能を実現するため、コンパイル部３０は、メモリ部２７へのアクセスが可能なノードを含むＤＦＧを生成する。メモリアクセスには、書込動作のアドレス、データ、イネーブル、読出動作のアドレス、イネーブルが必要となるが、処理装置１０では、イネーブル信号は設定部１４より供給されるものとする。したがって、ＡＬＵ上でメモリ部２７のアクセスに必要なノードは、書込アドレスを指定するw_addr、書込データを特定するw_data、読出アドレスを指定するr_addrの３種類となる。
【００３３】
処理装置１０において、配列は、値を格納して保管する役割をする回路とみなすことができる。従って、配列で記述されたプログラムは、図１のメモリ部２７を利用して値を保管する動作となる。同じ配列名の配列に納められているデータは、図１に示すメモリ部２７において、その配列の先頭の配列を納める番地を基準の先頭アドレス値として、相対値でアドレス管理されるものとする。したがって、配列を格納するアドレスは、先頭アドレス値に相対値を加算したアドレスとなる。
【００３４】
図６（ａ）は、変数の値を配列に入力するプログラム例を示し、図６（ｂ）は、図６（ａ）のプログラム処理をＤＦＧ化した表現を示す。図６（ａ）に示すプログラムは、メモリ部２７にデータを書き込む動作であり、ＡＬＵに割り当てる機能としては、w_addrノード、w_dataノードの２つのノードが必要となる。w_addrノードおよびw_dataノードは、同時にメモリ部２７にデータを出力する必要があるため、図６（ｂ）に示すように、w_addrノードおよびw_dataノードの段は同じにする。なお、w_addrノードの一方の入力には、同じ配列名の配列の先頭アドレス値が入力される。w_addrノードおよびw_dataノードの出力は、それぞれメモリ部２７のアドレスポートおよびデータポートに供給される。
【００３５】
図７（ａ）は、配列の値を変数に入力するプログラム例を示し、図７（ｂ）は、図７（ａ）のプログラム処理をＤＦＧ化した表現を示す。図７（ａ）に示すプログラムは、メモリ部２７からデータを読み出す動作であり、ＡＬＵに割り当てる機能としては、r_addrノードが必要となる。r_addrノードの一方の入力には、同じ配列名の配列の先頭アドレス値が入力される。r_addrノードの出力は、メモリ部２７のアドレスポートに出力される。
【００３６】
図８（ａ）は、配列の値を配列に入力するプログラム例を示し、図８（ｂ）は、図８（ａ）のプログラム処理をＤＦＧ化した表現を示す。図８（ａ）に示すプログラムは、メモリ部２７からデータを読み出して、メモリ部２７にデータを書き込む動作であり、ＡＬＵに割り当てる機能としては、w_addrノード、w_dataノード、r_addrノードが必要となる。この場合、２つの配列ｃ、ｄは別の配列であるため、w_addrノードの先頭アドレスとr_addrノードの先頭アドレスは別の値となる。このとき、w_dataノードはw_addrノードとタイミングを調整するための演算となり、データをスルーさせるnopノードとなる。
【００３７】
本実施例では、コンパイル部３０が、演算処理の出現回数を調べて、どれくらいの頻度で出現しているかを判断する。出現回数を調査する演算処理は、図４から図８に示したような処理であってもよく、また、ＡＬＵの基本演算機能として組み込まれている演算処理であってもよい。Ｃ記述プログラムからＤＦＧを作成する場合、コンパイル部３０は、各種演算や各種の構文を解析してＤＦＧを作成するのと同時に、同一演算の出現回数を調査する。上記w_addrノードとr_addrノードは、先頭アドレス値と相対アドレス値とを加算する処理であり、基本機能としてＡＬＵが有する加算演算と同じであるが、Ｃ記述では加算演算と配列処理は別の処理であるため、それぞれは別の演算処理としてカウントする。そして、コンパイル部３０は、出現回数の多い演算から順番に番号を割り当てておく。なお、出現回数を調べる範囲は、例えばＤＦＧの所定段数分、例えば数百段分を単位としてもよい。
【００３８】
ＤＦＧは上から下に向けて処理されるものであり、リコンフィギュラブル回路１２においては、左側ないしは右側から詰めてマッピングされる。特に、図３に示すように、上下段のＡＬＵ間において接続制限がかけられる場合には、上段のＡＬＵ出力を下段のＡＬＵ入力とする場合に、使用するＡＬＵが近傍に位置する必要がある。演算処理を効率的に実行するために、ＤＦＧは、左側または右側に固めてマッピングされる必要がある。
【００３９】
ＤＦＧをリコンフィギュラブル回路１２に左詰めにマッピングする場合、ＤＦＧを３段×６列のＡＬＵアレイにマッピング可能なように分割して作成（以下では、サブＤＦＧと呼ぶ）することとなり、３段×６列のＡＬＵアレイの全てのＡＬＵを使用することは稀となる。そのため、ＡＬＵを有効に活用することができず、特に右列のＡＬＵについては未使用のものが多々出現する。
【００４０】
したがって、本実施例の処理装置１０では、この右列未使用のＡＬＵに、出現回数の多い演算をマッピングすることとする。例えば、右２列を出現回数の多い演算をマッピングする専用領域とし、左４列を従来と同じマッピング領域とする。専用領域におけるＡＬＵには、所定の期間中、常に同一の演算処理がマッピングされる。専用領域の演算を固定とすることで、ＡＬＵの機能切替にともなう電力消費を低減することが可能となる。また専用領域の設定方法として、ＤＦＧは逆三角形の形をすることが多いので、右列の下側に存在するＡＬＵのみを専用領域として設定してもよい。
【００４１】
また、所定の期間の前半は演算Ａを専用領域にマッピングし、後半は演算Ｂを専用領域にマッピングすることも可能である。この場合、所定期間の前半部分に演算Ａの発生頻度が高く、後半部分に演算Ｂの発生頻度が高いことが好ましく、このように専用領域にマッピングする演算を決定することで、専用領域においてマッピングする演算を切り替える頻度を少なくできる。
【００４２】
なお、コンパイル部３０は、出現回数に基づいて専用領域にマッピングする演算を定めるのではなく、出現回数の多いことが想定される演算を、専用領域にマッピングしてもよい。この場合、コンパイル部３０は、演算処理の出現回数をカウントする必要はなく、特定の演算について、専用領域にマッピングするＤＦＧを作成すればよい。
【００４３】
例えば、出現回数が最も多い演算は加算、減算、ｎｏｐノードなどが考えられるが、これらとは別に、出現回数が多いことが予測される演算に、条件文演算と配列アクセス演算などもある。条件文演算の例は図５に、配列アクセス演算の例は図６、図７、図８に示したとおりである。
【００４４】
図９は、リコンフィギュラブル回路１２の右２列を専用領域とした場合にマッピングする回路例を示す。ここでは、ＡＬＵ１５にw_addrノード、ＡＬＵ１６にw_dataノード、ＡＬＵ２５に条件文演算の等号（＝＝）ノード、ＡＬＵ２６にr_addrノード、ＡＬＵ３５にマージノードをマッピングしている。なお、図９に示す接続部５２ａ、５２ｂ、５２ｃには、経路部２９を介してデータを供給（途中入力）することができ、また接続部５２ａ、５２ｂ、５２ｃからメモリ部２７にデータを出力（途中出力）できるものとする。
【００４５】
条件文演算の結果はすぐ次のＡＬＵで使用する場合があるので、マージノードを最下位段のＡＬＵにマッピングする。また、条件比較結果、ここでは等号比較結果が真か偽かのデータはマージノードにのみ接続されるため、等号ノードはマージノードの真上に配置される。次に、配列アクセス演算は次のＡＬＵで使用するものでなく、メモリ部２７にアクセスするものであるため、途中出力としてＡＬＵから出力すればよい。左側の３段４列のＡＬＵ領域の接続部は、図３に示したように接続制限されていてもよいが、接続制限を設けない場合、上段の４箇所からのＡＬＵ出力と、途中入力などから１つを選択するマルチプレクサとして構成される。右２列の専用領域に対しても同様に、上段左側の４箇所からのＡＬＵ出力と、途中入力などから１つを選択するマルチプレクサとして構成される。なお、途中入力とは別に、各接続部５２に定数を外部から入力する定数入力を設けてもよく、この場合は、接続部５２に設けられたマルチプレクサが、この定数入力を選択肢の一つとして追加する。また、途中入力、定数入力の本数が増えた場合には、マルチプレクサは、その分も選択肢として追加すればよい。右２列の専用領域にマッピングされた演算処理は、接続部により選択されたデータを用いて実行され、下段ないしはメモリ部２７に出力される。
【００４６】
以上述べた回路は、実行するアプリケーションが変わると専用領域に割り当てる演算処理も変更され、その時々に最適な演算処理がマッピングされる。また、アプリケーションに応じて専用領域の大きさを変更することもでき、アプリケーションに応じた最適な専用領域を確保できる。本実施例の処理装置１０によると、専用領域のＡＬＵに対しては、１クロックごとにＡＬＵの機能、ＡＬＵ間配線を変更しないため、機能および配線変更にともなう電力消費を低減することが可能となる。また、通常の演算処理にとって利用率の低いＡＬＵの領域を使用することにより、ＡＬＵの利用率を上げることができる。また、専用領域を設けることで、処理の並列度が増し、処理装置１０の処理能力を向上できる。
【００４７】
以上、本発明を実施例をもとに説明した。実施例は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【００４８】
【図１】実施例に係る処理装置の構成図である。
【図２】リコンフィギュラブル回路の構成の一例を示す図である。
【図３】リコンフィギュラブル回路におけるＡＬＵ間の接続関係を示す図である。
【図４】（ａ）はｆｏｒ文によるループ制御を記述したプログラム例を示す図であり、（ｂ）は（ａ）のプログラムの処理を示す図であり、（ｃ）はインクリメント演算をＤＦＧ化した表現を示す図である。
【図５】（ａ）は条件分離文のプログラム例を示す図であり、（ｂ）は（ａ）のプログラム処理をＤＦＧ化した表現を示す図である。
【図６】（ａ）は変数の値を配列に入力するプログラム例を示す図であり、（ｂ）は（ａ）のプログラム処理をＤＦＧ化した表現を示す図である。
【図７】（ａ）は配列の値を変数に入力するプログラム例を示す図であり、（ｂ）は（ａ）のプログラム処理をＤＦＧ化した表現を示す図である。
【図８】（ａ）は配列の値を配列に入力するプログラム例を示す図であり、（ｂ）は（ａ）のプログラム処理をＤＦＧ化した表現を示す図である。
【図９】リコンフィギュラブル回路の右２列を専用領域とした場合にマッピングする回路例を示す図である。
【符号の説明】
【００４９】
１０・・・処理装置、１２・・・リコンフィギュラブル回路、１４・・・設定部、１８・・・制御部、２２・・・出力回路、２７・・・メモリ部、３０・・・コンパイル部、３２・・・設定データ生成部、３４・・・記憶部。
【図１】
2006065786.tif 000003
【図２】
2006065786.tif 000004
【図３】
2006065786.tif 000005
【図４】
2006065786.tif 000006
【図５】
2006065786.tif 000007
【図６】
2006065786.tif 000008
【図７】
2006065786.tif 000009
【図８】
2006065786.tif 000010
【図９】
2006065786.tif 000011