JP4388916B2 - 複数の順序ベクトルで複数のメモリ順序モデルを実施する方法及び装置 - Google Patents

複数の順序ベクトルで複数のメモリ順序モデルを実施する方法及び装置 Download PDF

Info

Publication number
JP4388916B2
JP4388916B2 JP2005221620A JP2005221620A JP4388916B2 JP 4388916 B2 JP4388916 B2 JP 4388916B2 JP 2005221620 A JP2005221620 A JP 2005221620A JP 2005221620 A JP2005221620 A JP 2005221620A JP 4388916 B2 JP4388916 B2 JP 4388916B2
Authority
JP
Japan
Prior art keywords
order
memory
entry
bits
load
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.)
Expired - Fee Related
Application number
JP2005221620A
Other languages
English (en)
Other versions
JP2006048696A (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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2006048696A publication Critical patent/JP2006048696A/ja
Application granted granted Critical
Publication of JP4388916B2 publication Critical patent/JP4388916B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on 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/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Advance Control (AREA)

Description

本発明は、メモリ順序付けに関し、特に、1つのメモリ順序モデルに従う複数のメモリ操作の処理に関する。
メモリ命令処理は、1つの対象の命令セットアーキテクチャ(ISA)メモリ順序モデルに従って動作しなければならない。参考を目的として、インテル社の2つの主なISA、すなわち、Intel(インテル)(登録商標)アーキテクチャ(IA‐32またはx86)並びにインテルITANIUM(アイテニアム)(登録商標)プロセッサファミリ(IPF)は、極めて異なる複数のメモリ順序モデルを有する。IA‐32では、複数のロード及びストア操作がプログラム順に視認可能とならなければならない。IPFアーキテクチャでは、一般にこれらロード及びストア操作がそうなる必要はないが、複数の特別な命令が存在し、これら命令により、あるプログラマが、必要な場合(例えば、(ここで「ロード獲得」と称する)ロード獲得、(ここで「ストア解除」と称する)ストア解除、メモリフェンス及び複数のセマフォ)に順序付けを実施できる。
米国特許第6079012号明細書 米国特許第6065105号明細書 米国特許第5689679号明細書 米国特許第6182210号明細書 米国特許第6260131号明細書 米国特許第6484254号明細書 Patterson et al. "Computer Architecture: A Quantitative Approach" Morgan-Kaufmann Publishers, Third Edition. Pages 182-196. May 17, 2002 Foldoc. "Dynamic Random Access Memory" July 11, 1996. (http://foldoc.org )
複数のメモリ操作を順序正しく保つ1つの簡単ではあるが、低性能な戦略は、(1つのロードに対して、)1つの先のメモリ命令がそのデータを獲得するまで、または、(1つのストアに対して、)1つのキャッシュコヒーレンスプロトコルを介してオーナー権の確認を得るまで、1つのメモリ階層にアクセスすることを1つのメモリ命令に許可しないことである。
しかし、複数のソフトウェアアプリケーションは、複数の順序付きメモリ操作に、すなわち、複数のメモリ操作であって、これらメモリ操作が、その他の複数のメモリ操作及びそれら自体の1つの順序付けを課す前記複数のメモリ操作にますます依存してきている。1つのチップマルチプロセッサ(CMP)内で複数の並列スレッドを実行する間、複数の順序付きメモリ命令が、1つの単独アプリケーションの異なる複数のソフトウェアスレッドまたは複数のプロセス間で同期し、交信するように用いられる。複数のトランザクション処理及びマネージドランタイム環境は、効果的に機能するために複数の順序付きメモリ命令に依存する。更に、1つの強力なメモリ順序モデルISA(例えば、x86)から1つの弱いメモリ順序ISA(例えば、IPF)へ変換する複数のバイナリトランスレータは、変換されるアプリケーションが、強力なメモリ順序モデルにより実施された順序付けに依存すると仮定する。従って、複数のバイナリが変換される場合、これらは、複数のロード及び複数のストアを、順序付けられた複数のロード及び複数のストアと置き換えてプログラム正当性を保証しなければならない。
複数の順序付きメモリ操作の利用を増すにつれて、複数の順序付きメモリ操作の性能がより一層重要になってくる。現在の複数のx86プロセッサでは、複数のあらゆるメモリ操作が複数の順序付き操作であるので、無秩序な順序で複数の順序付きメモリ操作を処理することは、性能に関して既に致命的である。1つの強力なメモリ順序モデルを実施する複数のアウトオブオーダプロセッサは、複数のロードを無秩序な順序で投機的に実行し、次に、マシンステートに対するロード命令をコミットする前にいかなる順序違反も生じなかったことを確実にするために検査する場合がある。このことを、実行されたが、まだコミットされていない1つのロードキュー内の複数のロードアドレスを追跡し、複数の書き込みを別の複数の中央処理ユニット(CPU)または複数のキャッシュコヒーレントエージェントにより監視することによって行うことができる。別のCPUが、ロードキュー内の1つのロードと同じアドレスに書き込む場合、このCPUは、適合しているロードをトラップまたはリプレイし、(複数のあらゆる後のコミットされていないロードを根絶し、)その後、このロード及び複数のあらゆる後のロードを再実行して、1つの古いロードより前に、いかなる新しいロードも満足しないことを確実にできる。
しかし、複数のロード命令がそれらのデータをレジスタファイルへ戻す前にインオーダCPUは複数のロード命令をコミットできる。このような1つのCPUでは、複数のロードが複数のあらゆる違反検査(例えば、データ変換バッファ(DTB)ミス及び不整列アクセス)に合格すると直ちに、且つ、データが取り出される前に、複数のロードはコミットできる。複数のロード命令がリタイアした後、これらを再実行できない。それ故、複数のロードがリタイアした後、上述したように複数の別のCPUからの複数の書き込みを監視することに基づいて複数のロードをトラップ及び再フェッチするか、または再実行することは1つの選択肢ではない。
従って、特に、1つの弱いメモリ順序モデルを有する1つのプロセッサにおいて複数の順序付きメモリ操作の性能を改善する必要がある。
図1を参照する。図1には、本発明の一実施形態による1つのシステムの一部分を表す1つのブロック図を示す。特に、図1に示すように、システム10を、1つのパーソナルコンピュータ(例えば、1つのデスクトップコンピュータ、ノートブックコンピュータ、サーバーコンピュータなど)のような1つの情報処理システムとすることができる。図1に示すように、システム10は、1つのロードキュー20、1つのストアキュー30及び1つの結合(すなわち、1つのライトコンバイニング)バッファ40のような様々な複数のプロセッサ資源を含むことができる。ある複数の実施形態では、これらキュー及びバッファが、1つの中央処理ユニット(CPU)のようなシステムの1つのプロセッサ内に存在できる。例えば、ある複数の実施形態では、このような1つのCPUは、1つのIA−32または1つのIPFアーキテクチャに従って存在できるとはいえ、本発明の範囲がそのように限定されるものではない。別の複数の実施形態では、ロードキュー20及びストアキュー30を1つの単独のバッファ内に結合できる。
このような複数のプロセッサ資源を含む1つのプロセッサは、これらプロセッサ資源を、システム内で実行できる様々な複数のメモリ操作に対する一時記憶装置として用いることができる。例えば、複数のロード操作のような複数の特定のメモリ操作の複数のエントリを一時的にストアするように、そして、所定のメモリ操作自体が完了できる前に完了しなければならない複数の先のロードまたは複数のその他のメモリ操作を追跡するようにロードキュー20を用いることができる。同様に、複数のメモリ操作例えば複数のストア操作をストアするために、そして、1つの所定のメモリ操作自体がコミットできる前に完了しなければならない複数の先のメモリ操作(通常、複数のロード)を追跡するためにストアキュー30を用いることができる。様々な複数の実施形態では、メモリ操作(例えば、1つのストアまたはセマフォ)が完了またはコミットできるような時まで、1つのメモリ操作に対応するデータを一時的にストアする1つのバッファとして1つの結合バッファ40を用いることができる。
最も規則正しい複数のロード及び複数のストアは厳しいメモリ順序付けを課さないが、(複数のIPFプロセッサのように)1つの弱いメモリ順序モデルを有する1つのISAは、厳しいメモリ順序付けを必要とする複数の明示的な命令(例えば、ロード獲得、ストア解除、メモリフェンス及び複数のセマフォ)を含むことができる。1つの強力なメモリ順序モデルを有する1つのISA(例えば、1つのIA−32ISA)では、あらゆるロードまたはストア命令は、複数の厳しいメモリ順序付け規則に追随できる。従って、例えば、1つのIA−32環境から1つのIPF環境へ変換される1つのプログラムは、複数のあらゆるロードを複数のロード獲得と置き換え、複数のあらゆるストアを複数のストア解除と置き換えることにより適切なプログラム動作を確実にする強力なメモリ順序付けを課すことができる。
本発明の一実施形態による1つのプロセッサが1つのロード獲得を処理する場合、このプロセッサは、後の複数のロード及び複数のストアが処理される前にロード獲得が大域的な視認性を獲得していることを確実にする。従って、ロード獲得が1つの第1レベルデータキャッシュでミスしたら、後の複数のロードが第1レベルデータキャッシュでヒットした場合であっても、レジスタファイルを更新することを後の複数のロードに禁じることができ、ロード獲得がそのデータをレジスタファイルへ戻した後だけに複数の後のロードが書き込むブロックのオーナー権を後の複数のストアが検査しなければならない。このことを達成することを目的として、プロセッサは、1つの未完成のロード獲得よりも新しい複数のあらゆるロードをデータキャッシュでミスし、1つのロードキューすなわち1つのミスリクエストキュー(MRQ)に入るように強制して適切な順序付けを確実にすることができる。
本発明の一実施形態による1つのプロセッサが1つのストア解除を処理する場合、このプロセッサは、あらゆる先の複数のロード及び複数のストアが大域的な視認性を獲得していることを確実にする。従って、ストア解除がその書き込みを大域的に視認可能にさせることができる前に、複数のあらゆる先のロードはデータをレジスタへ戻さなければならず、複数のあらゆる先のストアは、1つのキャッシュコヒーレンスプロトコルを介してオーナー権の視認性を獲得しなければならない。
複数のメモリフェンス及びセマフォ操作は、ロード獲得意味及びストア解除意味の双方の複数の要素を有する。
やはり図1を参照する。(ここでは、「MRQ20」とも称する)ロードキュー20が示されている。このロードキュー20は、1つの特定のメモリ操作(例えば、1つのロード)に対応する1つのエントリである1つのMRQエントリ25を含む。例示目的のためにただ1つのエントリ25を含むように示すが、複数のこのようなエントリが存在できる。複数のビットにより形成された1つの順序ベクトル26はMRQエントリ25と関連付けられている。順序ベクトル26の各ビットは、複数の先のメモリ操作が完了したかを示すためにロードキュー20内の1つのエントリに対応できる。従って、順序ベクトル26は、1つの関連のメモリ操作が完了できる前に完了すべき複数の先のロードを追跡できる。
ロードキュー20内にストアされた続いて起こる複数のメモリ操作をMRQエントリ25に対して順序付けるべきであることを示すのに用いることができる1つの順序ビット(Oビット)27もMRQエントリ25と関連付けられている。更に、1つの有効ビット28も存在できる。図1に更に示すように、MRQエントリ25は、このMRQエントリのメモリ操作に対応する1つのストアバッファ内の1つのエントリを識別するのに用いることができる1つの順序ストアバッファ識別子(ID)29を含むこともできる。
同様に、(ここでは、「STB30」とも称する)ストアキュー30は複数のエントリを含むことができる。例示目的を達成するため、ただ1つのSTBエントリ35を図1に示す。STBエントリ35は、1つの所定のメモリ操作(すなわち、1つのストア)に対応できる。図1に示すように、STBエントリ35は、これと関連する1つの順序ベクトル36を有することができる。このような1つの順序ベクトルは、ロードキュー20内の、幾つかの実施形態では選択的にストアキュー30内の複数の先のメモリ操作に対するSTBエントリ35に対応のメモリ操作の相対的な順序付けを示すことができる。従って、順序ベクトル36は、1つの関連のメモリ操作がコミットできる前に完了しなければならないMRQ20内の複数の先のメモリ操作(通常、複数のロード)を追跡できる。図1に示されていないが、ある複数の実施形態では、1つの先のメモリ操作(通常、STB内の1つのストア)が、今はコミットされていることを示すためにSTB30は1つのSTBコミット通知を(例えば、MRQへ)供給できる。
様々な複数の実施形態では、結合バッファ40は、複数のあらゆる書き込み操作が視認性を獲得したことを示すのに用いることができる1つの信号45(すなわち、1つの「全先行書き込み視認可能」信号)を送信できる。このような1つの実施形態では、コミットすることを遅らしたSTB30内の、解除の意味に関する1つのメモリ操作(通常、1つのストア解除、メモリフェンスまたはセマフォ解除)が、今はコミットできることを信号45の受信時に通知するように信号45を用いることができる。信号45の使用を以下に更に論ずる。
総合して、これら複数の機構は、発生された複数のメモリ操作の意味により、必要に応じてメモリ順序付けを実施できる。ある複数の実施形態による1つのプロセッサが、1つの弱いメモリ順序モデルを用いる複数のネイティブバイナリを活用することを目的として、所望であれば、複数の順序付け制約だけを実施できるので、これら複数の機構は高性能を促進できる。
更に、様々な複数の実施形態では、複数のロードのための複数の順序ベクトル検査を、可能な限り遅く、延期できる。このことは、2つの含みを持つ。第1に、複数のパイプラインメモリアクセスに関して、複数の順序付け制約を必要とする複数のロードは、(1次データキャッシュをミスすることを余儀なくされることを除いて)キャッシュ階層に正常にアクセスする。これにより、複数の順序付け制約が検査される前に1つのロードが、複数の2次及び3次レベルキャッシュ並びにその他の複数のプロセッサソケットキャッシュ及びメモリにアクセスできる。ロードデータがレジスタファイルに書き込もうとしている時にだけ、複数のあらゆる制約を満足することを確実にするように順序ベクトルが検査される。1つのロード獲得が1次データキャッシュをミスすると、例えば、(完了のためにロード獲得を待つ必要がある)1つの後のロードは、ロード獲得のシャドウ内の要求に着手できる。後のロードがデータを戻す前にロード獲得がデータを戻せば、後のロードは、順序付け制約によるいかなる性能ペナルティも受けない。従って、最良の場合では、複数のロード操作が完全にパイプライン処理されるが、順序付けを実施できる。
第2に、データのプリフェッチに関して、1つの後のロードが1つの先のロード獲得の前にデータを戻そうと試みる場合、CPUキャッシュ内のアクセスされたブロックを効果的にプリフェッチする。ロード獲得がデータを戻した後、後のロードはロードキューから再試行し、キャッシュからデータを獲得できる。1つの介在する大域的に視認可能な書き込みがキャッシュラインを無効にさせ、この結果、1つの更新されたコピーを獲得するのにキャッシュブロックが再フェッチされるので、順序付けを維持できる。
図2を次に参照する。図2には、本発明の一実施形態により1つのロード命令を処理する一方法を表す1つの流れ図を示す。このような1つのロード命令を、1つのロードまたは1つのロード獲得命令とすることができる。図2に示すように、1つのロード命令を受信すること(ステップ102)により方法100を開始できる。複数のいかなる後のロードまたはストア操作も大域的に視認可能になる前に1つのロード獲得命令が大域的に視認可能になる複数のメモリ順序付け規則を用いる1つのプロセッサで、このような1つの命令を実行できる。あるいはまた、ある複数のプロセッサ環境では、1つのロード命令を順序付けする必要がない。図2の方法を用いて複数のロード命令を処理できるが、複数の別の実施形態では、複数の後のメモリ操作の前に1つの最初のメモリ操作が視認可能になる必要がある複数の別のプロセッサの複数のメモリ順序付け規則に適合する複数の別のメモリ操作を処理するために、1つの類似の流れを用いることができる。
やはり図2を参照する。次に、いずれかの複数の先の順序付き操作が1つのロードキュー内で未完成であるかを決定できる(ステップ105)。このような複数の操作は、複数のロード獲得命令や複数のメモリフェンスなどを含むことができる。このような複数の操作が未完成であれば、ロードを1つのロードキュー内にストアできる(ステップ170)。更に、ロードキュー内のエントリに対応する1つの順序ベクトルを、複数の先のエントリの複数の順序ビットに基づいて発生できる(ステップ180)。すなわち、発生された順序ベクトル内の複数の順序ビットは、複数のロード獲得や複数のメモリフェンスなどのような複数の順序付け可能な操作のために存在できる。一実施形態では、MRQエントリは、複数のあらゆるMRQエントリの複数のOビットを複製してその順序ベクトルを発生できる。例えば、5つの先のMRQエントリが存在し、各々が、まだ大域的に視認可能になっていなければ、6番目のエントリに対する順序ベクトルは、5つの先のMRQエントリの各々に対して1つのある値を含むことができる。その後、制御は、以下に更に論ずるひし形115へ移動できる。図2は、1つの現在のエントリがストアキュー内の複数の先の順序付け操作に依存できることを示しているが、現在のエントリは、ストアキュー内の複数の先の順序付け操作にも依存でき、従って、いずれかのこのような複数の操作がストアキュー内に存在するかどうかをも決定できる。
代わりに、ステップ105において、いずれの複数の先の順序付き操作もロードキュー内で未完成でないことを決定すれば、データが1つのデータキャッシュに存在するかを決定できる(ステップ110)。存在すれば、データをデータキャッシュから獲得でき(ステップ118)、通常処理を続けることができる。
ひし形115では、命令が1つのロード獲得操作であるかを決定できる。ロード獲得操作でなければ、データを獲得するために制御は図3へ移動できる(ステップ195)。代わりに、ひし形115において、命令が1つのロード獲得操作であることを決定すれば、制御はステップ120へ移動でき、ここでは、データキャッシュでミスするように複数の後のロードに強要できる(ステップ120)。次に、発生された時にMRQエントリはそれ自体のOビットを設定することもできる(ステップ150)。複数の後のMRQエントリはこのような1つの順序ビットを用いて、それらの順序ベクトルを、現在存在する複数のMRQエントリに対して設定する仕方を決定できる。言い換えれば、1つの後のロードは、1つの対応のビットをそれに応じて順序ベクトル内に設定することにより1つのMRQエントリのOビットに気付くことができる。次に、制御は、以下に論ずる図3に対応するステップ195へ移動できる。
図2に示されていないが、ある複数の実施形態では、複数の後のロード命令を1つのMRQエントリ内にストアし、1つのOビットと、これに対応する1つの順序ベクトルとを発生できる。すなわち、複数の後のロードは、現存の複数のMRQエントリの複数のOビットを複製することにより順序ベクトルを設定する仕方を決定できる(すなわち、1つの後のロードは、対応のビットをそのMRQエントリの順序ベクトル内に設定することによりロード獲得のOビットに気付く)。図2に示されていないが、当然のことながら、複数の後の(すなわち、非解除)ストアは、MRQエントリの複数のOビットに基づいて複数のロードが決定したように、順序ベクトルを設定する仕方を決定できる。
図3を次に参照する。図3には、本発明の一実施形態によりデータをロードする一方法を表す1つの流れ図を示す。図3に示すように、1つのロードデータ操作からプロセス200を開始できる(ステップ205)。次に、ロード命令に対応するメモリ階層からデータを受信できる(ステップ210)。このようなデータは、システムメモリまたは、これと関連する1つのキャッシュのような、あるいは、1つのプロセッサと関連する1つのオンまたはオフチップキャッシュのような1つのメモリ階層の様々な複数の位置に存在できる。データがメモリ階層から受信されると、データをデータキャッシュまたはその他の一次記憶場所に記憶できる。
次に、ロード命令に対応する1つの順序ベクトルを分析できる(ステップ220)。例えば、ロード命令に対応する1つのロードキュー内の1つのMRQエントリは、関連の1つの順序ベクトルを有することができる。順序ベクトルがクリアであるかを決定するために順序ベクトルを分析できる(ステップ230)。図3の実施形態では、順序ベクトルの複数のあらゆるビットがクリアであれば、このことは、複数のあらゆる先のメモリ操作が完了されていることを示すことができる。順序ベクトルがクリアでなければ、このことは、複数のこのような先の操作が完了されておらず、従って、データが戻されていないことを示す。代わりに、ロード操作はロードキュー内でスリープ状態に入り(ステップ240)、複数の先のロード獲得操作のような複数の先のメモリ操作からの進展を待つ。
代わりに、ステップ230において順序ベクトルがクリアであると決定されると、制御をステップ250へ移動でき、ここでは、データを1つのレジスタファイルへ書き込むことができる。次に、ロード命令に対応するエントリを割り当て解除できる(ステップ260)。最後に、ステップ270において、完了された(すなわち、割り当て解除された)ロード操作に対応する順序ビットを、ロードキュー及びストアキュー内の複数のあらゆる後のエントリから列消去できる。このように、これら複数の順序ベクトルを、現在の操作の完了された状態で更新できる。
1つのストア操作が、大域的な視認性を獲得しようと試みようとしていれば(例えば、ストアバッファから結合バッファへコピーアウトし、キャッシュブロックに対するオーナー権を要求しようとしていれば)、順序ベクトルがクリアであることを確実にするために最初に検査できる。クリアでなければ、順序ベクトルが完全にクリアになるまで操作を保留できる。
図4を次に参照する。図4には、本発明の一実施形態により1つのストア命令を処理する一方法を表す1つの流れ図を示す。このような1つのストア命令を、1つのストアまたは1つのストア解除命令とすることができる。ある複数の実施形態では、1つのストア命令を順序付ける必要がある。しかし、ある複数のプロセッサで用いる複数の実施形態では、複数のメモリ順序付け規則は、1つのストア解除操作自体が大域的に視認可能になる前に複数のあらゆる先のロードまたはストア操作が大域的に視認可能となっているということを決定付けることができる。複数のストア命令に関して図4の実施形態で論ずるが、当然のことながら、このような1つの流れまたは1つの類似の流れを用いて、所定の操作の視認性より前に視認可能になる複数の先のメモリ操作を必要とする複数の類似のメモリ順序付け操作を処理できる。
やはり図4を参照する。1つのストア命令を受信することによりプロセス400を開始できる(ステップ405)。ステップ410では、ストア命令をストアキューの1つのエントリ内に挿入できる。次に、操作が1つのストア解除操作であるかを決定できる(ステップ415)。ストア解除操作でなければ、エントリに対する1つの順序ベクトルを、(順序ビットセットを有する)ロードキュー内の複数のあらゆる先の未完成の順序付き操作に基づいて発生できる(ステップ425)。ストア命令が1つの順序付き命令でないので、このような順序ベクトルを、順序ビットセットなしに発生できる。次に、以下に更に論ずるステップ430へ制御が移動できる。
代わりに、ステップ415において1つのストア解除操作が存在することを決定すれば、次に、エントリに対する1つの順序ベクトルを、ロードキュー内の複数のあらゆる先の未完成の順序付け可能な操作に関する情報に基づいて発生できる(ステップ420)。上述したように、このような1つの順序ベクトルは、目下の複数のメモリ操作(例えば、1つのMRQ内の複数の未完成のロード、並びに、複数のメモリフェンス及びその他のこのような複数の操作)に対応する複数のビットを含むことができる。
ステップ430では、順序ベクトルがクリアであるかを決定できる。順序ベクトルがクリアでなければ、順序ベクトルがクリアになるまで1つのループを実行できる。順序ベクトルがクリアになると、操作が1つの解除操作であるかを決定できる(ステップ435)。解除操作でなければ、以下に論ずるブロック445へ制御は直接に移動できる。代わりに、1つの解除操作が存在することを決定すれば、複数のあらゆる先の書き込みが視認性を獲得しているかを決定できる(ステップ440)。例えば、一実施形態では、命令に対応するデータが1つの所定のバッファまたはその他の記憶場所内に存在する時に複数のストアを視認可能とすることができる。獲得していなければ、複数のあらゆる先の書き込みが視認性を獲得するまで、ステップ440はそれ自体に関してループバックできる。このような視認性を獲得すると、制御はステップ445へ移動できる。
そこで、ストアは、キャッシュブロックへの書き込みに対する視認性を要求できる(ステップ445)。図4に示されていないが、ストアが、視認性を要求することを許可される時にデータを結合バッファ内にストアできる。一実施形態では、複数のあらゆる先のストアが視認性を獲得すれば、1つの結合バッファ視認性信号をアサートできる。このような1つの信号は、結合バッファによる確認時に、複数のあらゆる先のストア操作が大域的な視認性を獲得したことを示すことができる。一実施形態では、このような視認性を獲得するために1つのキャッシュ階層プロトコルに問い合わせできる。キャッシュ階層プロトコルが1つの肯定応答をストアバッファへ戻す時に、このような視認性を獲得できる。
ある複数の実施形態では、1つのストア解除操作に対する1つのキャッシュブロックは、ストア解除が視認性を獲得する状態にある時に所有される結合バッファ(MGB)内に既に存在できる。1つの適正な量のマージングがこれら複数のブロックに対するMGB内に存在すれば、MGBは、(例えば、複数のあらゆるストアが複数のストア解除である複数のコードセグメント内で)複数のストア解除の複数のストリームに対して高性能を維持できる。
ストアが視認性を獲得すれば、1つの肯定応答ビットを結合バッファ内のストアデータに設定できる。MGBは、各有効キャッシュブロックに対して、1つのオーナー権またはダーティビットとも称するこの肯定応答ビットを含むことができる。このような複数の実施形態では、MGBは次に、複数の有効エントリのすべてにわたって1つのOR操作を実行できる。いずれかの有効エントリが承認されなければ、「全先行書き込み視認可能」信号をデアサートできる。この肯定応答ビットが設定された後、エントリは大域的に視認可能になることができる。このように、ストアまたはストア解除命令に対して視認性を獲得できる(ステップ460)。当然のことながら、図4に説明した少なくとも幾つかの動作を、異なる複数の実施形態において別の順序で実行できる。例えば、一実施形態では、命令に対応するデータが1つの所定のバッファまたはその他の記憶場所内に存在する時に、複数の先の書き込みを視認可能にできる。
図5を次に参照する。図5には、本発明の一実施形態により1つのメモリフェンス(MF)操作を処理する一方法を表す1つの流れ図を示す。図5の実施形態では、いずれかの後の複数のロード及び複数のストアを視認可能にさせることができる前に1つのメモリフェンスに対してあらゆる先の複数のロード及び複数のストアが視認可能になっているということを決定付ける複数のメモリ順序付け規則を有する1つのプロセッサ内で1つのメモリフェンスを処理できる。一実施形態では、このような1つのプロセッサを1つのIPFプロセッサ、1つのIA−32プロセッサまたはその他のこのようなプロセッサとすることができる。
図5に示すように、1つのメモリフェンス命令を1つのプロセッサにより発生できる(ステップ505)。次に、1つのエントリを、このエントリに対応する複数の順序ベクトルを有する1つのロードキュー及び1つのストアキューの双方で発生できる(ステップ510)。特に、複数の順序ベクトルは、ロードキュー内の複数のあらゆる先の動作可能な操作に対応できる。MRQエントリを形成する際、ストアキューエントリに対応する1つのエントリ番号をロードキューエントリの1つのストア順序識別子(ID)領域に挿入できる(ステップ520)。特に、MRQは、メモリフェンスにより占められたSTBエントリを1つの「順序STBID」領域内に記録できる。次に、ロードキューエントリに対して順序ビットを設定できる(ステップ530)。後の複数のロード及び複数のストアが順序ベクトルにメモリフェンスを記録するように、メモリフェンスに対するMRQエントリはOビットを設定できる。
その後、複数のあらゆる先のストアが視認可能であるか、そして、ストアキュー内のエントリに対する順序ベクトルが現在クリアであるかを決定できる(ステップ535)。否定応答であれば、このような複数のストアが視認可能となり、順序ベクトルがクリアになるまで1つのループを実行できる。このことが生じていれば、制御はステップ550へ移動でき、ここでは、メモリフェンスエントリをストアキューから割り当て解除できる。
ストア解除処理でのように、順序ベクトルがクリアになり、1つの「全先行書き込み視認可能」信号を結合バッファから受信するまで、STBはMFを割り当て解除から阻止できる。メモリフェンスがSTBから割り当てを解除するとすぐ、メモリフェンスのストア順序キューIDをロードキューへ送信できる(ステップ560)。従って、ロードキューは、割り当て解除されたストアのストアキューIDを確認し、1つのコンテントアドレッサブルメモリ(CAM)操作を複数のあらゆるエントリの複数の順序ストアキューID領域にわたって実行できる。更に、ロードキュー内のメモリフェンスエントリを1つのスリープ状態から呼び起こすことができる。
次に、複数のロード及びキューエントリに対応する順序ビットを、ロードキュー及びストアキュー内のあらゆるその他の複数のエントリ(すなわち、後の複数のロード及び複数のストア)から列消去でき(ブロック570)、これによりこれらを完了させ、メモリフェンスをロードキューから割り当て解除できる。
本発明の一実勢形態による順序付けハードウェアも、その他の複数の理由で、メモリまたはその他の複数のプロセッサ操作の順序を制御できる。例えば、1つのロードを、このロードのデータのすべてではないが幾つか(部分的なヒット)を生じることができる1つの先のストアで順序付けることに用いることができる。複数のリードアフターライト(RAW)、ライトアフターリード(WAR)及びライトアフターライト(WAW)データ依存性ハザードを、メモリを通じて実施することに用いることができる。そして、ある複数の操作からその他の複数の操作へ(例えば、1つのセマフォから1つのロードへ、または、1つのストアから1つのセマフォへ)データを局部的にバイパスすることを阻止するのに用いることができる。更に、ある複数の実施形態では、複数のセマフォは、同一のハードウェアを用いて適切な順序付けを実施できる。
図6を次に参照する。図6には、本発明の一実施形態による1つの典型的なコンピュータシステム600を表す1つのブロック図を示す。図6に示すように、コンピュータシステム600は、1つのプロセッサ601aを含む。一実施形態では、プロセッサ601aを1つのメモリシステム相互接続部620を超えて1つのキャッシュコヒーレント共有メモリサブシステム(「コヒーレントメモリ630」)630に結合できる。一実施形態では、コヒーレントメモリ630は1つのダイナミックランダムアクセスメモリ(DRAM)を含むことができ、プロセッサ601aとプロセッサ601bとの間でコヒーレントメモリ630を共有するのにコヒーレントメモリコントローラロジックを更に含むことができる。
当然のことながら、別の複数の実施形態では、追加の複数のこのようなプロセッサをコヒーレントメモリ630に結合できる。更に、ある複数の実施形態では、システム600内の複数のプロセッサの一部がコヒーレントメモリ630の幾つかの部分に通じ、その他の複数のプロセッサがコヒーレントメモリ630のその他の複数の部分に通じるようにコヒーレントメモリ630を部分ごとに散開して実装できる。
図6に示すように、本発明の一実施形態によれば、プロセッサ601aは1つのストアキュー30a、1つのロードキュー20a及び1つの結合バッファ40aを含むことができる。また、ある複数の実施形態では、結合バッファ40aからストアキュー30aへ供給できる1つの視認信号45aも示す。更に、1つのレベル2(L2)キャッシュ607をプロセッサ601aに結合できる。図6に更に示すように、類似の複数のプロセッサ部品は、1つの多重プロセッサシステムのもう1つのコアプロセッサとすることができるプロセッサ601b内に存在できる。
コヒーレントメモリ630を(1つのハブリングを介して)1つの入力/出力(I/O)ハブ635にも結合でき、このI/Oハブ635は、1つのI/O拡張バス655及び1つの周辺バス650に結合されている。様々な複数の実施形態では、I/O拡張バス655を、その他の複数の装置のうちで1つのキーボード及びマウスのような様々な複数のI/O装置に結合できる。周辺バス650を、1つのフラッシュメモリやアドインカードなどのような1つのメモリ装置とすることができる周辺装置670のような様々な複数の部品に結合できる。この記述は、システム600の特定の複数の部品について言及するが、図に示した複数の実施形態の多数の変形が実現可能である。
複数の実施形態を実行するように1つのコンピュータシステムをプログラムする複数の命令を有する1つの記憶媒体に記憶できる1つのコンピュータプログラムで複数の実施形態を実施できる。記憶媒体は、複数のフロッピー(登録商標)ディスク、複数の光ディスク、複数のコンパクトディスク読み取り専用メモリ(CD‐ROM)、複数のコンパクトディスクリライタブル(CD−RW)及び複数の光磁気ディスクを含むいかなる種類のディスクや、複数の読み取り専用メモリ(ROM)、複数のランダムアクセスメモリ(RAM)例えばダイナミックRAM及びスタティックRAM、複数の消去可能プログラマブル読み取り専用メモリ(EPROM)、複数の電気的に消去可能なプログラマブル読み取り専用メモリ(EEPROM)、複数のフラッシュメモリのような複数の半導体装置や、複数の磁気または光カードや、あるいは、複数の電子命令を記憶するのに適するいかなる種類の記憶媒体をも含むことができるが、これらに限定されない。1つのプログラム可能な制御装置により実行される複数のソフトウェアモジュールとして別の複数の実施形態を実施できる。
本発明を、限られた数の実施形態について説明したが、当業者は、これら実施形態から多数の修正形態及び変更形態を理解するであろう。請求の範囲は、本発明の真の精神及び範囲に含まれるこのような複数の修正形態及び変更形態のすべてに及ぶものとする。
本発明の一実施形態による1つのシステムの一部分を示す1つのブロック図である。 本発明の一実施形態により1つのロード命令を処理する一方法を示す1つの流れ図である。 本発明の一実施形態によりデータをロードする一方法を示す1つの流れ図である。 本発明の一実施形態により1つのストア命令を処理する一方法を示す1つの流れ図である。 本発明の一実施形態により1つのメモリフェンスを処理する一方法を示す1つの流れ図である。 本発明の一実施形態による1つのシステムを示す1つのブロック図である。
符号の説明
10 システム
20 ロードキュー
30 ストアキュー
40 バッファ

Claims (26)

  1. 操作順序キュー内に存在しシステムの操作に対応するエントリに関連付けられ順序ベクトルを生成して、前記順序ベクトルを記憶する工程と、
    前記順序ベクトルに基づいて前記操作の処理を阻止する工程と
    備え、
    前記順序ベクトルは、前記操作順序キュー内の他の関連するエントリにそれぞれ対応する複数のビットを有し、前記複数のビットのそれぞれは、それぞれ対応する前記関連するエントリの操作が完了した状態と、それぞれ対応する前記関連するエントリの操作が完了していない状態とのいずれかを示し、
    前記操作順序キュー内の各エントリには、それぞれ対応する操作に関連する順序ビットが関連付けられており、前記順序ビットは、前記対応するエントリのメモリ操作に対して、後続するメモリ操作が順序付けられるべきか否かを示し、
    前記順序ベクトルの前記生成は、前記操作順序キュー内に存在し完了していない先の複数のメモリ操作にそれぞれ対応する複数のエントリの前記順序ビットを、前記生成される順序ベクトルの前記複数のビットに複製することにより行われる
    方法。
  2. 前記操作の処理を阻止する工程は、前記順序ベクトルが有する複数のビットが先のメモリ操作が前記完了していない状態を示す場合に処理を阻止する
    請求項1に記載の方法。
  3. 先のメモリ操作が完了した場合に、前記順序ベクトルが有する当該メモリ操作に対応するビットを消去する工程
    さらに備える請求項1または2に記載の方法。
  4. 前記操作順序キューに存在し獲得の意味を有する複数のメモリ操作に対応する複数のエントリに対して前記順序ビットを設定する工程
    さらに備える請求項1から3のいずれかに記載の方法。
  5. 獲得の意味を有し完了していない状態のメモリ操作に対して後続するメモリ操作のデータがデータキャッシュに存在している場合であっても、データキャッシュでミスするように当該続するメモリ操作に強要し、当該後続するメモリ操作のエントリが前記操作順序キューに入るよう強制する工程
    さらに備える請求項1から4のいずれかに記載の方法。
  6. 前記操作の処理を阻止する工程は、前記操作順序キュー内に存在するエントリのメモリ操作によりロードされたデータをレジスタファイルに書き込む場合に、当該メモリ操作に対応するエントリに関連付けられた前記順序ベクトルの前記複数のビットを検査し、当該複数のビットの少なくともいずれかが前記完了していない状態を示す場合に処理をスリープさせ、当該複数のビットがそれぞれ前記完了した状態を示す場合に、ロードされたデータをレジスタファイルに書き込む
    請求項1から5のいずれかに記載の方法。
  7. 第1操作順序キュー内に存在しメモリ操作に対応するエントリ関連付けられ順序ベクトルを生成して、前記順序ベクトルを記憶する工程と、
    前記順序ベクトルに基づいて前記メモリ操作の処理を阻止する工程と
    備え、
    前記順序ベクトルは、第2操作順序キュー内のエントリにそれぞれ対応する複数のビットを有し、前記複数のビットのそれぞれは、それぞれ対応する前記関連するエントリのメモリ操作が完了した状態と、それぞれ対応する前記関連するエントリのメモリ操作が完了していない状態とのいずれかを示し、
    前記第2操作順序キュー内の各エントリには、それぞれ対応するメモリ操作に関連する順序ビットが関連付けられており、前記順序ビットは、前記対応するエントリのメモリ操作に対して、後続するメモリ操作が順序付けられるべきか否かを示し、
    前記順序ベクトルの前記生成は、前記第2操作順序キュー内に存在する複数のエントリの前記順序ビットを複製することにより行われ、
    前記メモリ操作の処理を阻止する工程は、前記順序ベクトルが有する前記複数のビットの少なくともいずれかが前記完了していない状態を示す場合に、前記メモリ操作の処理を阻止する
    方法。
  8. 前記メモリ操作の処理を阻止する工程は、前記順序ベクトルが有する前記複数のビットが、前記第2操作順序キュー内の先のメモリ操作が前記完了していない状態を示す場合に、前記メモリ操作の処理を阻止する
    請求項7に記載の方法。
  9. 先のメモリ操作が完了した場合に、前記順序ベクトルが有する当該メモリ操作に対応するビットを消去する工程
    さらに備える請求項8に記載の方法。
  10. 前記第1操作順序キューストアキューであり、前記第2操作順序キューロードキューである
    請求項7から9のいずれかに記載の方法。
  11. 前記ロードキュー内に存在し獲得の意味を有する複数のメモリ操作に対応する複数のエントリに対して前記順序ビットを設定する工程
    さらに備える請求項10に記載の方法。
  12. 前記メモリ操作の処理を阻止する工程は、前記第2操作順序キュー内に存在するエントリのメモリ操作によりロードされたデータをレジスタファイルに書き込む場合に、当該メモリ操作に対応するエントリに関連付けられた前記順序ベクトルの前記複数のビットを検査し、当該複数のビットの少なくともいずれかが前記完了していない状態を示す場合に処理をスリープさせ、当該複数のビットがそれぞれ前記完了した状態を示す場合に、ロードされたデータをレジスタファイルに書き込む
    請求項10または11に記載の方法。
  13. プログラムであって、コンピュータに
    操作順序キュー内に存在しシステムの操作に対応するエントリに関連付けられる順序ベクトルを生成して、前記順序ベクトルを記憶する工程と、
    前記順序ベクトルに基づいて前記操作の処理を阻止する工程と
    を実行させ、
    前記順序ベクトルは、前記操作順序キュー内の他の関連するエントリにそれぞれ対応する複数のビットを有し、前記複数のビットのそれぞれは、それぞれ対応する前記関連するエントリの操作が完了した状態と、それぞれ対応する前記関連するエントリの操作が完了していない状態とのいずれかを示し、
    前記操作順序キュー内の各エントリには、それぞれ対応するメモリ操作に関連する順序ビットが関連付けられており、前記順序ビットは、前記対応するエントリのメモリ操作に対して、後続するメモリ操作が順序付けられるべきか否かを示し、
    前記順序ベクトルの前記生成は、前記操作順序キュー内に存在し完了していない先の複数のメモリ操作にそれぞれ対応する複数のエントリの前記順序ビットを、前記生成される順序ベクトルの前記複数のビットに複製することにより行われる
    プログラム
  14. コンピュータに、
    少なくとも1つの先のメモリ操作完了した場合に前記順序ベクトルを更新する工程
    をさらに実行させる請求項13に記載のプログラム
  15. 獲得の意味を有し完了していない状態のメモリ操作に対して後続するメモリ操作のデータがデータキャッシュに存在している場合であっても、データキャッシュでミスするように当該続するメモリ操作に強要し、当該後続するメモリ操作のエントリが前記操作順序キューに入るよう強制する工程
    をさらに実行させる請求項13または14に記載のプログラム
  16. 前記操作の処理を阻止する工程は、前記操作順序キュー内に存在するエントリのメモリ操作によりロードされたデータをレジスタファイルに書き込む場合に、当該メモリ操作に対応するエントリに関連付けられた前記順序ベクトルの前記複数のビットを検査し、当該複数のビットの少なくともいずれかが前記完了していない状態を示す場合に処理をスリープさせ、当該複数のビットがそれぞれ前記完了した状態を示す場合に、ロードされたデータをレジスタファイルに書き込む
    請求項13から15のいずれかに記載のプログラム。
  17. ロードメモリ操作にそれぞれ対応する複数のエントリを記憶するとともに、前記複数のエントリのそれぞれが対応するロードメモリ操作の相対的な順序付けを示す順序ベクトルおよび当該対応するロードメモリ操作に対して後続するメモリ操作が順序付けられるべきか否かを示す順序ビットを、前記複数のエントリにそれぞれ関連付けて記憶するロードバッファ
    を備え、
    前記順序ベクトルは、前記ロードバッファ内の他の関連するエントリにそれぞれ対応する複数のビットを有し、前記複数のビットのそれぞれは、それぞれ対応する前記関連するエントリのロードメモリ操作が完了した状態と、それぞれ対応する前記関連するエントリのロードメモリ操作が完了していない状態とのいずれかを示し、
    前記ロードバッファは、前記ロードバッファ内に存在し完了していない先の複数のロードメモリ操作にそれぞれ対応する複数のエントリの前記順序ビットを、後続のロードメモリ操作に対応するエントリの前記複数のビットに複製することにより生成された前記順序ベクトルを記憶する
    装置。
  18. ストアメモリ操作にそれぞれ対応する複数のエントリを記憶するストアバッファ
    さらに備え、
    前記ストアバッファは、記憶している前記複数のエントリにそれぞれ対応するストアメモリ操作の相対的な順序付けを示す順序ベクトルを、当該複数のエントリのそれぞれに関連付けて記憶する
    請求項17に記載の装置。
  19. 前記ストアバッファに結合され、先のメモリ操作が視認可能である場合に信号を発生する結合バッファ
    さらに備える請求項18に記載の装置。
  20. 前記ロードバッファ内に記憶されているエントリのロードメモリ操作によりロードされたデータをレジスタファイルに書き込む場合に、当該ロードメモリ操作に対応するエントリに関連付けられた前記順序ベクトルの前記複数のビットを検査し、当該複数のビットの少なくともいずれかが前記完了していない状態を示す場合に処理をスリープさせ、当該複数のビットがそれぞれ前記完了した状態を示す場合に、ロードされたデータをレジスタファイルに書き込む
    請求項17から19のいずれかに記載の装置。
  21. メモリ操作に各々対応する複数のエントリを記憶するとともに、前記複数のエントリのそれぞれが対応するメモリ操作の相対的な順序付けを示す順序ベクトルおよび当該対応するメモリ操作に対して後続するメモリ操作が順序付けられるべきか否かを示す順序ビットを、前記複数のエントリにそれぞれ関連付けて記憶する第1バッファを有するプロセッサと、
    前記プロセッサに結合されたダイナミックランダムアクセスメモリと
    備え、
    前記順序ベクトルは、前記第1バッファ内の他の関連するエントリにそれぞれ対応する複数のビットを有し、前記複数のビットのそれぞれは、それぞれ対応する前記関連するエントリのメモリ操作が完了した状態と、それぞれ対応する前記関連するエントリのメモリ操作が完了していない状態とのいずれかを示し、
    前記第1バッファは、前記第1バッファ内に存在し完了していない先の複数のメモリ操作にそれぞれ対応する複数のエントリの前記順序ビットを、後続のメモリ操作に対応するエントリの前記複数のビットに複製することにより生成された前記順序ベクトルを記憶する
    システム。
  22. 前記プロセッサは、メモリ操作にそれぞれ対応する複数のエントリを記憶する第2バッファをさらに有し、
    前記第2バッファは、記憶している前記複数のエントリにそれぞれ対応するメモリ操作の相対的な順序付けを示す順序ベクトルを、当該複数のエントリのそれぞれに関連付けて記憶する
    請求項21に記載のシステム。
  23. 前記プロセッサは、複数の先のメモリ操作が視認可能である場合に信号を発生する前記第バッファに結合された結合バッファをさらに有する
    請求項22に記載のシステム。
  24. 前記プロセッサが、順序付けられていない方式で複数のロード命令を処理する命令セットアーキテクチャを有する
    請求項21から23のいずれかに記載のシステム。
  25. 前記プロセッサが、順序付けられていない方式で複数のストア命令を処理する命令セットアーキテクチャを有する
    請求項21から23のいずれかに記載のシステム。
  26. 前記プロセッサは、前記第1バッファ内に記憶されているエントリのロードメモリ操作によりロードされたデータをレジスタファイルに書き込む場合に、当該ロードメモリ操作に対応するエントリに関連付けられた前記順序ベクトルの前記複数のビットを検査し、当該複数のビットの少なくともいずれかが前記完了していない状態を示す場合に処理をスリープさせ、当該複数のビットがそれぞれ前記完了した状態を示す場合に、ロードされたデータをレジスタファイルに書き込む
    請求項21から23のいずれかに記載のシステム。
JP2005221620A 2004-07-30 2005-07-29 複数の順序ベクトルで複数のメモリ順序モデルを実施する方法及び装置 Expired - Fee Related JP4388916B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/903,675 US20060026371A1 (en) 2004-07-30 2004-07-30 Method and apparatus for implementing memory order models with order vectors

Publications (2)

Publication Number Publication Date
JP2006048696A JP2006048696A (ja) 2006-02-16
JP4388916B2 true JP4388916B2 (ja) 2009-12-24

Family

ID=35721659

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005221620A Expired - Fee Related JP4388916B2 (ja) 2004-07-30 2005-07-29 複数の順序ベクトルで複数のメモリ順序モデルを実施する方法及び装置

Country Status (4)

Country Link
US (1) US20060026371A1 (ja)
JP (1) JP4388916B2 (ja)
CN (1) CN100388186C (ja)
DE (1) DE102005032949A1 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7606998B2 (en) * 2004-09-10 2009-10-20 Cavium Networks, Inc. Store instruction ordering for multi-core processor
US7907673B2 (en) * 2006-10-26 2011-03-15 Telefonaktiebolaget L M Ericsson (Publ) Robust and low-complexity combined signal power estimation
JP4983919B2 (ja) * 2007-06-20 2012-07-25 富士通株式会社 演算処理装置および演算処理装置の制御方法
US8250336B2 (en) * 2008-02-25 2012-08-21 International Business Machines Corporation Method, system and computer program product for storing external device result data
US8615647B2 (en) 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
JP5541491B2 (ja) * 2010-01-07 2014-07-09 日本電気株式会社 マルチプロセッサ、これを用いたコンピュータシステム、およびマルチプロセッサの処理方法
US8412888B2 (en) * 2011-01-06 2013-04-02 International Business Machines Corporation Cache-based speculation of stores following synchronizing operations
FR2982683B1 (fr) * 2011-11-10 2014-01-03 Sagem Defense Securite Procede de sequencement sur un processeur multicoeur.
CN104583939B (zh) * 2012-06-15 2018-02-23 英特尔公司 用于选择指令的***和方法
EP2862061A4 (en) 2012-06-15 2016-12-21 Soft Machines Inc MEMORY PRECISION FOR VIRTUAL LOAD WITH DYNAMIC SHIPPING WINDOW WITH UNIFORM STRUCTURE
WO2013188460A2 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. A virtual load store queue having a dynamic dispatch window with a distributed structure
KR102248470B1 (ko) * 2012-06-15 2021-05-06 인텔 코포레이션 메모리로부터 순차적으로 판독하는 load들을 구성하는 메모리 일관성 모델에서 비순차 load들을 갖는 세마포어 방법 및 시스템
CN104583942B (zh) * 2012-06-15 2018-02-13 英特尔公司 乱序加载的基于锁的和基于同步的方法
KR101818967B1 (ko) 2012-06-15 2018-01-16 인텔 코포레이션 명확화 없는 비순차 load store 큐
EP2862069A4 (en) 2012-06-15 2016-12-28 Soft Machines Inc DEFINING INSTRUCTIONS TO REORDER AND OPTIMIZE LOADING AND STORAGE
EP2862068B1 (en) 2012-06-15 2022-07-06 Intel Corporation Reordered speculative instruction sequences with a disambiguation-free out of order load store queue
CN104823168B (zh) 2012-06-15 2018-11-09 英特尔公司 用于实现从由加载存储重新排序和优化导致的推测性转发遗漏预测/错误中恢复的方法和***
KR102008733B1 (ko) * 2012-06-15 2019-08-09 소프트 머신즈, 인크. 스토어 상위 서열에 기초하여 상이한 스레드들로부터의 포워딩을 구현하는 스레드에 무관한 로드 스토어 버퍼
US9218289B2 (en) * 2012-08-06 2015-12-22 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
US9875185B2 (en) * 2014-07-09 2018-01-23 Intel Corporation Memory sequencing with coherent and non-coherent sub-systems
US10353680B2 (en) * 2014-07-25 2019-07-16 Intel Corporation System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence
US9733909B2 (en) 2014-07-25 2017-08-15 Intel Corporation System converter that implements a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address
US20160026486A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. An allocation and issue stage for reordering a microinstruction sequence into an optimized microinstruction sequence to implement an instruction set agnostic runtime architecture
WO2016014866A1 (en) 2014-07-25 2016-01-28 Soft Machines, Inc. System for an instruction set agnostic runtime architecture
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
US20160026484A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. System converter that executes a just in time optimizer for executing code from a guest image
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US10140057B2 (en) * 2016-02-18 2018-11-27 Micron Technology, Inc. Apparatuses and methods for multiple address registers for a solid state device
CN105808654A (zh) * 2016-02-29 2016-07-27 湖南蚁坊软件有限公司 一种针对流数据的二级排序方法
US10474461B2 (en) * 2016-09-22 2019-11-12 Qualcomm Incorporated Instruction-based synchronization of operations including at least one SIMD scatter operation
US11113065B2 (en) 2019-04-03 2021-09-07 Advanced Micro Devices, Inc. Speculative instruction wakeup to tolerate draining delay of memory ordering violation check buffers
CN112486638A (zh) * 2019-09-11 2021-03-12 百度时代网络技术(北京)有限公司 用于执行处理任务的方法、装置、设备和存储介质
US11494306B2 (en) 2019-09-20 2022-11-08 Micron Technology, Inc. Managing data dependencies in a transfer pipeline of a hybrid dimm
US11531622B2 (en) 2019-09-20 2022-12-20 Micron Technology, Inc. Managing data dependencies for out of order processing in a hybrid DIMM

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689679A (en) * 1993-04-28 1997-11-18 Digital Equipment Corporation Memory system and method for selective multi-level caching using a cache level code
DE69423206T2 (de) * 1994-04-28 2000-09-07 Hewlett-Packard Co., Palo Alto Rechnervorrichtung mit Mitteln zum Erzwingen der Ausführung von Befehlen in regelmässiger Folge
JP3005456B2 (ja) * 1995-06-16 2000-01-31 甲府日本電気株式会社 ベクトル処理装置
JPH09120383A (ja) * 1995-10-25 1997-05-06 Fujitsu Ltd データ入出力方法及びそのためのデータ入出力装置
US6065105A (en) * 1997-01-08 2000-05-16 Intel Corporation Dependency matrix
US6260131B1 (en) * 1997-11-18 2001-07-10 Intrinsity, Inc. Method and apparatus for TLB memory ordering
US6463522B1 (en) * 1997-12-16 2002-10-08 Intel Corporation Memory system for ordering load and store instructions in a processor that performs multithread execution
US6182210B1 (en) * 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
CN1111297C (zh) * 1998-07-15 2003-06-11 北京多思科技工业园股份有限公司 指令控制排序方法及其装置
US6385708B1 (en) * 1998-11-16 2002-05-07 Infineon Technologies Ag Using a timing-look-up-table and page timers to determine the time between two consecutive memory accesses
US6484254B1 (en) * 1999-12-30 2002-11-19 Intel Corporation Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses
US7149857B2 (en) * 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer

Also Published As

Publication number Publication date
CN1728087A (zh) 2006-02-01
JP2006048696A (ja) 2006-02-16
US20060026371A1 (en) 2006-02-02
CN100388186C (zh) 2008-05-14
DE102005032949A1 (de) 2006-02-23

Similar Documents

Publication Publication Date Title
JP4388916B2 (ja) 複数の順序ベクトルで複数のメモリ順序モデルを実施する方法及び装置
CN101308462B (zh) 管理对共享存储器单元的存储器访问的方法和计算***
US8255626B2 (en) Atomic commit predicated on consistency of watches
JP5507706B2 (ja) バッファリングストアを利用してトランザクションを高速化するための機構
CN102968292B (zh) 无约束事务存储器***
US20180011748A1 (en) Post-retire scheme for tracking tentative accesses during transactional execution
US8738862B2 (en) Transactional memory system with efficient cache support
US9104427B2 (en) Computing system with transactional memory using millicode assists
US8176266B2 (en) Transaction based shared data operations in a multiprocessor environment
JP5118652B2 (ja) アウトオブオーダープロセッサにおけるトランザクショナルメモリ
US20100162247A1 (en) Methods and systems for transactional nested parallelism
US20040123078A1 (en) Method and apparatus for processing a load-lock instruction using a scoreboard mechanism
US10970077B2 (en) Processor with multiple load queues including a queue to manage ordering and a queue to manage replay
US20050154832A1 (en) Consistency evaluation of program execution across at least one memory barrier
JP2022526057A (ja) メモリ順序付け違反チェックバッファの排出遅延を許容するための投機的命令ウェイクアップ
JP2001216160A (ja) 長レイテンシ命令に対する命令属性およびステータス情報を示す処理システムおよび方法
US9251074B2 (en) Enabling hardware transactional memory to work more efficiently with readers that can tolerate stale data
CN112236750A (zh) 处理支持事务存储器的设备中的独占式加载指令

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090318

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090331

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090608

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091005

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121009

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees