JP2013541758A - 命令フェッチユニットの電力を落とすことによりプロセッサ内の電力消費を低下させる方法および装置 - Google Patents

命令フェッチユニットの電力を落とすことによりプロセッサ内の電力消費を低下させる方法および装置 Download PDF

Info

Publication number
JP2013541758A
JP2013541758A JP2013528400A JP2013528400A JP2013541758A JP 2013541758 A JP2013541758 A JP 2013541758A JP 2013528400 A JP2013528400 A JP 2013528400A JP 2013528400 A JP2013528400 A JP 2013528400A JP 2013541758 A JP2013541758 A JP 2013541758A
Authority
JP
Japan
Prior art keywords
instruction
branch
fetch unit
prefetch buffer
loop
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.)
Pending
Application number
JP2013528400A
Other languages
English (en)
Inventor
マデューリ、ヴェンカテスワラ、アール.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2013541758A publication Critical patent/JP2013541758A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/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
    • 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
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Abstract

【解決手段】命令フェッチユニットの電力を落とすことによりプロセッサの電力消費を低下させる装置および方法が記載される。たとえば、方法の一実施形態は、アドレッシング情報が対応付けられた分岐を検出する段階、アドレッシング情報を命令プリフェッチバッファ内のエントリと比較し、プリフェッチバッファに実行可能な命令ループが存在するかを判定する段階と、比較の結果、命令ループが検出されると、命令フェッチユニットおよび/または命令フェッチユニットのコンポーネントの電力を落とす段階と、クリア条件が検出されるまで、プリフェッチバッファから直接的に命令をストリーミングする段階を備える。
【選択図】図1

Description

