図面 (/)

技術 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム

出願人 富士通株式会社
発明者 印芳渡部康弘
出願日 2016年5月11日 (4年7ヶ月経過) 出願番号 2016-095150
公開日 2017年11月16日 (3年1ヶ月経過) 公開番号 2017-204121
状態 特許登録済
技術分野 ストアードプログラム マルチプログラミング
主要キーワード 実行時間算出 後続回路 現在構成 後続タスク 先行タスク 改良物 構成数 前段処理
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2017年11月16日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (13)

課題

タスクの実行中に次のタスクを実行する回路を構成する場合、複数のタスクが完了するまでのトータルの処理時間を短縮する。

解決手段

情報処理装置は、タスクを実行する回路を再構成可能なプログラマブル部に構成される所定数の回路により実行されるタスクの実行時間を予測し、先行して実行される先行タスクに対して予測した実行時間と、先行タスクの次に実行される後続タスクを実行する回路である後続回路のプログラマブル部への構成に掛かる構成時間とに基づいて、プログラマブル部に構成する後続回路の数を決定し、先行タスクの実行中に、決定した数の後続回路をプログラマブル部に順次構成し、先行タスクが完了する時間と、後続回路のプログラマブル部への構成が完了する時間との関係に基づいて、プログラマブル部に構成する後続回路の数を調整する。

概要

背景

近時、論理を動的に再構成可能なFPGA(Field-Programmable Gate Array)等のプログラマブルデバイスにおいて、プログラマブルデバイスに構成する論理を順次切り替えデータ処理を実行する手法が提案されている。例えば、複数の前段処理をそれぞれ実行する複数の前段回路と、複数の前段処理の結果を用いて後段処理を実行する後段回路とによりデータ処理を実行する場合がある。この場合、複数の前段回路と後段回路との少なくともいずれかを同時に構成する複数種実装方法が予め用意され、目標時間内にデータ処理を完了する実装方法のうち、構成される回路規模が最も小さい実装方式が選択される。また、目標時間内にデータ処理を完了することが困難な場合、選択した実装方式に対応する論理の複数個がプログラマブルデバイスに構成され、データ処理が並列に実行される(例えば、特許文献1参照)。

直列に接続される2つの回路を交互に構成してデータ処理を実行する場合、後段回路が、前段回路から順次出力されるデータ処理の結果を受信して次のデータ処理を開始することで、最終の処理結果を得るまでの時間が短縮される(例えば、特許文献2参照)。

データ処理の順序に合わせて複数の回路を順次構成し、構成した順にデータ処理を開始することで、データ処理と並行して他の回路が構成されるため、複数の回路をまとめて構成する場合に比べて、データ処理が高速化される(例えば、特許文献3参照)。

概要

タスクの実行中に次のタスクを実行する回路を構成する場合、複数のタスクが完了するまでのトータルの処理時間を短縮する。情報処理装置は、タスクを実行する回路を再構成可能なプログラマブル部に構成される所定数の回路により実行されるタスクの実行時間を予測し、先行して実行される先行タスクに対して予測した実行時間と、先行タスクの次に実行される後続タスクを実行する回路である後続回路のプログラマブル部への構成に掛かる構成時間とに基づいて、プログラマブル部に構成する後続回路の数を決定し、先行タスクの実行中に、決定した数の後続回路をプログラマブル部に順次構成し、先行タスクが完了する時間と、後続回路のプログラマブル部への構成が完了する時間との関係に基づいて、プログラマブル部に構成する後続回路の数を調整する。

目的

1つの側面では、本件開示の情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムは、タスクの実行中に次のタスクを実行する回路を構成する場合、複数のタスクが完了するまでのトータルの処理時間を短縮することを目的とする

効果

実績

技術文献被引用数
1件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

タスクを実行する回路再構成可能なプログラマブル部と、前記プログラマブル部に構成される所定数の回路により実行されるタスクの実行時間を予測する実行時間予測部と、先行して実行される先行タスクに対して前記実行時間予測部が予測した実行時間と、前記先行タスクの次に実行される後続タスクを実行する回路である後続回路の前記プログラマブル部への構成に掛かる構成時間とに基づいて、前記プログラマブル部に構成する前記後続回路の数を決定する構成数決定部と、前記先行タスクの実行中に、前記構成数決定部が決定した数の前記後続回路を前記プログラマブル部に順次構成する構成制御部と、前記先行タスクが完了する時間と、前記後続回路の前記プログラマブル部への構成が完了する時間との関係に基づいて、前記プログラマブル部に構成する前記後続回路の数を調整する調整部とを備えることを特徴とする情報処理装置

請求項2

前記構成数決定部は、前記後続回路の前記プログラマブル部への構成開始時間から、前記プログラマブル部に構成した前記後続回路が実行する前記後続タスクの実行完了までの時間を短縮する前記後続回路の前記プログラマブル部への構成数を決定し、前記後続回路の前記プログラマブル部への構成が完了する前に前記先行タスクが完了した場合、前記調整部は、前記先行タスクの完了までに前記プログラマブル部に構成された前記後続回路の数が前記構成数以上である場合、新たな前記後続回路の前記プログラマブル部への構成の停止を前記構成制御部に指示し、前記先行タスクの完了までに前記プログラマブル部に構成された前記後続回路の数が前記構成数より少ない場合、前記構成数の前記後続回路の前記プログラマブル部への構成を前記構成制御部に指示することを特徴とする請求項1記載の情報処理装置。

請求項3

前記構成数決定部は、前記後続回路の前記プログラマブル部への構成開始時間から、前記プログラマブル部に構成した前記後続回路が実行する前記後続タスクの実行完了までの時間を最小にする前記後続回路の前記プログラマブル部への構成数を決定することを特徴とする請求項2記載の情報処理装置。

請求項4

前記実行時間予測部は、前記先行タスクの完了に基づいて前記後続タスクを1個の後続回路で実行する場合の基準の実行時間を予測し、前記構成数決定部は、前記基準の実行時間に基づいて、前記構成数を決定することを特徴とする請求項2または請求項3記載の情報処理装置。

請求項5

前記先行タスクが完了する前に前記後続回路の前記プログラマブル部への構成が完了した場合、前記実行時間予測部は、前記先行タスクの完了時間を予測し、前記調整部は、前記完了時間までに構成可能な前記後続回路の前記プログラマブル部への構成を前記構成制御部に指示するを特徴とする請求項1記載の情報処理装置。

請求項6

前記先行タスクが完了する前に前記後続回路の前記プログラマブル部への構成が完了した場合、前記構成数決定部は、前記後続回路の前記プログラマブル部への構成開始時間から、前記プログラマブル部に構成した前記後続回路が実行する前記後続タスクの実行完了までの時間を短縮する前記後続回路の前記プログラマブル部への構成数を決定し、前記調整部は、前記完了時間までに構成可能な前記後続回路の数より前記構成数が多い場合、前記構成数の前記後続回路の前記プログラマブル部への構成を前記構成制御部に指示することを特徴とする請求項5記載の情報処理装置。

請求項7

タスクを実行する回路の前記プログラマブル部への構成に掛かる構成時間を予測する構成時間予測部を備え、前記構成数決定部は、前記構成時間予測部が予測した構成時間に基づいて、前記プログラマブル部に構成する前記後続回路の数を決定することを特徴とする請求項1ないし請求項6のいずれか1項記載の情報処理装置。

請求項8

前記プログラマブル部は、回路を再構成可能な複数のブロックを有し、前記タスクを実行する回路の各々は、回路規模に応じた数のブロックに構成されることを特徴とする請求項1ないし請求項7のいずれか1項記載の情報処理装置。

請求項9

タスクを実行する回路を再構成可能なプログラマブル部を備える情報処理装置の制御方法において、前記情報処理装置が、前記プログラマブル部に構成される所定数の回路により実行されるタスクの実行時間を予測し、先行して実行される先行タスクに対して予測した実行時間と、前記先行タスクの次に実行される後続タスクを実行する回路である後続回路の前記プログラマブル部への構成に掛かる構成時間とに基づいて、前記プログラマブル部に構成する前記後続回路の数を決定し、前記先行タスクの実行中に、決定した数の前記後続回路を前記プログラマブル部に順次構成し、前記先行タスクが完了する時間と、前記後続回路の前記プログラマブル部への構成が完了する時間との関係に基づいて、前記プログラマブル部に構成する前記後続回路の数を調整することを特徴とする情報処理装置の制御方法。

請求項10

タスクを実行する回路を再構成可能なプログラマブル部を備える情報処理装置の制御プログラムにおいて、前記プログラマブル部に構成される所定数の回路により実行されるタスクの実行時間を予測し、先行して実行される先行タスクに対して予測した実行時間と、前記先行タスクの次に実行される後続タスクを実行する回路である後続回路の前記プログラマブル部への構成に掛かる構成時間とに基づいて、前記プログラマブル部に構成する前記後続回路の数を決定し、前記先行タスクの実行中に、決定した数の前記後続回路を前記プログラマブル部に順次構成し、前記先行タスクが完了する時間と、前記後続回路の前記プログラマブル部への構成が完了する時間との関係に基づいて、前記プログラマブル部に構成する前記後続回路の数を調整する処理を前記情報処理装置に実行させることを特徴とする情報処理装置の制御プログラム。

