JP3738253B2 - プログラム・ループを並列に処理する方法および装置 - Google Patents

プログラム・ループを並列に処理する方法および装置 Download PDF

Info

Publication number
JP3738253B2
JP3738253B2 JP2002551695A JP2002551695A JP3738253B2 JP 3738253 B2 JP3738253 B2 JP 3738253B2 JP 2002551695 A JP2002551695 A JP 2002551695A JP 2002551695 A JP2002551695 A JP 2002551695A JP 3738253 B2 JP3738253 B2 JP 3738253B2
Authority
JP
Japan
Prior art keywords
loop
pipeline
registers
hardware
condition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2002551695A
Other languages
English (en)
Other versions
JP2004516571A (ja
Inventor
イノウエ,リョウ
シン,ラヴィ,ピー
ロス,チャールズ,ピー
オーバカンプ,グレゴリー,エー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Analog Devices Inc
Original Assignee
Analog Devices Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Analog Devices Inc filed Critical Analog Devices Inc
Publication of JP2004516571A publication Critical patent/JP2004516571A/ja
Application granted granted Critical
Publication of JP3738253B2 publication Critical patent/JP3738253B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

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)
  • Multi Processors (AREA)

Description

【0001】
【従来の技術】
デジタル信号処理(DSP)システムのようなプログラム可能なプロセッサを設計する際に、2つの競合する設計のゴールは処理速度と電力消費である。従来のプロセッサは、ソフトウェア命令の実行速度を増加させることを目指した多種多様なハードウェアを含む。しかしながら、ハードウェアの追加によって、典型的には、プロセッサの電力消費が増加する。
【0002】
プログラム可能なプロセッサの速度を増加させるための1つの技術は、「ハードウェア・ループ」であり、それはループ構成内でソフトウェア命令の実行を促進させるために設計された専用ハードウェアである。ハードウェア・ループは、ローカル・レジスタに命令をキャッシュすることによりソフトウェア・ループを実行するために使用されるクロック・サイクルの数を減少させることができ、それによって、メモリ装置または命令キャッシュから同じ命令を複数回フェッチする必要性を低減する。
【0003】
【実施例の詳細な説明】
図1は、本発明の実施例に従って効率的なハードウェア・ループをサポートするためにアレンジされたプログラム可能なプロセッサ2を図示するブロック図である。プロセッサ2は、パイプライン4に制御信号を送る制御ユニット6を含む。制御ユニット6は、プロセッサ2の電力消費を著しく増加させることなく、高速のハードウェア・ループを促進するハードウェア・ループ・ユニット7を含む。
【0004】
ハードウェア・ループをサポートするために、プロセッサ2は、ループのための入口および出口条件をセットすることにより、ハードウェア・ループ・ユニット7のようなハードウェアを初期化するループ・セットアップ命令をサポートする。入口および出口条件はループ条件、すなわち、トップ、ボトム、およびカウントによって定義される。トップ条件は、ループの最初の命令(あるいはトップ)を定義する。ボトム条件は、ループの最後の命令(あるいはボトム)を定義する。そしてカウント条件は、ループの複数回の繰り返しを定義する。
【0005】
ハードウェア・ループの入口は、最初の「トップ・マッチ」で生じる。トップ・マッチは、プログラム・カウンタ(PC)がループのトップ命令を指すときに生じる。ハードウェア・ループの出口は、最後の「ボトム・マッチ」で生じ、それは、PCがループのボトム命令を指すときに生じる。
【0006】
最初のトップ・マッチでカウントを初期化すること、および各ボトム・マッチでカウントをディクリメントすることによって、ハードウェアは、それがいつ最後のボトム・マッチに遭遇したかを追跡する。このように、トップ、ボトムおよびカウントのループ条件は、ハードウェア・ループの入口および出口の条件を定義する。
【0007】
プロセッサ2は、1つ以上のパイプライン4、および制御ユニット6を含む。例えば、パイプライン4は、1つ以上のシステム・パイプライン、1つ以上のデータ・アドレス生成パイプライン、1つ以上の実行ユニット・パイプライン、および特定のインプリメンテーションのために必要な1つ以上の付加的なパイプラインを含んでもよい。制御ユニット6は、クロック・サイクル中にパイプライン4を通って命令および/またはデータのフローを制御する。例えば、命令の処理中に、制御ユニット6は、命令をデコードし、また、例えば結果をメモリにライト・バックすることなどを含む、対応する動作を正確に実行することをパイプラインの多様なコンポーネントに命令する。
【0008】
命令は、1つ以上のパイプライン4の第1ステージにロードされ、後続のステージを通って処理される。ステージは他のステージと同時に処理を行う。データは、システムのサイクル中にパイプライン4内のステージ間を通過する。命令の結果は、パイプライン4の終端から間断なく出現する。
【0009】
図2は、本発明の実施例に従って、パイプラインの例を図示するブロック図である。パイプライン10は、単一のクロック・サイクルの間に複数の命令の実行を促進する複数のステージを有する。パイプライン10において、命令は最初のクロック・サイクルで命令フェッチ(IF)ステージ12に入る。そして、その命令は、後続のクロック・サイクルの間にパイプラインを下流へ送られる。典型的には、他の命令が後続のクロック・サイクルの間にIFステージ12に入り、そして、後続のクロック・サイクルの間にパイプラインを下流へ送られる。同様に、追加命令が、後続のクロック・サイクルの間に、それぞれIFステージ12に入る。パイプラインの段数は、パイプラインが同時に処理できる命令の数を定義する。
【0010】
パイプラインの異なるステージは、以下のように動作する。命令はフェッチ・ユニット13によってIFステージ12でフェッチされ、DECステージ14の間に命令レジスタ15からデコードされる。ACステージ18の間に、1個以上のデータ・アドレス生成器19が、その動作を行なうために使用されるあらゆるメモリ・アドレスを計算する。データ・アドレス生成器19は、計算を促進するために1個以上の算術論理演算ユニット(ALU)を含む。
【0011】
実行ステージ(EX1−EXn)22A−22Nの間に、実行ユニット23,29は、例えば2つの数の加算または乗算のような指定された動作を行なう。実行ユニットは、例えば、1つ以上の算術論理演算ユニット(ALU)、浮動小数点ユニット(FPU)およびバレル・シフタを含む、動作を実行するための特殊なハードウェアを含んでもよいが、本発明の範囲はこの事項に制限されるものではない。多種多様のデータ、例えばデータ・アドレス生成器によって生成されたアドレス、メモリから取り出されたデータ、またはデータ・レジスタから取り出されたデータが、実行ユニットに利用される。ライト・バック・ステージ(WB)30の間に、その結果が、パイプラインの外の記憶場所またはデータ・レジスタに、または構成レジスタ32のようなパイプライン内のデータ・レジスタに書き込まれる。パイプライン10のステージは、データの格納のために、フリップフロップのような1つ以上の格納回路を含む。
【0012】
上述したように、プロセッサ2は、ループ・セットアップ命令をサポートする。ループ・セットアップ命令は、構成レジスタ32にハードウェア・ループ(例えばトップおよびボトム)の境界を書き込むことにより、ハードウェア・ループを初期化する。ループ・セットアップ命令もまた、ループが完了すべきである回数を示す構成レジスタ32内のカウントを初期化する。さらに、ループ・セットアップ命令は、ループのトップに到達する前にループ・セットアップ命令に続く命令の数を示すオフセットを定義する。ハードウェア・ループが初期化された後、ハードウェア・ループは、ループの出口条件が満たされる(例えば、0に等しいカウントを備えたボトム・マッチ)までパイプライン10中で動作する。
【0013】
構成レジスタ32は、命令が引き渡されるやいなや、例えば、ループ・セットアップ命令がWBステージ30を出るときに、一般にロードされる。したがって、ループ・セットアップ命令がパイプライン10に入るときから数クロック・サイクルが過ぎるまで、構成レジスタ32に格納された入口および出口条件は更新されない。数クロック・サイクルが過ぎるまで入口および出口条件が更新されないので、ハードウェア・ループをセット・アップすることによる遅れが存在してもよい。例えば、ループ・セットアップ命令が引き渡される前に、ループ中の第1命令がパイプライン10に入る場合、構成レジスタは、ループの一部として命令を識別するためにセットアップされなくてもよい。さらに、これは、パイプラインの深さが増すにつれ増加する。
【0014】
一実施例において、プロセッサ2は、パイプライン中の早期レジスタ34のセットを維持することによって、これらの課題に対処する。図2に図示されるように、早期レジスタETop34AおよびEBot34Bがデコード・ステージに存在する一方で、ECnt34CがACステージに存在する。
【0015】
早期レジスタ34のセットを実行することにより、ループ・セットアップのペナルティを減少または回避して、プロセッサ2の処理速度を増加することができる。上述のように、ループ・セットアップ命令がパイプラインに入る時間と構成レジスタが書き込まれる時間との間に、数クロック・サイクルが経過することがある。しかしながら、ループ・セットアップ命令が構成レジスタへ書き込むかなり前に、早期レジスタがロードされる。この理由により、早期レジスタの実行が、ハードウェア・ループをセットアップするための時間を削減する。
【0016】
早期レジスタは、構成レジスタの値を予測するかまたは推測するために使用される推論的なレジスタである。構成レジスタと異なり、推論的なレジスタはシステムの命令セットにサポートされない。したがって、プログラム・コードはその推論的なレジスタにアクセスするために使用されない。この理由により、プログラマは、構成レジスタでできるのと同じ方法で、推論的なレジスタへ、またはそのレジスタから、データを移動させることができない。
【0017】
早期レジスタのロードはいくつかの異なる方法で行われる。例えば、早期レジスタは、単に通常の命令レジスタ転送を構成レジスタに対して実行することの結果としてロードされる。言いかえれば、システムは、他のいくつかのレジスタの内容をロードすることを構成レジスタに命じ、その結果、早期レジスタが更新される。しかし、レジスタをロードする別の方法は、メモリからそれらをロードすることである。言いかえれば、システムは、メモリからデータをフェッチし、そのデータを構成レジスタにロードし、そして早期レジスタを更新する。
【0018】
しかしながら、メモリからの通常のレジスタの移動またはロードに関する問題は、それらがループ・セットアップ・ペナルティを持ち込むかもしれないということである。データの書き込みが可能になるまで、システムはパイプラインをストールさせるので、これらのペナルティが発生する。これらのペナルティを回避するために、構成レジスタが書き込まれる前に、ループ・セットアップ命令が早期レジスタをロードするために使用することができる。
【0019】
次の例は、典型的なループ・セットアップ機械語命令を起動するためのシンタックスを示す。
【0020】
LSETUP(PC Relative Top, PC Relative Bottom)Counter=X
PC Relative Topは、現在の命令からループの開始までの距離を指定する(開始オフセット)。PC Relative Bottomは、現在の命令からループの終了までの距離を指定する(終了オフセット)。さらに、Counter変数は、カウンタ・レジスタおよびループ中の繰り返しの回数を示すループ・カウントを特定する。
【0021】
図3は、本発明の実施例に従って、早期レジスタがロードされるタイミングを図示するフロー図である。記述されるように、ループ・セットアップ命令は、カウント値、トップ値およびボトム値の形式で、ループ条件を収容することができる。全体として、これらの3つの値は、ハードウェア・ループの入口および出口条件を定義する。
【0022】
カウント値は、ループが作る繰り返しの回数を表わす。一旦ループ・セットアップ命令がACに入ると(38)、カウント値がECntレジスタに書かれる(39)。ECntレジスタへの最初の書き込みは、データ・レジスタからのレジスタ転送によって行われる。ある動作モードでは、ECntレジスタには、データ・アドレス生成(DAG)パイプラインのポインタ・レジスタ(PREGS)内に含まれていたデータが書き込まれる。必要があれば、パイプラインの1つの中のALUが、ループ・セットアップ命令からカウント値を計算するために使用されてもよい。
【0023】
トップおよびボトム値は、どの命令がループのトップか、また、どの命令がループのボトムかを示す。しかしながら、ループ・セットアップ命令のトップおよびボトム値は、プログラム・カウンタ(PC)に関連する。したがって、ACステージでの計算が、ETop34AおよびEBot34Bレジスタにそれぞれ書き込まれるトップおよびボトム値を得るために使用される(40)。ループ・セットアップ命令がEX1に入った後(41)、トップおよびボトム値は、ETop34AおよびEBot34Bレジスタに書き込まれる(42)。
【0024】
本発明の実施例によれば、システム資源を効率的に実行することができる。このように、ハードウェア・ループを操作する付加的なシステム・ハードウェアの必要性を回避できる。上述したように、ハードウェア・ループのループ条件は、ループ・セットアップ命令に含まれる。プロセッサに含まれる利用可能なALUを効率的に再使用することによって、特定目的のハードウェア・ループALUを必要とせずに、ハードウェア・ループをセット・アップすることができる。
【0025】
図4は、本発明の実施例に従って1つ以上のパイプラインの効率的な使用を図示するブロック図である。ループ・セットアップ命令は、フェッチ・ユニットによってIFステージの間にフェッチされ、DECステージ14の間に命令レジスタ(図示されず)からデコードされる。この時点で、ループ・セットアップ命令は、異なるパイプライン内で利用可能なALU(50、51)に送られて、ループ条件がすべてパラレルに計算される。
【0026】
例えば、ある特定の実施例では、第1パイプライン(例えば第1DAGパイプライン60)内のALU52は、カウント値をパスするために使用され、あらゆる必要なシフティングまたは計算を実行することができる。さらに、第2パイプライン(例えば第2DAGパイプライン62)内のALU50は、ループ・セットアップ命令からループのボトム値を計算するために使用される。さらに、第3パイプライン(例えば、システム・パイプライン64の分岐ユニット54に含まれるもの)内のALU51は、ループ・セットアップ命令からループのトップ値を計算するために使用される。このように、ループ条件はパラレルに計算される。さらに、各ALUは、システムがハードウェア・ループを操作するために形成されていてもいなくても、すべて利用可能な資源である。したがって、これら利用可能な資源を再使用することによって、前述のインプリメンテーションは、ハードウェア・ループを操作するためのハードウェアの不必要な増加を回避することができる。
【0027】
ループ条件が計算された後、これらの条件は、早期(または推論的な)レジスタ34のセットに書き込まれる。ETopレジスタ34Aは、ループの最初の命令(またはループのトップ)を指すためにロードされる。EBotレジスタ34Bは、ループの最後の命令(またはループのボトム)を指すためにロードされる。ECntレジスタ34Cは、ループが繰り返される回数を指定するためにロードされる。一実施例では、ECnt34Cは、ボトム・マッチに遭遇するたびにディクリメントしながら下方へカウントする。
【0028】
早期レジスタ34への計算されたループ条件を書き込むことに加えて、このデータは、さらに、ライト・バック・ステージで書き込まれた構成レジスタ32のセットへ送られる。本発明の他の実施例によれば、このデータは、複数の利用可能なパイプラインの下流へ送られる。このようにして、2つ以上の構成レジスタ32は、パラレルに書き込まれる。さらに、付加的な格納ハードウェア(例えば付加的なフリップフロップのような)は、WBへループ条件を運ぶために不必要である。
【0029】
ある特定の実施例では、第1パイプライン(例えばDAGパイプライン60)は、構成レジスタ32Aへカウント変数を運ぶために使用される。さらに、第2パイプライン(例えばDAGパイプライン62)は、構成レジスタ32Bへトップ変数を運ぶために使用される。さらに、第3パイプライン(例えばシステム・パイプライン64)は、構成レジスタ32Cへボトム変数を運ぶために使用される。これらの各パイプラインは、システムがハードウェア・ループを操作するためにアレンジされていてもいなくても、すべて利用可能な資源である。したがって、これらの利用可能な資源を再使用することによって、前述のインプリメンテーションは、ハードウェア・ループを操作するためのハードウェアの不必要な増加を回避することができる。
【0030】
パイプラインの再使用には、いくつかの利点が認められる。例えば、単一のパイプラインだけがループ条件を計算するために使用された場合、単一のALUを用いて全ての必要な計算を行なうためにはいくつかのクロック・サイクルが必要である。さらに、単一のパイプラインだけがループ条件を伝播するために使用された場合、データをWBへ渡すために追加のクロック・サイクルが必要である。これらの理由により、追加のパイプラインの再使用は、これらの追加のループ・セットアップ・ペナルティを回避することによって、改善されたシステム性能を提供することができる。さらに、上述のように、既存のパイプラインの再使用は、プロセッサ内のハードウェアの減少を実現することができる。さらに、それはパラレルに2つ以上のレジスタにループ条件を書き込むことを促進することができる。
【0031】
図5は、発明の実施例に従って早期レジスタ値を計算する1つの動作モードを図示するフロー図である。あるフォーマットによれば、ループ・セットアップ命令は、開始オフセット(S−オフセット)および終了オフセット(E−オフセット)を含むいくつかのセットアップ変数を指定する。S−オフセットは、ループ・セットアップ命令からループ内の最初の命令までの命令ストリームにおける距離を指定する。同様に、E−オフセットは、ループ・セットアップ命令からループ内の最後の命令までの命令ストリームにおける距離を指定する。
【0032】
例えば、ループ内の最初の命令が、ループ・セットアップ命令の直後に続く命令である場合、S−オフセットはループ・セットアップ命令の幅になるであろう。命令ストリームにおいて、ループ・セットアップ命令とループ内の最初の命令との間に1つの命令がある場合、S−オフセットは、ループ・セットアップ命令および1つの命令の幅になるであろう。同様に、ループ・セットアップと最初の命令の間に2つの命令がある場合、S−オフセットはループ・セットアップ命令および2つの命令の幅になるであろう。
【0033】
図5に示されるように、S−オフセットとE−オフセットは、典型的にはループ・セットアップ命令によって指定される(74)。しかしながら、ループ・セットアップ命令は、プログラム・カウンタ(PC)に関するオフセットを指定する。したがって、PC値も決定される(75)。そして、PC値およびS−オフセットが、ETopレジスタ・データを計算するために使用される(76)。さらに、PC値およびE−オフセットが、EBotレジスタ・データ(77)を計算するために使用される。一旦計算されると、早期レジスタ・データが早期レジスタに書き込まれる(78)。再び、システム内で利用可能なALUの再使用することによって、早期レジスタ・データがパラレルに計算され、不必要なハードウェアを増加することなくそれを行うことができる。
【0034】
図5を図2と比較することにより、ETopおよびEBotレジスタを書き込む典型的なタイミングを示す。ステップ(74),(75)はDECステージ14で生じる。計算ステップ(76),(77)はACステージ18で生じる。したがって、書込みステップ(78)はEX1ステージ22Aで生じる。
【0035】
一旦ロードされると、早期レジスタはハードウェア・ループをセット・アップするために使用される。図6は、パイプライン10の命令フェッチ(IF)ユニット13およびデコーダ・ユニット17に接続されたハードウェア・ループ・ユニット7の一実施例を図示するブロック図である。ある実施例では、早期レジスタは、命令84のストリーム内のループを検知するために使用される。そして、ループ・ハードウェア86に、1つ以上のループ命令がロードされる。一旦ロードされると、ループ命令は何度もループ・ハードウェアから発行される。したがって、ハードウェア・ループが検知される場合は、1つ以上のループ命令がIFユニット13によって一度だけフェッチされ、そして、ハードウェア・ループ・ユニット7から繰り返し発行される。
【0036】
図7は、本発明の実施例に従ってハードウェアの再使用を図示するフロー図である。利用可能なハードウェアを使用して、ループ・セットアップ命令が受け取られるときに、第1ループ条件および第2ループ条件がパラレルに計算される(102,104)。これらの条件は、例えば、第1および第2算術論理演算ユニット(ALU)を使用して計算される。さらに、これらのALUは異なるパイプラインに存在することがある。あるいは、付加的なループ条件が、他の利用可能なパイプラインに存在する付加的なALUを使用して計算されることもある。
【0037】
一旦ループ条件が計算されると(102,104)、それらは推論的なレジスタに書き込まれ(106)、ハードウェア・ループをセット・アップするために使用される。さらに、ループ条件は、第1パイプラインおよび第2パイプラインを経由して構成レジスタのセットにそれぞれ伝播される(108,110)。付加的なループ条件を伝播する必要がある場合には、付加的なパイプラインが使用されてもよい。一旦伝播されると、ループ条件は構成レジスタのセットに書き込まれる(112)。
【0038】
ループ・セットアップ命令からループ条件を計算するために、1つ以上のALUの使用が要求されることがある。さらに、構成レジスタのセットへ計算された条件を伝播するには、すべてのループ条件のために、すべてのパイプ・ステージで格納回路(例えばフリップフロップ)を要求することがある。利用可能なシステム資源を効率的に実行することによって、ハードウェア・ループは、付加的なハードウェア・ループALUおよびフリップフロップを必要とすることなくセット・アップすることができる。
【0039】
本発明の多様な実施例が記述された。例えば、ハードウェア・ループ・コンテキストにおいて従来使用されないハードウェアの再使用が、プロセッサ内のインプリメンテーションのために記述された。プロセッサは、汎用計算機システム、ディジタル処理システム、ラップトップ・コンピュータ、パーソナル・デジタル情報処理端末(PDA)および携帯電話を含む多種多様のシステムで実行することができる。このコンテキストにおいて、上述されたハードウェアの再使用は、効率的なハードウェア・ループを促進するために容易に使用することができる。そのようなシステムでは、プロセッサは、オペレーティング・システムおよび他のソフトウェア・アプリケーションを格納することができる、フラッシュ・メモリ装置またはスタティック・ランダム・アクセス・メモリ(SRAM)のようなメモリ装置に結合される。これらおよび他の実施例は、添付の請求項の範囲内である。
【図面の簡単な説明】
【図1】 本発明の実施例に従って適合されたプログラム可能なプロセッサの一例を図示するブロック図である。
【図2】 本発明の実施例に従ってパイプラインを図示するブロック図である。
【図3】 本発明の実施例に従って早期レジスタをロードするプロセスの一例を図示するフロー図である。
【図4】 本発明の実施例に従って1つ以上のパイプラインの効率的な使用を図示するブロック図である。
【図5】 本発明の実施例に従って早期レジスタ値を決定するループ・セットアップ命令の使用の一例を図示するフロー図である。
【図6】 ハードウェア・ループ・ユニットの一実施例を図示する回路ブロック図である。
【図7】 本発明の実施例に従ってハードウェアの再使用を図示するフロー図である。