本発明は、全体的に、コンピュータプロセッサの分野に関する。本発明は、特に、バッファ内の命令ループおよびその他の命令グループを検出し、それに応答してフェッチユニットの電力を落とす装置および方法に関する。
最近の多くのマイクロプロセッサは、高速演算を促進する大型の命令パイプラインを有する。「フェッチ」されたプログラム命令は、パイプラインに入り、パイプラインの中間段階におけるデコード、実行等の演算が施され、パイプラインの終わりで「リタイヤ」される。パイプラインが有効な命令をクロックサイクルごとに受け取る場合、パイプラインは完全稼働し、性能は良好である。有効な命令をクロックサイクルごとに受け取らない場合、パイプラインは完全稼働せず、性能は落ちる。たとえば、性能トラブルは、プログラムコードにおける分岐命令により発生しうる。プログラムにおいて分岐命令に行き当たり、対象のアドレスに処理が分岐されると、命令パイプラインの一部をフラッシュしなければならないかもしれず、性能が損なわれる。
パイプラインの効率性に対する分岐命令の影響を低下させるべく、分岐対象バッファ(BTB)が開発されている。BTBに関する議論は、David A.PattersonおよびJohn L.Hennessy著「コンピュータアーキテクチャ定量的アプローチ」271−275頁(第2版、1990年)に見つけることができる。図1は、典型的なBTBアプリケーションを示しており、命令ポインタ(IP)118に接続されたBTB 110と、プロセッサパイプライン120とを示している。図1には、キャッシュ130およびフェッチバッファ132も含まれる。次にフェッチすべき命令の位置が、IP 118により特定される。プログラムの実行が順次に進むにつれ、IP 118はサイクルごとにインクリメントされる。IP 118の出力によって、キャッシュ130のポート134が駆動され、次の命令をフェッチするアドレスが特定される。キャッシュ130は、命令をフェッチバッファ132に供給し、フェッチバッファは、命令をプロセッサパイプライン120に供給する。
パイプライン120により受け取られると、命令はフェッチ段階122、デコード段階124、中間段階126(たとえば、命令実行段階)、およびリタイヤ段階128と示される数段階を進む。分岐命令によって分岐が実行されるかに関する情報は、リタイヤ段階128等のパイプラインの遅い段階になるまで得られない場合がある。BTB 110がなく、分岐が実行される場合、フェッチバッファ132と、分岐命令より後の命令パイプライン120の部分とによって、間違った実行経路に行かないよう命令が保持される。プロセッサパイプライン120およびフェッチバッファ132における無効な命令はフラッシュされ、IP 118には分岐対象アドレスが書き込まれる。性能損失は、部分的には、フェッチバッファ132および命令パイプライン120が分岐対象アドレスから始まる命令で埋まっている間、プロセッサが待機状態に置かれることにより発生する。
分岐対象バッファ(BTB)によって、実行される分岐による影響が低下する。BTB 110は、分岐アドレス(BA)フィールド112および対象アドレス(TA)フィールド114をそれぞれが有する複数のレコード111を含む。TAフィールド114には、対応するBAフィールド112に特定されたアドレスに存在する分岐命令からの分岐対象アドレスが保持される。プロセッサパイプライン120が分岐命令に遭遇すると、レコード111のBAフィールド112が検索され、分岐命令のアドレスに一致するレコードが検索される。見つかった場合、IP 118は、見つかったBAフィールド112に対応するTAフィールド114の値に変更される。その結果、以降の命令は、分岐対象アドレス以降からフェッチされる。
プロセッサパイプラインにおける電力節約は、特に、電池を電源とするラップトップおよびその他のモバイル装置にとっては重要である。したがって、フェッチバッファに繰り返し命令群(たとえば、入れ子状ループ)が存在する場合、命令フェッチ回路、命令キャッシュ等のプロセッサパイプラインの特定の部分の電力を落とすことは、利益に適っている。したがって、フェッチ回路もしくはその一部の電力を落としてよい条件を検出する新しい技術が有用である。
本発明のより良い理解は、以下の図面に関連付けられた以下の詳細な記載から得られるだろう。
分岐対象プリフェッチを実行する分岐対象バッファを採用した従来のプロセッサパイプラインを示す。 プリフェッチバッファから命令をストリーミングし、応答してプロセッサパイプラインのいくつかの部分の電力を落とすループストリーム検出器を含むプロセッサアーキテクチャの一実施形態である。 繰り返し命令分を検出し、それに応答してプロセッサパイプラインのくつかの部分の電力を落とす方法の一実施形態を示す。 ループストリーム検出器が稼働される一実施形態を示すパイプライン図である。 ループストリーム検出器を稼働させるのに使用されるプリフェッチバッファの一実施形態で用いられるフィールドを示す。 ループストリーム検出器を稼働させるのに使用されるプリフェッチバッファの別の実施形態で用いられるフィールドを示す。 入れ子状命令シーケンスを含む模範的なプログラムコードを示す。
以下の記載では、説明の目的において、数多くの特定的な詳細を明記して、以下に記載される本発明の実施形態の完全な理解を促す。しかし、本発明の実施形態は、これらの特定的な詳細がなくても実施しうることは、当業者には明らかであろう。他の例では、本発明の実施形態の基礎にある原理が曖昧にならないように、周知の構造および装置は、ブロック図形式で示す。
本発明の一実施形態は、CPUコアが入れ子状ループおよび/または入れ子状分岐等の繰り返し命令群を実行しているとき、CPUコアの動的電力を減らす。たとえば、分岐予測器により予測される命令群がプリフェッチバッファから検出されると、本発明の一実施形態は、フェッチユニットおよび関連する命令フェッチ回路(もしくはその一部)の電力を落として電力を節約する。その後、命令は、さらなる命令が必要になるまでは、プリフェッチバッファから直接的にストリーミングされ、さらなる命令が必要になったとき、命令フェッチユニットの電力が投入される。本発明の実施形態は、シングルスレッドおよびマルチスレッドの両方の環境で動作しうる。一実施形態においては、シングルスレッド環境では、プリフェッチバッファのエントリの全てが、シングルスレッドに割り当てられ、マルチスレッド環境では、プリフェッチバッファのエントリは、複数のスレッド間で均等に分割される。
一つの特定的な実施形態は、プリフェッチバッファを有し、繰り返し命令群を検出するループストリーム検出器(LSD)を備える。ループストリーム検出器プリフェッチバッファは、マルチスレッドモードでは、エントリ6個分の深さ(スレッド−0に3個、スレッド−1に3個)を持ち、シングルスレッドモードでは、エントリ3個分の深さを持ってよい。または、シングルスレッドモードで、6個のエントリの全てをシングルスレッドに用いてもよい。一実施形態では、シングルスレッドモードにおいて、プリフェッチバッファにおけるエントリの数は、3または6に設定することができる。
一実施形態では、ループストリーム検出器プリフェッチバッファは、プリフェッチバッファに書き込まれる分岐対象バッファ(BTB)予測分岐ごとに、カレントリニアインストラクションポインタ(CLIP)、オフセット、およびプリフェッチバッファの分岐対象アドレス読み出しポインタ等の分岐情報を記憶する。BTBが分岐を予測すると、その分岐のCLIPおよびオフセットがプリフェッチバッファのエントリと比較され、この分岐がすでにプリフェッチバッファに存在するかが判定される。一致するものが存在する場合、フェッチユニット、または、その一部、たとえば、命令キャッシュが停止され、クリア条件(たとえば、誤予測された分岐)に遭遇するまでは、プリフェッチバッファから命令がストリーミングされる。プリフェッチバッファの命令ループ内にBTB予測分岐が存在する場合、これらもプリフェッチバッファからストリーミングされる。一実施形態では、ループストリーム検出器は、直接分岐および条件付分岐に対して起動され、挿入フローおよび戻り/呼び出し命令に対しては起動されない。
入れ子状ループ、分岐、およびその他の繰り返し命令群がプリフェッチバッファから検出されたことに応じてフェッチユニット(および/またはその他の回路)の電力を落とすプロセッサアーキテクチャの一実施形態を図2に示す。図示されるように、この実施形態は、本明細書に記載される多様な機能を実行するループストリーム検出器ユニット200を備える。特に、ループストリーム検出器200は、分岐対象バッファ(BTB)により予測された分岐をプリフェッチバッファ201内のエントリと比較する比較回路202を有する。上記したように、本発明の一実施形態では、ループストリーム検出器200は、プリフェッチバッファ内から一致するものが検出されると、それに応答して、命令フェッチユニット210(もしくはその一部)の電力を落とす(図2にオン/オフ線で示す)。
ループストリーム検出器からの信号に応答して、分岐予測ユニット211、次命令ポインタ212、命令変換ルックアサイドバッファ(ITLB)、命令キャッシュ214、および/またはプリデコードキャッシュ215等の命令フェッチユニット210の多様な周知のコンポーネントの電力を落としてよく、これにより、プリフェッチバッファ内に繰り返し命令群が検出された場合の電力量が大幅に節約される。以降は、命令はプリフェッチバッファから直接的に、命令パイプラインの残りの段階、たとえば限定としてではなく例示として挙げると、デコード段階220、実行段階230等にストリーミングされる。
図3は、命令バッファ内から命令群(たとえば、入れ子状ループ)が検出されたことに応答して、フェッチユニット(もしくはその一部)の電力を落とす方法の一実施形態を示す。本方法は、図2に示すプロセッサアーキテクチャ、または、別のプロセッサアーキテクチャを用いて実施してよい。
301で、分岐命令が予測され、分岐命令のカレントリニアインストラクションポインタ(CLIP)、分岐オフセット、および/または分岐対象アドレスが判別される。302で、CLIP、分岐オフセット、および/または分岐対象アドレスが、プリフェッチバッファ内のエントリと比較される。一実施形態では、比較は、入れ子状ループがプリフェッチバッファ内に記憶されているかを判定することを目的とする。一致するものが見つかったと303で判定されると、304で、命令フェッチユニット(および/またはその各コンポーネント)が停止され、305で、命令がプリフェッチバッファから直接的にストリーミングされる。命令は、306でクリア条件(たとえば、誤予測された分岐)が発生するまで、プリフェッチバッファからストリーミングし続けられる。
図4は、本発明の一実施形態に係るループストリーム検出器が稼働される様子を示す。具体的には、図4では、命令パイプラインのIF2_L段階で予測器により分岐が予測され(BTクリア)、次命令ポインタ(IP)多重化段階が、バブルにより予測された分岐対象アドレスにリダイレクトされる。段階ID1で、CLIP、分岐オフセット、および対象読み出しポインタ(分岐対象を指定するポインタ)がプリフェッチバッファに記録される。CLIP、分岐オフセット、および/または対象読み出しポインタの一致が検出されたことに応答して、ループストリーム検出器が稼働され、一実施形態では、フェッチユニットがディセーブルされる。これは図4の下部に示されており、CLIPの比較および分岐オフセットの比較が行われ、ループストリーム検出器ロックが設定され、(それによりフェッチユニットおよび/またはその一部の電力が落とされる)ことが示されている。
図5は、ループストリーム検出器を稼働するのに使用される複数のフィールドを有するループスストリーム検出器プリフェッチバッファの一実施形態の構成を示し、図7は、図5に示す例のループストリーム検出器について用いられる模範的な命令シーケンスを示す。便宜を図るべく、模範的な命令シーケンスを以下にも示す。LSDプリフェッチバッファ内で使用されるフィールドとしては、プリフェッチバッファエントリナンバー501(この特定的な例では、0から5までの6個のPFBエントリが存在する)、カレントリニアインストラクションポインタ(CLIP)502、分岐オフセットフィールド503、対象読み出しポインタフィールド504、およびエントリ有効フィールド505がある。
図に示されるように、カレントリニアインストラクションポインタ(CLIP)が0x120hのところで分岐を有するループがフェッチユニットにより展開されてプリフェッチユニットに書き込まれるとき、書き込まれるCLIPおよび分岐オフセットは各PFBエントリの有効CLIPフィールドおよび分岐オフセットフィールドと比較される。比較に応じて、図に示すように、有効ビットがPFBエントリ3に設定される。さらに、PFBエントリ3にはリダイレクトPFB読み出しポインタが記録され、PFBからの命令のストリーミングがイネーブルされる。一実施形態では、以下の動作が実行される。
(1)分岐が予測される。
(2)CLIPおよびオフセットがPFBの既存のエントリと比較される。
(3)PFBのLSD構造のエントリのうち1つ(図の例では、エントリ0)と一致すると、エントリ0のPFB対象読み出しPtrフィールドがLSD構造のエントリ3に複写され、PFBエントリの書き込みのときにエントリ有効ビットが設定される。一実施形態では、PFBエントリは、16バイトのキャッシュラインデータと、マクロ命令の終わりを示す1バイトあたり1個のプリデコードビットとを含む。
(4)PFB読み出しポインタがエントリ3に到達すると、PFB対象読み出しポインタおよび有効ビットを含むエントリ3の情報の全てを読み出すべく、PFB読み出しポインタが用いられる。
(5)有効ビットに基づいて、順番では次にあるPFBエントリ4を読み出すかわりに、対象読み出しポインタを用いるエントリ1にリダイレクトされる。
(6)PFBエントリが、エントリ1、エントリ2、エントリ3の順に読み出される。
(7)エントリ3で、PFB有効ビットが読み出され、PFBは対象読み出しポインタを用いて次のPFBエントリを読み出す。
(8)段階6および7が繰り返される。
Figure 2013541758
一実施形態では、各PFBエントリが、PFBからストリーミングされる命令を含む完全な16バイトキャッシュラインを含む。キャッシュラインローデータ(raw data)とともに、プリデコードビットと、分岐命令の最終バイトを示すBTBマーカとが、PFBにさらに記憶される。プリデコードビットは、プリデコードキャッシュ215に記憶される。プリデコードキャッシュには、1バイト当たり1ビットのキャッシュラインが存在する。このビットは、マクロ命令の終わりを示す。BTBマーカも1バイト当たり1ビットで分岐命令の最終バイトを示す。PFBエントリに書き込まれる16バイトキャッシュラインには、最大16個までの命令が含まれうる。BTB予測分岐命令については、分岐対象の命令を含むキャッシュラインは、常に、PFBにおいて順番が次のエントリに書き込まれる。一実施形態では、4:1マルチプレクサ(4:1MUX)が設けられ、その出力がPFBエントリの読み出しに用いられる。MUXへの入力は、(1)通常、PFBエントリから命令をストリーミングし、エントリからすべての命令をストリーミングしたとき、値が進むPFB読み出しポインタ、(2)分岐命令がPFBエントリからストリーミングされるときの分岐対象PFB読み出しポインタ、(3)誤予測分岐等のクリア条件後のPFB読み出しポインタ(常に、第1PFBエントリをポイントする)、および(4)LSDの稼働によるPFB対象読み出しポインタ、である。
図6は、PFB LSDの別の実施形態を示すが、LSDフィールドのエントリの数は、PFBエントリの数より小さく、電力/面積が削減される。具体的には、この例では、LSDフィールドには4個のエントリ(LSDエントリナンバー0から3)があり、PFBフィールドには6個のエントリ(ナンバー0から5)がある。各PFBエントリにおけるヘッドポインタ値は、フェッチユニットの予測器により予測された分岐命令に対応付けられたLSDエントリをポイントするべく用いられる。たとえば、ヘッドポインタ0001は、LSDエントリナンバー0をポイントし、ヘッドポインタ0010は、LSDエントリナンバー1をポイントし、ヘッドポインタ0100はLSDエントリナンバー2をポイントし、ヘッドポインタ1000は、LSDエントリナンバー3をポイントする。ヘッドポインタ値0000は、PFBエントリが、LSDエントリをポイントするBTB予測分岐を有さないことを示す。したがって、(1)一致するCLIPおよび分岐オフセットが検出された場合、および、(2)一致するLSDエントリに、PFBエントリのいずれかから自身をポイントする対応する有効ヘッドポインタがある場合、プリフェッチバッファで一致が検出される。一実施形態では、PFBエントリのヘッドポインタのビット[0]は、論理和演算され、一致すると認識される。(3)一実施形態では、PFBのLSD構造のエントリのうち1つと一致する場合、一致するエントリのPFB対象読み出しPtrフィールドが、PFBのうちBTB予測を含む対応キャッシュラインが書き込まれているエントリに複写される。さらに、BTB予測分岐命令を有する現在書き込まれているPFBエントリに、LSD有効ビットが設定される。(4)PFB読み出しポインタがLSD有効ビットが設定されたエントリに到達すると、PFB読み出しポインタを用いて、PFB対象読み出しポインタおよびLSD有効ビットを含む全ての情報がエントリから読み出される。(5)LSD有効ビットに基づいて、順番では次にあるPFBエントリを読み出すかわりに、対象読み出しポインタを用いるエントリにリダイレクトされる。(6)次に、PFB有効ビットを含むエントリが読み出されるまで、PFBエントリが順番に読み出され、PFBは対象読み出しポインタを用いて次のPFBエントリを読み出す。(7)上記の動作5および6が繰り返される。
本発明の一実施形態では、本発明の実施形態が実施されるプロセッサは、インテル(登録商標)コーポレーションにより設計されたAtom(登録商標)プロセッサ等の低電力プロセッサを含む。しかし、本発明の根底にある原理は、なんらかの特定的なプロセッサアーキテクチャに限定されない。たとえば、本発明の根底にある原理は、インテル社により設計されたコアi3、i5、および/またはi7プロセッサ等の多様なプロセッサアーキテクチャ上、または、スマートホン、および/またはその他の携帯型コンピュータ装置に用いられる多様な低電力システム・オン・チップ(SoC)アーキテクチャ上で実施してよい。
図8は本発明の実施形態を実施してよい模範的なコンピュータシステム800を示す。コンピュータシステム800は、情報を伝達するシステムバス820、およびバス820に接続され、情報を処理するプロセッサ810を備える。コンピュータシステム800は、バス820に接続され、情報およびプロセッサ810により実行される命令を記憶するランダムアクセスメモリ(RAM)もしくはその他の動的記憶装置825(本明細書では、メインメモリと呼ぶ)をさらに備える。メインメモリ825は、プロセッサ810により命令が実行されている間、一時的な変数もしくはその他の中間的な情報を記憶するのにも用いられうる。コンピュータシステム800は、バス820に接続され、プロセッサ810により使用される静的情報および命令を記憶する読み出し専用メモリ(ROM)および/またはその他の静的記憶装置826をさらに備えてよい。
磁気ディスクもしくは光ディスク等のデータストレージ装置827およびそれに対応するドライブも、情報および命令を記憶するべくコンピュータシステム800に接続してよい。コンピュータシステム800は、I/Oインターフェース830を介して第2I/Oバス850に接続することもできる。ディスプレイ装置843、入力装置(たとえば、英数字入力装置842および/またはカーソル制御装置841)等の複数のI/O装置をI/Oバス850に接続してよい。
通信装置840は、ネットワークを介してその他のコンピュータ(サーバまたはクライアント)にアクセスし、多様な種類のデータをアップロード/ダウンロードするべく用いられる。通信装置840は、モデム、ネットワークインターフェースカード、または、イーサネット(登録商標)、トークンリング、もしくはその他の種類のネットワークに接続するために用いられるもの等のその他の周知のインターフェース装置等であってよい。
図9は、本発明のいくつかの実施形態で用いられうる別の模範的なデータ処理システムを示すブロック図である。たとえば、データ処理システム900は、ハンドヘルドコンピュータ、携帯情報端末(PDA)、移動体電話、携帯ゲームシステム、携帯メディアプレーヤ、ならびに、移動体電話、メディアプレーヤ、および/もしくは、ゲームシステムであってよいタブレットもしくはハンドヘルドコンピューティング装置等であってよい。別の例では、データ処理システム900は、ネットワークコンピュータ、または、別の装置に組み込まれた処理装置であってよい。
本発明の実施形態によると、データ処理システム900の模範的アーキテクチャを、上記の移動体装置に用いてよい。データ処理システム900は、集積回路上に1つ以上のマイクロプロセッサおよび/またはシステムを有してよい処理システム920を備える。処理システム920は、メモリ910、電源925(1つ以上の電池を含む)、オーディオ入出力940、ディスプレイコントローラおよびディスプレイ装置960、任意の入出力950、入力装置970、ならびに無線送受信機930に接続される。図9には示されないさらなるコンポーネントを、本発明の所定の実施形態においてデータ処理システム900の一部としてよく、本発明の所定の実施形態では、図9に示すよりも少ないコンポーネントを含めてよい。さらに、図9に示されない1つ以上のバスを用いて、当技術分野で周知の通りに、多様なコンポーネントを相互接続してよい。
メモリ910は、データおよび/またはデータ処理システム900により実行されるプログラムを記憶してよい。オーディオ入出力940は、マイクおよび/またはスピーカを含んでよく、それにより、スピーカおよびマイクを介して、たとえば、音楽の再生、および/または、電話機能の提供を行ってよい。ディスプレイコントローラおよびディスプレイ装置960は、グラフィカルユーザインターフェース(GUI)を含んでよい。無線(たとえば、RF)送受信機930(たとえば、ワイファイ送受信機、赤外線送受信機、ブルートゥース(登録商標)送受信機、無線形態電話送受信機等)は、その他のデータ処理システムと通信するべく用いてよい。1つ以上の入力装置970は、ユーザがシステムに入力を行えるようにする。これらの入力装置は、キーパッド、キーボード、タッチパネル、マルチタッチパネル等であってよい。任意のその他の入出力950は、ドックのコネクタであってよい。
本発明のその他の実施形態は、携帯電話、ページャ(たとえば、ソフトウェアがマイクロチップに埋め込まれている)、ハンドヘルドコンピューティング装置(たとえば、携帯情報端末、スマートホン)、および/または、プッシュホン式電話上で実施してよい。しかし、本発明の根底にある原理は、なんらかの特定の種類の通信装置もしくは通信媒体に限定されないことは理解されるべきである。
本発明の実施形態は、上記した多様な段階を含みうる。段階は、汎用もしくは専用のプロセッサに実行されるべく用いられてよい機械可読命令として実施してよい。または、これらの段階は、段階を実行するためのハードワイヤードロジックを含む特定のハードウェアコンポーネントにより、または、プログラムされたコンピュータコンポーネントおよびカスタマイズしたハードウェアコンポーネントの任意の組み合わせにより、実行してよい。
本発明の要素は、処理を実行するようコンピュータ(もしくはその他の電子装置)をプログラムするべく用いてよい命令を記憶した機械可読媒体であってよいコンピュータプログラムプロダクトとして提供してよい。機械可読媒体は、フロッピー(登録商標)ディスケット、光ディスク、CD−ROM、光磁気ディスク、ROM,RAM、EPROM、EEPROM、磁気もしくは光カード、伝搬媒体、もしくは、電子的命令を記憶するのに適したその他の種類の媒体/機械可読媒体であってよいが、これらに限定されない。たとえば、本発明は、コンピュータプログラムプロダクトとしてダウンロードしてよく、プログラムは、遠隔コンピュータ(たとえば、サーバ)から要求元コンピュータ(たとえば、クライアント)に、通信リンク(たとえば、モデムもしくはネットワーク接続)を介して、搬送波もしくはその他の伝搬媒体に重畳されたデータ信号として転送される。
詳細な記載の全体を通して、説明の目的において、数多くの特定的な詳細を明記して、本発明を完全に理解できるようにした。しかし、これらの特定的な詳細のいくつかが無くても、本発明を実施しうることは当業者には明らかであろう。所定の例では、本発明の主題が曖昧にならないように、周知の構造および機能については、詳細に記載しなかった。したがって、本発明の範囲および趣旨は、以下の特許請求の範囲によって判断されるべきである。