技術分野

0001

本発明は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムに関する。

背景技術

0002

近時、論理を動的に再構成可能なFPGA(Field-Programmable Gate Array)等のプログラマブルデバイスにおいて、プログラマブルデバイスに構成する論理を順次切り替えデータ処理を実行する手法が提案されている。例えば、複数の前段処理をそれぞれ実行する複数の前段回路と、複数の前段処理の結果を用いて後段処理を実行する後段回路とによりデータ処理を実行する場合がある。この場合、複数の前段回路と後段回路との少なくともいずれかを同時に構成する複数種実装方法が予め用意され、目標時間内にデータ処理を完了する実装方法のうち、構成される回路規模が最も小さい実装方式が選択される。また、目標時間内にデータ処理を完了することが困難な場合、選択した実装方式に対応する論理の複数個がプログラマブルデバイスに構成され、データ処理が並列に実行される(例えば、特許文献1参照)。

0003

直列に接続される2つの回路を交互に構成してデータ処理を実行する場合、後段回路が、前段回路から順次出力されるデータ処理の結果を受信して次のデータ処理を開始することで、最終の処理結果を得るまでの時間が短縮される(例えば、特許文献2参照)。

0004

データ処理の順序に合わせて複数の回路を順次構成し、構成した順にデータ処理を開始することで、データ処理と並行して他の回路が構成されるため、複数の回路をまとめて構成する場合に比べて、データ処理が高速化される(例えば、特許文献3参照)。

先行技術

0005

特開2011−203920号公報
特開2002−26721号公報
特開2011−186981号公報

発明が解決しようとする課題

0006

しかしながら、データ処理の実行時間は、予測された実行時間に対して変化する場合がある。このため、データ処理を実行中に、次のデータ処理を実行する回路を構成する場合、データ処理の完了時刻と、データ処理に並行して実行される回路の構成の完了時刻との関係が常に一定になるとは限らない。

0007

データ処理の完了時刻が、次のデータ処理を実行する回路の構成の完了時刻より早くなる場合、次のデータ処理の開始は、回路の構成が完了するまで待たされる。あるいは、データ処理の完了時刻が、次のデータ処理を実行する回路の構成の完了時刻より遅くなる場合、次のデータ処理の開始は、先行するデータ処理が完了するまで待たされる。これにより、データ処理の実行時間が、予測された実行時間に対して変化する場合、データ処理の効率が低下するおそれがある。

0008

1つの側面では、本件開示の情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムは、タスクの実行中に次のタスクを実行する回路を構成する場合、複数のタスクが完了するまでのトータルの処理時間を短縮することを目的とする。

課題を解決するための手段

0009

一つの観点によれば、情報処理装置は、タスクを実行する回路を再構成可能なプログラマブル部と、プログラマブル部に構成される所定数の回路により実行されるタスクの実行時間を予測する実行時間予測部と、先行して実行される先行タスクに対して実行時間予測部が予測した実行時間と、先行タスクの次に実行される後続タスクを実行する回路である後続回路のプログラマブル部への構成に掛かる構成時間とに基づいて、プログラマブル部に構成する後続回路の数を決定する構成数決定部と、先行タスクの実行中に、構成数決定部が決定した数の後続回路をプログラマブル部に順次構成する構成制御部と、先行タスクが完了する時間と、後続回路のプログラマブル部への構成が完了する時間との関係に基づいて、プログラマブル部に構成する後続回路の数を調整する調整部とを有する。

0010

別の観点によれば、タスクを実行する回路を再構成可能なプログラマブル部を備える情報処理装置の制御方法は、情報処理装置が、プログラマブル部に構成される所定数の回路により実行されるタスクの実行時間を予測し、先行して実行される先行タスクに対して予測した実行時間と、先行タスクの次に実行される後続タスクを実行する回路である後続回路のプログラマブル部への構成に掛かる構成時間とに基づいて、プログラマブル部に構成する後続回路の数を決定し、先行タスクの実行中に、決定した数の後続回路をプログラマブル部に順次構成し、先行タスクが完了する時間と、後続回路のプログラマブル部への構成が完了する時間との関係に基づいて、プログラマブル部に構成する後続回路の数を調整する。

0011

さらなる別の観点によれば、タスクを実行する回路を再構成可能なプログラマブル部を備える情報処理装置の制御プログラムは、プログラマブル部に構成される所定数の回路により実行されるタスクの実行時間を予測し、先行して実行される先行タスクに対して予測した実行時間と、先行タスクの次に実行される後続タスクを実行する回路である後続回路のプログラマブル部への構成に掛かる構成時間とに基づいて、プログラマブル部に構成する後続回路の数を決定し、先行タスクの実行中に、決定した数の後続回路をプログラマブル部に順次構成し、先行タスクが完了する時間と、後続回路のプログラマブル部への構成が完了する時間との関係に基づいて、プログラマブル部に構成する後続回路の数を調整する処理を情報処理装置に実行させる。

発明の効果

0012

本件開示の情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムは、タスクの実行中に次のタスクを実行する回路を構成する場合、複数のタスクが完了するまでのトータルの処理時間を短縮することができる。

図面の簡単な説明

0013

情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの一実施形態を示す図である。
図1に示すサーバの動作の一例を示す図である。
情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの別の実施形態を示す図である。
図3に示す実行時間保持テーブルおよび構成時間保持テーブルの一例を示す図である。
図3に示すサーバにより制御されるFPGAの動作の一例を示す図である。
図3に示すサーバの動作の一例を示す図である。
図3に示すサーバの動作の別の例を示す図である。
図3に示すサーバの動作の別の例を示す図である。
図3に示すサーバの動作の別の例を示す図である。
図3に示すサーバの動作のさらなる別の例を示す図である。
図3に示すサーバにおけるタスクの処理時間を最適化する動作の一例を示す図である。
図11に示すステップS100の処理の一例を示す図である。

実施例

0014

以下、図面を用いて実施形態を説明する。

0015

図1は、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラムの一実施形態を示す。

0016

図1に示すサーバSV1は、実行時間予測部1、構成数決定部2、構成制御部3、調整部4およびFPGAを有する。実行時間予測部1、構成数決定部2、構成制御部3および調整部4は、サーバSV1に搭載されるハードウェアにより実現されてもよい。あるいは、実行時間予測部1、構成数決定部2、構成制御部3および調整部4は、サーバSV1に搭載される図示しないCPU(Central Processing Unit)等のプロセッサが実行する制御プログラムにより実現されてもよい。サーバSV1は、情報処理装置の一例である。なお、情報処理装置の形態は、サーバ以外の他のコンピュータ装置でもよい。

0017

サーバSV1は、先行して実行される先行タスクの実行中に、先行タスクの次に実行される後続タスクを実行する回路である後続回路をFPGA内に構成する。すなわち、FPGAへの後続回路の構成は、先行タスクの実行のバックグラウンドで実行される。例えば、FPGAは、タスクを実行する回路を再構成可能な複数のブロックBLKを有する。なお、FPGAが有するブロックBLKの数は、16個に限定されない。FPGAは、タスクを実行する回路を再構成可能なプログラマブル部の一例である。

0018

実行時間予測部1は、FPGAに構成される所定数の回路により実行されるタスクの実行時間tEXCを予測する。複数の回路がFPGAに構成される場合、実行時間tEXCは、複数の回路がタスクを並列に動作する実行時間である。構成数決定部2は、実行時間予測部1が予測した先行タスクの実行時間tEXCと、後続タスクを実行する後続回路のFPGAへの構成に掛かる構成時間tCNFとに基づいて、FPGAに構成する後続回路の数NCNFを決定する。例えば、構成時間tCNFは、1個の後続回路のFPGAへの構成に掛かる時間を示す。以下では、FPGAに構成する後続回路の数NCNFは並列数とも称される。

0019

構成制御部3は、先行タスクの実行中に、構成数決定部2が決定した数NCNFの後続回路の回路情報CINFをFPGAに順次転送し、後続回路をFPGAに順次構成する。

0020

調整部4は、先行タスクが完了する時間(時刻)と、後続回路のFPGAへの構成が完了する時間(時刻)との関係に基づいて、FPGAに構成する後続回路の数を構成制御部3に調整させる調整情報ADJを構成制御部3に出力する。例えば、調整部4は、タスクの完了時にFPGAが出力する完了通知TCPLに基づいて、先行タスクが完了する時間を検出し、回路の構成の完了時に構成制御部3が出力する完了通知BCPLに基づいて、後続回路のFPGAへの構成が完了する時間を検出する。

