JP7092783B2 - ペンディング中のロード及びストアの個別トラッキング - Google Patents

ペンディング中のロード及びストアの個別トラッキング Download PDF

Info

Publication number
JP7092783B2
JP7092783B2 JP2019546133A JP2019546133A JP7092783B2 JP 7092783 B2 JP7092783 B2 JP 7092783B2 JP 2019546133 A JP2019546133 A JP 2019546133A JP 2019546133 A JP2019546133 A JP 2019546133A JP 7092783 B2 JP7092783 B2 JP 7092783B2
Authority
JP
Japan
Prior art keywords
counter
instruction
response
store
memory subsystem
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
JP2019546133A
Other languages
English (en)
Other versions
JP2020523652A (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 JP2020523652A publication Critical patent/JP2020523652A/ja
Application granted granted Critical
Publication of JP7092783B2 publication Critical patent/JP7092783B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread 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/38Concurrent instruction execution, e.g. pipeline or 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

プロセッサは、ロードメモリ動作及びストアメモリ動作のサポートを含み、プロセッサと、プロセッサに接続されたメモリとの間のデータ転送を容易にする。概して、ロードメモリ動作は、メモリ位置からプロセッサへのデータ転送を指定する動作である。メモリ位置は、メモリ階層内の位置を指し、メモリ階層は、1つ以上のキャッシュレベル及び/又は1つ以上のメモリレベルを含む。ストアメモリ動作は、プロセッサからメモリ階層内の位置へのデータ転送を指定する動作である。
本明細書に使用される「命令」という用語は、プロセッサによって行われる1つ以上の動作を示す情報を指す。「動作」は、(例えば、「nop」命令若しくは「no-operation」命令、又は、条件が偽である条件付き命令に基づいて)所定の処理サイクル中に何もしない処理要素を含むことができる。命令は、所定の命令セットアーキテクチャ(ISA)によって定義することができる。命令は、特定のISAに関連付けられるのではなく、マイクロアーキテクチャによって定義することもできる。例えば、ISA命令を、1つ以上のマイクロ命令にデコードすることができる。マイクロ命令は、プロセッサによって行われる動作を指定する場合、「命令」とも呼ばれ得る。したがって、「ストア命令」は、ISAによって定義される場合もあるし、定義されない場合もある。ストア命令は、ストア動作が行われることを示す情報を含み、通常、ストアのターゲットメモリ位置を示す情報を含む。
ロードメモリ動作及びストアメモリ動作は、様々な実施態様では、メモリ動作を含む命令の暗黙的な部分であってもよいし、明示的な命令であってもよい。「ロードメモリ動作」は、本明細書では「ロード命令」又は「ロード動作」とも呼ばれる。同様に、「ストアメモリ動作」は、本明細書では「ストア命令」又は「ストア動作」とも呼ばれる。「ロード動作」又は「ストア動作」という用語は、「アトミック動作」とも呼ばれることに留意されたい。アトミック動作は、レジスタ位置からのデータと、メモリ位置からのデータとの算術的組み合わせを実行する。「ロード動作」という用語は、「サンプル動作」を指すように使用され得ることにも留意されたい。サンプル動作は、データ値がメモリ位置から読み出された後に、サンプラ定数(sampler constants)を使用して、フィルタリングをデータ値に適用する。
多くのロード動作及びストア動作は、特に、複数のスレッドがデータを共有するマルチスレッドプログラミング環境において、他の動作に依存している。依存関係がいつ解決されたかに基づいて、これらのロード及びストアをいつ実行するかを決定することは困難である。
本明細書で説明する方法及びメカニズムの利点は、添付の図面と共に以下の説明を参照することによって、より良く理解することができる。
コンピューティングシステムの一実施形態のブロック図である。 実行ユニットの一実施形態のブロック図である。 ソフトウェア環境の一実施形態のブロック図である。 命令間の依存関係を管理するためのソフトウェアベースのアプローチを実施する方法の一実施形態を示す一般化されたフロー図である。 ペンディング中のロードカウンタ及びストアカウンタを管理する方法の一実施形態を示す一般化されたフロー図である。 ペンディング中のロード動作及びストア動作を個別にトラッキングする方法の一実施形態を示す一般化されたフロー図である。 待機命令を実施する方法の一実施形態を示す一般化されたフロー図である。
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解を提供するために、いくつかの特定の詳細を示す。しかしながら、当業者は、様々な実施形態を、これらの特定の詳細なしに実施することができるのを認識すべきである。いくつかの場合、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術は、本明細書で説明するアプローチを曖昧にすることを避けるために、詳細に示していない。説明を簡単且つ明確にするために、図に示された要素は必ずしも縮尺通りに描かれていないことが理解されるであろう。例えば、一部の要素の寸法は、他の要素に対して誇張されている場合がある。
個別のペンディング中のロードカウンタ及びストアカウンタを維持するためのシステム、装置及び方法が本明細書に開示されている。一実施形態では、システムは、少なくとも1つの実行ユニットと、メモリサブシステムと、実行スレッド毎のカウンタのペアと、を含む。一実施形態では、システムは、命令間の依存関係を管理するためのソフトウェアベースのアプローチを実施する。一実施形態では、システムは、命令間の依存関係を管理するためのソフトウェアベースのアプローチをサポートするカウンタを維持する。システムは、カウンタの値を参照することによって、ランタイム中に依存関係を管理するのに使用される命令を実行するように構成されている。
一実施形態では、システムは、第1スレッドのロード命令が実行されたことを検出したことに応じて、第1実行ユニットの第1カウンタをインクリメントするように構成されている。また、システムは、ロード命令のデータがメモリサブシステムから読み出されたことを判別したことに応じて、第1カウンタをデクリメントするように構成されている。さらに、システムは、第1スレッドのストア命令が実行されたことを検出したことに応じて、第1実行ユニットの第2カウンタをインクリメントするように構成されている。また、システムは、ストア命令が完了したという肯定応答をメモリサブシステムから受信したことに応じて、第2カウンタをデクリメントするように構成されている。ストア命令のデータがメモリサブシステムに書き込まれた場合及びデータが他のスレッドで見える場合、ストア命令は完了している。第1実行ユニットは、所定のカウンタが所定値に等しくなるまで待機する待機命令を実行するように構成されており、所与値は、待機命令において指定される。
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、メモリ150に接続されたシステムオンチップ(SoC)105を含む。SoC105は、集積回路(IC)とも呼ばれ得る。一実施形態では、SoC105は、中央処理装置(CPU)165の処理ユニット175A~175Nと、入出力(I/O)インタフェース155と、キャッシュ160A~160Bと、ファブリック120と、グラフィックス処理ユニット(GPU)130と、ローカルメモリ110と、メモリコントローラ140と、を含む。SoC105は、図を曖昧にすることを避けるために、図1に示されていない他のコンポーネントを含みことができる。処理ユニット175A~175Nは、任意の数及びタイプの処理ユニットを表している。一実施形態では、処理ユニット175A~175Nは、CPUコアである。別の実施形態では、処理ユニット175A~175Nのうち1つ以上は、他のタイプの処理ユニット(例えば、特定用途集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)等)である。CPU165の処理ユニット175A~175Nは、キャッシュ160A~160B及びファブリック120に接続されている。
一実施形態では、処理ユニット175A~175Nは、特定の命令セットアーキテクチャ(ISA)の命令を実行するように構成されている。各処理ユニット175A~175Nは、1つ以上の実行ユニットと、キャッシュメモリと、スケジューラと、分岐予測回路等と、を含む。一実施形態では、処理ユニット175A~175Nは、オペレーティングシステム等のシステム100のメイン制御ソフトウェアを実行するように構成されている。概して、使用中に処理ユニット175A~175Nによって実行されるソフトウェアは、システム100の所望の機能を実現するために、システム100の他のコンポーネントを制御することができる。また、処理ユニット175A~175Nは、アプリケーションプログラム等の他のソフトウェアを実行することができる。
GPU130は、カウンタ135と、グラフィックス又は汎用処理に使用される任意の数及びタイプのコンピュートユニットを表すコンピュートユニット145A~145Nと、を少なくとも含む。各コンピュートユニット145A~145Nは、任意の数の実行ユニットを含み、コンピュートユニット毎の実行ユニットの数は、実施形態によって異なる。GPU130は、ローカルメモリ110及びファブリック120に接続されている。一実施形態では、ローカルメモリ110は、高帯域メモリ(HBM)を使用して実装されている。一実施形態では、GPU130は、描画コマンド、ピクセル操作、幾何学的計算、及び、画像をディスプレイにレンダリングするための他の動作等のグラフィックスパイプライン動作を実行するように構成されている。別の実施形態では、GPU130は、グラフィックスに無関係の動作を実行するように構成されている。さらなる実施形態では、GPU130は、グラフィックス動作及び非グラフィックス関連動作の両方を実行するように構成されている。
一実施形態では、GPU130は、命令間の依存関係を管理するためのソフトウェアベースのアプローチを実施するカウンタ135を利用する。GPU130のコンピュートユニット145は、ランタイム中に依存関係を管理するのに使用される命令を実行するように構成されている。一実施形態では、GPU130のコンピュートユニット145は、命令シーケンスの実行を継続する前に、所定のカウンタが指定された値に等しくなるまで待機する待機命令を実行する。
一実施形態では、GPU130は、第1スレッドのロード命令が実行されたことを検出したことに応じて、カウンタ135の第1カウンタをインクリメントするように構成されている。また、GPU130は、ロード命令のデータがメモリサブシステムから読み出されたことを判別したことに応じて、第1カウンタをデクリメントするように構成されている。さらに、GPU130は、第1スレッドのストア命令が実行されたことを検出したことに応じて、カウンタ135の第2カウンタをインクリメントするように構成されている。また、GPU130は、ストア命令が完了したという肯定応答をキャッシュ又はメモリから受信したことに応じて、第2カウンタをデクリメントするように構成されている。ストア命令のデータがキャッシュ又はメモリに書き込まれた場合及びデータが他のスレッドで見える場合、ストア命令は完了している。GPU130は、所定のカウンタが所定値に等しくなるまで待機する待機命令を実行するように構成されており、所定値は、待機命令において指定される。
I/Oインタフェース155は、ファブリック120に接続されており、任意の数及びタイプのインタフェース(例えば、周辺機器相互接続(PCI)バス、PCI-Extended(PCI-X)、PCIE(PCIExpress)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB)等)を表す。様々なタイプの周辺デバイスを、I/Oインタフェース155に接続することができる。このような周辺デバイスは、ディスプレイ,キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶デバイス、ネットワークインタフェースカード等を含むが、これらに限定されない。
SoC105は、1つ以上のメモリモジュールを含むメモリ150に接続されている。各メモリモジュールは、その上に搭載された1つ以上のメモリデバイスを含む。いくつかの実施形態では、メモリ150は、SoC105が搭載されたマザーボード又は他のキャリアに搭載された1つ以上のメモリデバイスを含む。一実施形態では、メモリ150は、動作中にSoC105と共に使用されるランダムアクセスメモリ(RAM)を実装するために使用される。実装されるRAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、抵抗RAM(ReRAM)、相変化RAM(PCRAM)、又は、他の任意の揮発性RAM若しくは不揮発性RAMであってもよい。メモリ150を実装するために使用されるDRAMのタイプは、ダブルデータレート(DDR)DRAM、DDR2DRAM、DDR3DRAM等を含むが、これらに限定されない。図1に明示的に示されていないが、SoC105は、処理ユニット175A~175N及び/又はコンピュートユニット145A~145Nの内部にある1つ以上のキャッシュメモリを含むことができる。いくつかの実施形態では、SoC105は、処理ユニット175A~175Nによって利用されるキャッシュ160A~160Bを含む。一実施形態では、キャッシュ160A~160Bは、キャッシュコントローラを含むキャッシュサブシステムの一部である。
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、サーバ、又は、他の様々なタイプのコンピューティングシステム若しくはデバイスの何れかであってもよい。コンピューティングシステム100及び/又はSoC105のコンポーネントの数は、実施形態によって異なり得ることに留意されたい。コンポーネント/サブコンポーネントの各々の数は、図1に示す数より多くてもよいし少なくてもよい。例えば、別の実施形態では、SoC105は、複数のメモリに接続された複数のメモリコントローラを含むことができる。また、コンピューティングシステム100及び/又はSoC105は、図1に示されていない他のコンポーネントを含むことができることに留意されたい。さらに、他の実施形態では、コンピューティングシステム100及びSoC105は、図1に示す以外の方法で構成することができる。
図2を参照すると、実行ユニット205の一実施形態のブロック図が示されている。一実施形態では、実行ユニット205は、制御ロジック220と、ロードカウンタ225と、ストアカウンタ230と、を少なくとも含む。一実施形態では、複数の実行ユニット205を、(図1の)コンピュートユニット145A~145Nの各々に実装することができる。「ロードカウンタ」という用語は、「ベクトルメモリロードカウンタ」とも呼ばれ得ることに留意されたい。同様に、「ストアカウンタ」という用語は、「ベクトルメモリストアカウンタ」と呼ぶこともできる。また、実行ユニット205は、実行スレッド毎にロードカウンタ及びストアカウンタの個別のペアを維持することに留意されたい。
実行ユニット205は、任意の数及びタイプのキャッシュ及び/又はメモリデバイスを含むメモリサブシステム210に接続されている。例えば、一実施形態では、メモリサブシステム210は、レベル1(L1)キャッシュと、レベル2(L2)キャッシュと、システムメモリと、を含む。他の実施形態では、メモリサブシステム210は、他の数のキャッシュレベル及び/又は他のタイプのメモリを含むことができる。
一実施形態では、実行ユニット205がロード命令を実行すると、実行ユニット205は、ロードカウンタ225をインクリメントする。ロード命令のデータがメモリサブシステム210から取り出され、実行ユニット205内で利用可能になると、実行ユニット205は、ロードカウンタ225をデクリメントする。実行ユニット205がストア命令を実行すると、実行ユニット205は、ストアカウンタ230をインクリメントする。実行ユニット205が、ストア命令が完了しているという肯定応答をメモリサブシステム210から受信すると、実行ユニット205は、ストアカウンタ230をデクリメントする。実行ユニット205は、特定のカウンタが所定値に等しくなるまで後続の命令の実行を待機するように指示する待機命令を実行するように構成されている。例えば、一実施形態では、待機命令は、ロードカウンタ225が0に等しくなるまで待機することを指示する。また、待機命令は、特定のカウンタが0以外の値に等しくなるまで実行ユニット205が待機することを指示することができる。
図3を参照すると、ソフトウェア環境300の一実施形態のブロック図が示されている。一実施形態では、ソフトウェア環境300は、コンピューティングシステム(例えば、図1のコンピューティングシステム100)上で実行可能な実行可能コード315を生成するために利用される。コンパイラ310は、ソースコード305を受信し、ソースコード305を実行可能コード315にコンパイルするように構成されている。コンパイラ310がソースコード305の最適化を行う場合、コンパイラ310は、様々な待機命令を実行可能コード315に挿入する柔軟性を有する。
一実施形態では、コンパイラ310は、待機命令を実行可能コード315に挿入し、マルチスレッド実行環境における命令間のソフトウェアの依存関係を管理する。コンパイラ310が所定の待機命令を実行可能コード315に挿入すると、所定の待機命令は、所定のスレッドの対応するロード又はストアカウンタを識別する。また、待機命令は、実行の継続が許可されるまで待機するための値を識別する。例えば、一実施形態では、待機命令は、待機するために0以外の値を指定することができ、特定のカウンタが指定された0以外の値に達した場合に、命令シーケンスからの後続の命令を実行することができる。
図4を参照すると、命令間の依存関係を管理するためのソフトウェアベースのアプローチを実施する方法400の一実施形態が示されている。説明するために、本実施形態のステップ及び図5~図7のステップは、順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素の1つ以上は、同時に行われてもよいし、図示した順序と異なる順序で行われてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加要素を実行することができる。本明細書で説明する様々なシステム又は装置は、方法400を実施するように構成されている。
システムは、命令間の依存関係を管理するためのソフトウェアベースのアプローチを実施する(ブロック405)。一実施形態では、システム(例えば、図1のシステム100)は、少なくとも1つの実行ユニットと、メモリサブシステムと、を含む。また、システムは、実施形態に応じて任意の数の他のコンポーネントを含むことができる。システムは、命令間の依存関係を管理するためのソフトウェアベースのアプローチをサポートする複数のカウンタを維持する(ブロック410)。一実施形態では、システムは、実行スレッド毎にカウンタのペアを維持し、カウンタのペアのうち第1カウンタは、ペンディング中のストア命令の数をトラッキングし、第2カウンタは、ペンディング中のロード命令の数をトラッキングする。システムの実行ユニットは、カウンタ値を参照することによって、ランタイム中に依存関係を管理する命令を実行するように構成されている(ブロック415)。ブロック415の後に、方法400は終了する。
図5を参照すると、ペンディング中のロードカウンタ及びストアカウンタを管理する方法500の一実施形態が示されている。システムは、第1スレッドのロード命令が実行されたことを検出したことに応じて、第1実行ユニットの第1カウンタをインクリメントするように構成されている(ブロック505)。また、システムは、ロード命令がターゲットとするデータがメモリサブシステムから読み出されたことを判別したことに応じて、第1カウンタをデクリメントするように構成されている(ブロック510)。さらに、システムは、第1スレッドのストア命令が実行されたことを検出したことに応じて、第1実行ユニットの第2カウンタをインクリメントするように構成されている(ブロック515)。さらにまた、システムは、ストア命令が完了したという肯定応答をメモリサブシステムから受信したことに応じて、第2カウンタをデクリメントするように構成されている(ブロック520)。また、システムは、第1カウンタ又は第2カウンタの何れかが所定値に等しくなるまで、第1実行ユニットをストールする待機命令を実行するように構成されている(ブロック525)。ブロック525の後に、方法500は終了する。
図6を参照すると、ペンディング中のロード命令及びストア命令を個別に管理する方法600の一実施形態が示されている。実行ユニットは、命令シーケンスの実行を開始する(ブロック605)。一実施形態では、実行ユニットは、ストア命令及びロード命令をインタリーブするマルチスレッド命令シーケンスを実行する。実行ユニットは、ロード命令が実行されたことを検出した場合に(条件付きブロック610:Yes)、ペンディング中のロードカウンタをインクリメントする(ブロック615)。実行ユニットは、ストアカウンタ命令が実行されたことを検出した場合(条件付きブロック620:Yes)、ペンディング中のストアカウンタをインクリメントする(ブロック625)。また、実行ユニットは、ペンディング中のロード命令のデータがメモリサブシステムから読み出されたという指標を受信した場合(条件付きブロック630:Yes)、ペンディング中のロードカウンタをデクリメントする(ブロック635)。さらに、実行ユニットは、ストア命令が完了したという肯定応答をメモリサブシステムから受信した場合(条件付きブロック640:Yes)、ペンディング中のストアカウンタをデクリメントする(ブロック645)。ブロック645の後に、方法600はブロック610に戻る。
図7を参照すると、待機命令を実施する方法700の一実施形態が示されている。プロセッサは、命令シーケンス内の待機命令を検出し、待機命令は、所定のカウンタ(例えば、ロードカウンタ、ストアカウンタ)の所定値を指定する(ブロック705)。次に、プロセッサは、待機命令を実行する(ブロック710)。所定のカウンタが所定値に達した場合に(条件付きブロック715:Yes)、プロセッサは、命令シーケンス内の後続の命令を実行する(ブロック720)。ブロック720の後に、方法700は終了する。所定のカウンタが所定値に達していない場合(条件付きブロック715:No)、プロセッサは、命令シーケンス内の後続の命令を実行することが抑制される(ブロック725)。一実施形態では、プロセッサは、ブロック725において、特定のタイプの命令(例えば、ロード命令、ストア命令)のみを実行することが抑制される。ブロック725の後に、方法700は条件付きブロック715に戻る。
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述した方法及び/又はメカニズムを実施する。プログラム命令は、C言語等の高水準プログラミング言語でハードウェアの動作を記述する。或いは、Verilog等のハードウェア設計言語(HDL)が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多くのタイプの記憶媒体を利用することができる。記憶媒体は、使用中にコンピューティングシステムによってアクセス可能であり、プログラム命令及び付随するデータを、プログラムの実行のためにコンピューティングシステムに提供する。コンピューティングシステムは、プログラム命令を実行するように構成された少なくとも1つ以上のメモリ及び1つ以上のプロセッサを含む。
上述した実施形態は、実施態様の非限定な例に過ぎないことを強調しておきたい。いく上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲はこのような全ての変形及び修正を包含するように解釈されることを意図している。

