JPH07152566A - スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ - Google Patents

スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ

Info

Publication number
JPH07152566A
JPH07152566A JP6251989A JP25198994A JPH07152566A JP H07152566 A JPH07152566 A JP H07152566A JP 6251989 A JP6251989 A JP 6251989A JP 25198994 A JP25198994 A JP 25198994A JP H07152566 A JPH07152566 A JP H07152566A
Authority
JP
Japan
Prior art keywords
write buffer
write
entry
memory
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP6251989A
Other languages
English (en)
Other versions
JP3678443B2 (ja
Inventor
Mark Bluhm
ブルーム マーク
Raul A Garibay Jr
エイ ガリベイ ジュニア ロール
A Cortromane Marc
エイ コートロマニ マルク
Mark Warden Hervin
ダブリュー ハーヴィン マーク
Patowa Nitaru
パトワ ニタル
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.)
SAIRITSUKUSU CORP
Cyrix Corp
Original Assignee
SAIRITSUKUSU CORP
Cyrix 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
Priority claimed from US08/138,651 external-priority patent/US5740398A/en
Priority claimed from US08/138,654 external-priority patent/US5584009A/en
Priority claimed from US08/138,790 external-priority patent/US6219773B1/en
Priority claimed from US08/139,596 external-priority patent/US5471598A/en
Application filed by SAIRITSUKUSU CORP, Cyrix Corp filed Critical SAIRITSUKUSU CORP
Publication of JPH07152566A publication Critical patent/JPH07152566A/ja
Application granted granted Critical
Publication of JP3678443B2 publication Critical patent/JP3678443B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words

Landscapes

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

Abstract