0021

調整部4は、完了通知BCPLより早く完了通知TCPLを受信した場合、後続回路のFPGAへの構成が完了する前に先行タスクが完了したことを検出する。一方、調整部4は、完了通知TCPLより早く完了通知BCPLを受信した場合、先行タスクが完了する前に後続回路のFPGAへの構成が完了したことを検出する。

0022

図2は、図1に示すサーバSV1の動作の一例を示す。図2に示す動作は、図1に示すサーバSV1に搭載されるハードウェアにより実現され、あるいは、図1に示すサーバSV1に搭載されるプロセッサが実行する制御プログラムにより実現される。すなわち、図2は、情報処理装置の制御方法および情報処理装置の制御プログラムの一例を示す。

0023

図2において”回路の構成”に示す矩形横幅は、回路のブロックBLKへの構成時間を示し、”タスクの実行”に示す矩形の横幅は、タスクの実行時間を示す。図2では、先行タスクはタスク1であり、後続タスクはタスク2である。回路2はタスク2を実行する後続回路である。タスク1を実行する回路は、タスク1の実行前にFPGAのブロックBLKに構成される。

0024

例えば、構成数決定部2は、実行時間予測部1が予測したタスク1の実行時間tEXCを、1個の回路2のFPGAへの構成時間で除することで、タスク1の実行中にFPGAに構成可能な回路2の数(この例では、4個)を算出する(図2(a))。構成数決定部2が回路2をFPGAに構成する数は、タスク1の実行が開始される前に算出される。

0025

構成制御部3は、タスク1の実行の開始に合わせて、構成数決定部2が算出した数NCNFの回路2のFPGAへの構成を開始する(図2(b))。そして、タスク1が完了し、かつ、回路2のFPGAへの構成が完了した後、タスク2の実行が開始される(図2(c))。このように、サーバSV1は、回路の構成とタスクの実行とを並列かつ順次に行うパイプライン処理を実行する。

0026

図2に示す”予測される動作”では、タスク2は、4個の回路2により4並列で実行されるため、タスク2の実行時間は、1個の回路2でタスク2を実行する場合の実行時間の25%になる。なお、タスク2の後にタスク3(図示せず)が実行される場合、タスク2の実行の開始に合わせて、タスク3を実行する回路3(図示せず)のFPGAへの構成が開始される。

0027

”予測される動作”に対して、”実際の動作(1)”では、タスク1の実行が予測より早く完了する(図2(d))。例えば、タスク1は、回路2の3個目の構成中に完了する。調整部4は、完了通知BCPLより早く完了通知TCPLを受信した場合、FPGAに構成する回路2の数を、構成数決定部2が決定した4個ではなく、現在構成中の回路2を含む3個にする調整情報ADJを構成制御部3に出力する。すなわち、調整部4は、構成制御部3に、FPGAに構成する後続回路の数を4個から3個に調整させる(図2(e))。

0028

FPGAへの回路2の構成数が4個から3個に減った場合、タスク2の並列数は”4”から”3”に減るため、タスク2の実行時間は、”予測される動作”によるタスク2の実行時間より長くなる(図2(f))。しかしながら、タスク2の実行開始時刻は、FPGAへの回路2の構成数が4個の場合に比べて早くなる。

0029

一方、当初予測した並列数を変えない場合、タスク2は、回路2のFPGAへの構成後に開始される。この結果、図2に示す動作では、FPGAへの回路2の構成数を4個から3個に調整した場合、FPGAへの回路2の構成数を4個のままにした場合に比べて、タスク2が完了する時刻を早くすることができる。この結果、FPGAへの回路2の構成数を4個のままにした場合に比べて、タスク1およびタスク2のトータルの処理時間を短縮することができる。

0030

一方、”実際の動作(2)”では、タスク1の実行が予測より遅くなり、4個の回路2のFPGAへの構成は、タスク1が完了する前に完了する(図2(g))。調整部4は、完了通知TCPLより早く完了通知BCPLを受信した場合で、タスク1が完了する前に構成数決定部2が決定した数より多い回路2をFPGAに構成できる場合、FPGAに構成する回路2の数を増やす調整情報ADJを構成制御部3に出力する。この例では、調整部4は、構成制御部3に、FPGAに構成する後続回路の数を4個から5個に調整させる調整情報ADJを構成制御部3に出力する(図2(h))。

0031

FPGAへの回路2の構成数が4個から5個に増えた場合、タスク2の並列数は”4”から”5”に増えるため、タスク2の実行時間は、”予測される動作”によるタスク2の実行時間より短くなる(図2(i))。すなわち、並列度が増えることで、タスク2の実行時間は短縮される。

0032

一方、当初予測した並列数を変えない場合、タスク2は、タスク1の実行の完了後に開始される。この結果、図2に示す動作では、FPGAへの回路2の構成数を4個から5個に調整した場合、FPGAへの回路2の構成数を4個のままにした場合に比べて、タスク2が完了する時刻を早くすることができる。この結果、FPGAへの回路2の構成数を4個のままにした場合に比べて、タスク1およびタスク2のトータルの処理時間を短縮することができる。

0033

以上、図1および図2に示す実施形態では、先行タスクの完了時間と、後続タスクを実行する後続回路のFPGAへの構成の完了時間との関係に基づいて、後続回路のFPGAへの構成数を調整する。これにより、先行タスクの実行のバックグラウンドで後続回路をFPGAに構成し、タスクを順次実行する情報処理装置において、タスクのトータルの処理時間を従来に比べて短縮することができる。

0034

図3は、情報処理装置、情報処理方法およびプログラムの別の実施形態を示す。図1および図2で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。図3に示すサーバSV2は、バスBUSを介して互いに接続されたCPU(Central Processing Unit)、メモリMEM通信インタフェースCIF、FPGA、DMAC(Direct Memory Access Controller)およびHDD(Hard Disk Drive)を有する。サーバSV2は、情報処理装置の一例である。

0035

CPUは、サーバSV全体の動作を制御するとともに、メモリMEMに格納された制御プログラムを実行することで、実行時間予測部10、構成時間予測部12、構成数決定部14、制御部16および構成制御部17として機能する。実行時間予測部10は、FPGAに構成される回路の各々が実行するタスクの実行時間を予測する。

0036

構成時間予測部12は、後述する構成時間保持テーブル24を参照し、HDDに保持された回路の回路情報をFPGAに転送する時間を予測する。FPGAは、HDDから転送された回路情報をルックアップテーブル等に書き込むことで回路を構成する。このため、HDDからFPGAへの回路情報の転送時間と、FPGA内での回路情報の書き込み時間との和が、FPGAへの回路の構成時間になる。しかしながら、回路情報の転送時間は、回路情報の書き込み時間に比べて支配的であるため、FPGAへの回路の構成時間は、回路情報の転送時間とほぼ等しい。構成時間予測部12により回路情報の転送時間を算出することで、回路情報を転送するバスBUS等の転送路データ転送速度が変化する場合にも、回路情報の正しい転送時間を予測することができる。

0037

構成数決定部14は、FPGAに構成される回路が実行するタスクの並列数を決定する。すなわち、構成数決定部14は、タスクを実行する回路のFPGAへの構成数を決定する。

0038

なお、CPUは、FPGAに構成される各回路の動作(すなわち、タスク)を制御するアプリケーションプログラムを実行する。アプリケーションプログラムは、複数種の回路毎に用意されてもよく、複数種の回路に共通に用意されてもよい。CPUが複数のCPUコアを有する場合、制御プログラムとアプリケーションプログラムとは、互いに異なるCPUコアによりそれぞれ実行されてもよい。また、アプリケーションプログラムは、CPUまたはCPUコアが起動する仮想マシンにより実行されてもよい。

0039

制御部16は、実行時間予測部10、構成時間予測部12および構成数決定部14の動作により得られる情報に基づいて、FPGAに構成する回路の数を調整する。制御部16は、先行タスクが完了する時間と、後続回路のFPGAへの構成が完了する時間との関係に基づいて、FPGAに構成する後続回路の数を調整する調整部の一例である。

0040

構成制御部17は、HDDに保持された回路の回路情報をFPGAに転送する制御を実行する。例えば、構成制御部17は、DMACを使用して、タスクの実行中に、構成数決定部14が決定した数の回路の回路情報をFPGAに順次構成する。なお、構成制御部17は、DMACを使用せずに、タスクの実行中に、構成数決定部14が決定した数の回路の回路情報をFPGAに順次構成してもよい。また、制御部16が、構成制御部17の機能を有してもよい。

0041

メモリMEMは、記憶領域18、20、22、24を有する。記憶領域18は、CPUが実行する制御プログラムを保持する。記憶領域20は、CPUが実行するアプリケーションプログラムを保持する。例えば、アプリケーションプログラムは、HDDに保持され、HDDからメモリMEMに転送された後、CPUにより実行される。

0042

