JP3564517B2 - データ処理システム - Google Patents
データ処理システム Download PDFInfo
- Publication number
- JP3564517B2 JP3564517B2 JP51817595A JP51817595A JP3564517B2 JP 3564517 B2 JP3564517 B2 JP 3564517B2 JP 51817595 A JP51817595 A JP 51817595A JP 51817595 A JP51817595 A JP 51817595A JP 3564517 B2 JP3564517 B2 JP 3564517B2
- Authority
- JP
- Japan
- Prior art keywords
- microinstruction
- execution
- data processing
- processing system
- stage
- 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 - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 19
- 230000008859 change Effects 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 12
- 238000001514 detection method Methods 0.000 claims 2
- 101000618467 Hypocrea jecorina (strain ATCC 56765 / BCRC 32924 / NRRL 11460 / Rut C-30) Endo-1,4-beta-xylanase 2 Proteins 0.000 description 15
- 238000012360 testing method Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000006872 improvement Effects 0.000 description 4
- 230000000644 propagated effect Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000000034 method Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
- G06F9/262—Arrangements for next microinstruction selection
- G06F9/264—Microinstruction selection based on results of processing
- G06F9/265—Microinstruction selection based on results of processing by address selection on input of storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
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)
Description
この発明は一般に、デジタルデータ処理装置の動作を制御するための改良された装置および方法に関する。
上述の同時に提出された出願連続番号第08/174,856号において、好ましくは単一の集積回路チップまたはモジュール上で実現され、多段階パイプライン化および分岐予測でCISC命令およびRISC命令を用いることができる非常に有利な高速マイクロ命令実行アーキテクチャが開示される。この発明は、好ましくは単一の集積回路チップまたはモジュール上で同様に実現され、かつこれもまた他の広範なアーキテクチャに適用可能であるこの出願に開示されるアプローチの非常に重要かつ新規な改良を与える。
この発明によって与えられる新規な改良は、命令が正確に予測されたかどうかが判断される前に、推論的な状態の変化を予測された命令の実行中に生じさせる非常に重要な特性を加える。当業者には周知であるように、不正確であるかもしれない命令に対して状態の変化を許すことは、不正確な状態の変化を元通りにしなくてはならないことに関連した問題のために不所望と見なされている。これは上述の同時に提出された特許出願におけるような多段階アーキテクチャが用いられる場合に一層困難な問題である。
この発明に従って、予測の正確さが判断される前に推論的な状態の変化を予測された命令の実行中に生じさせ、同時にまた、この発明が誤って予測されたと判断されるならば非常に有利かつ迅速な態様で不正確に変化された状態を補正する方法および装置が提供される。
この発明の具体的な性質ならびに他の目的、特徴、利点および用途は添付の図面と関連して好ましい実施例の以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
図1は、先行技術のデジタルデータ処理システムの概略ブロック図である。
図2は、図1のシステムに用いられる制御語の形式を示す。
図3は、上述の同時に提出された出願において開示される好ましい実施例を示す概略ブロック図である。
図4は、マイクロ命令アドレスに応答してマイクロ命令のアクセスを表を用いて示す。
図5は、図3のシステムに与えられ得るCISC命令およびRISC命令が混合した一例を表を用いて示す。
図6は、図3のシステムに与えられ得る典型的なマイクロ命令の流れを示す。
図7は、図6のマイクロ命令の流れに対する、図3のシステムにおけるマイクロ命令のフローを示す表である。
図8は、この発明に従って推論的状態変化を用いるデジタルデータ処理システムの好ましい実施例を大まかに示す概略ブロック図である。
図9は、図8のシステムをより具体的に示す概略ブロック図である。
図10は、図9のシステムに与えられ得る典型的なマイクロ命令の流れを示す。
図11は、図10のマイクロ命令の流れに対する、図10のシステムにおけるマイクロ命令のフローを示す表である。
詳細な説明
同様の数字および記号が図面の図を通して同様の素子に当てはまる。
この発明の好ましい実施例は、上述の同時に提出された出願連続番号第08/174,856号において開示される多段階高速マイクロ命令実行アーキテクチャに適用されるように説明される。したがって、この出願の開示が最初に図1−7を参照して示される。
最初に、先行技術のデジタルデータ処理システムを一般に示す図1を参照する。簡略化するために、図1のブロック8は、この技術において周知であるさまざまな形状のいずれにおいても各々が与えられる、メモリ記憶ユニット(MSU)10、算術論理ユニット(ALU)11、入力/出力(I/O)セクション12、およびタイミング制御13を含む、デジタルデータ処理システムの従来的な部分を表すように与えられる。
典型的に、同期のタイミングがタイミング制御13によって図1のシステムに与えられ、1つのマイクロ命令が各機械サイクルの間に行なわれる。機械サイクルは典型的に単一のクロックタイムに対応し、機械状態を表わす記憶装置は各サイクルの終わりに起こるクロックによって更新される。図面を混乱させないために、図1のシステムのさまざまな構成要素に与えられる特定的なタイミング信号が図示されないが、従来の態様で与えられると想定されるべきである。
図1の全体の説明を続けると、プログラマブルマイクロ命令メモリ14が複数個のマイクロ命令制御語CWを記憶するために与えられることが理解される。典型的な制御語CWは図2に図示され、マイクロ命令M、次のアドレスフィールドNAおよび条件選択フィールドCSから構成されるとわかる。選択されたマイクロ命令制御語CWは、マイクロ命令アドレスレジスタ18のマイクロ命令アドレスMaddrに応答してマイクロ命令メモリ14からマイクロ命令レジスタ16にフェッチされる。アドレスMaddrは、条件選択論理22とマイクロ命令レジスタ16における次のアドレスフィールドNAとブロック8によって与えられる代替アドレスAaddrとから選択された条件信号22aに応答して次のアドレス論理20によって前のサイクルの間に与えられる。この代替アドレスAaddrは、サブルーチンの復帰または割込の目的のために必要とされ得るような他の次のマイクロ命令アドレスを選択させる。選択される条件信号22aは、マイクロ命令レジスタ16における選択フィールドCSとブロック8からのマイクロ命令結果Meとに応答して条件選択論理22によって選択される。
図1のシステム動作の間、以下のオーバラップした(パイプライン化した)実行動作およびフェッチ動作が各機械サイクルの間に起こり、(1)システムはマイクロ命令レジスタ16に記憶された制御語CW(この制御語は前のサイクルの間にマイクロ命令メモリ14からフェッチされ、マイクロ命令メモリ16に記憶されている)のマイクロ命令M部分を実行し、(2)アドレスレジスタ18のマイクロ命令アドレスMaddrに応答して、システムはマイクロ命令メモリ14から次のマイクロ命令制御語をフェッチし、それを次のサイクルの間に用いるためにマイクロ命令レジスタ16に記憶する。
図1の先行技術のシステムに関連して、マイクロ命令が無条件である(すなわち、次のマイクロ命令が1つしかない)とき、フェッチ動作(上の(2))は常に正確な次のマイクロ命令をマイクロ命令レジスタ16にフェッチすることが理解される。このような無条件のマイクロ命令では、パイプライン化マイクロ命令フェッチ動作および実行動作はマイクロ命令のフローの速度を高めるのに効果的である。しかしながら、マイクロ命令が条件付である(すなわち、起こり得る次のマイクロ命令が2つ以上ある)ならば、予測される次のマイクロ命令アドレスMaddrは図1のブロック8によってアドレスレジスタ18に与えられ、このために、間違った次のマイクロ命令をフェッチすることになり得る。この場合、マイクロ命令のフローを補正するためのステップが取られなければならない。
たとえば上述の米国特許第4,155,120号および第4,430,706号に説明されるような、不正確にフェッチされたマイクロ命令を補正するためのさまざまな方法が知られている。これらの特許の開示はここに援用されると見なされるべきである。これらの開示によって取られるアプローチは、正確に予測されたかどうかを判断するために、予測されたマイクロ命令の各々をテストすることである。正しくなければ、不正確にフェッチされたマイクロ命令がアボートされ(すなわち、機械状態におけるいかなる変化も生じないように防がれ)、正確な次のマイクロ命令をフェッチするための方策が取られる。
上述の同時に提出された出願において開示される多段階パイプライン化マイクロプログラミングアーキテクチャの好ましい実施例は一般に図3に図示される。図3に示されるように、マイクロ命令のフェッチおよび実行は多数の段階(ステージ)を用いるパイプライン化態様で行なわれる。レジスタ10、12、14および16は段階間の記憶を行なう。必然的ではないが、基本的な外部クロックレートの倍数であるレートでこれらの多数の段階にクロックを与えることは特に有利であり、これによって、スループット速度がそれに応じて高められる。この多重クロックレートはたとえばRISCシステムに典型的に用いられる高いレートであってもよい。図3に示されるような、このような多重高速パイプライン化はこの明細書中では超パイプライン化と称される。
より具体的に図3を検討すると、段階0、段階1、段階2および段階3と呼ばれる4つの段階が図示される。各段階は単一のクロックだけを必要とする。図3を過度に複雑にしないために、クロック信号が図示されていないが、従来の態様で与えられると想定されるべきである。
図3を参照して、段階0は、マイクロ命令アドレスレジスタ102のマイクロ命令アドレスに応答してマイクロ命令メモリ100からマイクロ命令レジスタ104へマイクロ命令Mを読出すことを含むと理解される。マイクロ命令メモリ100はたとえば、共通の譲受人に譲渡され、1993年11月30日に提出された同時係属の特許出願連続番号第08/159,883号および第08/159,683号に開示されるようなオンチップ命令キャッシュであってもよい。
図3の段階0の間に、次のアドレスデータNAはまたマイクロ命令Mとともにマイクロ命令メモリ100から読出される。この次のアドレスデータNAは、次のクロックサイクルの間に用いるべき次のマイクロ命令を選択するために、次のマイクロ命令アドレスAmをマイクロ命令アドレスレジスタ102に与える次のアドレス論理106に与えられる。このように、段階0が完了するとき、マイクロ命令Mはマイクロ命令レジスタ104にセットアップされており、次のマイクロ命令のアドレスはマイクロ命令アドレスレジスタ102にセットアップされている。
説明される好ましい実施例では、静的な次のマイクロ命令予測アプローチが用いられるが、動的な予測も用いられ得ると理解されたい。したがって、条件付の各マイクロ命令について、次のマイクロ命令が知られており、無条件の命令と同様にフェッチされる。たとえば、静的な予測が用いられる場合、条件付の命令に従う次の命令はコンパイラによって予め定められており、マイクロ符号に組込まれる。このように、次のマイクロ命令のフェッチは、現在のマイクロ命令からの、または前に実行されたいかなるマイクロ命令からのマイクロ命令実行結果のテストも待たなくてもよい。代わりに、予測される次のマイクロ命令アドレスAmは、現在のマイクロ命令Mがマイクロ命令レジスタ104へ読込まれる同じクロックの間にマイクロ命令アドレスレジスタ102においてセットアップされる。この動作は、マイクロ命令アドレスレジスタ102の連続した次のマイクロ命令アドレスAm1、Am2、Am3が、それぞれのクロック周期1、2、3の間に、それぞれの次に従うクロック周期2、3、4の対応するマイクロ命令M1、M2、M3を読出させる態様を表によって表わす図4において例示される。
予測される次のマイクロ命令Amは、マイクロ命令メモリ100から読出されるNAに応答して、各クロックが次のアドレス論理106によって与えられる間にマイクロ命令アドレスレジスタ102においてセットアップする。NA自体はマイクロ命令アドレスであってもよいか、次の順次(+1)マクロ命令アドレスが用いられるべきことを示してもよいか、または、複数個の入力アドレスAlのうちのどれが次のマイクロ命令アドレスAmとして用いられるべきかを示してもよい。これらの入力アドレスAlはサブルーチン復帰、飛越し、割込を扱い、また、マイクロ命令を終了し(その最後のマイクロ命令が完了されているとき)、かつ次のマクロ命令の最初のマイクロ命令に進むのに備える。次のマイクロ命令はまた好ましい実施例では静的に予測されてもよく、これは、1つのマイクロ命令から次のものへのフローが、マクロ命令におけるマイクロ命令の数にかかわらずマイクロ命令レベルで明白であるために容易に達成される。
図5は、クロック周期1−10の間のCISCマイクロ命令およびRISCマイクロ命令の混合した例を表によって示す。図5に示されるように、マイクロ命令M1、M2、M3、M4は第1のCISCマクロ命令MCISC−1を構成し、次のマイクロ命令M5、M6、M7は3つのRISCマクロ命令MRISC−1、MRISC−2、MRISC−3を構成し、次の3つのマイクロ命令M8、M9、M10は第2のCISCマクロ命令MCISC−2を構成する。CISCマクロ命令MCISC−1およびMCISC−2と混合したRISCマクロ命令MRISC−1、MRISC−2、MRISC−3のストリングは、CISCの利点を放棄せずに利点をRISC性能から取出させる。たとえば、RISC命令のこのようなストリングは、結果的により高い性能に繋がるマイクロ符合のフローの部分にRISC動作を与えるために用いられ得る。
段階0がいかにマイクロ命令をマイクロ命令レジスタ104へフェッチし、かつマイクロ命令アドレスレジスタ102において次のマイクロ命令アドレスAmをセットアップするかが説明されたので、段階1の間の動作が次に図3を参照して説明される。段階1の間、マイクロ命令レジスタ104から取出された段階1制御信号104aが、選択されたオペランドをレジスタファイル108からアクセスさせ、オペランドレジスタ110に記憶させる。
レジスタファイル108は、ハードウェア/マイクロ符号の組合せによって実現される仮想計算機の「状態」を記憶する。たとえば、レジスタファイル108は(次のアドレス論理106に与えられるAlのような)さまざまなアドレスと中間結果とシステム動作のために必要とされる他のデータとを記憶する。レジスタファイル108は、上述の共通の譲受人に譲渡された同時係属の特許出願連続番号第08/159,883号および第08/159,683号に開示されるようなオンチップキャッシュを含んでもよい。レジスタファイル108はまた、データをそこから受信し、かつそこに送信するためのオフチップ主メモリ(図示せず)とインタフェースしてもよい。
図3に示されるように、以下の制御機能がまた段階1の間に行なわれ、a)マイクロ命令レジスタ104からの段階1制御信号104bは、段階2の間の動作を制御するのに用いるために段階3制御レジスタ112に転送され、b)マイクロ命令レジスタ104からの段階1条件選択信号CSは、段階2条件レジスタ114に転送されるべきであり、かつ段階2において用いられる特定の段階1条件信号を選択するために段階2条件選択論理114に与えられる。如何にマイクロ命令が段階0においてアクセスされ、かつオペランドが段階1でそれに応答して選択されるかが説明されたので、この説明は次に、回転動作、マスキング動作および算術論理動作がこれらの選択されたオペランドにおいてその間に行なわれる段階2の検討に進む。より具体的には、段階3の間、オペランドレジスタ110において選択されるオペランドは、段階2制御レジスタ112からの段階2制御信号によって制御される回転倫理118、マスク論理120、および算術制御論理122(ALU)によって操作される。段階2の間のこれらの操作の結果はマイクロ命令結果レジスタ124に記憶される。レジスタ124におけるこれらの結果は、段階3の間に用いられて、段階0においてフェッチされたマイクロ命令が次に説明されるように正確に予測されたかどうかを判断するフラグ125を含む。段階3と同様に、段階2制御レジスタ112からの段階2制御信号は段階3制御レジスタ126に転送されて、段階3の間の動作を制御するのに用いられ、同様に、段階2制御レジスタ112からの段階2制御信号CS2が段階2制御選択論理128に与えられて、段階3条件レジスタ130に転送されるべきであり、かつ段階3において用いられる特定の条件を選択する。
マイクロ命令の実行は段階3の間に完了される。段階3の間、図3のマイクロ命令結果レジスタ124に記憶される結果はレジスタファイル108に書込まれる。段階3の間でまた、予測テスト論理132はマイクロ命令が適切に予測されたかどうかを判断する。これが達成されるのは、フラグ出力125Aaを、段階3条件レジスタ130からの条件130a、レジスタファイル108から取出された予測される条件131、および/または、他の段階で起こるものを含んで同時に行なわれるさまざまな論理動作からの出力を、予測テスト論理132に適用することによってである。これらの入力に基づいて、予測テスト論理132はマイクロ命令が間違って予測されたかどうかを判断し、間違っていれば、アボート信号132aを生成する。このアボート信号132aは以下の動作を開始する。すなわち、a)アボート信号132aはレジスタファイル108および他の復元および論理に与えられて、誤って予測されたマイクロ命令がシステム状態および/または他のシステム復元を不適切に変化することを回避し、b)アボート信号132aは、誤って予測されたマイクロ命令に従ってフェッチされたマイクロ命令の効果を無効にすることによってパイプラインを空にさせる。したがって、アボート信号は、アドレスレジスタ102、オペランドレジスタ110、結果レジスタ124、マイクロ命令レジスタ104、制御レジスタ112および126、ならびに条件レジスタ116および130のデータを無効にするために用いられる。アボート信号132aに応答するこの無効化はたとえば、上述の特許第4,155,120号および第4,430号,706号と上述の特許出願連続番号第08/159,883号および連続番号第08/159,683号とにおいて開示されるように達成され得る。好ましい態様は、レジスタのデータが無効であることを示すようにアボート信号132aによって設定可能である関連のレジスタの各々における有効性ビットを含むはずである。図3を混乱させないために、アボート信号132aからさまざまなレジスタへの接続は図示されないが、当業者によって容易に与えられ得る。
段階3はまた、マイクロ命令が誤って予測されたことを予測テスト論理132が判断するときに正確なマイクロ命令をフェッチする。これは、予測テスト論理132からの信号132bを図3の次のアドレス論理106に適用することによって達成され、このために、次のアドレス論理106がマイクロ命令アドレスレジスタ102において(フェッチされているべき正確なマイクロ命令に対応する)正確なマイクロ命令アドレスをセットアップする。次に動作は図3と関連して段階0、1、2および3でこれまでに説明されたように進む。誤って予測された命令の発見がパイプラインを空にさせたために、無効化された段階の動作は無視される。
誤って予測された条件付のマイクロ命令の結果として上述のようにパイプラインを空にすることは、これが深いパイプラインを有する多段階アーキテクチャが特に用いられる場合にあまりにも頻繁に起こるならば、性能に酷く影響を与え得ることが理解される。しかしながら、条件付の分岐は静的な予測であってもマイクロ命令レベルで高い精度に予測できることが発見されているので、図3に示される多段階超パイプライン化アーキテクチャの全体の性能は非常に重要な性能上の改良を与えることができる。
上述の多段階超パイプライン化アーキテクチャはさらなる利点をもたらす。たとえば、図3において、さらなる出力信号122bおよび122cはALU122から与えられ、さらなる出力信号124bおよび124cは結果レジスタ124から与えられることに注意されたい。これらの出力信号は性能を高めるために他の段階において論理および記憶に与えられると有利であろう。たとえば、ALU122からの出力122bと結果レジスタ124からの出力124bとはオペランドレジスタ110への入力としてそれぞれ与えられることに注意されたい。また、ALU122からの出力122cと結果レジスタ124からの124cとは、それぞれの段階において動作に影響を与えるために、マイクロ命令レジスタ104と制御レジスタ112および126と条件選択論理114および128との入力として用いるために与えられ得る。パイプライン化多段階アーキテクチャによって可能にされたこのような段階間の相互接続は各段階の動作を高める際により優れた融通性および順応性を与え、したがって全体のマイクロ命令実行を高める。別の重要な利点は、1つのクロックにおいて行なわれることができない論理動作が第1の段階において部分的に行なわれ、次に次の段階において完了できることである。さらに、条件付のマイクロ命令が正確に予測されたかどうかを判断することに関連した論理を行なうために多数の段階が利用可能なので、予測の正確さが、論理テスト動作にさらなる遅延を必要とせずに段階3において判断できる。
次に、図3の多段階超パイプライン化アーキテクチャの典型的な動作を図示するために用いられる図6および図7を参照する。
図6は典型的なマイクロ命令の流れの例であり、マイクロ命令B1およびF1は条件付であり、B2はB1に従い、F2はF1に従うことが予測される。
図7の表は、図6のマイクロ符号のフローに基づいて10個のクロック周期について段階0、1、2および3のマイクロ命令のフローを図示し、ここでB1からB2へのフローの予測は不正確であるとわかるが、F1からF2へのフローの予測は補正されているとわかる。図8のクロック周期は好ましくは単一のクロック時間に対応し、機械状態(マシーン状態)を表わす記憶装置は各クロック周期の終わりに更新されると理解されたい。
図3および図4を参照して、段階0の間、マイクロ命令はマイクロ命令レジスタ104においてフェッチかつ記憶され、段階1の間、フェッチされたマイクロ命令に対するオペランドがマイクロ命令オペランドレジスタ110において選択かつ記憶され、段階2の間、回転動作、マスク動作およびALU動作が選択されたオペランドで行なわれ、その結果(およびフラグ)は結果レジスタ124に記憶され、段階3の間、結果はレジスタファイル108へ書込まれ、予測されたマイクロ命令の正確さがテストされることが思い出される。不正確なマイクロ命令がフェッチされたことが段階3の間に判断されるならば、マイクロ命令はアボートされ、パイプラインは空にされ、正確なマイクロ命令のアドレスはアドレスレジスタ102においてセットアップされる。
最初に、アボートを含まない、図7のクロック周期1−4がより詳細に説明される。図7に示されるように、クロック周期1−4の間、段階0がそれぞれのマイクロ命令A1、B1、C1、およびD1をフェッチし、クロック周期2−4の間、段階1がそれぞれのマイクロ命令A1、B1およびC1に対するオペランドを選択し、クロック周期3−4の間、段階2がそれぞれのマイクロ命令A1およびB1に対するマスク動作、回転動作およびALU動作を行ない、クロック周期4の間、段階3がマイクロ命令A1に対して結果の記憶と次のマイクロ命令のアドレス選択とを行なう。不正確な予測がクロック周期1−4の間に発見されていないので、アボートは起こらない。
クロック周期5の間、段階0、1、2および3はそのそれぞれの動作を図7に示されるようにマイクロ命令E1、D1、C1およびB1で行なう。しかしながら、クロック5の段階3の間、予測テスト論理132はマイクロ命令C1が不正確に判断され、かつマイクロ命令B2が代わりにフェッチされているべきであることを判断する。結果として、レジスタファイル108における書込を回避するアボートが(これまでに説明されたように)起こり、レジスタ104、110、112、116、124、126および130のデータを無効にすることによってパイプラインを空にし、正確なマイクロ命令アドレス(すなわち、B2のアドレス)をマイクロ命令アドレスレジスタ102においてセットアップさせる。
したがって、図7のクロック周期6に示されるように、クロック周期6の段階0の間、正確なマイクロ命令B2がマイクロ命令レジスタ104へフェッチされる。「X」はクロック周期6の段階1、2および3において印を付けられて、3つの無効化された(空にされた)段階の動作がクロック周期6の間無視されることを示すことに注意されたい。
図7のクロック周期7の間、マイクロ命令F1が段階0の間にフェッチされ、オペランドが図示されるように段階1の間にマイクロ命令B2について選択される。段階2および段階3は(クロック7のこれらの段階について与えられる「X」によって示されるように)クロック7の間無視され続け、これは、正確なマイクロ命令B2に対応する有効なデータがまだそこに伝搬されていないからである。
図7のクロック周期8では、マイクロ命令G1が段階0においてフェッチされる。図6において、F1は条件付のマイクロ命令であり、この場合マイクロ命令G1は想定される予測に基づいてフェッチされることに注意されたい。また、クロック8の間、オペランドは段階1のマイクロ命令F1について選択され、マスク動作、回転動作およびALU動作は段階2のマイクロ命令B2について行なわれる。クロック8の段階3は再び「X」で印を付けられ、これは有効なデータがまだそこに伝搬されていないからである。
クロック周期9では、パイプラインは再び満たされ、これは4つの段階0、1、2および3の全部が今や有効であるからである。クロック周期9では、次のマイクロ命令G2が段階0の間にフェッチされ、オペランドは段階2の間にマイクロ命令F1について選択され、実行が段階3のマイクロ命令B2について完了される。
図7に示される最後のクロック周期であるクロック周期10では、次のマイクロ命令G3が段階0の間にフェッチされ、オペランドは段階1においてマイクロ命令G2について選択され、回転動作、マスク動作およびALU動作は段階2においてマイクロ命令G1について行なわれ、マイクロ命令完了動作が段階3においてマイクロ命令F1について行なわれる。マイクロ命令F1が図6に示されるように条件付なので、段階3はまた予測されるマイクロ命令G1の選択が正確であったかどうかを判断する。この例について想定されるように予測が正確であることがわかるので、アボートは起こらず、フローは割込なしに続く。
図1−7に関して、上述の同時に提出された特許出願連続番号第 号において開示されるマイクロ命令実行アーキテクチャを説明したので、そこにこの発明を組入れるための好ましい態様が次に図8−11を参照して説明される。しかしながら、まず、命令が正確に予測されているかが判断されるまで状態変化が遅延されるときに性能が劣化し得るいくつかの理由を検討することが、この発明を理解する際に役立つであろう。
今日のシステムには典型的であるような同時実行または脱順序実行をもたらすパイプライン化命令実行アーキテクチャを用いるときに、いくつかのデータハザードが存在することが理解される。周知であるように、データハザードは、通例はオーバラップする命令実行のために、不正確なデータを読出または書込可能である状況に当てはまる。データハザードの一例はリードアフタライト(RAW)ハザードであり、ここで命令は後の命令が「読出」しなければならないデータを「書込」、この場合、「書込」は「読出」が引起こさせられる前に行なわれなければならない。データハザードの別の例はライトアフタリード(WAR)ハザードであり、ここで命令は後の命令が「書込」しなければならないデータを「読出」、この場合、「書込」は「読出」の後に起こらなければならない。データハザードのさらなる例はライトアフタライト(WAW)ハザードであり、ここで命令は後の命令がまた書込まなければならないデータを書込み、この場合、「書込」は適切な順序で起こらなければならない。
パイプライン化アーキテクチャは典型的に、命令にそのそれぞれの結果(変化する機械状態)を予め定められた順序で書込むことを強制することによって上に例示されたようなデータハザードを解決する。命令の書込のこのような強制は、分岐予測を用いるパイプライン化機械について特に、命令実行の速度に著しい遅延を起こし得る。なぜなら、命令が正確に予測されたことが判断されるまでに結果の書込を遅延させなければならないことによってさらなる遅延が導入されるからである。
図8は、この発明に従って推論的状態変化を用いる好ましい実施例を大まかに示す概略ブロック図である。
図8に関連して、図3に説明されたものと類似したマイクロ命令アーキテクチャが好ましくは用いられることを理解されたい。より具体的には、図8は、実行段階EX−1、EX−2およびEX−3から命令実行結果をそれぞれ受ける中間レジスタI1、I2およびI3を用いるパイプライン化多段階アーキテクチャの3つの段階を示す。中間レジスタI1、I2およびI3はたとえば、図3のレジスタ104、110および124にそれぞれ対応でき、実行段階EX−1、EX−2およびEX−3は図3の段階1、2および3に対応できる。図8に示される機械状態ブロック200は図3のレジスタファイル108と他の機械状態109との両方に対応する。また、より明らかにするために、図3のさまざまな部分が図8から省略されているが、図3に示されるような同じ態様で与えられ得る。
実行段階EX−1、EX−2およびEX−3から図8の機械状態200に与えられる実行結果は、E1、E2およびE3としてそれぞれ示され、段階EX−1、EX−2およびEX−3に与えられてこれによって用いられる特定の機械状態値はS1、S2およびS3としてそれぞれ示される。
図8に示されるように、復元レジスタ(リストア記憶手段)202はライン201を経て機械状態200と通信する。この復元レジスタ202は機械状態のバックアップコピーを記憶するために設けられて、変化を生じる命令が正確に予測されたかどうかがまだ判断されていなくても、機械状態200を段階の命令実行に応答して変化させる。これは、初期の状態変化を1つ以上の状態値において生じさせ、同時に、元の状態値のバックアップコピーを(ライン201を経て)対応する復元レジスタ202において記憶することによて達成される。したがって、状態変化を引起こした命令が誤って予測されたことが後に判断されるならば、対応する復元レジスタのバックアップコピーが(ライン201を経て)機械状態200に与えられて、不正確に変化された状態値をその元の(正確な)値に復元する。
対応する命令が正確に予測されていることが判断されるまで待つ必要なしに図8のパイプライン化アーキテクチャが状態値を変化させるので、著しく高い速度の命令実行が達成できる。たとえば、早く完了できる命令について、かつ命令実行が可能な限り速く状態を変化することによって加速できる命令について、上述のような状態の初期の変化をもたらすことで性能が著しく改善できる。与えられる復元レジスタ202の数を制限することが所望なので、性能において最大の改良を生じる状態変化にバックアップが主に与えられるべきである。
次に、図8に示された推論的状態変化アーキテクチャの動作の具体的な例を示すために用いられる図9−11を参照する。
図9は基本的には図8と類似しており、図9のカウンタ303は、推論的な状態変化が有利に与えられ得るブロック200における状態値を表わす。同様に、図9のEX−2およびEX−3の復元レジスタ305および307は、図9ではカウンタ303をバックアップするために用いられる図8の復元レジスタ202を表わす。図9の実行ブロックEX−1、EX−2およびEX−3と中間レジスタI1、I2およびI3は図8と関連してこれまでに説明されたとおりである。
説明されるこの動作サンプルのために、図10のマイクロ命令のフローが示されることが想定され、ここでAは条件付のマイクロ命令であり、2つの可能な次のマイクロ命令、すなわちマイクロ命令BまたはDを有する。また、図10のマイクロ命令A、B、DおよびFの各々は段階EX−1の間に図9のカウンタ303を増分させ、カウンタ303はさもなければ増分されないことが想定される。これが図9において示されるのは、以下に説明されるように誤った予測がEX−3の間に検出されないときに通常は起こるものである、新しいカウント値CVをマルチプレクサ310を経てカウンタ303に与える段階EX−1によってである。CVが段階EX−1の間にカウンタ303を増分させるとき、元の(変化されない)カウント値のバックアップコピーはEX−2復元レジスタ305に記憶される。カウンタ出力303aはまた、実行ブロックEX−1に与えられてこれによって各クロック周期の間に用いられることに注意されたい。また、図9に示されるように、EX−2復元レジスタ305はそのバックアップ値を各マイクロ命令の終わりにEX−3復元レジスタ307に転送し、それをそのそれぞれのマイクロ命令がこれによって実行されるときに段階EX−3において用いさせる。
図3の段階3に類似した、図9の実行ブロックEX−3はマイクロ命令が誤って予測されたかどうかを判断する。誤っているならば、EX−3は適切な出力Abを与えて、図3の段階3についてこれまでに説明されたようにアボート動作を行なう。さらに、誤った予測が検出されるとき、図9のEX−3は復元カウンタ出力Rcを与え、これはマルチプレクサ310に与えられて、EX−1からのカウント値CVの代わりにカウンタ303に与えられるべきEX−3復元レジスタ307のカウント値を選択する。これは、誤って予測されているとわかったマイクロ命令によってEX−1の間に変化される前に有していた値にカウンタ303を事実上復元する。マイクロ命令が正確に予測されたことをEX−3が判断するならば、カウンタ303は復元されないが、EX−1によって与えられる新しいカウント値に従って通常の態様で設定される。
図11をさらに参照して次に説明されるのは、図10に示される例示的なマイクロ命令フローがクロック周期1−7の間に図10の推論的実行アーキテクチャを通して伝播される具体的な態様である。この例では、マイクロ命令Bが条件付のマイクロ命令Aに従うように予測されているが、これは、マイクロ命令Aがマイクロ命令Dによって従われているべきなので誤った予測であることが想定される。カウンタ303は最初は「1」カウント値を有することがさらに想定される。
図11は、図示されるクロック周期1−7の各々の間にどのマイクロ命令が段階EX−1、EX−2およびEX−3の各々によって処理されているかを示す。図8におけるように、図11のクロック周期は好ましくは単一のクロック時間に対応し、機械状態を表わす記憶装置は各クロック周期の終わりに更新される。図11はまた、各クロック周期の間のカウンタ303とカウンタ復元レジスタ305および307との値を示す。各クロックの間の動作が次により詳細に検討される。
図11のクロック周期1の間、マイクロ命令Aは図示されるように段階EX−1によって動作される。また、カウンタ303は「1」の想定される初期のカウント値を有するとわかる。クロック周期1の間に適切ではない活動は「?」によって示される。
図11のクロック周期2の間、マイクロ命令Aは段階EX−2に伝搬しており、予測される次のマイクロ命令Bが段階EX−1にある。また、クロック周期2の間、カウンタ303は、クロック周期1の間にマイクロ命令Aで動作された段階EX−1から「2」の増分されたCV値を受けた結果として「2」のカウント値を有する。また、EX−1カウンタ復元レジスタ305は、カウンタ303の元の「1」の値がバックアップコピーを与えるためにクロック周期1の間にそこに記憶された結果としてクロック周期2の間に「1」の値を有する。
図11のクロック周期3に示されるように、マイクロ命令C1は状態EX−1にあり、マイクロ命令Bは状態EX−2にあり、マイクロ命令Aは状態EX−3にある。(マイクロ命令Aのように)マイクロ命令Bの間にEX−1によって与えられるCV値がカウンタ303をEX−1の間に増分させることが想定されるので、カウンタ303はクロック周期3の間「3」のカウント値を有し、EX−2復元レジスタ305はカウンタ303の前の「2」のカウント値に対応する「2」の値を有する。また、EX−2カウンタ307は、カウンタ復元レジスタ303の前の「1」のカウントが図11において示されるようにクロック周期2の間にそこに転送された結果としてクロック周期3の間に「1」の値を有する。
マイクロ命令Aがクロック周期3の間に段階EX−3にあるので、マイクロ命令Aからマイクロ命令Bに予測される分岐がテストされる。これまでに述べられたように、示される例では、マイクロ命令Bが不正確に予測され、かつマイクロ命令Dがマイクロ命令Aに従うべきであったことを段階EX−3が判断すると想定される。
マイクロ命令Bが誤って予測されたとクロック周期3の間に判断する結果として、クロック周期4の間、(たとえば図3の段階3に関連して説明されたように)正確なマイクロ命令Dが段階EX−1に与えられ、他の段階EX−2および段階EX−3ならびにEX−2復元レジスタ305およびEX−3復元レジスタ307が「X」によって示されるように無効にされる。クロック周期4の間、クロック周期3の間のEX−3からの復元出力がカウンタ303に適応するためにEX−3カウンタ復元レジスタ307の元の「1」のカウント値をマルチプレクサ310に選択させる結果として復元が起こる、カウンタ303がその元の「1」の値(すなわち、それがクロック周期1におけるマイクロ命令Bの実行の前に有していた値)に復元されるであろうことに注意されたい。
図11に示されるように、図11の次に従うクロック5−7の間、補正されたマイクロ命令のフローD、E、Fなどにおける動作が図11に示されるように進み、カウンタ303、EX−2復元レジスタ305、およびEX−3復元レジスタ307はこれまでに説明されたようにカウンタ303のためのバックアップコピーを与える。クロック1−7について結果として生じる完了されたマイクロ命令フローは、図11の段階EX−3ラインによって示されるようにA、D、Eである。
この発明はこの明細書に説明されるその好ましい実施例に限定されないことを理解されたい。なぜなら、構成の配置、用途および動作における多くの変化がこの発明の範疇内で可能だからである。
したがって、この発明は、添付の請求の範囲によって規定されるようなこの発明の範疇内に含まれるあらゆる修正、変化および適合を含むと見なされるべきである。
Claims (8)
- 各々が少なくとも1つのマイクロ命令を含むマクロ命令を処理するためのデータ処理システムであって、
マイクロ命令を記憶するためのアドレス可能なメモリを含み、前記メモリにおけるマイクロ命令の少なくとも1つの特定のマイクロ命令は、複数個の次のマイクロ命令候補を有する条件付マイクロ命令であり、さらに、
前記メモリを選択的にアドレス指定して選択されたマイクロ命令をそこから読出すためのアドレス手段と、
実行結果および他のマシーン状態を記憶するための状態/結果記憶手段と、
前記メモリから読出されたマイクロ命令を実行し、該実行命令に応答して前記状態/結果記憶手段を変化させるための実行手段とを含み、
前記実行手段は、前記メモリから読出されたマイクロ命令をパイプライン態様で処理する多数のステージを含み、前記ステージの少なくとも1つによって読出されるマイクロ命令は、条件付マイクロ命令について予測された次のマイクロ命令の前記アドレス手段に対する次のアドレスを与え、
前記実行手段は、また、予測された次のマイクロ命令とそれに続く少なくとも1つのマイクロ命令の前記ステージにおける実行中に変更されたマシーン状態に対する元の状態に対応するバックアップコピーを格納するためのリストア記憶手段を含み、
前記実行手段は、前記予測された次のマイクロ命令とそれに続く少なくとも1つのマイクロ命令を実行し、該予測が正確であるかが確定する前に前記予測に基づいて実行される命令の実行により前記状態/結果記憶手段の記憶内容に変化を生じさせ、
前記実行手段は、前記状態/結果記憶手段において前記変化が生じた後、不正確なマイクロ命令予測を検出し、
前記実行手段は、前記不正確な次のマイクロ命令予測検出に応答して、前記リストア手段の前記バックアップコピーを利用して前記状態/結果記憶手段の前記変化を前記不正確に予測された次のマイクロ命令の実行前の状態の値に復帰させる、データ処理システム。 - 前記アドレス可能なメモリは、CISCマクロ命令およびRISCマクロ命令の両方を記憶し、CISC命令は複数個のマイクロ命令を含み、RISC命令は単一の命令を含み、
前記アドレス手段は、現在実行中のマイクロ命令がRISCマクロ命令に対応するかまたはCISCマクロ命令の最後のマイクロ命令の場合、前記アドレス可能なメモリからの次のマイクロ命令が、CISC型またはRISC型のいずれであろうとも次のマクロ命令の最初のマイクロ命令であるように動作する、請求項1に記載のデータ処理システム。 - 前記データ処理システムは、マイクロ命令がRISCマイクロ命令であるか、または複数のCISCマイクロ命令の1つであるかにかかわらず、同一の態様でマイクロ命令を扱う、請求項2に記載のデータ処理システム。
- 前記実行手段は、各ステージの結果を記憶するための、ステージ間に配置されるレジスタ記憶手段を含む、請求項1に記載のデータ処理システム。
- 前記実行手段は、実行中に、前記レジスタ記憶手段からの出力を異なるステージに転送して使用させる、請求項4に記載のデータ処理システム。
- 前記実行手段は、不正確なマイクロ命令予測の検出に応答して、前記レジスタ記憶手段への書込を禁止する、請求項4に記載のデータ処理システム。
- 前記実行手段は、不正確なマイクロ命令予測の検出に応答して、前記レジスタ記憶手段に現在記憶されるデータを無効にして該パイプラインを空にする、請求項6に記載のデータ処理システム。
- 各ステージは1クロックサイクルで動作する、請求項1に記載のデータ処理システム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17485893A | 1993-12-29 | 1993-12-29 | |
US17485693A | 1993-12-29 | 1993-12-29 | |
US08/174,856 | 1993-12-29 | ||
US08/174,858 | 1993-12-29 | ||
PCT/US1994/014929 WO1995018408A1 (en) | 1993-12-29 | 1994-12-28 | Pipelined microinstruction apparatus and methods with branch prediction and speculative state changing |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09507321A JPH09507321A (ja) | 1997-07-22 |
JP3564517B2 true JP3564517B2 (ja) | 2004-09-15 |
Family
ID=26870602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP51817595A Expired - Fee Related JP3564517B2 (ja) | 1993-12-29 | 1994-12-28 | データ処理システム |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP0737334B1 (ja) |
JP (1) | JP3564517B2 (ja) |
DE (1) | DE69411953T2 (ja) |
WO (1) | WO1995018408A1 (ja) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4155120A (en) * | 1977-12-01 | 1979-05-15 | Burroughs Corporation | Apparatus and method for controlling microinstruction sequencing by selectively inhibiting microinstruction execution |
US4430706A (en) * | 1980-10-27 | 1984-02-07 | Burroughs Corporation | Branch prediction apparatus and method for a data processing system |
-
1994
- 1994-12-28 EP EP95906127A patent/EP0737334B1/en not_active Expired - Lifetime
- 1994-12-28 JP JP51817595A patent/JP3564517B2/ja not_active Expired - Fee Related
- 1994-12-28 WO PCT/US1994/014929 patent/WO1995018408A1/en active IP Right Grant
- 1994-12-28 DE DE69411953T patent/DE69411953T2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO1995018408A1 (en) | 1995-07-06 |
DE69411953D1 (de) | 1998-08-27 |
JPH09507321A (ja) | 1997-07-22 |
EP0737334B1 (en) | 1998-07-22 |
DE69411953T2 (de) | 1998-12-17 |
EP0737334A1 (en) | 1996-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5961637A (en) | Split branch system utilizing separate set branch, condition and branch instructions and including dual instruction fetchers | |
US5072364A (en) | Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel | |
US5628024A (en) | Computer architecture capable of concurrent issuance and execution of general purpose multiple instructions | |
US5136696A (en) | High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions | |
US5075844A (en) | Paired instruction processor precise exception handling mechanism | |
EP0381471B1 (en) | Method and apparatus for preprocessing multiple instructions in a pipeline processor | |
EP0380859B1 (en) | Method of preprocessing multiple instructions | |
US5119483A (en) | Application of state silos for recovery from memory management exceptions | |
US5864697A (en) | Microprocessor using combined actual and speculative branch history prediction | |
US5822555A (en) | Method and apparatus for aligning an instruction boundary in variable length macroinstructions with an instruction buffer | |
US5666507A (en) | Pipelined microinstruction apparatus and methods with branch prediction and speculative state changing | |
EP0094535B1 (en) | Pipe-line data processing system | |
US5761467A (en) | System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field | |
US6990569B2 (en) | Handling problematic events in a data processing apparatus | |
JP3564517B2 (ja) | データ処理システム | |
IE940854A1 (en) | Data processor with branch prediction and method of¹operation | |
KR100515039B1 (ko) | 조건부 명령어를 고려한 파이프라인 상태 표시 회로 | |
JPH03291724A (ja) | マイクロプログラム制御方式 | |
IE901524A1 (en) | Control of multiple function units with parallel operation¹in a microcoded execution unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040309 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040427 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040510 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
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: 20090618 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100618 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100618 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110618 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |