JPH06259253A - データプロセッサおよびその動作方法 - Google Patents

データプロセッサおよびその動作方法

Info

Publication number
JPH06259253A
JPH06259253A JP6054845A JP5484594A JPH06259253A JP H06259253 A JPH06259253 A JP H06259253A JP 6054845 A JP6054845 A JP 6054845A JP 5484594 A JP5484594 A JP 5484594A JP H06259253 A JPH06259253 A JP H06259253A
Authority
JP
Japan
Prior art keywords
result
instruction
tag
bit
rename buffer
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.)
Pending
Application number
JP6054845A
Other languages
English (en)
Inventor
Marvin A Denman Jr
マービン・エイ・デンマン・ジュニア
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.)
Motorola Solutions Inc
Original Assignee
Motorola 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 Motorola Inc filed Critical Motorola Inc
Publication of JPH06259253A publication Critical patent/JPH06259253A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

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)【要約】 【目的】 複数の実行ユニットを有するデータプロセッ
サのスループットを増大しかつ命令の滞りを低減する。 【構成】 データプロセッサは複数の実行ユニット(1
2)、該実行ユニットの少なくとも1つに結合されたリ
ネームバッファ(14)、および前記少なくとも1つの
実行ユニットとリネームバッファとに結合された複数の
アーキテクチャレジスタ(16)を有する。リネームバ
ッファは周期的に結果を受信しかつ格納し、周期的にオ
ペランドに対する要求を受信する。各々の受信された結
果およびオペランドはアーキテクチャレジスタに関連す
る。リネームバッファは周期的に1組の受信結果の1つ
を実行ユニットに送る。前記組の各受信結果は同じアー
キテクチャレジスタに関連する。リネームバッファはど
のエントリが同じアーキテクチャレジスタを更新するも
ののうち最も最近に割当てられたかを決定する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は一般的にはデジタル計算
システムに関し、かつより特定的には順序外の(out
of order)命令実行または完了が可能なデー
タプロセッサに関する。
【0002】
【従来の技術】数多くのデータプロセッサのアーキテク
チャは今や一度に1つより多くの命令を同時に実行する
ために複数の実行ユニットを導入している。そのような
アーキテクチャは単一の汎用目的の実行ユニットを有す
るあるいは第2の引続く命令の開始の前に第1の命令の
完了まで待機する他のシステムと比較してデータ処理シ
ステムのスループットを大幅に増大することができる。
例えば、データプロセッサは整数実行ユニット、浮動小
数点実行ユニット、データ実行ユニットおよび命令実行
ユニットを持つことができる。これらの実行ユニットの
各々は数個の命令を行なうことができるのみである。し
かしながら、集合的に、これらは汎用目的のデータプロ
セッサによって必要とされる完全な1組の命令を行なう
ことができる。さらに、これら4つの実行ユニットは種
々の要因に応じて同時に4つまでの別個の命令を行なう
ことができる。
【0003】複数の実行ユニットを導入するデータプロ
セッサはさらに命令結果をアーキテクチャ・レジスタに
「ライトバック(writing back)」する場
合にそれらが従うプロトコルによってさらに分類でき
る。ライトバックはデータプロセッサが完了した命令の
結果をアーキテクチャ・レジスタに書く場合に従う手順
である。データプロセッサは「命令順に(in−ins
truction−order)」または「命令順序外
で(out−of−instruction−orde
r)」ライトバックすることができる。ライトバックの
プロトコルの選択はハードウェアおよびソフトウェアの
複雑さの間の妥協である。「命令順の」データプロセッ
サを、例えば、割込みおよび例外を処理するようプログ
ラムすることは「命令の順序外の」データプロセッサが
同じ事象を処理するようプログラムするよりは簡単であ
る。逆に、「命令の順序外の」データプロセッサを設計
することは「命令順の」データプロセッサを設計するよ
りも簡単である。
【0004】「命令順の」データプロセッサは命令が元
の命令の流れにおいて現われる順序で命令の結果により
アーキテクチャ・レジスタを更新するものである。「命
令順の」データプロセッサはライトバックの前にその結
果を一時的に記憶するためにリネーム(rename)
バッファを使用することができるが、それは前記結果は
必ずしも元の命令順で完了しないかもしれないからであ
る。命令は順次外で(out of order)完了
するかもしれず、それは該命令が順序外で始まるため、
異なるタイプの命令が完了するのに異なる量の時間を必
要とするため、あるいは双方のためである。動作におい
ては、前記第1の結果はいったん前記第1の命令が完了
するとリネームバッファから適切なアーキテクチャ・レ
ジスタに書き込まれる。前記第2の結果はいったん前記
第2の命令が完了しかつ前記第1の命令がライトバック
されるなどに応じてリネームバッファから第2のアーキ
テクチャ・レジスタに書き込まれる。
【0005】「命令の順序外の」データプロセッサは命
令が種々の実行ユニットにおいて完了する順序で命令の
結果によってアーキテクチャ・レジスタを更新するもの
である。いったん実行ユニットが命令を完了すると、そ
れは命令の順序を何ら考慮することなくその結果を直接
アーキテクチャ・レジスタに書き込む。したがって、命
令の順序外のデータプロセッサのライトバック順序は下
の命令の順序と一致するかもしれずあるいは一致しない
かもしれない。
【0006】
【発明が解決しようとする課題】知られた命令順のデー
タプロセッサは1群の命令の間で存在し得る多数のデー
タ依存性を考慮するために複雑さが増大しあるいは性能
が低下している。これらのデータ依存性はもし複数の命
令が同時に実行されるべきである場合には考慮されなけ
ればならない。例えば、実行ユニットは前の命令によっ
てこれから決定されなければならないアーキテクチャ・
レジスタからのデータを必要とするかもしれない。同じ
アーキテクチャ・レジスタユニットは2つあるいはそれ
以上前の命令によって修正されるかもしれない。第1の
場合には、実行ユニットはそのデータが有効になる前に
前の命令の完了まで待たなければならない。第2の場合
には、実行ユニットはそのデータが有効になる前に前記
第2の前の命令が完了するのを待たなければならない。
しかしながら、実行ユニットは前記2つの前の命令のう
ちの第1のものが完了した直後にアーキテクチャ・レジ
スタの値を誤って読取ってはならない。
【0007】本発明の目的は、データプロセッサにおい
て、同じアーキテクチャ・レジスタに向けられた結果を
管理すると共に適切な値のみを送ることができるように
することにある。
【0008】本発明の他の目的は、データプロセッサの
スループットを増大しかつ命令の立往生(stall
s)を低減することにある。
【0009】
【課題を解決するための手段および作用】本発明によれ
ば、データプロセッサが提供され、該データプロセッサ
は複数の実行ユニット、少なくとも1つの実行ユニット
に結合された複数のアーキテクチャ・レジスタ、そして
少なくとも1つの前記実行ユニットにかつ前記複数のア
ーキテクチャ・レジスタに結合されたリネームバッファ
を有する。前記実行ユニットはオペランドを必要とする
少なくとも1つの命令を有しかつ結果を発生する少なく
とも1つの命令を有する命令セットを実行する。前記ア
ーキテクチャ・レジスタは周期的に前記実行ユニットの
結果を受け取る。前記リネームバッファもまた前記結果
を周期的に受け取りかつ記憶し、そして周期的にオペラ
ンドに対する要求を受信する。各々の受信された結果お
よびオペランドはアーキテクチャ・レジスタに関連して
いる。前記リネームバッファは周期的に1組の受信した
結果の1つを実行ユニットに送る。前記組の各々の受信
された結果は同じアーキテクチャ・レジスタに関連す
る。
【0010】さらに、本発明によれば、データプロセッ
サを動作させる方法が提供され、該方法は第1の時間に
第1のメモリエレメントに第1のタグおよび第1の第1
に最も最近に割当てられたビット(first−mos
t−recently−allocated bit)
を記憶する段階、および第2の引続く時間に第2のメモ
リエレメントに第2のタグおよび第2の第1に最も最近
に割当てられたビットを記憶する段階を有する。前記第
1のタグおよび第1の第1に最も最近に割当てられたビ
ットは複数の組の内の第1の組として記憶される。前記
第2のタグおよび第2の第1に最も最近に割当てられた
ビットは複数の組の内の第2の組の複数の組として記憶
される。前記第1および第2のメモリエレメントは複数
のメモリエレメントのうちのあるものである。前記第1
および第2のタグは、それぞれ、第1および第2のメモ
リセルのアドレスを表わしかつ、それぞれ、第1および
第2の結果に関連する。前記第1および第2の第1に最
も最近に割当てられたビットは、それぞれ、前記第1お
よび第2の結果に関連しかつ始めは第1の論理状態をと
る。前記第2の時間に、前記第1に最も最近に割当てら
れたビットのサブセットに第2の論理状態が記憶され
る。前記サブセットは前記第2のタグと論理的に等価な
タグを備えたメモリエレメントを有する。
【0011】
【実施例】本発明の特徴および利点は添付の図面と共に
以下の詳細な説明を参照することによりさらに明瞭に理
解される。図面においては、同じ参照数字は同じおよび
対応する部分を示している。
【0012】図1は、本発明にしたがって構成されたデ
ータプロセッサ10のブロック図を示す。データプロセ
ッサ10は複数の実行ユニット12(以下の説明を簡単
にするため1つだけが示されている)、リネームバッフ
ァ14、アーキテクチャ・レジスタファイル16、フォ
ワード回路(forwarding circuit)
18、および前記各ブロックをいっしょに接続する種々
のバスを有する。アーキテクチャ・レジスタファイル1
6は複数のアーキテクチャ・レジスタ(図示せず)を有
し、該アーキテクチャ・レジスタには命令の結果が周期
的に書き込まれかつそこからオペランドが周期的に送ら
れる。リネームバッファ14、実行ユニット12または
これら2つの組合わせは周期的にこれらの結果をアーキ
テクチャ・レジスタファイル16に書き込む。以下に説
明するように、リネームバッファ14もまたオペランド
を実行ユニット12に送る。
【0013】フォワード回路18はオペランドおよびデ
ータ有効信号(data valid signal)
をオペランドバス20を介して実行ユニット12に送
る。リネームバッファ14はタグバス22を介してリネ
ームタグを実行ユニット12に送る。実行ユニット12
は結果バス24上に結果を発生しかつ結果/要求タグを
結果/要求タグバス26上に発生する。実行ユニット1
2は前記結果および結果/要求タグの双方をリネームバ
ッファ14に送る。リネームバッファ14はオペランド
およびデータ有効信号をオペランドバス/RB28によ
って送る。リネームバッファ14はまたライトバックバ
ス29を介して所定のプロトコルにしたがってそのオペ
ランドをアーキテクチャ・レジスタファイル16に送
る。リネームバッファ14は典型的には元の命令ストリ
ームの順で現われるのと同じ順序でアーキテクチャ・レ
ジスタファイル16をライトバックしあるいは更新す
る。リネームバッファ14は「ヒット/ミス(Hit/
Miss)」信号30によって要求されたオペランドを
含むかあるいは含まないかを表示する。リネームバッフ
ァ14はそのオペランド、データ有効信号およびヒット
/ミス信号をフォワード回路18に送る。リネームバッ
ファ14はフォワード結果/要求タグバス32によって
オペランド要求をアーキテクチャ・レジスタファイル1
6に送る。アーキテクチャ・レジスタファイル16はオ
ペランドおよびデータ有効信号をオペランドバス/AR
F34によってフォワード回路18に送る。
【0014】開示された発明によれば、リネームバッフ
ァ14はアーキテクチャ・レジスタファイル16内の同
じアーキテクチャ・レジスタに向けられた1組の結果を
含むことができる。リネームバッファ14は実行ユニッ
ト12が前記宛先のアーキテクチャ・レジスタからオペ
ランドを要求したとき前記1組の結果の中のどの結果が
実行ユニット12に送られるべきかを決定することがで
きる。この組(set)の選択能力はデータプロセッサ
10が「立往生(stalling)」の前にあるいは
命令発行を停止する前により多くの命令を発行できるよ
うにする。知られたデータプロセッサは来たるべき命令
が該命令がすでに発行されたが終了していない命令の目
標となっているアーキテクチャ・レジスタにその結果を
ライトバックすることを示している場合は立往生するこ
とになる。開示された発明によれば、データプロセッサ
はそのリネームバッファが満杯になるまで命令を発行し
続けることができる。今日では、命令ストリームの宛先
レジスタのシーケンスを制限するよりはリネームバッフ
ァを拡大することの方が容易である。命令ストリームの
宛先レジスタのシーケンスは、例えば、ソフトウェアコ
ンパイラによって制限される。
【0015】図1は大幅に単純化されかつデータプロセ
ッサ10の一部分のみを示すことが容易に理解される。
技術的に知られておりかつ開示された発明と直接関与し
ない部分は本発明をより明瞭に説明するために省略され
ている。
【0016】データプロセッサ10は複数の実行ユニッ
トに複数の命令を送ることにより複数の命令を同時に実
行する種類のデータプロセッサの例である。しかしなが
ら、データプロセッサ10はその実行ユニットによって
生成される種々の結果がその結果を発生した命令が元の
命令ストリームにおいて現われた順序に対応する順序で
アーキテクチャ・レジスタにライトバックされることを
要求する。例えば、前記命令ストリームにおける第1の
命令はいずれか他の命令がそうする前にアーキテクチャ
・レジスタファイル16のその宛先とするレジスタにラ
イトバックされなければならない。前記命令ストリーム
における第2の命令は前記第1の命令がアーキテクチャ
・レジスタファイル16にライトバックを行なった後に
のみアーキテクチャ・レジスタファイル16のその宛先
とするレジスタにライトバックされなければならないな
どである。もし前記命令が完了するのに異なる量の時間
を必要とすれば、もし前記命令が異なる順序で実行を開
始すれば、あるいはこれらの双方であれば、一連の命令
のライトバック順序を保証することは困難となる。
【0017】リネームバッファ14はそれが予め定めら
れた順序で結果をアーキテクチャ・レジスタファイル1
6内のレジスタに送ることができるまで実行ユニット1
2の結果を受信しかつ記憶する。この制御は典型的には
「シーケンサ」その他と称されるデータプロセッサの他
の部分(図示せず)によって与えられる。リネームバッ
ファ14もまた要求された結果またはリネームバッファ
14における前記要求された結果の将来のロケーション
に対応するタグを直接実行ユニット12に送ることがで
きる。リネームバッファ14のこの送付機能は実行ユニ
ット14が、たとえリネームバッファ14がまだアーキ
テクチャ・レジスタファイル16を更新していなくて
も、他の命令を開始できるようにする。
【0018】図2は、図1に示されたリネームバッファ
14のブロック図を示す。リネームバッファ14は7つ
のデータフィールド/ビット、すなわち、リネーム・タ
グフィールド、アーキテクチャレジスタファイル・タグ
フィールド、有効ビット(“V”と名付けられてい
る)、モーストリセントリアロケイテッドビット(以後
単に、「MRAビット」と称する)、シャドウMRAビ
ット、データフィールド、およびデータ存在ビット、を
格納するよう動作可能な複数のメモリエレメント35を
有する。データプロセッサ10が発行する各命令に対し
1つのメモリエレメント35が割当てられる。(技術上
知られているように、いくつかの命令はメモリエレメン
ト35を必要としないかも知れない。)リネームバッフ
ァ14のメモリエレメントの数は特定のデータプロセッ
サの同時的な命令実行の特定のレベルを補うように調整
できる。
【0019】前記リネームタグフィールドは命令に割当
てられた前記特定のメモリエレメントを独自的に識別す
る。前記リネームタグは実際にメモリエレメントに格納
される必要はない。典型的には、あるメモリエレメント
のアドレスは該メモリエレメントを識別するのに充分な
ものである。このフィールドは変化しない。
【0020】前記アーキテクチャレジスタファイル・タ
グフィールドは前記命令の結果が最終的に書き込まれる
アーキテクチャレジスタファイル16内の前記アーキテ
クチャレジスタを識別する。アーキテクチャレジスタフ
ァイル・タグは特定のメモリエレメントが特定の命令に
割当てられた場合に書き込まれる。
【0021】前記有効ビットはメモリエレメントがある
命令に割当てられたことを示し、すなわち、前記アーキ
テクチャレジスタファイル・タグフィールドおよびMR
Aビットが有効であることを示す。前記有効ビットは関
連するデータフィールドが前記特定されたアーキテクチ
ャレジスタに書き込まれる場合に「無効(invali
d)」にセットされる。前記メモリエレメントは次に引
続く結果を記憶するために使用できる。前記有効ビット
は特定のメモリエレメントがある命令に割当てられた場
合に「有効(valid)」にセットされる。前記有効
ビットによって行なわれる機能はまた、例えば、適切な
制御回路を備えたヘッドおよびテイルポインタによって
行なうことができる。前記「有効な」メモリエレメント
は次に前記ヘッドポインタによって示されるアドレスよ
り小さくかつ前記テイルポインタによって示されるアド
レスより大きいかあるいは等しいアドレスを有するメモ
リエレメントに対応することになる。有効ビットのその
ような構成は技術的に知られたある動作上の制約が与え
られている場合に適切なものとなり得る。
【0022】MRAビットは前記特定のメモリエレメン
ト35がアーキテクチャレジスタファイル・タグフィー
ルドによって識別されるアーキテクチャレジスタのリネ
ームバッファ14内に最も最近の(latest)コピ
ーを含んでいるかあるいは含むことを示す。メモリエレ
メント35が命令の発行時に特定の命令に割当てられた
とき、MRAビットは「最も最近に割当てられた(mo
st recently allocated)」もの
にセットされかつ同じアーキテクチャレジスタファイル
・タグフィールドを有するメモリエレメントの全ての他
のMRAビットは「最も最近でなく割当てられた(no
t most recently allocate
d)」ものにセットされる。命令発行と異なるアーキテ
クチャレジスタファイル・タグを有するメモリエレメン
トのMARビットは変更されない。同じアーキテクチャ
レジスタファイル・タグフィールドを有するメモリエレ
メントはアーキテクチャレジスタファイル16内の同じ
アーキテクチャレジスタに向けられた結果を受信するこ
とになる。しかしながら、特定のアーキテクチャレジス
タに対し、1つだけのかつ最後の最も最近に割当てられ
たリネームバッファのメモリエレメントのみが論理レベ
ル“1”のMRAビットを持つことになる。
【0023】前記シャドウMRAビットはデータプロセ
ッサ10が推論的分岐(speculative br
anch)を行なう場合にMRAビットのコピーを記憶
する。このビットは図5〜図7に関して以下にさらに詳
細に説明する。
【0024】前記データフィールドは関連する命令の結
果を含む。
【0025】前記データ存在ビットはデータフィールド
が他の命令によって使用できることおよびデータフィー
ルドが前記アーキテクチャレジスタファイルに書き込ま
れるのに適格である(eligible)ことを示す。
データ存在ビットは特定のメモリエレメント35がある
命令に割当てられたとき「無効」にセットされ、かつ前
記特定の命令がその結果をメモリエレメントに書き込む
とき「有効」にセットされる。
【0026】図1に戻ると、動作においては、実行ユニ
ット12は命令を受信し、該命令は1つ又はそれ以上の
オペランドおよび該命令に関連する1つ又はそれ以上の
結果の宛先を持つことができる。以後、説明の目的で、
例示的な命令は単一のオペランドおよび単一のアーキテ
クチャレジスタを必要とする単一の結果を有するものと
する。
【0027】命令のディスパッチ(dispatch)
において、データプロセッサ10の他の部分(図示せ
ず)はリネームバッファ14内の特定のメモリエレメン
トを命令の結果の一時的な宛先として割当てる。リネー
ムバッファ14のメモリエレメントは前記結果が最終的
に書かれるアーキテクチャレジスタの名前を前記割当て
られたメモリエレメントのアーキテクチャレジスタファ
イルのフィールドに書き込むことにより、割当てられた
メモリエレメントのリネームタグを前記命令を実行する
実行ユニットに送ることにより、そして前記有効、MR
Aおよびデータ存在ビット(data presen
t)を、それぞれ、「有効」、「最も最近に割当てられ
た」および「存在せず(not present)」に
セットすることにより、割当てられる。同時に、前記割
当てられたメモリエレメントと同じアーキテクチャレジ
スタファイルのフィールドを持つメモリエレメントの全
てのMRAビットは「最も最近でなく割当てられた」に
対応する論理状態にセットされる(以後、前記有効、M
RAおよびデータ存在ビットはアクティブハイの信号で
あり、すなわち、「有効な」有効ビットは論理レベル
“1”に対応しかつ「データ不存在信号」は論理レベル
“0”に対応するなどとする)。
【0028】シーケンサ回路(図示せず)又は実行ユニ
ット12は必要とされるオペランドのアーキテクチャレ
ジスタファイルのタグをそれぞれ結果/要求タグバス2
6およびフォワード結果/要求バス32を介してリネー
ムバッファ14およびアーキテクチャレジスタファイル
16に送る。
【0029】オペランドの結果にしたがって3つの可能
な結果があり、すなわち、(1)オペランドはアーキテ
クチャレジスタファイル16内のアーキテクチャレジス
タ内にのみ存在するか、(2)オペランドはリネームバ
ッファ14内のメモリエレメントにありかつ存在(pr
esent)であり、あるいは(3)オペランドはリネ
ームバッファ14内のメモリエレメントにありかつ不存
在(not present)であるか、である。いず
れの場合も、リネームバッファ14はオペランド、デー
タ有効信号およびリネームタグを比較しかつ実行ユニッ
ト18に送る。前記比較は要求されたアーキテクチャレ
ジスタファイルのタグを「有効な」有効ビットおよび
「最も最近に割当てられた」MRAビットを有する各々
のアーキテクチャレジスタファイルのフィールドと整合
する。前記オペランドおよびデータ有効信号はオペラン
ドバス20を介して供給される。前記リネームタグはタ
グバス22を介して実行ユニット12に供給される。
【0030】[可能性(1):オペランドがアーキテク
チャレジスタファイル16にのみ存在する場合。]この
場合には、前記比較によって整合は生成されることがな
く、すなわ、リネームバッファ14内のいずれのデータ
フィールドも前記ネームド・アーキテクチャレジスタに
送られない。したがってリネームバッファ14はフォワ
ード回路18に対し「ミス」(メモリキャッシュの分野
における同じ用語と等価なものである。)を示す。フォ
ワード回路18は次にオペランドバス20を介して実行
ユニット12に送るためにオペランドバス/ARF34
上に存在するオペランドを選択する。リネームバッファ
14がその比較を行っている間に、アーキテクチャレジ
スタファイル16は前記アーキテクチャレジスタファイ
ルのタグ(前記レジスタネーム)によって識別されるレ
ジスタに格納された値を選択しておりかつ関連するデー
タ値をオペランドバス/ARF34に出力している。ア
ーキテクチャレジスタファイル16が前記データを発生
する場合は前記データ有効信号は常に「有効」である。
リネームバッファ14は前記整合メモリエレメントに関
連するリネームタグフィールドをタグバス22を介して
実行ユニット12に送る。リネームバッファ14によっ
て供給されるリネームタグは前記データ有効信号が「オ
ペランド有効」に対応する場合は実行ユニット12によ
って無視される。
【0031】[可能性(2):オペランドがリネームバ
ッファ14にありかつ存在である場合。]この場合は、
リネームバッファ14の1つ又はそれ以上のエントリが
供給されたオペランド名と整合する。したがって、リネ
ームバッファ14はフォワード回路18に「ヒット」を
表示する。フォワード回路18は次にオペランドバス2
0を介して実行ユニット18に送るためにオペランドバ
ス/RB28上に存在するオペランドを選択する。しか
しながら、リネームバッファ14はまた前記有効ビット
およびMRAビットを「有効」および「最も最近に割当
てられた」状態に対応する論理状態と比較する。これは
リネームバッファ14が前記データ値の最も最近に割当
てられたものを実行ユニット12に送ることを保証す
る。リネームバッファ14における前記選択されたメモ
リエレメントに関連するデータ存在ビットはオペランド
要求がリネームバッファ14において「ヒット」したと
きデータ有効信号を発生する。構造的に、データ存在ビ
ットは現在のオペランドを示すハイ論理レベルである。
リネームバッファ14によって供給されるリネームタグ
は再び実行ユニット12によって無視される。
【0032】[可能性(3):オペランドはリネームバ
ッファ14にありかつ不存在である場合]この場合に
も、リネームバッファ14における1つ又はそれ以上の
エントリが前記供給されたオペランドのアーキテクチャ
レジスタファイルのタグと整合する。したがって、リネ
ームバッファ14はフォワード回路18に対し「ヒッ
ト」を表示する。フォワード回路18はオペランドバス
/RB28上に存在するオペランドをオペランドバス2
0を介して実行ユニット18に送るために選択する。前
と同様に、リネームバッファ14は前記要求されたアー
キテクチャレジスタファイルのタグと整合するアーキテ
クチャレジスタファイルのタグフィールドを有するデー
タフィールド、ハイの有効ビットおよびハイのMRAビ
ットをオペランドバス/RB28を介してフォワード回
路18に送る。しかしながら、この場合は、エントリは
「存在せず」であると想定される。したがって、リネー
ムバッファ14の前記選択されたメモリエレメントに関
連するデータ存在ビットはゼロの論理状態を含む。無効
なデータ信号(データ不存在)の場合は、実行ユニット
12は前記送られたオペランドを無視するが、実行ユニ
ット12によってそこに送られたリネームタグをラッチ
する。
【0033】引続くクロックサイクルの間、実行ユニッ
ト12は結果バス24および結果/要求タグバス26を
監視する。このプロセスは「スヌーピング(snoop
ing)」と称される。第2の実行ユニットは結局所望
のオペランドである結果を前記オペランドの関連するリ
ネームタグと共に戻す。第2の実行ユニットは該オペラ
ンドおよびリネームタグを、それぞれ、結果バス24お
よび結果/要求タグバス26を介してリネームバッファ
14に送る。実行ユニット12はこのオペランドを結果
/要求タグバス26上の前記リネームタグによって識別
することができ、かつ該オペランドをリネームバッファ
14が該オペランドおよびリネームタグをラッチすると
同時にラッチすることができる。
【0034】図3から図7は図2に示されたリネームバ
ッファ14の内容を種々のシーケンス時間において示す
ものである。図示された例においては、リネームバッフ
ァ14は、A〜Gと名付けられた、7個のメモリエレメ
ントを有し、それらは混乱を避けるために8個の結果
を、0〜7と名付けられた、8個のアーキテクチャレジ
スタに対する8個のデータフィールドに格納する。実際
に、前記7個のメモリエレメントおよび8個のアーキテ
クチャレジスタは2進数で識別される。図3〜図7にお
ける空白のエントリは該フィールドの値が説明に関連が
ないことを示している。
【0035】[通常動作]図3は、メモリエレメント
A,BおよびCが3つの命令に割当てられた後の図2に
示されるリネームバッファ14の内容を示す。メモリエ
レメントAのデータフィールドはすでにアーキテクチャ
レジスタ#4に書き込まれる命令の結果(“1”の論理
状態にセットされたデータ存在ビット)を含んでいる。
メモリエレメントBおよびCのデータフィールドはそれ
ぞれアーキテクチャレジスタ#5および#7に書き込ま
れる2つの命令の結果を含むことになる。これらの後者
の命令は2つの対応するデータ存在ビットのゼロ状態に
よって示されるように完了していない。全てのメモリエ
レメントのMRAビットは各々がいくつかのアーキテク
チャレジスタ、ここではアーキテクチャレジスタ#4,
#5および#7、の最も最近のものでありあるいは最も
最近のものとなることを反映する。メモリエレメントD
〜Gは各メモリエレメントの有効ビットのゼロ論理状態
によって示されるように有効ではない。
【0036】図4は、付加的なメモリエレメント、すな
わちメモリエレメントD、がいずれかの命令に割当てら
れた後の図2に示されるリネームバッファ14の内容を
示す。この付加的な命令はメモリエレメントAに関連す
る命令のようにアーキテクチャレジスタ#4に書き込ま
れる。命令の発行時に、メモリエレメントDのMRAビ
ットは“1”の論理状態にセットされ、かつメモリエレ
メントAのMRAビットは“0”の論理状態にセットさ
れる。その結果、アーキテクチャレジスタ#4の内容を
要求するいずれの後の命令もメモリエレメントDのデー
タ存在ビットに応じてメモリエレメントDのデータフィ
ールド又はリネームタグフィールドを受けることにな
る。図示された瞬間では、メモリエレメントDに関連す
る命令の結果は完全ではない。その場合、リネームバッ
ファ14は前記リネームタグフィールドをアーキテクチ
ャレジスタ#4を要求するいずれかの実行ユニットに送
る。
【0037】[推論的分岐(Speculative
Branching)]リネームバッファ14は推論的
分岐をサポートするデータプロセッサ内で動作するよう
修正できる。推論的分岐機構を実現するデータプロセッ
サは該データプロセッサが実際に前記選択された命令ス
トリームが事実上正しい命令ストリームであるか否かを
判定する前に2つ(又はそれ以上)の可能な命令ストリ
ームの1つに分岐するものである。該データプロセッサ
はもしそれが後に新しい命令ストリームが正しいことを
判定すればその新しい命令ストリームにそって動作を継
続する。しかしながら、該データプロセッサはもしそれ
が誤って「推測された(guessed)」ことを判定
すれば前記選択されたパスに沿っての命令の発行を停止
する。該データプロセッサは次に前記誤ったパスに沿っ
て発行された命令の影響(affects)を反転しか
つ正しいパスにそって命令を発行するよう試みる。前記
可能な命令ストリームの1つが直列的に第1の命令スト
リームに続くかあるいはソフトウェア的に異なるポイン
トにジャンプすることを要求するかもしれないことを理
解すべきである。推論的分岐機能は以下に図5〜図7に
おいて説明する。
【0038】図5は、データプロセッサ10が図3およ
び図4に関して上に説明した4つの命令を発行した後に
推論的分岐を行なう場合に図2に示されたリネームバッ
ファ14の内容を示す。リネームバッファ14は各MR
Aビットに関連するシャドウMRAビットに各MRAビ
ットのコピーを保存する。特に、Aメモリエレメントの
シャドウMRAビットはAメモリエレメントのMRAビ
ットに等しく、BメモリエレメントのシャドウMRAビ
ットはBメモリエレメントのMRAビットに等しく、以
下同様である。
【0039】図6は、データプロセッサ10が前記新し
い命令ストリームから1つの命令を発行した後の図2に
示されたリネームバッファ14の内容を示す。この次の
命令はメモリエレメントEが割当てられかつアーキテク
チャレジスタ#5に書き込まれる。その結果、リネーム
バッファ14はメモリエレメントBのMRAビットをゼ
ロ論理状態にセットしてメモリエレメントEがアーキテ
クチャレジスタ#5の最も最近に割当てられたものを含
むことを反映させる。シャドウMRAビットは修正され
ない。
【0040】もしデータプロセッサ10がそれが推論的
に分岐したとき正しい命令パスを「推測すれば」、デー
タプロセッサ10は同じ命令ストリームに沿って処理を
継続する。リネームバッファ14はデータプロセッサ1
0が第2の推論的分岐を行なうまでそのシャドウMRA
ビットを無視する。そのポイントにおいて、リネームバ
ッファ14は再び前記MRAビットをシャドウMRAビ
ットにコピーし、図6に示されたベクトルをオーバライ
トする。しかしながら、もしデータプロセッサ10が誤
って推測すれば、リネームバッファ14はシャドウビッ
トを前記関連するMRAビットにコピーし戻す。リネー
ムバッファ14又は、多分、データプロセッサ10の分
岐ユニットはまた前記誤った命令ストリームにそって全
ての命令を無効にする。
【0041】図7は、データプロセッサ10がそれが誤
った命令ストリームに従ったことを判定した後の図2に
示されたリネームバッファ14の内容を示す。リネーム
バッファ14はメモリエレメントEを無効にしかつシャ
ドウビットの内容をMRAビットにコピーし戻す。この
図では、データプロセッサ10が正しい命令ストリーム
に従ったことを判定する前に1つの命令のみが発行され
ている。したがって、1つのメモリエレメントのみが無
効化される必要があり、かつ1つのMRAビットのみが
再格納される必要がある。しかしながら、開示された手
順は任意の数の誤って発行された命令に対しても同じ結
果を生成する。
【0042】メモリエレメント毎のシャドウビットの数
は複数レベルの推論的分岐をサポートするために増加す
ることができる。例えば、データプロセッサ10はそれ
が前記第1の推論的分岐が正しかったことを判定する前
に第2の推論的分岐を行なうことができることが望まし
いかもしれない。この場合、第2のシャドウMRAビッ
トは各メモリエレメントに対して設けることができる。
前記第2の未解決の推論的分岐の実行に応じて、MRA
ビットの内容は第2のシャドウMRAビットに格納され
る。リネームバッファ14は次にもしデータプロセッサ
の分岐ユニットがN番目の未解決の推論的分岐が正しく
ないことを判定すれば(ここで、Nは整数の指数であ
る)、前記第N番目のシャドウMRAビットをMRAビ
ットに再格納する。一般に、1つのシャドウMRAビッ
トが望まれる各レベルの推論的分岐に対して与えられ
る。
【0043】図8は、開示された発明を実施するために
動作可能な1組のステップのフローチャート36を示
す。リネームバッファ14はいずれかの実行ユニットに
よってオペランドが要求されるたびごとにフローチャー
ト36を実行する。リネームバッファ14は要求された
オペランドのアーキテクチャレジスタファイルのタグを
整合のためにリネームバッファ14における各々のアー
キテクチャレジスタファイルのタグフィールドと比較す
る、ステップ38。リネームバッファ14は次に、それ
ぞれ、リネームバッファ14が整合を検出したかあるい
は整合を検出しなかったかに応じてパス40またはパス
42に分岐する。ステップ38は図9に関して以下にさ
らに詳細に説明する。
【0044】パス40に沿って続けると、リネームバッ
ファ14は「ヒット」信号をフォワード回路14に送信
しフォワード回路18がリネームバッファ14によって
供給されたオペランドをオペランドバス20に送るべき
であることを示す、ステップ44。リネームバッファ1
4は次に、ステップ46において、整合したリネームタ
グフィールドおよびデータフィールド(もしあれば)そ
してデータ存在ビットを実行ユニット18に送る。上に
述べたように、実行ユニット18はデータ存在フィール
ドの値に応じてこれらのフィールドのあるものを無視す
る。
【0045】パス42に沿って続けると、リネームバッ
ファ14は「ミス」信号をフォワード回路18に送信し
フォワード回路18がアーキテクチャレジスタファイル
16によって供給されるオペランドを送るべきことを示
す、ステップ48。リネームバッファ14は該リネーム
バッファ14の構成の詳細に応じて実行ユニット12に
いずれか他のデータを送ってもよくあるいは送らなくて
もよい。いずれにしても、上に述べたプロトコルにした
がって、実行ユニット12に送られたいずれかのデータ
は有効なデータ信号がアーキテクチャレジスタファイル
16によって供給されれば無視される。
【0046】フローチャート36内の両方のパスは次に
フローチャート36の終りで併合される。
【0047】図9は、図8に示されるステップ38を実
現するよう動作する1組のステップのフローチャートを
示す。リネームバッファ14は、ステップ50におい
て、タグの比較を行なう。上に述べたように、リネーム
バッファは、それぞれ、(1)要求されたオペランドの
タグ、1の論理レベル、および1の論理レベルを、
(2)各々のメモリエレメント35の前記アーキテクチ
ャレジスタファイルのタグフィールド、前記有効ビッ
ト、前記MRAビットと比較する。リネームバッファ1
4は次に、ステップ52において、それがステップ50
において整合を検出したか否かに応じてパス40または
42に分岐する。比較ステップ50の詳細はリネームバ
ッファ14のメモリエレメントのハードウェア構成に依
存する。例えば、もしリネームバッファ14がランダム
アクセスメモリ(RAM)セルの小さなブロックとして
設計されれば、ステップ50は、メモリセルがインデッ
クスされたカンウタにしたがってアドレスされ、該メモ
リセルの内容が比較され、そして整合が検出されなけれ
ば前記カウンタが増分される、反復ループを含むことが
できる。逆に、リネームバッファ14は内容にアドレス
可能なメモリ(CAM)のセルの小さなブロックとする
ことができる。もしリネームバッファ14がCAMセル
のブロックであれば、各CAMセルの内容は互いに並列
に入力オペランドタグと比較される。所望のフィールド
を有するCAMセルは自動的にそのリネームタグフィー
ルド、データフィールド、およびデータ存在ビットを出
力することになる。
【0048】図10は、開示された発明を実施するよう
動作可能な1組のステップのフローチャート54を示
す。特に、フローチャート54はリネームバッファ14
がどのようにして図5〜図7に関して上に説明した推論
的分岐機能を導入できるかを示す。リネームバッファ1
4は各々のデータプロセッサのクロックサイクルの始め
に図10に示される各ステップを実行することができ
る。リネームバッファ14は、ステップ56において、
データプロセッサ10が推論的分岐を行なうか否かを判
定する。もしデータプロセッサ10が推論的分岐を行な
えば、リネームバッファ14は、ステップ58におい
て、各MRAビットを関連するシャドウMRAビットに
コピーする。フローチャート54は次にステップ60に
進む。もしデータプロセッサ10が推論的分岐を行なわ
なければ、リネームバッファ14はステップ58から直
接ステップ60に進む。
【0049】リネームバッファ14は次にデータプロセ
ッサが該データプロセッサ10が正しくない命令ストリ
ームに従ったことを示しているか否かを判定する、ステ
ップ60。もしデータプロセッサ10が正しくない命令
ストリームに従っていれば、次にリネームバッファ14
は、ステップ62において、推論的分岐命令に従った命
令に関連する各々の有効ビットを無効にする。リネーム
バッファ14はまた、ステップ64において、各々のシ
ャドウMRAビットを対応するMRAビットにコピーし
戻す。リネームバッファ14は次にフローチャート54
の終りに進む。もしデータプロセッサ10が正しくない
命令ストリームに従っていなければ、リネームバッファ
14はステップ60から直接フローチャート54の終り
に進む。
【0050】次に、開示のため本発明の内容を特許請求
の範囲と同じ形式でかつ本件出願の特許請求の範囲の各
請求項をも引用する形で記載する。
【0051】A.前記リネームバッファはさらに、複数
のメモリエレメント(35)であって、各メモリエレメ
ントは前記受信した結果、前記受信した結果に関連する
前記アーキテクチャレジスタを表わすタグおよび前記受
信した結果に関連する最初に最も最近に割当てられたビ
ットを記憶するよう動作可能であるもの、そして前記複
数のメモリエレメントに結合されたフォワード回路(1
4,18)であって、前記フォワード回路は周期的に前
記アーキテクチャレジスタの1つを識別する第1のタグ
を受信し、該タグを前記メモリエレメントのうちの所定
の1つに格納し、前記メモリエレメントの所定の1つに
関連する前記第1に最も最近に割当てられたビットを第
1の論理状態にセットし、メモリエレメントのサブセッ
トの各々の第1に最も最近に割当てられたビットを第2
の論理状態にセットし、前記サブセットのメモリエレメ
ント内の各メモリエレメントは前記メモリエレメントの
前記所定の1つの第1のタグに論理的に等価な第2のタ
グを備え、そして前記フォワード回路は選択された受信
結果を前記実行ユニットの1つに送るもの、を具備する
ことを特徴とする請求項1に記載のデータプロセッサ。
【0052】B.前記メモリエレメントの各々は前記第
1に最も最近に割当てられたビットの各々と関連する第
2に最も最近に割当てられたビット(シャドウMRA)
を備え、かつ前記フォワード回路は所定の条件に応答し
て関連する第2に最も最近に割当てられたビットのロケ
ーションに各々の第1に最も最近に割当てられたビット
を格納するよう動作可能であることを特徴とする請求項
Aに記載のデータプロセッサ。
【0053】C.前記所定の条件は推論的分岐命令であ
ることを特徴とする請求項Bに記載のデータプロセッ
サ。
【0054】D.前記フォワード回路は前記選択された
受信結果のアドレスを前記実行ユニットの1つに送るた
めのタグ回路(リネームタグ)を具備することを特徴と
する請求項Cに記載のデータプロセッサ。
【0055】E.前記複数のメモリエレメントの各々は
さらに有効ビット(V)およびデータ存在ビットを具備
し、前記有効ビットは第1の論理状態で有効なタグを表
わし、前記データ存在ビットは第1の論理状態で有効な
受信結果を表わし、かつ前記選択された受信結果は論理
状態で、それぞれ、前記アーキテクチャレジスタの第1
の選択された1つ、前記有効ビットの第1の論理状態、
前記第1に最も最近に割当てられたビットの第1の論理
状態、そしてデータ存在ビットの前記第1の論理状態に
対応するタグ(アーキテクチャレジスタファイルのタ
グ)、有効ビット、第1に最も最近に割当てられたビッ
トおよびデータ存在ビットを含むことを特徴とする請求
項Dに記載のデータプロセッサ。
【0056】F.前記複数のメモリエレメントの各々は
さらに有効ビット(V)およびデータ存在ビットを備
え、前記有効ビットは第1の論理状態で有効なタグを表
わし、前記データ存在ビットは第1の論理状態で有効な
受信結果を表わし、かつ前記選択された受信結果は、論
理状態で、それぞれ、前記アーキテクチャレジスタの第
1の選択された1つ、前記有効ビットの第1の論理状
態、前記第1に最も最近に割当てられたビットの第1の
論理状態、および前記データ存在ビットの第1の論理状
態に対応するタグ(アーキテクチャレジスタファイルの
タグ)、有効ビット、第1に最も最近に割当てられたビ
ットおよびデータ存在ビットを含むことを特徴とする請
求項Cに記載のデータプロセッサ。
【0057】G.前記フォワード回路は前記選択された
受信結果のアドレスを前記実行ユニットの1つに送るた
めのタグ回路(リネームタグ)を具備することを特徴と
する請求項Bに記載のデータプロセッサ。
【0058】H.前記複数のメモリエレメントの各々は
さらに有効ビット(V)およびデータ存在ビット(デー
タ存在)を具備し、前記有効ビットは第1の論理状態で
有効なタグを表わし、前記データ存在ビットは第1の論
理状態で有効な受信結果を表わし、かつ前記選択された
受信結果は論理状態で前記アーキテクチャレジスタのう
ちの第1の選択された1つ、前記有効ビットの第1の論
理状態、前記第1に最も最近に割当てられたビットの第
1の論理状態、そして前記データ存在ビットの第1の論
理状態にそれぞれ対応するタグ(アーキテクチャレジス
タファイル)、有効ビット、第1に最も最近に割当てら
れたビットおよびデータ存在ビットを具備することを特
徴とする請求項Gに記載のデータプロセッサ。
【0059】I.前記複数のメモリエレメントの各々は
さらに有効ビット(V)およびデータ存在ビットを具備
し、前記有効ビットは第1の論理状態で有効なタグを表
わし、前記データ存在ビットは第1の論理状態で有効な
受信結果を表わし、かつ前記選択された受信結果は論理
状態で前記アーキテクチャレジスタのうちの第1の選択
された1つ、前記有効ビットの第1の論理状態、前記第
1に最も最近に割当てられたビットの第1の論理状態、
そして前記データ存在ビットの第1の論理状態にそれぞ
れ対応するタグ(アーキテクチャレジスタファイル)、
有効ビット、第1に最も最近に割当てられたビットおよ
びデータ存在ビットを具備することを特徴とする請求項
Bに記載のデータプロセッサ。
【0060】J.前記メモリ手段の各々は前記第1に最
も最近に割当てられたビットの各々に関連する第2に最
も最近に割当てられたビット(シャドウMRA)を具備
し、かつ前記割当て手段は所定の条件に応じて関連する
第2に最も最近に割当てられたビットのロケーションに
各々の第1に最も最近に割当てられたビットを格納する
よう動作可能であることを特徴とする請求項2に記載の
データプロセッサ。
【0061】K.前記所定の条件は推論的分岐命令であ
ることを特徴とする請求項Jに記載のデータプロセッ
サ。
【0062】L.前記フォワード手段は前記選択された
結果に関連するメモリ手段のアドレスを送るためのタグ
手段(リネームタグ)を具備することを特徴とする請求
項Kに記載のデータプロセッサ。
【0063】M.前記フォワード手段は前記選択された
結果に関連するメモリ手段のアドレスを送るためのタグ
手段(リネームタグ)を具備することを特徴とする請求
項2に記載のデータプロセッサ。
【0064】N.さらに、前記データプロセッサ内で通
信バスから結果を受ける段階、そして前記受信した結果
を格納する段階、を具備することを特徴とする請求項3
に記載の方法。
【0065】O.さらに、要求された結果のタグを受信
する段階、前記受信されたタグおよび第1の論理状態
を、それぞれ、前記組のタグの各々および第1に最も最
近に割当てられたビットと比較する段階、そして前記比
較段階に応じて前記得られた組のタグおよび第1に最も
最近に割当てられたビットに関連する結果を送る段階、
を具備することを特徴とする請求項Nに記載の方法。
【0066】P.さらに、前記データプロセッサ(5
6)内の実行ユニットに推論的分岐命令を発行する段
階、そして各々の第1に最も最近に割当てられたビット
を関連する第2に最も最近に割当てられたビットロケー
ション(58)に格納する段階、を具備することを特徴
とする請求項Oに記載の方法。
【0067】Q.さらに、前記データプロセッサ内の実
行ユニットに推論的分岐命令を発行する段階(56)、
そして各々の第1に最も最近に割当てられたビットを関
連する第2に最も最近に割当てられたビットロケーショ
ンに格納する段階(58)、を具備することを特徴とす
る請求項Nに記載の方法。
【0068】以上本発明が特定の実施例に関して説明さ
れたが、当業者にはさらに他の修正および改良が可能で
あろう。例えば、データプロセッサ10の特定の部分に
上において割当てられた機能は特定のデータプロセッサ
の異なる部分によって行なうことができる。したがっ
て、1群のユニットの間で必要な機能を行なうユニット
の名前または仕事の分担は本発明の一部ではない。した
がって、本発明は添付の特許請求の範囲に記載された発
明の精神および範囲から離れることのない全てのそのよ
うな修正を含むことが理解されるべきである。
【0069】
【発明の効果】以上のように、本発明によれば、複数の
実行ユニット、該実行ユニットの少なくとも1つに結合
されたリネームバッファ、および前記少なくとも1つの
実行ユニットおよびリネームバッファに結合された複数
のアーキテクチャレジスタを備えたデータプロセッサに
おいて、同じアーキテクチャレジスタに向けられた結果
を適切に管理しかつ適切な値のみを送ることができ、デ
ータプロセッサのスループットを増大しかつ命令の立往
生(stalls)を低減することが可能になる。
【図面の簡単な説明】
【図1】本発明にしたがって構成されたデータプロセッ
サを示すブロック図である。
【図2】図1に示されるデータプロセッサにおけるリネ
ームバッファを示すブロック図である。
【図3】図2に示されるリネームバッファの内容を種々
のシーケンス時間において示す説明図である。
【図4】図2に示されるリネームバッファの内容を種々
のシーケンス時間において示す説明図である。
【図5】図2に示されるリネームバッファの内容を種々
のシーケンス時間において示す説明図である。
【図6】図2に示されるリネームバッファの内容を種々
のシーケンス時間において示す説明図である。
【図7】図2に示されるリネームバッファの内容を種々
のシーケンス時間において示す説明図である。
【図8】本発明を実施するよう動作可能な1組のステッ
プを示すフローチャートである。
【図9】図8に示される1つのステップを実行するよう
動作可能な1組のステップを示すフローチャートであ
る。
【図10】本発明を実施するために動作可能な1組のス
テップを示すフローチャートである。
【符号の説明】
10 データプロセッサ 12 実行ユニット 14 リネームバッファ 16 アーキテクチャレジスタファイル 18 フォワード回路 20 オペランドバス 22 タグバス 24 結果バス 26 結果/要求タグバス 28 オペランドバス/RB 29 ライトバックバス 30 ヒット/ミス信号 32 要求/結果タグバス 34 オペランドバス/ARF

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 データプロセッサ(10)であって、 ある命令セットを実行するよう動作可能な複数の実行ユ
    ニット(12)であって、前記命令セットのうちの少な
    くとも1つの命令はオペランドを要求し、前記命令セッ
    トのうちの少なくとも1つの命令は結果を発生するも
    の、 少なくとも1つの実行ユニットに結合された複数のアー
    キテクチャレジスタ(16)であって、該アーキテクチ
    ャレジスタは結果を発生する前記少なくとも1つの命令
    の結果を周期的に受信するもの、そして少なくとも1つ
    の前記実行ユニットにかつ前記複数のアーキテクチャレ
    ジスタに結合されたリネームバッファ(14)であっ
    て、該リネームバッファは周期的に結果を発生する前記
    少なくとも1つの命令の結果を受信しかつ格納し、各々
    の受信した結果は前記アーキテクチャレジスタの選択さ
    れた1つと関連し、前記リネームバッファは周期的にオ
    ペランドを要求する前記少なくとも1つの命令から該オ
    ペランドの要求を受信し、前記要求されるオペランドは
    前記アーキテクチャレジスタのうちの第1の選択された
    1つと関連し、前記リネームバッファは受信した結果を
    前記要求実行ユニットに送るよう動作可能であり、前記
    送られた受信結果は1組の受信結果の内のものであり、
    前記1組の受信結果のうちの各受信結果は前記アーキテ
    クチャレジスタの第1の選択された1つに関連する前記
    リネームバッファ、 を具備することを特徴とするデータプロセッサ(1
    0)。
  2. 【請求項2】 データプロセッサ(10)であって、 ある命令セットを実行するよう動作可能な複数の実行ユ
    ニット(12)であって、前記命令セットのうちの少な
    くとも1つの命令はオペランドを要求し、前記命令セッ
    トのうちの少なくとも1つの命令は結果を発生するも
    の、 前記実行ユニットのうちの少なくとも1つに結合された
    複数のアーキテクチャレジスタ(16)であって、該ア
    ーキテクチャレジスタは周期的に結果を発生する前記少
    なくとも1つの命令の結果を受信するもの、 複数のメモリ手段(35)であって、各々のメモリ手段
    は結果(データ)、該結果に関連するアーキテクチャレ
    ジスタを表わすタグ(アーキテクチャレジスタファイル
    タグ)および前記結果に関連する第1に最も最近に割当
    てられたビット(MRA)を記憶するよう動作可能なも
    の、 前記実行ユニットの少なくとも1つにおよび前記複数の
    メモリ手段に結合された割当て手段(14,18)であ
    って、該割当て手段は周期的にアーキテクチャレジスタ
    を識別する第1のタグを受信し、前記メモリ手段のうち
    の所定の1つに前記第1のタグを格納し、前記所定の1
    つのメモリ手段に関連する前記第1に最も最近に割当て
    られたビットを第1の論理状態にセットし、前記メモリ
    エレメントのサブセットのうちの各々の第1に最も最近
    に割当てられたビットを第2の論理状態にセットし、前
    記メモリエレメントのサブセットは前記第1のタグに論
    理的に等価なタグを具備する前記割当て手段、そして前
    記実行ユニットの少なくとも1つにかつ前記複数のメモ
    リ手段に結合されたフォワード手段(14,18)であ
    って、該フォワード手段は選択された結果を前記アーキ
    テクチャレジスタの第1の1つに関連するオペランドを
    要求する実行ユニットに送り、前記選択された結果は前
    記メモリ手段の1つに関連し、前記1つのメモリ手段は
    論理状態で前記アーキテクチャレジスタの第1の1つお
    よび前記第1に最も最近に割当てられたビットの第1の
    論理状態にそれぞれ対応するタグおよび第1に最も最近
    に割当てられたビットを具備する前記フォワード手段、 を具備することを特徴とするデータプロセッサ(1
    0)。
  3. 【請求項3】 データプロセッサを動作させる方法であ
    って、 第1の時間に、第1のタグおよび第1の第1に最も最近
    に割当てられたビットを複数の組の内の第1の組として
    第1のメモリエレメントに格納する段階であって、該第
    1のメモリエレメントは複数のメモリエレメントの1つ
    であり、前記第1のタグは第1の結果に関連する第1の
    メモリセルのアドレスを識別し、前記第1の第1に最も
    最近に割当てられたビットは前記第1の結果に関連し、
    前記第1の第1に最も最近に割当てられたビットは第1
    の論理状態を取るもの、そして第2の引続く時間に、第
    2のタグおよび第2の第1に最も最近に割当てられたビ
    ットを第2のメモリエレメントに前記複数の組における
    第2の組として格納する段階であって、前記第2のメモ
    リエレメントは前記複数のメモリエレメントのうちの1
    つであり、前記第2のタグは第2の結果に関連するメモ
    リセルのアドレスを識別し、かつ前記第2の第1に最も
    最近に割当てられたビットは前記第2の結果に関連し、
    前記第2の第1に最も最近に割当てられたビットは第1
    の論理状態を取るもの、および第2の論理状態を第1に
    最も最近に割当てられたビットのサブセットに格納する
    段階であって、前記第1に最も最近に割当てられたビッ
    トのサブセットに関連する前記各々のタグは論理的に前
    記第2のタグに等価であるもの、 を具備することを特徴とするデータプロセッサを動作さ
    せる方法。
