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

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

Info

Publication number
JP4045062B2
JP4045062B2 JP2000046172A JP2000046172A JP4045062B2 JP 4045062 B2 JP4045062 B2 JP 4045062B2 JP 2000046172 A JP2000046172 A JP 2000046172A JP 2000046172 A JP2000046172 A JP 2000046172A JP 4045062 B2 JP4045062 B2 JP 4045062B2
Authority
JP
Japan
Prior art keywords
load instruction
load
data
cache
entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000046172A
Other languages
English (en)
Other versions
JP2000250810A (ja
Inventor
マーリン・ウェイン・フレデリック、ジュニア
ブルース・ジョセフ・ロンシェッティ
デヴィッド・ジェイムス・シッピィ
ラリー・エドワード・サッチャー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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

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/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)

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を介して相互接続されたいくつかの他のユニットを有する本発明に係るワークステーション113の典型的ハードウェア構成を示す。CPU110は、以下に述べられるような本発明のロード/ストア・ユニット201を実現する。ワークステーション113は、RAM114、ROM116、ディスク・ユニット120およびテープ・ドライブ140のような周辺装置をバス112に接続するI/Oアダプタ118、キーボード124,マウス126,および/またはタッチ・スクリーン・デバイス(図示せず)のような他のユーザー・インターフェース・デバイスをバス112に接続するユーザー・インターフェース・アダプタ122、ワークステーション113をデータ処理ネットワークに接続する通信アダプタ134、バス112をディスプレイ装置138に接続するディスプレイ・アダプタ136を含む。CPU110は、ここで示されない他の回路(ロード/ストア・ユニット201以外の)を含むことができ、それは、マイクロプロセッサ内で通常見いだされる回路、例えば、実行ユニット,バス・インターフェース・ユニット,演算論理ユニット等を含むであろう。CPU110は、また、1つの集積回路上に実装することができる。
【0009】
図2および図3は、本発明に従って構成されたロード/ストア(L/S)ユニット201を示す。L/Sユニット201は、CPU110内に設けられ、典型的マイクロプロセッサ・アーキテクチャに従って構成できる。
【0010】
L/Sユニット201は、マシン・サイクル毎に2つのロード命令またはストア命令が発行できるように2つのパイプラインを有している。レジスタ202〜205は、技術上周知のように固定小数点ユニット(FXU)0および1(図示せず)から命令を受け取る。64ビット加算器206は、レジスタ202と203から受け取ったオペランドを加算し、一方、64ビット加算器207は、レジスタ204と205からのオペランドを加算して、一対の64ビット有効アドレスを生成する。これらの有効アドレスは、それぞれレジスタ208,209に出力される。レジスタ208と209は、有効アドレス(EA)を取り込む。次にそれらレジスタは共に、LMQ218,LRQ220,SRQ222を与え、これらはすべて、アドレス・チェックを実行するため、レジスタ216,217からの実アドレスに加えてEAの一部を必要とする。さらに、有効アドレスはデコードされて、L1キャッシュ236にヒットまたはミスが存在するか否かを判別するために、タグ・アレイ210,211にアクセスする。ミスならば、そのアドレスは、レジスタ212,213を通り過ぎて、L2キャッシュ(図示せず)に送られる。
【0011】
さらに、有効アドレスは加算器206,207から送られてデコードされ、有効実アドレス変換器(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への記憶のために、ストア・データ・キュー(SDQ)221に挿入される。したがって、ストア命令はアウトオブオーダーに実行されるが、L1キャッシュ236にインオーダー(in order)に書き込まれる。
【0016】
ストア・リオーダー・キュー(SRQ)222は、実行されたストア命令を追跡する。SRQ222は、ストア命令を待ち行列で保持し、いつデータがストア・データ・キュー(SDQ)221で使用可能であるか、およびいつストア命令がほとんど完了するかを判別する。そしてL1キャッシュ236へのストアが完了する。
【0017】
レジスタ223,225〜229,237〜238の多くは、タイミングのために利用される。
【0018】
L1キャッシュ236内のキャッシュ・ラインは、キャッシュ・ラインの有効アドレスに基づいてアクセスされる。RAタグ・アレイ233は、L1キャッシュ236内でキャッシュ・ラインが書き込まれた場所を追跡する。フォーマット・ブロック231は、SDQ221からのデータを受け取って、それを適切に回転し、ストア命令の実行時に、L1キャッシュ236内の正しいバイト位置に書き込む。回転ブロック224,230は、ストア転送に利用される。したがって、ストア・キュー内にあり、ほとんど完了していないが故に、キャッシュ/メモリ・サブシステム内にまだ書き込まれておらず、データを必要とする若いロード命令が受け取られるならば、データは実行されるロード命令に転送される。
【0019】
回転ブロック239を用いて、L1キャッシュ・ミスに応じてL2キャッシュ(図示せず)から受け取ったデータを回転し、適切なレジスタ・ファイルに転送するために、L2キャッシュからのデータを結果バス上に転送する。
【0020】
ブロック219は、いくつかの特別の目的のレジスタを含み、特別の目的のレジスタ命令の結果としてデータをストアし、それらのレジスタからデータを読み出して、通常のパイプラインに送るようにする。
【0021】
レジスタ235は、タイミングのために実装され、L2キャッシュ(図示せず)からのデータを格納する。フォーマット・ブロック240と241は、キャッシュ・データを、レジスタ・ファイルへのロード結果に対する適切なバイト位置にフォーマットする(またはシフトする)。
【0022】
ロード・ストア・ユニット201は、上述したロード・ミス・キュー(LMQ)218を含み、このLMQは、L1データ・キャッシュ236をミスするロード命令を処理する。LMQ218は、ダウンストリーム・メモリ(2番目のすなわちL2キャッシュ,L3キャッシュ,システム・メモリ等)からのL1データ・キャッシュ・ラインのリロードを制御する。LMQ218は、データが記憶階層から戻されるとき、結果バス280,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】
アドレスされたキャッシュ・ラインが、L1データ・キャッシュ236内に無いならば、処理はステップ302からステップ304に進んで、キャッシュ・ラインのアドレスが、既存のLMQ218のエントリ内のアドレスと一致するか否かを判別する。一致しなければ、処理はステップ305に進んで、LMQ218がフル(full)であるか否かを判別する。フルでなければ、キャッシュ・ミスに対し新しいLMQ218のエントリが作成され、キャッシュ・ラインに対する要求は、システム・メモリ階層のダウンストリーム(downstream)に送られる。この要求は、この場合、ステップ306で、L2キャッシュ(図示せず)に対する要求である。ステップ311で、第1のロード命令は、L2キャッシュからのロード・データの戻りを待つ。その時に、第2のロード命令は、ロード・ストア・ユニット201内で実行するために、ディスパッチ・ユニット271によって発行することができる(ステップ301)。この例については、この第2のロード命令が、第1のロード命令によってアドレスされた同じキャッシュ・ラインのデータを要求しているものとする。したがって、第2のロード命令は、また、第1のロード命令と同じキャッシュ・ラインをアドレスする。ステップ302で、第2のロード命令によって要求されたキャッシュ・ラインが、L1データ・キャッシュ236内に無いことが判別されるであろう。というのは、このキャッシュ・ラインは、第1のロード命令に対して使用可能ではないからである。このシナリオは、ロード・ストア・ユニット201によって複数の並列ロード命令を実行する本発明において起こりうることであることに留意すべきである。キャッシュ・ラインが、L2キャッシュによってL1データ・キャッシュ236に既に戻されて、妥当性検査されたならば、L1ヒットがステップ302で判別され、第2のロード命令が、ステップ303にて結果バス280,281上に戻されたデータを有する。しかし、前述したように、第1のロード命令は、要求されたキャッシュ・ラインの戻りをまだ待っている(ステップ311)ものとしている。
【0028】
ステップ304で、同じキャッシュ・ラインが、第1と第2のロード命令によってアドレスされているので、処理はステップ307に進んで、スロットがフルであるか否かを判別する。言い換えれば、第1のロード命令のために作成されたLMQのエントリが、他の第3のロード命令とすでにマージされたか否かが判別される。イエスならば、第2のロード命令はステップ308で拒否される。しかし、スロットがフルでないならば、処理はステップ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のロード命令に対応するロード・ミス・キュー内に、エントリを割り振る回路手段をさらに備える上記(12)記載のシステム。
【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 結果バス

Claims (7)

  1. プロセッサにおいてロード命令を実行する方法であって、
    実行のために、ロード命令を発行し、該ロード命令によってアドレスされたデータが1次キャッシュ内にあることを判別すると、該1次キャッシュからのロード・データを戻し、該ロード命令によってアドレスされたデータが1次キャッシュ内に無いことを判別すると、該ロード命令に対応するロード・ミス・キューの新しいエントリを作成し、該データに対する要求をダウンストリームに送るにあたって、
    システム・メモリから前記データを検索する間に、前記データをアドレスする他のロード命令が発行された場合において、前記他のロード命令によってアドレスされたデータのアドレスを、既にロード・ミス・キューに格納された、該エントリと該要求されたデータに対応するロード命令である第1のロード命令に伴って生じる1次キャッシュ・ミスに伴ってリロードされるキャッシュラインを示すアドレスと比較するステップと、
    前記比較の結果が真の場合に、前記他のロード命令である第2のロード命令によってアドレスされたデータの制御情報を該エントリに格納するステップと、
    前記比較の結果が偽の場合に、ロード・ミス・キューがフルでなければ前記他のロード命令に対応する新しいエントリを作成するステップとを行い、
    該要求に対してダウンストリームから戻されたロード・データをレジスタ・ファイルに転送するにあたって、前記第1のロード命令によってアドレスされたデータを、前記ロード・ミス・キューのエントリ内で示された、前記第1のロード命令に対応するレジスタ・ファイルに転送し、前記第2のロード命令によってアドレスされたデータを、前記ロード・ミス・キューのエントリ内で示された、前記第2のロード命令に対応するレジスタ・ファイルに転送するステップを行い、
    前記制御情報を前記エントリに格納するステップでは、前記比較の結果が真の場合であっても既に第1のロード命令とは異なるロード命令によってアドレスされたデータの制御情報が前記エントリに格納されているか否かを判別し、該判別の結果が偽の場合にのみ第2のロード命令によってアドレスされたデータの制御情報を該エントリに格納し、該判別結果が真の場合には第2のロード命令は拒否される、方法。
  2. 前記システム・メモリが、2次キャッシュを含む請求項1記載の方法。
  3. プロセッサにおいてロード命令を実行するシステムであって、
    実行のために、ロード命令を発行する手段と、
    該ロード命令によってアドレスされたデータが1次キャッシュ内にあることを判別すると、該1次キャッシュからのロード・データを戻し、該ロード命令によってアドレスされたデータが1次キャッシュ内に無いことを判別すると、該ロード命令に対応するロード・ミス・キューの新しいエントリを作成し、該データに対する要求をダウンストリームに送るにあたって、システム・メモリから前記データを検索する間に、前記データをアドレスする他のロード命令が発行された場合において、前記他のロード命令によってアドレスされたデータのアドレスを、既にロード・ミス・キューに格納された、該エントリと該要求されたデータに対応するロード命令である第1のロード命令に伴って生じる1次キャッシュ・ミスに伴ってリロードされるキャッシュラインを示すアドレスと比較する手段と、
    前記比較の結果が真の場合に、前記他のロード命令である第2のロード命令によってアドレスされたデータの制御情報を該エントリに格納する手段と、
    前記比較の結果が偽の場合に、ロード・ミス・キューがフルでなければ前記他のロード命令に対応する新しいエントリを作成する手段と、
    該要求に対してダウンストリームから戻されたロード・データをレジスタ・ファイルに転送するにあたって、前記第1のロード命令によってアドレスされたデータを、前記ロード・ミス・キューのエントリ内で示された、前記第1のロード命令に対応するレジスタ・ファイルに転送し、前記第2のロード命令によってアドレスされたデータを、前記ロード ・ミス・キューのエントリ内で示された、前記第2のロード命令に対応するレジスタ・ファイルに転送する手段を具備し、
    前記制御情報を前記エントリに格納する手段において、前記比較の結果が真の場合であっても既に第1のロード命令とは異なるロード命令によってアドレスされたデータの制御情報が前記エントリに格納されているか否かを判別し、該判別の結果が偽の場合にのみ第2のロード命令によってアドレスされたデータの制御情報を該エントリに格納し、該判別結果が真の場合には第2のロード命令は拒否される、システム。
  4. 前記比較の結果が真の場合に、前記第2のロード命令は、前記キャッシュ・ラインが、前記1次キャッシュ内にストアされるのを待つ必要なしに、前記第1のロード命令に応じて検索されたキャッシュ・ラインを前記第2のロード命令に対応するレジスタ・ファイルに転送することにより処理される請求項3記載のシステム。
  5. 前記比較の結果が真の場合に、前記第2のロード命令は、前記キャッシュ・ラインが前記データ・キャッシュにストアされ、および前記キャッシュ・ラインが妥当性を検査されるのを待つ必要なしに、前記第1のロード命令に応じて検索されたキャッシュ・ラインを前記第2のロード命令に対応するレジスタ・ファイルに転送することにより処理される請求項3記載のシステム。
  6. 前記転送する回路手段が、
    前記2次キャッシュから受け取ったキャッシュ・ラインを、前記第1のロード命令に関連づけられた第1のレジスタ・ファイルに転送する第1の結果バスと、
    前記2次キャッシュから受け取ったキャッシュ・ラインを、前記第2のロード命令に関連づけられた第2のレジスタ・ファイルに転送する第2の結果バスとをさらに備える請求項5記載のシステム。
  7. 前記第1の結果バスと前記第2の結果バスは、前記キャッシュ・ラインを、前記第1のレジスタ・ファイルと前記第2のレジスタ・ファイルに並列に転送する請求項6記載のシステム。
JP2000046172A 1999-02-26 2000-02-23 ロード命令を実行する方法、プロセッサ、およびシステム Expired - Fee Related JP4045062B2 (ja)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
JP2000250810A JP2000250810A (ja) 2000-09-14
JP4045062B2 true 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)

Families Citing this family (40)

* 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
US6768358B2 (en) * 2001-08-29 2004-07-27 Analog Devices, Inc. Phase locked loop fast power up methods and apparatus
US7543133B1 (en) 2003-08-18 2009-06-02 Cray Inc. Latency tolerant distributed shared memory multiprocessor computer
US7519771B1 (en) * 2003-08-18 2009-04-14 Cray Inc. System and method for processing memory instructions using a forced order queue
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
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
JP4837305B2 (ja) * 2005-05-10 2011-12-14 ルネサスエレクトロニクス株式会社 マイクロプロセッサ及びマイクロプロセッサの制御方法
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
JP5040121B2 (ja) * 2006-02-24 2012-10-03 日本電気株式会社 情報処理装置、キャッシュ制御方法及びプログラム
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
CN104583957B (zh) 2012-06-15 2018-08-10 英特尔公司 具有无消歧乱序加载存储队列的重新排序的推测性指令序列
KR101818967B1 (ko) 2012-06-15 2018-01-16 인텔 코포레이션 명확화 없는 비순차 load store 큐
KR101826399B1 (ko) 2012-06-15 2018-02-06 인텔 코포레이션 Load store 재정렬 및 최적화를 구현하는 명령어 정의
EP2862061A4 (en) 2012-06-15 2016-12-21 Soft Machines Inc MEMORY PRECISION FOR VIRTUAL LOAD WITH DYNAMIC SHIPPING WINDOW WITH UNIFORM STRUCTURE
EP2862062B1 (en) 2012-06-15 2024-03-06 Intel Corporation A virtual load store queue having a dynamic dispatch window with a distributed structure
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
US10572260B2 (en) * 2017-12-29 2020-02-25 Intel Corporation Spatial and temporal merging of remote atomic operations
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