記憶領域22には、実行時間保持テーブルが割り当てられる。以下の説明では、実行時間保持テーブルは、実行時間保持テーブル22と称される。実行時間保持テーブル22には、過去にFPGAに構成された回路が実行したタスクの実行時間に基づき算出された1回路当たりのタスクの実行時間(1並列でのタスクの実行時間)を示す情報が格納される。1回路当たりのタスクの実行時間は、基準の実行時間の一例である。

0043

CPUは、1つのタスクが完了する毎に、タスクの実行時間に基づいて1並列でのタスクの実行時間を算出し、算出した1並列でのタスクの実行時間を示す情報を、回路の種類毎に実行時間保持テーブル22に格納する。1並列でのタスクの実行時間は、タスクの実行時間に、タスクの並列数(すなわち、タスクを並列に実行する回路数)を乗じることで算出される。

0044

なお、実行時間保持テーブル22には、過去に実行されたタスクの実行時間を1並列での実行時間に換算した値の平均値が格納されてもよい。実行時間保持テーブル22は、実行時間予測部10がタスクの実行時間を予測する場合に参照される。実行時間予測テーブル22には、HDDに回路情報が登録されたことに基づいて、登録された回路情報に対応する回路が実行するタスクの1並列での実行時間の初期値が格納される。これにより、タスクが実行されていない初期状態においても、実行時間予測部10は、タスクの実行時間を予測することができる。サーバSVがタスクを実行する動作を開始したタスクの1並列での実行時間の初期値は、平均的な処理を実行するタスクの実行時間(計算値または実測値)である。実行時間保持テーブル22の例は、図4に示される。

0045

記憶領域24には、構成時間保持テーブルが割り当てられる。以下の説明では、構成時間保持テーブルは、構成時間保持テーブル24とも称される。構成時間保持テーブル24には、HDDからFPGAへの回路情報の転送時間を示す情報が格納される。構成時間保持テーブル24の例は、図4に示される。

0046

通信インタフェースCIFは、例えば、インターネットまたはイントラネット等のネットワークNWに接続され、サーバSV内で使用する情報をネットワークNWから受信し、またはサーバSV内で処理した情報をネットワークNWに送信する。

0047

FPGAは、HDDから転送される回路の回路情報をルックアップテーブル等に書き込むことで、回路が構成される複数のブロックBLKと、複数の外部端子PADと、複数のブロックBLKおよび複数の外部端子PADを相互に接続する配線部WRとを有する。なお、サーバSVは、タスクを実行する回路を再構成可能であれば、FPGAの代わりに他のプログラマブル部を有してもよい。

0048

DMACは、構成制御部17からの指示に基づいて、HDDに保持された回路の回路情報をFPGAに転送する。なお、回路情報のFPGAへの転送は、制御部16等のCPUの機能を用いて実行されてもよい。この場合、制御部16が、構成数決定部14が決定した数の回路の回路情報をFPGAに順次構成する構成制御部として機能する。

0049

HDDは、FPGAに構成する複数の回路(回路1、回路2、回路3、回路4、...)の回路情報を保持する記憶領域26を有する。例えば、各回路の回路情報は、通信インタフェースCIFを介してサーバSVの外部からHDDに格納される。なお、HDDは、CPUが実行する制御プログラムがインストールされる記憶領域も有する。この場合、HDDにインストールされた制御プログラムは、制御プログラムの実行時にHDDからメモリMEMに転送される。

0050

図4は、図3に示す実行時間保持テーブル22および構成時間保持テーブル24の一例を示す。実行時間保持テーブル22は、タスク名(タスク1、タスク2、タスク3、...)を示す情報を保持する領域と、1並列でのタスクの実行時間(T11、T21、T31、...)を示す情報を保持する領域とを含む複数のエントリを有する。制御部16は、タスクが完了する毎に、1並列でのタスクの実行時間を算出し、算出した実行時間を示す情報を、タスク名を示す情報とともに、実行時間保持テーブル22に格納する。

0051

構成時間保持テーブル24は、FPGAに構成する回路の回路情報のデータサイズ毎に、転送速度を示す情報を保持する領域と、転送時間を示す情報を保持する領域とを含む複数のエントリを有する。転送速度の領域には、HDDからFPGAに転送される回路情報の転送速度(例えば、バスBUSの転送速度)が格納される。転送時間の領域には、回路情報のデータサイズと転送速度とに応じた転送時間を示す情報が、FPGAに回路が構成される前に格納される。構成時間予測部12は、FPGAに転送する回路情報のデータサイズと、バスBUSの転送速度とに基づいて、構成時間保持テーブル22を参照し、回路情報の転送時間を取得することで、転送時間を予測する。

0052

なお、構成時間保持テーブル22は、転送時間を示す情報を保持する領域を持たず、回路情報のデータサイズ毎に、転送速度を示す情報を保持する領域を有してもよい。この場合、構成時間予測部12は、構成時間保持テーブル22が保持する情報に基づいて、HDDからFPGAに転送される回路情報の転送時間を算出する。また、HDDからFPGAへのデータ転送速度が一定の場合、構成時間保持テーブル24には、FPGAに転送される回路の回路情報のデータサイズ毎に、HDDからFPGAへの回路情報の転送時間が格納されてもよい。さらに、サーバSV2は、構成時間保持テーブル22を持たず、構成時間予測部12により転送時間を算出してもよい。この場合、構成時間予測部12は、例えば、HDDに保持された回路情報に付加された付加情報から回路情報のデータサイズを読み出し、読み出したデータサイズを、予め検出したバスBUSの転送速度で除することで、転送時間を算出する。

0053

図5は、図3に示すサーバSV2により制御されるFPGAの動作の一例を示す。図5に示す動作は、サーバSV2のCPUが制御プログラムを実行することで実現される。すなわち、図5は、情報処理装置の制御方法および情報処理装置の制御プログラムによる処理の一例を示す。図5において、ブロックBLK内に示す面取りされた破線矩形枠は、各回路がブロックBLKに構成されることを示し、ブロックBLK内に示す面取りされた実線の矩形枠は、各回路を動作させてタスクが実行されることを示す。

0054

図5に示す例では、サーバSV2は、回路1、回路2、回路3をFPGAの所定数のブロックBLKに順次構成し、ブロックBLKに構成した回路を動作させてタスク1、タスク2、タスク3を順次実行する。ここで、タスク1は回路1により実行され、タスク2は回路2により実行され、タスク3は回路3により実行される。図5に示す動作は、図3に示す制御部16が、実行時間予測部10、構成時間予測部12、構成数決定部14およびDMACを制御することに基づいて実行される。

0055

回路1の各々は、1つのブロックBLKに構成され、タスク1は、9個のブロックを使用して9並列で実行される。回路2の各々は、2つのブロックBLKに構成され、タスク2は、8個のブロックを使用して4並列で実行される。回路3の各々は、3つのブロックBLKに構成され、タスク3は、12個のブロックを使用して4並列で実行される。

0056

このように、複数の回路1、複数の回路2または複数の回路3は、回路規模に応じた数のブロックBLKに順次構成され、回路毎にタスクを並列に実行する。タスクの並列数(すなわち、FPGAに構成される同種の回路の数)は、ブロックBLKへの回路の構成時間とタスクの実行時間との和が最小になるように決められる。すなわち、タスクの並列数は、ブロックBLKへの回路の構成を開始する開始時間から、ブロックBLKに構成したタスクの実行が完了するまでの時間を短縮するように決められる。あるいは、タスクの並列数は、先行するタスクの実行時間と、先行するタスクの実行中に構成される後続のタスクを実行する回路の構成時間とが等しくなるように決められる。回路の構成時間は、上述したように、HDDからFPGAへの回路情報の転送時間にほぼ等しい。

0057

まず、処理の開始の指示に基づいて、図3に示す実行時間予測部10は、実行時間保持テーブル22からタスク1の実行時間(1並列でのタスク1の実行時間)を読み出す。実行時間予測部10は、読み出した実行時間の平均値を算出し、算出した平均値を1並列でのタスク1の実行時間の予測値とする。

0058

図3に示す構成時間予測部12は、回路1の回路情報のサイズとHDDからFPGAへのデータの転送速度とに基づいて、回路1の回路情報のHDDからFPGAへの転送に掛かる転送時間(1つの回路の構成時間)を、構成時間保持テーブル24から読み出す。

0059

