(57)【要約】個別のペンディング中のロードカウンタ及びストアカウンタを維持するためのシステム、装置及び方法が本明細書に開示されている。一実施形態では、システムは、少なくとも１つの実行ユニットと、メモリサブシステムと、実行スレッド毎のカウンタのペアと、を含む。一実施形態では、システムは、命令間の依存関係を管理するためのソフトウェアベースのアプローチを実施する。一実施形態では、実行ユニットは、命令間の依存関係を管理するためのソフトウェアベースのアプローチをサポートするカウンタを維持する。実行ユニットは、ランタイム中に依存関係を管理するのに使用される命令を実行するように構成されている。一実施形態では、実行ユニットは、命令シーケンスの実行を継続する前に、所定のカウンタが所定値に等しくなるまで待機する待機命令を実行する。【選択図】図６
2020523652.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
メモリサブシステムと、
１つ以上の実行ユニットであって、前記１つ以上の実行ユニットのうち第１実行ユニットは、第１カウンタと第２カウンタとを備える、１つ以上の実行ユニットと、を備え、
前記システムは、
第１スレッドのロード命令が実行されたことを検出したことに応じて、前記第１カウンタをインクリメントすることと、
前記ロード命令がターゲットとするデータが前記メモリサブシステムから読み出されたと判別したことに応じて、前記第１カウンタをデクリメントすることと、
前記第１スレッドのストア命令が実行されたことを検出したことに応じて、前記第２カウンタをインクリメントすることと、
前記ストア命令が完了したという肯定応答をメモリサブシステムから受信したことに応じて、前記第２カウンタをデクリメントすることと、
を行うように構成されている、
システム。
【請求項２】
前記第１実行ユニットは、所定のカウンタが所定値に等しくなるまで待機する待機命令を実行するように構成されており、
前記所定値は、前記待機命令において指定される、
請求項１のシステム。
【請求項３】
前記所定のカウンタは、前記第１カウンタである、
請求項２のシステム。
【請求項４】
前記所定値は０である、
請求項２のシステム。
【請求項５】
前記所定値は０以外の値である、
請求項２のシステム。
【請求項６】
前記ストア命令のデータが前記メモリサブシステムに書き込まれた場合及び前記データが他のスレッドで見える場合に、前記ストア命令が完了している、
請求項１のシステム。
【請求項７】
前記システムは、実行スレッド毎にカウンタのペアを含む、
請求項１のシステム。
【請求項８】
第１スレッドのロード命令が実行されたことを検出したことに応じて、第１実行ユニットの第１カウンタをインクリメントすることと、
前記ロード命令がターゲットとするデータがメモリサブシステムから読み出されたと判別したことに応じて、前記第１カウンタをデクリメントすることと、
前記第１スレッドのストア命令が実行されたことを検出したことに応じて、前記第１実行ユニットの第２カウンタをインクリメントすることと、
前記ストア命令が完了したという肯定応答を前記メモリサブシステムから受信したことに応じて、前記第２カウンタをデクリメントすることと、を含む、
方法。
【請求項９】
所定のカウンタが所定値に等しくなるまで待機する待機命令を実行することを含み、
前記所定値は、前記待機命令において指定される、
請求項８の方法。
【請求項１０】
前記所定のカウンタは、前記第１カウンタである、
請求項９の方法。
【請求項１１】
前記所定は０である、
請求項９の方法。
【請求項１２】
前記所定値は０以外の値である、
請求項９の方法。
【請求項１３】
前記ストア命令のデータが前記メモリサブシステムに書き込まれた場合及び前記データが他のスレッドで見える場合に、前記ストア命令が完了している、
請求項８の方法。
【請求項１４】
実行スレッド毎にカウンタのペアを維持することを含む、
請求項８の方法。
【請求項１５】
メモリサブシステムと、
第１カウンタと第２カウンタとを備える実行ユニットと、を備え、
前記実行ユニットは、
第１スレッドのロード命令が実行されたことを検出したことに応じて、前記第１カウンタをインクリメントすることと、
前記ロード命令がターゲットとするデータがメモリサブシステムから読み出されたと判別したことに応じて、前記第１カウンタをデクリメントすることと、
前記第１スレッドのストア命令が実行されたことを検出したことに応じて、前記第２カウンタをインクリメントすることと、
前記ストア命令が完了したという肯定応答を前記メモリ受信したことに応じて、前記第２カウンタをデクリメントすることと、
を行うように構成されている、
装置。
【請求項１６】
前記実行ユニットは、所定のカウンタが所定値に等しくなるまで待機する待機命令を実行するように構成されており、
前記所定値は、前記待機命令において指定される、
請求項１５の装置。
【請求項１７】
前記所定のカウンタは、前記第１カウンタである、
請求項１６の装置。
【請求項１８】
前記所定値は０である、
請求項１６の装置。
【請求項１９】
前記所定値は０以外の値である、
請求項１６の装置。
【請求項２０】
前記ストア命令のデータが前記メモリサブシステムに書き込まれた場合及び前記データが他のスレッドで見える場合に、前記ストア命令が完了している、
請求項１５の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
プロセッサは、ロードメモリ動作及びストアメモリ動作のサポートを含み、プロセッサと、プロセッサに接続されたメモリとの間のデータ転送を容易にする。概して、ロードメモリ動作は、メモリ位置からプロセッサへのデータ転送を指定する動作である。メモリ位置は、メモリ階層内の位置を指し、メモリ階層は、１つ以上のキャッシュレベル及び／又は１つ以上のメモリレベルを含む。ストアメモリ動作は、プロセッサからメモリ階層内の位置へのデータ転送を指定する動作である。
【０００２】
本明細書に使用される「命令」という用語は、プロセッサによって行われる１つ以上の動作を示す情報を指す。「動作」は、（例えば、「ｎｏｐ」命令若しくは「ｎｏ−ｏｐｅｒａｔｉｏｎ」命令、又は、条件が偽である条件付き命令に基づいて）所定の処理サイクル中に何もしない処理要素を含むことができる。命令は、所定の命令セットアーキテクチャ（ＩＳＡ）によって定義することができる。命令は、特定のＩＳＡに関連付けられるのではなく、マイクロアーキテクチャによって定義することもできる。例えば、ＩＳＡ命令を、１つ以上のマイクロ命令にデコードすることができる。マイクロ命令は、プロセッサによって行われる動作を指定する場合、「命令」とも呼ばれ得る。したがって、「ストア命令」は、ＩＳＡによって定義される場合もあるし、定義されない場合もある。ストア命令は、ストア動作が行われることを示す情報を含み、通常、ストアのターゲットメモリ位置を示す情報を含む。
【０００３】
ロードメモリ動作及びストアメモリ動作は、様々な実施態様では、メモリ動作を含む命令の暗黙的な部分であってもよいし、明示的な命令であってもよい。「ロードメモリ動作」は、本明細書では「ロード命令」又は「ロード動作」とも呼ばれる。同様に、「ストアメモリ動作」は、本明細書では「ストア命令」又は「ストア動作」とも呼ばれる。「ロード動作」又は「ストア動作」という用語は、「アトミック動作」とも呼ばれることに留意されたい。アトミック動作は、レジスタ位置からのデータと、メモリ位置からのデータとの算術的組み合わせを実行する。「ロード動作」という用語は、「サンプル動作」を指すように使用され得ることにも留意されたい。サンプル動作は、データ値がメモリ位置から読み出された後に、サンプラ定数（sampler constants）を使用して、フィルタリングをデータ値に適用する。
【０００４】
多くのロード動作及びストア動作は、特に、複数のスレッドがデータを共有するマルチスレッドプログラミング環境において、他の動作に依存している。依存関係がいつ解決されたかに基づいて、これらのロード及びストアをいつ実行するかを決定することは困難である。
【０００５】
本明細書で説明する方法及びメカニズムの利点は、添付の図面と共に以下の説明を参照することによって、より良く理解することができる。
【図面の簡単な説明】
【０００６】
【図１】コンピューティングシステムの一実施形態のブロック図である。
【図２】実行ユニットの一実施形態のブロック図である。
【図３】ソフトウェア環境の一実施形態のブロック図である。
【図４】命令間の依存関係を管理するためのソフトウェアベースのアプローチを実施する方法の一実施形態を示す一般化されたフロー図である。
【図５】ペンディング中のロードカウンタ及びストアカウンタを管理する方法の一実施形態を示す一般化されたフロー図である。
【図６】ペンディング中のロード動作及びストア動作を個別にトラッキングする方法の一実施形態を示す一般化されたフロー図である。
【図７】待機命令を実施する方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【０００７】
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解を提供するために、いくつかの特定の詳細を示す。しかしながら、当業者は、様々な実施形態を、これらの特定の詳細なしに実施することができるのを認識すべきである。いくつかの場合、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術は、本明細書で説明するアプローチを曖昧にすることを避けるために、詳細に示していない。説明を簡単且つ明確にするために、図に示された要素は必ずしも縮尺通りに描かれていないことが理解されるであろう。例えば、一部の要素の寸法は、他の要素に対して誇張されている場合がある。
【０００８】
個別のペンディング中のロードカウンタ及びストアカウンタを維持するためのシステム、装置及び方法が本明細書に開示されている。一実施形態では、システムは、少なくとも１つの実行ユニットと、メモリサブシステムと、実行スレッド毎のカウンタのペアと、を含む。一実施形態では、システムは、命令間の依存関係を管理するためのソフトウェアベースのアプローチを実施する。一実施形態では、システムは、命令間の依存関係を管理するためのソフトウェアベースのアプローチをサポートするカウンタを維持する。システムは、カウンタの値を参照することによって、ランタイム中に依存関係を管理するのに使用される命令を実行するように構成されている。
【０００９】
一実施形態では、システムは、第１スレッドのロード命令が実行されたことを検出したことに応じて、第１実行ユニットの第１カウンタをインクリメントするように構成されている。また、システムは、ロード命令のデータがメモリサブシステムから読み出されたことを判別したことに応じて、第１カウンタをデクリメントするように構成されている。さらに、システムは、第１スレッドのストア命令が実行されたことを検出したことに応じて、第１実行ユニットの第２カウンタをインクリメントするように構成されている。また、システムは、ストア命令が完了したという肯定応答をメモリサブシステムから受信したことに応じて、第２カウンタをデクリメントするように構成されている。ストア命令のデータがメモリサブシステムに書き込まれた場合及びデータが他のスレッドで見える場合、ストア命令は完了している。第１実行ユニットは、所定のカウンタが所定値に等しくなるまで待機する待機命令を実行するように構成されており、所与値は、待機命令において指定される。
【００１０】
図１を参照すると、コンピューティングシステム１００の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム１００は、メモリ１５０に接続されたシステムオンチップ（ＳｏＣ）１０５を含む。ＳｏＣ１０５は、集積回路（ＩＣ）とも呼ばれ得る。一実施形態では、ＳｏＣ１０５は、中央処理装置（ＣＰＵ）１６５の処理ユニット１７５Ａ〜１７５Ｎと、入出力（Ｉ／Ｏ）インタフェース１５５と、キャッシュ１６０Ａ〜１６０Ｂと、ファブリック１２０と、グラフィックス処理ユニット（ＧＰＵ）１３０と、ローカルメモリ１１０と、メモリコントローラ１４０と、を含む。ＳｏＣ１０５は、図を曖昧にすることを避けるために、図１に示されていない他のコンポーネントを含みことができる。処理ユニット１７５Ａ〜１７５Ｎは、任意の数及びタイプの処理ユニットを表している。一実施形態では、処理ユニット１７５Ａ〜１７５Ｎは、ＣＰＵコアである。別の実施形態では、処理ユニット１７５Ａ〜１７５Ｎのうち１つ以上は、他のタイプの処理ユニット（例えば、特定用途集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）等）である。ＣＰＵ１６５の処理ユニット１７５Ａ〜１７５Ｎは、キャッシュ１６０Ａ〜１６０Ｂ及びファブリック１２０に接続されている。
【００１１】
一実施形態では、処理ユニット１７５Ａ〜１７５Ｎは、特定の命令セットアーキテクチャ（ＩＳＡ）の命令を実行するように構成されている。各処理ユニット１７５Ａ〜１７５Ｎは、１つ以上の実行ユニットと、キャッシュメモリと、スケジューラと、分岐予測回路等と、を含む。一実施形態では、処理ユニット１７５Ａ〜１７５Ｎは、オペレーティングシステム等のシステム１００のメイン制御ソフトウェアを実行するように構成されている。概して、使用中に処理ユニット１７５Ａ〜１７５Ｎによって実行されるソフトウェアは、システム１００の所望の機能を実現するために、システム１００の他のコンポーネントを制御することができる。また、処理ユニット１７５Ａ〜１７５Ｎは、アプリケーションプログラム等の他のソフトウェアを実行することができる。
【００１２】
ＧＰＵ１３０は、カウンタ１３５と、グラフィックス又は汎用処理に使用される任意の数及びタイプのコンピュートユニットを表すコンピュートユニット１４５Ａ〜１４５Ｎと、を少なくとも含む。各コンピュートユニット１４５Ａ〜１４５Ｎは、任意の数の実行ユニットを含み、コンピュートユニット毎の実行ユニットの数は、実施形態によって異なる。ＧＰＵ１３０は、ローカルメモリ１１０及びファブリック１２０に接続されている。一実施形態では、ローカルメモリ１１０は、高帯域メモリ（ＨＢＭ）を使用して実装されている。一実施形態では、ＧＰＵ１３０は、描画コマンド、ピクセル操作、幾何学的計算、及び、画像をディスプレイにレンダリングするための他の動作等のグラフィックスパイプライン動作を実行するように構成されている。別の実施形態では、ＧＰＵ１３０は、グラフィックスに無関係の動作を実行するように構成されている。さらなる実施形態では、ＧＰＵ１３０は、グラフィックス動作及び非グラフィックス関連動作の両方を実行するように構成されている。
【００１３】
一実施形態では、ＧＰＵ１３０は、命令間の依存関係を管理するためのソフトウェアベースのアプローチを実施するカウンタ１３５を利用する。ＧＰＵ１３０のコンピュートユニット１４５は、ランタイム中に依存関係を管理するのに使用される命令を実行するように構成されている。一実施形態では、ＧＰＵ１３０のコンピュートユニット１４５は、命令シーケンスの実行を継続する前に、所定のカウンタが指定された値に等しくなるまで待機する待機命令を実行する。
【００１４】
一実施形態では、ＧＰＵ１３０は、第１スレッドのロード命令が実行されたことを検出したことに応じて、カウンタ１３５の第１カウンタをインクリメントするように構成されている。また、ＧＰＵ１３０は、ロード命令のデータがメモリサブシステムから読み出されたことを判別したことに応じて、第１カウンタをデクリメントするように構成されている。さらに、ＧＰＵ１３０は、第１スレッドのストア命令が実行されたことを検出したことに応じて、カウンタ１３５の第２カウンタをインクリメントするように構成されている。また、ＧＰＵ１３０は、ストア命令が完了したという肯定応答をキャッシュ又はメモリから受信したことに応じて、第２カウンタをデクリメントするように構成されている。ストア命令のデータがキャッシュ又はメモリに書き込まれた場合及びデータが他のスレッドで見える場合、ストア命令は完了している。ＧＰＵ１３０は、所定のカウンタが所定値に等しくなるまで待機する待機命令を実行するように構成されており、所定値は、待機命令において指定される。
【００１５】
Ｉ／Ｏインタフェース１５５は、ファブリック１２０に接続されており、任意の数及びタイプのインタフェース（例えば、周辺機器相互接続（ＰＣＩ）バス、ＰＣＩ−Ｅｘｔｅｎｄｅｄ（ＰＣＩ−Ｘ）、ＰＣＩＥ（ＰＣＩＥｘｐｒｅｓｓ）バス、ギガビットイーサネット（登録商標）（ＧＢＥ）バス、ユニバーサルシリアルバス（ＵＳＢ）等）を表す。様々なタイプの周辺デバイスを、Ｉ／Ｏインタフェース１５５に接続することができる。このような周辺デバイスは、ディスプレイ，キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶デバイス、ネットワークインタフェースカード等を含むが、これらに限定されない。
【００１６】
ＳｏＣ１０５は、１つ以上のメモリモジュールを含むメモリ１５０に接続されている。各メモリモジュールは、その上に搭載された１つ以上のメモリデバイスを含む。いくつかの実施形態では、メモリ１５０は、ＳｏＣ１０５が搭載されたマザーボード又は他のキャリアに搭載された１つ以上のメモリデバイスを含む。一実施形態では、メモリ１５０は、動作中にＳｏＣ１０５と共に使用されるランダムアクセスメモリ（ＲＡＭ）を実装するために使用される。実装されるＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、抵抗ＲＡＭ（ＲｅＲＡＭ）、相変化ＲＡＭ（ＰＣＲＡＭ）、又は、他の任意の揮発性ＲＡＭ若しくは不揮発性ＲＡＭであってもよい。メモリ１５０を実装するために使用されるＤＲＡＭのタイプは、ダブルデータレート（ＤＤＲ）ＤＲＡＭ、ＤＤＲ２ＤＲＡＭ、ＤＤＲ３ＤＲＡＭ等を含むが、これらに限定されない。図１に明示的に示されていないが、ＳｏＣ１０５は、処理ユニット１７５Ａ〜１７５Ｎ及び／又はコンピュートユニット１４５Ａ〜１４５Ｎの内部にある１つ以上のキャッシュメモリを含むことができる。いくつかの実施形態では、ＳｏＣ１０５は、処理ユニット１７５Ａ〜１７５Ｎによって利用されるキャッシュ１６０Ａ〜１６０Ｂを含む。一実施形態では、キャッシュ１６０Ａ〜１６０Ｂは、キャッシュコントローラを含むキャッシュサブシステムの一部である。
【００１７】
様々な実施形態では、コンピューティングシステム１００は、コンピュータ、ラップトップ、モバイルデバイス、サーバ、又は、他の様々なタイプのコンピューティングシステム若しくはデバイスの何れかであってもよい。コンピューティングシステム１００及び／又はＳｏＣ１０５のコンポーネントの数は、実施形態によって異なり得ることに留意されたい。コンポーネント／サブコンポーネントの各々の数は、図１に示す数より多くてもよいし少なくてもよい。例えば、別の実施形態では、ＳｏＣ１０５は、複数のメモリに接続された複数のメモリコントローラを含むことができる。また、コンピューティングシステム１００及び／又はＳｏＣ１０５は、図１に示されていない他のコンポーネントを含むことができることに留意されたい。さらに、他の実施形態では、コンピューティングシステム１００及びＳｏＣ１０５は、図１に示す以外の方法で構成することができる。
【００１８】
図２を参照すると、実行ユニット２０５の一実施形態のブロック図が示されている。一実施形態では、実行ユニット２０５は、制御ロジック２２０と、ロードカウンタ２２５と、ストアカウンタ２３０と、を少なくとも含む。一実施形態では、複数の実行ユニット２０５を、（図１の）コンピュートユニット１４５Ａ〜１４５Ｎの各々に実装することができる。「ロードカウンタ」という用語は、「ベクトルメモリロードカウンタ」とも呼ばれ得ることに留意されたい。同様に、「ストアカウンタ」という用語は、「ベクトルメモリストアカウンタ」と呼ぶこともできる。また、実行ユニット２０５は、実行スレッド毎にロードカウンタ及びストアカウンタの個別のペアを維持することに留意されたい。
【００１９】
実行ユニット２０５は、任意の数及びタイプのキャッシュ及び／又はメモリデバイスを含むメモリサブシステム２１０に接続されている。例えば、一実施形態では、メモリサブシステム２１０は、レベル１（Ｌ１）キャッシュと、レベル２（Ｌ２）キャッシュと、システムメモリと、を含む。他の実施形態では、メモリサブシステム２１０は、他の数のキャッシュレベル及び／又は他のタイプのメモリを含むことができる。
【００２０】
一実施形態では、実行ユニット２０５がロード命令を実行すると、実行ユニット２０５は、ロードカウンタ２２５をインクリメントする。ロード命令のデータがメモリサブシステム２１０から取り出され、実行ユニット２０５内で利用可能になると、実行ユニット２０５は、ロードカウンタ２２５をデクリメントする。実行ユニット２０５がストア命令を実行すると、実行ユニット２０５は、ストアカウンタ２３０をインクリメントする。実行ユニット２０５が、ストア命令が完了しているという肯定応答をメモリサブシステム２１０から受信すると、実行ユニット２０５は、ストアカウンタ２３０をデクリメントする。実行ユニット２０５は、特定のカウンタが所定値に等しくなるまで後続の命令の実行を待機するように指示する待機命令を実行するように構成されている。例えば、一実施形態では、待機命令は、ロードカウンタ２２５が０に等しくなるまで待機することを指示する。また、待機命令は、特定のカウンタが０以外の値に等しくなるまで実行ユニット２０５が待機することを指示することができる。
【００２１】
図３を参照すると、ソフトウェア環境３００の一実施形態のブロック図が示されている。一実施形態では、ソフトウェア環境３００は、コンピューティングシステム（例えば、図１のコンピューティングシステム１００）上で実行可能な実行可能コード３１５を生成するために利用される。コンパイラ３１０は、ソースコード３０５を受信し、ソースコード３０５を実行可能コード３１５にコンパイルするように構成されている。コンパイラ３１０がソースコード３０５の最適化を行う場合、コンパイラ３１０は、様々な待機命令を実行可能コード３１５に挿入する柔軟性を有する。
【００２２】
一実施形態では、コンパイラ３１０は、待機命令を実行可能コード３１５に挿入し、マルチスレッド実行環境における命令間のソフトウェアの依存関係を管理する。コンパイラ３１０が所定の待機命令を実行可能コード３１５に挿入すると、所定の待機命令は、所定のスレッドの対応するロード又はストアカウンタを識別する。また、待機命令は、実行の継続が許可されるまで待機するための値を識別する。例えば、一実施形態では、待機命令は、待機するために０以外の値を指定することができ、特定のカウンタが指定された０以外の値に達した場合に、命令シーケンスからの後続の命令を実行することができる。
【００２３】
図４を参照すると、命令間の依存関係を管理するためのソフトウェアベースのアプローチを実施する方法４００の一実施形態が示されている。説明するために、本実施形態のステップ及び図５〜図７のステップは、順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素の１つ以上は、同時に行われてもよいし、図示した順序と異なる順序で行われてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加要素を実行することができる。本明細書で説明する様々なシステム又は装置は、方法４００を実施するように構成されている。
【００２４】
システムは、命令間の依存関係を管理するためのソフトウェアベースのアプローチを実施する（ブロック４０５）。一実施形態では、システム（例えば、図１のシステム１００）は、少なくとも１つの実行ユニットと、メモリサブシステムと、を含む。また、システムは、実施形態に応じて任意の数の他のコンポーネントを含むことができる。システムは、命令間の依存関係を管理するためのソフトウェアベースのアプローチをサポートする複数のカウンタを維持する（ブロック４１０）。一実施形態では、システムは、実行スレッド毎にカウンタのペアを維持し、カウンタのペアのうち第１カウンタは、ペンディング中のストア命令の数をトラッキングし、第２カウンタは、ペンディング中のロード命令の数をトラッキングする。システムの実行ユニットは、カウンタ値を参照することによって、ランタイム中に依存関係を管理する命令を実行するように構成されている（ブロック４１５）。ブロック４１５の後に、方法４００は終了する。
【００２５】
図５を参照すると、ペンディング中のロードカウンタ及びストアカウンタを管理する方法５００の一実施形態が示されている。システムは、第１スレッドのロード命令が実行されたことを検出したことに応じて、第１実行ユニットの第１カウンタをインクリメントするように構成されている（ブロック５０５）。また、システムは、ロード命令がターゲットとするデータがメモリサブシステムから読み出されたことを判別したことに応じて、第１カウンタをデクリメントするように構成されている（ブロック５１０）。さらに、システムは、第１スレッドのストア命令が実行されたことを検出したことに応じて、第１実行ユニットの第２カウンタをインクリメントするように構成されている（ブロック５１５）。さらにまた、システムは、ストア命令が完了したという肯定応答をメモリサブシステムから受信したことに応じて、第２カウンタをデクリメントするように構成されている（ブロック５２０）。また、システムは、第１カウンタ又は第２カウンタの何れかが所定値に等しくなるまで、第１実行ユニットをストールする待機命令を実行するように構成されている（ブロック５２５）。ブロック５２５の後に、方法５００は終了する。
【００２６】
図６を参照すると、ペンディング中のロード命令及びストア命令を個別に管理する方法６００の一実施形態が示されている。実行ユニットは、命令シーケンスの実行を開始する（ブロック６０５）。一実施形態では、実行ユニットは、ストア命令及びロード命令をインタリーブするマルチスレッド命令シーケンスを実行する。実行ユニットは、ロード命令が実行されたことを検出した場合に（条件付きブロック６１０：Ｙｅｓ）、ペンディング中のロードカウンタをインクリメントする（ブロック６１５）。実行ユニットは、ストアカウンタ命令が実行されたことを検出した場合（条件付きブロック６２０：Ｙｅｓ）、ペンディング中のストアカウンタをインクリメントする（ブロック６２５）。また、実行ユニットは、ペンディング中のロード命令のデータがメモリサブシステムから読み出されたという指標を受信した場合（条件付きブロック６３０：Ｙｅｓ）、ペンディング中のロードカウンタをデクリメントする（ブロック６３５）。さらに、実行ユニットは、ストア命令が完了したという肯定応答をメモリサブシステムから受信した場合（条件付きブロック６４０：Ｙｅｓ）、ペンディング中のストアカウンタをデクリメントする（ブロック６４５）。ブロック６４５の後に、方法６００はブロック６１０に戻る。
【００２７】
図７を参照すると、待機命令を実施する方法７００の一実施形態が示されている。プロセッサは、命令シーケンス内の待機命令を検出し、待機命令は、所定のカウンタ（例えば、ロードカウンタ、ストアカウンタ）の所定値を指定する（ブロック７０５）。次に、プロセッサは、待機命令を実行する（ブロック７１０）。所定のカウンタが所定値に達した場合に（条件付きブロック７１５：Ｙｅｓ）、プロセッサは、命令シーケンス内の後続の命令を実行する（ブロック７２０）。ブロック７２０の後に、方法７００は終了する。所定のカウンタが所定値に達していない場合（条件付きブロック７１５：Ｎｏ）、プロセッサは、命令シーケンス内の後続の命令を実行することが抑制される（ブロック７２５）。一実施形態では、プロセッサは、ブロック７２５において、特定のタイプの命令（例えば、ロード命令、ストア命令）のみを実行することが抑制される。ブロック７２５の後に、方法７００は条件付きブロック７１５に戻る。
【００２８】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述した方法及び／又はメカニズムを実施する。プログラム命令は、Ｃ言語等の高水準プログラミング言語でハードウェアの動作を記述する。或いは、Ｖｅｒｉｌｏｇ等のハードウェア設計言語（ＨＤＬ）が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多くのタイプの記憶媒体を利用することができる。記憶媒体は、使用中にコンピューティングシステムによってアクセス可能であり、プログラム命令及び付随するデータを、プログラムの実行のためにコンピューティングシステムに提供する。コンピューティングシステムは、プログラム命令を実行するように構成された少なくとも１つ以上のメモリ及び１つ以上のプロセッサを含む。
【００２９】
上述した実施形態は、実施態様の非限定な例に過ぎないことを強調しておきたい。いく上記の開示が十分に理解されれば、多くの変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲はこのような全ての変形及び修正を包含するように解釈されることを意図している。
【図１】
2020523652.tif 000003
【図２】
2020523652.tif 000004
【図３】
2020523652.tif 000005
【図４】
2020523652.tif 000006
【図５】
2020523652.tif 000007
【図６】
2020523652.tif 000008
【図７】
2020523652.tif 000009
【国際調査報告】
2020523652.tif 000010