JPH08504977A - スーパースカラ・マイクロプロセサにおけるロード及び/又はストア動作を扱うシステム及び方法 - Google Patents

スーパースカラ・マイクロプロセサにおけるロード及び/又はストア動作を扱うシステム及び方法

Info

Publication number
JPH08504977A
JPH08504977A JP6509063A JP50906394A JPH08504977A JP H08504977 A JPH08504977 A JP H08504977A JP 6509063 A JP6509063 A JP 6509063A JP 50906394 A JP50906394 A JP 50906394A JP H08504977 A JPH08504977 A JP H08504977A
Authority
JP
Japan
Prior art keywords
load
data
store
instruction
address
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
JP6509063A
Other languages
English (en)
Other versions
JP3644959B2 (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.)
Seiko Epson Corp
Original Assignee
Seiko Epson 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 Seiko Epson Corp filed Critical Seiko Epson Corp
Publication of JPH08504977A publication Critical patent/JPH08504977A/ja
Application granted granted Critical
Publication of JP3644959B2 publication Critical patent/JP3644959B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61KPREPARATIONS FOR MEDICAL, DENTAL OR TOILETRY PURPOSES
    • A61K47/00Medicinal preparations characterised by the non-active ingredients used, e.g. carriers or inert additives; Targeting or modifying agents chemically bound to the active ingredient
    • A61K47/30Macromolecular organic or inorganic compounds, e.g. inorganic polyphosphates
    • A61K47/32Macromolecular compounds obtained by reactions only involving carbon-to-carbon unsaturated bonds, e.g. carbomers, poly(meth)acrylates, or polyvinyl pyrrolidone
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Chemical & Material Sciences (AREA)
  • Pharmacology & Pharmacy (AREA)
  • Medicinal Chemistry (AREA)
  • Inorganic Chemistry (AREA)
  • Epidemiology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Animal Behavior & Ethology (AREA)
  • General Health & Medical Sciences (AREA)
  • Public Health (AREA)
  • Veterinary Medicine (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 本発明はRISC型スパースカラ・アーキテクチャ環境に於いて、メモリからの読み出し及びメモリへの書き込み或いは入出力に必要な、ロード及びストア・オペレーションを管理するためのシステム及び方法を提供するものである。このタスクを行うためにロード・ストア・ユニットが設置され、ロード・ストア・ユニットの主な目的は可能な限りロード要求をアウト・オブ・オーダで行い、ロード・データを命令実行ユニットが使用できるように最大速度で返すことである。ロード・オペレーションはアドレス衝突も書き込み実行待ちも存在しない時にのみアウト・オブ・オーダで実行できる。アドレス衝突が発生するのは、先行の命令が書き込み中の記憶場所に於いて読み出しが要求された時である。書き込み実行待ちとは先行の命令がストア・オペレーションを要求したが、ストア・アドレスが未だ計算されていない状態をいう。データ・キャッシュ・ユニットは8バイトの位置合わせされていないデータを返す。このデータが命令実行ユニットに戻される前に、ロード/ストア・ユニットがこのデータを正しく位置合わせする。従って、ロード・ストア・ユニットの三つの主なタスクは(1)アウト・オブ・オーダのキャッシュ要求の処理、(2)アドレス衝突の検出、及び(3)データの位置合わせ、である。

Description

【発明の詳細な説明】 スーパースカラ・マイクロプロセサにおけるロード及び/又は ストア動作を扱うシステム及び方法 (SYSTEM AND METHOD FOR HANDLING LOAD AND/OR STORE OPERATIONS IN A SUPERSCALAR MICROPROCESSOR) 発明者: シェリルD.センター(Cheryl D.Senter) ジョハネス・ワング(Johannes Wang) 関連特許出願の引照 本出願は本出願の代理人に譲渡されている下記の出願に関連するものである。す なわち、ニューエン(Nguyen)その他による1991年7月8日出願の米国特許出願香 号 07/727,058(代理人整理番号SP021)、「拡張可能RISCマイクロプロセサ・ アーキテクチャ」(EXTENSIBLE RISC MICROPROCESSOR ARCHITECTURE)、及び′0 58出願の継続出願である、1992年1月8日出願の出願番号07/817,809に関連する。 上記出願の開示を参照することによって当該特許出願の明細書の記載内容が本明 細書に組み込まれているものとする。 発明の背景 1.産業上の利用分野 本発明は一般的にはスーパースカラ・マイクロプロセサの設計に関し、より具体 的には、命令をアウト・オブ・オーダで実行するマイクロプロセサに於けるロー ド及びストア動作を扱うシステム並びに方法に関する。 2.関連技術 スーパースカラ縮小命令セット・コンピュータ(RISC)に於ける大きな課題は如 何にして斯かる命令実行の本質的な問題である依存性によるデータ・エラーの発 生を回避しつつ、複数の命令を平行処理的に、アウト・オブ・オーダで実行でき るか、という点に関する。RISCプロセサに於ける最も簡単な命令発行方針は命令 をプログラムでの順序と同じ順序で発行し(イン・オーダ発行)、結果をまた同 じ順序で書き出すことである(イン・オーダ完了)。アウト・オブ・オーダ完了 はイン・オーダ完了に比して複雑であるが、同じ種類の動作に対してスーパース カラ・プロセサの性能向上に効果がある。例えば、アウト・オブ・オーダ完了は ロード又は浮動小数点演算等の長い待ち時間動作の性能改善のために使用される 。機能ユニット内で実行中の命令の数に制限はないが、その最大数は全ての機能 ユニット内のパイプライン段階の数である。この場合、命令はアウト・オブ・オ ーダで完了でき、その理由は結果の計算にひとつの機能ユニットが1サイクル以 上のサイクルを費やした場合でも命令の発行に停止がないからである。従って、 後続の命令が終了した後、機能ユニットが一つの命令を完了しても構わない。 下記のコードシーケンスを考えて見る。ただし″op″はオペレーション、″Rn ″は番号つきレジスタ、″:=″は代入を表わす。 R3:=R3 op R5 (1) R4:=R3+1 (2) R3:=R5+1 (3) R7:=R3 op R4 (4) この場合、一般的にアウト・オブ・オーダの命令完了が可能であっても、第1命 令の代入は第3命令の代入の後には完了できない。第1命令と第3命令がアウト ・オブ・オーダで実行された場合、異常且つ不正な値がR3レジスタに残り、例 えば第4命令が不正なオペレランド値を受け取るような事態が生じる。第3命令 の結果は第1命令に対して「出力依存性」を有し、このコードシーケンスに於い て正しい出力値を得るためには第3命令は第1命令の後に完了しなければならな い。従って、第3命令の結果が、計算にもっと時間の掛かるより古い命令によっ て上書きされる場合、第3命令の発行は待たなければならない。 アウト・オブ・オーダの完了は性能の向上をもたらすものであるが、より多くの ハードウェア、つまりデータ依存性論理、を必要とする。アウト・オブ・オーダ の完了の場合、データ依存性論理は複雑になる。その理由は、この論理ではデコ ードされた命令と、全てのパイプライン段階の全ての命令の間に於けるデータ依 存性の検査が行なわれるからである。結果が正しい順序で書き出されることを保 証するのもハードウェアの役割である。これに対して、イン・オーダ実行に於い ては、データ依存性論理はデコードされた命令と、現在実行中の幾つかの命令の 間に於けるデータ依存性のみを検査すればよいから、結果は当然正しい順序で書 き出される。アウト・オブ・オーダ完了に於いてはまた、機能ユニットは結果バ ス及びレジスタ・ファイル書き込みポート間での調停を行なわなければならない 。その理由は、同時に完了する全ての命令の必要を満たすために十分な数のバス 及びポートが存在しないであろうからである。 更に、アウト・オブ・オーダの完了では命令例外の処理がより困難になる。ある 条件下で命令が例外を生成した場合、その命令はハードウェアだけでは正しく実 行できない。 デコードされた命令が資源競合を生じた場合、真の依存性を有する場合、あるい は未完了の命令に対して出力依存性を有する場合、イン・オーダ命令発行プロセ サは命令のデコードを中止する。従って、後続する一つ又は複数の命令が実行可 能であっても、プロセサは競合又は依存性を生じた命令の後に来るものを先読み (lookahead)処理できない。従来の解決策はデコーダを実行段階から分離して 、命令が直ちに実行可能であるか否かにかかわらず命令のデコードを継続して行 なえるようにすることである。この分離はデコード段階と命令段階の間に「命令 ウィンドウ」と呼ばれるバッファを配置することによって実施される。 先読みのために、プロセサは命令をデコードし、ウィンドウ中に場所がある限り デコードされた命令を命令ウィンドウに入れ、それと同時に、実行可能な命令( すなわち、資源競合又は依存性を持たない命令)を見出すためにウィンドウ中の 命令を検査する。命令ウインドウは命令のプールとしての機能があり、この機能 によってプロセサは先読みの能力を得る。この能力はウィンドウのサイズとプロ セサの命令フェッチ・ユニット(IFU)の性能によって制約されるものである。 これによって、各命令の最初のプログラム順序と無関係にウィンドウから発行で きるので、命令のアウト・オブ・オーダ発行が可能となる。この場合、命令発行 元に対する唯一の制約はプログラムが正常に動作することを保証するのに必要な 制約である。 如何なる特定の命令に於いても、発行に関する制約はイン・オーダ発行の場合と 殆ど同じである。すなわち、命令は資源競合又は依存性を持たない場合発行され るのである。アウト・オブ・オーダの発行によって、プロセサは発行可能なより 大きな命令集合を得ることになり、それによって、同時に実行可能な命令をプロ セサが見つけ得る確率が高まる。しかし、命令をアウト・オブ・オ ーダで発行する能力によって他の発行制約が生じる。これは命令をアウト・オブ ・オーダで実行する能力に於いて出力依存性の制約が導入されるのに類似してい る。 これを理解するために上記のコードシーケンスの例を振り返って見る。第2命令 の実行が始まる前には第3命令の代入は完了できない。さもなければ、第3命令 が第2命令の第1オペランドを不正に上書きすることがあり得る。第3命令の結 果は第2命令の第1入力オペランドに対して「反依存性」を有するといわれる。 「反依存性」という用語は、反依存性制約はそれが逆になった以外には真の依存 性に関する制約と同様であることを意味する。第2命令が使用する値を第1命令 が生成するかわりに、第2命令は第1命令が使用する値を破壊する値を生成する 。これを防止するためには、第2命令が始まるまでプロセサは第3命令を発行し てはならない。第2命令は第1命令に依存するから、第3命令は他の点では独立 していても第1命令が完了するまで待たなければならない。 反依存性が重要なのは主に命令がアウト・オブ・オーダで発行可能な場合である 。正常なオペレーション中、停止した命令の入力オペランドは後続する命令によ って破壊されることがある。しかし、スカラ・プロセサに於いては、往々にして 命令例外は例外条件を修正し、そして問題を生じた命令を再試行することによっ て処理される。この命令がアウト・オブ・オーダで完了した場合、その命令の再 試行が行なわれた時、後続する命令によってその再試行中の命令の入力オペラン ドが上書きされることがあり得る。この問題は正確な割り込みをサポートするプ ロセサでは起こり得ない。この問題の解決には、再起動を可能にするためにプロ セサが命令オペランドのコピーを維持する必要があるかもしれない。 プログラム命令によって行われるオペレーションの代表的な二つ のオペレーションはロード及びストアのオペレーションである。一般的に、ロー ド及びストア・オペレーションはそれぞれ記憶場所を読み出し、変更する。他の プログラム命令と同様に、ロード及びストアはアウト・オブ・オーダで実行でき る。ロード及びストアは同時にデコード可能であるが、従来的には1サイクル当 たり一つのロード又はストアのみが発行される。データ・キャッシュの使用に於 いては、通常、ロードはストアに優先される。その理由は多くの場合ロードはプ ロセサが演算を行うのに必要な値を生成するからである。データ・キャッシュの 使用に於いて、ストアがロードと競合する場合、ストアの実行が可能になるまで 、通常ストアはストア・バッファに保持される。更に、従来的には、ストアは他 のストアに対してプログラム順序で実行され、ロードも含めて全ての他の先行の 命令が実行された後にのみ実行される。これによって、データ・キャッシュ使用 に於いてのプロセサのイン・オーダ状態が保存される。その理由はキャッシュの 更新はそれが絶対に正しく行なわれ得るまで行なわれないからである。ストア・ バッファの使用によってストアが正しい順序で保持され、先行の命令が完了する までストアの完了が延期されるのである。 ストアは他の先行の命令が実行されるまで保持され、そしてロードはプロセサ中 での計算に必要な値を生成するから、ストアに対してロードをプログラム順序に 保持することは性能に対して重大な悪影響を及ぼす。全ての先行のストアが完了 するまでロードが待たなければならない場合、そしてそのために最も新しいスト アに先行する全ての命令が完了するまでロードが待つ場合、ロード・データに依 存した、ロードに後続する全ての命令も待つことになる。この性能上の問題を回 避するために、ロードはストア・バッファで待機している、先行のストアをバイ パスすることができ、ロード・データは後続の計算に於いて使用できる。 ロードが先行のストアをバイパスすることができる場合、ロードは未だ実行され ていない先行のストアからデータを得る必要があるかも知れない。プロセサはロ ードが先行のストアに対して有する真の依存性を、ロードの仮想記憶アドレスと 、全ての未完了の先行ストアの仮想記憶アドレスとを比較することによって検査 する(仮想アドレスとは記憶管理ユニットによるアドレス変換が適用される前に 、命令によって直接計算されるアドレスである)。ここに於いて、各仮想アドレ スに対して一意的なマッピングの存在が仮定される。その理由は2個の異なる仮 想アドレスが同じ物理的なアドレスへアクセスすることがないようにするためで ある。この仮定に基づき、仮想アドレス比較は物理的記憶場所間の全ての依存性 を検出する。ロード・アドレスが先行のストアのアドレスと一致する場合、又は 先行のストアのアドレスのいずれも未だ計算されていない場合(この場合、依存 性は検出不可能なので、依存性の存在が仮定される)、一つのロードは一つのス トアに対して真の依存性を有する。ロードがストアに依存する場合、データ・キ ャッシュは正しい値を持たないので、そのロードはデータ・キャッシュによって 満たされない。ストアの有効アドレスが後続するロードのアドレスと一致する場 合、そのロードはストアが完了するのを待つ代わりに、ストア・データが有効な 場合、ストア・バッファによって直接満たされる。 上述の如く、ロード及びストアは記憶場所に対する反依存性及び出力依存性を回 避するような方法で実行される。ロードは先行のストアをバイパスできるが、ス トアは先行のロードをバイパスできない。従って、ロードとストアの間には反依 存性は存在し得ない。一つのストアは従来他のストアに対して通常プログラム順 に発行されるので、ストア間には出力依存性は存在し得ない。 従来的には、データ・キャッシュに於いてロードは他のロードに 対してプログラム順に実行される。当業者の意見ではロードをアウト・オブ・オ ーダで実行することにより性能の点で得られる利点はないとのことである。その 理由は、古いロードによってプロセサに供給されるデータは新しいロードによっ て供給されるデータよりも計算に必要とされることが多いからである。 上記の概念の詳細は幾つかの刊行物で論じられている。例えば、John L.Hennes syその他著、「Computer Architecture‐A Quantitative Approach」(Morgan K aufmann Publishers,Inc.,San Mateo,California,1990年発行)及びMike Jo hnson著「Supcrscalar Microprocessor Design」(Prentice-Hall,Inc.,Engle wood Cliffs, New Jersey,1991年発行)(特に第8章、この章の一部分は上に 転載されている)。両書とも参照することによって全文が本明細書に組み込まれ ているものとする。 発明の要約 本発明はスーパースカラRISC型マイクロプロセサ・アーキテクチャ環境に於いて メモリからの読み出し及びメモリへの書き込み或いは入出力に必要なロード及び ストア・オペレーションを管理するシステムを提供するものである。本発明はプ ログラム・ストリームを実行するマイクロプロセサ・システムを提供するもので 、このシステムには命令を命令ストアより取り出し、且つ予め決められた複数の 命令を命令バッファに供給する命令フェッチ・ユニットが含まれている。更に、 命令フェッチ・ユニットと結合している実行ユニットが含まれ、実行ユニットは 命令バッファからの複数の命令をアウト・オブ・オーダで実行するためにある。 実行ユニットにはロード・ストア・ユニットが含まれ、ユニット はアウト・オブ・オーダなロード要求とイン・オーダのストア要求をメモリ・シ ステムに対して行なうように適性化されている。従って、本発明のロード/スト ア・ユニットの主な目的は、可能な限り、アウト・オブ・オーダなロード要求を 行ない、なるべく速やかにロード・データを命令実行ユニットに返すことである 。ロード・オペレーションはアドレス衝突がなく、実行待ちの書き込みオペレー ションが存在しない時のみアウト・オブ・オーダで実行できる。アドレス衝突が 発生するのは、古い命令がこれから書き込まれる記憶場所に於いて読み出しが要 求された時である。実行待ちの書き込みオペレーションとは、古い命令がストア ・オペレーションを要求したがストア・アドレスの計算がまだ行なわれていない ことである。データ・キャッシュ・ユニットは位置合わせされていない8バイト のデータを返す。ロード/ストア・ユニットはデータが命令実行ユニット(IEU) に返される前にデータの正しい位置合せを行う。従って、ロード/ストア・バッ ファの三つの主要なタスクは(1)アウト・オブ・オーダのキャッシュ要求の処理 、(2)アドレス衝突の検出、及び(3)データの位置合わせである。 ロード・ストア・ユニットには現在実行中の複数の命令に対応する複数のアドレ スを管理するために適性化されたアドレス・パス、現在実行中の複数の命令の各 命令間にアドレス衝突及び実行待ちの書き込みオペレーションが存在するかどう かを検出して知らせるアドレス衝突手段が含まれ、そうすることによって、ロー ド・ストア・ユニットはアドレス衝突も実行待ちの書き込みオペレーションも検 出されなかった場合、ロード要求を実行する。ロード・ストア・ユニットは更に データ・パスで構成され、データ・パスはロード及び1又はストア・データをメ モリ・システム及び命令実行ユニットの間で転送する。データ・パスは記憶シス テムより返されたデータの位置合わせをし、斯くしてキャッシュの4ワー ド境界と一致しないデータがメモリ・システムから命令実行ユニットに正しいア ライメントで返されるようにする。 図面の簡単な説明 本発明は添付の特許請求の範囲に具体的に提示されている。本発明の上記の、そ して後述の利点の理解を深めるために、次に図面を参照して説明する。すなわち 、 第1図は本発明が動作するマイクロプロセサ・アーキテクチャ100のブロック 図である。 第2図はロード・ストア・ユニット(LSU)205を含む命令実行ユニット(IEU )107を示す一般的なブロック図である。 第3図はLSUアドレス・パス220を示すブロック図である。 第4図はLSU205に位置するアドレス衝突ブロックを示す概略図である。 第5図はLSUデータ・パス210を示す概略図である。 第6図はキャッシュ線が交差する、位置合わせされていない整数ロードの一例 を示す図である。 第7(a)図〜第7(h)図はLSU205の動作の一例を示す図である。 発明の詳細な説明 第1図のおいて、本発明の好適な実施例に基づいて、一般的に100で表わされる マイクロプロセサ・アーキテクチャが配置されている。システム・アーキテクチ ャ100にはホスト・プロセサ105、キャッシュ制御ユニット及びメモリ(CCU)110 、仮想メモリ・ユニット(VMU)115、入出力サブシステム190、メモリ制御及び インタフェース・ユニツト120、及びインタリーブ・オペレーション用に構成さ れたインタリーブド・メモリ・バンク(160a、160b、160C)(以降、主メモリ1 60と称す)が含まれている。主メモリ160は外部データバス162を介してMCUl20 に接続されている。本発明はマルチプロセサ環境で動作すると予想されるので、 その場合、他のプロセサもメモリバス162に接続される。 ホストプロセサ105は主メモリ160に於いて各アドレス又は記憶場所に格納されて いるソフトウェア命令を実行する。これらのソフトウェア命令はホスト・プロセ サ105にプログラム・カウンタの制御の下にイン・オーダで転送される。しばし ば、命令のうちあるものはホストプロセサ105が一つ又は複数の周辺入出力装置1 35をアクセスすることを必要とする。 MCU120は一つの回路であり、この回路によってデータ及び命令はCCU110(D_キ ャッシュ119とI_キャッシュ118(読み出し専用))、IOU150、及び主メモリ160 の間を転送される(読み出されるか書き込まれる)。MCU120にはスイッチ・ネッ トワーク145が含まれ、それにはスイッチ・アービトレーション・ユニット132、 データ・キャッシュ・インタフェース・ユニット117、命令キャッシュ・インタ フェース回路112、I/Oインタフエース回路155、及びポートとして知られる一つ 又は複数のメモリポート・インタフェース回路148が含まれる。各ポート・イン タフェース 回路148にはポート・アービトレーション・ユニット134が含まれている。 スイツチ・ネツトワーク145はマスタ装置とスレーブ装置間の通信の手段である 。スイッチ・ネットワーク120に対するマスタ装置になり得るのはD-キャッシュ 119とI-キャッシュ118、叉はI/Oコントローラ・ユニット(IOU)150である。ス レーブ装置として機能し得るものは、例えば、メモリ・ポート148叉はIOU150で ある。スイッチ・ネットワーク145の機能はCCU 110(I_キャッシュ118及びD_ キャッシュ119)とIOU150から様々な命令及びデータ要求を受け取ることである 。これらのユニットをバス要求者と呼ぶ。これらの要求を受け取った後、スイッ チ・アービトレーション・ユニット132及びポート・アービトレーション・ユニ ット134は要求を優先度に応じて並べ、適切なメモリポートに渡す(命令アドレ スによる)。ポート148、或いは場合によっては複数のポート、は次に必要なタ イミング信号を生成し、データを外部バス162に送り、あるいはデータを外部バ ス162から受け取る。 命令フェッチ・ユニット(IFU)106及び命令実行ユニット(IEU)107はホスト・ プロセサ105の主要な動作構成要素である。IFU106及びIEU107の機能を直接サポ ートするためにVMU115、CCU110、及びMCU120が配置されている。IFU106の主要な 機能は命令の取り出し、IEU107による実行を待つ命令のバッファリング、そして 、一般的に、次の命令の取り出しに使用される次の仮想アドレスの計算、である 。各命令は命令バス101を介してI_キャッシュ118からIFU106によって同時に取 り出される。命令は「バケット」或いは4個の命令の集合に入れられる。命令集 合の転送は制御バス102を介して供給される制御信号によって、IFU106及びCCU11 0の間で調整される。取り出される命令の仮 想アドレスはIFU制御及びアドレス・バス103を介してIFU106によってVMU115に供 給される。VMU115へのアクセスに関する調停の必要性は、IFU106及びIEU107の両 者ともVMU115を共通の、共有の資源として使用することから生じる。アーキテク チャ100の好適な実施例に於いて、仮想アドレスの物理ページ内のアドレスを定 義する下位ビットはIFU106によって、制御線102を介してCCU 110に直接転送され る。IFU106によって供給される仮想アドレスの仮想化上位ビットはバス103、104 のアドレス部分によってVMU115に供給され、そこで対応する物理ページ・アドレ スに変換される。IFU106にとっては、この物理アドレスは変換要求がVMU115に出 された1/2内部プロセサ・サイクル後、制御線111を介してVMU115からCCU110に直 接転送される。 一方、IFU106によって取り出された命令ストリームは命令ストリーム・バス108 を介してIEU107に供給される。制御信号は制御線109を介してIFU106とIEU107の 間でやり取りされる。 IEU107はデータを双方向データ・バス112を介してD_キャッシュ215に格納し、 またそれから検索する。IEU107によるデータ・アクセスの場合、物理アドレス全 体が制御バス113のアドレス部分によってCCU110に供給される。IEU107はVMU115 を、仮想データ・アドレスを、CCU115への送り出しに適切な物理データ・アドレ スに変換する資源として利用する。IFU106に対するオペレーションとは異なり、 VMU115は対応する物理アドレスをバス104を介してIEU107に返す。 CCU110はホスト・プロセサ105と主メモリ160との間のバッファとして使用される 。一般的に、CCU110は小型の、高速メモリで、ホスト・プロセサ105の近傍に位 置し、最も最近アクサスされたコード又はデータを保持する。CCU110は、適切で あれば物理ア ドレスで定義されたデータ要求が命令及びデータ・キャッシュ118、119から満た されるか否かを決定するという一般的に従来的な高レベルの機能を行なう。命令 キャッシュあるいはデータ・キャッシュ118、119へのアクセスによってアクセス 要求が満たせる場合、CCU110はデータ・バス101、113を通じてデータ転送を調整 し実行する。命令キャッシュ或いはデータ・キャッシュ118、119へのアクセスに よってアクセス要求が満たせない場合、CCU110は対応する物理アドレスをMCU120 に供給する。この場合、物理アドレスの他に、主メモリ160への読み出し又は書 き込みアクセスが必要であるかを識別するために十分な制御情報、各要求のソー ス又は行き先キャッシュ118、119、更に要求されたオペレーションがIFU106又は IEU107によって発行された最終的なデータ要求と関連付けられるための追加の識 別情報がCCU110によってMCU120に供給される。 第2図にIEU107のデータ・パスの代表的な高レベルのブロック図を示す。IEU107 の目的は最小限の時間で最大数の命令を実行することである。IEU107にはレジス タ・ファイル250、ロード/ストア・ユニツト(LSU)205、命令バス(IBUS)225 、一式の機能ユニット260、262、230、イミディエト変位バッファ255、セグメン ト・ベース・ジェネレータ257、及び書き込みバス270が含まれている。LSU205は LSUアドレス・パス220及びLSUデータ・パス210の二つの部分に分かれている。 スーパースカラ制御ブロック(図示せず)はデータ依存性検査を行い、必要な機 能ユニット260、262、及び230が使用可能であるかどうかを検査することによっ て、ある命令が発行可能であるか否かを決定する。一旦スーパースカラ制御ブロ ックが一つの命令を発行するように決定すると、IBUS225は発行される命令が必 要とするデータを検索する(検索はレジスタ・ファイル250)バ イパス・データ280、282、或いはイミディエト・データ258、259から行われる) 。IBUS225は複数のマルチプレクサによって構成され、これらのマルチプレクサ が、どのデータが機能ユニット260、262、230に転送されるかを選択する。IBUS2 25はAバスとBバスと呼ばれる一対のバスにデータの転送を行なう。選択された データは、諸機能ユニット260、262、230のうちどの機能ユニットがその命令に よって使用されるか、或いは現在実行中の命令のオペレーションによって必要と されているか、を決定することによって、AバスかBバスのどちらかのバスに入 れられる。 ほとんどの命令の入力及び出力は複数のレジスタ・ファイルのうち一つのレジス タ・ファイルから送られる、つまり格納されている。好適な実施例では、各レジ スタ・ファイル250(例えば、別個の整数、浮動小数点、或いはブール・レジス タ・ファイル)は32個の実数エントリ254及び8個の一時バッファ252のグループ を有する。一つの命令が完了すると(「完了」とはオペレーションが終了し、オ ペランドはその行き先レジスタに書き込める状態にあることをいう)、その結果 は一時バッファ252中の事前に割り当てられた場所に格納される。これらの結果 は後に実レジスタ254中の適切な場所に移される。このような結果の一時バッフ ァ252から実レジスタ254への移動は「退避」(retirement)と呼ばれる。一度に 複数の命令が退避できる。退避により、コンピュータのプログラムカウンタを含 めて、マシンの「公式な状態」の更新が行なわれる。 命令は「バケット」と呼ばれる4個のグループ毎に命令デコードFIFO(first-in -first-out)先入れ先出し方式)レジスタ・スタック記憶装置(図示せず)(本 明細書では命令ウィンドウと呼ぶ)を介してIFU106からIEU107へ送られる。バケ ツトはロード、ストア、及び2個の実行ユニットで構成される4個のユニットに 分 解される。バケットがこれら4個のユニットに分解された理由はシステム100は ロード、ストア、実行の各オペレーション又はそれら全ての組み合わせを実行で きる命令を使用して動作するからである。従って、本発明はこれら三つの場合の 全てを処理できるバケットを供給するものである。 IEU107は一度に4個のバケットの命令までデコードしスケジュールできる。命令 ウィンドウは全部で16個の命令を4個のバケツトに格納する。IEU107は命令ウィ ンドウを検査し、各サイクルごとにIEU107は命令ウィンドウから最大数の命令を 発行しようとする。一旦1個のバケット中の全ての命令が実行され、それらの結 果がプロセサのレジスタ・ファイル250に格納されると、そのバケットは命令ウ ィンドウからフラッシュされ、次に新しいバケットが命令ウィンドウに格納され る。 一旦その命令が発行されると、レジスタ・ファイル250中の諸レジスタがアクセ ス可能となる。一時レジスタ252は先行の命令によって生成されたデータに対し てデータ依存性を持っていた命令が実行されるとアクセスされる。レジスタ・フ ァイル250からのデータはデータ線254を介してIBUS225に転送される。 DAFU230はLSU205によって使用される32ビットのリニア・アドレスを計算する。D AFU230では多数の異なったアドレス指定モードがサポートされている。2サイク ルを必要とするデータが4ワード境界を越える場合、そのデータの最初と最後の アドレスはDAFU230によって計算される。アドレスを形成するために4個までの コンポーネントが加算される。すなわち、セグメント・ベース、ベース・レジス タ、スケールド・インデックス・レジスタ、及び変位値、の4個のコンポーネン トである。セグメント・ベースには目的のメモリ・セグメントの開始アドレスが 含まれている。 ベース及びインデックス・レジスタはレジスタ・ファイル250中のどの32ビット レジスタであっても構わない。インデックス・レジスタはそれを1、2、4、又 は8で乗算することによってスケールされる。変位値は命令中に存在する定数値 (イミディエート値)である。これらのフィールドのうちどのフィールドも省略 可能であり、斯くしてアドレス演算に於ける最大限の自由度が得られる。 セグメント・ベースはセグメント・レジスタ・ブロック257から得られる。セグ メント・ベース・ジェネレータ257はデータが如何にしてメモリ中で分割されて いるかを示す一つの値を生成し、この値をデータ線266を介してDAFU230に転送す る。変位はイミディエート変位バッファ255から得られる。イミディエート変位 バッファ255はイミディエート・データを線265を介してDAFU230に転送し、また それぞれデータ線258及び259を介してIBUS225に転送する。DAFU230及びVMU115は LSU205に全てのロード及び/叉はストア要求を供給する。LSU205はこれらの要求 を処理し、後に全ての要求されたデータを書き込みバス270に返す。書き込みバ ス270はマルチプレクサの集合で成り、マルチプレクサは優先度スキームの基づ いてどのデータがレジスタ・ファイル250にラッチするかを選択する(例えば、L SU205によって供給されるデータ又は機能ユニット260或いは262によって供給さ れるデータ)。そのデータは線275、276を介して書き込みバス270からレジスタ ・ファイル250に転送される。ロード及び/叉はストアからのデータは常に最高の 優先度を与えられる。時折、2個の命令が連続して発行され、それらが相互に依 存している場合、IEU107はそのデータをレジスタ・ファイル250に格納すること をバイパスし、それを直ちにIBUS225にラッチしようとする。これはデータ線280 、281を介して達成できる。従って、データを待つ資源は、そのデータがレジス タ・ファイル250の中を通過するまで待ってサイクルを浪費しなくてすむ。 データ線275、276からのデータも又、一つの命令が実行オペレーション及びスト ア・オペレーションを伴う場合、LSUデータ・パス210に直接供給される。ロード 及び実行オペレーションが行なわれた後、ストアを行うためにデータはLSUデー タ・パス210に直接供給できる。斯くしてストア・データを得るために一時レジ スタ・ファイル252をアクセスする手間が省け、従って命令の実行時間の増大に つながる。 LSU205の主な目的は可能な限りCCU110にロード要求をアウト・オブ・オーダで行 い、ロード・データをなるべく速くIEU107に返すことである。ロード・オペレー ションはアドレス衝突がなく、書き込み実行待ちが存在しない時のみ実行できる 。アドレス衝突が発生するのは、古い命令がまだ書き込み中の記憶場所に於いて 読み出しが要求された時である。書き込み実行待ちとは、古い命令が格納オペレ ーションを要求したがストア・アドレス計算がまだ行なわれていないことである 。LSU205はデータ・パス210とアドレス・パス220という二つの部分に分割されて いる。アドレス・パス220はDAFU230、VMU232、及びCCU110とインタフェースし、 データ・パス210は書き込みバス270、CCU110、DAFU230、及びIBUS225とインタフ ェースする。LSUの三つの主要なタスクは(1)アウト・オブ・オーダのキャッシュ 要求の処理、(2)アドレス衝突の検出、及び(3)データの位置合わせである。 各命令バケットは同一のアドレスに対するロード及びストア(その間に他のオペ レーションが含まれることもある)、ロードのみ、ストアのみ含むことができる 。或いはロードもストアも含まないこともある。従って、LSU205は最大4個のロ ードと最大4個のストアから選択することができる。本発明の好適な実施例で使 用される命令セットはCISC型命令セットで、それによって次のよう な複雑なオペレーションが可能となる。 a) R1<-R1+[R2+(R3*2)+3] b) [R2]<-[R2]OR R4 但し、[x]はアドレスxに存在するメモリ・オペランドである。好適な実施例に 於ける命令デコード・ユニット(図示せず)はこれらのCISC型命令を次のように RISC型シーケンスに分解する。 a) LOAD[R2+(R3*2)+3]->Temp Register Execute R1+Temp ->R1 b) LOAD[R2]->Temp Register Execute Temp OR R4->Temp Register STORE Temp Register to addrcss[R2] このどちらの場合でも、DAFU230はメモリ・オペランドのアドレスを計算するが 、ロード及びストアは同じアドレスを共有しているので1個の命令バケット当た り一つのアドレス計算だけが必要である。CISC型命令をRISC型命令にデコーディ ングすることについての説明に関しては1992年3月31日出願の米国特許出願番号0 7/857,599(代理人整理香号SP032)「CISC型からRISC型命令への変換のためのア ライメント並びにデコーディング」(CISC to RISC Instruction Translation A lignment and Decoding)を参照されたい。当該出願の開示を参照することによ って本出願に含まれているものとする。第3図にLSU205のアドレス・パス220の 詳細なブロック図を示す。ロード命令は命令ウインドウから発行され、IEU107に よってアウト・オブ・オーダで実行されるが、ストアは常にイン・オーダで発行 される。ロード及び/叉はストア用のアドレスは、全てのオペランドが有効で且 つDAFU230がアドレス計算に使用可能になりしだい計算される。DAFU230から物理 アドレスを受け取る前にLSU205はキャッシュ要求を行うことができるが、次のク ロックサイクルまでに物理アドレスがDAFU230からもVMU115からも来ない場合、 キャッシュ要求は取り消される。その場合、キャッシュ要求は後に再発行されね ばならない。 各命令バケット当たり1個のアドレスのみが必要で、そのアドレスはロード・ア ドレスとストア・アドレスの両方として機能する。各命令バケット当たり、2個 の32ビット・アドレスはアドレス・バッファ310〜313のうち一つに格納される。 すなわち、アクセスの最初のバイトが一つのバッファに格納され、アクセスの最 後のバイトが別のバッファに格納される。下位12ビットがDAFU130で準備される と、これらのビットは一時バッファ305にラッチされる。上位20ビットがVMU115 で準備されると、次のサイクルで全ての32ビットは適切なアドレス・バッファに ラッチされる(すなわち、Address1叉はAddrcss2)。アドレス計算は命令の順 序で行なわれず、レジスタ依存性が解消した時行なわれる。アドレス変換の後、 有効ビット(図示せず)が命令のアドレス・バッファ310〜313に設定され、アド レスが有効であることを示す。両方のアドレスは二つの理由で保持される。すな わち、アドレス衝突の検出とページ交差用のキャッシュ要求である。 IFU106によって使用されるアドレスが仮想アドレスであるのに対し、LSU205によ って使用されるアドレスは物理アドレスである。IFU106は、CCU110とVMU115間の 調整によって物理アドレスが生成されるのに依存しつつ、仮想アドレスに対して 動作するのに対し、IEU107ではLSU205が物理アドレス・モードで直接動作するこ とが必要である。この条件が必要である理由はオーバラップする物理アドレスの データ・ロード及びストア・オペレ ーションを伴う、アウト・オブ・オーダで実行される命令が存在する場合、デー タの保全を保証するためである。データ保全を保証するために、データがストア 命令によって供給された場合、LSU205はストア命令がIEU107によって退避される までそのデータをバッファリングする。従って、LSU205によってバッファリング されたストア・データはLSU205にのみ一意的に存在することがある。同一の物理 アドレスを実行済みではあるが未だ退避されていないストア命令として参照する 複数のロード命令は、ストア命令が実際に退避されるまで遅らされる。その時点 で、ストア・データはLSU205によってCCU110に転送可能となり、次に、CCUのデ ータ・ロード・オペレーションの実行によって直ちに再びロードされる。 上述の如く、DAFU230によるアドレス計算は1クロック・サイクルで起こり、VMU 132によるアドレス変換は次のクロック・サイクルで起こる。アドレスがロード 用のアドレスであるならば、キャッシュ要求が行われる。一方、アドレスがスト ア用のアドレスであるならば、格納を行う前にLSU205は退避信号が送られて来る のを待つ。ロード要求はCCU110に対してアドレス計算の最初のサイクルでも行な える。この時点で該アドレスの下位12ビットがCCU110に送られ、上位20ビット( ページ番号を表わす)はアドレス変換の後、次のサイクルでCCU110に送られる。 ロード・ストア・アドレス・パス220が使用可能な場合、線330を介してイミディ エト要求をキャッシュ110に対して行なうことができる。現在、ロード・ストア ・アドレス・パス220には実行待ちのロード及び/又はストア・アドレスは存在し ないので、アドレス衝突の可能性も書き込み実行待ちの可能性も全く存在しない 。従って、直ちにキャッシュ110に対して要求を行なえる。 ブロック340には複数のマルチプレクサが含まれているが、このブロックはアド レス・バッファ310〜313からキャッシュ要求用のアドレスを選択するために使用 される。 LSU205はキャッシュ110に対して要求を行なうためにアドレス・バッファ310-313 (即ち、予約ステーション)を使用する。4個のアドレス・バッファ310〜313( 予約ステーションとも呼ばれる)は中央命令ウィンドウ(図示せず)に含まれる 4個のバケットに対応する。IEU107がデコード・ユニット(図示せず)から新し いバケットを要求すると、アドレス・バッファ310〜313のうち一つが予約される 。アドレス・バッファ310〜313は命令番号に従って割り当てられる。最も若い( 最新の)命令を示すための履歴ポインタが更新される。この時点に於いて、命令 がロード、ストア、その両方を伴うものであるか、あるいはそのどちらも伴わな いものであるかが判明する。また、ロード及び/又はストアオペレーションで使 用されるデータのサイズも判明する。対応する命令がIEU107によって退避された 時に、アドレス・バッファ310〜313は割り当て解除される。割り当て解除の後、 新しい命令バケットがデコードユニット(図示せず)から受け取られる。ロード ・バイパス及びアウト・オブ・オーダ・ロード実行を使用するためには、ストア に対するロード依存性(アドレス衝突)を検出する必要がある。ロード依存性は アドレス衝突または実行待ちのストア・アドレスのよって示される。ロード依存 性が発生するのは、古い命令がストア・オペレーションを要求した記憶場所と同 じ記憶場所でロード・オペレーションが要求された時である。アドレス衝突の検 出には、ロードの最初のアドレスが各先行ストアの2個のアドレス(最初と最後 )と比較される必要がある。アドレスの最後のバイトとのこのような比較が必要 なのは、ストアが4ワード・ページ境界を越えたり、位置合わせがなされていな かったりするからである。アドレス・ビットのマスキングは偽の 依存性検出を最低限に抑えるためにデータのサイズに応じて行なわれる。ロード ・データが4ワード(64ビット)境界からはみだすと、好適な実施例ではそのロ ード・データにはロード依存性があると仮定される。その理由は、ロードの第2 アドレスを各ストアの二つのアドレスと比較するコンパレータが存在しないから である。一つの衝突が検出されると、ロード・オペレーションはその衝突してい るストア・オペレーションがCCU110に送られるまで待たなければならない。実行 待ちのストア・アドレスとはストアのアドレスが未だ有効でないということを意 味する。従って、そのアドレスが判明するまでロード依存性の存在が仮定される のである。 第4図に、LSU205によって使用されるアドレス衝突ブロック400の概略図を示す 。アドレス比較論理による二つのアドレスの比較は最下位ビットのビット0〜4が マスクされた後行なわれる。マスキングの後、アドレスが全く一致するならば、 これら二つのアドレスの間に衝突が存在することになる。各比較ごとに、二つの オペレーションの内最大のオペランドがマスキング制御のために使用される。各 アドレスから、0〜4個の最下位ビットがマスクされる。その際、回路400はアド レス・バッファ410〜413の各バッファごとに1回、つまり合計4回複写される( 第4図にアドレス・バッファ310のアドレス衝突検出ブロックを示す)。 各ロードの最初のアドレス405、406がアドレス407〜418のうち1対おきに比較さ れる。2個の比較の結果とその有効ビット419〜424間でANDがとられ、その後全 部でORがとられ、その結果アドレス・マッチ430a,430b,430cが生成される。ア ドレス・マッチ430は次に命令番号比較425〜427及びストア・ビット431〜433とA NDがとられ、その結果衝突チェック450a、450b、450cが生成される。命令番号比 較425〜427は二つの命令間の比較的 新しさを示す。例えば、命令番号比較425はアドレス・バッファ310中の最初の命 令と、アドレス・バッファ311中の最後の命令との間の比較的新しさを示す。第 2命令が第1命令よりも古ければ、衝突は存在しない。これら3個の衝突検査は ORがとられて、検査を受けている特定のロードのアドレス衝突信号460を生成す る。 アドレス衝突の検出に於いては、各ロードの開始(第1)アドレスが各ストアの 第1及び第2アドレスと比較される。一つのロード又はストア・オペレーション は1〜10バイトまでのどこかをアクセスするので、衝突が検出されることを保証 するためにそれらのアドレスのうち幾つかがマスクされる。このようなマスキン グは信号470〜475で行なわれる。二つのアドレスが相互に比較される前に、最下 位ビットのうちビット0、2、3、又は4がマスクされる。マスクされたアドレ スが全く一致する場合(等しい比較)、アドレス衝突の可能性がある。マスクさ れるビットの数(0、2、3、4)はアドレスが比較されているその二つのアド レスのオペランドのサイズ、そして第1アドレスの最下位の2ビットによって異 なる。第1アドレスの最下位2ビットが使用されるのは、間違って検出される衝 突の数を制限するためである。マスキングに於いて、最大のオペランド・サイズ は次のように使用される。 更に、ロード・オペレーションが4ワード境界を越えるたびに、アドレス衝突が 発生していることが仮定される。その理由は、ロードの最初のアドレスだけがス トア・アドレスと比較されるので、アドレス衝突が検出されないことがあるから である。ハードウェア中で使用されるコンパレータの数を二倍に増やすことによ り、この制約は削除できる。ストア・アドレスが4ワード境界を越えることがあ れば、アドレス衝突は検出される。 マスキングの必要性を次の幾つかの例で示す。(下記の全ての数字は二進数であ る)。ロードのアドレス2は衝突検査の目的で使用されないので、アドレス2は 省略する。 例1: ロード・アドレス1001がマスクなしに1000及び1011と比較された場合、ストアが バイト1000,1001、1010、及び1011に書き込んだとしても衝突は検出されない。 2個のLSBがマスクされていれば、結果は次のようになる。 例2: 3個のMSBがマスクされていれば、下記のアドレスが生成され、アドレス衝突が 検出される。 2個のLSBだけがマスクされているならば、下記のアドレスが生成され、アドレ ス衝突は検出されない。 前述の如く、LSU205はキャッシュ要求を必要とする最大4個のロード命令と最大 4個のストア命令のウィンドウから選択を行なうことができる。これらのロード 及びストアはCCU110に対して互いに競合し、競合するロード及びストア間の選択 は下記の如く行なわれる。 ストア命令は、単に他のロード及びストアだけではなく、全ての命令に対してプ ログラム順序で行なわれなければならない。ストア要求はストア命令を退避する 信号がIEU107から送られた段階でCCU110に発行される。この信号は、全ての先行 命令が終了し、それらの命令では例外も、誤って予測された分岐も無かったこと を知らせる。ストア命令をこの信号よりも早く行なうことは不可能である。その 理由は、ストアはマシンの状態を非可逆的に変更するので、例外も分岐も発生し なかったことを確認することが重要であるからである。データ・キャッシュ119 の使用の目的では ストアはロードに優先する。その理由は、ストアの遅延はバケットの退避の遅延 をもたらし、従って命令デコード・ユニット(図示せず)からの次のデコード済 みバケットの受理を遅らせるからである。 ロードが先行ストアに依存しない限り、ほとんどのロード命令はアウト・オブ・ オーダで発行できる。これの例外は、メモリ・マップされたI/Oからの読み出し のような、副作用を持つロードである。本発明の好適な実施例ではメモリ・マッ プ入出力(I/O)サブシステムが使用される。ある種のI/Oデバイスは読み出しに よってアクセスされるとその状態が変化する。例えば、ある種のFIFOバッファは 次のデータ項目に順香を付けて、その結果ある種のデバイス状態レジスタは自動 的にクリアされる。このようなシステムに於いては、ロード・バイパスは危険な オペレーションである。誤って予測された分岐、或いは例外のために、バイパス されたロードが誤って発行されることがある。そのようにバイパスされたロード がシステム状態を不正に変更するような事態が生じてはならない。 この問題を解決する方法はこれらの要求がイン・オーダで行なわれるようにロー ド/ストア・ユニットを構成することである。ロード/ストア・ユニットでは、キ ャッシュ要求で要求されたデータがキャッシュ可能であるか否かにかかわらずキ ャッシュ110に通知を行なう機構が用意されている。この機構によって、プロセ サはこのデータがライト・スルーである、つまりキャッシュ可能である、とキャ ッシュ110に通知することができ、また直ちにメモリはライト・スルーを行なう べきであると通知する。システムの状態を変更する外部読みだしアクセスはこれ らのキャッシュ不能アクセスのサブセットであるが、上記の問題は、このデータ はキャッシュ不可能であるとのキャッシュ110への通知に関連して イン・オーダの要求を行なうことによって解決される。従って、ロードバイパス を完全に回避するかわりに、プロセサはキャッシュ不可能なロードのバイパスを 防止できる。このようにして、ほとんどのロード・オペレーションが、まれに発 生するキャッシュ不可能なロードでの不正なオペレーションを生成することなく 、バイパスを利用できるようになる。このような機構はまたメモリ変更以前に例 外が発生しないことを保証するためにも必要である。一つのロードが一つのスト アに対して依存性を持たない場合、「ストアのロード・バイパス」が発生する。 各ロードはページ・キャッシュ使用不可(page-cache-disable)及びページ・ラ イト・スルー(pagc-write-through)という2個のビットと対応している。これ らのビットはVMU115又はIEU107から得られるビットである。 ストア・データは二ケ所のうちの一つから生成される。第1に、それは64ビット 整数ストア中に整数データ・バス上でLSU205に直接発行できる。第2の方法は整 数及び浮動小数点機能ユニットによる結果を監視(スヌーピング)することによ って行なわれる。これは通常の「実行後格納」シーケンスをサポートするために 行なわれる。このシーケンスでは一つの命令の実行の結果はその命令のストア・ データである。そうすることによって、”[R2]<[R2]OR R4”のようなCISC型命令 の結果が、その命令が明示的にLSU205に発行されなくても格納されるようになる 。 LSU205はサイクルごとに一つの要求だけをCCU110に対して行なうことができ、そ の場合ストア・オペレーションが優先される。書き込み制御がLSU205に対し、こ の命令は退避可能であると通知すると直ちにストア・オペレーションはCCU110に 送信される。次の優先度はアドレス・バッファ310〜313に有効なアドレスを 持ち、アドレス衝突も実行待ちの書き込みも持たない、最も古いロード・オペレ ーションに与えられる。命令間の比較的な新しさはバッファの位置とバッファ・ ポインタの値で決定される。最後に、DAFU230から送信された新しいロードが優 先度を持つ。この最後の場合、アドレス衝突及び実行待ち書き込みは要求が行な われるまで検査されず、そして必要ならばロード要求は取り消される。 時折、キャッシュ・ミスが起こる。ストアの場合、CCU110はこのような事態を処 理し、その結果LSU205はキャッシュ・ミスの影響を全然受けずに済む。ロードの 場合、LSU205はキャッシュ・ミスについて通知を受け、データが返される前に遅 延が起こる。LSU205は次にキャッシュ・ミスの発生をIEU107に通知し、その結果 このデータを待っている命令は取り消される。 目的のデータがキャッシュ・ライン境界を越えると、ロード・オペレーションに 対して2個叉は3個のキャッシュ・アクセスが必要になります。これらの要求は 連続して行なわれ、1サイクル当たり一つの要求が行なわれる。好適な実施例に 於いて、一つのキャッシュ・ラインの幅は8バイトで、000で終了するアドレス に位置合わせされている。3個のキャッシュ要求が必要とされるのは111で終了 するアドレスで始まる80ビット・データの場合だけである。このデータがデータ ・キャッシュ119から返される場合、ロード・アライナ550(第5図を参照して下 記に説明する)が配置され、このデータのシフトとラッチが行なわれる。 ほとんどのロード/ストア・ユニットはデータが行き先レジスタに入るようにそ のデータをゼロまたはサインで拡張するが、本発明の好適な実施例では、行き先 レジスタの初期値が保持され、その一部のみが変更される。勿論、これは8又は 16ビット長の整数 ロード・データの場合のみ意味がある。レジスタの初期の内容はアドレス計算の 時点でLSU 205に送られ、次にデータ・キャッシュ119からのロード・データは初 期値データとマージされる。 第5図にLSU整数データ・パス210の概略図を示す。LSUデータ・パス210はロード 及び/叉はストア・データをCCU110及びIEU107間で転送する。ロード・オペレー ション中に、データは線290を介してデータ・キャッシュ119からLSUデータ・パ ス210に入り、ストア・オペレーション中には線275、276、277を介してIEU107か ら入る。データ線275及び276は32ビット・データを書き込みバス270を介して機 能ユニット260及び262からLSUデータ・パス210に供給し、線282は有効アドレス 叉ははマージされたデータを供給する。有効データがLSUデータ・パス210へ供給 されるのは一つの命令の結果が、そのアドレス・ロケーションに存在するデータ ではなく、アドレスそのものである場合である。ストア・データ線516は64ビッ ト・データをLSUデータ・パス210に供給する。データはデータ線290または292を 介してデータ・キャッシュ119又はIEU107のいずれかにそれぞれ返される。 データ・バッファ520〜526は、データ・キャッシュ119への或いはデータ・キャ ッシュ119からのデータ転送中、ロード及び/叉はストア・データを保持するため に配置されている。各データ・バッファ520〜526及びアドレス・バッファ310〜3 13の間に1対1の対応が存在する(そしてこれらのアドレス・バッファ及び4個 の命令バケットとの間にも1対1の対応が存在する)。各アドレス・バッファ31 0〜313にはLSUデータ・パス210中に2個の対応するデータ・バッファが存在する 。すなわち、整数ロード及び整数ストア・データ(8バイト)520〜526に対して 一つのデータ・バッファと、浮動小数点ロード及びストアのデータ(10バイト) 540〜546に対して一つのデータ・バッファである。本発明に於いては、浮動 小数点演算用に一つの別個のLSUデータ・パスが存在する。浮動小数点データ・ バッファ540〜546の動作は整数データ・パスに関して説明された動作と同一であ る。一つの命令は整数命令或いは浮動小数点命令のいずれかであるので、この二 つのユニットは物理的に接続されていなくても構わない。以下に、整数データ・ バッファ520〜526の動作のみを詳しく説明する。 制御線581及び587はデータ・フローをそれぞれマルチプレクサ560及び565を介し て制御するために配置されている。又、制御線582及び586はデータ・バッファ52 0、522、524、及び526へのデータ・フロー、そしてデータ・バッファ520、522、 524、及び526からのデータ・フローを制御するために配置されている。 ロード・オペレーションに於いては、データは線290を介してデータ・キャッシ ュ119からLSUデータ・パス210に入る。ロード・データはアライン・ブロック550 に入り、アライン・ブロックはデータの位置合わせを行ない(下記の説明を参照 されたい)、位置合わせされたロード・データをマルチプレクサ530〜536に転送 する。位置合わせされたロード・データは次に、どの命令がデータを要求したか により、データ・バッファ520〜526の一つにラッチされる。ストア・オペレーシ ョン中、ストア・データはデータ線275、276、277を介してIEU107からLSUデータ ・パス210へ入り、その後、データ・バッファ520〜526のうち適切なデータ・バ ッファにラッチされる。 ロード及び/叉はストア・データのうちのどちらかがデータ・バッファ520〜526 にラッチされると、そのデータは線290を介してデータ・キャッシュ119へ、或い は線292を介してIEUへのいずれかに送られる。4個のデータ・バッファ520〜526 はデータをマルチプレクサ560、565に供給し、次にこれらのマルチプレクサは LSUデータ・パス210から転送されるべき適切なデータを選択する。 しばしば、ストアを含む命令の結果は主メモリ260に格納されなければならない 。従って、命令の実行の後、その結果はデータ線275、276を介してLSUデータ・ パス210に直接書き込まれる(最初に結果をレジスタ・ファイル250に格納するの ではなしに)。LSUデータ・パス210は命令の退避信号を受け取るまでデータを適 切なデータ・バッファ520〜526に保持する。 定期的に、一つの特定な命令は一つの行き先レジスタ全体に格納を行なわないよ うになっている。この場合、「マージ・データ」がデータ線282を介してLSUデー タ・パス210に供給される。例えば、一つの命令が8ビットだけを行き先レジス タに格納したいが、残りの24ビットをレジスタに保存したい場合、マージ・オぺ レーションが行なわれる。従って、データ線282は行き先レジスタの初期値(す なわち、マージ・データ)をLSUデータ・パス210に供給する。マージ・データ( すなわち、行き先レジスタの内容)は適切なデータ・バッファ520-526にラツチ される。次に、新しい(ロード)データが線290(a)を介してキャッシュから戻さ れ、アライン・ブロック550に入る。アライン・ブロック550はデータの位置合わ せを行ない、それをマルチプレクサ530〜536に供給する。ロード・データは次に 、マージ・データを保持している同じデータ・バッファ520〜526にラッチされる 。一旦全てのデータがアセンブルされると、それは適宜な記憶場所(すなわち、 データ・キャッシュ119又はレジスタ・ファイル250)に転送可能となる。 従来のロード・ストア・ユニットでは普通、アドレスが特定の境界に位置合わせ されなければならない。例えば、32ビット・デー タ・アクセスでは000で終わるアドレスがなければならない。しかしながら、好 適な実施例のコンピュータ・アーキテクチャによって8、16、32、64、叉は80ビ ット・データの位置合わせされていないアクセスが可能になる。位置合わせされ ていないアドレスを有することは次のような影響を及ぼす。つまり、(1)ストア に対するロード依存性検出のためにさらに別のハードウエアが必要である。(2) データがページ境界を越えるとアドレス変換が2回必要になる。(3)1回のロー ドに対して複数のキャッシュ・アクセスが必要になる。 CCU110によって返されたロード・データの長さは8バイトであり、それはデータ ・バッファ520〜526中の適切な位置に位置合せして格納される必要がある。時に は、完全なロードができあがるまでに2叉は3のデータ集合が返されねばならな い(例えば、二つ以上のキャッシュ・アクセスが必要な時)。更に、これらのデ ータ集合がアウト・オブ・オーダで返される場合があるので、特別な措置が必要 である。 整数データの位置合わせは8個の8入力マルチプレクサ(8ビット幅)を使用し て処理される。各マルチプレクサはデータ要求の1バイトに対応する。CCU110か らロードされた8バイトのデータのうちどのデータが適切なデータ・バッファ52 0〜526にラツチされるべきかを決定するために8ビットの選択線が使用される。 更に、データ・バッファ520〜526はどのバイトが上書きされるべきかを制御する ためにバイト・イネーブルになる。 第6図にキャッシュ線交差を持つ位置合わせされていない整数ロードの1例を示 す。この例では、アドレスXXXXXXX5から4バイトのロードが要求されて いるが、このロード要求はキャッシュ線からはみだすので、その結果2個のロー ド要求が必要とされる。最初のキャッシュ要求がデータを返した後、データはロ ード・ア ライナ550に転送される。ロード・アライナ550は最後の3バイトをバイト0まで シフトし、その後、最後の3バイトは適切なデータ・バッファ520〜526にラッチ される。データ・バッファの最後のバイトはストアによって上書きされない。一 旦第2のキャッシュ要求のデータが返されると、図示されているようにキャッシ ュ線の最初のバイトがデータ・バッファの最後のバイトにラッチされる。更に、 この例ではキャッシュ線はイン・オーダで返されるが、それはどの順序で返され ても構わない。 浮動小数点データ位置合わせは整数位置合わせと同じ働きをするが、浮動小数点 データ位置合わせの場合、10個の8入力マルチプレクサが使用される。 LSU205ではロード・フォワーディングはサポートされていない。ロードがストア に依存する場合、そのロードはロード要求を行なう前に、ストア・データがキャ ッシュに書き込まれるまで待たなければならない。しかし、本発明の設計では、 本質的にロード・フォワーディング機構の実現を阻止するような制約はない。当 業者にとって、ロード・フォワーディングを実現するために必要なハードウェア 変更を行なうことは容易であろう。 LSU205の好適な実施例では多重処理環境がサポートされている。各命令はロード 及び/又はストア以外に、ロック或いはアンロック・コマンドを含むことができ る。これらの信号はキャッシュに送られ、キャッシュはデータをロックし、メモ リ及び入出力サブシステムに同じことをするように通知を送る。ロック又はアン ロック・コマンドが命令ウィンドウに存在する場合、ロードはそれらの命令の順 序と同じ順序で行なわれなければならない。すなわち、後続のロードは最初にロ ック/アンロック・コマンドを伴うロードを先ず行なわないと実行できない。 LSU205のオペレーション例 表AにLSU205のオペレーションを示すサンプル・プログラムを示す。プログラム はインテル486(Intel 486)の表記法で記述されている。3個のレジスタが使用 され、それらはeax、ebx、そしてecxとラベルされている。ロードされ、ロード 及び/又はストアされるデータは32ビット幅のデータであると仮定される。ブラ ケットにアドレス・ロケーションを示す。 このコードの最初の行では、アドレスecxに格納されたデータがebxに移される。 従って、この命令は一つのロード・オペレーションである。第2の命令ではレジ スタebxにある値が減少され、この命令ではロードもストアも行なわれない。第 3の命令はアドレスeaxに格納されたデータ及びデータebxに対して論理和をとり 、結果を[eax]に格納する。従って、このオペレーションではロードとストアの 両方が行なわれる。最後に第4命令ではアドレスeax+3に格納された16ビットの データがebxに移動される。従って、この命令ではロード・オペレーションが行 なわれる。 このコードが実行される前に、下記の値(全て16進法で表記)がレジスタ及び メモリに含まれていると仮定する。 表Aの命令の実行の結果を表Cに示す。 次に、表Aの命令の実行の結果の詳細を説明する。 第7(a)図から第7(h)図において、LSU205の代表的な例を示す。各図は一つのサイ クルを表わす(例えば、第7(a)はサイクル1を表わし、第7(b)図はサイクル2を 表わす)。4個のアドレス・バッファ310〜313、及びロード701、ストア702、及 び有効ビット717が図示されている。更に、衝突ビット710、実行待ちビット715 、及び要求されたデータのサイズ指定705が図示されている。アドレス0100から0 107及びアドレス1200から1207のカレント・メモリ内容は参照香号780として示さ れている。ブロック730にカレント・キャッシュ要求を示す。ブロック740はデー タが(そのようなデータが存在するならば)CCU110から最近返されたことを示す 。ブロツク760はVMU115から返されているアドレスを示し、ブロック770はDAFU23 0から返されているアドレスを示す。 ロード及びストア・ビットはイン・オーダで設定されるが、各アドレスはLSU205 にアウト・オブ・オーダで供給されても構わない。ブロック750に、返されたデ ータが如何にして物理的に位置合わせされるかを示す。 第7(a)図に於いて、最初の命令は「mov ebx,[ecx]」である。最初に、ecxに格 納されているデータはLSUアドレス・パス220に転送されなければならない。ecx に格納されているアドレス、つまり1201はDAFU230から一時アドレス・バッファ3 05に転送されるが、このアドレス全体は必要でない。最初の12ビットと最下位の 3ビットが一時バッファ305に転送される。その理由は、上位20ビットはDAFU230 からVMU115に転送されるからである。movオペレーションにはロードが伴うので 、バケット0に於けるロード・ビットは1に設定される。要求されたデータは32 ビットである(ブロック705の011によって示されている)。 これはLSU205中のアドレスの第1集合だから、ブロック730に示すように、アド レス情報は識別子(id)と共に直ちにCCU110に送られる。LSU205は識別子に基づい て、返されたデータがどの命令と対応しているかを決定する。LSU205に転送され るためにアドレスがVMU115によって変換されるのをLSU205が待っている間、一時 レジスタ305が使用される。 第2命令の「dec ebx」は アドレス・バッファ・キューに入れられる。decオペ レーションにはロードもストアも伴わないので、アドレス・バッファ311に対応 するロード・ビット701とストア・ビット702の両方が0に設定される。ロードも ストアも必要でないので、この命令ではアドレス計算は必要でない。 第7(b)図に於いて、ecxに格納されたアドレスの第1バイトはレ ジスタ・アドレス1(address1)に入れられ、そのアドレスの最後のバイトはア ドレス2(addrcss2)に入れられる。これらのアドレスは両方とも勿論アドレス ・バッファ310中に存在する。両方のレジスタ(addressl 及び address2)は有 効なアドレスを含んでいるので、両方の有効ビットが設定される。address1及び address2が異なった時点でアドレス・バッファ310〜313にラッチされることも可 能である。これが発生するのは、VMU115からの変換を2回必要とするページ・ク ロシングが起こった時である。 第3の命令は「or[eax],ebx」である。第3命令に関する(IEU107から送られ る)情報はアドレス・バッファ312に対応する適切なブロックに入れられている 。OR命令はロード及びストア・オペレーションを必要とするので、両方のビット とも適宜に1に設定されている。要求されたデータの長さは32ビットで、ブロッ ク705に示されている。更に、第3命令に対応するロード/ストアのアドレスはブ ロック770に示すようにDAFU230から供給される。そして、ブロック730に示すよ うに、このデータに対してキャッシュ要求が行なわれる。 更に、第2サイクル中に、第1命令用に要求されたデータはキャッシュから検索 され、データ・レジスタ520に格納されている。しかし、ブロック730に示される 、返されたデータは位置合わせされていないデータである。CCU120はアドレス12 00で始まるデータのブロックを返したが、命令が要求したデータは1201で始まる 32ビットのデータである。従って、ブロック750に示すように、データは位置合 わせされなければならない。返されたデータはLD-ALIGNを00000010に設定するこ とによって2ビット分シフトされ、最初の32ビットのデータはBYTE-SELによって 選択される。第7(c)図に於いて、ブロック770に示すように、次のアドレスがDAF U230によってLSU205に供給される。第3命令に対応 するアドレスはアドレス・バッファ312にラッチされる。有効ビット717の両方の ビットが設定される。第1命令がそのオペレーションを完了したので(すなわち 、データがCCU110から返され、IEU107に送られたので)、今や有効ビットがリセ ットされている。(バケット番号が4にリセットされているのは例示の目的のた めである。好適な実施例に於いては、ポインタが命令の比較的新しさを管理する ために使用される)。第3命令ではeaxに格納されたアドレスの取り出しが必要 である。アドレスが一旦LSU205に入ると、キャッシュ要求が実行可能となる。 更に、第4命令に関する情報、すなわち、その命令はロードで要求されているデ ータの幅は16ビットである(010によって示されている)が、アドレス・バッフ ァ313に対応する適切なブロックで示されているように、この情報がIEU107から 送られて来ている。しかし、第4命令より古いストア(すなわち、第3命令)が 存在する。LSU205はポインタを使用して、どのアドレス・バッファが最も古い命 令情報を含んでいるかを決定する。このストアが存在するので、アドレス・バッ ファ313に対応する書き込み実行待ちビット715が設定される。従って、この場合 、第4命令用のキャッシュ要求は生成できない。 ブロック740に示すように、CCU110は第3命令用にデータをLSU205に戻す。要求 データはアドレス100で始まっているので、戻されたデータは位置合わせされる 必要がない。最初の32ビットだけがBYTE-SELで選択され、そしてデータはデータ ・バッファ526にラッチされる。 第7(d)図に於いて、第4命令に対応するアドレスはアドレス・バッファ313にラ ッチされ、対応する有効ビットが設定されている。次に、アドレス衝突オペレー ションが行なわれる。第4命令から のaddress1が第3命令のaddress1及びaddress2と比較され、その結果アドレス衝 突の存在が決定される。従って、アドレス・バッファ313に対応する衝突ビット7 10が設定される。衝突が存在するために、サイクル4の期間中キャッシュ要求は 生成できない。しかし、キャッシュ要求の実行が不可能であっても、ブロックで 示されているように第4命令用のマージ・データがIEU107から到着する。マージ ・データとはレジスタebxからのデータである。マージ・データが必要なのは、 第4命令が単に16ビット・オペレーションであるからである。このマージ・デー タはデータ・バッファ526にラッチされる。 第7(e)図に於いて、書き込みAデータ(WRA-DATA)がIEU107から到着する。WRA- DATAは第3命令に於けるOR演算の結果である。このデータはデータ・バッファ52 4にラツチされる。更に、ブロック780に示すように、サイクル5の期間中次のバ ケット、即ちバケット1、が退避される。具体的には、retire nextビットが1 に設定され、次の命令が退避可能であることを示し、retire numビットが1に 設定され、バケット1にある命令を退避すべきであることを示す。この場合、第 3命令と4命令の間にアドレス衝突がまだ存在する。 第7(f)図に於いて、データ・バッファ524中のデータはebx中のデータとORがとら れ、その結果値87654321が生成される。ブロック785に示すように、サイクル6 の期間中、第3命令が退避される。第3命令の退避によって、LSU205は第4命令 に対応する衝突ビット710をリセットできるようになる。ブロック730に示すよう に、OR演算によって生成された値を記憶場所00000100(レジスタeaxに格納され ているアドレス)に格納するためのキャッシュ要求が行なわれる。ブロック780 に示すように、データはこのデータ・ロケーションに格納されている。 第7(g)図に於いて、第4命令は記憶場所0103(レジスタeax+3の最初の16ビッ ト)に格納されているデータをロードする。従って、ブロック730に示すように 、第4命令に対応するロード・オペレーション用にキャッシュ要求が行なわれる 。 第7(h)図に於いて、ブロック740に示すように、要求された(位置合わせされ ていない)ロード・データがキャッシュから返される。ブロック750に示すよう に、次にデータは3バイト分シフトすることによって位置合わせされる。その理 由は、要求されたデータはアドレス0100でなくアドレス0103で始まるからである 。最初の16ビットだけが要求されたので、最初の2バイトだけが位置合わせされ たデータから選択される。これら16ビットは次にデータ・バッファ526にラッチ され、このデータ・バッファはIEU107に逆方向に転送されて、レジスタebxに格 納される。 上記に本発明を実施例を参照しつつ説明したが、本発明の精神及び特許請求の範 囲から逸脱することなく、形状並びに詳細において様々な変更が可能なことが当 業者には理解されるであろう。
───────────────────────────────────────────────────── 【要約の続き】 ア・ユニットの三つの主なタスクは(1)アウト・オブ・ オーダのキャッシュ要求の処理、(2)アドレス衝突の検 出、及び(3)データの位置合わせ、である。

