JP2007183925A - ソフトウェア熱プロファイルの分析生成のコンピュータによって実施する方法、データ処理システム、およびコンピュータ・プログラム - Google Patents

ソフトウェア熱プロファイルの分析生成のコンピュータによって実施する方法、データ処理システム、およびコンピュータ・プログラム Download PDF

Info

Publication number
JP2007183925A
JP2007183925A JP2006312155A JP2006312155A JP2007183925A JP 2007183925 A JP2007183925 A JP 2007183925A JP 2006312155 A JP2006312155 A JP 2006312155A JP 2006312155 A JP2006312155 A JP 2006312155A JP 2007183925 A JP2007183925 A JP 2007183925A
Authority
JP
Japan
Prior art keywords
thermal
computer
temperature
program
processor
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.)
Pending
Application number
JP2006312155A
Other languages
English (en)
Inventor
Maximino Aguilar Jr
マキシミノ、アグイラー、ジュニア
Mark Richard Nutter
マーク、リチャード、ナッター
Michael Stafford James
ジェイムズ、マイケル、スタッフォード
Ray Johns Charles
チャールズ、レイ、ジョーンズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2007183925A publication Critical patent/JP2007183925A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • 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

Abstract

【課題】 ソフトウェア熱プロファイルの分析生成のためにコンピュータによって実施する方法、データ処理システム、およびコンピュータ使用可能コードを提供する。
【解決手段】 熱プロファイルを生成するために、1セットのプロセッサによってプログラムを実行するために1セットの命令ストリームを分析して、分析情報を作成する。分析情報に基づいて温熱指数を生成する。
【選択図】図2

Description

