例示的な実施形態は、サーマル・スロットリング・ロジックの実施に関する。図1から図2は、例示的な実施形態を実施することができるデータ処理環境の例示的な図として与える。図1から図2は、単に例示的なものであり、態様または実施形態を実施することができる環境に関して何らかの限定を主張したり暗示したりすることを意図しないことは認められよう。例示的な実施形態の精神および範囲から逸脱することなく、図示する実施形態に多くの変更を加えることも可能である。
ここで図面を参照すると、図1は、例示的な実施形態の態様を実施することができるデータ処理システムのネットワークを図で表したものである。ネットワーク・データ処理システム100は、例示的な実施形態を実施することができるコンピュータ・ネットワークである。ネットワーク・データ処理システム100は、ネットワーク102を含む。これは、ネットワーク・データ処理システム100内で接続されている様々なデバイスおよびコンピュータ間の通信リンクを提供するために用いられる媒体である。ネットワーク102は、有線通信リンク、無線通信リンク、または光ファイバ・ケーブル等の接続を含むことができる。
図示する例において、サーバ104およびサーバ106は、ストレージ・ユニット108と同様に、ネットワーク102に接続する。更に、クライアント110、112、および114がネットワーク102に接続する。これらのクライアント110、112、および114は、例えばパーソナル・コンピュータまたはネットワーク・コンピュータとすることができる。図示する例では、サーバ104は、ブート・ファイル、オペレーティング・システム画像、およびアプリケーション等のデータを、クライアント110、112、および114に供給する。この例では、クライアント110、112、および114は、サーバ104に対するクライアントである。ネットワーク・データ処理システム100は、追加のサーバ、クライアント、および他の図示しないデバイスを含む場合がある。
図示する例において、ネットワーク・データ処理システム100はインターネットであり、ネットワーク102は全世界に広がるネットワークおよびゲートウエイの集合を表し、TCP/IP(Transmission Control Protocol/Internet Protocol)プロトコル・スイートを用いて互いに通信を行う。インターネットの中心部には、メジャー・ノードまたはホスト・コンピュータ間の高速データ通信線のバックボーンがあり、データおよびメッセージをルーティングする何千もの民生用、官公庁用、教育用、および他のコンピュータ・システムから成る。むろん、ネットワーク・データ処理システム100は、例えばイントラネット、ローカル・エリア・ネットワーク(LAN)、またはワイド・エリア・ネットワーク(WAN)等、多数の異なるタイプのネットワークとして実施することも可能である。図1は、異なる例示的な実施形態のために、アーキテクチャを限定するものではなく、一例として意図されるものである。
ここで図2を参照すると、例示的な実施形態の態様を実施することができるデータ処理システムのブロック図が示されている。データ処理システム200は、図1のサーバ104またはクライアント110等のコンピュータの一例であり、例示的な実施形態のためのプロセスを実施するコンピュータ使用可能コードまたは命令を配置することができる。
図示する例において、データ処理システム200が用いるハブ・アーキテクチャは、ノース・ブリッジおよびメモリ・コントローラ・ハブ(MCH)202およびサウス・ブリッジおよび入出力(I/O)コントローラ・ハブ(ICH)204を含む。ノース・ブリッジおよびメモリ・コントローラ・ハブ202には、処理ユニット206、メイン・メモリ208、およびグラフィック・プロセッサ210が接続されている。グラフィック・プロセッサ210は、アクセラレーテッド・グラフィック・ポート(AGP:accelerated graphics port)を介してノース・ブリッジおよびメモリ・コントローラ・ハブ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カードを含むことができる。PCIはカード・バス・コントローラを用いるが、PCIeは用いない。ROM224は、例えば、フラッシュ・バイナリ入出力システム(BIOS)とすることが可能である。
ハード・ディスク・ドライブ226およびCD−ROMドライブ230は、バス240を介してサウス・ブリッジおよびI/Oコントローラ・ハブ204に接続する。ハード・ディスク・ドライブ226およびCD−ROMドライブ230は、例えば、IDE(Integrated drive electronics)またはSTA(serial advanced technology attachment)インタフェースを用いることができる。サウス・ブリッジおよびI/Oコントローラ・ハブ204に、スーパーI/O(SIO)デバイス236を接続することができる。
処理ユニット206上でオペレーティング・システムが動作し、図2のデータ処理システム200内の様々なコンポーネントを調整してそれらを制御する。クライアントとして、オペレーティング・システムは、Microsoft社のWindowsXP等の市販のオペレーティング・システムとすることができる。オペレーティング・システムと関連付けて、Javaプログラミング・システム等のオブジェクト指向プログラミング・システムが動作することができ、Javaプログラムまたはデータ処理システム200上で実行しているアプリケーションからオペレーティング・システムへの呼を行う(Javaは、SunMicrosystems, Inc.の商標)。
サーバとして、データ処理システム200は、例えば、IBM eServer pSeriesコンピュータ・システムとすることができ、Advanced Interactive Executive(AIX)オペレーティング・システムまたはLINUXオペレーティング・システムを実行する(eServer、pSeries、およびAIXは、International Business Machines Corporationの商標であり、Linuxは、Linux Torvaldsの商標である)。データ処理システム200は、処理ユニット206に複数のプロセッサを含む対称型マルチプロセッサ(SMP:symmetric multiprocessor)・システムとすることができる。あるいは、シングル・プロセッサ・システムを用いることも可能である。
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムのための命令は、ハード・ディスク・ドライブ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は、例示的な実施形態の態様を実施することができるCellBEチップの例示的な図を示す。CellBEチップ300は、ゲーム・コンソール、デスクトップ・システム、およびサーバ等、メディア・リッチな用途向けの分散型処理を対象としたシングル・チップ・マルチプロセッサの実施である。
CellBEチップ300は、以下の機能コンポーネントに論理的に分けることができる。すなわち、Power PCプロセッサ要素(PPE)301、シナジェスティック・プロセッサ・ユニット(SPU)310、311、および312、メモリ・フロー・コントローラ(MFC)305、306、および307である。一例としてシナジェスティック・プロセッサ要素(SPE)302、303、および304を示すが、いかなるタイプのプロセッサ要素もサポートすることができる。例示的なCellBEチップ300の実施は、1つのPPE301および8つのSPEを含むが、図3はSPE302、303、および304の3つのみを示す。CELLプロセッサのSPEは、媒体およびデータ・ストリーミング作業負荷を迅速化するために設計された新しいプロセッサ・アーキテクチャの第1の実施である。
CellBEチップ300は、チップ上システムとし、図3に示す要素の各々を単一のマルチプロセッサ・チップ上に設けるようにすることができる。更に、CellBEチップ300は異種(heterogeneous)処理環境であり、SPU310、311、および312の各々はシステム内の他のSPUから異なる命令を受信することができる。更に、SPU310、311、および312のための命令セットは、PowerPCプロセッサ・ユニット(PPU)308のものとは異なる。例えば、PPU308は、Power(商標)アーキテクチャのRISC(Reduced Instruction Set Computer)ベースの命令を実行することができるが、SPU310、311、および312は、ベクトル化命令(vectorized instructions)を実行する。
各SPEは、1つのSPU310、311、または312を含み、それ自身のローカル・ストア(LS)・エリア313、314、または315、および、専用のMFC305、306、または307を有する。MFC305、306、または307は、関連するメモリ管理ユニット(MMU)316、317、または318を有し、メモリ保護およびアクセス許可情報を保持し処理する。ここでも、例としてSPUを示すが、いかなるタイプのプロセッサ・ユニットもサポートすることができる。更に、CellBEチップ300は、エレメント相互接続バス(EIB:element interconnect bus)319および他のI/O構造を実施して、オンチップおよび外部のデータ・フローを容易にする。
EIB319は、PPE301およびSPE302、303および304のための主要オンチップ・バスとして機能する。更に、EIB319は、オフチップ・アクセス専用の他のオンチップ・インタフェース・コントローラに対するインタフェースとなる。オンチップ・インタフェース・コントローラは、2つのXIO(extreme data rate I/O)メモリ・チャネル321および322を提供するメモリ・インタフェース・コントローラ(MIC)320と、2つの高速外部I/OチャネルおよびCellBE300のための内部割込み制御を提供するCellBEインタフェース・ユニット(BEI)323とを含む。BEI323は、バス・インタフェース・コントローラ(BIC。BIC0およびBIC1と標示する)324および325ならびにI/Oインタフェース・コントローラ(IOC)326として実施される。2つの高速外部I/Oチャネルは、Redwood Rambus(登録商標)Asic Cell(RRAC)インタフェースの極性に接続して、CellBE300にフレキシブル入力および出力(FlexIO_0およびFlexIO_2)353を提供する。
各SPU310、311、または312は、対応するLS領域313、314、または315およびシナジェスティック実行ユニット(SXU)354、355、または356を有する。各SPU310、311、または312は、その関連するLS領域313、314、または315内からの命令のみを実行することができる(データ・ロードおよびストア動作を含む)。このため、SPU310、311、および312に専用のMFC305、306、および307を介したMFC直接メモリ・アクセス(DMA)動作は、システム内のどこか他にあるストレージとの間で必要なデータ転送を全て実行する。
SPU310、311、または312上で実行するプログラムは、LSアドレスを用いて、それ自身のLSエリア313、314、または315を単に参照する。しかしながら、各SPUのLSエリア313、314、または315には、全システムのメモリ・マップ内の実アドレス(RA)が割り当てられている。RAは、デバイスが応答するアドレスである。PowerPC(登録商標)では、アプリケーションは、有効アドレス(EA)によってメモリ位置(またはデバイス)を参照し、これはメモリ位置(またはデバイス)のための仮想アドレス(VA)内にマッピングされ、これはRAにマッピングされる。EAは、アプリケーションがメモリあるいはデバイスまたは両方を参照するために用いるアドレスである。このマッピングによって、オペレーティング・システムは、システム内に物理的に存在するよりも多くのメモリを割り当てることができる(すなわち、仮想メモリという言葉がVAによって参照される)。メモリ・マップは、システム内の全てのデバイス(メモリを含む)およびそれらの対応するRAのリスト化である。メモリ・マップは、デバイスまたはメモリが応答するRAを識別する実アドレス空間のマップである。
これによって、特権ソフトウェア(privilegedsoftware)は、LSエリアをプロセスのEAにマッピングして、あるSPUのLSと別のSPUのLSエリアとの間の直接メモリ・アクセス転送を容易にすることができる。また、PPE301は、EAを用いてあらゆるSPUのLSエリアに直接アクセスすることができる。PowerPC(登録商標)においては、3つの状態がある(すなわち、問題あり、特権あり、およびハイパーバイザ)。特権ソフトウェアは、特権ありまたはハイパーバイザのいずれかの状態で実行しているソフトウェアである。これらの状態は、異なるアクセス特権を有する。例えば、特権ソフトウェアは、実メモリをアプリケーションのEAにマッピングするために、データ構造レジスタに対するアクセスを有することができる。問題あり状態は、プロセッサがアプリケーションを実行している際に通常入る状態であり、一般にシステム管理リソースへのアクセス(リアル・メモリをマッピングするためのデータ構造等)は禁止される。
MFC DMAデータ・コマンドは、常に1つのLSアドレスおよび1つのEAを含む。DMAコマンドは、ある位置から別の位置へとメモリをコピーする。この場合、MFC DMAコマンドは、EAとLSアドレスとの間でデータをコピーする。LSアドレスは、MFCコマンド・キューに対応して、関連するSPU310、311、または312のLSエリア313、314、または315を直接アドレス指定する。コマンド・キューは、MFCコマンドのキューである。SPUからのコマンドを保持するために1つのキューがあり、PXUまたは他のデバイスからのコマンドを保持するために1つのキューがある。しかしながら、EAは、他のSPE302、303、または304のLSエリア313、314、および315を含むシステム内のいずれかの他のメモリ・ストレージ・エリアにアクセスするために配置またはマッピングすることができる。
メイン・ストレージ(図示せず)は、PPU308、PPE301、SPE302、303、および304、図2に示すシステム等のシステム内のI/Oデバイス(図示せず)によって共有される。メイン・メモリに保持される全ての情報は、システム内の全てのプロセッサおよびデバイスに可視的である。プログラムは、EAを用いてメイン・メモリを参照する。MFCプロキシ・コマンド・キュー、制御、およびステータス機構がRAを有し、RAはEAを用いてマッピングされるので、パワー・プロセッサ要素は、メイン・ストレージと関連するSPE302、303、および304のローカル・ストレージとの間でEAを用いてDMA動作を開始することができる。
一例として、SPU310、311、または312上で実行しているプログラムがメイン・メモリにアクセスする必要がある場合、SPUプログラムは、適切なEAおよびLSアドレスを有するDMAコマンドを発生させて、そのMFC305、306、または307コマンド・キューに配置する。SPUプログラムによってコマンドをキューに配置した後、MFC305、306、または307はコマンドを実行して、LSエリアとメイン・メモリとの間で必要なデータを転送する。MFC305、306、または307は、PPE301等の他のデバイスが発生したコマンドのための第2のプロキシ・コマンド・キューを提供する。MFCプロキシ・コマンド・キューは、通常、SPUを開始する前にローカル・ストレージにプログラムをストアするために用いられる。また、MFCプロキシ・コマンドは、文脈ストア動作のために用いることができる。
EAアドレスがMFCに提供するアドレスは、MMUによってRAに変換することができる。変換プロセスによって、システム・メモリを仮想化し、実アドレス空間においてメモリおよびデバイスのアクセス保護を行うことができる。LSエリアは実アドレス空間にマッピングされるので、EAは全てのSPU LSエリアをアドレス指定することができる。
CellBE300上のPPE301は、64ビットのPPU308およびPowerPCストレージ・サブシステム(PPSS)309から成る。PPU308は、プロセッサ実行ユニット(PXU)329、レベル1(L1)キャッシュ330、MMU331、および置換管理テーブル(RMT)332を含む。PPSS309は、キャッシュ可能インタフェース・ユニット(CIU)333、非キャッシュ可能ユニット(NCU)334、レベル2(L2)キャッシュ328、RMT335、およびバス・インタフェース・ユニット(BIU)327から成る。BIU327は、PPSS309をEIB319に接続する。
SPU310、311、または312およびMFC305、306、および307は、容量を有する一方向チャネルを介して互いに通信を行う。チャネルは実質的にFIFOであり、34のSPU命令の1つを用いてアクセスされる。すなわち、読み取りチャネル(RDCH)、書き込みチャネル(WRCH)、および読み取りチャネル・カウント(RDCHCNT)である。RDCHCNTは、チャネル内の情報量を戻す。容量は、FIFOの深さである。チャネルは、MFC305、306、および307、SPU310、311、および312との間でデータを送信する。BIU339、340、および341は、MFC305、306、および307をEIB319に接続する。
MFC305、306、および307は、SPU310、311、および312に2つの主要な機能を提供する。MFC305、306、および307は、SPU310、311、または312、LSエリア313、314、または315、およびメイン・メモリとの間でデータを移動させる。更に、MFC305、306、および307は、SPU310、311、および312、およびシステム内の他のデバイス間の同期機能を提供する。
MFC305、306、および307の実施は、4つの機能ユニットを有する。すなわち、直接メモリ・アクセス・コントローラ(DMAC)336、337、および338、MMU316、317、および318、原子ユニット(ATO)342、343、および344、RMT345、346、および347、ならびにBIU339、340、および341である。DMAC336、337、および338は、MFCコマンド・キュー(MFC CMDQ)(図示せず)を維持して処理する。このキューは、MFC SPUコマンド・キュー(MFC SPUQ)およびMFCプロキシ・コマンド・キュー(MFC PrxyQ)から成る。16入力のMFC SPUQは、SPUチャネル・インタフェースから受信したMFCコマンドを処理する。8入力のMFC PrxyQは、メモリ・マップド入出力(MMIO:memory mapped input and output)のロードおよびストア動作によって、PPE301またはSPE302、303、および304等の他のデバイスから入来するMFCコマンドを処理する。通常の直接メモリ・アクセス・コマンドは、LSエリア313、314、または315およびメイン・メモリの間でデータを移動させる。MFC DMAコマンドのEAパラメータを用いて、メイン・メモリを含むメイン・ストレージ、ローカル・ストレージ、およびRAを有する全てのデバイスをアドレス指定する。MFC DMAコマンドのローカル・ストレージ・パラメータを用いて、関連するローカル・ストレージをアドレス指定する。
仮想モードにおいて、MMU316、317、および318は、アドレス変換およびメモリ保護機能を提供して、DMAC336、337、および338からのEA変換要求を処理し、変換したアドレスを返信する。各SPEのMMUは、セグメント・ルックアサイド・バッファ(SLB:segment lookaside buffer)およびトランスレーション・ルックアサイド・バッファ(TLB:translation lookaside buffer)を維持する。SLBはEAをVAに変換し、TLBはSLBから来たVAをRAに変換する。EAは、アプリケーションによって用いられ、通常32または64ビットのアドレスである。異なるアプリケーションまたは1つのアプリケーションの多数のコピーが、同一のEAを用いて、異なるストレージ位置を参照することができる(例えば、同一のEAを用いるアプリケーションの2つのコピーは、2つの異なる物理的メモリ位置を必要とする)。これを達成するために、EAは最初に、オペレーティング・システムのもとで動作している全てのアプリケーションに共通した、はるかに大きいVA空間に変換される。EAからVAへの変換は、SLBによって実行される。次いで、VAは、TLBを用いてRAに変換される。TLBは、ページ・テーブルまたはVAからRAへのマッピングを含むマッピング・テーブルのキャッシュである。このテーブルは、オペレーティング・システムによって維持されている。
ATO342、343、および344は、システム内の他の処理ユニットとの同期を維持するために必要なレベルのデータ・キャッシングを提供する。原子直接メモリ・アクセス・コマンドは、シナジェスティック・プロセッサ要素が他のユニットと同期を取るための手段を提供する。
BIU339、340、および341の主要な機能は、SPE302、303、および304に、EIBに対するインタフェースを提供することである。EIB319は、CellBEチップ300上の全てのプロセッサ・コアとEIB319に接続された外部インタフェース・コントローラとの間の通信経路を提供する。
MIC320は、EIB319とXIO321および322の1つ以上との間のインタフェースを提供する。XDR(商標)(extreme data rate)ダイナミック・ランダム・アクセス・メモリ(DRAM)は、Rambusが提供する高速で高度にシリアルなメモリである。Rambusが提供するマクロは、本明細書中ではXIO321および322と示す最大データ・レートのダイナミック・ランダム・アクセス・メモリにアクセスする。
MIC320は、単にEIB319上のスレーブである。MIC320は、サポートされるハブにおけるメモリに対応して、その設定されたアドレス範囲(複数の範囲)内のコマンドを承認する。
BIC324および325は、EIB319から2つの外部デバイスのいずれかに対するオンチップおよびオフチップのデータ転送を管理する。BIC324および325は、I/Oデバイスを用いて非コヒーレントなトラヒックを交換することができ、または、EIB319を別のデバイスに拡張することも可能である。別のデバイスは、別のCellBEチップである場合がある。EIB319を拡張するために用いる場合、バス・プロトコルは、CellBEチップ300内のキャッシュと接続された外部デバイス内のキャッシュとの間の一貫性を維持する。外部デバイスは、別のCellBEチップである場合がある。
IOC326は、I/Oインタフェース・デバイスにおいて生じコヒーレントなEIB319に宛てられたコマンドを処理する。I/Oインタフェース・デバイスは、多数のI/Oデバイスに接続するI/Oブリッジ・チップまたは非コヒーレントな方法でアクセスされる別のCellBEチップ300等のI/Oインタフェースに接続するいずれかのデバイスとすることができる。また、IOC326は、I/Oブリッジ・チップまたは非コヒーレントなCellBEチップ300内またはその陰にあるメモリ・マップド・レジスタに宛てられたEIB319上のアクセスを傍受し、それらを適切なI/Oインタフェースへとルーティングする。また、IOC326は、内部割込みコントローラ(IIC)349およびI/Oアドレス変換ユニット(I/OTrans)350を含む。
一般的な(pervasive)ロジック351は、クロック管理、テスト機構、および電源投入シーケンスをCellBEチップ300に提供するコントローラである。一般的なロジックは、プロセッサに温度管理システムを提供することができる。一般的なロジックは、当技術分野において一般的に既知であるJTAG(Joint Test Action Group)またはSPI(Serial Peripheral Interface)インタフェースによる、システム内の他のデバイスに対する接続を含む。
様々なコンポーネントをどのように実施可能であるかということの具体的な例を示したが、これは、例示的な実施形態の態様を実施することができるアーキテクチャを限定することを意図したものではない。例示的な実施形態の態様は、いかなるマルチコア・プロセッサ・システムと共に用いることも可能である。
アプリケーションまたはソフトウェアの実行中に、CellBEチップ内の領域の温度が上昇する場合がある。検査されないまま放置されると、温度は指定された最高接合部温度を超えて上昇し、不適切な動作または物理的な損傷に至る恐れがある。こういった状況を避けるために、CellBEチップのデジタル温度管理ユニットは、動作中のCellBEチップ内の温度を監視し制御しようとする。デジタル温度管理ユニットは、本明細書中に記載する温度管理制御ユニット(TMCU)および10個の分散型デジタル熱センサ(DTS)から成る。
センサは、8個のSPEの各々に1つずつ配置され、PPEに1つ配置され、線形熱ダイオードに隣接して1つ配置されている。線形熱ダイオードは、温度を計算するオンチップ・ダイオードである。これらのセンサは、ほとんどの用途の実行中に最大の温度上昇を通常経験する関連ユニット内の領域に隣接して配置されている。温度制御ユニットは、これらのセンサの各々からのフィードバックを監視する。センサの温度がプログラム可能なポイントを超えて上昇すると、温度制御ユニットは、PPEまたはSPEの1つ以上に割込みを生じさせ、関連するPPEまたはSPE(複数のSPE)の実行を動的に抑制するように構成することができる。
PPEまたはSPEをプログラム可能サイクル数だけ停止および実行させることによって、必要な抑制を行う。割込みによって、特権ソフトウェアは是正措置を取ることができ、一方で、動的な抑制により、ソフトウェアの介入なしで広帯域エンジン・チップ内の温度をプログラム可能なレベル未満に維持しようとする。特権ソフトウェアは、抑制レベルを、アプリケーションが提供する推奨設定以下にセットする。これは、各アプリケーションごとに異なる場合がある。
PPEまたはSPEを抑制しても効果的に温度が管理されず、温度が上昇し続ける場合、温度が熱的過負荷温度(プログラム可能な構成データによって規定される)に達したときに、一般的なロジック351はCellBEチップのクロックを停止させる。熱的過負荷機構によって、CellBEチップを物理的な損傷から保護する。この状態からの回復にはハード・リセットが必要である。DTSが監視する領域の温度は、必ずしも関連するPPEまたはSPE内の最も温度の高い箇所ではない。
図4は、例示的な実施形態に従った一例としての温度管理システムを示す。温度管理システムは、図3の一般的なロジック・ユニット351が提供するもの等の集積回路として実施可能である。温度管理システムは、特定用途向け集積回路、プロセッサ、マルチプロセッサ、または異種マルチコア・プロセッサとすることができる。温度管理システムは、10個の分散型DTS(簡略化のためにDTS404、406、408、および410のみを示す)と温度管理制御ユニット(TMCU)402との間で分割されている。SPUセンサ440内にあるDTS404および406の各々、PPUセンサ442内にあるDTS408、および線形熱ダイード(図示せず)に隣接したセンサ444内にあるDTS410が、現在温度の検出信号を供給する。この信号は、温度がTMCU402によってセットされた現在温度検出範囲以下であることを示す。TMCU402は、DTS404、406、408、および410からの信号の状態を用いて、各PPEまたはSPEのDTS404、406、408、または410の温度を連続的に追跡する。温度を追跡しながら、TMCU402は、現在の温度を、関連するPPEまたはSPE内の温度を表す数値として供給する。個々のセンサを較正するための製造過程により、内部構成ストレージ428をセットする。
上述したTMCU402の要素に加えて、TMCU402は、マルチプレクサ446および450、ワーク・レジスタ448、比較器452および454、シリアライザ(serializer)456、温度管理制御状態マシン458、およびデータ・フロー(DF)・ユニット460も含む。マルチプレクサ446および450は、単一の媒体上で伝送を行うために様々な出立および入来信号を組み合わせる。ワーク・レジスタ448は、TMCU402において実行される乗算の結果を保持する。比較器452および454は、2つの入力の比較機能を提供する。比較器452は、「〜以上」を調べる比較器である。比較器454は、「大なり」を調べる比較器である。シリアライザ456は、ソースからの低速並列データを、伝送のための高速シリアル・データに変換する。シリアライザ456は、SPUセンサ440上のデシリアライザ(deserializer)462および464と組み合わせて動作する。デシリアライザ462および464は、受信した高速シリアル・データを低速並列データに変換する。温度管理制御状態マシン458は、TMCU402の内部初期化を開始する。DFユニット460は、温度管理制御状態マシン458へのデータおよび状態マシン458からのデータを制御する。
TMCU402は、割込みロジック416を用いてPPEに対する割込みを生じ、スロットリング・ロジック418を用いてPPEまたはSPEの実行を動的に抑制するように構成することができる。
TMCU402は、温度を表す数値を、プログラム可能な割込み温度およびプログラム可能なスロットル(抑制)・ポイントと比較する。各DTSは、独立したプログラム可能割込み温度を有する。温度がプログラムされた割込み温度範囲内である場合、TMCU402は、イネーブルされている場合、PPEに対する割込みを発生する。割込みを発生させるのは、後述する方向ビットに応じて、プログラミングされたレベルよりも温度が高いかまたは低い場合である。更に、第2のプログラム可能割込み温度によって、システム・コントローラに対する注意信号をアサートすることができる。システム・コントローラはシステム・プレーナ上にあり、SPIポート上でCellBEに接続されている。
PPEまたはSPEに関連したDTSによって検知された温度がスロットル・ポイント以上である場合、TMCU402は、PPEまたは1つ以上のSPEを個別に開始および停止させることによって、そのPPEまたはSPEの実行を抑制する。温度管理停止時間レジスタおよび温度管理スケール・レジスタ等の温度管理レジスタを用いて、ソフトウェアが抑制の率および頻度を制御することができる。
図5は、例示的な実施形態に従った、割込みおよび動的抑制を行うことができる温度および様々なポイントのグラフを示す。図5において、ライン500は、PPEまたはSPEの温度を表すことができる。PPEまたはSPEが正常に動作している場合、「N」で標示された領域において抑制は行われない。PPEまたはSPEの温度がスロットル・ポイントに達すると、TMCUは、関連するPPEまたはSPEの実行の抑制を開始する。抑制が行われる領域は「T」で標示されている。PPEまたはSPEの温度がスロットル終了ポイントよりも低い場合、実行は正常動作に戻る。
いずれかの理由で、温度が上昇し続けて、フル・スロットル・ポイント以上の温度に達すると、TMCU402は、温度がフル・スロットル・ポイント未満に下がるまでPPEまたはSPEを停止させる。PPEまたはSPEを停止させる領域は、「S」で標示されている。温度がフル・スロットル・ポイント以上である場合にPPEまたはSPEを停止させることを、コア・ストップ安全策と呼ぶ。
この典型的な例では、割込み温度は、スロットル・ポイントよりも高く設定する。従って、TMCU402が発生した割込みは、温度がコア・ストップ温度を超えていたか、または今も超えているという理由で対応するPPEまたはSPEを停止させていることをソフトウェアに通知するものである。これは、温度割込みマスク・レジスタ(TM_ISR)(図4の422を参照のこと)がアクティブに設定されていることを前提とし、PPEまたはSPEは待ち状態の割込みの間に再開することができる。動的抑制がディスエーブルされている場合、特権ソフトウェアが温度状況を管理する。温度状況を管理しないと、結果として、関連するPPEまたはSPEが不適切に動作したり、または熱的過負荷機能によって熱的シャットダウンが起こったりする可能性がある。
図4に戻ると、熱センサ・ステータス・レジスタは、熱センサ現在温度ステータス・レジスタ412および熱センサ最大温度ステータス・レジスタ414から成る。これらのレジスタによって、ソフトウェアは、各DTSの現在の温度を読み取り、ある時間期間中に到達した最高温度を求め、温度がプログラム可能温度に達した場合に割込みを発生させることができる。熱センサ・ステータス・レジスタには、ハイパーバイザ特権と標示することができる実アドレス・ページが関連付けられている。
熱センサ現在温度ステータス・レジスタ412は、各DTSの現在温度についての符号化またはデジタル値を含む。センサの温度検出における待ち時間、これらのレジスタを読み取る際の待ち時間、および正常な温度変動のため、これらのレジスタにおいて報告される温度は、最も早い時点のものであり、ソフトウェアがデータを受信したときの実際の温度を反映していない場合がある。各センサが専用の制御ロジックを有するので、DTS404、406、408、および410内の制御ロジックは、全てのセンサを並列にサンプリングする。TMCU402は、サンプル期間の終了時に、熱センサ現在温度ステータス・レジスタ412の内容を更新する。TMCU402は、熱センサ現在温度ステータス・レジスタ412内の値を現在の温度に変更する。TMCU402は、SenSampTime期間ごとに、新しい現在の温度についてポーリングする。SenSampTime構成フィールドは、サンプル期間の長さを制御する。
熱センサ最大温度ステータス・レジスタ414は、熱センサ最大温度ステータス・レジスタ414が最後に読み取られた時から、各センサが達したデジタル符号化最大温度を含む。ソフトウェア、または、オフチップ・デバイス472もしくオフチップI/Oデバイス474等のいずれかのオフチップ・デバイスによって、これらのレジスタを読み取ると、TMCU402は、各センサごとの現在の温度をレジスタにコピーする。読み取りの後、TMCU402は、この時点から開始して、最大温度の追跡を続ける。各レジスタの読み取りは独立している。1つのレジスタの読み取りは、他のものの内容に影響を与えない。
各センサは専用の制御ロジックを有するので、DTS404、406、408、および410内の制御ロジックは、全てのセンサを並列にサンプリングする。TMCU402は、熱センサ最大温度ステータス・レジスタ414内の値を、現在の温度に変更する。TMCU402は、SenSampTime期間ごとに、新しい現在の温度についてポーリングする。SenSampTime構成フィールドは、サンプル期間の長さを制御する。
割込みロジック416内の熱センサ割込みレジスタは、PPEに対する温度管理割込みの発生を制御する。このレジスタ・セットは、熱センサ割込み温度レジスタ420(TS_ITR1およびTS_ITR2)、熱センサ割込みステータス・レジスタ422(TS_ISR)、熱センサ割込みマスク・レジスタ424(TS_IMR)、および熱センサ・グローバル割込み温度レジスタ426(TS_GITR)から成る。熱センサ割込み温度レジスタ420および熱センサ・グローバル割込み温度レジスタ426は、PPEに対する温度管理割込みを発生させる温度のための符号化を含む。
熱センサ現在温度ステータス・レジスタ412において、デジタル形式に符号化されたあるセンサについての温度が、熱センサ割込み温度レジスタ420において符号化された対応するセンサの割込み温度以上である場合、TMCU402は、熱センサ割込みステータス・レジスタ412に、対応するステータス・ビットをセットする(TS_ISR[Sx])。熱センサ現在温度ステータス・レジスタ412において符号化されたいずれかのセンサについての温度が、熱センサ・グローバル割込み温度レジスタ426において符号化されたグローバル割込み温度以上である場合、TMCU402は、熱センサ割込みステータス・レジスタ422に、対応するステータス・ビットをセットする(TS_ISR[Gx])。
いずれかの熱センサ割込み温度ステータス・レジスタ422のビット(TS_ISR[Sx])がセットされ、熱センサ割込みマスク・レジスタ424における対応するマスク・ビット(TS_IMR[Mx])もセットされた場合、TMCU402は、PPEに対する温度管理割込み信号をアサートする。いずれかの熱センサ割込みステータス・レジスタ422(TS_ISR[Gx])のビットがセットされ、熱センサ割込みマスク・レジスタ424における対応するマスク・ビット(TS_IMR[Cx])もセットされた場合、TMCU402は、PPEに対する温度管理割込み信号をアサートする。
割込み状況をクリアするためには、特権ソフトウェアは、熱センサ割込みマスク・レジスタにおけるいずれかの対応するマスク・ビットを「0」にセットしなければならない。温度管理割込みをイネーブルするためには、特権ソフトウェアは、温度が対応するセンサについての割込み温度未満であることを保証し、次いで以下のシーケンスを実行する。温度が割込み温度未満でない場合に割込みをイネーブルすると、結果として、即座に温度管理割込みが発生する場合がある。
1.熱センサ割込みステータス・レジスタ422において対応するステータス・ビットに「1」を書き込む。
2.熱センサ割込みマスク・レジスタ424において対応するマスク・ビットに「1」を書き込む。
熱センサ割込み温度レジスタ420は、SPE、PPEに位置するセンサ、および線形熱ダイオードに隣接したセンサのための割込み温度レベルを含む。TMCU402は、このレジスタにおける符号化された割込み温度レベルを、熱センサ現在温度ステータス・レジスタ412内の対応する割込み温度符号化と比較する。これらの比較の結果、温度管理割込みが発生する。各センサの割込み温度レベルは独立している。
独立した割込み温度レベルが熱センサ割込み温度レジスタ420にセットされることに加えて、熱センサ・グローバル割込み温度レジスタ426が、第2の割込み温度レベルを含む。このレベルは、CellBEチップにおける全てのセンサに適用される。TMCU402は、このレジスタ内の符号化されたグローバル割込み温度レベルを、各センサごとの現在温度符号化と比較する。これらの比較の結果、温度管理割込みが発生する。
グローバル割込み温度の目的は、CellBEチップにおける温度上昇に対して早めに指示を与えることである。特権ソフトウェアおよびシステム・コントローラは、この情報を用いて、例えば、ファン速度を上げたり、ユニット間でのアプリケーション・ソフトウェアのバランスを取り戻したりする等、温度を制御するための措置を開始することができる。
熱センサ割込みステータス・レジスタ422は、どのセンサが割込み条件を満たすかを識別する。割込み条件とは、各熱センサ割込みステータス・レジスタ422のビットが、これを満たすと割込みを発生させることができる特定の状況を指す。実際の割込みは、対応するマスク・ビットがセットされた場合にPPEに対して提示されるだけである。
熱センサ割込みステータス・レジスタ422は、3組のステータス・ビットを含む。すなわち、デジタル・センサ・グローバル閾値割込みステータス・ビット(TS_ISR[Gx])、デジタル・センサ閾値割込みステータス・ビット(TS_ISR[Sx])、および、デジタル・センサ・グローバル未満閾値割込みステータス・ビット(TS_ISR[Gb])である。
熱センサ現在温度ステータス・レジスタ412内のあるセンサについての温度符号化が、熱センサ割込み温度レジスタ420における対応するセンサ割込み温度符号化以上である場合、TMCU402は、熱センサ割込みステータス・レジスタ422(TS_ISR[Sx])にステータス・ビットをセットし、対応する方向ビット熱センサ割込みマスク・レジスタ424をTM_IMR[Bx]=「0」とする。更に、熱センサ現在温度ステータス・レジスタ412内のあるセンサについての温度符号化が、熱センサ割込み温度レジスタ420における対応するセンサ割込み温度符号化未満である場合、TMCU402は、熱センサ割込みステータス・レジスタ422TS_ISR[Sx]をセットし、対応する方向ビット熱センサ割込みマスク・レジスタ424をTM_IMR[Bx]=「1」とする。
いずれかの関与しているセンサの現在温度が、熱センサ・グローバル割込み温度レジスタ426のもの以上である場合、TMCU402は、熱センサ割込みステータス・レジスタ422TS_ISR[Gb]をセットし、熱センサ割込みマスク・レジスタ424TS_IMR[BG]を「0」にする。個々の熱センサ割込みステータス・レジスタ422TS_ISR[Gx]のビットは、個々のセンサのうちどれがこれらの条件を満たすかを示す。
熱センサ割込みマスク・レジスタ424内の関与しているセンサが全て、熱センサ・グローバル割込み温度レジスタ426のもの未満の現在温度を有する場合、TMSU402は、熱センサ割込みステータス・レジスタ422TS_ISR[Gb]をセットし、熱センサ割込みマスク・レジスタ424TS_IMR[BG]を「1」にする。全ての関与しているセンサは、熱センサ・グローバル割込み温度レジスタ426のもの未満の現在温度を有するので、グローバル未満閾値割込み条件については、1つのみのステータス・ビット熱センサ割込みステータス・レジスタ422(TS_ISR[Gb])が存在する。
いったん、熱センサ割込みステータス・レジスタ422におけるステータス・ビット(TS_ISR[Sx]、[Gx]、または[Gb])が「1」にセットされると、TMCU402は、特権ソフトウェアによって「0」にリセットされるまで、この状態を維持する。特権ソフトウェアは、熱センサ割込みステータス・レジスタ422における対応ビットに「1」を書き込むことによって、ステータス・ビットを「0」にリセットする。
熱センサ割込みマスク・レジスタ424は、個々のセンサのための2つのフィールド、および、グローバル割込み条件のための多数のフィールドを含む。割込み条件とは、各熱センサ割込みステータス・レジスタ422のビットが、これを満足すると割込みを発生させることができる特定の状況を指す。実際の割込みは、対応するマスク・ビットがセットされた場合にPPEに対して提示されるだけである。
個々のセンサのための2つの熱センサ割込みマスク・レジスタのデジタル温度閾値割込みフィールドは、TS_IMR[Mx]およびTS_IMR[Bx]である。熱センサ割込みマスク・レジスタ424TS_IMR[Mx]のマスク・ビットは、割込みステータス・ビットが、PPEに対する温度管理割込みを発生することを防ぐ。熱センサ割込みマスク・レジスタ424TS_IMR[Bx]の方向ビットは、熱センサ割込み温度レジスタ420における対応する温度よりも高いかまたは低いかという割込み条件のための温度方向をセットする。熱センサ割込みマスク・レジスタ424TS_IMR[Bx]を「1」にセットすると、割込み条件の温度は、熱センサ割込み温度レジスタ420における対応する温度未満に設定される。熱センサ割込みマスク・レジスタ424TS_IMR[Bx]を「0」にセットすると、割込み条件の温度は、熱センサ割込み温度レジスタ420における対応する温度以上に設定される。
グローバル割込み条件のための熱センサ割込みマスク・レジスタ424のフィールドは、TS_IMR[Cx]、TS_IMR[BG]、およびTS_IMR[A]である。熱センサ割込みマスク・レジスタ424、TS_IMR[Cx]のマスク・ビットは、グローバル閾値割込みを防ぎ、どのセンサがグローバル未満閾値割込み条件に関与するかを選択する。熱センサ割込みマスク・レジスタ424、TS_IMR[BG]の方向ビットは、グローバル割込み条件のための温度方向を選択する。熱センサ割込みマスク・レジスタ424、TS_IMR[Cgb]のマスク・ビットは、グローバル未満閾値割込みを防ぐ。熱センサ割込みマスク・レジスタ424、TS_IMR[A]は、システム・コントローラに対する注意をアサートする。注意とは、システム・コントローラに対する信号であり、一般的なロジックが注意を必要とするか、またはシステム・コントローラのためのステータスを有することを示す。注意は、システム・コントローラにおいて割込みにマッピングすることができる。システム・コントローラは、システム・プレーナ上にあり、SPIポート上でCellBEに接続されている。
熱センサ割込みマスク・レジスタ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」にセットされている場合、TMCU402は注意をアサートする。更に、熱センサ割込みマスク・レジスタ424、TS_IMR[Cgb]、および熱センサ割込みステータス・レジスタ422、TS_ISR[Gb]が双方とも「1」にセットされている場合、TMCU402は注意をアサートする。
いずれかの熱センサ割込みマスク・レジスタ424、TS_IMR[Mx]ビット、およびその対応する熱センサ割込みステータス・レジスタ422のステータス・ビット(TS_ISR[Sx])が双方とも「1」にセットされている場合、TMCU402は熱管理割込みをPPEに提示する。いずれかの熱センサ割込みマスク・レジスタ424、TS_IMR[Cx]ビット、およびその対応する熱センサ割込みステータス・レジスタ424のステータス・ビットTS_ISR[Gx]が双方とも「1」にセットされている場合、TMCU402は熱管理割込みを発生させる。更に、熱センサ割込みマスク・レジスタ424、TS_IMR[Cgb]、および熱センサ割込みステータス・レジスタ422、TS_ISR[Gb]が双方とも「1」にセットされていると、TMCU402は熱管理割込みをPPEに提示する。
スロットリング・ロジック418における動的温度管理レジスタは、PPEまたはSPEの実行抑制を制御するためのパラメータを含む。動的温度管理レジスタは、1組のレジスタであり、温度管理制御レジスタ430(TS_CR1およびTM_CR2)、温度管理スロットル・ポイント・レジスタ432(TM_TPR)、温度管理停止時間レジスタ434(TM_STR1およびTM_STR2)、温度管理抑制スケール・レジスタ436(TM_TSR)、および温度管理システム割込みマスク・レジスタ438(TM_SIMR)を含む。
温度管理スロットル・ポイント・レジスタ432は、センサのためのスロットル温度ポイントをセットする。温度管理スロットル・ポイント・レジスタ432には、2つの独立したスロットル温度ポイントをセットすることができる。すなわち、ThrottlePPEおよびThrottleSPEであり、1つはPPEのためであり、1つはSPEのためのものである。また、このレジスタには、PPEまたはSPEの抑制のディスエーブルおよび停止のための温度ポイントが含まれている。PPEまたはSPEの実行抑制は、温度がスロットル・ポイント以上になった場合に開始する。抑制が終了するのは、抑制をディスエーブルする温度未満に下がった場合である(TM_TPR[EndThrottlePPE/EndThrottleSPE])。温度がフル・スロットルまたは停止温度に達すると(TM_TPR[FullThrottlePPE/FullThrottleSPE])、TMCU402は、PPEまたはSPEの実行を停止する。温度管理制御レジスタ430は、抑制挙動を制御する。
温度管理停止時間レジスタ434および温度管理抑制スケール・レジスタ436は、抑制の頻度および量を制御する。温度がスロットル・ポイントに達すると、TMCU402は、温度管理停止時間レジスタ434内の対応する値に温度管理スケール・レジスタ436内の対応するスケール値を乗算した停止時間によって指定されるクロック数だけ、対応するPPEまたはSPEを停止させる。次いで、TMCU402は、対応するスケール値で乗算した実行時間によって指定されるクロック数だけ、PPEまたはSPEを実行することができる。ここで、実行時間は、実施に依存した固定時間量と停止時間との間の差である。スケール値は、プログラム可能であり、温度管理スケール・レジスタ436において、停止時間および実行時間の双方のための乗数である。一例として、(Stop x Scale)/(Run x Scale)とすることができる。コアが停止する時間の割合は同じままであるが、期間は長くなるか、または頻度が下がる。このシーケンスは、温度がディスエーブル・スロットリング(TM_TPR[EndThrottlePPE/EndThrottleSPE])未満に下がるまで継続する。
温度管理システム割込みマスク・レジスタ438は、どのPPE割込みによってTMCU402に抑制をディスエーブルさせるかを選択する。これらの割込みが待ち状態のままであり、マスクが待ち状態の割込みを選択したままである間は、TMCU402は抑制を阻止し続ける。マスクが選択解除されるか、または割込みが待ち状態でなくなると、TMCU402は抑制を阻止しなくなる。
温度管理制御レジスタ430は、各PPEまたはSPEごとに独立して抑制モードを設定する。制御ビットは2つのレジスタ間で分割される。以下は、各PPEまたはSPEごとに独立して設定することができる5つの異なるモードである。
動的抑制ディスエーブル(コア・ストップ安全策を含む)。
正常動作(動的抑制およびコア・ストップ安全策はイネーブルされる)。
PPEまたはSPEが常に抑制される(コア・ストップ安全策はイネーブルされる)。
コア・ストップ安全策ディセーブル(動的抑制はイネーブル、コア・ストップ安全策はディスエーブルされる)。
PPEまたはSPEが常に抑制され、コア・ストップ安全策はディスエーブルされる。
特権ソフトウェアは、アプリケーションまたはオペレーティング・システムを実行しているPPEまたはSPEについて、制御ビットを正常動作にセットしなければならない。PPEまたはSPEがアプリケーション・コードを実行していない場合、特権ソフトウェアは制御ビットをディスエーブルにセットしなければならない。「PPEまたはSPEが常に抑制される」モードは、アプリケーション開発のためのものである。これらのモードは、アプリケーションが最大抑制条件のもとで動作可能であるか否かを判定するのに有用である。動的抑制またはコア・ストップ安全策ディスエーブルのいずれかでPPEまたはSPEを実行可能とすることは、特権ソフトウェアがアクティブに熱的イベントを管理する場合にのみ許されなければならない。
温度管理システム割込みマスク・レジスタ438は、どのPPE割込みによって温度管理ロジックがPPEの抑制を一時的に停止するかを制御する。TMCU402は、割込みが待ち状態である間、割込みが対象とするスレッドには無関係に、双方のスレッドについて抑制を一時的に停止する。割込みが待ち状態でなくなると、抑制条件が存在する限り、抑制を再開することができる。SPEの抑制は、システム割込み条件に基づいてディスエーブルされない。抑制条件に優先することができるPPE割込み条件は、以下のものである。
外部
デクリメンタ(Decrementer)
ハイパーバイザ・デクリメンタ
システム・エラー
温度管理
温度管理スロットル・ポイント・レジスタ432は、PPEまたはSPEの実行抑制が開始および終了する符号化温度ポイントを含む。また、このレジスタは、PPEまたはSPEの実行が完全に抑制される符号化温度ポイントを含む。
ソフトウェアは、温度管理スロットル・ポイント・レジスタ内の値を用いて、3つの温度管理状態間で切り替えるための3つの温度ポイントを設定する。すなわち、正常実行(N)、PPEまたはSPE抑制(T)、およびPPEまたはSPE停止(S)である。TMCU402は、PPEまたはSPEについて独立した温度ポイントをサポートする。
熱センサ現在温度ステータス・レジスタ412におけるセンサの符号化現在温度が抑制温度(ThrottlePPE/ThrottleSPE)以上である場合、対応するPPEまたはSPEがイネーブルされている場合、その実行抑制が開始する。実行抑制は、対応するセンサの符号化現在温度が抑制を終了するための符号化温度(EndThrottolePPE/EndThrottleSPE)未満になるまで継続する。安全対策のため、符号化現在温度がフル・スロットル・ポイント(FullThrottlePPE/FullThrottleSPE)以上である場合、TMCU402は対応するPPEまたはSPEを停止させる。
温度管理停止時間レジスタ432は、温度管理抑制状態において特定のPPEまたはSPEに適用される抑制量を制御する。温度管理停止時間レジスタ434において、ソフトウェアによってセットされるこの値は、コアが実行することができる時間量に対するコアが停止する時間量(停止/実行)、またはコアが停止する時間の割合を表す。温度管理抑制スケール・レジスタ436は、PPEまたはSPEが停止および実行する実際のクロック数(NClks)を制御する。
温度管理抑制スケール・レジスタ436は、温度管理抑制状態の間にPPEまたはSPEが停止および実行する実際のサイクル数を制御する。このレジスタ内の値は、構成リング設定TM_Config[MinStopSPE]の乗数である。以下の式は、実際の停止および実行サイクル数を計算する。
SPE実行および停止時間:
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]
PowerPC(登録商標)要素の実行および停止時間:
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]
実行および停止時間は、割込みおよび特権ソフトウェアが様々な熱管理レジスタを書き込むことによって変更することができる。
オンチップ性能モニタ466は、DTS404、406、408、および410等の温度検知デバイスによって与えられる温度データを追跡可能な性能モニタリングを提供することができる。温度データは、メモリ470にストアするか、図2のメイン・メモリ208等のオフチップ・デバイス472、または、図2のサウス・ブリッジおよび入出力(I/O)コントローラ・ハブ(ICH)204等のオフチップI/Oデバイス474に書き込むことができる。性能モニタ466に配置されたコントローラ468は、温度データをどこに送信するかの決定を制御する。
以下の説明は、1つの命令ストリームおよび1つのプロセッサを対象とするが、命令ストリームは1組の命令ストリームとすることができ、プロセッサは1組のプロセッサとすることができる。すなわち、1組とは、単一の命令ストリームおよび単一のプロセッサ、または、2つ以上の命令ストリームおよびプロセッサとすることができる。
上述のアーキテクチャを用いて、CellBEチップの温度管理および温度抑制のために、多くの改良および追加のプログラミング性が達成される。これらの改良および追加のプログラマビリティの一部は、なぜ他のものが有用性を高めるかの重要な特徴を可能とする。
図6は、例示的な実施形態に従った、最大温度を記録ための動作のフロー図を示す。動作が開始すると、図3のCellBEチップ300等のCellBEチップを含むコンピュータ・システムは、開始またはリセットする(ステップ602)。前述のように、CellBEチップは、図3の一般的なロジック・ユニット351によって提供される温度管理システムを含む。温度管理システムは、図4のDTS404、406、408、および410等の各DTSごとに、図4の最大温度ステータス・レジスタ414および現在温度ステータス・レジスタ412等の1組の最大温度ステータス・レジスタおよび1組の現在温度ステータス・レジスタを含む。現在温度ステータス・レジスタは、図4の温度管理制御状態マシン458等の温度管理制御状態マシンが最後にDTSを検知した後の、そのターゲットDTSの現在温度をストアする。最大温度ステータス・レジスタは、コンピュータ・システムが最後に最大温度ステータス・レジスタを読み取るか、またはコンピュータ・システムがリセットした後の、そのターゲットDTSの最大温度をストアする。最大温度ステータス・レジスタの読み取りは、プロセッサ、集積回路等のデバイスをいずれかの数だけ用いて、または、SPI(Serial Peripheral Interface)ポートまたはJTAG(Joint Test Action Group)ポートを用いたデバイスによって行うことができる。しかしながら、JTAGポートによってレジスタを読むと、リセットは起こらない。
例示的に、以下の考察は1つのDTSに限定し、コンピュータ・システムが開始またはリセットした(ステップ602)後の最大温度はゼロである。いったん温度管理制御状態マシンがDTSの温度を検知すると、温度管理制御状態マシンは、DTSの検知温度を、図4の比較器454等の比較器に送信する(ステップ604)。比較器は、検知温度を、そのDTSのための最大温度ステータス・レジスタにストアされた現在最大温度と比較する(ステップ606)。ステップ606において、検知温度が、最大温度ステータス・レジスタにストアされた現在最大温度よりも高い場合、検知温度は新しい最大温度になり、温度管理制御状態マシンは新しい最大温度を最大温度ステータス・レジスタに記録する(ステップ608)。すなわち、温度管理制御状態マシンは、最大温度ステータス・レジスタにストアされた現在最大温度を上書きするかまたは置換する。ステップ606において、検知温度が最大温度ステータス・レジスタにストアされた現在最大温度以下である場合、最大温度ステータス・レジスタは最大温度ステータス・レジスタ内にある現在最大温度を保持する(ステップ610)。
コンピュータ・システムが最大温度ステータス・レジスタを読み取り要求の形態で読み取る(ステップ612)まで、またはコンピュータ・システムがリセットするまで、最大温度ステータス・レジスタ内の現在最大温度は、最大温度にとどまる。現在最大温度が読み取られない場合、動作はステップ604に戻る。ステップ612において、コンピュータ・システムが現在最大温度を読み取ると、温度管理制御状態マシンは、現在最大温度を現在温度ステータス・レジスタの現在温度にリセットし(ステップ614)、動作はステップ604に戻る。
この動作の一例として、プロセッサのコアまたはプロセッサ自体等の特定のユニットのDTSが、ある時間期間、67℃、70℃、75℃、72℃、および74℃の温度を検知した場合、最大温度ステータス・レジスタの最大温度は75℃となる。DTSの4回目の検知の後、コンピュータ・システムが読み取り要求を発すると、最大温度が戻るのは75℃である。しかしながら、この時点で、温度管理制御状態マシンは最大温度を現在温度にリセットし、DTSによって実行される最後の検知の後、最大温度ステータス・レジスタの最大温度は74℃となる。
このため、最大温度ステータス・レジスタの目的は、最大温度レジスタが最後に読み取られた後にDTSが達した最大温度を記録することである。この最大温度情報は、現在温度レジスタを連続的にポーリングすることなく、アプリケーションまたはプログラムの実行中にDTSが達した最大温度をオペレーティング・システムが求める際に役立つ。連続的なポーリングを行うことは、システムの性能に影響を与え、従って最大温度に影響を与える恐れがある。更に、現在温度をポーリングすることは、最大温度を読み取ることを保証しない。これは、現在温度の読み取り間に最大温度が発生した場合に当てはまる。
図7は、別の例示的な実施形態に従った、性能モニタリングによって温度データを追跡するための動作のフロー図を示す。前述のように、CellBEチップは、図3の一般的なロジック・ユニット351によって提供される温度管理システムを含む。性能モニタリングは、図4の性能モニタ466等の性能モニタによって行うことができる。性能モニタリングは、図4のメモリ470等のその内部メモリにおいて、図4のDTS404、406、408、および410等の温度検知デバイスによって提供される温度データを追跡することができ、図2のメイン・メモリ208等のメイン・メモリまたは図4のオフチップ・デバイス472、または、図2のサウス・ブリッジおよび入出力(I/O)コントローラ・ハブ(ICH)204または図4のオフチップI/Oデバイス474等のI/Oデバイスに書き込むことができる。
性能モニタリングは、2つの主な追跡モードをサポートする。すなわち、固定時間期間の追跡または連続的な追跡である。熱性能のトレースは、図5のトレース500等のトレースとすることができる。また、性能モニタリングでは、2つの連続サンプル間の時間期間を制御するためのサンプリング周波数の設定を行うことができる。更に、温度情報の圧縮を用いて、サンプリング間隔を増すことができる。1つの圧縮技法は、変更が生じた場合に温度情報をストアのみすることである。温度情報と共に、同一であった温度サンプル数のカウントもストアすることができる。通常、温度情報は変化が遅いので、これは有用な技法である。
性能モニタによって温度データを追跡するための動作が開始すると、図4の温度管理制御状態マシン458等の温度管理制御状態マシンは、性能モニタを追跡モードにセットする(ステップ702)。例示的に、以下の考察は1つのDTSに制限する。温度管理制御状態マシンは、DTSの温度を検知して(ステップ704)、DTSの検知温度を現在温度ステータス・レジスタあるいは他のデータ構造またはその両方にストアするために送信する(ステップ706)。この時点で、温度管理制御状態マシンは、性能モニタが引き続き動作しているか否かを判定する(ステップ708)。いったんステップ702において性能モニタが開始すると、性能モニタはユーザが指定した時間期間だけ動作するか、またはユーザ入力を用いてユーザによって停止されるまで動作する。しかしながら、性能モニタは、特定の温度条件に基づいて停止する場合もある。特定の温度条件はトリガと呼ばれ、ロジック・アナライザが1組の信号上で特定の条件を探す等である。トリガの使用は、ソフトウェア・デバッグにおいて有用である場合がある。例えば、ユーザは、ある温度条件に達した場合にシステムを停止またはチェックストップ(checkstop)させるように性能モニタを設定することができる。これによって、ユーザは、どのコードまたはどのコードの組み合わせが温度条件を引き起こしているかを正確に判定することができる。性能モニタがステップ708において引き続き動作している場合、動作はステップ704に戻る。
ステップ708に戻ると、性能モニタがもはや動作していない場合、温度管理制御状態マシンは、メモリにストアされた温度情報を読み取り、ストアされた情報をユーザのために図で表示し(ステップ710)、その後、動作は終了する。また、ステップ706において、検知した温度を現在温度ステータス・レジスタあるいは他のデータ構造またはそれら両方に送信し、追跡が終了するのを待つのではなく、矢印712によって示されるように動作が進行中である間にこれを表示することも可能である(ステップ710)。
従って、性能モニタは、DTSによって提供される温度データを追跡する。自動的に温度データを追跡することで、ソフトウェアが現在温度レジスタを連続的にポーリングする必要性がなくなる。性能モニタリングは、作業負荷の温度データを収集するために重要である、なぜなら性能モニタリングは、作業負荷の挙動を変化させる恐れがある温度データのポーリングのための追加コード挿入を必要としないからである。換言すると、性能モニタリングは、リアルタイムでソフトウェア・アプリケーションの熱的プロファイルを追跡するための非侵襲的な方法を提供する。温度情報を性能モニタに送信することの付加的な利点は、予め指定した温度条件に関する温度情報の記録をトリガまたは停止することができることである。更に、性能モニタを用いて、温度条件が満足された場合にシステムを停止させる(またはチェックストップさせる)ことができる。そうすることによって、ユーザは、どのコード・セグメントまたはどのコード・セグメントの組み合わせが温度条件を引き起こしているかを判定することができる。ユーザは、次いで、コード・セグメントを書き直すか、または特定の組み合わせを回避し、これによって熱イベントを回避することができる。
図8および図9は、追加の例示的な実施形態に従った、改良型の温度割込み発生のための動作のフロー図を示す。前述のように、CellBEチップは、図3の一般的なロジック・ユニット351によって与えられる温度管理システムを含む。改良型の温度割込み発生は、オペレーティング・システムが熱イベントを処理するのに役立つ別の機構である。改良型の温度割込みロジックは、図4のTMCU402等の温度管理制御ユニットの一部である。温度割込みは、温度条件が存在する場合(すなわちチップ温度がある閾値を超えて上昇した場合)、オペレーティング・システムに警告を与える。かかる場合、オペレーティング・システムは、チップ温度を下げるための是正措置を取らなければならない。是正措置は、ソフトウェア割込みハンドラによって処理することができる。これは、温度条件を処理し是正措置を開始するコードである。次いで、オペレーティング・システムは、温度条件が存在しなくなるのを待ってから正常動作を再開する。このためには、通常、オペレーティング・システムが特定の時間量だけ待つ必要があり、次いでプロセッサの温度をポーリングして、正常動作を再開するのが安全であるか否かを判定しなければならない。改良型の温度割込み発生によって、オペレーティング・システムは、温度がある閾値未満に下がったときを検出するように割込みを設定し、これによって現在温度レジスタをポーリングする必要をなくす。図4の熱センサ割込みマスク・レジスタ424(TS_IMR)および熱センサ割込みステータス・レジスタ422(TS_ISR)の組み合わせにより、オペレーティング・システムは熱イベントの処理を極めて容易に行うことができる。
改良型の温度割込み発生は、ローカル・レベルおよびグローバル・レベルで実行することができる。すなわち、改良型の温度割込み発生は、特定のDTS上で個別に(ローカル)、または、図4のDTS4040、406、408、および410等の全てのDTSで(グローバル)、行うことができる。熱センサ割込みマスク・レジスタの方向ビットはBGおよびBXである。割込み方向は、割込みを発生させる条件を規定する。割込みを発生させることができるのは、温度が割込み温度から割込み温度以上まで変化した場合、または、温度が割込み温度以上から割込み温度未満まで変化した場合である。温度管理制御状態マシンは、割込みマスク・レジスタにおける方向ビットBGおよびBXによって条件を識別する。BGはグローバル方向ビットである。BGが「0」にセットされている場合、温度管理制御状態マシンは、いずれかのDTSの温度がグローバル割込み温度以上である場合に割込みを発生させる。BGが「1」にセットされている場合、温度管理制御状態マシンは、全てのDTSの温度がグローバル割込み温度未満である場合に割込みを発生させる。BXはローカル方向ビットであり、Xは個別の関連するDTSの番号である。BXが「0」にセットされている場合、温度管理制御状態マシンは、個々のDTSの温度がDTS割込み温度以上である場合に割込みを発生させる。BXが「1」にセットされている場合、温度管理制御状態マシンは、個々のDTSの温度がDTS割込み温度未満である場合に割込みを発生させる。温度割込みステータス・レジスタ(TS_ISR)は、どのセンサが改良型の温度割込みを発生させたかを記録する。ソフトウェアは、このレジスタを読み取って、どの条件が生じたか、および、どのセンサまたは複数のセンサが割込みを発生させたかを判定する。温度管理制御状態マシンは、いったんソフトウェアによって読み取られると、温度割込みステータス・レジスタのステータス・ビットをリセットする。
従って、改良型の温度割込み発生のための動作を、グローバルおよびローカルな視点から示すことができる。図8は、グローバル改良型温割込み発生を示し、図9は、ローカル改良型温度割込み発生を示す。図8のグローバル改良型温度割込み発生において動作が開始すると、温度管理制御状態マシンは、グローバル割込み温度Tを温度T1にセットし、グローバル割込み方向BGを「0」にセットする(ステップ802)。温度管理制御状態マシンは、DTSの温度を検知する(ステップ804)。温度管理制御状態マシンは、DTSからのいずれかの検知温度が温度T1以上であるか否かを判定する(ステップ806)。どの検知温度もT1以上ではない場合、動作はステップ804に戻る。ステップ806において、検知温度のいずれか1つが温度T1以上である場合、温度管理制御状態マシンは、割込みを発生し、温度割込みステータス・レジスタにおける対応するステータス・ビットをセットして、どのセンサまたは複数のセンサが割込みを発生させたかを記録する(ステップ808)。次いで、オペレーティング・システムは、割込みを処理し、プロセッサ上の作業負荷を減速させるか、または、プロセッサの作業負荷の一部を軽減してシステム内の別のプロセッサへ割り当てることができる。
割込みを発生させた後、温度管理制御状態マシンは、グローバル割込み温度Tを温度T2にセットして、グローバル割込み方向BGは「1」にセットされる(ステップ810)。温度T2は、温度T2以下に設定しなければならない。温度管理制御状態マシンは、再びDTSの温度を検知する(ステップ812)。温度管理制御状態マシンは、TSからの全ての検知温度が温度T2未満であるか否かを判定する(ステップ814)。どの温度も温度T2未満でない場合、動作はステップ812に戻る。ステップ814において、全ての検知温度が温度T2未満である場合、温度管理制御状態マシンは割込みを発生し、温度割込みステータス・レジスタ内の対応するステータス・ビットをセットして、どのセンサまたは複数のセンサが割込みを発生させたかを記録する(ステップ816)。この時点で、オペレーティング・システムが正常動作を再開するのは安全である。次いで、オペレーティング・システムは、割込みを処理して、システムを正常動作に復元する。次に、動作はステップ802に戻り、グローバル割込み温度Tを温度T1にセットし、グローバル割込み方向BGを「0」にセットする。
この動作の一例は、DTSの全てでグローバル割込み温度が80℃であり、グローバル割込み方向が「0」の場合である。プロセッサのコアまたはプロセッサ自体等、関連ユニットのいずれかのDTSがいったん80℃以上の温度を検知すると、温度管理制御状態マシンは割込みを発生し、温度割込みステータス・レジスタにおける対応するステータス・ビットをセットして、どのセンサまたは複数のセンサが割込みを発生させたかを記録する。次いで、オペレーティング・システムは割込みを処理し、プロセッサ上の作業負荷を減速するか、または、プロセッサの作業負荷の一部を軽減してシステム内の別のプロセッサへと割り当てることができる。また、この時点で、温度管理制御状態マシンは、グローバル割込み温度を例示的な77℃にリセットし、グローバル割込み方向を「1」にセットすることができる。作業負荷は、低速モードで動作し続けるか、またはDTSが全てのDTSについて77℃未満の温度を検知するまで、プロセッサをオフのままとする。いったん、検知温度が77℃未満であることを温度管理制御状態マシンが判定すると、温度管理制御状態マシンは別の割込みを発生する。温度管理制御状態マシンは、グローバル割込み温度を80℃にセットし、グローバル割込み方向を「0」にセットし、次いでオペレーティング・システムは作業負荷の正常動作を再開する。
図9に移ると、例示的な実施形態は1つのDTSに限られているが、この例は各DTSについて同一である。ローカル改良型温度割込み発生のための動作が開始すると、温度管理制御状態マシンは、ローカル割込み温度Tを温度T3にセットし、ローカル割込み方向BXを「0」にセットする(ステップ852)。温度管理制御状態マシンは、DTSの温度を検知する(ステップ854)。温度管理制御状態マシンは、DTSからの検知温度が温度T3以上であるか否かを判定する(ステップ856)。検知温度が温度T3以上でない場合、動作はステップ854に戻る。検知温度が温度T3以上である場合、温度管理制御状態マシンは割込みを発生し、温度割込みステータス・レジスタ内の対応するステータス・ビットをセットして、どのセンサまたは複数のセンサが割込みを発生させたかを記録する(ステップ858)。次いで、オペレーティング・システムは、割込みを処理し、プロセッサ上の作業負荷を減速するか、または、作業負荷の一部を軽減してプロセッサ内の他のユニットまたはシステム内の別のプロセッサへ割り当てることができる。
温度管理制御状態マシンが割込みを発生した後、温度管理制御状態マシンはローカル割込み温度Tを温度T4にセットして、ローカル割込み方向BXを「1」にセットする(ステップ860)。温度T4は、温度T3以下に設定しなければならない。温度制御状態マシンは、再びDTSの温度を検知する(ステップ862)。温度管理制御状態マシンは、DTSからの検知温度が温度T4未満であるか否かを判定する(ステップ864)。検知温度が温度T4未満でない場合、動作はステップ862に戻る。検知温度が温度T4未満である場合、温度管理制御状態マシンは割込みを発生し、温度割込みステータス・レジスタ内の対応するステータス・ビットをセットして、どのセンサまたは複数のセンサが割込みを発生させたかを記録する(ステップ866)。この時点で、オペレーティング・システムが正常動作を開始するのは安全である。次いで、オペレーティング・システムは割込みを処理し、システムを正常動作に復元する。次に、動作はステップ852に戻り、温度管理制御状態マシンは、ローカル割込み温度Tを温度T3にセットし、ローカル割込み方向BXを「0」にセットする。
この動作の一例は、所与のDTSのローカル割込み温度が80℃であり、ローカル割込み方向が「0」の場合である。関連ユニットのDTSがいったん80℃以上の温度を検知すると、温度管理制御状態マシンは割込みを発生し、温度割込みステータス・レジスタ内の対応するステータス・ビットをセットして、どのセンサまたは複数のセンサが割込みを発生させたかを記録する。次いで、オペレーティング・システムは割込みを処理し、プロセッサ上の作業負荷を減速するか、または、プロセッサの作業負荷の一部を軽減してシステム内の別のプロセッサへ割り当てることができる。また、この時点で、温度管理制御状態マシンは、ローカル割込み温度を例示的な77℃にリセットし、ローカル割込み方向を「1」にセットすることができる。作業負荷は低速モードで動作し続けるか、またはDTSが77℃未満の温度を検知するまで、温度条件を経験しているプロセッサのユニットまたはプロセッサをオフのままとする。いったん、検知温度が77℃未満であることを温度管理制御状態マシンが判定すると、温度管理制御状態マシンは別の割込みを発生する。温度管理制御状態マシンは、ローカル割込み温度を80℃にセットし、ローカル割込み方向を「0」にセットし、次いでオペレーティング・システムは作業負荷の正常動作を再開する。
このため、改良型の温度割込み発生によって、オペレーティング・システムは、温度変更の方向に従うように割込み発生をプログラムすることができ、温度割込みの場合に割込みハンドラが現在温度を連続的にポーリングする必要性がなくなる。
図10は、追加の例示的な実施形態に従って、温度管理システムにおいて顕著な省電力モード(deep power savings mode)および一部良好(partial good)をサポートするための動作のフロー図を示す。前述のように、CellBEチップは、図3の一般的なロジック・ユニット351によって提供される温度管理システムを含む。図3のCellBEチップ300においては、多数の省電力モードが存在する。省電力モードの各々の実施に応じて、いくつかは、図4のDTS404、406、408、および410等のDTSのアクセス可能性を制限する場合がある。例えば、図3のSPU310、311、および312等のSPUは、クロックがオフになる省電力モードである場合、図4のデシリアライザ462等のデシリアライザはディスエーブルされ、図4のシリアライザ456等のシリアライザと、図4のDTS404等のDTSとの間の経路は機能しない。省電力モードの別の例は、電力供給がオフである場合が挙げられる。この場合、実際のDTSはディスエーブルされる可能性がある。別の例は、温度管理制御状態マシンが、製造試験中に遮断されるプロセッサ内のセンサまたはユニットを決定する。センサまたはユニットが冗長である場合、製造はセンサまたはユニットを不良と標示し、限られた数のユニットまたはセンサによって機能し続ける一部良好なプロセッサを生成することができる。いずれの場合にも、図4の温度管理制御状態マシン458等の温度管理制御状態マシンは、これらの電力モードのステータスを監視し、機能しないDTS(複数のDTS)が温度管理タスク(例えば抑制、割込み等)に関与することを阻止する(mask off)必要がある。
図10に戻ると、これは、温度検知および温度管理システムにおいて顕著な省電力モードおよび一部良好をサポートするための動作のフロー図を示す。動作が開始すると、温度管理制御状態マシンは、様々なDTSからのデータを用いて、DTSのステータスを追跡する(ステップ902)。温度管理制御状態マシンは、図4の内部較正ストレージ428等の内部較正ストレージにデータをストアする。前述したように、特定のDTSの動作は、省電力モード、不良のDTS、またはSPUによって禁止される場合があり、これは、図4のデータ・フロー460等のデータ・フローを介して温度管理制御状態マシンに伝達される。製造プロセスによって報告される一部良好状態の効果は省電力モードと同様であるが、異なる点は、一部良好が永久的な状態であり、DTSを永久的に阻止しなければならないことである。SPUが不良と標示された場合、温度管理制御状態マシンはSPU全体をオフし、シリアライザをディスエーブルする。DTSが不良と標示された場合、温度管理制御状態マシンはそのDTSを阻止する。温度管理制御状態マシンは、DTSまたはSPUが不良であるか機能しているかを判定する(ステップ904)。DTSまたはSPUが不良である場合、温度管理制御状態マシンはDTSを阻止し(ステップ906)、その後、動作は終了する。
電力管理状態にあるDTSを阻止するため、温度管理制御状態マシンは、図4の現在温度ステータス・レジスタ412等、現在温度ステータス・レジスタの関連する現在温度ステータス・レジスタを、最低の温度設定値である0x0にリセットする。また、他に選択可能な方法は、ステータス・ビットをセットすることによって、関連する現在温度ステータス・レジスタの符号化を確保し、DTSの阻止を示すことである。これは、センサ読み取りを単にリセットするよりも正確であり得る。次いで、温度管理制御状態マシンは、DTSとの間の現在温度ステータス・レジスタからの通信を停止する。通信の停止は、主に省電力のための任意のステップであり、不要なオーバーヘッド作業は実行しない。次いで、温度管理制御状態マシンは、DTSは現在阻止されており、温度管理タスクに関与してはならないことを示す信号を発生する。最後に、温度管理制御状態マシンは、DTSの状態をリセットする。DTSに関連したプロセッサのコアまたはプロセッサ自体等のユニットが省電力モードから出ると、温度管理制御状態マシンはDTSへの通信を再開し、現在温度ステータス・レジスタの更新を再開し、DTSが温度管理タスクに関与可能であることを示す信号を送信する。
ステップ904に戻ると、DTSおよびSPUが双方とも機能している場合、温度管理制御状態マシンはDTSへの通信を開始する(ステップ908)。温度管理制御状態マシンは、SPUの電力管理状態を監視して、SPUが省電力モードに入ったときを判定する(ステップ910)。SPUが省電力モードに入るまで、動作はステップ908に戻る。SPUが省電力モードに入り、DTSがディスエーブルされると、温度管理制御状態マシンは、ステップ906に関連付けて上述した方法でDTSを阻止する(ステップ912)。DTSはディスエーブルされていると示され、機能しているので、温度管理制御状態マシンはSPUの電力管理状態の監視を続ける(ステップ914)。SPUが省電力モードから出るまで、動作はステップ912に戻る。SPUが省電力モードから出ると、DTSはもはやディスエーブルされず、温度制御状態マシンはDTSへの通信を開始し、現在温度ステータス・レジスタの更新を再開し、DTSが温度管理タスクに関与可能であることを示す信号を送信し(ステップ916)、動作はステップ908に戻る。
このため、一部良好、不良、または省電力モードにあるDTSの温度読み取りの阻止によって、機能してないまたはディスエーブルされたDTSが温度管理タスクに関与することを防ぐ。
図11は、追加の例示的な実施形態に従って、温度とは無関係に温度認識ソフトウェア・アプリケーションのリアルタイム試験を可能とする温度抑制制御機構のための動作のフロー図を示す。前述のように、CellBEチップは、図3の一般的なロジック・ユニット351によって提供される温度管理システムを含む。図4の温度管理制御レジスタ430等の温度管理制御レジスタは、様々な温度抑制制御機構にアクセスおよび機器構成を提供する。温度抑制は、抑制を用いて熱イベントの場合に性能を縮小することによって温度を下げるように設計されている。
図4の温度管理停止時間レジスタ434等の温度管理停止時間レジスタ、および、図4の温度管理抑制スケール・レジスタ436等の温度管理抑制スケール・レジスタは、共に、抑制の量および抑制の挙動を設定する。リアルタイム・システムにおいては、リアルタイム期限を保証する必要がある。ソフトウェア開発者および品質保証チームは、最大抑制量を把握してこれを試験することが重要である。これは、プログラムまたはコード・セグメントによって許容でき、リアルタイム・システムのリアルタイム期限を保証することができる温度管理停止時間レジスタおよび温度管理抑制スケール・レジスタの最大設定値である。ハードウェアの実際の温度を調節して熱イベントを引き起こし、これによって抑制条件をトリガする代わりに、温度管理制御状態マシンは、温度には無関係に常に抑制を行うモードを提供する。温度管理制御状態マシンは、温度管理制御レジスタにおいてこのモードをセットし、チップを一定の抑制状態に設定する。この機構は、ソフトウェア開発者がリアルタイム規格を満足させるためにコードを試験し認定する際に役立つ。
動作が開始すると、温度管理停止時間レジスタおよび温度管理抑制スケール・レジスタの温度制御設定値を受信する(ステップ1002)。温度管理制御状態マシンは、温度管理停止時間レジスタおよび温度管理抑制スケール・レジスタの設定値を用いて、どのように抑制が行われるかを決定する。次いで、温度管理制御状態マシンは、試験モードを設定し、温度管理制御レジスタを常時抑制設定にセットする(ステップ1004)。次いで、プログラムは、温度管理停止時間レジスタおよび温度管理抑制スケール・レジスタの温度制御設定のもとでソフトウェアまたはプログラムがリアルタイム期限に間に合うことのリアルタイム検証を行うように動作する(ステップ1006)。試験モードは、常時抑制またはランダム抑制等のいずれかのタイプの抑制モードとすれば良い。次いで、温度管理制御状態マシンは、リアルタイム期限に間に合ったか否かを判定する(ステップ1008)。リアルタイム期限に間に合わなかった場合、温度管理制御状態マシンは、現在の温度管理停止時間レジスタおよび温度管理抑制スケール・レジスタの温度制御設定を不合格と記録する(ステップ1010)。温度管理制御状態マシンは、次いで、抑制量を低減させるいずれかの新しい温度管理停止時間レジスタおよび温度管理抑制スケール・レジスタの温度制御設定があるか否かを判定する(ステップ112)。新しい温度管理停止時間レジスタおよび温度管理抑制スケール・レジスタの温度制御設定がある場合、動作はステップ1002に戻る。ステップ1012において、新しい温度管理停止時間レジスタおよび温度管理抑制スケール・レジスタの温度制御設定がない場合、動作は終了する。
ステップ1008に戻ると、リアルタイム期限に間に合った場合、温度管理制御状態マシンは、現在の温度管理停止時間レジスタおよび温度管理抑制スケール・レジスタの温度制御設定を合格と記録する(ステップ1014)。温度管理制御状態マシンは、抑制量を増大させるいずれかの温度管理停止時間レジスタおよび温度管理抑制スケール・レジスタの温度制御設定があるか否かを判定する(ステップ1016)。新しい温度管理停止時間レジスタおよび温度管理抑制スケール・レジスタの温度制御設定がある場合、動作はステップ1002に戻る。ステップ1016において、新しい温度管理停止時間レジスタおよび温度管理抑制スケール・レジスタの温度制御設定がない場合、動作は終了する。
このため、常に抑制を行う動作モードを提供することで、コードが最悪の場合の温度条件のもとでリアルタイム期限に間に合ったことをソフトウェア開発者が試験し認定するのに役立つ。また、ソフトウェア開発者および品質保証チームは、この機構を用いて、プログラムまたはコード・セグメントによって許容可能でありリアルタイム・システムのリアルタイム期限に間に合ったことが保証されるスロットルの最大量を求めることができる。いったん温度管理制御状態マシンがスロットルの最大量を求めて検証すると、ソフトウェアは、フル・スロットリングが生じた条件で割込みが起こるように設定することができる。温度管理制御状態マシンがこの割込みを発生させると、温度管理制御状態マシンは、リアルタイム保証が守られていないか満足されていない可能性があることをアプリケーションに通知する。
常時抑制制御設定に加えて、ソフトウェアの抑制および実行のいっそう実際的なインタラクションをシミュレートするためにランダムな熱イベントまたは指示されたランダムな熱イベントを挿入するモードを提供する実施も可能である。この技法は、エラー回復コードの試験を行うためにランダムにエラーを挿入することに似ている。
図12は、追加の例示的な実施形態に従って、割込み待ち時間に対する影響を最小限に抑えた温度抑制制御の実施の動作フロー図である。前述のように、CellBEチップは、図3の一般的なロジック・ユニット351によって与えられる温度管理システムを含む。コンピュータ・システムのいずれかの部分が抑制状況に置かれると、抑制状況はシステム全体の性能を低下させる。割込みをどのくらい迅速に処理することができるか、および割込みを処理するのにどのくらい時間がかかるかという点で、性能の低下は割込みの待ち時間を増す。割込み待ち時間の増大は、全体としてシステムに重大な意味を持ち、従って、割込み待ち時間に対する温度抑制の影響を最小限に抑えることが望まれ、必要とされる。割込み待ち時間に対する温度抑制の影響を最小限に抑えることは、図3のPPU308等によるPPU抑制制御を対象とする機構である。図3のSPU310、311、および312等のSPUは、割込みを行わず、従ってこの機構による影響は受けない。
動作が開始すると、図4の温度管理制御状態マシン等の温度管理制御状態マシンは、全てのPPU割込みステータス・ビット、および図4の温度管理システム割込みマスク・レジスタ438等の温度管理システム割込みマスク・レジスタを監視する(ステップ1102)。温度管理システム割込みマスク・レジスタは、割込みの阻止を制御する。温度管理制御状態マシンは、阻止されていないいずれかの割込みが待ち状態であるか否かを判定する(ステップ1104)。待ち状態の割込みがない場合、または待ち状態の割込みがあるが阻止されている場合、動作はステップ1102に戻る。
ステップ1104において、割込みが待ち状態で阻止されていない場合、温度管理制御状態マシンは、部分的スロットルまたはフル・スロットル状態に関わらず、一時的に抑制モードをディスエーブルする(ステップ1106)。抑制モードをディスエーブルすることによって、PPUは一時的にフル性能で動作し、温度抑制の効果によって引き起こされる遅延を伴うことなく待ち状態の割込みを処理することができる。再び、温度管理制御状態マシンは、全てのPPU割込みステータスおよび温度管理システム割込みマスク・レジスタを監視する(ステップ1108)。温度管理制御状態マシンは、阻止されていない待ち状態の割込みがあるか否かを判定する(ステップ1110)。待ち状態の割込みがない場合、または、待ち状態の割込みがあるが阻止されている場合、動作はステップ1108に戻る。ステップ1110において、割込みステータスがクリアすると、温度管理制御状態マシンはPPUを元の抑制モードに復元させ(ステップ1112)、動作はステップ1102に戻る。
割込みハンドラは、割込み処理ルーチンの開始時またはルーチンの終了時に、割込みステータス・ビットをクリアする選択を有する。割込みハンドラは、図3のパワー・プロセッサ要素301等のパワー・プロセッサ要素、またはパワー・プロセッサ要素が実行するソフトウェアに配置することができる。割込みハンドラが開始時に割込みステータス・ビットをクリアすることを選択してPPUの性能劣化を回避したい場合、割込みハンドラは、割込みステータス・ビットをクリアする前に温度抑制をディスエーブルすることができる。すなわち、割込みは制御レジスタにおいて変化を引き起こさない。従って、抑制は引き続きイネーブルされるが、阻止されていない割込みが存在する場合、図4のTMCU402等の温度管理制御ユニットによって一時停止される。割込みハンドラが割込み処理の前に割込みステータスをリセットしなければならない場合、ハンドラは抑制をディスエーブルする(または抑制量を許容可能レベルまで低減させる)ように制御レジスタを設定し、割込みをリセットし、割込みを処理し、次いで抑制を再びイネーブルするか、または抑制量の設定を以前のレベルに戻す。例示的な温度抑制ディスエーブルは、図4の温度管理制御レジスタ430等の温度管理制御レジスタを0XXにセットすることによって行うことができる。Xは重要得ない(does not care)。割込みルーチンの終了時に、割込みハンドラは、温度管理制御レジスタの設定をその元の値に戻す。割込みハンドラが割込みルーチンの終了時に割込みステータス・ビットをクリアした場合、追加の作業は必要なく、割込みステータス・ビットがアクティブである限り温度管理制御状態マシンはPPUを抑制モードには設定しない。
図13は、追加の例示的な実施形態に従った、温度抑制におけるヒステリシスのための動作のフロー図である。前述のように、CellBEチップは、図3の一般的なロジック・ユニット351によって提供される温度管理システムを含む。温度抑制におけるヒステリシスは、抑制および抑制終了等の変化と、その変化の応答または効果との間の時間のずれである。例えば、スロットリング・ポイントが75℃にセットされ、スロットリング終了ポイントが72℃にセットされている場合、ヒステリシスは75℃から72℃の範囲である。図5は温度抑制ヒステリシスを示す。
図4の温度管理スロットル・ポイント・レジスタ432等の温度管理スロットル・ポイント・レジスタは、2つの温度設定値を提供する。すなわち、抑制温度および抑制終了温度である。抑制温度は、抑制終了温度よりも高く設定しなければならない。温度差は、抑制温度と抑制終了温度との間のヒステリシス量を規定し、このため、プログラム可能なヒステリシス量を規定する。
例示的に、以下の考察は1つのDTSに限定する。ヒステリシス温度抑制の動作が開始すると、温度管理制御状態マシンは、温度管理スロットル・ポイント・レジスタにおける抑制温度および抑制終了温度をセットする(ステップ1202)。温度管理制御状態マシンは、DTSの温度を検知する(ステップ1204)。温度管理制御状態マシンは、DTSからの検知温度が抑制温度以上であるか否かを判定する(ステップ1206)。検知温度が抑制温度以上でない場合、動作はステップ1204に戻る。ステップ1206において、検知温度が抑制温度以上である場合、温度管理制御状態マシンは抑制モードを開始する(ステップ1208)。
再び、温度管理制御状態マシンは、DTSの温度を検知する(ステップ1210)。温度管理制御状態マシンは、DTSからの検知温度が抑制温度以上であるか否かを判定する(ステップ1212)。検知温度が抑制終了温度未満である場合、動作はステップ1210に戻る。ステップ1212において、検知温度が抑制終了温度未満である場合、温度管理制御状態マシンは抑制モードをディスエーブルし(ステップ1214)、動作はステップ1204に戻る。
このため、温度が抑制温度以上に上昇すると、温度管理制御状態マシンは、温度管理制御レジスタが抑制モードを可能とするように適正に構成されていると想定して、ユニットを抑制モードに置く。温度管理制御状態マシンは、温度が抑制終了温度未満に下がるまで、ユニットを抑制モードのままとする。抑制終了温度が抑制温度より低い場合、識別されたヒステリシスによって、スロットル・モードがディスエーブルされる前にユニットは充分に冷えることができる。ヒステリシスがないと、ユニットは極めて頻繁に抑制モードに出たり入ったりし、全体的な抑制の効率およびプロセッサの効率が下がる可能性がある。
プロセッサの抑制の例示的な方法は、命令の送出を妨害することによって達成することができる。抑制が極めて頻繁にイネーブルおよびディスエーブルされると、プロセッサのパイプラインで極めて頻繁に情報が送られ、このため処理性能が低下する恐れがある。プロセッサの抑制の別の例示的な方法は、クロック周波数を減速することによって達成することができる。
図14は、追加の例示的な実施形態に従ったサーマル・スロットリング・ロジックの実施の動作のフロー図を示す。図14は、上述の図において説明したような完全な温度管理解決策を表す。前述のように、CellBEチップは、図3の一般的なロジック・ユニット351によって提供される温度管理システムを含む。図4のTMCU402等のTMCUは、多数の動的温度管理レジスタを含む。動的温度管理レジスタは、温度管理制御レジスタ、温度管理スロットル・ポイント・レジスタ、温度管理停止時間レジスタ、温度管理抑制スケール・レジスタ、および温度管理システム割込みマスク・レジスタであり、図4の温度管理制御レジスタ430(TS_CR1およびTM_CR2)、温度管理スロットル・ポイント・レジスタ432(TM_TPR)、温度管理停止時間レジスタ434(TM_STR1およびTM_STR2)、温度管理抑制スケール・レジスタ436(TM_TSR)、および温度管理システム割込みマスク・レジスタ438(TM_SIMR)等である。
温度管理スロットル・ポイント・レジスタは、DTSのためのスロットル・ポイントを設定する。温度管理スロットル・ポイント・レジスタには、2つの独立したスロットル・ポイントをセットすることができる。すなわち、1つはPPEのためであり、1つはSPEのためのものである。また、このレジスタには、PPEまたはSPEの抑制のイネーブルおよび抑制のディスエーブルまたは停止のための温度ポイントが含まれている。PPEまたはSPEの実行抑制は、温度がスロットル・ポイント以上になった場合に開始する。抑制が終了するのは、温度が、抑制をディスエーブルする温度未満に下がった場合である。温度がフル・スロットルまたは停止温度に達すると、PPEまたはSPEの実行を停止する。
温度管理制御状態マシンは、温度管理停止時間レジスタおよび温度管理抑制スケール・レジスタを用いて、抑制の頻度および量を制御する。温度がスロットル・ポイントに達すると、温度管理制御状態マシンは、温度管理スケール・レジスタ内の対応するスケール値によって指定されるクロック数だけ、対応するPPEまたはSPEを停止させる。次いで、温度管理制御状態マシンは、対応するスケール値で乗算した温度管理停止時間レジスタ内の実行値によって指定されるクロック数だけ、PPEまたはSPEを実行することができる。このシーケンスは、温度がディスエーブル・スロットリング未満に下がるまで継続する。
温度管理制御状態マシンは、温度管理システム割込みマスク・レジスタを用いて、割込みが待ち状態の間にどの割込みがPPEの抑制をディスエーブルするかを選択する。
温度管理制御レジスタは、各PPEまたはSPEごとに独立して抑制モードを独立して設定する。以下は、各PPEまたはSPEごとに独立して設定することができる5つの異なるモードである。
動的抑制ディスエーブル(コア・ストップ安全策を含む)。
正常動作(動的抑制およびコア・ストップ安全策はイネーブルされる)。
PPEまたはSPEが常に抑制される(コア・ストップ安全策はイネーブルされる)。
コア・ストップ安全策ディセーブル(動的抑制はイネーブル、コア・ストップ安全策はディスエーブルされる)。
PPEまたはSPEが常に抑制され、コア・ストップ安全策はディスエーブルされる。
サーマル・スロットリング・ロジックを実施するための動作として、温度管理制御状態マシンは、温度管理スロットル・ポイント・レジスタにおいて抑制温度および抑制終了温度をセットする(ステップ1302)。温度管理制御状態マシンは、DTSの温度を検知する(ステップ1304)。温度管理制御状態マシンは、DTSからの検知温度が抑制温度以上であるか否かを判定する(ステップ1306)。検知温度が抑制温度以上でない場合、動作はステップ1340に戻る。検知温度が抑制温度以上である場合、温度管理制御状態マシンは抑制モードを開始する(ステップ1308)。
次いで、温度管理制御状態マシンは、温度管理制御レジスタにおいて示される値が示す通りに、抑制のタイプによって抑制を制御する(ステップ1310)。いったん抑制タイプが示されると、温度管理制御状態マシンは、温度管理停止時間レジスタにおいて示される抑制量によって抑制を制限する(ステップ1312)。停止時間レジスタは、プロセッサが停止される時間とプロセッサが実行することができる時間との間の比すなわち抑制率をセットする。最後に、温度管理制御状態マシンは、温度管理スケール・レジスタにおいて指定された値によって、停止および実行の持続時間を調整する(ステップ1314)。この時点で、動作は同時動作すなわちステップ1316および1322に分かれる。ステップ1316において、温度管理制御状態マシンはDTSの温度を検知する。温度管理制御状態マシンは、DTSからの検知温度が抑制温度以上であるか否かを判定する(ステップ1318)。検知温度が抑制終了温度以上である場合、動作はステップ1316に戻る。DTSが抑制終了温度未満である場合、温度管理制御状態マシンは抑制モードをディスエーブルし(ステップ1320)、動作はステップ1304に戻る。
ステップ1314に戻ると、最後の抑制制限が実施された後、温度管理制御状態マシンは同時に、待ち状態である割り込みについて全てのPPU割込みステータスを監視する(ステップ1322)。抑制が実施されている間に割込みが発生すると、この割込みが処理されるまで、温度管理制御状態マシンは一時的にいかなる抑制モードもディスエーブルする。その後、部分的スロットルであるかフル・スロットルであるかには無関係に、抑制はイネーブルされ、動作はステップ1308に戻る。割込みステータスの監視に関する詳細な考察は、図12に関連付けて述べた。
従って、CellBEチップに含まれる温度管理システムの温度割込みロジックは、CellBEチップの温度条件を管理すると共にCellBEチップおよびその構成要素を保護するための動的な手段を提供する。
例示的な実施形態は、全体的にハードウェアの実施形態、全体的にソフトウェアによる実施形態、またはハードウェアおよびソフトウェア要素の双方を含む実施形態という形を取ることができる。例示的な実施形態はソフトウェアにおいて具現化され、これはファームウェア、常駐ソフトウェア、マイクロコード等を含むがこれらには限定されない。
更に、例示的な実施形態は、コンピュータまたはいずれかの命令実行システムによって用いるかまたはこれと組み合わせて用いるプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ読み取り可能媒体からアクセス可能なコンピュータ・プログラムの形態を取ることができる。この説明の目的のため、コンピュータ使用可能媒体またはコンピュータ読み取り可能媒体は、命令実行システム、装置、またはデバイスによって用いるかまたはこれと組み合わせて用いるプログラムを含有、ストア、伝達、伝搬、または転送することができるいずれかの有形の装置とすれば良い。
この媒体は、電子、磁気、光学、電磁気、赤外線、または半導体システム(または装置またはデバイス)または伝搬媒体とすることができる。コンピュータ読み取り可能媒体の例は、半導体または固体メモリ、磁気テープ、着脱可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、固定磁気ディスク、および光ディスクを含む。光ディスクの現在の例は、コンパクト・ディスク−リード・オンリ・メモリ(CD−ROM)、コンパクト・ディスク−読み取り/書き込み(CDR/W)およびDVDを含む。
プログラム・コードのストアあるいは実行またはその両方に適したデータ処理システムは、システム・バスを介してメモリ要素に直接的または間接的に結合された少なくとも1つのプロセッサを含む。メモリ要素は、プログラム・コードの実際の実行中に用いられるローカル・メモリ、バルク・ストレージ、および、少なくとも一部のプログラム・コードの一時的なストレージを提供するキャッシュ・メモリを含んで、実行中にバルク・ストレージからコードを検索する回数を減らすことができる。
システムには、直接的に、またはI/Oコントローラを介入させて、入出力すなわちI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス等を含むがこれらには限定されない)を結合することができる。
また、システムにネットワーク・アダプタを結合して、構内ネットワークまたは公衆ネットワークを介入させてデータ処理システムを他のデータ処理システムまたは遠隔プリンタまたはストレージ・デバイスに結合可能とすることも可能である。現在利用可能なタイプのネットワーク・アダプタの例として、モデム、ケーブル・モデム、およびイーサネット・カードが挙げられる。
例示的な実施形態の記載は、例示および説明の目的のために提示したものであり、網羅的であったり、本発明を開示する形態に限定したりすることは意図していない。当業者には、多くの変更および変形が明らかであろう。実施形態は、想定される具体的な用途に適した様々な変更を有する様々な実施形態の代わりに、例示的な実施形態の原理、実際の用途を最も適切に説明するため、および、当業者が例示的な実施形態を理解することができるように、選択し記載した。