Claims (1)

  1. 【特許請求の範囲】 特許請求の範囲は以下の通りである。 1. プログラム・ストリームを実行するマイクロプロセサ・システムで、前記 マイクロプロセサ・システムは、 (a)命令ストアから命令を取りだして予め決められた複数の前記命令を命令 バッファに供給する命令フェッチ・ユニツトと、 (b)前記命令フェッチ・ユニットに連結された、前記命令バッファからの前 記複数の前記命令をアウト・オブ・オーダで実行する実行ユニットで、前記実行 ユニットはロード要求をメモリ・システムに対してアウト・オブ・オーダでスト ア要求をイン・オーダで行なうように適性化されたロード・ストア・ユニットを 備え、前記ロード・ストア・ユニットは、 (i) 実行中の前記複数の前記命令に対応する複数のアドレスを管理 するように適性化されたアドレス・パスと、 (ii)アドレス衝突及び書き込み実行待ちが実行中前記複数の前記命令 の各々の間に存在するか否かを検出して信号を送るアドレス衝突手段で、アドレ ス衝突も書き込み実行待ちも検出されなければ前記ロード・ストア・ユニットが 前記ロード要求を実行する、アドレス衝突手段と、 (iii)ロード及び/叉はストア・データを前記メモリ・システム及び前記 実行ユニット間で転送するデータ・パスで、前記データ・パスは前記メモリ・シ ステムから返されたデータを位置合わせし、それによりワード境界と一致するデ ータが前記メモリから正しいアライメントで前記実行ユニットに返されるように 構成されたデータ・パスと、 を有する、実行ユニットと、 から成ることを特徴とするマイクロプロセサ・システム。 2. 前記アドレス・パスは前記ロード及び/又は前記ストア要求の上位バイト 及び下位バイトを格納するための複数のアドレス・バッファを含むことを特徴と する請求項1に記載のシステム。 3. 前記データがワード境界と一致する場合、前記ロード・ストア・ユニット が複数のメモリ要求をメモリに対して行なう手段を含むことを特徴とする請求項 1に記載のシステム。 4. 前記ロード・ストア・ユニットに接続され、前記複数の命令用のアドレス を計算するために適性化されたデータ・アドレス機能ユニットからさらに成るこ とを特徴とする請求項1に記載のシステム。 5. 仮想アドレスから生成される物理アドレス変換を前記実行ユニット及び前 記ロード・ストア・ユニットに供給されるように適性化された仮想メモリユニッ トからさらに成ることを特徴とする請求項4に記載のシステム。 6. 前記ロード・ストア・ユニットはメモリ要求を行なう前に前記データ・ア ドレス機能及び前記仮想メモリユニットからの物理アドレスを必要とすることを 特徴とする請求項5に記載のシステム。 7. 前記命令がCISC型命令であり、そして前記命令実行ユニットが前記CISC型 命令をRISC型命令にデコードするデコード手段から成ることを特徴とする請求項 1に記載のシステム。 8. 前記ロード・ストア・ユニットがメモリから受け取るデータを行き先レジ スタの元々の内容とマージさせる手段から成ることを特徴とする請求項1に記載 のシステム。 9. 前記データ・パスにロード及び/叉は実行データを直接転送し、それによ って後続のストア・オペレーションがその後に直ちに実行されるようにするため に前記実行ユニット及び前記ロード/ストア・データ・パス間にデータ線を備え ることを特徴とする請求項1に記載のシステム。 10. 前記命令バッファ中の命令の比較的新しさを示す履歴ポインタからさらに 成ることを特徴とする請求項1に記載のシステム。 11. 前記衝突手段が、アドレス衝突又は実行待ちストア・アドレスが存在する かどうかを決定することによってロード依存性を示すことを特徴とする請求項1 に記載のシステム。 12. システムの状態を不正に変更するようなロード・バイパスを防止する手段 からさらに成ることを特徴とする請求項1に記載のシステム。 13. 前記ロード/ストア・データ・パスにストア・データを直接供給するため に機能ユニットの結果を監視する(スヌーピング)手段からさらに成ることを特 徴とする請求項1に記載のシステム。 14. 前記ロード・ストア・ユニットが浮動小数点演算用に別個のロード/スト ア・データ・パスを含むことを特徴とする請求項1に記載のシステム。 15. 前記実行ユニットにはレジスタ・ファイルが含まれ、レジスタ・ファイル には複数の実バッファ及び複数の一時バッファが含まれることを特徴とする請求 項1に記載のシステム。 16. ロード命令をアウト・オブ・オーダで発行する実行ユニットを有するRISC 型スーパースカラ・マイクロプロセサに於いて、メモリ素子との間のロード並び にストア要求を管理する方法で、その方法は、 (1) 命令ウィンドウから選択された命令のアドレスを計算し、前記アド レスを一つのロード・ストア・ユニットに転送するステップと、 (2) 前記命令がロード・オペレーション、ストア・オペレーション、実 行オペレーション、或いは前記ロード、前記ストア、及び前記実行の各オペレー ションの組み合わせを伴うか否かを決定するステツプと、 (3) 前記命令にロード・オペレーションが含まれる場合、アドレス衝突 及び書き込み実行待ちが存在するか否かを検査し、そして前記検査の結果を知ら せるステツプと、 (4) 優先度スキーム及び前記検査ステップ(3)の結果に基づき前記メモリ 素子に要求を行なうステップと、 (5) 要求されたデータを前記ロード・オペレーション及び/又は前記スト ア・オペレーションから前記ロード・ストア・ユニットのデータ・パス部分に於 いて受け取るステップと、 (6) 前記要求データが位置合わせされていないデータである場合、前記 要求データの位置合わせを行なうステップと、 から成ることを特徴とするロード及びストア要求を管理する方法。 17. 発行のステップ(1)は前記命令に対してデータ依存性検査を行なうステッ プが含むことを特徴とする請求項16に記載の方法。 18. 前記命令の結果を一時バッファ内の、予め決められた場所に書き込むステ ップからさらに成ることを特徴とする請求項16に記載の方法。 19. 前記一時バッファをバイパスすることによって前記ロード・ストア・ユニ ットにデータを供給するステップからさらに成ることを特徴とする請求項18に記 載の方法。 20. 全てのストア・オペレーション要求をプログラムの順序に行なうステップ からさらに成ることを特徴とする請求項16に記載の方法。 21. システムの状態を不正に変更するようなロード・オペレーションのロード ・バイパスを防止するステップからさらに成ることを特徴とする請求項16に記載 の方法。 22. メモリから受け取ったデータを行き先レジスタの元々の内容とマージさせ るステップからさらに成ることを特徴とする請求項16に記載の方法。
