(57)【特許請求の範囲】
【請求項１】
再構成可能なプロセッシングエレメント（以下、「ＰＥ」という）の集合を、前記ＰＥの処理内容と前記ＰＥ間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路に配置された前記コンテキストによって指定されたＰＥの動作をカウントするカウンタの動作を制御するカウンタ制御回路であって、
前記動的再構成回路に適応中のコンテキストにおいて、条件分岐演算を実行しているＰＥから、次回のコンテキストにおける前記カウンタの動作指示信号が出力されると、当該動作指示信号を保持する保持手段と、
前記保持手段に保持された動作指示信号を前記カウンタに出力する出力手段と、
前記動的再構成回路に適応中のコンテキストが前記次回のコンテキストに切り替わると、前記出力手段に前記動作指示信号を出力させる制御手段と、
を備えることを特徴とするカウンタ制御回路。
【請求項２】
前記保持手段は、前記動的再構成回路に適応中のコンテキストにおいて、ループ処理演算を実行しているＰＥから、前記カウンタの動作指示信号が出力されると、当該動作指示信号を保持し、
前記制御手段は、前記ループ処理演算を実行しているＰＥの演算が終了すると、前記出力手段に前記ループ処理演算を実行しているＰＥからの動作指示信号を出力させることを特徴とする請求項１に記載のカウンタ制御回路。
【請求項３】
前記保持手段は、前記制御手段の制御によって、前記出力手段によって前記動作指示信号が出力されると、前記動作指示信号を破棄することを特徴とする請求項１に記載のカウンタ制御回路。
【請求項４】
前記出力手段による前記動作指示信号の出力を禁止させる出力禁止設定を受け付ける設定手段を備え、
前記制御手段は、前記設定手段によって出力禁止設定が受け付けられると、前記動的再構成回路に適応中のコンテキストから前記次回のコンテキストに切り替わった場合に、前記出力手段による前記動作指示信号の出力を禁止することを特徴とする請求項１に記載のカウンタ制御回路。
【請求項５】
前記出力手段による前記動作指示信号の出力を禁止させる出力禁止設定を受け付ける設定手段を備え、
前記制御手段は、前記設定手段によって出力禁止設定が受け付けられると、前記出力手段による前記適応中のコンテキストのループ処理演算が終了した場合に、前記出力手段による、前記動作指示信号の出力を禁止することを特徴とする請求項２に記載のカウンタ制御回路。
【請求項６】
前記動的再構成回路には、前記適応中のコンテキストに含まれる条件分岐演算の分岐結果に対応した複数のカウンタが備えられ、
前記制御手段は、前記動的再構成回路に適応中のコンテキストが前記次回のコンテキストに切り替わった場合、前記条件分岐演算を実行しているＰＥからの動作指示信号を、前記複数のカウンタの中から前記分岐結果に対応したカウンタに出力させることを特徴とする請求項１〜５のいずれか一つに記載のカウンタ制御回路。
【請求項７】
再構成可能なプロセッシングエレメント（以下、「ＰＥ」という）の集合を、前記ＰＥの処理内容と前記ＰＥ間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路であって、
前記コンテキストによって指定されたＰＥの動作をカウントするカウンタと、
前記カウンタの動作を制御するカウンタ制御回路と、を備え、
前記カウンタ制御回路は、
前記動的再構成回路に適応中のコンテキストにおいて、条件分岐演算を実行しているＰＥから、次回のコンテキストにおける前記カウンタの動作指示信号が出力されると、当該動作指示信号を保持する保持手段と、
前記保持手段に保持された動作指示信号を前記カウンタに出力する出力手段と、
前記動的再構成回路に適応中のコンテキストが前記次回のコンテキストに切り替わると、前記出力手段に前記動作指示信号を出力させる制御手段と、を備えることを特徴とする動的再構成回路。
【請求項８】
前記保持手段は、前記動的再構成回路に適応中のコンテキストにおいて、ループ処理演算を実行しているＰＥから、前記カウンタの動作指示信号が出力されると、当該動作指示信号を保持し、
前記制御手段は、前記ループ処理演算を実行しているＰＥの演算が終了すると、前記出力手段に前記ループ処理演算を実行しているＰＥからの動作指示信号を出力させることを特徴とする請求項７に記載の動的再構成回路。
【請求項９】
前記保持手段は、前記制御手段の制御によって、前記出力手段によって前記動作指示信号が出力されると、前記動作指示信号を破棄することを特徴とする請求項７に記載の動的再構成回路。
【請求項１０】
再構成可能なプロセッシングエレメント（以下、「ＰＥ」という）とカウンタとの集合を、前記ＰＥの処理内容と前記ＰＥ間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより、任意の処理を実行させる動的再構成回路が、前記カウンタが前記コンテキストによって指定されたＰＥの動作をカウントすることにより実行されるループ処理を制御するループ処理制御方法であって、
前記動的再構成回路に適応中のコンテキストにおいて、ループ処理演算を実行しているＰＥから出力された次回のコンテキストにおける前記カウンタの動作指示信号を前記保持手段が保持する保持工程と、
前記ループ処理演算を実行しているＰＥからの動作指示信号を、シーケンサが検出する検出工程と、
前記検出工程によって前記次回のコンテキストへの切り替えが検出されると、前記保持手段に保持された動作指示信号を前記カウンタに出力手段が出力する出力工程と、
を含むことを特徴とするループ処理制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、再構成可能なプロセッシングエレメント（以下、「ＰＥ」という）の集合を、ＰＥの処理内容とＰＥ間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路に配置されたカウンタ制御回路と、動的再構成回路およびループ処理制御方法に関する。
【背景技術】
【０００２】
従来より、動的再構成回路（ダイナミックリコンフィギャラブル回路：以下、「リコンフィグ回路」とよぶ）は、動作中にリコンフィグ回路内部のＰＥへの命令内容やＰＥ間の接続を変更する機能を備えている。リコンフィグ回路内部のＰＥへの命令内容やＰＥ間の接続をあらわす情報をコンテキストとよび、構成内容を変更することをコンテキスト切り替えという。
【０００３】
リコンフィグ回路は、コンテキストを切り替えることによって、ＰＥを時間軸方向に分割して共用することができるため、リコンフィグ回路全体のハードウェア規模を削減することができる。また、リコンフィグ回路は、複数のクラスタから構成されているものもある（たとえば、下記特許文献１参照。）。このような、リコンフィグ回路の場合は、クラスタ単位によってコンテキスト切り替えの制御をおこなうことができる。クラスタ内では、ステートマシンであるシーケンサによりコンテキストの切り替え制御をおこない、クラスタ内部のＰＥの演算結果、つぎに実行するコンテキストを変更することができる。
【０００４】
また、リコンフィグ回路へのアプリケーションを実装にはＣ言語によって記述されたソースコードを、リコンフィグ回路用のコンパイラによってコンパイルして使用することが一般的である。このとき、Ｃ言語で記述された処理のうち、特に時間を要する制御として、ループ制御が挙げられる。そこで、リコンフィグ回路では、ループ制御をパイプライン演算することで、その処理時間を短縮できるような構成を備えている。具体的には、リコンフィグ回路にカウンタを配置し、このカウンタからの出力を起点として、ループ制御を含んだ演算の制御をおこなうことができる。
【０００５】
【特許文献１】特開２００６−１８５１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したように、リコンフィグ回路によってパイプライン演算をおこなう場合には、カウンタにカウント開始指示を与えることによってそのとき適用されているコンテキストの演算を開始させ、同じくカウンタによるカウントが終了すると、コンテキストの演算終了の指示となる。
【０００７】
しかしながら、コンテキストの構成内容によっては、コンテキスト切り替え時に、つぎに開始指示をおこなうカウンタが確定せず、コンテキストを余分に消費してしまう場合がある。ここで、図１１および図１２を用いて条件分岐において開始指示をおこなうカウンタが確定しない場合について説明する。なお、図１１は、ケース１におけるカウンタ動作開始の制御例を示す説明図である。また、図１２は、ケース２におけるカウンタ動作開始の制御例を示す説明図である。
【０００８】
図１１に示すケース１のようにコンテキストＸによってＰＥロジック１の演算を実行させたい場合には、コンテキストＸの前に実行されていたコンテキストの演算結果を開始指示のトリガとして、シーケンサ１１０１がコンテキストＸの動作を開始させる。シーケンサ１１０１の動作指示は、ネットワーク回路１１０２を介してカウンタ１１０３に入力され、カウンタ１：１１０３の動作が開始される。カウンタ１：１１０３によるカウントがＰＥ制御信号となりＰＥロジック１によって演算がおこなわれる。
【０００９】
一方、図１２に示すケース２のようにコンテキストＹによってカウンタ１：１１０３、カウンタ２：１１０３のいずれかを起動させるかは前回コンテキストの実行結果に依存する。しかしながら、カウンタ１１０３の動作指示信号の出力先はコンフィグレーションデータにより決定されているため、リコンフィグ回路の動作中にカウンタ１１０３の動作指示信号の出力先を書き替えることはできない。
【００１０】
図１３は、条件分岐ごとのコンテキストを分割したリコンフィグ回路を示す説明図である。したがって、コンテキスト内に条件分岐が発生する場合には、図１３のように、ケース２のコンテキストＹを、カウンタ制御ごとに２つのコンテキストＹ−１と、Ｙ−２とに分割しなければならない。図１３のような条件分岐ごとのコンテキストを分割する手法は、コンテキストを余分に消費してしまうとともに、リコンフィグ回路のコンフィグレーションメモリを効率的に利用できないという問題があった。
【００１１】
この発明は、上述した従来技術による問題点を解消するため、条件分岐制御を含んだ処理を最小限のコンテキストによって効率的に実現するカウンタ制御回路、動的再構成回路およびループ処理制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するため、このカウンタ制御回路、動的再構成回路およびこのカウンタ制御回路を用いたループ制御方法によれば、再構成可能なプロセッシングエレメント（以下、「ＰＥ」という）の集合を、前記ＰＥの処理内容と前記ＰＥ間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路に配置されたカウンタの動作を制御するため、前記動的再構成回路に適応中のコンテキストにおいて、条件分岐演算を実行しているＰＥから、次回のコンテキストにおける前記カウンタの動作指示信号が出力されると、当該動作指示信号を保持し、前記動的再構成回路に適応中のコンテキストが前記次回のコンテキストに切り替わると、保持された動作指示信号を前記カウンタに出力する処理を備えることを要件とする。
【００１３】
この回路によれば、条件分岐演算を実行しているＰＥから出力されたカウンタの動作指示信号を一時的に保持するため、次回のコンテキストが適用されたときにはじめて指定されたカウンタに動作指示信号を出力することができる。
【００１４】
また、上述のカウンタ制御回路、動的再構成回路およびループ制御方法において、前記動的再構成回路に適応中のコンテキストにおいて、ループ処理演算を実行しているＰＥから、前記カウンタの動作指示信号が出力された場合には、当該動作指示信号を保持し、ループ処理演算を実行しているＰＥの演算が終了すると、ループ処理演算を実行していたＰＥからの動作指示信号を出力させてもよい。
【００１５】
このカウンタ制御回路、動的再構成回路およびループ制御方法回路によれば、適用中のコンテキストにおいて、条件分岐演算以外の通常のループ処理演算がおこなわれた場合には、現在実行中のコンテキストにおいてカウンタに動作指示信号を出力することができる。
【００１６】
また、上述のカウンタ制御回路、動的再構成回路およびループ制御方法において、一旦、動作指示信号が出力されると、保持していた動作指示信号を破棄してもよい。
【００１７】
このカウンタ制御回路、動的再構成回路およびループ制御方法回路によれば、一時的に保持していた動作指示信号をクリアにすることができる。
【００１８】
また、上述のウンタ制御回路、動的再構成回路およびループ制御方法において、動作指示信号の出力を禁止させる出力禁止設定を受け付けると、前記動的再構成回路に適応中のコンテキストから前記次回のコンテキストコンテキストの切り替わった場合に、動作指示信号の出力を禁止してもよい。また、適応中のコンテキストのループ処理演算が終了した場合に、上述のように動作指示信号の出力を禁止してもよい
【００１９】
このカウンタ制御回路、動的再構成回路およびループ制御方法回路によれば、所定の動作が起こっても、一意的にカウンタに動作指示信号が出力されるような事態を防ぐことができる。
【発明の効果】
【００２０】
このカウンタ制御回路、動的再構成回路およびループ処理制御方法によれば、条件分岐制御を含んだ処理を最小限のコンテキストによって効率的に実現することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２１】
以下に添付図面を参照して、このカウンタ制御回路、動的再構成回路およびループ処理制御方法の好適な実施の形態を詳細に説明する。
【００２２】
本実施の形態にかかるリコンフィグ回路（動的再構成回路）は、複数のクラスタから構成されている。この各クラスタは、コンテキストに応じてＰＥ命令およびＰＥ間接続を動的に変更可能なＰＥ群である。リコンフィグ回路は、ＭＰＵと連動して指定されたコンテキストに設定されたＰＥ命令およびＰＥ間接続を実行し、ユーザの所望する動作を実現することができる。
【００２３】
上述したようなリコンフィグ回路によってユーザが用意したプログラムを実行するには、プログラムをリコンフィグ回路の構成に応じてコンパイルしなければならない。したがって、つぎに、リコンフィグ回路の使用手順について説明する。なお、本実施の形態では、ユーザがＣ言語で記述したプログラムを用意し、リコンフィグ回路によって実行させるものとする。当然のことながら、他の高級言語を利用して記述されたプログラムを利用することもできる。そのような場合には、記述された高級言語の対応したコンパイラを用意すればよい。
【００２４】
図１は、リコンフィグ回路の使用手順を示す説明図である。図１のように、まず、リコンフィグ回路用Ｃソースコード１０１を用意する。このリコンフィグ回路用Ｃソースコード１０１は、リコンフィグ回路ユーザによって用意されたＣ言語によって記述されたソースコードである。
【００２５】
リコンフィグ回路を使用するには、まず、リコンフィグ回路用Ｃソースコード１０１をリコンフィグ回路用コンパイラで翻訳し（ステップＳ１１０）、コンフィグレーションデータ１０２を作成する。リコンフィグ回路用コンパイラは、ここで使用するリコンフィグ回路用のコンパイラであり、リコンフィグ回路のハードウェア構成に対応したコンフィグレーションデータ１０２を生成する。
【００２６】
リコンフィグ回路用コンパイラによるコンパイルが終了すると、続いて、リコンフィグ回路の起動要求をおこなう（ステップＳ１２０）。起動要求後、ステップＳ１１０によって生成されたコンフィグレーションデータ１０２がロードされ（ステップＳ１３０）、リコンフィグ回路の動作が開始される（ステップＳ１４０）。
【００２７】
このステップＳ１４０の処理の内容を詳しく説明すると、リコンフィグ回路の起動によって各クラスタが起動されると、各クラスタ内部のコンフィグレーションメモリにコンフィグレーションデータ１０２が書き込まれる。そして、各クラスタのシーケンサによってコンフィグレーションメモリに書き込まれたコンフィグレーションデータ１０２に従ったコンテキスト切り替え処理（１０３）がおこなわれ、コンフィグレーションデータ１０２に応じたコンテキスト切り替えが終了すると、一連のリコンフィグ回路動作を終了する（ステップＳ１５０）。
【００２８】
つぎに、上述した手順にてプログラムを実行させるリコンフィグ回路の具体的な構成について説明する。図２は、本実施の形態にかかるリコンフィグ回路のクラスタ構成を示すブロック図である。図１にて説明したように、リコンフィグ回路は、複数のクラスタによって構成されている。したがって、図２では、クラスタ内部の詳細な構成について説明する。
【００２９】
図２のように、クラスタ２００は、シーケンサ２１０と、コンフィグレーションメモリ２２０と、ＰＥアレイ２３０とによって構成されている。また、クラスタ２００には、リコンフィグ回路に実行させるコンフィグレーションデータ１０２を制御するＭＰＵからの開始指示（信号）が入力される（図１、２参照）。また、クラスタ２００は、リコンフィグ回路に配置された複数のクラスタの中の他のクラスタ２００へ外部出力をおこなうとともに、他のクラスタ２００からの外部入力の受け付けもおこなう。
【００３０】
また、クラスタ２００において、シーケンサ２１０は、開始指示（信号）を受け付けると、コンテキスト切り替え指示と、クラスタ内ＰＥの接続および命令設定の変更をおこなうため、コンフィグレーションメモリ２２０にＰＣ値を出力するとともに、ＰＥアレイ２３０にｃｏｎｔｅｘｔ  ｓｔａｒｔ信号を出力する。ｃｏｎｔｅｘｔ  ｓｔａｒｔ信号を受け取ったＰＥアレイ２３０は、設定されたコンテキストの処理が終了すると、シーケンサ２１０にｐｒｅｄｉｃａｔｅ信号を送信する。シーケンサ２１０は、ｐｒｅｄｉｃａｔｅ信号を受け取ると、つぎのコンテキストを切り替えるため、コンフィグレーションメモリ２２０とＰＥアレイ２３０にそれぞれ上述の出力をおこなう。
【００３１】
コンフィグレーションメモリ２２０には、図１のステップＳ１１０によって作成されたコンフィグレーションデータ１０２が格納されている。コンフィグレーションデータ１０２は、リコンフィグ回路によって実行させるコンテキストによって構成されている。したがって、コンフィグレーションメモリ２２０は、シーケンサ２１０からＰＣ値が入力されると、対応するコンテキストのコンフィグレーションデータ１０２をｃｏｎｆｉｇｕｒａｔｉｏｎ信号として、ＰＥアレイ２３０の各機能部に出力する。
【００３２】
コンテキストは、ユーザがＣ言語で記述したプログラムをコンパイルすることによって生成されるため、プログラムの記述内容によってコンテキスト数は異なる。また、コンパイルは、リコンフィグ回路のハードウェア構成に基づいたコンテキストを生成する。したがって、本実施の形態の場合、リコンフィグ回路のクラスタ２００の構成に基づいたコンテキストが生成される。
【００３３】
ＰＥアレイ２３０は、コンテキストの設定に応じた演算をおこなう機能部であり、条件分岐レジスタファイル２３１と、ＰＥ２３２と、ネットワーク回路２３３と、カウンタ２３４とから構成されている。条件分岐レジスタファイル２３１は、本実施の形態における独自の機能部であり、カウンタ制御回路として機能する。具体的に説明すると、条件分岐レジスタファイル２３１は、条件分岐演算がおこなわれた場合に、演算結果をつぎのコンテキストのカウンタを動作させるために保持する機能を備えている。なお、条件分岐レジスタファイル２３１の動作例と構成については詳しく後述する。
【００３４】
また、ＰＥ２３２は、演算子でありコンフィグレーションメモリ２２０から入力されたｃｏｎｆｉｇｕｒａｔｉｏｎ信号によって指定された演算をおこなう。ネットワーク回路２３３は、ＰＥアレイ２３０内の条件分岐レジスタファイル２３１、ＰＥ２３２およびカウンタ２３４をコンフィグレーションメモリ２２０から入力されたｃｏｎｆｉｇｕｒａｔｉｏｎ信号に応じて接続する。カウンタ２３４は、コンフィグレーションメモリ２２０から入力されたｃｏｎｆｉｇｕｒａｔｉｏｎ信号に応じて指定された動作のカウントをおこなう。
【００３５】
上述したＰＥアレイ２３０の各構成のうち、ＰＥ２３２およびカウンタ２３４は、複数個配置されている。また、ＰＥアレイ２３０内では、ＰＥ２３２における演算結果や、カウンタ２３４の回路出力であるカウント値を伝えるため、ネットワーク回路２３３を介してｄａｔａ信号の送受がおこなわれている。この、ｄａｔａ信号の接続は、ネットワーク回路２３３によって動的に変更可能である。
【００３６】
つぎに、ＰＥアレイ２３０内の制御とシーケンサ２１０にコンテキストの切り替え指示をおこなうｐｒｅｄｉｃａｔｅ信号について説明する。ｐｒｅｄｉｃａｔｅ信号は、２ｂｉｔの信号であり、ＰＥ２３２内における比較結果、コンテキスト開始・終了を指示するクラスタ内の制御信号である。ｐｒｅｄｉｃａｔｅ信号の接続先も、ネットワーク回路２３３により動的に変更可能である。
【００３７】
また、ｐｒｅｄｉｃａｔｅ信号は、条件分岐レジスタファイル２３１によって、シーケンサ２１０からのコンテキスト開始指示（信号）が２ｂｉｔの信号に変換されたものである。変換されたｐｒｅｄｉｃａｔｅ信号は、ネットワーク回路２３３を介してＰＥ２３２やカウンタ２３４に出力される。このときは、ｐｒｅｄｉｃａｔｅ信号は、具体的には、下記のような意味をあらわす。
【００３８】
・２’ｂ＝「１１」：成立（ｔｒｕｅ）
・２’ｂ＝「１０」：非成立（ｆａｌｓｅ）
・２’ｂ＝「０１」、「００」：無効（ｉｎｖａｌｉｄ）、すなわち意味を持たない。
【００３９】
以上の説明した構成のクラスタ２００において、ＰＥ２３２によってループ演算をおこなう場合には、ＰＥの処理をカウンタ２３４によってカウントさせる。このとき、条件分岐レジスタファイル２３１によって、前コンテキストの結果に応じて、カウンタ２３４のカウント開始用ｐｒｅｄｉｃａｔｅ信号を切り替えさせる。このような構成を備えることによって、同一のコンテキスト内で条件分岐制御をおこなうことが可能となる。
【００４０】
（条件分岐レジスタファイルの使用手順）
したがって、つぎに、条件分岐レジスタファイル２３１を使用して同一のコンテキスト内で条件分岐制御をおこなう際の具体例を挙げて条件分岐レジスタファイル２３１の使用手順について説明する。
【００４１】
図３は、条件分岐レジスタファイルの使用手順を示す説明図である。図３において、コンテキスト０は、初回コンテキストであり、カウンタ１：２３４をクラスタの開始指示の入力をトリガに起動させる。このとき、条件分岐レジスタファイル２３１は、コンフィグレーションメモリ２２０から入力されたｃｏｎｆｉｇｕｒａｔｉｏｎ信号によって設定された値（２’ｂ＝「１１」）を、ｐｒｅｄｉｃａｔｅ信号としてクラスタ開始時（開始指
示入力時）にＰＲＤＯ０から出力する。出力されたｐｒｅｄｉｃａｔｅ信号は、ネットワーク回路２３３を経由して、カウンタ１：２３４に、１パルスとして入力される。
【００４２】
カウンタ１：２３４は、ｐｒｅｄｉｃａｔｅ信号の１パルス入力によってカウント動作を開始し、ＰＥ制御情報をＰＥロジックに出力する。このカウンタ１：２３４の出力を起点として、複数ＰＥの組み合わせである演算フロー（ＰＥロジック１）が動作する。ＰＥロジック１は演算結果により、条件分岐レジスタファイル２３１の入力端である、ＰＲＤＩ０とＰＲＤＩ１とのどちらか一方にｐｒｅｄｉｃａｔｅ信号（２’ｂ１１）を書き込む
。以上の動作によって、コンテキスト０が終了する。
【００４３】
つぎに、コンテキスト１が開始されると、条件分岐レジスタファイル２３１には、コンテキスト１の開始指示が入力される。このとき、条件分岐レジスタファイル２３１は、コンテキスト０の動作によって保持されたｐｒｅｄｉｃａｔｅ信号を出力端子に出力する。ここで、出力端は、ＰＲＤＩ０に書き込んだ信号であればＰＲＤＯ０、ＰＲＤＩ１に書き込んだデータであればＰＲＤＯ１となる。
【００４４】
このように、条件分岐レジスタファイル２３１にコンテキスト０におけるＰＥの出力を保持することによって、ｐｒｅｄｉｃａｔｅ信号の状態により、カウンタ１、２：２３４のどちらかの動作を切り替えることが可能となる。
【００４５】
（条件分岐レジスタファイルの回路構成）
つぎに、条件分岐レジスタファイル２３１の回路構成について説明する。図４は、条件分岐レジスタファイルの回路構成を示すブロック図である。条件分岐レジスタファイル２３１は、コンフィグレーションメモリ２２０からのコンフィグレーションデータを保持するコンフィグレーションレジスタ部４００と、系統ごとの入力信号の有効／無効判定部４０１と、内部レジスタ４０２と、内部レジスタのクリア制御部４０３と、ＦＦ（フリップフロップ）とを備えている。
【００４６】
図４の例示では、条件分岐レジスタファイル２３１は、４系統の内部レジスタ４０２を備えており、条件分岐演算において、最大４分岐まで対応可能な構成になっている。なお、入力端ＰＲＤＩおよび出力端ＰＲＤＯは、系統ごとに独立しているため、４系統以上持たせることも可能である。また、リコンフィグ回路を構成するクラスタ２００を複数個用いることによって、分岐先を増やすこともできる。
【００４７】
条件分岐レジスタファイル２３１の各系統に入力されるデータは、クラスタ２００のｐｒｅｄｉｃａｔｅ信号であり、上述したように２ｂｉｔの信号である。また、条件分岐レジスタファイル２３１には、コンフィグレーションレジスタ部４００からコンフィグレーション設定が入力される。このコンフィグレーション設定は、コンテキストの開始指示であるｃｏｎｔｅｘｔ  ｓｔａｒｔ信号が、アサートされたタイミングで取り込まれる。
【００４８】
条件分岐レジスタファイル２３１の内部レジスタ４０２は、ｐｒｅｄｉｃａｔｅ信号：２’ｂ＝「１１」、もしくは、２’ｂ＝「１０」が入力端ＰＲＤＩに入力されたとき、そ
の値を更新する。また、内部レジスタ４０２は、ｃｏｎｔｅｘｔ  ｓｔａｒｔ信号がアサートされると、保持されている値を出力部のＦＦに１パルス出力する。そして、ＦＦに出力された信号は出力端ＰＲＤＯから出力される。このとき、内部レジスタ４０２の値は、すべて「０」に更新することによってクリアされる。なお、内部レジスタ４０２の値は、コンフィグレーションレジスタ部４００のコンフィグレーション設定により初期化することもできる。このような初期化処理は、初回コンテキストの起動時に使用される。
【００４９】
つぎに、コンフィグレーションレジスタ部４００のコンフィグレーション設定について説明する。コンフィグレーション設定としては、以下の設定が系統ごとに独立して可能である。これらの設定は動的に切り替えるコンテキストのコンフィグレーションデータによっておこなわれる。
【００５０】
１）入力されたｐｒｅｄｉｃａｔｅ信号の無効化設定
入力端ＰＲＤＩから入力されたｐｒｅｄｉｃａｔｅ信号を無効値として扱う。この設定によって内部レジスタ４０２に保持されているｐｒｅｄｉｃａｔｅ信号が更新されるような事態を防ぐことができる。
【００５１】
２）コンテキスト開始時の内部レジスタ値の出力／非出力設定
コンテキスト開始時に内部レジスタ４０２の値を出力する設定をおこなうと、内部レジスタ４０２に保持されているデータが１パルス出力端ＰＲＤＯの前段のＦＦに書き込まれ、同時に内部レジスタ４０２がＡＬＬ０にクリアされる。一方、コンテキスト開始時に内部レジスタ４０２の値を出力しない設定をおこなうと、ｃｏｎｔｅｘｔ  ｓｔａｒｔがアサートされても、条件分岐レジスタファイル３３１のＦＦに内部レジスタ４０２の値が出力されず、内部レジスタ４０２に現在の保持されている値が継続して保持される。
【００５２】
図５は、条件分岐レジスタファイル内データを保持する場合の使用手順を示す説明図である。たとえば、図５のようなコンテキスト切り替えでは、初回コンテキストであるコンテキスト０では、ｃｏｎｆｉｇｕｒａｔｉｏｎ信号によって設定された値をＰＲＤＯ０から出力する（５０１）。そして、コンテキスト０においてＰＥロジック１の演算結果に応じて、ＰＲＤＩ１とＰＲＤＩ２とのどちらか一方に、ｐｒｅｄｉｃａｔｅ信号を書き込む（５０２）。
【００５３】
コンテキスト０からコンテキスト１に切り替わり、条件分岐レジスタファイル２３１内に保持したｐｒｅｄｉｃａｔｅ信号を、次のコンテキスト１ではなく、その次のコンテキスト２でカウンタの起動信号として使用したい場合がある。このとき、内部レジスタ４０２の値を出力／非出力設定を使用することで、条件分岐レジスタファイル２３１内に保持したｐｒｅｄｉｃａｔｅ信号は、そのまま内部レジスタ４０２に保持される（５０３）。また、コンテキスト２では、条件分岐演算が発生していないため、コンフィグレーション設定によるｐｒｅｄｉｃａｔｅ信号によってカウンタ１：２３４が起動される（５０４）。
【００５４】
そして、コンテキスト２に切り替わると、コンテキスト０において、ＰＲＤＩ１とＰＲＤＩ２とのどちらか一方に書き込まれた、ｐｒｅｄｉｃａｔｅ信号をカウンタ１、２：３３４のいずれかに出力することができる（５０５）。このように、コンテキスト開始時の内部レジスタ値の出力／非出力設定が可能になる。
【００５５】
３）内部レジスタ値の即値設定
内部レジスタ４０２の値ではなく、コンフィグレーションレジスタ部４００のコンフィグレーション設定による即値を出力端ＰＲＤＯ前段のＦＦに１パルス渡すように動作させる設定である。
【００５６】
４）即値設定の有効／無効設定
上記３）によって設定されたコンフィグレーションレジスタ部４００による即値設定の取り込みを有効もしくは無効にする設定である。
【００５７】
つぎに、上述したように条件分岐レジスタファイル２３１の動作について、タイミングチャートを用いて説明する。図６は、条件分岐レジスタファイルの動作を示すタイミングチャートである。また、図７は、即値出力設定を含んだ条件分岐レジスタファイル動作を示すタイミングチャートである。
【００５８】
図６のタイミングチャートでは、条件分岐レジスタファイル２３１の入力端ＰＲＤＩ０に「１１」のｐｒｅｄｉｃａｔｅ信号が入力されると（６０１）、内部レジスタ４０２には２’ｂ＝「１１」が保持される。その後、ｃｏｎｔｅｘｔ  ｓｔａｒｔがアサートされるまでＰＲＤＩ１には有効データ（「１１」か「１０」）が入力されないためレジスタは更新されずに、出力端ＰＲＤＯ１では、保持されていた２’ｂ＝「１１」が出力され、「００」にクリアされる。一方、入力端ＰＲＤＩ０に入力された２’ｂ＝「１１」は内部レジスタ４０２に保持される（６０２）。また、ｃｏｎｔｅｘｔ  ｓｔａｒｔがアサート前に入力端ＰＲＤＩ０には、２’ｂ＝「１０」が入力され、内部レジスタ５０２に上書きされる（６０３）。結果として、出力端ＰＲＤＯ０からは２’ｂ＝「１０」が出力される。そして、コンテキスト０からコンテキスト１に切り替わると、あらたなｃｏｎｔｅｘｔ  ｓｔａｒｔがアサートされる。
【００５９】
図７のタイミングチャートでは、コンフィグレーションレジスタ部４００のコンフィグレーション設定の即値を出力するか否かが、ＩＭＭ＿ｅｎ０（コンフィグレーションデータ:以下「ｃｆｇ」という）によって設定されている。また、即値を出力すると設定された場合には、ＩＭＭ０（ｃｆｇ）を即値として出力する。このように、コンテキスト０の設定に応じてコンテキスト設定をおこなうことによりコンテキストごとの実装自由度を向上させることができる。
【００６０】
（実施例）
つぎに、条件分岐処理を含んだソースコードによるコンテキスト切り替え動作を、リコンフィグ回路に実装した場合の実施例について説明する。図８は、コンテキスト切り替えを実装したＣコードの一例を示すソースコードである。図８のソースコード８００において、コンテキスト０部分８１０は、入力データを累積加算し、最後に固定値との比較をおこなう処理が記述されている。そして、コンテキスト１（ｔｒｕｅ／ｆａｌｅｓ）部分８２０、８３０は、コンテキスト０の比較結果に応じて、実行するループ制御を切り替える。すなわち、コンテキスト０の比較結果に応じてコンテスト１（ｔｒｕｅ）部分８２０か、コンテキスト１（ｆａｌｅｓ）部分８３０のいずれかの処理に対応したカウンタを動作させなければならない。
【００６１】
また、図９は、アドレスカウンタ起動用の条件分岐信号の生成手順を示す説明図である。また、図１０は、コンテキスト０の実装回路の一例を示すブロック図である。図８のソースコード８００に記述されたように、初回コンテキストであるコンテキスト０では、Ｆｏｒループ制御おこなう。したがって、アドレスカウンタの出力を、入力データ（ｉｎｐｕｔ＿ｄ）として保持し、ＲＡＭのインデックスとして、ＲＡＭ保持データの累積加算処理をおこなう。この演算処理は、図１０のＰＥロジック１０００のループ制御部１００１、ＲＡＭテーブル１００２および累積加算部１００３によって実現される。
【００６２】
さらに、累積加算結果を比較器１００４で固定値（ここでは、２５５）と比較し、ｔｒｕｅ側と判断された場合、条件分岐レジスタファイル２３１のＰＲＤＩ０に、ｐｒｅｄｉｃａｔｅ信号「１１」を書き込む。また、比較器において、ｆａｌｓｅ側と判断された場合、条件分岐レジスタファイル２３１のＰＲＤＩ２にｐｒｅｄｉｃａｔｅ信号「１１」を書き込む。この比較処理は、ＰＥロジック１０００の比較器１００４によって実現される。
【００６３】
以上説明した実施例では、実施の形態の特有の構成である条件分岐レジスタファイル２３１を使用することによって、条件分岐命令部分であるコンテスト１（ｔｒｕｅ）と、コンテキスト１（ｆａｌｅｓ）とを１つのコンテキストによって実現することができる。したがって、コンテキスト数の削減及びコンテキスト切り替え間の時間のロスを抑えることが可能となった。
【００６４】
以上説明したように、本実施の形態によれば、条件分岐演算がおこなわれた場合に、演算結果をつぎのコンテキストのカウンタを動作させるために保持することができるため、条件分岐ごとにコンテキストを用意せずとも、１つのコンテキストにて、各分岐結果に応じたカウンタ動作指示をおこなうことができる。また、本実施の形態によれば、条件分岐レジスタファイル２３１を使用することによって、コンフィグレーションデータ出力先を書き替える必要もない。したがって、条件分岐制御を含んだ処理を最小限のコンテキストによって効率的に実現することができる。
【００６５】
なお、本実施の形態で説明したループ処理制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【００６６】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００６７】
（付記１）再構成可能なプロセッシングエレメント（以下、「ＰＥ」という）の集合を、前記ＰＥの処理内容と前記ＰＥ間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路に配置されたカウンタの動作を制御するカウンタ制御回路であって、
前記動的再構成回路に適応中のコンテキストにおいて、条件分岐演算を実行しているＰＥから、次回のコンテキストにおける前記カウンタの動作指示信号が出力されると、当該動作指示信号を保持する保持手段と、
前記保持手段に保持された動作指示信号を前記カウンタに出力する出力手段と、
前記動的再構成回路に適応中のコンテキストが前記次回のコンテキストに切り替わると、前記出力手段に前記動作指示信号を出力させる制御手段と、
を備えることを特徴とするカウンタ制御回路。
【００６８】
（付記２）前記保持手段は、前記動的再構成回路に適応中のコンテキストにおいて、ループ処理演算を実行しているＰＥから、前記カウンタの動作指示信号が出力されると、当該動作指示信号を保持し、
前記制御手段は、前記ループ処理演算を実行しているＰＥの演算が終了すると、前記出力手段に前記ループ処理演算を実行しているＰＥからの動作指示信号を出力させることを特徴とする付記１に記載のカウンタ制御回路。
【００６９】
（付記３）前記保持手段は、前記制御手段の制御によって、前記出力手段によって前記動作指示信号が出力されると、前記動作指示信号を破棄することを特徴とする付記１に記載のカウンタ制御回路。
【００７０】
（付記４）前記出力手段による前記動作指示信号の出力を禁止させる出力禁止設定を受け付ける設定手段を備え、
前記制御手段は、前記設定手段によって出力禁止設定が受け付けられると、前記動的再構成回路に適応中のコンテキストから前記次回のコンテキストに切り替わった場合に、前記出力手段による前記動作指示信号の出力を禁止することを特徴とする付記１に記載のカウンタ制御回路。
【００７１】
（付記５）前記出力手段による前記動作指示信号の出力を禁止させる出力禁止設定を受け付ける設定手段を備え、
前記制御手段は、前記設定手段によって出力禁止設定が受け付けられると、前記出力手段による前記適応中のコンテキストのループ処理演算が終了した場合に、前記出力手段による、前記動作指示信号の出力を禁止することを特徴とする付記２に記載のカウンタ制御回路。
【００７２】
（付記６）前記動的再構成回路には、前記適応中のコンテキストに含まれる条件分岐演算の分岐結果に対応した複数のカウンタが備えられ、
前記制御手段は、前記動的再構成回路に適応中のコンテキストが前記次回のコンテキストに切り替わった場合、前記条件分岐演算を実行しているＰＥからの動作指示信号を、前記複数のカウンタの中から前記分岐結果に対応したカウンタに出力させることを特徴とする付記１〜５のいずれか一つに記載のカウンタ制御回路。
【００７３】
（付記７）再構成可能なプロセッシングエレメント（以下、「ＰＥ」という）の集合を、前記ＰＥの処理内容と前記ＰＥ間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路であって、
前記コンテキストによって指定されたＰＥの動作をカウントするカウンタと、
前記カウンタの動作を制御するカウンタ制御回路と、を備え、
前記カウンタ制御回路は、
前記動的再構成回路に適応中のコンテキストにおいて、条件分岐演算を実行しているＰＥから、次回のコンテキストにおける前記カウンタの動作指示信号が出力されると、当該動作指示信号を保持する保持手段と、
前記保持手段に保持された動作指示信号を前記カウンタに出力する出力手段と、
前記動的再構成回路に適応中のコンテキストが前記次回のコンテキストに切り替わると、前記出力手段に前記動作指示信号を出力させる制御手段と、備えることを特徴とする動的再構成回路。
【００７４】
（付記８）前記保持手段は、前記動的再構成回路に適応中のコンテキストにおいて、ループ処理演算を実行しているＰＥから、前記カウンタの動作指示信号が出力されると、当該動作指示信号を保持し、
前記制御手段は、前記ループ処理演算を実行しているＰＥの演算が終了すると、前記出力手段に前記ループ処理演算を実行しているＰＥからの動作指示信号を出力させることを特徴とする付記７に記載の動的再構成回路。
【００７５】
（付記９）前記保持手段は、前記制御手段の制御によって、前記出力手段によって前記動作指示信号が出力されると、前記動作指示信号を破棄することを特徴とする付記７に記載の動的再構成回路。
【００７６】
（付記１０）前記カウンタ制御回路において、
前記出力手段による前記動作指示信号の出力を禁止させる出力禁止設定を受け付ける設定手段を備え、
前記制御手段は、前記設定手段によって出力禁止設定が受け付けられると、前記動的再構成回路に適応中のコンテキストから前記次回のコンテキストコンテキストの切り替わった場合に、前記出力手段による前記動作指示信号の出力を禁止することを特徴とする付記６に記載の動的再構成回路。
【００７７】
（付記１１）前記カウンタ制御回路は、
さらに、前記出力手段による前記動作指示信号の出力を禁止させる出力禁止設定を受け付ける設定手段を備え、
前記制御手段は、前記設定手段によって出力禁止設定が受け付けられると、前記出力手段による前記適応中のコンテキストのループ処理演算が終了した場合に、前記出力手段による、前記動作指示信号の出力を禁止することを特徴とする付記８に記載の動的再構成回路。
【００７８】
（付記１２）前記カウンタは、前記適応中のコンテキストに含まれる条件分岐演算の分岐結果に対応した複数個備えられ、
前記カウンタ制御回路において、
前記制御手段は、前記動的再構成回路に適応中のコンテキストが前記次回のコンテキストに切り替わった場合、前記出力手段を制御して、前記条件分岐演算を実行しているＰＥからの動作指示信号を、複数のカウンタの中から前記分岐結果に対応したカウンタに出力させることを特徴とする付記７〜１１のいずれか一つに記載の動的再構成御回路。
【００７９】
（付記１３）再構成可能なプロセッシングエレメント（以下、「ＰＥ」という）と、カウンタ回路との集合を、前記ＰＥの処理内容と前記ＰＥ間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路に、所定の動作をカウントさせるカウンタによって実行されるループ処理を制御するループ処理制御方法であって、
前記動的再構成回路に適応中のコンテキストにおいて、条件分岐演算を実行しているＰＥから、次回のコンテキストにおける前記カウンタの動作指示信号が出力されると、当該動作指示信号を保持する保持工程と、
前記動的再構成回路に適応中のコンテキストの前記次回のコンテキストへの切り替えを検出する検出工程と、
前記検出工程によって前記次回のコンテキストへの切り替えが検出されると、前記保持工程によって保持された動作指示信号を前記カウンタに出力する出力工程と、
を含むことを特徴とするループ処理制御方法。
【００８０】
（付記１４）前記保持工程は、前記動的再構成回路に適応中のコンテキストにおいて、ループ処理演算を実行しているＰＥから、前記カウンタの動作指示信号が出力されると、当該動作指示信号を保持し、
前記検出工程は、前記ループ処理演算を実行しているＰＥの演算の終了を検出し、
前記出力工程は、前記検出手段によって前記ループ処理演算を実行しているＰＥの演算の終了を検出すると、前記ループ処理演算を実行しているＰＥからの動作指示信号を出力することを特徴とする付記１３に記載のループ処理制御方法。
【図面の簡単な説明】
【００８１】
【図１】リコンフィグ回路の使用手順を示す説明図である。
【図２】本実施の形態にかかるリコンフィグ回路のクラスタ構成を示すブロック図である。
【図３】条件分岐レジスタファイルの使用手順を示す説明図である。
【図４】条件分岐レジスタファイルの回路構成を示すブロック図である。
【図５】条件分岐レジスタファイル内データを保持する場合の使用手順を示す説明図である。
【図６】条件分岐レジスタファイルの動作を示すタイミングチャートである。
【図７】即値出力設定を含んだ条件分岐レジスタファイル動作を示すタイミングチャートである。
【図８】コンテキスト切り替えを実装したＣコードの一例を示すソースコードである。
【図９】アドレスカウンタ起動用の条件分岐信号の生成手順を示す説明図である。
【図１０】コンテキスト０の実装回路の一例を示すブロック図である。
【図１１】ケース１におけるカウンタ動作開始の制御例を示す説明図である。
【図１２】ケース２におけるカウンタ動作開始の制御例を示す説明図である。
【図１３】条件分岐ごとのコンテキストを分割したリコンフィグ回路を示す説明図である。
【符号の説明】
【００８２】
３００  クラスタ
３１０  シーケンサ
３２０  リコンフィグメモリ
３３０  ＰＥアレイ
【図１】
0004911022.tif 000002
【図２】
0004911022.tif 000003
【図３】
0004911022.tif 000004
【図４】
0004911022.tif 000005
【図５】
0004911022.tif 000006
【図６】
0004911022.tif 000007
【図７】
0004911022.tif 000008
【図８】
0004911022.tif 000009
【図９】
0004911022.tif 000010
【図１０】
0004911022.tif 000011
【図１１】
0004911022.tif 000012
【図１２】
0004911022.tif 000013
【図１３】
0004911022.tif 000014