IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7546669マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定
<>
  • 特許-マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定 図1
  • 特許-マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定 図2
  • 特許-マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定 図3
  • 特許-マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定 図4
  • 特許-マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定 図5
  • 特許-マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定 図6
  • 特許-マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定 図7
  • 特許-マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定 図8
  • 特許-マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定 図9
  • 特許-マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定 図10
  • 特許-マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定 図11
  • 特許-マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定 図12
  • 特許-マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定 図13
  • 特許-マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-29
(45)【発行日】2024-09-06
(54)【発明の名称】マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数の決定
(51)【国際特許分類】
   G06F 9/50 20060101AFI20240830BHJP
【FI】
G06F9/50 120Z
【請求項の数】 20
(21)【出願番号】P 2022528932
(86)(22)【出願日】2020-11-11
(65)【公表番号】
(43)【公表日】2023-01-26
(86)【国際出願番号】 IB2020060616
(87)【国際公開番号】W WO2021099891
(87)【国際公開日】2021-05-27
【審査請求日】2023-04-24
(31)【優先権主張番号】16/690,131
(32)【優先日】2019-11-21
(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)【発明者】
【氏名】グプタ、ローケーシュ、モハン
(72)【発明者】
【氏名】アシュ、ケヴィン
(72)【発明者】
【氏名】カロス、マシュー
(72)【発明者】
【氏名】グエン、チュン
(72)【発明者】
【氏名】ハーディー、クリント
(72)【発明者】
【氏名】レイサー、ルイス
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2018-147141(JP,A)
【文献】米国特許出願公開第2016/0335132(US,A1)
【文献】米国特許出願公開第2013/0024871(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
プロセッサ複合体のコアの中で実行するスレッドの数を決定するための、コンピュータ可読プログラム・コードが内部に具現化されたコンピュータ可読ストレージ媒体であって、前記コンピュータ可読プログラム・コードが、実行されたときに操作を実行し、前記操作が、
前記プロセッサ複合体の前記コア上で実行中のスレッドに基づいて第1の処理測定値を決定することであり、それぞれのコアが、複数のスレッドを独立して実行するための回路を含む、前記決定すること、
前記第1の処理測定値に基づいて、前記コア上で実行するスレッドの数を決定すること、
前記プロセッサ複合体の前記コア上で実行中の前記スレッドに基づいて第2の処理測定値を決定すること、
前記第2の処理測定値に基づいて、その結果として調整されたスレッドの数を与える、決定された前記実行するスレッドの数に対する調整を決定すること、および
前記コア上の前記調整されたスレッドの数を利用して命令を実行すること
を含
前記コア上の前記調整されたスレッドの数を利用して命令を実行することが、
前記コア上の前記調整されたスレッドの数に基づいて、それぞれのコア上で実行するスレッドの数を決定することであり、決定されたそれぞれのコア上で実行する前記スレッドの数が、それぞれのコア上で独立して実行するために使用可能なスレッドの数よりも少ない、前記決定すること、および
決定されたそれぞれのコア上の前記スレッドの数上でのみ実行するようにタスクをスケジューリングし、複数の前記コア上の少なくとも1つのスレッドをアイドルのままにすること
を含む、コンピュータ可読ストレージ媒体
【請求項2】
前記第1の処理測定値が、前記プロセッサ複合体の前記コア上で実行中のスレッドからの入力/出力(I/O)操作の数を含み、前記第2の処理測定値が、前記コアの中で実行中の前記スレッドがリソースに対するロックを獲得するために待機するロック・スピン時間を含む、請求項1に記載のコンピュータ可読ストレージ媒体
【請求項3】
前記実行するスレッドの数を前記決定することが、
I/O操作数の複数の範囲と前記コア上で実行するために使用可能なスレッドの最大数に対する調整との関連を保持すること、
決定された前記I/O操作の数を含むI/O操作数の範囲に関連付けられた、前記スレッドの最大数に対する調整を決定すること、および
前記コア上で実行するために使用可能な前記スレッドの最大数に、決定された前記調整を適用することによって、決定された前記スレッドの数を計算すること
を含む、請求項2に記載のコンピュータ可読ストレージ媒体
【請求項4】
前記調整が、前記スレッドの最大数をある百分率だけ低減させることを含み、I/O操作数のより高い範囲に対しては前記ある百分率が低下する、請求項3に記載のコンピュータ可読ストレージ媒体
【請求項5】
決定された前記ロック・スピン時間に基づいて、決定された前記スレッドの数に対する前記調整を前記決定することが、
ロック・スピン時間の範囲と決定された前記スレッドの数に対する調整との関連を保持すること、および
決定された前記ロック・スピン時間を含むロック・スピン時間の範囲に関連付けられた、決定された前記スレッドの数に対する調整を決定すること
を含む、請求項2に記載のコンピュータ可読ストレージ媒体
【請求項6】
決定された前記スレッドの数に対する前記調整が、決定された前記スレッドの数をある百分率だけ低減させることを含み、ロック競合時間のより高い範囲に対しては前記ある百分率が増大する、請求項5に記載のコンピュータ可読ストレージ媒体
【請求項7】
前記操作が、
それぞれのコアについて、決定された前記実行するスレッドの数に等しい数のスレッドを、タスクを受け取るために使用可能であるとして示し、使用可能であると示されていない前記コアの中のスレッドを、アイドルであり、タスクを実行するために使用不能であるとして示すことをさらに含み、タスクを前記スケジューリングすることが、タスクを受け取るために使用可能であるとして示されたスレッド上でのみ実行するようにタスクをスケジューリングする、
請求項に記載のコンピュータ可読ストレージ媒体
【請求項8】
前記第1の処理測定値が、前記コアの中で実行中の前記スレッドがリソースに対するロックを獲得するために待機するロック・スピン時間を含み、前記第2の処理測定値が、前記コア上で実行中の前記スレッドからのI/O操作の数と、前記コアおよび前記コアによって使用される共用メモリの間のクロス・メモリ・バス・トラフィックとのうちの少なくとも一方を含む、請求項1に記載のコンピュータ可読ストレージ媒体
【請求項9】
プロセッサ複合体のコアの中で実行するスレッドの数を決定するための、コンピュータ可読プログラム・コードが内部に具現化されたコンピュータ可読ストレージ媒体であって、前記コンピュータ可読プログラム・コードが、実行されたときに操作を実行し、前記操作が、
前記プロセッサ複合体の前記コア上で実行中のスレッドからの入力/出力(I/O)操作の数を決定することであり、それぞれのコアが、複数のスレッドを独立して実行するための回路を含む、前記決定すること、
決定された前記I/O操作の数に基づいて、前記コア上で実行するスレッドの数を決定すること、および
前記コア上の決定された前記スレッドの数を利用して命令を実行すること
を含
前記実行するスレッドの数を前記決定することが、
I/O操作数の複数の範囲と前記コア上で実行するために使用可能なスレッドの最大数に対する調整との関連を保持すること、
決定された前記I/O操作の数を含むI/O操作数の範囲に関連付けられた、前記スレッドの最大数に対する調整を決定すること、および
前記コア上で実行するために使用可能な前記スレッドの最大数に、決定された前記調整を適用することによって、決定された前記スレッドの数を計算すること
を含む、コンピュータ可読ストレージ媒体
【請求項10】
プロセッサ複合体のコアの中で実行するスレッドの数を決定するための、コンピュータ可読プログラム・コードが内部に具現化されたコンピュータ可読ストレージ媒体であって、前記コンピュータ可読プログラム・コードが、実行されたときに操作を実行し、前記操作が、
前記コアの中で実行中の前記スレッドが計算リソースに対するロックを獲得するために待機するロック・スピン時間を決定すること、
決定された前記ロック・スピン時間に基づいて、前記コア上で実行するスレッドの数を決定すること、および
前記コア上の決定された前記スレッドの数を利用して命令を実行すること
を含
前記実行するスレッドの数を前記決定することが、
ロック・スピン時間の複数の範囲と前記コア上で実行するために使用可能なスレッドの最大数に対する調整との関連を保持すること、
決定された前記ロック・スピン時間を含むロック・スピン時間の範囲に関連付けられた、前記スレッドの最大数に対する調整を決定すること、および
前記コア上で実行するために使用可能な前記スレッドの最大数に、決定された前記調整を適用することによって、決定された前記スレッドの数を計算すること
を含む、コンピュータ可読ストレージ媒体
【請求項11】
システムであって、
スレッドを実行する複数のコアを有するプロセッサ複合体と、
コンピュータ可読プログラム・コードが内部に具現化されたコンピュータ可読ストレージ媒体と
を備え、前記コンピュータ可読プログラム・コードが、前記コアのうちの少なくとも1つのコア上で実行されたときに操作を実行し、前記操作が、
前記プロセッサ複合体の前記コア上で実行中のスレッドに基づいて第1の処理測定値を決定することであり、それぞれのコアが、複数のスレッドを独立して実行するための回路を含む、前記決定すること、
前記第1の処理測定値に基づいて、前記コア上で実行するスレッドの数を決定すること、
前記プロセッサ複合体の前記コア上で実行中の前記スレッドに基づいて第2の処理測定値を決定すること、
前記第2の処理測定値に基づいて、その結果として調整されたスレッドの数を与える、決定された前記実行するスレッドの数に対する調整を決定すること、および
前記コア上の前記調整されたスレッドの数を利用して命令を実行すること
を含
前記コア上の前記調整されたスレッドの数を利用して命令を実行することが、
前記コア上の前記調整されたスレッドの数に基づいて、それぞれのコア上で実行するスレッドの数を決定することであり、決定されたそれぞれのコア上で実行する前記スレッドの数が、それぞれのコア上で独立して実行するために使用可能なスレッドの数よりも少ない、前記決定すること、および
決定されたそれぞれのコア上の前記スレッドの数上でのみ実行するようにタスクをスケジューリングし、複数の前記コア上の少なくとも1つのスレッドをアイドルのままにすること
を含む、システム。
【請求項12】
前記第1の処理測定値が、前記プロセッサ複合体の前記コア上で実行中のスレッドからの入力/出力(I/O)操作の数を含み、前記第2の処理測定値が、前記コアの中で実行中の前記スレッドがリソースに対するロックを獲得するために待機するロック・スピン時間を含む、請求項1に記載のシステム。
【請求項13】
前記実行するスレッドの数を前記決定することが、
I/O操作数の複数の範囲と前記コア上で実行するために使用可能なスレッドの最大数に対する調整との関連を保持すること、
決定された前記I/O操作の数を含むI/O操作数の範囲に関連付けられた、前記スレッドの最大数に対する調整を決定すること、および
前記コア上で実行するために使用可能な前記スレッドの最大数に、決定された前記調整を適用することによって、決定された前記スレッドの数を計算すること
を含む、請求項1に記載のシステム。
【請求項14】
決定された前記ロック・スピン時間に基づいて、決定された前記スレッドの数に対する前記調整を前記決定することが、
ロック・スピン時間の範囲と決定された前記スレッドの数に対する調整との関連を保持すること、および
決定された前記ロック・スピン時間を含むロック・スピン時間の範囲に関連付けられた、決定された前記スレッドの数に対する調整を決定すること
を含む、請求項1に記載のシステム。
【請求項15】
前記操作が、
それぞれのコアについて、決定された前記実行するスレッドの数に等しい数のスレッドを、タスクを受け取るために使用可能であるとして示し、使用可能であると示されていない前記コアの中のスレッドを、アイドルであり、タスクを実行するために使用不能であるとして示すことをさらに含み、タスクを前記スケジューリングすることが、タスクを受け取るために使用可能であるとして示されたスレッド上でのみ実行するようにタスクをスケジューリングする、
請求項1に記載のシステム。
【請求項16】
プロセッサ複合体のコアの中で実行するスレッドの数を決定するための方法であって、
前記プロセッサ複合体の前記コア上で実行中のスレッドに基づいて第1の処理測定値を決定することであり、それぞれのコアが、複数のスレッドを独立して実行するための回路を含む、前記決定すること、
前記第1の処理測定値に基づいて、前記コア上で実行するスレッドの数を決定すること、
前記プロセッサ複合体の前記コア上で実行中の前記スレッドに基づいて第2の処理測定値を決定すること、
前記第2の処理測定値に基づいて、その結果として調整されたスレッドの数を与える、決定された前記実行するスレッドの数に対する調整を決定すること、および
前記コア上の前記調整されたスレッドの数を利用して命令を実行すること
を含
前記コア上の前記調整されたスレッドの数を利用して命令を実行することが、
前記コア上の前記調整されたスレッドの数に基づいて、それぞれのコア上で実行するスレッドの数を決定することであり、決定されたそれぞれのコア上で実行する前記スレッドの数が、それぞれのコア上で独立して実行するために使用可能なスレッドの数よりも少ない、前記決定すること、および
決定されたそれぞれのコア上の前記スレッドの数上でのみ実行するようにタスクをスケジューリングし、複数の前記コア上の少なくとも1つのスレッドをアイドルのままにすること
を含む、方法。
【請求項17】
前記第1の処理測定値が、前記プロセッサ複合体の前記コア上で実行中のスレッドからの入力/出力(I/O)操作の数を含み、前記第2の処理測定値が、前記コアの中で実行中の前記スレッドがリソースに対するロックを獲得するために待機するロック・スピン時間を含む、請求項16に記載の方法。
【請求項18】
前記実行するスレッドの数を前記決定することが、
I/O操作数の複数の範囲と前記コア上で実行するために使用可能なスレッドの最大数に対する調整との関連を保持すること、
決定された前記I/O操作の数を含むI/O操作数の範囲に関連付けられた、前記スレッドの最大数に対する調整を決定すること、および
前記コア上で実行するために使用可能な前記スレッドの最大数に、決定された前記調整を適用することによって、決定された前記スレッドの数を計算すること
を含む、請求項17に記載の方法。
【請求項19】
決定された前記ロック・スピン時間に基づいて、決定された前記スレッドの数に対する前記調整を前記決定することが、
ロック・スピン時間の範囲と決定された前記スレッドの数に対する調整との関連を保持すること、および
決定された前記ロック・スピン時間を含むロック・スピン時間の範囲に関連付けられた、決定された前記スレッドの数に対する調整を決定すること
を含む、請求項17に記載の方法。
【請求項20】
それぞれのコアについて、決定された前記実行するスレッドの数に等しい数のスレッドを、タスクを受け取るために使用可能であるとして示し、使用可能であると示されていない前記コアの中のスレッドを、アイドルであり、タスクを実行するために使用不能であるとして示すことをさらに含み、タスクを前記スケジューリングすることが、タスクを受け取るために使用可能であるとして示されたスレッド上でのみ実行するようにタスクをスケジューリングする、
請求項16に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、タスクを実行するために使用可能にする、マルチコア・プロセッサ複合体(processor complex)の中の1コア当たりのスレッドの最適数を決定するためのコンピュータ・プログラム製品、システムおよび方法に関する。
【背景技術】
【0002】
同時マルチスレッディングを提供するプロセッサ・チップまたはプロセッサ複合体では、プロセッサ・チップ上の多数のコアがそれぞれ、作業負荷を並列化するために同時に実行することができる多数のスレッドを実装していることがある。プロセッサ・チップ上のそれぞれのコアは、そのコアのためのハードウェア、キャッシュ、例えばL1およびL2キャッシュ、ならびにパイプライン処理ハードウェアを必要とする。1つのコア上のスレッドはコア・ハードウェアを共有する。さらに、それぞれのスレッドは、そのコアの中に、パイプライン・リソースのサブセットなどの専用リソースを有することがあり、そのコア上のスレッドは、1つのコアに対して使用可能なL2およびL3キャッシュなどのキャッシュを共有することができる。それぞれのコアはさらに専用L1キャッシュを有することがある。
【0003】
プロセッサ・チップ上のコアは、処理に対して使用可能なコア上のスレッドの数またはアイドル状態に置かれたコア上のスレッドの数を動的に変化させるために、異なるモードで実行することができる。通常、ユーザは、それぞれのコア上でいくつのスレッドが実行するのかを制御するコマンドを発行し、そのために、処理のためのコアへのタスクのスケジューリングを休止する必要がある。
【0004】
本技術分野では、マルチコア・システム内のそれぞれのコア上で実行するスレッドの最適数を決定し、スレッドの最適数を実装するためにそれぞれのコア上での実行に使用可能なスレッドを変化させる改良された技術が求められている。
【発明の概要】
【0005】
タスクを実行するために使用可能にする、マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数を決定するためのコンピュータ・プログラム製品、システムおよび方法が提供される。プロセッサ・チップのコア上で実行中のスレッドに基づいて第1の処理測定値を決定する。ここで、それぞれのコアは、複数のスレッドを独立して実行するための回路を含む。第1の処理測定値に基づいて、コア上で実行するスレッドの数を決定する。プロセッサ・チップのコア上で実行中のスレッドに基づいて第2の処理測定値を決定する。第2の処理測定値に基づいて、その結果として調整されたスレッドの数を与える、決定された実行するスレッドの数に対する調整を決定する。コア上の調整されたスレッドの数を利用して命令を実行する。
【0006】
上記の実施形態によれば、2つの異なる処理属性に関して最適化するために、マルチコア・プロセッサの中の多数のコア上で実行するスレッドの最適数を、2つの異なる処理測定値に基づいて決定する。第1の処理因子を最適化するために、第1の処理測定値を使用してスレッドの最適数を決定し、次いで、代替測定値に関して最適化するために、第2の処理測定値を使用して、決定されたスレッドの最適数を調整して、2因子最適化を提供する。
【0007】
さらなる実施形態では、第1の処理測定値が、プロセッサ複合体のコア上で実行中のスレッドからの入力/出力(I/O)操作の数を含み、第2の処理測定値が、決定されたI/O操作の数に基づいてコア上で実行するスレッドの数を含む。
【0008】
上記の実施形態によれば、I/O操作の数に対して最適化するようにスレッドの最適数を決定する。このことは、I/O負荷が増大したときに性能を維持するため、I/O操作の数が増えたときに、使用可能なスレッドの数を増やすことになる。
【0009】
さらなる実施形態では、ロック・スピン時間(lock spin time)の範囲と決定されたスレッドの数に対する調整との関連(association)を保持する。決定されたロック・スピン時間を含むロック・スピン時間の範囲に関連付けられた、決定されたスレッドの数に対する調整を決定する。
【0010】
上記の実施形態によれば、ロック・スピン時間に基づいて最適数をさらに調整および最適化して、性能を阻害するロック・スピン時間を低減させることを試みる。ロック・スピン時間が増大するにつれて、スレッドの数を減らす調整が増大して、使用可能なスレッドを減らし、このことは、ロック競合およびシステム全体のロック・スピン時間を低減させる。
【0011】
さらなる実施形態では、決定されたそれぞれのコア上で実行するスレッドの数が、それぞれのコア上で独立して実行するために使用可能なスレッドの数よりも少ない。決定されたそれぞれのコア上のスレッドの数上でのみ実行するようにタスクをスケジューリングし、複数のコア上の少なくとも1つのスレッドをアイドルのままにする。
【0012】
上記の実施形態によれば、決定されたスレッドの数上でのみ実行し、アイドル・スレッド上では実行しないようにタスクをスケジューリングすることによって、スレッドを効果的にアイドルにする。このことは、プロセッサ・コアをオンラインのままにし、アイドル・コアにタスクをスケジューリングすることをスケジューラを使用して回避することによって、使用可能なスレッドを再構成するためにプロセッサ複合体をオフラインにする必要性を回避する。
【0013】
さらなる実施形態では、第1の処理測定値が、コアの中で実行中のスレッドがリソースに対するロックを獲得するために待機するロック・スピン時間を含み、第2の処理測定値が、コア上で実行中のスレッドからのI/O操作の数と、コアおよびコアによって使用される共用メモリの間のクロス・メモリ・バス・トラフィックとのうちの少なくとも一方を含む。
【0014】
上記の実施形態によれば、スレッドを減らしてロック・スピン時間を低減させるように、ロック・スピン時間に基づいて最適数を選択する。さらに、操作の数に基づいて第2の最適化を実行するために、操作の数に応じて最適数を調整する、例えば増大させることができる。
【0015】
さらに、タスクを実行するために使用可能にする、マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数を決定するためのコンピュータ・プログラム製品、システムおよび方法が提供される。プロセッサ複合体のコア上で実行中のスレッドからの入力/出力(I/O)操作の数を決定する。ここで、それぞれのコアは、複数のスレッドを独立して実行するための回路を含む。決定されたI/O操作の数に基づいて、コア上で実行するスレッドの数を決定する。コア上の決定されたスレッドの数を利用して命令を実行する。
【0016】
上記の実施形態によれば、I/O操作の数が増えたときに性能を維持するため、複合体の中でのI/O操作数のレベルに基づいて最適数を選択するように、I/O操作数に基づいてスレッドの最適数を決定する。
【0017】
さらに、タスクを実行するために使用可能にする、マルチコア・プロセッサ複合体の中の1コア当たりのスレッドの最適数を決定するためのコンピュータ・プログラム製品、システムおよび方法が提供される。コアの中で実行中のスレッドが計算リソースに対するロックを獲得するために待機するロック・スピン時間を決定する。決定されたロック・スピン時間に基づいて、コア上で実行するスレッドの数を決定する。コア上の決定されたスレッドの数を利用して命令を実行する。
【0018】
上記の実施形態によれば、ロック競合およびロック・スピン時間を低減させる最適数を選択するため、計算リソースにアクセスするために全てのスレッドが待機するロック・スピン時間に基づいてスレッドの最適数を決定する。このことは、ロックを獲得するための待ち時間を低減させることによってシステム性能を向上させる。
【図面の簡単な説明】
【0019】
図1】コンピューティング環境の一実施形態を示す図である。
図2】プロセッサ複合体のコアの中に実装されたスレッドのスレッド情報の一実施形態を示す図である。
図3】コア上に実装されたスレッドのスレッド可用性情報(threadavailability information)の一実施形態を示す図である。
図4】入力/出力(I/O)操作数の範囲に対するスレッドの最適数の一実施形態を示す図である。
図5】I/O操作数に対する最適スレッド数テーブルの一実施形態を示す図である。
図6】全スレッドに対するロック・スピン時間の範囲に関するスレッドの最適数のロック・スピン時間調整の一実施形態を示す図である。
図7】スレッドの最適数を調整するためのロック・スピン時間調整テーブルの一実施形態を示す図である。
図8】I/O操作数およびロック・スピン時間に基づいて1コア当たりのスレッドの最適数を決定し使用する操作の一実施形態を示す図である。
図9】第1および第2の処理測定値に基づいて1コア当たりのスレッドの最適数を決定し使用する操作の追加の実施形態を示す図である。
図10】ロック・スピン時間範囲に対するスレッドの最適数テーブルの一実施形態を示す図である。
図11】スレッドの最適数を調整するためのI/O操作数調整テーブルの一実施形態を示す図である。
図12】I/O操作数に基づいて1コア当たりのスレッドの最適数を決定し使用する操作の一実施形態を示す図である。
図13】ロック・スピン時間に基づいて1コア当たりのスレッドの最適数を決定し使用する操作の一実施形態を示す図である。
図14図1の構成要素を実装することができるコンピューティング環境を示す図である。
【発明を実施するための形態】
【0020】
記載された実施形態は、スレッド上でのタスクの同時マルチスレッディングを提供するために、プロセッサ複合体のコア上で実行するスレッドの最適数を決定するためのコンピュータ技術の改良を提供する。記載された実施形態は、2つの異なる処理測定値に基づいて性能を最適化するために1つまたは複数の処理測定値を考慮した、プロセッサ複合体のコア上で実行するスレッドの最適数を決定する。
【0021】
記載された実施形態は、スレッド可用性情報内において1コア当たりのスレッドの最適数を使用可能として示し、他のコアをアイドルとして示して、コアの中の使用可能として示されたスレッドにのみタスクがスケジューリングされるようにすることによって、それぞれのプロセッサ・コア上で使用可能にするスレッドの最適数を調整する操作のさらなる改良を提供する。このことは、使用可能スレッドおよびアイドル・スレッドが別々のスレッド可用性情報内に示されていることにより、それぞれのコアの中の使用可能スレッドまたはアイドル・スレッドを再構成するためにコアをオフラインにすることに帰着する遅延を回避する。
【0022】
記載された実施形態は、コア上で実行中のスレッドからのI/O操作の数、コアの間のクロス・メモリ・バス・トラフィック、コアによって使用される共有メモリ、コアの中で実行中のスレッドがリソースに対するロックを獲得するために待機するロック・スピン時間などの多数の処理測定値および属性を考慮した、使用可能にする1コア当たりのスレッドの最適数を決定することができる。一実施形態では、最初に、決定されたI/O操作の数に基づいて、コア上で実行するスレッドの最適数を決定し、次いで、計算リソースに対するロックが使用可能になるのを待つことにスレッドが費やす、決定されたロック・スピン時間に基づいて、決定された実行するスレッドの最適数に対する調整を決定することによって、スレッドの最適数を決定することができる。
【0023】
図1は、メモリ・インタフェース104を介して共有メモリ106にアクセスすることができる複数のプロセッサ複合体102、102...102を有するコンピューティング・システム100の一実施形態を示している。それぞれのプロセッサ複合体102は、オンボードL1キャッシュ110、110、110m-1、110をそれぞれが有する複数の処理コア108、108、108m-1、108を含むことができる。108、108および108m-1、108などのコアのそれぞれの対は、インターナショナル・ビジネス・マシーンズ(「IBM」(R))POWER9(R)プロセッサなどのように、L2キャッシュ112...112m/2およびより大きなL3キャッシュ114...114m/2を共有することができる。それぞれのプロセッサ複合体102は、シングル・チップ・モジュール(single chip module)(SCM)を含むことができる。L3キャッシュ114は、埋込みダイナミック・ランダム・アクセス・メモリ(DRAM)を含むことができる。
【0024】
ワークロードの並列化ならびにコア108、108および108m-1、108にわたるスレッド116の同時マルチスレッディングを可能にするため、それぞれのコア108は、スレッド116を独立して実行するためのハードウェアおよび回路を含むことができる。同時マルチスレッディングは、単一のコア108が、異なるスレッド116からの命令を同時にディスパッチすることを可能にする。
【0025】
共有メモリ106は、スレッド116のうちの1つまたは複数のスレッドによって実行されるプログラム構成要素を含み、これらのプログラム構成要素は、コア108の中のスレッド116の可用性を管理するスレッド・マネージャ120;タスクをスレッド116にスケジューリングするタスク・スケジューラ122;I/O操作の処理とリソースに対するロックを獲得するためにスレッド116が待機するロック・スピン時間とに関する情報を有するスレッド情報200;タスクを受け取ることに対するコア108上のスレッド116の可用性を示すスレッド可用性情報300;読取り/書込み待ち行列、リースト・リーセントリ・ユーズド(Least Recently Used)(LRU)リスト、ストレージ、処理および他の計算リソースなどのシステム100の中の計算リソース126へのロックのアクセスを管理するロック・マネージャ124;I/O操作数の異なる範囲に対して使用可能にするスレッドの最適数を提供するI/O操作数に対する最適スレッド数400;ならびにロック・スピン時間の異なる範囲に対するスレッドの最適数の調整を提供するロック・スピン時間調整600を含む。
【0026】
代替実施形態では、L2およびL3キャッシュを共有する際のコアの配置を、図1に示された配置とは異なるものとすることができる。
【0027】
図1の実施形態では、メモリ106が、プロセッサ複合体102...102の外部にある。代替実施形態では、それぞれのプロセッサ複合体102が、プロセッサ複合体102上に埋め込まれた全てのコア108のための共有メモリを含むことができる。共有メモリ106の中には、プログラム構成要素120、122、124ならびにデータ200、300、400および500が示されている。さらなる実施形態では、これらのプログラム構成要素および情報の一部または全部を、L3キャッシュ114またはL2キャッシュ112の中に保持することができる。L2キャッシュ112を使用して、L1キャッシュ110から追い出されたデータをキャッシュすることができ、L3キャッシュ114を使用して、L2キャッシュ112から追い出されたデータをキャッシュすることができる。
【0028】
一実施形態では、それぞれのプロセッサ複合体102が、共有メモリ106の中のプログラム構成要素120、122、124ならびにデータ200、300、400および500の別個の例を保持することができる。さらなる実施形態では、プロセッサ複合体102...102にわたるスレッドの割当てを管理するために、プログラム構成要素120、122、124ならびにデータ200、300、400および500の1つのセットがあってもよい。
【0029】
用語「プロセッサ複合体」は、「処理ユニット」、「プロセッサ」、「プロセッサ・チップ」などと呼ばれることもある。1つまたは複数の集積回路ダイの中でタスクを実行するため、コア108は、スレッド116をハードウェア回路として実装することができる。さらに、プロセッサ複合体、コアおよびスレッドは、物理ホスト処理リソースおよび物理ホスト・メモリ・リソースの中に実装された仮想プロセッサ複合体、コア、スレッド、メモリおよびキャッシュに関する操作を実行する仮想処理構成要素を含むこともできる。
【0030】
ある種の実施形態では、コンピューティング・システム100が、共有不揮発性ストレージへのアクセスを提供するストレージ・コントローラを含む。
【0031】
メモリ106は、ダイナミック・ランダム・アクセス・メモリ(DRAM)、相変化(phase change)メモリ(PCM)、磁気抵抗(Magnetoresistive)ランダム・アクセス・メモリ(MRAM)、スピン・トランスファ・トルク(Spin Transfer Torque)(STT)-MRAM、SRAMストレージ・デバイス、DRAM、強誘電体(ferroelectric)ランダム・アクセス・メモリ(FeTRAM)、ナノワイヤ・ベースの不揮発性メモリ、およびダイレクト・インライン・メモリ・モジュール(DIMM)、NANDストレージ、例えばフラッシュ・メモリ、ソリッド・ステート・ドライブ(SSD)ストレージ、不揮発性RAMなどの、揮発性または不揮発性の1つまたは複数のメモリ・デバイスを含むことができる。
【0032】
図2は、1つのプロセッサ複合体102のコア108の中のスレッド116に対して保持されるスレッド情報200の一実施形態を示しており、この図は、測定期間中にプロセッサ複合体102の中の全てのスレッド116...116上で実行されたI/O操作の総数、全てのスレッド116...116よりも少ないことがあり、それによってそれぞれのコア108上のいくつかのスレッドをアイドルのままにする、利用されたスレッドの数204、プロセッサ複合体102上のコアの数206、全てのコア108の中に実装された、プロセッサ複合体102の中で使用可能なスレッドの最大数208、ロック・マネージャ124からロックを獲得して計算リソース126にアクセスするために全てのスレッド116...116が待機しなければならない、プロセッサ・サイクル数で表されたものなどの、全スレッドに対するロック・スピン時間210を含む。
【0033】
図3は、特定のコア108およびスレッド116に対して保持されるスレッド可用性情報300の一実施形態を示しており、この図は、コア302、スレッド304、そのスレッド304がアイドルであり、タスクを受け取らないのか、またはそのスレッド304が、タスク・スケジューラ122からタスクを受け取るために使用可能であるのかを示す、アイドル/使用可能フラグ306、コア406上のスレッド304に割り当てられた割当てタスク308、およびスレッド304が実行する割当てタスクを入れるタスク待ち行列310を含む。タスク・スケジューラ122は、プロセッサ複合体102のコア108の中のスレッド116にタスクを割り当てるのに、ロード・バランシングを使用することができる。
【0034】
図4は、I/O操作数に対する最適スレッド数のエントリ400の一実施形態を示しており、この図は、I/O操作数の範囲402、およびその範囲402に対する最大スレッド調整404を含む。例えば、調整404は、スレッド208の最大数の百分率を含むことができ、この百分率は、より多数のI/O操作数の範囲に対して増大する。これは、システム100の性能を維持するためにより多くのI/O操作を処理するためには、より多くのスレッドが必要となるためである。
【0035】
図5は、I/O操作数の異なる範囲に対してスレッドの最大数208の異なる百分率を提供する、テーブル400などのI/O操作数に対する最適スレッド数テーブル500の一実施形態の一例を提供する。ここで、スレッドの最適数は、I/O操作数のより高い範囲に対して増大する。
【0036】
図6は、ロック・スピン時間スレッド調整テーブル600のエントリ600の一実施形態を示しており、この図は、CPUサイクル数で表された、1つの測定期間の間の全スレッドに対するロック・スピン時間の範囲602、およびスレッドの最適数に対する対応する調整604を含む。調整604は、決定されたスレッドの最適数を減少させる百分率を含むことができ、この百分率減少は、ロック・スピン時間のより高い範囲602に対して増大する。高いレベルのロック・スピン時間による待ち時間を短縮するため、動作するスレッドの数を減らして、計算リソース126にアクセスするためのロック競合の量を低減させる。このように、全スレッドに対するロック・スピン時間が増大したときには、スレッドの最適数に対する百分率減少を増大させて、ロック競合に寄与するスレッドの数を減らす。
【0037】
図7は、スレッドの最適数に対する異なる百分率減少を提供する、ロック・スピン時間スレッド調整テーブル600に対する調整の一実施形態の一例を提供する。ここで、この百分率減少は、ロックを待つことに費やされたCPUサイクル数、すなわちロック・スピン時間のより高い百分率の範囲に対して増大する。
【0038】
図8は、タスクを実行するためにタスク・スケジューラ122に対して使用可能にするスレッドおよびアイドルにするスレッド116を決定するために、スレッド・マネージャ120によって実行される操作の一実施形態を示している。1コア108当たりのスレッド116の数を調整して、I/O操作処理待ち時間とロック競合の両方を最小限に抑えるため、図8の操作を定期的に実行することができる。(ブロック800で)それぞれのコア108の中でのタスク・スケジューリングのためにスレッド116の数を調整する操作を開始した後、スレッド・マネージャ120は、(ブロック802で)測定期間中のプロセッサ複合体102のコア108...108上で実行中のスレッド116...116からのI/O操作の総数202を決定する。(ブロック804で)テーブル500(図5)などのI/O操作数に対する最適スレッド数テーブル400から、スレッドに対する決定されたI/O操作の総数202を含むI/O操作数の範囲402に対応するスレッドの最適数404を決定する。決定されたスレッドの最適数は、1コア108当たりのスレッドの最大数208を、測定期間中のコア108上での決定されたI/O操作の数を含むI/O操作数の範囲402を有する決定されたエントリ400のフィールド404の中に指定された百分率だけ調整したものを含む。
【0039】
スレッド・マネージャ120は、(ブロック806で)コア108...108の中で実行中の全てのスレッド116...116が計算リソース126に対するロックを獲得するために待機するロック・スピン時間210を決定する。(ブロック808で)決定されたロック・スピン時間に基づいて、ロック・スピン時間調整テーブル600から、決定されたスレッドの最適数に対する調整604を決定する。例えば、全てのスレッド116が待機した決定されたロック・スピン時間210を含むロック・スピン時間の範囲602を有する、ロック・スピン時間調整テーブル600の中のエントリ600を決定し、決定されたエントリ600から調整604を決定する。(ブロック810で)決定されたスレッドの最適数に決定された調整を適用して、調整されたスレッドの最適数を生成する。(ブロック812で)I/O操作性能とロック競合の両方を最適化する調整されたスレッドの最適数をコアの数206で除して、1コア当たりの使用可能スレッドの最適数を生成する。それぞれのコア108について、スレッド・マネージャ120は、(ブロック814で)コア108の中での1コア当たりの使用可能スレッドの最適数に関してはスレッド可用性情報300内においてスレッドを使用可能として示し、コア108の中の使用可能として示されていないスレッドに関してはスレッド可用性情報300内においてスレッドをアイドルとして示す。例えば、1コアにつき4つのスレッドがあり、3つのスレッドが、使用可能にする1コア当たりのスレッドの最適数である場合、3つのスレッド(最適な数)のスレッド可用性情報300は、フィールド306においてそれらのスレッドを使用可能として示し、1つのスレッドのスレッド可用性情報300は、フィールド306において1つのスレッドをアイドルとして示す。次の測定期間の間に、使用可能なスレッドの最適数を調整する図8の操作の次の例で使用する新たな測定が実施されるように、(ブロック816で)全スレッド上のI/O操作の数202および全スレッドに対するロック・スピン時間210をクリアする。
【0040】
図8の実施形態によれば、システム100内でのI/O操作が増えたときにはスレッドの数を増やし、より多くのスレッドが並列に動作していることに起因するロック競合の増加によりロック・スピン時間が増大したときにはスレッドの数を減らすことによって、I/O操作待ち時間を最小限に抑えるように、スレッドの使用可能数を最適化するために、使用可能にする1コア当たりのスレッドの最適数が決定される。
【0041】
説明したさらなる実施形態は、使用可能スレッドおよびアイドル・スレッドを示す、メモリ106の中のスレッド可用性情報300を更新することによって、プロセッサ複合体102の中で使用可能なスレッドの最適数を調整する際の遅延を回避する。タスク・スケジューラ122は、スレッド可用性情報300の中に使用可能として示されたスレッド116上にのみタスクをスケジューリングする。このようにすると、コア108を再構成する必要なしに、使用可能およびアイドルにされる1コア当たりのスレッドの数が更新される。
【0042】
図9は、タスクを実行するためにタスク・スケジューラ122に対して使用可能にするスレッドおよびアイドルにするスレッド116を決定するために、スレッド・マネージャ120によって実行される操作の追加の実施形態を示している。1コア108当たりのスレッド116の数を調整して、多数の因子に関して最適化するため、図9の操作を定期的に実行することができる。(ブロック900で)それぞれのコア108の中でのタスク・スケジューリングのためにスレッド116の数を調整する操作を開始した後、スレッド・マネージャ120は、(ブロック902で)測定期間中のプロセッサ複合体102のコア108...108上で実行中のスレッド116...116に基づいて第1の処理測定値を決定する。(ブロック904で)第1の処理測定値に基づいて、コア108...108上で実行するスレッドの最適数を決定する。
【0043】
スレッド・マネージャ120は、(ブロック906で)測定期間中のプロセッサ複合体102のコア108...108上で実行中のスレッド116...116に基づいて第2の処理測定値を決定する。(ブロック908で)第2の処理測定値に基づいて、決定されたスレッドの最適数に対する調整を決定する。(ブロック910で)決定されたスレッドの最適数に決定された調整を適用して、調整されたスレッドの最適数を生成する。(ブロック912で)第1の処理測定値と第2の処理測定値の両方に基づいて最適化された調整されたスレッドの最適数をコアの数206で除して、1コア当たりの使用可能スレッドの最適数を生成する。それぞれのコア108について、スレッド・マネージャ120は、(ブロック914で)コア108の中での1コア当たりの使用可能スレッドの最適数に関してはスレッド可用性情報300内においてスレッドを使用可能として示し、コア108の中の使用可能として示されていないスレッドに関してはスレッド可用性情報300内においてスレッドをアイドルとして示す。例えば、1コアにつき4つのスレッドがあり、3つのスレッドが、使用可能にする1コア当たりのスレッドの最適数である場合、3つのスレッド(最適な数)のスレッド可用性情報300は、フィールド306においてそれらのスレッドを使用可能として示し、1つのスレッドのスレッド可用性情報300は、フィールド306において1つのスレッドをアイドルとして示す。次の測定期間の間に、使用可能なスレッドの最適数を調整する図9の操作の次の例で使用する新たな測定が実施されるように、(ブロック916で)第1および第2の処理測定値をクリアする。
【0044】
図9の操作の実施形態によれば、多数の異なるプロセッサ測定値に基づいてスレッドの使用可能数を最適化するために、使用可能にする1コア当たりのスレッドの最適数が決定される。一実施形態では、第1の処理測定値が、コア上で実行中のスレッドからのI/O操作の数、コアの間のクロス・メモリ・バス・トラフィック、メモリ操作などのうちの少なくとも1つを含むことができ、第2の処理測定値が、コアの中で実行中のスレッドがリソースに対するロックを獲得するために待機するロック・スピン時間を含むことができる。さらなる実施形態では、第1の処理測定値が、コアの中で実行中のスレッドがリソースに対するロックを獲得するために待機するロック・スピン時間を含むことができ、第2の処理測定値が、コア上で実行中のスレッドからのI/O操作の数、およびコアの間のクロス・メモリ・バス・トラフィック、コアによって使用される共有メモリなどのうちの少なくとも1つを含むことができる。多数の処理測定値に関して最適化するために、第1および第2の処理測定値に対して、システム性能に影響を及ぼす追加の計算リソースの使用を考慮することもできる。
【0045】
図10および11は、第1の処理測定値が、コアの中で実行中のスレッドがリソースに対するロックを獲得するために待機するロック・スピン時間を含み、第2の処理測定値が、コア上で実行中のスレッドからのI/O操作の数を含むときの、調整テーブルの一実施形態を提供する。図10は、ロック・スピン時間1002の百分率がスレッドの最適数1004の異なる数にどのようにマップするのかを示しており、ここで、スレッドの最適数は、コア108...108上で使用可能なスレッドの最大数208の百分率として計算される。したがって、ロック・スピン時間1002の異なる範囲は、スレッドの最大数の異なる百分率1004にマップする。
【0046】
図10およびロック・スピン時間を使用してスレッドの最適数を計算した後、図11に示されたI/O操作数の範囲によって、スレッドの最適数に対する調整を決定することができる。図11は、異なるI/O範囲1102に対するスレッドの最適数の調整1104を示している。I/O操作数の範囲1102が増大するにつれて、決定されたスレッドの最適数に対する調整1104は小さくなる。これは、I/O操作数のより大きな範囲に対して性能を維持するためには、より多くのスレッドが必要となるためである。
【0047】
図12は、タスクを実行するためにタスク・スケジューラ122に対して使用可能にするスレッドおよびアイドルにするスレッド116をI/O操作の数だけに基づいて決定するために、スレッド・マネージャ120によって実行される操作の追加の実施形態を示している。1コア108当たりのスレッド116の数を調整して、I/O操作処理待ち時間とロック競合の両方を最小限に抑えるため、図12の操作を定期的に実行することができる。(ブロック1200で)それぞれのコア108の中でのタスク・スケジューリングのためにスレッド116の数を調整する操作を開始した後、スレッド・マネージャ120は、(ブロック1202で)測定期間中のプロセッサ複合体102のコア108...108上で実行中のスレッド116...116からのI/O操作の総数202を決定する。(ブロック1204で)図5のテーブルなどのI/O操作数に対する最適スレッド数テーブル400から、スレッドに対する決定されたI/O操作の総数202を含むI/O操作数の範囲402に対応するスレッドの最適数404を決定する。決定されたスレッドの最適数は、1コア108当たりのスレッドの最大数208を、測定期間中のコア108上での決定されたI/O操作の数を含むI/O操作数の範囲402を有する決定されたエントリ400のフィールド404の中に指定された百分率だけ調整したものを含む。
【0048】
図13は、タスクを実行するためにタスク・スケジューラ122に対して使用可能にするスレッドおよびアイドルにするスレッド116を、全てのコア上で実行中の全てのスレッドが計算リソースに対するロックを獲得するために待機するロック・スピン時間210だけに基づいて決定するために、スレッド・マネージャ120によって実行される操作の追加の実施形態を示している。1コア108当たりのスレッド116の数を調整して、I/O操作処理待ち時間とロック競合の両方を最小限に抑えるため、図13の操作を定期的に実行することができる。(ブロック1300で)それぞれのコア108の中でのタスク・スケジューリングのためにスレッド116の数を調整する操作を開始した後、スレッド・マネージャ120は、(ブロック1302で)コア108...108の中で実行中の全てのスレッド116....116が計算リソース126に対するロックを獲得するために待機するロック・スピン時間210を決定する。(ブロック1304で)ロック・スピン時間に対する最適スレッド数1000(図10)から、全スレッド202に対する決定されたロック・スピン時間210を含むロック・スピン時間1002の範囲に対応する、スレッドの最適数を構成するスレッドの最大数の百分率1004を決定する。決定されたスレッドの最適数1004は、1コア108当たりのスレッドの最大数208を、測定期間中の全スレッドに対する決定されたロック・スピン時間210を含む決定されたロック・スピン時間範囲1002に関して図10の列1004の中に指定された百分率だけ調整したものを含む。
【0049】
説明したこの実施形態では、変数i、j、m、nなどが、異なる要素とともに使用されたときに、その要素の同じ例または異なる例を示すことがある。
【0050】
本発明は、システム、方法もしくはコンピュータ・プログラム製品、またはこれらの組合せであることがある。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含むことがある。
【0051】
このコンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保持および記憶することができる有形のデバイスとすることができる。このコンピュータ可読ストレージ媒体は例えば、限定はされないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたはこれらの適当な組合せとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リードオンリー・メモリ(ROM)、消去可能なプログラマブル・リードオンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リードオンリー・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、機械的にコード化されたデバイス、例えばパンチカードまたはその上に命令が記録された溝の中の一段高くなった構造体、およびこれらの適当な組合せを含む。本明細書で使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が一過性の信号、例えば電波もしくは他の自由に伝搬する電磁波、ウェーブガイドもしくは他の伝送体内を伝搬する電磁波(例えば光ファイバ・ケーブル内を通る光パルス)、または電線を通して伝送される電気信号であると解釈されるべきではない。
【0052】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から対応するそれぞれのコンピューティング/処理デバイスにダウンロードすることができ、またはネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはこれらの組合せを介して外部コンピュータもしくは外部ストレージ・デバイスにダウンロードすることができる。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバ、またはこれらの組合せを含むことができる。それぞれのコンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を、対応するそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するために転送する。
【0053】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令もしくは状態設定データであってもよく、またはJava(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同種のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれた、ソース・コードもしくはオブジェクト・コードであってもよい。このコンピュータ可読プログラム命令は、全体がユーザのコンピュータ上で実行されてもよく、一部がユーザのコンピュータ上で実行されてもよく、独立型ソフトウェア・パッケージとして実行されてもよく、一部がユーザのコンピュータ上で、一部がリモート・コンピュータ上で実行されてもよく、または全体がリモート・コンピュータもしくはリモート・サーバ上で実行されてもよい。上記の最後のシナリオでは、リモート・コンピュータが、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、またはこの接続が、外部コンピュータに対して(例えばインターネット・サービス・プロバイダを使用してインターネットを介して)実施されてもよい。いくつかの実施形態では、本発明の態様を実施するために、例えばプログラム可能論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)またはプログラム可能論理アレイ(PLA)を含む電子回路が、このコンピュータ可読プログラム命令の状態情報を利用してその電子回路をパーソナライズすることにより、このコンピュータ可読プログラム命令を実行してもよい。
【0054】
本明細書では、本発明の態様が、本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャートもしくはブロック図またはその両方の図を参照して説明される。それらのフローチャートもしくはブロック図またはその両方の図のそれぞれのブロック、およびそれらのフローチャートもしくはブロック図またはその両方の図のブロックの組合せは、コンピュータ可読プログラム命令によって実施することができることが理解される。
【0055】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する手段を生成するように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、その中に命令が記憶されたコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施する命令を含む製品を含むように、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラム可能データ処理装置、または他のデバイスに特定の方式で機能するように指示するものであってもよい。
【0056】
これらのコンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに指定される機能/動作を実施するように、コンピュータによって実施されるプロセスを生み出すために、コンピュータ、他のプログラム可能データ処理装置または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0057】
添付図中のフローチャートおよびブロック図は、本発明のさまざまな実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能および動作を示す。この点に関して、それらのフローチャートまたはブロック図のそれぞれのブロックは、指定された論理機能を実施する1つまたは複数の実行可能命令を含む、命令のモジュール、セグメントまたは部分を表すことがある。いくつかの代替実施態様では、ブロックに示された機能を、図に示された順序とは異なる順序で実行することができる。例えば、連続して示された2つのブロックが、実際は、実質的に同時に実行されることがあり、または、含まれる機能によってはそれらのブロックが時に逆の順序で実行されることもある。それらのブロック図もしくはフローチャートまたはその両方の図のそれぞれのブロック、ならびにそれらのブロック図もしくはフローチャートまたはその両方の図のブロックの組合せを、指定された機能もしくは操作を実行しまたは専用ハードウェアとコンピュータ命令の組合せを実施するハードウェアベースの専用システムによって実施することができることにも留意すべきである。
【0058】
図14に示されたコンピュータ・システム1402などの1つまたは複数のコンピュータ・システムの中に、図1の計算構成要素を実装することができる。コンピュータ・システム/サーバ1402は、コンピュータ・システムによって実行されているプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含むことができる。コンピュータ・システム/サーバ1402は、通信ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行される分散クラウド・コンピューティング環境で実施することができる。分散クラウド・コンピューティング環境では、プログラム・モジュールが、メモリ・ストレージ・デバイスを含むローカル・コンピュータ・システム・ストレージ媒体とリモート・コンピュータ・システム・ストレージ媒体の両方に位置することができる。
【0059】
図14に示されているとおり、コンピュータ・システム/サーバ1402は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ1402の構成要素は、限定はされないが、図1のプロセッサ複合体102などの1つまたは複数のプロセッサまたは処理ユニット1404、図1の共有メモリ106などのシステム・メモリ1406、およびバス1408を含むことができ、バス1408は、システム・メモリ1406を含むさまざまなシステム構成要素をプロセッサ1404に結合する。バス1408は、メモリ・バスまたはメモリ・コントローラ、周辺バス、加速グラフィクス・ポート、およびプロセッサ・バスまたはローカル・バスを含む、さまざまなバス・アーキテクチャを使用したいくつかのタイプのバス構造体のうちの1つまたは複数のバス構造体を表す。例として、このようなアーキテクチャは、限定はされないが、インダストリ・スタンダード・アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカル・バス、およびペリフェラル・コンポーネント・インターコネクツ(PCI)バスを含む。
【0060】
コンピュータ・システム/サーバ1402は通常、さまざまなコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ1402がアクセス可能な利用可能な任意の媒体とすることができ、揮発性媒体と不揮発性媒体の両方、取外し可能媒体と非取外し可能媒体の両方を含むことができる。
【0061】
システム・メモリ1406は、ランダム・アクセス・メモリ(RAM)1410もしくはキャッシュ・メモリ1412またはその両方など、揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ1402はさらに、他の取外し可能/非取外し可能な揮発性/不揮発性のコンピュータ・システム・ストレージ媒体を含むことができる。単なる例として、ストレージ・システム1413は、非取外し可能な不揮発性の磁気媒体(図示せず。通常は「ハード・ドライブ」と呼ばれる)からの読取り用、および非取外し可能な不揮発性の磁気媒体への書込み用に提供することができる。図示されてはいないが、取外し可能な不揮発性の磁気ディスク(例えば「フロッピー(R)・ディスク」)からの読取り用および取外し可能な不揮発性の磁気ディスクへの書込み用の磁気ディスク・ドライブ、ならびにCD-ROM、DVD-ROMまたは他の光学式媒体などの取外し可能な不揮発性光ディスクからの読取り用および取外し可能な不揮発性の光ディスクへの書込み用の光ディスク・ドライブを提供することもできる。そのような場合には、それぞれを、1つまたは複数のデータ媒体インタフェースによってバス1408に接続することができる。後にさらに示し、説明するが、メモリ1406は、本明細書に記載された実施形態の機能を実行するように構成された一組の(例えば少なくとも1つの)プログラム・モジュールを有する少なくとも1つのプログラム製品を含むことができる。
【0062】
一組の(少なくとも1つの)プログラム・モジュール1416、例えば、限定はされないが、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データなどを有するプログラム/ユーティリティ1414を、メモリ1406に記憶することができる。このオペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュールおよびプログラム・データまたはこれらのある組合せはそれぞれ、ネットワーキング環境の実施態様を含むことができる。コンピュータ1402の構成要素は、一般に本明細書に記載された本発明の実施形態の機能もしくは方法またはその両方を実行するプログラム・モジュール1416として実装することができる。1つまたは複数のコンピュータ・システム1402の中に図1のシステムを実装することができ、図1のシステムが多数のコンピュータ・システム1402の中に実装されている場合、それらのコンピュータ・システムはネットワークを通じて通信することができる。
【0063】
コンピュータ・システム/サーバ1402はさらに、キーボード、ポインティング・デバイス、ディスプレイ1420など;ユーザがコンピュータ・システム/サーバ1402と対話することを可能にする1つもしくは複数のデバイス;またはコンピュータ・システム/サーバ1402が1つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(例えばネットワーク・カード、モデムなど)、あるいはこれらの組合せなどの、1つまたは複数の外部デバイス1418と通信することができる。このような通信は、入力/出力(I/O)インタフェース1422を介して実行することができる。さらに、コンピュータ・システム/サーバ1402は、ネットワーク・アダプタ1424を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)もしくは公衆ネットワーク(例えばインターネット)、またはこれらの組合せなどの1つまたは複数のネットワークと通信することができる。図示されているように、ネットワーク・アダプタ1424は、バス1408を介してコンピュータ・システム/サーバ1402の残りの構成要素と通信する。示されてはいないが、他のハードウェア構成要素もしくはソフトウェア構成要素またはその両方を、コンピュータ・システム/サーバ1402とともに使用することができることを理解すべきである。このような構成要素の例は、限定はされないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システムなどを含む。
【0064】
そうではないと明記されていない限り、用語「一実施形態(an embodiment)」、「実施形態(embodiment)」、「実施形態(embodiments)」、「その実施形態(the embodiment)」、「それらの実施形態(the embodiments)」、「1つまたは複数の実施形態(one or more embodiments)」、「いくつかの実施形態(some embodiments)」および「1つの実施形態(one embodiment)」は、「本発明の1つまたは複数の(しかし全てではない)実施形態(one or more (but not all) embodiments of the present invention(s))」を意味する。
【0065】
そうではないと明記されていない限り、用語「含む(including)」、「備える(comprising)」、「有する(having)」およびこれらの用語の変形語は、「~を含むが、それらだけに限定されない(including but not limited to)」ことを意味する。
【0066】
そうではないと明記されていない限り、アイテムの列挙されたリストは、それらのアイテムの1つまたは全部が相互排除であることを暗示しない。
【0067】
そうではないと明記されていない限り、用語「1つの(a)」、「1つの(an)」および「その(the)」は「1つまたは複数の(one or more)」を意味する。
【0068】
そうではないと明記されていない限り、互いに通信するデバイスは、互いに連続的に通信している必要はない。さらに、互いに通信するデバイスは、直接に通信することもあり、または1つもしくは複数の媒介物を通して間接的に通信することもある。
【0069】
互いに通信するいくつかの構成要素を含む実施形態の説明は、そのような全ての構成要素が必要であることを暗示しない。反対に、本発明の可能な幅広いさまざまな実施形態を示すために、任意選択のさまざまな構成要素が説明される。
【0070】
本明細書に単一のデバイスまたは物品が記載されているときには、単一のデバイス/物品の代わりに2つ以上のデバイス/物品を使用することができる(それらが協働するか否かは問わない)ことは容易に明らかである。同様に、本明細書に2つ以上のデバイスまたは物品が記載されている場合(それらが協働するか否かは問わない)、2つ以上のデバイスまたは物品の代わりに単一のデバイス/物品を使用することができること、あるいは示された数のデバイスまたはプログラムの代わりに異なる数のデバイス/物品を使用することができることは容易に明らかである。あるいは、1つのデバイスの機能もしくは特徴またはその両方を、そのような機能/特徴を有していると明示的に記載されてない他の1つまたは複数のデバイスによって実施することもできる。したがって、本発明の他の実施形態がそのデバイス自体を含む必要はない。
【0071】
本発明のさまざまな実施形態の上記の説明は例示および説明のために示したものである。上記の説明が網羅的であること、または本発明を開示された精確な形態に限定することは意図されていない。上記の教示に照らして多くの修正および変更が可能である。本発明の範囲は、この詳細な説明によっては限定されず、本明細書に添付された特許請求の範囲によって限定されることが意図されている。上記の明細、例およびデータは、本発明の構成物の製造および使用の完全な説明を提供する。本発明の範囲を逸脱することなく本発明の多くの実施形態を実施することができるため、本発明は、添付された後の本明細書の特許請求の範囲に属する。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14