(57)【要約】 【目的】 マイクロプロセッサコアとメモリとの間に配
置されたマイクロプロセッサの書き込みバッファであっ
て、メモリへの書き込みをメモリバス又はキャッシュメ
モリではなくて書き込みバッファへ向けるようにした構
成を提供する。 【構成】 スーパースカラー、スーパーパイプライン式
マイクロプロセッサは、中央処理ユニットコアとメモリ
キャッシュとの間に配置された書き込みバッファを有す
る。この書き込みバッファは、キャッシュメモリが使用
可能になるまで、即ち優先順位の高い読み取りが行われ
ないときに、メモリへの書き込み動作の結果を記憶す
る。各書き込みバッファエントリごとにクロス依存性テ
ーブルが設けられ、反対区分の手前のデータを考慮し
て、データが書き込みバッファからメモリへプログラム
順序で書き込まれるよう確保する。メモリからの非キャ
ッシュ式読み取りも、書き込みバッファからのデータの
書き込みと共にプログラム順序に順序付けされる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、マイクロプロセッサ型
の集積回路の分野に係り、より詳細には、そのメモリア
クセス回路に係る。
【0002】
【従来の技術】マイクロプロセッサの分野においては、
1秒当たりに実行される命令の数が主たる性能尺度であ
る。この技術で良く知られているように、マイクロプロ
セッサの設計及び製造における多数のファクタがこの尺
度に影響を及ぼす。例えば、実行速度は、マイクロプロ
セッサのクロック周波数によってかなり左右される。し
かしながら、マイクロプロセッサに与えられるクロック
の周波数は、電力消費の状態、及びマイクロプロセッサ
内のトランジスタのスイッチング特性により制限され
る。
【0003】又、マイクロプロセッサのアーキテクチャ
も、マイクロプロセッサの実行速度において意義のある
ファクタである。例えば、多数の近代的なマイクロプロ
セッサは、それらの命令の多くが実行のために多数のク
ロックサイクルを必要とする場合にそれらの実行速度を
向上するために「パイプライン式」アーキテクチャを使
用している。従来のパイプライン技術によれば、各々の
マイクロプロセッサ命令は多数の段階にセグメント化さ
れ、そして命令の各段階を実行するために個別の回路が
設けられる。従って、各クロックサイクルにおいて多数
の命令の異なる段階の実行をオーバーラップさせること
によりマイクロプロセッサの実行速度が増加される。こ
のように、各クロックサイクルにおいて1つの多サイク
ル命令を完了することができる。
【0004】更に背景として、あるマイクロプロセッサ
アーキテクチャは、「スーパースカラー」型のものであ
り、並列実行のために各々のクロックサイクルに多数の
命令が発生される。これら命令の間に依存性がないと仮
定すれば、スカラー性の程度に比例して命令スループッ
トが増大する。
【0005】マイクロプロセッサ及びこれが実施される
システムの実行速度を改善するための別の公知技術は、
キャッシュメモリを使用することである。従来のキャッ
シュメモリは、選択アルゴリズムによって決定されるよ
うに後で命令を実行する際にアクセスされる見込みの高
いメモリ位置からのプログラム及びデータを記憶する小
型の高速メモリである。キャッシュメモリは、メインシ
ステムメモリに対して少数のクロックサイクル(しばし
ば単一のサイクル)でアクセスできるので、キャッシュ
を用いたマイクロプロセッサの有効実行速度は、非キャ
ッシュシステムよりも相当に改善される。多くのキャッ
シュメモリは、マイクロプロセッサ自体と同じ集積回路
チップ上に配置され、更に性能の改善を与える。
【0006】
【発明が解決しようとする課題】これらのアーキテクチ
ャ関連の性能改善技術の各々によれば、マイクロプロセ
ッサの性能を低速化する幾つかの事象が生じる。例え
ば、パイプライン式及びスーパースカラー式の両方のア
ーキテクチャにおいては、多数の命令が同時に同じ内部
回路へのアクセスを要求することがあり、この場合に
は、優先順位の高い命令が回路によって応対されるまで
命令の1つが待機しなければならない(即ち、「ストー
ル」)。
【0007】このような競合の1つの形式は、ある命令
がメモリ(キャッシュを含む)への書き込みを要求する
と同時に、別の命令がメモリからの読み取りを要求する
場合にしばしば生じる。命令が「先着順サービス(first
-come-first-served) 」ベースで応対される場合には、
後で到着する命令は、メモリアクセスが許可されるま
で、手前の命令の完了を待機しなければならない。これ
ら及び他のストールは、もちろん、マイクロプロセッサ
の性能に対して不利益となる。
【0008】ほとんどの命令シーケンス(即ち、プログ
ラム)に対し、特に、マイクロプロセッサアーキテクチ
ャに多数の汎用レジスタが設けられている場合には、メ
モリ又はキャッシュからの読み取りの方が、一般に、メ
モリ又はキャッシュへの書き込みよりも時間的に厳密で
あることが分かっている。これは、プログラムの実行に
おいて、プログラムを効率的に実行するためには、特定
の時間に命令及び入力データが必要であるのに対し、メ
モリへの書き込みはプログラム実行の結果を単に書き込
むものでありその後の命令の実行はその結果に左右され
ないから、書き込みが行われる実際の時間は重要でない
ためである。
【0009】更に背景技術として、マイクロプロセッサ
には書き込みバッファが設けられており、これらの書き
込みバッファは、オンチップのキャッシュメモリと、メ
インメモリへのバスとの間に論理的に配置されている。
これらの従来のキャッシュ後の書き込みバッファは、ラ
イトスルー又はライトバック動作のためにキャッシュか
らデータを受け取り、このキャッシュ後の書き込みバッ
ファの内容は、バスが使用できるようになったときに、
バスコントローラの制御のもとでメインメモリに書き込
まれる。
【0010】更に背景技術として、多くの近代的なマイ
クロプロセッサは、必ずしもオペランドサイズのモジュ
ロではないアドレスを用いてメモリ位置をアクセスする
ことができる。このような形式のマイクロプロセッサタ
イプの一例は、「X86」コンパチブルと一般に称され
ているものである。それ故、これらのマイクロプロセッ
サにおいて、あるメモリ書き込みは、最下位バイトアド
レスを含むバイトブロックから外れたバイトを含むこと
があり、書き込み動作を行うのに多数の書き込みサイク
ルが必要とされる。これらの書き込みは、「不整列書き
込み」としばしば称される。実際に、多くのマイクロプ
ロセッサでは、メモリ書き込みの重要な部分がバイトブ
ロックの境界にオーバーラップする。
【0011】更に背景技術として、整数の中央処理ユニ
ットと、浮動小数点の処理ユニットとの両方を含むマイ
クロプロセッサが知られている。このようなマイクロプ
ロセッサでは、整数結果のデータワード巾の方が、浮動
小数点ユニットよりも小さくなり、例えば、整数データ
は32ビット巾であるが、浮動小数点データは64ビッ
ト巾である。浮動小数点ユニットに加えて、他の処理ユ
ニットも、中央処理ユニットによって与えられるものよ
りも巾の広いデータを与える。
【0012】更に背景技術として、多くのマイクロプロ
セッサ用途では、中央処理ユニットのコアからキャッシ
ュ又はメモリへの書き込みを、プログラムの順序で、即
ちプログラマによって与えられた命令の順序で行って、
適切なプログラム動作を確保することが重要である。例
えば、円形バッファ及びカウンタを設けることにより単
一ユニットの動作をプログラムの順序に維持するための
方法が知られている。しかしながら、2つ以上のバッフ
ァ又は動作をプログラムの順序に維持しなければならな
い場合には、1つのカウンタの使用では不充分である。
【0013】更に背景技術として、いわゆる「X86」
コンパチビリティを有するもののような従来アーキテク
チャのマイクロプロセッサは、内部データバスの容量よ
り小さいバイトサイズの書き込み動作を行うことが知ら
れている。
【0014】更に背景技術として、パイプライン式マイ
クロプロセッサは、データ依存性と一般に称される幾つ
かのハザードに弱いことが知られている。一般的に、デ
ータ依存性は、パイプラインにおいて異なる段階にある
2つの命令が同じレジスタ又はメモリ位置へのアクセス
を要求するときに生じる。というのは、手前の命令でレ
ジスタ又はメモリ位置にデータが書き込まれてしまう前
にパイプラインが後の命令のために(プログラム順序
で)そこにアクセスすることがあり、動作エラーを生じ
るからである。従来のパイプライン式マイクロプロセッ
サにおいてこのようなデータ依存性を検出するための技
術が知られており、パターソン及びヘネシー著の「コン
ピュータアーキテクチャ:定量的アプローチ(モーガン
・カウフマン、1990年)」、第257ないし78ペ
ージに説明されている。従来技術によれば、データ依存
性又はハザードの検出は、手前の命令(プログラム順序
で)が完了するまでパイプラインをストールし、その
後、後続命令を処理できるようにすることにより取り扱
われる。もちろん、パイプラインのストールは、マイク
ロプロセッサの性能のロスを招く。
【0015】更に背景技術として、あるパイプライン式
アーキテクチャのマイクロプロセッサは、プログラムシ
ーケンスに条件分岐又はジャンプ命令が存在するにも係
わりなくパイプラインをいっぱいに維持するために推論
的実行に基づいて動作する。この推論的実行は、マイク
ロプロセッサが条件分岐が行われるかどうかをアルゴリ
ズムに基づいて予想する場所で予想分岐を行い、次い
で、その予想した経路をパイプラインにおいて実行する
ことを必要とする。この推論的に実行した命令の結果は
メモリにもキャッシュにも書き込まれないのが重要であ
る。というのは、予想が誤りであった場合に、その誤っ
て実行されたメモリ書き込みから回復することは困難又
は不可能だからである。更に、メモリへの書き込みを含
む命令がパイプラインにおいて処理される場合であっ
て、プログラムの実行を直ちに停止しなければならない
例外条件(例えば、0で除算)を手前の命令が有してい
る場合には、別の形式の状況が生じ得る。
【0016】
【課題を解決するための手段】本発明は、マイクロプロ
セッサのコアとメモリとの間に論理的に配置されたマイ
クロプロセッサの書き込みバッファであって、メモリへ
の各書き込みがメモリバス又はキャッシュメモリではな
くてこの書き込みバッファに向けられるような書き込み
バッファに係る。この書き込みバッファの内容は、次い
で、メモリバス又はキャッシュメモリが使用できるとき
に、キャッシュメモリ又はメインメモリへ非同期で書き
込まれる。
【0017】本発明の特徴は、不整列書き込みの処理能
力を含む。不整列書き込みが検出された場合には、第1
の書き込みバッファエントリが第2の書き込みバッファ
エントリに割り当てられ、上位アドレスが計算されてそ
こに記憶される。不整列書き込みがリタイアすると、第
1の書き込みバッファエントリに記憶されたデータが適
当なバイトレーンへシフトされて下位バイトが上位端に
来るようにされそしてこれとは逆にもなされる。第1エ
ントリ及び下位データのリタイアの後にシフトされたデ
ータを記憶するためのラッチが設けられる。このラッチ
は、上位データを第2エントリに対するアドレスと共に
与え、不整列書き込みを完了する。
【0018】本発明の別の特徴は、過剰な巾をもつ全書
き込みバッファを構成する必要なく過剰巾のデータをバ
ッファすることである。浮動小数点ユニットのような二
次の処理ユニットは、中央処理ユニットにより発生され
るワードの巾よりも巾の広い(ビットで)ワードで結果
を発生する。二次処理ユニットの結果を記憶するために
二次データラッチが設けられ、そのデータが有効である
ときに制御ビットがセットされる。標準的な書き込みバ
ッファエントリには、二次処理ユニットの結果に対応す
る物理アドレスが割り当てられ、そのデータが二次デー
タラッチに記憶されることを指示するように制御ビット
がセットされる。書き込みバッファエントリがリタイア
すると、書き込みバッファエントリの内容ではなくて二
次データラッチの内容がキャッシュに与えられる。
【0019】本発明の別の特徴は、書き込みバッファが
レイアウト又は動作効率のために2つの区分に分割され
る場合に書き込みバッファからのデータの書き込みがプ
ログラム順序となるよう確保することである。プログラ
ム順序は、書き込みバッファエントリにクロス依存性フ
ィールドを含ませることにより維持され、このフィール
ドは、各書き込みバッファエントリの割り当ての際に、
逆の区分にあるどの書き込みバッファエントリが既に割
り当てられたかを示すマップがロードされる。各書き込
みバッファエントリのクロス依存性フィールドは、その
前にプログラム順序にあった各書き込みバッファがリタ
イアするたびに、ビットごとにクリアされる。書き込み
バッファエントリがプログラム順序でリタイアすること
は、そのクロス依存性フィールドをクリアすることを必
要とすることにより確保される。更に、同様の概念を使
用し、読み取りが割り当てられたときに割り当てられた
書き込みバッファエントリのマップである読み取りに対
してクロス依存性フィールドを与え、動作を同様の形態
でゲートすることにより、書き込みバッファからリタイ
アしながらプログラム順序で非キャッシュ処理読み取り
する性能を確保することができる。
【0020】本発明の別の特徴は、書き込みバッファか
らキャッシュへの集合書き込みを実行する構成を含む。
書き込みデータエントリの割り当て中に、現在割り当て
られたエントリと既に割り当てられているエントリの物
理アドレスの比較が行われ、少なくとも割り当てられた
物理アドレスが同じバイトグループ内にあるかどうか決
定され、その場合には、多数の書き込みをキャッシュへ
の単一の書き込み動作に集合又は併合することができ
る。集合性に対する他の制約は、バイトが互いに相接し
ていること、及び書き込みがプログラム順序で隣接する
書き込み命令からのものであることを含む。集合可能な
書き込みバッファエントリのリタイアは、データを適切
なバイトレーンに入れるようにシフトした後に、書き込
みバッファエントリからのデータをラッチにロードする
ことにより行われ、書き込みは、ラッチの内容と組み合
わせてアドレスを与えることにより行われる。
【0021】本発明の別の特徴は、リード・アフタ・ラ
イト(RAW)依存性のようなデータハザード即ち依存
性を、特に書き込みバッファに既に書き込まれているデ
ータに対して検出する構成を含む。書き込みバッファ内
容のリタイアは、RAW依存性を受けるエントリについ
ては防止され、従って、エラーのある読み取りが回避さ
れる。又、書き込みバッファからデータを直接供給する
か又は書き込みバッファをバイパスすらさせる能力も設
けられ、RAWハザードによるパイプラインストールの
影響が低減される。又、多数の読み取りの最後のものだ
けをコアへ供給するような更に別の能力も設けられる。
偽のRAWハザード検出を回避するために、ライト・ア
フタ・リード制御も与えられる。
【0022】本発明の別の特徴は、推論的実行中に書き
込みバッファへの書き込みが許される場合に各書き込み
バッファエントリに対する制御ビットの推論的実行フィ
ールドを含むことである。各制御ビットは、予想又は推
論分岐に対応し、書き込みについての推論の程度に基づ
いて書き込みバッファエントリの割り当ての際にセット
される。誤った予想の場合には、失敗予想に対してその
推論的制御ビットがセットされている各書き込みバッフ
ァエントリがフラッシュされ、書き込みバッファエント
リが再割り当てに使用できるようになる。割り当てられ
ているが例外の時にまだリタイアされていない全ての書
き込みバッファエントリをクリアすることにより例外取
り扱いが実行される。バッファが空であるときにリタイ
アポインタ及び割り当てポインタが一致できるようにす
るために各書き込みバッファエントリごとにノーオペレ
ーションビットが設けられる。
【0023】本発明の実施例は、次のような効果的な技
術的作用の1つ以上を実現するように実施される。デー
タをキャッシュへリタイアする前に、CPUコアから書
き込みバッファへのデータの書き込みをバッファし、そ
して不整列書き込みを最小限の性能ロスで容易に取り扱
えるようにするマイクロプロセッサアーキテクチャ;デ
ータをキャッシュ又はメモリへリタイアする前に実行結
果を書き込みバッファに記憶できるようにし、書き込み
バッファは、二次処理ユニットによって与えられるもの
よりもビット巾の小さい複数の位置を有しているマイク
ロプロセッサアーキテクチャ;余計なビット巾を受け入
れるように全ての書き込みバッファ位置を構成する必要
なく、二次処理ユニットの結果に対してバッファ作用が
与えられるようなマイクロプロセッサアーキテクチャ;
データをキャッシュへリタイアする前に、CPUコアか
ら書き込みバッファへのデータの書き込みをバッファ
し、書き込みバッファが2つのセクションに分割されて
いるマイクロプロセッサアーキテクチャ;書き込みバッ
ファからキャッシュ又はメインメモリへプログラム順序
でリタイアするよう確保するマイクロプロセッサアーキ
テクチャ;書き込みバッファからデータをリタイアしな
がらプログラム順序で非キャッシュ式読み取りを実行で
きるようにするマイクロプロセッサアーキテクチャ;デ
ータをキャッシュ又はメモリへリタイアする前に実行結
果を書き込みバッファに記憶できるようにし、多数の書
き込み動作からの書き込みデータを記憶して書き込みバ
ッファからキャッシュへ1つのサイクルで与えるような
能力が設けられたマイクロプロセッサアーキテクチャ;
集合可能又は併合可能な書き込み動作を検出し、書き込
みバッファからキャッシュへ集合書き込みを行えるよう
にするマイクロプロセッサアーキテクチャ;データをキ
ャッシュ又はメモリへリタイアする前に、データ依存性
を検出できるような仕方で実行結果を書き込みバッファ
に記憶できるようにするマイクロプロセッサアーキテク
チャ;他の明白なデータ依存性が実際にはデータ依存性
でないという指示で書き込みバッファ位置を割り当てで
きるようにするマイクロプロセッサアーキテクチャ;及
びデータをキャッシュへリタイアするまえに、CPUコ
アから書き込みバッファへのデータの書き込みをバッフ
ァし、推論的実行又は例外からの回復を容易に行い得る
ようにするマイクロプロセッサアーキテクチャ。
【0024】
【実施例】本発明の他の目的及び特徴は、添付図面を参
照した以下の詳細な説明から当業者に明らかとなろう。
本発明のマイクロプロセッサの実施例の詳細な説明は、
次のように構成される。 1.模範的プロセッサシステム 2.一般化されたパイプラインアーキテクチャ 3.書き込みバッファアーキテクチャ及び動作 4.リード・アフタ・ライトハザードの検出及び書き込
みバッファの動作 5.推論的実行及び例外の取り扱い 6.書き込みバッファからの特殊な書き込みサイクル 7.結論
【0025】この構成テーブル及びこの詳細な説明で使
用する対応する見出しは、参照の便宜上設けられている
ものに過ぎない。マイクロプロセッサの従来又は既知の
観点の説明は、これを不必要に詳細にすることにより本
発明の説明を不明瞭にしない程度に省略する。
【0026】1.模範的プロセッサシステム 模範的プロセッサシステムが図1、2及び3に示されて
いる。図1及び2は、各々、模範的なスーパースカラ
ー、スーパーパイプライン型マイクロプロセッサと、2
つの実行パイプラインのパイプ段階との基本的な機能ブ
ロックを示している。図3は、マイクロプロセッサを使
用する模範的プロセッサシステム(マザーボード)設計
を示している。
【0027】1.1 マイクロプロセッサ 図1を参照すれば、マイクロプロセッサ10の主たるサ
ブブロックは、次のものを含む。(a)中央処理ユニッ
ト(CPU)コア20;(b)プリフェッチバッファ3
0;(c)プリフェッチャ35;(d)分岐処理ユニッ
ト(BPU)40;(e)アドレス変換ユニット(AT
U)50;及び(f)TAG RAM62を含む単一化
した16Kバイトのコード/データキャッシュ60。2
56バイトの命令ラインキャッシュ65は、単一化キャ
ッシュへの命令フェッチを減少するための一次命令キャ
ッシュを構成し、単一化キャッシュは、二次命令キャッ
シュとして働く。オンボード浮動小数点ユニット(FP
U)70は、CPUコア20によってこれに発せられた
浮動小数点命令を実行する。
【0028】マイクロプロセッサは、内部32ビットア
ドレス及び64ビットデータバスADS及びDATAを
使用している。単一化キャッシュ60及び命令ラインキ
ャッシュ65の32バイトラインサイズに対応する25
6ビット(32バイト)プリフェッチバス(PFB)
は、32命令バイトの全ラインを単一のクロックにおい
て命令ラインキャッシュへ転送できるようにする。外部
32ビットアドレス及び64ビットデータバスへのイン
ターフェイスは、バスインターフェイスユニット(BI
U)を経て行われる。
【0029】CPUコア20は、2つの実行パイプX及
びYを有するスーパースカラー設計のものである。これ
は、命令デコーダ21と、アドレス計算ユニット22X
及び22Yと、実行ユニット23X及び23Yと、32
個の32ビットレジスタをもつレジスタファイル24と
を備えている。ACコントロールユニット25は、レジ
スタスコアボード及びレジスタ再ネーミングハードウェ
アをもつレジスタ変換ユニット25aを備えている。マ
イクロシーケンサ及びマイクロROMを含むマイクロコ
ントロールユニット26は、実行制御を与える。
【0030】CPUコア20からの書き込みは、12個
の32ビット書き込みバッファ29へ待ち行列され、書
き込みバッファの割り当ては、ACコントロールユニッ
ト25によって実行される。これらの書き込みバッファ
は、単一化キャッシュ60へ書き込むためのインターフ
ェイスを形成し、非キャッシュ処理書き込みは、書き込
みバッファから外部メモリへ直接送られる。書き込みバ
ッファロジックは、オプションの読み取りソース作用及
び書き込み集合作用をサポートする。
【0031】パイプコントロールユニット28は、実行
パイプを通る命令の流れを制御し、これは、命令が例外
を生じないことが決定されるまで命令の順序を保持し、
命令流におけるバブルを押しつぶし、そして誤って予想
された分岐及び例外を生じる命令の後に実行パイプをフ
ラッシュすることを含む。各段階に対し、パイプコント
ロールユニットは、どの実行パイプが最も初期の命令を
含むかを追跡し、「ストール」出力を与え、そして「遅
延」入力を受け取る。
【0032】BPU40は、分岐(行われる又は行われ
ない)の方向を予想し、そしてその予想された行われる
分岐及び流れ命令の無条件変更(ジャンプ、コール、リ
ターン)に対するターゲットアドレスを与える。更に、
このBPUは、分岐及び浮動小数点命令の場合には推論
的実行を監視し、即ち予想を誤ることのある分岐後に推
論的に発生される命令の実行、及びFPU70へ発生さ
れる浮動小数点命令であって推論的に発生された命令が
実行を完了した後に失敗となることのある浮動小数点命
令の実行を監視する。浮動小数点命令が失敗に終わった
場合、又は分岐が誤って予想された(これは、分岐に対
するEX又はWB段階まで分からない)場合には、実行
パイプラインは、その失敗となった又は予想を誤った命
令の点まで修理され(即ち、その命令の後に実行パイプ
ラインがフラッシュされ)、そして命令のフェッチが再
開されねばならない。
【0033】パイプラインの修理は、各パイプ段におい
て浮動小数点又は予想分岐命令がその段に入るときにプ
ロセッサ状態のチェックポイントを形成することにより
行われる。これらのチェックポイント検査される命令に
対し、その後の推論的に発生される命令によって変更さ
れ得る全てのリソース(プログラマが見ることのできる
レジスタ、命令ポインタ、条件コードレジスタ)がチェ
ックポイント検査される。チェックポイント検査される
浮動小数点命令が失敗に終わるか又はチェックポイント
検査される分岐が誤って予想された場合は、そのチェッ
クポイント検査された命令の後に実行パイプラインがフ
ラッシュされ、浮動小数点命令の場合には、これは、典
型的に、実行パイプライン全体をフラッシュすることを
意味し、一方、誤って予想された分岐の場合には、完了
することが許されたEXの対命令及びWBの2つの命令
があることを意味する。
【0034】模範的なマイクロプロセッサ10の場合
に、推論の程度についての主たる制約は、次の通りであ
る。(a)一度に4つまでの浮動小数点又は分岐命令に
対してのみ推論的実行が許される(即ち、推論レベルは
最大4である)。(b)書き込み又は浮動小数点の記憶
は、それに関連した分岐又は浮動小数点命令が解決する
(即ち、予想が正しいか又は浮動小数点命令が失敗に終
わらない)までキャッシュ又は外部メモリに対して完了
しない。
【0035】単一化キャッシュ60は、4方セット連想
(4kセットサイズをもつ)のもので、擬似LRU置換
アルゴリズムを使用し、ライトスルー及びライトバック
モードを有している。これは、クロック当たり2つのメ
モリアクセス(データ読み取り、命令フェッチ又はデー
タ書き込み)を許すためにデュアルポート式(バンク構
成による)にされている。命令ラインキャッシュは、完
全連想、ルックアサイド実施(単一化キャッシュに対し
て)のもので、LRU置換アルゴリズムを使用する。
【0036】FPU70は、4深さロード及び記憶待ち
行列をもつロード/記憶段と、変換段(32ビットない
し80ビットの拡張フォーマット)と、実行段とを備え
ている。ロードは、CPUコア20により制御され、そ
してキャッシュ処理記憶は、書き込みバッファ29によ
り指示される(即ち、各浮動小数点記憶動作に対して書
き込みバッファが割り当てられる)。
【0037】図2を参照すれば、マイクロプロセッサ
は、7段のX及びY実行パイプラインを有し、即ち、命
令フェッチ段(IF)、2つの命令デコード段(ID
1、ID2)、2つのアドレス計算段(AC1、AC
2)、実行段(EX)、及びライトバック段(WB)を
有している。複合ID及びACパイプ段は、スーパーパ
イプライン式であることに注意されたい。
【0038】IF段は、CPUコア20に連続的なコー
ド流を与える。プリフェッチャ35は、(一次)命令ラ
インキャッシュ65或いは(二次)単一化キャッシュ6
0のいずれかからプリフェッチバッファ30へ16バイ
トの命令データをフェッチする。BPU40は、プリフ
ェットアドレスでアクセスされ、そして予想される流れ
の変更に対してプリフェッチャへターゲットアドレスを
供給し、プリフェッチャが1つのクロック内に新たなコ
ード流へシフトできるようにする。
【0039】デコード段ID1及びID2は、可変長さ
のX86命令セットをデコードする。命令デコーダ21
は、各クロックごとにプリフェッチバッファ30から1
6バイトの命令データを検索する。ID1において、2
つの命令の長さがデコードされて(X及びYの実行パイ
プに対して各々1つづつ)、X及びY命令ポインタを
得、それに対応するX及びYバイト使用信号がプリフェ
ッチバッファへ返送される(これは、次いで、次の16
バイト転送のために増加する)。又、ID2において
も、流れの変更のような幾つかの命令形式が決定され、
即座及び/又は変位オペランドが分離される。ID2段
は、X及びY命令のデコード、マイクロROMに対する
エントリポイントの発生、及びアドレスモード及びレジ
スタフィールドのデコードを完了する。
【0040】ID段の間に、命令を実行するための最適
なパイプが決定され、命令がそのパイプへ発生される。
パイプの切り換えにより、ID2XからAC1Yへそし
てID2YからAC1Xへ命令を切り換えることができ
る。模範的な実施例については、流れ変更命令、浮動小
数点命令及び排他的命令のような幾つかの命令がXパイ
プラインのみへ発生される。排他的命令は、EXパイプ
段において失敗となることのある命令、及びある形式の
命令、例えば、保護モードセグメントロード、ストリン
グ命令、特殊なレジスタアクセス(制御、デバッグ、テ
スト)、乗算/除算、入力/出力、プッシュオール/ポ
ップオール(PUSH/POPA)、及びタスクスイッ
チを含む。排他的命令は、両パイプのリソースを使用す
ることができる。というのは、これらは、ID段のみか
ら発生される(即ちこれらは他の命令と対にされない)
からである。これらの発生制約を除くと、いかなる命令
も対にして、X又はYのいずれのパイプへ発生すること
もできる。
【0041】アドレス計算段AC1及びAC2は、メモ
リ参照のためのアドレスを計算し、そしてメモリオペラ
ンドを供給する。AC1段は、クロックごとに2つの3
2ビットリニア(3オペランド)アドレスを計算する
(比較的稀である4つのオペランドアドレスは、2つの
クロックを必要とする)。データ依存性もチェックされ
そしてレジスタ変換ユニット25a(レジスタスコアボ
ード及びレジスタ再ネーミングハードウェア)を用いて
分析され、32個の物理レジスタ24は、X86アーキ
テクチャで定められた8個の汎用のプログラマから見え
る論理レジスタをマップするのに使用される(EAX、
EBX、ECX、EDX、EDI、ESI、EBP、E
SP)。
【0042】ACユニットは、8個のアーキテクチャ
(論理)レジスタ(X86で定められたレジスタセット
を表す)を備えており、これらは、アドレス変換のため
のレジスタオペランドをアクセスする前にレジスタ変換
ユニットAC1のアクセスに必要な遅延を回避するよう
にACユニットによって使用される。アドレス変換を必
要とする命令については、AC1は、アーキテクチャレ
ジスタをアクセスする前にこれらアーキテクチャレジス
タの所要データが有効になる(リード・アフタ・ライト
の依存性がない)まで待機する。AC2段の間に、レジ
スタファイル24及び単一化キャッシュ60は、物理ア
ドレスでアクセスされ(キャッシュヒットの場合には、
デュアルポート式の単一化キャッシュのためのキャッシ
ュアクセス時間は、レジスタのアクセス時間と同じであ
り、レジスタセットを効果的に拡張する)、物理アドレ
スは、リニアアドレスであるか、或いはアドレス変換が
イネーブルされた場合には、ATU50によって発生さ
れた変換されたアドレスである。
【0043】変換されたアドレスは、メモリのページテ
ーブル及びチップ上のワークスペース制御レジスタから
の情報を用いてリニアアドレスからATU50によって
発生される。単一化キャッシュは、仮想インデックスさ
れると共に物理的にタグが付けられていて、アドレス変
換がイネーブルされたときには、変換されていないアド
レス(AC1の終わりに得られる)でセットの選択を行
うことができ、そして各セットに対し、ATU50から
の変換されたアドレス(AC2において初期に得られ
る)でタグの比較を行うことができる。セグメント化及
び/又はアドレス変換違反のチェックも、AC2で行わ
れる。
【0044】命令は、それらが例外を生じないと決定さ
れるまではプログラム順序に保たれる。ほとんどの命令
に対し、この決定は、AC2の間又はその前に行われ、
浮動小数点命令及びある排他的命令は、実行中に例外を
生じることがある。命令は、AC2からEXへ順次に通
され(又は浮動小数点命令の場合はFPU70へ)、E
Xにおいて依然として例外を生じることのある整数命令
は、排他的と示され、それ故、単独で両方の実行パイプ
へ発生されるので、しかるべき順序での例外の取り扱い
が確保される。
【0045】実行段EXX及びEXYは、命令により定
められた動作を実行する。命令は、EXにおいて可変数
のクロックを消費し、即ち順序がずれて実行することが
許される(順序ずれ完了)。両方のEX段は、加算、論
理及びシフト機能ユニットを備え、そして更に、EXX
段は、乗算/除算ハードウェアを含む。
【0046】WB段は、レジスタファイル24、条件コ
ード、及びマシン状態の他の部分を既に実行された命令
の結果で更新する。レジスタファイルは、WBのフェー
ズ1(PH1)に書き込まれ、そしてAC2のフェーズ
2(PH2)に読み取られる。
【0047】1.2 システム 図3を参照すれば、模範的な実施例として、マイクロプ
ロセッサ10は、単一チップのメモリ及びバスコントロ
ーラ82を含むプロセッサシステムに使用される。メモ
リ/バスコントローラ82は、マイクロプロセッサと外
部メモリサブシステム−−レベル2キャッシュ84及び
メインメモリ86−−との間のインターフェイスを形成
し、64ビットプロセッサデータバス(PD)上でのデ
ータの移動を制御する(データ路はコントローラの外部
であり、ピンの本数及びコストを低減する)。
【0048】コントローラ82は、32ビットアドレス
バスPADDRに直接インターフェイスし、コントロー
ラ内のレジスタを読み取ったり書き込んだりするための
1ビット巾のデータポート(図示せず)を備えている。
両方向性の分離バッファ88は、マイクロプロセッサ1
0と、VL及びISAバスとの間のアドレスインターフ
ェイスを形成する。
【0049】コントローラ82は、VL及びISAバス
インターフェイスの制御を行う。VL/ISAインター
フェイスチップ91(HT321のような)は、32ビ
ットVLバス及び16ビットISAバスへの標準インタ
ーフェイスを形成する。ISAバスは、BIOS92、
キーボードコントローラ93、I/Oチップ94及び標
準ISAスロット95へインターフェイスする。インタ
ーフェイスチップ91は、二重の高/低ワード〔31:
16〕/〔15:0〕分離バッファにより形成された両
方向性32/16マルチプレクサ96を経て32ビット
VLバスへインターフェイスする。VLバスは、標準V
Lスロット97へインターフェイスし、そして両方向性
分離バッファ98を経て64ビットプロセッサデータバ
スの下位ダブルワード〔31:0〕へインターフェイス
する。
【0050】2.一般化されたパイプラインアーキテク
チャ 図4は、パイプライン当たり4命令の性能の一例を示す
もので、2パイプラインアーキテクチャに対するオーバ
ーラップした命令実行を示している。付加的なパイプラ
インと、各パイプラインに対する付加的な段とを設ける
ことができる。好ましい実施例において、マイクロプロ
セッサ10の内部動作は、外部システムクロック信号1
24の倍数である周波数における内部クロック信号12
2と同期される。図4において、内部クロック信号12
2は、システムクロック信号124の周波数の2倍であ
る。第1の内部クロックサイクル126の間に、第1段
階の命令デコード段ID1は、各命令X0及びY0に基
づいて動作する。第2の内部クロックサイクル128の
間に、命令X0及びY0は、第2段階の命令デコード段
ID2へ進んでおり、第1段階の命令デコードユニット
ID1には新たな命令X1及びY1が入れられる。第3
の内部クロックサイクル130の間には、第1段階のデ
コード段ID1には命令X2、Y2があり、第2段階の
命令デコード段ID2には命令X1、Y1があり、そし
て第1のアドレス計算ユニットAC1には命令X0、Y
0がある。内部クロックサイクル132の間には、第1
段階の命令デコード段ID1には命令X3、Y3があ
り、第2段階の命令デコード段ID2には命令X2、Y
2があり、第1のアドレス計算ユニットAC1には命令
X1、Y1があり、そして第2のアドレス計算ユニット
AC2には命令X0、Y0がある。
【0051】この説明から明らかなように、X及びYパ
イプラインの各段を経て次々の命令が順次に流れ続け
る。クロックサイクル134、140に示されたよう
に、各命令の実行部分は、順次のクロックサイクルにお
いて実行される。これは、個々の命令の実行時間を減少
することなく、クロック当たりに完了される命令の数が
増加されるという点で、パイプライン式アーキテクチャ
の主たる利点である。従って、ハードウェアの速度に大
きな需要が生じるようにして大きな命令スループットが
達成される。
【0052】図4に示す命令の流れは、最適な場合であ
る。図示されたように、1クロックサイクルより大きい
段階は必要とされない。実際のマシンでは、他のパイプ
段を通る命令の流れを変更するように、1つ以上の段が
付加的なクロックサイクルの完了を必要とすることがあ
る。更に、一方のパイプラインを通る命令の流れは、他
方のパイプラインを通る命令の流れによって左右され
る。
【0053】3.書き込みバッファアーキテクチャ及び
動作 図1に示すように、書き込みバッファ29は、コア20
の出力に論理的に配置されており、ライトバックバスW
x、WB yによってコア20に作動的に接続さ
れ、そこからデータを受け取る。又、書き込みバッファ
29は、ATU50にも作動的に接続され、そこからア
ドレスバスPAx、PAy(図5)を経て物理アドレス
を受け取る。書き込みバッファ29の出力は、デュアル
キャッシュポート160によって単一化キャッシュ60
へ与えられると共に、メモリデータバスDATAにも与
えられる。キャッシュポート160は、従来の仕方で、
データ、アドレス及び制御ラインを単一化キャッシュ6
0へ与え、本発明の好ましい実施例によれば、キャッシ
ュポート160と単一化キャッシュ60との間のライン
数は、2つの同時の書き込み要求をサポートするのに充
分なものである。
【0054】以下で更に明らかとなるように、書き込み
バッファ29の機能は、レジスタファイル24のレジス
タの1つではなくてメモリへ書き込まれるべきアドレス
及びデータ情報をコア20から受け取ることであり、次
いで、書き込みバッファ29に記憶されたアドレス及び
データ情報は、後で、キャッシュ及びメモリサブシステ
ムが優先順位の高い動作においてビジーでないときに、
メモリに書き込むことができる。その結果、書き込みバ
ッファ29は、コア20がメモリ書き込み動作を迅速に
行い(その観点から)そしてパイプラインの次の命令へ
進むことができるようにし、しかも、メモリ読み取り動
作を妨げることがなく、且つメモリ書き込みを行うため
にコア20の部分に待機状態を要求することもない。更
に、コア20により書き込みバッファ29に対して行わ
れるメモリ書き込み動作は、メモリ位置が単一化キャッ
シュ60にあるかメインメモリ86にあるかに係わりな
く同じ書き込みサイクルタイムを必要とするものであ
る。
【0055】図5を参照し、本発明の好ましい実施例に
よる書き込みバッファ29の詳細な構造及び動作につい
て説明する。以下に述べる書き込みバッファ29の例
は、スーパーパイプライン式スーパースカラーアーキテ
クチャのマイクロプロセッサ10に特に効果的である
が、異なるアーキテクチャのマイクロプロセッサに使用
したときにも顕著な性能及び他の利点を与えることを理
解されたい。
【0056】本発明の好ましい実施例によれば、書き込
みバッファ29は、2つの区分152x及び152yに
編成された12個のエントリ152x0 ないし152x
5 、152y0 ないし152y5 を含んでいる。この例
における書き込みバッファ29のこの分割編成は、書き
込みバッファの区分152x及び152yが各々コア2
0のX及びYパイプラインに組み合わされた状態で、レ
イアウト上好ましいと共に、マイクロプロセッサ10の
スーパースカラーアーキテクチャとの通信効率上も好ま
しいものである。或いは又、書き込みバッファ29は、
各エントリがコア20のX及びYパイプラインのいずれ
かによってアクセスできるような単一バンクとして編成
することもできる。
【0057】書き込みバッファ29は、更に、書き込み
バッファ制御ロジック150も備えており、これは、以
下に述べるように、書き込みバッファ29、及びコア2
0とのインターフェイスを制御するように特に設計され
た組み合わせ又は逐次のロジックである。当業者であれ
ば、本明細書を参照したときに、これらの機能を実行す
るロジックを容易に実現できることが意図され、このよ
うな書き込みバッファ制御ロジック150が図5にブロ
ック形態で示されている。
【0058】ここで、図6を参照し、書き込みバッファ
区分152xの単一エントリ152xi の内容について
説明する。もちろん、書き込みバッファ区分152yの
各エントリ152yi も、本発明の好ましい実施例によ
り同様に構成されることを理解されたい。各エントリ1
52xi は、アドレス部分、データ部分及び制御部分を
含んでいる。更に、書き込みバッファ29の12のエン
トリ152の各々を独特に識別するには4ビットで充分
であるから、各エントリ152は、4ビットタグ値(図
示せず)で識別される。このタグは、特定のエントリ1
52をアドレスするようにコア20によって使用され、
パイプラインのEX段及びWB段の間にそこにデータを
書き込む(又はそこからデータを供給する)ようにす
る。4ビットタグを使用することにより、コア20は、
パイプラインの残り部分を通して書き込みの物理メモリ
アドレスを維持する必要はない。
【0059】32ビット整数アーキテクチャのマイクロ
プロセッサ10の場合に、各エントリ152xi は、物
理メモリアドレス(ATU50から物理アドレスバスP
Axを経て受け取った)の記憶のための32ビットと、
4バイトデータワードの記憶のための32ビットとを含
んでいる。又、本発明の好ましい実施例によれば、各エ
ントリ152xi は、更に、以下のテーブルAに示すよ
うに定義された23の種々の制御ビットも含んでいる。
これらの制御ビットは、エントリ152の割り当て及び
発生を制御するために書き込みバッファ制御ロジック1
50により使用される。更に、単一化キャッシュ60の
制御ロジックのようなマイクロプロセッサ10の他の部
分も、それらの特定の機能を実行するために必要に応じ
てこれらの制御ビットをアクセスすることができる。各
制御ビットの特定の機能については、書き込みバッファ
29の動作に対して以下に詳細に説明する。 テーブルA AV アドレス有効;エントリは有効なアドレ
スを含む。 DV データ有効;エントリは有効なデータを
含む。 RD 読み取り可能;エントリはその物理アド
レスに対しパイプライ ンにおける最後の書き込みである。
【0060】MRG 合併可能;エントリは手前
の書き込みバッファエントリに相接しておりオーバーラ
ップしていない。 NC 非キャッシュ式書き込み。 FP エントリは浮動小数点データに対応して
いる。 MAW 不整列書き込み。 WBNOP 書き込みバッファノーオペレーション。 WAR ライト・アフタ・リード;エントリはプ
ログラム順序において他のパイプラインにおける同時読
み取りよりも後で生じる書き込みである。 SPEC エントリに対する推論の順序を示す4ビ
ットフィールド。 XDEP 書き込みバッファ区分152yのクロス
依存性マップ。 SIZE 書き込まれるべきデータのサイズ、バイ
ト数。 NCRA 非キャッシュ式読み取りが既に割り当て
られた。
【0061】書き込みバッファ区分152xは、Xパイ
プラインの実行段EXX又はYパイプラインの実行段E
XYのいずれかの結果を、コア20により駆動されるラ
イトバックバスWB xを経て受け取り、そして同様
に、書き込みバッファ区分152yは、Xパイプライン
の実行段EXX又はYパイプラインの実行段EXYのい
ずれかの結果をライトバックバスWB yを経て受け取
る。
【0062】書き込みバッファ区分152x、152y
は、それらの内容(アドレス及びデータの両区分)を、
例えば、データを適切にフォーマットする回路を経てキ
ャッシュポート160へ与える。図5に示すように、書
き込みバッファ区分152xは、そのデータをバレルシ
フタ164xへ与え、これは、次いで、その出力を不整
列書き込みラッチ162xへ与える。以下で詳細に述べ
るように、この不整列書き込みラッチ162xは、キャ
ッシュポート160への第2の書き込みのために書き込
みバッファ区分152xからのデータを記憶することが
でき、この第2の書き込みは、本発明によれば、メモリ
への書き込みが8バイト境界にオーバーラップする場合
に実行される。この不整列書き込みラッチ162xは、
その出力をキャッシュポート160へ与えると共に、書
き込み集合ラッチ165へも与え、この書き込み集合ラ
ッチ165は、以下で詳細に述べるように、多数の書き
込みの物理アドレスが同じ8バイトグループ内にある場
合に多数の書き込みバッファエントリ152からのデー
タを集合してキャッシュポート160へ単一書き込みす
るように働く。
【0063】書き込みバッファ区分152yは、その出
力をマルチプレクサ163の一方の入力に与え、該マル
チプレクサは、浮動小数点データラッチ166の出力を
その他方の入力に受け取り、以下で述べるように、浮動
小数点データラッチ166はFPU70からの出力を含
み、書き込みバッファエントリ152の1つに対応する
メモリ書き込みに対し64ビットの浮動小数点データ記
憶を与える。マルチプレクサ163は、以下に述べるよ
うに、その出力に与えるための適当な入力を選択するよ
うに、書き込みバッファ制御ロジック150によって制
御されると共に単一化キャッシュ60のためのキャッシ
ュ制御ロジックによって制御される。マルチプレクサ1
63の出力は、シフタ164yへ送られ、次いで、上記
の書き込みバッファ区分152xの出力と同様に、不整
列書き込みラッチ162yへ送られる。又、不整列書き
込みラッチ162yの出力も、キャッシュポート160
へ同様に直結され、そして書き込み集合ラッチ165に
も接続される。
【0064】説明を簡単にするために、図5には1つの
キャッシュポート160が概略的に示されているだけで
あるが、上記したように、本発明のこの実施例によるキ
ャッシュポート160は、2つの書き込み要求を同時に
与えることができるデュアルキャッシュポートである。
更に、書き込みバッファ29は、データバスDATAに
データを直接通信する。このように、本発明のこの実施
例によれば、図5に示されたキャッシュポート160の
接続は、キャッシュポート160に第2の同時の書き込
みを与えるように複製されると共に、データバスDAT
Aにも直結されて、キャッシュ制御がメインメモリ86
への書き込みを要求する場合にメモリ書き込みを行うよ
うにされる。
【0065】又、本発明の好ましい実施例によれば、書
き込みバッファ29は、マルチプレクサ154x、15
4yを制御する書き込みバッファ制御ロジック150の
制御のもとで、そのエントリ152からソースバスSR
Cx、SRCyによりコア20へデータを直接供給する
ことができる。マルチプレクサ154xの出力は、パイ
プラインコントローラ28の制御のもとで、物理レジス
タ24へのバスmem x、mem yを経て、X又はY
パイプラインのいずれかへ送られ、同様に、マルチプレ
クサ154yの出力は、バスmem x、mem yを
経てX又はYパイプラインのいずれかへ送られる。更
に、ライトバックバスWB x、WB yも、バイパスバ
スBP x、BP yを各々経てマルチプレクサ154
x、154yに接続され、これにより、以下に述べるよ
うに、書き込みバッファ29のメモリバイパスが容易に
される。
【0066】上記したように、マイクロプロセッサ10
は、浮動小数点演算を実行するためのオンチップFPU
70を備えている。上記したように、FPU70によっ
て行われた計算の結果は、64ビットデータワードで表
される。本発明のこの好ましい実施例によれば、書き込
みバッファエントリ152のデータ部分を32ビットに
制限し、そしてFPU70からデータを受け取るための
64ビット浮動小数点データラッチ166を設けること
により、効率が得られる。浮動小数点データラッチ16
6は、更に、浮動小数点データ有効(FPDV)制御ビ
ットを含み、このビットは、セットされたときに、浮動
小数点データラッチ166の内容が有効データを含むこ
とを指示する。1つの書き込みバッファエントリ152
のアドレス部分は、浮動小数点データラッチ166に記
憶されたFPU70からの結果を書き込むべきところの
メモリアドレスを含み、この書き込みバッファエントリ
152は、そのFP制御ビットがセットされると、その
データ部分が有効データを含まないが、それに対応する
データが浮動小数点データラッチ166に存在すること
を指示する。
【0067】或いは又、もちろん、浮動小数点データ書
き込みバッファ機能は、各書き込みバッファエントリ1
52に対して64ビットデータ部分を与えることにより
得ることができる。しかしながら、本発明のこの実施例
では、64ビット浮動小数点データのキャッシュ前書き
込みバッファ機能は与えられるが、レイアウト及びチッ
プ面積は著しく非効率的なものとなる。この非効率性
は、各書き込みバッファエントリ152が64ビットデ
ータ部分をもつことを必要とせず、むしろ、浮動小数点
ラッチ166が書き込みバッファ29の各エントリ15
2に対して64ビット能力を与えることにより生じる。
ほとんどの用途では、FPU70によって浮動小数点デ
ータが与えられる頻度は、浮動小数点データラッチ16
6から浮動小数点データがリタイアされる(即ち、キャ
ッシュ又はメモリへ書き込まれる)のと同じ程度である
ことが意図される。これは、図5に示された単一の浮動
小数点データラッチ166で充分なバッファ機能を与え
ることができるようにする。もとろん、それとは別に、
更にバッファ機能が所望される場合には、多数の浮動小
数点データラッチ166をマイクロプロセッサ10に設
けることができる。
【0068】本発明の好ましい実施例による書き込みバ
ッファ29の動作を以下に詳細に説明する。この動作
は、以下に述べる機能を実行するように構成された組み
合わせ又は逐次ロジックである書き込みバッファ制御ロ
ジック150の制御のもとにある。上記したように、当
業者であれば、以下の説明に基づいて書き込みバッファ
制御ロジック150の機能を達成するように、このよう
なロジックを容易に実施することができよう。
【0069】より詳細には、本発明のこの実施例によれ
ば、書き込みバッファ制御ロジック150は、X及びY
割り当てポインタ156x、156yと、X及びYリタ
イアポインタ158x、158yを各々備えており、こ
れらポインタ156、158は、各々次に割り当て又は
リタイアされるべき書き込みバッファ29のエントリ1
52を追跡する。従って、書き込みバッファ29の区分
152x、152yの各々は、割り当て及びリタイアの
目的で円形バッファとして動作し、そしてデータを発生
する目的でアドレス可能なレジスタのファイルとして動
作する。或いは又、書き込みバッファ29は、もし所望
ならば、完全に連想的な一次データキャッシュとして実
施されてもよい。
【0070】一般に、第2のアドレス計算段AC2が、
命令の実行中にメモリ書き込みが行われることを決定す
ると、この段において物理アドレスが計算されたとき
に、書き込みバッファエントリ152の1つが「割り当
てられ」、その物理アドレスがエントリ152のアドレ
ス部分に記憶され、そしてそのアドレス有効制御ビット
(AV)及び他の適当な制御ビットがセットされる。命
令の実行後であって且つWBX、WBY(図1)の間
に、コア20は、その結果をその書き込みバッファエン
トリ152のデータ部分に書き込んで、書き込みバッフ
ァエントリを「発生(issue) 」し、データ有効制御ビッ
ト(DV)をセットする。書き込みバッファエントリ1
52は、選択されたエントリ152のAV及びDVビッ
トに質問し、そして両方がセットされた場合は、エント
リ152のアドレス及びデータ部分の内容が場合によっ
てキャッシュポート160又はシステムバスに現れるよ
うにすることにより、非同期でプログラム順序で「リタ
イア」される。
【0071】3.1 書き込みバッファエントリの割り
当て 図7を参照し、本発明の好ましい実施例による書き込み
バッファエントリ152の割り当てプロセスを詳細に説
明する。本発明のこの実施例では、割り当てプロセス
は、X及びYの両パイプラインにおいて第2のアドレス
計算段AC2の部分として実行される。図7のプロセス
170で示されたように、割り当てプロセスは、命令の
結果を書き込むべき(即ち、メモリ書き込み)物理メモ
リアドレスを計算する際に開始される。
【0072】説明を容易にするために、図7のシーケン
スは、書き込みバッファ29の区分152x、152y
の一方について説明する。書き込みバッファ29の反対
の区分における書き込みバッファエントリ152の割り
当ては、図7に示したものと同じである。
【0073】物理アドレスが計算されると、プロセス1
72は、割り当てポインタ156が指している書き込み
バッファエントリ152から制御ビットAVを検索す
る。本発明のこの実施例によれば、書き込みバッファ2
9の各側は、円形バッファとして動作し、割り当てポイ
ンタ156x、156yは、X及びYパイプラインに対
して各々割り当てられるべき次の書き込みバッファエン
トリ152を指示し、この説明上、適当な割り込みポイ
ンタ156x、156yが指す書き込みバッファエント
リ152を、152n と称する。判断ステップ173
は、制御ビットAVがセットされている(1)かクリア
されている(0)かを判断する。制御ビットAVが既に
セットされている場合には、書き込みバッファエントリ
152n は、有効アドレスを既に記憶しているので、既
に割り当てられているか又は保留中である。従って、エ
ントリ152n は、このときには割り当てに使用でき
ず、待機状態174に入り、その後、プロセス172及
び判断173において次のエントリ152n+1 に対して
制御ビットAVが繰り返し検索されてチェックされる。
【0074】判断ステップ173で、エントリ152n
の制御ビットAVがクリアされていると判断された場合
に、そのエントリ152n は、既に割り当てられてもい
ないし保留中でもないから、割り当てに使用できる。こ
の場合、プロセス176は、プロセス170で計算され
た物理アドレスをエントリ152n のアドレス部分に記
憶する。
【0075】図7に示すプロセス176ないし188の
特定の順序は、一例に過ぎない。これらのプロセスは、
当業者による特定の実現化にとって効果的又は適当であ
ると思われるいかなる順序で行われてもよいことが意図
される。
【0076】3.1.1 リード・アフタ・マルチプル
ライトハザードの処理 本発明のこの実施例によれば、あるデータ依存性が検出
されそして書き込みバッファアクセスに対して処理され
る。この技術分野で良く知られているように、データ依
存性とは、パイプライン式アーキテクチャのマイクロプ
ロセッサにおいてプログラム結果にエラーを生じること
のある一種のハザードである。これらの依存性は、スー
パースカラー、スーパーパイプライン式アーキテクチャ
のマイクロプロセッサ10において、特に幾つかの命令
が性能向上のためにプログラム順序から外れて実行され
る場合に、より顕著なものとなる。より詳細には、図5
について上記しそして以下で詳細に述べるように、書き
込みバッファ29は、パイプラインにおいてその後の命
令に対してデータが必要となる場合にはエントリをリタ
イアする前にバスSRCx、SRCyを経てコア20へ
データを送ることができる。書き込みバッファエントリ
152の読み取り可能な制御ビット(RD)は、同じ物
理アドレスへの多数の書き込みの後であって且つこのア
ドレスに指定された書き込みバッファエントリ152の
リタイアの前に実行されるべき物理メモリアドレスの読
み取りをパイプラインが含むような特殊な形式のリード
・アフタ・ライト(RAW)依存性の処理を助成する。
本発明の好ましい実施例によれば、制御ビットRDがセ
ットされた書き込みバッファエントリ152のみを使用
して、バスSRCx、SRCyを経てコア20へデータ
を送ることができる。これは、同じ物理アドレスに対し
て後で割り当てられたがまだ実行されていない書き込み
動作からではなくて、完了したその前の書き込みからコ
ア20へ誤ったデータが送られるおそれを回避する。
【0077】プロセス178において、書き込みバッフ
ァ制御ロジック150は、既に割り当てられた各書き込
みバッファエントリ152のアドレスフィールドを検査
し、エントリ152n に割り当てられるべき物理アドレ
スに一致するかどうかを決定する。本発明の好ましい実
施例によれば、各読み取り又は書き込み動作のサイズが
8バイト程度であり(浮動小数点データを書き込むべき
場合。本発明のこの実施例では、整数データの場合は、
4バイト)、そして各物理アドレスが1バイトに対応す
ることを考慮すれば、プロセス178において物理アド
レス値を比較するだけでなく、各動作のメモリスパンを
考慮しなければならない。この構成のために、異なる物
理アドレスを有する書き込み動作が、その動作のサイズ
に基づいて同じバイトにオーバーラップする。
【0078】図8を参照し、本発明の好ましい実施例に
より異なるメモリアクセス命令の物理アドレスをプロセ
ス178において比較する方法について詳細に説明す
る。2つの書き込み動作の書き込みスパンを比較するた
めに、パイプライン制御ロジック28は、第1スパンマ
ップSPAN0 に、古い書き込み命令の書き込み動作が
作用するところのバイトの相対位置に対応するビットが
セットされたビットマップをロードすると共に、第2ス
パンマップSPAN1 に、新たな書き込み命令の書き込
み動作が作用するところのバイトの位置に対応するビッ
トがセットされたビットマップをロードする。図8は、
2つの例示的な書き込み動作に対するスパンマップSP
AN0 、SPAN1 の例を示している。プロセス178
は、次いで、スパンマップSPAN0 とSPAN1 のビ
ットごとの論理積をとり、両方の書き込み動作によって
書き込まれるバイトの位置をセットされたビットで指示
するマップANDSPANを形成する。図8の例では、
マップANDSPANにおいて2つのビットがセットさ
れており、2つの例示的な書き込み動作の両方が2つの
バイトに書き込むことを示している。
【0079】プロセス178は、次いで、マップAND
SPANにおけるビットの論理和をとり、いずれかのビ
ットがセットされたかどうかを判断する。エントリ15
nに対する読み取り可能な制御ビットはセットされ
(一致するエントリが見つかるかどうかに係わりなく)
そしてマップANDSPANにおけるビットの論理和の
結果を真とさせた既に割り当てられた書き込みバッファ
エントリ152に対する制御ビットRDはクリアされ
る。従って、以下に述べるように、書き込みバッファ2
9を後で読み取るべきである(即ち、リタイアの前に書
き込みバッファ29からデータを供給する)場合には、
最後に書き込まれた書き込みバッファエントリ152n
のみがその制御ビットRDをセットし、従って、そのデ
ータをソースバスSRCx、SRCyを経てコア20へ
与えることができる。有効データを有する(制御ビット
DVがセットされた)がそれらの制御ビットRDがクリ
アされた書き込みバッファエントリ152は、書き込み
バッファ制御ロジック150により、それらのデータを
バスSRCx、SRCyへ送らないよう防止される。
【0080】3.1.2 クロス依存性及びプログラム
順序でのリタイア 上記したように、書き込みバッファエントリ152は、
プログラム順序でリタイア(即ち、単一化キャッシュ6
0又はメインメモリ86へ書き込み)されねばならな
い。書き込みバッファエントリ152の単一のバンクし
か使用されない本発明のこれらの実施については、単一
のリタイアポインタ158によってプログラム順序が容
易に維持される。しかしながら、マイクロプロセッサ1
0はスーパースカラーアーキテクチャであるので、書き
込みバッファ29の実現においてレイアウトの効率を得
るためには、上記したように、本発明のこの例では、書
き込みバッファエントリ152が、X及びYパイプライ
ンの各々に対して1つづつの2つのグループに分割さ
れ、その各々がそれ自身のリタイアポインタ158x、
158yを各々有する。本発明のこの好ましい実施例
は、X区分の書き込みバッファエントリ152xとY区
分の書き込みバッファエントリ152yとの間にプログ
ラム順序でのリタイアを確保する技術を与える。
【0081】図9を参照し、割り当て時における選択さ
れた書き込みバッファエントリ152xi に対するクロ
ス依存性制御ビットXDEPのマップを説明する。図9
に示すように、書き込みバッファ29のX区分における
各書き込みバッファエントリ152xi は、書き込みバ
ッファ29のY区分152yにおける書き込みバッファ
エントリ152yi の1つに各々対応する6個のクロス
依存性制御ビットXDEP0 ないしXDEP5 を有し、
同様に(図9には示さないが)、各書き込みバッファエ
ントリ152yi は、書き込みバッファ29のX区分1
52xにおける書き込みバッファエントリ152xi
各々に対して1つづつ6個のクロス依存性制御ビットY
DEP0 ないしYDEP5 を有する。図9に示すよう
に、書き込みバッファエントリ152xi に対する各ク
ロス依存性ビットXDEPの内容は、割り当て時におい
て、書き込みバッファ29のY区分152yの対応する
書き込みバッファエントリ152yi のための制御ビッ
トAVの状態に対応する。
【0082】図7の割り当てプロセスにおけるプロセス
180は、現在割り当てられている書き込みバッファエ
ントリ152n に対するクロス依存性制御ビットXDE
0ないしXDEP5 に、割り込み時に、書き込みバッ
ファ29のY区分152yにおける6個の書き込みバッ
ファエントリ152yi のためのアドレス有効制御ビッ
トAVの状態をロードする。以下に詳細に述べるよう
に、各書き込みバッファエントリ152がリタイアされ
るときには、書き込みバッファ29の反対の部分におけ
る書き込みバッファエントリ152の各々の対応するク
ロス依存性制御ビットXDEPがクリアされる。更に、
書き込みバッファエントリ152が割り当てシーケンス
のプロセス180においてそのクロス依存性制御ビット
XDEPをセットした後には、それ自身のいずれのクロ
ス依存性制御ビットXDEPも付加的にセットされるこ
とはない。
【0083】従って、書き込みバッファエントリ152
をリタイアするために、6個全部のクロス依存性制御ビ
ットXDEP0 ないしXDEP5 をクリアしなければな
らない(即ち、0に等しくする)ことを必要とすること
により、プログラム順序が維持される。従って、プロセ
ス180においてクロス依存性制御ビットXDEPをセ
ットすると、既に割り当てられた書き込みバッファ29
の反対部分の書き込みバッファエントリ152(即ち、
プログラムシーケンスにおいて割り当てられた書き込み
バッファエントリ152n の前方)の「スナップショッ
ト」が得られる。クロス依存性制御ビットXDEPとリ
タイアポインタ158x、158yの組み合わせは、書
き込みバッファエントリ152がプログラム順序でリタ
イアされるように確保する。
【0084】同様に、以下に詳細に述べるように、マイ
クロプロセッサ10は、プログラム順序で行わねばなら
ないメインメモリ86からの非キャッシュ式読み取りを
実行する構成を含むことができる。非キャッシュ式読み
取り割り当て制御ビット(NCRA)をセットすること
により各書き込みエントリに対し既に割り当てられた非
キャッシュ式読み取りの存在が指示され、非キャッシュ
式読み取りを実行すると、全ての書き込みバッファエン
トリ152に対して制御ビットNCRAがクリアされ
る。制御ビットNCRAのセット及びクリアは、上記の
クロス依存性制御ビットXDEPと同様に行われ、非キ
ャッシュ式読み取りが適切なプログラム順序で実行され
るよう確保する。
【0085】3.1.3 割り当てプロセスの完了 次いで、プロセス182が書き込みバッファエントリ1
52n の割り当てにおいて実行され、行われるべきメモ
リ書き込みの特定の属性に基づいて書き込みバッファエ
ントリ152n のある制御ビットがセットされる。書き
込みサイズ制御ビット(SIZE)は、命令において指
示されたように、書き込みバッファエントリ152n
書き込まれるべきデータのバイト数でセットされる(8
バイトまで。従って、3つの書き込みサイズ制御ビット
SIZEを必要とする)。
【0086】書き込みバッファエントリ152n の使用
においてマイクロプロセッサ10の動作を制御するため
に、プロセス182では書き込みバッファエントリ15
nの他の制御ビットもセットされる。これらビットの
状態に基づいて本発明のこの実施例で行われる特定の制
御を以下に詳細に述べるが、これら制御ビットの性質に
ついて以下に要約する。非キャッシュ式書き込み制御ビ
ット(NC)は、メモリ書き込み動作を非キャッシュ式
とすべき場合にセットされる。合併可能な制御ビット
(MRG)は、書き込みバッファエントリ152n に対
し、それに対応する物理メモリ位置が、既に割り当てら
れた書き込みバッファエントリ152n に対応するメモ
リ位置に相接しそしてオーバーラップしていない場合に
セットされて、集合書き込み動作が行えるようにされ
る。ライト・アフタ・リード制御ビット(WAR)は、
書き込みバッファエントリ152n への書き込み動作を
他のパイプラインにおける同時読み取りの後に行うべき
である場合にセットされる。不整列書き込み制御ビット
(MAW)は、書き込みバッファエントリ152n に記
憶された物理アドレスへ書き込まれるべきデータの長さ
が8バイト境界に交差する場合にセットされる(この場
合は、書き込みバッファエントリ152n をリタイアす
るのに2つの書き込みサイクルが必要である)。制御ビ
ットNCRAは、非キャッシュ式読み取りが既に割り当
てられていてまだ実行されていない場合にセットされ
る。
【0087】書き込みバッファエントリ152n におい
て物理アドレスの記憶と制御ビットのセットが完了する
と、プロセス184において書き込みバッファエントリ
152n に対する制御ビットAVがセットされる。更
に、手前のリタイア動作によってまだクリアされていな
い場合には、制御ビットDVがこのときクリアされる。
制御ビットAVをセットすることは、書き込みバッファ
エントリ152n をその後の動作に割り当てることを指
示し、これは、書き込みバッファ29の反対区分におい
て書き込みバッファエントリ152を割り当てる際にク
ロス依存性制御ビットXDEPをセットすることを含
む。
【0088】プロセス186において、書き込みバッフ
ァ制御ロジック150は、現在割り当てられた書き込み
バッファエントリ152n のタグ値をコア20に返送す
る。次いで、コア20は、プロセス170で計算された
全32ビットの物理アドレスではなくて、この4ビット
タグ値を命令の実行に使用する。短いタグ値を使用する
ことにより、命令の実行が容易になり、従って、マイク
ロプロセッサ10の性能が向上される。
【0089】割り当てシーケンスはプロセス188で完
了し、割り当てポインタ156x、156y(書き込み
バッファエントリ152n が書き込みバッファ29のX
区分152xにあるかY区分152yにあるかに基づ
く)は、割り当てられるべき次の書き込みバッファエン
トリ152を指すように増加される。次いで、制御は、
書き込みに関連した命令が他の何らかの理由でパイプラ
インにおいて前方に進むことが禁止されなければ、パイ
プラインにおける関連EX段であるプロセス190へ進
む。
【0090】3.2 書き込みデータバッファへのデー
タの発生 図10を参照し、書き込みバッファエントリ152へデ
ータを発生するプロセスを、選択された書き込みバッフ
ァエントリ152i について詳細に説明する。上記のよ
うに、書き込みバッファ29へのデータの発生は、命令
のEX段の完了後であって且つ動作がXパイプラインで
あるかYパイプラインであるかに基づいてWB段の1つ
の間に、コア20によって実行される。
【0091】発生シーケンスはプロセス192で始ま
り、コア20は、書き込みバッファ29に書き込まれる
べきデータを、X又はYパイプラインのいずれが命令を
実行するかに基づいてライトバックバスWB x、WB
yの適当な1つに出す。又、コア20は、行き先書き
込みバッファエントリ152のタグを書き込みバッファ
制御ロジック150へ通信する。次いで、書き込みバッ
ファ制御ロジック150は、プロセス194において、
与えられたタグ値に関連した書き込みバッファエントリ
の1つである書き込みバッファエントリ152i をイネ
ーブルし、その関連ライトバックバスWB x、WB
yに与えられたデータをラッチする。書き込みバッファ
エントリ152i におけるデータの記憶又はラッチ動作
が完了すると、プロセス196において制御ビットDV
がセットされ、発生シーケンスが終わりとなる。
【0092】書き込みバッファエントリ152i がその
制御ビットAV及びその制御ビットDVをセットする
と、書き込みバッファエントリ152i は、「保留」状
態となり、リタイアすることができる。上記したよう
に、書き込みバッファエントリ152のリタイアは、単
一化キャッシュ60を動作するのに使用されるキャッシ
ュロジックの制御のもとで、非同期で行われ、単一化キ
ャッシュ60又はメインメモリ86への書き込みバッフ
ァエントリ152の内容の書き込みが使用可能なバスに
おいて行われ、キャッシュ又はメインメモリ読み取り動
作の実行を中断したり遅延したりすることはない。メモ
リからのプログラム又はデータの検索の際に実行される
プログラムの依存性のために、メモリ読み取りはメモリ
書き込みよりも一般に優先順位が高いことを考えると、
書き込みバッファ29は、従来の技術に対して著しい性
能改善を与える。
【0093】3.3 書き込みバッファエントリのリタ
イア動作 図11を参照し、単一化キャッシュ60内に含まれるか
又はこれと共に設けられたキャッシュ制御ロジックの制
御のもとで書き込みバッファエントリ152をリタイア
するシーケンスについて説明する。幾つかの特殊な又は
複雑な書き込み動作を以下に特に詳細に説明する。従っ
て、図11のリタイアシーケンスは一般化されたシーケ
ンスである。
【0094】3.3.1 整数書き込みバッファデータ
のリタイア動作 上記したように、図11のリタイアシーケンスは、単一
化キャッシュ60内に含まれるか又はこれと共に設けら
れたキャッシュ制御ロジックの制御のもとで行われ、こ
れは、X及びYパイプラインの動作に対して非同期であ
る。上記のように、書き込みバッファエントリ152は
プログラム順序でリタイアされるのが重要である。従っ
て、書き込みバッファ29は、円形バッファとして動作
し、書き込みバッファ29の2つの部分に対しリタイア
ポインタ158x、158yによってシーケンスが決定
される。これらリタイアポインタ158x、158y
は、書き込みバッファ29の対応区分152x、152
yにおける書き込みバッファエントリ152のプログラ
ム順序を維持し、そしてクロス依存性制御ビットXDE
Pは、以下の説明から明らかなように、区分152x、
152y間のエントリ152の順序を維持する。
【0095】説明を容易にするために、上記の割り当て
シーケンスの場合と同様に、図11のシーケンスは、書
き込みバッファ29の区分152x、152yの一方に
ついて説明する。書き込みバッファ29の反対の区分に
ついてのシーケンスも同一である。
【0096】リタイアシーケンスはプロセス200で始
まり、リタイアポインタ158がリタイアされるべき次
のエントリ152として指示する書き込みバッファエン
トリ152の1つである書き込みバッファエントリ15
r から制御ビットAVが検索される。判断ステップ2
01において、制御ビットFP及び制御ビットAVがテ
ストされて、書き込みバッファエントリ152r が浮動
小数点データラッチ166に関連される(従って、FP
U70からの浮動小数点結果をバッファする)かどうか
を決定する。制御ビットFP及び制御ビットAVの両方
がセットされた場合には、書き込みバッファエントリ1
52r が浮動小数点データに関連され、データは、以下
のセクション3.3.2に述べるプロセスに基づいてリ
タイアされる。
【0097】制御ビットAVがセットされそして浮動小
数点制御ビットFPがクリアされた場合には、書き込み
バッファエントリ152r は整数データに向けられる。
次いで、判断ステップ202が実行され、キャッシュ制
御ロジックは、制御ビットAV及び制御ビットDVの両
方がセットされたかどうかを決定する。もしそうでなけ
れば(AV及びDVのいずれかがクリアされた)、エン
トリ152r はリタイアされる準備がされず、制御はプ
ロセス200へと進んで、検索及び判断プロセスが繰り
返される。その両方がセットされた場合には、有効な整
数データが書き込みバッファエントリ152r のデータ
部分に現れ、エントリはリタイア可能となる。
【0098】次いで、判断ステップ204が実行され
て、クロス依存性制御ビットXDEPが書き込みバッフ
ァエントリ152r に対して全てクリアであるかどうか
判断される。上記したように、クロス依存性制御ビット
XDEPは、書き込みバッファエントリ152r の割り
当てにおいて開始して各書き込みバッファエントリ15
2のリタイアの際に更新される書き込みバッファ29の
反対区分における書き込みバッファエントリ152に対
する制御ビットAVのスナップショットである。全ての
クロス依存性制御ビットXDEPが書き込みバッファエ
ントリ152r に対してクリアされ(そしてリタイアポ
インタ158がそれを指し)た場合には、書き込みバッ
ファエントリ152r がプログラム順序において次にリ
タイアされるべきものとなり、制御はプロセス208へ
進む。
【0099】クロス依存性制御ビットXDEPが全てク
リアされない場合には、書き込みバッファ29の反対区
分における付加的な書き込みバッファエントリ152
は、プログラム順序を維持するように、エントリ152
yがリタイアされる前にリタイアされねばならない。待
機状態206が作用され、その後、書き込みバッファエ
ントリ152r の割り当ての前に割り当てられた反対区
分における書き込みバッファエントリ152が先にリタ
イアされるまで、判断ステップ294が繰り返される。
【0100】以下で詳細に述べるように、マイクロプロ
セッサ10は、メインメモリ86から非キャッシュ式読
み取りを行う構成を含んでもよく、これはプログラム順
序で行われねばならない。既に割り当てられた非キャッ
シュ式読み取りの存在は、各書き込みエントリごとに、
制御ビットNCRAがセットされることにより指示さ
れ、非キャッシュ式読み取りを実行する際には、制御ビ
ットNCRAが全ての書き込みバッファエントリ152
に対してクリアされる。この特徴が実施される場合に
は、判断ステップ204は、制御ビットNCRAの状態
もテストし、全てのクロス依存性制御ビットXDEP及
び制御ビットNCRAの両方がクリアされるときまで書
き込みバッファエントリ152r のリタイアを防止す
る。
【0101】次いで、プロセス208が実行され、書き
込みバッファエントリ152r のデータ部分は、キャッ
シュポート160又はメモリバスへ送るように適当なビ
ット又はバイト位置と整列される。この整列は、物理メ
モリアドレスは特定のバイト位置に対応しているが、デ
ータは64ビット(8バイト)までのワードで与えられ
ることを考慮して必要とされる。従って、適切なメモリ
書き込み動作を確保するには、データと適当なビット位
置との整列が重要である。更に、集合書き込み及び不整
列書き込みに必要とされるような特殊な整列動作がプロ
セス208において達成される。これら整列特徴及びシ
ーケンスの詳細は、以下で説明する。
【0102】次いで、プロセス210は、書き込みバッ
ファエントリ152r のデータ部分を、直接的に又は図
5に示された特殊な書き込み回路を経てキャッシュポー
ト160へ送る。これが生じると、書き込みバッファエ
ントリ152r に対応するクロス依存性制御ビットXD
EPの1つが、書き込みバッファ29の反対区分の各書
き込みバッファエントリ152i においてクリアされる
(プロセス212)。これは、シーケンスにおける次の
書き込みバッファエントリ152(即ち反対のリタイア
ポインタ158により指示された書き込みバッファエン
トリ152i )を次の動作においてリタイアできるよう
にする。プロセス214は、現在リタイアされている書
き込みバッファエントリ152r に対し制御ビットAV
及び制御ビットDVをクリアする。次いで、プロセス2
16は、その区分に対するリタイアポインタ158を増
加し、シーケンスにおける次の書き込みバッファエント
リ152をリタイアできるようにすると共に、書き込み
バッファエントリ152rを再割り当てできるようにす
る。リタイアシーケンスの制御は、プロセス200へ戻
り、適当な制御ビットを検索する。
【0103】上記したように、単一キャッシュポート1
60は、図5に概略的に示されて、上記のプロセス21
0に対して説明したが、このキャッシュポート160は
デュアルキャッシュポートとして働き、そして図1のマ
イクロプロセッサ10の書き込みバッファ29は、デー
タバスDATAと直接通信する。従って、この場合に
は、キャッシュ制御ロジックは、書き込みバッファ29
がプロセス210においてエントリ152r からデータ
を与えるところの適当なポートを選択する。
【0104】更に、デュアルキャッシュポート160を
設けたことにより、図5に示したように書き込みバッフ
ァ29の2つの区分が設けられる場合に、データが2つ
の書き込みバッファエントリ152(書き込みバッファ
29のX及びY区分152x及び152yの各々に1
つ)からデュアルキャッシュポート160を経て同時に
与えられるときに、付加的な流線型化を与えることがで
きる。このように同時にデータが与えられる場合は、ク
ロス依存性の判断ステップ204は、同時に与えられた
書き込みバッファエントリ152が、セットされたXD
EPビットに対応する限り、書き込みバッファエントリ
152の1つが単一のセットされたクロス依存性制御ビ
ットXDEPをもつことを許さねばならない。従って、
リタイアプロセスは、書き込みバッファ29の2つの区
分152x、152yを使用することによりその出力速
度を倍増できる。
【0105】3.3.2 浮動小数点書き込みバッファ
データのリタイア動作 判断ステップ201で制御ビットAV及び制御ビットF
Pの両方がセットされたと判断した場合は、リタイアポ
インタ158が指す書き込みバッファエントリ152r
がFPU70からの浮動小数点結果に関連している。本
発明のこの実施例によれば、エントリ152r の制御ビ
ットDVは、以下で述べる例外処理の目的で、有効な整
数データが存在しなくてもセットされる。
【0106】次いで、判断ステップ203が実行され、
キャッシュ制御ロジックが浮動小数点データラッチ16
6の制御ビットFPDVに質問して、FPU70がそこ
にデータを書き込んだかどうかを調べ、もしそうであれ
ば、制御ビットFPDVがセットされる。この制御ビッ
トFPDVは、セットされたときに、FPU70が有効
なデータを書き込んだことを指示するので、書き込みバ
ッファエントリ152の制御ビットDVと同様である。
これに対し、制御ビットFPDVがクリアされた場合に
は、FPU70は浮動小数点データラッチ166にまだ
データを書き込んでおらず、この場合には、判断ステッ
プ204が図11のリタイアシーケンスのプロセス20
0に制御を戻す。
【0107】制御ビットFPDVがセットされた場合
に、判断ステップ205が実行され、書き込みバッファ
エントリ152r のクロス依存性制御ビットXDEPが
質問されて、全てのビットXDEPがクリアされたかど
うか調べられる。もしそうでなければ、プログラム順序
でエントリ152r の前に割り当てられていてエントリ
152r とは反対の書き込みバッファ29の区分に存在
する付加的な書き込みバッファエントリ152を、その
エントリ152r のリタイアの前にリタイアしなければ
ならない。次いで、待機状態207が実行され、判断1
05が繰り返される。エントリ152r の全てのクロス
依存性制御ビットXDEPがクリアになると、判断20
5は制御をプロセス208へ進め、浮動小数点データラ
ッチ166の内容を整列してキャッシュポート160へ
与える。上記したように、2つの書き込みバッファエン
トリ152の同時の付与がデュアルキャッシュポート1
60を経て許された場合には、エントリ152の1つ
は、それが同時に与えられたエントリの対に対応する限
り、1つのセットされたXDEPビットを有する。
【0108】次いで、上記した整数データの場合と同様
に、反対区分のエントリ152におけるクロス依存性制
御ビットXDEPがクリアされ(プロセス212)、制
御ビットAV及び制御ビットFPDVがクリアされ(プ
ロセス214)、そしてリタイアポインタ158が増加
される(プロセス216)。
【0109】3.4 非キャッシュ式読み取りの順序付
け 上記した書き込みバッファエントリ152の割り当てに
使用したクロス依存性概念は、マイクロプロセッサ10
の他の機能にも使用できる。以下に述べる非キャッシュ
式書き込みの場合と同様に、マイクロプロセッサ10
は、メモリからの非キャッシュ式読み取りを必要とする
命令をそのプログラムシーケンスに有している。定義に
よれば、非キャッシュ式読み取りは、定義により単一化
キャッシュ60からのものではないメインメモリ86か
らの読み取りであり、非キャッシュ式読み取りは、説明
上、メインメモリ86へ読み取りアクセスを要求するた
めの保持ラッチとして働く単一エントリ読み取りバッフ
ァと考える。適切なパイプライン動作を確保するために
は、非キャッシュ式読み取りはプログラム順序で実行さ
れねばならない。従って、特に、ここに述べるスーパー
パイプライン式スーパースカラーアーキテクチャのマイ
クロプロセッサにおいては、非キャッシュ式読み取りの
プログラム順序を維持する方法が必要となる。
【0110】図19を参照し、本発明の好ましい実施例
による非キャッシュ式読み取りのクロス依存性フィール
ド310について説明する。非キャッシュ式読み取りの
クロス依存性フィールド310は、好ましくは、単一化
キャッシュ60のキャッシュ制御ロジックの維持され、
そして割り当てられた制御ビットNCRVを含んでい
る。これは、セットされると、非キャッシュ式読み取り
が割り当てられたことを指示する。上記したクロス依存
性制御ビットXDEPと同様に、そして上記したよう
に、各書き込みバッファエントリ152の制御ビットN
CRAは、その割り当て時に、割り当てられた制御ビッ
トNCRVがセットされた場合にセットされて、非キャ
ッシュ式読み取りが既に割り当てられたことを指示す
る。制御ビットNCRAは、各書き込みエントリ152
のリタイア中にテストされ、メインメモリ86への要求
の適切な順序を確保する。
【0111】更に、非キャッシュ式読み取りのクロス依
存性フィールド310は、各書き込みバッファエントリ
152の制御ビットAVの各々にマップされた1ビット
位置を含み、これは、非キャッシュ式読み取りの割り当
て時にどの書き込みバッファエントリ152が既に割り
当てられているかを指示すると共に、これらの既に割り
当てられた書き込みバッファエントリ152のリタイア
を指示する。非キャッシュ式読み取りのクロス依存性フ
ィールド310は、クロス依存性制御ビットXDEPと
同様に動作し、ビットは、非キャッシュ式読み取りの割
り当て時にのみセットされそして各書き込みバッファエ
ントリのリタイア時にクリアされる。
【0112】図20及び21を参照し、本発明の好まし
い実施例による非キャッシュ式読み取り動作の割り当て
及びリタイアのプロセスについて詳細に説明する。図2
0に示された非キャッシュ式読み取りの割り当てにおい
て、プロセス312は、先ず命令が非キャッシュ式読み
取りを含むことを決定する。次いで、プロセス314が
実行され、制御ビットAVのスナップショットが非キャ
ッシュ式読み取りクロス依存性フィールド310にロー
ドされる。次いで、プロセス316が実行されて、非キ
ャッシュ式読み取りのクロス依存性フィールド310の
割り当てられた制御ビットNCRVがセットされ、その
後の割り当てられた書き込みバッファエントリ152
に、非キャッシュ式読み取り動作が既に割り当てられた
ことを指示する。次いで、アドレス計算段AC2に続く
(プロセス318)。
【0113】図21は、単一化キャッシュ60の制御ロ
ジックの制御のもとで非キャッシュ式読み取りを実行す
るプロセスを示している。判断ステップ319は、非キ
ャッシュ式読み取りのクロス依存性フィールド310が
完全にクリアであるかどうかを判断する。非キャッシュ
式読み取りのクロス依存性フィールド310のいずれか
のビットがセットされた場合には、非キャッシュ式読み
取りに既に割り当てられている書き込みバッファエント
リ152の1つ以上がまだリタイアされておらず、次い
で、待機状態321に入り、そして既に割り当てられた
全ての書き込みバッファエントリがリタイアされるまで
判断ステップ319が繰り返される。
【0114】非キャッシュ式読み取りのクロス依存性フ
ィールド310が完全にクリアされた際には、非キャッ
シュ式読み取りがプログラム順序において次に実行され
るべきものとなる。次いで、プロセス320が実行され
て、メインメモリ86からの読み取りが従来の仕方で行
われる。読み取りの完了時に、非キャッシュ式読み取り
のクロス依存性フィールド310の割り当てられた制御
ビットNCRVがプロセス322においてクリアされ、
従って、書き込みバッファエントリ152のその後の割
り当ては、それらの制御ビットNCRAをセットしな
い。次いで、プロセス324は、書き込みバッファエン
トリ152の制御ビットNCRAをクリアし、非キャッ
シュ式読み取りの完了を指示すると共に、その後の書き
込みバッファエントリ152をプログラム順序でリタイ
アできるようにする。
【0115】1組とみなされる書き込みバッファエント
リ152の制御ビットNCRAが非キャッシュ式読み取
りのクロス依存性フィールド310に対応していること
を考えると、非キャッシュ式読み取りのプログラム順序
の実行を制御するのに1組のこれらインジケータを使用
すれば充分であることが意図される。例えば、非キャッ
シュ式読み取りのクロス依存性フィールド310のみが
使用される場合には、書き込みバッファエントリ152
の割り当て及びリタイアは、フィールド310をテスト
することにより非キャッシュ式読み取りが割り当てられ
たかどうかを決定するように制御され、そしてフィール
ド310の対応ビット位置をテストすることにより非キ
ャッシュ式読み取りの前又は後に特定の書き込みバッフ
ァエントリ152が割り当てられたかどうかを決定する
ように制御される。
【0116】それ故、本発明の好ましい実施例によれ
ば、非キャッシュ式読み取り動作は、書き込みバッファ
エントリ152のリタイアに対してプログラム順序で実
行されるように制御することができる。
【0117】4.リード・アフタ・ライトハザードの検
出及び書き込みバッファ動作 上記したように、パイプライン式アーキテクチャのマイ
クロプロセッサ、特にマイクロプロセッサ10のような
スーパーパイプライン式スーパースカラーマイクロプロ
セッサにおいては幾つかのハザードが本来存在する。こ
のようなハザードの重要な種類は、所与の時間にパイプ
ラインにおいて同じレジスタ又はメモリ位置に対して多
数の動作が存在するときに生じるデータ依存性である。
【0118】第1の形式のデータ依存性は、同じメモリ
位置への書き込み及び読み取りがパイプラインに存在し
て読み取り動作が書き込みよりも新しい命令であるよう
なRAW即ちリード・アフタ・ライトのデータ依存性で
ある。このような場合は、プログラマは、読み取りを実
行する前に書き込みが完了すると仮定する。しかしなが
ら、パイプライン動作であるために、特に読み取り動作
が加算又は乗算のような別の命令に含まれる場合には、
読み取り動作のためのメモリアクセスが書き込みの実行
前に行われることがある。このような場合には、メモリ
位置への書き込みがまだ行われていないので、読み取り
が誤ったデータをコアに返送する。このハザードは、ス
ーパースカラー、スーパーパイプライン式アーキテクチ
ャーのマイクロプロセッサ10において生じ易く、そし
て上記したように、命令をプログラム順序から外れて実
行できる場合には更に生じ易いものである。
【0119】図12を参照し、本発明の好ましい実施例
によりマイクロプロセッサ10においてRAWハザード
を検出しそして処理するシーケンスを詳細に説明する。
この例において、RAWハザードの検出は、各読み取り
命令に対しX及びYパイプラインの第2アドレス計算段
AC2で実行された物理アドレス計算プロセス218の
結果として生じる。判断ステップ219において、書き
込みバッファ制御ロジック150は、プロセス218で
計算された読み取り物理アドレスを、パイプラインの関
連性に係わりなく、全ての書き込みバッファエントリ1
52における物理アドレス値の各々と比較する。この比
較は、読み取りアクセスの物理アドレスを既に割り当て
られたアドレスと比較するだけでなく、図7及び8のプ
ロセス178について上記したように、動作のスパンも
考慮する。又、この比較は、反対のX又はYパイプライ
ンの第2のアドレス計算段に現在ある命令に対しても行
われる。読み取り動作と、既に割り当てられているか又
は同時に割り当てられるがプログラム順序において早期
であるいずれかの書き込みとのオーバーラップがない場
合には、その特定の読み取り動作についてRAWハザー
ドは存在せず、プロセス222において実行が続けられ
る。判断ステップ219において、読み取り動作に対し
て計算された物理アドレスと、古い命令に割り当てられ
且つそのアドレス有効制御ビットAVがセットされてい
るか或いは古い命令の同時に割り当てられた書き込みに
対して割り当てられている1つ以上の書き込みバッファ
エントリ152W に対する物理アドレスとが一致すると
決定された場合には、RAWハザードが存在することが
あり、図12に示すハザード処理シーケンスへと続けら
れる。
【0120】上記のように、各書き込みバッファエント
リ152に対する制御ビットの1つは、ライト・アフタ
・リード制御ビットWARである。この制御ビットは、
書き込みバッファエントリ152が割り当てられた書き
込み動作は、割り当て時に反対のパイプラインの第2ア
ドレス計算段AC2にある古い(プログラム順序で)読
み取り命令の後に行うべき書き込み動作であるという点
で、ライト・アフタ・リードであることを指示する。も
しこの場合には、制御ビットWARは、割り当てシーケ
ンスにおいてセットされる(図7のプロセス182)。
これは、新しい書き込み動作が古い読み取り動作の前に
実行する場合にマイクロプロセッサ10がロックするの
を防止する。というのは、古い読み取り動作は、実行時
に、それ自身、書き込みがクリアされるまで待機するリ
ード・アフタ・ライト動作と考えるからである。更に、
書き込み動作は、読み取りよりも新しく、読み取りがク
リアされるのを待機するので、読み取りも書き込みも実
行されない。制御ビットWARを使用することにより、
マイクロプロセッサ10は、明白なRAWハザードが実
際にはWAR状態であるかどうかを判断することがで
き、この場合は書き込みを処理できる。
【0121】従って、図12へ戻ると、判断ステップ2
21は、判断ステップ219で決定されたように読み取
りと一致する物理アドレスを有する各書き込みバッファ
エントリ152W に対して制御ビットWARがセットさ
れたかどうかを判断する。WARビットがセットされた
各エントリ152W については、RAWの競合が存在し
ない。従って、一致するエントリ152W がいずれもク
リアなWARビットを有していない場合には、プロセス
222において読み取りの実行が継続される。しかしな
がら、書き込み制御ビットWARがセットされていない
各一致する書き込みバッファエントリ152W について
は、RAWハザードが存在し、図12のハザード処理シ
ーケンスがそのエントリ152W に対して実行される。
当然、判断ステップ221では、書き込みバッファノー
オペレーション制御ビット(WBNOP)のクリア状態
や、本発明の特定の具現化において実施される他の制御
ビット及び機能の状態のような他の適当な状態もチェッ
クされる。
【0122】次いで、判断ステップ223が実行され、
制御ビットAV即ちアドレス有効性が各RAWエントリ
152W についてテストされる。判断ステップ223
は、主として、読み取り動作について待機状態を生じる
RAWエントリ152W (以下に述べる)がリタイアさ
れたかどうかを決定するように行われる。残りのRAW
エントリ152W で制御ビットAVがセットされている
ものがない場合には、RAWハザードがクリアされてお
り、読み取り動作を続けることができる(プロセス22
2)。
【0123】残りの一致するRAWエントリ152W
各々に対し、プロセス224が次に実行されて、エント
リをバイパスできるかどうか、又はハザードを生じた書
き込みを読み取り動作を続ける前に完了しなければなら
ないかどうかを判断する。本発明の好ましい実施例によ
れば、コア20における読み取り動作へデータを供給す
る前に書き込みからのデータを単一化キャッシュ60及
びある場合には書き込みバッファ29に書き込む必要が
ないようにする技術が使用できる。
【0124】しかしながら、このようなバイパス動作
は、全ての書き込みに使用できるのではない。この例に
おいては、非キャッシュ式書き込み(非キャッシュ式制
御ビットNCがエントリ152においてセットされるこ
とにより指示される)の結果をメインメモリ86から供
給しなければならない。第2に、上記したように、RA
Wハザードの特殊な場合が、同じ物理位置に対するリー
ド・アフタ・マルチプルライト(多数の書き込み後の読
み取り)である。図7に示すように、割り当てシーケン
スのプロセス178は、書き込みバッファエントリ15
2の制御ビットRDをセットし、そして同じ物理アドレ
スに既に割り当てられている全ての書き込みバッファエ
ントリの制御ビットRDをクリアする。これに対し、読
み取り可能でない(即ち、それらの制御ビットRDがク
リアされた)書き込みバッファエントリ152は、それ
らのデータにエラーがあるので、コア20へデータを供
給するのに使用できない。第3に、後続の読み取りが書
き込み動作で書き込まれなかったバイトを包含する場合
は書き込み動作からデータを供給することができず、読
み取りを完了するためにキャッシュ60又はメインメモ
リ86へのアクセスが依然として必要とされる。
【0125】図12のRAW処理シーケンスにおいて
は、各々の一致する書き込みバッファエントリ152W
に対してプロセス224が実行され、エントリ152W
に対する制御ビットRDがセットされた(エントリ15
W が読み取りの物理アドレスに割り当てられた最後の
エントリ152であることを指示する)かどうかを判断
し、制御ビットNCがクリアである(書き込みが非キャ
ッシュ式でないことを指示する)かどうかを判断し、そ
して読み取られるべきバイトがメモリに書き込まれるべ
きバイトのサブセットであるという点で、読み取りの物
理アドレスが書き込みバッファエントリ152W への書
き込みの物理アドレスに「厳密」に一致するかどうかを
判断する。これら3つの全ての条件を満たすエントリ1
52W は、「バイパス可能」であると言え、そして制御
は以下に述べる判断ステップ225へ進む。上記条件の
1つ以上(非キャッシュ式、非読み取り可能又は不存在
物理アドレス)を満足しないことにより、バイパス可能
なエントリ152W が存在しない場合には、待機状態2
29が行われ、そして制御は判断ステップ223へ戻
り、この状態は、制御ビットAVがクリアされることに
より示されるように全ての非バイパスエントリ152W
がリタイアされるまで保持され、その後に、読み取り動
作が続けられる(プロセス222)。
【0126】本発明のこの実施例においては、各バイパ
ス可能なエントリ152W に適用できるバイパス方法が
判断ステップ225において決定され、制御ビットDV
即ちデータ有効性がテストされて、書き込みバッファエ
ントリ152W が保留中であり(即ち、有効なデータを
含み)まだリタイアされていないかどうか判断する。保
留中である各バイパス可能なエントリ152W について
は、プロセス230が書き込みバッファ制御ロジック1
50によって実行されて、書き込みバッファエントリ1
52W のデータ部分の内容を、最初にメモリへ書き込ま
ずに、コア20へ直接供給できるようにする。図5を参
照すると、プロセス230が行われて、書き込みバッフ
ァ制御ロジック150が書き込みバッファエントリ15
W をイネーブルし、読み取り動作の際に、そのデータ
をソースバスSRC(即ち、エントリ152W を含む書
き込みバッファ29の区分に対するバスSRCx、SR
Cyの一方)に出すと共に、適当なマルチプレクサ15
4を制御して、ソースバスSRCを、データを要求して
いるコア20のX又はYの一方のパイプラインに適用す
る。従って、この場合に、RAWハザードの検出は、書
き込みバッファ29からコア20へデータを供給するこ
とにより処理され、読み取り動作の実行時間がスピード
アップされる。
【0127】しかしながら、制御ビットDVがセットさ
れていないことが判断ステップ225で分かることによ
り示されるようにまだ保留になっていないバイパス可能
な書き込みバッファエントリ152W については、有効
なデータがエントリ152Wに存在せず、そこからコア
20へ供給することができない。これらエントリ152
W に対してプロセス232が実行され、コア20により
書き込みバッファエントリ152W への書き込みが行わ
れるときに、ライトバックバスWB x又はWB y上
の有効データ(対応するバイパスバスBP x、BP
yにも存在し、マルチプレクサ154x、154yの適
当な一方に送られる)が、コア20の要求を発している
X又はYパイプラインへ送られる。このように、RAW
ハザードは、有効なデータをもつ書き込みバッファ29
をバイパスすることによって取り扱われ、データをコア
20へ供給する前に、キャッシュ60、メインメモリ8
6又は書き込みバッファエントリ152W からの有効デ
ータの記憶及び検索が必要とされないので、読み取り動
作の実行が更にスピードアップする。
【0128】5.推論的実行及び例外処理 5.1 推論的実行 上記したように、本発明の好ましい実施例によるスーパ
ーパイプライン式スーパースカラーマイクロプロセッサ
10は、推論的に命令を実行できる。この推論は、条件
分岐又はジャンプステートメントの後であって且つジャ
ンプ又は分岐の基礎となる条件の状態を決定する前に1
つ以上の命令を実行することにより生じる。推論的実行
を行わない場合には、マイクロプロセッサは、後続命令
の実行の前に、条件の状態を決定する命令の実行を待機
しなければならず、パイプライン「ストール(停止)」
状態を招く。推論的実行では、マイクロプロセッサ10
は条件の状態を推論し、その推論に基づいて命令を実行
する。行われる推論的実行の数及び推論が正確である率
にもよるが、パイプラインストールの影響は著しく減少
される。
【0129】本発明のこの実施例によるマイクロプロセ
ッサ10は、首尾よくいかなかった推論の影響を速やか
にクリアして、特に、推論的書き込みの結果がメモリへ
リタイアされないよう確保すると共に、推論的に書き込
まれたデータを書き込みバッファ29から除去するため
の回路を備えている。図13及び14を参照し、推論的
書き込みを実行すると共に不首尾な推論を取り扱う方法
について詳細に説明する。図13及び14は、この方法
を一般的ではなく一例として示すものであり、当業者で
あれば、この例についての以下の説明を参照することに
より、図13及び14の方法をマイクロプロセッサにお
いて容易に実現することができよう。
【0130】図13の例示的シーケンスはプロセス24
0で始まり、コア20は、条件がまだ分からない条件分
岐の1つの結果に命令が対応するという点で推論的に実
行されるべき一連の命令を選択する。どの条件分岐を選
択すべきか(即ち、条件分岐又はジャンプを行うべきか
どうか)の判断は、従来の予想分岐機構に基づいて行わ
れる。プロセス242において、2つの書き込みバッフ
ァエントリ152a、152bの割り当て(推論的分岐
は、この例ではメモリへの2つの書き込み動作を含む)
が、上記のように、パイプラインの第2のアドレス計算
段AC2において実行される。しかしながら、書き込み
バッファエントリ152a、152bへの書き込み動作
は推論的であるから、プロセス242の割り当て中に書
き込みの推論の程度に基づいて推論制御ビット(SPE
C)の少なくとも1つがセットされる。
【0131】本発明のこの実施例では、4次の推論的実
行が許される。推論の次数即ち程度は、各書き込みバッ
ファエントリ152ごとに、4つj、k、l、mのSP
EC制御ビット(SPECビット)によって指示され、
各ビット位置は、書き込みバッファエントリ152が選
択された条件分岐の1つに対し推論的書き込みであるか
どうかに対応する。図13は、プロセス242の割り当
て後の4つの書き込みバッファエントリ152a、15
2b、152c及び152dの条件を示している。図1
3に示すように、プロセス242で割り当てられた書き
込みバッファエントリ152a、152bは、それらの
jSPECビットがセットされている。プロセス242
の割り当ては、第1次の推論である(即ち、この例で行
われる第1の推論である)から、エントリ152a、1
52bに対して単一のjSPEC制御ビットのみがセッ
トされる。書き込みバッファエントリ152c、152
dは、まだ割り当てられておらず、従って、それらの推
論制御ビットはクリアである。
【0132】プロセス242の割り当ての後に、選択さ
れた条件分岐において推論的命令の実行がプロセス24
4で開始される。これら命令の実行は、それが完了した
場合に、割り当てられた書き込みバッファエントリ15
2a、152bへの書き込みに影響を与え、それらの制
御ビットDVがセット状態になる。しかしながら、これ
ら書き込みの実行は推論的であるから、図11について
述べたリタイアシーケンスは、(推論的実行が組み込ま
れる場合に)制御ビットSPECが全てクリアされない
限り書き込みバッファエントリ152のリタイアを防止
するゲート判断も含んでいなければならない。これは、
推論的実行の結果がメモリに達するのを防止する。とい
うのは、推論的予想が誤りであった(即ちプロセス24
0で選択されたものから別の分岐をとっていなければな
らなかった)場合には回復するのが非常に困難であり、
もしできたとしても、非常に時間がかかるからである。
【0133】図13の例では、2次の推論も行われ、プ
ロセス240で選択された分岐における命令の1つが、
別の条件分岐又はジャンプを含み、これに対して予想分
岐選択が再びプロセス246で行われて、パイプライン
がストールしないようにされる。2次の推論は、プロセ
ス246で選択された分岐に対する命令の実行を首尾良
く行うために、プロセス246での選択を正しく行うだ
けでなく、プロセス240での選択も正しくなければな
らないことを意味する。プロセス246は、図13で
は、プロセス244における命令の実行後に生じるもの
として示されているが、上記したマイクロプロセッサ1
0のスーパーパイプラインアーキテクチャにより、プロ
セス246の予想分岐は、プロセス244で開始される
実行の完了よりも前に生じることがしばしばある。プロ
セス246での分岐の選択の後に、プロセス248で書
き込みバッファエントリ152C が割り当てられる(こ
れも第2のアドレス計算パイプライン段の間に)。プロ
セス246のこの割り当てにおいては、書き込みバッフ
ァエントリ152C へのいかなる書き込みも2次の推論
であるから、j及びkの両SPEC制御ビットがセット
される。プロセス246の後の書き込みバッファエント
リ152a、152b、152c、152dに対する制
御ビットSPECの状態が図13に示されている。プロ
セス246で選択された分岐における推論的命令の実行
は、プロセス250で開始される。
【0134】図13の例では、3次の推論も行われ、こ
れは、プロセス246で選択された分岐における命令の
シーケンスも別の条件分岐又はジャンプを含むことを意
味する。プロセス252は、予想分岐選択に基づいて分
岐の1つを選択するが、この3次の選択を首尾良く行う
ためには、プロセス240、246及び252の3つの
選択が全て首尾良く行われねばならない。この場合も、
前記のように、プロセス252は、マイクロプロセッサ
10がスーパーパイプライン式アーキテクチャであるこ
とを考えれば、プロセス250での命令の実行が完了す
る前に分岐の選択を行うことがある。この例では、プロ
セス254において書き込みバッファエントリ152d
が割り当てられ、この書き込みバッファエントリ152
dにおいて3つのj、k及びlのSPECビットがセッ
トされる。プロセス254の後の書き込みバッファエン
トリ152aないし152dに対する制御ビットSPE
Cの状態がプロセス254に示されている。次いで、プ
ロセス256は、プロセス252で選択された分岐の命
令を実行し、これは、書き込みバッファエントリ152
dへの書き込み動作を含む。
【0135】図14を参照し、書き込みバッファ29に
よる成功及び不成功の推論的実行の例を説明する。図1
3の例と同様に、図14のシーケンスは、一般的な場合
ではなくて、一例に過ぎず、当業者であれば、マイクロ
プロセッサアーキテクチャにおいてこの方法を容易に実
現できることが意図される。
【0136】プロセス260において、コア20は、プ
ロセス240の第1選択が首尾良く行われ、プロセス2
44で実行される命令へ分岐(又は非分岐)させるに必
要な条件がその前の命令で満足されたことを検出する。
従って、プロセス242で割り当てられそしてプロセス
244で書き込まれた書き込みバッファエントリ152
a、152bのデータ部分の内容がメモリへリタイアさ
れる。というのは、それらの内容は、実行されたプログ
ラムの正確な結果だからである。それ故、プロセス26
2において、全ての推論的書き込みバッファエントリ1
52a、152b、152c、152dのjSPECビ
ットがクリアされ、プロセス262の後の書き込みバッ
ファエントリ152aないし152dに対する制御ビッ
トSPECの状態が図14に示されている。書き込みバ
ッファエントリ152a、152bは、ここで、それら
の全ての推論的制御ビットSPECがクリアされている
ので(そしてそのデータ有効性制御ビットDVが既にセ
ットされているので)、書き込みバッファエントリ15
2a、152bは、場合によって単一化キャッシュ60
又はメインメモリ86へリタイアされる。
【0137】図14の例では、第2の分岐選択(プロセ
ス246でなされた)が不首尾であると検出される。と
いうのは、プロセス248で実行された命令に必要な条
件がその前の命令によって満足されていないからであ
る。更に、プロセス252で行われる分岐の選択も、プ
ロセス246の首尾良い選択に基づいているので、プロ
セス256で実行されるべき命令に必要な条件も満足さ
れない。書き込みバッファエントリ152c、152d
への書き込みがまだ行われていない程度までは、上記の
不首尾の予想選択のために、これらの書き込みは決して
実行されない。これらの書き込みが生じた(即ち、書き
込みバッファエントリ152c、152dは保留中)程
度までは、データは、それがエラーであるからメモリに
書き込まれてはならない。従って、書き込みバッファエ
ントリ152c、152dは、それらの内容をリタイア
せずに、更に使用するためにクリアされねばならない。
【0138】図14のシーケンスは、プロセス266で
始まって不首尾な推論的実行を取り扱い、SPECビッ
トkがセットされた書き込みバッファエントリ152が
書き込みバッファ制御ロジック150により識別され
る。この例では、これらの識別された書き込みバッファ
エントリ152は、エントリ152c(2次推論)及び
152d(3次推論)である。プロセス268におい
て、書き込みバッファ制御ロジック150は、各エント
リ152b、152cに対するアドレス有効制御ビット
AVをクリアし、エントリ152c、152dは再割り
当てされリタイアされない(リタイアを行うためにAV
ビットをセットしなければならない図11のリタイアシ
ーケンスを参照されたい)。
【0139】上記したように、リタイアポインタ158
x、158yは、次にリタイアされるべき書き込みバッ
ファエントリ152の1つを指す。本発明の好ましい実
施例によれば、制御ビットWBNOPが書き込みバッフ
ァエントリ152c、152dに対してセットされ、そ
れに関連するリタイアポインタ158がエントリ152
c、152dを指すときに、これらのエントリがスキッ
プされる(あたかもそれらが割り当てられなかったかの
ように)。これは、書き込みバッファ29の該当区分が
空である場合に、リタイアポインタ158が割り当てポ
インタ156を「捕らえる」ことを許す。リタイアプロ
セスにおいてアドレス有効制御ビットAVを繰り返しチ
ェックすることにより、空条件に合致したときに安全停
止することができる。
【0140】適切な条件分岐の実行は、図14に示すプ
ロセス270で再開することができる。
【0141】5.2 例外処理 推論的実行に加えて、命令の実行により一般に例外と称
されているエラー状態が返送される場合にはパイプライ
ンのストール及びバブルが生じることがある。例外の一
例は、コア20が0で除算する状態を検出する場合であ
る。パイプラインの実行段においてこのような例外が検
出されたときは、例外状態を従来の仕方で適切に処理す
るために、まだパイプラインにある命令をクリアしなけ
ればならない。特に、書き込みバッファ29について
は、例外を生じた命令の後に割り当てられた書き込みバ
ッファエントリ152をフラッシュしなければならな
い。パイプラインからの書き込み命令が除去されるため
にこれらのエントリ152への書き込みは決して行われ
ない(そしてデータ有効制御ビットDVは決してセット
されない)ので、エントリ152は、フラッシュされな
くても書き込みバッファ29から決してリタイアせず、
マイクロプロセッサ10は不定にハングし、決して到着
することのないデータを待機する。
【0142】図15を参照し、書き込みバッファ29に
対する例外を取り扱うシーケンスの一例を詳細に説明す
る。プロセス272において、コア20は、例外状態を
検出する。プロセス274は、書き込みバッファ制御ロ
ジック150によって実行され、制御ビットAV及び制
御ビットDVが書き込みバッファ29の各書き込みバッ
ファエントリ152から検索される。次いで、判断27
3が行われて、制御ビットAVのいずれかが書き込みバ
ッファ29においてセットされたかどうか判断する。制
御ビットAVがセットされた各書き込みバッファエント
リ152に対して、判断275でその制御ビットDV即
ちデータ有効性がテストされ、それがセットされたかど
うか判断される。もしそうでなければ(そのエントリ1
52への書き込みが例外の時点でまだ生じていないこと
を意味する)、制御ビットAVがクリアされ、そして書
き込みバッファノーオペレーションビットWBNOPが
そのエントリ152に対してセットされる。上記のよう
に、WBNOPビットは、リタイアポインタ158がこ
のエントリ152をスキップできることを指示し、割り
当てポインタ156x、156yがそれらの各々のリタ
イアポインタ158x、158yに等しいところの空条
件を達成することができる。次いで、制御は以下に述べ
るようにプロセス274へ戻される。
【0143】制御ビットAV及び制御ビットDVの両方
がセットされた(判断273、275により決定され
る)保留中の書き込みバッファエントリについては、デ
ータがコア20により例外状態の前に書き込まれてい
る。従って、これらの位置に書き込まれたデータは有効
であり、図11について述べた通常の非同期リタイアシ
ーケンスでメモリに書き込むことができる。しかしなが
ら、マイクロプロセッサ10により例外を処理する前
に、書き込みバッファ29の全てのエントリをリタイア
し、割り当てに使用できるようにしなければならない
(即ち、書き込みバッファ29を空にしなければならな
い)。従って、シーケンスの制御はプロセス274へ戻
り、全ての書き込みバッファエントリ152に対する制
御ビットAVがクリアされるときまで、制御ビットAV
及び制御ビットDVが再び検索され質問される。全ての
制御ビットAVがクリアされたときは、WBNOPビッ
トの作用を考慮して、割り当てポインタ156x、15
6yの両方がそれらの各々のリタイアポインタ158
x、158yと同じエントリ152を指す。この空条件
が達成されると、プロセス278を開始することがで
き、例外状態が通常のやり方で処理される。
【0144】6.書き込みバッファからの特殊な書き込
みサイクル 図11について上記したように、リタイアプロセスは、
書き込みバッファ29からキャッシュポート160への
又は直接的にデータバスDATAへ至る特殊な書き込み
動作を含む。本発明の好ましい実施例によれば、これら
特殊な書き込みサイクルは、不整列書き込み及び集合書
き込みの取り扱いを含むことができる。本発明の好まし
い実施例によりこれらの特殊な書き込みサイクルを取り
扱うシーケンスを以下に詳細に説明する。
【0145】6.1 不整列書き込み 上記したように、マイクロプロセッサ10内に与えられ
た物理メモリアドレスは、メモリのバイトアドレスに対
応し、一方、データバスDATAは、64ビットを並列
に通信することができる(本発明のこの実施例では主と
してバスインターフェイスユニットBIUのデータ入力
/出力から単一化キャッシュ60へ)。X86適合型の
マイクロプロセッサにおける物理アドレスはオペランド
サイズのモジュロではないので、メモリ書き込みの相当
の部分が8バイト境界にオーバーラップし、これらの書
き込みを「不整列」書き込みと称する。本発明の好まし
い実施例によるマイクロプロセッサ10の書き込みバッ
ファ29は、書き込みバッファエントリ152が割り当
て時に不整列であることを指示し、書き込みの第2部分
を与える第2の書き込みバッファエントリ152を割り
当て、そして不整列書き込みを考慮するようにリタイア
プロセスにおいて特殊なルーチンを開始することによ
り、このような不整列書き込みを考慮するものである。
これらのシーケンスを図16及び17について詳細に説
明する。
【0146】図16は、図7の割り当てシーケンスのプ
ロセス182の一部分であって、不整列書き込みを検出
しそしてそれを割り当てられている書き込みバッファエ
ントリ152に対して指示するための部分を示すフロー
チャートである。図16のプロセス280において、書
き込みバッファ制御ロジック150は、割り当てられて
いる書き込みバッファエントリ152n への書き込み動
作の物理アドレス(下位バイトアドレス)に、書き込み
動作のサイズ(バイト単位)を加える。書き込み動作の
サイズに関する情報は、X86型マイクロプロセッサ命
令にとって通常そうであるように、命令内に含まれてい
る。判断281において、書き込みバッファ制御ロジッ
クは、プロセス280の加算がビット3への桁上げを生
じたかどうか判断し、これは、割り当てられている書き
込みバッファエントリ152n への書き込み動作が8バ
イト境界に交差することを指示する。判断281で桁上
げが生じないと決定されると、エントリ152n への書
き込みは不整列ではなく、次いで、プロセス282が実
行され、不整列書き込み制御ビットMAWがエントリ1
52n においてクリアされ、そして割り当てシーケンス
が続けられる(プロセス288)。
【0147】しかしながら、桁上げが生じた場合には、
エントリ152n への書き込みが8バイトの境界に交差
し、この場合には、プロセス284が実行されて、エン
トリ152n の制御ビットMAWをセットする。次い
で、プロセス286において、割り当てられるべき次の
書き込みバッファエントリ152n+1 が不整列書き込み
の目的で割り当てられるが、これは、エントリ152
n+1 のアドレス部分に次の8バイトグループ(即ち、プ
ロセス281の検出された桁上げの後の8バイトアドレ
ス)への書き込みに対する物理スタートアドレスをロー
ドし、そしてエントリ152n+1 に対する制御ビットA
Vをセットすることにより行われる。プロセス286で
は、上位物理アドレスが異なる物理ページに存在するか
もしれないことを考慮して、新たな物理アドレスの計算
(パイプライン段AC2)が必要とされる。しかしなが
ら、エントリ152n+1 は、メモリへの第2のオペラン
ド書き込みを行うためのリタイアプロセスに使用される
ものに過ぎないから、エントリ152n+1 のデータ部分
は空のままである。次いで、割り当てプロセスの残りの
部分へ続く(プロセス288)。
【0148】書き込みバッファエントリ152n が不整
列書き込みであるかどうかに係わりなく、エントリ15
n へのデータの発生は、図10について上記したよう
に行われる。本発明のこの実施例によれば、書き込みバ
ッファエントリ152n のデータ部分の特殊なロードは
行われないが、不整列書き込みの場合には、エントリ1
52n+1 へのデータの発生は行われない。
【0149】図17を参照し、書き込みバッファエント
リ152のリタイアにおいて不整列書き込みを処理する
シーケンスについて説明する。前記のリタイアシーケン
スと同様に、図17のシーケンスは、書き込みバッファ
制御ロジック150から助成されるキャッシュ制御ロジ
ックの制御のもとで実行されるのが好ましい。図17の
シーケンスは、上記した図11のプロセス208及び2
10の一部分として行われる。このシーケンスは判断2
89で始まり、エントリ152n の制御ビットMAWが
テストされ、もしクリアであれば、リタイアシーケンス
は上記のように続けられる(図17のプロセス29
0)。しかしながら、エントリ152n に対して制御ビ
ットMAWがセットされた場合には、プロセス292が
次に行われ、エントリ152n のデータ部分が適当な不
整列データラッチ162x、162yにラッチされる。
【0150】エントリ152n からのデータの付与は、
書き込みの不整列特性を考慮して、2つのメモリサイク
ルで行わねばならない。しかしながら、書き込み動作を
2つのサイクルに分割する場合に、エントリ152n
記憶されたデータは、キャッシュメモリ160へ付与す
るための適切な「バイトレーン」にない。図5に戻る
と、シフタ164は、対応する書き込みバッファ区分1
52x、152yから与えられたデータを、その不整列
書き込みラッチ162x、162yに記憶する前にシフ
トするための従来のバレルシフタである。従って、シフ
タ164は、対応する書き込みバッファ区分152n
おけるデータの単一シフトを行って、下位データが上位
ビットレーンに現れ(第1の下位アドレスの書き込み動
作においてキャッシュポート160へ与えるために)そ
して上位データが下位ビットレーンに現れる(第2の上
位アドレスの書き込み動作においてキャッシュポート1
60へ与えるために)ようにすることができる。このシ
フト動作は、図17に示すシーケンスのプロセス292
で行われる。
【0151】次いで、プロセス294が行われ、エント
リ152n の物理アドレスは、下位アドレス8バイトグ
ループに対応するバイトレーンに整列された(プロセス
292においてシフタ164により)下位アドレス8バ
イトグループに対応するデータの部分と共にキャッシュ
ポート160へ与えられる。これは、不整列書き込みに
必要な第1の書き込み動作を行う。次いで、プロセス2
96において、不整列書き込みの第2オペランドに対す
るアドレス及びデータが与えられる。物理アドレスは、
次の書き込みバッファエントリ152n+1 のアドレス部
分に記憶されたものであり、そしてデータは、シフタ1
64によりポート160への第2アクセスのために適切
なバイトレーンにシフトされてエントリ152n から不
整列書き込みラッチ162に保持されたものである。次
いで、リタイアプロセスの残り部分へ続く(プロセス2
98)。
【0152】上記のように、本発明のこの実施例による
マイクロプロセッサ10の例外処理機能は、制御ビット
DVの状態を使用して、エントリ152が例外検出後に
フラッシュされたか否かを判断する。しかしながら、不
整列書き込みの場合には、第2の書き込みエントリ15
n+1 は、たとえ書き込みが行われていてもその制御ビ
ットDVをセットしていない。というのは、手前の(プ
ログラム順序で)書き込みバッファエントリ152n
に有効なデータが含まれているからである。従って、不
整列書き込み処理機能と、ここに述べる例外処理との両
方が与えられた場合には、例外処理シーケンスは、エン
トリ152n に対して制御ビットMAW及び制御ビット
DVの両方をテストし、そして両方がセットされた場合
に、次の書き込みエントリ152n+1 (プログラム順序
で)もその制御ビットDVをセットしてエントリ152
n+1 がフラッシュされないようにすることを考慮しなけ
ればならない。
【0153】この構成の結果、不整列書き込みは、本発
明によるマイクロプロセッサ10により、コア20の動
作に影響を与えないやり方で処理され、しかも、非同期
で行われる厳密でないリタイアシーケンス中に付加的な
ラッチ及び整列ステップを含むだけである。
【0154】6.2 集合書き込み 本発明のこの実施例によるマイクロプロセッサ10によ
って実行することのできる別の形式の特殊な書き込み動
作は、次々の書き込み動作内に含まれたデータがメモリ
への単一書き込みアクセスに集合される集合書き込みで
ある。上記したように、各物理アドレスはバイト位置に
対応する。同時にデータバスに出される同じバイトブロ
ック内の1つ又は幾つかのバイトに対して一連の書き込
みを行うべき場合には、マイクロプロセッサ10は、デ
ータを適切なバイトレーンに保持して、次々の小さな書
き込みアクセスではなくてキャッシュポート160又は
メモリへの単一の書き込みアクセスを行うようにするこ
とができる。例えば、マイクロプロセッサ10のメモリ
データバスDATAは64ビット巾であるから、8バイ
トのデータを同時に書き込むことができ、本発明の集合
書き込み特徴によれば、これらの8バイトは、多数の書
き込みバッファエントリ152から以下に述べるように
集合することができる。
【0155】書き込みバッファ29の割り当てシーケン
スについて上記したように、併合制御ビットMRGは、
プログラム順序で直前のメモリ書き込み命令に対し既に
割り当てられている別の書き込みバッファエントリ15
2と相接するがオーバーラップしない物理メモリアドレ
スへの書き込みを実行している各書き込みバッファエン
トリ152に対し割り当て時にセットされる。相接し隣
接するという制約は、マイクロプロセッサ10のX86
適合性を考慮して本発明の好ましい実施例により実施さ
れるものであるが、集合書き込みは、同じバイトブロッ
クにおけるデータのメンバーシップが併合書き込みにと
って唯一必要な制約であるように他のアーキテクチャで
も実施できることが意図される。割り当て後に、併合可
能な書き込みバッファエントリ152へのデータの発生
が、上記した通常のやり方で続けられる。
【0156】図18を参照し、本発明の好ましい実施例
による集合書き込み動作を以下に詳細に説明する。判断
ステップ299は、リタイアされている現在書き込みバ
ッファエントリ152n の制御ビットMRGがセットさ
れたかどうかを判断し、もしそうでなければ、通常のリ
タイアシーケンスが続く(プロセス300)。現在エン
トリ152n の制御ビットMRGがセットされた場合に
は、プロセス302が行われ、エントリ152n のデー
タ部分が、適当なシフタ164x、164yにより、集
合書き込みを受け入れるための適切なバイトレーンへシ
フトされる。次いで、プロセス304が実行され、シフ
トされたデータは、手前の相接しているがオーバーラッ
プしない書き込みから集合書き込みラッチ165に既に
ロードされたデータを妨げることなく、適切なバイトレ
ーン位置において集合書き込みラッチ165に記憶され
る。
【0157】次いで、判断305は、次の書き込みバッ
ファエントリ152n+1 に質問し、その制御ビットMR
Gがセットされたかどうか判断する。もしそうであれ
ば、制御はプロセス302へ戻り、該次のエントリ15
n+1 に対するデータがシフトされそしてプロセス30
4において集合書き込みラッチ165へラッチされる。
次のエントリ152に対し制御ビットMRG又は制御ビ
ットAVがクリアされることによりそれ以上の併合可能
なエントリ152が存在しないことが示されると(判断
305において)、ラッチ165の内容が、適当な物理
アドレスと共にポート160へ与えられ、場合によって
キャッシュ60又はメインメモリ86への集合書き込み
動作が行われる。次いで、リタイアプロセスが前記のよ
うに続けられる(プロセス308)。
【0158】それ故、本発明の好ましい実施例によれ
ば、相接するメモリ位置への多数のアクセスに代わって
単一のメモリアクセスで書き込み動作を行えるようにし
たことにより、データをキャッシュ又はメモリへリタイ
アする効率が相当に改善された。
【0159】7.結論 本発明の好ましい実施例によれば、CPUコアとメモリ
システム(キャッシュメモリを含む)との間に、実行さ
れた命令シーケンスの結果をバッファするための書き込
みバッファが設けられた。これは、時間的に厳密でない
書き込み動作がバス又はメモリシステムを占有すること
によりキャッシュ及びメモリの読み取りを最小の待機状
態で高い優先順位で行うことができるようにする。
【0160】更に、本発明の好ましい実施例は、特定の
マイクロプロセッサアーキテクチャに対して特に有益な
多数の特徴を含む。このような特徴は、スーパースカラ
ープロセッサに対して書き込みバッファの2つの区分を
設けることと、バッファの分割にも係わりなくプログラ
ム順序でメモリにデータが書き込まれるよう確保する技
術とを含む。本発明の好ましい実施例の付加的な特徴
は、データ依存性及び例外のようなハザードの検出及び
処理と、予想が不首尾であった場合に書き込みバッファ
を迅速且つ正確にフラッシュして命令の推論的実行を行
うことを含む。
【0161】本発明をその好ましい実施例について説明
したが、当業者であれば、以上の説明及び添付図面か
ら、本発明の種々の変更や置き換えや修正が明らかとな
ろう。このような変更や修正は、本発明の範囲内に全て
包含されるもので、本発明は、特許請求の範囲のみによ
って限定されることを理解されたい。
【図面の簡単な説明】
【図1】マイクロプロセッサ全体を示すブロック図であ
る。
【図2】命令パイプライン段の一般化されたブロック図
である。
【図3】マイクロプロセッサを用いたプロセッサシステ
ムのブロック図である。
【図4】パイプライン段を通る命令の流れを示すタイミ
ング図である。
【図5】本発明の好ましい実施例による図1のマイクロ
プロセッサの書き込みバッファのブロック図である。
【図6】図5の書き込みバッファの1つのエントリの内
容を示す図である。
【図7】図1のパイプラインのアドレス計算段AC2の
間の書き込みバッファエントリの割り当てを示すフロー
チャートである。
【図8】図7の割り当てにおける物理アドレス比較プロ
セスを示す図である。
【図9】図1のマイクロプロセッサの一方のパイプライ
ンに対する書き込みバッファエントリと、図1のマイク
ロプロセッサの他方のパイプラインに対する書き込みバ
ッファエントリとのクロス依存性フィールドのアドレス
有効ビットを示すマップである。
【図10】本発明の好ましい実施例による書き込みバッ
ファエントリの発生を示すフローチャートである。
【図11】本発明の好ましい実施例による書き込みバッ
ファエントリのリタイアを示すフローチャートである。
【図12】本発明の好ましい実施例による依存性ハザー
ドの検出及び処理方法を示すフローチャートである。
【図13】本発明の好ましい実施例により推論的実行を
処理する方法を示すフローチャートである。
【図14】本発明の好ましい実施例により推論欠陥を処
理する方法を示すフローチャートである。
【図15】本発明の好ましい実施例による例外処理方法
を示すフローチャートである。
【図16】本発明の好ましい実施例により不整列書き込
み動作に対する書き込みバッファ位置を割り当てる方法
を示すフローチャートである。
【図17】本発明の好ましい実施例により不整列書き込
み動作に対する書き込みバッファ位置をリタイアするシ
ーケンスを示すフローチャートである。
【図18】本発明の好ましい実施例により集合書き込み
動作に対する書き込みバッファ位置をリタイアするシー
ケンスを示すフローチャートである。
【図19】本発明の好ましい実施例により図1のマイク
ロプロセッサに使用される非キャッシュ式読み取りのク
ロス依存性フィールドを示す図である。
【図20】本発明の好ましい実施例による非キャッシュ
式読み取り動作の割り当てシーケンスを示すフローチャ
ートである。
【図21】本発明の好ましい実施例による非キャッシュ
式読み取り動作のリタイアシーケンスを示すフローチャ
ートである。
【符号の説明】
10 マイクロプロセッサ 20 中央処理ユニット(CPU)コア 21 命令デコーダ 24 レジスタファイル 25 AC制御ユニット 26 マイクロコントロールユニット 28 パイプコントロールユニット 29 書き込みバッファ 30 プリフェッチバッファ 35 プリフェッチャ 40 分岐処理ユニット(BPU) 50 アドレス変換ユニット(ATU) 60 単一化キャッシュ 62 RAM 65 命令ラインキャッシュ 70 浮動小数点ユニット(FPU)
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 08/138790 (32)優先日 1993年10月18日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/139596 (32)優先日 1993年10月18日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/139598 (32)優先日 1993年10月18日 (33)優先権主張国 米国(US) (72)発明者 マルク エイ コートロマニ アメリカ合衆国 テキサス州 75002 ア レンウイロウ ブルック 710 (72)発明者 マーク ダブリュー ハーヴィン アメリカ合衆国 テキサス州 75252 ダ ラス156 プレストン ロード 17601 (72)発明者 ニタル パトワ アメリカ合衆国 テキサス州 75093 プ ラノ1517 オールド シェパード プレイ ス 5000

