JP6911102B2 - アドレス生成時のロード及びストアキューの割り当てのためのシステム及び方法 - Google Patents

アドレス生成時のロード及びストアキューの割り当てのためのシステム及び方法 Download PDF

Info

Publication number
JP6911102B2
JP6911102B2 JP2019508265A JP2019508265A JP6911102B2 JP 6911102 B2 JP6911102 B2 JP 6911102B2 JP 2019508265 A JP2019508265 A JP 2019508265A JP 2019508265 A JP2019508265 A JP 2019508265A JP 6911102 B2 JP6911102 B2 JP 6911102B2
Authority
JP
Japan
Prior art keywords
micro
queue
store
load
dispatch
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
JP2019508265A
Other languages
English (en)
Other versions
JP2019525351A (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 JP2019525351A publication Critical patent/JP2019525351A/ja
Application granted granted Critical
Publication of JP6911102B2 publication Critical patent/JP6911102B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3824Operand accessing
    • 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/30043LOAD or STORE instructions; Clear instruction
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Description

(関連出願の相互参照)
本願は、2016年8月15日に出願された米国特許出願第15/236,882号の利益を主張し、その内容は、完全に記載されているかのように、参照により本明細書に組み込まれる。
プロセッサには、一般に、フェッチ、デコード(又は、ディスパッチ)及び実行ステージを含む命令パイプラインが関連付けられている。デコードステージは、フェッチキューから命令を取得し、エントリをロードキュー(LDQ)又はストアキュー(STQ)に割り当てる。LDQ及びSTQリソースは、その深さ(すなわち、キューに記憶することができるエントリの数)及びキューの有効期間がプロセッサの性能に影響を与える構造である。より深いLDQ及びSTQは、クロック当たりの命令(IPC)数をより多くすることができるが、ある時点で、より深いLDQ及びSTQによって、タイミング問題が発生する。LDQ及びSTQエントリは、通常、命令のディスパッチ時に割り当てられる。ロード又はストア動作がディスパッチポイントにあるが、LDQ及びSTQが満杯である場合、LDQ及びSTQエントリが割り当て解除されるまでディスパッチが停止される。これは、LDQ及びSTQの深さがプロセッサの有効ウィンドウサイズに対する制限となること、すなわち、一度に処理できる命令の数に制限があることを意味する。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解が得られるであろう。
特定の実施態様による、プロセッサのコア処理ユニットのハイレベルブロック図及びフロー図である。 特定の実施態様による、整数スケジューラ及び/又は実行ユニットのハイレベルブロック図及びフロー図である。 特定の実施態様による、スケジューラ及び/又は実行ユニットのハイレベルブロック図及びフロー図である。 特定の実施態様による、アドレス生成時のロード及びストアキューの割り当てのための方法のフロー図である。 1つ以上の開示された実施態様を実装することができる例示的なデバイスのブロック図である。
プロセッサは、一般に、フェッチ、デコード(又は、ディスパッチ)及び実行ステージを含む命令パイプラインに従って動作する。デコード又はディスパッチステージは、フェッチキューから命令を取得し、エントリをロードキュー(LDQ)又はストアキュー(STQ)に割り当てる。LDQ及びSTQエントリは、通常、命令のディスパッチ時に割り当てられる。ロード又はストア動作がディスパッチポイントにあるが、LDQ又はSTQが満杯である場合、LDQ又はSTQエントリが割り当て解除されるまでディスパッチが停止される。これは、LDQ及びSTQの深さが、プロセッサの有効ウィンドウサイズに対する制限となることを意味する。
命令のエイジオーダー(age-order)を維持する、アドレス生成時のLDQ及びSTQエントリの割り当てのためのシステム及び方法が説明される。具体的には、LDQ及びSTQエントリの書き込みは、アドレス生成時まで延期される。これにより、ロード及びストア動作がディスパッチされ、若い動作(ストア及びロード動作ではない可能性がある)もディスパッチされ、これらの命令を開始又は完了させることができる。ロード又はストア動作のアドレス生成は、ロードキューエントリ又はストアキューエントリが当該動作に使用可能になるまで、アドレス生成スケジューラキュー(AGSQ)で保持される。LDQエントリ又はSTQエントリの追跡は、ディスパッチポイントではなく(すなわち、デコードエンジンではなく)AGSQで効果的に行われる。全てがAGSQにプッシュダウンされると、LDQ及びSTQの深さがデコードエンジン側からは見えず、以下に説明するように有効な深さが増加する。
図1は、特定の実施態様による、プロセッサ100のコア処理ユニット105のハイレベルブロック図及びフロー図である。コア処理ユニット105は、スケジューラ及び実行ユニット(SCEX)115にマイクロ動作(マイクロオペレーション)を提供するデコーダユニット110を含む。デコーダユニット110は、キャッシュ122及びマイクロ動作キャッシュ124の各々に接続された分岐予測器120を含む。また、キャッシュ122は、デコーダ126に接続されている。デコーダ126及びマイクロ動作キャッシュ124の各々は、マイクロ動作キュー128に接続されている。
SCEX115は、整数SCEX130と、浮動小数点SCEX132と、を含み、これらの両方がキャッシュ134に接続されている。また、キャッシュ134は、L2キャッシュ136と、LDQ138と、STQ140と、に接続されている。整数SCEX130は、算術論理ユニット(ALU)スケジューラキュー(ALSQ)152と、アドレス生成ユニット(AGU)スケジューラキュー(AGSQ)154と、を含むスケジューラ151に接続された整数リネーマ(integer renamer)150を含む。さらに、スケジューラ151(具体的には、ALSQ152及びAGSQ154)は、ALU156及びAGU158の各々に接続されている。整数SCEX130は、整数物理ファイルレジスタ160も含む。浮動小数点SCEX132は、スケジューラ172に接続された浮動小数点リネーマ(floating point renamer)170を含む。また、スケジューラ172は、乗算器174及び加算器176の各々に接続されている。さらに、浮動小数点SCEX132は、浮動小数点物理ファイルレジスタ178を含む。
パイプラインプロセッサは、命令のストリームをパイプラインに安定に供給する必要がある。分岐予測器120は、何れのマイクロ動作のセットがパイプライン化プロセッサでフェッチされ、実行されるかを予測する。これらのマイクロ動作は、フェッチされ、キャッシュ122に記憶され、次いで、キャッシュ122がデコーダ126によってデコードされる。マイクロ動作キャッシュ124は、キャッシュ122からのマイクロ動作をデコーダ126がデコードする場合に、分岐予測器120からのマイクロ動作をキャッシュする。マイクロ動作キュー128は、マイクロ動作を実行のためにディスパッチする目的で、デコーダ126及びマイクロ動作キャッシュ124からのマイクロ動作を記憶してキューに入れる。
従来のパイプライン処理では、マイクロ動作キューは、マイクロ動作に関連するペイロードを記憶するために、マイクロ動作をロードキュー又はストアキューにディスパッチする。例示すると、ストアキューは、マイクロ動作キューから6つのマイクロ動作(このうち4つはストアマイクロ動作である)を受け入れ、ディスパッチ時にディスパッチペイロードをストアキューに書き込むことができる。次に、アドレス生成時に、ストアキューは、スケジューラからキューエントリ番号を受信し、何れのストアキューエントリが処理されているかを特定する。スケジューラは、ディスパッチペイロードを読み出し、セグメンテーションチェックのためにセグメンテーションロジックに送信し、マイクロ動作パイプ上での可能なピックのためにロードキューに送信する。すなわち、従来のパイプライン処理は、ストアキュー及びロードキューに対する2パス書き込み処理であり、ペイロードのディスパッチ時及びアドレス生成時に1回ずつアドレスを生成する。
物理的に、これはいくつかの理由で困難である。第1に、アーキテクチャは、マイクロ動作キューの全ての幅をサポートする必要がある。例えば、ディスパッチ時に6つのマイクロ動作(4つのストアマイクロ動作を含む)を書き込むと、大量のワイヤ及びマルチプレクサが必要となり、ディスパッチペイロードを保持するストアキューの領域で輻輳が発生する。第2に、アドレス生成時にペイロードを読み出すことは、アドレス生成ユニットからストアキューにキューエントリ番号を送信することと、ペイロードを読み出すことと、ペイロードをセグメンテーションロジック及びロードキューに送信することと、を含む困難なパス(すなわち、タイミングパス)のセットを保証することを必要とする。ストアキューはディスパッチペイロードを保持しているので、アドレスが生成されるまでストアマイクロ動作では何もできないにもかかわらず、ストアキューエントリがディスパッチ時から占有されることを意味する。この結果、マイクロ動作の幅に必要なアーキテクチャが無駄になっている。すなわち、ストアキュー及びロードキューの深さによって、プロセッサのウィンドウが制限される(すなわち、一度に処理可能な動作の数に制限がある)。
一実施態様によれば、マイクロ動作は、従来のパイプライン処理のようにLDQ138及びSTQ140に直接書き込むのではなく、整数SCEX130及び浮動小数点SCEX132のみにディスパッチされる。具体的には、マイクロ動作は、1)整数リネーム150を介してスケジューラ151に送られ、2)浮動小数点リネーム170を介してスケジューラ172に送られる。スケジューラ151は、AGSQ154において、マイクロ動作のディスパッチペイロード(例えば、ロード及びストアマイクロ動作のディスパッチペイロード)を保持する。AGSQ154は、適切なLDQ138又はSTQ140内の特定のキューエントリが利用可能になるまで、マイクロ動作(例えば、ロード及びストアマイクロ動作)のディスパッチペイロードを保持する。キューエントリが利用可能になり、ソース情報が準備されると、AGSQ154は、アドレスを生成し、ディスパッチペイロードを読み出し、ディスパッチペイロードをLDQ138又はSTQ140に送信する。
エイジオーダーの動作又は順番通りのキューを維持するために、全てのストアマイクロ動作は、特定のストアキューエントリ又はキュー識別子と関連付けられる。ストアキューエントリは、プログラム順でディスパッチ時にストアマイクロ動作に割り当てられる(例えば、ストアマイクロ動作をストアキューエントリ0に割り当てることができ、プログラム順で次のストアマイクロ動作をストアキューエントリ1に割り当てることができ、プログラム順でさらに次のストアマイクロ動作をストアキューエントリ2に割り当てることができる等)。これにより、ストアマイクロ動作は、キューのエントリ番号又は位置によってストアキューに順番に保持される。位置順(ordered-by-position)ストアキューは、ストアマイクロ動作を処理するための簡単な方法であり、当業者に知られている。本実施態様では、ディスパッチ時に、ストアキューエントリがマイクロ動作に利用可能であることを必要とすることなく、その順番通りのプロパティ及びディスパッチ時のキューエントリの割り当てを保持する。
ディスパッチ時にストアキューエントリを割り当てることにより、AGSQ及びALSQは、AGSQ及びALSQにおいてコミットされていない最古のストアマイクロ動作ストアキューエントリ番号を、ストアマイクロ動作のストアキューエントリと比較することによって、ストアキューエントリがいつ解放されるかを容易に判別することができる。特に、スケジューラ151は、AGSQ154がいつアドレス生成を実行してディスパッチペイロードをSTQ140に送信することができるか、及び、ALSQ152がいつストアデータをSTQ140に送信することができるかを知る必要がある。したがって、特定のキューエントリが利用可能になると、当該特定のキューエントリは、STQ140によってAGSQ154及びALSQ152に通知される。これについては、図1の出力180に関して後述する。
特に、LDQ138及びSTQ140は、コミット−割り当て解除信号をスケジューラ151(例えば、AGSQ154及びALSQ152)に送信して、スケジューラ151(例えば、AGSQ154及びALSQ152)が、古いストアマイクロ動作が各々のストアキューエントリを割り当て解除して解放するときに、アドレス生成、ディスパッチペイロードの送信、及び、若いストアマイクロ動作のストアデータの送信を可能にするように、コミットされていない最古のストアマイクロ動作のストアキューエントリ番号を更新することができる。これは、例えば、LDQ138及びSTQ140からの出力180を、スケジューラ151(例えば、AGSQ154及びALSQ152)の入力に追加することによって実施される。
スケジューラ151は、AGSQ154内の各ストアマイクロ動作及びALSQ152内の各ストアデータマイクロ動作のストアキューエントリ番号を認識しており、コミットされていない最古のストアマイクロ動作のストアキューエントリ番号を(ラップビットと共に)認識しているので、スケジューラ151は、キューエントリが利用可能な適切なマイクロ動作を判別することができる。例えば、AGSQ154エントリ又はALSQ152エントリのストアキューエントリ番号が、(ラップビットを適切に考慮する)コミットされていない最古のストアマイクロ動作のキューエントリのストアキューの深さ(XC_STQDEPTH)内にある場合、当該ストアマイクロ動作のストアキューエントリが(適切なソース情報又はソースオペランドも準備ができていると仮定して)当該ストアマイクロ動作に利用可能であるため、ストアマイクロ動作のためのアドレス生成を進めること又はストアマイクロ動作ディスパッチペイロードを送信することができる。最古のストアマイクロ動作よりも若いXC_STQDEPTH−1ストアであるストアマイクロ動作よりも若いストアマイクロ動作は、これらのストアキューエントリが依然として古いストアマイクロ動作によって占められているので、アドレス生成を実行すること、ディスパッチペイロードを送信すること又はストアデータを送信することが許可されず、マイクロ動作ピッキング(すなわち、ストアマイクロ動作を実行すること)の準備ができていないとみなされる。
全てのディスパッチペイロードをAGSQ154に保持し、アドレス生成時までストアキューの割り当てを遅らせることによって、ストアキューサイズ(例えば、ストアキュー140のサイズ)よりも多くのストアマイクロ動作をディスパッチすることができる。ディスパッチストールの原因を排除することによって、さらなるマイクロ動作をウィンドウ内に導入し、実行を開始するのを可能にすることができる。すなわち、いくつかのストアマイクロ動作は、これらのストアキューエントリ内の前のストアマイクロ動作が割り当て解除されるまで開始することができないが、他のマイクロ動作を進めることができる。重要なことは、キャッシュミスであるロードは、アドレス生成をディスパッチして実行し、これらのキャッシュミスを開始させることができる。
ストアキューエントリよりも多くの数のストアマイクロ動作をウィンドウ内で処理するためのサポートには、これらのマイクロ動作のエイジ(age)を比較するためのメカニズムが必要である。エイジを比較するためのメカニズムは、ストアマイクロ動作に関連するストアキューエントリ番号と、ストアキューエントリ番号に付随する「ラップ」ビットと、を使用することによって提供される。ラップビットは、関連するストアマイクロ動作が、ストアキューエントリの何れの「エポック」を使用するかを決定する。各「エポック」は、ストアキューの異なるバージョン又はサイクルを表す。単一のラップビットは、ストアキューの2つの異なる「ラップ」又は「エポック」を追跡する手段を提供する。これにより、フルストアキュー(XC_STQDEPTH)のディスパッチが可能になる。ストアキューエントリよりも多くのストアマイクロ動作のディスパッチが可能な場合、ウィンドウ内に同じストアキューエントリを有するマイクロ動作が存在する場合だけでなく、ストアキューの複数の異なる「ラップ」又は「エポック」からのマイクロ動作が存在する場合がある。合計で2つのラップビットに対して1つの追加のラップビットは、ストアキューの4つの異なる「ラップ」又は「エポック」を追跡するための手段を提供し、ストアキューの深さの3倍までのディスパッチを可能にする。
図示した例では、実装されたアーキテクチャが44のストアキューの深さを有し、(アドレス生成時には、最大28の追加のマイクロ動作ストアに対して)2つの14エントリのAGSQがある場合、ウィンドウ内にディスパッチすることが可能なストアの合計は72になる。したがって、プロセッサは、ストアキューの深さの2倍を超えてディスパッチせず、2つのラップビットを用いて、プロセッサ内の72のストアマイクロ動作の全てのエイジを追跡し比較する。この場合、ディスパッチストールは不要になる。ラップビットは、ディスパッチ時に計算されるものであり、AGSQに保持されているディスパッチペイロードの一部である。AGSQスケジューラの深さが、ストアキューの深さの3倍を超えてストアマイクロ動作のディスパッチを可能にする場合、追加のラップビットを追加して、任意の数のストアマイクロ動作のディスパッチを可能にすることができる。
ロードマイクロ動作は、必ずしもエイジオーダーではなく、当業者に知られている他の技術を使用する。一実施態様では、ロードマイクロ動作は、ストアマイクロ動作と同様に動作する。
アーキテクチャの観点からは、本明細書に記載の実施態様は、上記で概説した問題を解決する。第1に、ストアキュー内のディスパッチペイロード書き込みポートの数が低減される。例えば、ディスパッチペイロード書き込みポートの数は、4つ(ディスパッチ時に1サイクル当たり4ストア)から2つ(1サイクル当たり2ストアアドレス生成)に低減する。第2に、困難なタイミングパスが排除される。例えば、キューエントリ番号をストアキューに送信することと、ペイロードを読み出すことと、ペイロードをセグメンテーションロジック及びロードキューに送信することと、を含むタイミングパスが排除される。
AGSQ154によってアドレス生成が実行され、ディスパッチペイロードが必要に応じてLDQ138及びSTQ140に記憶されると、コア処理ユニット105は、これに応じてマイクロ動作を実行する。LDQ138及びSTQ140の各々は、ロードマイクロ動作のデータを返し、ストアマイクロ動作の書き込みを実行し、スケジューラ151及びスケジューラ172は、各々のソース情報が準備完了になると、マイクロ動作を整数SCEX130及び浮動小数点SCEX132に発行する。
図2は、特定の実施態様による、整数スケジューラ/実行ユニット200のハイレベルブロック図である。整数スケジューラ/実行ユニット200は、ALSQ204と、AGSQ206と、リタイアキュー208に接続されている整数リネーマ/マッパー(mapper)202と、を含む。また、ALSQ204及びAGSQ206は、転送マルチプレクサ210に接続されており、転送マルチプレクサ210は、ALU212及びAGU214の各々に接続されている。AGU214は、LDQ216及びSTQ218に接続されている。さらに、整数スケジューラ/実行ユニット200は、物理ファイルレジスタ220を含む。
図1と同様に、マイクロ動作は、AGSQ206のみにディスパッチされ、LDQ216及びSTQ218にはディスパッチされない。AGSQ206は、要求されたソース情報及び適切なロードキュー又はストアキューエントリが利用可能になるまで、ディスパッチペイロードを保持する。具体的には、AGSQ206は、要求されたソース情報の準備ができており、特定のマイクロ動作のロードキューエントリ又はストアキューエントリがLDQ216及びSTQ218で利用可能になった場合に、特定のロード又はストアマイクロ動作のためのアドレス生成を実行する。これにより、マイクロ動作のエイジオーダーの実行が維持される。AGSQ206及びALSQ204の各々は、LDQ216又はSTQ218からの出力信号230を介してAGSQ206及びALSQ204にシグナリングすることによって、特定のキューエントリが利用可能になった場合にLDQ216及びSTQ218によって通知される。ALSQ204内のストアデータマイクロ動作は、特定のストアマイクロ動作のストアキューエントリが利用可能になった場合にのみ、ストアデータを実行してストアキューエントリに提供する。
アドレス生成がAGSQ206によって実行され、ディスパッチペイロードが必要に応じて、LDQ216及びSTQ218に保持されると、整数SCEX200は、マイクロ動作を実行する。LDQ216及びSTQ218の各々は、ロードマイクロ動作のデータを返し、ストアマイクロ動作の書き込みを実行し、スケジューラは、これらのソース情報が準備完了になると、マイクロ動作を整数SCEX200に発行する。
図3は、特定の実施態様による、ロードストア/データキャッシュ(LSDC)ユニット300のハイレベルブロック図及びフロー図である。LDSCユニット300は、LDQ302と、STQ304と、ロード0(L0)ピッカー(picker)306と、ロード1(L1)ピッカー308と、を含む。L0ピッカー306は、変換ルックアサイドバッファ(TLB)及びマイクロタグアクセスパイプライン0(TLB0)310と、データキャッシュアクセスパイプライン(データパイプ0)312と、に接続されている。L1ピッカー308は、変換ルックアサイドバッファ(TLB)及びマイクロタグアクセスパイプライン1(TLB1)314と、データキャッシュアクセスパイプライン(データパイプ1)316と、に接続されている。また、TLB0 310及びTLB1 314は、L1/L2 TLB318と、ページウォーカー323と、マイクロタグアレイ319と、に接続されており、マイクロタグアレイ319は、ミスアドレスバッファ(MAB)320に接続されており、キャッシュ322からのデータの読み出しをサポートする。データパイプ0 312及びデータパイプ1 316は、キャッシュ322に接続されている。STQ304は、プリフェッチャ324及びストアパイプピッカー326に接続されており、ストアパイプピッカー326は、ストアパイプライン(STP)328に接続されている。STP328は、L1/L2 TLB318及びマイクロタグアレイ319にも接続されている。また、STQ304は、ストアコミットパイプライン330に接続されており、ストアコミットパイプライン330は、書き込み結合バッファ(WCB)332及びキャッシュ322に接続されている。
アドレス生成がAGSQによって実行され、ディスパッチペイロードが必要に応じてLDQ302及びSTQ304に保持されると、LDSC300は、マイクロ動作を実行する。図示した例では、(L0ピッカー306又はL1ピッカー308等で)ロードマイクロ動作が選択(ピッキング)されると、ロードマイクロ動作は、各々のTLB0 310又はTLB1 314のパイプラインを使用して、ロードマイクロ動作の変換及び予測されたデータキャッシュウェイについて、各々のTLB0 310又はTLB1 314のパイプラインをチェックする。また、ロードマイクロ動作は、データパイプ0 312及びデータパイプ1 316を介してキャッシュ322をチェックする。特定の実施態様では、マイクロタグアレイ319によって、マイクロ動作が、フルタグと比較することによってウェイを確認する前に、予測されたデータキャッシュウェイを決定することができる。ページウォーカー323は、マイクロ動作の物理アドレスを決定するために使用される。別の図示した例では、プリフェッチャ324は、要求がキャッシュ322に送信される前に、キャッシュ322内のラインを埋めるために使用される。
図4は、いくつかの実施態様による、アドレス生成時のロード及びストアキューの割り当てのための方法のフロー図400である。マイクロ動作がフェッチされ、デコードされ、マイクロ動作キューに提供される(ステップ402)。マイクロ動作キューは、マイクロ動作ディスパッチペイロードを記憶するために、マイクロ動作をアドレス生成ユニットスケジューラにディスパッチする(ステップ404)。ディスパッチは、エイジオーダー又はプログラム順を維持するために行われる。アドレス生成ユニットスケジューラは、ロードキュー又はストアキューによって送信された情報から、特定の(すなわち、エイジオーダーの)キューエントリが利用可能かどうかを判別する(ステップ406)。特定のキューエントリが利用可能でない場合、アドレス生成ユニットスケジューラは、現状を維持し、再度チェックする(ステップ408)。
特定のキューエントリが利用可能である場合(ステップ410)、アドレス生成ユニットスケジューラは、マイクロ動作に必要なソース情報が準備できているかどうかを判別する(ステップ412)。ソース情報が準備できていない場合、アドレス生成ユニットスケジューラは、現状を維持し、再度チェックする(ステップ414)。ソース情報が準備できている場合(ステップ416)、アドレス生成ユニットスケジューラは、アドレス生成を実行し、マイクロ動作ディスパッチペイロードを読み出し、マイクロ動作ディスパッチペイロードを適切なロードキュー又はストアキューに送信する(ステップ418)。次に、マイクロ動作が実行される(ステップ420)。動作の順序は例示に過ぎず、他の順序を使用することができる。
図5は、1つ以上の開示された例のうち1つ以上の部分が実装されている例示的なデバイス500のブロック図である。デバイス500は、例えば、ヘッドマウントデバイス、サーバ、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含む。デバイス500は、計算ノード又はプロセッサ502と、メモリ504と、ストレージデバイス506と、1つ以上の入力デバイス508と、1つ以上の出力デバイス510と、を含む。また、デバイス500は、入力ドライバ512及び出力ドライバ514をオプションで含むことができる。デバイス500は、図5に示されていない追加のコンポーネントを含んでもよいことを理解されたい。
計算ノード又はプロセッサ502は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアはCPU又はGPUであってもよい。メモリ504は、計算ノード又はプロセッサ502と同じダイ上に配置されてもよいし、計算ノード又はプロセッサ502とは別に配置されてもよい。一実施態様では、メモリ504は、例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM若しくはキャッシュ等の揮発性又は不揮発性メモリを含む。
ストレージデバイス506は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等の固定又は取り外し可能なストレージデバイスを含む。入力デバイス508は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/若しくは受信するための無線ローカルエリアネットワークカード)を含む。出力デバイス510は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/若しくは受信するための無線ローカルエリアネットワークカード)を含む。
入力ドライバ512は、計算ノード又はプロセッサ502、及び、入力デバイス508と通信し、計算ノード又はプロセッサ502が、入力デバイス508から入力を受信することを可能にする。出力ドライバ514は、計算ノード又はプロセッサ502、及び、出力デバイス510と通信し、プロセッサ502が出力デバイス510に出力を送信することを可能にする。入力ドライバ512及び出力ドライバ514は、オプションのコンポーネントであり、デバイス500は、入力ドライバ512及び出力ドライバ514が存在しない場合であっても同様に動作することに留意されたい。
一実施態様では、マイクロ動作を処理するための方法は、マイクロ動作をフェッチし、当該マイクロ動作をエイジオーダースケジューラキューにディスパッチする。エイジオーダースケジューラキューは、各マイクロ動作に関連するディスパッチペイロードを保持する。次に、方法は、キュー内の関連するキューエントリが利用可能であり、マイクロ動作に必要なソース情報が準備できていることを条件として、マイクロ動作のためのアドレス生成を実行する。マイクロ動作のディスパッチペイロードが読み出され、キューに送信される。一実施態様では、方法は、ディスパッチ時に、プログラム順で各マイクロ動作をキュー内のキューエントリに関連付けて、エイジオーダーを維持する。一実施態様では、方法は、キューからの入力に基づいて、コミットされていない最古のマイクロ動作キューエントリを更新する。一実施態様では、方法は、エイジオーダースケジューラキューにおいて、コミットされていない最古のマイクロ動作キューエントリを各マイクロ動作のキューエントリと比較して、マイクロ動作のキューエントリが利用可能かどうかを判別する。一実施態様では、マイクロ動作は、ストアマイクロ動作である。一実施態様では、ディスパッチウィンドウサイズは、キューの深さ及びエイジオーダースケジューラキューの深さである。一実施態様では、ラップビットは、キューの深さを超えるディスパッチを可能にするために、キューの異なるエポックを追跡するために使用される。
一実施態様では、マイクロ動作を処理するためのプロセッサは、キューと、エイジオーダースケジューラキューと、デコーダと、を含む。デコーダは、マイクロ動作をエイジオーダースケジューラキューにディスパッチする。エイジオーダースケジューラキューは、各マイクロ動作に関連するディスパッチペイロードを保持し、キュー内の関連するキューエントリが利用可能であり、マイクロ動作に必要なソース情報が準備できていることを条件として、マイクロ動作のためのアドレス生成を実行し、マイクロ動作のディスパッチペイロードを読み出し、ディスパッチペイロードをキューに送信する。一実施態様では、デコーダは、プログラム順で各マイクロ動作をキュー内のキューエントリに関連付けて、エイジオーダーを維持する。一実施態様では、キューは、関連するキューエントリが利用可能であることをエイジオーダースケジューラキューに通知する。一実施態様では、スケジューラは、キューからの入力に基づいて、コミットされていない最古のマイクロ動作キューエントリを更新し、コミットされていない最古のマイクロ動作キューエントリを各マイクロ動作のキューエントリと比較して、マイクロ動作のキューエントリが利用可能かどうかを判別する。一実施態様では、マイクロ動作は、ストアマイクロ動作である。一実施態様では、ディスパッチウィンドウサイズは、キューの深さ及びエイジオーダースケジューラキューの深さである。一実施態様では、ラップビットは、キューの深さを超えるディスパッチを可能にするために、キューの異なるエポックを追跡するために使用される。
一実施態様では、マイクロ動作を処理するための方法は、各マイクロ動作に関連するディスパッチペイロードを保持するためにマイクロ動作をスケジューラキューにディスパッチし、利用可能な関連するキューエントリを有するマイクロ動作であって、マイクロ動作の準備ができているソース情報を有するマイクロ動作のためのアドレス生成を実行する。次に、方法は、マイクロ動作のディスパッチペイロードを読み出し、マイクロ動作のディスパッチペイロードをキューに送信する。一実施態様では、方法は、エイジオーダーを維持するために、プログラム順でキューエントリを各マイクロ動作に割り当てる。一実施態様では、方法は、コミットされていない最古のマイクロ動作キューエントリを更新する。一実施態様では、方法は、スケジューラキューにおいて、コミットされていない最古のマイクロ動作キューエントリを各マイクロ動作のキューエントリと比較して、マイクロ動作のキューエントリが利用可能かどうかを判別する。一実施態様では、ディスパッチウィンドウサイズは、キューの深さ及びスケジューラキューの深さである。一実施態様では、ラップビットは、キューの深さを超えるディスパッチを可能にするために、キューの異なるエポックを追跡するために使用される。
一実施態様では、非一時的なコンピュータ可読記憶媒体は、処理システムで実行されると、アドレス生成時のロード及びストアの割り当てのための方法を処理システムに実行させる命令を含む。方法は、マイクロ動作をフェッチし、当該マイクロ動作をエイジオーダースケジューラキューにディスパッチする。エイジオーダースケジューラキューは、各マイクロ動作に関連するディスパッチペイロードを保持する。次に、方法は、キュー内の関連するキューエントリが利用可能であり、マイクロ動作に必要なソース情報が準備できていることを条件として、マイクロ動作のためのアドレス生成を実行する。マイクロ動作のディスパッチペイロードが読み出され、キューに送信される。一実施態様では、方法は、ディスパッチ時に、プログラム順で各マイクロ動作をキュー内のキューエントリに関連付けて、エイジオーダーを維持する。一実施態様では、方法は、キューからの入力に基づいて、コミットされていない最古のマイクロ動作キューエントリを更新する。一実施態様では、方法は、エイジオーダースケジューラキューにおいて、コミットされていない最古のマイクロ動作キューエントリを各マイクロ動作のキューエントリと比較して、マイクロ動作のキューエントリが利用可能かどうかを判別する。一実施態様では、マイクロ動作は、ストアマイクロ動作である。一実施態様では、ディスパッチウィンドウサイズは、キューの深さ及びエイジオーダースケジューラキューの深さである。一実施態様では、ラップビットは、キューの深さを超えるディスパッチを可能にするために、キューの異なるエポックを追跡するために使用される。
本明細書における開示に基づいて多くの変形が可能であることを理解されたい。上記では、特徴及び要素が特定の組み合わせで説明されているが、各特徴又は要素は、他の特徴及び要素無しに単独で使用されてもよいし、他の特徴及び要素を伴って又は伴わずに様々な組み合わせで使用されてもよい。
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令(このような命令は、コンピュータ可読媒体に記憶することが可能である)の結果及びネットリストを含む他の中間データを用いて製造プロセスを構成することによって製造され得る。このようなプロセスの結果は、実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
本明細書で提供された方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、例えば読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク、リムーバブルディスク等の磁気媒体、光磁気記憶媒体、例えばCD−ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体が含まれる。

