JP2000259412A - ストア命令転送方法およびプロセッサ - Google Patents

ストア命令転送方法およびプロセッサ

Info

Publication number
JP2000259412A
JP2000259412A JP2000046359A JP2000046359A JP2000259412A JP 2000259412 A JP2000259412 A JP 2000259412A JP 2000046359 A JP2000046359 A JP 2000046359A JP 2000046359 A JP2000046359 A JP 2000046359A JP 2000259412 A JP2000259412 A JP 2000259412A
Authority
JP
Japan
Prior art keywords
instruction
store
data
load
load instruction
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
JP2000046359A
Other languages
English (en)
Other versions
JP3509067B2 (ja
Inventor
Alan Faist Kurt
カート・アラン・フェイスト
Joseph Ronshetti Bruce
ブルース・ジョセフ・ロンシェッティ
James Sippy David
デヴィッド・ジェイムス・シッピィ
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2000259412A publication Critical patent/JP2000259412A/ja
Application granted granted Critical
Publication of JP3509067B2 publication Critical patent/JP3509067B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing

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)
  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 プロセッサ内で命令のスループットを増加さ
せるストア転送方法を提供する。 【解決手段】 マイクロプロセッサ内のロード/ストア
・ユニットにおいて、ロード命令とストア命令は、アウ
トオブオーダーに実行される。ロード命令とストア命令
は、所定の方法でタグを割り当てられ、ロード命令とス
トア命令のプログラム順序を追跡するために、ロード・
リオーダー・キューおよびストア・リオーダー・キュー
に割り当てられる。ロード命令が実行のために発行され
ると、ロード命令は前に実行されたストア命令と同じメ
モリ位置にデータをロードしようとしているか否かが、
判別される。もしそうならば、ストア命令によってキャ
ッシュ内にストアされるのを待っているデータは、ロー
ド命令に直接転送される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的にデータ処
理システムに関し、特にプロセッサにおけるアウトオブ
オーダー(out of order)のロード命令およびストア命令
の実行に関する。
【0002】
【従来の技術】マイクロプロセッサの処理スピードを増
加させるために、アーキテクチャは、マイクロプロセッ
サ内で命令をアウトオブオーダーに実行させるようにデ
ザインされ、実装されてきた。命令をアウトオブオーダ
ー実行する利点は、有効な作業が実行されている間、ロ
ード・ミス待ち時間が隠されることである。しかし、従
来は、ロード命令とストア命令は、それらの目的の性質
の故に、アウトオブオーダーに実行されていなかった。
例えば、ストア命令が、ロード命令より前にプログラム
順序で実行されるようにスケジュールされているが、プ
ロセッサは、ロード命令がストア命令より前に実行され
るように、それら2つの命令をアウトオブオーダーに実
行し、およびこれら2つの命令が同一のメモリ空間に関
係しているならば、ストア命令がロード命令より前に完
了することは許されないので、ロード命令は不正確なま
たは古いデータをロードする可能性がある。
【0003】
【発明が解決しようとする課題】本発明の目的は、前述
の状況を利用して命令のスループットを増加させること
にある。
【0004】
【課題を解決するための手段】本発明は、メモリ・サブ
システムの待ち時間を隠すために、ロード命令を先に実
行することによって命令のスループットを増加させる。
ロード命令が正確なデータを受け取ることを保証にする
ために、ロード・アドレスとサイズは、キャッシュ/メ
モリ・サブシステムに書き込まれていないより古いスト
ア命令(発生したかもしれない)と比較される。加え
て、ロード・ヒット・ストア状態が生じると、ストア・
データが既知ならば、そのデータがメモリにまだ格納さ
れていなくても、そのデータをロード命令に転送できる
か否かが判別される。
【0005】前述のことは、以下の本発明の詳細な説明
がより理解できるように、本発明の特徴と技術的利点を
より広く概説した。本発明の他の特徴と利点は、以下に
説明される。
【0006】
【発明の実施の形態】以下の記述では、多くの特定の詳
細を、特定のワードまたはバイト長等で説明して、本発
明の完全な理解を与えるようにしている。しかし、当業
者にとって、本発明をそのような特定の詳細を必要とせ
ずに実行できることは明らかである。他の例では、周知
の回路をブロック図で示して、不必要な詳細さで本発明
を不明瞭にすることのないようにしている。大部分は、
タイミングの考察などに関連する詳細は、そのような詳
細が本発明の完全な理解を得るために必要でなく、また
関連技術における当業者の技術範囲内にあるので、省略
されている。
【0007】次に図を参照すると、そこに表された構成
要素は、必ずしも一定の縮尺で示されておらず、同様な
または類似の構成要素は、各図を通じて同じ参照数字で
示されている。
【0008】本発明を実施する代表的なハードウェア環
境が図1に示され、この図1は、CPU110とシステ
ム・バス112を介して相互接続されたいくつかの他の
ユニットを有する本発明に係るワークステーション11
3の典型的ハードウェア構成を示す。CPU110は、
以下に述べられるような本発明のロード/ストア・ユニ
ット201を実現する。ワークステーション113は、
RAM114、ROM116、ディスク・ユニット12
0およびテープ・ドライブ140のような周辺装置をバ
ス112に接続するI/Oアダプタ118、キーボード
124,マウス126,および/またはタッチ・スクリ
ーン・デバイス(図示せず)のような他のユーザー・イ
ンターフェース・デバイスをバス112に接続するユー
ザー・インターフェース・アダプタ122、ワークステ
ーション113をデータ処理ネットワークに接続する通
信アダプタ134、バス112をディスプレイ装置13
8に接続するディスプレイ・アダプタ136を含む。C
PU110は、ここで示されない他の回路(ロード/ス
トア・ユニット201以外の)を含むことができ、それ
は、マイクロプロセッサ内で通常見いだされる回路、例
えば、実行ユニット,バス・インターフェース・ユニッ
ト,演算論理ユニット等を含むであろう。CPU110
は、また、1つの集積回路上に実装することができる。
【0009】図2および図3は、本発明に従って構成さ
れたロード/ストア(L/S)ユニット201を示す。
L/Sユニット201は、CPU110内に設けられ、
典型的なマイクロプロセッサ・アーキテクチャに従って
構成できる。
【0010】L/Sユニット201は、マシン・サイク
ル毎に2つのロード命令またはストア命令が発行できる
ように2つのパイプラインを有している。レジスタ20
2〜205は、技術上周知のように固定小数点ユニット
(FXU)0および1(図示せず)から命令を受け取
る。64ビット加算器206は、レジスタ202と20
3から受け取ったオペランドを加算し、一方、64ビッ
ト加算器207は、レジスタ204と205からのオペ
ランドを加算して、一対の64ビット有効アドレスを生
成する。これらの有効アドレスは、それぞれレジスタ2
08,209に出力される。レジスタ208と209
は、有効アドレス(EA)を取り込む。次にそれらレジ
スタは共に、LMQ218,LRQ220,SRQ22
2を与え、これらはすべて、アドレス・チェックを実行
するため、レジスタ216,217からの実アドレスに
加えてEAの一部を必要とする。さらに、有効アドレス
はデコードされて、L1キャッシュ236にヒットまた
はミスが存在するか否かを判別するために、タグ・アレ
イ210,211にアクセスする。ミスならば、そのア
ドレスは、レジスタ212,213を通り過ぎて、L2
キャッシュ(図示せず)に送られる。
【0011】さらに、有効アドレスは加算器206,2
07から送られてデコードされ、有効実アドレス変換器
(ERAT)アレイ214,215にアクセスし、それ
らは変換されたアドレスをレジスタ216,217を通
してそれぞれ出力する。
【0012】さらにまた、加算器206,207からの
有効アドレスは、L1キャッシュ236内のデコーダに
よってデコードされた後に、ロード・オペレーションの
ために、L1キャッシュ236にアクセスする。L1キ
ャッシュ236にヒットが存在するならば、そのデータ
はL1キャッシュ236からレジスタ237,238に
読み出され、フォーマッタ240,241によってフォ
ーマットされ、結果バス上に戻されて、レジスタ・ファ
イル(RegFile:図示せず)に送られる。L1キャッシ
ュ236から読み出されたキャッシュ・ラインは、ま
た、その結果に依存するオペレーションのために、レジ
スタ202〜205にオペランドとして戻される。
【0013】本質的に、L/Sユニット201内で実行
される3サイクルは、実行サイクル(加算が実行され
る),アクセス・サイクル(アレイへのアクセスが実行
される),結果サイクル(データのフォーマットと転送
が実行される)である。
【0014】キャッシュにミスが存在するならば、要求
がL2キャッシュ(図示せず)に送られる。ロード・ミ
ス・キュー(LMQ)218は、ロード・データを待っ
て、L2キャッシュ(図示せず)から戻る。そのキャッ
シュ・ラインに関連したデータは、L1キャッシュ23
6にロードされる。
【0015】これらのロード・オペレーションは、見込
み的に、かつアウトオブオーダーに実行できる。ストア
命令も、また、アウトオブオーダーに実行される。スト
ア命令は、ストア・アドレス命令とストア・データ命令
とに分けられる。オペランドが使用可能でかつ実行ユニ
ットがそれらを実行可能であれば、すぐに個々の命令は
実行される。ストア・アドレス命令は変換され、ストア
・リオーダー・キュー(SRQ)222に入力される。
ストア・データ命令は、FXUまたはFPUレジスタ・
ファイルを読み取り、ストア・データ・キュー(SD
Q)221に書き込まれるべき結果を送信し、L1キャ
ッシュ236に書き込む順番を待つ。したがって、スト
ア命令はアウトオブオーダーに実行されるが、L1キャ
ッシュ236にインオーダー(in order)に書き込まれ
る。
【0016】SRQ222は、実行されたストア命令を
追跡する。SRQ222は、ストア命令を待ち行列で保
持し、いつデータがSDQ221で使用可能であるか、
およびいつストア命令がほとんど完了するかを判別す
る。そしてL1キャッシュ236へのストアが完了す
る。
【0017】レジスタ223,225〜229,237
〜238の多くは、タイミングのために利用される。
【0018】L1キャッシュ236内のキャッシュ・ラ
インは、キャッシュ・ラインの有効アドレスに基づいて
アクセスされる。RAタグ・アレイ233は、L1キャ
ッシュ236内でキャッシュ・ラインが書き込まれた場
所を追跡する。フォーマット・ブロック231は、SD
Q221からのデータを受け取って、それを適切に回転
し、ストア命令の実行時に、L1キャッシュ236内の
正しいバイト位置に書き込む。
【0019】回転ブロック224,230は、ストア転
送に利用される。したがって、ストア・キュー内にあ
り、ほとんど完了していないが故に、キャッシュ/メモ
リ・サブシステム内にまだ書き込まれておらず、データ
を必要とする若いロード命令が受け取られるならば、デ
ータは実行されるロード命令に転送される(図5参
照)。ストア転送とストア書込を簡単にするためには、
データがSDQ221に転送されるとき、ストア・アド
レスのメモリ内の位置に対応するデータがSDQ221
のエントリの第1のバイトに、ストア・アドレス+1の
メモリ内の位置に対応するデータが第2バイトに、とい
う順に書き込まれるように、データが再配列される。デ
ータは、メモリに書き込まれる順番に配列されるが、バ
イト整列される。データがL1キャッシュ236に書き
込まれるとき、データが2ワード整列されるように回転
される(ブロック224と230)。
【0020】回転ブロック239を用いて、L1キャッ
シュ・ミスに応じてL2キャッシュ(図示せず)から受
け取ったデータを回転し、適切なレジスタ・ファイルに
転送するために、L2キャッシュからのデータを結果バ
ス上に転送する。
【0021】ブロック219は、いくつかの特別の目的
のレジスタを含み、特別の目的のレジスタ命令の結果と
してデータをストアし、それらのレジスタからデータを
読み出して、通常のパイプラインに送るようにする。
【0022】レジスタ235は、タイミングのために実
装され、L2キャッシュ(図示せず)からのデータを格
納する。フォーマット・ブロック240と241は、キ
ャッシュ・データを、レジスタ・ファイルへのロード結
果に対する適切なバイト位置にフォーマットする(また
はシフトする)。
【0023】次に図4を参照すると、ロード命令および
ストア命令にタグを割り当てる方法が示されている。命
令は、命令ディスパッチ・ユニット271によって命令
キャッシュ270から受け取られる。ディスパッチ・ユ
ニット271は、ここで説明されるようにロード命令お
よびストア命令にタグを割り当てる。次に命令は、命令
キュー272に一時的にストアされる。タグ273,2
74は、タイミングのために使用されるパイプライン・
レジスタである。4つのブロック(ブロック301〜3
04)内の16命令は、本発明のロード/ストア・タグ
付与方法のために一度に解析される。各ブロック301
〜304は、グループ・タグ(GTAG)を割り当てら
れる。各ストア命令は、STAGとLTAGを割り当て
られる。先行するストア命令(プログラム順序で)によ
って、STAGはインクリメントされ、先行するロード
命令によって、LTAGはインクリメントされる。
【0024】例えば、ストア命令のプログラム順序は、
S1,S2,S3,S4である。ストア命令S1は、9
のSTAGを有する。次のストア命令S2は、10のS
TAGを割り当てられる。次のストア命令S3は、11
のSTAGを有し、そして次のストア命令S4に対し
て、STAGは12にインクリメントされる。ロード命
令L1,L2,L3,L4(プログラム順序で)は、前
のストア命令のSTAGを割り当てられる。したがっ
て、ロード命令L1は10のSTAGを受け取る。この
STAGは、先行するストア命令S2と同じSTAGで
ある。ロード命令L2は、11のSTAGを受け取る。
このSTAGは、先行するストア命令S3と同じSTA
Gである。ロード命令L3は、12のSTAGを受け取
る。このSTAGは、先行するストア命令S4と同じS
TAGである。ロード命令L4は、また、12のSTA
Gを受け取る。というのは、ロード命令の直前を先行す
るSTAGは、依然として12のSTAGを有するスト
ア命令S4であるからである。
【0025】ストア命令のためのLTAGは、先行する
ロード命令のLTAGに基づいてインクリメントされ
る。その結果、先行するロード命令L1のためのLTA
Gが5なので、ストア命令S3のためのLTAGは6に
インクリメントされる。ロード命令L2に対し6の以前
のLTAGに基づいて、7のLTAGを割り当てられる
次のストア命令S4まで、LTAGはインクリメントさ
れない。LTAGは、また、先行するロード命令によっ
てインクリメントされる。したがって、先行するロード
命令L3に対するLTAGが7であるので、ロード命令
L4に対するLTAGは8が割り当てられる。
【0026】次に図5を参照すると、本発明によるスト
ア転送の流れ図が示されている。ステップ401と40
2との間の第1の破線は、前述の実行サイクルをアクセ
ス・サイクルと分けるために描いている。ステップ40
1は、実行サイクルの間に実行され、一方、ステップ4
02〜408は、アクセス・サイクルの間に実行され
る。ステップ408と409との間の第2の破線は、ア
クセス・サイクルを結果サイクルから分けるために描い
ている。ステップ409〜416は、結果サイクルの間
に実行される。正常なロード・タイミングに影響しない
ようにするために、ロード・ヒット・ストアを、アクセ
ス・サイクルの間に検出して、L1キャッシュ236が
ロード・ミスをサービスしないようにする。しかし、サ
イクルの初めに利用できる情報は、ロード命令の有効ア
ドレスである。したがって、ロード・ヒット・ストア
は、有効アドレスの下位12ビットのオーバーラップ比
較に基づいて予測される。というのは、下位12ビット
は、異なる値に変換されないからである。
【0027】ステップ401で、ロード命令の有効アド
レスは、加算器206,207によって計算される。そ
の後、ステップ402で、有効アドレスの下位12ビッ
トが、実行中の古いストア命令と比較される。オーバー
ラップしているならば(ステップ403)、ロード命令
はステップ404で拒否される。ロード命令とストア命
令が同時に実行され、ストア命令がロード命令より古
く、有効アドレスがオーバーラップすると、ロード命令
は拒否される。というのは、ストア命令がロード命令と
同じ位置に書き込むことができ、ストア命令がL1キャ
ッシュに書込可能となる前に、ロード命令はキャッシュ
から古いデータを得るからである。ステップ404でロ
ード命令を拒否できるので、フラッシュの代わりに、ロ
ード命令は、あまり厳しくない性能の不利を生じさせ
る。
【0028】ステップ403でオーバーラップが無けれ
ば、処理がステップ405に進み、有効アドレス(E
A)の下位12ビットを、ロード命令よりも古いSRQ
222内の全てのストア命令と比較する。これは上述の
LTAGとSTAGの結果、可能であることに注意され
たい。また、レジスタ208,209内の有効アドレス
は、SRQ222内のエントリとの比較に利用されるこ
とを思い起こされたい。ステップ406で、比較の結果
オーバーラップが無いならば、ロード命令は、キャシュ
/メモリ・サブシステムからの正常なものとしてサービ
スされる(ステップ407)。しかし、SRQ222内
のストア命令とロード命令との間の有効アドレスの下位
12ビットのオーバーラップがあるならば、ステップ4
08で、DATA VALIDは、ロード命令に対して使用不可と
される。DATA VALIDの欠如は、L1キャッシュ236が
ロード命令に正しいデータを提供できないことを意味す
る。ステップ409で、ロード命令と一致するSRQ2
22内の最も若いストア命令はどれであるかが判別され
る。ステップ410で、このストア命令は転送可能か否
かが判別される。言い換えれば、SDQ221はストア
・データを含み、ロード命令はストア命令内に含まれ、
ロード命令内でのメモリからアクセスされた全てのバイ
トは、ストア命令によって含められる。イエスならば、
このデータはステップ411でSDQ221から読み取
られる。データは、回転ブロック224,230および
フォーマット・ブロック240,241により、前述し
たようにフォーマットされる。次にデータは、ステップ
413で2つの結果バスのうちの1つで、ロード・デー
タを要求するGPR(General Purpose Register)に戻さ
れる。
【0029】ステップ410で、データがSDQ221
内に無いならば、ステップ414で、ロード命令とスト
ア命令との間でGTAGの一致があるか否かが判別され
る。ロード命令とストア命令とが同じ命令グループ内に
あるならば(GTAGが一致)、ステップ416で、ロ
ード命令はフラッシュされて、デッドロックを阻止す
る。というのは、ストア命令は、ロード命令が完了する
まで、完了することが許されないからである。ロード命
令およびストア命令に含まれる命令グループがフラッシ
ュされると、ロード命令およびストア命令は、再フェッ
チ時に命令発行ロジックによって別の命令グループに配
置される。
【0030】ロード命令およびストア命令が、同じ命令
グループ内に無いならば、ステップ415で、ロード命
令は拒否される。
【0031】本発明とその利点を、詳細に述べてきた
が、種々の変更,置換,変形を、本発明の趣旨と範囲か
ら逸脱することなしに行うことができることが、理解さ
れるであろう。
【0032】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0033】(1)プロセッサにおいて、実行のため
に、ロード/ストア・ユニットにロード命令を発行する
ステップと、前記ロード命令によってロードされるべき
データのメモリ・アドレス位置を、古くかつ以前に実行
されたストア命令によってストアされるべきデータのス
トア・リオーダー・キュー内のメモリ・アドレス位置と
比較するステップと、前記ロード命令によってロードさ
れるべきデータの前記メモリ・アドレス位置が、古くか
つ以前に実行されたストア命令によってストアされるべ
きデータの前記ストア・リオーダー・キュー内の前記メ
モリ・アドレス位置の1つ以上と一致するならば、前記
ロード命令によって指定されたレジスタに前記データを
転送するステップとを含む方法。
【0034】(2)前記転送するステップが、1つ以上
の前記ストア命令のうちの最も若いものに対応する前記
データを転送する上記(1)記載の方法。
【0035】(3)前記ロード命令によってロードされ
るべきデータの前記メモリ・アドレス位置が、古くかつ
以前に実行されたストア命令によってストアされるべき
データの前記ストア・リオーダー・キュー内のいずれの
メモリ・アドレス位置とも一致しないならば、前記ロー
ド命令はキャッシュ/メモリ・サブシステムからのデー
タを与えられる上記(1)記載の方法。
【0036】(4)前記ロード命令によってロードされ
るべきデータのメモリ・アドレス位置を、古くかつ以前
に実行されたストア命令によってストアされるべきデー
タのストア・リオーダー・キュー内のメモリ・アドレス
位置と比較する前記ステップの前に、前記ロード命令に
よってロードされるべきデータの前記アドレス位置を、
古いストア命令のメモリ・アドレス位置と比較するステ
ップと、前記ロード命令によってロードされるべきデー
タの前記アドレス位置が、古いストア命令のメモリ・ア
ドレス位置のいずれかと一致するならば、前記ロード命
令を拒否するステップとをさらに含む上記(1)記載の
方法。
【0037】(5)前記データが前記ロード命令に転送
可能でないならば、前記ロード命令と前記ストア命令が
同じ命令グループ内にあるか否かを判別するステップ
と、前記ロード命令と前記ストア命令が前記同じ命令グ
ループ内にあれば、前記ロード命令をフラッシュするス
テップとをさらに含む上記(1)記載の方法。
【0038】(6)ロード/ストア・ユニットと、前記
ロード/ストア・ユニット内にあるストア・リオーダー
・キューと、実行のために、前記ロード/ストア・ユニ
ットにロード命令を発行するディスパッチ・ユニット
と、前記ロード命令によってロードされるべきデータの
メモリ・アドレス位置を、古くかつ以前に実行されたス
トア命令によってストアされるべきデータの前記ストア
・リオーダー・キュー内のメモリ・アドレス位置と比較
する回路手段と、前記ロード命令によってロードされる
べきデータの前記メモリ・アドレス位置が、前記ストア
・リオーダー・キュー内の前記メモリ・アドレス位置の
1つ以上と一致するならば、前記ロード命令によって指
定されたレジスタに前記データを転送する回路手段とを
備えるプロセッサ。
【0039】(7)前記転送する回路手段が、前記1つ
以上のストア命令のうちの最も若いものに対応する前記
データを転送する上記(6)記載のプロセッサ。
【0040】(8)前記ロード命令によってロードされ
るべきデータの前記メモリ・アドレス位置が、古くかつ
以前に実行されたストア命令によってストアされるべき
データの前記ストア・リオーダー・キュー内のいずれの
メモリ・アドレス位置とも一致しないならば、前記ロー
ド命令はキャッシュ/メモリ・サブシステムからのデー
タを与えられる上記(6)記載のプロセッサ。
【0041】(9)前記ロード命令によってロードされ
るべきデータの前記メモリ・アドレス位置を、古くかつ
以前に実行されたストア命令によってストアされるべき
データのストア・リオーダー・キュー内のメモリ・アド
レス位置と比較する前に、前記ロード命令によってロー
ドされるべき前記データの前記アドレス位置を、古いス
トア命令のメモリ・アドレス位置と比較する回路手段
と、前記ロード命令によってロードされるべきデータの
前記アドレス位置が、古いストア命令のメモリ・アドレ
ス位置のいずれかと一致するならば、前記ロード命令を
拒否する回路手段とをさらに備える上記(6)記載のプ
ロセッサ。
【0042】(10)前記データが前記ロード命令に転
送可能でないならば、前記ロード命令と前記ストア命令
が同じ命令グループ内にあるか否かを判別する回路手段
と、前記ロード命令と前記ストア命令が前記同じ命令グ
ループ内にあれば、前記ロード命令をフラッシュする回
路手段と、前記ロード命令と前記ストア命令が前記同じ
命令グループ内に無いならば、前記ロード命令を拒否す
る回路手段とをさらに備える上記(6)記載のプロセッ
サ。
【0043】(11)プロセッサにおいて、実行のため
に、ロード/ストア・ユニットにロード命令を発行する
ステップと、前記ロード命令によってロードされるべき
データの有効アドレス位置を、古いストア命令の有効メ
モリ・アドレス位置と比較するステップと、前記ロード
命令によってロードされるべきデータの前記有効アドレ
ス位置が、古いストア命令の有効メモリ・アドレス位置
のいずれかと一致するならば、前記ロード命令を拒否す
るステップと、前記ロード命令によってロードされるべ
きデータのメモリ・アドレス位置を、古くかつ以前に実
行されたストア命令によってストアされるべきデータの
ストア・リオーダー・キュー内のメモリ・アドレス位置
と比較するステップと、前記ロード命令が古く、かつ以
前に実行されたストア命令内に含まれるならば、前記ロ
ード命令によって指定されたレジスタに前記データを転
送するステップとを含み、該転送するステップが、前記
1つ以上のストア命令のうちの最も若いものに対応する
前記データを転送し、および前記ロード命令によってロ
ードされるべきデータの前記メモリ・アドレス位置が、
古くかつ以前に実行されたストア命令によってストアさ
れるべきデータの前記ストア・リオーダー・キュー内の
いずれのメモリ・アドレス位置とも一致しないならば、
前記ロード命令はキャッシュ/メモリ・サブシステムか
らのデータを与えられ、前記データが前記ロード命令に
転送可能でないならば、前記ロード命令と前記ストア命
令が同じ命令グループ内にあるか否かを判別するステッ
プと、前記ロード命令と前記ストア命令が前記同じ命令
グループ内にあれば、次に前記ロード命令をフラッシュ
するステップと、前記ロード命令と前記ストア命令が前
記同じ命令グループ内に無いならば、次に前記ロード命
令を拒否するステップとを含む方法。
【図面の簡単な説明】
【図1】本発明に従って構成されたデータ処理システム
を示す図である。
【図2】本発明に従って構成されたロード/ストア・ユ
ニットを示す図である。
【図3】本発明に従って構成されたロード/ストア・ユ
ニットを示す図である。
【図4】ロード/ストア・ユニットによって利用される
タグを付す方法を示す図である。
【図5】本発明に従ってストア転送することを示す流れ
図である。
【符号の説明】
201 ロード/ストア(L/S)ユニット 202〜205 レジスタ 206,207 64ビット加算器 208,209 レジスタ 210,211 タグ・アレイ 212,213 レジスタ 214,215 有効実アドレス変換器(ERAT)ア
レイ 216,217 レジスタ 218 ロード・ミス・キュー(LMQ) 219 特別目的レジスタ(SPR)・ブロック 220 ロード・リオーダー・キュー(LRQ) 221 ストア・データ・キュー(SDQ) 222 ストア・リオーダー・キュー(SRQ) 223,225〜229,237〜238 レジスタ 224,230 回転ブロック 231 フォーマット・ブロック 233 RAタグ・アレイ 235 レジスタ 236 L1キャッシュ 239 回転ブロック 240,241 フォーマッタ 270 命令キャッシュ 271 命令ディスパッチ・ユニット 272 命令キュー 273,274 タグ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 カート・アラン・フェイスト アメリカ合衆国 78735 テキサス州 オ ースティン クリスタル ウォーター デ ィーアール 5116 (72)発明者 ブルース・ジョセフ・ロンシェッティ アメリカ合衆国 78731 テキサス州 オ ースティン ジェントル ブリーズ テラ ス 5820 (72)発明者 デヴィッド・ジェイムス・シッピィ アメリカ合衆国 78731 テキサス州 オ ースティン ロンサム ヴァレィ コート 4200

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】プロセッサにおいて、 実行のために、ロード/ストア・ユニットにロード命令
    を発行するステップと、 前記ロード命令によってロードされるべきデータのメモ
    リ・アドレス位置を、古くかつ以前に実行されたストア
    命令によってストアされるべきデータのストア・リオー
    ダー・キュー内のメモリ・アドレス位置と比較するステ
    ップと、 前記ロード命令によってロードされるべきデータの前記
    メモリ・アドレス位置が、古くかつ以前に実行されたス
    トア命令によってストアされるべきデータの前記ストア
    ・リオーダー・キュー内の前記メモリ・アドレス位置の
    1つ以上と一致するならば、前記ロード命令によって指
    定されたレジスタに前記データを転送するステップとを
    含む方法。
  2. 【請求項2】前記転送するステップが、1つ以上の前記
    ストア命令のうちの最も若いものに対応する前記データ
    を転送する請求項1記載の方法。
  3. 【請求項3】前記ロード命令によってロードされるべき
    データの前記メモリ・アドレス位置が、古くかつ以前に
    実行されたストア命令によってストアされるべきデータ
    の前記ストア・リオーダー・キュー内のいずれのメモリ
    ・アドレス位置とも一致しないならば、前記ロード命令
    はキャッシュ/メモリ・サブシステムからのデータを与
    えられる請求項1記載の方法。
  4. 【請求項4】前記ロード命令によってロードされるべき
    データのメモリ・アドレス位置を、古くかつ以前に実行
    されたストア命令によってストアされるべきデータのス
    トア・リオーダー・キュー内のメモリ・アドレス位置と
    比較する前記ステップの前に、前記ロード命令によって
    ロードされるべきデータの前記アドレス位置を、古いス
    トア命令のメモリ・アドレス位置と比較するステップ
    と、 前記ロード命令によってロードされるべきデータの前記
    アドレス位置が、古いストア命令のメモリ・アドレス位
    置のいずれかと一致するならば、前記ロード命令を拒否
    するステップとをさらに含む請求項1記載の方法。
  5. 【請求項5】前記データが前記ロード命令に転送可能で
    ないならば、前記ロード命令と前記ストア命令が同じ命
    令グループ内にあるか否かを判別するステップと、 前記ロード命令と前記ストア命令が前記同じ命令グルー
    プ内にあれば、前記ロード命令をフラッシュするステッ
    プとをさらに含む請求項1記載の方法。
  6. 【請求項6】ロード/ストア・ユニットと、 前記ロード/ストア・ユニット内にあるストア・リオー
    ダー・キューと、 実行のために、前記ロード/ストア・ユニットにロード
    命令を発行するディスパッチ・ユニットと、 前記ロード命令によってロードされるべきデータのメモ
    リ・アドレス位置を、古くかつ以前に実行されたストア
    命令によってストアされるべきデータの前記ストア・リ
    オーダー・キュー内のメモリ・アドレス位置と比較する
    回路手段と、 前記ロード命令によってロードされるべきデータの前記
    メモリ・アドレス位置が、前記ストア・リオーダー・キ
    ュー内の前記メモリ・アドレス位置の1つ以上と一致す
    るならば、前記ロード命令によって指定されたレジスタ
    に前記データを転送する回路手段とを備えるプロセッ
    サ。
  7. 【請求項7】前記転送する回路手段が、前記1つ以上の
    ストア命令のうちの最も若いものに対応する前記データ
    を転送する請求項6記載のプロセッサ。
  8. 【請求項8】前記ロード命令によってロードされるべき
    データの前記メモリ・アドレス位置が、古くかつ以前に
    実行されたストア命令によってストアされるべきデータ
    の前記ストア・リオーダー・キュー内のいずれのメモリ
    ・アドレス位置とも一致しないならば、前記ロード命令
    はキャッシュ/メモリ・サブシステムからのデータを与
    えられる請求項6記載のプロセッサ。
  9. 【請求項9】前記ロード命令によってロードされるべき
    データの前記メモリ・アドレス位置を、古くかつ以前に
    実行されたストア命令によってストアされるべきデータ
    のストア・リオーダー・キュー内のメモリ・アドレス位
    置と比較する前に、前記ロード命令によってロードされ
    るべき前記データの前記アドレス位置を、古いストア命
    令のメモリ・アドレス位置と比較する回路手段と、 前記ロード命令によってロードされるべきデータの前記
    アドレス位置が、古いストア命令のメモリ・アドレス位
    置のいずれかと一致するならば、前記ロード命令を拒否
    する回路手段とをさらに備える請求項6記載のプロセッ
    サ。
  10. 【請求項10】前記データが前記ロード命令に転送可能
    でないならば、前記ロード命令と前記ストア命令が同じ
    命令グループ内にあるか否かを判別する回路手段と、 前記ロード命令と前記ストア命令が前記同じ命令グルー
    プ内にあれば、前記ロード命令をフラッシュする回路手
    段と、 前記ロード命令と前記ストア命令が前記同じ命令グルー
    プ内に無いならば、前記ロード命令を拒否する回路手段
    とをさらに備える請求項6記載のプロセッサ。
  11. 【請求項11】プロセッサにおいて、 実行のために、ロード/ストア・ユニットにロード命令
    を発行するステップと、 前記ロード命令によってロードされるべきデータの有効
    アドレス位置を、古いストア命令の有効メモリ・アドレ
    ス位置と比較するステップと、 前記ロード命令によってロードされるべきデータの前記
    有効アドレス位置が、古いストア命令の有効メモリ・ア
    ドレス位置のいずれかと一致するならば、前記ロード命
    令を拒否するステップと、 前記ロード命令によってロードされるべきデータのメモ
    リ・アドレス位置を、古くかつ以前に実行されたストア
    命令によってストアされるべきデータのストア・リオー
    ダー・キュー内のメモリ・アドレス位置と比較するステ
    ップと、 前記ロード命令が古く、かつ以前に実行されたストア命
    令内に含まれるならば、前記ロード命令によって指定さ
    れたレジスタに前記データを転送するステップとを含
    み、該転送するステップが、前記1つ以上のストア命令
    のうちの最も若いものに対応する前記データを転送し、
    および前記ロード命令によってロードされるべきデータ
    の前記メモリ・アドレス位置が、古くかつ以前に実行さ
    れたストア命令によってストアされるべきデータの前記
    ストア・リオーダー・キュー内のいずれのメモリ・アド
    レス位置とも一致しないならば、前記ロード命令はキャ
    ッシュ/メモリ・サブシステムからのデータを与えら
    れ、 前記データが前記ロード命令に転送可能でないならば、
    前記ロード命令と前記ストア命令が同じ命令グループ内
    にあるか否かを判別するステップと、 前記ロード命令と前記ストア命令が前記同じ命令グルー
    プ内にあれば、次に前記ロード命令をフラッシュするス
    テップと、 前記ロード命令と前記ストア命令が前記同じ命令グルー
    プ内に無いならば、次に前記ロード命令を拒否するステ
    ップとを含む方法。