図3に示す構成数決定部14は、実行時間予測部10が算出した実行時間の予測値(1並列でのタスクの実行時間)と、構成時間予測部12が読み出した1つの回路の構成時間とを式(1)に代入する。そして、構成数決定部14は、タスク1の理想的な並列数、すなわち、回路1のFPGAへの理想的な構成数である理想数を算出し、回路1のFPGAへの構成する数を決定する(図5(a))。式(1)中の符号SQRTは、平方根を示す。
理想数=SQRT(1並列でのタスクの実行時間/1つの回路の構成時間) ‥‥(1)
ここで、式(1)は、回路のFPGAへの構成時間とタスクの実行時間とがほぼ同じになるように、回路のFPGAへの構成数が決められることを示し、式(2)を変形することで得られる。式(1)で求められる理想数は、タスクの様々な並列数のうち、回路のFPGAへの構成を開始してからタスクの実行が完了するまでの時間であるタスクの処理時間が最も短くなる構成数を示す。
1つの回路の構成時間×タスクの並列数=1並列でのタスクの実行時間/タスクの並列数‥‥(2)
式(2)において、”1つの回路の構成時間×タスクの並列数”は、回路のFPGAへの構成時間を示し、”1並列でのタスクの実行時間/タスクの並列数”は、所定の並列数でのタスクの実行時間を示す。式(1)および式(2)は、回路のFPGAへの構成時間がタスクの並列数に比例し、タスクの実行時間がタスクの並列数に反比例するという条件下で成立する。以下では、回路のFPGAへの構成時間がタスクの並列数に比例し、タスクの実行時間がタスクの並列数に反比例するものとして説明する。

0060

実行時間予測部10は、タスク1の1並列での実行時間を回路1の構成数(9個)で除することで、タスク1の9並列での実行時間の予測値を算出する。制御部16は、構成数決定部14が算出した理想数と等しい数の回路1の回路情報をHDDからFPGAに転送させる指示をDMACに発行する。例えば、制御部16は、HDD内で回路1の回路情報が格納された先頭アドレスソースアドレス)と、回路1の回路情報を書き込むブロックBLKの先頭アドレス(ディスティネーションアドレス)と、回路1の回路情報のデータサイズとをDMACに指示する。ブロックBLKの先頭アドレスは、ブロックBLK毎に異なる。DMACは、CPUからの指示に基づいて、回路1の回路情報をHDDから読み出し、読み出した回路1の回路情報をFPGAに転送する動作を9回繰り返し、9個の回路1をFPGAの互いに異なるブロックBLKに順次構成する(図5(b))。

0061

次に、構成時間予測部12は、回路2の回路情報のサイズと、HDDからFPGAへのデータ転送速度とに基づいて、回路2の回路情報のHDDからFPGAへの転送に掛かる転送時間(1つの回路2の構成時間)を、構成時間保持テーブル24から読み出す。構成数決定部14は、実行時間予測部10が算出したタスク1の9並列での実行時間の予測値を1つの回路2の構成時間で除することで、回路2の構成数(”4”)を算出することで、FPGAに回路2を構成する数を決定する(図5(c))。すなわち、後続のタスクを実行する回路の構成数の初期値は、回路の構成時間が先行のタスクの実行時間の予測値にほぼ等しくなるように決められる。

0062

実行時間予測部10は、実行時間保持テーブル22からタスク2の実行時間(1並列でのタスク2の実行時間)を読み出す。実行時間予測部10は、読み出した実行時間の平均値を算出し、算出した平均値を1並列でのタスク2の実行時間の予測値とする。実行時間予測部10は、1並列でのタスク2の実行時間の予測値を、構成時間予測部12が算出した回路2の構成数(”4”)で除することで、タスク2の4並列での実行時間の予測値を算出する。

0063

次に、制御部16は、タスク1を実行するアプリケーションプログラムを起動してタスク1を開始するとともに、回路2の回路情報をHDDからFPGAに転送させる指示をDMACに発行する。そして、タスク1の実行と並行して、回路2がFPGAに構成される(図5(d))。

0064

次に、制御部16は、タスク1の完了時刻が、回路2のFPGAへの構成の完了時刻に対して早いか遅いかに応じて、回路2のFPGAへの構成数を調整する制御を実行する(図5(e))。タスク1の完了に基づいて、タスク1を実行するアプリケーションプログラムが停止される。なお、タスク1の実行に伴ってタスク2の実行時間が変化する場合、すなわち、タスク1とタスク2の間で依存性がある場合、回路2のFPGAへの構成数は、タスク2の実行時間の変化も考慮して調整される。回路2のFPGAへの構成数を調整する例は、図6から図10で説明する。

0065

タスク1の実行が完了した後、実行時間予測部10は、タスク1の実行に掛かった時間にタスク1の並列数を乗じて、タスク1の1回路当たりの実行時間(1並列でのタスク1の実行時間)を算出し、算出した実行時間を実行時間保持テーブル22に格納する。タスク1の実行の完了に前後して、回路2のFPGAへの構成が完了する。

0066

次に、構成時間予測部12は、回路3の回路情報のサイズと、HDDからFPGAへのデータ転送速度とに基づいて、回路3の回路情報のHDDからFPGAへの転送に掛かる転送時間(1つの回路3の構成時間)を構成時間保持テーブル24から読み出す。構成数決定部14は、実行時間予測部10が算出したタスク2の4並列での実行時間の予測値を1つの回路3の構成時間で除し、回路3の構成数(”4”)を算出することで、FPGAに回路3を構成する数を決定する(図5(f))。

0067

実行時間予測部10は、実行時間保持テーブル22からタスク3の実行時間(1並列でのタスク3の実行時間)を読み出す。実行時間予測部10は、読み出した実行時間の平均値を算出し、算出した平均値を1並列でのタスク3の実行時間の予測値とする。実行時間予測部10は、1並列でのタスク3の実行時間の予測値を、構成時間予測部12が算出した回路3の構成数(”4”)で除することで、タスク3の4並列での実行時間の予測値を算出する。

0068

次に、制御部16は、タスク2を実行するアプリケーションプログラムを起動するとともに、回路3の回路情報をHDDからFPGAに転送させる指示をDMACに発行する。そして、タスク2の実行に並行して、回路3のFPGAへの構成が実行される(図5(g))。

0069

次に、制御部16は、タスク2の実行の完了時刻が、回路3のFPGAへの構成の完了時刻に対して早いか遅いかに応じて、回路3のFPGAへの構成数を調整する制御を実行する(図5(h))。タスク2の完了に基づいて、タスク2を実行するアプリケーションプログラムが停止される。なお、タスク2の実行に伴ってタスク3の実行時間が変化する場合、すなわち、タスク2とタスク3の間で依存性がある場合、回路3のFPGAへの構成数は、タスク3の実行時間の変化も考慮して調整される。

0070

タスク2の実行が完了した後、実行時間予測部10は、タスク2の実行に掛かった時間にタスク2の並列数を乗じて、タスク2の1回路当たりの実行時間(1並列でのタスク2の実行時間)を算出し、算出した実行時間を実行時間保持テーブル22に格納する。タスク2の実行の完了に前後して、回路3のFPGAへの構成が完了する。

0071

次に、制御部16は、タスク3を実行するアプリケーションプログラムを起動し、タスク3の実行が開始される。図5に示す例では、タスク3に続いて実行されるタスクは存在しないため、タスク3の完了に基づいて、FPGAによる処理が完了する(図5(i))。タスク3の完了に基づいて、タスク3を実行するアプリケーションプログラムが停止される。

0072

図6は、図3に示すサーバSV2の動作の一例を示す。図6では、図5と同様に、9個の回路1がFPGAに構成された後、回路1を使用したタスク1の実行と、4個の回路2のFPGAへの構成が並列に実行され、タスク1が完了した後、回路2を使用してタスク2が実行される。すなわち、図6に示す動作は、回路3のFPGAへの構成と、回路3を使用したタスク3が実行されないことを除き、図5に示す動作と同様である。

0073

まず、サーバSV2のCPUは、構成時間保持テーブル24を参照することで、1個の回路1のFPGAへの構成時間が1Tであると予測し、実行時間保持テーブル22を参照することで、タスク1の1並列での実行時間が81Tであると予測する。ここで、時間Tは、説明を分かりやすくするために設けた基準時間であり、実際の動作では、回路の構成およびタスクの実行が、時間T刻みで実行されるとは限らない。

0074

CPUは、式(1)を用いて、回路1の理想数”9”(SQRT(81T/1BLK))を算出し、9個の回路1をFPGAに構成する(図6(a))。また、CPUは、タスク1の9並列での実行時間が9T(=81T/9BLK)であると予測する(図6(b))。

0075

CPUは、構成時間保持テーブル24を参照することで、1個の回路2のFPGAへの構成時間が2Tであると予測し、実行時間保持テーブル22を参照することで、タスク2の1並列での実行時間が8Tであると予測する。CPUは、タスク1の9並列での実行時間9Tの間に配置可能な回路2の数を算出し、4個の回路2のFPGAへの構成を決定する(図6(c))。また、CPUは、タスク2の4並列での実行時間が2T(=8T/4BLK)であると予測する(図6(d))。

0076