Claims (20)

  1. マイクロ動作を処理するための方法であって、
    第1マイクロ動作を含む複数のマイクロ動作をフェッチすることと、
    ロード/ストアキュー内のキューエントリが前記第1マイクロ動作に利用できないことに応じて、前記第1マイクロ動作を、前記ロード/ストアキューにディスパッチすることなくエイジオーダースケジューラキューにディスパッチすることであって、前記エイジオーダースケジューラキューは、前記第1マイクロ動作に関連するディスパッチペイロードを保持する、ことと、
    前記第1マイクロ動作によって識別される前記ロード/ストアキュー内のキューエントリが利用可能になり、前記第1マイクロ動作に必要なソース情報が準備されたことに応じて、
    第1マイクロ動作のためのアドレス生成を実行することと、
    前記第1マイクロ動作を含むディスパッチペイロードを読み出すことと、
    前記第1マイクロ動作によって指定されるようにストアされるデータを含むディスパッチペイロードを、前記第1マイクロ動作によって識別される前記ロード/ストアキュー内の利用可能なキューエントリに送信することと、を含む、
    方法。
  2. ディスパッチ時に、プログラム順で各マイクロ動作を前記ロード/ストアキュー内のキューエントリに関連付けて、エイジオーダーを維持することをさらに含む、
    請求項1の方法。
  3. 前記ロード/ストアキューからの入力に基づいて、前記エイジオーダースケジューラキュー内のコミットされていない最古のストアマイクロ動作ストアキューエントリ番号を更新することをさらに含む、
    請求項1の方法。
  4. 前記エイジオーダースケジューラキューにおいて、前記エイジオーダースケジューラキュー内の前記コミットされていない最古のマイクロ動作キューエントリのエントリ番号を各マイクロ動作のキューエントリと比較して、前記マイクロ動作のキューエントリが利用可能かどうかを判別することをさらに含む、
    請求項3の方法
  5. 前記マイクロ動作は、ストアマイクロ動作である、
    請求項3の方法。
  6. ディスパッチウィンドウサイズは、前記ロード/ストアキューの深さ及び前記エイジオーダースケジューラキューの深さをあわせたサイズである、
    請求項1の方法。
  7. 前記ロード/ストアキューの深さを超えるディスパッチを可能にするために、前記エイジオーダースケジューラキュー内のエントリのラップビットが追跡され、ラップビットは、前記ロード/ストアキューのサイクルを表す、
    請求項1の方法。
  8. マイクロ動作を処理するためのプロセッサであって、
    ロード/ストアキューと、
    エイジオーダースケジューラキューと、
    アドレス生成スケジューラと、
    デコーダと、を備え、
    前記デコーダは、第1マイクロ動作を含む複数のマイクロ動作をフェッチするように構成されており、
    前記デコーダは、前記ロード/ストアキュー内のキューエントリが前記第1マイクロ動作に利用できないことに応じて、前記第1マイクロ動作を、前記ロード/ストアキューにディスパッチすることなく前記エイジオーダースケジューラキューにディスパッチするように構成されており、
    前記エイジオーダースケジューラキューは、前記第1マイクロ動作に関連するディスパッチペイロードを保持するように構成されており、
    前記アドレス生成スケジューラは、前記第1マイクロ動作が利用可能になることによって識別される前記ロード/ストアキュー内のキューエントリと、前記第1マイクロ動作が準備されることによって必要となるソース情報と、を決定するように構成されており、
    前記アドレス生成スケジューラは、前記第1マイクロ動作が利用可能になることによって識別される前記ロード/ストアキュー内のキューエントリと、前記第1マイクロ動作が準備されることによって必要となるソース情報と、を決定したことに応じて、
    第1マイクロ動作のためのアドレス生成を実行することと
    第1マイクロ動作の前記ディスパッチペイロードを読み出すことと
    前記第1マイクロ動作によって指定されるようにストアされるデータを含む前記ディスパッチペイロードを、前記第1マイクロ動作によって識別される前記ロード/ストアキュー内の利用可能なキューエントリに送信することと
    を行うように構成されている、
    プロセッサ。
  9. 前記デコーダは、プログラム順で各マイクロ動作を前記ロード/ストアキュー内のキューエントリに関連付けて、前記マイクロ動作のエイジオーダーを維持するように構成されている、
    請求項8のプロセッサ。
  10. 前記ロード/ストアキューは、前記関連するキューエントリが利用可能であることを前記エイジオーダースケジューラキューに通知するように構成されている、
    請求項9のプロセッサ。
  11. 前記アドレス生成スケジューラは、
    前記ロード/ストアキューからの入力に基づいて、前記エイジオーダースケジューラキュー内のコミットされていない最古のストアマイクロ動作ストアキューエントリ番号を更新し、
    コミットされていない最古のマイクロ動作キューエントリを各前記マイクロ動作のキューエントリと比較して、前記マイクロ動作のキューエントリが利用可能かどうかを判別するように構成されている、
    請求項8のプロセッサ。
  12. 前記マイクロ動作は、ストアマイクロ動作である、
    請求項8のプロセッサ。
  13. ディスパッチウィンドウサイズは、前記ロード/ストアキューの深さ及び前記エイジオーダースケジューラキューの深さをあわせたサイズである、
    請求項8のプロセッサ。
  14. 前記ロード/ストアキューの深さを超えるディスパッチを可能にするために、前記エイジオーダースケジューラキュー内のエントリのラップビットが追跡され、ラップビットは、前記ロード/ストアキューのサイクルを表す、
    請求項8のプロセッサ。
  15. マイクロ動作を処理するための方法であって、
    ロード/ストアキュー内のキューエントリが第1マイクロ動作に利用できないことに応じて、前記第1マイクロ動作を含む複数のマイクロ動作に関連するディスパッチペイロードを保持するために、前記第1マイクロ動作を、前記ロード/ストアキューにディスパッチすることなくスケジューラキューにディスパッチすることと、
    前記ディスパッチペイロードを前記スケジューラキューにストアすることと、
    第1マイクロ動作によって識別される前記ロード/ストアキュー内のキューエントリが利用可能であるかどうか、及び、前記第1マイクロ動作によって必要とされるソース情報が準備されているかどうかを判別することと、
    前記ロード/ストアキュー内の前記キューエントリが利用可能になり、前記第1マイクロ動作によって必要とされるソース情報が準備されたことに応じて、
    前記第1マイクロ動作のためのアドレス生成を実行することと、
    前記第1マイクロ動作を含む前記ディスパッチペイロードを読み出すことと、
    前記第1マイクロ動作によって指定されるようにストアされるデータを含むディスパッチペイロードを、前記第1マイクロ動作によって識別される前記ロード/ストアキュー内の利用可能なキューエントリに送信することと、を含む、
    方法。
  16. エイジオーダーを維持するために、プログラム順でキューエントリを各マイクロ動作に割り当てることをさらに含む、
    請求項15の方法。
  17. 前記ロード/ストアキューからの入力に基づいて、コミットされていない最古のマイクロ動作キューエントリ番号を更新することをさらに含む、
    請求項15の方法。
  18. 記コミットされていない最古のマイクロ動作キューエントリを各マイクロ動作の1つ以上の関連するロード/ストアキューエントリと比較して、前記マイクロ動作のキューエントリが利用可能かどうかを判別することをさらに含む、
    請求項17の方法。
  19. ディスパッチウィンドウサイズは、前記ロード/ストアキューの深さ及び前記スケジューラキューの深さをあわせたサイズである、
    請求項15の方法。
  20. 前記ロード/ストアキューの深さを超えるディスパッチを可能にするために、前記ロード/ストアキューの異なるエポックが追跡され、各エポックは、前記ロード/ストアキューのサイクルを表す、
    請求項15の方法。
