JP2021089736A - 命令プリフェッチ方法、装置、機器及び媒体 - Google Patents

命令プリフェッチ方法、装置、機器及び媒体 Download PDF

Info

Publication number
JP2021089736A
JP2021089736A JP2020201010A JP2020201010A JP2021089736A JP 2021089736 A JP2021089736 A JP 2021089736A JP 2020201010 A JP2020201010 A JP 2020201010A JP 2020201010 A JP2020201010 A JP 2020201010A JP 2021089736 A JP2021089736 A JP 2021089736A
Authority
JP
Japan
Prior art keywords
instruction
buffer
instructions
target
branch
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.)
Granted
Application number
JP2020201010A
Other languages
English (en)
Other versions
JP7177812B2 (ja
Inventor
チャオ タン,
Chao Tang
チャオ タン,
シューリアング ドゥー,
Xueliang Du
シューリアング ドゥー,
イナン シュー,
Yingnan Xu
イナン シュー,
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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2021089736A publication Critical patent/JP2021089736A/ja
Application granted granted Critical
Publication of JP7177812B2 publication Critical patent/JP7177812B2/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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache 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/32Address formation of the next instruction, e.g. by incrementing the instruction 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】キャッシュ命令の上書きがプロセッサの動作に与える影響を低減することができる命令プリフェッチ方法、装置、機器及び媒体を提供する。【解決手段】命令プリフェッチ方法は、プロセッサコアが対応するターゲットバッファから必要な命令を取得する前に、ターゲットバッファ内の命令をプリコンパイルするステップと、プリコンパイルした結果に基づいて、ターゲットバッファにジャンプ命令が存在し、且つジャンプ命令の分岐命令がターゲットバッファにキャッシュされていないと決定された場合、キャッシュされていない分岐命令を命令キャッシュからプロセッサコアに対応する候補バッファにプリフェッチして、プロセッサコアが候補バッファから分岐命令を取得するのを待つステップと、を含む。ターゲットバッファ及び候補バッファは、命令のプリフェッチ中に交互に多重化される。【選択図】図1

Description

本発明は、コンピュータ技術に関し、具体的に、データ記憶技術に関し、特に、命令プリフェッチ方法、装置、機器及び媒体に関する。
プリフェッチ命令操作は、プロセッサのパフォーマンスを向上させるために、様々なプロセッサで広く使われている。現在、マルチコアプロセッサに対して、主に次の2つの方式を採用してプリフェッチ命令操作を実現する。
方式1においては、各プロセッサコアに1レベルのレジスタキャッシュを追加することを採用し、当該キャッシュのサイズは通常、命令キャッシュ(icache)のキャッシュラインである。一度にicacheから複数の命令を読み取り、追加されたレジスタキャッシュに保存し、当該レジスタキャッシュの命令が使い果たされた後、続けてicacheから複数の命令を読み取る。各プロセッサコアで命令分岐ジャンプ等の操作が発生する場合、ジャンプアドレス(pc値)がレジスタキャッシュにないと、当該コアがicacheからレジスタキャッシュへ命令を再度読み取るのを待つ必要があり、長い遅延を引き起こして、プロセッサのパフォーマンスに影響する。また、レジスタキャッシュのサイズがicacheのキャッシュラインと一致すると、現在リードバックされる命令が以前にキャッシュされた命令を上書きすることを避けるために、次の命令のフェッチ操作を開始する前に、以前にキャッシュされた命令が使い果たされるのを待つ必要があるので、命令のフェッチ遅延がさらに増加される。
方式2においては、各プロセッサコアに1レベルのicacheを追加し、マルチコア競合の命令のフェッチ遅延を減少させ、各コアが自身のコア内のicacheから命令を読み取り、読み取られる命令がコア内のicacheにない場合、上位のicacheへ読み出し要求を開始する。しかしながら、各プロセッサコアに1レベルのicacheを追加すると、必ずプロセッサの全体の面積が増大し、プロセッサの加工製造コストが増加する。
本発明の実施例は、プロセッサの加工製造コストを増加することなしに、各プロセッサコアが命令をフィッチする効率を向上させ、命令をフェッチする時間遅延を低減し、キャッシュ命令の上書きがプロセッサの動作に与える影響を低減することができる命令プリフェッチ方法、装置、機器及び媒体を開示する。
第1の態様において、本発明の実施例は、命令プリフェッチ方法を開示し、当該方法は、プロセッサコアが対応するターゲットバッファから必要な命令を取得する前に、前記ターゲットバッファ内の命令をプリコンパイルするステップと、
プリコンパイルした結果に基づいて、前記ターゲットバッファにジャンプ命令が存在し、且つジャンプ命令の分岐命令が前記ターゲットバッファにキャッシュされていないと決定された場合、キャッシュされていない分岐命令を命令キャッシュから前記プロセッサコアに対応する候補バッファにプリフェッチして、前記プロセッサコアが前記候補バッファから前記分岐命令を取得するのを待つステップと、を含み、前記ターゲットバッファ及び前記候補バッファが、命令のプリフェッチ中に交互に多重化される。
上記の発明における一つの実施例は、命令プリコンパイル及び二つのバッファを動的に使用することによって、プロセッサの加工製造コストを増加せずに、各プロセッサコアが命令をフェッチする効率を向上させ、命令をフェッチする時間遅延を低減し、キャッシュ命令の上書きがプロセッサの動作に与える影響を低減する利点又は有益な効果を有する。
選択的に、前記キャッシュされていない分岐命令を命令キャッシュから前記プロセッサコアに対応する候補バッファにプリフェッチするステップが、前記キャッシュされていない分岐命令内の最小の命令アドレスを最初のアドレスとして、前記命令キャッシュから予め設定された数の命令をプリフェッチし、前記プロセッサコアに対応する候補バッファにキャッシュするステップを含み、前記キャッシュされていない分岐命令が、前記予め設定された数の命令に含まれる。
上記の発明における一つの実施例は、キャッシュされていない分岐命令内の最小の命令アドレスを最初のアドレスとすることにより、先に実行された分岐命令をプリフェッチすることを保証するうえに、できるだけより多くの必要な命令をプリフェッチすることができる利点又は有益な効果を有する。
選択的に、前記キャッシュされていない分岐命令を命令キャッシュから前記プロセッサコアに対応する候補バッファにプリフェッチするステップが、前記キャッシュされていない分岐命令が前記プロセッサコアに対応する候補バッファにキャッシュされているか否かを決定するステップと、いいえの場合、前記キャッシュされていない分岐命令を前記命令キャッシュから前記候補バッファにプリフェッチするステップと、を含む。
選択的に、前記プロセッサコアが前記候補バッファから前記分岐命令を取得する時に、現在の命令フェッチバッファ対象が前記ターゲットバッファから前記候補バッファに切り替え、対応的に、前記方法は、前記プロセッサコアが前記候補バッファから前記分岐命令を取得する前に、前記候補バッファ内の命令をプリコンパイルして、前記候補バッファ内にキャッシュされていない分岐命令を決定するステップをさらに含む。
選択的に、前記ターゲットバッファ内の命令をプリコンパイルするステップが、分岐ジャンプ予測アルゴリズムを使用して、前記ターゲットバッファ内の命令をプリコンパイルするステップを含む。
選択的に、前記ターゲットバッファ内の命令をプリコンパイルするステップの後に、前記方法は、予測失敗情報を受信した場合、前記プロセッサコアによるターゲットジャンプ命令の実行中に、前記ターゲットバッファのレジスタ及び前記候補バッファのレジスタにおいて命令アドレスマッチングを順次に実行し、前記ターゲットジャンプ命令の分岐命令が配置されているバッファを決定するステップをさらに含む。
上記の発明における一つの実施例は、同時に二つのバッファを採用して命令プリフェッチを実行するので、二つのバッファを交互に使用することによって、命令のプリフェッチ中に、できるだけ多くの命令を予めキャッシュすることができ、分岐命令予測失敗の状態があっても、分岐命令プリフェッチの状態を大幅にカバーすることができ、分岐命令を再度プリフェッチする待ち時間を減少することができる利点又は有益な効果を有する。
選択的に、前記方法は、前記命令アドレスマッチングに基づいて、前記ターゲットジャンプ命令の分岐命令がいずれも前記ターゲットバッファ及び前記候補バッファに存在しないと決定された場合、前記ターゲットジャンプ命令の分岐命令のアドレスを最初のアドレスとして、前記命令キャッシュから予め設定された数の命令をプリフェッチし、前記候補バッファにキャッシュするステップをさらに含む。
第2の態様において、本発明の実施例は、命令プリフェッチ装置を開示し、当該装置は、プロセッサコアが対応するターゲットバッファから必要な命令を取得する前に、前記ターゲットバッファ内の命令をプリコンパイルする命令プリコンパイルモジュールと、プリコンパイルした結果に基づいて、前記ターゲットバッファにジャンプ命令が存在し、且つジャンプ命令の分岐命令が前記ターゲットバッファにキャッシュされていないと決定された場合、キャッシュされていない分岐命令を命令キャッシュから前記プロセッサコアに対応する候補バッファにプリフェッチして、前記プロセッサコアが前記候補バッファから前記分岐命令を取得するのを待つ命令プリフェッチモジュールと、を備え、前記ターゲットバッファ及び前記候補バッファが、命令のプリフェッチ中に交互に多重化される。
第3の態様において、本発明の実施例は、電子機器をさらに開示し、当該電子機器は、少なくとも一つのプロセッサと、該少なくとも一つのプロセッサと通信可能に接続されるメモリと、を備え、前記メモリには、前記少なくとも一つのプロセッサによって実行可能な命令が記憶され、前記命令が前記少なくとも一つのプロセッサによって実行されることにより、前記少なくとも一つのプロセッサが本発明の実施例のいずれかに記載の命令プリフェッチ方法を実行する。
第4の態様において、本発明の実施例は、コンピュータ命令が記憶されている非一時的なコンピュータ読み取り可能な記憶媒体をさらに開示し、前記コンピュータ命令は、コンピュータに本発明の実施例のいずれかに記載の命令プリフェッチ方法を実行させる。
第5の態様において、本発明の実施例は、コンピュータプログラムをさらに開示し、前記コンピュータプログラムは、コンピュータに本発明の実施例のいずれかに記載の命令プリフェッチ方法を実行させる。
本発明の実施例の技術案によれば、プロセッサコアが対応するターゲットバッファから必要な命令を取得する前に、ターゲットバッファ内の命令をプリコンパイルし、ジャンプ命令及び対応する分岐命令を決定し、ターゲットバッファにキャッシュされていない分岐命令を予め候補バッファにキャッシュし、プロセッサコアが取得するのを待つことによって、従来の命令プリフェッチ形態における分岐命令のフェッチ遅延の問題を解決し、プロセッサの加工製造コストを増加せずに、各プロセッサコアが命令をフェッチする効率を向上させ、命令をフェッチする時間遅延を低減し、キャッシュ命令の上書きがプロセッサの動作に与える影響を低減し、さらにプロセッサのパフォーマンスを向上させる。上記の選択可能な形態が有する他の効果については、以下に具体的な実施例を組み合わせて説明する。
図面は、本技術案をよりよく理解するために使用され、本発明を限定するものではない。
本発明の実施例により開示される一つの命令プリフェッチ方法のフローチャートである。 本発明の実施例により開示されるもう一つの命令プリフェッチ方法のフローチャートである。 本発明の実施例により開示される一つの命令プリフェッチ装置の概略構成図である。 本発明の実施例により開示される一つの電子機器のブロック図である。
以下、図面に合わせて本発明の例示的な実施例を説明し、理解を容易にするために本発明の実施例の様々な詳細内容が含まれ、それらは単なる例示的なものと見なされるべきである。したがって、当業者は、本発明の範囲及び精神から逸脱することなく、本明細書で説明される実施例に対して様々な変更及び修正を行うことができる。同様に、わかりやすくかつ簡潔にするために、以下の説明では、周知の機能及び構造の説明を省略する。
図1は、本発明の実施例により開示される一つの命令プリフェッチ方法のフローチャートである。本実施例は、命令ジャンプの状況がある場合、プロセッサの各コアの命令読み取り遅延を低減することに適用される。本実施例の方法は、命令プリフェッチ装置によって実行することができ、当該装置は、ソフトウェア及び/又はハードウェアの方式を採用して実現することができ、コンピューティング機能を備える任意の電子機器に集積することができる。当該電子機器のプロセッサは、少なくとも一つのコアを備える。
本発明の実施例において、少なくとも一つのコアを備えるプロセッサに対して、事前に各コアに2つのバッファ(buffer)を設定し、それぞれターゲットバッファ及び候補バッファとして識別し、即ち、異なるプロセッサコアそれぞれは一つのターゲットバッファ及び一つの候補バッファに対応する。バッファは機器メモリ内の記憶領域であり、十分な使用可能なバッファを維持するために機器メモリを追加するが、プロセッサ自体の面積及び製造コストは増加しない。その中、ターゲットバッファとは、プロセッサコアの動作中に、プロセッサコアによって現在フェッチされているバッファ対象を指し、候補バッファは、ターゲットバッファにキャッシュされていない特定の命令を事前にキャッシュするためのものである。例えば、プロセッサコアは必要な命令を取得する前に、レジスタにおいて命令アドレスマッチングを行うことにより、現在の必要な命令が配置されているバッファを決定し、当該バッファを現在のターゲットバッファとする。命令の読み取り及び命令の処理が続くにつれて、二つのバッファの役割を交互に変換することができる。
プロセッサコアが命令をフェッチする必要がある場合に、先ず二つのバッファにアクセスすることにより必要な命令を取得し、二つのバッファに必要な命令が存在しないと決定された場合、上位の命令キャッシュ(icache)にアクセスすることにより、必要な命令を取得してバッファにキャッシュし、プロセッサコアが取得するのを待つ。ターゲットバッファと候補バッファそれぞれのサイズは、命令キャッシュのキャッシュライン(cacheline)に関連し、実際の必要に応じて設定することができる。例えば、命令キャッシュの一つのキャッシュラインに基づいて各バッファのサイズを設定することができる。本発明の実施例の説明を容易にするために、以下に具体的に一つのプロセッサコアを例として、本発明を例示的に説明する。
図1に示すように、本実施例により開示される命令プリフェッチ方法は、以下のようなステップを含むことができる。
S101において、プロセッサコアが対応するターゲットバッファから必要な命令を取得する前に、ターゲットバッファ内の命令をプリコンパイルする。
その中で、プリコンパイル或いはプリデコードとは、バッファ内の命令を予めコンパイルすることにより、バッファ内のどの命令がジャンプ命令に属するかを決定し、ジャンプ命令に対応する分岐命令を決定することである。ジャンプ命令とは、プロセッサコアが当該命令を実行した後、プロセッサコアをジャンプさせて関連する次の命令を実行させる特定の命令を指す。命令プリコンパイルによって決定されたジャンプ命令は、必然ジャンプ命令と予測ジャンプ命令とを含む。必然ジャンプ命令とは、当該命令を実行した後、必ず命令ジャンプを行う命令を指す。予測ジャンプ命令とは、当該命令を実行した後、一定の確率で命令ジャンプを行う、または、命令ジャンプが行われない可能性がある命令を指す。命令プリコンパイル或いはプリデコードの実現に関して、従来技術における任意の使用可能な命令プリコンパイル技術を使用することができる。例えば、プロセッサ内の命令プリデコーダによって命令プリコンパイルを行うことができ、従来技術における任意の使用可能な命令分岐予測アルゴリズムによって命令ジャンプの分岐命令を予測することができる。
本実施例において、ターゲットバッファ内の命令をプリコンパイルすることは、ターゲットバッファ内の各命令をプリコンパイルすること、或いは、アドレスがプロセッサコアの現在の必要な命令のアドレスと同じ命令、及びアドレスがプロセッサコアの現在の必要な命令のアドレスより大きい命令をコンパイルすることと、を含み、アドレスがプロセッサコアの現在の必要な命令のアドレス以上である命令から、ジャンプ命令があるか否かを決定する。各命令をプリコンパイルする過程で、並列コンパイルの方式を採用することができる。各プロセッサコアに二つのバッファを設けると同時に、二つのバッファにそれぞれレジスタを割り当てて、各バッファにキャッシュされた命令のアドレスを記録する。命令プリコンパイルによってターゲットバッファ内のジャンプ命令の分岐命令が決定された後、ターゲットバッファのレジスタにおいて命令アドレスマッチングを行うことにより、当該分岐命令がターゲットバッファにキャッシュされたか否かを決定する。
プロセッサコアが対応するターゲットバッファから必要な命令を取得する前に、ターゲットバッファ内の命令をプリコンパイルすることにより、必要な命令を実行する前に、少なくとも当該必要な命令を含む複数の命令をプリコンパイルし、ターゲットバッファにキャッシュされていない分岐命令をあらかじめ候補バッファにキャッシュして、分岐命令を取得する待ち時間を減少させ、命令をフェッチする時間遅延を低減する。また、命令をプリフェッチしてターゲットバッファ以外の別のバッファにキャッシュすることにより、ターゲットバッファ内の実行されていない命令を上書きすることを回避して、キャッシュ命令の上書きがプロセッサ動作に与える影響を低減することができる。
S102において、プリコンパイルした結果に基づいて、ターゲットバッファにジャンプ命令が存在し、且つジャンプ命令の分岐命令がターゲットバッファにキャッシュされていないと決定された場合、キャッシュされていない分岐命令を命令キャッシュからプロセッサコアに対応する候補バッファにプリフェッチして、プロセッサコアが候補バッファから分岐命令を取得するのを待つ。
具体的には、取得されていない又は実行されていないジャンプ命令に対応する分岐命令のうち、ターゲットバッファにキャッシュされていない命令を、予め上位の命令キャッシュから取得して候補バッファにキャッシュする。例示的に、ターゲットバッファと候補バッファは、それぞれbuffer0とbuffer1として示される。ターゲットバッファbuffer0には、命令アドレスが1〜16である合計16個の命令がキャッシュされている。プロセッサコアがターゲットバッファbuffer0からアドレスが9である必要な命令を取得する前に、命令プリコンパイルすることにより、アドレスが11、13、15である命令がジャンプ命令であると決定し、アドレスが11であるジャンプ命令に対応する分岐命令のアドレスは14であり、アドレスが13であるジャンプ命令に対応する分岐命令のアドレスは20であり、アドレスが15であるジャンプ命令に対応する分岐命令のアドレスは16である。アドレスマッチングにより、アドレスが20である分岐命令がターゲットバッファbuffer0にキャッシュされていないと決定し、命令プリフェッチの方式を採用して、アドレスが20である分岐命令を予め候補バッファbuffer1にキャッシュして、プロセッサコアがアドレスが13であるジャンプ命令を実行した後、命令フェッチバッファ対象をターゲットバッファbuffer0から候補バッファbuffer1に切り替え、候補バッファbuffer1からアドレスが20である分岐命令を取得するようにする。バッファが切り替えた後、候補バッファbuffer1が新しいターゲットバッファに相当し、ターゲットバッファbuffer0が新しい候補バッファに相当する。即ち、本実施例において、ターゲットバッファ及び候補バッファは、命令プリフェッチプロセス中に交互に多重化される。
選択的に、プロセッサコアが候補バッファから分岐命令を取得する時、現在の命令フェッチバッファ対象がターゲットバッファから候補バッファに切り替える。同様に、本実施例の方法は、プロセッサコアが候補バッファから分岐命令を取得する前に、候補バッファ内の命令をプリコンパイルして、候補バッファ内にキャッシュされていない分岐命令を決定することをさらに含む。即ち、バッファが切り替えた後、切り替える前の候補バッファが新しいターゲットバッファになって、候補バッファにおいて上記の動作S101〜S102を繰り返し実行して、再度分岐命令をプリフェッチする。プロセッサが命令をフェッチする動作が実行するにつれて、命令ジャンプが存在する場合、ターゲットバッファと候補バッファの役割は動的に切り替え、二つのバッファの間で命令のプリコンパイルと分岐命令のプリフェッチ動作が循環的に実行される。
選択的に、キャッシュされていない分岐命令を命令キャッシュからプロセッサコアに対応する候補バッファにプリフェッチするステップが、キャッシュされていない分岐命令内の最小の命令アドレスを最初のアドレスとして、命令キャッシュから予め設定された数の命令をプリフェッチし、プロセッサコアに対応する候補バッファにキャッシュするステップを含む。その中で、キャッシュされていない分岐命令は予め設定された数の命令に含まれる。
上記の例を引き続き例として、アドレスがそれぞれ14、20、16である三つの分岐命令のうち、アドレス20を最初のアドレスとして、命令キャッシュからアドレスが20〜35である合計16個の命令をプリフェッチし、候補バッファにキャッシュする。キャッシュされていない分岐命令内の最小の命令アドレスを最初のアドレスとすることにより、先に実行された分岐命令をプリフェッチすることを保証したうえに、できるだけ多くの必要な命令をプリフェッチすることができる。毎回プリフェッチされる命令の数は当該命令キャッシュのキャッシュラインに関連し、例えば、毎回プリフェッチされる命令の数は、当該命令キャッシュの一つのキャッシュラインによって決定される。命令キャッシュ内の命令が命令アドレスのサイズの順に記憶され、その中から命令をプリフェッチする時に、命令をフェッチする最初のアドレスに基づいて順次にプリフェッチする。
なお、本実施例において、候補バッファに分岐命令を記憶する前に、候補バッファに実行されていない命令が存在する場合、通常、当該実行されていない命令を無用の命令として、当該実行されていない命令を上書きすることができ、プロセッサの通常の動作に影響しない。
上記の技術案に基づいて、選択的に、キャッシュされていない分岐命令を命令キャッシュからプロセッサコアに対応する候補バッファにプリフェッチするステップが、キャッシュされていない分岐命令がプロセッサコアに対応する候補バッファにキャッシュされているか否かを決定するステップと、いいえの場合に、キャッシュされていない分岐命令を命令キャッシュから候補バッファにプリフェッチするステップと、を含む。
ターゲットバッファと候補バッファが交互に使用され、ターゲットバッファから命令を取得する前に、候補バッファに一部の命令がキャッシュされている可能性があるので、ターゲットバッファ内の命令をプリコンパイルすることにより、ジャンプ命令及び対応する分岐命令を決定し、ターゲットバッファにキャッシュされていない分岐命令を決定した後、さらに候補バッファのレジスタにおいてアドレスマッチングを行い、前記キャッシュされていない分岐命令が候補バッファにキャッシュされているか否かを決定し、候補バッファにキャッシュされていると決定された場合、現在命令プリフェッチ動作を行うの必要がなく、続けてターゲットバッファから命令を取得し、候補バッファにもキャッシュされていないと決定された場合、命令プリフェッチ動作を実行し、当該キャッシュされていない分岐命令を命令キャッシュから候補バッファにプリフェッチする。
また、ターゲットバッファ内の命令をプリコンパイルして、ターゲットバッファにジャンプ命令が存在しないと決定された場合、ターゲットバッファ内の命令アドレスが最大の命令に基づいて、命令キャッシュから予め設定された数の命令を順次にプリフェッチし、候補バッファにキャッシュする。上記の例を引き続き例として、ターゲットバッファbuffer0に命令アドレスが1〜16である合計16個の命令がキャッシュされ、命令プリコンパイルすることにより、ターゲットバッファbuffer0にジャンプ命令が存在しないと決定されると、命令キャッシュからアドレスが17〜32である合計16個の命令を順次にプリフェッチし、候補バッファにキャッシュする。
本発明の実施例の技術案によれば、プロセッサコアが対応するターゲットバッファから必要な命令を取得する前に、ターゲットバッファ内の命令をプリコンパイルして、ジャンプ命令及び対応する分岐命令を決定し、ターゲットバッファにキャッシュされていない分岐命令を予め候補バッファにキャッシュし、プロセッサコアが取得するのを待つことによって、従来の命令プリフェッチ形態における分岐命令の取得遅延の問題を解決し、二つのバッファを動的に使用することによって、プロセッサの加工製造コストを増加せずに、各プロセッサコアが命令をフェッチする効率を向上させ、命令をフェッチする時間遅延を低減し、キャッシュ命令の上書きがプロセッサ動作に与える影響を低減し、プロセッサのパフォーマンスを向上させる。
図2は、本発明の実施例により開示されるもう一つの命令プリフェッチ方法のフローチャートである。上記の実施形態に基づいてさらに最適化及び拡張し、上記の選択可能な各実施形態と組み合わせることができる。図2に示すように、本実施例の方法は、以下のステップを含むことができる。
S201において、プロセッサコアが対応するターゲットバッファから必要な命令を取得する前に、分岐ジャンプ予測アルゴリズムを使用して、ターゲットバッファ内の命令をプリコンパイルする。
S202において、予測失敗情報を受信した場合、プロセッサコアによるターゲットジャンプ命令の実行中、ターゲットバッファのレジスタ及び候補バッファのレジスタにおいて命令アドレスマッチングを順番に実行して、ターゲットジャンプ命令の分岐命令が配置されているバッファを決定する。
本実施例において、命令プリコンパイルすることによって決定されたジャンプ命令は、必然ジャンプ命令と予測ジャンプ命令とを含む。必然ジャンプ命令とは、当該命令を実行した後、必ず命令ジャンプを行う命令を指す。予測ジャンプ命令とは、当該命令を実行した後、一定の確率で命令ジャンプを行う、又は命令ジャンプが行われない可能性がある命令を指す。
ターゲット命令とは、分岐ジャンプ予測アルゴリズムを使用して分岐命令予測を行って失敗し、実際にはジャンプ命令タイプに属する命令を指す。現在のプロセッサコアが命令をフェッチするバッファ対象はターゲットバッファであるので、ターゲットジャンプ命令の実行中、先ずターゲットバッファに当該ターゲットジャンプ命令の分岐命令がキャッシュされているか否かを決定することを選択でき、はいの場合、直接にターゲットバッファから必要な分岐命令を取得し、いいえの場合、続けて候補バッファにおいて決定する。ターゲットジャンプ命令の分岐命令が候補バッファにキャッシュされていると決定された場合、命令フェッチバッファ対象をターゲットバッファから候補バッファに切り替え、即ち候補バッファが新しいターゲットバッファになり、同時に、候補バッファから必要な命令を取得する前に、候補バッファ内の命令をプリコンパイルし分岐命令プリフェッチ動作を行う。
本実施例において、同時に二つのバッファを採用して命令プリフェッチを実行するので、二つのバッファを交互に使用することによって、命令のプリフェッチ中に、できるだけ多くの命令を予めキャッシュすることができ、分岐命令予測失敗の状態があっても、分岐命令プリフェッチの状態を大幅にカバーすることができ、分岐命令を再度プリフェッチする待ち時間を減少する。
さらに、本実施例の方法は、命令アドレスマッチングによって、ターゲットジャンプ命令の分岐命令がいずれもターゲットバッファ及び候補バッファに存在しないと決定された場合、即ちターゲットバッファ及び候補バッファのいずれにも当該分岐命令がキャッシュされていない場合、ターゲットジャンプ命令の分岐命令のアドレスを最初のアドレスとして、命令キャッシュから予め設定された数の命令をプリフェッチし、候補バッファにキャッシュし、候補バッファにキャッシュされている命令の切り替えを含むステップを含む。予め設定された数の命令のフェッチは適宜的に設定できる。
また、二つのバッファのレジスタにおいてアドレスマッチングを行うことにより、プロセッサコアの現在の必要な命令がターゲットバッファにキャッシュされていなく、候補バッファにもキャッシュされていないと決定された場合、命令プリフェッチ装置は、プロセッサコアの必要な命令に基づいて、命令キャッシュへ一つの命令フェッチ要求を送信して、命令キャッシュから必要な命令を読み取って候補バッファにキャッシュするようになる。前の命令フェッチ要求に基づいて命令をフェッチする過程に、命令フェッチ要求を送信することから必要な命令をフェッチするまでの過程を含み、命令プリフェッチ装置がもう一つの命令フェッチ要求を生成した場合、後に生成された命令フェッチ要求に含まれる命令アドレスが前の命令フェッチ要求に含まれる命令アドレスと一致するか否かを判断し、一致する場合、後の命令フェッチ要求を繰り返し送信する必要がないので、命令フェッチ要求を繰り返し送信することを回避して、命令をフェッチする効率を向上させる。
本実施例の技術案によれば、同時に二つのバッファを採用して命令プリフェッチを実行するので、二つのバッファを交互に使用することにより、命令のプリフェッチ中に、できるだけ多くの命令を予めキャッシュすることができ、分岐命令の予測失敗の状態があっても、分岐命令プリフェッチの状態を大幅にカバーすることができ、ターゲットバッファのレジスタ及び候補バッファのレジスタにおいて命令アドレスマッチングを順番に実行し、ターゲットジャンプ命令の分岐命令が配置されているバッファを決定するので、分岐命令を再度プリフェッチする待ち時間を減少し、命令をフェッチする効率を向上させる。
図3は、本発明の実施例により開示される一つの命令プリフェッチ装置の概略構成図である。本実施例は、命令ジャンプの状態がある場合、プロセッサの各コアの命令の読み取り遅延を低減することに適用することができる。本実施例の装置は、ソフトウェア及び/又はハードウェアの方式を採用して実現することができ、コンピューティング機能を具備する任意の電子機器に集積することができる。当該電子機器のプロセッサは、少なくとも一つのコアを備える。
図3に示すように、本実施例により開示される命令プリフェッチ装置300は、命令プリコンパイルモジュール301と、命令プリフェッチモジュール302とを備える。
命令プリコンパイルモジュール301は、プロセッサコアが対応するターゲットバッファから必要な命令を取得する前に、ターゲットバッファ内の命令をプリコンパイルするものであり、命令プリフェッチモジュール302は、プリコンパイルした結果に基づいて、ターゲットバッファにジャンプ命令が存在し、且つジャンプ命令の分岐命令がターゲットバッファにキャッシュされていないと決定された場合、キャッシュされていない分岐命令を命令キャッシュからプロセッサコアに対応する候補バッファにプリフェッチして、プロセッサコアが候補バッファから分岐命令を取得するの待つものであり、その中で、ターゲットバッファ及び候補バッファは、命令のプリフェッチ中に交互に多重化される。
選択的に、命令プリフェッチモジュール302は、具体的に、プリコンパイルした結果に基づいて、ターゲットバッファにジャンプ命令が存在し、且つジャンプ命令の分岐命令がターゲットバッファにキャッシュされていないと決定された場合、キャッシュされていない分岐命令内の最小の命令アドレスを最初のアドレスとして、命令キャッシュから予め設定された数の命令をプリフェッチし、プロセッサコアに対応する候補バッファにキャッシュする。その中で、キャッシュされていない分岐命令は、予め設定された数の命令に含まれる。
選択的に、命令プリフェッチモジュール302は、具体的に、プリコンパイルした結果に基づいて、ターゲットバッファにジャンプ命令が存在し、且つジャンプ命令の分岐命令がターゲットバッファにキャッシュされていないと決定された場合、キャッシュされていない分岐命令がプロセッサコアに対応する候補バッファにキャッシュされているか否かを決定し、いいえの場合、キャッシュされていない分岐命令を命令キャッシュから候補バッファにプリフェッチする。
選択的に、プロセッサコアが候補バッファから分岐命令を取得する時、現在の命令フェッチバッファ対象がターゲットバッファから候補バッファに切り替え、 対応的に、命令プリコンパイルモジュール301は、さらに、プロセッサコアが候補バッファから分岐命令を取得する前に、候補バッファ内の命令をプリコンパイルして、候補バッファ内にキャッシュされていない分岐命令を決定する。
選択的に、命令プリコンパイルモジュール301は、具体的に、分岐ジャンプ予測アルゴリズムを使用して、ターゲットバッファ内の命令をプリコンパイルする。
選択的に、本実施例の装置は、命令プリコンパイルモジュール301がターゲットバッファ内の命令をプリコンパイルする動作を実行した後、予測失敗情報を受信した場合、プロセッサコアによるターゲットジャンプ命令の実行中に、ターゲットバッファのレジスタ及び候補バッファのレジスタにおいて命令アドレスマッチングを順番に実行し、ターゲットジャンプ命令の分岐命令が配置されているバッファを決定するためのバッファ決定モジュール、をさらに備える。
選択的に、命令プリフェッチモジュール302は、さらに、命令アドレスマッチングに基づいて、ターゲットジャンプ命令の分岐命令がいずれもターゲットバッファ及び候補バッファに存在しないと決定された場合、ターゲットジャンプ命令の分岐命令のアドレスを最初のアドレスとして、命令キャッシュから予め設定された数の命令をプリフェッチし、候補バッファにキャッシュする。
本発明の実施例により開示される命令プリフェッチ装置300は、本発明の実施例により開示される命令プリフェッチ方法を実行することができ、実行方法に対応する機能モジュールと有益な効果を備える。本実施例で詳細に説明されていない内容は、本発明の任意の方法の実施例の説明を参照することができる。
本発明の実施例によれば、本発明は、電子機器及び読み取り可能な記憶媒体をさらに提供する。
また、本発明の実施例は、コンピュータプログラムをさらに提供し、前記コンピュータプログラムは、コンピュータに本発明の実施例のいずれかに記載の命令プリフェッチ方法を実行させる。
図4に示すように、図4は、本発明の実施例の命令プリフェッチ方法を実施するための電子機器のブロック図である。電子機器は、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレームコンピュータ、及び他の適切なコンピュータなどの様々な形式のデジタルコンピュータを表すことを目的とする。電子機器は、パーソナルデジタルプロセッサ、携帯電話、スマートフォン、ウェアラブルデバイス、他の類似するコンピューティングデバイスなどの様々な形式のモバイルデバイスを表すこともできる。本明細書で示されるコンポーネント、それらの接続と関係、及びそれらの機能は単なる例であり、本明細書の説明及び/又は要求される本発明の実施例の実現を制限するものではない。
図4に示すように、当該電子機器は、一つ又は複数のプロセッサ401と、メモリ402と、各コンポーネントを接続するための、高速インターフェース及び低速インターフェースを含むインターフェースと、を備える。各コンポーネントは、異なるバスで相互に接続され、共通のマザーボードに取り付けられるか、又は必要に応じて他の方式で取り付けることができる。プロセッサは、電子機器内に実行される命令を処理することができ、当該命令は、外部の入力/出力装置(インターフェースに結合されたディスプレイデバイスなど)にグラフィカルユーザインターフェース(Graphical User Interface、GUI)のグラフィカル情報を表示するためにメモリ内又はメモリに記憶されている命令を含む。他の実施方式において、必要によって、複数のプロセッサ及び/又は複数のバスを、複数のメモリと一緒に使用することができる。同様に、複数の電子機器を接続することができ、各機器は、一部の必要な動作を提供することができ、例えば、サーバアレイ、1グループのブレードサーバ、又はマルチプロセッサシステムなどである。図4では、一つのプロセッサ401を例とする。
メモリ402は、本発明の実施例により提供される非一時的なコンピュータ読み取り可能な記憶媒体である。その中で、前記メモリには、少なくとも一つのプロセッサによって実行可能な命令が記憶され、前記少なくとも一つのプロセッサが本発明の実施例によって提供される命令プリフェッチ方法を実行するようにする。本発明の実施例の非一時的なコンピュータ読み取り可能な記憶媒体には、コンピュータに本発明の実施例によって提供される命令プリフェッチ方法を実行させるためのコンピュータ命令が記憶されている。
メモリ402は、非一時的なコンピュータ読み取り可能な記憶媒体として、本発明の実施例における命令プリフェッチ方法に対応するプログラム命令/モジュールなどの、非一時的なソフトウェアプログラム、非一時的なコンピュータ実行可能なプログラム及びモジュールを記憶するために用いられ、例えば、図3に示す命令プリコンパイルモジュール301及び命令プリフェッチモジュール302である。プロセッサ401は、メモリ402に記憶されている非一時的なソフトウェアプログラム、命令及びモジュールを実行することによって、サーバの様々な機能アプリケーション及びデータ処理を実行し、すなわち上記の方法の実施例における命令プリフェッチ方法を実現する。
メモリ402は、ストレージプログラムエリアとストレージデータエリアとを含むことができ、ストレージプログラムエリアは、オペレーティングシステム、少なくとも一つの機能に必要なアプリケーションプログラムを記憶することができ、ストレージデータエリアは、命令プリフェッチ方法を実現するための電子機器の使用によって作成されたデータなどを記憶することができる。また、メモリ402は、高速ランダムアクセスメモリを含むことができ、非一時的なメモリをさらに含むことができ、例えば、少なくとも一つの磁気ディスクストレージデバイス、フラッシュメモリデバイス、又は他の非一時的なソリッドステートストレージデバイスである。いくつかの実施例で、メモリ402は、プロセッサ401に対して遠隔に設置されたメモリを選択的に含むことができ、これらの遠隔メモリは、ネットワークを介して本発明の実施例における命令プリフェッチ方法を実現するための電子機器に接続されることができる。上記のネットワークの例は、インターネット、イントラネット、ローカルエリアネットワーク、モバイル通信ネットワーク、及びそれらの組み合わせを含むが、これらに限定されない。
本発明の実施例における命令プリフェッチ方法を実現するための電子機器は、入力装置403と出力装置404とをさらに備えることができる。プロセッサ401、メモリ402、入力装置403、及び出力装置404は、バス又は他の方式を介して接続することができ、図4では、バスを介して接続することを例とする。
入力装置403は、入力された数字又は文字情報を受信し、本発明の実施例における命令プリフェッチ方法を実現するための電子機器のユーザ設定及び機能制御に関するキー信号入力を生成することができ、例えば、タッチスクリーン、キーパッド、マウス、トラックパッド、タッチパッド、ポインティングスティック、一つ又は複数のマウスボタン、トラックボール、ジョイスティックなどの入力装置である。出力装置404は、ディスプレイデバイス、補助照明装置、及び触覚フィードバックデバイスなどを含むことができ、補助照明装置は、例えば発光ダイオード(Liquid Crystal Display、LED)などであり、触覚フィードバックデバイスは、例えば振動モータなどである。当該ディスプレイデバイスは、液晶ディスプレイ(Liquid Crystal Display、LCD)、LEDディスプレイ、及びプラズマディスプレイを含むことができるが、これらに限定されない。いくつかの実施方式で、ディスプレイデバイスは、タッチスクリーンであってもよい。
本明細書で説明されるシステム及び技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はそれらの組み合わせで実現することができる。これらの様々な実施形態は、一つ又は複数のコンピュータプログラムで実施されることを含むことができ、当該一つ又は複数のコンピュータプログラムは、少なくとも一つのプログラマブルプロセッサを含むプログラマブルシステムで実行及び/又は解釈されることができ、当該プログラマブルプロセッサは、専用又は汎用のプログラマブルプロセッサであってもよく、ストレージシステム、少なくとも一つの入力装置、及び少なくとも一つの出力装置からデータ及び命令を受信し、データ及び命令を当該ストレージシステム、当該少なくとも一つの入力装置、及び当該少なくとも一つの出力装置に伝送することができる。
これらのコンピューティングプログラムは、プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとも呼ばれ、プログラマブルプロセッサの機械命令を含み、高レベルの手順及び/又はオブジェクト指向のプログラミング言語、及び/又はアセンブリ/機械言語でこれらのコンピューティングプログラムを実施することができる。本明細書に使用されるような「機械読み取り可能な媒体」及び「コンピュータ読み取り可能な媒体」との用語は、機械命令及び/又はデータをプログラマブルプロセッサに提供するための任意のコンピュータプログラム製品、機器、及び/又は装置、例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(Programmable Logic Device、PLD)を指し、機械読み取り可能な信号である機械命令を受信する機械読み取り可能な媒体を含む。「機械読み取り可能な信号」との用語は、機械命令及び/又はデータをプログラマブルプロセッサに提供するための任意の信号を指す。
ユーザとのインタラクションを提供するために、コンピュータ上で、ここで説明されたシステム及び技術を実施することができ、当該コンピュータは、陰極線管(Cathode Ray Tube、CRT)又はLCDモニタなどのユーザに情報を表示するためのディスプレイ装置と、マウス又はトラックボールなどのキーボード及びポインティングデバイスとを具備し、ユーザは、当該キーボード及び当該ポインティングデバイスによって入力をコンピュータに提供することができる。他の種類の装置も、ユーザとのインタラクションを提供することができ、例えば、ユーザに提供するフィードバックは、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックなどの任意の形態のセンシングフィードバックであってもよく、音響入力と、音声入力と、触覚入力とを含む任意の形態でユーザからの入力を受信することができる。
ここで説明されるシステム及び技術は、データサーバなどのバックエンドコンポーネントを含むコンピューティングシステムで実施することができ、又はアプリケーションサーバーなどのミドルウェアコンポーネントを含むコンピューティングシステムで実施することができ、又はフロントエンドコンポーネントを含むコンピューティングシステムで実施することができ、例えば、グラフィカルユーザインタフェース又はウェブブラウザを有するユーザコンピュータであり、ユーザは、当該グラフィカルユーザインタフェース又は当該ウェブブラウザによってここで説明されるシステム及び技術の実施形態とインタラクションし、又はこのようなバックエンドコンポーネントと、ミドルウェアコンポーネントと、フロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムで実施することができる。通信ネットワークなどの任意の形態又は媒体のデジタルデータ通信によって、システムのコンポーネントを相互に接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(Local Area Network、LAN)と、ワイドエリアネットワーク(Wide Area Network、WAN)と、インターネットとを含む。
コンピュータシステムは、クライアントとサーバとを含むことができる。クライアントとサーバは、通常、互いに離れており、通信ネットワークを介してインタラクションする。対応するコンピュータ上で実行され、且つ互いにクライアント-サーバ関係を有するコンピュータプログラムによって、クライアントとサーバとの関係が生成される。
本発明の実施例の技術案によれば、プロセッサコアが対応するターゲットバッファから必要な命令を取得する前に、ターゲットバッファ内の命令をプリコンパイルし、ジャンプ命令及び対応する分岐命令を決定し、ターゲットバッファにキャッシュされていない分岐命令を予め候補バッファにキャッシュし、プロセッサコアが取得するのを待つことによって、従来の命令プリフェッチ形態における分岐命令の取得遅延の問題を解決し、二つのバッファを動的に使用することによって、プロセッサの加工製造コストを増加せずに、各プロセッサコアが命令をフェッチする効率を向上させ、命令をフェッチする時間遅延を低減し、キャッシュ命令の上書きがプロセッサの動作に与える影響を低減する。
上記に示される様々な形式のフローを使用して、ステップを並べ替え、追加、又は削除することができる。例えば、本発明に記載されている各ステップは、並列に実行されてもよいし、順次に実行されてもよいし、異なる順序で実行されてもよく、本発明で開示されている技術案が所望の結果を実現することができれば、本明細書では限定しない。
上記の具体的な実施形態は、本発明の保護範囲に対する制限を構成するものではない。当業者は、設計要求及び他の要因に応じて、様々な修正、組み合わせ、サブコンビネーション、及び置換を行うことができる。本発明の精神と原則内で行われた任意の修正、同等の置換、及び改善などは、いずれも本発明の保護範囲内に含まれるべきである。

Claims (11)

  1. プロセッサコアが対応するターゲットバッファから必要な命令を取得する前に、前記ターゲットバッファ内の命令をプリコンパイルするステップと、
    プリコンパイルした結果に基づいて、前記ターゲットバッファにジャンプ命令が存在し、且つジャンプ命令の分岐命令が前記ターゲットバッファにキャッシュされていないと決定された場合、キャッシュされていない分岐命令を命令キャッシュから前記プロセッサコアに対応する候補バッファにプリフェッチして、前記プロセッサコアが前記候補バッファから前記分岐命令を取得するのを待つステップと、
    を含み、
    前記ターゲットバッファ及び前記候補バッファが、命令のプリフェッチ中に交互に多重化される命令プリフェッチ方法。
  2. 前記キャッシュされていない分岐命令を命令キャッシュから前記プロセッサコアに対応する候補バッファにプリフェッチするステップが、前記キャッシュされていない分岐命令内の最小の命令アドレスを最初のアドレスとして、前記命令キャッシュから予め設定された数の命令をプリフェッチし、前記プロセッサコアに対応する候補バッファにキャッシュするステップを含み、
    前記キャッシュされていない分岐命令が、前記予め設定された数の命令に含まれる請求項1に記載の命令プリフェッチ方法。
  3. 前記キャッシュされていない分岐命令を命令キャッシュから前記プロセッサコアに対応する候補バッファにプリフェッチするステップが、
    前記キャッシュされていない分岐命令が前記プロセッサコアに対応する候補バッファにキャッシュされているか否かを決定するステップと、
    いいえの場合に、前記キャッシュされていない分岐命令を前記命令キャッシュから前記候補バッファにプリフェッチするステップと、
    を含む請求項1に記載の命令プリフェッチ方法。
  4. 前記プロセッサコアが前記候補バッファから前記分岐命令を取得する時に、現在の命令フェッチバッファ対象が前記ターゲットバッファから前記候補バッファに切り替え、対応的に、
    前記プロセッサコアが前記候補バッファから前記分岐命令を取得する前に、前記候補バッファ内の命令をプリコンパイルして、前記候補バッファ内にキャッシュされていない分岐命令を決定するステップを含む請求項1に記載の命令プリフェッチ方法。
  5. 前記ターゲットバッファ内の命令をプリコンパイルするステップが、分岐ジャンプ予測アルゴリズムを使用して、前記ターゲットバッファ内の命令をプリコンパイルするステップを含む請求項1に記載の命令プリフェッチ方法。
  6. 前記ターゲットバッファ内の命令をプリコンパイルするステップの後に、
    予測失敗情報を受信した場合、前記プロセッサコアによるターゲットジャンプ命令の実行中に、前記ターゲットバッファのレジスタ及び前記候補バッファのレジスタにおいて命令アドレスマッチングを順次に実行し、前記ターゲットジャンプ命令の分岐命令が配置されているバッファを決定するステップを含む請求項5に記載の命令プリフェッチ方法。
  7. 前記命令アドレスマッチングに基づいて、前記ターゲットジャンプ命令の分岐命令がいずれも前記ターゲットバッファ及び前記候補バッファに存在しないと決定された場合、前記ターゲットジャンプ命令の分岐命令のアドレスを最初のアドレスとして、前記命令キャッシュから予め設定された数の命令をプリフェッチし、前記候補バッファにキャッシュするステップを含む請求項6に記載の命令プリフェッチ方法。
  8. プロセッサコアが対応するターゲットバッファから必要な命令を取得する前に、前記ターゲットバッファ内の命令をプリコンパイルする命令プリコンパイルモジュールと、
    プリコンパイルした結果に基づいて、前記ターゲットバッファにジャンプ命令が存在し、且つジャンプ命令の分岐命令が前記ターゲットバッファにキャッシュされていないと決定された場合、キャッシュされていない分岐命令を命令キャッシュから前記プロセッサコアに対応する候補バッファにプリフェッチして、前記プロセッサコアが前記候補バッファから前記分岐命令を取得するのを待つ命令プリフェッチモジュールと、
    を備え、
    前記ターゲットバッファ及び前記候補バッファが、命令のプリフェッチ中に交互に多重化される命令プリフェッチ装置。
  9. 少なくとも一つのプロセッサと、
    該少なくとも一つのプロセッサと通信可能に接続されるメモリと、
    を備え、
    前記メモリには、前記少なくとも一つのプロセッサによって実行可能な命令が記憶され、
    前記命令が前記少なくとも一つのプロセッサによって実行されることによって、前記少なくとも一つのプロセッサが請求項1から7のいずれか一項に記載の命令プリフェッチ方法を実行する電子機器。
  10. コンピュータ命令が記憶されている非一時的なコンピュータ読み取り可能な記憶媒体であって、
    前記コンピュータ命令が、コンピュータに請求項1から7のいずれか一項に記載の命令プリフェッチ方法を実行させる非一時的なコンピュータ読み取り可能な記憶媒体。
  11. コンピュータに請求項1から7のいずれか一項に記載の命令プリフェッチ方法を実行させるコンピュータプログラム。
JP2020201010A 2019-12-04 2020-12-03 命令プリフェッチ方法、装置、機器及び媒体 Active JP7177812B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201911225633.1 2019-12-04
CN201911225633.1A CN112905237A (zh) 2019-12-04 2019-12-04 指令预取方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
JP2021089736A true JP2021089736A (ja) 2021-06-10
JP7177812B2 JP7177812B2 (ja) 2022-11-24

Family

ID=73698568

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020201010A Active JP7177812B2 (ja) 2019-12-04 2020-12-03 命令プリフェッチ方法、装置、機器及び媒体

Country Status (5)

Country Link
US (1) US11327762B2 (ja)
EP (1) EP3832458A1 (ja)
JP (1) JP7177812B2 (ja)
KR (1) KR102382751B1 (ja)
CN (1) CN112905237A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115827252B (zh) * 2023-01-10 2023-05-05 南京砺算科技有限公司 顶点数据处理方法、图形处理器、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05313894A (ja) * 1992-05-11 1993-11-26 Fuji Xerox Co Ltd 情報処理装置
JPH0877000A (ja) * 1994-08-04 1996-03-22 Internatl Business Mach Corp <Ibm> スーパースカラ・プロセッサの電力消費を減少させる回路及び方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4532589A (en) * 1981-12-02 1985-07-30 Hitachi, Ltd. Digital data processor with two operation units
JPH0769812B2 (ja) * 1987-12-29 1995-07-31 富士通株式会社 データ処理装置
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
US5664135A (en) * 1994-09-28 1997-09-02 Hewlett-Packard Company Apparatus and method for reducing delays due to branches
US6157988A (en) 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US7134004B1 (en) * 1999-09-29 2006-11-07 Fujitsu Limited Processing device for buffering sequential and target sequences and target address information for multiple branch instructions
US6604191B1 (en) * 2000-02-04 2003-08-05 International Business Machines Corporation Method and apparatus for accelerating instruction fetching for a processor
ITMI20061473A1 (it) 2006-07-26 2008-01-27 Indena Spa Derivati della camptotecina ad attivita antitumorale
CN100449481C (zh) * 2007-06-29 2009-01-07 东南大学 具有多通道指令预取功能的存储控制电路
GB201701841D0 (en) * 2017-02-03 2017-03-22 Univ Edinburgh Branch target buffer for a data processing apparatus
CN107943518B (zh) * 2017-11-24 2021-07-16 中国航空工业集团公司西安航空计算技术研究所 一种局部跳转指令取指电路

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05313894A (ja) * 1992-05-11 1993-11-26 Fuji Xerox Co Ltd 情報処理装置
JPH0877000A (ja) * 1994-08-04 1996-03-22 Internatl Business Mach Corp <Ibm> スーパースカラ・プロセッサの電力消費を減少させる回路及び方法

Also Published As

Publication number Publication date
KR102382751B1 (ko) 2022-04-04
CN112905237A (zh) 2021-06-04
JP7177812B2 (ja) 2022-11-24
KR20210070172A (ko) 2021-06-14
US20210173653A1 (en) 2021-06-10
EP3832458A1 (en) 2021-06-09
US11327762B2 (en) 2022-05-10

Similar Documents

Publication Publication Date Title
JP6744423B2 (ja) プロセッサベースシステム内のロード経路履歴に基づくアドレス予測テーブルを使用したロードアドレス予測の実現
CN105378683B (zh) 用于在计算系统处的软件程序中便于动态和高效地管理转换缓冲器预取的机制
US11586542B2 (en) Reducing cache transfer overhead in a system
KR102483299B1 (ko) 순환 명령의 처리 방법, 장치, 기기와 저장매체
RU2483347C2 (ru) Установка, способ и система кэширования
US10970214B2 (en) Selective downstream cache processing for data access
JP7149365B2 (ja) 検索方法、検索装置、電子機器及び記憶媒体
JP2023529947A (ja) 命令送信方法、命令送信装置、電子機器、記憶媒体およびコンピュータプログラム
JP7177812B2 (ja) 命令プリフェッチ方法、装置、機器及び媒体
US11561796B2 (en) Linked miss-to-miss instruction prefetcher
US9158696B2 (en) Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses
US10691604B2 (en) Minimizing cache latencies using set predictors
US11194724B2 (en) Process data caching through iterative feedback
US10649912B2 (en) Method and apparatus for an efficient TLB lookup
JP6828528B2 (ja) 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
US11907724B2 (en) In-memory trace with overlapping processing and logout
US11157285B2 (en) Dynamic modification of instructions that do not modify the architectural state of a processor
US9552293B1 (en) Emulating eviction data paths for invalidated instruction cache
US20220308930A1 (en) Provisioning pluggable smart services for browser-based smart editing tools
US11151054B2 (en) Speculative address translation requests pertaining to instruction cache misses
CN114281715A (zh) 缓存合成预取方法、装置、处理器以及电子设备
KR20210109014A (ko) 명령어 밀접 결합된 메모리 및 명령어 캐시 액세스 예측

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201203

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20211018

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220328

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221013

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20221013

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20221024

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20221025

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221111

R150 Certificate of patent or registration of utility model

Ref document number: 7177812

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150