(57)【要約】【課題】  ソフトウェア熱プロファイルの分析生成のためにコンピュータによって実施する方法、データ処理システム、およびコンピュータ使用可能コードを提供する。【解決手段】  熱プロファイルを生成するために、１セットのプロセッサによってプログラムを実行するために１セットの命令ストリームを分析して、分析情報を作成する。分析情報に基づいて温熱指数を生成する。【選択図】図２
2007183925.tif 000002
【特許請求の範囲】
【請求項１】
１セットのプロセッサ上で実行されるアプリケーション用にソフトウェア熱プロファイルを生成する、コンピュータによって実施する方法であって、
前記１セットのプロセッサによってプログラムを実行するために、１セットの命令ストリームを分析して分析情報を作成するステップと、
前記分析情報に基づいて温熱指数を生成するステップとを有する、コンピュータによって実施する方法。
【請求項２】
前記分析情報をデータ構造に記憶するステップをさらに含み、
前記データ構造の分析情報を使用して温熱指数を生成する、請求項１のコンピュータによって実施する方法。
【請求項３】
前記分析情報はプログラムの命令当たりのサイクルである、請求項１のコンピュータによって実施する方法。
【請求項４】
前記温熱指数はプログラムの熱効率である、請求項１のコンピュータによって実施する方法。
【請求項５】
前記プログラムの命令ストリームを予め定められた時間分析する、請求項１のコンピュータによって実施する方法。
【請求項６】
前記温熱指数は前記プログラムの命令当たりのサイクルの逆数に比例する、請求項３のコンピュータによって実施する方法。
【請求項７】
前記分析情報はバイト当たりのサイクルである、請求項１のコンピュータによって実施する方法。
【請求項８】
前記バイト当たりのサイクルを１セットの演算ユニットまたは１セットのデータフロー・ユニットの少なくとも１つから転送する、請求項７のコンピュータによって実施する方法。
【請求項９】
前記温熱指数をコンパイラによって生成する請求項１のコンピュータによって実施する方法。
【請求項１０】
前記温熱指数は単一の数である、請求項１のコンピュータによって実施する方法。
【請求項１１】
前記温熱指数は１セットの演算ユニットまたは１セットのデータフロー・ユニットの少なくとも１つの強度を表わす分析情報の加重和である、請求項４のコンピュータによって実施する方法。
【請求項１２】
前記温熱指数は１セットの演算ユニットまたは１セットのデータフロー・ユニットの少なくとも１つに対する値のベクトルである、請求項４のコンピュータによって実施する方法。
【請求項１３】
バスシステムと、
前記バスシステムに接続された通信システムと、
前記バスシステムに接続され、１セットの命令を含むメモリと、
前記バスシステムに接続され、１セットの命令を実行して、プログラムを１セットのプロセッサによって実行するために１セットの命令ストリームを分析して分析情報を作成し、該分析情報に基づいて温熱指数を生成する処理ユニットとを有する、データ処理システム。
【請求項１４】
前記処理ユニットは、１セットの命令を実行してデータ構造に分析情報を記憶し、前記温熱指数は、前記データ構造の分析情報を使用して生成される、請求項１３のデータ処理システム。
【請求項１５】
前記分析情報は前記プログラムの命令当たりのサイクルである、請求項１３のデータ処理システム。
【請求項１６】
前記温熱指数は前記プログラムの熱効率である、請求項１３のデータ処理システム。
【請求項１７】
１セットのプロセッサ上で実行されるアプリケーション用のコンピュータ使用可能プログラムコードを含むコンピュータ使用可能媒体と、
前記１セットのプロセッサによってプログラムを実行するために１セットの命令ストリームを分析して、分析情報を作成するコンピュータ使用可能プログラムコードと、
前記分析情報に基づいて温熱指数を生成するためのコンピュータ使用可能プログラムコードとを含む、コンピュータ・プログラム。
【請求項１８】
データ構造に分析情報を記憶するためのコンピュータ使用可能プログラムコードをさらに含み、
前記温熱指数は前記データ構造の分析情報を使用して生成される、請求項１７のコンピュータ・プログラム。
【請求項１９】
前記分析情報は前記プログラムの命令当たりのサイクルである、請求項１７のコンピュータ・プログラム。
【請求項２０】
前記温熱指数は前記プログラムの熱効率である、請求項１７のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般に熱プロファイルに関し、詳細には、プロセッサ用の熱プロファイルに関する。さらに詳細には、本出願は、コンピュータによって実施する方法、データ処理システム、およびソフトウェア熱プロファイルの分析生成用コンピュータ使用可能コードに関する。
【背景技術】
【０００２】
第一世代のセルプロセッサは、大量の浮動小数点演算を可能とし、数値計算の作業負荷およびブロードバンドリッチメディアアプリケーションに最適化された６４ビットのパワーＰＣ（Ｒ）プロセッサコアおよび８つの相乗プロセッサコアで構成されたマルチコアチップである。高速メモリ・コントローラおよび高帯域バス・インターフェースも、統合オンチップである。セルの画期的なマルチコア・アーキテクチャおよび超高速コミュニケーション性能により多くの場合、非常に向上したリアルタイム・レスポンスが最新ＰＣプロセッサの性能の１０倍となる。セルは、オペレーティング・システム中立であり、多数のオペレーティング・システムを同時にサポートする。この種のプロセッサ用アプリケーションは、現実性が劇的に向上した次世代ゲームシステムから、家庭でデジタル媒体用ハブおよびストリーミング・コンテンツを形成するシステム、デジタル・コンテンツを開発し流通するために使用されるシステム、および視覚化およびスーパーコンピュータ・アプリケーションを加速するシステムまで広がっている。
【０００３】
今日の高性能マルチコア・プロセッサは、熱要件によって制限されることが多い。典型的な解決策としては、冷却および電力管理が挙げられる。冷却は、高価であるか包装することが困難である可能性があり、もしくは、高価でありかつ包装することが困難である可能性がある。電力管理は、プロセッサのすべてが熱限界に達していない場合、一般にきめが粗く、大いに抑制的である。熱管理などの他の技術は、所定の温度を超えるユニットを単に抑制することによってしか、これらの粗い制御の解決に役立たない。熱管理の改良があっても、アプリケーションをプロファイリングしてプロセッサが抑制されるのを防ぐ方法を有することは、システムに有益である。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
実施形態の様々な態様は、ソフトウェア熱プロファイルの分析生成のための方法、データ処理システム、およびコンピュータ使用可能コードを提供する。１セットのプロセッサによってプログラムを実行するために１セットの命令ストリームを分析し、分析情報を生成する。次いで、記憶された分析情報から、分析情報に基づいて温熱指数を生成する。
【課題を解決するための手段】
【０００５】
実施形態の新規特徴の考えられる特性については、添付の請求項に記載する。しかし、実施形態自体は、添付の図面と合わせて読めば、好ましい使用の態様、そのさらなる目的および利点と同様に、実施形態の以下の詳細な説明を参照することによって最もよく理解される。
【発明を実施するための最良の形態】
【０００６】
実施形態は、ソフトウェア熱プロファイルの分析生成に関する。図１および図２は、実施形態を実行するデータ処理環境の典型的な図として提供される。図１および図２は、単に例示であり、態様または実施例を実行する環境に関して、いかなる限定を主張または意図していないことを認識するべきである。実施形態の精神および範囲から逸脱することなく例示の環境に対して多くの変形例がなされうる。
【０００７】
以下、図面を参照すると、図１は、実施形態を実行するデータ処理システムのネットワークの図による記述を示す。ネットワーク・データ処理システム１００は、実施形態を実行するコンピュータのネットワークである。ネットワーク・データ処理システム１００は、ネットワーク１０２を含む。ネットワーク１０２とは、ネットワーク・データ処理システム１００内で互いに接続された様々な装置とコンピュータとの間で通信リンクを提供するために使用される媒体である。ネットワーク１０２は、ワイヤー、無線通信リンク、または光ファイバーケーブルなどの接続を含んでいてもよい。
【０００８】
示される実施例において、サーバ１０４およびサーバ１０６は、記憶装置１０８と共にネットワーク１０２に接続されている。さらに、クライアント１１０、１１２、１１４は、ネットワーク１０２に接続されている。これらのクライアント１１０、１１２、１１４は、例えば、パーソナル・コンピュータまたはネットワーク・コンピュータであってもよい。示される実施例において、サーバ１０４は、ブート・ファイル、オペレーティング・システム・イメージ、およびクライアント１１０、１１２、１１４へのアプリケーションなどのデータを提供する。クライアント１１０、１１２、１１４は、この実施例において、サーバ１０４に対するクライアントである。ネットワーク・データ処理システム１００は、図示していないさらなるサーバ、クライアントおよび他の装置を含んでいてもよい。
【０００９】
示される実施例において、ネットワーク・データ処理システム１００は、互いに通信するためにトランスミッション・コントロール・プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）のプロトコル・スイートを使用するネットワークおよびゲートウェイのワールドワイド・コレクションを表わすネットワーク１０２を備えたインターネットである。インターネットの中心には多重ノード間またはホスト・コンピュータ間での高速データ通信回線のバックボーンがあり、多重ノード間またはホスト・コンピュータは、データおよびメッセージを送る何千もの商用、政府、教育および他のコンピュータシステムからなる。もちろん、ネットワーク・データ処理システム１００は、例えば、イントラネット、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）などのさらに多くの様々なタイプのネットワークとして実行されてもよい。図１は、一実施例として意図され、様々な実施形態に関するアークテクチャ上の制限ではない。
【００１０】
ここで、図２を参照すると、実施形態を実行するデータ処理システムのブロック図が示される。データ処理システム２００は、図１のサーバ１０４またはクライアント１１０などのコンピュータの例であり、ここに実施形態のプロセスを実行するコンピュータ使用可能コードまたは命令が置かれいていてもよい。
【００１１】
示される実施例において、データ処理システム２００は、ノースブリッジ、メモリ・コントローラ・ハブ（ＭＣＨ）２０２、サウスブリッジ、入力／出力（Ｉ／Ｏ）コントローラ・ハブ（ＩＣＨ）２０４を含むハブ・アーキテクチャを使用する。処理ユニット２０６、メイン・メモリ２０８およびグラフィクス・プロセッサ２１０は、ノースブリッジおよびメモリ・コントローラ・ハブ２０２に接続されている。グラフィクス・プロセッサ２１０は、アクセラレイティッド・グラフィクス・ポート（ＡＧＰ）を介して、ノースブリッジおよびメモリ・コントローラ・ハブ２０２に接続されていてもよい。
【００１２】
示される実施例において、ローカル・エリア・ネットワーク（ＬＡＮ）アダプター２１２は、サウスブリッジおよびＩ／Ｏコントローラ・ハブ２０４に接続されている。オーディオ・アダプター２１６、キーボードおよびマウス・アダプター２２０、モデム２２２、読み出し専用メモリ（ＲＯＭ）２２４、ハードディスク・ドライブ（ＨＤＤ）２２６、ＣＤ−ＲＯＭドライブ２３０、ユニバーサル・シリアル・バス（ＵＳＢ）ポートおよび他の通信ポート２３２、およびＰＣＩ／ＰＣＩｅ装置２３４は、バス２３８およびバス２４０を介して、サウスブリッジおよびＩ／Ｏコントローラ・ハブ２０４に接続されている。ＰＣＩ／ＰＣＩｅ装置は、例えば、ノート型コンピュータ用のイーサネット・アダプター、アドイン・カードおよびＰＣカードを含んでいてもよい。ＰＣＩｅは使用していないが、ＰＣＩは、カード・バス・コントローラを使用ている。ＲＯＭ２２４は、例えば、フラッシュ・バイナリ入力／出力システム（ＢＩＯＳ）であってもよい。
【００１３】
ハードディスク・ドライブ２２６およびＣＤ−ＲＯＭドライブ２３０は、バス２４０を介して、サウスブリッジおよびＩ／Ｏコントローラ・ハブ２０４に接続されている。ハードディスク・ドライブ２２６およびＣＤ−ＲＯＭドライブ２３０は、例えば、統合ドライブ・エレクトロニクス（ＩＤＥ）またはシリアル・アドバンスト・テクノロジー・アタッチメント（ＳＡＴＡ）インターフェースを使用してもよい。スーパーＩ／Ｏ（ＳＩＯ）装置２３６は、サウスブリッジおよびＩ／Ｏコントローラ・ハブ２０４に接続されていてもよい。
【００１４】
オペレーティング・システムは、処理ユニット２０６上で実行され、図２のデータ処理システム２００内の様々なコンポーネントの制御を調整し、提供する。クライアントとして、オペレーティング・システムは、マイクロソフト（Ｒ）ウィンドウズ（Ｒ）ＸＰ（マイクロソフトおよびウィンドウズは、アメリカ合衆国、他の国々、またはその両方のマイクロソフト社の商標である）などの市販オペレーティング・システムであってもよい。Ｊａｖａ（Ｒ）プログラミング・システムなどのオブジェクト指向のプログラミング・システムは、オペレーティング・システムと連動して実行され、データ処理システム２００（Ｊａｖａは、アメリカ合衆国、他の国々、またはその両方のサン・マイクロシステムズの商標である）上で実行されるＪａｖａプログラムまたはアプリケーションからオペレーティング・システムにコールを供給する。
【００１５】
サーバとして、データ処理システム２００は、例えば、高度インタラクティブ・エグゼクティブ（ＡＩＸＲ（Ｒ））オペレーティング・システムまたはＬＩＮＵＸオペレーティング・システム（ｅＳｅｒｖｅｒ、ｐＳｅｒｉｅｓおよびＡＩＸは、アメリカ合衆国、他の国々、またはその両方でのＩＢＭ社の商標であり、一方、ＬＩＮＵＸは、アメリカ合衆国、他の国々、またはその両方でのリーナス・トーバルズの商標である）を実行するＩＢＭｅＳｅｒｖｅｒ（Ｒ）ｐＳｅｒｉｅｓ（Ｒ）コンピュータシステムであってもよい。データ処理システム２００は、処理ユニット２０６に複数のプロセッサを含む対称型マルチプロセッサ（ＳＭＰ）システムであってもよい。または、シングル・プロセッサ・システムを使用してもよい。
【００１６】
オペレーティング・システムのための命令、オブジェクト指向のプログラミング・システムおよびアプリケーションまたはプログラムは、ハードディスク・ドライブ２２６などの記憶装置に置かれ、処理ユニット２０６によって実行用メイン・メモリ２０８に読み込まれてもよい。実施形態のプロセスは、コンピュータ使用可能プログラムコードを使用する処理ユニット２０６によって行なわれ、該プログラムコードは、例えば、メイン・メモリ２０８、読み出し専用メモリ２２４などのメモリに、または１つまたは複数の周辺機器２２６、２３０に置かれてていてもよい。
【００１７】
当業者は、図１および図２のハードウェアが実施に従って異なっていてもよいことを認識する。フラッシュメモリ、対応する不揮発性メモリまたは光ディスク駆動装置等などの他の内部ハードウェアまたは周辺機器は、図１および図２に示されたハードウェアに加えて、またはそのハードウェアの代わりに使用されてもよい。また、実施形態のプロセスは、マルチプロセッサ・データ処理システムに適用されてもよい。
【００１８】
実施例によっては、データ処理システム２００は、携帯情報端末（ＰＤＡ）であってもよく、該携帯情報端末は、フラッシュメモリを有して構成されて、オペレーティング・システム・ファイルまたはユーザ生成データ、もしくはその両方を記憶するための不揮発性メモリを備えている。
【００１９】
バスシステムは、図２で示されるようにバス２３８またはバス２４０などの１つまたは複数のバスで構成されていてもよい。もちろん、バスシステムは、構造またはアーキテクチャに取り付けられた様々なコンポーネントまたは装置の間のデータの転送を行うための任意のタイプの通信構造またはアーキテクチャを使用して実行されてもよい。通信ユニットは、図２のモデム２２２またはネットワーク・アダプター２１２などのデータを送受信するために使用される１つまたは複数の装置を含んでいてもよい。メモリは、例えば、メイン・メモリ２０８、読み出し専用メモリ２２４、または図２のノースブリッジおよびメモリ・コントローラ・ハブ２０２に見られるようなキャッシュであってもよい。図１および図２および上記例において示された実施例は、構造上の限定を意図しない。例えば、データ処理システム２００は、また、ＰＤＡの形態をとることに加えて、タブレット・コンピュータ、ラップトップ・コンピュータまたは電話機であってもよい。
【００２０】
図３は、実施形態を実施形態によって実行するセル・ブロードバンド・エンジン・チップの典型的な図である。セル・ブロードバンド・エンジン・チップ３００は、ゲーム機、デスクトップシステムおよびサーバなどのメディアリッチアプリケーション向けの分散処理を対象とするシングルチップ・マルチプロセッサの実施形態である。
【００２１】
セル・ブロードバンド・エンジン・チップ３００は、以下の機能部品、つまりパワーＰＣ（Ｒ）プロセッサ素子（ＰＰＥ）３０１、相乗プロセッサ・ユニット（ＳＰＵ）３１０、３１１、３１２およびメモリフロー・コントローラ（ＭＦＣ）３０５、３０６、３０７に論理的に分離されてもよい。相乗プロセッサ素子およびパワーＰＣ（Ｒ）プロセッサ素子が実施例によって示されるが、任意のタイプのプロセッサ素子がサポートされてもよい。典型的なセル・ブロードバンド・エンジン・チップ３００の実施形態は、１つのパワーＰＣ（Ｒ）プロセッサ素子３０１および８つの相乗プロセッサ素子を含むが、図３は、わずか３つの相乗プロセッサ素子（ＳＰＥ）３０２、３０３、３０４を示す。セルプロセッサの相乗プロセッサ素子（ＳＰＥ）は、加速媒体（accelerate media）およびデータ・ストリーミング作業負荷に設計された新しいプロセッサ・アーキテクチャの第１の実施形態である。
【００２２】
各相乗プロセッサ素子は、それ自身のローカル・ストア（ＬＳ）領域３１３、３１４または３１５を有する１つの相乗プロセッサ・ユニット（ＳＰＵ）３１０、３１１または３１２、およびメモリ保護およびアクセス許可情報を保持し処理するために関連するメモリ管理ユニット（ＭＭＵ）３１６、３１７または３１８を有する専用メモリフロー・コントローラ（ＭＦＣ）３０５、３０６または３０７を含む。前と同じように、相乗プロセッサ・ユニットが実施例によって示されるが、任意のタイプのプロセッサ・ユニットがサポートされてもよい。さらに、セル・ブロードバンド・エンジン・チップ３００は、素子相互接続バス（ＥＩＢ）３１９および他のＩ／Ｏ構造を実行して、オンチップおよび外部データフローを促進する。
【００２３】
素子相互接続バス３１９は、パワーＰＣ（Ｒ）プロセッサ素子３０１、相乗プロセッサ素子３０２、３０３および３０４のための一次オンチップ・バスとして機能する。さらに、素子相互接続バス３１９は、オフチップ・アクセス専用に設けられる他のオンチップ・インターフェース・コントローラにインターフェースで接続される。オンチップ・インターフェース・コントローラは、２つの極値データ転送速度Ｉ／Ｏ（ＸＩＯ）メモリ・チャンネル３２１、３２２を備えるメモリ・インターフェース・コントローラ（ＭＩＣ）３２０、および２つの高速外部Ｉ／Ｏチャンネルおよびセル・ブロードバンド・エンジン３００のための内部割込み制御を提供するセル・ブロードバンド・エンジン・インタフェース・ユニット（ＢＥＩ）３２３を含む。セル・ブロードバンド・エンジン・インタフェース・ユニット３２３は、バス・インターフェース・コントローラ（ＢＩＣ０およびＢＩＣ１）３２４、３２５、およびＩ／Ｏインターフェース・コントローラ（ＩＯＣ）３２６として実行される。２つの高速外部Ｉ／Ｏチャンネルは、セル・ブロードバンド・エンジン３００のためのフレキシブル入出力（ＦｌｅｘＩ０  ０およびＦｌｅｘＩ０  １）３５３を備えるＲＲＡＣインターフェイスの極性に接続されている。
【００２４】
各相乗プロセッサ・ユニット３１０、３１１または３１２は、対応するローカル・ストア領域３１３、３１４または３１５、および相乗演算ユニット（ＳＸＵ）３５４、３５５または３５６を有する。個々の相乗プロセッサ・ユニット３１０、３１１または３１２は、それぞれ、その関連するローカル・ストア領域３１３、３１４または３１５内からの命令（データ読み込みおよび記憶オペレーションを含む）のみを実行することができる。この理由で、システムの他の部分の記憶装置に、またはその記憶装置から、要求されたデータ転送はすべて、相乗プロセッサ・ユニット３１０、３１１、３１２の専用メモリフロー・コントローラ３０５、３０６、３０７を介して、メモリフロー・コントローラ直接記憶アクセス・オペレーションを使用して行なわれる。
【００２５】
相乗プロセッサ・ユニット３１０、３１１または３１２上で実行されるプログラムは、ローカル・ストア・アドレスを使用して、それ自体のローカル・ストア領域３１３、３１４または３１５のみを参照する。しかし、各相乗プロセッサ・ユニットのローカル・ストア領域３１３、３１４または３１５は、また、システムのメモリマップ内全体で、実アドレス（ＲＡ）を割り当てる。これは、特権ソフトウェアが、プロセスの実効アドレス（ＥＡ）にローカル・ストア領域をマップして、１つの相乗プロセッサ・ユニットのローカル・ストアと別の相乗プロセッサ・ユニットのローカル・ストアとの間で直接記憶アクセス転送を促進することができる。パワーＰＣ（Ｒ）プロセッサ素子３０１は、また、実行アドレスを使用して、直接的に、任意の相乗プロセッサ・ユニットのローカル・ストアにアクセスしてもよい。
【００２６】
メモリフロー・コントローラ直接記憶アクセスデータ転送コマンドは、常に、１つのローカル・ストア・アドレスおよび１つの実効アドレスを使用する。ローカル・ストア・アドレスは、直接、直接記憶アクセスコマンドリクエストが置かれるメモリフロー・コントローラ・コマンドキューに対応する関連する相乗プロセッサ・ユニット３１０、３１１または３１２のローカル・ストア・メモリのアドレスをとる。しかし、実効アドレスは、他の相乗プロセッサ素子３０２、３０３、３０４のローカル・ストア領域３１３、３１４、３１５を含むシステムに、任意の他のメモリ記憶領域にアクセスするために配置されてもよい。
【００２７】
メイン記憶装置は、システムにおいてパワーＰＣ（Ｒ）プロセッサ・ユニット３０８、パワー・プロセッサ素子（ＰＰＥ）３０１、相乗プロセッサ素子（ＳＰＥ）３０２、３０３、３０４、およびＩ／Ｏ装置によって共有されている。記憶装置のこのレベルで保持された情報は、すべて、システムのすべてのプロセッサおよび装置に見えている。プログラムは、実効アドレスを使用して、記憶装置のこのレベルを参照する。メモリフロー・コントローラ相乗プロセッサ・ユニットコマンドキュー、メモリフロー・コントローラ・プロキシコマンドキュー、および制御および状態機能は、実効アドレススペースにマップされるので、パワー・プロセッサ素子３０１は、相乗プロセッサ素子（ＳＰＥ）３０２、３０３、３０４のうちのいずれかと関連するローカル・ストア領域に関する直接記憶アクセス・オペレーションを開始することができる。
【００２８】
相乗プロセッサ・ユニット・プログラムは、実行のために、そのメモリフロー・コントローラ（ＭＦＣ）３０５、３０７または３０７コマンドキューに適切な実効アドレスおよびローカル・ストア・アドレスと共に直接記憶アクセス・データ転送コマンドを生成し置くことにより、メイン記憶装置にアクセスする。実行された時、必要なデータは、それ自体のローカル・ストア領域とメイン記憶装置との間で転送される。メモリフロー・コントローラ（ＭＦＣ）３０５、３０６または３０７は、パワー・プロセッサ素子（ＰＰＥ）３０１などの他の装置によって生成されたコマンドのための第２のプロキシ・コマンドキューを提供する。プロキシ・コマンドキューは、典型的に、相乗プロセッサ・ユニットを開始する前に、ローカル記憶装置にプログラムを記憶するために使用される。プロキシ・コマンドは、また、コンテクスト記憶オペレーションに使用することができる。
【００２９】
データ転送の実効アドレス部分ははるかに一般的であり、相乗プロセッサ・ユニット・ローカル・ストア領域をすべて含めて、メイン記憶装置を参照することができる。これらのローカル・ストア領域は、実効アドレススペースにマッピングされる。データ転送は保護される。実効アドレスは、メモリ管理ユニットによって実アドレスに転換される。転換プロセスは、システム・メモリおよびメモリ保護の仮想化を可能とする。
【００３０】
セル・ブロードバンド・エンジン・チップ３００上のパワーＰＣ（Ｒ）プロセッサ素子３０１は、６４ビットのパワーＰＣ（Ｒ）プロセッサ・ユニット３０８およびパワーＰＣ（Ｒ）記憶サブシステム３０９からなる。パワーＰＣ（Ｒ）プロセッサ・ユニット３０８は、プロセッサ演算ユニット（ＰＸＵ）３２９、レベル１（Ｌ１）キャッシュ３３０、メモリ管理ユニット（ＭＭＵ）３３１、および交替管理テーブル（ＲＭＴ）３３２を含む。パワーＰＣ（Ｒ）記憶サブシステム３０９は、キャッシュ可能なインタフェース・ユニット（ＣＩＵ）３３３、キャッシュ不能ユニット（ＮＣＵ）３３４、レベル２（Ｌ２）キャッシュ３２８、交替管理テーブル（ＲＭＴ）３３５およびバス・インタフェース・ユニット（ＢＩＵ）３２７からなる。バス・インタフェース・ユニット３２７は、パワーＰＣ（Ｒ）記憶サブシステム３０９を素子相互接続バス３１９に接続する。
【００３１】
相乗プロセッサ・ユニット３１０、３１１または３１２、およびメモリフロー・コントローラ３０５、３０６、３０７は、キャパシティを有する一方向のチャンネルを介して互いに通信する。チャンネル・インタフェースは、メモリフロー・コントローラ３０５、３０６、３０７、相乗プロセッサ・ユニット３１０、３１１、３１２に、およびそれらからメッセージを移動する。バス・インタフェース・ユニット３３９、３４０および３４１は、メモリフロー・コントローラ３０５、３０６、３０７を素子相互接続バス３１９に接続する。
【００３２】
メモリフロー・コントローラ３０５、３０６、３０７は、相乗プロセッサ・ユニット３１０、３１１、３１２に２つの主要機能を提供する。メモリフロー・コントローラ３０５、３０６、３０７は、相乗プロセッサ・ユニット３１０、３１１または３１２、ローカル・ストア領域３１３、３１４、３１５およびメイン記憶装置の間でデータを移動する。さらに、メモリフロー・コントローラ３０５、３０６、３０７は、システムにおいて相乗プロセッサ・ユニット３１０、３１１、３１２と他の装置との間で同期機能を提供する。
【００３３】
メモリフロー・コントローラ３０５、３０６、３０７の実施は、４つの機能ユニット、つまり、直接記憶アクセス・コントローラ（ＤＭＡＣ）３３６、３３７、３３８、メモリ管理ユニット（ＭＭＵ）３１６、３１７、３１８、原子ユニット（ＡＴＯ）３４２、３４３、３４４、交替管理テーブル（ＲＭＴ）３４５、３４６、３４７、バス・インタフェース・ユニット（ＢＩＵ）３３９、３４０、３４１を有する。直接記憶アクセス・コントローラ３３６、３３７、３３８は、メモリフロー・コントローラ相乗プロセッサ・ユニット・コマンドキュー（ＭＦＣ  ＳＰＵＱ）およびメモリフロー・コントローラ・プロキシ・コマンドキュー（ＭＦＣ  ＰｒｘｙＱ）からなるメモリフロー・コントローラ・キュー（ＭＦＣ  ＣＭＤＱ）を維持し、処理する。１６のエントリー、メモリフロー・コントローラ相乗プロセッサ・ユニット・コマンドキューは、相乗プロセッサ・ユニット・チャンネル・インタフェースからのメモリフロー・コントローラ・コマンドを処理する。８つのエントリー、メモリフロー・コントローラ・プロキシ・コマンドキューは、メモリがマップされた入出力（ＭＭＩＯ）読み込みおよび記憶オペレーションを介して他の装置のメモリフロー・コントローラ・コマンドを処理する。典型的な直接記憶アクセス・コマンドは、ローカル・ストアとメイン記憶装置の間でデータを移動させる。メイン記憶装置は、実効アドレス直接記憶アクセス・コマンド・オペランドによってアドレスされる。ローカル・ストアは、ローカル・ストア・アドレス（ＬＳＡ）直接記憶アクセス・コマンド・オペランドによってアドレスされる。
【００３４】
仮想モードでは、メモリ管理ユニット３１６、３１７、３１８は、アドレス変換およびメモリ保護機能を備え、直接記憶アクセス・コントローラ３３６、３３７、３３８からの実効アドレス変換要求を処理し、変換されたアドレスを送り返す。各相乗メモリ管理ユニットは、区分索引バッファ（ＳＬＢ）および変換索引バッファ（ＴＬＢ）を維持する。区分索引バッファは、実効アドレスを仮想アドレス（ＶＡ）に変換し、変換索引バッファは区分索引バッファからの仮想アドレスを実アドレスに変換する。
【００３５】
原子ユニット３４２、３４３、３４４は、システムにおいて他のプロセッサ・ユニットとの同期を維持するために必要なデータキャッシュのレベルを提供する。システムでは他のキャッシュとのコヒーレンスが維持される。原子直接記憶アクセス・コマンドは、他のユニットとの同期を要求するために、相乗プロセッサ素子のための手段を提供する。
【００３６】
バス・インタフェース・ユニット３３９、３４０、３４１の主な機能は、相乗プロセッサ素子３０２、３０３、３０４に、素子相互接続バスへのインターフェースを備えさせることである。
【００３７】
素子相互接続バス３１９は、セル・ブロードバンド・エンジン・チップ３００上のプロセッサのすべてと、素子相互接続バス３１９に取り付けられた外部インターフェース・コントローラとの間で通信経路を提供する。
【００３８】
メモリ・インターフェース・コントローラ３２０は、素子相互接続バス３１９と、１つまたは２つの極値データ転送速度Ｉ／Ｏセル・メモリ・チャンネル３２１、３２２との間でインターフェースを提供する。極値データ転送速度（ＸＤＲ（Ｒ））ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）は、Ｒａｍｂｕｓ社によって提供される高速で高度な直列記憶装置である。極値データ転送速度ダイナミック・ランダム・アクセス・メモリは、このドキュメントで極値データ転送速度Ｉ／Ｏセル・メモリ・チャンネル３２１、３２２と称せられ、Ｒａｍｂｕｓ社によって提供されるマクロを使用してアクセスされる。
【００３９】
メモリ・インターフェース・コントローラ３２０は、素子相互接続バス３１９上のスレーブにすぎない。メモリ・インターフェース・コントローラ３２０は、サポートされたハブのメモリに対応するその構成されたアドレスレンジでコマンドを認識する。
【００４０】
バス・インターフェース・コントローラ３２４、３２５は、２つの外部装置のいずれかに素子相互接続バス３１９からチップ上の、およびチップ外のデータ転送を管理する。バス・インターフェース・コントローラ３２４、３２５は、非コヒーレントトラフィックをＩ／Ｏ装置と交換してもよく、または、それは、別の装置に素子相互接続バス３１９を拡張することができ、別のセル・ブロードバンド・エンジン・チップとすることもできる。素子相互接続バスを拡張するために使用する場合、コヒーレントは、セル・ブロードバンド・エンジンと、取り付けられた外部装置のキャッシュ間で維持される。
【００４１】
Ｉ／Ｏインターフェース・コントローラ３２６は、Ｉ／Ｏインターフェース装置から出され、コヒーレント素子相互接続バス３１９へ向けられたコマンドを処理する。Ｉ／Ｏインターフェース装置は、多数のＩ／Ｏ装置、または非コヒーレントにアクセスされる他のセル・ブロードバンド・エンジン・チップ３００を取り付けるＩ／Ｏブリッジ・チップなどの、Ｉ／Ｏインターフェースに伴う任意の装置であってもよい。Ｉ／Ｏインターフェース・コントローラ３２６は、また、Ｉ／Ｏブリッジ・チップまたは非コヒーレント・セル・ブロードバンド・エンジン・チップ３００内、またはその後ろに存在するメモリ・マップ・レジスタに向かう素子相互接続バス３１９上でアクセスを妨害し、それらを適切なＩ／Ｏインターフェースに送る。Ｉ／Ｏインターフェース・コントローラ３２６は、また、内部割込み・コントローラ（ＩＩＣ）３４９およびＩ／Ｏアドレス変換ユニット（Ｉ／Ｏ  Ｔｒａｎｓ）３５０を含む。
【００４２】
異なるコンポーネントをどのように実行しうるかの特定の例を提供したが、これは、実施形態を使用してもよいアーキテクチャを限定するのが目的ではない。任意のマルチコア・プロセッサ・システムとともに実施形態を使用してもよい。
【００４３】
アプリケーションの実行中に、セル・ブロードバンド・エンジン・チップ内の領域の温度が上昇するであろう。未検査のままであると温度は最大特定接合温度を超えて上昇し、不適当なオペレーションまたは物理的損傷に結びつく可能性がある。これらの条件を回避するために、セル・ブロードバンド・エンジン・チップのデジタル熱管理装置はオペレーション中にセル・ブロードバンド・エンジン・チップ内の温度を監視し、制御を試みる。デジタル熱管理装置は、熱管理制御ユニット（ＴＭＣＵ）および１０個の分散デジタル熱センサ（ＤＴＳ）からなる。
【００４４】
８つの相乗プロセッサ素子の各々に１つのセンサが置かれ、一つはパワーＰＣ（Ｒ）プロセス素子に置かれ、１つは線形熱ダイオードに隣接している。線形熱ダイオードは、温度を計算するオンチップ・ダイオードである。これらのセンサは、ほとんどのアプリケーションの実行中に温度の最も大きな上昇を代表的に経験する関連するユニット内の領域に隣接して位置する。熱制御ユニットは、これらのセンサの各々からフィードバックを監視する。センサの温度が、プログラム可能なポイントを超えて上昇する場合、熱制御ユニットは、パワーＰＣ（Ｒ）プロセス素子、または１つまたは複数の相乗プロセッサ素子に割込みをもたらし、関連するパワーＰＣ（Ｒ）プロセス素子または相乗プロセッサ素子の実行を同時に抑制するように構成することができる。
【００４５】
プログラム可能な繰り返し数でパワーＰＣ（Ｒ）プロセス素子または相乗プロセッサ素子を停止し、実行することにより抑制を遂行する。動的抑制が、ソフトウェアが介在しないプログラム可能なレベルより下のブロードバンド・エンジン・チップ内の温度を維持することを試みるハードウェア装置である一方、割込みは、特権ソフトウェアが修正措置を行うことを可能とする。特権ソフトウェアは、推奨されるセッティングに等しい、またはそれ以下の抑制レベルを設定する。
【００４６】
パワーＰＣ（Ｒ）プロセス素子、相乗プロセッサ素子を抑制する場合、または特権ソフトウェアが有効に温度を管理せず、温度が上昇し続ける場合、温度が構成データによって定義された熱的過負荷温度に達すると、セル・ブロードバンド・エンジン・チップのクロックは停止される。熱的過負荷特徴は、物理的損傷からセル・ブロードバンド・エンジン・チップを保護する。この状態からの回復のためには、ハードリセットが必要である。デジタル熱センサによって監視される領域の温度は、必ずしも、関連するパワーＰＣ（Ｒ）プロセス素子または相乗プロセッサ素子内の最高熱点ではないことに留意されたい。
【００４７】
図４は、実施形態による図３の普及論理演算装置３５１によって提供される典型的なセル・ブロードバンド・エンジン・チップの熱管理システムを示す。セル・ブロードバンド・エンジン・チップ熱管理は、１０個の分散デジタル熱センサ（ＤＴＳ）と管理制御ユニット（ＴＭＣＵ）４０２との間で分けられ、簡単にするためにデジタル熱センサ４０４、４０６、４０８、４１０だけが図示されている。相乗プロセッサ・ユニット・センサ（ＳＰＵ）４４０にある各デジタル熱センサ４０４および４０６、パワーＰＣ（Ｒ）プロセッサ・ユニット・センサ４４２にあるデジタル熱センサ４０８、線形ダイオードに隣接しているセンサ４４４にあるデジタル熱センサ４１０は、温度が、熱管理制御ユニット４０２によって設定される現在温度検出範囲に等しいまたはそれ以下であることを示す現在温度検出信号を提供する。熱管理制御ユニット４０２は、各パワーＰＣ（Ｒ）素子または相乗プロセッサ素子のデジタル熱センサ４０４、４０６、４０８、４１０の温度を連続的に追跡するためにデジタル熱センサ４０４、４０６、４０８、４１０からの信号の状態を使用する。温度は追跡されるので、熱管理制御ユニット４０２は、関連するパワーＰＣ（Ｒ）プロセス素子または相乗プロセッサ素子内の温度を表わす数値として現在温度を提供する。内部較正記憶装置４２８は個々のセンサを調整するために製造する際に設定される。
【００４８】
上述された熱管理制御ユニット４０２の構成要素に加えて、熱管理制御ユニット４０２は、さらに、マルチプレクサー４４６、４５０、ワークレジスタ４４８、コンパレーター４５２、４５４、シリアライザ４５６、熱管理（ＴＭ）制御状態機械４５８、およびデータフロー（ＤＦ）ユニット４６０を含む。マルチプレクサー４４６、４５０は、単一媒体にわたる送信用の出入りする様々な信号を組み合わせる。熱管理制御ユニット４０２で行なわれる乗算の結果を保持するためにワークレジスタ４４８をを使用する。コンパレーター４５２、４５４は２つの入力の比較機能を提供する。コンパレーター４５２は以上（＞＝）コンパレーターである。コンパレーター４５４は大なり（＞）コンパレーターである。シリアライザ４５６は、ソースから低速度並列データを送信用高速シリアルデータに変換する。シリアライザ４５６は、相乗プロセッサ・ユニット・センサ４４０上にデシリアライザ４６２、４６４と共に作用する。デシリアライザ４６２、４６４は、受信高速シリアルデータを低速並列データに変換する。熱管理制御ユニット４０２の内部初期化を始めるために、熱管理制御状態機械４５８を使用する。データフロー・ユニット４６０は、熱管理制御状態機械４５８への、および熱管理制御状態機械４５８からのデータを制御する。
【００４９】
熱管理制御ユニット４０２は、割込み論理４１６を使用して、パワーＰＣ（Ｒ）プロセス素子に割込みをもたらし、かつ抑制論理４１８を使用して、パワーＰＣ（Ｒ）プロセス素子または相乗プロセッサ素子の実行を動的に抑制するように構成されてもよい。熱管理制御ユニット４０２は、温度を表わす数値をプログラム可能割込み温度およびプログラム可能スロットル（ｔｈｒｏｔｔｌｅ）点と比較する。温度が、プログラムされた割込み温度領域内にある場合、もし可能であれば、パワーＰＣ（Ｒ）プロセス素子に外部割込みを生成する。
【００５０】
さらに、第２のプログラム可能割込み温度は、システム・コントローラに注意信号のアサーションをもたらすことができる。温度がスロットル点以上であるなら、熱管理制御ユニット４０２は、そのパワーＰＣ（Ｒ）プロセス素子または相乗プロセッサ素子を動的に開始、停止することにより、パワーＰＣ（Ｒ）プロセス素子または相乗プロセッサ素子の実行を抑制する。ソフトウェアは、動的熱管理レジスタを使用して抑制の比率と頻度を制御することができる。
【００５１】
図５は、実施形態によって温度、および割込みおよび動的抑制が生じる様々な点のグラフである。図５で、ライン５００は、パワーＰＣ（Ｒ）プロセス素子用の温度を表わし、または、相乗プロセッサ素子が通常作動している場合、「Ｎ」の印のある領域で抑制は行われない。温度がスロットル点に達する場合、熱管理制御ユニットは、関連するパワーＰＣ（Ｒ）プロセス素子または相乗プロセッサ素子の実行を抑制し始める。抑制が生じる領域は、「Ｔ」で印をつけられる。パワーＰＣ（Ｒ）プロセス素子または相乗プロセッサ素子の温度が、最終スロットル点を下回る場合、実行は通常動作に戻る。
【００５２】
何らかの理由で温度が上昇し続け、全スロットル点以上の温度に達する場合、パワーＰＣ（Ｒ）プロセス素子または相乗プロセッサ素子は温度が全スロットル点を下回るまで停止される。パワーＰＣ（Ｒ）プロセス素子または相乗プロセッサ素子が停止される領域は「Ｓ」で印をつけられる。温度が、全スロットル点以上である場合、パワーＰＣ（Ｒ）プロセス素子または相乗プロセッサ素子を停止することは、コア停止安全性（core stop safety）と称せられる。
【００５３】
この典型的実例では、割込み温度はスロットル点より上に設定され、したがってパワーＰＣ（Ｒ）プロセス素子または相乗プロセッサ素子がこの条件に対していつも停止される場合、ソフトウェアに通知する。ただし熱割込みマスク・レジスタ（ＴＭ＿ＩＳＲ）がアクティブに設定されると、パワーＰＣ（Ｒ）プロセス素子または相乗プロセッサ素子が割込み中断の間にレジュームすることを可能とする。動的抑制が無効になる場合、特権ソフトウェアが熱条件を管理する。熱条件を管理しなと、関連するパワーＰＣ（Ｒ）プロセス素子または相乗プロセッサ素子の不適当なオペレーション、または熱的過負荷機能によるサーマルシャットダウンを招くことになる。
【００５４】
図４に戻って、熱センサ状態レジスタは、熱センサ現在温度状態レジスタ４１２および熱センサ最高温度状態レジスタ４１４を含む。これらのレジスタは、ソフトウェアが個々のデジタル熱センサの現在温度を読み、所定期間中に達した最高温度を決定し、温度がプログラム可能温度に達した場合、割込みを引き起こすことを可能にする。熱センサ状態レジスタは、特権的ハイパーバイザーとしてマークされる実アドレスページを関連させている。
【００５５】
熱センサ現在温度状態レジスタ４１２は、各デジタル熱センサの現在温度のコード化を含む。センサの温度検出の待ち時間、これらのレジスタを読み出す場合の待ち時間および標準温度変動により、これらのレジスタで報告される温度は時間内の初期点の温度であり、ソフトウェアがデータを受ける場合、実際の温度を反映しない。各センサが制御論理に専念したので、すべてのセンサは並列でサンプリングされる。これらのレジスタのコンテンツは、次のサンプル期間の初めに更新される。サンプル期間の長さは、ＳｅｎＳａｍｐＴｉｍｅ構成フィールドによって制御される。
【００５６】
熱センサ最高温度状態レジスタ４１４は、これらのレジスタの最終読み取りの時間から各センサに関して達せられた最高温度のコード化を含む。これらのレジスタを読むことによって、熱管理制御ユニット４０２は、レジスタに各センサに現在温度をコピーする。読み取り後、熱管理制御ユニット４０２は、この点からスタートする最高温度を追跡し続ける。各レジスタの読み取りは独立している。１つのレジスタの読み取りは他方のコンテンツに影響しない。各センサは制御論理に専念し、したがって、すべてのセンサは並列にサンプリングされる。これらのレジスタのコンテンツは、次のサンプル期間の初めに更新される。サンプル期間の長さは、ＳｅｎＳａｍｐＴｉｍｅ構成フィールドによって制御される。
【００５７】
割込み論理４１６の熱センサ割込みレジスタは、パワーＰＣ（Ｒ）プロセッサ素子への熱管理割込みの生成を制御する。このレジスタのセットは、熱センサ割込み温度レジスタ４２０（ＴＳ＿ＩＴＲ１およびＴＳ＿ＩＴＲ２）、熱センサ状態レジスタ４２２（ＴＳ＿ＩＳＲ）、熱センサ割込みマスク・レジスタ４２４（ＴＳ＿ＩＭＲ）、および熱センサグローバル割込み温度レジスタ４２６（ＴＳ＿ＧＩＴＲ）を含む。熱センサ割込み温度レジスタ４２０および熱センサグローバル割込み温度レジスタ４２６は、パワーＰＣ（Ｒ）プロセッサ素子に熱管理割込みを引き起こす温度のコード化を含む。
【００５８】
センサ用の熱センサ現在温度状態レジスタ４１２で、コード化温度が熱センサ割込み温度レジスタ４２０でコード化する対応するセンサの割込み温度以上である場合、熱センサ割込み状態レジスタ４２２（ＴＳ＿ＩＳＲ〔Ｓｘ〕）での対応する状態ビットを設定する。任意のセンサ用の熱センサ現在温度状態レジスタ４１２でのコード化温度が熱センサグローバル割込み温度レジスタ４２６でのコード化するグローバル割込み温度以上である場合、対応する状態ビット熱センサ割込み状態レジスタ４２２（ＴＳ＿ＩＳＲ〔Ｇｘ〕が設定される。
【００５９】
任意の熱センサ割込み温度状態レジスタ４２２のビット（ＴＳ＿ＩＳＲ〔Ｓｘ〕）が設定され、熱センサ割込みマスク・レジスタ４２４（ＴＳ＿ＩＭＲ〔Ｍｘ〕）での対応するマスク・ビットも設定される場合、熱管理割込み信号をパワーＰＣ（Ｒ）プロセッサ素子にアサートする。任意の熱センサ割込み状態レジスタ４２２（ＴＳ＿ＩＳＲ〔Ｇｘ〕）ビットをセットし、熱センサ割込みマスク・レジスタ４２４（ＴＳ＿ＩＭＲ〔Ｃｘ〕）での対応するマスク・ビットも設定する場合、熱管理割込み信号をパワーＰＣ（Ｒ）プロセッサ素子にアサートする。
【００６０】
割込み条件を取り除くために、特権ソフトウェアは、熱センサ割込みマスク・レジスタで任意の対応するマスク・ビットを「０」に設定するべきである。熱管理割込みを可能にするために、特権ソフトウェアは、温度が、対応するセンサのための割込み温度未満であることを確実にし、次いで、次のシーケンスを行なう。温度が、割込み温度未満でない場合、割込みを可能にすると、即時の熱管理割込みの生成をもたらすことができる。
１．熱センサ割込み状態レジスタ４２２で、対応する状態ビットに「１」を書き込む。
２．熱センサ割込みマスク・レジスタ４２４で、対応するマスク・ビットに「１」を書き込む。
【００６１】
熱センサ割込み温度レジスタ４２０は、相乗プロセッサ素子に位置するセンサのための割込み温度レベル、パワーＰＣ（Ｒ）プロセッサ素子、および隣接する線形熱ダイオードを含む。このレジスタでコード化された割込み温度レベルを、熱センサ現在温度状態レジスタ４１２で対応する割込み温度コード化と比較する。これらの比較の結果を使用して熱管理割込みを生成する。各センサの割込み温度レベルは独立している。
【００６２】
熱センサ割込み温度レジスタ４２０に設定された独立した割込み温度レベルに加えて、熱センサグローバル割込み温度レジスタ４２６は、第２の割込み温度レベルを含む。このレベルは、セル・ブロードバンド・エンジン・チップで全てのセンサに適用される。このレジスタで、コード化されたグローバル割込み温度レベルを、各センサの現在温度コード化と比較する。これらの比較の結果を使用して、熱管理割込みを生成する。
【００６３】
グローバル割込み温度の意図は、セル・ブロードバンド・エンジン・チップの温度上昇に初期表示を提供することである。特権ソフトウェアおよびシステム・コントローラは、例えば、ファン回転速度を増加させる、アプリケーション・ソフトウェア・クロスユニットのバランスを取り戻すなどのことによって、温度を制御する動作を始めるためにこの情報を使用することができる。
【００６４】
熱センサ割込み状態レジスタ４２２はどのセンサが割込み条件を満たすかを識別する。割込み条件は、各熱センサ割込み状態レジスタ４２２ビットが、満足する場合割込みが生じることを可能にする特定の条件を参照する。対応するマスク・ビットを設定する場合、実際の割込みは、単にパワーＰＣ（Ｒ）プロセッサ素子に提示される。
【００６５】
熱センサ割込み状態レジスタ４２２は、３セットの状態ビット、つまりデジタル・センサ・グローバルしきい値割込み状態ビット（ＴＳ＿ＩＳＲ〔Ｇｘ〕）、デジタル・センサしきい値割込み状態ビット（ＴＳ＿ＩＳＲ〔Ｓｘ〕）、およびデジタル・センサ・グローバルしきい値未満割込み状態ビット（ＴＳ＿ＩＳＲ〔Ｇｂ〕）を含む。
【００６６】
熱センサ現在温度状態レジスタ４１２でセンサのためにコード化する温度が、熱センサ割込み温度レジスタ４２０でコード化する対応するセンサの割込み温度、および対応する方向ビット熱センサ割込みマスク・レジスタ４２４、ＴＭ＿ＩＭＲ〔Ｂｘ〕＝‘０’以上である場合、ハードウェアは、熱センサ割込み状態レジスタ４２２（ＴＳ＿ＩＳＲ〔Ｓｘ〕）で状態ビットを設定する。さらに、熱センサ現在温度状態レジスタ４１２のセンサのためにコード化する温度が、熱センサ割込み温度レジスタ４２０および対応する方向ビット熱センサ割込みマスク・レジスタ４２４、ＴＭ＿ＩＭＲ〔Ｂｘ〕＝‘１’でコード化する対応するセンサの割込み温度未満である場合、ハードウェアは、熱センサ割込み状態レジスタ４２２、ＴＳ＿ＩＳＲ〔Ｓｘ〕を設定する。
【００６７】
任意の関係するセンサの現在温度が、熱センサ・グローバル割込み温度レジスタ４２６の温度以上である場合、ハードウェアは、熱センサ割込み状態レジスタ４２２、ＴＳ＿ＩＳＲ［Ｇｘ］をセットし、熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［ＢＧ］を「０」に設定する。個々の熱センサ割込み状態レジスタ４２２、ＴＳ＿ＩＳＲ［Ｇｘ］ビットは、個々のどのセンサがこれらの条件を満足するかを示す。
【００６８】
熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［Ｃｘ］の関係するセンサのすべてが、熱センサ・グローバル割込み温度レジスタ４２６より低い現在温度である場合、ハードウェアは、熱センサ割込み状態レジスタ４２２、ＴＳ＿ＩＳＲ［Ｇｂ］をセットし、熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［ＢＧ］を「１」に設定する。関係するセンサのすべてが、熱センサ・グローバル割込み温度レジスタ４２６より低い現在温度であるので、１つの状態ビット熱センサ割込み状態レジスタ４２２（ＴＳ＿ＩＳＲ［Ｇｂ］）のみが、グローバルしきい値未満割込み条件で存在する。
【００６９】
一旦、熱センサ割込み状態レジスタ４２２（ＴＳ＿ＩＳＲ［Ｓｘ］、［Ｇｘ］または［Ｇｂ］）での状態ビットを「１」に設定すると、特権ソフトウェアによって「０」に再設定されるまでこの状態が維持される。特権ソフトウェアは、熱センサ割込み状態レジスタ４２２で、対応するビットに「１」を書き込むことにより状態ビットを「０」に再設定する。
【００７０】
熱センサ割込みマスク・レジスタ４２４は、個々のセンサ用の２つのフィールドおよびグローバル割込み条件用の多数のフィールドを含む。割込み条件は、満足する場合、割込みが生じることを可能にする各熱センサ割込みマスク・レジスタ４２４ビットが有する特定の条件を参照する。対応するマスク・ビットを設定する場合、実際の割込みは、単にパワーＰＣ（Ｒ）プロセッサ素子に与える。
【００７１】
個々のセンサ用の２つの熱センサ割込みマスク・レジスタ・デジタル熱しきい値割込みフィールドは、ＴＳ＿ＩＭＲ［Ｍｘ］およびＴＳ＿ＩＭＲ［Ｂｘ］である。熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［Ｍｘ］、マスク・ビットは、熱管理割込みの生成からパワーＰＣ（Ｒ）プロセッサ素子まで割込み状態ビットを防ぐ。熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［Ｂｘ］、方向ビットは、熱センサ割込み温度レジスタ４２０で、対応する温度より高いまたは低い割込み条件用の温度方向を設定する。熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［Ｂｘ］を「１」に設定することで、割込み条件の温度を熱センサ割込み温度レジスタ４２０で対応する温度より低く設定する。熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［Ｂｘ］を「０」に設定することで、割込み条件の温度を熱センサ割込み温度レジスタ４２０で対応する温度以上に設定する。
【００７２】
グローバル割込み条件用の熱センサ割込みマスク・レジスタ４２４フィールドは、ＴＳ＿ＩＭＲ［Ｃｘ］、ＴＳ＿ＩＭＲ［ＢＧ］、ＴＳ＿ＩＭＲ［Ｃｇｂ］およびＴＳ＿ＩＭＲ［Ａ］である。熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［Ｃｘ］、マスク・ビットは、グローバルしきい値割込みを防ぎ、グローバルしきい値未満割込み条件で、どのセンサが加わるかを選択する。熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［ＢＧ］、方向ビットは、グローバル割込み条件用の温度方向を選択する。熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［Ｃｇｂ］、マスク・ビットは、グローバルしきい値未満割込みを防ぐ。熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［Ａ］は、システム・コントローラへの注意をアサートする。
【００７３】
熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［ＢＧ］を「１」に設定することで、熱センサ割込みマスク・レジスタ４２４、（ＴＳ＿ＩＭＲ［Ｃｘ］）で設定されたすべての関係するセンサの温度がグローバル割込み温度レベル未満である場合にグローバル割込み条件のための温度領域が生じるように設定する。熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［ＢＧ］を「０」に設定することで、関係するセンサのうちのいずれかの温度が、熱センサグローバル割込み温度レジスタ４２６で対応する温度以上である場合にグローバル割込み条件のための温度領域を生じるように設定する。熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［Ａ］が「１」に設定されていれば、いずれかの熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［Ｃｘ］ビットおよびその対応する熱センサ割込み状態レジスタ４２２状態ビット（ＴＳ＿ＩＳＲ［Ｇｘ］）の両方を「１」に設定する場合に注意をアサートする。さらに、熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［Ｃｇｂ］および熱センサ割込み状態レジスタ４２２、ＴＳ＿ＩＳＲ［Ｇｂ］の両方を「１」に設定する場合、注意をアサートする。
【００７４】
任意の熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［Ｍｘ］ビットおよびその対応する熱センサ割込み状態レジスタ４２２状態ビット（ＴＳ＿ＩＳＲ［Ｓｘ］）の両方を「１」に設定する場合、熱管理割込みをパワーＰＣ（Ｒ）プロセッサ素子に与える。任意の熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［Ｃｘ］ビットおよびその対応する熱センサ割込み状態レジスタ４２２状態ビット、ＴＳ＿ＩＳＲ［Ｇｘ］の両方を「１」に設定する場合、熱管理割込みも生成する。さらに、熱センサ割込みマスク・レジスタ４２４、ＴＳ＿ＩＭＲ［Ｃｇｂ］および熱センサ割込み状態レジスタ４２２、ＴＳ＿ＩＳＲ［Ｇｂ］の両方を「１」に設定する場合、熱管理割込みをパワーＰＣ（Ｒ）プロセッサ素子に与える。
【００７５】
論理４１８の抑制中にダイナミック熱管理レジスタは、パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子の実行抑制を制御するためのパラメーターを含む。動的熱管理レジスタは、熱管理制御レジスタ４３０（ＴＭ＿ＣＲｌおよびＴＭ＿ＣＲ２）、熱管理スロットル点レジスタ４３２（ＴＭ＿ＴＰＲ）、熱管理停止時間レジスタ４３４（ＴＭ＿ＳＴＲｌおよびＴＭ＿ＳＴＲ２）、熱管理抑制スケール・レジスタ４３６（ＴＭ＿ＴＳＲ）および熱管理システム割込みマスク・レジスタ４３８（ＴＭ＿ＳＩＭＲ）を含む１セットのレジスタである。
【００７６】
熱管理スロットル点レジスタ４３２は、センサのスロットル点を設定する。２つの独立したスロットル点は、熱管理スロットル点レジスタ４３２、スロットルＰＰＥおよびスロットルＳＰＥ、パワーＰＣ（Ｒ）プロセッサ素子用の一つおよび相乗プロセッサ素子用の一つで設定することができる。また、パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子の抑制および停止を終了させる温度点が、このレジスタに含まれている。温度がスロットル点以上である場合に、パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子の実行抑制が開始する。温度が抑制を終了させる温度を下回る場合、抑制は中断する（ＴＭ＿ＴＰＲ［ＥｎｄＴｈｒｏｔｔｌｅＰＰＥ／ＥｎｄＴｈｒｏｔｔｌｅＳＰＥ］）。温度が、全スロットルまたは停止温度に達する場合（ＴＭ＿ＴＰＲ［ＦｕｌｌＴｈｒｏｔｔｌｅＰＰＥ／ＦｕｌｌＴｈｒｏｔｔｌｅＳＰＥ］）、パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子の実行を終了する。熱管理制御レジスタ４３０を使用して抑制挙動を制御する。
【００７７】
熱管理停止時間レジスタ４３４および熱管理抑制スケール・レジスタ４３６を使用して、抑制の頻度および量を制御する。温度がスロットル点に達する場合、対応するパワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子を、熱管理抑制スケール・レジスタ４３６で、対応するスケール値によって特定されたクロック数で停止する。パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子は、次いで、熱管理停止時間レジスタ４３４で実行値によって特定されたクロック数で実行することが可能である。温度が、終了抑制を下回る（ＴＭ＿ＴＰＲ［ＥｎｄＴｈｒｏｔｔｌｅＰＰＥ／ＥｎｄＴｈｒｏｔｔｌｅＳＰＥ］）まで、このシーケンスは継続する。
【００７８】
熱管理システム割込みマスク・レジスタ４３８を使用して、割込みが未決定の間、どの割込みがパワーＰＣ（Ｒ）プロセッサ素子の抑制を終了するかを選択する。
【００７９】
熱管理制御レジスタ４３０は、各パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子の抑制モードを独立して設定する。制御ビットは、２つのレジスタ間で分離されている。下記は、各パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子に独立してセットされうる５つの異なるモードである。
・動的抑制使用不可能（コア停止安全を含む）
・通常オペレーション（動的抑制およびコア停止安全使用可能）
・パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子は常に抑制される（コア停止安全使用可能）。
・コア停止安全使用不可能（動的抑制使用可能、コア停止安全使用不可能）。
・パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子は常に抑制され、コア停止安全使用不可能。
【００８０】
特権ソフトウェアは、アプリケーションまたはオペレーティング・システムを実行しているパワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子のために制御ビットを通常オペレーションに設定するべきである。パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子がアプリケーション・コードを実行していない場合、特権ソフトウェアは、制御ビットを使用不可能に設定するべきである。「パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子は常に抑制される」モードは、アプリケーション開発のために意図されたものである。これらのモードは、アプリケーションが極端な抑制条件下で作動することができるかどうか決定するのに有用である。特権ソフトウェアがアクティブに熱事象を管理する場合、パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子が、動的抑制またはコア停止安全使用不可能で実行することを許可することのみが可能であるべきである。
【００８１】
熱管理システム割込みマスク・レジスタ４３８は、どのパワーＰＣ（Ｒ）プロセッサ素子割込みが熱管理論理にパワーＰＣ（Ｒ）プロセッサ素子の抑制を一時停止させるかを制御する。割込みによって対象にされたスレッドかにかかわらず、割込みが未決定の間、抑制は両方のスレッドに対し一時的に停止する。割込みがもはや未決定でない場合、抑制条件がまだ存在する限り抑制は再開することができる。相乗プロセッサ素子の抑制は、システム割込み条件に基づいて終了されない。抑制条件を無効にすることができるパワーＰＣ（Ｒ）プロセッサ素子割込み条件は、以下のとおりである。
外部
デクリメンタ
ハイパーバイザ・デクリメンタ
システム・エラー
熱管理
【００８２】
熱管理スロットル点レジスタ４３２は、パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子の実行抑制が開始および終了するコード化された温度点を含む。このレジスタは、また、パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子の実行が、完全に抑制されるコード化された温度点を含む。
【００８３】
熱管理スロットル点レジスタでの値は、３つの熱管理状態、すなわち、正常実行（Ｎ）、抑制されたパワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子（Ｔ）、および停止されたパワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子（Ｓ）の間で変化するために３つの温度点を設定するために使用される。独立した温度点は、パワーＰＣ（Ｒ）プロセッサ素子および相乗プロセッサ素子に対しサポートされる。
【００８４】
熱センサ現在温度状態レジスタ４１２でのセンサのコード化された現在温度が、抑制温度（ＴｈｒｏｔｔｌｅＰＰＥ／ＴｈｒｏｔｔｌｅＳＰＥ）以上である場合、可能であるなら、対応するパワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子の実行抑制を開始する。対応するセンサのコード化された現在温度がコード化された温度未満になり抑制を終了する（ＥｎｄＴｈｒｏｔｔｌｅＰＰＥ／ＥｎｄＴｈｒｏｔｔｌｅＳＰＥ）まで、実行抑制は継続する。安全対策として、コード化された現在温度が、全スロットル点以上である場合（全抑制ＰＰＥ／全抑制ＳＰＥ）、対応するパワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子を停止する。
【００８５】
熱管理停止時間レジスタ４３４は、熱管理抑制状態での特定のパワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子に適用される抑制量を制御する。熱管理停止時間レジスタでの値は、パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子が停止される時間と実行（コア−停止（ｘ）／３２）時間の割合で表される。パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子が停止し実行するクロック（ＮＣｌｋｓ）の実際の数は、熱管理抑制スケール・レジスタ４３６によって制御される。
【００８６】
熱管理抑制スケール・レジスタ４３６は、パワーＰＣ（Ｒ）プロセッサ素子または相乗プロセッサ素子が熱管理抑制状態の間に停止および実行するサイクルの実際の数を制御する。このレジスタでの値は、ＴＭ＿Ｃｏｎｆｉｇ［ＭｉｎＳｔｏｐＳＰＥ］を設定する構成リングの倍数である。停止および実行サイクルの実際の数は、以下の式によって計算される。
【００８７】
相乗プロセッサ素子実行および停止時間
【００８８】
［式１］
SPE_StopTime = (TM_STR1[StopCore(x)]* TM_Config[MinStopSPE]) * TM_TSR[ScaleSPE]
【００８９】
［式２］
SPE_RunTime = (32 -TM_STR1[StopCore(x)]) * TM_Config[MinStopSPE]) * TM_TSR[ScaleSPE]
【００９０】
パワーＰＣ（Ｒ）素子の実行および停止時間
【００９１】
［式３］
PPE_StopTime = (TM_STR2[StopCore(8)]* TM_Config[MinStopPPE]) * TM_TSR[ScalePPE]
【００９２】
［式４］
PPE_RunTime = (32 -TM_STR2[StopCore(8)]) * TM_Config[MinStopPPE]) * TM_TSR[ScalePPE]
【００９３】
実行および停止時間は、割込みおよび様々な熱管理レジスタを書き込む特権ソフトウェアによって変更することができる。
【００９４】
以下の記載は、命令ストリームおよび１つのプロセッサを対象とするが、命令ストリームは、１セットの命令ストリームであってもよく、プロセッサは、１セットのプロセッサであってもよい。すなわち、１セットは、単なる単一の命令ストリーム、および単一プロセッサ、または２つ以上の命令ストリームおよびプロセッサであってもよい。
【００９５】
図６は、実施形態によるソフトウェア熱プロファイルの分析生成のためのオペレーションを示すフローチャートである。ソフトウェア熱プロファイルは、ソフトウェア温熱指数と称してもよい。ソフトウェア熱プロファイルは、ハードウェアまたはソフトウェアの熱特性、もしくはハードウェアおよびソフトウェア両方の熱特性に関する情報を含むデータ構造である。
【００９６】
オペレーションが開始されると、１セットのプロセッサ上で実行するプログラムまたはアプリケーションのコンパイル、構築または後処理を行なう（ステップ６０２）。コンパイル、構築または後処理プログラムの命令当たりのサイクル（ＣＰＩ）効率を推定するために、コンパイル、構築または後処理プログラムの命令ストリームを分析する（ステップ６０４）。コンパイラは、オブジェクトコードを最適化するために、ミクロアーキテクチャの詳細を理解する必要がある。この知識で、コンパイラは、命令タイプおよびオペランド依存状態に基づいて、一定の命令当たりのサイクル（ＣＰＩ）に各命令を付与する。推定される命令当たりのサイクルは、熱プロファイルまたは温熱指数を決定するために使用することができる実行効率の近似値である。プログラムのための命令当たりのサイクルは、データ構造に所定時間記憶される（ステップ６０６）。所定時間は、プログラムの命令ストリームを分析する前に設定された任意の時間であってもよい。データ構造は、レジスタまたはデータベースなどの任意のタイプのデータ構造であってもよい。
【００９７】
次いで、命令当たりのサイクルの記憶された値に基づいて、温熱指数を生成する（ステップ６０８）。ステップ６１０〜６１６に温熱指数の生成を記載している。まず、記憶された命令当たりのサイクル値を、記憶装置から検索する（ステップ６１０）。検索値が命令当たりのサイクルの逆数に比例するように、命令当たりのサイクル値を処理する（ステップ６１２）。処理値を温熱指数として保存する（ステップ６１４）。決定は、未処理の記憶値がさらにあるかどうかに関してなされる（ステップ６１６）。ステップ６１６で、処理される必要がある記憶値がさらにあるなら、オペレーションはステップ６１０に戻り、そうでなければ、オペレーションは終了する。この実施態様では、温熱指数は命令当たりのサイクルの逆数（１／ＣＰＩ）に比例する。より低い命令当たりのサイクル値を有するプログラムは、より多くのマシンリソースを使用し、このように、システムの熱環境（例えば、プロセッサの温度は、より低いＣＰＩで高くなる）に、より大きな影響を及ぼす。この実施形態では情報ストリームの命令当たりのサイクルが使用されるが、演算ユニットまたはデータフロー・ユニットの転送されるバイト当たりのサイクルなどの温熱指数を計算する他の測定基準であってもよい。
【００９８】
ステップ６０８〜６１６でプログラム用に生成された温熱指数は、コンパイラによって生成されてもよい。これらの実施例における単純な形態では、温熱指数は、様々な演算ユニットおよびデータフロー・ユニットの強度を表わす分析情報の単数または加重和であってもよい。または、各プロセッサの演算ユニットおよびデータフロー・ユニットに対する値のベクトルも使用してもよい。アプリケーション用に温熱指数を生成する。ハードウェアはコアの実施に基づく温熱指数も有する。サーマルマップ、コアの熱効率、ダイ上の位置などを、この温熱指数を生成するために使用してもよい。次いで、２つの温熱指数をともに使用して、選択されたコア上で実行されるアプリケーションの熱特性を表わしてもよい。実施形態では、温熱指数は、より正確にソフトウェアの平均だけでなくピークおよびシステムへの熱影響をより正確に表わすために、標準偏差情報を含む。ＥＬＦノートなどのプログラム・ヘッダー情報を有する温熱指数を含んでもよい。
【００９９】
図６のプロセスの典型的な実施は以下のとおりである。アプリケーション用のオブジェクトコードを生成するために、コンパイラを使用する。編集中に、コンパイラは、命令シーケンスを検討することができる。ミクロアーキテクチャについての詳細な知識を使用して、推定ＣＰＩをオブジェクトコードのために生成する。次いで、ＣＰＩの逆数をデータ構造に記憶する。次いで、データ構造のコンテンツがローダによって使用され、アプリケーションを実行するための最良のコアを決定することができる。また、システムの熱環境へのアプリケーションの熱影響をさらに最適化するために、ローダは、コアの温熱指数とアプリケーションの温熱指数を組み合わせることができる。
【０１００】
実験測定温度に対するこの実施形態における有利な方法では、プロセッサ使用率は、実験測定が、特定のマルチコア・プロセッサ・チップおよび作業負荷レベルに、結果として生じるソフトウェア温熱指数を結び付けることであり、ここで、この方法はソフトウェアに対する理想値を表わす。さらに、この実施形態は、特定のチップまたはシステム作業負荷レベルに関係しない。
【０１０１】
マイクロプロセッサ・アーキテクチャ上のソフトウェア・コンパイル、構築または後処理、もしくはそれらの組み合わせは、１セットのマシンリソースを利用する。マイクロプロセッサ・アーキテクチャについての詳細な知識と結び付けられたソフトウェアの注意深い分析を通じて、ソフトウェアがどれくらい効率的にマシンリソースを使用するか推測することは可能である。リソ−ス効率（強度）は、ソフトウェアの熱影響の指標になる。
【０１０２】
図７は、実施形態によるシミュレートされた環境でのランタイム実行によるソフトウェア熱プロファイルの生成のオペレーションを示すフローチャートである。実施態様として、シミュレートされた環境でランタイム実行を使用して、熱プロファイルを生成するために、図４の熱管理制御ユニット４０２を使用することは可能である。
【０１０３】
オペレーションが開始されると、１セットのプロセッサ上で実行されるソフトウェア・プログラムまたはアプリケーションを、ソフトウェア・シミュレータ上で実行する（ステップ７０２）。ソフトウェア・シミュレーションを行なうとともに、プロセッサ上で行なわれているハードウェア・オペレーションの種類および頻度を分析する（ステップ７０４）。この実施態様では、サイクルをベースにしたシミュレータを使用して、より正確に命令当たりのサイクル（ＣＰＩ）を生成する。例は、コンパイラによって生成されたオブジェクトコードを後処理する。サイクルをベースにしたシミュレータを使用して命令シーケンスをシミュレートし、命令ストリームを実行するのに必要なサイクル数を決定する。ＣＰＩは、熱プロファイルまたは温熱指数を決定するために使用することができる実行効率の近似値である。
【０１０４】
シミュレータは、プロセッサのオペレーションをシミュレートするために、ミクロアーキテクチャの詳細を理解する必要がある。この知識で、シミュレータは、命令の種類およびオペランド依存状態に基づいて、命令当たりのサイクルを推定することができる。その推定は、コンパイラによって生成されるより正確である。推定された命令当たりのサイクルは、熱プロファイルまたは温熱指数を決定するために使用することができる実行効率の近似値である。ここで、ソフトウェア・シミュレーションのための分析情報を、データ構造に所定時間記憶する（ステップ７０６）。所定時間は、実行するプログラムの命令ストリームを分析する前に設定された任意の時間であってもよい。データ構造は、レジスタまたはデータベースなどの任意のタイプのデータ構造であってもよい。分析されたハードウェアの熱特性についての知識に基づいて、ソフトウェア温熱指数が生成される（ステップ７０８）。温熱指数の生成については、図６のステップ６１０〜６１６に記載されている。
【０１０５】
例として、命令当たりのサイクルは、ソフトウェア・シミュレーションが、マイクロプロセッサの内部実行パイプラインを使用する強度を示し、この場合、より低い命令当たりのサイクル値は、実行パイプライン上のより高い強度を示す。同様に、バイト当たりのサイクルは、ソフトウェアがマイクロ・プロセッサのデータフロー・ユニットを利用する強度を示す。
【０１０６】
図７のプロセスの典型的な実施は、以下のとおりである。コンパイラを使用して、アプリケーション用のオブジェクトコードを生成する。編集後、オブジェクトコードを、サイクルベースのシミュレータ上で実行する。オブジェクトコードのシミュレーションの一部として、アプリケーションの命令シーケンスのための正確なサイクル計算を記録する。次いで、サイクル数をシーケンスでの命令数で割って、ＣＰＩを決定する。シミュレーション中に、シミュレータは命令シーケンスを検討することができる。ミクロアーキテクチャについての詳細な知識を使用して、オブジェクトコード用に推定ＣＰＩを生成する。次いで、ＣＰＩの逆数をデータ構造に記憶する。次いで、データ構造のコンテンツがローダによって使用され、アプリケーションを実行するための最良のコアを決定することができる。また、システムの熱環境へのアプリケーションの熱影響をさらに最適化するために、ローダはコアの温熱指数とアプリケーションの温熱指数を組み合わせることができる。
【０１０７】
マルチコア・プロセッサ上での実験測定温度およびプロセッサ使用率に対するこの方法の利点は、実験測定が、特定のマルチコア・プロセッサ・チップに対して、結果生ずるソフトウェア温熱指数を結びつけることであり、ここで、この方法は、ソフトウェアに対する理想値を表わし、特定のチップに関係しない。これは、順に、特定のマルチプロセッサ・チップおよびシステム作業負荷に対しソフトウェアを最適化するためにコンパイラにフィードバックすることができる。
【０１０８】
図８は、実施形態によるマルチコア・プロセッサおよび測定プロセッサ使用率でのランタイム実行によるソフトウェア熱プロファイルの生成に関するオペレーションを示すフローチャートである。実施態様として、マルチコア・プロセッサおよび測定プロセッサ使用率でランタイム実行を使用して、熱プロファイルを生成するために、図４の熱管理制御ユニット４０２を使用することが可能である。
【０１０９】
オペレーションが開始されると、プログラムまたはアプリケーションなどの様々な作業負荷は、１つまたは複数のプロセッサ上で実行される（ステップ８０２）。アプリケーションを使用して、特定のアプリケーション用の温熱指数のより正確な表示が付与される。作業負荷はそれほど正確ではないが、それらは広範囲のアプリケーションをカバーし、個々の特定のアプリケーションの分析を行なう必要性がなくなる。システムの目標とする市場の区分によって典型的に実行されたコードの種類を表わすために、作業負荷を選択する。作業負荷は、アプリケーション・スペースの計算上の態様を表わす小さなコード区分である。各市場区分につき１つとしていくつかの温熱指数値を有することが可能である。例として、地球科学市場区分（信号分析）で行なわれた典型的な計算集中作業を表わすために、高速フーリエ変換（ＦＦＴ）作業負荷を選択する。作業負荷は、マルチコア・プロセッサの熱状態に様々な効果を有する。作業負荷を実行している間、マルチコア・プロセッサに組み込まれた計装の使用を通じて、オペレーションの種類および頻度のサンプリングを行う（ステップ８０４）。この実施態様では、プロセッサの性能監視能力は、アプリケーションの使用率を監視するために使用される。一例は、キャッシュ・ミスまたはオペランド依存状態による命令停止数を記録することである。結果は、作業負荷またはアプリケーションがどれくらい効率的にハードウェア上で実行されるかの測定である。停止数の逆数は、コアのアプリケーションの利用に比例し、温熱指数としてこのように使用することができる。図４の熱センサ現在温度状態レジスタ４１２を考慮して検討されるなどのように、ステップ８０４で行なわれるサンプリングは任意の種類のサンプリングであってもよい。可能な測定としては、例えば、各コアに関して、命令停止または使用率、キャッシュ使用率、バス使用率およびメモリ・アクセスを含んでいてもよい。次いで、サンプリングから得られた情報、およびプロセッサの熱特性についての知識をデータ構造に所定時間記憶する（ステップ８０６）。所定時間は、実行するプログラムの命令ストリームを分析する前に設定された任意の時間であってもよい。データ構造は、レジスタまたはデータベースなどの任意の種類のデータ構造であってもよい。次いで、記憶された情報は、その後終了するオペレーションと共にソフトウェア・モジュールがマルチコア・プロセッサ上で熱効果を予測するためのソフトウェアの温熱指数を生成するために使用されてもよい（ステップ８０８）。温熱指数の生成については、図６のステップ６１０〜６１６に記載されている。
【０１１０】
データ構造に記憶された情報が、どのように温熱指数に変換されるかの一例は、情報の加重和を使用することである。例えば、キャッシュ・ミスの数が増加するとともに、プロセスの全体の使用率はより低くなり、プロセッサへの熱効果も下がる。この場合、キャッシュ・ミスの実際の加重は、マイナスであってもよい。加重は、データ構造に記憶された情報に依存する。これはすべて、温熱指数が、プロセッサ上でのアプリケーションの熱効果の基準であることを仮定する。温熱指数がより高いほど、そのアプリケーションのプロセッサ温度を上げるポテンシャルが大きい。
【０１１１】
分析推定に対するこの方法の利点は、実験測定が、特定のマルチプロセッサ・チップおよびシステム作業負荷に結果として生じるソフトウェア「温熱指数」を結びつけるということである。これは、順に、特定のマルチプロセッサ・チップおよびシステム作業負荷に対しソフトウェアを最適化するためにコンパイラにフィードバックすることができる。
【０１１２】
図９は、実施形態による熱サンプリングを使用してマルチコア・プロセッサ上でのランタイム実行によってソフトウェア熱プロファイルの生成のためのオペレーションを示すフローチャートである。実施態様として、熱サンプリングを使用して、マルチコア・プロセッサ上でランタイム実行を使用して、熱プロファイルを生成するために、図４の熱管理制御ユニット４０２を使用することが可能である。
【０１１３】
オペレーションが開始されると、プログラムまたはアプリケーションなどの様々な作業負荷を、１つまたは複数のプロセッサ上で実行する（ステップ９０２）。アプリケーションを使用することで、特定のアプリケーション用の温熱指数のより正確な表示が付与される。作業負荷はそれほど正確ではないが、それらは広範囲のアプリケーションをカバーし、個々の特定のアプリケーションの分析を行なう必要性がなくなる。作業負荷は、マルチコア・プロセッサの熱状態に様々な効果を有する。作業負荷を実行している間、マルチコア・プロセッサの熱状態のサンプリングを行う（ステップ９０４）。この実施態様では熱管理を使用する。作業負荷が実行されるとともに、プロセッサの熱センサが読み出される。結果は、アプリケーションの経時熱グラフである。一例が図５の温度グラフであり、ここで、温度はＹ軸上で表わされ、時間はＸ軸上で表わされる。次いで、プロセッサのサンプリングから得られた情報をデータ構造に所定時間記憶する（ステップ９０６）。所定時間は、実行するプログラムの命令ストリームを分析する前に設定された任意の時間であってもよい。データ構造は、レジスタまたはデータベースなどの任意の種類のデータ構造であってもよい。次いで、記憶された情報を使用して、ソフトウェア・モジュールのためのソフトウェア温熱指数を生成し、その後終了するオペレーションと共にマルチコア・プロセッサ上の熱効果を予測してもよい（ステップ９０８）。アプリケーションを実行している間に、温度のサンプリングのための温熱指数を生成する方法は多くある。一例は、記録された温度の平均をとり、標準偏差または平均から温度変化の２つのシグマを加えることである。他の例は、図６のステップ６１０〜６１６に記載されているような温熱指数の生成であってもよい。
【０１１４】
分析推定に対するこの方法の利点は、実験測定が、結果として生じるソフトウェア的な「温熱指数」を特定のマルチ・プロセッサ・チップ、システム作業負荷および熱環境につなぐということである。これは、順に、この環境用のソフトウェアを最適化するために、コンパイラにフィードバックすることができる。
【０１１５】
図１０は、実施形態によるマルチコア・プロセッサ用のハードウェア熱プロファイルの生成のためのオペレーションを示すフローチャートである。ハードウェア熱プロファイルは、ハードウェアまたはシステムの熱的性能に関する情報を含むデータ構造である。プロセッサ上のいくつかのコアは、他のコアおよびシステム冷却ソリューションに関するコア位置に起因する、より良好な熱特性を有していてもよい。ハードウェア熱プロファイルは、プロセッサが、熱的に強い作業負荷にどのように応答するかの基準と見なされてもよい。この基準は、システムの環境に基づいて変化してもよい（つまり、夏のテキサスにあればシステムは非常に熱くなる）。この温熱指数を生成するために、サーマルマップ、コアの熱効率、ダイ上の位置などを使用してもよい。ハードウェア温熱指数は、単なるプロセッサのサーマルマップなどのように、かなり複雑であってもよく、または非常に単純であってもよい。実施態様として、熱サンプリングを使用して、マルチコア・プロセッサ上でのランタイム実行を使用して、熱プロファイルを生成するために、図４の熱管理制御ユニット４０２を使用することが可能である。
【０１１６】
オペレーションが開始すると、プログラムまたはアプリケーションなどの様々な作業負荷を、１つまたは複数のプロセッサ上で実行する（ステップ１００２）。作業負荷は、マルチコア・プロセッサの熱状態に様々な効果を有する。作業負荷を実行している間に、マルチコア・プロセッサの熱状態のサンプリングを行なう（ステップ１００４）。ハードウェア熱プロファイルについては、プロセッサの最大熱オペレーションを表わすために、作業負荷を選択する。アプリケーションが実行し、データ構造に情報を記憶している間、現在または最大温度レジスタを周期的に読み出すことによって、温度をサンプリングする。セル・ブロードバンド・エンジンにおいて、ハードウェアまたはソフトウェアでサンプリングを行ってもよい。次いで、プロセッサのサンプリングから得られた情報を、データ構造に所定時間記憶する（ステップ１００６）。所定時間は、実行するプログラムの命令ストリームを分析する前に設定された任意の時間であってもよい。データ構造は、レジスタまたはデータベースなどの、任意の種類のデータ構造であってもよい。この時点で、マルチコア・システムの電力または性能もしくはその両方の予め集められ記憶されたソフトウェア熱プロファイルの１つまたは複数の選択を行なう（ステップ１００８）。選択は、ロードまたは実行される、もしくはロードおよび実行されるアプリケーションの種類に基づいていてもよい。選択されたソフトウェア熱プロファイルと組み合わせられるマルチコア・プロセッサの熱状態のサンプリングから記憶された情報を利用して、その後終了するオペレーションと共に最適にマルチコア・システムを管理する（ステップ１０１０）。サンプリングされた熱データから生成された温熱指数を使用して、またはアプリケーションが現在スケジューリングされるべきであっても、どのコアがアプリケーションの実行に最良であるかを選択する。同様に、ソフトウェアは、プロセッサの現在の熱状態に関して余りに高い温熱指数を有するアプリケーションを抑制するための他の手段を使用してもよい。温熱指数の生成については、図６のステップ６１０〜６１６に記載されている。
【０１１７】
図１１は、実施形態によるマルチコア・プロセッサ・システムでの最適電力および性能のためのソフトウェア熱プロファイルの生成のオペレーションを示すフローチャートである。この実施態様では、図６、図７、図８、図９、図１０に記載される前の温熱指数およびプロファイル情報は、すべて、アプリケーションの様々なスレッドまたはアプリケーショングループのスケジューリングを最適化するために利用する。ハードウェアの温熱指数は、ソフトウェアの温熱指数と組み合わせられる。次いで、そのスケジューリングは、システムの熱環境上で実行するアプリケーションの影響が最小となるように最適化される。実施態様として、マルチコア・プロセッサ・システムでの最適電力および性能のためのソフトウェア熱プロファイルを生成するために、図４の熱管理制御ユニット４０２を使用することが可能である。
【０１１８】
オペレーションが開始すると、プロセスは、プログラムがいつ初期化されたかを検出する（ステップ１１０２）。プログラムが初期化される前に、図６、図７、図８、図９または図１０で上述の方法のうちの１つを使用して温熱指数または１セットの温熱指数を生成する。ステップ１１０４および１１０６は、ソフトウェア温熱指数の分析生成を使用する例である。実行するプログラムの命令ストリームを、実行するプログラムの命令当たりのサイクル（ＣＰＩ）効率を推定するために分析する（ステップ１１０４）。実行するプログラムのための命令当たりのサイクルを、データ構造に所定時間記憶する（ステップ１１０６）。所定時間は、実行するプログラムの命令ストリームを分析する前に設定された任意の時間であってもよい。データ構造は、レジスタまたはデータベースなどの任意の種類のデータ構造であってもよい。この時点で、マルチコア・システムの電力または性能、もしくはその両方の１つまたは複数の予め集められ記憶されたハードウェアおよびソフトウェア熱プロファイルの選択を行なう（ステップ１１０８）。多数の温熱指数が提供される場合、アプリケーションの種類に基づいて選択を行う。ユーザは、アプリケーションの熱プロファイルまたは温熱指数のどちらかを有していてもよく、または、ユーザは、アプリケーションの分類を表わす１セットの作業負荷に対するの温熱指数または熱プロファイルを有していてもよい。
【０１１９】
次いで、アプリケーションまたはプログラムの実行をスケジューリングするなどのシステムの熱限界内で電力および性能を最適に管理するために、その後終了するオペレーションと共に、命令当たりのサイクルおよびハードウェアとソフトウェアのプロファイルの記憶された値に基づいて、温熱指数を生成する（ステップ１１１０）。この実施態様では、温熱指数は、命令当たりのサイクルの逆数（１／ＣＰＩ）に比例する。より低い命令当たりのサイクル値を有するプログラムは、より多くのマシンリソースを使用し、このように、システムの熱状態により大きな影響を及ぼす。この実施形態では情報ストリームの命令当たりのサイクルが使用されるが、演算ユニットまたはデータフロー・ユニットの転送されるバイト当たりのサイクルなどの温熱指数を計算する他の測定基準であってもよい。
【０１２０】
ステップ１１１０でプログラム用に生成された温熱指数は、コンパイラによって生成されてもよい。単純な形態では、温熱指数は、様々な演算ユニットおよびデータフロー・ユニットの強度を表わす分析情報の単数または加重和であってもよい。または、各々のプロセッサの演算ユニットおよびデータフロー・ユニットに対する値のベクトルも使用してもよい。実施形態では、温熱指数は、ソフトウェアの平均だけでなくピークおよびシステムへの熱影響をより正確に表わすために、標準偏差情報を含む。ＥＬＦノートなどのプログラム・ヘッダー情報を有する温熱指数を含んでもよい。
【０１２１】
実施形態は、ハードウェア全体の実施の形態、ソフトウェア全体の実施の形態、またはハードウェア要素およびソフトウェア要素の両方を含む実施の形態の形態を取ることができる。実施形態はソフトウェアで実行し、ソフトウェアは、ファームウェア、常駐ソフトウェア、マイクロコードなどが挙げられるがそれらに限定されない。
【０１２２】
更に、実施形態は、コンピュータまたは任意の命令実行システムによる、またはそれと関連して使用するためのプログラムコードを提供するコンピュータ使用可能またはコンピュータ読み取り可能な媒体からアクセス可能なコンピュータ・プログラム製品の形態を取ることができる。この記載の目的上、コンピュータ使用可能またはコンピュータ判読可能な媒体は、命令実行システム、器具または装置により、またはそれに関連して使用するためのプログラムを含む、記憶する、通信する、広める、または移動することができる任意の具体的な装置とすることができる。
【０１２３】
媒体は、電子、磁気、光学、電磁気、赤外線、または半導体システム（または器具または装置）または伝搬媒体とすることができる。コンピュータ読み取り可能な媒体としては、半導体または固体メモリ、磁気テープ、除去可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、硬質磁気ディスクおよび光ディスクが挙げられる。光ディスクの最新の例としては、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、コンパクトディスク読み取り／書き込み（ＣＤ−Ｒ／Ｗ）およびＤＶＤが挙げられる。
【０１２４】
プログラムコードを記憶または実行もしくはその両方を行うのにふさわしいデータ処理システムは、システムバスを介して、メモリ素子に直接または間接的につながれた少なくとも１つのプロセッサを含む。メモリ素子は、回数を低減するために、少なくともあるプログラムの一時的記憶を提供するプログラムコード、大容量記憶装置およびキャッシュメモリの実際の実行の間に使用されるローカルメモリを含むことができ、実行の間に大容量記憶装置からコードを検索する。
【０１２５】
入力／出力またはＩ／Ｏ装置（キーボード、ディスプレイ、ポインティングデバイス装置などを含み、これらに限定されない）は、システムに直接または介在するＩ／Ｏコントローラを介してつなぐことができる。
【０１２６】
ネットワーク・アダプターもシステムにつながれ、データ処理システムを、介在する個人のネットワークまたはパブリック・ネットワークを介して、他のデータ処理システムまたは遠隔プリンターまたは記憶装置につなぐことを可能とする。モデム、ケーブル・モデムおよびイーサネットカードは、現在利用可能な数少ないタイプのネットワーク・アダプターである。
【０１２７】
実施形態の記載は、実例および説明のために示されており、包括的、または開示される実施形態に限定されることを意図しない。多くの修正および変形は、当業者にとって明らかとなるであろう。実施形態の原理、実際の適用について最良に説明し、他の当業者が、熟慮された特定の使用に適用できるように様々な修正がなされた様々な形態に関して実施形態を理解することを可能とするために、実施例を選択し記載した。
【図面の簡単な説明】
【０１２８】
【図１】実施形態を実行するデータ処理システムのネットワークの図的記述を示す。
【図２】実施形態を実行するデータ処理システムのブロック図である。
【図３】実施形態による実施態様を実行するセル・ブロードバンド・エンジン・チップの典型的図である。
【図４】実施形態による典型的セル・ブロードバンド・エンジン・チップ熱管理システムを示す図である。
【図５】実施形態によって温度、並びに割込みおよび動的抑制が生じる様々なポイントを示す図である。
【図６】実施形態によるソフトウェア熱プロファイルの分析生成のオペレーションを示すフローチャートである。
【図７】実施形態によるシミュレートされた環境でのランタイム実行によるソフトウェア熱プロファイルの生成のためのオペレーションを示すフローチャートである。
【図８】実施形態によるマルチコア・プロセッサ上でのランタイム実行およびプロセッサ使用率の測定によって、ソフトウェア熱プロファイルの生成のためのオペレーションを示すフローチャートである。
【図９】実施形態による熱サンプリングを使用するマルチコア・プロセッサ上でのランタイム実行によるソフトウェア熱プロファイルの生成のためのオペレーションを示すフローチャートである。
【図１０】実施形態によるマルチコア・プロセッサ用のハードウェア熱プロファイルのための生成のオペレーションを示すフローチャートである。
【図１１】実施形態によるマルチコア・プロセッサ・システムでの最適出力および性能のためのソフトウェア熱プロファイルの生成のためのオペレーションを示すフローチャートである。
【図１】
2007183925.tif 000003
【図２】
2007183925.tif 000004
【図３】
2007183925.tif 000005
【図４】
2007183925.tif 000006
【図５】
2007183925.tif 000007
【図６】
2007183925.tif 000008
【図７】
2007183925.tif 000009
【図８】
2007183925.tif 000010
【図９】
2007183925.tif 000011
【図１０】
2007183925.tif 000012
【図１１】
2007183925.tif 000013
【外国語明細書】
2007183925000001.pdf
2007183925000002.pdf
2007183925000003.pdf
2007183925000004.pdf