JP2001092629A - バイパス制御回路 - Google Patents

バイパス制御回路

Info

Publication number
JP2001092629A
JP2001092629A JP27117999A JP27117999A JP2001092629A JP 2001092629 A JP2001092629 A JP 2001092629A JP 27117999 A JP27117999 A JP 27117999A JP 27117999 A JP27117999 A JP 27117999A JP 2001092629 A JP2001092629 A JP 2001092629A
Authority
JP
Japan
Prior art keywords
instruction
register
flip
output
control circuit
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
JP27117999A
Other languages
English (en)
Other versions
JP3445535B2 (ja
Inventor
Tatsuo Teruyama
山 竜 生 照
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.)
Toshiba Corp
Original Assignee
Toshiba 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
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP27117999A priority Critical patent/JP3445535B2/ja
Priority to US09/667,500 priority patent/US6772318B1/en
Publication of JP2001092629A publication Critical patent/JP2001092629A/ja
Application granted granted Critical
Publication of JP3445535B2 publication Critical patent/JP3445535B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage

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)

Abstract

(57)【要約】 【課題】 命令バス上の実行されるべき命令のソース・
レジスタに、短時間でデータを設定できるようにしたバ
イパス制御回路を提供する。 【解決手段】 本発明のバイパス制御回路1は、命令バ
ス上のデスティネーション・レジスタRdのレジスタ番
号を転送するフリップフロップ41a〜41cの出力同
士を比較する複数のコンパレータ45〜47を備えてい
る。これらコンパレータ45〜47の比較結果と、命令
バス上のソース・レジスタのレジスタ番号とを比較する
コンパレータ42〜44の比較結果とを利用することに
より、実行すべき命令のソース・レジスタに入力される
データのバイパス経路を短時間で設定することができ
る。複数の一致が検出されると、初段側のフリップフロ
ップの出力に基づいてバイパス経路を設定するため、古
いデータを誤ってソース・レジスタに入力するような不
具合が起きなくなる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、命令バス上の命令
を実行する際に、命令実行に用いられるソース・レジス
タの内容を高速に取得するためにバイパス経路を設ける
技術に関し、特に、プロセッサ内部で用いられるバイパ
ス制御回路に関する。
【0002】
【従来の技術】最近のプロセッサは、処理効率を高める
ために、命令を複数の段階(ステージ)に細分化して並
列的に実行する、いわゆるパイプライン処理を行うこと
が多い。図7はパイプライン処理の概要を示すフローチ
ャートである。
【0003】まず、命令が格納された命令キャッシュか
ら、実行すべき命令を取り出す(ステップS1)。次
に、命令をデコードするとともに、ソース・レジスタか
らソース・オペランドを読み出す(ステップS2)。
【0004】ここで、プロセッサが実行する命令は、図
8に示すように、命令の種類を表すオペレーション・コ
ードOpと、命令の実行結果の格納先であるデスティネー
ション・オペランドRdと、命令の実行に用いられるソー
ス・オペランドRs,Rtとで構成される。
【0005】以下では、デスティネーション・オペラン
ドがレジスタの場合は、デスティネーション・レジスタ
と呼ばれ、ソース・オペランドがレジスタの場合は、ソ
ース・レジスタと呼ばれる。デスティネーション・レジ
スタやソース・レジスタは、プロセッサ内のレジスタフ
ァイル33に格納される。
【0006】上述したステップS2において、レジスタ
ファイル33からソース・レジスタを読み出したら、次
に、デコードした命令を実行する(ステップS3)。次
に、演算結果をデスティネーション・レジスタに書き戻
す(ステップS4)。
【0007】命令の種類により、命令実行に要するサイ
クル数が異なるため、ステップS4では、命令の実行結
果を複数段のフリップフロップで転送させて時間調整を
行っている。
【0008】上述したステップS2では、該当するソー
スレジスタの内容をレジスタファイルから読み出してい
る。先行する命令のデスティネーションレジスタ番号
と、このソースレジスタ番号が同一であり、先行命令の
演算が終了していてその結果はもうすでに得られてお
り、その結果がまだレジスタファイルに書き込まれてい
ない場合、すなわち時間調整のために書き込みがまだ終
了していない時点では、デスティネーションレジスタの
内容をソースレジスタにバイパスして命令実行を行う。
【0009】図9はこのようなバイパスを制御する従来
のバイパス制御回路の概略ブロック図である。図9のバ
イパス制御回路は、命令キャッシュから出力された命令
を、A〜Dの4つのステージに細分化して実行し、最終
的な実行結果をレジスタファイル33中のデスティネー
ション・レジスタに書き戻す例を示している。
【0010】また、命令の種類によって、最終結果が得
られるステージは異なっている。加減算のような単純な
命令の場合は、Aステージの終了時に演算結果は確定す
る。複雑なシフト命令は Bステージの終了時に演算結果
がきまり、ロードストア命令の結果はCステージ終了時
に得られる。32ビットの乗算命令などの計算時間のかか
る命令はDステージの後にならないと結果がでない。こ
のように、最終結果が得られるステージが命令によって
異なるが、レジスタファイルへのデータの下記戻しのタ
イミングを同一にしてある。このため、特に短時間で結
果が得られる命令に対しては、最終演算結果は得られて
いるが、レジスタファイルにはまだ書き込まれていない
時間帯が生じる。この時間帯に最終演算結果を後続命令
が参照する場合にデータを転送するのがバイパスであ
る。
【0011】図9のバイパス制御回路は、A〜Dの各ス
テージごとに、フリップフロップ41a〜41dとコン
パレータ42〜44とを備えている。各フリップフロッ
プ41a〜41dは、命令キャッシュ11から出力され
たデスティネーション・レジスタRdのレジスタ番号
を、プロセッサのシステムクロックに同期させて順次に
転送する。
【0012】コンパレータ42は、Aステージのフリッ
プフロップ41aの出力と、命令キャッシュ11から出
力されたソース・レジスタのレジスタ番号の出力とを比
較し、比較結果を出力する。コンパレータ43は、Bス
テージのフリップフロップ41bの出力と、命令キャッ
シュ11から出力されたソース・レジスタのレジスタ番
号の出力とを比較し、比較結果を出力する。コンパレー
タ44は、Cステージのフリップフロップ41cの出力
と、命令キャッシュ11から出力されたソース・レジス
タのレジスタ番号の出力とを比較し、比較結果を出力す
る。
【0013】コンパレータ42〜44の比較結果をイン
バータIV1〜IV6とANDゲートG1〜G3に入力して論
理演算を行うことにより、最終的なバイパス経路が決定
される。
【0014】また、複数のコンパレータ42〜44で一
致が検出されると、優先順位付けを行い、命令キャッシ
ュ11に近い方のステージに対応するフリップフロップ
の出力を優先的に、次に実行すべき命令のソース・オペ
ランドとして利用する。
【0015】これは、先行する複数の命令のデスティネ
ーションレジスタが同一であった場合に相当し、この場
合は、そのうちもっとも最近の命令の演算結果をソース
オペランドとして利用しなければならないためである。
【0016】
【発明が解決しようとする課題】スーパースケーラを採
用するプロセッサやパイプライン・ステージの段数が多
いプロセッサでは、バイパス対象となるフリップフロッ
プの数が多いため、優先順位付けを行うゲート回路の規
模が大きくなる。すなわち、ゲート段数が増えるため、
命令の実行処理に時間がかかるという問題がある。
【0017】通常のプロセッサでは、命令キャッシュか
ら命令を取り出すのに比較的時間がかかるため、図9の
太線経路、すなわち、命令バスからレジスタ番号の比較
を行って優先順位づけを行う経路がタイミング上のクリ
ティカルパスになりやすかった。また、このようなクリ
ティカルパスの存在により、プロセッサの動作周波数が
制限されるおそれがあった。
【0018】本発明は、このような点に鑑みてなされた
ものであり、その目的は、命令バス上の実行されるべき
命令のソース・レジスタに、短時間でデータを設定でき
るようにしたバイパス制御回路を提供することにある。
【0019】
【課題を解決するための手段】上述した課題を解決する
ために、請求項1の発明は、命令バス上に縦続接続さ
れ、命令の格納先を示すデスティネーション・レジスタ
のレジスタ番号をシステムクロックに同期させて順次転
送する複数のフリップフロップと、前記複数のフリップ
フロップのうち、任意の2つのフリップフロップの出力
同士をそれぞれ比較する第1の比較手段と、命令バス上
の実行されるべき命令のソース・レジスタのレジスタ番
号と前記複数のフリップフロップの出力のそれぞれとを
比較する第2の比較手段と、前記第1および第2の比較
手段の比較結果に基づいて、命令バス上の実行されるべ
き命令のソース・レジスタに入力されるデータのバイパ
ス経路を設定するバイパス経路設定手段と、を備える。
【0020】請求項1の発明では、デスティネーション
・レジスタのレジスタ番号を順次転送する複数のフリッ
プフロップのうち、任意の2つのフリップフロップの出
力同士をそれぞれ比較する第1の比較手段を設けたた
め、その比較結果を利用することにより、実行すべき命
令のソース・レジスタに入力されるデータのバイパス経
路を短時間で設定することができる。
【0021】請求項2の発明では、任意の2つのフリッ
プフロップの出力同士を比較した結果、二組以上の一致
が検出されると、初段に近い側のフリップフロップの出
力に基づいてバイパス経路を設定するため、古いデータ
を誤ってソース・レジスタに設定するような不具合が起
きなくなる。
【0022】請求項3の発明では、第1の比較手段によ
り一致が検出されると、一致した2つのフリップフロッ
プのうち、後段に近い側のフリップフロップの出力を比
較対象から外すため、効率的に比較対象の絞り込みを行
うことができ、比較処理時間を短縮できる。
【0023】請求項4の発明では、第1および第2の比
較手段による比較処理を同時に行うため、比較処理時間
をより短縮できる。
【0024】請求項5の発明では、フリップフロップの
出力の一致検出結果に応じて、レジスタファイルから読
み出したデータをソースレジスタとして命令に与えるこ
とができる。
【0025】
【発明の実施の形態】以下、本発明に係るバイパス制御
回路について、図面を参照しながら具体的に説明する。
以下では、バイパス制御回路をプロセッサの内部に設け
る例について説明する。
【0026】図1は本発明に係るバイパス制御回路の一
実施形態のブロック図である。図1には、一実施形態の
バイパス制御回路1と、命令実行部2とが図示されてい
る。図1のバイパス制御回路1は、命令キャッシュから
出力された命令を4つのステージA〜Dに細分化して実
行するものである。
【0027】図2は図1のバイパス制御回路1を有する
プロセッサの全体構成を示すブロック図である。まず、
図1のバイパス制御回路1の構成を説明する前に、図2
のプロセッサの全体構成について簡単に説明する。
【0028】図2のプロセッサは、外部バスB1に接続さ
れたBIU(バス・インタフェース・ユニット)3と、プロ
セッサにより実行される命令をフェッチするIFU(命令フ
ェッチ・ユニット)4と、仮想アドレスを物理アドレス
に変換するMMU(メモリ管理ユニット)5と、ロード/ス
トアに関する命令を実行するLSU(ロード/ストア・ユニ
ット)6と、ロード/ストア以外の命令を実行する複数
の実行ユニット7a,7b ,7cと、浮動小数点演算を行うFPU
(浮動小数点ユニット)8a,8bと、プロセッサ内の各ブロ
ックを制御する制御論理部9とを備えている。
【0029】IFU4は、分岐命令等の分岐先を格納するB
TACを参照してPC(プログラム・カウンタ)を生成するPC
パイプ10と、命令を一時的に格納するICACHE(命令キ
ャッシュ)11と、命令のタイプを識別して識別した命
令を実行するための実行ユニットを選択する命令発行ス
テージング・ユニット12とを有する。図1のバイパス
制御回路1と命令実行部2は、命令発行ステージング・
ユニット12の内部に設けられる。
【0030】MMU5は、仮想アドレスを物理アドレスに
変換するための3つのTLBs(Translation Lookaside Buf
fers)を有する。プロセッサにより必要とされるアドレ
ス変換情報、例えば、物理ページ番号やメモリ保護情報
は、TLBsに書き込まれる。この情報に基づいて、MMU5
は、物理アドレスへの変換を行う。
【0031】MMU5内の3種類のTLBsは、JTLB(Joint Tr
anslation Lookaside Buffer)13と、ITLB(Instructio
n Translation Lookaside Buffer)14と、DTLB(Data T
ranslation Lookaside Buffer)15とである。
【0032】ITLB14とDTLB15は、総称してmicro TL
Bと呼ばれる。ITLB14は、命令の仮想アドレスのdatap
athに直接接続された専用のTLBである。DTLB15は、デ
ータの仮想アドレスのdatapathに直接接続された専用の
TLBである。これらTLBsのエントリー数は少ないが、高
速度にアドレス変換を行う。JTLB13により生成された
変換テーブルの一部が、必要に応じて、ITLB14やDTLB
15にコピーされる。
【0033】JTLB13はソフトウェアにより制御される
のに対し、micro TLBsとJTLBとのcoherencyはハードウ
ェアにより維持される。マイクロプロセッサは、JTLB1
3内に変換テーブルが存在しない場合には、例外を発行
する。exception handlerは、OSのメモリ上のページテ
ーブルから対応するページを検索し、JTLB13に書き込
む。
【0034】LSU4は、外部メモリに対する読み書きデ
ータを一時的に格納するDCACHE(データ・キャッシュ)1
6と、キャッシュ以外の特定の目的に用いられるSPRAM
(Scratch Pad RAM)17と、DCACHE16とSPRAM17にア
クセスするのに必要な仮想アドレスを生成するアドレス
発生器(Virtual Address Computation)18とを有す
る。
【0035】制御論理部 7は、プロセッサ内の各ブロッ
クを制御する。制御論理部 7内に制御レジスタ 19が
設けられている。
【0036】次に、図1の左側に示す命令実行部2の構
成を説明する。命令実行部2は、各ステージごとに演算
器31a〜31cとフリップフロップ32a〜32cと
を備えている。最終段のフリップフロップ32cの出力
は、レジスタファイル33内のデスティネーション・レ
ジスタRdに書き戻される。
【0037】レジスタファイル33は、命令キャッシュ
11から出力されたソース・レジスタRs,Rtの各アド
レス値に基づいて、ソース・レジスタRs,Rtの内容を
出力する。また、レジスタファイル33は、最終段のフ
リップフロップ32cの出力を、命令キャッシュ11か
ら出力されたデスティネーション・レジスタRdの書き
込みアドレスに格納する。
【0038】レジスタファイル33から出力されたソー
ス・レジスタRs,Rt中のデータはそれぞれ、フリップ
フロップ34a,34bでラッチされる。
【0039】フリップフロップ34a,34bの後段に
はセレクタ35a,35bが設けられている。セレクタ
35aは、現在転送中のデスティネーション・レジスタ
Rdに書き戻されるべきデータとフリップフロップ34
aでラッチされたソース・レジスタRs中のデータとの
中から、いずれか一つを選択する。同様に、セレクタ3
5bは、現在転送中のデスティネーション・レジスタに
書き戻されるべきデータとフリップフロップ34bでラ
ッチされたソース・レジスタRs中のデータとの中か
ら、いずれか一つを選択する。
【0040】セレクタ35a,35bの選択は、後述す
るバイパス制御回路1からの出力信号selRs[0:3]に基づ
いて行われる。
【0041】セレクタ35a,35bの出力は演算器3
1aに入力されて、命令キャッシュ11から出力された
命令を実行する。演算器31aの演算結果はフリップフ
リップ32aに入力された後、次のステージの演算器3
1bに入力されて命令の実行が行われる。以下同様に、
Dステージまで命令の実行が継続して行われる。
【0042】積和演算命令や除算命令などの複雑な演算
を行う場合と、加減算命令などの単純な演算を行う場合
とでは、命令の実行に要するサイクル数が異なるが、図
2のプロセッサでは、命令の実行を開始してからレジス
タファイル33に書き戻すまでのサイクル数をすべて共
通にしている。
【0043】例えば、1マシンサイクルで結果が得られ
る単純な命令の実行を行う場合は、Aステージ内の演算
器31aで得られた演算結果を、Dステージまで転送さ
せてからレジスタファイル33に書き込む。一方、複雑
な命令の実行を行う場合は、複数のステージ(最大でD
ステージまで)を利用して演算を行った後、レジスタフ
ァイル33に書き込む。これにより、命令の種類によら
ずに、レジスタファイル33に書き戻すまでのサイクル
数を共通化することができる。
【0044】最終段であるDステージのフリップフロッ
プ32cの出力は、命令のデスティネーション・レジス
タ番号に対応するレジスタファイル33内の格納位置に
書き戻される。
【0045】次に、図1のバイパス制御回路1の構成を
説明する。図1のバイパス制御回路1は、命令キャッシ
ュ11から出力されたソース・レジスタのレジスタ番号
が、各ステージ間で転送中のデスティネーション・レジ
スタRdのレジスタ番号と一致するか否かの判断を短時
間で行えるようにした点に特徴がある。
【0046】図1では、図9に示す従来のバイパス制御
回路1と共通する構成部分には同一符号を付しており、
以下では、相違点を中心に説明する。
【0047】図1のバイパス制御回路1は、図9の構成
に加えて、命令キャッシュ11から出力されたデスティ
ネーション・レジスタRdのレジスタ番号を転送するフ
リップフロップ41a〜41cの出力同士を比較する複
数のコンパレータ45〜47を備えている。
【0048】ここで、コンパレータ45〜47は第1の
比較手段に対応し、コンパレータ42〜44は第2の比
較手段に対応し、ANDゲートG1〜G4とインバータIV
1〜IV6はバイパス経路設定手段に対応する。また、図
1のセレクタ35a,35bは選択手段に対応する。
【0049】コンパレータ45は、Aステージのフリッ
プフロップ41aの出力とBステージのフリップフロッ
プ41bの出力とを比較する。また、コンパレータ46
は、Aステージのフリップフロップ41aの出力とCス
テージのフリップフロップ41cの出力とを比較する。
また、コンパレータ47は、Bステージのフリップフロ
ップ41bの出力とCステージのフリップフロップ41
cの出力とを比較する。
【0050】コンパレータ45の出力はインバータIV4
で反転される。このインバータIV4の出力は、コンパレ
ータ45で一致が検出されると、ローレベルになる。
【0051】コンパレータ46,47の出力はそれぞれ
インバータIV5,IV6に入力されて反転された後、AND
ゲートG4に入力される。このANDゲートG4の出力
は、コンパレータ46,47のいずれかで一致が検出さ
れると、ローレベルになる。
【0052】コンパレータ43は、図9の回路と同様
に、Bステージのフリップフロップ41bの出力と命令
キャッシュ11から出力されたソース・レジスタのレジ
スタ番号とを比較する。ANDゲートG2は、インバータI
V4の出力がローレベルの場合、すなわち、Aステージ
とBステージの各フリップフロップ41a,41bの出
力が一致すれば、ローレベルになる。
【0053】コンパレータ44は、図9の回路と同様
に、Cステージのフリップフロップ41cの出力と命令
キャッシュ11から出力されたソース・レジスタのレジ
スタ番号とを比較する。ANDゲートG3は、ANDゲートG
4の出力がローレベルの場合、すなわち、Bステージと
Cステージの各フリップフロップ41c,41dの出力が
一致すれば、ローレベルになる。
【0054】ANDゲートG1の出力selRs[0]、コンパレ
ータ42の出力selRs[1]、ANDゲートG2の出力selRs
[2]、およびANDゲートG3の出力selRs[3]は、いったん
フリップフロップで受けた後、次のクロックにて、その
フリップフロップの出力値によってセレクタ35aの選
択対象が決定される。
【0055】具体的には、セレクタ35aは、selRs[0]
=1の場合には、レジスタファイル33からソース・レ
ジスタ中のデータを選択し、selRs[1]=1の場合には、
Bステージのフリップフロップ32aの出力を選択し、
selRs[2]=1の場合には、Cステージのフリップフロッ
プ32bの出力を選択し、selRs[3]=1の場合には、D
ステージのフリップフロップ32cの出力を選択する。
【0056】なお、図1では省略しているが、図1のバ
イパス制御回路1がもう一組設けられている。省略した
バイパス制御回路1の出力selRt[0:3]は、図1のセレク
タ35bの選択を制御する。
【0057】図3はプロセッサが実行する命令列の一例
を示す図である。図3は、4番目に実行されるSUB命令
のソース・レジスタRsのレジスタ番号R1が、その命
令に先行して実行される1〜3番目の各命令のデスティ
ネーション・レジスタRdのレジスタ番号R1に一致し
ている例を示している。
【0058】以下、図3の命令列を実行する場合を例に
とって、図1のバイパス制御回路1の処理動作を説明す
る。
【0059】本実施形態のプロセッサは、図3の命令列
を細分化してパイプライン処理を行う。図4は図3の命
令列を実行する場合の各ステージの処理状況を示す図で
ある。図示のように、1番目のSLL命令はT1〜T4サ
イクルの間に実行され、2番目のXOR命令はT2〜T5
サイクルの間に実行される。また、3番目のADD命令は
T3〜T6サイクルの間に実行され、4番目のSUB命令
はT4〜T7サイクルの間に実行される。
【0060】図1のバイパス制御回路1は、演算器31
a〜31cが命令を実行するタイミングよりも1サイク
ル早いタイミングで処理を行う。その理由は、命令キャ
ッシュ11から出力された命令がAステージでの実行処
理を開始するまでに、実行すべきソース・レジスタ中の
データが決まっていなければならないためである。
【0061】例えば、図3の例では、1番目のSLL命令
はT0サイクルまでに図1のバイパス制御回路1の処理
を終える必要がある。同様に、2番目のXOR命令はT1
サイクルまでに、3番目のADD命令はT2サイクルまで
に、4番目のSUB命令はT3サイクルまでにバイパス経
路を決定しておく必要がある。
【0062】以下では、T3サイクルのときに、4番目
のSUB命令が命令キャッシュ11から出力された場合に
ついて説明する。このSUB命令のソース・レジスタRsの
レジスタ番号は、1〜3番目の命令のデスティネーショ
ン・レジスタRdのレジスタ番号と一致するため、図1
の比較器42〜47はいずれも、一致したことを示すハ
イレベルを出力する。したがって、インバータIV4とAN
DゲートG4の出力はいずれもローレベルになり、selRs
[0:3]のうち、selRs[1]のみがハイレベルになる。
【0063】これにより、図3の例の場合、3番目のAD
D命令の実行結果であるデスティネーション・レジスタ
Rd中のデータが、これから実行すべき4番目のSUB命令
のソース・レジスタRsとして用いられる。
【0064】このように、図1のバイパス制御回路1
は、フリップフロップ41a〜41dの出力同士を比較
するコンパレータ45〜47で一致が検出されると、比
較したフリップフロップ41a〜41dのうち、後段側
のフリップフロップの出力をバイパス対象から外すこと
で、バイパス対象の絞り込みを行っている。これによ
り、バイパス経路を短時間で検索することができるよう
になる。
【0065】図5は本実施形態のバイパス制御回路1の
タイミング図である。図5に示すように、命令キャッシ
ュ11の出力である命令バス上のデータが確定した時刻
t1から、図1のバイパス制御回路1の各コンパレータ
42〜44での比較処理が始まり、時刻t2のときにコ
ンパレータ42〜44から比較結果が出力される。その
後、時刻t3のときに、セレクタ35a,35bに入力
されるセレクト信号selRs[0:3]の論理が確定する。
【0066】一方、フリップフロップ41a〜41d
は、サイクルタイムの最初(システムクロックの立ち上
がりエッジ)から確定しているため、コンパレータ 45
〜47の出力は十分早いタイミングで確定する。また、
それに続く IV4〜IV6 およびG4 の出力も十分早いタイ
ミングで確定し、これらはタイミング上のクリティカル
パスにならない。
【0067】selRs[0:3]は不図示のフリップフロップに
入力されて、システムクロックの立ち上がりエッジが入
力された時刻t4でラッチされた後、図1のセレクタ3
5aに入力されて、バイパス経路の選定が行われる。
【0068】図5の時刻t1〜t3までは、システムク
ロックの1サイクル内に行う必要がある。また、時刻t
3とt4との時間差は、selRs[0:3]をラッチする不図示
のフリップフロップのセットアップ時間以上必要であ
る。
【0069】すなわち、システムクロックのサイクルタ
イムは、命令キャッシュ11へのアクセス時間と、図1
のコンパレータ42〜44の比較処理時間と、図1のゲ
ート回路G1〜G3の論理演算時間と、selRs[0:3]をラ
ッチするフリップフロップのセットアップ時間とを併せ
た時間よりも長くなければならない。
【0070】一方、図6は図9に示す従来のバイパス制
御回路1のタイミング図である。図5と図6を比較すれ
ばわかるように、従来のバイパス制御回路1は、ゲート
回路の論理演算時間、すなわち、t2からt3までの時
間が本実施形態よりも長くかかるため、プロセッサのサ
イクルタイムをあまり短くできない。逆にいえば、本実
施形態の場合、ゲート回路の回路規模を最小にできるた
め、論理演算時間が短くて済み、従来よりもプロセッサ
のサイクルタイムを短くでき、プロセッサのシステムク
ロックの動作周波数をより高くすることができる。
【0071】このように、本実施形態では、すでに実行
されてステージ間を転送中のデスティネーション・レジ
スタRdのレジスタ番号を各ステージ間で比較し、その
比較結果と、実行すべき命令のソース・レジスタのレジ
スタ番号と各ステージのデスティネーション・レジスタ
Rdとの比較結果とに基づいて、バイパス経路を決定す
るようにしたため、比較処理に要するゲート回路の段数
を少なくすることができ、バイパス経路の決定に要する
時間を従来よりも短くできる。したがって、その分、プ
ロセッサのシステムクロックの動作周波数を高くするこ
とができる。
【0072】上述した実施形態では、4つのステージに
分けてパイプライン処理を行う例を説明したが、パイプ
ライン処理のステージ数は4段に限定されない。また、
図1では、インバータIV1〜IV7とANDゲートG1〜G
4でゲート回路を構成する例を説明したが、ゲート回路
を構成する論理素子の種類や回路構成には特に制限はな
い。
【0073】また、上述した実施形態では、パイプライ
ンが1本だけ設けられている例を説明したが、パイプラ
インの本数には特に制限はない。
【0074】
【発明の効果】以上詳細に説明したように、本発明によ
れば、デスティネーション・レジスタのレジスタ番号を
順次転送する複数のフリップフロップのうち、任意の2
つのフリップフロップの出力同士をそれぞれ比較する第
1の比較手段を設けたため、その比較結果を利用するこ
とにより、実行すべき命令のソース・レジスタに入力さ
れるデータのバイパス経路を短時間で設定することがで
きる。
【0075】また、第1の比較手段により、複数の一致
が検出されると、初段側のフリップフロップの出力に基
づいてバイパス経路を設定するため、古いデータを誤っ
てソース・レジスタに入力するような不具合が生じなく
なる。
【図面の簡単な説明】
【図1】本発明に係るバイパス制御回路の一実施形態の
ブロック図。
【図2】図1のバイパス制御回路を有するプロセッサの
全体構成を示すブロック図。
【図3】プロセッサが実行する命令列の一例を示す図。
【図4】図3の命令列を実行する場合の各ステージの処
理状況を示す図。
【図5】本実施形態のバイパス制御回路のタイミング
図。
【図6】図9に示す従来のバイパス制御回路のタイミン
グ図。
【図7】パイプライン処理の概要を示すフローチャー
ト。
【図8】プロセッサが実行する命令の形式を示す図。
【図9】従来のバイパス制御回路の概略ブロック図。
【符号の説明】
1 バイパス制御回路 2 命令実行部 3 BIU 4 IFU 5 MMU 6 LSU 7a,7b,7c 実行ユニット 8a,8b FPU 9 制御論理部 10 PCパイプ 11 命令キャッシュ 12 命令発行ステージング・ユニット 31a〜31c 演算器 32a〜32c,34a,34b,41a〜41d フ
リップフロップ 33 レジスタファイル 42〜47 コンパレータ

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】命令バス上に縦続接続され、命令の格納先
    を示すデスティネーション・レジスタのレジスタ番号を
    システムクロックに同期させて順次転送する複数のフリ
    ップフロップと、 前記複数のフリップフロップのうち、任意の2つのフリ
    ップフロップの出力同士をそれぞれ比較する第1の比較
    手段と、 命令バス上の実行されるべき命令のソース・レジスタの
    レジスタ番号と前記複数のフリップフロップの出力のそ
    れぞれとを比較する第2の比較手段と、 前記第1および第2の比較手段の比較結果に基づいて、
    命令バス上の実行されるべき命令のソース・レジスタに
    入力されるデータのバイパス経路を設定するバイパス経
    路設定手段と、を備えることを特徴とするバイパス制御
    回路。
  2. 【請求項2】前記バイパス経路設定手段は、前記第1お
    よび第2の比較手段により二組以上の一致が検出される
    と、初段に近い側のフリップフロップの出力に基づいて
    前記バイパス経路を設定することを特徴とする請求項1
    に記載のバイパス制御回路。
  3. 【請求項3】前記バイパス経路設定手段は、前記第1の
    比較手段により一致が検出されると、一致した2つのフ
    リップフロップのうち、後段に近い側のフリップフロッ
    プの出力を比較対象から外すことを特徴とする請求項2
    に記載のバイパス制御回路。
  4. 【請求項4】前記第1の比較手段による比較処理と前記
    第2の比較手段による比較処理とを同タイミングで行う
    ことを特徴とする請求項1〜3のいずれかに記載のバイ
    パス制御回路。
  5. 【請求項5】前記第1または第2の比較手段による比較
    処理を行った結果、命令バス上の実行されるべき命令の
    ソース・レジスタのレジスタ番号に一致する前記フリッ
    プフロップの出力が存在する場合には、該出力に基づい
    て前記バイパス経路を設定し、命令バス上の実行される
    べき命令のソース・レジスタのレジスタ番号に一致する
    前記フリップフロップの出力が存在しなかった場合に
    は、レジスタファイルから前記命令のソース・レジスタ
    の内容を読み出す選択手段を備えることを特徴とする請
    求項1〜4のいずれかに記載のバイパス制御回路。