JP50906394A 1992-09-29 1993-09-03 マイクロプロセッサシステム Expired - Lifetime JP3644959B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US95408492A 1992-09-29 1992-09-29
US07/954,084 1992-09-29
PCT/US1993/008331 WO1994008287A1 (en) 1992-09-29 1993-09-03 System and method for handling load and/or store operations in a superscalar microprocessor

Related Child Applications (13)

Application Number Title Priority Date Filing Date
JP2000008268A Division JP2000148491A (ja) 1992-09-29 2000-01-17 マイクロコンピュ―タシステム
JP2000008265A Division JP2000148490A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008271A Division JP2000148494A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008269A Division JP2000148492A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008267A Division JP2000148483A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008263A Division JP2000148480A (ja) 1992-09-29 2000-01-17 要求管理方法
JP2000008264A Division JP2000148481A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008270A Division JP2000148493A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008266A Division JP2000181708A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2002312519A Division JP3588755B2 (ja) 1992-09-29 2002-10-28 コンピュータシステム
JP2002312520A Division JP3620530B2 (ja) 1992-09-29 2002-10-28 コンピュータシステム
JP2002312517A Division JP2003131870A (ja) 1992-09-29 2002-10-28 コンピュータシステム
JP2002312518A Division JP3627737B2 (ja) 1992-09-29 2002-10-28 コンピュータシステム

Publications (2)

Publication Number Publication Date
JPH08504977A true JPH08504977A (ja) 1996-05-28
JP3644959B2 JP3644959B2 (ja) 2005-05-11

Family

ID=25494898

Family Applications (28)

Application Number Title Priority Date Filing Date
JP50906394A Expired - Lifetime JP3644959B2 (ja) 1992-09-29 1993-09-03 マイクロプロセッサシステム
JP2000008270A Pending JP2000148493A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008263A Withdrawn JP2000148480A (ja) 1992-09-29 2000-01-17 要求管理方法
JP2000008265A Withdrawn JP2000148490A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008269A Pending JP2000148492A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008264A Pending JP2000148481A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008268A Pending JP2000148491A (ja) 1992-09-29 2000-01-17 マイクロコンピュ―タシステム
JP2000008267A Withdrawn JP2000148483A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008266A Withdrawn JP2000181708A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008271A Pending JP2000148494A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2002312517A Withdrawn JP2003131870A (ja) 1992-09-29 2002-10-28 コンピュータシステム
JP2002312519A Expired - Lifetime JP3588755B2 (ja) 1992-09-29 2002-10-28 コンピュータシステム
JP2002312520A Expired - Lifetime JP3620530B2 (ja) 1992-09-29 2002-10-28 コンピュータシステム
JP2002312518A Expired - Lifetime JP3627737B2 (ja) 1992-09-29 2002-10-28 コンピュータシステム
JP2004273803A Expired - Lifetime JP3772899B2 (ja) 1992-09-29 2004-09-21 コンピュータシステム
JP2004306379A Expired - Lifetime JP3772900B2 (ja) 1992-09-29 2004-10-21 コンピュータシステム
JP2004337022A Expired - Lifetime JP3772901B2 (ja) 1992-09-29 2004-11-22 コンピュータシステム
JP2004370411A Expired - Lifetime JP3772902B2 (ja) 1992-09-29 2004-12-22 コンピュータシステム
JP2005013797A Expired - Lifetime JP3772903B2 (ja) 1992-09-29 2005-01-21 コンピュータシステム
JP2005043359A Expired - Lifetime JP3741144B2 (ja) 1992-09-29 2005-02-21 コンピュータシステム
JP2005083005A Expired - Lifetime JP3741146B2 (ja) 1992-09-29 2005-03-23 コンピュータシステム
JP2005124391A Expired - Lifetime JP3772905B2 (ja) 1992-09-29 2005-04-22 コンピュータシステム
JP2005148862A Expired - Lifetime JP3741149B2 (ja) 1992-09-29 2005-05-23 コンピュータシステム
JP2005181820A Expired - Lifetime JP3772907B2 (ja) 1992-09-29 2005-06-22 コンピュータシステム
JP2005212306A Expired - Lifetime JP3852474B2 (ja) 1992-09-29 2005-07-22 コンピュータシステム
JP2005239264A Expired - Lifetime JP3852475B2 (ja) 1992-09-29 2005-08-22 コンピュータシステム
JP2005274178A Expired - Lifetime JP3815507B2 (ja) 1992-09-29 2005-09-21 コンピュータシステム
JP2006195680A Expired - Lifetime JP3874022B2 (ja) 1992-09-29 2006-07-18 コンピュータシステム

