説明

制御装置、処理装置、処理システム、制御プログラム

【課題】処理の途中に、再構成が行われたとしても、処理ブロックは、当該処理の処理を続行することが出来る。
【解決手段】データに対してそれぞれが所定の処理を行ない、再構成可能な複数の処理手段と、前記複数の処理手段間をデータ転送可能に接続し、再構成可能な接続手段と、を含む処理装置の当該処理手段または当該接続手段のうち何れか一方を、当該処理手段の状態に基づいて、再構成する構成手段を有することを特徴とする制御装置。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置、処理装置、処理システム、制御プログラムに関する。
【背景技術】
【0002】
近年、多数の処理ブロックを搭載しており、当該処理ブロックの部分的再構成可能なFPGA(Field Programmable Gate Array)などの処理装置が提案されている。
【0003】
例えば、特許文献1では、この処理装置の利用効率を高めるために、処理対象のデータ、処理結果のデータ、処理に要した時間、などを用いて、処理装置を再構成する技術が提案されている。
【発明の概要】
【発明が解決しようとする課題】
【0004】
図1を用いて、特許文献1記載の技術の問題点を説明する。図1では、図面簡略化のために、処理ブロック10と、処理ブロック20と、の2つを記載するが、実際には、多数の処理ブロックが実装される。
【0005】
図1Aでは、処理ブロック10と処理ブロック20とは待機状態である。次に、図1Bでは、処理ブロック10に、処理対象のデータであるデータaとデータbとが入力され、処理ブロック10は、データaとデータbに対して、所定の処理を行なっている処理状態になる。図1では、待機状態である処理ブロックの参照符号に「'」を付けずに、処理状態にある処理ブロックの参照符号に「'」を付ける。例えば、処理ブロック10、処理ブロック20、処理ブロック30は待機状態にあり、処理ブロック10'、処理ブロック30'は、処理状態になる。
【0006】
そして、図1Cに示すように、処理ブロック10'が、処理状態であるとき(つまり、データaとデータbと対して処理を行っている途中に)、処理装置1000が部分的再構成され、処理ブロック10'が処理ブロック30に書き換えられたとする。そうすると、処理ブロック10'が保持していたデータaとデータbとは消失される。
【0007】
次に、図1Dに示すように処理ブロック30には、データcとデータdとが入力されて、処理状態になる(図1Dでは、処理ブロック30'と記載)。そして、図1Eに示すように、処理ブロック30の処理が終了した後に、処理装置1000が部分的再構成されて、処理ブロック30から処理ブロック10に書き換えられたとする。
【0008】
そうすると、処理ブロックが保持していたデータaとデータbとは消失されるので、処理ブロック10に書き換えられたとしても、処理ブロック10は、データaとデータbとに対する処理を続行することが出来ない、という問題がある。
【0009】
本発明では、このような問題を鑑みて、処理の途中に、再構成が行われたとしても、処理ブロックは、当該処理の処理を続行することが出来る制御装置、処理装置、処理システム、制御プログラムを提供する。
【課題を解決するための手段】
【0010】
上記目的を達成するため、データに対してそれぞれが所定の処理を行ない、再構成可能な複数の処理手段と、前記複数の処理手段間をデータ転送可能に接続し、再構成可能な接続手段と、を含む処理装置の当該処理手段または当該接続手段のうち何れか一方を、当該処理手段の状態に基づいて、再構成する構成手段を有することを特徴とする制御装置を提案する。
【発明の効果】
【0011】
本発明の制御装置、処理装置、処理システム、制御プログラムであれば、処理の途中に、再構成が行われたとしても、処理ブロックは、当該処理の処理を続行することが出来る。
【図面の簡単な説明】
【0012】
【図1】従来技術の問題点を説明するための図。
【図2】本実施例の処理装置の機能構成例を示す図。
【図3】本実施例の処理ブロックの機能構成例を示す図。
【図4】本実施例の制御装置の機能構成例を示す図。
【図5】本実施例の制御装置の処理フローの一例を示す図。
【図6】本実施例の処理ブロックが再構成される場合を示す図。
【図7】本実施例のデータバス再構成の処理フローの一例を示す図。
【図8】本実施例のデータバスの再構成後の処理装置の機能構成例を示す図。
【図9】別の実施形態の制御装置の機能構成例を示す図。
【図10】別の実施形態の制御装置の処理フローの一例を示す図。
【発明を実施するための形態】
【0013】
[実施形態1]
本実施例の処理装置は、再構成可能な処理装置である。再構成可能な処理装置とは、例えば、「FPGA(Field Programmable Gate Array)」や「DRP(Dynamically Reconfigurable Processor)」や「DAPDNA(DIGITAL Application Processor Distributed Network Architecture)などがある。また、再構成可能とは、処理装置の「全体的再構成」と「部分的再構成」を含む。また、以下の説明では、「処理手段」を「処理ブロック」といい、「接続手段」を「データバス」という。
【0014】
図2に、本実施形態1の処理装置2000について示す。図2では説明簡略化のために、6個の処理ブロック10〜60を示しているが、実際は、多数の処理ブロックが実装される。処理ブロック10〜60は、データに対して、所定の処理を行うものである。データが例えば、画像データである場合には、所定の処理とは、画像処理であり、データが例えば、数値である場合には、所定の処理とは、演算処理である。所定ブロックが行う処理についてはこれらの処理に限られない。
【0015】
また、各処理ブロック10〜60はデータバス2020によりデータ転送可能に接続される。図2では、処理ブロック10、処理ブロック20、処理ブロック30、処理ブロック60がデータバス2020により接続されている。そして、データの流れは、処理ブロック10→処理ブロック20→処理ブロック30→処理ブロック60となり、処理ブロック60により出力されるデータが、処理装置2000の処理結果であるとして、処理装置2000から出力される。また、処理ブロック40、処理ブロック50に付されている矢印については終端処理が施されることを意味する。
【0016】
また、各々の処理ブロック10〜60に接続されているデータバス2020が配置されている領域をデータバス領域2010という。制御ブロック80、第2記憶手段2030については後述する。また、処理ブロック10〜60およびデータバス2020については、共に、再構成可能とされている。
【0017】
図3に、処理ブロック10〜60の機能構成例を示す。処理ブロック10〜60はLUT152(Look Up Table)と、レジスタ154などを含む。また、処理ブロック10〜60は、入力ポート156と、出力ポート158と、を有する。入力ポート156または出力ポート158にはそれぞれデータバス2020が接続される。そして、データバス2020により処理ブロック10〜60の入力ポートからデータが入力され、データバス2020により出力ポート158からデータは出力される。処理ブロック10〜60の構成は図3の例に限られない。
【0018】
図4に本実施形態1の制御装置100の機能構成例を示す。また、図5に、制御装置100の処理フローを示す。
【0019】
まず、取得手段103が、再構成指示情報を取得したか否かを判断する(ステップS102)。ここで、再構成指示情報とは、制御装置100に処理装置2000の再構成を行わせるトリガーとなる情報である。再構成指示情報には、処理装置2000の再構成後の形態について示す形態情報も含まれる。再構成指示情報は、ユーザにより入力手段102から入力されるようにしてもよいし、取得手段103が所定時間ごとに取得するようにしてもよい。ステップS102でYesであれば、ステップS104に移行する。また、入力手段102とは、マウス、キーボード、所定の情報を表示する表示手段(例えば、モニタであり、図示せず)の表示画面上に重畳するように設けられたタッチパネルなどを含む。例えば、ユーザは、キーボードやマウスなどを用いて、HDL(Hardware Description Language)言語などにより形態情報をプログラミングして、入力する。
【0020】
次に、判断手段104が、処理装置2000中の処理ブロック10〜60の状態を判断する(ステップS104)。そして、構成手段106は、判断手段104が判断した処理ブロック10〜60の状態に基づいて、処理ブロックの再構成を行うか、または、データバス2020の再構成を行なうか、を定める。
【0021】
ここで、構成手段106が、処理ブロック10〜60が第1状態である場合には、データバス2020を再構成する。また処理ブロック10〜60が第2状態である場合には、処理ブロック10〜60のうち、少なくとも1個を再構成する。以下に、第1状態、第2状態について説明するが、今回の再構成をN回目(Nは自然数)の再構成とする。
【0022】
まず、第1状態について説明する。第1状態とは、処理ブロック10〜60のうち、以下の(1)〜(4)を全て満たす1以上の処理ブロックAが存在する状態である。(1)〜(4)とは、(1)データを処理している途中などの理由により、消失されるべきではない内容情報を保持しており、(2)N回目の再構成により、他の処理ブロックBに書き換えられ、(3)N+1回目(次回)以降の再構成により、元の処理ブロックAに戻されることが判明しており、(4)(1)の段階で、当該元の処理ブロックAが保持していた消失されるべきでない内容情報が保存されるべき(初期化されるべきではない)、ということである。ユーザは、(1)〜(4)について制御装置100に認識させるための情報を入力手段102から入力する。(1)で述べた内容情報とは、設定パラメータや、処理対象のデータ、処理ブロックの内部状態などを含むものである。
【0023】
また、単に、第1状態とは、(1)で述べた、処理ブロック10〜60のうち、データを処理している途中の処理ブロックが存在している状態としてもよい。
【0024】
次に、第2状態について説明する。第2状態とは、処理ブロック10〜60のうち、以下の(5)、(6)を全て満たしている1以上の処理ブロックCが存在する状態である。(5)、(6)とは、(5)N回目の再構成により、他の処理ブロックDに書き換えられ、(6)N+1回目以上の再構成により、初期化されて(内容情報が消去されて)元の処理ブロックCに戻されることが判明している、である。ユーザは(5)、(6)について制御装置100に認識させるための情報を入力手段102から入力する。
【0025】
また、単に、第2状態とは、全ての処理ブロック10〜60が処理をしていない状態である、としてもよい。
【0026】
以下では、第1状態を「処理ブロック10〜60のうち、データを処理している途中の処理ブロックが存在している状態(以下、「処理状態」という。」とし、第2状態を「全ての処理ブロック10〜60が処理をしていない状態(「待機状態」という。)」とする。
【0027】
判断手段104は、処理ブロック10〜60が第1状態である処理状態(処理途中)であるか否かを判断する。具体的な手法として、処理装置2000の制御ブロック80(図2参照)が、処理ブロック10〜60が処理状態(第1状態)か待機状態(第2状態)かを判断し、処理ブロック10〜60の状態情報を判断手段104に送信する。状態情報とは、処理ブロック10〜60が、処理状態であるか、または、待機状態であるか、を示す情報である。処理ブロック10〜60が、処理状態であれば、制御ブロック80が、処理状態であることを示す状態情報を送信する。また、処理ブロック10〜60が、待機状態であれば、制御ブロック80が、待機状態であることを示す状態情報を送信する。判断手段104による、処理ブロック10〜60の状態判断手法については、この手法に限られない。
【0028】
そして、判断手段104は、状態情報を解析することにより、処理ブロック10〜60(処理装置2000)が、処理途中(処理状態)か否かを判断する(ステップS104)。ここで、処理ブロック10〜60に、処理途中の処理ブロックが存在する場合について説明する。処理ブロック10〜60のうち、処理途中の処理ブロックを処理ブロック30とする(つまり、処理ブロック30')。
【0029】
図6に、処理途中の処理ブロック30'について示す。図6Aに示すように、処理ブロック30'は、処理対象であるデータaとデータbとを保持している(データaとデータbに対して処理している)。そして、処理ブロック10〜60に対して、再構成が行なわれ
、処理ブロック30→処理ブロック70に再構成されると、処理ブロック30'が保持しているデータaとデータbなどを含む内容情報が消失する。そして、図6Cに示すように、再び、処理ブロック70から処理ブロック30に書き換えられるように、再構成されると、データaとデータbとが消失されているために、図6Aに示す処理ブロック30'が行なっていた処理を続行することが出来なくなる。
【0030】
従って、処理手段10〜60が、処理途中である場合には、構成手段106は、データバスを再構成する(ステップS106)。このようにすることで、処理手段30が保持しているデータa、データbとを消失させることは無い。
【0031】
次に、ステップS106のデータバス2020の再構成の処理フローについて、図7を用いて説明する。まず、制御手段110は、現時点で行なわれているデータ転送が終了したらデータ転送を停止する指示である停止指示情報を、処理装置2000の制御ブロック80(図2参照)に対して、送信する(ステップS202)。制御ブロック80は、停止指示情報を受信すると、現時点で行なわれているデータ転送が終了したら、データ転送を停止させる。当該データ転送を停止させる理由は、データ転送途中に、データバス2020の再構成が行われると、当該転送途中のデータが消失する場合があるからである。
【0032】
そして、制御ブロック80は、転送途中のデータの転送が終了してデータ転送を停止すると、当該データ転送が停止したことを示すデータ転送停止情報を処理装置2000に対して送信する。そして、制御装置100の制御手段110が、当該送信されたデータ転送停止情報を受信すると(ステップS204のYes)、ステップS206に移行する。
【0033】
そして、構成手段106は、処理装置2000に対して、データバス2020を再構成するためのデータバス再構成情報を送信する(ステップS206)。ここで、構成手段106によるデータバス再構成情報の送信処理の具体的手法の一例を説明する。図4記載の第1記憶手段108とは、例えば、Flash ROMであり、複数のConfigデータが予め格納されている。当該複数のConfigデータには、複数のデータバス再構成用のConfigデータと、複数の処理ブロック再構成用のConfigデータとが含まれている。
【0034】
また、第2記憶手段2030とは、例えば、Config RAMである。また、データバス再構成情報とは、データバス再構成用のConfigデータである。そして、構成手段106は、ステップS102(図5参照)で入力された形態情報に対応するデータバス再構成用Configデータを、第1記憶手段108(Flash RAM)から抽出し、第2記憶手段2030(Config RAM)に書き込む。上述したように、形態情報は、ステップS102で入力された再構成指示情報に含まれるものである。データバス再構成用のConfigデータが第2記憶手段2030に書き込まれると、制御ブロック80は、当該データバス再構成用のConfigデータに基づいたデータバス2020の再構成を行なう。また、構成手段106が、データバス再構成情報を送信する手法は、Configデータを用いた手法に限られない。
【0035】
図8に、データバス2020が再構成された処理装置2000の一例を示す。図8の例では、データの流れが、処理ブロック10→処理ブロック40→処理ブロック50→処理ブロック60となるように、データバス2020が再構成された。
【0036】
説明を図5に戻す。判断手段104が、処理ブロック10〜60が処理途中でないと判断した場合(ステップS104のNo)、構成手段106は、処理ブロック10〜60のうち、少なくとも1個を再構成する(ステップS110)。具体的には、構成手段106は、処理ブロック再構成情報を処理装置2000に対して送信する(図7記載のステップS206と対応)。上述したConfigデータを用いた手法で、更に詳細に説明する。構成手段106は、ステップS102(図5参照)で入力された形態情報に対応する処理ブロック再構成用Configデータを、第1記憶手段108(Flash RAM)から抽出し、第2記憶手段2030(Config RAM)に書き込む。上述したように、形態情報は、ステップS102で入力された再構成指示情報に含まれるものである。処理ブロック再構成用Configデータが第2記憶手段2030に書き込まれると、制御ブロック80は、当該処理ブロック再構成用Configデータに基づいて、処理ブロック10〜60のうち少なくとも1つの再構成を行なう。
【0037】
このように、本実施形態1の制御装置では、構成手段106は、処理ブロック10〜60の状態に基づいて、「処理ブロック10〜60の少なくとも1つ」または「データバス2020」のうち何れか一方を、再構成する(図5記載のステップS104)。ここで、処理ブロック10〜60の状態とは、例えば、処理状態と待機状態である。そして、処理ブロック10〜60のうち少なくとも1つが処理状態であれば(ステップS104のYes)、データバス2020を再構成する。
【0038】
従って、処理状態にある処理ブロックが保持している(処理している)データが消失されることはない。よって、処理の途中に、再構成が行われて処理ブロックが書き換えられ、次回以降の再構成により元の処理ブロックに書き換えられた(戻された)としても、当該元の処理ブロックは、データが消失されていないことから当該処理を続行することが出来る。
[実施形態2]
次に、実施形態2の制御装置200について説明する。図9に制御装置200の機能構成例を示し、図10に制御装置200の処理フローを示す。図9は、図4と比較して、比較手段112が追加されている点で異なる。また、図10は図5と比較して、ステップS302が追加されている点で異なる。以下の説明では、処理ブロック10〜60を構成するためのリソースを処理ブロックリソースとし、データバス2020を構成するためのリソースをデータバスリソースとする。また、データバス2020が、アービトレーションなどの機能を全て具備するものとする。また、全体のリソースに対する処理ブロックリソースの割合が50%とし、全体のリソースに対するデータバスリソースの割合が20%とする。
【0039】
判断手段104が、ステップS104で、複数の処理ブロックのうち、少なくとも1つが処理途中である場合(ステップS104のNo)、ステップS302に移行する。ステップS302では、比較手段112は、データバスリソースの大きさと、処理ブロックリソースの大きさと、を比較する(ステップS302)。ここで、処理ブロックリソースの大きさ(全体の50%)の方が、データバスリソースの大きさ(全体の20%)よりも大きい。従って、比較手段112は、データバスリソースの大きさ<処理ブロックリソースの大きさ、となると判断して(ステップS302のYes)、処理ブロック10〜60を再構成する(ステップS110)。何故なら、リソースが小さいデータバス2020を再構成するよりも、リソースが大きい処理ブロック10〜60を再構成したほうが、全体のリソースを有効活用できるからである。
【0040】
また、逆に、全体のリソースに対する処理ブロックリソースの割合が20%とし、全体のリソースに対するデータバスリソースの割合が50%とする。この場合には、比較手段112は、処理ブロックリソースの大きさ<データバスリソースの大きさであると判断して(ステップS302のNo)、データバス2020を再構成する(ステップS106)。何故なら、リソースが小さい処理ブロック10〜60を再構成するよりも、リソースが大きいデータバス2020を再構成したほうが、全体のリソースを有効活用できるからである。
【0041】
また、全体のリソースに対する処理ブロックリソースの割合が20%とし、全体のリソースに対するデータバスリソースの割合が50%とする。そして、データバス2020を再構成することを前提として、機能削減することによってデータバスリソースを30%削減し、データバスリソースの割合を20%とする。そうすると、処理ブロックリソースの割合、データバスリソースの割合は共に20%となる。
【0042】
このように、データバスリソースの大きさ=処理ブロックリソースの大きさとなる場合には(ステップS302の「=」)、ステップS104に戻り、再び、ステップS104の処理を行なう。また、削減された30%のデータバスリソースは、他の用途(例えば、処理ブロック等)に割り当てることが出来る。また、データバスリソースの大きさ=処理ブロックリソースの大きさとなる場合には、データバス2020と処理ブロック10〜60のうち、どちらかを再構成するようにしても良い。
【0043】
この実施形態2の制御装置200であれば、データバスリソースの大きさと、処理ブロックリソースの大きさと、に基づいて、データバス2020と、処理ブロックリ10〜60のうち、どちらか一方を再構成する。従って、処理装置の全体のリソースを効率よく利用できるという有利な効果を奏する。
[データバスの再構成について]
本実施例の処理装置2000のように、データバス2020を再構成可能にすることで、当該再構成するときに必要なデータバス2020の接続のみを変更することができる。従って、その他の処理を考慮した冗長な機能・性能を省略することが出来る。よって、データバス2020を再構成不可能にした処理装置と比較して、装置規模の小型化・製造コストの低下を図ることが出来る。
【0044】
また、データバス2020を再構成可能にすることで、データバス2020に接続される処理ブロック数を減少させることが出来る。従って、データバスの動作周波数を高速にすることが出来る。また、データバスの物理的な負荷を減少させることが出来る。また、データ転送での衝突を考慮しなくてよいので、アービトレーションやバッファを省くことが出来る。
【0045】
また、処理を行っていない処理ブロックについては、終端されるように、データバス2020を再構成することが好ましい。何故なら、処理を行っていない処理ブロックが不測の処理を行うことを防止するためである。
[その他]
また、本実施例の制御装置は、以上の例に限らず、本実施例の要旨を逸脱することなく、その他様々の構成をとりうることはもちろんである。
【0046】
以上説明した本実施例の制御装置はコンピュータに通信プログラムを解読させて実現することができる。この実施例で提案する通信プログラムはコンピュータが解読可能なプログラム言語によって記述され、磁気ディスク或はCD−ROM等の記録媒体に記録され、これら記録媒体からコンピュータにインストールされるか、又は通信回線を通じてコンピュータにインストールされ、コンピュータに備えられたCPUに解読されて制御装置として機能する。
【符号の説明】
【0047】
10〜60 処理ブロック
80 制御ブロック
102 入力手段
103 取得手段
104 判断手段
106 構成手段
110 制御手段
114 設定手段
108 第1記憶手段
2000 処理装置
2010 データバス領域
2020 データバス
2030 第2記憶手段
【先行技術文献】
【特許文献】
【0048】
【特許文献1】特開2008−33702号公報

【特許請求の範囲】
【請求項1】
データに対してそれぞれが所定の処理を行ない、再構成可能な複数の処理手段と、
前記複数の処理手段間をデータ転送可能に接続し、再構成可能な接続手段と、を含む処理装置の当該処理手段または当該接続手段のうち何れか一方を、当該処理手段の状態に基づいて、再構成する構成手段を有することを特徴とする制御装置。
【請求項2】
前記構成手段は、前記処理手段が前記所定の処理を行なっている場合には、前記接続手段を再構成することを特徴とする請求項1記載の制御装置。
【請求項3】
前記構成手段は、前記処理手段が前記所定の処理を行っていない場合に、前記処理手段を構成するための処理手段リソースの大きさと、前記接続手段を構成するためのリソースの大きさと、に基づいて、前記処理手段または前記接続手段のうち何れか一方を再構成することを特徴とする請求項1または2記載の制御装置。
【請求項4】
データに対してそれぞれが所定の処理を行ない、再構成可能な複数の処理手段と、
前記複数の処理手段間をデータ転送可能に接続し、再構成可能な接続手段と、を含む処理装置であって、
制御装置により、当該処理手段または当該接続手段のうち何れか一方が、当該処理手段の状態に基づいて再構成されることを特徴とする処理装置。
【請求項5】
前記処理手段が前記所定の処理を行なっている場合には、前記接続手段が再構成されることを特徴とする請求項4記載の処理装置。
【請求項6】
前記処理手段が前記所定の処理を行っていない場合に、前記処理手段を再構成するための第1再構成情報の容量と、前記接続手段を再構成するための第2再構成情報の容量と、に基づいて、前記処理手段または前記接続手段のうち何れか一方が、再構成されることを特徴とする請求項4または5記載の処理装置。
【請求項7】
データに対してそれぞれが所定の処理を行ない、再構成可能な複数の処理手段と、
前記複数の処理手段間をデータ転送可能に接続し、再構成可能な接続手段と、を含む処理装置と、
制御装置と、を含む処理システムにおいて、
前記制御装置は、
当該処理手段または当該接続手段のうち何れか一方を、当該処理手段の状態に基づいて、再構成する構成手段を有することを特徴とする処理システム。
【請求項8】
前記構成手段は、前記処理手段が前記所定の処理を行なっている場合には、前記接続手段を再構成することを特徴とする請求項7記載の処理システム。
【請求項9】
前記構成手段は、前記処理手段が前記所定の処理を行っていない場合に、前記処理手段を再構成するための第1再構成情報の容量と、前記接続手段を再構成するための第2再構成情報の容量と、に基づいて、前記処理手段または前記接続手段のうち何れか一方を再構成することを特徴とする請求項7または8記載の処理システム。
【請求項10】
コンピュータを、請求項1〜3何れか1項に記載の制御装置の各手段として機能させるための制御プログラム。

【図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


【公開番号】特開2013−9044(P2013−9044A)
【公開日】平成25年1月10日(2013.1.10)
【国際特許分類】
【出願番号】特願2011−138758(P2011−138758)
【出願日】平成23年6月22日(2011.6.22)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】