JP6054845A 1993-03-03 1994-03-01 データプロセッサおよびその動作方法 Pending JPH06259253A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US025,453 1993-03-03
US08/025,453 US5493669A (en) 1993-03-03 1993-03-03 Data processor for simultaneously searching two fields of the rename buffer having first and second most recently allogated bits

Publications (1)

Publication Number Publication Date
JPH06259253A true JPH06259253A (ja) 1994-09-16

Family

ID=21826155

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6054845A Pending JPH06259253A (ja) 1993-03-03 1994-03-01 データプロセッサおよびその動作方法

Country Status (6)

Country Link
US (1) US5493669A (ja)
EP (1) EP0614138A1 (ja)
JP (1) JPH06259253A (ja)
KR (1) KR940022250A (ja)
CN (1) CN1095506A (ja)
TW (1) TW255023B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012119006A (ja) * 2005-03-03 2012-06-21 Qualcomm Inc 周知のプロセッサーステートに基いてcamリネーミングレジスタファイルにおいてコンパレーターを選択的にイネーブルにするための電力節約方法および装置

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5784589A (en) * 1993-10-18 1998-07-21 Cyrix Corporation Distributed free register tracking for register renaming using an availability tracking register associated with each stage of an execution pipeline
EP0724215A1 (en) * 1995-01-26 1996-07-31 Sun Microsystems, Inc. Method and apparatus for recovering from mispredicted branches in a pipelined processor
US5675759A (en) * 1995-03-03 1997-10-07 Shebanow; Michael C. Method and apparatus for register management using issue sequence prior physical register and register association validity information
US5664120A (en) * 1995-08-25 1997-09-02 International Business Machines Corporation Method for executing instructions and execution unit instruction reservation table within an in-order completion processor
US5809324A (en) * 1995-12-07 1998-09-15 Sun Microsystems, Inc. Multiple instruction dispatch system for pipelined microprocessor without branch breaks
US6108769A (en) * 1996-05-17 2000-08-22 Advanced Micro Devices, Inc. Dependency table for reducing dependency checking hardware
US6131156A (en) * 1996-05-31 2000-10-10 Hewlett-Packard Company Optimized storage system and method for a processor that executes instructions out of order
EP1012707B1 (en) * 1997-08-06 2006-07-26 Advanced Micro Devices, Inc. A dependency table for reducing dependency checking hardware
US5961636A (en) * 1997-09-22 1999-10-05 International Business Machines Corporation Checkpoint table for selective instruction flushing in a speculative execution unit
US6539471B2 (en) * 1998-12-23 2003-03-25 Intel Corporation Method and apparatus for pre-processing instructions for a processor
US6910123B1 (en) * 2000-01-13 2005-06-21 Texas Instruments Incorporated Processor with conditional instruction execution based upon state of corresponding annul bit of annul code
US6968447B1 (en) * 2001-04-13 2005-11-22 The United States Of America As Represented By The Secretary Of The Navy System and method for data forwarding in a programmable multiple network processor environment
US6807586B2 (en) * 2002-01-09 2004-10-19 International Business Machines Corporation Increased computer peripheral throughput by using data available withholding
US7046687B1 (en) * 2002-01-16 2006-05-16 Tau Networks Configurable virtual output queues in a scalable switching system
US7107438B2 (en) * 2003-02-04 2006-09-12 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions
US7185182B2 (en) * 2003-02-04 2007-02-27 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early instruction results
US7100024B2 (en) * 2003-02-04 2006-08-29 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early status flags
US7508396B2 (en) 2005-09-28 2009-03-24 Silicon Integrated Systems Corp. Register-collecting mechanism, method for performing the same and pixel processing system employing the same
CN100511103C (zh) * 2006-05-30 2009-07-08 台达电子工业股份有限公司 具有设备控制桥接器的人机接口系统及其设计操作方法
US7820483B2 (en) 2007-02-02 2010-10-26 International Business Machines Corporation Injection molded soldering process and arrangement for three-dimensional structures
US7904697B2 (en) * 2008-03-07 2011-03-08 International Business Machines Corporation Load register instruction short circuiting method
US8966230B2 (en) * 2009-09-30 2015-02-24 Intel Corporation Dynamic selection of execution stage
US8510569B2 (en) * 2009-12-16 2013-08-13 Intel Corporation Providing integrity verification and attestation in a hidden execution environment
US8914617B2 (en) * 2009-12-26 2014-12-16 Intel Corporation Tracking mechanism coupled to retirement in reorder buffer for indicating sharing logical registers of physical register in record indexed by logical register

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4521851A (en) * 1982-10-13 1985-06-04 Honeywell Information Systems Inc. Central processor
US4731739A (en) * 1983-08-29 1988-03-15 Amdahl Corporation Eviction control apparatus
US4631660A (en) * 1983-08-30 1986-12-23 Amdahl Corporation Addressing system for an associative cache memory
US4903196A (en) * 1986-05-02 1990-02-20 International Business Machines Corporation Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
US4991090A (en) * 1987-05-18 1991-02-05 International Business Machines Corporation Posting out-of-sequence fetches
US4901233A (en) * 1987-07-20 1990-02-13 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US5134561A (en) * 1987-07-20 1992-07-28 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US5003462A (en) * 1988-05-31 1991-03-26 International Business Machines Corporation Apparatus and method for implementing precise interrupts on a pipelined processor with multiple functional units with separate address translation interrupt means
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
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
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012119006A (ja) * 2005-03-03 2012-06-21 Qualcomm Inc 周知のプロセッサーステートに基いてcamリネーミングレジスタファイルにおいてコンパレーターを選択的にイネーブルにするための電力節約方法および装置