Family Applications After (27)

Application Number Title Priority Date Filing Date
JP2000008270A Pending JP2000148493A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008263A Withdrawn JP2000148480A (ja) 1992-09-29 2000-01-17 要求管理方法
JP2000008265A Withdrawn JP2000148490A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008269A Pending JP2000148492A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008264A Pending JP2000148481A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008268A Pending JP2000148491A (ja) 1992-09-29 2000-01-17 マイクロコンピュ―タシステム
JP2000008267A Withdrawn JP2000148483A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008266A Withdrawn JP2000181708A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008271A Pending JP2000148494A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2002312517A Withdrawn JP2003131870A (ja) 1992-09-29 2002-10-28 コンピュータシステム
JP2002312519A Expired - Lifetime JP3588755B2 (ja) 1992-09-29 2002-10-28 コンピュータシステム
JP2002312520A Expired - Lifetime JP3620530B2 (ja) 1992-09-29 2002-10-28 コンピュータシステム
JP2002312518A Expired - Lifetime JP3627737B2 (ja) 1992-09-29 2002-10-28 コンピュータシステム
JP2004273803A Expired - Lifetime JP3772899B2 (ja) 1992-09-29 2004-09-21 コンピュータシステム
JP2004306379A Expired - Lifetime JP3772900B2 (ja) 1992-09-29 2004-10-21 コンピュータシステム
JP2004337022A Expired - Lifetime JP3772901B2 (ja) 1992-09-29 2004-11-22 コンピュータシステム
JP2004370411A Expired - Lifetime JP3772902B2 (ja) 1992-09-29 2004-12-22 コンピュータシステム
JP2005013797A Expired - Lifetime JP3772903B2 (ja) 1992-09-29 2005-01-21 コンピュータシステム
JP2005043359A Expired - Lifetime JP3741144B2 (ja) 1992-09-29 2005-02-21 コンピュータシステム
JP2005083005A Expired - Lifetime JP3741146B2 (ja) 1992-09-29 2005-03-23 コンピュータシステム
JP2005124391A Expired - Lifetime JP3772905B2 (ja) 1992-09-29 2005-04-22 コンピュータシステム
JP2005148862A Expired - Lifetime JP3741149B2 (ja) 1992-09-29 2005-05-23 コンピュータシステム
JP2005181820A Expired - Lifetime JP3772907B2 (ja) 1992-09-29 2005-06-22 コンピュータシステム
JP2005212306A Expired - Lifetime JP3852474B2 (ja) 1992-09-29 2005-07-22 コンピュータシステム
JP2005239264A Expired - Lifetime JP3852475B2 (ja) 1992-09-29 2005-08-22 コンピュータシステム
JP2005274178A Expired - Lifetime JP3815507B2 (ja) 1992-09-29 2005-09-21 コンピュータシステム
JP2006195680A Expired - Lifetime JP3874022B2 (ja) 1992-09-29 2006-07-18 コンピュータシステム