JP2019508265A 2016-08-15 2016-09-19 アドレス生成時のロード及びストアキューの割り当てのためのシステム及び方法 Active JP6911102B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/236,882 US11086628B2 (en) 2016-08-15 2016-08-15 System and method for load and store queue allocations at address generation time
US15/236,882 2016-08-15
PCT/US2016/052494 WO2018034678A1 (en) 2016-08-15 2016-09-19 System and method for load and store queue allocations at address generation time

Publications (2)

Publication Number Publication Date
JP2019525351A JP2019525351A (ja) 2019-09-05
JP6911102B2 true JP6911102B2 (ja) 2021-07-28

Family

ID=61159026

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019508265A Active JP6911102B2 (ja) 2016-08-15 2016-09-19 アドレス生成時のロード及びストアキューの割り当てのためのシステム及び方法

Country Status (6)

Country Link
US (1) US11086628B2 (ja)
EP (1) EP3497558B1 (ja)
JP (1) JP6911102B2 (ja)
KR (1) KR20190031498A (ja)
CN (1) CN109564510B (ja)
WO (1) WO2018034678A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10846095B2 (en) * 2017-11-28 2020-11-24 Advanced Micro Devices, Inc. System and method for processing a load micro-operation by allocating an address generation scheduler queue entry without allocating a load queue entry
US11513802B2 (en) * 2020-09-27 2022-11-29 Advanced Micro Devices, Inc. Compressing micro-operations in scheduler entries in a processor

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5519864A (en) * 1993-12-27 1996-05-21 Intel Corporation Method and apparatus for scheduling the dispatch of instructions from a reservation station
US5684971A (en) * 1993-12-27 1997-11-04 Intel Corporation Reservation station with a pseudo-FIFO circuit for scheduling dispatch of instructions
US5584037A (en) * 1994-03-01 1996-12-10 Intel Corporation Entry allocation in a circular buffer
US5745726A (en) * 1995-03-03 1998-04-28 Fujitsu, Ltd Method and apparatus for selecting the oldest queued instructions without data dependencies
US6481251B1 (en) 1999-10-25 2002-11-19 Advanced Micro Devices, Inc. Store queue number assignment and tracking
US6785802B1 (en) * 2000-06-01 2004-08-31 Stmicroelectronics, Inc. Method and apparatus for priority tracking in an out-of-order instruction shelf of a high performance superscalar microprocessor
US20030182537A1 (en) 2002-03-21 2003-09-25 International Business Machines Corporation Mechanism to assign more logical load/store tags than available physical registers in a microprocessor system
US7782885B1 (en) * 2002-12-10 2010-08-24 Cisco Technology, Inc. System and method for queue management using queue sets
US8239638B2 (en) 2007-06-05 2012-08-07 Apple Inc. Store handling in a processor
US20080320274A1 (en) * 2007-06-19 2008-12-25 Raza Microelectronics, Inc. Age matrix for queue dispatch order
US8656401B2 (en) 2011-05-13 2014-02-18 Advanced Micro Devices, Inc. Method and apparatus for prioritizing processor scheduler queue operations
CN107748673B (zh) 2012-06-15 2022-03-25 英特尔公司 包括虚拟加载存储队列的处理器和系统
EP2862084A4 (en) * 2012-06-15 2016-11-30 Soft Machines Inc METHOD AND SYSTEM FOR IMPLEMENTING RECOVERY FROM A SPECULATIVE TRANSMISSION OF FAULT FORECASTS / ERRORS DUE TO THE CHANGE AND OPTIMIZATION OF MEMORY LOADS
CN104620223B (zh) * 2012-06-15 2018-11-16 英特尔公司 对于基于存储资历实现从不同线程进行转发的线程不可知的加载存储缓冲器
US20140129806A1 (en) * 2012-11-08 2014-05-08 Advanced Micro Devices, Inc. Load/store picker
US9817667B2 (en) * 2013-05-23 2017-11-14 Advanced Micro Devices, Inc. Techniques for scheduling operations at an instruction pipeline
GB2510655B (en) * 2013-07-31 2015-02-25 Imagination Tech Ltd Prioritizing instructions based on type
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US9367322B1 (en) 2015-07-27 2016-06-14 International Business Machines Corporation Age based fast instruction issue