Also Published As

Publication number Publication date
US5493669A (en) 1996-02-20
TW255023B (ja) 1995-08-21
KR940022250A (ko) 1994-10-20
CN1095506A (zh) 1994-11-23
EP0614138A1 (en) 1994-09-07

Similar Documents

Publication Publication Date Title
JPH06259253A (ja) データプロセッサおよびその動作方法
JP3588755B2 (ja) コンピュータシステム
US5584009A (en) System and method of retiring store data from a write buffer
EP1236094B1 (en) Branch instruction for multithreaded processor
EP1214661B1 (en) Sdram controller for parallel processor architecture
US5471598A (en) Data dependency detection and handling in a microprocessor with write buffer
EP0686912B1 (en) Data processor with an execution unit for performing load instructions and method of operation
JP3209205B2 (ja) プロセッサにおけるレジスタ内容の継承装置
US6880073B2 (en) Speculative execution of instructions and processes before completion of preceding barrier operations
US7681018B2 (en) Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
CN100378655C (zh) 并行处理器中的多线程执行
EP0514024B1 (en) Method and apparatus for an improved memory architecture
US5740398A (en) Program order sequencing of data in a microprocessor with write buffer
US5765208A (en) Method of speculatively executing store instructions prior to performing snoop operations
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
JP2000259412A (ja) ストア命令転送方法およびプロセッサ
US5621896A (en) Data processor with unified store queue permitting hit under miss memory accesses
JP3159435B2 (ja) ロード/ロード検出及びリオーダー方法及び装置
EP0933697A2 (en) A method and system for handling multiple store instruction completions in a processing system
EP0747809A1 (en) A method and system for processing multiple branch instructions that write to count and/or link registers
JP3699518B2 (ja) パイプライン・プロセッサ内において、誤って予測された実行分岐後にアネックス内のヤング・ビットを回復する方法及び装置
JPH10283178A (ja) 命令を発行するための方法及びシステム
JP2953451B2 (ja) 割り込み処理方法
CN114341804A (zh) 最小化用于处理器中的中断指令恢复的寄存器重命名映射表(rmt)状态恢复的处理器重排序缓冲器(rob)的遍历
JPH07219771A (ja) 命令プロセッサ