本出願は、一般に熱プロファイルに関し、詳細には、プロセッサ用の熱プロファイルに関する。さらに詳細には、本出願は、コンピュータによって実施する方法、データ処理システム、およびソフトウェア熱プロファイルの分析生成用コンピュータ使用可能コードに関する。
第一世代のセルプロセッサは、大量の浮動小数点演算を可能とし、数値計算の作業負荷およびブロードバンドリッチメディアアプリケーションに最適化された64ビットのパワーPC(R)プロセッサコアおよび8つの相乗プロセッサコアで構成されたマルチコアチップである。高速メモリ・コントローラおよび高帯域バス・インターフェースも、統合オンチップである。セルの画期的なマルチコア・アーキテクチャおよび超高速コミュニケーション性能により多くの場合、非常に向上したリアルタイム・レスポンスが最新PCプロセッサの性能の10倍となる。セルは、オペレーティング・システム中立であり、多数のオペレーティング・システムを同時にサポートする。この種のプロセッサ用アプリケーションは、現実性が劇的に向上した次世代ゲームシステムから、家庭でデジタル媒体用ハブおよびストリーミング・コンテンツを形成するシステム、デジタル・コンテンツを開発し流通するために使用されるシステム、および視覚化およびスーパーコンピュータ・アプリケーションを加速するシステムまで広がっている。
今日の高性能マルチコア・プロセッサは、熱要件によって制限されることが多い。典型的な解決策としては、冷却および電力管理が挙げられる。冷却は、高価であるか包装することが困難である可能性があり、もしくは、高価でありかつ包装することが困難である可能性がある。電力管理は、プロセッサのすべてが熱限界に達していない場合、一般にきめが粗く、大いに抑制的である。熱管理などの他の技術は、所定の温度を超えるユニットを単に抑制することによってしか、これらの粗い制御の解決に役立たない。熱管理の改良があっても、アプリケーションをプロファイリングしてプロセッサが抑制されるのを防ぐ方法を有することは、システムに有益である。
実施形態の様々な態様は、ソフトウェア熱プロファイルの分析生成のための方法、データ処理システム、およびコンピュータ使用可能コードを提供する。1セットのプロセッサによってプログラムを実行するために1セットの命令ストリームを分析し、分析情報を生成する。次いで、記憶された分析情報から、分析情報に基づいて温熱指数を生成する。
実施形態の新規特徴の考えられる特性については、添付の請求項に記載する。しかし、実施形態自体は、添付の図面と合わせて読めば、好ましい使用の態様、そのさらなる目的および利点と同様に、実施形態の以下の詳細な説明を参照することによって最もよく理解される。
実施形態は、ソフトウェア熱プロファイルの分析生成に関する。図1および図2は、実施形態を実行するデータ処理環境の典型的な図として提供される。図1および図2は、単に例示であり、態様または実施例を実行する環境に関して、いかなる限定を主張または意図していないことを認識するべきである。実施形態の精神および範囲から逸脱することなく例示の環境に対して多くの変形例がなされうる。
以下、図面を参照すると、図1は、実施形態を実行するデータ処理システムのネットワークの図による記述を示す。ネットワーク・データ処理システム100は、実施形態を実行するコンピュータのネットワークである。ネットワーク・データ処理システム100は、ネットワーク102を含む。ネットワーク102とは、ネットワーク・データ処理システム100内で互いに接続された様々な装置とコンピュータとの間で通信リンクを提供するために使用される媒体である。ネットワーク102は、ワイヤー、無線通信リンク、または光ファイバーケーブルなどの接続を含んでいてもよい。
示される実施例において、サーバ104およびサーバ106は、記憶装置108と共にネットワーク102に接続されている。さらに、クライアント110、112、114は、ネットワーク102に接続されている。これらのクライアント110、112、114は、例えば、パーソナル・コンピュータまたはネットワーク・コンピュータであってもよい。示される実施例において、サーバ104は、ブート・ファイル、オペレーティング・システム・イメージ、およびクライアント110、112、114へのアプリケーションなどのデータを提供する。クライアント110、112、114は、この実施例において、サーバ104に対するクライアントである。ネットワーク・データ処理システム100は、図示していないさらなるサーバ、クライアントおよび他の装置を含んでいてもよい。
示される実施例において、ネットワーク・データ処理システム100は、互いに通信するためにトランスミッション・コントロール・プロトコル/インターネット・プロトコル(TCP/IP)のプロトコル・スイートを使用するネットワークおよびゲートウェイのワールドワイド・コレクションを表わすネットワーク102を備えたインターネットである。インターネットの中心には多重ノード間またはホスト・コンピュータ間での高速データ通信回線のバックボーンがあり、多重ノード間またはホスト・コンピュータは、データおよびメッセージを送る何千もの商用、政府、教育および他のコンピュータシステムからなる。もちろん、ネットワーク・データ処理システム100は、例えば、イントラネット、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)などのさらに多くの様々なタイプのネットワークとして実行されてもよい。図1は、一実施例として意図され、様々な実施形態に関するアークテクチャ上の制限ではない。
ここで、図2を参照すると、実施形態を実行するデータ処理システムのブロック図が示される。データ処理システム200は、図1のサーバ104またはクライアント110などのコンピュータの例であり、ここに実施形態のプロセスを実行するコンピュータ使用可能コードまたは命令が置かれいていてもよい。
示される実施例において、データ処理システム200は、ノースブリッジ、メモリ・コントローラ・ハブ(MCH)202、サウスブリッジ、入力/出力(I/O)コントローラ・ハブ(ICH)204を含むハブ・アーキテクチャを使用する。処理ユニット206、メイン・メモリ208およびグラフィクス・プロセッサ210は、ノースブリッジおよびメモリ・コントローラ・ハブ202に接続されている。グラフィクス・プロセッサ210は、アクセラレイティッド・グラフィクス・ポート(AGP)を介して、ノースブリッジおよびメモリ・コントローラ・ハブ202に接続されていてもよい。
示される実施例において、ローカル・エリア・ネットワーク(LAN)アダプター212は、サウスブリッジおよびI/Oコントローラ・ハブ204に接続されている。オーディオ・アダプター216、キーボードおよびマウス・アダプター220、モデム222、読み出し専用メモリ(ROM)224、ハードディスク・ドライブ(HDD)226、CD−ROMドライブ230、ユニバーサル・シリアル・バス(USB)ポートおよび他の通信ポート232、およびPCI/PCIe装置234は、バス238およびバス240を介して、サウスブリッジおよびI/Oコントローラ・ハブ204に接続されている。PCI/PCIe装置は、例えば、ノート型コンピュータ用のイーサネット・アダプター、アドイン・カードおよびPCカードを含んでいてもよい。PCIeは使用していないが、PCIは、カード・バス・コントローラを使用ている。ROM224は、例えば、フラッシュ・バイナリ入力/出力システム(BIOS)であってもよい。
ハードディスク・ドライブ226およびCD−ROMドライブ230は、バス240を介して、サウスブリッジおよびI/Oコントローラ・ハブ204に接続されている。ハードディスク・ドライブ226およびCD−ROMドライブ230は、例えば、統合ドライブ・エレクトロニクス(IDE)またはシリアル・アドバンスト・テクノロジー・アタッチメント(SATA)インターフェースを使用してもよい。スーパーI/O(SIO)装置236は、サウスブリッジおよびI/Oコントローラ・ハブ204に接続されていてもよい。
オペレーティング・システムは、処理ユニット206上で実行され、図2のデータ処理システム200内の様々なコンポーネントの制御を調整し、提供する。クライアントとして、オペレーティング・システムは、マイクロソフト(R)ウィンドウズ(R)XP(マイクロソフトおよびウィンドウズは、アメリカ合衆国、他の国々、またはその両方のマイクロソフト社の商標である)などの市販オペレーティング・システムであってもよい。Java(R)プログラミング・システムなどのオブジェクト指向のプログラミング・システムは、オペレーティング・システムと連動して実行され、データ処理システム200(Javaは、アメリカ合衆国、他の国々、またはその両方のサン・マイクロシステムズの商標である)上で実行されるJavaプログラムまたはアプリケーションからオペレーティング・システムにコールを供給する。
サーバとして、データ処理システム200は、例えば、高度インタラクティブ・エグゼクティブ(AIXR(R))オペレーティング・システムまたはLINUXオペレーティング・システム(eServer、pSeriesおよびAIXは、アメリカ合衆国、他の国々、またはその両方でのIBM社の商標であり、一方、LINUXは、アメリカ合衆国、他の国々、またはその両方でのリーナス・トーバルズの商標である)を実行するIBMeServer(R)pSeries(R)コンピュータシステムであってもよい。データ処理システム200は、処理ユニット206に複数のプロセッサを含む対称型マルチプロセッサ(SMP)システムであってもよい。または、シングル・プロセッサ・システムを使用してもよい。
オペレーティング・システムのための命令、オブジェクト指向のプログラミング・システムおよびアプリケーションまたはプログラムは、ハードディスク・ドライブ226などの記憶装置に置かれ、処理ユニット206によって実行用メイン・メモリ208に読み込まれてもよい。実施形態のプロセスは、コンピュータ使用可能プログラムコードを使用する処理ユニット206によって行なわれ、該プログラムコードは、例えば、メイン・メモリ208、読み出し専用メモリ224などのメモリに、または1つまたは複数の周辺機器226、230に置かれてていてもよい。
当業者は、図1および図2のハードウェアが実施に従って異なっていてもよいことを認識する。フラッシュメモリ、対応する不揮発性メモリまたは光ディスク駆動装置等などの他の内部ハードウェアまたは周辺機器は、図1および図2に示されたハードウェアに加えて、またはそのハードウェアの代わりに使用されてもよい。また、実施形態のプロセスは、マルチプロセッサ・データ処理システムに適用されてもよい。
実施例によっては、データ処理システム200は、携帯情報端末(PDA)であってもよく、該携帯情報端末は、フラッシュメモリを有して構成されて、オペレーティング・システム・ファイルまたはユーザ生成データ、もしくはその両方を記憶するための不揮発性メモリを備えている。
バスシステムは、図2で示されるようにバス238またはバス240などの1つまたは複数のバスで構成されていてもよい。もちろん、バスシステムは、構造またはアーキテクチャに取り付けられた様々なコンポーネントまたは装置の間のデータの転送を行うための任意のタイプの通信構造またはアーキテクチャを使用して実行されてもよい。通信ユニットは、図2のモデム222またはネットワーク・アダプター212などのデータを送受信するために使用される1つまたは複数の装置を含んでいてもよい。メモリは、例えば、メイン・メモリ208、読み出し専用メモリ224、または図2のノースブリッジおよびメモリ・コントローラ・ハブ202に見られるようなキャッシュであってもよい。図1および図2および上記例において示された実施例は、構造上の限定を意図しない。例えば、データ処理システム200は、また、PDAの形態をとることに加えて、タブレット・コンピュータ、ラップトップ・コンピュータまたは電話機であってもよい。
図3は、実施形態を実施形態によって実行するセル・ブロードバンド・エンジン・チップの典型的な図である。セル・ブロードバンド・エンジン・チップ300は、ゲーム機、デスクトップシステムおよびサーバなどのメディアリッチアプリケーション向けの分散処理を対象とするシングルチップ・マルチプロセッサの実施形態である。
セル・ブロードバンド・エンジン・チップ300は、以下の機能部品、つまりパワーPC(R)プロセッサ素子(PPE)301、相乗プロセッサ・ユニット(SPU)310、311、312およびメモリフロー・コントローラ(MFC)305、306、307に論理的に分離されてもよい。相乗プロセッサ素子およびパワーPC(R)プロセッサ素子が実施例によって示されるが、任意のタイプのプロセッサ素子がサポートされてもよい。典型的なセル・ブロードバンド・エンジン・チップ300の実施形態は、1つのパワーPC(R)プロセッサ素子301および8つの相乗プロセッサ素子を含むが、図3は、わずか3つの相乗プロセッサ素子(SPE)302、303、304を示す。セルプロセッサの相乗プロセッサ素子(SPE)は、加速媒体(accelerate media)およびデータ・ストリーミング作業負荷に設計された新しいプロセッサ・アーキテクチャの第1の実施形態である。
各相乗プロセッサ素子は、それ自身のローカル・ストア(LS)領域313、314または315を有する1つの相乗プロセッサ・ユニット(SPU)310、311または312、およびメモリ保護およびアクセス許可情報を保持し処理するために関連するメモリ管理ユニット(MMU)316、317または318を有する専用メモリフロー・コントローラ(MFC)305、306または307を含む。前と同じように、相乗プロセッサ・ユニットが実施例によって示されるが、任意のタイプのプロセッサ・ユニットがサポートされてもよい。さらに、セル・ブロードバンド・エンジン・チップ300は、素子相互接続バス(EIB)319および他のI/O構造を実行して、オンチップおよび外部データフローを促進する。
素子相互接続バス319は、パワーPC(R)プロセッサ素子301、相乗プロセッサ素子302、303および304のための一次オンチップ・バスとして機能する。さらに、素子相互接続バス319は、オフチップ・アクセス専用に設けられる他のオンチップ・インターフェース・コントローラにインターフェースで接続される。オンチップ・インターフェース・コントローラは、2つの極値データ転送速度I/O(XIO)メモリ・チャンネル321、322を備えるメモリ・インターフェース・コントローラ(MIC)320、および2つの高速外部I/Oチャンネルおよびセル・ブロードバンド・エンジン300のための内部割込み制御を提供するセル・ブロードバンド・エンジン・インタフェース・ユニット(BEI)323を含む。セル・ブロードバンド・エンジン・インタフェース・ユニット323は、バス・インターフェース・コントローラ(BIC0およびBIC1)324、325、およびI/Oインターフェース・コントローラ(IOC)326として実行される。2つの高速外部I/Oチャンネルは、セル・ブロードバンド・エンジン300のためのフレキシブル入出力(FlexI0 0およびFlexI0 1)353を備えるRRACインターフェイスの極性に接続されている。
各相乗プロセッサ・ユニット310、311または312は、対応するローカル・ストア領域313、314または315、および相乗演算ユニット(SXU)354、355または356を有する。個々の相乗プロセッサ・ユニット310、311または312は、それぞれ、その関連するローカル・ストア領域313、314または315内からの命令(データ読み込みおよび記憶オペレーションを含む)のみを実行することができる。この理由で、システムの他の部分の記憶装置に、またはその記憶装置から、要求されたデータ転送はすべて、相乗プロセッサ・ユニット310、311、312の専用メモリフロー・コントローラ305、306、307を介して、メモリフロー・コントローラ直接記憶アクセス・オペレーションを使用して行なわれる。
相乗プロセッサ・ユニット310、311または312上で実行されるプログラムは、ローカル・ストア・アドレスを使用して、それ自体のローカル・ストア領域313、314または315のみを参照する。しかし、各相乗プロセッサ・ユニットのローカル・ストア領域313、314または315は、また、システムのメモリマップ内全体で、実アドレス(RA)を割り当てる。これは、特権ソフトウェアが、プロセスの実効アドレス(EA)にローカル・ストア領域をマップして、1つの相乗プロセッサ・ユニットのローカル・ストアと別の相乗プロセッサ・ユニットのローカル・ストアとの間で直接記憶アクセス転送を促進することができる。パワーPC(R)プロセッサ素子301は、また、実行アドレスを使用して、直接的に、任意の相乗プロセッサ・ユニットのローカル・ストアにアクセスしてもよい。
メモリフロー・コントローラ直接記憶アクセスデータ転送コマンドは、常に、1つのローカル・ストア・アドレスおよび1つの実効アドレスを使用する。ローカル・ストア・アドレスは、直接、直接記憶アクセスコマンドリクエストが置かれるメモリフロー・コントローラ・コマンドキューに対応する関連する相乗プロセッサ・ユニット310、311または312のローカル・ストア・メモリのアドレスをとる。しかし、実効アドレスは、他の相乗プロセッサ素子302、303、304のローカル・ストア領域313、314、315を含むシステムに、任意の他のメモリ記憶領域にアクセスするために配置されてもよい。
メイン記憶装置は、システムにおいてパワーPC(R)プロセッサ・ユニット308、パワー・プロセッサ素子(PPE)301、相乗プロセッサ素子(SPE)302、303、304、およびI/O装置によって共有されている。記憶装置のこのレベルで保持された情報は、すべて、システムのすべてのプロセッサおよび装置に見えている。プログラムは、実効アドレスを使用して、記憶装置のこのレベルを参照する。メモリフロー・コントローラ相乗プロセッサ・ユニットコマンドキュー、メモリフロー・コントローラ・プロキシコマンドキュー、および制御および状態機能は、実効アドレススペースにマップされるので、パワー・プロセッサ素子301は、相乗プロセッサ素子(SPE)302、303、304のうちのいずれかと関連するローカル・ストア領域に関する直接記憶アクセス・オペレーションを開始することができる。
相乗プロセッサ・ユニット・プログラムは、実行のために、そのメモリフロー・コントローラ(MFC)305、307または307コマンドキューに適切な実効アドレスおよびローカル・ストア・アドレスと共に直接記憶アクセス・データ転送コマンドを生成し置くことにより、メイン記憶装置にアクセスする。実行された時、必要なデータは、それ自体のローカル・ストア領域とメイン記憶装置との間で転送される。メモリフロー・コントローラ(MFC)305、306または307は、パワー・プロセッサ素子(PPE)301などの他の装置によって生成されたコマンドのための第2のプロキシ・コマンドキューを提供する。プロキシ・コマンドキューは、典型的に、相乗プロセッサ・ユニットを開始する前に、ローカル記憶装置にプログラムを記憶するために使用される。プロキシ・コマンドは、また、コンテクスト記憶オペレーションに使用することができる。
データ転送の実効アドレス部分ははるかに一般的であり、相乗プロセッサ・ユニット・ローカル・ストア領域をすべて含めて、メイン記憶装置を参照することができる。これらのローカル・ストア領域は、実効アドレススペースにマッピングされる。データ転送は保護される。実効アドレスは、メモリ管理ユニットによって実アドレスに転換される。転換プロセスは、システム・メモリおよびメモリ保護の仮想化を可能とする。
セル・ブロードバンド・エンジン・チップ300上のパワーPC(R)プロセッサ素子301は、64ビットのパワーPC(R)プロセッサ・ユニット308およびパワーPC(R)記憶サブシステム309からなる。パワーPC(R)プロセッサ・ユニット308は、プロセッサ演算ユニット(PXU)329、レベル1(L1)キャッシュ330、メモリ管理ユニット(MMU)331、および交替管理テーブル(RMT)332を含む。パワーPC(R)記憶サブシステム309は、キャッシュ可能なインタフェース・ユニット(CIU)333、キャッシュ不能ユニット(NCU)334、レベル2(L2)キャッシュ328、交替管理テーブル(RMT)335およびバス・インタフェース・ユニット(BIU)327からなる。バス・インタフェース・ユニット327は、パワーPC(R)記憶サブシステム309を素子相互接続バス319に接続する。
相乗プロセッサ・ユニット310、311または312、およびメモリフロー・コントローラ305、306、307は、キャパシティを有する一方向のチャンネルを介して互いに通信する。チャンネル・インタフェースは、メモリフロー・コントローラ305、306、307、相乗プロセッサ・ユニット310、311、312に、およびそれらからメッセージを移動する。バス・インタフェース・ユニット339、340および341は、メモリフロー・コントローラ305、306、307を素子相互接続バス319に接続する。
メモリフロー・コントローラ305、306、307は、相乗プロセッサ・ユニット310、311、312に2つの主要機能を提供する。メモリフロー・コントローラ305、306、307は、相乗プロセッサ・ユニット310、311または312、ローカル・ストア領域313、314、315およびメイン記憶装置の間でデータを移動する。さらに、メモリフロー・コントローラ305、306、307は、システムにおいて相乗プロセッサ・ユニット310、311、312と他の装置との間で同期機能を提供する。
メモリフロー・コントローラ305、306、307の実施は、4つの機能ユニット、つまり、直接記憶アクセス・コントローラ(DMAC)336、337、338、メモリ管理ユニット(MMU)316、317、318、原子ユニット(ATO)342、343、344、交替管理テーブル(RMT)345、346、347、バス・インタフェース・ユニット(BIU)339、340、341を有する。直接記憶アクセス・コントローラ336、337、338は、メモリフロー・コントローラ相乗プロセッサ・ユニット・コマンドキュー(MFC SPUQ)およびメモリフロー・コントローラ・プロキシ・コマンドキュー(MFC PrxyQ)からなるメモリフロー・コントローラ・キュー(MFC CMDQ)を維持し、処理する。16のエントリー、メモリフロー・コントローラ相乗プロセッサ・ユニット・コマンドキューは、相乗プロセッサ・ユニット・チャンネル・インタフェースからのメモリフロー・コントローラ・コマンドを処理する。8つのエントリー、メモリフロー・コントローラ・プロキシ・コマンドキューは、メモリがマップされた入出力(MMIO)読み込みおよび記憶オペレーションを介して他の装置のメモリフロー・コントローラ・コマンドを処理する。典型的な直接記憶アクセス・コマンドは、ローカル・ストアとメイン記憶装置の間でデータを移動させる。メイン記憶装置は、実効アドレス直接記憶アクセス・コマンド・オペランドによってアドレスされる。ローカル・ストアは、ローカル・ストア・アドレス(LSA)直接記憶アクセス・コマンド・オペランドによってアドレスされる。
仮想モードでは、メモリ管理ユニット316、317、318は、アドレス変換およびメモリ保護機能を備え、直接記憶アクセス・コントローラ336、337、338からの実効アドレス変換要求を処理し、変換されたアドレスを送り返す。各相乗メモリ管理ユニットは、区分索引バッファ(SLB)および変換索引バッファ(TLB)を維持する。区分索引バッファは、実効アドレスを仮想アドレス(VA)に変換し、変換索引バッファは区分索引バッファからの仮想アドレスを実アドレスに変換する。
原子ユニット342、343、344は、システムにおいて他のプロセッサ・ユニットとの同期を維持するために必要なデータキャッシュのレベルを提供する。システムでは他のキャッシュとのコヒーレンスが維持される。原子直接記憶アクセス・コマンドは、他のユニットとの同期を要求するために、相乗プロセッサ素子のための手段を提供する。
バス・インタフェース・ユニット339、340、341の主な機能は、相乗プロセッサ素子302、303、304に、素子相互接続バスへのインターフェースを備えさせることである。
素子相互接続バス319は、セル・ブロードバンド・エンジン・チップ300上のプロセッサのすべてと、素子相互接続バス319に取り付けられた外部インターフェース・コントローラとの間で通信経路を提供する。
メモリ・インターフェース・コントローラ320は、素子相互接続バス319と、1つまたは2つの極値データ転送速度I/Oセル・メモリ・チャンネル321、322との間でインターフェースを提供する。極値データ転送速度(XDR(R))ダイナミック・ランダム・アクセス・メモリ(DRAM)は、Rambus社によって提供される高速で高度な直列記憶装置である。極値データ転送速度ダイナミック・ランダム・アクセス・メモリは、このドキュメントで極値データ転送速度I/Oセル・メモリ・チャンネル321、322と称せられ、Rambus社によって提供されるマクロを使用してアクセスされる。
メモリ・インターフェース・コントローラ320は、素子相互接続バス319上のスレーブにすぎない。メモリ・インターフェース・コントローラ320は、サポートされたハブのメモリに対応するその構成されたアドレスレンジでコマンドを認識する。
バス・インターフェース・コントローラ324、325は、2つの外部装置のいずれかに素子相互接続バス319からチップ上の、およびチップ外のデータ転送を管理する。バス・インターフェース・コントローラ324、325は、非コヒーレントトラフィックをI/O装置と交換してもよく、または、それは、別の装置に素子相互接続バス319を拡張することができ、別のセル・ブロードバンド・エンジン・チップとすることもできる。素子相互接続バスを拡張するために使用する場合、コヒーレントは、セル・ブロードバンド・エンジンと、取り付けられた外部装置のキャッシュ間で維持される。
I/Oインターフェース・コントローラ326は、I/Oインターフェース装置から出され、コヒーレント素子相互接続バス319へ向けられたコマンドを処理する。I/Oインターフェース装置は、多数のI/O装置、または非コヒーレントにアクセスされる他のセル・ブロードバンド・エンジン・チップ300を取り付けるI/Oブリッジ・チップなどの、I/Oインターフェースに伴う任意の装置であってもよい。I/Oインターフェース・コントローラ326は、また、I/Oブリッジ・チップまたは非コヒーレント・セル・ブロードバンド・エンジン・チップ300内、またはその後ろに存在するメモリ・マップ・レジスタに向かう素子相互接続バス319上でアクセスを妨害し、それらを適切なI/Oインターフェースに送る。I/Oインターフェース・コントローラ326は、また、内部割込み・コントローラ(IIC)349およびI/Oアドレス変換ユニット(I/O Trans)350を含む。
異なるコンポーネントをどのように実行しうるかの特定の例を提供したが、これは、実施形態を使用してもよいアーキテクチャを限定するのが目的ではない。任意のマルチコア・プロセッサ・システムとともに実施形態を使用してもよい。
アプリケーションの実行中に、セル・ブロードバンド・エンジン・チップ内の領域の温度が上昇するであろう。未検査のままであると温度は最大特定接合温度を超えて上昇し、不適当なオペレーションまたは物理的損傷に結びつく可能性がある。これらの条件を回避するために、セル・ブロードバンド・エンジン・チップのデジタル熱管理装置はオペレーション中にセル・ブロードバンド・エンジン・チップ内の温度を監視し、制御を試みる。デジタル熱管理装置は、熱管理制御ユニット(TMCU)および10個の分散デジタル熱センサ(DTS)からなる。
8つの相乗プロセッサ素子の各々に1つのセンサが置かれ、一つはパワーPC(R)プロセス素子に置かれ、1つは線形熱ダイオードに隣接している。線形熱ダイオードは、温度を計算するオンチップ・ダイオードである。これらのセンサは、ほとんどのアプリケーションの実行中に温度の最も大きな上昇を代表的に経験する関連するユニット内の領域に隣接して位置する。熱制御ユニットは、これらのセンサの各々からフィードバックを監視する。センサの温度が、プログラム可能なポイントを超えて上昇する場合、熱制御ユニットは、パワーPC(R)プロセス素子、または1つまたは複数の相乗プロセッサ素子に割込みをもたらし、関連するパワーPC(R)プロセス素子または相乗プロセッサ素子の実行を同時に抑制するように構成することができる。
プログラム可能な繰り返し数でパワーPC(R)プロセス素子または相乗プロセッサ素子を停止し、実行することにより抑制を遂行する。動的抑制が、ソフトウェアが介在しないプログラム可能なレベルより下のブロードバンド・エンジン・チップ内の温度を維持することを試みるハードウェア装置である一方、割込みは、特権ソフトウェアが修正措置を行うことを可能とする。特権ソフトウェアは、推奨されるセッティングに等しい、またはそれ以下の抑制レベルを設定する。
パワーPC(R)プロセス素子、相乗プロセッサ素子を抑制する場合、または特権ソフトウェアが有効に温度を管理せず、温度が上昇し続ける場合、温度が構成データによって定義された熱的過負荷温度に達すると、セル・ブロードバンド・エンジン・チップのクロックは停止される。熱的過負荷特徴は、物理的損傷からセル・ブロードバンド・エンジン・チップを保護する。この状態からの回復のためには、ハードリセットが必要である。デジタル熱センサによって監視される領域の温度は、必ずしも、関連するパワーPC(R)プロセス素子または相乗プロセッサ素子内の最高熱点ではないことに留意されたい。
図4は、実施形態による図3の普及論理演算装置351によって提供される典型的なセル・ブロードバンド・エンジン・チップの熱管理システムを示す。セル・ブロードバンド・エンジン・チップ熱管理は、10個の分散デジタル熱センサ(DTS)と管理制御ユニット(TMCU)402との間で分けられ、簡単にするためにデジタル熱センサ404、406、408、410だけが図示されている。相乗プロセッサ・ユニット・センサ(SPU)440にある各デジタル熱センサ404および406、パワーPC(R)プロセッサ・ユニット・センサ442にあるデジタル熱センサ408、線形ダイオードに隣接しているセンサ444にあるデジタル熱センサ410は、温度が、熱管理制御ユニット402によって設定される現在温度検出範囲に等しいまたはそれ以下であることを示す現在温度検出信号を提供する。熱管理制御ユニット402は、各パワーPC(R)素子または相乗プロセッサ素子のデジタル熱センサ404、406、408、410の温度を連続的に追跡するためにデジタル熱センサ404、406、408、410からの信号の状態を使用する。温度は追跡されるので、熱管理制御ユニット402は、関連するパワーPC(R)プロセス素子または相乗プロセッサ素子内の温度を表わす数値として現在温度を提供する。内部較正記憶装置428は個々のセンサを調整するために製造する際に設定される。
上述された熱管理制御ユニット402の構成要素に加えて、熱管理制御ユニット402は、さらに、マルチプレクサー446、450、ワークレジスタ448、コンパレーター452、454、シリアライザ456、熱管理(TM)制御状態機械458、およびデータフロー(DF)ユニット460を含む。マルチプレクサー446、450は、単一媒体にわたる送信用の出入りする様々な信号を組み合わせる。熱管理制御ユニット402で行なわれる乗算の結果を保持するためにワークレジスタ448をを使用する。コンパレーター452、454は2つの入力の比較機能を提供する。コンパレーター452は以上(>=)コンパレーターである。コンパレーター454は大なり(>)コンパレーターである。シリアライザ456は、ソースから低速度並列データを送信用高速シリアルデータに変換する。シリアライザ456は、相乗プロセッサ・ユニット・センサ440上にデシリアライザ462、464と共に作用する。デシリアライザ462、464は、受信高速シリアルデータを低速並列データに変換する。熱管理制御ユニット402の内部初期化を始めるために、熱管理制御状態機械458を使用する。データフロー・ユニット460は、熱管理制御状態機械458への、および熱管理制御状態機械458からのデータを制御する。
熱管理制御ユニット402は、割込み論理416を使用して、パワーPC(R)プロセス素子に割込みをもたらし、かつ抑制論理418を使用して、パワーPC(R)プロセス素子または相乗プロセッサ素子の実行を動的に抑制するように構成されてもよい。熱管理制御ユニット402は、温度を表わす数値をプログラム可能割込み温度およびプログラム可能スロットル(throttle)点と比較する。温度が、プログラムされた割込み温度領域内にある場合、もし可能であれば、パワーPC(R)プロセス素子に外部割込みを生成する。
さらに、第2のプログラム可能割込み温度は、システム・コントローラに注意信号のアサーションをもたらすことができる。温度がスロットル点以上であるなら、熱管理制御ユニット402は、そのパワーPC(R)プロセス素子または相乗プロセッサ素子を動的に開始、停止することにより、パワーPC(R)プロセス素子または相乗プロセッサ素子の実行を抑制する。ソフトウェアは、動的熱管理レジスタを使用して抑制の比率と頻度を制御することができる。
図5は、実施形態によって温度、および割込みおよび動的抑制が生じる様々な点のグラフである。図5で、ライン500は、パワーPC(R)プロセス素子用の温度を表わし、または、相乗プロセッサ素子が通常作動している場合、「N」の印のある領域で抑制は行われない。温度がスロットル点に達する場合、熱管理制御ユニットは、関連するパワーPC(R)プロセス素子または相乗プロセッサ素子の実行を抑制し始める。抑制が生じる領域は、「T」で印をつけられる。パワーPC(R)プロセス素子または相乗プロセッサ素子の温度が、最終スロットル点を下回る場合、実行は通常動作に戻る。
何らかの理由で温度が上昇し続け、全スロットル点以上の温度に達する場合、パワーPC(R)プロセス素子または相乗プロセッサ素子は温度が全スロットル点を下回るまで停止される。パワーPC(R)プロセス素子または相乗プロセッサ素子が停止される領域は「S」で印をつけられる。温度が、全スロットル点以上である場合、パワーPC(R)プロセス素子または相乗プロセッサ素子を停止することは、コア停止安全性(core stop safety)と称せられる。
この典型的実例では、割込み温度はスロットル点より上に設定され、したがってパワーPC(R)プロセス素子または相乗プロセッサ素子がこの条件に対していつも停止される場合、ソフトウェアに通知する。ただし熱割込みマスク・レジスタ(TM_ISR)がアクティブに設定されると、パワーPC(R)プロセス素子または相乗プロセッサ素子が割込み中断の間にレジュームすることを可能とする。動的抑制が無効になる場合、特権ソフトウェアが熱条件を管理する。熱条件を管理しなと、関連するパワーPC(R)プロセス素子または相乗プロセッサ素子の不適当なオペレーション、または熱的過負荷機能によるサーマルシャットダウンを招くことになる。
図4に戻って、熱センサ状態レジスタは、熱センサ現在温度状態レジスタ412および熱センサ最高温度状態レジスタ414を含む。これらのレジスタは、ソフトウェアが個々のデジタル熱センサの現在温度を読み、所定期間中に達した最高温度を決定し、温度がプログラム可能温度に達した場合、割込みを引き起こすことを可能にする。熱センサ状態レジスタは、特権的ハイパーバイザーとしてマークされる実アドレスページを関連させている。
熱センサ現在温度状態レジスタ412は、各デジタル熱センサの現在温度のコード化を含む。センサの温度検出の待ち時間、これらのレジスタを読み出す場合の待ち時間および標準温度変動により、これらのレジスタで報告される温度は時間内の初期点の温度であり、ソフトウェアがデータを受ける場合、実際の温度を反映しない。各センサが制御論理に専念したので、すべてのセンサは並列でサンプリングされる。これらのレジスタのコンテンツは、次のサンプル期間の初めに更新される。サンプル期間の長さは、SenSampTime構成フィールドによって制御される。
熱センサ最高温度状態レジスタ414は、これらのレジスタの最終読み取りの時間から各センサに関して達せられた最高温度のコード化を含む。これらのレジスタを読むことによって、熱管理制御ユニット402は、レジスタに各センサに現在温度をコピーする。読み取り後、熱管理制御ユニット402は、この点からスタートする最高温度を追跡し続ける。各レジスタの読み取りは独立している。1つのレジスタの読み取りは他方のコンテンツに影響しない。各センサは制御論理に専念し、したがって、すべてのセンサは並列にサンプリングされる。これらのレジスタのコンテンツは、次のサンプル期間の初めに更新される。サンプル期間の長さは、SenSampTime構成フィールドによって制御される。
割込み論理416の熱センサ割込みレジスタは、パワーPC(R)プロセッサ素子への熱管理割込みの生成を制御する。このレジスタのセットは、熱センサ割込み温度レジスタ420(TS_ITR1およびTS_ITR2)、熱センサ状態レジスタ422(TS_ISR)、熱センサ割込みマスク・レジスタ424(TS_IMR)、および熱センサグローバル割込み温度レジスタ426(TS_GITR)を含む。熱センサ割込み温度レジスタ420および熱センサグローバル割込み温度レジスタ426は、パワーPC(R)プロセッサ素子に熱管理割込みを引き起こす温度のコード化を含む。
センサ用の熱センサ現在温度状態レジスタ412で、コード化温度が熱センサ割込み温度レジスタ420でコード化する対応するセンサの割込み温度以上である場合、熱センサ割込み状態レジスタ422(TS_ISR〔Sx〕)での対応する状態ビットを設定する。任意のセンサ用の熱センサ現在温度状態レジスタ412でのコード化温度が熱センサグローバル割込み温度レジスタ426でのコード化するグローバル割込み温度以上である場合、対応する状態ビット熱センサ割込み状態レジスタ422(TS_ISR〔Gx〕が設定される。
任意の熱センサ割込み温度状態レジスタ422のビット(TS_ISR〔Sx〕)が設定され、熱センサ割込みマスク・レジスタ424(TS_IMR〔Mx〕)での対応するマスク・ビットも設定される場合、熱管理割込み信号をパワーPC(R)プロセッサ素子にアサートする。任意の熱センサ割込み状態レジスタ422(TS_ISR〔Gx〕)ビットをセットし、熱センサ割込みマスク・レジスタ424(TS_IMR〔Cx〕)での対応するマスク・ビットも設定する場合、熱管理割込み信号をパワーPC(R)プロセッサ素子にアサートする。
割込み条件を取り除くために、特権ソフトウェアは、熱センサ割込みマスク・レジスタで任意の対応するマスク・ビットを「0」に設定するべきである。熱管理割込みを可能にするために、特権ソフトウェアは、温度が、対応するセンサのための割込み温度未満であることを確実にし、次いで、次のシーケンスを行なう。温度が、割込み温度未満でない場合、割込みを可能にすると、即時の熱管理割込みの生成をもたらすことができる。
1.熱センサ割込み状態レジスタ422で、対応する状態ビットに「1」を書き込む。
2.熱センサ割込みマスク・レジスタ424で、対応するマスク・ビットに「1」を書き込む。
熱センサ割込み温度レジスタ420は、相乗プロセッサ素子に位置するセンサのための割込み温度レベル、パワーPC(R)プロセッサ素子、および隣接する線形熱ダイオードを含む。このレジスタでコード化された割込み温度レベルを、熱センサ現在温度状態レジスタ412で対応する割込み温度コード化と比較する。これらの比較の結果を使用して熱管理割込みを生成する。各センサの割込み温度レベルは独立している。
熱センサ割込み温度レジスタ420に設定された独立した割込み温度レベルに加えて、熱センサグローバル割込み温度レジスタ426は、第2の割込み温度レベルを含む。このレベルは、セル・ブロードバンド・エンジン・チップで全てのセンサに適用される。このレジスタで、コード化されたグローバル割込み温度レベルを、各センサの現在温度コード化と比較する。これらの比較の結果を使用して、熱管理割込みを生成する。
グローバル割込み温度の意図は、セル・ブロードバンド・エンジン・チップの温度上昇に初期表示を提供することである。特権ソフトウェアおよびシステム・コントローラは、例えば、ファン回転速度を増加させる、アプリケーション・ソフトウェア・クロスユニットのバランスを取り戻すなどのことによって、温度を制御する動作を始めるためにこの情報を使用することができる。
熱センサ割込み状態レジスタ422はどのセンサが割込み条件を満たすかを識別する。割込み条件は、各熱センサ割込み状態レジスタ422ビットが、満足する場合割込みが生じることを可能にする特定の条件を参照する。対応するマスク・ビットを設定する場合、実際の割込みは、単にパワーPC(R)プロセッサ素子に提示される。
熱センサ割込み状態レジスタ422は、3セットの状態ビット、つまりデジタル・センサ・グローバルしきい値割込み状態ビット(TS_ISR〔Gx〕)、デジタル・センサしきい値割込み状態ビット(TS_ISR〔Sx〕)、およびデジタル・センサ・グローバルしきい値未満割込み状態ビット(TS_ISR〔Gb〕)を含む。
熱センサ現在温度状態レジスタ412でセンサのためにコード化する温度が、熱センサ割込み温度レジスタ420でコード化する対応するセンサの割込み温度、および対応する方向ビット熱センサ割込みマスク・レジスタ424、TM_IMR〔Bx〕=‘0’以上である場合、ハードウェアは、熱センサ割込み状態レジスタ422(TS_ISR〔Sx〕)で状態ビットを設定する。さらに、熱センサ現在温度状態レジスタ412のセンサのためにコード化する温度が、熱センサ割込み温度レジスタ420および対応する方向ビット熱センサ割込みマスク・レジスタ424、TM_IMR〔Bx〕=‘1’でコード化する対応するセンサの割込み温度未満である場合、ハードウェアは、熱センサ割込み状態レジスタ422、TS_ISR〔Sx〕を設定する。
任意の関係するセンサの現在温度が、熱センサ・グローバル割込み温度レジスタ426の温度以上である場合、ハードウェアは、熱センサ割込み状態レジスタ422、TS_ISR[Gx]をセットし、熱センサ割込みマスク・レジスタ424、TS_IMR[BG]を「0」に設定する。個々の熱センサ割込み状態レジスタ422、TS_ISR[Gx]ビットは、個々のどのセンサがこれらの条件を満足するかを示す。
熱センサ割込みマスク・レジスタ424、TS_IMR[Cx]の関係するセンサのすべてが、熱センサ・グローバル割込み温度レジスタ426より低い現在温度である場合、ハードウェアは、熱センサ割込み状態レジスタ422、TS_ISR[Gb]をセットし、熱センサ割込みマスク・レジスタ424、TS_IMR[BG]を「1」に設定する。関係するセンサのすべてが、熱センサ・グローバル割込み温度レジスタ426より低い現在温度であるので、1つの状態ビット熱センサ割込み状態レジスタ422(TS_ISR[Gb])のみが、グローバルしきい値未満割込み条件で存在する。
一旦、熱センサ割込み状態レジスタ422(TS_ISR[Sx]、[Gx]または[Gb])での状態ビットを「1」に設定すると、特権ソフトウェアによって「0」に再設定されるまでこの状態が維持される。特権ソフトウェアは、熱センサ割込み状態レジスタ422で、対応するビットに「1」を書き込むことにより状態ビットを「0」に再設定する。
熱センサ割込みマスク・レジスタ424は、個々のセンサ用の2つのフィールドおよびグローバル割込み条件用の多数のフィールドを含む。割込み条件は、満足する場合、割込みが生じることを可能にする各熱センサ割込みマスク・レジスタ424ビットが有する特定の条件を参照する。対応するマスク・ビットを設定する場合、実際の割込みは、単にパワーPC(R)プロセッサ素子に与える。
個々のセンサ用の2つの熱センサ割込みマスク・レジスタ・デジタル熱しきい値割込みフィールドは、TS_IMR[Mx]およびTS_IMR[Bx]である。熱センサ割込みマスク・レジスタ424、TS_IMR[Mx]、マスク・ビットは、熱管理割込みの生成からパワーPC(R)プロセッサ素子まで割込み状態ビットを防ぐ。熱センサ割込みマスク・レジスタ424、TS_IMR[Bx]、方向ビットは、熱センサ割込み温度レジスタ420で、対応する温度より高いまたは低い割込み条件用の温度方向を設定する。熱センサ割込みマスク・レジスタ424、TS_IMR[Bx]を「1」に設定することで、割込み条件の温度を熱センサ割込み温度レジスタ420で対応する温度より低く設定する。熱センサ割込みマスク・レジスタ424、TS_IMR[Bx]を「0」に設定することで、割込み条件の温度を熱センサ割込み温度レジスタ420で対応する温度以上に設定する。
グローバル割込み条件用の熱センサ割込みマスク・レジスタ424フィールドは、TS_IMR[Cx]、TS_IMR[BG]、TS_IMR[Cgb]およびTS_IMR[A]である。熱センサ割込みマスク・レジスタ424、TS_IMR[Cx]、マスク・ビットは、グローバルしきい値割込みを防ぎ、グローバルしきい値未満割込み条件で、どのセンサが加わるかを選択する。熱センサ割込みマスク・レジスタ424、TS_IMR[BG]、方向ビットは、グローバル割込み条件用の温度方向を選択する。熱センサ割込みマスク・レジスタ424、TS_IMR[Cgb]、マスク・ビットは、グローバルしきい値未満割込みを防ぐ。熱センサ割込みマスク・レジスタ424、TS_IMR[A]は、システム・コントローラへの注意をアサートする。
熱センサ割込みマスク・レジスタ424、TS_IMR[BG]を「1」に設定することで、熱センサ割込みマスク・レジスタ424、(TS_IMR[Cx])で設定されたすべての関係するセンサの温度がグローバル割込み温度レベル未満である場合にグローバル割込み条件のための温度領域が生じるように設定する。熱センサ割込みマスク・レジスタ424、TS_IMR[BG]を「0」に設定することで、関係するセンサのうちのいずれかの温度が、熱センサグローバル割込み温度レジスタ426で対応する温度以上である場合にグローバル割込み条件のための温度領域を生じるように設定する。熱センサ割込みマスク・レジスタ424、TS_IMR[A]が「1」に設定されていれば、いずれかの熱センサ割込みマスク・レジスタ424、TS_IMR[Cx]ビットおよびその対応する熱センサ割込み状態レジスタ422状態ビット(TS_ISR[Gx])の両方を「1」に設定する場合に注意をアサートする。さらに、熱センサ割込みマスク・レジスタ424、TS_IMR[Cgb]および熱センサ割込み状態レジスタ422、TS_ISR[Gb]の両方を「1」に設定する場合、注意をアサートする。
任意の熱センサ割込みマスク・レジスタ424、TS_IMR[Mx]ビットおよびその対応する熱センサ割込み状態レジスタ422状態ビット(TS_ISR[Sx])の両方を「1」に設定する場合、熱管理割込みをパワーPC(R)プロセッサ素子に与える。任意の熱センサ割込みマスク・レジスタ424、TS_IMR[Cx]ビットおよびその対応する熱センサ割込み状態レジスタ422状態ビット、TS_ISR[Gx]の両方を「1」に設定する場合、熱管理割込みも生成する。さらに、熱センサ割込みマスク・レジスタ424、TS_IMR[Cgb]および熱センサ割込み状態レジスタ422、TS_ISR[Gb]の両方を「1」に設定する場合、熱管理割込みをパワーPC(R)プロセッサ素子に与える。
論理418の抑制中にダイナミック熱管理レジスタは、パワーPC(R)プロセッサ素子または相乗プロセッサ素子の実行抑制を制御するためのパラメーターを含む。動的熱管理レジスタは、熱管理制御レジスタ430(TM_CRlおよびTM_CR2)、熱管理スロットル点レジスタ432(TM_TPR)、熱管理停止時間レジスタ434(TM_STRlおよびTM_STR2)、熱管理抑制スケール・レジスタ436(TM_TSR)および熱管理システム割込みマスク・レジスタ438(TM_SIMR)を含む1セットのレジスタである。
熱管理スロットル点レジスタ432は、センサのスロットル点を設定する。2つの独立したスロットル点は、熱管理スロットル点レジスタ432、スロットルPPEおよびスロットルSPE、パワーPC(R)プロセッサ素子用の一つおよび相乗プロセッサ素子用の一つで設定することができる。また、パワーPC(R)プロセッサ素子または相乗プロセッサ素子の抑制および停止を終了させる温度点が、このレジスタに含まれている。温度がスロットル点以上である場合に、パワーPC(R)プロセッサ素子または相乗プロセッサ素子の実行抑制が開始する。温度が抑制を終了させる温度を下回る場合、抑制は中断する(TM_TPR[EndThrottlePPE/EndThrottleSPE])。温度が、全スロットルまたは停止温度に達する場合(TM_TPR[FullThrottlePPE/FullThrottleSPE])、パワーPC(R)プロセッサ素子または相乗プロセッサ素子の実行を終了する。熱管理制御レジスタ430を使用して抑制挙動を制御する。
熱管理停止時間レジスタ434および熱管理抑制スケール・レジスタ436を使用して、抑制の頻度および量を制御する。温度がスロットル点に達する場合、対応するパワーPC(R)プロセッサ素子または相乗プロセッサ素子を、熱管理抑制スケール・レジスタ436で、対応するスケール値によって特定されたクロック数で停止する。パワーPC(R)プロセッサ素子または相乗プロセッサ素子は、次いで、熱管理停止時間レジスタ434で実行値によって特定されたクロック数で実行することが可能である。温度が、終了抑制を下回る(TM_TPR[EndThrottlePPE/EndThrottleSPE])まで、このシーケンスは継続する。
熱管理システム割込みマスク・レジスタ438を使用して、割込みが未決定の間、どの割込みがパワーPC(R)プロセッサ素子の抑制を終了するかを選択する。
熱管理制御レジスタ430は、各パワーPC(R)プロセッサ素子または相乗プロセッサ素子の抑制モードを独立して設定する。制御ビットは、2つのレジスタ間で分離されている。下記は、各パワーPC(R)プロセッサ素子または相乗プロセッサ素子に独立してセットされうる5つの異なるモードである。
・動的抑制使用不可能(コア停止安全を含む)
・通常オペレーション(動的抑制およびコア停止安全使用可能)
・パワーPC(R)プロセッサ素子または相乗プロセッサ素子は常に抑制される(コア停止安全使用可能)。
・コア停止安全使用不可能(動的抑制使用可能、コア停止安全使用不可能)。
・パワーPC(R)プロセッサ素子または相乗プロセッサ素子は常に抑制され、コア停止安全使用不可能。
特権ソフトウェアは、アプリケーションまたはオペレーティング・システムを実行しているパワーPC(R)プロセッサ素子または相乗プロセッサ素子のために制御ビットを通常オペレーションに設定するべきである。パワーPC(R)プロセッサ素子または相乗プロセッサ素子がアプリケーション・コードを実行していない場合、特権ソフトウェアは、制御ビットを使用不可能に設定するべきである。「パワーPC(R)プロセッサ素子または相乗プロセッサ素子は常に抑制される」モードは、アプリケーション開発のために意図されたものである。これらのモードは、アプリケーションが極端な抑制条件下で作動することができるかどうか決定するのに有用である。特権ソフトウェアがアクティブに熱事象を管理する場合、パワーPC(R)プロセッサ素子または相乗プロセッサ素子が、動的抑制またはコア停止安全使用不可能で実行することを許可することのみが可能であるべきである。
熱管理システム割込みマスク・レジスタ438は、どのパワーPC(R)プロセッサ素子割込みが熱管理論理にパワーPC(R)プロセッサ素子の抑制を一時停止させるかを制御する。割込みによって対象にされたスレッドかにかかわらず、割込みが未決定の間、抑制は両方のスレッドに対し一時的に停止する。割込みがもはや未決定でない場合、抑制条件がまだ存在する限り抑制は再開することができる。相乗プロセッサ素子の抑制は、システム割込み条件に基づいて終了されない。抑制条件を無効にすることができるパワーPC(R)プロセッサ素子割込み条件は、以下のとおりである。
外部
デクリメンタ
ハイパーバイザ・デクリメンタ
システム・エラー
熱管理
熱管理スロットル点レジスタ432は、パワーPC(R)プロセッサ素子または相乗プロセッサ素子の実行抑制が開始および終了するコード化された温度点を含む。このレジスタは、また、パワーPC(R)プロセッサ素子または相乗プロセッサ素子の実行が、完全に抑制されるコード化された温度点を含む。
熱管理スロットル点レジスタでの値は、3つの熱管理状態、すなわち、正常実行(N)、抑制されたパワーPC(R)プロセッサ素子または相乗プロセッサ素子(T)、および停止されたパワーPC(R)プロセッサ素子または相乗プロセッサ素子(S)の間で変化するために3つの温度点を設定するために使用される。独立した温度点は、パワーPC(R)プロセッサ素子および相乗プロセッサ素子に対しサポートされる。
熱センサ現在温度状態レジスタ412でのセンサのコード化された現在温度が、抑制温度(ThrottlePPE/ThrottleSPE)以上である場合、可能であるなら、対応するパワーPC(R)プロセッサ素子または相乗プロセッサ素子の実行抑制を開始する。対応するセンサのコード化された現在温度がコード化された温度未満になり抑制を終了する(EndThrottlePPE/EndThrottleSPE)まで、実行抑制は継続する。安全対策として、コード化された現在温度が、全スロットル点以上である場合(全抑制PPE/全抑制SPE)、対応するパワーPC(R)プロセッサ素子または相乗プロセッサ素子を停止する。
熱管理停止時間レジスタ434は、熱管理抑制状態での特定のパワーPC(R)プロセッサ素子または相乗プロセッサ素子に適用される抑制量を制御する。熱管理停止時間レジスタでの値は、パワーPC(R)プロセッサ素子または相乗プロセッサ素子が停止される時間と実行(コア−停止(x)/32)時間の割合で表される。パワーPC(R)プロセッサ素子または相乗プロセッサ素子が停止し実行するクロック(NClks)の実際の数は、熱管理抑制スケール・レジスタ436によって制御される。
熱管理抑制スケール・レジスタ436は、パワーPC(R)プロセッサ素子または相乗プロセッサ素子が熱管理抑制状態の間に停止および実行するサイクルの実際の数を制御する。このレジスタでの値は、TM_Config[MinStopSPE]を設定する構成リングの倍数である。停止および実行サイクルの実際の数は、以下の式によって計算される。
相乗プロセッサ素子実行および停止時間
[式1]
SPE_StopTime = (TM_STR1[StopCore(x)]* TM_Config[MinStopSPE]) * TM_TSR[ScaleSPE]
[式2]
SPE_RunTime = (32 -TM_STR1[StopCore(x)]) * TM_Config[MinStopSPE]) * TM_TSR[ScaleSPE]
パワーPC(R)素子の実行および停止時間
[式3]
PPE_StopTime = (TM_STR2[StopCore(8)]* TM_Config[MinStopPPE]) * TM_TSR[ScalePPE]
[式4]
PPE_RunTime = (32 -TM_STR2[StopCore(8)]) * TM_Config[MinStopPPE]) * TM_TSR[ScalePPE]
実行および停止時間は、割込みおよび様々な熱管理レジスタを書き込む特権ソフトウェアによって変更することができる。
以下の記載は、命令ストリームおよび1つのプロセッサを対象とするが、命令ストリームは、1セットの命令ストリームであってもよく、プロセッサは、1セットのプロセッサであってもよい。すなわち、1セットは、単なる単一の命令ストリーム、および単一プロセッサ、または2つ以上の命令ストリームおよびプロセッサであってもよい。
図6は、実施形態によるソフトウェア熱プロファイルの分析生成のためのオペレーションを示すフローチャートである。ソフトウェア熱プロファイルは、ソフトウェア温熱指数と称してもよい。ソフトウェア熱プロファイルは、ハードウェアまたはソフトウェアの熱特性、もしくはハードウェアおよびソフトウェア両方の熱特性に関する情報を含むデータ構造である。
オペレーションが開始されると、1セットのプロセッサ上で実行するプログラムまたはアプリケーションのコンパイル、構築または後処理を行なう(ステップ602)。コンパイル、構築または後処理プログラムの命令当たりのサイクル(CPI)効率を推定するために、コンパイル、構築または後処理プログラムの命令ストリームを分析する(ステップ604)。コンパイラは、オブジェクトコードを最適化するために、ミクロアーキテクチャの詳細を理解する必要がある。この知識で、コンパイラは、命令タイプおよびオペランド依存状態に基づいて、一定の命令当たりのサイクル(CPI)に各命令を付与する。推定される命令当たりのサイクルは、熱プロファイルまたは温熱指数を決定するために使用することができる実行効率の近似値である。プログラムのための命令当たりのサイクルは、データ構造に所定時間記憶される(ステップ606)。所定時間は、プログラムの命令ストリームを分析する前に設定された任意の時間であってもよい。データ構造は、レジスタまたはデータベースなどの任意のタイプのデータ構造であってもよい。
次いで、命令当たりのサイクルの記憶された値に基づいて、温熱指数を生成する(ステップ608)。ステップ610〜616に温熱指数の生成を記載している。まず、記憶された命令当たりのサイクル値を、記憶装置から検索する(ステップ610)。検索値が命令当たりのサイクルの逆数に比例するように、命令当たりのサイクル値を処理する(ステップ612)。処理値を温熱指数として保存する(ステップ614)。決定は、未処理の記憶値がさらにあるかどうかに関してなされる(ステップ616)。ステップ616で、処理される必要がある記憶値がさらにあるなら、オペレーションはステップ610に戻り、そうでなければ、オペレーションは終了する。この実施態様では、温熱指数は命令当たりのサイクルの逆数(1/CPI)に比例する。より低い命令当たりのサイクル値を有するプログラムは、より多くのマシンリソースを使用し、このように、システムの熱環境(例えば、プロセッサの温度は、より低いCPIで高くなる)に、より大きな影響を及ぼす。この実施形態では情報ストリームの命令当たりのサイクルが使用されるが、演算ユニットまたはデータフロー・ユニットの転送されるバイト当たりのサイクルなどの温熱指数を計算する他の測定基準であってもよい。
ステップ608〜616でプログラム用に生成された温熱指数は、コンパイラによって生成されてもよい。これらの実施例における単純な形態では、温熱指数は、様々な演算ユニットおよびデータフロー・ユニットの強度を表わす分析情報の単数または加重和であってもよい。または、各プロセッサの演算ユニットおよびデータフロー・ユニットに対する値のベクトルも使用してもよい。アプリケーション用に温熱指数を生成する。ハードウェアはコアの実施に基づく温熱指数も有する。サーマルマップ、コアの熱効率、ダイ上の位置などを、この温熱指数を生成するために使用してもよい。次いで、2つの温熱指数をともに使用して、選択されたコア上で実行されるアプリケーションの熱特性を表わしてもよい。実施形態では、温熱指数は、より正確にソフトウェアの平均だけでなくピークおよびシステムへの熱影響をより正確に表わすために、標準偏差情報を含む。ELFノートなどのプログラム・ヘッダー情報を有する温熱指数を含んでもよい。
図6のプロセスの典型的な実施は以下のとおりである。アプリケーション用のオブジェクトコードを生成するために、コンパイラを使用する。編集中に、コンパイラは、命令シーケンスを検討することができる。ミクロアーキテクチャについての詳細な知識を使用して、推定CPIをオブジェクトコードのために生成する。次いで、CPIの逆数をデータ構造に記憶する。次いで、データ構造のコンテンツがローダによって使用され、アプリケーションを実行するための最良のコアを決定することができる。また、システムの熱環境へのアプリケーションの熱影響をさらに最適化するために、ローダは、コアの温熱指数とアプリケーションの温熱指数を組み合わせることができる。
実験測定温度に対するこの実施形態における有利な方法では、プロセッサ使用率は、実験測定が、特定のマルチコア・プロセッサ・チップおよび作業負荷レベルに、結果として生じるソフトウェア温熱指数を結び付けることであり、ここで、この方法はソフトウェアに対する理想値を表わす。さらに、この実施形態は、特定のチップまたはシステム作業負荷レベルに関係しない。
マイクロプロセッサ・アーキテクチャ上のソフトウェア・コンパイル、構築または後処理、もしくはそれらの組み合わせは、1セットのマシンリソースを利用する。マイクロプロセッサ・アーキテクチャについての詳細な知識と結び付けられたソフトウェアの注意深い分析を通じて、ソフトウェアがどれくらい効率的にマシンリソースを使用するか推測することは可能である。リソ−ス効率(強度)は、ソフトウェアの熱影響の指標になる。
図7は、実施形態によるシミュレートされた環境でのランタイム実行によるソフトウェア熱プロファイルの生成のオペレーションを示すフローチャートである。実施態様として、シミュレートされた環境でランタイム実行を使用して、熱プロファイルを生成するために、図4の熱管理制御ユニット402を使用することは可能である。
オペレーションが開始されると、1セットのプロセッサ上で実行されるソフトウェア・プログラムまたはアプリケーションを、ソフトウェア・シミュレータ上で実行する(ステップ702)。ソフトウェア・シミュレーションを行なうとともに、プロセッサ上で行なわれているハードウェア・オペレーションの種類および頻度を分析する(ステップ704)。この実施態様では、サイクルをベースにしたシミュレータを使用して、より正確に命令当たりのサイクル(CPI)を生成する。例は、コンパイラによって生成されたオブジェクトコードを後処理する。サイクルをベースにしたシミュレータを使用して命令シーケンスをシミュレートし、命令ストリームを実行するのに必要なサイクル数を決定する。CPIは、熱プロファイルまたは温熱指数を決定するために使用することができる実行効率の近似値である。
シミュレータは、プロセッサのオペレーションをシミュレートするために、ミクロアーキテクチャの詳細を理解する必要がある。この知識で、シミュレータは、命令の種類およびオペランド依存状態に基づいて、命令当たりのサイクルを推定することができる。その推定は、コンパイラによって生成されるより正確である。推定された命令当たりのサイクルは、熱プロファイルまたは温熱指数を決定するために使用することができる実行効率の近似値である。ここで、ソフトウェア・シミュレーションのための分析情報を、データ構造に所定時間記憶する(ステップ706)。所定時間は、実行するプログラムの命令ストリームを分析する前に設定された任意の時間であってもよい。データ構造は、レジスタまたはデータベースなどの任意のタイプのデータ構造であってもよい。分析されたハードウェアの熱特性についての知識に基づいて、ソフトウェア温熱指数が生成される(ステップ708)。温熱指数の生成については、図6のステップ610〜616に記載されている。
例として、命令当たりのサイクルは、ソフトウェア・シミュレーションが、マイクロプロセッサの内部実行パイプラインを使用する強度を示し、この場合、より低い命令当たりのサイクル値は、実行パイプライン上のより高い強度を示す。同様に、バイト当たりのサイクルは、ソフトウェアがマイクロ・プロセッサのデータフロー・ユニットを利用する強度を示す。
図7のプロセスの典型的な実施は、以下のとおりである。コンパイラを使用して、アプリケーション用のオブジェクトコードを生成する。編集後、オブジェクトコードを、サイクルベースのシミュレータ上で実行する。オブジェクトコードのシミュレーションの一部として、アプリケーションの命令シーケンスのための正確なサイクル計算を記録する。次いで、サイクル数をシーケンスでの命令数で割って、CPIを決定する。シミュレーション中に、シミュレータは命令シーケンスを検討することができる。ミクロアーキテクチャについての詳細な知識を使用して、オブジェクトコード用に推定CPIを生成する。次いで、CPIの逆数をデータ構造に記憶する。次いで、データ構造のコンテンツがローダによって使用され、アプリケーションを実行するための最良のコアを決定することができる。また、システムの熱環境へのアプリケーションの熱影響をさらに最適化するために、ローダはコアの温熱指数とアプリケーションの温熱指数を組み合わせることができる。
マルチコア・プロセッサ上での実験測定温度およびプロセッサ使用率に対するこの方法の利点は、実験測定が、特定のマルチコア・プロセッサ・チップに対して、結果生ずるソフトウェア温熱指数を結びつけることであり、ここで、この方法は、ソフトウェアに対する理想値を表わし、特定のチップに関係しない。これは、順に、特定のマルチプロセッサ・チップおよびシステム作業負荷に対しソフトウェアを最適化するためにコンパイラにフィードバックすることができる。
図8は、実施形態によるマルチコア・プロセッサおよび測定プロセッサ使用率でのランタイム実行によるソフトウェア熱プロファイルの生成に関するオペレーションを示すフローチャートである。実施態様として、マルチコア・プロセッサおよび測定プロセッサ使用率でランタイム実行を使用して、熱プロファイルを生成するために、図4の熱管理制御ユニット402を使用することが可能である。
オペレーションが開始されると、プログラムまたはアプリケーションなどの様々な作業負荷は、1つまたは複数のプロセッサ上で実行される(ステップ802)。アプリケーションを使用して、特定のアプリケーション用の温熱指数のより正確な表示が付与される。作業負荷はそれほど正確ではないが、それらは広範囲のアプリケーションをカバーし、個々の特定のアプリケーションの分析を行なう必要性がなくなる。システムの目標とする市場の区分によって典型的に実行されたコードの種類を表わすために、作業負荷を選択する。作業負荷は、アプリケーション・スペースの計算上の態様を表わす小さなコード区分である。各市場区分につき1つとしていくつかの温熱指数値を有することが可能である。例として、地球科学市場区分(信号分析)で行なわれた典型的な計算集中作業を表わすために、高速フーリエ変換(FFT)作業負荷を選択する。作業負荷は、マルチコア・プロセッサの熱状態に様々な効果を有する。作業負荷を実行している間、マルチコア・プロセッサに組み込まれた計装の使用を通じて、オペレーションの種類および頻度のサンプリングを行う(ステップ804)。この実施態様では、プロセッサの性能監視能力は、アプリケーションの使用率を監視するために使用される。一例は、キャッシュ・ミスまたはオペランド依存状態による命令停止数を記録することである。結果は、作業負荷またはアプリケーションがどれくらい効率的にハードウェア上で実行されるかの測定である。停止数の逆数は、コアのアプリケーションの利用に比例し、温熱指数としてこのように使用することができる。図4の熱センサ現在温度状態レジスタ412を考慮して検討されるなどのように、ステップ804で行なわれるサンプリングは任意の種類のサンプリングであってもよい。可能な測定としては、例えば、各コアに関して、命令停止または使用率、キャッシュ使用率、バス使用率およびメモリ・アクセスを含んでいてもよい。次いで、サンプリングから得られた情報、およびプロセッサの熱特性についての知識をデータ構造に所定時間記憶する(ステップ806)。所定時間は、実行するプログラムの命令ストリームを分析する前に設定された任意の時間であってもよい。データ構造は、レジスタまたはデータベースなどの任意の種類のデータ構造であってもよい。次いで、記憶された情報は、その後終了するオペレーションと共にソフトウェア・モジュールがマルチコア・プロセッサ上で熱効果を予測するためのソフトウェアの温熱指数を生成するために使用されてもよい(ステップ808)。温熱指数の生成については、図6のステップ610〜616に記載されている。
データ構造に記憶された情報が、どのように温熱指数に変換されるかの一例は、情報の加重和を使用することである。例えば、キャッシュ・ミスの数が増加するとともに、プロセスの全体の使用率はより低くなり、プロセッサへの熱効果も下がる。この場合、キャッシュ・ミスの実際の加重は、マイナスであってもよい。加重は、データ構造に記憶された情報に依存する。これはすべて、温熱指数が、プロセッサ上でのアプリケーションの熱効果の基準であることを仮定する。温熱指数がより高いほど、そのアプリケーションのプロセッサ温度を上げるポテンシャルが大きい。
分析推定に対するこの方法の利点は、実験測定が、特定のマルチプロセッサ・チップおよびシステム作業負荷に結果として生じるソフトウェア「温熱指数」を結びつけるということである。これは、順に、特定のマルチプロセッサ・チップおよびシステム作業負荷に対しソフトウェアを最適化するためにコンパイラにフィードバックすることができる。
図9は、実施形態による熱サンプリングを使用してマルチコア・プロセッサ上でのランタイム実行によってソフトウェア熱プロファイルの生成のためのオペレーションを示すフローチャートである。実施態様として、熱サンプリングを使用して、マルチコア・プロセッサ上でランタイム実行を使用して、熱プロファイルを生成するために、図4の熱管理制御ユニット402を使用することが可能である。
オペレーションが開始されると、プログラムまたはアプリケーションなどの様々な作業負荷を、1つまたは複数のプロセッサ上で実行する(ステップ902)。アプリケーションを使用することで、特定のアプリケーション用の温熱指数のより正確な表示が付与される。作業負荷はそれほど正確ではないが、それらは広範囲のアプリケーションをカバーし、個々の特定のアプリケーションの分析を行なう必要性がなくなる。作業負荷は、マルチコア・プロセッサの熱状態に様々な効果を有する。作業負荷を実行している間、マルチコア・プロセッサの熱状態のサンプリングを行う(ステップ904)。この実施態様では熱管理を使用する。作業負荷が実行されるとともに、プロセッサの熱センサが読み出される。結果は、アプリケーションの経時熱グラフである。一例が図5の温度グラフであり、ここで、温度はY軸上で表わされ、時間はX軸上で表わされる。次いで、プロセッサのサンプリングから得られた情報をデータ構造に所定時間記憶する(ステップ906)。所定時間は、実行するプログラムの命令ストリームを分析する前に設定された任意の時間であってもよい。データ構造は、レジスタまたはデータベースなどの任意の種類のデータ構造であってもよい。次いで、記憶された情報を使用して、ソフトウェア・モジュールのためのソフトウェア温熱指数を生成し、その後終了するオペレーションと共にマルチコア・プロセッサ上の熱効果を予測してもよい(ステップ908)。アプリケーションを実行している間に、温度のサンプリングのための温熱指数を生成する方法は多くある。一例は、記録された温度の平均をとり、標準偏差または平均から温度変化の2つのシグマを加えることである。他の例は、図6のステップ610〜616に記載されているような温熱指数の生成であってもよい。
分析推定に対するこの方法の利点は、実験測定が、結果として生じるソフトウェア的な「温熱指数」を特定のマルチ・プロセッサ・チップ、システム作業負荷および熱環境につなぐということである。これは、順に、この環境用のソフトウェアを最適化するために、コンパイラにフィードバックすることができる。
図10は、実施形態によるマルチコア・プロセッサ用のハードウェア熱プロファイルの生成のためのオペレーションを示すフローチャートである。ハードウェア熱プロファイルは、ハードウェアまたはシステムの熱的性能に関する情報を含むデータ構造である。プロセッサ上のいくつかのコアは、他のコアおよびシステム冷却ソリューションに関するコア位置に起因する、より良好な熱特性を有していてもよい。ハードウェア熱プロファイルは、プロセッサが、熱的に強い作業負荷にどのように応答するかの基準と見なされてもよい。この基準は、システムの環境に基づいて変化してもよい(つまり、夏のテキサスにあればシステムは非常に熱くなる)。この温熱指数を生成するために、サーマルマップ、コアの熱効率、ダイ上の位置などを使用してもよい。ハードウェア温熱指数は、単なるプロセッサのサーマルマップなどのように、かなり複雑であってもよく、または非常に単純であってもよい。実施態様として、熱サンプリングを使用して、マルチコア・プロセッサ上でのランタイム実行を使用して、熱プロファイルを生成するために、図4の熱管理制御ユニット402を使用することが可能である。
オペレーションが開始すると、プログラムまたはアプリケーションなどの様々な作業負荷を、1つまたは複数のプロセッサ上で実行する(ステップ1002)。作業負荷は、マルチコア・プロセッサの熱状態に様々な効果を有する。作業負荷を実行している間に、マルチコア・プロセッサの熱状態のサンプリングを行なう(ステップ1004)。ハードウェア熱プロファイルについては、プロセッサの最大熱オペレーションを表わすために、作業負荷を選択する。アプリケーションが実行し、データ構造に情報を記憶している間、現在または最大温度レジスタを周期的に読み出すことによって、温度をサンプリングする。セル・ブロードバンド・エンジンにおいて、ハードウェアまたはソフトウェアでサンプリングを行ってもよい。次いで、プロセッサのサンプリングから得られた情報を、データ構造に所定時間記憶する(ステップ1006)。所定時間は、実行するプログラムの命令ストリームを分析する前に設定された任意の時間であってもよい。データ構造は、レジスタまたはデータベースなどの、任意の種類のデータ構造であってもよい。この時点で、マルチコア・システムの電力または性能もしくはその両方の予め集められ記憶されたソフトウェア熱プロファイルの1つまたは複数の選択を行なう(ステップ1008)。選択は、ロードまたは実行される、もしくはロードおよび実行されるアプリケーションの種類に基づいていてもよい。選択されたソフトウェア熱プロファイルと組み合わせられるマルチコア・プロセッサの熱状態のサンプリングから記憶された情報を利用して、その後終了するオペレーションと共に最適にマルチコア・システムを管理する(ステップ1010)。サンプリングされた熱データから生成された温熱指数を使用して、またはアプリケーションが現在スケジューリングされるべきであっても、どのコアがアプリケーションの実行に最良であるかを選択する。同様に、ソフトウェアは、プロセッサの現在の熱状態に関して余りに高い温熱指数を有するアプリケーションを抑制するための他の手段を使用してもよい。温熱指数の生成については、図6のステップ610〜616に記載されている。
図11は、実施形態によるマルチコア・プロセッサ・システムでの最適電力および性能のためのソフトウェア熱プロファイルの生成のオペレーションを示すフローチャートである。この実施態様では、図6、図7、図8、図9、図10に記載される前の温熱指数およびプロファイル情報は、すべて、アプリケーションの様々なスレッドまたはアプリケーショングループのスケジューリングを最適化するために利用する。ハードウェアの温熱指数は、ソフトウェアの温熱指数と組み合わせられる。次いで、そのスケジューリングは、システムの熱環境上で実行するアプリケーションの影響が最小となるように最適化される。実施態様として、マルチコア・プロセッサ・システムでの最適電力および性能のためのソフトウェア熱プロファイルを生成するために、図4の熱管理制御ユニット402を使用することが可能である。
オペレーションが開始すると、プロセスは、プログラムがいつ初期化されたかを検出する(ステップ1102)。プログラムが初期化される前に、図6、図7、図8、図9または図10で上述の方法のうちの1つを使用して温熱指数または1セットの温熱指数を生成する。ステップ1104および1106は、ソフトウェア温熱指数の分析生成を使用する例である。実行するプログラムの命令ストリームを、実行するプログラムの命令当たりのサイクル(CPI)効率を推定するために分析する(ステップ1104)。実行するプログラムのための命令当たりのサイクルを、データ構造に所定時間記憶する(ステップ1106)。所定時間は、実行するプログラムの命令ストリームを分析する前に設定された任意の時間であってもよい。データ構造は、レジスタまたはデータベースなどの任意の種類のデータ構造であってもよい。この時点で、マルチコア・システムの電力または性能、もしくはその両方の1つまたは複数の予め集められ記憶されたハードウェアおよびソフトウェア熱プロファイルの選択を行なう(ステップ1108)。多数の温熱指数が提供される場合、アプリケーションの種類に基づいて選択を行う。ユーザは、アプリケーションの熱プロファイルまたは温熱指数のどちらかを有していてもよく、または、ユーザは、アプリケーションの分類を表わす1セットの作業負荷に対するの温熱指数または熱プロファイルを有していてもよい。
次いで、アプリケーションまたはプログラムの実行をスケジューリングするなどのシステムの熱限界内で電力および性能を最適に管理するために、その後終了するオペレーションと共に、命令当たりのサイクルおよびハードウェアとソフトウェアのプロファイルの記憶された値に基づいて、温熱指数を生成する(ステップ1110)。この実施態様では、温熱指数は、命令当たりのサイクルの逆数(1/CPI)に比例する。より低い命令当たりのサイクル値を有するプログラムは、より多くのマシンリソースを使用し、このように、システムの熱状態により大きな影響を及ぼす。この実施形態では情報ストリームの命令当たりのサイクルが使用されるが、演算ユニットまたはデータフロー・ユニットの転送されるバイト当たりのサイクルなどの温熱指数を計算する他の測定基準であってもよい。
ステップ1110でプログラム用に生成された温熱指数は、コンパイラによって生成されてもよい。単純な形態では、温熱指数は、様々な演算ユニットおよびデータフロー・ユニットの強度を表わす分析情報の単数または加重和であってもよい。または、各々のプロセッサの演算ユニットおよびデータフロー・ユニットに対する値のベクトルも使用してもよい。実施形態では、温熱指数は、ソフトウェアの平均だけでなくピークおよびシステムへの熱影響をより正確に表わすために、標準偏差情報を含む。ELFノートなどのプログラム・ヘッダー情報を有する温熱指数を含んでもよい。
実施形態は、ハードウェア全体の実施の形態、ソフトウェア全体の実施の形態、またはハードウェア要素およびソフトウェア要素の両方を含む実施の形態の形態を取ることができる。実施形態はソフトウェアで実行し、ソフトウェアは、ファームウェア、常駐ソフトウェア、マイクロコードなどが挙げられるがそれらに限定されない。
更に、実施形態は、コンピュータまたは任意の命令実行システムによる、またはそれと関連して使用するためのプログラムコードを提供するコンピュータ使用可能またはコンピュータ読み取り可能な媒体からアクセス可能なコンピュータ・プログラム製品の形態を取ることができる。この記載の目的上、コンピュータ使用可能またはコンピュータ判読可能な媒体は、命令実行システム、器具または装置により、またはそれに関連して使用するためのプログラムを含む、記憶する、通信する、広める、または移動することができる任意の具体的な装置とすることができる。
媒体は、電子、磁気、光学、電磁気、赤外線、または半導体システム(または器具または装置)または伝搬媒体とすることができる。コンピュータ読み取り可能な媒体としては、半導体または固体メモリ、磁気テープ、除去可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、硬質磁気ディスクおよび光ディスクが挙げられる。光ディスクの最新の例としては、コンパクトディスク読み出し専用メモリ(CD−ROM)、コンパクトディスク読み取り/書き込み(CD−R/W)およびDVDが挙げられる。
プログラムコードを記憶または実行もしくはその両方を行うのにふさわしいデータ処理システムは、システムバスを介して、メモリ素子に直接または間接的につながれた少なくとも1つのプロセッサを含む。メモリ素子は、回数を低減するために、少なくともあるプログラムの一時的記憶を提供するプログラムコード、大容量記憶装置およびキャッシュメモリの実際の実行の間に使用されるローカルメモリを含むことができ、実行の間に大容量記憶装置からコードを検索する。
入力/出力またはI/O装置(キーボード、ディスプレイ、ポインティングデバイス装置などを含み、これらに限定されない)は、システムに直接または介在するI/Oコントローラを介してつなぐことができる。
ネットワーク・アダプターもシステムにつながれ、データ処理システムを、介在する個人のネットワークまたはパブリック・ネットワークを介して、他のデータ処理システムまたは遠隔プリンターまたは記憶装置につなぐことを可能とする。モデム、ケーブル・モデムおよびイーサネットカードは、現在利用可能な数少ないタイプのネットワーク・アダプターである。
実施形態の記載は、実例および説明のために示されており、包括的、または開示される実施形態に限定されることを意図しない。多くの修正および変形は、当業者にとって明らかとなるであろう。実施形態の原理、実際の適用について最良に説明し、他の当業者が、熟慮された特定の使用に適用できるように様々な修正がなされた様々な形態に関して実施形態を理解することを可能とするために、実施例を選択し記載した。
実施形態を実行するデータ処理システムのネットワークの図的記述を示す。 実施形態を実行するデータ処理システムのブロック図である。 実施形態による実施態様を実行するセル・ブロードバンド・エンジン・チップの典型的図である。 実施形態による典型的セル・ブロードバンド・エンジン・チップ熱管理システムを示す図である。 実施形態によって温度、並びに割込みおよび動的抑制が生じる様々なポイントを示す図である。 実施形態によるソフトウェア熱プロファイルの分析生成のオペレーションを示すフローチャートである。 実施形態によるシミュレートされた環境でのランタイム実行によるソフトウェア熱プロファイルの生成のためのオペレーションを示すフローチャートである。 実施形態によるマルチコア・プロセッサ上でのランタイム実行およびプロセッサ使用率の測定によって、ソフトウェア熱プロファイルの生成のためのオペレーションを示すフローチャートである。 実施形態による熱サンプリングを使用するマルチコア・プロセッサ上でのランタイム実行によるソフトウェア熱プロファイルの生成のためのオペレーションを示すフローチャートである。 実施形態によるマルチコア・プロセッサ用のハードウェア熱プロファイルのための生成のオペレーションを示すフローチャートである。 実施形態によるマルチコア・プロセッサ・システムでの最適出力および性能のためのソフトウェア熱プロファイルの生成のためのオペレーションを示すフローチャートである。