Also Published As

Publication number Publication date
US11086628B2 (en) 2021-08-10
CN109564510B (zh) 2023-11-14
WO2018034678A1 (en) 2018-02-22
CN109564510A (zh) 2019-04-02
EP3497558A4 (en) 2020-07-08
US20180046463A1 (en) 2018-02-15
EP3497558B1 (en) 2022-11-23
EP3497558A1 (en) 2019-06-19
JP2019525351A (ja) 2019-09-05
KR20190031498A (ko) 2019-03-26

Similar Documents

Publication Publication Date Title
US11853763B2 (en) Backward compatibility by restriction of hardware resources
JP7284199B2 (ja) アルゴリズム整合、機能無効化、または性能制限による後方互換性
US7133969B2 (en) System and method for handling exceptional instructions in a trace cache based processor
JP7084379B2 (ja) ロードストアユニットをバイパスすることによるストア及びロードの追跡
US9256433B2 (en) Systems and methods for move elimination with bypass multiple instantiation table
US20160378500A1 (en) Split-level history buffer in a computer processing unit
JP6911102B2 (ja) アドレス生成時のロード及びストアキューの割り当てのためのシステム及び方法
JP2022546034A (ja) マイクロプロセッサ内におけるレジスタ結果の累積のための命令ハンドリング
US11175916B2 (en) System and method for a lightweight fencing operation
US7266673B2 (en) Speculation pointers to identify data-speculative operations in microprocessor
US10846095B2 (en) System and method for processing a load micro-operation by allocating an address generation scheduler queue entry without allocating a load queue entry
TW201732565A (zh) 用於迴圈不變性指令偵測及去除的方法和裝置
US7555633B1 (en) Instruction cache prefetch based on trace cache eviction
US20200019405A1 (en) Multiple Level History Buffer for Transaction Memory Support
JP2023503877A (ja) レジスタ書き込み抑制

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190918

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210217

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210623

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210707

R150 Certificate of patent or registration of utility model

Ref document number: 6911102

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150