Claims (21)

    【特許請求の範囲】
  1. 【請求項1】 (a)一連の命令によって定められた動
    作に基づいてデータを処理するコア手段と、 (b)上記コア手段に接続された複数のエントリを有し
    ている書き込みバッファと、 (c)上記書き込みバッファ及びコア手段に接続された
    複数のメモリ位置を有しているキャッシュメモリと、 (d)上記コア手段、書き込みバッファ及びキャッシュ
    メモリに接続されたバスと、 (e)上記バスに接続され、命令が不整列書き込み命令
    であるかどうかを検出するための制御ロジックと、 (f)上記書き込みバッファに接続され、上記制御ロジ
    ックにより不整列書き込み命令として検出された複数の
    エントリの第1エントリの内容を、その第1エントリを
    キャッシュメモリへ付与する前に、シフトするためのシ
    フト手段と、 (g)上記シフト手段及びキャッシュメモリに接続され
    ていて、上記複数のエントリの第1エントリの上記シフ
    トされた内容をラッチし、そして上記不整列書き込みに
    対応するデータを第1及び第2の書き込みサイクルにお
    いてキャッシュメモリへ付与するための不整列書き込み
    ラッチとを備えたことを特徴とするマイクロプロセッ
    サ。
  2. 【請求項2】 上記書き込みバッファの複数のエントリ
    の各々は、命令が不整列書き込み命令であるという検出
    に応答して制御ロジックによってセットされる不整列書
    き込み制御ビットを含む請求項1に記載のマイクロプロ
    セッサ。
  3. 【請求項3】 上記制御ロジックは、更に、不整列書き
    込み命令の検出に応答して複数のエントリの全てにおけ
    る不整列書き込み制御ビットをセットする請求項2に記
    載のマイクロプロセッサ。
  4. 【請求項4】 上記制御ロジックは、更に、書き込み動
    作が不整列書き込みとして検出されるのに応答して複数
    のエントリの第1エントリに物理アドレスをロードし、
    そして更に、第2の書き込みサイクルのためのアドレス
    として働くように複数のエントリの第1エントリに記憶
    されたものより上位の物理アドレスを複数のエントリの
    第2エントリにロードする請求項3に記載のマイクロプ
    ロセッサ。
  5. 【請求項5】 パイプライン式マイクロプロセッサにお
    いて、一連の命令に基づき中央処理ユニットコアにより
    実行された動作の結果をバッファする方法であって、こ
    のバッファ動作を、複数のエントリを有する書き込みバ
    ッファにおいてキャッシュメモリへの書き込みの前に行
    うような方法において、 (a)命令が不整列書き込み動作であるかどうかを識別
    し、 (b)上記段階(a)で識別された不整列書き込み動作
    の結果を書き込むべき第1部分の第1物理メモリアドレ
    スを決定し、 (c)上記第1物理メモリアドレスを第1書き込みバッ
    ファエントリに記憶し、 (d)上記段階(a)で識別された不整列書き込み動作
    の結果を書き込むべき第2部分の第2物理メモリアドレ
    スを決定し、 (e)上記段階(a)の不整列書き込み動作を実行し、 (f)上記段階(e)からの動作結果の第1及び第2部
    分を第1書き込みバッファエントリに記憶し、 (g)上記動作結果の第1及び第2部分を第1書き込み
    バッファエントリからラッチへとラッチし、 (h)上記第1物理アドレス及び上記動作結果の第1の
    ラッチされた部分を第1書き込みサイクルにおいてキャ
    ッシュメモリへ付与し、そして (i)上記第2物理アドレス及び上記動作結果の第2の
    ラッチされた部分を第2書き込みサイクルにおいてキャ
    ッシュメモリへ付与する、という段階を備えたことを特
    徴とする方法。
  6. 【請求項6】 上記第1物理アドレスは、第2物理アド
    レスよりも下位のアドレスに対応する請求項5に記載の
    方法。
  7. 【請求項7】 上記段階(g)の前に、上記命令結果の
    第1及び第2部分をシフトして、命令結果の第1部分が
    命令結果の第2部分よりも上位のバイト位置に存在する
    ようにする段階(j)を更に備えた請求項6に記載の方
    法。
  8. 【請求項8】 上記段階(a)に応答して、第1書き込
    みバッファエントリの不整列書き込み制御ビットをセッ
    トし、書き込み動作が不整列書き込みとなることを指示
    する段階(k)を更に備えた請求項5に記載の方法。
  9. 【請求項9】 上記段階(g)は、第1の書き込みバッ
    ファエントリにおいて不整列書き込み制御ビットがセッ
    トされるのに応答して実行される請求項8に記載の方
    法。
  10. 【請求項10】 (a)第1形式のプログラム命令によ
    り定められた動作に基づいてデータを処理するための中
    央処理手段と、 (b)第2形式のプログラム命令により定められた動作
    に基づいてデータを処理するための二次処理手段であっ
    て、上記中央処理手段によって与えられるものよりもビ
    ット巾が大きいデータワードを有する結果を与えるよう
    な二次処理手段と、 (c)上記中央処理手段に接続された複数のバッファエ
    ントリを有する書き込みバッファであって、各エントリ
    が、動作結果を受け取るためのデータ部分と、その結果
    が記憶される物理メモリアドレスを記憶するためのアド
    レス部分とを含んでいるような書き込みバッファと、 (d)上記書き込みバッファに接続されてそこからデー
    タを受け取ると共に、上記中央処理手段に接続されてそ
    こにデータを与えるような複数のメモリ位置を有するキ
    ャッシュメモリと、 (e)上記中央処理手段、二次処理手段、書き込みバッ
    ファ及びキャッシュメモリに接続されたバスと、 (f)バッファエントリに記憶された物理アドレスにお
    いてメモリに書き込まれる上記二次処理手段の結果を記
    憶するための二次データラッチ手段と、 (g)書き込みバッファエントリのデータ部分又は二次
    データラッチ手段の内容をキャッシュメモリへルート指
    定するためのルート指定手段とを備えたことを特徴とす
    るマイクロプロセッサ。
  11. 【請求項11】 マイクロプロセッサの中央処理ユニッ
    ト及び二次処理ユニットによって実行されたデータ処理
    動作の結果を、マイクロプロセッサのキャッシュメモリ
    に記憶する前に、データ部分及びアドレス部分を各々も
    つ複数の書き込みバッファエントリを有した書き込みバ
    ッファを使用することによりバッファするための方法で
    あって、二次処理ユニットの結果は、書き込みバッファ
    エントリのデータ部分よりビット巾の大きなデータワー
    ドに対応するものであり、上記方法は、 (a)第1命令の結果を記憶するための第1メモリアド
    レスを決定し、 (b)上記段階(a)で決定された第1メモリアドレス
    を第1書き込みバッファエントリのアドレス部分に記憶
    し、 (c)上記中央処理ユニット又は二次処理ユニットのい
    ずれかで第1命令を実行し、 (d)上記段階(c)で二次処理ユニットが第1命令を
    実行するのに応答して上記複数の書き込みバッファエン
    トリのデータ部分よりも広いビット巾を有する第2デー
    タラッチに結果を記憶し、 (e)上記段階(c)で中央処理ユニットが第1命令を
    実行するのに応答して上記第1書き込みバッファエント
    リのデータ部分に第1命令の結果を記憶し、 (f)第1命令が二次処理ユニットによって実行された
    場合には二次データラッチの内容を選択し、又は第1命
    令が中央処理ユニットによって実行された場合には第1
    書き込みバッファエントリのデータ部分の内容を選択す
    ることにより、書き込みバッファから第1命令の結果を
    検索してキャッシュメモリに記憶し、そして (g)上記段階(f)で選択された内容を、第1書き込
    みバッファエントリに記憶された第1物理アドレスと組
    み合わせてキャッシュメモリへ付与する、という段階を
    備えたことを特徴とする方法。
  12. 【請求項12】 (a)プログラム順序で実行されるべ
    き命令によって定められた動作に基づいてデータを処理
    するための中央処理手段と、 (b)第1及び第2区分に配列された複数のバッファエ
    ントリを含み、中央処理手段に接続された書き込みバッ
    ファと、 (c)上記書き込みバッファ及び中央処理手段に接続さ
    れた複数のメモリ位置を有するキャッシュメモリと、 (d)上記中央処理手段、書き込みバッファ及びキャッ
    シュメモリに接続されたバスと、 (e)上記書き込みバッファに記憶された命令結果がキ
    ャッシュメモリにプログラム順序で与えられるように書
    き込みバッファを制御するための制御論理手段とを備え
    たことを特徴とするマイクロプロセッサ。
  13. 【請求項13】 マイクロプロセッサにおいて、プログ
    ラム順序で一連の命令に基づいて中央処理ユニットコア
    により実行されたデータ処理動作の結果を、マイクロプ
    ロセッサのキャッシュメモリに記憶する前に、バッファ
    するための方法であって、 (a)複数の命令に対し、命令結果を書き込むべき物理
    アドレスを決定し、 (b)上記段階(a)で決定された各物理アドレスに対
    し、その決定された物理アドレスを、第1及び第2区分
    に配列された複数の書き込みバッファエントリの1つに
    記憶し、 (c)命令を実行し、 (d)その結果を、命令に対する物理アドレスが記憶さ
    れた書き込みバッファエントリへ記憶し、そして (e)上記段階(d)の書き込みバッファエントリから
    の結果をプログラム順序で検索して、上記記憶されたメ
    モリアドレスに関連した位置においてキャッシュメモリ
    に記憶する、という段階を備えたことを特徴とする方
    法。
  14. 【請求項14】 マイクロプロセッサにおいて、プログ
    ラム順序で一連の命令に基づいて中央処理ユニットコア
    により実行されたデータ処理動作の結果をバッファする
    ための方法であって、上記命令は、メモリへの書き込み
    と、メモリからの非キャッシュ式読み取りとを含むもの
    であり、そして上記バッファ動作は、マイクロプロセッ
    サのキャッシュメモリへの記憶の前に行われ、上記方法
    は、 (a)命令結果をメモリに書き込むべきところの物理ア
    ドレスを決定し、 (b)上記段階(a)で決定された物理アドレスを複数
    の書き込みバッファエントリの1つに記憶し、そして物
    理アドレスが記憶された書き込みバッファエントリにお
    いてアドレス有効制御ビットをセットし、 (c)各々の非キャッシュ式読み取り命令に対して非キ
    ャッシュ式読み取りをアクセスすべきところのメモリ位
    置の物理アドレスを決定し、 (d)書き込みバッファエントリの1つに各々対応する
    複数のビット位置を有する非キャッシュ式読み取り依存
    性フィールドに、その対応する書き込みバッファエント
    リに対するアドレス有効制御ビットの状態をロードし、 (e)一連の命令を実行し、 (f)その結果を、命令に対する物理アドレスが記憶さ
    れた書き込みバッファエントリに記憶し、 (g)書き込みバッファエントリから上記記憶された結
    果をプログラム順序で検索して、上記記憶されたメモリ
    アドレスに関連した位置においてキャッシュメモリに記
    憶し、そしてその検索された書き込みバッファエントリ
    に対応する非キャッシュ式読み取り依存性フィールドの
    ビットをクリアし、そして (h)非キャッシュ式読み取り依存性フィールドがクリ
    アされるのに応答して非キャッシュ式読み取りを実行す
    る、という段階を備えたことを特徴とする方法。
  15. 【請求項15】 (a)一連の命令により定められた動
    作に基づいてデータを処理するための中央処理手段と、 (b)上記中央処理手段に接続された複数のバッファエ
    ントリを有する書き込みバッファと、 (c)上記書き込みバッファ及び中央処理手段に接続さ
    れた複数のメモリ位置を有するキャッシュメモリと、 (d)上記中央処理手段、書き込みバッファ及びキャッ
    シュメモリに接続されたバスと、 (e)第1及び第2の命令が同じバイトグループのアド
    レスへのメモリ書き込みを含むことを検出するための制
    御ロジック手段と、 (f)上記制御ロジック手段に応答して第1及び第2の
    命令のデータ部分を記憶し、そしてその内容を単一の書
    き込みサイクルでメモリキャッシュへ付与するための集
    合書き込みラッチ手段と、 を備えたこと得お特徴とするマイクロプロセッサ。
  16. 【請求項16】 パイプライン式マイクロプロセッサに
    おいて、一連の命令に基づき中央処理ユニットコアによ
    り実行されたデータ処理動作の結果をバッファする方法
    であって、このバッファ動作は、複数の書き込みバッフ
    ァエントリを有する書き込みバッファにおいてマイクロ
    プロセッサのキャッシュメモリへの書き込みの前に行
    い、そしてデータは、バイトグループにおいて書き込み
    バッファからキャッシュメモリへ書き込みサイクル中に
    通信され、上記方法は、 (a)第1及び第2の命令が同じバイトグループのアド
    レスへのメモリ書き込みを含むことを検出し、 (b)命令の結果をメモリに書き込むべきところの第1
    及び第2の物理メモリアドレスを決定し、 (c)第1及び第2の物理アドレスを各々第1及び第2
    の書き込みバッファエントリに記憶し、 (d)第1及び第2の命令を実行し、 (e)第1及び第2の命令の結果を各々第1及び第2の
    書き込みバッファエントリに記憶し、 (f)上記段階(e)からの結果をラッチし、そして (g)上記第1及び第2の物理アドレスのバイトグルー
    プに対応する物理アドレス、及び上記段階(f)でラッ
    チされた結果を書き込みサイクル中にキャッシュメモリ
    へ与える、という段階を備えたことを特徴とする方法。
  17. 【請求項17】 (a)第1及び第2のプログラム命令
    のライトバック段階及びアドレス計算段階が各々実質的
    に同時に処理されるようにプログラム命令により定めら
    れた動作に基づいてデータを処理するための中央処理パ
    イプライン手段と、 (b)上記中央処理パイプライン手段に接続された複数
    のバッファエントリを含む書き込みバッファと、 (c)上記書き込みバッファ及び中央処理手段に接続さ
    れた複数のメモリ位置を有するキャッシュメモリと、 (d)上記中央処理パイプライン手段、書き込みバッフ
    ァ及びキャッシュメモリに接続されたバスと、 (e)上記アドレス計算段階において第2命令によって
    要求された読み取り動作の物理アドレスを、複数のバッ
    ファエントリの各々に関連したアドレスと比較して、第
    1と第2の命令間のリード・アフタ・ライトデータ依存
    性を検出するための制御ロジック手段とを備えたことを
    特徴とするマイクロプロセッサ。
  18. 【請求項18】 マイクロプロセッサの中央処理ユニッ
    トコアにより実行されたデータ処理動作の結果を、マイ
    クロプロセッサのキャッシュメモリへ記憶する前にバッ
    ファするための方法において、 (a)第1命令の結果を記憶するための第1メモリアド
    レスを決定し、 (b)上記段階(a)で決定された第1メモリアドレス
    を複数の書き込みバッファエントリの第1エントリに記
    憶し、 (c)第2命令に対してデータを読み取るべきところの
    第2メモリアドレスを決定し、この第2命令は、プログ
    ラム順序において第1命令よりも後であり、 (d)上記段階(c)で決定された第2メモリアドレス
    を、複数の書き込みバッファエントリの第1エントリに
    記憶された第1メモリアドレスと比較して一致を検出
    し、 (e)第1命令を実行して第1の結果を生じさせ、 (f)上記第1の結果を第1書き込みバッファエントリ
    に記憶し、そして (g)上記第1書き込みバッファエントリから第1の結
    果を検索して、第1メモリアドレスに関連した位置にお
    いてキャッシュメモリに記憶する、という段階を備えた
    ことを特徴とする方法。
  19. 【請求項19】 (a)プログラム順序で実行するため
    の命令により定められた動作に基づいてデータを処理す
    るための中央処理手段を備え、上記命令の少なくとも1
    つは、条件分岐型のものであり、 (b)上記中央処理ユニットのコアに接続され、命令の
    結果に対応するデータをそこから受け取るような複数の
    バッファエントリを含む書き込みバッファを更に備え、
    複数のバッファエントリの各々は、少なくとも1つの推
    論的制御ビットを含み、このビットは、これがセットさ
    れたときは、そのバッファエントリに書き込まれるべき
    データが条件分岐型の命令の後のプログラムシーケンス
    において予想される分岐で命令を実行することにより生
    じたものであることを指示し、 (c)上記書き込みバッファ及び中央処理手段に接続さ
    れた複数のメモリ位置を有するキャッシュメモリを更に
    備え、 (d)上記中央処理手段、書き込みバッファ及びキャッ
    シュメモリに接続されたバスを更に備え、そして (e)上記推論的制御ビットがセットされない場合だけ
    各書き込みバッファエントリがキャッシュメモリにデー
    タを与えるように書き込みバッファによるキャッシュメ
    モリへのデータの付与を制御するための制御ロジックを
    更に備えたことを特徴とするマイクロプロセッサ。
  20. 【請求項20】 少なくとも1つの条件分岐命令を含む
    一連の命令に基づいてパイプラインマイクロプロセッサ
    の中央処理ユニットコアにより実行されたデータ処理動
    作の結果をバッファする方法であって、このバッファ動
    作を、複数の書き込みバッファエントリを有する書き込
    みバッファにおいてマイクロプロセッサのキャッシュメ
    モリに記憶する前に行うような方法において、 (a)条件分岐命令を検出し、 (b)上記段階(a)が基づくところの条件の状態を決
    定する前に実行されるべき第1の一連の命令を予想し、 (c)メモリへの書き込みに対応する上記段階(b)の
    命令に対し、結果をメモリに書き込むべきところの第1
    の物理メモリアドレスを決定し、 (d)上記第1の物理アドレスを第1書き込みバッファ
    エントリに記憶し、 (e)上記段階(b)で予想されたメモリへの書き込み
    命令を実行し、 (f)上記段階(e)の結果を第1書き込みバッファエ
    ントリに記憶し、 (g)条件分岐命令が基づくところの条件を決定し、 (h)上記段階(g)に応答して上記段階(b)が正し
    かったことを指示し、そして (i)上記第1書き込みバッファエントリの結果を検索
    して、メモリに記憶する、という段階を備えたことを特
    徴とする方法。
  21. 【請求項21】 一連の命令に基づいてデータ処理動作
    を実行するための中央処理ユニットコアを有するパイプ
    ライン式マイクロプロセッサにおいて例外条件を取り扱
    う方法であって、上記マイクロプロセッサは、上記中央
    処理ユニットコアにより実行された命令の結果を、キャ
    ッシュメモリに記憶する前にバッファするために、複数
    の書き込みバッファエントリを有する書き込みバッファ
    を備えており、上記方法は、 (a)第1命令の結果を記憶するための第1メモリアド
    レスを決定し、 (b)第1メモリアドレスを第1書き込みバッファエン
    トリに記憶し、 (c)第1命令を実行する前に例外条件を検出し、そし
    て (d)上記段階(c)に応答して、第1書き込みバッフ
    ァエントリを無効化するという段階を備えたことを特徴
    とする方法。