Claims (21)

  1. 命令フェッチユニットおよびプリフェッチバッファを有するプロセッサ上での電力消費を低下させる方法であって、
    アドレッシング情報が対応付けられた分岐を検出する段階と、
    前記アドレッシング情報を命令プリフェッチバッファ内のエントリと比較して、前記命令プリフェッチバッファ内に実行可能な命令ループが存在するかを判定する段階と、
    前記比較の結果、命令ループが検出されると、命令フェッチユニットおよび/または前記命令フェッチユニットのコンポーネントの電力を落とす段階と、
    クリア条件が検出されるまで、前記命令プリフェッチバッファから直接的に命令をストリーミングする段階と
    を備える方法。
  2. 前記アドレッシング情報は、カレントリニアインストラクションポインタ(CLIP)、分岐オフセット、および/または分岐対象アドレスを含む請求項1に記載の方法。
  3. 前記クリア条件は、誤予測された分岐を含む請求項1または2に記載の方法。
  4. 前記命令ループは、入れ子状命令ループを含む請求項1から3のいずれか1項に記載の方法。
  5. 前記命令フェッチユニットの電力を落とす段階は、命令キャッシュおよび/または命令デコードキャッシュの電力を落とす段階を有する請求項1から4のいずれか1項に記載の方法。
  6. 前記命令フェッチユニットの電力を落とす段階は、分岐予測ユニット、次命令ポインタ、および/または命令変換ルックアサイドバッファ(ITLB)の電力を落とす段階を有する請求項1から5のいずれか1項に記載の方法。
  7. 命令をストリーミングする段階は、前記命令プリフェッチバッファから命令を読み出し、前記命令をプロセッサパイプラインのデコード段階に供給する段階を有する請求項1から6のいずれか1項に記載の方法。
  8. プロセッサ上での電力消費を低下させる装置であって、
    アドレッシング情報が対応付けられた分岐を予測する命令フェッチユニットと、
    前記アドレッシング情報を命令プリフェッチバッファ内のエントリと比較して、前記命令プリフェッチバッファに実行可能な命令ループが存在するかを判定するループストリーム検出器ユニットと
    を備え、
    前記比較の結果、命令ループが検出されると、前記命令フェッチユニットおよび/または前記命令フェッチユニットのコンポーネントの電力を落とし、
    クリア条件が検出されるまで、前記命令プリフェッチバッファから直接的に命令をストリーミングする
    装置。
  9. 前記アドレッシング情報は、カレントリニアインストラクションポインタ(CLIP)、分岐オフセット、および/または分岐対象アドレスを含む請求項8に記載の装置。
  10. 前記クリア条件は、誤予測された分岐を含む請求項8または9に記載の装置。
  11. 前記命令ループは、入れ子状命令ループを含む請求項8から10のいずれか1項に記載の装置。
  12. 前記命令フェッチユニットの電力を落とすとき、命令キャッシュおよび/または命令デコードキャッシュの電力を落とす請求項8から11のいずれか1項に記載の装置。
  13. 前記命令フェッチユニットの電力を落とすとき、分岐予測ユニット、次命令ポインタ、および/または命令変換ルックアサイドバッファ(ITLB)の電力を落とす請求項8から12のいずれか1項に記載の装置。
  14. 命令をストリーミングするとき、前記命令プリフェッチバッファから命令を読み出し、前記命令をプロセッサパイプラインのデコード段階に供給する請求項8から13のいずれか1項に記載の装置。
  15. ディスプレイ装置と、
    命令を記憶するメモリと、
    前記命令を処理するプロセッサと
    を備え、
    前記プロセッサが、
    アドレッシング情報が対応付けられた分岐を予測する命令フェッチユニットと、
    前記アドレッシング情報を命令プリフェッチバッファ内のエントリと比較して、前記命令プリフェッチバッファに実行可能な命令ループが存在するかを判定するループストリーム検出器ユニットと
    を有し、
    前記比較の結果、命令ループが検出されると、前記命令フェッチユニットおよび/または前記命令フェッチユニットのコンポーネントの電力を落とし、
    クリア条件が検出されるまで、前記命令プリフェッチバッファから直接的に命令をストリーミングする
    コンピュータシステム。
  16. 前記アドレッシング情報は、カレントリニアインストラクションポインタ(CLIP)、分岐オフセット、および/または分岐対象アドレスを含む請求項15に記載のコンピュータシステム。
  17. 前記クリア条件は、誤予測された分岐を含む請求項15または16に記載のコンピュータシステム。
  18. 前記命令ループは、入れ子状命令ループを含む請求項15から17のいずれか1項に記載のコンピュータシステム。
  19. 前記命令フェッチユニットの電力を落とすとき、命令キャッシュおよび/または命令デコードキャッシュの電力を落とす請求項15から18のいずれか1項に記載のコンピュータシステム。
  20. 前記命令フェッチユニットの電力を落とすとき、分岐予測ユニット、次命令ポインタ、よび/または命令変換ルックアサイドバッファ(ITLB)の電力を落とす請求項15から19のいずれか1項に記載のコンピュータシステム。
  21. 命令をストリーミングするとき、前記命令プリフェッチバッファから命令を読み出し、前記命令をプロセッサパイプラインのデコード段階に供給する請求項15から20のいずれか1項に記載のコンピュータシステム。