Claims (29)

  1. パイプライン方式のプロセッサの第1パイプラインによって、ループ・セットアップ命令の特定の実体に対応する第1ハードウェア・ループのためのループ条件をフェッチする段階と、
    パイプライン方式のプロセッサの前記第1パイプラインを経由してループ・セットアップ命令の前記特定の実体に対応する前記第1ハードウェア・ループの前記ループ条件の第1を伝播する第1の伝播段階と、
    前記ループ条件の第2を前記パイプライン方式のプロセッサの前記第1パイプラインから前記パイプライン方式のプロセッサの前記第2パイプラインへ配送する段階と、
    前記パイプライン方式のプロセッサの前記第2パイプラインを経由してループ・セットアップ命令の前記特定の実体に対応する前記第1ハードウェア・ループのための前記ループ条件の第2を、前記第1の伝播段階と並行して、伝播する第2の伝播段階と、
    から構成されることを特徴とする方法。
  2. 前記第1ハードウェア・ループのための前記ループ条件を伝播する段階に先立って、レジスタの第1セットに前記ループ条件の少なくとも一部を書き込み、前記伝播に先立って前記第1ハードウェア・ループのための前記ループ条件に基づくパラメータの計算を開始するために前記レジスタを用いる段階と、
    前記ループ条件を伝播する段階の後に、レジスタの第2の異なるセットに前記第1ハードウェア・ループのための前記ループ条件の少なくとも一部を書き込む段階であって、前記レジスタの第2の異なるセットは1またはそれ以上のパイプライン構成レジスタからなる、段階と、
    をさらに含むことを特徴とする請求項1記載の方法。
  3. 第3パイプラインを経由して前記ループ条件の第3を伝播する段階をさらに含むことを特徴とする請求項1記載の方法。
  4. 前記レジスタの第1セットに前記ループ条件の少なくとも一部を書き込む段階に先立って、前記ハードウェア・ループの前記ループ条件の少なくとも一部を生成する段階をさらに含むことを特徴とする請求項2記載の方法。
  5. 前記ループ条件を生成する段階が、ループ・セットアップ命令の前記特定の実体中のプログラム・カウンタ関連データから前記ループ条件のうちの少なくとも1つを計算する段階を含むことを特徴とする請求項記載の方法。
  6. 第1パイプライン内の第1算術論理演算ユニットを使用して、ループ・セットアップ命令の特定の実体から第1ハードウェア・ループの第1ループ条件を計算する第1の計算段階と、
    第2パイプライン内の第2算術論理演算ユニットを使用して、前記ループ・セットアップ命令から前記第1ハードウェア・ループの第2ループ条件を計算する第2の計算段階と、
    第1の計算段階および第2の計算段階の結果を使用し、前記第1ハードウェア・ループのパラメータを計算する段階と連携して前記ループ条件をハードウェア・レジスタへ伝播する段階と、
    前記伝播する段階に先立ち、前記ループ条件に基づいて、前記第1ハードウェア・ループを使用して前記パラメータの計算を開始する段階と、
    から構成されることを特徴とする方法。
  7. レジスタの第1セットに、前記第1および第2ループ条件を書き込む段階をさらに含むことを特徴とする請求項記載の方法。
  8. 第3パイプライン内の第3算術論理演算ユニットを使用して、前記ループ・セットアップ命令の特定の実体から前記ハードウェア・ループの第3ループ条件を計算する段階と、
    レジスタの第1セットに、前記第1、第2および第3ループ条件を書き込む段階と、
    をさらに含むことを特徴とする請求項記載の方法。
  9. 前記第1ループ条件を計算する段階、および前記第2ループ条件を計算する段階が、パラレルに生じることを特徴とする請求項記載の方法。
  10. 前記第1ループ条件を、第1パイプラインを経由してレジスタの第2セットへ伝播する段階をさらに含むことを特徴とする請求項記載の方法。
  11. 前記第2ループ条件を、第2パイプラインを経由して前記レジスタの第2セットへ伝播する段階をさらに含むことを特徴とする請求項10記載の方法。
  12. 第1算術論理演算ユニットを含む第1パイプライン、および第2算術論理演算ユニットを含む第2パイプラインと、
    前記パイプラインに結合された制御ユニットと、
    から構成され、前記制御ユニットは、
    第1ハードウェア・ループのためのループ・セットアップ命令をコンピュータ・プログラムから獲得し、前記ループ・セットアップ命令は前記第1ハードウェア・ループの実行に際しての特定の実体に関連し、
    ループ・セットアップ命令を前記第1パイプラインから前記第2パイプライン中の第2算術論理演算ユニットへ配送し、
    前記第1パイプライン内の前記第1算術論理演算ユニットを使用して、前記ループ・セットアップ命令の1つから前記第1ハードウェア・ループの実行に際しての前記特定の実体に係る第1ループ条件を計算する第1の計算を行い、および、
    前記第2パイプライン内の前記第2算術論理演算ユニットを使用して、前記配送されたループ・セットアップ命令から前記第1ハードウェア・ループの実行に際しての前記特定の実体に係る第2ループ条件を、前記第1の計算と並行して、計算する第2の計算に適合される、
    ことを特徴とする装置。
  13. 前記制御ユニットは、前記制御ユニットに結合されたレジスタの第1セットをさらに含み、前記制御ユニットが、前記レジスタの第1セットに前記ハードウェア・ループの実行に際しての前記特定の実体に係る前記第1および第2ループ条件を書き込むためにさらに適合されることを特徴とする請求項12記載の装置。
  14. 前記装置は、前記制御ユニットに結合された第3パイプラインさらに含み、前記第3パイプラインは第3算術論理演算ユニットを含み、前記制御ユニットは、
    前記第3パイプライン内の前記第3算術論理演算ユニットを使用して、前記ループ・セットアップ命令から前記ハードウェア・ループの実行に際しての前記特定の実体に係る第3ループ条件を計算し、および、
    前記レジスタの第1セットに前記ハードウェア・ループの実行に際しての前記特定の実体に係る前記第1、第2および第3ループ条件を書き込むためにさらに適合される、
    ことを特徴とする請求項13記載の装置。
  15. 前記装置は、前記制御ユニットに結合されたレジスタの第2セットをさらに含み、前記制御ユニットが、前記第1パイプラインを経由して前記レジスタの第2セットへ前記ループ条件のうちの少なくとも1つを伝播するためにさらに適合されることを特徴とする請求項13記載の装置。
  16. 前記制御ユニットは、前記第2パイプラインを経由して前記レジスタの第2セットへ前記ループ条件のうちの少なくとも1つを伝播するためにさらに適合されることを特徴とする請求項15記載の装置。
  17. 前記装置は、前記制御ユニットに結合されたレジスタの第2セットをさらに含み、前記制御ユニットは、
    前記第1パイプラインを経由して前記レジスタの第2セットへ前記ループ条件のうちの少なくとも1つを伝播し、
    前記第2パイプラインを経由して前記レジスタの第2セットへ前記ループ条件のうちの少なくとも1つを伝播し、および、
    前記第3パイプラインを経由して前記レジスタの第2セットへ前記ループ条件のうちの少なくとも1つを伝播するためにさらに適合される、
    ことを特徴とする請求項14記載の装置。
  18. 前記レジスタの第1セットが、推論的なレジスタであることを特徴とする請求項13記載の装置。
  19. 前記パイプラインのうちの少なくとも1つが、データ・アドレス生成パイプラインであることを特徴とする請求項12記載の装置。
  20. 前記パイプラインのうちの少なくとも1つが、システム・パイプラインであることを特徴とする請求項12記載の装置。
  21. レジスタのセット、第1パイプライン、および第2パイプラインと、
    前記レジスタのセット、前記第1パイプライン、および前記第2パイプラインに結合された制御ユニットと、
    から構成され、前記制御ユニットは、
    前記第1パイプラインを経由して前記レジスタのセットへ第1ハードウェア・ループの実行に際しての前記特定の実体に係るループ条件のうちの少なくとも1つを伝播する第1の伝播を行い
    前記第2パイプラインを経由して前記レジスタのセットへ前記第1ハードウェア・ループの実行に際しての前記特定の実体に係るループ条件のうちの少なくとも1つを伝播する第2の伝播を行い
    前記第1および第2の伝播を完了する前に、前記第1ハードウェア・ループを用いてデータの計算を開始することに適合している、
    ことを特徴とする装置。
  22. 前記レジスタのセットがレジスタの第2セットであって、前記装置は、前記制御ユニットに結合されたレジスタの第1セットをさらに含み、前記制御ユニットは、
    前記レジスタの第2セットへ前記ループ条件のうちの少なくとも1つを伝播することに先立って、前記レジスタの第1セットに前記ハードウェア・ループの実行に際しての前記特定の実体に係る前記ループ条件を書き込むためにさらに適合される、
    ことを特徴とする請求項21記載の装置。
  23. 前記パイプラインのうちの少なくとも1つが、データ・アドレス生成パイプラインであることを特徴とする請求項21記載の装置。
  24. 前記パイプラインのうちの少なくとも1つが、システム・パイプラインであることを特徴とする請求項21記載の装置。
  25. スタティック・ランダム・アクセス・メモリ装置と、
    前記スタティック・ランダム・アクセス・メモリ装置に結合されたプロセッサとから構成され、前記プロセッサは、レジスタの第1セット、第1パイプライン、第2パイプライン、および制御ユニットを含み、前記制御ユニットは、
    ループ・セットアップ命令を前記第1パイプラインから前記第2パイプライン中の第2算術論理演算ユニットへ配送し、
    前記第1パイプライン内の第1算術論理演算ユニットを使用して、前記ループ・セットアップ命令から第1ハードウェア・ループの実行に際しての前記特定の実体に係る第1ループ条件を計算する第1の計算を実行し、
    前記第2パイプライン内の第2算術論理演算ユニットを使用して、前記ループ・セットアップ命令から前記第1ハードウェア・ループの実行に際しての前記特定の実体に係る第2ループ条件を、前記第1の計算と並行して、計算する第2の計算を実行し、および、
    前記レジスタの第1セットに前記第1ハードウェア・ループの実行に際しての前記特定の実体に係る前記第1および第2ループ条件を書き込むために適合される、
    ことを特徴とするシステム。
  26. 前記プロセッサは第3パイプラインを含み、前記制御ユニットは、
    前記第3パイプライン内の第3算術論理演算ユニットを使用して、前記ループ・セットアップ命令から前記ハードウェア・ループの実行に際しての前記特定の実体に係る第3ループ条件を計算し、および、
    前記レジスタの第1セットに前記ハードウェア・ループの実行に際しての前記特定の実体に係る前記第1、第2および第3ループ条件を書き込むためにさらに適合される、
    ことを特徴とする請求項25記載のシステム。
  27. スタティック・ランダム・アクセス・メモリ装置と、
    スタティック・ランダム・アクセス・メモリ装置に結合されたプロセッサと、
    から構成され、前記プロセッサは、レジスタの第1セット、レジスタの第2セット、第1パイプライン、第2パイプライン、および制御ユニットを含み、前記プロセッサは、
    前記レジスタの第1セットに第1ハードウェア・ループのループ条件を書き込み、
    前記第1パイプラインを経由して前記レジスタの第2セットへ前記第1ハードウェア・ループの前記ループ条件のうちの少なくとも1つを伝播する第1の伝播を行い
    前記第2パイプラインを経由して前記レジスタの第2セットへ前記第1ハードウェア・ループの前記ループ条件のうちの少なくとも1つを伝播する第2の伝播を行い、および、
    前記第1および第2の伝播の完了前に、前記第1ハードウェア・ループを用いてデータの計算を開始するために適合される、
    ことを特徴とするシステム。
  28. 前記プロセッサがさらに第3パイプラインを含み、前記制御ユニットは、前記第3パイプラインを経由して前記レジスタの第2セットへ前記ループ条件のうちの少なくとも1つを伝播するためにさらに適合されることを特徴とする請求項27記載のシステム。
  29. 前記制御ユニットは、
    前記第1パイプライン内の第1算術論理演算ユニットを使用して、ループ・セットアップ命令から前記ハードウェア・ループの第1ループ条件を計算し、および、
    前記第2パイプライン内の第2算術論理演算ユニットを使用して、前記ループ・セットアップ命令から前記ハードウェア・ループの第2ループ条件を計算する、
    ためにさらに適合されることを特徴とする請求項27記載のシステム。
