説明

カウンタ回路、動的再構成回路およびループ処理制御方法

【課題】高級言語によって記述されたループ処理を実装可能とするとともに、コンテキストの切り替えを適切におこなえるカウンタ回路を含んだ動的再構成回路およびループ制御処理方法を実現する。
【解決手段】再構成可能なPE(プロセッシングエレメント)111の処理内容と接続内容をコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路100は、コンテキストに基づいて、再構成されたPEの集合からの出力信号の出力元、出力信号の出力先、および出力信号を出力先に出力する条件からなるループ処理の内容を設定するコンフィグレーションデジスタ部と、設定されたループ処理を実行するとともに、ループ制御部によって実行されたループ処理の実行回数をカウントし、カウントされた実行回数および条件に基づいて、出力信号を出力先に出力するループ制御部および出力レジスタ部からなるカウンタ回路112を備えている。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、再構成可能なプロセッシングエレメント(以下、「PE」という)の集合を、前記PEの処理内容と前記PE間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路に配置されたカウンタ回路、動的再構成回路およびループ処理制御方法に関する。
【背景技術】
【0002】
従来より、ダイナミックリコンフィギャラブル回路(以下、「動的再構成回路」という)は、動作中に回路内部の演算器命令や演算器間の接続を変更できるという特徴とを備えている。具体的には、動的再構成回路の内部には複数のPE(プロセッシングエレメント)は配置されている。動的再構成回路の構成内容は、コンテキストと呼ばれる各PEの動作と、PE間の接続との設定をあらわす情報として記述される。回路を再構成する際には、このコンテキストに応じてPEの演算処理内容や接続を変更させる。
【0003】
また、動的再構成回路では、上述したコンテキストに基づいて回路内部に配置されているPEの処理内容や接続先を順次変更する。すなわち、異なる処理をおこなう場合であっても、時間軸方向に分割して実行させることによって、PEの共用が可能となる。したがって、動的再構成回路全体のハードウェア規模を削減することができるという利点を備えている。このような、コンテキストに基づいた動的再構成回路では、各コンテキストを実行させる際の開始、終了の制御には、カウンタ回路を用いることが一般的である。具体的には、データ駆動型の再構成可能なカウンタが利用されている(たとえば、下記特許文献1参照。)。
【0004】
【特許文献1】特表2003−518666号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、従来のようなデータ駆動型のカウンタ回路は、動的再構成回路に実装するアプリケーションに特化した機能しか備えていないため、C言語などの高級言語から実装をおこなう場合、for文while文などのいわゆるループ処理に対応したカウント処理は困難であった。
【0006】
具体的には、動的再構成回路に高級言語であるC言語のループ処理を適用させる場合、カウンタ回路は、C言語によって記述された任意の多重ループをそれぞれカウントできるような構成に変更させなければならない。しかしながら、多重ループ数の最大は、カウンタの仕様により決まってしまうため、ループ処理の各パラメータはカウンタ回路の仕様に合わせて変更しなければならない。このように、従来の動的再構成回路は、C言語など高級言語によって記述されたループ処理を実行できない場合があり、動的再構成回路として実現可能な処理が制限されてしまうという問題があった。
【0007】
また、従来のデータ駆動型のカウンタ回路では、動的再構成回路の外部からの有効データ入力をトリガとしてカウンタの動作を開始または制御していた。したがって、動的再構成回路内部でPEの入力となるデータを生成する場合、カウンタ回路の開始タイミングを指示するトリガ信号を生成できない。
【0008】
具体的には、動的再構成回路におけるコンテキスト切り替えでは、カウンタ回路の開始タイミングを指示するために、現在実行中のコンテキストによる処理の終了タイミングを指示する制御信号を使用したい。しかしながら、データ駆動型のカウンタ回路によるアドレスカウント処理の場合、外部からの有効データの入力を開始トリガとするため、内部生成された制御信号をカウンタ回路の開始指示として使用することができない。
【0009】
同様に、特定のループ処理が終了したタイミングで別のループ処理を開始したい場合、前段のカウンタ回路の開始、後段のカウンタ回路の終了は同一のトリガ信号を使用したいが、ここでも、データ駆動型のカウンタ回路の場合に、前段のカウンタから読み出した有効データから前段のカウンタの終了判定をすることはできないため、別の制御を追加する必要があり使用PE数の増加となる。
【0010】
このように、従来のカウンタ回路では、実行させたいループ処理に応じた信号出力を任意のタイミングで出力させることができない。したがって、動的再構成回路において、高級言語の記述に基づいたループ処理を実行させた場合には、制御のためのPEが別途必要になり、ハードウェア規模の増大を招いてしまう場合があるという問題があった。
【0011】
この発明は、上述した従来技術による問題点を解消するため、高級言語によって記述されたループ処理であっても実装可能とするとともに、コンテキストの切り替えタイミング指示を同時に実現することのできるカウンタ回路、動的再構成回路およびループ処理制御方法を提供することを目的とする。
【課題を解決するための手段】
【0012】
上述した課題を解決し、目的を達成するため、本発明にかかるカウンタ回路は、再構成可能なプロセッシングエレメント(以下、「PE」という)の集合を、前記PEの処理内容と前記PE間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路に配置されたカウンタ回路であって、前記コンテキストに基づいて、動的再構成されたPEの集合からの出力信号の出力元、前記出力信号の出力先、および前記出力信号を前記出力先に出力する条件からなるループ処理の内容を設定する設定手段と、前記設定手段によって内容が設定されたループ処理を実行する実行手段と、前記実行手段によって実行されたループ処理の実行回数をカウントし、カウントされた実行回数および前記条件に基づいて、前記出力信号を前記出力先に出力するカウント手段と、を備えることを特徴とする。
【0013】
この発明によれば、コンテキストの記述に応じて任意のループ処理を実行させるとともに、この任意に設定されたループ処理の実行回数をカウントし、このカウント処理のタイミングで任意の出力先にカウント回路の出力値を出力させることができる。
【0014】
また、上記発明において、前記設定手段は、前記動的再構成回路から前記ループ処理の成立をあらわす分岐指示信号を受け付けると、前記コンテキストをあらかじめ設定されたつぎのコンテキストに基づいて、動的再構成されたPEの集合からの出力信号の出力元、前記出力信号の出力先、および前記出力信号を前記出力先に出力する条件からなるループ処理の内容を設定し、前記実行手段は、当該切り替えられたコンテキストによって内容が設定されたループ処理を実行する設定に応じて、あらたなループ処理を実行してもよい。
【0015】
この発明によれば、ループ処理の成立をあらわす分岐指示信号の受け付けがトリガとなって、コンテキストの切り替えを実行することもできる。
【0016】
また上記発明において、前記コンテキストには、前記条件として、前記ループ処理の開始の初期値と、前記実行回数が前記ループ処理の回数の上限を満足するか否かを判定する判定式と、前記判定式を満足しなかった場合に前記カウント回数に加算する値とが設定されていてもよい。
【0017】
この発明によれば、高級言語で記述されたループ処理をカウンタ回路に適用することができる。
【0018】
また上記発明において、前記カウント手段は、前記ループ処理の実行中に前記コンテキストの切り替え信号を受け付けると、前記ループ処理のカウントを停止させ、前記ループ処理が実行されていない場合に前記コンテキストの切り替え信号を受け付けると、あらたに切り替えられたコンテキストに応じて実行されたループ処理をカウントしてもよい。
【0019】
この発明によれば、コンテキストの切り替え信号を受け付けに応じて、ループ処理のカウントの停止または実行をおこなうことによって、コンテキストと同期したループ処理をおこなうことができる。
【0020】
また上記発明において、前記カウント手段は、前記ループ処理のカウント回数が前記条件を満足した場合に、前記出力信号を前記出力先に出力してもよい。
【0021】
この発明によれば、コンテキストの記述内容に応じて、カウンタ回路からの信号の出力タイミングを任意に設定することができる。
【0022】
また、本発明にかかる動的再構成回路は、PEの集合と、カウンタ回路とを備え、前記PEの処理内容と前記PE間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路であって、前記カウンタ回路は、コンテキストに基づいて、動的再構成されたPEの集合からの出力信号の出力元、前記出力信号の出力先、および前記出力信号を前記出力先に出力する条件からなるループ処理の内容を設定する設定手段と、前記設定手段によって内容が設定されたループ処理を実行する実行手段と、前記実行手段によって実行されたループ処理の実行回数をカウントし、カウントされた実行回数および前記条件に基づいて、前記出力信号を前記出力先に出力するカウント手段と、を備えることを特徴とする。
【0023】
この発明によれば、コンテキストの記述に応じて任意のループ処理を実行させるとともに、この任意に設定されたループ処理の実行回数をカウントし、このカウント処理のタイミングで任意の出力先にカウント回路の出力値を出力させることができる。
【0024】
また、上記発明において、前記カウンタ回路は複数設けられ、前記コンテキストにおいて前記ループ処理が多重化されている場合、前記カウンタ回路ごとに前記各ループ処理を実行するように再構成してもよい。
【0025】
この発明によれば、多重ループ処理が記述されたコンテキストに対応したループ処理を実現することができる。
【発明の効果】
【0026】
本発明にかかるカウンタ回路、動的再構成回路およびループ処理制御方法によれば、高級言語によって記述されたループ処理であっても実装可能とするとともに、コンテキストの切り替えタイミング指示を同時に実現することができるという効果を奏する。
【発明を実施するための最良の形態】
【0027】
以下に添付図面を参照して、この発明にかかるカウンタ回路、再構成回路およびループ処理制御方法の好適な実施の形態を詳細に説明する。
【0028】
(動的再構成回路の構成)
まず、本発明にかかる動的再構成回路の構成について説明する。図1は、本実施の形態にかかる動的再構成回路の構成を示すブロック図である。図1のように、動的再構成回路100は、シーケンサ101と、条件分岐信号生成器102と、コンフィグレーションメモリ103と、PEアレー110とを含んで構成されている。
【0029】
シーケンサ101は、ユーザや上位プログラムからの指示に応じたコンテキストを実行させるためのPC値を出力する。シーケンサ101から出力されたPC値は、コンフィグレーションメモリ103に入力される。また、シーケンサ101は、PC値とともに、PEアレー110にコンフィグレーションデータ読み込み要求信号としてFETCHENを出力する。
【0030】
さらに、シーケンサ101は、コンテキストの切り替えをトリガに条件分岐信号生成部102に条件分岐信号(predicate信号;以下、「PRDI(入力信号の場合)/PRDO出力信号の場合」という)の生成指示を出力する。このPRDIは、2ビットの信号であり、コンテキスト切り替えの開始および終了の指示に利用する。具体的には、PRDIが「11」であれば条件の成立、「10」であれば条件の不成立、「0x」であれば無効をあらわす。
【0031】
条件分岐信号生成器102は、シーケンサ101から入力されたPRDIの生成指示に応じて、PRDIを生成する。生成されたPRDIは、PEアレー110のネットワーク回路113に出力される。
【0032】
コンフィグレーションメモリ103には、あらかじめ記述されたコンテキストが格納されており、シーケンサ101から入力されたPE値に応じて、該当するコンテキストを読み出す。そして、コンフィグレーションメモリ103からは、読み出されたコンテキストに記述されたコンフィグレーションデータ(configuration;CFG)が、後述するPEアレー110に配置されているPE111(PE111a〜PE111c)や、カウンタ回路112(カウンタ回路112a〜112b)に出力される。
【0033】
PEアレー110は、コンフィグレーションメモリ103によって読み出されたコンテキストに応じた処理を実行させる機能部であり、演算子として複数のPE111(たとえばPE111a〜PE111c)と、カウンタ回路112(たとえばカウンタ回路112a〜112b)が配置されているとともに、各演算子の入出力値(data)の接続を切り替える可変接続部としてネットワーク回路113を備えている。
【0034】
PE111は、コンテキストの記述に応じて所定の演算をおこなう。動的再構成回路100によってあるコンテキストを実行する場合には、PE111には、コンフィグレーションメモリ103から実行するコンテキストに記述されたコンフィグレーションデータが入力される。その後、PE111は、コンテキストが切り替わるまで、入力されたコンフィグレーションデータに応じた演算処理をおこなう。
【0035】
カウンタ回路112は、コンテキストの記述に応じて所定のループ処理をおこなうとともに、このループ処理の実行回数をカウントする。このとき、カウンタ回路112によるカウント結果は、PRDIとして、ネットワーク回路113に出力される。
【0036】
(パラメータ設定)
つぎに、コンフィグレーションデータによるパラメータ設定について説明する。なお、一般的な動的再構成回路ではPEによって実行させる演算内容に応じて様々なパラメータ設定があるが、ここでは、動的再構成回路100の特徴となるカウンタ回路1112によって実行させるループ処理のパラメータ設定に限定して説明する。
【0037】
図2は、カウンタ回路のコンフィグレーションデータのソースコードの一例を示す説明図である。図2のソースコード200には、基本的なfor−loop文が記述されている。このfor−loop文の構成のうち、(a),(b),(c),(d)が可変のパラメータとしてコンテキストごとに対応するコンフィグレーションデータが設定される。
【0038】
(a)カウンタの開始値(ループ処理の開始の初期値)と、
(b)ループ成立判定のモード(ループ実行回数がループ処理の回数の上限を満足するか否かを判定する判定式);{<,>,<=,>=}の4つの成立判定のいずれかに切り替える
(c)ループ変数の終了値
(d)ループ変数のインクリメント値((b)の判定式を満足しなかった場合カウント回数に加算する値);負の数を指定することでデクリメントカウンタになる
【0039】
なお、(a)の設定は後述するカウンタ回路の内部メモリ「Start」、(b)の設定は後述するカウンタ回路の内部メモリ「CMP−mode」、(c)の設定は後述するカウンタ回路の内部メモリ「End」、(d)の設定は後述するカウンタ回路112の内部メモリ「Step」にそれぞれ格納する。
【0040】
また、ハードウェア機能として下記の(e),(f),(g),(h)の機能切り替えをコンフィグレーションデータによって設定できる。
【0041】
(e)カウンタの起動方法
どのようなタイミングでカウンタ回路112を起動させるため設定であり、具体的には、自動起動と、トリガモードとの2種類の設定をおこなうことができる。自動起動は、シーケンサ101から出力されたCFG読み込み要求信号(FETCHEN)を受け付けてから指定サイクル後に動作を開始させるように設定する方法である。また、トリガモードは、条件分岐信号生成部102から出力されたPRDIが成立をあらわす「11」であった場合に、PRDIの入力をトリガとして動作を開始させる方法である。なお、トリガモードによる起動方法を採用する場合には、後述するカウンタ回路112の内部メモリ「Trigger−mode」を有効状態に設定する。
【0042】
(f)有効カウンタ出力のインターバル設定
カウンタ回路112によるカウント実行を1クロックごとに実行させるか、もしくは所定のクロックごとに実行させるかの設定である。上述のように、1クロックごとにカウンタを動作させることも可能だが、インターバル設定をおこなうことにより、一定の間隔を置いてカウンタを動作させることもできる。なお、インターバル設定をおこなう場合には、後述するカウンタ回路112の内部メモリ「Interval」に該当するコンフィグレーションデータを格納する。
【0043】
(g)出力モード設定
カウンタ回路112によって実行するカウント処理において、どのような条件の場合に、カウンタ回路112から外部(他のPE111やカウンタ回路112もしくは他のクラスタ)への出力をおこなうかを設定する。具体的には、ノーマル出力モードとカスケード出力モードとの二つの出力モードが用意されており、後述するカウンタ回路112の内部メモリ「Output−mode」に格納されたコンフィグレーションデータに基づいてモードを切り替える。
【0044】
[ノーマル出力モード]
ループ処理動作時には成立を示すPRDI「11」を出力し、ループ条件成立時にはPRDI「10」を出力する。また、ループ処理が停止時にはPRDI「00」を出力する。また、後段に他のカウンタ回路112が接続されている場合には、アドレスカウンタを停止させるため、ループ条件成立時に、PRDI「10」とともに、カスケード信号を1パルスアサートする。
【0045】
[カスケード出力モード]
カスケード出力モードは、後段に同一のカウンタ回路112がカスケード接続されている場合に使用する。ループ処理動作時にはPRDI「10」を出力し、カウント処理によってカウント数が同カウンタ回路112のループパラメータの初期値に達したとき、PRDI「11」を出力する。また、ループ処理停止時にはPRDI「00」を出力する。
【0046】
(h)入力モード設定
カウンタ回路112が、どのような入力を受け付けた場合にカウント処理を実行するかを設定する。具体的には、ノーマル入力モードとカスケード入力モードとの二つの入力モードが用意されており、後述するカウンタ回路112の内部メモリ「Input−mode」に格納されたコンフィグレーションデータに基づいてモードを切り替える。
【0047】
[ノーマル入力モード]
カウンタ回路112にPRDI「11」が入力された場合にカウント処理を開始し、インターバル設定に従い、クロックに同期したカウント処理を進める。なお、上述した(e)の設定により自動起動に切り替えることもできる。
【0048】
[カスケード入力モード]
カウンタ回路にPRDI「11」が入力されると、カウント値を更新する。また、PRDI「10」が入力されるとカウント値の更新を停止する。また、他のカウンタ回路112にカスケード接続されている場合、前段のカウンタ回路112(カスケード出力モードに設定されたカウンタ回路)から出力されるPRDIを受け付けて、アドレスカウンタを進めるために使用する。
【0049】
(カウンタ回路の構成)
つぎに、カウンタ回路112の構成について説明する。図3は、本実施の形態にかかるカウンタ回路の構成を示すブロック図である。図3のように、カウンタ回路112は、コンフィグレーションレジスタ部301と、有効サイクル検出部302と、ループ開始値・終了値書き換え部303と、ループ制御部304と、出力レジスタ部305とを含んで構成される。また、カウンタ回路112の各機能部301〜305には下記のような端子が接続されている。
【0050】
(入力端子)
1−1.PRDI
条件分岐信号(PRDI)の入力を受け付ける端子である。条件分岐信号「11」が入力されると成立と判断し、入力モード設定(後述する内部レジスタの「Input−mode」の設定)にしたがってカウンタ処理を実行させる。
【0051】
1−2.DI0/VI0,DI1/VI1
DIはデータ入力を受け付ける端子であり、VIは、DIに入力されたデータの有効/無効を示すvalidデータの入力を受け付ける端子である。validデータが「1」のとき、同時に入力されたDIのデータは有効であると判断する。
【0052】
1−3.CI
カスケード信号の入力を受け付ける端子である。このカスケード信号がアサート(High状態の信号入力)されたときループカウントを終了する。また、ループカウントが停止されると、つぎのコンフィグレーションデータが設定されるまでループカウント再開は不可能となる。
【0053】
1−4.CFG,FETCHEN
CFGはコンフィグレーションデータの入力を受け付ける端子である。また、FETCHENは、CFG読み込み要求信号(FETCHEN)の入力を受け付ける端子であり、起動要求信号がアサートされたときのみ、CFGに入力されたコンフィグレーションデータを後述する内部レジスタに取り込む。
【0054】
(出力端子)
2−1.PRDO
条件分岐信号(predicate:PRDO)を出力する端子であり、ループ処理の動作中/停止時/ループ条件成立時のそれぞれの状態に応じ、出力モード設定(後述する内部レジスタの「Output−mode」の設定)にしたがって条件分岐信号を出力する。
【0055】
2−2.DO/VO
DOはカウント値を示すデータを出力する端子である。また、VOはDOから出力されるカウント値の有効/無効を示すvalid信号を出力する端子である。なお、カウンタ処理の動作時、valid信号は「1」となり、カウンタ停止時、valid信号は「0」となる。
【0056】
2−3.CO
カスケード信号を出力する端子であり、出力モードがノーマル出力モードに設定されている場合には、ループ条件が成立すると、カスケード信号を1パルスアサートする。また、出力モードがカスケード出力モードに設定されている場合には、後段に接続されているカウンタ回路の入力信号の出力端子となる。なお、カスケード出力モードの際に出力されるカスケード信号は、後段のカウンタ回路のカウンタ処理を停止させるために使用する。
【0057】
つぎに、各機能部301〜305について説明する。まず、コンフィグレーションレジスタ部301は、コンテキスト開始時に各PEに供給される1パルスのFETCHEN信号をイネーブル信号として、上述したCFG端子から入力されたコンフィグレーションデータを以下の内部レジスタに取り込む。内部レジスタとは、具体的には、「Input−mode」,「Interval」,「Trigger−mode」,「Step」,「End」,「CMP−mode」,「Output−mode」,「Start」の各レジスタである。なお、これらの内部レジスタは、フリップフロップで構成される。
【0058】
有効サイクル検出部302は、コンフィグレーションレジスタ部301の内部レジスタのうちの「Input−mode」,「Interval」,「Trigger−mode」に取り込まれたコンフィグレーションデータの設定にしたがって、出力レジスタ部305にレジスタ更新のイネーブル信号(output−enable)を出力する。
【0059】
具体的には、有効サイクル検出部301は、内部メモリ「Input−mode」から出力された設定内容にしたがって、所定の条件の成立を示すPRDI「11」が入力された場合の動作を下記のように切り替える。なお、「11」以外のPRDIが入力された場合には動作しない。
【0060】
[ノーマル入力モードの場合]
ノーマル入力モードの場合、有効サイクル検出部302は、シーケンサ101から処理内容の成立を示すPRDI「11」が入力されると、カウンタ処理を開始する。カウンタ動作開始後は、クロックに同期し、Intervalに設定されたステップのタイミングでイネーブル信号(output−enable)を出力する。なお、コンフィグレーションレジスタ部301の「Trigger−mode」が自動起動に設定されている場合には、上述した設定は無効となる。
【0061】
[カスケード入力モードの場合]
カスケード入力モードの場合、有効サイクル検出部301は、上段に接続されているカウンタ回路112から所定の条件の成立を示すPRDI「11」が入力されるとループ変数を更新するためのイネーブル信号(output−enable)を出力する。
【0062】
ループ開始値・終了値書き換え部303は、カウンタ処理が停止したときにデータ入力が有効な場合(valid信号=「1」のとき)、そのパラメータを内部レジスタ「Start」と「End」とにそれぞれ書き込む。なお、初期設定ではDI0を内部レジスタ「Start」に、DI1を内部レジスタ「End」の書き換え用に割り当てているが、コンフィグレーションデータの設定により割り当てを入れ替えることもできる。
【0063】
ループ制御部304は、コンフィグレーションデータによってコンフィグレーションレジスタ部301の内部レジスタ「Step」に設定された値に応じて、カウント値を次状態に更新する。また、同じく内部レジスタ「CMP−mode」の設定にしたがってループ処理の終了判定をおこなう。この判定処理によってループ処理が終了した場合には、ループエンド信号(loop−end)を出力レジスタ部305に出力する。
【0064】
図4は、ループ制御部の構成例を示すブロック図である。図4を用いてループ制御部304によって実行されるforループ制御と条件判定について説明する。図4のように、ループ制御部304には、演算子401〜405が配置されている。
【0065】
演算子401では、ループ変数DOと、インクリメント値Stepとが入力され、加算処理がおこなわれる。演算子401による加算結果は、ループパラメータ信号(loop−param)として出力されるとともに、演算子402にも出力される。演算子402では、演算子401による加算結果と、ループ変数の終了値Endとの加減算がおこなわれ、演算結果は、演算子403および演算子404に出力される。
【0066】
演算子402による演算結果が「0」の場合には、演算子403からフラグが出力され、演算結果が「0以外」の場合には、演算子404からフラグが出力される。演算子403もしくは演算子404のいずれかから出力されたフラグは、演算子405に入力される。
【0067】
演算子405では、ループ成立判定モードを指定するCMP−modeに応じて、入力されたフラグがループ成立条件を満足するか否かを判断する。演算子405によってループ成立条件を満足すると判断された場合には、ループエンド信号(loop−end)が出力レジスタ部305に出力される。
【0068】
出力レジスタ部305は、内部レジスタ「DO」,「VO」,「CO」,「PRDDO」が用意されている。有効サイクル検出部302からイネーブル信号(output−enable)が入力された場合に、ループ制御部304からのループパラメータ信号(loop−param)を「DO」に格納し、DOとして、「VO」に格納されるvalid信号(VO)とともに外部へ出力する。また、ループパラメータ信号(loop−param)がアサートされていない場合には、「DO」の出力値の更新は停止し、同時に出力されるvalid信号の値も「0」となる。
【0069】
また出力レジスタ部305は、ループパラメータ信号(loop−param)がアサートされている場合には、「PRDDO」および「CO」に格納されたPRDIおよびCOの出力は、コンフィグレーションレジスタ部301の内部レジスタ「Output−mode」設定に依存する。また、ループパラメータ信号(loop−param)信号がアサートされない場合には、「PRDDO」の出力値はすべてPRDI「00」となる。以下、出力モードの設定ごとの処理について説明する。
【0070】
[ノーマル出力モード]
ノーマル出力モードの場合、出力レジスタ部305は、ループエンド信号(loop−end)がアサートされると、「PRDDO」よりPRDI「11」を出力するとともに、COをアサートする。また、ループエンド信号(loop−end)がアサートされていない場合には、「PRDDO」よりPRDI「10」を出力する。
【0071】
[カスケード出力モード]
カスケード出力モードの場合、出力レジスタ部305は、ループエンド信号(loop−end)がアサートされると、出力レジスタ部305の「DO」に格納する値を、コンフィグレーションレジスタ部301の内部レジスタ「Start」の値に初期化する。また、「DO」の格納値をコンフィグレーションレジスタ部301の内部レジスタ「Start」に初期化した場合には、「PRDDO」よりPRDO「11」を出力する。また、上述した動作以外のときには、「PRDDO」よりPRDO「10」を出力する。
【0072】
(カウンタ回路の動作)
つぎに、カウンタ回路112の入力モード(ノーマル、カスケード)、出力モード(ノーマル、カスケード)それぞれの設定に応じた具体的な動作内容について説明する。なお、以下説明に利用する図5〜7のタイミングチャートでは、便宜上2ビット信号の出力は「2’bxx」と表記する。
【0073】
・ノーマル入力モード−ノーマル出力モード
図5は、ノーマル入力モード−ノーマル出力モードのカウンタ回路の動作を示すタイミングチャートである。ここでは、ループ処理として「for(i=0;i<1024;i++)」と記述されたシングルループの制御をおこなう場合のカウンタ回路112の動作を示す。ここで、インターバル設定は、0とすることで毎クロック毎にカウント値が更新される。
【0074】
図5のタイミングチャートでは、クラスタ内で生成する制御信号である2ビット信号PRDI「2’bxx」が成立をあらわす「11(2b’11)」となった場合にPRDIがトリガとなり、forループカウント動作が開始される。
【0075】
ノーマル入力モード−ノーマル出力モードに設定されたカウンタ回路の動作の特徴としては、PRDI「11」でカウント処理の動作を開始させ(タイミング501)、カウント値の有効・無効はvalid信号(VO)の値で判断する。具体的にはカウント動作中はVOを「High」状態で出力させる。また、カウント処理の出力のインターバル設定を0とすることで、連続してアドレスカウントを実行させることができる。
【0076】
また、カウント処理実行中はPRDI「11」を出力し、ループ条件成立時にはPRDI「10」を出力する。さらに、カウント処理の停止タイミングでは、カスケード信号(CO)を1パルスアサートする。
【0077】
・ノーマル入力モード−カスケード出力モード
図6は、ノーマル入力モード−カスケード出力モードのカウンタ回路の動作を示すタイミングチャートである。ここでは、ループ処理として「for(i=0;i<3; i++){…}」と記述されているとする。なお、カスケード出力モードは後段に同じforループ処理をおこなうカウンタ回路112を接続する場合に設定される。すなわち、カスケード出力モードに設定することによって、後段のカウンタ回路112をPRDI「11」によって1ステップ進めることができる。
【0078】
ノーマル入力モード−カスケード出力モードのカウンタ回路の動作の特徴としては、ループ処理の動作中はループ初期値のタイミングでPRDI「11」を出力する。ループ処理の動作以外の動作時にはPRDI「10」を出力する。また、動作時にはPRDI「00」を出力する。そして、カスケード信号入力(CI)がアサートされたとき(タイミング601)にカウント処理を停止させる。
【0079】
・カスケード入力モード−ノーマル出力モード
図7は、カスケード入力モード−ノーマル出力モードのカウンタ回路の動作を示すタイミングチャートである。ここでは、ループ処理として「for(i=0;i<3;i++){…}」と記述されているとする。なお、カスケード入力モードは、同じforループ処理をおこなうカウンタ回路112のカスケード出力モードに設定されたカウンタから出力されたPRDIを受け付けて外部ループの動作をおこなう場合に設定する。
【0080】
カスケード入力モード−ノーマル出力モードのカウンタ回路の動作特徴としては、前段に接続されたカウンタ回路112からPRDI「11」が入力されると、カウント値を更新する。また、PRDI「10」が入力されると、カウント値は保持され、PRDI「0x」が入力されるとカウント値は保持される。しかし、PRDI「0x」の入力時はvalid信号(VO)が0となるため無効出力となる。また、ループ条件成立時は、にカスケード信号(CI)を出力する。
【0081】
以上説明したように、カウンタ回路112では、コンテキストに基づいて、コンフィグレーションレジスタ部301によって出力信号の出力元、出力信号の出力先そして出力信号を前記出力先に出力する条件からなるループ処理の内容が設定される。設定されたループ処理は、ループ制御部304によって実行される。そして、出力レジスタでは、実行されたループ処理の実行回数をカウントし、カウントされた実行回数および前記条件に基づいて、出力信号を前記出力先に出力される。
【0082】
さらに、カウンタ回路112は、有効検出部302によってPRDI「11」を受け付けると、前記コンテキストをあらかじめ設定されたつぎのコンテキストに基づいて、動的再構成されたPEの集合からの出力信号の出力元、出力信号の出力先、および前記出力信号を出力先に出力する条件からなるループ処理の内容を設定する。また、ループ制御部304と出力カウンタ部305とでは、切り替えられたコンテキストによって内容が設定されたループ処理を実行する設定に応じて、あらたなループ処理を実行させことができる。
【0083】
(実施例)
つぎに、上述したような本実施の形態にかかるカウンタ回路を備えた動的再構成回路の具体的な実施例について説明する。ここでは、実施例として、C言語によって多重ループ処理が記述された場合、逐次ループ処理が記述された場合の制御内容についてそれぞれ説明する。
【0084】
(1)多重ループ処理の制御
まず、多重ループ制御を実装する場合について説明する。図8は、3重ループ処理が記述されたソースコードの一例を示す説明図である。また、図9は、カウンタ回路による3重ループ処理の構成とループパラメータとを示す説明図である。図8のソースコード800のような記述がなされた場合、図9のような動的再構成回路900が構成される。
【0085】
動的再構成回路900は、ループ0〜ループ2の3つのループカウンタによって構成されて、ループパラメータ910が設定される。このときループ0にはループ1がカスケード接続され、ループ1にはループ2がカスケード接続されている。これらのループ0〜2の入出力モードは、下記の様な設定になっている。
【0086】
[各カウンタの入出力モード設定]
ループ0:ノーマル入力モード/カスケード出力モード
ループ1:カスケード入力モード/カスケード出力モード
ループ2:カスケード入力モード/ノーマル出力モード
【0087】
図10は、3重ループ処理の入出力値を示すタイミングチャートである。なお、図10のタイミングチャートにおいては、ループ0〜ループ2のRPDIおよびPRDOは所定の条件の成立をあらわす「11」の場合は、T(True)を、非成立をあらわす「10」の場合には、F(False)、無効をあらわす「0x」の場合にはN(Invalid)を示す。
【0088】
図10のタイミングチャートに示すように、ループ0では、ループ変数kで記述されている最内ループのカウント処理がおこなわれる。ループ変数jで記述されているループ1では、ループ0からTが出力されるとループカウントが開始される。このループ1もループ成立条件を満足すると、ループ変数iで記述されるループ2にTを出力する。このループ2が最外ループとなる。
【0089】
(2)ループ逐次処理の制御
つぎに、特定のループ処理が完了した後、つぎのループ処理を開始する逐次処理を実装する場合について説明する。図11は、カウンタ回路によるループ逐次処理の構成とループパラメータの一例を示す説明図である。また、図12は、ループ逐次処理の入出力値を示すタイミングチャートである。
【0090】
図11の動的再構成回路1100は、ループ0、ループ1の2つのループカウンタによって構成されて、ループパラメータ1110が設定される。これらループ0,1の入出力モードは、下記の様な設定になっている。このループ0から出力されたPRDOを、ループ1のPRDIとして受け渡しをおこなう場合、PRDIのLSB(Least Significant Bit)を反転する必要がある。これは、図12のクロック(clock)9に示すように、ループ0のループ条件が成立するまでループ0のループ処理を非成立に設定するためである。
【0091】
[各カウンタの入出力モード設定]
ループ0:ノーマル入力モード/ノーマル出力モード
ループ1:ノーマル入力モード/ノーマル出力モード
【0092】
(3)ループパラメータの書き換え処理
つぎに、ループパラメータの書き換え処理について説明する。図13は、ループパラメータの書き換え処理の一例を示す説明図である。図13の動的再構成回路1300のループ1およびループ2が配置され、ループ2の出力先にはPEが接続されており、PEによる演算結果は、ループ1に入力される。また、ループ1,2およびPEには、ループパラメータ1310が設定される。
【0093】
したがって、DI0およびDI1に有効データが入力された場合には、ループ1,2の内部で設定されたループパラメータの書き換え処理をカウント処理と連動して実行させることができる。このような書き換え処理を備えることによって、C言語によって記載された汎用性の高い記述をそのまま動的再構成回路1300に適用させることができる。
【0094】
以上説明したように、カウンタ回路、動的再構成回路およびループ処理制御方法によれば、特定のアプリケーションに限定されず、高級言語によって記述されたループ処理を適用できることから、汎用性の高いプログラムの実装が可能となる。また、条件分岐信号(PRDI)の値をカウント処理の開始/終了に反映させることによってコンテキストの切り替えを適切に実現することができる。
【産業上の利用可能性】
【0095】
以上のように、本発明にかかるカウンタ回路、動的再構成回路およびループ処理制御方法は、汎用性の高い高級言語を適用させる機器に有用であり、特に、限られたハードウェア資源で多様な機能の実現が必要とされる携帯端末機器に適している。
【図面の簡単な説明】
【0096】
【図1】本実施の形態にかかる動的再構成回路を示すブロック図である。
【図2】カウンタ回路のコンフィグレーションデータのソースコードの一例を示す説明図である。
【図3】本実施の形態にかかるカウンタ回路の構成を示すブロック図である。
【図4】ループ制御部の構成例を示すブロック図である。
【図5】ノーマル入力モード−ノーマル出力モードのカウンタ回路の動作を示すタイミングチャートである。
【図6】ノーマル入力モード−カスケード出力モードのカウンタ回路の動作を示すタイミングチャートである。
【図7】カスケード入力モード−ノーマル出力モードのカウンタ回路の動作を示すタイミングチャートである。
【図8】3重ループ処理が記述されたソースコードの一例を示す説明図である。
【図9】カウンタ回路による3重ループ処理の構成とループパラメータとを示す説明図である。
【図10】3重ループ処理の入出力値を示すタイミングチャートである。
【図11】カウンタ回路によるループ逐次処理の構成とループパラメータの一例を示す説明図である。
【図12】ループ逐次処理の入出力値を示すタイミングチャートである。
【図13】ループパラメータの書き換え処理の一例を示す説明図である。
【符号の説明】
【0097】
100,900,1100,1300 動的再構成回路
101 シーケンサ
102 条件分岐信号生成器
103 コンフィグレーションメモリ
110 PEアレー
111 PE(プロセッシングエレメント)
112 カウンタ回路