Country Status (7)

Country Link
US (5) US5659782A (ja)
EP (1) EP0663083B1 (ja)
JP (28) JP3644959B2 (ja)
KR (1) KR100248903B1 (ja)
DE (1) DE69329778T2 (ja)
HK (1) HK1014780A1 (ja)
WO (1) WO1994008287A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11512855A (ja) * 1995-10-06 1999-11-02 アドバンスト・マイクロ・デバイシズ・インコーポレイテッド ロード/ストアオペレーションのout−of−order実行の制御
JP2000293436A (ja) * 1999-03-22 2000-10-20 Sun Microsyst Inc パイプラインメモリシステムにおける複数のターゲットへの複数の未解決要求のサポート
JP2000515268A (ja) * 1996-01-26 2000-11-14 アドバンスト・マイクロ・デバイシズ・インコーポレイテッド ロード/ストアオペレーションのout―of―order実行コントロールのための階層的スキャンロジック
US6986027B2 (en) * 2000-05-26 2006-01-10 International Business Machines Corporation Universal load address/value prediction using stride-based pattern history and last-value prediction in a two-level table scheme

Families Citing this family (157)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4237417C2 (de) * 1992-03-25 1997-01-30 Hewlett Packard Co Datenverarbeitungssystem
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
EP0663083B1 (en) * 1992-09-29 2000-12-20 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5721857A (en) * 1993-12-30 1998-02-24 Intel Corporation Method and apparatus for saving the effective address of floating point memory operations in an out-of-order microprocessor
US6378062B1 (en) * 1994-01-04 2002-04-23 Intel Corporation Method and apparatus for performing a store operation
US5694574A (en) * 1994-01-04 1997-12-02 Intel Corporation Method and apparatus for performing load operations in a computer system
US5717882A (en) * 1994-01-04 1998-02-10 Intel Corporation Method and apparatus for dispatching and executing a load operation to memory
US6279099B1 (en) * 1994-04-29 2001-08-21 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
US5734874A (en) * 1994-04-29 1998-03-31 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
US6021471A (en) * 1994-11-15 2000-02-01 Advanced Micro Devices, Inc. Multiple level cache control system with address and data pipelines
JP3164732B2 (ja) 1994-07-04 2001-05-08 富士通株式会社 データ処理装置
US5761475A (en) * 1994-12-15 1998-06-02 Sun Microsystems, Inc. Computer processor having a register file with reduced read and/or write port bandwidth
US5784586A (en) * 1995-02-14 1998-07-21 Fujitsu Limited Addressing method for executing load instructions out of order with respect to store instructions
US5745729A (en) * 1995-02-16 1998-04-28 Sun Microsystems, Inc. Methods and apparatuses for servicing load instructions
TW448403B (en) * 1995-03-03 2001-08-01 Matsushita Electric Ind Co Ltd Pipeline data processing device and method for executing multiple data processing data dependent relationship
US5638312A (en) * 1995-03-03 1997-06-10 Hal Computer Systems, Inc. Method and apparatus for generating a zero bit status flag in a microprocessor
US5887152A (en) * 1995-04-12 1999-03-23 Advanced Micro Devices, Inc. Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
US5802588A (en) * 1995-04-12 1998-09-01 Advanced Micro Devices, Inc. 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
US5625835A (en) * 1995-05-10 1997-04-29 International Business Machines Corporation Method and apparatus for reordering memory operations in a superscalar or very long instruction word processor
US5761712A (en) * 1995-06-07 1998-06-02 Advanced Micro Devices Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
US5778434A (en) * 1995-06-07 1998-07-07 Seiko Epson Corporation System and method for processing multiple requests and out of order returns
US5694565A (en) * 1995-09-11 1997-12-02 International Business Machines Corporation Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
WO1997013200A1 (en) * 1995-10-06 1997-04-10 Advanced Micro Devices, Inc. Scan chain for rapidly identifying first or second objects of selected types in a sequential list
US5745724A (en) * 1996-01-26 1998-04-28 Advanced Micro Devices, Inc. Scan chain for rapidly identifying first or second objects of selected types in a sequential list
US6038657A (en) * 1995-10-06 2000-03-14 Advanced Micro Devices, Inc. Scan chains for out-of-order load/store execution control
US6092184A (en) * 1995-12-28 2000-07-18 Intel Corporation Parallel processing of pipelined instructions having register dependencies
US5764943A (en) * 1995-12-28 1998-06-09 Intel Corporation Data path circuitry for processor having multiple instruction pipelines
US5781790A (en) * 1995-12-29 1998-07-14 Intel Corporation Method and apparatus for performing floating point to integer transfers and vice versa
US5778210A (en) * 1996-01-11 1998-07-07 Intel Corporation Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time
US5751946A (en) * 1996-01-18 1998-05-12 International Business Machines Corporation Method and system for detecting bypass error conditions in a load/store unit of a superscalar processor
US5930489A (en) * 1996-02-09 1999-07-27 Advanced Micro Devices, Inc. Microprocessor configured to detect memory operations having data addresses indicative of a boundary between instructions sets
US5809275A (en) * 1996-03-01 1998-09-15 Hewlett-Packard Company Store-to-load hazard resolution system and method for a processor that executes instructions out of order
US5838942A (en) * 1996-03-01 1998-11-17 Hewlett-Packard Company Panic trap system and method
US5813033A (en) * 1996-03-08 1998-09-22 Advanced Micro Devices, Inc. Superscalar microprocessor including a cache configured to detect dependencies between accesses to the cache and another cache
US5968166A (en) * 1996-03-22 1999-10-19 Matsushita Electric Industrial Co., Ltd. Information processing apparatus and method, and scheduling device for reducing inactivity due to wait state
US5737749A (en) * 1996-05-20 1998-04-07 International Business Machines Corporation Method and system for dynamically sharing cache capacity in a microprocessor
US5860158A (en) * 1996-11-15 1999-01-12 Samsung Electronics Company, Ltd. Cache control unit with a cache request transaction-oriented protocol
US5890219A (en) * 1996-11-27 1999-03-30 Emc Corporation Redundant writing of data to cached storage system
US5884055A (en) * 1996-11-27 1999-03-16 Emc Corporation Method and apparatus including a shared resource and multiple processors running a common control program accessing the shared resource
US5890207A (en) * 1996-11-27 1999-03-30 Emc Corporation High performance integrated cached storage device
US5897666A (en) * 1996-12-09 1999-04-27 International Business Machines Corporation Generation of unique address alias for memory disambiguation buffer to avoid false collisions
US5841998A (en) * 1996-12-31 1998-11-24 Metaflow Technologies, Inc. System and method of processing instructions for a processor
US6230245B1 (en) 1997-02-11 2001-05-08 Micron Technology, Inc. Method and apparatus for generating a variable sequence of memory device command signals
US6175894B1 (en) 1997-03-05 2001-01-16 Micron Technology, Inc. Memory device command buffer apparatus and method and memory devices and computer systems using same
US5931957A (en) * 1997-03-31 1999-08-03 International Business Machines Corporation Support for out-of-order execution of loads and stores in a processor
US6021485A (en) * 1997-04-10 2000-02-01 International Business Machines Corporation Forwarding store instruction result to load instruction with reduced stall or flushing by effective/real data address bytes matching
US5987574A (en) * 1997-04-30 1999-11-16 Sony Corporation Bank arbitration for SDRAM memory control
US5996043A (en) 1997-06-13 1999-11-30 Micron Technology, Inc. Two step memory device command buffer apparatus and method and memory devices and computer systems using same
US6484244B1 (en) 1997-06-17 2002-11-19 Micron Technology, Inc. Method and system for storing and processing multiple memory commands
US6058472A (en) * 1997-06-25 2000-05-02 Sun Microsystems, Inc. Apparatus for maintaining program correctness while allowing loads to be boosted past stores in an out-of-order machine
US6085289A (en) * 1997-07-18 2000-07-04 International Business Machines Corporation Method and system for load data formatting and improved method for cache line organization
US6070238A (en) * 1997-09-11 2000-05-30 International Business Machines Corporation Method and apparatus for detecting overlap condition between a storage instruction and previously executed storage reference instruction
US6112293A (en) * 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6202119B1 (en) 1997-12-19 2001-03-13 Micron Technology, Inc. Method and system for processing pipelined memory commands
US6112297A (en) * 1998-02-10 2000-08-29 International Business Machines Corporation Apparatus and method for processing misaligned load instructions in a processor supporting out of order execution
US6360314B1 (en) * 1998-07-14 2002-03-19 Compaq Information Technologies Group, L.P. Data cache having store queue bypass for out-of-order instruction execution and method for same
US6175905B1 (en) 1998-07-30 2001-01-16 Micron Technology, Inc. Method and system for bypassing pipelines in a pipelined memory command generator
US7779236B1 (en) * 1998-12-31 2010-08-17 Stmicroelectronics, Inc. Symbolic store-load bypass
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6978462B1 (en) * 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US6336183B1 (en) * 1999-02-26 2002-01-01 International Business Machines Corporation System and method for executing store instructions
US6473832B1 (en) 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Load/store unit having pre-cache and post-cache queues for low latency load memory operations
US6473837B1 (en) 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Snoop resynchronization mechanism to preserve read ordering
US6393536B1 (en) 1999-05-18 2002-05-21 Advanced Micro Devices, Inc. Load/store unit employing last-in-buffer indication for rapid load-hit-store
US6427193B1 (en) 1999-05-18 2002-07-30 Advanced Micro Devices, Inc. Deadlock avoidance using exponential backoff
US6266744B1 (en) 1999-05-18 2001-07-24 Advanced Micro Devices, Inc. Store to load forwarding using a dependency link file
US6415360B1 (en) 1999-05-18 2002-07-02 Advanced Micro Devices, Inc. Minimizing self-modifying code checks for uncacheable memory types
US7089404B1 (en) 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
US6134646A (en) * 1999-07-29 2000-10-17 International Business Machines Corp. System and method for executing and completing store instructions
US6915385B1 (en) * 1999-07-30 2005-07-05 International Business Machines Corporation Apparatus for unaligned cache reads and methods therefor
US7254806B1 (en) 1999-08-30 2007-08-07 Ati International Srl Detecting reordered side-effects
US6662280B1 (en) 1999-11-10 2003-12-09 Advanced Micro Devices, Inc. Store buffer which forwards data based on index and optional way match
US6539467B1 (en) * 1999-11-15 2003-03-25 Texas Instruments Incorporated Microprocessor with non-aligned memory access
US6970996B1 (en) * 2000-01-04 2005-11-29 National Semiconductor Corporation Operand queue for use in a floating point unit to reduce read-after-write latency and method of operation
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6732234B1 (en) 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
US6848024B1 (en) * 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6748492B1 (en) * 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
JP4025493B2 (ja) * 2000-08-08 2007-12-19 富士通株式会社 適切な発行先に命令を発行する命令発行装置
US7757066B2 (en) 2000-12-29 2010-07-13 Stmicroelectronics, Inc. System and method for executing variable latency load operations in a date processor
JP3776732B2 (ja) * 2001-02-02 2006-05-17 株式会社東芝 プロセッサ装置
FR2821449B1 (fr) * 2001-02-27 2003-07-04 St Microelectronics Sa Procede de gestion d'instructions au sein d'un processeur a architecture decouplee, en particulier un processeur de traitement numerique du signal, et processeur correspondant
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US6959348B1 (en) * 2001-07-30 2005-10-25 Vixs Systems, Inc. Method and system for accessing data
US20030065909A1 (en) * 2001-09-28 2003-04-03 Jourdan Stephan J. Deferral of dependent loads until after execution of colliding stores
US7529912B2 (en) * 2002-02-12 2009-05-05 Via Technologies, Inc. Apparatus and method for instruction-level specification of floating point format
US7181596B2 (en) 2002-02-12 2007-02-20 Ip-First, Llc Apparatus and method for extending a microprocessor instruction set
US7328328B2 (en) 2002-02-19 2008-02-05 Ip-First, Llc Non-temporal memory reference control mechanism
US7315921B2 (en) * 2002-02-19 2008-01-01 Ip-First, Llc Apparatus and method for selective memory attribute control
US7395412B2 (en) * 2002-03-08 2008-07-01 Ip-First, Llc Apparatus and method for extending data modes in a microprocessor
US7546446B2 (en) * 2002-03-08 2009-06-09 Ip-First, Llc Selective interrupt suppression
US6804759B2 (en) * 2002-03-14 2004-10-12 International Business Machines Corporation Method and apparatus for detecting pipeline address conflict using compare of byte addresses
US6963964B2 (en) 2002-03-14 2005-11-08 International Business Machines Corporation Method and apparatus for detecting pipeline address conflict using parallel compares of multiple real addresses
US7373483B2 (en) 2002-04-02 2008-05-13 Ip-First, Llc Mechanism for extending the number of registers in a microprocessor
US7380103B2 (en) 2002-04-02 2008-05-27 Ip-First, Llc Apparatus and method for selective control of results write back
US7185180B2 (en) * 2002-04-02 2007-02-27 Ip-First, Llc Apparatus and method for selective control of condition code write back
US7155598B2 (en) * 2002-04-02 2006-12-26 Ip-First, Llc Apparatus and method for conditional instruction execution
US7302551B2 (en) * 2002-04-02 2007-11-27 Ip-First, Llc Suppression of store checking
US7380109B2 (en) * 2002-04-15 2008-05-27 Ip-First, Llc Apparatus and method for providing extended address modes in an existing instruction set for a microprocessor
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US7181598B2 (en) * 2002-05-17 2007-02-20 Intel Corporation Prediction of load-store dependencies in a processing agent
US7218647B2 (en) * 2002-06-27 2007-05-15 International Business Machines Corporation Method and apparatus for implementing frame header alterations
JP3808013B2 (ja) * 2002-07-05 2006-08-09 富士通株式会社 命令実行装置
US7062636B2 (en) * 2002-09-19 2006-06-13 Intel Corporation Ordering scheme with architectural operation decomposed into result producing speculative micro-operation and exception producing architectural micro-operation
US7145567B2 (en) * 2003-04-03 2006-12-05 Avid Technology, Inc. Bitstream format and reading and writing methods and apparatus therefor
US7321964B2 (en) * 2003-07-08 2008-01-22 Advanced Micro Devices, Inc. Store-to-load forwarding buffer using indexed lookup
US6925928B2 (en) * 2003-09-18 2005-08-09 Anthony Fox Trash compactor for fast food restaurant waste
US7721069B2 (en) * 2004-07-13 2010-05-18 3Plus1 Technology, Inc Low power, high performance, heterogeneous, scalable processor architecture
US7376817B2 (en) * 2005-08-10 2008-05-20 P.A. Semi, Inc. Partial load/store forward prediction
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US7644258B2 (en) * 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US9176741B2 (en) * 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US7461239B2 (en) * 2006-02-02 2008-12-02 International Business Machines Corporation Apparatus and method for handling data cache misses out-of-order for asynchronous pipelines
CN101288055B (zh) * 2006-11-07 2010-10-13 日立软件工程株式会社 数据处理控制方法,信息处理设备和数据处理控制系统
JP5145929B2 (ja) * 2007-03-08 2013-02-20 株式会社リコー 半導体集積回路及び画像処理装置
US7600099B2 (en) * 2007-03-08 2009-10-06 International Business Machines Corporation System and method for predictive early allocation of stores in a microprocessor
US20090006712A1 (en) * 2007-06-29 2009-01-01 Fatma Ehsan Data ordering in a multi-node system
JP5315748B2 (ja) * 2008-03-28 2013-10-16 富士通株式会社 マイクロプロセッサおよびシグネチャ生成方法ならびに多重化システムおよび多重化実行検証方法
JP5206385B2 (ja) * 2008-12-12 2013-06-12 日本電気株式会社 バウンダリ実行制御システム、バウンダリ実行制御方法、及びバウンダリ実行制御プログラム
US8266411B2 (en) * 2009-02-05 2012-09-11 International Business Machines Corporation Instruction set architecture with instruction characteristic bit indicating a result is not of architectural importance
US7895381B2 (en) * 2009-02-16 2011-02-22 Himax Media Solutions, Inc. Data accessing system
GB2469299B (en) 2009-04-07 2011-02-16 Imagination Tech Ltd Ensuring consistency between a data cache and a main memory
US8078796B2 (en) * 2009-04-14 2011-12-13 Micron Technology, Inc. Method for writing to and erasing a non-volatile memory
US8392666B2 (en) * 2009-05-21 2013-03-05 Via Technologies, Inc. Low power high speed load-store collision detector
US8977819B2 (en) * 2010-09-21 2015-03-10 Texas Instruments Incorporated Prefetch stream filter with FIFO allocation and stream direction prediction
EP2440016B1 (en) * 2010-10-08 2019-01-23 Lantiq Beteiligungs-GmbH & Co.KG Laser diode control device
US9128725B2 (en) 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9600289B2 (en) 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing
JP6344022B2 (ja) * 2014-04-08 2018-06-20 富士通株式会社 演算処理装置および演算処理装置の制御方法
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
US11561792B2 (en) * 2015-06-08 2023-01-24 Qualcomm Incorporated System, apparatus, and method for a transient load instruction within a VLIW operation
US10241800B2 (en) 2015-06-16 2019-03-26 International Business Machines Corporation Split-level history buffer in a computer processing unit
US10503506B2 (en) * 2015-10-19 2019-12-10 Arm Limited Apparatus and method for accessing data in a cache in response to an unaligned load instruction
US10191748B2 (en) * 2015-11-30 2019-01-29 Intel IP Corporation Instruction and logic for in-order handling in an out-of-order processor
DE102015224300A1 (de) * 2015-12-04 2017-06-08 Siemens Aktiengesellschaft Speicherprogrammierbarer Baustein und Verfahren zur geschützten Übertragung von Daten auf einen speicherprogrammierbaren Baustein
US10514925B1 (en) 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads
US10331357B2 (en) * 2016-08-19 2019-06-25 Advanced Micro Devices, Inc. Tracking stores and loads by bypassing load store units
US11048506B2 (en) 2016-08-19 2021-06-29 Advanced Micro Devices, Inc. Tracking stores and loads by bypassing load store units
US10353707B2 (en) 2017-07-12 2019-07-16 International Business Machines Corporation Efficient pointer load and format
US10606591B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US11175924B2 (en) 2017-10-06 2021-11-16 International Business Machines Corporation Load-store unit with partitioned reorder queues with single cam port
US10606590B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Effective address based load store unit in out of order processors
US10417002B2 (en) 2017-10-06 2019-09-17 International Business Machines Corporation Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses
US10572256B2 (en) 2017-10-06 2020-02-25 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
US10394558B2 (en) 2017-10-06 2019-08-27 International Business Machines Corporation Executing load-store operations without address translation hardware per load-store unit port
US10579387B2 (en) 2017-10-06 2020-03-03 International Business Machines Corporation Efficient store-forwarding with partitioned FIFO store-reorder queue in out-of-order processor
EP3828698B1 (en) * 2019-04-04 2022-07-20 Cambricon Technologies Corporation Limited Data processing method and apparatus, and related product

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58217054A (ja) * 1982-06-11 1983-12-16 Hitachi Ltd デ−タ処理装置
JPS59154548A (ja) * 1983-02-22 1984-09-03 Hitachi Ltd 記憶制御方式
JPH01286030A (ja) * 1988-05-12 1989-11-17 Nec Corp 情報処理装置
JPH02148238A (ja) * 1988-11-30 1990-06-07 Matsushita Electric Ind Co Ltd データ処理装置
JPH0477925A (ja) * 1990-07-20 1992-03-12 Hitachi Ltd マイクロプロセッサ

