(57)【要約】【課題】マイクロプロセッサの発熱問題をソフトウェアベースで解決する。【解決手段】コンピュータシステム内の１つ以上のプロセッサとプロセッサの関連するローカルメモリがメインメモリ１０６と動作可能に接続され、メインメモリ１０６とローカルメモリ１０４との間のデータ転送を可能にする。コンピュータシステムは、コンピュータシステム内の１つ以上のプロセッサのポーズ条件を発生させる（成立させる）アクション、１つ以上のプロセッサにポーズをかけるアクション、１つ以上のプロセッサのローカルメモリからメインメモリへデータを保存するアクション、１つ以上のプロセッサを休止状態にするアクション、１つ以上のプロセッサへの電源供給を再開するアクション、１つ以上のプロセッサから発生する保存したデータを、１つの送信元のプロセッサへ転送するアクション等を実行することができる。【選択図】図１
2006318470.tif 000002
【特許請求の範囲】
【請求項１】
（ｉ）少なくとも１つのプロセッサで実行中のプログラムにおけるチェックポイント命令と、
（ｉｉ）所定の実行期間の終了と、
のうちの少なくとも１つが発生すると、マルチプロセッサシステム内の前記少なくとも１つのプロセッサのオペレーションにポーズをかけるステップと、
前記少なくとも１つのプロセッサのローカルメモリから前記マルチプロセッサシステムのメインメモリにデータを保存するステップと、
前記メインメモリから前記マルチプロセッサシステムの他のプロセッサのローカルメモリへ前記保存したデータを転送するステップと、
前記他のプロセッサでプログラムの実行処理をレジュームするステップと、を有する方法。
【請求項２】
前記複数のプロセッサ間に電力消費が分散されるように、前記マルチプロセッサシステムの複数のプロセッサ間で前記ポーズをかけるステップ、保存ステップ、転送ステップ、及びレジュームステップを繰り返すステップを更に有する、請求項１記載の方法。
【請求項３】
前記実行期間は、
ビデオフレームレートに実質的に等しい期間、
約１６ミリセカンド、及び、
前記プロセッサの温度上昇時間よりも実質的に短い期間、
のうちの少なくとも１つである、請求項１記載の方法。
【請求項４】
前記複数のプロセッサ間にプロセッサのデータ再配置スキームを構築して、これにより、各プロセッサを、（ｉ）前記保存したデータの転送先でかつレジューム実行先となる宛先プロセッサ、及び（ｉｉ）レジューム処理が実行される前記保存したデータの転送元でかつレジューム実行元となる送信元プロセッサ、として決定するステップを更に有する、請求項１記載の方法。
【請求項５】
前記プロセッサのデータ再配置スキームは、ｎを法としてローテーションを行い、ｎは前記マルチプロセッサシステムの前記複数のプロセッサの数である、請求項４記載の方法。
【請求項６】
前記複数のプロセッサは、相互に結合された第１マルチプロセッサシステム及び第２マルチプロセッサシステム内に配置されている、請求項４記載の方法。
【請求項７】
前記プロセッサのデータ再配置スキームでは、前記第１マルチプロセッサシステム内に配置された少なくとも１つのプロセッサが、前記宛先プロセッサ、および前記第２マルチプロセッサシステム内に配置された前記送信元プロセッサ、のうちの少なくとも１つを有するようにされた、請求項６記載の方法。
【請求項８】
前記第１マルチプロセッサシステムの前記メインメモリから、前記第２マルチプロセッサシステムのメインメモリへと、前記保存したデータの全てをコピーするステップを更に含む、請求項７記載の方法。
【請求項９】
前記保存するステップの前に、前記少なくとも１つのプロセッサの前記ローカルメモリで前記データを暗号化するステップと、
前記他のプロセッサをプロテクトモードに入れるステップと、
前記他のプロセッサ内の、前記転送した暗号化データを復号化するステップと、
プログラムの実行処理をレジュームする前に、前記他のプロセッサを前記プロテクトモードから解除するステップと、を更に有する請求項１記載の方法。
【請求項１０】
前記プロテクトモードに入る前記ステップは、
前記他のプロセッサの内外へのデータ転送が禁止されている隔離モードへ入るステップと、
前記他のプロセッサの内外へデータを転送するために、前記他のプロセッサの外部デバイスからリクエストがサービスされない安全モードへ入るステップと、のうちの少なくとも１つを含む、請求項９記載の方法。
【請求項１１】
電源供給及びクロックサイクルのうちの少なくとも１つを停止することによって前記少なくとも１つのプロセッサを休止状態にするステップと、
ウェイクアップ条件の成立に応答して前記少なくとも１つのプロセッサを休止状態から解除するステップと、
前記少なくとも１つのプロセッサが休止状態を出た後に、前記メインメモリから前記少なくとも１つのプロセッサの前記ローカルメモリへと前記保存したデータを転送するステップと、
前記少なくとも１つのプロセッサにプログラム実行処理をレジュームさせるステップと、を更に含む請求項１記載の方法。
【請求項１２】
前記少なくとも１つのプロセッサを休止状態から解除する前記ステップは、
前記少なくとも１つのプロセッサを割込み処理するステップと、
所定の期間の終了を許容するステップと、
前記少なくとも１つのプロセッサと通信するプロセッサにおいてチェックポイント命令を実施するステップと、のうちの少なくとも１つを含む、請求項１１記載の方法。
【請求項１３】
メインメモリと機能的に接続された複数のプロセッサを有するマルチプロセッサシステムと、
前記プロセッサの各々と結合されたローカルメモリと、を含み、
前記マルチプロセッサシステムは、
（ｉ）少なくとも１つのプロセッサで実行中のプログラムにおけるチェックポイント命令と、（ｉｉ）所定の実行期間の終了と、のうちの少なくとも１つが発生すると、前記少なくとも１つのプロセッサのオペレーションにポーズをかけるアクションと、
前記少なくとも１つのプロセッサの前記ローカルメモリから前記メインメモリへデータを保存するアクションと、
前記メインメモリから前記複数のプロセッサの別の前記ローカルメモリへ前記保存したデータを転送するアクションと、
前記他のプロセッサでプログラムの実行処理をレジュームするアクションと、を実行するよう動作可能である、装置。
【請求項１４】
前記マルチプロセッサシステムは、
前記複数のプロセッサ間で電力消費が分散されるように、前記ポーズをかけるステップ、保存ステップ、転送ステップ、及びレジュームステップを、前記マルチプロセッサシステムの前記複数のプロセッサ間で繰り返すアクションを更に実行するよう動作可能である、請求項１３記載の装置。
【請求項１５】
前記実行期間は、
ビデオフレームレートに実質的に等しい、
約１６ミリセカンドである、及び、
前記プロセッサの温度上昇時間よりも実質的に短い、
のうちの１つである、請求項１３記載の装置。
【請求項１６】
前記マルチプロセッサシステムは、
前記複数のプロセッサ間におけるプロセッサのデータ再配置スキームを構築して、これにより、各プロセッサを、（ｉ）前記保存したデータの転送先でかつレジューム実行元となる宛先プロセッサ、及び（ｉｉ）保存したデータの転送元でかつレジューム実行元となる送信元プロセッサ、として決定するアクションを更に実行可能である、請求項１３記載の装置。
【請求項１７】
前記プロセッサのデータ再配置スキームは、ｎを法としてローテーションを行い、ｎは前記コンピュータシステムの前記複数のプロセッサの数である、請求項１６記載の装置。
【請求項１８】
前記複数のプロセッサは、相互に結合され第１マルチプロセッサシステム及び第２マルチプロセッサシステム内に配置されている、請求項１６記載の装置。
【請求項１９】
前記プロセッサのデータ再配置スキームでは、前記第１マルチプロセッサシステム内に配置された少なくとも１つのプロセッサが、前記宛先プロセッサ、および前記第２マルチプロセッサシステム内に配置された前記送信元プロセッサ、のうちの少なくとも１つを有すように命令する、請求項１８記載の装置。
【請求項２０】
前記マルチプロセッサシステムは、
前記第１マルチプロセッサシステムの前記メインメモリから、前記第２マルチプロセッサシステムのメインメモリへ前記保存したデータの全てをコピーするアクションを更に実行するよう動作可能である、請求項１９記載の装置。
【請求項２１】
前記マルチプロセッサシステムは、
前記保存アクションの前に前記少なくとも１つのプロセッサの前記ローカルメモリで前記データを暗号化するアクションと、
前記他のプロセッサをプロテクトモードに入れるアクションと、
前記他のプロセッサ内の、前記転送した暗号化データを復号化するアクションと、
プログラムの実行処理をレジュームする前に前記他のプロセッサを前記プロテクトモードから解除するアクションと、を更に実行するよう動作可能である、請求項１３記載の装置。
【請求項２２】
前記プロテクトモードに入れる前記アクションは、
前記他のプロセッサの内外へのデータ転送が禁止されている隔離モードへ入れるアクションと、
前記他のプロセッサの内外へデータを転送するために、前記他のプロセッサの外部デバイスからリクエストがサービスされない安全モードへ入れるアクションと、のうちの少なくとも１つを含む、請求項２１記載の装置。
【請求項２３】
電源供給及びクロックサイクルのうちの少なくとも１つを停止することによって前記少なくとも１つのプロセッサを休止状態にするステップと、
ウェイクアップ条件の成立に応答して前記少なくとも１つのプロセッサを休止状態から解除するステップと、
前記少なくとも１つのプロセッサが休止状態から解除された後に、前記少なくとも１つのプロセッサの前記メインメモリから前記ローカルメモリへと、前記保存したデータを転送するステップと、
前記少なくとも１つのプロセッサにプログラム実行処理をレジュームさせるステップと、を更に含む請求項１３記載の装置。
【請求項２４】
前記少なくとも１つのプロセッサを休止状態から解除する前記ステップは、
前記少なくとも１つのプロセッサの割込み処理を行うステップ、
所定の期間の終了を許容するステップ、及び、
前記少なくとも１つのプロセッサと通信するプロセッサでチェックポイント命令を実施するステップ、のうちの少なくとも１つを含む、請求項２３記載の装置。
【請求項２５】
実行可能プログラムを含む記録媒体であって、前記実行可能プログラムは、マルチプロセッサシステムに、
（ｉ）少なくとも１つのプロセッサで実行中のプログラムにおけるチェックポイント命令、及び（ｉｉ）所定の実行期間の終了、のうちの少なくとも１つが発生すると、マルチプロセッサシステム内の前記少なくとも１つのプロセッサのオペレーションにポーズをかけるアクションと、
前記少なくとも１つのプロセッサのローカルメモリから前記マルチプロセッサシステムのメインメモリにデータを保存するアクションと、
前記メインメモリから前記マルチプロセッサシステムの別のプロセッサのローカルメモリへと前記保存したデータを転送するアクションと、
前記他のプロセッサでプログラムの実行処理をレジュームするステップと、を含むアクションを実行させるものである、記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータシステムの電力消費と発熱性を管理し、かつマルチプロセッサコンピュータシステムのプロセッサ間の演算処理アクティビティの分配を管理するための方法及び装置に関する。
【背景技術】
【０００２】
クロック周波数が増加し、かつ最新のマイクロプロセッサにおいてはそのサイズが縮小していることから、演算処理性能が非常に向上し、また、そのような性能を小さなサイズで提供できるという利点が得られている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、演算処理性能の向上に伴い、マイクロプロセッサの電力消費と発熱性もかなり増加する。これは、グラフィックプロセッサに特に当てはまる。従って、マイクロプロセッサの発熱問題に対しては、ヒートシンクを配置するといったハードウェアソリューションに代えて、あるいは、ハードウェアソリューションに加えて、ソフトウェアベースソリューション技術が求められている。
マルチプロセッサコンピュータシステムでは、限られたスペースに複数の高性能プロセッサが集中し、また、プロセッサ間に分配される演算処理アクティビティが不均一であることから、発熱問題が悪化する。演算処理アクティビティが不均一に分配されると、局所的な“ホットスポット”が生成され得る。その理由は、あるプロセッサは、同じコンピュータシステム内のそれほどアクティブではないプロセッサに比べて、演算処理のスループット処理量が大きくなり、それに応じてより大きな熱エネルギーが蓄積されるからである。従って、マルチプロセッサシステムのホットスポット問題に対して、ソフトウェアソリューション技術が求められている。
【０００４】
一形態によれば、本発明は、プロセッサで実行しているプログラムのチェックポイント命令が発生すると、コンピュータシステム内のプロセッサのオペレーションにポージングをかけるステップ、プロセッサのローカルメモリからコンピュータシステムのメインメモリへデータを保存するステップ、及びプロセッサを休止状態にするステップ、を含む方法を提供する。好適には、この方法において、更にデータを保存する前にローカルメモリのデータを暗号化するステップが含まれる。更に、この方法において、ウェイクアップ条件の成立を検出すると、休止状態にされたプロセッサをウェイクアップさせるステップを含むことが好ましい。更に、保存したデータをメインメモリからプロセッサのローカルメモリへ転送するステップを含むことが好ましい。更に、この方法において、保存前にローカルメモリのデータを暗号化するステップ、ウェイキングアップ後にプロセッサがプロテクトモードに入れるステップ、転送されたデータを解読するステップ、及び、プロセッサがプロテクトモードから解除されるステップ、を含むことが好ましい。
【０００５】
好適には、プロテクトモードに入れるステップにおいて、プロセッサの内外へのデータ転送が禁止されている隔離モードに入る。好ましくは、プロテクトモードに入れるステップにおいて、プロセッサの外部デバイスからプロセッサのローカルメモリの内外へのデータ転送リクエストがサービスされない安全モードに入る。更に、プロセッサのオペレーションをレジュームすることを含むことが好ましい。好適には、プロセッサを休止状態にするステップにおいて、プロセッサへの電源供給が止められる。好適には、プロセッサを休止状態にするステップにおいて、実質的にプロセッサの電力消費レベルが低減される。好適には、プロセッサを休止状態にするステップにおいて、プロセッサの電力消費レベルが少なくとも実質的に低減される。好適には、プロセッサを休止状態にするステップにおいて、プロセッサへのクロック信号が止められる。
【０００６】
好適には、プロセッサのウェイクアップ処理においては、プロセッサへの電源供給が完全に再開されるとともに、プロセッサが初期化される。好適には、プロセッサのウェイクアップ処理においては、プロセッサへの電源供給が少なくとも実質的に再開される。
【０００７】
好適には、ウェイクアップ処理において、休止状態にされたプロセッサに対して、ウェイクアップ条件が成立したことが伝達され、また、プロセッサへの電源供給が完全に回復するように、プロセッサから信号が送られる。好適には、上記プロセッサへの伝達では、休止状態にされたプロセッサへ割込みが送信される。好適には該方法によって更に、所定の期間の終了に基づきウェイクアップ条件が発生（成立）する。好適には、所定の期間は、プロセッサが休止状態にある期間と等しい。好適には、該方法によって、休止状態にされたプロセッサと通信状態にある第２プロセッサのチェックポイント命令が実行されると、ウェイクアップ条件が発生する。好適には、該方法によって更に、保存されたデータがメインメモリから第２プロセッサのローカルメモリへ転送され、また、第２プロセッサにおいてプログラム実行がレジュームされる。
【０００８】
他の形態によれば、本発明では、第１マルチプロセッサシステムの少なくとも１つのプロセッサが、所定の継続時間の実行期間が終了するのを待ち；実行期間が終了すると少なくとも１つのプロセッサの進行中のプログラム実行処理にポーズをかけ、これにより、ポーズがかけられたプロセッサを少なくとも１つ提供し；少なくとも１つのプロセッサの少なくとも１つのローカルメモリから第１マルチプロセッサシステムのメインメモリにデータを保存する方法が提供される。好適には、該方法では更に、ポーズがかけられた各プロセッサに対する宛先プロセッサを指定し、その結果、少なくとも１つの宛先プロセッサを提供し、保存したデータをメインメモリから、少なくとも１つの宛先プロセッサの少なくとも１つの各々のローカルメモリへ転送し、かつ、この少なくとも１つの宛先プロセッサにおいて、進行中のプログラム実行処理をレジュームし、その結果、新たな実行期間を開始する。好適には、該方法では更に、少なくとも１つの宛先プロセッサがプロテクトモードに入り、転送された暗号化されたデータを解読し、かつ、少なくとも１つの宛先プロセッサがプロテクトモードを出る。
【０００９】
好適には、プロテクトモードに入れるステップにおいて、少なくとも１つの宛先プロセッサの内外へのデータ転送が禁止されている隔離モードに入る。好適には、プロテクトモードに入れるステップにおいて、少なくとも１つの宛先プロセッサの外部デバイスから、少なくとも１つの宛先プロセッサの内外へのデータ転送リクエストがサービスされない安全モードに入る。好適には、該方法によって、（実行期間が終了するのを）待つステップ、ポーズをかけるステップ、保存ステップ、指定ステップ、転送ステップ、及びレジュームステップが繰り返し行われる。好適には、少なくとも１つのポーズがかけられたプロセッサには、少なくとも２つのポーズがかけられたプロセッサを含み、また、（宛先プロセッサの）指定においては、プロセッサのデータ再配置スキームによりポーズがかけられたプロセッサの各々に対する宛先プロセッサが指定される。
【００１０】
好適には、実行期間は少なくとも１つのプロセッサのフレーム処理時間に実質的に等しい。好適には、実行期間は約１６ミリセカンドである。好適には、実行期間の継続時間は実質的に、少なくとも１つのプロセッサの臨界温度上昇時間よりも短く、好適には、少なくとも１つの宛先プロセッサは、第１マルチプロセッサシステムに配置される。好適には、少なくとも１つの宛先プロセッサのうちの少なくとも１つは第２マルチプロセッサシステムに配置される。好適には、該方法により更に、第一マルチプロセッサシステムのメインメモリから、第２マルチプロセッサシステムのメインメモリへ全てのデータがコピーされる。好適には、プロセッサのデータ再配置スキームにおいては、“ｎ”を法としてローテーションが行われ、“ｎ”は第１マルチプロセッサシステムのプロセッサの番号である。
【００１１】
別の形態では、本発明によりメインメモリと通信できる少なくとも１つのプロセッサと、少なくとも１つのプロセッサの各々と結合されたローカルメモリを備え、その結果少なくとも１つのローカルメモリが提供されるコンピュータシステムが提供される。このコンピュータシステムは、少なくとも１つのプロセッサで実行中のプログラムでチェックポイント命令が発生すると、コンピュータシステム内の少なくとも１つのプロセッサのオペレーションにポーズをかけ、その結果ポーズがかけられたプロセッサを少なくとも一つ提供し、この少なくとも１つのポーズがかけられたプロセッサのローカルメモリからコンピュータシステムのメインメモリへとデータを保存し、この少なくとも１つのポーズがかけられたプロセッサを休止状態にするように動作可能である。
【００１２】
別の形態では、本発明によれば、メインメモリと通信できる少なくとも１つのプロセッサと、少なくとも１つのプロセッサの各々と結合されたローカルメモリと、を備え、その結果少なくとも１つのローカルメモリが提供されるコンピュータシステムが提供される。このコンピュータシステムは、当該コンピュータシステムの第１マルチプロセッサシステムの少なくとも１つのプロセッサによって所定の継続時間の実行期間が終了するのを待つ動作、実行期間が終了すると少なくとも１つのプロセッサにおいて進行中のプログラム実行処理にポーズをかけることで少なくとも１つのポーズがかけられたプロセッサを提供する動作、及び、少なくとも１つのポーズがかけられた少なくとも１つのローカルメモリから第１マルチプロセッサシステムのメインメモリへとデータを保存する動作、を行うことができる。
【００１３】
別の形態では、本発明により実行可能プログラムを含む記録媒体を提供する。この実行可能プログラムはコンピュータシステムに、プロセッサにおいて実行中のプログラムにチェックポイント命令が発生すると、コンピュータシステム内のプロセッサのオペレーションにポーズをかけ、プロセッサのローカルメモリからコンピュータシステムのメインメモリへデータを保存し、プロセッサを休止状態にするアクションを実行させることができる。
【００１４】
別の形態では、本発明は実行可能プログラムを含む記録媒体を提供する。この実行可能プログラムはコンピュータシステムに、第１マルチプロセッサシステムの少なくとも１つのプロセッサによって所定の継続時間の実行期間の終了を待ち、実行期間が終了すると、少なくとも１つのプロセッサにおいて進行中のプログラム実行処理にポーズをかけ、その結果、少なくとも１つのポーズがかけられたプロセッサを提供し、また、少なくとも１つのプロセッサの少なくとも１つの各々のローカルメモリからマルチプロセッサシステムのメインメモリへデータを保存するアクションを実行させることができる。
【００１５】
添付の図面を参照しつつ、ここに記載する本発明の説明を読めば、他の態様、機能および利点などは当業者に自明となるであろう。
本発明の様々な形態を説明するために、現在の好ましい形態を図面の形式に示すが、本発明は図示したとおりの構成ならびに手段に限定されないことを理解されたい。
【発明を実施するための最良の形態】
【００１６】
本開示では、プロセッサのローカルメモリに記録されたデータを保存することに関連して、用語“データ”はプログラムコードが処理する数値情報及び文字情報に加えて、実行可能プログラムコードを含む全てのデータを含む。本文では、プロセッサエレメントとも呼ばれる“ブロードバンドエンジン”は、マルチプロセッサコンピュータシステムである。本文では、用語“休止状態（ハイバーネーション）”は一般に、プロセッサの使用電力が少なく、及び／又は通常動作時よりも浪費電力が少ないプロセッサ状態を言う。従って、そのような休止状態には、単に電力消費を減らしただけの電力消費又は浪費レベルからゼロ又はゼロに近い電力消費又は浪費レベルに至るまでの電力消費又は浪費レベル範囲を含むプロセッサ状態を含む。
【００１７】
これに対応して、プロセッサを"休止状態にする(ハイバネーティング：hibernating)"という用語（及びこの動詞のその他の語形変化）は、プロセッサをそのような低電力消費、及び／又は低電力浪費状態、もしくはゼロ電力消費及び／又はゼロ電力浪費状態にすることを言う。プロセッサへの供給電圧を部分的にあるいは全面的に減らすことでプロセッサを休止状態にすることができる。他の形態では、プロセッサへの電流を部分的にあるいは全面的に減らすことができる。別の実施形態では、程度を変えることでプロセッサへのクロック信号を減らす、もしくは完全に止めることができる。更に、プロセッサへの電源供給を減らすもしくはなくすために、前述の１以上の手法の組合せを採用することができる。更に本発明はプロセッサを休止状態にするために、上述した１以上の手法を使用することに限定されない。さらに、休止状態という用語は上記の定義に限定されない。
【００１８】
本文では、プロセッサを“ウェイキングアップ(waking up)”するという用語は、プロセッサへの電源供給、もしくはクロック信号の送信を再開することを言う。これに対応して、“ウェイキングアップ条件(wake-up condition)”とは、プロセッサをウェイクアップするリクエストを示す条件である。しかし、用語“ウェイキングアップ”は上記の定義に限定されない。
【００１９】
本文では、用語“チェックポイント”は、概して所望のプロセッサステータス及び／又はプロセッサの、もしくは、プロセッサが配置されるコンピュータシステムの、条件を示す、あるいは条件の成立を示すプログラム命令を称する。一実施形態では、プロセッサのプログラムコードのチェックポイントはプロセッサに休止ステート(hibernation state)としても周知の休止状態(hibernation condition)へ入るように命令する。一実施形態では、複数の実行可能な休止ステートの電力レベルのうちの１つ以上がチェックポイント命令において特定される。別の実施形態では、チェックポイントは、１以上の各々のローカルメモリのコンテンツを各々のプロセッサの外部メモリへシフトさせるように、１以上のプロセッサに命令を出す。上述した事項に加え、ステータス及び／又は命令を示すためにチェックポイントを採用することができる点に留意されたい。更に、用語“チェックポイント”は上述の定義に限定されない。
【００２０】
本文では、用語“ホットスポット”は、所望の温度よりも温度が高い装置内のロケーションを称する。一実施形態では、ホットスポットが存在し得るのは、装置内のロケーションがしきい値温度よりも高い場合であり、しきい値は予め定められているか、もしくは装置がオペレーションを行う間に調整することができる。
【００２１】
一実施形態では、用語“ホットスポット”は、マルチプロセッサコンピュータシステムの全プロセッサのうち、最もホットな（最も高温の）マルチプロセッサコンピュータシステムのプロセッサを称する。他の形態では、用語“ホットスポット”はマルチプロセッサコンピュータシステムのその他の大多数のプロセッサよりも高温のプロセッサを称する。しかし、用語“ホットスポット”は上記の定義に限定されない。
【００２２】
本文では、用語“コンピュータシステム”は演算用装置を称する。一実施形態では、コンピュータシステムはシングルプロセッサであってよい。別の実施形態では、コンピュータシステムはブロードバンドエンジンなどのマルチプロセッサデバイスであってよく、これはプロセッサエレメント（ＰＥ）として周知である。更に別の実施形態では、用語“コンピュータシステム”は複数のマイクロプロセッサシステムを含み、かつ、マイクロプロセッサシステムの外部メモリ、バスシステムなどのデータ送信装置、及びデータ通信制御デバイスを含む（しかし、これらに限定されない）その他のデバイスを含むことができる。しかし、用語“コンピュータシステム”は上述の定義に限定されない。
【００２３】
本文では、用語“進行中のプログラム実行処理(ongoing program execution)”及び“進行中の実行処理(ongoing execution)”はプロセッサのデータ再配置処理、及び／又はプロセッサのハイバネーション処理を実装するために行われるオペレーション以外のオペレーションを言う。しかし、用語“進行中のプログラム実行処理”は前述の定義に限定されない。本文中における、プロセッサに“ポーズをかける（pausing）”という用語は、この進行中のプログラム実行処理中止することである。好適には、ポーズをかけられた後でも、プロセッサはハイバネーション処理とプロセッサのデータ再配置処理に関連付けられるタスクを実施することができる。しかし、用語“ポーズをかける”は前述の定義に限定されない。
【００２４】
図面において、同一の要素には同じ参照符号が付されている。図１は本発明の１つ以上の特徴を実行するのに適したプロセスシステム１００である。簡潔を期すとともに明確になるように、図１のブロック図は装置１００の説明として本明細書において言及かつ記載される。しかしこの記載は同等の効力を有する１つ以上の方法の様々な形態に容易に適用できることを理解されたい。装置１００には好ましくはプロセッサ１０２、ローカルメモリ１０４、好ましくはダイナミックランダムアクセスメモリ（ＤＲＡＭ）などのシステムメモリ１０６、及びバス１０８とが含まれる。
【００２５】
プロセッサ１０２はシステムメモリ１０６からデータを要求し、所望の結果を実現するようにデータの操作ができる、任意の従来技術を利用して実装されることができる。例えば、プロセッサ１０２は、標準マイクロプロセッサや分散型マイクロプロセッサなどを含む、ソフトウェア及び／又はファームウエアを実行できる、任意の従来のマイクロプロセッサを用いて実装されうる。例えば、プロセッサ１０２は、データ（ピクセルデータなどであり、グレースケール情報、色情報、テキスチャデータ、ポリゴン情報、ビデオフレーム情報等を含むピクセルデータなどのデータ）を要求して操作がすることができるグラフィックスプロセッサであることができる。
【００２６】
ローカルメモリ１０４は、好ましくはプロセッサ１０２と同じチップに配置される。しかし、ローカルメモリ１０４は、好ましくはハードウェアキャッシュメモリ機能を実装するためのオンチップ又はオフチップのハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが存在しない、という点で、従来のハードウェアキャッシュメモリでないことが好ましい。他の実施形態では、ローカルメモリ１０４は、キャッシュメモリであり、及び／又は付加的キャッシュメモリを用いることができる。チップ上のスペースには限りがあることが多いため、ローカルメモリは共有メモリ１０６よりも相当サイズが小さいことがある。プロセッサ１０２は、好ましくは、プログラムを実行したりデータを操作したりするために、バス１０８経由でシステムメモリ１０６からそれぞれのローカルメモリ１０４にデータ（プログラムデータを含みうる）をコピーするため、データアクセスリクエストを出す。データアクセスを容易にするためのメカニズムは、ＤＭＡ法などの公知の技術のいずれかを用いて実装されうる。この機能は、好ましくはメモリインタフェース回路によって実行される。
【００２７】
好ましくは、装置１００はバス１０８などを通じてプロセッサ１０２と動作可能に結合されたリードオンリーメモリ（ＲＯＭ）などの記録媒体を含む。好適には、この記録媒体１１０には、プロセッサ１０２のローカルメモリ１０４に読み出すことができ、かつ、安全な復号キーを使用して情報を解読するように動作できる、信頼できる復号化プログラムが含まれる。好ましくはこの記録媒体１１０は、復号化プログラムによって信頼性のある機能が提供され、外部のソフトウェア操作からはこのプログラムを改ざんできないセキュリティレベルが実現される、永続的にプログラム可能なデバイス（例えば、フラッシュＲＯM）である。好適には、記録媒体１１０のセキュリティレベルは、未承認のエンティティからは復号化プログラム及び／又はその他の情報（信頼できる復号キーなど）へアクセスできないものとなっている。例えば、好ましくは、装置１００を製造する間に復号化プログラムが記録媒体１００に構築され記録される。
【００２８】
プロセッサ１０２とローカルメモリ１０４は共通の集積回路上に配置されることが好ましい。従って、これらのエレメントは本文中では“プロセッサ１０２”と呼ばれる。他の実施形態では、記録媒体１１０はまた、１つ又はそれ以上のその他のエレメントを備えた共通の集積回路上に配置される。
【００２９】
図２は、２つ以上のサブプロセッサ１０２を有すマルチプロセッサシステム１００Ａのブロック図である（本文ではマルチプロセッシングシステムとも呼ばれる）。本文において、その他の箇所に記されている概念はマルチプロセッサシステム１００Ａに応用することができる。システム１００Ａには、複数のプロセッサ１０２Ａ−１０２Ｄと、関連のローカルメモリ１０４Ａ−Ｄと、バスシステム１０８を介して相互接続されている共有メモリ１０６とが含まれる。共用メモリ１０６は本文ではメインメモリ１０６又はシステムメモリ１０６とも呼ばれる。例として４つのプロセッサ１０２が例示されているが、本発明の精神と範囲を逸脱することなく、任意の数のプロセッサが用いられてよい。プロセッサ１０２の各々は同様の構造、または異なる構造であってよい。
【００３０】
ローカルメモリ１０４は、好ましくは、各々のプロセッサ１０２と同じチップ（同じ半導体基板）上に配置される。しかし、ローカルメモリ１０４は、ハードウェアキャッシュメモリ機能を実装するためのオンチップ又はオフチップのハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが存在しないという点で、好ましくは従来のハードウェアキャッシュメモリではない。
【００３１】
プロセッサ１０２は、好ましくは、プログラムを実行したりデータを操作したりするために、バスシステム１０８経由でシステムメモリ１０６からそれぞれのローカルメモリ１０４へデータ（プログラムデータを含みうる）をコピーするため、データアクセスリクエストを出す。データアクセスを容易にするためのメカニズムは、好ましくは、各プロセッサ（図示せず）に対してＤＭＡＣ(Direct Memory Access Controller)を用いて実装される。好適には、各プロセッサのＤＭＡＣの機能は、本発明のその他の特徴について本文の別の箇所で説明しているように、実質的に同じである。
【００３２】
システムメモリ１０６は好ましくは、高帯域メモリ接続（図示せず）を介してプロセッサ１０２に結合されたダイナミックランダムアクセスメモリ（ＤＲＡＭ）である。更に、もしくは他の形態では、ＤＲＡＭ１０６はバス１０８を介してプロセッサ１０２に接続される。システムメモリ１０６はＤＲＡＭであるのが望ましいが、メモリ１０６は例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光メモリ、ホログラフィックメモリなどとして、その他の方法を用いて実装されうる。
【００３３】
各プロセッサ１０２は、好ましくは、論理命令がパイプライン式で処理される、プロセッシングパイプラインを用いて実装される。パイプラインは命令が処理されるいずれの数のステージに分けられうるが、一般にパイプラインは１つ以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、及び、命令の実行ステップを有している。これに関連して、プロセッサ１０２は命令バッファ、命令デコード回路、依存性チェック回路、命令発行回路、及び命令実行ステージ、を有する。
【００３４】
他の実施形態では、プロセッサ１０２とローカルメモリ１０４とは、共通の半導体基盤上に配置されうる。１つ以上の更なる実施形態では、共有メモリ１０６は共通の半導体基盤上に配置されることができ、または、別々の半導体基板上などに別々に配置されることもできる。
【００３５】
他の実施形態では、１以上のプロセッサ１０２が、他のプロセッサ１０２と動作可能となるように結合され、バス１０８を経由して共有メモリ１０６と結合できる、メインプロセッサとして動作することができる。メインプロセッサは、他のプロセッサ１０２によるデータ処理をスケジューリングし調整を行う。しかし他のプロセッサ１０２とは違って、メインプロセッサは、共有メモリ１０６と、プロセッサ１０２の１つ以上のローカルメモリ１０４と、の少なくとも一方から得た動作可能なキャッシュデータであるハードウェアキャッシュメモリに結合することができる。メインプロセッサは、ＤＭＡ技術などの、任意の従来技術を利用してプログラムを実行してデータの操作を行うために、バス１０８を経由してシステムメモリ１０６からキャッシュメモリへ、データ（プログラムデータを含みうる）をコピーするため、データアクセスリクエストを出す。
【００３６】
一実施形態では、マルチプロセッシングシステム１００Ａには更に、直接的に、又はバスシステム１０８を介して共有メモリ１０６及びプロセッサ１０２Ａ−１０２Ｄに結合されている記録媒体（図示せず）が含まれる。この記録媒体は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、ＤＲＡＭ、プログラマブルＲＯＭ（ＰＲＯＭ）、又はその他従来の、データ記録を行う実装品である。更に、付加的データ記録媒体（図示せず）も共有メモリ１０６及び／またはプロセッサ１０２Ａ−１０２Ｄと直接的に、又はバスシステム１０８を介して結合される。
【００３７】
図３は、本発明の１以上の形態により使用に適した複数のマルチプロセッサシステムを含むコンピュータシステム３００のブロック図である。マルチプロセッサシステム１１０Ａ１−１１０Ａ３は図２のマルチプロセッサシステム１００Ａと等価でありうるが、この形態に限定されるわけではない。コンピュータシステム３００は、更にメインメモリ３０２と、揮発性メモリ及び／又は非揮発性メモリ（図示せず）、及び／又はランダムアクセスメモリ（ＲＡＭ）及び／又はシーケンシャルメモリアクセスデータ記録デバイス（図示せず）が内蔵された付加的記録媒体を含み得る。コンピュータシステム３００は更にバス３０４を好適に含む。コンピュータシステム３００も更なるデータ通信、及びデータ通信制御装置（図示せず）を含み得る。簡素化のために図３では、マルチプロセッサシステム１１０Ａ１−１１０Ａ３の各々の内部構造の説明図を省略している。
【００３８】
図４Ａ及び４Ｂ（図４と総称する）は共に、本発明の１以上の形態によるハイバネーション処理と、プロセッサのウェイクアップ処理に関連して実施され得る処理ステップを例示したフローチャートを形成している。以下では、図４−６を参照し、図４の処理ステップのシーケンスを説明する。
【００３９】
プロセスはアクション４００から開始する。コンピュータシステム（シングルプロセッサ１０２であってよい）によって、ポーズ条件が成立したかどうかが判断される（４０２）。ポーズ条件が成立していない場合は、進行中のプログラム実行処理を好適に継続する（４０４）。ポーズ条件が成立しているとプロセスは継続する（４０６）。以下にその詳細を説明する。
【００４０】
好ましい実施形態では、プロセッサ１０２で実行されているプログラムのチェックポイント命令を受けたプロセッサ１０２がポーズ条件を発生させる（成立させる）。チェックポイント命令によって、プロセッサ１０２がハイバネーション処理を行う時間であるということがプロセッサ１０２に示される。しかし、他の実施形態では、休止状態にされるプロセッサはプロセッサ１０２に接続された別のデバイスから適切な指示を受け取る。例えばマルチプロセッサシステムにおいて、１プロセッサはポーズ条件が成立したことを示す信号をそのプロセッサ自体へ、及び／又はマルチプロセッサシステム内の１つ以上の他のプロセッサへ送信する。
【００４１】
別の実施形態では、ポーズされるプロセッサ１０２に動作可能となるように結合されたタイマー（ソフトウェア駆動型又はハードウェア駆動型のいずれか）はタイムアウトし、プロセッサ１０２へポーズ条件が成立したことを示す割込み信号を送信する。このようにしてリアルタイムスケジュールに従いポーズ条件が成立する。
【００４２】
別の実施形態では、コンピュータシステム内の１以上の特定イベントの発生に基づき、ポーズ条件が発生する（成立する）。そのようなイベントとしては、ポーズされるプロセッサが配置されているコンピュータシステムの作業負荷レベルが特定のしきい値を下回ることや、例えばコンピュータシステムのテストポイントなどのコンピュータシステム内に、あるしきい値温度を上回る温度条件が発生すること、が挙げられるが、イベントはこれらに限定されない。更に他の形態では、特定のイベントには、ポーズがかけられるプロセッサ１０２と通信するプロセッサがチェックポイント命令を実行すること、が挙げられる。
【００４３】
ポーズ条件が成立すると、好ましくは、プロセッサ１０２のプログラム実行処理にポーズがかけられる（４０６）。
【００４４】
図５を参照すると、第１ブロックはローカルメモリ１０４を例示しており、ヒープポインタ６０４及びスタックポインタ６０６の場所が示されている。ローカルメモリ１０４を例示する第１ブロックから、ローカルメモリ１０４を例示する第２ブロックを指す矢印は一般に、これらの２つのブロック間の遷移を示すものであり、任意の２つのメモリの場所と場所の間のデータ転送を具体的にマッピングするものではない。
【００４５】
好適には、矢印６０４及び６０８はローカルメモリ１０４のヒープポインタとスタックポインタの場所をそれぞれ示す。好ましくは、各ポインタ６０４及び６０８の場所を説明する情報は、後でメインメモリ１０６へ転送し、最終的にローカルメモリ１０４へ復帰するようにローカルメモリ１０４のブロック６２６と６２８にそれぞれ記録する。
【００４６】
図４及び図５を参照すると、メインメモリ１０６からローカルメモリ１０４のフリースペース６０６に暗号化プログラムと公開鍵６１８を好適に読み込む（４０８）。好ましくは、暗号化プログラムと公開鍵６１８を使用してローカルメモリ１０４のデータ６０２が暗号化処理される（４１０）。好ましくは、スタック６１０も暗号化処理される（４１０）。暗号化プログラム自体も暗号化処理される。暗号化処理が行われたプログラム及びデータ（双方とも“モジュール”として周知である）６１２はシステムメモリ１０６に好適に保存される（４１２）。暗号化処理が行われたスタック６１４もシステムメモリ１０６に好適に保存される。好ましくは、ローカルメモリ１０４のヒープポインタ６０４とスタックポインタ６０８はメインメモリ１０６に保存される。メインメモリ１０６に保存されたポインタ６０４と６０８を組合わせたものは参照符号６１６で示される。好適には、各ポインタ６０４と６０８はメインメモリ１０６へ保存される前に暗号化処理はされない。しかし別の実施形態では、各ポインタ６０４と６０８はメインメモリ１０６へ保存される前に暗号化処理が行われ得る。アクション４１２が完了すると、メインメモリ１０６は残りのフリースペース６２０を有することになる。
【００４７】
アクション４１４では、プロセッサ１０２によって電力消費が減らされ、その結果、プロセッサ１０２を休止ステートにすることができる。一実施形態において、休止ステートでは、プロセッサ１０２の電力使用量はゼロもしくはゼロに近い。他の形態では、休止状態にされたプロセッサ１０２は、その電力消費レベルを、プロセッサ１０２の通常動作の電力レベルよりも低いレベルとするようにその電力量を変えるものとしてもよい。一実施形態では、休止ステートに入るよう選択したプロセッサに指示を出すエンティティは、所望の休止電力レベルを選択し、かつ、そのプロセッサが選択した休止電力レベルで休止状態にされるようにアクションを実施する。適切な“エンティティ”はプロセッサ１０２自体又は休止状態にされるプロセッサと通信するデバイスであり得る。
【００４８】
アクション４１６では、プロセッサのウェイクアップ条件が成立したか否かが判定される。この判定は、プロセッサ１０２の電力レベルに応じて、休止状態にあるプロセッサ１０２自体で行うか、もしくは、休止状態にされたプロセッサ１０２と通信する別のデバイスで行う。具体的には、休止状態のプロセッサ１０２への電源供給が完全に止まる場合には、好適には、このウェイクアップ条件は、休止状態にあるプロセッサ１０２以外のデバイスから検出される。他の形態では、休止状態のプロセッサ１０２の動作条件が、例えば、割込み信号の検出、もしくはシリアル又はパラレルデータ通信などの、（例えばゼロではない電源供給レベルによって）ある種の基本的通信動作が可能なものである場合には、休止状態にあるプロセッサ１０２自体がウェイクアップ条件を検出可能となる。
【００４９】
ある実施形態では、プロセッサ１０２内で発生中のイベントから、もしくは休止状態にされたプロセッサ１０２が配置されているコンピュータシステム内のその他の場所で発生中のイベントから、所定の時間が経過したことを契機として、プロセッサがレジューム状態になる。一実施形態では、プロセッサのウェイクアップ条件が成立するのは、休止状態のプロセッサ１０２と通信するプロセッサが、プロセッサのウェイクアップ条件の成立を示すプログラムチェックポイントなどのプログラム命令を受けた場合である。別の実施形態では、休止状態のプロセッサ１０２と通信する１以上の他のプロセッサに対する作業負荷レベル、もしくは休止状態にするプロセッサ１０２が配置されているコンピュータシステムに対する作業負荷レベルが特定のしきい値を上回ると、プロセッサのウェイクアップ条件が発生する（成立する）。
【００５０】
休止状態のプロセッサ１０２への電源供給が完全に止まるという実施形態においては、好適には、別のプロセッサ（“検出プロセッサ”）、もしくは休止状態にあるプロセッサ１０２と通信するその他の適切なデバイスが、プロセッサのウェイクアップ条件（の成立）を検出する。その後、休止状態にあるプロセッサ１０２への電源供給は元に戻り、その結果、休止状態にされたプロセッサ１０２をウェイキングアップさせる、つまり、復帰させる。好適には、復帰したプロセッサは、必要に応じて、従来の初期化処理を完了する。その後、検出プロセッサは好適には、復帰したプロセッサ１０２が休止ステートから既に復帰済みであることを、復帰したプロセッサ１０２へ伝え、この復帰したプロセッサ１０２をその次のアクションへと導く。好ましくはこの次のアクションは、以下に説明するアクション４２０である。復帰したプロセッサ１０２の状態は、割込み信号を送信することによって、バスシステムを経由してデータを送信することによって、もしくはその他の周知の通信手段によって、伝送される。ある実施形態では、復帰したプロセッサ１０２によって、複数の様々な割込み信号を用いて、一連の実行可能なポストウェイキング(post-wake-up)アクションを発生させる。
【００５１】
休止状態のプロセッサ１０２が、基本のプロセッサオペレーションを行うのに十分な電力レベルを備えているという実施形態では、プロセッサのウェイクアップ条件の成立を示すために、休止状態のプロセッサ１０２へ割込み信号が送られる。その後、次に実行するアクションは、復帰したプロセッサ１０２自体が選択する。他の形態では、外部デバイスが、レジューム状態のプロセッサを次に実行するアクションへと導く第２の割り込み信号を送るようにしてもよい。
【００５２】
アクション４１６へ戻ると、プロセッサを復帰させる条件が成立しない場合、好適には、休止状態にあるプロセッサ１０２が低電力もしくはゼロ電力レベルに維持される（４１８）。ウェイクアップ条件が成立すれば、プロセッサ１０２への動作電力供給が好適に再開される（４２０）。
【００５３】
図４及び６を参照すると、好ましくは、プロセッサ１０２は暗号化されたモジュール６１２、暗号化されたスタック６１４、及びポインタ（好ましくは、暗号化されていない）をメインメモリ１０６からローカルメモリ１０４へ転送する（４２２）。好適には、プロセッサ１０２も復号化プログラムとプライベートキー６０２を記録媒体１１０からローカルメモリ１０４に読み出す。本文においては、復号化プログラムと秘密鍵は参照符号６０２と総称される。好ましい実施形態では、記録媒体１１０は好適には揮発性ＲＯＭである。しかし、別の実施形態では、記録媒体１１０として信頼性の高いその他のメモリを用いることができる。
【００５４】
一般に、プロセッサ１０２は様々な条件ステートを実現するため、ステータス変更するように動作できる。これらの状態を簡単に紹介し、以下で更に詳細を説明する。第１の状態では、プロセッサ１０２は通常モードである。好ましくは、プロセッサ１０２は第２のステート（プロセッサ１０２はオペレーションのプロテクトモードである）へ遷移できるように動作できる。好ましくは、プロセッサ１０２は、プロセッサ１０２内に信頼できる復号化コードを呼び出して実行する第３の状態へと遷移するように動作できる。
【００５５】
本開示では、２つのプロテクトモードが考えられる。そのようなモードによって、プロセッサのローカルメモリ１０４を、プロセッサ１０２の外部メモリとの通信を不能とまでさせ得るレベル等の、さまざまなレベルのインシュレートレベル即ち隔離レベルが与えられる。このセクションで説明するモードは、セキュアモード、即ち安全モード、及び隔離モードである。
【００５６】
オペレーションの安全モードでは、プロセッサ１０２のローカルメモリ１０４（もしくはその他のメモリデバイス、レジスタなど）に記録されたデータに対して、リクエストがサービスされることはなく、従って、信頼できる環境が保証されてセンシティブオペレーションを実行することができる。安全モードであっても、プロセッサ１０２はシステムメモリ１０６からローカルメモリ１０４へのデータ転送を要求し、もしくは、ローカルメモリ１０４からシステムメモリ１０６へのデータ転送を要求し得る。更にまた、プロセッサ１０２は、オペレーションの安全モードにある間に、ソースもしくは宛先（アドレス）に関係なく、信頼できる環境の内外にデータ転送を開始する。好ましい実施形態では、オペレーションのプロテクトモードのうちの１つにある場合、信頼できる環境はプロセッサ１０２とそれに含まれるローカルメモリ１０４に限定される。
【００５７】
オペレーションの隔離モードでは、プロセッサ１０２、いずれの外部デバイス、のどちらも、プロセッサ１０２のローカルメモリ１０４の内外へデータ転送を開始しない。
【００５８】
好ましい実施形態では、暗号化プログラム及び／又は復号化プログラムなどの、全てのプログラムは、プロテクトモードのうちの１つのプロテクトモードに入る前にメインメモリ１０６及び／又は記録媒体１１０から読み出される。しかし別の実施形態では、オペレーションの安全モードが実行されると、プロセッサ１０２は記録媒体１１０からローカルメモリ１０４に解読プログラムを読み出す。好適には、信頼できる復号キーも記録媒体１１０内に記録され、また、後で使用するためにローカルメモリ１０４にも保存される。
【００５９】
好適には、プロセッサ１０２はアクション４２４においてプロテクトモードに入る。本文において先に説明しているように、このプロテクトモードは隔離モードもしくは安全モードのどちらでもよい。好ましいのは隔離モードであるが、別の実施形態では、安全モードを採用することができる。
【００６０】
好ましくは、プロセッサがプロテクトモードになった時点で、プロセッサ１０２はプライベートキーを使用して暗号化されたモジュール６１２を解読し（４２６）、解読した情報をローカルメモリ１０４に記録する。アクション４２８において、プロセッサ１０２は好適にプロテクトモードを出る。好適には、進行中のプログラム実行処理は、復帰したプロセッサにおいてレジュームされる（４３０）。
【００６１】
別の実施形態では、アクション４０６でポーズをかけられた進行中のプログラム実行処理は、アクション４１４で休止状態にされたプロセッサ以外のプロセッサでレジュームされ得る。好適には、他のプロセッサがアクション４２２から４３０までを実施し、進行中のプログラム実行処理をこの方法でレジュームする。“その他”のプロセッサ上でアクション４２０を実行する必要性は、他のプロセッサがアクション４２２の開始前にパワーアップもしくは休止状態にされるかによって決定する。
【００６２】
図７は本発明の１以上の形態によるプロセッサのデータ再配置処理を行うために実施され得る処理ステップを例示したフローチャートである。図８は本発明の１以上の形態による複数のプロセッサに対するプロセッサのデータ再配置処理の、データの保存部分及びデータの再配置部分を例示したブロック図である。以下の図７及び図８を参照しつつ、図７の処理ステップを説明する。図７の方法は図２のマルチプロセッサシステムの実施形態に関連して説明されるが、方法はこの実施形態に限定されない。
【００６３】
好ましくは、プロセスはアクション７００から開始する。アクション７０２でプロセッサのデータ再配置条件が成立したかどうかが判断される。プロセッサのデータ再配置条件が成立していない場合は、プロセッサのオペレーションは継続する（７０４）。プロセッサのデータ再配置条件が成立すると、処理は継続する（７０６）。
【００６４】
好ましくは、プロセッサのデータ再配置条件は実行期間が終了したことを契機として成立する。実行期間は所定の継続時間を有しているのが望ましい。しかし、別の実施形態では、実行期間の継続時間はプロセッサ１０２による進行中のプログラム実行処理で決定される。好ましくは、実行期間中において、様々なプロセッサが、割込みを行うことなく、実行されているプログラムにアクセスできる。
【００６５】
一実施形態では、実行期間の継続時間はＳＰＵのフレームレートに基づき定められる。好ましい一実施形態では、このフレームレートは１６ミリセカンドごとに１フレームである。従って、実行期間の継続時間は１６ミリセカンド（msecs）である。
【００６６】
一実施形態では、プロセッサ１０２はイメージをスクリーン上に表示するためのデータを用意する。このスクリーン上に連続する各イメージは“フレーム”であり、またフレームが処理されスクリーン上に表示される速度は“フレームレート”である。一般的に、プロセッサ１０２を割込まずにシングルフレームの完成に必要な処理を終えることが望ましいことから、プロセッサ１０２がシングルフレームを完成するのに必要な時間は、有効で便利な実行期間の継続時間に対応する。しかし別の実施形態では、複数のフレーム処理時間に等しい実行時間の継続期間を採用することができる。その他の実施形態では、フレームの処理時間よりも短い実行期間の継続時間を採用することができる。
【００６７】
その他の実施形態では、連続するプロセッサのデータ再配置処理の分割期間は、当然のことながら様々なフレームレートに一致するように調整され得る。更に、その他の別の実施形態では、実行期間はプロセッサのデータ再配置を行っている１以上のＳＰＵのフレームレートよりも短い又は長い継続時間を有することができる。
【００６８】
好ましい実施形態では、プロセッサの実行期間の継続時間はプロセッサ１０２の１以上の特徴に基づき定められる。実行期間を決定するための最も重要な２つの特徴とは、温度上昇速度（プロセッサ１０２の温度が上昇する速度であり、温度は１秒ごとに測定される）及び、“臨界温度上昇時間”（温度上昇速度の関数）、である。“臨界温度上昇時間”は、プロセッサ１０２が通常の動作温度から臨界点にまで昇温する間の時間である。好適には、プロセッサの温度を常にその温度よりも低く維持し、かつ、プロセッサの温度がその温度よりも高くなってはならない、という温度が臨界点である。臨界温度上昇時間とは、高需要のアプリケーションプログラムの実行する際に、プロセッサが通常の動作温度から臨界点にまで上昇するために必要な時間である。求められるアプリケーションプログラムの電力要件は変化し得ることから、臨界温度上昇時間の継続時間は範囲内で変化し得る。
【００６９】
一般に、実行期間は、プロセッサのデータ再配置処理を行うプロセッサ間で電力消費が平均化するというまでに短いものとなっている。一実施形態では、実行期間は臨界温度上昇時間の５０％未満である。別の実施形態では、実行期間は臨界温度上昇時間の３５％以上、５０％以下である。更に別の実施形態では、実行期間は臨界温度上昇時間の２０％以上、３５％以下である。更に別の実施形態では、実行期間は臨界温度上昇時間の１０％以上、２０％以下である。更にまた別の実施形態では、実行期間はプロセッサ１０２の臨界温度上昇時間の１０％以下である。しかし、本発明は実行期間について上述した特定範囲の継続時間に限定されない。
【００７０】
他の実施形態では、プロセッサのデータ再配置条件は、ＳＰＵが配置されているコンピュータシステム、もしくは１つ以上のＳＰＵと通信するコンピュータシステム内でイベントが発生するといった、特定期間が終了すること以外で成立し得る。例えば、特定のしきい値を超過している（プロセッサもしくはコンピュータシステム全体の）ワークロードレベルは、プロセッサのデータ再配置条件を成立させることができる。他の実施形態では、特定のしきい値を上回る（ＳＰＵ又はコンピュータシステムのその他の場所の）テストポイント温度などの温度条件が採用され、プロセッサのデータ再配置条件を発生させる（成立させる）。
【００７１】
ＳＰＵ１０２のＤＭＡＣ（図示せず）は好ましくは同期化される（７０６）。好適には、ＳＰＵ１０２のオペレーションにポーズがかけられる（７０８）、ＳＰＵ１０２にポーズをかけるステップには、全てのダイレクトメモリアクセスメモリオペレーションを終了させ、また、進行中のプログラム実行処理を停止させるステップを含む。
【００７２】
好ましくは、ＳＰＵ１０２は暗号化プログラムと関連の公開鍵を各々のローカルメモリに読み込む（７１０）。好ましくは、シングルマルチプロセッサシステム１００Ａ内のＳＰＵ１０２は共通の公開鍵と共通の秘密鍵を用いる。しかし、別の実施形態では、マルチプロセッサシステム内の別のＳＰＵは異なる公開鍵／秘密鍵のペアを用いることができる。特定のローカルメモリ１０４ｘのコンテンツが異なるマルチプロセッサシステム上のプロセッサのローカルメモリに再配置される場合、宛先マルチプロセッサシステムの公開鍵はそのローカルメモリ１０４ｘの中に読み込まれる必要がある。
【００７３】
各々のローカルメモリのデータは記録された公開鍵を用いて好適に暗号化される（７１２）。暗号化されたデータはシステムメモリ１０６へ保存される（７１４）。図８を参照すると、４つのローカルメモリ、１０４Ａ−１０４Ｄ（ＬＭ０−ＬＭ３）からのデータはデータ転送８００、８０４、８０８、及び８１２によって、システムメモリ１０６に保存される。データ転送矢印の上に示されている符号に関して、“Ｓ”は保存（Ｓａｖｅ）を、“Ｌ”は読み込み（Ｌｏａｄ）を、“Ｄ”はデータ（Ｄａｔａ）を示し、文字“Ｄ”に続く数字はデータが発生するローカルメモリの番号を識別する。従って、“Ｓ（Ｄ１）”８０４はローカルメモリ１  １０４Ｂからシステムメモリ１０６へのデータ保存を識別する。またＬ（Ｄ１）８０６は、ローカルメモリ２  １０４Ｃにローカルメモリ１から発生するデータの読み込みを行うことを識別する。
【００７４】
各々のローカルメモリ１０４Ａ−１０４Ｄから発生するデータのために宛先プロセッサが指定される（７１６）。本セクションで議論する“指定(designating)”アクションは、アクション７２２において“読み出し”を行う前の任意の時点で行うことができる。一実施形態ではアクション７１６において、指定アクションを実施するために用いられるプロセッサのデータ再配置スキームは、多数の連続するプロセッサデータ再配置処理用に固定される。他の形態では、このスキームはそれぞれのプロセッサのデータ再配置処理用に、別々に選択される。
【００７５】
図８のブロック図はデータの送信元のプロセッサから宛先プロセッサへデータ転送をマッピングする、１つの利用可能なプロセッサのデータ再配置スキーム（又は“再配置パターン”）を例示している。しかし、別の実施形態では、多くの他のプロセッサのデータ再配置スキームが実装され得る。
【００７６】
図８に例示した実施形態では、４つのＳＰＵの各ローカルメモリ１０４Ａ−１０４Ｄが示されている。各々のローカルメモリからシステムメモリ１０６へデータを移動させる４つの“保存”動作８００、８０４、８０８、及び８１２が示されている。４つの“読み出し”動作８０２、８０６、８１０、及び８１４も示されている。本実施形態では、プロセッサのデータ再配置スキームにおいて、送信元のローカルメモリの識別番号を単に１つ増やす。当然のことながら、最も数字の大きなローカルメモリから発生するデータは除く。最も数字の大きなローカルメモリから発生するプロセッサのデータは最終的に、最も数字の小さなローカルメモリであるローカルメモリ０  １０４Ａに記録される。この再配置スキームは“４を法として”ローテーションを行う、として周知である。このプロセッサのデータ再配置パターンはマルチプロセッサシステムの一実施形態で見つけられる８つのプロセッサなどの、多数のプロセッサに簡単に応用することができる。従ってこの場合、“８を法として”ローテーションを行う、ことができる。更に、ｎ−ＳＰＵ（“ｎ”はＳＰＵの数である）マルチプロセッサシステムが関係する場合、プロセッサのデータ再配置処理は全てのＳＰＵ上で同時に実施される、もしくはこのマルチプロセッサシステム内の１以上のＳＰＵの任意のサブセット上で実施される。シングルプロセッサだけにデータが転送されるという最も単純な場合、プロセッサのデータ再配置スキームはこのシングルプロセッサからメインメモリへデータ保存し、続いてこの保存したデータをもとのシングルプロセッサへ転送する、というスキームになる。
【００７７】
別の実施形態では、各プロセッサ内の単一命令複数データ（ＳＩＭＤ：single instruction, multiple data）パイプラインの各タスクは、各プロセッサ内で４を法としてローテーションを行い、各プロセッサ内でどのようなホットスポットも生成されないようにする。その他の実施形態では、所与のプロセッサ内の各パイプラインからのデータの再配置処理は、４を法としたスキーム以外のスキームによって行われる。このようにして、好ましくはパイプラインデータ再配置処理によって、様々なパイプラインの間に電力消費の平均化が実現される。
【００７８】
ローカルメモリ１０４Ａ−１０４Ｄのうちの１つから発生するデータの読み出しを行う各オペレーションのために、送信元のＳＰＵとは異なるマルチプロセッサシステムに配置されるＳＰＵ上に宛先ローカルメモリが存在するかどうか好適に判断される（７１８）。宛先ＳＰＵが送信元のＳＰＵと同じマルチプロセッサシステム上に存在する場合、処理を好適に継続する。（７２２）。宛先ＳＰＵと送信元のＳＰＵが別々のマルチプロセッサシステム上に存在する場合、送信元のマルチプロセッサシステム上のメインメモリ１０６のデータは、好適には宛先マルチプロセッサシステム上のメインメモリへダンプされ、もしくはコピーされる（７２０）。好ましくは、このメインメモリデータ転送は、送信元マルチプロセッサシステムの送信元ＳＰＵ上で実行する前に実行中のオペレーションをサポートするために必要とされる、送信元のマルチプロセッサシステムのメインメモリ１０６に元々配置されていたプログラムとデータが、必要に応じて宛先マルチプロセッサの宛先ＳＰＵで利用できることが確実となるように実装される。
【００７９】
ローカルメモリ１０４Ａ−１０４Ｄから保存されたデータは好ましくは各々の宛先ＳＰＵのローカルメモリに読み込まれる（７２２）。
【００８０】
以下に本明細書で説明している１つ以上の特徴を実施するのに適した、マルチプロセッサシステムのための好ましいコンピュータアーキテクチャを説明する。１つ以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステム、家庭用端末、ＰＣシステム、サーバーシステム、及びワークステーションなどのメディアリッチアプリケーションを、スタンドアローン処理、及び／又は分散処理するために動作することができる、シングルチップソリューションとして実装されうる。ゲームシステムや家庭用端末などのいくつかのアプリケーションでは、リアルタイムの演算処理は必須である。例えば、リアルタイムの分散ゲームアプリケーションでは、ユーザーにリアルタイムの経験をしていると思わせる程速く、１つ以上のネットワークイメージの復元、３Ｄコンピュータグラフィック、オーディオ生成、ネットワーク通信、物理的シミュレーション、及び人工知能処理が実行される必要がある。従って、マルチプロセッサシステムの各プロセッサは、短時間で、かつ予測可能時間でタスクを完了する必要がある。
【００８１】
このために、また、本コンピュータアーキテクチャによれば、マルチプロセッシングコンピュータシステムの全プロセッサは、共通の演算モジュール（あるいはセル）から構成される。この共通の演算モジュールは、構造が一貫しており、また好ましくは、同じ命令セットアーキテクチャを採用している。マルチプロセッサコンピュータシステムは、１つ以上のクライアント、サーバー、ＰＣ、モバイルコンピュータ、ゲームマシン、ＰＤＡ、セットトップボックス、電気器具、デジタルテレビ、及びコンピュータプロセッサを使用する他のデバイスから形成されうる。
【００８２】
複数のコンピュータシステムもまた、所望に応じてネットワークのメンバーとなりうる。一貫モジュール構造により、マルチプロセッシングコンピュータシステムによるアプリケーション及びデータの効率的高速処理が可能になる。またネットワークが採用される場合は、ネットワーク上にアプリケーション及びデータの高速送信が可能にする。この構造はまた、大きさや処理能力が様々なネットワークのメンバーの構築を単純化し、また、これらのメンバーが処理するアプリケーションの準備を単純化する。
【００８３】
図９を参照すると、基本的な処理モジュールはプロセッサエレメント（ＰＥ）５００である。ＰＥ５００はＩ／Ｏインターフェース５０２、プロセッシングユニット（ＰＵ）５０４、及び複数のサブプロセッシングユニット５０８、すなわち、サブプロセッシングユニット５０８Ａ、サブプロセッシングユニット５０８Ｂ、サブプロセッシングユニット５０８Ｃ、及びサブプロセッシングユニット５０８Ｄを備えている。ローカル（あるいは内部）ＰＥバス５１２は、データ及びアプリケーションを、ＰＵ５０４、サブプロセッシングユニット５０８、及びメモリインターフェース５１１間に送信する。ローカルＰＥバス５１２は、例えば従来のアーキテクチャを備えることができ、又は、パケット−スイッチネットワークとして実装されうる。パケットスイッチネットワークとして実装される場合は、更なるハードウェアが必要であるものの、利用可能な帯域幅を増やす。
【００８４】
ＰＥ５００はデジタル論理回路を実装するよう様々な方法を用いて構成されうる。しかしながら、好ましくは、ＰＥ５００はシリコン基板に相補性金属酸化膜半導体（ＣＭＯＳ：Complementary Metal Oxide Semiconductor）を用いた単一の集積回路とすることも好適な構成である。基板の他の材料には、ガリウムヒ素、ガリウムアルミウムヒ素、及び、様々なドーパントを採用している他の、いわゆる、ＩＩＩ−Ｂ化合物を含む。ＰＥ５００はまた、高速単一磁束量子（ＲＳＦＱ：Rapid Single-flux-Quantum）論理回路などの超電導デバイスを用いて実装されうる。
【００８５】
ＰＥ５００は高帯域のメモリ接続５１６を介して、共有（メイン）メモリ５１４と密接に結合するよう構成できる。好ましくは、メモリ５１４はダイナミックランダムアクセスメモリ（ＤＲＡＭ：Dynamic Random Access Memory）であるが、メモリ５１４は例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ：Static Random Access Memory）、磁気ランダムアクセスメモリ（ＭＲＡＭ：Magnetic Random Access Memory）、光メモリ、ホログラフィックメモリなどとして、他の方法を用いて実装されうる。
【００８６】
ＰＵ５０４とサブプロセッシングユニット５０８は好ましくは、それぞれダイレクトメモリアクセス（ＤＭＡ）の機能を備えたメモリフローコントローラ（ＭＦＣ：Memory Flow Controller）と結合されており、該コントローラはメモリインターフェース５１１と共に、ＰＥ５００のＤＲＡＭ５１４とサブプロセッシングユニット５０８、ＰＵ５０４間のデータ転送を促進する。ＤＭＡＣ及び／又はメモリインターフェース５１１は、サブプロセッシングユニット５０８及びＰＵ５０４に一体化して、別個に配置されうる。更に、ＤＭＡＣの機能及び／又はメモリインターフェース５１１の機能は、１つ以上の（好ましくは全ての）サブプロセッシングユニット５０８及びＰＵ５０４に統合することができる。また、ＤＲＡＭ５１４はＰＥ５００と統合されていても、別個に配置されていてもよいことに留意されたい。例えば、ＤＲＡＭ５１４は、実例で示しているように、チップ外に配置しても、あるいは一体化してオンチップ配置としてもよい。
【００８７】
ＰＵ５０４はデータ及びアプリケーションをスタンドアローン処理できる標準プロセッサなどでありうる。作動時、ＰＵ５０４は、好ましくは、サブプロセッシングユニットによるデータ及びアプリケーション処理をスケジューリングし、調整を行う。サブプロセッシングユニットは好ましくは、単一命令複数データ（ＳＩＭＤ：Single Instruction Multiple Data）プロセッサである。ＰＵ５０４の管理下、サブプロセッシングユニットは並列で、かつ独立して、これらのデータ及びアプリケーション処理を行う。ＰＵ５０４は好ましくは、ＲＩＳＣ（Reduced Instruction Set Computing）技術を採用しているマイクロプロセッサアーキテクチャであるパワーＰＣ（ＰｏｗｅｒＰＣ）コアを用いて実装される。ＲＩＳＣは、単純な命令の組合せを用いて、より複雑な命令を実行する。従って、プロセッサのタイミングは、単純で高速の動作に基づくものであり、マイクロプロセッサがより多くの命令を所定のクロック速度で実行できるようにする。
【００８８】
ＰＵ５０４はサブプロセッシングユニット５０８により、データ及びアプリケーション処理をスケジューリングし調整を行う、メインプロセッシングユニットの役割を果たしているサブプロセッシングユニット５０８のうちの、１つのサブプロセッシングユニットにより実装されうる。更に、プロセッサエレメント５００内には１つ以上の実装されたＰＵが存在しうる。
【００８９】
本モジュール構造によれば、特定のコンピュータシステムにおけるＰＥ５００の数は、そのシステムが要求する処理能力に基づく。例えば、サーバーにおけるＰＥ５００の数は４、ワークステーションにおけるＰＥ５００の数は２、ＰＤＡにおけるＰＥ５００の数は１とすることができる。特定のソフトウェアセルの処理に割当てられるＰＥ５００のサブプロセッシングユニット数は、セル内のプログラムやデータの複雑度や規模により決定される。
【００９０】
図１０は、サブプロセッシングユニット（ＳＰＵ）５０８の好ましい構造および機能を例示する。ＳＰＵ５０８アーキテクチャは好ましくは、多目的プロセッサ（平均して高性能を広範なアプリケーションに実現するように設計されているもの）と、特殊目的プロセッサ（高性能を単一のアプリケーションに実現するように設計されているもの）間の間隙を埋める。ＳＰＵ５０８は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどに高性能を実現するように、また、リアルタイムアプリケーションのプログラマーに高度な制御を提供するように設計される。ＳＰＵ５０８は、グラフィックジオメトリーパイプライン、サーフェースサブディビジョン、高速フーリエ変換、画像処理キーワード、ストリームプロセッシング、ＭＰＥＧのエンコード／デコード、暗号化、復号化、デバイスドライバの拡張、モデリング、ゲーム物理学、コンテンツ制作、音響合成及び処理が可能である。
【００９１】
サブプロセッシングユニット５０８は２つの基本機能ユニットを有し、それらはＳＰＵコア５１０Ａ及びメモリフローコントローラ（ＭＦＣ）５１０Ｂである。ＳＰＵコア５１０Ａはプログラムの実行、データ操作、などを行い、一方でＭＦＣ５１０ＢはシステムのＳＰＵコア５１０ＡとＤＲＡＭ５１４の間のデータ転送に関連する関数を実施する。
【００９２】
ＳＰＵコア５１０Ａはローカルメモリ５５０、命令ユニット（ＩＵ：Instruction Unit）５５２、レジスタ５５４、１つ以上の浮動小数点実行ステージ５５６、及び１つ以上の固定小数点実行ステージ５５８を有している。ローカルメモリ５５０は好ましくは、ＳＲＡＭなどの、シングルポートのランダムメモリアクセスを用いて実装される。殆どのプロセッサはキャッシュの導入により、メモリへのレイテンシを小さくする一方で、ＳＰＵコア５１０Ａはキャッシュより小さいローカルメモリ５５０を実装している。更に、リアルタイムアプリケーション（及び本明細書に述べているように、他のアプリケーション）のプログラマーたちに一貫した、予測可能なメモリアクセスレイテンシを提供するため、ＳＰＵ５０８Ａ内のキャッシュメモリアーキテクチャは好ましくない。キャッシュメモリのキャッシュヒット／ミスという特徴のために、数サイクルから数百サイクルまでの、予測困難なメモリアクセス時間が生じる。そのような予測困難性により、例えばリアルタイムアプリケーションのプログラミングに望ましい、アクセス時間の予測可能性が低下する。ＤＭＡ転送をデータの演算処理にオーバーラップさせることで、ローカルメモリＳＲＡＭ５５０においてレイテンシの隠蔽を実現しうる。これにより、リアルタイムアプリケーションのプログラミングが制御しやすくなる。ＤＭＡの転送に関連するレイテンシと命令のオーバーヘッドが、キャッシュミスにサービスしているレイテンシのオーバーヘッドを超過していることから、ＤＭＡの転送サイズが十分に大きく、十分に予測可能な場合（例えば、データが必要とされる前にＤＭＡコマンドが発行される場合）に、このＳＲＡＭのローカルメモリ手法による利点が得られる。
【００９３】
サブプロセッシングユニット５０８のうちの、所定の１つのサブプロセッシングユニット上で実行しているプログラムは、ローカルアドレスを使用している関連のローカルメモリ５５０を参照する。しかしながら、ローカルメモリ５５０のそれぞれの場所はまた、システムのメモリマップ全体内に実アドレス（ＲＡ：Real Address）も割当てられる。これにより、プリビレッジソフトウェア（Privilege Software）はローカルメモリ５５０をプロセスの有効アドレス（ＥＡ：Effective Address）にマッピングする、ローカルメモリ５５０と別のローカルメモリ５５０間のＤＭＡ転送を促進する。ＰＵ５０４はまた、有効アドレスを用いてローカルメモリ５５０に直接アクセスすることができる。好ましい実施形態では、ローカルメモリ５５０は５５６キロバイトのストレージを有し、またレジスタ５５２の容量は１２８×１２８ビットである。
【００９４】
ＳＰＵコア５０４Ａは、好ましくは、論理命令がパイプライン式で処理される、プロセッシングパイプラインを用いて実装される。パイプラインは命令が処理される任意の数のステージに分けられうるが、一般にパイプラインは１つ以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、及び、命令の実行ステップを有している。これに関連して、ＩＵ５５２は命令バッファ、命令デコード回路、依存性チェック回路、及び命令発行回路、を有する。
【００９５】
命令バッファは、好ましくは、ローカルメモリ５５０と結合され、また、フェッチされる際に一時的に命令を格納するよう動作できる、複数のレジスタを備えている。命令バッファは好ましくは、全ての命令が一つのグループとしてレジスタから出て行く、つまり、実質的に同時に出て行くように動作する。命令バッファはいずれの大きさでありうるが、好ましくは、２あるいは３レジスタよりは大きくないサイズである。
【００９６】
一般に、デコード回路は命令を分解し、対応する命令の関数を実施する論理的マイクロオペレーションを生成する。例えば、論理的マイクロオペレーションは、算術論理演算、ローカルメモリ５５０へのロード及びストアオペレーション、レジスタソースオペランド、及び／又は即値データオペランドを特定しうる。デコード回路はまた、ターゲットレジスタアドレス、構造リソース、機能ユニット、及び／又はバスなど、命令がどのリソースを使用するかを示しうる。デコード回路はまた、リソースが要求される命令パイプラインステージを例示した情報を与えることができる。命令デコード回路は好ましくは、命令バッファのレジスタ数に等しい数の命令を実質的に同時にデコードするように動作する。
【００９７】
依存性チェック回路は、所定の命令のオペランドがパイプラインの他の命令のオペランドに依存しているかどうかを判断するために試験を行う、デジタル論理回路を含む。その場合、所定の命令はそのような他のオペランドが（例えば、他の命令が実行の完了を許容することにより）アップデートされるまで、実行されることができない。依存性チェック回路は好ましくは、デコーダー回路１１２から同時に送られる複数の命令の依存性を判断する。
【００９８】
命令発行回路は浮動小数点実行ステージ５５６、及び／または固定小数点実行ステージ５５８へ命令を発行するように動作することができる。
【００９９】
レジスタ５５４は好ましくは、１２８エントリのレジスタファイルなどの、相対的に大きな統一レジスタファイルとして実装される。これにより、レジスタが足りなくなる状態を回避するよう、レジスタリネーミングを必要としない、深くパイプライン化された高周波数の実装品が可能になる。一般に、リネーミング用ハードウェアは、処理システムのかなりの割合の領域と電力を消費する。その結果、ソフトウェアのループ展開、又は他のインターリーブ技術によりレイテンシがカバーされると、最新のオペレーションが実現されうる。
【０１００】
好ましくは、ＳＰＵコア５１０Ａはスーパースカラアーキテクチャであり、これにより１つ以上の命令がクロックサイクル毎に発行される。ＳＰＵコア５１０Ａは好ましくは、命令バッファから送られる同時命令の数、例えば２〜３命令（各クロックサイクル毎に２命令あるいは３命令が発行されることを意味する）に対応する程度まで、スーパースカラとして動作する。所望の処理能力に応じて、多数の、あるいは少数の浮動小数点実行ステージ５５６と、固定小数点実行ステージ５５８が採用される。好ましい実施形態では、浮動小数点実行ステージ５５６は１秒あたり３２０億の浮動小数点演算速度で演算し（３２ＧＦＬＯＰＳ）、また、固定小数点実行ステージ５５８は演算速度が１秒あたり３２０億回（３２ＧＯＰＳ）となっている。
【０１０１】
ＭＦＣ５１０Ｂは、好ましくは、バスインターフェースユニット（ＢＩＵ：Bus Interface Unit）５６４、メモリ管理ユニット（ＭＭＵ：Memory Management Unit）５６２、及びダイレクトメモリアクセスコントローラ（ＤＭＡＣ：Direct Memory Access Controller）５６０を備えている。ＤＭＡＣ５６０は例外として、ＭＦＣ５１０Ｂは好ましくは、低電力化設計とするため、ＳＰＵコア５１０Ａやバス５１２と比べて半分の周波数で（半分の速度で）実行する。ＭＦＣ５１０Ｂはバス５１２からＳＰＵ５０８に入力されるデータや命令を処理するように動作することができ、ＤＭＡＣに対しアドレス変換を行い、また、データコヒーレンシーに対しスヌープオペレーションを提供する。ＢＩＵ５６４はバス５１２とＭＭＵ５６２及びＤＭＡＣ５６０間にインターフェースを提供する。従って、ＳＰＵ５０８（ＳＰＵコア５１０Ａ及びＭＦＣ５１０Ｂを含む）及びＤＭＡＣ５６０は、バス５１２と物理的に、及び／又は論理的に結合されている。
【０１０２】
ＭＭＵ５６２は、好ましくは、メモリアクセスのために、実アドレスに有効アドレスを変換するように動作することができる。例えば、ＭＭＵ５６２は、有効アドレスの上位ビットを実アドレスビットに変換しうる。しかしながら下位のアドレスビットは好ましくは変換不能であり、また、実アドレスの形成及びメモリへのアクセスリクエストに使用する場合には、ともに論理的及び物理的なものと考えられる。１つ以上の実施形態では、ＭＭＵ５６２は、６４ビットのメモリ管理モデルに基づいて実装され、また、４Ｋ−、６４Ｋ−、１Ｍ−、及び１６Ｍ−バイトのページサイズを有する２６４バイトの有効アドレススペースと、２５６ＭＢのセグメントサイズを提供しうる。ＭＭＵ５６２は好ましくは、ＤＭＡコマンドに対し、２６５バイトまでの仮想メモリ、２４２バイト（４テラバイト）までの物理メモリをサポートするように動作することができる。ＭＭＵ５６２のハードウェアは、８−エントリでフルアソシアティブのＳＬＢと、２５６−エントリと、４ウエイセットアソシアティブのＴＬＢと、ＴＬＢに対してハードウェアＴＬＢのミスハンドリングに使用される４×４リプレースメント管理テーブル（ＲＭＴ：Replacement Management Table）と、を含む。
【０１０３】
ＤＭＡＣ５６０は、好ましくは、ＳＰＵコア５１０Ａや、ＰＵ５０４、及び／又は他のＳＰＵなどの、１つ以上の他のデバイスからのＤＭＡコマンドを管理するように動作することができる。ＤＭＡコマンドには３つのカテゴリが存在し、それらは、プットコマンド、ゲットコマンド、及びストレージ制御コマンドである。プットコマンドは、ローカルメモリ５５０から共有メモリ５１４へデータを移動させるよう動作する。ゲットコマンドは、共有メモリ５１４からローカルメモリ５５０へデータを移動させるよう動作する。また、ストレージ制御コマンドには、ＳＬＩコマンドと同期化コマンドが含まれる。この同期化コマンドは、アトミックコマンド(atomic command)、信号送信コマンド、及び専用バリアコマンドを有しうる。ＤＭＡコマンドに応答して、ＭＭＵ５６２は有効アドレスを実アドレスに変換し、実アドレスはＢＩＵ５６４へ送られる。
【０１０４】
ＳＰＵコア５１０Ａは、好ましくは、ＤＭＡＣ５６０内のインターフェースと通信（ＤＭＡコマンド、ステータスなどを送る）するために、チャネルインターフェース及びデータインターフェースを使用する。ＳＰＵコア５１０Ａはチャネルインターフェースを介して、ＤＭＡＣ５６０のＤＭＡキューへＤＭＡコマンドを送る。ＤＭＡコマンドがＤＭＡキューに存在すると、そのコマンドはＤＭＡＣ５６０内の発行及び完了論理により処理される。ＤＭＡコマンドに対する全てのバストランザクションが終了すると、完了信号がチャネルインターフェースを越えて、ＳＰＵコア５１０Ａへ送られる。
【０１０５】
図１１はＰＵ５０４の一般的な構造及び機能を例示している。ＰＵ５０４は２つの機能ユニットを有しており、それらはＰＵコア５０４Ａとメモリフローコントローラ（ＭＦＣ）５０４Ｂである。ＰＵコア５０４Ａは、プログラム実行、データ操作、マルチプロセッサマネージメント関数などを実施し、一方でＭＦＣ５０４Ｂはシステム１００のＰＵコア５０４Ａとメモリスペース間のデータ転送に関連する機能を実行する。
【０１０６】
ＰＵコア５０４ＡはＬ１キャッシュ５７０、命令ユニット５７２、レジスタ５７４、１つ以上の浮動小数点実行ステージ５７６、及び１つ以上の固定小数点実行ステージ５７８を有することができる。Ｌ１キャッシュは、共有メモリ１０６、プロセッサ１０２、又はＭＦＣ５０４Ｂを介してメモリスペースの他の部分、から受信したデータに対するデータキャッシングの機能を提供する。ＰＵコア５０４Ａが好ましくはスーパーパイプラインとして実装されるので、命令ユニット５７２は好ましくは、フェッチ、デコード、依存性チェック、発行、などを含む、多くのステージを備えた命令パイプラインとして実装される。ＰＵコア５０４はまた好ましくは、スーパースカラ構成であり、一方で１つ以上の命令がクロックサイクル毎に命令ユニット５７２から発行される。高度な処理（演算）能力を実現するために、浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８は、パイプライン構成で複数のステージを有する。所望の処理能力に応じて、多数の、あるいは少数の浮動小数点実行ステージ５７６と、固定小数点実行ステージ５７８が採用される。
【０１０７】
ＭＦＣ５０４Ｂは、バスインターフェースユニット（ＢＩＵ）５８０、Ｌ２キャッシュメモリ、キャッシュ不可能なユニット（ＮＣＵ：Non-Cachable Unit）５８４、コアインターフェースユニット（ＣＩＵ：Core Interface Unit）５８６、及びメモリ管理ユニット（ＭＭＵ）５８８を備えている。殆どのＭＦＣ５０４Ｂは、低電力化設計とするために、ＰＵコア５０４Ａとバス１０８と比べて、半分の周波数（半分の速度）で実行する。
【０１０８】
ＢＩＵ５８０はバス１０８とＬ２キャッシュ５８２とＮＣＵ５８４論理ブロック間にインターフェースを提供する。このために、ＢＩＵ５８０はバス１０８上で、十分にコヒーレントなメモリオペレーションを実施するために、マスタデバイスとして、また同様にスレーブデバイスとして機能する。マスタデバイスとして、ＢＩＵ５８０はＬ２キャッシュ５８２とＮＣＵ５８４のために機能するため、バス１０８へロード／ストアリクエストを供給する。ＢＩＵ５８０はまた、バス１０８へ送信されうるコマンドの合計数を制限するコマンドに対し、フロー制御機構を実装しうる。バス１０８のデータオペレーションは、８ビート要するように設計され、そのために、ＢＩＵ５８０は好ましくは１２８バイトキャッシュラインを有するように設計され、また、コヒーレンシーと同期化の粒度単位は１２８ＫＢである。
【０１０９】
Ｌ２キャッシュメモリ５８２（及びサポートハードウェア論理回路）は、好ましくは、５１２ＫＢのデータをキャッシュするように設計されている。例えば、Ｌ２キャッシュ５８２はキャッシュ可能なロード／ストア、データプリフェッチ、命令プリフェッチ、命令プリフェッチ、キャッシュオペレーション、及びバリアオペレーションを処理しうる。Ｌ２キャッシュ５８２は好ましくは８ウエイのセットアソシアティブシステムである。Ｌ２キャッシュ５８２は６つのキャストアウトキュー（６つのＲＣマシンなど）と一致する６つのリロードキューと、８つ（６４バイト幅）のストアキューを備えうる。Ｌ２キャッシュ５８２はＬ１キャッシュ５７０において、一部の、あるいは全てのデータのコピーをバックアップするように動作しうる。この点は、処理ノードがホットスワップである場合に状態を回復するのに便利である。この構成により、Ｌ１キャッシュ５７０が少ないポート数でより速く動作することができ、また、より速くキャッシュツーキャッシュ転送ができる（リクエストがＬ２キャッシュ５８２でストップしうるため）。この構成はまた、キャッシュコヒーレンシー管理をＬ２キャッシュメモリ５８２へ送るための機構も提供しうる。
【０１１０】
ＮＣＵ５８４は、ＣＩＵ５８６、Ｌ２キャッシュメモリ５８２、及びＢＩＵ５８０と連動しており、通常は、ＰＵコア５０４Ａとメモリシステム間のキャッシュ不可能なオペレーションに対して、キューイング／バッファリング回路として機能する。ＮＣＵ５８４は好ましくは、キャッシュ抑制ロード／ストア、バリアオペレーション、及びキャッシュコヒーレンシーオペレーションなどの、Ｌ２キャッシュ５８２により処理されないＰＵコア５０４Ａとの全ての通信を処理する。ＮＣＵ５８４は好ましくは、上述の低電力化目的を満たすように、半分の速度で実行されうる。
【０１１１】
ＣＩＵ５８６は、ＭＦＣ５０４ＢとＰＵコア５０４Ａの境界に配置され、実行ステージ５７６、５７８、命令ユニット５７２、及びＭＭＵユニット５８８からのリクエストに対し、また、Ｌ２キャッシュ５８２及びＮＣＵ５８４へのリクエストに対し、ルーティング、アービトレーション、及びフロー制御ポイントして機能する。ＰＵコア５０４Ａ及びＭＭＵ５８８は好ましくはフルスピードで実行され、一方でＬ２キャッシュ５８２及びＮＣＵ５８４は２：１の速度比で動作することができる。従って、周波数の境界がＣＩＵ５８６に存在し、その機能の一つは、２つの周波数ドメイン間でリクエストの送信及びデータのリロードを行いながら、周波数の差を適切に処理することである。
【０１１２】
ＣＩＵ５８６は３つの機能ブロックを有しており、それらは、ロードユニット、ストアユニット、及びリロードユニットである。更に、データプリフェッチ関数がＣＩＵ５８６により実施され、また好ましくは、ロードユニットの機能部である。ＣＩＵ５８６は、好ましくは、
（ｉ）ＰＵコア５０４ＡとＭＭＵ５８８からのロード及びストアリクエストを受ける、
（ｉｉ）フルスピードのクロック周波数をハーフスピードに変換する（２：１のクロック周波数変換）、
（ｉｉｉ）キャッシュ可能なリクエストをＬ２キャッシュ５８２へ送り、キャッシュ不可能なリクエストをＮＣＵ５８４へ送る、
（ｉｖ）Ｌ２キャッシュ５８２に対するリクエストとＮＣＵ５８４に対するリクエストを公正に調停する、
（ｖ）ターゲットウインドウでリクエストが受信されてオーバーフローが回避されるように、Ｌ２キャッシュ５８２とＮＣＵ５８４に対する転送のフロー制御を提供する、
（ｖｉ）ロードリターンデータを受信し、そのデータを実行ステージ５７６、５７８、命令ユニット５７２、又はＭＭＵ５８８へ送る、
（ｖｉｉ）スヌープリクエストを実行ステージ５７６、５７８、命令ユニット５７２、又はＭＭＵ５８８へ送る、
（ｖｉｉｉ）ロードリターンデータとスヌープトラフィックを、ハーフスピードからフルスピードへ変換する、
ように動作可能である。
【０１１３】
ＭＭＵ５８８は、好ましくはＰＵコア５４０Ａに対して、第２レベルのアドレス変換機能などによりアドレス変換を行う。第１レベルの変換は好ましくは、ＭＭＵ５８８よりも小型で高速でありうる、別々の命令及びデータＥＲＡＴ（Effective to Real Address Translation）配列により、ＰＵコア５０４Ａにおいて提供されうる。
【０１１４】
好ましい実施形態では、ＰＵコア５０４は、６４ビットの実装品で、４−６ＧＨｚ、１０Ｆ０４で動作する。レジスタは好ましくは６４ビット長（１つ以上の特殊用途のレジスタは小型でありうるが）であり、また、有効アドレスは６４ビット長である。命令ユニット５７２、レジスタ５７４、及び実行ステージ５７６と５７８は好ましくは、（ＲＩＳＣ）演算技術を実現するために、ＰｏｗｅｒＰＣ技術を用いて実装される。
【０１１５】
本コンピュータシステムのモジュール構造に関する更なる詳細は、米国特許第６，５２６，４９１号に解説されており、この特許は参照として本願に組込まれる。
【０１１６】
本発明の少なくとも１つの更なる態様によれば、上述の方法及び装置は、図面において例示しているような、適切なハードウェアを利用して実現されうる。この種のハードウェアは、公知の技術のいずれかを用いて実装することができる。この例には、標準的なデジタル回路、ソフトウェアプログラムおよび／またはファームウェアプログラムを実行するように動作可能な公知のプロセッサのいずれか、プログラマブル読出し専用メモリ（ＰＲＯＭ）、プログラマブル配列ロジックデバイス（ＰＡＬ）などの、１つ以上のプログラム可能なデジタル装置またはシステムなどがある。更に、図示している装置は、特定の機能ブロックに分割されて示されているが、そのようなブロックは別々の回路を用いて、及び／あるいは１つ以上の機能ユニットに組み合わせて実装されうる。更に、本発明の様々な態様は、輸送及び／又は配布のために、（フロッピーディスク、メモリチップ、などの）適切な記憶媒体に格納されうる、ソフトウェア、及び／又はファームウェアプログラムを通じて実装されうる。
【０１１７】
本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は、本発明の原理および利用の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨および範囲から逸脱することなく、これら例示的な実施形態を種々に変更したり、上記以外の構成を考案し得ることが理解されよう。
【図面の簡単な説明】
【０１１８】
【図１】本発明の１つ以上の態様により適しうる処理システムを例示しているブロック図。
【図２】本発明の１つ以上の態様により使用されうるサブプロセッサ（ＳＰＵ）を２つ以上有するマルチプロセッサシステムの構造を例示した説明図。
【図３】本発明の１つ以上の態様により使用されうる図２の複数のマルチプロセッシングシステム（もしくは“マルチプロセッサシステム”）を含むコンピュータシステムのブロック図。
【図４Ａ】本発明の１つ以上の態様によるハイバネーション処理とプロセッサの復帰動作処理に関連して実施されうる処理ステップを例示しているフローチャートの第１部の説明図。
【図４Ｂ】本発明の１つ以上の態様により実施されうる処理ステップを例示した図４Ａに示すフローチャートの第２部の説明図。
【図５】本発明の１つ以上の態様によるハイバネーション処理中のデータ処理を例示しているブロック図。
【図６】本発明の１つ以上の態様によるハイバネーションステートからプロセッサの復帰動作処理中のデータ処理を例示しているブロック図。
【図７】本発明の１つ以上の態様によるプロセッサのデータ再配置処理を行うために実施されうる処理ステップを例示しているフローチャート。
【図８】本発明の１つ以上の態様による複数のプロセッサに対してプロセッサのデータ再配置処理のデータ保存とデータ回復部を例示しているブロック図。
【図９】本発明の１つ以上の更なる態様の実装に使用されうる好適なプロセッサエレメント（ＰＥ）を例示した説明図。
【図１０】本発明の１つ以上の更なる態様により適しうる、図９の一般的なサブプロセッシングユニット（ＳＰＵ）の構造を例示した説明図。
【図１１】本発明の１つ以上の更なる態様により適しうる、図９の一般的なプロセッシングユニット（ＰＵ）の構造を例示した説明図。
【符号の説明】
【０１１９】
１０２      プロセッサ
１０４      ローカルメモリ
１０６      メモリ
１０８      バス
１１０      記録媒体
１１２      デコーダー回路
５００      プロセッサエレメント
５０２      インターフェース
５０４      コア
５０８      サブプロセッシングユニット
５１１      メモリインターフェース
５１２      バス
５１４      メモリ
５５０      ローカルメモリ
５５２、５５４  レジスタ
５７０      キャッシュ
５７２      命令ユニット
５７４      レジスタ
５８２      キャッシュメモリ
６０４      ヒープポインタ
【図１】
2006318470.tif 000003
【図２】
2006318470.tif 000004
【図３】
2006318470.tif 000005
【図４Ａ】
2006318470.tif 000006
【図４Ｂ】
2006318470.tif 000007
【図５】
2006318470.tif 000008
【図６】
2006318470.tif 000009
【図７】
2006318470.tif 000010
【図８】
2006318470.tif 000011
【図９】
2006318470.tif 000012
【図１０】
2006318470.tif 000013
【図１１】
2006318470.tif 000014