JP5553392B2 - スレッドスロットリング - Google Patents

スレッドスロットリング Download PDF

Info

Publication number
JP5553392B2
JP5553392B2 JP2012521653A JP2012521653A JP5553392B2 JP 5553392 B2 JP5553392 B2 JP 5553392B2 JP 2012521653 A JP2012521653 A JP 2012521653A JP 2012521653 A JP2012521653 A JP 2012521653A JP 5553392 B2 JP5553392 B2 JP 5553392B2
Authority
JP
Japan
Prior art keywords
thread
core
temperature
execution
memory bank
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012521653A
Other languages
English (en)
Other versions
JP2012533828A (ja
Inventor
メミク,ギョクハン
メミク,セダ,オグレンチ
マンジオーネ−スミス,ビル
Original Assignee
エンパイア テクノロジー ディベロップメント エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エンパイア テクノロジー ディベロップメント エルエルシー filed Critical エンパイア テクノロジー ディベロップメント エルエルシー
Publication of JP2012533828A publication Critical patent/JP2012533828A/ja
Application granted granted Critical
Publication of JP5553392B2 publication Critical patent/JP5553392B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/16Constructional details or arrangements
    • G06F1/20Cooling means
    • G06F1/206Cooling means comprising thermal management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Power Sources (AREA)
  • Debugging And Monitoring (AREA)

Description

関連出願の参照
本出願は、以下の同時継続出願、すなわち、2009年7月23日に出願された、「Core Selection For Applications Running On Multiprocessor Systems Based On Core and Application Characteristics」という表題の出願第12/508、552号(整理番号第HVW01−016−US)に関する。
マイクロプロセッサ内の電力密度は数年ごとに2倍になり、この増加率は成長し続けることが予測される。マイクロプロセッサによって消費されるエネルギーは熱に変換され、したがって、電力密度の増大は、結果として、対応する熱密度の上昇を引き起こし、信頼性および製造コストの点で問題を引き起こす。電力損失は空間的に不均一であるため、局所加熱はチップ全体の加熱よりもより早く発生する。結果として生じる「ホットスポット」は、熱密度の上昇をさらに増す。
熱密度とホットスポットの増大に対処するための設計技法は、主に、ヒートシンクおよびファンなど、サーマルパッケージに重点を置いている。チップアーキテクチャレベルを含むすべてのシステムレベルにおいて、温度認識設計も考慮されている。電力管理技法を使用する温度認識設計は、動作温度の空間的行動および時間的行動を直接対象とする場合がある。
第1の態様では、本開示は、一般に、コンピュータシステム内のメモリバンクの温度を測定すること、そのメモリバンクの温度が所定の温度を超える場合、そのスレッドがそのメモリバンク内に格納されたデータを求める要求を含むかどうかを決定すること、そのスレッドがメモリバンク内に格納されたデータを求める要求を含むと決定された場合、コンピュータシステムの第1のコア上でのそのスレッドの実行を減速することをスケジューリングすることを含む、コンピュータシステム内でのスレッドの実行をスケジューリングする方法を説明する。
第2の態様では、本開示は、一般に、コンピュータシステム内でのスレッドの実行をスケジューリングするために、コンピュータ可読媒体内で符号化されたソフトウェアを有するコンピュータプログラム製品を説明する。このソフトウェアは、実行されたとき、コンピュータシステム内のメモリバンクの温度を測定し、メモリバンクの温度が所定の温度を超えるとき、そのスレッドがメモリバンク内に格納されたデータを求める要求を含むかどうかを決定し、そのスレッドがメモリバンク内に格納されたデータを求める要求を含むとき、コンピュータシステム内の第1のコア上でのそのスレッドの実行を減速することをスケジューリングするように動作可能な命令を含む。
第3の態様では、本開示は、一般に、第1のコアおよび第2のコアと、その第1のコアおよび第2のコアに動作可能に結合されたメモリバンクと、その第1のコアおよび第2のコアに動作可能に結合されたコンピュータ可読媒体とを有するコンピュータシステムを説明する。このコンピュータ可読媒体は、コンピュータシステムによって実行されたとき、メモリバンクの温度が所定の温度を超えるかどうかを決定するために、その温度を測定し、メモリバンクの温度が所定の温度を超えると決定されたとき、そのコンピュータシステム内の少なくとも1つのスレッドがメモリバンク内に格納されたデータを求める要求を含むかどうかを決定し、その少なくとも1つのスレッドがメモリバンク内に格納されたデータを求める要求を含むと決定されたとき、コンピュータシステム内の第1のコア上でのその少なくとも1つのスレッドの実行を減速することをスケジューリングするようにコンピュータシステムを構成するコンピュータ実行可能命令を含む。
前述の要約は、単に例示的であり、決して限定的であることが意図されない。上で説明された例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴は、図面および以下の発明を実施するための形態を参照することによって明らかになるであろう。
本開示は、以下の図面と共に、以下の説明および添付の特許請求の範囲からよりよく理解されよう。図面内の構成要素は、原寸に比例しているとは限らず、代わりに、開示される主題の原理を例示することに重点が置かれている。これらの図面は本開示によるいくつかの実施形態だけを示し、したがって、その範囲を限定すると見なされないことを理解し、本開示は、添付の図面の使用により、追加の特異性および詳細を用いて説明される。
本開示の少なくともいくつかの実施形態に従って構成されたコンピュータシステムを例示する図である。 本開示の少なくとも実施形態によるオペレーティングシステムによって実行されているアプリケーションプログラムを例示する図である。 本開示の少なくともいくつかの実施形態に従ってメモリコントローラに送信される要求を発行するスレッドに分割されているアプリケーションプログラムの概略図である。 本開示の少なくともいくつかの実施形態に従って構成された流れ図である。
以下の説明は、特許請求される主題の十分な理解をもたらすために、特定の詳細と共に様々な例を記載する。しかし、特許請求される主題は、本明細書で開示される特定の詳細のうちのいくつかまたはより多くの当該詳細なしに実行可能である点を当業者は理解されよう。さらに、状況によっては、よく知られている方法、手順、システム、構成要素、および/または回路は、特許請求される主題を不必要にあいまいにすることを回避するために、詳しく説明されていない。以下の詳細な説明では、その説明の一部を形成する添付の図面が参照される。図面では、別段文脈によって示されない限り、類似の符号は、通常、類似の構成要素を識別する。発明を実施するための形態、図面、および特許請求の範囲において説明される例示的な実施形態は、限定的なものとしない。本明細書で提示される主題の趣旨または範囲から逸脱せずに、その他の実施形態を利用することが可能であり、ここに提示される主題の趣旨および範囲から逸脱せずに、その他の変更を行うことも可能である。本明細書で一般に説明され、図面において例示される本開示の態様は、そのすべてが明示的に企図され、本開示の一部である幅広い異なる構成で構成、置換、組合せ、および設計され得る点を容易に理解されよう。
本開示は、CMPシステムにおいてDRAMメモリシステムが複数の処理コアの間の主な共有リソースであることを識別する。この共有リソースにアクセスするとき、実行のために、特定のコアを特定のアプリケーション、またはアプリケーション内の特定のスレッドに割り当てることができる。それぞれのアプリケーション、またはスレッドは、メモリ内、および詳細には、メモリ内の特定のメモリバンク内のデータを求める要求を生成することが可能である。特定のメモリバンク内のデータを求める要求が非常に多いと、結果として、その特定のメモリバンクの過熱を引き起こし、最終的に、そのメモリバンクの動作故障を引き起こす可能性がある。オペレーティングシステムは、特定のメモリバンクの過熱を回避するために、その特定のメモリバンクに対して非常に多く要求している可能性がある特定の1つまたは複数のコアを減速させることが可能である。
本開示に照らして、コアは依然としてメモリバンクに対するアクセスを必要としない他のタスクに関して使用可能であるため、メモリバンクの過熱を回避するために、特定のコアを減速させることは最適下限であり得ることが理解される。結果として、本開示は、特定のコアを減速させる必要なく、メモリバンクの過熱を回避することが望ましい場合があることを理解している。
本開示は、アプリケーション、またはアプリケーション内のスレッドによって使用されるメモリバンクの動作温度に応答して、それらのアプリケーションまたはスレッドをスケジューリングすることによって、特定のコアを減速させる必要なしに、メモリバンクの過熱を回避することが可能であるという発見を使用することが可能である。
図1は、本開示の少なくともいくつかの実施形態に従って構成されたコンピュータシステムを例示する。図1は、プロセッサ110と、メモリ120と、1つまたは複数のドライブ130とを含むコンピュータ100を例示する。ドライブ130およびその関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶装置をコンピュータ100に提供するように構成可能である。ドライブ130は、オペレーティングシステム140と、アプリケーションプログラム150と、プログラムモジュール160と、データベース180とを含むことが可能である。オペレーティングシステム140および/またはアプリケーションプログラム150は、例えば、コンピュータ100に図4に指定される機能および/または動作、例えば、スレッドスケジューリングアルゴリズム152を実行させるためのプログラム命令を含むことが可能である。コンピュータ100は、それを介してユーザがコマンドおよびデータを入力できるユーザ入力デバイス190を含むことが可能である。入力デバイスは、電子デジタイザと、マイクロフォンと、キーボードと、一般に、マウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイスとを含むことが可能である。その他の入力デバイスは、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどを含むことが可能である。
これらの入力デバイスおよびその他の入力デバイスは、システムバスに結合可能なユーザ入力インターフェースを介してプロセッサ110に結合可能であるか、あるいは当該入力デバイスは、パラレルポート、ゲームポート、もしくはユニバーサルシリアルバス(USB)など、その他のインターフェースまたはバス構造によって接続可能である。コンピュータ100は、出力周辺インターフェース194などを介して接続可能なスピーカ、プリンタ、またはディスプレイ202など、周辺出力デバイスを含むことが可能である。
コンピュータ100は、ネットワークインターフェース196に接続された遠隔コンピュータなど、1つまたは複数のコンピュータに対する論理接続を使用して、ネットワーキング環境で動作するように構成され得る。この遠隔コンピュータは、パーソナルコンピュータ(PC)、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の共通ネットワークノードであってよく、コンピュータ100に関連して上で説明された要素の多くまたはすべてを含むことが可能である。
ネットワーキング環境は、事務所、企業広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)、イントラネット、およびインターネットを含むことが可能である。一例では、コンピュータ100は、そこからデータが移動されている送信元機械であってよく、遠隔コンピュータは、宛先機械を備えてよく、またはその逆であってもよい。送信元ソース機械および宛先機械は、ネットワーク108または任意の他の手段によって接続できず、代わりに、データは、送信元プラットフォームによって書き込まれて、1つまたは複数の宛先プラットフォームによって読み取られることが可能な任意の媒体を経由して移動可能である。LANまたはWLANのネットワーキング環境では、コンピュータ100は、ネットワークインターフェース196もしくはアダプタを介して、LANまたはWANに接続可能である。WANネットワーキング環境では、コンピュータ100は、モデム、またはインターネットもしくはネットワーク108など、WAN上で通信を確立するためのその他の手段を含むことが可能である。コンピュータ同士の間で通信リンクを確立するその他の手段を使用することも可能である。
コンピュータ周辺装置は、システムバスを介してコンピュータ100のプロセッサ110およびメモリ120に結合された任意のデバイスを含むことが可能である。コンピュータ周辺装置は、ディスプレイ202、プリンタ、またはスピーカを含む出力周辺インターフェースと、ドライブ130と、キーボード、マウス、およびマイクロフォンなどのユーザ入力デバイス190と、ネットワークインターフェース196とに接続された任意のデバイスを含むことが可能である。コンピュータ周辺装置の構成要素は、電力を使用することが可能であり、スピーカ、発光ダイオードなどの照明要素、またはディスプレイに照明を提供するために使用されるバックライト、LCD、LED、OLEO、CRT、もしくはプラズマディスプレイなどのディスプレイ要素、または中央処理装置(CPU)、グラフィック処理ユニット(GPU)、メモリなどの半導体チップなど、任意のデバイスであってよい、コンピュータ周辺装置内の任意のデバイスを含むことが可能である。一態様によれば、プロセッサ110および/またはプログラムモジュール160が、ユーザ経験に対する損害を最小限に抑えながら、電力低減および電力保存を実行できるように、コンピュータ100をネットワーキング環境において接続することが可能である。
いくつかの例では、コンピュータシステム内で実行しているスレッドをスケジューリングするための方法が開示される場合がある。このコンピュータシステム(例えば、コンピュータ100)は、第1のコアおよび第2のコアを有するマイクロプロセッサ、オペレーティングシステム、ならびに/またはデータを格納するためのメモリバンクを含むことが可能である。これらの方法は、メモリバンクの温度を測定すること、メモリバンクの温度が所定の温度を超える場合、そのスレッドがメモリバンク内に格納されたデータを求める要求を含むかどうかを決定することを含むことが可能である。これらの方法は、そのスレッドがデータを求める要求を含むかどうかを決定すると、スレッドの実行を減速することを含むことが可能である。
さらなる例では、そのコンピュータシステム(例えば、コンピュータ100)が、第1のコアおよび第2のコアを有するマルチプロセッサと、オペレーティングシステムと、データを格納するための第1のメモリバンクおよび第2のメモリバンクとを含むことが可能な、コンピュータシステム内で実行しているスレッドをスケジューリングするための方法が説明される場合がある。これらの方法は、第1のメモリバンクの第1の温度および第2のメモリバンクの第2の温度を測定すること、その第1の温度および第2の温度のうちのいずれかが所定の温度を超えるかどうかを決定することを含むことが可能である。これらの方法は、そのスレッドが、その温度が所定の温度を超えるメモリバンク内のデータを求める要求を含むかどうかを決定すると、そのスレッドの実行を減速することを含むことが可能である。
その他の例では、そのコンピュータシステム(例えば、コンピュータ100)が、第1のコアおよび第2のコアを有するマルチプロセッサと、オペレーティングシステムと、データを格納するためのメモリバンクとを含むことが可能な、コンピュータシステム内で実行しているスレッドをスケジューリングするための方法が説明される場合がある。メモリバンクの温度は所定の温度を超える場合がある。これらの方法は、スレッドの実行を減速させるために、オペレーティングシステムを使用することを含むことも可能である。
図2は、本開示の少なくともいくつかの実施形態に従って構成されたオペレーティングシステムによって実行されているアプリケーションプログラムを例示する。図2に示されるように、オペレーティングシステム140は、ドライブ130からアプリケーションプログラム150を実行することができる。オペレーティングシステム140および/またはアプリケーションプログラム150は、例えば、コンピュータ100に図4に指定された機能および/または動作を実行させるためのプログラム命令を含むことが可能である。アプリケーションプログラム150は、マイクロプロセッサ111内のオペレーティングシステム140によって実行可能な任意のアプリケーション、プログラム、プログラムの部分、またはスレッドであってよい。アプリケーションプログラム150は、メモリコントローラ210を使用して、データ230をメモリ120内にロードし、メモリ120からデータ230にアクセスするように構成可能である。アプリケーションプログラム150は、1つまたは複数の要求226を使用して、メモリ120のメモリバンク122内にデータ230をロードし、メモリ120のメモリバンク122からデータ230にアクセスするなどのタスクを達成するために、スレッド220と呼ばれる複数のサブアプリケーションを実行するように構成可能である。スレッド220は、アプリケーションプログラム150によって実行可能である。アプリケーションプログラム150は、タスクの実行を、アプリケーションプログラムがそのタスクを達成するために必要と見なすだけの数のスレッド220に分割するように構成可能である。例えば、アプリケーションプログラム150が複数のページを有する文書を用いたワード処理プログラムであり、アプリケーションプログラム150がその文書のそれぞれのページのスペルチェックのタスクを達成するように構成され得る場合、アプリケーションプログラム150は、それぞれのスレッド220がその文書の一部をスペルチェックできるように、文書のスペルチェックのタスクを複数のスレッド220に分割することが可能である。それぞれのスレッド220は、実行のためにマルチプロセッサ111に送信可能である。マルチプロセッサ111内で実行されたとき、それぞれのスレッド220は、メモリ120内でデータ230に関する要求226を作成するように適合可能である。要求226は、効率的に動作するようにマルチプロセッサ111を構成することができるように要求226を組織できるメモリコントローラ210に送信可能である。
いくつかの実施形態では、図2に示されるように、マルチプロセッサ111は、2つ以上のスレッド220を同時に実行できるプロセッサを含むことが可能である。マルチプロセッサ111は、コア412および512として知られる複数のプロセッサを含むことが可能であり、またはマルチスレッドプロセッサとしても知られている、複数のスレッド220を同時に実行できる単一のプロセッサ(412もしくは512のうちの1つだけ)を含むことも可能である。図2は、2つのコア412および512を含む例示的なマルチプロセッサ111を示すが、任意の特定数のコアに限定されない。「コア」という用語は、本明細書において、単一のスレッドを処理することが可能であり、単一のスレッドを処理できるプロセッサまたはプロセッサ内の部分を指す場合がある任意のデバイスを指すために使用される場合がある。マルチスレッドプロセッサは、複数のコアを有するプロセッサと呼ばれる場合がある。複数のプロセッサを有するコンピュータ100は、本明細書において、複数のコアを有するコンピュータ100と呼ばれる場合がある。メモリバンク122の温度を測定するための温度センサ700、例えば、熱電対または液体温度計も存在する。
図3は、本開示の少なくともいくつかの実施形態に従って、メモリコントローラに送信される要求を発行するスレッドに分割されているアプリケーションプログラムの概略図を示す。図3に示されるように、アプリケーション150は、複数のスレッド220〜220に分割可能であり、この場合、nはスレッド220の数を表すことが可能であり、それぞれのスレッドは、アプリケーション150に関するタスクを実行することが可能であり、例えば、図2のマルチプロセッサ111上で実行可能である。このマルチプロセッサは、アプリケーションプログラム150から複数のスレッド220〜220を個々にまたは同時に受信および実行するように構成され得る。マルチプロセッサ上で実行されるそれぞれのスレッド220は、それぞれの他のスレッド220から独立して実行可能であり、メモリ120内に格納されたデータ230に関して複数の要求226a1〜226no
を発行することが可能であり、この場合、第1の指数(a...n)は、要求226に関連するスレッド220を表すことが可能であり、第2の指数(1...o)は、特定のスレッド220に関連する要求226の数を表すことが可能である。
それぞれのスレッド220は、メモリ120内に格納されたデータ230に関する要求226を発行することが可能であり、一例では、メモリ120内のメモリバンク122〜122内に格納されたデータ230に関する要求226を発行することが可能であり、この場合、指数(a、b...m)は、メモリバンク122の数を表すことが可能である。メモリ120は、異なるメモリバンクからデータ230を要求する場合、複数の未解決のメモリ要求226が並列して処理されることを可能にするように構成可能な複数のメモリバンク122から122を含むことが可能である。結果として、第1のメモリバンク122および第2のメモリバンク122は、データ230に関する要求226の受信時に、メモリコントローラ210によって同時にアクセスされ得る。
それぞれのメモリバンク122は、指数(1...i)が列の数を表すことが可能な列CからCと、指数(1...j)が行の数を表すことが可能な行RからRとを含む二次元アレイであってよい。行は、連続的なメモリ位置内にデータを格納することが可能であり、例えば、およそ1〜2キロバイト(KB)のサイズであってよい。メモリバンク122内のデータ230は、最大で1行を含み得る行バッファRからアクセス可能である。一例では、それぞれのメモリバンク122は、1つの行バッファRを含むことが可能である。メモリバンク122がデータ230に関するそれぞれの要求226にサービス提供するためにかかる時間は、それぞれの行バッファRの状態に依存する可能性があり、3つの範疇のうちの1つに該当し得る。第1の範疇は、行ヒット(row−hit)であってよく、この場合、要求226は、それぞれの行バッファR内で現在開放され、メモリコントローラ210がそれぞれのメモリバンク122に対する読取りコマンドまたは書込みコマンドだけを発行することを可能にし、結果として、tCLのバンクアクセスレイテンシをもたらし得る行に対する可能性がある。
第2の範疇は、行閉鎖(row closed)であってよく、この場合、行バッファR内には開放された行が存在しない可能性があり、その結果、メモリコントローラ210は、まず要求される行を開放するための起動コマンドを発行し、次いで、読取り/書込みコマンドを発行し、結果として、tRCD+tCLの総レイテンシをもたらす必要があり、式中、tRCDは起動コマンドに関するレイテンシであり、tCLは読取り/書込みコマンドに関するレイテンシである。第3の範疇は、行衝突(row conflict)であってよく、この場合、要求226は、それぞれの行バッファR内の現在の行とは異なる行に対する可能性があり、その結果、メモリコントローラ210は、まずプリチャージ(precharge)コマンドを発行して、(必要とされる行をアクティブ化することによって)必要とされる行を開放し、必要とされる行内のデータに関して読取り/書込みコマンドを発行する必要がある。これらのアクセスは、tRP+tRCD+tCLの最高総レイテンシを負う可能性があり、式中、tRPは(行を閉鎖するための)行プリチャージに関するレイテンシであり、tRCDは起動コマンドに関するレイテンシであり、tCLは読取り/書込みコマンドに関するレイテンシである。
メモリコントローラ210は、メモリ120およびマルチプロセッサと通信している形で構成可能であり、マルチプロセッサ内を含めて、システムに沿ってどこに配置されてもよい。メモリコントローラ210は、要求226がサービス提供されるのを待っている可能性がある間、要求226およびデータ230にバッファリングするように構成可能なメモリ要求バッファ211を含むことが可能である。メモリコントローラ210は、サービス提供されることになる次の要求226を選択するように構成可能なスケジューラ212を含むことが可能である[6,2,3]。いくつかの実施形態では、スケジューラ212は2つのレベルを有し得る。サービス提供されることになる次の要求226を選択するとき、スケジューラ212は、メモリバンク122〜122の状態と、メモリコントローラ210をそれぞれのメモリバンク122に接続しているメモリバス214〜214の状態と、要求226の状態とを考慮するように構成可能である。要求226に関するメモリコマンドは、そのスケジューリングが、メモリバンク122a〜122m、およびアドレス/データ/システムバスなど、いかなるリソース衝突も引き起こさず、いかなるメモリタイミング制約にも違反しない場合、スケジューラ212によってスケジュールされ得る。いかなる衝突も引き起こさないメモリコマンドは、準備ができていると見なすことができる。
いくつかの実施形態では、コンピュータ100は、図1、2、および3に示されるように、複数のコア412および512を有し得るマルチプロセッサ110または111と、メモリバンク122とを含むことが可能である。
図4は、本開示の少なくともいくつかの実施形態による流れ図を例示する。例示されるように、メモリバンクの過熱を防ぐために、または電力使用を最小限に抑えるために、スレッドスケジューリングアルゴリズム600を使用して、オペレーティングシステムまたはアプリケーションプログラムによって、スレッドをスケジューリングすることを制御することが可能である。スレッドスケジューリングアルゴリズム600は、ブロック601で開始することが可能である。スレッドスケジューリングアルゴリズム600は、オペレーティングシステムまたはアプリケーションプログラムによって開始することも可能である。
スレッドスケジューリングアルゴリズム600の開始時に、ブロック602において、メモリバンクの温度を測定することが可能である。温度は、温度を測定できるメモリバンク上の遠隔センサまたは温度を測定できるメモリバンク内の埋込みセンサを使用して測定可能である。このセンサは、任意の温度センサ、例えば、熱電対または液体温度計であってよい。スレッドスケジューリングアルゴリズム600は、ブロック604において、測定された温度が所定の温度を超えるかどうかを決定するように構成可能である。
所定の温度は、それを超えると、メモリバンクが確実に動作できない温度またはそれを超えるとメモリバンクに対して熱的損傷が発生する可能性がある温度であってよく、所定の温度を超える温度でメモリバンクを動作させること、したがって、メモリを動作させることは、メモリおよびメモリバンクに有害な可能性があり、メモリバンク内に格納されたデータの信頼性を低減する可能性がある。あるいは、所定の温度は、メモリバンクが確実に動作する最大温度であってもよい。電力使用を最小限に抑えるとき、所定の温度は、ユーザによって設定可能であるか、または製造会社によって事前に決定され、かつ例えば、様々な電力使用レベルを示すことができるスライディングスケールから、ユーザ、アプリケーションプログラムもしくはオペレーティングシステムによって選択可能である。
測定された温度が所定の温度を超えない場合、スレッドスケジューリングアルゴリズム600は、ブロック604からブロック602に戻ることができる。メモリバンクの温度が所定の温度を超える場合、スレッドスケジューリングアルゴリズム600は、ブロック604からブロック606に進むことができる。ブロック606において、スレッドスケジューリングアルゴリズム600は、そのスレッドがメモリバンク内のデータを求める要求を含むかどうかを決定することが可能である。そのスレッドがメモリバンク内のデータを求める要求を含むと決定され、メモリバンクの温度が所定の温度を超える場合、スレッドスケジューリングアルゴリズム600は、ブロック608において、そのスレッドの実行を減速させることが可能である。そのスレッドがメモリバンク内のデータを求める要求を含まない場合、スレッドスケジューリングアルゴリズム600はブロック610で終了できる。
スレッドスケジューリングアルゴリズム600は、いくつかの様式でスレッドの実行を減速させることができる。いくつかの実施形態では、第1のコア412および第2のコア512(図2)は、第1のタスクセットおよび第2のタスクセットを実行するように構成可能である。それぞれのタスクセットは、単一のスレッドまたは複数のスレッドを含むことが可能である。スレッドスケジューリングアルゴリズム600は、第1のタスクセットおよび第2のタスクセットのうちのどれが1番目に完了されることが予測され得るかを決定して、1番目に完了されることが予測され得ないタスクセットを実行しているコア上で実行するようにそのスレッドをスケジューリングすることによって、そのスレッドの実行を減速させるように適合可能である。
いくつかの実施形態では、スレッドスケジューリングアルゴリズム600は、スレッドの実行の優先順位を下げることによって、そのスレッドの実行を減速させるように適合可能である。例えば、オペレーティングシステムは、通常、それぞれのスレッドに1〜5または1〜100の値などの優先順位値を割り当て、より大きな値がより高い優先順位に対応し、優先順位が高ければ高いほど、スレッドの実行に充てられるコア時間の割合が高い。優先順位値の低減量は、例えば、優先順位の約10%、約20%、約30%、約40%、約50%、約60%、約70%、約80%、および約90%を含めて、約1%から約99%など、優先順位値の割合であってよい。あるいは、この優先順位値は、単一の優先順位値単位だけ低減されてよく、またはこの優先順位値は、最小優先順位値まで低減されてもよい。
いくつかの実施形態では、スレッドスケジューリングアルゴリズム600は、コア上で実行するようにスレッドをスケジューリングすることを遅延させることによって、例えば、第1のコア412および第2のコア512(図2)のうちの1つの上で実行するようにスレッドをスケジューリングすることを遅延させて、その遅延の後で、第1のコア412および第2のコア512(図2)のうちの1つの上で実行するようにスレッドをスケジューリングすることによって、スレッドの実行を減速させるように適合可能である。この遅延量は、例えば、約10%、約20%、約30%、約40%、約50%、約60%、約70%、約80%、および約90%を含めて、約1%から約99%など、実行するためにスレッドが公称でかけることになる時間の割合であってよい。あるいは、この遅延量は、例えば、実行するためにスレッドが公称でかけることになる時間の約2倍、約5倍、約10倍、約15倍、約20倍、約50倍、約100倍、約200倍、約500倍、約600倍、約700倍、約800倍、および約900倍を含めて、実行するためにスレッドが公称でかけることになる時間の1倍から1000倍など、実行するためにスレッドが公称でかけることになる時間量の倍数であってもよい。
いくつかの実施形態では、スレッドの実行の減速時に、スレッドスケジューリングアルゴリズム600は、例えば、スレッドスケジューリングアルゴリズム600を再度開始することによって、メモリバンクの温度を再度測定するように適合可能である。メモリバンクの温度が所定の温度未満である場合、スレッドスケジューリングアルゴリズム600は、スレッドの実行を減速せずに、コア内でスレッドをスケジューリングするように適合可能である。
様々な実施形態では、これらの開示される方法は、コンピュータシステムと共に使用するためのコンピュータプログラム製品として実装可能である。かかる実装形態は、コンピュータ可読媒体(例えば、ディスケット、CD−ROM、ROM、または固定ディスク)など、有形媒体上に固定されるか、またはモデム、もしくは、媒体上でネットワークに接続された通信アダプタなど、その他のインターフェースデバイスを経由して、コンピュータシステムに送信可能な一連のコンピュータ命令を含むことが可能である。この媒体は、有形媒体(例えば、光通信線もしくはアナログ通信線)または無線技術(例えば、マイクロ波、赤外線伝送技術もしくはその他の伝送技術)を用いて実装された媒体であってよい。一連のコンピュータ命令は、このシステムに関して本明細書でこれまで説明された機能性のすべてまたは一部を実施することが可能である。当業者は、かかるコンピュータ命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムと共に使用するために、いくつかのプログラミング言語で書込み可能である点を理解されたい。さらに、かかる命令は、半導体、磁気メモリデバイス、光メモリデバイス、またはその他のメモリデバイスなど、任意のメモリデバイス内に格納可能であり、光伝送技術、赤外線伝送技術、マイクロ波伝送技術、またはその他の伝送技術など、任意の通信技術を使用して送信可能である。かかるコンピュータプログラム製品は、コンピュータシステムを用いて(例えば、システムROM上もしくは固定ディスク上に)事前にロードされた、印刷文書もしくは電子文書を伴う取出し可能媒体(例えば、シュリンクラップソフトウェア)として供給可能であるか、あるいはネットワーク上でサーバまたは電子掲示板(例えば、インターネットもしくはワールドワイドウェブ)から供給可能であることが予想される。当然、開示された主題のいくつかの実施形態は、ソフトウェア(例えば、コンピュータプログラム製品)とハードウェアの両方の組合せとして実装可能である。この開示された主題のさらに他の実施形態は、完全にハードウェアとして、または完全にソフトウェア(例えば、コンピュータプログラム製品)として実装される。
本明細書で説明される主題は、時には、異なる他の構成要素内に含まれた異なる構成要素、または異なる他の構成要素に接続された異なる構成要素を例示する。そのような示されたアーキテクチャは単なる例示であり、実際には、同じ機能性を達成する、多くのその他のアーキテクチャが実装可能である点を理解されよう。概念的な意味で、同じ機能性を達成するための構成要素のいずれの構成も、所望される機能性が達成されるように、有効に「関連付けられる」。したがって、特定の機能性を達成するために組み合わされる、本明細書のいずれの2つの構成要素も、アーキテクチャまたは中間構成要素にかかわらず、所望される機能性が達成されるように互いに「関連付けられる」と見なすことができる。同様に、そのように関連付けられたいずれの2つの構成要素も、所望される機能性を達成するために、互いに「動作可能に接続されている」または「動作可能に結合されている」と見なすこともでき、そのように関連付けられているいずれの2つの構成要素も、所望される機能性を達成するために、互いに「動作可能に結合続可能である」と見なすこともできる。動作可能に結合可能な特定の例は、物理的に噛み合わせ可能な(mateable)構成要素および/もしくは物理的に相互作用する構成要素、ならびに/または無線で相互作用可能な構成要素および/もしくは無線で相互作用する構成要素、ならびに/または論理的に相互作用する構成要素および/もしくは論理的に相互作用可能な構成要素を含むが、これらに限定されない。
本明細書における実質的に任意の複数用語および/または単数用語の使用に関して、当業者は、文脈および/もしくは応用例に応じて、複数から単数にかつ/または単数から複数に変換することが可能である。分かりやすくするために、本明細書において、様々な単数/複数の置換が明示的に記載される場合がある。
概して、本明細書、および、特に添付の特許請求の範囲(例えば、添付の特許請求の範囲の本文)において使用される用語は、一般に、「開放的な」用語として意図される(例えば、「含んでいる」という用語は、「含むが、それに限定されない」と解釈されるべきであり、「有する」という用語は、「少なくとも含む」と解釈されるべきであり、「含む」という用語は、「含むが、それに限定されない」と解釈されるべきである、など)ことを理解されよう。当業者は、特定の数の導入される請求項の列挙が意図される場合、かかる意図は、特許請求の範囲内で明示的に列挙されることになり、かかる列挙がない場合、かかる意図は存在しない点をさらに理解されよう。例えば、理解の支援として、以下の特許請求の範囲は、請求項の列挙を導入するために、「少なくとも1つの」および「1つまたは複数の」という導入句の使用を含む場合がある。しかし、かかる句の使用は、同じ請求項が、導入句「1つもしくは複数の」または「少なくとも1つの」、ならびに「a」または「an」などの不定冠詞を含むときですら、不定冠詞「a」または「an」による請求項の列挙の導入が、そのように導入された請求項の列挙を含む任意の特定の請求項を1つのかかる列挙だけを含む発明に限定することを意味すると解釈されるべきではなく(例えば、「a」および/または「an」は、典型的には、「少なくとも1つの」または「1つもしくは複数の」を意味すると解釈されるべきである)、同じことは、請求項の列挙を導入するために使用される定冠詞の使用に関しても当てはまる。加えて、特定の数の導入された請求項の列挙が明示的に列挙されているときですら、当業者は、かかる列挙は、一般に、少なくとも列挙された数を意味する(例えば、修飾語句を伴わない「2つの列挙」の単なる列挙は、一般に、少なくとも2つの列挙、または2つ以上の列挙を意味する)と解釈されるべきである点を理解されよう。さらに、「A、B、およびCのうちの少なくとも1つの、など」に類似する表現方法が使用される場合、一般に、そのような構造は、当業者がその表現を理解するであろう意味が意図される(例えば、「A、B、およびCのうちの少なくとも1つを有するシステム」は、Aだけを有するシステム、Bだけを有するシステム、Cだけを有するシステム、AとBとを共に有するシステム、AとCとを共に有するシステム、BとCとを共に有するシステム、および/またはAと、Bと、Cとを共に有するシステムなどを含むことになるが、これらに限定されない)。「A、B、またはCのうちの少なくとも1つ、など」に類似する表現方法が使用される場合、一般に、そのような構造は、当業者がその表現を理解するであろう意味が意図される(例えば、「A、B、またはCのうちの少なくとも1つを有するシステム」は、Aだけを有するシステム、Bだけを有するシステム、Cだけを有するシステム、AとBとを共に有するシステム、AとCとを共に有するシステム、BとCとを共に有するシステム、および/またはAと、BとCとを共に有するシステムなどを含むことになるが、これらに限定されない)。当業者は、明細書内であれ、特許請求の範囲内であれ、または図面内であれ、2つ以上の代替用語を提示する実質的にいかなる離接語および/または離接句も、それらの用語のうちの1つ、それらの用語のどちらか、またはそれらの用語の両方を含む可能性を企図すると理解されるべきである点をさらに理解されよう。例えば、「AまたはB」という成句は、「A」、もしくは「B」、または「AおよびB」の可能性を含むと理解されるになる。
開示された主題の様々な実施形態が説明されているが、本開示の範囲内でその他の実施形態および実装形態が可能である点は当業者に明らかであろう。したがって、この開示された主題は、添付の特許請求の範囲およびそれらの均等物の観点からを除いて、限定されるべきではない。