JP25198994A 1993-10-18 1994-10-18 スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ Expired - Lifetime JP3678443B2 (ja)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
US13959893A 1993-10-18 1993-10-18
US13865293A 1993-10-18 1993-10-18
US08/138790 1993-10-18
US08/138654 1993-10-18
US08/138,651 US5740398A (en) 1993-10-18 1993-10-18 Program order sequencing of data in a microprocessor with write buffer
US08/139596 1993-10-18
US08/138,654 US5584009A (en) 1993-10-18 1993-10-18 System and method of retiring store data from a write buffer
US08/138,790 US6219773B1 (en) 1993-10-18 1993-10-18 System and method of retiring misaligned write operands from a write buffer
US08/138651 1993-10-18
US08/138652 1993-10-18
US08/139,596 US5471598A (en) 1993-10-18 1993-10-18 Data dependency detection and handling in a microprocessor with write buffer
US08/139598 1993-10-18

Publications (2)

Publication Number Publication Date
JPH07152566A true JPH07152566A (ja) 1995-06-16
JP3678443B2 JP3678443B2 (ja) 2005-08-03

Family

ID=27558222

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25198994A Expired - Lifetime JP3678443B2 (ja) 1993-10-18 1994-10-18 スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ

Country Status (3)

Country Link
EP (1) EP0651331B1 (ja)
JP (1) JP3678443B2 (ja)
DE (1) DE69429612T2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008065718A (ja) * 2006-09-09 2008-03-21 Yamaha Corp デジタル信号処理装置
JP2008530713A (ja) * 2005-02-18 2008-08-07 クゥアルコム・インコーポレイテッド 分岐予測ミスを訂正するシステムおよび方法
JP2009512933A (ja) * 2005-10-19 2009-03-26 エヌエックスピー ビー ヴィ アクセス性の高いストア帯域幅を備えたキャッシュ
JP2010191638A (ja) * 2009-02-17 2010-09-02 Fujitsu Semiconductor Ltd キャッシュ装置
JP2012203544A (ja) * 2011-03-24 2012-10-22 Nec Corp ベクトル処理装置、ベクトル処理方法、及び、プログラム

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0779577B1 (en) 1993-10-18 2002-05-22 VIA-Cyrix, Inc. Micoprocessor pipe control and register translation
US5758178A (en) * 1996-03-01 1998-05-26 Hewlett-Packard Company Miss tracking system and method
US6199152B1 (en) 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
JP2933027B2 (ja) * 1996-08-30 1999-08-09 日本電気株式会社 複数命令並列発行/実行管理装置
US6011908A (en) * 1996-12-23 2000-01-04 Transmeta Corporation Gated store buffer for an advanced microprocessor
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
US6266747B1 (en) * 1998-10-30 2001-07-24 Telefonaktiebolaget Lm Ericsson (Publ) Method for writing data into data storage units
EP1050812A1 (en) 1999-05-03 2000-11-08 STMicroelectronics SA Storage of data in a computer memory
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
US6968469B1 (en) 2000-06-16 2005-11-22 Transmeta Corporation System and method for preserving internal processor context when the processor is powered down and restoring the internal processor context when processor is restored
US7376817B2 (en) 2005-08-10 2008-05-20 P.A. Semi, Inc. Partial load/store forward prediction
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
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
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

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0442690A3 (en) * 1990-02-13 1992-11-19 Hewlett-Packard Company Data cache store buffer for high performance computer

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008530713A (ja) * 2005-02-18 2008-08-07 クゥアルコム・インコーポレイテッド 分岐予測ミスを訂正するシステムおよび方法
JP4763727B2 (ja) * 2005-02-18 2011-08-31 クゥアルコム・インコーポレイテッド 分岐予測ミスを訂正するシステムおよび方法
JP2009512933A (ja) * 2005-10-19 2009-03-26 エヌエックスピー ビー ヴィ アクセス性の高いストア帯域幅を備えたキャッシュ
JP2008065718A (ja) * 2006-09-09 2008-03-21 Yamaha Corp デジタル信号処理装置
JP2010191638A (ja) * 2009-02-17 2010-09-02 Fujitsu Semiconductor Ltd キャッシュ装置
JP2012203544A (ja) * 2011-03-24 2012-10-22 Nec Corp ベクトル処理装置、ベクトル処理方法、及び、プログラム