Claims (20)

  1. 1セットのプロセッサ上で実行されるアプリケーション用にソフトウェア熱プロファイルを生成する、コンピュータによって実施する方法であって、
    前記1セットのプロセッサによってプログラムを実行するために、1セットの命令ストリームを分析して分析情報を作成するステップと、
    前記分析情報に基づいて温熱指数を生成するステップとを有する、コンピュータによって実施する方法。
  2. 前記分析情報をデータ構造に記憶するステップをさらに含み、
    前記データ構造の分析情報を使用して温熱指数を生成する、請求項1のコンピュータによって実施する方法。
  3. 前記分析情報はプログラムの命令当たりのサイクルである、請求項1のコンピュータによって実施する方法。
  4. 前記温熱指数はプログラムの熱効率である、請求項1のコンピュータによって実施する方法。
  5. 前記プログラムの命令ストリームを予め定められた時間分析する、請求項1のコンピュータによって実施する方法。
  6. 前記温熱指数は前記プログラムの命令当たりのサイクルの逆数に比例する、請求項3のコンピュータによって実施する方法。
  7. 前記分析情報はバイト当たりのサイクルである、請求項1のコンピュータによって実施する方法。
  8. 前記バイト当たりのサイクルを1セットの演算ユニットまたは1セットのデータフロー・ユニットの少なくとも1つから転送する、請求項7のコンピュータによって実施する方法。
  9. 前記温熱指数をコンパイラによって生成する請求項1のコンピュータによって実施する方法。
  10. 前記温熱指数は単一の数である、請求項1のコンピュータによって実施する方法。
  11. 前記温熱指数は1セットの演算ユニットまたは1セットのデータフロー・ユニットの少なくとも1つの強度を表わす分析情報の加重和である、請求項4のコンピュータによって実施する方法。
  12. 前記温熱指数は1セットの演算ユニットまたは1セットのデータフロー・ユニットの少なくとも1つに対する値のベクトルである、請求項4のコンピュータによって実施する方法。
  13. バスシステムと、
    前記バスシステムに接続された通信システムと、
    前記バスシステムに接続され、1セットの命令を含むメモリと、
    前記バスシステムに接続され、1セットの命令を実行して、プログラムを1セットのプロセッサによって実行するために1セットの命令ストリームを分析して分析情報を作成し、該分析情報に基づいて温熱指数を生成する処理ユニットとを有する、データ処理システム。
  14. 前記処理ユニットは、1セットの命令を実行してデータ構造に分析情報を記憶し、前記温熱指数は、前記データ構造の分析情報を使用して生成される、請求項13のデータ処理システム。
  15. 前記分析情報は前記プログラムの命令当たりのサイクルである、請求項13のデータ処理システム。
  16. 前記温熱指数は前記プログラムの熱効率である、請求項13のデータ処理システム。
  17. 1セットのプロセッサ上で実行されるアプリケーション用のコンピュータ使用可能プログラムコードを含むコンピュータ使用可能媒体と、
    前記1セットのプロセッサによってプログラムを実行するために1セットの命令ストリームを分析して、分析情報を作成するコンピュータ使用可能プログラムコードと、
    前記分析情報に基づいて温熱指数を生成するためのコンピュータ使用可能プログラムコードとを含む、コンピュータ・プログラム。
  18. データ構造に分析情報を記憶するためのコンピュータ使用可能プログラムコードをさらに含み、
    前記温熱指数は前記データ構造の分析情報を使用して生成される、請求項17のコンピュータ・プログラム。
  19. 前記分析情報は前記プログラムの命令当たりのサイクルである、請求項17のコンピュータ・プログラム。
  20. 前記温熱指数は前記プログラムの熱効率である、請求項17のコンピュータ・プログラム。
JP2006312155A 2005-11-29 2006-11-17 ソフトウェア熱プロファイルの分析生成のコンピュータによって実施する方法、データ処理システム、およびコンピュータ・プログラム Pending JP2007183925A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/289,248 US7490017B2 (en) 2005-11-29 2005-11-29 Analytical generation of software thermal profiles

Publications (1)

Publication Number Publication Date
JP2007183925A true JP2007183925A (ja) 2007-07-19

Family

ID=38088613

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006312155A Pending JP2007183925A (ja) 2005-11-29 2006-11-17 ソフトウェア熱プロファイルの分析生成のコンピュータによって実施する方法、データ処理システム、およびコンピュータ・プログラム

Country Status (2)

Country Link
US (1) US7490017B2 (ja)
JP (1) JP2007183925A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011022940A (ja) * 2009-07-17 2011-02-03 Nec Corp 情報処理装置および情報処理方法並びにプログラム

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395174B2 (en) 2005-11-29 2008-07-01 International Business Machines Corporation Generation of software thermal profiles executed on a set of processors using thermal sampling
US7386414B2 (en) * 2005-11-29 2008-06-10 International Business Machines Corporation Generation of hardware thermal profiles for a set of processors
US7480586B2 (en) * 2005-11-29 2009-01-20 International Business Machines Corporation Thermal interrupt generation
US7848901B2 (en) * 2005-11-29 2010-12-07 International Business Machines Corporation Tracing thermal data via performance monitoring
US7460932B2 (en) * 2005-11-29 2008-12-02 International Business Machines Corporation Support of deep power savings mode and partial good in a thermal management system
US7376532B2 (en) * 2005-11-29 2008-05-20 International Business Machines Corporation Maximal temperature logging
US7716006B2 (en) * 2008-04-25 2010-05-11 Oracle America, Inc. Workload scheduling in multi-core processors
US7805516B2 (en) * 2008-10-14 2010-09-28 Dell Products L.P. Enabling throttling of resources on a virtualization enabled information handling system
US8064197B2 (en) * 2009-05-22 2011-11-22 Advanced Micro Devices, Inc. Heat management using power management information
US8516460B2 (en) * 2011-08-02 2013-08-20 International Business Machines Corporation Real-time temperature sensitive machine level code compilation and execution
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
US9279597B1 (en) 2013-11-11 2016-03-08 Brocade Communications Systems, Inc. Selection of environmental profile based on system configuration
US9848515B1 (en) 2016-05-27 2017-12-19 Advanced Micro Devices, Inc. Multi-compartment computing device with shared cooling device

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175852A (en) 1987-02-13 1992-12-29 International Business Machines Corporation Distributed file access structure lock
JPH06309200A (ja) 1991-04-10 1994-11-04 Internatl Business Mach Corp <Ibm> ボリュームからオブジェクトを読取る方法、並びに階層式記憶システム及び情報処理システム
US5469580A (en) * 1994-11-07 1995-11-28 Sobol; Brigitte Shampoo cape
US5778384A (en) 1995-12-22 1998-07-07 Sun Microsystems, Inc. System and method for automounting and accessing remote file systems in Microsoft Windows in a networking environment
US6029119A (en) 1996-01-16 2000-02-22 Compaq Computer Corporation Thermal management of computers
US5953536A (en) 1996-09-30 1999-09-14 Intel Corporation Software-implemented tool for monitoring power management in a computer system
US6349385B1 (en) 1998-11-20 2002-02-19 Compaq Computer Corporation Dual power supply fan control—thermistor input or software command from the processor
US6564328B1 (en) 1999-12-23 2003-05-13 Intel Corporation Microprocessor with digital power throttle
EP1182538B1 (en) 2000-08-21 2010-04-07 Texas Instruments France Temperature field controlled scheduling for processing systems
US7174194B2 (en) 2000-10-24 2007-02-06 Texas Instruments Incorporated Temperature field controlled scheduling for processing systems
US6760826B2 (en) 2000-12-01 2004-07-06 Wind River Systems, Inc. Store data in the system memory of a computing device
US7000130B2 (en) 2000-12-26 2006-02-14 Intel Corporation Method and apparatus for thermal throttling of clocks using localized measures of activity
US6776817B2 (en) 2001-11-26 2004-08-17 Honeywell International Inc. Airflow sensor, system and method for detecting airflow within an air handling system
US6804632B2 (en) 2001-12-06 2004-10-12 Intel Corporation Distribution of processing activity across processing hardware based on power consumption considerations
US6788325B2 (en) * 2002-02-06 2004-09-07 Brady Worldwide, Inc. Processing multiple thermal elements with a fast algorithm using dot history
US6996491B2 (en) 2002-02-19 2006-02-07 Sun Microsystems, Inc. Method and system for monitoring and profiling an integrated circuit die temperature
US7890554B2 (en) 2002-03-14 2011-02-15 International Business Machines Corporation Apparatus and method of exporting file systems without first mounting the file systems
US7086058B2 (en) 2002-06-06 2006-08-01 International Business Machines Corporation Method and apparatus to eliminate processor core hot spots
US6889908B2 (en) * 2003-06-30 2005-05-10 International Business Machines Corporation Thermal analysis in a data processing system
US7360102B2 (en) * 2004-03-29 2008-04-15 Sony Computer Entertainment Inc. Methods and apparatus for achieving thermal management using processor manipulation
US8224639B2 (en) * 2004-03-29 2012-07-17 Sony Computer Entertainment Inc. Methods and apparatus for achieving thermal management using processing task scheduling
JP3830491B2 (ja) 2004-03-29 2006-10-04 株式会社ソニー・コンピュータエンタテインメント プロセッサ、マルチプロセッサシステム、プロセッサシステム、情報処理装置および温度制御方法
US7197433B2 (en) 2004-04-09 2007-03-27 Hewlett-Packard Development Company, L.P. Workload placement among data centers based on thermal efficiency
US7412614B2 (en) 2004-04-29 2008-08-12 Hewlett-Packard Development Company, L.P. Power management using a pre-determined thermal characteristic of a memory module
US7347621B2 (en) * 2004-07-16 2008-03-25 International Business Machines Corporation Method and system for real-time estimation and prediction of the thermal state of a microprocessor unit
US7447920B2 (en) * 2004-08-31 2008-11-04 Hewlett-Packard Development Company, L.P. Workload placement based on thermal considerations
US7313709B2 (en) 2004-11-05 2007-12-25 International Business Machines Corporation Instruction set with thermal opcode for high-performance microprocessor, microprocessor, and method therefor
US7149645B2 (en) 2004-12-30 2006-12-12 Intel Corporation Method and apparatus for accurate on-die temperature measurement
US7194645B2 (en) * 2005-02-09 2007-03-20 International Business Machines Corporation Method and apparatus for autonomic policy-based thermal management in a data processing system
US7412353B2 (en) 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011022940A (ja) * 2009-07-17 2011-02-03 Nec Corp 情報処理装置および情報処理方法並びにプログラム

