JP2004513426A - ハードウェア・ループ - Google Patents
ハードウェア・ループ Download PDFInfo
- Publication number
- JP2004513426A JP2004513426A JP2002539954A JP2002539954A JP2004513426A JP 2004513426 A JP2004513426 A JP 2004513426A JP 2002539954 A JP2002539954 A JP 2002539954A JP 2002539954 A JP2002539954 A JP 2002539954A JP 2004513426 A JP2004513426 A JP 2004513426A
- Authority
- JP
- Japan
- Prior art keywords
- loop
- register
- early
- instruction
- registers
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 33
- 239000000872 buffer Substances 0.000 description 53
- 238000010586 diagram Methods 0.000 description 40
- 230000008901 benefit Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 241000219793 Trifolium Species 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 239000002699 waste material Substances 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/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
-
- 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/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; 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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 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; 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 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)
- Power Sources (AREA)
Abstract
Description
【発明の属する技術分野】
本発明は、プログラム可能なプロセッサ内で実行されるハードウェア・ループに関する。
【0002】
【従来の技術】
デジタル信号処理(DSP)システムのようなプログラム可能なプロセッサを設計する際に、2つの競合する設計ゴールは処理速度と電力消費である。従来のプロセッサでは、ソフトウェア命令の実行速度を増加させることを目指した多種多様なハードウェアを含む。しかしながら、付加的なハードウェアは、典型的には、プロセッサの電力消費を増加させる。
【0003】
プログラム可能なプロセッサの速度を増加させるための1つの技術は、「ハードウェア・ループ」であり、それはループ構成内でソフトウェア命令の実行を促進させるために設計した専用ハードウェアである。ハードウェア・ループは、ローカル・レジスタに命令をキャッシュすることによりソフトウェア・ループを実行するために使用されるクロック数を減少させることができ、それによりメモリ装置からの同じ命令または命令キャッシュを複数回フェッチする必要性を低減する。
【0004】
ハードウェア・ループはいくつかの試みを導入する。これらの試みは、セットアップ・ペナルティまたは分岐ペナルティのようなペナルティを回避することを含む。セットアップ・ペナルティは、ハードウェア・ループのセット・アップに関連した動作(通常、処理時間の増加)の損失である。同様に、分岐ペナルティは、分岐に関連した実行(再び通常、処理時間の増加)の損失である。
【0005】
【実施例の詳細な説明】
図1は、電力消費を著しく増加させずに、効率的なハードウェア・ループをサポートするために配置されたプログラム可能プロセッサ2を図示するブロック図である。
【0006】
ハードウェア・ループをサポートするために、プロセッサ2は、ループへの入口および出口条件を設定することにより、ハードウェアを初期化するループ・セットアップ命令をサポートすることができる。入口および出口条件は、ループ条件、すなわち、トップ、ボトムおよびカウントによって定義される。トップ条件は、ループの第1命令(あるいはトップ)を定義する。ボトム条件は、ループの最後の命令(あるいはボトム)を定義する。そして、カウント条件は、ループの繰り返し数を定義する。
【0007】
ハードウェア・ループの入口(エントリ)は、最初の「トップ・マッチ(Top Match)」で生じる。プログラム・カウンタ(PC)がループのトップ命令を指している場合、トップ・マッチが生じる。ハードウェア・ループの出口は、最後の「ボトム・マッチ(Bottom Match)」で生じる。PCがループのボトム命令を指しているとき、ボトム・マッチが生じる。
【0008】
最初のトップ・マッチでカウントを初期化しかつ各ボトム・マッチでカウントをディクリメントすことによって、そのハードウェアは、それがいつ最後のボトム・マッチに遭遇したかを追跡することができる。このように、トップ、ボトムおよびカウントのループ条件は、ハードウェア・ループの入口および出口条件を定義する。
【0009】
プロセッサ2は、実行パイプライン4および制御ユニット6を含む。制御ユニット6は、クロック・サイクル中にパイプライン4を通って命令および/またはデータのフローを制御する。例えば、命令の処理中に、制御ユニット6は、パイプラインの多様なコンポーネントに命令し、命令を解読して、例えばメモリに結果を書くことを含む対応する動作を正しく実行する。
【0010】
命令は、パイプライン4の第1ステージにロードされ、続くステージを通って処理される。ステージは、他のステージと同時に処理してもよい。データは、システムのサイクル中にパイプライン4中のステージ間を通過する。命令の結果は、次々にパイプライン4の終端に出現する。
【0011】
制御ユニット6は、以下記述されるように、プロセッサ2の電力消費を著しく増加させずに、ハードウェア・ループの高速化を容易にするハードウェア・ループ・ユニット8を含む。
【0012】
図2は、パイプラインの例を図示するブロック図である。パイプライン10は、単一のクロック・サイクル中に複数の命令の実行を促進する複数のステージを具備する。パイプライン10では、命令は最初のクロック・サイクルで命令フェッチ(IF)ステージ12に入る。その後、その命令は、続くクロック・サイクル中にパイプラインを下流へ送られる。前の命令が終了した後、別の命令がIFステージ12に入ってもよい。このように、典型的には、別の命令は続くクロック・サイクル中にIFステージ12に入り、次に、続くクロック・サイクル中にパイプラインを下流へ送られる。同様に、追加の命令は、続くクロック・サイクル中にIFステージ12にそれぞれ入る。パイプラインの段数は、パイプラインが同時に処理できる命令の数を定義する。
【0013】
パイプラインの異なるステージは、以下のように動作する。命令はフェッチ・ユニット13によってIFステージ12でフェッチされ、DECステージ14中で命令レジスタ15から解読される。ACステージ18中に、データ・アドレス生成器19は、その動作を行なうために用いられるあらゆるメモリ・アドレスを計算する。
【0014】
実行ステージ(EX1−EXn)22,28の間、実行ユニット23,29は、例えば2つの数の加算または乗算のような指定された動作を行なうことができる。実行ユニットは、本発明の有効な範囲が次のことに制限されるものではないが、例えば1つ以上の算術論理演算ユニット(ALU)、浮動小数点ユニット(FPU)およびバレル・シフタを含む動作を行なうために特殊なハードウェアを含んでもよい。多種多様のデータ、例えばデータ・アドレス生成器によって生成されたアドレス、メモリから取り出されたデータまたはデータ・レジスタから取り出されたデータが、実行ユニットに利用されてもよい。ライトバック(書き戻し)ステージ(WB)30において、その結果は、パイプラインの外の記憶場所またはデータ・レジスタに、または構成レジスタ32のようなパイプライン中のデータ・レジスタに書き込まれてもよい。パイプライン10のステージは、データの格納のために、フリップフロップのような1つ以上の記憶回路を含む。
【0015】
上述したように、プロセッサ2は、ループ・セットアップ命令をサポートする。ループ・セットアップ命令は、パイプライン中の構成レジスタ32にハードウェア・ループ(例えばトップおよびボトム)の境界を書くことにより、ハードウェア・ループを初期化する。ループ・セットアップ命令は、さらにループが完了すべきである回数を示す構成レジスタ32中のカウントを初期化する。加えて、ループ・セットアップ命令は、ループのトップに到達する前にループ・セットアップ命令に続く命令の数を示すオフセットを定義する。ハードウェア・ループが初期化された後、ループの出口条件が満たされる(例えば0に等しいカウントを備えたボトム・マッチ)まで、ハードウェア・ループはパイプライン10中で動作する。
【0016】
一旦命令が、例えば、WBステージ30の最後で引き渡されたならば、構成レジスタ32が一般にロードされる。したがって、ループ・セットアップ命令がパイプライン10に入るときから数クロック・サイクルが過ぎるまで、構成レジスタ32に格納された入口および出口条件は更新されない。数クロック・サイクルが過ぎるまで入口および出口条件が更新されないので、ハードウェア・ループをセット・アップする制限が存在してもよい。例えば、ループ・セットアップ命令が引き渡される前に、ループ中の第1命令がパイプライン10に入力する場合、構成レジスタはループの一部として命令を識別するためにセットアップされなくてもよい。さらに、この問題はパイプラインの深さが増すにつれ増加する。
【0017】
一実施例において、プロセッサ2は、パイプライン中の1セットの早期レジスタ34,35,36を維持することによって、これらの制限を克服することができる。図2に図示されるように、ECnt36がACステージに存在する一方で、早期レジスタETop34,EBot35はデコード・ステージに存在する。
【0018】
1セットの早期レジスタ34,35,36を実行することにより、ループ・セットアップのペナルティを削減しまたは回避して、プロセッサ2の処理速度を増加させる。上述されたように、ループ・セットアップ命令がパイプラインに入る時間と構成レジスタが書き込まれる時間との間に、数クロック・サイクルが経過するかもしれない。しかしながら、ループ・セットアップ命令が構成レジスタに書くかなり前に、早期レジスタはロードされる。このような理由で、早期レジスタの実行は、ハードウェア・ループをセットアップする時間を削減する。
【0019】
早期レジスタは、構成レジスタの値を予測するかまたは推測するために使用される推論的なレジスタである。構成レジスタと異なり、推論的なレジスタはシステムの命令セットにサポートされない。したがって、プログラム・コードはその推論的なレジスタにアクセスするために使用されない。このような理由のため、プログラマは、構成レジスタでできるのと同じ方法で、推論的なレジスタへまたはそのレジスタからデータを移動させることができない。
【0020】
早期レジスタのロードはいくつかの異なる方法で行われる。例えば、早期レジスタは、通常の命令レジスタ転送を構成レジスタに対して実行することの結果として、単にロードされる。言いかえれば、システムは、他のあるレジスタの内容をロードするように構成レジスタに命じ、その結果、早期レジスタは更新される。しかし、レジスタをロードする別の方法は、メモリからの「ポップ」である。言いかえれば、システムは、メモリからデータをフェッチし、そのデータを構成レジスタにロードし、そして早期レジスタを更新する。
【0021】
しかしながら、通常のレジスタ移動またはポップに関する問題は、それらがループ・セットアップ・ペナルティを持ち込むかもしれないということである。「移動された」または、「ポップした」データを書き込むことが可能となるまで、システムはパイプラインを停止させるので、これらのペナルティが生じる。これらのペナルティを回避するために、構成レジスタが書き込まれる前に、ループ・セットアップ命令が早期レジスタをロードするために使用されてもよい。
【0022】
次の例は、典型的なループ・セットアップ機械語命令を起動するためのシンタックスを示す。
【0023】
LSETUP(PC Relative Top, PC Relative Bottom)Counter=X
PC Relative Topは、現在の命令からループの開始までの距離を指定する(開始オフセット)。PC Relative Bottomは、現在の命令からループの終了までの距離を指定する(終了オフセット)。加えて、Counter変数は、カウンタ・レジスタおよびループ中の繰り返しの回数を示すループ・カウントを特定する。
【0024】
図3は、本発明の実施例に従って、早期レジスタがロードされるタイミングを図示するフロー図である。記述されるように、ループ・セットアップ命令は、カウント値、トップ値およびボトム値の形式で、ループ条件を収容することができる。全体として、これらの3つの値は、ハードウェア・ループの入口および出口条件を定義する。
【0025】
カウント値は、ループが作る繰り返しの回数を表わす。一旦ループ・セットアップ命令がACに入ると(38)、カウント値はECntレジスタに書かれる(39)。ECntレジスタへの最初の書き込みは、異なるパイプラインに含まれていたデータ・レジスタからのレジスタ転送によって行われる。ある動作モードでは、ECntレジスタは、DAGパイプライン中のPREGレジスタ(図6を参照)に含まれていたデータが書き込まれる。
【0026】
トップおよびボトム値は、どの命令がループのトップか、また、どの命令がループのボトムかを示す。しかしながら、ループ・セットアップ命令のトップおよびボトム値は、プログラム・カウンタ(PC)の相対数である。したがって、ACステージでの計算は、ETop34およびEBot35レジスタにそれぞれ書き込まれるトップおよびボトム値を得るために使用される(40)。ループ・セットアップ命令がEX1に入った後(41)、トップおよびボトム値は、ETop34およびEBot35レジスタに書き込まれる(42)。
【0027】
ETopレジスタ34は、ループ(あるいはループのトップ)の第1命令を指すためにロードされる。EBotレジスタ35は、ループ(あるいはループのボトム)の最後の命令を指すためにロードされる。ECntレジスタ36は、その回路がループを通り抜ける回数を指定するためにロードされる。ある実施例において、ECnt36は、回路がループを回るたびにディクリメントして、下方へ計数する。
【0028】
図4は、ループ・セットアップ命令がパイプライン10によって受け取られ処理されるときに、ハードウェア・ループ・ユニット8の1つの動作モードを図示するフロー図である。1つのフォーマットによれば、ループ・セットアップ命令は、開始オフセット(S−オフセット)および終了オフセット(E−オフセット)を含むいくつかのセットアップ変数を指定する。S−オフセットは、ループ・セットアップ命令からループ中の第1命令までの命令ストリームにおける距離を指定する。同様に、E−オフセットは、ループ・セットアップ命令からループ中の最後の命令までの命令ストリームにおける距離を指定する。
【0029】
例えば、ループ中の第1命令がループ・セットアップ命令の直後に続く命令ならば、S−オフセットはループ・セットアップ命令の幅になるであろう。命令ストリームにおいて、ループ・セットアップ命令とループ中の第1命令との間に1つの命令があれば、S−オフセットは、ループ・セットアップ命令およびその1つの命令の幅になるであろう。同様に、ループ・セットアップと第1命令との間に2つの命令があれば、S−オフセットはループ・セットアップ命令およびその2つの命令の幅になるであろう。
【0030】
図4の中で図示されるように、S−オフセットおよびE−オフセットは、典型的にはループ・セットアップ命令によって指定される(44)。しかしながら、ループ・セットアップ命令は、プログラム・カウンタ(PC)に関するオフセットを指定する。したがって、PC値もまた決定されなければならない(45)。その後、PC値およびS−オフセットは、ETopレジスタ・データを計算するために使用することができる(46)。さらに、PC値およびE−オフセットはEBotレジスタ・データを計算するために使用することができる(47)。一度計算されると、早期レジスタのデータは、早期レジスタに書き込まれる(48)。
【0031】
ETopとEBotレジスタに書き込むときの典型的なタイミングが、図4を図2と比較して示す。ステップ(44)および(45)は、DECステージ14で生じる。計算ステップ(46)および(47)は、ACステージ18で生じる。したがって、本発明の範囲はこの点に制限されるものではないが、書込みステップ(48)がEX1ステージ22で生じる。
【0032】
一度ロードされると、早期レジスタは、ハードウェア・ループをセットアップするために使用される。図5は、命令フェッチ(IF)ユニット50およびパイプライン10のデコーダ・ユニット52に接続されたハードウェア・ループ・ユニット8の一実施例を図示するブロック図である。一実施例において、早期レジスタは、命令57のストリームにおけるループを検出するために使用される。その後、ループ・ハードウェア54に1つ以上のループ命令がロードされる。一度ロードされると、ループ命令は、再三ループ・ハードウェアから送出される。したがって、早期レジスタが命令ループを検出する場合、ループ命令の1つ以上はIFユニット50によって一度だけフェッチされ、次に、ハードウェア・ループ・ユニット8から繰り返して送出される。
【0033】
早期レジスタの実現によって、いくつかの試みが開始される。例えば、早期レジスタのデータは調整される必要があるので、早期レジスタの使用で導入される1つの試みが発生する。パイプラインがイベントを処理しなければならない場合、パイプラインの現在の動作を終了する必要がある。早期レジスタに書き込んだ後ではあるが、それぞれの構成レジスタに書き込まれる前に、この終了が発生すると、早期レジスタのデータを調整する必要が生じる。換言すれば、早期レジスタが初めに書き込まれるので、ループが生じる前のパイプラインにおける終了は、早期レジスタのデータを調整することを要求する。
【0034】
図6は、早期レジスタの調整に関する動作モードを図示するフロー図である。特に、図6は、ETop,EBot,ECntレジスタの調整に関与するタイミングを示す。
【0035】
図6中に示されるように、早期レジスタが書き込まれる(76)。図6の実施例において、早期レジスタは、特に(図2中で示されているように)ETop,EBotおよびECntレジスタである。構成レジスタに書き込む前に(82)、パイプラインにおける終了が生じる場合(80)、未終了命令はパイプラインから排出され(83)、早期レジスタはそれぞれの構成上の対応部に収容されたデータを書くことにより調整される(84)。
【0036】
図6で示された動作モードは、折り返しのハードウェア・ループに対処するとき、特に有用である。例えば、第2のループが開始する前に終了する場合、第1のループはまだパイプライン中のその残りの命令を実行する必要がある。図6における調整技術は、早期レジスタ値を調整することによりこの遷移を取り扱う方法を提供する。
【0037】
図7は、早期カウント(ECnt)データを有する構成レジスタの値を更新する方法を図示する。データは上述された任意の方法でECntレジスタに書き込まれる(90)。その後、ECntレジスタのデータはパイプラインを下流へ送られ(92)、WBステージで構成カウント・レジスタに書き込まれる(93)。そして、後続するループの繰り返しのたびに(94)、ECntレジスタのデータがディクリメントされ(96)、再度パイプラインを下流へ送られる(92)。このプロセスは、ループがその最後の繰り返しを終了するまで続く(98)。
【0038】
図8は、構成カウント・レジスタを更新する他の方法を図示する。ループの繰り返しの後にECntデータをパイプラインの下流へ送るのではなく、図8で図示された動作モードがECntデータを直ちに送る。そして、後続のループの繰り返しにおいて、単一の有効なディクリメント・ビットが、構成カウント・レジスタを調整するために送られる。
【0039】
図8では、データが、上述された任意の方法でECntレジスタに書き込まれる(90)。そして、ECntレジスタのデータはパイプラインを下流へ送られ(92)、それがWBステージで構成カウント・レジスタに書き込まれる(93)。後続するループの繰り返しにおいて(94)、単一の有効なディクリメント・ビットが送られ(102)、構成カウント・レジスタをディクリメントする(104)。このプロセスは、ループがその最後の繰り返しを終了するまで続く(98)。
【0040】
図9は、早期レジスタの使用によって実現される時間的な利点を示すフロー図である。図9で図示されるように、ループの入口/出口条件が1セットの早期レジスタへロードされる(120)。そして、これらの早期入口/出口条件が検出され(122)、ループ・セットアップ命令が引き渡される(124)。
【0041】
ECntレジスタの調整は、さらに付加的な課題を呈する。ECntレジスタの調整は、ループが終わるより先にパイプラインが終了する場合には常に行われる。これは、有効な命令がまだパイプライン内にあり、有効な命令が引き渡されるとすぐに、これらの有効な命令が構成カウント・レジスタ値を調整するからである。
【0042】
終了の後にECntレジスタ・データを修正する1つの方法は、終了の前に命令が引き渡され、そして、それがECntレジスタの構成上の対応部でECntレジスタに書き込まれるようにすることである。しかしながら、これによって、分岐ペナルティが、パイプラインから排出するための時間よりも短い場合には、追加のペナルティが加わる。
【0043】
図10は、早期カウント値を調整するための効率的な方法を図示する。図示のように、ループ・セットアップ命令がACステージに入った後(180)、早期カウント・レジスタに書き込まれる(182)。この時点で、ECntデータは、パイプラインを下流へ送られる(184)。終了が生じた場合(185)、非アボート命令は排出され(186)、ECntレジスタが構成上の対応部内のデータで書き込まれる(187)。
【0044】
各ボトムが一致すると(190)、有効なディクリメント・ビットがパイプラインを下流へ送られる(192)。有効なビットが送られる原因となった命令が各パイプ・ステージを出るとき(194)、有効なディクリメント・ビットは、排出されたパイプ・ステージでカウンタから除去される(196)。換言すれば、カウンタ(群)は、有効なビットが送られるときにインクリメントされ(例えば192で)、また個々のカウンタは、有効なディクリメント・ビットが送られる原因となった命令がパイプ・ステージを出るときにディクリメントされる(例えば196で)。
【0045】
終了がパイプライン内で生じる場合(198)、早期カウント・レジスタは、終了ステージで、カウンタ内の有効なディクリメント・ビットの数によって調整される(188)。この調整値もまた、終了が生じたステージよりも後のパイプライン内に存在するすべてのパイプ・ステージのそれぞれのカウンタ内に表示される。図10のステップは、すべてのループ命令がパイプラインを出るまで繰り返される(200)。
【0046】
ECntレジスタは、ボトム・マッチのたびにディクリメントされる(例えば、ループを通るすべてのパスのために)。しかしながら、すべてのボトム・マッチの後にすべてのECnt値をパイプラインの下流に伝播するのではなく、単一の有効なディクリメント・ビットだけがパイプラインを下流へ送られる。このようにして、ハードウェアの減少がDSPシステム内で実現される。カウンタのセットは、有効なディクリメント・ビットおよびこれらのビットが送られる原因となった関連する命令を監視する。そのため、カウンタのセットは、早期カウント・レジスタと構成上の対応部との間の差異に基づいてランニング・タブをキープする。
【0047】
図11は回路内のカウンタを示すブロック図である。図示のように、カウンタは、DEC以降のパイプラインのすべてのステージで保守される(210,211,212,213)。したがって、単一の有効なディクリメント・ビットはパイプラインの下流に伝播され、早期カウント・レジスタとその構成上の対応部との間の差異を明らかにする。カウンタは、マルチプレクサ220の入力に接続される。マルチプレクサ220は、カウンタがある場合には、どのカウンタが早期カウント・レジスタ36を調整するために使用されるのかを決定する。
【0048】
他の実施例において、終了は特定のステージでは発生せず、または、特定の命令が特定のステージに存在するときには制限される。このような実施例では、終了が制限されるステージでカウンタを実行しないことによって、回路ハードウェアを減少することができる。
【0049】
カウンタ210,211,212,213の幅は、必要に応じて変更される。例えば、カウンタ210は1ビットのカウンタであり、カウンタ211は2ビットのカウンタである。カウンタ212,213の最小限の深さは、パイプライン内の実行ステージの数nに依存する。カウンタ210は、それが常に1または0の値を有するので、1ビットのカウンタである。例えば、ボトム・マッチ命令が現在ACに存在する場合、それは1の値を有する。命令がACを去る場合、カウンタは0に戻る。
【0050】
カウンタ211および次のカウンタ(例えばステージEX2のための)は、2ビットのカウンタであるが、本発明の範囲はこの点で制限されていない。これは、カウンタ211(例えばEX1カウンタ)が2の最大値を有し、EX2カウンタが3の最大値を有するからである。EX3カウンタは4の最大値を有し、従って、それは3ビットを必要とする。同様に、次の3つのカウンタ(例えばEX4からEX6)は、それぞれ5から7の間の値を表すことができる3ビットのカウンタである。
【0051】
各ステージのカウンタの幅は、カウンタが保持する必要がある最大値を考慮することによって決定される。これは、ループが単一の命令ループである場合に対応する。したがって、カウンタの深さは、単に、そのカウンタとACとの間のステージ数に対応する。しかしながら、サイズもまた、終了が特定のステージで発生するかどうかに依存するので、いくつかのステージはカウンタを必要としない。
【0052】
他の動作モードは、早期カウント・レジスタを調整するためのハイブリッド方式である。パイプラインの選択されたステージに存在するカウンタは、パイプラインのドレインに関連するペナルティが分岐ペナルティより大きい場合に、早期カウント・レジスタを調整するために使用される。しかしながら、ドレイン・ペナルティが分岐ペナルティよりも小さいか、あるいは同等である場合には、パイプライン内の命令が引き渡すことを許され、その結果、早期カウント・レジスタはその構成上の対応部から調整される。システムの動作は、パイプライン内のどこで終了が発生したかによって選択される。1つのケースにおいて、終了がEX3ステージまたはWBステージ内で発生した場合には、3実行ステージを有するパイプラインから排出されるが、終了がEX3ステージの前に生じる場合には、パイプラインから排出されず、早期カウンタが調整される。
【0053】
図12は、ハイブリッドの動作モードを示すフロー図である。図示のように、終了(230)がn番目のステージの前に発生する場合には、カウンタは早期カウント値を調整する(228)。しかしながら、終了(230)がn番目のステージの後に発生する場合には、パイプライン内の命令がパイプラインを通って流れ、かつ、引き渡すことを許容される(232)。そして、早期レジスタは、それらの構成上の対応部内のデータで更新される(233)。可変数nは、命令をパイプラインを通って流すことができる時間が、分岐ペナルティよりも少ないか、または同等の総時間を要するポイントを定義する(234)。
【0054】
図13は、第1のn−1実行ステージにカウンタを有するハイブリッド回路を図示する。回路は、命令がn番目の実行ステージに入っている場合に、終了に続いてパイプラインがその命令を実行することを可能にする。しかしながら、回路は、命令がn番目の実行ステージに入っていない場合には、終了に続いて早期カウント・レジスタを調整する。再び、可変数nは、命令をパイプラインを通って流すことができる時間が、分岐ペナルティよりも少ないか、または同等の総時間を要するポイントを定義する。他のケースでは、可変数nは、パイプライン内のより初期(例えば分岐ペナルティがより大きいところ)に存在する。
【0055】
ループ・レジスタおよびループ・バッファのような付加的なループ・ハードウェアは、高速のハードウェア・ループを助長する。ここに記述されているようなループ・ハードウェアは、いくつかの利点を提供する。いくつかの実施例において、ループ・ハードウェアは分岐ペナルティを隠すことができる。さらに、ループ・ハードウェアは、ループの繰り返しのたびに、キャッシュまたはSRAMのようなメモリ・デバイスにアクセスする必要を無くすることによって、電力を節約する。さらに、以下に記述されたループ・ハードウェアには、プログラミングの制限がほとんどない。その上、ループ・ハードウェアは、プログラム・メモリに他の状態で存在する可能性のあるあらアライメントの制限を除去する。
【0056】
再び図1に関し、実行パイプライン4および制御ユニット6を有するプログラム可能なプロセッサ2が図示される。制御ユニット6はハードウェア・ループ・ユニット8を含む。
【0057】
ハードウェア・ループ・ユニット8は、直列に接続された1またはそれ以上のセットのループ・バッファを含む。さらに、ハードウェア・ループ・ユニットは、1またはそれ以上の単一の命令ループ・レジスタを含む。ループ・バッファおよび/またはループ・レジスタの集合体は、全体としてループ・ハードウェアである。この集合体は高速なハードウェア・ループを助長する。
【0058】
再び図5に関し、パイプライン10の命令フェッチ・ユニット50およびデコーダ・ユニット52に接続されたハードウェア・ループ・ユニット8の実施例を示すブロック図が示される。命令フェッチ・ユニット50は、ハードウェア・ループ・ユニット8への多くの入力のうちの1つを提供する。ハードウェア・ループ・ユニット8は、ループ・ハードウェア54に接続されたマルチプレクサ56を含む。ループ・ハードウェア54は、1またはそれ以上のセットのループ・バッファおよび/または1またはそれ以上のループ・レジスタを含む。さらに、ループ・バッファのセットは、直列に接続された定義された数のバッファを含む。ループ・バッファのセットのそれぞれが、関連するループ・レジスタを有する。
【0059】
図14は、ハードウェア・ループ・ユニット8の一実施例を示す別のブロック図である。再び、ハードウェア・ループ・ユニット8は、命令フェッチ・ユニット50およびデコーダ(図示されない)に接続される。
【0060】
ハードウェア・ループ・ユニット8は、ループ・ハードウェアに接続されたマルチプレクサ260を含む。ループ・ハードウェアは、直列に接続されたループ・バッファ271,272,273,274のセットを含む。これらのバッファは、他のマルチプレクサ280に入力を提供する。また、マルチプレクサ260,280は、マルチプレクサ290に入力を提供する。マルチプレクサ290の出力はループ・レジスタ296に接続され、それがマルチプレクサ260の入力に接続される。ハードウェア・ループ・ユニット8の出力はデコーダに入力を提供する。
【0061】
マルチプレクサ260は複数の入力を有する。これらは、レジスタ(例えばエミュレータ命令レジスタ)からの入力、およびフェッチ・ユニット50からの入力を含む。さらに、マルチプレクサ260は、ループ命令レジスタからの入力、および1またはそれ以上の他のハードウェア・ループ・ユニットからの入力を有する。
【0062】
典型例として、図14は、4階層のループ・バッファのセットおよび単一の命令レジスタで構成されたループ・ハードウェアを示す。しかしながら、いかなる数のバッファおよび/または命令レジスタも他の実施例での中で使用することができる。
【0063】
動作モードの典型例は、ループ・バッファが2つの異なるシナリオで実行される。1つのシナリオでは、ループ内のすべての命令がループ・バッファに適合する。他のシナリオでは、ループ内のすべての命令がループ・バッファに適合するとは限らない。以下、各シナリオについて順番に述べる。
【0064】
図15は、1つのシナリオを示す図である。図示のように、4階層のループ・バッファのセットが3つの命令ループ(I2−I4)でロードされる。そのため、ループ・バッファの1つおよびVTopレジスタは、いかなるデータによってもロードされない。ループの出口条件が満たされるまで、命令I2−I4は何度も実行される。図示のように、I4命令がループ・バッファから送出されるたびに、出口条件がチェックされる。
【0065】
図16は、1つのシナリオを示すフロー図である。図示のように、命令が送出され(300)、命令がループ・バッファのセットにロードされ(302)、メモリ・デバイスが停止させられる(304)。メモリを停止することによって、DSPシステムに省電力を提供することができる。命令をバッファのセットにロードした後(302)、命令が、バッファのセットから続いて送出される(306)。ループの出口条件が満たされるまで、その命令が何度も繰り返して送出される(308)。
【0066】
図17は、1つのシナリオを示す他のフロー図である。図示のように、命令が送出され(310)、命令がループ・バッファのセットにロードされ(314)、メモリ・デバイスが停止され(316)、ループ・カウントが初期化される(312)。ループの出口条件が満たされない限り(318)、ループ・カウントがディクリメントされ(320)、命令がループ・バッファのセットから送出される(322)。ループ・カウントが定義された数Xに達するまで、メモリ・デバイスが停止させられる(316)。さらに、ループが終了したときに、ループの後の次の命令がフェッチ・ユニット内で直ちに準備できるように、Xを定義し得る。このようにして、ループ出口ペナルティを回避することができる。
【0067】
他の実施例では、ループ・カウントが0に初期化される(312)。そして、調整(320)は、図17で示されるようにループ・カウントをディクリメントするのではなく、インクリメントするであろう。なお、他の実施例は、図15−図17に照らして明らかになるであろう。
【0068】
図18は、他のシナリオを示す図である。図示のように、4階層のループ・バッファのセットが、ループの4つの命令(I2−I5)でロードされる。さらに、VTopレジスタが、ループ内の次の命令のアドレスでロードされる。VTopは、パイプライン内に存在するアドレス・レジスタである(図2、37を参照)。ループの次の繰り返し中に、命令I2−I5は、I6がフェッチされている一方で実行される。そして、I5が実行された後に、I6が直ちに実行できるように準備される。出口条件は、ループの繰り返し中にチェックされる。
【0069】
図19は、図18のシナリオを示すフロー図である。図示のように、命令の第1サブセットがバッファのセットにロードされ(330)、同時に命令の第1セットが送出される(332)。次に、命令の第2サブセットの開始アドレスがレジスタにロードされ(334)、第2サブセットが送出される(336)。ループの続く繰り返し中に(出口条件によって定義された繰り返しの数(338))、命令の第1サブセットがバッファのセットから送出され(340)、その一方で第2サブセットがフェッチされる(342)。その後、第2サブセットが送出される(344)。
【0070】
図19に従った動作モードには、いくつかの利点が認められる。例えば、第1サブセットがバッファのセットから送出されるたびに、メモリ・デバイスがファイアリングしていない場合には、電力が節約される。さらに、第1サブセットが送出されている一方で他のサブセットをフェッチするので、ループ・ペナルティを最小限にできる。一実施例において、ループ・バッファは、少なくとも分岐ペナルティに対応する深さを有する。したがって、第2サブセットをフェッチすることに関連するペナルティは、命令の第1サブセットの発行の裏に隠される。これによって、DSPシステムの速度が増加される。しかしながら、他の実施例において、省電力がより重要な設計上の特徴である場合(例えば、バッテリで電力を供給される装置内で実行される回路のため)には、より深いバッファがより有用である。
【0071】
命令の第1サブセットは、ループ・バッファのセット内に適合する命令の数である。命令の第2サブセットは、バッファ内でロードしたこれらの命令に続くループ内の次の命令である。あるいは、第2サブセットは、バッファ内でロードしたこれらの命令に続く複数の命令である。
【0072】
図20は、上述のシナリオを示す、より一般的なフロー図である。図示のように、命令の第1サブセットがバッファのセットにロードされ(350)、かつ送出される(352)。ループのすべての命令がループ・バッファに適合する場合(354)、メモリ・デバイスが停止され(355)、そして、出口条件が満たされるまで(358)、命令がバッファのセットから連続的に送出される(356)。
【0073】
ループのすべての命令がループ・バッファ(354)に適合するとは限らない場合、命令の第2サブセットが送出され(360)、これらの命令の開始アドレスがレジスタにロードされる(362)。ループの続く繰り返しにおいて(出口条件によって定義されたように(364))、第2サブセットがメモリからフェッチされ(366)、その一方で命令の第1サブセットがバッファのセットから送出される(368)。その後、第2サブセットが送出される(370)。
【0074】
図18のシナリオでは、VTopによって示されたアドレスの要求が、ボトム・マッチがある度に行われる。このように、命令の第1サブセットは、命令の第2サブセットをフェッチする間に送られる。
【0075】
ループ内の命令の第1のサブセットが送られる時までに、キャッシュ/メモリは既にアクセスされ、命令の第2サブセットでアライメント・バッファがプライムされている。アライメント・バッファは、複数の命令を保持する(各命令の幅に依存して)。第2サブセットが複数命令を含む場合、その複数命令は、VTopレジスタに関連する命令である第2サブセットの第1命令によってアライメント・バッファ内で整えられる。
【0076】
動作は、VTopと関連する命令に続く次の命令を要求することをさらに含み、一方でVTopに関連する命令が送られる。例えば、1つの動作モードにおいて、VTopに関連する命令は64ビットの命令である。その64ビットの命令が送られるとき、次の64ビットの命令(メモリ内でアライメントによって定義されたように)がフェッチされる。これを何度も繰り返すことによって、DSPシステムは迅速かつ効率的な方法で命令を送ることができる。
【0077】
ハードウェア・ループを実行する先行技術のプログラム可能なプロセッサ・システムは、動作コード内に多くの制限を要求する。しかしながら、プログラム上の制限がほどんど無いシステムが、ハードウェア・ループのために大いに望まれる。ある実施例において、本発明に従うシステムは、ただ1つのプログラミング制限を有する。この1つの制限とは、システムがループ・ボトム上に分岐を持つことができないことである。
【0078】
高速ハードウェア・ループは、ループ・バッファが無効を要求する状態を有する。ループ・バッファが条件付き分岐で占められている場合、これらの状態は無効を含む。したがって、1つの動作モードにおいて、ループ内の最初のn個の命令のうちの1つが条件付き分岐である場合、ループ・バッファのセットは無効にされる。可変数nは、ループ・バッファのセットの深さを定義する。
【0079】
ループ・バッファが無効を要求する他の状態は、ループ・バッファがロードされている間に、いつイベントが受け付けられるかである。さらに、ループ・バッファは、自己修正コードのためのC_SYNCに続く無効を要求する。したがって、他の動作モードは、これら2つの状態のどちらかが発生するときに、ループ・バッファを無効にすることを含む。
【0080】
ゼロ・オフセット・ループは、更なる課題を導入する。オフセットは、ループ・セットアップ命令と、ループ内の第1または最後の命令との間の距離を参照する。
先行技術のシステムでは、オフセットは、ハードウェア・ループのセットアップを促進するため、またはシステム内の例外をプログラムことを説明するために必要である。しかしながら、ゼロ・オフセット・ループを促進することは、それが処理時間を減少することができるので、非常に有利である。
【0081】
早期レジスタおよびループ・バッファを実行するシステム内でさえ、ゼロ・オフセット・ループは課題を発生させる。例えば、上述のシステムにおいて、早期レジスタが書き込まれる(例えばEx1内で)時までに、ゼロ・オフセット・ループの第1命令が既にACにある。したがって、EtopおよびEbotが書き込まれる前であっても、ループの始まりがDECを出るので、回路は効果的にトップ・マッチを「ミス(miss)」する。
【0082】
特別の動作モードおよび回路構成は、ゼロ・オフセット・ループで検出し、かつ取り扱うために設計されてきた。1つの動作モードでは、ループ・セットアップ命令内の開始オフセット(S−オフセット)は、ゼロ・オフセットを検出するために既知の値と比較される。このようにして、ゼロ・オフセット・ループの早期検出が促進される。特別の実施例では、S−オフセットは4と比較されるが、ここで、4は32ビットの命令を4バイトを参照する。一旦検出されると、早期レジスタが書き込まれる前であっても、ゼロ・オフセット・ループがセット・アップされる。
【0083】
図21は、ゼロ・オフセット・ループを検出するための動作モードを示すフロー図である。図示のように、ループ・セットアップ命令がデコードされる(380)。そして、s−オフセットが、定義された数と比較される(定義された数はループ・セットアップ命令の幅に対応する)(382)。このようにして、早期レジスタが書き込まれる前であっても、ゼロ・オフセット・ループを検出することができる。ゼロ・オフセット・ループが検出された場合は(384)、上述のように、ループ内の次のn個の命令が送出されて、ループ・バッファ内にロードされる(386)。
【0084】
図22は、単一命令のゼロ・オフセット・ループの特別なケースを検出し、取り扱うための動作モードを示すフロー図である。図示のように、ループ・セットアップ命令がデコードされる(388)。ゼロ・オフセットが検出され(390)、開始オフセットが終了オフセットと等しい場合は(392)、単一の命令ループが直ちに実行される(394)。s−オフセットがループ・セットアップ命令の幅と等しいとき、ゼロ・オフセットが検出される。s−オフセットとe−オフセットが同一である場合は、単一の命令ループが検出される。
【0085】
特別のハードウェアは、単一の命令ループをできるだけ速くセット・アップし、実行することを促進する。再び図14に関し、ループ・レジスタ296は、この特別なケースに使用することができる。したがって、ステップ(394)は、単一の命令でループ・ハードウェア(例えば、ループ・レジスタ296のような)をロードすることによって実行され、そして単一の命令ループの出口条件が満たされるまで、繰り返しハードウェア・ループ・ユニット8からその命令を送出する。
【0086】
単一の命令ループが検出され、そして特別のループ命令レジスタ296(図14参照)内のデコード内に命令を保持することによって実行される。さらに、メモリ・デバイスはアクセスされず、また、上流のすべてのものは、電力を節約するためにに停止される。さらに、単一の命令ループがループ命令レジスタ296から送出されるので、命令フェッチ・ユニット50は、次の命令(例えばキャッシュからの)を自由にフェッチすることができる。したがって、単一の命令ループが実行を終了したとき、次の命令は既に命令フェッチ・ユニット50内にあり、その結果、ループの出口ペナルティはゼロとなる。
【0087】
要約すると、ゼロ・オフセットのハードウェア・ループは3つのケースに分けられる。第1のケースでは、ゼロ・オフセットの単一命令ループは、ループ命令レジスタを介してデコードから直ちに送出される。第2のケースでは、ゼロ・オフセットのn−命令ループは直ちに検出され、ループ・バッファのn階層のセットに完全にロードされる。3番目のケースでは、ゼロ・オフセットのループは直ちに検出され、そのループの最初のn個の命令がループ・バッファのn階層のセットにロードされる。そして、次の命令は、VTopレジスタと関連する。
【0088】
一実施例において、ここに記述されるようなループ・ハードウェアは、パイプライン内で実行される。これは、キャッシュ内でバッファを実行するよりもはるかに有利である。
【0089】
1つの動作モードにおいて、ループ命令は、その命令が命令境界へアライメントするようなループ・ハードウェア内に格納される。これは、命令をアドレス境界へアライメントするよりも有利である。一旦ループ・ハードウェア内の命令境界へアライメントされると、命令がループ・ハードウェアから続いて送出されるときに、命令のアライメントは必要でない。
【0090】
命令境界へ命令をアライメントするために、1セットの命令が、実行順にループ・ハードウェア内へロードされ、次の命令のアドレスがアドレス・レジスタに格納される。さらに、命令の第2セットが、実行順にメモリ・デバイスにロードされる。実行順にループ・ハードウェア内へ命令ロードすることは、n個の連続する命令をn個のバッファへロードすることを含むが、ここで、nは正の整数である。さらに、n個の連続する命令は、ループの最初のn個の命令またはループの最後のn個の命令を含む任意の連続する命令である。
【0091】
他の実施例(図23A−図23Cに図示)では、多くのハードウェア・ループ・ユニットが実行される。ハードウェア・ループ・ユニットの数のうちのいずれかの出力は、1またはそれ以上の他のハードウェア・ループ・ユニットのそれぞれの入力に接続される。このようにして、第2ハードウェア・ループ・ユニットは、第1ハードウェア・ループ・ユニットの出力を介してロードされる。これもまた、メモリ・デバイスが第2ハードウェア・ループ・ユニットをロードするために立ち上げられない限り、省電力を提供する。
【0092】
あるケースでは、複数のループ・ユニットが、入れ子のループ(あるいは一致するループ)を処理するために使用される。内部のハードウェア・ループ・ユニットは、外部のハードウェア・ループ・ユニット内でアライメントする1またはそれ以上の命令を保持する。さらに、内部のハードウェア・ループ・ユニットは、外部のハードウェア・ループ・ユニットから内部のハードウェア・ループ・ユニットの入力へアライメントされた命令を送ることによってロードされる。
【0093】
さらに他の実施例では、独立した複数のハードウェア・ループ・ユニットが実行される。しかしながら、2またはそれ以上の独立したハードウェア・ループ・ユニットが同一のDSPシステム内で使用される場合は、制限が使用される。例えば、両方のループが同一のボトム命令を有しているとき、ループの1つが外部ループとして定義される。この制限がなければ、回路は2つのボトム・マッチに遭遇し、いずれをディクリメントすべきか判らなくなる。
【0094】
さらに他の動作モードは、ハードウェア・ループのパワー・マネージメントを含む。ハードウェア・ループが可能になるとき、ETopレジスタが、個々のトップ・マッチを説明するためにPCと比較される。同様に、EBotレジスタが、各ボトム・マッチを説明するためにPCと比較される。しかしながら、ハードウェア・ループが不能になるとき、比較器回路内のいかなるスイッチングも、単なる電力の浪費となる。したがって、ハードウェア・ループが不能になるときは、ボトム・マッチおよびトップ・マッチの比較器回路を不能にすることが有利である。ハードウェア・ループが不能になるときに、比較器を不能にする比較器の入力を選ぶことによって、電力が保存される。
【0095】
図24は、省電力回路を示す典型的な実施例である。ETopレジスタ400およびEBotレジスタ402はそれぞれ、多くの入力のうちの1つをマルチプレクサ404,406へ提供する。マルチプレクサ404,406の出力は、比較器408,410への入力である。比較器408,410への他の入力は、マルチプレクサ412の出力から送出される。マルチプレクサ412の入力は、プログラム・カウンタ414から送出され、ループ不能信号416は制御ユニットから送出される。マルチプレクサ404,406,412は、ハードウェア・ループが不能であるときのようにアライメントされ、マルチプレクサ412の出力は、マルチプレクサ404,406の出力とは異なる。これは、ハードウェア・ループが不能であるときに、比較器408,410内でスイッチングが生じないことを保証する。
【0096】
一実施例において、同一のループ不能信号416が、マルチプレクサ404,406,412に送られる。しかしながら、マルチプレクサ412が信号を受信する前に、インバータ(図示せず)がビットを反転する。このように、ループ不能信号が回路に送られるときに、マルチプレクサ412の出力はマルチプレクサ404,406の出力と異なる。
【0097】
図24はまた、ECntレジスタ418をインクリメントするための典型的な回路を図示する。ループの各パスにおいて、マルチプレクサ420がECntレジスタをディクリメントする。しかしながら、調整が必要な場合、調整信号(例えばクロッバ・カウント422)が、それに合うようにECntを調整する。従って、一旦ループがその最後の繰り返しを終了すると、比較器424が指示されたように信号425を送る。
【0098】
図24は、さらに、ボトム・マッチおよびトップ・マッチがどのように検出されるかを示す。比較器410が、プログラム・カウンタ412およびETopレジスタが同一の値を有することを検出したときは、トップ・マッチ信号428が送られる。比較器408が、プログラム・カウンタおよびEBotレジスタが同一の値を有することを検出したときは、ボトム・マッチ信号430が送られる。
【0099】
最後に、図24は、さらに、パイプライン内で実行されたVTopレジスタ432を図示する。ここで記述されたように、VTopは、ループ・ハードウェア(図示されない)にロードされた複数の命令に続く次の命令のアドレスを保持するアドレス・レジスタである。
【0100】
発明の多様な実施例が記述された。例えば、プロセッサ内の実行のための多くのハードウェア・ループ技術が記述された。プロセッサは、汎用コンピュータ・システム、ディジタル処理システム、ラップトップ・コンピューター、個人用デジタル情報処理端末(PDA)および携帯電話を含む多種多様のシステムで実行される。これに関連して、上述のハードウェア・ループは、電力消費を著しく増加することなく、処理速度を増加させるために容易に使用することができる。このようなシステムでは、プロセッサは、FLASHメモリ・デバイス、または、オペレーティング・システムおよび他のソフトウェア・アプリケーションを格納するスタティック・ランダム・アクセス・メモリ(SRAM)のようなメモリ・デバイスに結合される。これらおよび他の実施例は、添付の請求項の範囲内である。
【図面の簡単な説明】
【図1】本発明の実施例に従って、パイプライン方式のプログラム可能なプロセッサの例を図示するブロック図である。
【図2】本発明の実施例に従って、プログラム可能なプロセッサのための実行パイプラインの一例を図示するブロック図である。
【図3】本発明の実施例に従って、早期レジスタがいつロードされるかの典型的なタイミングを図示するフロー図である。
【図4】本発明の実施例に従って、早期レジスタ値を決定するために、ループ・セットアップ命令がどのように使用されるか図示するフロー図である。
【図5】ハードウェア・ループ・ユニットの一実施例を図示する回路ブロック図である。
【図6】本発明に従って、早期レジスタの調整に関する動作モードを図示するフロー図である。
【図7】本発明の実施例に従って、構成レジスタ値を更新する方法を図示するフロー図である。
【図8】本発明の実施例に従って、構成上のカウント・レジスタ値を更新する代替方法を図示するフロー図である。
【図9】本発明の実施例に従って、早期レジスタの使用によって実現されたタイミング利点を図示するフロー図である。
【図10】本発明の実施例に従って、早期カウント値を調整する効率的な方法を図示するフロー図である。
【図11】本発明の実施例に従って、回路中のカウンタを図示するブロック図である。
【図12】本発明の実施例に従って、ハイブリッドの動作モードを図示するフロー図である。
【図13】本発明の実施例に従って、第1のn−1実行ステージにのみカウンタを有するハイブリッド回路を図示するブロック図である。
【図14】本発明の実施例に従って、ハードウェア・ループ・ユニットを図示するブロック図である。
【図15】本発明の実施例に従うシナリオを図示するダイヤグラムである。
【図16】本発明の実施例に従うシナリオを図示するフロー図である。
【図17】本発明の実施例に従うシナリオを図示する別のフロー図である。
【図18】本発明の実施例に従う別のシナリオを図示するダイヤグラムである。
【図19】他のシナリオを図示するフロー図である。
【図20】本発明の実施例に従って、両方のシナリオを図示するフロー図である。
【図21】本発明の実施例に従って、ゼロ・オフセット・ループを検出するための動作モードを図示するフロー図である。
【図22】本発明の実施例に従って、単一命令のゼロ・オフセット・ループを検知しかつ扱うための動作モード図示するフロー図である。
【図23A】本発明の実施例に従って、互いに接続された多くのハードウェア・ループ・ユニットを図示するブロック図である。
【図23B】本発明の実施例に従って、互いに接続された多くのハードウェア・ループ・ユニットを図示するブロック図である。
【図23C】本発明の実施例に従って、互いに接続された多くのハードウェア・ループ・ユニットを図示するブロック図である。
【図24】本発明の実施例に従って、電力削減回路を示すブロック図である。
Claims (45)
- ループのループ条件を推論的なレジスタのセットにロードする段階と、
前記ループ条件に基づいてプロセッサ内のループを実行する段階と、
から成ることを特徴とする方法。 - 前記方法は、前記ループ条件が構成レジスタのセットに書き込まれる前に、前記推論的なレジスタから前記ループ条件を検出する段階をさらに含むことを特徴とする請求項1記載の方法。
- 前記方法は、前記推論的なレジスタ内にロードされた前記ループ条件を使用して、ハードウェア・ループをセットアップする段階をさらに含むことを特徴とする請求項2記載の方法。
- 前記方法は、前記推論的なレジスタ内に収容された情報に基づいて前記ループを早期に終了する段階をさらに含むことを特徴とする請求項2記載の方法。
- 前記プロセッサは、多重ステージ実行パイプラインを含み、前記方法は、前記パイプライン内の命令の終了に続いて前記推論的なレジスタの少なくとも1つの値を調整する段階をさらに含むことを特徴とする請求項2記載の方法。
- 前記推論的なレジスタのセットは、早期トップ・レジスタを含み、前記構成レジスタのセットは、構成トップ・レジスタを含み、前記方法は、前記パイプライン内の少なくとも1つの命令の終了に続いて前記構成トップ・レジスタに収容されたデータで前記早期トップ・レジスタを調整する段階をさらに含む請求項5記載の方法。
- 前記推論的なレジスタのセットは、早期ボトム・レジスタを含み、前記構成レジスタのセットは、構成ボトム・レジスタを含み、前記方法は、前記パイプライン内の少なくとも1つの命令の終了に続いて前記構成ボトム・レジスタに収容されたデータで前記早期ボトム・レジスタを調整する段階をさらに含む請求項5記載の方法。
- 前記推論的なレジスタのセットは、早期カウント・レジスタを含み、前記方法が、前記パイプライン内の少なくとも1つの命令の終了に続いて早期カウント・レジスタを調節する段階をさらに含む請求項5記載の方法。
- 制御ユニットと、
早期レジスタのセットと、
構成レジスタのセットであって、各構成レジスタが早期レジスタにそれぞれ関連する、構成レジスタと、
から構成されることを特徴とする装置。 - 前記制御ユニットは、前記早期レジスタのセットにループのループ条件をロードするために適合されることを特徴とする請求項9記載の装置。
- 前記制御ユニットは、ハードウェア・ループをセットアップするために前記早期レジスタのセットにロードされた前記ループ条件を使用するために適合されることを特徴とする請求項10記載の装置。
- 前記制御ユニットは、前記ループ条件が構成レジスタのセットに書き込まれる前に、前記ループ条件を前記早期レジスタのセットから検出するために適合されることを特徴とする請求項10記載の装置。
- 前記早期レジスタは、ループのトップ命令を指示する早期トップ・レジスタを含むことを特徴とする請求項9記載の装置。
- 前記早期レジスタは、ループのボトム命令を指示する早期ボトム・レジスタを含むことを特徴とする請求項9記載の装置。
- 前記早期レジスタは、ループの多数の繰り返しを指定する早期カウント・レジスタを含むことを特徴とする請求項9記載の装置。
- 前記制御ユニットは、前記早期レジスタのセット内に収容される情報に基づいて前記ループを早期に終了するために適合されることを特徴とする請求項10記載の装置。
- 前記制御ユニットは、終了に続いて前記早期レジスタの少なくとも1つの値を調整するために適合されることを特徴とする請求項10記載の装置。
- 前記装置は実行パイプラインを含み、前記早期レジスタのセットが早期トップ・レジスタを含み、前記構成レジスタのセットが構成トップ・レジスタを含み、前記制御ユニットが、前記パイプライン内の少なくとも1つの命令の終了に続いて前記構成トップ・レジスタ内に収容されたデータで前記早期トップ・レジスタを調整するために適合されることを特徴とする請求項17記載の装置。
- 前記装置は実行パイプラインを含み、前記早期レジスタのセットが早期ボトム・レジスタを含み、前記構成レジスタのセットが構成ボトム・レジスタを含み、前記制御ユニットが、前記パイプライン内の少なくとも1つの命令の終了に続いて前記構成ボトム・レジスタ内に収容されたデータで前記早期トップ・レジスタを調整するために適合されることを特徴とする請求項17記載の装置。
- 前記装置は実行パイプラインを含み、前記早期レジスタのセットが早期カウント・レジスタを含み、前記制御ユニットが、前記パイプライン内の少なくとも1つの命令の終了に続いて前記早期カウント・レジスタを調整するために適合されることを特徴とする請求項17記載の装置。
- SRAMメモリ・デバイスと、
早期レジスタのセットと、
前記メモリ・デバイスに結合されたプロセッサであって、前記プロセッサが実行パイプライン、および、前記早期レジスタのセットにループのループ条件をロードするために適合された制御ユニットを含む、プロセッサと、
から構成されることを特徴とするシステム。 - 構成レジスタのセットをさらに含み、制御ユニットは、前記ループ条件が前記構成レジスタのセットに書き込まれる前に、前記ループ条件を前記早期レジスタから検出するために適合されることを特徴とする請求項21記載のシステム。
- 制御ユニットは、パイプライン内の少なくとも1つの命令の終了に続いて前記早期レジスタの少なくとも1つの値を調整するために適合されることを特徴とする請求項21記載のシステム。
- 前記早期レジスタのセットは、ループのトップ命令を指示する早期トップ・レジスタを含むことを特徴とする請求項21記載のシステム。
- 前記早期レジスタのセットは、ループの最終命令を指示する早期ボトム・レジスタを含むことを特徴とする請求項21記載のシステム。
- 前記早期レジスタのセットは、ループの多数の繰り返しを指定する早期カウント・レジスタを含むことを特徴とする請求項21記載のシステム。
- ループのループ条件を、ループ・セットアップ命令からパイプライン内のレジスタの第1セットにロードする段階と、
前記命令が前記パイプラインに引き渡され、かつ、前記ループ条件がレジスタの第2セットに書き込まれる前に、前記ループ条件を前記レジスタの第1セットからの検出する段階と、
から成ることを特徴とする方法。 - 前記方法は、前記パイプライン内の命令の終了に続いて前記レジスタの第1のセット内の少なくとも1つのレジスタの値を調整する段階をさらに含むことを特徴とする請求項27記載の方法。
- ハードウェア・ループが処理可能であるときに、ループ・レジスタをプログラム・カウンタと比較する段階と、
前記ハードウェア・ループが処理不能であるときに、比較器を不能にする段階と、
から成ることを特徴とする方法。 - ループ・レジスタをプログラム・カウンタと比較する段階が、ループ内の前記第1命令を指示するレジスタをプログラム・カウンタと比較する段階を含むことを特徴とする請求項29記載の方法。
- ループ内の前記第1命令を指示するレジスタをプログラム・カウンタと比較する段階が、早期トップ・レジスタをプログラム・カウンタと比較する段階を含むことを特徴とする請求項30記載の方法。
- ループ・レジスタをプログラム・カウンタと比較する段階が、ループ内の最終命令を指示するレジスタをプログラム・カウンタと比較する段階を含むことを特徴とする請求項29記載の方法。
- ループ内の最終命令を指示するレジスタをプログラム・カウンタと比較する段階が、早期ボトム・レジスタをプログラム・カウンタと比較する段階を含むことを特徴とする請求項32記載の方法。
- 第1マルチプレクサの入力に結合されたレジスタと、
第2マルチプレクサの入力に結合されたプログラム・カウンタと、
前記第1および第2マルチプレクサの出力に結合された比較器と、
ハードウェア・ループが処理不能であるときに、前記第1および第2マルチプレクサから逆信号を出力するために適合される制御ユニットと、
から構成されることを特徴とする装置。 - 前記制御ユニットは、前記ハードウェア・ループが処理可能であるときに、前記第1マルチプレクサを通って前記レジスタのデータ、および前記第2マルチプレクサを通って前記プログラム・カウンタのデータを出力するために適合されることを特徴とする請求項34記載の装置。
- 前記レジスタが第1レジスタであり、前記比較器が第1比較器であり、回路が、
第3マルチプレクサの前記入力に結合された第2レジスタ、および
前記第2および第3マルチプレクサの出力に結合された第2比較器をさらに含み、
前記制御ユニットが、ハードウェア・ループが処理不能であるときに、前記第2および第3マルチプレクサから逆信号を出力するために適合される、
ことを特徴とする請求項34記載の装置。 - 前記レジスタは、ループ内の第1命令を指示するレジスタであることを特徴とする請求項34記載の装置。
- 前記レジスタは、早期トップ・レジスタであることを特徴とする請求項37記載の装置。
- 前記レジスタは、ループの最終命令を指示するレジスタであることを特徴とする請求項34記載の装置。
- 前記レジスタは、早期ボトム・レジスタであることを特徴とする請求項39記載の装置。
- SRAMメモリ・デバイスと、
ループ・レジスタと、
プログラム・カウンタと、
比較器と、
前記メモリ・デバイスに結合されたプロセッサであって、前記プロセッサは、
ハードウェア・ループが処理可能であるとき、前記ループ・レジスタをプログラム・カウンタと比較し、かつ、
前記ハードウェア・ループが処理不能であるとき、前記比較器を処理不能にするために適合される制御ユニットを含む、プロセッサと、
から構成されることを特徴とするシステム。 - 前記ループ・レジスタは、ループ内の第1命令を指示するレジスタであることを特徴とする請求項41記載のシステム。
- 前記ループ・レジスタは、早期トップ・レジスタであることを特徴とする請求項42記載のシステム。
- 前記ループ・レジスタは、ループの最終命令を指示するレジスタであることを特徴とする請求項41記載のシステム。
- 前記レジスタは、早期ボトム・レジスタであることを特徴とする請求項44記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/705,070 US6766444B1 (en) | 2000-11-02 | 2000-11-02 | Hardware loops |
PCT/US2001/046063 WO2002037270A2 (en) | 2000-11-02 | 2001-10-31 | Hardware loops |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004513426A true JP2004513426A (ja) | 2004-04-30 |
JP3739357B2 JP3739357B2 (ja) | 2006-01-25 |
Family
ID=24831911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002539954A Expired - Lifetime JP3739357B2 (ja) | 2000-11-02 | 2001-10-31 | ハードウェア・ループ |
Country Status (6)
Country | Link |
---|---|
US (1) | US6766444B1 (ja) |
JP (1) | JP3739357B2 (ja) |
KR (1) | KR100536018B1 (ja) |
CN (1) | CN100380316C (ja) |
TW (1) | TWI227854B (ja) |
WO (1) | WO2002037270A2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002149402A (ja) * | 2000-11-14 | 2002-05-24 | Pacific Design Kk | データ処理装置およびその制御方法 |
US7065636B2 (en) | 2000-12-20 | 2006-06-20 | Intel Corporation | Hardware loops and pipeline system using advanced generation of loop parameters |
US20050102659A1 (en) * | 2003-11-06 | 2005-05-12 | Singh Ravi P. | Methods and apparatus for setting up hardware loops in a deeply pipelined processor |
US7272704B1 (en) * | 2004-05-13 | 2007-09-18 | Verisilicon Holdings (Cayman Islands) Co. Ltd. | Hardware looping mechanism and method for efficient execution of discontinuity instructions |
CN101065725A (zh) * | 2004-11-25 | 2007-10-31 | 松下电器产业株式会社 | 命令供给装置 |
US9052910B2 (en) * | 2007-10-25 | 2015-06-09 | International Business Machines Corporation | Efficiency of short loop instruction fetch |
US9772851B2 (en) * | 2007-10-25 | 2017-09-26 | International Business Machines Corporation | Retrieving instructions of a single branch, backwards short loop from a local loop buffer or virtual loop buffer |
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 |
WO2013069551A1 (ja) | 2011-11-09 | 2013-05-16 | 日本電気株式会社 | デジタル信号プロセッサ、プログラム制御方法、および制御プログラム |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US530355A (en) * | 1894-12-04 | Neck-ybke attachment | ||
US5303355A (en) | 1991-03-27 | 1994-04-12 | Motorola, Inc. | Pipelined data processor which conditionally executes a predetermined looping instruction in hardware |
US5421020A (en) | 1993-01-08 | 1995-05-30 | International Business Machines Corporation | Counter register implementation for speculative execution of branch on count instructions |
US6116768A (en) | 1993-11-30 | 2000-09-12 | Texas Instruments Incorporated | Three input arithmetic logic unit with barrel rotator |
US6058473A (en) * | 1993-11-30 | 2000-05-02 | Texas Instruments Incorporated | Memory store from a register pair conditional upon a selected status bit |
US5724565A (en) * | 1995-02-03 | 1998-03-03 | International Business Machines Corporation | Method and system for processing first and second sets of instructions by first and second types of processing systems |
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 |
US5710913A (en) * | 1995-12-29 | 1998-01-20 | Atmel Corporation | Method and apparatus for executing nested loops in a digital signal processor |
US6571385B1 (en) * | 1999-03-22 | 2003-05-27 | Intel Corporation | Early exit transformations for software pipelining |
US6598155B1 (en) * | 2000-01-31 | 2003-07-22 | Intel Corporation | Method and apparatus for loop buffering digital signal processing instructions |
-
2000
- 2000-11-02 US US09/705,070 patent/US6766444B1/en not_active Expired - Lifetime
-
2001
- 2001-10-31 KR KR10-2003-7005950A patent/KR100536018B1/ko active IP Right Grant
- 2001-10-31 CN CNB018183999A patent/CN100380316C/zh not_active Expired - Fee Related
- 2001-10-31 WO PCT/US2001/046063 patent/WO2002037270A2/en active IP Right Grant
- 2001-10-31 JP JP2002539954A patent/JP3739357B2/ja not_active Expired - Lifetime
- 2001-11-01 TW TW090127157A patent/TWI227854B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR100536018B1 (ko) | 2005-12-14 |
WO2002037270A2 (en) | 2002-05-10 |
TWI227854B (en) | 2005-02-11 |
KR20030081324A (ko) | 2003-10-17 |
CN1473294A (zh) | 2004-02-04 |
US6766444B1 (en) | 2004-07-20 |
JP3739357B2 (ja) | 2006-01-25 |
CN100380316C (zh) | 2008-04-09 |
WO2002037270A3 (en) | 2003-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7028165B2 (en) | Processor stalling | |
US5404552A (en) | Pipeline risc processing unit with improved efficiency when handling data dependency | |
US5822602A (en) | Pipelined processor for executing repeated string instructions by halting dispatch after comparision to pipeline capacity | |
JP2000222206A (ja) | データ処理装置 | |
JP3787329B2 (ja) | ハードウェア・ループ | |
JP3737802B2 (ja) | ハードウェア・ループ | |
JP3739357B2 (ja) | ハードウェア・ループ | |
JP3578883B2 (ja) | データ処理装置 | |
JP3738253B2 (ja) | プログラム・ループを並列に処理する方法および装置 | |
JPH04153734A (ja) | 並列処理装置 | |
JP4110137B2 (ja) | アドレスレジスタの内容をスワップするための方法および装置 | |
US8307195B2 (en) | Information processing device and method of controlling instruction fetch | |
JP3759729B2 (ja) | スペキュレーティブ・レジスタの調整 | |
JPH10124312A (ja) | 中央処理装置 | |
Parthasarathy | Performance measures of superscalar processor | |
JP3568737B2 (ja) | 条件実行命令を備えるマイクロプロセッサ | |
JP3493110B2 (ja) | 高速分岐処理装置 | |
JP2002123389A (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050314 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050318 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050606 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050704 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050929 |
|
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: 20051021 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20051101 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3739357 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 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: 20081111 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: 20091111 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: 20091111 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101111 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: 20111111 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: 20111111 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121111 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: 20121111 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131111 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 |
|
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 |