複数のマクロ命令を格納するプリフェッチバッファと、プロセッサの少なくとも複数のユニットのために発信クロック信号を提供するクロック回路と、前記プリフェッチバッファから取得された各マクロ命令のクラスを判定するマクロ命令デコードロジックと、前記複数のマクロ命令のうち第1のマクロ命令のクラスの判定に応じて、前記第1のマクロ命令での動作に利用されない前記プロセッサの前記複数のユニットのうち少なくとも1つに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせるクロック管理ユニットと、前記第1のマクロ命令を1つ以上のオペコードにデコードする前記複数のユニットのうち第1の命令デコーダユニットとを有するプロセッサ。前記プリフェッチバッファから取得されたマクロ命令をデコードし、1バイトのオペコードを生成する前記複数のユニットのうち第1のプログラム可能ロジックアレイPLAユニットと、前記プリフェッチバッファから取得されたマクロ命令をデコードし、2バイトのオペコードを生成する前記複数のユニットのうち第2のPLAユニットと、前記プリフェッチバッファから取得されたマクロ命令をデコードし、3バイトのオペコードを生成する前記複数のユニットのうち第3のPLAユニットとを含む前記第1の命令デコーダユニットと、前記第1のマクロ命令から生成されたオペコードのバイト長を判定する前記マクロ命令デコードロジックと、前記判定されたバイト長のマクロ命令をデコードしない前記第1、第2及び第3のPLAのうちいずれかに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせる前記クロック管理回路とを更に有する、請求項1に記載のプロセッサ。前記判定された前記第1のマクロ命令のクラスが分岐命令でないことに応じて、前記複数のユニットのうち分岐アドレス計算ユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせる前記クロック管理回路を更に有する、請求項1に記載のプロセッサ。前記第1のマクロ命令が1つ以上の変位バイトを含むか否かを判定し、前記第1のマクロ命令が変位バイトを有さないことに応じて、前記第1のマクロ命令の変位バイトフィールドをゼロにする前記マクロ命令デコードロジックを更に有する、請求項1に記載のプロセッサ。前記第1のマクロ命令が即値オペランドを含むか否かを判定し、前記第1のマクロ命令が即値オペランドを有さないことに応じて、前記第1のマクロ命令の即値オペランドフィールドをゼロにする前記マクロ命令デコードロジックを更に有する、請求項1に記載のプロセッサ。前記複数のユニットのうち第2の命令デコーダユニットと、前記複数のマクロ命令のうち第2のマクロ命令が有効でないか否かを判定する前記マクロ命令デコードロジックであり、前記第1のマクロ命令は第1のクロックサイクルに前記第1の命令デコーダユニットに入り、前記第2のマクロ命令は前記第1のクロックサイクルに前記第2の命令デコーダユニットに入る前記マクロ命令デコードロジックと、前記第2のマクロ命令が有効でないと判定されたことに応じて、前記第2の命令デコーダユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせる電力管理ユニットとを更に有する、請求項1に記載のプロセッサ。対応する浮動小数点マクロ命令が前記プリフェッチバッファから取得された時点から、前記浮動小数点マクロ演算の解放の時点まで、前記複数のマクロ命令のうち浮動小数点マクロ命令に対応する浮動小数点マクロ演算をトラッキングし、設定された場合に浮動小数点マクロ演算が現在トラッキングされていないことを示す浮動小数点パイプラインクリアフラグを設定する浮動小数点マクロ演算トラッカと、前記浮動小数点パイプラインクリアフラグが設定されたことに応じて、前記複数のユニットのうち浮動小数点ユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせる電力管理ユニットとを更に有する、請求項1に記載のプロセッサ。複数のマクロ命令をプリフェッチバッファに格納するステップと、プロセッサの少なくとも複数のユニットのために発信クロック信号を提供するステップと、前記プリフェッチバッファから取得された各マクロ命令のクラスを判定するステップと、前記複数のマクロ命令のうち第1のマクロ命令のクラスの判定に応じて、前記第1のマクロ命令での動作に利用されない前記プロセッサの前記複数のユニットのうち少なくとも1つに入る前記発信クロック信号を定常状態のままにさせるステップと、前記第1のマクロ命令を1つ以上のオペコードにデコードするステップとを有する方法。前記プリフェッチバッファから取得されたマクロ命令をデコードし、1バイトのオペコードを生成するステップと、前記プリフェッチバッファから取得されたマクロ命令をデコードし、2バイトのオペコードを生成するステップと、前記プリフェッチバッファから取得されたマクロ命令をデコードし、3バイトのオペコードを生成するステップと前記第1のマクロ命令から生成されたオペコードのバイト長を判定するステップと、前記判定されたバイト長のマクロ命令をデコードしない前記第1、第2及び第3のPLAのうちいずれかに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせるステップとを更に有する、請求項8に記載の方法。前記判定された前記第1のマクロ命令のクラスが分岐命令でないことに応じて、前記複数のユニットのうち分岐アドレス計算ユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせるステップを更に有する、請求項8に記載の方法。前記第1のマクロ命令が1つ以上の変位バイトを含むか否かを判定するステップと、前記第1のマクロ命令が変位バイトを有さないことに応じて、前記第1のマクロ命令の変位バイトフィールドをゼロにするステップとを更に有する、請求項8に記載の方法。前記第1のマクロ命令が即値オペランドを含むか否かを判定するステップと、前記第1のマクロ命令が即値オペランドを有さないことに応じて、前記第1のマクロ命令の即値オペランドフィールドをゼロにするステップとを更に有する、請求項8に記載の方法。前記複数のマクロ命令のうち第2のマクロ命令が有効でないか否かを判定するステップであり、前記第1のマクロ命令は第1のクロックサイクルに前記第1の命令デコーダユニットに入り、前記第2のマクロ命令は前記第1のクロックサイクルに前記第2の命令デコーダユニットに入るステップと、前記第2のマクロ命令が有効でないと判定されたことに応じて、前記第2の命令デコーダユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせるステップとを更に有する、請求項8に記載の方法。対応する浮動小数点マクロ命令が前記プリフェッチバッファから取得された時点から、前記浮動小数点マクロ演算の解放の時点まで、前記複数のマクロ命令のうち浮動小数点マクロ命令に対応する浮動小数点マクロ演算をトラッキングし、設定された場合に浮動小数点マクロ演算が現在トラッキングされていないことを示す浮動小数点パイプラインクリアフラグを設定するステップと、前記浮動小数点パイプラインクリアフラグが設定されたことに応じて、前記複数のユニットのうち浮動小数点ユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせるステップとを更に有する、請求項8に記載の方法。複数のマクロ命令を格納するプリフェッチバッファと、プロセッサの少なくとも複数のユニットのために発信クロック信号を提供するクロック回路と、前記プリフェッチバッファから取得された各マクロ命令の近似バイト長クラスを判定するマクロ命令デコードロジックと、前記複数のマクロ命令のうち第1のマクロ命令の近似バイト長クラスの判定に応じて、前記第1のマクロ命令での動作に利用されない前記プロセッサの前記複数のユニットのうち少なくとも1つに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせるクロック管理ユニットと、前記第1のマクロ命令を1つ以上のオペコードにデコードする前記複数のユニットのうち第1の命令デコーダユニットと、前記第1のマクロ命令の正確なバイト長クラスを判定し、ただし、前記第1の命令デコーダと並列して前記第1のマクロ命令をデコードし、前記第1のマクロ命令の前記近似バイト長クラスと前記第1のマクロ命令の前記正確なバイト長クラスとを比較し、前記正確なバイト長と前記近似バイト長とが異なる長さであることに応じて、前記第1の命令デコーダユニットにより生成される前記1つ以上のオペコードを無効にするフルレングスデコーダロジックとを有するプロセッサ。前記プリフェッチバッファから取得されたマクロ命令をデコードし、1バイトのオペコードを生成する前記複数のユニットのうち第1のプログラム可能ロジックアレイPLAユニットと、前記プリフェッチバッファから取得されたマクロ命令をデコードし、2バイトのオペコードを生成する前記複数のユニットのうち第2のPLAユニットと、前記プリフェッチバッファから取得されたマクロ命令をデコードし、3バイトのオペコードを生成する前記複数のユニットのうち第3のPLAユニットとを含む前記第1の命令デコーダユニットと、前記第1のマクロ命令から生成されたオペコードのバイト長を判定する前記マクロ命令デコードロジックと、前記判定されたバイト長のマクロ命令をデコードしない前記第1、第2及び第3のPLAのうちいずれかに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせる前記クロック管理回路とを更に有する、請求項15に記載のプロセッサ。前記判定された前記第1のマクロ命令のクラスが分岐命令でないことに応じて、前記複数のユニットのうち分岐アドレス計算ユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせる前記クロック管理回路を更に有する、請求項15に記載のプロセッサ。前記第1のマクロ命令が1つ以上の変位バイトを含むか否かを判定し、前記第1のマクロ命令が変位バイトを有さないことに応じて、前記第1のマクロ命令の変位バイトフィールドをゼロにする前記マクロ命令デコードロジックを更に有する、請求項15に記載のプロセッサ。前記第1のマクロ命令が即値オペランドを含むか否かを判定し、前記第1のマクロ命令が即値オペランドを有さないことに応じて、前記第1のマクロ命令の即値オペランドフィールドをゼロにする前記マクロ命令デコードロジックを更に有する、請求項15に記載のプロセッサ。前記複数のユニットのうち第2の命令デコーダユニットと、前記複数のマクロ命令のうち第2のマクロ命令が有効でないか否かを判定する前記マクロ命令デコードロジックであり、前記第1のマクロ命令は第1のクロックサイクルに前記第1の命令デコーダユニットに入り、前記第2のマクロ命令は前記第1のクロックサイクルに前記第2の命令デコーダユニットに入る前記マクロ命令デコードロジックと、前記第2のマクロ命令が有効でないと判定されたことに応じて、前記第2の命令デコーダユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせる電力管理ユニットとを更に有する、請求項15に記載のプロセッサ。対応する浮動小数点マクロ命令が前記プリフェッチバッファから取得された時点から、前記浮動小数点マクロ演算の解放の時点まで、前記複数のマクロ命令のうち浮動小数点マクロ命令に対応する浮動小数点マクロ演算をトラッキングし、設定された場合に浮動小数点マクロ演算が現在トラッキングされていないことを示す浮動小数点パイプラインクリアフラグを設定する浮動小数点マクロ演算トラッカと、前記浮動小数点パイプラインクリアフラグが設定されたことに応じて、前記複数のユニットのうち浮動小数点ユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせる電力管理ユニットとを更に有する、請求項15に記載のプロセッサ。命令のクラス又は命令内の内容に応じて、全ての機能ユニットが同時に利用されていない場合がしばしば存在する。従って、CPU内の全ての機能ユニットが同時にオンになるべきであるという固有の理由は存在しない。むしろ、いずれか所与の時間において、何らかのユニットは動作すべきデータを有さないことがある。機能ユニットが動作すべきデータを有さない場合、事実上アイドルになっている。しかし、依然としてアクティブなクロックを供給されているこのようなアイドルユニットは、受信したクロック信号のため、ユニットを通じてラッチの一定の切り替えすなわち、トグリングtogglingを通じて電力消費を受ける。x86命令は複数のフィールドを有する。最も基本的なフィールドのうち3つは、命令オペコードフィールド例えば、移動、シフト等、即値オペランドimmediateoperandフィールド、及び変位バイトdisplacementbyteフィールドである。命令パイプライン内の多くの機能ユニットは、これらのフィールドを扱う回路を有するが、パイプラインを通じて移動するいくつかの命令は変位バイト情報又は即値オペランド情報を有さない。これらの場合、これらのフィールドを埋めるバイトは利用されず、一般的にはランダムなデータビットから構成される。命令がパイプラインを通じて移動すると、これらのフィールドは利用されないが、機能ユニットは、この情報に入るラッチの切り替えを依然として検出する。この切り替えは、CPUの機能ユニット内の電力消費を更に増加させる。本発明について一例を用いて説明する。本発明は図面により限定されない。図面において、同様の参照符号は同様の要素を示す。命令パイプラインにおける命令のクラス及び内容に基づいてプロセッサの電力を管理するプロセッサ及び方法の実施例について開示する。図1は、システムの少なくとも1つのプロセッサ内で実行されている命令のクラス及び内容に基づいてプロセッサの電力消費を管理可能なコンピュータシステムの実施例を示している。コンピュータシステム100が示されている。コンピュータシステムは、デスクトップ、サーバ、ワークステーション、ラップトップ、ハンドヘルド、テレビセットトップボックス、メディアセンタ、ゲームコンソール、統合システム車内のもの等、又は他の種類のコンピュータシステムでもよい。いくつかの実施例では、コンピュータシステム100は、プロセッサとも呼ばれる1つ以上の中央処理装置CPUを含む。多くの実施例では潜在的に多くのCPUが存在するが、図1に示す実施例では、簡潔にするためにCPU102のみが示されている。CPU102は、IntelCorporationのCPUでもよく、他のブランドのCPUでもよい。異なる実施例では、CPU102は1つ以上のコアを含む。4つのコア104、106、108及び110を含むCPU102が示されている。多くの実施例では、コア104の拡大図に示すもののように、各コアは複数の内部機能ブロック/ユニット/ロジックコンポーネントを含む。例えば、コア104は、命令/データすなわち、レベル1、L1キャッシュ112と、プリフェッチバッファ114と、プリデコードキャッシュ116と、命令デコーダ118と、分岐アドレス計算ユニット120と、命令キュー122と、浮動小数点実行ユニット124と、割り当て/解放allocationretirementユニット126と、クロック管理/生成ロジック128とを少なくとも含む。これらのユニット及びロジックコンポーネントのいくつかについて、以下に図2に関して詳細に説明する。一般的に、図示のユニットのそれぞれの複数のコピーの予備potential例えば、1つ以上の整数/アドレス実行ユニット、3つの浮動小数点ユニット等を含み、コア104に示すユニットより多くのユニット、レジスタ及び他の回路が各コア内に存在する。しかし、図1の重要な要素の明瞭性を維持するために、更なるユニットは、示されていない。単一スレッドのコアでは、各コアはハードウェアスレッドと呼ばれることがある。コアがマルチスレッド又はハイパースレッドである場合、各コア内で動作する各スレッドもまた、ハードウェアスレッドと呼ばれることがある。従って、コンピュータシステム100で動作する実行のいずれか単一のスレッドは、ハードウェアスレッドと呼ばれてもよい。例えば、図1では、各コアが単一スレッドである場合、4つのハードウェアスレッドがシステムに存在する4つのコア。他方、各コアがマルチスレッドであり、2つのスレッドの状態を同時に管理する機能を有する場合、8個のハードウェアスレッドがシステムに存在するコア毎に2つのスレッドで4つのコア。CPU102はまた、1つ以上の非L1キャッシュ非L1キャッシュ112を含んでもよい。多くの実施例では、少なくとも1つの非L1キャッシュキャッシュ130等は、CPU102内でいずれか所与のコアの外側に存在する。更に、多くの実施例では、キャッシュ130は、図示の4つのコアの間で共有される。図示しない他の実施例では、キャッシュ130以外の更なる非L1キャッシュが実装される。異なる実施例では、キャッシュ130は、異なる方法で配分されてもよい。更に、異なる実施例では、キャッシュ130は異なるサイズのうち1つでもよい。例えば、キャッシュ130は8メガバイトMBキャッシュ、16MBキャッシュ等でもよい。更に、異なる実施例では、キャッシュ130は、ダイレクトマップ方式キャッシュ、フルアソシアティブ方式キャッシュ、マルチウェイセットアソシアティブ方式キャッシュ、又は他の種類のマッピングを備えたキャッシュでもよい。多くの実施例では、キャッシュ130は、全てのコアの間で共有される1つの大きい部分を含んでもよく、複数の別々の機能スライス例えば、コア毎に1つのスライスを含んでもよい。キャッシュ130はまた、全てのコアの間で共有される1つの部分と、コア毎の別々の機能スライスである複数の他の部分とを含んでもよい。多くの実施例では、CPU102は、システムメモリ134と通信するためのインタフェースを提供する統合システムメモリコントローラ132を含む。図示しない他の実施例では、メモリコントローラ132は、コンピュータシステム100内の別のどこかに配置されてもよい。システムメモリ134は、一種のダブルデータレートDDRDRAMのようなダイナミックランダムアクセスメモリDRAM、フラッシュメモリのような不揮発性メモリ、相変化メモリPCM:phasechangememory、又は他の種類のメモリ技術を含んでもよい。システムメモリ134は、CPU102により動作されるデータ及び命令を格納するための汎用メモリでもよい。更に、ダイレクトメモリアクセスDMA可能IO入/出力デバイスのようにシステムメモリに読み書きする機能を有する他の潜在的なデバイスがコンピュータシステムの100に存在してもよい。CPU102をシステムメモリ134と結合するリンクすなわち、バス、相互接続等は、データ、アドレス、制御及びクロック情報を伝送可能な1つ以上の光、金属又は他の配線すなわち、回線を含んでもよい。プラットフォームコントローラハブPCH:platformcontrollerhub136例えば、IO回路と他の回路との複合は、CPU102と外部IOデバイスとの間での通信を可能にするIOインタフェースを含む。この複合は、1つ以上のIOアダプタIOアダプタ138等を含んでもよい。IOアダプタは、CPU102内で利用されるホスト通信プロトコルを特定のIOデバイスIOデバイス140等と互換性のあるプロトコルに変換する。所与のIOアダプタが変換し得るいくつかのプロトコルは、特に、PCIPeripheralComponentInterconnectExpress、USBUniversalSerialBus、SATASerialAdvancedTechnologyAttachment、SCSISmallComputerSystemInterface、RAIDRedundantArrayofInexpensiveDisks及び1394Firewireを含む。更に、1つ以上の無線プロトコルIOアダプタが存在してもよい。無線プロトコルの例は、特に、Bluetooth登録商標、IEEE80211に基づく無線プロトコル及びセルラプロトコルである。IOデバイスとは別に、PCH136はまた、システム内の1つ以上の埋め込みコントローラEC:embeddedcontrollerEC142等に結合されてもよい。EC142は、複数の機能を組み込んでもよい。例えば、RAIDストレージコントローラデバイスがコンピュータシステム100内に存在してもよい。RAIDコントローラは、ハードディスクドライブ又は固体ディスクSSD:solidstatediskのアレイを管理してもよい。コントローラデバイスの他の例は、離散帯域外管理エンジンdiscreteoutofbandmanageabilityengine、キーボードコントローラ、又は他の種類のコントローラでもよい。他の実施例では、PCH136は、CPU102の外部に位置する別個のデバイスである。これらの実施例では、ダイレクトメモリインタフェースDMI:directmemoryinterfaceのようなインタフェースは、CPUをPCHに結合する。しかし、これらの実施例は図示されていない。CPU間インタフェース144は、1つ以上の更なるCPUに結合されたリンクへのインタフェースを提供し、CPU間の通信が行われることを可能にしてもよい。例えば、CPU間高速インタフェースは、QPIQuickPathInterconnect又は他の同様のインタフェースでもよい。図1には更なるCPUは示されていないが、多くの実施例では、CPU102は、コンピュータシステム100内に存在する複数のCPUのうち1つである。多くの実施例では、CPU間インタフェース144は、CPU102とシステムに存在する他のCPUのそれぞれとの間でポイントツーポイントの高速通信インタフェースを提供する。グラフィックインタフェース146は、別個のグラフィックコントローラに結合されたリンクへのインタフェースを提供してもよい別個のグラフィックコントローラは示されていない。インタフェースは、高速PCIplatformcomponentinterconnectExpressインタフェース又は他の高速インタフェースでもよい。他の実施例では、CPU102は、統合グラフィックコントローラを含み、グラフィックインタフェース146は、モニタのようなディスプレイに結合されてもよい。多くの実施例では、インタフェースは、かなりのグラフィックデータのトラヒック例えば、3Dグラフィックス、ビデオ等がリンクを通じて伝送可能になるように高速である。コンピュータシステム100はまた、コンピュータシステム及びコンポーネントを初期化するためのブート命令を提供するシステム管理ファームウェア148を含む。異なる実施例では、システム管理ファームウェアは、BIOSbasicinputouputsystem、拡張可能ファームウェア、又はコンピュータシステムがプラットフォームのブート中に利用し得る他の形式のファームウェア命令でもよい。多くの実施例では、コンピュータシステム100内の各コアは、各コア内で実行されている命令のクラス及び内容に基づいてコアの電力消費を管理する内部ロジックを含む。クロック管理/生成ロジック128を通じてクロック毎に特定のユニットをクロックゲートするために、複数のユニット内で様々なロジックが利用されている。図2は、命令クラスの判定及び命令内容の判定を通じてコアの電力消費を管理する機能をコアに対して可能にする所与のコア内の特定の関係するユニット及び機能ロジックブロックを示している。所与のコアにおいて、マクロ命令は、命令キャッシュ112から取得され、プリフェッチバッファ200に到達する。多くの実施例では、2つの命令デコーダデコーダ0202及びデコーダ1204が存在する。プリフェッチバッファ200は、デコーダ毎に命令レジスタ命令1レジスタ206及び命令2レジスタ208に供給する。図1に示す実施例では、コアが2つの命令を同時にデコード可能であるため、命令デコーダユニットに2つのデコーダが示されている。簡潔にするために、単一のデコーダ内の詳細な回路が、デコーダ0内にのみ示されている。この同じ回路がデコーダ1に存在するが、回路はデコーダ0に示す回路と重なり、従って、回路の2回の説明は冗長であるため、示されていない。プリフェッチバッファ200とは別に、プリフェッチバッファからキャッシュラインを読み取り、命令キャッシュラインからマクロ命令を分離し、プリデコードビットに基づいて命令の長さを判定するプリコードに基づくロジック210も存在する。マクロ命令毎に、デコードロジックは、命令のバイトサイズクラスの初期の近似すなわち、マクロ命令が1バイトのマイクロ演算オペコードにデコードされるか、2バイトのオペコードにデコードされるか、3バイトのオペコードにデコードされるか、又は可変長の1つ以上のオペコードの更に複雑なセットにデコードされるかを提供する。バイトサイズが不正確になる可能性があるいくつかの命令が存在するため、プリデコード処理のバイトクラスのサイズは近似である。図2に示すロジックとは別に、フルレングスのデコードを実行する他の並列のデコーダフルレングスデコーダ242が存在する。これは完全に正確である。しかし、フルレングスデコーダは、プリコード長の近似ほど効率的ではないため、図2に示すロジックにより実行されるプロセスをデコードするために並列に行われる。多くの実施例では、フルレングスデコーダがマクロ命令デコードロジックで近似した長さとは異なるオペコードのバイト長を戻した場合、現在の命令の前の以降の命令は無効にされる。この理由は、誤ったオペコードのバイト長は、ランダムな不要データが命令パイプラインの更に下流で利用されることを生じる可能性があるからである。無効な命令は、フルレングスデコーダにより判定された正確なオペコードのバイト長で、再びパイプラインに送信される。時折のオペコードの無効化と、命令パイプラインを通じた次の2回目の通過とは、パイプラインの性能効率を低くするが、マクロ命令デコードロジックのバイト長の近似の高い成功率は、この並列の2重の長さデコード処理が利用されるのを保証するほど更に大きい効率の利益を提供する。次に命令1レジスタ206に戻り、このレジスタでラッチされたマクロ命令は、デコーダ0202に入り、デコーダ内の複数のロジックコンポーネントに伝達される。いずれかの種類の受信したマクロ命令のデコード処理を扱うために1つの大きいプログラミングロジックアレイPLA:programminglogicarrayを有する代わりに、デコーダ0に存在するPLAは、バイト長毎にマクロ命令デコードを実行するPLAに分割される。1バイトのオペコードを生成する全てのマクロ命令は、1バイトオペコードPLA212でデコードされ、2バイトのオペコードを生成する全てのマクロ命令は、2バイトオペコードPLA214でデコードされ、3バイトのオペコードを生成する全てのマクロ命令は、3バイトオペコードPLA216でデコードされる。更に、複雑命令PLA218は、PLA212~216のデコードでカバーされない全ての他のオペコードをデコードする。一般的に、ほとんどのマクロ命令は、1~3バイトのオペコードの変換に入るため、複雑命令PLA218は、他の3つのPLAほど頻繁に利用されなくてもよい。前の世代のデコーダでは、一般的に全ての命令をデコード可能なPLAが存在していた。図2の全ての4つのPLA内の回路は、この単一のPLAに統合されていた。従って、どのバイトサイズクラスのマクロ命令がPLAにより受信されたかに拘らず、マクロ命令を対応するオペコードにデコードするために全体のPLAがアクティブとなっていた。図2に示すこの実施例では、この回路は、4つの別々のPLAに分割される。更に、全てのPLAは、受信した発信クロック信号に基づいてサイクル毎にアクティブに実行している。この発信クロック信号は、クロック管理及び生成ロジックCMGL:clockmanagementandgenerationlogic220から受信される。CMGL220は、少なくとも1つの周波数で少なくとも1つの発信クロック信号を生成するクロック回路を含む。しかし、プロセッサの設計に柔軟性を与えるために、複数の周波数の複数の信号が利用されてもよい。1つより多くのクロック速度が利用されるいくつかの実施例では、いくつかのユニットは、2倍の周波数、半分の周波数、又は他の潜在的に操作されたクロック信号周波数でクロック信号を共に取得する。しかし、或る実施例では、図2に示す機能ユニット及びロジックは、全て同じ周波数で動作する。いずれの場合でも、CMGL220は、正確に実行することを要求する図2に示すいずれかの機能ブロック/ユニットに発信クロック信号を伝達してもよい。図2を明瞭にするために、クロック信号がCMGL220から外への線を通じて供給されるものとして特定のブロック/ユニットのみが示されているが、これらの特定のクロック源及び宛先の対は、以下に説明する。更に、CMGL220はまた、機能ブロック/ユニットのいずれか1つ以上へのクロック信号の供給をアクティブに管理する機能を提供するクロック管理回路を含む。例えば、クロック管理回路は、クロック信号を定常状態のハイ状態に上げ、又はクロック信号を定常したロー状態に下げるクロックゲートロジックを含んでもよい。クロックが実行することを必要とする機能ブロック/ユニットが入来するクロック信号を拒否された場合、ブロック/ユニットは機能するのを中止する。この理由は、内部回路が回路で切り替え動作すなわち、クロック信号が供給されることに基づく切り替え/トグリングを有するのではなく、定常状態にされるためである。従って、CMGL220が機能ロジックのブロック/ユニットへのクロック信号をシャットダウンすると、ロジックが動作を中止する。これは、ブロック/ユニットの回路における動的な切り替えの電力消費を節約する。従って、CMGL220は、図2のいずれか所与の機能ブロック/ユニットに供給されているクロック信号をシャットダウンしてもよく、しなくてもよい。多くの実施例では、マクロ命令デコードロジック210は、命令1レジスタ206に入った所与の命令に対応して判定されたバイトサイズクラス長近似情報をCMGL220に送信する。多くの実施例では、近似されたバイトサイズクラス長は、一般的に1、2又は3バイトでもよい。次のクロックサイクルでは、CMGL220は、近似された長さに対応するPLAへの供給されるクロック信号を維持し、他の長さを定常状態にデコードする他の2つのPLAに供給するクロックを除去する。前述の次のクロックサイクルでは、3つの特定のバイト長のPLAのうち1つのみが動作している。更に、他の2つの特定のバイト長のPLAは動作せず、あまり動的な電力を消費しない。この理由は、これらのそれぞれの回路内に動的な切り替えの電力消費が存在しないからである。次の命令がデコードされるために命令1レジスタ206で待機している次のクロックサイクルでは、同じ処理が行われる。従って、いずれか所与のクロックサイクルの間に、1、2及び3バイトオペコードPLAのうちせいぜい1つのみがかなりの動的な切り替え電力を消費している。多くの実施例では、複雑命令PLA218は、常に供給されるクロックを受信する。この理由は、CMGL220は、その特定のPLAについてクロックゲート機能を有さないからである。1、2又は3バイトのデコードの場合、マクロ命令が関係するバイト長のPLAを通過して対応するオペコードにデコードされると、これはMUX222を通じて多重される。PLA218を必要とする複雑命令の場合、その結果は、マイクロコードROMreadonlymemory224からオペコードを生成してもよい。MUX222の出力は、PLA218の出力と再び多重され、MUX226を通じてマイクロコードROM224と多重される。デコーダからの結果のオペコードを有するMUX226のオペコード出力は、プリフェッチバッファ200で元のマクロ命令に付加されたフィールドでもよい変位バイト及び/又は即値オペランドを扱うロジック228で受信される。元のマクロ命令に付加されたいずれかのフィールドが存在する場合変位バイト及び/又は即値オペランドが処理されると、オペコードは、デコーダ0から命令キュー230に出力され、実行を待機する。多くの実施例では、マクロ命令デコードロジック210は、所与の受信したマクロ命令を部分的にデコードしてもよい。マクロ命令デコードロジック210はまた、所与のマクロ命令でのプリデコード処理中に生成された一式のプリデコードビットを提供する。或る実施例では、マクロ命令デコードロジック210は、プリデコードビットに基づいて、デコーダ1で同時にデコードされた第2の命令が無効であることを判定可能でもよい。第2の命令が無効になる可能性がある理由について多くの例が存在するが例えば、分岐の問題、理由に拘らず、デコーダ1に入る第2の命令が無効であることをマクロ命令デコードロジック210が認識すると、マクロ命令デコードロジック210は、CMGL220に対してデコーダ2の全体に供給されるクロック信号をゲートさせてもよい。例えば、CMGL220は、命令2レジスタ208に対してクロックを定常状態に上げ、レジスタのラッチがデコーダ1への命令を出すことを可能にしないようにしてもよい。他の実施例では、CMGL220は、単一の位置のデコーダ図2に図示せずに入るクロックツリーに基づいて、デコーダ2内の全ての主要な機能ユニット/ブロックに個々に供給してもよい。これらの実施例では、CMGL220は、デコーダに入る全体のツリーをクロックゲートしてもよい。従って、命令が無効であることをプリデコーダロジック210が判定した場合、デコーダロジックに供給されるクロックをゲートすることにより、命令をオペコードにデコードするためにスケジュールされたデコーダ内の全てのロジックを基本的にシャットダウンする。デコーダ0に戻り、分岐、浮動小数点、フィールド検出ロジックBFFDL:branchfloatingpointfielddetectorlogic232もまた、命令1レジスタ206からデコーダ0に伝達されるマクロ命令を受信する。BFFDL232は、コア内の電力管理を支援するためお複数の部分の検出ロジックを含む。ロジックという名前が示唆するように、BFFDL232内に別々の分岐検出ロジック、浮動小数点検出ロジック及びフィールド検出ロジックが存在してもよい。分岐検出ロジックは、命令が分岐アドレスの計算を必要としているか否かを判定する。分岐アドレス計算ユニット234は、分岐命令について分岐アドレスが何であるかを計算する。マクロ命令が何らかの形式の分岐を含まない場合、この分岐アドレス計算ユニット234は利用されないが、このユニットに供給されるクロックは依然として動作する。これもまた、不要な動的切り替えの電力消費をもたらす。分岐アドレス計算ユニット234の電力消費を最小化するために、BFFDL232は、分岐アドレス計算ユニット234に到達する次の命令が分岐命令でないことを認識する。BFFDL232は、この情報をCMGL220に送信し、CMGL220に対して分岐アドレス計算ユニット234に供給されるクロックをゲートさせてもよい。BFFDL232内のフィールド検出ロジックは、受信した特定のマクロ命令が実際に変位バイトフィールドのデータ及び/又は即値オペランドフィールドのデータを有するか否かを判定する機能を有する。多くのマクロ命令はこれらのフィールドを利用しない。フィールドが利用されなくても、オペコードを扱うパイプラインを通じたロジックは、これらのフィールドのためのスロットを有しており、これらのスロットは、これらの中にオペコードと共に渡されるランダムな不要データを有する。ランダムな不要データは、データが利用されなくても、動的な切り替えの電力消費を生じる。従って、多くの実施例では、BFFDL232は、マクロ命令がこれらのフィールドのうち1つ又は双方を利用しないことを判定すると、ロジック228に対して未使用のフィールドをゼロにするように命令する。このフィールドをゼロにすることは、コア内の機能ユニット/ブロックの中でのパイプラインの電力消費を更に最小化する。BFFDL232内の浮動小数点検出ロジックは、入来するマクロ命令が浮動小数点FP:floatingpoint演算であるか否かを検出する。多くの実施例では、浮動小数点計算を扱う浮動小数点ユニット236は、前述のクロックゲートされる他のユニットと同様にクロックゲートされてもよい。しかし、浮動小数点ユニットのクロックゲートは更に複雑である。この理由は、このユニットが適切に機能するために必要なリードタイムが存在し、クロック毎にFPユニット236の全体をクロックゲートすることは非現実的であるからである。従って、多くの実施例では、FPユニット236は、全体のパイプラインにFP演算が存在しない場合にのみクロックゲートされる。FPユニットに関するパイプラインは、一般的にFPマクロ命令をデコードするためにデコーダユニットで始まり、解放ユニットで終了する実行が完了した後にFP命令を解放することを有する。従って、パイプラインにデコード及び解放の間に存在するFP演算の全セットのトラッキングをサポートするために、状態機械が実装されてもよい。FPマイクロオペトラッカユニット238は、パイプラインに存在するいずれかのFP命令/オペコードをトラッキング監視し、FP命令/オペコードが存在しない場合には、FPユニット236をクロックゲートするようにCMGL220に命令してもよい。BFFDL232は、FP命令がデコード段階に入ったときにFPマイクロオペトラッカ238に情報を送信する。FP命令は、全体のパイプラインを通過し、最終的に解放される。解放の間に、割り当て/解放ユニット240は、FP命令が解放されたことをFPマイクロオペトラッカ238に通知する。解放されると、更なるFP命令がデコーダに入らない場合、FPマイクロオペトラッカ238は、FPユニット236に入るクロックをシャットダウンするようにCMGL220に命令してもよい。図3は、命令パイプラインを通じた浮動小数点マイクロ演算をトラッキングするために利用される状態機械の実施例を記載している。開始状態は、浮動小数点マイクロ演算に関するアイドル状態にあるパイプラインを示している状態300。FPマイクロ演算uOPが受信されない場合、状態機械はアイドル状態に留まる。この理由は、パイプラインがFPuOPをデコードしないからであるタスクA。FPuOPが到達すると、パイプラインはFPuOPをデコードしタスクB、状態機械は、uOPがデコード段階を終了し、依然として命令キューに存在する次の状態に遷移する状態302。FPuOPが命令キューに存在する場合、アイドル状態に戻る唯一の方法は、パイプラインに残る更なるFPuOPがなく、FPuOPが解放されることである。FPuOPが命令キューに存在する場合状態302、2つのイベントが生じてもよい。まず、新たな第2のFPuOPがデコーダに到達する間に命令キューのFPuOPが依然として命令キューに存在する場合、状態機械は第1のFPuOPのトラッキングを中止し、その代わりに、ちょうど到達した第2のFPuOPのトラッキングに遷移する。これは、第2のFPuOPが第1のFPuOPの後に解放されるからである。パイプラインは、他のFPuOPをデコードするタスクを実行するタスクC。他の潜在的なイベントは、命令キューのuOPが実行されるためにリソースを割り当てられ得ることであるタスクD。この場合、状態機械はuOP割り当て状態状態304に遷移する。uOP割り当て状態では、更なる3つのイベントが生じてもよい。まず、割り当て段階状態304の第1のFPuOPがまだ解放されていないが、新たな第2のFPuOPがデコーダに到達した場合、状態機械は、第1のFPuOPのトラッキングを中止し、その代わりに、ちょうど到達した第2のFPuOPのトラッキングに遷移する。これは、第2のFPuOPが第1のFPuOPの後に解放されるからである。パイプラインは、他のFPuOPをデコードするタスクを実行するタスクE。これは、状態機械をUOPが命令キューにある状態状態302に戻ることを生じ、この時点で、状態機械は第2のFPuOPをトラッキングしている。状態304で生じ得る第2のイベントは、FPuOPの割り当てが行われたが、FPuOPの解放が生じていない場合である。この場合、パイプラインはFPuOPを解放しないため、イベントは生じないタスクF。これは、FPuOPの実行中に行われてもよい。状態304で生じ得る第3のイベントは、パイプラインがFPuOPを解放してもよい場合であるタスクG。このイベントが行われると、状態機械はアイドル状態300に戻る。状態機械がアイドル状態にあるいずれかの時点で、FPマイクロオペトラッカ図2の238は、CMGL220に対してFPユニット236をクロックゲートするように命令してもよい。図4は、デコーダに入る現在の命令をデコードするように構成されていないデコーダにおいて1つ以上のプログラム可能ロジックアレイをクロックゲートする処理の実施例のフローチャートである。この処理は、異なる実施例においてハードウェア回路及び/又はマイクロコードを有してもよい処理ロジックにより実行される。処理は、処理ロジックがプリフェッチバッファからマクロ命令を取得することにより始まる処理ブロック400。処理は、処理ロジックがマクロ命令のバイト長クラスを判定することにより続く処理ブロック402。判定に基づいて、処理ロジックは、マクロ命令がデコードされるべきデコーダにおいて1つ以上のPLAをクロックゲートする処理ブロック404。クロックゲートされる特定のPLAは、判定されたバイト長クラスのマクロ命令をデコードするための割り当てられていないものである。最後に、処理ロジックは、クロックゲートされていない残りのPLAで、デコーダにおいてマクロ命令をデコードする処理ブロック406。図5は、分岐命令がパイプラインでデコードされていない場合に分岐ユニットをクロックゲートする処理の実施例のフローチャートである。この処理は、異なる実施例においてハードウェア回路及び/又はマイクロコードを有してもよい処理ロジックにより実行される。処理は、処理ロジックがプリフェッチバッファからマクロ命令を取得することにより始まる処理ブロック500。処理ロジックは、命令が分岐命令であるか否かを判定する処理ブロック502。命令が分岐命令である場合、処理が終了する。そうでなく、命令が分岐命令でない場合、処理ロジックは、マクロ命令から生成されたオペコードがパイプラインの分岐計算位置に存在するクロックサイクルの間に分岐ユニットをクロックゲートし処理ブロック504、処理が完了する。図6は、浮動小数点命令がパイプラインに存在しない場合に浮動小数点ユニットをクロックゲートする処理の実施例のフローチャートである。この処理は、異なる実施例においてハードウェア回路及び/又はマイクロコードを有してもよい処理ロジックにより実行される。処理は、処理ロジックがデコードユニットと解放ユニットとの間のパイプラインにFP命令が存在するか否かを判定することにより始まる処理ブロック600。パイプラインのどこかにFP命令が存在する場合、処理はブロック600に戻り、再び検査する。そうでなく、FP命令がパイプラインに存在しない場合、処理ロジックは、FPユニットをクロックゲートする処理ブロック602。多くの実施例では、この処理は、パイプラインにおけるFP命令の存在をトラッキングするために、図3に詳細に説明した状態機械を利用する。図7は、命令がフィールドを利用しない場合に命令の即値及び変位バイトフィールドをゼロにする処理の実施例のフローチャートである。この処理は、異なる実施例においてハードウェア回路及び/又はマイクロコードを有してもよい処理ロジックにより実行される。処理は、処理ロジックがプリフェッチバッファからマクロ命令を取得することにより始まる処理ブロック700。処理ロジックは、命令が即値フィールドを利用するか否かを判定する処理ブロック702。命令が即値フィールドを使用しない場合、処理ロジックは、命令の即値フィールドの全てのデータをゼロにする処理ブロック704。命令が即値フィールドを利用するか否かに拘らず、次に、処理ブロックは、命令が変位バイトフィールドを利用するか否かを判定する処理ブロック706。変位バイトフィールドを使用する場合、処理は終了する。そうでなく、命令が変位バイトフィールドを使用しない場合、処理ロジックは、命令の変位バイトフィールドの全てのデータをゼロにし処理ブロック708、処理が終了する。多くの実施例において、所与の機能ブロック/ユニットでクロックゲートが実行された場合、クロックは、ユニットへの少なくとも1つのクロックサイクルの間にゲートされるが、ユニットをクロックゲートする特定の理由に応じて、クロックゲートは1つより多くのサイクルの間に行われてもよい。例えば、1バイトPLAをクロックゲートすることは、一般的に単一クロックサイクルに基づいて行われる。この理由は、命令がクロックサイクル毎にデコードされるために入れられるからである。従って、PLAは、1クロックサイクルの小さい期間にゲートされてもよい。このことに関して、数千ものマイクロ命令が単一の浮動小数点演算なしにパイプラインを通過してもよい。この場合、FPユニットは、多くのクロックサイクルの間に連続してクロックゲートされてもよい。本発明の実施例の要素は、機械実行可能命令を格納する機械可読媒体として提供されてもよい。機械可読媒体は、フラッシュメモリ、光ディスク、CDROMcompactdisksreadonlymemory、DVDdigitalversatilevideodisks、ROM、RAMrandomaccessmemory、EPROMerasableprogrammablereadonlymemory、EEPROMelectricallyerasableprogrammablereadonlymemory、磁気若しくは光学カード、伝搬媒体、又は電子命令を格納するのに適した他の種類の機械可読媒体を含んでもよいが、これらに限定されない。前述の説明及び特許請求の範囲において、含む及び有するという用語並びにその派生形が使用されてもよい。これらは、互いに同語と扱われることを意図している。更に、以下の説明及び特許請求の範囲において、結合及び接続という用語並びにその派生形が使用されてもよい。これらの用語は互いに同義であることを意図しないことが分かる。むしろ、特定の実施例において、接続は、2つ以上の要素が互いに直接の物理的又は電気的接触をしていることを示すために使用され得る。結合は、2つ以上の要素が直接の物理的又は電気的接触にあることを意味してもよい。しかし、結合はまた、2つ以上の要素が互いに直接接触していないが、依然として互いに協調、相互作用又は通信することを意味してもよい。前述の説明において、本発明の実施例を説明するために特定の用語が使用されている。例えば、ロジックという用語は、1つ以上の機能を実行するハードウェア、ファームウェア、ソフトウェア又はこれらのいずれかの組み合わせを表す。例えば、ハードウェアの例は、集積回路、有限状態機械又は組み合わせロジックを含むが、これらに限定されない。集積回路は、マイクロプロセッサ、特定用途向け集積回路、デジタルシグナルプロセッサ、マイクロコントローラ等のようなプロセッサの形式になってもよい。この明細書を通じて一実施例又は実施例への言及は、実施例に関して説明した特定の機能、構造又は特徴が本発明の少なくとも1つの実施例に含まれることを意味することが分かる。従って、この明細書の様々な部分における実施例又は一実施例若しくは別の実施例への2つ以上の言及は、必ずしも同じ実施例を示しているとは限らないことを強調し、これを認識すべきである。更に、特定の機能、構造又は特徴は、本発明の1つ以上の実施例において適切に組み合わされてもよい。同様に、1つ以上の様々な本発明の態様の理解を支援する開示を簡潔にする目的で、本発明の実施例の前述の説明では、様々な特徴が場合によっては単一の実施例、図面又はその説明にグループ化されることが分かる。しかし、この開示の方法は、特許請求の範囲の対象が各請求項に明示的に記載された特徴より多くのものを必要とするという意図を反映するものと解釈されるべきでない。むしろ、以下の請求項に反映するように、本発明の態様は、単一の前述に開示された実施例の全ての特徴より少ないものにある。従って、詳細な説明に続く特許請求の範囲は、ここでこの詳細な説明に明示的に組み込まれる。