(57)【要約】【課題】ＰＬＤの空き領域における静的消費電力を抑制可能な演算装置を提供する。【解決手段】演算装置１は、独立に制御可能な電源電圧が供給される複数の回路配置領域を有するＰＬＤ１２と、演算回路１３とを有する。演算回路１３は、主回路配置部１３０と、副回路配置部１３１と、処理実行部１３８とを有する。主回路配置部１３０は、所定の処理を実行する主回路４１を、複数の回路配置領域２１〜２３の何れかに配置する。副回路配置部１３１は、主回路４１が配置されない回路配置領域２３に、所定の処理を実行する副回路５１が配置可能な領域があるか否かを判定し、副回路５１が配置可能な領域があると判定された回路配置領域２３に、副回路５１を配置する。処理実行部１３８は、主回路４１又は副回路５１の何れか１つにより所定の処理を実行する。【選択図】図８
2017079037.tif 000002
【特許請求の範囲】
【請求項１】
独立に制御可能な電源電圧が供給される複数の回路配置領域を有するプログラマブルロジックデバイスと、
前記プログラマブルロジックデバイスに接続された演算回路と、を有し、
前記演算回路は、
所定の処理を実行する主回路を、前記複数の回路配置領域の何れかに配置する主回路配置部と、
前記主回路が配置されない回路配置領域に、前記所定の処理を実行する副回路が配置可能な領域があるか否かを判定し、前記副回路が配置可能な領域があると判定された回路配置領域に、前記副回路を配置する副回路配置部と、
前記主回路又は前記副回路の何れか１つにより前記所定の処理を実行する処理実行部と、
を有する、演算装置。
【請求項２】
前記演算回路は、前記主回路及び前記副回路が配置された回路配置領域の中で回路規模が最も小さい最小回路配置領域を決定する最小回路配置領域決定部を更に有し、
前記処理実行部は、前記最小回路配置領域に配置される前記主回路又は前記副回路により前記所定の処理を実行する、請求項１に記載の演算装置。
【請求項３】
前記副回路配置部は、前記主回路が配置された回路配置領域よりも回路規模が同じ又は大きい回路配置領域に前記副回路を配置する、請求項１又は２に記載の演算装置。
【請求項４】
前記所定の処理を終了するときに、前記所定の処理が前記副回路で実行されていると判定されたときに、前記副回路が配置された回路配置領域の電源をオフしない電源制御部を更に有する、請求項３に記載の演算装置。
【請求項５】
前記電源制御部は、前記所定の処理を終了するときに、前記所定の処理が前記主回路で実行されていると判定され且つ前記副回路が配置された回路配置領域に前記所定の処理以外の他の処理を実行する他の主回路が配置されていると判定されたときに、前記主回路が配置された回路配置領域の電源をオフしない、請求項４に記載の演算装置。
【請求項６】
前記電源制御部は、前記所定の処理を終了するときに、前記所定の処理が前記主回路で実行されていると判定され且つ前記主回路が配置された回路配置領域に前記所定の処理以外の他の処理を実行する他の主回路が配置されていないと判定されたときに、前記主回路が配置された回路配置領域の電源をオフする、請求項５に記載の演算装置。
【請求項７】
所定の処理を実行する主回路を、独立に制御可能な電源電圧が供給されるプログラマブルロジックデバイスの複数の回路配置領域の何れかに配置し、
前記主回路が配置されない回路配置領域に、前記所定の処理を実行する副回路が配置可能な領域があるか否かを判定し、
前記副回路が配置可能な領域があると判定された回路配置領域（２３）に、前記副回路を配置し、
前記主回路又は前記副回路の何れか１つにより前記所定の処理を実行する、
ことを有する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置及びその方法に関する。
【背景技術】
【０００２】
ＦＰＧＡ等のプログラマブルロジックデバイス（Programmable Logic Device、ＰＬＤ）を有するアクセラレータとＣＰＵとを連携することにより処理速度を向上させる技術が知られる（例えば、特許文献１及び非特許文献１を参照）。
【０００３】
また、プログラマブルロジックデバイスに供給される電源電圧をプログラムによって変更する技術が知られる（例えば、特許文献２及び３を参照）。一例では、演算装置は、複数の電源制御領域のいずれかに属する複数の演算要素と、複数の演算要素と複数の電源制御領域との対応を示す対応情報を保持する保持手段とを有する。演算装置は、複数の演算要素にタスクを割り当ててスケジュールを生成するスケジューラと、生成されたスケジュールに基づいて電源制御領域に電源電圧を供給する供給手段とを更に有する。他の例では、半導体装置は、複数の電源電圧を生成する電源電圧生成手段と、電源電圧生成手段が生成した複数の電源電圧の何れかを、プログラマブルロジックデバイスに選択的に接続するスイッチ手段とを含む。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−９８８２３号公報
【特許文献２】特開２０１０−１０３３６２号公報
【特許文献３】特開２０１４−５２９１８号公報
【非特許文献】
【０００５】
【非特許文献１】「Large-Scale Reconfigurable Computing in a Microsoft Datacenter」ｈｔｔｐ：／／ｗｗｗ.ｅｅ.ｗａｓｈｉｎｇｔｏｎ.ｅｄｕ／ｆａｃｕｌｔｙ／ｈａｕｃｋ／ｐｕｂｌｉｃａｔｉｏｎｓ／ＣａｔａｐｕｌｔＨｏｔＣｈｉｐｓ．ｐｄｆ
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、プログラマブルロジックデバイスは、配置される回路の回路規模がプログラマブルロジックデバイスに配置可能な回路規模と相違するので、配置領域の一部に回路が配置されない空き領域が存在する。プログラマブルロジックデバイスの空き領域は、回路が配置されないため、動的消費電力が発生しないが、リーク電流等に起因する静的消費電力が発生するおそれがある。
【０００７】
一実施形態では、プログラマブルロジックデバイスの空き領域における静的消費電力を抑制可能な演算装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、演算装置は、独立に制御可能な電源電圧が供給される複数の回路配置領域を有するプログラマブルロジックデバイスと、プログラマブルロジックデバイスに接続された演算回路とを有する。演算回路は、主回路配置部と、副回路配置部と、処理実行部とを有する。主回路配置部は、所定の処理を実行する主回路を、複数の回路配置領域の何れかに配置する。副回路配置部は、主回路が配置されない回路配置領域に、所定の処理を実行する副回路が配置可能な領域があるか否かを判定し、副回路が配置可能な領域があると判定された回路配置領域に、副回路を配置する。処理実行部は、主回路又は副回路の何れか１つにより所定の処理を実行する。
【発明の効果】
【０００９】
一実施形態では、プログラマブルロジックデバイスの空き領域における静的消費電力を抑制可能な演算装置を提供することが可能になる。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係る演算装置のブロック図である。
【図２】図１に示す演算装置の演算処理の一例のタイミングチャートである。
【図３】図１に示す演算装置の演算処理の一例のフローチャートである。
【図４】図３に示すＳ１０１の処理のより詳細なフローチャートである。
【図５】図３に示すＳ１０３の処理のより詳細なフローチャートである。
【図６】図３に示すＳ１０７の処理のより詳細なフローチャートである。
【図７】図３に示すＳ１１０の処理のより詳細なフローチャートである。
【図８】（ａ）は図１に示す動的再構成アクセラレータ及び演算回路の第１状態を示す図であり、（ｂ）は図１に示す動的再構成アクセラレータ及び演算回路の第２状態を示す図であり、（ｃ）は図１に示す動的再構成アクセラレータ及び演算回路の第３状態を示す図であり、（ｄ）は図１に示す動的再構成アクセラレータ及び演算回路の第４状態を示す図である。
【図９】（ａ）は図１に示す動的再構成アクセラレータ及び演算回路の第５状態を示す図であり、（ｂ）は図１に示す動的再構成アクセラレータ及び演算回路の第６状態を示す図である。
【図１０】（ａ）は図１に示す動的再構成アクセラレータ及び演算回路の第７状態を示す図であり、（ｂ）は図１に示す動的再構成アクセラレータ及び演算回路の第８状態を示す図であり、（ｃ）は図１に示す動的再構成アクセラレータ及び演算回路の第９状態を示す図であり（ｄ）は図１に示す動的再構成アクセラレータ及び演算回路の第１０状態を示す図である。
【図１１】図１に示す動的再構成アクセラレータ及び演算回路の第１１状態を示す図である。
【図１２】（ａ）は図８（ａ）に示す第１状態における管理テーブルを示す図であり、（ｂ）は図８（ｄ）に示す第４状態における管理テーブルを示す図である。
【図１３】（ａ）は図９（ａ）に示す第５状態における管理テーブルを示す図であり、（ｂ）は図９（ｂ）に示す第６状態における管理テーブルを示す図である。
【図１４】（ａ）は図１０（ａ）に示す第７状態における管理テーブルを示す図であり、（ｂ）は図１０（ｂ）に示す第８状態における管理テーブルを示す図である。
【図１５】（ａ）は図１０（ｃ）に示す第９状態における管理テーブルを示す図であり、（ｂ）は図１０（ｄ）に示す第１０状態における管理テーブルを示す図である。
【図１６】図２に示すタイミングチャートで図１に示す演算装置が動作するときの回路配置領域のリーク電流を示す図である。
【図１７】実施形態に係る回路配置方法により回路を配置したときのリーク電流と、他の回路配置方法により回路を配置したときのリーク電流との対比を示す図である。
【発明を実施するための形態】
【００１１】
以下図面を参照して、本発明に係る演算装置及びその方法について説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されない。
【００１２】
（実施形態に係る演算装置の概要）
実施形態に係る演算装置は、演算回路と、独立に制御可能な電源電圧が供給される複数の回路配置領域を有するＦＰＧＡとを有する。演算回路は、同一の処理を実行する主回路及び副回路を独立に制御可能な電源電圧が供給される回路配置領域にそれぞれ配置することで、電源電圧が供給される回路配置領域の数を少なくしてリーク電流に起因する静的消費電力を削減する。
【００１３】
（実施形態に係る演算装置の構成及び機能）
図１は、実施形態に係る演算装置のブロック図である。
【００１４】
演算装置１は、通信回路１０と、記憶回路１１と、動的再構成アクセラレータ１２と、演算回路１３と、電源電圧供給回路１４とを有する。
【００１５】
通信回路１０は、不図示の上位演算装置から送信されたコマンド等の情報を演算回路１３に出力する。また、通信回路１０は、演算回路１３から出力された情報を、不図示の上位演算装置に送信する。
【００１６】
記憶回路１１は、例えば、半導体メモリを有し、演算回路１３による演算処理に用いられるドライバプログラム、オペレーティングシステムプログラム、アプリケーションプログラム、データ等を記憶する。例えば、記憶回路１１は、ドライバプログラムとして、通信回路１０を制御する通信デバイスドライバプログラム等を記憶する。また、記憶回路１１は、アプリケーションプログラムとして、動的再構成アクセラレータ１２に動的再構成により回路を配置配線するために使用されるコンフィグレーションプログラムを記憶すると共に、各種データ処理を行うデータ処理プログラム等を記憶する。コンピュータプログラムは、例えばＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等のコンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いて記憶回路１１にインストールされてもよい。
【００１７】
記憶回路１１は、動的再構成アクセラレータ１２に動的再構成される回路に対応するコンフィグレーション情報１１１を記憶する。また、記憶回路１１は、動的再構成アクセラレータ１２に配置される回路の電源情報及び動作情報等の各種情報を記憶する管理テーブル１１２を記憶する。
【００１８】
動的再構成アクセラレータ１２は、第１回路配置領域２１と、第２回路配置領域２２と、第３回路配置領域２３と、選択回路２４とを有するプログラマブルロジックデバイスである。動的再構成アクセラレータ１２は、単一のプログラマブルロジックデバイスを含んでもよく、複数のプログラマブルロジックデバイスを含んでもよい。第１回路配置領域２１、第２回路配置領域２２及び第３回路配置領域２３は、独立に制御可能な電源電圧が電源電圧供給回路１４から供給され且つ配置可能な回路の回路規模が相違する。第１回路配置領域２１は第１１回路リソースＰＲ００〜第１４回路リソースＰＲ０３の４つの回路リソースを有し、第２回路配置領域２２は第２１回路リソースＰＲ１０〜第２８回路リソースＰＲ１７の８つの回路リソースを有する。第３回路配置領域２３は、第３１回路リソースＰＲ２０〜第３Ｂ回路リソースＰＲ２Ｂの１２個の回路リソースを有する。選択回路２４は、第１回路配置領域２１、第２回路配置領域２２及び第３回路配置領域２３の電源電圧と独立に制御可能な電源電圧が電源電圧供給回路１４から供給される。選択回路２４は、第１回路配置領域２１、第２回路配置領域２２及び第３回路配置領域２３の何れか又は全てから出力される情報を演算回路１３に出力する。第１回路配置領域２１、第２回路配置領域２２、第３回路配置領域２３及び選択回路２４は、記憶回路１１に記憶されたコンフィグレーション情報１１１に基づいて、演算回路１３が動的再構成することによって形成される。
【００１９】
演算回路１３は、一又は複数個のプロセッサ及びその周辺回路を有する。演算回路１３は、種々の演算装置を実行するものであり、例えば、ＣＰＵ（Central Processing Unit）である。演算回路１３は、各種演算処理が記憶回路１１に記憶されているプログラム等に応じて適切な手順で実行されるように、通信回路１０及び動的再構成アクセラレータ１２等の動作を制御する。演算回路１３は、記憶回路１１に記憶されているプログラム（ドライバプログラム、オペレーティングシステムプログラム、アプリケーションプログラム等）に基づいて処理を実行する。また、演算回路１３は、複数のプログラム（アプリケーションプログラム等）を並列に実行することができる。
【００２０】
演算回路１３は、演算処理の一部の処理を動的再構成アクセラレータ１２の第１回路配置領域２１、第２回路配置領域２２及び第３回路配置領域２３に動的再構成される回路を使用して実行することにより、処理速度を向上させる。
【００２１】
演算回路１３は、主回路配置部１３０と、副回路配置部１３１と、配置領域判定部１３２と、最小回路配置領域決定部１３３と、電源制御部１３４と、電源供給判定部１３５と、実行処理判定部１３６とを有する。演算回路１３は、選択回路配置部１３７と、処理実行部１３８と、管理テーブル更新部１３９とを更に有する。演算回路１３が有するこれらの各部は、演算回路１３が有するプロセッサ上で実行されるプログラムによって実装される機能モジュールである。あるいは、演算回路１３が有するこれらの各部は、独立した集積回路、マイクロプロセッサ、又はファームウェアとして演算装置１に実装されてもよい。
【００２２】
電源電圧供給回路１４は、不図示の上位演算装置又は演算回路１３から入力される電源電圧制御コマンドに基づいて、通信回路１０、記憶回路１１、動的再構成アクセラレータ１２及び演算回路１３に電源電圧を供給する。電源電圧供給回路１４は、動的再構成アクセラレータ１２の第１回路配置領域２１、第２回路配置領域２２、第３回路配置領域２３及び選択回路２４のそれぞれに独立に制御可能な電源電圧を供給する。例えば、電源電圧供給回路１４は、第１回路配置領域２１及び選択回路２４に電源電圧を供給し、第２回路配置領域２２及び第３回路配置領域２３に電源電圧を供給しなくてもよい。また、電源電圧供給回路１４は、第２回路配置領域２２及び選択回路２４に電源電圧を供給し、第１回路配置領域２１及び第３回路配置領域２３に電源電圧を供給しなくてもよい。また、電源電圧供給回路１４は、第１回路配置領域２１、第２回路配置領域２２、第３回路配置領域２３及び選択回路２４に電源電圧を供給してもよい。
【００２３】
（実施形態に係る演算装置の演算処理）
図２は演算装置１における演算処理の一例のタイミングチャートであり、図３は演算装置１における演算処理のフローチャートであり、図４は図２のＳ１０１処理のより詳細なフローチャートであり、図５はＳ１０３及びＳ１０５の処理のより詳細なフローチャートである。図６はＳ１０７及びＳ１０９の処理のより詳細なフローチャートであり、図７はＳ１１０の処理のより詳細なフローチャートである。図８〜１１は図２に示す演算処理の種々の状態における動的再構成アクセラレータ１２及び演算回路１３の状態を示す図であり、図１２〜１５は図２に示す演算処理の種々の状態における管理テーブルを示す図である。
【００２４】
図８（ａ）は図２の時間ｔ０における第１状態を示し、図８（ｂ）は第１状態に続く第２状態を示し、図８（ｃ）は第２状態に続く第３状態を示し、図８（ｄ）は第３状態に続く第４状態を示す。図８（ｂ）に示す第２状態〜図８（ｄ）に示す第４状態は、図２の時間ｔ１における状態である。図９（ａ）は第４状態に続く第５状態を示し、図９（ｂ）は第５状態に続く第６状態を示す。図９（ａ）に示す第５状態は図２の時間ｔ１における状態であり、図９（ｂ）に示す第６状態は図２の時間ｔ２における状態である。図１０（ａ）は第６状態に続く第７状態を示し、図１０（ｂ）は第７状態に続く第８状態を示し、図１０（ｃ）は第８状態に続く第９状態を示し、図１０（ｄ）は第９状態に続く第１０状態を示す。図１０（ａ）に示す第７状態、図１０（ｂ）に示す第８状態、図１０（ｃ）に示す第９状態及び図１０（ｄ）に示す第１０状態は、図２の時間ｔ３における状態である。図１１は、第１０状態に続く第１１状態を示し、図２の時間ｔ４における状態である。
【００２５】
図１２（ａ）は図８（ａ）に示す第１状態における管理テーブルを示し、図１２（ｂ）は図８（ｄ）に示す第４状態における管理テーブルを示す。図１３（ａ）は図９（ａ）に示す第５状態における管理テーブルを示し、図１３（ｂ）は図９（ｂ）に示す第６状態における管理テーブルを示す。図１４（ａ）は図１０（ａ）に示す第７状態における管理テーブルを示し、図１４（ｂ）は図１０（ｂ）に示す第８状態における管理テーブルを示す。図１５（ａ）は図１０（ｃ）に示す第９状態における管理テーブルを示し、図１５（ｂ）は図１０（ｄ）に示す第１０状態における管理テーブルを示す。
【００２６】
図１２〜１５において、項目「回路配置領域」に示されるＰＤ００は第１回路配置領域２１を示し、ＰＤ０１は第２回路配置領域２２を示し、ＰＤ０２は第３回路配置領域２３を示す。項目「ＯＮ／ＯＦＦ」は、対応する回路配置領域の電源がオンであるかオフであるかを示し、「１」は電源がオンであることを示し、「０」は電源がオフであることを示す。項目「回路リソース」は、第１１回路リソースＰＲ００〜第３Ｂ回路リソース２Ｂの何れかを示す。項目「配置」は対応する回路リソースに回路が配置されているか否かを示し、「１」は回路が配置されていることを示し、「０」は回路が配置されていないことを示す。項目「回路ＩＤ」は対応する回路リソースに配置される回路の識別表示を示し、「ＩＤ３５」は第１処理を実行する回路の識別表示であり、「ＩＤ２１」は第２処理を実行する回路の識別表示であり、「ＩＤ２２」は第３処理を実行する回路の識別表示である。項目「主／副」は対応する回路リソースに配置される回路が主回路であるか副回路であるかを示し、「１」は主回路が配置されていることを示し、「０」は副回路が配置されていることを示す。主回路は、同一の処理を実行する回路のうち、回路規模が最も小さい最小回路配置領域に配置される回路である。副回路は、主回路と同一の処理を実行する回路であって、最小回路配置領域よりも回路規模が同じ又は大きい回路配置領域に配置される回路である。項目「動作中」は対応する回路リソースに配置された回路が動作して処理を実行中であるか否かを示し、「１」は回路が動作して処理を実行中であることを示し、「０」は回路が動作せず処理を実行中ではないことを示す。
【００２７】
以下、図２に示すタイミングチャートの演算処理に従って、演算装置１の演算処理を図２〜１５を参照しながら説明する。演算装置１は、第１処理、第２処理及び第３処理のそれぞれに対応する回路を動的再構成アクセラレータ１２に動的再構成し、動的再構成アクセラレータ１２に動的再構成した回路により、第１処理、第２処理及び第３処理のそれぞれを実行する。
【００２８】
図２に示すタイミングチャートにおいて、演算装置１は、第１処理の実行を開始する前、第２処理及び第３処理を実行している（時間ｔ０）。演算装置１は、第２処理及び第３処理の実行中に、第１処理を実行を開始する（時間ｔ１）。次いで、演算装置１は、第３処理の実行を終了する（時間ｔ２）。次いで、演算装置１は、第１処理の実行を終了する（時間ｔ３）。そして、演算装置１は、第１処理の実行を終了した後、第２処理及び第３処理を実行している（時間ｔ４）。
【００２９】
時間ｔ０において、演算装置１が第２処理及び第３処理を実行しているとき、図８（ａ）に示すように、演算回路１３の処理実行部１３８は、第２処理コマンド３２と、第３処理コマンド３３とを有する。第２処理コマンド３２は第２処理の実行を動的再構成アクセラレータ１２に指示コマンドであり、第３処理コマンド３３は第３処理の実行を動的再構成アクセラレータ１２に指示するコマンドである。図８（ａ）において実線で示される第１回路配置領域２１は、電源電圧供給回路１４から電源電圧を供給されている。一方、図８（ａ）において破線で示される第２回路配置領域２２及び第３回路配置領域２３は、電源電圧供給回路１４から電源電圧を供給されていない。本明細書において、「電源電圧を供給されていない」又は「電源をオフする」というとき、電源を遮断することでリーク電力をゼロにするパワーゲーティング、及びしきい値電圧を上げリークを削減するバックゲートバイアス制御の双方を含む。すなわち、用語「電源電圧が供給されている」又は「電源をオンする」は、パワーゲーティング又はバックゲートバイアス制御によって、回路領域を動作可能状態にすることをいう。また、用語「電源電圧を供給されていない」又は「電源をオフする」は、パワーゲーティング又はバックゲートバイアス制御によって、動作停止時にリーク電力を削減する電源電圧制御をすることをいう。バックゲートバイアス制御によって「電源をオフする」ことによって、コンフィギュレーション情報の消去なく低電力状態に移行することができる。時間ｔ０において、動的再構成アクセラレータ１２の第１回路配置領域２１には、第２主回路４２及び第３主回路４３が配置され、第２回路配置領域２２及び第３回路配置領域２３のそれぞれには、第２副回路５２及び第３副回路５３が配置される。第２主回路４２及び第２副回路５２は２つの回路リソースに配置される回路規模を有し、第３主回路４３及び第３副回路５３は２つの回路リソースに配置される回路規模を有する。実線で示される第２主回路４２及び第３主回路４３は、第２処理及び第３処理のそれぞれを実行中であり、破線で示される第２副回路５２及び第３副回路５３は、処理を停止中である。選択回路２４は、第１回路配置領域２１に配置される第２主回路４２及び第３主回路４３から出力される情報を演算回路１３に出力する。
【００３０】
時間ｔ１において、図８（ｂ）に示すように、演算回路１３は、不図示の上位装置から第１処理コマンド３１が送信されると、第１処理を実行する第１主回路及び第１副回路を動的再構成アクセラレータ１２に配置する（Ｓ１０１）。より詳細には、まず、主回路配置部１３０は、第１処理を実行する回路の回路再構成に使用する第１コンフィグレーション情報をコンフィグレーション情報１１１から読み出す（Ｓ２０１）。次いで、主回路配置部１３０は、第１コンフィグレーション情報から第１処理を実行する回路の回路規模を示す回路規模情報を取得する（Ｓ２０２）。第１処理を実行する回路は、４つの回路リソースに配置される回路規模を有する。次いで、主回路配置部１３０は、回路配置領域番号ｎを初期化して「０」とする（Ｓ２０３）。回路配置領域番号ｎは、回路規模が小さい順に割り当てられる。４つの回路リソースを有する第１回路配置領域２１の回路配置領域番号ｎは「１」であり、８つの回路リソースを有する第２回路配置領域２２の回路配置領域番号ｎは「２」である。１２個の回路リソースを有する第３回路配置領域２３の回路配置領域番号ｎは「３」である。次いで、主回路配置部１３０は、回路配置領域番号ｎをインクリメントし（Ｓ２０４）、回路配置領域番号ｎが「１」である第１回路配置領域２１の利用可能な回路リソースの数を確認する（Ｓ２０５）。第１回路配置領域２１は、第１１回路リソースＰＲ００〜第１４回路リソースＰＲ０３の４つの回路リソースを有するが、第２主回路４２及び第３主回路４３が配置されるため、第１回路配置領域２１の利用可能な回路リソースの数は「０」である。
【００３１】
次いで、主回路配置部１３０は、第１処理を実行する第１主回路が第１回路配置領域２１に配置可能であるか否かを判定する（Ｓ２０６）。第１回路配置領域２１の利用可能な回路リソースの数は「０」であり、４つの回路リソースに配置される回路規模を有する第１主回路が第１回路配置領域２１に配置可能でないので、処理はＳ２０８に進む。Ｓ２０８において、主回路配置部１３０は、他の処理の副回路を削除したときに、第１回路配置領域２１に第１主回路が配置可能であるか否かを判定する。他の処理の副回路を削除したときに、第１回路配置領域２１に第１主回路が配置可能であると判定すると、主回路配置部１３０は、他の処理の副回路を削除して第１主回路を配置する（Ｓ２０９）。しかしながら、第１回路配置領域２１には副回路は配置されていないので、主回路配置部１３０は、第１回路配置領域２１〜第３回路配置領域２３の全ての領域で確認処理を実行したか否かを判定する（Ｓ２１０）。主回路配置部１３０は、第２回路配置領域２２及び第３回路配置領域を確認していない（Ｓ２１０）ので、回路配置領域番号ｎをインクリメントして「２」にする（Ｓ２０４）。
【００３２】
次いで、主回路配置部１３０は、回路配置領域番号ｎが「２」である第２回路配置領域２２の利用可能な回路リソースの数が「４」であることを確認し（Ｓ２０５）、第１主回路が第２回路配置領域２２に配置可能であると判定する（Ｓ２０６）。次いで、主回路配置部１３０は、図８（ｃ）に示すように、第１主回路４１を第２回路配置領域２２に配置する（Ｓ２０７）。なお、第１回路配置領域２１〜第３回路配置領域２３について、Ｓ２０４〜Ｓ２０８の処理で第１主回路が配置されない（Ｓ２１０）とき、主回路配置部１３０は、第１主回路が配置されないことを示す主回路配置不可信号を出力する（Ｓ２１１）。
【００３３】
次いで、副回路配置部１３１は、回路配置領域番号ｎをインクリメントし（Ｓ２１２）、回路配置領域番号ｎが「３」である第３回路配置領域２３の利用可能な回路リソースの数を確認する（Ｓ２１３）。第３回路配置領域２３は、第３１回路リソースＰＲ２０〜第３Ｂ回路リソースＰＲ２Ｂの１２個の回路リソースを有するが、第２副回路５２及び第３副回路５３が配置されるため、第１回路配置領域２１の利用可能な回路リソースの数は「８」である。副回路配置部１３１は、第３回路配置領域２３の利用可能な回路リソースの数は「８」であり、４つの回路リソースに配置される回路規模を有する第１副回路を第３回路配置領域２３に配置可能であると判定する（Ｓ２１４）。次いで、副回路配置部１３１は、図８（ｄ）に示すように、第１副回路５１を第３回路配置領域２３に配置する（Ｓ２１５）。次いで、副回路配置部１３１は全ての回路配置領域を確認したと判定し（Ｓ２１６）、選択回路配置部１３７は選択回路２４を配置する（Ｓ２１７）。そして、管理テーブル更新部１３９は、図１２（ａ）に示す状態から図１２（ｂ）に示す状態に、管理テーブル１１２を更新する（Ｓ２１８）。管理テーブル１１２は、ＰＤ０１で示される第２回路配置領域２２にＩＤ３５で示される第１主回路４１が配置されたことを示すように更新される。また、管理テーブル１１２は、ＰＤ０１で示される第２回路配置領域２２に、ＩＤ３５で示される第１副回路５１が配置されたことを示すように更新される。
【００３４】
次いで、演算回路１３は、第１処理を実行する回路が配置された（Ｓ１０２）ので、第１処理を実行する回路を起動する（Ｓ１０３）。より詳細には、配置領域判定部１３２は、第１回路配置領域２１〜第３回路配置領域２３について、第１処理を実行する回路が配置されているか否か、及び電源電圧供給回路１４から電源電圧が供給されているかを判定する（Ｓ３０１）。一例では、配置領域判定部１３２は、管理テーブル１１２を参照して、Ｓ３０１の処理を実行する。図８（ｄ）に示すように、第１回路配置領域２１は、第１処理を実行する第１主回路４１及び第１副回路５１は配置されていないが、実線で示されるように電源電圧供給回路１４から電源電圧が供給されている。第２回路配置領域２２は、第１処理を実行する第１主回路４１は配置されているが、破線で示されるように電源電圧供給回路１４から電源電圧が供給されていない。第３回路配置領域２３は、第１処理を実行する第１副回路５１は配置されているが、破線で示されるように電源電圧供給回路１４から電源電圧が供給されていない。次いで、配置領域判定部１３２は、第１処理を実行する第１主回路４１又は第１副回路５１が配置され且つ電源電圧供給回路１４から電源電圧が供給されている回路配置領域はないと判定する（Ｓ３０２）。
【００３５】
次いで、最小回路配置領域決定部１３３は、第１処理を実行する回路が配置された回路配置領域の中で回路規模が最も小さい第２回路配置領域２２を第１最小回路配置領域に決定する（Ｓ３０３）。次いで、最小回路配置領域決定部１３３は、第１最小回路配置領域である第２回路配置領域２２よりも回路規模が小さい第１回路配置領域２１に配置された回路が第２回路配置領域２２に配置されているか否かを確認する（Ｓ３０４）。第１回路配置領域２１に配置された第２主回路４２及び第３主回路４３のそれぞれと対応する構成を有する第２副回路５２及び第３副回路５３は、第２回路配置領域２２に配置されている。最小回路配置領域決定部１３３は、第１回路配置領域２１で処理されている第２処理及び第３処理は第２回路配置領域２２で実行可能であると判定する（Ｓ３０５）。次いで、最小回路配置領域決定部１３３は、第２処理及び第３処理を第２回路配置領域２２で実行するように変更する実行領域変更指示情報を生成する（Ｓ３０６）。
【００３６】
次いで、電源制御部１３４は、実行領域変更指示情報に基づいて生成した電源電圧制御コマンドを発行して、電源電圧供給回路１４に出力する（Ｓ３０７）。電源電圧制御コマンドは、第２回路配置領域２２に電源電圧を供給し且つ第１回路配置領域２１及び第３回路配置領域２３に電源電圧を供給しないことを含む。電源電圧供給回路１４は、電源電圧制御コマンドに応じた電源電圧を動的再構成アクセラレータ１２に供給する。図９（ａ）に示すように、実線で示される第２回路配置領域２２は電源電圧供給回路１４から電源電圧を供給され、破線で示される第１回路配置領域２１及び第３回路配置領域２３は電源電圧供給回路１４から電源電圧を供給されていない。次いで、電源制御部１３４は、第２回路配置領域２２から出力される情報を演算回路１３に出力するように選択回路２４を制御する（Ｓ３０８）。次いで、管理テーブル更新部１３９は、図１２（ｂ）に示す状態から図１３（ａ）に示す状態に、管理テーブル１１２を更新する（Ｓ３０９）。管理テーブル１１２は、ＰＤ００で示される第１回路配置領域２１の電源がオフしＰＤ０１で示される第２回路配置領域２２の電源がオンすることを示すように更新される。また、管理テーブル１１２は、ＰＤ００で示される第１回路配置領域２１に配置されるＩＤ２１及びＩＤ２２で示される第２主回路４２及び第３主回路４３が動作中でないことを示すように更新される。また、管理テーブル１１２は、ＰＤ０１で示される第２回路配置領域２２に配置されるＩＤ３５、ＩＤ２１及びＩＤ２２で示される第１主回路４１、第２副回路５２及び第３副回路５３が動作中であることを示すように更新される。そして、処理実行部１３８は、第１主回路４１により第１処理を実行する（Ｓ３１０）。
【００３７】
次いで、演算回路１３は、第１処理以外の他の処理を実行するか否かを判定する処理（Ｓ１０４）、第１処理以外の他の処理を終了するか否かを判定する処理（Ｓ１０６）、及び第１処理を終了するか否かを判定する処理（Ｓ１０８）を順次実行する。第１処理以外の他の処理を実行すると判定されたとき、Ｓ３０１〜Ｓ３１０の処理によって、他の処理を起動する（Ｓ１０５）。
【００３８】
時間ｔ２において、演算回路１３は、不図示の上位装置から第３処理終了コマンドが送信されると、第３処理を終了すると判定し（Ｓ１０６）、第３処理の回路を停止する（Ｓ１０７）。より詳細には、まず、実行処理判定部１３６は、停止する第３処理を実行中の第３副回路５３が配置された第２回路配置領域２２において、実行中の処理を確認する（Ｓ４０１）。実行処理判定部１３６は、第２回路配置領域２２において、第１処理、第２処理及び第３処理の３つの処理が実行中であることを確認する。次いで、管理テーブル更新部１３９は、図１３（ａ）に示す状態から図１３（ｂ）に示す状態に、管理テーブル１１２を更新する（Ｓ４０２）。管理テーブル１１２は、ＰＤ０１で示される第２回路配置領域２２に配置されるＩＤ２２で示される第３副回路５３が動作中でないことを示すように更新される。次いで、実行処理判定部１３６は、第３処理が第１回路配置領域２１に配置された第３主回路４３により実行されたのではなく、第２回路配置領域２２に配置された第３副回路５３により実行されたと判定する（Ｓ４０３）。そして、図９（ｂ）に示すように、処理実行部１３８は、第３処理は終了する（Ｓ４０４）。
【００３９】
処理実行部１３８が第３処理は終了すると、演算回路１３は、第３処理終了コマンドに応じた一連の処理を終了したと判定し、処理実行部１３８から第３処理コマンド３３を削除する。
【００４０】
時間ｔ３において、演算回路１３は、不図示の上位装置から第１処理終了コマンドが送信されると、第１処理を終了すると判定し（Ｓ１０８）、第１処理の回路を停止する（Ｓ１０９）。より詳細には、まず、実行処理判定部１３６は、停止する第１処理を実行中の第１主回路４１が配置された第２回路配置領域２２において、実行中の処理を確認する（Ｓ４０１）。実行処理判定部１３６は、第２回路配置領域２２において、第１処理及び第２処理の２つの処理が実行中であることを確認する。次いで、管理テーブル更新部１３９は、図１３（ｂ）に示す状態から図１４（ａ）に示す状態に、管理テーブル１１２を更新する（Ｓ４０２）。管理テーブル１１２は、ＰＤ０１で示される第２回路配置領域２２に配置されるＩＤ３５で示される第１主回路４１が動作中でないことを示すように更新される。次いで、実行処理判定部１３６は、第１処理が第２回路配置領域２２に配置された第１主回路４１により実行されたと判定した（Ｓ４０３）後に、第２回路配置領域２２で他の処理が主回路で実行されていないと判定する（Ｓ４０５）。実行処理判定部１３６は、第２回路配置領域２２で他の処理が主回路で実行されていないと判定した（Ｓ４０５）とき、第２回路配置領域２２の停止を決定する（Ｓ４０６）。次いで、管理テーブル更新部１３９は、図１４（ａ）に示す状態から図１４（ｂ）に示す状態に、管理テーブル１１２を更新する（Ｓ４０７）。管理テーブル１１２は、ＰＤ０１で示される第２回路配置領域２２の電源がオフであることを示すように更新される。
【００４１】
次いで、演算回路１３は、第２処理を実行する回路を起動する（Ｓ４０８）。より詳細には、配置領域判定部１３２は、第１回路配置領域２１〜第３回路配置領域２３について、第２処理を実行する回路が配置されているか否か、及び電源電圧供給回路１４から電源電圧が供給されているかを判定する（Ｓ３０１）。図１４（ａ）に示すように、第１回路配置領域２１は第２主回路４２が配置され、第２回路配置領域２２及び第３回路配置領域２３は第２副回路５２が配置される。また、第１回路配置領域２１〜第３回路配置領域２３は、電源電圧供給回路１４から電源電圧が供給されていない。次いで、配置領域判定部１３２は、第２処理を実行する回路が配置され且つ電源電圧供給回路１４から電源電圧が供給されている回路配置領域はないと判定する（Ｓ３０２）。
【００４２】
次いで、最小回路配置領域決定部１３３は、第２処理を実行する回路が配置された回路配置領域の中で回路規模が最も小さい第１回路配置領域２１を第２最小回路配置領域に決定する（Ｓ３０３）。次いで、最小回路配置領域決定部１３３は、第２最小回路配置領域である第２回路配置領域２２よりも回路規模が小さい回路配置領域がないことを確認し（Ｓ３０４）、第１回路配置領域２１で実行可能な他の処理はないと判定する（Ｓ３０５）。
【００４３】
次いで、電源制御部１３４は、第１回路配置領域２１に電源電圧を供給することを含む電源電圧制御コマンドを発行して、電源電圧供給回路１４に出力する（Ｓ３０７）。次いで、電源制御部１３４は、第１回路配置領域２１から出力される情報を演算回路１３に出力するように選択回路２４を制御する（Ｓ３０８）。次いで、管理テーブル更新部１３９は、図１４（ｂ）に示す状態から図１５（ａ）に示す状態に、管理テーブル１１２を更新する（Ｓ３０９）。管理テーブル１１２は、ＰＤ００で示される第１回路配置領域２１に電源電圧が供給され且つ第１回路配置領域２１に配置されるＩＤ２１で示される第２主回路４２が動作中であることを示すように更新される。また、管理テーブル１１２は、ＰＤ０１で示される第２回路配置領域２２に配置されるＩＤ２１で示される第２副回路５２が動作中でないことを示すように更新される。そして、処理実行部１３８は、図１０（ｃ）に示すように、第２主回路４２により第２処理を実行する（Ｓ３１０）。
【００４４】
次いで、処理実行部１３８は、第１処理は終了し（Ｓ４０９）、電源制御部１３４は、第２回路配置領域２２に電源電圧を供給しないことを含む電源電圧制御コマンドを発行して、電源電圧供給回路１４に出力する（Ｓ４１０）。
【００４５】
次いで、演算回路１３は、第１処理を実行する第１主回路４１及び第１副回路５１を動的再構成アクセラレータ１２から削除する（Ｓ１１０）。より詳細には、図１０（ｄ）に示すように、主回路配置部１３０は第２回路配置領域２２から第１主回路４１を削除し、副回路配置部１３１は第３回路配置領域２３から第１副回路５１を削除する（Ｓ５０１）。そして、管理テーブル更新部１３９は、図１５（ａ）に示す状態から図１５（ｂ）に示す状態に、管理テーブル１１２を更新する（Ｓ５０１）。管理テーブル１１２は、ＰＤ０１で示される第２回路配置領域２２からＩＤ３５で示される第１主回路４１が削除され、ＰＤ０２で示される第３回路配置領域２３からＩＤ３５で示される第１副回路５１が削除される。
【００４６】
第１処理を実行する第１主回路４１及び第１副回路５１が動的再構成アクセラレータ１２から削除されると、演算回路１３は、第１処理終了コマンドに応じた一連の処理を終了したと判定し、処理実行部１３８から第１処理コマンド３１を削除する。
【００４７】
（実施形態に係る演算装置の作用効果）
実施形態に係る演算装置は、同一の処理を実行する主回路及び副回路を回路配置領域に他の処理を実行する回路と共に配置するため、処理に応じて主回路と副回路を切り換えることができる。実施形態に係る演算装置は、処理に応じて主回路と副回路を切り換えることができるため、ＰＬＤの微細化の進展に伴って増加傾向にあるリーク電流等に起因する静的消費電力を抑制することができる。
【００４８】
図１６は、図２に示すタイミングチャートで演算装置１が動作するときの回路配置領域のリーク電流を示す図である。図１６において、波形６１は第１回路配置領域２１のリーク電流を示し、波形６２は第２回路配置領域２２のリーク電流を示し、波形６３は第３回路配置領域２３のリーク電流を示す。
【００４９】
演算装置１は、時間ｔ０を含む期間ｐ１では、第１回路配置領域２１の電源をオンし、第２処理及び第３処理を第１回路配置領域２１で実行し、第２回路配置領域２２及び第３回路配置領域２３の電源をオフする。期間ｐ１において、比較的回路規模が大きい第２回路配置領域２２及び第３回路配置領域２３の電源がオフされるので、リーク電流は抑制される。
【００５０】
演算装置１は、時間ｔ１において、第１処理の実行を開始するときに、単一の回路配置領域で全ての処理を実行してリーク電流を削減するために、第１回路配置領域２１で実行していた第２処理及び第３処理を第２回路配置領域２２で実行するように変更する。演算装置１は、時間ｔ２を含む期間ｐ２では、第２回路配置領域２２の電源をオンし、第１処理、第２処理及び第３処理を第２回路配置領域２２で実行し、第１回路配置領域２１及び第３回路配置領域２３の電源をオフする。期間ｐ２において、第１回路配置領域２１及び第３回路配置領域２３の電源がオフされるので、第２回路配置領域２２のリーク電流は流れるが、第１回路配置領域２１及び第３回路配置領域２３のリーク電流は流れないため、リーク電流は抑制される。
【００５１】
演算装置１は、時間ｔ３において、第１処理の実行を終了するときに、第２回路配置領域２２で実行していた第２処理を、回路規模が小さくリーク電流が比較的小さい第１回路配置領域２１で実行するように変更する。演算装置１は、時間ｔ４を含む期間ｐ３では、第１回路配置領域２１の電源をオンし、第２処理を第１回路配置領域２１で実行し、第２回路配置領域２２及び第３回路配置領域２３の電源をオフする。期間ｐ３において、比較的回路規模が大きい第２回路配置領域２２及び第３回路配置領域２３の電源がオフされるので、リーク電流は抑制される。
【００５２】
図１７は、実施形態に係る回路配置方法により回路を配置したときのリーク電流と、他の回路配置方法により回路を配置したときのリーク電流との対比を示す図である。図１７において、横軸は処理Ａの処理時間と処理Ａと相違する処理Ｂの処理時間の重なり率を示し、縦軸はリーク電流を示す。図１７において、実線は実施形態に係る回路配置方法により回路を配置したときのリーク電流を示し、破線は個別配置により回路を配置したときのリーク電流を示し、一点鎖線は集中配置により回路を配置したときのリーク電流を示す。個別配置は、処理Ａを実行する回路を比較的面積が小さく且つリーク電流が小さい第１回路配置領域に配置し、処理Ｂを実行する回路を比較的面積が大きく且つリーク電流が大きい第２回路配置領域に配置する方法である。集中配置は、処理Ａを実行する回路及び処理Ｂを実行する回路の双方を、比較的面積が大きく且つリーク電流が大きい第２回路配置領域に配置する方法である。
【００５３】
個別配置では、処理Ａを実行する回路と、処理Ｂを実行する回路が別個の回路配置領域に配置されるため、処理Ａ及び処理Ｂを処理するタイミングにかかわらずリーク電流はＰ１＋Ｐ２で一定になる。集中配置では、処理Ａの処理時間と処理Ｂの処理時間とが重複する割合が大きいほど、単位時間当たりのリーク電流を小さくできるが、処理Ａの処理時間と処理Ｂの処理時間とが重複する割合が小さいと、単位時間当たりのリーク電流が大きい。
【００５４】
実施形態に係る回路配置方法では、処理Ａの処理時間と処理Ｂの処理時間とが重複する割合が比較的小さいときには、リーク電流は、個別配置と同様にはＰ１＋Ｐ２で一定になる。一方、処理Ａの処理時間と処理Ｂの処理時間とが重複する割合が比較的大きいときには、リーク電流は、集中配置と同様には単位時間当たりのリーク電流を小さくできる。
【００５５】
（実施形態に係る演算装置の変形例）
演算装置１は、別個の電源電圧が供給される３つの第１回路配置領域２１〜第３回路配置領域２３を有する動的再構成アクセラレータ１２を有する。しかしながら、実施形態に係る演算装置は、別個の電源電圧が供給され且つ２つ又は４つ以上の回路配置領域を有する動的再構成アクセラレータを有してもよい。また、これらの回路領域の回路規模はそれぞれ相違していてもよいし、同じ回路規模の回路領域が含まれていてもよい。
【００５６】
また、演算装置１では、図４に示す処理により、対象処理を実行する主回路及び副回路を配置するが、実施形態に係る演算装置では、同一の処理を実行する少なくとも２つの回路を異なる回路配置領域に配置できればよい。図４に示す処理により主回路及び副回路を配置する場合、副回路は、主回路が配置された回路配置領域よりも回路規模が同じ又は大きい回路配置領域に配置される。しかしながら、図４に示す処理と異なる処理により主回路及び副回路を配置するときは、副回路は、主回路が配置された回路配置領域よりも回路規模が小さい回路配置領域に配置されてもよい。
【符号の説明】
【００５７】
１    演算装置
１１    記憶回路
１２    動的再構成アクセラレータ（プログラマブルロジックデバイス）
１３    演算回路
１４    電源電圧供給回路
２１、２２、２３    回路配置領域
２４    選択回路
１３０    主回路配置部
１３１    副回路配置部
１３８    処理実行部
【図１】
2017079037.tif 000003
【図２】
2017079037.tif 000004
【図３】
2017079037.tif 000005
【図４】
2017079037.tif 000006
【図５】
2017079037.tif 000007
【図６】
2017079037.tif 000008
【図７】
2017079037.tif 000009
【図８】
2017079037.tif 000010
【図９】
2017079037.tif 000011
【図１０】
2017079037.tif 000012
【図１１】
2017079037.tif 000013
【図１２】
2017079037.tif 000014
【図１３】
2017079037.tif 000015
【図１４】
2017079037.tif 000016
【図１５】
2017079037.tif 000017
【図１６】
2017079037.tif 000018
【図１７】
2017079037.tif 000019