JPH07182167A - マイクロプロセッサのロード/ストア機能ユニットおよび情報処理用装置 - Google Patents

マイクロプロセッサのロード/ストア機能ユニットおよび情報処理用装置

Info

Publication number
JPH07182167A
JPH07182167A JP6260699A JP26069994A JPH07182167A JP H07182167 A JPH07182167 A JP H07182167A JP 6260699 A JP6260699 A JP 6260699A JP 26069994 A JP26069994 A JP 26069994A JP H07182167 A JPH07182167 A JP H07182167A
Authority
JP
Japan
Prior art keywords
entry
store
circuit
store buffer
load
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
JP6260699A
Other languages
English (en)
Inventor
William M Johnson
ウィリアム・エム・ジョンソン
David B Witt
デイビッド・ビィ・ウィット
Murali Chinnakonda
ミュラリ・チナコンダ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JPH07182167A publication Critical patent/JPH07182167A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

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

Abstract

(57)【要約】 【目的】 ロード/ストア機能ユニットおよび対応する
データキャッシュを有するスーパースカラマイクロプロ
セッサによって、複数のロード動作を並列に行ない、か
つストア転送動作を行なう。 【構成】 ロード/ストア機能ユニット(134)は並
列にアクセスされデータキャッシュ(150)に並列に
結合される保留ステーション(124)の複数個のエン
トリ(RS0−RS3)と、複数個のバッファエントリ
(SB0−SB3)を有するストアバッファ回路(18
0)とを含む。ストアバッファエントリはバッファの下
位エントリからの出力が上位エントリへの入力として与
えられる先入れ先出しバッファを与えるように構成され
る。

Description

