JP2846406B2 - 分岐処理方法及び分岐処理装置 - Google Patents

分岐処理方法及び分岐処理装置

Info

Publication number
JP2846406B2
JP2846406B2 JP2132425A JP13242590A JP2846406B2 JP 2846406 B2 JP2846406 B2 JP 2846406B2 JP 2132425 A JP2132425 A JP 2132425A JP 13242590 A JP13242590 A JP 13242590A JP 2846406 B2 JP2846406 B2 JP 2846406B2
Authority
JP
Japan
Prior art keywords
instruction
branch
pipeline
instructions
group
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.)
Expired - Lifetime
Application number
JP2132425A
Other languages
English (en)
Other versions
JPH03116235A (ja
Inventor
エル ジャーディーン ロバート
ジェイ リンチ シャノン
アール マネラ フィリップ
ダブリュー ホースト ロバート
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.)
TANDEMU KONPYUUTAAZU Inc
Original Assignee
TANDEMU KONPYUUTAAZU Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by TANDEMU KONPYUUTAAZU Inc filed Critical TANDEMU KONPYUUTAAZU Inc
Publication of JPH03116235A publication Critical patent/JPH03116235A/ja
Application granted granted Critical
Publication of JP2846406B2 publication Critical patent/JP2846406B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Description

【発明の詳細な説明】 産業上の利用分野 本発明はデジタルコンピュータ、殊にデジタルコンピ
ュータの分岐処理の方法及び装置に関する。
従来の技術 デジタルコンピュータの設計における第1の目標はプ
ロセッサの処理能力、即ち単位時間あたりに処理される
命令数を高めることである。そのため一つアプローチ
は、プロセッサのハードウェア設計を改良してマシンサ
イクルタイムを少なくすることであった。もう一つのア
プローチはマシンサイクルあたり一命令を処理するよう
に設計されたアーキテクチャと命令集合を開発すること
であった。以上のアプローチは共に順次サイクルあたり
せいぜい1命令した発しないという基本的な処理方法の
ために、マシンサイクルあたりの最大処理能力が1命令
という論理的処理能力に限定されている。
サイクルあたり1命令以上の命令を発する方式が、
「CRISPマイクロプロセッサのハードウェアアーキテク
チャ」と題するディーツェル(Ditzal)他の論文(1908
ACM 0084−7495 87,309−319ページ)、及び「多重機
能ユニットプロセッサの性能を改善させるための命令発
行のアプローチ」と題するアコスタ(Acosta)他の論文
(IEEE Transactions on Computers,Vol.C−35,No.9,19
86年9月,815−828ページ)中に記述されている。
命令を並行して発することに対する制約は、命令群が
同一のマシンサイクル中に同一機能のプロセッサ装置の
使用を要求してはならないという点である。この制約は
プロセッサアーキテクチャー内に含まれる資源に関係し
て、頻繁に使用される機能単位の追加的なコピーを設け
ることによって幾分除去することができる。
上記のアコスタ他による論文は、多重機能単位の存在
を利用するための並行命令発行のアプローチを提示して
いる。更に、上記論文中に述べられたCRISPアーキテク
チャによれば、もう一つの命令と並行して分岐命令を実
行することができる。更に、メインフレームにより、整
数の浮動小数点命令を種図の機能単位に並行して発送す
ることが可能であった。
然しながら、これら方式では全て、同時に発行された
命令が互いに依存関係にないことが必要である。依存関
係の種類は以下に詳説するが、一対の命令間の基本的依
存関係は、その対命令中の第2の命令が対命令中の第1
の命令の実行によって生するデータを処理することであ
る。従って、第1の命令は第2の命令に先立って処理す
る必要がある。
かくして、これら現存のプロセッサはすこぶる少数の
命令の組合せしか同時に発することはできず、また実行
することもできない。分岐命令はメモリ照会が不要で新
たな1アドレスだけした計算する必要のない特殊なケー
スである。同様にして、浮動小数点と整数命令はALU資
源しか必要とせず、メモリ照会を要しない。かくして、
命令相互間のデータ依存関係は存在しない。
上記制約に鑑みて、これらシステム中で並行に発行さ
れる命令の種類は極度に制限され、一定の限定された状
況では2個の命令を1クロックで発することが可能だと
はいえ、その平均処理能力は1命令あたり1クロックを
大きく上廻ることは不可能である。
本書において『命令ファミリー』とは、1プログラム
内における順次命令のグループであって且つ1つのクロ
ックの中で並行して発行することの可能な命令グループ
をいう。本発明において、その1ファミリー内に含ませ
ることの可能な命令の種類の数は、従来技術によるプロ
セッサ内に可能なものよりも相応に大きい。
本発明の場合、1クロック中に、例えばALUとメモリ
に照会する形式の命令を含む命令のファミリーを発する
ことができる。特定のパイプラインは、発行された命令
ファミリーの受領と処理を容易にする資源を含む。従っ
て、本発明は、1クロックあたり1命令を越える命令の
処理能力を提供するものである。
本発明によれば、分岐予測の誤りから回復するための
分岐復帰機構は、分岐予測ビットと分岐条件ビットを比
較することによって予測の誤りをテストする。予測が誤
りの場合には、ファミリー内の分岐命令の位置に応じて
上記の分岐復帰機構は異なる。もし分岐命令がファミリ
ー内の最後の命令であれば、パイプラインはフラッシュ
され、正確な次の命令がパイプライン内に取出される。
もし分岐命令がファミリー内の最後の命令でなくて、分
岐に続くファミリー内の全命令と関連するデータの書込
みは禁止される必要がある場合には、パイプラインはフ
ラッシュされ、正確な次の命令がパイプライン内に取出
される。
本発明のその他の特徴と利点は図面と以下の詳細な解
説により明らかとなる。
実施例 本発明の実施例となるプロセッサは、1サイクルあた
り2つ以上の命令を発するようには設計されていない現
存のプロセッサによって使用できるターゲット命令のセ
ットを実行できる。従って、本実施例のプロセッサは、
現存システムと下位互換性をもち、現存システム用に書
込まれたプログラムを実行することができる。然しなが
ら、以下に示すように、本発明のプロセッサシステムの
命令ファミリー(前記したように、1プログラム内にお
ける順次命令のグループであって且つ1つのクロックの
中で並行して発行することの可能な命令のグループ)の
並行処理能力によって、処理能力は劇的に向上する。
本発明の好ましい実施例では、マイクロプログラミン
グされたマシーンが用いられており、各オブジェクトコ
ードもしくはマクロ命令を実行する制御信号が、その命
令にとって固有のマイクロコードルーチンによって提供
される。
ターゲット命令のセットから、対候補(PC)となる命
令の小セットが選択されて、2個の対候補(PC)の命令
ファミリーを並行実行するための特殊マイクロコードル
ーチンが制御メモリ内にストアされる。ここで、対候補
(以下、PCと略称する)とは、上記したように、ターゲ
ット命令セットから並行して実行できる対としてグルー
プ分けされた命令の小セットをいう。何れの命令がPCの
小セット内に含まれるかの選択は、アプリケーションプ
ログラム中の命令の発生頻度、命令の並行処理の困難
さ、命令の並行処理に必要とされる資源を含む種々の要
素に依存する。これら特殊ルーチンは以下に述べる如
く、プロセッサ内の特殊資源に依存する。
然しながら、ただPC(対候補)のみから成るファミリ
ーの場合でさえ、もし資源の競合が発生する場合には、
並行処理は可能でない。従って、システムはこれらの場
合には並行処理を取消すことになる。実行装置はかかる
場合が頻繁に発生せず、また処理能力を大きく低下させ
ないように構成される。
本実施例に係るシステムは、ターゲット命令セットを
実行する非対動作プロセッサ(従来のプロセッサ)とオ
ブジェクトコード互換性がある。このため、非対動作マ
シーンにより実行される整列順のオブジェクトコードか
ら成るオブジェクトコードプログラムが、そのプログラ
ムへ何ら変更を加えないでも、本発明の対動作マシーン
によって実行できる必要がある。
従って、本実施例のシステムでは、プログラム内に整
列順の対の命令グループが、所定の条件が満たされる
と、同時に発行させる。好ましい実施例において、これ
らの条件の発生は、命令のデコード時に発生されるステ
ータスビットにより指示される。
さて、図面について述べると、第1図は実施例のハイ
レベルブロックダイアグラムである。同じ符号は図面を
通じて同じ部分又は対応する部分を示す。
第1図において、フェッチ装置(FU)10は命令キャッ
シュ(IC)12と接続される。FU12は、アドレス状態マシ
ーンにより制御されるアドレス計算ハードウェアを含ん
でおり、通常のシーケンス動作中にアドレスを増分し、
条件分岐及びジャンプ命令についての分岐ターゲット
(BRANCH−TARG)アドレスを計算する。IC12の出力は、
命令待ち行列レジスタ(IQR)14、16に接続される。IQR
14及び16と、ランク0の第1及び第2のパイプラインレ
ジスタ(ROFとROS)20及び18は、直列に接続されて命令
待ち行列21を形成する。ROS18及びROF20の出力は、それ
ぞれ、ランク1の第2及び第1のパイプラインレジスタ
に接続され、また、第2デコード装置(DCS)24の入力
及び第1デコード装置(DCF)22の入力に接続されてい
る。2つのデコード装置DCS、DCFの出力は、それぞれ第
1デコード出力(DCO)バス28及び第2デコード出力(D
CO)バス30によって対化論理装置(PLU)26のデータ入
力に接続されている。対化論理装置(以下、PLU)は、
一対のデコードした命令からのデコードの結果を調べ
て、その2つの命令が一対として並行に発行されて実行
され得るかどうかを判定する機能を有する。上記デコー
ド出力バス28、30のステータスビットは、第1ステータ
スバス32及び第2ステータスバス34によってPLU26の制
御入力に接続されている。PLU26は、併合デコードバス
(MDB)38によって実行装置(EU)36に接続されるデー
タ入力と、フェッチ装置制御(FUC)バス40によってFU1
0に接続されるフェッチ装置(FU)制御出力と、パイプ
ライン制御装置(PUC)バス42によってパイプライン装
置(PU)に接続されたパイプライン装置(PU)制御出力
とを有する。実行装置(EU)36は、後述のFIssue信号を
アサートする。
さて、以下に第1図のシステムの動作を説明する。命
令ファミリー内の第1命令及び第2命令はそれぞれROF2
0とROS18内にストアされる。これらの命令はそれぞれの
デコード装置22、24でデコードされ、デコード結果はそ
れぞれのDCOバス28、30上に出力される。第1のデコー
ド結果は第1の入口点フィールド(EPT F)と第1のス
テータスビットのセットを含み、第2のデコード結果
は、第2の入口点フィールド(EPT S)と第2のステー
タスビットのセットを含む。各デコード結果におけるス
テータスビットは、それぞれの命令がPCであるかどう
か、またどの資源が命令を実行するに必要であるかを示
す。両方のデコード結果からのステータス情報はステー
タスバス32と34上のPLU制御ポートに送られる。
第1のステータスビットは、PCと呼ばれて、その命令
が対候補であるかどうかを示す。第2のステータスビッ
トは、EPTIssueと命名されて、マクロ命令が1個のクロ
ックだけしか必要としないか、多数のクロックを必要と
するかを示す。多数のクロックが必要な場合、次のクロ
ック間に、後続の命令が発せられる。1個のクロックだ
けした必要としない場合、ROF20とROS18のデータは、信
号FIssueが生ずるまで、変化しない。この信号はFU10に
より受信され先読取り(プリフェッチ)が再開される。
その他のステータスビットは、命令がALUもしくはメモ
リアドレス指定論理に対して実行を要求するかどうかを
示す。
PLU26の出力はステータス情報に依存し、次の3つの
可能性のうちの一つを出力する。先ず、もし第1の命令
がPCでなければ、第1の命令のデコード結果は併合デコ
ードバス(MDB)38上に出力されマイクロコードルーチ
ンをアクセスし第1の命令だけを単独に実行する。更
に、FUCライン40とPUCライン42上に発せされた信号によ
って次の単独の命令がIC12から読出され第1の命令(RO
F20内にストア)だけがPU25の次段に発せられる。その
ため、プロセッサの並行発行能力は使用されない。
第2に、もし第1命令と第2命令がPC(対候補)であ
って対化可能(並行発行及び実行が可能)であれば(即
ち、資源の競合が存在しなければ)第1命令と第2命令
のデコード結果は併合されてMDB38上に出力される。併
合されたデコード結果は、第1命令と第2命令を対にし
て実行するようにマイクロコードにアクセスする。更
に、FUCライン40とPUCライン42上に発せされた信号によ
ってプログラム内の次の2つの命令がIC12から読出さ
れ、ランク0のレジスタ18、20内にストアされた一対の
命令がPU25の次のランク(ランク1)に発行される。
第3に、もし、第1命令がPC(対候補)であるが第1
命令と第2命令は対化不可能である場合(例えば資源競
合の場合)には、第1命令のデコード結果のサブフィー
ルドがMCB38上に出力され、第1命令を単独に実行する
ようにマイクロコードルーチンにアクセスする。更に、
FUCライン40及びPUCライン42上に発行された信号によっ
て次の単独命令がIC12から読取られ、第1命令のみがRO
Fレジスタ20からPC25の次段のレジスタに発せられる。
従って、プロセッサの並行発行能力は使用されない。
本システムの動作は具体例を考察することによって最
もよく理解することができる。これらの具体例は、1つ
のスタックを、ALU動作のためのデータソース及びデー
タシンクとし利用するプロセッサについてのものであ
る。データは、メモリとスタックとの間でロード及びス
トア動作によって転送される。そのスタックは、8個の
物理レジスタ(ランクR0−ランクR7)を含み、また、こ
の物理レジスタを指示する、スタックの上部に論理的に
割りふられたレジスタポインタ(RP)を含む。スタック
レジスタには、論理指示名A〜Hが付与され、これら
は、スタックの上部のレジスタをAとする、RP値によっ
て定められる。このタイプのプロセッサでは、データの
依存性が、スタックレジスタの競合によって特徴付けら
れる。もう一つのタイプの依存関係はPR競合である。命
令は全体としてRPを増分したり減分したりする。かくし
て、命令のファミリーはRPの変化に対して競合する要求
をもつことになる。
第2図と第3図は、2個(一対)の命令ファミリーを
標準的なやり方で実行する間に生ずるスタックの構成と
本発明に従って並行に命令を実行するための1つのルー
チンを掲げた図式的な図である。
第2図について述べると、2個の命令のLDI−LOADフ
ァミリーを順次単独実行する際のスタック形が示されて
いる。ここでLDIは、命令内に含まれる即値データを指
定の場所にロードする命令であり、LOADは、データを指
定のソースからレジスタへ転送する命令である。これら
命令は共にRPに対して定義されるHレジスタにデータを
書込む。LDI実行中に、即値データがレジスタH(ラン
ク0すなわちR0)に書込まれ、RPは増分されてレジスタ
HがR1(ランク1)に変化する。その後、LOADの実行中
にキャッシュデータがレジスタHに書込まれ、RPは再び
増分されてレジスタHはR2に変化する。
第4図に示す標準的な3段のパイプライン12について
述べると、R3(ランク3)のパイプライン段中には、こ
れら命令はそれぞれデータをHレジスタに書込み、RPを
増分する。従って、並行処理は、これらレジスタとRPの
競合の影響を除去するための何ら特別の資源や手法なし
には、可能にならない。
第5図に示す実施例で使用される比較的深度の高い6
段のパイプラインについて対の並行処理方法を解説す
る。対命令を並行処理するには、ロード命令のデータキ
ャッシュアドレスがランク2中に発生させられ、オペラ
ンドが取出され、キャッシュデータがレジスタG(R1)
に書込まれ、ランク3中において即値データがレジスタ
H(R0)に書込まれる。ランク4中においてRPは2だけ
増分されることによってR1はAと、R2はHと定義され
る。かくして、本発明のマイクロコードと資源によって
一対の命令が並行して発行され実行することが可能にな
る。
第3図について述べると、2個の命令のLDD−DADDフ
ァミリーを順次単独実行するためのスタック構成が描か
れている。ここで、LDDは、指定の場所の2ワード(ダ
ブルワード)をレジスタへロードする命令であり、DADD
は、2つのダブルワードを加算してその合計を得る命令
である。更に、第4図の3段パイプラインについて述べ
ると、LDDの実行中に、RPは増分されてレジスタAはR2
と定義されてOP2データの高次フィールド(H)がレジ
スタAに書込まれ、OR2データの低次フィールド(L)
がランク2中にレジスタH(R3)に書込まれる。最後
に、RPは再び増分されて、ランク3中にレジスタAはR3
と定義される。その後、DADDの実行中、レジスタC(R
1)及びレジスタA(R3)中のデータは合計されてC(R
1)に書込まれ、レジスタD(R0)レジスタB(R2)中
のデータはランク2中に合計されてレジスタD(R0)に
書込まれ、RPはランク3中に2だけ減分される。
第4図の3段パイプラインについて述べると、もし対
命令が並行して実行される場合には、データの書込みと
合計はランク3中に行われるため、解決不能なデータの
競合が生ずることになる。RPの変更に対する要求条件が
競合するため、ランク3中に更なる競合が生ずることに
なろう。
第5図の6段パイプラインについて述べると、対命令
を並行実行するために、ランク3中にOP2データが、ラ
ンク3中にデータキャッシュから読出され、ランク4中
にレジスタA(R1)とB(R0)の内容が合計され、ラン
ク5中にその合計がレジスタA(R1)とB(R0)に書込
まれるとともに最初のOP2データがレジスタH(R2)と
G(R3)に書込まれる。かくして、解決不能なレジスタ
もしくはRPの競合は何ら生じない。
上記より,並行処理は、データをスタック内のレジス
タに書き込む前に、データへのアクセスを要求すること
が分かる。第6図は、その要求されるアクセスを容易に
するレジスタの構成を示した図である。第6図におい
て、レジスタファイル60は、4個の書き込みポートと4
個の読み出しポートを備え、ダブルワードを同時に転送
することができるようになっている。更に、バイパス回
路62と、バイパスパス64と、キャッシュデータ65a及び
即値データ65b間のワイドマルチプレクサ及び相互接続6
5と、ALU入力バス65cと、SBus65dとが、データのレジス
タファイル60へ書き込みの前に、データへの直接のアク
セスを可能にしている。従って、深いパイプライン構成
のマルチポートレジスタファイル60によって、マイクロ
コードは命令の多くの組合せをファミリーとして実行す
ることができる。
例えば、第3図に示す、LDD−DADDの対を実行する
際、ランク3においては、キャッシュデータは、レジス
タファイルへ書き込まれる前に、直接、データキャッシ
ュ66からCDHi 67aと CDLo 67bへ転送される一方、OP1
−Hは、RegAからKHReg67cへ転送され、OP1−Lは、Reg
BからKLReg67dへ転送される。転送されたデータの和
は、ランク4において、ALU68によって計算され、ラン
ク5において、RegA及びRegBへ書き込まれる。更に、CD
Hi 67aとCDLo 67b内のデータは、ランク5において、Re
gHとRegGへ書き込まれる。
例えば、ロード命令とロード即値命令を含むファミリ
ーは、1クロック中に発せられ処理することが可能であ
る。同様にロードと加算命令を含むファミリーが1クロ
ック中に発せられ処理することが可能である。
第7図は本発明の実施例の対化論理装置26のアーキテ
クチャを示す詳細なブロックダイアグラムである。デコ
ード装置(DCF:DCS)の入口は、ROF20とROS18の命令に
応答して第1入口点EPF及び第2入口点EPSを発生する第
1入口点テーブル(EPTF22)及び第2入口点テーブル
(EPTS24)である。
EPTF22及びEPTS24の出力は、それぞれ、第1DCOバス28
及び第2DCOバス30に接続されている。第1入口点(EP
F)ビットフィールドF<0:15>は、EPTF22から第1DCO
バス28へ転送され、第1入口点(EPS)ビットフィール
ドS<4:15>は、EPT24から第2DCOバス30へ転送され
る。ビットフィールドF<1,2,14,15>は、第1ステー
タバス32により対化論理部72に転送され、また、ビット
フィールドS<5,6,7,8>は、第2ステータスバス34に
より対化論理部72に転送される。
ビットフィールドF<9:15>は、FLSBバス76によって
マルチプレクサ/論理装置(MLU)74の0側の入力へ転
送され、ピットフィールドS<9:15>は、SLSBバス78に
よりMLU74の1側の入力へ転送される。
ビットフィールドF<2:8>はMMSBバス80上に転送さ
れ、MLU74出力はMLSBバス82に転送される。MMSBとMLSB
バス80、82は併合されて併合EPT(MEPT)バス38のMSBと
LSB部分を形成する。MEPTはマイクロメモリ39からのマ
イクロコードをアクセスするために使用される。
対化論理部72は、FUCバス40上を転送されパイプライ
ンに対命令もしくは単一命令を発するように指令するPC
及びEPC信号を発生する。更に、非対のPC信号が、MLU74
の09入力に接続されたPCNPライン84上に転送され、ビッ
トF<2>は多重制御ライン86上をMLU74の制御入力へ
転送される。
第8図は、MEPT<2:15>によりアドレス指定されるマ
イクロメモリ39のメモリアップである。MEPTのMSBフィ
ールドは、F<2>がMSBである場合、常にF<2:8>に
等しい。MEPTのLSBフィールドは、MLU74の出力に等し
く、NPPCライン84及び多重制御ライン86上の信号に依存
する。全対候補PCのMSB,F<2>は、1の値を有し、非
対のPC全体について0の値を有する。
対候補ではない第1の命令の場合、MSB、F<2>は
0であり、マイクロコードアドレス(MEPT)はアドレス
空間92の上半分90内に配置される。対候補の第1の命令
の場合、MSB,F<2>は1である。マイクロコードアド
レス(MEPT)はアドレス空間の下半分94である。
MEPTを発生させるための第7図に示すシステムの動作
を、3つの場合、すなわち、第1の命令が対候補でない
場合、第1命令が対候補であるが第2命令と対化されて
いない場合、および第1命令が対候補であって第2命令
と対化されている場合について次に説明する。
第1の命令が対候補でない場合、F<2>は0であ
り、MLU74の0入力はMLSBバス82に接続されるため、フ
ィールドF<9:15>はMLSBバス82上を転送され、MFPT
は、下式1のようになる。
MEPT<2:15>=F<2:8>:F<9:15> 式1 そのため;MEPTはEPTFフィールドに等しくなる。このア
ドレスは第8図に示すアドレス空間92の上半分90内にあ
る。かくして、MEPTはこの場合マイクロコードにアクセ
スし、第1の命令を単独命令として実行する。
第1命令が対候補であるが第2の命令と対化可能でな
い場合には、F<2>は1で、NPPCライン84上の信号が
セットされる。この場合、MLU74はフィールド<0000000
>をMLSBバス82に転送し、MEPTは、 MEPT<2:15>=F<2:8>;<0000000> 式2 となる。そのため、MEPTはゼロ7個のストリングによっ
て伴われるEPTFのMSBフィールドに等しくなる。かくし
て、非対化対候補を実行するためのマイクロコードのア
ドレスは第8図に示すアドレス空間92の下半分94内に配
置される。
もし第1の命令が対候補であって対化される場合に
は、F<2>は1で、NPPCライン84上の信号はセットさ
れない。この場合、MLU74フィールドS<9:15>をMLSB
バス82に転送し、MEPTは、 MEPT<2:15>=F<2:8>:S<9:15> 式3 となり、そのためMEPTはEPTSのLSBフィールドとEPTFのM
SBフィールドに等しくなる。第8図に示すように、これ
らのアドレスはアドレス空間内の非対化指令のアドレス
の後に来る。
対命令が発行された後、その発行された対命令の首尾
良い実行やリタイアを阻止する例外や分岐予測の誤りの
如き事実が発生することがある。以下はこれら事実の発
生と効率良く取組むためのユニークな例外処理と分岐手
段を説明したものである。
先ず、例外処理について参照すると、例外は、命令の
実行を阻害するプロセッサ内部の条件によって惹起され
る。かかる条件の例は、ALUタイプの命令についての演
算オーバフローやメモリ参照形式の命令についてページ
フォルトを含むものである。
例外に遭遇する各命令について、ソフトウェア及び/
又はマイクロコードを含む特定の例外処理プロシージャ
が、単独で発行される命令のために開発されていた。一
般に、例外処理マイクロコードは、例外が存在しない場
合に同じ命令を実行するに必要とされるマイクロコード
と対比すると、とても複雑である。
第5図の6段パイプラインについて説明すると、例外
条件が、パイプラインのランク4中で発生している。例
外は命令が対化される時に発生しているために、例外処
理に対するアプローチの一つは、それぞれの可能な対命
令ごとに、例外を処理するための特定のマイクロコード
をストアすることであろう。
然しながら、かかるアプローチは幾つかの欠点をもっ
ている。例外に遭遇した命令より前の命令は完了さねば
ならないために、第1の命令と関連するストア作業を完
了させるために複雑な調整コードが必要となり、その一
方で第2命令に関連するストア作業を阻止することが必
要とされるであろう。更に、2つ以上の例外に遭遇する
こともあり得る。例えば、対命令(LOADとADD)は、LOA
Dに対してページフォルトに、ADDに対してオーバフロー
例外に遭遇することもあろう。更に、例外の組合せの数
は非常に多くなり、対の例外プロシージャをデバックす
ることが極めて困難である。
本発明の解決手段は、単独で発せられる命令の例外処
理について既に存在する例外処理プロシージャを活用す
るものである。対命令を実行するためのマイクロコード
は、パイプラインのランク4中に例外条件の存在をテス
トすることによって例外を発見する。このプロシージャ
は、第9図のフローチャート内に示されている。もし例
外が発見された場合には、非対化再始動プロシージャが
呼出され対命令を打切り内の第1命令を単独で発行しな
おす。
利用される現存の例外処理プロシージャにとっては、
プログラムが非対化命令マシーンにより実行中の場合に
発生したであろう内部マクロ状態を、該内部マクロ状態
に一致する単一の命令例外処理プロシージャに提示する
必要があった。
この一致したマクロ状態は、第10図のフローチャート
に示される非対化再始動プロシージャによって提供さ
れ、そのプロシージャは、例外がランク4内で発見され
ると、ランク5において生ずるロードとストアを禁止す
る段階を含んでいる。かくして、スタックレジスタの内
容は変化しないし、内部マクロ状態は、打切った対命令
の直前に位置する命令の実行から得られた状態である。
このマクロ状態は、プログラムが非対化命令マシーンに
より実行される場合に例外処理プロシージャに提示され
る状態と一致する。
ランク5のロードとストアを禁止する他に、非対化再
始動はパイプラインのレジスタをフラッシュし、その対
の第1命令を単独命令として再発行する。もし例外が第
1命令と関連したものであれば、その単独マイクロコー
ドは再び同じ例外に遭遇して、非対化命令マシーンの場
合の如く例外を処理することができる。
もしその例外が第2の命令と関連したものであれば、
第1の命令は事件なしに完了し、また第2の命令は再び
例外に遭遇することになろう。もし第2の命令がこの時
対になっていなければ、単独のマイクロコードが例外を
処理することになろう。もし対になっていれば、もう一
つの非対化再始動が行われることになる。
対になっていない再始動プロシージャは処理能力を低
めるが、例外発生の頻度が比較的少ないため、この不利
益は複雑度が著しく軽減されることに鑑みて受け入れる
ことができる。
第11A〜11G図は一対の命令が実行中に例外を処理する
ための種々のパイプライン段とプロシージャを示すもの
である。
第11A図において、パイプライン25は、命令サイドと
アドレスサイドとに分割されており、命令待ち行列21I
及びアドレス待ち行列21Aと、命令ランクレジスタセッ
ト25I及びアドレスランクレジスタセット25Aとを備えて
いる。更に、命令マルチプレクサ90Iとアドレスマルチ
プレクサ90Aとは、命令サイドのIQ2レジスタIQ3レジス
タと、アドレスサイドのPQ2レジスタ及びPQ3レジスタ
と、ランク5のレジスタ出力を、それぞれ、FU10のアド
レス計算ハードウェアに選択的に接続する。第11B〜11G
図において、イネーブルとなったバスとレジスタは太線
で示してある。
第11B図において、対の命令A+Bが発行可能態勢に
あり、命令サイドのランク0のレジスタ181と201とから
出力され、AとBのアドレスP(A),P(B)は、アド
レスサイドのランク0のレジス18Aと20Aとから出力され
る。命令のビットはDCOバス28、30上のEPTへ転送され
る。
第11C〜11F図はランク1からランク4の対命令の進行
を描いたものである。ランク4で、マイクロコードは、
演算オーバーフロービットもしくはページフォルトの設
定等の例外をテストする。もし何ら例外が検出されなけ
れば、対命令はランク5を通って、その後リタイアす
る。このテストは、例外ステータスビットを分岐条件ビ
ットとし利用するマイクロコード内の条件分岐によって
実行することができる。例えば、例外を示ビットは、条
件コードレジスタ内にストアされた演算オーバーフロー
ビットとすることができる。
第11G図は対化されていない再始動プロシージャを示
す。マイクロコードはアドレスマルチプレクサ90Aを制
御して命令Aのアドレスをアドレス計算ハードウェアに
転送する。更に、対A+Bとそれらのアドレスは、命令
サイド及びアドレスサイドのランク1〜5のレジスタ
に、それぞれロードされて、パイプラインのフラッシュ
を開始する。
第11H図において、命令計算ハードウェアは、1C12か
ら命令Aをアクセスし、マイクロコードは、命令を命令
R0レジスタ20Iに、命令アドレスをアドレスR0レジスタ2
0Aに送るように、IQマルチプレクサを制御する。
第11I図は、命令Aとそのアドレスは、それぞれ、命
令ROF20IとアドレスROF20Aとに転送されたところを示
す。
第11J図は、命令Aが、単独のものとして、再発行さ
れたところを示す。
第11K図は、非対化再始動プロシージャを実行するた
めの制御システムのブロックダイヤグラムである。第11
K図について述べると、制御メモリの出力はMCR3レジス
タ100に接続され、MCR3レジスタ100は、MCR4レジスタ10
2とMCR5レジスタ104と組合せて、命令パイプライン25と
同期して動作するマイクロコードパイプラインを形成
し、そのパイプライン内の命令ファミリーを実行するの
に必要な制御信号を提供する。ランク4のマイクロコー
ドは、mビットのフィールドを含んでおり、ANDゲート1
06の第1の入力ボートに接続される。EU(実行装置)36
のALU108により発生された例外表示テストビットフィー
ルドは、ラッチ可能なMUX110の入力に接続されている。
MUX110の制御ボートは、ランク4のマイクロコードの制
御フィールド(nビット)に接続されており、MUX110の
出力は、ANDゲート106の第2入力ポートへ接続されてい
る。ANDゲート106の出力は、第1デコーダ(DECI)112
の入力へ接続される。DECIの出力は、例外条件が発見さ
れた場合、パイプラインをフラッシさせランク5の書込
み操作を禁止する制御信号である。
さて、第11K図に示すシステムの動作を説明する。ラ
ンク5のマイクロコードの制御フィールドによって、MU
X110は実行中の命令ファミリーについてテストされる特
定の例外表示テストビットを転送することになる。もし
例外条件が発生したならば、伝送されたテストビットは
論理“1"となり、ANDゲート106は開き、mビットのラン
ク5のマイクロコードフィールドがデコードされて非対
化再始動プロシージャ実行のための制御信号が発生す
る。もし例外条件が発生していなければ、伝送されたテ
ストビットは論理“0"であり、ANDゲート106は閉じ、デ
コーダの出力は、非対化再始動プロシージャを実行させ
ることはない。
分岐命令処理のプロシージャが、以下に第12図と第13
図のフローチャートを参照して説明される。多くのパイ
プライン化されたシステムの如く、分岐予測RAM(Branc
h Prediction RAM:BPR)が含まれている。それぞれの分
岐命令について、BPR内の分岐予測ビット(BPB)の状態
は、それと関連する分岐命令が実行された最終時におけ
る分岐条件の値を示す。分岐条件ビットは、再び同一値
を有するものと仮定する。第12図について述べると、も
し分岐が行われないであろうとBPBが予測すると、アド
レスの昇順に先読出しが続けられる。分岐が行われると
予測されると、先読出しは、ターゲットアドレスのアド
レスが形成される間、停止される。このターゲットアド
レスが形成されると、先読出しはターゲットロケーショ
ンにおいて再開する。
第7図について上記したように、MEPT(Merged Entry
Point Table)は、対を成す第1命令と第2命令のビッ
トにより一義的に決定され、命令の順序を反映する、即
ち、MSBフィールドは第1命令のEPからのビットを含
み、LSBフィールドは第2命令のEPからのビットを含
む。この一義的なMEPTは、第1命令もしくは第2命令が
分岐命令であるかどうかを表示するマイクロコードにア
クセスする。
分岐条件はランク4で評価される。BPBは、一対の命
令と共にパイプIDビットとしてパイプライン内を移動
し、先に実行された命令によって設定された分岐条件ビ
ット(BCB)と比較される。もしBPBとBCB(分岐条件ビ
ット)がマッチすれば、パイプラインの内容は正しく、
正規の処理が続けられて、対命令はリタイアする。もし
BPBとBCBがマッチしなければ、パイプライン中のその後
の命令は正しくなく分岐回復が起こらなければならな
い。
さて、第13図について述べると、分岐回復の第1ステ
ップは、分岐命令が対内の第1命令であるか第2命令で
あるかどうかに依存する。上述の如く、マイクロコード
ルーチンは2つの場合について異なっている。もし予測
誤りした分岐命令が対の第1命令であれば、第2命令の
ランク5の蓄積は当該命令が第1の命令に次いで実行さ
れるべき命令ではないから禁止されるべきである。更
に、その後続く命令は全てパイプラインからフラッシさ
れ、分岐に必要とされる更新は全てやり直される。
もし予測を誤った分岐命令が対の第2命令である場合
には、ランク5の対命令と関連する記憶が完了する。パ
イプラインの残りの段と先読出し待ち行列は以前通りフ
ラッシされる。
分岐の予測誤りの場合には、新たなアドレスを形成し
てプログラム内の分岐命令に続く正確な次の命令のロケ
ーションで先読出しを再開する。
アドレスの計算し直しはBPBがBCBとマッチしない場合
だけ必要である。分岐予測は不正確であったため、分岐
命令に続くパイプライン内の命令は不正確である。その
ため、もしBPBが分岐が行われたということを表示すれ
ば、分岐命令に続くパイプライン内の命令のアドレスは
BRANCH−TARGである。然しながら、次の命令アドレスは
BRANCH+1でなければならない。同様にして、もしBPB
が分岐が行われないことを示せば、分岐命令に続くパイ
プライン内の命令のアドレスはBRANCH+1となる。然し
ながら、次の命令アドレスはBRANCH−TARGとなるべきで
ある。
テーブル1について述べると、第1列において、マイ
クロコードは、現在、パイプラインのレジスタR5I−F
内に常駐する対内の第1命令が分岐命令であることを示
す。BPBが分岐で行われるであろうと予測誤りしたた
め、次の命令のアドレスは、BRANCH−TARGの代わりにBR
ANCH+1となるはずである。
第11A図に戻ると、今、R5P−F内に常駐する分岐命令
のアドレスは、アドレス側MUX90Aを介してFU10のアドレ
ス計算ハードウェアへ転送される。このアドレスは増分
されて読出される次の命令のアドレス、BRANCH+1を形
成する。
テーブル1に戻って、このテーブル1の第2列では、
マイクロコードは、第1命令が分岐命令であることを示
す。BPBは分岐が行われないであろうと予測誤りしたた
めに、次の命令のアドレスはBRANCH+1の代わりにBRAN
CH−TARGとならなければならない。
第11A図について述べると、現在、レジスタR5I−Fと
R5P−F内に常駐する分岐命令とそのアドレスは、それ
ぞれ命令サイドとアドレスサイドのMUX90Iと90Bを介し
てFU10のアドレス計算ハードウェアへ回送される。その
後、アドレス計算ハードウェアは、読み出されるべき次
の命令のアドレス、BRANCH+TARGを計算する。
第14図は、分岐予測のメカニズムを実施する制御シス
テムのブロックタイヤグラムである。第11K図について
説明した如く、制御メモリ39とMCR3レジスタ100とMCR4
レジスタ102とMCR5レジスタ104とが、接続される。制御
パイプラインの各ランクは、実行されている命令に関す
る一定の情報をストアするパイプID(PID)レジスタ120
を含んでいる。分岐予測RAM(BPR)122は、出力がPIDレ
ジスタ120に接続されて、分岐予測ビット(BPB)がパイ
プライン内を伝播し分岐命令が実行されるようになって
いる。ランク4のPIDレジスタア120内にストアされたBP
Bは、コンパレータ124の第1入力に接続されており、条
件コードレジスタ(CCR)126内にストされる分岐条件ビ
ット(BCB)またはALUから転送される分岐条件ビット
(BCB)が、マルチプレクサ(MUX)127を経由して、コ
ンパレータ124の第2入力に接続される。ランク4のマ
イクロコードのnビットフィールドは、ANDゲート128の
第1入力に接続され、コンパレータ124の出力はANDゲー
ト128の第2入力へ接続される。MUX127は、ランク4の
マイクロコードの制御フィールドにより制御される。AN
Dゲート128の出力はデコーダ(DECA)130の入力に接続
される。DECA130の出力は分岐予測機構を実行させる制
御信号である。
次に第14図に示すシステムの動作を4つの別々のケー
スについて説明する。最初の2つのケースは、BCBが、
先に実行された命令によって条件コードレジスタ126内
にセットされたビットである場合の条件分岐命令に関す
るものである。この2つのケースは、前記の先に実行さ
れた命令が、先に実行されたファミリーに含まれるか、
もしくは分岐命令を含む現在のファミリー内に含まれる
かどうかによって区別される。
第2の2つのケースは、BCBが、先に実行された命令
によりレジスタファイル(例えばRegA)内にストアされ
たデータを用いてALUによって計算される場合の条件分
岐命令に関する。これら2つのケースは、先の命令が現
在ファミリー内に含まれるかどうかによって識別され
る。第1のケースは、条件コードレジスタ126内のBCB
は、既に、先の命令の実行中にセットされている。もし
BCBとPID120からのBPBがマッチしなければ、分岐は予測
誤りされたものであり、コンパレータ124の出力がANDゲ
ート128を開く。その後、nビットのランク4のマイク
ロコードフィールドが、DECA130へ移され、分岐予測メ
カニズムを実行するのに必要な制御信号を発生する。上
記の如く、nビットフィールドは、ファミリー内の分岐
命令の位置を示し、従って、デコーダの出力は、その位
置に依存して異なることになろう。
もしBCBとBPBがマッチすれば、コンパレータ124の出
力はANDゲート128を閉じ、分岐回復メカニズムを実行さ
せる制御信号は、パイプラインの内容は正確であるの
で、発生されない。
もし、BCBが、現在ファミリー内の命令により書込ま
れる条件コードレジスタ126からのビットであれば、BCB
ビットは、レジスタファイルに書込まれる前に、コンパ
レータ124に提供されなければならない。MUX127は、ラ
ンク4中に、ALUの出力を直接コンパレータ124へ提供す
るように制御されて、その後、BCBCが、ランク4中に条
件コードレジスタに書込まれる。
もしBCBがALUにより計算され且つレジスタデータが先
のファミリー内の命令によって書込まれたならば、レジ
スタデータはALUに転送され、ALU出力はMUX127を介して
コンパレータ124へ転送される。
もしレジスタデータが現在ファミリー内の命令によっ
て発生させられたら、データは、レジスタファイルに書
込まれる前に、第6図について述べたハードウェアを利
用してALUに提供され、また、ALU出力は、ランク4中に
MUXを介してコンパレータ124へ転送される。その後同デ
ータはランク5中にレジスタファイルに書込まれる。
以上、本発明を2個の命令を並行実行するシステムに
ついて述べてきたが、本発明の原理は2個以上の命令フ
ァミリーについても等しく適用可能である。その場合、
対化論理は2個以上のステータスフィールドに応ずるよ
うに修正され、そのファミリを並行実行するための特別
のマイクロコードルーチンが書込まれることになろう。
更に、マイクロコードプロセッサについて説明してき
たが、本発明に係るシステムは、論理アレイを用いて制
御信号を発生させるマシーンにも適用することができ
る。両システムとも一定状況において利点をもち、その
選択は本発明の実施にとって重要な問題ではない。更
に、レジスタタック以外の形のレジスタ構成を使用する
こともできる。
第7図を参照して説明したステータスビットは、対化
論理によって、命令ファミリーのEP(エントリポイン
ト)を併合すべきかどうかを定めるのに使用される。代
替例として、EPは常に併合されるものとすることもで
き、その場合、アクセスしたマイクロコードが、命令フ
ァミリーが並行して発行されることを制御することにな
ろう。
更に、並行に発行され得るターゲット命令の小セット
の選択は必須ではない。マイクロコードルーチンは、タ
ーゲット命令のセットからあらゆる可能な対の命令のた
めに、提供され得る。
かくして、本発明は望ましい実施例について説明した
が、その置換、変形は当業者にとって明らかであろう。
従ってそれは特許請求の範囲に提示されるものを除いて
は本発明を限定するものと考えるべきではない。
【図面の簡単な説明】
第1図は、本発明のハイレベルのブロック図である。 第2図は、第1の対命令を順次並行処理する特殊例を示
す図である。 第3図は、第2の対命令を順次並行処理する特殊例を示
す図である。 第4図は、従来技術による3段パイプラインのブロック
線図である。 第5図は、本発明の実施例に係る6段パイプラインの線
図である。 第6図は、バイパス回路を備えるマルチポートレジスタ
ファイルのブロック図である。 第7図は、本発明の実施例に係る対化論理装置のブロッ
ク図である。 第8図は、本発明の実施例に使用されるマイクロメモリ
のメモリマップを示す図である。 第9図は、本発明の例外処理プロシージャのフローチャ
ートである。 第10図は、本発明の非対再開始プロシージャのフローチ
ャートである。 第11A図〜11J図は、本発明の例外・分岐処理プロシージ
ャに関するパイプライン段を示すブロック図である。 第11K図は、例外処理制御システムのブロック図であ
る。 第12図は、本発明の分岐プロシージャのフローチャート
である。 第13図は、分岐予測誤りを処理するプロシージャのフロ
ーチャートである。 第14図は、分岐予測制御システムのブロック図である。 10……読出し(フェッチ)装置、 12……内部キャッシュ(IC) 14,16……命令待ち行列レジスタ 18,19……パイプラインレジスタ、 22,24……デコード装置、 26……対化論理装置(PLU)、 28,30……デコード出力バス、 32、34……ステータスバス、 36……実行装置、 38……併合デコードバス。
フロントページの続き (72)発明者 フィリップ アール マネラ アメリカ合衆国 カリフォルニア州 94062 レッドウッド シティ アイリ ス ストリート 406 (72)発明者 ロバート ダブリュー ホースト アメリカ合衆国 イリノイ州 61821 シャンペイン ロブソン パーク ドラ イヴ 2804 (56)参考文献 特開 平2−47725(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 9/38

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】1クロックの間に1プログラムに含まれる
    順序付け命令グループを発するように構成されたデータ
    プロセッサであって、メモリ基準値を計算してALU動作
    を行う第1ステージとデータを書き込む第2ステージと
    を含むいくつかのステージで命令を実行するパイプライ
    ンを有し、且つ、分岐条件ビットの状態を予測し且つ分
    岐命令が実行された直後にその分岐が行われたかどうか
    に依存して後続の命令か又は分岐ターゲット命令をフェ
    ッチする分岐予測プロシージャを含んでいるデータプロ
    セッサにおいて、1クロックの間に発した命令グループ
    中に含まれる分岐命令を処理する分岐処理プロシージャ
    が、次のステップ: 前記命令グループ内の1個だけの命令が分岐命令である
    場合にのみ命令グループを発し、 前記命令グループ中のどの命令が分岐命令であるかどう
    かを判定し、 前記パイプラインの第1ステージにおいて前記分岐予測
    が正しかったかどうかを判定し、 もし分岐予測が誤っていて且つ分岐命令が命令グループ
    の第1命令であるならば、前記パイプラインの第2ステ
    ージの間において、命令グループの前命令の実行に関連
    するデータの書き込みを禁止し、 前記パイプラインの全ステージから命令をフラッシュ
    し、 プログラムにおいて前記分岐命令に続く正しい次の命令
    をフェッチする ことを含むことを特徴とする分岐処理方法。
  2. 【請求項2】1クロックの間に1プログラムに含まれる
    順序付け命令グループを発するように構成されたデータ
    プロセッサであって、メモリ基準値を計算してALU動作
    を行う第1ステージとデータを書き込む第2ステージと
    を含むいくつかのステージで命令を実するパイプライン
    を有し、且つ、分岐条件ビットの状態を予測し且つ分岐
    命令が実行された直後にその分岐が行われたかどうかに
    依存して後続の命令か又は分岐ターゲット命令をフェッ
    チする分岐予測プロシージャを含んでいるデータプロセ
    ッサにおいて、1クロックの間に発した命令グループ中
    に含まれる分岐命令を処理する分岐処理プロシージャ
    が、次のステップ: 前記命令グループ内の1個だけの命令が分岐命令である
    場合にのみ命令グループを発し、 前記命令グループ中のどの命令が分岐命令であるかどう
    かを判定し、 前記パイプラインの第1ステージにおいて前記分岐予測
    が正しかったかどうかを判定し、 もし分岐予測が誤っていて且つ分岐命令が命令グループ
    の第1命令でないならば、前記パイプラインの第2ステ
    ージの間において、前記分岐命令に続く命令グループ内
    の全命令の実行に関連するデータの書き込みを禁止し、 前記命令グループの前記分岐命令に先行する全命令に関
    連するデータの書き込みを完了し、 前記パイプラインの全ステージから命令をフラッシュ
    し、 プログラムにおいて前記分岐命令に続く正しい次の命令
    をフェッチする ことを含むことを特徴とする分岐処理方法。
  3. 【請求項3】請求項1に記載の方法において、前記フェ
    ッチのステップは、更に、 前記命令グループに含まれる分岐命令のアドレスを格納
    し、 該格納した分岐命令アドレスと前記パイプラインの前記
    分岐命令を使用して前記プログラム中の分岐命令に続く
    次の命令のアドレスを計算し、 該計算したアドレスによって、前記命令グループの前記
    正しい次の命令にアクセスする ことを特徴とする方法。
  4. 【請求項4】1クロックの間に1プログラムに含まれる
    順序付け命令グループを発するように構成されたデータ
    処理装置であって、メモリ基準値を計算してALU動作を
    行う第1ステージとデータを書き込む第2ステージとを
    含むいくつかのステージで命令を実行するパイプライン
    を有し、且つ、分岐条件ビットの状態を予測し且つ分岐
    命令が実行された直後にその分岐が行われたかどうかに
    依存して後続の命令か又は分岐ターゲット命令をフェッ
    チする分岐予測プロシージャを含んでいるデータ処理装
    置において、1クロックの間に発した命令グループ中に
    含まれる分岐命令を処理する分岐処理装置が、 前記命令グループ内の1個だけの命令が分岐命令である
    場合にのみ命令グループを発する手段と、 前記命令グループ中のどの命令が分岐命令であるかどう
    かを判定する手段と、 前記パイプラインの第1ステージにおいて前記分岐予測
    が正しかったかどうかを判定する手段と、 もし分岐予測が誤っていて且つ分岐命令が命令グループ
    の第1命令であるならば、前記パイプラインの第2ステ
    ージの間において、命令グループの全命令の実行に関連
    するデータの書き込みを禁止する手段と、 前記パイプラインの全ステージから命令をフラッシュす
    る手段と、 プログラムにおいて前記分岐命令に続く正しい、次の命
    令をフェッチする手段と を含むことを特徴とする分岐処理装置。
  5. 【請求項5】1クロックの間に1プログラムに含まれる
    順序付け命令グループを発するように構成されたデータ
    処理装置であって、メモリ基準値を計算してALU動作を
    行う第1ステージとデータを書き込む第2ステージとを
    含むいくつかのステージで命令を実行するパイプライン
    を有し、且つ、分岐条件ビットの状態を予測し且つ分岐
    命令が実行された直後にその分岐が行われたかどうかに
    依存して後続の命令か又は分岐ターゲット命令をフェッ
    チする分岐予測プロシージャを含んでいるデータ処理装
    置において、1クロックの間に発した命令グループ中に
    含まれる分岐命令を処理する分岐処理装置が、 前記命令グループ内の1個だけの命令が分岐命令である
    場合にのみ命令グループを発する手段と、 前記命令グループ中のどの命令が分岐命令であるかどう
    かを判定する手段と、 前記パイプラインの第1ステージにおいて前記分岐予測
    が正しかったかどうかを判定する手段と、 もし分岐予測が誤っていて且つ分岐命令が命令グループ
    の第1命令でないならば、前記パイプラインの第2ステ
    ージの間において、前記分岐命令に続く命令グループ内
    の全命令の実行に関連するデータの書き込みを禁止する
    手段と、 前記命令グループの前記分岐命令に先行する全命令に関
    連するデータの書き込みを完了する手段と、 前記パイプラインの全ステージから命令をフラッシュす
    る手段と、 プログラムにおいて前記分岐命令に続く正しい次の命令
    をフェッチする手段とを有する ことを特徴とする分岐処理装置。
  6. 【請求項6】請求項4に記載の装置において、前記フェ
    ッチ手段は、更に、 前記命令グループに含まれる分岐命令のアドレスを格納
    する手段と、 該格納した分岐命令アドレスと前記パイプライン中の前
    記分岐命令を使用してプログラム中の前記分岐命令に続
    く次の命令のアドレスを計算する手段と、 該計算したアドレスを用いて、前記命令グループの前記
    正しい次の命令にアクセスする手段と を含むことを特徴とする装置。
JP2132425A 1989-05-23 1990-05-22 分岐処理方法及び分岐処理装置 Expired - Lifetime JP2846406B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US356316 1989-05-23
US07/356,316 US5072364A (en) 1989-05-24 1989-05-24 Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel

Publications (2)

Publication Number Publication Date
JPH03116235A JPH03116235A (ja) 1991-05-17
JP2846406B2 true JP2846406B2 (ja) 1999-01-13

Family

ID=23400969

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2132425A Expired - Lifetime JP2846406B2 (ja) 1989-05-23 1990-05-22 分岐処理方法及び分岐処理装置

Country Status (6)

Country Link
US (1) US5072364A (ja)
EP (2) EP0399760B1 (ja)
JP (1) JP2846406B2 (ja)
AU (1) AU631874B2 (ja)
CA (1) CA2016254A1 (ja)
DE (1) DE69033443T2 (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
EP0404068A3 (en) * 1989-06-20 1991-12-27 Fujitsu Limited Branch instruction executing device
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
JP2834292B2 (ja) * 1990-08-15 1998-12-09 株式会社日立製作所 データ・プロセッサ
US5442772A (en) * 1991-03-29 1995-08-15 International Business Machines Corporation Common breakpoint in virtual time logic simulation for parallel processors
US5630157A (en) * 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5826055A (en) * 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
DE4237417C2 (de) * 1992-03-25 1997-01-30 Hewlett Packard Co Datenverarbeitungssystem
EP0636256B1 (en) 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
EP0638183B1 (en) * 1992-05-01 1997-03-05 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
JP2922723B2 (ja) * 1992-06-29 1999-07-26 キヤノン株式会社 情報処理装置
CA2105806C (en) * 1992-09-18 2001-11-20 Paul V. Jeffs Apparatus for implementing interrupts in pipelined processors
US5617549A (en) * 1992-10-06 1997-04-01 Hewlett-Packard Co System and method for selecting and buffering even and odd instructions for simultaneous execution in a computer
JP3531166B2 (ja) 1992-12-31 2004-05-24 セイコーエプソン株式会社 レジスタ・リネーミングのシステム及び方法
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
US6032244A (en) * 1993-01-04 2000-02-29 Cornell Research Foundation, Inc. Multiple issue static speculative instruction scheduling with path tag and precise interrupt handling
US5748976A (en) * 1993-10-18 1998-05-05 Amdahl Corporation Mechanism for maintaining data coherency in a branch history instruction cache
JP2815236B2 (ja) * 1993-12-15 1998-10-27 シリコン・グラフィックス・インコーポレーテッド スーパースカーラマイクロプロセッサのための命令ディスパッチ方法及びレジスタ競合についてのチェック方法
ATE184407T1 (de) * 1994-01-03 1999-09-15 Intel Corp Verfahren und vorrichtung zum implementieren eines vierstufigen verzweigungsauflosungssystem in einem rechnerprozessor
US5809271A (en) * 1994-03-01 1998-09-15 Intel Corporation Method and apparatus for changing flow of control in a processor
US5644779A (en) * 1994-04-15 1997-07-01 International Business Machines Corporation Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction
US5623694A (en) * 1994-10-03 1997-04-22 International Business Machines Corporation Aborting an I/O operation started before all system data is received by the I/O controller after detecting a remote retry operation
US5625808A (en) * 1995-03-31 1997-04-29 International Business Machines Corporation Read only store as part of cache store for storing frequently used millicode instructions
US5634103A (en) * 1995-11-09 1997-05-27 International Business Machines Corporation Method and system for minimizing branch misprediction penalties within a processor
JPH09319569A (ja) * 1996-05-31 1997-12-12 Mitsubishi Electric Corp マイクロコンピュータ
KR100445054B1 (ko) * 1996-06-29 2004-11-02 주식회사 하이닉스반도체 마이크로프로세서의브랜치처리를위한방법
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
US5974538A (en) * 1997-02-21 1999-10-26 Wilmot, Ii; Richard Byron Method and apparatus for annotating operands in a computer system with source instruction identifiers
US6150724A (en) * 1998-03-02 2000-11-21 Motorola, Inc. Multi-chip semiconductor device and method for making the device by using multiple flip chip interfaces
US6055630A (en) * 1998-04-20 2000-04-25 Intel Corporation System and method for processing a plurality of branch instructions by a plurality of storage devices and pipeline units
SE9901145D0 (sv) 1998-11-16 1999-03-29 Ericsson Telefon Ab L M A processing system and method
SE9901146D0 (sv) * 1998-11-16 1999-03-29 Ericsson Telefon Ab L M A processing system and method
JP4489958B2 (ja) * 1998-11-16 2010-06-23 テレフオンアクチーボラゲット エル エム エリクソン(パブル) イベントベースシステムの同時処理
SE9803901D0 (sv) * 1998-11-16 1998-11-16 Ericsson Telefon Ab L M a device for a service network
GB2355084B (en) * 1999-07-21 2004-04-28 Element 14 Ltd Setting condition values in a computer
US6636960B1 (en) * 2000-02-16 2003-10-21 Hewlett-Packard Development Company, L.P. Method and apparatus for resteering failing speculation check instructions
GB2403833B (en) * 2000-02-16 2005-02-23 Hewlett Packard Co Method and apparatus for resteering failing speculation check instructions field
DE10101949C1 (de) * 2001-01-17 2002-08-08 Infineon Technologies Ag Datenverarbeitungsverfahren
US7747843B2 (en) * 2004-06-02 2010-06-29 Broadcom Corporation Microprocessor with integrated high speed memory
US7216218B2 (en) * 2004-06-02 2007-05-08 Broadcom Corporation Microprocessor with high speed memory integrated in load/store unit to efficiently perform scatter and gather operations
US11144364B2 (en) 2019-01-25 2021-10-12 International Business Machines Corporation Supporting speculative microprocessor instruction execution

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4398243A (en) * 1980-04-25 1983-08-09 Data General Corporation Data processing system having a unique instruction processor system
WO1985000453A1 (en) * 1983-07-11 1985-01-31 Prime Computer, Inc. Data processing system
US4685058A (en) * 1983-08-29 1987-08-04 Amdahl Corporation Two-stage pipelined execution unit and control stores
JPH0769818B2 (ja) * 1984-10-31 1995-07-31 株式会社日立製作所 デ−タ処理装置
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
EP0239081B1 (en) * 1986-03-26 1995-09-06 Hitachi, Ltd. Pipelined data processor capable of decoding and executing plural instructions in parallel
DE68926701T2 (de) * 1988-08-09 1997-02-20 Matsushita Electric Ind Co Ltd Datenverarbeitungsgerät zur parallelen Dekodierung und parallelen Ausführung von Befehlen mit variabler Wortlänge

Also Published As

Publication number Publication date
EP0399760B1 (en) 2000-02-02
US5072364A (en) 1991-12-10
JPH03116235A (ja) 1991-05-17
EP0939364A3 (en) 2001-06-27
EP0939364A2 (en) 1999-09-01
AU5504790A (en) 1990-11-29
EP0399760A3 (en) 1993-05-19
DE69033443D1 (de) 2000-03-09
DE69033443T2 (de) 2000-06-29
CA2016254A1 (en) 1990-11-23
AU631874B2 (en) 1992-12-10
EP0399760A2 (en) 1990-11-28

Similar Documents

Publication Publication Date Title
JP2846406B2 (ja) 分岐処理方法及び分岐処理装置
JP2846407B2 (ja) 例外処理方法及び例外処理装置
JP2810211B2 (ja) データプロセッサの命令処理システム
US5826074A (en) Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register
EP0134620B1 (en) Data processing apparatus and method
JP2746549B2 (ja) コンピュータシステム及びその動作方法
US4879676A (en) Method and apparatus for precise floating point exceptions
EP0381471B1 (en) Method and apparatus for preprocessing multiple instructions in a pipeline processor
US6247122B1 (en) Method and apparatus for performing branch prediction combining static and dynamic branch predictors
US6526502B1 (en) Apparatus and method for speculatively updating global branch history with branch prediction prior to resolution of branch outcome
US5758112A (en) Pipeline processor with enhanced method and apparatus for restoring register-renaming information in the event of a branch misprediction
JP2539199B2 (ja) デジタルプロセッサ制御装置
US6279105B1 (en) Pipelined two-cycle branch target address cache
JPH0334024A (ja) 分岐予測の方法とそのための装置
US20060179265A1 (en) Systems and methods for executing x-form instructions
US7237096B1 (en) Storing results of producer instructions to facilitate consumer instruction dependency tracking
US20100031011A1 (en) Method and apparatus for optimized method of bht banking and multiple updates
JPH06131180A (ja) 命令処理方式および命令処理装置
GB2081944A (en) Microinstruction sequence control

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20081030

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20091030

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20091030

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20101030

Year of fee payment: 12

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101030

Year of fee payment: 12