JP2001075803A - スーパースカラ型プロセッサにおけるリオーダーバッファ装置 - Google Patents

スーパースカラ型プロセッサにおけるリオーダーバッファ装置

Info

Publication number
JP2001075803A
JP2001075803A JP25130099A JP25130099A JP2001075803A JP 2001075803 A JP2001075803 A JP 2001075803A JP 25130099 A JP25130099 A JP 25130099A JP 25130099 A JP25130099 A JP 25130099A JP 2001075803 A JP2001075803 A JP 2001075803A
Authority
JP
Japan
Prior art keywords
instruction
result data
register
reorder buffer
result
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
JP25130099A
Other languages
English (en)
Inventor
Yukio Kadowaki
幸男 門脇
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP25130099A priority Critical patent/JP2001075803A/ja
Publication of JP2001075803A publication Critical patent/JP2001075803A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 この発明は、スーパースカラ型プロセッサの
リオーダバッファにおいて、リタイア数とレジスタファ
イルへの結果データ書き戻し数を高速に決定できる方式
を提供することを目的としている 【解決手段】 事前一致回路で32であらかじめリオー
ダバッファにエントリーされているすべてのデイステイ
ネーションレジスタ名に対して後続命令のレジスタ名と
の一致比較を行う。リオーダバッファ3内に記憶されて
いる中で一番古い命令を決定すると、デイステイネーシ
ョンレジスタ名を複数個出力するとともに、レジスタ名
一致検索結果が古い命令から順に複数個出力され、リタ
イア回路35でリタイア数が決定される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明はスーパースカラ型
プロセッサにおけるリオーダバッファデータリタイア数
を高速に決定できる回路に関する。
【0002】
【従来の技術】スーパースカラ型プロセッサは命令並列
性を高めることによって処理能力を上げている。命令並
列性とは演算処理ユニットを複数もたせ、同一サイクル
に発行する命令数を1以上にし、複数の演算ユニットを
並列に動作させる方法である。この場合、プログラムは
連続した一続きの命令列でできているので、同時発行す
る命令においても先行命令と後続命令の関係があり、先
行命令の演算結果を後続命令のソースオペランドとして
使用する場合もある。
【0003】この場合、命令並列性のプロセッサであっ
ても先行命令の結果が決まらなければ後続命令の演算を
スタートできないことは自明である。しかし、命令間の
相関を事前に調べ、命令間に相関が無い場合は命令を並
列に実行させることは可能であり、これによって通常の
パイプラインプロセッサよりも処理能力を上げることが
可能である。相関がある場合は先行命令の結果決定を待
った上で後続命令をスタートさせなければならない。
【0004】条件付き分岐命令に置いてもこのような先
行命令と後続命令の従属関係がある。条件付き分岐命令
の場合、後続する命令はこの条件付き分岐命令が実行さ
れ無い限り、実行できないことになる。通常のプログラ
ムにおいて条件付分岐命令は頻繁に使用されるので、ス
ーパースカラ型プロセッサにおいて条件付分岐命令が来
るたびに後続命令をストップさせているとほとんど効率
が上がらなくなる。そこで、条件付分岐命令がある場合
には、投機的実行を行い、処理を少しでも先に進めてお
く方法がとられている。
【0005】投機的実行とは、条件付分岐命令があった
場合、一意的に条件が真か偽かを予測しておき、分岐命
令を条件が決まる前に実行させてしまうことをいう。条
件が決定されて先の予測と一致すればそのまま処理を続
行させる。条件が予測と外れた場合は条件付分岐命令の
後続命令で既に実行を終了させてしまった命令において
はその処理内容を放棄し、条件付き分岐命令発行状態に
戻って異なる分岐先の命令をスタートさせる。この時、
先に実行してしまった命令の結果を破棄する場合、もし
その命令が実行されない場合には保持されておかなけれ
ばならないデータを破壊してしまっている場合がある。
この問題を解決するためにリオーダバッファが用いられ
る。
【0006】リオーダバッファは、命令の結果データを
格納しておき、条件付分岐命令などがある場合は、この
命令の条件が決めるまでは予測により先行処理された命
令の結果を一時このバッファに保持しておき、条件が予
測と一致すれば結果データをレジスタファイルなどに書
き戻しを行い、一致しない場合はバッファ内の演算結果
をすべて破棄(フラッシュ)することで、投機的実行を
行ったために本来発生しないはずの命令の結果データに
よるデータ破壊を防ぐことができる。
【0007】リオーダバッファは、リオーダバッファ内
のパイプライン中の第1の命令を識別する書き込みポイ
ンタと、パイプライン中の最後の命令の後のエントリー
を示す読み出しポインタを有する。このリオーダバッフ
ァは、FIFO(FirstIn First Ou
t)形式のバッファ構造を取り、発行された命令の順番
に結果データを格納し、取り出すこともする。FIFO
構造を取ることによって、条件付分岐命令などがある
と、この命令がFIFOから取り出されるとき、即ち、
FIFOのボトムに到達したときに、条件が決定されて
いるかを調べ、条件が決まらない場合は条件が決まるま
ですべての処理を待たせる。
【0008】条件が決まった場合、結果が予測値と一致
していれば後続命令の結果をそのままレジスタファイル
に格納していき、結果と予測値が一致しなければリオー
ダバッファ内に格納された後続命令の結果データをフラ
ッシュさせることでこれらの結果データによる矛盾を防
ぐことができる。
【0009】リオーダーバッファを採用することでスー
パースカラ型プロセッサにおけるデータメモリ(レジス
タファイル)へのライト動作も効率よく行うことができ
る。スーパースカラ型プロセッサにおいて、データメモ
リへのライトを行う際、ライト命令が実行可能になった
からといってライト動作を行うと、上記の条件付分岐命
令で投機的実行の条件予測がはずれた場合、リオーダバ
ッファのデータを破棄したとしてもデータメモリにすで
にライトしているデータを元に戻すことはできない。
【0010】この問題を防ぐために、データメモリへの
ライト動作はリオーダバッファで管理し、ライト命令が
リオーダバッファのボトムに到達したときに初めて実行
可能にしている。こうすれば、ライト命令がボトムに到
達する前に、先行する条件付分岐命令の条件予測がはず
れた場合は、リオーダバッファ内のライト命令を破棄す
ることでこのライト命令が実行されずにすむ。ライト命
令がリオーダバッファのボトムに到達してということ
は、先行する条件分岐命令が存在しなくなつたというこ
とを表してもいるので、ライト操作を実行しても問題が
無い。
【0011】このリオーダバッファに貯えられた結果デ
ータを最終的にレジスタファイルに格納する場合、リオ
ーダバッファのボトムに到達した結果データから順に格
納することになる。命令がリオーダバッファのボトムに
到達しても、結果データが確定していない場合は、レジ
スタファイルにデータを書き戻すことができない。
【0012】また、後続する命令の結果が確定したとし
ても、この先行する命令を追い越して結果をレジスタフ
ァイルに書き戻すことはできない。これらは上述した条
件付分岐命令が先行命令として存在する場合があるから
である。しかし、リオーダバッファからレジスタファイ
ルにデータを転送するのは1サイクルに1個である必要
はなく、リオーダバッファのボトムから書き戻し可能な
データが連続している場合はこれらの命令を同時にレジ
スタファイルに書き戻しても問題はない。この場合、リ
オーダバッファのボトムにある命令から順にレジスタフ
ァイルへのデータ書き戻し可能性をチェックしていかな
ければならない。また、リオーダバッファからレジスタ
ファイルへの書き戻しを複数同時に行う場合、結果デー
タの転送先であるデイステイネーションレジスタが重複
する場合が出てくる。この場合、後から指定されたデイ
ステイネーションレジスタのデータのみの書き戻しを行
い、ボトムに近い方、即ち、先行する命令のデイステイ
ネーションレジスタの結果データは破棄し、リオーダバ
ッファからのリタイアのみ行うことになる。
【0013】これは選考する命令と後続する命令のデイ
ステイネーションレジスタが一致する場合、先行する命
令によってデイステイネーションレジスタを書き換えた
としても、すぐに後続する命令でこのレジスタを更新す
るからである。先行する命令のデイステイネーションレ
ジスタをソースとした命令に関しては、リオーダーバッ
ファ内でタグ(TAG)を発行し、その命令に関するデ
ータの因果関係を各ユニットの入力バッファ(リザベレ
ションステーション)で処理できるので、わざわざレジ
スタファイルに書き戻す必要はない。また、命令によっ
てはデイステイネーションを持たないもの(NOOPや
データライトなど)もあり、これらの命令に関しては命
令がボトムに到達次第、レジスタファイルに書き戻しを
行わずにレジスタファイルから破棄(リタイア)でき
る。
【0014】以上、スーパースカラ型プロセッサにおけ
るリオーダバッファの役割を説明してきたが、リオーダ
バッファからデータをレジスタファイルに書き戻した
り、リオーダバッファから命令を破棄(リタイア)させ
たりする場合、以下の順でレジスタファイルへの書き戻
し可能条件、リタイア可能条件を決めなければならな
い。
【0015】1.リオーダバッファのボトムに来ている
命令を調べ、条件付分岐命令かどうかを確認する。条件
付分岐命令である場合、予測した条件と現在の条件結果
とを比較する。条件付分岐命令で条件が一致した場合、
または条件付分岐命令でない場合、結果データが確定し
ているか確認する。 2.ボトムの命令がリタイア可能であることが判明する
と、ボトムの一つ後の命令に付いて1.と同じ処理を行
いリタイア可能であるかどうかを調べる。この時、先行
命令である1.のデイステイネーションレジスタをみ
て、自分のデイステイネーションレジスタと一致するか
どうかを調べる。一致する場合、先行命令の結果データ
をレジスタファイルに書き戻す必要が無くなる。 3.上記2.の処理を1サイクル内でリタイアできる命
令数に達するか、レジスタファイルへ同時に書き戻しで
きる数に達するまで処理を続ける。
【0016】
【発明が解決しようとする課題】上記のように、基本的
なスーパースカラ型プロセッサにおけるリオーダバッフ
ァの説明を行ってきたが、プロセッサによって1サイク
ルでリタイアさせる命令数や、レジスタファイルに書き
戻しを行うデータ数が異なる。同時にリタイアできる数
を多くするとリオーダバッファがいっぱいになって新し
い命令をエントリーできなくなることによることによる
特性劣化が防げるが処理時間が多くかかり、レジスタフ
ァイルへの書き戻し数も多くすれば同様に処理特性が向
上するが回路規模が大きくなりコストが大きくなる問題
もある。このため、プロセッサによってリタイア数や、
レジスタファイルへのデータ書き戻し数が異なるが、こ
れらの数を決定する処理がスーパースカラ型プロセッサ
において時間的にクリティカルになっていた。
【0017】この発明は、このようなスーパースカラ型
プロセッサにリオーダバッファにおいてリタイア数とレ
ジスタファイルへの結果データ書き戻し数を高速に決定
できる回路を提供することを目的としている。
【0018】
【課題を解決するための手段】この発明は、複数の実行
ユニットによりそれぞれ実行された実行結果データを格
納し、格納した実行結果データを対応するレジスタファ
イルへ格納させるスーパースカラ型プロセッサのリオー
ダバッファ装置において、複数の記憶領域を持ち、各記
憶領域は発行された命令と、結果データと結果データを
格納するレジスタ名を記憶する領域を持ち、各領域は発
行された順番に命令を格納していき、結果データが決ま
るまでの間のタグを結果データの代わりに保持し、結果
データが決まると結果データをタグと入れ替え、発行さ
れた命令の順番に結果データを対応するレジスタ名のレ
ジスタファイルに格納していき、先に入力された命令か
ら順に、結果データが確定すると上記記憶装置から順々
に出力していき、上記格納されたレジスタ名に対応する
レジスタファイルに結果データを記憶させ、前記結果デ
ータが同時に決まると、レジスタへの書き戻しも同時に
行うとともに、これらのデータを同時に出力するとき、
同時出力される命令の中に先行する命令の結果データ格
納レジスタ名と後続する命令の結果データ格納レジスタ
名が一致する場合、先行命令の結果データを書き戻さず
に後続命令の結果データのみをレジスタに書き戻すこと
を特徴とする。
【0019】上記の構成によれば、リオーダバッファ内
の結果が確定した命令に対して、一番古い命令から順に
結果データを対応する結果データ格納レジスタに転送す
る場合、先行命令にレジスタ名が同時にリタイアできる
後続命令のレジスタ名と一致している場合、先行命令の
結果データは後続命令の結果データによって書き替えら
れるので先行命令の結果データを書き戻す必要がないの
で、書き戻しバスの数をリタイアする命令数よりも少な
くすることができ、これによって回路規模の縮小ができ
る。
【0020】さらに、この発明は、すべての記憶領域に
おいて、エントリーされると同時に後続命令の結果デー
タ格納レジスタ名を調べ、先行命令の結果データ格納レ
ジスタ名との一致検索を事前に行いその結果を保持し、
記憶領域内で一番古い命令が決定すると同時に、上記の
レジスタ名一致検索結果を古い命令から順に複数個出力
することを特徴とする。
【0021】上記の構成によれば、あらかじめリオーダ
バッファにエントリーされているすべてのデイステイネ
ーションレジスタ名に対して後続命令のレジスタ名との
一致比較を行っておくことによって、リオーダバッファ
のボトムか決定したら直ちにデイステイネーションレジ
スタ間の命令間の従属関係を得ることができるのでリオ
ーダバッファから命令のリタイア数を求める処理を高速
にできる。
【0022】
【発明の実施の形態】
【0023】以下、本発明の実施の形態を図を用いて説
明する。図1は、この発明の装置及び方法を使用するた
めのスーパスカラ型プロセッサの構成を示すブロック図
である。
【0024】図1に示すように、インストラクションキ
ャッシュ1は、メインメモリ(図示しない)に接続さ
れ、データ処理を効率的に行うべく、メインメモリ内の
実行命令を一時的に保持する。ここで、実行命令の各々
は、オペコード、オペランド、行先レジスタという複数
のフィールドを含むことが認められる。例えば、命令
「ADD A,B,C」とは、レジスタAの内容をレジ
スタBの内容に加算し、その結果を行先レジスタCに置
くことを意味する。この「ADD」がオペコードに相当
し、「A」、「B」がオペランドに相当し、「C」がデ
イスティネーションレジスタに相当する。このインスト
ラクションキャッシュ1は、インストラクションデコー
ダ2に接続され、インストラクションキャッシュ1に記
憶された複数の実行命令は、命令が与えられた順序に従
いインストラクションデコーダ2に送られる。
【0025】インストラクションデコーダ2は、1サイ
クルにつき、インストラクションキャッシュ1から与え
られた複数の実行命令を調べる。そして、各実行命令
を、所定のバスを介し、以下説明する実行ユニット7乃
至12或いはリオーダバッファ3へ送る。具体的には、
実行命令のオペコードをその種類に応じた適切な実行ユ
ニット7乃至12へ送り、実行命令のオペランド、正確
にはオペランドのレジスタ番号をリオーダバッファ3へ
送る。インストラクションデコーダ2が実行ユニット7
乃至12或いはリオーダバッファ3へ、同時に送る実行
命令の数を、本実施形態では4つとして説明する。この
ように、4つの実行命令を同時に実行ユニット7乃至1
2に対して送るため、インストラクションデコーダ2
は、4本のインストラクションバス5を介して、実行ユ
ニット7乃至12に接続される。なお、実行命令の数は
4つに限定されるものではなく、実施態様に応じて変更
するものであっても問題ない。このとき、インストラク
ションバス5の数は、実行命令の数に応じて設ければよ
い。
【0026】また、インストラクションデコーダ2は、
4本のインストラクションバス5aを介して、リオーダ
バッファ3に接続される。本実施形態では、上述のよう
に、インストラクションデコーダ2が同時に送る実行命
令の数を4つとしているため、インストラクションバス
5aも同様に4本としているが、これに限定されるもの
ではなく、リオーダバッファ3へ同時に送られるオペラ
ンドの数に応じて変更しても問題ない。
【0027】リオーダバッファ3は、先行する実行命令
が実行ユニット7乃至12により実行されていない場合
に、後続する実行命令の結果を一時的に保持する。これ
は後述するように、実行ユニット7乃至12から転送さ
れる実行結果は、実行命令の順序通りではない。しか
し、後の実行命令が先に実行されたからといって、その
実行結果をレジスタファイル4へ書き込んでしまうと、
新しい実行結果が古い実行結果に取って換えられるとい
う事態が生じることがあり、一連の実行命令を正しく行
うことができないからである。
【0028】また、このリオーダバッファ3は、所定数
のオペランドバス6を介して、実行ユニット7乃至12
に接続されており、オペランド(場合によっては、タ
グ)を所定の実行ユニット7乃至12に送る。具体的に
は、リオーダバッファ3は、インストラクションデコー
ダ2から送られたオペランドのレジスタ番号と、リオー
ダバッファ3内の全てのエントリー内のレジスタ番号と
を比較する。そして、リオーダバッファ3は、一致する
レジスタ番号のエントリーを有しない場合には、レジス
タファイル4内の内容をオペランドとして選択し、オペ
ランドバス6を介して適切な実行ユニット7乃至12に
送る。また、リオーダバッファ3は、インストラクショ
ンデコーダ2から送られたオペランドのレジスタ番号と
一致するエントリーを有する場合には、そのエントリー
内の内容をオペランドとして、オペランドバス6を介し
て適切な実行ユニット7乃至12に送る。一方、先行す
る実行命令が解決されていないため、オペランドそのも
のを実行ユニット7乃至12に対して送ることができな
いときは、タグ(これを、「オペランドタグ」とい
う。)を適切な実行ユニット7乃至12に対して送る。
なお、本実施形態では、オペランドバス6の数を、後述
する実行ユニット7乃至12の数に応じて6本としてい
るが、これに限定されるものではなく、その本数を変更
しても問題ない。
【0029】実行ユニット7乃至12は実行命令を実行
する。本実施形態では、実行ユニット7乃至12の数を
6つとして以下説明するが、これに限定されるものでは
なく、実施態様に応じて変更するものであっても問題な
い。また、実行ユニット7乃至12の種類についても、
以下説明するものに限定されるものではなく、実施態様
に応じて変更することが可能である。実行ユニットとし
ての算術論理演算ユニット(以下、「ALU」と表記す
る。)は、論理演算或いは数値演算を行う。論理演算と
は、論理積、排他的論理和、バレルシフタ等を示す。ま
た、本実施形態では、特に使用頻度が高いバレルシフタ
を「BSH」として表記し、符号10を付する。数値演
算とは、加算、減算、乗算、除算等を示す。なお、本実
施形態では、特に使用頻度が高い乗算を行う算術論理演
算ユニットを「MUL」として表記し、符号11を付す
る。なお、BSH10、MUL11を除く3つのALU
には、符号7乃至9を付する。実行ユニットの一つであ
るロード/ストアユニット12は、データキャッシュ1
3に接続され、データキャッシュ13からデータをロー
ドし、或いはデータキャッシュ13へデータをストアす
る。このデータキャッシュ13は、データメモリ(図示
しない)に接続され、データ処理を効率的に行うべく、
データを一時的に保持する。
【0030】ここで、実行ユニット7乃至12の構成の
一例を図2に示す。実行ユニット7乃至12は、リザベ
ーションステーション18a、演算処理部18b、結果
レジスタ18cを有する。リザベーションステーション
18aは、インストラクションデコーダ2から送られる
オペコード、及びリオーダバッファ3から送られるオペ
ランド(場合によっては、オペランドタグ)が送られて
きたとき、これらを一時的に保持する。実行ユニット7
乃至12においては、送られてきた実行命令の順序に従
って命令を実行するのではなく、実行可能な実行命令か
ら行っていく。即ち、リオーダバッファ3からオペラン
ドタグが送られた場合には、使用可能な内容ではないた
め、命令を実行することはできない。そこで、この場合
には、実行命令に関するオペコード及びオペランドタグ
を、リザベーションステーション18aに一時的に保持
する。そして、そのオペランドタグと同じタグを有する
実行結果が確定した時に、リザベーションステーション
18aはオペランドタグと同じタグを有する実行結果と
を交換することによりオペランドを得て、演算処理部1
8bが実行命令を実行する。そして、この得られた実行
結果は、結果レジスタ18cに保持される。この結果レ
ジスタ18cに保持された実行結果は、実行ユニット7
乃至12からのライトバックバス使用要求が、後述する
バス調停ユニット14により認められて許可信号が与え
られた時に、許可された後述するライトバックバス17
を介して、リオーダバッファ3に転送される。
【0031】ところで、リオーダーバッファ3からリタ
イア数を決定する際、命令間の順序関係を守るため最初
に発行された命令から順々にリタイアできるかを決めて
いかなければならない。リオーダバッファ3はFIFO
で構成されているため最初に入力された命令から順にF
IFOのボトムに到達する。
【0032】そこで、FIFOのボトムに到達した命令
からFIFOに入力された順に条件分岐命令であるかど
うかを調べていけば良い。しかし、スーパースカラ型プ
ロセッサの実行速度は非常に高速になっており、リタイ
ア数を決定するためにFIFOのボトムから順々にリタ
イア可能を決定していては、この処理がスピード的にボ
トルネックになるため何らかの高速化が求められてい
る。この様に、ボトムからシリアルに内容を調べていか
なければ次の処理がスタートできないような場合、処理
を高速化する方法として部分的条件先見がある。これ
は、先行命令の内容が不明でも、命令間で処理できる情
報は事前に処理を行い、先行命令の内容が確定すると同
時に事前に処理しておいた結果を使用して処理を行うこ
とで全体の処理を高速化する方法である。
【0033】この発明は、リオーダバッファ3内にエン
トリーされているすべての命令において、自分の命令か
ら見て後続命令に同じ結果レジスタを持っているかどう
かを事前に調べておき、FIFOのボトム命令が決定す
るとボトムの命令と、所定の数の後続命令に対して、上
記の事前に調べておいた結果レジスタ名一致調査結果を
出力することで、FIFOのボトムが決定した後で、ボ
トム命令と、後続する各命令における後続命令のデイス
テイネーションレジスタ一致検索をシリアルに行うこと
による処理時間の増大を防ぐものである。以下、この発
明のリオーダバッファにつき説明する。
【0034】図3は、この発明のリオーダバッファ3を
示すブロック構成図である。上述したように、リオーダ
バッファ3には、インストラクションバス5aから実行
命令が、ライトバックバスから実行ユニットから結果デ
ータが与えられ、FIFOからなるリオーダバッファレ
ジスタ31にエントリーされる。この発明の特徴の1つ
である事前一致検出回路32は、リオーダバッファレジ
スタ31にエントリーされる結果データ格納レジスタ名
(デイステイネーションレジスタ名)を調べ、後続命令
の結果データ格納レジスタ名が先行命令の結果データ格
納レジスタ名と一致するか否か判断し、その結果を保持
する。そして、ボトムが決定した後で、その結果をリタ
イア回路35に与える。
【0035】ボトムポインタ33は一番古い命令のボト
ムが決定すると、リオーダバッファレジスタ31にその
読み出しを実行させる。リオーダバッファレジスタ31
は、ボトムポインタ33に従いデータ出力回路34へデ
ータを送る。データ出力回路34はリオーダバッファレ
ジスタ31のボトムが決定してから、ボトムにある命令
から所定の連続した命令、この実施の形態では、合計4
個の連続した命令、及びデイステイネーションレジスタ
名を出力して、リタイア回路35に与える。リタイア回
路35は事前一致回路32の出力に従い、レジスタファ
イルへ出力する結果データを選択する。即ち、事前一致
回路32が後続命令の結果データ格納レジスタ名が先行
命令の結果データ格納レジスタ名と一致するものがある
ことを検出していると、先行命令の結果データをレジス
タファイルへ書き戻さずに、後続命令の結果データのみ
レジスタファイルへ書き戻し、先行命令のデータは破棄
(リタイア)する。
【0036】図4は上記したリオーダバッファレジスタ
とボトムポインタとデータ出力回路を示すブロック図で
ある。図4に示すように、この実施の形態では、FIF
Oで構成されているリオーダバッファレジスタ31のボ
トムが決定してからボトムにある命令から合計4個の連
続した命令、及びデイステイネーションレジスタ名を出
力する回路例を示している。
【0037】ボトムポインタ33は、FIFOで構成さ
れているリオーダバッファレジスタ31のボトムを示
す。ボトムポイント信号はリオーダバッファレジスタ3
1の出力を選択し、データ出力回路32よりボトムから
後続命令順にバスa,b,c,dにリオーダバッファレ
ジスタ31の内容を出力する。この回路を使用すること
で、ボトムポインタの決定後、直ちにボトムの命令から
後続する4個の命令がその順番通りに得られる。バスa
には、ボトム命令におけるデイステイネーションレジス
タ名、バスbには、ボトム命令に後続する命令のデイス
テイネーションのレジスタ名、バスcには、ボトム命令
から2個後続の命令におけるデイステイネーションレジ
スタ名、バスdには、ボトム命令から3個後続する命令
のデイステイネーションのレジスタ名が出力される。こ
れらバスは、リタイア決定回路35内の一致回路に与え
られる。
【0038】図5はこの発明によるボトムポインタ決定
前のレジスタ名の事前一致回路32の一例を示すブロッ
ク図である。リオーダバッファ3内では命令がエントリ
ーされると同時にデイステイネーションレジスタ名もエ
ントリーされる。リオーダバッファ3に命令がエントリ
ーされると、後続する命令のデイステイネーションレジ
スタ名と比較を行う。この例では後続する3個の命令の
デイステイネーションレジスタ名の比較を行っている。
例えば、図5でレジスタ名2の出力(102)に対して
比較器(COMP20)で一つ後続命令になるレジスタ
名3の出力(103)を比較し、同様に比較器(COM
P21)で二つ後続命令となるレジスタ名4の出力(1
04)との比較を行い、比較器(COMP22)で3個
後続命令となるレジスタ名5の出力(105)との比較
を行う。
【0039】このように比較を行った結果の例を図7に
示す。図7では命令がA,B,C,D,E,F,Gの順
でリオーダバッファ3にエントリーされそれぞれの命令
におけるデイステイネーションレジスタのレジスタ名が
1、2、1、1、2、3、1である場合である。この
時、命令Aに対する1個後続命令のレジスタ名との比較
結果は不一致なので比較器は結果としで“0”を出力し
ている。
【0040】しかし、2個目と3個後続命令のレジスタ
名は同じ1なので比較結果として“1”を出力してい
る。同様に命令Bに対しても3個までの後続命令のレジ
スタ名との一致比較を行う。すべての命令のレジスタ名
に関して並列に処理を行うことになるが、命令がまだ入
力されていないレジスタに関しては比較を行うことがで
きないので比較結果は不定“x”になる。エントリーさ
れていない命令に関してはリオーダバッファからのリタ
イア可能数判断の対象外となるので不定の結果が出てい
ても問題はない。以上の方法で、あらかじめリオーダバ
ッファ3にエントリーされているすべてのデイステイネ
ーションレジスタ名に対して後続命令のレジスタ名との
一致比較を行っておく。
【0041】図6は図4の回路で得られたボトムから4
個のレジスタ名に対して後続する命令で同一のレジスタ
名を持っているかを検出する回路である。バスaには、
はボトム命令におけるデイステイネーションレジスタ
名、バスにbにはボトム命令に後続する命令のデイステ
イネーションのレジスタ名、バスcにはボトム命令から
2個後続の命令におけるデイステイネーションレジスタ
名、バスdにはボトム命令から3個後続する命令のデイ
ステイネーションのレジスタ名がそれぞれ入力されてい
る。図6のCOMP00からCOMP02、COMP1
0、COMP11,COMP20はそれぞれ比較器を示
し、各レジスタ名が入力されている。このように、ボト
ムが決定すると、この実施の形態では、ボトムとボトム
から3つ前までの3つのデータが出力回路34からリタ
イア回路35に与えられ、図6に示す検出回路で、一致
するデイステイネーションレジスタ名が検出される。
【0042】従来の方法では、図9に示すように、クロ
ックの立ち上り(200)でボトムポインタが出力され
てから、ボトム及び後続する命令のデイステイネーショ
ンのレジスタ名が決定され(201)、次に先行命令の
デイステイネーションレジスタ名との一致検出を行い
(202)、その結果を待たなければリオーダバッファ
のリタイア数を決定する(203)ことができなかっ
た。
【0043】この発明は、図9に示すようなリオーダバ
ッファ3内に記憶されている中で一番古い命令を決定し
てから、後続する命令に同一のレジスタ名があるかを調
べて結果データをレジスタに書き戻せるかどうかを順々
に調べていくのではなく、上述したように、事前一致回
路で32であらかじめリオーダバッファにエントリーさ
れているすべてのデイステイネーションレジスタ名に対
して後続命令のレジスタ名との一致比較を行っている。
そして、ボトムが決定すると、レジスタ名一致検索結果
が古い命令から順に、複数個、この実施の形態では4個
出力され、リタイア回路35でリタイア数が決定され
る。
【0044】このため、図8に示すように、クロックの
立ち上りと同時にボトムポインタが出力され(21
0)、図4で示される回路によって、ボトムから連続す
る4個のデイステイネーションレジスタ名と、これらの
レジスタ名の一致、不一致を比較した結果を出力するこ
とができ(211)、事前一致回路32の出力によりリ
オーダバッファ3から命令をリタイアさせることができ
る(212)。
【0045】このように、リオーダバッファのボトムか
決定したら直ちにデイステイネーションレジスタ間の命
令間の従属関係を得ることができるので、リオーダバッ
ファから命令のリタイア数を求める処理を高速にでき
る。
【0046】
【発明の効果】以上説明したように、この発明の請求項
1に記載の発明によれば、リオーダバッファ内の結果が
確定した命令に対して、一番古い命令から順に結果デー
タを対応する結果データ格納レジスタに転送する場合、
先行命令にレジスタ名が同時にリタイアできる後続命令
のレジスタ名と一致している場合、先行命令の結果デー
タは後続命令の結果データによって書き替えられるので
先行命令の結果データを書き戻す必要がないので、書き
戻しバスの数をリタイアする命令数よりも少なくするこ
とができ、これによって回路規模の縮小ができる。
【0047】また、この発明の請求項2に記載の発明に
よれば、あらかじめリオーダバッファにエントリーされ
ているすべてのデイステイネーションレジスタ名に対し
て後続命令のレジスタ名との一致比較を行っておくこと
によって、リオーダバッファのボトムか決定したら直ち
にデイステイネーションレジスタ間の命令間の従属関係
を得ることができるのでリオーダバッファから命令のリ
タイア数を求める処理を高速にできる。
【図面の簡単な説明】
【図1】この発明の装置を使用するためのスーパスカラ
型プロセッサの構成を示すブロック図である。
【図2】実行ユニットの一例を示すブロック図である。
【図3】この発明の実施の形態を示すブロック図であ
る。
【図4】この発明によるボトムポインタを用いてデータ
を出力する回路のブロック図である。
【図5】この発明によるボトムポインタ決定前のレジス
タ名の事前一致回路32の一例を示すブロック図であ
る。
【図6】ボトムから4個のレジスタ名に対して後続する
命令で同一のレジスタ名を持っているかを検出する回路
を示すブロック図である。
【図7】事前一致回路の比較結果の内容を示すテーブル
である。
【図8】この発明による動作を示すタイミング図であ
る。
【図9】従来例の動作を示すタイミング図である。
【符号の説明】
3 リオーダバッファ 31 リオーダバッファレジスタ 32 事前一致検出回路 33 ボトムポインタ 34 データ出力回路 35 リタイア回路

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 複数の実行ユニットによりそれぞれ実行
    された実行結果データを格納し、格納した実行結果デー
    タを対応するレジスタファイルへ格納させるスーパース
    カラ型プロセッサのリオーダバッファ装置において、複
    数の記憶領域を持ち、各記憶領域は発行された命令と、
    結果データと結果データを格納するレジスタ名を記憶す
    る領域を持ち、各領域は発行された順番に命令を格納し
    ていき、結果データが決まるまでの間のタグを結果デー
    タの代わりに保持し、結果データが決まると結果データ
    をタグと入れ替え、発行された命令の順番に結果データ
    を対応するレジスタ名のレジスタファイルに格納してい
    き、先に入力された命令から順に、結果データが確定す
    ると上記記憶装置から順々に出力していき、上記格納さ
    れたレジスタ名に対応するレジスタファイルに結果デー
    タを記憶させ、前記結果データが同時に決まると、レジ
    スタへの書き戻しも同時に行うとともに、これらのデー
    タを同時に出力するとき、同時出力される命令の中に先
    行する命令の結果データ格納レジスタ名と後続する命令
    の結果データ格納レジスタ名が一致する場合、先行命令
    の結果データを書き戻さずに後続命令の結果データのみ
    をレジスタに書き戻すことを特徴としたスーパースカラ
    型プロセッサにおけるリオーダーバッファ装置。
  2. 【請求項2】 すべての記憶領域において、エントリー
    されると同時に後続命令の結果データ格納レジスタ名を
    調べ、先行命令の結果データ格納レジスタ名との一致検
    索を事前に行いその結果を保持し、記憶領域内で一番古
    い命令が決定すると同時に、上記のレジスタ名一致検索
    結果を古い命令から順に複数個出力することを特徴とし
    た請求項1に記載のスーパースカラ型プロセッサにおけ
    るリオーダーバッファ装置。