JP2013528400A 2010-09-24 2011-09-23 命令フェッチユニットの電力を落とすことによりプロセッサ内の電力消費を低下させる方法および装置 Pending JP2013541758A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/890,561 US20120079303A1 (en) 2010-09-24 2010-09-24 Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit
US12/890,561 2010-09-24
PCT/US2011/053152 WO2012040664A2 (en) 2010-09-24 2011-09-23 Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit

Publications (1)

Publication Number Publication Date
JP2013541758A true JP2013541758A (ja) 2013-11-14

Family

ID=45871908

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013528400A Pending JP2013541758A (ja) 2010-09-24 2011-09-23 命令フェッチユニットの電力を落とすことによりプロセッサ内の電力消費を低下させる方法および装置

Country Status (8)

Country Link
US (1) US20120079303A1 (ja)
JP (1) JP2013541758A (ja)
KR (1) KR20130051999A (ja)
CN (1) CN103119537B (ja)
DE (1) DE112011103212B4 (ja)
GB (1) GB2497470A (ja)
TW (1) TWI574205B (ja)
WO (1) WO2012040664A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020107306A (ja) * 2018-12-27 2020-07-09 グラフコアー リミテッドGraphcore Limited マルチスレッドプロセッサの命令キャッシュ

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9396117B2 (en) 2012-01-09 2016-07-19 Nvidia Corporation Instruction cache power reduction
US9176571B2 (en) * 2012-03-02 2015-11-03 Semiconductor Energy Laboratories Co., Ltd. Microprocessor and method for driving microprocessor
US9552032B2 (en) 2012-04-27 2017-01-24 Nvidia Corporation Branch prediction power reduction
US9547358B2 (en) * 2012-04-27 2017-01-17 Nvidia Corporation Branch prediction power reduction
US9557999B2 (en) * 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US9753733B2 (en) 2012-06-15 2017-09-05 Apple Inc. Methods, apparatus, and processors for packing multiple iterations of loop in a loop buffer
US9710276B2 (en) * 2012-11-09 2017-07-18 Advanced Micro Devices, Inc. Execution of instruction loops using an instruction buffer
US9645934B2 (en) * 2013-09-13 2017-05-09 Samsung Electronics Co., Ltd. System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer
US9569220B2 (en) * 2013-10-06 2017-02-14 Synopsys, Inc. Processor branch cache with secondary branches
US9632791B2 (en) * 2014-01-21 2017-04-25 Apple Inc. Cache for patterns of instructions with multiple forward control transfers
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
US20150254078A1 (en) * 2014-03-07 2015-09-10 Analog Devices, Inc. Pre-fetch unit for microprocessors using wide, slow memory
US9524011B2 (en) 2014-04-11 2016-12-20 Apple Inc. Instruction loop buffer with tiered power savings
CN104391563B (zh) * 2014-10-23 2017-05-31 中国科学院声学研究所 一种寄存器堆的循环缓冲电路及其方法,处理器装置
US10203959B1 (en) * 2016-01-12 2019-02-12 Apple Inc. Subroutine power optimiztion
US10223123B1 (en) * 2016-04-20 2019-03-05 Apple Inc. Methods for partially saving a branch predictor state
CN111723920A (zh) * 2019-03-22 2020-09-29 中科寒武纪科技股份有限公司 人工智能计算装置及相关产品
WO2020192587A1 (zh) * 2019-03-22 2020-10-01 中科寒武纪科技股份有限公司 人工智能计算装置及相关产品
US20210200550A1 (en) * 2019-12-28 2021-07-01 Intel Corporation Loop exit predictor

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05241827A (ja) * 1992-02-27 1993-09-21 Nec Ibaraki Ltd 命令バッファ制御装置
JPH0773034A (ja) * 1993-09-07 1995-03-17 Nec Corp 情報処理装置
JPH0877000A (ja) * 1994-08-04 1996-03-22 Internatl Business Mach Corp <Ibm> スーパースカラ・プロセッサの電力消費を減少させる回路及び方法
JPH0991136A (ja) * 1995-09-25 1997-04-04 Toshiba Corp 信号処理装置
JP2009053861A (ja) * 2007-08-24 2009-03-12 Panasonic Corp プログラム実行制御装置
US20090217017A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Method, system and computer program product for minimizing branch prediction latency

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3273240A (en) * 1964-05-11 1966-09-20 Steuart R Florian Cutting tool
US5860106A (en) * 1995-07-13 1999-01-12 Intel Corporation Method and apparatus for dynamically adjusting power/performance characteristics of a memory subsystem
US6622236B1 (en) * 2000-02-17 2003-09-16 International Business Machines Corporation Microprocessor instruction fetch unit for processing instruction groups having multiple branch instructions
US6678815B1 (en) * 2000-06-27 2004-01-13 Intel Corporation Apparatus and method for reducing power consumption due to cache and TLB accesses in a processor front-end
US7337306B2 (en) * 2000-12-29 2008-02-26 Stmicroelectronics, Inc. Executing conditional branch instructions in a data processor having a clustered architecture
US6993668B2 (en) * 2002-06-27 2006-01-31 International Business Machines Corporation Method and system for reducing power consumption in a computing device when the computing device executes instructions in a tight loop
US20040181654A1 (en) * 2003-03-11 2004-09-16 Chung-Hui Chen Low power branch prediction target buffer
US7028197B2 (en) * 2003-04-22 2006-04-11 Lsi Logic Corporation System and method for electrical power management in a data processing system using registers to reflect current operating conditions
US7444457B2 (en) * 2003-12-23 2008-10-28 Intel Corporation Retrieving data blocks with reduced linear addresses
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
US7496771B2 (en) * 2005-11-15 2009-02-24 Mips Technologies, Inc. Processor accessing a scratch pad on-demand to reduce power consumption
DE102007031145A1 (de) * 2007-06-27 2009-01-08 Gardena Manufacturing Gmbh Handbetätigbare Schere
US9772851B2 (en) * 2007-10-25 2017-09-26 International Business Machines Corporation Retrieving instructions of a single branch, backwards short loop from a local loop buffer or virtual loop buffer
JP2010066892A (ja) * 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ及びデータ処理システム
CN105468334A (zh) * 2008-12-25 2016-04-06 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验
US9170816B2 (en) * 2009-01-15 2015-10-27 Altair Semiconductor Ltd. Enhancing processing efficiency in large instruction width processors
DE102009019989A1 (de) * 2009-05-05 2010-11-11 Gardena Manufacturing Gmbh Handbetätigte Schere
JP5423156B2 (ja) * 2009-06-01 2014-02-19 富士通株式会社 情報処理装置及び分岐予測方法
US8370671B2 (en) * 2009-12-02 2013-02-05 International Business Machines Corporation Saving power by powering down an instruction fetch array based on capacity history of instruction buffer
US8578141B2 (en) * 2010-11-16 2013-11-05 Advanced Micro Devices, Inc. Loop predictor and method for instruction fetching using a loop predictor

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05241827A (ja) * 1992-02-27 1993-09-21 Nec Ibaraki Ltd 命令バッファ制御装置
JPH0773034A (ja) * 1993-09-07 1995-03-17 Nec Corp 情報処理装置
JPH0877000A (ja) * 1994-08-04 1996-03-22 Internatl Business Mach Corp <Ibm> スーパースカラ・プロセッサの電力消費を減少させる回路及び方法
JPH0991136A (ja) * 1995-09-25 1997-04-04 Toshiba Corp 信号処理装置
JP2009053861A (ja) * 2007-08-24 2009-03-12 Panasonic Corp プログラム実行制御装置
US20090217017A1 (en) * 2008-02-26 2009-08-27 International Business Machines Corporation Method, system and computer program product for minimizing branch prediction latency

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020107306A (ja) * 2018-12-27 2020-07-09 グラフコアー リミテッドGraphcore Limited マルチスレッドプロセッサの命令キャッシュ
US11567768B2 (en) 2018-12-27 2023-01-31 Graphcore Limited Repeat instruction for loading and/or executing code in a claimable repeat cache a specified number of times

Also Published As

Publication number Publication date
CN103119537A (zh) 2013-05-22
DE112011103212T5 (de) 2013-07-18
CN103119537B (zh) 2017-07-11
US20120079303A1 (en) 2012-03-29
TW201224920A (en) 2012-06-16
GB2497470A (en) 2013-06-12
WO2012040664A3 (en) 2012-06-07
WO2012040664A2 (en) 2012-03-29
DE112011103212B4 (de) 2020-09-10
TWI574205B (zh) 2017-03-11
KR20130051999A (ko) 2013-05-21
GB201305036D0 (en) 2013-05-01

Similar Documents

Publication Publication Date Title
JP2013541758A (ja) 命令フェッチユニットの電力を落とすことによりプロセッサ内の電力消費を低下させる方法および装置
US7861066B2 (en) Mechanism for predicting and suppressing instruction replay in a processor
JP5748800B2 (ja) ループバッファのパッキング
EP2674858B1 (en) Loop buffer learning
US9600289B2 (en) Load-store dependency predictor PC hashing
US9201658B2 (en) Branch predictor for wide issue, arbitrarily aligned fetch that can cross cache line boundaries
US8856447B2 (en) Converting memory accesses near barriers into prefetches
CN112230992B (zh) 一种包含分支预测循环的指令处理装置、处理器及其处理方法
JP5513744B2 (ja) 動的自動減衰デバイスアーキテクチャ
US9524011B2 (en) Instruction loop buffer with tiered power savings
US20120204005A1 (en) Processor with a Coprocessor having Early Access to Not-Yet Issued Instructions
WO2017053111A1 (en) Method and apparatus for dynamically tuning speculative optimizations based on predictor effectiveness
US20030149861A1 (en) Stalling instructions in a pipelined microprocessor
TWI757244B (zh) 包含支持指示意圖呼叫或回傳的控制移轉指令的處理器和系統及使用指示意圖呼叫或回傳的控制移轉指令的方法
US7346737B2 (en) Cache system having branch target address cache
US10747539B1 (en) Scan-on-fill next fetch target prediction
US20070294519A1 (en) Localized Control Caching Resulting In Power Efficient Control Logic
KR20070118705A (ko) 레지스터 파일에 액세스하기 위해 프리디케이트 값을이용하는 시스템 및 방법
US20120079249A1 (en) Training Decode Unit for Previously-Detected Instruction Type
US6844831B1 (en) Split latency decoding
CN117170747A (zh) 程序与指令处理、训练与预测方法与装置、处理器

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140311

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140401

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140630

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140801

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20141014