JP2000515276A - スーパースカラマイクロプロセッサのための非ブロッキングロードを実現するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング的にロードを選択する方法 - Google Patents

スーパースカラマイクロプロセッサのための非ブロッキングロードを実現するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング的にロードを選択する方法

Info

Publication number
JP2000515276A
JP2000515276A JP10505959A JP50595998A JP2000515276A JP 2000515276 A JP2000515276 A JP 2000515276A JP 10505959 A JP10505959 A JP 10505959A JP 50595998 A JP50595998 A JP 50595998A JP 2000515276 A JP2000515276 A JP 2000515276A
Authority
JP
Japan
Prior art keywords
load
store
memory
buffer
memory operation
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
JP10505959A
Other languages
English (en)
Other versions
JP3732234B2 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2000515276A publication Critical patent/JP2000515276A/ja
Application granted granted Critical
Publication of JP3732234B2 publication Critical patent/JP3732234B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

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

Abstract

(57)【要約】 ロードメモリ動作およびストアメモリ動作の両方を記憶できるロード/ストアバッファが提供される。データキャッシュへアクセスするためのメモリ動作がロード/ストアバッファから選択され、これは選択されるメモリ動作が、プログラムの順番において、データキャッシュをミスすることが知られかつバッファに記憶されているメモリ動作の後である場合も含む。このように、データキャッシュにアクセスする機会を待っている他のメモリ動作はそうしたアクセスを行なうことができ、ミスしたメモリ動作はメインメモリ要求を行なう機会を待つ。ミスしたメモリ動作はセットされたミスビットにより示され、そのためデータキャッシュにアクセスするメモリ動作を選択する機構が、これらが非投機的になるまでこれらを無視できるようにする。

Description