JP25130099A 1999-09-06 1999-09-06 スーパースカラ型プロセッサにおけるリオーダーバッファ装置 Pending JP2001075803A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP25130099A JP2001075803A (ja) 1999-09-06 1999-09-06 スーパースカラ型プロセッサにおけるリオーダーバッファ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP25130099A JP2001075803A (ja) 1999-09-06 1999-09-06 スーパースカラ型プロセッサにおけるリオーダーバッファ装置

Publications (1)

Publication Number Publication Date
JP2001075803A true JP2001075803A (ja) 2001-03-23

Family

ID=17220763

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25130099A Pending JP2001075803A (ja) 1999-09-06 1999-09-06 スーパースカラ型プロセッサにおけるリオーダーバッファ装置

Country Status (1)

Country Link
JP (1) JP2001075803A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7278010B2 (en) 2002-07-05 2007-10-02 Fujitsu Limited Instruction execution apparatus comprising a commit stack entry unit

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7278010B2 (en) 2002-07-05 2007-10-02 Fujitsu Limited Instruction execution apparatus comprising a commit stack entry unit

Similar Documents

Publication Publication Date Title
US5649138A (en) Time dependent rerouting of instructions in plurality of reservation stations of a superscalar microprocessor
US6418528B1 (en) Floating point unit pipeline synchronized with processor pipeline
JP2597811B2 (ja) データ処理システム
US5625837A (en) Processor architecture having out-of-order execution, speculative branching, and giving priority to instructions which affect a condition code
EP0638183B1 (en) A system and method for retiring instructions in a superscalar microprocessor
JP3580657B2 (ja) 並列マルチタスキングの方法及びシステム
US7793079B2 (en) Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
US5694565A (en) Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
KR930004214B1 (ko) 데이타 처리 시스템
JPH0820949B2 (ja) 情報処理装置
JPH11212788A (ja) プロセッサのデータ供給装置
US5778248A (en) Fast microprocessor stage bypass logic enable
JPH09198253A (ja) スーパスカラ・プロセッサのロードまたはストア・ユニットにおけるバイパス・エラー検出方法及びシステム
JP3751402B2 (ja) データ精度モード表示器を備えたマルチパイプライン・マイクロプロセッサ
EP0778519B1 (en) Multiple instruction dispatch system for pipelined microprocessor without branch breaks
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法
JP2004038753A (ja) プロセッサ及び命令制御方法
US7401328B2 (en) Software-implemented grouping techniques for use in a superscalar data processing system
KR100305487B1 (ko) 특정유형의인스트럭션을동시에처리할수있는방법및데이터프로세싱시스템
US5850563A (en) Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
JP2001075803A (ja) スーパースカラ型プロセッサにおけるリオーダーバッファ装置
JPH1196005A (ja) 並列処理装置
CN117806706B (zh) 存储顺序违例处理方法、装置、电子设备及介质
JPH10283178A (ja) 命令を発行するための方法及びシステム
JPH0756735A (ja) 並列演算処理装置