一方、実際の動作では、タスク1の実行時間は予測より短い5Tであった(図6(e))。CPUは、実行時間5Tに基づいて、タスク1の1並列での実行時間45T(5T×9BLK)を算出し、算出した実行時間45Tを実行時間保持テーブル22に格納する。CPUは、タスク1の完了に基づいて、タスク2の実行時間を再予測する。これは、タスク1とタスク2の間で依存性がある場合、タスク1の実行結果によりタスク2の処理量が変わり、タスク2の実行時間が変わる可能性があるためである。図6に示す例では、タスク1とタスク2の間で依存性がないため、タスク2の1並列での実行時間は当初予測した実行時間(8T)と同じである。

0077

CPUは、式(1)を用いて、回路2の理想数”2”(SQRT(8T/2BLK))を算出し、タスク1が完了した時点で、FPGAに構成された回路2の数が理想数以上であると判定する。このため、CPUは、タスク1が完了した時点で回路情報をFPGAに転送中の3個目の回路2までFPGAに構成し、タスク2の並列数は”3”になる(図6(f))。3並列で実行されたタスク2は、2.7T(=8T/3BLK)後に完了する。CPUは、実行時間2.7Tに基づいて、タスク2の1並列での実行時間8T(2.7T×3BLK)を算出し、算出した実行時間8Tを実行時間保持テーブル22に格納し、タスク1、2の処理を完了する。

0078

これに対して、当初予測したタスク2の並列数”4”を変えない場合、回路2の構成動作は、タスク1が完了した後も継続される(図6(g))。そして、CPUは、4個の回路2がFPGAに構成された後、タスク2の実行を開始する。この場合、タスク2は4並列で実行されるため、タスク2の実行時間は2T(8T/4BLK)になる(図6(h))。したがって、タスク2の並列数をタスク1の完了時刻に応じて変える場合、タスク2の完了時刻は、タスク2の並列数を変えない場合に比べて、1.3T短縮することができる(図6(i))。

0079

図6に示すように、先行タスクの実行が、後続タスクを実行する後続回路のFPGAへの構成の完了前に完了し、先行タスクが完了した時点で後続回路のFPGAへの構成数が理想数に到達している場合がある。この場合、先行タスクが完了した時点でFPGAに構成された後続回路を用いて後続タスクを実行することで、当初の並列数で後続タスクを実行する場合に比べて、連続して実行される複数のタスクの処理時間を短縮することができる。換言すれば、先行タスクの実行時間が短縮され、かつ後続タスクの処理量が変わらない場合、後続タスクを実行する回路の構成数を減らすことで、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。

0080

図7は、図3に示すサーバSV2の動作の別の例を示す。図6と同一または同様の動作については、詳細な説明は省略する。図7では、1並列での実行時間が56Tのタスク1と、1並列での実行時間が64Tのタスク2が順次実行される。1個の回路1のFPGAへの構成時間は1Tであり、1個の回路2のFPGAへの構成時間は1Tである(図7(a)、(b))。CPUは、タスク1の8並列での実行時間が7T(=56T/8BLK)であると予測し、タスク2の8並列での実行時間が8T(=64T/8BLK)であると予測する(図7(c)、(d))。

0081

実際の動作では、タスク1の実行時間は、当初の予測通り7Tであった(図7(e))。一方、CPUは、タスク1とタスク2の間で依存性によりタスク2の処理量が増え、タスク2の1並列での実行時間が64Tから100Tに延びると、タスク1の完了時に予測する(図7(f))。例えば、タスク2で実行される処理の回数が、タスク1で実行される処理により決まる場合、タスク2の処理量は、タスク1の処理結果により変化する。ここで、タスク2で実行される処理の回数は、タスク2を実行するアプリケーションプログラムに記述されたループ回数等である。

0082

CPUは、式(1)を用いて、回路2の理想数”10”(SQRT(100T/1BLK))を算出し、タスク1が完了した時点で、FPGAに構成された回路2の数が理想数より少ないと判定する。このため、図7斜線枠で示すように、CPUは、理想数が”10”になるまで、回路2をFPGAに構成する(図7(g))。そして、CPUは、10個の回路2をFPGAに構成した後、タスク2を10並列で実行する。タスク2は、10T(=100T/10BLK)後に完了する(図7(h))。CPUは、実行時間10Tに基づいて、タスク2の1並列での実行時間100T(10T×10BLK)を算出し、算出した実行時間100Tを実行時間保持テーブル22に格納し、タスク1、2の処理を完了する。

0083

これに対して、当初予測したタスク2の並列数”8”を変えない場合、タスク2は、8個の回路2がFPGAに構成された後に実行される(図7(i))。この場合、タスク2は8並列で実行されるため、タスク2の実行時間は12.5T(100T/8BLK)になる(図7(j))。したがって、タスク2の並列数をタスク1の完了時刻に応じて変える場合で、タスク2の1並列での実行時間がタスク1の処理に応じて延びる場合、タスク2の完了時刻は、タスク2の並列数を変えない場合に比べて、0.5T短縮することができる(図7(k))。

0084

図7に示すように、先行タスクの実行が、後続タスクを実行する後続回路のFPGAへの構成の完了する前に完了し、先行タスクと後続タスクとに依存性があり、先行タスクが完了した時点で後続回路のFPGAへの構成数が理想数に到達していない場合がある。この場合、後続回路が理想数まで構成された後、後続タスクを実行することで、当初の並列数で後続のタスクを実行する場合に比べて、連続して実行される複数のタスクの処理時間を短縮することができる。換言すれば、先行タスクの実行時間が短縮され、かつ後続タスクの処理量が増える場合、後続タスクを実行する回路の構成数を増やすことで、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。

0085

図8は、図3に示すサーバSV2の動作の別の例を示す。図6または図7と同一または同様の動作については、詳細な説明は省略する。図8では、1並列での実行時間が72Tのタスク1と、1並列での実行時間が72Tのタスク2が順次実行される。1個の回路1のFPGAへの構成時間は1Tであり、1個の回路2のFPGAへの構成時間は2Tである(図8(a)、(b))。CPUは、タスク1の8並列での実行時間が9T(=72T/8BLK)であると予測し、タスク2の4並列での実行時間が18T(=72T/4BLK)であると予測する(図8(c)、(d))。

0086

実際の動作では、タスク1の実行時間は、当初の予測より短い7Tであった(図8(e))。CPUは、式(1)を用いて、回路2の理想数”6”(SQRT(72T/2BLK))を算出し、タスク1が完了した時点で、FPGAに構成された回路2の数が理想数より少ないと判定する。このため、図8に斜線枠で示すように、CPUは、理想数が”6”になるまで、回路2をFPGAに構成する(図8(g))。そして、CPUは、6個の回路2をFPGAに構成した後、タスク2を6並列で実行する。タスク2は、12T(=72T/6BLK)後に完了する(図8(h))。CPUは、実行時間12Tに基づいて、タスク2の1並列での実行時間72T(12T×6BLK)を算出し、算出した実行時間72Tを実行時間保持テーブル22に格納し、タスク1、2の処理を完了する。

0087

これに対して、当初予測したタスク2の並列数”4”を変えない場合、タスク2は、4個の回路2がFPGAに構成された後に実行される(図8(i))。この場合、タスク2は4並列で実行されるため、タスク2の実行時間は18T(72T/4BLK)になる(図8(j))。したがって、タスク2の並列数をタスク1の完了時刻に応じて変える場合で、タスク1とタスク2の間で依存性がない場合、タスク2の完了時刻は、タスク2の並列数を変えない場合に比べて、2T短縮することができる(図8(k))。

0088

図8に示すように、先行タスクの実行が、後続タスクを実行する後続回路のFPGAへの構成の完了する前に完了し、先行タスクと後続タスクとに依存性がなく、先行タスクが完了した時点で後続回路のFPGAへの構成数が理想数に到達していない場合がある。この場合、後続回路が理想数まで構成された後、後続タスクを実行することで、当初の並列数で後続のタスクを実行する場合に比べて、連続して実行される複数のタスクの処理時間を短縮することができる。換言すれば、先行タスクの実行時間が短縮され、かつ後続タスクの処理量が変わらない場合、後続タスクを実行する回路の構成数を増やすことで、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。

0089

図9は、図3に示すサーバSV2の動作の別の例を示す。図6と同一または同様の動作については、詳細な説明は省略する。図9では、1並列での実行時間が32Tのタスク1と、1並列での実行時間が64Tのタスク2が順次実行される。1個の回路1のFPGAへの構成時間は2Tであり、1個の回路2のFPGAへの構成時間は1Tである(図9(a)、(b))。CPUは、タスク1の4並列での実行時間が8T(=32T/4BLK)であると予測し、タスク2の8並列での実行時間が8T(=64T/8BLK)であると予測する(図9(c)、(d))。

0090

実際の動作では、タスク1の実行時間は、当初の予測より延び、8個の回路2のFPGAへの構成後もタスク1の実行は継続される。CPUは、タスク1の実行時間を再予測し、10Tを得る(図9(e))。例えば、タスク1の実行時間は、8個の回路2のFPGAへの構成が完了した時点で、タスク1の全体量に対する完了したタスク1の部分量比率に基づいて再予測される。タスク1の全体量が”100”で、8個の回路2のFPGAへの構成が完了した時点で完了済みのタスク1の部分量が”80”である場合、全体量を完了するまでの実行時間は、(100/80)×(現在までの実行時間)により算出される。

0091

CPUは、タスク1の実行時間10Tの間に配置可能な回路2の数(10個)を算出する(図9(f))。タスク1とタスク2の間で依存性がないため、タスク2の1並列での実行時間は、当初の予測と同じ64Tである。CPUは、式(1)を用いて、回路2の理想数”8”(SQRT(64T/1BLK))を算出し、タスク1が完了した時点で、FPGAに構成可能な回路2の数が理想数より多いと判定する。このため、図9に斜線枠で示すように、CPUは、タスク1が完了した時点で回路情報をFPGAに転送中の回路2までFPGAに構成し、タスク2の並列数は”10”になる。10並列で実行されたタスク2は、6.4T(=64T/10BLK)後に完了する(図9(g))。CPUは、実行時間6.4Tに基づいて、タスク2の1並列での実行時間64T(6.4T×10BLK)を算出し、算出した実行時間64Tを実行時間保持テーブル22に格納し、タスク1、2の処理を完了する。

0092

これに対して、当初予測したタスク2の並列数”8”を変えない場合、タスク2は、タスク1の完了後に実行される(図9(h))。この場合、タスク2は8並列で実行されるため、タスク2の実行時間は8T(64T/8BLK)になる(図9(i))。したがって、タスク2の並列数をタスク1の完了時刻に応じて変える場合、タスク2の完了時刻は、タスク2の並列数を変えない場合に比べて、1.6T短縮することができる(図9(j))。

0093

図9に示すように、後続タスクを実行する後続回路のFPGAへの構成が先行タスクが完了する前に完了し、再予測した先行タスクの完了時刻までに、理想数以上の後続回路がFPGAに構成可能な場合がある。この場合、先行タスクが完了するまで後続回路を配置し、配置された後続回路を用いて後続タスクを実行することで、当初の並列数で後続タスクを実行する場合に比べて、連続して実行される複数のタスクの処理時間を短縮することができる。換言すれば、先行タスクの完了時刻が延び、かつ後続タスクの処理量が変わらず、先行タスクが完了するまでに後続回路の構成数を増やすことができる場合、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。

0094

なお、図9に示す実際の動作において、回路2の構成の完了に対して、タスク1が僅かに遅れて完了した場合(例えば、タスク1の実行時間=10.2T)、タスク1の実行時間の間に配置可能な回路2の数は、当初の8個と同じになる。この場合、サーバSV2は、図9に示す予想される動作と同様に動作する。

0095

図10は、図3に示すサーバSV2の動作のさらなる別の例を示す。図6および図9と同一または同様の動作については、詳細な説明は省略する。図10における予測される動作は、図9における予測される動作と同じである。

0096

実際の動作では、タスク1の実行時間は、当初の予測より延び、8個の回路2のFPGAへの構成後もタスク1の実行は継続される。CPUは、タスク1の実行時間を再予測し、10Tを得る(図10(a))。CPUは、タスク1の実行時間10Tの間に配置可能な回路2の数(10個)を算出する。図10に示す例では、タスク1とタスク2の間で依存性があり、タスク2の1並列での実行時間は、当初の予測より長い120Tである。

0097

CPUは、式(1)を用いて、回路2の理想数”11”(SQRT(120T/1BLK))を算出し、タスク1が完了した時点で、FPGAに構成される回路2の数(”10”)が理想数より少ないと判定する。このため、図10に斜線枠で示すように、CPUは、タスク1の完了後も回路2をFPGAに構成し、タスク2の並列数は”11”になる(図10(b))。11並列で実行されたタスク2は、10.9T(=120T/11BLK)後に完了する(図10(c))。CPUは、実行時間10.9Tに基づいて、タスク2の1並列での実行時間119.9T(10.9T×11BLK)を算出し、算出した実行時間119.9Tを実行時間保持テーブル22に格納し、タスク1、2の処理を完了する。

0098

これに対して、当初予測したタスク2の並列数”8”を変えない場合、タスク2は、タスク1の完了後に実行される(図10(d))。この場合、タスク2は8並列で実行されるため、タスク2の実行時間は15T(120T/8BLK)になる(図10(e))。したがって、タスク2の並列数をタスク1の完了時刻に応じて変える場合、タスク2の完了時刻は、タスク2の並列数を変えない場合に比べて、3.1T短縮することができる(図10(f))。

0099

図10に示すように、後続タスクを実行する後続回路のFPGAへの構成が先行タスクが完了する前に完了し、再予測した先行タスクの完了時刻までに、理想数の後続回路がFPGAに構成されない場合がある。この場合、先行タスクの完了後、後続回路を理想数まで配置し、配置された後続回路を用いて後続タスクを実行することで、当初の並列数で後続タスクを実行する場合に比べて、連続して実行される複数のタスクの処理時間を短縮することができる。換言すれば、先行タスクの完了時刻が延び、かつ後続タスクの処理量が増える場合、後続回路を理想数まで構成することで、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。

0100

図11は、図3に示すサーバSV2におけるタスクの処理時間を最適化する動作の一例を示す。図11に示す処理は、サーバSV2のCPUが制御プログラムを実行することで実現される。すなわち、図4は、情報処理装置の制御方法および情報処理装置の制御プログラムによる処理の一例を示す。

0101

まず、ステップS10において、制御部16は、変数Nを”1”に設定する。次に、ステップS12において、構成時間予測部12は、1個の回路NのFPGAへの構成に掛かる構成時間tCF(N)を予測する。例えば、回路Nは、図5に示す回路1に対応する。実行時間予測部10は、1個の回路Nを使用したタスクの実行時間tEXC(N)を予測する。構成時間tCF(N)は、構成時間保持テーブル24を参照して予測され、実行時間tEXC(N)は、実行時間保持テーブル22を参照して予測される。

0102

次に、ステップS14において、構成数決定部14は、式(1)を用いて、回路Nの理想的な構成数である理想数pi(N)を算出する。次に、ステップS16において、構成時間予測部12は、理想数pi(N)の回路NをFPGAに構成するために掛かる構成時間tCFp(N)を算出する。実行時間予測部10は、理想数pi(N)でのタスクの実行時間tEXCp(N)を算出する。

0103

次に、ステップS18において、制御部16は、理想数pi(N)の回路NをFPGAに構成するために、回路Nの回路情報をHDDからFPGAに転送させる指示をDMACに発行する。DMACは、理想数pi(N)の回路Nの回路情報をHDDからFPGAに順次転送する。なお、回路Nの回路情報のHDDからFPGAへの転送は、DMACを用いずに、制御部16またはCPUの他の機能部が実行してもよい。

0104

次に、ステップS20において、制御部16は、理想数pi(N)の回路NがFPGAに構成されるまで待ち、理想数pi(N)の回路NがFPGAに構成された場合、処理をステップS22に移行する。

0105

ステップS22において、構成時間予測部12は、1個の回路N+1のFPGAへの構成に掛かる構成時間tCF(N+1)を予測する。例えば、回路N+1は、図5に示す回路2に対応する。実行時間予測部10は、1個の回路N+1を使用したタスクの実行時間tEXC(N+1)を予測する。構成時間tCF(N+1)は、構成時間保持テーブル24を参照して予測され、実行時間tEXC(N+1)は、実行時間保持テーブル22を参照して予測される。

0106

次に、ステップS24において、構成数決定部14は、理想数pi(N)の回路を用いて実行されるタスクNの実行時間中に配置可能な回路N+1の数を算出し、算出した数を回路N+1の並列数p(N+1)とする。並列数p(N+1)は、理想数pi(N+1)とは限らない。

0107

次に、ステップS26において、構成時間予測部12は、並列数p(N+1)の個数の回路N+1をFPGAへの構成に掛かる構成時間tCFp(N+1)を算出する。実行時間予測部10は、並列数p(N+1)でのタスクの実行時間tEXCp(N+1)を算出する。

0108

次に、ステップS28において、制御部16は、理想数pi(N)の回路NにタスクNを実行させる。また、並列数p(N+1)の回路N+1をFPGAに構成するために、回路N+1の回路情報をHDDからFPGAに転送させる指示をDMACに発行する。DMACは、並列数p(N+1)に対応する個数の回路Nの回路情報をHDDからFPGAに順次転送する。なお、回路N+1の回路情報のHDDからFPGAへの転送は、DMACを用いずに、制御部16またはCPUの他の機能部が実行してもよい。この場合、制御部16またはCPUの他の機能部が、先行タスクの実行中に、所定数の後続回路をFPGAに順次構成する構成制御部として機能する。

0109

次に、ステップS100において、制御部16は、タスクNの完了時刻が、回路N+1のFPGAへの構成の完了時刻に対して早いか遅いかに応じて、回路N+1のFPGAへの構成数(すなわち、並列数p(N+1))を調整する制御を実行する。ステップS100の例は、図12に示される。

0110

ステップS100の処理の完了後、ステップS30において、制御部16は、回路N+1によるタスクN+1が、連続して実行される一連のタスクの最後であるか否かを判定する。タスクN+1が最後のタスクでない場合、処理はステップS32に移行され、タスクN+1が最後のタスクである場合、処理はステップS36に移行される。

0111

ステップS32において、制御部16は、変数Nを”1”増加させる。これにより、タスクN+1(後続タスク)がタスクN(先行タスク)として扱われ、回路N+1(後続回路)が回路N(先行回路)として扱われる。次に、ステップS34において、実行時間予測部10は、ステップS100で調整した並列数での回路N(調整時は回路N+1)が実行するタスクNの実行時間tEXCp(N)を予測し、処理をステップS22に移行する。一方、ステップS36において、制御部16は、回路N+1にタスクN+1を実行させ、連続して実行される一連のタスクによる処理を完了する。

0112

図12は、図11に示すステップS100の処理の一例を示す。まず、ステップS102において、制御部16は、タスクNの実行が完了したか否かを判定する。タスクNの実行が完了していない場合、処理はステップS104に移行され、タスクNの実行が完了した場合、処理はステップS116に移行される。

0113

ステップS104において、制御部16は、回路N+1のFPGAへの構成が完了したか否かを判定する。回路N+1のFPGAへの構成が完了した場合、処理はステップS106に移行され、回路N+1のFPGAへの構成が完了していない場合、処理はステップS102に戻る。換言すれば、ステップS102、S104において、回路N+1のFPGAへの構成が完了する前に、タスクNが完了した場合、処理はステップS116に移行する。一方、タスクNが完了する前に、回路N+1のFPGAへの構成が完了した場合、処理はステップS106に移行する。

0114

ステップS106において、実行時間予測部10は、並列数pi(N)の回路NによるタスクNの実行時間tEXCp(N)を再予測する。次に、ステップS108において、構成数決定部14は、ステップS106で予測されたタスクNの実行時間tEXCp(N)を回路N+1の構成時間tCF(N+1)で除し、回路N+1の並列数p(N+1)を算出し直す。

0115

次に、ステップS110において、制御部16は、ステップS108で算出した並列数p(N+1)が、当初算出した並列数p(N+1)より大きいか否かを判定する。ステップS108で算出した並列数p(N+1)が、図11のステップS24で算出した当初の並列数p(N+1)より大きい場合、回路N+1をFPGAに追加するため、処理はステップS112に移行される。ステップS108で算出した並列数p(N+1)が、図11のステップS24で算出した当初の並列数p(N+1)以下である場合、回路N+1をFPGAに追加しないため、処理はステップS114に移行する。例えば、回路N+1の構成の完了に対して、タスクNが僅かに遅れて完了した場合で、タスクNとタスクN+1とに依存性がない場合、並列数p(N+1)は、図11のステップS24で算出した当初の並列数p(N+1)と同じになる。この場合、処理はステップS114に移行される。

0116

ステップS112において、制御部16は、FPGAに構成された回路N+1がp(N+1)個になるまで、回路N+1をFPGAに構成する。次に、ステップS114において、制御部16は、p(N+1)個の回路NがFPGAに構成されるのを待ち、p(N+1)個の回路N+1がFPGAに構成された場合、処理をステップS116に移行する。

0117

ステップS116において、実行時間予測部10は、タスクN+1の1並列での実行時間tEXC(N+1)を再予測する。これにより、タスクNとタスクN+1との間に依存関係があり、タスクNの実行結果に応じてタスクN+1の処理量が変化する場合にも、タスクNの実行結果に基づいて、タスクN+1の正しい実行時間を予測することができる。

0118

次に、ステップS118において、構成数決定部14は、タスクN+1の1並列での実行時間tEXC(N+1)と、1個の回路N+1の構成時間tCF(N+1)とを式(1)に代入して、タスクN+1の理想数pi(N+1)を算出する。ここで、タスクN+1の1並列での実行時間tEXC(N+1)は、ステップS116で予測した値が使用され、1個の回路N+1のFPGAへの構成に掛かる構成時間tCF(N+1)は、図11のステップS22で予測した値が使用される。ステップS116で予測した実行時間tEXC(N+1)を用いることで、タスクNとタスクN+1とに依存性があり、タスクNの実行結果に応じてタスクN+1の処理量が変わる場合にも、式(1)により理想数pi(N+1)を算出することができる。

0119

次に、ステップS120において、制御部16は、ステップS116で算出したタスクN+1の1並列での実行時間tEXC(N+1)が、図11のステップS22で予測した当初の実行時間tEXC(N+1)より長いか否かを判定する。タスクNとタスクN+1とに依存性がある場合、実行時間tEXC(N+1)は、当初の実行時間tEXC(N+1)に対して変化する。ステップS116で算出した実行時間tEXC(N+1)が、図11のステップS22で予測した当初の実行時間tEXC(N+1)より長い場合、理想数pi(N+1)の回路N+1をFPGAに構成するため、処理はステップS126に移行される。ステップS116で算出した実行時間tEXC(N+1)が、図11のステップS22で予測した当初の実行時間tEXC(N+1)以下である場合、処理はステップS122に移行される。

0120

ステップS122において、制御部16は、理想数pi(N+1)以上の回路N+1をFPGAに構成したか否かを判定する。理想数pi(N+1)以上の回路N+1をFPGAに構成した場合、回路N+1のFPGAへの構成が完了しているため、処理はステップS124に移行する。理想数pi(N+1)以上の回路N+1をFPGAに構成していない場合、理想数pi(N+1)の回路N+1をFPGAに構成するため、処理はステップS126に移行する。

0121

ステップS124において、制御部16は、FPGAに現在までに構成された回路N+1の数を並列数p(N+1)とし、処理を図11のステップS30に移行する。ステップS126において、制御部16は、ステップS118で算出した理想数pi(N+1)を、タスクN+1の並列数p(N+1)とする。次に、ステップS128において、制御部16は、FPGAに構成された回路N+1がp(N+1)個になるまで、回路N+1をFPGAに構成し、処理を図11のステップS30に移行する。

0122

以上、図3から図12に示す実施形態においても、図1および図2に示す実施形態と同様の効果を得ることができる。すなわち、先行タスクの実行のバックグラウンドで後続回路をFPGAに構成し、タスクを順次実行する情報処理装置において、タスクのトータルの処理時間を従来に比べて短縮することができる。換言すれば、後続タスクを実行する回路の構成数を当初算出した構成数に対して減らすことで、構成数を当初算出した構成数から変えない場合に比べて、タスクの実行時間の合計を短縮することができる。また、後続タスクを実行する回路の構成数を当初算出した構成数に対して増やすことで、構成数を当初算出した構成数から変えない場合に比べて、タスクの実行時間の合計を短縮することができる。

0123

さらに、図3から図12に示す実施形態では、先行タスクの実行時間が短縮され、かつ後続タスクの処理量が増える場合、後続タスクを実行する回路の構成数を増やすことで、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。先行タスクの実行時間が短縮され、かつ後続タスクの処理量が変わらない場合、後続タスクを実行する回路の構成数を増やすことで、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。先行タスクの完了時刻が延び、かつ後続タスクの処理量が変わらず、先行タスクが完了するまでに後続回路の構成数を増やすことができる場合、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。先行タスクの完了時刻が延び、かつ後続タスクの処理量が増える場合、後続回路を理想数まで構成することで、構成数を変えない場合に比べて、タスクの実行時間の合計を短縮することができる。

0124

構成数決定部14は、実行時間算出部10が予測した1並列での実行時間tEXC(N+1)を用いることで、理想数pi(N+1)を算出する。これにより、タスクNとタスクN+1とに依存性があり、タスクNの実行結果に応じてタスクN+1の処理量が変わる場合にも、式(1)により理想数pi(N+1)を算出することができる。

0125

構成時間予測部12により回路情報の転送時間を算出することで、回路情報を転送するバスBUS等の転送路のデータ転送速度が変化する場合にも、回路情報の正しい転送時間を予測することができる。

0126

以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。

0127

1…実行時間予測部;2…構成数決定部;3…構成制御部;4…調整部;10…実行時間予測部;12…構成時間予測部;14…構成数決定部;16…制御部;17…構成制御部;18、20…記憶領域;22…実行時間保持テーブル;24…構成時間保持テーブル;26…記憶領域;BCPL…完了通知;BLK…ブロック;BUS…バス;CIF…通信インタフェース;CINF…回路情報;NCNF…後続回路の数;NW…ネットワーク;PAD…外部端子;SV1、SV2…サーバ;tCNF…構成時間;TCPL…完了通知;tEXC…実行時間;MEM…メモリ;WR…配線部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