JP2003131870A - コンピュータシステム - Google Patents

コンピュータシステム

Info

Publication number
JP2003131870A
JP2003131870A JP2002312517A JP2002312517A JP2003131870A JP 2003131870 A JP2003131870 A JP 2003131870A JP 2002312517 A JP2002312517 A JP 2002312517A JP 2002312517 A JP2002312517 A JP 2002312517A JP 2003131870 A JP2003131870 A JP 2003131870A
Authority
JP
Japan
Prior art keywords
data
instruction
address
load
store
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.)
Withdrawn
Application number
JP2002312517A
Other languages
English (en)
Inventor
Cheryl Senter
シェリル センター
Johannes Wang
ジョハネス ワング
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 JP2003131870A publication Critical patent/JP2003131870A/ja
Withdrawn 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, 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, 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, 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, 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, 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, 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

Abstract

(57)【要約】 【課題】 依存性によるデータ・エラーの発生を回避
し、複数の命令を平行処理的にアウト・オブ・オーダで
実行可能にする。 【解決手段】 命令フェッチ・ユニット(106)と、
命令をアウト・オブ・オーダで実行するための実行ユニ
ット(107)とを含み、実行ユニットが、レジスタフ
ァイルと、複数の機能ユニットと、レジスタファイルか
ら複数の機能ユニットへデータを転送する第1バスと、
複数の機能ユニットからレジスタファイルへデータを転
送する第2バスと、命令ウインドウ内の命令のすべてに
関して、アウト・オブ・オーダでメモリシステムにロー
ド要求を行い、命令ウインドウ内の命令のすべてに関し
てイン・オーダでストア要求を行うよう適応させたロー
ドストア・ユニットとを含むようにしたものである。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は一般的にはスーパー
スカラ・マイクロプロセサの設計に関し、より具体的に
は、命令をアウト・オブ・オーダで実行するマイクロプ
ロセサに於けるロード及びストア動作を扱うシステム並
びに方法に関する。本出願は、本出願の代理人に譲渡さ
れている下記の出願に関連するものである。すなわち、
ニューエン(Nguyen)その他による1991年7月8日出願
の米国特許出願香号 07/727,058(代理人整理番号SP02
1)、「拡張可能RISCマイクロプロセサ・アーキテクチ
ャ」(EXTENSIBLE RISC MICROPROCESSOR ARCHITECTURE
)、及び′058 出願の継続出願である、1992年1月8
日出願の出願番号07/817,809に関連する。上記出願の開
示を参照することによって当該特許出願の明細書の記載
内容が本明細書に組み込まれているものとする。
【0002】
【従来の技術】スーパースカラ縮小命令セット・コンピ
ュータ(RISC)に於ける大きな課題は如何にして斯かる
命令実行の本質的な問題である依存性によるデータ・エ
ラーの発生を回避しつつ、複数の命令を平行処理的に、
アウト・オブ・オーダで実行できるか、という点に関す
る。RISCプロセサに於ける最も簡単な命令発行方針は命
令をプログラムでの順序と同じ順序で発行し(イン・オ
ーダ発行)、結果をまた同じ順序で書き出すことである
(イン・オーダ完了)。アウト・オブ・オーダ完了はイ
ン・オーダ完了に比して複雑であるが、同じ種類の動作
に対してスーパースカラ・プロセサの性能向上に効果が
ある。例えば、アウト・オブ・オーダ完了はロード又は
浮動小数点演算等の長い待ち時間動作の性能改善のため
に使用される。機能ユニット内で実行中の命令の数に制
限はないが、その最大数は全ての機能ユニット内のパイ
プライン段階の数である。この場合、命令はアウト・オ
ブ・オーダで完了でき、その理由は結果の計算にひとつ
の機能ユニットが1サイクル以上のサイクルを費やした
場合でも命令の発行に停止がないからである。従って、
後続の命令が終了した後、機能ユニットが一つの命令を
完了しても構わない。
【0003】下記のコードシーケンスを考えて見る。た
だし″op″はオペレーション、″Rn″は番号つきレジス
タ、″: =″は代入を表わす。
【0004】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命令の発行は待たなければ
ならない。
【0005】アウト・オブ・オーダの完了は性能の向上
をもたらすものであるが、より多くのハードウェア、つ
まりデータ依存性論理、を必要とする。アウト・オブ・
オーダの完了の場合、データ依存性論理は複雑になる。
その理由は、この論理ではデコードされた命令と、全て
のパイプライン段階の全ての命令の間に於けるデータ依
存性の検査が行なわれるからである。結果が正しい順序
で書き出されることを保証するのもハードウェアの役割
である。これに対して、イン・オーダ実行に於いては、
データ依存性論理はデコードされた命令と、現在実行中
の幾つかの命令の間に於けるデータ依存性のみを検査す
ればよいから、結果は当然正しい順序で書き出される。
アウト・オブ・オーダ完了に於いてはまた、機能ユニッ
トは結果バス及びレジスタ・ファイル書き込みポート間
での調停を行なわなければならない。その理由は、同時
に完了する全ての命令の必要を満たすために十分な数の
バス及びポートが存在しないであろうからである。
【0006】更に、アウト・オブ・オーダの完了では命
令例外の処理がより困難になる。ある条件下で命令が例
外を生成した場合、その命令はハードウェアだけでは正
しく実行できない。デコードされた命令が資源競合を生
じた場合、真の依存性を有する場合、あるいは未完了の
命令に対して出力依存性を有する場合、イン・オーダ命
令発行プロセサは命令のデコードを中止する。従って、
後続する一つ又は複数の命令が実行可能であっても、プ
ロセサは競合又は依存性を生じた命令の後に来るものを
先読み(lookahead )処理できない。従来の解決策はデ
コーダを実行段階から分離して、命令が直ちに実行可能
であるか否かにかかわらず命令のデコードを継続して行
なえるようにすることである。この分離はデコード段階
と命令段階の間に「命令ウィンドウ」と呼ばれるバッフ
ァを配置することによって実施される。先読みのため
に、プロセサは命令をデコードし、ウィンドウ中に場所
がある限りデコードされた命令を命令ウィンドウに入
れ、それと同時に、実行可能な命令(すなわち、資源競
合又は依存性を持たない命令)を見出すためにウィンド
ウ中の命令を検査する。命令ウインドウは命令のプール
としての機能があり、この機能によってプロセサは先読
みの能力を得る。この能力はウィンドウのサイズとプロ
セサの命令フェッチ・ユニット(IFU )の性能によって
制約されるものである。これによって、各命令の最初の
プログラム順序と無関係にウィンドウから発行できるの
で、命令のアウト・オブ・オーダ発行が可能となる。こ
の場合、命令発行元に対する唯一の制約はプログラムが
正常に動作することを保証するのに必要な制約である。
【0007】如何なる特定の命令に於いても、発行に関
する制約はイン・オーダ発行の場合と殆ど同じである。
すなわち、命令は資源競合又は依存性を持たない場合発
行されるのである。アウト・オブ・オーダの発行によっ
て、プロセサは発行可能なより大きな命令集合を得るこ
とになり、それによって、同時に実行可能な命令をプロ
セサが見つけ得る確率が高まる。しかし、命令をアウト
・オブ・オーダで発行する能力によって他の発行制約が
生じる。これは命令をアウト・オブ・オーダで実行する
能力に於いて出力依存性の制約が導入されるのに類似し
ている。
【0008】これを理解するために上記のコードシーケ
ンスの例を振り返って見る。第2命令の実行が始まる前
には第3命令の代入は完了できない。さもなければ、第
3命令が第2命令の第1オペランドを不正に上書きする
ことがあり得る。第3命令の結果は第2命令の第1入力
オペランドに対して「反依存性」を有するといわれる。
「反依存性」という用語は、反依存性制約はそれが逆に
なった以外には真の依存性に関する制約と同様であるこ
とを意味する。第2命令が使用する値を第1命令が生成
するかわりに、第2命令は第1命令が使用する値を破壊
する値を生成する。これを防止するためには、第2命令
が始まるまでプロセサは第3命令を発行してはならな
い。第2命令は第1命令に依存するから、第3命令は他
の点では独立していても第1命令が完了するまで待たな
ければならない。
【0009】反依存性が重要なのは主に命令がアウト・
オブ・オーダで発行可能な場合である。正常なオペレー
ション中、停止した命令の入力オペランドは後続する命
令によって破壊されることがある。しかし、スカラ・プ
ロセサに於いては、往々にして命令例外は例外条件を修
正し、そして問題を生じた命令を再試行することによっ
て処理される。この命令がアウト・オブ・オーダで完了
した場合、その命令の再試行が行なわれた時、後続する
命令によってその再試行中の命令の入力オペランドが上
書きされることがあり得る。この問題は正確な割り込み
をサポートするプロセサでは起こり得ない。この問題の
解決には、再起動を可能にするためにプロセサが命令オ
ペランドのコピーを維持する必要があるかもしれない。
【0010】プログラム命令によって行われるオペレー
ションの代表的な二つのオペレーションはロード及びス
トアのオペレーションである。一般的に、ロード及びス
トア・オペレーションはそれぞれ記憶場所を読み出し、
変更する。他のプログラム命令と同様に、ロード及びス
トアはアウト・オブ・オーダで実行できる。ロード及び
ストアは同時にデコード可能であるが、従来的には1サ
イクル当たり一つのロード又はストアのみが発行され
る。データ・キャッシュの使用に於いては、通常、ロー
ドはストアに優先される。その理由は多くの場合ロード
はプロセサが演算を行うのに必要な値を生成するからで
ある。データ・キャッシュの使用に於いて、ストアがロ
ードと競合する場合、ストアの実行が可能になるまで、
通常ストアはストア・バッファに保持される。更に、従
来的には、ストアは他のストアに対してプログラム順序
で実行され、ロードも含めて全ての他の先行の命令が実
行された後にのみ実行される。これによって、データ・
キャッシュ使用に於いてのプロセサのイン・オーダ状態
が保存される。その理由はキャッシュの更新はそれが絶
対に正しく行なわれ得るまで行なわれないからである。
ストア・バッファの使用によってストアが正しい順序で
保持され、先行の命令が完了するまでストアの完了が延
期されるのである。
【0011】ストアは他の先行の命令が実行されるまで
保持され、そしてロードはプロセサ中での計算に必要な
値を生成するから、ストアに対してロードをプログラム
順序に保持することは性能に対して重大な悪影響を及ぼ
す。全ての先行のストアが完了するまでロードが待たな
ければならない場合、そしてそのために最も新しいスト
アに先行する全ての命令が完了するまでロードが待つ場
合、ロード・データに依存した、ロードに後続する全て
の命令も待つことになる。この性能上の問題を回避する
ために、ロードはストア・バッファで待機している、先
行のストアをバイパスすることができ、ロード・データ
は後続の計算に於いて使用できる。
【0012】ロードが先行のストアをバイパスすること
ができる場合、ロードは未だ実行されていない先行のス
トアからデータを得る必要があるかも知れない。プロセ
サはロードが先行のストアに対して有する真の依存性
を、ロードの仮想記憶アドレスと、全ての未完了の先行
ストアの仮想記憶アドレスとを比較することによって検
査する(仮想アドレスとは記憶管理ユニットによるアド
レス変換が適用される前に、命令によって直接計算され
るアドレスである)。ここに於いて、各仮想アドレスに
対して一意的なマッピングの存在が仮定される。その理
由は2個の異なる仮想アドレスが同じ物理的なアドレス
へアクセスすることがないようにするためである。この
仮定に基づき、仮想アドレス比較は物理的記憶場所間の
全ての依存性を検出する。ロード・アドレスが先行のス
トアのアドレスと一致する場合、又は先行のストアのア
ドレスのいずれも未だ計算されていない場合(この場
合、依存性は検出不可能なので、依存性の存在が仮定さ
れる)、一つのロードは一つのストアに対して真の依存
性を有する。ロードがストアに依存する場合、データ・
キャッシュは正しい値を持たないので、そのロードはデ
ータ・キャッシュによって満たされない。ストアの有効
アドレスが後続するロードのアドレスと一致する場合、
そのロードはストアが完了するのを待つ代わりに、スト
ア・データが有効な場合、ストア・バッファによって直
接満たされる。
【0013】上述の如く、ロード及びストアは記憶場所
に対する反依存性及び出力依存性を回避するような方法
で実行される。ロードは先行のストアをバイパスできる
が、ストアは先行のロードをバイパスできない。従っ
て、ロードとストアの間には反依存性は存在し得ない。
一つのストアは従来他のストアに対して通常プログラム
順に発行されるので、ストア間には出力依存性は存在し
得ない。
【0014】従来的には、データ・キャッシュに於いて
ロードは他のロードに対してプログラム順に実行され
る。当業者の意見ではロードをアウト・オブ・オーダで
実行することにより性能の点で得られる利点はないとの
ことである。その理由は、古いロードによってプロセサ
に供給されるデータは新しいロードによって供給される
データよりも計算に必要とされることが多いからであ
る。
【0015】上記の概念の詳細は幾つかの刊行物で論じ
られている。例えば、John L.Hennessyその他著、「Co
mputer Architecture ‐A Quantitative Approach 」
(Morgan Kaufmann Publishers,Inc.,San Mateo ,Ca
lifornia,1990年発行)及びMike Johnson著「Supcrsca
lar Microprocessor Design 」(Prentice-Hall ,In
c.,Englewood Cliffs, New Jersey ,1991年発行)
(特に第8章、この章の一部分は上に転載されてい
る)。両書とも参照することによって全文が本明細書に
組み込まれているものとする。
【0016】
【発明が解決しようとする課題】本発明はスーパースカ
ラRISC型マイクロプロセサ・アーキテクチャ環境に於い
てメモリからの読み出し及びメモリへの書き込み、或い
は入出力に必要なロード及びストア・オペレーションを
管理するシステムを提供するものである。
【0017】
【課題を解決するための手段】本発明はプログラム・ス
トリームを実行するマイクロプロセサ・システムを提供
するもので、このシステムには命令を命令ストアより取
り出し、且つ予め決められた複数の命令を命令バッファ
に供給する命令フェッチ・ユニットが含まれている。更
に、命令フェッチ・ユニットと結合している実行ユニッ
トが含まれ、実行ユニットは命令バッファからの複数の
命令をアウト・オブ・オーダで実行するためにある。実
行ユニットにはロード・ストア・ユニットが含まれ、ユ
ニットはアウト・オブ・オーダなロード要求とイン・オ
ーダのストア要求をメモリ・システムに対して行なうよ
うに適性化されている。従って、本発明のロード/スト
ア・ユニットの主な目的は、可能な限り、アウト・オブ
・オーダなロード要求を行ない、なるべく速やかにロー
ド・データを命令実行ユニットに返すことである。ロー
ド・オペレーションはアドレス衝突がなく、実行待ちの
書き込みオペレーションが存在しない時のみアウト・オ
ブ・オーダで実行できる。アドレス衝突が発生するの
は、古い命令がこれから書き込まれる記憶場所に於いて
読み出しが要求された時である。実行待ちの書き込みオ
ペレーションとは、古い命令がストア・オペレーション
を要求したがストア・アドレスの計算がまだ行なわれて
いないことである。データ・キャッシュ・ユニットは位
置合わせされていない8バイトのデータを返す。ロード
/ ストア・ユニットはデータが命令実行ユニット(IE
U)に返される前にデータの正しい位置合せを行う。従
って、ロード/ストア・バッファの三つの主要なタスク
は(1) アウト・オブ・オーダのキャッシュ要求の処理、
(2) アドレス衝突の検出、及び(3) データの位置合わせ
である。
【0018】ロード・ストア・ユニットには現在実行中
の複数の命令に対応する複数のアドレスを管理するため
に適性化されたアドレス・パス、現在実行中の複数の命
令の各命令間にアドレス衝突及び実行待ちの書き込みオ
ペレーションが存在するかどうかを検出して知らせるア
ドレス衝突手段が含まれ、そうすることによって、ロー
ド・ストア・ユニットはアドレス衝突も実行待ちの書き
込みオペレーションも検出されなかった場合、ロード要
求を実行する。ロード・ストア・ユニットは更にデータ
・パスで構成され、データ・パスはロード及び1又はス
トア・データをメモリ・システム及び命令実行ユニット
の間で転送する。データ・パスは記憶システムより返さ
れたデータの位置合わせをし、斯くしてキャッシュの4
ワード境界と一致しないデータがメモリ・システムから
命令実行ユニットに正しいアライメントで返されるよう
にする。
【0019】
【発明の実施の形態】本発明は添付の特許請求の範囲に
具体的に提示されている。本発明の上記の、そして後述
の利点の理解を深めるために、次に図面を参照して説明
する。すなわち、図1において、本発明の好適な実施例
に基づいて、一般的に100 で表わされるマイクロプロセ
サ・アーキテクチャが配置されている。システム・アー
キテクチャ100 にはホスト・プロセサ105 、キャッシュ
制御ユニット及びメモリ(CCU)110 、仮想メモリ・ユ
ニット(VMU )115 、入出力サブシステム190 、メモリ
制御及びインタフェース・ユニツト120 、及びインタリ
ーブ・オペレーション用に構成されたインタリーブド・
メモリ・バンク(160a、160b、160C)(以降、主メモリ
160と称す)が含まれている。主メモリ160 は外部デ
ータバス162 を介してMCUl20に接続されている。本発明
はマルチプロセサ環境で動作すると予想されるので、そ
の場合、他のプロセサもメモリバス162 に接続される。
ホストプロセサ105 は主メモリ160 に於いて各アドレス
又は記憶場所に格納されているソフトウェア命令を実行
する。これらのソフトウェア命令はホスト・プロセサ10
5 にプログラム・カウンタの制御の下にイン・オーダで
転送される。しばしば、命令のうちあるものはホストプ
ロセサ105 が一つ又は複数の周辺入出力装置135 をアク
セスすることを必要とする。
【0020】MCU120は一つの回路であり、この回路によ
ってデータ及び命令はCCU110(D_キャッシュ119 とI
_キャッシュ118 (読み出し専用))、IOU150、及び主
メモリ160 の間を転送される(読み出されるか書き込ま
れる)。MCU120にはスイッチ・ネットワーク145 が含ま
れ、それにはスイッチ・アービトレーション・ユニット
132 、データ・キャッシュ・インタフェース・ユニット
117 、命令キャッシュ・インタフェース回路112 、I/O
インタフエース回路155 、及びポートとして知られる一
つ又は複数のメモリポート・インタフェース回路148 が
含まれる。各ポート・インタフェース回路148 にはポー
ト・アービトレーション・ユニット134が含まれてい
る。
【0021】スイツチ・ネツトワーク145 はマスタ装置
とスレーブ装置間の通信の手段である。スイッチ・ネッ
トワーク120 に対するマスタ装置になり得るのはD- キ
ャッシュ119 とI- キャッシュ118 、叉はI/O コントロ
ーラ・ユニット(IOU )150である。スレーブ装置とし
て機能し得るものは、例えば、メモリ・ポート148 叉は
IOU150である。スイッチ・ネットワーク145 の機能はCC
U 110 (I_キャッシュ118 及びD_キャッシュ119 )
とIOU150から様々な命令及びデータ要求を受け取ること
である。これらのユニットをバス要求者と呼ぶ。これら
の要求を受け取った後、スイッチ・アービトレーション
・ユニット132 及びポート・アービトレーション・ユニ
ット134 は要求を優先度に応じて並べ、適切なメモリポ
ートに渡す(命令アドレスによる)。ポート148 、或い
は場合によっては複数のポート、は次に必要なタイミン
グ信号を生成し、データを外部バス162 に送り、あるい
はデータを外部バス162 から受け取る。
【0022】命令フェッチ・ユニット(IFU )106 及び
命令実行ユニット(IEU )107 はホスト・プロセサ105
の主要な動作構成要素である。IFU106及びIEU107の機能
を直接サポートするためにVMU115、CCU110、及びMCU120
が配置されている。IFU106の主要な機能は命令の取り出
し、IEU107による実行を待つ命令のバッファリング、そ
して、一般的に、次の命令の取り出しに使用される次の
仮想アドレスの計算、である。各命令は命令バス101 を
介してI_キャッシュ118 からIFU106によって同時に取
り出される。命令は「バケット」或いは4個の命令の集
合に入れられる。命令集合の転送は制御バス102 を介し
て供給される制御信号によって、IFU106及びCCU110の間
で調整される。取り出される命令の仮想アドレスはIFU
制御及びアドレス・バス103 を介してIFU106によってVM
U115に供給される。VMU115へのアクセスに関する調停の
必要性は、IFU106及びIEU107の両者ともVMU115を共通
の、共有の資源として使用することから生じる。アーキ
テクチャ100 の好適な実施例に於いて、仮想アドレスの
物理ページ内のアドレスを定義する下位ビットはIFU106
によって、制御線102 を介してCCU 110 に直接転送され
る。IFU106によって供給される仮想アドレスの仮想化上
位ビットはバス103 、104 のアドレス部分によってVMU1
15に供給され、そこで対応する物理ページ・アドレスに
変換される。IFU106にとっては、この物理アドレスは変
換要求がVMU115に出された1/2 内部プロセサ・サイクル
後、制御線111 を介してVMU115からCCU110に直接転送さ
れる。
【0023】一方、IFU106によって取り出された命令ス
トリームは命令ストリーム・バス108 を介してIEU107に
供給される。制御信号は制御線109 を介してIFU106とIE
U107の間でやり取りされる。IEU107はデータを双方向デ
ータ・バス112 を介してD_キャッシュ215 に格納し、
またそれから検索する。IEU107によるデータ・アクセス
の場合、物理アドレス全体が制御バス113 のアドレス部
分によってCCU110に供給される。IEU107はVMU115を、仮
想データ・アドレスを、CCU115への送り出しに適切な物
理データ・アドレスに変換する資源として利用する。IF
U106に対するオペレーションとは異なり、VMU115は対応
する物理アドレスをバス104 を介してIEU107に返す。
【0024】CCU110はホスト・プロセサ105 と主メモリ
160 との間のバッファとして使用される。一般的に、CC
U110は小型の、高速メモリで、ホスト・プロセサ105 の
近傍に位置し、最も最近アクサスされたコード又はデー
タを保持する。CCU110は、適切であれば物理アドレスで
定義されたデータ要求が命令及びデータ・キャッシュ11
8 、119 から満たされるか否かを決定するという一般的
に従来的な高レベルの機能を行なう。命令キャッシュあ
るいはデータ・キャッシュ118 、119 へのアクセスによ
ってアクセス要求が満たせる場合、CCU110はデータ・バ
ス101 、113 を通じてデータ転送を調整し実行する。命
令キャッシュ或いはデータ・キャッシュ118 、119 への
アクセスによってアクセス要求が満たせない場合、CCU1
10は対応する物理アドレスをMCU120に供給する。この場
合、物理アドレスの他に、主メモリ160 への読み出し又
は書き込みアクセスが必要であるかを識別するために十
分な制御情報、各要求のソース又は行き先キャッシュ11
8 、119 、更に要求されたオペレーションがIFU106又は
IEU107によって発行された最終的なデータ要求と関連付
けられるための追加の識別情報がCCU110によってMCU120
に供給される。
【0025】図2にIEU107のデータ・パスの代表的な高
レベルのブロック図を示す。IEU107の目的は最小限の時
間で最大数の命令を実行することである。IEU107にはレ
ジスタ・ファイル250 、ロード/ ストア・ユニツト(LS
U )205 、命令バス(IBUS)225 、一式の機能ユニット
260 、262 、230 、イミディエト変位バッファ255 、セ
グメント・ベース・ジェネレータ257 、及び書き込みバ
ス270 が含まれている。LSU205はLSU アドレス・パス22
0 及びLSU データ・パス210 の二つの部分に分かれてい
る。
【0026】スーパースカラ制御ブロック(図示せず)
はデータ依存性検査を行い、必要な機能ユニット260 、
262 、及び230 が使用可能であるかどうかを検査するこ
とによって、ある命令が発行可能であるか否かを決定す
る。一旦スーパースカラ制御ブロックが一つの命令を発
行するように決定すると、IBUS225 は発行される命令が
必要とするデータを検索する(検索はレジスタ・ファイ
ル250 )バイパス・データ280 、282 、或いはイミディ
エト・データ258 、259 から行われる)。IBUS225 は複
数のマルチプレクサによって構成され、これらのマルチ
プレクサが、どのデータが機能ユニット260 、262 、23
0 に転送されるかを選択する。IBUS225はAバスとBバ
スと呼ばれる一対のバスにデータの転送を行なう。選択
されたデータは、諸機能ユニット260 、262 、230 のう
ちどの機能ユニットがその命令によって使用されるか、
或いは現在実行中の命令のオペレーションによって必要
とされているか、を決定することによって、AバスかB
バスのどちらかのバスに入れられる。
【0027】ほとんどの命令の入力及び出力は複数のレ
ジスタ・ファイルのうち一つのレジスタ・ファイルから
送られる、つまり格納されている。好適な実施例では、
各レジスタ・ファイル250 (例えば、別個の整数、浮動
小数点、或いはブール・レジスタ・ファイル)は32個の
実数エントリ254 及び8 個の一時バッファ252 のグルー
プを有する。一つの命令が完了すると(「完了」とはオ
ペレーションが終了し、オペランドはその行き先レジス
タに書き込める状態にあることをいう)、その結果は一
時バッファ252 中の事前に割り当てられた場所に格納さ
れる。これらの結果は後に実レジスタ254 中の適切な場
所に移される。このような結果の一時バッファ252 から
実レジスタ254 への移動は「退避」(retirement)と呼
ばれる。一度に複数の命令が退避できる。退避により、
コンピュータのプログラムカウンタを含めて、マシンの
「公式な状態」の更新が行なわれる。
【0028】命令は「バケット」と呼ばれる4個のグル
ープ毎に命令デコードFIFO(first-in-first-out)先入
れ先出し方式)レジスタ・スタック記憶装置(図示せ
ず)(本明細書では命令ウィンドウと呼ぶ)を介してIF
U106からIEU107へ送られる。バケツトはロード、スト
ア、及び2個の実行ユニットで構成される4個のユニッ
トに分解される。バケットがこれら4個のユニットに分
解された理由はシステム100 はロード、ストア、実行の
各オペレーション又はそれら全ての組み合わせを実行で
きる命令を使用して動作するからである。従って、本発
明はこれら三つの場合の全てを処理できるバケットを供
給するものである。
【0029】IEU107は一度に4個のバケットの命令まで
デコードしスケジュールできる。命令ウィンドウは全部
で16個の命令を4個のバケツトに格納する。IEU107は命
令ウィンドウを検査し、各サイクルごとにIEU107は命令
ウィンドウから最大数の命令を発行しようとする。一旦
1個のバケット中の全ての命令が実行され、それらの結
果がプロセサのレジスタ・ファイル250 に格納される
と、そのバケットは命令ウィンドウからフラッシュさ
れ、次に新しいバケットが命令ウィンドウに格納され
る。一旦その命令が発行されると、レジスタ・ファイル
250 中の諸レジスタがアクセス可能となる。一時レジス
タ252 は先行の命令によって生成されたデータに対して
データ依存性を持っていた命令が実行されるとアクセス
される。レジスタ・ファイル250 からのデータはデータ
線254 を介してIBUS225 に転送される。
【0030】DAFU230 はLSU205によって使用される32ビ
ットのリニア・アドレスを計算する。DAFU230 では多数
の異なったアドレス指定モードがサポートされている。
2サイクルを必要とするデータが4ワード境界を越える
場合、そのデータの最初と最後のアドレスはDAFU230 に
よって計算される。アドレスを形成するために4個まで
のコンポーネントが加算される。すなわち、セグメント
・ベース、ベース・レジスタ、スケールド・インデック
ス・レジスタ、及び変位値、の4個のコンポーネントで
ある。セグメント・ベースには目的のメモリ・セグメン
トの開始アドレスが含まれている。ベース及びインデッ
クス・レジスタはレジスタ・ファイル250 中のどの32ビ
ットレジスタであっても構わない。インデックス・レジ
スタはそれを1、2、4、又は8で乗算することによっ
てスケールされる。変位値は命令中に存在する定数値
(イミディエート値)である。これらのフィールドのう
ちどのフィールドも省略可能であり、斯くしてアドレス
演算に於ける最大限の自由度が得られる。
【0031】セグメント・ベースはセグメント・レジス
タ・ブロック257 から得られる。セグメント・ベース・
ジェネレータ257 はデータが如何にしてメモリ中で分割
されているかを示す一つの値を生成し、この値をデータ
線266 を介してDAFU230 に転送する。変位はイミディエ
ート変位バッファ255 から得られる。イミディエート変
位バッファ255 はイミディエート・データを線265 を介
してDAFU230 に転送し、またそれぞれデータ線258 及び
259 を介してIBUS225 に転送する。DAFU230 及びVMU115
はLSU205に全てのロード及び/ 叉はストア要求を供給す
る。LSU205はこれらの要求を処理し、後に全ての要求さ
れたデータを書き込みバス270 に返す。書き込みバス27
0 はマルチプレクサの集合で成り、マルチプレクサは優
先度スキームの基づいてどのデータがレジスタ・ファイ
ル250 にラッチするかを選択する(例えば、LSU205によ
って供給されるデータ又は機能ユニット260 或いは262
によって供給されるデータ)。そのデータは線275 、27
6 を介して書き込みバス270 からレジスタ・ファイル25
0 に転送される。ロード及び/ 叉はストアからのデータ
は常に最高の優先度を与えられる。時折、2個の命令が
連続して発行され、それらが相互に依存している場合、
IEU107はそのデータをレジスタ・ファイル250 に格納す
ることをバイパスし、それを直ちにIBUS225 にラッチし
ようとする。これはデータ線280 、281 を介して達成で
きる。従って、データを待つ資源は、そのデータがレジ
スタ・ファイル250 の中を通過するまで待ってサイクル
を浪費しなくてすむ。
【0032】データ線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) データの位置合わせである。
【0033】各命令バケットは同一のアドレスに対する
ロード及びストア(その間に他のオペレーションが含ま
れることもある)、ロードのみ、ストアのみ含むことが
できる。或いはロードもストアも含まないこともある。
従って、LSU205は最大4 個のロードと最大4 個のストア
から選択することができる。本発明の好適な実施例で使
用される命令セットはCISC型命令セットで、それによっ
て次のような複雑なオペレーションが可能となる。
【0034】 a) R1<-R1+[R2+(R3*2)+3] b) [R2]<-[R2]OR R4 但し、[x] はアドレスxに存在するメモリ・オペランド
である。好適な実施例に於ける命令デコード・ユニット
(図示せず)はこれらのCISC型命令を次のようにRISC型
シーケンスに分解する。
【0035】 a) LOAD[R2+(R3*2)+3]->Temp Register Execute R1+Te mp ->R1 b) LOAD[R2]->Temp Register Execute Temp OR R4->Te mp Register STORE Temp Register to addrcss[R2] このどちらの場合でも、DAFU230 はメモリ・オペランド
のアドレスを計算するが、ロード及びストアは同じアド
レスを共有しているので1個の命令バケット当たり一つ
のアドレス計算だけが必要である。CISC型命令をRISC型
命令にデコーディングすることについての説明に関して
は1992年3 月31日出願の米国特許出願番号07/857,599
(代理人整理香号SP032 )「CISC型からRISC型命令への
変換のためのアライメント並びにデコーディング」(CI
SC to RISC Instruction TranslationAlignment and D
ecoding)を参照されたい。当該出願の開示を参照する
ことによって本出願に含まれているものとする。
【0036】図3にLSU205のアドレス・パス220 の詳細
なブロック図を示す。ロード命令は命令ウインドウから
発行され、IEU107によってアウト・オブ・オーダで実行
されるが、ストアは常にイン・オーダで発行される。ロ
ード及び/ 叉はストア用のアドレスは、全てのオペラン
ドが有効で且つDAFU230 がアドレス計算に使用可能にな
りしだい計算される。DAFU230 から物理アドレスを受け
取る前にLSU205はキャッシュ要求を行うことができる
が、次のクロックサイクルまでに物理アドレスがDAFU23
0 からもVMU115からも来ない場合、キャッシュ要求は取
り消される。その場合、キャッシュ要求は後に再発行さ
れねばならない。
【0037】各命令バケット当たり1個のアドレスのみ
が必要で、そのアドレスはロード・アドレスとストア・
アドレスの両方として機能する。各命令バケット当た
り、2個の32ビット・アドレスはアドレス・バッファ31
0 〜313 のうち一つに格納される。すなわち、アクセス
の最初のバイトが一つのバッファに格納され、アクセス
の最後のバイトが別のバッファに格納される。下位12ビ
ットがDAFU130 で準備されると、これらのビットは一時
バッファ305 にラッチされる。上位20ビットがVMU115で
準備されると、次のサイクルで全ての32ビットは適切な
アドレス・バッファにラッチされる(すなわち、Addres
s 1叉はAddrcss 2)。アドレス計算は命令の順序で行
なわれず、レジスタ依存性が解消した時行なわれる。ア
ドレス変換の後、有効ビット(図示せず)が命令のアド
レス・バッファ310 〜313 に設定され、アドレスが有効
であることを示す。両方のアドレスは二つの理由で保持
される。すなわち、アドレス衝突の検出とページ交差用
のキャッシュ要求である。
【0038】IFU106によって使用されるアドレスが仮想
アドレスであるのに対し、LSU205によって使用されるア
ドレスは物理アドレスである。IFU106は、CCU110とVMU1
15間の調整によって物理アドレスが生成されるのに依存
しつつ、仮想アドレスに対して動作するのに対し、IEU1
07ではLSU205が物理アドレス・モードで直接動作するこ
とが必要である。この条件が必要である理由はオーバラ
ップする物理アドレスのデータ・ロード及びストア・オ
ペレーションを伴う、アウト・オブ・オーダで実行され
る命令が存在する場合、データの保全を保証するためで
ある。データ保全を保証するために、データがストア命
令によって供給された場合、LSU205はストア命令がIEU1
07によって退避されるまでそのデータをバッファリング
する。従って、LSU205によってバッファリングされたス
トア・データはLSU205にのみ一意的に存在することがあ
る。同一の物理アドレスを実行済みではあるが未だ退避
されていないストア命令として参照する複数のロード命
令は、ストア命令が実際に退避されるまで遅らされる。
その時点で、ストア・データはLSU205によってCCU110に
転送可能となり、次に、CCU のデータ・ロード・オペレ
ーションの実行によって直ちに再びロードされる。
【0039】上述の如く、DAFU230 によるアドレス計算
は1クロック・サイクルで起こり、VMU132によるアドレ
ス変換は次のクロック・サイクルで起こる。アドレスが
ロード用のアドレスであるならば、キャッシュ要求が行
われる。一方、アドレスがストア用のアドレスであるな
らば、格納を行う前にLSU205は退避信号が送られて来る
のを待つ。ロード要求はCCU110に対してアドレス計算の
最初のサイクルでも行なえる。この時点で該アドレスの
下位12ビットがCCU110に送られ、上位20ビット(ページ
番号を表わす)はアドレス変換の後、次のサイクルでCC
U110に送られる。ロード・ストア・アドレス・パス220
が使用可能な場合、線330 を介してイミディエト要求を
キャッシュ110 に対して行なうことができる。現在、ロ
ード・ストア・アドレス・パス220 には実行待ちのロー
ド及び/ 又はストア・アドレスは存在しないので、アド
レス衝突の可能性も書き込み実行待ちの可能性も全く存
在しない。従って、直ちにキャッシュ110 に対して要求
を行なえる。
【0040】ブロック340 には複数のマルチプレクサが
含まれているが、このブロックはアドレス・バッファ31
0 〜313 からキャッシュ要求用のアドレスを選択するた
めに使用される。LSU205はキャッシュ110 に対して要求
を行なうためにアドレス・バッファ310-313 (即ち、予
約ステーション)を使用する。4個のアドレス・バッフ
ァ310 〜313 (予約ステーションとも呼ばれる)は中央
命令ウィンドウ(図示せず)に含まれる4個のバケット
に対応する。IEU107がデコード・ユニット(図示せず)
から新しいバケットを要求すると、アドレス・バッファ
310 〜313 のうち一つが予約される。アドレス・バッフ
ァ310 〜313 は命令番号に従って割り当てられる。最も
若い(最新の)命令を示すための履歴ポインタが更新さ
れる。この時点に於いて、命令がロード、ストア、その
両方を伴うものであるか、あるいはそのどちらも伴わな
いものであるかが判明する。また、ロード及び/ 又はス
トアオペレーションで使用されるデータのサイズも判明
する。対応する命令がIEU107によって退避された時に、
アドレス・バッファ310 〜313 は割り当て解除される。
割り当て解除の後、新しい命令バケットがデコードユニ
ット(図示せず)から受け取られる。ロード・バイパス
及びアウト・オブ・オーダ・ロード実行を使用するため
には、ストアに対するロード依存性(アドレス衝突)を
検出する必要がある。ロード依存性はアドレス衝突また
は実行待ちのストア・アドレスのよって示される。ロー
ド依存性が発生するのは、古い命令がストア・オペレー
ションを要求した記憶場所と同じ記憶場所でロード・オ
ペレーションが要求された時である。アドレス衝突の検
出には、ロードの最初のアドレスが各先行ストアの2個
のアドレス(最初と最後)と比較される必要がある。ア
ドレスの最後のバイトとのこのような比較が必要なの
は、ストアが4ワード・ページ境界を越えたり、位置合
わせがなされていなかったりするからである。アドレス
・ビットのマスキングは偽の依存性検出を最低限に抑え
るためにデータのサイズに応じて行なわれる。ロード・
データが4ワード(64ビット)境界からはみだすと、好
適な実施例ではそのロード・データにはロード依存性が
あると仮定される。その理由は、ロードの第2アドレス
を各ストアの二つのアドレスと比較するコンパレータが
存在しないからである。一つの衝突が検出されると、ロ
ード・オペレーションはその衝突しているストア・オペ
レーションがCCU110に送られるまで待たなければならな
い。実行待ちのストア・アドレスとはストアのアドレス
が未だ有効でないということを意味する。従って、その
アドレスが判明するまでロード依存性の存在が仮定され
るのである。
【0041】図4にLSU205によって使用されるアドレス
衝突ブロック400 の概略図を示す。アドレス比較論理に
よる二つのアドレスの比較は最下位ビットのビット0 〜
4 がマスクされた後行なわれる。マスキングの後、アド
レスが全く一致するならば、これら二つのアドレスの間
に衝突が存在することになる。各比較ごとに、二つのオ
ペレーションの内最大のオペランドがマスキング制御の
ために使用される。各アドレスから、0 〜4 個の最下位
ビットがマスクされる。その際、回路400 はアドレス・
バッファ410 〜413 の各バッファごとに1回、つまり合
計4回複写される(図4にアドレス・バッファ310 のア
ドレス衝突検出ブロックを示す)。
【0042】各ロードの最初のアドレス405 、406 がア
ドレス407 〜418 のうち1対おきに比較される。2個の
比較の結果とその有効ビット419 〜424 間でAND がとら
れ、その後全部でORがとられ、その結果アドレス・マッ
チ430a,430b,430cが生成される。アドレス・マッチ43
0 は次に命令番号比較425 〜427 及びストア・ビット43
1 〜433 とAND がとられ、その結果衝突チェック450a、
450b、450cが生成される。命令番号比較425 〜427 は二
つの命令間の比較的新しさを示す。例えば、命令番号比
較425 はアドレス・バッファ310 中の最初の命令と、ア
ドレス・バッファ311 中の最後の命令との間の比較的新
しさを示す。第2命令が第1命令よりも古ければ、衝突
は存在しない。これら3個の衝突検査はORがとられて、
検査を受けている特定のロードのアドレス衝突信号460
を生成する。
【0043】アドレス衝突の検出に於いては、各ロード
の開始(第1)アドレスが各ストアの第1及び第2アド
レスと比較される。一つのロード又はストア・オペレー
ションは1〜10バイトまでのどこかをアクセスするの
で、衝突が検出されることを保証するためにそれらのア
ドレスのうち幾つかがマスクされる。このようなマスキ
ングは信号470 〜475 で行なわれる。二つのアドレスが
相互に比較される前に、最下位ビットのうちビット0、
2、3、又は4がマスクされる。マスクされたアドレス
が全く一致する場合(等しい比較)、アドレス衝突の可
能性がある。マスクされるビットの数(0、2、3、
4)はアドレスが比較されているその二つのアドレスの
オペランドのサイズ、そして第1アドレスの最下位の2
ビットによって異なる。第1アドレスの最下位2ビット
が使用されるのは、間違って検出される衝突の数を制限
するためである。マスキングに於いて、最大のオペラン
ド・サイズは次のように使用される。
【0044】 オペランドサイズ マスクするビット数 1バイト 0ビットマスク 2バイト アドレスが0で終わる場合、1ビットマスク アドレスが01で終わる場合、2ビットマスク アドレスが11で終わる場合、3ビットマスク 4バイト アドレスが00で終わる場合、2ビットマスク アドレスが1又は10で終わる場合、3ビットマスク 8バイト 3ビットマスク 10バイト 4ビットマスク 更に、ロード・オペレーションが4ワード境界を越える
たびに、アドレス衝突が発生していることが仮定され
る。その理由は、ロードの最初のアドレスだけがストア
・アドレスと比較されるので、アドレス衝突が検出され
ないことがあるからである。ハードウェア中で使用され
るコンパレータの数を二倍に増やすことにより、この制
約は削除できる。ストア・アドレスが4ワード境界を越
えることがあれば、アドレス衝突は検出される。
【0045】マスキングの必要性を次の幾つかの例で示
す。(下記の全ての数字は二進数である)。ロードのア
ドレス2は衝突検査の目的で使用されないので、アドレ
ス2は省略する。 例1: オペレーション アドレス1 アドレス2 サイズ マスク LOAD …1001 … 2バイト 2ビット STORE …1000 …1011 4バイト 2ビット ロード・アドレス1001がマスクなしに1000及び1011と比
較された場合、ストアがバイト1000,1001、1010、及び
1011に書き込んだとしても衝突は検出されない。2個の
LSB がマスクされていれば、結果は次のようになる。
【0046】 オペレーション アドレス1 アドレス2 LOAD …1000 … STORE …1000 …1000 例2: オペレーション アドレス1 アドレス2 サイズ マスク LOAD …0100 … 4バイト 2ビット STORE …0001 …1000 8バイト 3ビット 3個のMSB がマスクされていれば、下記のアドレスが生
成され、アドレス衝突が検出される。
【0047】 オペレーション アドレス1 アドレス2 LOAD …0000 … STORE …0000 …1000 2個のLSB だけがマスクされているならば、下記のアド
レスが生成され、アドレス衝突は検出されない。
【0048】 オペレーション アドレス1 アドレス2 LOAD …0100 … STORE …0000 …1000 前述の如く、LSU205はキャッシュ要求を必要とする最大
4個のロード命令と最大4個のストア命令のウィンドウ
から選択を行なうことができる。これらのロード及びス
トアはCCU110に対して互いに競合し、競合するロード及
びストア間の選択は下記の如く行なわれる。
【0049】ストア命令は、単に他のロード及びストア
だけではなく、全ての命令に対してプログラム順序で行
なわれなければならない。ストア要求はストア命令を退
避する信号がIEU107から送られた段階でCCU110に発行さ
れる。この信号は、全ての先行命令が終了し、それらの
命令では例外も、誤って予測された分岐も無かったこと
を知らせる。ストア命令をこの信号よりも早く行なうこ
とは不可能である。その理由は、ストアはマシンの状態
を非可逆的に変更するので、例外も分岐も発生しなかっ
たことを確認することが重要であるからである。データ
・キャッシュ119 の使用の目的ではストアはロードに優
先する。その理由は、ストアの遅延はバケットの退避の
遅延をもたらし、従って命令デコード・ユニット(図示
せず)からの次のデコード済みバケットの受理を遅らせ
るからである。
【0050】ロードが先行ストアに依存しない限り、ほ
とんどのロード命令はアウト・オブ・オーダで発行でき
る。これの例外は、メモリ・マップされたI/O からの読
み出しのような、副作用を持つロードである。本発明の
好適な実施例ではメモリ・マップ入出力(I/O )サブシ
ステムが使用される。ある種のI/O デバイスは読み出し
によってアクセスされるとその状態が変化する。例え
ば、ある種のFIFOバッファは次のデータ項目に順香を付
けて、その結果ある種のデバイス状態レジスタは自動的
にクリアされる。このようなシステムに於いては、ロー
ド・バイパスは危険なオペレーションである。誤って予
測された分岐、或いは例外のために、バイパスされたロ
ードが誤って発行されることがある。そのようにバイパ
スされたロードがシステム状態を不正に変更するような
事態が生じてはならない。
【0051】この問題を解決する方法はこれらの要求が
イン・オーダで行なわれるようにロード/ ストア・ユニ
ットを構成することである。ロード/ ストア・ユニット
では、キャッシュ要求で要求されたデータがキャッシュ
可能であるか否かにかかわらずキャッシュ110 に通知を
行なう機構が用意されている。この機構によって、プロ
セサはこのデータがライト・スルーである、つまりキャ
ッシュ可能である、とキャッシュ110 に通知することが
でき、また直ちにメモリはライト・スルーを行なうべき
であると通知する。システムの状態を変更する外部読み
だしアクセスはこれらのキャッシュ不能アクセスのサブ
セットであるが、上記の問題は、このデータはキャッシ
ュ不可能であるとのキャッシュ110 への通知に関連して
イン・オーダの要求を行なうことによって解決される。
従って、ロードバイパスを完全に回避するかわりに、プ
ロセサはキャッシュ不可能なロードのバイパスを防止で
きる。このようにして、ほとんどのロード・オペレーシ
ョンが、まれに発生するキャッシュ不可能なロードでの
不正なオペレーションを生成することなく、バイパスを
利用できるようになる。このような機構はまたメモリ変
更以前に例外が発生しないことを保証するためにも必要
である。一つのロードが一つのストアに対して依存性を
持たない場合、「ストアのロード・バイパス」が発生す
る。各ロードはページ・キャッシュ使用不可(page-cac
he-disable)及びページ・ライト・スルー(pagc-write
-through)という2個のビットと対応している。これら
のビットはVMU115又はIEU107から得られるビットであ
る。
【0052】ストア・データは二ケ所のうちの一つから
生成される。第1に、それは64ビット整数ストア中に整
数データ・バス上でLSU205に直接発行できる。第2の方
法は整数及び浮動小数点機能ユニットによる結果を監視
(スヌーピング)することによって行なわれる。これは
通常の「実行後格納」シーケンスをサポートするために
行なわれる。このシーケンスでは一つの命令の実行の結
果はその命令のストア・データである。そうすることに
よって、”[R2]<[R2]OR R4”のようなCISC型命令の結果
が、その命令が明示的にLSU205に発行されなくても格納
されるようになる。
【0053】LSU205はサイクルごとに一つの要求だけを
CCU110に対して行なうことができ、その場合ストア・オ
ペレーションが優先される。書き込み制御がLSU205に対
し、この命令は退避可能であると通知すると直ちにスト
ア・オペレーションはCCU110に送信される。次の優先度
はアドレス・バッファ310 〜313 に有効なアドレスを持
ち、アドレス衝突も実行待ちの書き込みも持たない、最
も古いロード・オペレーションに与えられる。命令間の
比較的な新しさはバッファの位置とバッファ・ポインタ
の値で決定される。最後に、DAFU230 から送信された新
しいロードが優先度を持つ。この最後の場合、アドレス
衝突及び実行待ち書き込みは要求が行なわれるまで検査
されず、そして必要ならばロード要求は取り消される。
【0054】時折、キャッシュ・ミスが起こる。ストア
の場合、CCU110はこのような事態を処理し、その結果LS
U205はキャッシュ・ミスの影響を全然受けずに済む。ロ
ードの場合、LSU205はキャッシュ・ミスについて通知を
受け、データが返される前に遅延が起こる。LSU205は次
にキャッシュ・ミスの発生をIEU107に通知し、その結果
このデータを待っている命令は取り消される。目的のデ
ータがキャッシュ・ライン境界を越えると、ロード・オ
ペレーションに対して2個叉は3個のキャッシュ・アク
セスが必要になります。これらの要求は連続して行なわ
れ、1サイクル当たり一つの要求が行なわれる。好適な
実施例に於いて、一つのキャッシュ・ラインの幅は8バ
イトで、000 で終了するアドレスに位置合わせされてい
る。3個のキャッシュ要求が必要とされるのは111 で終
了するアドレスで始まる80ビット・データの場合だけで
ある。このデータがデータ・キャッシュ119 から返され
る場合、ロード・アライナ550 (図5、図6を参照して
下記に説明する)が配置され、このデータのシフトとラ
ッチが行なわれる。
【0055】ほとんどのロード/ ストア・ユニットはデ
ータが行き先レジスタに入るようにそのデータをゼロま
たはサインで拡張するが、本発明の好適な実施例では、
行き先レジスタの初期値が保持され、その一部のみが変
更される。勿論、これは8又は16ビット長の整数ロード
・データの場合のみ意味がある。レジスタの初期の内容
はアドレス計算の時点でLSU 205 に送られ、次にデータ
・キャッシュ119 からのロード・データは初期値データ
とマージされる。
【0056】図5、図6にLSU 整数データ・パス210 の
概略図を示す。LSU データ・パス210 はロード及び/ 叉
はストア・データをCCU110及びIEU107間で転送する。ロ
ード・オペレーション中に、データは線290 を介してデ
ータ・キャッシュ119 からLSU データ・パス210 に入
り、ストア・オペレーション中には線275 、276 、277
を介してIEU107から入る。データ線275 及び276 は32ビ
ット・データを書き込みバス270 を介して機能ユニット
260 及び262 からLSU データ・パス210 に供給し、線28
2 は有効アドレス叉ははマージされたデータを供給す
る。有効データがLSU データ・パス210 へ供給されるの
は一つの命令の結果が、そのアドレス・ロケーションに
存在するデータではなく、アドレスそのものである場合
である。ストア・データ線516 は64ビット・データをLS
U データ・パス210 に供給する。データはデータ線290
または292 を介してデータ・キャッシュ119 又はIEU107
のいずれかにそれぞれ返される。
【0057】データ・バッファ520 〜526 は、データ・
キャッシュ119 への或いはデータ・キャッシュ119 から
のデータ転送中、ロード及び/ 叉はストア・データを保
持するために配置されている。各データ・バッファ520
〜526 及びアドレス・バッファ310 〜313 の間に1対1
の対応が存在する(そしてこれらのアドレス・バッファ
及び4個の命令バケットとの間にも1対1の対応が存在
する)。各アドレス・バッファ310 〜313 にはLSU デー
タ・パス210 中に2個の対応するデータ・バッファが存
在する。すなわち、整数ロード及び整数ストア・データ
(8バイト)520 〜526 に対して一つのデータ・バッフ
ァと、浮動小数点ロード及びストアのデータ(10バイ
ト)540 〜546 に対して一つのデータ・バッファであ
る。本発明に於いては、浮動小数点演算用に一つの別個
のLSU データ・パスが存在する。浮動小数点データ・バ
ッファ540 〜546 の動作は整数データ・パスに関して説
明された動作と同一である。一つの命令は整数命令或い
は浮動小数点命令のいずれかであるので、この二つのユ
ニットは物理的に接続されていなくても構わない。以下
に、整数データ・バッファ520 〜526 の動作のみを詳し
く説明する。
【0058】制御線581 及び587 はデータ・フローをそ
れぞれマルチプレクサ560 及び565を介して制御するた
めに配置されている。又、制御線582 及び586 はデータ
・バッファ520 、522 、524 、及び526 へのデータ・フ
ロー、そしてデータ・バッファ520 、522 、524 、及び
526 からのデータ・フローを制御するために配置されて
いる。ロード・オペレーションに於いては、データは線
290 を介してデータ・キャッシュ119 からLSU データ・
パス210 に入る。ロード・データはアライン・ブロック
550 に入り、アライン・ブロックはデータの位置合わせ
を行ない(下記の説明を参照されたい)、位置合わせさ
れたロード・データをマルチプレクサ530 〜536に転送
する。位置合わせされたロード・データは次に、どの命
令がデータを要求したかにより、データ・バッファ520
〜526 の一つにラッチされる。ストア・オペレーション
中、ストア・データはデータ線275 、276 、277 を介し
てIEU107からLSU データ・パス210 へ入り、その後、デ
ータ・バッファ520 〜526 のうち適切なデータ・バッフ
ァにラッチされる。
【0059】ロード及び/ 叉はストア・データのうちの
どちらかがデータ・バッファ520 〜526 にラッチされる
と、そのデータは線290 を介してデータ・キャッシュ11
9 へ、或いは線292 を介してIEU へのいずれかに送られ
る。4個のデータ・バッファ520 〜526 はデータをマル
チプレクサ560 、565 に供給し、次にこれらのマルチプ
レクサはLSU データ・パス210 から転送されるべき適切
なデータを選択する。しばしば、ストアを含む命令の結
果は主メモリ260 に格納されなければならない。従っ
て、命令の実行の後、その結果はデータ線275 、276 を
介してLSU データ・パス210 に直接書き込まれる(最初
に結果をレジスタ・ファイル250 に格納するのではなし
に)。LSU データ・パス210 は命令の退避信号を受け取
るまでデータを適切なデータ・バッファ520 〜526 に保
持する。
【0060】定期的に、一つの特定な命令は一つの行き
先レジスタ全体に格納を行なわないようになっている。
この場合、「マージ・データ」がデータ線282 を介して
LSUデータ・パス210 に供給される。例えば、一つの命
令が8ビットだけを行き先レジスタに格納したいが、残
りの24ビットをレジスタに保存したい場合、マージ・オ
ぺレーションが行なわれる。従って、データ線282 は行
き先レジスタの初期値(すなわち、マージ・データ)を
LSU データ・パス210 に供給する。マージ・データ(す
なわち、行き先レジスタの内容)は適切なデータ・バッ
ファ520-526 にラツチされる。次に、新しい(ロード)
データが線290(a)を介してキャッシュから戻され、アラ
イン・ブロック550 に入る。アライン・ブロック550 は
データの位置合わせを行ない、それをマルチプレクサ53
0 〜536 に供給する。ロード・データは次に、マージ・
データを保持している同じデータ・バッファ520 〜526
にラッチされる。一旦全てのデータがアセンブルされる
と、それは適宜な記憶場所(すなわち、データ・キャッ
シュ119 又はレジスタ・ファイル250 )に転送可能とな
る。
【0061】従来のロード・ストア・ユニットでは普
通、アドレスが特定の境界に位置合わせされなければな
らない。例えば、32ビット・データ・アクセスでは000
で終わるアドレスがなければならない。しかしながら、
好適な実施例のコンピュータ・アーキテクチャによって
8 、16、32、64、叉は80ビット・データの位置合わせさ
れていないアクセスが可能になる。位置合わせされてい
ないアドレスを有することは次のような影響を及ぼす。
つまり、(1) ストアに対するロード依存性検出のために
さらに別のハードウェアが必要である。(2) データがペ
ージ境界を越えるとアドレス変換が2回必要になる。
(3) 1回のロードに対して複数のキャッシュ・アクセス
が必要になる。
【0062】CCU110によって返されたロード・データの
長さは8バイトであり、それはデータ・バッファ520 〜
526 中の適切な位置に位置合せして格納される必要があ
る。時には、完全なロードができあがるまでに2叉は3
のデータ集合が返されねばならない(例えば、二つ以上
のキャッシュ・アクセスが必要な時)。更に、これらの
データ集合がアウト・オブ・オーダで返される場合があ
るので、特別な措置が必要である。整数データの位置合
わせは8個の8入力マルチプレクサ(8ビット幅)を使
用して処理される。各マルチプレクサはデータ要求の1
バイトに対応する。CCU110からロードされた8バイトの
データのうちどのデータが適切なデータ・バッファ520
〜526 にラツチされるべきかを決定するために8ビット
の選択線が使用される。更に、データ・バッファ520 〜
526 はどのバイトが上書きされるべきかを制御するため
にバイト・イネーブルになる。
【0063】図7にキャッシュ線交差を持つ位置合わせ
されていない整数ロードの1例を示す。この例では、ア
ドレスXXXXXXX5から4バイトのロードが要求さ
れているが、このロード要求はキャッシュ線からはみだ
すので、その結果2個のロード要求が必要とされる。最
初のキャッシュ要求がデータを返した後、データはロー
ド・アライナ550 に転送される。ロード・アライナ550
は最後の3バイトをバイト0までシフトし、その後、最
後の3バイトは適切なデータ・バッファ520 〜526 にラ
ッチされる。データ・バッファの最後のバイトはストア
によって上書きされない。一旦第2のキャッシュ要求の
データが返されると、図示されているようにキャッシュ
線の最初のバイトがデータ・バッファの最後のバイトに
ラッチされる。更に、この例ではキャッシュ線はイン・
オーダで返されるが、それはどの順序で返されても構わ
ない。
【0064】浮動小数点データ位置合わせは整数位置合
わせと同じ働きをするが、浮動小数点データ位置合わせ
の場合、10個の8入力マルチプレクサが使用される。LS
U205ではロード・フォワーディングはサポートされてい
ない。ロードがストアに依存する場合、そのロードはロ
ード要求を行なう前に、ストア・データがキャッシュに
書き込まれるまで待たなければならない。しかし、本発
明の設計では、本質的にロード・フォワーディング機構
の実現を阻止するような制約はない。当業者にとって、
ロード・フォワーディングを実現するために必要なハー
ドウェア変更を行なうことは容易であろう。
【0065】LSU205の好適な実施例では多重処理環境が
サポートされている。各命令はロード及び/ 又はストア
以外に、ロック或いはアンロック・コマンドを含むこと
ができる。これらの信号はキャッシュに送られ、キャッ
シュはデータをロックし、メモリ及び入出力サブシステ
ムに同じことをするように通知を送る。ロック又はアン
ロック・コマンドが命令ウィンドウに存在する場合、ロ
ードはそれらの命令の順序と同じ順序で行なわれなけれ
ばならない。すなわち、後続のロードは最初にロック/
アンロック・コマンドを伴うロードを先ず行なわないと
実行できない。LSU205のオペレーション例表AにLSU205
のオペレーションを示すサンプル・プログラムを示す。
プログラムはインテル486 (Intel 486 )の表記法で記
述されている。3個のレジスタが使用され、それらはea
x 、ebx 、そしてecx とラベルされている。ロードさ
れ、ロード及び/ 又はストアされるデータは32ビット幅
のデータであると仮定される。ブラケットにアドレス・
ロケーションを示す。
【0066】表A (1)mov ebx,[ecx] (2)dec ebx (3)or[eax],ebx (4)(size 16)mov ebx,[eax+
3] このコードの最初の行では、アドレスecx に格納された
データがebx に移される。従って、この命令は一つのロ
ード・オペレーションである。第2の命令ではレジスタ
ebx にある値が減少され、この命令ではロードもストア
も行なわれない。第3の命令はアドレスeax に格納され
たデータ及びデータebx に対して論理和をとり、結果を
[eax] に格納する。従って、このオペレーションではロ
ードとストアの両方が行なわれる。最後に第4命令では
アドレスeax+3 に格納された16ビットのデータがebx に
移動される。従って、この命令ではロード・オペレーシ
ョンが行なわれる。
【0067】このコードが実行される前に、下記の値
(全て16進法で表記)がレジスタ及びメモリに含まれ
ていると仮定する。
【0068】 表B eax=0000 0100[0100]=0000 4321 [0104]=FFFF FFFF ecx=0000 1201[1200]=6500 01FF [1204]=FFFF FF87 表Aの命令の実行の結果を表Cに示す。
【0069】 表C mov ebx,[ecx ] EBX <…[1201]=8765 0001 dec ebx EBX <…8765 0001-1=8765 0000 or[eax ], ebx EAX <…0000 4321or8765 0000=8765 4321 (SIZE 16)mov ebx,[eax+3 ] EBX <…[0100+3]= [0103] =FF87 …>8765 FF87 次に、表Aの命令の実行の結果の詳細を説明する。
【0070】図8から図15において、LSU205の代表的
な例を示す。各図は一つのサイクルを表わす(例えば、
図8はサイクル1を表わし、図9はサイクル2を表わ
す)。4個のアドレス・バッファ310 〜313 、及びロー
ド701 、ストア702 、及び有効ビット717 が図示されて
いる。更に、衝突ビット710 、実行待ちビット715 、及
び要求されたデータのサイズ指定705 が図示されてい
る。アドレス0100から0107及びアドレス1200から1207の
カレント・メモリ内容は参照香号780 として示されてい
る。ブロック730 にカレント・キャッシュ要求を示す。
ブロック740 はデータが(そのようなデータが存在する
ならば)CCU110から最近返されたことを示す。ブロツク
760 はVMU115から返されているアドレスを示し、ブロッ
ク770 はDAFU230 から返されているアドレスを示す。ロ
ード及びストア・ビットはイン・オーダで設定される
が、各アドレスはLSU205にアウト・オブ・オーダで供給
されても構わない。ブロック750 に、返されたデータが
如何にして物理的に位置合わせされるかを示す。
【0071】図8に於いて、最初の命令は「mov ebx,
[ecx ]」である。最初に、ecx に格納されているデー
タはLSU アドレス・パス220 に転送されなければならな
い。ecx に格納されているアドレス、つまり1201はDAFU
230 から一時アドレス・バッファ305 に転送されるが、
このアドレス全体は必要でない。最初の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に設定
される。ロードもストアも必要でないので、この命令で
はアドレス計算は必要でない。
【0072】図9に於いて、ecx に格納されたアドレス
の第1バイトはレジスタ・アドレス1(address1)に入
れられ、そのアドレスの最後のバイトはアドレス2(ad
drcss2)に入れられる。これらのアドレスは両方とも勿
論アドレス・バッファ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はアドレス1200で始まるデ
ータのブロックを返したが、命令が要求したデータは12
01で始まる32ビットのデータである。従って、ブロック
750 に示すように、データは位置合わせされなければな
らない。返されたデータはLD-ALIGNを00000010に設定す
ることによって2ビット分シフトされ、最初の32ビット
のデータはBYTE-SELによって選択される。
【0073】図10に於いて、ブロック770 に示すよう
に、次のアドレスがDAFU230 によって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 にラッチされる。
【0074】図11に於いて、第4命令に対応するアド
レスはアドレス・バッファ313 にラッチされ、対応する
有効ビットが設定されている。次に、アドレス衝突オペ
レーションが行なわれる。第4命令からのaddress1が第
3命令のaddress1及びaddress2と比較され、その結果ア
ドレス衝突の存在が決定される。従って、アドレス・バ
ッファ313 に対応する衝突ビット710 が設定される。衝
突が存在するために、サイクル4の期間中キャッシュ要
求は生成できない。しかし、キャッシュ要求の実行が不
可能であっても、ブロックで示されているように第4命
令用のマージ・データがIEU107から到着する。マージ・
データとはレジスタebx からのデータである。マージ・
データが必要なのは、第4命令が単に16ビット・オペレ
ーションであるからである。このマージ・データはデー
タ・バッファ526 にラッチされる。
【0075】図12に於いて、書き込みAデータ(WRA-
DATA)がIEU107から到着する。WRA-DATAは第3命令に於
けるOR演算の結果である。このデータはデータ・バッフ
ァ524 にラツチされる。更に、ブロック780 に示すよう
に、サイクル5の期間中次のバケット、即ちバケット
1、が退避される。具体的には、retire next ビットが
1に設定され、次の命令が退避可能であることを示し、
retire nu mビットが1に設定され、バケット1 にある
命令を退避すべきであることを示す。この場合、第3命
令と4命令の間にアドレス衝突がまだ存在する。
【0076】図13に於いて、データ・バッファ524 中
のデータはebx 中のデータとORがとられ、その結果値87
654321が生成される。ブロック785 に示すように、サイ
クル6の期間中、第3命令が退避される。第3命令の退
避によって、LSU205は第4命令に対応する衝突ビット71
0 をリセットできるようになる。ブロック730 に示すよ
うに、OR演算によって生成された値を記憶場所00000100
(レジスタeax に格納されているアドレス)に格納する
ためのキャッシュ要求が行なわれる。ブロック780 に示
すように、データはこのデータ・ロケーションに格納さ
れている。
【0077】図14に於いて、第4命令は記憶場所0103
(レジスタeax+3 の最初の16ビット)に格納されている
データをロードする。従って、ブロック730 に示すよう
に、第4命令に対応するロード・オペレーション用にキ
ャッシュ要求が行なわれる。
【0078】図15に於いて、ブロック740 に示すよう
に、要求された(位置合わせされていない)ロード・デ
ータがキャッシュから返される。ブロック750 に示すよ
うに、次にデータは3バイト分シフトすることによって
位置合わせされる。その理由は、要求されたデータはア
ドレス0100でなくアドレス0103で始まるからである。最
初の16ビットだけが要求されたので、最初の2バイトだ
けが位置合わせされたデータから選択される。これら16
ビットは次にデータ・バッファ526 にラッチされ、この
データ・バッファはIEU107に逆方向に転送されて、レジ
スタebx に格納される。上記に本発明を実施例を参照し
つつ説明したが、本発明の精神及び特許請求の範囲から
逸脱することなく、形状並びに詳細において様々な変更
が可能なことが当業者には理解されるであろう。
【図面の簡単な説明】
【図1】 本発明が動作するマイクロプロセサ・アーキ
テクチャのブロック図である。
【図2】 ロード・ストア・ユニットを含む命令実行ユ
ニットを示す一般的なブロック図である。
【図3】 LSUアドレス・パス220を示すブロック
図である。
【図4】 LSUに位置するアドレス衝突ブロックを示
す概略図である。
【図5】 LSUデータ・パスを示す概略図である。
【図6】 LSUデータ・パスを示す概略図である。
【図7】 キャッシュ線交差を持つ位置合わせされてな
い整数ロードの例を示す図である。
【図8】 LSUの動作の一例を示す図である。
【図9】 LSUの動作の一例を示す図である。
【図10】 LSUの動作の一例を示す図である。
【図11】 LSUの動作の一例を示す図である。
【図12】 LSUの動作の一例を示す図である。
【図13】 LSUの動作の一例を示す図である。
【図14】 LSUの動作の一例を示す図である。
【図15】 LSUの動作の一例を示す図である。
【符号の説明】
100 …マイクロプロセサ・アーキテクチャ、105 …ホス
ト・プロセサ、110 …キャッシュ制御ユニット及びメモ
リ(CCU )、115 …仮想メモリ・ユニット、120…メモ
リ制御及びインタフェース・ユニツト、135 …周辺入出
力装置、160 …主メモリ、160a、160b、160C…インタリ
ーブド・メモリ・バンク、190 …入出力サブシステム。
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 9/30 310 G06F 9/30 310E 9/34 330 9/34 330 350 350A (72)発明者 ワング ジョハネス アメリカ合衆国 カリフォルニア州 94062 レッドウッド シティ、キングス トリート 25 Fターム(参考) 5B013 AA07 AA12 AA13 CC02 CC03 CC10 DD04 5B033 AA01 AA13 AA14 BA03 BE06 DB03 DB07 DD01 DD09

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 (a)命令とデータを記憶するように構
    成されたメモリシステムと、(b)前記命令を実行する
    ために前記メモリシステムに接続されたプロセッサとを
    備えたコンピュータシステムであって、前記プロセッサ
    が、 (1)前記命令をフェッチし、所定の複数の前記命令を
    命令ウインドウに提供するための命令フェッチ・ユニッ
    トと、 (2)アウト・オブ・オーダで前記命令ウインドウから
    前記命令を実行するため、前記命令フェッチ・ユニット
    に結合された実行ユニットと、 を含み、前記実行ユニットは、(i)レジスタファイル
    と、(ii)複数の機能ユニットと(iii)前記複数
    の機能ユニットの入力部に接続され、さらに前記レジス
    タファイルに接続された第1バスと、(iv)前記複数
    の機能ユニットの出力部に接続され、さらに前記レジス
    タファイルに接続された第2バスと(v)前記命令ウイ
    ンドウ内の前記命令に関して、アウト・オブ・オーダで
    前記メモリシステムにロード要求を行い、前記ウインド
    ウ内の前記命令に関してイン・オーダでストア要求を行
    うように適応させたロードストア・ユニットとを含み、
    前記ロードストア・ユニットが、 (A)前記命令に関連あるアドレスを管理するように、
    また前記メモリシステムにアドレスを提供するように適
    応させたアドレスパスと、 (B)前記アドレスパスに結合され、アドレス衝突およ
    び書込みペンディングが前記命令の間に存在するかどう
    かを検出し、信号で知らせるためのアドレス衝突手段で
    あって、アドレス衝突および書込みペンディングが検出
    されないときは、前記ロードストア・ユニットは前記ロ
    ード要求を行うアドレス衝突手段と、 (C)前記メモリシステムおよび前記実行ユニットへ、
    また前記メモリシステムおよび前記実行ユニットから、
    ロードおよび/またはストアデータを転送するためのデ
    ータパスであって、前記メモリシステムから返されたデ
    ータを整列し、これによってワード境界上にあるデータ
    を、前記メモリシステムから前記実行ユニットへ正しく
    整列して返せるように構成されているデータパスと、 を含むコンピュータシステム。
  2. 【請求項2】 前記第2バスが、さらに前記第1バスへ
    データを転送するため接続されていることを特徴とする
    請求項1記載のコンピュータシステム。
  3. 【請求項3】 前記第2バスが、さらに前記ロードスト
    ア・ユニットの前記データパスへデータを転送するため
    接続されていることを特徴とする請求項2記載のコンピ
    ュータシステム。
  4. 【請求項4】 前記レジスタファイルが、1セットの実
    レジスタと1セットの一時レジスタとを含み、前記命令
    の前記1つの実行から得られたデータが前記一時レジス
    タから前記実レジスタへ移されるときに、前記命令の1
    つが退避されることを特徴とする請求項1記載のコンピ
    ュータシステム。
  5. 【請求項5】 ロード命令からのデータが、他の命令か
    らのデータの前に前記第2バスから前記レジスタファイ
    ルに記憶されることを特徴とする請求項1記載のコンピ
    ュータシステム。
  6. 【請求項6】 さらに、CISC命令をRISC命令へ
    復号する命令復号ユニットを含むことを特徴とする請求
    項1記載のコンピュータシステム。
  7. 【請求項7】 前記アドレスパスが、メモリアクセスに
    関連した第1アドレス情報を記憶するための第1レジス
    タと、メモリアクセスに関連した最終アドレス情報を記
    憶するための第2レジスタとを含むことを特徴とする請
    求項1記載のコンピュータシステム。
