(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-04
(45)【発行日】2024-03-12
(54)【発明の名称】サーバ内の仮想ドロワー
(51)【国際特許分類】
G06F 15/177 20060101AFI20240305BHJP
G06F 15/173 20060101ALI20240305BHJP
【FI】
G06F15/177 A
G06F15/173 685S
(21)【出願番号】P 2022529371
(86)(22)【出願日】2020-11-23
(86)【国際出願番号】 IB2020061023
(87)【国際公開番号】W WO2021105845
(87)【国際公開日】2021-06-03
【審査請求日】2023-04-24
(32)【優先日】2019-11-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】シュタインマッハ-ブロウ、ブルクハルト
(72)【発明者】
【氏名】ヒュールス、ハラルド
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2017-199369(JP,A)
【文献】特表2006-507561(JP,A)
【文献】特開2011-81462(JP,A)
【文献】特表2019-518260(JP,A)
【文献】米国特許出願公開第2019/0028342(US,A1)
【文献】米国特許出願公開第2015/0223337(US,A1)
【文献】特開2003-271569(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/177
G06F 15/173
(57)【特許請求の範囲】
【請求項1】
コンピュータ実施方法であって、
複数の物理処理ユニットの各々のインデックス番号を受け取ることであって、前記複数の物理処理ユニットの各々が、複数のスイッチ・チップの各々とリーフ・スパイン・トポロジで通信可能に結合されている、前記受け取ることと、
前記複数の物理処理ユニットの少なくとも1つの物理処理ユニットの各インデックス番号と第1の仮想ドロワーのインデックスとの間の関連付けを示す仮想ドロワー・テーブル内のエントリを更新することにより、前記少なくとも1つの物理処理ユニットを前記第1の仮想ドロワーに割り当てることと、
前記仮想ドロワー・テーブルに基づいてドロワー管理機能を実施することと、を含むコンピュータ実施方法。
【請求項2】
前記仮想ドロワー・テーブルが、仮想ドロワー・インデックスを物理処理ユニット・インデックスにマッピングするV2Cテーブル、または、物理処理ユニット・インデックスを仮想ドロワー・インデックスにマッピングするC2Vテーブルの少なくとも一方を含む、請求項1に記載のコンピュータ実施方法。
【請求項3】
実行されるべき作業負荷の要件に基づいて、前記物理処理ユニットのサブセットを第2の仮想ドロワーに含めるために選択することと、
前記仮想ドロワー・テーブルを更新することにより、前記物理処理ユニットの前記選択されたサブセットを前記第2の仮想ドロワーに割り当てることと、
前記第2の仮想ドロワーに割り当てられた物理処理ユニットの前記サブセットを使用して前記作業負荷を実行することと、
をさらに含む、請求項1または2に記載のコンピュータ実施方法。
【請求項4】
複数の仮想ドロワーを備える論理パーティションを作成することをさらに含み、前記複数の仮想ドロワーの各々に、前記仮想ドロワー・テーブル内で、前記複数の物理処理ユニットのうち少なくとも1つの物理処理ユニットが割り当てられる、請求項1ないし3のいずれか一項に記載のコンピュータ実施方法。
【請求項5】
前記第1の仮想ドロワーが、前記物理処理ユニットの第1のサブセットを含み、前記コンピュータ実施方法が、
前記仮想ドロワー・テーブルを更新することにより、前記複数の物理処理ユニットの第2のサブセットを第2の仮想ドロワーに割り当てることをさらに含み、前記第2のサブセットの物理処理ユニットの数が、前記第1のサブセットの物理処理ユニットの数と等しくない、請求項1ないし4のいずれか一項に記載のコンピュータ実施方法。
【請求項6】
前記第1の仮想ドロワーの仮想ドロワー・インデックスを第2の物理処理ユニットのインデックスと関連付けるように、かつ、前記第1の仮想ドロワーの前記仮想ドロワー・インデックスと前記少なくとも1つの物理処理ユニットのインデックスとの関連付けを削除するように、前記仮想ドロワー・テーブルを更新することにより、前記第1の仮想ドロワーに割り当てられている前記少なくとも1つの物理処理ユニットを、前記第2の物理処理ユニットに置き換えることをさらに含む、請求項1ないし5のいずれか一項に記載のコンピュータ実施方法。
【請求項7】
前記少なくとも1つの物理処理ユニットを前記第1の仮想ドロワーに割り当てることが、
前記仮想ドロワー・テーブルを更新することにより、第1の基板上の第1の物理処理ユニットを前記第1の仮想ドロワーに割り当てることと、
前記仮想ドロワー・テーブルを更新することにより、第2の基板上の第2の物理処理ユニットを前記第1の仮想ドロワーに割り当てることと、
を含む、請求項1ないし6のいずれか一項に記載のコンピュータ実施方法。
【請求項8】
前記第1の仮想ドロワー内で、前記第1の仮想ドロワーのためのメモリ・アドレスが、前記第1の仮想ドロワーに割り当てられた前記少なくとも1つの物理処理ユニットにまたがって連続しかつインタリーブされるように、前記メモリ・アドレスをレイアウトすることをさらに含む、請求項1ないし7のいずれか一項に記載のコンピュータ実施方法。
【請求項9】
コンピュータ・システムであって、
複数の中央演算処理ユニット(CPU)基板であって、各CPU基板が、各インデックス番号を各々が有する1つまたは複数の物理CPUチップと、第1の複数の直交ダイレクト・コネクタとを含む、前記複数のCPU基板と、
複数のスイッチ・チップ(SC)基板であって、各SC基板が、少なくとも1つのスイッチ・チップと、第2の複数の直交ダイレクト・コネクタとを含み、前記第2の複数の直交ダイレクト・コネクタのうちの各前記直交ダイレクト・コネクタは、前記複数のCPU基板と前記複数のSC基板とが直交ダイレクト・トポロジで接続されるように、前記複数のCPU基板の各々にある前記第1の複数の直交ダイレクト・コネクタの直交ダイレクト・コネクタのうちの対応するものに接続するように構成されている、前記複数のSC基板と、
仮想ドロワー・テーブルを記憶するように構成されたメモリと、
前記メモリに通信可能に結合された処理ユニットであって、少なくとも1つの物理CPUチップの各インデックス番号と第1の仮想ドロワーのインデックスとの間の、前記仮想ドロワー・テーブル内の関連付けに基づいて、前記少なくとも1つの物理CPUチップが前記第1の仮想ドロワーに割り当てられるように、前記仮想ドロワー・テーブルを更新して前記関連付けを示すように構成された前記処理ユニットと、を備え、
前記処理ユニットが、前記仮想ドロワー・テーブルに基づいてドロワー管理機能を実施するように構成される、コンピュータ・システム。
【請求項10】
前記処理ユニットが、前記複数のCPU基板のうち1つにあるCPUチップである、請求項9に記載のコンピュータ・システム。
【請求項11】
前記仮想ドロワー・テーブルが、仮想ドロワー・インデックスを物理CPUチップ・インデックスにマッピングするV2Cテーブル、または、物理CPUチップ・インデックスを仮想ドロワー・インデックスにマッピングするC2Vテーブルの少なくとも一方を含む、請求項9または10に記載のコンピュータ・システム。
【請求項12】
前記処理ユニットがさらに、
1つまたは複数のCPU基板上の第1の複数の物理CPUチップを、第2の仮想ドロワーに含めるために選択することであって、前記第1の複数のCPUチップ内の物理CPUチップの数は、実行されるべき作業負荷の要件に基づく、前記選択することと、
前記仮想ドロワー・テーブルを更新することにより、前記選択した第1の複数の前記物理CPUチップを前記第2の仮想ドロワーに割り当てることと、
を行うように構成され、
前記作業負荷は、前記第2の仮想ドロワーに割り当てられた前記第1の複数の物理CPUチップを使用して実行される、請求項9ないし11のいずれか一項に記載のコンピュータ・システム。
【請求項13】
前記処理ユニットが、複数の仮想ドロワーを備える論理パーティションを作成するように構成され、前記複数の仮想ドロワーの各々に、前記仮想ドロワー・テーブル内で、少なくとも1つの物理CPUチップが割り当てられる、請求項9ないし12のいずれか一項に記載のコンピュータ・システム。
【請求項14】
前記第1の仮想ドロワーが、物理CPUチップの第1のサブセットを含み、
前記処理ユニットが、前記仮想ドロワー・テーブルを更新することにより、物理CPUチップの第2のサブセットを第2の仮想ドロワーに割り当てるように構成され、前記第2のサブセットの物理CPUチップの数が、前記第1のサブセットの物理CPUチップの数と等しくない、請求項9ないし13のいずれか一項に記載のコンピュータ・システム。
【請求項15】
前記処理ユニットが、
前記第1の仮想ドロワーの仮想ドロワー・インデックスを第2の物理CPUチップのインデックスと関連付けるように、かつ、前記第1の仮想ドロワーの前記仮想ドロワー・インデックスと前記少なくとも1つの物理CPUチップのインデックスとの関連付けを削除するように、前記仮想ドロワー・テーブルを更新することにより、前記第1の仮想ドロワーに割り当てられている前記少なくとも1つの物理CPUチップを、前記第2の物理CPUチップに置き換えるように構成される、請求項9ないし14のいずれか一項に記載のコンピュータ・システム。
【請求項16】
前記第1の仮想ドロワー内で、メモリ・アドレスが、前記第1の仮想ドロワーに割り当てられた前記少なくとも1つの物理CPUチップにまたがって連続し、かつインタリーブされる、請求項9ないし15のいずれか一項に記載のコンピュータ・システム。
【請求項17】
コンピュータ・プロセッサに、請求項1ないし8のいずれか一項に記載の方法を実施させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ・システムのドロワー管理に関し、特に仮想ドロワーを利用するドロワー管理に関する。
【背景技術】
【0002】
従来の大型サーバは、2つ以上の物理ドロワー(drawer)をケーブルで共につなぐことによってパッケージされ、または物理的に構築される。物理ドロワーは、1つまたは複数の中央演算処理ユニット(CPU)チップを収容することができる。通例、各CPUチップはメモリ・チップに接続され、各CPUチップは、PCIeコネクタなどの拡張カード用のコネクタを有する。また、各CPUチップは、他のCPUチップへの1つまたは複数の対称マルチ処理(SMP)リンクを有する。ドロワー内で、SMPリンクは、基板配線を使用して実装可能である。2つのドロワー間で、SMPリンクはケーブルを使用することができる。
【発明の概要】
【0003】
本開示の態様は、コンピュータ実施方法、コンピュータ・プログラム製品、およびシステムを含み得る。コンピュータ実施方法の一例は、複数の物理処理ユニットの各々のインデックス番号を受け取ることであって、複数の物理処理ユニットの各々が、複数のスイッチ・チップの各々とリーフ・スパイン(leaf-spine)・トポロジで通信可能に結合されている、受け取ることと、複数の物理処理ユニットの少なくとも1つの物理処理ユニットの各インデックス番号と第1の仮想ドロワーのインデックスとの間の関連付けを示す仮想ドロワー・テーブル内のエントリを更新することにより、少なくとも1つの物理処理ユニットを第1の仮想ドロワーに割り当てることと、仮想ドロワー・テーブルに基づいてドロワー管理機能を実施することと、を含む。
【0004】
図面は単に例示的な実施形態を描いており、したがって範囲を限定するものと解釈されるべきでないことを理解した上で、添付図面を使用して、例示的実施形態がさらなる具体性および詳細と共に説明される。
【図面の簡単な説明】
【0005】
【
図1】仮想ドロワーを利用する例示のコンピュータ・システムの一実施形態の図である。
【
図2】例示のコンピューティング・デバイスの一実施形態の高水準ブロック図である。
【
図3】
図1のコンピュータ・システムのための例示のリーフ・スパイン・トポロジの一実施形態の描写である。
【
図4】仮想ドロワーを管理する例示の方法の一実施形態を示すフローチャートである。
【発明を実施するための形態】
【0006】
一般的な慣習に従い、様々な記載される特徴は、実際の縮尺では描かれておらず、例示的実施形態に関連する特定の特徴を強調するように描かれている。
【0007】
以下の詳細な説明では、その一部をなす添付図面が参照され、添付図面には、説明のための特定の実施形態が例示として示される。しかし、他の実施形態が利用されてよく、また論理的、機械的、および電気的な変更がなされてよいことが理解されるべきである。さらに、図面の図および明細書に提示される方法は、個々のステップが行われ得る順序を限定するものとは解釈されるべきでない。したがって、以下の詳細な説明は、限定的な意味で読まれるべきでない。
【0008】
一部の従来のシステムでは、コンピュータ・システムは、複数の物理ドロワー(物理ブック、基板、島とも呼ばれる)を使用してパッケージされる。各物理ドロワーは、複数のコンピュータ処理ユニット(CPU)チップを収容する。例えば、一部の従来のシステムでは、各物理ドロワーが、CPUチップのクラスタを2つ含み、各クラスタに3つのCPUチップがある。一部のそのようなシステムでは、各CPUチップが、そのクラスタ内のその他のCPUチップおよびスイッチ・チップと通信可能に連結され、スイッチ・チップは、他の物理ドロワー内のスイッチ・チップと通信可能に連結される。他の従来のシステムは他のトポロジを含むこともあることが理解されるべきである(例えば、各ドロワーのCPUがより多いまたはより少ない、スイッチ・チップとCPUチップ間の異なる接続等)。しかし、当業者に知られるように、そのような従来のシステムは、特定のトポロジに関係なく、物理ドロワーの概念を管理機能のために利用する。例えば、論理パーティションは、複数のドロワーのすべてまたは一部を使用することができる。同様に、実行中の作業負荷を有する既存のパーティションが、追加的なドロワーを追加することができる。また、メモリ内のアドレスのレイアウトは通例、物理ドロワー・トポロジを使用する。特に、アドレスは、1つのドロワー内のCPUチップにまたがって連続し、かつインタリーブされる。さらに、物理ドロワーの概念は、信頼性・可用性・保守性(RAS)を実装するために使用することができる。これらに限定されないが、ソフトウェア・ライセンスや他のビジネス諸面などの他の管理機能も、物理ドロワーの概念を使用して実装され得る。
【0009】
しかし、物理ドロワーへの依拠は、これに限定されないが、サーバにとっての所与の作業負荷の性能などに対する制限も有する。例えば、物理ドロワーにまたがって作業負荷を実行することによる非効率性があり得る。特に、1つの物理ドロワーの中で接続されているCPUペアは、通例、物理ドロワーにまたがって接続されているCPUペアよりも高い帯域幅を有する。その結果、通例は、作業負荷を単一のドロワーに収めようとする努力がある。しかし、大型のサーバは、必ずしも単一の物理ドロワーに対応しない。よって、そのようなサーバ内の物理ドロワーは、サーバよりも小さい作業負荷に適合する。また、所与のサーバ・サイズについて、サーバ内の物理ドロワーの数は、物理パッケージングによって決まる。しかし、所与の作業負荷は、当該サーバに存在するよりも多いまたは少ない数の物理ドロワーを用いる方がより効率的に実行される可能性がある。さらに、物理ドロワーのサイズは、固定されており、パッケージングによって決まる。ソリューション・スタックの他の層内のソフトウェアまたはサービスは、パッケージングによって決まる固定された物理ドロワー・サイズよりも小さいまたは大きいドロワー・サイズで、向上した性能を有し得る。言い換えると、一部の作業負荷は、サーバの物理ドロワーに含まれるよりも少ないCPUチップおよびリソースで動作することが可能であり得、他の作業負荷は、サーバの物理ドロワーに含まれるよりも多いCPUチップおよびリソースでより良好に動作する。しかし、物理ドロワーのリソースのすべてよりも少ないリソースを作業負荷に使用することは効率的でなく、また、作業負荷を複数の物理ドロワーにまたがって分散することも、例えばそれらの物理ドロワーを互いに通信可能に結合するスイッチ・チップにおいて発生し得るボトルネックのために、非効率性を生じさせる。
【0010】
本明細書に記載される実施形態は、物理パッケージングからのドロワー概念の切り離しを可能にすることにより、物理ドロワーの制限に対処しつつ、管理機能のためのドロワー概念の有益な使用を可能にする。特に、本明細書に記載される実施形態は、仮想ドロワーの使用を可能にする。例えば、
図1は、仮想ドロワーを利用する例示のコンピュータ・システム100の一実施形態を示す。特に、
図1は、リーフ・スパイン・コンピュータ・システムまたはリーフ・スパイン・サーバの一例を示す。システム100は、複数のCPUチップ102(この例ではCP0~CP15と表記される)の各々が複数のスイッチ・チップ104(この例ではSC0~SC7と表記される)の各々と通信可能に連結される、リーフ・スパイン・トポロジを活用する。そのようにして、任意の2つ以上のCPUチップ102が互いと通信可能に結合され得る。各CPUチップ102は、一部の実施形態ではシングル・チップ・モジュール(SCM)であり、他の実施形態ではデュアル・チップ・モジュール(DCM)であり得る。
【0011】
コンピュータ・システム100は、従来のコンピュータ管理モジュールと同様に、システム100のための管理機能を実施するように構成されたコンピュータ管理モジュール108を含む。しかし、
図1の例示の実施形態のコンピュータ管理モジュール108は、仮想ドロワー・テーブル110を利用して仮想ドロワーの動的な作成/管理を管理するドロワー管理モジュール106を含む。例えば、ドロワー管理モジュール106は、CPUチップ102の1つまたは複数を、それぞれの仮想ドロワー内にグループ化することができる。
図1に示される例では、ドロワー管理モジュール106は、CPUチップ102のサブセットを、5つの仮想ドロワー、112-1...112-5(まとめて仮想ドロワー112と呼ぶ)にグループ化している。
図1で見て取れるように、仮想ドロワー112の各々は、同じ数のCPUチップ102を有する必要はない。特に、仮想ドロワー112は、仮想ドロワー112-3、112-4、および112-5のように単一のCPUチップ102を含むことも、または仮想ドロワー112-1および112-2のように複数のCPUチップ102を含むこともできる。一部の実施形態では、CPUチップ102のすべてが、単一の仮想ドロワー112に含まれ得る。よって、1つの仮想ドロワー内のCPUチップ102の数ならびに仮想ドロワー112の数は、例えばコンピュータ・システム100に割り当てられた作業負荷をより効率的に管理するために、異なる実施形態において変動し得る。
【0012】
また、LPAR114などの論理パーティション(LPAR)に、1つまたは複数の仮想ドロワー112が割り当てられることができる。よって、従来のシステムと同様に、ドロワーをLPARに追加することができる。しかし、仮想ドロワー112を物理パッケージングから切り離すことにより、上述のように、各仮想ドロワーが、異なる数のCPUチップ102を収容することができる。よって、例えばLPAR114は、3つの仮想ドロワー112-3...112-5を収容することができ、各仮想ドロワーは単一のCPUチップ102を収容している。
【0013】
さらに、物理パッケージングから切り離された仮想ドロワーを可能にすることにより、一部の実施形態では、所与の仮想ドロワーが、それぞれ異なる命令セット・アーキテクチャ(ISA)を利用するCPUチップ102を収容することができる。例えば、
図1では、仮想ドロワー112-2は、x86アーキテクチャを実装するCP9およびCP10と、z/Architectureを実装するCP7、CP4、およびCP14とを含む。よって、一部の実施形態では、所与の仮想ドロワー内の各CPUチップ102が同じISAを実装するのに対し、他の実施形態では、所与の仮想ドロワー内のCPUチップがそれぞれ異なるISAを実装することができる。このようにして、コンピュータ・システム100は、作業負荷の要件を満たす際の柔軟性の増大を可能にする。
【0014】
加えて、物理パッケージングから切り離された仮想ドロワーの使用は、故障回復および保守の柔軟性の増大を可能にする。例えば、仮想ドロワー内の所与のCPUチップ102が故障した場合、そのCPUチップ102は、別のCPUチップ102に置き換えることができる。例えば、現在仮想ドロワーに割り当てられていないCPUチップが故障したCPUチップに取って代わる、または別の仮想ドロワーのCPUチップが、故障したCPUチップに取って代わるために割り当てし直されることが可能である。また、CPUチップ102、SCチップ104、またはCPUチップ102とSCチップ104との間のリンクの故障が、物理ドロワーを用いるよりも効率的に緩和され得る。特に、そのような故障は、物理ドロワー内のすべてのCPUチップではなく、1つのみのCPUチップ102またはSCチップ104に影響する。また、CPUチップ102が電源を切られる保守(例えばハードウェアの交換のため)を行うために、コンピュータ管理モジュール108は、従来の物理ドロワーよりも細かい粒度で選択されたCPUチップ102の電源を切ることが可能であり、これは、必ずしも仮想ドロワー112全体が電源を切られる必要がないためである(例えば、仮想ドロワー112が、異なる基板上の複数のCPUチップ102を収容している場合)。
【0015】
CPUチップ102を仮想ドロワー112にグループ化するまたは割り当てることは、一部の実施形態では、1つの仮想ドロワー112内で、その仮想ドロワー112に割り当てられているCPUチップ102にまたがってアドレスが連続し、かつインタリーブされるように、メモリにアドレスをレイアウトすることを含む。すなわち、各CPUチップ102がメモリ・ストレージを含むことができ、ドロワー管理モジュール106は、総ストレージを単一の連続したアドレス空間として構成することができ、連続しているメモリ・ブロックのアドレスは、それぞれの仮想ドロワー112のCPUチップにわたってインタリーブされる。よって、所与の仮想ドロワー112内のCPUチップ102は同じ物理基板にない可能性があるにも関わらず、メモリ・アドレスのレイアウトは、依然として仮想ドロワー112内のCPUチップ102にまたがって連続し、かつインタリーブされる。
【0016】
さらに、コンピュータ管理モジュール108は、仮想ドロワー112の単位でCPUチップ102を管理し、CPUチップ102を管理者に提示することができる。よって、コンピュータ管理モジュール108は、物理ドロワーを利用する従来のコンピュータ管理モジュールと同様の管理機能を、仮想ドロワーを用いて実施することができる。例えば、仮想ドロワー112は、物理ドロワーを使用してRASを実装する方式と同様に、RASを実装するために使用され得る。
【0017】
ドロワー管理モジュール106は、上述のように1つまたは複数の仮想ドロワー・テーブル110の使用を通じて仮想ドロワー112を作成/管理する。1つの例示の仮想ドロワー・テーブルが、下に表1として示される。表1は、仮想ドロワーへの物理CPUの例示のマッピングを示している。よって、表1は、本明細書においてC2Vテーブルと呼ぶことがある。特に、表1は、
図1のCPUチップ102の例示のマッピングを示している。
【0018】
【0019】
表1の1番目の列は、各物理CPUチップ102のインデックスを示す。一部の実施形態では、1番目の列の値は表1に記憶されないことが理解されるべきである。代わりに、1番目の列の各値は、所与の物理CPUに対応するVドロワーおよびVCPUエントリに直接アクセスするために、「物理CPUインデックス」値が表1への行オフセットとして使用されることを表している。2番目の列は、仮想ドロワー・インデックスを示す。特に、各仮想ドロワーは、一意の仮想ドロワー・インデックスと共に構成される。例えば、
図1の仮想ドロワー112-1には、3の仮想ドロワー・インデックスが割り当てられている。
図1に示されるように、CPUチップCP0、CP1、CP15、CP3、CP5、およびCP6は、仮想ドロワー112-1に割り当てられている。よって、表1では、それらCPUチップの各々に対応する列2は、仮想ドロワー・インデックス3のエントリを含んでいる。同様に、仮想ドロワー112-2に含まれるCPUチップ102の各々には、仮想ドロワー・インデックス2が割り当てられている。仮想ドロワー112-3、112-4、および112-5には、それぞれ仮想インデックス15、13、および10が割り当てられている。よって、仮想ドロワー112-3、112-4、および112-5の各々に対応するCPUチップ102は、列2にある対応する仮想ドロワー・インデックスを含む。CPUチップCP2およびCP8は、仮想ドロワーに割り当てられていない。よって、CP2およびCP8の各々に対応する列2は、エントリを含んでいない。
【0020】
加えて、表1は、仮想CPUインデックスについての3番目の列を含む。すなわち、仮想ドロワー内で、各CPUチップ102に仮想CPUインデックスが割り当てられる。例えば、仮想ドロワー112-1は、6個のCPUチップ102を含む。よって、6個のCPUチップ102の各々に、連続した仮想CPUインデックスが割り当てられる。この例では、連続した仮想CPUインデックスは0で始まり、仮想ドロワー内の最後のCPUチップに仮想CPUインデックスが割り当てられるまで、1ずつ増分される。よって、この例示の仮想ドロワー112-1では、CP0に仮想CPU(VCPU)インデックス0が割り当てられ、CP1にVCPUインデックス1が割り当てられ、CP15にVCPUインデックス2が割り当てられ、CP3にVCPUインデックス3が割り当てられ、CP5にVCPUインデックス4が割り当てられ、CP6にVCPUインデックス5が割り当てられる。VCPUインデックスの同様の割り当てが、その他の仮想ドロワー112にも行われる。注意すべき点として、VCPUインデックスは所与の仮想ドロワー内で一意であるが、グローバルに一意ではない。すなわち、各仮想ドロワーは、例えばVCPUインデックス0を含むことができるが、所与の仮想ドロワーに対してVCPUインデックス0は1つしかない。VCPUインデックスは、所与の仮想ドロワー112内でCPUチップ102を編成し、識別することを助ける。
【0021】
表2は、ドロワー管理モジュール106によって利用され得る別の例示の仮想ドロワー・テーブルである。表2は、物理CPUへの仮想ドロワーの例示のマッピングを示している。よって、表2はV2Cテーブルと呼ぶことができる。表1と同様、表2は、
図1のCPUチップ102についての例示のマッピングを示している。
【0022】
【0023】
表2の1番目の列は、仮想ドロワー・インデックスを示す。表1と同様、一部の実施形態では、1番目の列の値は表2に記憶されないことが理解されるべきである。代わりに、1番目の列の各値は、所与の仮想ドロワーに対応するVCPU番号および物理CPUインデックス・エントリに直接アクセスするために、「Vドロワー・インデックス」値が表2への行オフセットとして使用されることを表している。一部の実施形態では、利用可能な仮想ドロワー(Vドロワー)インデックスの数は、CPUチップ102の数に等しい。そのようにして、1つのみのCPUチップ102を収容するように各仮想ドロワー112を構成することが可能である。しかし、表2に見られるように、1つまたは複数の仮想ドロワーが2つ以上のCPUチップ102を含む場合、Vドロワー・インデックスの一部は利用されない。表2の2番目の列は、仮想ドロワー内のCPUチップの数を示す。列2に続く列は、VCPUインデックスを示す。それら続く列の各行のエントリは、対応するCPUチップ102の物理CPUインデックスである。例えば、上記で表1に関して考察したように、仮想ドロワー3では、VCPU0のインデックスは物理CPUインデックス0(CP0)に対応する。
【0024】
よって、表1および表2は、ドロワー管理モジュール106が、仮想ドロワー112を編成、作成、および管理することを可能にする。実際、表1および表2のエントリを調整することにより、ドロワー管理モジュール106は、既存の仮想ドロワーを更新する、新しい仮想ドロワーを作成する、または仮想ドロワーを削除することが可能である。表1および表2は例としてのみ提供され、他の実施形態では、表1および表2は異なるように構成され得ることが理解されるべきである。さらに、一部の実施形態では、ドロワー管理モジュール106は、C2VテーブルとV2Cテーブルの両方を使用するように構成される。例えば、C2VテーブルとV2Cテーブル両方の使用を通じて、ドロワー管理モジュール106は、種々のシナリオにおいて効率的に情報を検索することが可能である。例えば、仮想ドロワー・インデックスが与えられた場合、ドロワー管理モジュール106は、V2Cテーブルを使用することによって対応する物理CPUのインデックスを特定することができる。同様に、物理CPUインデックスが与えられた場合、ドロワー管理モジュール106は、C2Vテーブルを使用して対応する仮想ドロワーを特定することができる。しかし、他の実施形態では、ドロワー管理モジュール106は、C2VテーブルまたはV2Cテーブルの一方のみを利用して仮想ドロワーを管理するように構成される。加えて、
図1および
図2は16個の物理CPUチップおよび8個のSCチップに関して考察されるが、他の実施形態は他の数の物理CPUチップまたは他の数のSCチップあるいはその両方を含み得ることが理解されるべきである。
【0025】
コンピュータ管理モジュール108およびドロワー管理モジュール106は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せとして実装され得る。例えば、一部の実施形態では、コンピュータ管理モジュール108およびドロワー管理モジュール106は、CPUチップ102の1つまたは複数で実行されるソフトウェアによって実装され得る。他の実施形態では、コンピュータ管理モジュール108およびドロワー管理モジュール106は、別個の処理ユニットで実行されるソフトウェアまたはファームウェアとして実装され得る。例えば、一部の実施形態では、コンピュータ管理モジュール108およびドロワー管理モジュール106は、インテリジェント・プラットフォーム管理インターフェース(IPMI)サブシステムのベースボード管理コントローラ(BMC)を利用するファームウェアとして実装される。コンピュータ管理モジュール108およびドロワー管理モジュール106を実装するように構成された1つの例示のコンピューティング・デバイスが、
図2に関して以下で説明される。
【0026】
図2は、例示のコンピューティング・デバイス200の一実施形態の高水準ブロック図である。
図2に示される例で、コンピューティング・デバイス200は、メモリ225、ストレージ230、相互接続(例えばバス)220、1つまたは複数のプロセッサ205(本明細書ではCPU205とも呼ぶ)、およびネットワーク・インターフェース215を含む。コンピューティング・デバイス200は、例としてのみ提供され、コンピューティング・デバイス200は他の実施形態では異なるように実装され得ることが理解されるべきである。例えば、他の実施形態では、
図2に示される構成要素の一部が省略される、または他の構成要素が含まれる、あるいはその両方であり得る。
【0027】
各CPU205は、メモリ225またはストレージ230あるいはその両方に記憶されたプログラミング命令を取り出して実行する。相互接続220は、CPU205、ストレージ230、ネットワーク・インターフェース215、およびメモリ225の間で、プログラミング命令などのデータを移動するために使用される。相互接続220は、1つまたは複数のバスを使用して実装され得る。CPU205は、様々な実施形態において、単一のCPU、複数のCPU、または複数の処理コアを有する単一のCPUであり得る。一部の実施形態では、プロセッサ205は、デジタル信号プロセッサ(DSP)であり得る。メモリ225は一般に、ランダム・アクセス・メモリ(例えば静的ランダム・アクセス・メモリ(SRAM)、動的ランダム・アクセス・メモリ(DRAM)、またはFlash)を表すように含まれる。ストレージ230は一般に、ハード・ディスク・ドライブ、ソリッド・ステート・デバイス(SSD)、取り外し可能メモリ・カード、光学ストレージ、またはフラッシュ・メモリ・デバイスなどの不揮発性メモリを表すように含まれる。代替の実施形態では、ストレージ230は、ストレージ・エリア・ネットワーク(SAN)デバイス、クラウド、またはネットワーク・インターフェース215に結合された通信ネットワークを介してコンピューティング・デバイス200に接続された他のデバイスに、置き換えられ得る。
【0028】
一部の実施形態では、メモリ225は命令210を記憶し、ストレージ230は、C2Vテーブル209およびV2Cテーブル211を記憶する。C2Vテーブル209およびV2Cテーブル211は、上記の表1および表2と同様に実装することができる。他の実施形態では、命令210、C2Vテーブル209およびV2Cテーブル211は、部分的にメモリ225に記憶され、部分的にストレージ230に記憶されるか、または、それらは全体がメモリ225にもしくは全体がストレージ230に記憶されるか、または、それらはネットワーク・インターフェース215を介してネットワークを通じてアクセスされる。
【0029】
実行されると、命令210は、CPU205に、上述のように仮想ドロワーを管理させる。特に命令210は、CPU205に、上述のコンピュータ管理モジュール108およびドロワー管理モジュール106を実装させる。コンピューティング・デバイス200の動作に関するさらなる詳細は、方法400との関連で下記でも説明される。
【0030】
さらに、上述のように、一部の実施形態では、
図2に示される構成要素およびデータの1つまたは複数は、本明細書に記載される機能を実行するために、プロセッサ205で実行される命令もしくは文、またはプロセッサ205で実行される命令もしくは文によって解釈実行される命令もしくは文を含む。他の実施形態では、
図2に示される構成要素の1つまたは複数が、プロセッサに基づくシステムの代わりにまたはそれに加えて、半導体デバイス、チップ、論理ゲート、回路、回路カード、または他の物理ハードウェア・デバイスあるいはそれらの組合せを介して、ハードウェアとして実装される。
【0031】
図3は、コンピュータ・システム100のための例示のリーフ・スパイン・パッケージング300の一実施形態の描写である。リーフ・スパイン・パッケージング300は、複数のCPU基板301-1...301-N(まとめてCPU基板301と呼ぶ)と、複数のSC基板303-1...303-M(まとめてSC基板303と呼ぶ)とを含む。図示の容易のために3つのCPU基板301および3つのSC基板303のみが示されるが、任意の好適な数のCPU基板301およびSC基板303が使用され得ることが理解されるべきである。さらに、コンピュータ・システム100のために、例示のパッケージング300は、8個のSC基板303および8個のCPU基板301を含む。よって、この例では、各SC基板303は1つのSCチップ304を含み、各CPU基板301は2つのCPUチップ302を含む。しかし、他の実施形態では他の構成が使用され得ることが理解されるべきである。例えば、一部の実施形態では、各CPU基板301は、1つのCPUチップ302を含む。そのような例では、16個のCPUチップが、16個のCPU基板301を使用する。また、一部の実施形態では、各SC基板303は、2つ以上のSCチップを含むことができる。例えば、一部のそのような実施形態では、各SC基板303は、2つのSCチップを含む。そのような実施形態では、
図3の例の8つのSC基板に代えて、4つのSC基板303が、例示のコンピュータ・システム100に使用され得る。
【0032】
図3の例における各SC基板303および各CPU基板301は、8個の直交ダイレクト・コネクタ307も含む。各CPU基板301上に含まれる直交ダイレクト・コネクタ307の数は、少なくとも、パッケージング300内のSC基板303の数に等しいことが理解されるべきである。同様に、各SC基板303に搭載される直交ダイレクト・コネクタ307の数は、少なくとも、パッケージング300内のCPU基板301の数に等しい。直交ダイレクト・コネクタ307は、各CPUチップ302が各SCチップ304と通信可能に結合されるように、SC基板303とCPU基板301とが直交ダイレクト・トポロジで接続されることを可能にする。
【0033】
リーフ・スパイン・パッケージング300は例として提供され、他の実施形態では他の構成が使用され得ることが理解されるべきである。例えば、各CPU基板301は従来のCPU基板と同様の構成要素(例えばメモリ・チップ、SMPリンク等)を含み得ることが理解されるべきである。一部の実施形態では、CPU基板301またはSC基板303あるいはその両方に、他の構成要素が含まれ得る。例えば、この実施形態では、各CPU基板301は、メモリ・チップ321を含む。しかし、他の実施形態では、各SC基板が、CPU基板301上のメモリ・チップ321に加えてまたはその代わりに、メモリ・チップを含むことができる。一部のそのような実施形態では、1つまたは複数のSC基板303上のメモリの少なくとも一部は、仮想ドロワーに割り当てられ得る。一部の実施形態では、ドロワー管理モジュール106によって構成される各仮想ドロワーは、一部の実施形態において、1つまたは複数のCPU基板301を含むことができる。各CPU基板301に複数のCPUチップ302が含まれる他の実施形態では、各仮想ドロワーは、1つまたは複数のCPUチップ302を含むことができる。よって、そのような実施形態のCPU基板301上の各CPUチップは、異なる仮想ドロワーに割り当てられ得る。
【0034】
図4は、仮想ドロワーを管理する例示の方法400の一実施形態を示すフローチャートである。方法400は、ドロワー管理モジュール106を用いて実装され得る。例えば、一部の実施形態では、方法400は、上記
図2のCPU205に対する命令210を実行することによって実装され得る。例示の方法400における動作の順序は、説明の目的で提供され、他の実施形態では方法が異なる順序で実行され得ることが理解されるべきである。同様に、他の実施形態では、一部の動作が省略される、または追加的な動作が含まれ得ることが理解されるべきである。
【0035】
ブロック402で、複数の物理処理ユニットの各々のインデックス番号が受け取られる。複数の物理処理ユニットの各々は、上述のように、複数のスイッチ・チップの各々とリーフ・スパイン・トポロジで通信可能に結合されている。インデックス番号は、当業者に知られる技術を使用して受け取られるまたは取得される。
【0036】
ブロック404で、複数の物理処理ユニットの少なくとも1つの物理処理ユニットの各インデックス番号と第1の仮想ドロワーのインデックスとの間の関連付けを示す仮想ドロワー・テーブル内のエントリを更新することにより、少なくとも1つの物理処理ユニットが、第1の仮想ドロワーに割り当てられる。本明細書で使用される場合、エントリを更新することは、仮想ドロワー・テーブル内の既存のエントリに変更を加えること、ならびに仮想ドロワー・テーブル内に新しいエントリを作成することの両方を含み得ることが理解されるべきである。さらに、仮想ドロワー・テーブルが現在存在していない場合、エントリを更新することは、仮想ドロワー・テーブルを作成し、そのテーブル内に新しいエントリを作成することを含み得る。加えて、上述のように、一部の実施形態では、2つの仮想ドロワーを使用することができる。よって、仮想ドロワー・テーブル内のエントリを更新することは、2つの仮想ドロワー・テーブル各々の中のそれぞれのエントリを更新することを含み得る。
【0037】
ブロック406で、仮想ドロワー・テーブルに基づいてドロワー管理機能が実施される。すなわち、上述のように、C2VテーブルおよびV2Cテーブルの一方または両方を使用して、ドロワー管理機能の性能を管理することができる。例えば、物理CPUのインデックスを与えられると、C2Vテーブルを使用して、対応する仮想ドロワーのインデックスを特定することができる。同様に、仮想ドロワーのインデックスを与えられると、V2Cテーブルを使用して、その仮想ドロワーの物理CPUのインデックスを特定することができる。また、仮想ドロワーの物理CPUのインデックスを与えられると、当該仮想ドロワーの物理CPUに対してまたはそれを使用して、所望のドロワー管理機能が行われ得る。
【0038】
いくつかの例示のドロワー管理機能が以下で考察される。ただし、下記で考察されるドロワー管理機能は、例としてのみ提供され、本明細書で論じられるそれらの例に代えてまたはそれに加えて、他のドロワー管理機能が行われ得ることが理解されるべきである。
【0039】
上述のように、仮想ドロワー・テーブルを使用した仮想ドロワーへの物理処理ユニットの割り当ては、仮想ドロワーの管理の柔軟性を可能にする。例えば、一部の実施形態では、実行されるべき作業負荷の要件に基づいて、物理処理ユニットのサブセットが、仮想ドロワーに含めるために選択され得る。よって、仮想ドロワーに含まれる処理ユニットの数が、作業負荷の特定の要件に基づいて選択されるので、作業負荷は、仮想ドロワーの処理ユニットによってより効率的に実行することができる。仮想ドロワーへの処理ユニットの割り当ては、ドロワー管理モジュールにより自動的に、またはユーザ入力装置を介して受け取られるユーザ入力に応答して、行われ得る。
【0040】
また、上述のように、異なる仮想ドロワーは、異なる数の処理ユニットを有することができる。例えば、一部の実施形態では、第1の仮想ドロワーは物理処理ユニットの第1のサブセットを含み、第2の仮想ドロワーに物理処理ユニットの第2のサブセットが割り当てられ、第2のサブセットの処理ユニットの数は、第1のサブセットの処理ユニットの数と等しくない。加えて、上述のように、一部の実施形態では、仮想ドロワーは単一の処理ユニットを含むことができる。さらに、複数の仮想ドロワーから1つの論理パーティションを作成することができ、各仮想ドロワーは、少なくとも1つの物理処理ユニットを含む。よって、仮想ドロワー・テーブルを使用してコンピュータ・システムを管理することができる(例えば、仮想ドロワー・テーブル内のCPU割り当てに基づいて、仮想ドロワーが電源遮断、電源投入、またはリブートされ得る)。また、仮想ドロワー・テーブルを使用してコンピュータ・システムの作業負荷を管理することができる。例えば、作業負荷を実行しているLPARに仮想ドロワーが追加される、もしくはそこから削除され得、または、仮想ドロワー・テーブルのエントリに基づいて、第1の仮想ドロワーに関連付けられたCPUから、第2の仮想ドロワーに関連付けられたCPUに作業負荷が移動され得、あるいはそれらの両方が行われ得る。
【0041】
加えて、仮想ドロワー・テーブルを使用することにより、上述のように、仮想ドロワーに割り当てられている処理ユニットが、別の処理ユニットのインデックス番号をその仮想ドロワーのインデックスと関連付け、かつ、その仮想ドロワーのインデックスと元の処理ユニットのインデックスとの間の関連付けを削除するように、仮想ドロワー・テーブルを更新することにより、当該別の処理ユニットに置き換えられることができる。さらに、上述のように、仮想ドロワーは、異なるCPU基板上の物理処理ユニットを含むことができる。例えば、仮想ドロワー・テーブルを更新することにより、第1の基板上の第1の物理処理ユニットが、第2の基板上の第2の物理処理ユニットと同じ仮想ドロワーに割り当てられ得る。
【0042】
よって、仮想ドロワー・テーブルの使用を通じて可能になる1つの例示のドロワー管理機能は、システムの容量を同時に増大する能力を提供することを含む。例えば、容量は、所与の仮想ドロワーにおいてより多くのCPUを同時に有効にすることにより、または仮想ドロワーを同時にLPARに追加して、より多くのCPU、より多くのメモリ、またはより多くの拡張デバイスあるいはそれらの組合せを有効にすることにより、増大することができる。追加のCPUは、本明細書に記載されるように、所与の仮想ドロワー上で有効にされる、または仮想ドロワー・テーブルの適当な修正を通じて同時にLPARに追加され得る。
【0043】
仮想ドロワー・テーブルの使用を通じて管理される別の例示のドロワー管理機能は、ドロワーの同時修理を含む。一部のシステムは、例えば、同時のドロワー修理のために最小限の物理ドロワー(例えば2つの物理ドロワー)を必要とする。仮想ドロワー・テーブルの使用を通じて、より小さい仮想ドロワーを構成することができ、それにより、同時のドロワー修理を行うために最小限で2つのドロワーというシステム要件を満たすことが容易になる。
【0044】
また、本明細書に記載されるように、アップグレートまたは修理のためにドロワーを削除する機能が、仮想ドロワー・テーブルを通じて管理され得る。例えば、本明細書において考察されるように、仮想ドロワー・テーブルの使用を通じて、物理ドロワーより細かい粒度で仮想ドロワーが構成され得る。よって、仮想ドロワー・テーブルの適当な修正を通じて、十分なリソースを利用可能にして、所与の仮想ドロワーに関連付けられた物理CPUがアップグレードまたは修理のために削除されるときに利用不可能になるリソースに対処することができる。よって、向上したドロワー可用性により、単一の仮想ドロワーに関連付けられたCPUを、アップグレードまたは修理のために同時に削除し、再インストールすることが可能になる。
【0045】
仮想ドロワー・テーブルに基づいて行われる別の例示のドロワー管理機能は、仮想ドロワーに関連付けられた物理CPUが削除されるときに入出力(I/Oデバイス)への接続性の損失を防ぐことを伴う。すなわち、CPUを削除することは、その物理CPUに接続されているI/Oデバイスが失われることを意味する。しかし、I/Oデバイスは、2つ以上のCPUへのI/O相互接続を有することがある。よって、複数のI/Oデバイスを含み、各I/Oデバイスが2つ以上のCPUに接続されている所与の仮想ドロワーについては、それらのI/Oデバイスに全体として接続するCPUの様々なサブセットがあり得る。仮想ドロワー・テーブルを修正して、顧客ニーズを満たすサブセットを選択することができる(例えばサービス・レベル同意を満たす、特定のタスクを行う等)。例えば、仮想ドロワー・テーブルの使用を通じて、削除されるCPUの数が最小にされ得る。物理ドロワーは、I/Oデバイスへの相互接続については、仮想ドロワー・テーブルによって管理される仮想ドロワーの使用を通じた場合と同じ柔軟性を提供しない。
【0046】
よって、上述のように、本明細書に記載される実施形態は、様々な管理機能のための仮想ドロワーの使用を可能にし、一方で、仮想ドロワーへの処理ユニットの割り当てを、仮想ドロワーの物理パッケージングから切り離す。
【0047】
本発明は、任意の可能な技術的詳細の統合レベルにあるシステム、方法、またはコンピュータ・プログラム製品あるいはそれらの組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるコンピュータ可読プログラム命令が記憶されている(1つまたは複数の)コンピュータ可読記憶媒体を含んでよい。
【0048】
コンピュータ可読記憶媒体は、命令実行デバイスが使用するための命令を保持・記憶することが可能な有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、これらに限定されないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、または前述の任意の好適な組合せであってよい。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、携帯型コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読出し専用メモリ(ROM)、消去可能プログラム可能読出し専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク読出し専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカードや、命令が記憶されている溝内の隆起構造などの機械的に符号化されたデバイス、および前述の任意の好適な組合せを含む。本明細書において使用されるコンピュータ可読記憶媒体は、電波または他の自由伝搬する電磁波、導波管もしくは他の伝送媒体を通って伝搬する電磁波(例えば光ファイバ・ケーブルを通る光パルス)、または電線を通じて伝送される電気信号のように、それ自体が一過性の信号であると解釈されるべきではない。
【0049】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークまたはワイヤレス・ネットワーク、あるいはそれらの組合せを介して、外部コンピュータまたは外部記憶装置にダウンロードされ得る。ネットワークは、銅伝送ケーブル、光学伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバ、あるいはそれらの組合せを含んでよい。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内部のコンピュータ可読記憶媒体に記憶するために転送する。
【0050】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、またはSmalltalk(R)、C++等のオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってよい。コンピュータ可読プログラム命令は、スタンドアロンのソフトウェア・パッケージとして、全体がユーザのコンピュータで実行される、一部がユーザのコンピュータで実行される、一部がユーザのコンピュータで実行され、一部がリモート・コンピュータで実行される、または全体がリモート・コンピュータもしくはサーバで実行されてもよい。後者のシナリオの場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)、もしくはワイド・エリア・ネットワーク(WAN)を含む任意種類のネットワークを通じてユーザのコンピュータに接続されてよく、または接続は外部コンピュータになされてもよい(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)。一部の実施形態では、例えば、プログラム可能論理回路、フィールド・プログラム可能ゲートアレイ(FPGA)、またはプログラム可能論理アレイ(PLA)を含む電子回路が、本発明の態様を実施するためにコンピュータ可読プログラム命令の状態情報を利用して電子回路を個別設定することにより、コンピュータ可読プログラム命令を実行してよい。
【0051】
本発明の態様は、本発明の実施形態に係る方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはそれらの両方を参照して本明細書に記載される。フローチャート図またはブロック図あるいはそれらの両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方の中のブロックの組合せは、コンピュータ可読プログラム命令によって実施され得ることが理解されよう。
【0052】
それらのコンピュータ可読プログラム命令は、コンピュータのプロセッサまたは他のプログラム可能データ処理装置を介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するための手段を作り出すように、コンピュータまたは他のプログラム可能データ処理装置のプロセッサに提供されて、マシンを作り出すものであってよい。それらのコンピュータ可読プログラム命令は、命令が記憶されているコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施する命令を含む製造品を構成するように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはそれらの組合せに特定の形で機能するように命令することができるものであってもよい。
【0053】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作の態様を実施するように、コンピュータ実施プロセスを作出するべく、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置または他のデバイスで一連の動作ステップを行わせるものであってもよい。
【0054】
図にあるフローチャートおよびブロック図は、本発明の様々な実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の各ブロックは、モジュール、セグメント、または命令の一部分を表し得、それらは、規定される論理機能を実施するための1つまたは複数の実行可能命令を含む。一部の代替実装形態では、ブロックに記される機能は、図に記される順序から外れて行われてよい。例えば、連続して示される2つのブロックが実際には、1つのステップとして、同時に実行される、実質的に同時に実行される、部分的にもしくは完全に時間的に重なり合う方式で実現されてよく、または、関係する機能に応じて、ブロックは、場合によっては逆の順序で行われてよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、規定される機能もしくは動作を行う、もしくは特殊目的ハードウェアとコンピュータ命令の組合せを実施する、特殊目的のハードウェアに基づくシステムによって実施され得ることに気が付かれよう。
【0055】
特定の実施形態が図示され、本明細書に記載されたが、当業者には、同じ目的を達成すると考えられる任意の構成が、示される特定の実施形態の代わりに使用されてよいことが認識されよう。したがって、本発明は特許請求の範囲およびその均等物によってのみ限定されることが明白に意図される。