JP2002551695A 2000-12-20 2001-12-20 プログラム・ループを並列に処理する方法および装置 Expired - Lifetime JP3738253B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/745,104 US7065636B2 (en) 2000-12-20 2000-12-20 Hardware loops and pipeline system using advanced generation of loop parameters
PCT/US2001/050506 WO2002050666A2 (en) 2000-12-20 2001-12-20 Method and apparatus for processing program loops in parallel

Publications (2)

Publication Number Publication Date
JP2004516571A JP2004516571A (ja) 2004-06-03
JP3738253B2 true JP3738253B2 (ja) 2006-01-25

Family

ID=24995280

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002551695A Expired - Lifetime JP3738253B2 (ja) 2000-12-20 2001-12-20 プログラム・ループを並列に処理する方法および装置

Country Status (6)

Country Link
US (1) US7065636B2 (ja)
JP (1) JP3738253B2 (ja)
KR (1) KR100571326B1 (ja)
CN (1) CN1257450C (ja)
TW (1) TWI235330B (ja)
WO (1) WO2002050666A2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1387257B1 (en) 2002-07-31 2017-08-23 Texas Instruments Inc. System to dispatch multiple instructions to available hardware resources
US20050102659A1 (en) * 2003-11-06 2005-05-12 Singh Ravi P. Methods and apparatus for setting up hardware loops in a deeply pipelined processor
US7406590B2 (en) * 2004-02-25 2008-07-29 Analog Devices, Inc. Methods and apparatus for early loop bottom detection in digital signal processors
US7558948B2 (en) * 2004-09-20 2009-07-07 International Business Machines Corporation Method for providing zero overhead looping using carry chain masking
JP2007207145A (ja) * 2006-02-06 2007-08-16 Nec Electronics Corp ループ制御回路及びループ制御方法
US8443351B2 (en) * 2006-02-23 2013-05-14 Microsoft Corporation Parallel loops in a workflow
TWI373210B (en) * 2007-06-07 2012-09-21 Asustek Comp Inc Conference presentation system
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
JP5692089B2 (ja) 2009-11-24 2015-04-01 日本電気株式会社 プロセッサ、プロセッサによるループ回数制御方法
GB2580316B (en) * 2018-12-27 2021-02-24 Graphcore Ltd Instruction cache in a multi-threaded processor

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0374419A3 (en) 1988-12-21 1991-04-10 International Business Machines Corporation Method and apparatus for efficient loop constructs in hardware and microcode
JP2866421B2 (ja) 1990-01-19 1999-03-08 株式会社日立製作所 複数パス並列処理方法
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
US5537606A (en) * 1995-01-31 1996-07-16 International Business Machines Corporation Scalar pipeline replication for parallel vector element processing
US6003128A (en) * 1997-05-01 1999-12-14 Advanced Micro Devices, Inc. Number of pipeline stages and loop length related counter differential based end-loop prediction
US6085315A (en) * 1997-09-12 2000-07-04 Siemens Aktiengesellschaft Data processing device with loop pipeline
US6567895B2 (en) * 2000-05-31 2003-05-20 Texas Instruments Incorporated Loop cache memory and cache controller for pipelined microprocessors
US6766444B1 (en) 2000-11-02 2004-07-20 Intel Corporation Hardware loops

Also Published As

Publication number Publication date
TWI235330B (en) 2005-07-01
WO2002050666A2 (en) 2002-06-27
CN1481527A (zh) 2004-03-10
KR100571326B1 (ko) 2006-04-17
KR20030066749A (ko) 2003-08-09
JP2004516571A (ja) 2004-06-03
CN1257450C (zh) 2006-05-24
US7065636B2 (en) 2006-06-20
US20020078333A1 (en) 2002-06-20
WO2002050666A3 (en) 2002-11-28

Similar Documents

Publication Publication Date Title
CN109661647B (zh) 数据处理装置和方法
KR100571322B1 (ko) 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템
JP3688270B2 (ja) プロセッサの停止
JP2019511056A (ja) 複素数乗算命令
JP3738253B2 (ja) プログラム・ループを並列に処理する方法および装置
US20030120882A1 (en) Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor
US8250344B2 (en) Methods and apparatus for dynamic prediction by software
JP3787329B2 (ja) ハードウェア・ループ
JP3737802B2 (ja) ハードウェア・ループ
US20030120900A1 (en) Apparatus and method for a software pipeline loop procedure in a digital signal processor
US20030154469A1 (en) Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor
JP3739357B2 (ja) ハードウェア・ループ
US20030120905A1 (en) Apparatus and method for executing a nested loop program with a software pipeline loop procedure in a digital signal processor
JP3759729B2 (ja) スペキュレーティブ・レジスタの調整
US20030120899A1 (en) Apparatus and method for processing an interrupt in a software pipeline loop procedure in a digital signal processor
US20060168431A1 (en) Method and apparatus for jump delay slot control in a pipelined processor
US20030182511A1 (en) Apparatus and method for resolving an instruction conflict in a software pipeline nested loop procedure in a digital signal processor
JP2000029696A (ja) プロセッサおよびパイプライン処理制御方法
JP2503223B2 (ja) 先行制御方式
JP2924735B2 (ja) パイプライン演算装置及びデコーダ装置
JP2010140398A (ja) データ処理装置及びデータ処理方法
JP2001216154A (ja) むき出しのパイプラインを具備するコードのサイズを、nop演算を命令オペランドとしてコード化することで削減するための方法並びに装置
JPH07191845A (ja) 即値データ転送装置
JPH02211533A (ja) 分岐命令に続く命令の選択的実行を行うためのコンピューター装置
JP2001195252A (ja) マスク技術による無効で分岐効率向上を図るプロセッサ

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050401

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050620

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050630

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050915

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: 20051011

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051031

R150 Certificate of patent or registration of utility model

Ref document number: 3738253

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

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: 20091104

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: 20091104

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101104

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: 20111104

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: 20121104

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: 20121104

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131104

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term