JPH05313893A - 演算バイパス回路 - Google Patents

演算バイパス回路

Info

Publication number
JPH05313893A
JPH05313893A JP11505992A JP11505992A JPH05313893A JP H05313893 A JPH05313893 A JP H05313893A JP 11505992 A JP11505992 A JP 11505992A JP 11505992 A JP11505992 A JP 11505992A JP H05313893 A JPH05313893 A JP H05313893A
Authority
JP
Japan
Prior art keywords
instruction
stage
interlock
data
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.)
Withdrawn
Application number
JP11505992A
Other languages
English (en)
Inventor
Tatsuki Nakada
達己 中田
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 JP11505992A priority Critical patent/JPH05313893A/ja
Publication of JPH05313893A publication Critical patent/JPH05313893A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【目的】 本発明は、データ依存関係を保証する機能を
備えたパイプライン処理計算機における演算バイパス回
路に関し、演算ステージでの処理時間が短い、例えば、
"0" との演算命令を実行する際の、該演算結果のバイパ
スを高速化する。 【構成】 先行命令と後続命令との間でデータ依存関係
があり、該後続の“0”との演算命令を検出したとき、
Dステージのインタロックを抑止し、Eステージのイン
タロックを有効にする手段と、先行命令のデータをバイ
パスするタイミングを検出する手段と、先行命令のロー
ドデータの“0”検出回路とを設けて、該“0”との演
算命令をDステージに投入して、次のEステージをイン
タロックし、先行命令のロードデータを、上記Wステー
ジの直前で、上記バイパスタイミング検出手段のバイパ
ス制御信号によってバイパスした後、上記“0”検出回
路の判定信号に基づいて、該“0”との演算結果の条件
コードを条件コードレジスタ(CC)に設定する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データ依存関係を保証
する機能を備えたパイプライン処理計算機における演算
バイパス回路に関する。
【0002】計算機の処理の高速化、特に、メモリアク
セスの平均的な高速化を計るためには、キャッシュメモ
リが利用される。図9はキャッシュメモリの基本構成を
示した図である。キャッシュメモリ(CACHE) を構成する
ときの選択肢の一つにウエイ(WAY) 数がある。これは、
任意のアドレスのデータに対して、そのデータを保持
(キャッシュ) する可能性のあるキャッシュメモリのエ
ントリ数であり、一般的には、2ウエイ−セット−アソ
シアティブ,4ウエイ−セット−アソシアティブ,全セ
ット−アソシアティブ,ダイレクト−マッピング等がよ
く採用されている。
【0003】一般的に、同じ容量のキャッシュメモリな
らば、ウエイ(WAY) 数を増加させると、ヒット率が向上
し、性能が向上することが知られている。しかし、該ウ
エイ(WAY) 数が大きくなると、キャッシュメモリの読み
出しを行う時に、より多くの保持する可能性のあるエレ
メントから、目的とするデータを選択しなければならな
いので、ハードウェアの増加, 及び、遅延時間の増大を
招くことになる。
【0004】ここで、キャッシュメモリを採用した場合
の一構成, 及び処理を、図9により説明する。キャッシ
ュメモリ 15 の中には、データを保持するデータメモリ
150と、ヒット判定のためよ使用されるタグメモリ 151
と、ヒット判定を行う判定回路 152{選択するウエイ(W
AY) の決定}と、そのヒット判定の結果によってデータ
を選択(WAYセレクト) するウエイ選択回路 153とから構
成され、もし、いずれかのウエイ(WAY) に目的とするデ
ータがあれば、ヒット判定信号とともに、キャッシュさ
れたデータが読み出される。
【0005】この図のまま、全セット−アソシアティブ
にした場合には、データメモリ 150, タグメモリ 151の
出力は、非常に多くなることが予測できる。従って、一
般的に、全セット−アソシアティブのように、ウエイ(W
AY) 数の多い場合は、連想メモリを使用する。
【0006】本図からも分かるように、一般に、キャッ
シュメモリ 15 で、最も大きな伝播時間を必要とするパ
スは、アドレス保持回路 155からタグメモリ 151を検索
して、ヒット(WAY) の判定を行い、ウエイ(WAY) 選択を
行い、データ出力に至るパスである。
【0007】図10,図11は、キャッシュメモリを含
んだパイプライン計算機の概念を示す図である。汎用レ
ジスタ(GR) 11 は、本図では、2つ図示してあるが、実
態は1つてある。汎用レジスタ(GR) 11 は、デコードス
テージ(D) では、ソースオペランドの読み出しに使用さ
れ、書き込みステージ(W) では、演算結果の書き込みに
使用される。
【0008】本図では、該キャッシュメモリ 15 の処理
を1ステージ(C) で行っている。又、本図に示した、
D,E,C,Wの各ステージに必要な時間は、必ずし
も、同じにならない。
【0009】最も時間のかかるステージによって、この
パイプラインのサイクル時間が決定されてしまう。従来
より、上記Cステージは、大きな時間を必要としてお
り、パイプラインのサイクルタイムを決定付ける要因と
なっていた。
【0010】更に、近年、論理回路部分の高速化がなさ
れてきたために、このCステージを2つに分けて、パイ
プラインのサイクルタイムを小さくする場合もある。図
11は、図10で示したキャッシュメモリ 15 の処理を
2つのステージ(C1,C2) に分けたものである。C1ステー
ジでは、データメモリ(DATA) 150, タグメモリ(TAG) 15
1 の参照を行い, C2ステージでヒット(HIT) の判定, 及
び、ウエイ(WAY) セレクト(way-sel) を行っている。
【0011】図12は、従来のパイプライン計算機での
演算バイパスを示した図である。即ち、上記図11に示
したようなステージD,E,C1,C2,Wを備えたパイプ
ライン計算機において、上記キャッシュメモリ 15 から
読み出したデータが後続の演算命令で使用される場合
の、演算バイパスの様子を示している。
【0012】このような演算バイパス技術を使用して
も、先行命令と後続命令との間で、データ依存関
係、即ち、レジスタ干渉があった場合、図示されている
インタロック手段 20,21により、該後続命令は、Dステ
ージでインタロックがかかり、データが得られるまでに
2τの間待たされる。
【0013】このようなパイプライン計算機において
は、該データ依存関係によって、該パイプラインが停止
され、性能が下がっていた。近年、計算機での処理の高
速化のために、例えば、スーパスカラーシステムや,超
長命令語(VLIW)システムで代表される、命令の並列実行
の技術が実用化されている。
【0014】該スーパスカラーシステムは、主記憶装置
(MSU) 上の命令は、通常の計算機のように、1命令宛配
列されているが、該命令を読み出して実行する段階にお
いて、2命令宛にスケジュールして、該命令の並列実行
を行うものであり、該計算機システムの中は、該並列実
行ができるように、命令レジスタ,デコーダ,演算器(A
LU) 等は並列にインプリメントされているが、上記キャ
ッシュメモリ 15 は1つしか置かれていないため、例え
ば、ロード命令等は、1命令としてスケジュールされ
る。
【0015】又、超長命令語(VLIW)システムでは、高級
言語で記述されたソースプログラムをコンパイルする時
に、例えば、2命令毎にスケジュールして、命令 (操
作) の並列実行を行うもので、この場合も、上記ロード
命令等は、1命令としてスケジュールされる。
【0016】このように、命令を並列に実行することに
より、上記データ依存関係のある先行命令と後続命令
との間の実行タイミングが近づき、従来にもまして、
該データ依存によるパイプラインの停止による性能の低
下の割合が大きくなっていることから、該データ依存関
係がある場合の演算バイパス処理も、効果的な演算バイ
パスができる回路が要求される。
【0017】
【従来の技術】前述の図12は、従来のパイプライン計
算機での演算バイパスを示した図であり、図13は、従
来の演算バイパス回路の問題点を説明する図であって、
図13(a) はC言語で記述されたソースプログラムでよ
く使用されるストリングコピー関数のサブルーチンを疑
似アセンブラ言語で示したものであり、図13(b) は、
該ストリングコピー関数の実行の様子を示している。
【0018】図13(a) に示した疑似アセンブラ言語に
おいて、横に並べて記述された操作は、並列に、一度に
実行されることを示している。図13(b) は、該ストリ
ングコピー関数の実行の様子を示しており、最初の破線
で示した部分は、上記図12で説明したように、先行命
令と後続命令との間にデータ依存関係、即ち、所
謂、レジスタ干渉が存在する場合の、従来のインタロッ
ク機構により、パイプラインがインタロックしている部
分であり、本例においては、比較命令(CMP) におい
て、先行のロード(LD)命令によるキャッシュメモリ 1
5 から読み出されるデータを待っているため、2τの待
ち時間が生じている。
【0019】2つ目の破線で示す部分は、分岐命令(BN
E) を実行して、分岐先を読み出す為には、先行してい
る上記比較命令(CMP) の結果が、該比較命令(CMP)
のWステージで条件レジスタ(CC)に設定された条件コー
ドを、該分岐命令(BNE) が参照して、該分岐命令(BNE)
のEステージで生成した分岐先のアドレスの命令を読み
出してくる為に生じるインタロックである。
【0020】
【発明が解決しようとする課題】この待ち時間は、例え
ば、公知の分岐予測機構などを使用して、先行読み出し
を行うことにより無くすることができる。この場合、該
ストリングコピー関数のループ部分は、図13に示して
ある6τ→5τで実行できる。これに、上記キャッシュ
メモリ 15 を読み出す為の待ちが無ければ、該ストリン
グコピー関数のループ部分は3τで実行することができ
ることになる。
【0021】即ち、該ストリングコピー関数のループ部
分において、該キャッシュメモリの読み出しを待つ為
に、最大40%の性能の低下を招いている。従って、従
来の演算バイパス回路では、キャッシュメモリから読み
出したデータをオペランドとした場合、待ち時間があ
り、ハードウェアの性能を最大限に発揮できないという
問題があった。
【0022】本発明は上記従来の欠点に鑑み、データ依
存関係を保証する機能を備えたパイプライン処理計算機
において、キャッシュメモリの読み出しステージ(C1)
と、キャッシュヒット判定のステージ(C2)とが独立であ
るような場合に、該キャッシュメモリの読み出したデー
タを、後続命令がすぐに使用する際、積極的なバイパス
処理で、より速いタイミングで該読み出しデータを後続
命令に送ることにより、該パイプライン計算機の性能を
向上させること、又、演算ステージで行う処理に、演算
時間のかかる通常の演算処理と、例えば、“0”を加
算,“0”との比較といった、“0”との演算のよう
に、専用の演算回路を設けることで、演算時間を短縮す
ることができ、該演算処理時間の少ない処理があって、
該演算処理を短くできる場合には、入力データが遅いタ
イミングで入力されても、同じ演算サイクルでも充分に
結果を出すことができることに着目して、該演算処理時
間の短い"0" との演算命令を実行する際での先行命令の
演算結果のバイパスを高速に行うことができる演算バイ
パス回路を提供することを目的とするものである。
【0023】
【課題を解決するための手段】図1は、本発明の原理構
成図である。上記の問題点は下記の如くに構成したバイ
パス演算回路によって解決される。
【0024】少なくとも、デコードステージ(D) と, 演
算ステージ(E) と、オペランドフェッチステージ(C1,C
2) と, 書き込みステージ(W) とからなり、先行して実
行する命令と,後続して実行する命令との間のデー
タ依存関係を検出して、上記Dステージ,又は、Eステ
ージをインタロックする手段 20 〜22と,上記先行して
実行する命令のレジスタ書き込み,若しくは、該レジ
スタ書き込みの直前のタイミングで、後続命令に演算
データをバイパスする演算バイパス手段と,演算結果
によって生成される条件コード生成回路 32 と、を備え
たパイプライン処理計算機において、命令をデコードし
て「“0”との演算」命令であることを検出する手段 4
0 と, 該「“0”との演算」命令であることを検出した
とき、該Dステージインタロック手段 20 でのDステー
ジインタロックを抑止し、該Eステージインタロック手
段 22 でのEステージのインタロックを有効にするイン
タロック制御手段 20a,22aと、先行命令のデータをバ
イパスするタイミングを検出する手段 23 と、先行命令
のロードデータの“0”検出回路 50 と、上記ロードデ
ータの“0”検出回路 50 の“0”判定信号と、該ロ
ードデータの符号ビットを入力して条件コードを生成す
る「条件コード発生回路」31と, 上記条件コード生成回
路 32 によって、通常の演算で生成される条件コード
と、上記「条件コード発生回路」31によって生成される
条件コードを入力し、その何れかを選択する「条件コー
ド選択回路」30とを設けて、実行している命令が
「“0”との演算」命令であって、先行している命令
との間で「データ依存関係」が検出されたとき、該
「“0”との演算」命令を上記インタロック制御手段 2
0a,22aで、Dステージのインタロックを抑止して、次の
Eステージでインタロックを行い、先行命令のロード
データを、上記Wステージの直前で、上記バイパスタイ
ミング検出手段 23 のバイパス制御信号に基づいて、該
「“0”との演算」命令の演算ステージ(E)にバイ
パスした後、該“0”との演算を行うことなく、上記
“0”検出回路(50)で判定信号を上記「条件コード選
択回路」 31 で選択して、該「“0”との演算」命令の
演算結果の条件コードレジスタ(CC)を設定するように構
成する。
【0025】
【作用】即ち、本発明においては、例えば、“0”との
比較演算は、専用の“0”検出回路を設けることで、高
速に実現することができることに着目し、キャッシュメ
モリの読み出しで、ウエイ(WAY) を選択したあとに、一
般の比較命令で使用する演算器(ALU) を使用することな
く、上記専用の“0”検出回路で“0”比較を行い、該
比較命令の条件コードを生成することにより、後続の待
ち時間を減少させる。
【0026】又、本発明においては、Dステージでイン
タロックをかけると、後続命令のパイプラインへの投入
が後れ、処理の開始が後れることに着目して、データの
依存関係によるインタロックを、できる限り後のステー
ジ、例えば、Eステージでかけるようにして、該後続命
令である“0”比較命令の従来のパイプライン計算機で
は行われていたDステージのインタロックを抑止し、E
ステージでインタロックをかけることにより、該“0”
比較命令の処理の開始を速めると共に、該“0”比較命
令に続く命令のパイプラインへの投入も早くすることが
できる。
【0027】以下、各ステージでの処理の概要を説明す
る。先ず、命令デコードステージ(D):命令をデコー
ドして「“0”との比較」命令であることを検出し、図
示されていないパイプラインタグ (図11参照)に投入
する。
【0028】多くの計算機では、0番の汎用レジスタを
0レジスタ(書き込んだ値によらず、読み出したデータ
は、常に、“0”であるようなレジスタ)としており、
該0番のレジスタと比較することによって「“0”との
比較」を行っている。
【0029】又、比較命令も、減算命令の結果の書き込
み先を0番のレジスタを指定した減算命令で代用してい
ることが多い。よって、命令デコーダでは、該命令をデ
コードし、例えば、上記のようなオペランド2が全
“0”であることをデコードするだけで、レジスタから
読み出したオペランドの値を検査することなく、該
「“0”との比較」命令を検出することができる。該検
出した結果は、上記パイプラインタグに保持し、所定の
ステージで使用する。
【0030】演算ステージ(E):先行のロード(LD)命
令の、上記ヒット判定/ウエイ(WAY) 選択ステージ(C
1)で処理されているデータが“0”と比較するデータで
あることを、上記Dステージでセットされ、パイプライ
ンタグを流れているタグから検出し、その場合は、該ウ
エイ(WAY) 選択されたデータを、本発明の専用の“0”
検出回路に入力して“0”判定を行い、“0”であった
場合には、予め、準備されている固定パターン(条件コ
ード)をフラグとして条件コード(CC)フラグ(Z=0) に設
定し、“0”でなかった場合には、予め、準備されてい
る所定の固定パターン(条件コード)をフラグとして条
件コード(CC)フラグ(Z=1) に設定する。
【0031】書き込みステージ(W):上記演算ステー
ジ(E)で得られたフラグを条件コードレジスタ(CC)に
書き込む。上記“0”との比較処理は、前述のように、
C言語で記述されたプログラムでは、文字列の終端を検
出する文字列検出処理を行う場合に非常に多く使用され
る為、上記のような、該「“0”検出」命令の高速化
が、該パイプライン計算機での、該文字列検出処理の高
速化に寄与する効果が大きい。
【0032】
【実施例】以下本発明の実施例を図面によって詳述す
る。前述の図1は、本発明の原理構成図であり、図2〜
図5は、本発明の一実施例を示した図であり、図2(a1)
〜(a2)は、「“0”検出」命令の構成例を示し、図3,
図4は先行命令と後続命令との間のデータの依存性を検
出してインタロック信号を生成する「データ依存性検出
手段」の構成例を示し、図5(a) は条件フラグの形式例
を示し、図5(b) は「“0”検出」命令の条件フラグを
生成する場合の構成例を示しており、図6は、本発明の
効果を説明する図であって、図6(a) は、従来のパイプ
ライン実行の様子を示し、図6(b) は本発明の演算パイ
プライン回路によるパイプライン実行の様子を示してお
り、図7,図8は、本発明の他の実施例を示した図であ
って、図7はスコアボードの構成例を示し、図8はスコ
アボードを使用した場合の演算バイパスの概念を示して
いる。
【0033】本発明においては、データ依存関係を保証
する機能を備えたパイプライン処理計算機における演算
バイパス回路であって、少なくとも、デコードステージ
(D)と, 演算ステージ(E) と、オペランドフェッチステ
ージ(C1,C2) と, 書き込みステージ(W) とからなり、デ
ータ依存関係検出手段 20 〜22により、先行命令と後
続命令の間の「データの依存関係」(レジスタ干渉)
を検出して、上記Dステージ,又は、Eステージをイン
タロックする手段を備え、「“0”との比較」命令を検
出したとき、該Dステージのインタロックを抑止し、E
ステージのインタロック 22 を有効にする手段 20a〜22
a と、先行命令のロードデータの“0”検出回路 50 と
を設けて、該“0”との演算命令をDステージに投入し
て、次のEステージをインタロックし、先行命令のロ
ードデータを、上記Wステージの直前で、後続命令の
Eステージにバイパスした後、該“0”との演算を行う
ことなく、上記“0”検出回路 50 の判定信号に基づい
て、該“0”との演算結果の条件コードを設定する手段
が、本発明を実施するのに必要な手段である。尚、全図
を通して同じ符号は同じ対象物を示している。
【0034】以下、図1を参照しながら、図2〜図8に
よって、本発明の演算バイパス回路の構成と動作を説明
する。先ず、本発明に関連するパイプライン計算機の命
令形式は、例えば、図2(a1)に示したフォーマットを形
成しており、本発明に関連する「“0”比較」命令は、
図2(a2)に示したビット構成しており、前述のように、
該「“0”比較」命令は、減算命令(SUB,SUBi)であっ
て、読み出しオペランド2が“0”で、書き込みレジス
タ番号が“0”であるような命令であるので、該ビット
フォーマットから明らかな如く、Dステージのデコーダ
(DEC) において、ビット0〜16が "0100 0000 0000 000
0 0"か"0100 0000 0000 0000 1" であって、ビット22〜
31が "00 0000 0000" であることをデコードすれば良い
ことになる。
【0035】次に、図3は本発明の「データ依存性関係
検出」回路の構成例を示している。図3からも明らかな
ように、該「データ依存性関係検出」回路の基本構成
は、先行命令のEステージ,又は、C1ステージのパイ
プラインタグのレジスタ番号情報を用いて、先行命令の
書き込みレジスタ番号(E-WR-REG-ID,C1-WR-REG-ID)と、
後続する命令のDステージの読み出しレジスタ番号(D-R
D-REG-ID1,2)が等しくて、且つ、該読み出しレジスタが
使用されている(D-RD-REG-1-USED,D-RD-REG-2-USED) 場
合に、該後続命令をDステージでインタロックするよう
に構成されている。
【0036】具体的には、上記の条件に、上記パイプラ
インタグ中の、該Eステージ, C1ステージが有効(E-V
ALID,C1-VALID)である条件と、該先行している命令が、
該ロード系命令である(E-LD-OP、C1-LD-OP) が必要であ
る。
【0037】更に、本発明においては、上記のインター
ロックを、該Dステージにある後続の命令が、前述の
「“0”比較」命令(D-CMP0-OP) である場合には、該D
ステージでのインターロックを抑止して、該「“0”比
較」命令(D-CMP0-OP) をパイプラインに投入し、例え
ば、Eステージでのインターロックをかけるように構成
する。
【0038】その為に、本発明においては、上記のイン
ターロック機構の他に、図4(a) に示したように、後続
の命令のEステージと、先行命令のC1ステージとの間
にも、上記と同様のインターロック回路を設ける。
【0039】このインターロック回路のインターロック
条件には、図示されている如くに、先行命令のC1ステ
ージの書き込みレジスタ番号(C1-WR-REG-ID)と、後続す
る命令のEステージの読み出しレジスタ番号(E-RD-REG-
ID1)とが等しい場合であって、更に、該C1ステージの
先行命令が有効(C1-VALID)で, 該先行命令がロード系の
命令(C1-LD-OP)であることが必要であり、更に、本発明
の場合には、該後続の命令が上記「“0”比較」命令(E
-CMP0-OP) である場合にインターロックをかけるように
構成する。
【0040】このようなインターロック機構を設けるこ
とにより、図1に示されている如く、該「“0”比較」
命令は、Dステージでパイプラインに投入され、Eステ
ージでインターロックがかけられ、先行している、例え
ば、ロード命令がC2ステージに入った時点で、該イン
ターロックが解除され、本発明の演算バイパスが行わ
れることになる。
【0041】次に、「“0”比較」命令を実行した場合
の演算結果に対する条件コード(CC)生成方法を説明す
る。図1で示すように、本発明においては、先行するC
2ステージの命令が、例えば、ロード(LD)命令であ
り、Eステージで実行している後続命令が、上記
「“0”比較」命令で、C2ステージのロード(LD)命令
の書き込みレジスタ番号が、Eステージの「“0”比
較」命令の読み出しレジスタ番号に等しい場合には、
該ロード(LD)命令のキャッシュメモリ 15 の読み出し
データ (図1では、ウエイ(WAY) 選択回路(way-sel) の
出力) を、専用の“0”検出回路 50 にバイパスして
入力し、その判定結果, 及び、該読み出しデータの符号
ビットを用いて、フラグを作成し、フラグレジスタ(CC)
にセットする。
【0042】該バイパスの条件は、Eステージで実行
している後続命令が、上記「“0”比較」命令で、先
行のC2ステージの命令が、ロード(LD)命令で、且
つ、C2ステージのロード(LD)命令の書き込みレジス
タ番号が、上記Eステージの「“0”比較」命令の読
み出しレジスタ番号に等しい場合ということになる。
【0043】このバイパス制御回路 (バイパスタイミン
グ検出手段) 23の一実施例を図4(b) に示す。このバイ
パス制御回路 23 のバイパス条件には、図示されている
如くに、先行命令のC2ステージの書き込みレジスタ
番号(C2-WR-REG-ID)と, 後続する命令のEステージの読
み出しレジスタ番号(E-RD-REG-ID) とが等しい場合であ
って、更に、該C2ステージの先行命令が有効(C2-VA
LID)で、該先行命令がロード系の命令(C2-LD-OP)であ
ることが必要であり、更に、本発明の場合には、該後続
の命令が上記「“0”比較」命令(E-CMP0-OP) である
場合に、バイパス(E-CMPO-BYPASS) をかけるように構成
する。
【0044】該条件フラグの形式の例を図5(a) に示し
てあるが、該条件フラグは、3ビットから構成されてお
り、比較命令の場合には、次のように定義されている。
図5(a) において、Zフラグ:2つのオペランド(OP1,O
P2) が等しい場合に“1”であり、それ以外では“0”
とする。
【0045】Nフラグ:減算した結果の符号(最上位)
ビットをセットする。 Cフラグ:符号なし整数とみなして比較して、オペラン
ド1(OP1) がオペランド2(OP2) に比べて小さい時には
“1”であり、それ以外のときは“0”とする。
【0046】従って、本発明に関連する「“0”比較」
命令のように、オペランド2(OP2)が“0”の場合に
は、上記条件フラグの生成は、以下のように簡易化され
る。 Zフラグ:オペランド1(OP1) が“0”のとき“1”
で、それ以外では“0” Nフラグ:オペランド1(OP1) の符号 (最上位=MSB) ビ
ットをセットする。
【0047】Cフラグ:常に、“0”とする。従って、
該「“0”比較」命令での、“0”検出回路 50 は、図
5(b) のようになる。但し、該フラグレジスタ(CC)に
は、演算結果の条件コードが設定されるので、図5(b)
に示されているように、上記本発明の“0”検出回路 5
0 からの設定値と、該演算回路からのフラグの設定値と
を、セレクタ(SEL) 30において、図4(b) に示した上記
バイパス制御信号 (バイパス制御回路 23 の出力信号)
(E-CMPO-BYPASS)で選択する必要がある。
【0048】図6は、本発明の効果を説明する図であっ
て、図6(a) は、従来のパイプライン実行の様子を示
し、図6(b) は本発明の演算パイプライン回路によるパ
イプライン実行の様子を示している。
【0049】図6においては、前述のように、既に、パ
イプライン計算機でよく行われるいる並列処理を採用し
た場合の動作タイムチャートを示している。又、本図に
示したプログラム例は、C言語で記述されるプログラム
においてよく使用される、前述のストリングコピー関数
の例である。
【0050】図6(a) では、比較の意味で、従来の演算
バイパス回路による場合の例を示しており、先行のロー
ド(LD)命令のC2ステージまで、後続の「“0”比
較」命令(SUBi 命令) が、先行のロード(LD)命令に
よるロードデータを待って、Dステージによりインター
ロックしていた為、1回のループに少なくとも、5サイ
クルを必要としている。
【0051】然して、本発明の場合には、先行のロード
(LD)命令のC2ステージで、後続の「“0”比較」命
令(SUBi 命令) のフラグが生成できるので、1回のル
ープは4サイクルとなり、該ストリングコピー関数で扱
う文字列が長い場合には、約20%の高速化が達成できた
ことになる。
【0052】上記の実施例においては、先行のロード(L
D)命令に対してのみ、後続の「“0”比較」命令を
高速化する例で説明したが、これに限るものではなく、
該ロード(LD)命令と同じような、例えば、4ステージ
目に、データが出力される命令であって、該最終のステ
ージでの操作に、マシンサイクルに対して遅延時間の少
ない命令(命令Xと呼ぶ)に対しても、同様に、該後続
の「“0”比較」命令を高速化することができることは
明らかである。
【0053】特に、該命令Xが、上記ロード(LD)命令と
同じレジスタ書き込みポート(Y) を使用する場合には、
該レジスタのポート(Y) のためのC2ステージの書き込
みレジスタ番号と,後続の命令のEステージの読み出し
番号を比較すればよく、該命令Xをデコードし、該命令
Xの結果を、上記専用の検出回路で選択し、該命令Xの
結果の符号ビット(最上位ビット)を選択するだけで、
該命令Xに対する条件コードをフラグレジスタ(CC)に設
定でき、該後続の命令を高速化することができる。
【0054】上記の命令Xは、一般的には、上記ロード
(LD)命令と同じサイクル数で実行することができるとは
限らない。上記の議論を最も簡単に拡張すると、Cnス
テージで、後続命令が演算結果をバイパスする為に
は、Cn−1ステージまで、該後続命令はEステージ
でインターロックしなくてはならない。即ち、後続命令
のEステージの読み出しレジスタ番号と,先行する命令
のC1ステージからCn−1(n≧2)ステージまでの全て
のステージの書き込みレジスタ番号とを、該パイプライ
ンタグの情報を用いて比較するようにすればよい。
【0055】又、該演算結果のバイパスを制御する条
件「E-CMP0-BYPASS 」は、該「“0”比較」命令のEス
テージの読み出しレジスタ番号と,先行する命令のC
n−1ステージの書き込みレジスタ番号のタグと比較す
るようにすればよい。
【0056】然しながら、この方法では、nが大きくな
ると、該比較回路の数が多くなっししまって現実的でな
い。そこで、本発明においては、この問題を、公知のス
コアボード技術を用いることにより解決することを考え
る。
【0057】図7は、該スコアボードの概念を説明して
いる。スコアボードは、レジスタや演算器などの資源を
効率良く管理するための手法である。先行命令のレジス
タへの書き込みの完了を、後続命令が待つ場合(即ち、
レジスタ書き込みのインターロックがある場合)を、該
スコアボードの技術を用いて実現する場合の例を、図
7,図8を用いて以下に説明する。
【0058】図7の例はレジスタの数が16個ある場合
のスコアボードの構成例を示している。該16個のレジ
スタに対応して、図示されている如くに、少なくとも、
1ビットづつの記憶回路 60 を備える。
【0059】前述のロード(LD)命令のようにレジスタに
書き込む命令をデコードした場合は、該ロード(LD)命令
によって書き込まれるレジスタの番号 (仮にi とする)
に対応するi番目の先に示した記憶回路 60iをセットす
る。
【0060】後続命令が、j番目のレジスタを読み出す
時、該スコアボードの、該jに対応する記憶回路 60jを
読み出して、該対応する記憶回路 60jがセットされてい
ると、先行する命令により書き換えられることが認識で
きたので、例えば、Eステージでインターロックして、
該先行命令の書き込みの完了を待つ。
【0061】もし、該読み出しにおいて、該記憶回路 6
0jがリセットされていたら、先行命令によって書き換え
られることはないものと認識して、インターロックをす
ることなく次のステージに移る。
【0062】先行している、例えば、ロード(LD)命令
は、i番目のレジスタに書き込むときに、該スコアボー
ドのi番目に対応する記憶回路 60iをリセットする。従
って、もし、後続の命令で、該i番目のレジスタを読み
出すためにインターロックしている命令があれば、該i
番目のスコアボードの記憶回路 60iがリセットされた時
点で、該インターロックは解除され、該後続命令は、
該先行命令が書き込んだデータを使用して処理を再開
する。
【0063】上記の説明は、従来のスコアボードを使用
したインターロック制御の場合を示しているが、この従
来方法では、該先行命令が、実際にレジスタに書き込み
を行って、該スコアボードの対応するレジスタ 60iがリ
セットした時点で、初めて、該インターロックが解除さ
れ、前述の専用の“0”検出回路 50 を使用した場合に
比較して、1τだけ、該インターロックの解除が後れる
問題が残る。 (図1,図8参照)そこで、本発明におい
ては、図8に該スコアボードによるインターロック制御
を模式的に示したように、後続命令のEステージへ
の、先行命令の演算結果のバイパスは、該後続命令
のEステージに前述の「“0”比較」命令があって、
レジスタに対応して設けられているスコアボードの記憶
回路 60iが“1”であって、少なくとも、該レジスタに
対するライトイネーブル(WE)=“1”であると
き、即ち、該スコアボードの記憶回路 60iが“0”にリ
セットされる前のサイクルで行うように構成すること
で、前述の専用の“0”検出回路 50 を使用した場合と
同等の、該「“0”比較」命令の高速化を行うことがで
きるようになる。
【0064】上記の実施例においては、「“0”比較」
命令を例にして説明したが、先行命令の、例えば、ロー
ド(LD)命令の演算結果のバイパスデータとの「“0”と
の加算」「“0”との論理演算」等についても、同様
に、該演算バイパスデータに対する条件コードの生成等
を高速化できることはいうまでもないことである。但
し、この場合には、次のWステージにおいて、レジスタ
へ該バイパスデータを書き込む処理を必要とする。
【0065】このように、本発明は、少なくとも、デコ
ードステージ(D) と, 演算ステージ(E) と、オペランド
フェッチステージ(C1,C2) と, 書き込みステージ(W) と
からなり、データの依存関係を検出して、上記Dステー
ジ,又は、Eステージをインタロックする手段を備えた
パイプライン計算機において、先行命令と後続命令
との間でインターロックがあり、該後続の“0”との演
算命令を検出したとき、該Dステージインタロックを抑
止し、Eステージのインタロックを有効にする手段と、
先行命令のデータをバイパスするタイミングを検出す
る手段と、先行命令のロードデータの“0”検出回路
とを設けて、該“0”との演算命令をDステージに投入
して、次のEステージをインタロックし、先行命令のロ
ードデータを、上記Wステージの直前で、上記バイパス
タイミング検出手段のバイパス制御信号に基づいて、後
続命令のEステージにバイパスした後、上記“0”
検出回路の判定信号に基づいて、該“0”との演算結果
の条件コード(Z,N,C) を条件コードレジスタ(CC)を設定
するようにした所に特徴がある。
【0066】
【発明の効果】以上、詳細に説明したように、本発明の
演算バイパス回路は、少なくとも、デコードステージ
(D) と, 演算ステージ(E) と、オペランドフェッチステ
ージ(C1,C2) と, 書き込みステージ(W) とからなり、デ
ータの依存関係を検出して、上記Dステージ,又は、E
ステージをインタロックする手段を備えたパイプライン
計算機において、先行命令と後続命令との間でイン
ターロックがあり、該後続の“0”との演算命令を検
出したとき、該Dステージインタロックを抑止し、Eス
テージのインタロックを有効にする手段と、先行命令
のデータをバイパスするタイミングを検出する手段と、
先行命令のロードデータの“0”検出回路とを設け
て、該“0”との演算命令をDステージに投入して、次
のEステージをインタロックし、先行命令のロードデ
ータを、上記Wステージの直前で、上記バイパスタイミ
ング検出手段のバイパス制御信号に基づいて、後続命令
のEステージにバイパスした後、上記“0”検出回
路の判定信号に基づいて、上記バイパスタイミング検出
手段のバイパス制御信号に基づいて、該“0”との演算
結果の条件コードを条件コードレジスタ(CC)を設定する
ようにしたものであるので、例えば、C言語で記述され
たプログラムでは、上記「“0”比較」命令が文字列の
終端を検出する文字列検出処理を行う場合に非常に多く
使用される為、該「“0”比較」命令の高速化が、該パ
イプライン計算機での処理の高速化に寄与する効果が大
きい。
【図面の簡単な説明】
【図1】本発明の原理構成図
【図2】本発明の一実施例を示した図(その1)
【図3】本発明の一実施例を示した図(その2)
【図4】本発明の一実施例を示した図(その3)
【図5】本発明の一実施例を示した図(その4)
【図6】本発明の効果を説明する図
【図7】本発明の他の実施例を示した図(その1)
【図8】本発明の他の実施例を示した図(その2)
【図9】キャッシュメモリの基本構成を示した図
【図10】キャッシュメモリを含んだパイプライン計算
機の概念を示す図(その1)
【図11】キャッシュメモリを含んだパイプライン計算
機の概念を示す図(その1)
【図12】従来のパイプライン計算機での演算バイパス
を示した図
【図13】従来の演算バイパス回路の問題点を説明する
【符号の説明】
11 レジスタ, 又は、汎用レジスタ(GR) 12 演算器(ALU) 15 キャッシュ
メモリ(CACHE) 150 データメモリ 151 タグメモリ 152 ヒット判定回路 153 データ(WA
Y) 選択回路 20,21,22 インタロック手段 23 バイパス制御回路 (バイパスタイミング検出手
段) 50 “0”検出回路 60i スコアボードの記憶回路 D デコードステージ E 演算ステージ C,C1,C2 キャッシュメモリアクセスステージ W 書き込みステージ 先行命令 後続命令 演算バイパス路, 又は、演算バイパス 判定信号 書き込みイ
ネーブル信号

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】少なくとも、デコードステージ(D) と, 演
    算ステージ(E) と、オペランドフェッチステージ(C1,C
    2) と, 書き込みステージ(W) とからなり、 先行して実行する命令()と,後続して実行する命令
    ()との間のデータ依存関係を検出して、上記Dステ
    ージ,又は、Eステージをインタロックする手段(20 〜
    22) と,上記先行して実行する命令()のレジスタ書
    き込み,若しくは、該レジスタ書き込みの直前のタイミ
    ングで、後続命令()に演算データをバイパスする演
    算バイパス手段()と,演算結果によって生成される
    条件コード生成回路(32)と、を備えたパイプライン処理
    計算機において、 命令が“0”との演算命令であることを検出する手段(4
    0)と, 該“0”との演算命令であることを検出したと
    き、該Dステージインタロック手段(20)でのDステージ
    インタロックを抑止し、該Eステージインタロック手段
    (22)でのEステージのインタロックを有効にするインタ
    ロック制御手段(20a,22a) と、先行命令のデータをバイ
    パスするタイミングを検出する手段(23)と、先行命令の
    ロードデータの“0”検出回路(50)と、上記ロードデー
    タの“0”検出回路(50)の“0”判定信号()と、該
    ロードデータの符号ビットを入力して条件コードを生成
    する条件コード発生回路(31)と, 上記条件コード生成回
    路(32)によって、通常の演算で生成される条件コード
    と、上記条件コード発生回路(31)によって生成される条
    件コードを入力し、その何れかを選択する条件コード選
    択回路(30)を設けて、 実行している命令 () が“0”との演算命令であっ
    て、先行している命令()との間で「データ依存関
    係」が検出されたとき、該“0”との演算命令を上記イ
    ンタロック制御手段(20a,22a) で、Dステージのインタ
    ロックを抑止して、次のEステージでインタロックを行
    い、 先行命令 () のロードデータを、上記Wステージの直
    前で、上記バイパスタイミング検出手段(23)のバイパス
    制御信号に基づいて、該“0”との演算命令 () の演
    算ステージ(E)にバイパスした後、該“0”との演算
    を行うことなく、上記“0”検出回路(50)で判定信号
    () を上記条件コード選択回路(31)で選択して、該
    “0”との演算命令の演算結果の条件コードレジスタ(C
    C)に設定することを特徴とする演算バイパス回路。
  2. 【請求項2】上記の演算バイパス回路において、上記先
    行命令と後続命令との間のデータ依存関係を、後続命令
    が検出する手段として、スコアボードの記憶回路(60i)
    を使用し、先行命令の演算結果データのレジスタ(11)へ
    の書き込みイネーブル信号 () に基づいて、該先行命
    令の演算結果データを後続命令のEステージにバイパス
    ()し、対応するスコアボードの記憶回路(60i) をリ
    セットすることを特徴とする請求項1に記載の演算バイ
    パス回路。
JP11505992A 1992-05-08 1992-05-08 演算バイパス回路 Withdrawn JPH05313893A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11505992A JPH05313893A (ja) 1992-05-08 1992-05-08 演算バイパス回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11505992A JPH05313893A (ja) 1992-05-08 1992-05-08 演算バイパス回路

Publications (1)

Publication Number Publication Date
JPH05313893A true JPH05313893A (ja) 1993-11-26

Family

ID=14653160

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11505992A Withdrawn JPH05313893A (ja) 1992-05-08 1992-05-08 演算バイパス回路

Country Status (1)

Country Link
JP (1) JPH05313893A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN119003002A (zh) * 2024-07-19 2024-11-22 摩尔线程智能科技(北京)有限责任公司 处理器、显卡、计算机设备以及依赖解除方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN119003002A (zh) * 2024-07-19 2024-11-22 摩尔线程智能科技(北京)有限责任公司 处理器、显卡、计算机设备以及依赖解除方法

Similar Documents

Publication Publication Date Title
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
US5809294A (en) Parallel processing unit which processes branch instructions without decreased performance when a branch is taken
US5561775A (en) Parallel processing apparatus and method capable of processing plural instructions in parallel or successively
US5710902A (en) Instruction dependency chain indentifier
US6178498B1 (en) Storing predicted branch target address in different storage according to importance hint in branch prediction instruction
US7761692B2 (en) Processor, compiler and compilation method
US5428807A (en) Method and apparatus for propagating exception conditions of a computer system
US5420990A (en) Mechanism for enforcing the correct order of instruction execution
JP3151444B2 (ja) ロード命令を処理する方法及びスーパースカラ・プロセッサ
US5446849A (en) Electronic computer which executes squash branching
JP3449186B2 (ja) パイプラインバイパス機能を有するデータ処理装置
US4739470A (en) Data processing system
US4541047A (en) Pipelined data processing system
JPH0581016A (ja) プログラム実行制御方式
US20040225870A1 (en) Method and apparatus for reducing wrong path execution in a speculative multi-threaded processor
US5761467A (en) System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field
US5522084A (en) Method and system for invalidating instructions utilizing validity and write delay flags in parallel processing apparatus
KR19980018874A (ko) 파이프라인 방식 프로세서 (processor with pipelining-structure)
US5926634A (en) Limited run branch prediction
JP3741870B2 (ja) 命令及びデータの先読み方法、マイクロコントローラ、疑似命令検出回路
JP2001060152A (ja) 分岐予測を抑止する情報処理装置および方法
US5421026A (en) Data processor for processing instruction after conditional branch instruction at high speed
JP2006053830A (ja) 分岐予測装置および分岐予測方法
JPH05313893A (ja) 演算バイパス回路
US6591360B1 (en) Local stall/hazard detect in superscalar, pipelined microprocessor

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: 19990803