JP7301955B2 - ループ終了予測を用いたプロセッサのループモードの促進又は抑制 - Google Patents

ループ終了予測を用いたプロセッサのループモードの促進又は抑制 Download PDF

Info

Publication number
JP7301955B2
JP7301955B2 JP2021514963A JP2021514963A JP7301955B2 JP 7301955 B2 JP7301955 B2 JP 7301955B2 JP 2021514963 A JP2021514963 A JP 2021514963A JP 2021514963 A JP2021514963 A JP 2021514963A JP 7301955 B2 JP7301955 B2 JP 7301955B2
Authority
JP
Japan
Prior art keywords
loop
instructions
processor
mode
instruction
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
JP2021514963A
Other languages
English (en)
Other versions
JPWO2020060734A5 (ja
JP2022500777A (ja
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2022500777A publication Critical patent/JP2022500777A/ja
Publication of JPWO2020060734A5 publication Critical patent/JPWO2020060734A5/ja
Application granted granted Critical
Publication of JP7301955B2 publication Critical patent/JP7301955B2/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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
    • 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/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • 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/3243Power saving in microcontroller unit
    • 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/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • 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/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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 or 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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

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)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)
  • Power Sources (AREA)

Description

処理効率を高めるために、最新のプロセッサは、ループモードを用いてプログラムループを実行することがある。ループモードでは、プロセッサは、命令フェッチユニットを介してループの命令を繰り返し取り出すのではなく、ループ命令バッファからループの命令を取り出して実行する。ループモードでは、プロセッサは、リソースを節約することができる。これは、例えば、ループモードの間、命令フェッチユニット又はプロセッサの他の部分を低電力状態に置くことによって可能になる。しかし、従来のループモード動作は、いくつかの条件の下では効率が悪い。例えば、ループモードは、典型的に、プロセッサがループ終了命令に対する分岐予測ミスに遭遇した結果として終了する。分岐予測ミスによって、プロセッサの命令パイプラインがフラッシュされるため、プロセッサリソースがさらに消費され、電力オーバーヘッドが生じる。命令ループが比較的短い場合、パイプラインフラッシュによって消費されるリソースは、ループモードで動作することによって節約されるリソースを超える可能性がある。
添付図面を参照することによって、本開示をより良好に理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面で同じ符号を用いた場合、同様又は同一の要素を示す。
いくつかの実施形態による、ループモードにおいて低電力状態でループ終了予測を実施するプロセッサ内の命令パイプラインのブロック図である。 いくつかの実施形態による、ループモード中にループ終了予測器が起動状態にある図1の命令パイプラインのブロック図である。 いくつかの実施形態による、ループ終了予測器及びループモードのさらなる態様を示す図1の命令パイプラインのブロック図である。 いくつかの実施形態による、ループ終了予測を用いて、ループモードに対する比較的大きいループ繰り返しを識別する方法を示すフロー図である。 いくつかの実施形態による、ループ終了予測を用いて、ループモードに対する小さいループ繰り返しを識別する方法を示すフロー図である。
図1~図5に、プロセッサにおいてループ終了予測(LEP)を使用して、ループモードの使用に関連するプロセッサリソースを節約する技術を示す。プロセッサは、各実行ループの終了を予測するLEPユニットを含む。LEPユニットによる予測に基づいて、プロセッサは、1つ以上のループ管理技術を実施する。ループ管理技術は、例えば、比較的短いループの場合にループモードに移行するのを拒否することと、分岐予測ミスが示されるか分岐予測ミスに遭遇する前にループモードを終了することと、比較的大きいループの場合にループモードに移行するのを促進することと、を含む。これらの各技術は、ループモードを使用するためにプロセッサが消費するリソースの量を低減し、これにより、処理効率を向上させる。
例えば、いくつかの実施形態では、プロセッサは、LEPユニットを用いて、プログラムフローにおける各実行ループの繰り返し数を予測する。ループの繰り返し数がループ繰り返しの所定の閾値未満であるとLEPユニットが示すことに応じて、プロセッサは、そのループのループモードへの移行を抑制する。これにより、プロセッサは、ループモードに移行するためのリソースコストが、ループモードでループを実行することによるリソース節約を超える場合に、ループモードに移行することを回避する。
いくつかの実施形態では、プロセッサは、ループモードでループを実行する間にLEPユニットを使用して、ループがいつ終了すると予想されるかを予測する。LEPユニットがループ終了の予測を示したことに応じて、プロセッサは、ループモードの終了(例えば、ループを終了したときに実行される1つ以上の次の命令をフェッチして命令パイプラインを満たすこと)を開始する。したがって、プロセッサは、ループ終了を示す分岐予測ミスを待機したり、ループ終了をトリガしたりしないので、このような手順は、パイプラインフラッシュによってプロセッサリソースが消費され、さらなる命令実行が遅れることを回避する。ループモードの間もLEPを用いてループ終了分岐が予測される。ある実施形態では、プロセッサ内の専用LEPユニットによってLEPが実行される。LEPは、ループ終了分岐に対して特別に調整されるので、LEP精度は、ループの実行中に1つ以上の分岐予測器によって適用される一般的な分岐予測の精度よりも高い。
また、プロセッサは、LEPユニットによって提供される予測繰り返し回数を用いて、比較的大きいループを識別し、大きいループを実行する前にループモードに移行することを促進する。特に、プロセッサは、ループモードに移行する前に第1の閾値数のループ繰り返しが実行されているか又は実行される可能性があることに応じて、名目上、ループモードに移行して、ループが実際に発生し、ループ命令のセットを介してループが正常に完了することを確認する。しかし、ある実施形態では、予測繰り返し回数が所定の第2の閾値を超えたことに応じて、プロセッサは、第1の閾値数のループ繰り返しが実行されるのを待たずにループモードを開始する。その結果、ループモードを使用する他の実施形態よりも早くループモードに移行することによって、プロセッサリソースが節約される。
図1は、いくつかの実施形態による、LEPを実施するプロセッサ100内の命令パイプラインアーキテクチャのブロック図である。説明を簡単にするために、プロセッサ100のいくつかのコンポーネントのみが示されている。さらに、プロセッサ100の特定のコンポーネントは、命令を取り出して実行するために、従来から理解されているように、プロセッサ100の前面又は背面の一部と考えられてもよいが、本明細書ではそのように指定されていない。これは、本明細書で説明する技術は、様々なコンポーネント、アーキテクチャ、命令セット、動作モード等を有する複数のタイプのプロセッサに適用可能であるためである。プロセッサ100は、一般的に、命令セット(例えば、コンピュータプログラム)を実行して、電子デバイスの代わりにタスクを実行する。したがって、いくつかの実施形態では、プロセッサ100は、電子デバイス(例えば、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、スマートフォン、ゲームコンソール、家庭用電気器具等)に組み込まれている。
命令の実行をサポートするために、プロセッサ100は、命令パイプライン114を含む。命令パイプライン114は、命令キャッシュ101と、データキャッシュ102と、命令フェッチユニット103(1つ以上の予測器104を有する)と、ループ終了予測器105と、デコーダ106と、リオーダー(reorder)バッファ107と、レジスタ108と、ループ命令バッファ109と、リザベーションステーション110と、ロード/記憶ユニット111と、1つ以上の実行ユニット112と、電力コントローラ117と、を含む。命令パイプライン114は、アクティブ(非ループ)モード及びループモードの少なくとも2つのモードで動作する。アクティブモードでは、プロセッサ100のコンポーネントに対して、命令をアクティブに実行するための電力が供給される。ループモードでは、プロセッサ100は、1つ以上のコンポーネントを低電力状態にして、アクティブモード(例えば、特定のコンポーネントがアイドル状態である間、ループ命令が繰り返して実行される間等)において消費されるエネルギーを含む1つ以上のリソースを節約する。
アクティブモードでは、命令フェッチユニットは、プログラムカウンタ113に記憶された値に基づいて、命令キャッシュ101から命令を取り出す。いくつかの実施形態では、命令フェッチユニット103は、予測器104によって生成された予測に基づいて命令をフェッチする。予測器104は、分岐命令を識別し、分岐ターゲットアドレス、ループ命令を生成し、他の分岐、ループ及び予測機能を実行する、分岐予測器及びループ予測器を含む。
命令フェッチユニット103は、フェッチした命令をデコーダ106に送る。デコーダ106は、各命令を1つ以上のマイクロオペレーション(マイクロop)に変換する。デコーダ106のディスパッチステージ(図示省略)は、各マイクロopをロード/記憶ユニット111及び実行ユニット112のうち対応する何れかに送って、実行させる。リオーダーバッファ107は、ロード/記憶ユニット111及び実行ユニット112におけるマイクロopの実行のスケジューリングを管理する。また、リザベーションステーション110は、ロード/記憶ユニット111及び実行ユニット112によるレジスタ108へのアクセスを管理する。対応するマイクロオペレーションを実行した後に、各命令は、命令パイプライン114のリタイアステージ(図示省略)においてリタイアされる。
ループモードでは、命令パイプライン114は、ループ命令バッファ109を用いてループの繰り返しを実行する。本明細書で用いる場合、ループは、ループを終了する条件分岐が取られるまで繰り返し実行される命令のセットである。例えば、いくつかのループによっては、条件分岐命令は、条件分岐命令を指すプログラムカウンタ113に加えられるオフセットを含む相対ジャンプ命令である。いくつかの実施形態では、ループとして識別されるために、命令パイプライン114は、ループの最近の実行インスタンスにおいて条件分岐命令が閾数回数(例えば、2、3、4、5回)取られたことを識別する。ループの繰り返しは、ループの各命令の単一の実行を指す。
ループモードに戻ると、命令パイプライン114は、命令ループが(例えば、命令ループを示す予測器104のロジックに基づいて)検出されたことに応じて、ループ命令バッファ109内のループ命令に対する1つ以上のマイクロopを記憶する。ループモードでは、ループ命令バッファ109は、ループ終了に達するまで、ロード/記憶ユニット111及び実行ユニット112にマイクロオペレーションを繰り返し送って実行させる。したがって、ループモードでは、命令フェッチユニット103は、命令キャッシュ101から命令を取り出すことを一時停止する。ループモードでは、命令パイプライン114の1つ以上のコンポーネントを含むプロセッサ100の特定のコンポーネントは、電力コントローラ117によって低電力モード又は低電力状態に置かれて電力を節約する。これを破線118によって示す。例えば、電力コントローラ117は、命令フェッチユニット103、1つ以上の予測器104、ループ終了予測器105及びデコーダ106をパワーダウンさせ、一方で、他のコンポーネント(例えば、ループ命令バッファ109、ロード/記憶ユニット111及び実行ユニット112)をアクティブ状態に維持する。アクティブ状態にある間、特定のコンポーネントはパワーオンのままであり、ループ終了条件が発生して、(例えば、ループモードに移行する前、移行している間、又は、移行した後に)低電力モードに置かれたコンポーネントに電力が戻されるまで、これらの機能を実行する。
ループモードの効率的な実行をサポートするために、命令パイプライン114は、実行する各ループの繰り返し数を予測するループ終了予測器(LEP)105を含む。例えば、LEP105は、命令パイプライン114において実行されるループ内のパターンを示すループ履歴116を記憶する。いくつかの実施形態では、LEP105は、命令パイプライン114の1つ以上の専用のトレーニング期間中にループ履歴116を生成及び記憶する。各トレーニング期間中に、命令パイプライン114は、指定された命令セットを実行し、実行する各ループの繰り返し数をカウントし、繰り返し数を、ループ数115を予測するように指定された記憶構造に記憶する。いくつかの実施形態では、プロセッサ100の通常動作中に、命令パイプライン114は、実行する各ループの繰り返しをカウントし続け、繰り返し数に基づいて、予測ループ数115を調整する。
いくつかの実施形態では、LEP105は、多くの方法でループモードを効率的に使用することをサポートする。例えば、繰り返しが比較的少ないループの場合、ループモードを開始及び終了するためのリソースコストは、ループモードを使用するためのリソース節約を超える。したがって、いくつかの実施形態では、命令パイプライン114は、LEP105の予測を用いて、繰り返しが比較的少ないと予測されるループを識別し、これらのループについてループモードに移行することを回避する。したがって、ループに対する予測ループ数115が閾値を下回ることに応じて、命令パイプライン114は、ループモードに移行することを抑制する。
さらに、繰り返し回数が比較的多いループの場合、より迅速にループモードに移行して、ループモードにおいてより多くのループ繰り返しが実行されることによって、リソース節約を高める。したがって、いくつかの実施形態では、命令パイプライン114は、LEPの予測を用いて、繰り返し回数が比較的多いと予測されるループを識別し、これらのループについてループモードに移行することを促進する。したがって、或るループに対する予測ループ数115が閾値(例えば、第1の閾値)を上回ることに応じて、命令パイプライン114は、当該ループの最初の繰り返しに対してループモードに移行する。
他の実施形態では、命令パイプライン114は、ループモード自体の間にLEP105を用いる。このように用いることは、図2を参照してより良好に理解することができる。図2は、プロセッサ100の代替的な構成のブロック図であり、いくつかの実施形態によれば、命令パイプライン114は、ループモード中にループ終了予測器105をアクティブ状態に維持する(破線218に対するLEP105の配置によって示す)。ループモード中にアクティブ状態にある場合、ループ終了予測器105は、ループ繰り返し数を予測し続ける。例えば、ループ終了予測器105は、実行されているループによって行われる可能性があるループの予測繰り返し数を更新し、ループ終了予測器105は、性能及び電力オーバーヘッドの両方であるパイプラインフラッシュが望ましくない結果として生じる分岐予測ミスの前にループモードが終了するように、更新された予測に基づいて、低電力モードに置かれた命令パイプライン114のコンポーネントに電力を戻すタイミングを更新する。
例えば、従来のプロセッサでは、ループの終了(したがって、ループモードの終了)は、ループを終了させる分岐命令に対する分岐予測ミスによって示される。しかし、他の予測ミスの場合と同様に、ループの終了を示す分岐予測ミスは、命令パイプラインをフラッシュして、パイプラインを以前の状態に戻す必要がある。そのため、予測ミスに遭遇するまでループを実行することは、パイプラインバブル(pipeline bubble)を介して電力損失を招き、それによって、1つ以上の下流コンポーネント(例えば、デコーダ106、リオーダーバッファ107、レジスタ108、リザベーションステーション110、ロード/記憶ユニット111及び実行ユニット112)に命令がいかなくなる(starved)。対照的に、ループ終了予測器105は、アクティブ状態に維持され、ループの終了を予測する。予測された終了に応じて、命令パイプラインは、命令フェッチユニット103及び他のモジュールをアクティブ状態に戻すことによって、ループモードを終了する。したがって、命令パイプライン114は、ループ終了に対する分岐予測ミスを回避し、その結果、予測ミス性能ペナルティを回避する。
図3は、いくつかの実施形態による、LEP105のさらなる態様を示す図1のプロセッサ100のブロック図である。予測ループ数115及びループ履歴116に加えて、ループ終了予測器105は、ループ命令バッファ302と、ループ予測ロジック303と、1つ以上のループカウンタ304と、ループ識別子305と、第1のループ閾値306と、第2のループ閾値307と、ループ予測308と、1つ以上の比較結果309と、1つ以上の信頼値310と、をさらに含む。ループ予測ロジック303は、繰り返し実行されていると識別された命令のセットに基づいて、ループ終了予測を提供する。ループ予測308は、特定のループ又は1つ以上のループ命令のセットについての予測ループ数を識別して記憶することを含む。ループカウンタ304及びループ識別子305は、ループ終了予測器105及びループ命令バッファ302の命令によって使用される。例えば、ループカウンタ304をトレーニングにおいて使用して、命令のセットがいつループとして実行されるのかを識別し、ループ実行中に使用して、ループ命令の繰り返しがどれくらい完了したかを追跡する。予測したループ終了カウントにおいてループ終了を準備する際に、個々のループカウンタ304を、予測したループ終了と比較する。プロセッサ命令を実行する際に1つ以上のループが生じる場合があり、プロセッサ100は、(例えば、第1のループの内部で第2のループが実行される場合等に)複数の実行ループの履歴をループ履歴116内に維持する。ループカウンタ304は、ループ信頼値と、現在のループ繰り返し値と、過去のループ繰り返し値と、予測されたループ繰り返し値と、を含む。
トレーニングフェーズの間、ループ終了予測器105は、プロセッサ命令のセット内のループ及びループ終了分岐を検出する。トレーニングは、ループ終了予測器105が、(例えば、1つのループカウンタ304において)ループ命令の特定のセットに対して繰り返し実行されるループ繰り返しの数を追跡することを含む。特定のループが、ループの以前の実行又は実行インスタンスの場合と同じ回数を繰り返す毎に信頼値310が増加し、信頼値310は、ループ終了予測器105がループ終了の推定を提供する場合に用いられる。
識別又は予測の際に、ループ終了予測器105は、ループ識別子305の現在のセット内のマッチングループ識別子を検索する。ループ識別子305内のLEPエントリへのヒットは、予測された分岐命令が終了分岐命令であることを意味する。ループ識別子305内のヒットを見つけることは、ループ命令の特性を、ループ識別子内の少なくとも1つの識別子にマッチングさせることを含む。ループ終了予測器105によって追跡されている特定のループの現在の繰り返しが、ループ終了予測器105によって予測された繰り返しの総数と等しい場合、特定のループは、この繰り返しの間に終了することが予測される。すなわち、ループ終了分岐の特定のループ繰り返しが取られないと予測される。そうでない場合、ループ終了分岐が取られると予測される。
特定の実施形態によれば、ループ終了予測器105によって実行されるLEPは、特定の分岐に関連する信頼値310が十分に高い場合にのみ行われる。信頼値310が低すぎる(すなわち、信頼閾値を超えない)場合、又は、ループ識別子305内のLEPエントリへのヒットがない場合、分岐は、命令フェッチユニット103の1つの予測器104等の他の分岐予測器によって予測されるか処理を受ける。ループ予測ロジック303は、ループ終了分岐に対して特別に調整されるので、その予測精度は、プロセッサ100が終了分岐の命令を実行する場合に、通常、他の分岐予測器又は一般的なタイプの予測器の精度よりも高い。ループ予測ロジック303は、各ループに対してループ予測308を提供する。ループ予測308は、実行命令のセットが実際にループ命令のセットであるか否かを示す。ループ終了予測器105は、予測ループ数、すなわち、ループ命令のセットが終了前に完了する可能性がある繰り返し数を提供する。
特定の実施形態によれば、ループモードに移行することは、条件分岐(図示省略)の方向履歴の所定のビット数を飽和させることによってトリガされ、ループ(例えば、1つ以上の命令のセット)がプロセッサ100によって実際に実行されていることを確実にする。例えば、ループは、履歴レジスタ内の方向に沿った繰り返しパターンを見つけることによって識別される。方向履歴レジスタが100ビットである場合、100ビットのうち5ビットのグループが繰り返されている場合には、5つの条件分岐を伴うループが存在することを意味している。動作時には、方向履歴レジスタの特定のビット数を飽和させた後、又は、方向閾値(値)を超えた後にのみ、ループモードに移行する。飽和させる飽和レベルが80ビットであり、ループが2つの条件分岐のみを有する場合には、システムは、ループを40回繰り返す必要がある。これは、その時点でのみ、方向履歴変数(例えば、dirHist)が飽和(80カウントビットに到達)し、その結果、ループモードに移行することがトリガされるからである。一方、飽和させるビット数が小さすぎる(例えば、10である)場合、システムは、各ループ繰り返しに対して飽和を2ビットだけ増加させることによって10の値に到達するために、5回の繰り返しの後にループモードに移行していたであろう。この状況における特定のループが6回の繰り返しに対してのみ実行されると想定される(又は、実行されると予測される)場合、プロセッサは、ループモードに移行して直ぐにループモードから抜けるため、ループモードによって得られる効果が無駄になる。一般的に、方向履歴のビット数が方向閾値よりも大きい場合、プロセッサ100は、ループを実行していると識別される。方向閾値が大きいほど、プロセッサ100がトリガされてループモードに移行するまでの時間が長くなり、命令が実際にループ命令である場合にループモードに移行することによって節電する機会を識別する可能性が低くなる。方向閾値が低すぎる場合、プロセッサ100は、実際にループが実行されていないか過度に短いループが実行されている場合に、ループモードに移行することができる。したがって、実行されているループの長さを考慮して、いつループモードに移行するのかについてバランスが取れている。少なくともいくつかの実施形態では、分岐予測は、分岐方向、方向閾値及びターゲットアドレスを含む。ループ方向、ループ閾値及びループ終了ターゲットアドレスを含むLEPについても同様である。
また、プロセッサ100は、マイクロopの実行前及び実行中にループ予測308を用いて、いつループモードに移行し、いつループモードを終了するのかを決定する。特に、マイクロopがループを実行している可能性があるとプロセッサ100が決定した場合、ループ予測308は、第1のループ閾値306及び第2のループ閾値307と比較される。比較によって、各々の比較結果309が比較毎に1つ得られる。プロセッサ100は、比較結果309の少なくとも1つに基づいて、ループモードに移行する。
アプリケーション(例えば、プロセッサ100に対するマイクロopのソースとしてのソフトウェアアプリケーション)が繰り返しループを進む場合、そのループに関連する命令(又は、複数の命令)のマイクロopは、ループモード前又はループモード中にループ命令バッファ302内にキャッシュされる。ループモード中に、マイクロopは、第1のプロセッサコア301等の1つ以上のコアによってループ命令バッファ302から実行され、プロセッサ100の特定の他のコンポーネントが低電力モードに置かれ、その結果、全電力で動作するコンポーネントの動作によって消費される電力が節約される。ループ命令のセットが大きすぎてループ命令バッファ302に収まらない場合、ループ終了予測器105は、起動したままであり、ループ命令バッファ302は、パワーダウンされて低電力又は低電力状態になり、プロセッサ100によるエネルギー消費は、ループモードの結果のままである。この状況では、ループ終了予測器105は、起動したままであり、ループの終了と、命令キャッシュ101から命令が引き出されて第1のプロセッサコア301に送られる場合のループ命令の方向と、を予測し続ける。少なくともいくつかの実施形態によれば、ループモードは、1つ以上のコンポーネントがパワーダウンされるか又は低電力モードに置かれ、ループ命令が例えばループ命令バッファ302等から実行されている間に発生する。
ループモードにおいて予測器104がパワーダウンされるか低電力モードに置かれた場合に、ループモードを終了する1つの方法は、命令実行コンポーネントにリダイレクトメッセージ、すなわち、プロセッサ100の1つ以上のコンポーネントに対して終了分岐が予測ミスされたことを示す終了信号を送信することである。終了信号は、命令パイプライン114に対して、ループ後に発生する命令をフェッチして実行させる。分岐予測ミスは、無駄な電力及び無駄な実行サイクルという点で高価であるため、不適切に選択又は指定された方向閾値が電力性能オーバーヘッドを伴う。したがって、ループモードに移行することによって節電を得ることと、終了分岐命令の予測ミスに対する電力性能オーバーヘッドと、の間にトレードオフが存在する。ループが短い場合(例えば、繰り返し数が5回未満のループ、繰り返し数が10回未満のループ)、場合によっては、予測ミスした終了分岐の電力性能オーバーヘッドは、プロセッサ100の特定の構成についてのループモードにおける節電よりも上回る。ループモードを終了する別の方法は、ループ終了予測器105が起動したままであることと、ループ終了予測が成功した場合にループ終了予測器105がループ終了信号を提供することと、を含む。このように、命令パイプライン114に、ループ後に発生した実行命令を適時に送らせることによって、予測ミスを回避する。
図4は、いくつかの実施形態による、比較的大きいループ繰り返し予測に対してループ終了予測を実施する方法400を示すフロー図である。方法400は、プロセッサのコンポーネント(例えば、プロセッサ100のコンポーネント)によって行われる。ブロック401において、方法400は、分岐命令がループ命令(ループモードで実行される可能性のあるループ)であるか否かを識別することを含む。そうである場合には、ブロック402において、プロセッサは、ループ識別子と、ループに対するループ繰り返し数と、を決定する。この識別は、記憶されたループ識別子のセット内のループ識別子(例えば、ループ識別子305)を検索することを含む。ブロック403において、プロセッサは、決定したループ繰り返し数が、第1のループ閾値(例えば、第1のループ閾値306)を超えているか否かを判別する。例えば、第1のループ閾値は、プロセッサによって実行される予測ループ繰り返し数が比較的大きい大ループとしてループを識別するために用いられる比較的大きい数(例えば、500、1,000、10,000)である。決定したループ繰り返し数が第1のループ閾値を超えている場合、ループモードに直ぐに移行される。さらに、いくつかの実施形態によれば、第1のループ閾値を超えている場合、特定の方向履歴閾値又は方向履歴変数を超えているか否かのチェックが行われず、ループモードに直ぐに移行される。
決定したループ繰り返し数が第1のループ閾値を超えていない場合、ブロック404において、プロセッサは、決定したループ繰り返し数が第2のループ閾値(例えば、第2のループ閾値307)を超えているか否かを判別する。例えば、第2のループ閾値は、プロセッサによって実行される予測ループ繰り返し数が比較的小さい小ループとしてループを識別するために用いられる比較的小さい数(例えば、15、10、5、3)である。予測されるループ繰り返し数が第2の閾値を超えていない場合、ブロック405において、プロセッサは、命令パイプラインの1つ以上のコンポーネントをアクティブモードに維持する(例えば、コンポーネントを起動状態に維持する)ことによって、次のループの識別を待ち、実行はブロック401に戻る。この状況では、プロセッサ及びループ終了予測器は、ループモードの節電から利益を得るには小さすぎるループに遭遇しており、プロセッサは、第1のループ閾値及び第2のループ閾値に対する決定に基づいて、ループモードに移行することを回避する。代替的に、プロセッサは、第2のループ閾値に対する決定に基づいて、ループモードに移行することを回避する。
決定したループ繰り返し数が第1のループ閾値を超えておらず、第2の閾値を超えている場合、ブロック406において、プロセッサは、ループ内で命令が実行されていることを確認する前に、特定の数の実際のループ繰り返しを待つ。ブロック403において、決定したループ繰り返し数が第1の閾値を超えている場合、又は、ブロック406において、特定の数の成功したループ実行を待った後に、方法400はブロック407に進み、ループ命令のセットをループバッファ(例えば、ループ命令バッファ109)に記憶する。その後、ループバッファからループ命令を繰り返して実行する。ブロック408において、プロセッサの1つ以上のコンポーネントが低電力モードに置かれる。ブロック409において、ループ命令は、分岐予測ミスが生じる、又は、ループ命令が予測ループ繰り返しの数だけ実行されるまで実行され、ループ終了予測器に対してループ終了を正確に予測させてループ終了信号を提供させることによって終了する。この状況では、プロセッサは、パイプラインバブルに遭遇しない。ループを終了すると、ブロック408においてループモード中に低電力モードに置かれたプロセッサコンポーネントに対して、ブロック410において電力を戻す。電力が戻ると、ブロック405において、プロセッサは次のループを待つ。
図5は、いくつかの実施形態による、比較的小さいループ繰り返し予測に対してループ終了予測を実施する方法500を示すフロー図である。方法500は、プロセッサ(例えば、プロセッサ100)のコンポーネントによって行われる。ブロック501において、方法500は、ループ命令のセットに関連するループ繰り返し数を予測することを含む。予測されたループ繰り返し数が第1のループ繰り返し閾値を超えることに応じて、ブロック502において、ループ命令のセットがループモードで実行され、予測されたループ繰り返し数が第1のループ繰り返し閾値を超えない(例えば、予測されたループ繰り返し数がループ繰り返し閾値以下である)ことに応じて、命令のセットがアクティブモードで動作される。特に、ブロック502において肯定的な結果の場合、ブロック503において、ループモードは、プロセッサの命令パイプラインの少なくとも1つのコンポーネントを低電力モード又は低電力状態に置くことを含む。さらに、いくつかの実施形態によれば、ブロック503において、特定の方向履歴閾値又は方向履歴変数を超えているか否かをチェックしない。予測されたループ繰り返し数が第1のループ繰り返し閾値を超えていると判別された場合、ループモードに直ぐに移行する。ブロック504において、ループモードは、ループバッファからループ命令のセットを実行することも含む。
ブロック505~507において、ループモードは、方法500のいくつかの実施形態による特定のさらなるステップを含む。例えば、ブロック505において、ループモードは、ループ命令のセットに関連するループ繰り返しの予測回数を更新する。ループ繰り返し数の予測及び更新は、ループ終了予測器(例えば、ループ終了予測器105)によって実行される。ブロック506において、ループモードは、低電力モードに置かれたプロセッサの命令パイプラインのコンポーネントの電力を戻す時間を決定する。低電力コンポーネントの電力を戻す時間は、ループの実行命令が終了する前に設けられてもよい。これは、パイプラインバブルを回避するためにループを終了した後に順次来る命令で命令パイプラインを満たすために、リードタイム(例えば、特定の数のクロック周期)が必要となることが多いからである。ブロック507において、ループモードは、ループ命令のセットの終了を予測する。プロセッサは、低電力モードに置かれたコンポーネントに電力を戻す時間を決定し、予測された終了に基づいて次の命令アドレスを決定する。
ブロック508において、方法500のアクティブモードは、命令パイプラインの少なくとも1つのコンポーネントを起動状態に維持することを含む。例えば、ループ終了予測器(例えば、ループ終了予測器)105を、電力によって維持する。ブロック509において、アクティブモードは、命令パイプラインの命令フェッチステージユニットからループ命令のセットを実行することも含む。方法500の場合、各ループに対して、プロセッサは、ループモード又はアクティブモードで動作している。
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実施されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、他の方法で明確に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行される場合、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、磁気又は光ディスク記憶デバイス、ソリッドステート記憶デバイス(例えば、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)若しくは他の不揮発性メモリデバイス(複数可))等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈されるか他の方法で実行可能な他の命令フォーマットであってもよい。
概要説明で上述した全てのアクティビティ、コンポーネント又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要でなくてもよく、記載されたものに加えて1つ以上のさらなるアクティビティが実施されてもよいし要素が含まれてもよいことに留意されたい。さらに、アクティビティが列挙される順序は、必ずしも、それらを行う順序ではない。また、概念を、特定の実施形態を参照して説明してきた。しかし、当業者であれば、以下の特許請求の範囲に記載される本発明の範囲から逸脱することなく、様々な変更及び修正を行うことができることを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、このような変更は全て本発明の範囲内に含まれることが意図されている。
効果、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、効果、利点、問題に対する解決手段、及び、何等かの効果、利点、解決しゅ段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての特許請求の範囲の重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (20)

  1. プロセッサにおいて、ループ命令のセットに関連するループに対して実行されることが予想されるループ繰り返し数を予測することと、
    予測されたループ繰り返し数が第1のループ繰り返し閾値を超えることに応じて、前記ループ命令のセットをループモードで実行することであって、前記プロセッサの命令パイプラインの少なくとも1つのコンポーネントを低電力モードに置くことと、前記ループ命令のセットをループバッファから実行することと、を含む、ことと、を含む、
    方法。
  2. 前記予測されたループ繰り返し数が前記第1のループ繰り返し閾値を超えないことに応じて、前記予測されたループ繰り返し数と第2のループ繰り返し閾値とを比較し、前記予測されたループ繰り返し数が前記第2のループ繰り返し閾値よりも小さいことに応じて、閾値回数のループ繰り返しが実行されるまで前記ループモードに移行するのを遅らせることをさらに含む、
    請求項1の方法。
  3. 前記予測されたループ繰り返し数が前記第2のループ繰り返し閾値よりも大きいことに応じて、前記ループモードに移行する前に、いくつかの成功したループ実行を待つことをさらに含む、
    請求項2の方法。
  4. 前記命令パイプラインの少なくとも1つのコンポーネントを低電力モードに置くことは、前記プロセッサのループ終了予測器を前記低電力モードに置くことを含む、
    請求項1の方法。
  5. 前記命令パイプラインの少なくとも1つのコンポーネントを低電力モードに置いた後に、前記ループ命令のセットに関連するループ繰り返し数をループ終了予測器によって更新することと、
    更新されたループ繰り返し数に基づいて、低電力モードにある前記命令パイプラインの少なくとも1つのコンポーネントに電力を戻すタイミングを決定することと、をさらに含む、
    請求項1の方法。
  6. 前記ループ繰り返し数を予測する前に、記憶されたループ識別子のセット内の識別子にループ命令の特性をマッチングさせることによって、命令を前記ループ命令のセットとして識別することをさらに含む、
    請求項1~5の何れかの方法。
  7. 前記命令パイプラインの少なくとも1つのコンポーネントを低電力モードに置くことは、前記ループ命令のセットの命令を実行する前に行われる、
    請求項1の方法。
  8. 前記ループモード中に前記ループ命令のセットの終了を予測することをさらに含む、
    請求項1の方法。
  9. プロセッサにおいて、ループ命令のセットに関連するループに対して実行されることが予想されるループ繰り返し数が、第1のループ繰り返し閾値を超えることを予測したことに応じて、
    前記ループ命令のセットをループバッファに記憶することと、
    前記プロセッサの命令パイプラインのコンポーネントを低電力モードに置くことと、
    前記ループ命令のセットを前記ループバッファから実行することと、
    前記プロセッサのループ終了予測器によってループ終了を予測することと、
    予測されたループ終了に基づいて、低電力モードに置かれた前記コンポーネントに電力を戻すことと、を含む、
    方法。
  10. 前記命令パイプラインのコンポーネントをパワーダウンする前に、予測されたループ繰り返し数を前記第1のループ繰り返し閾値と比較することをさらに含む、
    請求項9の方法。
  11. 前記命令パイプラインのコンポーネントは、前記ループ命令のセットをループバッファから実行する前に低電力モードに置かれる、
    請求項9の方法。
  12. 前記命令パイプラインのコンポーネントをパワーダウンすることは、前記プロセッサのループ終了予測器をパワーダウンすることを含む、
    請求項9~11の何れかの方法。
  13. プロセッサであって、
    ループ命令のセットを有する命令キャッシュと、
    前記ループ命令のセットを記憶するように構成されたループバッファと、
    前記ループ命令のセットに関連するループに対して実行されることが予想されるループ繰り返し数を予測するように構成されたループ終了予測器と、を備え、
    前記プロセッサは、
    予測されたループ繰り返し数が第1のループ繰り返し閾値を超えることに応じて、前記ループ命令のセットをループモードで実行することであって、前記プロセッサの命令パイプラインの少なくとも1つのコンポーネントを低電力モードに置くことと、前記ループ命令のセットを前記ループバッファから実行することと、を含む、ことと、
    予測されたループ繰り返し数が前記第1のループ繰り返し閾値以下であることに応じて、前記ループ命令のセットを非ループモードで実行することであって、前記命令パイプラインの前記少なくとも1つのコンポーネントをアクティブ状態に維持することと、前記命令パイプラインの命令フェッチユニットによって前記命令キャッシュからフェッチされた前記ループ命令のセットを実行することと、を含む、ことと、
    を行うように構成されている、
    プロセッサ。
  14. 前記ループ命令のセットを、前記プロセッサの機能ユニットに実行させるためにマイクロオペレーションにデコードするデコーダをさらに備え、
    前記命令フェッチユニットは、前記命令キャッシュから前記デコーダに前記ループ命令を提供するように構成されている、
    請求項13のプロセッサ。
  15. 前記命令フェッチユニットは、前記ループ終了予測器に命令を提供するように構成されている、
    請求項14のプロセッサ。
  16. 前記低電力モードに置かれた前記命令パイプラインの少なくとも1つのコンポーネントは、前記プロセッサの命令フェッチコンポーネントである、
    請求項13のプロセッサ。
  17. 前記低電力モードに置かれた前記命令パイプラインの少なくとも1つのコンポーネントは、前記ループ終了予測器である、
    請求項13のプロセッサ。
  18. 前記ループ終了予測器は、
    前記命令パイプラインの前記少なくとも1つのコンポーネントを前記低電力モードに置いた後に、前記ループ命令のセットに関連するループ繰り返し数を更新するように構成されており、
    前記低電力モードに置かれた前記命令パイプラインの少なくとも1つのコンポーネントに電力を戻すタイミングは、更新されたループ繰り返し数に基づいている、
    請求項13~17の何れかのプロセッサ。
  19. 記憶されたループ識別子のバッファをさらに備え、
    前記ループ終了予測器は、前記ループ命令のセットの特性を、前記記憶されたループ識別子のバッファ内の識別子にマッチングさせるように構成されている、
    請求項13のプロセッサ。
  20. 前記命令パイプラインの少なくとも1つのコンポーネントを前記低電力モードに置くことは、前記ループ命令のセットに関連する命令を実行する前であって、前記ループ命令のセットに関連する前記ループ繰り返し数を予測した後に行われる、
    請求項13のプロセッサ。