Family Cites Families (126)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3346851A (en) 1964-07-08 1967-10-10 Control Data Corp Simultaneous multiprocessing computer system
US3541528A (en) * 1969-01-06 1970-11-17 Ibm Implicit load and store mechanism
US3789365A (en) 1971-06-03 1974-01-29 Bunker Ramo Processor interrupt system
US3771138A (en) 1971-08-31 1973-11-06 Ibm Apparatus and method for serializing instructions from two independent instruction streams
US3916388A (en) 1974-05-30 1975-10-28 Ibm Shifting apparatus for automatic data alignment
US4084235A (en) 1975-04-14 1978-04-11 Honeywell Information Systems Inc. Emulation apparatus
US4034349A (en) 1976-01-29 1977-07-05 Sperry Rand Corporation Apparatus for processing interrupts in microprocessing systems
AU529675B2 (en) 1977-12-07 1983-06-16 Honeywell Information Systems Incorp. Cache memory unit
US4315314A (en) 1977-12-30 1982-02-09 Rca Corporation Priority vectored interrupt having means to supply branch address directly
US4200927A (en) 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4189768A (en) 1978-03-16 1980-02-19 International Business Machines Corporation Operand fetch control improvement
US4189772A (en) 1978-03-16 1980-02-19 International Business Machines Corporation Operand alignment controls for VFL instructions
US4236206A (en) 1978-10-25 1980-11-25 Digital Equipment Corporation Central processor unit for executing instructions of variable length
US4228495A (en) 1978-12-19 1980-10-14 Allen-Bradley Company Multiprocessor numerical control system
JPS6041768B2 (ja) 1979-01-19 1985-09-18 株式会社日立製作所 デ−タ処理装置
US4296470A (en) 1979-06-21 1981-10-20 International Business Machines Corp. Link register storage and restore system for use in an instruction pre-fetch micro-processor interrupt system
JPS5616248A (en) 1979-07-17 1981-02-17 Matsushita Electric Ind Co Ltd Processing system for interruption
JPS5847053B2 (ja) * 1979-11-19 1983-10-20 株式会社日立製作所 デ−タ処理装置
CA1174370A (en) 1980-05-19 1984-09-11 Hidekazu Matsumoto Data processing unit with pipelined operands
JPS5743239A (en) 1980-08-27 1982-03-11 Hitachi Ltd Data processor
JPS6028015B2 (ja) 1980-08-28 1985-07-02 日本電気株式会社 情報処理装置
US4434461A (en) 1980-09-15 1984-02-28 Motorola, Inc. Microprocessor with duplicate registers for processing interrupts
JPS5757345A (en) 1980-09-24 1982-04-06 Toshiba Corp Data controller
US4654781A (en) 1981-10-02 1987-03-31 Raytheon Company Byte addressable memory for variable length instructions and data
JPS58151655A (ja) 1982-03-03 1983-09-08 Fujitsu Ltd 情報処理装置
US4514803A (en) 1982-04-26 1985-04-30 International Business Machines Corporation Methods for partitioning mainframe instruction sets to implement microprocessor based emulation thereof
JPS5932045A (ja) 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
EP0124517A1 (en) 1982-10-22 1984-11-14 International Business Machines Corporation Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter
JPS59165143A (ja) * 1983-03-11 1984-09-18 Hitachi Ltd デ−タ処理装置
US4569016A (en) 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
WO1985000453A1 (en) * 1983-07-11 1985-01-31 Prime Computer, Inc. Data processing system
US4800486A (en) 1983-09-29 1989-01-24 Tandem Computers Incorporated Multiple data patch CPU architecture
US4807115A (en) 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
GB8329509D0 (en) 1983-11-04 1983-12-07 Inmos Ltd Computer
JPH063584B2 (ja) * 1983-12-19 1994-01-12 株式会社日立製作所 情報処理装置
JPS60225943A (ja) 1984-04-25 1985-11-11 Hitachi Ltd 例外割込み処理方式
US4720779A (en) 1984-06-28 1988-01-19 Burroughs Corporation Stored logic program scanner for a data processor having internal plural data and instruction streams
JPS6133546A (ja) 1984-07-25 1986-02-17 Nec Corp 情報処理装置
US4766564A (en) 1984-08-13 1988-08-23 International Business Machines Corporation Dual putaway/bypass busses for multiple arithmetic units
EP0184791A1 (en) * 1984-12-07 1986-06-18 Nec Corporation Information processing device capable of rapidly processing instructions of different groups
NL193475C (nl) 1984-12-27 1999-11-02 Sony Corp Microprocessorinrichting.
US4794517A (en) * 1985-04-15 1988-12-27 International Business Machines Corporation Three phased pipelined signal processor
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
US4714994A (en) 1985-04-30 1987-12-22 International Business Machines Corp. Instruction prefetch buffer control
JPH0762823B2 (ja) 1985-05-22 1995-07-05 株式会社日立製作所 デ−タ処理装置
DE3650578T2 (de) * 1985-06-17 1997-03-06 Nippon Electric Co Informationsverarbeitungssystem mit einer Steuerschaltung zum Abwarten einer Registererneuerung und einem Aufnahmemittel des zu erneuernden Registers
US4739471A (en) 1985-06-28 1988-04-19 Hewlett-Packard Company Method and means for moving bytes in a reduced instruction set computer
US4734852A (en) * 1985-08-30 1988-03-29 Advanced Micro Devices, Inc. Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor
US4722049A (en) * 1985-10-11 1988-01-26 Unisys Corporation Apparatus for out-of-order program execution
JPS62152043A (ja) 1985-12-26 1987-07-07 Nec Corp 命令コ−ドアクセス制御方式
JPS62165242A (ja) 1986-01-17 1987-07-21 Toshiba Corp プロセツサ
DE3603240A1 (de) * 1986-02-03 1987-08-06 Siemens Ag Schaltungsanordnung zur bereinigung von operandenkonflikten in nach dem fliessbandprinzip arbeitenden datenverarbeitungsanlagen
DE3751503T2 (de) 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
US4903196A (en) 1986-05-02 1990-02-20 International Business Machines Corporation Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
US5051940A (en) * 1990-04-04 1991-09-24 International Business Machines Corporation Data dependency collapsing hardware apparatus
JPS6324428A (ja) 1986-07-17 1988-02-01 Mitsubishi Electric Corp キヤツシユメモリ
US4766566A (en) 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
AU587714B2 (en) * 1986-08-27 1989-08-24 Amdahl Corporation Cache storage queue
US5133072A (en) 1986-11-13 1992-07-21 Hewlett-Packard Company Method for improved code generation in reduced instruction set computers
JPS63131230A (ja) 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
US4992934A (en) 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
IL84821A (en) * 1986-12-15 1992-07-15 United Technologies Corp Reduced instruction set computing apparatus and methods
US4814976C1 (en) * 1986-12-23 2002-06-04 Mips Tech Inc Risc computer with unaligned reference handling and method for the same
JPS63163930A (ja) 1986-12-26 1988-07-07 Toshiba Corp アライメント補正方式
US4991090A (en) * 1987-05-18 1991-02-05 International Business Machines Corporation Posting out-of-sequence fetches
US4992938A (en) 1987-07-01 1991-02-12 International Business Machines Corporation Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers
US5134561A (en) * 1987-07-20 1992-07-28 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US4901233A (en) * 1987-07-20 1990-02-13 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US4942520A (en) * 1987-07-31 1990-07-17 Prime Computer, Inc. Method and apparatus for indexing, accessing and updating a memory
US4916652A (en) 1987-09-30 1990-04-10 International Business Machines Corporation Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures
EP0312764A3 (en) * 1987-10-19 1991-04-10 International Business Machines Corporation A data processor having multiple execution units for processing plural classes of instructions in parallel
US5247628A (en) * 1987-11-30 1993-09-21 International Business Machines Corporation Parallel processor instruction dispatch apparatus with interrupt handler
JP2667849B2 (ja) * 1988-01-06 1997-10-27 株式会社日立製作所 情報処理装置
US4926323A (en) 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor
US5003462A (en) 1988-05-31 1991-03-26 International Business Machines Corporation Apparatus and method for implementing precise interrupts on a pipelined processor with multiple functional units with separate address translation interrupt means
US4897810A (en) 1988-06-13 1990-01-30 Advanced Micro Devices, Inc. Asynchronous interrupt status bit circuit
EP0348628A3 (en) * 1988-06-28 1991-01-02 International Business Machines Corporation Cache storage system
US5148536A (en) * 1988-07-25 1992-09-15 Digital Equipment Corporation Pipeline having an integral cache which processes cache misses and loads data in parallel
JPH0673105B2 (ja) 1988-08-11 1994-09-14 株式会社東芝 命令パイプライン方式のマイクロプロセッサ
US5101341A (en) 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO
JP2810068B2 (ja) 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
JPH02151930A (ja) * 1988-12-05 1990-06-11 Nec Corp ストアバツフア管理方式
GB8828817D0 (en) 1988-12-09 1989-01-18 Int Computers Ltd Data processing apparatus
US4961162A (en) * 1989-01-13 1990-10-02 International Business Machines Corporation Multiprocessing system for performing floating point arithmetic operations
US5075840A (en) 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
US5127091A (en) 1989-01-13 1992-06-30 International Business Machines Corporation System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
EP0461257B1 (en) 1989-01-17 1997-04-23 Fujitsu Limited Microprocessor sequencer for controlling the decoding of varable length instructions
US5148528A (en) 1989-02-03 1992-09-15 Digital Equipment Corporation Method and apparatus for simultaneously decoding three operands in a variable length instruction when one of the operands is also of variable length
US5113515A (en) 1989-02-03 1992-05-12 Digital Equipment Corporation Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
US4985825A (en) 1989-02-03 1991-01-15 Digital Equipment Corporation System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer
US5226126A (en) 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5768575A (en) 1989-02-24 1998-06-16 Advanced Micro Devices, Inc. Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions
GB2230116B (en) 1989-04-07 1993-02-17 Intel Corp An improvement for pipelined decoding of instructions in a pipelined processor
CA2016068C (en) 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
JPH0314025A (ja) 1989-06-13 1991-01-22 Nec Corp 命令実行制御方式
DE69031257T2 (de) 1989-09-21 1998-02-12 Texas Instruments Inc Integrierte Schaltung mit einem eingebetteten digitalen Signalprozessor
JP2835103B2 (ja) 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
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
US5193206A (en) 1989-12-27 1993-03-09 Motorola, Inc. Reduce instruction set microprocessor
US5185868A (en) * 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
US5251306A (en) * 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
US5168571A (en) 1990-01-24 1992-12-01 International Business Machines Corporation System for aligning bytes of variable multi-bytes length operand based on alu byte length and a number of unprocessed byte data
US5230068A (en) 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
GB2241801B (en) * 1990-03-05 1994-03-16 Intel Corp Data bypass structure in a register file on a microprocessor chip to ensure data integrity
CA2038264C (en) 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
US5155843A (en) * 1990-06-29 1992-10-13 Digital Equipment Corporation Error transition mode for multi-processor system
US5193167A (en) * 1990-06-29 1993-03-09 Digital Equipment Corporation Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system
US5163139A (en) 1990-08-29 1992-11-10 Hitachi America, Ltd. Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions
EP0479390B1 (en) 1990-10-05 1999-01-07 Koninklijke Philips Electronics N.V. Processing device including a memory circuit and a group of functional units
JP2532300B2 (ja) * 1990-10-17 1996-09-11 三菱電機株式会社 並列処理装置における命令供給装置
US5317740A (en) * 1991-03-07 1994-05-31 Digital Equipment Corporation Alternate and iterative analysis of computer programs for locating translatable code by resolving callbacks and other conflicting mutual dependencies
US5261071A (en) 1991-03-21 1993-11-09 Control Data System, Inc. Dual pipe cache memory with out-of-order issue capability
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5345569A (en) * 1991-09-20 1994-09-06 Advanced Micro Devices, Inc. Apparatus and method for resolving dependencies among a plurality of instructions within a storage device
US5323489A (en) * 1991-11-14 1994-06-21 Bird Peter L Method and apparatus employing lookahead to reduce memory bank contention for decoupled operand references
US5371684A (en) * 1992-03-31 1994-12-06 Seiko Epson Corporation Semiconductor floor plan for a register renaming circuit
US5418973A (en) * 1992-06-22 1995-05-23 Digital Equipment Corporation Digital computer system with cache controller coordinating both vector and scalar operations
US5442756A (en) 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5619668A (en) 1992-08-10 1997-04-08 Intel Corporation Apparatus for register bypassing in a microprocessor
EP0663083B1 (en) * 1992-09-29 2000-12-20 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US6735685B1 (en) 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
DE69429061T2 (de) 1993-10-29 2002-07-18 Advanced Micro Devices Inc Superskalarmikroprozessoren
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US5778210A (en) * 1996-01-11 1998-07-07 Intel Corporation Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58217054A (ja) * 1982-06-11 1983-12-16 Hitachi Ltd デ−タ処理装置
JPS59154548A (ja) * 1983-02-22 1984-09-03 Hitachi Ltd 記憶制御方式
JPH01286030A (ja) * 1988-05-12 1989-11-17 Nec Corp 情報処理装置
JPH02148238A (ja) * 1988-11-30 1990-06-07 Matsushita Electric Ind Co Ltd データ処理装置
JPH0477925A (ja) * 1990-07-20 1992-03-12 Hitachi Ltd マイクロプロセッサ

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11512855A (ja) * 1995-10-06 1999-11-02 アドバンスト・マイクロ・デバイシズ・インコーポレイテッド ロード/ストアオペレーションのout−of−order実行の制御
JP2000515268A (ja) * 1996-01-26 2000-11-14 アドバンスト・マイクロ・デバイシズ・インコーポレイテッド ロード/ストアオペレーションのout―of―order実行コントロールのための階層的スキャンロジック
JP2000293436A (ja) * 1999-03-22 2000-10-20 Sun Microsyst Inc パイプラインメモリシステムにおける複数のターゲットへの複数の未解決要求のサポート
JP4585647B2 (ja) * 1999-03-22 2010-11-24 サン・マイクロシステムズ・インコーポレーテッド パイプラインメモリシステムにおける複数のターゲットへの複数の未解決要求のサポート
US6986027B2 (en) * 2000-05-26 2006-01-10 International Business Machines Corporation Universal load address/value prediction using stride-based pattern history and last-value prediction in a two-level table scheme