【特許請求の範囲】
【請求項1】
再構成可能なプロセッシングエレメント(以下、「PE」という)の集合を、前記PEの処理内容と前記PE間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路に配置されたカウンタ回路であって、
前記コンテキストに基づいて、動的再構成されたPEの集合からの出力信号の出力元、前記出力信号の出力先、および前記出力信号を前記出力先に出力する条件からなるループ処理の内容を設定する設定手段と、
前記設定手段によって内容が設定されたループ処理を実行する実行手段と、
前記実行手段によって実行されたループ処理の実行回数をカウントし、カウントされた実行回数および前記条件に基づいて、前記出力信号を前記出力先に出力するカウント手段と、
を備えることを特徴とするカウンタ回路。
【請求項2】
前記動的再構成回路から前記ループ処理の成立をあらわす分岐指示信号を検出する有効検出手段を備え、
前記設定手段は、前記有効検出手段の検出結果に応じて前記コンテキストをあらかじめ設定されたつぎのコンテキストに基づいて、動的再構成されたPEの集合からの出力信号の出力元、前記出力信号の出力先、および前記出力信号を前記出力先に出力する条件からなるループ処理の内容を設定し、
前記実行手段は、当該切り替えられたコンテキストによって内容が設定されたループ処理を実行する設定に応じて、あらたなループ処理を実行することを特徴とする請求項1に記載のカウンタ回路。
【請求項3】
前記コンテキストには、前記条件として、前記ループ処理の開始の初期値と、前記実行回数が前記ループ処理の回数の上限を満足するか否かを判定する判定式と、前記判定式を満足しなかった場合に前記カウント回数に加算する値とが設定されていることを特徴とする請求項1または2に記載のカウンタ回路。
【請求項4】
前記カウント手段は、前記ループ処理の実行中に前記コンテキストの切り替え信号を受け付けると、前記ループ処理のカウントを停止させ、前記ループ処理が実行されていない場合に前記コンテキストの切り替え信号を受け付けると、あらたに切り替えられたコンテキストに応じて実行されたループ処理をカウントすることを特徴とする請求項1〜3のいずれか一つに記載のカウンタ回路。
【請求項5】
前記カウント手段は、前記ループ処理のカウント回数が前記条件を満足した場合に、前記出力信号を前記出力先に出力することを特徴とする請求項3または4に記載のカウンタ回路。
【請求項6】
再構成可能なプロセッシングエレメント(以下、「PE」という)の集合と、カウンタ回路とを備え、前記PEの処理内容と前記PE間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路であって、
前記カウンタ回路は、
前記コンテキストに基づいて、動的再構成されたPEの集合からの出力信号の出力元、前記出力信号の出力先、および前記出力信号を前記出力先に出力する条件からなるループ処理の内容を設定する設定手段と、
前記設定手段によって内容が設定されたループ処理を実行する実行手段と、
前記実行手段によって実行されたループ処理の実行回数をカウントし、カウントされた実行回数および前記条件に基づいて、前記出力信号を前記出力先に出力するカウント手段と、
を備えることを特徴とする動的再構成回路。
【請求項7】
前記カウンタ回路は複数設けられ、前記コンテキストにおいて前記ループ処理が多重化されている場合、前記カウンタ回路ごとに前記各ループ処理を実行するように再構成することを特徴とする請求項6に記載の動的再構成回路。
【請求項8】
再構成可能なプロセッシングエレメント(以下、「PE」という)と、カウンタ回路との集合を、前記PEの処理内容と前記PE間の接続内容が記述されたコンテキストに応じて動的に切り替えることにより任意の処理を実行させる動的再構成回路におけるループ処理制御方法であって、
前記カウンタ回路において実行する前記コンテキストに基づいて、動的再構成されたPEの集合からの出力信号の出力元、前記出力信号の出力先、および前記出力信号を前記出力先に出力する条件からなるループ処理の内容を設定する設定工程と、
前記設定工程によって内容が設定されたループ処理を実行する実行工程と、
前記実行工程によって実行されたループ処理の実行回数をカウントするカウント工程と、
前記カウント工程によってカウントされた実行回数および前記条件に基づいて、前記出力信号を前記出力先に出力する出力工程と、
を含むことを特徴とするループ処理制御方法。
【請求項9】
前記設定工程では、前記動的再構成回路から分岐指示信号を受け付けると、前記コンテキストをあらかじめ設定されたつぎのコンテキストに基づいて、動的再構成されたPEの集合からの出力信号の出力元、前記出力信号の出力先、および前記出力信号を前記出力先に出力する条件からなるループ処理の内容を設定し、
前記実行工程は、当該切り替えられたコンテキストによって内容が設定されたループ処理を実行する設定に応じて、あらたなループ処理を実行することを特徴とする請求項8に記載のループ処理制御方法。
【請求項10】
前記カウンタ回路は複数設けられ、前記コンテキストにおいて前記ループ処理が多重化されている場合、前記カウンタ回路ごとに前記各ループ処理を実行させることを特徴とする請求項8または9に記載のループ処理制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2009−75875(P2009−75875A)
【公開日】平成21年4月9日(2009.4.9)
【国際特許分類】
【出願番号】特願2007−244314(P2007−244314)
【出願日】平成19年9月20日(2007.9.20)
【出願人】(308014341)富士通マイクロエレクトロニクス株式会社 (2,507)
【Fターム(参考)】