(57)【特許請求の範囲】
【請求項１】
処理を実行するプロセッサと、
前記プロセッサの処理を実現する回路を動的に再構成可能な再構成可能回路とを有し、
前記再構成可能回路は、複数のクラスタを有し、
前記複数のクラスタの各々は、回路を再構成可能な複数の領域を有し、
前記クラスタ内の複数の領域には、同じ種類のシステム定義回路が構成されており、
前記プロセッサは、
前記システム定義回路以外の回路を動作開始させる場合には、前記複数のクラスタの各々の前記システム定義回路の動作率のうちで、前記システム定義回路の動作率が最も低いクラスタ内の領域に、前記システム定義回路以外の回路を再構成するように制御し、
前記システム定義回路以外の回路を動作終了させる場合には、前記システム定義回路以外の回路が再構成されている領域に、前記システム定義回路を再構成するように制御することを特徴とする処理装置。
【請求項２】
前記システム定義回路の動作率は、単位時間当たりの平均動作率又は最大動作率であることを特徴とする請求項１記載の処理装置。
【請求項３】
前記複数のクラスタの領域には、それぞれ、異なる種類のシステム定義回路が構成されていることを特徴とする請求項１又は２記載の処理装置。
【請求項４】
前記再構成可能回路は、ＦＰＧＡであることを特徴とする請求項１〜３のいずれか１項に記載の処理装置。
【請求項５】
処理を実行するプロセッサと、
前記プロセッサの処理を実現する回路を動的に再構成可能な再構成可能回路とを有する処理装置の制御方法であって、
前記再構成可能回路は、複数のクラスタを有し、
前記複数のクラスタの各々は、回路を再構成可能な複数の領域を有し、
前記クラスタ内の複数の領域には、同じ種類のシステム定義回路が構成されており、
前記プロセッサにより、前記システム定義回路以外の回路を動作開始させる場合には、前記複数のクラスタの各々の前記システム定義回路の動作率のうちで、前記システム定義回路の動作率が最も低いクラスタ内の領域に、前記システム定義回路以外の回路を再構成するように制御し、
前記プロセッサにより、前記システム定義回路以外の回路を動作終了させる場合には、前記システム定義回路以外の回路が再構成されている領域に、前記システム定義回路を再構成するように制御することを特徴とする処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理装置及び処理装置の制御方法に関する。
【背景技術】
【０００２】
内部の回路を再構成可能な集積回路であって同一形状の複数の分割領域に区切られた集積回路と、複数の分割領域の各々にアクセス可能なプロセッサとを有する演算装置が知られている（特許文献１参照）。記憶部は、複数の分割領域の各々が使用中か否かを示す使用情報を記憶する。プロセッサは、特定回路を集積回路に構成させた場合の特定回路の形状を示す形状情報を取得する。プロセッサは、複数の分割領域の各々について使用中か否かを示す使用情報に基づいて、複数の分割領域のうち少なくともいずれかの分割領域を含む未使用領域であって、取得した形状情報が示す形状に適合する未使用領域を検出する。プロセッサは、未使用領域を検出できた場合、集積回路に対して、検出した未使用領域に特定回路を構成させる処理を実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−３９１５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数の仮想マシンが再構成可能な集積回路を共用する場合、複数の仮想マシンはそれぞれ独立して集積回路を使用する。そのため、集積回路全体として効率よく内部の回路を再構成することが困難である。
【０００５】
１つの側面では、本発明の目的は、再構成可能回路内の回路を効率よく再構成することができる処理装置及び処理装置の制御方法を提供することである。
【課題を解決するための手段】
【０００６】
処理装置は、処理を実行するプロセッサと、前記プロセッサの処理を実現する回路を動的に再構成可能な再構成可能回路とを有し、前記再構成可能回路は、複数のクラスタを有し、前記複数のクラスタの各々は、回路を再構成可能な複数の領域を有し、前記クラスタ内の複数の領域には、同じ種類のシステム定義回路が構成されており、前記プロセッサは、前記システム定義回路以外の回路を動作開始させる場合には、前記複数のクラスタの各々の前記システム定義回路の動作率のうちで、前記システム定義回路の動作率が最も低いクラスタ内の領域に、前記システム定義回路以外の回路を再構成するように制御し、前記システム定義回路以外の回路を動作終了させる場合には、前記システム定義回路以外の回路が再構成されている領域に、前記システム定義回路を再構成するように制御する。
【発明の効果】
【０００７】
１つの側面では、再構成可能回路内の回路を効率よく再構成することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施形態による処理装置の構成例を示す図である。
【図２】図２は、再構成可能回路の構成例を示す図である。
【図３】図３は、クラスタの構成例を示す図である。
【図４】図４（Ａ）〜（Ｃ）は、本実施形態による処理装置の制御方法を示す図である。
【発明を実施するための形態】
【０００９】
図１は、本実施形態による処理装置の構成例を示す図である。処理装置は、プロセッサ１０１と、メインメモリ１０３と、入出力（Ｉ／Ｏ）ブリッジ回路１０４と、再構成可能回路（リコンフィギュラブル回路）１０５と、ＧＰＵ（graphics processing unit）１０６と、周辺回路１０７と、ＤＲＡＭ（dynamic random access memory）１０８と、ＤＲＡＭ１０９とを有する。メインメモリ１０３は、例えばＤＲＡＭであり、プログラムを記憶する。プロセッサ１０１は、例えば中央処理ユニット（ＣＰＵ）であり、メインメモリ１０３内のプログラムを実行することにより、複数の仮想マシン（ＶＭ）１０２として動作し、処理を実行する。なお、複数の仮想マシン１０２の処理は、複数のアプリケーション又はスレッドの処理でもよい。入出力ブリッジ回路１０４は、プロセッサ１０１と、再構成可能回路１０５と、ＧＰＵ１０６と、周辺回路１０７との間の接続を制御する。再構成可能回路１０５は、例えばＦＰＧＡ（field-programmable gate array）であり、プロセッサ１０１の処理を実現する回路を動的に再構成可能である。なお、再構成可能回路１０５は、ＦＰＧＡ以外の再構成可能回路でもよい。ＤＲＡＭ１０８は、再構成可能回路１０５に接続される。ＧＰＵ１０６は、画像処理を行うプロセッサである。ＤＲＡＭ１０９は、ＧＰＵ１０６に接続される。周辺回路１０７は、例えば、ハードディスクドライブ装置又はネットワークインターフェース回路等である。プロセッサ１０１は、メインメモリ１０３内のプログラムを実行することにより、処理を実行する。ここで、プロセッサ１０１は、処理の一部を高速化するため、再構成可能回路１０５内の回路をアクセラレータとして使用する。再構成可能回路１０５内の回路は、ハードウェアであるため、プロセッサ１０１のプログラム処理に比べて、高速処理が可能である。複数の仮想マシン１０２は、再構成可能回路１０５内の回路を共用する。
【００１０】
図２は、図１の再構成可能回路１０５の構成例を示す図である。再構成可能回路１０５は、複数のクラスタ２０１Ａ〜２０１Ｐと、入出力インターフェース回路２０２と、ＤＲＡＭインターフェース回路２０３とを有する。複数のクラスタ２０１Ａ〜２０１Ｐは、入出力インターフェース回路２０２を介して、入出力ブリッジ回路１０４に接続される。また、複数のクラスタ２０１Ａ〜２０１Ｐは、ＤＲＡＭインターフェース回路２０３を介して、ＤＲＡＭ１０８に接続される。
【００１１】
図３は、図２のクラスタ２０１Ａの構成例を示す図である。以下、クラスタ２０１Ａの構成例を説明するが、クラスタ２０１Ｂ〜２０１Ｐもクラスタ２０１Ａと同じ構成を有する。クラスタ２０１Ａは、伝送線３００を介して、入出力インターフェース回路２０２及びＤＲＡＭインターフェース回路２０３に接続される。クラスタ２０１Ａは、複数の領域３０１Ａ〜３０１Ｄと、ディスパッチャ３０２とを有する。ディスパッチャ３０２は、複数の命令キュー（コマンドキュー）３０３と、ルーター３０４と、タイマ３０５と、動作率監視部３０６とを有する。複数の領域３０１Ａ〜３０１Ｄは、それぞれ、回路を再構成可能な領域である。複数の命令キュー３０３は、プロセッサ１０１から入力した命令を記憶する。ルータ３０４は、複数の命令キュー３０３内の命令をそれぞれ複数の領域３０１Ａ〜３０１Ｄに出力し、複数の領域３０１Ａ〜３０１Ｄに対してデータを入出力する。タイマ３０５は、単位時間を計測する。動作率監視部３０６は、複数の領域３０１Ａ〜３０１Ｄの回路が動作中及び待機中のいずれであるのかを監視し、単位時間毎の平均動作率又は最大動作率を検出する。
【００１２】
プロセッサ１０１は、システム定義回路（ＳＤＬ）及びユーザ定義回路（ＵＤＬ）を領域３０１Ａ〜３０１Ｄに動的に再構成することができる。システム定義回路は、標準回路であり、例えば、行列演算回路、ブロック暗号回路、及びOpenGL又はOpenCVのライブラリ関数を実行する回路等である。その場合、命令キュー３０３には、行列演算命令又はブロック暗号命令等が記憶される。また、システム定義回路は、単機能のデジタル処理回路でもよいし、浮動小数点処理ユニット（ＦＰＵ）のように複数の機能群のデジタル処理回路でもよい。ユーザ定義回路は、システム定義回路（標準回路）以外の回路である。以下、図４（Ａ）〜（Ｃ）を参照しながら、処理装置の制御方法を説明する。
【００１３】
図４（Ａ）は、クラスタ２０１Ａ及び２０１Ｂ内の領域３０１Ａ〜３０１Ｄの回路の構成例を示す図である。初期時には、プロセッサ１０１は、クラスタ２０１Ａ内の複数の領域３０１Ａ〜３０１Ｄには同じ第１のシステム定義回路ＳＤＬ−Ａを構成し、クラスタ２０１Ｂ内の複数の領域３０１Ａ〜３０１Ｄには同じ第２のシステム定義回路ＳＤＬ−Ｂを構成する。これは、システム定義回路は使用される頻度が高いためである。複数のクラスタ２０１Ａ〜２０１Ｐの各々には、それぞれ、同じ種類のシステム定義回路が複数の領域３０１Ａ〜３０１Ｄに構成される。また、複数のクラスタ２０１Ａ〜２０１Ｐには、それぞれ、異なる種類のシステム定義回路が領域３０１〜３０１Ｄに構成される。クラスタ２０１Ａには複数の第１のシステム定義回路ＳＤＬ−Ａが構成されているので、複数の仮想マシン１０２は、同じ種類の第１のシステム定義回路ＳＤＬ−Ａを同時に使用可能である。多数の第１のシステム定義回路ＳＤＬ−Ａが同時に使用される場合には、クラスタ２０１Ａ及び２０１Ｂ内の領域３０１Ａ〜３０１Ｄのすべてに第１のシステム定義回路ＳＤＬ−Ａを構成するようにしてもよい。プロセッサ１０１が領域３０１Ａ〜３０１Ｄの回路をそれぞれ使用中である場合には領域３０１Ａ〜３０１Ｄの回路はそれぞれ動作中であり、プロセッサ１０１が領域３０１Ａ〜３０１Ｄの回路をそれぞれ使用中でない場合には領域３０１Ａ〜３０１Ｄの回路はそれぞれ待機中である。
【００１４】
図４（Ａ）の状態で、プロセッサ１０１は、ユーザ定義回路（ＵＤＬ）の動作開始命令４０１を入力し、ユーザ定義回路（ＵＤＬ）を動作開始させる場合には、複数のクラスタ２０１Ａ〜２０１Ｐの各々のシステム定義回路（ＳＤＬ）の動作率のうちで、システム定義回路（ＳＤＬ）の動作率が最も低いクラスタ内の待機中の回路の領域に、ユーザ定義回路（ＵＤＬ）を再構成するように制御する。システム定義回路（ＳＤＬ）の動作率は、例えば、単位時間当たりの平均動作率又は最大動作率であり、動作率監視部３０６により検出される。
【００１５】
例えば、クラスタ２０１Ａでは、４個のシステム定義回路ＳＤＬ−Ａのうち、３個のシステム定義回路ＳＤＬ−Ａの領域３０１Ａ〜３０１Ｃが動作中であり、１個のシステム定義回路ＳＤＬ−Ａの領域３０１Ｄが待機中であるので、システム定義回路の動作率は、３／４である。また、クラスタ２０１Ｂでは、４個のシステム定義回路ＳＤＬ−Ｂのうち、１個のシステム定義回路ＳＤＬ−Ｂの領域３０１Ａが動作中であり、３個のシステム定義回路ＳＤＬ−Ｂの領域３０１Ｂ〜３０１Ｄが待機中であるので、システム定義回路の動作率は、１／４である。したがって、図４（Ｂ）に示すように、プロセッサ１０１は、システム定義回路（ＳＤＬ）の動作率が最も低いクラスタ２０１Ｂ内の待機中の回路の領域３０１Ｄに、ユーザ定義回路（ＵＤＬ）を再構成するように制御する。これにより、プロセッサ１０１は、再構成可能回路１０５に効率よく回路を再構成することができる。
【００１６】
なお、図４（Ｂ）のクラスタ２０１Ｂの場合、３個のシステム定義回路ＳＤＬ−Ｂのうち、１個のシステム定義回路ＳＤＬ−Ｂの領域３０１Ａが動作中であり、２個のシステム定義回路ＳＤＬ−Ｂの領域３０１Ｂ及び３０１Ｃが待機中であるので、システム定義回路の動作率は、１／３である。
【００１７】
図４（Ｂ）の状態で、プロセッサ１０１は、クラスタ２０１Ｂの領域３０１Ｄのユーザ定義回路（ＵＤＬ）の動作終了命令４０２を入力し、ユーザ定義回路（ＵＤＬ）を動作終了させる場合には、そのユーザ定義回路（ＵＤＬ）が再構成されているクラスタ２０１Ｂの領域３０１Ｄに、図４（Ｃ）に示すように、第２のシステム定義回路ＳＤＬ−Ｂを再構成する（戻す）ように制御する。これにより、プロセッサ１０１は、次回、第２のシステム定義回路ＳＤＬ−Ｂを動作開始する場合には、既にクラスタ２０１Ｂの領域３０１Ｄに第２のシステム定義回路ＳＤＬ−Ｂが再構成済みであるので、再構成時間の待機時間なしで、クラスタ２０１Ｂの領域３０１Ｄの第２のシステム定義回路ＳＤＬ−Ｂを高速に動作開始させることができる。システム定義回路は、使用頻度が高いので、この時点でシステム定義回路を再構成しておく利点は大きい。
【００１８】
これに対し、プロセッサ１０１は、第２のシステム定義回路ＳＤＬ−Ｂの動作開始命令を入力した時点で、クラスタ２０１Ｂの領域３０１Ｄに第２のシステム定義回路ＳＤＬ−Ｂを再構成する場合には、その再構成時間の待機後に、その第２のシステム定義回路ＳＤＬ−Ｂの動作を開始する。この場合、第２のシステム定義回路ＳＤＬ−Ｂを高速に動作開始させることができない。
【００１９】
なお、システム定義回路を呼び出すためのＡＰＩはダイナミックリンクライブラリ（ＤＬＬ）の形式で実装してもよい。ＤＬＬでは対応するシステム定義回路と同等のソフトウェアによるプログラム処理とシステム定義回路の呼び出しを切り替えて行えるソフトウェアプログラムとし、その切り替えソフトウェアプログラムは、すべての領域３０１Ａ〜３０１Ｄにユーザ定義回路が再構成されてしまった場合、プロセッサ１０１は、再構成定義回路１０５のシステム定義回路を使用できないので、ソフトウェアのプログラム処理により、システム定義回路の処理を実行してもよい。また、各クラスタ２０１Ａ〜２０１Ｐでは、必ず１個の領域３０１Ａには、システム定義回路のみを構成するようにしてもよい。
【００２０】
また、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００２１】
１０１  プロセッサ
１０２  仮想マシン
１０３  メインメモリ
１０４  入出力ブリッジ回路
１０５  再構成可能回路
１０６  ＧＰＵ
１０７  周辺回路
１０８，１０９  ＤＲＡＭ
２０１Ａ〜２０１Ｐ  クラスタ
３０１Ａ〜３０１Ｄ  領域
【図１】
0006569508.tif 000002
【図２】
0006569508.tif 000003
【図３】
0006569508.tif 000004
【図４】
0006569508.tif 000005