JP2000250810A - ロード命令を実行する方法、プロセッサ、およびシステム - Google Patents

ロード命令を実行する方法、プロセッサ、およびシステム

Info

Publication number
JP2000250810A
JP2000250810A JP2000046172A JP2000046172A JP2000250810A JP 2000250810 A JP2000250810 A JP 2000250810A JP 2000046172 A JP2000046172 A JP 2000046172A JP 2000046172 A JP2000046172 A JP 2000046172A JP 2000250810 A JP2000250810 A JP 2000250810A
Authority
JP
Japan
Prior art keywords
load
load instruction
cache
cache line
data
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
JP2000046172A
Other languages
English (en)
Other versions
JP4045062B2 (ja
Inventor
Wayne Frederick Marlin Jr
マーリン・ウェイン・フレデリック、ジュニア
Joseph Ronshetti Bruce
ブルース・ジョセフ・ロンシェッティ
James Sippy David
デヴィッド・ジェイムス・シッピィ
Larry Edward Thatcher
ラリー・エドワード・サッチャー
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 JP2000250810A publication Critical patent/JP2000250810A/ja
Application granted granted Critical
Publication of JP4045062B2 publication Critical patent/JP4045062B2/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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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)【要約】 【課題】 プロセッサ内でパイプライン化されたロード
命令を実行する改善された処理技術を提供する。 【解決手段】 複数のロード命令のパイプライン化と並
列実行は、ロード・ストア・ユニット内で実行される。
第1のロード命令がキャッシュ・ミスを招き、システム
・メモリ階層からロード・データを検索し始めると、同
じロード・データをアドレスする第2のロード命令が、
第1のロード命令にマージされて、システム・メモリ階
層から戻されたデータが第1と第2のロード命令の両方
と関連づけられたレジスタ・ファイルに送られる。その
結果、第2のロード命令は、データキャッシュにロード
・データが書き込まれ、妥当性検査されるまで待つ必要
がない。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般にデータ処理
システムに関し、特にプロセッサにおけるロード命令の
実行に関する。
【0002】
【従来の技術】マイクロプロセッサの処理速度を増すた
めに、アーキテクチャは、マイクロプロセッサ内で複数
の並列ロード命令を実行させるようにデザインされ、実
装されてきた。命令のパイプライン化は、複数の命令
が、実質的に並列に実行するために発行されることを可
能にする。このようなプロセスに伴う問題は、次のよう
なときに発生する。すなわち、第1のロード命令が、実
行のために送られるが、キャッシュ・ミスを生じ、そし
て第2のロード命令が、第1のロード命令と同じキャッ
シュ・ラインのロードを実行をするために送られるとき
に発生する。一般的に、そのような状況では、第2のロ
ード命令は、再実行されねばならず、または、第2のロ
ード命令が完了する前に、第1のロード命令からのロー
ド・データが、1次データ・キャッシュに取り込まれ、
妥当性検査されるのを少なくとも待たなければならな
い。
【0003】
【発明が解決しようとする課題】その結果、プロセッサ
内でパイプライン化されたロード命令を実行する改善さ
れた方法が必要とされている。
【0004】
【課題を解決するための手段】本発明は、特定の状況で
同じキャッシュ・ラインをアドレスするロード命令の対
をマージすることによって前述の必要性を処理してい
る。本発明は、キャッシュにおいて以前にミスされてい
るキャッシュ・ラインへのロード命令を受け取るロード
・ストア・ユニットを提供する。ロード・ミス・キュー
は、以前のロード命令のキャッシュ・ミスを扱うのに必
要とされる情報を保持する。後続するロード命令は、キ
ャッシュにおいて以前にミスされた同じキャッシュ・ラ
インからロードを試みるとき、ロード・ミス・キュー
は、第2のロード命令に対して責任を負う。キャッシュ
・ラインがデータ・キャッシュに戻されると、要求され
たデータは、第1のバスを通って第1のロード命令のレ
ジスタに渡され、第2のロード命令の要求されたデータ
は、第2のバスを通って第2のロード命令のレジスタに
渡される。このように、同じキャッシュ・ラインにアク
セスする2つのロード命令の各々のためのオペランド
が、同じミス・オペレーションによって共にサービスさ
れる。
【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キャッシ
ュ236にロードされる。
【0015】これらのロード・オペレーションは、見込
み的にかつアウトオブオーダーに実行できる。ストア命
令も、また、アウトオブオーダーに実行される。ストア
命令は、変換器214,215内の変換オペレーション
によってランされ、命令が完了した後、L1キャッシュ
236への記憶のために、ストア・データ・キュー(S
DQ)221に挿入される。したがって、ストア命令は
アウトオブオーダーに実行されるが、L1キャッシュ2
36にインオーダー(in order)に書き込まれる。
【0016】ストア・リオーダー・キュー(SRQ)2
22は、実行されたストア命令を追跡する。SRQ22
2は、ストア命令を待ち行列で保持し、いつデータがス
トア・データ・キュー(SDQ)221で使用可能であ
るか、およびいつストア命令がほとんど完了するかを判
別する。そしてL1キャッシュ236へのストアが完了
する。
【0017】レジスタ223,225〜229,237
〜238の多くは、タイミングのために利用される。
【0018】L1キャッシュ236内のキャッシュ・ラ
インは、キャッシュ・ラインの有効アドレスに基づいて
アクセスされる。RAタグ・アレイ233は、L1キャ
ッシュ236内でキャッシュ・ラインが書き込まれた場
所を追跡する。フォーマット・ブロック231は、SD
Q221からのデータを受け取って、それを適切に回転
し、ストア命令の実行時に、L1キャッシュ236内の
正しいバイト位置に書き込む。回転ブロック224,2
30は、ストア転送に利用される。したがって、ストア
・キュー内にあり、ほとんど完了していないが故に、キ
ャッシュ/メモリ・サブシステム内にまだ書き込まれて
おらず、データを必要とする若いロード命令が受け取ら
れるならば、データは実行されるロード命令に転送され
る。
【0019】回転ブロック239を用いて、L1キャッ
シュ・ミスに応じてL2キャッシュ(図示せず)から受
け取ったデータを回転し、適切なレジスタ・ファイルに
転送するために、L2キャッシュからのデータを結果バ
ス上に転送する。
【0020】ブロック219は、いくつかの特別の目的
のレジスタを含み、特別の目的のレジスタ命令の結果と
してデータをストアし、それらのレジスタからデータを
読み出して、通常のパイプラインに送るようにする。
【0021】レジスタ235は、タイミングのために実
装され、L2キャッシュ(図示せず)からのデータを格
納する。フォーマット・ブロック240と241は、キ
ャッシュ・データを、レジスタ・ファイルへのロード結
果に対する適切なバイト位置にフォーマットする(また
はシフトする)。
【0022】ロード・ストア・ユニット201は、上述
したロード・ミス・キュー(LMQ)218を含み、こ
のLMQは、L1データ・キャッシュ236をミスする
ロード命令を処理する。LMQ218は、ダウンストリ
ーム・メモリ(2番目のすなわちL2キャッシュ,L3
キャッシュ,システム・メモリ等)からのL1データ・
キャッシュ・ラインのリロードを制御する。LMQ21
8は、データが記憶階層から戻されるとき、結果バス2
80,281を経てレジスタ・ファイル(図示せず)へ
の重要なロードデータの転送を制御する。
【0023】LMQ218は8つのエントリを有し、異
なるキャッシュ・ラインに対し最大8つの要求を一度に
処理する(1エントリ当たり1キャッシュ・ライン・ミ
ス)ことを可能にする。また、8つのLMQのエントリ
のそれぞれは、最大2つのロード命令(第2のロード命
令は、以下に述べるように、既存のエントリに“マー
ジ”される)に、重要なデータを転送できる。したがっ
て、LMQ218は、一度に16ロード命令を、潜在的
にサービスできる。
【0024】本発明は、“ロード・ヒット・リロード・
マージ”機能を実行し、その機能はリロード・データを
待っている既存のLMQ218のエントリに、実行時に
ロード命令をマージする。
【0025】データが記憶階層から戻されると、重要な
ロード・データは、結果バス280,281上をレジス
タ・ファイルに転送される。この重要なデータ転送は、
丁度発行された他のロード命令またはストア命令に対し
て、最優先順位を有することができる。ロード・ストア
・ユニット201は、2つの実行パイプラインを有し、
したがって2つの結果バス280,281を有すること
に注意されたい。マージすることによって、本発明は、
データが記憶階層から戻されると、各結果バス280,
281上にロード・データを戻すことによって、これら
2つのパイプラインを利用する。
【0026】図4を参照すると、第1のロード命令は、
ステップ301で、ディスパッチ・ユニット271によ
って発行される。ステップ302で、第1のロード命令
によってアドレスされたデータ(キャッシュ・ライン)
が、L1データ・キャッシュ236内にあるか否かを判
別される。イエスならば、処理はステップ303に進
み、L1データ・キャッシュ236からのアドレスされ
たロード・データを結果バス280,281上に戻す。
【0027】アドレスされたキャッシュ・ラインが、L
1データ・キャッシュ236内に無いならば、処理はス
テップ302からステップ304に進んで、キャッシュ
・ラインのアドレスが、既存のLMQ218のエントリ
内のアドレスと一致するか否かを判別する。一致しなけ
れば、処理はステップ305に進んで、LMQ218が
フル(full)であるか否かを判別する。フルでなければ、
キャッシュ・ミスに対し新しいLMQ218のエントリ
が作成され、キャッシュ・ラインに対する要求は、シス
テム・メモリ階層のダウンストリーム(downstream)に送
られる。この要求は、この場合、ステップ306で、L
2キャッシュ(図示せず)に対する要求である。ステッ
プ311で、第1のロード命令は、L2キャッシュから
のロード・データの戻りを待つ。その時に、第2のロー
ド命令は、ロード・ストア・ユニット201内で実行す
るために、ディスパッチ・ユニット271によって発行
することができる(ステップ301)。この例について
は、この第2のロード命令が、第1のロード命令によっ
てアドレスされた同じキャッシュ・ラインのデータを要
求しているものとする。したがって、第2のロード命令
は、また、第1のロード命令と同じキャッシュ・ライン
をアドレスする。ステップ302で、第2のロード命令
によって要求されたキャッシュ・ラインが、L1データ
・キャッシュ236内に無いことが判別されるであろ
う。というのは、このキャッシュ・ラインは、第1のロ
ード命令に対して使用可能ではないからである。このシ
ナリオは、ロード・ストア・ユニット201によって複
数の並列ロード命令を実行する本発明において起こりう
ることであることに留意すべきである。キャッシュ・ラ
インが、L2キャッシュによってL1データ・キャッシ
ュ236に既に戻されて、妥当性検査されたならば、L
1ヒットがステップ302で判別され、第2のロード命
令が、ステップ303にて結果バス280,281上に
戻されたデータを有する。しかし、前述したように、第
1のロード命令は、要求されたキャッシュ・ラインの戻
りをまだ待っている(ステップ311)ものとしてい
る。
【0028】ステップ304で、同じキャッシュ・ライ
ンが、第1と第2のロード命令によってアドレスされて
いるので、処理はステップ307に進んで、スロットが
フルであるか否かを判別する。言い換えれば、第1のロ
ード命令のために作成されたLMQのエントリが、他の
第3のロード命令とすでにマージされたか否かが判別さ
れる。イエスならば、第2のロード命令はステップ30
8で拒否される。しかし、スロットがフルでないなら
ば、処理はステップ309に進んで、キャッシュ・ライ
ンが、すでにロード・ストア・ユニット201に戻され
る処理にあるか否かを判別する。これが真ならば、第2
のロード命令はステップ308で拒否される。ステップ
309での判別は、L2キャッシュ・アービトレーショ
ン信号を監視することによって行うことができる。
【0029】データがまだ戻っていないならば、処理は
ステップ310に進んで、第2のロード命令を、第1の
ロード命令に対応する既存のLMQ218のエントリに
マージする。LMQ218はいくつかのエントリを含
む。各エントリは、ロード・ミスを招くキャッシュ・ラ
インのアドレスのための1組のビットを有する。各エン
トリのための第2のビット組は、戻されてストアされる
べきデータのフォーマットを判別する制御情報に関係す
る。ステップ304は、第2のロード命令のアドレス
を、LMQのエントリに示された第1のロード命令のア
ドレスと比較する。
【0030】各LMQのエントリは、また、検索されて
ストアされるべきデータのフォーマットを判別する制御
情報のための他のビット組を含むが、マージされたロー
ド命令に対応している。ステップ307で、この第2の
ビット組が前のマージにより既に占められているなら
ば、第2のロード命令はステップ308で拒否される。
しかし、そうでなければ、ステップ310で実行された
マージ・オペレーションは、第1のロード命令に対応す
るLMQのエントリにストアされる第2のロード命令に
関係する制御情報を生成する。
【0031】その後、ステップ311で、第2のロード
命令は、また、戻されたロード・データを待つ。
【0032】一度ロード・データが戻されると、そのロ
ード・データは、結果バス280,281の両方を経
て、マージされたLMQ218のエントリ内で示された
第1と第2のロード命令に対応するレジスタ・ファイル
に送られる。
【0033】本発明の利点は、データが記憶階層から戻
されるときに、第2のロード命令を第1のロード命令と
マージすることが、ロード・ストア・ユニット201
に、重要なロード・データを結果バス280,281上
に転送させることを可能にすることである。第2のロー
ド命令が第1のロード命令とマージされなければ、第2
のロード命令は全てのデータ(キャッシュ・ライン)が
L1データ・キャッシュ236に書き込まれるまで待た
ねばならず、第2のロード命令の前に妥当性検査された
キャッシュ・ラインがデータを得ることができる。第2
のロード命令をマージすることは、ロード・データが、
ロード・ストア・ユニット201に使用可能にされると
すぐに、ロード・データを戻すことによって、性能の利
点を与える。できるだけすぐにロード・データを戻すこ
とは、従属する命令の実行を可能にする。
【0034】本発明とその利点を、詳細に説明したが、
種々の変更,置換,変形を、本発明の趣旨と範囲から逸
脱することなしに行うことができることが、理解される
であろう。
【0035】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0036】(1)プロセッサにおいてロード命令を実
行する方法であって、実行のために、第1のロード命令
を発行するステップと、前記第1のロード命令によって
アドレスされたデータが、1次キャッシュ内に無いこと
を判別するステップと、システム・メモリから前記デー
タを検索するステップと、実行のために、前記データを
アドレスする第2のロード命令を発行するステップと、
前記データを前記第1と第2のロード命令の両方に戻す
ステップとを含む方法。
【0037】(2)前記システム・メモリが、2次キャ
ッシュを含む上記(1)記載の方法。
【0038】(3)前記判別するステップが、前記第1
のロード命令に対応するロード・ミス・キュー内に、エ
ントリを割り振るステップをさらに含む上記(1)記載
の方法。
【0039】(4)前記ロード・ミス・キュー内のエン
トリが、前記データのアドレスを含む上記(3)記載の
方法。
【0040】(5)前記戻すステップが、前記第2のロ
ード命令のアドレスを、前記ロード・ミス・キュー内の
前記データのアドレスと比較するステップをさらに含む
上記(4)記載の方法。
【0041】(6)前記戻すステップが、前記第2のロ
ード命令を前記第1のロード命令とマージするステップ
をさらに含む上記(5)記載の方法。
【0042】(7)ロード/ストア・ユニットと、第1
のロード命令を前記ロード/ストア・ユニットに発行す
る命令ディスパッチ・ユニットとを備え、前記第1のロ
ード命令はキャッシュ・ラインをアドレスし、前記アド
レスされたキャッシュ・ラインが、前記ロード/ストア
・ユニットに結合されたデータ・キャッシュ内にあるか
否かを判別する回路手段と、前記アドレスされたキャッ
シュ・ラインが、前記ロード/ストア・ユニットに結合
された前記データ・キャッシュ内に無いことが判別され
ると、前記第1のロード命令に対応するエントリをスト
アするロード・ミス・キューと、前記データ・キャッシ
ュからのダウンストリーム・メモリから、前記アドレス
されたキャッシュ・ラインを要求する回路手段と、前記
ロード/ストア・ユニット内で実行するために受け取っ
た第2のロード命令のキャッシュ・ライン・アドレス
を、前記ロード・ミス・キュー内のエントリと比較する
回路手段と、前記第2のロード命令を、前記第1のロー
ド命令に対応する前記ロード・ミス・キュー内のエント
リとマージする回路手段と、前記ダウンストリーム・メ
モリから受け取った前記アドレスされたキャッシュ・ラ
インを、第1のロード命令と関連づけられたレジスタに
転送する第1の結果バスと、前記ダウンストリーム・メ
モリから受け取った前記アドレスされたキャッシュ・ラ
インを、第2のロード命令と関連づけられたレジスタに
転送する第2の結果バスとを備えるプロセッサ。
【0043】(8)前記第2のロード命令は、第2のロ
ード命令を再発行する必要なしに、前記第1のロード命
令と同時にサービスされる上記(7)記載のプロセッ
サ。
【0044】(9)前記第2のロード命令は、前記キャ
ッシュ・ラインが前記データ・キャッシュ内にストアさ
れるのを待つ必要なしに、前記アドレスされたキャッシ
ュ・ラインを受け取る上記(7)記載のプロセッサ。
【0045】(10)前記第2のロード命令は、前記キ
ャッシュ・ラインが前記データ・キャッシュにストアさ
れ、および前記キャッシュ・ラインが妥当性検査される
のを待つ必要なしに、前記アドレスされたキャッシュ・
ラインを受け取る上記(9)記載のプロセッサ。
【0046】(11)プロセッサにおいてロード命令を
実行するシステムであって、実行のために第1のロード
命令をロード/ストア・ユニットに発行する回路手段
と、前記第1のロード命令によってアドレスされたキャ
ッシュ・ラインが、前記ロード/ストア・ユニットに結
合された1次キャッシュ内に無いことを判別する回路手
段と、前記プロセッサに結合された2次キャッシュから
前記キャッシュ・ラインを検索する回路手段と、実行の
ために、前記キャッシュ・ラインをアドレスする第2の
ロード命令を前記ロード/ストア・ユニットに発行する
回路手段と、前記キャッシュ・ラインを前記第1と第2
のロード命令の両方に戻す回路手段とを含むシステム。
【0047】(12)前記第2のロード命令は、前記キ
ャッシュ・ラインが、前記1次キャッシュ内にストアさ
れるのを待つ必要なしに、前記キャッシュ・ラインを受
け取る上記(11)記載のシステム。
【0048】(13)前記第2のロード命令は、前記キ
ャッシュ・ラインが前記データ・キャッシュにストアさ
れ、および前記キャッシュ・ラインが妥当性を検査され
るのを待つ必要なしに、前記キャッシュ・ラインを受け
取る上記(11)記載のシステム。
【0049】(14)前記判別する回路手段が、前記第
1のロード命令に対応するロード・ミス・キュー内に、
エントリを割り振る回路手段をさらに備える上記(1
2)記載のシステム。
【0050】(15)前記ロード・ミス・キュー内のエ
ントリが、前記キャッシュ・ラインのアドレスを含む上
記(14)記載のシステム。
【0051】(16)前記戻す回路手段が、前記第2の
ロード命令のアドレスを、前記ロード・ミス・キュー内
の前記キャッシュ・ラインのアドレスと比較する回路手
段をさらに備える上記(15)記載のシステム。
【0052】(17)前記戻す回路手段が、前記第2の
ロード命令を、前記第1のロード命令に対応する前記ロ
ード・ミス・キュー内のエントリとマージする回路手段
をさらに備える上記(16)記載のシステム。
【0053】(18)前記戻す回路手段が、前記2次キ
ャッシュから受け取ったキャッシュ・ラインを、第1の
ロード命令に関連づけられた第1のレジスタに転送する
第1の結果バスと、前記2次キャッシュから受け取った
キャッシュ・ラインを、第2のロード命令に関連づけら
れた第2のレジスタに転送する第2の結果バスとをさら
に備える上記(17)記載のシステム。
【0054】(19)前記第1と第2の結果バスは、前
記キャッシュ・ラインを、前記第1と第2のレジスタに
並列に転送する上記(18)記載のシステム。
【図面の簡単な説明】
【図1】本発明に従って構成されたデータ処理システム
を示す図である。
【図2】本発明に従って構成されたロード/ストア・ユ
ニットを示す図である。
【図3】本発明に従って構成されたロード/ストア・ユ
ニットを示す図である。
【図4】本発明による処理を示す流れ図である。
【符号の説明】
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 タグ 280,281 結果バス
フロントページの続き (72)発明者 マーリン・ウェイン・フレデリック、ジュ ニア アメリカ合衆国 78613 テキサス州 セ ダー パーク ハンターズ クリーク ド ライブ 1108 (72)発明者 ブルース・ジョセフ・ロンシェッティ アメリカ合衆国 78731 テキサス州 オ ースティン ジェントル ブリーズ テラ ス 5820 (72)発明者 デヴィッド・ジェイムス・シッピィ アメリカ合衆国 78731 テキサス州 オ ースティン ロンサム ヴァレィ コート 4200 (72)発明者 ラリー・エドワード・サッチャー アメリカ合衆国 78759 テキサス州 オ ースティン ディーケイ ランチ ロード 11507

