JP2025537101A - 2つのレベルのリザベーションステーション - Google Patents
2つのレベルのリザベーションステーションInfo
- Publication number
- JP2025537101A JP2025537101A JP2025523915A JP2025523915A JP2025537101A JP 2025537101 A JP2025537101 A JP 2025537101A JP 2025523915 A JP2025523915 A JP 2025523915A JP 2025523915 A JP2025523915 A JP 2025523915A JP 2025537101 A JP2025537101 A JP 2025537101A
- Authority
- JP
- Japan
- Prior art keywords
- load instruction
- instructions
- computing device
- instruction
- clusters
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
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)
- Information Transfer Systems (AREA)
Abstract
コンピューティングデバイスのための方法、システム、及び装置は、複数の処理コアと、複数の処理コア上でのアウトオブオーダ実行のための命令の選択を調整するように構成された回路を備えるリザベーションステーションと、を備え、リザベーションステーションは、待機バッファ及び複数のクラスタを備え、ロード命令がキャッシュミスをもたらすとリザベーションステーションが予測した際に、リザベーションステーションは、複数のクラスタのうちの1つのクラスタを使用してロード命令を実行することと、ロード命令の1つまたは複数の依存命令を待機バッファに格納することと、を行うように構成され、ロード命令の実行が完了した際に、リザベーションステーションは、依存命令を待機バッファから取得することと、複数のクラスタを使用して依存命令を実行することと、を行うように構成される。
Description
本明細書は、コンピューティングデバイスでのアウトオブオーダ(OoO)命令実行を支援可能な1つまたは複数のリザベーションステーション(RSV)を含むデバイスに関する。
最新のアウトオブオーダ(OoO)プロセッサでは、命令スループット(例えば、1サイクルあたりの命令数(IPC))が、通常OoOウィンドウのサイズを大きくすることで改善する。リザベーションステーション(RSV)は、通常このウィンドウサイズを制約するコンポーネントの1つである。より大きなRSVは、命令及びメモリレベルの並列性を抽出でき、これはIPCの改善に役立つ。
しかしながら、RSVのサイズが大きくなると、サイクル時間の課題が生じ、周波数が制約される。RSVサイズに関係するウェイクアップ-セレクトタイミングパスは、最新のOoOCPUにおける最もタイトなタイミングパスの1つであり、通常、CPU全体の周波数を制約する。RSVのサイズを大きくすると、ウェイクアップセレクトのパス上の各コンポーネントに負荷がかかる。例えば、RSVのサイズが大きくなると、ウェイクアップ遅延が増加するが、これは、タグブロードキャスト配線のロードが増加するためである。選択遅延の増加は、選択プロセスに多くの命令が参加し、それらの間で選択優先順位を決定するのに時間がかかるためである。IPC及び周波数の両方が全体的な性能に寄与するため、単純にRSVサイズを大きくしても、全体的な性能が向上するわけではない。
本明細書では、サイクル時間に適した方式で「有効容量」を増加させるために複数のレベルを有するRSVを実装するためのシステム及び方法を説明する。
「RSVクラスタリング」は、RSVが、特定のタイプの命令を処理するようにそれぞれ設計されたより小さな「クラスタ」または「グルーピング」に分割されるプロセスである。すべての命令がすべてのクラスタに供給される場合、この構造は、「完全統合型」または「モノリシック」RSVと呼ばれる。一方、「完全分散型」または「フラグメント化」RSVは、命令が指定されたクラスタにのみ供給される場合である。IPC及びサイクル時間に関して、どちらの構造にも長所及び短所がある。本明細書に提示されている2レベルRSV編成は、各構造によって提供される同様の性能の利点を得るために、「完全分散型」または「完全統合型」設計に頼らないデバイスを概説する。
この2レベルRSV設計は、RSVが最終レベルキャッシュ(LLC)でミスした命令とそれらの依存命令で満たされることが多いという事実を活用している。LLCは、CPUがメモリにアクセスする前の最後のキャッシュとして定義される。一般的に、LLCをミスした命令またはその依存命令に対応するためには、多くのサイクル(例えば、100超)が必要となり得る。これは、RSVがより新たな命令を受け付けることを妨げる連鎖反応を引き起こす可能性がある。換言すれば、RSVの「キュー」はLLCをミスした命令とそれらの依存命令によって占有され、その結果、RSVはより効率的に処理できる可能性のある命令を格納できなくなる。
この問題を克服するために、本システムは、どの命令がLLCをミスするかを積極的に予測し、これらの命令の依存命令を別のサイクル効率のよい構造に誘導することを試みる。いくつかの実施態様では、この構造は、待機バッファ(WB)と呼んでもよい。このWBは、通常のRSVクラスタリングとは別個の構造である。いくつかの実施態様では、RSVは、2つのレベルに分割される。1つ目はWBで構成され、2つ目は1つまたは複数のRSVクラスタを含む。いくつかの実施態様では、LLCをミスすると予測される命令は、それらの依存命令をレベル2のRSVクラスタに直接渡すのではなく、レベル1のWBへ送る。
図1は、例示的なシステムの概要図である。システム100は、フェッチモジュール102、デコードモジュール104、待機バッファ(WB)105、ディスパッチモジュール106、1つまたは複数のRSV108、リオーダバッファ110、コミットモジュール112、及びストアバッファ114を有する。上記の様々な「モジュール」は、AND、OR、NOT、NAND、またはXORゲートを含むために、様々な論理回路コンポーネントを使用して実装され得る。他の実施態様は、他の回路コンポーネントを使用することを選択する場合がある。
フェッチモジュール102は、デコードするために、入力される命令を読み出す。デコードモジュール104は、受け取った機能を分析して、それらのコンシューマを決定する。いくつかの実施態様では、デコードモジュール104の出力を使用して、デコードされた命令が、LLCをミスする可能性が高い命令に対応するかどうかを決定する。命令がLLCをミスする可能性が高いと決定すると、WB105内のバンクがその命令の依存命令に割り当てられる。命令がLLCをミスする可能性がない場合、または命令がWB105を出る要件を満たしている場合は、命令はディスパッチモジュール106に送信され、ディスパッチモジュール106は、RSV108に命令を送信する。RSV108は、完全分散型システムと完全統合型システムとの間の様々な形態をとることができる。RSV108はまた、様々な形態のクラスタリングを使用し得、命令タイプのグループが特定の数のRSV108に割り当てられ得る。RSV108から呼び出された後、命令は、ストアバッファ114に到達する前に、リオーダバッファ110及びコミットモジュール112によって処理される。
図2は、例示的なシステム実施態様200の詳細図である。システム200は、デコードモジュール202、LLC予測器204、WBフリーリスト206、リネームモジュール208、WB210、WBバンク212、「WBバンクID」214、WBマルチプレクサ216、1つまたは複数のRSVマルチプレクサ218、1つまたは複数のRSVクラスタ220、及び1つまたは複数の実行レーン222を含む。
LLC予測器204は、どの命令がLLCをミスする可能性が高いかを決定するために使用される。いくつかの実施態様では、この予測は、RSVのデコードモジュール202中に行われ得る。使用前に、LLC予測器204は、どの命令がLLCをミスする確率が高いかに関する初期トレーニングを受ける場合がある。LLC予測器204が、ある命令がLLCをミスすることを検出した場合、WBフリーリスト206によって空きバンクID214が利用可能であると特定されれば、その命令はWB210内のバンク212を確保する。この時点で、追加の識別子、例えば、物理レジスタ番号(PRN)のタグ及び「BankIDValid」が命令に割り当てられてもよい。いくつかの実施態様では、このプロセスは、リネームモジュール208によって処理され得る。
いくつかの実施態様では、WB210は、特定の数のバンク212に分割され得る。バンク212の数は、さらに、複数のエントリに分割され得、各々が単一の命令によって占有され得、その結果先入れ先出し(FIFO)構造となる。FIFO構造は、バンクレベルのウェイクアップ(すなわち、同じバンク212内のすべての命令)を可能にし、設計の複雑さを軽減する。特許請求の範囲内の他の実施態様は、他のWB210構造またはプロセスを使用し得る。
WB210を出るとき、命令チェーンは特定のフォーマット、例えば、FIFOに基づいた割り当て順序で送出される。いくつかの実施態様では、このプロセスは、WBマルチプレクサ216によって処理され得る。次に、WB210から離れた命令は、RSVクラスタ220に供給され得る。複数の命令タイプが同じRSVクラスタ220によって処理される実施態様では、RSVマルチプレクサ218を使用して、命令が適切なRSVに分散され得る。次に、実行準備ができた命令は、RSVによって実行レーン222を割り当てられる。いくつかの実施態様では、個々のRSVクラスタ220は、異なる命令タイプを処理するように構成される。例えば、各RSVクラスタは、異なるタイプの命令または命令クラスを処理するように構成され得る。例えば、異なるRSVクラスタ220は、ロード、ストア、機能的操作、基本的な数学的演算、及び複雑な数学的演算をそれぞれ処理するために割り当てられ得る。他の代替実施態様は、命令タイプまたはクラスに対してRSVクラスタの任意の適切な配置を使用することができる。
図3は、予測されるロードミスに対して待機バッファを使用するための例示的な処理のフローチャートである。例示的なプロセスは、本明細書に従って動作するように構成された任意の適切なプロセッサによって実行され得る。
LLC予測器は、どの命令がLLCをミスする確率が高いかに関する初期トレーニングを受ける場合がある(310)。いくつかの実施態様では、このトレーニングは、公知のプログラムカウンタ(PC)データに基づき得る。トレーニングを、図4を参照しながら以下でさらに詳しく説明する。RSVが動作する中で、LLC予測器204によって使用される予測は、どの命令がLLCをミスするかをより正確に予測できるように洗練されていく場合もある。いくつかの実施態様では、LLC予測器204は、複数のエントリを有するテーブルを含み得、複数のエントリの各々は、Nビットの飽和カウンタを有する。このテーブルは、ロード命令アドレス、ロード命令アドレスのハッシュ値、グローバルなロードのヒット/ミス履歴(GLHR)、ロードパス履歴、またはPCから容易に取得可能な他のパラメータを含む、様々な手段によってインデックス化され得る。このテーブルは、上記のパラメータの組み合わせでインデックス化され得る。
GLHRが使用される実施態様では、GLHRは、命令LLCミス予測時間に更新される「N」ビットシフトレジスタを含み得る。命令がLLCをミスすると予測される場合、「1」がGLHRに割り当てられる。あるいは、命令がLLCでヒットすると予想される場合、「0」がGLHRに割り当てられる。ロードパス履歴を使用してLLC予測器204を更新する他の実施態様では、この動作は、以前の「N」個のロード命令からのPCビットのハッシュを含み得る。
さらに、LLCヒット/ミス情報が容易に利用可能ではないマルチコアシステムでは、プロキシを使用してLLC予測器204がトレーニングされ得る。この場合、リオーダバッファ(ROB)の先頭にある命令によって費やされたサイクル数が、LLC予測器204をトレーニングするために使用され得る。サイクル数が、例えば50で割り当てられ、サイクル数がそれを超えると、命令はミスと見なされ、それぞれのカウンタが増加し得る。そうではない場合、命令はヒットと見なされ、それぞれのカウンタが減少することになる。
初期トレーニングの後、LLC予測器204は、動作中に命令をデコードし、どの命令がLLCをミスするかについて予測を行う(320)。LLC予測器204によってある命令がLLCをミスすると予測された場合、その命令の依存命令は、WB210内のバンク212に移動される(330)。WB210へのエントリ時に、依存命令には、その宛先論理レジスタ番号(LRN)に対応する「バンクID」214が割り当てられ得る。この情報は、参照しやすいフォーマット、例えば、ルックアップテーブルに配置され得る。同じLRNに対応する依存命令が検出されると、バンクID214を使用して、依存命令が先行する命令と同じWB210内のバンクに配置され得る。依存命令が、WB内に一意のバンクを割り当てた複数の先行命令を有する場合、システムは、例えば、依存命令を、占有率が最も低いWB210内のバンク212に割り当てるなど、所定の応答に従ってよい。
各命令のバンクID214もまた、ロードストアユニット(LSU)と共有され得る。例えば、ロード命令が完了したので、命令がWB210を離れる準備ができていることを検出すると、「ウェイクアップ」が、LSUによって同じバンク212内のすべての依存命令に送信される(340)。さらに、LSUは他のアクションを実行し得る。例えば、LSUは、ウェイクアップが進行中であるという事前の警告をLRNまたは他のコンポーネントに送信することが可能である。LSUはまた、WB210からの命令チェーンの早期離脱をトリガし得る。WB210を出るとき、命令チェーンは、特定のフォーマットで、例えば、FIFOに基づいた割り当て順序で離れる(350)。本方法では、1サイクルあたりにウェイクアップされ得る命令チェーンの数に制限はない。特許請求の範囲内の他の実施態様は、異なるウェイクアップ方法を利用し得るか、またはLSUに異なるアクションを実行させ得る。
複数の命令チェーンが同じサイクルでウェイクアップされる場合、システムは、特定のアービトレーションプロセスに従って、命令がWB210からどのように出るかを制御することができる(360)。いくつかの実施態様では、順序を決定するためにラウンドロビンが実施され得る。他の実施態様では、より古い命令バンク212が優先される経過時間ベース方法が好ましい場合がある。さらに、この経過時間による優先順位付けは、WB210に割り当てられていない他の命令にも拡張され得、その結果、WB210から出ていく命令チェーンは、デコード202から直接出ていく命令よりも優先される。
図4は、LLC予測器の精度を改良するための例示的なプロセス400のフローチャートである。例示的なプロセスは、本明細書に従って構成された任意の適切なプロセッサによって実施され得る。例えば、プロセッサは、LLC予測器を継続的に改良するために、命令実行中に例示的なプロセスを実施することができる。
図3に説明されているLLC予測器の初期トレーニングに続いて(410)、問題のある命令をより正確に特定するために、LLC予測器の推定ロジックの態様を改良することが望ましい場合がある。いくつかの実施態様では、カウンタが各ロード命令に割り当てられて、エントリテーブルを形成し得る(420)。場合によっては、このテーブルは、ロード命令のPCのハッシュに基づいて独自にインデックス化され得る。他の実施態様は、ロード命令タグの比較を実施する連想メモリ(CAM)構造を利用する「タグ付き」LLC予測器の使用を選択することができる。実行中、ロード命令は、ミスするLLCがあるかどうかを決定するために監視される(430)。
ロード命令がLLCをミスしたことを検出すると(430)、ロード命令に割り当てられたカウンタは、定数だけ増加する(440)。いくつかの実施態様では、この数は整数(例えば「1」)であってもよい。ロード命令がLLCミスを起こさなかった場合、そのロード命令に割り当てられたカウンタは、定数だけ下げられる(450)。いくつかの実施態様では、この数は整数(例えば「1」)であってもよい。ロード命令のカウンタが更新された後、システムは、更新されたカウンタを使用して実行を続ける(460)。
上記は、LLC予測器ロジックを更新するための実施態様の一例である。他の実施態様は、説明されているプロセスの異なる変形例、例えば、異なる様式でカウンタを増加させることを選択する場合がある。他の実施態様は、コンピューティングシステムからLLC予測器204に利用可能な他のデータを使用することを含むために、他のプロセスを完全に使用することを選択する場合がある。
本明細書で説明する主題及び機能動作の実施形態は、本明細書で開示される構造及びその構造的同等物、またはそれらの1つまたは複数の組み合わせなど、デジタル電子回路、有形に具現化されたコンピュータソフトウェアまたはファームウェア、コンピュータハードウェアに実装できる。本明細書で説明されている主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置によって実行されるか、またはデータ処理装置の動作を制御する、有形の非一時的な記憶媒体にエンコードされたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。コンピュータ記憶媒体は、機械可読ストレージデバイス、機械可読記憶基板、ランダムアクセスメモリデバイスもしくはシリアルアクセスメモリデバイス、またはそれらの1つまたは複数の組み合わせである場合がある。代わりに、または、加えて、プログラム命令は、人工的に生成された伝達された信号にエンコードすることができ、例えば、データ処理装置による実行のための適切な受信機装置に伝送するための情報をエンコードするために生成される、機械生成の電気、光学または電磁信号がある。
「データ処理装置」という用語は、データ処理ハードウェアを指し、例としてプログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくは複数のコンピュータを含む、データ処理のためのあらゆる種類の装置、デバイス、及び機械を包含する。装置は、特殊用途の論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)である場合があるか、またはそれらをさらに含むことができる。装置はまた、ハードウェアに加えて、コンピュータプログラムの実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれら1つまたは複数の組み合わせを構成するコードを任意選択で含むことができる。
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼ばれるか、または説明される場合があるコンピュータプログラムは、コンパイル型言語もしくはインタプリタ型言語、宣言型言語もしくは手続き型言語を含む、任意の形態のプログラム言語で書くことができ、また、それは、独立型プログラムとしての形態、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境での使用に好適な他のユニットとしての形態を含む、任意の形態で展開することができる。プログラムは、ファイルシステムのファイルに相当し得るが、そうである必要はない。プログラムは、他のプログラムまたはデータ、例えば、マークアップ言語の文書に格納される1つまたは複数のスクリプトを保持するファイルの一部分に、目的のプログラム専用の単一のファイルに、または複数の連携ファイル、例えば、1つまたは複数のモジュール、サブプログラム、またはコードの一部分を格納するファイルに格納することができる。コンピュータプログラムは、1つのコンピュータ上で、または1つの場所に位置するかもしくは複数の場所にわたって分散され、データ通信ネットワークによって相互接続される複数のコンピュータ上で、実行されるように展開され得る。
1つまたは複数のコンピュータのシステムが特定の動作またはアクションを行うように構成されているということは、稼働中、システムに動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせがシステムにインストールされていることを意味する。1つまたは複数のコンピュータプログラムが特定の動作またはアクションを行うように構成されているということは、1つまたは複数のプログラムが、データ処理装置によって実行されたとき、装置に動作またはアクションを実行させる命令を含むことを意味する。
本明細書で使用される場合、「エンジン」、または「ソフトウェアエンジン」は、入力とは異なる出力を提供するソフトウェア実装された入力/出力システムを指す。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット(「SDK」)、またはオブジェクトなどの機能のエンコードされたブロックであり得る。各エンジンは、任意の適切なタイプのコンピューティングデバイス、例えば、サーバ、携帯電話、タブレットコンピュータ、ノートブックコンピュータ、音楽プレーヤー、電子ブックリーダ、ラップトップもしくはデスクトップコンピュータ、PDA、スマートフォン、または他の固定もしくは携帯デバイスに実装され得る。これは、1つまたは複数のプロセッサ及びコンピュータ可読媒体を含む。さらに、エンジンのうちの2つ以上は、同じコンピューティングデバイスまたは異なるコンピューティングデバイスに実装されてもよい。
本明細書に説明するプロセス及び論理フローは、1つまたは複数のプログラマブルコンピュータが1つまたは複数のコンピュータプログラムを実行して、入力データに作用し、出力を生成することにより機能を実行することによって実行できる。また、プロセス及び論理フローは、特殊用途の論理回路、例えばFPGAまたはASICによって、または特殊用途の論理回路と1つまたは複数のプログラムされたコンピュータとの組み合わせによって、行われ得る。
コンピュータプログラムの実行に適したコンピュータは、汎用もしくは専用マイクロプロセッサ、あるいはその両方、またはその他の任意の種類の中央処理ユニットに基づくことができる。一般に、中央処理ユニットは、読み出し専用メモリ、ランダムアクセスメモリ、またはその両方から命令及びデータを受信する。コンピュータの基本的な要素は、命令を実施及び実行するための中央処理装置と、命令及びデータを記憶するための1つまたは複数のメモリデバイスである。中央処理ユニット及びメモリは、特殊用途の論理回路によって補完される、または組み込まれることができる。一般に、コンピュータはまた、例えば、磁気ディスク、光磁気ディスク、または光ディスクなど、データを格納するための1つまたは複数の大容量記憶デバイスを含むか、またはそれらからデータを受信する、またはそれらにデータを転送する、あるいはその両方のために演算可能に結合される。しかし、コンピュータにそのようなデバイスは必要ではない。さらに、例をいくつか挙げるならば、コンピュータは、他のデバイス、例えば携帯電話、パーソナルデジタルアシスタント(PDA)、モバイルオーディオプレーヤーまたはビデオプレーヤー、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブルストレージデバイス、例えばユニバーサルシリアルバス(USB)フラッシュドライブに埋め込むことができる。
コンピュータプログラム命令及びデータを格納するのに適したコンピュータ可読媒体には、あらゆる形式の不揮発性メモリ、メディア、及びメモリデバイスが含まれ、例えば、EPROM、EEPROM、及びフラッシュメモリデバイスなどの半導体メモリデバイス、内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、及びCD-ROM及びDVD-ROMディスクが含まれる。
ユーザとの相互作用を行うために、本明細書に説明する主題の実施形態は、ユーザに情報を表示するためのディスプレイ装置、例えばCRT(ブラウン管)またはLCD(液晶画面)モニタ、及びユーザがコンピュータへの入力を行うことができるキーボード及びポインティングデバイス、例えばマウス、トラックボール、または感圧式ディスプレイもしくはその他の入力面を有するコンピュータに実装することができる。他の種類のデバイスもまた、ユーザとのインタラクションを提供するために使用することができる。例えば、ユーザに提供されるフィードバックは、あらゆる形式の感覚的フィードバック、例えば視覚フィードバック、聴覚フィードバック、または触覚フィードバックとすることができ、ユーザからの入力は、音響入力、音声入力、または触覚入力など、あらゆる形式で受信することができる。さらに、コンピュータは、ユーザが使用するデバイスにドキュメントを送受信することで、例えば、ウェブブラウザから受信した要求に応答して、ユーザのデバイス上のウェブブラウザにウェブページを送信することで、ユーザとインタラクトできる。また、コンピュータは、テキストメッセージまたは他の形式のメッセージをパーソナルデバイス(例えば、メッセージングアプリケーションを実行しているスマートフォン)に送信し、次いでユーザから応答メッセージを受信することによって、ユーザとインタラクトしてもよい。
上記の実施形態に加えて、以下の実施形態もまた革新的である。
実施形態1は、コンピューティングデバイスであって、
複数の処理コアと、
待機バッファ、複数のクラスタ、及び前記複数の処理コアでのアウトオブオーダ実行のための命令の選択を調整するように構成された回路を備えるリザベーションステーションと、を備え、前記リザベーションステーションは、
ロード命令がキャッシュミスをもたらすと予測することと、
ロード命令がキャッシュミスをもたらすと予測した際に、i)前記複数のクラスタのうちの1つのクラスタを使用して前記ロード命令を実行すること、及びii)前記ロード命令の1つまたは複数の依存命令を前記待機バッファに格納することと、
前記ロード命令の実行が完了した際に、i)前記依存命令のうちの1つまたは複数を前記待機バッファから取得すること、及びii)前記複数のクラスタを使用して前記1つまたは複数の依存命令を実行することと、
を行うように構成される、コンピューティングデバイスである。
複数の処理コアと、
待機バッファ、複数のクラスタ、及び前記複数の処理コアでのアウトオブオーダ実行のための命令の選択を調整するように構成された回路を備えるリザベーションステーションと、を備え、前記リザベーションステーションは、
ロード命令がキャッシュミスをもたらすと予測することと、
ロード命令がキャッシュミスをもたらすと予測した際に、i)前記複数のクラスタのうちの1つのクラスタを使用して前記ロード命令を実行すること、及びii)前記ロード命令の1つまたは複数の依存命令を前記待機バッファに格納することと、
前記ロード命令の実行が完了した際に、i)前記依存命令のうちの1つまたは複数を前記待機バッファから取得すること、及びii)前記複数のクラスタを使用して前記1つまたは複数の依存命令を実行することと、
を行うように構成される、コンピューティングデバイスである。
実施形態2は、前記待機バッファは複数のバンクを備え、前記ロード命令の前記1つまたは複数の依存命令を格納することは、前記ロード命令のすべての依存命令を前記待機バッファの同じバンクに格納することを含む、実施形態1に記載のコンピューティングデバイスである。
実施形態3は、前記待機バッファの各バンクエントリは、論理レジスタ番号、物理レジスタ番号、バンクID、及び有効値を備える、実施形態2に記載のコンピューティングデバイスである。
実施形態4は、各バンクが先入れ先出しのキューとして編成される、実施形態3に記載のコンピューティングデバイスである。
実施形態5は、前記リザベーションステーションが、前記ロード命令がキャッシュミスをもたらすかどうかの予測を生成するように構成された予測回路をさらに備える、実施形態1~4のいずれか1つに記載のコンピューティングデバイスである。
実施形態6は、前記予測回路が、グローバルなロードのヒット/ミス履歴によってインクリメントされるカウンタを備える、実施形態5に記載のコンピューティングデバイスである。
実施形態7は、前記予測回路が、リオーダバッファの先頭にある命令によって費やされたサイクル数を備える、実施形態5に記載のコンピューティングデバイスである。
実施形態8は、前記予測回路がハッシュロードを備える、実施形態5に記載のコンピューティングデバイスである。
実施形態9は、前記キャッシュミスが、前記コンピューティングデバイスの最終レベルキャッシュにおけるミスである、実施形態1~8のいずれか1つに記載のコンピューティングデバイスである。
実施形態10は、前記複数のクラスタのうちの2つ以上のクラスタが、命令のタイプの異なる組み合わせを実行するように専用化されている、実施形態1~9のいずれか1つに記載のコンピューティングデバイスである。
実施形態11は、第1のクラスタが、単一サイクルで実行される単純命令及び分岐命令を実行するように専用化されている、実施形態10に記載のコンピューティングデバイスである。
実施形態12は、第2のクラスタが、単純命令及び複数サイクル命令を実行するように専用化されている、実施形態11に記載のコンピューティングデバイスである。
実施形態13は、複数のバンクが同じクロックサイクルでアクティブ化される場合、前記リザベーションステーションが、バンクレベルのアービトレーションを実施するように構成される、実施形態1~12のいずれか1つに記載のコンピューティングデバイスである。
実施形態14は、複数の処理コアと、待機バッファ、複数のクラスタ、及び前記複数の処理コアでのアウトオブオーダ実行のための命令の選択を調整するように構成された回路を備えるリザベーションステーションと、を備えるコンピューティングデバイスによって実行される方法であって、前記方法は、
前記リザベーションステーションによって、ロード命令がキャッシュミスをもたらすと予測することと、
ロード命令がキャッシュミスをもたらすと予測した際に、i)前記複数のクラスタのうちの1つのクラスタを使用して前記ロード命令を実行すること、及びii)前記ロード命令の1つまたは複数の依存命令を前記待機バッファに格納することと、
前記ロード命令の実行が完了した際に、i)前記依存命令のうちの1つまたは複数を前記待機バッファから取得すること、及びii)前記複数のクラスタを使用して前記1つまたは複数の依存命令を実行することと、
を含む。
前記リザベーションステーションによって、ロード命令がキャッシュミスをもたらすと予測することと、
ロード命令がキャッシュミスをもたらすと予測した際に、i)前記複数のクラスタのうちの1つのクラスタを使用して前記ロード命令を実行すること、及びii)前記ロード命令の1つまたは複数の依存命令を前記待機バッファに格納することと、
前記ロード命令の実行が完了した際に、i)前記依存命令のうちの1つまたは複数を前記待機バッファから取得すること、及びii)前記複数のクラスタを使用して前記1つまたは複数の依存命令を実行することと、
を含む。
実施形態15は、前記待機バッファは複数のバンクを備え、前記ロード命令の前記1つまたは複数の依存命令を格納することは、前記ロード命令のすべての依存命令を前記待機バッファの同じバンクに格納することを含む、実施形態14に記載の方法である。
実施形態16は、前記待機バッファの各バンクエントリは、論理レジスタ番号、物理レジスタ番号、バンクID、及び有効値を備える、実施形態15に記載の方法である。
実施形態17は、各バンクが先入れ先出しのキューとして編成される、実施形態16に記載の方法である。
実施形態18は、前記リザベーションステーションが、前記ロード命令がキャッシュミスをもたらすかどうかの予測を生成するように構成された予測回路をさらに備える、実施形態14~17のいずれか1つに記載の方法である。
実施形態19は、前記予測回路が、グローバルなロードのヒット/ミス履歴によってインクリメントされるカウンタを備える、実施形態18に記載の方法である。
実施形態20は、コンピュータプログラム命令がエンコードされた1つまたは複数の非一時的なコンピュータ記憶媒体であって、前記コンピュータプログラム命令は、1つまたは複数のコンピュータによって実行されると、前記1つ以上のコンピュータに、
リザベーションステーションによって、ロード命令がキャッシュミスをもたらすと予測することと、
ロード命令がキャッシュミスをもたらすと予測した際に、i)複数のクラスタのうちの1つのクラスタを使用して前記ロード命令を実行すること、及びii)前記ロード命令の1つまたは複数の依存命令を待機バッファに格納することと、
前記ロード命令の実行が完了した際に、i)前記依存命令のうちの1つまたは複数を前記待機バッファから取得すること、及びii)前記複数のクラスタを使用して前記1つまたは複数の依存命令を実行することと、
を含む動作を実施させる、1つまたは複数の非一時的なコンピュータ記憶媒体である。
リザベーションステーションによって、ロード命令がキャッシュミスをもたらすと予測することと、
ロード命令がキャッシュミスをもたらすと予測した際に、i)複数のクラスタのうちの1つのクラスタを使用して前記ロード命令を実行すること、及びii)前記ロード命令の1つまたは複数の依存命令を待機バッファに格納することと、
前記ロード命令の実行が完了した際に、i)前記依存命令のうちの1つまたは複数を前記待機バッファから取得すること、及びii)前記複数のクラスタを使用して前記1つまたは複数の依存命令を実行することと、
を含む動作を実施させる、1つまたは複数の非一時的なコンピュータ記憶媒体である。
本明細書は多くの具体的な実施態様の詳細を含むが、これらはいずれかの発明の範囲または特許請求可能な内容の範囲を制限するものとして解釈すべきではなく、むしろ、特定の発明の特定の実施形態に固有であり得る特徴の説明として解釈すべきである。本明細書において個別の実施形態の文脈で説明された特定の特徴はまた、単一の実施形態において組み合わせて実装され得る。逆に、単一の実施形態の文脈において説明される本発明の様々な特徴を、別々に、または任意の好適なサブコンビネーションで複数の実施形態において実装することもできる。さらに、特徴が特定の組み合わせで機能すると上記で説明されている場合があり、当初はそのように特許請求されていたとしても、特許請求された組み合わせからの1つまたは複数の特徴が、場合によっては組み合わせから削除される場合があり、特許請求された組み合わせが、サブコンビネーションまたはサブコンビネーションのバリエーションを対象とする場合がある。
同様に、図面で動作が特定の順序で示されているが、このことは、望ましい結果を得るために、そのような動作が示された特定の順序または連続した順序で実行されること、または示されたすべての動作が実行されることを必要とするものとして理解されるべきではない。特定の状況では、マルチタスクと並列処理が有利になる場合がある。さらに、上記の実施形態における様々なシステムモジュール及びコンポーネントの分離は、すべての実施形態でのそのような分離を要求しているものと理解されるべきではなく、また記載のプログラムコンポーネント及びシステムは、概して、単一のソフトウェア製品に統合すること、または複数のソフトウェア製品にパッケージ化することができると理解されるべきである。
主題の特定の実施形態が説明されてきた。他の実施形態は、以下の特許請求の範囲内である。例えば、特許請求の範囲に記載されたアクションを異なる順序で実行しても、依然として望ましい結果を得ることができる。一例として、添付の図に示されたプロセスは、望ましい結果を得るために、示された特定の順序、または連続した順序にすることを必ずしも要求してはいない。特定のケースでは、マルチタスクと並列処理が有利になる場合がある。
Claims (20)
- 複数の処理コアと、
待機バッファ、複数のクラスタ、及び前記複数の処理コアでのアウトオブオーダ実行のための命令の選択を調整するように構成された回路を備えるリザベーションステーションと、を備え、前記リザベーションステーションは、
ロード命令がキャッシュミスをもたらすと予測し、
ロード命令がキャッシュミスをもたらすと予測した際に、i)前記複数のクラスタのうちの1つのクラスタを使用して前記ロード命令を実行し、及びii)前記ロード命令の1つまたは複数の依存命令を前記待機バッファに格納し、
前記ロード命令の実行が完了した際に、i)前記依存命令のうちの1つまたは複数を前記待機バッファから取得し、及びii)前記複数のクラスタを使用して前記1つまたは複数の依存命令を実行するように構成される、コンピューティングデバイス。 - 前記待機バッファは複数のバンクを備え、前記ロード命令の前記1つまたは複数の依存命令を格納することは、前記ロード命令のすべての依存命令を前記待機バッファの同じバンクに格納することを含む、請求項1に記載のコンピューティングデバイス。
- 前記待機バッファの各バンクエントリは、論理レジスタ番号、物理レジスタ番号、バンクID、及び有効値を備える、請求項2に記載のコンピューティングデバイス。
- 各バンクは、先入れ先出しのキューとして編成される、請求項3に記載のコンピューティングデバイス。
- 前記リザベーションステーションは、前記ロード命令がキャッシュミスをもたらすか否かの予測を生成するように構成された予測回路をさらに備える、請求項1~4のいずれか1項に記載のコンピューティングデバイス。
- 前記予測回路は、グローバルなロードのヒット/ミス履歴によってインクリメントされるカウンタを備える、請求項5に記載のコンピューティングデバイス。
- 前記予測回路は、リオーダバッファの先頭にある命令によって費やされたサイクル数を備える、請求項5に記載のコンピューティングデバイス。
- 前記予測回路はハッシュロードを備える、請求項5に記載のコンピューティングデバイス。
- 前記キャッシュミスは、前記コンピューティングデバイスの最終レベルキャッシュにおけるミスである、請求項1~8のいずれか1項に記載のコンピューティングデバイス。
- 前記複数のクラスタのうちの2つ以上のクラスタは、命令のタイプの異なる組み合わせを実行するように専用化されている、請求項1~9のいずれか1項に記載のコンピューティングデバイス。
- 第1のクラスタは、単一サイクルで実行される単純命令及び分岐命令を実行するように専用化されている、請求項10に記載のコンピューティングデバイス。
- 第2のクラスタは、単純命令及び複数サイクル命令を実行するように専用化されている、請求項11に記載のコンピューティングデバイス。
- 複数のバンクが同じクロックサイクルでアクティブ化された場合、前記リザベーションステーションは、バンクレベルのアービトレーションを実施するように構成される、請求項1~12のいずれか1項に記載のコンピューティングデバイス。
- 複数の処理コアと、待機バッファ、複数のクラスタ、及び前記複数の処理コアでのアウトオブオーダ実行のための命令の選択を調整するように構成された回路を備えるリザベーションステーションと、を備えるコンピューティングデバイスによって実行される方法であって、
前記リザベーションステーションによって、ロード命令がキャッシュミスをもたらすと予測することと、
ロード命令がキャッシュミスをもたらすと予測した際に、i)前記複数のクラスタのうちの1つのクラスタを使用して前記ロード命令を実行すること、及びii)前記ロード命令の1つまたは複数の依存命令を前記待機バッファに格納することと、
前記ロード命令の実行が完了した際に、i)前記依存命令のうちの1つまたは複数を前記待機バッファから取得すること、及びii)前記複数のクラスタを使用して前記1つまたは複数の依存命令を実行することと、
を含む、方法。 - 前記待機バッファは複数のバンクを備え、前記ロード命令の前記1つまたは複数の依存命令を格納することは、前記ロード命令のすべての依存命令を前記待機バッファの同じバンクに格納することを含む、請求項14に記載の方法。
- 前記待機バッファの各バンクエントリは、論理レジスタ番号、物理レジスタ番号、バンクID、及び有効値を備える、請求項15に記載の方法。
- 各バンクは、先入れ先出しのキューとして編成される、請求項16に記載の方法。
- 前記リザベーションステーションは、前記ロード命令がキャッシュミスをもたらすか否かの予測を生成するように構成された予測回路をさらに備える、請求項14~17のいずれか1項に記載の方法。
- 前記予測回路は、グローバルなロードのヒット/ミス履歴によってインクリメントされるカウンタを備える、請求項18に記載の方法。
- コンピュータプログラム命令がエンコードされた1つまたは複数の非一時的なコンピュータ記憶媒体であって、前記コンピュータプログラム命令は、1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、
リザベーションステーションによって、ロード命令がキャッシュミスをもたらすと予測することと、
ロード命令がキャッシュミスをもたらすと予測した際に、i)複数のクラスタのうちの1つのクラスタを使用して前記ロード命令を実行すること、及びii)前記ロード命令の1つまたは複数の依存命令を待機バッファに格納することと、
前記ロード命令の実行が完了した際に、i)前記依存命令のうちの1つまたは複数を前記待機バッファから取得すること、及びii)前記複数のクラスタを使用して前記1つまたは複数の依存命令を実行することと、
を含む動作を実施させる、1つまたは複数の非一時的なコンピュータ記憶媒体。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/US2022/049270 WO2024102118A1 (en) | 2022-11-08 | 2022-11-08 | Two-level reservation station |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2025537101A true JP2025537101A (ja) | 2025-11-14 |
Family
ID=84462732
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2025523915A Pending JP2025537101A (ja) | 2022-11-08 | 2022-11-08 | 2つのレベルのリザベーションステーション |
Country Status (6)
| Country | Link |
|---|---|
| EP (1) | EP4599327A1 (ja) |
| JP (1) | JP2025537101A (ja) |
| KR (1) | KR20250073385A (ja) |
| CN (1) | CN120051766A (ja) |
| TW (1) | TW202420080A (ja) |
| WO (1) | WO2024102118A1 (ja) |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7447879B2 (en) * | 2006-02-09 | 2008-11-04 | International Business Machines Corporation | Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss |
| US10007523B2 (en) * | 2011-05-02 | 2018-06-26 | International Business Machines Corporation | Predicting cache misses using data access behavior and instruction address |
| US10146539B2 (en) * | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
-
2022
- 2022-11-08 CN CN202280101424.XA patent/CN120051766A/zh active Pending
- 2022-11-08 WO PCT/US2022/049270 patent/WO2024102118A1/en not_active Ceased
- 2022-11-08 JP JP2025523915A patent/JP2025537101A/ja active Pending
- 2022-11-08 KR KR1020257013458A patent/KR20250073385A/ko active Pending
- 2022-11-08 EP EP22821772.5A patent/EP4599327A1/en active Pending
-
2023
- 2023-10-17 TW TW112139534A patent/TW202420080A/zh unknown
Also Published As
| Publication number | Publication date |
|---|---|
| KR20250073385A (ko) | 2025-05-27 |
| TW202420080A (zh) | 2024-05-16 |
| EP4599327A1 (en) | 2025-08-13 |
| CN120051766A (zh) | 2025-05-27 |
| WO2024102118A1 (en) | 2024-05-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP3436930B1 (en) | Providing load address predictions using address prediction tables based on load path history in processor-based systems | |
| US10331582B2 (en) | Write congestion aware bypass for non-volatile memory, last level cache (LLC) dropping from write queue responsive to write queue being full and read queue threshold wherein the threshold is derived from latency of write to LLC and main memory retrieval time | |
| US20210026639A1 (en) | Latency-based instruction reservation clustering in a scheduler circuit in a processor | |
| US10241797B2 (en) | Replay reduction by wakeup suppression using early miss indication | |
| US20200285580A1 (en) | Speculative memory activation | |
| US9921839B1 (en) | Coordinated thread criticality-aware memory scheduling | |
| US12608210B2 (en) | Instruction dispatching method and apparatus for multithreaded processor, and storage medium | |
| EP4031964B1 (en) | Dynamic hammock branch training for branch hammock detection in an instruction stream executing in a processor | |
| CN118245186B (zh) | 缓存管理方法、缓存管理装置、处理器和电子装置 | |
| CN118245188B (zh) | 线程控制方法及装置、处理器和计算机可读存储介质 | |
| US20160011874A1 (en) | Silent memory instructions and miss-rate tracking to optimize switching policy on threads in a processing device | |
| US10719355B2 (en) | Criticality based port scheduling | |
| CN118245218A (zh) | 缓存管理方法、缓存管理装置、处理器和电子装置 | |
| CN114995884B (zh) | 指令退休单元、指令执行单元及相关装置和方法 | |
| CN106605207A (zh) | 使用文字加载预测表预测文字加载值,以及相关电路、方法和计算机可读媒体 | |
| KR20230069927A (ko) | 스케일러블 인터럽트들 | |
| JP2025537101A (ja) | 2つのレベルのリザベーションステーション | |
| CN107924310A (zh) | 使用避免转出表(pat)预测计算机处理器中的存储器指令转出 | |
| US11928474B2 (en) | Selectively updating branch predictors for loops executed from loop buffers in a processor | |
| CN115185867B (zh) | 处理访问请求的方法 | |
| US11803389B2 (en) | Reach matrix scheduler circuit for scheduling instructions to be executed in a processor | |
| US11093401B2 (en) | Hazard prediction for a group of memory access instructions using a buffer associated with branch prediction | |
| WO2013147878A1 (en) | Prediction-based thread selection in a multithreading processor | |
| US20210389951A1 (en) | Opportunistic consumer instruction steering based on producer instruction value prediction in a multi-cluster processor | |
| US20160291981A1 (en) | Removing invalid literal load values, and related circuits, methods, and computer-readable media |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20250821 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20250821 |