(57)【特許請求の範囲】
【請求項１】
コンピュータシステム内でスレッドの実行をスケジューリングする方法であって、
前記コンピュータシステム内のメモリバンクの温度を測定すること、
前記メモリバンクの前記温度が特定の温度を超えるかどうかを決定すること、
前記スレッドが前記メモリバンク内に格納されたデータを求める要求を含むかどうかを決定すること、及び
前記メモリバンクの前記温度が前記特定の温度を超えるとの決定、及び前記スレッドが前記メモリバンク内に格納されたデータを求める要求を含むとの決定に応答して、前記スレッドの実行を減速させることをスケジューリングすること
を含み、
前記スレッドの実行を前記減速させることを前記スケジューリングすることは、
前記コンピュータシステムの第１のコア上で実行している第１の先行タスクセットおよび前記コンピュータシステムの第２のコア上で実行している第２の先行タスクセットのうち、どちらが１番目に完了されることになり、どちらが２番目に完了されることになるかを決定すること、及び
２番目に完了されることになると決定された先行タスクセットを実行しているコア上で実行するように、前記スレッドをスケジューリングすること
を含む、
方法。
【請求項２】
前記スレッドが優先順位値を有し、前記スレッドの実行を前記減速させることを前記スケジューリングすることが更に、前記優先順位値を低減させることを含む、請求項１に記載の方法。
【請求項３】
前記優先順位値を前記低減させることが、前記優先順位値を最小優先順位値まで低減させることを含む、請求項２に記載の方法。
【請求項４】
前記優先順位値を前記低減させることが、前記優先順位値を約１％から約９９％低減させることを含む、請求項２に記載の方法。
【請求項５】
前記スレッドの実行を前記減速させることを前記スケジューリングすることが、オペレーティングシステムによって実行され、
前記コンピュータシステムが、前記第１及び第２のコアに動作可能に結合されたコンピュータ可読媒体を備え、
前記オペレーティングシステムが、前記コンピュータ可読媒体内で符号化される
請求項１乃至４のいずれかに記載の方法。
【請求項６】
前記スレッドの実行を前記減速させることを前記スケジューリングすることが更に、遅延の後で、前記第１又は第２のコア上で実行するように前記スレッドをスケジューリングすることを含む、請求項１乃至５のいずれかに記載の方法。
【請求項７】
前記遅延が、実行するために前記スレッドが公称でかけることになる時間の約１倍から約１０００倍である、請求項６に記載の方法。
【請求項８】
前記特定の温度が、前記メモリバンクが確実に動作するほぼ最大温度である、請求項１乃至７のいずれかに記載の方法。
【請求項９】
前記特定の温度が、電力使用レベルを示すスライディングスケールから、アプリケーションプログラムによって選択され、
前記コンピュータシステムが、前記第１及び第２のコアに動作可能に結合されたコンピュータ可読媒体を備え、
前記アプリケーションプログラムが、前記コンピュータ可読媒体内で符号化される
請求項１に記載の方法。
【請求項１０】
前記温度が熱電対によって測定される、請求項１乃至９のいずれかに記載の方法。
【請求項１１】
コンピュータシステム内でのスレッドの実行をスケジューリングするための、コンピュータ可読媒体内で符号化されるソフトウェアを有するコンピュータプログラムであって、前記ソフトウェアは命令を含み、該命令は、実行に応答して、
前記コンピュータシステム内のメモリバンクの温度を測定し、
前記メモリバンクの前記温度が特定の温度を超えるかどうかを決定し、
前記スレッドが前記メモリバンク内に格納されたデータを求める要求を含むかどうかを決定し、且つ
前記メモリバンクの前記温度が前記特定の温度を超えるとの決定、及び前記スレッドが前記メモリバンク内に格納されたデータを求める要求を含むとの決定に応答して、前記スレッドの実行を減速させることをスケジューリングする
ように作用し、
前記スレッドの実行を減速させることをスケジューリングするための前記命令は、実行に応答して、
前記コンピュータシステムの第１のコア上で実行している第１の先行タスクセットおよび前記コンピュータシステムの第２のコア上で実行している第２の先行タスクセットのうち、どちらが１番目に完了されることになり、どちらが２番目に完了されることになるかを決定し、且つ
２番目に完了されることになると決定された先行タスクセットを実行しているコア上で実行するように、前記スレッドをスケジューリングする
ように作用する命令を含む、
コンピュータプログラム。
【請求項１２】
前記スレッドの実行を減速させることをスケジューリングするための前記命令は更に、実行に応答して、前記スレッドの優先順位値を低減させるように作用する命令を含む、請求項１１に記載のコンピュータプログラム。
【請求項１３】
前記スレッドの優先順位値を低減させるための前記命令が、実行に応答して、前記スレッドの前記優先順位値を約１％から約９９％低減させるように作用する命令を含む、請求項１２に記載のコンピュータプログラム。
【請求項１４】
当該コンピュータプログラムはオペレーティングシステムである、請求項１１乃至１３のいずれかに記載のコンピュータプログラム。
【請求項１５】
前記スレッドの実行を減速させることをスケジューリングするための前記命令は更に、実行に応答して、遅延の後で、前記第１又は第２のコア上で実行するように前記スレッドをスケジューリングするように作用する命令を含む、請求項１１乃至１４のいずれかに記載のコンピュータプログラム。
【請求項１６】
第１のコアおよび第２のコアと、
前記第１のコアおよび前記第２のコアに動作可能に結合されたメモリバンクと、
前記第１のコアおよび前記第２のコアに動作可能に結合されたコンピュータ可読媒体とを備えるコンピュータシステムであって、
前記コンピュータ可読媒体はコンピュータ実行可能命令を含み、該コンピュータ実行可能命令は、当該コンピュータシステムによる実行に応答して、
前記メモリバンクの温度を測定し、
前記メモリバンクの前記温度が特定の温度を超えるかどうかを決定し、
スレッドが前記メモリバンク内に格納されたデータを求める要求を含むかどうかを決定し、且つ
前記メモリバンクの前記温度が前記特定の温度を超えるとの決定、及び前記スレッドが前記メモリバンク内に格納されたデータを求める要求を含むとの決定に応答して、前記スレッドの実行を減速させることをスケジューリングする
ように当該コンピュータシステムを構成し、
前記スレッドの実行を減速させることをスケジューリングするように当該コンピュータシステムを構成するための前記コンピュータ実行可能命令は、
前記第１のコア上で実行している第１の先行タスクセットおよび前記第２のコア上で実行している第２の先行タスクセットのうち、どちらが１番目に完了されることになり、どちらが２番目に完了されることになるかを決定し、且つ
２番目に完了されることになると決定された先行タスクセットを実行しているコア上で実行するように、前記スレッドをスケジューリングする
ための命令を有する、
コンピュータシステム。
【請求項１７】
前記メモリバンクの前記温度を測定するように適合された温度センサをさらに有し、前記温度センサが、前記第１のコアおよび前記第２のコアに動作可能に結合された、請求項１６に記載のコンピュータシステム。
【請求項１８】
前記温度センサが熱電対である、請求項１７に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の参照
本出願は、以下の同時継続出願、すなわち、２００９年７月２３日に出願された、「Ｃｏｒｅ  Ｓｅｌｅｃｔｉｏｎ  Ｆｏｒ  Ａｐｐｌｉｃａｔｉｏｎｓ  Ｒｕｎｎｉｎｇ  Ｏｎ  Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  Ｓｙｓｔｅｍｓ  Ｂａｓｅｄ  Ｏｎ  Ｃｏｒｅ  ａｎｄ  Ａｐｐｌｉｃａｔｉｏｎ  Ｃｈａｒａｃｔｅｒｉｓｔｉｃｓ」という表題の出願第１２／５０８、５５２号（整理番号第ＨＶＷ０１−０１６−ＵＳ）に関する。
【背景技術】
【０００２】
マイクロプロセッサ内の電力密度は数年ごとに２倍になり、この増加率は成長し続けることが予測される。マイクロプロセッサによって消費されるエネルギーは熱に変換され、したがって、電力密度の増大は、結果として、対応する熱密度の上昇を引き起こし、信頼性および製造コストの点で問題を引き起こす。電力損失は空間的に不均一であるため、局所加熱はチップ全体の加熱よりもより早く発生する。結果として生じる「ホットスポット」は、熱密度の上昇をさらに増す。
【０００３】
熱密度とホットスポットの増大に対処するための設計技法は、主に、ヒートシンクおよびファンなど、サーマルパッケージに重点を置いている。チップアーキテクチャレベルを含むすべてのシステムレベルにおいて、温度認識設計も考慮されている。電力管理技法を使用する温度認識設計は、動作温度の空間的行動および時間的行動を直接対象とする場合がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
第１の態様では、本開示は、一般に、コンピュータシステム内のメモリバンクの温度を測定すること、そのメモリバンクの温度が所定の温度を超える場合、そのスレッドがそのメモリバンク内に格納されたデータを求める要求を含むかどうかを決定すること、そのスレッドがメモリバンク内に格納されたデータを求める要求を含むと決定された場合、コンピュータシステムの第１のコア上でのそのスレッドの実行を減速することをスケジューリングすることを含む、コンピュータシステム内でのスレッドの実行をスケジューリングする方法を説明する。
【０００５】
第２の態様では、本開示は、一般に、コンピュータシステム内でのスレッドの実行をスケジューリングするために、コンピュータ可読媒体内で符号化されたソフトウェアを有するコンピュータプログラム製品を説明する。このソフトウェアは、実行されたとき、コンピュータシステム内のメモリバンクの温度を測定し、メモリバンクの温度が所定の温度を超えるとき、そのスレッドがメモリバンク内に格納されたデータを求める要求を含むかどうかを決定し、そのスレッドがメモリバンク内に格納されたデータを求める要求を含むとき、コンピュータシステム内の第１のコア上でのそのスレッドの実行を減速することをスケジューリングするように動作可能な命令を含む。
【０００６】
第３の態様では、本開示は、一般に、第１のコアおよび第２のコアと、その第１のコアおよび第２のコアに動作可能に結合されたメモリバンクと、その第１のコアおよび第２のコアに動作可能に結合されたコンピュータ可読媒体とを有するコンピュータシステムを説明する。このコンピュータ可読媒体は、コンピュータシステムによって実行されたとき、メモリバンクの温度が所定の温度を超えるかどうかを決定するために、その温度を測定し、メモリバンクの温度が所定の温度を超えると決定されたとき、そのコンピュータシステム内の少なくとも１つのスレッドがメモリバンク内に格納されたデータを求める要求を含むかどうかを決定し、その少なくとも１つのスレッドがメモリバンク内に格納されたデータを求める要求を含むと決定されたとき、コンピュータシステム内の第１のコア上でのその少なくとも１つのスレッドの実行を減速することをスケジューリングするようにコンピュータシステムを構成するコンピュータ実行可能命令を含む。
【０００７】
前述の要約は、単に例示的であり、決して限定的であることが意図されない。上で説明された例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴は、図面および以下の発明を実施するための形態を参照することによって明らかになるであろう。
【０００８】
本開示は、以下の図面と共に、以下の説明および添付の特許請求の範囲からよりよく理解されよう。図面内の構成要素は、原寸に比例しているとは限らず、代わりに、開示される主題の原理を例示することに重点が置かれている。これらの図面は本開示によるいくつかの実施形態だけを示し、したがって、その範囲を限定すると見なされないことを理解し、本開示は、添付の図面の使用により、追加の特異性および詳細を用いて説明される。
【図面の簡単な説明】
【０００９】
【図１】本開示の少なくともいくつかの実施形態に従って構成されたコンピュータシステムを例示する図である。
【図２】本開示の少なくとも実施形態によるオペレーティングシステムによって実行されているアプリケーションプログラムを例示する図である。
【図３】本開示の少なくともいくつかの実施形態に従ってメモリコントローラに送信される要求を発行するスレッドに分割されているアプリケーションプログラムの概略図である。
【図４】本開示の少なくともいくつかの実施形態に従って構成された流れ図である。
【発明を実施するための形態】
【００１０】
以下の説明は、特許請求される主題の十分な理解をもたらすために、特定の詳細と共に様々な例を記載する。しかし、特許請求される主題は、本明細書で開示される特定の詳細のうちのいくつかまたはより多くの当該詳細なしに実行可能である点を当業者は理解されよう。さらに、状況によっては、よく知られている方法、手順、システム、構成要素、および／または回路は、特許請求される主題を不必要にあいまいにすることを回避するために、詳しく説明されていない。以下の詳細な説明では、その説明の一部を形成する添付の図面が参照される。図面では、別段文脈によって示されない限り、類似の符号は、通常、類似の構成要素を識別する。発明を実施するための形態、図面、および特許請求の範囲において説明される例示的な実施形態は、限定的なものとしない。本明細書で提示される主題の趣旨または範囲から逸脱せずに、その他の実施形態を利用することが可能であり、ここに提示される主題の趣旨および範囲から逸脱せずに、その他の変更を行うことも可能である。本明細書で一般に説明され、図面において例示される本開示の態様は、そのすべてが明示的に企図され、本開示の一部である幅広い異なる構成で構成、置換、組合せ、および設計され得る点を容易に理解されよう。
【００１１】
本開示は、ＣＭＰシステムにおいてＤＲＡＭメモリシステムが複数の処理コアの間の主な共有リソースであることを識別する。この共有リソースにアクセスするとき、実行のために、特定のコアを特定のアプリケーション、またはアプリケーション内の特定のスレッドに割り当てることができる。それぞれのアプリケーション、またはスレッドは、メモリ内、および詳細には、メモリ内の特定のメモリバンク内のデータを求める要求を生成することが可能である。特定のメモリバンク内のデータを求める要求が非常に多いと、結果として、その特定のメモリバンクの過熱を引き起こし、最終的に、そのメモリバンクの動作故障を引き起こす可能性がある。オペレーティングシステムは、特定のメモリバンクの過熱を回避するために、その特定のメモリバンクに対して非常に多く要求している可能性がある特定の１つまたは複数のコアを減速させることが可能である。
【００１２】
本開示に照らして、コアは依然としてメモリバンクに対するアクセスを必要としない他のタスクに関して使用可能であるため、メモリバンクの過熱を回避するために、特定のコアを減速させることは最適下限であり得ることが理解される。結果として、本開示は、特定のコアを減速させる必要なく、メモリバンクの過熱を回避することが望ましい場合があることを理解している。
【００１３】
本開示は、アプリケーション、またはアプリケーション内のスレッドによって使用されるメモリバンクの動作温度に応答して、それらのアプリケーションまたはスレッドをスケジューリングすることによって、特定のコアを減速させる必要なしに、メモリバンクの過熱を回避することが可能であるという発見を使用することが可能である。
【００１４】
図１は、本開示の少なくともいくつかの実施形態に従って構成されたコンピュータシステムを例示する。図１は、プロセッサ１１０と、メモリ１２０と、１つまたは複数のドライブ１３０とを含むコンピュータ１００を例示する。ドライブ１３０およびその関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶装置をコンピュータ１００に提供するように構成可能である。ドライブ１３０は、オペレーティングシステム１４０と、アプリケーションプログラム１５０と、プログラムモジュール１６０と、データベース１８０とを含むことが可能である。オペレーティングシステム１４０および／またはアプリケーションプログラム１５０は、例えば、コンピュータ１００に図４に指定される機能および／または動作、例えば、スレッドスケジューリングアルゴリズム１５２を実行させるためのプログラム命令を含むことが可能である。コンピュータ１００は、それを介してユーザがコマンドおよびデータを入力できるユーザ入力デバイス１９０を含むことが可能である。入力デバイスは、電子デジタイザと、マイクロフォンと、キーボードと、一般に、マウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイスとを含むことが可能である。その他の入力デバイスは、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどを含むことが可能である。
【００１５】
これらの入力デバイスおよびその他の入力デバイスは、システムバスに結合可能なユーザ入力インターフェースを介してプロセッサ１１０に結合可能であるか、あるいは当該入力デバイスは、パラレルポート、ゲームポート、もしくはユニバーサルシリアルバス（ＵＳＢ）など、その他のインターフェースまたはバス構造によって接続可能である。コンピュータ１００は、出力周辺インターフェース１９４などを介して接続可能なスピーカ、プリンタ、またはディスプレイ２０２など、周辺出力デバイスを含むことが可能である。
【００１６】
コンピュータ１００は、ネットワークインターフェース１９６に接続された遠隔コンピュータなど、１つまたは複数のコンピュータに対する論理接続を使用して、ネットワーキング環境で動作するように構成され得る。この遠隔コンピュータは、パーソナルコンピュータ（ＰＣ）、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の共通ネットワークノードであってよく、コンピュータ１００に関連して上で説明された要素の多くまたはすべてを含むことが可能である。
【００１７】
ネットワーキング環境は、事務所、企業広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、イントラネット、およびインターネットを含むことが可能である。一例では、コンピュータ１００は、そこからデータが移動されている送信元機械であってよく、遠隔コンピュータは、宛先機械を備えてよく、またはその逆であってもよい。送信元ソース機械および宛先機械は、ネットワーク１０８または任意の他の手段によって接続できず、代わりに、データは、送信元プラットフォームによって書き込まれて、１つまたは複数の宛先プラットフォームによって読み取られることが可能な任意の媒体を経由して移動可能である。ＬＡＮまたはＷＬＡＮのネットワーキング環境では、コンピュータ１００は、ネットワークインターフェース１９６もしくはアダプタを介して、ＬＡＮまたはＷＡＮに接続可能である。ＷＡＮネットワーキング環境では、コンピュータ１００は、モデム、またはインターネットもしくはネットワーク１０８など、ＷＡＮ上で通信を確立するためのその他の手段を含むことが可能である。コンピュータ同士の間で通信リンクを確立するその他の手段を使用することも可能である。
【００１８】
コンピュータ周辺装置は、システムバスを介してコンピュータ１００のプロセッサ１１０およびメモリ１２０に結合された任意のデバイスを含むことが可能である。コンピュータ周辺装置は、ディスプレイ２０２、プリンタ、またはスピーカを含む出力周辺インターフェースと、ドライブ１３０と、キーボード、マウス、およびマイクロフォンなどのユーザ入力デバイス１９０と、ネットワークインターフェース１９６とに接続された任意のデバイスを含むことが可能である。コンピュータ周辺装置の構成要素は、電力を使用することが可能であり、スピーカ、発光ダイオードなどの照明要素、またはディスプレイに照明を提供するために使用されるバックライト、ＬＣＤ、ＬＥＤ、ＯＬＥＯ、ＣＲＴ、もしくはプラズマディスプレイなどのディスプレイ要素、または中央処理装置（ＣＰＵ）、グラフィック処理ユニット（ＧＰＵ）、メモリなどの半導体チップなど、任意のデバイスであってよい、コンピュータ周辺装置内の任意のデバイスを含むことが可能である。一態様によれば、プロセッサ１１０および／またはプログラムモジュール１６０が、ユーザ経験に対する損害を最小限に抑えながら、電力低減および電力保存を実行できるように、コンピュータ１００をネットワーキング環境において接続することが可能である。
【００１９】
いくつかの例では、コンピュータシステム内で実行しているスレッドをスケジューリングするための方法が開示される場合がある。このコンピュータシステム（例えば、コンピュータ１００）は、第１のコアおよび第２のコアを有するマイクロプロセッサ、オペレーティングシステム、ならびに／またはデータを格納するためのメモリバンクを含むことが可能である。これらの方法は、メモリバンクの温度を測定すること、メモリバンクの温度が所定の温度を超える場合、そのスレッドがメモリバンク内に格納されたデータを求める要求を含むかどうかを決定することを含むことが可能である。これらの方法は、そのスレッドがデータを求める要求を含むかどうかを決定すると、スレッドの実行を減速することを含むことが可能である。
【００２０】
さらなる例では、そのコンピュータシステム（例えば、コンピュータ１００）が、第１のコアおよび第２のコアを有するマルチプロセッサと、オペレーティングシステムと、データを格納するための第１のメモリバンクおよび第２のメモリバンクとを含むことが可能な、コンピュータシステム内で実行しているスレッドをスケジューリングするための方法が説明される場合がある。これらの方法は、第１のメモリバンクの第１の温度および第２のメモリバンクの第２の温度を測定すること、その第１の温度および第２の温度のうちのいずれかが所定の温度を超えるかどうかを決定することを含むことが可能である。これらの方法は、そのスレッドが、その温度が所定の温度を超えるメモリバンク内のデータを求める要求を含むかどうかを決定すると、そのスレッドの実行を減速することを含むことが可能である。
【００２１】
その他の例では、そのコンピュータシステム（例えば、コンピュータ１００）が、第１のコアおよび第２のコアを有するマルチプロセッサと、オペレーティングシステムと、データを格納するためのメモリバンクとを含むことが可能な、コンピュータシステム内で実行しているスレッドをスケジューリングするための方法が説明される場合がある。メモリバンクの温度は所定の温度を超える場合がある。これらの方法は、スレッドの実行を減速させるために、オペレーティングシステムを使用することを含むことも可能である。
【００２２】
図２は、本開示の少なくともいくつかの実施形態に従って構成されたオペレーティングシステムによって実行されているアプリケーションプログラムを例示する。図２に示されるように、オペレーティングシステム１４０は、ドライブ１３０からアプリケーションプログラム１５０を実行することができる。オペレーティングシステム１４０および／またはアプリケーションプログラム１５０は、例えば、コンピュータ１００に図４に指定された機能および／または動作を実行させるためのプログラム命令を含むことが可能である。アプリケーションプログラム１５０は、マイクロプロセッサ１１１内のオペレーティングシステム１４０によって実行可能な任意のアプリケーション、プログラム、プログラムの部分、またはスレッドであってよい。アプリケーションプログラム１５０は、メモリコントローラ２１０を使用して、データ２３０をメモリ１２０内にロードし、メモリ１２０からデータ２３０にアクセスするように構成可能である。アプリケーションプログラム１５０は、１つまたは複数の要求２２６を使用して、メモリ１２０のメモリバンク１２２内にデータ２３０をロードし、メモリ１２０のメモリバンク１２２からデータ２３０にアクセスするなどのタスクを達成するために、スレッド２２０と呼ばれる複数のサブアプリケーションを実行するように構成可能である。スレッド２２０は、アプリケーションプログラム１５０によって実行可能である。アプリケーションプログラム１５０は、タスクの実行を、アプリケーションプログラムがそのタスクを達成するために必要と見なすだけの数のスレッド２２０に分割するように構成可能である。例えば、アプリケーションプログラム１５０が複数のページを有する文書を用いたワード処理プログラムであり、アプリケーションプログラム１５０がその文書のそれぞれのページのスペルチェックのタスクを達成するように構成され得る場合、アプリケーションプログラム１５０は、それぞれのスレッド２２０がその文書の一部をスペルチェックできるように、文書のスペルチェックのタスクを複数のスレッド２２０に分割することが可能である。それぞれのスレッド２２０は、実行のためにマルチプロセッサ１１１に送信可能である。マルチプロセッサ１１１内で実行されたとき、それぞれのスレッド２２０は、メモリ１２０内でデータ２３０に関する要求２２６を作成するように適合可能である。要求２２６は、効率的に動作するようにマルチプロセッサ１１１を構成することができるように要求２２６を組織できるメモリコントローラ２１０に送信可能である。
【００２３】
いくつかの実施形態では、図２に示されるように、マルチプロセッサ１１１は、２つ以上のスレッド２２０を同時に実行できるプロセッサを含むことが可能である。マルチプロセッサ１１１は、コア４１２および５１２として知られる複数のプロセッサを含むことが可能であり、またはマルチスレッドプロセッサとしても知られている、複数のスレッド２２０を同時に実行できる単一のプロセッサ（４１２もしくは５１２のうちの１つだけ）を含むことも可能である。図２は、２つのコア４１２および５１２を含む例示的なマルチプロセッサ１１１を示すが、任意の特定数のコアに限定されない。「コア」という用語は、本明細書において、単一のスレッドを処理することが可能であり、単一のスレッドを処理できるプロセッサまたはプロセッサ内の部分を指す場合がある任意のデバイスを指すために使用される場合がある。マルチスレッドプロセッサは、複数のコアを有するプロセッサと呼ばれる場合がある。複数のプロセッサを有するコンピュータ１００は、本明細書において、複数のコアを有するコンピュータ１００と呼ばれる場合がある。メモリバンク１２２の温度を測定するための温度センサ７００、例えば、熱電対または液体温度計も存在する。
【００２４】
図３は、本開示の少なくともいくつかの実施形態に従って、メモリコントローラに送信される要求を発行するスレッドに分割されているアプリケーションプログラムの概略図を示す。図３に示されるように、アプリケーション１５０は、複数のスレッド２２０ａ〜２２０ｎに分割可能であり、この場合、ｎはスレッド２２０の数を表すことが可能であり、それぞれのスレッドは、アプリケーション１５０に関するタスクを実行することが可能であり、例えば、図２のマルチプロセッサ１１１上で実行可能である。このマルチプロセッサは、アプリケーションプログラム１５０から複数のスレッド２２０ａ〜２２０ｎを個々にまたは同時に受信および実行するように構成され得る。マルチプロセッサ上で実行されるそれぞれのスレッド２２０は、それぞれの他のスレッド２２０から独立して実行可能であり、メモリ１２０内に格納されたデータ２３０に関して複数の要求２２６ａ１〜２２６ｎｏ
を発行することが可能であり、この場合、第１の指数（ａ．．．ｎ）は、要求２２６に関連するスレッド２２０を表すことが可能であり、第２の指数（１．．．ｏ）は、特定のスレッド２２０に関連する要求２２６の数を表すことが可能である。
【００２５】
それぞれのスレッド２２０は、メモリ１２０内に格納されたデータ２３０に関する要求２２６を発行することが可能であり、一例では、メモリ１２０内のメモリバンク１２２ａ〜１２２ｍ内に格納されたデータ２３０に関する要求２２６を発行することが可能であり、この場合、指数（ａ、ｂ．．．ｍ）は、メモリバンク１２２の数を表すことが可能である。メモリ１２０は、異なるメモリバンクからデータ２３０を要求する場合、複数の未解決のメモリ要求２２６が並列して処理されることを可能にするように構成可能な複数のメモリバンク１２２ａから１２２ｍを含むことが可能である。結果として、第１のメモリバンク１２２ａおよび第２のメモリバンク１２２ｂは、データ２３０に関する要求２２６の受信時に、メモリコントローラ２１０によって同時にアクセスされ得る。
【００２６】
それぞれのメモリバンク１２２は、指数（１．．．ｉ）が列の数を表すことが可能な列Ｃ１からＣｉと、指数（１．．．ｊ）が行の数を表すことが可能な行Ｒ１からＲｉとを含む二次元アレイであってよい。行は、連続的なメモリ位置内にデータを格納することが可能であり、例えば、およそ１〜２キロバイト（ＫＢ）のサイズであってよい。メモリバンク１２２内のデータ２３０は、最大で１行を含み得る行バッファＲＢからアクセス可能である。一例では、それぞれのメモリバンク１２２は、１つの行バッファＲＢを含むことが可能である。メモリバンク１２２がデータ２３０に関するそれぞれの要求２２６にサービス提供するためにかかる時間は、それぞれの行バッファＲＢの状態に依存する可能性があり、３つの範疇のうちの１つに該当し得る。第１の範疇は、行ヒット（ｒｏｗ−ｈｉｔ）であってよく、この場合、要求２２６は、それぞれの行バッファＲＢ内で現在開放され、メモリコントローラ２１０がそれぞれのメモリバンク１２２に対する読取りコマンドまたは書込みコマンドだけを発行することを可能にし、結果として、ｔＣＬのバンクアクセスレイテンシをもたらし得る行に対する可能性がある。
【００２７】
第２の範疇は、行閉鎖（ｒｏｗ  ｃｌｏｓｅｄ）であってよく、この場合、行バッファＲＢ内には開放された行が存在しない可能性があり、その結果、メモリコントローラ２１０は、まず要求される行を開放するための起動コマンドを発行し、次いで、読取り／書込みコマンドを発行し、結果として、ｔＲＣＤ＋ｔＣＬの総レイテンシをもたらす必要があり、式中、ｔＲＣＤは起動コマンドに関するレイテンシであり、ｔＣＬは読取り／書込みコマンドに関するレイテンシである。第３の範疇は、行衝突（ｒｏｗ  ｃｏｎｆｌｉｃｔ）であってよく、この場合、要求２２６は、それぞれの行バッファＲＢ内の現在の行とは異なる行に対する可能性があり、その結果、メモリコントローラ２１０は、まずプリチャージ（ｐｒｅｃｈａｒｇｅ）コマンドを発行して、（必要とされる行をアクティブ化することによって）必要とされる行を開放し、必要とされる行内のデータに関して読取り／書込みコマンドを発行する必要がある。これらのアクセスは、ｔＲＰ＋ｔＲＣＤ＋ｔＣＬの最高総レイテンシを負う可能性があり、式中、ｔＲＰは（行を閉鎖するための）行プリチャージに関するレイテンシであり、ｔＲＣＤは起動コマンドに関するレイテンシであり、ｔＣＬは読取り／書込みコマンドに関するレイテンシである。
【００２８】
メモリコントローラ２１０は、メモリ１２０およびマルチプロセッサと通信している形で構成可能であり、マルチプロセッサ内を含めて、システムに沿ってどこに配置されてもよい。メモリコントローラ２１０は、要求２２６がサービス提供されるのを待っている可能性がある間、要求２２６およびデータ２３０にバッファリングするように構成可能なメモリ要求バッファ２１１を含むことが可能である。メモリコントローラ２１０は、サービス提供されることになる次の要求２２６を選択するように構成可能なスケジューラ２１２を含むことが可能である［６，２，３］。いくつかの実施形態では、スケジューラ２１２は２つのレベルを有し得る。サービス提供されることになる次の要求２２６を選択するとき、スケジューラ２１２は、メモリバンク１２２ａ〜１２２ｍの状態と、メモリコントローラ２１０をそれぞれのメモリバンク１２２に接続しているメモリバス２１４ａ〜２１４ｍの状態と、要求２２６の状態とを考慮するように構成可能である。要求２２６に関するメモリコマンドは、そのスケジューリングが、メモリバンク１２２ａ〜１２２ｍ、およびアドレス／データ／システムバスなど、いかなるリソース衝突も引き起こさず、いかなるメモリタイミング制約にも違反しない場合、スケジューラ２１２によってスケジュールされ得る。いかなる衝突も引き起こさないメモリコマンドは、準備ができていると見なすことができる。
【００２９】
いくつかの実施形態では、コンピュータ１００は、図１、２、および３に示されるように、複数のコア４１２および５１２を有し得るマルチプロセッサ１１０または１１１と、メモリバンク１２２とを含むことが可能である。
【００３０】
図４は、本開示の少なくともいくつかの実施形態による流れ図を例示する。例示されるように、メモリバンクの過熱を防ぐために、または電力使用を最小限に抑えるために、スレッドスケジューリングアルゴリズム６００を使用して、オペレーティングシステムまたはアプリケーションプログラムによって、スレッドをスケジューリングすることを制御することが可能である。スレッドスケジューリングアルゴリズム６００は、ブロック６０１で開始することが可能である。スレッドスケジューリングアルゴリズム６００は、オペレーティングシステムまたはアプリケーションプログラムによって開始することも可能である。
【００３１】
スレッドスケジューリングアルゴリズム６００の開始時に、ブロック６０２において、メモリバンクの温度を測定することが可能である。温度は、温度を測定できるメモリバンク上の遠隔センサまたは温度を測定できるメモリバンク内の埋込みセンサを使用して測定可能である。このセンサは、任意の温度センサ、例えば、熱電対または液体温度計であってよい。スレッドスケジューリングアルゴリズム６００は、ブロック６０４において、測定された温度が所定の温度を超えるかどうかを決定するように構成可能である。
【００３２】
所定の温度は、それを超えると、メモリバンクが確実に動作できない温度またはそれを超えるとメモリバンクに対して熱的損傷が発生する可能性がある温度であってよく、所定の温度を超える温度でメモリバンクを動作させること、したがって、メモリを動作させることは、メモリおよびメモリバンクに有害な可能性があり、メモリバンク内に格納されたデータの信頼性を低減する可能性がある。あるいは、所定の温度は、メモリバンクが確実に動作する最大温度であってもよい。電力使用を最小限に抑えるとき、所定の温度は、ユーザによって設定可能であるか、または製造会社によって事前に決定され、かつ例えば、様々な電力使用レベルを示すことができるスライディングスケールから、ユーザ、アプリケーションプログラムもしくはオペレーティングシステムによって選択可能である。
【００３３】
測定された温度が所定の温度を超えない場合、スレッドスケジューリングアルゴリズム６００は、ブロック６０４からブロック６０２に戻ることができる。メモリバンクの温度が所定の温度を超える場合、スレッドスケジューリングアルゴリズム６００は、ブロック６０４からブロック６０６に進むことができる。ブロック６０６において、スレッドスケジューリングアルゴリズム６００は、そのスレッドがメモリバンク内のデータを求める要求を含むかどうかを決定することが可能である。そのスレッドがメモリバンク内のデータを求める要求を含むと決定され、メモリバンクの温度が所定の温度を超える場合、スレッドスケジューリングアルゴリズム６００は、ブロック６０８において、そのスレッドの実行を減速させることが可能である。そのスレッドがメモリバンク内のデータを求める要求を含まない場合、スレッドスケジューリングアルゴリズム６００はブロック６１０で終了できる。
【００３４】
スレッドスケジューリングアルゴリズム６００は、いくつかの様式でスレッドの実行を減速させることができる。いくつかの実施形態では、第１のコア４１２および第２のコア５１２（図２）は、第１のタスクセットおよび第２のタスクセットを実行するように構成可能である。それぞれのタスクセットは、単一のスレッドまたは複数のスレッドを含むことが可能である。スレッドスケジューリングアルゴリズム６００は、第１のタスクセットおよび第２のタスクセットのうちのどれが１番目に完了されることが予測され得るかを決定して、１番目に完了されることが予測され得ないタスクセットを実行しているコア上で実行するようにそのスレッドをスケジューリングすることによって、そのスレッドの実行を減速させるように適合可能である。
【００３５】
いくつかの実施形態では、スレッドスケジューリングアルゴリズム６００は、スレッドの実行の優先順位を下げることによって、そのスレッドの実行を減速させるように適合可能である。例えば、オペレーティングシステムは、通常、それぞれのスレッドに１〜５または１〜１００の値などの優先順位値を割り当て、より大きな値がより高い優先順位に対応し、優先順位が高ければ高いほど、スレッドの実行に充てられるコア時間の割合が高い。優先順位値の低減量は、例えば、優先順位の約１０％、約２０％、約３０％、約４０％、約５０％、約６０％、約７０％、約８０％、および約９０％を含めて、約１％から約９９％など、優先順位値の割合であってよい。あるいは、この優先順位値は、単一の優先順位値単位だけ低減されてよく、またはこの優先順位値は、最小優先順位値まで低減されてもよい。
【００３６】
いくつかの実施形態では、スレッドスケジューリングアルゴリズム６００は、コア上で実行するようにスレッドをスケジューリングすることを遅延させることによって、例えば、第１のコア４１２および第２のコア５１２（図２）のうちの１つの上で実行するようにスレッドをスケジューリングすることを遅延させて、その遅延の後で、第１のコア４１２および第２のコア５１２（図２）のうちの１つの上で実行するようにスレッドをスケジューリングすることによって、スレッドの実行を減速させるように適合可能である。この遅延量は、例えば、約１０％、約２０％、約３０％、約４０％、約５０％、約６０％、約７０％、約８０％、および約９０％を含めて、約１％から約９９％など、実行するためにスレッドが公称でかけることになる時間の割合であってよい。あるいは、この遅延量は、例えば、実行するためにスレッドが公称でかけることになる時間の約２倍、約５倍、約１０倍、約１５倍、約２０倍、約５０倍、約１００倍、約２００倍、約５００倍、約６００倍、約７００倍、約８００倍、および約９００倍を含めて、実行するためにスレッドが公称でかけることになる時間の１倍から１０００倍など、実行するためにスレッドが公称でかけることになる時間量の倍数であってもよい。
【００３７】
いくつかの実施形態では、スレッドの実行の減速時に、スレッドスケジューリングアルゴリズム６００は、例えば、スレッドスケジューリングアルゴリズム６００を再度開始することによって、メモリバンクの温度を再度測定するように適合可能である。メモリバンクの温度が所定の温度未満である場合、スレッドスケジューリングアルゴリズム６００は、スレッドの実行を減速せずに、コア内でスレッドをスケジューリングするように適合可能である。
【００３８】
様々な実施形態では、これらの開示される方法は、コンピュータシステムと共に使用するためのコンピュータプログラム製品として実装可能である。かかる実装形態は、コンピュータ可読媒体（例えば、ディスケット、ＣＤ−ＲＯＭ、ＲＯＭ、または固定ディスク）など、有形媒体上に固定されるか、またはモデム、もしくは、媒体上でネットワークに接続された通信アダプタなど、その他のインターフェースデバイスを経由して、コンピュータシステムに送信可能な一連のコンピュータ命令を含むことが可能である。この媒体は、有形媒体（例えば、光通信線もしくはアナログ通信線）または無線技術（例えば、マイクロ波、赤外線伝送技術もしくはその他の伝送技術）を用いて実装された媒体であってよい。一連のコンピュータ命令は、このシステムに関して本明細書でこれまで説明された機能性のすべてまたは一部を実施することが可能である。当業者は、かかるコンピュータ命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムと共に使用するために、いくつかのプログラミング言語で書込み可能である点を理解されたい。さらに、かかる命令は、半導体、磁気メモリデバイス、光メモリデバイス、またはその他のメモリデバイスなど、任意のメモリデバイス内に格納可能であり、光伝送技術、赤外線伝送技術、マイクロ波伝送技術、またはその他の伝送技術など、任意の通信技術を使用して送信可能である。かかるコンピュータプログラム製品は、コンピュータシステムを用いて（例えば、システムＲＯＭ上もしくは固定ディスク上に）事前にロードされた、印刷文書もしくは電子文書を伴う取出し可能媒体（例えば、シュリンクラップソフトウェア）として供給可能であるか、あるいはネットワーク上でサーバまたは電子掲示板（例えば、インターネットもしくはワールドワイドウェブ）から供給可能であることが予想される。当然、開示された主題のいくつかの実施形態は、ソフトウェア（例えば、コンピュータプログラム製品）とハードウェアの両方の組合せとして実装可能である。この開示された主題のさらに他の実施形態は、完全にハードウェアとして、または完全にソフトウェア（例えば、コンピュータプログラム製品）として実装される。
【００３９】
本明細書で説明される主題は、時には、異なる他の構成要素内に含まれた異なる構成要素、または異なる他の構成要素に接続された異なる構成要素を例示する。そのような示されたアーキテクチャは単なる例示であり、実際には、同じ機能性を達成する、多くのその他のアーキテクチャが実装可能である点を理解されよう。概念的な意味で、同じ機能性を達成するための構成要素のいずれの構成も、所望される機能性が達成されるように、有効に「関連付けられる」。したがって、特定の機能性を達成するために組み合わされる、本明細書のいずれの２つの構成要素も、アーキテクチャまたは中間構成要素にかかわらず、所望される機能性が達成されるように互いに「関連付けられる」と見なすことができる。同様に、そのように関連付けられたいずれの２つの構成要素も、所望される機能性を達成するために、互いに「動作可能に接続されている」または「動作可能に結合されている」と見なすこともでき、そのように関連付けられているいずれの２つの構成要素も、所望される機能性を達成するために、互いに「動作可能に結合続可能である」と見なすこともできる。動作可能に結合可能な特定の例は、物理的に噛み合わせ可能な（ｍａｔｅａｂｌｅ）構成要素および／もしくは物理的に相互作用する構成要素、ならびに／または無線で相互作用可能な構成要素および／もしくは無線で相互作用する構成要素、ならびに／または論理的に相互作用する構成要素および／もしくは論理的に相互作用可能な構成要素を含むが、これらに限定されない。
【００４０】
本明細書における実質的に任意の複数用語および／または単数用語の使用に関して、当業者は、文脈および／もしくは応用例に応じて、複数から単数にかつ／または単数から複数に変換することが可能である。分かりやすくするために、本明細書において、様々な単数／複数の置換が明示的に記載される場合がある。
【００４１】
概して、本明細書、および、特に添付の特許請求の範囲（例えば、添付の特許請求の範囲の本文）において使用される用語は、一般に、「開放的な」用語として意図される（例えば、「含んでいる」という用語は、「含むが、それに限定されない」と解釈されるべきであり、「有する」という用語は、「少なくとも含む」と解釈されるべきであり、「含む」という用語は、「含むが、それに限定されない」と解釈されるべきである、など）ことを理解されよう。当業者は、特定の数の導入される請求項の列挙が意図される場合、かかる意図は、特許請求の範囲内で明示的に列挙されることになり、かかる列挙がない場合、かかる意図は存在しない点をさらに理解されよう。例えば、理解の支援として、以下の特許請求の範囲は、請求項の列挙を導入するために、「少なくとも１つの」および「１つまたは複数の」という導入句の使用を含む場合がある。しかし、かかる句の使用は、同じ請求項が、導入句「１つもしくは複数の」または「少なくとも１つの」、ならびに「ａ」または「ａｎ」などの不定冠詞を含むときですら、不定冠詞「ａ」または「ａｎ」による請求項の列挙の導入が、そのように導入された請求項の列挙を含む任意の特定の請求項を１つのかかる列挙だけを含む発明に限定することを意味すると解釈されるべきではなく（例えば、「ａ」および／または「ａｎ」は、典型的には、「少なくとも１つの」または「１つもしくは複数の」を意味すると解釈されるべきである）、同じことは、請求項の列挙を導入するために使用される定冠詞の使用に関しても当てはまる。加えて、特定の数の導入された請求項の列挙が明示的に列挙されているときですら、当業者は、かかる列挙は、一般に、少なくとも列挙された数を意味する（例えば、修飾語句を伴わない「２つの列挙」の単なる列挙は、一般に、少なくとも２つの列挙、または２つ以上の列挙を意味する）と解釈されるべきである点を理解されよう。さらに、「Ａ、Ｂ、およびＣのうちの少なくとも１つの、など」に類似する表現方法が使用される場合、一般に、そのような構造は、当業者がその表現を理解するであろう意味が意図される（例えば、「Ａ、Ｂ、およびＣのうちの少なくとも１つを有するシステム」は、Ａだけを有するシステム、Ｂだけを有するシステム、Ｃだけを有するシステム、ＡとＢとを共に有するシステム、ＡとＣとを共に有するシステム、ＢとＣとを共に有するシステム、および／またはＡと、Ｂと、Ｃとを共に有するシステムなどを含むことになるが、これらに限定されない）。「Ａ、Ｂ、またはＣのうちの少なくとも１つ、など」に類似する表現方法が使用される場合、一般に、そのような構造は、当業者がその表現を理解するであろう意味が意図される（例えば、「Ａ、Ｂ、またはＣのうちの少なくとも１つを有するシステム」は、Ａだけを有するシステム、Ｂだけを有するシステム、Ｃだけを有するシステム、ＡとＢとを共に有するシステム、ＡとＣとを共に有するシステム、ＢとＣとを共に有するシステム、および／またはＡと、ＢとＣとを共に有するシステムなどを含むことになるが、これらに限定されない）。当業者は、明細書内であれ、特許請求の範囲内であれ、または図面内であれ、２つ以上の代替用語を提示する実質的にいかなる離接語および／または離接句も、それらの用語のうちの１つ、それらの用語のどちらか、またはそれらの用語の両方を含む可能性を企図すると理解されるべきである点をさらに理解されよう。例えば、「ＡまたはＢ」という成句は、「Ａ」、もしくは「Ｂ」、または「ＡおよびＢ」の可能性を含むと理解されるになる。
【００４２】
開示された主題の様々な実施形態が説明されているが、本開示の範囲内でその他の実施形態および実装形態が可能である点は当業者に明らかであろう。したがって、この開示された主題は、添付の特許請求の範囲およびそれらの均等物の観点からを除いて、限定されるべきではない。
【図１】
0005553392.tif 000002
【図２】
0005553392.tif 000003
【図３】
0005553392.tif 000004
【図４】
0005553392.tif 000005