Also Published As

Publication number Publication date
US20070124103A1 (en) 2007-05-31
US7490017B2 (en) 2009-02-10

Similar Documents

Publication Publication Date Title
US7386414B2 (en) Generation of hardware thermal profiles for a set of processors
US7596430B2 (en) Selection of processor cores for optimal thermal performance
US7552346B2 (en) Dynamically adapting software for reducing a thermal state of a processor core based on its thermal index
US8037893B2 (en) Optimizing thermal performance using thermal flow analysis
US7698089B2 (en) Generation of software thermal profiles executed on a set of processors using processor activity
JP2007193775A (ja) ソフトウェア熱プロファイルおよびハードウェア熱プロファイルを使用してスケジューリングする、コンピュータによって実施する方法、データ処理システム、およびコンピュータ・プログラム
US7490017B2 (en) Analytical generation of software thermal profiles
US7512530B2 (en) Generation of software thermal profiles for applications in a simulated environment
US7395174B2 (en) Generation of software thermal profiles executed on a set of processors using thermal sampling
US20070260894A1 (en) Optimizing thermal performance using feed-back directed optimization
US7460932B2 (en) Support of deep power savings mode and partial good in a thermal management system
US7376532B2 (en) Maximal temperature logging
US7721128B2 (en) Implementation of thermal throttling logic
US7848901B2 (en) Tracing thermal data via performance monitoring
US7512513B2 (en) Thermal throttling control for testing of real-time software
US7747407B2 (en) Thermal interrupt generation
US7603576B2 (en) Hysteresis in thermal throttling
US7681053B2 (en) Thermal throttle control with minimal impact to interrupt latency
JP2008004095A (ja) リアルタイム・ソフトウェアの試験のためのサーマル・スロットリング制御