JP3759729B2 - スペキュレーティブ・レジスタの調整 - Google Patents
スペキュレーティブ・レジスタの調整 Download PDFInfo
- Publication number
- JP3759729B2 JP3759729B2 JP2002551696A JP2002551696A JP3759729B2 JP 3759729 B2 JP3759729 B2 JP 3759729B2 JP 2002551696 A JP2002551696 A JP 2002551696A JP 2002551696 A JP2002551696 A JP 2002551696A JP 3759729 B2 JP3759729 B2 JP 3759729B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- stage
- pipeline
- speculative
- counter
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 or 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 OR CALCULATING; 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 or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
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)
- Executing Machine-Instructions (AREA)
Description
【発明の属する技術分野】
本発明は、プログラム可能なプロセッサ内で実行されるスペキュレーティブ・レジスタ(speculative register)に関する。
【0002】
【従来の技術】
デジタル信号プロセッサのような従来型のプログラム可能なプロセッサは、プロセッサの性能を改善し、かつソフトウェア命令が実行される速度を増加させるために設計された多種多様のハードウェアを含む。しかしながら、付加的なハードウェアは、典型的にはプロセッサの電力消費を増大させる。
【0003】
「パイプライン方式(pipelining)」は、全体的に処理速度を増加させるために、命令が実行において重複する従来型のプログラム可能なプロセッサ内で使用される技術である。パイプライン方式のプロセッサは、典型的には複数のステージの命令を処理する。命令は、システム・クロックに従って、あるステージから次のステージへ移動するが、典型的にはパイプライン内で最も遅いステージによって決定されたクロック周波数を有する。
【0004】
命令を処理している間、「ハザード(hazards)」が、時々、命令ストリームにおける次の命令の実行を妨げる。例えば、ある命令が、パイプライン内で処理を終了していない前の命令の結果に依存するとき、データ・ハザードが発生する。ある命令がパイプライン内での処理を終了したときにのみ、その結果が構成レジスタに書き込まれるが、ここでは、その結果は、一般にパイプライン内の後続の命令へアクセス可能である。したがって、データ・ハザードは、パイプラインを「ストール(stall)」させ、パイプラインの性能を低下させる。
【0005】
パイプラインの処理能力を改善し、かつストールを回避するために行われるハードウェアの追加の1つのタイプが、スペキュレーティブ・レジスタである。スペキュレーティブ・レジスタは、パイプライン内の命令の処理が終了したときに、構成レジスタが有する値を推測または予測するレジスタである。しかしながら、時々、スペキュレーティブ・レジスタに書き込む命令は、それが構成レジスタに書き込む前に終了することがある。このような場合には、スペキュレーティブ・レジスタは調整を必要とする。
【0006】
【実施例の詳細な説明】
図1は、プログラム可能なプロセッサ2を図示するブロック図である。プロセッサ2は、実行パイプライン4および制御ユニット6を含む。制御ユニット6は、システム・クロックに従って、パイプライン4を通って命令および/またはデータのフローを制御する。例えば、命令の処理中に、制御ユニット6は、命令をデコードし、また、例えば結果をメモリにライト・バックすることを含む、対応する動作を正確に実行することを、パイプライン4の多様なコンポーネントに命令する。
【0007】
命令はパイプライン4の第1ステージにロードされ、後続のステージを通って処理される。あるステージは、他のステージと同時に処理される。データは、システムのサイクル中にパイプライン4のステージ間を通過する。命令の結果は、パイプライン4の終端に間断なく出現する。
【0008】
プロセッサ2は、パイプライン4内での処理を終えた1つ以上の命令の結果を格納する1つ以上の構成レジスタを含む。さらに、プロセッサ2は、構成レジスタが将来有するであろう値を予測することができる1つ以上のスペキュレーティブ・レジスタを含む。以下に詳述されるように、いくつかの例では、スペキュレーティブ・レジスタは調整を必要とすることがある。したがって、プロセッサ2は、スペキュレーティブ・レジスタを調整するために、ここで記述される1つ以上の技術を実行する。
【0009】
図2は、パイプラインの一例を図示するブロック図である。パイプライン4は、複数の命令の実行を同時に進めることができる複数のステージを有する。パイプライン4内で、命令は、最初のクロック・サイクルで命令フェッチ(IF)ステージ12に入る。そして、その命令は、続くクロック・サイクルでパイプラインを下流へ送られる。典型的には、追加の命令が、続くクロック・サイクル中にそれぞれIFステージ12に入る。パイプライン4のステージ数は、パイプライン4が同時に処理できる命令の数を定義する。
【0010】
パイプライン4の異なるステージは以下のように動作する。命令はフェッチ・ユニット13によってIFステージ12の間にフェッチされ、デコード(DEC)ステージ14の間に命令レジスタ15からデコードされる。アドレス計算(AC)ステージ18の間に、1つ以上のデータ・アドレス生成器19が、その動作を実行するために用いられるあらゆるメモリ・アドレスを計算する。
【0011】
実行ステージ22A−22Nの間、実行ユニット23は、例えば2つの数の加算または乗算のような指定された動作を行なう。実行ユニット23は、例えば1つ以上の算術論理演算ユニット(ALU)、浮動小数点ユニット(FPU)およびバレル・シフタを含む動作を行なうために特殊なハードウェアを含んでもよいが、本発明の範囲はこれらの事項に制限されない。データ・アドレス生成器19によって生成されたアドレス、メモリから検索されたデータ、またはデータ・レジスタから検索されたデータのような多様なデータが、実行ユニット23に与えられる。ライト・バック(WB)ステージ30の間に、パイプライン4の外部の記憶場所またはデータ・レジスタ、あるいは構成レジスタ32のようなパイプライン4内のデータ・レジスタに、結果がライト・バックされる。パイプライン4のステージは、データの格納のために、フリップフロップのような1つ以上の格納回路を含んでもよい。
【0012】
一旦命令がパイプライン4内での処理を終了した、したがって、システムに「コミットされる(committed)」と、構成レジスタ32が一般にロードされる。これは、典型的には、例えばWBステージ30が終結したときに生じる。したがって、構成レジスタ32は、一般に、命令がパイプライン4に入った後のいくつかのクロック・サイクルで書き込まれる。
【0013】
しかしながら、命令がコミットする前に、命令に関連するデータにアクセスするほうが有利であるとされる多くのシナリオがある。この理由により、パイプライン4は、構成レジスタ32のための値を推測または「予測(predict)」するために使用される1つ以上のスペキュレーティブ・レジスタ34を実行する。一般に、スペキュレーティブ・レジスタ34は、命令がコミットする前に、命令に関連するデータで書き込まれる。
【0014】
構成レジスタ32とは異なり、スペキュレーティブ・レジスタ34は、典型的には、プロセッサ2の命令セットによってサポートされない。したがって、プログラム・コードは、スペキュレーティブ・レジスタ34に直接アクセスするためには使用されない。この理由により、プログラマは、構成レジスタ32でできるのと同じ方法で、スペキュレーティブ・レジスタ34の中に、あるいは外へデータを移動させることができない。
【0015】
例えば、スペキュレーティブ・レジスタが非常に有利な場合の一例が「ハードウェア・ループ」である。ハードウェア・ループは、ループ構成内でソフトウェア命令を処理するために使用される専用ハードウェアである。ループ・セットアップ命令は、例えば、ハードウェアを初期化する。その後、ループ命令はローカル・レジスタまたはバッファにキャッシュされ、ループの繰り返しの間にローカル・レジスタから発行される。このように、ハードウェア・ループにキャッシュされた命令は、複数回メモリからフェッチされる必要がない。
【0016】
スペキュレーティブ・レジスタ34は、プロセッサ2がより速くハードウェア・ループを検出し初期化することを可能にするので、ハードウェア・ループ・コンテキストにおいて非常に有利である。以上で述べたように、ループ・セットアップ命令におけるデータは、命令がコミットするまで構成レジスタ32に書き込まれない。したがって、構成レジスタ32がハードウェア・ループを初期化するために使用される場合、ハードウェア・ループの第1命令は、ループ・セットアップ命令がコミットするまでパイプライン4に入ることができない。例えば、ループ・セットアップ命令がコミットする前に、ループの第1命令がパイプライン4に入る場合、構成レジスタ32は、命令をループの一部であると認めるためにセット・アップされない。さらに、この問題は、パイプライン4の深さが増加するにつれて大きくなる。
【0017】
このような理由で、ループ・セットアップ命令は、スペキュレーティブ・レジスタ34に、ハードウェア・ループのループ条件、例えばループのトップ、ボトム、およびカウント値、を書き込むために使用することができる。そして、スペキュレーティブ・レジスタ34は、ループ・セットアップ命令がコミットする前にハードウェア・ループをセット・アップするために使用することができる。この理由で、1つ以上のスペキュレーティブ・レジスタ34を実行することにより、ループ・セット・アップ・ペナルティを削減または回避してプロセッサ2の処理速度を増加することができる。
【0018】
ハードウェア・ループの例において、例えば、スペキュレーティブ・レジスタ34Aに書き込まれるトップ値は、ループの最初の命令を指す。例えば、スペキュレーティブ・レジスタ34Bに書き込まれるボトム値は、ループの最後の命令を指す。例えば、スペキュレーティブ・レジスタ34Cに書き込まれたカウント値は、ループの複数の繰り返しを指定する。プログラム・カウンタがトップ命令を指すときにハードウェア・ループを初期化し、さらに、プログラム・カウンタがボトム命令を指すたびにカウント値をディクリメントする(例えば、スペキュレーティブ・カウント・レジスタ34Cをディクリメントする)ことによって、ハードウェア・ループがセットアップされて、プロセッサ2によって効率的に実行される。
【0019】
スペキュレーティブ・レジスタが有利である他の例は、ウォッチ・ポイントを伴う使用である。ウォッチ・ポイントは、プログラム可能なプロセッサのデバッギング・プロセスにおいてプログラマを支援するために実行される。ウォッチ・ポイントは、特定の命令、特定タイプの命令、指定された記憶場所へのアクセス、または命令に関連するあらゆる他の条件を、モニタあるいは「ウォッチ(watch)」するためにセット・アップされる。例えば、ウォッチされている命令が、パイプライン内で定義された回数実行される場合、システムは特定の例外を実行する。
【0020】
ウォッチ・ポイントは、さらに、コードの特定のセットがいつ実行されるかを決定するために有用である。例えば、特定の命令が10回以上発行されるとき、あるいは特定の記憶場所が10回以上アクセスされるときは常に、補正アルゴリズムまたは「コード・パッチ」が実行される必要がある。ウォッチ・ポイントは、特定の命令をウォッチするために使用され、特定の命令が実行されるたびにウォッチ・カウント・レジスタをディクリメントさせる。
【0021】
ハードウェア・ループのセットアップ値と同様に、ウォッチ・ポイントはできるだけ早く検出される必要がある。この理由で、スペキュレーティブ・レジスタ34は、例えば、システムに入っている「ウォッチされた(watched)」命令の数をカウントするために使用することができる。これらおよび他のシナリオは、スペキュレーティブ・レジスタを実行することにより、改善されたシステム性能を見出すことができる。
【0022】
図3は、スペキュレーティブ・レジスタの使用によって実現されるタイミングの利点を図示するフロー図である。図3に示されるように、1つ以上の条件が1つ以上のスペキュレーティブ・レジスタにロードされる(40)。次に、これらの条件は検出され(42)、その後、スペキュレーティブ・レジスタに書き込まれる条件を生じる命令がコミットする(44)。
【0023】
すべての利点と共に、スペキュレーティブ・レジスタの実行は、さらにいくつかの課題ももたらす。例えば、スペキュレーティブ・レジスタ・データを調整する必要があることから、スペキュレーティブ・レジスタの使用を導入することによって一つの課題が生じる。パイプライン4がイベント(例えば、割込みまたは例外)を処理しなければならない場合、パイプラインの現在の動作が終了する必要がある。この終了が、スペキュレーティブ・レジスタ34が書き込まれた後であって、各構成上の対応部32が書き込まれる前に生じる場合、スペキュレーティブ・レジスタ34の値は、対応する構成レジスタ32のそれと一致しないことがある。そのような場合には、スペキュレーティブ・レジスタ34のうちの1つが調整を必要とする。言いかえれば、スペキュレーティブ・レジスタ34が早期に書き込まれるので、命令がコミットされる前にパイプライン4内の終了が生じる場合には、スペキュレーティブ・レジスタ34のうちの1つを調整することが必要となる。
【0024】
図4は、スペキュレーティブ・レジスタ34の調整に関する動作モードを図示するフロー図である。図4で示されるように、スペキュレーティブ・レジスタ34が書き込まれる(50)。図4の実施例において、スペキュレーティブ・レジスタは、すなわち、スペキュレーティブ・トップ34A、スペキュレーティブ・ボトム34B、およびハードウェア・ループを処理するために実行されるスペキュレーティブ・カウント34Cレジスタである。構成レジスタ32が書き込まれる(54)前に、パイプライン内で終了が生じる場合(52)、アボートされない命令がパイプライン4から排出され(56)、そして、スペキュレーティブ・レジスタ34は、それぞれの構成上の対応部32に収容されたデータを書き込むことにより調整される(58)。
【0025】
連続したハードウェア・ループに対処するとき、図4で図示された動作モードは特に有用である。例えば、第2ループがコミットする前にそれが終了する場合、第1ループは、パイプライン内に残っている命令をまだ実行する必要がある。図4の調整技術は、スペキュレーティブ・レジスタを適切に調整することによって、この遷移に対処する方法を提供する。
【0026】
スペキュレーティブ・カウント・レジスタの調整は、特定の課題を提示することがある。上述のように、スペキュレーティブ・カウント・レジスタは、ハードウェア・ループ内の命令、ウォッチ・ポイントを有する命令、または他のシナリオをカウントするために実行される。しかしながら、スペキュレーティブ・カウント・レジスタに影響を与える命令が、それがコミットする前に終了するとき、スペキュレーティブ・カウント・レジスタ内のデータは不正確である。
【0027】
終了の後に続くスペキュレーティブ・カウント・レジスタ・データを修正する1つの方法は、終了の前に命令をコミットさせ、その後、その構成上の対応部をスペキュレーティブ・カウント・レジスタを書き込むことである。しかしながら、分岐ペナルティが、パイプラインから排出するための時間よりも短い場合、追加のペナルティが加わることがある。
【0028】
図5は、スペキュレーティブ・カウント・レジスタを調整するための効率的な方法を図示する。図5は、ハードウェア・ループのコンテキストにおける調整を図示するが、本発明の範囲はこの事項に制限されていない。図示のように、ループ・セットアップ命令がACステージに入った後(80)、スペキュレーティブ・カウント・レジスタに書き込まれる(82)。この時点で、カウント・データがパイプラインを下流へ送られる(84)。終了(85)が生じる場合、アボートされない命令が排出され(86)、スペキュレーティブ・カウント・レジスタにその構成上の対応部のデータが書き込まれる(87)。
【0029】
ボトム・マッチ(90)で、例えば、プログラム・カウンタが、命令ループのボトム命令を指しているとき、有効なディクリメント・ビットがパイプラインの下流へ送られる(92)。有効なディクリメント・ビットを送った命令が各パイプ・ステージを出るとき(94)、その終了したパイプ・ステージのカウンタが1だけディクリメントされる(96)。換言すると、パイプ・ステージのカウンタは、有効なディクリメント・ビットが送られるときにインクリメントされ(例えば92で)、そして、有効なディクリメント・ビットを送った命令がパイプ・ステージを出るときに、個々のカウンタがディクリメントされる(例えば96で)。各ステージのそれぞれのカウンタは、そのステージと、スペキュレーティブ・カウント・レジスタが存在するステージとの間のパイプライン内に存在する有効なディクリメントの数を表わす。したがって、ステージで終了が生じるときは常に、そのステージのカウンタは、スペキュレーティブ・カウント・レジスタを調整するために使用することができる。
【0030】
終了がパイプライン内で生じる場合(98)、スペキュレーティブ・カウント・レジスタは、終了ステージでカウンタによってカウントされる有効なディクリメント・ビットの数によって調整される(88)。すべてのループ命令がパイプラインを出るまで、図5のステップが繰り返される(100)。
【0031】
スペキュレーティブ・カウント・レジスタは、すべてのボトム・マッチでディクリメントされる(例えば、ハードウェア・ループを通ってすべてのパスを説明しながら)。しかしながら、すべてのボトム・マッチの後に、全体のカウント値をパイプラインの下流に伝播するのではなく、単一の有効なディクリメント・ビットだけがパイプラインの下流へ送られる。このようにして、プロセッサ2内でハードウェアの削減を実現することができる。カウンタのセットは、有効なディクリメント・ビット、およびそれらのビットを送らせる関連する命令をモニタする。そのため、カウンタのセットは、スペキュレーティブ・カウント・レジスタおよびその構成上の対応部間の差異をモニタする。
【0032】
図6はパイプライン内のカウンタを図示するブロック図である。図示のように、カウンタは、DECの後のパイプラインのすべてのステージで維持される(110,111,112,113)。したがって、スペキュレーティブ・カウント・レジスタおよびその構成上の対応部間の差異をモニタするために、単一の有効なディクリメント・ビットがパイプラインを下流へ伝播される。カウンタは、マルチプレクサ120の入力に接続される。マルチプレクサ120は、もしあれば、いずれのカウンタがスペキュレーティブ・カウント・レジスタ34Cを調整するために使用されるかを決定する。必要ならば、マルチプレクサ120は、適切な調整を行う調整信号156を出力する。
【0033】
他の実施例において、終了は、あるステージでは生じないことがあり、また、あるステージにある命令が存在するときには制限されることがある。そのような実施例では、ハードウェアの削減は、終了が制限されるステージでカウンタを実行しないことにより実現することができる。
【0034】
カウンタ110,111,112,113の幅は、必要に応じて変更することができる。例えば、カウンタ110は1ビット・カウンタであり、111は2ビットのカウンタであってもよい。カウンタ112,113の最低の深さは、パイプライン内のステージの数に依存する。カウンタ110は常に1または0のいずれかの値を有するので、1ビットのカウンタである。例えば、ボトム・マッチ命令が現在ACにある場合には、1の値を有する。命令がACを出ると、カウンタは0に戻る。
【0035】
本発明の範囲はこの点に制限されないが、カウンタ111および次のカウンタ(例えばステージEX2のための)は、2ビットのカウンタである。これは、カウンタ111(例えばEX1カウンタ)が2の最大値を持ち、EX2カウンタが3の最大値を持つからである。EX3カウンタは4の最大値を持ち、従って、3ビットを必要とする。同様に、次の3つのカウンタ(例えばEX4からEX6)は、5から7の間の値を表すことができる3ビットのカウンタである。
【0036】
各ステージのカウンタの幅は、カウンタが保持する必要がある最大値を考慮することにより決定される。ハードウェア・ループの例において、これは、ループが単一の命令ループである場合に対応する。したがって、カウンタの深さは、単に、カウンタとACとの間のステージの数に対応する。再び、しかしながら、サイズは、さらに終了が特定のステージで生じるかどうかに依存し、したがって、いくつかのステージはカウンタを必要としない。
【0037】
他の動作モードは、スペキュレーティブ・カウント・レジスタを調整するためのハイブリッドな方法である。パイプラインの選択されたステージに存在するカウンタは、パイプラインの排出に関連するペナルティが分岐ペナルティよりも大きい場合に、スペキュレーティブ・カウント・レジスタを調整するために使用される。しかしながら、排出ペナルティが分岐ペナルティよりも小さいか、あるいは等しい場合、パイプライン内の命令はコミットすることを許され、その結果、スペキュレーティブ・カウント・レジスタは、その構成上の対応部から調整される。システムの動作は、パイプライン内のどこで終了が生じたかに依存して選択される。あるケースでは、3つの実行ステージを有するパイプラインは、終了がEX3ステージまたはWBステージで生じる場合に排出されるが、終了がEX3ステージの前に生じる場合にはパイプラインが排出されず、スペキュレーティブ・カウント・レジスタが調整される。
【0038】
図7は、動作のハイブリッド・モードを図示するフロー図である。図示のように、終了がパイプラインのn番目のステージの前に生じる場合(130)、カウンタはスペキュレーティブ・カウント値を調整する(128)。しかしながら、終了がn番目のステージの後に生じる場合(130)、パイプライン内の命令は、パイプラインを通って流れて、コミットすることを許される(132)。その後、スペキュレーティブ・レジスタは、それらの構成上の対応部内のデータで更新される(133)。変数nは、分岐ペナルティよりも短いかまたは等しい時間で、命令がパイプラインを通って流れることができるポイントを定義する(134)。
【0039】
図8は、ACステージおよび最初のn−1実行ステージにカウンタを有するハイブリッド回路を図示する。この回路は、終了がn番目の実行ステージまたはそれ以後に生じる場合に、パイプラインが終了に続く命令を実行することを可能にする。しかしながら、この回路は、終了が(n−1)番目の実行ステージ、またはそれ以前に生じる場合に、終了に続くスペキュレーティブ・カウント・レジスタを調整する。再び、変数nは、分岐ペナルティよりも短いかまたは等しい時間で、命令がパイプラインを通って流れることができるポイントを定義する。他のケースにおいて、変数nは、パイプライン内のより早期(例えば分岐ペナルティがより大きいところ)に存在する。さらに別のケースにおいて、変数nは、実行ステージの数ではなくステージの数に関して定義される。
【0040】
図9は、ハードウェア・ループのシナリオにおけるスペキュレーティブ・カウント・レジスタ150をインクリメントするための典型的な回路を図示する。ループのそれぞれのパス上で、マルチプレクサ154がスペキュレーティブ・カウント・レジスタ150をディクリメントする。しかしながら、調整が必要な場合(例えば、それがコミットする前にループ命令が終了する場合)、調整信号156がスペキュレーティブ・カウント・レジスタ150を適当に調整する。一旦ループが最終の繰り返しを終了すると、比較器158は表示されているとおりに信号160を送る。
【0041】
発明の多様な実施例が記述された。例えば、スペキュレーティブ・レジスタを調整するための多様な技術が、プロセッサ内のインプリメンテーションのために記述された。プロセッサは、汎用計算機システム、ディジタル処理システム、ラップトップ・コンピュータ、パーソナル・デジタル情報処理端末(PDA)および携帯電話を含む多種多様のシステムで実行することができる。そのようなシステムでは、プロセッサは、フラッシュ・メモリ装置、またはオペレーティング・システムおよび他のソフトウェア・アプリケーションを格納するスタティック・ランダム・アクセス・メモリ(SRAM)のようなメモリ装置に結合される。これらおよび他の実施例は、添付の請求項の範囲内である。
【図面の簡単な説明】
【図1】 本発明の実施例に従ってプログラム可能なプロセッサを図示するブロック図である。
【図2】 本発明の実施例に従ってパイプラインの一例を図示するブロック図である。
【図3】 本発明の実施例に従ってスペキュレーティブ・レジスタの使用によって実現されるタイミングの利点を図示するフロー図である。
【図4】 本発明の実施例に従ってスペキュレーティブ・レジスタの調整に関する動作モードを図示するフロー図である。
【図5】 本発明の実施例に従ってスペキュレーティブ・カウント・レジスタを調整する効率的な方法を図示するフロー図である。
【図6】 本発明の実施例に従って回路内のカウンタを図示するブロック図である。
【図7】 本発明の実施例に従ってハイブリッドの動作モードを図示するフロー図である。
【図8】 本発明の実施例に従ってハイブリッド回路を図示するブロック図である。
【図9】 本発明の実施例に従ってハードウェア・ループのシナリオにおいてスペキュレーティブ・レジスタをインクリメントするための回路例を図示する。
Claims (19)
- プロセッサ内の条件を検出する段階と、
単一のレジスタのために複数の調整値を計算する段階であって、前記複数の調整値の計算は前記プロセッサのパイプライン内における複数の各ハードウェア・ステージで同時に行なわれる、段階と、
前記条件に関連する命令が前記パイプライン内で終了するときに、前記調整値のうちの1つで前記単一のレジスタを更新する段階と、
から構成されることを特徴とする方法。 - 前記調整値を計算する段階は、
前記条件が検出されるときに前記調整値をインクリメントする段階と、
前記命令が前記ステージを出るときに前記調整値をディクリメントする段階と、
を含むことを特徴とする請求項1記載の方法。 - 前記条件を検出する段階は、指定された記憶場所へのアクセスを検出する段階を含むことを特徴とする請求項1記載の方法。
- 前記条件を検出する段階は、ハードウェア・ループ内で命令を検出する段階を含むことを特徴とする請求項1記載の方法。
- 前記ハードウェア・ループ内で前記命令を検出する段階は、ボトム・マッチを検出する段階を含むことを特徴とする請求項4記載の方法。
- 前記条件を検出する段階は、ウォッチ・ポイントを検出する段階を含むことを特徴とする請求項1記載の方法。
- 前記調整値のうちの1つで前記レジスタを更新する段階は、前記終了が生じた前記ステージに存在するカウンタによって決定される量によって前記レジスタを調整する段階を含むことを特徴とする請求項1記載の方法。
- 前記レジスタを更新する段階は、スペキュレーティブ・レジスタを更新する段階を含むことを特徴とする請求項1記載の方法。
- 第1レジスタと、
第2レジスタと、
前記第1レジスタに格納されている値と前記第2レジスタに格納されている値との間の差異をモニタする複数のカウンタのセットであって、前記第1レジスタ、前記第2レジスタ、および、前記カウンタのセットは制御ユニットによって制御される複数ステージのパイプラインに存在し、かつ前記カウンタのセットは前記第1レジスタが存在するハードウェア・ステージで維持される第1カウンタ、および、前記第1レジスタが存在する前記ハードウェア・ステージの後のハードウェア・ステージで維持される追加のカウンタを含む、複数のカウンタのセット、と、
から構成されることを特徴とする装置。 - スペキュレーティブ・レジスタと、
構成レジスタと、
前記スペキュレーティブ・レジスタに格納されている値と前記構成レジスタに格納されている値との間の差異をモニタする複数のカウンタのセットであって、前記スペキュレーティブ・レジスタ、前記構成レジスタ、および、前記カウンタのセットは制御ユニットによって制御される複数ステージのパイプラインに存在し、かつ前記カウンタのセットは前記スペキュレーティブ・レジスタが存在するハードウェア・ステージで維持される第1カウンタ、および、前記スペキュレーティブ・レジスタが存在する前記ハードウェア・ステージの後のハードウェア・ステージで維持される追加のカウンタを含む、複数のカウンタのセットと、
から構成されることを特徴とする装置。 - 前記スペキュレーティブ・レジスタはスペキュレーティブ・カウント・レジスタであり、前記構成レジスタは構成カウント・レジスタであることを特徴とする請求項10記載の装置。
- 前記カウンタのセットは、パイプラインのn番目のステージの前のステージに存在するカウンタから構成され、nは、分岐ペナルティよりも短いかまたは等しい時間で、命令が前記パイプラインを通って流れることを可能にするポイントを定義することを特徴とする請求項9記載の装置。
- 前記パイプライン内の命令の終了に続いて、前記制御ユニットは、前記終了が生じたステージで維持される特定のカウンタによって決定される量によって、前記第1レジスタを調整するために適合されることを特徴とする請求項9記載の装置。
- 前記制御ユニットは、
検出された条件のために前記第1レジスタが調整されるときに、前記カウンタをインクリメントし、
前記条件に関連する命令が前記カウンタのそれぞれに関連するそれぞれのステージを出るときに、それぞれのカウンタをディクリメントする、
ために適合されることを特徴とする請求項9記載の装置。 - スタティック・ランダム・アクセス・メモリ装置と、
第1レジスタと、
第2レジスタと、
前記第1レジスタに格納されている値と前記第2レジスタに格納されている値との間の差異をモニタする複数のカウンタのセットと、
前記スタティック・ランダム・アクセス・メモリ装置に結合されたプロセッサと、
から構成され、前記プロセッサは、
検出された条件のために前記第1レジスタが調整されるときに、前記カウンタをインクリメントし、
前記条件に関連する前記命令が前記カウンタのそれぞれに関連する前記パイプラインのそれぞれのハードウェア・ステージを出るときに、それぞれのカウンタをディクリメントし、前記カウンタのそれぞれは個別のスペキュレーティブ・ハードウェア・ステージで維持される、
ために適合された実行パイプラインおよび制御ユニットを含む、
ことを特徴とするシステム。 - 前記パイプラインの終了に続いて、前記制御ユニットが、前記第1レジスタを調整するために適合されることを特徴とする請求項15記載のシステム。
- 前記制御ユニットは、前記カウンタのセットのうちの1つによって決定された量によって前記第1レジスタを調整するために適合されることを特徴とする請求項16記載のシステム。
- 前記カウンタのセットの1つが、前記終了が生じた前記パイプラインのステージに存在する特定のカウンタであることを特徴とする請求項17記載のシステム。
- 前記終了がn番目のステージ以降の前記パイプラインのステージで生じる場合に、前記制御ユニットは、アボートされない命令を排出し、かつ前記第2レジスタ内で前記第1レジスタに前記データを書き込むために適合されることを特徴とする請求項16記載のシステム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/742,745 US6920547B2 (en) | 2000-12-20 | 2000-12-20 | Register adjustment based on adjustment values determined at multiple stages within a pipeline of a processor |
| PCT/US2001/046334 WO2002050667A2 (en) | 2000-12-20 | 2001-10-31 | Speculative register adjustment |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2004516572A JP2004516572A (ja) | 2004-06-03 |
| JP3759729B2 true JP3759729B2 (ja) | 2006-03-29 |
Family
ID=24986028
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2002551696A Expired - Lifetime JP3759729B2 (ja) | 2000-12-20 | 2001-10-31 | スペキュレーティブ・レジスタの調整 |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US6920547B2 (ja) |
| JP (1) | JP3759729B2 (ja) |
| KR (1) | KR100576560B1 (ja) |
| CN (1) | CN1244049C (ja) |
| TW (1) | TWI285329B (ja) |
| WO (1) | WO2002050667A2 (ja) |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6898695B2 (en) * | 2001-03-28 | 2005-05-24 | Intel Corporation | Use of a future file for data address calculations in a pipelined processor |
| US7013382B1 (en) * | 2001-11-02 | 2006-03-14 | Lsi Logic Corporation | Mechanism and method for reducing pipeline stalls between nested calls and digital signal processor incorporating the same |
| US7366877B2 (en) * | 2003-09-17 | 2008-04-29 | International Business Machines Corporation | Speculative instruction issue in a simultaneously multithreaded processor |
| US8266414B2 (en) | 2008-08-19 | 2012-09-11 | Freescale Semiconductor, Inc. | Method for executing an instruction loop and a device having instruction loop execution capabilities |
| US11620134B2 (en) | 2021-06-30 | 2023-04-04 | International Business Machines Corporation | Constrained carries on speculative counters |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| 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 |
| JP2539974B2 (ja) * | 1991-11-20 | 1996-10-02 | 富士通株式会社 | 情報処理装置におけるレジスタの読出制御方式 |
| US5421020A (en) | 1993-01-08 | 1995-05-30 | International Business Machines Corporation | Counter register implementation for speculative execution of branch on count instructions |
| US5943494A (en) | 1995-06-07 | 1999-08-24 | International Business Machines Corporation | Method and system for processing multiple branch instructions that write to count and link registers |
| US5996063A (en) * | 1997-03-03 | 1999-11-30 | International Business Machines Corporation | Management of both renamed and architected registers in a superscalar computer system |
| US6003128A (en) * | 1997-05-01 | 1999-12-14 | Advanced Micro Devices, Inc. | Number of pipeline stages and loop length related counter differential based end-loop prediction |
| JP3420091B2 (ja) * | 1998-11-30 | 2003-06-23 | Necエレクトロニクス株式会社 | マイクロプロセッサ |
| US6189088B1 (en) * | 1999-02-03 | 2001-02-13 | International Business Machines Corporation | Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location |
-
2000
- 2000-12-20 US US09/742,745 patent/US6920547B2/en not_active Expired - Lifetime
-
2001
- 2001-10-31 WO PCT/US2001/046334 patent/WO2002050667A2/en not_active Ceased
- 2001-10-31 CN CNB018210325A patent/CN1244049C/zh not_active Expired - Fee Related
- 2001-10-31 KR KR1020037008024A patent/KR100576560B1/ko not_active Expired - Lifetime
- 2001-10-31 JP JP2002551696A patent/JP3759729B2/ja not_active Expired - Lifetime
- 2001-11-01 TW TW090127145A patent/TWI285329B/zh not_active IP Right Cessation
Also Published As
| Publication number | Publication date |
|---|---|
| CN1244049C (zh) | 2006-03-01 |
| KR20030061002A (ko) | 2003-07-16 |
| TWI285329B (en) | 2007-08-11 |
| KR100576560B1 (ko) | 2006-05-08 |
| WO2002050667A2 (en) | 2002-06-27 |
| CN1481530A (zh) | 2004-03-10 |
| US20020078326A1 (en) | 2002-06-20 |
| JP2004516572A (ja) | 2004-06-03 |
| WO2002050667A3 (en) | 2003-04-17 |
| US6920547B2 (en) | 2005-07-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR100571322B1 (ko) | 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템 | |
| WO2002057907A2 (en) | Method and apparatus to stall the pipeline of a processor | |
| JP3787329B2 (ja) | ハードウェア・ループ | |
| US6748523B1 (en) | Hardware loops | |
| US7065636B2 (en) | Hardware loops and pipeline system using advanced generation of loop parameters | |
| JP3822568B2 (ja) | イベント処理 | |
| JP3759729B2 (ja) | スペキュレーティブ・レジスタの調整 | |
| US6766444B1 (en) | Hardware loops | |
| US20100005276A1 (en) | Information processing device and method of controlling instruction fetch | |
| US8082422B2 (en) | Pipelined processing | |
| US8074053B2 (en) | Dynamic instruction and data updating architecture | |
| US20050071830A1 (en) | Method and system for processing a sequence of instructions | |
| US7124285B2 (en) | Peak power reduction when updating future file | |
| JP2924735B2 (ja) | パイプライン演算装置及びデコーダ装置 | |
| WO2008008661A2 (en) | Interleaved hardware multithreading processor architecture and dynamic instruction and data updating architecture |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050328 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050401 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050627 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050704 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050926 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051018 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051118 |
|
| 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: 20051213 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060104 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 3759729 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313117 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090113 Year of fee payment: 3 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090113 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100113 Year of fee payment: 4 |
|
| 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: 20110113 Year of fee payment: 5 |
|
| 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: 20110113 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120113 Year of fee payment: 6 |
|
| 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: 20130113 Year of fee payment: 7 |
|
| 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: 20130113 Year of fee payment: 7 |
|
| 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 |
|
| 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 |
|
| 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 |