【手続補正書】
【提出日】平成24年8月7日(2012.8.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１つ以上の処理ユニットと、
実行パイプラインと、
前記実行パイプラインは、段階を成す少なくとも第１と第２のパイプラインステージを有し、
前記パイプラインの連続するサイクルの中で前記処理ユニットにより遂行される演算を特定するプログラム命令が、前記第１のパイプラインステージによりメモリから取得され、そして前記第２のパイプラインステージに運ばれ、
前記第２のパイプラインステージは前記処理ユニットに対し特定の演算を遂行するようにさせ、
制御回路と、
前記制御回路は、前記パイプラインの第１のサイクルにおいて前記第２のパイプラインステージ内に存在するプログラム命令が、パイプラインの次のサイクルにおいて再び実行されると判定した時に、前記実行パイプラインに対し、前記メモリから前記プログラム命令を再取得することなく、前記パイプラインステージの１つの中の前記プログラム命令を再使用させるように接続され、
を有することを特徴とする、プロセッサ。
【請求項２】
前記実行パイプラインは、Ｎ個のパイプラインステージを有し、前記制御回路は、前記プログラム命令がＮ個より少ない前記プログラム命令を持つプログラムループに含まれることを判定することにより、前記プログラム命令が再実行されることを決定するように接続される、ことを特徴とする請求項１に記載のプロセッサ。  
【請求項３】
前記制御回路は、前記プログラム命令を前記第２のパイプラインステージから前記第１のパイプラインステージにコピーすることにより、前記実行パイプラインに対し前記プログラム命令を再使用させるように接続される、ことを特徴とする請求項１に記載のプロセッサ。
【請求項４】
前記制御回路は、前記実行パイプラインに対し、少なくとも前記第２のパイプラインステージ内の前記プログラム命令を次のサイクルでの実行のため保持させることにより、前記実行パイプラインに対し、前記プログラム命令を再使用させる、ように接続される、ことを特徴とする請求項１に記載のプロセッサ。
【請求項５】
前記制御回路は、前記実行パイプラインに対し、前記プログラム命令を前記メモリから取得することを禁止することにより、前記実行パイプラインに対し前記プログラム命令を再使用させるように接続される、ことを特徴とする請求項１に記載のプロセッサ。
【請求項６】
前記１つ以上の処理ユニットは、互いに同時に動作する多重の処理ユニットからなり、
それぞれの所与のプログラム命令は、前記所与のプログラム命令を実行する場合に適用される前記多重の処理ユニットの構成を特定し、
そして、前記多重の処理ユニットを、前記それぞれの構成に対応して、それぞれの所与のプログラム命令内に構成するように接続された接続回路を有する、
ことを特徴とする請求項１−５のいずれかに記載のプロセッサ。
【請求項７】
前記接続回路は、１つ以上の前記処理ユニットの出力を検知し、前記検知された出力に対して定義された条件に対応して前記多重の処理ユニットを構成する、ように接続される、ことを特徴とする請求項６に記載のプロセッサ。
【請求項８】
前記接続回路は、所与の処理ユニットの活性化／不活性化、前記所与の処理ユニットへのデータ入力の１つ以上の源の選択、及び前記所与の処理ユニットにより遂行される演算の選択、からなる属性のグループから選択される少なくとも１つの属性を設定することにより、前記所与の処理ユニットを構成するように接続される、ことを特徴とする請求項６に記載のプロセッサ。
【請求項９】
少なくとも１つの前記処理ユニットが、
多重の要素からなる内部データベクトルを保持する内部メモリと、そして、
ベクトル要素上を循環し、前記循環したベクトル要素上で動作するように接続される、処理ロジックと、
を有する、
ことを特徴とする請求項１−５のいずれかに記載のプロセッサ。
【請求項１０】
少なくとも１つの前記処理ユニットが、入力と出力を有し、データを前記入力において受け、前記データを遅延させ、他の処理ユニットによる処理のため前記出力において前記遅延したデータを生成する、ように接続される、ことを特徴とする請求項１−５のいずれかに記載のプロセッサ。
【請求項１１】
一時記憶メモリと調停回路を有し、
前記調停回路は、２つ以上の処理要素による１つの所与の資源にアクセスする２つ以上の要求を含む所定のプログラム命令の識別に反応して、前記実行パイプラインを停止し、前記要求により特定されたそれぞれのデータを前記一時記憶メモリに記憶し、前記実行パイプラインを停止した状態で前記２つ以上の処理要素に対し前記１つの所与の資源にアクセスすることを許容し、そして、前記要求に応答して前記資源から返戻されたそれぞれの結果を前記一時記憶メモリに記憶する、ように接続される、
ことを特徴とする請求項１−５のいずれかに記載のプロセッサ。
【請求項１２】
前記資源は１つの共有メモリからなる、ことを特徴とする請求項１１に記載のプロセッサ。
【請求項１３】
前記処理要素は１つ以上の前記処理ユニットからなる、ことを特徴とする請求項１１に記載のプロセッサ。
【請求項１４】
１つ以上の前記処理要素は前記プロセッサの外部にある、ことを特徴とする請求項１１に記載のプロセッサ。
【請求項１５】
１つ以上の処理ユニットを動作させるステップと、
実行パイプラインを動作させるステップと、
前記実行パイプラインは、段階を成す少なくとも第１と第２のパイプラインステージを有し、
前記パイプラインの連続するサイクルの中で前記処理ユニットにより遂行される演算を特定するプログラム命令が、前記第１のパイプラインステージによりメモリから取得され、そして前記第２のパイプラインステージに運ばれ、
前記第２のパイプラインステージは前記処理ユニットに対し特定の演算を遂行するようにさせ、  
前記パイプラインの第１のサイクルにおいて前記第２のパイプラインステージ内に存在するプログラム命令が、パイプラインの次のサイクルにおいて再び実行されると判定するステップと、
前記実行パイプラインに対し、前記メモリから前記プログラム命令を再取得することなく、前記パイプラインステージの１つの中の前記プログラム命令を再使用させるステップと、
を有することを特徴とするコンピューティングの方法。
【請求項１６】
前記実行パイプラインは、Ｎ個のパイプラインステージを有し、前記プログラム命令が再実行されることを決定するステップは、前記プログラム命令がＮ個より少ない前記プログラム命令を持つプログラムループに含まれることを判定するステップを含む、ことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記実行パイプラインに対し前記プログラム命令を再使用させるステップは、前記プログラム命令を前記第２のパイプラインステージから前記第１のパイプラインステージにコピーするステップを含む、ことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記実行パイプラインに対し、前記プログラム命令を再使用させるステップは、前記実行パイプラインに対し、少なくとも前記第２のパイプラインステージ内の前記プログラム命令を次のサイクルでの実行のため保持させるステップを含む、ことを特徴とする請求項１５に記載の方法。
【請求項１９】
前記実行パイプラインに対し前記プログラム命令を再使用させるステップは、前記実行パイプラインに対し、前記プログラム命令を前記メモリから取得することを禁止するステップを含む、ことを特徴とする請求項１５に記載の方法。
【請求項２０】
前記１つ以上の処理ユニットは、互いに同時に動作する多重の処理ユニットからなり、
それぞれの所与のプログラム命令は、前記所与のプログラム命令を実行する場合に適用される前記多重の処理ユニットの構成を特定し、
そして、処理ユニットを動作させるステップは、前記それぞれの構成に対応して、前記多重の処理ユニットをそれぞれの所与のプログラム命令内に構成するステップを含む、
ことを特徴とする請求項１５−１９のいずれかに記載の方法。
【請求項２１】
前記多重の処理ユニットを構成するステップは、前記１つ以上の前記処理ユニットの出力を検知するステップと、前記検知された出力に対して定義された条件に対応して前記処理ユニットを構成するステップと、を含むことを特徴とする請求項２０に記載の方法。
【請求項２２】
前記多重の処理ユニットを構成するステップは、所与の処理ユニットに対し、所与の処理ユニットの活性化／不活性化、前記所与の処理ユニットへのデータ入力の１つ以上の源の選択、及び、前記所与の処理ユニットにより遂行される演算の選択、からなる属性のグループから選択される少なくとも１つの属性を設定するステップを含む、ことを特徴とする請求項２０に記載の方法。
【請求項２３】
少なくとも１つの前記処理ユニットが、多重の要素からなる内部データベクトルを保持する内部メモリを有し、そして、
前記処理ユニットを動作させるステップは、前記ベクトル要素上を循環するステップと、前記循環したベクトル要素上で動作するステップとを含む、ことを特徴とする請求項１５−１９のいずれかに記載の方法。
【請求項２４】
少なくとも１つの前記処理ユニットが、入力と出力を有し、
前記処理ユニットを動作させるステップは、データを前記入力において受け、前記データを遅延させ、他の処理ユニットによる処理のため前記出力において前記遅延したデータを生成する、ように少なくとも１つの前記処理ユニットを構成するステップを含む、ことを特徴とする請求項１５−１９のいずれかに記載の方法。
【請求項２５】
前記処理ユニットを動作させるステップは、
２つ以上の処理要素による１つの所与の資源にアクセスする２つ以上の要求を含む所定のプログラム命令の識別に反応して、前記実行パイプラインを停止するステップと、
前記要求により特定されたそれぞれのデータを一時記憶メモリに記憶するステップと、
前記実行パイプラインを停止した状態で前記２つ以上の処理要素に対し前記１つの所与の資源にアクセスすることを許容するステップと、そして、
前記要求に応答して前記資源から返戻されたそれぞれの結果を前記一時記憶メモリに記憶するステップと、
を含むことを特徴とする請求項１５−１９のいずれかに記載の方法。
【請求項２６】
前記資源は１つの共有メモリからなる、ことを特徴とする請求項２５に記載の方法。
【請求項２７】
前記処理要素は１つ以上の前記処理ユニットからなる、ことを特徴とする請求項２５に記載の方法。
【請求項２８】
前記処理ユニットと前記実行パイプラインは１つのプロセッサ装置内に配置され、１つ以上の前記処理要素は前記プロセッサ装置の外部にある、ことを特徴とする請求項２５に記載の方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【発明の名称】大命令幅プロセッサにおける処理効率の向上
【技術分野】
【０００１】
本発明は、プロセッサ構造に関し、特にプロセッサの処理効率の向上に関するものである。
【背景技術】
【０００２】
デジタル信号プロセッサ（ＤＳＰ）のようなプロセッサは、通常プログラム命令を命令メモリに記憶し、実行に際してその命令をメモリから取得する。あるプロセッサは、一時的に従前に使用した命令をキャッシュする種々のキャッシュ構成を使用して命令メモリから取得する命令の数を減少させる。
【発明の概要】
【０００３】
本発明の実施形態は、１つ以上の処理ユニットと、実行パイプラインと、実行パイプラインは、少なくとも段階を成す第１と第２のパイプラインステージを有し、パイプラインの連続するサイクルの中で処理ユニットにより遂行される演算を特定するプログラム命令が、第１のパイプラインステージによりメモリから取得され、そして第２のパイプラインステージに運ばれ、第２のパイプラインステージは処理ユニットに対し特定の演算を遂行するようにさせ、制御回路と、制御回路は、パイプラインの第１のサイクルにおいて第２のパイプラインステージ内に存在するプログラム命令が、パイプラインの次のサイクルにおいて再び実行されると決定した時に、実行パイプラインに対し、メモリからプログラム命令を再取得することなく、パイプラインステージの１つの中のプログラム命令を再使用させるように接続され、を有することを特徴とする、プロセッサを提供する。
【０００４】
ある実施形態では、実行パイプラインは、Ｎ個のパイプラインステージを有し、制御回路は、プログラム命令がＮ個より少ないプログラム命令を持つプログラムループに含まれることを判定することにより、プログラム命令が再実行されることを決定するように接続される。
他の１つの実施形態では、制御回路は、プログラム命令を第２のパイプラインステージから第１のパイプラインステージにコピーすることにより、実行パイプラインに対しプログラム命令を再使用させるように接続される。他の実施形態では、制御回路は、実行パイプラインに対し、少なくとも第２のパイプラインステージ内のプログラム命令を次のサイクルでの実行のため保持させることにより、実行パイプラインに対し、プログラム命令を再使用させる、ように接続される。ある実施形態では、制御回路は、実行パイプラインに対し、プログラム命令をメモリから取得することを禁止することにより、実行パイプラインに対しプログラム命令を再使用させるように接続される。
【０００５】
ある実施形態では、１つ以上の処理ユニットは、互いに同時に動作する多重の処理ユニットからなり、それぞれの所与のプログラム命令は、所与のプログラム命令を実行する場合に適用される多重の処理ユニットの構成を特定し、そして、多重の処理ユニットを、それぞれの構成に対応して、それぞれの所与のプログラム命令内に構成するように接続された接続回路を有する。接続回路は、１つ以上の処理ユニットの出力を検知し、検知された出力に対して定義された条件に対応して多重の処理ユニットを構成する、ように接続される。１つの実施形態では、接続回路は、所与の処理ユニットの活性化／不活性化、所与の処理ユニットへのデータ入力の１つ以上の源の選択、及び所与の処理ユニットにより遂行される演算の選択、からなる属性のグループから選択される少なくとも１つの属性を設定することにより、所与の処理ユニットを構成するように接続される。
【０００６】
開示された実施形態では、少なくとも１つの前記処理ユニットが、多重の要素からなる内部データベクトルを保持する内部メモリと、そして、ベクトル要素上を循環し、循環したベクトル要素上で動作するように接続される、処理ロジックとを有する。他の実施形態では、少なくとも１つの処理ユニットが、入力と出力を有し、データを入力において受け、データを遅延させ、他の処理ユニットによる処理のため出力において遅延したデータを生成するように接続される。
【０００７】
ある実施形態では、一時記憶メモリと調停回路を有し、調停回路は、２つ以上の処理要素による１つの所与の資源にアクセスする２つ以上の要求を含む所定のプログラム命令の識別に反応して、実行パイプラインを停止し、要求により特定されたそれぞれのデータを一時記憶メモリに記憶し、実行パイプラインを停止した状態で２つ以上の処理要素に対し１つの所与の資源にアクセスすることを許容し、そして、要求に応答して資源から返戻されたそれぞれの結果を一時記憶メモリに記憶するように接続される。ある実施形態では、資源は１つの共有メモリからなる。処理要素は１つ以上の前記処理ユニットからなる。１つ以上の処理要素はプロセッサの外部にある。
【０００８】
本発明の実施形態によれば、１つ以上の処理ユニットを動作させるステップと、実行パイプラインを動作させるステップと、実行パイプラインは、少なくとも段階を成す第１と第２のパイプラインステージを有し、パイプラインの連続するサイクルの中で処理ユニットにより遂行される演算を特定するプログラム命令が、第１のパイプラインステージによりメモリから取得され、そして第２のパイプラインステージに運ばれ、第２のパイプラインステージは処理ユニットに対し特定の演算を遂行するようにさせ、パイプラインの第１のサイクルにおいて第２のパイプラインステージ内に存在するプログラム命令が、パイプラインの次のサイクルにおいて再び実行されると決定するステップと、実行パイプラインに対し、メモリからプログラム命令を再取得することなく、パイプラインステージの１つの中のプログラム命令を再使用させるステップと、を有することを特徴とするコンピューティングの方法が提供される。
本発明は、図を参照しての実施形態の詳細説明からより十分に理解されよう。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態による、プロセッサを示す概略ブロック図である。
【図２】本発明の実施形態による、プロセッサ内のプログラム命令の選択的取得を概略示すフロー図である。
【図３】本発明の実施形態による、プロセッサの処理ユニット（ＰＵ）のブロック図である。
【図４】本発明の実施形態による、ＰＵ構成のブロック図である。
【図５】本発明の実施形態による、多重ＰＵを持つプロセッサ内の調停方法を示すフロー図である。
【発明を実施するための形態】
【００１０】
（概要）
多くのプロセッサにおいて、命令メモリからのプログラム命令の取得は大幅な電力を消費する。命令取得演算により消費された電力はプロセッサ全体の電力消費を左右するが、特に命令幅の大きなプロセッサにおいてはそうである。
以下に記述される本発明の実施形態では、パイプライン構造を有するプロセッサにおいて、命令メモリから取得されるプログラム命令の数を減らす方法とシステムを提供する。パイプライン構造では、プロセッサは、プログラム命令を取得し、復号し、実行させる２つ以上のパイプラインステージを持つ実行パイプラインからなる。
【００１１】
ここに記載される方法及びシステムは、現在取得を意図する１つの命令は、実行パイプライン内に既に存在するという事実を利用する。ある実施形態では、プロセッサは制御回路を有し、制御回路は、取得を意図した従前のプログラム命令のインスタンスが既に実行パイプライン内に存在することを判定し、パイプラインに対し、命令メモリから命令を再取得する代わりに、現存する命令を再使用させる。  
【００１２】
命令が再使用される共通のシナリオは、プロセッサがパイプライン深さより短いプログラムループを実行する場合（即ち、ループ内の命令の数がパイプラインステージの数より小さい場合）に起こる。このような短いループの２回以上の繰り返しを実行する場合、従前のループからのプログラム命令が既にパイプライン内に流れている。ある実施形態では、制御回路は短いループの一部である命令を識別し、そしてプロセッサに対し、命令メモリにアクセスする必要なく、これら命令をそのパイプライン内で再使用させる。所与の命令は、例えば、命令をそのパイプラインの入力にコピーすることにより、又はパイプラインに対し、追加クロックサイクルの間その命令を同じ位置に保持させることにより、再使用可能である。
【００１３】
典型的に、実行パイプライン内での命令の再使用は、命令メモリからの命令の取得に比べ大幅な電力削減をもたらす。従って開示される方法とシステムは、既存の技術に比べ大幅な電力消費の減少をもたらす。開示される技術により達成される電力消費の減少は、典型的に、短いプログラムループを使用する種々のソフトウェアタスクをプログラムする能力に依存する。短いループに関する異なるソフトウェアを処理するプロセッサの能力を向上させるハードウェア機構の幾つかの事例がここに示される。
【００１４】
従前に使用された命令を独自のメモリにキャッシュする既知の命令捕獲技術と異なり、ここに記載される方法とシステムは、現存するパイプラインステージに本来流れる命令を使用し、そして命令のキャッシュ用の追加のメモリ要素を必要としない。もっとも周知のキャッシュ構造は典型的にアクセスレイテンシーを減少させることを目的にし、目標達成のために比較的大きなメモリ空間を必要とする。このように、これらの構造は多くの場合、殆ど又は全く（時には逆の影響を与えることもあるが）命令取得スキーム全体の電力消費に影響を与えない。このように、開示される方法とシステムは、キャッシュ及び非キャッシュの命令プロセッサの両方にとって有益である。更に、キャッシュ技術と対照的に、開示される方法とシステムにより可能となるプログラム命令の再使用は、特定のプログラムコードセクションの結果的な電力節約と共に、統計的よりはむしろ完全に決定論的であり、プログラマーが容易に予測し計画可能である。
【００１５】
（システムの記述）
図１は本発明の実施形態による、プロセッサ２０を示す概略ブロック図である。ここに記載される方法とシステムは、特に、データベクトル又はアレイ全体の上で所与の連続する演算を実行するコンピュータタスクに有益である。この種のタスクはデジタル信号処理（ＤＳＰ）全体に共通しており、特に（限定されないが）直交周波数多重分割（ＯＦＤＭ）や直交周波数分割多重アクセス（ＯＦＤＭＡ）システムにおける基底帯処理に使用される。
【００１６】
この事例では、プロセッサ２０は、ＷｉＭＡＸで知られるＩＥＥＥ８０２．１６基準に従って動作する無線通信システムでＤＳＰ機能を遂行するために使用される超長命令語（ＶＬＩＷ）プロセッサを含む。しかし或いは、プロセッサ２０は、ＬＴＥや拡張グローバルプラットフォーム（ＸＧＰ）、ＷｉＦｉ，移動通信用グローバルシステム（ＧＳＭ（登録商標））、ＥＤＧＥ，ＣＤＭＡ２０００，ＥＶＤＯ，広域帯ＣＤＭＡ（ＷＣＤＭＡ）、時分割同期ＣＤＭＡ（ＴＤ−ＣＤＭＡ）、高速パケットアクセス（ＨＳＰＡ）又はパーソナル携帯電話システム（ＰＨＳ）のような、他の適合する通信基準又はプロトコルを実行する通信システムで使用されてもよい。さらに或いは、プロセッサ２０は、他の適合する機能を遂行するために使用される他の適合するプロセッサを有してもよい。
【００１７】
プロセッサ２０は命令メモリ２４に記憶されたプログラム命令を実行する。命令は以下で記述される制御回路２８を経由して実行パイプライン３２に提供される。実行パイプラインは、プログラム命令を取得、復号、実行する２つ以上のパイプラインステージ４２を有する。図１の実施形態では、プロセッサ２０は、４２Ａ、４２Ｂと表示した２つのパイプラインステージからなる。パイプラインステージ４２Ａはプログラム命令を取得し復号し、パイプラインステージ４２Ｂは命令を実行する。パイプライン構造はプログラム命令が効率的に処理されそして実行されることを可能にする。所与のクロックサイクルにおいて、パイプラインステージ４２Ｂは、所与の命令を実行し、一方パイプラインステージ４２Ａは同時に次の命令を取得し復号する。
【００１８】
プログラム命令は、算術演算、データ移動演算、フロー制御演算又は他の適合する演算のような、プロセッサが遂行する演算を特定する。プロセッサ２０は、プログラム命令及び又は一時記憶データ（例えば汎用レジスタ）内で特定された演算を遂行する多重の処理ユニット（ＰＵ）４０を有する。例えば図１は４０Ａ、４０Ｂ、４０Ｃ、４０Ｄで表示される４つのＰＵを示す。異なるＰＵは類似の又は異なる設計と構成を有する。典型的に各プログラム命令は、多重のそれぞれのＰＵにより遂行される多重の演算を特定する。
【００１９】
処理ユニット（ＰＵ）は、データ及び制御交換メッシュ（ＤＣＳＭ）３６により構成され制御される。ＤＣＳＭは典型的に、ある接続設定に従って異なるＰＵの入力と出力を接続する１組のマルチプレクサからなる。所与のプログラム命令の実行中に適用される接続設定は命令内で特定される。所与の命令を実行する場合、実行パイプライン３２の出力は、場合により以下で詳述される制御回路の一定の出力及びＰＵの出力と共にＤＣＳＭ３６に提供される。ＤＣＳＭは、パイプライン３２により特定されたように、異なるＰＵを構成し、ＰＵの入力と出力を接続し、そしてデータをＰＵに提供する。言い換えれば、実行パイプラインはＰＵに対しプログラム命令内で特定された演算を遂行させる。ＰＵ４０とＤＣＳＭ３６の機能は、以下で詳述される。ある実施形態では、ＤＣＳＭ３６は、制御回路２８に対しＩＦＣ６４へのブランチ情報、ＣＥＣ６８への条件情報、及び命令情報のような、情報を提供する。
【００２０】
この事例では、それぞれのプログラム命令は、３つの部分からなる：（１）ＰＵにより遂行される演算のオペコード、（２）ＤＣＳＭ構成設定、及び（３）命令の実行のためＤＣＳＭに提供されるデータ。それぞれのパイプラインステージは、プログラム命令の３つの部分をそれぞれ処理する３つのユニットからなる。オペコード処理ユニット４４は、コマンドオペコードを処理し、ＤＣＳＭ選択ユニット４８はＤＣＳＭ設定を処理し、即時ユニット５２はＤＣＳＭに提供されるデータを処理する。（図１の構成は２重ステージパイプラインに関しているが、ここに記載される方法とシステムは、他の適合する数のパイプラインステージとステージ間の機能分割を有する他のいかなる適合する実行パイプラインにおいても使用可能である。）
【００２１】
制御回路２８は、プログラム命令をメモリ２４からロードする取得表示子（ＦＩ）６０を含む。命令フローコントローラ（ＩＦＣ）６４は、プログラムフロー、例えば、プログラム命令のアドレスの前進、ブランチ命令の取り扱い、及び他のプログラムカウンタ（ＰＣ）関連のタスク、を管理する。特にＩＦＣ６４は、次のプログラム命令の取得に使用されるＰＣ値を生成し出力する。処理ユニットイネイブラ（ＰＵＥ）５６は、有効／無効信号をプロセッサ２０の異なる要素に対して生成する。
【００２２】
条件付き実行コントローラ（ＣＥＣ）６８は、オペランドの比較に基づいて、ＰＵ４０の条件付き有効、無効、及び構成を遂行する。所与のクロックサイクルにおいて、ＣＥＣ６８は２つのオペランドを比較し、そして比較結果に基づいて、１組の入力制御信号をＰＵを制御（例えば、有効、無効、接続又は構成）する１組の出力制御信号に翻訳します。典型的にＰＵＥとＣＥＣは、ＰＵをＤＣＳＭを使用して構成し制御するため、一緒に動作します。処理ユニットイネイブラ（ＰＵＥ）５６は典型的に、どのＰＵが所定の命令サイクル内に有効にされるかを、命令内で運ばれたデータとＣＥＣ６８により提供されるデータに基づいて決定する。
【００２３】
ある実施形態では、プロセッサ２０は、更に多重のＰＵが同一の命令クロック内でデッドロック無くプロセッサ資源（例えば、メモリ７４）にアクセスすることを可能にするアービター７２を含む。アービターの機能性は以下に詳述する。ある実施形態では、アービター７２は、ＰＵ４０と共に当該資源へのアクセスを競うプロセッサ２０の外部の他の要素のアクセスも管理する。
図１の実施形態は一定のプロセッサ構成について示すが、この選択は純粋に例示のためである。本発明の原理はこの構成に決して限定されず、他の適合する構成にも使用可能である。開示された技術を示すには必須でないプロセッサ２０のある要素は、明確化のため削除された。
【００２４】
（プログラム命令の選択的取得による電力消費の削減）
多くのプロセッサ構成では、命令メモリ２４からの命令の取得は多くの電力量を必要とする。これらの命令取得演算により消費された電力はプロセッサ全体の電力消費を左右するが、特に命令幅の大きなプロセッサにおいてはそうである。
以下に記述される本発明の実施形態では、命令メモリから取得されるプログラム命令の数を減らす方法とシステムを提供する。
ここに記載される方法及びシステムは、プロセッサがパイプライン構造を持つため、現在取得を意図する１つの命令が、既に実行パイプライン内に存在するという事実を利用する。
このような命令は、命令メモリから命令を再取得する代わりに、パイプライン内で再使用可能である。  
【００２５】
このシナリオは、プロセッサがパイプライン深さより短いプログラムループを実行する場合（即ち、ループ内の命令の数がパイプラインステージの数より小さい場合）に共通である。短いループの２回以上の繰り返しを実行する場合、従前のループの繰り返しからのプログラム命令のインスタンスが既にパイプライン内に存在する。このようにプロセッサは、命令メモリから命令を再取得する必要なく、パイプライン内の従前の命令インスタンスを再使用可能である。
【００２６】
プロセッサは、例えば、命令をコピーしパイプライン入力に戻すことにより、又は命令を追加クロックサイクルの間、パイプライン内で保持する（即ち、パイプラインが命令を移動させることを防止する）ことにより所与の命令を再使用してもよい。どちらの場合でもパイプライン内での命令の再使用は、命令を命令メモリ又はキャッシュから取得する場合のほんの一部の消費電力しか要しない。このように、ここに記載される方法とシステムは大幅にプロセッサ全体の消費電力を低減する。ここに記載される方法とシステムは大きな命令ワードのＤＳＰに最適化されているが、それは他の種類のプロセッサに対しても有利である。
【００２７】
図１の実施形態では、パイプライン３２は２つのステージを有する。この構成では、プロセッサ２０は、繰り返し命令メモリにアクセスすることなく、単一命令ループを実行可能である。（命令メモリは典型的に最初の繰り返しループを実行するときにアクセスされる。その後の繰り返しループではパイプライン内に既に存在する命令を再使用する。）
２つのパイプラインステージの場合、制御回路２８は、追加のクロックサイクルの間命令をパイプライン内の同一位置に留まらせ、そしてプロセッサが命令メモリから命令を取得することを禁止することにより、命令を再使用可能である。命令取得の禁止は命令メモリの同一アドレスから同一の命令を繰り返し取得するのに比べて大幅に消費電力が低い。
【００２８】
ある実施形態では、それぞれのプログラム命令は、その命令が単一命令ループの一部であるか否かを示すフラッグを有する。このフラッグに基づき、ＩＦＣ６４は、（１）現在の命令が単一命令ループの一部である、そして（２）現在のループ繰り返しは２回目以上の繰り返しである、ことを示す制御信号を生成する。この信号に応答して、ＰＵＥ５６はＦＩ６０が命令を命令メモリから取得することを禁止し、パイプライン３２に対し追加クロックサイクルの間命令を同じ位置に保持させる（多くの場合、命令をパイプラインに沿って移動させることに加えて）。結果として命令は、繰り返し命令メモリにアクセスすることなく再実行される。パイプラインのコンテントを追加クロックサイクルの間保持する技術は、プロセッサの制御回路のスイッチングを最小にするため、さらに電力消費を減少させる。
【００２９】
他の実施形態では、制御回路２８は、命令メモリ２４から命令を再取得することなく命令を再実行するため、命令をコピー（ループバック）しパイプラインの入力に戻すハードウェア機構（不図示）を有してもよい。さらに或いは、制御回路２８は、プログラムループをマークする専用の制御信号を使用せず、パイプライン内で再使用可能な命令を識別してもよい。例えば、制御回路は次の命令のプログラムアドレス（ＰＣ値）をすでにパイプライン内に存在する命令のプログラムアドレスと比較してもよい。
【００３０】
図２は、本発明の実施形態による、プロセッサ内のプログラム命令の選択的取得を概略示すフロー図である。方法は命令検査ステップ８０において、制御回路２８が取得を意図する次のプログラム命令のアドレスを検査することから始まる。制御回路（即ち、ＩＦＣ６４）は検査ステップ８４において、命令がパイプライン深さより短い１つのループの２回目以降の繰り返しの一部であるかをチェックする（パイプライン深さより短いループは簡略化のため「ショートループ」と呼ぶ）。
【００３１】
命令がショートループの２回目以降の繰り返しの一部でない場合、制御回路（典型的にＦＩ６０）は、外部取得ステップ８８において、命令を命令メモリ２４から取得する。逆に命令がショートループの２回目以降の繰り返しの一部である場合、再使用ステップ９２において、制御回路はパイプライン内の命令を再使用する。どちらの場合も、パイプライン３２は命令を処理し、そして命令は、実行ステップ９６において、実行のためＤＣＳＭ経由でＰＵ４０に提供される。  
ここに記載された実施形態では、ショートプログラムループの一部である命令について記載しているが、ここに記載される方法とシステムは、取得を意図する命令が既にパイプラインに存在する、他のいかなるシナリオでも使用可能である。
【００３２】
（ショートプログラムループを実行する技術）    
前述のように、実行パイプライン内での命令の再使用は、ショートプログラムループを実行するのに特に有用である。ある実施形態では、プロセッサ２０は、種々のタイプのソフトウェアタスクがショートループを使用して符号化されるのを可能にする、追加の特徴と機構を有する。このような機構を使用して、所与のソフトウェアタスクの大きな部分が、ショートプログラムループを使用して符号化可能である。上記で開示された方法により可能となった電力消費の減少はソフトウェアタスクの大部分に適用可能である。
【００３３】
例えば、多重のＰＵを並行して動作させること（図１のプロセッサ２０のように）はループの「平坦化」即ち、それぞれの命令が多重のＰＵ内に分散されているショートプログラムループの書き込み、を可能にする。ある実施形態では、この能力はＤＣＳＭ３６により遂行されるＰＵのフレキシブルな構成により強化される。ある実施形態では、すべてのＰＵ４０の１つ以上の属性が、１つ以上のＰＵ４０によってデータ出力上で定義された条件に従って構成可能である。典型的にそれぞれのＰＵは別個にそして他のＰＵから独立して構成可能である。構成可能なＰＵ属性は、所定の命令サイクル内において、ＰＵの活性化と不活性化、ＰＵへの１つ以上のデータ入力源の選択、ＰＵにサポートされた多重の演算の中からのＰＵにより実行される演算の選択、及び／又は他の適合する属性を含む。
【００３４】
上記のフレキシブルなＰＵ構成メカニズムは、入れ子状のループや長いループを等価な短いループ（即ち、プロセッサの実行パイプラインの深さより短い長さのループ）を使用して表示する能力を提供する。結果としての短いループはその後、前述のように実行パイプライン内に既に存在する命令を再使用して実行され、そして消費電力を減少させる。
【００３５】
例として、従来は内部ループと外部ループを有する入れ子のループとして形成されたソフトウェアタスクを考える。内部ループはＭ個の命令を有すると仮定する。多重のＰＵを並列で使用する場合、その入れ子のループは１つの短いループとして等価的に符号化され、そこではそれぞれの命令は多重のそれぞれのＰＵにより実行される多重演算を特定する。等価の表現では、ＰＵは外部ループの演算を条件的に、Ｍ回の繰り返しそれぞれに一度、実行する。この方法は、内部ループの数が小さくかつ外部ループの数が大きい場合に特に有用である。
【００３６】
一般的に、多重の構成可能なＰＵを並行して動作させることは、長い演算の連続を特定するループをショートループとして書く能力を提供する。何故ならば、それぞれの命令はＰＵにより実行される多重の演算を特定するからである。順列内の異なる演算の中の変化（例えば、インデックス又は可変値の変化）は、異なるＰＵの条件的構成により表現可能である。
【００３７】
更に或いは、ソフトウェアタスクをショートループとして書く能力は、それぞれのＰＵが内部データベクトルを保持し、そして循環的に、各クロックサイクルの間にベクトルの連続する要素にアクセスし処理することを可能にすることによって強化される。例えば、通信及び信号処理のアプリケーションで遭遇する多くのフィルタリングタスクは、循環的に、サンプル信号をフィルタ係数のベクトルでフィルタリング（畳み込み）すること（例えば、有限インパルス応答（ＦＩＲ）フィルタ）を含む。データベクトルを外部メモリの代わりにＰＵ内に内部的に記憶することは、ＰＵに要求されるメモリアクセス演算の数を大幅に減少させる。メモリアクセス資源は通常高価であり、従って限定されているため、メモリアクセス資源の減少はフィルタリングタスクが大幅により短いループを使用して符号化されることを可能にする。
【００３８】
図３は、本発明の実施形態による、プロセッサの処理ユニット（ＰＵ）４０のブロック図である。この事例では、ＰＵ４０は処理ロジック１００と、係数ベクトル１０４を保持する内部メモリと、からなる。係数ベクトル１０４は、フィルタ係数のような多重の要素からなる。係数ベクトルは例えば１つ以上の従前のプログラム命令により、又は外部構成により特定可能である。所与のクロックサイクルの中で、処理ロジックは１つのベクトル要素から次のベクトル要素へ循環的に進み、所与の演算（例えば、乗算）を遂行し、そして演算結果をＤＣＳＭに出力する。
【００３９】
ベクトル要素は外部メモリから取得する必要が無いので、メモリアクセス資源の必要性は大幅に減少し、特に遂行タスクが多重の入力のロードを必要とし、メモリアクセスが制限される場合にそうである。従って、フィルタリング演算は大幅に短いループを使用して符号化可能であり、そして従ってプロセッサのパイプラインに既に存在する命令を再使用して実行可能であり、このことが大幅な電力消費の減少をもたらす。
上記のメカニズム（入れ子ループのフィルタリング、係数ベクトルの取り扱い）は他のメカニズムと種々の方法で組合せ可能である。例えば、ベクトル１０４がｎ個の演算に１回だけ進められる場合、ベクトルは、内部ループの値に基づいて条件付きでベクトルを進める命令を定義することにより外部ループにより進められることが可能である。
【００４０】
さらに或いは、ソフトウェアタスクをショートループを使用して符号化する能力は、１つ以上のＰＵを遅延要素として構成することにより強化可能である。ある連続プロセス（例えば、あるＰＵの出力を他のＰＵへの入力として使用するプロセス）を遂行する場合、このような遅延要素は、所与のデータが、そのデータをメモリから再取得することなく、種々の処理のステージで使用されることを可能にする。前述のように、メモリアクセス資源の必要性の減少はループ寸法の大幅な減少を可能にする。ある実施形態では、遅延要素はパイプラインとなっている。言い換えれば、入力データｎを受け取りそしてそれぞれの遅延出力を生成する間の時間間隔の間、パイプラインとなった遅延ｄを持つ遅延要素は連続的にデータ入力ｎ＋１，ｎ＋２，．．．，ｎ＋ｄ−１を記憶し、従って単一命令ループの効率を増大させる。
【００４１】
図４は、本発明の実施形態による、ＰＵ構成のブロック図である。この事例では、ＰＵ１，．．，ＰＵ６と表示される６つのＰＵがある連続プロセスを遂行するように構成される。これらＰＵのそれぞれは従前のＰＵの出力を入力として使用する。更に、ＰＵ６はＰＵ７と表示される他のＰＵの出力を入力として受け取る。
【００４２】
フローバランスＰＵ１０８は、その出力をＰＵ７の入力として提供する前に、ＰＵ２の出力に制御された遅延を導入するように構成される。フローバランスＰＵ１０８の遅延は、ＰＵ１０８とＰＵ７の全体の遅延がＰＵ３,ＰＵ４，ＰＵ５全体の遅延と等しくなるように設定される。フローバランスＰＵの使用により、たとえデータが異なるクロックサイクルで必要とされても、ＰＵ２の出力はＰＵ３とＰＵ７の両方に対する入力として使用可能である。フローバランスの特徴が無ければ、ＰＵ２の出力はメモリに記憶され、そしてその後適切な時期にＰＵ７に提供するため取得されなければならない。上述のように、メモリアクセス演算の回数を減少させることは、ソフトウェアタスクをより短いループを使用して符号化する能力に資する。
【００４３】
フローバランスＰＵは所望の遅延を導入するように構成されたＰＵ４０の１つからなってもよい。所与の命令におけるＰＵ構成は、いかなる所望の数のＰＵをもフローバランスＰＵとして働くように構成することができる。更に或いは、プロセッサ２０は、この特定の機能に専用の、１つ以上のフローバランスＰＵを有してもよい。フローバランスＰＵ１０８により導入された遅延はプログラム命令又は外部構成により特定可能である。
【００４４】
多重のＰＵを並行して使用する場合は、２つ以上のＰＵが同一のプログラム命令において同一のプロセッサ資源（例えば、図１のメモリ７４）にアクセスを要求する可能性がある。ある実施形態では、図１のアービター７２がこのような多重要求をデッドロックなしに解決する。アービター７２により提供されるデッドロックの無い演算は、同一の資源に対する要求を異なる命令間で分割する必要なく、複数のＰＵ４０が同時に動作することを可能にする。
【００４５】
図５は、本発明の実施形態による、多重ＰＵ４０を持つプロセッサ２０内のデッドロックの無い調停方法を示すフロー図である。図５の方法において、図１のアービター７２は所与の資源にたいするアクセスを多重競合要素により制御する。資源は、メモリ又は他の適合する種類の資源からなる。上述のように、競合要素は１つ以上のＰＵ４０及び／又は１つ以上のプロセッサ２０の外部の要素からなる。特定の実施形態では、このような外部競合要素は、プロセッサ２０に類似の他のプロセッサのＰＵからなってもよい。
【００４６】
方法は、それぞれの競合するＰＵが、要求されたメモリアクセス演算のアドレスを記憶し、そしてメモリアクセス演算によりＰＵに返戻されたデータを記憶するため、一時的記憶空間を割り当てられるというメカニズムに基づく。一時的記憶空間（例えばレジスタ）は、個々のＰＵ内又はアービター７２内又は他の適合する場所にあってよい。
以下の記述は、メモリ資源へのアクセスを競い合う多重ＰＵに関する。あるメモリアクセス演算を遂行するためメモリ資源にアクセスする場合、所与のＰＵが要求先メモリアドレスを特定する。メモリアクセス演算を終了した後、データがメモリからＰＵに返戻される。しかし他の実施形態では、図５の方法は、プロセッサ２０及び他のプロセッサによりアクセス可能な処理エンジンのような種々の他の種類の共有資源と共に使用可能である。一般的に、共有資源にアクセスするそれぞれのＰＵは、要求された演算を遂行するための一定の情報を特定し、そして資源は一定のデータを結果として返戻する。
【００４７】
図５の方法は、命令調停ステップ１１０において、アービター７２が多重のＰＵが所与の１つのメモリ資源へのアクセスを要求するプログラム命令を検知することから始まる。その命令は、多重のそれぞれのＰＵによる、メモリアクセス演算を遂行する多重の要求からなり、それぞれの要求は対応するメモリアドレスを特定する。アービターはその異なるＰＵにより要求されたアドレスを一時記憶空間に記憶し、そして停止ステップ１１４において、実行パイプライン３２を停止させる。パイプラインの停止はアドレスの記憶の以前、以後、又は同時に行われてよい。アービターは、アクセス承諾ステップ１１８において、要求元ＰＵのうち１つを除く全てにメモリへのアクセスを承諾する。
【００４８】
それぞれの要求元ＰＵは、承諾チェックステップ１２２において、メモリへのアクセスが承諾されたかをチェックする。一度所与の１つのＰＵがアクセスを承諾されると、そのＰＵは、アクセスステップ１２６において、メモリにアクセスし要求された演算を遂行する。当該メモリアクセス演算は一定のデータを返戻する。
アービターは、戻りデータ記憶ステップ１３０において、メモリアクセス演算によりＰＵに返戻されたデータを一時記憶空間に記憶する。アービターは全ての要求元ＰＵが処理されたかを、終了チェックステップ１３４において、チェックする。もし全てのＰＵが処理されていない場合は、アービターは、アクセス再承諾ステップ１３８において、まだ処理されていないＰＵにメモリ資源の独占的アクセスを承諾する。その後方法はステップ１２２に戻りアクセスが承諾されたＰＵがメモリにアクセスする。全ての要求元ＰＵが処理済みの場合、アービターは、パイプライン開放ステップ１４２において、実行パイプラインを解放する。
【００４９】
上述のように、図５の調停スキームは、種々のタイプの共用資源とそのような資源で実行される演算に対して直接的に一般化可能である。一般的にアービターは、要求演算を遂行するために一時記憶空間にＰＵから提供された情報を記憶する。演算の遂行後、アービターは資源から返戻されたデータ（典型的に演算の結果）を一時記憶空間に記憶する。
【００５０】
図５の調停プロセスは例示的なプロセスであり、純粋に例示の目的で選択された。他の実施形態では、プロセッサ２０は種々の他のデッドロックの無い調停スキームを適用してもよく、そこでは、（１）一時記憶空間はＰＵ毎に要求アドレス（又は演算を遂行するために必要な他の情報）及び戻りデータに対し提供され、（２）要求アドレスはメモリアクセスが拒否される限り保持され、そして（３）戻りデータは少なくともアクセスが承諾された時から実行パイプラインが解放されるまで保持される。
【００５１】
ここに記載される調停スキームは、資源を単一の命令ライン内で競う所望の数のＰＵの中で、デッドロックの無い共用資源へのアクセスを提供する。さらに開示された調停スキームは、多重のプロセッサ２０が、デッドロックのリスク無く共用資源を競い合うことを可能にする。
【００５２】
ここに記載された実施形態は、無線通信システム内で信号処理機能を遂行する超長命令語（ＶＬＩＷ）プロセッサについて記載しているが、本発明の原理は、長いデータ流上で動作するネットワークプロセッサ（ＮＰ）のような、他のプロセッサや他の用途にも使用可能である。
上記の実施形態は例示のために引用され、本発明は上記で特に示され記載されたものに限定されない。むしろ、本発明の範囲は上記に記載された種々の特徴の組合せやサブ組合せを含み、上記の記載を読んだ当業者が想起する従来技術に無い変化や変更を含む。
【符号の説明】
【００５３】
２０：プロセッサ          ２４：命令メモリ    ２８：制御回路      
３２：実行パイプライン    ３６：データ及び制御交換メッシュ（ＤＣＳＭ）
４０：処理ユニット        ４２Ａ，４２Ｂ：パイプラインステージ    
４４：オペコード処理ユニット        ４８：ＤＣＳＭ選択ユニット    
５２：即時ユニット                  ５６：処理ユニットイネイブラ（ＰＵＥ）    
６０：取得表示子（ＦＩ）            ６４：命令フローコントローラ（ＩＦＣ）
６８：条件付き実行コントローラ（ＣＥＣ）
７２：アービター          ７４：メモリ