JP2000046359A 1999-03-05 2000-02-23 ストア命令転送方法およびプロセッサ Expired - Fee Related JP3509067B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/263665 1999-03-05
US09/263,665 US6349382B1 (en) 1999-03-05 1999-03-05 System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order

Publications (2)

Publication Number Publication Date
JP2000259412A true JP2000259412A (ja) 2000-09-22
JP3509067B2 JP3509067B2 (ja) 2004-03-22

Family

ID=23002754

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000046359A Expired - Fee Related JP3509067B2 (ja) 1999-03-05 2000-02-23 ストア命令転送方法およびプロセッサ

Country Status (2)

Country Link
US (1) US6349382B1 (ja)
JP (1) JP3509067B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100876486B1 (ko) 2004-03-30 2008-12-31 인텔 코오퍼레이션 저장 성능 개선
US8677070B2 (en) 2007-06-20 2014-03-18 Fujitsu Limited Cache memory control apparatus and cache memory control method
JP2015210577A (ja) * 2014-04-24 2015-11-24 富士通株式会社 演算処理装置および演算処理装置の制御方法

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111155B1 (en) 1999-05-12 2006-09-19 Analog Devices, Inc. Digital signal processor computation core with input operand selection from operand bus for dual operations
US6820189B1 (en) 1999-05-12 2004-11-16 Analog Devices, Inc. Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US6859872B1 (en) * 1999-05-12 2005-02-22 Analog Devices, Inc. Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation
US7107302B1 (en) 1999-05-12 2006-09-12 Analog Devices, Inc. Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
US7065632B1 (en) * 2000-04-07 2006-06-20 Ip First Llc Method and apparatus for speculatively forwarding storehit data in a hierarchical manner
US6725358B1 (en) * 2000-06-22 2004-04-20 International Business Machines Corporation Processor and method having a load reorder queue that supports reservations
US6868491B1 (en) * 2000-06-22 2005-03-15 International Business Machines Corporation Processor and method of executing load instructions out-of-order having reduced hazard penalty
US20030065909A1 (en) * 2001-09-28 2003-04-03 Jourdan Stephan J. Deferral of dependent loads until after execution of colliding stores
US7028166B2 (en) * 2002-04-30 2006-04-11 Advanced Micro Devices, Inc. System and method for linking speculative results of load operations to register values
US7222226B1 (en) 2002-04-30 2007-05-22 Advanced Micro Devices, Inc. System and method for modifying a load operation to include a register-to-register move operation in order to forward speculative load results to a dependent operation
US7089400B1 (en) 2002-08-29 2006-08-08 Advanced Micro Devices, Inc. Data speculation based on stack-relative addressing patterns
US7024537B2 (en) * 2003-01-21 2006-04-04 Advanced Micro Devices, Inc. Data speculation based on addressing patterns identifying dual-purpose register
US7343477B1 (en) * 2003-12-29 2008-03-11 Sun Microsystems, Inc. Efficient read after write bypass
US7376794B2 (en) * 2004-01-13 2008-05-20 Hewlett-Packard Development Company, L.P. Coherent signal in a multi-processor system
US8281079B2 (en) * 2004-01-13 2012-10-02 Hewlett-Packard Development Company, L.P. Multi-processor system receiving input from a pre-fetch buffer
US8301844B2 (en) * 2004-01-13 2012-10-30 Hewlett-Packard Development Company, L.P. Consistency evaluation of program execution across at least one memory barrier
US7409500B2 (en) * 2004-01-13 2008-08-05 Hewlett-Packard Development Company, L.P. Systems and methods for employing speculative fills
US7360069B2 (en) * 2004-01-13 2008-04-15 Hewlett-Packard Development Company, L.P. Systems and methods for executing across at least one memory barrier employing speculative fills
US7340565B2 (en) * 2004-01-13 2008-03-04 Hewlett-Packard Development Company, L.P. Source request arbitration
US7409503B2 (en) * 2004-01-13 2008-08-05 Hewlett-Packard Development Company, L.P. Register file systems and methods for employing speculative fills
US7380107B2 (en) * 2004-01-13 2008-05-27 Hewlett-Packard Development Company, L.P. Multi-processor system utilizing concurrent speculative source request and system source request in response to cache miss
US7406565B2 (en) * 2004-01-13 2008-07-29 Hewlett-Packard Development Company, L.P. Multi-processor systems and methods for backup for non-coherent speculative fills
US7383409B2 (en) 2004-01-13 2008-06-03 Hewlett-Packard Development Company, L.P. Cache systems and methods for employing speculative fills
US7555634B1 (en) 2004-04-22 2009-06-30 Sun Microsystems, Inc. Multiple data hazards detection and resolution unit
US7263600B2 (en) * 2004-05-05 2007-08-28 Advanced Micro Devices, Inc. System and method for validating a memory file that links speculative results of load operations to register values
US7461238B2 (en) * 2006-06-07 2008-12-02 International Business Machines Corporation Simple load and store disambiguation and scheduling at predecode
US20070288725A1 (en) * 2006-06-07 2007-12-13 Luick David A A Fast and Inexpensive Store-Load Conflict Scheduling and Forwarding Mechanism
US8195858B1 (en) * 2009-07-28 2012-06-05 Nvidia Corporation Managing conflicts on shared L2 bus
US8321618B1 (en) 2009-07-28 2012-11-27 Nvidia Corporation Managing conflicts on shared L2 bus
CN107220032B (zh) * 2012-06-15 2020-12-15 英特尔公司 无消歧乱序加载存储队列
US9361113B2 (en) 2013-04-24 2016-06-07 Globalfoundries Inc. Simultaneous finish of stores and dependent loads
GB2525613A (en) * 2014-04-29 2015-11-04 Ibm Reduction of processing duplicates of queued requests
US9483409B2 (en) 2015-02-05 2016-11-01 International Business Machines Corporation Store forwarding cache
US10261791B2 (en) * 2017-02-24 2019-04-16 International Business Machines Corporation Bypassing memory access for a load instruction using instruction address mapping
US10402201B2 (en) * 2017-03-09 2019-09-03 Joel Kevin Jones Method and apparatus for detecting memory conflicts using distinguished memory addresses

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5721857A (en) * 1993-12-30 1998-02-24 Intel Corporation Method and apparatus for saving the effective address of floating point memory operations in an out-of-order microprocessor
US5778245A (en) * 1994-03-01 1998-07-07 Intel Corporation Method and apparatus for dynamic allocation of multiple buffers in a processor
EP0686912B1 (en) * 1994-06-03 1998-12-16 Motorola, Inc. Data processor with an execution unit for performing load instructions and method of operation
US5751983A (en) * 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US5809275A (en) * 1996-03-01 1998-09-15 Hewlett-Packard Company Store-to-load hazard resolution system and method for a processor that executes instructions out of order
US5931957A (en) * 1997-03-31 1999-08-03 International Business Machines Corporation Support for out-of-order execution of loads and stores in a processor
US6021485A (en) * 1997-04-10 2000-02-01 International Business Machines Corporation Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100876486B1 (ko) 2004-03-30 2008-12-31 인텔 코오퍼레이션 저장 성능 개선
US8677070B2 (en) 2007-06-20 2014-03-18 Fujitsu Limited Cache memory control apparatus and cache memory control method
JP2015210577A (ja) * 2014-04-24 2015-11-24 富士通株式会社 演算処理装置および演算処理装置の制御方法