JP2021514963A 2018-09-18 2019-08-28 ループ終了予測を用いたプロセッサのループモードの促進又は抑制 Active JP7301955B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/134,440 2018-09-18
US16/134,440 US10915322B2 (en) 2018-09-18 2018-09-18 Using loop exit prediction to accelerate or suppress loop mode of a processor
PCT/US2019/048487 WO2020060734A1 (en) 2018-09-18 2019-08-28 Using loop exit prediction to accelerate or suppress loop mode of a processor

Publications (3)

Publication Number Publication Date
JP2022500777A JP2022500777A (ja) 2022-01-04
JPWO2020060734A5 JPWO2020060734A5 (ja) 2022-09-01
JP7301955B2 true JP7301955B2 (ja) 2023-07-03

Family

ID=69772505

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021514963A Active JP7301955B2 (ja) 2018-09-18 2019-08-28 ループ終了予測を用いたプロセッサのループモードの促進又は抑制

Country Status (6)

Country Link
US (2) US10915322B2 (ja)
EP (1) EP3853716A4 (ja)
JP (1) JP7301955B2 (ja)
KR (1) KR102556897B1 (ja)
CN (1) CN112740173A (ja)
WO (1) WO2020060734A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10884751B2 (en) 2018-07-13 2021-01-05 Advanced Micro Devices, Inc. Method and apparatus for virtualizing the micro-op cache
US11294681B2 (en) * 2019-05-31 2022-04-05 Texas Instruments Incorporated Processing device with a microbranch target buffer for branch prediction using loop iteration count
US11256318B2 (en) * 2019-08-09 2022-02-22 Intel Corporation Techniques for memory access in a reduced power state
US20210200550A1 (en) * 2019-12-28 2021-07-01 Intel Corporation Loop exit predictor
US20220283811A1 (en) * 2021-03-03 2022-09-08 Microsoft Technology Licensing, Llc Loop buffering employing loop characteristic prediction in a processor for optimizing loop buffer performance
US20240028339A1 (en) * 2022-07-25 2024-01-25 Apple Inc. Using a Next Fetch Predictor Circuit with Short Branches and Return Fetch Groups

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120117362A1 (en) 2010-11-10 2012-05-10 Bhargava Ravindra N Replay of detected patterns in predicted instructions
JP2013254484A (ja) 2012-04-02 2013-12-19 Apple Inc ベクトル分割ループの性能の向上
US20150293577A1 (en) 2014-04-11 2015-10-15 Apple Inc. Instruction loop buffer with tiered power savings
US20160092230A1 (en) 2014-09-29 2016-03-31 Via Alliance Semiconductor, Ltd. Loop predictor-directed loop buffer
US20160179549A1 (en) 2014-12-23 2016-06-23 Intel Corporation Instruction and Logic for Loop Stream Detection
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
JP2018005488A (ja) 2016-06-30 2018-01-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6578138B1 (en) 1999-12-30 2003-06-10 Intel Corporation System and method for unrolling loops in a trace cache
JP5043560B2 (ja) 2007-08-24 2012-10-10 パナソニック株式会社 プログラム実行制御装置
US9952869B2 (en) * 2009-11-04 2018-04-24 Ceva D.S.P. Ltd. System and method for using a branch mis-prediction buffer
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
US9459871B2 (en) * 2012-12-31 2016-10-04 Intel Corporation System of improved loop detection and execution
US9471322B2 (en) 2014-02-12 2016-10-18 Apple Inc. Early loop buffer mode entry upon number of mispredictions of exit condition exceeding threshold
US9875106B2 (en) 2014-11-12 2018-01-23 Mill Computing, Inc. Computer processor employing instruction block exit prediction

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120117362A1 (en) 2010-11-10 2012-05-10 Bhargava Ravindra N Replay of detected patterns in predicted instructions
JP2013254484A (ja) 2012-04-02 2013-12-19 Apple Inc ベクトル分割ループの性能の向上
US9557999B2 (en) 2012-06-15 2017-01-31 Apple Inc. Loop buffer learning
US20150293577A1 (en) 2014-04-11 2015-10-15 Apple Inc. Instruction loop buffer with tiered power savings
US20160092230A1 (en) 2014-09-29 2016-03-31 Via Alliance Semiconductor, Ltd. Loop predictor-directed loop buffer
US20160179549A1 (en) 2014-12-23 2016-06-23 Intel Corporation Instruction and Logic for Loop Stream Detection
JP2018005488A (ja) 2016-06-30 2018-01-11 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
US20200089498A1 (en) 2020-03-19
US10915322B2 (en) 2021-02-09
KR102556897B1 (ko) 2023-07-18
EP3853716A1 (en) 2021-07-28
KR20210046806A (ko) 2021-04-28
US20210191722A1 (en) 2021-06-24
CN112740173A (zh) 2021-04-30
US11256505B2 (en) 2022-02-22
EP3853716A4 (en) 2022-06-15
JP2022500777A (ja) 2022-01-04
WO2020060734A1 (en) 2020-03-26

Similar Documents

Publication Publication Date Title
JP7301955B2 (ja) ループ終了予測を用いたプロセッサのループモードの促進又は抑制
US9891923B2 (en) Loop predictor-directed loop buffer
US10241797B2 (en) Replay reduction by wakeup suppression using early miss indication
US7334143B2 (en) Computer power conservation apparatus and method that enables less speculative execution during light processor load based on a branch confidence threshold value
US7627742B2 (en) Method and apparatus for conserving power by throttling instruction fetching when a processor encounters low confidence branches in an information handling system
US8006070B2 (en) Method and apparatus for inhibiting fetch throttling when a processor encounters a low confidence branch instruction in an information handling system
KR100973951B1 (ko) 오정렬 메모리 액세스 예측
KR101561496B1 (ko) 이종 멀티프로세서 컴퓨팅 플랫폼 내에서의 애플리케이션 스케줄링
KR102271992B1 (ko) 데이터 처리장치 및 추론 벡터 연산의 수행 제어방법
US20070260853A1 (en) Switching processor threads during long latencies
US20060225046A1 (en) System for predictive processor component suspension and method thereof
US8028180B2 (en) Method and system for power conservation in a hierarchical branch predictor
US10303482B2 (en) Dynamic processor frequency selection
US20220283811A1 (en) Loop buffering employing loop characteristic prediction in a processor for optimizing loop buffer performance
US20130173885A1 (en) Processor and Methods of Adjusting a Branch Misprediction Recovery Mode
JP7232331B2 (ja) ループ終了予測器
US11663007B2 (en) Control of branch prediction for zero-overhead loop
US20200159538A1 (en) Adaptive Utilization Mechanism for a First-Line Defense Branch Predictor
US8266414B2 (en) Method for executing an instruction loop and a device having instruction loop execution capabilities
US20020166042A1 (en) Speculative branch target allocation
US11972264B2 (en) Micro-operation supply rate variation

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210519

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220824

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220824

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20220824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230227

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: 20230530

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230621

R150 Certificate of patent or registration of utility model

Ref document number: 7301955

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150