JP27117999A 1999-09-24 1999-09-24 バイパス制御回路 Expired - Fee Related JP3445535B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP27117999A JP3445535B2 (ja) 1999-09-24 1999-09-24 バイパス制御回路
US09/667,500 US6772318B1 (en) 1999-09-24 2000-09-22 Bypass control circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP27117999A JP3445535B2 (ja) 1999-09-24 1999-09-24 バイパス制御回路

Publications (2)

Publication Number Publication Date
JP2001092629A true JP2001092629A (ja) 2001-04-06
JP3445535B2 JP3445535B2 (ja) 2003-09-08

Family

ID=17496457

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27117999A Expired - Fee Related JP3445535B2 (ja) 1999-09-24 1999-09-24 バイパス制御回路

Country Status (2)

Country Link
US (1) US6772318B1 (ja)
JP (1) JP3445535B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7313244B2 (ja) * 2019-09-20 2023-07-24 株式会社Screenホールディングス 基板処理装置および基板処理方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4189770A (en) * 1978-03-16 1980-02-19 International Business Machines Corporation Cache bypass control for operand fetches
JPS5693363A (en) 1979-12-04 1981-07-28 Fujitsu Ltd Semiconductor memory
JPS59123937A (ja) * 1982-12-29 1984-07-17 Fujitsu Ltd 演算装置におけるバイパス制御方式
JPS59177655A (ja) * 1983-03-29 1984-10-08 Fujitsu Ltd 演算バイパス制御方式
JPS59177654A (ja) * 1983-03-29 1984-10-08 Fujitsu Ltd 演算バイパス制御方式
JPS60178539A (ja) * 1984-02-24 1985-09-12 Fujitsu Ltd 情報処理装置におけるバイパス制御方式
AU553416B2 (en) * 1984-02-24 1986-07-17 Fujitsu Limited Pipeline processing
JP3745450B2 (ja) 1996-05-13 2006-02-15 株式会社ルネサステクノロジ 並列処理プロセッサ
US5778248A (en) 1996-06-17 1998-07-07 Sun Microsystems, Inc. Fast microprocessor stage bypass logic enable
US5872986A (en) 1997-09-30 1999-02-16 Intel Corporation Pre-arbitrated bypassing in a speculative execution microprocessor
US6266766B1 (en) * 1998-04-03 2001-07-24 Intel Corporation Method and apparatus for increasing throughput when accessing registers by using multi-bit scoreboarding with a bypass control unit
US6052307A (en) 1998-08-11 2000-04-18 Texas Instruments Incorporated Leakage tolerant sense amplifier
US6279100B1 (en) * 1998-12-03 2001-08-21 Sun Microsystems, Inc. Local stall control method and structure in a microprocessor