Also Published As

Publication number Publication date
JP2000148483A (ja) 2000-05-30
JP3815507B2 (ja) 2006-08-30
JP3772907B2 (ja) 2006-05-10
JP3772899B2 (ja) 2006-05-10
JP2006073025A (ja) 2006-03-16
JP3772901B2 (ja) 2006-05-10
JP3874022B2 (ja) 2007-01-31
JP2003131872A (ja) 2003-05-09
JP3772902B2 (ja) 2006-05-10
JP2000148492A (ja) 2000-05-30
HK1014780A1 (en) 1999-09-30
JP2006048713A (ja) 2006-02-16
JP2005235233A (ja) 2005-09-02
WO1994008287A1 (en) 1994-04-14
JP2000148480A (ja) 2000-05-30
JP2005322269A (ja) 2005-11-17
JP2005050371A (ja) 2005-02-24
JP2000148490A (ja) 2000-05-30
JP2000148493A (ja) 2000-05-30
JP3772905B2 (ja) 2006-05-10
JP2003177913A (ja) 2003-06-27
JP2005149525A (ja) 2005-06-09
JP3741146B2 (ja) 2006-02-01
JP3772900B2 (ja) 2006-05-10
JP3772903B2 (ja) 2006-05-10
JP2005025788A (ja) 2005-01-27
JP2005141780A (ja) 2005-06-02
JP3741144B2 (ja) 2006-02-01
JP2000181708A (ja) 2000-06-30
JP3852475B2 (ja) 2006-11-29
JP2003131870A (ja) 2003-05-09
JP3741149B2 (ja) 2006-02-01
US6434693B1 (en) 2002-08-13
JP2000148494A (ja) 2000-05-30
JP3627737B2 (ja) 2005-03-09
DE69329778T2 (de) 2001-04-26
EP0663083A1 (en) 1995-07-19
JP3620530B2 (ja) 2005-02-16
JP2005166046A (ja) 2005-06-23
JP3644959B2 (ja) 2005-05-11
JP2006277776A (ja) 2006-10-12
KR100248903B1 (ko) 2000-03-15
US7000097B2 (en) 2006-02-14
JP2005353091A (ja) 2005-12-22
EP0663083B1 (en) 2000-12-20
JP2005174364A (ja) 2005-06-30
JP2005243050A (ja) 2005-09-08
US5987593A (en) 1999-11-16
JP2000148481A (ja) 2000-05-30
JP2005216326A (ja) 2005-08-11
DE69329778D1 (de) 2001-01-25
US5659782A (en) 1997-08-19
KR950703325A (ko) 1995-09-20
JP2003131871A (ja) 2003-05-09
JP2000148491A (ja) 2000-05-30
JP3588755B2 (ja) 2004-11-17
US20030056089A1 (en) 2003-03-20
JP3852474B2 (ja) 2006-11-29
US5557763A (en) 1996-09-17

Similar Documents

Publication Publication Date Title
JP3588755B2 (ja) コンピュータシステム
US20020188829A1 (en) System and method for handling load and/or store operations in a superscalar microprocessor

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20040730

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050202

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20090210

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090210

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100210

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110210

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110210

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120210

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130210

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130210

Year of fee payment: 8