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

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

Info

Publication number
JP2006048696A
JP2006048696A JP2005221620A JP2005221620A JP2006048696A JP 2006048696 A JP2006048696 A JP 2006048696A JP 2005221620 A JP2005221620 A JP 2005221620A JP 2005221620 A JP2005221620 A JP 2005221620A JP 2006048696 A JP2006048696 A JP 2006048696A
Authority
JP
Japan
Prior art keywords
order
memory
queue
entry
instructions
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.)
Granted
Application number
JP2005221620A
Other languages
English (en)
Other versions
JP4388916B2 (ja
Inventor
George Chrysos
クリュソス ジョージ
Ugonna Echeruo
イーチェルオ ウゴンナ
Chyi-Chang Miao
ミャオ チーチャン
James Vash
バッシュ ジェームス
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)

Abstract

【課題】1つの弱いメモリ順序モデルを有するプロセサにおける複数の順序付きメモリ操作の性能改善。
【解決手段】1つの第1メモリ操作に対応する操作順序キュー内の第1エントリに対応する1つの第1順序ベクトルを発生する工程と、第1メモリ操作が完了するまで、1つの後のメモリ操作を完了させないようにする工程とを含む。この方法では、操作順序キューを、例えば1つのロードキューまたは1つのストアキューとすることができる。同様に、1つの第1操作順序キューの1つのエントリに対する順序ベクトルを、1つの第2操作順序キュー内の複数のエントリに基づいて発生できる。更に、このような1つのエントリは、第2操作順序キュー内の1つのエントリを識別する1つの領域を含むことができる。1つの結合バッファを第1操作順序キューに結合でき、複数のあらゆる先の書き込みが視認可能になった時に結合バッファは1つの信号を発生できる。
【選択図】図1

Description

本発明は、メモリ順序付けに関し、特に、1つのメモリ順序モデルに従う複数のメモリ操作の処理に関する。
メモリ命令処理は、1つの対象の命令セットアーキテクチャ(ISA)メモリ順序モデルに従って動作しなければならない。参考を目的として、インテル社の2つの主なISA、すなわち、Intel(インテル)(登録商標)アーキテクチャ(IA‐32またはx86)並びにインテルITANIUM(アイテニアム)(登録商標)プロセッサファミリ(IPF)は、極めて異なる複数のメモリ順序モデルを有する。IA‐32では、複数のロード及びストア操作がプログラム順に視認可能とならなければならない。IPFアーキテクチャでは、一般にこれらロード及びストア操作がそうなる必要はないが、複数の特別な命令が存在し、これら命令により、あるプログラマが、必要な場合(例えば、(ここで「ロード獲得」と称する)ロード獲得、(ここで「ストア解除」と称する)ストア解除、メモリフェンス及び複数のセマフォ)に順序付けを実施できる。
複数のメモリ操作を順序正しく保つ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 (30)

  1. 1つの操作順序キュー内の1つのエントリであって、1つのシステムの1つの操作に対応する前記エントリに関連付けられた1つの順序ベクトルを発生する工程と、
    前記順序ベクトルに基づいて前記操作の処理を阻止する工程と
    を具える1つの方法。
  2. 請求項1の方法において、前記順序ベクトルが、前記操作順序キュー内の1つの関連のエントリに各々対応する複数のビットを有する当該方法。
  3. 請求項2の方法であって、未完成の複数の先の操作を表す前記順序ベクトル内の複数のビットに基づいて処理を阻止する工程を更に具える当該方法。
  4. 請求項2の方法であって、1つの対応の先の操作が完了する時に前記順序ベクトルの1つの所定のビットを消去する工程を更に具える当該方法。
  5. 請求項1の方法において、前記順序ベクトルが、前記操作順序キュー内の各エントリと関連付けられた1つの順序ビットを有する当該方法。
  6. 請求項5の方法であって、解除の意味に関する複数のメモリ操作に対応する前記操作順序キュー内の複数のエントリに対して前記順序ビットを設定する工程を更に具える当該方法。
  7. 請求項5の方法において、前記順序ベクトルを発生する工程が、先の未完成の複数の先のメモリ操作に対応する前記複数の順序ビットを前記順序ベクトル内へコピーする工程を有する当該方法。
  8. 請求項1の方法であって、1つのデータキャッシュでミスするように1つの後のメモリ操作に強要する工程を更に具える当該方法。
  9. 請求項1の方法であって、前記操作に対応する1つの第1順序ビットを設定する工程を更に具える当該方法。
  10. 請求項9の方法であって、前記操作が完了する時に前記第1順序ビットを消去する工程を更に具える当該方法。
  11. 請求項9の方法であって、1つの後の操作に対応し、前記第1順序ビットを含む1つの別の順序ベクトルを発生する工程を更に具える当該方法。
  12. 1つの第1操作順序キュー内の1つのエントリであって、1つのメモリ操作に対応する前記エントリと関連付けられた1つの順序ベクトルであって、1つの第2操作順序キュー内の1つのエントリに各々対応する複数のビットを有する前記順序ベクトルを発生する工程と、
    前記順序ベクトルに基づいて前記メモリ操作の処理を阻止する工程と
    を具える1つの方法。
  13. 請求項12の方法であって、前記第2操作順序キュー内の未完成の複数の先のメモリ操作を表す前記順序ベクトル内の複数のビットに基づいて前記処理を阻止する工程を更に具える当該方法。
  14. 請求項13の方法であって、1つの対応の先のメモリ操作が完了する時に前記順序ベクトルの1つの所定のビットを消去する工程を更に具える当該方法。
  15. 請求項12の方法において、前記第1操作順序キューが1つのストアキューを有し、前記第2操作順序キューが1つのロードキューを有する当該方法。
  16. 請求項15の方法において、前記順序ベクトルが、前記ロードキュー内の各エントリに関連付けられた1つの順序ビットを有する当該方法。
  17. 請求項16の方法であって、解除の意味に関する複数の操作に対応する前記ロードキュー内の複数のエントリに対して前記順序ビットを設定する工程を更に具える当該方法。
  18. 複数の命令を含む1つのマシンアクセス可能記憶媒体を有する1つの物品であって、前記複数の命令が実行されたなら、少なくとも1つの先のメモリ操作が完了していないということを、1つのメモリ操作に対応する1つの順序ベクトルが示す場合に、前記メモリ操作が1つの最初の時点で生じるのを阻止するように前記複数の命令が1つのシステムを有効にする当該物品。
  19. 請求項18の物品であって、複数の命令を更に有する前記物品において、前記複数の命令が実行されたなら、前記少なくとも1つの先のメモリ操作の完了時に前記順序ベクトルを更新するように前記複数の命令が前記システムを有効にするようになっている当該物品。
  20. 請求項18の物品であって、複数の命令を更に有する前記物品において、前記複数の命令が実行されたなら、1つのキャッシュでミスするように複数の後のメモリ操作に強要するように前記複数の命令が前記システムを有効にするようになっている当該物品。
  21. 請求項18の物品であって、複数の命令を更に有する前記物品において、前記複数の命令が実行されたなら、前記メモリ操作に対して1つの順序ビットを設定するように前記複数の命令が前記システムを有効にするようになっている当該物品。
  22. 1つのメモリ操作に各々対応する複数のエントリをストアする1つの第1バッファであって、前記複数のエントリの各々が、前記対応するメモリ操作の相対的な順序付けを示すように各エントリと関連付けられた1つの順序ベクトルを有する前記第1バッファを具える1つの装置。
  23. 請求項22の装置であって、1つのメモリ操作に各々対応する複数のエントリをストアする1つの第2バッファを更に含む前記装置において、前記複数のエントリの各々が、前記対応するメモリ操作の相対的な順序付けを示すように各エントリと関連付けられた1つの順序ベクトルを有する当該装置。
  24. 請求項22の装置であって、複数の先のメモリ操作が視認可能であれば、1つの信号を発生するように前記第1バッファに結合された1つの結合バッファを更に含む当該装置。
  25. 請求項22の装置において、複数の後のメモリ操作が、前記対応するメモリ操作に対して順序付けられるべきかを示すために前記複数のエントリの各々が1つの順序ビットを有する当該装置。
  26. 1つのメモリ操作に各々対応する複数のエントリをストアする1つの第1バッファであって、前記複数のエントリの各々が、前記対応するメモリ操作の相対的な順序付けを示すように各エントリと関連付けられた1つの順序ベクトルを持つ前記第1バッファを有する1つのプロセッサと、
    前記プロセッサに結合された1つのダイナミックランダムアクセスメモリと
    を具える1つのシステム。
  27. 請求項26のシステムであって、1つのメモリ操作に各々対応する複数のエントリをストアする1つの第2バッファを更に具える前記システムにおいて、前記複数のエントリの各々が、前記対応するメモリ操作の相対的な順序付けを示すように各エントリと関連付けられた1つの順序ベクトルを有する当該システム。
  28. 請求項26のシステムであって、複数の先のメモリ操作が視認可能であれば、1つの信号を発生するように前記第1バッファに結合された1つの結合バッファを更に含む当該システム。
  29. 請求項26のシステムにおいて、前記プロセッサが、1つの順序付けられていないやり方で複数のロード命令を処理する1つの命令セットアーキテクチャを有する当該システム。
  30. 請求項26のシステムにおいて、前記プロセッサが、1つの順序付けられていないやり方で複数のストア命令を処理する1つの命令セットアーキテクチャを有する当該システム。
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 true JP2006048696A (ja) 2006-02-16
JP4388916B2 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)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008155829A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 情報処理装置,キャッシュメモリ制御装置およびメモリアクセス順序保証方法
JP2011141743A (ja) * 2010-01-07 2011-07-21 Nec Corp マルチプロセッサ、これを用いたコンピュータシステム、およびマルチプロセッサの処理方法
JP2017527020A (ja) * 2014-07-25 2017-09-14 インテル・コーポレーション ゲストイメージからのコードを実行するための実行時オプティマイザを実行するシステム変換器
JP2019509554A (ja) * 2016-02-18 2019-04-04 マイクロン テクノロジー,インク. ソリッドステート装置のための多重アドレスレジスタ用の装置および方法
JP2021043933A (ja) * 2019-09-11 2021-03-18 バイドゥ ドットコム タイムス テクノロジー (ベイジン) カンパニー リミテッド 処理タスクを実行するための方法、装置、デバイス、および記憶媒体
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
JP7403541B2 (ja) 2019-04-03 2023-12-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリ順序付け違反チェックバッファの排出遅延を許容するための投機的命令ウェイクアップ

Families Citing this family (27)

* 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
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
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
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
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
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

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008155829A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 情報処理装置,キャッシュメモリ制御装置およびメモリアクセス順序保証方法
JPWO2008155829A1 (ja) * 2007-06-20 2010-08-26 富士通株式会社 情報処理装置,キャッシュメモリ制御装置およびメモリアクセス順序保証方法
US8103859B2 (en) 2007-06-20 2012-01-24 Fujitsu Limited Information processing apparatus, cache memory controlling apparatus, and memory access order assuring method
JP2011141743A (ja) * 2010-01-07 2011-07-21 Nec Corp マルチプロセッサ、これを用いたコンピュータシステム、およびマルチプロセッサの処理方法
JP2017527020A (ja) * 2014-07-25 2017-09-14 インテル・コーポレーション ゲストイメージからのコードを実行するための実行時オプティマイザを実行するシステム変換器
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
JP2019509554A (ja) * 2016-02-18 2019-04-04 マイクロン テクノロジー,インク. ソリッドステート装置のための多重アドレスレジスタ用の装置および方法
JP7403541B2 (ja) 2019-04-03 2023-12-22 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリ順序付け違反チェックバッファの排出遅延を許容するための投機的命令ウェイクアップ
JP2021043933A (ja) * 2019-09-11 2021-03-18 バイドゥ ドットコム タイムス テクノロジー (ベイジン) カンパニー リミテッド 処理タスクを実行するための方法、装置、デバイス、および記憶媒体
US11301255B2 (en) 2019-09-11 2022-04-12 Kunlunxin Technology (Beijing) Company Limited Method, apparatus, device, and storage medium for performing processing task
JP7122299B2 (ja) 2019-09-11 2022-08-19 バイドゥドットコム タイムズ テクノロジー (ベイジン) カンパニー リミテッド 処理タスクを実行するための方法、装置、デバイス、および記憶媒体

Also Published As

Publication number Publication date
CN1728087A (zh) 2006-02-01
US20060026371A1 (en) 2006-02-02
CN100388186C (zh) 2008-05-14
JP4388916B2 (ja) 2009-12-24
DE102005032949A1 (de) 2006-02-23

Similar Documents

Publication Publication Date Title
JP4388916B2 (ja) 複数の順序ベクトルで複数のメモリ順序モデルを実施する方法及び装置
US8255626B2 (en) Atomic commit predicated on consistency of watches
JP5507706B2 (ja) バッファリングストアを利用してトランザクションを高速化するための機構
US20180011748A1 (en) Post-retire scheme for tracking tentative accesses during transactional execution
CN101322103B (zh) 无约束事务存储器***及其方法
US8176266B2 (en) Transaction based shared data operations in a multiprocessor environment
US8738862B2 (en) Transactional memory system with efficient cache support
CN101308462B (zh) 管理对共享存储器单元的存储器访问的方法和计算***
US8190859B2 (en) Critical section detection and prediction mechanism for hardware lock elision
JP5118652B2 (ja) アウトオブオーダープロセッサにおけるトランザクショナルメモリ
US20100162247A1 (en) Methods and systems for transactional nested parallelism
US9454371B2 (en) Micro-architecture for eliminating MOV operations
US20040123078A1 (en) Method and apparatus for processing a load-lock instruction using a scoreboard mechanism
US7080209B2 (en) Method and apparatus for processing a load-lock instruction using a relaxed lock protocol
US20200394039A1 (en) Processor with Multiple Load Queues
TWI483184B (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