Claims (20)

  1. システムであって、
    メモリサブシステムと、
    1つ以上の実行ユニットであって、前記1つ以上の実行ユニットのうち第1実行ユニットは、第1カウンタと第2カウンタとを備える、1つ以上の実行ユニットと、を備え、
    前記システムは、
    第1スレッドのロード命令が実行されたことを検出したことに応じて、前記第1カウンタをインクリメントすることと、
    前記ロード命令がターゲットとするデータが前記メモリサブシステムから読み出されたと判別したことに応じて、前記第1カウンタをデクリメントすることと、
    前記第1スレッドのストア命令が実行されたことを検出したことに応じて、前記第2カウンタをインクリメントすることと、
    前記ストア命令が完了したという肯定応答をメモリサブシステムから受信したことに応じて、前記第2カウンタをデクリメントすることと、
    を行うように構成されており、
    前記第1実行ユニットは、所定のカウンタが所定値に等しくなるまで待機する待機命令を実行するように構成されており、
    前記所定値は、前記待機命令において指定される、
    システム。
  2. 前記所定のカウンタは、前記第1カウンタである、
    請求項1のシステム。
  3. 前記待機命令を実行することは、前記第1カウンタが、前記待機命令に含まれる第1の値に等しくなるまで、1つ以上の命令の実行を抑制する、
    請求項2のシステム。
  4. 前記所定値は0である、
    請求項2のシステム。
  5. 前記所定値は0以外の値である、
    請求項2のシステム。
  6. 前記ストア命令のデータが前記メモリサブシステムに書き込まれた場合及び前記データが他のスレッドで見える場合に、前記ストア命令が完了している、
    請求項1のシステム。
  7. 前記システムは、実行スレッド毎にカウンタのペアを含む、
    請求項1のシステム。
  8. 第1スレッドのロード命令が実行されたことを検出したことに応じて、第1実行ユニットの第1カウンタをインクリメントすることと、
    前記ロード命令がターゲットとするデータがメモリサブシステムから読み出されたと判別したことに応じて、前記第1カウンタをデクリメントすることと、
    前記第1スレッドのストア命令が実行されたことを検出したことに応じて、前記第1実行ユニットの第2カウンタをインクリメントすることと、
    前記ストア命令が完了したという肯定応答を前記メモリサブシステムから受信したことに応じて、前記第2カウンタをデクリメントすることと、
    所定のカウンタが所定値に等しくなるまで待機する待機命令を実行することと、を含み、
    前記所定値は、前記待機命令において指定される、
    方法。
  9. 前記所定のカウンタは、前記第1カウンタである、
    請求項8の方法。
  10. 前記待機命令を実行することは、前記第1カウンタが、前記待機命令に含まれる第1の値に等しくなるまで、1つ以上の命令の実行を抑制する、
    請求項9の方法。
  11. 前記所定は0である、
    請求項9の方法。
  12. 前記所定値は0以外の値である、
    請求項9の方法。
  13. 前記ストア命令のデータが前記メモリサブシステムに書き込まれた場合及び前記データが他のスレッドで見える場合に、前記ストア命令が完了している、
    請求項8の方法。
  14. 実行スレッド毎にカウンタのペアを維持することを含む、
    請求項8の方法。
  15. メモリサブシステムと、
    第1カウンタと第2カウンタとを備える実行ユニットと、を備え、
    前記実行ユニットは、
    第1スレッドのロード命令が実行されたことを検出したことに応じて、前記第1カウンタをインクリメントすることと、
    前記ロード命令がターゲットとするデータがメモリサブシステムから読み出されたと判別したことに応じて、前記第1カウンタをデクリメントすることと、
    前記第1スレッドのストア命令が実行されたことを検出したことに応じて、前記第2カウンタをインクリメントすることと、
    前記ストア命令が完了したという肯定応答を前記メモリサブシステムから受信したことに応じて、前記第2カウンタをデクリメントすることと、
    所定のカウンタが所定値に等しくなるまで待機する待機命令を実行することと、
    を行うように構成されており、
    前記所定値は、前記待機命令において指定される、
    装置。
  16. 前記所定のカウンタは、前記第1カウンタである、
    請求項15の装置。
  17. 前記待機命令を実行することは、前記第1カウンタが、前記待機命令に含まれる第1の値に等しくなるまで、1つ以上の命令の実行を抑制する、
    請求項16の装置。
  18. 前記所定値は0である、
    請求項16の装置。
  19. 前記所定値は0以外の値である、
    請求項16の装置。
  20. 前記ストア命令のデータが前記メモリサブシステムに書き込まれた場合及び前記データが他のスレッドで見える場合に、前記ストア命令が完了している、
    請求項15の装置。
JP2019546133A 2017-02-24 2018-02-23 ペンディング中のロード及びストアの個別トラッキング Active JP7092783B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/442,412 2017-02-24
US15/442,412 US11074075B2 (en) 2017-02-24 2017-02-24 Wait instruction for preventing execution of one or more instructions until a load counter or store counter reaches a specified value
EP17159096.1A EP3367235B1 (en) 2017-02-24 2017-03-03 Separate tracking of pending loads and stores
EP17159096.1 2017-03-03
PCT/US2018/019517 WO2018156951A1 (en) 2017-02-24 2018-02-23 Separate tracking of pending loads and stores

Publications (2)

Publication Number Publication Date
JP2020523652A JP2020523652A (ja) 2020-08-06
JP7092783B2 true JP7092783B2 (ja) 2022-06-28

Family

ID=58227989

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019546133A Active JP7092783B2 (ja) 2017-02-24 2018-02-23 ペンディング中のロード及びストアの個別トラッキング

Country Status (6)

Country Link
US (1) US11074075B2 (ja)
EP (1) EP3367235B1 (ja)
JP (1) JP7092783B2 (ja)
KR (1) KR102515106B1 (ja)
CN (1) CN110249308A (ja)
WO (1) WO2018156951A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11327759B2 (en) * 2018-09-25 2022-05-10 Marvell Asia Pte, Ltd. Managing low-level instructions and core interactions in multi-core processors
US20240184580A1 (en) * 2022-12-02 2024-06-06 SiFive, Inc. Tracking of Data Readiness for Load and Store Operations

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010522920A (ja) 2007-03-26 2010-07-08 イマジネイション テクノロジーズ リミテッド パイプラインプロセッサにおける長い待ち時間命令の処理

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US6073159A (en) 1996-12-31 2000-06-06 Compaq Computer Corporation Thread properties attribute vector based thread selection in multithreading processor
US5961630A (en) * 1997-12-30 1999-10-05 Intel Corporation Method and apparatus for handling dynamic structural hazards and exceptions by using post-ready latency
US6473832B1 (en) 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Load/store unit having pre-cache and post-cache queues for low latency load memory operations
US6481251B1 (en) 1999-10-25 2002-11-19 Advanced Micro Devices, Inc. Store queue number assignment and tracking
US6978360B2 (en) * 2001-05-11 2005-12-20 International Business Machines Corporation Scalable processor
US7409500B2 (en) * 2004-01-13 2008-08-05 Hewlett-Packard Development Company, L.P. Systems and methods for employing speculative fills
US8291431B2 (en) 2006-08-29 2012-10-16 Qualcomm Incorporated Dependent instruction thread scheduling
US7877559B2 (en) 2007-11-26 2011-01-25 Globalfoundries Inc. Mechanism to accelerate removal of store operations from a queue
US7941584B2 (en) * 2009-03-26 2011-05-10 Arm Limited Data processing apparatus and method for performing hazard detection
US9280343B2 (en) * 2009-08-10 2016-03-08 Oracle America, Inc. Store queue with token to facilitate efficient thread synchronization
US8127057B2 (en) 2009-08-13 2012-02-28 Advanced Micro Devices, Inc. Multi-level buffering of transactional data
US8966457B2 (en) * 2011-11-15 2015-02-24 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
US9229896B2 (en) * 2012-12-21 2016-01-05 Apple Inc. Systems and methods for maintaining an order of read and write transactions in a computing system
US9535695B2 (en) 2013-01-25 2017-01-03 Apple Inc. Completing load and store instructions in a weakly-ordered memory model
US9612836B2 (en) 2014-02-03 2017-04-04 Nvidia Corporation System, method, and computer program product for implementing software-based scoreboarding
US9569362B2 (en) * 2014-11-13 2017-02-14 Cavium, Inc. Programmable ordering and prefetch

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010522920A (ja) 2007-03-26 2010-07-08 イマジネイション テクノロジーズ リミテッド パイプラインプロセッサにおける長い待ち時間命令の処理