【発明の詳細な説明】 名称:スーパースカラマイクロプロセッサのための非ブロッキングロードを実現 するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング 的にロードを選択する方法 発明の背景 1.発明の分野 この発明は、スーパースカラマイクロプロセッサに関し、より特定的にはスー パースカラマイクロプロセッサのロード/ストアユニットに関する。 2.背景技術の説明 スーパースカラマイクロプロセッサは、多数の命令を同時に実行しようと試み ることによって、コンピュータシステムにおいて高性能を達成する。スーパース カラマイクロプロセッサが高性能を達成する重要な方策の1つは、命令の投機的 実行を使用することによる。ここでは、実行中のプログラムにより命令の実行が 必要とされているとわかる前にその命令が実行される場合、その命令は投機的に 実行されるという。たとえば、もしプログラム命令シーケンス内でその命令の前 に分岐命令があり、プログラム内のどの経路をその分岐が選択するかをプロセッ サがまだ計算していない場合、命令が投機的に実行されるであろう。スーパース カラマイクロプロセッサには、これ以外にも多くの投機的な命令の実行例がある 。 x86アーキテクチャが広範に使用されかつ受入れられているため、マイクロ プロセッサ設計者は、このアーキテクチャを実現するスーパースカラマイクロプ ロセッサを作るべく努力している。このアーキテクチャをサポートすることによ り、設計者は、8086、80286、80386および80486などのこれ までの実現例およびこれらの実現例用に書かれた大量のソフトウェアとの旧版互 換性を有利に維持する。 スーパースカラマイクロプロセッサは、コンピュータシステム内で用いられる 。これらのコンピュータシステムは、固定ディスクドライブ、ビデオディスプレ イアダプタ、フロッピィディスクドライブなどを含むさまざまな他の装置を含む の が典型的である。また、コンピュータシステム内には、マイクロプロセッサが要 求するまで、マイクロプロセッサが実行する命令およびマイクロプロセッサが操 作するデータを記憶する比較的大きなメインメモリが必要である。このメモリは 、ここでは「DRAM」と呼ぶ、ダイナミックランダムアクセスメモリチップで 構成されるのが典型的である。DRAM内の記憶ロケーションの要求からDRA Mチップの出力においてそのデータが利用可能になるまでに必要とされる時間の 量を、ここではDRAMアクセス時間と呼ぶが、これは著しい減少を見てはいな い。むしろ、半導体作製技術が改良されるに伴い、DRAM製造業者は、単一の モノリシックチップ上で利用可能なDRAMメモリの量を増加させることを選択 してきた。現在のDRAM内の単一のメモリロケーションは以前のDRAM内の メモリロケーションよりもはるかに高速で反応できるが、より多数の利用可能な ロケーションがDRAMの出力に負荷をかけ、そのためDRAMデバイスの世代 間でDRAMアクセス時間は実質的に同一になっている。しかし、スーパースカ ラマイクロプロセッサ設計者は、より高速のクロック速度で動作し同時により多 くの命令を実行することができるマイクロプロセッサを作り出すため、半導体製 造技術の改良を使用している。ここで使用する「クロックサイクル」または「ク ロック速度」とは、マイクロプロセッサが命令実行、メモリ要求などのそのさま ざまな機能を実行する時間の単位である。クロックサイクルの終わりに、そのサ イクルの結果(たとえば命令実行手続きの結果など)がセーブされ、それによっ て、マイクロプロセッサの他の部分(すなわち続くパイプ段)が次のクロックサ イクルにおいてこの結果を利用して次の操作または記憶することが可能である。 上に説明した現在のマイクロプロセッサとDRAMメモリとの速度差のために、 マイクロプロセッサのメモリ帯域幅要求は増加してきたが、利用可能なメモリ帯 域幅は増加していない。言換えると、より最近のマイクロプロセッサは以前のマ イクロプロセッサよりも実質的に高速で動作し、これまでの型のDRAMメモリ と同様の速度で動作する(より大きなアプリケーションおよびデータセットが可 能である)より大きなDRAMメモリに結合される。この構成においては、多く の場合マイクロプロセッサはメモリから供給されるべき命令およびデータを持つ こととなり、そのコンピュータシステムの全体性能を減じるという、大きな性能 の問 題が認められる。 スーパースカラマイクロプロセッサ設計者たちは、低速のメモリにアクセスす る問題を解決するため努力している。その解決策は一部分、マイクロプロセッサ の設計の中にキャッシュを設けることを含んでいる。キャッシュは、マイクロプ ロセッサのコアと同じモノリシックチップ上に含まれるかまたはその近くに結合 される小型の高速メモリである。マイクロプロセッサが最近使用したデータおよ び命令は、典型的にはこれらのキャッシュ内に記憶され、その命令およびデータ がある期間にわたってマイクロプロセッサによりアクセスされないと、その後メ モリに再び書込まれる。命令およびデータがキャッシュから取除かれるまでに必 要とされる時間の量およびそこで使用される特定のアルゴリズムは、マイクロプ ロセッサの設計によって大きく異なっており、広く知られている。データおよび 命令は、組合せキャッシュまたはユニファイドキャッシュなどとさまざまに呼ば れる、共用キャッシュ内に記憶されるであろう。また、データおよび命令は、典 型的には命令キャッシュおよびデータキャッシュと呼ばれる明確に別個のキャッ シュ内に記憶されてもよい。 キャッシュは、「ライン」のアレイに編成されるのが典型的である。ここで使 用する「ライン」という語は、メインメモリからのデータまたは命令の連続した バイトを記憶するため構成されるいくつかの数のメモリロケーションを指す。マ イクロプロセッサがキャッシュにアクセスするとき、アドレスの一部がキャッシ ュを「インデックスする」ため使用される。キャッシュをインデックスするとは 、要求されているアドレスの内容を探索して、アクセスするラインまたはライン の組を選択することである。もしこのようにして調べられたラインの1つが、メ インメモリ内の要求されたアドレスにあるデータまたは命令を含んでいれば、こ のアクセスは「ヒット」であるという。もし上述のインデックスにしたがって選 択されたラインがいずれもメインメモリ内の要求されたアドレスにあるデータま たは命令を含んでいなければ、このアクセスは「ミス」であるという。2つ以上 のラインが所与のインデックスに関連付けられるようにキャッシュが構成される とき、そのラインは典型的にはインデックスの「ウェイ」と呼ばれる。 いくつかのキャッシュは、多数のアクセスを同時に処理することができる。こ の態様で構成されるキャッシュは、「バンク」を有するであろうし、その場合キ ャッシュメモリのセルは別個にアクセス可能な部分に構成される。したがって、 1つのアクセスが1つのバンクをアドレス指定することができ、第2のアクセス で第2の独立したバンクをアドレス指定することができる。 スーパースカラマイクロプロセッサ設計者たちが、同時に実行される命令の数 を増加させ続けるに伴い、大きい低速のメモリの関連する性能の問題に対する解 決策としてはキャッシュは不十分なものとなっている。第1に、キャッシュはメ インメモリよりもはるかに小さい。したがって、マイクロプロセッサが要求する データまたは命令のいくつかが現在キャッシュ内に存在しないというのは常に真 である。キャッシュを構築するために必要とされるチップおよび/またはシリコ ンの面積は高価であり、したがって、キャッシュを大きくするとコンピュータシ ステム全体のコストが著しく上がる。第2に、キャッシュは、典型的には、マイ クロプロセッサが以前に要求したデータおよび命令を保持する。したがって、マ イクロプロセッサが新しいプログラムを開始するかまたはあるメモリロケーショ ンに初めてアクセスするときは常に、メインメモリへの相当数のアクセスが必要 である。ここで説明するようなスーパースカラマイクロプロセッサの文脈で使用 されるときは、アクセスとは、メモリロケーションの内容に対する要求またはメ モリロケーションの内容の変更のいずれかを意味する。第3に、現代のマイクロ プロセッサにおいては、キャッシュ内のデータまたは命令にアクセスするために 必要な時間の量が、DRAMアクセス時間がそうであったのと同じ態様で、性能 の問題となっている。 キャッシュに関連する問題のいくつかを解決しようとする試みにおいて、いく つかのマイクロプロセッサは、近い将来にそれがアクセスするであろうメモリロ ケーションを推定しメインメモリにそれらの場所への要求を行わせるという、「 プリフェッチアルゴリズム」を実現している。これらの方式はこれまでさまざま な程度の成功を収めている。しかし、これらの機構はある状況においてはマイク ロプロセッサの性能に対し有害な影響を及ぼす可能性がある。相当数の誤った推 定がなされるたびに、マイクロプロセッサはそれが必要としないメモリロケーシ ョンの内容と、キャッシュ内のデータまたは命令とを置換えることになる。こ れは今度は、プリフェッチされたデータにより置換えられたデータを検索するた めのメモリ参照を引き起こすことになる。 メインメモリからのデータの取出しは、典型的には、スーパースカラマイクロ プロセッサにおいてはロード命令を使用することによって行われる。この命令は 明示的なものであってもよく、その場合ロード命令は実行されるソフトウェア内 に実際にコード化される。またこの命令は暗黙のものであってもよく、その場合 いくつかの他の命令(たとえば加算)が直接その入力オペランドの部分としてメ モリロケーションの内容を要求する。 命令の結果をメインメモリに記憶し直すことは、典型的には、スーパースカラ マイクロプロセッサにおいてはストア命令を使用することにより行われる。上述 のロード命令と同様、ストア命令も明示的なものであっても暗黙のものであって もよい。ここでは、「メモリ動作」とは、ロード命令および/またはストア命令 を指すために使用される。 現在のスーパースカラマイクロプロセッサにおいては、メモリ動作は、1以上 のロード/ストアユニット内で実行されるのが典型的である。これらのユニット は、命令を実行し、要求されたデータを発見しようと試みて(もしあれば)デー タキャッシュにアクセスし、アクセスの結果を処理する。上に説明したように、 データキャッシュへのアクセスは典型的には2つの結果、すなわちミスまたはヒ ットの1つである。 ロード/ストアユニットはまた、典型的には、メモリ動作に関連する他の特別 な条件を扱う。たとえば、アクセスは「非整列」かまたは「誤整列」かもしれな い。メモリ動作は、典型的にはバイトで測られる、特定のサイズのデータを要求 または変更する。特定のメモリ動作についてのサイズは多くに依存しており、マ イクロプロセッサが実装されるアーキテクチャおよびメモリ動作を生ぜしめた特 定の命令を含む等に依存する。メモリ動作により計算されたアドレスが、その下 位の2進けた(すなわち「ビット」)位置に、要求されたデータのサイズに等し くなるまで2を乗じた数の和から1を引いたもの以上の個数の0を有していなけ れば、そのメモリ動作は非整列または誤整列という。必要とされる最下位ゼロの 数を計算するための式は、 2( メモリ要求のバイトサイズ)−1 である。非整列アクセスは、時に、データキャッシュおよび/またはメモリへの 多数のアクセスを必要とする。 マイクロプロセッサが実行するほとんどの命令は最終的に、それらのオペラン ドを、メインメモリまたはデータキャッシュから受け取る。特定の命令が受け取 るオペランドは、メモリから直接要求されたものかもしれず、または、メモリか らオペランドを要求した何らかの他の命令の結果であるかもしれない。したがっ て、多数のプログラムを実行するときのスーパースカラマイクロプロセッサの性 能は、ロード/ストアユニットがメモリ動作をどの程度速く実行できるかに大き く依存する。多くのスーパースカラマイクロプロセッサにおいては、ロード/ス トアユニットはクロックサイクル当り1メモリ動作を実行する。また、もしメモ リ動作がデータキャッシュでミスしたことが発見されれば、ロード/ストアユニ ットはしばしば、ミスされたアドレスがメインメモリから転送されるまで命令の 実行を中止する。したがって、データキャッシュでミスしたメモリ動作は、たと え次のメモリ動作がデータキャッシュでヒットであろうともそれらの実行を「ブ ロックする」。次のメモリアクセスをブロックすると、多くの場合、メモリアク セスからデータを要求する命令をブロックなしの場合ほど迅速に実行できないの で、スーパースカラマイクロプロセッサの性能に有害な影響を及ぼす。 いくつかのスーパースカラマイクロプロセッサでは、データキャッシュとメイ ンメモリインターフェイスとの間のバッファにミス要求を与えることによって、 上述のブロックの問題を解決しようと試みる。バッファは、たとえば、特定の数 のエントリの待ち行列として構成されてもよい。このバッファ機構は確かにブロ ックの問題の解決を助けるのだが、バッファおよびそれに関連する制御機能を実 現するためにマイクロプロセッサチップ上により大きなシリコン面積が必要にな る。さらに、キャッシュへのアクセスと現在待ち行列にあるアクセスとの間に比 較器の形で複雑性が導入される。これらの比較器がないと、同一のミスラインへ の複数の要求がバッファに入り得ることになり、メインメモリへのおよびメイン メモリからの多数の転送が生じ、性能に悪影響が及ぼされる。必要なのはメイン メモリへのまたはメインメモリからの1つの転送のみである。結果的に、同一の ラインにアクセスする他のメモリ動作はそれらのデータをデータキャッシュから フェッチするであろう。もし、所与のラインの、メインメモリへのまたはメイン メモリからの2つ以上の転送が待ち行列にあれば、これらの無関係な転送がメイ ンメモリに対するさらなる要求を遅延させ、性能に有害な影響を与えるであろう 。このようなバッファ解決策を実現するスーパースカラマイクロプロセッサの例 示的形態は、IBMコーポレーションおよびモトローラ・インコーポレイテッド 製造のPowerPC601マイクロプロセッサおよびデジタル・イクイップメント ・コーポレーション製造のAlpha21164マイクロプロセッサを含む。 スーパースカラマイクロプロセッサの性能に直接影響するであろうロード/ス トアユニットのもう1つの要素は、オペランドまたはデータキャッシュへのアク セスの機会を待っているメモリ動作を記憶するバッファエントリの数である。多 くの実現例において、バッファとして待ち行列構造が使用される。典型的には、 1つのバッファがロードメモリ動作のために設けられ、他の別個のバッファがス トアメモリ動作のために設けられる。これらのバッファの1つが一杯になったと きは、次のそのタイプのメモリ動作がバッファに入れるようになるまで、マイク ロプロセッサ全体の命令実行の機能を停止させることとなり、性能に悪影響を及 ぼす。メモリ動作は、ロード/ストアユニットにディスパッチされるとき、これ らのバッファに置かれ、データキャッシュへのアクセスが試みられるとき、また はその後のある時点で取り除かれる。メモリ動作への動作の文脈で使用されると きは、「取り除く」という語は、そのメモリ動作を含む記憶ロケーションを無効 にする作用を指す。無効にする作用は、たとえば、その記憶ロケーションに関連 付けられる特定のビットの状態を変化させるかまたは新しいメモリ動作をその記 憶ロケーションに重ね書きすることによって達成されるであろう。ロード/スト アユニットのための設計時間の多くは、これらのバッファが一杯になるために生 じるプロセッサの機能停止時間の量が最小限になるよう、これらのバッファのサ イズを選ぶことに費やされる。この選択は、バッファの実現のためにシリコン区 域が必要であり、そのため、好きなだけ多数の待ち行列を使用することができな いという事実によりさらに複雑になる。さらにこの選択は、一般のソフトウェア プログラムにおける命令の組合せは常に変化しており、より古いプログラムを研 究して待ち行列のサイズを選んでも最適な設計とはならないであろうという事実 によってさらに複雑になる。 発明の概要 これまでに概観した問題は、この発明による、非ブロッキングロード選択とい う方策を実現するロード/ストアバッファを備えるロード/ストアユニットを用 いるスーパースカラマイクロプロセッサにより大部分解決される。一実施例にお いて、ロードメモリ動作およびストアメモリ動作の両方を中に記憶することがで きるロード/ストアバッファが設けられる。選択されるメモリ動作が、データキ ャッシュでミスであったことがわかっておりバッファ内に記憶されているメモリ 動作の次にプログラムの順番においてなっている場合も含めて、メモリ動作は、 データキャッシュへのアクセスのためロード/ストアバッファから選択される。 一実施例において、この発明の装置は、データキャッシュでミスしたメモリ要 求がメインメモリ要求を行うことができるようになる時などまで、メモリ要求を 記憶するよう構成される。この態様において、ミスしたメモリ動作がメインメモ リ要求を行う機会を待っている間に、データキャッシュへのアクセスの機会を待 っているであろう他のメモリ動作は、そのようなアクセスを行うであろう。した がって、この発明の装置は先述の「ブロック」の問題を解決する。 メインメモリへの要求を行うためには1回のミスは許され、その要求に関連付 けられたラインがデータキャッシュに記憶されると、ミスはデータキャッシュに 再びアクセスすることができる。新たに受け取られたラインにそのアドレスが含 まれているものが、次にデータキャッシュヒットとして完了するであろう。この 実現例においては、以前の実現例においてデータキャッシュでのミスを記憶する ために使用されたバッファが、これらのバッファの動作のために必要ないくつか の制御論理とともに取り除けるという効果を持つ。特に、ミスしたライン当り1 回にアクセスを制限するために必要とされていた比較器が取り除かれる。代わっ て、ミスは、メインメモリからキャッシュへ1つのミスが転送されるまで、単一 化されたバッファ内にとどまり、それから再びデータキャッシュを試みる。もし 、メモリ動作がそのアクセス後もミスのままであれば、バッファにとどまり続け 、 メインメモリ転送に対する他の要求が開始されるであろう。 概括すると、この発明が目指すのはバッファおよび出力制御ユニットを含むロ ード/ストアユニットである。バッファは、未決の(pending)メモリ動作に関 する情報を記憶するよう構成される複数の記憶ロケーションを含む。バッファは さらに、メモリ動作情報を受け取るよう構成される入力ポートを含む。バッファ はまた、データアクセスコマンドをデータキャッシュへ伝えるよう構成されるデ ータキャッシュポートを含む。バッファ内の複数の記憶ロケーションの各々にミ スビットが関連付けられる。関連付けられた記憶ロケーション内に記憶されたメ モリ動作がデータキャッシュにアクセスしミスであることがわかるクロックサイ クルの間、このミスビットがセットされる。 この発明の出力制御ユニットはバッファに結合され、データキャッシュにアク セスするためバッファ内の複数の記憶ロケーションの1つの中に記憶されるメモ リ動作を選択するよう構成される。出力制御ユニットはさらに、動作に関連付け られるデータキャッシュアクセスコマンドをデータキャッシュに向けるよう構成 される。 この発明は更に、ロード/ストアバッファ内に記憶された第1のメモリ動作が 投機的であり、データキャッシュにおいてミスであると知られるクロックサイク ルの間に、データキャッシュへのアクセスのためロード/ストアバッファ内に記 憶される第2のメモリ動作を選択するための、2つのステップを含む方法を企図 する。第1のステップは、前記第1のメモリ動作に関連付けられるミスビットが セットされていることを判定するため第1のメモリ動作を調べることを含む。第 2のステップは、前記第1のメモリ動作に関連付けられる前記ミスビットがセッ トされているので、前記第2のメモリ動作を選択することである。 図面の簡単な説明 以下の詳細な説明を読み添付の図面を参照することによって、この発明の他の 目的および利点が明らかとなるであろう。 図1は、データキャッシュ、6つの機能ユニットおよび6つのデコードユニッ トに結合されるロード/ストアユニットを含むスーパースカラマイクロプロセッ サのブロック図である。 図2は、データキャッシュに結合される、この発明によるロード/ストアユニ ットのブロック図である。 図3は、この発明によるロード/ストアバッファのブロック図である。 図4Aは、図3に示すロード/ストアバッファの記憶ロケーションの図である 。 図4Bは、図3に示すロード/ストアバッファに特定の情報が到達するときお よびロード/ストアバッファの動作に関連する特定の他の機能を示すいくつかの クロックサイクルの図である。 図4Cは、ロード/ストアバッファ内のストアにより現在示されているアクセ スメモリロケーションをロードするためのストアデータフォワーディングを示す ブロック図である。 図4Dは、この発明のロード/ストアユニットのさまざまな区域のレイアウト を示すブロック図である。 この発明にはさまざまな変更および代替的形態が考えられるが、その特定の実 施例を図に例として示しここで詳細に説明する。しかし、この図面および詳細な 説明はこの発明を特定の開示される形態に限定することを意図するのではなく、 逆に、添付の請求の範囲により規定されるこの発明の精神および範囲内にあるす べての変更例、均等物および代替案をカバーするよう意図されることが理解され ねばならない。 発明の詳細な説明 次に図面を参照し、図1は、この発明によるロード/ストアユニット222を 含むスーパースカラマイクロプロセッサ200のブロック図を示す。図1の実施 例に図示するように、スーパースカラマイクロプロセッサ200は、命令キャッ シュ204に結合されるプリフェッチ/プリデコードユニット202および分岐 予測ユニット220を含む。命令整列ユニット206が、命令キャッシュ204 と複数のデコードユニット208A−208F(集合的にデコードユニット20 8と呼ぶ)との間に結合される。各デコードユニット208A−208Fは、そ れぞれのリザベーションステーションユニット210A−210F(集合的にリ ザベーションステーション210と呼ぶ)に結合され、各リザベーションステー ションユニット210A−210Fは、それぞれの機能ユニット212A−21 2F(集合的に機能ユニット212と呼ぶ)に結合される。デコードユニット2 08、リザベーションステーション210、および機能ユニット212はさらに 、リオーダバッファ216、レジスタファイル218およびロード/ストアユニ ット222に結合される。データキャッシュ224は最終的にロード/ストアユ ニット222に結合されることが図示され、MROMユニット209が命令整列 ユニット206に結合されることが図示される。 一般に、命令キャッシュ204は、命令がデコードユニット208にディスパ ッチされる前に命令を一時的に記憶するため設けられる高速キャッシュメモリで ある。一実施例において、命令キャッシュ204は、各々16バイト(各バイト は8ビットからなる)のラインに編成される命令コードを32キロバイトまでキ ャッシュするよう構成される。動作の間、プリフェッチ/プリデコードユニット 202を通じて(図示しない)メインメモリからコードをプリフェッチすること によって、命令キャッシュ204に命令コードが与えられる。命令キャッシュ2 04は、セット・アソシアティブ構成、フル・アソシアティブ構成またはダイレ クトマップ構成で実現できるであろうことが注意される。 プリフェッチ/プリデコードユニット202は、命令キャッシュ204内での 記憶のためメインメモリから命令コードをプリフェッチするために設けられる。 一実施例において、プリフェッチ/プリデコードユニット202は、メインメモ リからの64ビット幅コードを命令キャッシュ204にバーストするよう構成さ れる。プリフェッチ/プリデコードユニット202にさまざまな特定のコードプ リフェッチング技術およびアルゴリズムを用いることができることが理解される 。 プリフェッチ/プリデコードユニット202は、メインメモリから命令をフェ ッチするに伴い、命令コードの各バイトに関連付けられる3つのプリデコードビ ット、すなわち、開始ビット、終了ビットおよび「機能」ビットを発生する。プ リデコードビットは、各命令の境界を示すタグを形成する。以下にさらに詳細に 説明するように、プリデコードタグはまた、所与の命令がデコードユニット20 8により直接デコードされうるか否か、または、命令をMROMユニット209 により制御されるマイクロコード手続きを起動することにより実行しなければな らないかどうかなどの付加的な情報を運ぶであろう。 表1は、プリデコードタグのエンコードの一例を示す。表に示すように、もし 所与のバイトが命令の最初のバイトであれば、そのバイトに対し開始ビットがセ ットされる。もしそのバイトが命令の最後のバイトであれば、そのバイトに対し 終了ビットがセットされる。もし特定の命令を、デコードユニット208により 直接デコードすることができなければ、その命令の最初のバイトに関連付けられ る機能ビットがセットされる。他方、もし命令を、デコードユニット208によ り直接デコードできれば、その命令の最初のバイトに関連付けられる機能ビット がクリアされる。特定の命令の第2のバイトに対する機能ビットは、もしオペレ ーションコード(opcode)が最初のバイトであればクリアされ、オペレーション コードが第2のバイトであればセットされる。オペレーションコードが第2のバ イトである場合には、最初のバイトはプレフィックスバイトであることが注意さ れる。命令バイト番号3から8についての機能ビットの値は、そのバイトがMO DRMバイトであるかまたはSIBバイトであるか、およびそのバイトが変位デ ータまたは即値データを含むかどうかを示す。 先述のように、一実施例において、x86命令セットのある命令は、デコード ユニット208により直接デコードされるであろう。これらの命令は、「ファス トパス」命令と呼ばれる。x86命令セットのうち残りの命令は、「MROM命 令」と呼ばれる。MROM命令は、MROMユニット209を起動することによ って実行される。MROM命令に遭遇するとき、MROMユニット209は所望 の動作を遂行するため、規定されたファストパス命令のサブセットへと命令を構 文解析し逐次化する。ファストパス命令に類別される例示的なx86命令のリス トならびにファストパス命令およびMROM命令の両方を処理する態様の説明が 以下にさらに示される。 命令整列ユニット206は、デコードユニット208A−208Fにより形成 される固定された発行位置に、命令キャッシュ204からの可変バイト長命令を チャネリングするまたは「経路分けする(funnel)」ために設けられる。命令整 列ユニット206は、命令キャッシュ204によって境界を定められるライン内 の命令の開始バイトの場所に依存して、指定されるデコードユニット208A− 208Fに命令コードをチャネリングするよう構成される。一実施例において、 所与の命令がディスパッチされるであろう特定のデコードユニット208A−2 08Fは、その命令の開始バイトの場所およびもしあればその前の命令の開始バ イトの場所の両方に依存する。あるバイト場所で始まる命令の発行は、ただ1つ の予め定められた発行位置にさらに限定されるであろう。以下に特定の詳細を示 す。 ロード/ストアユニット222の詳細な説明に進む前に、図1の例示的なスー パースカラマイクロプロセッサ200内で用いられる他のサブシステムに関する 一般的局面について説明する。図1の実施例について、各デコードユニット20 8は、上に説明した予め定められたファストパス命令をデコードするためのデコ ード回路を含む。さらに、各デコードユニット208A−208Fは、変位デー タおよび即値データを、対応するリザベーションステーションユニット210A −210Fに経路づける。デコードユニット208からの出力信号は、機能ユニ ット212に対する、ビットエンコード実行命令ならびにオペランドアドレス情 報、即値データおよび/または変位データを含む。 図1のスーパースカラマイクロプロセッサは、追いこし(out of order)実行 をサポートし、したがって、レジスタの読出および書込動作のためもとのプログ ラムシーケンスを守り、レジスタのリネームを実現し、投機的命令実行および分 岐の誤った予測からの回復を可能にし、正確な例外を容易にするため、リオーダ バッファ216を用いる。当業者には理解されるであろうように、リオーダバッ ファ216内の一時的記憶ロケーションは、レジスタの更新に関わりしたがって 投機的レジスタ状態を記億する命令のデコードに際し予約される。リオーダバッ ファ216は、投機的結果が有効にされレジスタファイルに書込まれるに伴いバ ッファの「最後部」に移動し、それによってバッファの「頭部」に新たなエント リのための余地が作られる、先入れ先出し構成で実現されてもよい。リオーダバ ッファ216の他の特定の構成も、以下にさらに説明するように可能である。も し分岐予測が誤っていれば、誤って予測された経路に沿って投機的に実行された 命令の結果は、レジスタファイル218にそれらが書込まれる前に、バッファ内 で無効にすることができる。 デコードユニット208A−208Fの出力において与えられる即値データお よびビットエンコード実行命令は、それぞれリザベーションステーションユニッ ト210A−210Fに直接経路づけられる。一実施例において、各リザベーシ ョンステーションユニット210A−210Fは、対応する機能ユニットへの発 行を待っている未決の3つの命令までの命令情報(すなわちビットエンコード実 行ビットならびにオペランド値、オペランドタグおよび/または即値データ)を 保持することができる。図1の実施例については、各デコードユニット208A −208Fが専用されるリザベーションステーションユニット210A−210 Fに関連づけられ、各リザベーションステーションユニット210A−210F が同様に専用される機能ユニット212A−212Fに関連づけられることが注 意される。したがって、6つの専用「発行位置」が、デコードユニット208、 リザベーションステーションユニット210および機能ユニット212により形 成される。デコードユニット208Λを通じて発行位置0に整列されディスパッ チされた命令は、リザベーションステーションユニット210Aに渡され続いて 実行のため機能ユニット212Aに渡される。同様に、デコードユニット208 Bに整列されディスパッチされる命令は、リザベーションステーションユニット 210Bおよび機能ユニット212Bへ渡される。 特定の命令のデコードに際し、もし要求されるオペランドがレジスタ場所であ れば、レジスタアドレス情報がリオーダバッファ216およびレジスタファイル 218に同時に経路づけられる。当業者は、以下にさらに説明するように、x8 6レジスタファイルが8つの32ビットリアルレジスタ(すなわち典型的にはE AX、EBX、ECX、EDX、EBP、ESI、EDIおよびESPと呼ばれ るもの)を含むことを理解するであろう。リオーダバッファ216は、これらの レジスタの内容を変更する結果用の一時記億ロケーションを含みそれによって追 いこし実行を可能にする。リオーダバッファ216の一時記憶ロケーションは、 デコードに際し実レジスタの1つの内容を変更する各命令に対し予約される。し たがって、特定のプログラムの実行の間のさまざまな時点において、リオーダバ ッファ216の1つまたは2つ以上の場所には、投機的に実行された所与のレジ スタの内容が含まれているかもしれない。もし所与の命令のデコードに続いて、 リオーダバッファ216が所与の命令内のオペランドとして使用されるレジスタ に対して割当てられた前の場所を有していると判断されたならば、リオーダバッ ファ216は、1)最も最近に割当てられた場所内の値、または2)最終的に前 の命令を実行するであろう機能ユニットにより値がまだ生成されていなければ、 最も最近に割当てられた場所に対するタグ、のいずれかを、対応するリザベーシ ョンステーションに送る。もし、リオーダバッファが所与のレジスタに対して予 約される場所を有していれば、レジスタファイル218からではなくリオーダバ ッファ216からオペランド値(またはタグ)が与えられる。もしリオーダバッ ファ216内に要求されるレジスタに対して予約される場所がなければ、値は直 接レジスタファイル218からとられる。もし、オペランドがメモリロケーショ ンに対応するのであれば、オペランド値がロード/ストアユニット222を通じ てリザベーションステーションユニットに与えられる。 適当なリオーダバッファの実現例に関すろ詳細は、マイク・ジョンソン(Mike Johnson)による刊行物『スーパースカラマイクロプロセッサの設計(Supersca 1ar Microprocessor Design)』(1991年ニュージャージー、イングルウッ ド・クリフス、プレンティス・ホール)およびウィット(Witt)他による、19 93年10月29日出願の同時係属中であり共通の譲渡人に譲渡される『高性能 スーパースカラ・マイクロプロセッサ(High Performance Supersca1ar Micropr ocessor)』と題される特許出願連続番号第08/146, 382号に見られる。これらの文献はここに引用によりその全体として援用され る。 リザベーションステーションユニット210A−210Fは、対応する機能ユ ニット212A−212Fにより投機的に実行されるべき命令情報を一時的に記 憶するため設けられる。先述したように、各リザベーションステーションユニッ ト210A−210Fは、最大で3つの未決の命令に対し命令情報を記憶するで あろう。6つのリザベーションステーション210A−210Fは各々、対応す る機能ユニットにより投機的に実行されるべきビットエンコード実行命令および オペランド値を記憶するための場所を含む。もし特定のオペランドが利用可能で なければ、そのオペランドに対するタグが、リオーダバッファ216から与えら れ、結果が生成される(すなわち前の命令の実行の完了によって)まで対応ずる リザベーションステーション内に記憶される。機能ユニット212A−212F の1つにより命令が実行されるとき、命令の結果が、その結果を待っている任意 のリザベーションステーションユニット210Λ−210Fに直接渡されると同 時に、その結果がリオーダバッファ216を更新するため渡されることが注意さ れる(この技術は一般に「結果送り(result forwarding)」と呼ばれる)。任 意の要求されるオペランドの値が利用可能になった後、命令は実行のため機能ユ ニットヘ発行される。すなわち、もしリザベーションステーションユニット21 0A−210Fの1つの中の未決の命令に関連づけられるオペランドが、要求さ れるオペランドを変更する命令に対応するリオーダバッファ216内の前の結果 の値の場所でタグづけされていれば、その命令は、前の命令に対するオペランド の結果が獲得されるまで、対応する機能ユニット212に発行されない。したが って、命令が実行される順序は、もとのプログラムの命令シーケンスの順序とは 同じではないであろう。リオーダバッファ216は、書込後読出依存性が生じる 状況においてもデータの一貫性が維持されることを確実にする。 一実施例において、機能ユニット212は各々、加算および減算の整数算術演 算ならびにシフト、回転、論理演算および分岐動作を実行するよう構成される。 浮動小数点演算に対処するため(図示しない)浮動小数点ユニットも用いられる であろうことが注意される。 機能ユニット212は各々、また、条件付き分岐命令の実行に関する情報を分 岐予測ユニット220に提供する。もし分岐予測が誤っていれば、分岐予測ユニ ット220は、予測誤り分岐命令後の命令処理パイプラインに入った命令をフラ ッシュし、プリフェッチ/プリデコードユニット202に要求される命令を命令 キャッシュ204またはメインメモリからフェッチさせる。このような状況にお いては、投機的に実行されロード/ストアユニット222およびリオーダバッフ ァ216内に一時的に記憶されるものを含む、予測誤り分岐命令の後に生じたも とのプログラムシーケンス内の命令の結果が廃棄されることが注意される。適切 な分岐予測方式の例示的な構成は周知である。 機能ユニット212により生成された結果は、もしレジスタ値が更新されてい れば、リオーダバッファ216に送られ、もしメモリロケーションの内容が変更 されていればロード/ストアユニット222へ送られる。もしこの結果がレジス タ内に記憶されるのであれば、リオーダバッファ216は命令がデコードされた ときにレジスタの値のために予約された場所内に結果を記憶する。先述したよう に、結果はまた、そこで未決の命令が、要求されるオペランド値を獲得するため 前の命令の実行の結果を待つであろう、リザベーションステーションユニット2 10A−210Fにもブロードキャストされる。 データキャッシュ224は、ロード/ストアユニット222とメインメモリサ ブシステムとの間で転送されるデータを一時的に記憶するため設けられる高速キ ャッシュメモリである。一実施例において、データキャッシュ224はデータ8 キロバイトまでを記憶する能力を有する。データキャッシュ224を、セット・ アソシアティブ構成を含むさまざまな特定のメモリ構成において実現できること が理解される。 一般に、ロード/ストアユニット222は、機能ユニット212A−212F とデータキャッシュ224との間のインターフェイスを提供する。一実施例にお いて、ロード/ストアユニット222は、未決のロードまたはストアメモリ動作 のためのデータおよびアドレス情報のための16個の記憶ロケーションを備える ロード/ストアバッファを備えるよう構成され、記憶ロケーションは記憶ロケー ションの線形アレイとして構成される。しかし、記憶ロケーションの数はこの発 明のさらなる実施例においては変わるであろうことが理解される。機能ユニット 212はロード/ストアユニット222へのアクヤスのための調停を行なう。バ ッファが一杯になったとき、機能ユニットは、ロード/ストアユニット222が 未決のロードまたはストア要求情報に対し余地を有するようになるまで待機しな ければならない。ロード/ストアユニット222はまた、データの一貫性が維持 されることを確実にするため、未決のストアメモリ動作に対してのロードメモリ 動作の依存性チェックを行なう。ロード/ストアユニット222へ提供されたの とは異なる順序でロードメモリ動作がロード/ストアユニット222によって実 行されるであろう。ストアメモリ動作は常に、それらが与えられたのと同じ順序 で実行される。 一実施例において、デコードユニット208は、ロード/ストアユニット22 2に対し、所与のサイクルにおいて各デコードユニットがデコードするメモリ動 作の種類を示す。デコードユニット208は4つの可能な条件の1つを示すであ ろう。すなわち、ロード/ストア動作はデコードされていない、ロード動作がデ コードされている、ストア動作がデコードされている、またはロード−op−ス トア動作がデコードされている、である。ロード−op−ストア動作は、ロード /ストアバッファ内の2つの記憶ロケーションを、すなわちロード動作用の1つ とストア動作用の1つとを占める。これらの動作は、ロード/ストアバッファ内 で個別の動作として処理される。少なくとも1クロックサイクル後に、機能ユニ ット212からロード/ストアユニット222へ(ストアのための)アドレスお よびデータが提供される。この情報は、アドレスおよびデータが関連づけられる メモリ動作を保持する記憶ロケーションヘ転送される。この関連づけは、機能ユ ニット212により提供されるリオーダバッファタグとロード/ストアバッファ 内に前に記憶されたリオーダバッファタグとを比較することにより決定される。 一実施例において、ロード/ストアバッファ内に記憶されたロードおよびスト アメモリ動作は、リオーダバッファ216から少なくとも1つのポインタによっ て最早投機的ではないことが示される。このポインタは、ロード/ストアバッフ ァ内に記憶されたメモリ動作の投機的ステータスを更新するため、ロード/スト アバッフア内の複数の記憶ロケーション内に記憶されるタグと、ロード/ストア ユニット222により比較することができるタグ値である。他の実施例において は、リオーダバッファ216により提供されるポイントの数は2つである。 一実施例において、ロード/ストアユニットは、クロックサイクル当たり、デ ータキャッシュにアクセスするためメモリ動作を2つまで選択する。ロード/ス トアユニットは、選択を行なうため固定された優先順位方式を使用する。この機 構は以下のとおりである。最早投機的ではないストアは最も高い優先順位を持ち 、ミスであり最早投機的ではないロードは2番目に高い優先順位を持ち、投機的 でありまだキャッシュにアクセスしていないロードが最も低い優先順位を持つ。 ストアは、最早投機的ではない場合リオーダバッファ内で最も古い命令であるの でロードよりも高い優先順位を持ち、これらを可能な限り迅速にリタイヤするこ とが望ましい。ロードミスもまた、メインメモリ転送のレイテンシが長いために 、非投機的になるまで処理されない。もし、ロードが取消されたならばそのデー タは最早使用できなくなるだろうが、長いレイテンシは続き、メインメモリへの アクセスを必要とする他の転送をブロックするかもしれない。 データキャッシュにアクセスするのにどのメモリ動作が選択されるかというこ とに影響を与える他の考慮点は、動作の整列と、あるメモリ動作がアクセスする ことになるデータキャッシュのバンクとである。あるロードメモリ動作が所与の サイクルの第1のアクセスに選択され、整列していない場合、選択される第2の アクセスは整列されたメモリ動作となるか、または第2のアクセスは現在のサイ クルでは行なわれないことになる。次のサイクルにおいて、非整列のロードメモ リ動作の後半分が第1のアクセスとして選択される。ストアメモリ動作が所与の サイクルの第1のアクセスとして選択され、整列していない場合、そのサイクル で行なわれる第2のアクセスはストアメモリ動作の後半分である。いずれかのス トアアクセスがデータキャッシュをミスすると、両半分とも打ち切られ、ミスを 含むラインはメインメモリからデータキャッシュへ転送される。整列したメモリ 動作が第1のアクセスとして選択され、非整列のロードメモリ動作が第2のアク セスとして選択される場合、次のクロックサイクルにおいて、選択される第2の アクセスは非整列のロードメモリ動作の後半分となる。整列したメモリ動作が第 1のアクセスとして選択され、非整列のストアメモリ動作が第2のアクセスとし て選択される場合、第2のアクセスはこのクロックサイクルにおいて行なわれな い。 所与のサイクルにおいてデータキャッシュにアクセスするメモリ動作を選択す る上で、バンク競合もまたロード/ストアユニットにより考慮される。所与のサ イクルにおいて2つの動作がデータキャッシュにアクセスするよう選択され、そ れらのそれぞれのアドレスのビット2、3、および4が等しい場合、第2のアク セスはこのサイクルにおいて行なわれない。 別の実施例では、あるロードメモリ動作は、プログラムの順番においてそのロ ードメモリ動作の前のロードメモリ動作がデータキャッシュ224にアクセスし てミスしたことがわかっている場合、所与のサイクルにおいてデータキャッシュ 224にアクセスするよう選択される。以前のメモリ動作がバッファ内に残るた め、それらを記憶する余分なバッファは必要ではなく、シリコン面積が節約され る。 図4Aに示されるように、ロード/ストアユニット222のロード/ストアバ ッファの各エントリはミス/ヒットビットを含む。ミス/ヒットビットは、非ブ ロッキング機能を実現するために、データキャッシュにアクセスするメモリ動作 を選択する際に用いられる。ミス/ヒットビットは、投機的であろロードメモリ 動作をデータキャッシュへのアクセスのための選択について不適格とする。この ように、データキャッシュをミスする投機的ロードメモリ動作の後の投機的ロー ドメモリ動作がデータキャッシュにアクセスするよう選択され得る。そのため、 ロード/ストアユニット222は、データキャッシュをミスした投機的ロードメ モリ動作がロード/ストアバッファ内に存在するクロックサイクルにおいてもロ ードメモリ動作がデータキャッシュにアクセスすることができる非ブロッキング 機構を実現する。ある実施例では、8つのロケーション(ロード/ストアバッフ ァの最後から始まる)がそのようなロードメモリ動作のためにスキャンされ、ブ ロッキングが起こるまでに7つの投機的ロードミスをロード/ストアバッファ内 に記憶することができる。 ロード/ストアユニット222の非ブロッキング機構における別の重要な要素 は、キャッシュラインごとにただ1つの要求がメインメモリシステムへなされる ことを確実にするのに以前の非ブロッキング機構で必要であった比較器を必要と しないことである。上記のとおり、これらの比較器は以前の非ブロッキング機構 においては、メインメモリシステムへのアクセスのため既に待ち行列にあるミス と同じラインへの第2のミスがメモリシステムにアクセスしないようにするのに 必要である。典型的には、これらの以前の機構では、現在メインメモリからフェ ッチされるラインに対して第2の要求がなされるとブロッキングが起こった。ロ ード/ストアユニット222はミスをロード/ストアバッファ内に保持する。あ るミスが非投機的なものとなると、これはメインメモリにアクセスするが、他の ミスはバッフア内に残る。ミスしたアドレスに関連のあるデータがデータキャッ シュ224内に転送されると、ロード/ストアバッファ内のミス/ヒットビット はリセットされ、関連のあるメモリ動作がもはやミスとして見なされなくなる。 そのため、関連のあるメモリ動作はその後のクロックサイクルにおいてデータキ ャッシュ224にアクセスするよう選択されることになる。メモリ動作が今度は ヒットである場合、これはデータキャッシュをヒットした他の投機的ロードメモ リ動作と同様の態様で完了する。メモリ動作が依然としてミスである場合、ミス /ヒットビットはミスを示すようセットされ、メモリ動作は非投機的となるのを 待つことになる。そのため、比較器は必要でなく、同じキャッシュラインに対し て複数のミスが生じてもブロッキングは起こらない。 ある実施例では、ロードメモリ動作は、動作がデータキャッシュヒットである 場合、ロード/ストアバッファから取除かれるよう選択される。さらに、ロード 動作がデータキャッシュをミスし、(前述のリオーグバッファポインタにより示 されるように)もはや投機的ではなくなり、そのミスを含むラインがメインメモ リ(図示せず)からデータキャッシュへ転送されるよう選択される場合、ロード メモリ動作は取除かれるよう選択される。ストアメモリ動作は、そのストアメモ リ動作が(前述のリオーダバッファポインタにより示されるように)非投機的で あり、そのストアメモリ動作がデータキャッシュヒットである場合、ロード/ス トアバッファから取除かれるよう選択される。ストアメモリ動作はさらに、その ストアメモリ動作が(前述のリオーダバッファポインタにより示されるように) 非投機的であり、そのストアメモリ動作がデータキャッシュミスであり、そのミ スを含むラインがメインメモリからデータキャッシュへ転送されるよう選択され る場合、ロード/ストアバッファから取除かれるよう選択される。別の実施例で は、メモリ動作は、そのメモリ動作に一致するリオーダバッファタグとともにリ オーダバッファ216から取消信号を受取った場合、ロード/ストアバッファか ら取除かれるよう選択される。 次に、図2を参照すると、この発明によるロード/ストアユニットのブロック 図が示される。示されるロード/ストアユニット222は、メモリ動作コマンド およびこれらの動作に関連のある情報を受取るための入力ポート1000を含む 。ある実施例では、所与のクロックサイクルにおいて最大6つの動作がもたらさ れ得る。情報は、命令に関連のある線形アドレスと、メモリ動作がストアである 場合はデータとを含む。この情報は、関連のあるメモリ動作コマンドがもたらさ れてから少なくとも1クロックサイクル後にもたらされる。図2に示されるよう に、ロード/ストアユニット222は、入力制御ユニット1001、ストアポイ ンタ1002、ロードポインタ1003、ロード/ストアバッファ1004、出 力制御ユニット1005、入力リオーダバッファポインタ1006および100 7ならびにデータキャッシュポート1008を含む。ある実施例では、ロード/ ストアバッファ1004は記憶ロケーションの線形アレイとして構成される。 入力制御ユニット1001は、メモリ動作1000をロード/ストアバッファ 1004内の特定の記憶ロケーションへ向ける。ある実施例では、これは2つの ポインタ、ストアポインタ1002およびロードポインタ1003を用いること により向けられる。所与のクロックサイクルにおいて受取られる各ストアメモリ 動作はロード/ストアバッファ1004内の、ストアポインタ1002により示 される記憶ロケーションから始まり、その後受取られるストアメモリ動作ごとに 記憶ロケーション番号が増加する記憶ロケーションに転送される。次にストアポ インタ1002は、クロックサイクルにおいて受取られたストア動作の数だけイ ンクリメントされる。同様に、所与のクロックサイクルにおいて受取られた各ロ ードメモリ動作はロード/ストアバッファ1004内の記憶ロケーション内に転 送され、これはロードポインタ1003により示される記憶ロケーションから始 められ、その後受取られるロードメモリ動作ごとに記憶ロケーション番号が減少 する。次にロードポインタ1003は、クロックサイクルにおいて受取られたロ ード動作の数だけデクリメントされる。ストアポインタ1002とロードポイン タ1003との間で記憶できる数のロードおよびストアメモリ動作だけをディス パッチするのはデコードユニット208の責任である。ロードユニットはロード ポインタ1003とストアポインタ1002との差の形でデコードユニット20 8と交信し、この機能を行なう上でデコードユニットを助ける。 ある実施例では、ロード/ストアバッファが空である場合、ロード/ストアバ ッファ1004においてストアポインタ1002は最初の記憶ロケーションを、 ロードポインタ1003は最後の記憶ロケーションを示す。ストアポインタ10 02はロード/ストアバッファ内に受取られる各ストアメモリ動作ごとにインク リメントされ、ロードポインタ1003はロード/ストアバッファ内に受取られ る各ロードメモリ動作ごとにデクリメントされる。ロードメモリ動作がロード/ ストアバッファ1004から取除かれると、ロードポインタ1003とロード/ ストアバッファ1004の終わりとの間の記憶ロケーションは、取除かれたロー ドメモリ動作により空いた記億ロケーションに複写される。複写は、残ったメモ リ動作がロード/ストアバッファ1004の終わりにおいて連続した位置を占め 、残つたメモリ動作が依然としてプログラムの順番通りに並ぶような態様で行な われる。取除かれたロードメモリ動作はバッファ内で連続している必要はない。 次に、ロードポインタ1003は取除かれるロード命令の数だけインクリメント される。同様に、ストアメモリ動作がロード/ストアバッファ1004から取除 かれると、ストアポインタ1002とロード/ストアバッファ1004の始めと の間の記憶ロケーションは、取除かれたストアメモリ動作により空いた上の記憶 ロケーションに複写される。この複写は、残ったメモリ動作がロード/ストアバ ッファ1004の始めにおいて連続した位置を占め、残ったメモリ動作が依然と してプログラムの順番通りに並んでいるような態様で行なわれる。取除かれたス トアメモリ動作はバッファ内で連続している必要はない。次に、ストアポインタ 1002は取除かれたストアメモリ動作の数だけデクリメントされる。 出力制御ユニット1005は、データキャッシュ224へのアクセスのため、 ロード/ストアバッファ1004内に記億されるメモリ動作を選択する。ある実 施例では、出力制御ユニット1005は前述のアクセスのために最大2つのメモ リ動作を選択する。出力制御ユニット1005はメモリ動作を選択するのに上に 説明した優先順位方式を実現する。上述のように、リオーダバッファポインタ1 006および1007を用いてどのメモリ動作がもはや投機的ではないのかを示 す。 次に図3を参照して、ロード/ストアバッファ1004の実施例がより詳しく 示される。陰影の付けられた領域1010はストアメモリ動作を保持している記 憶ロケーションを示す。陰影の付けられた領域1011はロードメモリ動作を保 持する記憶ロケーションを示す。この実施例では、記憶ロケーションはロケーシ ョンの線形アレイとして構成される。ロケーションの線形アレイとは、ひとつの 番号を用いて、アレイ内で各ロケーションの位置が特定できるロケーション編成 のことである。ストアメモリ動作は一方の端部からバッファ内に転送され、ロー ドメモリ動作はその反対の端部がらバッファ内に転送される。このようにして、 ロードメモリ動作およびストアメモリ動作を別個の待ち行列構造に記憶する属性 が保たれる。しかしながら、この実施例では、ロードおよびストア待ち行列ロケ ーションの双方をもたらすために1組の記憶ロケーションを有利に用いている。 ハードウェア、よってシリコン面積は、性能が等しくなるような数の別個のロー ドおよびストアバッファを使用するときと比較して節約される。たとえば、この 実施例では16個の記憶ロケーションが含まれる。どの時点においても最大16 個のストアメモリ動作、または代わりに16個のロードメモリ動作をロード/ス トアバッファ1004に記憶される。そのため、性能が等しくなるような数の別 個のロードおよびストアバッファを用いる場合は16個のロードバッファおよび 16個のストアバッファが必要となる。これらのバッファの各々はロード/スト アバッファ1004が含むのと同じ情報を含んでいる必要がある。そのため、ス ーパースカラマイクロプロセッサにおいて一般的に用いられる別個のロードおよ びストアバッファの解決策ではロード/ストアバッファ1004よりかなり大き いシリコン面積を消費する。 また図3には、ロードポインタ1003およびストアポインタ1002が示さ れる。この実施例では16個の記憶ロケーションが含まれるため、ロードポイン タ1003およびストアポインタ1002は4ビットのポインタとして示される 。他の実施例では、記憶ロケーションの数が異なることがあり、そのためロード ポインタ1003およびストアポインタ1002の要するビット数も異なろであ ろう。また、他の実施例を、線形アレイ以外の何らかの構成としてロード/スト アバッファ1004を備えたものとして構成してもよい。たとえば、二次元アレ イを用いてもよく、二次元アレイでは、記憶ロケーションは2つの番号、すなわ ち行および列番号からなるポインタにより識別される。ロード/ストアバッファ 1004を構成するには他にも可能なやり方があることが理解される。ある実施 例では、ストアポインタ1002はロードポインタ1003以上になることは許 されない。このように、ロードメモリ動作およびストアメモリ動作はどの所与の クロックサイクルにおいても互いに区別される記憶ロケーションに記憶される。 また図3には出力LSCNT[2:0]1012が示される。この出力はロー ドポインタ1003とストアポインタ1002との差であり、ある実施例では、 いくつのメモリ動作をロード/ストアユニット222に転送できるかを示す。メ モリ動作をロード/ストアユニット222へ転送するユニットはこの情報をその アルゴリズムに用いて、所与のクロックサイクルにおいて転送されるメモリ動作 の数を制限する。 次に図4Aを参照すると、ロード/ストアバッファ1004内の記憶ロケーシ ョンの図が示される。記憶ロケーションは3つのフィールドに分割される。ある 実施例では、第1のフィールドは6ビットからなる。1つのビットは有効ビット であり、これはセットされると記憶ロケーションがメモリ動作を含むことを示し 、セットされていないと記憶ロケーションがメモリ動作を含まないことを示す。 第1のフィールドの残りの5ビットはタグを含み、これはリオーダバッファ21 6におけるどのエントリにメモリ動作が関連付けられているかを示す。 第2のフィールド1021は66ビットからなる。そのフィールドの初めの3 2ビットはメモリ動作が操作するアドレスである。次のビットはアドレス有効ビ ットであり、これはセットされると前述のアドレスが提供されていることを示し 、セットされていないと前述のアドレスが提供されていないことを示す。フィー ルド1021における次の32ビットは、メモリ動作に関連のあるデータである 。 ストアでは、これらのビットは前述のアドレスにおいて記憶すべきデータを含む 。32ビット幅より少ないデータでは、データはフィールド1021内に右寄せ で記憶される。フィールド1021の最後のビットはデータ有効ビットであり、 これはセットされると前述のデータが提供されていることを示し、セットされて いないと前述のデータフィールドが提供されていないことを示す。 記億ロケーションの第3のフィールド1022は、各メモリ動作のための他の 重要な情報を含む。ある実施例では、次の情報が記憶される。すなわち、 操作すべきデータの大きさをバイトで測定したもの データキャッシュ224におけるメモリ動作のミス/ヒット状態。このビット はセットされるとミスを示し、このビットがセットされていないと動作がデータ キャッシュにアクセスしていないことを示す。 依存ビット。このビットはセットされるとロードメモリ動作がロード/ストア バッファの別の記憶ロケーションに記憶されるストアメモリ動作に依存すること を示し、このビットがセットされていないとそのような依存が存在しないことを 示す。 前述の依存を含む記憶ロケーションのエントリ番号。このフィールドは、前述 の依存ビットがセットされていない場合にはランダムな情報を含む。 他の実施例では、フィールド1022にさらに種々の情報が記憶される。 次に図4Bを参照すると、ロード/ストアユニットの一実施例の典型的な動作 を示すタイミングチャートの図が示される。3つの完全なクロックサイクルが示 され、ICLK4、ICLK5およびICLK6と記されている。ICLK4で は、ロードおよび/またはストアメモリ動作が矢印1030により示されるよう に受取られる。ロードポインタは矢印1031においてクロックサイクルICL K4において受取られたロードメモリ動作の数だけデクリメントされる。所与の クロックサイクルにおいて受取られるロードメモリ動作の数はゼロ以上であり得 る。ストアポインタもまた、矢印1031においてICLK4において受取られ たストアメモリ動作の数だけインクリメントされる。上記のロード動作と同様、 所与のクロックサイクルにおいて受取られるストア動作の数はゼロ以上であり得 る。矢印1032において、ロード/ストアユニットはLSCNT1012のた めの新しい値を計算しており、これはロードポインタ1003のデクリメントさ れた値とストアポインタ1002のインクリメントされた値との差である。 矢印1033により示されるようにICLK5の始めにおいて、ロード/スト アユニット222は、現在ロード/ストアバッファ1004に存在するメモリ動 作のタグを調べ、このサイクルのためのデータキャッシュにアクセスする動作を 選択するプロセスを開始する。上に説明したような固定優先順位方式が選択基準 として用いられる。矢印1034において、アドレスおよび/またはデータがも たらされるメモリ動作のためのタグがロード/ストアユニットヘ機能ユニット2 12から転送される。この情報は矢印1035における選択プロセスにおいて用 いられる。矢印1036では、選択プロセスは完了し、データキャッシュのため の最大2つのアクセスが選択されている。矢印1037では、(矢印1034に おいて)このクロックサイクルにおいて転送されていることが示されたアドレス およびデータが機能ユニット212によりもたらされる。アドレスおよびデータ は矢印1038においてロード/ストアバッファ内の記憶ロケーションに転送さ れる。 クロックサイクルICLK6では、データキャッシュ224がアクセスされる 。またこのクロックサイクルでは、キャッシュにアクセスするメモリ動作の1つ または両方がロードメモリ動作である場合、図4Aのロードメモリ動作の第1の フィールド1020のタグはロード/ストアバッファ内に現在記憶されるどのス トアのタグとも比較される。同時に、ロードメモリ動作のアドレスはロード/ス トアバッファ内に現在記憶されるどのストアとも比較される。そのロードメモリ 動作が前述のタグ比較を介してプログラムの順番においてストア動作の後である ことがわかり、かつそのロードのアドレスが前述のアドレス比較を介してストア のアドレスと完全に重なることがわかった場合、ロードメモリ動作が取出そうと 試みているデータは実際には、ストアメモリ動作記憶ロケーションにあるデータ である。このデータはストアメモリ動作の記憶ロケーションのデータ部分から提 供される。この文脈において、「完全に重なる」とは、ロードメモリ動作が取出 そ うとしているバイトのすべてがストアメモリ動作が更新しつつあるバイト内に含 まれていることを意味する。また、「部分的に重なる」とは、ロードメモリ動作 が取出そうとしているバイトのうちのいくつかがストアメモリ動作が更新しつつ あるバイト内に含まれていることを意味する。前述のデータがロード/ストアユ ニットにもたらされていない場合、またはロードメモリ動作のアドレスがストア メモリ動作と部分的に重なる場合、ロードメモリ動作はそのデータをこのサイク ルにおいては取出さない。代わりに、これはストアメモリ動作が実行されるまで ロード/ストアバッファ内に残る。バッファにおけるストアメモリ動作がプログ ラムの順番においてロードメモリ動作より前であるがストアメモリ動作が依然と して比較のための有効アドレスを含んでいない場合、ロードメモリ動作は、スト アアドレスがロードメモリ動作に部分的に重なっているかのように扱われる。ロ ードメモリ動作がロード/ストアバッファ内にあるどのストアメモリ動作より前 であることがわかった場合、またはロードメモリ動作のアドレスがストアメモリ 動作のアドレスのいずれとも一致しない場合、ロードメモリ動作のためのデータ はデータキャッシュから提供される。ロードメモリ動作がデータキャッシュミス であり、前の一文に述べた条件が満たされる場合、このクロックサイクルにおい てロードメモリ動作にデータは提供されない。 矢印1039において、動作の結果はリオーダバッファ216に与えられる。 矢印1040において、このクロックサイクルにおいてデータキャッシュにアク セスするメモリ動作のフィールド1022(図4Aに示される)におけるミスビ ットおよび依存ビットは、検出されたアクセスのミス/ヒット状態とロード/ス トアバッファにおけるストアへの依存性とにより更新される。 次に、図4Cを参照すると、前述のメモリ動作依存性チェックを実現する例示 的なハードウェアが示される。矢印1050および矢印1051は、このクロッ クサイクルにおいてデータキャッシュにアクセスするよう選択される2つのメモ リ動作のアドレスを示す。これらのアドレスは、それぞれ第1および第2のアク セスのためのLSLINAD0[31:2]およびLSLINAD1[31:2 ]と記された信号線対上で運搬される。これらのアドレスは比較器1052を用 いてロード/ストアバッファ1004内の記憶ロケーションの各々に記憶され るアドレスと比較される。比較器の出力においてアドレスの重なりが示されるか 示されていないかにかかわらず、この情報は制御ユニット1053および105 4に入力され、制御ユニット1053および1054はまた上記のタグ比較を実 行する。タグ比較によりメモリ動作がロード/ストアバッファ内に存在する動作 より後であることが示され、アドレス比較が完全な重なりを示す場合、ストアデ ータはそれぞれ、出力1055および1056として送られる。このデータは次 に、ロードメモリ動作の結果として用いられる。ロードメモリ動作がストアメモ リ動作に依存するが、ストアメモリ動作のデータが提供されていない場合、ロー ドメモリ動作はストアメモリ動作のデータが提供されるまでロード/ストアバッ ファ1044内に残る。 次に図4Dを参照すると、ロード/ストアユニット222の図が示される。ロ ード/ストアユニット222はいくつかの区画に分割される。LSCTL106 0は制御ブロックである。このブロックはロード/ストアバッファ1004を制 御するのに必要な論理ゲートと、ロード/ストアユニットの他の部分とを含む。 LDSTSTAT1061は、ロード/ストアバッファ内の各記憶ロケーション のためのステータス情報を含む。すなわち、LDSTSTAT1061は図4A のフィールド1022の情報を含む。LDSTTAGS1062は、ロード/ス トアバッファ1004の各記憶ロケーションのための図4Aのフィールド102 0の情報を含む。LDSTADR1063は、ロード/ストアバッフア1004 の各記憶ロケーションのための図4Aのフィールド1021のアドレス部分を含 む。LDSTDAT1064は、ロード/ストアバッファ1004の各記憶ロケ ーションのための図4Aのフィールド1021のデータ部分を含む。最後に、L SSPREG1065は、セグメントレジスタを含み、これについて以下にさら に説明する。 図4Dはまた、図2の入力1000を示し、これはここでは一実施例において 用いられる信号として示される。RTAGnB1066は、リオーダバッファ2 16内のメモリ動作の位置を識別するタグをもたらす1組の信号である。ITY PEnB1067は、メモリ動作をロード動作、ストア動作またはロード−op −ストア動作のいずれかとして識別する。RESLAnB1072は、メモリ動 作のためのアドレスを提供し、RESnB1073はストアメモリ動作のための データを提供する。 また、図4Dはロード/ストアユニット222の出力を示す。LSRESO/ XLSRES0 1068はデータキャッシュ224への第1のアクセスのため のデータ出力である。2組の信号が差動入力としてリオーダバッファヘ提供され る。同様に、LSRES1/XLSRES1 1069はデータキャッシュ22 4への第2のアクセスのためのデータ出力である。また、LSLINAD0 1 070およびLSLINAD1 1071は、それぞれ、第1および第2のデー タキャッシュアクセスのためのアドレスである。 上述の説明によれば、ユニファイドロード/ストアバッファを用いたロード/ ストアユニットを含む高性能スーパースカラマイクロプロセッサが説明され、こ れは実質的により小さいスペースで、一般的に用いられる別個のロードおよびス トアバッファと性能が等しいバッファを実現するものである。ユニファイドバッ ファはロードおよびストアメモリ動作の両方を記憶し、バッファの一方の端部か らロードを記憶し、他方の端部からストアを記憶する。このように、別個のバッ ファにおいてロードおよびストアを記憶することの属性が保たれ、同時にバッフ ァに要する物理的空間は有利に減少する。 数多くの変形および修正が、ひとたび上記の開示が完全に理解されると当業者 には明らかになるであろう。以下の請求の範囲はそのような変形および修正のす べてを包括すると解釈されることが意図される。
【手続補正書】 【提出日】平成11年1月21日(1999.1.21) 【補正内容】 (1)明細書の第1頁第8行「2.背景技術の説明」の後に、下記の文章を挿 入する。 記 EP−A−0 436 092は、データの一貫性を確実にするため、追越し (アウト・オブ・シーケンス)フェッチ制御を利用する、データおよび命令記憶 部を有するプロセッサを開示する。 M・ジョンソン(Johnson)の『スーパースカラマイクロプロセッサの設計(Supe rscalar Microprocessor Design)』の第8章「メモリのデータフロー(Memory Da taflow)」は、ロードおよびストアの性能を改善する既知の方法を開示する。 (2)請求の範囲を別紙のとおり捕正する。請求の範囲 1.スーパースカラマイクロプロセッサ(200)における非ブロッキングのロ ードメモリ動作(1000)を実現するためのロード/ストアユニット(222 )であって、 未決のメモリ動作に関する情報を記憶するように構成される複数の記憶ロケー ションを含むバッファ(1004)を含み、前記バッファはさらに、前記情報を 受取るように構成される入カポートを含み、前記バッファはさらに、データキャ ッシュ(224)にデータアクセスコマンドを伝えるよう構成されるデータキャ ッシュポート(1008)を含み、前記複数の記憶ロケーションの各々はメモリ 動作および対応するミスビットを記憶するよう構成されており、前記ミスビット はセットされるとそれが対応するメモリ動作が前記データキャッシュをミスする ことを示し、前記ロード/ストアユニットはさらに 前記バッファ(1004)に結合されかつ前記バッファ内の前記複数の記憶ロ ケーションのうちの特定の1つの中に記憶されるメモリ動作を選択するよう構成 される出力制御ユニット(1005)を含み、前記出力制御ユニット(1005 )はさらに、前記選択された動作に関連するデータアクセスコマンドを前記デー タキャッシュ(224)に与えるように構成されており、前記出力制御ユニット (1005)は、前記対応するミスビットがセットされておらず、かつプログラ ムの順番において前記複数の記憶ロケーションのうちの前記特定の1つの前であ るメモリ動作を記憶する前記複数の記憶ロケーションの各々が、セットされたミ スビットを記憶している場合、前記メモリ動作を選択することを特徴とする、ロ ード/ストアユニット。 2.前記バッファ(1004)はメモリ動作のための記億ロケーションの線形ア レイとして構成される、請求項1に記載のロード/ストアユニット。 3.前記出力制御ユニット(1005)は固定優先順位方式に従って前記バッフ ァ(1004)から前記メモリ動作を選択するよう構成される、請求項1または 2に記載のロード/ストアユニット。 4.前記出力制御ユニット(1005)は、 投機的ではないストアメモリ動作には高い優先順位が与えられ、 投機的ではなく、かつ前記データキャッシュ(224)への以前のアクセスを 介して前記データキャッシュ(224)をミスすることが知られているメモリ動 作には中間の優先順位が与えられ、 以前に前記データキャッシュ(224)にアクセスしたことがないロードメモ リ動作には低い優先順位が与えられる 方式に従って、前記バッファ(1004 )から前記メモリ動作を選択するよう構成される、請求項1、2または3に記載 のロード/ストアユニット。 5.前記出力制御ユニット(1005)はリオーダバッファ(216)により提 供されるポインタを備えるよう構成され、前記ポインタは前記メモリ動作の投機 的状態を示すよう構成される、請求項4に記載のロード/ストアユニット。 6.前記出力制御ユニット(1005)は、前記リオーダバッファ(216)に より提供される前記ポインタにより投機的であることが示されている以前のロー ドメモリ動作が、前記以前のメモリ動作と関連付けられた前記ミスビットがセッ トされているクロックサイクルの間、ロードメモリ動作を選択するよう構成され る、請求項5に記載のロード/ストアユニット。 7.前記複数の記憶ロケーションのうちの1つが前記入カポートからメモリ動作 を受取る第2のクロックサイクルの間に、前記記憶ロケーションに記億された前 記ミスビットがクリアされる、請求項1から6のいずれかに記載のロード/スト アユニット。 8.前記複数の記憶ロケーションの各々に記憶される前記ミスビットは、前記デ ータキャッシュ(224)がメインメモリから転送される複数のバイトで更新さ れる第2のクロックサイクルの間にクリアされる、請求項1から7のいずれかに 記載のロード/ストアユニット。 9.前記バッファ(1004)は、投機的で、かつ関連付けられた前記ミスビッ トがセットされた状態のミスメモリ動作を、前記メモリ動作がメインメモリから 前記データキャッシュ(224)へ複数のバイトを転送するのに選択されるクロ ックサイクルまで記憶するよう構成される、請求項1から8のいずれかに記載の ロード/ストアユニット。 10.ロード/ストアバッファ(1004)に記憶された第1のメモリ動作が投 機的であるクロックサイクルの間に、前記データキャッシュ(224)にアクセ スするため、前記ロード/ストアバッファ(1004)に記憶される第2のメモ リ動作を選択するための方法であって、 前記第1のメモリ動作を調べて前記第1のメモリ動作に関連付けされたミスビ ットがセットされていることを判定するステップと、 前記第1のメモリ動作と関連付けされた前記ミスビットがセットされているこ とを理由に前記第2のメモリ動作を選択するステップとを特徴とする、方法。 11.前記第1のメモリ動作が前記データキャッシュ(224)にアクセスし、 ミスすることがわかったクロックサイクルの間、前記第1のメモリ動作に関連の ある前記ミスビットをセットするステップをさらに含む、請求項10に記載の方 法。 12.前記第1のメモリ動作が前記ロード/ストアバッファ(1004)に記憶 されるクロックサイクルの間に、前記第1のメモリ動作と関連のある前記ミスビ ットをクリアするステップをさらに含む、請求項10または11に記載の方法。 13.複数のバイトがメインメモリから前記データキャッシュ(224)へ転送 されるクロックサイクルの間、前記第1のメモリ動作と関連のある前記ミスビッ トをクリアするステップをさらに含む、請求項10、11または12に記載の方 法。 14.前記第1のメモリ動作が非投機的であることが示され、かつ、複数のバイ トをメインメモリから前記データキャッシュ(224)へ転送するよう選択され るクロックサイクルまで、前記第1のメモリ動作を前記ロード/ストアバッファ (1004)内に記憶するステップをさらに含む、請求項10から14のいずれ かに記載の方法。 15.前記クリアするステップの後の第2のクロックサイクルの間、前記データ キャッシュ(224)にアクセスするため前記第1のメモリ動作を選択するステ ップをさらに含む、請求項13に記載の方法。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ハッタンガディ,ラジブ・エム アメリカ合衆国、78739 テキサス州、オ ースティン、ラドモンド・ロード、10535 (72)発明者 チンナコンダ,ムラリダーラン・エス アメリカ合衆国、78759 テキサス州、オ ースティン、キャピタル・オブ・テキサ ス・ハイウェイ、8509、ナンバー・2018

Claims (1)

  1. 【特許請求の範囲】 1.スーパースカラマイクロプロセッサにおける非ブロッキングのロードメモリ 動作を実現するためのロード/ストアユニットであって、 未決のメモリ動作に関する情報を記憶するように構成される複数の記憶ロケー ションを含むバッファを含み、前記バッファはさらに、前記情報を受取るように 構成される入力ポートを含み、前記バッファはさらに、データキャッシュにデー タアクセスコマンドを伝えるよう構成されるデータキャッシュポートを含み、前 記複数の記憶ロケーションの各々はミスビットを備えるよう構成されており、前 記ミスビットは、前記メモリ動作が前記データキャッシュにアクセスし前記デー タキャッシュをミスするクロックサイクルの間セットされるよう構成されており 、前記ロード/ストアユニットはさらに 前記バッファに結合される出力制御ユニットを含み、前記出力制御ユニットは 前記バッファ内の前記複数の記憶ロケーション内に記憶されるメモリ動作を選択 するよう構成されており、前記出力制御ユニットはさらに、前記動作に関連のあ るデータアクセスコマンドを前記データキャッシュへ与えるよう構成される、ロ ード/ストアユニット。 2.前記バッファはメモリ動作のための記憶ロケーションの線形アレイとして構 成される、請求項1に記載のロード/ストアユニット。 3.前記出力制御ユニットは固定優先順位方式に従って前記バッファから前記メ モリ動作を選択するよう構成される。請求項1に記載のロード/ストアユニット 。 4.前記出力制御ユニットは、 投機的ではないストアメモリ動作には高い優先順位が与えられ、 投機的ではなく、かつ前記データキャッシュへの以前のアクセスを介して前記 データキャッシュをミスすることが知られているメモリ動作には中間の優先順位 が与えられ、 以前に前記データキャッシュにアクセスしたことがないロードメモリ動作には 低い優先順位が与えられる 方式に従って、前記バッファから前記メモリ動作を選択するよう構成される、 請求項1に記載のロード/ストアユニット。 5.前記出力制御ユニットはリオーダバッファにより提供されるポインタを備え るよう構成され、前記ポインタは前記メモリ動作の投機的状態を示すよう構成さ れる、請求項4に記載のロード/ストアユニット。 6.前記出力制御ユニットはさらに、前記リオーダバッファにより提供される前 記ポインタにより投機的であることが示されている以前のロードメモリ動作が、 前記以前のメモリ動作と関連付けられた前記ミスビットがセットされているクロ ックサイクルの間、ロードメモリ動作を選択するよう構成される、請求項5に記 載のロード/ストアユニット。 7.前記複数の記憶ロケーションのうちの1つが前記入力ポートからメモリ動作 を受取る第2のクロックサイクルの間に、前記記憶ロケーションに記憶された前 記ミスビットがリセットされる、請求項1に記載のロード/ストアユニット。 8.前記複数の記憶ロケーションの各々に記憶される前記ミスビットは、前記デ ータキャッシュがメインメモリから転送される複数のバイトで更新される第2の クロックサイクルの間にリセットされる、請求項1に記載のロード/ストアユニ ット。 9.前記バッファは、投機的で、かつ関連付けられた前記ミスビットがセットさ れた状態のミスメモリ動作を、前記メモリ動作がメインメモリから前記データキ ャッシュへ複数のバイトを転送するのに選択されるクロックサイクルまで記憶す るよう構成される、請求項1に記載のロード/ストアユニット。 10.ロード/ストアバッファに記憶された第1のメモリ動作が投機的で、かつ データキャッシュをミスすることが知られているクロックサイクルの間に、前記 データキャッシュにアクセスするため、前記ロード/ストアバッファに記憶され る第2のメモリ動作を選択するための方法であって、 前記第1のメモリ動作を調べて前記第1のメモリ動作に関連付けされたミスビ ットがセットされていることを判定するステップと、 前記第1のメモリ動作と関連付けされた前記ミスビットがセットされているこ とを理由に前記第2のメモリ動作を選択するステップとを含む、方法。 11.前記第1のメモリ動作が前記データキャッシュにアクセスし、ミスするこ とがわかったクロックサイクルの間、前記第1のメモリ動作に関連のある前記ミ スビットをセットするステップをさらに含む、請求項10に記載の方法。 12.前記第1のメモリ動作が前記ロード/ストアバッファに記憶されるクロッ クサイクルの間に、前記第1のメモリ動作と関連のある前記ミスビットをリセッ トするステップをさらに含む、請求項10に記載の方法。 13.複数のバイトがメインメモリから前記データキャッシュへ転送されるクロ ックサイクルの間、前記第1のメモリ動作と関連のある前記ミスビットをリセッ トするステップをさらに含む、請求項10に記載の方法。 14.前記第1のメモリ動作が非投機的であることが示されかつ複数のバイトを メインメモリから前記データキャッシュへ転送するよう選択されるクロックサイ クルまで、前記第1のメモリ動作を前記ロード/ストアバッファ内に記憶するス テップをさらに含む、請求項10に記載の方法。 15.前記リセットするステップの後の第2のクロックサイクルの間、前記デー タキャッシュにアクセスするため前記第1のメモリ動作を選択するステップをさ らに含む、請求項13に記載の方法。 16.スーパースカラマイクロプロセッサにおける非ブロッキングロードメモリ 動作を実現するためのロード/ストアユニットであって、 複数の記憶ロケーションを含むバッファを含み、前記複数の記憶ロケーション の各々はミスビットを備えるよう構成され、前記ミスビットは、あるメモリ動作 がデータキャッシュにアクセスし前記データキャッシュをミスするクロックサイ クルの間、セットされるよう構成されており、前記ロード/ストアユニットはさ らに 前記バッファに結合される出力制御ユニットを含む、ロード/ストアユニット 。
