JPH05307483A - レジスタ書き込み制御方法および回路 - Google Patents

レジスタ書き込み制御方法および回路

Info

Publication number
JPH05307483A
JPH05307483A JP11201092A JP11201092A JPH05307483A JP H05307483 A JPH05307483 A JP H05307483A JP 11201092 A JP11201092 A JP 11201092A JP 11201092 A JP11201092 A JP 11201092A JP H05307483 A JPH05307483 A JP H05307483A
Authority
JP
Japan
Prior art keywords
register
write
instruction
register file
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.)
Withdrawn
Application number
JP11201092A
Other languages
English (en)
Inventor
Tatsuki Nakada
達己 中田
Hiromasa Takahashi
宏政 高橋
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP11201092A priority Critical patent/JPH05307483A/ja
Publication of JPH05307483A publication Critical patent/JPH05307483A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【目的】本発明は,命令を複数のステージの処理に分け
て実行するパイプライン計算機におけるレジスタ書き込
み制御方法および回路に関し,結果生成ステージ数が異
なる命令が混在してもパイプラインの乱れを抑えて実行
できるようにすることを目的とする。 【構成】レジスタファイル10に書くデータを一時的に保
持するレジスタファイル書き込みバッファ13を設け,結
果生成ステージ数が他の命令より多い命令において生成
されたレジスタファイル10に書くデータを,レジスタフ
ァイル10に書く代わりにレジスタファイル書き込みバッ
ファ13に書き,後続する命令においてレジスタファイル
10の書き込みポートが空いたときに,レジスタファイル
書き込みバッファ13のデータをレジスタファイル10に書
き込む。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は,命令を複数のステージ
の処理に分けて実行するパイプライン計算機におけるレ
ジスタ書き込み方式に係り,特に,ロード命令等のステ
ージ数が多い命令ではレジスタ書き込みの代わりにバッ
ファに書き,レジスタの書き込みポートが空いたとき
に,バッファからレジスタに書くことにより,ステージ
数をそろえ,パイプラインの乱れを抑えたレジスタ書き
込み制御方法および回路に関する。
【0002】パイプライン計算機の処理の高速化を図る
ためには,パイプラインの乱れを抑えることが有効であ
る。しかし,命令によって必要とするステージ数が変わ
る場合があり,一般にはパイプラインが乱れる原因にな
る。ステージ数が異なる命令が現れる場合でも,パイプ
ラインの乱れを抑えることができれば,高速化を実現す
ることができるようになる。
【0003】
【従来の技術】図5および図6は従来のパイプライン制
御の例を示す図,図7は従来の分岐命令を含むパイプラ
イン実行説明図,図8は従来技術によるバイパス制御等
の説明図である。
【0004】図5の(イ)は,代表的なRISCプロセ
ッサのパイプライン構成を示している。このプロセッサ
の場合,ロード(LD)命令は,命令をデコードするD
ステージ,デコード結果に基づいて命令を実行するEス
テージ,キャッシュアクセスを行うCステージ,結果を
レジスタ等に書き込むWステージの4ステージによって
処理される。一方,演算命令は,キャッシュアクセスが
なく,Dステージ,Eステージ,Wステージの3ステー
ジによって処理される。
【0005】このような命令処理機構を持つプロセッサ
では,ロード命令のすぐ後に,演算命令である加算(A
DD)命令が続くと,例えば図5の(ロ)に示すよう
に,Wステージが重なってしまうことになる。したがっ
て,例えば図5の(ハ)に示すように,LD命令のすぐ
後のADD命令をDステージでインターロックし,Wス
テージが重ならないようにする必要がある。
【0006】このように,命令の処理に必要なステージ
数が異なる命令が混在するプロセッサでは,長いステー
ジが必要なLD命令等が実行された場合に,次の短いス
テージ数で済む命令におけるインターロックのために,
パイプラインが乱れることになる。図5の(ハ)に示す
例では,6τの間に3命令実行しているが,Xτの中に
Y個のLD命令があるとすると,X−Y−2個の命令を
実行することになる。
【0007】このようなパイプラインの乱れを抑える解
決策の一つとして,全命令のステージ数を最も長いステ
ージ数に揃える方法がある。図6の(イ)は,そのパイ
プライン構成の例を示している。演算命令ではCステー
ジでは何も行なっていない。
【0008】図6の(ロ)に,そのパイプライン動作の
様子を示す。ここでも,6τの間に3命令実行している
が,Xτの中にY個のLD命令があるとすると,X−3
個の命令を実行できる。すなわち,ある程度のLD命令
が実行される場合には,図6の(イ)に示すパイプライ
ン構成のほうが,図5の(イ)に示すパイプライン構成
よりも性能が出ることになる。
【0009】しかし,パイプラインの長さが長くなるこ
とによって性能が低下する場合がある。命令が投入され
てから結果の出るまでの時間(これをパイプラインの立
ち上がり時間と言う)が長くなるからである。図5のA
DD命令では3τであるが,図6のADD命令では4τ
になる。分岐命令が多い場合には,この立ち上がり時間
が短い方が高い性能が出る。
【0010】図5に示すパイプライン構成の場合,分岐
命令を含むパイプライン実行の様子は,例えば図7の
(イ)に示すようになり,Xτの中にY個の分岐が実行
されたとすると,X−2Y個の命令を実行する。一方,
図6に示す構成の場合には,分岐命令を含むパイプライ
ン実行の様子は,図7の(ロ)に示すようになり,Xτ
の中にY個の分岐が実行されたとすると,X−3Y個の
命令しか実行されない。
【0011】このような分岐命令によるパイプラインの
乱れは,遅延分岐(ディレイドブランチ)機構や,分岐
先の命令を予測し予めプリフェッチするような回路(ブ
ランチヒストリ,ブランチターゲットキャッシュなどが
既に実用化されている)を持つことによって少なくする
ことが可能であるが,いずれにせよパイプラインの長さ
が長い方がより大きな性能低下を引き起こす。
【0012】したがって,パイプライン計算機の処理の
高速化を図るためには,パイプラインの長さを増加させ
ないでLD命令のようなステージの長い命令を,パイプ
ラインの乱れが発生しないように実行することが望まれ
る。
【0013】ここでデータの依存があった場合,すなわ
ち先行命令で演算した結果を後続命令が演算のオペラン
ドとして使用する場合のデータのバイパスについて,従
来の技術を説明する。
【0014】図5の(ハ)に示す例の場合,Eステージ
を実行している時には先行命令はWステージを実行して
いるかまたは完了している。先行命令が完了している場
合には,Eステージに必要な値はGR(汎用レジスタ)
などに格納されているので,Dステージで読み出すこと
ができる。一方,先行命令がWステージを実行している
場合には,先行命令の演算の結果を先行命令のEステー
ジの終りまたはWステージの始めから,後続の命令のD
ステージの終りまたはEステージの始めにバイパスする
ことによって直前の命令で更新されたGRの値を使用す
ることができる(図8の(ロ)参照)。
【0015】図6の(ロ)に示すような例の場合には,
先行する命令が演算命令でEステージの終りに結果が出
るのならば,後続命令はバイパスによって直前の命令で
更新されたGRの値を使用することができる。しかし,
先行する命令がLD命令でCステージの終りに結果が出
るのならば,後続命令はバイパスによって直前の命令で
更新されたGRの値を使用することができない。したが
って,後続命令はインターロックしなければならない。
【0016】ADD命令をインターロックさせない方法
としてGRの書き込みポートを追加する方法がある。こ
の方法は,例えば図8の(イ)に示すように,LD命令
のWステージを特別なステージ(以後Bステージと呼
ぶ)とし,パイプラインレジスタを追加する。また,今
までの説明でCステージと呼んでいたステージをWステ
ージとする。割り込みなどはこのWステージで発生し,
あたかもWステージで命令は終了したかのように制御を
行なう。
【0017】また,データの依存があった場合のデータ
のバイパスは,図5の(ハ)に示す例の場合で説明した
ように制御する。すなわち,バイパスは図8の(ロ)に
示すように行われる。なお,図8において,10は汎用
レジスタを含むレジスタファイル,11は演算器,12
はキャッシュメモリを表している。
【0018】
【発明が解決しようとする課題】図8の(イ)に示すよ
うな解決法は,GRの書き込みポートを増加させる必要
がある。GRのポート数の増加は,ハードウエアの物量
の大幅な増加を伴う。そこで,本発明は,GRのポート
数の増加なしに,かつ,パイプラインの長さを増加させ
ないで,LD命令のようなステージの長い命令をパイプ
ラインの乱れが発生しないように実行する手段を提供す
ることを目的とする。
【0019】
【課題を解決するための手段】図1は本発明の原理説明
図である。図1において,10は汎用レジスタや浮動小
数点レジスタ等の命令の実行結果を書くレジスタファイ
ル,11は演算器,12はキャッシュメモリ,13はレ
ジスタファイル書き込みバッファを表す。
【0020】本発明では,レジスタファイル10に書く
データが演算やメモリアクセスなどによって生成される
までの結果生成ステージ数が異なる命令を持つパイプラ
イン計算機において,次のようなレジスタ書き込み制御
を行う。
【0021】レジスタファイル10に書くデータを一時
的に保持するレジスタファイル書き込みバッファ13を
設ける。そして,図1の(イ)に示すように,結果生成
ステージ数が他の命令より多い命令aにおいて生成され
たレジスタファイル10に書くデータを,レジスタファ
イル10に書く代わりにレジスタファイル書き込みバッ
ファ13に書き,後続する命令cにおいてレジスタファ
イル10の書き込みポートが空いたときに,レジスタフ
ァイル書き込みバッファ13のデータをレジスタファイ
ル10に書き込む。
【0022】また,後続する命令におけるレジスタ読み
出し要求が,レジスタファイル書き込みバッファ13が
持つレジスタのデータに対して行われたとき,レジスタ
ファイル書き込みバッファ13からデータを供給するよ
うにする。
【0023】図1の(ロ)に示すように,結果生成ステ
ージ数が他の命令より多い命令d,eが連続するとき,
後の命令eにおけるメモリアクセスのW/Cステージで
レジスタファイル10の書き込みポートが空いていると
きに,前の命令dにおけるメモリアクセスで得たデータ
を直接バイパスしてレジスタファイル10に書き込む。
【0024】以上のようなレジスタ書き込みを行うため
に,本発明のレジスタ書き込み回路は,レジスタファイ
ル10に書くデータを一時的に保持するレジスタファイ
ル書き込みバッファ13と,レジスタファイル書き込み
バッファ13がレジスタファイル10に書くデータを保
持するとき,レジスタファイル書き込みバッファ13が
有効であることを示すバッファ有効表示回路(図2に示
すバッファ有効表示回路27)と,結果生成ステージ数
が他の命令より多い命令において生成されたレジスタフ
ァイル10に書くデータを,レジスタファイル書き込み
バッファ13に書き込むことを指示する回路(図2に示
すロード命令実行中表示回路21等)と,後続する命令
においてレジスタファイル10の書き込みポートが空い
たときに,レジスタファイル書き込みバッファ13のデ
ータを選択してレジスタファイル10に書き込むレジス
タ書き込みデータ選択回路(図2に示すレジスタ書き込
みデータ選択回路25)と,後続する命令におけるレジ
スタ読み出し要求が,レジスタファイル書き込みバッフ
ァ13が持つレジスタのデータに対して行われたとき,
レジスタファイル書き込みバッファ13からデータを供
給するオペランド選択回路(図2に示すオペランド選択
回路32,33)とを持つ。
【0025】
【作用】本発明は,レジスタファイル書き込みバッファ
13を使用することによって,レジスタファイル10の
書き込みポート数を増加させずに目的を達成するもので
ある。
【0026】図1の(イ)に示すようにロード(LD)
命令aのBステージでは,レジスタファイル10への書
き込みを行なわず,レジスタファイル書き込みバッファ
13に書き込む。そして,次のLD命令cのWステージ
で,レジスタファイル書き込みバッファ13のデータを
レジスタファイル10へ書き込む。したがって,LD命
令aの後続命令は,実際にレジスタファイル10にロー
ドされたデータが反映されるまでは,レジスタファイル
書き込みバッファ13のデータを使用しなくてはならな
い。ただし,LD命令の直後の命令でデータ依存性があ
る場合には,図8の(ロ)で示した従来と同様なバイパ
ス制御によってデータを受けとる。
【0027】また,LD命令が連続する場合には,図1
の(ロ)に示すように,レジスタファイル書き込みバッ
ファ13からレジスタファイル10に書き込まずに,キ
ャッシュメモリ12の出力を直接バイパスして書き込み
を行なう。
【0028】こうすることにより,ステージ数の長いロ
ード命令やステージ数の短い演算命令が混在しても,パ
イプラインが乱れるのを抑止することができ,パイプラ
イン計算機の高速化が可能になる。
【0029】
【実施例】
1.回路構成の例 図2は本発明の実施例ブロック図を示す。
【0030】図2において,符号10,11,13は図
1に示すものに対応する。レジスタ番号保持回路20
は,レジスタ書き込みアドレスを保持するレジスタであ
る。ロード命令実行中表示回路21は,Cステージでロ
ード命令が実行されていることを示す信号を保持するレ
ジスタである。レジスタ書き込み表示回路22は,レジ
スタに書き込みをするかどうかを指示する信号を保持す
るレジスタである。
【0031】レジスタファイル書き込み制御信号生成回
路23は,レジスタファイル10への書き込みイネーブ
ル信号を生成する回路である。書き込みレジスタ番号選
択回路24は,レジスタファイル10への書き込みアド
レスを選択する回路である。レジスタ書き込みデータ選
択回路25は,レジスタファイル10にどのデータを書
き込むかを選択する回路である。
【0032】バッファ保持レジスタ番号保持回路26
は,レジスタファイル書き込みバッファ13の内容がど
のレジスタ番号の内容を保持しているかを示すレジスタ
である。バッファ有効表示回路27は,レジスタファイ
ル書き込みバッファ13が有効なデータを保持している
ことを示すレジスタである。
【0033】Eステージバイパス制御回路28は,Eス
テージのバイパス制御を行う回路,Cステージバイパス
制御回路29は,Cステージのバイパス制御を行う回路
である。これらについては,従来の回路と同様でよいの
で,ここでの詳細な説明は省略する。
【0034】バッファ読み出し制御回路30は,デコー
ド結果による読み出しレジスタ番号信号(D-GR-RD-ADR-
1,D-GR-RD-ADR-2)と,バッファ保持レジスタ番号保持回
路26からの出力信号と,バッファ有効表示回路27の
出力信号とを入力し,レジスタファイル書き込みバッフ
ァ読み出し信号を出力する回路である。
【0035】バッファ有効化制御回路31は,レジスタ
ファイル書き込みバッファ13にデータを書き込んだと
きにバッファ有効表示回路27に有効表示を行い,レジ
スタファイル書き込みバッファ13のデータが無効にな
ったときにバッファ有効表示回路27をリセットする制
御を行う回路である。
【0036】オペランド選択回路32,33は,レジス
タファイル10の読み出しデータ出力信号(RDATA1,RDA
TA2)と,レジスタファイル書き込みバッファ13の出力
信号と,バッファ読み出し制御回路30の出力信号等を
入力し,演算器11などにソースオペランドを出力する
回路である。
【0037】レジスタファイル10に書くデータ(必ず
しもすぐレジスタファイルに書かれるとは限らない)
が,演算やメモリアクセスなどによって生成されるまで
のステージ数を「結果生成ステージ数」とすると,この
パイプライン計算機では,「結果生成ステージ数」が異
なる命令を持つ。ここで,説明のために,最も多くの命
令(もしくは基本的な命令)で必要とされる「結果生成
ステージ数」を「基本結果生成ステージ数」とし,「基
本結果生成ステージ数」でレジスタファイル10に書く
データが生成される命令(例えばADD命令)を「基本
結果生成ステージ命令」とし,「基本結果生成ステージ
数」より長い「結果生成ステージ数」を必要とする命令
(例えばLD命令)を「非基本結果生成ステージ命令」
とする。
【0038】レジスタ書き込みデータ選択回路25は,
「基本結果生成ステージ命令」の演算などで生成される
レジスタファイル10に書かれるデータ(例えば演算器
11の出力)と,レジスタファイル書き込みバッファ1
3の出力信号と,レジスタ非書き込み予定信号とを入力
し,書き込みステージ用レジスタファイル書き込みデー
タ(WDATA) を出力する。ここで,レジスタ非書き込み予
定信号は,次のサイクルにレジスタファイル10に書き
込みを行わないことを示す信号(E-LD-OP,E-WRITE) であ
る。
【0039】書き込みレジスタ番号選択回路24は,少
なくとも「基本結果生成ステージ命令」の演算などで生
成するデータを書き込むために使用するレジスタ書き込
みアドレス信号と,バッファ保持レジスタ番号保持回路
26の出力信号と,レジスタ非書き込み予定信号とを入
力し,書き込みステージ用レジスタファイル書き込みア
ドレス(WADR)を出力する。
【0040】レジスタファイル書き込み制御信号生成回
路23は,少なくとも「基本結果生成ステージ命令」の
演算などで生成するデータを書くかどうかを制御するレ
ジスタ書き込み制御信号と,レジスタ非書き込み予定信
号とを入力し,書き込みステージ用レジスタファイル書
き込み制御信号,すなわちレジスタファイル10への書
き込みイネーブル信号(WE)を出力する。
【0041】「非基本結果生成ステージ命令」の実行時
には,生成したレジスタファイル10に書くべきデータ
をレジスタファイル書き込みバッファ13に書き込み,
その書き込みレジスタ番号をバッファ保持レジスタ番号
保持回路26に書き込む。また,バッファ有効化制御回
路31により,レジスタファイル書き込みバッファ13
が有効であることを示すバッファ有効表示回路27をセ
ットする。
【0042】「基本結果生成ステージ命令」の実行時に
は,書き込みレジスタ番号と,バッファ保持レジスタ番
号保持回路26の値とを比較し,一致した場合にはレジ
スタファイル書き込みバッファ13が無効であることを
示すために,バッファ有効表示回路27をリセットす
る。
【0043】全ての命令実行時に,バッファ読み出し制
御回路30は,バッファ保持レジスタ番号保持回路26
がセットされていて,かつ読み出しレジスタ番号信号と
バッファ保持レジスタ番号保持回路26の出力信号とが
一致したことを条件に,レジスタファイル書き込みバッ
ファ読み出し信号をアサートする。
【0044】オペランド選択回路32,33は,レジス
タファイル書き込みバッファ読み出し信号がアサートさ
れていれば,レジスタファイル書き込みバッファ13の
出力信号を選択し,ネゲートされていれば(アサートさ
れていなければ),レジスタファイル10の読み出しデ
ータ出力信号(RDATA1,RDATA2) を選択し出力する。
【0045】レジスタ書き込みデータ選択回路25は,
レジスタ非書き込み予定信号がアサートされている場合
には,レジスタファイル書き込みバッファ13の出力信
号を出力し,ネゲートされている場合には, 「基本結果
生成ステージ命令」の演算などで生成されるレジスタフ
ァイル10に書かれるデータを出力する。
【0046】書き込みレジスタ番号選択回路24は,レ
ジスタ非書き込み予定信号がアサートされている場合に
は,レジスタファイル書き込みバッファ13の出力信号
を出力し,ネゲートされている場合には,書き込みステ
ージ用レジスタファイル書き込みアドレス(WADR)を出力
する。
【0047】レジスタファイル書き込み制御信号生成回
路23は,レジスタ非書き込み予定信号がアサートされ
ている場合には,バッファ有効表示回路27に従う。す
なわち,バッファ有効表示回路27がセットされている
ときには,レジスタファイル書き込み制御信号生成回路
23の出力をアサートし,レジスタファイル書き込みバ
ッファ13のデータをレジスタファイル10に書き込む
ことを示し,バッファ有効表示回路27がリセットされ
ているときには,レジスタファイル書き込み制御信号生
成回路23の出力をネゲートする。また,レジスタ非書
き込み予定信号が,ネゲートされている場合には「基本
結果生成ステージ命令」の演算などで生成するデータを
書くかどうかを制御するレジスタ書き込み制御信号を出
力する。
【0048】書き込みステージでは,書き込みステージ
用レジスタファイル書き込みデータ(WDATA) と,書き込
みステージ用レジスタファイル書き込みアドレス(WADR)
と,書き込みステージ用レジスタファイル書き込み制御
信号(WE)によって,レジスタファイル10への書き込み
が行なわれる。
【0049】レジスタファイル10に対して1ワードに
満たない部分書き込みを行なう命令を持つ場合,部分書
き込みを行なう「非基本結果生成ステージ命令」の実行
時には,1ワードの中で有効な部分を示す情報を,レジ
スタファイル書き込みバッファ有効部分レジスタ(バッ
ファ有効表示回路27中にある)に保持する。そして,
後続命令で読み出しレジスタ番号信号(D-GR-RD-ADR-1,
D-GR-RD-ADR-2)と,バッファ保持レジスタ番号保持回路
26の内容とが一致した場合,前記のバッファ有効部分
レジスタが有効であることを示している部分に対応する
データについて,レジスタファイル書き込みバッファ1
3のデータを選択し,無効であることを示している部分
については,レジスタファイル10から読んだデータを
選択する。
【0050】2.信号名のルールおよび信号の意味 次に,本発明の実施例による詳細な制御方法を説明する
に先立ち,そこで用いられる信号名のルールと意味につ
いて説明する。
【0051】2.1 信号名のルール 信号名の先頭がD,E,Wのうちのいずれかの一文字で
始まる信号は,各々D(デコード)ステージ,E(実
行)ステージ,W(書き込み)ステージで使用される
(もしくは生成される)信号である。他に,BやCステ
ージに対応して,各々B,Cで始まる信号もある。
【0052】先頭のステージを表す文字以外が同じ名前
の信号の意味は,基本的に同じ意味を表す信号である。
Wステージで使用する信号を,D(デコード)ステージ
で生成した場合には,D-XXXXとE-XXXXとW-XXXXの信号が
存在することになる。
【0053】このようにパイプラインの各ステージを流
れる信号をタグと呼ぶことがある。例えば書き込みレジ
スタ番号タグはWステージで使用されるが,D-GR-WR-AD
R,E-GR-WR-ADR, W-GR-WR-ADRの3つの信号がある。
【0054】タグは,始めに生成された信号の場合,組
合せの回路の出力を表しているが,それ以降のステージ
のタグは,レジスタの出力またはレジスタそのものを表
している。
【0055】IEEEでハードウェア記述言語として定
められたVHDLで,if(clock='1'and clock'event) o
r reset ='1' then という文から対応するend ifに挟
まれた信号はレジスタを表している。
【0056】NEXT-xxxx という信号はレジスタxxxxデー
タ入力信号に相当し,クロックの立ち上がりにレジスタ
xxxxを表す信号に取り込まれる。 2.2 信号の意味 clock :クロック立ち上がりエッジで,レジスタにデー
タを取り込む。
【0057】reset :'1' の時リセットする初期化信
号。 GR-WR-BUFF:レジスタファイル書き込みバッファ13。
【0058】GR-WR-BUFF-VALID:レジスタファイル書き
込みバッファ13の中が有意であることを示す信号を保
持するレジスタ(バッファ有効表示回路27)。
【0059】B-GR-WR-ADR :レジスタファイル書き込み
バッファ13の内容がどのレジスタ番号の内容を保持し
ているかを示すレジスタ(回路26)。
【0060】C-CACHE-DATA:キャッシュメモリから出力
されるデータ信号。 x-LD-OP :LD命令がこのステージで実行されているこ
とを示す信号。
【0061】x-STAGE-RELEASE :xステージで実行して
いる命令のxステージで実行すべきことが全て終了し,
次のステージがあれば次のステージに処理を進めること
が可能であることを示す信号。
【0062】ステージの処理が完了していても,次のス
テージでの処理が終了していない場合,リリース信号は
アサートされない。この信号がアサートされた場合は現
在のステージのタグ信号の一部を後続のステージのタグ
信号レジスタに転送する。(命令や処理法を書いた紙が
タグに相当し,次のステージに処理を移せる場合には,
データと紙(タグ)を次のステージに渡してパイプライ
ン処理を行なっている。) x-VALID :xステージが有効であること(仕事があるこ
と)を示す。
【0063】xステージでの処理は終って後続のステー
ジに処理を移したが,前のステージから処理が移って来
なかった場合などには,レジスタなどには前の処理のた
めの情報が保持されているが,それらはもう有効な情報
ではない。このような状態を表すためにある信号であ
る。実は,前のステージのRELEASE 信号によってセット
され,自分のステージのRELEASE 信号によってリセット
されるレジスタを表す。
【0064】x-GR-WR-ADR :レジスタ書き込みアドレス
を示すタグ信号。 x-WRITE :レジスタに書き込みをするかどうかを指示す
るタグ信号(例えば比較命令はこのタグが'0' になって
いるが,減算命令は'1' になっている)。
【0065】BRANCH-INTERLOCK:分岐命令を実行した時
に分岐先の命令がフェッチされていないことを(など
を)示す信号で,この信号によって分岐先の命令がフェ
ッチされるまで新たな命令のデコード完了(D-STAGE-REL
EASE) を禁止する。
【0066】GR-READ-INTERLOCK :読み出しをするレジ
スタが,先行する命令によって書き換えられるので,書
き換え完了まで待たなくてはならないことを示す信号。
【0067】x-GR-ADR-n:オペランドnを読み出すレジ
スタの番号。 D-RD-REG-0-USED :レジスタオペランド1を使用するこ
とを示す信号。'1' の場合レジスタ干渉検査を有効にす
る。即値オペランドを使う場合は'0' になり,レジスタ
干渉による待ちやバイパスを無効化する。
【0068】D-RD-REG-1-USED :レジスタオペランド2
を使用することを示す信号。 x-ALU-OP-n:演算器(ALU)で使用するソースオペラ
ンドnを表すタグ信号。
【0069】D-GR-DATA-n :GRを読み出した出力信号
で,レジスタオペランドnとして使用される。
【0070】D-OPCODE:オペコード(機械命令そのも
の)であり,これがデコードされてDステージタグをは
じめとする信号が生成される。命令の一部が即値オペラ
ンドとしても使用される。
【0071】D-OP2-SEL :オペランド2がレジスタの出
力か即値かを選択する制御信号。本例では「数え上げ
型」を使用している。
【0072】D-GR-DATA-n :GR読み出しデータ/AL
Uの結果/キャッシュからのデータの中からバイパス処
理等をして選択されたレジスタオペランドn。
【0073】さらに即値と選択されてALUのオペラン
ドレジスタに入力される。 E-RESULT:Eステージの演算によって得られたデータ。
【0074】GR:GR(レジスタファイル)を表す。 D-OPn-BYPASS-FROM-E :Dステージで読み出すレジスタ
オペランドnは先行したEステージで演算された結果を
選択すべきであることを示す信号。
【0075】D-OPn-BYPASS-FROM-C :Dステージで読み
出すレジスタオペランドnは先行したCステージで実行
されたLOAD命令などの結果を選択すべきであること
を示す信号。
【0076】D-OPn-BYPASS-FROM-GR-WR-BUFF:Dステー
ジで読み出すレジスタオペランドnはGR-WR-BUFFの内容
を選択すべきであることを示す信号。
【0077】W-GR-WR-DATA:GRに書き込むデータ信号
を保持するレジスタ。 3.本発明の実施例による制御方法 3.1 レジスタファイル書き込みバッファへの書き込
み制御 まず,レジスタファイル書き込みバッファ(GR-WR-BUF
F)13への書き込み制御の説明を行なう。レジスタフ
ァイル(GR)10に書く制御とほとんど同じである
が,あとでGRに書くために書き込みレジスタ番号(B-
GR-WR-ADR)とGR-WR-BUFFが有効であることを示すGR-WR-
BUFF-VALIDを保持するレジスタ(バッファ有効表示回路
27)が必要になる。
【0078】後続命令がB-GR-WR-ADR と同じ番号のレジ
スタに書き込んだ場合には,GRの値が有効となりGR-W
R-BUFFが無効となるのでGR-WR-BUFF-VALIDを'0' にす
る。この判定は上書きする命令が完了することを確認し
なくてはならないので,W-STAGE-RELEASE が'1' の時に
行なう。上書きをする後続命令がWステージを実行して
いる1τはGR-WR-BUFF-VALIDが間違っている。
【0079】図3のレジスタファイル書き込みバッファ
を無効化する例に示すように,上書きをする命令の直後
の命令は,Eステージからのバイパスで正しいデータを
読むが,さらに後続の命令(図3ではSHIFT命令)
では間違ったGR-WR-BUFF-VALIDに従ってデータをGR-WR-
BUFFから読まず,GRから読み出さなくてはならない。
【0080】本文で仮定する計算機は1ワードは32ビ
ットで,汎用レジスタの数は32とする。したがってB-
GR-WR-ADR は6ビットである。(以下の説明では,論理
式をIEEEでハードウエア記述言語として定められた
VHDLを使用して表す。) --レジスタファイル書き込みバッファ(GR-WR-BUFF)13 --バッファ有効表示回路(GR-WR-BUFF-VALID)27 --バッファ保持レジスタ番号保持回路(B-GR-WR-ADR)26 process(clock,reset) begin if reset ='1'then -- リセット時の処理 GR-WR-BUFF <= x"00000000" ; GR-WR-BUFF-VALID <= '0' ; B-GR-WR-ADR <= "000000" ; else if (clock='1'and clock'event) then --クロック立ち上がり時の処理 GR-WR-BUFF <= NEXT-GR-WR-BUFF ; GR-WR-BUFF-VALID <= NEXT-GR-WR-BUFF-VALID ; B-GR-WR-ADR <= NEXT-B-GR-WR-ADR ; end if ; end if ; end process ; --CステージからBステージに移る時のTAG更新 NEXT-GR-WR-BUFF <= C-CACHE-DATA when C-LD-OP = '1' and C-STAGE-RELEASE = '1' else GR-WR-BUFF ; NEXT-GR-WR-BUFF-VALID <='1'when C-LD-OP ='1'and C-STAGE-RELEASE ='1'else '0'when B-GR-WR-ADR = W-GR-WR-ADR and W-WRITE ='1'and W-STAGE-RELEASE ='1'else GR-WR-BUFF-VALID ; NEXT-B-GR-WR-ADR <= C-GR-WR-ADR when C-LD-OP ='1'and C-STAGE-RELEASE = '1' else B-GR-WR-ADR ; ここでC-STAGE-RELEASE 信号は,Cステージの終了を示
す信号であり,C-LD-OP 信号は,ロード命令実行中表示
回路21が保持する信号で,Cステージで実行している
命令がLD命令であることを示す信号であり,C-CACHE-
DATA信号は,従来の図5や図6に示すプロセッサの方法
ではキャッシュからGRに書き込みを行なっていたデー
タ信号である。 3.2 GR読み出しインターロック 図8の(ロ)で示したGR読み出しのためのインターロ
ックの方法について説明する。この方法は前にも述べた
ように従来の技術をそのまま使用する。まずDステージ
でインターロックさせるために,D-STAGE-RELEASE 信号
を次のように制御する。 --Dステージ終了判定回路 D-STAGE-RELEASE <='1' when D-VALID = '1' and not(E-VALID ='1'and E-STAGE-RELEASE ='0') and BRANCH-INTERLOCK = '0' and GR-READ-INTERLOCK = '0' else '0' ; この式はDステージの終了条件を示している。第2項は
次のEステージが処理中で,かつEステージが終了しな
い場合には,Dステージは終了せず,Dステージでイン
ターロックすることを示している。第3項は分岐命令を
実行した場合に,分岐先の命令が取り込まれるまで,D
ステージで待つことを示している。第4項では読み出し
をするGRが,先行しかつまだ終了していない命令によ
って変更される場合に,書き込みが完了する(またはバ
イパスが可能になる)までDステージでインターロック
することを示している。
【0081】次に,GR読み出しインターロック信号
(GR-READ-INTERLOCK)の作成方法を示す。図8の(ロ)
からわかるように,先行するLD命令のEステージで保
持しているLD命令の結果を書き込むレジスタ番号(E-
GR-WR-ADR)が,後続する命令のDステージの読み出しレ
ジスタ番号(この例では2つあり,各々D-GR-RD-ADR-1,
D-GR-RD-ADR-2)に等しい場合,後続命令をDステージ
でインターロックさせればよい。 --GR読み出しインターロック条件検出回路 GR-READ-INTERLOCK <= '1' when (E-VALID = '1' and E-LD-OP = '1' and ( (E-GR-WR-ADR = D-GR-RD-ADR-1 and D-RD-REG-0-USED) or (E-GR-WR-ADR = D-GR-RD-ADR-2 and D-RD-REG-1-USED)) ) else '0' ; E-VALID は,Eステージが有効であることを示す信号で
あり,E-LD-OP は,EステージでLD命令が処理されて
いることを示す信号であり,D-RD-REG-0-USED,D-RD-REG
-1-USEDは,Dステージで命令をデコードして得られる
信号で,ソースレジスタオペランドを使用するかどうか
を示す信号である。 3.3 従来のソースオペランド選択制御 本節では,従来のソースオペランド選択制御について説
明する。ALUを演算器の例として示すが他の演算器
(例えばシフタ)にも同様な制御をすればよいことは明
らかである。 --ALUソースオペランド保持回路 process(clock, reset) begin if reset = '1' then --リセット時の処理 e-alu-op1 <= x"00000000" ; e-alu-op2 <= x"00000000" ; else if (clock='1'and clock'event) then --クロック立ち上がり時の処理 e-alu-op1 <= next-e-alu-op1 ; e-alu-op2 <= next-e-alu-op2 ; end if ; end if ; end process ; --DステージからEステージに移る時にソースオペランドの更新をする next-e-alu-op1 <= d-alu-op1 when D-STAGE-RELEASE = '1' else e-alu-op1 ; next-e-alu-op2 <= d-alu-op2 when D-STAGE-RELEASE = '1' else e-alu-op2 ; --ALUオペランド選択回路(オペランド選択回路32,33) -- Dステージのソースオペランド生成 -- 第一オペランドはGRのみをとりうる d-alu-op1 <= d-gr-data-1 ; -- 第二オペランドはGRまたはイミディエート(即値)を取り得る。 -- 命令をデコードした d-op2-selで選択する。 d-alu-op2 <= d-gr-data-2 when d-op2-sel = REG-SEL else x"0000" & d-opcode(16 to 31) ; ここで d-gr-data-1, d-gr-data-2 は,いずれも従来の
方法によってGRを読み出した値である。もし先行する
命令とデータ干渉している場合には,先行命令のEまた
はCステージの結果をバイパスしたデータである。D-GR
-DATA-1, D-GR-DATA-2信号の作成方法を以下に示す。 --GR読み出しデータ選択回路 D-GR-DATA-1 <= E-RESULT when D-OP1-BYPASS-FROM-E = '1' else C-CACHE-DATA when D-OP1-BYPASS-FROM-C = '1' else GR(D-GR-RD-ADR-1) ; D-GR-DATA-2 <= E-RESULT when D-OP2-BYPASS-FROM-E = '1' else C-CACHE-DATA when D-OP2-BYPASS-FROM-C = '1' else GR(D-GR-RD-ADR-2) ; --Eステージバイパス条件検出回路 D-OP1-BYPASS-FROM-E <= '1' when E-VALID = '1'and E-WRITE = '1'and E-GR-WR-ADR = D-GR-RD-ADR-1 else '0' ; D-OP2-BYPASS-FROM-E <= '1' when E-VALID = '1'and E-WRITE = '1'and E-GR-WR-ADR = D-GR-RD-ADR-2 else '0' ; --Cステージバイパス条件検出回路 D-OP1-BYPASS-FROM-C <= '1' when C-VALID = '1'and C-LD-OP = '1'and C-GR-WR-ADR = D-GR-RD-ADR-1 else '0' ; D-OP2-BYPASS-FROM-C <= '1' when C-VALID = '1'and C-LD-OP = '1'and C-GR-WR-ADR = D-GR-RD-ADR-2 else '0' ; ここでGR(i)は,汎用レジスタのi番目のレジスタ
の値であり,D-GR-RD-ADR-1, D-GR-RD-ADR-2は,各々第
一,第二ソースレジスタオペランドのレジスタ番号で命
令をデコードして得られる。E-WRITE は,次のWステー
ジでレジスタに書き込みを行なうことを示す信号であ
る。またE-GR-WR-ADR は,次のWステージでどのレジス
タに書き込みをするかを示す。 3.4 本発明のソースオペランド選択制御 従来の回路に次の機能を付加する。レジスタファイル書
き込みバッファ(GR-WR-BUFF)13に入っているデータ
のレジスタ番号がDステージで読み出しを行なうレジス
タ番号に等しい場合に,GR-WR-BUFFのデータをあたかも
GR読み出しデータとして使用するようにバイパスす
る。ただし,図3に示すようなケースでは,GR-WR-BUFF
-VALIDが有効を示していても,間違ったデータがGR-WR-
BUFFに入っている場合があるので,そのときにはGR-WR-
BUFFのデータを選択しないように制御する。 --GR-WR-BUFFバイパス条件検出回路(バッファ読み出し制御回路30) D-OP1-BYPASS-FROM-GR-WR-BUFF <='1' when GR-WR-BUFF-VALID = '1'and B-GR-WR-ADR = D-GR-RD-ADR-1 and not(B-GR-WR-ADR = W-GR-WR-ADR and W-STAGE -RELEASE = '1' and W-WRITE = '1') else '0' ; D-OP2-BYPASS-FROM-GR-WR-BUFF <='1' when GR-WR-BUFF-VALID = '1'and B-GR-WR-ADR = D-GR-RD-ADR-2 and not(B-GR-WR-ADR = W-GR-WR-ADR and W-STAGE -RELEASE = '1' and W-WRITE = '1') else '0' ; --ソースオペランド選択回路(オペランド選択回路32,33) D-GR-DATA-1 <= E-RESULT when D-OP1-BYPASS-FROM-E = '1' else C-CACHE-DATA when D-OP1-BYPASS-FROM-C = '1' else GR-WR-BUFF when D-OP1-BYPASS-FROM-GR-WR-BUFF = '1' else GR(D-GR-RD-ADR-1) ; D-GR-DATA-2 <= E-RESULT when D-OP2-BYPASS-FROM-E = '1' else C-CACHE-DATA when D-OP2-BYPASS-FROM-C = '1' else GR-WR-BUFF when D-OP2-BYPASS-FROM-GR-WR-BUFF = '1' else GR(D-GR-RD-ADR-2) ; 3.5 GR書き込み回路 本発明によってLD命令のデータは,図1の(ロ)に示
す場合を除いて,一度GR-WR-BUFFに書かれてからGRに
書かれる。この制御を本節で説明する。従来の回路は以
下のように構成できる。 --GR書き込みデータ,アドレス,書き込みイネーブル選択回路 NEXT-W-GR-WR-DATA <= E-RESULT when E-STAGE-RELEASE = '1' else W-GR-WR-DATA ; NEXT-W-WR-GR-ADR <= E-WR-GR-ADR when E-STAGE-RELEASE = '1' else W-WR-GR-ADR ; NEXT-W-WRITE <= E-WRITE when E-STAGE-RELEASE = '1' else W-WRITE ; 次に,本発明による GR-WR-BUFF からのパスを追加した
回路を以下に示す。 NEXT-W-GR-WR-DATA <= C-CACHE-DATA when E-OP-LD = '1' and C-STAGE-RELEASE = '1' and C-LD-OP= '1' else GR-WR-BUFF when E-LD-OP = '1' else E-RESULT when E-STAGE-RELEASE = '1' else W-GR-WR-DATA ; NEXT-W-GR-WR-ADR <= C-GR-WR-ADR when E-OP-LD = '1' and C-STAGE-RELEASE = '1' and C-LD-OP = '1' else B-GR-WR-ADR when E-LD-OP = '1' else E-GR-WR-ADR when E-STAGE-RELEASE = '1' else W-GR-WR-ADR ; NEXT-W-WRITE <= '1' when E-OP-LD = '1' and C-STAGE-RELEASE = '1' and C-LD-OP = '1' else GR-WR-BUFF-VALID when E-LD-OP = '1' else E-WRITE when E-STAGE-RELEASE = '1' else W-WRITE ; 3.6 LD命令の動作 前節までLD命令でのGR-WR-BUFFへの書き込み,GR-WR-
BUFFからGRへの書き込み,GRの代わりにGR-WR-BUFF
から読み出すための制御を示した。LD命令の動作を本
節で示す(図1の(イ),(ロ)参照)。
【0082】LD命令が実行されると,W/Cステージ
でキャッシュメモリ12のヒット判定が行なわれ,キャ
ッシュメモリ12からデータが読み出される。もし割り
込み事象があればこのW/Cステージで報告を行ない,
命令は完了しない。本節では割り込みが発生せず,キャ
ッシュメモリ12からの読み出しに成功したものとす
る。
【0083】読み出されたデータ(C-CACHE-DATA)と,
GR書き込みレジスタ番号(W-WR-GR-ADR )は,次のB
ステージの始めに各々GR-WR-BUFF,GR-WR-BUFF-ADRに書
き込まれる。また,GR-WR-BUFFが有効であることを示す
B-GR-WR-BUFF-VALIDを'1' にセットする。このVALID フ
ラグは,RESET または後続のLD命令以外の命令におけ
るGR-WR-BUFF-ADRと同じ番号のレジスタに対する書き込
みで'0' にリセットされる。すなわち,B-GR-WR-BUFF-V
ALIDが'1' の時だけ,GR-WR-BUFFが有効である。
【0084】さらに,LD命令実行時にGR-WR-BUFFが有
効である場合には,一つ前に実行されたLD命令の結果
はGRに書かれていないので,GR-WR-BUFFに保持された
データをLD命令のW/Cステージで書き込む。もしL
D命令のWステージでGRの書き変えを行なったのに,
割り込みが発生したとしても,Bステージに進まないの
でGR-WR-BUFFには前の値が保持され,後続の命令はGR-W
R-BUFFの内容を正しく読むことができる。
【0085】GRを読む場合,GR-WR-BUFFが有効である
ときには一つ前に実行されたLD命令の結果はGRに書
かれていないので,読み出しレジスタ番号がGR-WR-BUFF
-ADRと一致したならGR-WR-BUFFを読み出す。 3.7 キャッシュミスヒット時の動作 GR-WR-BUFFが無効である場合にLD命令でミスヒットし
たときには,Bステージに進まないので,GR-WR-BUFF-V
ALIDは'0' のままで,後続の命令がGR-WR-BUFFから間違
ってデータを読むことはない。GR-WR-BUFFが有効である
場合には,LD命令でミスヒットしたとき,Wステージ
を終了することなく命令を中断し,割り込み処理プログ
ラムに制御が移る。GR-WR-BUFFの値がGRに書かれる
が,GR-WR-BUFF, GR-WR-BUFF-VALIDが有効であるので,
後続の命令はレジスタアドレスが一致したならGR-WR-BU
FFからデータを読み出す。割り込みプログラムの中でL
D命令が実行された場合には,前の節で示したように新
しい値がGR-WR-BUFFに書き込まれる。割り込み処理が終
ると,再度割り込んだLD命令が実行される。このとき
には,もっとも最近にLD命令で読まれたデータがGR-W
R-BUFFに入っており,そのデータをGRに書く。 4.本発明の変形,その他 4.1 GR部分書き込みがある場合 LD命令でレジスタの一部だけを変更する命令があった
場合には,以下の2つの方法で対処することが考えられ
る。 1)GR-WR-BUFFに書く前に書き込みレジスタの値を読み
出してマージしてからGR-WR-BUFFに書き込む。GRの読
み出しのためにもう1ポート読み出しポートを追加する
か,GRの読み出しのために,E,Wまたは新たに追加
した特別なステージでGRを読み出す必要がある。 2)GR-WR-BUFFにはLDした部分だけを保持し,またど
の部分を変更したかを保持するレジスタを持ち,後続命
令でGR-WR-BUFFを読み出す時にはGR-WR-BUFFの変更部分
を示す信号によってGRから読み出した信号とマージし
て使用する。
【0086】これらの2つの方法で,1)はハードウエ
アの増加が大きいかまたは性能が低下する欠点がある
が,2)ならば実現は容易である。 4.2 GR書き込みタイミング 前の節(2.5)では,GR-WR-BUFFの内容を次のLD命
令のときにだけGRに書き込んだが,GR書き込みのな
いときにはいつ行なってもよい。すなわち,E-WRITE 信
号が'0' の場合に,その次のサイクルで書き込む。この
論理を以下に示す。 NEXT-W-GR-WR-DATA <= C-CACHE-DATA when E-OP-LD = '1' and C-STAGE-RELEASE = '1' and C-LD-OP= '1' else GR-WR-BUFF when E-WRITE = '0' and GR-WR-BUFF-VALID = '1' else E-RESULT when E-STAGE-RELEASE = '1' else W-GR-WR-DATA ; NEXT-W-WR-GR-ADR <= C-GR-WR-ADR when E-OP-LD = '1' and C-STAGE-RELEASE = '1' and C-LD-OP = '1' else B-WR-GR-ADR when E-WRITE = '0' and GR-WR-BUFF-VALID = '1' else E-WR-GR-ADR when E-STAGE-RELEASE = '1' else W-WR-GR-ADR ; NEXT-W-WRITE <= '1' when E-OP-LD = '1' and C-STAGE-RELEASE = '1' and C-LD-OP = '1' else '1' when E-WRITE = '0' and GR-WR-BUFF-VALID = '1' else E-WRITE when E-STAGE-RELEASE = '1' else W-WRITE ; B-GR-WR-BUFF-VALIDをGR書き込みのときに'0' にして
もよいが,後続の非LD命令で同じレジスタ番号に書き
込みがなければ,次のLD命令まではGR-WR-BUFFの内容
はGRの内容と同じであるので,B-GR-WR-BUFF-VALID
を'1' のままとしておき,後続命令のソースオペランド
のレジスタ番号が一致したならGR-WR-BUFFのデータを読
み出せばよい。 4.3 パイプライン制御 前の節(3.2)ではパイプラインをインターロックさ
せて命令間のデータの依存等を解決したが,一般的には
インターロックする以外に無効命令をパイプラインに投
入し,待つ条件がなくなったなら本来の命令をパイプラ
インに流す方法がある。この様子を図4に示す。ほとん
どの命令はGRへの書き込みをしなければ無効命令と等
価である。また後続命令が先行命令からのバイパスを行
なうのは先行命令がGR書き込みをする場合のみであ
る。このようにGR書き込みの制御信号を無効化するこ
とで命令を無効化できる。論理は以下のようになる。 --共通 process(clock, reset) begin if reset = 1 then --リセット時の処理 E-WRITE <= '0' ; else if(clock ='1' and clock'event) then --クロック立ち上がり時の処理 E-WRITE <= NEXT-E-WRITE ; end if ; end if ; end process ; --インターロック方式 NEXT-E-WRITE <= D-WRITE when D-STAGE-RELEASE = '1' else E-WRITE ; --無効化方式 NEXT-E-WRITE <= D-WRITE when D-STAGE-RELEASE = '1' else '0' ; ここではGR書き込み制御信号のみを無効化している
が,この信号だけで命令の無効化ができない場合には,
少なくとも全てのEステージの信号を無効化すればよ
い。
【0087】
【発明の効果】以上説明したように,本発明によれば,
レジスタファイルの書き込みポートを増加させなくて
も,命令を処理するステージ数が異なる命令をパイプラ
インの乱れが発生しないように実行することが可能にな
り,パイプライン計算機の実行性能を向上させることが
できる。
【図面の簡単な説明】
【図1】本発明の原理説明図である。
【図2】本発明の実施例ブロック図である。
【図3】本発明の実施例を説明するためのレジスタファ
イル書き込みバッファを無効化する例を示す図である。
【図4】本発明の実施例を説明するための無効命令によ
るパイプライン制御の例を示す図である。
【図5】従来のパイプライン制御の例を示す図である。
【図6】従来のパイプライン制御の例を示す図である。
【図7】従来の分岐命令を含むパイプライン実行説明図
である。
【図8】従来技術によるバイパス制御等の説明図であ
る。
【符号の説明】
10 レジスタファイル 11 演算器 12 キャッシュメモリ 13 レジスタファイル書き込みバッファ 20 レジスタ番号保持回路 21 ロード命令実行中表示回路 22 レジスタ書き込み表示回路 23 レジスタファイル書き込み制御信号生成回路 24 書き込みレジスタ番号選択回路 25 レジスタ書き込みデータ選択回路 26 バッファ保持レジスタ番号保持回路 27 バッファ有効表示回路 28 Eステージバイパス制御回路 29 Cステージバイパス制御回路 30 バッファ読み出し制御回路 31 バッファ有効化制御回路 32,33 オペランド選択回路

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 命令を複数のステージの処理に分けて実
    行するパイプライン計算機であって,レジスタファイル
    (10)に書くデータが演算やメモリアクセスなどによって
    生成されるまでの結果生成ステージ数が異なる命令を持
    つ計算機のレジスタ書き込み制御方法において,レジス
    タファイル(10)に書くデータを一時的に保持するレジス
    タファイル書き込みバッファ(13)を設け,結果生成ステ
    ージ数が他の命令より多い命令において生成されたレジ
    スタファイル(10)に書くデータを,レジスタファイル(1
    0)に書く代わりに前記レジスタファイル書き込みバッフ
    ァ(13)に書き,後続する命令においてレジスタファイル
    (10)の書き込みポートが空いたときに,前記レジスタフ
    ァイル書き込みバッファ(13)のデータをレジスタファイ
    ル(10)に書き込み,かつ,後続する命令におけるレジス
    タ読み出し要求が,前記レジスタファイル書き込みバッ
    ファ(13)が持つレジスタのデータに対して行われたと
    き,前記レジスタファイル書き込みバッファ(13)からデ
    ータを供給するようにしたことを特徴とするレジスタ書
    き込み制御方法。
  2. 【請求項2】 請求項1記載のレジスタ書き込み制御方
    法において,結果生成ステージ数が他の命令より多い命
    令が連続するとき,後の命令におけるメモリアクセスの
    ステージ(W/C) でレジスタファイル(10)の書き込みポー
    トが空いたときに,前の命令におけるメモリアクセスで
    得たデータを直接バイパスしてレジスタファイル(10)に
    書き込むことを特徴とするレジスタ書き込み制御方法。
  3. 【請求項3】 命令を複数のステージの処理に分けて実
    行するパイプライン計算機であって,レジスタファイル
    (10)に書くデータが演算やメモリアクセスなどによって
    生成されるまでの結果生成ステージ数が異なる命令を持
    つ計算機のレジスタ書き込み回路において,レジスタフ
    ァイル(10)に書くデータを一時的に保持するレジスタフ
    ァイル書き込みバッファ(13)と,レジスタファイル書き
    込みバッファ(13)がレジスタファイル(10)に書くデータ
    を保持するとき,レジスタファイル書き込みバッファ(1
    3)が有効であることを示すバッファ有効表示回路と,結
    果生成ステージ数が他の命令より多い命令において生成
    されたレジスタファイル(10)に書くデータを,前記レジ
    スタファイル書き込みバッファ(13)に書き込むことを指
    示する回路と,後続する命令においてレジスタファイル
    (10)の書き込みポートが空いたときに,前記レジスタフ
    ァイル書き込みバッファ(13)のデータを選択してレジス
    タファイル(10)に書き込むレジスタ書き込みデータ選択
    回路と,後続する命令におけるレジスタ読み出し要求
    が,前記レジスタファイル書き込みバッファ(13)が持つ
    レジスタのデータに対して行われたとき,前記レジスタ
    ファイル書き込みバッファ(13)からデータを供給するオ
    ペランド選択回路とを備えたことを特徴とするレジスタ
    書き込み回路。
JP11201092A 1992-05-01 1992-05-01 レジスタ書き込み制御方法および回路 Withdrawn JPH05307483A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11201092A JPH05307483A (ja) 1992-05-01 1992-05-01 レジスタ書き込み制御方法および回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11201092A JPH05307483A (ja) 1992-05-01 1992-05-01 レジスタ書き込み制御方法および回路

Publications (1)

Publication Number Publication Date
JPH05307483A true JPH05307483A (ja) 1993-11-19

Family

ID=14575714

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11201092A Withdrawn JPH05307483A (ja) 1992-05-01 1992-05-01 レジスタ書き込み制御方法および回路

Country Status (1)

Country Link
JP (1) JPH05307483A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6016541A (en) * 1997-10-02 2000-01-18 Fujitsu Limited Instruction controlling system and method thereof
JP2013257801A (ja) * 2012-06-14 2013-12-26 Toshiba Corp サーバコンピュータおよびドライブ制御装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6016541A (en) * 1997-10-02 2000-01-18 Fujitsu Limited Instruction controlling system and method thereof
JP2013257801A (ja) * 2012-06-14 2013-12-26 Toshiba Corp サーバコンピュータおよびドライブ制御装置
US9170934B2 (en) 2012-06-14 2015-10-27 Kabushiki Kaisha Toshiba Server and drive control device

Similar Documents

Publication Publication Date Title
US4896259A (en) Apparatus for storing modifying data prior to selectively storing data to be modified into a register
US5471598A (en) Data dependency detection and handling in a microprocessor with write buffer
US4740893A (en) Method for reducing the time for switching between programs
US5636353A (en) Superscalar processor with direct result bypass between execution units having comparators in execution units for comparing operand and result addresses and activating results bypassing
US6055625A (en) Pipeline computer with a scoreboard control circuit to prevent interference between registers
JP2875909B2 (ja) 並列演算処理装置
JP3151444B2 (ja) ロード命令を処理する方法及びスーパースカラ・プロセッサ
EP0491693B1 (en) Improved cpu pipeline having register file bypass on update/access address compare
US5740398A (en) Program order sequencing of data in a microprocessor with write buffer
US6981131B2 (en) Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction
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
US5515521A (en) Circuit and method for reducing delays associated with contention interference between code fetches and operand accesses of a microprocessor
JPH0496825A (ja) データ・プロセッサ
US4992932A (en) Data processing device with data buffer control
US5930520A (en) Pipelining device in a parallel processing apparatus and an instruction supplying method therefor
EP0378415A2 (en) Multiple instruction dispatch mechanism
JP2535252B2 (ja) 並列処理装置
JP2779557B2 (ja) 並列演算処理装置
US6115730A (en) Reloadable floating point unit
EP0898226B1 (en) Data processor with register file and additional substitute result register
KR100241970B1 (ko) 파이프라인 처리를 수행하는 데이터 처리 장치
JPH05307483A (ja) レジスタ書き込み制御方法および回路
US6016544A (en) Apparatus and method for tracking changes in address size and for different size retranslate second instruction with an indicator from address size
EP0177712B1 (en) Masked data fetch and modifying device
JP2763450B2 (ja) パイプライン処理データ処理装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19990706