Claims (19)

    【特許請求の範囲】
  1. 【請求項1】プロセッサにおいてロード命令を実行する
    方法であって、 実行のために、第1のロード命令を発行するステップ
    と、 前記第1のロード命令によってアドレスされたデータ
    が、1次キャッシュ内に無いことを判別するステップ
    と、 システム・メモリから前記データを検索するステップ
    と、 実行のために、前記データをアドレスする第2のロード
    命令を発行するステップと、 前記データを前記第1と第2のロード命令の両方に戻す
    ステップとを含む方法。
  2. 【請求項2】前記システム・メモリが、2次キャッシュ
    を含む請求項1記載の方法。
  3. 【請求項3】前記判別するステップが、 前記第1のロード命令に対応するロード・ミス・キュー
    内に、エントリを割り振るステップをさらに含む請求項
    1記載の方法。
  4. 【請求項4】前記ロード・ミス・キュー内のエントリ
    が、前記データのアドレスを含む請求項3記載の方法。
  5. 【請求項5】前記戻すステップが、 前記第2のロード命令のアドレスを、前記ロード・ミス
    ・キュー内の前記データのアドレスと比較するステップ
    をさらに含む請求項4記載の方法。
  6. 【請求項6】前記戻すステップが、 前記第2のロード命令を前記第1のロード命令とマージ
    するステップをさらに含む請求項5記載の方法。
  7. 【請求項7】ロード/ストア・ユニットと、 第1のロード命令を前記ロード/ストア・ユニットに発
    行する命令ディスパッチ・ユニットとを備え、前記第1
    のロード命令はキャッシュ・ラインをアドレスし、 前記アドレスされたキャッシュ・ラインが、前記ロード
    /ストア・ユニットに結合されたデータ・キャッシュ内
    にあるか否かを判別する回路手段と、 前記アドレスされたキャッシュ・ラインが、前記ロード
    /ストア・ユニットに結合された前記データ・キャッシ
    ュ内に無いことが判別されると、前記第1のロード命令
    に対応するエントリをストアするロード・ミス・キュー
    と、 前記データ・キャッシュからのダウンストリーム・メモ
    リから、前記アドレスされたキャッシュ・ラインを要求
    する回路手段と、 前記ロード/ストア・ユニット内で実行するために受け
    取った第2のロード命令のキャッシュ・ライン・アドレ
    スを、前記ロード・ミス・キュー内のエントリと比較す
    る回路手段と、 前記第2のロード命令を、前記第1のロード命令に対応
    する前記ロード・ミス・キュー内のエントリとマージす
    る回路手段と、 前記ダウンストリーム・メモリから受け取った前記アド
    レスされたキャッシュ・ラインを、第1のロード命令と
    関連づけられたレジスタに転送する第1の結果バスと、 前記ダウンストリーム・メモリから受け取った前記アド
    レスされたキャッシュ・ラインを、第2のロード命令と
    関連づけられたレジスタに転送する第2の結果バスとを
    備えるプロセッサ。
  8. 【請求項8】前記第2のロード命令は、第2のロード命
    令を再発行する必要なしに、前記第1のロード命令と同
    時にサービスされる請求項7記載のプロセッサ。
  9. 【請求項9】前記第2のロード命令は、前記キャッシュ
    ・ラインが前記データ・キャッシュ内にストアされるの
    を待つ必要なしに、前記アドレスされたキャッシュ・ラ
    インを受け取る請求項7記載のプロセッサ。
  10. 【請求項10】前記第2のロード命令は、前記キャッシ
    ュ・ラインが前記データ・キャッシュにストアされ、お
    よび前記キャッシュ・ラインが妥当性検査されるのを待
    つ必要なしに、前記アドレスされたキャッシュ・ライン
    を受け取る請求項9記載のプロセッサ。
  11. 【請求項11】プロセッサにおいてロード命令を実行す
    るシステムであって、 実行のために第1のロード命令をロード/ストア・ユニ
    ットに発行する回路手段と、 前記第1のロード命令によってアドレスされたキャッシ
    ュ・ラインが、前記ロード/ストア・ユニットに結合さ
    れた1次キャッシュ内に無いことを判別する回路手段
    と、 前記プロセッサに結合された2次キャッシュから前記キ
    ャッシュ・ラインを検索する回路手段と、 実行のために、前記キャッシュ・ラインをアドレスする
    第2のロード命令を前記ロード/ストア・ユニットに発
    行する回路手段と、 前記キャッシュ・ラインを前記第1と第2のロード命令
    の両方に戻す回路手段とを含むシステム。
  12. 【請求項12】前記第2のロード命令は、前記キャッシ
    ュ・ラインが、前記1次キャッシュ内にストアされるの
    を待つ必要なしに、前記キャッシュ・ラインを受け取る
    請求項11記載のシステム。
  13. 【請求項13】前記第2のロード命令は、前記キャッシ
    ュ・ラインが前記データ・キャッシュにストアされ、お
    よび前記キャッシュ・ラインが妥当性を検査されるのを
    待つ必要なしに、前記キャッシュ・ラインを受け取る請
    求項11記載のシステム。
  14. 【請求項14】前記判別する回路手段が、 前記第1のロード命令に対応するロード・ミス・キュー
    内に、エントリを割り振る回路手段をさらに備える請求
    項12記載のシステム。
  15. 【請求項15】前記ロード・ミス・キュー内のエントリ
    が、前記キャッシュ・ラインのアドレスを含む請求項1
    4記載のシステム。
  16. 【請求項16】前記戻す回路手段が、 前記第2のロード命令のアドレスを、前記ロード・ミス
    ・キュー内の前記キャッシュ・ラインのアドレスと比較
    する回路手段をさらに備える請求項15記載のシステ
    ム。
  17. 【請求項17】前記戻す回路手段が、 前記第2のロード命令を、前記第1のロード命令に対応
    する前記ロード・ミス・キュー内のエントリとマージす
    る回路手段をさらに備える請求項16記載のシステム。
  18. 【請求項18】前記戻す回路手段が、 前記2次キャッシュから受け取ったキャッシュ・ライン
    を、第1のロード命令に関連づけられた第1のレジスタ
    に転送する第1の結果バスと、 前記2次キャッシュから受け取ったキャッシュ・ライン
    を、第2のロード命令に関連づけられた第2のレジスタ
    に転送する第2の結果バスとをさらに備える請求項17
    記載のシステム。
  19. 【請求項19】前記第1と第2の結果バスは、前記キャ
    ッシュ・ラインを、前記第1と第2のレジスタに並列に
    転送する請求項18記載のシステム。
