(57)【要約】【課題】  複数のリコンフィギュラブル回路を備えた処理装置を提供する。【解決手段】  本発明の処理装置１００は、機能の変更が可能なリコンフィギュラブル回路１２を有する複数のリコンフィギュラブルユニット１０を備える。リコンフィギュラブルユニット１０は、他のリコンフィギュラブルユニットから出力されたデータを記憶するＲＡＭ６４と、ＲＡＭの動作制御を実行する制御部とを有し、ＲＡＭは、制御部による指示に基づいて、他のリコンフィギュラブルユニットから出力されたデータの中から、自身のリコンフィギュラブル回路において必要な有効データの書込を実行する。ＲＡＭは、他のリコンフィギュラブルユニットからの出力を時分割に書き込む。【選択図】図４
2006099719.tif 000002
【特許請求の範囲】
【請求項１】
機能の変更が可能なリコンフィギュラブル回路を有する複数のリコンフィギュラブルユニットを備えた処理装置であって、
前記複数のリコンフィギュラブルユニットは、
他のリコンフィギュラブルユニットから出力されたデータを記憶する第１記憶部と、
前記第１記憶部の動作制御を実行する制御部とを有しており、
前記第１記憶部は、前記制御部による指示に基づいて、前記他のリコンフィギュラブルユニットから出力されたデータの中から、自身のリコンフィギュラブル回路において必要な有効データの書込を実行することを特徴とする処理装置。
【請求項２】
前記第１記憶部は、前記他のリコンフィギュラブルユニットからの出力を時分割に書き込むことを特徴とする請求項１に記載の処理装置。
【請求項３】
前記複数のリコンフィギュラブルユニットは、
前記他のリコンフィギュラブルユニットから出力される複数のデータを、それぞれ異なるタイミングで且つ所定の周期で記憶する第２記憶部と、
前記第２記憶部に記憶したデータを選択して前記第１記憶部に供給する選択部とを有することを特徴とする請求項１又は請求項２のいずれかに記載の処理装置。
【請求項４】
前記第２記憶部は、前記自身のリコンフィギュラブル回路において必要な有効データであるか否かにかかわらず、前記他のリコンフィギュラブルユニットから出力されるデータを記憶し、
前記選択部は、前記第２記憶部に記憶された複数のデータを、それぞれ異なるタイミングで且つ所定の周期で前記第１記憶部に供給し、
前記第１記憶部は、前記制御部による指示に基づいて、有効データのみを記憶することを特徴とする請求項３に記載の処理装置。
【請求項５】
前記第１記憶部は、前記第２記憶部に記憶された順番にしたがって、有効データを記憶することを特徴とする請求項４に記載の処理装置。
【請求項６】
機能の変更が可能なリコンフィギュラブル回路を有する複数のリコンフィギュラブルユニットを備えた処理装置であって、
前記複数のリコンフィギュラブルユニットは、自身のリコンフィギュラブル回路から出力されたデータを記憶する第１記憶部を有しており、
前記処理装置は、
それぞれのリコンフィギュラブルユニットにおける前記第１記憶部に記憶されたデータを選択する選択部と、
前記選択部で選択されたデータを、前記複数のリコンフィギュラブルユニットの入力に供給する接続部とを備えることを特徴とする処理装置。
【請求項７】
前記接続部は、前記複数のリコンフィギュラブルユニットに対して共通のバスとして構成されていることを特徴とする請求項６に記載の処理装置。
【請求項８】
前記複数のリコンフィギュラブルユニットは、前記接続部から供給されるデータを、前記リコンフィギュラブルユニットの入力から受け取るか否かを定める制御部を有することを特徴とする請求項６又は請求項７のいずれかに記載の処理装置。
【請求項９】
前記第１記憶部は、少なくとも２つの記憶部を有しており、該少なくとも２つの記憶部のうちの一方の記憶部と他方の記憶部とを、所定のタイミングで書込動作と読出動作とに切り替えることを特徴とする請求項１乃至請求項８のいずれかに記載の処理装置。
【請求項１０】
機能の変更が可能なリコンフィギュラブル回路を有する複数のリコンフィギュラブルユニットを備えた処理装置であって、
前記リコンフィギュラブルユニットは、前記複数のリコンフィギュラブルユニットから出力されたデータをそれぞれ記憶する複数の第１記憶部を有しており、
前記リコンフィギュラブル回路は、前記複数の第１記憶部に記憶されている前記データをそれぞれ読み込むことを特徴とする処理装置。
【請求項１１】
前記リコンフィギュラブルユニットは、該リコンフィギュラブルユニットの前記リコンフィギュラブル回路から出力された前記データを記憶する第２記憶部を有しており、
前記複数の第１記憶部は、前記複数のリコンフィギュラブルユニットの前記第２記憶部に記憶された前記データをそれぞれ記憶することを特徴とする請求項１０に記載の処理装置。
【請求項１２】
前記複数の第１記憶部は、該複数の第１記憶部が備えられた前記リコンフィギュラブルユニット以外の他の複数のリコンフィギュラブルユニットから出力されたデータをそれぞれ記憶することを特徴とする請求項１０に記載の処理装置。
【請求項１３】
前記第１記憶部及び前記第２記憶部のそれぞれは、少なくとも２つの記憶部を有しており、該少なくとも２つの記憶部のうちの一方の記憶部と他方の記憶部とを、所定のタイミングで書込動作と読出動作とに切り替えることを特徴とする請求項１０に記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、機能の変更が可能なリコンフィギュラブル回路を複数備えた処理装置に関する。
【背景技術】
【０００２】
近年、ＡＬＵ(Arithmetic Logic Unit)と呼ばれる基本演算機能を複数持つ多機能素子
を用いたリコンフィギュラブルプロセッサの開発が進められている（例えば、特許文献１参照）。リコンフィギュラブルプロセッサでは、コマンドデータをＡＬＵ回路に順次設定することで、全体として所期の演算処理回路を実現することができる。コマンドデータは、Ｃ言語などの高級プログラム言語で記述されたソースプログラムをコンパイル処理することでＤＦＧ（データフローグラフ）と呼ばれるデータフローを作成し、そのＤＦＧをＡＬＵアレイにマッピングするデータとして作成される。コマンドデータは、コマンドメモリに記憶される。
【特許文献１】特開２００４−２２０３７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
リアルタイムで演算処理を実行する場合、動作クロックの周波数が無限に速ければ、１つのＡＬＵアレイにより複雑な演算処理をリアルタイムで実行することができるが、現実には、無限に速いクロックは存在しない。そのため、リアルタイムでの処理が必要な場合、ＡＬＵアレイの処理能力の限界のために、１つのＡＬＵアレイではリアルタイム処理の要求を満たせないこともある。
【０００４】
本発明はこうした状況に鑑みてなされたもので、その目的は、複数のリコンフィギュラブル回路を利用することで、高速の演算処理を実行することのできる技術を提供することにある。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明は、機能の変更が可能なリコンフィギュラブル回路を有する複数のリコンフィギュラブルユニットを備えた処理装置に関する。この処理装置において、各リコンフィギュラブルユニットは、他のリコンフィギュラブルユニットから出力されたデータを記憶する第１記憶部と、第１記憶部の動作制御を実行する制御部とを備える。第１記憶部は、制御部による指示に基づいて、他のリコンフィギュラブルユニットから出力されたデータの中から、自身のリコンフィギュラブル回路において必要な有効データの書込を実行する。
【０００６】
かかる本発明の特徴によれば、複数のリコンフィギュラブルユニットを利用することで、演算処理の高速性を実現できる。また、第１記憶部が、制御部による指示に基づいて有効データの書込を実行するため、第１記憶部に対して複数の有効データの書込動作が同時に発生することはなく、データの衝突を回避できる。
【０００７】
本発明の別の態様は、機能の変更が可能なリコンフィギュラブル回路を有する複数のリコンフィギュラブルユニットを備えた処理装置に関する。この処理装置において、各リコンフィギュラブルユニットは、自身のリコンフィギュラブル回路から出力されたデータを記憶する第１記憶部を備えている。処理装置は、それぞれのリコンフィギュラブルユニットにおける第１記憶部に記憶されたデータを選択する選択部と、選択部で選択されたデータを、複数のリコンフィギュラブルユニットの入力に供給する接続部とを備える。
【０００８】
かかる本発明の別の態様によれば、複数のリコンフィギュラブルユニットを利用することにより、演算処理の高速性を実現できる。また、それぞれのリコンフィギュラブルユニットにおいて出力されたデータを、接続部からリコンフィギュラブルユニットの入力に供給することにより、そのデータを必要とするリコンフィギュラブルユニットは、そのデータを受け取ることができ、リコンフィギュラブルユニット間のデータの受け渡しが容易になる。
【０００９】
上記構成においては、リコンフィギュラブル回路は、複数種類の多ビット演算を選択的に実行可能な算術論理回路を有してもよい。
【００１０】
本発明の別の態様は、機能の変更が可能なリコンフィギュラブル回路を有する複数のリコンフィギュラブルユニットを備えた処理装置に関する。この処理装置において、リコンフィギュラブルユニットは、複数のリコンフィギュラブルユニットから出力されたデータをそれぞれ記憶する複数の第１記憶部を備える。リコンフィギュラブル回路は、複数の第１記憶部に記憶されているデータをそれぞれ読み込む。
【００１１】
上記発明においては、リコンフィギュラブルユニットは、リコンフィギュラブルユニットのリコンフィギュラブル回路から出力されたデータを記憶する第２記憶部を有しており、複数の第１記憶部は、複数のリコンフィギュラブルユニットの第２記憶部に記憶されたデータをそれぞれ記憶してもよい。
【００１２】
上記発明においては、複数の第１記憶部は、複数の第１記憶部が備えられたリコンフィギュラブルユニット以外の他の複数のリコンフィギュラブルユニットから出力されたデータをそれぞれ記憶してもよい。
【００１３】
上記発明においては、第１記憶部及び第２記憶部のそれぞれは、少なくとも２つの記憶部を有しており、少なくとも２つの記憶部のうちの一方の記憶部と他方の記憶部とを、所定のタイミングで書込動作と読出動作とに切り替えてもよい。
【００１４】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラムとして表現したものもまた、本発明の態様として有効である。
【発明の効果】
【００１５】
本発明によれば、複数のリコンフィギュラブル回路を利用して、高速の演算処理を実行することのできる技術を提供することができる。
【発明を実施するための最良の形態】
【００１６】
本実施例は、複数のリコンフィギュラブル回路を備えた処理装置を提供する。以下では、処理装置についての説明を行う前に、処理装置を構成するリコンフィギュラブル回路を備えたリコンフィギュラブルユニットについて説明する。
【００１７】
図１は、リコンフィギュラブル回路を備えたリコンフィギュラブルユニットの構成図である。リコンフィギュラブルユニット１０は、リコンフィギュラブル回路１２、制御部１８、メモリ部２７、および経路部２４、２９を備える。制御部１８は、コマンドメモリ６１およびプログラムカウンタ６３を有し、リコンフィギュラブル回路１２の動作を制御する。コマンドメモリ６１は、プログラムカウンタ６３のカウント値に基づいて、記憶したデータを出力するように構成される。リコンフィギュラブル回路１２は、設定を変更することにより、機能の変更を可能とする。リコンフィギュラブルユニット１０は集積回路として１チップで構成されてもよい。
【００１８】
コマンドメモリ６１は、リコンフィギュラブル回路１２に所期の回路を構成するための設定データを供給する設定部として機能する。経路部２４は、フィードバックパスとして機能し、リコンフィギュラブル回路１２の出力を、リコンフィギュラブル回路１２の入力に接続する。メモリ部２７に記憶されたデータは、経路部２９を介してリコンフィギュラブル回路１２の入力に戻される。リコンフィギュラブル回路１２は組合せ回路または順序回路等の論理回路として構成される。
【００１９】
メモリ部２７はＲＡＭとして構成され、リコンフィギュラブル回路１２から出力されるデータ信号および／または外部から入力されるデータ信号を記憶するための記憶領域を有する。リコンフィギュラブル回路１２は、メモリ部２７にアクセスするための制御データを生成する。メモリ制御データには、書込アドレス、読出アドレスなどが含まれる。なお、メモリ部２７に対する書込イネーブル信号、読出イネーブル信号は、コマンドメモリ６１から所期のタイミングでメモリ部２７に供給される。
【００２０】
リコンフィギュラブル回路１２は、機能の変更が可能な複数の論理回路を有して構成される。具体的にリコンフィギュラブル回路１２は、複数の演算機能を選択的に実行可能な論理回路を複数段に配列させた構成を備え、さらに前段の論理回路列の出力と後段の論理回路列の入力との接続関係を設定可能な接続部を備える。各段に含まれる複数の論理回路は、論理回路の集合体を構成する。この接続部は、前段の論理回路列の出力すなわち内部状態を保持する状態保持回路の機能も備える。複数の論理回路は、マトリックス状に配置される。各論理回路の機能と、論理回路間の接続関係は、コマンドメモリ６１により供給される設定データに基づいて設定される。設定データは、以下の手順で生成される。
【００２１】
リコンフィギュラブル回路１２により実現されるべきプログラムが、記憶部（図示せず）に保持されている。プログラムは、回路における処理の動作を記述した動作記述を示し、信号処理回路または信号処理アルゴリズムなどをＣ言語などの高級言語で記述したものである。コンパイラが、プログラムをコンパイルし、データフローグラフ（ＤＦＧ）に変換して記憶部に記憶する。データフローグラフは、回路における演算間の実行順序の依存関係を表現し、入力変数および定数の演算の流れをグラフ構造で示したものである。一般に、データフローグラフは、上から下に向かって演算が進むように形成される。
【００２２】
データフローグラフは、設定データに変換される。設定データは、データフローグラフをリコンフィギュラブル回路１２にマッピングするためのデータであり、リコンフィギュラブル回路１２における論理回路の機能や論理回路間の接続関係、さらには論理回路に入力させる定数データなどを定める。設定データは、その実行順序にしたがってコマンドメモリ６１に記憶される。
【００２３】
プログラムカウンタ６３が、コマンドメモリ６１にプログラムカウンタ値を与え、コマンドメモリ６１はそのカウンタ値に応じて、記憶した設定データを、コマンドデータとしてリコンフィギュラブル回路１２に設定する。なお、コマンドメモリ６１は、キャッシュメモリや他の種類のメモリを有して、リコンフィギュラブル回路１２に設定データを供給する設定データ供給部として構成されてもよい。
【００２４】
コマンドメモリ６１は、設定データをリコンフィギュラブル回路１２に設定し、リコンフィギュラブル回路１２の回路を逐次再構成させる。リコンフィギュラブル回路１２は、基本セルとして高性能の演算能力のあるＡＬＵを用いており、またリコンフィギュラブル回路１２およびコマンドメモリ６１を１チップ上に構成することから、コンフィグレーションを高速に、例えば１クロックで実現することができる。
【００２５】
図２は、リコンフィギュラブル回路１２の構成の一例を示す。リコンフィギュラブル回路１２は、それぞれが複数の演算機能を選択的に実行可能な論理回路の多段配列と、前段の論理回路の出力と後段の論理回路の入力の接続関係を任意に設定可能な接続部５２とを備える。リコンフィギュラブル回路１２では、論理回路の多段配列構造により、上段から下段に向かって演算が進められる。なお、本明細書において「多段」とは、複数の段を意味する。なお、リコンフィギュラブル回路１２の回路構成は、必ずしも多段配列を有する必要はないが、回路規模を削減するために全ての論理回路間の接続を可能とするのではなく、一部の論理回路同士の接続を実現させるのが好ましい。
【００２６】
リコンフィギュラブル回路１２は、論理回路としてＡＬＵ(Arithmetic Logic Unit)を
有している。ＡＬＵは、複数種類の多ビット演算を選択的に実行可能な算術論理回路であって、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行できる。各ＡＬＵは、複数の演算機能を設定するためのセレクタを有して構成されている。図示の例では、ＡＬＵが、２つの入力端子と１つの出力端子を有して構成される。
【００２７】
リコンフィギュラブル回路１２は、縦方向にＸ個、横方向にＹ個のＡＬＵが配置されたＸ段Ｙ列のＡＬＵアレイとして構成される。ここでは、縦方向に３個、横方向に６個のＡＬＵが配置された３段６列のＡＬＵアレイを示している。リコンフィギュラブル回路１２は、接続部５２およびＡＬＵ列５３を備える。ＡＬＵ列５３は複数段に設けられ、接続部５２は前後段のＡＬＵ列５３の間に設けられて、前段のＡＬＵの出力と後段のＡＬＵの入力の接続関係を設定する。
【００２８】
図２に示す例では、第１段のＡＬＵ列５３ａと第２段のＡＬＵ列５３ｂの間に、第２段を構成する接続部５２ｂが設けられ、第２段のＡＬＵ列５３ｂと第３段のＡＬＵ列５３ｃの間に、第３段を構成する接続部５２ｃが設けられる。なお、第１段を構成する接続部５２ａは、第１段のＡＬＵ列５３ａの上側に設けられる。
【００２９】
第１段のＡＬＵ１１、ＡＬＵ１２、・・・、ＡＬＵ１６には、入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第２段の接続部５２ｂに設定された接続にしたがって、第２段のＡＬＵ２１、ＡＬＵ２２、・・・、ＡＬＵ２６に入力される。第２段の接続部５２ｂにおいては、第１段のＡＬＵ列５３ａの出力と第２段のＡＬＵ列５３ｂの入力の間で任意の接続関係、あるいは予め定められた接続関係の組合せの中から選択された接続関係を実現できるように接続用結線が構成されており、設定により所期の結線が有効となる。さらに接続部５２ｂは、第１段のＡＬＵ列５３ａの出力のうちの一つを外部に出力する途中出力経路５４ｂをさらに備える。したがって、接続部５２ｂは、ＡＬＵ列５３ａの出力をＡＬＵ列５３ｂの入力に供給するだけでなく、ＡＬＵ列５３ａのうちの一つの出力をリコンフィギュラブル回路１２の外部に出力することができる。
【００３０】
第２段のＡＬＵ２１、ＡＬＵ２２、・・・、ＡＬＵ２６には、ＡＬＵ列５３ａの出力が入力され、設定された所定の演算がなされる。演算結果の出力は、第３段の接続部５２ｃの接続用結線において設定された接続にしたがって、第３段のＡＬＵ３１、ＡＬＵ３２、・・・、ＡＬＵ３６に入力される。接続部５２ｂと同様に、接続部５２ｃも、第２段のＡＬＵ列５３ｂの出力のうちの一つを外部に出力する途中出力経路５４ｃを備える。したがって、接続部５２ｃは、ＡＬＵ列５３ｂの出力をＡＬＵ列５３ｃの入力に供給するだけでなく、ＡＬＵ列５３ｂのうちの一つの出力をリコンフィギュラブル回路１２の外部に出力することができる。
【００３１】
最終段となる第３段のＡＬＵ列５３ｃからの出力データは、メモリ部２７または経路部２４に出力される。メモリ部２７は、経路部２９を介して、出力データを接続部５２ａに入力する。接続部５２ａは、接続用結線を設定し、第１段のＡＬＵ１１、ＡＬＵ１２、・・・、ＡＬＵ１６にデータを供給する。
【００３２】
本実施例では、機能の変更が可能なリコンフィギュラブル回路１２を有する複数のリコンフィギュラブルユニット１０を備えた処理装置を提供する。複数のリコンフィギュラブルユニット１０を用いて演算処理を協働して実行することで、一つの演算処理を複数のリコンフィギュラブルユニット１０で分割して実行することが可能となり、処理の高速性を実現することができる。
【００３３】
複数のリコンフィギュラブルユニット１０で協働処理を実行するために、リコンフィギュラブルユニット間でデータを受け渡す処理が発生する。このとき、データの受け渡しが適切に実行されなければ並列処理の意味をなさなくなるため、データの受け渡しには慎重を期す必要がある。２以上のリコンフィギュラブルユニット１０が、他のリコンフィギュラブルユニット１０において必要となる有効データを同時に出力すると、データ同士が衝突して、有効データの受け渡しが不可能となる場合がある。予めデータの出力タイミングが把握できれば、そのタイミングを調整することも可能であるが、例えば、ループ制御文の条件分岐などの処理においては、データの出力タイミングが変化することもあるため、ユニット間における有効データの受け渡しが困難となる場合もある。特に、リコンフィギュラブルユニット１０の数が多くなると、それぞれのリコンフィギュラブルユニット１０において実行されている処理をリアルタイムで把握して調停制御を実行することは処理能力的に難しい。
【００３４】
図３（ａ）は、ｆｏｒ文により出力タイミングが異なるプログラムの１例を示す。ｆｏｒ文の条件式「ｉ<ａ」の「ａ」が変数で、ｆｏｒ文の実行に先んじて実行される処理により「ａ」の値が幾通りか取り得る場合、「ａ」の値によって出力ｚが出力されるタイミングが違ってくる。
【００３５】
図３（ｂ）は、出力タイミングを説明するための図である。図２に示したＡＬＵアレイの段数にあわせて、ＤＦＧの段数は最大３段に設定されている。例えば、「a==1」の場合、１回目のマッピングのＡＬＵアレイ１段目からｚが出力される。一方、「a==４」の場
合、２回目のマッピングのＡＬＵアレイ１段目からｚが出力される。このように、条件分岐の場合にはｚの出力タイミングが固定されない場合があり、リコンフィギュラブルユニット１０の数が多いほど、全てのリコンフィギュラブルユニット１０における出力タイミングを把握して調停制御を実行することは困難なものとなる。本実施例の処理装置は、その点を考慮して、リコンフィギュラブルユニット１０間におけるデータの受け渡しをスムーズに実行できるように構成される。
【００３６】
図４は、複数のリコンフィギュラブルユニットを備えた処理装置の構成を示す。処理装置１００は、３つのリコンフィギュラブルユニット１０ａ、１０ｂ、１０ｃを備える。なお、リコンフィギュラブルユニット１０の数は例示であり、２つであってもよいし、また４つ以上であってもよい。リコンフィギュラブルユニット１０は、図１に示したように、自身のもつリコンフィギュラブル回路１２の出力をフィードバックする経路部２４、２９などの自己ループを有して構成されているが、図４ではそれらの構成は省略している。ここでは、リコンフィギュラブルユニット１０が、他のリコンフィギュラブルユニット１０からのデータを入力として受け取るための構成を示す。
【００３７】
それぞれのリコンフィギュラブル回路１２は、３段×６列のＡＬＵアレイとして構成され、各段から１つの出力が可能な構造を有している。すなわち、各段には６個のＡＬＵが存在しているが、そのうちの一つのＡＬＵからの出力が、他のリコンフィギュラブルユニット１０への入力として利用される。図２を参照して、第１段のＡＬＵ列５３ａからは、途中出力経路５４ｂから一つのデータが出力され、第２段のＡＬＵ列５３ｂからは、途中出力経路５４ｃから一つのデータが出力される。また、第３段のＡＬＵ列５３ｃからは、図示しない選択部から一つのデータが出力される。データを他のリコンフィギュラブルユニット１０に出力するＡＬＵは、コマンドメモリ６１から供給される設定データにより決定される。各リコンフィギュラブル回路１２の各段からは、常にデータが出力されている。この出力が他のリコンフィギュラブルユニット１０で必要とされ、他のリコンフィギュラブルユニット１０に受け渡すべき有効データかどうかは、Ｃ記述から各リコンフィギュラブルユニット１０のＡＬＵアレイ構造にマッピングするためのＤＦＧを作成する時点で、コンパイラが把握している。
【００３８】
処理装置１００において、リコンフィギュラブルユニット１０ａへの他のリコンフィギュラブルユニット１０ｂ、１０ｃからの入力は、リコンフィギュラブルユニット１０ｂの各段からの３つの出力とリコンフィギュラブルユニット１０ｃの各段からの３つの出力の合計６本の出力からなる。既述したように、リコンフィギュラブル回路１２の各段からは常にデータが出力されているため、他のリコンフィギュラブルユニット１０ｂ、１０ｃから供給されるデータは、自身のリコンフィギュラブルユニット１０ａにおいて必要な有効データであるとは限らず、必要でない無効データである場合もある。
【００３９】
６つのデータをリコンフィギュラブル回路１２ａに入力するために、６本のバスを持つと、時間差なしに６つのデータをリコンフィギュラブルユニット１０ａに入力できる。しかしながら、現実には、リコンフィギュラブル回路１２ａにおいて、他のリコンフィギュラブル回路１２ｂ、１２ｃにおいて生成された６つのデータが同時に必要となる可能性は低い。各リコンフィギュラブルユニット１０ａ、１０ｂ、１０ｃは、それぞれ独立した演算を並列して実行しており、ユニット間でデータの受け渡しが発生する頻度はそれほど高くないと考えられる。従って、本実施例の処理装置１００においては、バスの本数を減らすために、各リコンフィギュラブルユニット１０が、他のリコンフィギュラブルユニットから出力される複数のデータを記憶するＲＡＭ６４を有し、さらに他のユニットから出力される複数のデータをＲＡＭ６４に記憶できるように、ＲＡＭ６４の手前に一時記憶用の内部状態保持回路６０を備える。内部状態保持回路６０は複数のＤＦＦとして構成されてもよい。内部状態保持回路６０は、カウンタ７０から供給されるカウント値に基づいて、他のリコンフィギュラブル回路から供給される複数のデータを、それぞれ異なるタイミングで且つ所定の周期で、それぞれのＤＦＦに記憶する。このとき、内部状態保持回路６０は、他のリコンフィギュラブルユニットから供給されるデータが自身のリコンフィギュラブル回路１２において必要な有効データであるか否かにかかわらず、そのデータを記憶する。
【００４０】
リコンフィギュラブルユニット１０ａに関して示すように、内部状態保持回路６０ａには、他のユニットにおけるリコンフィギュラブル回路１２ｂ、１２ｃの各段からの出力が供給される。内部状態保持回路６０ａは、それぞれから出力されたデータを保持するための６つのＤＦＦを有している。各ＤＦＦは、他のリコンフィギュラブル回路１２および出力段に対応して設けられる。各ＤＦＦの出力はＭＵＸ６２ａに供給される。ＭＵＸ６２ａは、データを選択して出力する選択部として機能する。内部状態保持回路６０におけるＤＦＦ数が６であるため、ＭＵＸ６２ａは、６：１のマルチプレクサとして構成され、カウンタ７０から供給されるカウント値に基づいて、内部状態保持回路６０の６個のＤＦＦに記憶された複数のデータを、それぞれ異なるタイミングで且つ所定の周期で選択して、ＲＡＭ６４ａに供給する。アドレスカウンタ６６ａは、ＲＡＭ６４ａのアドレス値を設定する。
【００４１】
図示を省略しているが、リコンフィギュラブルユニット１０ａ以外の他のリコンフィギュラブルユニット１０ｂ、１０ｃも、同様の構成を有している。リコンフィギュラブルユニット１０ｂにおいて、内部状態保持回路６０ｂには、リコンフィギュラブル回路１２ａ、１２ｃの各段からの出力が供給される。ＭＵＸ６２ｂは、内部状態保持回路６０ｂからの６つのデータ入力のうちの１つを選択してＲＡＭ６４ｂに出力する。同様に、リコンフィギュラブルユニット１０ｃにおいて、内部状態保持回路６０ｃには、リコンフィギュラブル回路１２ａ、１２ｂの各段からの出力が供給される。ＭＵＸ６２ｃは、内部状態保持回路６０ｃからの６つのデータ入力のうちの１つを選択してＲＡＭ６４ｃに出力する。
【００４２】
処理装置１００では、各リコンフィギュラブルユニット１０がＲＡＭ６４を１つ備えた構造を有しており、したがってＲＡＭ６４とリコンフィギュラブル回路１２とを結ぶバス６８は、１本のバスで実現できる。これにより、６本のバスを設ける場合と比較すると、回路規模を大幅に削減できる。
【００４３】
実施例では、カウンタ７０が６進カウンタとして構成され、カウント値を内部状態保持回路６０ａ、６０ｂ、６０ｃ、ＭＵＸ６２ａ、６２ｂ、６２ｃのそれぞれに供給する。これにより、６クロックに１回の周期で他のリコンフィギュラブルユニットの各段からの出力データを内部状態保持回路６０に記憶させ、また６クロックに１回の周期でＭＵＸ６２からＲＡＭ６４に供給させることが可能となる。
【００４４】
具体的には、カウンタ７０により、リコンフィギュラブルユニットの各出力ポートからデータが出力されるタイミングにアクティブとなるように内部状態保持回路６０におけるＤＦＦのＥＮを制御することで、各リコンフィギュラブルユニット１０から出力されたデータがＤＦＦに記憶される。次のタイミングで、ＭＵＸ６２が、ＤＦＦに記憶されたデータをＲＡＭ６４に時分割に供給する。このとき、他のリコンフィギュラブルユニットの各出力ポートから出力されるデータが、自身のリコンフィギュラブル回路における演算に必要な有効データであるとは限らないので、必要のない無効データはＲＡＭ６４に書き込まないように制御する。これは、図１に示す制御部１８により制御される。
【００４５】
制御部１８は、コマンドメモリ６１に記憶した書込イネーブル信号をＲＡＭ６４に供給することにより、ＲＡＭ６４の動作制御を実行する。ＲＡＭ６４は、制御部１８から供給される指示に基づいて、他のリコンフィギュラブルユニットから出力されたデータの中から、自身のリコンフィギュラブル回路１２において必要な有効データの書込みを実行することができる。これにより、出力されたデータが有効データである場合は、内部状態保持回路６０に記憶された順番にしたがって、ＲＡＭ６４に有効データが記憶されることになる。必要のない無効データである場合は、書込イネーブル信号がアクティブの値をとらず、ＲＡＭ６４は、無効データを書き込むことはできない。これにより、無用なデータをＲＡＭ６４に書き込む事態を回避でき、ＲＡＭ６４の容量を小さく構成することが可能となる。なお、ＲＡＭ６４にデータを書き込まない場合は、アドレスカウンタ６６の動作を停止させる。
【００４６】
図５は、リコンフィギュラブルユニットに設けられるＲＡＭ６４の構成を示す。ＲＡＭ６４は、２個のＲＡＭ０、ＲＡＭ１を有して構成される。切替部（ＳＷ）は、所定のサイクルごとにデータを書き込むＲＡＭを切り替え、またマルチプレクサ（ＭＵＸ）は、所定のサイクルごとにデータを読み出すＲＡＭを切り替える。したがって、あるサイクルでは、ＲＡＭ０がデータ書込用のＲＡＭ、ＲＡＭ１がデータ読出用のＲＡＭに設定され、次のサイクルでは、ＲＡＭ０がデータ読出用のＲＡＭ、ＲＡＭ１がデータ書込用のＲＡＭに設定される。このように、ＲＡＭ６４においては、ＲＡＭ０とＲＡＭ１とが、所定のタイミングで、書込動作と読出動作とを切り替えて使用される。これにより、データ書込とデータ読出とを独立して動作させることが可能となる。従って、リコンフィギュラブルユニット１０は所望のタイミングでデータをＲＡＭ６４から読み出すことができ、ユニット間で受け渡すデータ同士が衝突する問題を解決できる。また、この方式によると、ユニット出力の順番が変化する場合でも書込動作のみの調停を実行すればよく、制御が容易となる利点がある。
【００４７】
図６は、リコンフィギュラブルユニット１０ａにおける各構成の動作を示すタイミングチャートである。リコンフィギュラブルユニット１０ａの各構成は、カウンタ７０の出力に合わせて動作する。ここでは、内部状態保持回路６０ａにおける６つのＤＦＦを、ＤＦＦ１、ＤＦＦ２、ＤＦＦ３、ＤＦＦ４、ＤＦＦ５、ＤＦＦ６と呼ぶ。ＤＦＦ１はリコンフィギュラブルユニット１０ｂ（リコンフィギュラブル回路１２ｂ）の１段目出力と接続し、ＤＦＦ２はリコンフィギュラブルユニット１０ｂの２段目出力と接続し、ＤＦＦ３はリコンフィギュラブルユニット１０ｂの３段目出力と接続する。ＤＦＦ４はリコンフィギュラブルユニット１０ｃ（リコンフィギュラブル回路１２ｃ）の１段目出力と接続し、ＤＦＦ５はリコンフィギュラブルユニット１０ｃの２段目出力と接続し、ＤＦＦ６はリコンフィギュラブルユニット１０ｃの３段目出力と接続する。
【００４８】
カウンタ値が０のとき、リコンフィギュラブルユニット１０ｂの１段目出力が、ＤＦＦ１に記憶される。続いて、カウンタ値が１のとき、リコンフィギュラブルユニット１０ｂの２段目出力がＤＦＦ２に記憶され、このとき同時に、ＤＦＦ１に記憶されたデータがＭＵＸ６２ａから出力される。カウンタ値が２のとき、リコンフィギュラブルユニット１０ｂの３段目出力がＤＦＦ３に記憶され、ＤＦＦ２に記憶されたデータがＭＵＸ６２ａから出力される。
【００４９】
カウンタ値が３のとき、リコンフィギュラブルユニット１０ｃの１段目出力がＤＦＦ４に記憶され、ＤＦＦ３に記憶されたデータがＭＵＸ６２ａから出力される。カウンタ値が４のとき、リコンフィギュラブルユニット１０ｃの２段目出力がＤＦＦ５に記憶され、ＤＦＦ４に記憶されたデータがＭＵＸ６２ａから出力される。カウンタ値が５のとき、リコンフィギュラブルユニット１０ｃの３段目出力がＤＦＦ５に記憶され、ＤＦＦ４に記憶されたデータがＭＵＸ６２ａから出力される。供給されるデータが有効データであれば、制御部１８により、書込イネーブル信号がＲＡＭ６４ａに供給され、ＲＡＭ６４ａは、アドレスカウンタ６６ａにより指定されるアドレス値にデータを書き込む。
【００５０】
なお、図６に示したタイミングチャートでは、すべての時間帯におけるデータが有効データである例である。そのため、リコンフィギュラブルユニット１０の各段における接続部５２は、有効データを出力するＡＬＵを選択して、そのＡＬＵの出力線を別のリコンフィギュラブルユニット１０の内部状態保持回路６０に接続させる。このＡＬＵの選択は、図２に関して説明したように、設定データによる接続用結線の設定により実行される。
【００５１】
なお、実際にＤＦＧをマッピングする場合には、図６に示すほど、有効データが高頻度に発生することは稀であり、現実には、他のリコンフィギュラブルユニット１０に供給する必要のない無効データであることが多くなる。無効データの場合、リコンフィギュラブルユニット１０の各段における接続部は、適当なＡＬＵの出力を別のリコンフィギュラブルユニット１０の内部状態保持回路６０に供給する。この出力は何でもよい。無効データは、ＭＵＸ６２ａからＲＡＭ６４ａに出力されるが、このときには、データの書込を許可する書込イネーブル信号が制御部１８からＲＡＭ６４ａに供給されないため、この無効データは破棄されることになる。
【００５２】
具体的に、他のリコンフィギュラブルユニット１０から供給されるデータが有効データであるか、無効データであるかは、既述のように、ＡＬＵがコマンドメモリ６１から供給される設定データをマッピングされたときに定まるものであり、これは、設定データの生成時に、コンパイラにより把握されている。そのため、他のリコンフィギュラブルユニット１０ｂ、１０ｃからＭＵＸ６２ａに供給されるデータが有効データであるとき、コマンドメモリ６１からＲＡＭ６４ａに対して、データ書込を許可するW_EN信号が供給される。これにより、ＲＡＭ６４ａは、有効データを書き込むことができる。一方、他のリコンフィギュラブルユニット１０ｂ、１０ｃからＭＵＸ６２ａに供給されるデータが無効データであるとき、コマンドメモリ６１からＲＡＭ６４ａに対して、データ書込を許可するW_EN信号が供給されない。そのため、ＲＡＭ６４ａは無効データを書き込むことはせず、記憶領域を有効に活用できる。このように、他のリコンフィギュラブルユニット１０ｂ、１０ｃから供給される無効データをＲＡＭ６４の入口ではじくことにより、複雑な調停制御を必要とせず、他のリコンフィギュラブルユニット１０ｂ、１０ｃとＲＡＭ６４の間の構成を単純化することができ、回路規模を適切に保つことができる。
【００５３】
図７は、複数のリコンフィギュラブルユニットを備えた処理装置の構成の別の例を示す。図７に示す処理装置２００は、３つのリコンフィギュラブルユニット１０ｄ、１０ｅ、１０ｆを備える。なお、リコンフィギュラブルユニット１０の数は例示であり、２つであってもよいし、また４つ以上であってもよい。リコンフィギュラブルユニット１０は、図１に示したように、自身のもつリコンフィギュラブル回路１２の出力をフィードバックする経路部２４、２９などの自己ループを有して構成されているが、図７ではそれらの構成は省略している。ここでは、リコンフィギュラブルユニット１０が、他のリコンフィギュラブルユニット１０からのデータを入力として受け取るための構成を示す。
【００５４】
それぞれのリコンフィギュラブル回路１２は、３段×６列のＡＬＵアレイとして構成され、各段から１つの出力が可能な構造を有している。リコンフィギュラブル回路１２の出力構成は、図４に関して説明した通りである。
【００５５】
処理装置２００において、各リコンフィギュラブルユニット１０は、自身のリコンフィギュラブル回路１２の各段から出力されたデータを記憶する３つのＲＡＭ６４と、それぞれのＲＡＭ６４からの出力を受けて選択的に出力するＭＵＸ６２を有する。各ＲＡＭ６４は、図５に示したＲＡＭの構成を有し、２つのＲＡＭ０、ＲＡＭ１を備えて構成される。具体的に、リコンフィギュラブルユニット１０ｄは、リコンフィギュラブル回路１２ｄの各段の出力を記憶するＲＡＭ６４ｄ＿１、ＲＡＭ６４ｄ＿２、ＲＡＭ６４ｄ＿３と、それぞれのＲＡＭの出力を受けるＭＵＸ６２ｄを備える。リコンフィギュラブルユニット１０ｅは、リコンフィギュラブル回路１２ｅの各段の出力を記憶するＲＡＭ６４ｅ＿１、ＲＡＭ６４ｅ＿２、ＲＡＭ６４ｅ＿３と、それぞれのＲＡＭの出力を受けるＭＵＸ６２ｅを備える。リコンフィギュラブルユニット１０ｆは、リコンフィギュラブル回路１２ｆの各段の出力を記憶するＲＡＭ６４ｆ＿１、ＲＡＭ６４ｆ＿２、ＲＡＭ６４ｆ＿３と、それぞれのＲＡＭの出力を受けるＭＵＸ６２ｆを備える。
【００５６】
各ＲＡＭ６４に書き込まれるデータは、他のリコンフィギュラブルユニット１０に渡すデータである。ＲＡＭ６４へのデータ書込は、他のリコンフィギュラブルユニット１０の動作とは無関係に実行される。各リコンフィギュラブルユニット１０が、どのタイミングで他のリコンフィギュラブルユニット１０から有効データを必要とするかは、Ｃ記述からＡＬＵアレイにマッピングするためのＤＦＧを作成するコンパイラが把握している。そのため、コンパイラは、他のリコンフィギュラブルユニットで有効データを必要とするタイミングを考慮して、ＲＡＭ６４の読出機能、ＭＵＸ６２またはＭＵＸ８０のデータ選択機能を制御する制御信号を生成する。この制御信号は設定データとしてユニット間コマンドメモリ８４に記憶され、プログラムカウンタ８６のカウント値に基づいて出力される。
【００５７】
処理装置２００においては、ＲＡＭ６４からの読出データは書込動作に関係なく、読み出したいタイミングに必要なデータを取り出すことができ、また、各リコンフィギュラブルユニット１０は、接続部８２を介して入力ポートにきているデータのうち必要なデータのみを使用すればよい。図７に示す接続構成で、複数のリコンフィギュラブルユニット１０が別々のデータを同じタイミングで必要とする場合、コンパイラでタイミング調整することは容易であり、データ同士の衝突を回避するようにＤＦＧを生成する。
【００５８】
ＭＵＸ６２は、それぞれのリコンフィギュラブルユニット１０における３つのＲＡＭに記憶されたデータを選択する。ＭＵＸ８０は、ＭＵＸ６２においてそれぞれのリコンフィギュラブルユニット１０におけるＲＡＭ６４から選択され、供給されたデータを、リコンフィギュラブルユニット１０間で選択して、接続部８２に出力する。接続部８２は、ＭＵＸ８０で選択されたデータを、複数のリコンフィギュラブルユニット１０の入力に供給する。接続部８２は複数のリコンフィギュラブルユニット１０に対して共通のバスとして構成される。共通バスは１本で構成され、回路規模を削減することが好ましい。図１における制御部１８は、接続部８２から供給されるデータを、リコンフィギュラブルユニット１０の入力ポートから受け取るか否かを定める制御信号をリコンフィギュラブルユニット１０に供給する。これにより、リコンフィギュラブルユニット１０は、必要なデータのみを受け取ることができ、ユニット間のデータの受け渡しを容易に実行することが可能となる。
【００５９】
以下、処理装置２００におけるＲＡＭ６４のメモリ容量について考察する。処理装置２００に入力される外部データの１クロックに対して、処理装置２００の内部クロックがその１００倍の速度を有しているとする。この場合、外部データの１クロックを１サイクルとして設定すると、１サイクルは、処理装置２００内の１００クロックに相当する。
【００６０】
１サイクルのうち、あるリコンフィギュラブルユニットで処理されたデータを再び同じリコンフィギュラブルユニット内で使用する頻度に比べ、他のリコンフィギュラブルユニットで使用する頻度は少ない。したがって、ＲＡＭ６４の容量は小さくてすむ。１サイクル＝１００クロックで、リコンフィギュラブルユニット１０をｍ個接続する場合、１個のリコンフィギュラブルユニット１０に対するＲＡＭ６４の深さは１００／ｍとなるので、各段１個のＲＡＭ６４の深さは（１００／ｍ）／３となる。図７の場合、ｍ＝３なので、ＲＡＭ６４の１個の深さ＝１１となる。この考察により、ＲＡＭ６４の容量が小さくてすむことがわかる。また、上記で述べたように、ＲＡＭ６４に記憶されたデータを時分割で読み出すことにより、１本の接続部８２でリコンフィギュラブルユニット間でデータを受け渡すことが可能となる。図７では、１本のバスで各リコンフィギュラブルユニットへユニット間データを入力していたが、複数のバスでユニット間の接続を実行する構造でもよい。
【００６１】
処理装置１００および処理装置２００によると、複数のリコンフィギュラブルユニット１０間で受け渡すデータ同士が衝突する問題を解決でき、並列処理が可能となるため、全体の処理能力が向上する。また、ユニット間、外部とのバスを削減できるので、回路規模の削減、及び、消費電力の削減を実現することができる。
【００６２】
なお、上記した２つの実施例では、各ユニットの各段からの出力を１つとしていたが、複数としてもよい。
【００６３】
図８は、複数のリコンフィギュラブルユニットを備えた処理装置の構成の別の例を示す。図８に示す処理装置３００は、４つのリコンフィギュラブルユニット１０ｇ，１０ｈ，１０ｉ，１０ｊを備える。なお、リコンフィギュラブルユニット１０の数は例示であり、３つ以下であってもよいし、また５つ以上であってもよい。リコンフィギュラブルユニット１０は、図１に示したように、該リコンフィギュラブルユニット１０に備えられたリコンフィギュラブル回路１２の出力をフィードバックする経路部２４、２９などの自己ループを有して構成されているが、図８ではそれらの構成は省略している。
【００６４】
リコンフィギュラブルユニット１０ｇは、リコンフィギュラブル回路１２ｇと、出力用ＲＡＭ６４ｇ（第２記憶部）と、ＭＵＸ６７ｇと、入力用ＲＡＭ６９ｇ＿１，６９ｇ＿２，６９ｇ＿３（第１記憶部）とを有している。
【００６５】
リコンフィギュラブル回路１２ｇは、３段×６列のＡＬＵアレイとして構成され、各段から１つの出力が可能な構造を有している。図８では、説明の便宜上、リコンフィギュラブル回路１２ｇは、図２に示す１段目から１つの出力が可能な構造を有するものとして説明する。リコンフィギュラブル回路１２ｇの基本的な構成は、図２及び図４等で説明した通りである。
【００６６】
出力用ＲＡＭ６４ｇは、リコンフィギュラブル回路１２ｇの出力側の所定段目（ここでは１段目）から出力されたデータを記憶する。出力用ＲＡＭ６４ｇは、リコンフィギュラブル回路１２ｇの１段目から出力されたデータが他のリコンフィギュラブル回路１２ｈ，１２ｉ，１２ｊにおける演算に有効なデータであるとは限らないため、当該有効なデータでない無効データを記憶しないようにする。
【００６７】
具体的には、制御部９４がユニット間コマンドメモリ９５に記憶された書込イネーブル信号を出力用ＲＡＭ６４ｇに出力する。そして、リコンフィギュラブル回路１２ｇの１段目から出力されたデータが他のリコンフィギュラブル回路１２ｈ，１２ｉ，１２ｊにおける演算に必要な有効データである場合には、出力用ＲＡＭ６４ｇには、制御部９４から書込イネーブル信号が入力される。出力用ＲＡＭ６４ｇは、制御部９４から入力された書込イネーブル信号に基づいて、リコンフィギュラブル回路１２ｇの１段目から出力されたデータを有効データであるとして記憶する。
【００６８】
一方、リコンフィギュラブル回路１２ｇの１段目から出力されたデータが有効データでない場合には、出力用ＲＡＭ６４ｇには、制御部９４から書込イネーブル信号が入力されない。この場合には、出力用ＲＡＭ６４ｇは、制御部９４から書込イネーブル信号が入力されないため、リコンフィギュラブル回路１２ｇの１段目から出力されたデータを記憶しない。
【００６９】
また、各リコンフィギュラブルユニット１０が、どのタイミングで他のリコンフィギュラブルユニット１０の出力用ＲＡＭ６４から有効データを必要とするかは、Ｃ記述からＡＬＵアレイにマッピングするためのＤＦＧを作成するコンパイラが把握している。
【００７０】
このため、コンパイラは、一方のリコンフィギュラブルユニット１０（例えば、リコンフィギュラブルユニット１０ｇ）の出力用記憶部６４に記憶された有効データを他方の複数のリコンフィギュラブルユニット１０（例えば、リコンフィギュラブルユニット１０ｈ，１０ｉ，１０ｊ）で必要とするタイミングを考慮して、当該出力用記憶部６４に有効データを書き込む機能を制御するための制御信号（書込イネーブル信号を含む）を生成する。
【００７１】
すなわち、上記他方の複数のリコンフィギュラブルユニット１０（例えば、リコンフィギュラブルユニット１０ｈ，１０ｉ，１０ｊ）が上記一方のリコンフィギュラブルユニット１０（例えば、リコンフィギュラブルユニット１０ｇ）に備えられている出力用ＲＡＭ６４の有効データを同時に読み込むなどのタイミングで、コンパイラは出力用記憶部６４に有効データを書き込む機能を制御するための制御信号を生成する。この制御信号は、ユニット間コマンドメモリ９５に記憶され、プログラムカウンタ９６のカウント値に基づいて制御部９４から出力される。
【００７２】
なお、他方の複数のリコンフィギュラブルユニット１０（例えば、リコンフィギュラブルユニット１０ｈ，１０ｉ，１０ｊ）のそれぞれの出力用ＲＡＭ６４が上記一方のリコンフィギュラブルユニット１０（例えば、リコンフィギュラブルユニット１０ｇ）に備えられているＭＵＸ６７に対して有効データを同時に出力しないタイミングで、コンパイラは出力用記憶部６４に有効データを書き込む機能を制御するための制御信号を生成する。
【００７３】
ＭＵＸ６７ｇは、他の複数のリコンフィギュラブルユニット１０ｈ，１０ｉ，１０ｊから出力されたデータを選択して該当する入力用ＲＡＭ６９ｇ＿１，６９ｇ＿２，６９ｇ＿３に出力する。なお、ＭＵＸ６７ｇは、他の複数のリコンフィギュラブルユニット１０ｈ，１０ｉ，１０ｊから出力されたデータを、カウンタ値に基づいて選択してもよいし、ユニット間コマンドメモリ９５により出力された選択信号に基づいて選択してもよい。
【００７４】
ＭＵＸ６７ｇには、経路部９０ａ，９０ｂ，９０ｃが接続されている。経路部９０ａは、ＭＵＸ６７ｇと他のリコンフィギュラブルユニット１０ｈの出力用ＲＡＭ６４ｈとを接続する。経路部９０ｂは、ＭＵＸ６７ｇと他のリコンフィギュラブルユニット１０ｉの出力用ＲＡＭ６４ｉとを接続する。経路部９０ｃは、ＭＵＸ６７ｇと他のリコンフィギュラブルユニット１０ｊの出力用ＲＡＭ６４ｊとを接続する。
【００７５】
ＭＵＸ６７ｇは、ＭＵＸ６７ｇに接続される経路部の数が３つであるため、３：１のマルチプレクサとして構成され、カウンタ（図示せず）から供給されるカウンタ値に基づいて、各経路部のいずれかを所定タイミングで順次選択して、選択した経路部から出力されたデータを該当する入力用ＲＡＭ６９ｇに出力する。
【００７６】
入力用ＲＡＭ６９ｇ＿１，６９ｇ＿２，６９ｇ＿３は、ＭＵＸ６７ｇから出力されたデータを記憶する。入力用ＲＡＭ６９ｇ＿１，６９ｇ＿２，６９ｇ＿３のそれぞれは、リコンフィギュラブル回路１２ｇの入力側の各段に接続されている。具体的には、入力用ＲＡＭ６９ｇ＿１は接続部５２ａに接続されている。入力用ＲＡＭ６９ｇ＿２は接続部５２ｂに接続されている。入力用ＲＡＭ６９ｇ＿３は接続部５２ｃに接続されている。
【００７７】
上記制御部９４は、リコンフィギュラブル回路１２ｇが入力用ＲＡＭ６９ｇに記憶されたデータを読み込むか否かを定める制御信号をリコンフィギュラブル回路１２ｇに出力する。これにより、リコンフィギュラブル回路１２ｇは、必要なデータのみを該当する入力用ＲＡＭ６９ｇから読み込むことができる。
【００７８】
上記入力用ＲＡＭ６９ｇ＿１，６９ｇ＿２，６９ｇ＿３、及び出力用ＲＡＭ６４ｇのそれぞれは、図５に示す２つのＲＡＭ０、ＲＡＭ１を有している。入力用ＲＡＭ６９ｇ＿１，６９ｇ＿２，６９ｇ＿３、及び出力用ＲＡＭ６４ｇのそれぞれは、２つのＲＡＭ０、ＲＡＭ１のうちの一方のＲＡＭと他方のＲＡＭとを所定のタイミング（ここでは１サイクル）で書込動作と読出動作とに切り替える。
【００７９】
リコンフィギュラブルユニット１０ｈは、上述したリコンフィギュラブルユニット１０ｇと同様に、リコンフィギュラブル回路１２ｈと、リコンフィギュラブル回路１２ｈの所定段目（ここでは１段目）から出力されたデータを記憶する出力用ＲＡＭ６４ｈと、他の複数のリコンフィギュラブルユニット１０ｇ，１０ｉ，１０ｊから出力されたデータを選択して該当する入力用ＲＡＭ６９ｈ＿１，６９ｈ＿２，６９ｈ＿３に出力するＭＵＸ６７ｈと、ＭＵＸ６７ｈにより選択されたデータを記憶する入力用ＲＡＭ６９ｈ＿１，６９ｈ＿２，６９ｈ＿３とを有している。
【００８０】
リコンフィギュラブルユニット１０ｉは、リコンフィギュラブル回路１２ｉと、リコンフィギュラブル回路１２ｉの所定段目（ここでは１段目）から出力されたデータを記憶する出力用ＲＡＭ６４ｉと、他の複数のリコンフィギュラブルユニット１０ｇ，１０ｈ，１０ｊから出力されたデータを選択して該当する入力用ＲＡＭ６９ｉ＿１，６９ｉ＿２，６９ｉ＿３に出力するＭＵＸ６７ｉと、ＭＵＸ６７ｉにより選択されたデータを記憶する入力用ＲＡＭ６９ｉ＿１，６９ｉ＿２，６９ｉ＿３とを有している。
【００８１】
リコンフィギュラブルユニット１０ｊは、リコンフィギュラブル回路１２ｊと、リコンフィギュラブル回路１２ｊの所定段目（ここでは１段目）から出力されたデータを記憶する出力用ＲＡＭ６４ｊと、他の複数のリコンフィギュラブルユニット１０ｇ，１０ｈ，１０ｉから出力されたデータを選択して該当する入力用ＲＡＭ６９ｊ＿１，６９ｊ＿２，６９ｊ＿３に出力するＭＵＸ６７ｊと、ＭＵＸ６７ｊにより選択されたデータを記憶する入力用ＲＡＭ６９ｊ＿１，６９ｊ＿２，６９ｊ＿３とを有している。
【００８２】
ここで、図７では、リコンフィギュラブル回路１２における各段のＡＬＵ列５３がＲＡＭ６４に記憶されているデータを同じタイミングで要求しないようにするために、コンパイラは、各段のＡＬＵ列５３のうちのいずれかのＡＬＵ列５３の要求を他のＡＬＵ列５３の要求よりも優先させることにより、各段のＡＬＵ列５３からの要求が重ならないようにしている。すなわち、コンパイラは、当該各段のＡＬＵ列５３のそれぞれの要求が重ならないように当該各要求を時間的に順次ずらしている。
【００８３】
ところが、リコンフィギュラブル回路１２における各段のＡＬＵ列５３が多くなると、コンパイラは、各段のＡＬＵ列５３のそれぞれの要求が重ならないようにするために、当該各要求を時間的に順次ずらすためのＤＦＧ数を多く作成しなければならない。このため、ＤＦＧ数が多く作成された分、リコンフィギュラブル回路１２における回路規模が拡大することがあった。
【００８４】
図８に示す接続構成では、リコンフィギュラブル回路１２における各段のＡＬＵ列５３は、それぞれの各段に対応する入力用ＲＡＭ６９に接続されている。これにより、リコンフィギュラブル回路１２における２以上のＡＬＵ列５３は、それぞれの各段に対応する入力用ＲＡＭ６９に記憶されているデータを、他段のＡＬＵ列からの要求に関係なく同時に直接読み込むことができる。
【００８５】
このため、コンパイラは、各段のＡＬＵ列５３からの各要求を重複しないようにするためのＤＦＧを多く作成する必要がなくなる。また、コンパイラによりＤＦＧが多く作成されない分、リコンフィギュラブル回路１２は、回路規模を縮小することができ、制御動作を簡素化することができる。
【００８６】
なお、本実施形態では、リコンフィギュラブル回路１２における各段のＡＬＵ列５３に対応して入力用ＲＡＭ６９が複数備えられているが、この入力用ＲＡＭ６９が１つしか備えられていない場合には、上述した図７に示す構成と同様にリコンフィギュラブル回路１２における回路規模が拡大することとなる。
【００８７】
具体的には、リコンフィギュラブル回路１２における各段のＡＬＵ列５３は、それぞれ独立に動作している。このため、入力用ＲＡＭ６９が１つしか備えられていないと、各段のＡＬＵ列５３は、当該入力用ＲＡＭ６９に記憶されているデータを同時に読み込むことがある。この場合には、各段のＡＬＵ列５３からのデータの読み込みに対する要求が同時に実行されるため、リコンフィギュラブルユニット１０の動作が停止する。
【００８８】
従って、上述したようにコンパイラは、各段のＡＬＵ列５３からの要求が同時に実行されないようにするために、何も実行しない処理を示すＮＯＰノードをＤＦＧに加えて、各段のＡＬＵ列５３からの要求を時間的に順次ずらす必要がある。このため、当該ＮＯＰノードがＤＦＧに加えられた分、回路規模が拡大することとなる。
【００８９】
よって、図８に示すように、入力用ＲＡＭ６９が１つではなく、各段のＡＬＵ列５３のそれぞれに対応して入力用ＲＡＭ６９が複数備えられることにより、２以上のＡＬＵ列５３は、それぞれの各段に対応する入力用ＲＡＭ６９に記憶されているデータを、他のＡＬＵ列からの要求に関係なく同時に読み込むことができる。このため、コンパイラは、各段のＡＬＵ列５３からの各要求を重複しないようにするためのＤＦＧを作成する必要がなくなる。また、リコンフィギュラブル回路１２は、当該ＤＦＧが作成されない分、回路規模を縮小することができる。
【００９０】
なお、図８に示すリコンフィギュラブル回路１２は、所定段（ここでは１段目）から１つの出力が可能な構造を有するものとして説明しているが、これに限定されずに、複数段（図２参照）のそれぞれから１つの出力が可能な構造を有してもよい。
【００９１】
なお、図８に示すリコンフィギュラブルユニット１０は、他の複数のリコンフィギュラブルユニット１０から出力されたデータを受け付けているが、これに限定されずに、自身の持つリコンフィギュラブルユニット１０から出力されたデータを受け付けてもよい。
【００９２】
以上、本発明を実施例をもとに説明した。実施例は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【００９３】
【図１】リコンフィギュラブル回路を備えたリコンフィギュラブルユニットの構成図である。
【図２】リコンフィギュラブル回路の構成の一例を示す図である。
【図３】（ａ）はｆｏｒ文により出力タイミングが異なるプログラムの一例を示す図であり、（ｂ）は出力タイミングを説明するための図である。
【図４】複数のリコンフィギュラブルユニットを備えた処理装置の構成を示す図である。
【図５】リコンフィギュラブルユニットに設けられるＲＡＭの構成を示す図である。
【図６】リコンフィギュラブルユニットにおける各構成の動作を示すタイミングチャートである。
【図７】複数のリコンフィギュラブルユニットを備えた処理装置の構成の別の例を示す図である。
【図８】複数のリコンフィギュラブルユニットを備えた処理装置の構成の別の例を示す図である。
【符号の説明】
【００９４】
１０…リコンフィギュラブルユニット、１２…リコンフィギュラブル回路、１８…制御部、２７…メモリ部、５４…途中出力経路、６０…内部状態保持回路、６１…コマンドメモリ、６２…ＭＵＸ、６３…プログラムカウンタ、６４…ＲＡＭ、６６…アドレスカウンタ、６７…ＭＵＸ、６８…バス、６９…ＲＡＭ、７０…カウンタ、８０…ＭＵＸ、８２…接続部、８４…ユニット間コマンドメモリ、８６…プログラムカウンタ、９４…制御部、９５…ユニット間コマンドメモリ、９６…プログラムカウンタ、１００…処理装置、２００…処理装置
【図１】
2006099719.tif 000003
【図２】
2006099719.tif 000004
【図３】
2006099719.tif 000005
【図４】
2006099719.tif 000006
【図５】
2006099719.tif 000007
【図６】
2006099719.tif 000008
【図７】
2006099719.tif 000009
【図８】
2006099719.tif 000010