Claims (18)

  1. コンピュータシステム内でスレッドの実行をスケジューリングする方法であって、
    前記コンピュータシステム内のメモリバンクの温度を測定すること、
    前記メモリバンクの前記温度が特定の温度を超えるかどうかを決定すること、
    前記スレッドが前記メモリバンク内に格納されたデータを求める要求を含むかどうかを決定すること、及び
    前記メモリバンクの前記温度が前記特定の温度を超えるとの決定、及び前記スレッドが前記メモリバンク内に格納されたデータを求める要求を含むと決定に応答して、前記スレッドの実行を減速させることをスケジューリングすること
    を含み、
    前記スレッドの実行を前記減速させることを前記スケジューリングすることは、
    前記コンピュータシステムの第1のコア上で実行している第1の先行タスクセットおよび前記コンピュータシステムの第2のコア上で実行している第2の先行タスクセットのうち、どちらが1番目に完了されることになり、どちらが2番目に完了されることになるかを決定すること、及び
    2番目に完了されることになると決定された先行タスクセットを実行しているコア上で実行するように、前記スレッドをスケジューリングすること
    を含む、
    方法。
  2. 前記スレッドが優先順位値を有し、前記スレッドの実行を前記減速させることを前記スケジューリングすることが更に、前記優先順位値を低減させることを含む、請求項1に記載の方法。
  3. 前記優先順位値を前記低減させることが、前記優先順位値を最小優先順位値まで低減させることを含む、請求項2に記載の方法。
  4. 前記優先順位値を前記低減させることが、前記優先順位値を約1%から約99%低減させることを含む、請求項2に記載の方法。
  5. 前記スレッドの実行を前記減速させることを前記スケジューリングすることが、オペレーティングシステムによって実行され、
    前記コンピュータシステムが、前記第1及び第2のコアに動作可能に結合されたコンピュータ可読媒体を備え、
    前記オペレーティングシステムが、前記コンピュータ可読媒体内で符号化される
    請求項1乃至4のいずれかに記載の方法。
  6. 前記スレッドの実行を前記減速させることを前記スケジューリングすることが更に、遅延の後で、前記第1又は第2のコア上で実行するように前記スレッドをスケジューリングすることを含む、請求項1乃至5のいずれかに記載の方法。
  7. 前記遅延が、実行するために前記スレッドが公称でかけることになる時間の約1倍から約1000倍である、請求項6に記載の方法。
  8. 前記特定の温度が、前記メモリバンクが確実に動作するほぼ最大温度である、請求項1乃至7のいずれかに記載の方法。
  9. 前記特定の温度が、電力使用レベルを示すスライディングスケールから、アプリケーションプログラムによって選択され、
    前記コンピュータシステムが、前記第1及び第2のコアに動作可能に結合されたコンピュータ可読媒体を備え、
    前記アプリケーションプログラムが、前記コンピュータ可読媒体内で符号化される
    請求項1に記載の方法。
  10. 前記温度が熱電対によって測定される、請求項1乃至9のいずれかに記載の方法。
  11. コンピュータシステム内でのスレッドの実行をスケジューリングするため、コンピュータ可読媒体内で符号化されソフトウェアを有するコンピュータプログラムであって、前記ソフトウェアは命令を含み、該命令は、実行に応答して
    前記コンピュータシステム内のメモリバンクの温度を測定し、
    前記メモリバンクの前記温度が特定の温度を超えるかどうかを決定し、
    前記スレッドが前記メモリバンク内に格納されたデータを求める要求を含むかどうかを決定し、且つ
    前記メモリバンクの前記温度が前記特定の温度を超えるとの決定、及び前記スレッドが前記メモリバンク内に格納されたデータを求める要求を含むとの決定に応答して、前記スレッドの実行を減速させることをスケジューリングする
    ように作用し、
    前記スレッドの実行を減速させることをスケジューリングするための前記命令は、実行に応答して、
    前記コンピュータシステムの第1のコア上で実行している第1の先行タスクセットおよび前記コンピュータシステムの第2のコア上で実行している第2の先行タスクセットのうち、どちらが1番目に完了されることになり、どちらが2番目に完了されることになるかを決定し、且つ
    2番目に完了されることになると決定された先行タスクセットを実行しているコア上で実行するように、前記スレッドをスケジューリングする
    ように作用する命令を含む、
    コンピュータプログラム。
  12. 前記スレッドの実行を減速させることをスケジューリングするための前記命令は更に、実行に応答して、前記スレッドの優先順位値を低減させるように作用する命令を含む、請求項11に記載のコンピュータプログラム。
  13. 前記スレッドの優先順位値を低減させるための前記命令が、実行に応答して、前記スレッドの前記優先順位値を約1%から約99%低減させるように作用する命令を含む、請求項12に記載のコンピュータプログラム。
  14. 当該コンピュータプログラムオペレーティングシステムである、請求項11乃至13のいずれかに記載のコンピュータプログラム。
  15. 前記スレッドの実行を減速させることをスケジューリングするための前記命令は更に、実行に応答して、遅延の後で、前記第1又は第2のコア上で実行するように前記スレッドをスケジューリングするように作用する命令を含む、請求項11乃至14のいずれかに記載のコンピュータプログラム。
  16. 第1のコアおよび第2のコアと、
    前記第1のコアおよび前記第2のコアに動作可能に結合されたメモリバンクと、
    前記第1のコアおよび前記第2のコアに動作可能に結合されたコンピュータ可読媒体とを備えるコンピュータシステムであって、
    前記コンピュータ可読媒体はコンピュータ実行可能命令を含み、該コンピュータ実行可能命令は、当該コンピュータシステムによ実行に応答して、
    前記メモリバンクの温度を測定し、
    前記メモリバンクの前記温度が特定の温度を超えるかどうかを決定し、
    スレッドが前記メモリバンク内に格納されたデータを求める要求を含むかどうかを決定し、且つ
    前記メモリバンクの前記温度が前記特定の温度を超えるとの決定、及び記スレッドが前記メモリバンク内に格納されたデータを求める要求を含むとの決定に応答して、前記スレッドの実行を減速させることをスケジューリングする
    ように当該コンピュータシステムを構成し、
    前記スレッドの実行を減速させることをスケジューリングするように当該コンピュータシステムを構成するための前記コンピュータ実行可能命令は、
    前記第1のコア上で実行している第1の先行タスクセットおよび前記第2のコア上で実行している第2の先行タスクセットのうち、どちらが1番目に完了されることになり、どちらが2番目に完了されることになるかを決定し、且つ
    2番目に完了されることになると決定された先行タスクセットを実行しているコア上で実行するように、前記スレッドをスケジューリングする
    ための命令を有する、
    コンピュータシステム。
  17. 前記メモリバンクの前記温度を測定するように適合された温度センサをさらに有し、前記温度センサが、前記第1のコアおよび前記第2のコアに動作可能に結合された、請求項16に記載のコンピュータシステム。
  18. 前記温度センサが熱電対である、請求項17に記載のコンピュータシステム。