Also Published As

Publication number Publication date
JP3445535B2 (ja) 2003-09-08
US6772318B1 (en) 2004-08-03

Similar Documents

Publication Publication Date Title
JP2911278B2 (ja) プロセッサ
JP4996654B2 (ja) プロセッサ
JP2002091792A (ja) 通常モードでの命令実行中にハードウェア・テストを実行するプロセッサおよび方法
US6725359B2 (en) Address stage logic for generating speculative address operand interim results of preceding instruction by arithmetic operations and configuring
US6192461B1 (en) Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle
JPH10228376A (ja) 複数レジスタ命令を処理する方法及びプロセッサ
US6418520B1 (en) Address converting circuit utilizing string comparison and carry information calculation
EP3067794B1 (en) System and method of reissue parking for a microprocessor
KR101016257B1 (ko) 프로세서 및 정보 처리 장치
KR100305935B1 (ko) 데이타처리시스템및데이타처리시스템의데이타포착방법
JP3611304B2 (ja) 1サイクルのパイプライン・ストールを生成するパイプライン・プロセッサのシステム及び方法
EP0649083A2 (en) A microcontrol unit for a superpipelined, superscalar microprocessor
US6442678B1 (en) Method and apparatus for providing data to a processor pipeline
JP3445535B2 (ja) バイパス制御回路
US6401195B1 (en) Method and apparatus for replacing data in an operand latch of a pipeline stage in a processor during a stall
US11379240B2 (en) Indirect branch predictor based on register operands
KR100241970B1 (ko) 파이프라인 처리를 수행하는 데이터 처리 장치
US7783692B1 (en) Fast flag generation
US6157995A (en) Circuit and method for reducing data dependencies between instructions
JP2894438B2 (ja) パイプライン処理装置
JP2553728B2 (ja) 演算装置
US20230315446A1 (en) Arithmetic processing apparatus and method for arithmetic processing
JPH06131180A (ja) 命令処理方式および命令処理装置
US6760738B2 (en) Exponent unit of data processing system
JPH0520066A (ja) 並列計算機

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090627

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090627

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100627

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20100627

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110627

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20120627

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees