(57)【要約】【課題】  コンピュータの使用環境の熱管理を実行するために装置および方法を提供する。【解決手段】  熱特性は、演算および／または処理部に関連する。コンポーネント１０２は、越えるべきでない熱閾値を有する。第１コンポーネント１０２による実行の間に熱閾値を越える場合、第１演算は一つのコンポーネント１０２から他のコンポーネント１０２へ転送されることができる。第２演算は他のコンポーネント１０２から一つのコンポーネント１０２へ転送されることができる。【選択図】  図１
2005285124.tif 000002
【特許請求の範囲】
【請求項１】
熱閾値を複数の処理デバイスと関連付け、
前記複数の処理デバイスの一つの第１処理デバイスは、演算の一つの第１演算を実行するように操作可能であるものであって、少なくともいくつかの前記処理デバイスに前記演算を提供し、
前記第１演算の実行中に前記第１処理デバイスがその熱閾値を越える場合、前記第１演算を前記複数の処理デバイスの一つの第２の処理デバイスへ転送することを特徴とする計算演算を実行する方法。
【請求項２】
前記複数の処理デバイスの一つの前記第２処理デバイスは、第２演算を実行するように操作可能であり、前記方法は、更に前記第２演算を前記第１演算に転送することを特徴とする請求項１に記載の方法。
【請求項３】
前記第１処理デバイスは、更に減じられたクロックスピードで前記第２演算を実行することを特徴とする請求項２に記載の方法。
【請求項４】
前記第２処理デバイスは、更に標準のクロックスピードで前記第１演算を実行することを特徴とする請求項３に記載の方法。
【請求項５】
熱閾値を複数の処理デバイスと関連づけ、
前記複数の処理デバイスの一つの第１の処理デバイスは、演算のうち第１演算を実行するように操作可能であるものであって、少なくともいくつかの前記処理デバイスに前記演算を提供し、
前記第１演算の実行中にその熱閾値を越す場合、前記第１演算をキューに転送することを特徴とする計算演算を実行する方法。
【請求項６】
キューは、第１キューまたは第２キューであって、
熱特性を前記第１演算と関連づけ、
前記第１演算を転送することは、前記熱特性によって前記第１演算を前記第１キューまたは前記第２キューに送ることを含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記選択された処理デバイスが前記第１演算を実行するために選ばれる場合、更に前記処理デバイスの選択された一つによって発生すると予想される熱量に基づいて前記熱特性を決定することを特徴とする請求項６に記載の方法。
【請求項８】
前記第２キューは複数の第２キューを備え、前記第１および第２キューの各々はそれぞれ関連する優先度を有し、前記第２演算は関連する実行優先度を有し、前記第１演算を転送することは、前記実行優先度および前記第１および第２キューの優先度によって、前記第１演算を前記第１キューの選択された一つまたは前記第２キューの選択された一つに送ることを更に含む場合であって、前記第１キューは複数の第１キューを備えることを特徴とする請求項６に記載の方法
【請求項９】
第１熱閾値と関連する、演算を実行するように操作可能な第１プロセッサと、
第２熱閾値と関連する、演算を実行するように操作可能な第２プロセッサと、を備え、
前記第１プロセッサの前記第１熱閾値を第１演算の実行中に越える場合、前記第１演算は前記第２プロセッサへ転送されることを特徴とする処理システム。
【請求項１０】
前記第１熱閾値が越されている間に前記第２プロセッサが第２演算を実行している場合、前記第２プロセッサは前記第２演算をキューまたは前記第１プロセッサに転送するように操作可能であるキューを更に備えることを特徴とする請求項９に記載の処理システム。
【請求項１１】
前記キューは、複数の優先度キューの一つであることを特徴とする請求項１０に記載の処理システム。
【請求項１２】
前記キューは、第１キューまたは第２キューであることを特徴とする請求項１０に記載の処理システム。
【請求項１３】
第１熱閾値と関連し、高優先度を有する第１演算を実行するように操作可能な第１プロセッサと、
第２熱閾値と関連し、低優先度を有する第２演算を実行するように操作可能な第２プロセッサと、を備え、
前記第１演算の実行中に前記第１プロセッサの第１熱閾値を越える場合、前記第１演算は前記第２プロセッサに転送され、前記第２演算は前記第１プロセッサに転送され、前記第１プロセッサは減じられたクロックスピードで前記第２演算を実行することを特徴とする処理システム。
【請求項１４】
あるクロックスピードで演算を実行するコンポーネントにおいて、
より低いまたはより高い実行の優先度を有する演算を提供し、
コンポーネントの温度を表す熱値を決定し、
前記熱値に従ってクロックスピードを減少させて低実行優先度を有する前記演算の一つを選択し、またはクロックスピードを維持または減少させて高実行優先度を有する前記演算の一つを選択し、
選択された演算を処理することを特徴とする処理操作方法。
【請求項１５】
操作の閾値を越す第１熱特性を有する第１演算と、
操作の閾値を越さない第２熱特性を有する第２演算と、
熱閾値を有し、前記第１および前記第２演算を実行するためのプロセッサと、を備え、
前記プロセッサの熱閾値を越えない場合、前記プロセッサは処理のための第１演算を選択し、前記プロセッサの熱閾値を越える場合、前記プロセッサは処理のための前記第２演算を選択することを特徴とする熱特性と関連する演算を処理するための処理システム。
【請求項１６】
前記熱閾値を越えない場合、そして、前記第１演算が利用可能でない場合、前記プロセッサは第２演算を実行するように操作可能であることを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記第２演算が利用可能でない場合、前記プロセッサは所定の期間の間休止するように操作可能であることを特徴とする請求項１６に記載のシステム。
【請求項１８】
各々の優先度キューは第１キューおよび第２キューを含み、前記第１キューは前記第１演算を格納し、前記第２キューは前記第２演算を格納する、複数の優先度キューを更に備えることを特徴とする請求項１５に記載のシステム。
【請求項１９】
前記優先度キューの一つの第１優先度キューは、高優先度キューであり、
前記優先度キューの一つの第２優先度キューは、中優先度キューであり、
前記優先度キューの一つの第３優先度キューは、低優先度キューであることを特徴とする請求項１８に記載のシステム。
【請求項２０】
第１演算を格納するメモリと、
処理デバイスの一つの第１処理デバイスは、処理要素、処理ユニットまたはサブ処理ユニットを有し、前記第１処理デバイスは熱閾値を有しメモリへアクセスする、前記第１演算を実行するように操作可能な複数の処理デバイスと、を備え、
前記第１処理デバイスの前記熱閾値を第１演算の実行中に越える場合、前記第１演算は前記処理デバイスの一つの第２処理デバイスに転送されることを特徴とする演算を処理するための処理装置。
【請求項２１】
前記処理デバイスの少なくとも一つは、処理要素であることを特徴とする請求項２０に記載の処理装置。
【請求項２２】
前記処理要素は、少なくとも一つのサブ処理ユニットを更に備えることを特徴とする請求項２１に記載の処理装置。
【請求項２３】
各々のサブ処理ユニットは、浮動小数点ユニット、整数ユニット、および前記浮動小数点ユニットおよび前記整数ユニットと関連するレジスタを含むことを特徴とする請求項２２に記載の処理装置。
【請求項２４】
前記サブ処理ユニットは、ローカル記憶部を更に含むことを特徴とする請求項２２または２３記載の処理装置。
【請求項２５】
前記処理要素は、処理ユニット、および前記処理ユニットと関連する複数のサブ処理ユニットを更に備えることを特徴とする請求項２１に記載の処理装置。
【請求項２６】
前記第１処理デバイスは前記サブ処理ユニットを含み、前記メモリは前記サブ処理ユニットにローカル記憶部を有することを特徴とする請求項２０に記載の処理装置。
【請求項２７】
前記ローカル記憶部は、演算を管理するキューを含み、第１処理デバイスの熱閾値を越えた時点で前記第２処理デバイスが前記第２演算を実行している場合、前記第２処理デバイスは前記第２演算を前記キューまたは前記第１処理デバイスに転送するように操作可能であることを特徴とする請求項２４または２６に記載の処理装置。
【請求項２８】
前記キューは、複数の優先度キューの一つであることを特徴とする請求項２７に記載の処理装置。
【請求項２９】
前記キューは、前記第１演算を管理するための第１キューおよび前記第２演算を管理するための第２キューを備えることを特徴とする請求項２７に記載の処理装置。
【請求項３０】
前記メモリは、前記第１演算を格納する第１メモリおよび前記第２演算を格納する第２メモリを有し、
前記処理デバイスの少なくともいくつかは、前記第１および前記第２のメモリにアクセスし、
前記第１処理デバイスの前記熱閾値を越えた時点で前記第２処理デバイスが前記第２演算を実行している場合、前記第２処理デバイスは、前記第２演算を前記第２メモリに、または前記第１処理デバイスに転送するように操作可能であることを特徴とする請求項２０から２９のいずれかに記載の処理装置。
【請求項３１】
前記第１演算および前記第２演算は、メモリにおいて同時に保存されることを特徴とする請求項２０に記載の処理装置。
【請求項３２】
前記第１演算および前記第２演算は、時分割方式の装置のメモリにおいて保存されることを特徴とする請求項２０に記載の処理装置。
【請求項３３】
第１および第２演算を格納する第１および第２メモリと、
処理デバイスの一つの第１処理デバイスは、処理要素、処理ユニットまたはサブ処理ユニットを有し、前記第１処理デバイスは、熱閾値を有し、前記第１および第２のメモリへアクセスする、前記第１および前記第２演算を実行するように操作可能な複数の処理デバイスと、を備え、
前記第１処理デバイスの前記熱閾値を前記第１演算の実行中に越える場合、前記第１演算は処理デバイスの一つの第２処理デバイスに転送されることを特徴とする演算を処理するための処理装置。
【請求項３４】
処理デバイスの一つの第１処理デバイスおよび第２処理デバイスの各々が処理要素を有する、演算を実行するように操作可能な複数の処理デバイスと、
処理ユニットまたはサブ処理ユニットと、第１熱閾値を有する前記第１処理デバイスと、第２熱閾値を有する前記第２処理デバイスと、第１優先度を有する前記演算の一つの第１演算と、第２優先度を有する前記演算の一つの第２演算と、を備え、
前記第１処理デバイスの前記第１熱閾値を前記第１演算の実行中に越える場合、前記第１演算が前記第２処理デバイスへ転送され、前記第２演算は前記第１処理デバイスへ転送され、前記第１処理デバイスは減じられたクロックスピードで前記第２演算を実行することを特徴とする演算を処理するための処理装置。
【請求項３５】
前記第１優先度は高優先度であり、そして、前記第２優先度は低優先度であることを特徴とする請求項３４に記載の処理装置。
【請求項３６】
条件を満たさない第１熱特性を有する第１演算と、
前記条件を満たす第２熱特性を有する第２演算と、
前記第１および前記第２演算を実行するプロセッサであって、処理要素、処理ユニットまたはサブ処理ユニットを有し、熱閾値を有するプロセッサと、を備え、
前記プロセッサの前記熱閾値を越えない場合、前記プロセッサは処理のための前記第１演算を選択し、前記プロセッサの前記熱閾値を越える場合、前記プロセッサは処理のための前記第２演算を選択することを特徴とする演算を処理するための処理装置。
【請求項３７】
前記熱閾値を越えない場合、そして、前記第１演算が利用可能でない場合、前記プロセッサは前記第２演算を獲得し実行するように操作可能であることを特徴とする請求項３６に記載の処理装置。
【請求項３８】
前記第２演算が利用可能でない場合、前記プロセッサは所定の期間の間休止するように操作可能であることを特徴とする請求項３６または３７に記載の処理装置。
【請求項３９】
優先度キューの各々は第１および第２キューを含み、前記第１キューは前記第１演算を格納し、および前記第２キューは前記第２演算を格納する、複数の優先度キューを更に備えることを特徴とする請求項３６から３８のいずれかに記載の処理装置。
【請求項４０】
前記優先度キューのうち、
第１優先度キューは、高優先度キューであり、
第２優先度キューは、中優先度キューであり、
第３優先度キューは、低優先度キューであることを特徴とする請求項３９に記載の処理装置。
【請求項４１】
前記プロセッサはサブ処理ユニットを備え、前記サブ処理ユニットは、浮動小数点ユニット、整数ユニット、および前記浮動小数点ユニットおよび前記整数ユニットと関連するレジスタを含むことを特徴とする請求項３６から４０のいずれかに記載の処理装置。
【請求項４２】
前記サブ処理ユニットは、ローカル記憶部を更に含むことを特徴とする請求項４１に記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理環境において熱管理を実行し、および特に命令およびタスクを効果的に割り当てることにより、熱ホットスポットを減少させる方法と装置に関する。
【背景技術】
【０００２】
コンピュータシステムはよりますます複雑になっている。そして、同時に、コンポーネントのサイズを縮小して、高密度にコンピュータチップ上のデバイスを実装しており、より高処理速度を達成している。これらの長所は、多くのアプリケーション、例えばリアルタイムでマルチメディアのゲームおよび他の計算集約型のアプリケーションの成功にきわめて重大である。コンピュータシステムは、処理効率を上げるために、しばしば並行に（または協調して）作動する多数のプロセッサを組み込む。
【０００３】
コンポーネントおよび素子が演算、例えば命令およびタスクを実行する時に、熱がよく発生する。過剰な熱は、逆に電子構成部品、例えばコンピュータチップの処理能力に影響を与え得る。例えば、チップの一つの領域が計算において集中的なタスクを実行している場合、その領域はかなり加熱する可能性があり、また他のチップと関連してホットスポットを形成する可能性がある。ホットスポットがある熱閾値を越える場合、コンポーネントの処理能力またはチップのその領域の素子は性能が低下する可能性があり、または、チップが損害を受けるかまたは破壊される可能性すらある。
【０００４】
過去において、種々の解決手段が加熱問題を解決するために採用されている。機械的解決手段の一つは、ヒートシンクをコンピュータチップに取り付けることである。しかしながら、ヒートシンクは大きく、単にチップから、そして、チップを囲んでいるスペース領域に熱を放出するのに役立ち得るにすぎない。チップがエンクロージャ、例えばパソコンキャビネットに格納されるときに、この熱はファンの使用などによって除去されなければならないが、それ自身スペースをとり、不要なノイズを発生させる。
【０００５】
ほかにも、より複雑な温度管理手段も存在する。例えば、ある解決手段では、温度センサが重要な回路要素、例えばプロセッサに配置されることができ、そして、ファンが関連するシステムエンクロージャに載置されることができる。温度センサが特定の温度に達したことを示すときに、ファンがオンになる。そして、プロセッサを冷却するためのシステムエンクロージャで、エアフローを増加させる。あるいは、温度センサが所定の温度を越えることを示すときに、処理環境にシャットダウンをするよう警報が発せられることもできる。このセンサは、しばしばホットスポットから少し離れて配置される。残念なことに、このフィードバック方法は、オーバーヒートを防止するにはあまりに遅く、または信頼性なく機能する可能性がある。
【０００６】
温度管理を行うための更なる試みでは、ソフトウェアの使用を採用する。例えば、ある技術では、演算間で冷却するより多くの時間をもつように、コンポーネントのクロックを減速する。ある従来のシステムは、命令キャッシュから抑制機構を使用する命令バッファまで、命令取得率を制御する。取得率を減らすことは、熱の発生を低減する。更により抜本的な方法は、プロセッサをシャットダウンして、それを冷やすことである。残念なことに、これらの技術の全てコンポーネントの演算速度に直接影響し、リアルタイム処理要求に不利益となる可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、追加的なハードウェアまたは非効率的なソフトウェアルーチンを避けると共に、温度管理を達成するための新規な方法と装置の必要性が本技術においてある。
【課題を解決するための手段】
【０００８】
本発明の実施の形態によって、演算の実行のために、方法とシステムが提供される。好ましい方法において、熱閾値は、複数の処理デバイスに関連する。演算は、少なくともいくつかの処理デバイスに提供される。第１デバイスは、第１演算を実行することができる。第１演算を実行する間に、第１処理デバイスがその熱閾値を越す場合、第１演算は第２処理デバイスへ転送される。
【０００９】
実施の形態において、第２処理デバイスは、第２演算を実行するように操作可能である。ここで、加えて、本方法は第２演算を第１処理デバイスへ転送することを含む。この場合、本方法は、好ましくは、減じられたクロックスピードで第２演算を実行する第１処理デバイスを更に備える。
【００１０】
計算演算を実行する好ましい他の方法において、複数の処理デバイスは、熱閾値と関連する。演算は、少なくともいくつかの処理デバイスに提供される。第１処理デバイスは、第１演算を実行するように操作可能である。第１処理デバイスが第１演算の実行中にその熱閾値を越す場合、第１演算はキューへ転送される。
【００１１】
実施の形態において、キューはホットキューまたはクールキューである。方法は、熱特性を第１演算と関連づけること、および、熱特性によって、ホットキューまたはクールキューに第１演算を送ることを含む、第１演算を転送することを更に含む。この場合、本方法は、そのデバイスが第１演算を実行するために選択される場合、選択された処理デバイスによって発生すると予想される熱量に基づいた熱特性を決定することを含むことができる。あるいは、ホットキューは複数のホットキューを備え、クールキューは複数のクールキューを備え、各々がそれらに関連する優先度を有する。第１演算は、それと関連する実行優先度を有する。この場合、第１演算を転送することは、実行優先度、およびホットおよびクールキューの優先度によって、ホットキューの選択された一つ、またはクールキューの選択された一つへ第１演算を送ることを更に含む。
【００１２】
本発明の態様にしたがって、好ましい処理システムは、第１および第２プロセッサを含む。プロセッサは、演算を実行することができる。各々のプロセッサは、熱閾値を有する。第１プロセッサが第１演算の実行中にその熱閾値を越す場合、第１演算は第２プロセッサへ転送される。
【００１３】
処理システムは、好ましくはキューを含む。第１プロセッサの熱閾値を越える間に、第２プロセッサが第２演算を実行している場合、第２プロセッサは、第２演算をキューにまたは第１プロセッサに転送するように操作可能である。キューは、複数の優先度キューの一つであってもよい。あるいは、キューはホットキューまたはクールキューであってもよい。
【００１４】
他の好ましい処理システムは、第１および第２プロセッサを含む。各々のプロセッサは、熱閾値を有する。第１および第２プロセッサは、それぞれ、第１および第２演算を実行することができる。第１演算は高優先度を有し、そして、第２演算は低優先度を有する。第１プロセッサが第１演算の実行中にその熱閾値を越す場合、第１演算は第２プロセッサへ転送され、そして、第２演算は第１プロセッサへ転送される。第１プロセッサは、減じられたクロックスピードで第２演算を実行する。
【００１５】
本発明の態様に従う好ましいさらに別の方法において、コンポーネントの処理操作の方法が提供される。コンポーネントは、あるクロックスピードで演算を実行する。本方法は、より低いまたはより高い実行の優先度を有する演算を提供することを含む。コンポーネントの温度を表す熱値は、決定される。それから、熱値によって、クロックスピードは減じられ、そして、より低い実行の優先度を有する演算の一つが選択される。または、クロックスピードは維持されるかまたは高められ、そして、より高い実行の優先度を有する演算の一つが選択される。そして、選択された演算は、処理される。
【００１６】
本発明の他の実施の形態にしたがって、処理システムは提供される。処理システムは、熱特性と関連する演算を処理することのためにある。システムは、第１演算、第２演算およびプロセッサを含む。第１演算は、操作の閾値を越す熱特性を有する。第２演算は、操作の閾値を越さない熱特性を有する。プロセッサは、演算を実行することができる。プロセッサは、熱閾値を有する。プロセッサの熱閾値を越えない場合、プロセッサは処理のための第１演算を選択する。プロセッサの熱閾値を越える場合、プロセッサは処理のための第２演算を選択する。
【００１７】
熱閾値を越えない場合、そして、第１演算が利用可能でない場合、プロセッサは、好ましくは、第２演算を得て、実行するように操作可能である。この場合、第２演算が利用可能でない場合、プロセッサは、例えば１以上のクロックサイクルなど所定の期間の間、休止することができる。他の変形例において、システムは複数の優先度キューを含むことができる。各々の優先度キューは、第１演算を格納するための第１キュー、および第２演算を格納するための第２キューを含む。望ましくは、第１優先度キューは、高優先度キューであり、第２優先度キューは、中優先度キューであり、そして、第３優先度キューは、低優先度キューである。
【００１８】
本発明の態様にしたがって、演算を処理するための処理装置が提供される。処理装置は、メモリおよび複数の処理デバイスから成る。メモリは、第１演算を格納する。処理デバイスは、第１演算を実行することができる。第１処理デバイスは、処理要素、処理ユニットまたはサブ処理ユニットを有することができる。第１処理デバイスは熱閾値を有し、およびメモリへアクセスする。第１演算の実行中に熱閾値を越える場合、その演算は第２処理デバイスへ転送される。
【００１９】
処理デバイスの少なくともいくつかは、処理要素であってもよい。この場合、いくつかの処理要素は、少なくとも一つのサブ処理ユニットを更に備えることができる。ここで、各々のサブ処理ユニットは、浮動小数点ユニット、整数ユニットおよび浮動小数点ユニットおよび整数ユニットと関連するレジスタを含むことができる。サブ処理ユニットは、任意に各々ローカル記憶部を含むことができる。
【００２０】
あるいは、処理要素の少なくともいくつかは、処理ユニット、および処理ユニットと関連する複数のサブ処理ユニットを更に備えることができる。この場合、各々のサブ処理ユニットは、ローカル記憶部を更に含むことができる。
【００２１】
実施の形態において、第１処理デバイスはサブ処理ユニットを含み、そして、メモリはサブ処理ユニットのローカル記憶部を含む。好ましくは、ローカル記憶部は演算を管理するキューを含む。第１処理デバイスの熱閾値を越える間に、第２処理デバイスが第２演算を実行している場合、第２処理デバイスは、第２演算をキューにまたは第１処理デバイスに転送するように操作可能である。キューは、複数の優先度キューの一つであってもよい。あるいは、キューは、第１演算を管理するための第１キュー、および第２演算を管理するための第２キューを有することができる。
【００２２】
他の例では、メモリは、第１演算を格納する第１メモリ、および第２演算を格納する第２メモリを有することができる。この場合、処理デバイスの少なくともいくつかは、第１および第２メモリにアクセスする。第１処理デバイスの熱閾値を越える間に、第２処理デバイスが第２演算を実行している場合、第２処理デバイスは、第２演算を第２メモリにまたは第１処理デバイスに転送することができる。
【００２３】
更なる例において、第１演算および第２演算は、同時にメモリにおいて、または時分割方式の装置において、維持されることができる。
【００２４】
本発明の更なる態様にしたがって、演算を処理することのため処理装置が提供される。第１および第２メモリは、第１および第２演算を格納する。複数の処理デバイスは、第１および第２演算を実行するように操作可能である。第１処理デバイスは、処理要素、処理ユニットまたはサブ処理ユニットを含むことができる。第１および第２メモリへのアクセスと同様に、第１処理ユニットは、熱閾値を有する。第１演算の実行中に熱閾値を越える場合、第１演算は第２処理デバイスへ転送される。
【００２５】
追加的な本発明の態様にしたがって、演算を処理するために処理装置が提供される。処理デバイスは、演算を実行するように操作可能である。第１および第２処理デバイスは各々、処理要素、処理ユニット、またはサブ処理ユニットを含むことができる。第１および第２処理デバイスは、各々熱閾値を有する。第１演算は第１優先度を有し、そして、第２演算は第２優先度を有する。第１演算の実行中に第１処理デバイスの熱閾値を越える場合、その演算は第２処理デバイスへ転送される。第２演算は、第１処理デバイスへ転送される。第１処理デバイスは、減じられたクロックスピードで第２演算を実行する。好ましくは、第１優先度は高優先度であり、そして、第２優先度は低優先度である。
【００２６】
本発明の更なる態様にしたがって、演算を処理するために処理装置が提供される。第１演算は、条件を満たさない熱特性を有する。第２演算は、条件を満たす熱特性を有する。プロセッサは、両方の演算を実行することができる。プロセッサは、処理要素、処理ユニットまたはサブ処理ユニットを有することができる。プロセッサの熱閾値を越えない場合、プロセッサは処理のための第１演算を選択する。熱閾値を越える場合、プロセッサは処理のための第２演算を選択する。
【００２７】
熱閾値を越えない場合、そして、第１演算が利用可能でない場合、プロセッサは第２演算を得て、実行するように操作可能である。第２演算が利用可能でない場合、プロセッサは所定の期間の間休止することができる。
【００２８】
装置は、任意に複数の優先度キューを含む。各々の優先度キューは、第１キューおよび第２キューを含む。第１キューは第１演算を格納するためにあり、そして、第２キューは第２演算を格納するためにある。好ましくは、第１優先度キューは、高優先度キューであり、第２優先度キューは、中優先度キューであり、そして、第３優先度キューは、低優先度キューである。
【００２９】
実施の形態において、プロセッサはサブ処理ユニットから成る。そして、それは、浮動小数点ユニット、整数ユニット、そして、浮動小数点ユニットおよび整数ユニットと関連するレジスタを含む。好ましくは、サブ処理ユニットも、ローカル記憶部を含む。
【発明を実施するための最良の形態】
【００３０】
図面において示される本発明の好ましい実施例を記載することにおいて、特定の用語が明確性のため使われる。しかしながら、本発明は選択される詳細事項に限定されることを意図されない。そして、各々の詳細事項は、類似の目的を達成するための類似の方法において実行する、すべての技術的な同義語を含むことは理解される。
【００３１】
現在図３Ａに参照がなされ、図３Ａは、本発明の態様にしたがって採用され得る、基本的な処理モジュールまたは処理要素３００のブロック図である。この図に示すように、処理要素（ＰＥ）３００は、好ましくは、Ｉ／Ｏインタフェース３０２、処理ユニット（ＰＵ）３０４、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）３０６、複数のサブ処理ユニット（ＳＰＵｓ）３０８、すなわち、複数のサブ処理ユニット３０８ａ−３０８ｄを含む 。４つのサブ処理ユニット３０８ａ−ｄが示されているが、処理要素３００はいかなる数のこのようなデバイスを含むことができる。ローカル（または内部）処理要素バス３２０は、処理ユニット３０４、複数のサブ処理ユニット３０８、Ｉ／Ｏインタフェース３０２、ダイレクトメモリアクセスコントローラ３０６およびメモリインタフェース３１０の中のデータおよびアプリケーションを送信する。ローカル処理要素バス３２０は、例えば、従来のアーキテクチャを有することができ、またはパケットスイッチネットワークとして提供される。パケットスイッチネットワークとしての機器は、より多くのハードウェアを必要とする一方、利用できるバンド幅を増やす。
【００３２】
ディジタル論理の機器を提供するさまざまな方法を使って処理要素３００が作成されることができる。しかしながら、処理要素３００は、好ましくはシリコン基板上のＣＭＯＳを使用している単一の集積回路として作成される。処理要素３００は、高バンド幅メモリ接続３２２を通じてメモリ３３０と密接に関連する。メモリ３３０は、望ましくは処理要素３００のためのメインメモリとして機能する。メモリ３３０は好ましくはダイナミックランダムアクセスメモリ（ＤＲＡＭ）であるが、メモリ３３０は、例えばスタティックＲＡＭ（ＳＲＡＭ）、他の手段、例えば、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光メモリ、ホログラフィックメモリ、その他などを使って提供されてもよい。ダイレクトメモリアクセスコントローラ３０６およびメモリインタフェース３１０は、メモリ３３０および複数のサブ処理ユニット３０８および処理要素３００の処理ユニット３０４間のデータ転送を容易にする。
【００３３】
処理ユニット３０４は、例えば、データおよびアプリケーションの単独処理ができる標準のプロセッサでもよい。演算中において、処理ユニット３０４は、複数のサブ処理ユニット３０８によってデータおよびアプリケーションの処理をスケジューリングし、編成する。複数のサブ処理ユニット３０８は、好ましくは単命令複データ（ＳＩＭＤ）プロセッサである。処理ユニット３０４の制御のもと、複数のサブ処理ユニット３０８は、並行かつ独立した方法においてデータおよびアプリケーションの処理を実行することができる。ダイレクトメモリアクセスコントローラ３０６は、共有メモリ３３０に格納されるデータおよびアプリケーションへのアクセスを、処理ユニット３０４および複数のサブ処理ユニット３０８によって制御する。好ましくは、処理要素３００のような多数の処理要素は、高い処理能力を提供するために、ともに接続され、パッケージされてもよく、また、相互に論理的に関連付けられてもよい。
【００３４】
図３Ｂは、本発明の態様による、演算されることができる多数の処理要素３５０（処理要素１、処理要素２、処理要素３および処理要素４）を備える処理アーキテクチャを示す。好ましくは、処理要素３５０は単一のチップ上にある。複数の処理要素３５０は、図３Ａの処理要素３００に関して上記にて論じた処理ユニット、および／または複数のサブ処理ユニットのようにサブシステムを含んでいてもよく、または含んでいなくてもよい。必要な処理のタイプによって、複数の処理要素３５０は同じタイプでもよく、または異なるタイプでもよい。例えば、処理要素３５０は、一般的なマイクロプロセッサ、ディジタル信号プロセッサ、グラフィックプロセッサ、その他であってもよい。
【００３５】
複数の処理要素３５０は、好ましくは共有バス３５２に結合される。メモリコントローラまたはダイレクトメモリアクセスコントローラ３５６は、メモリバス３５４を通じて共有バス３５２に接続されてもよい。ダイレクトメモリアクセスコントローラ３５６は、メモリ３５８に接続し、メモリ３５８は、メモリ３３０に関して上記にて論じたタイプの一つでもよいＩ／Ｏコントローラ３６２もまた、Ｉ／Ｏバス３６０を通じて共有バス３５２に接続されてもよい。Ｉ／Ｏコントローラ３６２は、一つ以上の入出力装置３６、例えばフレームバッファ、ディスク駆動装置、その他に接続してもよい。上記の処理モジュールおよびアーキテクチャは単に典型的なだけであると理解されるべきであり、そして、さまざまな本発明の態様は、２００１年３月２２日に出願され、「ブロードバンドネットワークのコンピュータアーキテクチャのためのメモリ保護システムおよび方法」という名称の米国特許番号６,５２６,４９１、および２００３年２月２５日に出願され、「ブロードバンドネットワークのためのコンピュータアーキテクチャおよびソフトウェアセル」という名称の米出願番号第０９/８１６００４号において開示されるタイプのマルチプロセッサシステムを含むが、これに限られない。これにより、この中での参照により明確に具体化される。
【００３６】
図４は、本発明の態様による、採用され得るサブ処理ユニット４００の構造および機能を示す。サブ処理ユニット４００は、好ましくはローカル記憶部４０２、レジスタ４０４、一つ以上の浮動小数点ユニット４０６および一つ以上の整数ユニット４０８を含む。サブ処理ユニット４００のコンポーネントは、同様に後述するようなサブコンポーネントを備える。必要とされる処理能力によって、より多くのまたはより少ない数の浮動小数点ユニット（ＦＰＵｓ）４０６および整数ユニット（ＩＵｓ）４０８が採用されてもよい。好ましい実施の形態においては、ローカル記憶部４０２は少なくとも１２８キロバイトの記憶部を含み、そして、レジスタ４０４の性能は１２８×１２８ビットである。浮動小数点ユニット４０６は、好ましくは１秒につき少なくとも３２０億の浮動小数点操作（３２ギガフロップス）の速度で操作する、そして、整数ユニット４０８は、好ましくは１秒につき少なくとも３２０億の操作（３２ギガオプス）の速度で操作する。
【００３７】
ローカル記憶部４０２は、好ましくはキャッシュメモリでない。サブ処理ユニット４００のためのキャッシュ整合性サポートは、不必要である。その代わりに、ローカル記憶部４０２が好ましくはＳＲＡＭとして作成される。処理ユニット２０４は、処理ユニット２０４によって開始されるダイレクトメモリアクセスのキャッシュ整合性サポートを要求することができる。しかしながら、キャッシュ整合性サポートは、サブ処理ユニット４００によって開始されるダイレクトメモリアクセスのために、または外部素子へまたは外部素子からの接続ために要求されない。
【００３８】
サブ処理ユニット４００はバスインターフェース（Ｂｕｓ  Ｉ／Ｆ）４１２を通じてサブ処理ユニット４００へおよびサブ処理ユニット４００からアプリケーションおよびデータを送信するバス４１０を更に含む。好ましい実施の形態においては、バス４１０は１,０２４ビット長である。サブ処理ユニット４００は、内部バス４１４、４１６および４１８を更に含む。好ましい実施の形態においては、バス４１４は２５６ビットの幅を有し、ローカル記憶部４０２およびレジスタ４０４の間の通信を提供する。バス４１６および４１８は、レジスタ４０４、浮動小数点ユニット４０６、レジスタ４０４、および整数ユニット４０８の間に、それぞれ通信を提供する。好ましい実施の形態において、レジスタ４０４から浮動小数点または整数ユニットへのバス４１６および４１８の幅は３８４ビットであり、そして、浮動小数点または整数ユニットからレジスタ４０４へのバス４１６および４１８の幅は１２８ビットである。レジスタ４０４から浮動小数点ユニット４０６および整数ユニット４０８へのバスの大きな幅は、処理の間、レジスタ４０４から大きなデータフローに適応する。一例では、最高３つのワードが、各々の計算に必要とされる。しかしながら、各々の計算の結果は、通常一つのワードだけである。
【００３９】
現在図１に参照がなされ、この図１は基板１００中または基板１００上に形成されるコンポーネント１０２を示す。基板１００およびコンポーネント１０２は、コンピュータチップの一部または全体を含むことができる。コンポーネント１０２は、論理デバイスまたは回路の他のコンポーネントであってもよい。基板１００の領域の一つ以上のコンポーネント１０２は、ユニット１０４として共に関連付けられることができる。ユニット１０４およびユニット１０４のグループ１０６もまた、例えば処理要素３００、処理ユニット３０４、複数のサブ処理ユニット３０８、処理要素３５０または複コンポーネントそれ自体を形成するために相互に関連づけられることができる。例えば、ユニットのグループ１０６は、グループ１０６内のサブ処理ユニット４００およびユニット１０４は、ローカル記憶部４０２、レジスタ４０４、浮動小数点ユニット４０６、整数ユニット４０８およびバスインターフェース４１２を含むことができる。各々のユニット１０４は、同様に、例えばＤＲＡＭメモリセル、論理ゲート、バッファ等ような、他のユニット１０４およびコンポーネント１０２も含むことができる。コンポーネント１０２、ユニット１０４、およびグループ１０６は様々なレベルの複雑さを例証するのに使用されているが、より一般に、「コンポーネント」という用語は、処理要素３００または処理要素３５０までの最も基本的な要素（例えばトランジスタおよびコンデンサ）および全体のコンピュータチップ自体から、すべてのレベルでデバイスについて言及するのにもまた使用される。典型的には、コンポーネントは基板１００上の相補型金属酸化物半導体（ＣＭＯＳ）を採用している集積回路として作成される。基板１００は、好ましくはシリコン基板である。基板１００のために選択可能な材料はヒ化ガリウム、ヒ化ガリウムアルミニウム物、およびその他、多種多様なドーパントを採用したいわゆるIII−Ｂ合成物を含むが、これに限定されるものではない。コンポーネント１０２は、また、例えば高速単一磁束量子（ＲＳＦＱ）論理などの超電導材料を使って提供されることができる。
【００４０】
コンポーネントが処理命令またはタスク（例えば一連の命令）のような演算を実行するにしたがって、それらはしばしば熱を発生させる。ここで使用しているように、「演算」または「タスク」という表現は、実行される活動に関連し、命令、タスクおよび一回または多数のステップのプログラムを含むが、これに限定されるものではない。
【００４１】
本発明の一態様において、コンポーネントによって実行される演算は、熱特性の値がその演算を実行するときに構造部分によって発生することが予想される熱量に関連するような熱特性と関連付けられることができる。好ましくは、熱特性はまた、適切なときに基礎が形成される。例えば、特性の値は、一定の期間にわたって発生された熱量を表してもよい。
【００４２】
熱特性は、測定されることができるか推定されることができる。例えば、温度計または他の温度検出装置が、特定の演算をしているときのユニットの温度を計測するために実際に使用されることができる。
【００４３】
熱特性は、好ましくはコンポーネントの電力消費に基づいて推定される。例えば、いくつかのコンポーネントは、演算するための電力をより多く必要としてもよく、そして高い熱特性を持ってもよい。他のコンポーネントは同じ電力消費を有することができるが、共により高密度にパッケージされ、それらはかなり離れて間隔を置かれるコンポーネントより多くの熱を発生させる傾向がある。この点に関しては、熱特性は、両方の要因に基づいて推定されることができ、その場合、熱属性は、コンポーネントまたはコンポーネントのグループの電力密度に基づく。このように、いくつかのケースでは、熱特性は、コンポーネントが演算を実行するにしたがって発生すると予想される熱、一定の期間にわたって発生された大量の熱、全体の消費電力、コンポーネントの電力密度、コンポーネントの関連グループの電力密度、を反映することができる。チップの効果的な温度管理を達成するために、各々のコンポーネントに電力消費をスケジューリングすることが望まれてもよい。コンポーネントの電力消費は、チップの開発中に推定されることができる。例えば、チップ、サブシステムおよび／または個別コンポーネントの回路シミュレーションが実行されてもよい。
【００４４】
好ましくは、熱特性は更に特定のコンポーネントと関連している。例えば、整数加算演算のような演算が整数ユニット４０８だけを含んでいる場合、熱特性は整数ユニット４０８と特に関連付けられることができる。同様に、浮動小数点演算の熱特性は、浮動小数点ユニット４０６と特に関連付けられていてもよい。他の演算は、ローカル記憶部４０２からレジスタ４０４へデータを移動するような、１セットのコンポーネントを含むことができる。さらに他の演算は、すべてのコンポーネントを含んでも良く、いずれか特定のコンポーネントのセットに原因があるとすることが困難でもよい。例えば、三次元図を描写することは、サブ処理ユニット４００の全てのコンポーネントに従事させることができ、その場合、熱特性はサブ処理ユニット４００の全てのコンポーネントに適用される。あるいは、演算を実行するときに、どれくらいの熱が個別コンポーネントによって発生するかを予測するのが困難でもよく、その場合、演算の熱特性は、コンポーネントのグループに全体的に割り当てられても良い。以下のテーブルは、演算、コンポーネントおよび熱特性のサンプルセットを示す。
【００４５】
【表１】
2005285124.tif 000003
【００４６】
好ましい実施の形態において、与えられたコンポーネント（またはコンポーネントのセット）の熱特性は、次のように算出されることができる。
【００４７】
ＴＡ＝ｋ＊（Ｐ／Ｓ）
ＴＡ（熱特性）は、コンポーネントの電力密度または電力消費（Ｐ）が、サイズまたはスペース（Ｓ）で割られ、温度の推定に使われる因数または定数（ｋ）がかけられたものと等しい。
【００４８】
本発明の一態様による、プログラムコンパイラは、コンポーネントがオーバーヒートすることを防止するのことに役立てるために熱特性を使用する。コンパイラは、ソフトウェア、ファームウェア、ハードウェアまたは上記の組合せにおいて提供されることができる。それは、処理要素（例えば処理要素３００または処理要素３５０）かそのサブコンポーネントと関連して（例えば、組み込まれて）もよい。図１１は、本発明の態様によるコンパイラ機能を示す。本技術で公知であるように、コンパイラはソースコードを受信し、コンピュータシステム上で動作することができるオブジェクトコードを生成する。本発明の態様によれば、コンパイラは、演算および／またはコンポーネントに関する熱特性と同様にソースコードを受信する。コンパイラは、好ましくは熱特性に基づいてオブジェクトコードを生成する。コンパイラが、命令の数を計数することによってコンパイルを管理するときに、コンパイラによって編集されたオブジェクトコードの熱特性は不変的に推定される。強化された熱特性判定は、好ましくは、命令の動的な実行を計数することができ、各々のコンポーネントの演算周波数を伝えることができるパフォーマンスモニタである、「プロフィーラ」を使用してなされる。プロフィーラは、コンパイラにより正確な温度評価を提供することができ、それは同様に、熱的に最適化されたオブジェクトコード生成につながる。
【００４９】
図２Ａ−Ｂは、コンパイラまたは他の命令スケジューラが、どのように処理の低下またはコンポーネントへの損害を防止するように演算を管理することができるかについて示す。図の目的のため、熱閾値（Ｔｍａｘ）は、越えることが望ましくない温度を表すものとされる。三角形部分Ａ、ＢおよびＣは、コンポーネントによって実行される命令を表す。例えば、セグメントＡおよびＢは、例えば、計算上、非常に大量の熱を発生する集中的な命令またはタスクを表し、一方、セグメントＣは、例えば、計算上、集中的でなく、またＡまたはＢのいずれかと同じ熱を発生しない。より詳細には、タスクＡ、ＢおよびＣが全体的な算出の一部であると仮定すると、（２＊３）＋（４＊５）＋（６＋７）において、タスクＡは（２＊３）を表し、タスクＢは（４＊５）を表し、そしてタスクＣは（６＋７）を表す。図２Ａに示すように、タスクがＡ、ＢおよびＣの命令において実行されるときに、温度はＴｍａｘを越える可能性がある。この際、ＡおよびＢが連続的に実行されるので、熱閾値Ｔｍａｘは突破される。
【００５０】
コンパイラが確実な命令を命じる方法に関して、しばしばコンパイラが指示を有していることは、公知技術である。本発明の好ましい実施の形態にしたがって、コンパイラは演算の熱特性に基づいて、選択的にスケジュールを再び命令することができる。好ましくは、コンパイラはまず最初に、演算Ａ、ＢまたはＣのいずれかに、それと関連する熱特性があるかどうか決定する。その場合は、コンパイラは選択的に、その演算を、Ｔｍａｘを越えることを防止する命令を使用するオブジェクトコードに編集することができる。上記の実施の形態において、コンパイラは、方程式が最後の結果を変えずに、計算される命令を変えることができる。例えば、それはＡ、ＣおよびＢ.の順序に、演算をスケジューリングすることができる。したがって、図２Ｂによって見られるように、命令の順序が変わるときに、温度はＴｍａｘを越えない。
【００５１】
熱閾値Ｔｍａｘが必ずしもフェール温度であるというわけではない点に注意する。その代わりに、Ｔｍａｘは、例えば、評価される実施パラメータに基づいて選択された設計基準であってもよい。
【００５２】
さらに、演算を再び命令するときに、コンパイラは、好ましくは計算をするコンポーネントの経過を追う。例えば、サブ処理ユニット他の一部（例えば浮動小数点ユニット４０６）が冷めたままである一方、一連の演算はサブ処理ユニット４００の一部（例えば浮動小数点ユニット４０６）をオーバーヒートさせることができる。それらがサブ処理ユニットのさまざまなコンポーネントに均一に分配されるように、コンパイラは、好ましくは演算をスケジューリングすることを試みることによってこの課題に対処する。コンパイラがこれを行い得る方法は、これらが熱特性を使ってプログラムの演算を実行するときに、コンポーネントの温度の経過を追い、シミュレーションすることである。例えば、コンポーネントＸは、クロックサイクル毎に２熱特性の割合においては、冷えたとみなされることができ、それがオーバーヒートする前に８熱特性の閾値を有する。そのコンポーネントと関連する演算が、サイクル毎に５ポイントの熱特性を有する場合、その演算が続けて３回実行された場合は、コンポーネントはオーバーヒートしたとみなされる（第１サイクルの後の５−２ポイントは、３の現在の熱インデックスの結果となる）。第２サイクルの後の５−２ポイントは、６の現在の総熱指数のためさらに３ポイントを加える。第２サイクルの後の５−２ポイントは、９の現在の総熱指数のためさらに３ポイントを加える。コンポーネントＸがこのようなスケジューリングでオーバーヒートするかもしれないと検知された場合、コンパイラは、コンポーネントＸが非稼働で冷たいままの間、別のコンポーネントにより実行される演算をスケジューリングするよう試みる。
【００５３】
あるいは、コンパイラは、異なる演算であって、熱特性がコンポーネントが冷えると予想される速度よりも低い演算を選択することを試みることができる。例えば、コンパイラが、コンポーネントＸが演算の現在のスケジュールでオーバーヒートする可能性があると決定する場合、それは、５の熱特性を持つ演算の間において１（それで、1サイクルあたり２熱属性の割合で冷えるなら、コンポーネントは冷えるであろう）の熱特性を持つ演算を点在させるよう試みることができる。
【００５４】
その程度までコンポーネントは他のコンポーネントによって包含され、コンパイラは更により大きなコンポーネントの熱特性を、そのサブコンポーネントに、または、サブコンポーネントから親コンポーネントに割り当ててもよい。例えば、図１０Ａに示すように、個別コンポーネントが同時に２、３、２および７の熱特性を有する演算を実行している場合、それらの演算の全てのためのサブ処理ユニットの熱特性は１４であるとみなされることができる。他方、全てのサブ処理ユニット４００に起因している熱特性は、個別コンポーネントに割り当てられることができる。図１０Ｂに示すように、三次元図の熱特性が１２で全てのサブ処理ユニットに起因している場合、その値はサブ処理ユニット４００の範囲内で均一にコンポーネントに割り当てられることができる。容器関連性、論理的機能および物理的近接によって関連するコンポーネント間の配分を含む、配分における他のバリエーションは可能である。
【００５５】
さまざまなコンポーネントの熱値が、個別コンポーネントの即時の演算を反映するだけでなく、時間とともに累積的なものでもよく、コンポーネントのセットのために集計されることができることが分かる。これらの要因を考慮し、コンパイラは効果的に、熱閾値Ｔｍａｘを避けるよう演算をスケジューリングすることができる。
【００５６】
好ましくは、冷却特性は、さまざまなコンポーネントを含むコンピュータチップと関連する。冷却特性は、コンピュータチップの冷却装置の特定の特徴に依存する。例えば、冷却特性は、好ましくは、もしあればチップパッケージおよび冷却器（例えばヒートシンクまたはファン）に依存する。冷却システム冷却器（例えば、常に、設定された回転速度でファンを作動して）のための一つの状態を有している場合、冷却特性が確定される。例えばファンの回転速度を変えることによって、冷却システムの状態が変えられることができる場合、冷却特性は好ましくは動的であり、冷却システムが冷却器の演算状態を変えるときに、決定され、または更新されてもよい。実施の形態において、コンパイラは、冷却器の典型的な演算状態に基づいて算出される確定された冷却特性を使用する。特定のコンポーネントに属する演算の密度を算出するときに、コンパイラは冷却特性を使用する。より好ましくは、コンパイラもまたチップパッケージの熱放出能力の要素として入れる。他の実施の形態において、コンパイラまたはプリフィーラは、コンパイラがオブジェクトコード生成を実行することに役立てるため、動的な冷却特性を採用する。下のテーブルは、熱および冷却特性に基づいて、与えられた整数ユニット（ＩＵ）４０８により、および与えられたローカル記憶部（ＬＳ）４０２により、処理される整数演算の典型的なスケジュールを示す。
【００５７】
【表２】
2005285124.tif 000004
【００５８】
上記命令セットのため、整数ユニット４０８の熱特性が３であると仮定すると、チップの冷却特性は１であり、そして、整数ユニット４０８の熱閾値は１０である。最も左の欄は命令番号を表し、第２欄はどのコンポーネントがその命令を扱うかを表し、そして、テーブルの右側上の２つの欄は、命令を扱った後に発生する熱またはコンポーネントの温度を示す。例えば、命令１はローカル記憶部によって処理されるかまたは実施され、２の熱値に結果となり、その一方で、整数ユニットはゼロのままとなる。命令２は整数ユニットによって作動され、そしてその後、整数ユニットは３の熱値を有し、そして、ローカル記憶部は１の熱値まで冷めている。この処理は命令５まで続き、そして、それは「非演算」（ｎｏｐ）である。これによって、整数ユニットおよびローカル記憶部がある程度まで冷めることができる。整数ユニットは命令６および７を処理する。そして、閾値までその熱値を増加させる。閾値を越えることを妨げるために、異なるコンポーネント（「その他」）は、好ましくは次の命令を処理する。例えば、プロフィーラは、整数ユニットおよびローカル記憶部による命令の実行をモニタすることができ、情報をコンパイラに伝えることができる。コンパイラは、他の整数ユニットによって処理される命令８を持つために、熱特性および冷却特性とともにこの情報を使用することができる。
【００５９】
現在図５に参照がなされ、図５は、本発明の態様による、手順５００をスケジューリングしているマルチキューを示す。図５に示すように、スケジューラ５０２は、好ましくは２つのキューと関連する。便宜のために、第１キューは本願明細書において「ホットキュー」５０４と称され、そして、第２キューは本願明細書において「クールキュー」５０６と称される。キュー５０４、５０６は、例えば、データ構造、またはメモリにおける連続的または不連続の集合など、多くの異なる方法で実行されることができる。複数のサブ処理ユニット４００を採用する一つの実施の形態においては、キュー５０４、５０６は複数のサブ処理ユニット４００の外部で実行される。キュー５０４、５０６はまた、例えばメモリ３３０（またはメモリ３５８）と関連する、処理ユニット３０４または処理要素３００（または処理要素３５０）の外部で実行されても良い。他の例では、キュー５０４、５０６は、複数のサブ処理ユニット４００の内部で実行される。望ましくは、キュー５０４、５０６はローカル記憶部４０２またはレジスタ４０４に関連して実行される。例えば、ホットキュー５０４は第１サブ処理ユニット４００のローカル記憶部４０２と連絡して実行され、そして、クールキュー５０６は第２サブ処理ユニット４００のローカル記憶部４０２と連絡して実行されることができる。サブ処理ユニット４００が多数のローカル記憶部４０２を含む場合には、ホットキュー５０４は、ローカル記憶部４０２の一つである第１ローカル記憶部４０２に格納されることができ、一方、クールキュー５０６は、同じサブ処理ユニット４００において、ローカル記憶部４０２の一つである第２ローカル記憶部４０２に格納されることができる。あるいは、ホットキュー５０４およびクールキュー５０６は、同じローカル記憶部４０２で、またはサブ処理ユニット４００の外部または処理要素３００の外部の同じメモリで、実行されることができる。キュー５０４、５０６がレジスタ４０４を経由して実行される場合、さまざまな変形例が可能である。一つのケースでは、ホットキュー５０４は、第１サブ処理ユニット４００のレジスタ４０４を経由して実行されることができ、そして、クールキュー５０６は第２サブ処理ユニット４００のレジスタ４０４を経由して実行されることができる。キュー５０４、５０６はまた、例えば、キュー５０４、５０６のうちの一つが、第１期間にメモリに格納され、キュー５０４、５０６のうちの他の一つが、第２期間にメモリに格納されていた時分割方式の装置において行うことができる。
【００６０】
スケジューラ５０２は、熱特性に応じて、命令、タスクまたは他の演算により、ホットキュー５０４およびクールキュー５０６を占めることができる。好ましくは、スケジューラ５０２は、熱特性を含むルックアップテーブルにアクセスする。スケジューラ５０２は、実行時間演算の前および／または間、演算することができる。スケジューラ５０２は、コンポーネントの現在の（または予測された）温度によって、タスクをホットキュー５０４またはクールキュー５０６から選択することができる。好ましい実施の形態においては、装置の現在の温度が演算上の閾値を越えない限り、スケジューラ５０２は、ホットまたはクールキュー５０４、５０６からタスクを選択することができる。好ましい他の実施の形態においては、演算上の閾値を越えない場合、およびホットおよびクールタスクの両方が利用可能である場合、スケジューラ５０２は、クールキュー５０６からタスクを選択する前に、ホットキュー５０４からタスクを選択する。例えば、多数の演算を必要とする浮動小数点命令またはタスクは、比較的高いまたは正の熱特性値と関連していてもよい。例えば、タスクH１ ... HNによって見られるように、これらの演算はホットキュー５０４に配置される。例えば、整数命令および一つの演算タスクなどの他の演算は、比較的低いまたは負の熱特性と関係していてもよい。タスクＣ１ ... ＣNによって見られるように、例えば、この種の演算はクールキュー５０６において配置される。タスクの熱特性は、コンパイラおよび／またはプロフィーラから情報を使用して、好ましくは決定される。そして、そのいずれかは、タスクを実行している各々のコンポーネントの演算周波数を伝えることができる。より好ましくは、タスクの熱特性は、コンポーネントの演算周波数（例えば使用の頻度）、コンポーネントの熱特性、および冷却特性を組み込む。一つの実施の形態にしたがって、簡易なスケジューラは、例えば、サブ処理ユニット４００などのサブコンポーネントを有するコンポーネントの全体熱特性を使用するだけである。他の実施の形態にしたがって、高度なスケジューラは、例えば、ローカル記憶部４０２、浮動小数点ユニット４０６および整数ユニット４０８などのサブ処理ユニットのサブコンポーネントの熱特性を管理する。下のテーブルは三次元タスクおよびＭＰＥＧ−２タスクのための与えられたサブ処理ユニットにおける、整数ユニット、浮動小数点ユニット、およびローカル記憶部のための熱特性を示す。
【００６１】
【表３】
2005285124.tif 000005
【００６２】
サブ処理ユニットの全体熱特性を見るだけの簡易なスケジューラは、それが１２の値を有することを認識し、そして、それはサブ処理ユニットの熱閾値を越えることができる。このように、簡易なスケジューラは、サブ処理ユニットによって実行するＭＰＥＧ−２タスクを選択することだけができてもよい。対照的に、高度なスケジューラは、好ましくはサブ処理ユニットのサブコンポーネントをモニタする。この場合、高度なスケジューラは、サブコンポーネントがその熱閾値を越えないことを認識することができ、そのため三次元タスクが選択されることができる。変形例において、スケジューラは、ＭＰＥＧ−２タスクが特定の段階で実行され、浮動小数点ユニットを冷やす時間を与えるように、タスクの範囲内でタスクまたは演算を再命令することができる。この適応性は、サブコンポーネント、コンポーネントおよび／または全ての多重処理システムがオーバーヒートせずに演算することを可能にする強力なツールである。
【００６３】
当業者にとって明らかであるように、スケジューラ５０２はハードウェア、ファームウェアまたはソフトウェアで実行されることができる。好ましくは、スケジューラ５０２はハードウェアに基礎が置かれ、処理ユニット２０４において実行される。好ましい他の変形例においては、スケジューラ５０２は、全体的な計算デバイスの演算システムの一部として、ソフトウェアに基礎がおかれる。ホットキュー５０４およびクールキュー５０６は、好ましくは、バス５０８によるプログラム実行の間、一つ以上の処理要素（処理要素１ ... 処理要素Ｎ）、処理ユニット（処理ユニット１ ... 処理ユニットＮ）および／または複数のサブ処理ユニット（サブ処理ユニット１ ... サブ処理ユニットＮ）にアクセスすることができる。一つの実施の形態にしたがって、各々の処理要素、処理ユニットおよび／またはサブ処理ユニットは、好ましくは、それらの温度をモニタする、または、選択的に、現在の温度を推定する温度センサ（温度検知手段）を含む。他の実施の形態にしたがって、各々の処理要素は、好ましくは、温度のデジタル評価を提供するための温度センサ、およびアナログ−デジタルＡ／Ｄコンバータを含む。処理要素上の各々のカーネルは、好ましくは、それ自身のデジタル化された温度をいつでも読み込むことができる。処理要素、処理ユニットおよび複数のサブ処理ユニットは、望ましくは各々が熱閾値Ｔｍａｘを有し、そして、それはコンポーネントごとに異なり得る。熱センサが利用できない場合、現在の温度は、タスクおよび現在の冷却特性の熱特性によって算出されることができる。
【００６４】
スケジューラ５０２はまた、キューを使用することなく演算を管理することができる。演算はメモリに格納されることができる、そして、スケジューラ５０２は、熱特性によって、いくつかの演算をプロセッサに割り当てることができる。例えば、２つの演算がある場合、スケジューラは、熱特性に基づいて、２つの演算を２つの別々の処理要素３００（または他の処理デバイス）に割り当てることができる。演算は、別々のメモリ（または単一のメモリの別々の部分）に格納されることができる。第１演算は第１メモリ（または単一のメモリの第１部分）に格納されることができ、そして、第２演算は第２メモリ（または単一のメモリの第２部分）に格納されることができる。それは、２つの演算を同時に格納することは必要でない。むしろ、それらは異なる期間の間、同一のまたは異なるメモリに格納されることができる（そして、不変のまたは可変的な、連続的または不連続な期間の間に交互に生じることができる）。さらに、２つのメモリ（または単一のメモリの２つの部分）が必ずしも、特定の演算または特定の熱特性と関連した演算に限られる専用のメモリではないと理解されなければならない。このように、第１メモリ（または単一のメモリの第１部分）は第２演算を格納することができる、そして、第２メモリ（または単一のメモリの第２部分）は第１演算を格納することができる。同様に、第１および第２キュー５０４、５０６が同じように演算することができると理解されなければならない。
【００６５】
図６は、演算を得て処理する、好ましい処理の工程系統図６００を示す。ステップ６０２で、処理要素、処理ユニットまたはサブ処理ユニットは、その現在の温度が、熱閾値Ｔｍａｘより高いかどうか決定する。Ｔｍａｘを越えない場合、処理は次にステップ６０４へ進み、さもなければ、処理はステップ６０８へ進む。ステップ６０４において、演算がホットキュー５０４から利用可能かどうか決定される。演算が利用できる場合、処理はステップ６０６へ進む、さもなければ、処理はステップ６０８へ進む。ステップ６０６において、処理要素、処理ユニットまたはサブ処理ユニットは、「ホット」演算を得て、それを実行する。演算終了後、処理はステップ６０２に返る。ステップ６０８において、演算がクールキュー５０６から利用可能かどうか決定される。演算が利用できる場合、処理はステップ６１０へ進む。一方、処理はステップ６１２へ進む。ステップ６１０において、処理要素、処理ユニットまたはサブ処理ユニットは、「クール」演算を得て、それを実行する。演算終了後、処理はステップ６０２にもどる。タスクが処理に利用可能でない場合、処理は、ステップ６０２に戻る前に、アイドルするか、または一定の時間（例えば、予め定められた数のサイクル）、ステップ６１２で、「ｎｏｐ」を実行することができる。ホットおよびクールタスクが利用でき、そして、Ｔｍａｘを越えない場合、図５に関して上記で論じたように、任意に、ホットおよびクールタスクのいずれかが選択されることができる。このように、工程系統図６００によって見られるように、処理デバイスは、ホットおよびクールキュー５０４、５０６からタスクを選択することによって、ホットスポットおよびオーバーヒートを避けることができる。この処理は一つ以上の処理デバイスによって並行して実行されることができ、それによって、クロックスピードを変えること、または処理デバイスをシャットダウンすることなく、命令およびタスクの実行をすることができる。
【００６６】
図７に示すように、優先度キューでホットおよびクールキューの使用を結合することが可能である。この図において、手順５４０をスケジューリングするマルチキューが提供される。スケジューラ５４２は、高優先度キュー５４４、中優先度キュー５４６、および低優先度キュー５４８の３つの優先度キューと関連する。但し、キューの異なる優先度レベルおよび数が採用されることができる。スケジューラ５４２は、スケジューラ５０２に関して上記の通りに演算する。優先度キュー５４４、５４６および５４８の各々は、好ましくは、図５に関する上記と同一の方法で作成され、演算するホットキューおよびクールキューを含む。例えば、高優先度キュー５４４は、タスクＨ１Ｈ ... ＨＮＨを扱うためのホットキュー、およびタスクＣ１Ｈ ... ＣＮＨを扱うためのクールキューを有する。同様に、中優先度キューは、タスクＨ１Ｍ ... ＨＮＭを扱うためのホットキュー、およびタスクＣ１Ｍ ... ＣＮＭを扱うためのクールキューを有する。低優先度キューは、タスクＨ１Ｌ ... ＨＮＬを扱うためのホットキュー、およびタスクＣ１Ｌ ... ＣＮＬを扱うためのクールキューを有する。
【００６７】
図８は、優先度キューを使用するときに、演算を得て処理する好ましい処理の工程系統図８００を示す。まず最初に、ステップ８０１で、処理要素、処理ユニットまたはサブ処理ユニットは、例えば高優先度キュー５４４、中優先度キュー５４６、低優先度キュー５４８など、どんな優先度キューを使用するべきかについて決定する。ステップ８０２で、処理要素、処理ユニットまたはサブ処理ユニットは、その現在の温度が熱閾値Ｔｍａｘより上にあるかどうか決定する。Ｔｍａｘを越えない場合、処理は次にステップ８０４へ進む、さもなければ、処理はステップ８０８へ進む。ステップ８０４において、演算が選択された優先度キューのホットキュー５０４から利用可能かどうか決定される。演算が利用できる場合、処理はステップ８０６へ進む、さもなければ、処理はステップ８０８へ進む。ステップ８０６において、処理要素、処理ユニットまたはサブ処理ユニットは、「ホット」演算を得て、それを実行する。演算終了後、処理はステップ８０１に返る。ステップ８０８において、演算が選択された優先度キューのクールキュー５０６から利用可能かどうか決定される。演算が利用できる場合、処理はステップ８１０へ進む、さもなければ、処理はステップ８１２へ進む。ステップ８１０において、処理要素、処理ユニットまたはサブ処理ユニットは、「クール」演算を得て、それを実行する。演算終了後、処理はステップ８０１にもどる。タスクが処理に利用可能でない場合、処理はステップ８０１に戻る前にステップ８１２でアイドルする。ホットおよびクールタスクが与えられた優先度レベルに利用でき、そして、Ｔｍａｘを越えない場合、任意に、ホットおよびクールタスクのいずれかがその優先度レベルに選択されることができる。このように、工程系統図８００によって見られるように、処理コンポーネントは、さまざまな優先度キュー５４４、５４６および５４８のホットおよびクールキューからタスクを選択することによって、実行時間の間、ホットスポットおよびオーバーヒートを避けることができる。この処理は、一つ以上の処理コンポーネントによって並行して実行されることができ、それによって、クロックスピードを変えること、または処理デバイスをシャットダウンすることなく、命令およびタスクの実行をすることができる。変形例において、処理デバイスがあまりに熱くなるか、Ｔｍａｘに近づくかまたは越える場合、それは、より低い優先度キュー（例えば中優先度キュー５４６または低優先度キュー５４８）から演算を選択することができ、および／または演算熱特性にかかわらず、減じられたクロックサイクルで演算を実行する。このようなより低い優先度タスクは、減じられたクロックサイクルで実行されることができる。
【００６８】
ある状況において、コンポーネントは、演算（例えば、タスク）を実行する前に、熱閾値Ｔｍａｘの下にあってもよいが、それからタスク実行の間、Ｔｍａｘを越えるかもしれない。過去においては、このような場合においては、おそらくコンポーネントをシャットダウンし、それが冷めることができることを必要とする。しかしながら、この課題に対処する技術が開発され、そして、それは特にマルチプロセッサ環境に適している。
【００６９】
図９Ａは、一群のタスクを走らせている多数の複数の処理要素を示す。この例においては、処理要素２がタスク１のその処理の間にオーバーヒートすると仮定する。処理要素２から他のプロセッサの一つへタスク１を移動することは可能であり、そして、それは、例えば、タスク２および３など、他のタスクを演算していることができる。他のタスクは、好ましくは、より低い優先度タスクであり、そして、処理要素２によって現在実行されているものである。
【００７０】
図９Ｂに示すように、他のプロセッサの、例えばタスク３などのタスクは、「交換」されることができ、例えば、適当なキューに（または異なるプロセッサに）送られることができる。このように、処理要素３がタスク１を完了する間、処理要素２はタスクを実行しない。あるいは、２つのプロセッサは、図９Ｃに示すように、処理要素２がより低い優先度タスクを実行するように、タスクを交換することができる。図９Ｃに示すように、（１） まず最初に、例えば、処理要素２および処理要素３は、例えば５００ＭＨｚの標準のクロックスピードで演算することができる。それから、（２） 高優先度タスク１を演算する間に処理要素２が熱くなる場合、そのタスクは、処理要素３の、より低い優先度タスク３と交換されることができる。最後に、（３） より低い優先度タスク３は、より遅い、または減じられたクロックスピード（例えば２５０ＭＨｚ）で実行され、処理要素２が冷えることを可能とし、一方、処理要素３は５００ＭＨｚの標準のクロックスピードで、タスク１の実行を継続する。より高い優先度タスクを実行するためにクロックスピード（例えば、６５０ＭＨｚまで）を上げることもまた可能である。標準の、増加されたおよび減じられたクロックスピードが単に典型的なものであり、プロセッサ、サブプロセッサおよび／または多重処理システムの最大クロックレートの特定の構造によって、変化することができると理解されなければならない。最悪のシナリオにおいては、オーバーヒートしているプロセッサは、温度が満足なレベルに達するまで、演算を停止させることができる。しかしながら、マルチプロセッサシステムの他のプロセッサは、リアルタイム演算、および他の重要な演算が迅速に実行されるように、処理を継続する。処理要素が図９Ａ−Ｃで示されるが、処理ユニットおよび複数のサブ処理ユニット、またはさまざまな処理デバイスの組合せで、同じ演算を実行することは可能である。例えば、オーバーヒートしているサブ処理ユニット３０８は、その高優先度タスクを処理ユニット３０４に送信することができ、そして、それは第２サブ処理ユニット３０８にそのタスクを再設定することができる。同様に、処理ユニット３０４は、第２サブ処理ユニット３０８の、より低い優先度タスクを獲得することができ、そしてそれを第１サブ処理ユニット３０８に割り当てることができる。一旦第１サブ処理ユニット３０８が冷めると、それは通常のクロックスピードで、高優先度および／または「ホット」タスクを処理することを再開することができる。
【００７１】
本発明が特定の実施の形態を参照してここに記載されているが、これらの実施の形態が単に本発明の原理および出願を例示するものであると理解されるべきである。したがって、多数の修正が、例示したものである実施の形態になされることができることは理解されるべきであり、そして、その他の装置は、添付の請求の範囲に記載の本発明の趣旨および範囲から逸脱することなく、発明されることができる。
【図面の簡単な説明】
【００７２】
【図１】本発明の態様による、さまざまな組合せにおいて体系化されたコンポーネントを示す。
【図２Ａ】温度に対する計算デバイスのための時間を表すグラフ図である。
【図２Ｂ】温度に対する計算デバイスのための時間を表すグラフ図である。
【図３Ａ】本発明の態様による、処理要素（PE）の典型的な構造を示す図である。
【図３Ｂ】本発明の態様による、複数の処理要素の多重処理システムの典型的な構造を示す図である。
【図４】本発明の態様による、サブ処理ユニットの典型的な構造を示す図である。
【図５】本発明の態様にしたがってスケジューリングするマルチキューを示す図である。
【図６】本発明の態様による、典型的な動的なスケジューリング方法を示す工程系統図である。
【図７】本発明の態様にしたがってスケジューリングするマルチキューを示す図である。
【図８】本発明の態様による典型的な動的なスケジューリング方法を示す工程系統図である。
【図９Ａ】本発明の態様による、タスク移動（マイグレーション）を示す図である。
【図９Ｂ】本発明の態様による、タスク移動（マイグレーション）を示す図である。
【図９Ｃ】本発明の態様による、タスク移動（マイグレーション）を示す図である。
【図１０Ａ】本発明の態様による、コンポーネントおよびコンポーネントと関連する熱値を示す図である。
【図１０Ｂ】本発明の態様による、コンポーネントおよびコンポーネントと関連する熱値を示す図である。
【図１１】本発明の態様による、コンパイラ機能を示す図である。
【符号の説明】
【００７３】
１００  基板、  １０２  コンポーネント、  １０４  ユニット、  １０６  グループ、  ３００  処理要素、  ３０４  処理ユニット、  ３０８  複数のサブ処理ユニット、  ３５０  処理要素、  ４００  サブ処理ユニット、  ４０２  ローカル記憶部、  ４０４  レジスタ、  ５０２  スケジューラ、  ５０４  ホットキュー、  ５０６  クールキュー。
【図１】
2005285124.tif 000006
【図２Ａ】
2005285124.tif 000007
【図２Ｂ】
2005285124.tif 000008
【図３Ａ】
2005285124.tif 000009
【図３Ｂ】
2005285124.tif 000010
【図４】
2005285124.tif 000011
【図５】
2005285124.tif 000012
【図６】
2005285124.tif 000013
【図７】
2005285124.tif 000014
【図８】
2005285124.tif 000015
【図９Ａ】
2005285124.tif 000016
【図９Ｂ】
2005285124.tif 000017
【図９Ｃ】
2005285124.tif 000018
【図１０Ａ】
2005285124.tif 000019
【図１０Ｂ】
2005285124.tif 000020
【図１１】
2005285124.tif 000021