Also Published As

Publication number Publication date
JP3509067B2 (ja) 2004-03-22
US6349382B1 (en) 2002-02-19

Similar Documents

Publication Publication Date Title
JP3509067B2 (ja) ストア命令転送方法およびプロセッサ
JP4045062B2 (ja) ロード命令を実行する方法、プロセッサ、およびシステム
US5611063A (en) Method for executing speculative load instructions in high-performance processors
US5751983A (en) Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US6065103A (en) Speculative store buffer
JP2938426B2 (ja) 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置
US6401192B1 (en) Apparatus for software initiated prefetch and method therefor
US6609192B1 (en) System and method for asynchronously overlapping storage barrier operations with old and new storage operations
US6266768B1 (en) System and method for permitting out-of-order execution of load instructions
JPH02234248A (ja) 仮想メモリシステムをベースとするデジタルコンピュータの命令パイプライン内の予めフェッチした命令でメモリアクセス例外を処理する方法
JP2003131871A (ja) コンピュータシステム
JP3159435B2 (ja) ロード/ロード検出及びリオーダー方法及び装置
US6301654B1 (en) System and method for permitting out-of-order execution of load and store instructions
US5751986A (en) Computer system with self-consistent ordering mechanism
KR19990072271A (ko) 고성능의추론적인오정렬로드연산
US7822948B2 (en) Apparatus, system, and method for discontiguous multiple issue of instructions
JP2003296191A (ja) 汎用プロセッサおよび周辺装置のプロセッサとして動作可能な集積回路
JP3155519B2 (ja) スーパスカラ・プロセッサでストア命令を処理する方法及び装置
US6237066B1 (en) Supporting multiple outstanding requests to multiple targets in a pipelined memory system
US6477635B1 (en) Data processing system including load/store unit having a real address tag array and method for correcting effective address aliasing
JP7025100B2 (ja) アドレス変換なしで動作する読み込み/格納ユニットでの実効アドレスのシノニムの処理
US5802340A (en) Method and system of executing speculative store instructions in a parallel processing computer system
JP2951580B2 (ja) 非プログラム順序の命令実行をサポートする方法及びデータ処理システム
US5956503A (en) Method and system for front-end and back-end gathering of store instructions within a data-processing system
US5894569A (en) Method and system for back-end gathering of store instructions within a data-processing system

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20031219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20031219

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

Free format text: PAYMENT UNTIL: 20080109

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090109

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees