(57)【特許請求の範囲】
【請求項１】
アプリケーションを識別するアプリ識別子に対応付けて、前記アプリケーションが利用するアクセラレータを識別するアクセラレータ識別子を記憶する第１記憶部と、
前記アクセラレータを複数搭載する拡張ボックスの各スロットを識別する各スロット識別子に対応付けて、前記スロットに搭載される前記アクセラレータのアクセラレータ識別子を記憶する第２記憶部と、
ホストからアプリケーションの実行要求を受信した場合に、前記アプリケーションに対応するアクセラレータ識別子を前記第１記憶部から特定する第１特定部と、
前記第１特定部が特定したアクセラレータ識別子に対応するスロット識別子を前記第２記憶部から特定する第２特定部と、
前記第２特定部が特定したスロット識別子により識別されるスロットを前記ホストに割当て、前記アクセラレータを使用するアプリケーションの実行が終了した場合、前記アクセラレータが搭載されるスロットが割当てられたホストのプロセッサに、前記アクセラレータの利用を解除する解除処理の割込みを発生させる割当制御部と
を有することを特徴とするアクセラレータ管理装置。
【請求項２】
アプリケーションを識別するアプリ識別子に対応付けて、前記アプリケーションが利用するアクセラレータを識別するアクセラレータ識別子を記憶する第１記憶部と、
前記アクセラレータを複数搭載する拡張ボックスの各スロットを識別する各スロット識別子に対応付けて、前記スロットに搭載される前記アクセラレータのアクセラレータ識別子を記憶する第２記憶部と、
ホストからアプリケーションの実行要求を受信した場合に、前記アプリケーションに対応するアクセラレータ識別子を前記第１記憶部から特定する第１特定部と、
前記第１特定部が特定したアクセラレータ識別子に対応するスロット識別子を前記第２記憶部から特定する第２特定部と、
前記第２特定部が特定したスロット識別子により識別されるスロットを前記ホストに割当て、前記ホストに割当てられていないスロットに搭載されるアクセラレータ、または、実行が終了したアプリケーションに利用されるアクセラレータについては、当該アクセラレータの電源を切って待機させる割当制御部と
を有することを特徴とするアクセラレータ管理装置。
【請求項３】
前記割当制御部は、前記スロットを割当てたホストのプロセッサに、前記スロットに搭載されるアクセラレータを認識させる認識処理の割込みを発生させることを特徴とする請求項１または２に記載のアクセラレータ管理装置。
【請求項４】
前記拡張ボックスの各スロットをスキャンして各スロットに搭載されるアクセラレータを特定し、前記スキャンしたスロットのスロット識別子と前記スキャンによって特定したアクセラレータのアクセラレータ識別子とを対応付けて、前記第２記憶部に格納する対応生成部をさらに有することを特徴とする請求項１または２に記載のアクセラレータ管理装置。
【請求項５】
コンピュータが、
ホストからアプリケーションの実行要求を受信した場合に、前記アプリケーションを識別するアプリ識別子に対応付けて前記アプリケーションが利用するアクセラレータを識別するアクセラレータ識別子を記憶する第１記憶部から、前記アプリケーションに対応するアクセラレータ識別子を特定し、
特定したアクセラレータ識別子に対応するスロット識別子を、前記アクセラレータを複数搭載する拡張ボックスの各スロットを識別する各スロット識別子に対応付けて前記スロットに搭載される前記アクセラレータのアクセラレータ識別子を記憶する第２記憶部から特定し、
特定したスロット識別子により識別されるスロットを前記ホストに割当て、前記アクセラレータを使用するアプリケーションの実行が終了した場合、前記アクセラレータが搭載されるスロットが割当てられたホストのプロセッサに、前記アクセラレータの利用を解除する解除処理の割込みを発生させる
処理を実行することを特徴とするアクセラレータ管理方法。
【請求項６】
コンピュータが、
ホストからアプリケーションの実行要求を受信した場合に、前記アプリケーションを識別するアプリ識別子に対応付けて前記アプリケーションが利用するアクセラレータを識別するアクセラレータ識別子を記憶する第１記憶部から、前記アプリケーションに対応するアクセラレータ識別子を特定し、
特定したアクセラレータ識別子に対応するスロット識別子を、前記アクセラレータを複数搭載する拡張ボックスの各スロットを識別する各スロット識別子に対応付けて前記スロットに搭載される前記アクセラレータのアクセラレータ識別子を記憶する第２記憶部から特定し、
特定したスロット識別子により識別されるスロットを前記ホストに割当て、前記ホストに割当てられていないスロットに搭載されるアクセラレータ、または、実行が終了したアプリケーションに利用されるアクセラレータについては、当該アクセラレータの電源を切って待機させる
処理を実行することを特徴とするアクセラレータ管理方法。
【請求項７】
アクセラレータを搭載する複数のスロットと、
ホストからのアクセスを前記複数のスロットのいずれかに振り分ける振分部と、
アプリケーションを識別するアプリ識別子に対応付けて、前記アプリケーションが利用するアクセラレータを識別するアクセラレータ識別子を記憶する第１記憶部と、
前記アクセラレータを搭載する各スロットを識別する各スロット識別子に対応付けて、前記スロットに搭載される前記アクセラレータのアクセラレータ識別子を記憶する第２記憶部と、
前記ホストからアプリケーションの実行要求を受信した場合に、前記アプリケーションに対応するアクセラレータ識別子を前記第１記憶部から特定する第１特定部と、
前記第１特定部が特定したアクセラレータ識別子に対応するスロット識別子を前記第２記憶部から特定する第２特定部と、
前記第２特定部が特定したスロット識別子により識別されるスロットに対して、前記ホストに割当てるように前記振分部を制御し、前記アクセラレータを使用するアプリケーションの実行が終了した場合、前記アクセラレータが搭載されるスロットが割当てられたホストのプロセッサに、前記アクセラレータの利用を解除する解除処理の割込みを発生させる割当制御部と
を有することを特徴とする入出力装置。
【請求項８】
アクセラレータを搭載する複数のスロットと、
ホストからのアクセスを前記複数のスロットのいずれかに振り分ける振分部と、
アプリケーションを識別するアプリ識別子に対応付けて、前記アプリケーションが利用するアクセラレータを識別するアクセラレータ識別子を記憶する第１記憶部と、
前記アクセラレータを搭載する各スロットを識別する各スロット識別子に対応付けて、前記スロットに搭載される前記アクセラレータのアクセラレータ識別子を記憶する第２記憶部と、
前記ホストからアプリケーションの実行要求を受信した場合に、前記アプリケーションに対応するアクセラレータ識別子を前記第１記憶部から特定する第１特定部と、
前記第１特定部が特定したアクセラレータ識別子に対応するスロット識別子を前記第２記憶部から特定する第２特定部と、
前記第２特定部が特定したスロット識別子により識別されるスロットに対して、前記ホストに割当てるように前記振分部を制御し、前記ホストに割当てられていないスロットに搭載されるアクセラレータ、または、実行が終了したアプリケーションに利用されるアクセラレータについては、当該アクセラレータの電源を切って待機させる割当制御部と
を有することを特徴とする入出力装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセラレータ管理装置、アクセラレータ管理方法および入出力装置に関する。
【背景技術】
【０００２】
従来から、ＧＰＵ（Graphics  Processing  Unit）やＦＰＧＡ（Field−Programmable  Gate  Array）などをアクセラレータとして用いることで、処理機能を向上させることが知られている。ＧＰＵ等のアクセラレータは、特定のアプリケーションの性能を向上させることが期待されている。また、アクセラレータは、多種多様な種類が存在する。
【０００３】
一般的に、アプリケーションを実行する各ホストに、実行するアプリケーションが使用するアクセラレータを搭載させることで、処理性能を向上させることが行われている。この手法では、ホストのＣＰＵ（Central  Processing  Unit）とアクセラレータとが１対１で接続されるので、ＣＰＵが故障するとアクセラレータが使用できなくなるなど、アクセラレータの利用効率が悪い。近年では、ＰＣＩＥｘｐｒｅｓｓの拡張Ｉ／Ｏボックスなどにアクセラレータを複数搭載させ、複数のホストが、拡張Ｉ／Ｏボックスを経由してアクセラレータを使用することも行われている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００８−５４６０７２号公報
【特許文献２】特開昭６０−８３１６８号公報
【特許文献３】米国特許出願公開第２００４／０１７２４９４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、ホストが利用するアクセラレータを柔軟に変更するのが難しいという問題がある。
【０００６】
例えば、ＰＣＩＥｘｐｒｅｓｓの拡張Ｉ／Ｏボックスを用いた場合、拡張Ｉ／Ｏボックスのスロット位置とホストとの関係が静的に固定されている。つまり、ホストとスロットとが１対１に対応付けられている。
【０００７】
このため、スロットＡのアクセラレータＡを利用するホストＡが、他のアクセラレータを使用する場合には、スロットＡに搭載されるアクセラレータＡを抜いてから、所望の新たなアクセラレータを手動でスロットＡに搭載させることになる。さらに、ホストＡに対しても再起動等の処理を実行して、新たなアクセラレータを認識させることになる。また、ホストＡをスロットＢに対応付けを変更する際には、ホストＡを一旦シャットダウンした後、管理サーバから、拡張Ｉ／Ｏボックスのスイッチング制御を変更することになる。このように、ホストと拡張Ｉ／Ｏボックスのスロットとが静的に固定されていることから、ホストに対するアクセラレータの柔軟な付け替えが困難である。
【０００８】
１つの側面では、ホストが利用するアクセラレータを柔軟に付け替えることができるアクセラレータ管理装置、アクセラレータ管理方法および入出力装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
第１の案では、アクセラレータ管理装置は、アプリケーションを識別するアプリ識別子に対応付けて、前記アプリケーションが利用するアクセラレータを識別するアクセラレータ識別子を記憶する第１記憶部を有する。アクセラレータ管理装置は、前記アクセラレータを複数搭載する拡張ボックスの各スロットを識別する各スロット識別子に対応付けて、前記スロットに搭載される前記アクセラレータのアクセラレータ識別子を記憶する第２記憶部を有する。アクセラレータ管理装置は、ホストからアプリケーションの実行要求を受信した場合に、前記アプリケーションに対応するアクセラレータ識別子を前記第１記憶部から特定する第１特定部を有する。アクセラレータ管理装置は、前記第１特定部が特定したアクセラレータ識別子に対応するスロット識別子を前記第２記憶部から特定する第２特定部を有する。アクセラレータ管理装置は、前記第２特定部が特定したスロット識別子により識別されるスロットを前記ホストに割当てる割当制御部を有する。
【発明の効果】
【００１０】
ホストが利用するアクセラレータを柔軟に付け替えることができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係るシステムの全体構成例を示す図である。
【図２】図２は、プール管理サーバの構成を示す機能ブロック図である。
【図３】図３は、アクセラレータ紐付けＤＢに記憶される情報の例を示す図である。
【図４】図４は、アクセラレータ搭載情報ＤＢに記憶される情報の例を示す図である。
【図５】図５は、アクセラレータ割当処理の流れを示すフローチャートである。
【図６】図６は、アクセラレータ割当処理を説明する図である。
【図７】図７は、アクセラレータ解除処理の流れを示すフローチャートである。
【図８】図８は、アクセラレータ解除処理を説明する図である。
【図９】図９は、アクセラレータの新規追加を説明する図である。
【図１０】図１０は、ハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示するアクセラレータ管理装置、アクセラレータ管理方法および入出力装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１３】
［全体構成］
図１は、実施例１に係るシステムの全体構成例を示す図である。図１に示すように、このシステムは、サーバ５、サーバ６、サーバ７、プール管理サーバ２０、拡張Ｉ／Ｏボックス１０を有する。
【００１４】
サーバ５、サーバ６、サーバ７は、ＣＰＵ（Central  Processing  Unit）などのプロセッサを少なくとも１つ有し、アプリケーションを実行する装置である。各サーバは、ＰＣＩＥｘｐｒｅｓｓ（以降、「ＰＣＩｅ」と記載する場合がある）で、拡張Ｉ／Ｏボックス１０と接続される。また、各サーバは、ＬＡＮ（Local  Area  Network）８などのネットワークを介して、プール管理サーバ２０と接続される。各サーバは、ホットプラグに対応した装置である。
【００１５】
拡張Ｉ／Ｏボックス１０は、ＰＣＩｅスイッチ１１を有し、アクセラレータを複数搭載する装置である。ＰＣＩｅスイッチ１１は、アクセラレータを搭載するスロットを有し、各サーバとスロットとを接続するスイッチング回路などである。このＰＣＩｅスイッチ１１は、各サーバとプール管理サーバ２０の各々と、ＰＣＩｅで接続する。
【００１６】
実施例１では、ＰＣＩｅスイッチ１１は、スロットＡ、スロットＢ、スロットＣ、スロットＤの４つのスロットを有し、各スロットがアクセラレータを搭載する例で説明する。スロットＡは、ＧＰＵ（Graphics  Processing  Unit）１を搭載し、スロットＢは、ＧＰＵ２を搭載し、スロットＣは、ＦＰＧＡ（Field−Programmable  Gate  Array）１を搭載し、スロットＤは、ＦＰＧＡ２を搭載する。これは、あくまで一例であり、スロットの数やアクセラレータの種類を限定するものではない。例えば、アクセラレータとして、プログラムを格納したフラッシュメモリや、ＣＰＵコアを有するデバイス等を用いることもできる。
【００１７】
プール管理サーバ２０は、複数のサーバが共有できるように、アクセラレータをプール化する管理装置である。具体的には、プール管理サーバ２０は、アプリケーションを識別するアプリ識別子に対応付けて、アプリケーションが利用するアクセラレータを識別するアクセラレータ識別子を記憶する。また、プール管理サーバ２０は、拡張Ｉ／Ｏボックス１０の各スロットを識別する各スロット識別子に対応付けて、スロットに搭載されるアクセラレータのアクセラレータ識別子を記憶する。そして、プール管理サーバ２０は、いずれかのサーバからアプリケーションの実行要求を受信した場合に、アプリケーションに対応するアクセラレータ識別子を特定する。さらに、プール管理サーバ２０は、特定したアクセラレータ識別子に対応するスロット識別子を特定する。その後、プール管理サーバ２０は、特定したスロット識別子により識別されるスロットを、アプリケーションの実行を要求したサーバに割当てる。
【００１８】
このように、プール管理サーバ２０は、拡張Ｉ／Ｏボックス１０のスロットとアクセラレータの紐付け、及び、アプリケーションとアクセラレータの紐付けを保持する。そして、プール管理サーバ２０は、アプリケーションを実行するサーバに、アプリケーションが使用するアクセラレータを動的に割当てる。この結果、サーバが利用するアクセラレータを柔軟に付け替えることができる。
【００１９】
［プール管理サーバの構成］
次に、プール管理サーバ２０の構成について説明する。なお、図１に示したサーバは、一般的なサーバと同様の構成を有し、拡張Ｉ／Ｏボックス１０も一般的な拡張Ｉ／Ｏボックスと同様の構成を有するので、それぞれの詳細な説明は省略する。
【００２０】
図２は、プール管理サーバの構成を示す機能ブロック図である。図２に示すように、プール管理サーバ２０は、通信制御部２１、ボックス接続部２２、アクセラレータ紐付けＤＢ２３、アクセラレータ搭載情報ＤＢ２４、スキャン実行部２５、アクセラレータ特定部２６、スロット特定部２７、割当制御部２８を有する。プール管理サーバ２０は、拡張Ｉ／Ｏボックス１０に内蔵されていてもよい。
【００２１】
なお、アクセラレータ紐付けＤＢ２３、アクセラレータ搭載情報ＤＢ２４は、メモリなどの記憶装置に設けられる。スキャン実行部２５、アクセラレータ特定部２６、スロット特定部２７、割当制御部２８は、ＣＰＵなどのプロセッサが実行する処理部である。
【００２２】
通信制御部２１は、各サーバとの通信を制御する処理部である。例えば、通信制御部２１は、サーバ５からアプリケーションの実行要求やアプリケーションの終了通知を受信する。また、通信制御部２１は、サーバ５に対して、アプリケーションの実行指示を送信する。
【００２３】
ボックス接続部２２は、拡張Ｉ／Ｏボックス１０との通信を制御する処理部である。例えば、ボックス接続部２２は、スイッチ設定変更の指示、拡張Ｉ／Ｏボックス１０の各スロットのスキャン指示、省電力モードへの移行指示、省電力モードからの復帰指示などを拡張Ｉ／Ｏボックス１０に送信する。また、ボックス接続部２２は、スキャン結果等を受信する。
【００２４】
アクセラレータ紐付けＤＢ２３は、アプリケーションを識別するアプリ識別子に対応付けて、アプリケーションが利用するアクセラレータを識別するアクセラレータ識別子を記憶する。図３は、アクセラレータ紐付けＤＢに記憶される情報の例を示す図である。図３に示すように、アクセラレータ紐付けＤＢ２３は、「アプリ、アクセラレータ」を対応付けて記憶する。
【００２５】
ここで記憶される「アプリ」は、アプリケーションを識別するアプリ識別子であり、例えばアプリケーションの名称等が設定される。「アクセラレータ」は、アプリケーションが利用するアクセラレータを識別するアクセラレータ識別子であり、例えばアクセラレータの名称等が設定される。例えば、図３は、ビデオ編集を実行するアプリケーションは、アクセラレータとしてＧＰＵ１を使用できることを示している。同様に、オンラインゲームを実行するアプリケーションは、アクセラレータとしてＦＰＧＡ１を使用できることを示している。なお、ここに記憶される情報は、管理者等によって更新される。
【００２６】
アクセラレータ搭載情報ＤＢ２４は、拡張Ｉ／Ｏボックス１０の各スロットを識別する各スロット識別子に対応付けて、スロットに搭載されるアクセラレータのアクセラレータ識別子を記憶する。図４は、アクセラレータ搭載情報ＤＢに記憶される情報の例を示す図である。図４に示すように、アクセラレータ搭載情報ＤＢ２４は、「Ｉ／Ｏスロット、アクセラレータ、状態」を対応付けて記憶する。
【００２７】
ここで記憶される「Ｉ／Ｏスロット」は、拡張Ｉ／Ｏボックス１０のスロットを識別する識別子であり、例えばスロットの名称等が設定される。「アクセラレータ」は、アプリケーションが利用するアクセラレータを識別するアクセラレータ識別子であり、例えばアクセラレータの名称等が設定される。例えば、図４は、スロットＡは、ＧＰＵ１を搭載し、ＧＰＵ１は現在アプリケーションに使用されておらず待機中であることを示す。同様に、スロットＣは、ＦＰＧＡ１を搭載し、ＦＰＧＡ１は現在サーバ５で実行中のアアプリケーションに使用されていることを示す。なお、ここで記憶される情報は、スキャン実行部２５によって更新される。
【００２８】
スキャン実行部２５は、拡張Ｉ／Ｏボックス１０の各スロットをスキャンして、各スロットに搭載されるアクセラレータを特定する処理部である。例えば、スキャン実行部２５は、各スロットをスキャンして各スロットが搭載するアクセラレータの名称を収集し、スロット識別子とアクセラレータの名称とを対応付けて、アクセラレータ搭載情報ＤＢ２４に格納する。
【００２９】
また、スキャン実行部２５は、定期的にスキャンを実行して、アクセラレータ搭載情報ＤＢ２４を更新する。このようにすることで、スキャン実行部２５は、新規に追加されたアクセラレータを特定することができる。また、スキャン実行部２５は、スロットに搭載されるアクセラレータの変更等を追従することができる。
【００３０】
アクセラレータ特定部２６は、いずれかのサーバからアプリケーションの実行要求を受信した場合に、アプリケーションに対応するアクセラレータ識別子をアクセラレータ紐付けＤＢ２３から特定する処理部である。具体的には、アクセラレータ特定部２６は、実行されたアプリケーションが使用できるアクセラレータを特定する。
【００３１】
例えば、アクセラレータ特定部２６は、サーバ５からビデオ編集のアプリケーションが実行された場合、アクセラレータ紐付けＤＢ２３を参照し、ビデオ編集に対応付けられているアクセラレータとしてＧＰＵ１を特定する。そして、アクセラレータ特定部２６は、特定したＧＰＵ１をスロット特定部２７に通知する。なお、アクセラレータ特定部２６は、実行が要求されたアプリケーションに対応するアクセラレータ識別子が存在しない場合、アクセラレータを割当てることなく、サーバ５に対してアプリケーションの実行を指示する。
【００３２】
スロット特定部２７は、アクセラレータ特定部２６が特定したアクセラレータ識別子に対応するスロット識別子をアクセラレータ搭載情報ＤＢ２４から特定する処理部である。具体的には、スロット特定部２７は、アプリケーションが利用するアクセラレータの搭載位置を特定する。
【００３３】
例えば、スロット特定部２７は、アクセラレータ特定部２６からＧＰＵ１が通知された場合、アクセラレータ搭載情報ＤＢ２４を参照し、通知されたＧＰＵ１に対応付けられているＩ／Ｏスロットを特定する。このとき、スロット特定部２７は、状態が待機中であるＩ／Ｏスロットを特定する。また、スロット特定部２７は、特定したＩ／Ｏスロットの状態がすべて使用中である場合には、いずれかのＩ／Ｏスロットが待機中になるまで待機する。例えば、スロット特定部２７は、特定したＩ／Ｏスロットとして、スロットＡを割当制御部２８に通知する。
【００３４】
割当制御部２８は、設定制御部２８ａと解除制御部２８ｂとを有し、アプリケーションに対してアクセラレータの割当や、アプリケーションに対するアクセラレータの割当を解除する処理部である。
【００３５】
設定制御部２８ａは、スロット特定部２７が特定したスロット識別子により識別されるスロットを、アプリケーションの実行を要求したサーバ５に割当てる処理部である。上記例で説明すると、設定制御部２８ａは、スロット特定部２７から通知されたスロットＡと、アプリケーションの実行を要求したサーバ５とを対応付ける指示を、ＰＣＩｅスイッチ１１に出力する。この指示を受信したＰＣＩｅスイッチ１１は、スイッチング回路等の設定を変更して、スロットＡとサーバ５とを接続する。
【００３６】
また、設定制御部２８ａは、スロットＡを割当てたサーバ５のプロセッサに、スロットＡに搭載されるアクセラレータを認識させる認識処理の割込みを発生させる。具体的には、設定制御部２８ａは、サーバ５が有するプロセッサのうち未使用にプロセッサに対して割り込みを発生させて、ＨｏｔＡｄｄを実行させる。その後、設定制御部２８ａは、ＬＡＮ８経由で、サーバ５にアプリケーションの実行指示を送信する。この結果、サーバ５は、ＰＣＩｅスイッチ１１のスロットＡに搭載されるＧＰＵ１に接続することができ、ＧＰＵ１を用いてプリケーションを実行する。
【００３７】
また、設定制御部２８ａは、サーバ５へのアクセラレータの割当が完了すると、アクセラレータ搭載情報ＤＢ２４を更新する。具体的には、設定制御部２８ａは、サーバ５に割当てたスロットＡに搭載されるアクセラレータの状態を「待機中」から「使用中（サーバ５）」に変更する。また、設定制御部２８ａは、サーバ５のアプリケーション「ビデオ編集」に「スロットＡ」を割当てたことを、メモリ等に保持させる。
【００３８】
図２に戻り、解除制御部２８ｂは、アプリケーションの実行が終了した場合に、当該アプリケーションが使用していたアクセラレータを解放する処理部である。例えば、解除制御部２８ｂは、サーバ５から「ビデオ編集」が終了したことが通知されると、メモリ等を参照し、「ビデオ編集」に割当てられたスロットがスロットＡであることを特定する。
【００３９】
そして、解除制御部２８ｂは、「ビデオ編集」を実行するサーバ５のプロセッサに、アクセラレータの利用を解除する解除処理の割込みを発生させる。具体的には、解除制御部２８ｂは、「ビデオ編集」を実行していたプロセッサに対して割り込みを発生させて、ＨｏｔＲｅｍｏｖｅを実行させる。こうして、サーバ５は、ＰＣＩｅスイッチ１１のスロットＡに搭載されるＧＰＵ１の利用を解除する。
【００４０】
また、解除制御部２８ｂは、サーバ５に対するアクセラレータの割当が解除されると、アクセラレータ搭載情報ＤＢ２４を更新する。具体的には、解除制御部２８ｂは、サーバ５に割当てられていたスロットＡのアクセラレータの状態を「使用中（サーバ５）」から「待機中」に変更する。
【００４１】
また、解除制御部２８ｂは、サーバ５とスロットＡとの対応付けを解除する指示を、ＰＣＩｅスイッチ１１に出力する。この指示を受信したＰＣＩｅスイッチ１１は、スイッチング回路の設定を変更して、スロットＡとサーバ５との接続を解除する。
【００４２】
［アクセラレータ割当処理］
次に、図５と図６を用いて、アクセラレータ割当処理について説明する。ここでは、フローチャートとシステム構成図とを用いて、処理の流れを説明する。
【００４３】
（フローチャート）
図５は、アクセラレータ割当処理の流れを示すフローチャートである。図５に示すように、プール管理サーバ２０の設定制御部２８ａは、サーバからアプリケーションの実行要求を受信する（Ｓ１０１）。すると、設定制御部２８ａは、アクセラレータ紐付けＤＢ２３を検索し（Ｓ１０２）、アプリケーションに対応するアクセラレータが存在するか否かを判定する（Ｓ１０３）。
【００４４】
そして、設定制御部２８ａは、対応するアクセラレータが存在すると判定した場合（Ｓ１０３Ｙｅｓ）、アクセラレータ搭載情報ＤＢ２４を検索し（Ｓ１０４）、当該アクセラレータが拡張Ｉ／Ｏボックス１０に搭載されているか否かを判定する（Ｓ１０５）。
【００４５】
設定制御部２８ａは、対応するアクセラレータが拡張Ｉ／Ｏボックス１０に搭載されていると判定した場合（Ｓ１０５Ｙｅｓ）、アクセラレータ搭載情報ＤＢ２４を参照してＳ１０６を実行する。すなわち、設定制御部２８ａは、対応するアクセラレータのうち待機中のアクセラレータが１つ以上存在するか否かを判定する。
【００４６】
そして、設定制御部２８ａは、当該アクセラレータのうち待機中のアクセラレータが１つ以上存在すると判定した場合（Ｓ１０６Ｙｅｓ）、Ｓ１０７を実行する。すなわち、設定制御部２８ａは、待機中のアクセラレータを１つ特定し、特定したアクセラレータが搭載されるスロットをアクセラレータ搭載情報ＤＢ２４から特定する。そして、設定制御部２８ａは、特定したスロットと、アプリケーションの実行を要求したサーバとを接続するように、スイッチの構成を変更する指示を拡張Ｉ／Ｏボックス１０に出力する。
【００４７】
その後、設定制御部２８ａは、アクセラレータ搭載情報ＤＢ２４を更新する（Ｓ１０８）。すなわち、設定制御部２８ａは、アプリケーションの実行を要求したサーバに対応付けられたアクセラレータの状態を「使用中」に変更する。
【００４８】
さらに、設定制御部２８ａは、サーバと対応付けられたアクセラレータの状態を待機中から使用中に変更するために、省電力モードから復帰させる指示を当該アクセラレータに出力する（Ｓ１０９）。具体的には、設定制御部２８ａは、待機中であるアクセラレータは電源がオフの状態なので、アクセラレータに対して電源をオンにするように指示する。一例を挙げると、設定制御部２８ａは、電源をオンにするＷａｋｅＯｎコマンド等を出力する。
【００４９】
続いて、設定制御部２８ａは、スロットが割当てられたサーバのプロセッサに割り込みを発生させて、ＨｏｔＡｄｄの実行を指示する（Ｓ１１０）。その後、設定制御部２８ａは、サーバに対してアプリケーションの実行指示を出力する（Ｓ１１１）。
【００５０】
一方、Ｓ１０６において、設定制御部２８ａは、当該アクセラレータのうち待機中のアクセラレータが存在しないと判定した場合（Ｓ１０６Ｎｏ）、Ｓ１０３に戻って以降の処理を繰り返す。
【００５１】
また、設定制御部２８ａは、対応するアクセラレータが拡張Ｉ／Ｏボックス１０に搭載されていないと判定した場合（Ｓ１０５Ｎｏ）、アプリケーションにアクセラレータを割り与えることなく、アプリケーションの実行指示を出力する（Ｓ１１１）。同様に、設定制御部２８ａは、対応するアクセラレータが存在しないと判定した場合（Ｓ１０３Ｎｏ）、アプリケーションにアクセラレータを割り与えることなく、アプリケーションの実行指示を出力する（Ｓ１１１）。なお、Ｓ１０７からＳ１１０までの処理は、順番を入れ替えても構わない。
【００５２】
（具体例（システムの流れ））
図６は、アクセラレータ割当処理を説明する図である。図６に示すように、システム構成図は、図１と同様とする。
【００５３】
図６に示すように、サーバ５は、アプリケーション「ビデオ編集」の実行要求をプール管理サーバ２０に送信する（Ｓ２０１）。プール管理サーバ２０の設定制御部２８ａは、「ビデオ編集」に対応付けられるアクセラレータ「ＧＰＵ１」を特定し、さらに、「ＧＰＵ」を搭載するスロット「スロットＡ」を特定する（Ｓ２０２）。そして、プール管理サーバ２０の設定制御部２８ａは、サーバ５にスロットＡを対応付けるスイッチ変更指示と省電力モードからの復帰指示を、拡張Ｉ／Ｏボックス１０に送信する（Ｓ２０３）。
【００５４】
これを受けた拡張Ｉ／Ｏボックス１０のＰＣＩｅスイッチ１１は、サーバ５からスロットＡにアクセスできるように、スイッチング回路等を変更する（Ｓ２０４）。また、スロットＡのＧＰＵ１は、電源をＯＮにして省電力モードから復帰する（Ｓ２０５）。
【００５５】
また、プール管理サーバ２０の設定制御部２８ａが、ＰＣＩｅスイッチ１１に対してＨｏｔＡｄｄの割込みを出力する指示を送信し、ＰＣＩｅスイッチ１１が、サーバ５の該当プロセッサにＨｏｔＡｄｄを実行させる（Ｓ２０６）。
【００５６】
すると、サーバ５の該当プロセッサは、ＨｏｔＡｄｄを実行し、ＰＣＩｅスイッチ１１のアクセラレータをスキャンしてドライバをインストールする（Ｓ２０７）。
【００５７】
そして、プール管理サーバ２０の設定制御部２８ａは、アクセラレータ搭載情報ＤＢ２４において、サーバ５に割当てられたアプセラレータの状態を「待機中」から「使用中」に更新する（Ｓ２０８）。その後、設定制御部２８ａは、サーバ５に対して、「ビデオ編集」の実行指示を出力する（Ｓ２０９）。このようにして、サーバ５は、ＧＰＵ１をアクセラレータとして使用しながら、アプリケーション「ビデオ編集」を実行することができる。
【００５８】
［アクセラレータ解除処理］
次に、図７と図８を用いて、アクセラレータ解除処理について説明する。ここでは、フローチャートとシステム構成図とを用いて、処理の流れを説明する。
【００５９】
（フローチャート）
図７は、アクセラレータ解除処理の流れを示すフローチャートである。図７に示すように、プール管理サーバ２０の解除制御部２８ｂは、サーバ５のプロセッサからアプリケーションの終了通知を受信する（Ｓ３０１）。
【００６０】
すると、解除制御部２８ｂは、アクセラレータ搭載情報ＤＢ２４を検索し（Ｓ３０２）、当該アプリケーションが使用していたアクセラレータが拡張Ｉ／Ｏボックス１０に存在するか否かを判定する（Ｓ３０３）。すなわち、解除制御部２８ｂは、使用中のアクセラレータが存在するか否かを判定する。
【００６１】
そして、解除制御部２８ｂは、該当するアクセラレータが拡張Ｉ／Ｏボックス１０に存在すると判定した場合（Ｓ３０３Ｙｅｓ）、サーバのプロセッサに割り込みを発生させて、ＨｏｔＲｅｍｏｖｅの実行を指示する（Ｓ３０４）。
【００６２】
続いて、解除制御部２８ｂは、サーバが使用していたアクセラレータの状態を使用中から待機中に変更するために、省電力モードへの移行指示を当該アクセラレータに出力する（Ｓ３０５）。
【００６３】
そして、解除制御部２８ｂは、当該アクセラレータを搭載するスロットと、アプリケーションの実行を要求したサーバとの接続を解除するように、スイッチの構成を変更する指示を拡張Ｉ／Ｏボックス１０に出力する（Ｓ３０６）。
【００６４】
その後、解除制御部２８ｂは、アクセラレータ搭載情報ＤＢ２４を更新する（Ｓ３０７）。すなわち、解除制御部２８ｂは、アプリケーションの実行を要求したサーバに対応付けられていたアクセラレータの状態を「待機中」に変更する。
【００６５】
一方、Ｓ３０３において、解除制御部２８ｂは、該当するアクセラレータが拡張Ｉ／Ｏボックス１０に存在しないと判定した場合（Ｓ３０３Ｎｏ）、処理を終了する。なお、Ｓ３０４からＳ３０７までの処理は、順番を入れ替えても構わない。
【００６６】
（具体例（システムの流れ））
図８は、アクセラレータ解除処理を説明する図である。図８に示すように、システム構成図は、図１と同様とする。
【００６７】
図８に示すように、サーバ５は、アプリケーション「ビデオ編集」の終了通知をプール管理サーバ２０に送信する（Ｓ４０１）。プール管理サーバ２０の解除制御部２８ｂは、「ビデオ編集」に対応付けられるアクセラレータ「ＧＰＵ１」を特定し、さらに、「ＧＰＵ」を搭載するスロット「スロットＡ」を特定する（Ｓ４０２）。
【００６８】
そして、プール管理サーバ２０の解除制御部２８ｂは、サーバ５とスロットＡとの対応付けを解除する指示と省電力モードへの移行指示とを、拡張Ｉ／Ｏボックス１０に送信する（Ｓ４０３）。
【００６９】
すると、拡張Ｉ／Ｏボックス１０のＰＣＩｅスイッチ１１は、サーバ５のプロセッサに割込みを発生させて、当該プロセッサにＨｏｔＲｅｍｏｖｅを実行させる（Ｓ４０４）。そして、サーバ５のプロセッサは、実行が終了したアプリケーションが使用していたドライバをアンインストールする（Ｓ４０５）。
【００７０】
また、ＰＣＩｅスイッチ１１は、サーバ５からスロットＡにアクセスできないように、スイッチング回路等を変更する（Ｓ４０６）。また、スロットＡのＧＰＵ１は、電源をＯＦＦにして省電力モードに移行する（Ｓ４０７）。
【００７１】
そして、プール管理サーバ２０の設定制御部２８ａは、アクセラレータ搭載情報ＤＢ２４において、サーバに割当てられていたアプセラレータの状態を「使用中」から「待機中」に更新する（Ｓ４０８）。このようにして、サーバ５は、アプリケーション「ビデオ編集」とともにＧＰＵ１を解放することができる。
【００７２】
上述したように、プール管理サーバ２０は、アプリケーション単位でアクセラレータをサーバに接続または切断することで、割当を最適化することができる、つまり、プール管理サーバ２０は、アプリケーションが実行されるときにアクセラレータを割当て、アプリケーションが終了したときにアクセラレータの割当てを解放することができる。この結果、サーバのプロセッサやアクセラレータの利用効率が向上する。また、サーバまたはサーバのプロセッサが故障した場合でも、アクセラレータへの影響を局所化できる。
【実施例２】
【００７３】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【００７４】
（アクセラレータの新規追加、削除）
例えば、プール管理サーバ２０は、拡張Ｉ／Ｏボックス１０を定期的にスキャンすることで、アクセラレータの新規追加や削除を検出することができる。図９は、アクセラレータの新規追加を説明する図である。図９に示すように、システム構成図は、図１と同様とする。
【００７５】
図９に示すように、プール管理サーバ２０のスキャン実行部２５は、拡張Ｉ／Ｏボックス１０のＰＣＩｅスイッチ１１をスキャンし（Ｓ５０１）、ＰＣＩｅスイッチ１１に新たに接続された新規デバイスを検出する（Ｓ５０２）。そして、スキャン実行部２５は、新たに検出されたデバイスの情報を収集する（Ｓ５０３）。例えば、スキャン実行部２５は、ベンダータイプ、デバイスタイプ、アクセラレータの名称等を収集する。ここでは、スキャン実行部２５は、スロットＥにＧＰＵ３が搭載されたことを検出する。
【００７６】
その後、スキャン実行部２５は、スロットＥとＧＰＵ３とを対応付けたエントリを、アクセラレータ搭載情報ＤＢ２４に生成する（Ｓ５０４）。このようにして、プール管理サーバ２０は、新規デバイスを検出することができる。
【００７７】
なお、スキャン実行部２５は、ＰＣＩｅスイッチ１１をスキャンすることで、削除されたデバイスを検出することができる。例えば、アクセラレータ搭載情報ＤＢ２４が図４の状態で、スキャン実行部２５がスロットＣに搭載されるデバイスが存在しないことを検出したとする。すると、スキャン実行部２５は、スロットＣに対応するエントリを、アクセラレータ搭載情報ＤＢ２４から削除する。こうすることで、スキャン実行部２５は、削除されたアクセラレータへの割当を停止することができる。
【００７８】
（拡張Ｉ／Ｏボックス）
実施例１では、拡張Ｉ／Ｏボックス１０とプール管理サーバ２０とが別々の装置である例で説明したが、これに限定されるものではなく、拡張Ｉ／Ｏボックス１０とプール管理サーバ２０とが同一の筐体で実現されていてもよい。例えば、拡張Ｉ／Ｏボックス１０とのＰＣＩｅスイッチ１１が、プール管理サーバ２０と同様の機能を有していてもよい。また、拡張Ｉ／Ｏボックス１０と内に、プール管理サーバ２０と同様の機能を実行するプロセッサを設けてもよい。
【００７９】
（アクセラレータ搭載情報）
実施例１では、設定制御部２８ａが、アプリケーションと当該アプリケーションが使用しているアクセラレータとの対応付けをメモリ等に保持させる例で説明したが、これに限定されるものではない。例えば、アクセラレータ搭載情報ＤＢ２４に、使用しているアプリケーションのアプリ識別子を示す「アプリ」のカラムを設けて、アクセラレータを使用しているアプリケーションを管理してもよい。具体的には、設定制御部２８ａは、アクセラレータ搭載情報ＤＢ２４の状態を更新する際に、上記「アプリ」に、アクセラレータを割当てたアプリケーションの識別子を格納する。
【００８０】
（システム）
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００８１】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００８２】
（ハードウェア構成）
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することができる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。
【００８３】
図１０は、ハードウェア構成例を示す図である。図１０に示すように、プール管理サーバ１００は、ＣＰＵ１０２、入力装置１０３、出力装置１０４、通信インタフェース１０５、媒体読取装置１０６、ＨＤＤ（Hard  Disk  Drive）１０７、ＲＡＭ（Random  Access  Memory）１０８を有する。また、図８に示した各部は、バス１０１で相互に接続される。
【００８４】
入力装置１０３は、マウスやキーボードであり、出力装置１０４は、ディスプレイなどであり、通信インタフェース１０５は、ＮＩＣ（Network  Interface  Card）などのインタフェースである。ＨＤＤ１０７は、アクセラレータ管理プログラムとともに、図３や図４で説明した各テーブル等を記憶する。記録媒体の例としてＨＤＤ１０７を例に挙げたが、ＲＯＭ（Read  Only  Memory）、ＲＡＭ、ＣＤ−ＲＯＭ等の他のコンピュータ読み取り可能な記録媒体に各種プログラムを格納しておき、コンピュータに読み取らせることとしてもよい。なお、記録媒体を遠隔地に配置し、コンピュータが、その記憶媒体にアクセスすることでプログラムを取得して利用してもよい。また、その際、取得したプログラムをそのコンピュータ自身の記録媒体に格納して用いてもよい。
【００８５】
ＣＰＵ１０２は、アクセラレータ管理プログラムを読み出してＲＡＭ１０８に展開することで、図２等で説明した各機能を実行するアクセラレータ管理プロセスを動作させる。すなわち、スキャン実行部２５、アクセラレータ特定部２６、スロット特定部２７、割当制御部２８を実行する。このようにプール管理サーバ１００は、プログラムを読み出して実行することでアクセラレータ管理方法を実行する情報処理装置として動作する。
【００８６】
また、プール管理サーバ１００は、媒体読取装置１０６によって記録媒体からアクセラレータ管理プログラムを読み出し、読み出されたアクセラレータ管理プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、プール管理サーバ１００によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
【符号の説明】
【００８７】
２０  プール管理サーバ
２１  通信制御部
２２  ボックス接続部
２３  アクセラレータ紐付けＤＢ
２４  アクセラレータ搭載情報ＤＢ
２５  スキャン実行部
２６  アクセラレータ特定部
２７  スロット特定部
２８  割当制御部
２８ａ  設定制御部
２８ｂ  解除制御部
【図１】
0005884578.tif 000002
【図２】
0005884578.tif 000003
【図３】
0005884578.tif 000004
【図４】
0005884578.tif 000005
【図５】
0005884578.tif 000006
【図６】
0005884578.tif 000007
【図７】
0005884578.tif 000008
【図８】
0005884578.tif 000009
【図９】
0005884578.tif 000010
【図１０】
0005884578.tif 000011