JP50595998A 1996-07-16 1996-07-16 スーパースカラマイクロプロセッサのための非ブロッキングロードを実現するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング的にロードを選択する方法 Expired - Fee Related JP3732234B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US1996/011844 WO1998002804A1 (en) 1996-07-16 1996-07-16 Load/store unit and method for non-blocking completion of loads in a superscalar microprocessor

Publications (2)

Publication Number Publication Date
JP2000515276A true JP2000515276A (ja) 2000-11-14
JP3732234B2 JP3732234B2 (ja) 2006-01-05

Family

ID=22255474

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50595998A Expired - Fee Related JP3732234B2 (ja) 1996-07-16 1996-07-16 スーパースカラマイクロプロセッサのための非ブロッキングロードを実現するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング的にロードを選択する方法

Country Status (4)

Country Link
EP (1) EP1005672B1 (ja)
JP (1) JP3732234B2 (ja)
DE (1) DE69638271D1 (ja)
WO (1) WO1998002804A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007207238A (ja) * 2006-02-02 2007-08-16 Internatl Business Mach Corp <Ibm> 非同期式パイプラインのためのデータ・キャッシュ・ミスをアウト・オブ・オーダ方式で処理するための装置及び方法
JP2015533442A (ja) * 2012-11-02 2015-11-24 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated ストア再生ポリシー

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6662280B1 (en) * 1999-11-10 2003-12-09 Advanced Micro Devices, Inc. Store buffer which forwards data based on index and optional way match
TWI646422B (zh) 2012-06-15 2019-01-01 英特爾股份有限公司 在處理器中之免消歧義失序載入/儲存佇列方法、微處理器、和非暫態性電腦可讀取儲存媒體
EP2862069A4 (en) 2012-06-15 2016-12-28 Soft Machines Inc INSTRUCTION DEFINITION FOR IMPLEMENTING LOAD MEMORY TRANSFER AND OPTIMIZATION
CN104583957B (zh) 2012-06-15 2018-08-10 英特尔公司 具有无消歧乱序加载存储队列的重新排序的推测性指令序列
CN104823168B (zh) 2012-06-15 2018-11-09 英特尔公司 用于实现从由加载存储重新排序和优化导致的推测性转发遗漏预测/错误中恢复的方法和系统
CN107748673B (zh) 2012-06-15 2022-03-25 英特尔公司 包括虚拟加载存储队列的处理器和系统
EP2862062B1 (en) 2012-06-15 2024-03-06 Intel Corporation A virtual load store queue having a dynamic dispatch window with a distributed structure

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5222223A (en) * 1989-02-03 1993-06-22 Digital Equipment Corporation Method and apparatus for ordering and queueing multiple memory requests
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
US5455924A (en) * 1993-02-09 1995-10-03 Intel Corporation Apparatus and method for partial execution blocking of instructions following a data cache miss

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007207238A (ja) * 2006-02-02 2007-08-16 Internatl Business Mach Corp <Ibm> 非同期式パイプラインのためのデータ・キャッシュ・ミスをアウト・オブ・オーダ方式で処理するための装置及び方法
JP2015533442A (ja) * 2012-11-02 2015-11-24 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated ストア再生ポリシー