JP2000046172A 1999-02-26 2000-02-23 ロード命令を実行する方法、プロセッサ、およびシステム Expired - Fee Related JP4045062B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/259139 1999-02-26
US09/259,139 US6336168B1 (en) 1999-02-26 1999-02-26 System and method for merging multiple outstanding load miss instructions

Publications (2)

Publication Number Publication Date
JP2000250810A true JP2000250810A (ja) 2000-09-14
JP4045062B2 JP4045062B2 (ja) 2008-02-13

Family

ID=22983691

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000046172A Expired - Fee Related JP4045062B2 (ja) 1999-02-26 2000-02-23 ロード命令を実行する方法、プロセッサ、およびシステム

Country Status (3)

Country Link
US (1) US6336168B1 (ja)
JP (1) JP4045062B2 (ja)
CN (1) CN1120415C (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006318051A (ja) * 2005-05-10 2006-11-24 Nec Electronics Corp マイクロプロセッサ及びマイクロプロセッサの制御方法
JP2007226641A (ja) * 2006-02-24 2007-09-06 Nec Corp 情報処理装置、キャッシュ制御方法及びプログラム
JP2019121351A (ja) * 2017-12-29 2019-07-22 インテル・コーポレーション 遠隔アトミックオペレーションの空間的・時間的マージ

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542988B1 (en) * 1999-10-01 2003-04-01 Sun Microsystems, Inc. Sending both a load instruction and retrieved data from a load buffer to an annex prior to forwarding the load data to register file
US6901540B1 (en) * 1999-11-08 2005-05-31 International Business Machines Corporation TLB parity error recovery
US6725358B1 (en) * 2000-06-22 2004-04-20 International Business Machines Corporation Processor and method having a load reorder queue that supports reservations
WO2003021426A2 (en) * 2001-08-29 2003-03-13 Analog Devices Inc. Method and apparatus for timing and event processing in wireless systems
US7543133B1 (en) 2003-08-18 2009-06-02 Cray Inc. Latency tolerant distributed shared memory multiprocessor computer
US7743223B2 (en) * 2003-08-18 2010-06-22 Cray Inc. Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system
US7519771B1 (en) * 2003-08-18 2009-04-14 Cray Inc. System and method for processing memory instructions using a forced order queue
US20050138290A1 (en) * 2003-12-23 2005-06-23 Intel Corporation System and method for instruction rescheduling
US7257699B2 (en) * 2004-07-08 2007-08-14 Sun Microsystems, Inc. Selective execution of deferred instructions in a processor that supports speculative execution
US7302527B2 (en) * 2004-11-12 2007-11-27 International Business Machines Corporation Systems and methods for executing load instructions that avoid order violations
US20070067567A1 (en) * 2005-09-19 2007-03-22 Via Technologies, Inc. Merging entries in processor caches
US20080282034A1 (en) * 2005-09-19 2008-11-13 Via Technologies, Inc. Memory Subsystem having a Multipurpose Cache for a Stream Graphics Multiprocessor
CN100390738C (zh) * 2005-10-18 2008-05-28 中国科学院计算技术研究所 一种基于数据流分析的访存合并优化方法
US7627735B2 (en) * 2005-10-21 2009-12-01 Intel Corporation Implementing vector memory operations
US20090113182A1 (en) * 2007-10-24 2009-04-30 Abernathy Christopher M System and Method for Issuing Load-Dependent Instructions from an Issue Queue in a Processing Unit
US7991979B2 (en) * 2008-09-23 2011-08-02 International Business Machines Corporation Issuing load-dependent instructions in an issue queue in a processing unit of a data processing system
KR101996462B1 (ko) 2012-06-15 2019-07-04 인텔 코포레이션 명확화 없는 비순차 load store 큐
KR101996351B1 (ko) 2012-06-15 2019-07-05 인텔 코포레이션 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐
EP2862068B1 (en) 2012-06-15 2022-07-06 Intel Corporation Reordered speculative instruction sequences with a disambiguation-free out of order load store queue
KR101826399B1 (ko) 2012-06-15 2018-02-06 인텔 코포레이션 Load store 재정렬 및 최적화를 구현하는 명령어 정의
CN104583943B (zh) 2012-06-15 2018-06-08 英特尔公司 拥有具有分布式结构的动态分派窗口的虚拟加载存储队列
KR101667167B1 (ko) 2012-06-15 2016-10-17 소프트 머신즈, 인크. Load store 재정렬 및 최적화로부터 생기는 투기적 포워딩 예측 착오/오류로부터의 복원을 구현하는 방법 및 시스템
US9323679B2 (en) * 2012-08-14 2016-04-26 Nvidia Corporation System, method, and computer program product for managing cache miss requests
CN104657145B (zh) * 2015-03-09 2017-12-15 上海兆芯集成电路有限公司 用于微处理器的重发停靠的系统和方法
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) * 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
CN109669881B (zh) * 2018-12-11 2023-04-14 中国航空工业集团公司西安航空计算技术研究所 一种基于Cache空间预约算法的计算方法
EP3812892B1 (en) * 2019-10-21 2022-12-07 ARM Limited Apparatus and method for handling memory load requests
GB2594732B (en) 2020-05-06 2022-06-01 Advanced Risc Mach Ltd Adaptive load coalescing
US11249757B1 (en) * 2020-08-14 2022-02-15 International Business Machines Corporation Handling and fusing load instructions in a processor
US20220374237A1 (en) * 2021-05-21 2022-11-24 Telefonaktiebolaget Lm Ericsson (Publ) Apparatus and method for identifying and prioritizing certain instructions in a microprocessor instruction pipeline

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155832A (en) * 1989-07-05 1992-10-13 Hewlett-Packard Company Method to increase performance in a multi-level cache system by the use of forced cache misses
US5826109A (en) * 1994-01-04 1998-10-20 Intel Corporation Method and apparatus for performing multiple load operations to the same memory location in a computer system
US5745729A (en) * 1995-02-16 1998-04-28 Sun Microsystems, Inc. Methods and apparatuses for servicing load instructions

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006318051A (ja) * 2005-05-10 2006-11-24 Nec Electronics Corp マイクロプロセッサ及びマイクロプロセッサの制御方法
JP2007226641A (ja) * 2006-02-24 2007-09-06 Nec Corp 情報処理装置、キャッシュ制御方法及びプログラム
JP2019121351A (ja) * 2017-12-29 2019-07-22 インテル・コーポレーション 遠隔アトミックオペレーションの空間的・時間的マージ
JP7244046B2 (ja) 2017-12-29 2023-03-22 インテル・コーポレーション 遠隔アトミックオペレーションの空間的・時間的マージ