JP2012521653A 2009-07-23 2010-06-25 スレッドスロットリング Expired - Fee Related JP5553392B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/507,952 US8819686B2 (en) 2009-07-23 2009-07-23 Scheduling threads on different processor cores based on memory temperature
US12/507,952 2009-07-23
PCT/US2010/039939 WO2011011156A1 (en) 2009-07-23 2010-06-25 Thread throttling

Publications (2)

Publication Number Publication Date
JP2012533828A JP2012533828A (ja) 2012-12-27
JP5553392B2 true JP5553392B2 (ja) 2014-07-16

Family

ID=43498401

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012521653A Expired - Fee Related JP5553392B2 (ja) 2009-07-23 2010-06-25 スレッドスロットリング

Country Status (5)

Country Link
US (1) US8819686B2 (ja)
JP (1) JP5553392B2 (ja)
KR (1) KR101373947B1 (ja)
CN (1) CN102473137B (ja)
WO (1) WO2011011156A1 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006044476A2 (en) 2004-10-12 2006-04-27 Robert Vernon Vanman Method of and system for mobile surveillance and event recording
WO2009102480A2 (en) 2008-02-15 2009-08-20 Enforcement Video, Llc System and method for multi-resolution storage of images
US9286256B2 (en) * 2009-09-28 2016-03-15 Nvidia Corporation Sharing data crossbar for reads and writes in a data cache
US8548639B2 (en) * 2010-07-15 2013-10-01 Seagate Technology Llc Temperature monitoring systems and methods
US8719828B2 (en) * 2011-10-14 2014-05-06 Intel Corporation Method, apparatus, and system for adaptive thread scheduling in transactional memory systems
JP6041610B2 (ja) * 2012-10-02 2016-12-14 キヤノン株式会社 情報処理装置及びその制御方法、並びに、そのプログラムと記憶媒体
US20140188302A1 (en) * 2012-12-28 2014-07-03 Vasudevan Srinivasan Priority based intelligent platform passive thermal management
KR20150050135A (ko) 2013-10-31 2015-05-08 삼성전자주식회사 복수의 이종 코어들을 포함하는 전자 시스템 및 이의 동작 방법
KR101538458B1 (ko) * 2014-01-03 2015-07-23 연세대학교 산학협력단 3차원 매니코어 프로세서를 위한 전압섬 형성 방법
US9886326B2 (en) * 2014-02-13 2018-02-06 Advanced Micro Devices, Inc. Thermally-aware process scheduling
US9557797B2 (en) 2014-05-20 2017-01-31 Qualcomm Incorporated Algorithm for preferred core sequencing to maximize performance and reduce chip temperature and power
US10095286B2 (en) 2014-05-30 2018-10-09 Apple Inc. Thermally adaptive quality-of-service
US10203746B2 (en) 2014-05-30 2019-02-12 Apple Inc. Thermal mitigation using selective task modulation
US9575537B2 (en) 2014-07-25 2017-02-21 Intel Corporation Adaptive algorithm for thermal throttling of multi-core processors with non-homogeneous performance states
US9898071B2 (en) 2014-11-20 2018-02-20 Apple Inc. Processor including multiple dissimilar processor cores
US9958932B2 (en) 2014-11-20 2018-05-01 Apple Inc. Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture
US9928115B2 (en) 2015-09-03 2018-03-27 Apple Inc. Hardware migration between dissimilar cores
TWI564807B (zh) 2015-11-16 2017-01-01 財團法人工業技術研究院 排程方法及應用其的處理裝置
US10341605B1 (en) 2016-04-07 2019-07-02 WatchGuard, Inc. Systems and methods for multiple-resolution storage of media streams
US9910673B2 (en) * 2016-04-19 2018-03-06 Xiaolin Wang Reconfigurable microprocessor hardware architecture
US10445099B2 (en) 2016-04-19 2019-10-15 Xiaolin Wang Reconfigurable microprocessor hardware architecture
US10133610B2 (en) 2016-08-16 2018-11-20 International Business Machines Corporation System, method and recording medium for temperature-aware task scheduling
US10459517B2 (en) * 2017-03-31 2019-10-29 Qualcomm Incorporated System and methods for scheduling software tasks based on central processing unit power characteristics
US10700954B2 (en) * 2017-12-20 2020-06-30 Advanced Micro Devices, Inc. Scheduling memory bandwidth based on quality of service floorbackground
US11568236B2 (en) 2018-01-25 2023-01-31 The Research Foundation For The State University Of New York Framework and methods of diverse exploration for fast and safe policy improvement
US10671453B1 (en) 2019-04-29 2020-06-02 EMC IP Holding Company LLC Data storage system employing two-level scheduling of processing cores
US11005970B2 (en) 2019-07-24 2021-05-11 EMC IP Holding Company LLC Data storage system with processor scheduling using distributed peek-poller threads
TW202141290A (zh) 2020-01-07 2021-11-01 韓商愛思開海力士有限公司 記憶體中處理(pim)系統和pim系統的操作方法
US11635911B2 (en) 2020-01-07 2023-04-25 SK Hynix Inc. Processing-in-memory (PIM) system and operating methods of the PIM system
KR102291912B1 (ko) * 2020-11-25 2021-08-23 오픈엣지테크놀로지 주식회사 메모리 컨트롤러 및 이를 이용한 메모리 열 쓰로틀링 방법

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2272085A (en) 1992-10-30 1994-05-04 Tao Systems Ltd Data processing system and operating system.
US5480772A (en) 1993-02-03 1996-01-02 Brandeis University In vitro activation of a nucleus
JPH09167141A (ja) 1995-12-18 1997-06-24 Hitachi Ltd 負荷分散制御方法
US6298370B1 (en) 1997-04-04 2001-10-02 Texas Instruments Incorporated Computer operating process allocating tasks between first and second processors at run time based upon current processor load
US6021076A (en) * 1998-07-16 2000-02-01 Rambus Inc Apparatus and method for thermal regulation in memory subsystems
US6772352B1 (en) 2000-09-29 2004-08-03 Intel Corporation Method and apparatus for reducing the rate of commands being issued if the rate exceeds a threshold which is based upon a temperature curve
US7140016B2 (en) 2000-11-29 2006-11-21 Texas Instruments Incorporated Media accelerator quality of service
JP3817449B2 (ja) 2001-07-30 2006-09-06 株式会社ルネサステクノロジ データ処理装置
DE10313605B4 (de) 2003-03-26 2009-03-19 Qimonda Ag Vorrichtung und Verfahren zum Steuern mehrerer Speicherbausteine
JP2004355435A (ja) 2003-05-30 2004-12-16 Canon Inc アクセス調停装置
JP4213572B2 (ja) 2003-11-28 2009-01-21 株式会社東芝 電子機器およびプロセッサ速度制御方法
JP3870189B2 (ja) 2003-12-15 2007-01-17 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリアクセスに関する設定を行うデータ転送レート制御装置、情報処理装置、制御方法、プログラム、及び記録媒体
US7984442B2 (en) 2004-01-29 2011-07-19 Klingman Edwin E Intelligent memory device multilevel ASCII interpreter
JP3862715B2 (ja) * 2004-06-01 2006-12-27 株式会社ソニー・コンピュータエンタテインメント タスク管理方法、タスク管理装置、半導体集積回路、電子装置、およびタスク管理システム
US8122187B2 (en) 2004-07-02 2012-02-21 Qualcomm Incorporated Refreshing dynamic volatile memory
JP4197672B2 (ja) 2004-09-30 2008-12-17 株式会社東芝 マルチプロセッサ計算機及びプログラム
JP2006209525A (ja) 2005-01-28 2006-08-10 Matsushita Electric Ind Co Ltd メモリシステム
JP4367856B2 (ja) * 2005-07-07 2009-11-18 レノボ シンガポール プライヴェート リミテッド プロセス制御システム及びその制御方法
US7412353B2 (en) 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
US7590473B2 (en) 2006-02-16 2009-09-15 Intel Corporation Thermal management using an on-die thermal sensor
US7596430B2 (en) 2006-05-03 2009-09-29 International Business Machines Corporation Selection of processor cores for optimal thermal performance
US7406407B2 (en) 2006-06-01 2008-07-29 Microsoft Corporation Virtual machine for operating N-core application on M-core processor
US20070294693A1 (en) 2006-06-16 2007-12-20 Microsoft Corporation Scheduling thread execution among a plurality of processors based on evaluation of memory access data
US7493477B2 (en) 2006-06-30 2009-02-17 Intel Corporation Method and apparatus for disabling a processor core based on a number of executions of an application exceeding a threshold
US7830690B2 (en) 2006-10-30 2010-11-09 Intel Corporation Memory module thermal management
US7596714B2 (en) 2006-11-20 2009-09-29 Intel Corporation Methods and apparatus to manage throttling in computing environments
US20080234953A1 (en) 2007-03-22 2008-09-25 Ignowski James S Power estimation for a semiconductor device
US8001338B2 (en) 2007-08-21 2011-08-16 Microsoft Corporation Multi-level DRAM controller to manage access to DRAM
US8332865B2 (en) 2008-02-21 2012-12-11 International Business Machines Corporation Adjunct processor load balancing
US8161304B2 (en) * 2009-01-20 2012-04-17 Microsoft Corporation Power management for large memory subsystems
US8055805B2 (en) 2009-03-31 2011-11-08 Intel Corporation Opportunistic improvement of MMIO request handling based on target reporting of space requirements

Also Published As

Publication number Publication date
JP2012533828A (ja) 2012-12-27
CN102473137B (zh) 2015-07-15
KR101373947B1 (ko) 2014-03-12
CN102473137A (zh) 2012-05-23
KR20120017455A (ko) 2012-02-28
US20110023039A1 (en) 2011-01-27
US8819686B2 (en) 2014-08-26
WO2011011156A1 (en) 2011-01-27

Similar Documents

Publication Publication Date Title
JP5553392B2 (ja) スレッドスロットリング
JP5560331B2 (ja) 分離によるバッチスケジューリング
US9372526B2 (en) Managing a power state of a processor
US8839255B2 (en) Scheduling of threads by batch scheduling
CN1717645B (zh) 用于多线程处理器性能控制的装置和方法
JP5752242B2 (ja) マルチコアプロセッサに関するマルチスレッドアプリケーション・アウェア・メモリスケジューリングスキーム
US20190065243A1 (en) Dynamic memory power capping with criticality awareness
JPWO2014188561A1 (ja) マルチcpuシステム及びマルチcpuシステムのスケーリング方法
US20110191539A1 (en) Coprocessor session switching
JP2008276391A (ja) メモリアクセス制御装置
KR101635395B1 (ko) 멀티포트 데이터 캐시 장치 및 멀티포트 데이터 캐시 장치의 제어 방법
KR101377881B1 (ko) 메모리 요청 스케줄링의 어플리케이션 선택
US8166316B2 (en) Single interface access to multiple bandwidth and power memory zones
US8392640B2 (en) Pre-memory resource contention resolution
JP5911548B1 (ja) 共有メモリへのアクセス要求をスケジューリングするための装置、方法およびコンピュータプログラム
JP2009129112A (ja) コンピュータ・システムおよびプロセスに対するデバイスの管理方法
JP5932261B2 (ja) メモリ制御装置、メモリ制御方法
KR20110127707A (ko) 기억 제어 장치 및 그 제어 방법
JP5058116B2 (ja) ストリーミングidメソッドによるdmac発行メカニズム
Ha et al. Dynamic Capacity Service for Improving CXL Pooled Memory Efficiency
Jang et al. NP-completeness of memory-aware virtual machine scheduling problem
JP2011022936A (ja) ディスクアレイ装置及びその制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130708

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130813

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131028

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140422

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20140513

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140522

R150 Certificate of patent or registration of utility model

Ref document number: 5553392

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees