(57)【要約】ある実施例において、プログラム可能なプロセッサはループ・セットアップ命令を支援するために形成される。ループ・セットアップ命令がデコードされ、ゼロ・オフセット・ループがループ・セットアップ命令から検出される。その後、命令ストリーム内の次の命令が、ループ内の第１命令として直ちに送出される。さらに、ループ・セットアップ命令は、単一の命令ループを検出するために使用される。
2004514985.tif 000002
【特許請求の範囲】
【請求項１】
ループ・セットアップ命令をデコードする段階と、
前記ループ・セットアップ命令からゼロ・オフセット・ループを検出する段階と、
ループ中の第１命令として前記ループ・セットアップ命令に続く次の命令を送出する段階と、
から成ることを特徴とする方法。
【請求項２】
前記ゼロ・オフセット・ループが、前記ループのループ条件がレジスタのセットに書き込まれる前に、検出されることを特徴とする請求項１記載の方法。
【請求項３】
前記方法は、
命令をループ・ハードウェアにロードする段階をさらに含み、前記ループ・ハードウェアへロードされる前記第１命令が、前記ループ・セットアップ命令に続く前記次の命令であることを特徴とするに請求項１記載の方法。
【請求項４】
前記方法は、
前記ループの後続の繰り返し中に、前記命令のうちの少なくともいくつかを前記ループ・ハードウェアから送出する段階、
をさらに含むことを特徴とする請求項３記載の方法。
【請求項５】
前記方法は、
前記ループ・セットアップ命令から単一の命令ループを検出する段階、
をさらに含むことを特徴とする請求項１記載の方法。
【請求項６】
前記方法は、
前記ループ・セットアップ命令に続く前記次の命令をループ・レジスタにロードする段階、
をさら含むことを特徴とする請求項５記載の方法。
【請求項７】
前記方法は、
前記ループの後続の繰り返し中に、前記ループ・レジスタから前記次の命令を送出する段階、
をさらに含むことを特徴とする請求項６記載の方法。
【請求項８】
前記ゼロ・オフセットは、前記ループ・セットアップ命令内のスタート・オフセット値を定義された数と比較することによって検出されることを特徴とする請求項１記載の方法。
【請求項９】
前記ゼロ・オフセットは、前記ループ・セットアップ命令内のスタート・オフセット値を前記ループ・セットアップ命令の幅と比較することによって検出されることを特徴とする請求項８記載の方法。
【請求項１０】
ゼロ・オフセット・ループをループ・セットアップ命令から検出するために適合された制御ユニットと、
ループ・ハードウェアと、
から構成されることを特徴とする装置。
【請求項１１】
ループ・ハードウェアが、並列に結合された少なくとも２つのループ・バッファを含み、前記制御ユニットが、命令を送出し、かつ前記命令のうちの少なくともいくつかを前記少なくとも２つのループ・バッファにロードするために適合され、前記バッファにロードされた前記第１命令が、前記ループ・セットアップ命令に続く次の命令であることを特徴とする請求項１０記載の装置。
【請求項１２】
前記制御ユニットが、前記ループの後続の繰り返しのための前記ループ・バッファからの命令を送出するために適合されることを特徴とする請求項１１記載の装置。
【請求項１３】
前記制御ユニットが、単一の命令ループを検出するために適合されることを特徴とする請求項１０記載の装置。
【請求項１４】
ループ・ハードウェアが単一の命令ループ・レジスタを含み、前記制御ユニットが、前記ループ・セットアップ命令に続く次の命令を送出し、かつ、ゼロ・オフセットの単一の命令ループを検出した後に、前記次の命令を前記単一の命令ループ・レジスタにロードするために適合されることを特徴とする請求項１３記載の装置。
【請求項１５】
前記制御ユニットが、前記ループの後続の繰り返し上の前記単一の命令ループ・レジスタから前記次の命令を送出するために適合されることを特徴とする請求項１４の記載の装置。
【請求項１６】
ＳＲＡＭメモリ・デバイスと、
前記メモリ・デバイスに結合されたプロセッサであって、前記プロセッサは、
ループ・セットアップ命令をデコードし、
前記ループ・セットアップ命令からゼロ・オフセット・ループを検出し、
ループ内の第１命令として前記ループ・セットアップ命令に続く次の命令を送出する、
ために適合された制御ユニットを含む、プロセッサと、
から構成されることを特徴とするシステム。
【請求項１７】
前記制御ユニットは、前記ループのループ条件がレジスタのセットに書き込まれる前に、前記ゼロ・オフセット・ループを検出するために適合されることを特徴とする請求項１６記載のシステム。
【請求項１８】
前記制御ユニットは、命令を前記ループ・ハードウェアにロードするために適合され、前記ループ・ハードウェアにロードされた前記第１命令が、前記ループ・セットアップ命令に続く前記次の命令であることを特徴とする請求項１６記載のシステム。
【請求項１９】
前記制御ユニットは、前記ループの後続の繰り返し中に、前記命令のうちの少なくともいくつかを前記ループ・ハードウェアから送出するために適合されることを特徴とする請求項１８記載のシステム。
【請求項２０】
前記制御ユニットは、前記ループ・セットアップ命令から単一の命令ループを検出するために適合されることを特徴とする請求項１６記載のシステム。
【請求項２１】
前記システムはさらにループ・レジスタを含み、前記制御ユニットが、単一命令のゼロ・オフセット・ループを検出した後に前記次の命令を前記ループ・レジスタにロードするために適合されることを特徴とする請求項２０記載のシステム。
【請求項２２】
前記制御ユニットは、前記ループの後続の繰り返し中に、前記次の命令を前記ループ・レジスタから送出するために適合されることを特徴とする請求項２１記載のシステム。
【請求項２３】
前記制御ユニットは、前記ループ・セットアップ命令内のスタート・オフセット値を定義された数と比較することによって前記ゼロ・オフセットを検出するために適合されることを特徴とする請求項１６記載のシステム。
【請求項２４】
前記定義された数が、前記ループ・セットアップ命令の幅に対応することを特徴とする請求項２３記載のシステム。
【請求項２５】
ループ・セットアップ命令をデコードする段階と、
ループのトップおよびボトムが同一の命令を指示していることを、前記ループ・セットアップ命令から検出する段階と、
単一の命令ループを実行する段階と、
から成ることを特徴とする方法。
【請求項２６】
単一の命令ループを実行する段階が、
デコード・ステージから命令を送出する段階と、
ループ・レジスタに前記命令をロードする段階と、
前記ループ・レジスタから前記命令を再送出する段階と、
を含むことを特徴とする請求項２５記載の方法。
【請求項２７】
前記命令は第１命令であり、前記方法は、
前記単一の命令ループに続く第２命令をフェッチする段階、
をさらに含むことを特徴とする請求項２６記載の方法。
【請求項２８】
前記方法は、
前記第１命令が、定義された回数だけ前記ループ・レジスタから再送出された後に、前記第２命令を送出する段階、
をさらに含むことを特徴とする請求項２７記載の方法。
【請求項２９】
前記ループ・セットアップ命令は、開始オフセットおよび終了オフセットを含み、前記ループの前記トップおよびボトムが同一の命令を指示していることを、前記ループ・セットアップ命令から検出する段階が、前記開始オフセットが終了オフセットと等しいことを検出する段階を含むことを特徴とする請求項２５記載の方法。
【請求項３０】
前記方法は、
ゼロ・オフセットを前記ループ・セットアップ命令から検出する段階と、
ゼロ・オフセットの単一の命令ループ内の前記第１命令として前記ループ・セットアップ命令の直後に続く前記次の命令を送出する段階と、
をさらに含む請求項２５記載の方法。
【請求項３１】
ゼロ・オフセットを検出する段階が、開始オフセットを定義された数と比較する段階を含むことを特徴とする請求項３０記載の方法。
【請求項３２】
ゼロ・オフセットを検出する段階が、開始オフセットを前記ループ・セットアップ命令の前記幅と比較する段階を含むことを特徴とする請求項３１記載の方法。
【請求項３３】
ループのトップおよびボトムが同一の命令を指示していることを、ループ・セットアップ命令から検出するために適合された制御ユニットと、
ループ・ハードウェアと、
から構成されることを特徴とする装置。
【請求項３４】
前記ループ・ハードウェアは少なくとも１つの単一の命令ループ・レジスタを含み、かつ、前記制御ユニットは、前記ループの前記トップおよびボトムが同一の命令を指示していることを、前記ループ・セットアップ命令から検出した後に、命令を前記単一の命令ループ・レジスタにロードするために適合されることを特徴とする請求項３３の記載の装置。
【請求項３５】
前記制御ユニットは、前記ループの繰り返し上で前記単一の命令ループ・レジスタから前記命令を送出するために適合されることを特徴とする請求項３４の記載の装置。
【請求項３６】
前記制御ユニットは、ゼロ・オフセット・ループを前記ループ・セットアップ命令から検出し、かつ、前記ゼロ・オフセットの単一の命令ループ内の前記第１命令として前記ループ・セットアップ命令の直後に続く次の命令を送出するために適合されることを特徴とする請求項３３の記載の装置。
【請求項３７】
ゼロ・オフセット・ループを検出することが、開始オフセットを定義された数と比較することを含むことを特徴とする請求項３６の記載の装置。
【請求項３８】
前記定義された数が、前記ループ・セットアップ命令の幅に対応することを特徴とする請求項３７の記載の装置。
【請求項３９】
ＳＲＡＭメモリ・デバイスと、
前記メモリ・デバイスに結合されたプロセッサであって、前記プロセッサは、
ループ・セットアップ命令をデコードし、
ループのトップおよびボトムが同一の命令を指示していることを、ループ・セットアップ命令から検出し、および
単一の命令ループを実行する、プロセッサと、
から構成されることを特徴とするシステム。
【請求項４０】
前記システムは、単一の命令ループ・レジスタをさらに含み、単一の命令ループを実行することが、
デコード・ステージからループ命令を送出すること、
ループ・レジスタに前記ループ命令をロードすること、および
前記ループ・レジスタから前記ループ命令を再送出すること、
を含むことを特徴とする請求項３９記載のシステム。
【請求項４１】
前記制御ユニットは、ゼロ・オフセット・ループを前記ループ・セットアップ命令から検出し、かつ、ゼロ・オフセットの単一の命令ループ内の第１命令として前記ループ・セットアップ命令の直後に続く次の命令を送出するためにさらに適合されることを特徴とする請求項３９記載のシステム。
【請求項４２】
ゼロ・オフセット・ループを検出することが、開始オフセットを定義された数と比較することを含むことを特徴とする請求項４１記載のシステム。
【請求項４３】
前記定義された数が、前記ループ・セットアップ命令の幅に対応することを特徴とする請求項４２記載のシステム。
【請求項４４】
前記ループ命令が第１の命令であって、前記制御ユニットは、
前記単一の命令ループに続く第２命令をフェッチする、
ためにさらに適合されることを特徴とする請求項４０記載のシステム。
【請求項４５】
前記制御ユニットは、
前記第１命令が、定義された回数だけ前記ループ・レジスタから再送出された後に、前記第２命令を送出する、
ためにさらに適合されることを特徴とする請求項４４記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラム可能なプロセッサ内で実行されるハードウェア・ループに関する。
【０００２】
【従来の技術】
デジタル信号処理（ＤＳＰ）システムのようなプログラム可能なプロセッサを設計する際に、２つの競合する設計ゴールは処理速度と電力消費である。従来のプロセッサでは、ソフトウェア命令の実行速度を増加させることを目指した多種多様なハードウェアを含む。しかしながら、付加的なハードウェアは、典型的には、プロセッサの電力消費を増加させる。
【０００３】
プログラム可能なプロセッサの速度を増加させるための１つの技術は、「ハードウェア・ループ」であり、それはループ構成内でソフトウェア命令の実行を促進させるために設計した専用ハードウェアである。ハードウェア・ループは、ローカル・レジスタに命令をキャッシュすることによりソフトウェア・ループを実行するために使用されるクロック数を減少させることができ、それによりメモリ装置からの同じ命令または命令キャッシュを複数回フェッチする必要性を低減する。
【０００４】
ハードウェア・ループはいくつかの試みを導入する。これらの試みは、セットアップ・ペナルティまたは分岐ペナルティのようなペナルティを回避することを含む。セットアップ・ペナルティは、ハードウェア・ループのセット・アップに関連した動作（通常、処理時間の増加）の損失である。同様に、分岐ペナルティは、分岐に関連した実行（再び通常、処理時間の増加）の損失である。
【０００５】
【実施例の詳細な説明】
図１は、電力消費を著しく増加させずに、効率的なハードウェア・ループをサポートするために配置されたプログラム可能プロセッサ２を図示するブロック図である。
【０００６】
ハードウェア・ループをサポートするために、プロセッサ２は、ループへの入口および出口条件を設定することにより、ハードウェアを初期化するループ・セットアップ命令をサポートすることができる。入口および出口条件は、ループ条件、すなわち、トップ、ボトムおよびカウントによって定義される。トップ条件は、ループの第１命令（あるいはトップ）を定義する。ボトム条件は、ループの最後の命令（あるいはボトム）を定義する。そして、カウント条件は、ループの繰り返し数を定義する。
【０００７】
ハードウェア・ループの入口（エントリ）は、最初の「トップ・マッチ（Ｔｏｐ Ｍａｔｃｈ）」で生じる。プログラム・カウンタ（ＰＣ）がループのトップ命令を指している場合、トップ・マッチが生じる。ハードウェア・ループの出口は、最後の「ボトム・マッチ（Ｂｏｔｔｏｍ Ｍａｔｃｈ）」で生じる。ＰＣがループのボトム命令を指しているとき、ボトム・マッチが生じる。
【０００８】
最初のトップ・マッチでカウントを初期化しかつ各ボトム・マッチでカウントをディクリメントすことによって、そのハードウェアは、それがいつ最後のボトム・マッチに遭遇したかを追跡することができる。このように、トップ、ボトムおよびカウントのループ条件は、ハードウェア・ループの入口および出口条件を定義する。
【０００９】
プロセッサ２は、実行パイプライン４および制御ユニット６を含む。制御ユニット６は、クロック・サイクル中にパイプライン４を通って命令および／またはデータのフローを制御する。例えば、命令の処理中に、制御ユニット６は、パイプラインの多様なコンポーネントに命令し、命令を解読して、例えばメモリに結果を書くことを含む対応する動作を正しく実行する。
【００１０】
命令は、パイプライン４の第１ステージにロードされ、続くステージを通って処理される。ステージは、他のステージと同時に処理してもよい。データは、システムのサイクル中にパイプライン４中のステージ間を通過する。命令の結果は、次々にパイプライン４の終端に出現する。
【００１１】
制御ユニット６は、以下記述されるように、プロセッサ２の電力消費を著しく増加させずに、ハードウェア・ループの高速化を容易にするハードウェア・ループ・ユニット８を含む。
【００１２】
図２は、パイプラインの例を図示するブロック図である。パイプライン１０は、単一のクロック・サイクル中に複数の命令の実行を促進する複数のステージを具備する。パイプライン１０では、命令は最初のクロック・サイクルで命令フェッチ（ＩＦ）ステージ１２に入る。その後、その命令は、続くクロック・サイクル中にパイプラインを下流へ送られる。前の命令が終了した後、別の命令がＩＦステージ１２に入ってもよい。このように、典型的には、別の命令は続くクロック・サイクル中にＩＦステージ１２に入り、次に、続くクロック・サイクル中にパイプラインを下流へ送られる。同様に、追加の命令は、続くクロック・サイクル中にＩＦステージ１２にそれぞれ入る。パイプラインの段数は、パイプラインが同時に処理できる命令の数を定義する。
【００１３】
パイプラインの異なるステージは、以下のように動作する。命令はフェッチ・ユニット１３によってＩＦステージ１２でフェッチされ、ＤＥＣステージ１４中で命令レジスタ１５から解読される。ＡＣステージ１８中に、データ・アドレス生成器１９は、その動作を行なうために用いられるあらゆるメモリ・アドレスを計算する。
【００１４】
実行ステージ（ＥＸ１−ＥＸｎ）２２，２８の間、実行ユニット２３，２９は、例えば２つの数の加算または乗算のような指定された動作を行なうことができる。実行ユニットは、本発明の有効な範囲が次のことに制限されるものではないが、例えば１つ以上の算術論理演算ユニット（ＡＬＵ）、浮動小数点ユニット（ＦＰＵ）およびバレル・シフタを含む動作を行なうために特殊なハードウェアを含んでもよい。多種多様のデータ、例えばデータ・アドレス生成器によって生成されたアドレス、メモリから取り出されたデータまたはデータ・レジスタから取り出されたデータが、実行ユニットに利用されてもよい。ライトバック（書き戻し）ステージ（ＷＢ）３０において、その結果は、パイプラインの外の記憶場所またはデータ・レジスタに、または構成レジスタ３２のようなパイプライン中のデータ・レジスタに書き込まれてもよい。パイプライン１０のステージは、データの格納のために、フリップフロップのような１つ以上の記憶回路を含む。
【００１５】
上述したように、プロセッサ２は、ループ・セットアップ命令をサポートする。ループ・セットアップ命令は、パイプライン中の構成レジスタ３２にハードウェア・ループ（例えばトップおよびボトム）の境界を書くことにより、ハードウェア・ループを初期化する。ループ・セットアップ命令は、さらにループが完了すべきである回数を示す構成レジスタ３２中のカウントを初期化する。加えて、ループ・セットアップ命令は、ループのトップに到達する前にループ・セットアップ命令に続く命令の数を示すオフセットを定義する。ハードウェア・ループが初期化された後、ループの出口条件が満たされる（例えば０に等しいカウントを備えたボトム・マッチ）まで、ハードウェア・ループはパイプライン１０中で動作する。
【００１６】
一旦命令が、例えば、ＷＢステージ３０の最後で引き渡されたならば、構成レジスタ３２が一般にロードされる。したがって、ループ・セットアップ命令がパイプライン１０に入るときから数クロック・サイクルが過ぎるまで、構成レジスタ３２に格納された入口および出口条件は更新されない。数クロック・サイクルが過ぎるまで入口および出口条件が更新されないので、ハードウェア・ループをセット・アップする制限が存在してもよい。例えば、ループ・セットアップ命令が引き渡される前に、ループ中の第１命令がパイプライン１０に入力する場合、構成レジスタはループの一部として命令を識別するためにセットアップされなくてもよい。さらに、この問題はパイプラインの深さが増すにつれ増加する。
【００１７】
一実施例において、プロセッサ２は、パイプライン中の１セットの早期レジスタ３４，３５，３６を維持することによって、これらの制限を克服することができる。図２に図示されるように、ＥＣｎｔ３６がＡＣステージに存在する一方で、早期レジスタＥＴｏｐ３４，ＥＢｏｔ３５はデコード・ステージに存在する。
【００１８】
１セットの早期レジスタ３４，３５，３６を実行することにより、ループ・セットアップのペナルティを削減しまたは回避して、プロセッサ２の処理速度を増加させる。上述されたように、ループ・セットアップ命令がパイプラインに入る時間と構成レジスタが書き込まれる時間との間に、数クロック・サイクルが経過するかもしれない。しかしながら、ループ・セットアップ命令が構成レジスタに書くかなり前に、早期レジスタはロードされる。このような理由で、早期レジスタの実行は、ハードウェア・ループをセットアップする時間を削減する。
【００１９】
早期レジスタは、構成レジスタの値を予測するかまたは推測するために使用される推論的なレジスタである。構成レジスタと異なり、推論的なレジスタはシステムの命令セットにサポートされない。したがって、プログラム・コードはその推論的なレジスタにアクセスするために使用されない。このような理由のため、プログラマは、構成レジスタでできるのと同じ方法で、推論的なレジスタへまたはそのレジスタからデータを移動させることができない。
【００２０】
早期レジスタのロードはいくつかの異なる方法で行われる。例えば、早期レジスタは、通常の命令レジスタ転送を構成レジスタに対して実行することの結果として、単にロードされる。言いかえれば、システムは、他のあるレジスタの内容をロードするように構成レジスタに命じ、その結果、早期レジスタは更新される。しかし、レジスタをロードする別の方法は、メモリからの「ポップ」である。言いかえれば、システムは、メモリからデータをフェッチし、そのデータを構成レジスタにロードし、そして早期レジスタを更新する。
【００２１】
しかしながら、通常のレジスタ移動またはポップに関する問題は、それらがループ・セットアップ・ペナルティを持ち込むかもしれないということである。「移動された」または、「ポップした」データを書き込むことが可能となるまで、システムはパイプラインを停止させるので、これらのペナルティが生じる。これらのペナルティを回避するために、構成レジスタが書き込まれる前に、ループ・セットアップ命令が早期レジスタをロードするために使用されてもよい。
【００２２】
次の例は、典型的なループ・セットアップ機械語命令を起動するためのシンタックスを示す。
【００２３】
ＬＳＥＴＵＰ（ＰＣ Ｒｅｌａｔｉｖｅ Ｔｏｐ， ＰＣ Ｒｅｌａｔｉｖｅ Ｂｏｔｔｏｍ）Ｃｏｕｎｔｅｒ＝Ｘ
ＰＣ Ｒｅｌａｔｉｖｅ Ｔｏｐは、現在の命令からループの開始までの距離を指定する（開始オフセット）。ＰＣ Ｒｅｌａｔｉｖｅ Ｂｏｔｔｏｍは、現在の命令からループの終了までの距離を指定する（終了オフセット）。加えて、Ｃｏｕｎｔｅｒ変数は、カウンタ・レジスタおよびループ中の繰り返しの回数を示すループ・カウントを特定する。
【００２４】
図３は、本発明の実施例に従って、早期レジスタがロードされるタイミングを図示するフロー図である。記述されるように、ループ・セットアップ命令は、カウント値、トップ値およびボトム値の形式で、ループ条件を収容することができる。全体として、これらの３つの値は、ハードウェア・ループの入口および出口条件を定義する。
【００２５】
カウント値は、ループが作る繰り返しの回数を表わす。一旦ループ・セットアップ命令がＡＣに入ると（３８）、カウント値はＥＣｎｔレジスタに書かれる（３９）。ＥＣｎｔレジスタへの最初の書き込みは、異なるパイプラインに含まれていたデータ・レジスタからのレジスタ転送によって行われる。ある動作モードでは、ＥＣｎｔレジスタは、ＤＡＧパイプライン中のＰＲＥＧレジスタ（図６を参照）に含まれていたデータが書き込まれる。
【００２６】
トップおよびボトム値は、どの命令がループのトップか、また、どの命令がループのボトムかを示す。しかしながら、ループ・セットアップ命令のトップおよびボトム値は、プログラム・カウンタ（ＰＣ）の相対数である。したがって、ＡＣステージでの計算は、ＥＴｏｐ３４およびＥＢｏｔ３５レジスタにそれぞれ書き込まれるトップおよびボトム値を得るために使用される（４０）。ループ・セットアップ命令がＥＸ１に入った後（４１）、トップおよびボトム値は、ＥＴｏｐ３４およびＥＢｏｔ３５レジスタに書き込まれる（４２）。
【００２７】
ＥＴｏｐレジスタ３４は、ループ（あるいはループのトップ）の第１命令を指すためにロードされる。ＥＢｏｔレジスタ３５は、ループ（あるいはループのボトム）の最後の命令を指すためにロードされる。ＥＣｎｔレジスタ３６は、その回路がループを通り抜ける回数を指定するためにロードされる。ある実施例において、ＥＣｎｔ３６は、回路がループを回るたびにディクリメントして、下方へ計数する。
【００２８】
図４は、ループ・セットアップ命令がパイプライン１０によって受け取られ処理されるときに、ハードウェア・ループ・ユニット８の１つの動作モードを図示するフロー図である。１つのフォーマットによれば、ループ・セットアップ命令は、開始オフセット（Ｓ−オフセット）および終了オフセット（Ｅ−オフセット）を含むいくつかのセットアップ変数を指定する。Ｓ−オフセットは、ループ・セットアップ命令からループ中の第１命令までの命令ストリームにおける距離を指定する。同様に、Ｅ−オフセットは、ループ・セットアップ命令からループ中の最後の命令までの命令ストリームにおける距離を指定する。
【００２９】
例えば、ループ中の第１命令がループ・セットアップ命令の直後に続く命令ならば、Ｓ−オフセットはループ・セットアップ命令の幅になるであろう。命令ストリームにおいて、ループ・セットアップ命令とループ中の第１命令との間に１つの命令があれば、Ｓ−オフセットは、ループ・セットアップ命令およびその１つの命令の幅になるであろう。同様に、ループ・セットアップと第１命令との間に２つの命令があれば、Ｓ−オフセットはループ・セットアップ命令およびその２つの命令の幅になるであろう。
【００３０】
図４の中で図示されるように、Ｓ−オフセットおよびＥ−オフセットは、典型的にはループ・セットアップ命令によって指定される（４４）。しかしながら、ループ・セットアップ命令は、プログラム・カウンタ（ＰＣ）に関するオフセットを指定する。したがって、ＰＣ値もまた決定されなければならない（４５）。その後、ＰＣ値およびＳ−オフセットは、ＥＴｏｐレジスタ・データを計算するために使用することができる（４６）。さらに、ＰＣ値およびＥ−オフセットはＥＢｏｔレジスタ・データを計算するために使用することができる（４７）。一度計算されると、早期レジスタのデータは、早期レジスタに書き込まれる（４８）。
【００３１】
ＥＴｏｐとＥＢｏｔレジスタに書き込むときの典型的なタイミングが、図４を図２と比較して示す。ステップ（４４）および（４５）は、ＤＥＣステージ１４で生じる。計算ステップ（４６）および（４７）は、ＡＣステージ１８で生じる。したがって、本発明の範囲はこの点に制限されるものではないが、書込みステップ（４８）がＥＸ１ステージ２２で生じる。
【００３２】
一度ロードされると、早期レジスタは、ハードウェア・ループをセットアップするために使用される。図５は、命令フェッチ（ＩＦ）ユニット５０およびパイプライン１０のデコーダ・ユニット５２に接続されたハードウェア・ループ・ユニット８の一実施例を図示するブロック図である。一実施例において、早期レジスタは、命令５７のストリームにおけるループを検出するために使用される。その後、ループ・ハードウェア５４に１つ以上のループ命令がロードされる。一度ロードされると、ループ命令は、再三ループ・ハードウェアから送出される。したがって、早期レジスタが命令ループを検出する場合、ループ命令の１つ以上はＩＦユニット５０によって一度だけフェッチされ、次に、ハードウェア・ループ・ユニット８から繰り返して送出される。
【００３３】
早期レジスタの実現によって、いくつかの試みが開始される。例えば、早期レジスタのデータは調整される必要があるので、早期レジスタの使用で導入される１つの試みが発生する。パイプラインがイベントを処理しなければならない場合、パイプラインの現在の動作を終了する必要がある。早期レジスタに書き込んだ後ではあるが、それぞれの構成レジスタに書き込まれる前に、この終了が発生すると、早期レジスタのデータを調整する必要が生じる。換言すれば、早期レジスタが初めに書き込まれるので、ループが生じる前のパイプラインにおける終了は、早期レジスタのデータを調整することを要求する。
【００３４】
図６は、早期レジスタの調整に関する動作モードを図示するフロー図である。特に、図６は、ＥＴｏｐ，ＥＢｏｔ，ＥＣｎｔレジスタの調整に関与するタイミングを示す。
【００３５】
図６中に示されるように、早期レジスタが書き込まれる（７６）。図６の実施例において、早期レジスタは、特に（図２中で示されているように）ＥＴｏｐ，ＥＢｏｔおよびＥＣｎｔレジスタである。構成レジスタに書き込む前に（８２）、パイプラインにおける終了が生じる場合（８０）、未終了命令はパイプラインから排出され（８３）、早期レジスタはそれぞれの構成上の対応部に収容されたデータを書くことにより調整される（８４）。
【００３６】
図６で示された動作モードは、折り返しのハードウェア・ループに対処するとき、特に有用である。例えば、第２のループが開始する前に終了する場合、第１のループはまだパイプライン中のその残りの命令を実行する必要がある。図６における調整技術は、早期レジスタ値を調整することによりこの遷移を取り扱う方法を提供する。
【００３７】
図７は、早期カウント（ＥＣｎｔ）データを有する構成レジスタの値を更新する方法を図示する。データは上述された任意の方法でＥＣｎｔレジスタに書き込まれる（９０）。その後、ＥＣｎｔレジスタのデータはパイプラインを下流へ送られ（９２）、ＷＢステージで構成カウント・レジスタに書き込まれる（９３）。そして、後続するループの繰り返しのたびに（９４）、ＥＣｎｔレジスタのデータがディクリメントされ（９６）、再度パイプラインを下流へ送られる（９２）。このプロセスは、ループがその最後の繰り返しを終了するまで続く（９８）。
【００３８】
図８は、構成カウント・レジスタを更新する他の方法を図示する。ループの繰り返しの後にＥＣｎｔデータをパイプラインの下流へ送るのではなく、図８で図示された動作モードがＥＣｎｔデータを直ちに送る。そして、後続のループの繰り返しにおいて、単一の有効なディクリメント・ビットが、構成カウント・レジスタを調整するために送られる。
【００３９】
図８では、データが、上述された任意の方法でＥＣｎｔレジスタに書き込まれる（９０）。そして、ＥＣｎｔレジスタのデータはパイプラインを下流へ送られ（９２）、それがＷＢステージで構成カウント・レジスタに書き込まれる（９３）。後続するループの繰り返しにおいて（９４）、単一の有効なディクリメント・ビットが送られ（１０２）、構成カウント・レジスタをディクリメントする（１０４）。このプロセスは、ループがその最後の繰り返しを終了するまで続く（９８）。
【００４０】
図９は、早期レジスタの使用によって実現される時間的な利点を示すフロー図である。図９で図示されるように、ループの入口／出口条件が１セットの早期レジスタへロードされる（１２０）。そして、これらの早期入口／出口条件が検出され（１２２）、ループ・セットアップ命令が引き渡される（１２４）。
【００４１】
ＥＣｎｔレジスタの調整は、さらに付加的な課題を呈する。ＥＣｎｔレジスタの調整は、ループが終わるより先にパイプラインが終了する場合には常に行われる。これは、有効な命令がまだパイプライン内にあり、有効な命令が引き渡されるとすぐに、これらの有効な命令が構成カウント・レジスタ値を調整するからである。
【００４２】
終了の後にＥＣｎｔレジスタ・データを修正する１つの方法は、終了の前に命令が引き渡され、そして、それがＥＣｎｔレジスタの構成上の対応部でＥＣｎｔレジスタに書き込まれるようにすることである。しかしながら、これによって、分岐ペナルティが、パイプラインから排出するための時間よりも短い場合には、追加のペナルティが加わる。
【００４３】
図１０は、早期カウント値を調整するための効率的な方法を図示する。図示のように、ループ・セットアップ命令がＡＣステージに入った後（１８０）、早期カウント・レジスタに書き込まれる（１８２）。この時点で、ＥＣｎｔデータは、パイプラインを下流へ送られる（１８４）。終了が生じた場合（１８５）、非アボート命令は排出され（１８６）、ＥＣｎｔレジスタが構成上の対応部内のデータで書き込まれる（１８７）。
【００４４】
各ボトムが一致すると（１９０）、有効なディクリメント・ビットがパイプラインを下流へ送られる（１９２）。有効なビットが送られる原因となった命令が各パイプ・ステージを出るとき（１９４）、有効なディクリメント・ビットは、排出されたパイプ・ステージでカウンタから除去される（１９６）。換言すれば、カウンタ（群）は、有効なビットが送られるときにインクリメントされ（例えば１９２で）、また個々のカウンタは、有効なディクリメント・ビットが送られる原因となった命令がパイプ・ステージを出るときにディクリメントされる（例えば１９６で）。
【００４５】
終了がパイプライン内で生じる場合（１９８）、早期カウント・レジスタは、終了ステージで、カウンタ内の有効なディクリメント・ビットの数によって調整される（１８８）。この調整値もまた、終了が生じたステージよりも後のパイプライン内に存在するすべてのパイプ・ステージのそれぞれのカウンタ内に表示される。図１０のステップは、すべてのループ命令がパイプラインを出るまで繰り返される（２００）。
【００４６】
ＥＣｎｔレジスタは、ボトム・マッチのたびにディクリメントされる（例えば、ループを通るすべてのパスのために）。しかしながら、すべてのボトム・マッチの後にすべてのＥＣｎｔ値をパイプラインの下流に伝播するのではなく、単一の有効なディクリメント・ビットだけがパイプラインを下流へ送られる。このようにして、ハードウェアの減少がＤＳＰシステム内で実現される。カウンタのセットは、有効なディクリメント・ビットおよびこれらのビットが送られる原因となった関連する命令を監視する。そのため、カウンタのセットは、早期カウント・レジスタと構成上の対応部との間の差異に基づいてランニング・タブをキープする。
【００４７】
図１１は回路内のカウンタを示すブロック図である。図示のように、カウンタは、ＤＥＣ以降のパイプラインのすべてのステージで保守される（２１０，２１１，２１２，２１３）。したがって、単一の有効なディクリメント・ビットはパイプラインの下流に伝播され、早期カウント・レジスタとその構成上の対応部との間の差異を明らかにする。カウンタは、マルチプレクサ２２０の入力に接続される。マルチプレクサ２２０は、カウンタがある場合には、どのカウンタが早期カウント・レジスタ３６を調整するために使用されるのかを決定する。
【００４８】
他の実施例において、終了は特定のステージでは発生せず、または、特定の命令が特定のステージに存在するときには制限される。このような実施例では、終了が制限されるステージでカウンタを実行しないことによって、回路ハードウェアを減少することができる。
【００４９】
カウンタ２１０，２１１，２１２，２１３の幅は、必要に応じて変更される。例えば、カウンタ２１０は１ビットのカウンタであり、カウンタ２１１は２ビットのカウンタである。カウンタ２１２，２１３の最小限の深さは、パイプライン内の実行ステージの数ｎに依存する。カウンタ２１０は、それが常に１または０の値を有するので、１ビットのカウンタである。例えば、ボトム・マッチ命令が現在ＡＣに存在する場合、それは１の値を有する。命令がＡＣを去る場合、カウンタは０に戻る。
【００５０】
カウンタ２１１および次のカウンタ（例えばステージＥＸ２のための）は、２ビットのカウンタであるが、本発明の範囲はこの点で制限されていない。これは、カウンタ２１１（例えばＥＸ１カウンタ）が２の最大値を有し、ＥＸ２カウンタが３の最大値を有するからである。ＥＸ３カウンタは４の最大値を有し、従って、それは３ビットを必要とする。同様に、次の３つのカウンタ（例えばＥＸ４からＥＸ６）は、それぞれ５から７の間の値を表すことができる３ビットのカウンタである。
【００５１】
各ステージのカウンタの幅は、カウンタが保持する必要がある最大値を考慮することによって決定される。これは、ループが単一の命令ループである場合に対応する。したがって、カウンタの深さは、単に、そのカウンタとＡＣとの間のステージ数に対応する。しかしながら、サイズもまた、終了が特定のステージで発生するかどうかに依存するので、いくつかのステージはカウンタを必要としない。
【００５２】
他の動作モードは、早期カウント・レジスタを調整するためのハイブリッド方式である。パイプラインの選択されたステージに存在するカウンタは、パイプラインのドレインに関連するペナルティが分岐ペナルティより大きい場合に、早期カウント・レジスタを調整するために使用される。しかしながら、ドレイン・ペナルティが分岐ペナルティよりも小さいか、あるいは同等である場合には、パイプライン内の命令が引き渡すことを許され、その結果、早期カウント・レジスタはその構成上の対応部から調整される。システムの動作は、パイプライン内のどこで終了が発生したかによって選択される。１つのケースにおいて、終了がＥＸ３ステージまたはＷＢステージ内で発生した場合には、３実行ステージを有するパイプラインから排出されるが、終了がＥＸ３ステージの前に生じる場合には、パイプラインから排出されず、早期カウンタが調整される。
【００５３】
図１２は、ハイブリッドの動作モードを示すフロー図である。図示のように、終了（２３０）がｎ番目のステージの前に発生する場合には、カウンタは早期カウント値を調整する（２２８）。しかしながら、終了（２３０）がｎ番目のステージの後に発生する場合には、パイプライン内の命令がパイプラインを通って流れ、かつ、引き渡すことを許容される（２３２）。そして、早期レジスタは、それらの構成上の対応部内のデータで更新される（２３３）。可変数ｎは、命令をパイプラインを通って流すことができる時間が、分岐ペナルティよりも少ないか、または同等の総時間を要するポイントを定義する（２３４）。
【００５４】
図１３は、第１のｎ−１実行ステージにカウンタを有するハイブリッド回路を図示する。回路は、命令がｎ番目の実行ステージに入っている場合に、終了に続いてパイプラインがその命令を実行することを可能にする。しかしながら、回路は、命令がｎ番目の実行ステージに入っていない場合には、終了に続いて早期カウント・レジスタを調整する。再び、可変数ｎは、命令をパイプラインを通って流すことができる時間が、分岐ペナルティよりも少ないか、または同等の総時間を要するポイントを定義する。他のケースでは、可変数ｎは、パイプライン内のより初期（例えば分岐ペナルティがより大きいところ）に存在する。
【００５５】
ループ・レジスタおよびループ・バッファのような付加的なループ・ハードウェアは、高速のハードウェア・ループを助長する。ここに記述されているようなループ・ハードウェアは、いくつかの利点を提供する。いくつかの実施例において、ループ・ハードウェアは分岐ペナルティを隠すことができる。さらに、ループ・ハードウェアは、ループの繰り返しのたびに、キャッシュまたはＳＲＡＭのようなメモリ・デバイスにアクセスする必要を無くすることによって、電力を節約する。さらに、以下に記述されたループ・ハードウェアには、プログラミングの制限がほとんどない。その上、ループ・ハードウェアは、プログラム・メモリに他の状態で存在する可能性のあるあらアライメントの制限を除去する。
【００５６】
再び図１に関し、実行パイプライン４および制御ユニット６を有するプログラム可能なプロセッサ２が図示される。制御ユニット６はハードウェア・ループ・ユニット８を含む。
【００５７】
ハードウェア・ループ・ユニット８は、直列に接続された１またはそれ以上のセットのループ・バッファを含む。さらに、ハードウェア・ループ・ユニットは、１またはそれ以上の単一の命令ループ・レジスタを含む。ループ・バッファおよび／またはループ・レジスタの集合体は、全体としてループ・ハードウェアである。この集合体は高速なハードウェア・ループを助長する。
【００５８】
再び図５に関し、パイプライン１０の命令フェッチ・ユニット５０およびデコーダ・ユニット５２に接続されたハードウェア・ループ・ユニット８の実施例を示すブロック図が示される。命令フェッチ・ユニット５０は、ハードウェア・ループ・ユニット８への多くの入力のうちの１つを提供する。ハードウェア・ループ・ユニット８は、ループ・ハードウェア５４に接続されたマルチプレクサ５６を含む。ループ・ハードウェア５４は、１またはそれ以上のセットのループ・バッファおよび／または１またはそれ以上のループ・レジスタを含む。さらに、ループ・バッファのセットは、直列に接続された定義された数のバッファを含む。ループ・バッファのセットのそれぞれが、関連するループ・レジスタを有する。
【００５９】
図１４は、ハードウェア・ループ・ユニット８の一実施例を示す別のブロック図である。再び、ハードウェア・ループ・ユニット８は、命令フェッチ・ユニット５０およびデコーダ（図示されない）に接続される。
【００６０】
ハードウェア・ループ・ユニット８は、ループ・ハードウェアに接続されたマルチプレクサ２６０を含む。ループ・ハードウェアは、直列に接続されたループ・バッファ２７１，２７２，２７３，２７４のセットを含む。これらのバッファは、他のマルチプレクサ２８０に入力を提供する。また、マルチプレクサ２６０，２８０は、マルチプレクサ２９０に入力を提供する。マルチプレクサ２９０の出力はループ・レジスタ２９６に接続され、それがマルチプレクサ２６０の入力に接続される。ハードウェア・ループ・ユニット８の出力はデコーダに入力を提供する。
【００６１】
マルチプレクサ２６０は複数の入力を有する。これらは、レジスタ（例えばエミュレータ命令レジスタ）からの入力、およびフェッチ・ユニット５０からの入力を含む。さらに、マルチプレクサ２６０は、ループ命令レジスタからの入力、および１またはそれ以上の他のハードウェア・ループ・ユニットからの入力を有する。
【００６２】
典型例として、図１４は、４階層のループ・バッファのセットおよび単一の命令レジスタで構成されたループ・ハードウェアを示す。しかしながら、いかなる数のバッファおよび／または命令レジスタも他の実施例での中で使用することができる。
【００６３】
動作モードの典型例は、ループ・バッファが２つの異なるシナリオで実行される。１つのシナリオでは、ループ内のすべての命令がループ・バッファに適合する。他のシナリオでは、ループ内のすべての命令がループ・バッファに適合するとは限らない。以下、各シナリオについて順番に述べる。
【００６４】
図１５は、１つのシナリオを示す図である。図示のように、４階層のループ・バッファのセットが３つの命令ループ（Ｉ２−Ｉ４）でロードされる。そのため、ループ・バッファの１つおよびＶＴｏｐレジスタは、いかなるデータによってもロードされない。ループの出口条件が満たされるまで、命令Ｉ２−Ｉ４は何度も実行される。図示のように、Ｉ４命令がループ・バッファから送出されるたびに、出口条件がチェックされる。
【００６５】
図１６は、１つのシナリオを示すフロー図である。図示のように、命令が送出され（３００）、命令がループ・バッファのセットにロードされ（３０２）、メモリ・デバイスが停止させられる（３０４）。メモリを停止することによって、ＤＳＰシステムに省電力を提供することができる。命令をバッファのセットにロードした後（３０２）、命令が、バッファのセットから続いて送出される（３０６）。ループの出口条件が満たされるまで、その命令が何度も繰り返して送出される（３０８）。
【００６６】
図１７は、１つのシナリオを示す他のフロー図である。図示のように、命令が送出され（３１０）、命令がループ・バッファのセットにロードされ（３１４）、メモリ・デバイスが停止され（３１６）、ループ・カウントが初期化される（３１２）。ループの出口条件が満たされない限り（３１８）、ループ・カウントがディクリメントされ（３２０）、命令がループ・バッファのセットから送出される（３２２）。ループ・カウントが定義された数Ｘに達するまで、メモリ・デバイスが停止させられる（３１６）。さらに、ループが終了したときに、ループの後の次の命令がフェッチ・ユニット内で直ちに準備できるように、Ｘを定義し得る。このようにして、ループ出口ペナルティを回避することができる。
【００６７】
他の実施例では、ループ・カウントが０に初期化される（３１２）。そして、調整（３２０）は、図１７で示されるようにループ・カウントをディクリメントするのではなく、インクリメントするであろう。なお、他の実施例は、図１５−図１７に照らして明らかになるであろう。
【００６８】
図１８は、他のシナリオを示す図である。図示のように、４階層のループ・バッファのセットが、ループの４つの命令（Ｉ２−Ｉ５）でロードされる。さらに、ＶＴｏｐレジスタが、ループ内の次の命令のアドレスでロードされる。ＶＴｏｐは、パイプライン内に存在するアドレス・レジスタである（図２、３７を参照）。ループの次の繰り返し中に、命令Ｉ２−Ｉ５は、Ｉ６がフェッチされている一方で実行される。そして、Ｉ５が実行された後に、Ｉ６が直ちに実行できるように準備される。出口条件は、ループの繰り返し中にチェックされる。
【００６９】
図１９は、図１８のシナリオを示すフロー図である。図示のように、命令の第１サブセットがバッファのセットにロードされ（３３０）、同時に命令の第１セットが送出される（３３２）。次に、命令の第２サブセットの開始アドレスがレジスタにロードされ（３３４）、第２サブセットが送出される（３３６）。ループの続く繰り返し中に（出口条件によって定義された繰り返しの数（３３８））、命令の第１サブセットがバッファのセットから送出され（３４０）、その一方で第２サブセットがフェッチされる（３４２）。その後、第２サブセットが送出される（３４４）。
【００７０】
図１９に従った動作モードには、いくつかの利点が認められる。例えば、第１サブセットがバッファのセットから送出されるたびに、メモリ・デバイスがファイアリングしていない場合には、電力が節約される。さらに、第１サブセットが送出されている一方で他のサブセットをフェッチするので、ループ・ペナルティを最小限にできる。一実施例において、ループ・バッファは、少なくとも分岐ペナルティに対応する深さを有する。したがって、第２サブセットをフェッチすることに関連するペナルティは、命令の第１サブセットの発行の裏に隠される。これによって、ＤＳＰシステムの速度が増加される。しかしながら、他の実施例において、省電力がより重要な設計上の特徴である場合（例えば、バッテリで電力を供給される装置内で実行される回路のため）には、より深いバッファがより有用である。
【００７１】
命令の第１サブセットは、ループ・バッファのセット内に適合する命令の数である。命令の第２サブセットは、バッファ内でロードしたこれらの命令に続くループ内の次の命令である。あるいは、第２サブセットは、バッファ内でロードしたこれらの命令に続く複数の命令である。
【００７２】
図２０は、上述のシナリオを示す、より一般的なフロー図である。図示のように、命令の第１サブセットがバッファのセットにロードされ（３５０）、かつ送出される（３５２）。ループのすべての命令がループ・バッファに適合する場合（３５４）、メモリ・デバイスが停止され（３５５）、そして、出口条件が満たされるまで（３５８）、命令がバッファのセットから連続的に送出される（３５６）。
【００７３】
ループのすべての命令がループ・バッファ（３５４）に適合するとは限らない場合、命令の第２サブセットが送出され（３６０）、これらの命令の開始アドレスがレジスタにロードされる（３６２）。ループの続く繰り返しにおいて（出口条件によって定義されたように（３６４））、第２サブセットがメモリからフェッチされ（３６６）、その一方で命令の第１サブセットがバッファのセットから送出される（３６８）。その後、第２サブセットが送出される（３７０）。
【００７４】
図１８のシナリオでは、ＶＴｏｐによって示されたアドレスの要求が、ボトム・マッチがある度に行われる。このように、命令の第１サブセットは、命令の第２サブセットをフェッチする間に送られる。
【００７５】
ループ内の命令の第１のサブセットが送られる時までに、キャッシュ／メモリは既にアクセスされ、命令の第２サブセットでアライメント・バッファがプライムされている。アライメント・バッファは、複数の命令を保持する（各命令の幅に依存して）。第２サブセットが複数命令を含む場合、その複数命令は、ＶＴｏｐレジスタに関連する命令である第２サブセットの第１命令によってアライメント・バッファ内で整えられる。
【００７６】
動作は、ＶＴｏｐと関連する命令に続く次の命令を要求することをさらに含み、一方でＶＴｏｐに関連する命令が送られる。例えば、１つの動作モードにおいて、ＶＴｏｐに関連する命令は６４ビットの命令である。その６４ビットの命令が送られるとき、次の６４ビットの命令（メモリ内でアライメントによって定義されたように）がフェッチされる。これを何度も繰り返すことによって、ＤＳＰシステムは迅速かつ効率的な方法で命令を送ることができる。
【００７７】
ハードウェア・ループを実行する先行技術のプログラム可能なプロセッサ・システムは、動作コード内に多くの制限を要求する。しかしながら、プログラム上の制限がほどんど無いシステムが、ハードウェア・ループのために大いに望まれる。ある実施例において、本発明に従うシステムは、ただ１つのプログラミング制限を有する。この１つの制限とは、システムがループ・ボトム上に分岐を持つことができないことである。
【００７８】
高速ハードウェア・ループは、ループ・バッファが無効を要求する状態を有する。ループ・バッファが条件付き分岐で占められている場合、これらの状態は無効を含む。したがって、１つの動作モードにおいて、ループ内の最初のｎ個の命令のうちの１つが条件付き分岐である場合、ループ・バッファのセットは無効にされる。可変数ｎは、ループ・バッファのセットの深さを定義する。
【００７９】
ループ・バッファが無効を要求する他の状態は、ループ・バッファがロードされている間に、いつイベントが受け付けられるかである。さらに、ループ・バッファは、自己修正コードのためのＣ＿ＳＹＮＣに続く無効を要求する。したがって、他の動作モードは、これら２つの状態のどちらかが発生するときに、ループ・バッファを無効にすることを含む。
【００８０】
ゼロ・オフセット・ループは、更なる課題を導入する。オフセットは、ループ・セットアップ命令と、ループ内の第１または最後の命令との間の距離を参照する。
先行技術のシステムでは、オフセットは、ハードウェア・ループのセットアップを促進するため、またはシステム内の例外をプログラムことを説明するために必要である。しかしながら、ゼロ・オフセット・ループを促進することは、それが処理時間を減少することができるので、非常に有利である。
【００８１】
早期レジスタおよびループ・バッファを実行するシステム内でさえ、ゼロ・オフセット・ループは課題を発生させる。例えば、上述のシステムにおいて、早期レジスタが書き込まれる（例えばＥｘ１内で）時までに、ゼロ・オフセット・ループの第１命令が既にＡＣにある。したがって、ＥｔｏｐおよびＥｂｏｔが書き込まれる前であっても、ループの始まりがＤＥＣを出るので、回路は効果的にトップ・マッチを「ミス（ｍｉｓｓ）」する。
【００８２】
特別の動作モードおよび回路構成は、ゼロ・オフセット・ループで検出し、かつ取り扱うために設計されてきた。１つの動作モードでは、ループ・セットアップ命令内の開始オフセット（Ｓ−オフセット）は、ゼロ・オフセットを検出するために既知の値と比較される。このようにして、ゼロ・オフセット・ループの早期検出が促進される。特別の実施例では、Ｓ−オフセットは４と比較されるが、ここで、４は３２ビットの命令を４バイトを参照する。一旦検出されると、早期レジスタが書き込まれる前であっても、ゼロ・オフセット・ループがセット・アップされる。
【００８３】
図２１は、ゼロ・オフセット・ループを検出するための動作モードを示すフロー図である。図示のように、ループ・セットアップ命令がデコードされる（３８０）。そして、ｓ−オフセットが、定義された数と比較される（定義された数はループ・セットアップ命令の幅に対応する）（３８２）。このようにして、早期レジスタが書き込まれる前であっても、ゼロ・オフセット・ループを検出することができる。ゼロ・オフセット・ループが検出された場合は（３８４）、上述のように、ループ内の次のｎ個の命令が送出されて、ループ・バッファ内にロードされる（３８６）。
【００８４】
図２２は、単一命令のゼロ・オフセット・ループの特別なケースを検出し、取り扱うための動作モードを示すフロー図である。図示のように、ループ・セットアップ命令がデコードされる（３８８）。ゼロ・オフセットが検出され（３９０）、開始オフセットが終了オフセットと等しい場合は（３９２）、単一の命令ループが直ちに実行される（３９４）。ｓ−オフセットがループ・セットアップ命令の幅と等しいとき、ゼロ・オフセットが検出される。ｓ−オフセットとｅ−オフセットが同一である場合は、単一の命令ループが検出される。
【００８５】
特別のハードウェアは、単一の命令ループをできるだけ速くセット・アップし、実行することを促進する。再び図１４に関し、ループ・レジスタ２９６は、この特別なケースに使用することができる。したがって、ステップ（３９４）は、単一の命令でループ・ハードウェア（例えば、ループ・レジスタ２９６のような）をロードすることによって実行され、そして単一の命令ループの出口条件が満たされるまで、繰り返しハードウェア・ループ・ユニット８からその命令を送出する。
【００８６】
単一の命令ループが検出され、そして特別のループ命令レジスタ２９６（図１４参照）内のデコード内に命令を保持することによって実行される。さらに、メモリ・デバイスはアクセスされず、また、上流のすべてのものは、電力を節約するためにに停止される。さらに、単一の命令ループがループ命令レジスタ２９６から送出されるので、命令フェッチ・ユニット５０は、次の命令（例えばキャッシュからの）を自由にフェッチすることができる。したがって、単一の命令ループが実行を終了したとき、次の命令は既に命令フェッチ・ユニット５０内にあり、その結果、ループの出口ペナルティはゼロとなる。
【００８７】
要約すると、ゼロ・オフセットのハードウェア・ループは３つのケースに分けられる。第１のケースでは、ゼロ・オフセットの単一命令ループは、ループ命令レジスタを介してデコードから直ちに送出される。第２のケースでは、ゼロ・オフセットのｎ−命令ループは直ちに検出され、ループ・バッファのｎ階層のセットに完全にロードされる。３番目のケースでは、ゼロ・オフセットのループは直ちに検出され、そのループの最初のｎ個の命令がループ・バッファのｎ階層のセットにロードされる。そして、次の命令は、ＶＴｏｐレジスタと関連する。
【００８８】
一実施例において、ここに記述されるようなループ・ハードウェアは、パイプライン内で実行される。これは、キャッシュ内でバッファを実行するよりもはるかに有利である。
【００８９】
１つの動作モードにおいて、ループ命令は、その命令が命令境界へアライメントするようなループ・ハードウェア内に格納される。これは、命令をアドレス境界へアライメントするよりも有利である。一旦ループ・ハードウェア内の命令境界へアライメントされると、命令がループ・ハードウェアから続いて送出されるときに、命令のアライメントは必要でない。
【００９０】
命令境界へ命令をアライメントするために、１セットの命令が、実行順にループ・ハードウェア内へロードされ、次の命令のアドレスがアドレス・レジスタに格納される。さらに、命令の第２セットが、実行順にメモリ・デバイスにロードされる。実行順にループ・ハードウェア内へ命令ロードすることは、ｎ個の連続する命令をｎ個のバッファへロードすることを含むが、ここで、ｎは正の整数である。さらに、ｎ個の連続する命令は、ループの最初のｎ個の命令またはループの最後のｎ個の命令を含む任意の連続する命令である。
【００９１】
他の実施例（図２３Ａ−図２３Ｃに図示）では、多くのハードウェア・ループ・ユニットが実行される。ハードウェア・ループ・ユニットの数のうちのいずれかの出力は、１またはそれ以上の他のハードウェア・ループ・ユニットのそれぞれの入力に接続される。このようにして、第２ハードウェア・ループ・ユニットは、第１ハードウェア・ループ・ユニットの出力を介してロードされる。これもまた、メモリ・デバイスが第２ハードウェア・ループ・ユニットをロードするために立ち上げられない限り、省電力を提供する。
【００９２】
あるケースでは、複数のループ・ユニットが、入れ子のループ（あるいは一致するループ）を処理するために使用される。内部のハードウェア・ループ・ユニットは、外部のハードウェア・ループ・ユニット内でアライメントする１またはそれ以上の命令を保持する。さらに、内部のハードウェア・ループ・ユニットは、外部のハードウェア・ループ・ユニットから内部のハードウェア・ループ・ユニットの入力へアライメントされた命令を送ることによってロードされる。
【００９３】
さらに他の実施例では、独立した複数のハードウェア・ループ・ユニットが実行される。しかしながら、２またはそれ以上の独立したハードウェア・ループ・ユニットが同一のＤＳＰシステム内で使用される場合は、制限が使用される。例えば、両方のループが同一のボトム命令を有しているとき、ループの１つが外部ループとして定義される。この制限がなければ、回路は２つのボトム・マッチに遭遇し、いずれをディクリメントすべきか判らなくなる。
【００９４】
さらに他の動作モードは、ハードウェア・ループのパワー・マネージメントを含む。ハードウェア・ループが可能になるとき、ＥＴｏｐレジスタが、個々のトップ・マッチを説明するためにＰＣと比較される。同様に、ＥＢｏｔレジスタが、各ボトム・マッチを説明するためにＰＣと比較される。しかしながら、ハードウェア・ループが不能になるとき、比較器回路内のいかなるスイッチングも、単なる電力の浪費となる。したがって、ハードウェア・ループが不能になるときは、ボトム・マッチおよびトップ・マッチの比較器回路を不能にすることが有利である。ハードウェア・ループが不能になるときに、比較器を不能にする比較器の入力を選ぶことによって、電力が保存される。
【００９５】
図２４は、省電力回路を示す典型的な実施例である。ＥＴｏｐレジスタ４００およびＥＢｏｔレジスタ４０２はそれぞれ、多くの入力のうちの１つをマルチプレクサ４０４，４０６へ提供する。マルチプレクサ４０４，４０６の出力は、比較器４０８，４１０への入力である。比較器４０８，４１０への他の入力は、マルチプレクサ４１２の出力から送出される。マルチプレクサ４１２の入力は、プログラム・カウンタ４１４から送出され、ループ不能信号４１６は制御ユニットから送出される。マルチプレクサ４０４，４０６，４１２は、ハードウェア・ループが不能であるときのようにアライメントされ、マルチプレクサ４１２の出力は、マルチプレクサ４０４，４０６の出力とは異なる。これは、ハードウェア・ループが不能であるときに、比較器４０８，４１０内でスイッチングが生じないことを保証する。
【００９６】
一実施例において、同一のループ不能信号４１６が、マルチプレクサ４０４，４０６，４１２に送られる。しかしながら、マルチプレクサ４１２が信号を受信する前に、インバータ（図示せず）がビットを反転する。このように、ループ不能信号が回路に送られるときに、マルチプレクサ４１２の出力はマルチプレクサ４０４，４０６の出力と異なる。
【００９７】
図２４はまた、ＥＣｎｔレジスタ４１８をインクリメントするための典型的な回路を図示する。ループの各パスにおいて、マルチプレクサ４２０がＥＣｎｔレジスタをディクリメントする。しかしながら、調整が必要な場合、調整信号（例えばクロッバ・カウント４２２）が、それに合うようにＥＣｎｔを調整する。従って、一旦ループがその最後の繰り返しを終了すると、比較器４２４が指示されたように信号４２５を送る。
【００９８】
図２４は、さらに、ボトム・マッチおよびトップ・マッチがどのように検出されるかを示す。比較器４１０が、プログラム・カウンタ４１２およびＥＴｏｐレジスタが同一の値を有することを検出したときは、トップ・マッチ信号４２８が送られる。比較器４０８が、プログラム・カウンタおよびＥＢｏｔレジスタが同一の値を有することを検出したときは、ボトム・マッチ信号４３０が送られる。
【００９９】
最後に、図２４は、さらに、パイプライン内で実行されたＶＴｏｐレジスタ４３２を図示する。ここで記述されたように、ＶＴｏｐは、ループ・ハードウェア（図示されない）にロードされた複数の命令に続く次の命令のアドレスを保持するアドレス・レジスタである。
【０１００】
発明の多様な実施例が記述された。例えば、プロセッサ内の実行のための多くのハードウェア・ループ技術が記述された。プロセッサは、汎用コンピュータ・システム、ディジタル処理システム、ラップトップ・コンピューター、個人用デジタル情報処理端末（ＰＤＡ）および携帯電話を含む多種多様のシステムで実行される。これに関連して、上述のハードウェア・ループは、電力消費を著しく増加することなく、処理速度を増加させるために容易に使用することができる。このようなシステムでは、プロセッサは、ＦＬＡＳＨメモリ・デバイス、または、オペレーティング・システムおよび他のソフトウェア・アプリケーションを格納するスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）のようなメモリ・デバイスに結合される。これらおよび他の実施例は、添付の請求項の範囲内である。
【図面の簡単な説明】
【図１】本発明の実施例に従って、パイプライン方式のプログラム可能なプロセッサの例を図示するブロック図である。
【図２】本発明の実施例に従って、プログラム可能なプロセッサのための実行パイプラインの一例を図示するブロック図である。
【図３】本発明の実施例に従って、早期レジスタがいつロードされるかの典型的なタイミングを図示するフロー図である。
【図４】本発明の実施例に従って、早期レジスタ値を決定するために、ループ・セットアップ命令がどのように使用されるか図示するフロー図である。
【図５】ハードウェア・ループ・ユニットの一実施例を図示する回路ブロック図である。
【図６】本発明に従って、早期レジスタの調整に関する動作モードを図示するフロー図である。
【図７】本発明の実施例に従って、構成レジスタ値を更新する方法を図示するフロー図である。
【図８】本発明の実施例に従って、構成上のカウント・レジスタ値を更新する代替方法を図示するフロー図である。
【図９】本発明の実施例に従って、早期レジスタの使用によって実現されたタイミング利点を図示するフロー図である。
【図１０】本発明の実施例に従って、早期カウント値を調整する効率的な方法を図示するフロー図である。
【図１１】本発明の実施例に従って、回路中のカウンタを図示するブロック図である。
【図１２】本発明の実施例に従って、ハイブリッドの動作モードを図示するフロー図である。
【図１３】本発明の実施例に従って、第１のｎ−１実行ステージにのみカウンタを有するハイブリッド回路を図示するブロック図である。
【図１４】本発明の実施例に従って、ハードウェア・ループ・ユニットを図示するブロック図である。
【図１５】本発明の実施例に従うシナリオを図示するダイヤグラムである。
【図１６】本発明の実施例に従うシナリオを図示するフロー図である。
【図１７】本発明の実施例に従うシナリオを図示する別のフロー図である。
【図１８】本発明の実施例に従う別のシナリオを図示するダイヤグラムである。
【図１９】他のシナリオを図示するフロー図である。
【図２０】本発明の実施例に従って、両方のシナリオを図示するフロー図である。
【図２１】本発明の実施例に従って、ゼロ・オフセット・ループを検出するための動作モードを図示するフロー図である。
【図２２】本発明の実施例に従って、単一命令のゼロ・オフセット・ループを検知しかつ扱うための動作モード図示するフロー図である。
【図２３Ａ】本発明の実施例に従って、互いに接続された多くのハードウェア・ループ・ユニットを図示するブロック図である。
【図２３Ｂ】本発明の実施例に従って、互いに接続された多くのハードウェア・ループ・ユニットを図示するブロック図である。
【図２３Ｃ】本発明の実施例に従って、互いに接続された多くのハードウェア・ループ・ユニットを図示するブロック図である。
【図２４】本発明の実施例に従って、電力削減回路を示すブロック図である。
【図１】
2004514985.tif 000003
【図２】
2004514985.tif 000004
【図３】
2004514985.tif 000005
【図４】
2004514985.tif 000006
【図５】
2004514985.tif 000007
【図６】
2004514985.tif 000008
【図７】
2004514985.tif 000009
【図８】
2004514985.tif 000010
【図９】
2004514985.tif 000011
【図１０】
2004514985.tif 000012
【図１１】
2004514985.tif 000013
【図１２】
2004514985.tif 000014
【図１３】
2004514985.tif 000015
【図１４】
2004514985.tif 000016
【図１５】
2004514985.tif 000017
【図１６】
2004514985.tif 000018
【図１７】
2004514985.tif 000019
【図１８】
2004514985.tif 000020
【図１９】
2004514985.tif 000021
【図２０】
2004514985.tif 000022
【図２１】
2004514985.tif 000023
【図２２】
2004514985.tif 000024
【図２３Ａ】
2004514985.tif 000025
【図２３Ｂ】
2004514985.tif 000026
【図２３Ｃ】
2004514985.tif 000027
【図２４】
2004514985.tif 000028
【国際公開パンフレット】
2004514985.tif 000029
2004514985.tif 000030
2004514985.tif 000031
2004514985.tif 000032
2004514985.tif 000033
2004514985.tif 000034
2004514985.tif 000035
2004514985.tif 000036
2004514985.tif 000037
2004514985.tif 000038
2004514985.tif 000039
2004514985.tif 000040
2004514985.tif 000041
2004514985.tif 000042
2004514985.tif 000043
2004514985.tif 000044
2004514985.tif 000045
2004514985.tif 000046
2004514985.tif 000047
2004514985.tif 000048
2004514985.tif 000049
2004514985.tif 000050
2004514985.tif 000051
2004514985.tif 000052
2004514985.tif 000053
2004514985.tif 000054
2004514985.tif 000055
2004514985.tif 000056
2004514985.tif 000057
2004514985.tif 000058
2004514985.tif 000059
2004514985.tif 000060
2004514985.tif 000061
2004514985.tif 000062
2004514985.tif 000063
2004514985.tif 000064
2004514985.tif 000065
2004514985.tif 000066
2004514985.tif 000067
2004514985.tif 000068
2004514985.tif 000069
2004514985.tif 000070
2004514985.tif 000071
2004514985.tif 000072
2004514985.tif 000073
2004514985.tif 000074
2004514985.tif 000075
2004514985.tif 000076
2004514985.tif 000077
2004514985.tif 000078
2004514985.tif 000079
2004514985.tif 000080
2004514985.tif 000081
2004514985.tif 000082
2004514985.tif 000083
2004514985.tif 000084
2004514985.tif 000085
2004514985.tif 000086
2004514985.tif 000087
2004514985.tif 000088
2004514985.tif 000089
2004514985.tif 000090
2004514985.tif 000091
2004514985.tif 000092
2004514985.tif 000093
2004514985.tif 000094
2004514985.tif 000095
2004514985.tif 000096
2004514985.tif 000097
2004514985.tif 000098
2004514985.tif 000099
2004514985.tif 000100
2004514985.tif 000101
2004514985.tif 000102
2004514985.tif 000103
2004514985.tif 000104
2004514985.tif 000105
【国際公開パンフレット（コレクトバージョン）】
2004514985.tif 000106
【国際公開パンフレット（コレクトバージョン）】
2004514985.tif 000107
【国際公開パンフレット（コレクトバージョン）】
2004514985.tif 000108
2004514985.tif 000109
2004514985.tif 000110
2004514985.tif 000111
2004514985.tif 000112
2004514985.tif 000113
2004514985.tif 000114
2004514985.tif 000115
2004514985.tif 000116
2004514985.tif 000117
2004514985.tif 000118
2004514985.tif 000119
2004514985.tif 000120
2004514985.tif 000121
2004514985.tif 000122
2004514985.tif 000123
2004514985.tif 000124
2004514985.tif 000125
2004514985.tif 000126
2004514985.tif 000127
2004514985.tif 000128
2004514985.tif 000129
2004514985.tif 000130
2004514985.tif 000131
2004514985.tif 000132
2004514985.tif 000133
2004514985.tif 000134
2004514985.tif 000135
2004514985.tif 000136
2004514985.tif 000137
2004514985.tif 000138
2004514985.tif 000139
2004514985.tif 000140
2004514985.tif 000141
2004514985.tif 000142
2004514985.tif 000143
2004514985.tif 000144
2004514985.tif 000145
2004514985.tif 000146
2004514985.tif 000147
2004514985.tif 000148
2004514985.tif 000149
2004514985.tif 000150
2004514985.tif 000151
2004514985.tif 000152
2004514985.tif 000153
2004514985.tif 000154
2004514985.tif 000155
2004514985.tif 000156
2004514985.tif 000157
2004514985.tif 000158
2004514985.tif 000159
2004514985.tif 000160
2004514985.tif 000161
2004514985.tif 000162
2004514985.tif 000163
2004514985.tif 000164
2004514985.tif 000165
2004514985.tif 000166
2004514985.tif 000167
2004514985.tif 000168
2004514985.tif 000169
2004514985.tif 000170
2004514985.tif 000171
2004514985.tif 000172
2004514985.tif 000173
2004514985.tif 000174
2004514985.tif 000175
2004514985.tif 000176
2004514985.tif 000177
2004514985.tif 000178
2004514985.tif 000179
2004514985.tif 000180
【国際調査報告】
2004514985.tif 000181
2004514985.tif 000182
2004514985.tif 000183