Also Published As

Publication number Publication date
US6336168B1 (en) 2002-01-01
CN1120415C (zh) 2003-09-03
JP4045062B2 (ja) 2008-02-13
CN1264866A (zh) 2000-08-30

Similar Documents

Publication Publication Date Title
JP4045062B2 (ja) ロード命令を実行する方法、プロセッサ、およびシステム
JP3509067B2 (ja) ストア命令転送方法およびプロセッサ
US4985825A (en) System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer
US6266768B1 (en) System and method for permitting out-of-order execution of load instructions
US6442681B1 (en) Pipelined central processor managing the execution of instructions with proximate successive branches in a cache-based data processing system while performing block mode transfer predictions
US5019965A (en) Method and apparatus for increasing the data storage rate of a computer system having a predefined data path width
CA1300280C (en) Central processor unit for digital data processing system including write buffer management mechanism
JPH08504977A (ja) スーパースカラ・マイクロプロセサにおけるロード及び/又はストア動作を扱うシステム及び方法
JP3159435B2 (ja) ロード/ロード検出及びリオーダー方法及び装置
US6301654B1 (en) System and method for permitting out-of-order execution of load and store instructions
US6901540B1 (en) TLB parity error recovery
US5119484A (en) Selections between alternate control word and current instruction generated control word for alu in respond to alu output and current instruction
US7069394B2 (en) Dynamic data routing mechanism for a high speed memory cloner
CN111767081A (zh) 用于加速存储处理的装置、方法和系统
US6477635B1 (en) Data processing system including load/store unit having a real address tag array and method for correcting effective address aliasing
CN113535236A (zh) 基于指令集体系结构的和自动的加载跟踪的方法和装置
JPH02239331A (ja) データ処理システム及びその命令実行を促進する方法
US7321964B2 (en) Store-to-load forwarding buffer using indexed lookup
US6898677B2 (en) Dynamic software accessibility to a microprocessor system with a high speed memory cloner
JP2020536310A (ja) アドレス変換なしで動作する読み込み/格納ユニットでの実効アドレスのシノニムの処理
US6338128B1 (en) System and method for invalidating an entry in a translation unit
CN113849222A (zh) 流水线化乱序页未命中处理程序
JP3876033B2 (ja) 順不同に命令を実行するコンピュータのためのシステム
US20040111581A1 (en) Imprecise cache line protection mechanism during a memory clone operation
JP3045959B2 (ja) スーパースカラ・プロセッサ装置内の非アーキテクト命令を選択的にサポートする方法及び装置

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061012

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061017

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070112

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20070306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070814

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20070814

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071016

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071119

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20101122

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111122

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111122

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121122

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121122

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20131122

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees