JP3779012B2 - 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法 - Google Patents
分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法 Download PDFInfo
- Publication number
- JP3779012B2 JP3779012B2 JP33912596A JP33912596A JP3779012B2 JP 3779012 B2 JP3779012 B2 JP 3779012B2 JP 33912596 A JP33912596 A JP 33912596A JP 33912596 A JP33912596 A JP 33912596A JP 3779012 B2 JP3779012 B2 JP 3779012B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- microprocessor
- instructions
- dispatch
- 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
Links
- 238000011017 operating method Methods 0.000 title 1
- 230000007246 mechanism Effects 0.000 claims description 11
- 238000000034 method Methods 0.000 claims description 11
- 230000006870 function Effects 0.000 claims description 8
- 238000013459 approach Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000011010 flushing procedure Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation 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
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
Description
【発明の属する技術分野】
本発明は、複数のパイプライン化された機能装置を使用するRISCマイクロプロセッサに関し、詳細には、分岐命令を処理するディスパッチ装置で使用される機構に関する。
【0002】
【従来の技術】
縮小命令セット・コンピュータ(RISC)マイクロプロセッサの主要な利点の1つは、命令を非常に早い速度で処理できることである。これは1つには、クロック速度のためであり、1つには、複数の機能装置が同時に使用され、そのため、1サイクル中に、複数の機能がそれぞれの異なる命令に対して実行されるからである。また、パイプラインが使用され、そのため、各機能装置は、各サイクルごとに、パイプラインを通じて命令を移動する。例えば、一度に4つの機能装置が使用され9段パイプラインを有するシステムは、一度に9×4=36個の命令を処理することができる。同じサイクル中に発行される命令を命令群と呼ぶ。
【0003】
そのような複数機能装置パイプライン式アーキテクチャで発生する主要な問題の1つは、分岐命令またはジャンプ命令の処理である。通常、分岐のターゲット・アドレスを算出しターゲット命令を取り出すにはいくつかのパイプライン・サイクルが必要なので、この問題のために、パイプラインの遅延および減速が生じることがある。1つの手法は、単に、ターゲット・アドレスが正しく算出され、あるいは分岐が条件付きである場合は、その条件も判定されるまで、追加命令を発行しないことである。その場合、パイプラインは、これが処理されている間、数サイクルにわたって空になり、パイプラインの性能上の利点が失われる。
【0004】
分岐命令を処理する通常の方法は、分岐方向を予想する1つまたは複数のビットを記憶することである。したがって、次の命令はこの予想に基づいて取り出され、パイプラインはフルスピードで継続し、予想された命令とその後に続く命令が処理される。予想が正しい場合、パイプラインは減速せず、最大の性能を発揮する。しかし、予想が正しくない場合、誤って予想された命令のパイプラインをフラッシュする機構を使用しなければならない。通常、予想速度は、予想のまれな誤りの発生時にパイプラインをフラッシュする時間上の欠点が、予想が正しいときにパイプラインを最大限に活用することによって補われるほど高い。
【0005】
誤って予想された命令のパイプラインをフラッシュすることは複雑なタスクである。ある手法では、各命令は、それが分岐に従うものであることを示すようにタグ付けできる。その場合、その後でこのタグを調べることができる。残念なことに、この手法では、各パイプラインの各段での各機能装置中のタグを調べるために多量の余分なハードウェアが必要である。命令がパイプラインから出るのを待つことは十分ではない。なぜなら、この場合、フラッシングを開始する前にパイプラインを空にしておくために必要なすべてのサイクルが必要であり、したがって追加時間が費やされるからである。
【0006】
サンマイクロシステムズ社(Sun Microsystems Inc.)のSparcシステムで使用される代替方法では、分岐命令がパイプライン内を伝搬する際にパイプラインのどの段が分岐命令を有するかを追跡する論理機構が使用される。この手法の1つの問題は、分岐がパイプライン中の命令群中の複数の命令の中央で発生する恐れがあることである。これは、分岐後の追加命令の発行を次のサイクルまで遅延させることによって対処される。したがって、各サイクルごとに4つの機能装置に4つの命令が発行され、命令2が分岐である場合、2つの命令しか発行されず、分岐の後に続く2つの命令は後続のサイクルまで待機する。この手法は、誤って予想された分岐命令がどこにあるかを追跡するために必要な論理機構が簡略化される利点を有するが、分岐の予想されたターゲット・アドレスが正しいときには、パイプラインの容量の一部が使用されない。
【0007】
【発明が解決しようとする課題】
したがって、最小限の論理機構しか必要とせず、正しく予想された分岐ターゲット命令に関するスループットを最大にするように、複数機能装置、複数段パイプライン・マイクロプロセッサで誤って予想された分岐を処理する改良された機構を有することが望ましい。
【0008】
【課題を解決するための手段】
本発明は、各サイクルごとに、最大数の命令を、分岐命令の後に別々のブロックとして分割せずにディスパッチするディスパッチ装置を含むマイクロプロセッサを提供する。誤って予想された分岐は、未処理命令FIFO中の分岐命令の後に続く命令に関する有効ビットを無効にセットすることによって処理される。
【0009】
好ましい実施態様では、外部メモリ・アクセス段の前に未処理命令FIFOが調べられ、無効な命令のための不要なメモリ・アクセス・サイクルが回避される。パイプラインの出力時に有効ビットも調べられる。機能装置中の命令と未処理命令FIFO中の命令との突き合わせは、OPコードを調べ、特定のサイクルまたは段に関してどの機能装置がFIFO中のどの位置に対応するかを判定することによって行われる。
【0010】
本発明の性質および利点をさらに理解するために、下記の説明を添付の図面と共に参照されたい。
【0011】
【発明の実施の形態】
図1は、本発明を組み込んだUltraSparcTMマイクロプロセッサ10のブロック図である。命令キャッシュ12は、復号装置14に命令を与える。命令キャッシュは、プリフェッチ装置16から命令を受け取ることができ、プリフェッチ装置16は、分岐装置18から命令を受け取り、あるいは命令TLB(変換索引バッファ)20に仮想アドレスを与える。TLB20は次いで、キャッシュ制御/システム・インタフェース22を通じてオフチップ・キャッシュから命令を取り出させる。オフチップ・キャッシュからの命令は、事前復号装置24に与えられ、分岐命令であるかどうかなど、ある種の情報が命令キャッシュ12に与えられる。
【0012】
復号装置14からの命令は命令バッファ26に与えられ、そこでディスパッチ装置28からアクセスされる。ディスパッチ装置28は、バス30に沿って一度に4つの復号命令を与え、各命令は8つの機能装置32ないし46のうちの1つに与えられる。ディスパッチ装置は、そのような4つの命令を各サイクルごとにディスパッチし、これらの命令は、データ依存性および適当な機能装置の使用可能性に関して検査を受ける。
【0013】
最初の3つの機能装置、すなわちロード/ストア装置32と2つの整数ALU装置34および36は、1組の整数レジスタ48を共用する。浮動小数点レジスタ50は、浮動小数点装置38、40、42とグラフィカル装置44および46によって共用される。整数機能装置群および浮動小数点機能装置群はそれぞれ、対応する完了装置52および54を有する。マイクロプロセッサは、オンチップ・データ・キャッシュ56とデータTLB58も含む。
【0014】
未処理FIFO66は機能装置パイプライン中の各命令に関する情報を含む。この未処理命令FIFO66は、命令FIFO制御論理機構71によって制御される。
【0015】
図2は、従来技術と比べた本発明による命令のディスパッチの例を示す。命令バッファ26は、命令6および11に2つの分岐命令を含む12個の命令と共に示されている。ディスパッチ装置28は、複数の機能装置に接続されたバス30にこれらの命令を与える。図2の左側に、従来技術のシーケンス60においてディスパッチャ59によって5つのサイクルのそれぞれでディスパッチされる命令が示されている。図2の右側には、図のように、同じ命令を3つのサイクルでディスパッチすることができる本発明によるシーケンス62のディスパッチャ28によるディスパッチが示されている。
【0016】
従来技術のディスパッチ装置59は、第1のサイクルで命令1ないし4を与える。これを基本ブロックと呼ぶ。第2のサイクルでは、命令6が分岐命令なので、サイクル2中には命令5および6しかディスパッチされず、したがって、短い基本ブロックが与えられる。命令7はサイクル3までディスパッチされない。サイクル3では、命令7ないし10がディスパッチされる。サイクル4では、命令11が分岐なので、命令11しかディスパッチされない。ディスパッチは、サイクル5で命令12から再開される。
【0017】
このように、論理機構は、パイプライン内で、分岐の後に続く命令がどこに現れるかを追跡することができる。たとえば、サイクル2に分岐があったことに着目することによって、その後に続くあらゆる段、この例ではサイクル3ないし5は、命令6に対する予想される分岐に従った命令を有することが分かる。分岐予想論理機構は、分岐方向(分岐が選択されるかどうか)を予想し、それが選択されると予想された場合に分岐のターゲット・アドレスを求める。この分岐の方向またはターゲット・アドレスが誤って予想された場合、論理機構は、サイクル3、4、5、すなわち命令自体が適当な時間に存在する段中のすべての命令をフラッシュする必要があることを知る。これはたとえば、未処理命令FIFO中のこれらの命令に対応するすべての有効ビットを無効状態にセットすることによって行うことができる。この種のシステムの欠点は、分岐方向およびターゲット・アドレスが正しく予想されたときにパイプライン中の各サイクル中の可能な命令スロットが無駄になることである。また、将来、プロセッサのスカラリティが増大する(各サイクルごとにより多くの命令が発行される)につれて、この種のシステムの下で無駄になるスロットの数も増加する。現在、使用できる分岐予想技法はますます高度なものになっているので、分岐ターゲットが正しく予想される確率が高い。
【0018】
本発明のディスパッチ装置28は、図2に示したように、サイクル1で命令1ないし4を与え、サイクル2で命令5ないし8を与え、サイクル3で命令9ないし12を与える。図の例では、12個の命令が3サイクルでディスパッチされ、これに対して、シーケンス60の例では、同じ命令が5サイクルでディスパッチされる。従来技術の5つの基本ブロックは3つのスーパーブロックとして組み合わされる。当然のことながら、いくつかの分岐がある場合、これによってスループットが著しく向上する。
【0019】
図3は、図1のいくつかのパイプラインの段を詳しく示すものである。具体的には、1番下に浮動小数点レジスタ50が示されており、5つの浮動小数点機能装置およびグラフィカル機能装置が示されている。パイプラインのそれぞれの異なる段は、図の中央部の行64の文字で示されている。図3の1番上には、未処理命令FIFO66が示されている。図のように、FIFOは、パイプラインの7つの段またはサイクルに対応する7つの行を有し、対応する命令は、図のように1から28まで続く各行中の4つの位置に記憶される。したがって、各行は命令群を記憶する。FIFO中の位置に対応する命令は、パイプライン中の同じサイクルの機能装置内にある。命令FIFO制御論理機構71は、未処理命令FIFO66の動作を制御する。
【0020】
図のそれぞれの異なる段について下記で説明する。F/D段は、キャッシュから命令が取り出される段である。この段のD部分では、命令が復号され命令バッファ26内に置かれる。段Gでは、データ依存性および機能装置要件に応じて最大4つの命令がディスパッチされ、レジスタ・ファイルがアクセスされる。命令が必要とするデータがまだ得られない場合、データ依存性に応じて4つよりも少ない命令を送ることができることに留意されたい。あるいは、複数の命令が同じ機能単位を必要としている場合、等価機能装置が使用できない場合には4つよりも少ない命令をディスパッチすることができる。
【0021】
段Eでは、ALUが動作を実行し、メモリ・アドレスが算出される。段Cでは、FPU計算が開始され、オンチップ・データ・キャッシュおよびTLBが検査される。段N1は、浮動小数点計算の第2段であり、段N2は、浮動小数点完了段である。段N3によってトラップまたはエラーを処理することができ、段Wは、結果をレジスタ・ファイルに書き直すためのものである。
【0022】
2組の有効検査論理機構、すなわち有効検査論理機構70および有効検査論理機構72が設けられる。有効検査論理機構70は、未処理命令FIFO66では74として示されているパイプラインの第4段中の命令が有効であるかどうかを判定する。この点で、命令が無効である場合、オフチップ・メモリのアクセスおよびそれに関連する多数のサイクルの必要が回避される。
【0023】
有効検査論理機構72は、パイプラインの出力で、命令が有効であるかどうかを判定し、無効な結果がレジスタ・ファイルに書き込まれるのを防止する。有効検査論理機構70および72はすでに、他の目的に使用されており、それを本発明で使用するに過ぎない。本発明によれば、この点で妥当性検査を行うことによって、ディスパッチ装置が、誤って予想された分岐をブロックとして分割せず、予想が誤っていると判定されたときに未処理命令FIFO66中の適当なビットを無効化するように修正された場合に、このような分岐を「フラッシュする」ことができる。既存のディスパッチ装置をこのような機能を実行するように修正することは簡単である。
【0024】
分岐が正しく予想されたかどうかは、分岐処理論理機構によって判定され、分岐処理論理機構は一般に、分岐装置で実施される。この論理機構は、実際の入力信号を与えて未処理命令FIFO66中の有効ビットを変更する。このタイプの論理機構は、従来、分岐を有する命令群の後に続く命令群を無効にするために使用されてきた。
【0025】
図4は、本発明によるディスパッチ装置によって実行されるステップを示すフローチャートである。ステップAで、命令バッファ26の次の4つの命令が調べられる。次いで、ストラクチュラル・ハザードに関する検査が行われる(ステップB)。これには、正しいタイプの機能装置およびメモリ・ポートまたは命令が必要とする他の資源が使用できるかどうかなどが含まれる。ストラクチュラル・ハザードがある場合、命令は保持される(ステップC)。データおよび制御の依存性が検査され(ステップD)、処理されていない依存性がある場合、その命令は次のサイクルまで保持される(ステップC)。あるオプションでは、命令が、4つの命令からなる同じブロック中の第2の分岐であるかどうかを調べる検査が行われる(ステップE)。そうである場合、その命令は次のサイクルまで保持される。これによって、分岐判定論理機構を複製して同じサイクル(あるいは、将来のより高速なサイクルのマシンでは同じ数サイクル)中の2つの別々の分岐を判定することが不要になる。重複論理機構が設けられている場合、ステップEはなくなる。最後に、命令が機能装置にディスパッチされる(ステップF)。
【0026】
上記で指摘したように、1つのオプションは、発行される命令群当たりに1つの分岐命令しか許可しないことである。発行される命令群中の分岐の数は、命令スカラリティに応じて変更することができる。たとえば、4スカラ・マシンが使用されており、サポートされているアプリケーションでは、5命令おきよりも頻繁に分岐を有することが統計上まれであると仮定する。この場合、4命令当たりに2つの分岐があることはまれなので、各命令群を1つの分岐に制限した場合に多数の未使用スロットが生じることはまれである。一方、将来のマシンが10スカラであり、一度に10個の命令が発行される場合、一般に、命令群当たりに2つの分岐があり、命令群当たりに1つの分岐しか許可しない場合には多数の未使用スロットが生じる。したがって、そのような例では、命令群当たりに2つ(しかし、おそらく3つではない)の分岐を許可することが望ましい。
【0027】
図5は、本発明による分岐装置によって実行されるステップのフローチャートである。分岐命令の場合、正しい分岐方向が算出される(ステップG)。算出された分岐方向は次いで、予想された分岐方向と比較され、ターゲット・アドレスが求められる(ステップH)。分岐方向が一致した場合(ステップI)、分岐が条件付きであるかどうかが判定される(ステップJ)。分岐が条件付きである場合、その条件に関する試験が行われる(ステップK)。条件が満たされた場合(ステップL)、プロセスは完了する。分岐が正しく予想され(方向とターゲット・アドレスの両方)、条件が満たされている場合、ディスパッチされる命令を修正する必要はない。分岐が誤って予想され、あるいは条件付き分岐のいずれかの条件が満たされていない場合、分岐命令は命令FIFO内に配置される(ステップM)。次いで、分岐命令の後に続くすべての命令に関する有効ビットが無効状態にセットされる(ステップN)。これは、図1の分岐装置18が、分岐が誤って予想されたこととを示し、かつ分岐命令を識別する制御信号を命令FIFO制御論理機構71へ送ることによって行うことができる。制御論理機構71は次いで、命令情報を未処理命令FIFO66内に配置し、適当な有効ビットを無効状態にセットする。
【0028】
一実施形態では、有効検査論理機構70または72は、適当な機能装置中の命令を未処理命令FIFO66中の適当な命令データと突き合わせることができる。未処理命令FIFO66は、図3中の番号で示したように、命令を常にプログラム順に並べる。しかし、この順序は、命令のタイプに応じて異なるので機能装置内では異なるものでよい。有効検査論理機構は、OPコード(または符号化OPコード)を調べ、それがどの機能装置に対応するかを知ることによって、未処理命令FIFO66中のデータを機能装置に合致させることができる。同じタイプのOPコードを実行できる複数の機能装置が活動状態である場合、有効検査論理機構は、ディスパッチ装置と同じ優先順位割り当て論理を有する。たとえば、第1の加算命令は常に、整数加算のために第1の整数ALUへ送ることができる。代替実施形態では、命令が発行されたときに命令FIFO内に機能装置IDが置かれる。
【0029】
一実施形態では、ディスパッチ装置は、各サイクルごとに単一の分岐命令しか許可しない。したがって、特定のサイクル中の命令2および3に分岐がある場合、命令4は次のサイクルまで待機し、第1のサイクルでは3つの命令しか送られない。この制限を使用して、1組の処理ハードウェア論理機構しか使用せずに適当な分岐命令を判定することができる。単一サイクル内に複数の分岐がある可能性がある場合、単一サイクルまたはその他の短い期間中に複数の分岐命令を正しく予想できるように、この論理機構を複製する必要があり、したがってマイクロプロセッサ上のより多くの面積が必要になる(非常に短いサイクルのマシンでは複数のサイクルが必要になる可能性がある)。
【0030】
代替実施形態では、分岐処理ハードウェアを複製してサイクル当たりに複数の分岐を許可し、それによって各サイクルごとに複数の分岐をディスパッチすることができる。他の実施形態は、様々な数の機能装置を有することも、あるいは様々な数のパイプライン段を有することも、あるいは様々なサイクル当たり許可分岐数を有することもできる。
【0031】
他の代替実施形態では、未処理命令FIFOレジスタ66内で各段またはサイクルごとに単一の有効ビットを使用することができる。誤って予想された分岐ターゲットに関しては、その段またはサイクルに対応する未処理命令FIFOのライン全体を無効化することができる。次いで、ターゲット命令だけでなく、分岐命令自体、およびその段またはサイクルに対応する同じライン中の最初の命令もフラッシュすることができる。次いで、分岐命令および同じライン中の最初の命令を再びディスパッチする必要がある。この場合も、ハードウェアおよび論理機構の複雑さとスループットが兼ね合わされる。
【0032】
本発明の利点は、分岐に関する検査を行う必要なしにディスパッチ装置を簡略化することができ、スループットを向上させることができることである。ディスパッチ装置は、サイクル当たりに複数の分岐が許可されている場合、分岐を機能装置にディスパッチする際に分岐を探す必要も、あるいは識別する必要もない。単一の分岐しか許可されていない場合、ディスパッチ装置は、少なくとも第1の分岐に関する検査を行う必要がある。
【0033】
当業者には理解されるように、本発明は、その趣旨または基本的特性から逸脱せずに他の特定の態様で具体化することができる。たとえば、機能装置命令と未処理命令FIFO中の命令データとの間の合致を判定する有効論理装置の代わりに、未処理命令FIFO中の対応する特定の位置を識別するタグを機能装置命令に与えることができる。別法として、FIFOではなく他のデータ記憶構造を使用して命令妥当性データを記憶することができる。パイプラインのそれぞれの異なる領域に、妥当性ビットを検査する追加論理機構を追加することができる。たとえば、待ち時間の長い演算が開始される(すなわち、浮動小数点除算)ときに、妥当性ビットを検査し、命令が無効である場合は演算を中止することができる。したがって、前述の説明は好ましい実施形態を例示するものであり、本発明の範囲について述べた添付の特許請求の範囲を参照されたい。
【図面の簡単な説明】
【図1】 本発明を組み込んだマイクロプロセッサの実施形態のブロック図である。
【図2】 従来技術および本発明による、機能装置への命令の割り当てを示す図である。
【図3】 本発明の一実施形態によるパイプライン段および未処理命令FIFOの図である。
【図4】 本発明の一実施形態によるディスパッチ装置の動作のフローチャートである。
【図5】 本発明の一実施形態における分岐装置および未処理命令FIFO制御論理機構の動作のフローチャートである。
【符号の説明】
10 マイクロプロセッサ
12 命令キャッシュ
14 復号装置
16 プリフェッチ装置
18 分岐装置
20 変換索引バッファ
22 キャッシュ制御/システム・インタフェース
24 事前復号装置
26 命令バッファ
28 ディスパッチ装置
Claims (15)
- パイプライン化された複数の機能装置(32−46)と、少なくとも1つの命令バッファ(26)と、命令ディスパッチ装置(28)とを有するマイクロプロセッサであって、前記パイプライン化された複数の機能装置(32−46)中の各命令ごとの追跡データを格納する未処理命令FIFO(66)を備え、その追跡データが有効ビットを含み、前記命令ディスパッチ装置が前記命令バッファと前記パイプライン化された複数の機能装置との間に結合され、前記少なくとも1つの命令バッファが分岐命令と予想ターゲット命令を含む複数の命令を備え、かつ前記命令ディスパッチ装置が分岐命令と予想ターゲット命令の両方を単一のサイクル中に前記機構装置にディスパッチするように構成されたことを特徴とするマイクロプロセッサ。
- さらに、予想された分岐方向と実際の分岐方向を比較するように構成され、分岐方向が合致し、前記分岐が選択されたときに、予想されたターゲット・アドレスと実際のターゲット・アドレスを比較する分岐予想論理機構(18)と、
前記予想された分岐方向またはターゲット・アドレスが誤って予想されたものである場合に、前記未処理命令FIFO中の前記ターゲット命令およびその後に続く命令に対応する前記追跡データに関する前記有効ビットを無効状態にセットするように構成されたFIFO制御論理機構(71)とを備えることを特徴とする請求項1に記載のマイクロプロセッサ。 - さらに、前記パイプライン式機能装置の終わりに各命令ごとに前記有効ビットを検査し、無効と判定された命令に関する演算の結果を記憶するのを妨げるように構成されたパイプラインの終わり有効論理機構(32)を備えることを特徴とする請求項2に記載のマイクロプロセッサ。
- さらに、前記機能装置によって待ち時間の長い演算が行われる前に前記パイプライン式装置の中間段で各命令ごとに前記有効ビットを検査し、無効と判定された命令に関する待ち時間の長い演算を妨げるように構成された中間有効論理機構(70)を備えることを特徴とする請求項2に記載のマイクロプロセッサ。
- 前記待ち時間の長い演算がオフチップ・メモリ・アクセスであることを特徴とする請求項4に記載のマイクロプロセッサ。
- 前記命令ディスパッチ装置がさらに、所与のサイクル中に前記機能装置に単一の分岐命令しかディスパッチできないように構成されることを特徴とする請求項1に記載のマイクロプロセッサ。
- 前記命令ディスパッチ装置がさらに、所与のサイクル中に前記機能装置に所定数の分岐命令しかディスパッチできないように構成されることを特徴とする請求項1に記載のマイクロプロセッサ。
- 前記所定の数が1であることを特徴とする請求項7に記載のマイクロプロセッサ。
- パイプライン化された複数の機能装置(32−46)と、少なくとも1つの命令バッファ(26)と、命令ディスパッチ装置(28)とを有するマイクロプロセッサを動作させる方法であって、分岐命令および予想ターゲット命令を含む複数の命令を前記命令バッファに与える要素を提供するステップと、前記ディスパッチ装置を用いて分岐命令と予想ターゲット命令の両方を単一のサイクル中に前記機能装置にディスパッチする要素を前記命令バッファから供給するステップと、前記パイプライン化された複数の機能装置中の各命令ごとに、有効ビットを含む追跡データを未処理命令FIFO中に記憶させる要素を提供するステップとを含むことを特徴とする方法。
- 前記予想された分岐方向が正しく予想されているかどうかを判定する要素を提供するステップと、前記予想されたターゲット命令が誤って予想されたものである場合に、前記未処理命令FIFO中の前記ターゲット命令およびその後に続く命令に対応する前記追跡データに関する前記有効ビットを無効状態にセットする要素を提供するステップとを含むことを特徴とする請求項9に記載の方法。
- さらに、パイプラインの終わり有効論理機構において、前記パイプライン式機能装置の終わりに各命令ごとに前記有効ビットを検査する要素を提供するステップと、無効と判定された命令に関する演算の結果を記憶するのを妨げる要素を提供するステップとを含むことを特徴とする請求項10に記載の方法。
- さらに、中間有効論理機構において、前記機能装置によって待ち時間の長い演算が行われる前に前記パイプライン式装置の中間段で各命令ごとに前記有効ビットを検査する要素を提供するステップと、無効と判定された命令に関する待ち時間の長い演算を妨げるステップとを含むことを特徴とする請求項10に記載の方法。
- 所与のサイクル中に前記命令ディスパッチ装置が前記機能装置に所定数の分岐命令しかディスパッチできないようにするステップを含むことを特徴とする請求項9に記載の方法。
- 前記所定の数が1であることを特徴とする請求項13に記載の方法。
- メモリと、前記メモリに結合されたマイクロプロセッサとを備え、前記マイクロプロセッサが前記請求項1ないし8に記載のいずれかの1つであることを特徴とするコンピュータ・システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/569,725 US5809324A (en) | 1995-12-07 | 1995-12-07 | Multiple instruction dispatch system for pipelined microprocessor without branch breaks |
US08/569,725 | 1995-12-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09274565A JPH09274565A (ja) | 1997-10-21 |
JP3779012B2 true JP3779012B2 (ja) | 2006-05-24 |
Family
ID=24276603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP33912596A Expired - Lifetime JP3779012B2 (ja) | 1995-12-07 | 1996-12-05 | 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5809324A (ja) |
EP (1) | EP0778519B1 (ja) |
JP (1) | JP3779012B2 (ja) |
KR (1) | KR100431975B1 (ja) |
DE (1) | DE69626263T2 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6289437B1 (en) * | 1997-08-27 | 2001-09-11 | International Business Machines Corporation | Data processing system and method for implementing an efficient out-of-order issue mechanism |
US6289442B1 (en) | 1998-10-05 | 2001-09-11 | Advanced Micro Devices, Inc. | Circuit and method for tagging and invalidating speculatively executed instructions |
US6910123B1 (en) * | 2000-01-13 | 2005-06-21 | Texas Instruments Incorporated | Processor with conditional instruction execution based upon state of corresponding annul bit of annul code |
US6976150B1 (en) * | 2000-04-06 | 2005-12-13 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | Resource flow computing device |
US7072998B2 (en) * | 2003-05-13 | 2006-07-04 | Via Technologies, Inc. | Method and system for optimized FIFO full conduction control |
US7636837B2 (en) | 2003-05-28 | 2009-12-22 | Fujitsu Limited | Apparatus and method for controlling instructions at time of failure of branch prediction |
US7949861B2 (en) * | 2005-06-10 | 2011-05-24 | Qualcomm Incorporated | Method and apparatus for managing instruction flushing in a microprocessor's instruction pipeline |
US8127115B2 (en) * | 2009-04-03 | 2012-02-28 | International Business Machines Corporation | Group formation with multiple taken branches per group |
KR20130066402A (ko) * | 2011-12-12 | 2013-06-20 | 삼성전자주식회사 | 트레이스 데이터 저장 장치 및 방법 |
US9122424B1 (en) * | 2013-07-18 | 2015-09-01 | Western Digital Technologies, Inc. | FIFO buffer clean-up |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4833599A (en) * | 1987-04-20 | 1989-05-23 | Multiflow Computer, Inc. | Hierarchical priority branch handling for parallel execution in a parallel processor |
JP2845646B2 (ja) * | 1990-09-05 | 1999-01-13 | 株式会社東芝 | 並列演算処理装置 |
US5493669A (en) * | 1993-03-03 | 1996-02-20 | Motorola, Inc. | Data processor for simultaneously searching two fields of the rename buffer having first and second most recently allogated bits |
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 |
US5542109A (en) * | 1994-08-31 | 1996-07-30 | Exponential Technology, Inc. | Address tracking and branch resolution in a processor with multiple execution pipelines and instruction stream discontinuities |
US5598546A (en) * | 1994-08-31 | 1997-01-28 | Exponential Technology, Inc. | Dual-architecture super-scalar pipeline |
-
1995
- 1995-12-07 US US08/569,725 patent/US5809324A/en not_active Expired - Lifetime
-
1996
- 1996-11-26 EP EP96308514A patent/EP0778519B1/en not_active Expired - Lifetime
- 1996-11-26 DE DE69626263T patent/DE69626263T2/de not_active Expired - Fee Related
- 1996-12-04 KR KR1019960061584A patent/KR100431975B1/ko not_active IP Right Cessation
- 1996-12-05 JP JP33912596A patent/JP3779012B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0778519A2 (en) | 1997-06-11 |
DE69626263D1 (de) | 2003-03-27 |
JPH09274565A (ja) | 1997-10-21 |
DE69626263T2 (de) | 2004-02-05 |
KR970049478A (ko) | 1997-07-29 |
US5809324A (en) | 1998-09-15 |
EP0778519A3 (en) | 1998-06-10 |
EP0778519B1 (en) | 2003-02-19 |
KR100431975B1 (ko) | 2004-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6260138B1 (en) | Method and apparatus for branch instruction processing in a processor | |
US6247115B1 (en) | Non-stalling circular counterflow pipeline processor with reorder buffer | |
JP3871884B2 (ja) | 記憶からロードへの転送のための機構 | |
EP0399762B1 (en) | Multiple instruction issue computer architecture | |
EP0638183B1 (en) | A system and method for retiring instructions in a superscalar microprocessor | |
US6122656A (en) | Processor configured to map logical register numbers to physical register numbers using virtual register numbers | |
JP2928695B2 (ja) | 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法 | |
US5421020A (en) | Counter register implementation for speculative execution of branch on count instructions | |
US5611063A (en) | Method for executing speculative load instructions in high-performance processors | |
US5553256A (en) | Apparatus for pipeline streamlining where resources are immediate or certainly retired | |
US5809268A (en) | Method and system for tracking resource allocation within a processor | |
US6119223A (en) | Map unit having rapid misprediction recovery | |
EP0394624B1 (en) | Multiple sequence processor system | |
KR100493126B1 (ko) | 데이터정밀도모드표시기를구비한다중파이프라인형마이크로프로세서 | |
US6393550B1 (en) | Method and apparatus for pipeline streamlining where resources are immediate or certainly retired | |
JP3779012B2 (ja) | 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法 | |
KR19990066800A (ko) | 프로세싱 시스템에서 복수의 저장 인스트럭션 완료를 처리하는방법 및 시스템 | |
JP3207124B2 (ja) | カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置 | |
EP1099158B1 (en) | Processor configured to selectively free physical registers upon retirement of instructions | |
US6754813B1 (en) | Apparatus and method of processing information for suppression of branch prediction | |
US7302553B2 (en) | Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue | |
US6289428B1 (en) | Superscaler processor and method for efficiently recovering from misaligned data addresses | |
US20100100709A1 (en) | Instruction control apparatus and instruction control method | |
US20100031011A1 (en) | Method and apparatus for optimized method of bht banking and multiple updates | |
US20040003214A1 (en) | Instruction control method and processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20051227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060110 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060117 |
|
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: 20060207 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060301 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100310 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110310 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110310 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120310 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130310 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130310 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140310 Year of fee payment: 8 |
|
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 |
|
EXPY | Cancellation because of completion of term |