(57)【特許請求の範囲】
【請求項１】
再構成可能な複数のプロセッシングエレメント（以下、「ＰＥ」という）の処理内容と前記ＰＥ間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路であって、
コンフィグレーションデータ読み込み要求信号を出力し、前記コンテキストの切り替えの開始および終了の指示を示す信号である条件分岐信号の生成を要求するシーケンサと、
前記シーケンサから要求された前記条件分岐信号の生成要求に基づいて、前記条件分岐信号を出力する条件分岐信号生成手段と、
予めコンテキストが格納され、前記シーケンサの指示に応じて再構成時のコンテキストを読み出し、前記コンフィグレーションデータを前記ＰＥおよびカウンタ回路に出力するコンフィグレーションメモリと、
カウンタ回路と、を備え、
前記カウンタ回路は、
前記コンテキストに基づく前記ＰＥの再構成時のコンフィグレーションデータが入力され、前記コンフィグレーションデータ読み込み要求信号に応じて、所定のループ処理を行う際に、当該カウンタ回路に入力される条件分岐信号の値に応じてカウント処理をどのように行うかを示す第１の設定と、カウント処理の実行状態に応じて当該カウンタ回路から出力される条件分岐信号の値をどう定めるかを示す第２の設定を含む、ループ処理のための設定を行う設定手段と、
当該カウンタ回路に入力される条件分岐信号と前記第１の設定に基づいて、前記設定手段によって設定されたループ処理を実行する実行手段と、
前記実行手段によって実行されたループ処理の実行回数をカウントし、カウントされた実行回数および前記第２の設定に基づいて、条件分岐信号を当該カウンタ回路の外部へ出力するカウント手段と、を備え、
さらに、動的再構成回路は、
複数の前記ＰＥと前記カウンタ回路の入出力の接続を切り替えるネットワーク手段と、
を備えることを特徴とする動的再構成回路。
【請求項２】
前記カウンタ回路は複数設けられ、前記コンテキストにおいて前記ループ処理が多重化
されている場合、前記カウンタ回路ごとに前記各ループ処理を実行するように再構成することを特徴とする請求項１に記載の動的再構成回路。
【請求項３】
再構成可能な複数のプロセッシングエレメント（以下、「ＰＥ」という）の処理内容と前記ＰＥ間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させるために、コンフィグレーションデータ読み込み要求信号を出力し、前記コンテキストの切り替えの開始および終了の指示を示す信号である条件分岐信号の生成を要求するシーケンサと、前記シーケンサから要求された前記条件分岐信号の生成要求に基づいて、前記条件分岐信号を出力する条件分岐信号生成手段と、予めコンテキストが格納され、前記シーケンサの指示に応じて再構成時のコンテキストを読み出し、前記コンフィグレーションデータを前記ＰＥおよびカウンタ回路に出力するコンフィグレーションメモリと、カウンタ回路と、を有する動的再構成回路におけるループ処理制御方法であって、
前記カウンタ回路において、前記コンテキストに基づく前記ＰＥの再構成時のコンフィグレーションデータが入力され、前記コンフィグレーションデータ読み込み要求信号に応じて、所定のループ処理を行う際に、当該カウンタ回路に入力される条件分岐信号の値に応じてカウント処理をどのように行うかを示す第１の設定と、カウント処理の実行状態に応じて当該カウンタ回路から出力される条件分岐信号の値をどう定めるかを示す第２の設定を含む、ループ処理のための設定を行う設定工程と、
前記カウンタ回路において、当該カウンタ回路に入力される条件分岐信号と前記第１の設定に基づいて、前記設定工程によって設定されたループ処理を実行する実行工程と、
前記カウンタ回路において、前記実行工程によって実行されたループ処理の実行回数をカウントするカウント工程と、
前記カウンタ回路において、前記カウント工程によってカウントされた実行回数および前記第２の設定に基づいて、条件分岐信号を当該カウンタ回路の外部へ出力する出力工程と、
複数の前記ＰＥと前記カウンタ回路の入出力の接続を切り替える切り替え工程と、
を含むことを特徴とするループ処理制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、再構成可能なプロセッシングエレメント（以下、「ＰＥ」という）の集合を、前記ＰＥの処理内容と前記ＰＥ間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路およびループ処理制御方法に関する。
【背景技術】
【０００２】
従来より、ダイナミックリコンフィギャラブル回路（以下、「動的再構成回路」という）は、動作中に回路内部の演算器命令や演算器間の接続を変更できるという特徴とを備えている。具体的には、動的再構成回路の内部には複数のＰＥ（プロセッシングエレメント）は配置されている。動的再構成回路の構成内容は、コンテキストと呼ばれる各ＰＥの動作と、ＰＥ間の接続との設定をあらわす情報として記述される。回路を再構成する際には、このコンテキストに応じてＰＥの演算処理内容や接続を変更させる。
【０００３】
また、動的再構成回路では、上述したコンテキストに基づいて回路内部に配置されているＰＥの処理内容や接続先を順次変更する。すなわち、異なる処理をおこなう場合であっても、時間軸方向に分割して実行させることによって、ＰＥの共用が可能となる。したがって、動的再構成回路全体のハードウェア規模を削減することができるという利点を備えている。このような、コンテキストに基づいた動的再構成回路では、各コンテキストを実行させる際の開始、終了の制御には、カウンタ回路を用いることが一般的である。具体的には、データ駆動型の再構成可能なカウンタが利用されている（たとえば、下記特許文献１参照。）。
【０００４】
【特許文献１】特表２００３−５１８６６６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のようなデータ駆動型のカウンタ回路は、動的再構成回路に実装するアプリケーションに特化した機能しか備えていないため、Ｃ言語などの高級言語から実装をおこなう場合、ｆｏｒ文ｗｈｉｌｅ文などのいわゆるループ処理に対応したカウント処理は困難であった。
【０００６】
具体的には、動的再構成回路に高級言語であるＣ言語のループ処理を適用させる場合、カウンタ回路は、Ｃ言語によって記述された任意の多重ループをそれぞれカウントできるような構成に変更させなければならない。しかしながら、多重ループ数の最大は、カウンタの仕様により決まってしまうため、ループ処理の各パラメータはカウンタ回路の仕様に合わせて変更しなければならない。このように、従来の動的再構成回路は、Ｃ言語など高級言語によって記述されたループ処理を実行できない場合があり、動的再構成回路として実現可能な処理が制限されてしまうという問題があった。
【０００７】
また、従来のデータ駆動型のカウンタ回路では、動的再構成回路の外部からの有効データ入力をトリガとしてカウンタの動作を開始または制御していた。したがって、動的再構成回路内部でＰＥの入力となるデータを生成する場合、カウンタ回路の開始タイミングを指示するトリガ信号を生成できない。
【０００８】
具体的には、動的再構成回路におけるコンテキスト切り替えでは、カウンタ回路の開始タイミングを指示するために、現在実行中のコンテキストによる処理の終了タイミングを指示する制御信号を使用したい。しかしながら、データ駆動型のカウンタ回路によるアドレスカウント処理の場合、外部からの有効データの入力を開始トリガとするため、内部生成された制御信号をカウンタ回路の開始指示として使用することができない。
【０００９】
同様に、特定のループ処理が終了したタイミングで別のループ処理を開始したい場合、前段のカウンタ回路の開始、後段のカウンタ回路の終了は同一のトリガ信号を使用したいが、ここでも、データ駆動型のカウンタ回路の場合に、前段のカウンタから読み出した有効データから前段のカウンタの終了判定をすることはできないため、別の制御を追加する必要があり使用ＰＥ数の増加となる。
【００１０】
このように、従来のカウンタ回路では、実行させたいループ処理に応じた信号出力を任意のタイミングで出力させることができない。したがって、動的再構成回路において、高級言語の記述に基づいたループ処理を実行させた場合には、制御のためのＰＥが別途必要になり、ハードウェア規模の増大を招いてしまう場合があるという問題があった。
【００１１】
この発明は、上述した従来技術による問題点を解消するため、高級言語によって記述されたループ処理であっても実装可能とするとともに、コンテキストの切り替えタイミング指示を同時に実現することのできる動的再構成回路およびループ処理制御方法を提供することを目的とする。
【課題を解決するための手段】
【００２２】
上述した課題を解決し、目的を達成するため、本発明にかかる動的再構成回路は、再構成可能な複数のプロセッシングエレメント（以下、「ＰＥ」という）の処理内容と前記ＰＥ間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路であって、コンフィグレーションデータ読み込み要求信号を出力し、前記コンテキストの切り替えの開始および終了の指示を示す信号である条件分岐信号の生成を要求するシーケンサと、前記シーケンサから要求された前記条件分岐信号の生成要求に基づいて、前記条件分岐信号を出力する条件分岐信号生成手段と、予めコンテキストが格納され、前記シーケンサの指示に応じて再構成時のコンテキストを読み出し、前記コンフィグレーションデータを前記ＰＥおよびカウンタ回路に出力するコンフィグレーションメモリと、カウンタ回路と、を備え、前記カウンタ回路は、前記コンテキストに基づく前記ＰＥの再構成時のコンフィグレーションデータが入力され、前記コンフィグレーションデータ読み込み要求信号に応じて、所定のループ処理を行う際に、当該カウンタ回路に入力される条件分岐信号の値に応じてカウント処理をどのように行うかを示す第１の設定と、カウント処理の実行状態に応じて当該カウンタ回路から出力される条件分岐信号の値をどう定めるかを示す第２の設定を含む、ループ処理のための設定を行う設定手段と、当該カウンタ回路に入力される条件分岐信号と前記第１の設定に基づいて、前記設定手段によって設定されたループ処理を実行する実行手段と、前記実行手段によって実行されたループ処理の実行回数をカウントし、カウントされた実行回数および前記第２の設定に基づいて、条件分岐信号を当該カウンタ回路の外部へ出力するカウント手段と、を備え、さらに、動的再構成回路は、複数の前記ＰＥと前記カウンタ回路の入出力の接続を切り替えるネットワーク手段と、を備えることを特徴とする。
【００２３】
この発明によれば、コンテキストの記述に応じて任意のループ処理を実行させるとともに、この任意に設定されたループ処理の実行回数をカウントし、このカウント処理のタイミングで任意の出力先にカウント回路の出力値を出力させることができる。
【００２４】
また、上記発明において、前記カウンタ回路は複数設けられ、前記コンテキストにおいて前記ループ処理が多重化されている場合、前記カウンタ回路ごとに前記各ループ処理を実行するように再構成してもよい。
【００２５】
この発明によれば、多重ループ処理が記述されたコンテキストに対応したループ処理を実現することができる。
【発明の効果】
【００２６】
本発明にかかる動的再構成回路およびループ処理制御方法によれば、高級言語によって記述されたループ処理であっても実装可能とするとともに、コンテキストの切り替えタイミング指示を同時に実現することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２７】
以下に添付図面を参照して、この発明にかかる動的再構成回路およびループ処理制御方法の好適な実施の形態を詳細に説明する。
【００２８】
（動的再構成回路の構成）
まず、本発明にかかる動的再構成回路の構成について説明する。図１は、本実施の形態にかかる動的再構成回路の構成を示すブロック図である。図１のように、動的再構成回路１００は、シーケンサ１０１と、条件分岐信号生成器１０２と、コンフィグレーションメモリ１０３と、ＰＥアレー１１０とを含んで構成されている。
【００２９】
シーケンサ１０１は、ユーザや上位プログラムからの指示に応じたコンテキストを実行させるためのＰＣ値を出力する。シーケンサ１０１から出力されたＰＣ値は、コンフィグレーションメモリ１０３に入力される。また、シーケンサ１０１は、ＰＣ値とともに、ＰＥアレー１１０にコンフィグレーションデータ読み込み要求信号としてＦＥＴＣＨＥＮを出力する。
【００３０】
さらに、シーケンサ１０１は、コンテキストの切り替えをトリガに条件分岐信号生成部１０２に条件分岐信号（ｐｒｅｄｉｃａｔｅ信号；以下、「ＰＲＤＩ（入力信号の場合）／ＰＲＤＯ出力信号の場合」という）の生成指示を出力する。このＰＲＤＩは、２ビットの信号であり、コンテキスト切り替えの開始および終了の指示に利用する。具体的には、ＰＲＤＩが「１１」であれば条件の成立、「１０」であれば条件の不成立、「０ｘ」であれば無効をあらわす。
【００３１】
条件分岐信号生成器１０２は、シーケンサ１０１から入力されたＰＲＤＩの生成指示に応じて、ＰＲＤＩを生成する。生成されたＰＲＤＩは、ＰＥアレー１１０のネットワーク回路１１３に出力される。
【００３２】
コンフィグレーションメモリ１０３には、あらかじめ記述されたコンテキストが格納されており、シーケンサ１０１から入力されたＰＥ値に応じて、該当するコンテキストを読み出す。そして、コンフィグレーションメモリ１０３からは、読み出されたコンテキストに記述されたコンフィグレーションデータ（ｃｏｎｆｉｇｕｒａｔｉｏｎ；ＣＦＧ）が、後述するＰＥアレー１１０に配置されているＰＥ１１１（ＰＥ１１１ａ〜ＰＥ１１１ｃ）や、カウンタ回路１１２（カウンタ回路１１２ａ〜１１２ｂ）に出力される。
【００３３】
ＰＥアレー１１０は、コンフィグレーションメモリ１０３によって読み出されたコンテキストに応じた処理を実行させる機能部であり、演算子として複数のＰＥ１１１（たとえばＰＥ１１１ａ〜ＰＥ１１１ｃ）と、カウンタ回路１１２（たとえばカウンタ回路１１２ａ〜１１２ｂ）が配置されているとともに、各演算子の入出力値（ｄａｔａ）の接続を切り替える可変接続部としてネットワーク回路１１３を備えている。
【００３４】
ＰＥ１１１は、コンテキストの記述に応じて所定の演算をおこなう。動的再構成回路１００によってあるコンテキストを実行する場合には、ＰＥ１１１には、コンフィグレーションメモリ１０３から実行するコンテキストに記述されたコンフィグレーションデータが入力される。その後、ＰＥ１１１は、コンテキストが切り替わるまで、入力されたコンフィグレーションデータに応じた演算処理をおこなう。
【００３５】
カウンタ回路１１２は、コンテキストの記述に応じて所定のループ処理をおこなうとともに、このループ処理の実行回数をカウントする。このとき、カウンタ回路１１２によるカウント結果は、ＰＲＤＩとして、ネットワーク回路１１３に出力される。
【００３６】
（パラメータ設定）
つぎに、コンフィグレーションデータによるパラメータ設定について説明する。なお、一般的な動的再構成回路ではＰＥによって実行させる演算内容に応じて様々なパラメータ設定があるが、ここでは、動的再構成回路１００の特徴となるカウンタ回路１１１２によって実行させるループ処理のパラメータ設定に限定して説明する。
【００３７】
図２は、カウンタ回路のコンフィグレーションデータのソースコードの一例を示す説明図である。図２のソースコード２００には、基本的なｆｏｒ−ｌｏｏｐ文が記述されている。このｆｏｒ−ｌｏｏｐ文の構成のうち、（ａ），（ｂ），（ｃ），（ｄ）が可変のパラメータとしてコンテキストごとに対応するコンフィグレーションデータが設定される。
【００３８】
（ａ）カウンタの開始値（ループ処理の開始の初期値）と、
（ｂ）ループ成立判定のモード（ループ実行回数がループ処理の回数の上限を満足するか否かを判定する判定式）；｛＜，＞，＜＝，＞＝｝の４つの成立判定のいずれかに切り替える
（ｃ）ループ変数の終了値
（ｄ）ループ変数のインクリメント値（（ｂ）の判定式を満足しなかった場合カウント回数に加算する値）；負の数を指定することでデクリメントカウンタになる
【００３９】
なお、（ａ）の設定は後述するカウンタ回路の内部メモリ「Ｓｔａｒｔ」、（ｂ）の設定は後述するカウンタ回路の内部メモリ「ＣＭＰ−ｍｏｄｅ」、（ｃ）の設定は後述するカウンタ回路の内部メモリ「Ｅｎｄ」、（ｄ）の設定は後述するカウンタ回路１１２の内部メモリ「Ｓｔｅｐ」にそれぞれ格納する。
【００４０】
また、ハードウェア機能として下記の（ｅ），（ｆ），（ｇ），（ｈ）の機能切り替えをコンフィグレーションデータによって設定できる。
【００４１】
（ｅ）カウンタの起動方法
どのようなタイミングでカウンタ回路１１２を起動させるため設定であり、具体的には、自動起動と、トリガモードとの２種類の設定をおこなうことができる。自動起動は、シーケンサ１０１から出力されたＣＦＧ読み込み要求信号（ＦＥＴＣＨＥＮ）を受け付けてから指定サイクル後に動作を開始させるように設定する方法である。また、トリガモードは、条件分岐信号生成部１０２から出力されたＰＲＤＩが成立をあらわす「１１」であった場合に、ＰＲＤＩの入力をトリガとして動作を開始させる方法である。なお、トリガモードによる起動方法を採用する場合には、後述するカウンタ回路１１２の内部メモリ「Ｔｒｉｇｇｅｒ−ｍｏｄｅ」を有効状態に設定する。
【００４２】
（ｆ）有効カウンタ出力のインターバル設定
カウンタ回路１１２によるカウント実行を１クロックごとに実行させるか、もしくは所定のクロックごとに実行させるかの設定である。上述のように、１クロックごとにカウンタを動作させることも可能だが、インターバル設定をおこなうことにより、一定の間隔を置いてカウンタを動作させることもできる。なお、インターバル設定をおこなう場合には、後述するカウンタ回路１１２の内部メモリ「Ｉｎｔｅｒｖａｌ」に該当するコンフィグレーションデータを格納する。
【００４３】
（ｇ）出力モード設定
カウンタ回路１１２によって実行するカウント処理において、どのような条件の場合に、カウンタ回路１１２から外部（他のＰＥ１１１やカウンタ回路１１２もしくは他のクラスタ）への出力をおこなうかを設定する。具体的には、ノーマル出力モードとカスケード出力モードとの二つの出力モードが用意されており、後述するカウンタ回路１１２の内部メモリ「Ｏｕｔｐｕｔ−ｍｏｄｅ」に格納されたコンフィグレーションデータに基づいてモードを切り替える。
【００４４】
［ノーマル出力モード］
ループ処理動作時には成立を示すＰＲＤＩ「１１」を出力し、ループ条件成立時にはＰＲＤＩ「１０」を出力する。また、ループ処理が停止時にはＰＲＤＩ「００」を出力する。また、後段に他のカウンタ回路１１２が接続されている場合には、アドレスカウンタを停止させるため、ループ条件成立時に、ＰＲＤＩ「１０」とともに、カスケード信号を１パルスアサートする。
【００４５】
［カスケード出力モード］
カスケード出力モードは、後段に同一のカウンタ回路１１２がカスケード接続されている場合に使用する。ループ処理動作時にはＰＲＤＩ「１０」を出力し、カウント処理によってカウント数が同カウンタ回路１１２のループパラメータの初期値に達したとき、ＰＲＤＩ「１１」を出力する。また、ループ処理停止時にはＰＲＤＩ「００」を出力する。
【００４６】
（ｈ）入力モード設定
カウンタ回路１１２が、どのような入力を受け付けた場合にカウント処理を実行するかを設定する。具体的には、ノーマル入力モードとカスケード入力モードとの二つの入力モードが用意されており、後述するカウンタ回路１１２の内部メモリ「Ｉｎｐｕｔ−ｍｏｄｅ」に格納されたコンフィグレーションデータに基づいてモードを切り替える。
【００４７】
［ノーマル入力モード］
カウンタ回路１１２にＰＲＤＩ「１１」が入力された場合にカウント処理を開始し、インターバル設定に従い、クロックに同期したカウント処理を進める。なお、上述した（ｅ）の設定により自動起動に切り替えることもできる。
【００４８】
［カスケード入力モード］
カウンタ回路にＰＲＤＩ「１１」が入力されると、カウント値を更新する。また、ＰＲＤＩ「１０」が入力されるとカウント値の更新を停止する。また、他のカウンタ回路１１２にカスケード接続されている場合、前段のカウンタ回路１１２（カスケード出力モードに設定されたカウンタ回路）から出力されるＰＲＤＩを受け付けて、アドレスカウンタを進めるために使用する。
【００４９】
（カウンタ回路の構成）
つぎに、カウンタ回路１１２の構成について説明する。図３は、本実施の形態にかかるカウンタ回路の構成を示すブロック図である。図３のように、カウンタ回路１１２は、コンフィグレーションレジスタ部３０１と、有効サイクル検出部３０２と、ループ開始値・終了値書き換え部３０３と、ループ制御部３０４と、出力レジスタ部３０５とを含んで構成される。また、カウンタ回路１１２の各機能部３０１〜３０５には下記のような端子が接続されている。
【００５０】
（入力端子）
１−１．ＰＲＤＩ
条件分岐信号（ＰＲＤＩ）の入力を受け付ける端子である。条件分岐信号「１１」が入力されると成立と判断し、入力モード設定（後述する内部レジスタの「Ｉｎｐｕｔ−ｍｏｄｅ」の設定）にしたがってカウンタ処理を実行させる。
【００５１】
１−２．ＤＩ０／ＶＩ０，ＤＩ１／ＶＩ１
ＤＩはデータ入力を受け付ける端子であり、ＶＩは、ＤＩに入力されたデータの有効／無効を示すｖａｌｉｄデータの入力を受け付ける端子である。ｖａｌｉｄデータが「１」のとき、同時に入力されたＤＩのデータは有効であると判断する。
【００５２】
１−３．ＣＩ
カスケード信号の入力を受け付ける端子である。このカスケード信号がアサート（Ｈｉｇｈ状態の信号入力）されたときループカウントを終了する。また、ループカウントが停止されると、つぎのコンフィグレーションデータが設定されるまでループカウント再開は不可能となる。
【００５３】
１−４．ＣＦＧ，ＦＥＴＣＨＥＮ
ＣＦＧはコンフィグレーションデータの入力を受け付ける端子である。また、ＦＥＴＣＨＥＮは、ＣＦＧ読み込み要求信号（ＦＥＴＣＨＥＮ）の入力を受け付ける端子であり、起動要求信号がアサートされたときのみ、ＣＦＧに入力されたコンフィグレーションデータを後述する内部レジスタに取り込む。
【００５４】
（出力端子）
２−１．ＰＲＤＯ
条件分岐信号（ｐｒｅｄｉｃａｔｅ：ＰＲＤＯ）を出力する端子であり、ループ処理の動作中／停止時／ループ条件成立時のそれぞれの状態に応じ、出力モード設定（後述する内部レジスタの「Ｏｕｔｐｕｔ−ｍｏｄｅ」の設定）にしたがって条件分岐信号を出力する。
【００５５】
２−２．ＤＯ／ＶＯ
ＤＯはカウント値を示すデータを出力する端子である。また、ＶＯはＤＯから出力されるカウント値の有効／無効を示すｖａｌｉｄ信号を出力する端子である。なお、カウンタ処理の動作時、ｖａｌｉｄ信号は「１」となり、カウンタ停止時、ｖａｌｉｄ信号は「０」となる。
【００５６】
２−３．ＣＯ
カスケード信号を出力する端子であり、出力モードがノーマル出力モードに設定されている場合には、ループ条件が成立すると、カスケード信号を１パルスアサートする。また、出力モードがカスケード出力モードに設定されている場合には、後段に接続されているカウンタ回路の入力信号の出力端子となる。なお、カスケード出力モードの際に出力されるカスケード信号は、後段のカウンタ回路のカウンタ処理を停止させるために使用する。
【００５７】
つぎに、各機能部３０１〜３０５について説明する。まず、コンフィグレーションレジスタ部３０１は、コンテキスト開始時に各ＰＥに供給される１パルスのＦＥＴＣＨＥＮ信号をイネーブル信号として、上述したＣＦＧ端子から入力されたコンフィグレーションデータを以下の内部レジスタに取り込む。内部レジスタとは、具体的には、「Ｉｎｐｕｔ−ｍｏｄｅ」，「Ｉｎｔｅｒｖａｌ」，「Ｔｒｉｇｇｅｒ−ｍｏｄｅ」，「Ｓｔｅｐ」，「Ｅｎｄ」，「ＣＭＰ−ｍｏｄｅ」，「Ｏｕｔｐｕｔ−ｍｏｄｅ」，「Ｓｔａｒｔ」の各レジスタである。なお、これらの内部レジスタは、フリップフロップで構成される。
【００５８】
有効サイクル検出部３０２は、コンフィグレーションレジスタ部３０１の内部レジスタのうちの「Ｉｎｐｕｔ−ｍｏｄｅ」，「Ｉｎｔｅｒｖａｌ」，「Ｔｒｉｇｇｅｒ−ｍｏｄｅ」に取り込まれたコンフィグレーションデータの設定にしたがって、出力レジスタ部３０５にレジスタ更新のイネーブル信号（ｏｕｔｐｕｔ−ｅｎａｂｌｅ）を出力する。
【００５９】
具体的には、有効サイクル検出部３０１は、内部メモリ「Ｉｎｐｕｔ−ｍｏｄｅ」から出力された設定内容にしたがって、所定の条件の成立を示すＰＲＤＩ「１１」が入力された場合の動作を下記のように切り替える。なお、「１１」以外のＰＲＤＩが入力された場合には動作しない。
【００６０】
［ノーマル入力モードの場合］
ノーマル入力モードの場合、有効サイクル検出部３０２は、シーケンサ１０１から処理内容の成立を示すＰＲＤＩ「１１」が入力されると、カウンタ処理を開始する。カウンタ動作開始後は、クロックに同期し、Ｉｎｔｅｒｖａｌに設定されたステップのタイミングでイネーブル信号（ｏｕｔｐｕｔ−ｅｎａｂｌｅ）を出力する。なお、コンフィグレーションレジスタ部３０１の「Ｔｒｉｇｇｅｒ−ｍｏｄｅ」が自動起動に設定されている場合には、上述した設定は無効となる。
【００６１】
［カスケード入力モードの場合］
カスケード入力モードの場合、有効サイクル検出部３０１は、上段に接続されているカウンタ回路１１２から所定の条件の成立を示すＰＲＤＩ「１１」が入力されるとループ変数を更新するためのイネーブル信号（ｏｕｔｐｕｔ−ｅｎａｂｌｅ）を出力する。
【００６２】
ループ開始値・終了値書き換え部３０３は、カウンタ処理が停止したときにデータ入力が有効な場合（ｖａｌｉｄ信号＝「１」のとき）、そのパラメータを内部レジスタ「Ｓｔａｒｔ」と「Ｅｎｄ」とにそれぞれ書き込む。なお、初期設定ではＤＩ０を内部レジスタ「Ｓｔａｒｔ」に、ＤＩ１を内部レジスタ「Ｅｎｄ」の書き換え用に割り当てているが、コンフィグレーションデータの設定により割り当てを入れ替えることもできる。
【００６３】
ループ制御部３０４は、コンフィグレーションデータによってコンフィグレーションレジスタ部３０１の内部レジスタ「Ｓｔｅｐ」に設定された値に応じて、カウント値を次状態に更新する。また、同じく内部レジスタ「ＣＭＰ−ｍｏｄｅ」の設定にしたがってループ処理の終了判定をおこなう。この判定処理によってループ処理が終了した場合には、ループエンド信号（ｌｏｏｐ−ｅｎｄ）を出力レジスタ部３０５に出力する。
【００６４】
図４は、ループ制御部の構成例を示すブロック図である。図４を用いてループ制御部３０４によって実行されるｆｏｒループ制御と条件判定について説明する。図４のように、ループ制御部３０４には、演算子４０１〜４０５が配置されている。
【００６５】
演算子４０１では、ループ変数ＤＯと、インクリメント値Ｓｔｅｐとが入力され、加算処理がおこなわれる。演算子４０１による加算結果は、ループパラメータ信号（ｌｏｏｐ−ｐａｒａｍ）として出力されるとともに、演算子４０２にも出力される。演算子４０２では、演算子４０１による加算結果と、ループ変数の終了値Ｅｎｄとの加減算がおこなわれ、演算結果は、演算子４０３および演算子４０４に出力される。
【００６６】
演算子４０２による演算結果が「０」の場合には、演算子４０３からフラグが出力され、演算結果が「０以外」の場合には、演算子４０４からフラグが出力される。演算子４０３もしくは演算子４０４のいずれかから出力されたフラグは、演算子４０５に入力される。
【００６７】
演算子４０５では、ループ成立判定モードを指定するＣＭＰ−ｍｏｄｅに応じて、入力されたフラグがループ成立条件を満足するか否かを判断する。演算子４０５によってループ成立条件を満足すると判断された場合には、ループエンド信号（ｌｏｏｐ−ｅｎｄ）が出力レジスタ部３０５に出力される。
【００６８】
出力レジスタ部３０５は、内部レジスタ「ＤＯ」，「ＶＯ」，「ＣＯ」，「ＰＲＤＤＯ」が用意されている。有効サイクル検出部３０２からイネーブル信号（ｏｕｔｐｕｔ−ｅｎａｂｌｅ）が入力された場合に、ループ制御部３０４からのループパラメータ信号（ｌｏｏｐ−ｐａｒａｍ）を「ＤＯ」に格納し、ＤＯとして、「ＶＯ」に格納されるｖａｌｉｄ信号（ＶＯ）とともに外部へ出力する。また、ループパラメータ信号（ｌｏｏｐ−ｐａｒａｍ）がアサートされていない場合には、「ＤＯ」の出力値の更新は停止し、同時に出力されるｖａｌｉｄ信号の値も「０」となる。
【００６９】
また出力レジスタ部３０５は、ループパラメータ信号（ｌｏｏｐ−ｐａｒａｍ）がアサートされている場合には、「ＰＲＤＤＯ」および「ＣＯ」に格納されたＰＲＤＩおよびＣＯの出力は、コンフィグレーションレジスタ部３０１の内部レジスタ「Ｏｕｔｐｕｔ−ｍｏｄｅ」設定に依存する。また、ループパラメータ信号（ｌｏｏｐ−ｐａｒａｍ）信号がアサートされない場合には、「ＰＲＤＤＯ」の出力値はすべてＰＲＤＩ「００」となる。以下、出力モードの設定ごとの処理について説明する。
【００７０】
［ノーマル出力モード］
ノーマル出力モードの場合、出力レジスタ部３０５は、ループエンド信号（ｌｏｏｐ−ｅｎｄ）がアサートされると、「ＰＲＤＤＯ」よりＰＲＤＩ「１１」を出力するとともに、ＣＯをアサートする。また、ループエンド信号（ｌｏｏｐ−ｅｎｄ）がアサートされていない場合には、「ＰＲＤＤＯ」よりＰＲＤＩ「１０」を出力する。
【００７１】
［カスケード出力モード］
カスケード出力モードの場合、出力レジスタ部３０５は、ループエンド信号（ｌｏｏｐ−ｅｎｄ）がアサートされると、出力レジスタ部３０５の「ＤＯ」に格納する値を、コンフィグレーションレジスタ部３０１の内部レジスタ「Ｓｔａｒｔ」の値に初期化する。また、「ＤＯ」の格納値をコンフィグレーションレジスタ部３０１の内部レジスタ「Ｓｔａｒｔ」に初期化した場合には、「ＰＲＤＤＯ」よりＰＲＤＯ「１１」を出力する。また、上述した動作以外のときには、「ＰＲＤＤＯ」よりＰＲＤＯ「１０」を出力する。
【００７２】
（カウンタ回路の動作）
つぎに、カウンタ回路１１２の入力モード（ノーマル、カスケード）、出力モード（ノーマル、カスケード）それぞれの設定に応じた具体的な動作内容について説明する。なお、以下説明に利用する図５〜７のタイミングチャートでは、便宜上２ビット信号の出力は「２’ｂｘｘ」と表記する。
【００７３】
・ノーマル入力モード−ノーマル出力モード
図５は、ノーマル入力モード−ノーマル出力モードのカウンタ回路の動作を示すタイミングチャートである。ここでは、ループ処理として「ｆｏｒ（ｉ＝０；ｉ＜１０２４；ｉ＋＋）」と記述されたシングルループの制御をおこなう場合のカウンタ回路１１２の動作を示す。ここで、インターバル設定は、０とすることで毎クロック毎にカウント値が更新される。
【００７４】
図５のタイミングチャートでは、クラスタ内で生成する制御信号である２ビット信号ＰＲＤＩ「２’ｂｘｘ」が成立をあらわす「１１（２ｂ’１１）」となった場合にＰＲＤＩがトリガとなり、ｆｏｒループカウント動作が開始される。
【００７５】
ノーマル入力モード−ノーマル出力モードに設定されたカウンタ回路の動作の特徴としては、ＰＲＤＩ「１１」でカウント処理の動作を開始させ（タイミング５０１）、カウント値の有効・無効はｖａｌｉｄ信号（ＶＯ）の値で判断する。具体的にはカウント動作中はＶＯを「Ｈｉｇｈ」状態で出力させる。また、カウント処理の出力のインターバル設定を０とすることで、連続してアドレスカウントを実行させることができる。
【００７６】
また、カウント処理実行中はＰＲＤＩ「１１」を出力し、ループ条件成立時にはＰＲＤＩ「１０」を出力する。さらに、カウント処理の停止タイミングでは、カスケード信号（ＣＯ）を１パルスアサートする。
【００７７】
・ノーマル入力モード−カスケード出力モード
図６は、ノーマル入力モード−カスケード出力モードのカウンタ回路の動作を示すタイミングチャートである。ここでは、ループ処理として「ｆｏｒ（ｉ＝０；ｉ＜３；  ｉ＋＋）｛…｝」と記述されているとする。なお、カスケード出力モードは後段に同じｆｏｒループ処理をおこなうカウンタ回路１１２を接続する場合に設定される。すなわち、カスケード出力モードに設定することによって、後段のカウンタ回路１１２をＰＲＤＩ「１１」によって１ステップ進めることができる。
【００７８】
ノーマル入力モード−カスケード出力モードのカウンタ回路の動作の特徴としては、ループ処理の動作中はループ初期値のタイミングでＰＲＤＩ「１１」を出力する。ループ処理の動作以外の動作時にはＰＲＤＩ「１０」を出力する。また、動作時にはＰＲＤＩ「００」を出力する。そして、カスケード信号入力（ＣＩ）がアサートされたとき（タイミング６０１）にカウント処理を停止させる。
【００７９】
・カスケード入力モード−ノーマル出力モード
図７は、カスケード入力モード−ノーマル出力モードのカウンタ回路の動作を示すタイミングチャートである。ここでは、ループ処理として「ｆｏｒ（ｉ＝０；ｉ＜３；ｉ＋＋）｛…｝」と記述されているとする。なお、カスケード入力モードは、同じｆｏｒループ処理をおこなうカウンタ回路１１２のカスケード出力モードに設定されたカウンタから出力されたＰＲＤＩを受け付けて外部ループの動作をおこなう場合に設定する。
【００８０】
カスケード入力モード−ノーマル出力モードのカウンタ回路の動作特徴としては、前段に接続されたカウンタ回路１１２からＰＲＤＩ「１１」が入力されると、カウント値を更新する。また、ＰＲＤＩ「１０」が入力されると、カウント値は保持され、ＰＲＤＩ「０ｘ」が入力されるとカウント値は保持される。しかし、ＰＲＤＩ「０ｘ」の入力時はｖａｌｉｄ信号（ＶＯ）が０となるため無効出力となる。また、ループ条件成立時は、にカスケード信号（ＣＩ）を出力する。
【００８１】
以上説明したように、カウンタ回路１１２では、コンテキストに基づいて、コンフィグレーションレジスタ部３０１によって出力信号の出力元、出力信号の出力先そして出力信号を前記出力先に出力する条件からなるループ処理の内容が設定される。設定されたループ処理は、ループ制御部３０４によって実行される。そして、出力レジスタでは、実行されたループ処理の実行回数をカウントし、カウントされた実行回数および前記条件に基づいて、出力信号を前記出力先に出力される。
【００８２】
さらに、カウンタ回路１１２は、有効検出部３０２によってＰＲＤＩ「１１」を受け付けると、前記コンテキストをあらかじめ設定されたつぎのコンテキストに基づいて、動的再構成されたＰＥの集合からの出力信号の出力元、出力信号の出力先、および前記出力信号を出力先に出力する条件からなるループ処理の内容を設定する。また、ループ制御部３０４と出力カウンタ部３０５とでは、切り替えられたコンテキストによって内容が設定されたループ処理を実行する設定に応じて、あらたなループ処理を実行させことができる。
【００８３】
（実施例）
つぎに、上述したような本実施の形態にかかるカウンタ回路を備えた動的再構成回路の具体的な実施例について説明する。ここでは、実施例として、Ｃ言語によって多重ループ処理が記述された場合、逐次ループ処理が記述された場合の制御内容についてそれぞれ説明する。
【００８４】
（１）多重ループ処理の制御
まず、多重ループ制御を実装する場合について説明する。図８は、３重ループ処理が記述されたソースコードの一例を示す説明図である。また、図９は、カウンタ回路による３重ループ処理の構成とループパラメータとを示す説明図である。図８のソースコード８００のような記述がなされた場合、図９のような動的再構成回路９００が構成される。
【００８５】
動的再構成回路９００は、ループ０〜ループ２の３つのループカウンタによって構成されて、ループパラメータ９１０が設定される。このときループ０にはループ１がカスケード接続され、ループ１にはループ２がカスケード接続されている。これらのループ０〜２の入出力モードは、下記の様な設定になっている。
【００８６】
［各カウンタの入出力モード設定］
ループ０：ノーマル入力モード／カスケード出力モード
ループ１：カスケード入力モード／カスケード出力モード
ループ２：カスケード入力モード／ノーマル出力モード
【００８７】
図１０は、３重ループ処理の入出力値を示すタイミングチャートである。なお、図１０のタイミングチャートにおいては、ループ０〜ループ２のＲＰＤＩおよびＰＲＤＯは所定の条件の成立をあらわす「１１」の場合は、Ｔ（Ｔｒｕｅ）を、非成立をあらわす「１０」の場合には、Ｆ（Ｆａｌｓｅ）、無効をあらわす「０ｘ」の場合にはＮ（Ｉｎｖａｌｉｄ）を示す。
【００８８】
図１０のタイミングチャートに示すように、ループ０では、ループ変数ｋで記述されている最内ループのカウント処理がおこなわれる。ループ変数ｊで記述されているループ１では、ループ０からＴが出力されるとループカウントが開始される。このループ１もループ成立条件を満足すると、ループ変数ｉで記述されるループ２にＴを出力する。このループ２が最外ループとなる。
【００８９】
（２）ループ逐次処理の制御
つぎに、特定のループ処理が完了した後、つぎのループ処理を開始する逐次処理を実装する場合について説明する。図１１は、カウンタ回路によるループ逐次処理の構成とループパラメータの一例を示す説明図である。また、図１２は、ループ逐次処理の入出力値を示すタイミングチャートである。
【００９０】
図１１の動的再構成回路１１００は、ループ０、ループ１の２つのループカウンタによって構成されて、ループパラメータ１１１０が設定される。これらループ０，１の入出力モードは、下記の様な設定になっている。このループ０から出力されたＰＲＤＯを、ループ１のＰＲＤＩとして受け渡しをおこなう場合、ＰＲＤＩのＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）を反転する必要がある。これは、図１２のクロック（ｃｌｏｃｋ）９に示すように、ループ０のループ条件が成立するまでループ０のループ処理を非成立に設定するためである。
【００９１】
［各カウンタの入出力モード設定］
ループ０：ノーマル入力モード／ノーマル出力モード
ループ１：ノーマル入力モード／ノーマル出力モード
【００９２】
（３）ループパラメータの書き換え処理
つぎに、ループパラメータの書き換え処理について説明する。図１３は、ループパラメータの書き換え処理の一例を示す説明図である。図１３の動的再構成回路１３００のループ１およびループ２が配置され、ループ２の出力先にはＰＥが接続されており、ＰＥによる演算結果は、ループ１に入力される。また、ループ１，２およびＰＥには、ループパラメータ１３１０が設定される。
【００９３】
したがって、ＤＩ０およびＤＩ１に有効データが入力された場合には、ループ１，２の内部で設定されたループパラメータの書き換え処理をカウント処理と連動して実行させることができる。このような書き換え処理を備えることによって、Ｃ言語によって記載された汎用性の高い記述をそのまま動的再構成回路１３００に適用させることができる。
【００９４】
以上説明したように、動的再構成回路およびループ処理制御方法によれば、特定のアプリケーションに限定されず、高級言語によって記述されたループ処理を適用できることから、汎用性の高いプログラムの実装が可能となる。また、条件分岐信号（ＰＲＤＩ）の値をカウント処理の開始／終了に反映させることによってコンテキストの切り替えを適切に実現することができる。
【産業上の利用可能性】
【００９５】
以上のように、本発明にかかる動的再構成回路およびループ処理制御方法は、汎用性の高い高級言語を適用させる機器に有用であり、特に、限られたハードウェア資源で多様な機能の実現が必要とされる携帯端末機器に適している。
【図面の簡単な説明】
【００９６】
【図１】本実施の形態にかかる動的再構成回路を示すブロック図である。
【図２】カウンタ回路のコンフィグレーションデータのソースコードの一例を示す説明図である。
【図３】本実施の形態にかかるカウンタ回路の構成を示すブロック図である。
【図４】ループ制御部の構成例を示すブロック図である。
【図５】ノーマル入力モード−ノーマル出力モードのカウンタ回路の動作を示すタイミングチャートである。
【図６】ノーマル入力モード−カスケード出力モードのカウンタ回路の動作を示すタイミングチャートである。
【図７】カスケード入力モード−ノーマル出力モードのカウンタ回路の動作を示すタイミングチャートである。
【図８】３重ループ処理が記述されたソースコードの一例を示す説明図である。
【図９】カウンタ回路による３重ループ処理の構成とループパラメータとを示す説明図である。
【図１０】３重ループ処理の入出力値を示すタイミングチャートである。
【図１１】カウンタ回路によるループ逐次処理の構成とループパラメータの一例を示す説明図である。
【図１２】ループ逐次処理の入出力値を示すタイミングチャートである。
【図１３】ループパラメータの書き換え処理の一例を示す説明図である。
【符号の説明】
【００９７】
１００，９００，１１００，１３００  動的再構成回路
１０１  シーケンサ
１０２  条件分岐信号生成器
１０３  コンフィグレーションメモリ
１１０  ＰＥアレー
１１１  ＰＥ（プロセッシングエレメント）
１１２  カウンタ回路
【図１】
0005141151.tif 000002
【図２】
0005141151.tif 000003
【図３】
0005141151.tif 000004
【図４】
0005141151.tif 000005
【図５】
0005141151.tif 000006
【図６】
0005141151.tif 000007
【図７】
0005141151.tif 000008
【図８】
0005141151.tif 000009
【図９】
0005141151.tif 000010
【図１０】
0005141151.tif 000011
【図１１】
0005141151.tif 000012
【図１２】
0005141151.tif 000013
【図１３】
0005141151.tif 000014