Also Published As

Publication number Publication date
DE69429612T2 (de) 2002-09-12
DE69429612D1 (de) 2002-02-14
JP3678443B2 (ja) 2005-08-03
EP0651331B1 (en) 2002-01-09
EP0651331A1 (en) 1995-05-03

Similar Documents

Publication Publication Date Title
US5584009A (en) System and method of retiring store data from a write buffer
US5471598A (en) Data dependency detection and handling in a microprocessor with write buffer
US6219773B1 (en) System and method of retiring misaligned write operands from a write buffer
JP3678443B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ
US6138230A (en) Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline
US5630149A (en) Pipelined processor with register renaming hardware to accommodate multiple size registers
EP0779577B1 (en) Micoprocessor pipe control and register translation
US6088788A (en) Background completion of instruction and associated fetch request in a multithread processor
US5835951A (en) Branch processing unit with target cache read prioritization protocol for handling multiple hits
US5692168A (en) Prefetch buffer using flow control bit to identify changes of flow within the code stream
US5706491A (en) Branch processing unit with a return stack including repair using pointers from different pipe stages
JP3195378B2 (ja) 高性能プロセッサ用の分岐予測
US5740398A (en) Program order sequencing of data in a microprocessor with write buffer
US5615402A (en) Unified write buffer having information identifying whether the address belongs to a first write operand or a second write operand having an extra wide latch
US6073231A (en) Pipelined processor with microcontrol of register translation hardware
US5937178A (en) Register file for registers with multiple addressable sizes using read-modify-write for register file update
JPH0695964A (ja) 多重プロセッサ・システム用のエラー遷移モード
US5732243A (en) Branch processing unit with target cache using low/high banking to support split prefetching
JPH06103167A (ja) 多重プロセッサ・システムにおけるインヴァリデート及び戻りデータのための組合せキュー
US5835949A (en) Method of identifying and self-modifying code
US5596735A (en) Circuit and method for addressing segment descriptor tables
JPH06119243A (ja) 内部プロセッサレジスターコマンドのi/o空間アドレスへの変換
JPH0675747A (ja) 浮動小数点装置を有する高性能多重プロセッサ
JPH0695963A (ja) 高性能プロセッサ用のバス・プロトコール
US5732253A (en) Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040921

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20041221

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20041227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050310

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050411

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050510

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090520

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100520

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110520

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120520

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130520

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130520

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term