Also Published As

Publication number Publication date
EP3367235A1 (en) 2018-08-29
JP2020523652A (ja) 2020-08-06
US20180246724A1 (en) 2018-08-30
CN110249308A (zh) 2019-09-17
EP3367235B1 (en) 2019-06-26
KR20190116260A (ko) 2019-10-14
US11074075B2 (en) 2021-07-27
WO2018156951A1 (en) 2018-08-30
KR102515106B1 (ko) 2023-03-28

Similar Documents

Publication Publication Date Title
JP5963282B2 (ja) 割り込み分配スキーム
US11709742B2 (en) Method for migrating CPU state from an inoperable core to a spare core
US8713262B2 (en) Managing a spinlock indicative of exclusive access to a system resource
EP2645237B1 (en) Deadlock/livelock resolution using service processor
KR102495792B1 (ko) 가변 파면 크기
US8572355B2 (en) Support for non-local returns in parallel thread SIMD engine
KR20170001568A (ko) 영구 커밋 프로세서들, 방법들, 시스템들 및 명령어들
US10007590B2 (en) Identifying and tracking frequently accessed registers in a processor
BR102014005665B1 (pt) Aparelho, método implementado por computador e mídia legível por máquina para economia de energia em cargas de trabalho
US8095829B1 (en) Soldier-on mode to control processor error handling behavior
US10345884B2 (en) Mechanism to provide workload and configuration-aware deterministic performance for microprocessors
WO2023173642A1 (zh) 指令调度的方法、处理电路和电子设备
JP7092783B2 (ja) ペンディング中のロード及びストアの個別トラッキング
US10289418B2 (en) Cooperative thread array granularity context switch during trap handling
CN114218152B (zh) 流处理方法、处理电路和电子设备
US20070239972A1 (en) Processing internal timestamp counter instructions in reference to external counter
US20190354371A1 (en) Dentifying and tracking frequently accessed registers in a processor
KR102199342B1 (ko) 스토어 리플레이 정책
US11907724B2 (en) In-memory trace with overlapping processing and logout

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220407

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220525

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220616

R150 Certificate of patent or registration of utility model

Ref document number: 7092783

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150