JP5735112B2 - 命令のクラス及び内容に基づくプロセッサの電力管理 - Google Patents

命令のクラス及び内容に基づくプロセッサの電力管理 Download PDF

Info

Publication number
JP5735112B2
JP5735112B2 JP2013530380A JP2013530380A JP5735112B2 JP 5735112 B2 JP5735112 B2 JP 5735112B2 JP 2013530380 A JP2013530380 A JP 2013530380A JP 2013530380 A JP2013530380 A JP 2013530380A JP 5735112 B2 JP5735112 B2 JP 5735112B2
Authority
JP
Japan
Prior art keywords
instruction
macro instruction
macro
units
floating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013530380A
Other languages
English (en)
Other versions
JP2013546036A (ja
Inventor
アール. マッドゥーリ,ヴェンカテスワラ
アール. マッドゥーリ,ヴェンカテスワラ
ワイ. トーン,ジョナサン
ワイ. トーン,ジョナサン
チョン,ホイチ
Original Assignee
インテル コーポレイション
インテル コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2013546036A publication Critical patent/JP2013546036A/ja
Application granted granted Critical
Publication of JP5735112B2 publication Critical patent/JP5735112B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)
  • Executing Machine-Instructions (AREA)
  • Power Sources (AREA)

Description

本発明は、命令内で所与の命令クラス又は特定の内容に利用されていないプロセッサの個々の部分をクロックゲートすることにより、プロセッサの電力消費を管理することに関する。
命令パイプラインの特定の段階で動作する中央処理装置(CPU:central processing unit)の多くの異なる機能ユニットが存在する。
命令のクラス又は命令内の内容に応じて、全ての機能ユニットが同時に利用されていない場合がしばしば存在する。従って、CPU内の全ての機能ユニットが同時にオンになるべきであるという固有の理由は存在しない。むしろ、いずれか所与の時間において、何らかのユニットは動作すべきデータを有さないことがある。機能ユニットが動作すべきデータを有さない場合、事実上アイドルになっている。しかし、依然としてアクティブなクロックを供給されているこのようなアイドルユニットは、受信したクロック信号のため、ユニットを通じてラッチの一定の切り替え(すなわち、トグリング(toggling))を通じて電力消費を受ける。
x86命令は複数のフィールドを有する。最も基本的なフィールドのうち3つは、命令オペコードフィールド(例えば、移動、シフト等)、即値オペランド(immediate operand)フィールド、及び変位バイト(displacement byte)フィールドである。命令パイプライン内の多くの機能ユニットは、これらのフィールドを扱う回路を有するが、パイプラインを通じて移動するいくつかの命令は変位バイト情報又は即値オペランド情報を有さない。これらの場合、これらのフィールドを埋めるバイトは利用されず、一般的にはランダムなデータビットから構成される。命令がパイプラインを通じて移動すると、これらのフィールドは利用されないが、機能ユニットは、この情報に入るラッチの切り替えを依然として検出する。この切り替えは、CPUの機能ユニット内の電力消費を更に増加させる。
システムの少なくとも1つのプロセッサ内で実行される命令のクラス及び内容に基づいてプロセッサの電力消費を管理可能なコンピュータシステムの実施例 命令クラスの判定及び命令内容の判定を通じてコアの電力消費を管理する機能をコアに対して可能にする所与のコア内の特定の関係するユニット及び機能ロジックブロック 命令パイプラインを通じた浮動小数点マイクロ演算をトラッキングするために利用される状態機械の実施例 デコーダに入る現在の命令をデコードするように構成されていないデコーダにおいて1つ以上のプログラム可能ロジックアレイをクロックゲートする処理の実施例のフローチャート 分岐命令がパイプラインでデコードされていない場合に分岐ユニットをクロックゲートする処理の実施例のフローチャート 浮動小数点命令がパイプラインに存在しない場合に浮動小数点ユニットをクロックゲートする処理の実施例のフローチャート 命令がフィールドを利用しない場合に命令の即値及び変位バイトフィールドをゼロにする処理の実施例のフローチャート
本発明について一例を用いて説明する。本発明は図面により限定されない。図面において、同様の参照符号は同様の要素を示す。
命令パイプラインにおける命令のクラス及び内容に基づいてプロセッサの電力を管理するプロセッサ及び方法の実施例について開示する。
図1は、システムの少なくとも1つのプロセッサ内で実行されている命令のクラス及び内容に基づいてプロセッサの電力消費を管理可能なコンピュータシステムの実施例を示している。
コンピュータシステム100が示されている。コンピュータシステムは、デスクトップ、サーバ、ワークステーション、ラップトップ、ハンドヘルド、テレビセットトップボックス、メディアセンタ、ゲームコンソール、統合システム(車内のもの等)、又は他の種類のコンピュータシステムでもよい。いくつかの実施例では、コンピュータシステム100は、“プロセッサ”とも呼ばれる1つ以上の中央処理装置(CPU)を含む。多くの実施例では潜在的に多くのCPUが存在するが、図1に示す実施例では、簡潔にするためにCPU102のみが示されている。CPU102は、Intel(R) CorporationのCPUでもよく、他のブランドのCPUでもよい。異なる実施例では、CPU102は1つ以上のコアを含む。4つのコア(104、106、108及び110)を含むCPU102が示されている。
多くの実施例では、コア104の拡大図に示すもののように、各コアは複数の内部機能ブロック/ユニット/ロジックコンポーネントを含む。例えば、コア104は、命令/データ(すなわち、レベル1、L1)キャッシュ112と、プリフェッチバッファ114と、プリデコードキャッシュ116と、命令デコーダ118と、分岐アドレス計算ユニット120と、命令キュー122と、浮動小数点実行ユニット124と、割り当て/解放(allocation/retirement)ユニット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は、一種のダブルデータレート(DDR)DRAMのようなダイナミックランダムアクセスメモリ(DRAM)、フラッシュメモリのような不揮発性メモリ、相変化メモリ(PCM:phase change memory)、又は他の種類のメモリ技術を含んでもよい。システムメモリ134は、CPU102により動作されるデータ及び命令を格納するための汎用メモリでもよい。更に、ダイレクトメモリアクセス(DMA)可能I/O(入/出力)デバイスのようにシステムメモリに読み書きする機能を有する他の潜在的なデバイスがコンピュータシステムの100に存在してもよい。
CPU102をシステムメモリ134と結合するリンク(すなわち、バス、相互接続等)は、データ、アドレス、制御及びクロック情報を伝送可能な1つ以上の光、金属又は他の配線(すなわち、回線)を含んでもよい。
プラットフォームコントローラハブ(PCH:platform controller hub)136(例えば、I/O回路と他の回路との複合)は、CPU102と外部I/Oデバイスとの間での通信を可能にするI/Oインタフェースを含む。この複合は、1つ以上のI/Oアダプタ(I/Oアダプタ138等)を含んでもよい。I/Oアダプタは、CPU102内で利用されるホスト通信プロトコルを特定のI/Oデバイス(I/Oデバイス140等)と互換性のあるプロトコルに変換する。所与のI/Oアダプタが変換し得るいくつかのプロトコルは、特に、PCI(Peripheral Component Interconnect)-Express、USB(Universal Serial Bus)、SATA(Serial Advanced Technology Attachment)、SCSI(Small Computer System Interface)、RAID(Redundant Array of Inexpensive Disks)及び1394 “Firewire”を含む。更に、1つ以上の無線プロトコルI/Oアダプタが存在してもよい。無線プロトコルの例は、特に、Bluetooth(登録商標)、IEEE802.11に基づく無線プロトコル及びセルラプロトコルである。
I/Oデバイスとは別に、PCH136はまた、システム内の1つ以上の埋め込みコントローラ(EC:embedded controller)(EC142等)に結合されてもよい。EC142は、複数の機能を組み込んでもよい。例えば、RAIDストレージコントローラデバイスがコンピュータシステム100内に存在してもよい。RAIDコントローラは、ハードディスクドライブ又は固体ディスク(SSD:solid state disk)のアレイを管理してもよい。コントローラデバイスの他の例は、離散帯域外管理エンジン(discrete out-of-band manageability engine)、キーボードコントローラ、又は他の種類のコントローラでもよい。
他の実施例では、PCH136は、CPU102の外部に位置する別個のデバイスである。これらの実施例では、ダイレクトメモリインタフェース(DMI:direct memory interface)のようなインタフェースは、CPUをPCHに結合する。しかし、これらの実施例は図示されていない。
CPU間インタフェース144は、1つ以上の更なるCPUに結合されたリンクへのインタフェースを提供し、CPU間の通信が行われることを可能にしてもよい。例えば、CPU間高速インタフェースは、QPI(Quick Path Interconnect)又は他の同様のインタフェースでもよい。図1には更なるCPUは示されていないが、多くの実施例では、CPU102は、コンピュータシステム100内に存在する複数のCPUのうち1つである。多くの実施例では、CPU間インタフェース144は、CPU102とシステムに存在する他のCPUのそれぞれとの間でポイント・ツー・ポイントの高速通信インタフェースを提供する。
グラフィックインタフェース146は、別個のグラフィックコントローラに結合されたリンクへのインタフェースを提供してもよい(別個のグラフィックコントローラは示されていない)。インタフェースは、高速PCI(platform component interconnect)-Expressインタフェース又は他の高速インタフェースでもよい。他の実施例では、CPU102は、統合グラフィックコントローラを含み、グラフィックインタフェース146は、モニタのようなディスプレイに結合されてもよい。多くの実施例では、インタフェースは、かなりのグラフィックデータのトラヒック(例えば、3Dグラフィックス、ビデオ等)がリンクを通じて伝送可能になるように高速である。
コンピュータシステム100はまた、コンピュータシステム及びコンポーネントを初期化するためのブート命令を提供するシステム管理ファームウェア148を含む。異なる実施例では、システム管理ファームウェアは、BIOS(basic input/ouput system)、拡張可能ファームウェア、又はコンピュータシステムがプラットフォームのブート中に利用し得る他の形式のファームウェア命令でもよい。
多くの実施例では、コンピュータシステム100内の各コアは、各コア内で実行されている命令のクラス及び内容に基づいてコアの電力消費を管理する内部ロジックを含む。クロック管理/生成ロジック128を通じてクロック毎に特定のユニットをクロックゲートするために、複数のユニット内で様々なロジックが利用されている。
図2は、命令クラスの判定及び命令内容の判定を通じてコアの電力消費を管理する機能をコアに対して可能にする所与のコア内の特定の関係するユニット及び機能ロジックブロックを示している。
所与のコアにおいて、マクロ命令は、命令キャッシュ112から取得され、プリフェッチバッファ200に到達する。多くの実施例では、2つの命令デコーダ(デコーダ0(202)及びデコーダ1(204))が存在する。プリフェッチバッファ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に戻り、このレジスタでラッチされたマクロ命令は、デコーダ0(202)に入り、デコーダ内の複数のロジックコンポーネントに伝達される。いずれかの種類の受信したマクロ命令のデコード処理を扱うために1つの大きいプログラミングロジックアレイ(PLA:programming logic array)を有する代わりに、デコーダ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:clock management and generation logic)220から受信される。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を必要とする複雑命令の場合、その結果は、マイクロコードROM(read-only memory)224からオペコードを生成してもよい。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:branch, floating point, field detector logic)232もまた、命令1レジスタ206からデコーダ0に伝達されるマクロ命令を受信する。BFFDL232は、コア内の電力管理を支援するためお複数の部分の検出ロジックを含む。
ロジックという名前が示唆するように、BFFDL232内に別々の分岐検出ロジック、浮動小数点検出ロジック及びフィールド検出ロジックが存在してもよい。分岐検出ロジックは、命令が分岐アドレスの計算を必要としているか否かを判定する。
分岐アドレス計算ユニット234は、分岐命令について分岐アドレスが何であるかを計算する。マクロ命令が何らかの形式の分岐を含まない場合、この分岐アドレス計算ユニット234は利用されないが、このユニットに供給されるクロックは依然として動作する。これもまた、不要な動的切り替えの電力消費をもたらす。分岐アドレス計算ユニット234の電力消費を最小化するために、BFFDL232は、分岐アドレス計算ユニット234に到達する次の命令が分岐命令でないことを認識する。BFFDL232は、この情報をCMGL220に送信し、CMGL220に対して分岐アドレス計算ユニット234に供給されるクロックをゲートさせてもよい。
BFFDL232内のフィールド検出ロジックは、受信した特定のマクロ命令が実際に変位バイトフィールドのデータ及び/又は即値オペランドフィールドのデータを有するか否かを判定する機能を有する。多くのマクロ命令はこれらのフィールドを利用しない。フィールドが利用されなくても、オペコードを扱うパイプラインを通じたロジックは、これらのフィールドのためのスロットを有しており、これらのスロットは、これらの中にオペコードと共に渡されるランダムな不要データを有する。ランダムな不要データは、データが利用されなくても、動的な切り替えの電力消費を生じる。従って、多くの実施例では、BFFDL232は、マクロ命令がこれらのフィールドのうち1つ又は双方を利用しないことを判定すると、ロジック228に対して未使用のフィールドをゼロにするように命令する。このフィールドをゼロにすることは、コア内の機能ユニット/ブロックの中でのパイプラインの電力消費を更に最小化する。
BFFDL232内の浮動小数点検出ロジックは、入来するマクロ命令が浮動小数点(FP:floating point)演算であるか否かを検出する。多くの実施例では、浮動小数点計算を扱う浮動小数点ユニット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)が受信されない場合、状態機械はアイドル状態に留まる。この理由は、パイプラインがFP uOPをデコードしないからである(タスクA)。FP uOPが到達すると、パイプラインはFP uOPをデコードし(タスクB)、状態機械は、uOPがデコード段階を終了し、依然として命令キューに存在する次の状態に遷移する(状態302)。FP uOPが命令キューに存在する場合、アイドル状態に戻る唯一の方法は、パイプラインに残る更なるFP uOPがなく、FP uOPが解放されることである。
FP uOPが命令キューに存在する場合(状態302)、2つのイベントが生じてもよい。まず、新たな第2のFP uOPがデコーダに到達する間に命令キューのFP uOPが依然として命令キューに存在する場合、状態機械は第1のFP uOPのトラッキングを中止し、その代わりに、ちょうど到達した第2のFP uOPのトラッキングに遷移する。これは、第2のFP uOPが第1のFP uOPの後に解放されるからである。パイプラインは、他のFP uOPをデコードするタスクを実行する(タスクC)。
他の潜在的なイベントは、命令キューのuOPが実行されるためにリソースを割り当てられ得ることである(タスクD)。この場合、状態機械はuOP割り当て状態(状態304)に遷移する。
uOP割り当て状態では、更なる3つのイベントが生じてもよい。まず、割り当て段階(状態304)の第1のFP uOPがまだ解放されていないが、新たな第2のFP uOPがデコーダに到達した場合、状態機械は、第1のFP uOPのトラッキングを中止し、その代わりに、ちょうど到達した第2のFP uOPのトラッキングに遷移する。これは、第2のFP uOPが第1のFP uOPの後に解放されるからである。パイプラインは、他のFP uOPをデコードするタスクを実行する(タスクE)。これは、状態機械をUOPが命令キューにある状態(状態302)に戻ることを生じ、この時点で、状態機械は第2のFP uOPをトラッキングしている。
状態304で生じ得る第2のイベントは、FP uOPの割り当てが行われたが、FP uOPの解放が生じていない場合である。この場合、パイプラインはFP uOPを解放しないため、イベントは生じない(タスクF)。これは、FP uOPの実行中に行われてもよい。
状態304で生じ得る第3のイベントは、パイプラインがFP uOPを解放してもよい場合である(タスク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ユニットは、多くのクロックサイクルの間に連続してクロックゲートされてもよい。
本発明の実施例の要素は、機械実行可能命令を格納する機械可読媒体として提供されてもよい。機械可読媒体は、フラッシュメモリ、光ディスク、CD-ROM(compact disks-read only memory)、DVD(digital versatile/video disks)、ROM、RAM(random access memory)、EPROM(erasable programmable read-only memory)、EEPROM(electrically erasable programmable read-only memory)、磁気若しくは光学カード、伝搬媒体、又は電子命令を格納するのに適した他の種類の機械可読媒体を含んでもよいが、これらに限定されない。
前述の説明及び特許請求の範囲において、“含む”及び“有する”という用語並びにその派生形が使用されてもよい。これらは、互いに同語と扱われることを意図している。更に、以下の説明及び特許請求の範囲において、“結合”及び“接続”という用語並びにその派生形が使用されてもよい。これらの用語は互いに同義であることを意図しないことが分かる。むしろ、特定の実施例において、“接続”は、2つ以上の要素が互いに直接の物理的又は電気的接触をしていることを示すために使用され得る。“結合”は、2つ以上の要素が直接の物理的又は電気的接触にあることを意味してもよい。しかし、“結合”はまた、2つ以上の要素が互いに直接接触していないが、依然として互いに協調、相互作用又は通信することを意味してもよい。
前述の説明において、本発明の実施例を説明するために特定の用語が使用されている。例えば、“ロジック”という用語は、1つ以上の機能を実行するハードウェア、ファームウェア、ソフトウェア(又はこれらのいずれかの組み合わせ)を表す。例えば、“ハードウェア”の例は、集積回路、有限状態機械又は組み合わせロジックを含むが、これらに限定されない。集積回路は、マイクロプロセッサ、特定用途向け集積回路、デジタルシグナルプロセッサ、マイクロコントローラ等のようなプロセッサの形式になってもよい。
この明細書を通じて“一実施例”又は“実施例”への言及は、実施例に関して説明した特定の機能、構造又は特徴が本発明の少なくとも1つの実施例に含まれることを意味することが分かる。従って、この明細書の様々な部分における“実施例”又は“一実施例”若しくは“別の実施例”への2つ以上の言及は、必ずしも同じ実施例を示しているとは限らないことを強調し、これを認識すべきである。更に、特定の機能、構造又は特徴は、本発明の1つ以上の実施例において適切に組み合わされてもよい。
同様に、1つ以上の様々な本発明の態様の理解を支援する開示を簡潔にする目的で、本発明の実施例の前述の説明では、様々な特徴が場合によっては単一の実施例、図面又はその説明にグループ化されることが分かる。しかし、この開示の方法は、特許請求の範囲の対象が各請求項に明示的に記載された特徴より多くのものを必要とするという意図を反映するものと解釈されるべきでない。むしろ、以下の請求項に反映するように、本発明の態様は、単一の前述に開示された実施例の全ての特徴より少ないものにある。従って、詳細な説明に続く特許請求の範囲は、ここでこの詳細な説明に明示的に組み込まれる。

Claims (17)

  1. 複数のマクロ命令を格納するプリフェッチバッファと、
    プロセッサの少なくとも複数のユニットのために発信クロック信号を提供するクロック回路と、
    前記プリフェッチバッファから取得された各マクロ命令のクラスを判定するためのマクロ命令デコードロジックと、
    前記複数のマクロ命令のうち第1のマクロ命令のクラスの判定に応じて、前記第1のマクロ命令のクラスにより判定された、前記第1のマクロ命令での動作に利用されない前記プロセッサの前記複数のユニットのうち少なくとも1つへの前記クロック回路により供給される発信クロック信号をゲートさせるクロック管理ユニットと、
    前記第1のマクロ命令が1つ以上の変位バイトを含むか否かを判定し、前記第1のマクロ命令が変位バイトを有さないことに応じて、前記第1のマクロ命令の変位バイトフィールドをゼロにするためのフィールド検出ロジックと、
    前記第1のマクロ命令を1つ以上のオペコードにデコードする第1の命令デコーダユニットと、
    前記複数のマクロ命令のうち浮動小数点マクロ命令に対応する浮動小数点マイクロ演算を、前記浮動小数点マクロ命令が前記プリフェッチバッファから取得された時点から、前記浮動小数点マイクロ演算の解放の時点までトラッキングし、設定された場合に浮動小数点マイクロ演算が現在トラッキングされていないことを示す浮動小数点パイプラインクリアフラグを設定する浮動小数点マイクロ演算トラッカと
    を有し、
    前記クロック管理ユニットは、前記浮動小数点パイプラインクリアフラグが設定されたことに応じて、前記複数のユニットのうち浮動小数点ユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせるプロセッサ。
  2. 前記第1の命令デコーダユニットは、
    前記プリフェッチバッファから取得されたマクロ命令をデコードし、1バイトのオペコードを生成する前記複数のユニットのうちの第1のプログラム可能ロジックアレイ(PLA)ユニットと、
    前記プリフェッチバッファから取得されたマクロ命令をデコードし、2バイトのオペコードを生成する前記複数のユニットのうちの第2のPLAユニットと、
    前記プリフェッチバッファから取得されたマクロ命令をデコードし、3バイトのオペコードを生成する前記複数のユニットのうちの第3のPLAユニットと
    を含み、
    前記マクロ命令デコードロジックは、前記第1のマクロ命令から生成されるオペコードのバイト長を判定するためのものであり
    前記クロック管理ユニットは、生成されるオペコードのバイト長について判定されたマクロ命令をデコードしない前記第1、第2及び第3のPLAユニットのうちいずれかに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせる、請求項1に記載のプロセッサ。
  3. 前記クロック管理ユニットは、分岐検出ロジックに基づいて前記第1のマクロ命令のクラスが分岐命令でないと判定されることに応じて、前記複数のユニットのうちの分岐アドレス計算ユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせる、請求項1に記載のプロセッサ。
  4. 前記フィールド検出ロジックに基づいて、前記第1のマクロ命令が即値オペランドを含むか否かを判定し、前記第1のマクロ命令が即値オペランドを有さないことに応じて、前記第1のマクロ命令の即値オペランドフィールドをゼロにする、請求項1に記載のプロセッサ。
  5. 前記複数のユニットのうち第2の命令デコーダユニットを更に有し、
    前記マクロ命令デコードロジックは、前記複数のマクロ命令のうち第2のマクロ命令が有効でないか否かを判定するためのものであり、前記第1のマクロ命令は第1のクロックサイクルに前記第1の命令デコーダユニットに入り、前記第2のマクロ命令は前記第1のクロックサイクルに前記第2の命令デコーダユニットに入り、
    前記クロック管理ユニットは、前記第2のマクロ命令が有効でないと判定されたことに応じて、前記第2の命令デコーダユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせる、請求項1に記載のプロセッサ。
  6. 複数のマクロ命令をプリフェッチバッファに格納するステップと、
    プロセッサの少なくとも複数のユニットのために発信クロック信号を提供するステップと、
    前記プリフェッチバッファから取得された各マクロ命令のクラスを判定するステップと、
    前記複数のマクロ命令のうち第1のマクロ命令のクラスの判定に応じて、前記第1のマクロ命令のクラスにより判定された、前記第1のマクロ命令での動作に利用されない前記プロセッサの前記複数のユニットのうち少なくとも1つへのクロック回路により供給される発信クロック信号をゲートさせるステップと、
    前記第1のマクロ命令が1つ以上の変位バイトを含むか否かを判定するステップと、
    前記第1のマクロ命令が変位バイトを有さないことに応じて、前記第1のマクロ命令の変位バイトフィールドをゼロにするステップと、
    前記第1のマクロ命令を1つ以上のオペコードにデコードするステップと、
    前記複数のマクロ命令のうち浮動小数点マクロ命令に対応する浮動小数点マイクロ演算を、前記浮動小数点マクロ命令が前記プリフェッチバッファから取得された時点から、前記浮動小数点マイクロ演算の解放の時点までトラッキングするステップと、
    設定された場合に浮動小数点マイクロ演算が現在トラッキングされていないことを示す浮動小数点パイプラインクリアフラグを設定するステップと、
    前記浮動小数点パイプラインクリアフラグが設定されたことに応じて、前記複数のユニットのうち浮動小数点ユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせるステップと
    を有する方法。
  7. 前記プリフェッチバッファから取得されたマクロ命令をデコードし、1バイトのオペコード、2バイトのオペコード又は3バイトのオペコードを生成するステップと、
    前記第1のマクロ命令から生成されるオペコードのバイト長を判定するステップと、
    生成されるオペコードのバイト長について判定されたマクロ命令をデコードしない第1、第2及び第3のPLAのうちいずれかに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせるステップと
    を更に有する、請求項6に記載の方法。
  8. 前記判定された前記第1のマクロ命令のクラスが分岐命令でないことに応じて、前記複数のユニットのうち分岐アドレス計算ユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせるステップを更に有する、請求項6に記載の方法。
  9. 前記第1のマクロ命令が即値オペランドを含むか否かを判定するステップと、
    前記第1のマクロ命令が即値オペランドを有さないことに応じて、前記第1のマクロ命令の即値オペランドフィールドをゼロにするステップと
    を更に有する、請求項6に記載の方法。
  10. 前記複数のマクロ命令のうち第2のマクロ命令が有効でないか否かを判定するステップであり、前記第1のマクロ命令は第1のクロックサイクルに第1の命令デコーダユニットに入り、前記第2のマクロ命令は前記第1のクロックサイクルに第2の命令デコーダユニットに入るステップと、
    前記第2のマクロ命令が有効でないと判定されたことに応じて、前記第2の命令デコーダユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせるステップと
    を更に有する、請求項6に記載の方法。
  11. 複数のマクロ命令を格納するプリフェッチバッファと、
    プロセッサの少なくとも複数のユニットのために発信クロック信号を提供するクロック回路と、
    前記プリフェッチバッファから取得された各マクロ命令の近似バイト長クラスを判定するためのマクロ命令デコードロジックと、
    前記複数のマクロ命令のうち第1のマクロ命令の近似バイト長クラスの判定に応じて、前記第1のマクロ命令のクラスにより判定された、前記第1のマクロ命令での動作に利用されない前記プロセッサの前記複数のユニットのうち少なくとも1つへの前記クロック回路により供給される発信クロック信号をゲートさせるクロック管理ユニットと、
    前記第1のマクロ命令を1つ以上のオペコードにデコードする第1の命令デコーダユニットと、
    前記第1の命令デコーダユニットと並列して前記第1のマクロ命令をデコードすることにより、前記第1のマクロ命令の正確なバイト長クラスを判定し、
    前記第1のマクロ命令の前記近似バイト長クラスと前記第1のマクロ命令の前記正確なバイト長クラスとを比較し、
    前記正確なバイト長と前記近似バイト長とが異なる長さであることに応じて、前記第1の命令デコーダユニットにより生成される前記1つ以上のオペコードを無効にするためのフルレングス・デコーダロジックと
    を有するプロセッサ。
  12. 前記第1の命令デコーダユニットは、
    前記プリフェッチバッファから取得されたマクロ命令をデコードし、1バイトのオペコードを生成する前記複数のユニットのうちの第1のプログラム可能ロジックアレイ(PLA)ユニットと、
    前記プリフェッチバッファから取得されたマクロ命令をデコードし、2バイトのオペコードを生成する前記複数のユニットのうちの第2のPLAユニットと、
    前記プリフェッチバッファから取得されたマクロ命令をデコードし、3バイトのオペコードを生成する前記複数のユニットのうちの第3のPLAユニットと
    を含み、
    前記マクロ命令デコードロジックは、前記第1のマクロ命令から生成されるオペコードのバイト長を判定するためのものであり
    前記クロック管理ユニットは、生成されるオペコードのバイト長について判定されたマクロ命令をデコードしない前記第1、第2及び第3のPLAユニットのうちいずれかに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせる、請求項11に記載のプロセッサ。
  13. 前記クロック管理ユニットは、分岐検出ロジックに基づいて前記第1のマクロ命令のクラスが分岐命令でないと判定されることに応じて、前記複数のユニットのうちの分岐アドレス計算ユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせる、請求項11に記載のプロセッサ。
  14. 前記第1のマクロ命令が1つ以上の変位バイトを含むか否かを判定し、前記第1のマクロ命令が変位バイトを有さないことに応じて、前記第1のマクロ命令の変位バイトフィールドをゼロにするためのフィールド検出ロジックを更に有する、請求項11に記載のプロセッサ。
  15. 前記第1のマクロ命令が即値オペランドを含むか否かを判定し、前記第1のマクロ命令が即値オペランドを有さないことに応じて、前記第1のマクロ命令の即値オペランドフィールドをゼロにするためのフィールド検出ロジックを更に有する、請求項11に記載のプロセッサ。
  16. 前記複数のユニットのうち第2の命令デコーダユニットを更に有し、
    前記マクロ命令デコードロジックは、前記複数のマクロ命令のうち第2のマクロ命令が有効でないか否かを判定するためのものであり、前記第1のマクロ命令は第1のクロックサイクルに前記第1の命令デコーダユニットに入り、前記第2のマクロ命令は前記第1のクロックサイクルに前記第2の命令デコーダユニットに入り、
    前記クロック管理ユニットは、前記第2のマクロ命令が有効でないと判定されたことに応じて、前記第2の命令デコーダユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせる、請求項11に記載のプロセッサ。
  17. 前記複数のマクロ命令のうち浮動小数点マクロ命令に対応する浮動小数点マイクロ演算を、前記浮動小数点マクロ命令が前記プリフェッチバッファから取得された時点から、前記浮動小数点マイクロ演算の解放の時点までトラッキングし、設定された場合に浮動小数点マイクロ演算が現在トラッキングされていないことを示す浮動小数点パイプラインクリアフラグを設定する浮動小数点マイクロ演算トラッカを更に有し、
    前記クロック管理ユニットは、前記浮動小数点パイプラインクリアフラグが設定されたことに応じて、前記複数のユニットのうち浮動小数点ユニットに入る前記発信クロック信号を少なくとも1つのクロックサイクルの間に定常状態のままにさせる、請求項11に記載のプロセッサ。
JP2013530380A 2010-09-24 2011-09-23 命令のクラス及び内容に基づくプロセッサの電力管理 Active JP5735112B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/890,574 2010-09-24
US12/890,574 US9710277B2 (en) 2010-09-24 2010-09-24 Processor power management based on class and content of instructions
PCT/US2011/053147 WO2012040662A2 (en) 2010-09-24 2011-09-23 Processor power management based on class and content of instructions

Publications (2)

Publication Number Publication Date
JP2013546036A JP2013546036A (ja) 2013-12-26
JP5735112B2 true JP5735112B2 (ja) 2015-06-17

Family

ID=45871869

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013530380A Active JP5735112B2 (ja) 2010-09-24 2011-09-23 命令のクラス及び内容に基づくプロセッサの電力管理

Country Status (9)

Country Link
US (1) US9710277B2 (ja)
JP (1) JP5735112B2 (ja)
KR (1) KR101496062B1 (ja)
CN (1) CN103154846B (ja)
BR (1) BR112013006962A2 (ja)
DE (1) DE112011103210T5 (ja)
GB (1) GB2497443B (ja)
TW (1) TWI567639B (ja)
WO (1) WO2012040662A2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079249A1 (en) * 2010-09-28 2012-03-29 Wei-Han Lien Training Decode Unit for Previously-Detected Instruction Type
CN104281413B (zh) * 2013-07-10 2017-10-20 群联电子股份有限公司 命令队列管理方法、存储器控制器及存储器储存装置
KR102270791B1 (ko) * 2014-12-10 2021-06-29 삼성전자주식회사 매크로 명령어를 처리하는 방법 및 장치
WO2017145341A1 (ja) * 2016-02-25 2017-08-31 富士通株式会社 端末装置、給電判定装置及び給電判定方法
CN105929928B (zh) * 2016-04-25 2018-11-27 天津大学 一种指令级并行处理器低功耗设计优化方法
US9977680B2 (en) * 2016-09-30 2018-05-22 International Business Machines Corporation Clock-gating for multicycle instructions
WO2019105332A1 (en) * 2017-11-28 2019-06-06 Bitmain Technologies Inc. Computational integrated circuit chip and corresponding circuit board
CN109086875A (zh) * 2018-08-16 2018-12-25 郑州云海信息技术有限公司 一种基于宏指令集的卷积网络加速方法及装置
CN112540796B (zh) * 2019-09-23 2024-05-07 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法
CN111124499B (zh) * 2019-11-22 2022-11-01 中国科学院计算技术研究所 一种兼容多指令系统的处理器及其运行方法
US11907712B2 (en) * 2020-09-25 2024-02-20 Intel Corporation Methods, systems, and apparatuses for out-of-order access to a shared microcode sequencer by a clustered decode pipeline
US20230185572A1 (en) * 2021-12-13 2023-06-15 Intel Corporation Instruction decode cluster offlining

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5374855A (en) 1976-12-15 1978-07-03 Fujitsu Ltd Data processor
JPS6145354A (ja) * 1984-08-10 1986-03-05 Nec Corp マイクロプロセツサ
JPH03167615A (ja) 1989-11-28 1991-07-19 Nec Corp マイクロプロセッサ
US5241637A (en) * 1990-01-05 1993-08-31 Motorola, Inc. Data processor microsequencer having multiple microaddress sources and next microaddress source selection
JP2834289B2 (ja) * 1990-07-20 1998-12-09 株式会社日立製作所 マイクロプロセッサ
JPH05143322A (ja) * 1991-11-15 1993-06-11 Sanyo Electric Co Ltd マイクロコンピユータ
US5392437A (en) * 1992-11-06 1995-02-21 Intel Corporation Method and apparatus for independently stopping and restarting functional units
US5623615A (en) * 1994-08-04 1997-04-22 International Business Machines Corporation Circuit and method for reducing prefetch cycles on microprocessors
US5666537A (en) * 1994-08-12 1997-09-09 Intel Corporation Power down scheme for idle processor components
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
US5726921A (en) * 1995-12-22 1998-03-10 Intel Corporation Floating point power conservation
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
AU3480897A (en) * 1996-06-10 1998-01-07 Lsi Logic Corporation An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set
US5941980A (en) * 1996-08-05 1999-08-24 Industrial Technology Research Institute Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system
US6385715B1 (en) * 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
JP2886838B2 (ja) * 1997-01-14 1999-04-26 財団法人工業技術研究院 スーパースカラパイプライン式データ処理装置の可変長命令の並列デコーディング装置及び方法
GB2323188B (en) 1997-03-14 2002-02-06 Nokia Mobile Phones Ltd Enabling and disabling clocking signals to elements
JP3961619B2 (ja) * 1997-06-03 2007-08-22 株式会社東芝 コンピュータシステムおよびその処理速度制御方法
US6275948B1 (en) 1997-11-14 2001-08-14 Agere Systems Guardian Corp. Processor powerdown operation using intermittent bursts of instruction clock
US6609193B1 (en) * 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder
US7516334B2 (en) 2001-03-22 2009-04-07 Sony Computer Entertainment Inc. Power management for processing modules
TW586666U (en) 2001-04-03 2004-05-01 Univ Nat Chiao Tung Microprocessor command reading structure
GB2375695B (en) * 2001-05-19 2004-08-25 At & T Lab Cambridge Ltd Improved power efficency in microprocessors
JP2003058365A (ja) * 2001-08-17 2003-02-28 Matsushita Electric Ind Co Ltd 命令デコード装置
JP4026753B2 (ja) * 2002-07-25 2007-12-26 株式会社日立製作所 半導体集積回路
US7194601B2 (en) * 2003-04-03 2007-03-20 Via-Cyrix, Inc Low-power decode circuitry and method for a processor having multiple decoders
US20040255103A1 (en) 2003-06-11 2004-12-16 Via-Cyrix, Inc. Method and system for terminating unnecessary processing of a conditional instruction in a processor
US7197655B2 (en) * 2003-06-26 2007-03-27 International Business Machines Corporation Lowered PU power usage method and apparatus
US7917734B2 (en) * 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
US7246219B2 (en) * 2003-12-23 2007-07-17 Intel Corporation Methods and apparatus to control functional blocks within a processor
WO2006000979A2 (en) 2004-06-25 2006-01-05 Koninklijke Philips Electronics N.V. Instruction processing circuit
US7263621B2 (en) * 2004-11-15 2007-08-28 Via Technologies, Inc. System for reducing power consumption in a microprocessor having multiple instruction decoders that are coupled to selectors receiving their own output as feedback
TWI286705B (en) 2005-09-06 2007-09-11 Via Tech Inc Power management method of central processing unit
JP5496602B2 (ja) * 2009-10-30 2014-05-21 ルネサスエレクトロニクス株式会社 データプロセッサ
US8850166B2 (en) * 2010-02-18 2014-09-30 International Business Machines Corporation Load pair disjoint facility and instruction therefore

Also Published As

Publication number Publication date
GB2497443A (en) 2013-06-12
CN103154846A (zh) 2013-06-12
GB2497443B (en) 2019-06-12
TW201218074A (en) 2012-05-01
US9710277B2 (en) 2017-07-18
TWI567639B (zh) 2017-01-21
KR101496062B1 (ko) 2015-02-25
KR20130054375A (ko) 2013-05-24
US20120079242A1 (en) 2012-03-29
JP2013546036A (ja) 2013-12-26
GB201302383D0 (en) 2013-03-27
WO2012040662A2 (en) 2012-03-29
DE112011103210T5 (de) 2013-07-04
BR112013006962A2 (pt) 2016-07-26
CN103154846B (zh) 2015-11-25
WO2012040662A3 (en) 2012-05-18

Similar Documents

Publication Publication Date Title
JP5735112B2 (ja) 命令のクラス及び内容に基づくプロセッサの電力管理
US10534424B2 (en) Dynamic core selection for heterogeneous multi-core systems
TWI742032B (zh) 用於使用者等級執行緒暫止的方法、設備及指令
US11243768B2 (en) Mechanism for saving and retrieving micro-architecture context
EP2588958B1 (en) Apparatus, method, and system for improving power performance efficiency by coupling a first core type with a second core type
US9026705B2 (en) Interrupt processing unit for preventing interrupt loss
Webb IBM z10: The next-generation mainframe microprocessor
TWI514275B (zh) 用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法
CN108885586B (zh) 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令
US10127039B2 (en) Extension of CPU context-state management for micro-architecture state
TW202219748A (zh) 處理器及其處理器架構
US20180365022A1 (en) Dynamic offlining and onlining of processor cores
US20180285105A1 (en) Efficient range-based memory writeback to improve host to device commmunication for optimal power and performance
WO2017172220A1 (en) Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga
Dixon et al. THE NEXT-GENERATION INTEL CORE MICROARCHITECTURE.
WO2019133172A1 (en) Processor, method, and system for reducing latency in accessing remote registers
EP0901063A2 (en) Power management methods
US20140189319A1 (en) Opportunistic Utilization of Redundant ALU
Shum et al. Design and microarchitecture of the IBM System z10 microprocessor
JP2003208306A (ja) プロセシングアーキテクチャ、該アーキテクチャ実現システム及び該システムのオペレーション方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140806

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140826

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20141120

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20141128

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20141222

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150317

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150415

R150 Certificate of patent or registration of utility model

Ref document number: 5735112

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250