【発明の詳細な説明】
【0001】
【発明の背景】本発明はマイクロプロセッサに関し、よ
り特定的には、高性能なデータキャッシュおよびロード
/ストア機能ユニットを有するマイクロプロセッサに関
する。
【0002】マイクロプロセッサは、1つまたは非常に
少数の半導体チップ上で実現されるプロセッサである。
半導体チップ技術によりマイクロプロセッサ内の回路密
度および速度が増大してきているが、マイクロプロセッ
サと外部メモリとの相互接続はパッケージング技術の制
約を受けている。オンチップ相互接続にかかる費用は非
常に安いが、オフチップ接続の費用は非常に高い。マイ
クロプロセッサの性能を向上しようとするどのような技
術も、パッケージング技術、およびプロセッサとその外
部メモリとの物理的分離という制約内で、増大する回路
密度および速度を利用しなければならない。回路密度が
増大しているために、増々、設計が複雑になっている
が、マイクロプロセッサの動作はユーザがマイクロプロ
セッサの使用方法を理解できるように単純かつ明快なま
までなくてはいけない。
【0003】既存のマイクロプロセッサはスカラ計算に
向けられているものが大半であるが、マイクロプロセッ
サの進化の点から言えば、スーパースカラマイクロプロ
セッサが論理的には次のステップである。スーパースカ
ラという用語は、スカラ命令を同時に実行することによ
って性能を向上させるコンピュータ実現のことである。
スカラ命令とは、典型的には汎用マイクロプロセッサで
見られるタイプの命令である。今日の半導体処理技術を
用いれば、かつては大規模な科学的プロセッサにしか適
用できなかった高性能な技術を1つのプロセッサチップ
に組入れることができる。しかしながら、大規模プロセ
ッサに用いられる技術の多くは、スカラ計算には適さな
いか、またはマイクロプロセッサに用いるには高価すぎ
る。
【0004】マイクロプロセッサはアプリケーションプ
ログラムを実行する。アプリケーションプログラムは命
令群からなる。アプリケーションプログラムの実行にお
いては、プロセッサはあるシーケンスで命令を取出しか
つ実行する。たった1つの命令を実行するのにも、命令
を取出し、デコードし、そのオペランドをアセンブル
し、命令によって特定される動作を実行し、かつ命令の
結果を記憶に書込むといういくつかのステップがある。
命令の実行は周期的クロック信号によって制御される。
クロック信号の周期はプロセッササイクル時間である。
【0005】プロセッサがプログラムを完了するのにか
かる時間は次の3つの要因、すなわちプログラムを実行
するために必要な命令の数、命令を実行するために必要
なプロセッササイクルの平均数、およびプロセッササイ
クル時間によって決定される。プロセッサの性能は所要
時間を減じることによって向上するが、これには上の要
因のうちの1つ以上のものが減らされる必要がある。
【0006】マイクロプロセッサの性能を向上させる一
方法としては、パイプライン処理と呼ばれる技術を用い
て異なる命令のステップを重ねることである。命令をパ
イプライン処理するためには、パイプライン段と呼ばれ
る独立したユニットによって様々なステップの命令の実
行が行なわれる。パイプライン段はクロック決めされた
レジスタによって分離される。異なる命令のステップ
が、異なるパイプライン段中で独立して実行される。パ
イプライン処理は、プロセッサが1度に1つ以上の命令
を取扱うことを可能にすることによって、命令の実行に
必要な合計時間は低減できないが、命令の実行に必要な
平均サイクル数を低減する。このことはプロセッサのサ
イクル時間を目に見えるほどは増大させることなく行な
われる。典型的には、パイプライン処理は1命令当たり
の平均サイクル数を3分の1ほどにも低減する。しかし
ながら、分岐命令を実行する場合は、パイプラインは分
岐動作結果がわかり正しい命令が実行用に取出されるま
で停止することがあるかもしれない。これは分岐遅延ペ
ナルティとして知られている。また、パイプライン段の
数を増大すると、典型的には1命令当たりの平均サイク
ル数に関する分岐遅延ペナルティを増大させる。
【0007】プロセッサの性能を向上させる他の方法と
しては、マイクロプロセッサが命令オペランドをアセン
ブルし、かつ命令の結果を書込む速度を増大することで
ある。これらの機能はそれぞれロードおよびストアと呼
ばれる。これら両方の機能はマイクロプロセッサのデー
タキャッシュの使用に依存する。
【0008】初期のマイクロプロセッサの発展の間に
は、命令の実行時間と比べて命令を取出すのにかかる時
間が長かった。このことが複合命令セットコンピュータ
(CISC)プロセッサ開発の動機となった。CISC
プロセッサは、利用可能な技術を用いるとすれば、1命
令当たりのサイクル数は命令を取出すのにかかるサイク
ルの数によってほぼ決定されるという知識に基づいてい
た。性能の向上のために、CISCアーキテクチャの2
つの主要な目標は、所与のタスクに必要な命令の数を低
減することと、これらの命令を密度高くエンコードする
こととであった。パイプライン処理を用いると、デコー
ドおよび実行サイクルは相対的に長い命令フェッチと通
常は重なるため、命令をデコードしかつ実行するのにか
かる平均サイクル数を増やすことによって上記のような
目標を達成してもよかった。このような前提のもとに、
CISCプロセッサはプロセッサ内部のデコードおよび
実行時間を犠牲にして密度高くエンコードされた命令を
発展させた。複数サイクルの命令によって命令全体の数
が減り、命令取出し時間が減るため全体の実行時間が短
くなった。
【0009】1970年代後半から1980年代初めに
かけて、メモ技術およびパッケージング技術が急速に変
化した。メモリ密度および速度は、キャッシュと呼ばれ
る高速ローカルメモリをプロセッサの近くに実現し得る
ほどまで増大した。キャッシュは、プロセッサが一時的
に命令およびデータを記憶するために用いる。キャッシ
ュを用いて命令がより迅速に取出される場合、以前は命
令取出し時間内に隠されていたデコードおよび実行時間
によって性能が限定される。命令の数は1つの命令を実
行するのにかかる平均サイクル数ほどには性能に影響を
及ぼさない。
【0010】命令の取出しが命令の実行よりそれほど時
間がかからないようになるまでメモリおよびパッケージ
ング技術が向上したことは、縮小命令セットコンピュー
タ(RISC)プロセッサの開発の動機となった。性能
の向上のために、RISCアーキテクチャの主たる目標
は、命令の総数はいくぶん増やしても、命令の実行にか
かるサイクルの数を減らすことである。1命令当たりの
サイクル数と命令の数との間のトレードオフは1対1で
はない。CISCプロセッサと比較して、RISCプロ
セッサは典型的には命令の数を30%から50%増やす
一方で、3分の1−5分の1にまで1命令当たりのサイ
クル数を減らす。RISCプロセッサは、コンパイラが
全体の命令カウントを減らすことを助けるため、または
1命令当たりのサイクル数を減らすことを助けるため
に、多数の汎用レジスタならびに命令およびデータキャ
ッシュなどの補助的特徴に依存する。
【0011】典型的なRISCプロセッサはプロセッサ
サイクル毎に1つの命令を実行する。スーパースカラプ
ロセッサは、異なるパイプ段中で複数の命令を同時に実
行できることに加え、同じパイプライン段中でも複数の
命令を同時に実行できるため、パイプライン処理された
スカラRISCプロセッサで可能であった以上に1命令
当たりの平均サイクル数を低減する。スーパースカラと
いう用語は、科学計算で一般的であるベクトルまたは配
列に対する複数の同時演算とは異なった、スカラ量に対
する複数の同時演算を強調するものである。
【0012】スーパースカラプロセッサは概念的には単
純であるが、性能を向上させるためにはプロセッサのパ
イプラインの幅を広くする以上のことが必要である。パ
イプラインの幅を広げると1サイクルにつき1つ以上の
命令を実行することが可能となるが、いかなる命令シー
ケンスもこの能力を利用できるとは限らない。命令は互
いに独立しておらず相関しており、このような相関関係
はいくつかの命令が同じパイプライン段を占有すること
を阻害する。さらに、命令をデコードしかつ実行するプ
ロセッサの機構は、同時に実行可能な命令を発見する能
力において大きく異なることがある。
【0013】スーパースカラ技術は、主として命令セッ
トおよび他のアーキテクチャの特徴から独立したプロセ
ッサの組織に関する。したがって、スーパースカラ技術
の魅力の1つは、既存のアーキテクチャとコードレベル
で互換性があるプロセッサを開発する可能性があること
である。スーパースカラ技術の多くはRISCアーキテ
クチャまたはCISCアーキテクチャのどちらにも同じ
ように十分に適用可能である。しかしながら、数多くの
RISCアーキテクチャには規則性があるため、スーパ
ースカラ技術はまずRISCプロセッサ設計に適用され
ている。
【0014】単一サイクルのデコードに適合していると
いうRISCプロセッサの命令セットの属性はまた、同
じクロックサイクル中に複数のRISC命令をデコード
する場合にも適合するであろう。これらの属性には、一
般的な3オペランドのロード/ストアアーキテクチャ、
わずか数命令分の長さしか持たない命令、わずか数アド
レスモードしか用いない命令、固定幅レジスタ、および
命令フォーマット内のわずか数箇所のレジスタ識別子に
対する演算をする命令が含まれる。スーパースカラRI
SCプロセッサを設計する技術はニュージャージー州エ
ングルウッド・クリフス(Englewood Cliffs, New Jers
ey)のプレンティス・ホール社(Prentice-Hall,Inc.)
(サイモン・アンド・シュースター(Simon & Schuste
r) の一部門のウィリアム・マイケル・ジョンソン(Wil
liam Michael Johnson )による1991年の「スーパ
ースカラマイクロプロセッサ設計(Superscalar Microp
rocessor Design )」に記載されている。
【0015】RISCアーキテクチャとは対照的に、C
ISCアーキテクチャは多数の異なる命令フォーマット
を用いる。幅広く使用されているCISCマイクロプロ
セッサアーキテクチャの1つはX86アーキテクチャで
ある。このようなアーキテクチャはi386TMマイクロ
プロセッサに最初に導入されたが、i486TM マイク
ロプロセッサおよびペンティアム(PentiuTM)マイクロ
プロセッサの両方の基礎となるアーキテクチャであり、
これらのマイクロプロセッサはすべてカリフォルニア州
サンタクララ(Santa Clara, California )のインテル
(Intel )社から入手可能である。X86アーキテクチ
ャは、論理アドレス、線形アドレス、および物理アドレ
スの3つの異なるタイプのアドレスを提供する。
【0016】論理アドレスはセグメントベースアドレス
からのオフセットを示す。実効アドレスと呼ばれるこの
オフセットは、マイクロプロセッサが用いているアドレ
スモードのタイプに基づいている。これらのアドレスモ
ードは、変位、ベース、インデックスおよびスケールの
4つのアドレスエレメントの異なる組合わせを与える。
セグメントベースアドレスはセレクタを介してアクセス
される。より特定的には、セグメントレジスタ中に記憶
されるセレクタはグローバルディスクリプタテーブル
(GDT)中の位置を示すインデックスである。GDT
位置は、セグメントベースアドレスに対応する線形アド
レスを記憶する。
【0017】論理アドレスと線形アドレス間の変換は、
マイクロプロセッサが実モードであるのかまたは保護モ
ードであるのかに依存する。マイクロプロセッサが実モ
ードの場合、セグメンテーションユニットはセレクタを
4ビット左へシフトし、その結果をオフセットに加えて
線形アドレスを形成する。マイクロプロセッサが保護モ
ードの場合、セグメントユニットはセレクタが示した線
形ベースアドレスをオフセットに加えて線形アドレスを
与える。
【0018】物理アドレスはマイクロプロセッサのアド
レスピン上に現われるアドレスであり、外部メモリを物
理的にアドレス指定するために用いられる。物理アドレ
スは必ずしも線形アドレスには対応しない。ページング
がイネーブルされなければ、32ビット線形アドレスは
物理アドレスに対応する。もしページングがイネーブル
されれば、線形アドレスは物理アドレスに変換されなく
てはならない。この変換はページングユニットが実行す
る。
【0019】ページングユニットは線形アドレスを物理
アドレスに変換するために2レベルの表を用いる。第1
レベルの表はページディレクトリであり、第2レベルの
表はページテーブルである。ページディレクトリは複数
個のページディレクトリエントリを含み、その各々のエ
ントリはページテーブルのアドレスおよびページテーブ
ルについての情報を含む。線形アドレスの上位10ビッ
ト(A22−A31)はページディレクトリエントリを
選択するためのインデックスとして用いられる。ページ
テーブルは複数個のページテーブルエントリを含み、各
ページテーブルエントリはページフレームの実ページ番
号と呼ばれるページフレームの開始アドレスと、ページ
についての統計的情報とを含む。線形アドレスのアドレ
スビットA12−A21はページテーブルエントリの1
つを選択するためのインデックスとして用いられる。ペ
ージフレームの開始アドレスは線形アドレスの下位12
ビットと連結されて物理アドレスを構成する。
【0020】各メモリ動作毎に2レベルの表とアクセス
することはマイクロプロセッサの性能にかなり影響を及
ぼすため、x86アーキテクチャは最も最近アクセスさ
れたページテーブルエントリのキャッシュを設け、この
キャッシュはトランスレーションルックアサイドバッフ
ァ(TLB)と呼ばれる。マイクロプロセッサはエント
リがTLBにない場合だけページングユニットを使用す
る。
【0021】キャッシュを含むx86アーキテクチャに
従う最初のプロセッサは486プロセッサであり、これ
は8Kバイト統合キャッシュを1つ含んでいた。ペンテ
ィアムプロセッサは分離した8Kバイト命令およびデー
タキャッシュを含む。486プロセッサキャッシュおよ
びペンティアムプロセッサキャッシュは物理アドレスを
介してアクセスされるが、これらのプロセッサの機能ユ
ニットは論理アドレスを用いて動作する。したがって、
機能ユニットがキャッシュへアクセスする必要がある場
合、論理アドレスは線形アドレスへ、その後物理アドレ
スへ変換されなくてはならない。
【0022】
【発明の概要】パラレルにアクセスされる複数個の保留
ステーションエントリを含むロード部を有するマイクロ
プロセッサを提供することによって、複数個のロード動
作をパラレルに実行することが可能であることがわかっ
た。
【0023】バッファの下位エントリからの出力がバッ
ファの上位エントリへの入力として与えられる、先入れ
先出しバッファとして構成される複数個のストアバッフ
ァエントリを含むストア部を有するマイクロプロセッサ
を提供することによって、ストア転送動作を実行するこ
とが可能であるということもわかった。
【0024】
【実施例】以下に、本発明を実行するための、考えられ
る最良のモードを詳細に説明する。以下の説明は本発明
を例示するものであると意図し、限定的であるとは考え
るべきではない。
【0025】図1を参照して、本発明は、X86命令セ
ットを実行するスーパースカラX86マイクロプロセッ
サ100の文脈において最良に理解することができる。
マイクロプロセッサ100は486XLバスまたは他の
従来のマイクロプロセッサバスを介して、物理的にアド
レス指定される外部メモリ101に結合される。マイク
ロプロセッサ100はバイトキュー106に結合される
命令キャッシュ104を含み、バイトキュー106は命
令デコーダ108に結合される。命令デコーダ108は
RISCコア110に結合される。RISCコア110
は、シフトユニット130(SHF)、算術論理ユニッ
ト131、132(ALU0およびALU1)、特別レ
ジスタブロック133(SRB)、ロード/ストアユニ
ット134(LSSEC)、分岐セクション135(B
RNSEC)、および浮動小数点ユニット136(FP
U)などの多様な機能ユニットとともに、レジスタファ
イル112およびリオーダバッファ114を含む。
【0026】RISCコア110は、命令デコーダ10
8とロード/ストアユニット134との間に結合される
変位および命令、ロードストア(INLS)バス119
とともに、機能ユニットに結合されるAおよびBオペラ
ンドバス116と、タイプおよびディスパッチ(TA
D)バス118と、結果バス140とを含む。Aおよび
Bオペランドバス116はまた、レジスタファイル11
2とリオーダバッファ114とに結合される。TADバ
ス118はまた命令デコーダ108に結合される。結果
バス140はまたリオーダバッファ114に結合され
る。さらに、分岐セクション135は、リオーダバッフ
ァ114と、命令デコーダ108と、命令キャッシュ1
04とにXターゲットバス103を介して結合される。
AおよびBオペランドバス116は、4つのパラレル1
2ビット幅Aタグバスと、4つのパラレル12ビット幅
Bタグバスと、12ビット幅Aタグ有効バスと、12ビ
ット幅Bタグ有効バスと、4つの4ビット幅行先タグバ
スと、4つの8ビット幅オペコードバスとともに、4つ
のパラレル41ビット幅Aオペランドバスと、4つのパ
ラレル41ビット幅Bオペランドバスとを含む。タイプ
およびディスパッチバス118は、4つの3ビット幅タ
イプコードバスと、1つの4ビット幅ディスパッチバス
とを含む。変位およびINLSバス119は、2つの3
2ビット幅変位バスと、2つの8ビット幅INLSバス
とを含む。
【0027】命令キャッシュ104に加えて、マイクロ
プロセッサ100はまたデータキャッシュ150(DC
ACHE)と物理タグ回路162とを含む。データキャ
ッシュ150はRISCコアのロード/ストア機能ユニ
ット134と、プロセッサ内アドレスおよびデータ(I
AD)バス102とに結合される。命令キャッシュ10
4はまたIADバス102に結合される。物理タグ回路
162は、IADバスを介して命令キャッシュ104と
データキャッシュ150との両方と相互動作する。命令
キャッシュ104およびデータキャッシュ150は両方
とも線形にアドレス指定可能なキャッシュである。命令
キャッシュ104およびデータキャッシュ150は物理
的に離れているが、キャッシュは両方とも同じアーキテ
クチャを用いて構成される。
【0028】マイクロプロセッサ100はまた、メモリ
管理ユニット(MMU)164とバスインタフェースユ
ニット160(BIU)とを含む。TLB164は、I
ADバスと物理変換回路162とに結合される。バスイ
ンタフェースユニット160は、486XLバス等の外
部マイクロプロセッサバスと共に、物理変換回路162
とデータキャッシュ150とIADバス102とに結合
される。
【0029】マイクロプロセッサ100は命令のシーケ
ンスを含むコンピュータプログラムを実行する。典型的
には、コンピュータプログラムはハードディスク、フロ
ッピィディスクまたはコンピュータシステム中に位置す
る他の不揮発性記憶媒体に記憶される。プログラムが実
行される場合、プログラムは記憶媒体から主メモリ10
1へロードされる。プログラムの命令および関連したデ
ータが一旦主メモリ101に入ると、個々の命令の実行
準備が行なわれ、最終的にはマイクロプロセッサ100
によって実行される。
【0030】主メモリ101に記憶された後、命令はバ
スインタフェースユニット160を介して命令キャッシ
ュ104へ伝えられ、そこで命令は一時的に保持され
る。命令デコーダ108は命令キャッシュ104から命
令を取出し、その命令を検査し、適切なアクションを決
定する。たとえば、デコーダ108はある特定の命令が
POP,LOAD,STORE,AND,OR,EX
OR,ADD,SUB,NOP,JUMP,条件JUM
P(BRANCH)、その他の命令のいずれであるかを
決定し得る。どの特定の命令が存在するとデコーダ10
8が決定するかに依存して、命令はRISCコア110
の適切な機能ユニットにディスパッチされる。LOAD
およびSTOREはロードストアセクション134にデ
ィスパッチされる主要な2つの命令である。ロード/ス
トア機能ユニット134によって実行される他の命令に
はPUSHおよびPOPがある。
【0031】典型的には、これらの命令は、OP CO
DE,OPERAND A,OPERAND B,DE
STINATIONというフォーマットの複数のフィー
ルドを含む。たとえば、命令ADD A,B,Cは、レ
ジスタAの内容をレジスタBの内容に加えてその結果を
レジスタCに置くことを意味する。LOADおよびST
ORE動作は多少異なるフォーマットを使用する。たと
えば、命令LOADA,B,Cは、アドレスから取出し
たデータを結果バス上に置くことを意味し、ここでA、
BおよびCはAオペランドバス、Bオペランドバスおよ
び変位バス上に位置するアドレス成分を表わし、これら
のアドレス成分は組合わさって論理アドレスを与え、こ
の論理アドレスはセグメントベースと組合わさって線形
アドレスを与え、そこからデータが取出される。また、
たとえば、命令STORE A,B,Cは、アドレスに
よって示された位置にデータを記憶することを意味し、
ここでAはAオペランドバス上に位置する記憶データで
あり、BおよびCはBオペランドバスおよび変位バス上
に位置するアドレス成分を示し、これらのアドレス成分
は組合わさって論理アドレスを構成し、論理アドレスは
セグメントベースと組合わさって線形アドレスを与え、
そこへデータが記憶される。
【0032】OP CODEは、オペコードバスを介し
て命令デコーダ108からRISCコア110の機能ユ
ニットへ与えられる。特定の命令のOP CODEを適
切な機能ユニットに与えなくてはならないことに加え
て、命令用に指定されたOPERANDを取出して機能
ユニットに送らなくてはならない。もし特定のオペラン
ドの値がまだ計算されていなければ、機能ユニットが命
令を実行する前にその値を計算して機能ユニットに与え
なくてはいけない。たとえば、もし現在の命令が前の命
令に依存しているとすれば、現在の命令が実行される前
に前の命令の結果を求めなくてはいけない。この状況は
従属性と呼ばれる。
【0033】機能ユニットが特定の命令を実行するのに
必要なオペランドは、レジスタファイル112またはリ
オーダバッファ114のいずれかによってオペランドバ
スに与えられる。オペランドバスはオペランドを適切な
機能ユニットへ送る。機能ユニットがOP CODE、
OPERAND A、およびOPERAND Bを一旦
受取ると、機能ユニットは命令を実行し、かつその結果
を結果バス140上に置く。結果バス140はすべての
機能ユニットの出力およびリオーダバッファ114に結
合される。
【0034】リオーダバッファ114は先入れ先出し
(FIFO)装置として管理される。命令デコーダ10
8が命令をデコードすると、対応するエントリがリオー
ダバッファ114中に割当てられる。その後、命令の実
行が完了すると、命令によって計算された結果値が割当
てられたエントリに書込まれる。もし命令に関連する例
外がなく、かつ命令に影響を及ぼす可能性のある解決さ
れていない分岐がなければ、この結果値はその後レジス
タファイル112に書込まれ、命令は廃棄される。関連
したエントリがリオーダバッファ114の先頭に到達し
たときに命令が完了していなければ、命令が完了するま
でリオーダバッファ114の進行は停止される。しかし
ながら、追加のエントリの割当ては継続できる。
【0035】各機能ユニットは、まだ完了していない命
令からのOP CODEを記憶するためにそれぞれ保留
ステーション回路(RS)120−126を含むが、こ
れはなぜならその命令用のオペランドは機能ユニットに
はまだ入手できないからである。各保留ステーション回
路は、後で保留ステーション回路に到着する欠けている
オペランドの場所をとっておくタグとともに、命令のO
P CODEを記憶する。この技術は、保留中の命令が
保留ステーションでそのオペランドと組合されている間
に、マイクロプロセッサ100が他の命令の実行を継続
することを可能にすることによって、性能を向上させ
る。
【0036】マイクロプロセッサ100は、デコーダ1
08をRISCコア110の機能ユニットから分離する
ことによって順序外の発行ができる。より特定的には、
リオーダバッファ114および機能ユニットの保留ステ
ーションは、効果的に分配命令ウィンドウを確立する。
したがって、デコーダ108は、命令が即座に実行でき
ないとしても命令のデコードを継続できる。命令ウィン
ドウは命令のプールとして機能し、機能ユニットがさら
に続けて命令を実行するときに、このプールから命令を
引出す。このように、命令ウィンドウはマイクロプロセ
ッサ100にルックアヘッド能力を与える。従属性がク
リアされオペランドが利用可能になると、機能ユニット
はウィンドウ中のより多くの命令を実行し、かつデコー
ダはさらに多くのデコードされていない命令でウィンド
ウを満たし続ける。
【0037】マイクロプロセッサ100は性能を高める
ためにRISCコアの分岐セクション135を使用す
る。分岐が起こると次の命令は分岐の結果に依存するた
め、プログラムの命令ストリーム中の分岐はマイクロプ
ロセッサが命令を取出す能力を阻害する。分岐セクショ
ン135は、命令の取出の間に発生する分岐の結果を予
測する。つまり、分岐セクション135は分岐が起こる
かどうかを予測する。たとえば、前の分岐の結果の実行
履歴を維持するために、分岐ターゲットバッファが用い
られる。この履歴に基づいて、取出されたある分岐の間
に、取出された分岐命令がどの分岐をとるのかの決定が
なされる。もし例外または分岐の予測間違いがあれば、
予測間違いの分岐命令に従って割当てられたリオーダバ
ッファ114の内容は廃棄される。
【0038】図2を参照して、ロード/ストア機能ユニ
ット134は、データキャッシュ150と相互動作し、
かつすべてのLOAD命令およびすべてのSTORE命
令を実行する機能ユニットである。ロード/ストア機能
ユニット134は、保留ステーション回路124と、ス
トアバッファ回路180と、ロードストアコントローラ
182とを含む。保留ステーション回路124は4つの
保留ステーションエントリ(RS0−RS3)を含み、
かつストアバッファ回路180は4つのストアバッファ
エントリ(SB0−SB3)を含む。
【0039】保留ステーション回路124はロード動作
またはストア動作を実行するために必要なすべてのフィ
ールドを保持する。データ要素はクロックサイクル毎に
2つの保留ステーションエントリへ発行され、かつクロ
ックサイクル毎に2つの保留ステーションエントリから
リタイアできる。保留ステーション回路124は、4つ
の結果バスと、4つの41ビットAオペランドバスの4
0ビットと、4つの41ビットBオペランドバスの32
ビットと、AおよびBタグ有効バスと、4つのAタグバ
スと、4つのBタグバスと、4つの行先タグバスと、4
つのタイプコードバスと、2つの変位バスと、2つのI
NLSバスとともに、データキャッシュ150のポート
AおよびBの32ビットデータ部分に結合される。保留
ステーション回路124は40ビットAオペランドバス
と、32ビット保留ステーションデータバス(RDAT
A A,RDATA Bのそれぞれ)と、12ビットA
タグバス(TAG A)と、12ビットBタグバス(T
AG B)とともに、2つの32ビットアドレスバス
(ADDR A,ADDR B)を介してストアバッフ
ァ回路に結合され、2つのアドレスバスはまたデータキ
ャッシュ150のポートAおよびBのアドレス部分に結
合される。保留ステーション124は、保留ステーショ
ンロードバスおよび保留ステーションシフトバスを介し
てコントローラ182に結合される。
【0040】保留ステーション回路124に結合される
ことに加えて、ストアバッファ回路180は4つの結果
バスに結合され、かつまたストアバッファロードバスお
よびストアバッファシフトバスを介してロードストアコ
ントローラ182に結合される。ストアバッファ回路1
80はまたIADバス102に結合される。
【0041】保留ステーション回路124およびストア
バッファ回路180に結合されることに加えて、ロード
ストアコントローラ182は物理タグ回路162および
リオーダバッファ114に結合される。コントローラ1
82はまたデータキャッシュ150のキャッシュコント
ローラ190に結合される。
【0042】データキャッシュ150は線形にアドレス
指定された4方向にインターリーブされた8Kバイト4
方向セットアソシアティブキャッシュであり、これはク
ロックサイクル毎に2つのアクセスをサポートし、言い
換えればデータキャッシュ150は二重の実行をサポー
トする。データキャッシュ150の各セットは128の
エントリを含み、各エントリは16バイトブロックの情
報を含む。各16バイトブロック情報は4つの個々にア
ドレス指定可能な32ビットバンクのラインに記憶され
る。データキャッシュ150に個々にアドレス指定可能
なバンクを設けることによって、データキャッシュ15
0は2つのポートを設けることに関連したオーバーヘッ
ドを必要とすることなく、2方向にアクセス可能なデー
タキャッシュとして機能する。データキャッシュ150
はデータキャッシュポートAおよびデータキャッシュポ
ートBを介して2方向にアクセス可能であり、こうして
データキャッシュ150は2つのロード動作を同時に実
行することができる。データキャッシュポートAは、デ
ータ部分DATA Aと、アドレス部分ADDRAとを
含み、データキャッシュポートBは、データ部分DAT
A Bと、アドレス部分ADDR Bとを含む。
【0043】データキャッシュ150はデータキャッシ
ュコントローラ190とデータキャッシュアレイ192
とを含む。データキャッシュコントローラ190はデー
タキャッシュ150の様々な動作を統制するための制御
信号を与える。データキャッシュアレイ192はデータ
キャッシュコントローラ190の制御下でデータを記憶
する。データキャッシュアレイ192はデータ記憶アレ
イ200と線形タグおよび状態アレイ202との2つの
アレイで構成される。データキャッシュアレイ200は
DATA AとDATA Bとの2つのデータ信号をロ
ード/ストア機能ユニット134に与える。線形タグア
レイ202はロード/ストア機能ユニット134から与
えられる2つの線形アドレスADDR AおよびADD
R Bを受け、かつ2つの4ビットタグヒット信号CO
L HIT A0−3およびCOL HIT B0−3
をキャッシュアレイ200に与える。線形アドレスAD
DR AおよびADDR Bはまたデータストアアレイ
200に与えられる。
【0044】ロード動作の間、ロードストア機能ユニッ
ト134の保留ステーション回路124はアドレスをデ
ータキャッシュ150に与える。もしこのアドレスがキ
ャッシュヒットを発生すれば、データキャッシュ150
はストアアレイ200の対応するバンクおよびブロック
中に記憶されているデータを保留ステーション回路12
4に与える。もしアドレスがポートAを介してデータキ
ャッシュ150に与えられると、データはポートAを介
して保留ステーション回路124に与えられる。代替的
に、もしアドレスがポートBを介してデータキャッシュ
150に与えられると、データはポートBを介して保留
ステーション回路に与えられる。ポートAおよびポート
Bを介して同時にアドレスがデータキャッシュ150に
与えられ、かつデータキャッシュ150からデータを受
取る。
【0045】記憶動作の間、記憶データは保留ステーシ
ョン回路124からストアバッファ回路180に与えら
れる。記憶動作が解除されると、記憶されているデータ
およびそれに対応するアドレスはIADバスを介してデ
ータキャッシュ150に与えられる。
【0046】図3を参照して、保留ステーション回路1
24は先入れ先出し(FIFO)バッファとして機能す
るデュアルアクセス保留ステーションである。保留ステ
ーション回路124は、入力0マルチプレクサ回路20
6と、入力1マルチプレクサ回路208と、4つの保留
ステーションエントリRS0 210、RS1 21
1、RS2 212およびRS3 213とともに、保
留ステーション0加算器回路216と、保留ステーショ
ン1加算器回路218と保留ステーションドライバ回路
220とを含む。
【0047】マルチプレクサ回路206および208
は、入力として、4つのAオペランドバスと、4つのB
オペランドバスと、AおよびBタグ有効バスと、4つの
Aタグバスと、4つのBタグバスと、4つの行先タグバ
スと、4つのオペコードバスと、2つのINLSバス
と、2つの変位バスとを受ける。マルチプレクサ回路2
06および208はまた、ロード記憶コントローラ18
2からバス選択信号を受ける。バス選択信号はタイプコ
ードの一致に基づいて発生する。
【0048】タイプコードの一致は、4つのタイプコー
ドバスのうちの1つの上のタイプコードがロード記憶機
能ユニットに割当てられたタイプコードに対応する場合
に発生する。タイプコードが一致する場合、ロード記憶
コントローラ180はどのバスから情報が取出されるべ
きかを示すバス選択信号を発生する。保留ステーション
回路124は2つのバスから同時に信号を取出すことが
できる。したがって、入力0マルチプレクサ206およ
び入力1マルチプレクサ208のそれぞれについてロー
ド記憶コントローラ182によって第1の組のバス選択
信号と、第2の組のバス選択信号とが発生する。
【0049】第1の組のバス選択信号の制御下で、マル
チプレクサ回路206は、第1のマルチプレクスされた
保留ステーション入力信号(INPUT 0)を与え、
これは保留ステーションへの入力信号として与えられ
る。INPUT 0信号は、Aオペランドバスのうちの
1つからの信号と、Bオペランドバスのうちの1つから
の信号と、Aタグバスのうちの1つからのタグと、対応
するタグ有効バスからのAタグに対応するタグ有効ビッ
トと、Bタグバスのうちの1つからのタグと、対応する
タグ有効バスからのBタグに対応するタグ有効ビット
と、行先タグバスのうちの1つからの行先タグと、オペ
コードバスのうちの1つからのオペコードと、変位バス
のうちの1つからの変位とを含む。第2の組のバス選択
信号の制御下で、マルチプレクサ回路208は、第2の
マルチプレクスされた保留ステーション入力信号(IN
PUT 1)を与え、これは保留ステーションへの第2
の入力信号として与えられる。INPUT 1信号は、
Aオペランドバスのうちの1つからの信号と、Bオペラ
ンドバスのうちの1つからの信号と、Aタグバスのうち
の1つからのタグと、対応するタグ有効バスからのAタ
グに対応するタグ有効ビットと、Bタグバスのうちの1
つからのタグと、対応するタグ有効バスからのBタグに
対応するタグ有効ビットと、行先タグバスのうちの1つ
からの行先タグと、オペコードバスのうちの1つからの
オペコードと、変位バスのうちの1つからの変位とを含
む。
【0050】保留ステーションエントリ210−213
の各々は、ロードおよびシフトビットのそれぞれととも
に、2つの入力信号INPUT 0およびINPUT
1を並列に受ける。保留ステーションエントリ210−
213はまた、4つの結果バスの各々から入力を受け、
これらの結果バス入力はエントリのAオペランド部分お
よびBオペランド部分のみに与えられる。Aオペランド
タグおよびBオペランドタグに基づいてこれらの結果バ
スから情報が取出される。たとえば、Aオペランドタグ
が行先タグバスのうちの1つの上にある情報に対するヒ
ットを与えると、対応する結果バスからの情報が取出さ
れ、かつ保留ステーションエントリのAオペランドフィ
ールド中へロードされる。
【0051】さらに、保留ステーションエントリRS0
は保留ステーションRS1またはRS2のいずれかから
保留ステーションエントリを受け、保留ステーションエ
ントリRS0はRS0保留ステーションエントリの一部
(Aオペランド部分)をRDATA A信号としてスト
アバッファ回路180に与え、かつすべてのRS0保留
ステーションエントリをR0加算器216に与える。R
0加算器216はこの保留ステーションエントリを用い
てADDR A信号を発生する。保留ステーションエン
トリRS1は保留ステーションRS2およびRS3から
保留ステーションエントリを受け、保留ステーションエ
ントリRS1はRS1保留ステーションエントリの一部
(Aオペランド部分)をRDATA B信号としてスト
アバッファ回路180に与え、かつすべてのRS1保留
ステーションエントリをR1加算器218に与える。R
1加算器218はこの保留ステーションエントリを用い
てADDR B信号を発生する。保留ステーションRS
2は保留ステーションRS3から保留ステーションエン
トリを受け、保留ステーションエントリRS2はRS2
保留ステーションエントリを保留ステーションRS1お
よびRS0に与える。保留ステーションRS3はRS3
保留ステーションエントリを保留ステーションRS2お
よびRS1に与える。
【0052】パラレル転送構造とともに保留ステーショ
ンからの並列の入力および出力を与えることによって、
保留ステーション回路124は1サイクル当たり1つま
たは2つのロード動作を実行し得る。より特定的には、
ロードおよびシフト信号を用いて、コントローラ182
は、1つまたは2つの保留ステーションエントリが所与
のサイクル中にロードまたはシフトされ得るように保留
ステーションエントリのロードおよびシフトを制御す
る。
【0053】1サイクル当たり1つの保留ステーション
エントリが実行されている場合、保留ステーションRS
0はロード動作およびストア動作の両方のために保留ス
テーションエントリをRS0加算器回路216に与え、
さらに、RS0はストア動作のために保留ステーション
エントリをストアバッファ180に与える。保留ステー
ションRS1は保留ステーションエントリを保留ステー
ションRS0に与え、保留ステーションRS2は保留ス
テーションエントリを保留ステーションRS1に与え、
かつ保留ステーションRS3は保留ステーションエント
リを保留ステーションRS2に与える。ロード動作のた
めには、RS0加算器回路216によって発生したアド
レスに対応するデータがドライバ回路220に与えられ
る。
【0054】1サイクル当たり2つの保留ステーション
エントリが実行されている場合、保留ステーションRS
0およびRS1はロード動作およびストア動作の両方の
ために各保留ステーションエントリを加算器回路21
6、218に与える。保留ステーションRS2およびR
S3は保留ステーションエントリを保留ステーションR
S0およびRS1のそれぞれに与える。ロード動作のた
めには、RS0およびRS1加算器回路によって発生し
たアドレスに対応するデータがデータキャッシュ150
からDATA AおよびDATA Bとして与えられ
る。1サイクル当たり2つの保留ステーションエントリ
が実行され、かつ一方の動作はロードであり他方の動作
はストアである場合、ストア動作がそこから実行される
保留ステーションエントリがストアバッファ180に与
えられる。
【0055】ロードによりキャッシュミスが発生すれ
ば、ロードミスアルゴリズムを実行しなくてはいけな
い。このロード動作は仮想的なものであるため、ミス動
作はロードが次にリタイアするROPとなるまで開始さ
れない。このため、ロードはRS0保留ステーション中
で留まり、リオーダバッファからの解除信号を待つ。ス
テータス表示は行先タグとともにこの状態を示すために
リオーダバッファにドライブバックされる。
【0056】図4を参照して、各保留ステーションエン
トリ124は、保留ステーションエントリ有効ビット
(v)と、40ビットAオペランドフィールドと、32
ビットBオペランドフィールドと、32ビット変位フィ
ールドと、4ビット行先タグ(DTAG)フィールド
と、8ビットオペコードフィールドと、8ビット追加オ
ペコード情報(INLS)フィールドとを含む。さら
に、各保留ステーションエントリはまた、4ビットAオ
ペランド上位バイトタグ(ATAGU)と、4ビットA
オペランド中位バイトタグ(ATAGM)と、4ビット
Aオペランド下位バイトタグ(ATAGL)と、4ビッ
トBオペランド上位バイトタグ(BTAGU)と、4ビ
ットBオペランド中位バイトタグ(BTAGM)と、4
ビットBオペランド下位バイトタグ(BTAGL)と
を、対応するAオペランドタグ有効ビットおよびBオペ
ランドタグ有効ビットとともに含む。各保留ステーショ
ンエントリはまた、対応する取消ビット(C)を含む。
【0057】Aオペランド上位、中位および下位バイト
タグは、整数オペランドの上位、中位および下位部分用
のタグである。整数オペランドはこのように除算される
が、これはなぜならx86アーキテクチャでは、x86
整数の下位半ワードの上位バイトもしくは下位バイト、
下位半ワード、または32ビット倍長語全体のいずれか
を参照することが可能なためである。したがって、Mお
よびLは下位半ワードの上位バイトおよび下位バイトを
示し、かつUはBオペランド用の上位半ワードおよびA
オペランド用の残りの上位ビット(Aオペランドの残り
の部分は16ビットまたは24ビットのいずれかであり
得るため)を示す。下位半ワードを参照する場合、Lタ
グおよびMタグは同じ値に設定される。保留ステーショ
ンエントリ中で係属中である32ビット値を参照する場
合、3つのタグすべてが同じ値に設定される。
【0058】取消ビットは特定のオペコードが取消され
ることを示し、このビットは何らかのオペコードが予測
誤り分岐内にある場合に設定される。オペコードが取消
されるのは、実行されるストアがデータキャッシュ15
0にストアされるエントリの状態を更新するときに、デ
ータキャッシュ150中でヒットした取消されたストア
がストアバッファ回路180に入ることを防止するため
である。取消されたロードはデータキャッシュ150中
にヒットがあっても結果を戻すだけであり、ロードはど
の状態も更新しないために問題とはならない。
【0059】保留ステーションエントリの保留ステーシ
ョンエントリ有効ビットは、INPUT 0入力信号お
よびINPUT 1入力信号のディスパッチ有効ビット
部分に結合される。ディスパッチバスに結合される各入
力信号有効ビットは、ディスパッチ有効ビットがセット
されるときにセットされる。保留ステーションエントリ
のAオペランドフィールドはINPUT 0入力信号お
よびINPUT 1入力信号のAオペランド部分に結合
される。保留ステーションエントリのBオペランドフィ
ールドはINPUT 0入力信号およびINPUT 1
入力信号のBオペランド部分に結合される。保留ステー
ションエントリの変位フィールドはINPUT 0入力
信号およびINPUT 1入力信号の変位部分に結合さ
れる。保留ステーションエントリの行先タグフィールド
はINPUT 0入力信号およびINPUT 1入力信
号の行先タグ部分に結合される。保留ステーションエン
トリのオペコードフィールドはINPUT 0入力信号
およびINPUT 1入力信号のオペコード部分に結合
される。保留ステーションエントリの追加オペコード情
報(INLS)フィールドはINLSバスを介してIN
PUT 0入力信号およびINPUT 1入力信号のI
NLS部分に結合される。
【0060】保留ステーションエントリのAオペランド
上位バイトタグと、中位バイトタグと、下位バイトタグ
とはINPUT 0入力信号およびINPUT 1入力
信号のAタグ部分に結合される。Bオペランド上位バイ
トタグと、中位バイトタグと、下位バイトタグとはIN
PUT 0入力信号およびINPUT 1入力信号のB
タグ部分に結合される。保留ステーションエントリのA
オペランドタグ有効ビットおよびBオペランドタグ有効
ビットはINPUT 0入力信号およびINPUT 1
入力信号のタグ有効部分に結合される。保留ステーショ
ンエントリの取消ビットは、ロードストアコントローラ
182に結合され、かつリオーダバッファ114および
分岐セクション135から受取った制御情報に基づいて
セットされる。
【0061】ロードストアコントローラ182によって
発生したタイプ一致信号は、何らかの命令がロードスト
ア機能ユニットに送られたかどうかを決定する。より特
定的には、ロードストアコントローラ182がロードス
トア機能ユニットタイプコードが4つのTADバスのう
ちの1つに与えられたタイプコードと一致すると判断し
た場合、ロードストアコントローラ182はINPUT
0信号のためにその特定のディスパッチ位置を選択す
る。ロードストアコントローラ182がロードストア機
能ユニットタイプコードが4つのTADバスのうちの別
のものによって与えられたタイプコードと一致すると判
断すれば、ロードストアコントローラ182はINPU
T 1信号のためにその特定のディスパッチ位置を選択
する。
【0062】図5を参照して、RS0加算器回路216
は保留ステーション210からアドレス成分を受け、か
つ線形アドレス信号ADDR Aおよび有効セグメント
アクセス信号を与える。RS0加算器回路216は、論
理アドレス加算器240と線形アドレス加算器242と
を含む。論理アドレス加算器240は論理アドレスを線
形アドレス加算器242に与える。論理アドレス加算器
240はAオペランドマルチプレクサ244からAオペ
ランド加算器信号を受け、Bオペランドマルチプレクサ
246からBオペランド加算器信号を受け、かつ変位マ
ルチプレクサ248から変位加算器信号を受ける。
【0063】オペランドマルチプレクサ回路244は量
ゼロを受けるとともに、保留ステーションエントリ21
0からAオペランドを受け、マルチプレクスされAオペ
ランド加算器信号として与えられる値は、ロードストア
コントローラ182から受取ったアドレスモード制御情
報によって決定される。Bオペランドマルチプレクサ回
路246はシフト回路247からスケーリングされたB
オペランドを受ける。Bオペランドは、INLSバスを
介して命令デコーダ108から受取ったスケール信号に
基づいてスケーリングされる。Bオペランドマルチプレ
クサ回路246はまた、ロードストアコントローラ18
2の制御下で開始アドレスレジスタ249にストアされ
る開始アドレスと、以前の誤整列したアクセスから誤整
列したアクセスレジスタ451にストアされる誤整列し
たアクセス1アドレスとを受ける。マルチプレクスされ
Bオペランド加算器信号として与えられる値はアドレス
モード制御情報によって決定される。変位マルチプレク
サ回路248は保留ステーションエントリ210から変
位アドレス成分を受ける。変位マルチプレクサ回路24
8はまた、量4、5、−4、および−2を受ける。マル
チプレクスされかつ変位加算器信号として与えられる値
はアドレスモード制御情報によって決定される。
【0064】整列したアクセスロード動作については、
Aオペランドがマルチプレクサ244によって選択さ
れ、Bオペランドがマルチプレクサ246によって選択
され、かつ変位が248によって選択される。誤整列し
たアクセスロード動作、つまり倍長語境界を横切るアク
セスについては、第1の誤整列したアクセスアドレスが
ノーマルロード動作として発生し、かつ加算器240は
誤整列したアクセス1アドレスを発生する。誤整列した
アクセス1レジスタ251はこの誤整列したアクセス1
アドレスを保持する。次のクロックサイクルでは、Aオ
ペランドマルチプレクサ244によって値0が選択さ
れ、Bオペランドマルチプレクサ246によって値4が
選択され、かつマルチプレクサ248によって誤整列し
たアクセス1アドレスが選択され、こうして加算器24
0が誤整列したアクセス1アドレスに量4を加える。複
数ROP動作、たとえば64ビットロード動作について
は、ノーマルロード動作として第1のアクセスアドレス
が発生され、かつ加算器240は複数ROP開始アドレ
スを発生する。開始アドレスレジスタ249はこの開始
アドレスを保持する。第2のROPがアクセスされる場
合、マルチプレクサ248からの開始アドレスと、マル
チプレクサ246からの値4とを加えることによって第
2のROPアドレスが形成される。80ビット複数RO
P動作については、マルチプレクサ246によって値5
が与えられる。各複数ROP動作は誤整列する場合があ
り、この場合は、開始アドレスは誤整列したアクセスア
ドレス1と同じ働きをする。PUSH動作については、
動作のアクセスサイズに依存してBオペランドアドレス
からある値が減じられる。もしアクセスサイズが倍長語
であれば、値4が減算され、もしアクセスサイズが語で
あれば、値2が減算される。シフト回路27を制御する
スケーリング係数がINLS情報に基づいてロードスト
アコントローラ182によって発生する。
【0065】加算器回路216はまた、セグメントディ
スクリプタアレイ250と、リミットチェック回路25
2とを含む。セグメントディスクリプタアレイ250は
セグメントリミット信号をリミット回路252に与え、
セグメントベースアドレス信号を加算器回路242に与
える。リミットチェック回路252はまた、論理加算器
240から論理アドレスを受け、かつ論理アドレスがセ
グメントディスクリプタアレイ250によって与えられ
るリミットで説明されるようなセグメントリミット内で
あることを示す有効セグメントアクセス信号を与える。
【0066】加算器回路240は、Aオペランド加算器
信号とBオペランド加算器信号と変位加算器信号とを受
け、これらの信号を加算して論理アドレス信号を与え
る。加算器回路242はセグメントディスクリプタアレ
イ250から受取ったセグメントベースアドレスを論理
アドレスに加えて線形アドレスを与える。
【0067】RS1加算器218はRS0加算器と同様
であるが、ただしRS0保留ステーションを用いる場合
にのみ整列していないアクセスが実行されるため、RS
1加算器218はマルチプレクサ248を含まない。R
S1加算器218中では、変位加算器信号として変位が
直接加算器240に与えられる。さらに、未整列のアク
セスは実行されないため、RS1加算器218用のマル
チプレクサ246には値4および値5は与えられない。
【0068】図6を参照して、ストアバッファは、Aポ
ートマージ回路306およびBポートマージ回路308
とともに、4つのストアバッファエントリSB0 30
0、SB1 301、SB2 302、およびSB3
303を含む。ポートマージ回路306はデータキャッ
シュ150からAポートデータ信号を受け、かつ保留ス
テーション回路124の保留ステーションエントリRS
0からAポートデータ信号を受け、さらにこれらの信号
をマージしてストアバッファエントリSB0−SB3に
マージされたAデータ信号を与える。Bポートマージ回
路308はデータキャッシュ150からBポートデータ
信号を受け、かつ保留ステーション回路124の保留ス
テーションエントリRS1からBポートデータ信号を受
け、さらにこれらの信号をマージしてストアバッファエ
ントリSB0−SB3にマージされたBデータ信号を与
える。マージ回路306、308を設けることにより、
ステアリング機能が与えられる。
【0069】たとえば、4バイトDATA A信号のう
ちの1バイトが、保留ステーション回路124によって
与えられる場合に更新されているかもしれない。この更
新されたバイトは、データキャッシュ150によって与
えられたDATA A信号からの3つの残りのバイトと
マージされる。マージ回路306、308は、アクセス
サイズ、線形アドレスの最下位2ビット、およびアクセ
スが誤整列されたアクセス1であるかまたは誤整列され
たアクセス2であるかに基づいて、ロードストアコント
ローラ182によって制御される。読出修正書込動作と
してストアが行なわれるため、マージ回路306、30
8によって与えられるステアリング機能が可能である。
このステアリング機能を与えることにより、データキャ
ッシュ150はデータキャッシュ150へのすべてのア
クセスが32ビット倍長語アクセスであるため複雑なス
テアリング回路を必要としない。さらに、ストアバッフ
ァエントリ中にある情報はすべてデータキャッシュ15
0にストアされる予定の情報を反映しているため、ロー
ドストア機能ユニット134がロード転送動作を行なう
ことが可能となる。ロード転送動作においては、ストア
バッファエントリをアクセスすることによってストアが
実際にデータキャッシュ150中にストアされる前にロ
ードが実行されてもよく、ロード転送によりマイクロプ
ロセッサのクリティカルなタイミング経路からストア動
作を取除く。
【0070】各ストアバッファエントリはまた、4つの
結果バスから入力信号を受け、保留ステーション124
からADDR Aアドレス信号およびADDR Bアド
レス信号を受け、かつ保留ステーション124からTA
G Aタグ信号およびTAGBタグ信号を受取るととも
に、ロードストアコントローラ182から制御信号を受
取る。これらの制御信号はロード信号およびシフト信号
を含む。さらに、ストアバッファエントリSB0はスト
アバッファエントリSB1からの出力を受け、かつスト
ア出力をIADバス102に与える。ストアバッファエ
ントリSB1はストアバッファエントリSB2から出力
されたストアバッファエントリを受け、かつまたストア
バッファエントリSB0から出力されたストアバッファ
エントリを受け、さらにストアバッファエントリ出力を
SB0に与える。ストアバッファエントリSB2は、ス
トアバッファエントリSB3から出力されたストアバッ
ファエントリを受け、かつまたストアバッファエントリ
SB0およびSB1からエントリを受け、さらにストア
バッファエントリ出力をSB1に与える。ストアバッフ
ァSB3は、ストアバッファエントリSB0、SB1お
よびSB2から出力されたストアバッファエントリを受
け、かつストアバッファエントリ出力をSB2に与え
る。
【0071】ストアバッファエントリSB1−SB3に
下位ストアバッファエントリからのフィードバックを与
えることにより、ストア転送動作が可能となる。たとえ
ば、ストアバッファエントリSB0を上位ストアバッフ
ァエントリSB1−SB3に与えることによって、これ
らのストアバッファエントリが同じ線形アドレスを有す
る場合にSB0ストアバッファエントリと上位エントリ
とを組合わせることができる。さらに、ストアバッファ
エントリがストアされる場合はエントリに対するあらゆ
る修正を含む。ストア転送機能については以下により詳
しく説明する。
【0072】ストア転送により、前のストアがデータキ
ャッシュ150にストアされるまで保留ステーションを
停止させることなくシステムが動作できる。x86アー
キテクチャにおいては、かなりの数の連続したバイトの
アクセスが発生するため、ストア動作に対するロード動
作の従属性を取除くことによって、ロードが行なわれる
速度がストア転送によって大幅に上昇する。
【0073】図7を参照して、ストアバッファ回路18
0の各ストアバッファエントリSB0−SB3はストア
バッファエントリ339で説明した情報を含む。ストア
バッファエントリ339は32ビットデータ倍長語34
0と、タグ部分341と、32ビット線形アドレス34
2と、制御情報部分344とを含む。データ倍長語34
0は4つのデータバイト、つまりデータバイト0−デー
タバイト3を含む。
【0074】タグ部分341はデータバイト0−3に対
応する4つのバイトタグ部分を含む。バイト0タグ部分
はバイト0タグ(TAG BYTE 0)と、バイト0
制御ビット(B0)と、バイト0タグ有効ビット(T
V)とを含む。バイト1タグ部分は、バイト1タグ(T
AG BYTE 1)と、バイト1制御ビット(B1)
と、バイト1タグ有効ビット(TV)とを含む。バイト
2タグ部分は、バイト2タグ(TAG BYTE 2)
と、バイト2制御ビット(B0、B1)と、バイト2タ
グ有効ビット(TV)とを含む。バイト3タグ部分は、
バイト3タグ(TAG BYTE 3)と、バイト3制
御ビット(B0、B1)と、バイト3タグ有効ビット
(TV)とを含む。
【0075】バイトタグTAG BYTE 0−3は結
果バスからデータバイト0−3を取出すためのタグを与
える。バイト制御ビットはどの結果バスバイトからデー
タバイトが取出されるべきかを示す。より特定的には、
バイト0制御ビットB0がセットされている場合は、デ
ータが結果バスバイト1から転送されるべきであり、も
しバイト0制御ビットB0がクリアされていれば、デー
タが結果バスバイト0から転送されるべきであることを
示す。バイト1制御ビットB1がセットされている場合
は、結果バスバイト0からデータが転送されるべきであ
り、もしバイト1制御ビットB1がクリアされている
と、データが結果バスバイト1から転送されるべきであ
ることを示す。バイト2制御ビットB1がセットされて
いる場合は、結果バスバイト1からデータが転送される
べきであることを示し、バイト2制御ビットB0がセッ
トされている場合は、結果バスバイト0からデータが転
送されるべきであることを示し、もしバイト2制御ビッ
トB0およびB1がクリアされていると、データは結果
バスバイト2から転送されるべきである。バイト3制御
ビットB1がセットされる場合は結果バスバイト1から
データが転送されるべきであることを示し、かつバイト
3制御ビットB0がセットされている場合は結果バスバ
イト0からデータが転送されるべきであることを示し、
もしバイト3制御ビットB0およびB1がクリアされて
いると、データは結果バスバイト3から転送されるべき
である。バイトタグ有効ビットTVは対応するタグフィ
ールドが有効バイトタグを含むことを示す。
【0076】ストアバッファタグはメモリ中の実際のバ
イト位置を示すが、保留ステーションタグではタグと位
置との間には1対1の対応は存在しない。保留ステーシ
ョンタグを用いれば、LタグおよびMタグはストアバッ
ファタグ内の任意の場所にマッピングすることができ
る。有効タグのついた未整列のアクセスはストアバッフ
ァの中へは入れない。未整列のアクセスストアについて
は、保留ステーションエントリRS0およびRS1は保
留ステーションが有効データを受取るまで待機し、その
後データは2つのストアバッファエントリとしてストア
バッファに与えられる。
【0077】制御部分344はストアバッファエントリ
有効ビット(V)と、2ビット未整列アクセス制御信号
(UA)と、書込保護ビット(WB)と、キャッシュ不
可ストアビット(NC)と、入力/出力アクセスビット
(IO)と、浮動小数点更新ポインタビット(FP)
と、物理アクセスビット(P)と、ロックされたアクセ
スビット(L)と、2ビットカラム表示ビット(C1)
とを含む。ストアバッファエントリ有効ビットは、特定
のエントリが有効である、つまりこのストアバッファエ
ントリ中に何らかの有効な情報がストアされていること
を示す。未整列のアクセス制御信号は、未整列のアクセ
スのどの部分、つまり第1の部分または第2の部分のど
ちらがエントリにストアされるかを示す。キャッシュ不
可ストアビットは、ストアエントリがキャッシュ不可な
ためエントリをデータキャッシュ150に書込むことが
できないことを示す。I/Oアクセスビットは外部イン
タフェースに対してI/Oアクセスが発生していること
を示す。物理アクセスビットは、ストアアドレスが物理
アドレスであるため、メモリ管理ユニットが線形−物理
変換をバイパスすべきであることを示し、これはロード
ストア機能ユニットがメモリ管理ユニット164のペー
ジディレクトリまたはTLBのいずれかを更新している
場合に発生する。ロックされたアクセスビットは、以前
のロードによってロックされているかもしれない外部バ
スのロックを外すことを示す。カラム表示信号は、デー
タキャッシュの4つのカラムのうちの書込まれつつある
1つを示し、このためストア動作を実行する際にデータ
キャッシュ150中でカラムルックアップを実行する必
要がないことを示す。
【0078】図8を参照して、ストアバッファエントリ
回路SB2 302が各ストアバッファエントリ回路の
一例として示される。ストアバッファエントリ回路30
2は、ストアバッファエントリ339のデータバイト0
−3に対応するストアバッファエントリバイトデータマ
ルチプレクサ362、363、364、および365
と、ストアバッファエントリ339のタグに対応するス
トアバッファエントリタグマルチプレクサ370と、ス
トアバッファエントリマルチプレクサ339のアドレス
に対応するストアバッファエントリアドレスマルチプレ
クサ372とともに、ストアバッファエントリレジスタ
360を含む。ストアバッファエントリ回路302はま
た、タグ比較回路374とアドレス比較回路376とを
含む。ストアバッファエントリレジスタ360は、スト
アバッファデータエントリレジスタ380と、ストアバ
ッファアドレスエントリレジスタ382と、ストアバッ
ファタグエントリレジスタ384と、ストアバッファ制
御エントリレジスタ386とを含む。
【0079】ストアバッファエントリレジスタ回路36
0は、ストアバッファエントリデータバイトマルチプレ
クサ362−365と、タグマルチプレクサ370と、
アドレスマルチプレクサ372とからストアバッファエ
ントリ339を並列に受け、かつストアバッファエント
リ回路SB1およびSB3に並列にストアバッファエン
トリ339を与えるレジスタである。さらに、ストアバ
ッファデータエントリレジスタ380は、保留ステーシ
ョンミキサ回路220のデータポートAおよびデータポ
ートBにデータバイト0−3を与える。これらのデータ
バイトはロードストア機能ユニット134によるロード
転送動作の実行を可能にするために与えられる。
【0080】バイトマルチプレクサ回路362−365
は、Aマージ回路306、Bマージ回路308、および
4つの結果バスならびにストアバッファエントリ回路S
B3、SB0およびSB1からそれぞれバイトを受取
る。バイトマルチプレクサ回路362−365はストア
バッファ制御信号によって制御され、これらのストアバ
ッファ制御信号は、各ストアバッファエントリ毎の線形
アドレス、および保留ステーション中のエントリからの
線形アドレスの一致に基づいてロードストアコントロー
ラ182によって与えられる。結果バスはストアバッフ
ァ制御信号によって制御され、これらのストアバッファ
制御信号は特定のバイトについてタグ有効ビットが存在
するかどうかに基づいてロードストアコントローラ18
2によって与えられる。もしタグ有効ビットが特定のバ
イトについてセットされると、その特定のバイトは結果
バスをモニタし、かつタグに一致する値を有する結果バ
スであればどれでもマルチプレクスする。
【0081】たとえば、バイトマルチプレクサ回路36
2は、Aマージ信号と、Bマージ信号と4つの結果信号
と、ストアバッファエントリSB3、SB0およびSB
1との各々からバイト0データを受取る。ストアバッフ
ァ制御信号に基づいて、バイトマルチプレクサ回路36
2はこれらのデータバイトの1つをストアバッファレジ
スタ回路360中に保持されるSB2ストアバッファエ
ントリとして与える。
【0082】ストアバッファデータレジスタ380にス
トアされる各バイトはメモリにストアされているものを
直接反映するため、データバイトをメモリにストアされ
ているものに対応させるようにバイトステアリングが設
けられる。バイトステアリングは、バイトマルチプレク
サ0 362およびバイトマルチプレクサ1 363に
4つの結果バスバイト0および4つの結果バスバイト1
からの入力を並列に与え、バイトマルチプレクサ2 3
64に4つの結果バスバイト0、4つの結果バスバイト
1および4つの結果バスバイト2からの入力を並列に与
え、かつバイトマルチプレクサ3 365に4つの結果
バスバイト0、4つの結果バスバイト1および4つの結
果バスバイト3からの入力を並列に与えることによって
設けられる。結果信号のLバイトおよびMバイトはスト
アバッファ中のどのバイト位置にも対応し得るため、マ
ルチプレクサ2および3 364、365は結果バスバ
イト0および1を受取る。しかしながら、結果バイト2
はデータバイト2にのみ対応でき、かつ結果バイト3は
データバイト3にのみ対応できる。
【0083】アドレスマルチプレクサ372は、保留ス
テーション124からADDR A信号とADDR B
信号とを受取り、これらのアドレスのうちの1つを線形
アドレス342としてストアバッファアドレスレジスタ
382に与える。ストアバッファアドレスレジスタ38
2は、ストアバッファエントリ339のアドレス部分3
42をアドレス比較回路372に与え、アドレス比較回
路372はまた保留ステーション124からADDR
A信号とADDR B信号とを受取る。アドレス比較回
路372はADDR A信号およびADDR B信号を
各クロックサイクル毎に線形アドレス342と比較す
る。ADDR AまたはADDR Bと線形アドレス3
42との間が一致すれば、ロードストアコントローラ1
82は保留ステーション124にストアバッファデータ
レジスタ380からデータを読出させ、これはデータキ
ャッシュ150の対応するポートではなくてアドレス比
較一致に対応するポートを介して行なわれる。
【0084】タグマルチプレクサ370はストアバッフ
ァエントリSB0、SB1およびSB3からタグを受取
る。タグマルチプレクサ370はまた保留ステーション
エントリのAタグおよびBタグからタグを受取る。タグ
バイトはタグレジスタ384に保持され、転送される
が、タグレジスタ384は結果バスからタグ入力を受取
らない。結果バスからのタグはタグ制御回路374によ
ってモニタされる。もしタグレジスタ384によって保
持されるタグが結果バスの1つからのタグと一致すれ
ば、タグ制御回路374は、タグの一致を与える結果バ
スがデータを対応するストアバッファデータレジスタへ
与えるようにバイトマルチプレクサ362−365を制
御する。
【0085】ストアバッファエントリ339の制御部分
344はロードストアコントローラ182によってスト
アバッファ制御レジスタ386に与えられる。
【0086】ストアバッファエントリ回路SB0、SB
1およびSB3の唯一の相違点は、他のストアバッファ
エントリから入力信号が与えられることである。より特
定的には、ストアバッファエントリSB0はストアバッ
ファエントリSB1からの出力だけを受取る。ストアバ
ッファエントリSB1はストアバッファSB0およびS
B2からの出力エントリを受取る。ストアバッファエン
トリSB3はストアバッファSB0、SB1およびSB
2からの出力エントリを受取る。
【0087】図6−図8を参照して、ストアバッファ1
80は係属中のストア動作を一時的にストアする。スト
アバイトタグを用いることによって、これらの係属中の
ストア動作は必ずしも完全なストアデータを有する必要
がない。さらに、ストアバッファエントリフィードバッ
クとともにストアバイトタグを用いることによって、ス
トアバッファ180はストア転送動作を実行する。さら
に、ロード動作はデータキャッシュ150にまだストア
されていないストア動作に依存するかもしれないため、
ストアバッファ180はロード転送動作を実行可能であ
る。
【0088】たとえば、係属中の32ビット更新に伴う
レジスタの倍長語のストアのためには、各タグ有効ビッ
トによって示されるように保留ステーションエントリ中
のバイトタグ0−3が有効である。機能ユニットがスト
ア動作用の値を生成しようとしているがまだ生成してい
ない場合に、更新が係属中であると呼ぶ。もしキャッシ
ュアクセスによってキャッシュヒットが与えられると、
ストア動作は保留ステーションエントリRS0からスト
アバッファ回路180へと移る。保留ステーションエン
トリのAオペランド上位バイトタグATAGUは、スト
アバッファエントリ中のバイト3およびバイト2タグと
して複製される。ATAGLおよびATAGM保留ステ
ーションバイトタグは、それぞれストアバッファバイト
0タグおよびバイト1タグとして与えられる。(倍長語
の書込の場合、これらのタグのすべては実際には同一で
ある。)バイト制御ビットB0およびB1のどちらもセ
ットされない。機能ユニットによって結果が利用可能と
なると、ストアバッファ180はタグ比較回路374を
用いて各バイトタグを結果バス上に現われるタグと比較
し、かつマルチプレクサ362−365を用いてタグが
一致するときはいつでも結果バスの各バイトからのデー
タをゲート入力する。倍長語のストアの際には各バイト
は同時に一致する。
【0089】係属中の倍長語およびそれに続く同じ倍長
語の1バイトに対する係属中のバイト更新に伴うレジス
タへの倍長語の記憶のためには、少なくとも2つのタグ
が最終倍長語に現われる。同一のタグがバイト0、2お
よび3について用いられ、かつバイト1については異な
るタグが用いられる。この異なるタグは第2のバイトス
トアが発生したことを表わす。より特定的には、第1の
倍長語は4つの有効タグとともにストアバッファエント
リSB0にストアされ、かつバイトストアは新しいタグ
がバイト1に位置した状態で上位ストアバッファエント
リSB1中にストアされ、一方、バイト0、2および3
からのタグがSB0から転送される。したがって、結果
バス上にバイト1結果を与え、バイト制御ビットを用い
てバイト1結果をステアリングなしに倍長語ストアバッ
ファエントリ中へ書込むストア転送が達成される。
【0090】メモリ中のバイト2およびバイト3への係
属中の更新に伴うワードレジスタへのワードストアのた
めには、B1ビットがバイト3中でセットされB0ビッ
トがバイト2中でセットされた状態でバイト0およびバ
イト1のためのタグがバイト2およびバイト3中へ書込
まれる。このタグが結果バス上に駆動されると、これら
のバイトはそれぞれ、このタグに対応する結果バスのバ
イト0およびバイト1からストアバッファデータレジス
タ380へと同時に転送される。この例はまた、ストア
バッファエントリにストアされる1ワードに対して2つ
の係属中のバイト更新が存在する場合に当てはまる。ス
トアバッファエントリ中の2つのバイトはおそらくは異
なる時間に異なる結果バスから転送される。
【0091】バイトストアについては、ソースバイトが
上位バイトであるか下位バイトであるかに依存してB1
ビットまたはB0ビットがセットされるタグと1つのバ
イトとが取換えられる。このタグが一致すると、結果バ
スの示されたバイトからのデータをゲートする。このこ
とは係属中の一語または倍長語更新を有するレジスタの
バイトストアの場合にも当てはまる。この場合、バス全
体が有効データを含み得るとしても、バイトは結果バス
の対応する位置にあることが予想される。
【0092】ストア動作を実行している場合、ストアの
読出局面でデータキャッシュ150ではなく下位ストア
バッファエントリから転送されたデータを受取ることが
ある。その結果、ストアバッファ180は既にタグを持
っているデータ語の中へタグを挿入する。これはたとえ
ば1つ以上のバイトが短い時間間隔の間に同一の倍長語
中へ書込まれる場合に発生する。したがって、ストアバ
ッファエントリにストアされる情報は、その各々が異な
る結果を表わす1つ以上のタグを持つことが可能であ
る。動作中には、各タグは結果バスとの比較を行ない、
適切な時間に適切なバイトをゲート入力する。未整列の
ストアはストアバッファ180の中へタグを書込むこと
はできないので、おかしな転送は発生しない。
【0093】ロード動作を実行する場合、ストアバッフ
ァ180のアドレス比較回路376は、RS0およびR
S1加算器によって与えられる線形アドレスをストアバ
ッファエントリの線形アドレスと比較する。アドレス比
較回路376が与えるヒット信号が示すように、ロード
アドレスとストアバッファエントリの1つにストアされ
たアドレスとが一致すると、ロードストアコントローラ
182はロードがストアに依存していると判断する。も
しロードがストアに依存していれば、線形アドレスの一
致を与えたストアバッファエントリからのデータが、ア
ドレスの一致が与えられたいずれかのポートを介して与
えられる。この動作はロード転送動作と呼ばれる。
【0094】図9を参照して、データキャッシュ150
は線形にアドレス指定されたキャッシュである。引用に
より援用される「線形アドレス指定可能なマイクロプロ
セッサキャッシュ(Linearly Addressable Microproces
sor Cache)」と題された同時出願の米国特許出願連続番
号第146,381 号は、データキャッシュ150の線形アド
レス指定についての構造および動作をより詳細に説明し
ている。
【0095】データキャッシュ150のエントリ400
が示される。データキャッシュ150の各エントリごと
に、キャッシュエントリに対応する各線形アドレスのう
ちの中位ビットはキャッシュインデックスを与え、この
キャッシュインデックスは線形タグアレイをアドレス指
定し、かつ各線形タグアレイからエントリを取出すため
に用いられる。各線形アドレスの上位ビットは、アドレ
スタグアレイ310から取出されたエントリ内にストア
される線形データタグと比較される。各線形アドレスの
最下位ビットは取出されたエントリへのオフセットを与
えて、線形アドレスによってアドレス指定された実際の
バイトを見つける。データキャッシュ150は常に32
ビットワードの形であるため、これらの最下位ビットは
データキャッシュ150にアクセスする場合には使用さ
れない。
【0096】データキャッシュ150のデータキャッシ
ュエントリ400は線形アドレスタグエントリ402と
データエントリ404とを含む。データエントリ404
は16バイト(DBYTE0−DBYTE15)ブロッ
クのデータを含む。データ線形アドレスタグエントリ4
02は、データ線形タグ値(DTAG)と、線形タグ有
効ビット(TV)と、有効物理変換ビット(P)とを含
む。線形アドレスの上位21ビットに対応するデータ線
形タグ値は、対応するストアアレイエントリにストアさ
れるブロックの線形ブロックフレームアドレスを示す。
線形タグ有効ビットは線形タグが有効であるかどうかを
示す。有効物理変換ビットはエントリが物理タグヒット
をうまく与えられるかどうかを示し、これについては以
下に説明する。
【0097】図10を参照すると、線形にアドレス指定
可能なデータキャッシュ150のデータキャッシュ線形
タグ回路202とデータキャッシュストアアレイ200
とが示される。データキャッシュ150は4つの2Kバ
イトカラムに、つまりカラム0、カラム1、カラム2、
およびカラム3に配列される。データ線形タグ回路20
2は2つの線形アドレスADDR AとADDR Bと
を同時に受取り、データストアアレイ200は2つのデ
ータ信号DATA AとDATA Bとを同時に与え
る。つまりデータキャッシュ150は二重にアクセスさ
れるデータキャッシュとして作用する。
【0098】データストアアレイ200は4つの別個の
データストアアレイ、つまりカラム0ストアアレイ43
0、カラム1ストアアレイ431、カラム2ストアアレ
イ432、およびカラム3ストアアレイ433とともに
マルチプレクサ(MUX)回路440を含む。マルチプ
レクサ440はデータ線形タグ回路202から制御信号
を受取り、これらの制御信号は各線形タグアレイ中にス
トアされる線形タグ値と一致するかどうかを示す。マル
チプレクサ440はストアアレイ430−433からデ
ータを受取り、かつこのデータをロードストア機能ユニ
ット134に与える。
【0099】線形タグ回路202はカラム0−3に対応
する線形タグアレイ450−453を含む。各線形タグ
アレイは対応する比較回路454−457に結合され
る。したがって、データキャッシュ150の各カラムは
ストアアレイと、線形タグアレイと、比較回路とを含
む。ストアアレイ430−433、アドレスタグアレイ
450−453、および比較回路454−457はすべ
てロードストアセクション134から線形アドレスAD
DR A、ADDR Bを受取る。
【0100】IADバス102はストアアドレスマルチ
プレクサ461を介して各ストアアレイ430−433
に結合されていずれにもストアアドレスを与える。IA
Dバス102はまた、各ストアアレイ430−433に
結合されるストアレジスタ460に結合される。IAD
バス102によって与えられるストアアドレスは、特定
のカラムを指して特定のバンクを選択するために与えら
れ、特定のカラムはカラム選択ビットによって選択さ
れ、これらのカラム選択ビットはストアを行なっている
ときにストアバッファ180によって与えられるか、ま
たは再ロードを行なっているときに物理タグ回路162
によって与えられる。ストアのためには、ただ1のバン
クがアクセスされる。バンク選択ビット、つまりIAD
バス102によって与えられるアドレスのビット2およ
びビット3はバンクにアクセスするために用いられる。
再ロードのためには4つのバンクすべてが並列にアクセ
スされる。
【0101】IADバス102はデータをデータキャッ
シュ150のストアアレイ430−433に書込むため
に、ストア動作および再ロード動作の両方の動作の間に
使用される。ストア動作を実行するときには、データは
32ビット倍長語の形でストアレジスタ460を介して
ストアアレイ430−433に書込まれる。ストアバッ
ファの書込のためには、ADDR Bに与えられるIA
Dバスアドレスがデータキャッシュ150に入力され
る。ADDR BおよびIADアドレスはアドレスマル
チプレクサ461によってマルチプレクスされる。
【0102】再ロード動作を行なうときには、データは
128ビットラインでストアアレイ430−433に書
込まれる。ストアレジスタ460は2回の64ビットア
クセスでIADバス102から128ビットのデータを
集め、この128ビットが集められた後、ストアレジス
タ460はこのデータをストアアレイ430−433に
書込む。再ロードのためには、64ビットが各位相で書
込まれるため、ストアレジスタ460はデータを受取る
ためにIADバス102のアドレスラインをマルチプレ
クスする。アドレスマルチプレクサ461は、ロウを指
し示すためにIADアドレスをADDR Bアドレス経
路上にマルチプレクスする。データキャッシュストアマ
ルチプレクサ460は、ストア動作またはロード動作の
どちらが行なわれているのかに基づいてデータキャッシ
ュコントローラによって制御される。再ロード動作のた
めには、ロードストアコントローラ134はデータキャ
ッシュ150のポートAを介して再ロードアドレスを書
込み、このためデータキャッシュ150は再ロードアド
レスのためにADDR Aを用いる。
【0103】図11および図12を参照すると、データ
キャッシュ150の各ストアアレイは、デュアルポート
動作に関連したオーバーヘッドを必要とせずに、1クロ
ックサイクル中に複数のアクセスが可能となるようにバ
ンク構成とされる。より特定的には、各ストアアレイは
4つのバンク470−473を含み、これらのバンクの
各々は32ビット倍長語データをストアし、各バンクは
それぞれのバンクアドレスマルチプレクサ474−47
7を含む。4つのバンクの組合わせによりデータキャッ
シュ150の1ラインへのアクセスが与えられる。
【0104】各バンク470−473はそれぞれADD
R AまたはADDR Bのいずれかによってアドレス
指定され、これらのアドレスは各バンクアドレスマルチ
プレクサ474−477によって与えられる。バンクア
ドレスマルチプレクサ474−477はADDR Aお
よびADDR Bのバンク選択ビットによって制御され
る。各バンクは個々にアドレス指定されるため、1つ以
上のバンクを同時にアクセスし得る。
【0105】たとえば、図11に示されるように、AD
DR Aがバンク0の1ラインをアドレス指定し、AD
DR Bがバンク3の同じラインをアドレス指定する場
合、マルチプレクサ474はADDR Aをバンク0に
与え、かつマルチプレクサ476はADDR Bをバン
ク2に与える。ADDR Aによってアドレス指定され
たデータ語は、DATA Aデータ経路を介してDAT
A Aとしてロード/ストア機能ユニット134に与え
られ、ADDR Bによってアドレス指定されたデータ
語は、DATA Bデータ経路を介してDATA Bと
してロード/ストア機能ユニット134に与えられる。
【0106】図12からわかるように、ADDR Aお
よびADDR Bの両方がバンク0の同じラインをアド
レス指定する場合、このラインとバンクとだけがアクセ
スされ、この位置のデータはDATA Aデータ経路お
よびDATA Bデータ経路をそれぞれ介してDATA
AおよびDATA Bの両方としてロード/ストア機
能ユニット134に与えられる。
【0107】2つのアクセスがバンクは同じだが異なる
ラインへのアクセスである場合、データキャッシュコン
トローラ190によって1サイクルの間ポートBアクセ
スが停止される。局所性が強い命令キャッシュアクセス
と比べるとデータキャッシュアクセスは一般にランダム
であるため、同じバンクの異なるラインへのポートA、
ポートBのアクセスが発生する頻度は相対的に低い。
【0108】データキャッシュ150へのストアアクセ
スはIADバス102を介して行なわれる。ストアの
間、マルチプレクサ474−478は、バンク470−
473のうちのどれに32ビットストア倍長語が書込ま
れるかを制御するためにストアアクセスを使用する。再
ロードの間、バンク470−473は再ロードデータが
ストアレジスタ460中に集められた後に1つの128
ビットラインに書込まれる。
【0109】図2、および図9−図11を参照して、デ
ータキャッシュ150の一般的な動作について議論す
る。ロード/ストア機能ユニット134がキャッシュ1
50にストアされていないデータ値をリクエストする
と、キャッシュミスが発生する。キャッシュミスを検出
すると、リクエストされた値がデータキャッシュ150
のエントリに書込まれる。より特定的には、ロードスト
アセクション134はその値についての論理アドレスを
線形アドレスに変換する。この線形アドレスはメモリ管
理ユニット164に与えられる。TLB比較回路はこの
値の線形アドレスをメモリ管理ユニットのTLBアレイ
の線形タグ部分と照会して、TLBヒットが存在するか
どうかを判断する。
【0110】ロードストア機能ユニット134がTLB
ヒットがあると判断すると、ロードストア機能ユニット
134はデータを検査してデータがキャッシュ可能かど
うかを判断する。もしデータがキャッシュ可能であり、
かつTLBヒットがあれば、対応する物理アドレスの物
理タグが物理タグ回路162の対応するエントリの中へ
書込まれる。データがストアされたアレイカラムに対応
するデータ線形タグアレイ450−453にはTLBア
レイからの線形タグが書込まれる。
【0111】TLBヒットがなければ、TLBアレイは
TLBヒットが生じるように、メモリ管理ユニット16
4によって要求された値のアドレスを含むように更新さ
れる。その後、物理タグが物理タグ回路162に書込ま
れ、線形タグが適切な線形タグアレイ450−453に
書込まれる。
【0112】その後、ロード/ストア機能ユニット13
4が外部メモリに対してプリフェッチ要求を行ない、外
部メモリ中の線形アドレスに対応する物理アドレスにス
トアされた値が外部メモリから取出される。この値はス
トアアレイ200のバンク、ラインおよびカラムにスト
アされており、ストアアレイ200は線形タグアレイに
ストアされる値の線形タグのライン位置およびカラム位
置に対応する。線形タグアレイ310中の対応する線形
タグ有効ビットおよび有効物理変換ビットは、線形タグ
に対応するエントリが有効であり、線形タグが有効であ
り、かつエントリが物理変換をうまく行なうことを示す
ようにセットされる。
【0113】ロード/ストア機能ユニット134がこの
値についての線形アドレスを再び要求すると、ロードス
トアセクション134は論理アドレスを線形アドレスに
変換し、この線形アドレスは要求されたアドレスと線形
アドレスタグアレイ310中の線形タグとの一致を与え
る。有効ビットがセットされており有効物理変換ビット
がセットされているため、線形アドレスヒットが発生
し、かつデータストアアレイ304の対応するラインに
ストアされるエントリがロード/ストア機能ユニット1
34に与えられる。ロードストアセクション134によ
るアクセスの間、有効物理変換ビットがセットされてエ
ントリが有効物理変換を有することを示しているため、
物理アドレスタグ回路162またはTLB回路164の
どちらへもアクセスの必要がない。
【0114】図1−図10および図13を参照して、ロ
ード/ストア機能ユニット134がポートAを介してロ
ード動作を実行しており、かつロードされるべきデータ
値がデータキャッシュ150中で利用可能な場合、デー
タキャッシュヒットが発生する。より特定的には、周期
1のΦ1の間に加算器240またはRS0加算器216
によって計算されてキャッシュインデックスが発生す
る。このキャッシュインデックスは線形アドレスの最下
位11ビットであり、線形アドレス計算の一部として計
算される。このキャッシュインデックス線形アドレスは
データキャッシュストアアレイ200の適切なラインお
よびバンクにアクセスするために用いられる。適切なラ
インおよびバンクにアクセスするときには、加算器24
2によって計算された線形アドレスが線形タグを比較す
ることによってストアアレイ200の適切なカラムにア
クセスするために使用される。その後、データ値はDA
TAAデータ経路を介して保留ステーション回路124
のドライバ回路220に戻される。このデータ値はドラ
イバ回路220によってフォーマット化されて結果バス
0に与えられる。周期1のΦ2の間、リミットチェック
回路252は当該技術分野で周知のように線形アドレス
に対してセグメントリミットチェックおよび保護チェッ
クを行なう。周期2のΦ1の間、データ値および対応す
る行先タグがポートAのために結果バス0上に駆動され
る。
【0115】ポートAを介してロード動作が実行されて
いる間、対応するロード動作がポートBを介して実行さ
れ得る。この対応するロード動作はデータキャッシュア
クセスのアドレス発生を行なうために、対応する加算器
とともに保留ステーションRS1を用いる。保留ステー
ションRS1中のエントリについてのデータ値および対
応する行先タグは結果バス1上に駆動される。
【0116】図1−図10および図14を参照して、ロ
ード/ストア機能ユニット134によってポートAを介
してストア動作が実行されており、かつストアされるべ
きデータ値がデータキャッシュ150中に既にストアさ
れている場合、データキャッシュヒットが発生する。ス
トアは読出修正書込動作として実行されるため、ストア
動作の第1の部分はロード動作と同様である。データ値
がロードされた後、ロードされた値はロードされたデー
タ値を修正するためにストアバッファ回路180に書込
まれる。
【0117】より特定的には、周期1のΦ1の間、加算
器240またはRS0加算器216による計算によって
キャッシュインデックスが発生される。このキャッシュ
インデックスは線形アドレスの最下位11ビットであ
り、線形アドレス計算の一部として計算される。このキ
ャッシュインデックス線形アドレスはデータキャッシュ
ストアアレイ200の適切なラインおよびバンクにアク
セスするために用いられる。適切なラインおよびバンク
がアクセスされるときには、線形タグを比較することに
よってストアアレイ200の適切なカラムにアクセスす
るために、加算器242によって計算された線形アドレ
スが用いられる。その後、データ値はDATA Aデー
タ経路を介して保留ステーション回路124のドライバ
回路220に戻される。このデータ値はドライバ回路2
20によってフォーマット化されて結果バス0に与えら
れる。周期1のΦ2の間、リミットチェック回路252
は当該技術分野で周知のように線形アドレスに対してセ
グメントリミットチェックおよび保護チェックを行な
う。周期2のΦ1の間、データ値および対応する行先タ
グがポートAのために結果バス0上に駆動され、かつま
たストアバッファ回路180の次に利用可能なエントリ
にストアされる。この値はストア動作がリオーダバッフ
ァ114からリタイアするまでストアバッファ回路18
0に保持され、ストア動作のリタイアはどの命令も係属
していない場合に発生する。その後、リオーダバッファ
114はロードストアリタイア信号を用いてロード/ス
トアコントローラ180に対してストア命令をリタイア
できる、つまりストアを実行できるということを示す。
ストアはデータ値の状態を実際に修正するため、ストア
は仮想に基づいては実行されず、リオーダバッファ11
4がストアの実行を許可する前にストアが実際に次の命
令であるということがはっきりするまで待機しなくては
いけない。
【0118】リオーダバッファ114が命令を実行して
もよいということを示した後、命令の解除に続いて周期
のΦ1の間、データ値および対応する線形アドレスがI
ADバス102に対して駆動される。この周期のΦ2の
間、データ値はデータキャッシュストアアレイ200の
適切なラインおよびバンクに書込まれる。さらに、もし
物理タグ回路162がこの値を外部にもまた書込むべき
であると示せば、データ値は線形アドレスに対応する物
理アドレス位置において外部メモリに書込まれる。IA
Dバス102から線形アドレスをまた受取るメモリ管理
ユニット164によって物理アドレス変換が行なわれ
る。
【0119】図1−図10および図15を参照して、ロ
ード/ストア機能ユニット134が仮想に基づくロード
動作を実行しており、かつロードされるべきデータ値が
データキャッシュ150中で入手できない場合、仮想に
基づくデータキャッシュミスが発生する。ロード動作の
第1の周期はキャッシュヒットが発生した場合と同じで
ある。
【0120】キャッシュ150がアクセスされ、キャッ
シュミスが生じた場合、周期2の間にメモリ管理ユニッ
ト164中でTLBがアクセスされ、かつデータ値の物
理アドレスを決定するために物理タグ回路162中で物
理タグがアクセスされる。その後、この物理アドレスは
保護チェックのどれにも違反しないことを確認するため
にメモリ管理ユニット164内でチェックされる。次の
周期の間、ポートBアクセスがキャッシュアレイ200
の同じバンクへのアクセスではない場合、ポートBは他
のキャッシュアクセスを開始する。さらに、このサイク
ルのΦ2の間、タグバスからのラインのタグ有効ビット
を用いてキャッシュアレイ200が更新される。次の周
期の間、データ値、行先タグおよびステータスが次に利
用可能な結果バス上に駆動され、かつキャッシュヒット
を想定した通常の動作が始まる。
【0121】図1−図10および図16を参照して、キ
ャッシュ再ロードの間、再ロード動作の第1の周期はキ
ャッシュヒットが生じた場合と同じである。しかしなが
ら、キャッシュコントローラ190がキャッシュミスが
生じたと判断した後は、ロード/ストア機能ユニット1
34は、外部メモリを再ロードキャッシュ150にアク
セスする前にストアバッファ回路180が空になるのを
待つ。数クロック周期分待機した後、物理タグ回路16
2は、データの128ビットすべてがストアレジスタ4
60に書込まれたことをキャッシュ150に対して示す
データ使用可能信号(L22LS)を与える。データが
使用可能となりデータキャッシュアレイ200に書込ま
れると、保留ステーション回路124のドライバ回路2
20はデータ、行先タグおよびステータス情報を結果バ
ス0上に駆動する。
【0122】図17を参照して、誤整列したアクセスに
ついては、続く周期の間に2つのアクセスが存在する。
2つのアクセスの各々はキャッシュヒットアクセスと同
じである。各アクセスから戻ったデータはドライバ回路
220によって集積される。2つのアクセスが完了し、
データが集積された後、ドライバ回路220は上に述べ
たようにデータをフォーマット化する。その後、保留ス
テーション回路124のドライバ回路220はデータ、
行先タグおよびステータス情報を結果バス0上に駆動す
る。誤整列したアクセスは保留ステーション0を用いる
場合にのみ実行される。したがって、ドライバ回路22
0のRS0加算器およびポートA部分だけが、誤整列し
たアクセスの実行に必要な回路を必要とした。
【0123】他の実施例 他の実施例は前掲の特許請求の範囲内である。
【0124】たとえば、ロード/ストア機能ユニット1
34はロード機能ユニットとストア機能ユニットとの2
つの別個の機能ユニットに分割されてもよい。この実施
例では、これらの機能ユニットの動作は上述とほぼ同じ
であるが、各機能ユニットはそれぞれの保留ステーショ
ンを含み得る。言い換えれば、ロードセクションはロー
ドに関して議論したように機能するロード保留ステーシ
ョンを含み、かつストアセクションはストアに関して議
論したように機能するストア保留ステーションを含む。
【図面の簡単な説明】
【図1】本発明に従うスーパースカラマイクロプロセッ
サのブロック図である。
【図2】本発明に従うロード/ストア機能ユニットおよ
びデータキャッシュのブロック図である。
【図3】図2のロード/ストア機能ユニットの保留ステ
ーション回路のブロック図である。
【図4】図3の保留ステーション回路のエントリの内容
のブロック図である。
【図5】図3の保留ステーション回路の加算器回路のブ
ロック図である。
【図6】図2のロード/ストア機能ユニットのストアバ
ッファ回路のブロック図である。
【図7】図6のストアバッファ回路のエントリの内容の
ブロック図である。
【図8】図6のストアバッファ回路のストアバッファエ
ントリのブロック図である。
【図9】図2のデータキャッシュのエントリのブロック
図である。
【図10】図2のデータキャッシュのストアアレイおよ
び線形タグアレイのブロック図である。
【図11】図10のストアアレイのバンク構造のブロッ
ク図である。
【図12】図10のストアアレイのバンク構造のブロッ
ク図である。
【図13】本発明に従うロード動作のタイミング図であ
る。
【図14】本発明に従うストア動作のタイミング図であ
る。
【図15】本発明に従う理論上のアクセス動作の間のデ
ータキャッシュミスのタイミング図である。
【図16】本発明に従うデータキャッシュ再ロード動作
のタイミング図である。
【図17】本発明に従う誤整列アクセス動作のタイミン
グ図である。
【符号の説明】
100 マイクロプロセッサ 124 保留ステーション回路 134 ロード/ストア機能ユニット 150 データキャッシュ 180 ストアバッファ回路 182 ロード/ストアコントローラ 190 キャッシュコントローラ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ウィリアム・エム・ジョンソン アメリカ合衆国、78746 テキサス州、オ ースティン、クリスティー・ドライブ、 102 (72)発明者 デイビッド・ビィ・ウィット アメリカ合衆国、78759 テキサス州、オ ースティン、パスファインダー・ドライ ブ、6318 (72)発明者 ミュラリ・チナコンダ アメリカ合衆国、78746 テキサス州、オ ースティン、スパイグラス・ドライブ、 1781、ナンバー・301

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】 複数個のロード動作を並列に実行するた
    めのロード機能ユニットであって、ロード動作を一時的
    に保持するための保留ステーション回路を含むロード機
    能ユニットを備え、前記保留ステーション回路は第1の
    保留ステーションエントリと第2の保留ステーションエ
    ントリとを含み、前記第2の保留ステーションエントリ
    は前記第1の保留ステーションエントリに結合され、か
    つ前記第1の保留ステーションエントリに保留ステーシ
    ョンエントリ出力を与え、さらにロード信号を並列に受
    取り、第1のロード信号を前記第1の保留ステーション
    エントリと前記第2の保留ステーションエントリとに与
    え、かつ第2のロード信号を前記第1の保留ステーショ
    ンと前記第2の保留ステーションとに与える入力信号マ
    ルチプレクサ回路と、 前記第1の入力ロード信号と前記第2の入力ロード信号
    とのうちのどちらを前記第1の保留ステーションエント
    リおよび前記第2の保留ステーションエントリが取出す
    かを制御するためのロード制御回路とを含み、前記ロー
    ド機能ユニットはさらにストアアレイとデータキャッシ
    ュコントローラとを含むデータキャッシュを含み、 前記ストアアレイは第1のデータキャッシュポートと第
    2のデータキャッシュポートとの各々を介して前記ロー
    ド機能ユニットの前記第1の保留ステーションエントリ
    と前記第2の保留ステーションエントリとに結合され、
    前記ストアアレイは前記第1のロード信号と前記第2の
    ロード信号とに応答してデータを前記ロード機能ユニッ
    トに並列に与え、 前記データキャッシュコントローラは前記ロード制御回
    路に結合される、ロード機能ユニット。
  2. 【請求項2】 前記保留ステーション回路はデータキャ
    ッシュデータを並列に受取り、かつ前記データキャッシ
    ュデータを第1の結果バスと第2の結果バスとに並列に
    与える保留ステーションドライバ回路をさらに含む、請
    求項1に記載のロード機能ユニット。
  3. 【請求項3】 前記ロード制御回路はタイプコード一致
    信号に応答して前記第1の保留ステーションエントリと
    前記第2保留ステーションエントリのどちらによってど
    のロード信号が取出されるかを制御し、 前記タイプコード一致信号は、タイプコードバスからの
    タイプコードが所定のロード機能ユニットタイプコード
    に一致する場合に前記ロード制御回路によって発生す
    る、請求項1に記載のロード機能ユニット。
  4. 【請求項4】 前記保留ステーション回路は第3の保留
    ステーションエントリをさらに含み、前記第3の保留ス
    テーションエントリは前記第2の保留ステーションエン
    トリに結合されて前記第2の保留ステーションエントリ
    に第3の保留ステーションエントリ出力を与え、前記第
    3の保留ステーションエントリは前記第1の保留ステー
    ションエントリに結合されて前記第1の保留ステーショ
    ンエントリに前記第3の保留ステーションエントリ出力
    を与え、前記第1の保留ステーションエントリと前記第
    2の保留ステーションエントリのうちの一方は前記ロー
    ド制御回路の制御下で前記第3の保留ステーションエン
    トリ出力を取出す、請求項1に記載のロード機能ユニッ
    ト。
  5. 【請求項5】 前記保留ステーション回路は第4の保留
    ステーションエントリをさらに含み、前記第4の保留ス
    テーションエントリは前記第3の保留ステーションエン
    トリに結合されて前記第3の保留ステーションエントリ
    に第4の保留ステーションエントリ出力を与え、前記第
    4の保留ステーションエントリは前記第2の保留ステー
    ションエントリに結合されて前記第2の保留ステーショ
    ンエントリに前記第4の保留ステーションエントリ出力
    を与え、 前記第3の保留ステーションエントリと前記第2の保留
    ステーションエントリのうちの一方は前記ロード制御回
    路の制御下で前記第4の保留ステーションエントリ出力
    を取出す、請求項4に記載のロード機能ユニット。
  6. 【請求項6】 前記保留ステーション回路は、前記第1
    の保留ステーションエントリと前記第2の保留ステーシ
    ョンエントリとにそれぞれ結合される第1の加算器回路
    と第2の加算器回路とをさらに含み、 前記第1の加算器回路および前記第2の加算器回路は前
    記ロード信号を受取って前記ロード信号に基づいてキャ
    ッシュアドレス信号を与え、前記キャッシュアドレス信
    号は前記データキャッシュストアアレイ内の第1の位置
    および第2の位置の各々にアクセスする、請求項1に記
    載のロード機能ユニット。
  7. 【請求項7】 前記第1の加算器回路および前記第2の
    加算器回路の各々は複数個のアドレス成分信号を受取
    り、論理アドレス信号を与えるための論理アドレス加算
    器と、 前記論理アドレス信号とセグメントベース信号とを受取
    り、線形アドレスを与えるための線形アドレス加算器と
    を含む、請求項6に記載のロード機能ユニット。
  8. 【請求項8】 前記アドレス成分信号はAオペランド加
    算器信号と、Bオペランド加算器信号と、変位加算器信
    号とを含む、請求項7に記載のロード機能ユニット。
  9. 【請求項9】 前記第1の加算器回路は、 Aオペランド信号とゼロ信号とを受取り、前記ロードコ
    ントローラからのアドレスモード制御情報に応答してこ
    れらの値のうちの1つを前記Aオペランド加算器信号と
    して与えるためのオペランドマルチプレクサ回路と、 Bオペランド信号と誤整列アドレス1信号とを受取り、
    前記ロードコントローラからのアドレスモード制御情報
    に応答してこれらの信号のうちの1つを前記Bオペラン
    ド加算器信号として与えるためのBオペランドマルチプ
    レクサ回路と、変位信号と4信号と5信号とを受取り、
    前記ロードコントローラからのアドレスモード制御情報
    に応答してこれらの値のうちの1つを前記変位加算器信
    号として与えるための変位マルチプレクサ回路とをさら
    に含む、請求項8に記載のロード機能ユニット。
  10. 【請求項10】 前記第2の加算器回路は、 Aオペランド信号とゼロ信号とを受取り、前記ロードコ
    ントローラからのアドレスモード制御情報に応答してこ
    れらの値のうちの1つを前記Aオペランド加算器信号と
    して与えるためのAオペランドマルチプレクサ回路と、 Bオペランド信号と誤整列アドレス1信号とを受取り、
    前記ロードコントローラからのアドレスモード制御情報
    に応答してこれらの信号のうちの1つを前記Bオペラン
    ド加算器信号として与えるためのBオペランドマルチプ
    レクサ回路とをさらに含み、 変位信号は前記論理アドレス加算器に直接与えられる、
    請求項8に記載のロード機能ユニット。
  11. 【請求項11】 ストア転送動作を実行するためのスト
    ア機能ユニットであって、 ストア動作を保持するための第1および第2のストアバ
    ッファエントリ回路を含み、前記第2のストアバッファ
    エントリは前記第1のストアバッファエントリに結合さ
    れて前記第1のストアバッファエントリに第2のストア
    バッファエントリ出力を与え、前記第1のストアバッフ
    ァエントリは前記第2のストアバッファエントリに結合
    されて前記第2のストアバッファエントリに第1のスト
    アバッファエントリ出力を与え、さらに前記第1のスト
    アバッファエントリ出力を用いてストア転送動作を実行
    するために、前記第2のストアバッファエントリ回路が
    前記第1のストアバッファエントリ出力を取出すかどう
    かを制御するためのストアコントローラを含み、前記ス
    トアコントローラは前記第1のストアバッファエントリ
    回路と前記第2のストアバッファエントリ回路とに結合
    される、ユニット。
  12. 【請求項12】 第3のストアバッファエントリ回路を
    さらに含み、前記第3のストアバッファエントリ回路は
    前記第2のストアバッファエントリ回路に結合されて前
    記第2のストアバッファエントリに第3のストアバッフ
    ァエントリ出力を与え、前記第1のストアバッファエン
    トリ回路は前記第3のストアバッファエントリ回路に結
    合されて前記第3のストアバッファエントリ回路に第1
    のストアバッファエントリ出力を与え、かつ前記第2の
    ストアバッファエントリ回路は前記第3のストアバッフ
    ァエントリ回路に結合されて前記第3のストアバッファ
    エントリ回路に第2のストアバッファエントリ出力を与
    え、さらに前記ストアコントローラは前記第3のストア
    バッファエントリ回路に結合され、前記第1および第2
    のストアバッファエントリ出力を用いてストア転送動作
    を実行するために、前記第3のストアバッファエントリ
    回路が前記第1のストアバッファエントリ出力を取出す
    かまたは前記第2のストアバッファエントリ出力を取出
    すかを制御する、請求項11に記載のストア機能ユニッ
    ト。
  13. 【請求項13】 第4のストアバッファエントリ回路を
    さらに含み、前記第4のストアバッファエントリ回路は
    前記第3のストアバッファエントリ回路に結合されて前
    記第3のストアバッファエントリに第4のストアバッフ
    ァエントリ出力を与え、前記第1のストアバッファエン
    トリ回路は前記第4のストアバッファエントリ回路に結
    合されて前記第4のストアバッファエントリ回路に第1
    のストアバッファエントリ出力を与え、前記第2のスト
    アバッファエントリ回路は前記第4のストアバッファエ
    ントリ回路に結合されて前記第4のストアバッファエン
    トリ回路に第2のストアバッファエントリ出力を与え、
    かつ前記第3のストアバッファエントリ回路は前記第4
    のストアバッファエントリ回路に結合されて前記第4の
    ストアバッファエントリ回路に第3のストアバッファエ
    ントリ出力を与え、さらに前記ストアコントローラは前
    記第4のストアバッファエントリ回路に結合され、前記
    第1または前記第2のストアバッファエントリ出力を用
    いてストア転送動作を実行するために、前記第4のスト
    アバッファエントリ回路が前記第1のストアバッファエ
    ントリ出力を取出すかまたは前記第2のストアバッファ
    エントリ出力を取出すかを制御する、請求項12に記載
    のストア機能ユニット。
  14. 【請求項14】 前記第1のストアバッファエントリ回
    路および前記第2のストアバッファエントリ回路の各々
    はストアバッファエントリを保持するためのストアバッ
    ファレジスタ回路と、 どの信号が前記ストアバッファレジスタ回路に与えられ
    て保持されるのかを制御するためのストアバッファマル
    チプレクサ回路とを含む、請求項11に記載のストア機
    能ユニット。
  15. 【請求項15】 前記ストアバッファレジスタ回路は前
    記ストアバッファエントリのストアバッファデータエン
    トリを保持するためのストアバッファエントリデータレ
    ジスタと、 前記ストアバッファエントリのストアバッファアドレス
    エントリを保持するためのストアバッファエントリアド
    レスレジスタと、 前記ストアバッファエントリのストアバッファタグエン
    トリを保持するためのストアバッファエントリタグ部分
    とを含む、請求項14に記載のストア機能ユニット。
  16. 【請求項16】 前記ストアバッファマルチプレクサ回
    路は複数個のデータ信号を受取り、前記複数個のデータ
    信号のうちの1つを前記ストアコントローラの制御下で
    前記ストアバッファデータエントリとして与えるための
    データバイトマルチプレクサ回路と、 複数個のアドレス信号を受取り、前記複数個のアドレス
    信号のうちの1つを前記ストアコントローラの制御下で
    前記ストアバッファアドレスエントリとして与えるため
    のアドレスバイトマルチプレクサ回路と、 複数個のタグ信号を受取り、前記複数個のタグ信号のう
    ちの少なくとも1つを前記ストアコントローラの制御下
    で前記ストアバッファタグエントリとして与えるための
    タグマルチプレクサ回路とを含む、請求項15に記載の
    ストア機能ユニット。
  17. 【請求項17】 キャッシュに対してロード動作および
    ストア動作を並列に実行する、マイクロプロセッサのロ
    ード/ストア機能ユニットであって、 ロード動作およびストア動作を一時的に保持するための
    保留ステーション回路を含み、前記保留ステーション回
    路は第1の保留ステーションエントリと第2の保留ステ
    ーションエントリとを含み、前記第1の保留ステーショ
    ンエントリと前記第2の保留ステーションエントリとは
    データキャッシュの第1のポートと第2のポートとに結
    合され、さらにストア動作を一時的に保持するためのス
    トアバッファ回路を含み、前記ストアバッファ回路はス
    トア動作を一時的に保持するための第1のストアバッフ
    ァエントリと第2のストアバッファエントリとを含み、
    前記ストアバッファエントリのうちの少なくとも1つは
    前記保留ステーションエントリのうちの少なくとも1つ
    に結合され、さらに前記保留ステーションエントリおよ
    び前記ストアバッファエントリを制御するための制御回
    路を含み、前記制御回路は前記保留ステーション回路と
    前記ストアバッファ回路と前記データキャッシュとに結
    合される、ユニット。
  18. 【請求項18】 情報処理用装置であって、 情報を保持するための外部メモリと、 プロセッサバスを介して主メモリに結合されるプロセッ
    サとを含み、 前記プロセッサは前記外部メモリに結合されて前記情報
    を一時的に保持するためのキャッシュと、 ロード動作およびストア動作を実行するためのロード/
    ストア機能ユニットとを含み、前記ロード/ストア機能
    ユニットはロード動作およびストア動作を一時的に保持
    するため保留ステーション回路を含み、前記保留ステー
    ション回路は、前記データキャッシュの第1のポートと
    第2のポートとに結合された第1の保留ステーションエ
    ントリと第2の保留ステーションエントリとを含み、さ
    らに第1のストアバッファエントリと第2のストアバッ
    ファエントリとを含んでストア動作を一時的に保持する
    ためのストアバッファ回路を含み、前記ストアバッファ
    エントリのうちの少なくとも1つは前記保留ステーショ
    ンエントリのうちの少なくとも1つに結合され、さらに
    前記保留ステーション回路と前記ストアバッファ回路と
    前記データキャッシュとに結合されて、前記保留ステー
    ションエントリおよび前記ストアバッファエントリを制
    御するための制御回路を含む、情報処理用装置。
JP6260699A 1993-10-29 1994-10-25 マイクロプロセッサのロード/ストア機能ユニットおよび情報処理用装置 Withdrawn JPH07182167A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/146,376 US5878245A (en) 1993-10-29 1993-10-29 High performance load/store functional unit and data cache
US146376 1993-10-29

Publications (1)

Publication Number Publication Date
JPH07182167A true JPH07182167A (ja) 1995-07-21

Family

ID=22517097

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6260699A Withdrawn JPH07182167A (ja) 1993-10-29 1994-10-25 マイクロプロセッサのロード/ストア機能ユニットおよび情報処理用装置

Country Status (4)

Country Link
US (2) US5878245A (ja)
EP (2) EP0651323B1 (ja)
JP (1) JPH07182167A (ja)
DE (2) DE69435327D1 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004046931A1 (ja) * 2002-11-20 2004-06-03 Fujitsu Limited メモリ制御装置およびストアバイパス制御方法
USRE44365E1 (en) 1997-02-08 2013-07-09 Martin Vorbach Method of self-synchronization of configurable elements of a programmable module
US8869121B2 (en) 2001-08-16 2014-10-21 Pact Xpp Technologies Ag Method for the translation of programs for reconfigurable architectures
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US9047440B2 (en) 2000-10-06 2015-06-02 Pact Xpp Technologies Ag Logical cell array and bus system
US9075605B2 (en) 2001-03-05 2015-07-07 Pact Xpp Technologies Ag Methods and devices for treating and processing data
JP2015210655A (ja) * 2014-04-25 2015-11-24 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2023503577A (ja) * 2019-11-27 2023-01-31 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ストアからロードへの転送を実行するための技術

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6813699B1 (en) 1995-06-02 2004-11-02 Transmeta Corporation Speculative address translation for processor using segmentation and optional paging
US5781789A (en) * 1995-08-31 1998-07-14 Advanced Micro Devices, Inc. Superscaler microprocessor employing a parallel mask decoder
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
US5958042A (en) * 1996-06-11 1999-09-28 Sun Microsystems, Inc. Grouping logic circuit in a pipelined superscalar processor
USRE38599E1 (en) * 1996-06-11 2004-09-21 Sun Microsystems, Inc. Pipelined instruction dispatch unit in a superscalar processor
KR19990076967A (ko) * 1996-11-04 1999-10-25 요트.게.아. 롤페즈 처리 장치 및 메모리내의 명령 판독
US6014737A (en) * 1997-11-19 2000-01-11 Sony Corporation Of Japan Method and system for allowing a processor to perform read bypassing while automatically maintaining input/output data integrity
US6065103A (en) * 1997-12-16 2000-05-16 Advanced Micro Devices, Inc. Speculative store buffer
FR2777370B1 (fr) * 1998-04-09 2000-06-23 Sgs Thomson Microelectronics Architecture de dsp optimisee pour les acces memoire
JP3469469B2 (ja) * 1998-07-07 2003-11-25 富士通株式会社 情報処理装置
US6141747A (en) * 1998-09-22 2000-10-31 Advanced Micro Devices, Inc. System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word
US6223259B1 (en) * 1998-10-30 2001-04-24 Telefonaktiebolaget Lm Ericsson (Publ) Reducing read cycle of memory read request for data to be partially modified by a pending write request
US6427191B1 (en) * 1998-12-31 2002-07-30 Intel Corporation High performance fully dual-ported, pipelined cache design
US6446169B1 (en) 1999-08-31 2002-09-03 Micron Technology, Inc. SRAM with tag and data arrays for private external microprocessor bus
US6393534B1 (en) * 1999-09-27 2002-05-21 Ati International Srl Scheduler for avoiding bank conflicts in issuing concurrent requests to main memory
US6477637B1 (en) * 1999-09-30 2002-11-05 International Business Machines Corporation Method and apparatus for transporting store requests between functional units within a processor
US6523109B1 (en) 1999-10-25 2003-02-18 Advanced Micro Devices, Inc. Store queue multimatch detection
US6481251B1 (en) 1999-10-25 2002-11-19 Advanced Micro Devices, Inc. Store queue number assignment and tracking
US6662280B1 (en) 1999-11-10 2003-12-09 Advanced Micro Devices, Inc. Store buffer which forwards data based on index and optional way match
US6591342B1 (en) * 1999-12-14 2003-07-08 Intel Corporation Memory disambiguation for large instruction windows
US6408383B1 (en) 2000-05-04 2002-06-18 Sun Microsystems, Inc. Array access boundary check by executing BNDCHK instruction with comparison specifiers
US6678807B2 (en) * 2000-12-21 2004-01-13 Intel Corporation System and method for multiple store buffer forwarding in a system with a restrictive memory model
US6738792B1 (en) 2001-03-09 2004-05-18 Advanced Micro Devices, Inc. Parallel mask generator
US6928534B2 (en) * 2002-02-22 2005-08-09 Sun Microsystems, Inc. Forwarding load data to younger instructions in annex
US7073026B2 (en) * 2002-11-26 2006-07-04 Advanced Micro Devices, Inc. Microprocessor including cache memory supporting multiple accesses per cycle
US7415243B2 (en) 2003-03-27 2008-08-19 Honda Giken Kogyo Kabushiki Kaisha System, method and computer program product for receiving data from a satellite radio network
US8041779B2 (en) 2003-12-15 2011-10-18 Honda Motor Co., Ltd. Method and system for facilitating the exchange of information between a vehicle and a remote location
US7643788B2 (en) 2004-09-22 2010-01-05 Honda Motor Co., Ltd. Method and system for broadcasting data messages to a vehicle
US7237065B2 (en) * 2005-05-24 2007-06-26 Texas Instruments Incorporated Configurable cache system depending on instruction type
US7376817B2 (en) 2005-08-10 2008-05-20 P.A. Semi, Inc. Partial load/store forward prediction
US20080140934A1 (en) * 2006-12-11 2008-06-12 Luick David A Store-Through L2 Cache Mode
US7668653B2 (en) * 2007-05-31 2010-02-23 Honda Motor Co., Ltd. System and method for selectively filtering and providing event program information
US8099308B2 (en) 2007-10-02 2012-01-17 Honda Motor Co., Ltd. Method and system for vehicle service appointments based on diagnostic trouble codes
US7984273B2 (en) 2007-12-31 2011-07-19 Intel Corporation System and method for using a mask register to track progress of gathering elements from memory
US10387151B2 (en) * 2007-12-31 2019-08-20 Intel Corporation Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks
US8185721B2 (en) * 2008-03-04 2012-05-22 Qualcomm Incorporated Dual function adder for computing a hardware prefetch address and an arithmetic operation value
US20100250850A1 (en) * 2009-03-25 2010-09-30 Faraday Technology Corp. Processor and method for executing load operation and store operation thereof
US10175990B2 (en) 2009-12-22 2019-01-08 Intel Corporation Gathering and scattering multiple data elements
US10360031B2 (en) 2011-10-21 2019-07-23 Intel Corporation Fast unaligned memory access
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
US20140189328A1 (en) * 2012-12-27 2014-07-03 Tomer WEINER Power reduction by using on-demand reservation station size
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
US9672159B2 (en) * 2015-07-02 2017-06-06 Arm Limited Translation buffer unit management
US10509377B2 (en) 2015-10-22 2019-12-17 Triatomic Environmental, Inc. System for monitoring and controlling indoor air quality
US10209991B2 (en) * 2016-01-21 2019-02-19 Advanced Micro Devices, Inc. Instruction set and micro-architecture supporting asynchronous memory access
US10514925B1 (en) 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery
GB2547893B (en) * 2016-02-25 2018-06-06 Advanced Risc Mach Ltd Combining part of an offset with a corresponding part of a base address and comparing with a reference address
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads
US10157277B2 (en) 2016-10-01 2018-12-18 Intel Corporation Technologies for object-oriented memory management with extended segmentation
KR102724459B1 (ko) * 2016-10-07 2024-11-01 삼성전자주식회사 데이터 입출력 유닛, 전자 장치 및 그 제어 방법들
US10877897B2 (en) * 2018-11-02 2020-12-29 Intel Corporation System, apparatus and method for multi-cacheline small object memory tagging

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3781808A (en) 1972-10-17 1973-12-25 Ibm Virtual memory system
AT354159B (de) 1975-02-10 1979-12-27 Siemens Ag Assoziativspeicher mit getrennt assoziierbaren bereichen
US4155119A (en) * 1977-09-21 1979-05-15 Sperry Rand Corporation Method for providing virtual addressing for externally specified addressed input/output operations
US4161784A (en) 1978-01-05 1979-07-17 Honeywell Information Systems, Inc. Microprogrammable floating point arithmetic unit capable of performing arithmetic operations on long and short operands
US4453212A (en) * 1981-07-13 1984-06-05 Burroughs Corporation Extended address generating apparatus and method
JPS58133696A (ja) * 1982-02-03 1983-08-09 Hitachi Ltd 記憶制御方式
US4928223A (en) 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
AU3229484A (en) * 1983-09-07 1985-03-14 Amdahl Corporation Time shared translation buffer
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
JPH0658631B2 (ja) * 1983-12-19 1994-08-03 株式会社日立製作所 デ−タ処理装置
EP0170525B1 (en) * 1984-07-31 1997-10-01 Texas Instruments Incorporated Cache hierarchy design for use in a memory management unit
US5133062A (en) * 1986-03-06 1992-07-21 Advanced Micro Devices, Inc. RAM buffer controller for providing simulated first-in-first-out (FIFO) buffers in a random access memory
AU587714B2 (en) * 1986-08-27 1989-08-24 Amdahl Corporation Cache storage queue
US4992934A (en) 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
US4926322A (en) * 1987-08-03 1990-05-15 Compag Computer Corporation Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management
US4950432A (en) * 1987-10-16 1990-08-21 Board Of Regents, The University Of Texas System Polyene microlide pre-liposomal powders
US5222230A (en) 1988-01-29 1993-06-22 Texas Instruments Incorporated Circuitry for transferring data from a data bus and temporary register into a plurality of input registers on clock edges
US4864161A (en) * 1988-05-05 1989-09-05 Altera Corporation Multifunction flip-flop-type circuit
US5291615A (en) * 1988-08-11 1994-03-01 Kabushiki Kaisha Toshiba Instruction pipeline microprocessor
US5056006A (en) * 1988-09-12 1991-10-08 General Electric Company Parallel processor with single program storage and sequencer and simultaneous instruction processing
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5155816A (en) * 1989-02-10 1992-10-13 Intel Corporation Pipelined apparatus and method for controlled loading of floating point data in a microprocessor
US5155820A (en) * 1989-02-21 1992-10-13 Gibson Glenn A Instruction format with designations for operand lengths of byte, half word, word, or double word encoded in address bits
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
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
KR940003383B1 (ko) * 1989-08-28 1994-04-21 니뽄 덴끼 가부시끼가이샤 파이프라인 처리 방식으로 동작하는 프리디코더 유니트 및 주 디코더 유니트를 구비한 마이크로프로세서
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
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
JP2822588B2 (ja) * 1990-04-30 1998-11-11 日本電気株式会社 キャッシュメモリ装置
DE69130588T2 (de) * 1990-05-29 1999-05-27 National Semiconductor Corp., Santa Clara, Calif. Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
US5325499A (en) * 1990-09-28 1994-06-28 Tandon Corporation Computer system including a write protection circuit for preventing illegal write operations and a write poster with improved memory
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
GB2273835B (en) * 1992-12-22 1996-08-14 Advanced Risc Mach Ltd Bistable circuit
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
IE80854B1 (en) 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution
US5434987A (en) * 1993-09-21 1995-07-18 Intel Corporation Method and apparatus for preventing incorrect fetching of an instruction of a self-modifying code sequence with dependency on a bufered store

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE44365E1 (en) 1997-02-08 2013-07-09 Martin Vorbach Method of self-synchronization of configurable elements of a programmable module
USRE44383E1 (en) 1997-02-08 2013-07-16 Martin Vorbach Method of self-synchronization of configurable elements of a programmable module
USRE45109E1 (en) 1997-02-08 2014-09-02 Pact Xpp Technologies Ag Method of self-synchronization of configurable elements of a programmable module
USRE45223E1 (en) 1997-02-08 2014-10-28 Pact Xpp Technologies Ag Method of self-synchronization of configurable elements of a programmable module
US9047440B2 (en) 2000-10-06 2015-06-02 Pact Xpp Technologies Ag Logical cell array and bus system
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US9075605B2 (en) 2001-03-05 2015-07-07 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US8869121B2 (en) 2001-08-16 2014-10-21 Pact Xpp Technologies Ag Method for the translation of programs for reconfigurable architectures
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
WO2004046931A1 (ja) * 2002-11-20 2004-06-03 Fujitsu Limited メモリ制御装置およびストアバイパス制御方法
JP2015210655A (ja) * 2014-04-25 2015-11-24 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2023503577A (ja) * 2019-11-27 2023-01-31 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ストアからロードへの転送を実行するための技術

Also Published As

Publication number Publication date
US6298423B1 (en) 2001-10-02
US5878245A (en) 1999-03-02
DE69435327D1 (de) 2011-01-13
DE69433339T2 (de) 2004-09-09
DE69433339D1 (de) 2003-12-24
EP0952517A3 (en) 1999-11-17
EP0651323B1 (en) 2003-11-19
EP0651323A1 (en) 1995-05-03
EP0952517A2 (en) 1999-10-27
EP0952517B1 (en) 2010-12-01

Similar Documents

Publication Publication Date Title
JPH07182167A (ja) マイクロプロセッサのロード/ストア機能ユニットおよび情報処理用装置
JP3628379B2 (ja) 命令を処理するためのパイプラインを有するマイクロプロセッサ装置およびそれにおいて用いるためのプログラムカウンタ値を発生する装置
US5832297A (en) Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
EP0465321B1 (en) Ensuring data integrity in multiprocessor or pipelined processor system
US5887152A (en) Load/store unit with multiple oldest outstanding instruction pointers for completing store and load/store miss instructions
KR100231380B1 (ko) 감소된 명령 세트 프로세서 내부 레지스터의 데이타를 조작하는 방법 및 장치
US5968169A (en) Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
US5764946A (en) Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
EP0463975B1 (en) Byte-compare operation for high-performance processor
US5848433A (en) Way prediction unit and a method for operating the same
KR100230105B1 (ko) 간략화된 명령 세트 프로세서의 성능 개선 방법 및 그 프로세서 시스템
US6006324A (en) High performance superscalar alignment unit
US6253287B1 (en) Using three-dimensional storage to make variable-length instructions appear uniform in two dimensions
US6604190B1 (en) Data address prediction structure and a method for operating the same
EP0463978A2 (en) Granularity hint for translation buffer in high performance processor
EP0463973A2 (en) Branch prediction in high performance processor
EP0463977A2 (en) Branching in a pipelined processor
JPH07325716A (ja) パイプラインプロセッサおよびその動作方法
JPH07182163A (ja) スーパスカラ命令デコード/発行装置
JPH02208729A (ja) マイクロコード式実行装置での並列動作による複数機能装置の制御
US5822558A (en) Method and apparatus for predecoding variable byte-length instructions within a superscalar microprocessor
EP0465328A2 (en) Branch elimination in a reduced instruction set processor
US5819059A (en) Predecode unit adapted for variable byte-length instruction set processors and method of operating the same
US5832249A (en) High performance superscalar alignment unit
US5819057A (en) Superscalar microprocessor including an instruction alignment unit with limited dispatch to decode units

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20020115