(57)【要約】ある実施例において、プログラム可能なプロセッサは、ハードウェア・ループをサポートするために適合される。プロセッサは、レジスタの第１セット、レジスタの第２セット、第１パイプライン、および第２パイプラインのようなハードウェアを含む。さらに、プロセッサは、ハードウェア・ループを実行するときに、ハードウェアを効率的に実行するために適合された制御ユニットを含む。
2004516571.tif 000002
【特許請求の範囲】
【請求項１】
パイプライン方式のプロセッサの第１パイプラインを経由してハードウェア・ループの第１ループ条件を伝播する段階と、
前記パイプライン方式のプロセッサの第２パイプラインを経由して第２ループ条件を伝播する段階と、
から構成されることを特徴とする方法。
【請求項２】
前記ループ条件を伝播する段階に先立って、レジスタの第１セットに前記ループ条件を書き込む段階と、
前記ループ条件を伝播する段階の後に、レジスタの第２セットにループ条件を書き込む段階と、
をさらに含むことを特徴とする請求項１記載の方法。
【請求項３】
前記第１および第２ループ条件が、パラレルに伝播されることを特徴とする請求項１記載の方法。
【請求項４】
第３パイプラインを経由してに第３ループ条件を伝播する段階をさらに含むことを特徴とする請求項１記載の方法。
【請求項５】
前記レジスタの第１セットに前記ループ条件を書き込む段階に先立って、前記ハードウェア・ループの前記ループ条件を生成する段階をさらに含むことを特徴とする請求項２記載の方法。
【請求項６】
前記ループ条件を生成する段階が、ループ・セットアップ命令のプログラム・カウンタ関連データから前記ループ条件のうちの少なくとも１つを計算する段階を含むことを特徴とする請求項５記載の方法。
【請求項７】
第１パイプライン内の第１算術論理演算ユニットを使用して、ループ・セットアップ命令からハードウェア・ループの第１ループ条件を計算する段階と、
第２パイプライン内の第２算術論理演算ユニットを使用して、前記ループ・セットアップ命令から前記ハードウェア・ループの第２ループ条件を計算する段階と、
から構成されることを特徴とする方法。
【請求項８】
レジスタの第１セットに、前記第１および第２ループ条件を書き込む段階をさらに含むことを特徴とする請求項７記載の方法。
【請求項９】
第３パイプライン内の第３算術論理演算ユニットを使用して、前記ループ・セットアップ命令から前記ハードウェア・ループの第３ループ条件を計算する段階と、
レジスタの第１セットに、前記第１、第２および第３ループ条件を書き込む段階と、
をさらに含むことを特徴とする請求項７記載の方法。
【請求項１０】
前記第１ループ条件を計算する段階、および前記第２ループ条件を計算する段階が、パラレルに生じることを特徴とする請求項７記載の方法。
【請求項１１】
前記第１ループ条件を、第１パイプラインを経由してレジスタの第２セットへ伝播する段階をさらに含むことを特徴とする請求項８記載の方法。
【請求項１２】
前記第２ループ条件を、第２パイプラインを経由して前記レジスタの第２セットへ伝播する段階をさらに含むことを特徴とする請求項１１記載の方法。
【請求項１３】
第１算術論理演算ユニットを含む第１パイプライン、および第２算術論理演算ユニットを含む第２パイプラインと、
前記パイプラインに結合された制御ユニットと、
から構成され、前記制御ユニットは、
前記第１パイプライン内の前記第１算術論理演算ユニットを使用して、ループ・セットアップ命令からハードウェア・ループの第１ループ条件を計算し、および、
前記第２パイプライン内で前記第２算術論理演算ユニットを使用して、ループ・セットアップ命令から前記ハードウェア・ループの第２ループ条件を計算するために適合される、
ことを特徴とする装置。
【請求項１４】
前記制御ユニットは、前記制御ユニットに結合されたレジスタの第１セットをさらに含み、前記制御ユニットが、前記レジスタの第１セットに前記ハードウェア・ループの前記第１および第２ループ条件を書き込むためにさらに適合されることを特徴とする請求項１３記載の装置。
【請求項１５】
前記装置は、前記制御ユニットに結合された第３パイプラインさらに含み、前記第３パイプラインは第３算術論理演算ユニットを含み、前記制御ユニットは、
前記第３パイプライン内の前記第３算術論理演算ユニットを使用して、前記ループ・セットアップ命令から前記ハードウェア・ループの第３ループ条件を計算し、および、
前記レジスタの第１セットに前記ハードウェア・ループの前記第１、第２および第３ループ条件を書き込むためにさらに適合される、
ことを特徴とする請求項１４記載の装置。
【請求項１６】
前記装置は、前記制御ユニットに結合されたレジスタの第２セットをさらに含み、前記制御ユニットが、前記第１パイプラインを経由して前記レジスタの第２セットへ前記ループ条件のうちの少なくとも１つを伝播するためにさらに適合されることを特徴とする請求項１４記載の装置。
【請求項１７】
前記制御ユニットは、前記第２パイプラインを経由して前記レジスタの第２セットへ前記ループ条件のうちの少なくとも１つを伝播するためにさらに適合されることを特徴とする請求項１６記載の装置。
【請求項１８】
前記装置は、前記制御ユニットに結合されたレジスタの第２セットをさらに含み、前記制御ユニットは、
前記第１パイプラインを経由して前記レジスタの第２セットへ前記ループ条件のうちの少なくとも１つを伝播し、
前記第２パイプラインを経由して前記レジスタの第２セットへ前記ループ条件のうちの少なくとも１つを伝播し、および、
前記第３パイプラインを経由して前記レジスタの第２セットへ前記ループ条件のうちの少なくとも１つを伝播するためにさらに適合される、
ことを特徴とする請求項１５記載の装置。
【請求項１９】
前記レジスタの第１セットが、推論的なレジスタであることを特徴とする請求項１４記載の装置。
【請求項２０】
前記パイプラインのうちの少なくとも１つが、データ・アドレス生成パイプラインであることを特徴とする請求項１３記載の装置。
【請求項２１】
前記パイプラインのうちの少なくとも１つが、システム・パイプラインであることを特徴とする請求項１３記載の装置。
【請求項２２】
レジスタのセット、第１パイプライン、および第２パイプラインと、
前記レジスタのセット、前記第１パイプライン、および前記第２パイプラインに結合された制御ユニットと、
から構成され、前記制御ユニットは、
前記第１パイプラインを経由して前記レジスタのセットへハードウェア・ループのループ条件のうちの少なくとも１つを伝播し、および、
前記第２パイプラインを経由して前記レジスタのセットへ前記ハードウェア・ループのループ条件のうちの少なくとも１つを伝播するために適合される、
ことを特徴とする装置。
【請求項２３】
前記レジスタのセットがレジスタの第２セットであって、前記装置は、前記制御ユニットに結合されたレジスタの第１セットをさらに含み、前記制御ユニットは、
前記レジスタの第２セットへ前記ループ条件のうちの少なくとも１つを伝播することに先立って、前記レジスタの第１セットに前記ハードウェア・ループの前記ループ条件を書き込むためにさらに適合される、
ことを特徴とする請求項２２記載の装置。
【請求項２４】
前記パイプラインのうちの少なくとも１つが、データ・アドレス生成パイプラインであることを特徴とする請求項２２記載の装置。
【請求項２５】
前記パイプラインのうちの少なくとも１つが、システム・パイプラインであることを特徴とする請求項２２記載の装置。
【請求項２６】
スタティック・ランダム・アクセス・メモリ装置と、
前記スタティック・ランダム・アクセス・メモリ装置に結合されたプロセッサとから構成され、前記プロセッサは、レジスタの第１セット、第１パイプライン、第２パイプライン、および制御ユニットを含み、前記制御ユニットは、
前記第１パイプライン内の第１算術論理演算ユニットを使用して、ループ・セットアップ命令からハードウェア・ループの第１ループ条件を計算し、
前記第２パイプライン内の第２算術論理演算ユニットを使用して、前記ループ・セットアップ命令から前記ハードウェア・ループの第２ループ条件を計算し、および、
前記レジスタの第１セットに前記ハードウェア・ループの前記第１および第２ループ条件を書き込むために適合される、
ことを特徴とするシステム。
【請求項２７】
前記プロセッサは第３パイプラインを含み、前記制御ユニットは、
前記第３パイプライン内の第３算術論理演算ユニットを使用して、前記ループ・セットアップ命令から前記ハードウェア・ループの第３ループ条件を計算し、および、
前記レジスタの第１セットに前記ハードウェア・ループの前記第１、第２および第３ループ条件を書き込むためにさらに適合される、
ことを特徴とする請求項２６記載のシステム。
【請求項２８】
スタティック・ランダム・アクセス・メモリ装置と、
スタティック・ランダム・アクセス・メモリ装置に結合されたプロセッサと、
から構成され、前記プロセッサは、レジスタの第１セット、レジスタの第２セット、第１パイプライン、第２パイプライン、および制御ユニットを含み、前記制御ユニットは、
前記レジスタの第１セットにハードウェア・ループのループ条件を書き込み、
前記第１パイプラインを経由して前記レジスタの第２セットへ前記ループ条件のうちの少なくとも１つを伝播し、および、
前記第２パイプラインを経由して前記レジスタの第２セットへ前記ループ条件のうちの少なくとも１つを伝播するために適合される、
ことを特徴とするシステム。
【請求項２９】
前記プロセッサがさらに第３パイプラインを含み、前記制御ユニットは、前記第３パイプラインを経由して前記レジスタの第２セットへ前記ループ条件のうちの少なくとも１つを伝播するためにさらに適合されることを特徴とする請求項２８記載のシステム。
【請求項３０】
前記制御ユニットは、
前記第１パイプライン内の第１算術論理演算ユニットを使用して、ループ・セットアップ命令から前記ハードウェア・ループの第１ループ条件を計算し、および、
前記第２パイプライン内の第２算術論理演算ユニットを使用して、前記ループ・セットアップ命令から前記ハードウェア・ループの第２ループ条件を計算する、
ためにさらに適合されることを特徴とする請求項２８記載のシステム。
【発明の詳細な説明】
【０００１】
【従来の技術】
デジタル信号処理（ＤＳＰ）システムのようなプログラム可能なプロセッサを設計する際に、２つの競合する設計のゴールは処理速度と電力消費である。従来のプロセッサは、ソフトウェア命令の実行速度を増加させることを目指した多種多様なハードウェアを含む。しかしながら、ハードウェアの追加によって、典型的には、プロセッサの電力消費が増加する。
【０００２】
プログラム可能なプロセッサの速度を増加させるための１つの技術は、「ハードウェア・ループ」であり、それはループ構成内でソフトウェア命令の実行を促進させるために設計された専用ハードウェアである。ハードウェア・ループは、ローカル・レジスタに命令をキャッシュすることによりソフトウェア・ループを実行するために使用されるクロック・サイクルの数を減少させることができ、それによって、メモリ装置または命令キャッシュから同じ命令を複数回フェッチする必要性を低減する。
【０００３】
【実施例の詳細な説明】
図１は、本発明の実施例に従って効率的なハードウェア・ループをサポートするためにアレンジされたプログラム可能なプロセッサ２を図示するブロック図である。プロセッサ２は、パイプライン４に制御信号を送る制御ユニット６を含む。制御ユニット６は、プロセッサ２の電力消費を著しく増加させることなく、高速のハードウェア・ループを促進するハードウェア・ループ・ユニット７を含む。
【０００４】
ハードウェア・ループをサポートするために、プロセッサ２は、ループのための入口および出口条件をセットすることにより、ハードウェア・ループ・ユニット７のようなハードウェアを初期化するループ・セットアップ命令をサポートする。入口および出口条件はループ条件、すなわち、トップ、ボトム、およびカウントによって定義される。トップ条件は、ループの最初の命令（あるいはトップ）を定義する。ボトム条件は、ループの最後の命令（あるいはボトム）を定義する。そしてカウント条件は、ループの複数回の繰り返しを定義する。
【０００５】
ハードウェア・ループの入口は、最初の「トップ・マッチ」で生じる。トップ・マッチは、プログラム・カウンタ（ＰＣ）がループのトップ命令を指すときに生じる。ハードウェア・ループの出口は、最後の「ボトム・マッチ」で生じ、それは、ＰＣがループのボトム命令を指すときに生じる。
【０００６】
最初のトップ・マッチでカウントを初期化すること、および各ボトム・マッチでカウントをディクリメントすることによって、ハードウェアは、それがいつ最後のボトム・マッチに遭遇したかを追跡する。このように、トップ、ボトムおよびカウントのループ条件は、ハードウェア・ループの入口および出口の条件を定義する。
【０００７】
プロセッサ２は、１つ以上のパイプライン４、および制御ユニット６を含む。例えば、パイプライン４は、１つ以上のシステム・パイプライン、１つ以上のデータ・アドレス生成パイプライン、１つ以上の実行ユニット・パイプライン、および特定のインプリメンテーションのために必要な１つ以上の付加的なパイプラインを含んでもよい。制御ユニット６は、クロック・サイクル中にパイプライン４を通って命令および／またはデータのフローを制御する。例えば、命令の処理中に、制御ユニット６は、命令をデコードし、また、例えば結果をメモリにライト・バックすることなどを含む、対応する動作を正確に実行することをパイプラインの多様なコンポーネントに命令する。
【０００８】
命令は、１つ以上のパイプライン４の第１ステージにロードされ、後続のステージを通って処理される。ステージは他のステージと同時に処理を行う。データは、システムのサイクル中にパイプライン４内のステージ間を通過する。命令の結果は、パイプライン４の終端から間断なく出現する。
【０００９】
図２は、本発明の実施例に従って、パイプラインの例を図示するブロック図である。パイプライン１０は、単一のクロック・サイクルの間に複数の命令の実行を促進する複数のステージを有する。パイプライン１０において、命令は最初のクロック・サイクルで命令フェッチ（ＩＦ）ステージ１２に入る。そして、その命令は、後続のクロック・サイクルの間にパイプラインを下流へ送られる。典型的には、他の命令が後続のクロック・サイクルの間にＩＦステージ１２に入り、そして、後続のクロック・サイクルの間にパイプラインを下流へ送られる。同様に、追加命令が、後続のクロック・サイクルの間に、それぞれＩＦステージ１２に入る。パイプラインの段数は、パイプラインが同時に処理できる命令の数を定義する。
【００１０】
パイプラインの異なるステージは、以下のように動作する。命令はフェッチ・ユニット１３によってＩＦステージ１２でフェッチされ、ＤＥＣステージ１４の間に命令レジスタ１５からデコードされる。ＡＣステージ１８の間に、１個以上のデータ・アドレス生成器１９が、その動作を行なうために使用されるあらゆるメモリ・アドレスを計算する。データ・アドレス生成器１９は、計算を促進するために１個以上の算術論理演算ユニット（ＡＬＵ）を含む。
【００１１】
実行ステージ（ＥＸ１−ＥＸｎ）２２Ａ−２２Ｎの間に、実行ユニット２３，２９は、例えば２つの数の加算または乗算のような指定された動作を行なう。実行ユニットは、例えば、１つ以上の算術論理演算ユニット（ＡＬＵ）、浮動小数点ユニット（ＦＰＵ）およびバレル・シフタを含む、動作を実行するための特殊なハードウェアを含んでもよいが、本発明の範囲はこの事項に制限されるものではない。多種多様のデータ、例えばデータ・アドレス生成器によって生成されたアドレス、メモリから取り出されたデータ、またはデータ・レジスタから取り出されたデータが、実行ユニットに利用される。ライト・バック・ステージ（ＷＢ）３０の間に、その結果が、パイプラインの外の記憶場所またはデータ・レジスタに、または構成レジスタ３２のようなパイプライン内のデータ・レジスタに書き込まれる。パイプライン１０のステージは、データの格納のために、フリップフロップのような１つ以上の格納回路を含む。
【００１２】
上述したように、プロセッサ２は、ループ・セットアップ命令をサポートする。ループ・セットアップ命令は、構成レジスタ３２にハードウェア・ループ（例えばトップおよびボトム）の境界を書き込むことにより、ハードウェア・ループを初期化する。ループ・セットアップ命令もまた、ループが完了すべきである回数を示す構成レジスタ３２内のカウントを初期化する。さらに、ループ・セットアップ命令は、ループのトップに到達する前にループ・セットアップ命令に続く命令の数を示すオフセットを定義する。ハードウェア・ループが初期化された後、ハードウェア・ループは、ループの出口条件が満たされる（例えば、０に等しいカウントを備えたボトム・マッチ）までパイプライン１０中で動作する。
【００１３】
構成レジスタ３２は、命令が引き渡されるやいなや、例えば、ループ・セットアップ命令がＷＢステージ３０を出るときに、一般にロードされる。したがって、ループ・セットアップ命令がパイプライン１０に入るときから数クロック・サイクルが過ぎるまで、構成レジスタ３２に格納された入口および出口条件は更新されない。数クロック・サイクルが過ぎるまで入口および出口条件が更新されないので、ハードウェア・ループをセット・アップすることによる遅れが存在してもよい。例えば、ループ・セットアップ命令が引き渡される前に、ループ中の第１命令がパイプライン１０に入る場合、構成レジスタは、ループの一部として命令を識別するためにセットアップされなくてもよい。さらに、これは、パイプラインの深さが増すにつれ増加する。
【００１４】
一実施例において、プロセッサ２は、パイプライン中の早期レジスタ３４のセットを維持することによって、これらの課題に対処する。図２に図示されるように、早期レジスタＥＴｏｐ３４ＡおよびＥＢｏｔ３４Ｂがデコード・ステージに存在する一方で、ＥＣｎｔ３４ＣがＡＣステージに存在する。
【００１５】
早期レジスタ３４のセットを実行することにより、ループ・セットアップのペナルティを減少または回避して、プロセッサ２の処理速度を増加することができる。上述のように、ループ・セットアップ命令がパイプラインに入る時間と構成レジスタが書き込まれる時間との間に、数クロック・サイクルが経過することがある。しかしながら、ループ・セットアップ命令が構成レジスタへ書き込むかなり前に、早期レジスタがロードされる。この理由により、早期レジスタの実行が、ハードウェア・ループをセットアップするための時間を削減する。
【００１６】
早期レジスタは、構成レジスタの値を予測するかまたは推測するために使用される推論的なレジスタである。構成レジスタと異なり、推論的なレジスタはシステムの命令セットにサポートされない。したがって、プログラム・コードはその推論的なレジスタにアクセスするために使用されない。この理由により、プログラマは、構成レジスタでできるのと同じ方法で、推論的なレジスタへ、またはそのレジスタから、データを移動させることができない。
【００１７】
早期レジスタのロードはいくつかの異なる方法で行われる。例えば、早期レジスタは、単に通常の命令レジスタ転送を構成レジスタに対して実行することの結果としてロードされる。言いかえれば、システムは、他のいくつかのレジスタの内容をロードすることを構成レジスタに命じ、その結果、早期レジスタが更新される。しかし、レジスタをロードする別の方法は、メモリからそれらをロードすることである。言いかえれば、システムは、メモリからデータをフェッチし、そのデータを構成レジスタにロードし、そして早期レジスタを更新する。
【００１８】
しかしながら、メモリからの通常のレジスタの移動またはロードに関する問題は、それらがループ・セットアップ・ペナルティを持ち込むかもしれないということである。データの書き込みが可能になるまで、システムはパイプラインをストールさせるので、これらのペナルティが発生する。これらのペナルティを回避するために、構成レジスタが書き込まれる前に、ループ・セットアップ命令が早期レジスタをロードするために使用することができる。
【００１９】
次の例は、典型的なループ・セットアップ機械語命令を起動するためのシンタックスを示す。
【００２０】
ＬＳＥＴＵＰ（ＰＣ Ｒｅｌａｔｉｖｅ Ｔｏｐ， ＰＣ Ｒｅｌａｔｉｖｅ Ｂｏｔｔｏｍ）Ｃｏｕｎｔｅｒ＝Ｘ
ＰＣ Ｒｅｌａｔｉｖｅ Ｔｏｐは、現在の命令からループの開始までの距離を指定する（開始オフセット）。ＰＣ Ｒｅｌａｔｉｖｅ Ｂｏｔｔｏｍは、現在の命令からループの終了までの距離を指定する（終了オフセット）。さらに、Ｃｏｕｎｔｅｒ変数は、カウンタ・レジスタおよびループ中の繰り返しの回数を示すループ・カウントを特定する。
【００２１】
図３は、本発明の実施例に従って、早期レジスタがロードされるタイミングを図示するフロー図である。記述されるように、ループ・セットアップ命令は、カウント値、トップ値およびボトム値の形式で、ループ条件を収容することができる。全体として、これらの３つの値は、ハードウェア・ループの入口および出口条件を定義する。
【００２２】
カウント値は、ループが作る繰り返しの回数を表わす。一旦ループ・セットアップ命令がＡＣに入ると（３８）、カウント値がＥＣｎｔレジスタに書かれる（３９）。ＥＣｎｔレジスタへの最初の書き込みは、データ・レジスタからのレジスタ転送によって行われる。ある動作モードでは、ＥＣｎｔレジスタには、データ・アドレス生成（ＤＡＧ）パイプラインのポインタ・レジスタ（ＰＲＥＧＳ）内に含まれていたデータが書き込まれる。必要があれば、パイプラインの１つの中のＡＬＵが、ループ・セットアップ命令からカウント値を計算するために使用されてもよい。
【００２３】
トップおよびボトム値は、どの命令がループのトップか、また、どの命令がループのボトムかを示す。しかしながら、ループ・セットアップ命令のトップおよびボトム値は、プログラム・カウンタ（ＰＣ）に関連する。したがって、ＡＣステージでの計算が、ＥＴｏｐ３４ＡおよびＥＢｏｔ３４Ｂレジスタにそれぞれ書き込まれるトップおよびボトム値を得るために使用される（４０）。ループ・セットアップ命令がＥＸ１に入った後（４１）、トップおよびボトム値は、ＥＴｏｐ３４ＡおよびＥＢｏｔ３４Ｂレジスタに書き込まれる（４２）。
【００２４】
本発明の実施例によれば、システム資源を効率的に実行することができる。このように、ハードウェア・ループを操作する付加的なシステム・ハードウェアの必要性を回避できる。上述したように、ハードウェア・ループのループ条件は、ループ・セットアップ命令に含まれる。プロセッサに含まれる利用可能なＡＬＵを効率的に再使用することによって、特定目的のハードウェア・ループＡＬＵを必要とせずに、ハードウェア・ループをセット・アップすることができる。
【００２５】
図４は、本発明の実施例に従って１つ以上のパイプラインの効率的な使用を図示するブロック図である。ループ・セットアップ命令は、フェッチ・ユニットによってＩＦステージの間にフェッチされ、ＤＥＣステージ１４の間に命令レジスタ（図示されず）からデコードされる。この時点で、ループ・セットアップ命令は、異なるパイプライン内で利用可能なＡＬＵ（５０、５１）に送られて、ループ条件がすべてパラレルに計算される。
【００２６】
例えば、ある特定の実施例では、第１パイプライン（例えば第１ＤＡＧパイプライン６０）内のＡＬＵ５２は、カウント値をパスするために使用され、あらゆる必要なシフティングまたは計算を実行することができる。さらに、第２パイプライン（例えば第２ＤＡＧパイプライン６２）内のＡＬＵ５０は、ループ・セットアップ命令からループのボトム値を計算するために使用される。さらに、第３パイプライン（例えば、システム・パイプライン６４の分岐ユニット５４に含まれるもの）内のＡＬＵ５１は、ループ・セットアップ命令からループのトップ値を計算するために使用される。このように、ループ条件はパラレルに計算される。さらに、各ＡＬＵは、システムがハードウェア・ループを操作するために形成されていてもいなくても、すべて利用可能な資源である。したがって、これら利用可能な資源を再使用することによって、前述のインプリメンテーションは、ハードウェア・ループを操作するためのハードウェアの不必要な増加を回避することができる。
【００２７】
ループ条件が計算された後、これらの条件は、早期（または推論的な）レジスタ３４のセットに書き込まれる。ＥＴｏｐレジスタ３４Ａは、ループの最初の命令（またはループのトップ）を指すためにロードされる。ＥＢｏｔレジスタ３４Ｂは、ループの最後の命令（またはループのボトム）を指すためにロードされる。ＥＣｎｔレジスタ３４Ｃは、ループが繰り返される回数を指定するためにロードされる。一実施例では、ＥＣｎｔ３４Ｃは、ボトム・マッチに遭遇するたびにディクリメントしながら下方へカウントする。
【００２８】
早期レジスタ３４への計算されたループ条件を書き込むことに加えて、このデータは、さらに、ライト・バック・ステージで書き込まれた構成レジスタ３２のセットへ送られる。本発明の他の実施例によれば、このデータは、複数の利用可能なパイプラインの下流へ送られる。このようにして、２つ以上の構成レジスタ３２は、パラレルに書き込まれる。さらに、付加的な格納ハードウェア（例えば付加的なフリップフロップのような）は、ＷＢへループ条件を運ぶために不必要である。
【００２９】
ある特定の実施例では、第１パイプライン（例えばＤＡＧパイプライン６０）は、構成レジスタ３２Ａへカウント変数を運ぶために使用される。さらに、第２パイプライン（例えばＤＡＧパイプライン６２）は、構成レジスタ３２Ｂへトップ変数を運ぶために使用される。さらに、第３パイプライン（例えばシステム・パイプライン６４）は、構成レジスタ３２Ｃへボトム変数を運ぶために使用される。これらの各パイプラインは、システムがハードウェア・ループを操作するためにアレンジされていてもいなくても、すべて利用可能な資源である。したがって、これらの利用可能な資源を再使用することによって、前述のインプリメンテーションは、ハードウェア・ループを操作するためのハードウェアの不必要な増加を回避することができる。
【００３０】
パイプラインの再使用には、いくつかの利点が認められる。例えば、単一のパイプラインだけがループ条件を計算するために使用された場合、単一のＡＬＵを用いて全ての必要な計算を行なうためにはいくつかのクロック・サイクルが必要である。さらに、単一のパイプラインだけがループ条件を伝播するために使用された場合、データをＷＢへ渡すために追加のクロック・サイクルが必要である。これらの理由により、追加のパイプラインの再使用は、これらの追加のループ・セットアップ・ペナルティを回避することによって、改善されたシステム性能を提供することができる。さらに、上述のように、既存のパイプラインの再使用は、プロセッサ内のハードウェアの減少を実現することができる。さらに、それはパラレルに２つ以上のレジスタにループ条件を書き込むことを促進することができる。
【００３１】
図５は、発明の実施例に従って早期レジスタ値を計算する１つの動作モードを図示するフロー図である。あるフォーマットによれば、ループ・セットアップ命令は、開始オフセット（Ｓ−オフセット）および終了オフセット（Ｅ−オフセット）を含むいくつかのセットアップ変数を指定する。Ｓ−オフセットは、ループ・セットアップ命令からループ内の最初の命令までの命令ストリームにおける距離を指定する。同様に、Ｅ−オフセットは、ループ・セットアップ命令からループ内の最後の命令までの命令ストリームにおける距離を指定する。
【００３２】
例えば、ループ内の最初の命令が、ループ・セットアップ命令の直後に続く命令である場合、Ｓ−オフセットはループ・セットアップ命令の幅になるであろう。命令ストリームにおいて、ループ・セットアップ命令とループ内の最初の命令との間に１つの命令がある場合、Ｓ−オフセットは、ループ・セットアップ命令および１つの命令の幅になるであろう。同様に、ループ・セットアップと最初の命令の間に２つの命令がある場合、Ｓ−オフセットはループ・セットアップ命令および２つの命令の幅になるであろう。
【００３３】
図５に示されるように、Ｓ−オフセットとＥ−オフセットは、典型的にはループ・セットアップ命令によって指定される（７４）。しかしながら、ループ・セットアップ命令は、プログラム・カウンタ（ＰＣ）に関するオフセットを指定する。したがって、ＰＣ値も決定される（７５）。そして、ＰＣ値およびＳ−オフセットが、ＥＴｏｐレジスタ・データを計算するために使用される（７６）。さらに、ＰＣ値およびＥ−オフセットが、ＥＢｏｔレジスタ・データ（７７）を計算するために使用される。一旦計算されると、早期レジスタ・データが早期レジスタに書き込まれる（７８）。再び、システム内で利用可能なＡＬＵの再使用することによって、早期レジスタ・データがパラレルに計算され、不必要なハードウェアを増加することなくそれを行うことができる。
【００３４】
図５を図２と比較することにより、ＥＴｏｐおよびＥＢｏｔレジスタを書き込む典型的なタイミングを示す。ステップ（７４），（７５）はＤＥＣステージ１４で生じる。計算ステップ（７６），（７７）はＡＣステージ１８で生じる。したがって、書込みステップ（７８）はＥＸ１ステージ２２Ａで生じる。
【００３５】
一旦ロードされると、早期レジスタはハードウェア・ループをセット・アップするために使用される。図６は、パイプライン１０の命令フェッチ（ＩＦ）ユニット１３およびデコーダ・ユニット１７に接続されたハードウェア・ループ・ユニット７の一実施例を図示するブロック図である。ある実施例では、早期レジスタは、命令８４のストリーム内のループを検知するために使用される。そして、ループ・ハードウェア８６に、１つ以上のループ命令がロードされる。一旦ロードされると、ループ命令は何度もループ・ハードウェアから発行される。したがって、ハードウェア・ループが検知される場合は、１つ以上のループ命令がＩＦユニット１３によって一度だけフェッチされ、そして、ハードウェア・ループ・ユニット７から繰り返し発行される。
【００３６】
図７は、本発明の実施例に従ってハードウェアの再使用を図示するフロー図である。利用可能なハードウェアを使用して、ループ・セットアップ命令が受け取られるときに、第１ループ条件および第２ループ条件がパラレルに計算される（１０２，１０４）。これらの条件は、例えば、第１および第２算術論理演算ユニット（ＡＬＵ）を使用して計算される。さらに、これらのＡＬＵは異なるパイプラインに存在することがある。あるいは、付加的なループ条件が、他の利用可能なパイプラインに存在する付加的なＡＬＵを使用して計算されることもある。
【００３７】
一旦ループ条件が計算されると（１０２，１０４）、それらは推論的なレジスタに書き込まれ（１０６）、ハードウェア・ループをセット・アップするために使用される。さらに、ループ条件は、第１パイプラインおよび第２パイプラインを経由して構成レジスタのセットにそれぞれ伝播される（１０８，１１０）。付加的なループ条件を伝播する必要がある場合には、付加的なパイプラインが使用されてもよい。一旦伝播されると、ループ条件は構成レジスタのセットに書き込まれる（１１２）。
【００３８】
ループ・セットアップ命令からループ条件を計算するために、１つ以上のＡＬＵの使用が要求されることがある。さらに、構成レジスタのセットへ計算された条件を伝播するには、すべてのループ条件のために、すべてのパイプ・ステージで格納回路（例えばフリップフロップ）を要求することがある。利用可能なシステム資源を効率的に実行することによって、ハードウェア・ループは、付加的なハードウェア・ループＡＬＵおよびフリップフロップを必要とすることなくセット・アップすることができる。
【００３９】
本発明の多様な実施例が記述された。例えば、ハードウェア・ループ・コンテキストにおいて従来使用されないハードウェアの再使用が、プロセッサ内のインプリメンテーションのために記述された。プロセッサは、汎用計算機システム、ディジタル処理システム、ラップトップ・コンピュータ、パーソナル・デジタル情報処理端末（ＰＤＡ）および携帯電話を含む多種多様のシステムで実行することができる。このコンテキストにおいて、上述されたハードウェアの再使用は、効率的なハードウェア・ループを促進するために容易に使用することができる。そのようなシステムでは、プロセッサは、オペレーティング・システムおよび他のソフトウェア・アプリケーションを格納することができる、フラッシュ・メモリ装置またはスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）のようなメモリ装置に結合される。これらおよび他の実施例は、添付の請求項の範囲内である。
【図面の簡単な説明】
【図１】本発明の実施例に従って適合されたプログラム可能なプロセッサの一例を図示するブロック図である。
【図２】本発明の実施例に従ってパイプラインを図示するブロック図である。
【図３】本発明の実施例に従って早期レジスタをロードするプロセスの一例を図示するフロー図である。
【図４】本発明の実施例に従って１つ以上のパイプラインの効率的な使用を図示するブロック図である。
【図５】本発明の実施例に従って早期レジスタ値を決定するループ・セットアップ命令の使用の一例を図示するフロー図である。
【図６】ハードウェア・ループ・ユニットの一実施例を図示する回路ブロック図である。
【図７】本発明の実施例に従ってハードウェアの再使用を図示するフロー図である。
【図１】
2004516571.tif 000003
【図２】
2004516571.tif 000004
【図３】
2004516571.tif 000005
【図４】
2004516571.tif 000006
【図５】
2004516571.tif 000007
【図６】
2004516571.tif 000008
【図７】
2004516571.tif 000009
【国際公開パンフレット】
2004516571.tif 000010
2004516571.tif 000011
2004516571.tif 000012
2004516571.tif 000013
2004516571.tif 000014
2004516571.tif 000015
2004516571.tif 000016
2004516571.tif 000017
2004516571.tif 000018
2004516571.tif 000019
2004516571.tif 000020
2004516571.tif 000021
2004516571.tif 000022
2004516571.tif 000023
2004516571.tif 000024
2004516571.tif 000025
2004516571.tif 000026
2004516571.tif 000027
2004516571.tif 000028
2004516571.tif 000029
2004516571.tif 000030
2004516571.tif 000031
2004516571.tif 000032
2004516571.tif 000033
2004516571.tif 000034
2004516571.tif 000035
2004516571.tif 000036
2004516571.tif 000037
2004516571.tif 000038
2004516571.tif 000039
2004516571.tif 000040
2004516571.tif 000041
2004516571.tif 000042
2004516571.tif 000043
2004516571.tif 000044
【国際公開パンフレット（コレクトバージョン）】
2004516571.tif 000045
【国際調査報告】
2004516571.tif 000046
2004516571.tif 000047
2004516571.tif 000048