JP2002312517A 1992-09-29 2002-10-28 コンピュータシステム Withdrawn JP2003131870A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US95408492A 1992-09-29 1992-09-29
US07/954,084 1992-09-29

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP50906394A Division JP3644959B2 (ja) 1992-09-29 1993-09-03 マイクロプロセッサシステム

Publications (1)

Publication Number Publication Date
JP2003131870A true JP2003131870A (ja) 2003-05-09

Family

ID=25494898

Family Applications (28)

Application Number Title Priority Date Filing Date
JP50906394A Expired - Lifetime JP3644959B2 (ja) 1992-09-29 1993-09-03 マイクロプロセッサシステム
JP2000008266A Withdrawn JP2000181708A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008265A Withdrawn JP2000148490A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008264A Pending JP2000148481A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008263A Withdrawn JP2000148480A (ja) 1992-09-29 2000-01-17 要求管理方法
JP2000008270A Pending JP2000148493A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008268A Pending JP2000148491A (ja) 1992-09-29 2000-01-17 マイクロコンピュ―タシステム
JP2000008269A Pending JP2000148492A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008267A Withdrawn JP2000148483A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008271A Pending JP2000148494A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2002312519A Expired - Lifetime JP3588755B2 (ja) 1992-09-29 2002-10-28 コンピュータシステム
JP2002312518A Expired - Lifetime JP3627737B2 (ja) 1992-09-29 2002-10-28 コンピュータシステム
JP2002312517A Withdrawn JP2003131870A (ja) 1992-09-29 2002-10-28 コンピュータシステム
JP2002312520A Expired - Lifetime JP3620530B2 (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 Before (12)

Application Number Title Priority Date Filing Date
JP50906394A Expired - Lifetime JP3644959B2 (ja) 1992-09-29 1993-09-03 マイクロプロセッサシステム
JP2000008266A Withdrawn JP2000181708A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008265A Withdrawn JP2000148490A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008264A Pending JP2000148481A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008263A Withdrawn JP2000148480A (ja) 1992-09-29 2000-01-17 要求管理方法
JP2000008270A Pending JP2000148493A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008268A Pending JP2000148491A (ja) 1992-09-29 2000-01-17 マイクロコンピュ―タシステム
JP2000008269A Pending JP2000148492A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008267A Withdrawn JP2000148483A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2000008271A Pending JP2000148494A (ja) 1992-09-29 2000-01-17 コンピュ―タシステム
JP2002312519A Expired - Lifetime JP3588755B2 (ja) 1992-09-29 2002-10-28 コンピュータシステム
JP2002312518A Expired - Lifetime JP3627737B2 (ja) 1992-09-29 2002-10-28 コンピュータシステム

Family Applications After (15)

Application Number Title Priority Date Filing Date
JP2002312520A Expired - Lifetime JP3620530B2 (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)

Families Citing this family (161)

* 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
KR100248903B1 (ko) 1992-09-29 2000-03-15 야스카와 히데아키 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템
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
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
US5717882A (en) * 1994-01-04 1998-02-10 Intel Corporation Method and apparatus for dispatching and executing a load operation to memory
US5694574A (en) * 1994-01-04 1997-12-02 Intel Corporation Method and apparatus for performing load operations in a computer system
US6021471A (en) * 1994-11-15 2000-02-01 Advanced Micro Devices, Inc. Multiple level cache control system with address and data pipelines
US5734874A (en) * 1994-04-29 1998-03-31 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
US6279099B1 (en) * 1994-04-29 2001-08-21 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
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
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
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
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
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
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
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
US5754812A (en) * 1995-10-06 1998-05-19 Advanced Micro Devices, Inc. Out-of-order load/store execution control
US6038657A (en) * 1995-10-06 2000-03-14 Advanced Micro Devices, Inc. Scan chains for out-of-order load/store execution control
US5835747A (en) * 1996-01-26 1998-11-10 Advanced Micro Devices, Inc. Hierarchical scan logic for out-of-order load/store execution control
EP0853787B1 (en) * 1995-10-06 2003-07-02 Advanced Micro Devices, Inc. Scan chain for rapidly identifying first or second objects of selected types in a sequential list
US5764943A (en) * 1995-12-28 1998-06-09 Intel Corporation Data path circuitry for processor having multiple instruction pipelines
US6092184A (en) * 1995-12-28 2000-07-18 Intel Corporation Parallel processing of pipelined instructions having register dependencies
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
US5890207A (en) * 1996-11-27 1999-03-30 Emc Corporation High performance integrated cached storage device
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
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
US8065504B2 (en) 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
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
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
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
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
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
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
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6336183B1 (en) * 1999-02-26 2002-01-01 International Business Machines Corporation System and method for executing store instructions
US6237066B1 (en) * 1999-03-22 2001-05-22 Sun Microsystems, Inc. Supporting multiple outstanding requests to multiple targets in a pipelined memory system
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
US6473837B1 (en) 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Snoop resynchronization mechanism to preserve read ordering
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
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
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
US6549959B1 (en) 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
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
DE10121792C2 (de) * 2000-05-26 2003-09-25 Ibm Universelle Ladeadresse/Wertevorhersageschema
US6848024B1 (en) 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6732234B1 (en) 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
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
US7315921B2 (en) * 2002-02-19 2008-01-01 Ip-First, Llc Apparatus and method for selective memory attribute control
US7328328B2 (en) 2002-02-19 2008-02-05 Ip-First, Llc Non-temporal memory reference control mechanism
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
US7302551B2 (en) * 2002-04-02 2007-11-27 Ip-First, Llc Suppression of store checking
US7380103B2 (en) 2002-04-02 2008-05-27 Ip-First, Llc Apparatus and method for selective control of results write back
US7155598B2 (en) * 2002-04-02 2006-12-26 Ip-First, Llc Apparatus and method for conditional instruction execution
US7373483B2 (en) 2002-04-02 2008-05-13 Ip-First, Llc Mechanism for extending the number of registers in a microprocessor
US7185180B2 (en) * 2002-04-02 2007-02-27 Ip-First, Llc Apparatus and method for selective control of condition code write back
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
US7644258B2 (en) * 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US9176741B2 (en) * 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
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
US11048506B2 (en) 2016-08-19 2021-06-29 Advanced Micro Devices, Inc. Tracking stores and loads by bypassing load store units
US10331357B2 (en) * 2016-08-19 2019-06-25 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
US11175924B2 (en) 2017-10-06 2021-11-16 International Business Machines Corporation Load-store unit with partitioned reorder queues with single cam port
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
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
US10606590B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Effective address based load store unit in out of order processors
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
EP3825848A1 (en) * 2019-04-04 2021-05-26 Cambricon Technologies Corporation Limited Data processing method and apparatus, and related product

Family Cites Families (131)

* 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
US4189772A (en) 1978-03-16 1980-02-19 International Business Machines Corporation Operand alignment controls for VFL instructions
US4189768A (en) 1978-03-16 1980-02-19 International Business Machines Corporation Operand fetch control improvement
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
JPS58217054A (ja) * 1982-06-11 1983-12-16 Hitachi Ltd デ−タ処理装置
JPS5932045A (ja) 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
JPS59501684A (ja) 1982-10-22 1984-10-04 インタ−ナシヨナル・ビジネス・マシ−ンズ・コ−ポレ−シヨン 目的命令ストリ−ムへ殆んど実時間で插入するためのソ−スおよび目的命令ストリ−ムの外部における加速式命令写像
JPS59154548A (ja) * 1983-02-22 1984-09-03 Hitachi Ltd 記憶制御方式
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
US4739472A (en) * 1984-12-07 1988-04-19 Nec Corporation Information processing device capable of rapidly processing instructions of different groups
US5025368A (en) 1984-12-27 1991-06-18 Sony Corporation Microprocessor with option area adjacent CPU core facilitating interfacing with peripheral devices
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 株式会社日立製作所 デ−タ処理装置
EP0205193B1 (en) * 1985-06-17 1996-10-23 Nec Corporation Information processing system comprising a register renewal waiting control circuit with renewal register number registering means
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
CA1286784C (en) * 1986-08-27 1991-07-23 Joseph A. Petolino, Jr. 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
EP0272198A3 (en) * 1986-12-15 1991-10-16 United Technologies Corporation 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
JPH01286030A (ja) * 1988-05-12 1989-11-17 Nec Corp 情報処理装置
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 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
JPH0760408B2 (ja) * 1988-11-30 1995-06-28 松下電器産業株式会社 データ処理装置
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
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
US5075840A (en) 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
WO1990008355A1 (en) 1989-01-17 1990-07-26 Fujitsu Limited Microprocessor
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 命令実行制御方式
EP0419105B1 (en) 1989-09-21 1997-08-13 Texas Instruments Incorporated Integrated circuit formed on a surface of a semiconductor substrate and method for constructing such an integrated circuit
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
JP2834289B2 (ja) * 1990-07-20 1998-12-09 株式会社日立製作所 マイクロプロセッサ
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
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
KR100248903B1 (ko) * 1992-09-29 2000-03-15 야스카와 히데아키 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템
EP0651321B1 (en) 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP3588755B2 (ja) コンピュータシステム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040716

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20040730

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20040914