(57)【要約】【課題】動的再構成回路を搭載した機器において、合成した回路が散在すると、空きがあっても大規模回路を合成することができない。【解決手段】複数の計算機を備える計算機システムであって、アプリケーションは、回路情報と専用デバイス情報とを格納し、オペレーティングシステムは、複数のアプリケーションにおける回路合成の優先度である合成優先度を決定する優先度指定部と、回路情報と合成優先度とを格納する回路構成管理表と、アクセス調停部と、管理部と、を備え、管理部は、動的再構成回路上に合成された回路へのアクセスを管理するＩ／Ｏアクセス管理部と、動的構成回路の状況を管理する回路配置マップと、動的再構成回路に回路を動的に合成する回路合成部と、再配置処理を実行する回路再配置部と、を含み、動的再構成回路は、動的再構成回路の構成を制御する制御部を備えることを特徴とする。【選択図】図１
2010250411.tif 000002
【特許請求の範囲】
【請求項１】
複数の計算機を備える計算機システムであって、
前記計算機は、
第１のプロセッサと、第１のプロセッサと接続される第１のキャッシュメモリと、第１のプロセッサと接続される第１のメモリと、複数の単位回路を備え、前記一以上の単位回路を用いて動的に回路を合成する第１の動的再構成回路と、第１の周辺回路とを備え、
前記第１のメモリは、一以上のアプリケーション及び一以上のオペレーティングシステムを格納し、
前記一以上のアプリケーション及び前記一以上のオペレーティングシステムは、前記第１のプロセッサによって実行され、
前記アプリケーションは、
前記アプリケーションによって使用される回路を合成するための情報、及び回路を合成する優先度である回路合成優先度を含む回路情報と、前記動的再構成回路に合成された回路にアクセスするための専用デバイスドライバを含む専用デバイス情報と、を格納し、
前記オペレーティングシステムは、
前記各アプリケーションの実行優先度を管理し、
前記アプリケーションから送信された前記回路情報、及び前記アプリケーションの実行優先度に基づいて、前記複数のアプリケーションにおける回路合成の優先度である合成優先度を決定する優先度指定部と、
前記回路情報と前記合成優先度とを格納する回路構成管理表と、
前記一以上のアプリケーションから前記動的再構成回路へのアクセスを調整するアクセス調停部と、
前記動的再構成回路を管理する管理部と、を備え、
前記管理部は、
前記動的再構成回路上に合成された回路へのアクセスを管理するＩ／Ｏアクセス管理部と、
前記動的構成回路の状況を管理する回路配置マップと、
前記回路情報と前記合成優先度とに基づいて、前記動的再構成回路に回路を動的に合成する回路合成部と、
前記動的再構成回路の状況に基づいて、前記動的再構成回路上に合成された回路の配置を変更する再配置処理を実行する回路再配置部と、を含み、
前記動的再構成回路は、前記動的再構成回路の構成を制御する制御部を備えることを特徴とする計算機システム。
【請求項２】
前記優先度指定部は、
前記回路情報に含まれる、前記アプリケーションの実行優先度が最も高い前記アプリケーションの回路情報を選択し、
前記選択された回路情報の前記回路合成優先度が高いものから順に前記合成優先度を高くするように決定し、
前記アプリケーションの実行優先度が次に高い前記アプリケーションの回路情報を選択し、
前記選択された回路情報の前記回路合成優先度が高いものから順に前記合成優先度を高くするように決定し、
前記回路合成部は、前記合成優先度が高い回路情報の回路から順に、前記動的再構成回路上に回路を合成し、
前記管理部は、前記回路配置マップを更新することを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記優先度指定部は、
前記回路情報に含まれる前記アプリケーションの実行優先度が最も高い前記アプリケーションの回路情報を選択し、
前記選択された回路情報のうち前記回路合成優先度が最も高い回路情報の前記合成優先度が最も高くなるように決定し、
前記アプリケーションの実行優先度が次に高いアプリケーションの回路情報を選択し、
前記選択された回路情報のうち前記回路合成優先度が最も高い回路情報の前記合成優先度が次に高くなるように決定し、
前記回路合成部は、前記合成優先度が高い回路情報の回路から順に、前記動的再構成回路上に回路を合成し、
前記管理部は、前記回路配置マップを更新することを特徴とする請求項１に記載の計算機システム。
【請求項４】
前記回路配置マップは、前記動的再構成回路に合成されている回路の規模及び前記動的再構成回路上の配置を格納し、
前記管理部は、
前記動的再構成回路上の回路が合成されていない領域である、空き領域を監視し、
前記空き領域が所定のしきい値以上ある場合、前記動的再構成回路に合成されている回路の規模及び前記動的再構成回路上の配置に基づいて、前記空き領域が連続した空き領域であるか否かを判定し、
前記空き領域が連続した空き領域でないと判定された場合、前記前記空き領域が連続した空き領域になるように、前記再配置処理を実行し、
前記回路配置マップを更新し、
前記配置が変更された回路にアクセスするためのアドレスを更新することを特徴とする請求項１に記載の計算機システム。
【請求項５】
前記回路構成管理表は、前記アプリケーションの実行状態を格納し、
前記管理部は、
前記空き領域が所定のしきい値以上あるか否かの判定する前に、前記アプリケーションから前記動的再構成回路上に合成された回路へのアクセス頻度を監視し、
前記アクセス頻度が所定のしきい値より低い場合、前記動的再構成回路上の合成された回路を利用する前記アプリケーションの実行状態が、処理を終了している状態であるか否かを判定し、
前記動的再構成回路上の合成された回路を利用するアプリケーションの実行状態が、処理を終了している状態であると判定された場合、当該回路を開放し、
前記開放された領域を前記空き領域に加え、
前記回路配置マップを更新することを特徴とする請求項４に記載の計算機システム。
【請求項６】
前記動的再構成回路は、前記第１のプロセッサと接続され、
前記管理部は、
前記動的再構成回路の利用率を監視し、
前記動的再構成回路上に合成された回路を利用しないアプリケーションの数が所定数以上あるか否かを判定し、
前記動的再構成回路上に合成された回路を利用しないアプリケーションの数が前記所定数以上あると判定された場合、前記動的再構成回路の利用率がしきい値以下であるか否かを判定し、
前記動的再構成回路の利用率がしきい値以下であると判定された場合、前記動的再構成回路上の空き領域がしきい値以上あるか否かを判定し、
前記動的再構成回路上の空き領域がしきい値以上あると判定された場合、前記第１のプロセッサの負荷が高いか否かを判定し、
前記第１のプロセッサの負荷が高いと判定された場合、前記動的再構成回路上に前記第１のプロセッサが使用する合成キュッシュメモリを合成することを特徴とする請求項１に記載の計算機システム。
【請求項７】
前記動的再構成回路は、前記合成キュッシュメモリを合成した旨を前記キャッシュメモリに通知し、
前記キャッシュメモリは、前記合成キュッシュメモリを前記キュッシュメモリの一部として登録することを特徴とする請求項６に記載の計算機システム。
【請求項８】
前記第１のプロセッサの負荷が高くないと判定された場合、前記管理部は、前記第１のメモリの利用率が高いか否かを判定し、
前記第１のメモリの利用率が高いと判定された場合、前記動的再構成回路上に前記第１のメモリの一部として利用することができる領域を合成することを特徴とする請求項６に記載の計算機システム。
【請求項９】
前記アクセス調停部は、一以上の前記専用デバイスドライバを格納し、
前記アプリケーションは、前記回路情報とともに、前記専用デバイスドライバ情報を前記オペレーティングシステムに送信し、
前記アクセス調停部は、前記アプリケーションから送信された専用デバイスドライバが、前記格納されている専用デバイスドライバと同一である場合、
（１）前記アプリケーションから送信された専用デバイスドライバに置き換える、
（２）前記アプリケーションから送信された専用デバイスドライバ及び前記格納されている専用デバイスドライバのバージョンを比較し、前記アプリケーションから送信された専用デバイスドライバのバージョンが前記格納されている専用デバイスドライバのバージョンより新しい場合、前記アプリケーションから送信された専用デバイスドライバに置き換える、
のいずれかを実行することを特徴とする請求項１に記載の計算機システム。
【請求項１０】
前記オペレーティングシステムは、ホストオペレーティングシステム及びゲストオペレーティングシステムを含み、
前記ホストオペレーティングシステムは、
前記ゲストオペレーティングシステムに関する情報を管理し、
前記ゲストオペレーティングシステムに関する情報に基づいて、前記複数のゲストオペレーティングシステムへの、前記動的再構成回路を論理的に分割された領域である仮想動的再構成回路の割り当て優先度であるゲストオペレーティングシステム実行優先度、及び前記合成優先度を決定するハイパバイザ優先度指定部と、
前記各ゲストオペレーティングシステムの前記回路情報と前記合成優先度とを格納する回路構成管理表と、
前記ゲストオペレーティングシステムへの前記仮想動的再生回路の領域の割り当てを管理するゲストオペレーティングシステム別割り当て管理表と、
前記一以上のゲストオペレーティングシステムから前記動的再構成回路へのアクセスを調整するハイパバイザアクセス調停部と、
前記動的再構成回路と前記仮想動的再構成回路とを管理するハイパバイザ管理部と、を備え、
前記ゲストオペレーティングシステム別割り当て管理表は、前記ゲストオペレーティングシステム実行優先度と、前記仮想動的再生回路として割り当てられた前記動的再構成回路上の領域の位置とを格納し、
前記ハイパバイザ管理部は、
前記仮想動的再構成回路上に合成された回路へのアクセスを管理するＩ／Ｏアクセス管理部と、
前記各ゲストオペレーティングシステムにおける前記仮想動的構成回路の状況を管理する回路配置マップと、
前記回路情報と前記合成優先度とに基づいて、前記仮想動的再構成回路に回路を動的に合成する回路合成部と、
前記仮想動的再構成回路の状況に基づいて、前記仮想動的再構成回路上に合成された回路の配置を変更する再配置処理を実行する回路再配置部と、
前記仮想動的再構成回路への前記動的再構成回路の領域の割り当てを制御する動的再構成回路割り当て部と、を含み、
前記ゲストオペレーティングシステムは、前記仮想動的再生回路へアクセスするための動的再構成回路制御インタフェースを備えることを特徴とする請求項１に記載の計算機システム。
【請求項１１】
前記ゲストオペレーティングシステム別割り当て管理表は、前記仮想動的再構成回路の利用率を格納し、
前記ハイパバイザ管理部は、
前記仮想動的再構成回路の利用率がしきい値以上であるか否かを判定し、
前記仮想動的再構成回路の利用率がしきい値以上であると判定された場合、前記仮想動的再生回路の容量が増加するように、前記動的再構成回路の領域の割り当てを変更し、
前記ゲストオペレーティングシステム別割り当て管理表を更新することを特徴とする請求項１０に記載の計算機システム。
【請求項１２】
前記計算機システムは、さらに、前記計算機を管理する管理計算機を備え、
前記管理計算機は、
第２のプロセッサと、第２のプロセッサと接続される第２のメモリと、を備え、
前記第２のメモリは、オペレーティングシステム、及び前記各計算機上の前記動的再構成回路を制御する動的再構成回路管理アプリケーションを格納し、
前記動的再構成回路管理アプリケーション及び前記オペレーティングシステムは、前記第２のプロセッサによって実行され、
前記動的再構成回路管理アプリケーションは、前記各計算機における前記動的再構成回路の割り当てを管理する総合管理部を備え、
前記総合管理部は、
前記各計算機における前記動的再構成回路の状況を管理する割り当て情報管理部と、
前記各計算機における前記仮想動的再構成回路の割り当てのスケジューリング及び制御を実行する計算機制御部と、を備え、
前記計算機における回路合成負荷を監視し、
前記計算機における回路合成負荷がしきい値以上の場合、回路合成負荷が小さい前記計算機を検索し、
回路合成負荷が大きい前記計算機及び前記検索された計算機に、前記回路合成負荷が大きい計算機上で実行されている前記アプリケーションを移動させる旨を通知し、
前記検索された計算機は、
前記回路合成負荷が大きい計算機上で実行されている前記アプリケーションを移動するための情報を取得し、
前記検索された計算機の前記動的再構成回路に、前記移動されるアプリケーションが利用する回路を合成し、
前記回路合成負荷が大きい計算機は、前記検索された計算機に、前記移動されるアプリケーションを転送し、
前記検索された計算機は、前記転送されたアプリケーションを実行することを特徴とする請求項１０に記載の計算機システム。
【請求項１３】
前記回路合成負荷の監視は、前記計算機の前記第１のプロセッサの利用率、前記計算機の前記第１のメモリの利用率、前記計算機の前記動的再構成回路の利用率、前記計算機における前記動的再構成回路上に合成されていない回路の数、及び前記計算機上で実行されているアプリケーションの数、の少なくとも一以上を用いることを特徴とする請求項１２に記載の計算機システム。
【請求項１４】
複数の単位回路を備え、前記一以上の単位回路を用いて動的に回路を合成する第１の動的再構成回路を備える計算機における動的再構成回路上に合成された回路の管理方法であって、
前記計算機は、第１のプロセッサと、第１のプロセッサと接続される第１のキャッシュメモリと、第１のプロセッサと接続される第１のメモリと、第１の周辺回路とを備え、
前記第１のメモリは、一以上のアプリケーション及び一以上のオペレーティングシステムを格納し、
前記一以上のアプリケーション及び前記一以上のオペレーティングシステムは、前記第１のプロセッサによって実行され、
前記アプリケーションは、
前記アプリケーションによって使用される回路を合成するための情報、及び回路を合成する優先度である回路合成優先度を含む回路情報と、前記動的再構成回路に合成された回路にアクセスするための専用デバイスドライバを含む専用デバイス情報と、を格納し、
前記オペレーティングシステムは、
前記各アプリケーションの実行優先度を管理し、
前記複数のアプリケーションにおける回路合成の優先度である合成優先度を決定する優先度指定部と、
前記回路情報と前記合成優先度とを格納する回路構成管理表と、
前記一以上のアプリケーションから前記動的再構成回路へのアクセスを調整するアクセス調停部と、
前記動的再構成回路を管理する管理部と、を備え、
前記管理部は、
前記動的再構成回路上に合成された回路へのアクセスを管理するＩ／Ｏアクセス管理部と、
前記動的構成回路の状況を管理する回路配置マップと、
前記動的再構成回路に回路を動的に合成する回路合成部と、
前記動的再構成回路の状況に基づいて、前記動的再構成回路上に合成された回路の配置を変更する再配置処理を実行する回路再配置部と、を含み、
前記動的再構成回路は、前記動的再構成回路の構成を管理する管理部を備え、
前記管理部は、
前記動的再構成回路上に合成された回路へのアクセスを管理するＩ／Ｏアクセス管理部と、
前記動的構成回路の状況を管理する回路配置マップと、
前記回路情報と前記合成優先度とに基づいて、前記動的再構成回路に回路を動的に合成する回路合成部と、
前記動的再構成回路の状況に基づいて、前記動的再構成回路上に合成された回路の配置を変更する再配置処理を実行する回路再配置部と、を含み、
前記方法は、
前記オペレーティングシステムが、前記アプリケーションから前記回路情報を取得するステップと、
前記オペレーティングシステムが、前記取得された前記回路情報、及び前記アプリケーションの実行優先度に基づいて、前記合成優先度を決定し、前記回路情報と、前記決定された合成優先度と前記回路構成管理表に格納するステップと、
前記オペレーティングシステムが、前記合成優先度の高い回路情報の回路から順に、前記動的再構成回路に回路を合成するステップと、を含むことを特徴とする管理方法。
【請求項１５】
回路配置マップは、前記動的再構成回路に合成されている回路の規模及び前記動的再構成回路上の配置を格納し、
前記方法は、
前記オペレーティングシステムが、前記動的再構成回路上の回路が合成されていない領域である、空き領域を監視するステップと、
前記空き領域が所定のしきい値以上ある場合、前記動的再構成回路に合成されている回路の規模及び前記動的再構成回路上の配置に基づいて、前記空き領域が連続した空き領域であるか否かを判定するステップと、
前記空き領域が連続した空き領域でないと判定された場合、前記前記空き領域が連続した空き領域になるように、前記再配置処理を実行するステップと、
前記回路配置マップを更新するステップと、
前記配置が変更された回路にアクセスするためのアドレスを更新するステップと、を含むことを特徴とする請求項１４に記載の管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的再構成回路を搭載した、携帯電話、カーナビ、組込み機器、ＰＣ、及びサーバ機器等の装置、並びに、動的再構成回路を搭載した装置を用いたシステムに関する。
【背景技術】
【０００２】
近年、組み込み機器、ＰＣ、及びサーバ機等における製品サイクルと機能変化とが速く、専用ＬＳＩ開発では、期間とコストとの両面で対応が困難な状況になりつつある。こうした中、システム起動時に回路構成を変更できるＦＰＧＡ（Ｆｉｌｅｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）の低価格化、及び小電力化によって、前述した機器へ採用される機会が増えている。
【０００３】
さらに、専用回路搭載面積とコストとを削減するため、システム実行中に動的に回路を構成する動的再構成回路（ＤＲＬ：Ｄｙｎａｍｉｃ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｌｏｇｉｃ）と呼ばれる技術も、コピー機等膨大な画像処理、及びデータ処理が必要な機器で採用が進んでいる。
【０００４】
一方で高性能化するハードウェアのリソースの有効活用と、多様化するハードウェアへ、ＯＳを含めたソフトウェアを極力変更せず搭載することとを目的とした、サーバから組み込みに至るまで、ハードウェア仮想化が進展している。しかし、現状、ハードウェアを仮想化する機能を提供するハイパバイザは、処理負荷が高く、仮想化が使用されていない時と比較して数十パーセントの性能低下を招くと言われている。
【０００５】
一方で、プロセッサの動作周波数向上が、製造コストの面から困難になりつつあり、マルチコアの採用、及び定型処理のハードアクセラ化が活発化しているが、前述した理由によって専用ハードウェアの開発はコスト、及び開発期間の面で困難なため、ＦＰＧＡ、及び動的再構成回路（ＤＲＬ）の採用が将来的に活発化すると考えられる。
【０００６】
動的再構成回路（ＤＲＬ）を用いたシステムに関する技術として、プログラム中で処理が連続する複数のＨＷＭの組み合わせを検出し、動的再構成回路（ＤＲＬ）上に構成可能な場合、組み合わせ対象ＨＷＭを結合して一つの新ＨＷＭを作成して動的再構成回路（ＤＲＬ）上に再構築する方法(例えば、特許文献１参照)や、複数のスレッドを巡回実行するプロセッサと動的再構成回路（ＤＲＬ）とを搭載システムで、あるスレッド実行中に、次に実行されるスレッド向け回路を動的再構成回路（ＤＲＬ）の空き領域に構成するシステム(例えば、特許文献２参照)等が存在する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−２３２０７９号公報
【特許文献２】国際公開第０６／１０９８３５号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、前述した従来技術では、動的再構成回路（ＤＲＬ）上に構成された回路が散在すると、空き領域があっても大規模回路を構成することができない。
【０００９】
さらに、前述した従来技術では、動的再構成回路（ＤＲＬ）上に構成された専用回路を利用しないアプリケーションが動的再構成回路（ＤＲＬ）を活用することができない。
【００１０】
本発明は前述した問題点を鑑みて成されたものである。
【課題を解決するための手段】
【００１１】
本発明の代表的な一例を示せば、以下の通りである。複数の計算機を備える計算機システムであって、前記計算機は、第１のプロセッサと、第１のプロセッサと接続される第１のキャッシュメモリと、第１のプロセッサと接続される第１のメモリと、複数の単位回路を備え、前記一以上の単位回路を用いて動的に回路を合成する第１の動的再構成回路と、第１の周辺回路とを備え、前記第１のメモリは、一以上のアプリケーション及び一以上のオペレーティングシステムを格納し、前記一以上のアプリケーション及び前記一以上のオペレーティングシステムは、前記第１のプロセッサによって実行され、前記アプリケーションは、前記アプリケーションによって使用される回路を合成するための情報、及び回路を合成する優先度である回路合成優先度を含む回路情報と、前記動的再構成回路に合成された回路にアクセスするための専用デバイスドライバを含む専用デバイス情報と、を格納し、前記オペレーティングシステムは、前記各アプリケーションの実行優先度を管理し、前記アプリケーションから送信された前記回路情報、及び前記アプリケーションの実行優先度に基づいて、前記複数のアプリケーションにおける回路合成の優先度である合成優先度を決定する優先度指定部と、前記回路情報と前記合成優先度とを格納する回路構成管理表と、前記一以上のアプリケーションから前記動的再構成回路へのアクセスを調整するアクセス調停部と、前記動的再構成回路を管理する管理部と、を備え、前記管理部は、前記動的再構成回路上に合成された回路へのアクセスを管理するＩ／Ｏアクセス管理部と、前記動的構成回路の状況を管理する回路配置マップと、前記回路情報と前記合成優先度とに基づいて、前記動的再構成回路に回路を動的に合成する回路合成部と、前記動的再構成回路の状況に基づいて、前記動的再構成回路上に合成された回路の配置を変更する再配置処理を実行する回路再配置部と、を含み、前記動的再構成回路は、前記動的再構成回路の構成を制御する制御部を備えることを特徴とする。
【発明の効果】
【００１２】
本発明の一形態によれば、動的再構成回路上に合成された回路が散在した場合、再配置処理を実行することによって動的再構成回路上に連続した空き領域を確保できる。このため、動的再構成回路の利用率が高い状態でも、規模の大きな回路を合成できる。
【００１３】
動的再構成回路をキャッシュメモリ又はメモリの一部として構成することで、動的再構成回路上に合成された回路を利用しないアプリケーションも動的再構成回路を利用することが可能となる。
【００１４】
さらに、仮想化環境において、複数のゲストオペレーティングシステムに対して効率的に単一の動的再構成回路を割り当てることが可能となる。
【図面の簡単な説明】
【００１５】
【図１】図１は、本発明の第１の実施形態のＤＲＬを搭載した情報処理装置の一例を説明するブロック図である。
【図２】本発明の第１の実施形態の回路構成管理表の一例を示す説明図である。
【図３】本発明の第１の実施形態の回路配置マップの一例を示す説明図である。
【図４】本発明の第１の実施形態の回路配置マップに格納される基本管理情報の一例を示す説明図である。
【図５】本発明の第１の実施形態の情報処理装置の起動処理を説明するフローチャートである。
【図６】本発明の第１の実施形態におけるＤＲＬの回路合成処理を説明するフローチャートである。
【図７】本発明の第１の実施形態におけるアプリケーションの起動処理を説明するフローチャートである。
【図８】本発明の第１の実施形態のアプリケーションがＤＲＬにアクセスするときの処理を説明するフローチャートである。
【図９】本発明の第１の実施形態の回路再配置処理を説明するフローチャートである。
【図１０】本発明の第１の実施形態における、ＤＲＬ上の空き領域に合成キャッシュ又は合成メモリを合成する処理を説明するフローチャートである。
【図１１】本発明の第２の実施形態の情報処理装置を説明するブロック図である。
【図１２】本発明の第２の実施形態のゲストＯＳ別割り当て管理表の一例を示す説明図である。
【図１３】本発明の第２の実施形態の情報処理装置の起動処理を説明するフローチャートである。
【図１４】本発明の第３の実施形態の情報処理装置管理システムを説明するブロック図である。
【図１５】本発明の第３の実施形態の管理装置が、アプリケーションを情報処理装置間で移動させる処理を説明するフローチャートである。
【発明を実施するための形態】
【００１６】
［第１の実施形態］
図１は、本発明の第１の実施形態のＤＲＬを備える情報処理装置の一例を説明するブロック図である。
【００１７】
情報処理装置１０１は、ソフトウェア１０２とハードウェア１０５とから構成される。
【００１８】
ハードウェア１０５は、ＣＰＵ１０９、キャッシュメモリ１１５、動的再構成回路（ＤＲＬ）１０８、メインメモリ１０７、及び周辺回路１１０を備える。
【００１９】
ＣＰＵ１０９は、プログラムを実行する中央処理装置である。
【００２０】
メインメモリ１０７は、プログラム、及びデータを格納し、例えば、ＤＲＡＭ、又はＭＲＡＭ等から構成される。なお、メインメモリ１０７は、揮発性のメインメモリ、又は不揮発のメモリのどちらであってもよい。ＣＰＵ１０９がメインメモリ１０７に格納されるプログラムを実行することによって、後述するソフトウェア１０２が実現される。
【００２１】
周辺回路１１０は、ネットワーク通信、及び映像表示等の周辺機能を実現する回路である。
【００２２】
動的再構成回路（ＤＲＬ）１０８は、複数の単位回路を備え、処理の実行中に、一部の回路情報を更新し、新たに回路を合成できる。単位回路は、例えば、ＦＰＧＡ等のように、ＳＲＡＭと、ＳＲＡＭに格納される記憶内容に応じて入力データを変換して出力する機能とを備えた小規模な回路、又は、小型のプロセッサが考えられる。以下、動的再構成回路（ＤＲＬ）１０８をＤＲＬ１０８とも記載する。
【００２３】
ＤＲＬ１０８は、さらに、構成制御部１１２及びＩ／Ｏ  Ｍａｐ変換機能１２８を備える。
【００２４】
構成制御部１１２は、ＤＲＬ管理部１１６と連携して各回路単位に回路を合成する。Ｉ／Ｏ  Ｍａｐ変換機能１２８は、ＤＲＬ１０８上に合成された回路にアクセスするための機能である。なお、Ｉ／Ｏ  Ｍａｐ変換機能１２８は、後述するＤＲＬ  Ｉ／ＯＭａｐ変更機能１１８と同一の機能を備える。
【００２５】
構成制御部１１２は、Ｉ／Ｏ  Ｍａｐ変換機能１２８と連携して、ソフトウェア１０２から合成された回路へのアクセスを可能とする。
【００２６】
なお、ハードウェア１０５は、複数のＤＲＬ１０８を備えていてもよい。この場合、ハードウェア１０５が備える複数のＤＲＬ１０８は、同一のものでもよいし、異なるものであってもよい。
【００２７】
本実施形態では、ＤＲＬ１０８は、ＣＰＵ１０９及びキャッシュメモリ１１５と接続される。
【００２８】
前述の構成によって、ＤＲＬ１０８の回路の一部を合成キャッシュ１２７として合成し、ＣＰＵ１０９から高速にアクセスすることができる。例えば、既存のキャッシュメモリ１１５のメモリアドレスと連続したメモリアドレスになるように合成キャッシュ１２７が合成されることによって、ＣＰＵ１０９から一のキャッシュメモリとして見せることができる。
【００２９】
また、ＤＲＬ１０８に作成された合成メモリ１２６をメインメモリ１０７の一部として利用することも可能である。例えば、既存のメインメモリ１０７のメモリアドレスと連続したメモリアドレスになるように合成メモリ１２６が合成されることによって、ＣＰＵ１０９から一のメインメモリとして見せることができる。
【００３０】
ソフトウェア１０２は、ＯＳ１０６、及び複数のアプリケーション１０３を含む。
【００３１】
アプリケーション１０３は、プログラムの実行単位であり、ＤＲＬ利用機能１０４と一以上のプロセス１１３とを備える。アプリケーション１０３は、例えば、動画プレイヤー、ウェブブラウザ、又はワープロ等が考えられる。なお、各アプリケーション１０３には、アプリケーション１０３の実行優先度が設定されており、実行優先度の高いアプリケーション１０３から順に実行される。当該アプリケーション１０３の実行優先度は、ＯＳ１０６によって管理される。
【００３２】
プロセス１１３は、一連のまとまった処理の実行単位である。ＤＲＬ利用機能１０４は、アプリケーション１０３がＤＲＬ１０８を利用するための機能であり、回路合成優先度指定機能１１７、回路情報一覧１１４及び専用デバイスドライバ情報１１９を含む。
【００３３】
回路情報一覧１１４は、アプリケーション１０３が利用する回路をＤＲＬ１０８上に合成するための情報を格納する。回路情報一覧１１４は、一つ以上の回路情報を格納する。また、回路情報には、回路合成の優先度が含まれる。なお、当該優先度は、回路合成優先度指定機能１１７によって決定される。
【００３４】
回路情報一覧１１４に格納されている回路情報は、アプリケーション１０３が回路を必要となった時に、ＯＳ１０６へ送信される。回路情報の送信方法は、例えば、ＯＳ１０６の負荷が低い時に送信する等の方法が考えられる。なお、ＯＳ１０６が専用デバイスドライバ１２３を必要とする場合、回路情報とともに専用デバイスドライバ情報１１９も送信される。
【００３５】
回路合成優先度指定機能１１７は、アプリケーション１０３が必要とする回路を合成する優先度、つまり、回路合成の優先度をＯＳ１０６に通知する。例えば、ソフトウェア１０２で代替処理が不可能な場合、回路合成優先度指定機能１１７は当該ソフトウェア１０２が必要とする回路の回路合成の優先度を高くするよう通知し、また、代替処理が可能な場合、回路合成優先度指定機能１１７は当該ソフトウェア１０２が必要とする回路の回路合成の優先度を低くするように通知する、等が考えられる。
【００３６】
また、回路情報一覧１１４に複数の回路情報が格納される場合、回路合成優先度指定機能１１７は、それぞれ回路情報に回路合成の優先度を指定する。例えば、アプリケーション１０３がＷｅｂブラウザの場合、処理負荷が高い描画系が利用する回路の合成優先度を高くする等が考えられる。
【００３７】
専用デバイスドライバ情報１１９は、アプリケーション１０３がＤＲＬ１０８上に合成された回路を利用するために必要となる専用デバイスドライバである。アプリケーション１０３は、専用デバイスドライバを用いることで、ＤＲＬ１０８上に合成された回路にアクセスできる。
【００３８】
専用デバイスドライバ情報１１９は、回路情報が送信されるタイミングでＯＳ１０６に送信する方法、また、アプリケーション１０３が回路を初めて利用するときにＯＳ１０６へ送信する方法等が考えられる。
【００３９】
アプリケーション１０３が専用デバイスドライバ情報１１９を備えることによって、ＯＳ１０６が任意のアプリケーション１０３の専用デバイスドライバ１２３を備えていなくてもよい。
【００４０】
ＯＳ１０６は、基本的な機能を提供し、例えば、Ｌｉｎｕｘ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）等である。本実施形態におけるＯＳ１０６は、さらに、ＤＲＬ  ＡＰＩ１２０、優先度指定部１２２、回路構成管理表１２１、アクセス調停部１１１、及びＤＲＬ管理部１１６を備える。
【００４１】
ＤＲＬ  ＡＰＩ１２０は、ＤＲＬ１０８上に回路を合成するため、アプリケーション１０３がＯＳ１０６にアクセスするＡＰＩである。ＤＲＬ  ＡＰＩ１２０は、ＯＳ１０６によって提供され、回路合成の優先度の指定、回路情報の送信、専用デバイスドライバの送信、ＤＲＬ１０８上での回路合成状況の確認、及びＤＲＬ１０８上で回路合成ができない場合におけるアプリケーション１０３へのエラーの通知、等のインタフェースを備える。
【００４２】
なお、アプリケーション１０３に通知されるエラーとして、例えば、ＤＲＬ１０８上にどれだけの空き領域が足りないのか、一定時間後にＤＲＬ１０８上に空き領域ができる可能性があるか等が考えられる。また、アプリケーション１０３は、エラーが発生しても動作可能か等の情報をＯＳ１０６へ送信し、ＯＳ１０６に処理を依頼する等の方法も考えられる。
【００４３】
アプリケーション１０３は、ＤＲＬＡＰＩ１２０を介して、専用デバイスドライバ１２３にアクセスする。なお、アプリケーション１０３は、直接、専用デバイスドライバ１２３にアクセスしてもよい。
【００４４】
優先度指定部１２２は、ＯＳ１０６の状態、ＤＲＬ１０８の状態、及び各アプリケーション１０３から送信される情報に基づいて、ＯＳ１０６が管理する回路情報の合成優先度４０３（図２参照）を決定し、回路構成管理表１２１に決定された合成優先度４０３（図２参照）を格納する。
【００４５】
各アプリケーション１０３から送信される情報は、例えば、各アプリケーション１０３が利用する回路の回路合成の優先度、アプリケーション１０３のタイプ（例えば、ユーザインタフェース用、通信等のサーバ機能、等）、プロセス１１３の実行優先度、及びプロセス１１３の実行頻度などが考えられる。また、ＯＳ１０６の状態は、例えば、ＣＰＵ１０９の負荷の高さ、メインメモリ１０７の使用量又は使用率などが考えられる。また、ＤＲＬ１０８の状態は、例えば、ＤＲＬ１０８の空き容量、ＤＲＬ１０８のＩ／Ｏ負荷などが考えられる。
【００４６】
回路構成管理表１２１は、アプリケーション１０３におけるＤＲＬ１０８の利用状況を管理するための情報を格納する。具体的には、回路構成管理表１２１は、ＯＳ１０６が管理する回路情報とアプリケーション１０３との関係、及び合成優先度４０３（図２参照）を格納する。合成優先度４０３（図２参照）は、優先度指定部１２２によって指定された値が格納される。回路構成管理表１２１に基づいて、ＤＲＬ１０８上に順次、回路が合成される。なお、回路構成管理表１２１の詳細は、図２を用いて後述する。
【００４７】
アクセス調停部１１１は、ＤＲＬ管理部１１６と連携し、アプリケーション１０３からＤＲＬ１０８、及びＯＳ１０６からＤＲＬ１０８へのアクセスタイミングの競合を調整する。また、アクセス調停部１１１は、アプリケーション１０３固有のアクセス手段を提供する、複数の専用デバイスドライバ１２３を格納する。なお、専用デバイスドライバ１２３は、アプリケーション１０３がＤＲＬ１０８へアクセスするときに、必要に応じて利用される。
【００４８】
ＤＲＬ管理部１１６は、ＤＲＬ１０８上に回路を合成、又はＤＲＬ１０８上に合成された回路の配置を変更する。例えば、ＤＲＬ管理部１１６は、合成優先度４０３（図２参照）に基づいて、回路を合成する。また、ＤＲＬ管理部１１６は、ＤＲＬ１０８上に合成された回路が散在している場合、空き領域が連続するように当該回路を再配置する。処理の詳細については、図７〜図１０を用いて後述する。
【００４９】
ＤＲＬ管理部１１６は、ＤＲＬ  Ｉ／ＯＭａｐ変更機能１１８、及び回路配置マップ１２４を備える。
【００５０】
ＤＲＬ  Ｉ／ＯＭａｐ変更機能１１８は、ＤＲＬ１０８上の回路の合成位置が変化した場合、ソフトウェア１０２が同一のＩ／Ｏアドレスを用いてＤＲＬ１０８上の回路にアクセスできるように、ソフトウェア１０２とハードウェア１０５との間のＩ／Ｏアドレスを変更する機能を提供する。
【００５１】
なお、ＤＲＬ  Ｉ／ＯＭａｐ変更機能１１８は、ＤＲＬ１０８が備えていてもよい。この場合、ＤＲＬ  Ｉ／ＯＭａｐ変更機能１１８は、ＤＲＬ１０８上の単位回路で実現してもよい。
【００５２】
回路配置マップ１２４は、ＤＲＬ１０８上に合成されている回路に関する情報を格納する。つまり、回路配置マップ１２４は、ＤＲＬ１０８の物理的な状態に関する情報を格納する。なお、回路配置マップ１２４の詳細は、図３及び図４を用いて後述する。
【００５３】
図２は、本発明の第１の実施形態の回路構成管理表１２１の一例を示す説明図である。
【００５４】
図２に示す例では、ＤＲＬ１０８が１次元、２次元、及び３次元構造の場合の例を示している。
【００５５】
回路構成管理表１２１は、アプリケーションＩＤ４０１、回路ＩＤ４０２、合成優先度４０３、利用頻度４０４、回路規模４０５、合成開始位置４０６、状態４０７、専用デバイスドライバ４０８、及びアプリケーション状態４０９を含む。
【００５６】
また、ＤＲＬ１０８が２次元構造の場合、回路構成管理表１２１は合成開始位置４０６の代わりに合成開始位置４１０を含み、ＤＲＬ１０８が３次元構造の場合、回路構成管理表１２１は合成開始位置４０６の代わりに合成開始位置４１１を含む。
【００５７】
アプリケーションＩＤ４０１は、アプリケーション１０３を識別するための識別子を格納する。アプリケーションＩＤ４０１は、各アプリケーション１０３に割り当てられる。
【００５８】
回路ＩＤ４０２は、アプリケーション１０３が格納する回路情報を識別するための識別子を格納する。回路ＩＤ４０２は、ＯＳ１０６によって一意に決定される。
【００５９】
合成優先度４０３は、ＤＲＬ１０８上に回路を合成する優先度を格納する。図２に示す例では、合成優先度４０３の値が大きいほど優先度が高いことを示す。
【００６０】
利用頻度４０４は、アプリケーション１０３がＤＲＬ１０８を利用した回数を格納する。回路が合成されると、利用頻度４０４は、インクリメントされる。
【００６１】
回路規模４０５は、合成される回路の回路規模を格納する。図２に示す例では、回路規模４０５は、合成される回路における単位回路の数が格納される。
【００６２】
合成開始位置４０６は、１次元構成のＤＲＬ１０８上で合成される回路の開始位置を示している。合成開始位置４１０は、２次元構成のＤＲＬ１０８上で合成される回路の開始位置を示している。合成開始位置４１１は、３次元構成のＤＲＬ１０８上で合成される回路の開始位置を示している。
【００６３】
なお、合成開始位置４１０及び合成開始位置４１１に格納される開始位置は、一つの端点を格納する方法、中心位置を格納する方法等が考えられる。ＤＲＬ１０８が２次元構成の場合、開始位置は（ｘ，ｙ）と座標形式で指定され、ＤＲＬ１０８が３次元構成の場合、開始位置は（ｘ，ｙ，ｚ）と座標形式で指定される。ただし、開始位置の指定方法は、ＤＲＬ１０８上に合成される回路の位置を一意に示すものであればどのような方法を用いてもよい。
【００６４】
状態４０７は、ＤＲＬ１０８における回路の合成状態を示す情報を格納する。図２に示す例では、状態４０７には、「合成中」、「実行中」、及び「未実施」のいずれかが格納される。
【００６５】
「合成中」はＤＲＬ１０８上で回路が合成されている最中の状態を示し、「実行中」は回路の合成が完了し、アプリケーション１０３が利用している状態を示し、「未実施」は回路が合成されていない状態を示す。
【００６６】
専用デバイスドライバ４０８は、アプリケーション１０３固有の専用デバイスドライバ１２３を識別するための情報を格納する。図２に示す例では、専用デバイスドライバ４０８は、専用デバイスドライバ１２３を一意に識別する識別子を格納する。
【００６７】
アプリケーション状態４０９は、アプリケーション１０３がＤＲＬ１０８上に合成された回路を利用する処理の実行状態を示す情報を格納する。
【００６８】
図２に示す例では、アプリケーション状態４０９には、「使用中」及び「終了」のいずれかが格納される。「使用中」は、アプリケーション１０３が実行されている状態を示す。「終了」は、アプリケーション１０３の実行が終了した状態を示す。
【００６９】
なお、情報処理装置１０１が複数のＤＲＬ１０８を備える場合、ＯＳ１０６はＤＲＬ１０８ごとに回路構成管理表１２１を備える。
【００７０】
図３は、本発明の第１の実施形態の回路配置マップ１２４の一例を示す説明図である。
【００７１】
回路配置マップ１２４は、ＤＲＬ１０８の構造に応じてキャッシュメモリ１１５に作成される。
【００７２】
回路配置マップ１２４−１は、１次元構造のＤＲＬ１０８における回路配置マップである。回路配置マップ１２４−２は、２次元構造のＤＲＬ１０８における回路配置マップである。回路配置マップ１２４−３は、３次元構造のＤＲＬ１０８における回路配置マップである。
【００７３】
回路配置マップ１２４（１２４−１〜１２４−３）は、ＤＲＬ１０８上の単位回路ごとに基本管理情報６０１を格納する。基本管理情報６０１は、ＤＲＬ１０８上の単位回路の状態を示す情報である。基本管理情報６０１の詳細は、図４を用いて後述する。
【００７４】
回路配置マップ１２４は、ＤＲＬ１０８の回路状態を基本管理情報６０１によって管理する。
【００７５】
図４は、本発明の第１の実施形態の回路配置マップ１２４に格納される基本管理情報６０１の一例を示す説明図である。
【００７６】
基本管理情報６０１は、管理ＩＤ７０１、合成可能回路規模７０２、物理回路ＩＤ７０３、Ｉ／Ｏ  ＩＤ７０４、状態７０５、及び合成開始位置７０６を含む。
【００７７】
管理ＩＤ７０１は、基本管理情報６０１のエントリを識別するための識別子を格納する。合成可能回路規模７０２は、ＤＲＬ１０８に合成可能な最大回路規模を示す値を格納する。具体的には、合成可能な最大規模の回路における単位回路の数が格納される。
【００７８】
物理回路ＩＤ７０３は、ＤＲＬ１０８上の単位回路に合成された回路を識別するための識別子を格納する。なお、単位回路にアプリケーション１０３によって利用される回路が合成されていない場合、物理回路ＩＤ７０３は、「−１」を格納する。なお、アプリケーション１０３によって利用される回路が単位回路に合成されている旨を示す値であれば、どのような値であってもよい。
【００７９】
Ｉ／Ｏ  ＩＤ７０４は、単位回路がＯＳ１０６と通信するときに使用されるＩ／Ｏ番号を格納する。Ｉ／Ｏ  ＩＤ７０４は、ＤＲＬ  Ｉ／ＯＭａｐ変更機能１１８によって利用される。Ｉ／Ｏ  ＩＤ７０４は、アクセス調停部１１１が専用デバイスドライバ１２３を読み出したときに、アクセス調停部１１１がアクセスする場所として格納される。
【００８０】
状態７０５は、ＤＲＬ１０８における各単位回路の状態を示す情報を格納する。
【００８１】
合成開始位置７０６は、合成開始位置４０６、４１０、４１１と同一のものである。
【００８２】
図５は、本発明の第１の実施形態の情報処理装置１０１の起動処理を説明するフローチャートである。
【００８３】
まず、情報処理装置１０１に電源が投入され（ステップ８０１）、ハードウェア１０５が起動される（ステップ８０２）。
【００８４】
ＤＲＬ１０８は、ＤＲＬ１０８自身の初期化を実行する（ステップ８０３）。次に、ＯＳ１０６の起動処理が実行される（ステップ８０４）。
【００８５】
ＯＳ１０６は、優先度指定部１２２、ＤＲＬ管理部１１６、及びアクセス調停部１１１を初期化する（ステップ８０５）。
【００８６】
ＤＲＬ管理部１１６は、ＤＲＬ１０８からＤＲＬ１０８の状態（例えば、ＤＲＬ１０８が備える単位回路の構成及び数、Ｉ／Ｏの状態、等）を取得する（ステップ８０６）。
【００８７】
ＤＲＬ管理部１１６は、情報処理装置１０１が備えるＤＲＬ１０８の状態に応じて回路配置マップ１２４を初期化する（ステップ８０７）。初期化の一例として、電源投入直後等に、ＤＲＬ１０８の回路情報と回路配置マップ１２４の内容とが異なる時に初期化を実行するなど考えられる。
【００８８】
ＤＲＬ管理部１１６は、回路構成管理表１２１を初期化する（ステップ８０８）。
【００８９】
以上の処理によって、ＯＳ１０６の起動が完了する（ステップ８０９）。
【００９０】
図６は、本発明の第１の実施形態におけるＤＲＬ１０８の回路合成処理を説明するフローチャートである。
【００９１】
ＯＳ１０６は、回路構成管理表１２１から、合成優先度４０３が最も高い回路情報を取得する（ステップ１００１）。具体的には、ＤＲＬ管理部１１６が、回路構成管理表１２１から、合成優先度４０３が最も高い回路情報を取得する。
【００９２】
ＯＳ１０６は、回路配置マップ１２４を参照し（ステップ１００２）、取得された回路情報に示された回路を合成するための空き領域がＤＲＬ１０８上にあるか否かを判定する（ステップ１００３）。
【００９３】
例えば、ＤＲＬ管理部１１６は、回路配置マップ１２４を参照し、合成可能回路規模７０２を全て加算して利用されている回路領域の数を算出し、ＤＲＬ１０８の合成可能な全領域の数から利用されている回路領域の数を減算することによって、空き領域の数を算出する。さらに、ＤＲＬ管理部１１６は、合成可能回路規模７０２、合成開始位置７０６、及び算出された空き領域の数に基づいて、連続した空き領域を算出し、当該連続した空き領域が取得された回路情報に示された回路を合成するための空き領域以上であるか否かを判定する。
【００９４】
連続した空き領域が取得された回路情報に示された回路を合成するための空き領域以上である場合、ＤＲＬ管理部１１６は、回路を合成するための空き領域がＤＲＬ上にあると判定する。
【００９５】
回路を合成するための空き領域がＤＲＬ１０８上にあると判定された場合、ＯＳ１０６は、回路構成管理表１２１の利用頻度４０４をインクリメントする（ステップ１００７）。
【００９６】
次に、ＯＳ１０６は、回路配置マップ１２４を更新する（ステップ１００８）。
【００９７】
ＯＳ１０６は、ＤＲＬ１０８へ回路情報を転送し、当該回路情報に基づいて、回路を合成するよう指示し、処理を終了する（ステップ１００９）。具体的には、ＤＲＬ管理部１１６がＤＲＬ１０８へ回路情報を転送する。ＤＲＬ１０８は、受信した回路情報に基づいて、回路を合成する。
【００９８】
ステップ１００３において、回路を合成するための空き領域がＤＲＬ１０８上にないと判定された場合、ＯＳ１０６は、アプリケーション１０３の実行優先度がしきい値以上であるか否かを判定する（ステップ１００４）。
【００９９】
しきい値は、予め設定された値であってもよいし、ＤＲＬ１０８の空き領域に応じて動的に変更される値であってもよい。動的に値を変更する方法としては、ＤＲＬ１０８上に空き領域が多く存在する場合、実行優先度の低いアプリケーション１０３でも再配置処理が実行できるようにしきい値を低くすることが考えられる。
【０１００】
ここで、再配置処理とは、ＤＲＬ１０８上に合成されている回路の配置を変更する処理である。当該処理によって、ＤＲＬ１０８上に合成されている回路が散在している場合に、散在している回路を再配置して集約し、所定の空き領域を作成することができる。通常、再配置処理中には、アプリケーション１０３は、ＤＲＬ１０８へアクセスすることができない。
【０１０１】
アプリケーション１０３の実行優先度がしきい値以上であると判定された場合、ＯＳ１０６は、ステップ１００３の結果を参照して、空き領域の数が一定数以上あるか否かを判定する（ステップ１０１６）。つまり、取得された回路情報に示された回路を合成するのに必要となる単位回路の数がＤＲＬ１０８上にある否かを判定する。ステップ１０１６の判定によって、ＤＲＬ１０８上に合成された回路が散在しているか否かを判定することができる。
【０１０２】
これによって、ＤＲＬ１０８上に、回路を合成するための空き領域がないが、当該回路を合成するのに必要な単位回路の数が十分存在する場合、再配置処理が実行されることによって、当該回路を合成するための空き領域を確保することが可能となる。
【０１０３】
ステップ１０１６の条件を満たしていないと判定された場合、ＯＳ１０６は、ステップ１０１０に進む。
【０１０４】
空き領域の数が一定数以上あると判定された場合、ＯＳ１０６は、再配置処理を実行する（ステップ１００５）。なお、再配置処理の詳細については、図９を用いて後述する。
【０１０５】
次に、ＯＳ１０６は、再配置処理の結果、ステップ１００１で取得された回路情報に示された回路を合成するための空き領域がＤＲＬ１０８上にあるか否かを判定する（ステップ１００６）。判定方法は、ステップ１００３と同一である。
【０１０６】
回路を合成するための空き領域がＤＲＬ１０８上にあると判定された場合、ＯＳ１０６は、ステップ１００７に進む。
【０１０７】
回路を合成するための空き領域がＤＲＬ１０８上にないと判定された場合、ＯＳ１０６は、ステップ１０１０に進む。
【０１０８】
ステップ１００４において、アプリケーション１０３の実行優先度がしきい値より小さいと判定された場合、ＯＳ１０６は、回路が合成できない旨を示すエラーをアプリケーション１０３に通知する（ステップ１０１０）。
【０１０９】
ＯＳ１０６は、エラーが通知されたアプリケーション１０３がソフトウェア代替処理を実行できるか否かを判定する（ステップ１０１１）。
【０１１０】
ソフトウェア代替処理とは、回路合成ができないアプリケーション１０３に、他のアプリケーション１０３が利用している回路を代替回路として利用させる処理である。なお、ソフトウェア代替処理をアプリケーション１０３が持つか否かの判定方法として、例えば、アプリケーション１０３の起動時に、ＡＰＩ経由でＯＳ１０６へ代替処理の有無を通知しておくなどが考えられる。
【０１１１】
エラーが通知されたアプリケーション１０３がソフトウェア代替処理を実行できると判定された場合、ＯＳ１０６は、当該アプリケーション１０３をソフトウェア代替処理モードに切り替えて処理を終了する（ステップ１０１２）。
【０１１２】
エラーが通知されたアプリケーション１０３がソフトウェア代替処理を実行できないと判定された場合、ＯＳ１０６は、エラーが通知されたアプリケーション１０３がＤＲＬ１０８を利用しない機能を継続して実行できるか否かを判定する（ステップ１０１３）。
【０１１３】
エラーが通知されたアプリケーション１０３がＤＲＬ１０８を利用しない機能を継続して実行できると判定された場合、アプリケーション１０３はＤＲＬ１０８に回路合成を再度依頼し（ステップ１０１４）、当該依頼を受けたＯＳ１０６はステップ１００３に戻り同様の処理を実行する。なお、当該依頼を受信したＯＳ１０６は、例えば、アプリケーション１０３の合成優先度４０３を高くする等の処理を実行する。
【０１１４】
エラーが通知されたアプリケーション１０３がＤＲＬ１０８を利用しない機能を継続して実行できないと判定された場合、アプリケーション１０３は、エラー終了する（ステップ１０１５）。
【０１１５】
図７は、本発明の第１の実施形態におけるアプリケーション１０３の起動処理を説明するフローチャートである。
【０１１６】
ＯＳ１０６は、アプリケーション１０３を起動する（ステップ１１０１）。
【０１１７】
アプリケーション１０３は、ＤＲＬ利用機能１０４を備えているか否かを判定する（ステップ１１０２）。
【０１１８】
ＤＲＬ利用機能１０４を備えていないと判定された場合、アプリケーション１０３は、ステップ１１０８に進む。
【０１１９】
ＤＲＬ利用機能１０４を備えていると判定された場合、アプリケーション１０３は、回路情報一覧１１４と、各回路情報における回路合成の優先度とをＯＳ１０６に送信する（ステップ１１０３）。
【０１２０】
ＯＳ１０６は、合成優先度４０３を決定し、決定された合成優先度４０３とアプリケーション１０３の回路情報とを回路構成管理表１２１に登録する（ステップ１１０４）。合成優先度４０３は、優先度指定部１２２によって決定される。優先度指定部１２２が合成優先度４０３を決定する方法としては以下のような方法が考えられる。
【０１２１】
優先度指定部１２２は、アプリケーション１０３の実行優先度が最も高いアプリケーション１０３を選択する。次に、優先度指定部１２２は、当該アプリケーション１０３に含まれる回路情報の回路合成の優先度が高いものから順に合成優先度４０３が高くするように決定する。さらに、優先度指定部１２２は、次に実行優先度が高いアプリケーション１０３を選択し、前述と同様の処理を実行する。
【０１２２】
優先度指定部１２２は、ＤＲＬ１０８上の空き領域がなくなるまで前述した処理を実行する。
【０１２３】
つまり、アプリケーション１０３の実行優先度が高く、かつ、回路合成の優先度が高いものから順に、ＤＲＬ１０８を割り当てる（ＤＲＬ１０８上に回路を合成する）方法が考えられる。
【０１２４】
これによって、優先的に実行されるアプリケーション１０３が利用する回路を優先的に合成することができる。
【０１２５】
また、別の方法として、優先度指定部１２２は、実行優先度が最も高いアプリケーション１０３を選択し、当該アプリケーション１０３に含まれる回路情報のうち、回路合成の優先度が最も高い回路情報の合成優先度４０３を高くするように決定する。
【０１２６】
さらに、優先度指定部１２２は、次に実行優先度が高いアプリケーション１０３を選択し、当該アプリケーション１０３に含まれる回路情報のうち、回路合成の優先度が最も高い回路情報の合成優先度４０３を２番目に高くするように決定する。
【０１２７】
優先度指定部１２２は、次に実行優先度が高いアプリケーション１０３を選択し、前述した処理を実行する。
【０１２８】
優先度指定部１２２は、全てのアプリケーション１０３の最も回路合成の優先度が高い回路情報の合成優先度４０３を決定した後、実行優先度が最も高いアプリケーション１０３に含まれ、２番目に回路合成の優先度が高い回路情報の合成優先度４０３を決定する。
優先度指定部１２２は、ＤＲＬ１０８上の空き領域がなくなるまで前述した処理を実行する。
【０１２９】
つまり、アプリケーション１０３の実行優先度が高い順に、回路合成の優先度が高い回路からランドロビンでＤＲＬ１０８を割り当てる（ＤＲＬ１０８上に回路を合成する）方法が考えられる。
【０１３０】
これによって、各アプリケーション１０３に均等に回路を割り当てることができる。
【０１３１】
以上が優先度指定部１２２における合成優先度４０３の決定方法の一例である。
【０１３２】
アプリケーション１０３は、当該アプリケーション１０３がＤＲＬ１０８にアクセスするために利用する専用デバイスドライバ１２３を備えているか否かを判定する（ステップ１１０５）。
【０１３３】
アプリケーション１０３が専用デバイスドライバ１２３を備えていないと判定された場合、アプリケーション１０３は、ステップ１１０８に進む。
【０１３４】
アプリケーション１０３が専用デバイスドライバ１２３を備えていると判定された場合、アプリケーション１０３は、専用デバイスドライバ１２３をＯＳ１０６に転送する（ステップ１１０６）。
【０１３５】
ＯＳ１０６は、転送された専用デバイスドライバ１２３をアクセス調停部１１１に登録し（ステップ１１０７）、アプリケーション１０３の起動処理を終了する（ステップ１１０８）。
【０１３６】
なお、アプリケーション１０３が利用する専用デバイスドライバ１２３がアクセス調停部１１１にすでに登録されている場合、以下のような登録方法が考えられる。
【０１３７】
ＯＳ１０６は、アクセス調停部１１１に登録されている専用デバイスドライバ１２３と、転送された専用デバイスドライバ１２３とのバージョンを比較し、転送された専用デバイスドライバ１２３のバージョンが新しい場合、当該転送された専用デバイスドライバ１２３を登録する方法が考えられる。
【０１３８】
また、別の方法としては、ＯＳ１０６は、アクセス調停部１１１に登録されている専用デバイスドライバ１２３を、転送された専用デバイスドライバ１２３に置き換える方法が考えられる。
【０１３９】
図８は、本発明の第１の実施形態のアプリケーション１０３がＤＲＬ１０８にアクセスするときの処理を説明するフローチャートである。
【０１４０】
アプリケーション１０３は、ＤＲＬ１０８にアクセスするため、ＯＳ１０６にアクセス要求を発行する（ステップ１２０１）。
【０１４１】
ＯＳ１０６は、アクセス要求を受信し、ＤＲＬ１０８の状態を取得する（ステップ１２０２）。具体的には、アクセス調停部１１１が、ＤＲＬ管理部１１６からＤＲＬ状態を取得する。
【０１４２】
ＯＳ１０６は、アクセス要求を発行したアプリケーション１０３が利用する専用デバイスドライバ１２３を利用できるか否かを判定する（ステップ１２０３）。具体的には、回路構成管理表１２１の専用デバイスドライバ４０８を参照し、専用デバイスドライバ４０８に専用デバイスドライバ１２３のＩＤが格納されている場合、ＯＳ１０６は、専用デバイスドライバ１２３を利用できると判定する。
【０１４３】
専用デバイスドライバ１２３を利用できると判定された場合、ＯＳ１０６は、専用デバイスドライバ１２３が利用するＤＲＬ  Ｉ／Ｏを利用できるか否かを判定する（ステップ１２０４）。判定方法として、例えば、専用デバイスドライバ１２３がＤＲＬ  Ｉ／Ｏ  ＭＡＰを参照して、利用すべきＩ／Ｏが存在するか否かを調べる方法が考えられる。
【０１４４】
専用デバイスドライバ１２３が利用するＤＲＬ  Ｉ／Ｏを利用できると判定された場合、ＯＳ１０６は、専用デバイスドライバ１２３にアクセス要求を転送する（ステップ１２０５）。
【０１４５】
専用デバイスドライバ１２３は、アクセス要求を受信し、当該アクセス要求に基づいて、ＤＲＬ１０８にアクセスし（ステップ１２０６）、アクセス処理が終了する。
【０１４６】
ステップ１２０４において、専用デバイスドライバ１２３が利用するＤＲＬ  Ｉ／Ｏを利用できないと判定された場合、ＯＳ１０６は、ＤＲＬ１０８の再配置処理中であるか否かを判定する（ステップ１２０７）。
【０１４７】
ＤＲＬ１０８の再配置処理中であると判定された場合、ＯＳ１０６は、再配置処理を停止するようＤＲＬ１０８に要求を送信し（ステップ１２０９）、ステップ１２０４に戻り、同様の処理を実行する。前述したように再配置処理中、アプリケーション１０３は、ＤＲＬ１０８へアクセスができないため、ステップ１２０９の処理が実行されることによって、ＤＲＬ１０８へのアクセスを可能とする。
【０１４８】
ＤＲＬ１０８の再配置処理中でないと判定された場合、ＯＳ１０６は、アプリケーション１０３に現在アクセスが可能である旨を通知し（ステップ１２０８）、アクセス処理を終了する。なお、アクセス可能である旨の通知を受信したアプリケーション１０３は、専用デバイスドライバ１２３が存在する場合、当該専用デバイスドライバ１２３を経由してアクセスを開始する。アプリケーション１０３がアクセス不可である旨の通知を受信した場合は、再度アクセスを要求することも可能である。
【０１４９】
ステップ１２０３において、専用デバイスドライバ１２３を利用できないと判定された場合、ＯＳ１０６は、汎用アクセス用ＤＲＬ  Ｉ／Ｏを利用できるか否かを判定する（ステップ１２１０）。当該判定方法として、例えば、アプリケーション１０３が、予めＯＳ１０６に汎用アクセス用ＤＲＬ  Ｉ／Ｏが利用可能か否かを登録しておき、ＯＳ１０６が当該登録情報を用いて判定することが考えられる。
【０１５０】
汎用アクセス用ＤＲＬ  Ｉ／Ｏを利用できると判定された場合、ＯＳ１０６は、ＤＲＬ  Ｉ／ＯＭａｐ変更機能１１８を用いて、ＤＲＬ１０８上の該当する回路へアクセスし（ステップ１２１１）、アクセス処理を終了する。
【０１５１】
汎用アクセス用ＤＲＬ  Ｉ／Ｏを利用できないと判定された場合、ＯＳ１０６は、ＤＲＬ１０８の再配置処理中であるか否かを判定する（ステップ１２１２）。
【０１５２】
ＤＲＬ１０８の再配置処理中であると判定された場合、ＯＳ１０６は、再配置処理を停止するようＤＲＬ１０８に要求を送信し（ステップ１２１４）、ステップ１２１０に戻り、同様の処理を実行する。
【０１５３】
ＤＲＬ１０８の再配置処理中でないと判定された場合、ＯＳ１０６は、アプリケーション１０３に現在アクセスが可能である旨を通知し（ステップ１２１３）、アクセス処理を終了する。
【０１５４】
図９は、本発明の第１の実施形態の回路再配置処理を説明するフローチャートである。
【０１５５】
ＯＳ１０６は、回路構成管理表１２１を参照し、ＤＲＬ１０８へのＩ／Ｏ要求の頻度が低い回路が存在するか否かを判定する（ステップ１３０１）。つまり、ＯＳ１０６は、アプリケーション１０３からのアクセス頻度が低い回路がＤＲＬ１０８上に存在するか否かを判定する。
【０１５６】
具体的には、ＯＳ１０６は、利用頻度４０４に格納されている値が、しきい値以下であるか否かを判定する。なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。
【０１５７】
ＤＲＬ１０８へのＩ／Ｏ要求の頻度が低い回路が存在しないと判定された場合、ＯＳ１０６は、処理を終了する。
【０１５８】
ＤＲＬ１０８へのＩ／Ｏ要求の頻度が低い回路が存在すると判定された場合、ＯＳ１０６は、空き領域の情報を収集する（ステップ１３０２）。具体的には、ＤＲＬ管理部１１６は、回路配置マップ１２４の状態７０５が「未使用」であるエントリを収集する。
【０１５９】
ＯＳ１０６は、ＤＲＬ１０８上に終了したアプリケーション１０３の回路が残っているか否かを判定する（ステップ１３０３）。具体的には、ＯＳ１０６は、回路構成管理表１２１を参照し、状態４０７が「実行中」で、かつ、アプリケーション状態４０９が「終了」となっているエントリが存在するか否かを判定する。前述の条件を満たすと判定された場合、ＯＳ１０６は、ＤＲＬ１０８上に終了したアプリケーション１０３の回路が残っていると判定する。
【０１６０】
ＤＲＬ１０８上に終了したアプリケーション１０３の回路が残っていないと判定された場合、ＯＳ１０６は、ステップ１３０５に進む。
【０１６１】
ＤＲＬ１０８上に終了したアプリケーション１０３の回路が残っていると判定された場合、ＯＳ１０６は、回路配置マップ１２４の当該回路に対応する基本管理情報６０１の状態７０５を「未使用」に変更する（ステップ１３０４）。この処理によって、終了したアプリケーションの回路は、空き領域となる。つまり、当該回路が合成されていた領域が開放される。
【０１６２】
ＯＳ１０６は、ＤＲＬ１０８上に空き領域の数が一定数以上存在するか否かを判定する（ステップ１３０５）。具体的には、ＯＳ１０６は、状態７０５が「未使用」であるエントリの合成可能回路規模７０２から、空き領域の数を算出し、算出された空き領域の数が、しきい値以上であるか否かを判定する。
【０１６３】
なお、しきい値は、予め設定された値であってもよいし、ＤＲＬ１０８の空き領域に応じて動的に変更される値であってもよい。動的に値を変更する方法としては、ＤＲＬ１０８を利用するアプリケーション１０３の数が増えた時にしきい値を低く設定することが考えられる。
【０１６４】
空き領域の数が一定数以上存在しないと判定された場合、ＯＳ１０６は、処理を終了する。
【０１６５】
空き領域の数が一定数以上存在すると判定された場合、ＯＳ１０６は、空き領域が連続しているか否かを判定する（ステップ１３０６）。つまり、ＯＳ１０６は、ＤＲＬ１０８上に合成されている回路が散在しているか否かを判定する。具体的には、ＯＳ１０６は、合成可能回路規模７０２と合成開始位置７０６とから空き領域が連続しているかを判定する。
【０１６６】
空き領域が連続していると判定された場合、ＯＳ１０６は、処理を終了する。
【０１６７】
空き領域が連続していないと判定された場合、ＯＳ１０６は、再配置処理を実行し、回路配置マップ１２４を更新する（ステップ１３０７）。
【０１６８】
なお、ステップ１３０７における再配置処理の一例としては、管理ＩＤ７０１が小さい空き領域から順に単位回路を配置する方法、又は、利用頻度４０４の高い回路の配置は維持し、他の回路の配置を変更する方法等が考えられる。
【０１６９】
ＯＳ１０６は、アプリケーション１０３からＤＲＬ１０８上に合成された回路へのアクセスが変化しているか否かを判定する（ステップ１３０８）。
【０１７０】
具体的には、ＯＳ１０６は、ＤＲＩ  Ｉ／ＯＭａｐ（図示省略）を参照し、ＤＲＩ  Ｉ／ＯＭａｐが変化しているか否かを判定する。ＤＲＩ  Ｉ／ＯＭａｐが変化していると判定された場合、ＯＳ１０６は、アプリケーション１０３からＤＲＬ１０８上に合成された回路へのアクセスが変化していると判定する。
【０１７１】
アプリケーション１０３からＤＲＬ１０８上に合成された回路へのアクセスが変化していないと判定された場合、ＯＳ１０６は、処理を終了する。
【０１７２】
アプリケーション１０３からＤＲＬ１０８上に合成された回路へのアクセスが変化していると判定された場合、ＯＳ１０６は、ＤＲＬ  Ｉ／ＯＭａｐ変更機能１１８を用いて、専用デバイスドライバ１２３のアクセス先のＩ／Ｏアドレスを更新し（ステップ１３０９）、処理を終了する。  以上の処理によって、ＤＲＬ１０８上に散在する回路を集約し、所定の大きさの空き領域を作成し、当該空き領域に新たな回路を合成することができる。したがって、ＤＲＬ１０８を有効に利用することができる。
【０１７３】
図１０は、本発明の第１の実施形態における、ＤＲＬ１０８上の空き領域に合成キャッシュ１２７又は合成メモリ１２６を合成する処理を説明するフローチャートである。
【０１７４】
ＯＳ１０６は、ＤＲＬ１０８上に合成された回路を利用しないアプリケーション１０３の数がしきい値以上であるか否かを判定する（ステップ１４０１）。
【０１７５】
例えば、ＯＳ１０６は、回路構成管理表１２１に登録されていないアプリケーション１０３の数をカウントすることによって、ＤＲＬ１０８を利用しないアプリケーション１０３の数を把握できる。
【０１７６】
なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。
【０１７７】
ＤＲＬ１０８上に合成された回路を利用しないアプリケーション１０３の数がしきい値以上でないと判定された場合、ＯＳ１０６は、処理を終了する。
【０１７８】
ＤＲＬ１０８上に合成された回路を利用しないアプリケーション１０３の数がしきい値以上であると判定された場合、ＯＳ１０６は、ＤＲＬ１０８の利用率が低いか否かを判定する（ステップ１４０２）。
【０１７９】
具体的には、ＯＳ１０６は、ＤＲＬ１０８上の利用されている単位回路の数を、ＤＲＬ上の全単位回路の数で除算してＤＲＬ１０８の利用率を算出し、算出されたＤＲＬ１０８の利用率がしきい値以下であるか否かを判定する。
【０１８０】
なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。動的に値を変更する方法としては、ＤＲＬ１０８を利用しないアプリケーション１０３の数が多い場合、しきい値を高くすることが考えられる。これによって、ＤＲＬ１０８の利用率が高い場合であっても、合成キャッシュ１２７又は合成メモリ１２６を合成することができるため、アプリケーション１０３の実行効率を向上することができる。
【０１８１】
ＤＲＬ１０８の利用率が低くないと判定された場合、ＯＳ１０６は、処理を終了する。
【０１８２】
ＤＲＬ１０８の利用率が低いと判定された場合、ＯＳ１０６は、ＤＲＬ１０８上に空き領域の数が一定数以上存在するか否かを判定する（ステップ１４０３）。具体的には、ＯＳ１０６は、状態７０５が「未使用」であるエントリの合成可能回路規模７０２から、空き領域の数を算出し、算出された空き領域の数が、しきい値以上であるか否かを判定する。
【０１８３】
なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。動的に値を変更する方法としては、ＤＲＬ１０８を利用しないアプリケーションの数が多い場合、しきい値を低くすることが考えられる。これによって、ＤＲＬ１０８の空き領域が少ない場合であっても、合成キャッシュ１２７又は合成メモリ１２６を合成することができるため、アプリケーション１０３の実行効率を向上することができる。
【０１８４】
ＤＲＬ１０８上に空き領域が一定数以上存在しないと判定された場合、ＯＳ１０６は、処理を終了する。
【０１８５】
ＤＲＬ１０８上に空き領域の数が一定数以上存在すると判定された場合、ＯＳ１０６は、ＣＰＵ１０９の負荷が高いか否かを判定する（ステップ１４０４）。なお、ＣＰＵ１０９の負荷は、ＯＳ１０６によって取得された値が用いられる。この場合、ＣＰＵ１０９の負荷がしきい値以上の場合、ＯＳ１０６は、ＣＰＵ１０９の負荷が高いと判定する。なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。
【０１８６】
ＣＰＵ１０９の負荷が高いと判定された場合、ＯＳ１０６は、ＤＲＬ１０８上に合成キャッシュ１２７を合成し（ステップ１４０５）、処理を終了する。
【０１８７】
なお、合成キャッシュ１２７を用いる方法としては、ＤＲＬ１０８が合成キャッシュ１２７を合成した旨を、キャッシュメモリ１１５が備えるキャッシュメモリ制御部（図示省略）に通知し、当該キャッシュメモリ制御部（図示省略）が合成キャッシュ１２７をキャッシュメモリ１１５の一部として登録する方法が考えられる。
【０１８８】
ＣＰＵ１０９の負荷が高くないと判定された場合、ＯＳ１０６は、メインメモリ１０７の利用率が高いか否かを判定する（ステップ１４０６）。なお。メインメモリ１０７の利用率は、ＯＳ１０６によって取得された値が用いられる。この場合、メインメモリ１０７の利用率がしきい値以上の場合、ＯＳ１０６は、メインメモリ１０７の利用率が高いと判定する。なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。
【０１８９】
メインメモリ１０７の利用率が高いかと判定された場合、ＯＳ１０６は、ＤＲＬ１０８上に合成メモリ１２６を合成し（ステップ１４０７）、処理を終了する。
【０１９０】
なお、合成メモリ１２６を用いる方法としては、ＤＲＬ１０８が合成キャッシュ１２７を合成した旨を、メインメモリ制御部（図示省略）に通知し、当該メインメモリ制御部（図示省略）が合成メモリ１２６をメインメモリ１０７のアドレスと連続したアドレスになるように登録する方法が考えられる。
【０１９１】
メインメモリ１０７の利用率が高くないと判定された場合、ＯＳ１０６は、処理を終了する。
【０１９２】
本発明の第１の実施形態によれば、ＤＲＬ１０８上に合成された回路が散在しても、適切に再配置処理が実行できるので大規模回路を合成できる。
【０１９３】
また、処理が終了しているアプリケーション１０３が利用する回路を開放することによって、動的にＤＲＬ１０８の空き領域を増やすことができる。
【０１９４】
また、ＤＲＬ１０８上に合成キャッシュ１２７及び合成メモリ１２６が作成されることによって、ＤＲＬ１０８を利用しないアプリケーションもＤＲＬ１０８を活用できる。
【０１９５】
［第２の実施形態］
本発明の第２の実施形態は、情報処理装置１０１が仮想化環境を搭載する点が異なる。以下、第１の実施形態との差異を中心に第２の実施形態について説明する。
【０１９６】
図１１は、本発明の第２の実施形態の情報処理装置１０１を説明するブロック図である。
【０１９７】
情報処理装置１０１は、ソフトウェア１０２とハードウェア１０５とから構成される。
【０１９８】
ハードウェア１０５は、ＣＰＵ１０９、キャッシュメモリ１１５、動的再構成回路（ＤＲＬ）１０８、メインメモリ１０７、及び周辺回路１１０を備える。なお、ＣＰＵ１０９、キャッシュメモリ１１５、動的再構成回路（ＤＲＬ）１０８、メインメモリ１０７、及び周辺回路１１０の構成は第１の実施形態と同一であるため説明を省略する。
【０１９９】
ソフトウェア１０２は、ハイパバイザ２０２、ゲストＯＳ２０４、及び複数のアプリケーション１０３を含む。
【０２００】
アプリケーション１０３の構成は、第１の実施形態と同一であるため説明を省略する。
【０２０１】
ゲストＯＳ２０４は、ハイパバイザ２０２上で起動されるＯＳであり、例えば、Ｌｉｎｕｘ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）等である。ゲストＯＳ２０４は、ＤＲＬ制御Ｉ／Ｆ２１０を備える。ＤＲＬ制御Ｉ／Ｆ２１０は、ハイパバイザ２０２上の仮想ＤＲＬ２０８へアクセスするためのインタフェースである。
【０２０２】
ハイパバイザ２０２は、複数のゲストＯＳ２０４に仮想的なハードウェア環境を提供するソフトウェアである。ハイパバイザ２０２は、ハイパバイザＤＲＬ管理部２０３、ハイパバイザアクセス調停部２０５、ＤＲＬ  Ｉ／Ｆ２０６、ゲストＯＳ別割り当て管理表２０７、仮想ＤＲＬ２０８、優先度指定部２１１、及び回路構成管理表２１２を備える。また、ハイパバイザ２０２は、各ゲストＯＳ２０４の実行優先度を格納する。
【０２０３】
ハイパバイザＤＲＬ管理部２０３は、ＤＲＬ管理部１１６と同一の構成に加え、さらに、ＤＲＬ割当機能２０９を備える。なお、ハイパバイザＤＲＬ管理部２０３は、各ゲストＯＳ２０４の回路配置マップ１２４を備える。
【０２０４】
ＤＲＬ割当機能２０９は、各ゲストＯＳ２０４にＤＲＬ１０８の領域を割り当てる。つまり、ＤＲＬ割当機能２０９は、ＤＲＬ１０８の領域を論理的に分割した仮想ＤＲＬ２０８を各ゲストＯＳ２０４に割り当てる。
【０２０５】
ゲストＯＳ２０４へのＤＲＬ１０８の領域の割り当て方法としては、例えば、ＤＲＬ割当機能２０９は、実行優先度が高いゲストＯＳ２０４を選択し、当該ゲストＯＳ２０４が備える回路構成管理表１２１の合成優先度４０３が最も高い回路情報にＤＲＬ１０８の領域を割り当てる。
【０２０６】
ＤＲＬ割当機能２０９は、次に実行優先度が高いゲストＯＳ２０４を選択し、前述した処理を実行する。ＤＲＬ割当機能２０９は、ＤＲＬ１０８上の空き領域がなくなるまで前述した処理を実行する。
【０２０７】
つまり、ゲストＯＳ２０４の実行優先度が高い順に、最も合成優先度４０３が高い回路からランドロビンでＤＲＬ１０８を割り当てる方法が考えられる。
【０２０８】
また、ＤＲＬ１０８上の領域の割り当て方法としては、ＤＲＬ１０８上の割り当て開始位置と割り当て終了位置とを指定する方法、又は、割り当てる単位回路を指定する方法等が考えられる。
【０２０９】
ハイパバイザアクセス調停部２０５は、複数のゲストＯＳ２０４からのアクセスを調停する。
【０２１０】
ＤＲＬ  Ｉ／Ｆ２０６は、ゲストＯＳ２０４に対して、仮想的なＤＲＬアクセス用のＩ／Ｆを提供する。ゲストＯＳ２０４は、ＤＲＬ  Ｉ／Ｆ２０６をハードウェアとして認識する。また、ゲストＯＳ２０４は、ＤＲＬ  Ｉ／Ｆ２０６を介して、ハイパバイザＤＲＬ管理部２０３が提供する仮想ＤＲＬ２０８にアクセスする。この場合、仮想ＤＲＬ２０８は、ゲストＯＳ２０４から通常のＤＲＬ１０８としてアクセスされる。
【０２１１】
ゲストＯＳ別割り当て管理表２０７は、ゲストＯＳ２０４の実行優先度を管理する。なお、ゲストＯＳ別割り当て管理表２０７の詳細は、図１２を用いて後述する。
【０２１２】
仮想ＤＲＬ２０８は、ＤＲＬ割当機能２０９によって各ゲストＯＳ２０４に割り当てられたＤＲＬ１０８の領域であり、ＤＲＬ１０８を論理的に分割して作成される。ゲストＯＳ２０４は、仮想ＤＲＬ２０８を通常のＤＲＬ１０８として認識する。
【０２１３】
優先度指定部２１１は、合成優先度４０３を決定し、回路構成管理表１２１に格納する。優先度指定部２１１は、ゲストＯＳ２０４の実行順を示す実行優先度５０３（図１２参照）を決定し、決定された実行優先度５０３（図１２参照）をゲストＯＳ別割り当て管理表２０７に登録する。
【０２１４】
実行優先度５０３（図１２参照）の決定方法としては、例えば、実行しているアプリケーション１０３の数が多いゲストＯＳ２０４の実行優先度５０３（図１２参照）を高くする方法が考えられる。
【０２１５】
回路構成管理表２１２は、各ゲストＯＳ２０４の回路構成管理表１２１を格納する。
【０２１６】
図１２は、本発明の第２の実施形態のゲストＯＳ別割り当て管理表２０７の一例を示す説明図である。
【０２１７】
ゲストＯＳ別割り当て管理表２０７は、ゲストＯＳ  ＩＤ５０１、ＤＲＬ割り当て領域５０２、実行優先度５０３、利用頻度５０４、及び利用率５０７を含む。
【０２１８】
ゲストＯＳ  ＩＤ５０１は、ゲストＯＳ２０４を一意に識別するための識別子を格納する。なお、ゲストＯＳ  ＩＤ５０１は、ハイパバイザ２０２によって割り当てられる。
【０２１９】
ＤＲＬ割り当て領域５０２は、ゲストＯＳ２０４に割り当てられたＤＲＬ１０８の領域を示す情報を格納する。具体的には、開始位置５０５と終了位置５０６とが格納される。開始位置５０５は、ゲストＯＳ２０４に割り当てられた領域の開始位置を示すＤＲＬ１０８上の位置情報を格納する。終了位置５０６は、ゲストＯＳ２０４に割り当てられた領域の終了位置を示すＤＲＬ１０８上の位置情報を格納する。
【０２２０】
ＤＲＬ割り当て領域５０２は、１次元構成のＤＲＬ１０８上での場合を示している。ＤＲＬ割り当て領域５０８は、２次元構成のＤＲＬ１０８上での場合を示している。ＤＲＬ割り当て領域５０９は、３次元構成のＤＲＬ１０８上での場合を示している。
【０２２１】
なお、単位回路を指定して、ＤＲＬ１０８上の領域が割り当てられる場合、ＤＲＬ割り当て領域５０２は、割り当てられる単位回路を識別するための識別子を格納する。
【０２２２】
実行優先度５０３は、ゲストＯＳ２０４の実行優先度を格納する。図１２に示す例では、実行優先度５０３の値が大きいほど、ゲストＯＳ２０４の実行優先度は高い。
【０２２３】
利用頻度５０４は、ゲストＯＳ２０４がＤＲＬ１０８を利用した回数を格納する。回路が合成されると、利用頻度５０４は、インクリメントされる。
【０２２４】
利用率５０７は、ゲストＯＳ２０４に割り当てられたＤＲＬ１０８上の領域（仮想ＤＲＬ２０８）の利用率を格納する。具体的には、ハイパバイザ２０２が、仮想ＤＲＬ２０８上に合成されている回路が使用している単位回路の総数を、仮想ＤＲＬ２０８として割り当てられたＤＲＬ１０８の領域における単位回路の総数で除算することによって算出する。
【０２２５】
図１３は、本発明の第２の実施形態の情報処理装置１０１の起動処理を説明するフローチャートである。
【０２２６】
まず、情報処理装置１０１に電源が投入され（ステップ９０１）、ハードウェア１０５が起動される（ステップ９０２）。
【０２２７】
ＤＲＬ１０８は、ＤＲＬ１０８自身の初期化を実行する（ステップ９０３）。次に、ハイパバイザ２０２の起動処理が実行される（ステップ９０４）。
【０２２８】
ハイパバイザ２０２は、優先度指定部２１１、ハイパバイザＤＲＬ管理部２０３、及びハイパバイザアクセス調停部２０５を初期化する（ステップ９０５）。
【０２２９】
ハイパバイザＤＲＬ管理部２０３は、ＤＲＬ１０８からＤＲＬ１０８の状態（例えば、ＤＲＬ１０８が備える単位回路の構成及び数、Ｉ／Ｏの状態、等）を取得する（ステップ９０６）。
【０２３０】
ハイパバイザ２０２は、起動予定のゲストＯＳ２０４の数に応じてゲストＯＳ別割り当て管理表２０７を作成し、ハイパバイザＤＲＬ管理部２０３は、ゲストＯＳ別割り当て管理表２０７に基づいて、ゲストＯＳ２０４へ初期ＤＲＬ割り当て処理を実行する（ステップ９０７）。
【０２３１】
以上の処理によって、ハイパバイザ２０２の起動が完了する（ステップ９０８）。
【０２３２】
次に、ハイパバイザ２０２は、ゲストＯＳ２０４を起動し、処理を終了する（ステップ９０９）。
【０２３３】
第２の実施形態におけるＤＲＬ１０８の回路合成処理は、以下の点が第１の実施形態と異なる。
【０２３４】
すなわち、当該処理は、ゲストＯＳ２０４が仮想ＤＲＬ２０８を対象とした処理であり、実際のＤＲＬ１０８の回路合成は、ハイパバイザ２０２によって実行される。
【０２３５】
具体的には、ステップ１００９において、ゲストＯＳ２０４は、仮想ＤＲＬ２０８に回路情報を送信する。
【０２３６】
仮想ＤＲＬ２０８を提供するハイパバイザ２０２は、ゲストＯＳ２０４から回路情報を受信し、受信した回路情報及び回路構成管理表２１２に含まれる当該ゲストＯＳ２０４の回路構成管理表１２１に基づいて、ＤＲＬ１０８上に回路を合成する。仮想ＤＲＬ２０８上への回路合成は、第１の実施形態と同様に合成優先度４０３に基づいて、実行される。
【０２３７】
第２の実施形態におけるアプリケーション１０３の起動処理は、第１の実施形態と同一であるため（図７参照）、説明を省略する。
【０２３８】
第２の実施形態におけるアプリケーション１０３が仮想ＤＲＬ２０８にアクセスするときの処理は、以下の点が第１の実施形態と異なる。
【０２３９】
すなわち、ステップ１２０１において、アプリケーション１０３はゲストＯＳ２０４にアクセス要求を発行する。ステップ１２０２、及び１２０３の処理は、ハイパバイザアクセス調停部２０５によって実行される。また、ステップ１２０４、ステップ１２０７〜ステップ１２１３の処理は、ハイパバイザ２０２によって実行される。
【０２４０】
第２の実施形態の回路再配置処理は、ハイパバイザ２０２が処理を実行する点が第１の実施形態と異なるが、処理内容は第１の実施形態と同一であるため（図９参照）、説明を省略する。なお、当該処理は、Ｉ／Ｏ要求の頻度が低い回路が存在するか否か判定することを処理の契機としていたが、ハイパバイザＤＲＬ管理部２０３が周期的に仮想ＤＲＬ２０８上の空き領域を監視し、仮想ＤＲＬ２０８の空き領域が不足した場合に処理を開始するものであってもよい。
【０２４１】
仮想ＤＲＬ２０８上の空き領域を監視方法としては、例えば、利用率５０７がしきい値以上の場合、空き領域が不足していると判定する方法が考えられる。
【０２４２】
これによって、仮想ＤＲＬ２０８の状況に応じて、柔軟にＤＲＬ１０８の割り当てを変更することができる。
【０２４３】
第２の実施形態における、ＤＲＬ１０８上の空き領域に合成キャッシュ１２７又は合成メモリ１２６を合成する処理は、以下の点が第１の実施形態と異なる。
【０２４４】
すなわち、ステップ１４０１〜ステップ１４０６の処理は、ハイパバイザ２０２によって実行される。また、ステップ１４０１における判定は、利用率５０７が用いられる。具体的には、ハイパバイザ２０２は、利用率５０７がしきい値以下であるか否かを判定する。なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。
【０２４５】
また、ハイパバイザ２０２は、以下の処理も実行する。
【０２４６】
ハイパバイザ２０２は、利用率５０７を周期的に監視し、利用率５０７がしきい値以上の場合、ＤＲＬ割当機能２０９を用いて、当該ゲストＯＳ２０４へのＤＲＬ１０８の割り当てを増加させる。
【０２４７】
また、当該処理は、各ゲストＯＳ２０４の利用頻度５０４の総和を周期的に算出し、当該総和がしきい値以上の場合、ＤＲＬ１０８の割り当てを増加させるものであってもよい。
【０２４８】
なお、しきい値は、予め設定された値であってもよいし、動的に変更される値であってもよい。
【０２４９】
これによって、利用率（利用頻度）に基づいて、ゲストＯＳ２０４へのＤＲＬ１０８の割り当てを動的に制御することができる。
【０２５０】
本発明の第２の実施形態によれば、仮想化環境を搭載した情報処理装置１０１においても、ＤＲＬ１０８上に散在した回路を適切に再配置し、大規模回路を合成できる。
【０２５１】
また、ＤＲＬ１０８上に合成キャッシュ１２７及び合成メモリ１２６が作成されることによって、ＤＲＬ１０８を利用しないアプリケーションもＤＲＬ１０８を活用することができる。
【０２５２】
［第３の実施形態］
本発明の第３の実施形態は、仮想化環境を搭載する情報処理装置１０１と、ＤＲＬ１０８への割当を管理する管理装置３０２（図１４参照）を備えるシステム構成である点が異なる。以下、第１の実施形態との差異を中心に第３の実施形態について説明する。
【０２５３】
図１４は、本発明の第３の実施形態の情報処理装置管理システムを説明するブロック図である。
【０２５４】
情報処理装置管理システムは、管理装置３０２、ストレージシステム３０８、及び複数の情報処理装置１０１を備え、ネットワーク３０１を介して互いに接続されている。
【０２５５】
ネットワーク３０１は、機器を接続するネットワークであり、例えば、ＬＡＮ等である。
【０２５６】
情報処理装置１０１は、第２の実施形態と比較して、ハイパバイザＤＲＬ管理部２０３がＤＲＬ割当機能２０９を備えていない点が異なる。他の構成については、第２の実施形態と同一であるため説明を省略する。
【０２５７】
ＤＲＬ割当機能２０９が行う処理は、情報処理装置１０１への負荷が大きいため、オーバーヘッドが発生する。そのため、第３の実施形態では、ＤＲＬ１０８を各ゲストＯＳ２０４に割り当てる処理を管理装置３０２が実行する。これによって、情報処理装置１０１の負荷を低減する。
【０２５８】
管理装置３０２は、ＤＲＬ制御システムを搭載した情報処理装置１０１を管理する情報処理装置である。管理装置３０２は、ＤＲＬ管理アプリケーション３０３、ＯＳ３０６、及びハードウェア３０７を備える。
【０２５９】
ＯＳ３０６、及びハードウェア３０７は、第１の実施形態と同一であるため説明を省略する。
【０２６０】
ＤＲＬ管理アプリケーション３０３は、ＤＲＬ制御システムを搭載した情報処理装置１０１を管理するためのアプリケーションである。ＤＲＬ管理アプリケーション３０３は、各情報処理装置１０１からＣＰＵ１０９の負荷、メインメモリ１０７の負荷、アプリケーション１０３の実行状況、ＤＲＬ１０８の割り当て状況を収集し、収集された情報に基づいて、ハイパバイザアクセス調停部２０５、及びハイパバイザＤＲＬ管理部２０３を制御する。
【０２６１】
例えば、管理装置３０２は、ＤＲＬ１０８の利用率が非常に高く、ＤＲＬ１０８上に合成できない回路が多数ある情報処理装置１０１を検出し、ＤＲＬ１０８の利用率が低い情報処理装置１０１へ、アプリケーション１０３、又はゲストＯＳ２０４を移動させる制御方法が考えられる。
【０２６２】
なお、ＤＲＬ管理アプリケーション３０３は、収集された情報を格納するテーブル等を備えていてもよい。
【０２６３】
ＤＲＬ管理アプリケーション３０３は、割当情報管理３０４及び情報処理装置制御機能３０５を備える。
【０２６４】
割当情報管理３０４は、各情報処理装置１０１におけるＤＲＬ１０８の割り当て状況を管理する。情報処理装置制御機能３０５は、予め設定されたスケジュールと情報処理装置１０１における負荷とに応じて、各情報処理装置１０１におけるＤＲＬ１０８の割り当てを制御する機能を提供する。
【０２６５】
例えば、動画配信システムが構築されている場合、夜間は利用者数が少ないため、情報処理装置１０１を利用する台数を削減することがある。情報処理装置制御機能３０５によって、情報処理装置１０１上のアプリケーション１０３への処理要求が低くなった場合、ＤＲＬ１０８を利用するアプリケーション１０３を特定の情報処理装置１０１へ集約し、他の情報処理装置１０１を停止する等の方法が考えられる。
【０２６６】
ストレージシステム３０８は、情報処理装置１０１が利用するアプリケーション１０３の実行ファイルを格納する記憶装置である。図１４に示す例では、ストレージシステム３０８は、ディスクアレイやＲＡＩＤシステムが構築され、複数のアプリケーション実行ファイル３０９を格納する。
【０２６７】
アプリケーション実行ファイル３０９は、情報処理装置１０１が読み出し、実行されるアプリケーション１０３の実行ファイルである。なお、アプリケーション実行ファイル３０９は、回路情報も含まれる。
【０２６８】
第３の実施形態におけるＤＲＬ１０８の回路合成処理、アプリケーション１０３の起動処理、アプリケーション１０３が仮想ＤＲＬ２０８にアクセスするときの処理、回路再配置処理、及びＤＲＬ１０８上の空き領域に合成キャッシュ１２７又は合成メモリ１２６を合成する処理は、ゲストＯＳ２０４にＤＲＬ１０８の割り当て処理を管理装置３０２が行う点以外は、第２の実施形態と同一であるため説明を省略する。
【０２６９】
図１５は、本発明の第３の実施形態の管理装置３０２が、アプリケーション１０３を情報処理装置１０１間で移動させる処理を説明するフローチャートである。
【０２７０】
管理装置３０２は、管理している全ての情報処理装置１０１に関する情報を取得する（ステップ１５０１）。なお、管理装置３０２は、周期的に情報を取得してもよいし、外部からの要求に基づいて情報を取得してもよい。
【０２７１】
管理装置３０２は、合成待ちの回路数がしきい値以上である情報処理装置１０１が存在するか否かを判定する（ステップ１５０２）。以下、合成待ちの回路数がしきい値以上である情報処理装置１０１を情報処理装置Ａ１０１とも記載する。
【０２７２】
ステップ１５０２の判定は、例えば、ゲストＯＳ２０４が備える回路構成管理表１２１の状態４０７が「未実施」であるエントリの数を、情報処理装置Ａ１０１における全てのゲストＯＳ２０４について加算し、その数がしきい値以上か否かを判定する方法が考えられる。
【０２７３】
なお、しきい値は、予め設定された値であってもよいし、情報処理装置Ａ１０１の処理負荷に応じて動的に変更される値であってもよい。この場合、情報処理装置Ａ１０１の処理負荷高い場合、しきい値を低くし、情報処理装置Ａ１０１の処理負荷が低い場合、しきい値を高く設定する方法が考えられる。
【０２７４】
合成待ちの回路数がしきい値以上である情報処理装置Ａ１０１が存在しないと判定された場合、管理装置３０２は、処理を終了する。
【０２７５】
合成待ちの回路数がしきい値以上である情報処理装置１０１が存在すると判定された場合、管理装置３０２は、ＤＲＬ１０８の利用率がしきい値以下である情報処理装置１０１が存在するか否かを判定する（ステップ１５０３）。以下、ＤＲＬ１０８の利用率がしきい値以下である情報処理装置１０１を情報処理装置Ｂ１０１とも記載する。
【０２７６】
ステップ１５０３の判定方法としては、管理装置３０２は、ＤＲＬ１０８上の利用されている単位回路の数と、ＤＲＬ上の全単位回路数とを用いてＤＲＬ１０８の利用率を算出し、算出されたＤＲＬ１０８の利用率がしきい値以下であるか否かを判定する。
【０２７７】
なお、しきい値は、予め設定された値であってもよいし、情報処理装置Ａ１０１の処理負荷に応じて動的に変更される値であってもよい。この場合、情報処理装置Ａ１０１の処理負荷高い場合、しきい値を低くし、情報処理装置Ａ１０１の処理負荷が低い場合、しきい値を高く設定する方法が考えられる。
【０２７８】
なお、ＤＲＬ１０８の利用率がしきい値以下である情報処理装置Ｂ１０１が複数存在する場合、ＣＰＵ１０９の利用率、メインメモリ１０７の利用率、ＤＲＬ１０８の利用率、及び前記情報処理装置１０１上で実行されているアプリケーション１０３の数の少なくともいずれかを用い、いずれかの値が最も小さいものを情報処理装置Ｂ１０１とする。
【０２７９】
ＤＲＬ１０８の利用率がしきい値以下である情報処理装置Ｂ１０１が存在しないと判定された場合、管理装置３０２は、ステップ１５０５に進む。
【０２８０】
ＤＲＬ１０８の利用率がしきい値以下である情報処理装置Ｂ１０１が存在すると判定された場合、管理装置３０２は、情報処理装置Ａ１０１及び情報処理装置Ｂ１０１に、アプリケーション１０３を移動させる旨を通知する（ステップ１５０４）。
【０２８１】
情報処理装置Ａ１０１は、管理装置３０２から前述の通知を受信し、移動可能なアプリケーション１０３を選択し、選択されたアプリケーション１０３（以下、移動対象アプリケーション１０３とも記載する。）を情報処理装置Ｂ１０１に通知する（ステップ１５０５）。
【０２８２】
情報処理装置Ｂ１０１は、通知された移動対象アプリケーション１０３の回路情報をストレージシステム３０８から読み出し、読み出された回路情報に基づいて、情報処理装置Ｂ１０１のＤＲＬ１０８上に回路を合成する（ステップ１５０６）。
【０２８３】
情報処理装置Ａ１０１は、アプリケーション１０３本体と、当該アプリケーション１０３の実行状態（アプリケーション１０３の実行中に生成されたデータ）とを情報処理装置Ｂ１０１に転送する（ステップ１５０７）。なお、ステップ１５０７の処理は、情報処理装置Ａ１０１が情報処理装置Ｂ１０１から回路合成が終了した旨の通知を受信した後に実行する方法が考えられる。
【０２８４】
情報処理装置Ｂ１０１は、転送されたアプリケーション１０３本体と、当該アプリケーション１０３の実行状態（アプリケーション１０３の実行中に生成されたデータ）とに基づいて、アプリケーション１０３を実行し（ステップ１５０８）、処理を終了する。
【０２８５】
本処理では、合成待ちの回路数がしきい値以上であるか否かを処理の契機としていたが、本発明はこれに限定されず、ＤＲＬ１０８の利用率がしきい値以下である情報処理装置Ｂ１０１が複数存在する場合、ＣＰＵ１０９の利用率、メインメモリ１０７の利用率、ＤＲＬ１０８の利用率、合成待ちの回路数、及び前記情報処理装置１０１上で実行されているアプリケーション１０３の数の少なくとも一以上の情報が用いられればよい。
【０２８６】
本発明の第３の実施形態によれば、複数の情報処理装置１０１間でＤＲＬ１０８を有効に活用することができる。また、情報処理装置１０１の負荷を分散することができる。
【符号の説明】
【０２８７】
１０１  情報処理装置
１０２  ソフトウェア
１０３  アプリケーション
１０４  ＤＲＬ利用機能
１０５  ハードウェア
１０６  ＯＳ
１０７  メインメモリ
１０８  動的再構成回路（ＤＲＬ）
１０９  ＣＰＵ
１１０  周辺回路
１１１  アクセス調停部
１１２  構成制御部
１１３  プロセス
１１４  回路情報一覧
１１５  キャッシュメモリ
１１６  ＤＲＬ管理部
１１７  回路合成優先度指定機能
１１８  ＤＲＬ  Ｉ／ＯＭａｐ変更機能
１１９  専用デバイスドライバ情報
１２０  ＤＲＬＡＰＩ
１２１  回路構成管理表
１２２  優先度指定部
１２３  専用デバイスドライバ
１２４  回路配置マップ
１２６  合成メモリ
１２７  合成キャッシュ
１２８  Ｉ／Ｏ  Ｍａｐ変換機能
２０２  ハイパバイザ
２０３  ハイパバイザＤＲＬ管理部
２０４  ゲストＯＳ
２０５  ハイパバイザアクセス調停部
２０６  ＤＲＬ  Ｉ／Ｆ
２０７  管理表
２０８  仮想ＤＲＬ
２０９  ＤＲＬ割当機能
２１０  ＤＲＬ制御Ｉ／Ｆ
２１１  優先度指定部
２１２  回路構成管理表
３０１  ネットワーク
３０２  管理装置
３０３  ＤＲＬ管理アプリケーション
３０４  割当情報管理
３０５  情報処理装置制御機能
３０６  ＯＳ
３０７  ハードウェア
３０８  ストレージシステム
３０９  アプリケーション実行ファイル
【図１】
2010250411.tif 000003
【図２】
2010250411.tif 000004
【図４】
2010250411.tif 000005
【図５】
2010250411.tif 000006
【図６】
2010250411.tif 000007
【図７】
2010250411.tif 000008
【図８】
2010250411.tif 000009
【図９】
2010250411.tif 000010
【図１０】
2010250411.tif 000011
【図１１】
2010250411.tif 000012
【図１２】
2010250411.tif 000013
【図１３】
2010250411.tif 000014
【図１４】
2010250411.tif 000015
【図１５】
2010250411.tif 000016
【図３】
2010250411.tif 000017