Also Published As

Publication number Publication date
JP2000250810A (ja) 2000-09-14
CN1120415C (zh) 2003-09-03
CN1264866A (zh) 2000-08-30
US6336168B1 (en) 2002-01-01

Similar Documents

Publication Publication Date Title
JP4045062B2 (ja) ロード命令を実行する方法、プロセッサ、およびシステム
JP3509067B2 (ja) ストア命令転送方法およびプロセッサ
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
CA1325285C (en) Method and apparatus for ordering and queueing multiple memory requests
JP3423310B2 (ja) 仮想アドレス能力が保持され、パイプライン命令ユニットと実効アドレス計算ユニットとを有するcpu
US6266768B1 (en) System and method for permitting out-of-order execution of load instructions
CA1325283C (en) Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system
CA1323701C (en) Processing of memory access exceptions with pre-fetched instructions within the instruction pipeline of a virtual memory system-based digital computer
US6496902B1 (en) Vector and scalar data cache for a vector multiprocessor
US5388247A (en) History buffer control to reduce unnecessary allocations in a memory stream buffer
US6401192B1 (en) Apparatus for software initiated prefetch and method therefor
US5019965A (en) Method and apparatus for increasing the data storage rate of a computer system having a predefined data path width
EP0381447A2 (en) Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system
JPH08504977A (ja) スーパースカラ・マイクロプロセサにおけるロード及び/又はストア動作を扱うシステム及び方法
US6175897B1 (en) Synchronization of branch cache searches and allocation/modification/deletion of branch cache
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
EP0303648A1 (en) CENTRAL PROCESSOR UNIT FOR DIGITAL DATA PROCESSING ARRANGEMENT WITH CACHE MEMORY MANAGEMENT DEVICE.
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
US6725365B1 (en) Branching in a computer system
JPH02239331A (ja) データ処理システム及びその命令実行を促進する方法
US7321964B2 (en) Store-to-load forwarding buffer using indexed lookup
US6338128B1 (en) System and method for invalidating an entry in a translation unit

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