[第1の実施形態]
図1は、本発明の第1の実施形態のDRLを備える情報処理装置の一例を説明するブロック図である。
情報処理装置101は、ソフトウェア102とハードウェア105とから構成される。
ハードウェア105は、CPU109、キャッシュメモリ115、動的再構成回路(DRL)108、メインメモリ107、及び周辺回路110を備える。
CPU109は、プログラムを実行する中央処理装置である。
メインメモリ107は、プログラム、及びデータを格納し、例えば、DRAM、又はMRAM等から構成される。なお、メインメモリ107は、揮発性のメインメモリ、又は不揮発のメモリのどちらであってもよい。CPU109がメインメモリ107に格納されるプログラムを実行することによって、後述するソフトウェア102が実現される。
周辺回路110は、ネットワーク通信、及び映像表示等の周辺機能を実現する回路である。
動的再構成回路(DRL)108は、複数の単位回路を備え、処理の実行中に、一部の回路情報を更新し、新たに回路を合成できる。単位回路は、例えば、FPGA等のように、SRAMと、SRAMに格納される記憶内容に応じて入力データを変換して出力する機能とを備えた小規模な回路、又は、小型のプロセッサが考えられる。以下、動的再構成回路(DRL)108をDRL108とも記載する。
DRL108は、さらに、構成制御部112及びI/O Map変換機能128を備える。
構成制御部112は、DRL管理部116と連携して各回路単位に回路を合成する。I/O Map変換機能128は、DRL108上に合成された回路にアクセスするための機能である。なお、I/O Map変換機能128は、後述するDRL I/OMap変更機能118と同一の機能を備える。
構成制御部112は、I/O Map変換機能128と連携して、ソフトウェア102から合成された回路へのアクセスを可能とする。
なお、ハードウェア105は、複数のDRL108を備えていてもよい。この場合、ハードウェア105が備える複数のDRL108は、同一のものでもよいし、異なるものであってもよい。
本実施形態では、DRL108は、CPU109及びキャッシュメモリ115と接続される。
前述の構成によって、DRL108の回路の一部を合成キャッシュ127として合成し、CPU109から高速にアクセスすることができる。例えば、既存のキャッシュメモリ115のメモリアドレスと連続したメモリアドレスになるように合成キャッシュ127が合成されることによって、CPU109から一のキャッシュメモリとして見せることができる。
また、DRL108に作成された合成メモリ126をメインメモリ107の一部として利用することも可能である。例えば、既存のメインメモリ107のメモリアドレスと連続したメモリアドレスになるように合成メモリ126が合成されることによって、CPU109から一のメインメモリとして見せることができる。
ソフトウェア102は、OS106、及び複数のアプリケーション103を含む。
アプリケーション103は、プログラムの実行単位であり、DRL利用機能104と一以上のプロセス113とを備える。アプリケーション103は、例えば、動画プレイヤー、ウェブブラウザ、又はワープロ等が考えられる。なお、各アプリケーション103には、アプリケーション103の実行優先度が設定されており、実行優先度の高いアプリケーション103から順に実行される。当該アプリケーション103の実行優先度は、OS106によって管理される。
プロセス113は、一連のまとまった処理の実行単位である。DRL利用機能104は、アプリケーション103がDRL108を利用するための機能であり、回路合成優先度指定機能117、回路情報一覧114及び専用デバイスドライバ情報119を含む。
回路情報一覧114は、アプリケーション103が利用する回路をDRL108上に合成するための情報を格納する。回路情報一覧114は、一つ以上の回路情報を格納する。また、回路情報には、回路合成の優先度が含まれる。なお、当該優先度は、回路合成優先度指定機能117によって決定される。
回路情報一覧114に格納されている回路情報は、アプリケーション103が回路を必要となった時に、OS106へ送信される。回路情報の送信方法は、例えば、OS106の負荷が低い時に送信する等の方法が考えられる。なお、OS106が専用デバイスドライバ123を必要とする場合、回路情報とともに専用デバイスドライバ情報119も送信される。
回路合成優先度指定機能117は、アプリケーション103が必要とする回路を合成する優先度、つまり、回路合成の優先度をOS106に通知する。例えば、ソフトウェア102で代替処理が不可能な場合、回路合成優先度指定機能117は当該ソフトウェア102が必要とする回路の回路合成の優先度を高くするよう通知し、また、代替処理が可能な場合、回路合成優先度指定機能117は当該ソフトウェア102が必要とする回路の回路合成の優先度を低くするように通知する、等が考えられる。
また、回路情報一覧114に複数の回路情報が格納される場合、回路合成優先度指定機能117は、それぞれ回路情報に回路合成の優先度を指定する。例えば、アプリケーション103がWebブラウザの場合、処理負荷が高い描画系が利用する回路の合成優先度を高くする等が考えられる。
専用デバイスドライバ情報119は、アプリケーション103がDRL108上に合成された回路を利用するために必要となる専用デバイスドライバである。アプリケーション103は、専用デバイスドライバを用いることで、DRL108上に合成された回路にアクセスできる。
専用デバイスドライバ情報119は、回路情報が送信されるタイミングでOS106に送信する方法、また、アプリケーション103が回路を初めて利用するときにOS106へ送信する方法等が考えられる。
アプリケーション103が専用デバイスドライバ情報119を備えることによって、OS106が任意のアプリケーション103の専用デバイスドライバ123を備えていなくてもよい。
OS106は、基本的な機能を提供し、例えば、Linux(登録商標)、Windows(登録商標)等である。本実施形態におけるOS106は、さらに、DRL API120、優先度指定部122、回路構成管理表121、アクセス調停部111、及びDRL管理部116を備える。
DRL API120は、DRL108上に回路を合成するため、アプリケーション103がOS106にアクセスするAPIである。DRL API120は、OS106によって提供され、回路合成の優先度の指定、回路情報の送信、専用デバイスドライバの送信、DRL108上での回路合成状況の確認、及びDRL108上で回路合成ができない場合におけるアプリケーション103へのエラーの通知、等のインタフェースを備える。
なお、アプリケーション103に通知されるエラーとして、例えば、DRL108上にどれだけの空き領域が足りないのか、一定時間後にDRL108上に空き領域ができる可能性があるか等が考えられる。また、アプリケーション103は、エラーが発生しても動作可能か等の情報をOS106へ送信し、OS106に処理を依頼する等の方法も考えられる。
アプリケーション103は、DRLAPI120を介して、専用デバイスドライバ123にアクセスする。なお、アプリケーション103は、直接、専用デバイスドライバ123にアクセスしてもよい。
優先度指定部122は、OS106の状態、DRL108の状態、及び各アプリケーション103から送信される情報に基づいて、OS106が管理する回路情報の合成優先度403(図2参照)を決定し、回路構成管理表121に決定された合成優先度403(図2参照)を格納する。
各アプリケーション103から送信される情報は、例えば、各アプリケーション103が利用する回路の回路合成の優先度、アプリケーション103のタイプ(例えば、ユーザインタフェース用、通信等のサーバ機能、等)、プロセス113の実行優先度、及びプロセス113の実行頻度などが考えられる。また、OS106の状態は、例えば、CPU109の負荷の高さ、メインメモリ107の使用量又は使用率などが考えられる。また、DRL108の状態は、例えば、DRL108の空き容量、DRL108のI/O負荷などが考えられる。
回路構成管理表121は、アプリケーション103におけるDRL108の利用状況を管理するための情報を格納する。具体的には、回路構成管理表121は、OS106が管理する回路情報とアプリケーション103との関係、及び合成優先度403(図2参照)を格納する。合成優先度403(図2参照)は、優先度指定部122によって指定された値が格納される。回路構成管理表121に基づいて、DRL108上に順次、回路が合成される。なお、回路構成管理表121の詳細は、図2を用いて後述する。
アクセス調停部111は、DRL管理部116と連携し、アプリケーション103からDRL108、及びOS106からDRL108へのアクセスタイミングの競合を調整する。また、アクセス調停部111は、アプリケーション103固有のアクセス手段を提供する、複数の専用デバイスドライバ123を格納する。なお、専用デバイスドライバ123は、アプリケーション103がDRL108へアクセスするときに、必要に応じて利用される。
DRL管理部116は、DRL108上に回路を合成、又はDRL108上に合成された回路の配置を変更する。例えば、DRL管理部116は、合成優先度403(図2参照)に基づいて、回路を合成する。また、DRL管理部116は、DRL108上に合成された回路が散在している場合、空き領域が連続するように当該回路を再配置する。処理の詳細については、図7〜図10を用いて後述する。
DRL管理部116は、DRL I/OMap変更機能118、及び回路配置マップ124を備える。
DRL I/OMap変更機能118は、DRL108上の回路の合成位置が変化した場合、ソフトウェア102が同一のI/Oアドレスを用いてDRL108上の回路にアクセスできるように、ソフトウェア102とハードウェア105との間のI/Oアドレスを変更する機能を提供する。
なお、DRL I/OMap変更機能118は、DRL108が備えていてもよい。この場合、DRL I/OMap変更機能118は、DRL108上の単位回路で実現してもよい。
回路配置マップ124は、DRL108上に合成されている回路に関する情報を格納する。つまり、回路配置マップ124は、DRL108の物理的な状態に関する情報を格納する。なお、回路配置マップ124の詳細は、図3及び図4を用いて後述する。
図2は、本発明の第1の実施形態の回路構成管理表121の一例を示す説明図である。
図2に示す例では、DRL108が1次元、2次元、及び3次元構造の場合の例を示している。
回路構成管理表121は、アプリケーションID401、回路ID402、合成優先度403、利用頻度404、回路規模405、合成開始位置406、状態407、専用デバイスドライバ408、及びアプリケーション状態409を含む。
また、DRL108が2次元構造の場合、回路構成管理表121は合成開始位置406の代わりに合成開始位置410を含み、DRL108が3次元構造の場合、回路構成管理表121は合成開始位置406の代わりに合成開始位置411を含む。
アプリケーションID401は、アプリケーション103を識別するための識別子を格納する。アプリケーションID401は、各アプリケーション103に割り当てられる。
回路ID402は、アプリケーション103が格納する回路情報を識別するための識別子を格納する。回路ID402は、OS106によって一意に決定される。
合成優先度403は、DRL108上に回路を合成する優先度を格納する。図2に示す例では、合成優先度403の値が大きいほど優先度が高いことを示す。
利用頻度404は、アプリケーション103がDRL108を利用した回数を格納する。回路が合成されると、利用頻度404は、インクリメントされる。
回路規模405は、合成される回路の回路規模を格納する。図2に示す例では、回路規模405は、合成される回路における単位回路の数が格納される。
合成開始位置406は、1次元構成のDRL108上で合成される回路の開始位置を示している。合成開始位置410は、2次元構成のDRL108上で合成される回路の開始位置を示している。合成開始位置411は、3次元構成のDRL108上で合成される回路の開始位置を示している。
なお、合成開始位置410及び合成開始位置411に格納される開始位置は、一つの端点を格納する方法、中心位置を格納する方法等が考えられる。DRL108が2次元構成の場合、開始位置は(x,y)と座標形式で指定され、DRL108が3次元構成の場合、開始位置は(x,y,z)と座標形式で指定される。ただし、開始位置の指定方法は、DRL108上に合成される回路の位置を一意に示すものであればどのような方法を用いてもよい。
状態407は、DRL108における回路の合成状態を示す情報を格納する。図2に示す例では、状態407には、「合成中」、「実行中」、及び「未実施」のいずれかが格納される。
「合成中」はDRL108上で回路が合成されている最中の状態を示し、「実行中」は回路の合成が完了し、アプリケーション103が利用している状態を示し、「未実施」は回路が合成されていない状態を示す。
専用デバイスドライバ408は、アプリケーション103固有の専用デバイスドライバ123を識別するための情報を格納する。図2に示す例では、専用デバイスドライバ408は、専用デバイスドライバ123を一意に識別する識別子を格納する。
アプリケーション状態409は、アプリケーション103がDRL108上に合成された回路を利用する処理の実行状態を示す情報を格納する。
図2に示す例では、アプリケーション状態409には、「使用中」及び「終了」のいずれかが格納される。「使用中」は、アプリケーション103が実行されている状態を示す。「終了」は、アプリケーション103の実行が終了した状態を示す。
なお、情報処理装置101が複数のDRL108を備える場合、OS106はDRL108ごとに回路構成管理表121を備える。
図3は、本発明の第1の実施形態の回路配置マップ124の一例を示す説明図である。
回路配置マップ124は、DRL108の構造に応じてキャッシュメモリ115に作成される。
回路配置マップ124−1は、1次元構造のDRL108における回路配置マップである。回路配置マップ124−2は、2次元構造のDRL108における回路配置マップである。回路配置マップ124−3は、3次元構造のDRL108における回路配置マップである。
回路配置マップ124(124−1〜124−3)は、DRL108上の単位回路ごとに基本管理情報601を格納する。基本管理情報601は、DRL108上の単位回路の状態を示す情報である。基本管理情報601の詳細は、図4を用いて後述する。
回路配置マップ124は、DRL108の回路状態を基本管理情報601によって管理する。
図4は、本発明の第1の実施形態の回路配置マップ124に格納される基本管理情報601の一例を示す説明図である。
基本管理情報601は、管理ID701、合成可能回路規模702、物理回路ID703、I/O ID704、状態705、及び合成開始位置706を含む。
管理ID701は、基本管理情報601のエントリを識別するための識別子を格納する。合成可能回路規模702は、DRL108に合成可能な最大回路規模を示す値を格納する。具体的には、合成可能な最大規模の回路における単位回路の数が格納される。
物理回路ID703は、DRL108上の単位回路に合成された回路を識別するための識別子を格納する。なお、単位回路にアプリケーション103によって利用される回路が合成されていない場合、物理回路ID703は、「−1」を格納する。なお、アプリケーション103によって利用される回路が単位回路に合成されている旨を示す値であれば、どのような値であってもよい。
I/O ID704は、単位回路がOS106と通信するときに使用されるI/O番号を格納する。I/O ID704は、DRL I/OMap変更機能118によって利用される。I/O ID704は、アクセス調停部111が専用デバイスドライバ123を読み出したときに、アクセス調停部111がアクセスする場所として格納される。
状態705は、DRL108における各単位回路の状態を示す情報を格納する。
合成開始位置706は、合成開始位置406、410、411と同一のものである。
図5は、本発明の第1の実施形態の情報処理装置101の起動処理を説明するフローチャートである。
まず、情報処理装置101に電源が投入され(ステップ801)、ハードウェア105が起動される(ステップ802)。
DRL108は、DRL108自身の初期化を実行する(ステップ803)。次に、OS106の起動処理が実行される(ステップ804)。
OS106は、優先度指定部122、DRL管理部116、及びアクセス調停部111を初期化する(ステップ805)。
DRL管理部116は、DRL108からDRL108の状態(例えば、DRL108が備える単位回路の構成及び数、I/Oの状態、等)を取得する(ステップ806)。
DRL管理部116は、情報処理装置101が備えるDRL108の状態に応じて回路配置マップ124を初期化する(ステップ807)。初期化の一例として、電源投入直後等に、DRL108の回路情報と回路配置マップ124の内容とが異なる時に初期化を実行するなど考えられる。
DRL管理部116は、回路構成管理表121を初期化する(ステップ808)。
以上の処理によって、OS106の起動が完了する(ステップ809)。
図6は、本発明の第1の実施形態におけるDRL108の回路合成処理を説明するフローチャートである。
OS106は、回路構成管理表121から、合成優先度403が最も高い回路情報を取得する(ステップ1001)。具体的には、DRL管理部116が、回路構成管理表121から、合成優先度403が最も高い回路情報を取得する。
OS106は、回路配置マップ124を参照し(ステップ1002)、取得された回路情報に示された回路を合成するための空き領域がDRL108上にあるか否かを判定する(ステップ1003)。
例えば、DRL管理部116は、回路配置マップ124を参照し、合成可能回路規模702を全て加算して利用されている回路領域の数を算出し、DRL108の合成可能な全領域の数から利用されている回路領域の数を減算することによって、空き領域の数を算出する。さらに、DRL管理部116は、合成可能回路規模702、合成開始位置706、及び算出された空き領域の数に基づいて、連続した空き領域を算出し、当該連続した空き領域が取得された回路情報に示された回路を合成するための空き領域以上であるか否かを判定する。
連続した空き領域が取得された回路情報に示された回路を合成するための空き領域以上である場合、DRL管理部116は、回路を合成するための空き領域がDRL上にあると判定する。
回路を合成するための空き領域がDRL108上にあると判定された場合、OS106は、回路構成管理表121の利用頻度404をインクリメントする(ステップ1007)。
次に、OS106は、回路配置マップ124を更新する(ステップ1008)。
OS106は、DRL108へ回路情報を転送し、当該回路情報に基づいて、回路を合成するよう指示し、処理を終了する(ステップ1009)。具体的には、DRL管理部116がDRL108へ回路情報を転送する。DRL108は、受信した回路情報に基づいて、回路を合成する。
ステップ1003において、回路を合成するための空き領域がDRL108上にないと判定された場合、OS106は、アプリケーション103の実行優先度がしきい値以上であるか否かを判定する(ステップ1004)。
しきい値は、予め設定された値であってもよいし、DRL108の空き領域に応じて動的に変更される値であってもよい。動的に値を変更する方法としては、DRL108上に空き領域が多く存在する場合、実行優先度の低いアプリケーション103でも再配置処理が実行できるようにしきい値を低くすることが考えられる。
ここで、再配置処理とは、DRL108上に合成されている回路の配置を変更する処理である。当該処理によって、DRL108上に合成されている回路が散在している場合に、散在している回路を再配置して集約し、所定の空き領域を作成することができる。通常、再配置処理中には、アプリケーション103は、DRL108へアクセスすることができない。
アプリケーション103の実行優先度がしきい値以上であると判定された場合、OS106は、ステップ1003の結果を参照して、空き領域の数が一定数以上あるか否かを判定する(ステップ1016)。つまり、取得された回路情報に示された回路を合成するのに必要となる単位回路の数がDRL108上にある否かを判定する。ステップ1016の判定によって、DRL108上に合成された回路が散在しているか否かを判定することができる。
これによって、DRL108上に、回路を合成するための空き領域がないが、当該回路を合成するのに必要な単位回路の数が十分存在する場合、再配置処理が実行されることによって、当該回路を合成するための空き領域を確保することが可能となる。
ステップ1016の条件を満たしていないと判定された場合、OS106は、ステップ1010に進む。
空き領域の数が一定数以上あると判定された場合、OS106は、再配置処理を実行する(ステップ1005)。なお、再配置処理の詳細については、図9を用いて後述する。
次に、OS106は、再配置処理の結果、ステップ1001で取得された回路情報に示された回路を合成するための空き領域がDRL108上にあるか否かを判定する(ステップ1006)。判定方法は、ステップ1003と同一である。
回路を合成するための空き領域がDRL108上にあると判定された場合、OS106は、ステップ1007に進む。
回路を合成するための空き領域がDRL108上にないと判定された場合、OS106は、ステップ1010に進む。
ステップ1004において、アプリケーション103の実行優先度がしきい値より小さいと判定された場合、OS106は、回路が合成できない旨を示すエラーをアプリケーション103に通知する(ステップ1010)。
OS106は、エラーが通知されたアプリケーション103がソフトウェア代替処理を実行できるか否かを判定する(ステップ1011)。
ソフトウェア代替処理とは、回路合成ができないアプリケーション103に、他のアプリケーション103が利用している回路を代替回路として利用させる処理である。なお、ソフトウェア代替処理をアプリケーション103が持つか否かの判定方法として、例えば、アプリケーション103の起動時に、API経由でOS106へ代替処理の有無を通知しておくなどが考えられる。
エラーが通知されたアプリケーション103がソフトウェア代替処理を実行できると判定された場合、OS106は、当該アプリケーション103をソフトウェア代替処理モードに切り替えて処理を終了する(ステップ1012)。
エラーが通知されたアプリケーション103がソフトウェア代替処理を実行できないと判定された場合、OS106は、エラーが通知されたアプリケーション103がDRL108を利用しない機能を継続して実行できるか否かを判定する(ステップ1013)。
エラーが通知されたアプリケーション103がDRL108を利用しない機能を継続して実行できると判定された場合、アプリケーション103はDRL108に回路合成を再度依頼し(ステップ1014)、当該依頼を受けたOS106はステップ1003に戻り同様の処理を実行する。なお、当該依頼を受信したOS106は、例えば、アプリケーション103の合成優先度403を高くする等の処理を実行する。
エラーが通知されたアプリケーション103がDRL108を利用しない機能を継続して実行できないと判定された場合、アプリケーション103は、エラー終了する(ステップ1015)。
図7は、本発明の第1の実施形態におけるアプリケーション103の起動処理を説明するフローチャートである。
OS106は、アプリケーション103を起動する(ステップ1101)。
アプリケーション103は、DRL利用機能104を備えているか否かを判定する(ステップ1102)。
DRL利用機能104を備えていないと判定された場合、アプリケーション103は、ステップ1108に進む。
DRL利用機能104を備えていると判定された場合、アプリケーション103は、回路情報一覧114と、各回路情報における回路合成の優先度とをOS106に送信する(ステップ1103)。
OS106は、合成優先度403を決定し、決定された合成優先度403とアプリケーション103の回路情報とを回路構成管理表121に登録する(ステップ1104)。合成優先度403は、優先度指定部122によって決定される。優先度指定部122が合成優先度403を決定する方法としては以下のような方法が考えられる。
優先度指定部122は、アプリケーション103の実行優先度が最も高いアプリケーション103を選択する。次に、優先度指定部122は、当該アプリケーション103に含まれる回路情報の回路合成の優先度が高いものから順に合成優先度403が高くするように決定する。さらに、優先度指定部122は、次に実行優先度が高いアプリケーション103を選択し、前述と同様の処理を実行する。
優先度指定部122は、DRL108上の空き領域がなくなるまで前述した処理を実行する。
つまり、アプリケーション103の実行優先度が高く、かつ、回路合成の優先度が高いものから順に、DRL108を割り当てる(DRL108上に回路を合成する)方法が考えられる。
これによって、優先的に実行されるアプリケーション103が利用する回路を優先的に合成することができる。
また、別の方法として、優先度指定部122は、実行優先度が最も高いアプリケーション103を選択し、当該アプリケーション103に含まれる回路情報のうち、回路合成の優先度が最も高い回路情報の合成優先度403を高くするように決定する。
さらに、優先度指定部122は、次に実行優先度が高いアプリケーション103を選択し、当該アプリケーション103に含まれる回路情報のうち、回路合成の優先度が最も高い回路情報の合成優先度403を2番目に高くするように決定する。
優先度指定部122は、次に実行優先度が高いアプリケーション103を選択し、前述した処理を実行する。
優先度指定部122は、全てのアプリケーション103の最も回路合成の優先度が高い回路情報の合成優先度403を決定した後、実行優先度が最も高いアプリケーション103に含まれ、2番目に回路合成の優先度が高い回路情報の合成優先度403を決定する。
優先度指定部122は、DRL108上の空き領域がなくなるまで前述した処理を実行する。
つまり、アプリケーション103の実行優先度が高い順に、回路合成の優先度が高い回路からランドロビンでDRL108を割り当てる(DRL108上に回路を合成する)方法が考えられる。
これによって、各アプリケーション103に均等に回路を割り当てることができる。
以上が優先度指定部122における合成優先度403の決定方法の一例である。
アプリケーション103は、当該アプリケーション103がDRL108にアクセスするために利用する専用デバイスドライバ123を備えているか否かを判定する(ステップ1105)。
アプリケーション103が専用デバイスドライバ123を備えていないと判定された場合、アプリケーション103は、ステップ1108に進む。
アプリケーション103が専用デバイスドライバ123を備えていると判定された場合、アプリケーション103は、専用デバイスドライバ123をOS106に転送する(ステップ1106)。
OS106は、転送された専用デバイスドライバ123をアクセス調停部111に登録し(ステップ1107)、アプリケーション103の起動処理を終了する(ステップ1108)。
なお、アプリケーション103が利用する専用デバイスドライバ123がアクセス調停部111にすでに登録されている場合、以下のような登録方法が考えられる。
OS106は、アクセス調停部111に登録されている専用デバイスドライバ123と、転送された専用デバイスドライバ123とのバージョンを比較し、転送された専用デバイスドライバ123のバージョンが新しい場合、当該転送された専用デバイスドライバ123を登録する方法が考えられる。
また、別の方法としては、OS106は、アクセス調停部111に登録されている専用デバイスドライバ123を、転送された専用デバイスドライバ123に置き換える方法が考えられる。
図8は、本発明の第1の実施形態のアプリケーション103がDRL108にアクセスするときの処理を説明するフローチャートである。
アプリケーション103は、DRL108にアクセスするため、OS106にアクセス要求を発行する(ステップ1201)。
OS106は、アクセス要求を受信し、DRL108の状態を取得する(ステップ1202)。具体的には、アクセス調停部111が、DRL管理部116からDRL状態を取得する。
OS106は、アクセス要求を発行したアプリケーション103が利用する専用デバイスドライバ123を利用できるか否かを判定する(ステップ1203)。具体的には、回路構成管理表121の専用デバイスドライバ408を参照し、専用デバイスドライバ408に専用デバイスドライバ123のIDが格納されている場合、OS106は、専用デバイスドライバ123を利用できると判定する。
専用デバイスドライバ123を利用できると判定された場合、OS106は、専用デバイスドライバ123が利用するDRL I/Oを利用できるか否かを判定する(ステップ1204)。判定方法として、例えば、専用デバイスドライバ123がDRL I/O MAPを参照して、利用すべきI/Oが存在するか否かを調べる方法が考えられる。
専用デバイスドライバ123が利用するDRL I/Oを利用できると判定された場合、OS106は、専用デバイスドライバ123にアクセス要求を転送する(ステップ1205)。
専用デバイスドライバ123は、アクセス要求を受信し、当該アクセス要求に基づいて、DRL108にアクセスし(ステップ1206)、アクセス処理が終了する。
ステップ1204において、専用デバイスドライバ123が利用するDRL I/Oを利用できないと判定された場合、OS106は、DRL108の再配置処理中であるか否かを判定する(ステップ1207)。
DRL108の再配置処理中であると判定された場合、OS106は、再配置処理を停止するようDRL108に要求を送信し(ステップ1209)、ステップ1204に戻り、同様の処理を実行する。前述したように再配置処理中、アプリケーション103は、DRL108へアクセスができないため、ステップ1209の処理が実行されることによって、DRL108へのアクセスを可能とする。
DRL108の再配置処理中でないと判定された場合、OS106は、アプリケーション103に現在アクセスが可能である旨を通知し(ステップ1208)、アクセス処理を終了する。なお、アクセス可能である旨の通知を受信したアプリケーション103は、専用デバイスドライバ123が存在する場合、当該専用デバイスドライバ123を経由してアクセスを開始する。アプリケーション103がアクセス不可である旨の通知を受信した場合は、再度アクセスを要求することも可能である。
ステップ1203において、専用デバイスドライバ123を利用できないと判定された場合、OS106は、汎用アクセス用DRL I/Oを利用できるか否かを判定する(ステップ1210)。当該判定方法として、例えば、アプリケーション103が、予めOS106に汎用アクセス用DRL I/Oが利用可能か否かを登録しておき、OS106が当該登録情報を用いて判定することが考えられる。
汎用アクセス用DRL I/Oを利用できると判定された場合、OS106は、DRL I/OMap変更機能118を用いて、DRL108上の該当する回路へアクセスし(ステップ1211)、アクセス処理を終了する。
汎用アクセス用DRL I/Oを利用できないと判定された場合、OS106は、DRL108の再配置処理中であるか否かを判定する(ステップ1212)。
DRL108の再配置処理中であると判定された場合、OS106は、再配置処理を停止するようDRL108に要求を送信し(ステップ1214)、ステップ1210に戻り、同様の処理を実行する。
DRL108の再配置処理中でないと判定された場合、OS106は、アプリケーション103に現在アクセスが可能である旨を通知し(ステップ1213)、アクセス処理を終了する。
図9は、本発明の第1の実施形態の回路再配置処理を説明するフローチャートである。
OS106は、回路構成管理表121を参照し、DRL108へのI/O要求の頻度が低い回路が存在するか否かを判定する(ステップ1301)。つまり、OS106は、アプリケーション103からのアクセス頻度が低い回路がDRL108上に存在するか否かを判定する。
具体的には、OS106は、利用頻度404に格納されている値が、しきい値以下であるか否かを判定する。なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。
DRL108へのI/O要求の頻度が低い回路が存在しないと判定された場合、OS106は、処理を終了する。
DRL108へのI/O要求の頻度が低い回路が存在すると判定された場合、OS106は、空き領域の情報を収集する(ステップ1302)。具体的には、DRL管理部116は、回路配置マップ124の状態705が「未使用」であるエントリを収集する。
OS106は、DRL108上に終了したアプリケーション103の回路が残っているか否かを判定する(ステップ1303)。具体的には、OS106は、回路構成管理表121を参照し、状態407が「実行中」で、かつ、アプリケーション状態409が「終了」となっているエントリが存在するか否かを判定する。前述の条件を満たすと判定された場合、OS106は、DRL108上に終了したアプリケーション103の回路が残っていると判定する。
DRL108上に終了したアプリケーション103の回路が残っていないと判定された場合、OS106は、ステップ1305に進む。
DRL108上に終了したアプリケーション103の回路が残っていると判定された場合、OS106は、回路配置マップ124の当該回路に対応する基本管理情報601の状態705を「未使用」に変更する(ステップ1304)。この処理によって、終了したアプリケーションの回路は、空き領域となる。つまり、当該回路が合成されていた領域が開放される。
OS106は、DRL108上に空き領域の数が一定数以上存在するか否かを判定する(ステップ1305)。具体的には、OS106は、状態705が「未使用」であるエントリの合成可能回路規模702から、空き領域の数を算出し、算出された空き領域の数が、しきい値以上であるか否かを判定する。
なお、しきい値は、予め設定された値であってもよいし、DRL108の空き領域に応じて動的に変更される値であってもよい。動的に値を変更する方法としては、DRL108を利用するアプリケーション103の数が増えた時にしきい値を低く設定することが考えられる。
空き領域の数が一定数以上存在しないと判定された場合、OS106は、処理を終了する。
空き領域の数が一定数以上存在すると判定された場合、OS106は、空き領域が連続しているか否かを判定する(ステップ1306)。つまり、OS106は、DRL108上に合成されている回路が散在しているか否かを判定する。具体的には、OS106は、合成可能回路規模702と合成開始位置706とから空き領域が連続しているかを判定する。
空き領域が連続していると判定された場合、OS106は、処理を終了する。
空き領域が連続していないと判定された場合、OS106は、再配置処理を実行し、回路配置マップ124を更新する(ステップ1307)。
なお、ステップ1307における再配置処理の一例としては、管理ID701が小さい空き領域から順に単位回路を配置する方法、又は、利用頻度404の高い回路の配置は維持し、他の回路の配置を変更する方法等が考えられる。
OS106は、アプリケーション103からDRL108上に合成された回路へのアクセスが変化しているか否かを判定する(ステップ1308)。
具体的には、OS106は、DRI I/OMap(図示省略)を参照し、DRI I/OMapが変化しているか否かを判定する。DRI I/OMapが変化していると判定された場合、OS106は、アプリケーション103からDRL108上に合成された回路へのアクセスが変化していると判定する。
アプリケーション103からDRL108上に合成された回路へのアクセスが変化していないと判定された場合、OS106は、処理を終了する。
アプリケーション103からDRL108上に合成された回路へのアクセスが変化していると判定された場合、OS106は、DRL I/OMap変更機能118を用いて、専用デバイスドライバ123のアクセス先のI/Oアドレスを更新し(ステップ1309)、処理を終了する。 以上の処理によって、DRL108上に散在する回路を集約し、所定の大きさの空き領域を作成し、当該空き領域に新たな回路を合成することができる。したがって、DRL108を有効に利用することができる。
図10は、本発明の第1の実施形態における、DRL108上の空き領域に合成キャッシュ127又は合成メモリ126を合成する処理を説明するフローチャートである。
OS106は、DRL108上に合成された回路を利用しないアプリケーション103の数がしきい値以上であるか否かを判定する(ステップ1401)。
例えば、OS106は、回路構成管理表121に登録されていないアプリケーション103の数をカウントすることによって、DRL108を利用しないアプリケーション103の数を把握できる。
なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。
DRL108上に合成された回路を利用しないアプリケーション103の数がしきい値以上でないと判定された場合、OS106は、処理を終了する。
DRL108上に合成された回路を利用しないアプリケーション103の数がしきい値以上であると判定された場合、OS106は、DRL108の利用率が低いか否かを判定する(ステップ1402)。
具体的には、OS106は、DRL108上の利用されている単位回路の数を、DRL上の全単位回路の数で除算してDRL108の利用率を算出し、算出されたDRL108の利用率がしきい値以下であるか否かを判定する。
なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。動的に値を変更する方法としては、DRL108を利用しないアプリケーション103の数が多い場合、しきい値を高くすることが考えられる。これによって、DRL108の利用率が高い場合であっても、合成キャッシュ127又は合成メモリ126を合成することができるため、アプリケーション103の実行効率を向上することができる。
DRL108の利用率が低くないと判定された場合、OS106は、処理を終了する。
DRL108の利用率が低いと判定された場合、OS106は、DRL108上に空き領域の数が一定数以上存在するか否かを判定する(ステップ1403)。具体的には、OS106は、状態705が「未使用」であるエントリの合成可能回路規模702から、空き領域の数を算出し、算出された空き領域の数が、しきい値以上であるか否かを判定する。
なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。動的に値を変更する方法としては、DRL108を利用しないアプリケーションの数が多い場合、しきい値を低くすることが考えられる。これによって、DRL108の空き領域が少ない場合であっても、合成キャッシュ127又は合成メモリ126を合成することができるため、アプリケーション103の実行効率を向上することができる。
DRL108上に空き領域が一定数以上存在しないと判定された場合、OS106は、処理を終了する。
DRL108上に空き領域の数が一定数以上存在すると判定された場合、OS106は、CPU109の負荷が高いか否かを判定する(ステップ1404)。なお、CPU109の負荷は、OS106によって取得された値が用いられる。この場合、CPU109の負荷がしきい値以上の場合、OS106は、CPU109の負荷が高いと判定する。なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。
CPU109の負荷が高いと判定された場合、OS106は、DRL108上に合成キャッシュ127を合成し(ステップ1405)、処理を終了する。
なお、合成キャッシュ127を用いる方法としては、DRL108が合成キャッシュ127を合成した旨を、キャッシュメモリ115が備えるキャッシュメモリ制御部(図示省略)に通知し、当該キャッシュメモリ制御部(図示省略)が合成キャッシュ127をキャッシュメモリ115の一部として登録する方法が考えられる。
CPU109の負荷が高くないと判定された場合、OS106は、メインメモリ107の利用率が高いか否かを判定する(ステップ1406)。なお。メインメモリ107の利用率は、OS106によって取得された値が用いられる。この場合、メインメモリ107の利用率がしきい値以上の場合、OS106は、メインメモリ107の利用率が高いと判定する。なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。
メインメモリ107の利用率が高いかと判定された場合、OS106は、DRL108上に合成メモリ126を合成し(ステップ1407)、処理を終了する。
なお、合成メモリ126を用いる方法としては、DRL108が合成キャッシュ127を合成した旨を、メインメモリ制御部(図示省略)に通知し、当該メインメモリ制御部(図示省略)が合成メモリ126をメインメモリ107のアドレスと連続したアドレスになるように登録する方法が考えられる。
メインメモリ107の利用率が高くないと判定された場合、OS106は、処理を終了する。
本発明の第1の実施形態によれば、DRL108上に合成された回路が散在しても、適切に再配置処理が実行できるので大規模回路を合成できる。
また、処理が終了しているアプリケーション103が利用する回路を開放することによって、動的にDRL108の空き領域を増やすことができる。
また、DRL108上に合成キャッシュ127及び合成メモリ126が作成されることによって、DRL108を利用しないアプリケーションもDRL108を活用できる。
[第2の実施形態]
本発明の第2の実施形態は、情報処理装置101が仮想化環境を搭載する点が異なる。以下、第1の実施形態との差異を中心に第2の実施形態について説明する。
図11は、本発明の第2の実施形態の情報処理装置101を説明するブロック図である。
情報処理装置101は、ソフトウェア102とハードウェア105とから構成される。
ハードウェア105は、CPU109、キャッシュメモリ115、動的再構成回路(DRL)108、メインメモリ107、及び周辺回路110を備える。なお、CPU109、キャッシュメモリ115、動的再構成回路(DRL)108、メインメモリ107、及び周辺回路110の構成は第1の実施形態と同一であるため説明を省略する。
ソフトウェア102は、ハイパバイザ202、ゲストOS204、及び複数のアプリケーション103を含む。
アプリケーション103の構成は、第1の実施形態と同一であるため説明を省略する。
ゲストOS204は、ハイパバイザ202上で起動されるOSであり、例えば、Linux(登録商標)、Windows(登録商標)等である。ゲストOS204は、DRL制御I/F210を備える。DRL制御I/F210は、ハイパバイザ202上の仮想DRL208へアクセスするためのインタフェースである。
ハイパバイザ202は、複数のゲストOS204に仮想的なハードウェア環境を提供するソフトウェアである。ハイパバイザ202は、ハイパバイザDRL管理部203、ハイパバイザアクセス調停部205、DRL I/F206、ゲストOS別割り当て管理表207、仮想DRL208、優先度指定部211、及び回路構成管理表212を備える。また、ハイパバイザ202は、各ゲストOS204の実行優先度を格納する。
ハイパバイザDRL管理部203は、DRL管理部116と同一の構成に加え、さらに、DRL割当機能209を備える。なお、ハイパバイザDRL管理部203は、各ゲストOS204の回路配置マップ124を備える。
DRL割当機能209は、各ゲストOS204にDRL108の領域を割り当てる。つまり、DRL割当機能209は、DRL108の領域を論理的に分割した仮想DRL208を各ゲストOS204に割り当てる。
ゲストOS204へのDRL108の領域の割り当て方法としては、例えば、DRL割当機能209は、実行優先度が高いゲストOS204を選択し、当該ゲストOS204が備える回路構成管理表121の合成優先度403が最も高い回路情報にDRL108の領域を割り当てる。
DRL割当機能209は、次に実行優先度が高いゲストOS204を選択し、前述した処理を実行する。DRL割当機能209は、DRL108上の空き領域がなくなるまで前述した処理を実行する。
つまり、ゲストOS204の実行優先度が高い順に、最も合成優先度403が高い回路からランドロビンでDRL108を割り当てる方法が考えられる。
また、DRL108上の領域の割り当て方法としては、DRL108上の割り当て開始位置と割り当て終了位置とを指定する方法、又は、割り当てる単位回路を指定する方法等が考えられる。
ハイパバイザアクセス調停部205は、複数のゲストOS204からのアクセスを調停する。
DRL I/F206は、ゲストOS204に対して、仮想的なDRLアクセス用のI/Fを提供する。ゲストOS204は、DRL I/F206をハードウェアとして認識する。また、ゲストOS204は、DRL I/F206を介して、ハイパバイザDRL管理部203が提供する仮想DRL208にアクセスする。この場合、仮想DRL208は、ゲストOS204から通常のDRL108としてアクセスされる。
ゲストOS別割り当て管理表207は、ゲストOS204の実行優先度を管理する。なお、ゲストOS別割り当て管理表207の詳細は、図12を用いて後述する。
仮想DRL208は、DRL割当機能209によって各ゲストOS204に割り当てられたDRL108の領域であり、DRL108を論理的に分割して作成される。ゲストOS204は、仮想DRL208を通常のDRL108として認識する。
優先度指定部211は、合成優先度403を決定し、回路構成管理表121に格納する。優先度指定部211は、ゲストOS204の実行順を示す実行優先度503(図12参照)を決定し、決定された実行優先度503(図12参照)をゲストOS別割り当て管理表207に登録する。
実行優先度503(図12参照)の決定方法としては、例えば、実行しているアプリケーション103の数が多いゲストOS204の実行優先度503(図12参照)を高くする方法が考えられる。
回路構成管理表212は、各ゲストOS204の回路構成管理表121を格納する。
図12は、本発明の第2の実施形態のゲストOS別割り当て管理表207の一例を示す説明図である。
ゲストOS別割り当て管理表207は、ゲストOS ID501、DRL割り当て領域502、実行優先度503、利用頻度504、及び利用率507を含む。
ゲストOS ID501は、ゲストOS204を一意に識別するための識別子を格納する。なお、ゲストOS ID501は、ハイパバイザ202によって割り当てられる。
DRL割り当て領域502は、ゲストOS204に割り当てられたDRL108の領域を示す情報を格納する。具体的には、開始位置505と終了位置506とが格納される。開始位置505は、ゲストOS204に割り当てられた領域の開始位置を示すDRL108上の位置情報を格納する。終了位置506は、ゲストOS204に割り当てられた領域の終了位置を示すDRL108上の位置情報を格納する。
DRL割り当て領域502は、1次元構成のDRL108上での場合を示している。DRL割り当て領域508は、2次元構成のDRL108上での場合を示している。DRL割り当て領域509は、3次元構成のDRL108上での場合を示している。
なお、単位回路を指定して、DRL108上の領域が割り当てられる場合、DRL割り当て領域502は、割り当てられる単位回路を識別するための識別子を格納する。
実行優先度503は、ゲストOS204の実行優先度を格納する。図12に示す例では、実行優先度503の値が大きいほど、ゲストOS204の実行優先度は高い。
利用頻度504は、ゲストOS204がDRL108を利用した回数を格納する。回路が合成されると、利用頻度504は、インクリメントされる。
利用率507は、ゲストOS204に割り当てられたDRL108上の領域(仮想DRL208)の利用率を格納する。具体的には、ハイパバイザ202が、仮想DRL208上に合成されている回路が使用している単位回路の総数を、仮想DRL208として割り当てられたDRL108の領域における単位回路の総数で除算することによって算出する。
図13は、本発明の第2の実施形態の情報処理装置101の起動処理を説明するフローチャートである。
まず、情報処理装置101に電源が投入され(ステップ901)、ハードウェア105が起動される(ステップ902)。
DRL108は、DRL108自身の初期化を実行する(ステップ903)。次に、ハイパバイザ202の起動処理が実行される(ステップ904)。
ハイパバイザ202は、優先度指定部211、ハイパバイザDRL管理部203、及びハイパバイザアクセス調停部205を初期化する(ステップ905)。
ハイパバイザDRL管理部203は、DRL108からDRL108の状態(例えば、DRL108が備える単位回路の構成及び数、I/Oの状態、等)を取得する(ステップ906)。
ハイパバイザ202は、起動予定のゲストOS204の数に応じてゲストOS別割り当て管理表207を作成し、ハイパバイザDRL管理部203は、ゲストOS別割り当て管理表207に基づいて、ゲストOS204へ初期DRL割り当て処理を実行する(ステップ907)。
以上の処理によって、ハイパバイザ202の起動が完了する(ステップ908)。
次に、ハイパバイザ202は、ゲストOS204を起動し、処理を終了する(ステップ909)。
第2の実施形態におけるDRL108の回路合成処理は、以下の点が第1の実施形態と異なる。
すなわち、当該処理は、ゲストOS204が仮想DRL208を対象とした処理であり、実際のDRL108の回路合成は、ハイパバイザ202によって実行される。
具体的には、ステップ1009において、ゲストOS204は、仮想DRL208に回路情報を送信する。
仮想DRL208を提供するハイパバイザ202は、ゲストOS204から回路情報を受信し、受信した回路情報及び回路構成管理表212に含まれる当該ゲストOS204の回路構成管理表121に基づいて、DRL108上に回路を合成する。仮想DRL208上への回路合成は、第1の実施形態と同様に合成優先度403に基づいて、実行される。
第2の実施形態におけるアプリケーション103の起動処理は、第1の実施形態と同一であるため(図7参照)、説明を省略する。
第2の実施形態におけるアプリケーション103が仮想DRL208にアクセスするときの処理は、以下の点が第1の実施形態と異なる。
すなわち、ステップ1201において、アプリケーション103はゲストOS204にアクセス要求を発行する。ステップ1202、及び1203の処理は、ハイパバイザアクセス調停部205によって実行される。また、ステップ1204、ステップ1207〜ステップ1213の処理は、ハイパバイザ202によって実行される。
第2の実施形態の回路再配置処理は、ハイパバイザ202が処理を実行する点が第1の実施形態と異なるが、処理内容は第1の実施形態と同一であるため(図9参照)、説明を省略する。なお、当該処理は、I/O要求の頻度が低い回路が存在するか否か判定することを処理の契機としていたが、ハイパバイザDRL管理部203が周期的に仮想DRL208上の空き領域を監視し、仮想DRL208の空き領域が不足した場合に処理を開始するものであってもよい。
仮想DRL208上の空き領域を監視方法としては、例えば、利用率507がしきい値以上の場合、空き領域が不足していると判定する方法が考えられる。
これによって、仮想DRL208の状況に応じて、柔軟にDRL108の割り当てを変更することができる。
第2の実施形態における、DRL108上の空き領域に合成キャッシュ127又は合成メモリ126を合成する処理は、以下の点が第1の実施形態と異なる。
すなわち、ステップ1401〜ステップ1406の処理は、ハイパバイザ202によって実行される。また、ステップ1401における判定は、利用率507が用いられる。具体的には、ハイパバイザ202は、利用率507がしきい値以下であるか否かを判定する。なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。
また、ハイパバイザ202は、以下の処理も実行する。
ハイパバイザ202は、利用率507を周期的に監視し、利用率507がしきい値以上の場合、DRL割当機能209を用いて、当該ゲストOS204へのDRL108の割り当てを増加させる。
また、当該処理は、各ゲストOS204の利用頻度504の総和を周期的に算出し、当該総和がしきい値以上の場合、DRL108の割り当てを増加させるものであってもよい。
なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。
これによって、利用率(利用頻度)に基づいて、ゲストOS204へのDRL108の割り当てを動的に制御することができる。
本発明の第2の実施形態によれば、仮想化環境を搭載した情報処理装置101においても、DRL108上に散在した回路を適切に再配置し、大規模回路を合成できる。
また、DRL108上に合成キャッシュ127及び合成メモリ126が作成されることによって、DRL108を利用しないアプリケーションもDRL108を活用することができる。
[第3の実施形態]
本発明の第3の実施形態は、仮想化環境を搭載する情報処理装置101と、DRL108への割当を管理する管理装置302(図14参照)を備えるシステム構成である点が異なる。以下、第1の実施形態との差異を中心に第3の実施形態について説明する。
図14は、本発明の第3の実施形態の情報処理装置管理システムを説明するブロック図である。
情報処理装置管理システムは、管理装置302、ストレージシステム308、及び複数の情報処理装置101を備え、ネットワーク301を介して互いに接続されている。
ネットワーク301は、機器を接続するネットワークであり、例えば、LAN等である。
情報処理装置101は、第2の実施形態と比較して、ハイパバイザDRL管理部203がDRL割当機能209を備えていない点が異なる。他の構成については、第2の実施形態と同一であるため説明を省略する。
DRL割当機能209が行う処理は、情報処理装置101への負荷が大きいため、オーバーヘッドが発生する。そのため、第3の実施形態では、DRL108を各ゲストOS204に割り当てる処理を管理装置302が実行する。これによって、情報処理装置101の負荷を低減する。
管理装置302は、DRL制御システムを搭載した情報処理装置101を管理する情報処理装置である。管理装置302は、DRL管理アプリケーション303、OS306、及びハードウェア307を備える。
OS306、及びハードウェア307は、第1の実施形態と同一であるため説明を省略する。
DRL管理アプリケーション303は、DRL制御システムを搭載した情報処理装置101を管理するためのアプリケーションである。DRL管理アプリケーション303は、各情報処理装置101からCPU109の負荷、メインメモリ107の負荷、アプリケーション103の実行状況、DRL108の割り当て状況を収集し、収集された情報に基づいて、ハイパバイザアクセス調停部205、及びハイパバイザDRL管理部203を制御する。
例えば、管理装置302は、DRL108の利用率が非常に高く、DRL108上に合成できない回路が多数ある情報処理装置101を検出し、DRL108の利用率が低い情報処理装置101へ、アプリケーション103、又はゲストOS204を移動させる制御方法が考えられる。
なお、DRL管理アプリケーション303は、収集された情報を格納するテーブル等を備えていてもよい。
DRL管理アプリケーション303は、割当情報管理304及び情報処理装置制御機能305を備える。
割当情報管理304は、各情報処理装置101におけるDRL108の割り当て状況を管理する。情報処理装置制御機能305は、予め設定されたスケジュールと情報処理装置101における負荷とに応じて、各情報処理装置101におけるDRL108の割り当てを制御する機能を提供する。
例えば、動画配信システムが構築されている場合、夜間は利用者数が少ないため、情報処理装置101を利用する台数を削減することがある。情報処理装置制御機能305によって、情報処理装置101上のアプリケーション103への処理要求が低くなった場合、DRL108を利用するアプリケーション103を特定の情報処理装置101へ集約し、他の情報処理装置101を停止する等の方法が考えられる。
ストレージシステム308は、情報処理装置101が利用するアプリケーション103の実行ファイルを格納する記憶装置である。図14に示す例では、ストレージシステム308は、ディスクアレイやRAIDシステムが構築され、複数のアプリケーション実行ファイル309を格納する。
アプリケーション実行ファイル309は、情報処理装置101が読み出し、実行されるアプリケーション103の実行ファイルである。なお、アプリケーション実行ファイル309は、回路情報も含まれる。
第3の実施形態におけるDRL108の回路合成処理、アプリケーション103の起動処理、アプリケーション103が仮想DRL208にアクセスするときの処理、回路再配置処理、及びDRL108上の空き領域に合成キャッシュ127又は合成メモリ126を合成する処理は、ゲストOS204にDRL108の割り当て処理を管理装置302が行う点以外は、第2の実施形態と同一であるため説明を省略する。
図15は、本発明の第3の実施形態の管理装置302が、アプリケーション103を情報処理装置101間で移動させる処理を説明するフローチャートである。
管理装置302は、管理している全ての情報処理装置101に関する情報を取得する(ステップ1501)。なお、管理装置302は、周期的に情報を取得してもよいし、外部からの要求に基づいて情報を取得してもよい。
管理装置302は、合成待ちの回路数がしきい値以上である情報処理装置101が存在するか否かを判定する(ステップ1502)。以下、合成待ちの回路数がしきい値以上である情報処理装置101を情報処理装置A101とも記載する。
ステップ1502の判定は、例えば、ゲストOS204が備える回路構成管理表121の状態407が「未実施」であるエントリの数を、情報処理装置A101における全てのゲストOS204について加算し、その数がしきい値以上か否かを判定する方法が考えられる。
なお、しきい値は、予め設定された値であってもよいし、情報処理装置A101の処理負荷に応じて動的に変更される値であってもよい。この場合、情報処理装置A101の処理負荷高い場合、しきい値を低くし、情報処理装置A101の処理負荷が低い場合、しきい値を高く設定する方法が考えられる。
合成待ちの回路数がしきい値以上である情報処理装置A101が存在しないと判定された場合、管理装置302は、処理を終了する。
合成待ちの回路数がしきい値以上である情報処理装置101が存在すると判定された場合、管理装置302は、DRL108の利用率がしきい値以下である情報処理装置101が存在するか否かを判定する(ステップ1503)。以下、DRL108の利用率がしきい値以下である情報処理装置101を情報処理装置B101とも記載する。
ステップ1503の判定方法としては、管理装置302は、DRL108上の利用されている単位回路の数と、DRL上の全単位回路数とを用いてDRL108の利用率を算出し、算出されたDRL108の利用率がしきい値以下であるか否かを判定する。
なお、しきい値は、予め設定された値であってもよいし、情報処理装置A101の処理負荷に応じて動的に変更される値であってもよい。この場合、情報処理装置A101の処理負荷高い場合、しきい値を低くし、情報処理装置A101の処理負荷が低い場合、しきい値を高く設定する方法が考えられる。
なお、DRL108の利用率がしきい値以下である情報処理装置B101が複数存在する場合、CPU109の利用率、メインメモリ107の利用率、DRL108の利用率、及び前記情報処理装置101上で実行されているアプリケーション103の数の少なくともいずれかを用い、いずれかの値が最も小さいものを情報処理装置B101とする。
DRL108の利用率がしきい値以下である情報処理装置B101が存在しないと判定された場合、管理装置302は、ステップ1505に進む。
DRL108の利用率がしきい値以下である情報処理装置B101が存在すると判定された場合、管理装置302は、情報処理装置A101及び情報処理装置B101に、アプリケーション103を移動させる旨を通知する(ステップ1504)。
情報処理装置A101は、管理装置302から前述の通知を受信し、移動可能なアプリケーション103を選択し、選択されたアプリケーション103(以下、移動対象アプリケーション103とも記載する。)を情報処理装置B101に通知する(ステップ1505)。
情報処理装置B101は、通知された移動対象アプリケーション103の回路情報をストレージシステム308から読み出し、読み出された回路情報に基づいて、情報処理装置B101のDRL108上に回路を合成する(ステップ1506)。
情報処理装置A101は、アプリケーション103本体と、当該アプリケーション103の実行状態(アプリケーション103の実行中に生成されたデータ)とを情報処理装置B101に転送する(ステップ1507)。なお、ステップ1507の処理は、情報処理装置A101が情報処理装置B101から回路合成が終了した旨の通知を受信した後に実行する方法が考えられる。
情報処理装置B101は、転送されたアプリケーション103本体と、当該アプリケーション103の実行状態(アプリケーション103の実行中に生成されたデータ)とに基づいて、アプリケーション103を実行し(ステップ1508)、処理を終了する。
本処理では、合成待ちの回路数がしきい値以上であるか否かを処理の契機としていたが、本発明はこれに限定されず、DRL108の利用率がしきい値以下である情報処理装置B101が複数存在する場合、CPU109の利用率、メインメモリ107の利用率、DRL108の利用率、合成待ちの回路数、及び前記情報処理装置101上で実行されているアプリケーション103の数の少なくとも一以上の情報が用いられればよい。
本発明の第3の実施形態によれば、複数の情報処理装置101間でDRL108を有効に活用することができる。また、情報処理装置101の負荷を分散することができる。