(57)【要約】【解決手段】１又は複数の処理要素の電力及びエネルギーの自動選択制御は、高度な並列プログラマブルデータプロセッサにおいてモニタされた条件に、並列処理の程度を一致させる。例えば、並列プロセッサのロジックは、（例えば、特定のタスクのため、又は、検出された温度によって）プログラム動作が、データパスの全幅未満を必要とするときを検出する。これを受けて、制御ロジックは、並列処理能力のサブセットを要求する動作モードを自動的に設定する。すなわち、必要とされない少なくとも１つの並列処理要素は、エネルギーの節約、及び／又は、熱（すなわち、電力消費）を下げるために停止される。後に、能力を追加する動作が適切な場合、ロジックは、処理条件の変化を検出し、動作モードを、一般には全幅のようなより広いデータパスのモードへ自動的に設定する。このモード変化は、以前に停止された処理要素を再起動する。【選択図】      図１
2008544350.tif 000002
【特許請求の範囲】
【請求項１】
並列データプロセッサの動作の並列処理を制御する方法であって、
前記並列データプロセッサによって実行される処理に関連する１又は複数の条件をモニタすることと、
前記モニタされた１又は複数の条件が、第１の状態に対応している場合、第１の幅からなるデータパスを提供する前記データプロセッサの２つの並列処理要素において、１又は複数の命令を並列して実行することと、
前記モニタされた１又は複数の条件が、第２の状態に対応している場合、前記第１の幅よりも狭い第２の幅を持つデータを処理できるように、前記２つの並列処理要素における第１の１つにおいて、１又は複数の命令を実行することであって、この間、前記２つの並列処理要素のうちの第２の１つは、アクティブではないことと
を備える方法。
【請求項２】
前記第２の並列処理要素がアクティブではない間、前記第１の並列処理要素において、１又は複数の命令を実行するステップは、
前記第１の幅を持つデータの並列データ処理を要求する命令を、前記第２の幅を持つデータの並列データ処理を要求する２つの命令を含む複数の命令に展開することと、
前記第１の並列処理要素において、前記２つの命令を連続して実行することと
を備える請求項１に記載の方法。
【請求項３】
前記第１の並列処理要素によって命令の処理を実行することは、実行された命令に基づいて６４ビット幅のデータ処理を提供し、
前記第１及び第２の並列処理要素によって命令の処理を並列して実行することは、実行された命令に基づいて１２８ビット幅のデータ処理を提供する
請求項２に記載の方法。
【請求項４】
前記第１及び第２の並列処理要素の各々は、演算ロジックユニットを備える請求項１に記載の方法。
【請求項５】
前記第１及び第２の並列処理要素で実行される命令は、Single Instruction, Multiple Data（ＳＩＭＤ）タイプ命令である請求項４に記載の方法。
【請求項６】
前記第１及び第２の並列処理要素は、ＳＩＭＤコプロセッサの要素である請求項５に記載の方法。
【請求項７】
前記並列処理要素における命令の実行は、マルチメディアデータ処理を含む請求項１に記載の方法。
【請求項８】
前記第２の並列処理要素がアクティブではない場合、前記第２の並列処理要素へ電力がカットオフされる請求項１に記載の方法。
【請求項９】
前記第２の並列処理要素がアクティブではない場合、前記第２の並列処理要素からのクロック信号がカットオフされる請求項１に記載の方法。
【請求項１０】
前記条件をモニタすることは、前記プロセッサの温度をモニタすることを含み、前記第１の状態は、閾値と等しい又は閾値未満であるモニタされた温度に関連し、前記第２の状態は、閾値と等しい又は閾値を超える温度に関連する請求項１に記載の方法。
【請求項１１】
前記条件をモニタすることは、前記命令の実行によってなされるタスクをモニタすることを含み、前記第１の状態は、前記タスクが、前記第１の幅を持つデータの処理を頻繁に要求する場合である請求項１に記載の方法。
【請求項１２】
前記タスクをモニタすることは、前記第１の幅を持つデータの処理を、命令がどのくらいの頻度で要求するかを判定することを含む請求項１１に記載の方法。
【請求項１３】
前記条件のモニタから、前記第１の状態から前記第２の状態への遷移を検出することと、
前記第１の状態から前記第２の状態への検出された遷移に応じて、前記第２の並列処理要素を停止することと、
前記条件のモニタから、前記第２の状態から前記第１の状態への遷移を検出することと、
前記第２の状態から前記第１の状態への検出された遷移に応じて、前記第２の並列処理要素を起動することと
を更に備える請求項１に記載の方法。
【請求項１４】
前記停止するステップ及び起動するステップは、スラッシングの可能性を緩和するために適応される請求項１３に記載の方法。
【請求項１５】
並列データプロセッサの動作の並列処理を制御する方法であって、
第１の幅を持つデータを処理できるように、前記データプロセッサの第１及び第２の並列演算ロジックユニットにおいて並列して１又は複数の命令を実行することと、
前記並列データプロセッサによる処理に関連する条件を感知することと、
前記感知された条件の状態に応じて、前記第２の並列演算論理ユニットを停止することと、
前記第２の演算論理ユニットが停止している間、前記第１の幅よりも狭い第２の幅を有するデータを処理できるように、前記第１の並列演算ロジックユニットにおいて１又は複数の命令を実行することと
を備える方法。
【請求項１６】
前記第２の演算論理ユニットがアクティブではない間、前記第１の並列演算ロジックユニットにおいて１又は複数の命令を実行するステップは、
前記第１の幅を持つデータの並列したデータ処理を要求する命令を、前記第２の幅を持つデータの並列したデータ処理を要求する２つの命令を含む複数の命令に展開することと、
前記第１の演算論理ユニットにおいて、２つの命令を連続して実行することと
を備える請求項１５に記載の方法。
【請求項１７】
前記感知された条件は、前記プロセッサの温度が閾値に達することを含む請求項１５に記載の方法。
【請求項１８】
前記感知された条件は、前記第１の幅を有するデータの処理を要求する処理が、閾値レベルより下がる頻度に関連する請求項１５に記載の方法。
【請求項１９】
並列データプロセッサの動作の並列処理を制御する方法であって、
第１の幅を持つデータを処理できるように、前記データプロセッサの第１及び第２の並列処理要素において並列して１又は複数の命令を実行することと、
前記並列データプロセッサによる処理に関連する条件を感知することと、
前記感知された条件の状態に応じて、前記第２の並列処理要素を停止することと、
前記第２の並列処理要素が停止している間、前記第１の幅を持つデータの並列したデータ処理を要求する命令を、前記第１の幅よりも狭い第２の幅を持つデータの並列したデータ処理を要求する２つの命令を含む複数の命令に展開することと、
前記第２の並列処理要素が停止している間、前記第１の並列処理要素において、２つの命令を連続して実行することと
を備える方法。
【請求項２０】
前記命令はSingle Instruction, Multiple Data（ＳＩＭＤ）タイプの命令であり、
前記第１の幅を持つデータの並列データ処理を要求する命令は、１２８ビットＳＩＭＤ命令であり、
前記２つの命令の各々は、６４ビットＳＩＭＤ命令である
請求項１９に記載の方法。
【請求項２１】
前記感知された条件は、前記データプロセッサの温度か、又は、前記第１の幅を持つデータの処理を要求する処理の頻度かの何れかである請求項１９に記載の方法。
【請求項２２】
並列データプロセッサであって、
プログラム命令に応答し、幅を持つデータを処理する第１の処理要素と、
プログラム命令に応答し、前記第１の処理要素と並列して動作するように接続された第２の処理要素であって、前記第１及び第２の処理要素の並列動作が、前記第１の幅よりも広い第２の幅を持つデータの並列処理を与える第２の処理要素と、
前記データプロセッサの処理動作に関連する条件をモニタし、前記モニタされた条件の閾値に対する関係に基づいて、前記第２の処理要素の起動及び停止を選択的に行うロジックと
を備える並列データプロセッサ。
【請求項２３】
前記第２の幅を持つデータの処理を要求する命令を、前記第１の幅を持つデータの処理を要求する複数の命令に変換し、前記複数の命令を、実行のために前記第１の処理要素へ連続的に供給する命令展開ステージを更に備える請求項２２に記載の並列データプロセッサ。
【請求項２４】
前記データプロセッサの温度を検出する温度センサを更に備え、
閾値が温度閾値であり、前記ロジックは、前記データプロセッサの検出された温度が、前記温度閾値を満足するか又は超えた場合には前記第２の処理要素を停止する請求項２２に記載の並列データプロセッサ。
【請求項２５】
前記データプロセッサの検出された温度が、温度閾値未満である場合、前記ロジックは、命令がどのくらいの頻度で、前記第２の幅を持つデータの処理を要求するのかの関数として、前記処理要素を起動及び停止する請求項２４に記載の並列データプロセッサ。
【請求項２６】
前記ロジックは、命令がどのくらいの頻度で、前記第２の幅を持つデータの処理を要求するかをモニタし、
前記ロジックは、前記頻度が閾値未満であれば前記第２の処理要素を停止し、
前記ロジックは、前記頻度が閾値を上回るのであれば前記第２の処理要素を起動する
請求項２２に記載の並列データプロセッサ。
【請求項２７】
前記第１及び第２の処理要素は、Single Instruction, Multiple Data（ＳＩＭＤ）タイプ命令に応じてデータを処理するように構成された請求項２２に記載の並列データプロセッサ。
【請求項２８】
前記第１及び第２の処理要素の各々は、ＳＩＭＤタイプ演算ロジックユニットを備える請求項２７に記載の並列データプロセッサ。
【請求項２９】
前記第２の幅を持つデータの処理を要求するＳＩＭＤ命令を、前記第１の幅を持つデータの処理を要求する複数のＳＩＭＤ命令に変換し、前記第２の処理要素が停止している場合、前記展開された複数のＳＩＭＤ命令を、実行のために、前記第１の処理要素へ連続的に提供する命令展開ステージを更に備える請求項２７に記載の並列データプロセッサ。
【請求項３０】
前記ロジックは、スラッシングの可能性を緩和するために、前記第２の処理要素の起動及び停止を制御するように適応される請求項２２に記載の並列データプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本主題は、プロセッサの処理動作に関連する条件に、動作可能な並列処理の程度を一致させるために、例えばSingle Instruction, Multiple Data（ＳＩＭＤ）プロセッサ等のような並列データ処理要素のうちの１又は多くのアクティブ状態（アクティブ及び非アクティブ）を自動制御する技術及び装置に関する。
【背景技術】
【０００２】
多くのデバイスが、プログラム命令に従ってデータ処理機能を実行するための複雑なロジック構成を持つ、例えばマイクロプロセッサやデジタルシグナルプロセッサのような統合プロセッサを利用する。例えば、ビデオ、オーディオ、又はグラフィックスのようなマルチメディアデータのデジタル処理を必要とするアプリケーションは、消費者の人気が益々高まっている。しかしながら、そのような情報の処理は、集約的であり、そのようなデータの処理に特に適したプロセッサアーキテクチャに至る。
【０００３】
マルチメディアデータは一般に、相当な量の「並列」データを含んでいる。データは、データの個々のユニットが互いに依存しないところで「並列」である。従って、データの１ユニットの処理は、別のユニットの処理には依存せず、他の何れのユニットの処理の終了をも待つ必要がない。その結果、そのような独立したデータ処理動作を、並列に、同時に行なうことは可能である。データのある種のこの特徴、特に、マルチメディアデータの一般的な形態は、データのユニットを同時に並列して操作することができる並列プロセッサの生成に至った。マルチメディアデータの並列処理は、例えば、しばしば全体的な処理速度を実質的に増やしてしまう。
【０００４】
多くの異なるアーキテクチャ及び命令タイプが、特にマルチメディアアプリケーションのための並列データ処理のために開発された。例えば、Single Instruction, Multiple Data（ＳＩＭＤ）プロセッサは、データを並列処理する。ＳＩＭＤ命令を使用するマルチメディア処理は、多数のデータ要素上において並列して動作することによって、特定のプログラムタスクを実行するために必要な全命令数を減らし、パフォーマンスの速度を高める。プロセッサは、命令のうちの１つのストリームを実行するかもしれないが、それらの命令のＳＩＭＤ実行は、多くのデータストリームを同時に並列して処理する。
【０００５】
ＳＩＭＤプロセッサのような高度な並列データ処理タイプのデバイスを含むプロセッサの多くのアプリケーションは、プロセッサ回路が消費できる電力及びエネルギーについて厳しい制約を課す。例えば、セル電話、ＰＤＡ（ポータブルデジタルアシスタント）、及びハンドヘルドビデオゲームのようなポータブルデバイスは、バッテリ電源を利用する。しかしながら、これらデバイスは、精巧なマイクロプロセッサを含んでおり、ある場合において、マルチメディア関連処理のためにコプロセッサを利用する。そのようなアプリケーションのためのプロセッサ設計は一般に、バッテリ電源の電力の寿命のみならず、内蔵するチップの寿命を延ばすために、電力及びエネルギーの消費の注意深い制御を保証する。
【０００６】
プロセッサのアーキテクチャは、プロセッサを介するデータパスの「幅」、すなわち処理されるデータの最大サイズを確立する。ＳＩＭＤプロセッサアーキテクチャのような並列処理設計は、一般に、デバイスが、与えられたサイクル内で処理することができる並列データの最大量に対応するデータパス幅を提供するようにスケールされる。現在のＳＩＭＤプロセッサは、１度に最大１２８ビットのデータを処理することができる。これは、全体のデータパス幅が１２８ビットであることを意味する。しかしながら、与えられた何れの時間においても、プロセッサの並列部は、データの小さなユニットを処理しているかもしれない。
【０００７】
他のサイズも知られているが、今日、一般的な並列プロセッサは、６４ビット幅データパス又は１２８ビット幅データパスを提供する。データパスは、異なる幅を持つデータを取り扱うように構成されているが、並列処理要素から構成される。例えば１２８ビットデータパスは、より小さなサイズに分割されうる。すなわち、プロセッサは、特定のアプリケーションのために書かれたＳＩＭＤ命令によって指定されるような８ビット長、１６ビット長、３２ビット長、又は６４ビット長である１２８ビットデータのセクションを処理することができる。例えば８ビット命令を使用すると、１２８ビット幅のデータパスを持つプロセッサは、１６の８ビットデータユニットを並列に処理することができる。逆に６４ビットのデータパスでは、命令が１２８ビットを必要とする場合、データは２つの６４ビットのセクションに分割され、この命令は、両６４ビットセクションについて連続して実行される。各６４ビットセクションの処理はもちろん、例えば、８つの８ビットデータユニットからなる並列処理を伴う。１２８ビット命令のため処理を分割することによって、分割される処理のための時間が長くなるが、６４ビット幅のデータパスが、１２８ビット命令を処理することが可能となる。
【０００８】
これら動作によって、プロセッサの並列リソースの最適利用を可能にする。また、特定の処理アプリケーションのために、全ての処理リソースが必要とされる訳ではない時間が生じる。あるいは、フル動作が望ましい時間が生じる。例えば、プロセッサの多くの機能又はアプリケーションが、プロセッサデバイスのフルの処理能力を必要としないかもしれないし、あるいは、極めて限定された時間のみのために、フルの処理能力を必要とするかもしれない。１２８ビットのデータパスプロセッサの例では、例えば、限定されたデータ並列処理量しかないことによって、処理されるデータ量が少ないことによって、あるいは、速度に対する大きな要求がないことによって、アプリケーション又はその一部が、ある実質的な期間について、６４ビットデータ処理しか必要としないかもしれない。しかしながら、１２８ビット幅データパスを提供する要素が、フル電力が連続して供給される場合、使用されていない並列要素が、不必要にエネルギーを消費している。
【０００９】
別の例として、フルの並列処理動作は、並列要素の全ての重要な動作を含む。従って、並列要素の全ては、熱を生成している。例えば、低コストのアプリケーションのために、プラスチックパッケージにカプセル化された幾つかのプロセッサ設計は、ある温度以上の熱に耐えることができないかもしれない。長期間にわたる並列要素の全アレイの連続的高速動作は、あまりにも多くの熱を生成するかもしれない。
【００１０】
高度な並列処理を必要としないアプリケーションのための更なる効率化のために、幾つかのアプリケーションに要求されるよりも低い程度の並列処理の並列プロセッサが設計されうる。この妥協によって、電力消費量すなわち熱生成量を低減することができるが、より並列処理が必要とされる場合には、エネルギーを浪費し、パフォーマンスが低下する。
【００１１】
従って、処理タスク及び／又は環境条件に基づいて、そのようなプロセッサの並列処理を自動的に調節する技術に対するニーズがある。
【発明の開示】
【００１２】
本明細書の教示は、検出された処理条件に基づいて、並列プログラマブルデータプロセッサの１又は複数の要素の自動起動／停止（automatic activation/deactivation）を提供する。本質的に、この制御は、並列処理の動作程度を、並列データプロセッサによって実行されるタスクの要件、及び／又は、プロセッサの環境条件に一致させる。例えば、並列処理要素は、必要ではない場合、エネルギーを節約するために、あるいは、プロセッサの温度が極めて高い場合、プロセッサを冷却するために、停止されうる。これらの教示の局面は、並列処理デバイスと同様、様々な動作方法も含む。
【００１３】
例えば、並列データプロセッサの動作の並列処理を制御する方法は、並列データプロセッサによって実行される処理に関連する１又は複数の条件をモニタすることを含む。モニタされた条件が、第１の処理状態に関連している場合、第１の幅を持つデータパスを提供するデータプロセッサの２つの並列処理要素において、１又は複数の命令が並列して実行される。モニタされた条件が、第２の処理状態に関連している場合、２つの並列処理要素における第１の１つにおいて、１又は複数の命令が実行される。この状況下では、第２のより狭い幅を持つデータが、第１の要素を介して処理される。一方、２つの並列処理要素のうちの第２の１つは、アクティブではない。典型的な実装では、第２の要素を停止する（deactivating）ことによって、エネルギーを節約し、及び／又は、プロセッサによる熱生成（すなわち、電力消費）を低減する。
【００１４】
検出された処理要求又は履歴に基づいて、並列処理を自動的に制御（少なくとも１つの並列処理要素を起動及び停止）する例が開示される。このアプローチは、新たに到来する命令セット内の、又は、最近処理された命令セット内の、より広い幅を持つデータ処理に対する要求の頻度によって示されるように、並列処理の程度を、タスク要求に一致させる。他の例は、例えばデバイス温度のような、感知された環境条件に基づいて、並列処理を自動的に制御する。
【００１５】
１２８ビットのSingle Instruction, Multiple Data（ＳＩＭＤ）タイプの並列コプロセッサの例では、並列処理要素は、２つの６４ビットＳＩＭＤ演算ロジックユニット（ＡＬＵ）でありうる。両ユニットが動作可能な場合、ＡＬＵは、１２８ビット幅のデータパスを提供し、コプロセッサは、１２８ビットデータ処理モードで動作する。制御ロジックは、処理条件をモニタし、その状態を検出して、６４ビット動作への変更を保証する。これを受けて、ＡＬＵのうちの一方が自動的に停止され、引き続き、他方のＡＬＵが、６４ビット幅データ処理のための命令を実行する。しかしながら、６４ビットモードにおいてでさえ、プロセッサは、１２８ビットデータの処理のための命令を取り扱うかもしれない。例えば、方法は更に、１２８ビットデータの処理を要求するＳＩＭＤ命令を受け取ることと、そのＳＩＭＤ命令を、６４ビットデータ幅のデータの処理を要求する２つの命令に展開することとを含む。そして、この方法は、１つの動作可能な６４ビットのＡＬＵを介して順に展開することによって得られる２つの命令を実行することを含む。
【００１６】
従って、並列データプロセッサの動作の並列処理を制御する別の方法は、第１の幅を持つデータを処理できるように、データプロセッサの２つの並列処理要素において、１又は複数の命令を並列で実行することと、この並列データプロセッサによる処理に関連する条件を感知することと、感知された条件の状態を検出すると、第２の並列処理要素を停止することとを含む。この方法では、第２の並列処理要素が停止している間、より広い幅からなるデータの並列データ処理を要求する命令が、複数の命令へと展開される。そのような２つの命令は、例えば、第２のより狭い幅を持つデータの並列データ処理を要求する。第１の並列処理要素は、２つの命令を連続的に実行する。一方、第２の並列処理要素は、停止される。
【００１７】
上述したように、本教示は、１又は複数のモニタされた条件に応じて、並列処理の程度を制御するように適応された並列データプロセッサをも含む。そのようなデバイスの例は、１つの実装では、プログラム命令に応答して、例えば６４ビットであるような第１の幅を持つデータを処理する第１の処理要素を備える。このデータプロセッサはまた、プログラム命令に応答して、第１の処理ユニットと並列に動作するように接続された第２の処理ユニットを含む。これら２つの処理要素の並列動作は、第２のより広い幅（例えば１２８ビット）を持つデータを並列処理することを備える。プロセッサはまた、データプロセッサの動作を処理することに関連する条件をモニタする制御ロジックを含む。上述したように、モニタされる条件の例は、例えば、処理が第２の幅（例えば、１２８ビットのデータ）にどれくらいの頻繁で関連するのかのようなタスク関連条件のみならず、例えばプロセッサ温度のような環境条件を含む。このロジックは、モニタした条件の閾値に対する関係に基づいて、第２の処理要素を選択的に起動及び停止する。
【００１８】
このロジックは、スラッシングの可能性を緩和するために、第２の処理要素の起動及び停止を制御するように適応される。ヒステリシスを提供できるように、第２のＡＬＵの起動及び停止のため、（温度に関し、及び／又は、１２８ビット命令の頻度に関し）異なる閾値が使用される例が与えられる。別の例として、使用される閾値の１又は複数は、例えば、潜在的なスラッシング問題を示しうるタイミング測定に応じて、動的に調節される。例えば、タスク関連条件の閾値が、感度が高すぎ、第２のＡＬＵが、直近の停止後、極めて迅速に再起動されるのであれば、このロジックは、関連する閾値を増加させる。
【００１９】
更なる目的、利点、及び新規な特徴が、以下の記載において部分的に記述され、また、以下の添付図面を検討することによって、その一部が、当業者に明らかになるか、又は、これら例の結果又は動作によって学習されよう。本教示の目的及び利点は、特に特許請求の範囲で指摘された方法、手段、及びそれら組み合わせの実行又は使用によって実現及び達成される。
【発明を実施するための最良の形態】
【００２０】
図面は、限定ではなく、一例として、本教示に従って１又は複数の実施を示している。図面では、同一の参照番号が、同じ又は類似の要素を示す。
【００２１】
以下の詳細説明では、関連する教示の完全な理解を提供するために、多くの具体的な詳細が、一例として述べられる。しかしながら、本教示は、そのような詳細がなくても実現可能であることが、当業者に明白であるべきである。他の例では、本教示の局面を不必要に不明瞭にしないために、周知の方法、手順、コンポーネント、及び回路が、詳細ではなく、比較的高いレベルで記述される。
【００２２】
本明細書で開示される様々な技術は、高度な並列プログラマブルデータプロセッサにおける１又は複数の並列処理要素の自動選択的な電力及びエネルギー制御に関する。以下により詳細に記載するように、並列プロセッサのロジックは、（例えば、特定のタスクのため、又は、検出された温度によって）プログラム動作が、全幅未満のデータパスを必要とする場合を検出する。これを受けて、制御ロジックは、並列処理能力のサブセットを必要とする動作モードを自動的に設定する。必要とされない少なくとも１つの並列処理要素は、エネルギーの節約のために、及び／又は、電力消費の低減のために、停止することができる。後に、能力を追加する動作が適切な場合、このロジックは、処理条件における変化を検出し、一般に全幅である、より広いデータパスモードに、動作モードを自動的に設定する。このモード変更によって、以前に停止された処理要素を再起動する。
【００２３】
本教示は、並列データ処理要素を有するプロセッサアーキテクチャに適用可能である。ＳＩＭＤタイプ並列プロセッサアーキテクチャに関する例を説明する。添付図面に例示した例を参照して、以下に説明する。上述したように、現在、市場において利用可能なＳＩＭＤ設計は一般に、６４ビット幅データパス及び１２８ビット幅データパスを提供している。しかしながら、本教示は、それよりも狭いデータパス又はそれよりも広いデータパスを有する並列プロセッサにも適用可能である。図１の機能ブロック図は、自動並列要素電力及びエネルギー制御を説明するのに役立つＳＩＭＤデバイスのコンポーネントを例示する。当業者は、実際のＳＩＭＤプロセッサには、その他の要素も含まれうることを認識するだろう。この例では、並列処理デバイスが、例えば、関連するメインコアプロセッサ１３の制御の下で、マルチメディアデータ処理動作を実行するＳＩＭＤコプロセッサ１１として実現される。
【００２４】
図示していないが、例えば、マルチメディア処理の必要がない場合のように、メインプロセッサコア１３において動作するアプリケーションによって使用されていない場合、コプロセッサ１１の全体を停止するための制御が与えられる。別の動作モードは、デバイス１１の別のレベルの並列処理機能を利用するが、本説明は、その代わりに、ＳＩＭＤデバイス１１を介して、少なくとも幾つかの処理が要求される場合に注目する。
【００２５】
動作中、メインプロセッサコア１３は、少なくとも幾つかのデータのマルチメディア処理を要求する１又は複数のプログラムを実行する。実行される命令セットは、ＳＩＭＤ展開を含むだろう。すなわち、多くの命令が、ＳＩＭＤタイプ処理命令になるだろう。メインプロセッサコア１３は、これらＳＩＭＤ命令を、コプロセッサ１１へ発行する。そこでは、これら命令はまず、発行キュー（ＩＱ：issue queue）１５内に置かれる。発行キューは、実質的には、多くのＳＩＭＤ命令を、実行前、順に格納するためのファーストインファーストアウト（first-in-first out）バッファである。
【００２６】
ＩＱステージ１５は、命令展開ステージ１７へ順に命令を供給する。ＳＩＭＤコプロセッサ１１は、多くの異なるデータ幅モードで並列処理を提供することができる。更なるモード、又は、各モードでサポートされるデータ幅における更なるバリエーションがあろうが、本例は、６４ビット動作及び１２８ビット動作をサポートするコプロセッサ１１の構成を示す。
【００２７】
フラグビット（Ｍ）１９は、現在の動作モードを示す。ビット値は、フリップフロップに保持されるか、又は、例えばコンディションレジスタのようなより大きなレジスタ内にビットとして保持される。プロセッサ１１の一般的な例は、３２ビット制御命令レジスタ（個別に示していない）であり、モードフラグ１９は、そのレジスタ内の指定された位置における１ビットでありうる。後で詳述するように、このフラグ１９は、例えば、特定の処理タスクのために要求される並列処理レベル、又は、検出されたデバイス温度のような、検出されたプロセッサの条件に応じて自動的に設定される。展開ステージ１７は、モードフラグ１９の状態に応答する。
【００２８】
ＳＩＭＤコプロセッサはまた、処理に先立ってオペランドデータを保持するためのレジスタファイル２１と、実行ステージとを含む。この単純な例では、実行ステージは、２つのＳＩＭＤタイプの演算ロジックユニット（ＡＬＵ）２３，２５からなる。１２８モードでは、ＡＬＵ２３とＡＬＵ２５との両方がアクティブである一方、６４ビットモードでは、第１（＃１）のＡＬＵ２３のみがアクティブである。
【００２９】
６４ビットモードでは、コプロセッサ１１は、依然として、１２８ビットＳＩＭＤ命令を取り扱うことができる。その目的のために、ステージ１７は、１２８ビット命令を、それぞれ６４ビットデータを処理するために構成された２つの命令に分割することにより、１２８ビット命令を「展開」する。６４ビットモードでは、ステージ１７は、ＩＱステージ１５からのＳＩＭＤ命令ストリームにおいて、１２８ビット命令の展開により導かれた６４ビット命令のペアと同様、６４ビット幅データ処理を元々要求している命令を含む全ての命令をＡＬＵ２３へディスパッチする。１２８ビットモードでは、ステージ１７が、第１のＡＬＵ２３と第２のＡＬＵ２５との両方に命令をディスパッチする。これによって、ユニット２３及びユニット２５は、並列的に動作し、１２８ビット幅ＳＩＭＤデータ処理パスを提供する。
【００３０】
プロセッサ１１は、単一の命令ストリームを実行するが、これら命令のＳＩＭＤ実行は、多数のデータ片を、並列的に同時処理する。例えば、ＡＬＵ２３又はＡＬＵ２５はそれぞれ、２つの３２ビットデータワード又は４つの１６ビットデータワードについて同時に動作することができる。両ユニット２３，２５が並列動作する場合、組み合わされたデータ処理能力が、４つの３２ビットデータワード又は８つの１６ビットデータワードを取り扱うことができる。更に、他の並列処理の組み合わせも可能である。
【００３１】
簡単な例では、レジスタファイル２１が、データのために、２つの１２８ビット幅レジスタを備えることができる。更に、追加レジスタを備えることもできる。当業者であれば、例えば、レジスタファイルは、それぞれが１２８ビット幅を持つ１６のレジスタのような、追加レジスタを備えうることを理解するだろう。レジスタファイル２１の制御は、各１２８ビットのデータを分割し、ＡＬＵ２３とＡＬＵ２５のそれぞれに、適切な量を送る。ファイル２１のＤポートは、書き込みポートである。ポートＤによって、１２８ビット幅であるデータが、例えば、ソース（図示せず）から、又は、ＡＬＵによって出力された結果から、ファイル２１内のレジスタに書き込まれる。ファイル２１のＳポートは、読み出しポートである。ポートＳによって、１２８ビット幅であるデータが、ファイル２１内のレジスタから読み出され、例えばメモリのようなシンク（図示せず）へ送られる。レジスタファイル２９のＡポート及びＢポートは、分割されたデータ（各６４ビット）をＡＬＵ２３及びＡＬＵ２５へ提供するための読み出しポートである。
【００３２】
１２８ビットのデータ処理命令の場合、レジスタファイル２１は、データの１２８ビットのうちの下位半分を第２のＡＬＵ２５へ提供し、データの上位半分を第１のＡＬＵ２３へ送る。６４ビット命令の場合、プロセッサは、レジスタファイル内の１２８ビットのデータの下位半分又は上位半分のうちの何れかを選択し、第１のＡＬＵ２３へ提供する。１２８ビットモードでは、何れの６４ビット命令も、第１の（＃１）ＳＩＭＤ  ＡＬＵ２３へ向かい、何れの１２８ビット命令も、ＳＩＭＤ  ＡＬＵ２３とＳＩＭＤ  ＡＬＵ２５との両方に向かう。６４ビットモードでは、６４ビット命令はすべて第１のＳＩＭＤ  ＡＬＵ２３に向かう。何れの１２８ビット命令も、２つの６４ビット命令に変換される。それらは、第１のＳＩＭＤ  ＡＬＵ２３に連続して提供される。
【００３３】
本明細書で開示した教示は、並列データプロセッサによって実行された処理に関連する１又は複数の感知された条件に基づいて、並列データプロセッサの動作の並列処理を自動的に制御する。この例では、この自動制御が、第２の（＃２）ＡＬＵ２５を選択的に起動及び停止する。
【００３４】
制御された並列処理要素、すなわち、図１の例における第２の（＃２）ＡＬＵ２５の動作状態は、一般に論理ゲート２７，２９によって表される１又は複数のゲート回路又はスイッチ回路によって制御される。そのようなゲート又はスイッチは、特定の要素によって必要とされるイネーブル信号を選択的に提供及び撤回する。図面では、ゲート２７，２９がＡＮＤゲートとして示されているが、それらは、ＡＬＵ２５の要素へ信号を選択的につなぐための一般的な回路表示として意図されている。そのような回路２７又は回路２９は、任意のタイプの論理ゲート、スイッチ、これらの組み合わせ、あるいはモード制御３１からの適切な選択信号に応じて、ＡＬＵ２５の機能要素へ、適切なタイプの信号を提供するように構成されたその他任意の回路でありうる。
【００３５】
このように、モード制御３１は、図１の例では、第２の（＃２）ＡＬＵ２５のアクティブ状態を制御する。モードフラグはそれ自身が、ゲート２７，２９の、すなわちＡＬＵ２５の選択的な起動及び停止の直接的な制御を提供する。しかしながら、そのような場合、ＡＬＵは、モードフラグ１９の状態の変化によって示される動作モードの遷移毎に、直ちに起動及び停止を行う。ほとんどの実装では、ＡＬＵ２３及びＡＬＵ２５は、マルチステージパイプラインユニットを含み、フラグ１９が変わった場合、提供中の多くの命令が存在するだろう。電力及びエネルギーの制御ロジックは、モードフラグ１９に応答するが、スムーズな処理遷移を可能にするために、状態変化に続くタイムラグを与えることができる。例えば、制御ロジック３１は、ＡＬＵ２５の動作をモニタすることができる。これによって、１ビットへの遷移（１２８ビットモードから６４ビットモードへのシフト）が検出されると、提供中の１２８ビット命令が処理され、そのＡＬＵから取り出されるまで、制御３１は、ＡＬＵ２５の停止を遅らせるだろう。図示していないが、モード制御ロジック３１はまた、例えば、ＡＬＵ２５の起動に必要な時間を考慮するために、１２８ビットモードへの遷移後、１２８ビット命令の初期アプリケーションを制御するために、プロセッサの他の要素へ信号を提供することができる。
【００３６】
モード制御３１は、適切なゲート又はスイッチ回路２７，２９の動作によって、ユニットの動作に必要なあらゆる信号を選択的にイネーブル及びディセーブルすることによって、任意の周知の様々な方法で、第２の（＃２）ＡＬＵ２５の状態を選択的に制御するように実装される。例えば、ＡＬＵ２５は、ユニット２５内又はユニット２５への回路切換機能を制御するために使用されるクロック信号（ＣＬＫ）の制御されたゲーティングによって、選択的にイネーブル及びディセーブルされる。そのような実装の場合、ＡＬＵ２５は、ゲート２７によって、ＡＬＵ２５へのクロック信号（ＣＬＫ）の流れをカットオフすることによりディセーブルされる。これによって、ユニット２５の回路は、クロック信号に応答して切り換わることはなくなる。これは、動的な電力消費量を低減する。そのような実装において、リークを低減するために、ＡＬＵ２５のトランジスタは、比較的高いゲート閾電圧をもって設計される。しかしながら、クロック信号のゲーティングにのみ基づいた制御は、ＡＬＵの比較的迅速な再起動を可能にしうる。
【００３７】
代替例として、またはそれに加えて（図示するように）、ＡＬＵ状態が、電源端子への接続の選択的なオンオフによって制御される。例示目的として、達成された接続は、グラウンド又は負の供給電圧へのものかもしれないが、ゲート２９は、第２の（＃２）ＳＩＭＤ  ＡＬＵ２５への電圧Ｖの供給を制御する。モード制御３１によるゲート２９の動作は、コプロセッサ１１の現在の動作モードに従って、ＡＬＵ２５への電力をオンオフする。そのような実装では、モードフラグが１へシフトした場合（６４ビット動作の場合）、残りのあらゆる１２８ビット命令が処理された後、モード制御３１は、ＡＬＵ２５をディセーブする。その時、制御３１は、ＡＬＵ２５の回路に関して電源Ｖを提供する電源端末への接続をカットオフするようにゲート２９をトリガする。この種のカットオフは、動的な電力消費と、そのユニットの回路を介したリークとをなくする。
【００３８】
第１の（＃１）ＳＩＭＤ  ＡＬＵ２３は、両モードにおいてアクティブである。従って、そのＡＬＵは、クロック信号（ＣＬＫ）に直接接続され、ゲート制御無しに電圧（Ｖ）が供給されるように示されている。しかしながら、処理要素２３への電力信号及び／又はクロック信号は、例えば、コプロセッサ１１が必要とされない場合にその停止を許可するために制御される。
【００３９】
図１の例は、アクティブな動作モードに基づいて制御される単一の並列処理要素であるＡＬＵ２５を示す。当業者であれば、与えられたプロセッサが、アクティブではないかもしれない多くの並列要素のためのいくつかの類似制御を含む一方、プロセッサ１１が、相当な時間期間にわたって、狭いデータについて動作することを理解するであろう。１２８ビット最大幅を仮定した別の例では、第１のＡＬＵが、２つの３２ビットＡＬＵとして実現されうる。その場合、１つの３２ビットＳＩＭＤ  ＡＬＵの更なる選択的な停止を提供するために、２７，２９，３１に類似した追加の制御システムが、第２の３２ビットＡＬＵを制御し、３２ビットのみの動作のために、１つのみのユニットがアクティブになる。
【００４０】
モード制御３１の動作は、少なくとも１つの感知された条件の状態に応じて、コプロセッサ１１の並列処理を制御する。モニタされた条件が第１の状態である場合、ＳＩＭＤ命令は、１２８ビット幅のデータパスを提供するデータプロセッサの２つの並列処理要素２３，２５において並列して実行される。モニタされた条件が第２の状態である場合、命令は、第１の（＃１）並列処理要素２３で実行される。この状況下では、第２の並列処理要素２５がアクティブではない間、６４ビット幅のデータが、第１の要素によって処理される。モード制御３１はまた、命令展開ステージ１７の動作を制御するために、モードフラグ１９を設定する。
【００４１】
フラグ１９によって示されるモード状態は、ステージ１７のディスパッチ機能及び展開機能の動作を選択的に制御する。例えば、フラグ１９のビットが１である限り、プロセッサは、６４ビット命令の形態をした全ての命令を処理するように構成されうる。まれに、ＳＩＭＤ命令のストリームが１２８ビット命令を含むのであれば、命令展開ステージ１７プロセッサは、それを２つの６４ビット命令に分解し、それらを次々にＡＬＵ２３へ送るだろう。フラグ１９のビットが０である場合、ステージ１７は、１２８ビットモードに切り換わる。このモードでは、ステージ１７が、１２８ビット幅動作のための命令を、展開することなくＡＬＵ２３とＡＬＵ２５との両方に送る。このモードでは、メインプロセッサ１３からのストリーム内に６４ビット命令があった場合、ステージ１７は、第１のＡＬＵ２３へ６４ビット命令をディスパッチすることができる。
【００４２】
モード制御３１によって設定されたコプロセッサ１１のモード状態は、この例では第２のＡＬＵ２５である少なくとも１つの並列処理要素の選択的な起動及び停止を制御する。ＡＬＵ２５は、１２８ビットモードにおいてアクティブである（電源供給されている）一方、６４ビットモードではそれは必要とされておらず、電源オフ（停止）される。
【００４３】
図示する実装では、モード制御３１は、処理タスクに関連する条件、すなわち、プロセッサがどれくらいの頻度で特定のタイプの命令を取り扱うのかに応じる。この実装では、モード選択３１はまた、温度のような環境条件に応じる。例えば、モード制御３１として役立つプログラマブルデバイス又は状態計算機のロジックは、キューステージ１５内の命令から、１２８ビット命令の数を識別する。１２８ビットの命令の割合又は頻度が、ある予め定めたレベルであるか、それを超える場合には、モード制御３１は、モードフラグ１９を０に設定し（１２８ビットモードの場合）、第２のＡＬＵ２５を起動する。一方、１２８ビット命令の割合又は頻度が、予め定めたレベルであるか、それを下回る場合には、モード制御３１は、モードフラグ１９を１に設定し（６４ビットモードの場合）、第２のＡＬＵ２５を停止する手順を開始する。当業者であれば、このタスクに応答性のある制御機能が、（デバイス１１によってなされているか、丁度なされる命令の数に基づいて）６４ビット命令の頻度又は割合、あるいは、最近の何れかのタイプの命令の頻度のような他のモニタされたパラメータをも使用できることを理解するであろう。
【００４４】
環境モニタリングの場合、典型的なプロセッサ１１は、温度センサ３３を含んでいる。このセンサ３３は、モード制御３１に信号を供給する。制御３１は、温度センサからの信号のレベルに基づいて、実質的には、１又は複数の閾値に対する温度の関係に基づいて、ＡＬＵ２５の起動及び停止を行い、モードフラグ１９を設定する。１２８ビットモードでの動作中、この感知された温度が高すぎる場合、制御３１は、デバイス１１を冷却できるように、ＡＬＵ２５を停止することができる。後に（例えば、温度読み取り値が低い場合）、タスクが１２８ビット幅データ処理を要求し、制御３１が、ＡＬＵ２５を再起動し、フラグ１９を１２８ビットモードに戻すことができる。当業者であれば、温度の代わりに、あるいは温度に加えて別の環境条件が感知されうることを認識するだろう。
【００４５】
また、命令の実行は、プログラマが、所望の並列処理レベルを設定できるように、モード制御３１の自動動作を実質的にオーバライドすることができる。このモード制御は、ＡＬＵ２５のうちの１つから、又は、メインプロセッサコア１３からオーバライドコマンドを受け取る。これを受けて、モード制御３１は、ステージ１７が６４ビットモードで動作すべきか否かを示すためにモードフラグ１９を設定し、ＡＬＵ２５の動作状態（オフ又はオン）の対応する設定を与える。
【００４６】
オーバライドが使用される場合、プログラムは、処理フロー中の適切なポイントで運転モードを設定するように書かれる。このモード設定命令は、プログラマによって書かれるかもしれないし、又は、プログラムが計算機言語コードにコンパイルされた場合にコンパイラがモード設定命令を挿入するかもしれない。コプロセッサ１１は、ＡＬＵ２３，２５のうちの１つ又は両方によって実行されるモード命令に応じて、モードをオーバライドとして設定するように設計されうる。その場合、命令は、コア１３がこれら命令を実行のためにコプロセッサ１１へ発行する形態で書かれる。あるいは、モード命令がメインプロセッサコア１３によって実行されることに応じて、コア１３がモードを設定できるように、コプロセッサ１１がメインプロセッサコア１３と接続される。また、プロセッサ１１又はコア１３の何れか一方が、そのようなオーバライド命令に基づいてモードを設定することも可能である。
【００４７】
オーバライドに関する他のバリエーションもまた可能である。例えば、具体的な命令に応じたメインプロセッサコア１３又はＡＬＵ２３，２５からのオーバライドコマンドは、タスク関連条件に基づく自動設定をオーバライドするが、重要な環境条件に基づく制御をオーバライドしない。これによって、例えば、モード制御３１は、明確な命令に基づくオーバライドによって与えられた設定に反する場合であっても、過剰な温度に応じて並列処理を減らすことができる。
【００４８】
上記議論から、モード制御は、プロセッサ又はその処理動作に関連する様々なモニタされた条件の状態に対して自動的に応答することができる。また、所望の並列処理制御機能を実現するために、様々な異なるアルゴリズムが設計されうる。本教示の利点を完全に理解するために、１つの例を考えることが有効である。
【００４９】
図２は、キュー内の命令の頻度（又は割合）及び感知されたプロセッサ温度に基づく、図１のコプロセッサ１１における２つの異なる並列処理レベルの自動切換に含まれる実行の考えられるフローを示すフローチャートである。説明の目的のために、先ず（Ｓ１において）、プロセッサが、２つの並列演算ロジックユニット２３，２５において、命令を並列して実行していると仮定する。このモードでは、処理されるデータは最大１２８ビット幅である。すなわち、共に動作しているユニット２３，２５によって提供されるフルデータパスと同じ幅である。この状態では、モード制御３１は、温度信号値Ｔを、高温度閾値Ｔｈと比較する（ステップＳ２）。温度が十分低い場合（値Ｔが、高温度閾値Ｔｈよりも大きくない場合）、処理はＳ２からＳ３へ進む。
【００５０】
ステップＳ３は、タスク関連処理条件の判定を表す。この場合、多くの１２８ビット命令がキュー内に存在する。ＩＱステージ１５がフルの場合、キューが、例えば、最大８つの命令を保持できるのであれば、頻度又は割合ｆは、８によって除された１２８ビット命令の数となる。もちろん、タスクが主に１２８ビット幅のデータの処理を要求するときを判定するために、タスク関連条件の他の測定値も使用されうる。例えば、キュー長さが一定である場合、キュー内の１２８ビット命令の数が、頻度の代わりに使用される。ＡＬＵによって既に提供中であるか又は処理された幾つかの数の命令の類似の分析に基づいて、履歴的な測定値が展開されうる。あるいは、そのような履歴的な測定値が、ＩＱステージ１５内の命令の分析と結合されうる。
【００５１】
この説明の目的のために、１２８ビット命令が、ＩＱステージ１５内にどれくらいの頻度で存在するかをロジックがモニタすると仮定する。ステップＳ３では、現在の値ｆが、低閾値ｆ１であるかそれより高いのであれば、処理はＳ３からＳ１に戻り、コプロセッサ１１が、１２８ビットモード動作を続ける。８つの命令が最大のキュー長さであると仮定すると、８つの命令毎のうちの１つが１２８ビット命令である限り、コプロセッサを、進行中の１２８ビットモードに維持するために、低頻度閾値ｆｌが、約１／８に設定されうる。１２８ビットモードにとどまるための閾値は、一般に低くなるだろう。１／１６でさえも、１２８ビットモードにとどまるための効率的な判定基準となりうる。もちろん、この閾値は、幾つかの数の処理サイクルに対して、例えば、８つの命令毎のうちの２以上の１２８ビット命令を必要とするために、時間依存にもなりえる。例示するフローでは、温度が閾値Ｔｈ以下を維持し、１２８ビット命令の頻度が閾値ｆ１より高い値を維持する限り、ステップＳ１からステップＳ３によって表される処理が続くだろう。すなわち、コプロセッサが、１２８ビット幅データ処理モードで動作するだろう。
【００５２】
モード制御３１を行っているロジックが、温度Ｔが閾値Ｔｈを超えたことを検出すると、処理は、ステップＳ２から処理ステップＳ４へ進む。同様に、モード制御３１を行っているロジックが、１２８ビット命令の頻度ｆが、閾値ｆ１へあるいはそれ未満に下がったと検出すると、処理は、ステップＳ３から処理ステップＳ４へ進む。何れの場合も、Ｓ４において、命令展開ブロック１７が、もしもあれば、次に来る１２８ビット命令の、６４ビット命令のペアへの変換を開始する。ステップＳ５では、モード制御３１が、第２の演算ロジックユニット（ＡＬＵ＃２）２５を確認し、処理され、その演算ロジックユニット２５から取り出されねばならない提供中の１２８ビット命令が残っているかが判定される。もしも残っていれば、ロジックは待機し（Ｓ６）、再び確認を行う。このモニタリング（Ｓ５−Ｓ６）は、第２の演算ロジックユニット（ＡＬＵ＃２）２５によって処理される提供中の１２８ビット命令がもはや存在しなくなるまで続く。そして、処理は、フローＳ７へ進む。
【００５３】
ステップＳ７では、モード制御３１は、エネルギーを節約し、及び／又は、熱の生成を低減するために、第２のＡＬＵタイプ処理要素２５を非アクティブ化すなわち停止する。上述したように、６４ビットモードで更なる処理がなされる（Ｓ８）。例えば、第２の演算ロジックユニット２５がアクティブではない間、プロセッサ１１は、６４ビットデータを処理するために、第１の演算ロジックユニット２３において１又は複数の命令を実行する。このモードで受け取られたあらゆる１２８ビット命令も、（ステップＳ４で開始されたように）２つの６４ビット命令として連続的に展開及び処理される
コプロセッサが６４ビットモードで動作している間、モード制御３１は、どれくらいの頻度でＩＱステージ１５内に１２８ビット命令が受け取られているかと、温度とを確認し続ける。測定された温度は、ステップＳ９において閾値と比較される。また、１２８ビット命令の検出された頻度は、ステップＳ１０において閾値と比較される。Ｓ９では、Ｓ２で使用されたものと同じ閾値が使用されうる。また、Ｓ１０では、Ｓ３で使用されたものと同じ閾値が使用されうる。しかしながら、同じ閾値を使用することは、モニタされた１又は両方のパラメータにおけるあらゆる小さな変化に応じて、ＡＬＵ２５のオンとオフとを切り換えることにつながる。これは、しばしば、短期間における過剰な切換となる。
【００５４】
停止状態からＡＬＵ２５をウェイクアップすなわち起動することは、時間がかかり、エネルギーを消費する。幾つかの場合、要素２５を起動することは、ある短い持続時間の間、単に電力を維持することよりもよりエネルギーを要する。また、コンポーネントをバックアップ起動するには時間もかかる。ＡＬＵを再起動する際に、結果として生じる遅延すなわちレイテンシは、プロセッサストールをもたらし、パフォーマンスを低下させる。従って、我々の例ではＡＬＵ２５である制御された並列処理要素が、短時間のウェイクのためだけに、繰り返し停止されないことを保証することが望ましい。繰り返しなされるパワーダウン及びパワーアップは、「スラッシング」と称されうる。例示する例は、切換動作において幾つかのヒステリシスを提供できるよう、切換イベント、及び、スラッシングの可能性を低減するために、異なる動作モードにおいて、異なる比較閾値を用いる。後で詳しく述べるように、モード制御３１のロジックは、その他の、あるいは、反スラッシングストラテジを実施してよい。
【００５５】
具体的な例に再び戻り、ステップＳ９では、モード制御３１は、現在の温度測定値Ｔを、閾値Ｔ１と比較する。閾値Ｔ１は、閾値Ｔｈよりも幾分低い。測定された温度Ｔが、幾分低い閾値Ｔ１よりも未だに高いのであれば、処理は６４ビットモードで継続する（Ｓ８）。一般に、温度は、このモードでは、低下し続けるだろう。コプロセッサが、十分冷却された場合、モード制御３１は、測定された温度Ｔが、低い閾値Ｔ１以下である（もはや閾値Ｔ１よりも高くない）ことを判定し、処理は、Ｓ９からＳ１０へ進む。
【００５６】
プロセッサは、十分冷却され、１２８ビット動作へ戻ることが可能であるので、モード制御は次に、処理タスクが１２８ビット動作を保証するかを判定する（Ｓ１０）。従って、我々の例では、Ｓ１０において、モード制御が、ＩＱステージ１５内の１２８ビットタイプ命令の頻度又は割合（ｆ）を、高閾値ｆｈと比較する。再び、８つの命令が最大のキュー長さであると仮定すると、８つの命令毎に３より多くない１２８ビット命令である限り、コプロセッサを、進行中の６４ビットモードに維持するために、高頻度閾値が、約３／８に設定されうる。もちろん、この閾値は、幾つかの数の処理サイクルに対して、例えば、１２８ビット動作への遷移をトリガするために、８つの命令毎のうちの４以上の１２８ビット命令を必要とするために、時間依存にもなりえる。
【００５７】
ｆが閾値ｆｈに等しいかそれ未満である（すなわち、それより大きくない）のであれば、たとえプロセッサ温度が安全であっても、１２８ビット動作を正当化するための十分な必要性はない。従って、コプロセッサ１１が６４ビットモード動作で継続できるように、処理はＳ１０からＳ８に戻る。何れか一方でも閾値を満足しない限り、すなわち、温度が十分低く、１２８ビット命令の頻度が十分高くて、１２８ビット動作命令への遷移を保証するまでは、ステップＳ８乃至Ｓ１０によって表される処理が続き、コプロセッサが、６４ビットワイドデータ処理モードで動作する。
【００５８】
温度が閾値Ｔｌ以下であり、１２８ビット命令の頻度が閾値ｆｈを超える場合、処理は、ステップＳ９及びＳ１０を介してステップＳ１１に進む。ステップＳ１１では、制御ロジック３１は、第２の演算論理ユニット（ＡＬＵ＃２）２５を起動させる。この時（Ｓ１２）、１２８ビット命令は、変更されることなくＡＬＵに渡る（２つの６４ビット命令への更なる再コード化はもはや必要ではない）。この状態では、処理はステップＳ１に戻る。そこで更なる動作は、１２８ビット命令モードを利用する。
【００５９】
以前に述べたように、モード制御３１ロジックは、閾値の相違によって与えられるヒステリシスの代わりに、あるいはそれと組み合わせて、他のアンチスラッシング対策を実行する。例えば、１２８ビット命令の低い発生率に応じてＡＬＵが停止されている間の時間間隔のような、スラッシングを示す測定値に応じて閾値が調節されるかもしれない。
【００６０】
本教示は広範囲の応用を持つ。例えば、その他の並列プロセッサ内で、及び、異なるデータパス幅を有するプロセッサ内で、電力及びエネルギー制御が実施されうる。また、上述した並列プロセッサの例は、メインプロセッサコアに関連付けられたコプロセッサを与えた。しかしながら、当業者であれば、本明細書に記載した並列処理制御技術が、コプロセッサ実装に制限されていないことを理解するだろう。
【００６１】
前述の説明は、何がベストモード及び／又はその他の例であると考えられるかを説明したが、様々な変形がなされることが可能であり、本明細書で開示された主題が様々な形態及び例で実施され、その教示が多くのアプリケーションに適用され、そのうちのほんの幾つかが本明細書に記載されていることが理解される。特許請求の範囲では、本教示の真の範囲内にある何れか及び全ての応用、修正、及び変形の権利を要求することが意図されている。
【図面の簡単な説明】
【００６２】
【図１】図１は、例えばＳＩＭＤコプロセッサにおける並列処理要素の自動電力及びエネルギー制御を理解するために利用可能な機能ブロック図である。
【図２】図２は、コプロセッサ内の２つの異なる並列処理レベル間の自動切換に含まれる動作を制御する例の理解に利用可能な簡略フローチャートである。
【図１】
2008544350.tif 000003
【図２】
2008544350.tif 000004
【国際調査報告】
2008544350.tif 000005
2008544350.tif 000006