Also Published As

Publication number Publication date
EP1005672A1 (en) 2000-06-07
JP3732234B2 (ja) 2006-01-05
DE69638271D1 (de) 2010-11-18
EP1005672B1 (en) 2010-10-06
WO1998002804A1 (en) 1998-01-22

Similar Documents

Publication Publication Date Title
US5802588A (en) Load/store unit implementing non-blocking loads for a superscalar microprocessor and method of selecting loads in a non-blocking fashion from a load/store buffer
US5761712A (en) Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
JP4699666B2 (ja) インデックスおよび任意選択的ウェイ一致に基づいてデータをフォワードするストアバッファ
JP3542021B2 (ja) セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
US5944815A (en) Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access
US5845323A (en) Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
US6321326B1 (en) Prefetch instruction specifying destination functional unit and read/write access mode
US5446850A (en) Cross-cache-line compounding algorithm for scism processors
US7257699B2 (en) Selective execution of deferred instructions in a processor that supports speculative execution
US6427192B1 (en) Method and apparatus for caching victimized branch predictions
EP0106667A2 (en) Central processing unit
KR19990072271A (ko) 고성능의추론적인오정렬로드연산
US20070050592A1 (en) Method and apparatus for accessing misaligned data streams
US20030074530A1 (en) Load/store unit with fast memory data access mechanism
JP2003515214A (ja) 計算を狭いオペランドで実施するための方法と装置
US5893146A (en) Cache structure having a reduced tag comparison to enable data transfer from said cache
US7293161B1 (en) Deferring loads and stores when a load buffer or store buffer fills during execute-ahead mode
JP3794918B2 (ja) 復帰選択ビットを用いて分岐予測のタイプを分類する分岐予測
US7484080B2 (en) Entering scout-mode when stores encountered during execute-ahead mode exceed the capacity of the store buffer
JP3732234B2 (ja) スーパースカラマイクロプロセッサのための非ブロッキングロードを実現するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング的にロードを選択する方法
US6175909B1 (en) Forwarding instruction byte blocks to parallel scanning units using instruction cache associated table storing scan block boundary information for faster alignment
US20080282050A1 (en) Methods and arrangements for controlling memory operations
EP0912926B1 (en) Unified load/store unit for a superscalar microprocessor and method of operating the same

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050428

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050620

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050729

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051012

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091021

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101021

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111021

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111021

Year of fee payment: 6

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

Free format text: PAYMENT UNTIL: 20111021

Year of fee payment: 6

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20121021

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees