JP2012515388A - 大命令幅プロセッサにおける処理効率の向上 - Google Patents
大命令幅プロセッサにおける処理効率の向上 Download PDFInfo
- Publication number
- JP2012515388A JP2012515388A JP2011545806A JP2011545806A JP2012515388A JP 2012515388 A JP2012515388 A JP 2012515388A JP 2011545806 A JP2011545806 A JP 2011545806A JP 2011545806 A JP2011545806 A JP 2011545806A JP 2012515388 A JP2012515388 A JP 2012515388A
- Authority
- JP
- Japan
- Prior art keywords
- pipeline
- processor
- program instruction
- processing unit
- memory
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 102
- 238000000034 method Methods 0.000 claims description 50
- 239000013598 vector Substances 0.000 claims description 23
- 230000004044 response Effects 0.000 claims description 9
- 230000003111 delayed effect Effects 0.000 claims description 4
- 230000004913 activation Effects 0.000 claims description 3
- 230000009849 deactivation Effects 0.000 claims description 3
- 230000009471 action Effects 0.000 claims description 2
- 230000001351 cycling effect Effects 0.000 claims 1
- 230000001934 delay Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 8
- 230000009467 reduction Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000010924 continuous production Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
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)
Abstract
1つ以上の処理ユニット(40)と、実行パイプライン(32)と、制御回路(28)とからなるプロセッサ(20)。実行パイプラインは、少なくとも段階を成す第1と第2のパイプラインステージを有し、パイプラインの連続するサイクルの中で処理ユニットにより遂行される動作を特定するプログラム命令が、第1のパイプラインステージによりメモリから取得され、そして前記第2のパイプラインステージに運ばれ、第2のパイプラインステージは処理ユニットに対し特定の動作を遂行するようにさせる。制御回路は、パイプラインの第1のサイクルにおいて第2のパイプラインステージ内に存在するプログラム命令が、パイプラインの次のサイクルにおいて再び実行されると判定した時に、前記実行パイプラインに対し、前記メモリから前記プログラム命令を再取得することなく、前記パイプラインステージの1つの中の前記プログラム命令を再使用させるように接続される。
【選択図】図1
【選択図】図1
Description
本発明は、プロセッサ構造に関し、特にプロセッサの処理効率の向上に関するものである。
デジタル信号プロセッサ(DSP)のようなプロセッサは、通常プログラム命令を命令メモリに記憶し、実行に際してその命令をメモリから取得する。あるプロセッサは、一時的に従前に使用した命令をキャッシュする種々のキャッシュ構成を使用して命令メモリから取得する命令の数を減少させる。
本発明の実施形態は、1つ以上の処理ユニットと、実行パイプラインと、実行パイプラインは、少なくとも段階を成す第1と第2のパイプラインステージを有し、パイプラインの連続するサイクルの中で処理ユニットにより遂行される動作を特定するプログラム命令が、第1のパイプラインステージによりメモリから取得され、そして第2のパイプラインステージに運ばれ、第2のパイプラインステージは処理ユニットに対し特定の動作を遂行するようにさせ、制御回路と、制御回路は、パイプラインの第1のサイクルにおいて第2のパイプラインステージ内に存在するプログラム命令が、パイプラインの次のサイクルにおいて再び実行されると決定した時に、実行パイプラインに対し、メモリからプログラム命令を再取得することなく、パイプラインステージの1つの中のプログラム命令を再使用させるように接続され、を有することを特徴とする、プロセッサを提供する。
ある実施形態では、実行パイプラインは、N個のパイプラインステージを有し、制御回路は、プログラム命令がN個より少ないプログラム命令を持つプログラムループに含まれることを判定することにより、プログラム命令が再実行されることを決定するように接続される。
他の1つの実施形態では、制御回路は、プログラム命令を第2のパイプラインステージから第1のパイプラインステージにコピーすることにより、実行パイプラインに対しプログラム命令を再使用させるように接続される。他の実施形態では、制御回路は、実行パイプラインに対し、少なくとも第2のパイプラインステージ内のプログラム命令を次のサイクルでの実行のため保持させることにより、実行パイプラインに対し、プログラム命令を再使用させる、ように接続される。ある実施形態では、制御回路は、実行パイプラインに対し、プログラム命令をメモリから取得することを禁止することにより、実行パイプラインに対しプログラム命令を再使用させるように接続される。
他の1つの実施形態では、制御回路は、プログラム命令を第2のパイプラインステージから第1のパイプラインステージにコピーすることにより、実行パイプラインに対しプログラム命令を再使用させるように接続される。他の実施形態では、制御回路は、実行パイプラインに対し、少なくとも第2のパイプラインステージ内のプログラム命令を次のサイクルでの実行のため保持させることにより、実行パイプラインに対し、プログラム命令を再使用させる、ように接続される。ある実施形態では、制御回路は、実行パイプラインに対し、プログラム命令をメモリから取得することを禁止することにより、実行パイプラインに対しプログラム命令を再使用させるように接続される。
ある実施形態では、1つ以上の処理ユニットは、互いに同時に動作する多重の処理ユニットからなり、それぞれの所与のプログラム命令は、所与のプログラム命令を実行する場合に適用される多重の処理ユニットの構成を特定し、そして、多重の処理ユニットを、それぞれの構成に対応して、それぞれの所与のプログラム命令内に構成するように接続された接続回路を有する。接続回路は、1つ以上の処理ユニットの出力を検知し、検知された出力に対して定義された条件に対応して多重の処理ユニットを構成する、ように接続される。1つの実施形態では、接続回路は、所与の処理ユニットの活性化/不活性化、所与の処理ユニットへのデータ入力の1つ以上の源の選択、及び所与の処理ユニットにより遂行される動作の選択、からなる属性のグループから選択される少なくとも1つの属性を設定することにより、所与の処理ユニットを構成するように接続される。
開示された実施形態では、少なくとも1つの前記処理ユニットが、多重の要素からなる内部データベクトルを保持する内部メモリと、そして、ベクトル要素上を循環し、循環したベクトル要素上で動作するように接続される、処理ロジックとを有する。他の実施形態では、少なくとも1つの処理ユニットが、入力と出力を有し、データを入力において受け、データを遅延させ、他の処理ユニットによる処理のため出力において遅延したデータを生成するように接続される。
ある実施形態では、一時記憶メモリと調停回路を有し、調停回路は、2つ以上の処理要素による1つの所与の資源にアクセスする2つ以上の要求を含む所定のプログラム命令の識別に反応して、実行パイプラインを停止し、要求により特定されたそれぞれのデータを一時記憶メモリに記憶し、実行パイプラインを停止した状態で2つ以上の処理要素に対し1つの所与の資源にアクセスすることを許容し、そして、要求に応答して資源から返戻されたそれぞれの結果を一時記憶メモリに記憶するように接続される。ある実施形態では、資源は1つの共有メモリからなる。処理要素は1つ以上の前記処理ユニットからなる。1つ以上の処理要素はプロセッサの外部にある。
本発明の実施形態によれば、1つ以上の処理ユニットを動作させるステップと、実行パイプラインを動作させるステップと、実行パイプラインは、少なくとも段階を成す第1と第2のパイプラインステージを有し、パイプラインの連続するサイクルの中で処理ユニットにより遂行される動作を特定するプログラム命令が、第1のパイプラインステージによりメモリから取得され、そして第2のパイプラインステージに運ばれ、第2のパイプラインステージは処理ユニットに対し特定の動作を遂行するようにさせ、パイプラインの第1のサイクルにおいて第2のパイプラインステージ内に存在するプログラム命令が、パイプラインの次のサイクルにおいて再び実行されると決定するステップと、実行パイプラインに対し、メモリからプログラム命令を再取得することなく、パイプラインステージの1つの中のプログラム命令を再使用させるステップと、を有することを特徴とするコンピューティングの方法が提供される。
本発明は、図を参照しての実施形態の詳細説明からより十分に理解されよう。
本発明は、図を参照しての実施形態の詳細説明からより十分に理解されよう。
(概要)
多くのプロセッサにおいて、命令メモリからのプログラム命令の取得は有意の電力を消費する。命令取得動作により消費された電力はプロセッサ全体の電力消費を左右するが、特に命令幅の大きなプロセッサにおいてはそうである。
以下に記述される本発明の実施形態では、パイプライン構造を有するプロセッサにおいて、命令メモリから取得されるプログラム命令の数を減らす方法とシステムを提供する。パイプライン構造では、プロセッサは、プログラム命令を取得し、復号し、実行させる2つ以上のパイプラインステージを持つ実行パイプラインからなる。
多くのプロセッサにおいて、命令メモリからのプログラム命令の取得は有意の電力を消費する。命令取得動作により消費された電力はプロセッサ全体の電力消費を左右するが、特に命令幅の大きなプロセッサにおいてはそうである。
以下に記述される本発明の実施形態では、パイプライン構造を有するプロセッサにおいて、命令メモリから取得されるプログラム命令の数を減らす方法とシステムを提供する。パイプライン構造では、プロセッサは、プログラム命令を取得し、復号し、実行させる2つ以上のパイプラインステージを持つ実行パイプラインからなる。
ここに記載される方法及びシステムは、現在取得を意図する1つの命令は、実行パイプライン内に既に存在するという事実を利用する。ある実施形態では、プロセッサは制御回路を有し、制御回路は、取得を意図した従前のプログラム命令のインスタンスが既に実行パイプライン内に存在することを判定し、パイプラインに対し、命令メモリから命令を再取得する代わりに、現存する命令を再使用させる。
命令が再使用される共通のシナリオは、プロセッサがパイプライン深さより短いプログラムループを実行する場合(即ち、ループ内の命令の数がパイプラインステージの数より小さい場合)に起こる。このような短いループの2回以上の繰り返しを実行する場合、従前のループからのプログラム命令が既にパイプライン内に流れている。ある実施形態では、制御回路は短いループの一部である命令を識別し、そしてプロセッサに対し、命令メモリにアクセスする必要なく、これら命令をそのパイプライン内で再使用させる。所与の命令は、例えば、命令をそのパイプラインの入力にコピーすることにより、又はパイプラインに対し、追加クロックサイクルの間その命令を同じ位置に保持させることにより、再使用可能である。
典型的に、実行パイプライン内での命令の再使用は、命令メモリからの命令の取得に比べ有意の電力削減をもたらす。従って開示される方法とシステムは、既存の技術に比べ有意の電力消費の減少をもたらす。開示される技術により達成される電力消費の減少は、典型的に、短いプログラムループを使用する種々のソフトウェアタスクをプログラムする能力に依存する。短いループに関する異なるソフトウェアを処理するプロセッサの能力を向上させるハードウェア機構の幾つかの事例がここに示される。
従前に使用された命令を独自のメモリにキャッシュする既知の命令捕獲技術と異なり、ここに記載される方法とシステムは、現存するパイプラインステージに本来流れる命令を使用し、そして命令のキャッシュ用の追加のメモリ要素を必要としない。もっとも周知のキャッシュ構造は典型的にアクセスレイテンシーを減少させることを目的にし、目標達成のために比較的大きなメモリ空間を必要とする。このように、これらの構造は多くの場合、殆ど又は全く(時には逆の影響を与えることもあるが)命令取得スキーム全体の電力消費に影響を与えない。このように、開示される方法とシステムは、キャッシュ及び非キャッシュの命令プロセッサの両方にとって有益である。更に、キャッシュ技術と対照的に、開示される方法とシステムにより可能となるプログラム命令の再使用は、特定のプログラムコードセクションの結果的な電力節約と共に、統計的よりはむしろ完全に決定論的であり、プログラマーが容易に予測し計画可能である。
(システムの記述)
図1は本発明の実施形態による、プロセッサ20を示す概略ブロック図である。ここに記載される方法とシステムは、特に、データベクトル又はアレイ全体の上で所与の連続する動作を実行するコンピュータタスクに有益である。この種のタスクはデジタル信号処理(DSP)全体に共通しており、特に(限定されないが)直交周波数多重分割(OFDM)や直交周波数分割多重アクセス(OFDMA)システムにおける基底帯処理に使用される。
図1は本発明の実施形態による、プロセッサ20を示す概略ブロック図である。ここに記載される方法とシステムは、特に、データベクトル又はアレイ全体の上で所与の連続する動作を実行するコンピュータタスクに有益である。この種のタスクはデジタル信号処理(DSP)全体に共通しており、特に(限定されないが)直交周波数多重分割(OFDM)や直交周波数分割多重アクセス(OFDMA)システムにおける基底帯処理に使用される。
この事例では、プロセッサ20は、WiMAXで知られるIEEE802.16基準に従って動作する無線通信システムでDSP機能を遂行するために使用される超大命令ワード(VLIW)プロセッサを含む。しかし或いは、プロセッサ20は、LTEや拡張グローバルプラットフォーム(XGP)、WiFi,移動通信用グローバルシステム(GSM)、EDGE,CDMA2000,EVDO,広域帯CDMA(WCDMA)、時分割同期CDMA(TD−CDMA)、高速パケットアクセス(HSPA)又はパーソナル携帯電話システム(PHS)のような、他の適合する通信基準又はプロトコルを実行する通信システムで使用されてもよい。さらに或いは、プロセッサ20は、他の適合する機能を遂行するために使用される他の適合するプロセッサを有してもよい。
プロセッサ20は命令メモリ24に記憶されたプログラム命令を実行する。命令は以下で記述される制御回路28を経由して実行パイプライン32に提供される。実行パイプラインは、プログラム命令を取得、復号、実行する2つ以上のパイプラインステージ42を有する。図1の実施形態では、プロセッサ20は、42A、42Bと表示した2つのパイプラインステージからなる。パイプラインステージ42Aはプログラム命令を取得し復号し、パイプラインステージ42Bは命令を実行する。パイプライン構造はプログラム命令が効率的に処理されそして実行されることを可能にする。所与のクロックサイクルにおいて、パイプラインステージ42Bは、所与の命令を実行し、一方パイプラインステージ42Aは同時に次の命令を取得し復号する。
プログラム命令は、算術動作、データ移動動作、フロー制御動作又は他の適合する動作のような、プロセッサが遂行する動作を特定する。プロセッサ20は、プログラム命令及び又は一時記憶データ(例えば汎用レジスタ)内で特定された動作を遂行する多重の処理ユニット(PU)40を有する。例えば図1は40A、40B、40C、40Dで表示される4つのPUを示す。異なるPUは類似の又は異なる設計と構成を有する。典型的に各プログラム命令は、多重のそれぞれのPUにより遂行される多重の動作を特定する。
処理ユニット(PU)は、データ及び制御交換メッシュ(DCSM)36により構成され制御される。DCSMは典型的に、ある接続設定に従って異なるPUの入力と出力を接続する1組のマルチプレクサからなる。所与のプログラム命令の実行中に適用される接続設定は命令内で特定される。所与の命令を実行する場合、実行パイプライン32の出力は、場合により以下で詳述される制御回路の一定の出力及びPUの出力と共にDCSM36に提供される。DCSMは、パイプライン32により特定されたように、異なるPUを構成し、PUの入力と出力を接続し、そしてデータをPUに提供する。言い換えれば、実行パイプラインはPUに対しプログラム命令内で特定された動作を遂行させる。PU40とDCSM36の機能は、以下で詳述される。ある実施形態では、DCSM36は、制御回路28に対しIFC64へのブランチ情報、CEC68への条件情報、及び命令情報のような、情報を提供する。
この事例では、それぞれのプログラム命令は、3つの部分からなる:(1)PUにより遂行される動作のオペコード、(2)DCSM構成設定、及び(3)命令の実行のためDCSMに提供されるデータ。それぞれのパイプラインステージは、プログラム命令の3つの部分をそれぞれ処理する3つのユニットからなる。オペコード処理ユニット44は、コマンドオペコードを処理し、DCSM選択ユニット48はDCSM設定を処理し、即時ユニット52はDCSMに提供されるデータを処理する。(図1の構成は2重ステージパイプラインに関しているが、ここに記載される方法とシステムは、他の適合する数のパイプラインステージとステージ間の機能分割を有する他のいかなる適合する実行パイプラインにおいても使用可能である。)
制御回路28は、プログラム命令をメモリ24からロードする取得表示子(FI)60を含む。命令フローコントローラ(IFC)64は、プログラムフロー、例えば、プログラム命令のアドレスの前進、ブランチ命令の取り扱い、及び他のプログラムカウンタ(PC)関連のタスク、を管理する。特にIFC64は、次のプログラム命令の取得に使用されるPC値を生成し出力する。処理ユニットイネイブラ(PUE)56は、有効/無効信号をプロセッサ20の異なる要素に対して生成する。
条件付き実行コントローラ(CEC)68は、オペランドの比較に基づいて、PU40の条件付き有効、無効、及び構成を遂行する。所与のクロックサイクルにおいて、CEC68は2つのオペランドを比較し、そして比較結果に基づいて、1組の入力制御信号をPUを制御(例えば、有効、無効、接続又は構成)する1組の出力制御信号に翻訳します。典型的にPUEとCECは、PUをDCSMを使用して構成し制御するため、一緒に動作します。処理ユニットイネイブラ(PUE)56は典型的に、どのPUが所定の命令サイクル内に有効にされるかを、命令内で運ばれたデータとCEC68により提供されるデータに基づいて決定する。
ある実施形態では、プロセッサ20は、更に多重のPUが同一の命令クロック内でデッドロック無くプロセッサ資源(例えば、メモリ74)にアクセスすることを可能にするアービター72を含む。アービターの機能性は以下に詳述する。ある実施形態では、アービター72は、PU40と共に当該資源へのアクセスを競うプロセッサ20の外部の他の要素のアクセスも管理する。
図1の実施形態は一定のプロセッサ構成について示すが、この選択は純粋に例示のためである。本発明の原理はこの構成に決して限定されず、他の適合する構成にも使用可能である。開示された技術を示すには必須でないプロセッサ20のある要素は、明確化のため削除された。
図1の実施形態は一定のプロセッサ構成について示すが、この選択は純粋に例示のためである。本発明の原理はこの構成に決して限定されず、他の適合する構成にも使用可能である。開示された技術を示すには必須でないプロセッサ20のある要素は、明確化のため削除された。
(プログラム命令の選択的取得による電力消費の削減)
多くのプロセッサ構成では、命令メモリ24からの命令の取得は有意の電力量を必要とする。これらの命令取得動作により消費された電力はプロセッサ全体の電力消費を左右するが、特に命令幅の大きなプロセッサにおいてはそうである。
以下に記述される本発明の実施形態では、命令メモリから取得されるプログラム命令の数を減らす方法とシステムを提供する。
ここに記載される方法及びシステムは、プロセッサがパイプライン構造を持つため、現在取得を意図する1つの命令が、既に実行パイプライン内に存在するという事実を利用する。
このような命令は、命令メモリから命令を再取得する代わりに、パイプライン内で再使用可能である。
多くのプロセッサ構成では、命令メモリ24からの命令の取得は有意の電力量を必要とする。これらの命令取得動作により消費された電力はプロセッサ全体の電力消費を左右するが、特に命令幅の大きなプロセッサにおいてはそうである。
以下に記述される本発明の実施形態では、命令メモリから取得されるプログラム命令の数を減らす方法とシステムを提供する。
ここに記載される方法及びシステムは、プロセッサがパイプライン構造を持つため、現在取得を意図する1つの命令が、既に実行パイプライン内に存在するという事実を利用する。
このような命令は、命令メモリから命令を再取得する代わりに、パイプライン内で再使用可能である。
このシナリオは、プロセッサがパイプライン深さより短いプログラムループを実行する場合(即ち、ループ内の命令の数がパイプラインステージの数より小さい場合)に共通である。短いループの2回以上の繰り返しを実行する場合、従前のループの繰り返しからのプログラム命令のインスタンスが既にパイプライン内に存在する。このようにプロセッサは、命令メモリから命令を再取得する必要なく、パイプライン内の従前の命令インスタンスを再使用可能である。
プロセッサは、例えば、命令をコピーしパイプライン入力に戻すことにより、又は命令を追加クロックサイクルの間、パイプライン内で保持する(即ち、パイプラインが命令を移動させることを防止する)ことにより所与の命令を再使用してもよい。どちらの場合でもパイプライン内での命令の再使用は、命令を命令メモリ又はキャッシュから取得する場合のほんの一部の消費電力しか要しない。このように、ここに記載される方法とシステムは有意にプロセッサ全体の消費電力を低減する。ここに記載される方法とシステムは大きな命令ワードのDSPに最適化されているが、それは他の種類のプロセッサに対しても有利である。
図1の実施形態では、パイプライン32は2つのステージを有する。この構成では、プロセッサ20は、繰り返し命令メモリにアクセスすることなく、単一命令ループを実行可能である。(命令メモリは典型的に最初の繰り返しループを実行するときにアクセスされる。その後の繰り返しループではパイプライン内に既に存在する命令を再使用する。)
2つのパイプラインステージの場合、制御回路28は、追加のクロックサイクルの間命令をパイプライン内の同一位置に留まらせ、そしてプロセッサが命令メモリから命令を取得することを禁止することにより、命令を再使用可能である。命令取得の禁止は命令メモリの同一アドレスから同一の命令を繰り返し取得するのに比べて有意に消費電力が低い。
2つのパイプラインステージの場合、制御回路28は、追加のクロックサイクルの間命令をパイプライン内の同一位置に留まらせ、そしてプロセッサが命令メモリから命令を取得することを禁止することにより、命令を再使用可能である。命令取得の禁止は命令メモリの同一アドレスから同一の命令を繰り返し取得するのに比べて有意に消費電力が低い。
ある実施形態では、それぞれのプログラム命令は、その命令が単一命令ループの一部であるか否かを示すフラッグを有する。このフラッグに基づき、IFC64は、(1)現在の命令が単一命令ループの一部である、そして(2)現在のループ繰り返しは2回目以上の繰り返しである、ことを示す制御信号を生成する。この信号に応答して、PUE56はFI60が命令を命令メモリから取得することを禁止し、パイプライン32に対し追加クロックサイクルの間命令を同じ位置に保持させる(多くの場合、命令をパイプラインに沿った移動させることに加えて)。結果として命令は、繰り返し命令メモリにアクセスすることなく再実行される。パイプラインのコンテントを追加クロックサイクルの間保持する技術は、プロセッサの制御回路のスイッチングを最小にするため、さらに電力消費を減少させる。
他の実施形態では、制御回路28は、命令メモリ24から命令を再取得することなく命令を再実行するため、命令をコピー(ループバック)しパイプラインの入力に戻すハードウェア機構(不図示)を有してもよい。さらに或いは、制御回路28は、プログラムループをマークする専用の制御信号を使用せず、パイプライン内で再使用可能な命令を識別してもよい。例えば、制御回路は次の命令のプログラムアドレス(PC値)をすでにパイプライン内に存在する命令のプログラムアドレスと比較してもよい。
図2は、本発明の実施形態による、プロセッサ内のプログラム命令の選択的取得を概略示すフロー図である。方法は命令検査ステップ80において、制御回路28が取得を意図する次のプログラム命令のアドレスを検査することから始まる。制御回路(即ち、IFC64)は検査ステップ84において、命令がパイプライン深さより短い1つのループの2回目以降の繰り返しの一部であるかをチェックする(パイプライン深さより短いループは簡略化のため「ショートループ」と呼ぶ)。
命令がショートループの2回目以降の繰り返しの一部でない場合、制御回路(典型的にFI60)は、外部取得ステップ88において、命令を命令メモリ24から取得する。逆に命令がショートループの2回目以降の繰り返しの一部である場合、再使用ステップ92において、制御回路はパイプライン内の命令を再使用する。どちらの場合も、パイプライン32は命令を処理し、そして命令は、実行ステップ96において、実行のためDCSM経由でPU40に提供される。
ここに記載された実施形態では、ショートプログラムループの一部である命令について記載しているが、ここに記載される方法とシステムは、取得を意図する命令が既にパイプラインに存在する、他のいかなるシナリオでも使用可能である。
ここに記載された実施形態では、ショートプログラムループの一部である命令について記載しているが、ここに記載される方法とシステムは、取得を意図する命令が既にパイプラインに存在する、他のいかなるシナリオでも使用可能である。
(ショートプログラムループを実行する技術)
前述のように、実行パイプライン内での命令の再使用は、ショートプログラムループを実行するのに特に有用である。ある実施形態では、プロセッサ20は、種々のタイプのソフトウェアタスクがショートループを使用して符号化されるのを可能にする、追加の特徴と機構を有する。このような機構を使用して、所与のソフトウェアタスクの大きな部分が、ショートプログラムループを使用して符号化可能である。上記で開示された方法により可能となった電力消費の減少はソフトウェアタスクの大部分に適用可能である。
前述のように、実行パイプライン内での命令の再使用は、ショートプログラムループを実行するのに特に有用である。ある実施形態では、プロセッサ20は、種々のタイプのソフトウェアタスクがショートループを使用して符号化されるのを可能にする、追加の特徴と機構を有する。このような機構を使用して、所与のソフトウェアタスクの大きな部分が、ショートプログラムループを使用して符号化可能である。上記で開示された方法により可能となった電力消費の減少はソフトウェアタスクの大部分に適用可能である。
例えば、多重のPUを並行して動作させること(図1のプロセッサ20のように)はループの「平坦化」即ち、それぞれの命令が多重のPU内に分散されているショートプログラムループの書き込み、を可能にする。ある実施形態では、この能力はDCSM36により遂行されるPUのフレキシブルな構成により強化される。ある実施形態では、すべてのPU40の1つ以上の属性が、1つ以上のPU40によってデータ出力上で定義された条件に従って構成可能である。典型的にそれぞれのPUは別個にそして他のPUから独立して構成可能である。構成可能なPU属性は、所定の命令サイクル内において、PUの活性化と不活性化、PUへの1つ以上のデータ入力源の選択、PUにサポートされた多重の動作の中からのPUにより実行される動作の選択、及び/又は他の適合する属性を含む。
上記のフレキシブルなPU構成メカニズムは、入れ子状のループや長いループを等価な短いループ(即ち、プロセッサの実行パイプラインの深さより短い長さのループ)を使用して表示する能力を提供する。結果としての短いループはその後、前述のように実行パイプライン内に既に存在する命令を再使用して実行され、そして消費電力を減少させる。
例として、従来は内部ループと外部ループを有する入れ子のループとして形成されたソフトウェアタスクを考える。内部ループはM個の命令を有すると仮定する。多重のPUを並列で使用する場合、その入れ子のループは1つの短いループとして等価的に符号化され、そこではそれぞれの命令は多重のそれぞれのPUにより実行される多重動作を特定する。等価の表現では、PUは外部ループの動作を条件的に、M回の繰り返しそれぞれに一度、実行する。この方法は、内部ループの数が小さくかつ外部ループの数が大きい場合に特に有用である。
一般的に、多重の構成可能なPUを並行して動作させることは、長い動作の連続を特定するループをショートループとして書く能力を提供する。何故ならば、それぞれの命令はPUにより実行される多重の動作を特定するからである。順列内の異なる動作の中の変化(例えば、インデックス又は可変値の変化)は、異なるPUの条件的構成により表現可能である。
更に或いは、ソフトウェアタスクをショートループとして書く能力は、それぞれのPUが内部データベクトルを保持し、そして循環的に、各クロックサイクルの間にベクトルの連続する要素にアクセスし処理することを可能にすることによって強化される。例えば、通信及び信号処理のアプリケーションで遭遇する多くのフィルタリングタスクは、循環的に、サンプル信号をフィルタ係数のベクトルでフィルタリング(畳み込み)すること(例えば、有限インパルス応答(FIR)フィルタ)を含む。データベクトルを外部メモリの代わりにPU内に内部的に記憶することは、PUに要求されるメモリアクセス動作の数を有意に減少させる。メモリアクセス資源は通常高価であり、従って限定されているため、メモリアクセス資源の減少はフィルタリングタスクが有意により短いループを使用して符号化されることを可能にする。
図3は、本発明の実施形態による、プロセッサの処理ユニット(PU)40のブロック図である。この事例では、PU40は処理ロジック100と、係数ベクトル104を保持する内部メモリと、からなる。係数ベクトル104は、フィルタ係数のような多重の要素からなる。係数ベクトルは例えば1つ以上の従前のプログラム命令により、又は外部構成により特定可能である。所与のクロックサイクルの中で、処理ロジックは1つのベクトル要素から次のベクトル要素へ循環的に進み、所与の動作(例えば、乗算)を遂行し、そして動作結果をDCSMに出力する。
ベクトル要素は外部メモリから取得する必要が無いので、メモリアクセス資源の必要性は有意に減少し、特に遂行タスクが多重の入力のロードを必要とし、メモリアクセスが制限される場合にそうである。従って、フィルタリング動作は有意に短いループを使用して符号化可能であり、そして従ってプロセッサのパイプラインに既に存在する命令を再使用して実行可能であり、このことが有意の電力消費の減少をもたらす。
上記のメカニズム(入れ子ループのフィルタリング、係数ベクトルの取り扱い)は他のメカニズムと種々の方法で組合せ可能である。例えば、ベクトル104がn個の動作に1回だけ進められる場合、ベクトルは、内部ループの値に基づいて条件付きでベクトルを進める命令を定義することにより外部ループにより進められることが可能である。
上記のメカニズム(入れ子ループのフィルタリング、係数ベクトルの取り扱い)は他のメカニズムと種々の方法で組合せ可能である。例えば、ベクトル104がn個の動作に1回だけ進められる場合、ベクトルは、内部ループの値に基づいて条件付きでベクトルを進める命令を定義することにより外部ループにより進められることが可能である。
さらに或いは、ソフトウェアタスクをショートループを使用して符号化する能力は、1つ以上のPUを遅延要素として構成することにより強化可能である。ある連続プロセス(例えば、あるPUの出力を他のPUへの入力として使用するプロセス)を遂行する場合、このような遅延要素は、所与のデータが、そのデータをメモリから再取得することなく、種々の処理のステージで使用されることを可能にする。前述のように、メモリアクセス資源の必要性の減少はループ寸法の優位な減少を可能にする。ある実施形態では、遅延要素はパイプラインとなっている。言い換えれば、入力データnを受け取りそしてそれぞれの遅延出力を生成する間の時間間隔の間、パイプラインとなった遅延dを持つ遅延要素は連続的にデータ入力n+1,n+2,...,n+d−1を記憶し、従って単一命令ループの効率を増大させる。
図4は、本発明の実施形態による、PU構成のブロック図である。この事例では、PU1,..,PU6と表示される6つのPUがある連続プロセスを遂行するように構成される。これらPUのそれぞれは従前のPUの出力を入力として使用する。更に、PU6はPU7と表示される他のPUの出力を入力として受け取る。
フローバランスPU108は、その出力をPU7の入力として提供する前に、PU2の出力に制御された遅延を導入するように構成される。フローバランスPU108の遅延は、PU108とPU7の全体の遅延がPU3,PU4,PU5全体の遅延と等しくなるように設定される。フローバランスPUの使用により、たとえデータが異なるクロックサイクルで必要とされても、PU2の出力はPU3とPU7の両方に対する入力として使用可能である。フローバランスの特徴が無ければ、PU2の出力はメモリに記憶され、そしてその後適切な時期にPU7に提供するため取得されなければならない。上述のように、メモリアクセス動作の回数を減少させることは、ソフトウェアタスクをより短いループを使用して符号化する能力に資する。
フローバランスPUは所望の遅延を導入するように構成されたPU40の1つからなってもよい。所与の命令におけるPU構成は、いかなる所望の数のPUをもフローバランスPUとして働くように構成することができる。更に或いは、プロセッサ20は、この特定の機能に専用の、1つ以上のフローバランスPUを有してもよい。フローバランスPU108により導入された遅延はプログラム命令又は外部構成により特定可能である。
多重のPUを並行して使用する場合は、2つ以上のPUが同一のプログラム命令において同一のプロセッサ資源(例えば、図1のメモリ74)にアクセスを要求する可能性がある。ある実施形態では、図1のアービター72がこのような多重要求をデッドロックなしに解決する。アービター72により提供されるデッドロックの無い動作は、同一の資源に対する要求を異なる命令間で分割する必要なく、複数のPU40が同時に動作することを可能にする。
図5は、本発明の実施形態による、多重PU40を持つプロセッサ20内のデッドロックの無い調停方法を示すフロー図である。図5の方法において、図1のアービター72は所与の資源にたいするアクセスを多重競合要素により制御する。資源は、メモリ又は他の適合する種類の資源からなる。上述のように、競合要素は1つ以上のPU40及び/又は1つ以上のプロセッサ20の外部の要素からなる。特定の実施形態では、、このような外部競合要素は、プロセッサ20に類似の他のプロセッサのPUからなってもよい。
方法は、それぞれの競合するPUが、要求メモリアクセス動作のアドレスを記憶し、そしてメモリアクセス動作によりPUに返戻されたデータを記憶するため、一時的記憶空間を割り当てられるというメカニズムに基づく。一時的記憶空間(例えばレジスタ)は、個々のPU内又はアービター72内又は他の適合する場所にあってよい。
以下の記述は、メモリ資源へのアクセスを競い合う多重PUに関する。あるメモリアクセス動作を遂行するためメモリ資源にアクセスする場合、所与のPUが要求先メモリアドレスを特定する。メモリアクセス動作を終了した後、データがメモリからPUに返戻される。しかし他の実施形態では、図5の方法は、プロセッサ20及び他のプロセッサによりアクセス可能な処理エンジンのような種々の他の種類の共有資源と共に使用可能である。一般的に、共有資源にアクセスするそれぞれのPUは、要求された動作を遂行するための一定の情報を特定し、そして資源は一定のデータを結果として返戻する。
以下の記述は、メモリ資源へのアクセスを競い合う多重PUに関する。あるメモリアクセス動作を遂行するためメモリ資源にアクセスする場合、所与のPUが要求先メモリアドレスを特定する。メモリアクセス動作を終了した後、データがメモリからPUに返戻される。しかし他の実施形態では、図5の方法は、プロセッサ20及び他のプロセッサによりアクセス可能な処理エンジンのような種々の他の種類の共有資源と共に使用可能である。一般的に、共有資源にアクセスするそれぞれのPUは、要求された動作を遂行するための一定の情報を特定し、そして資源は一定のデータを結果として返戻する。
図5の方法は、命令調停ステップ110において、アービター72が多重のPUが所与の1つのメモリ資源へのアクセスを要求するプログラム命令を検知することから始まる。その命令は、多重のそれぞれのPUによる、メモリアクセス動作を遂行する多重の要求からなり、それぞれの要求は対応するメモリアドレスを特定する。アービターはその異なるPUにより要求されたアドレスを一時記憶空間に記憶し、そして停止ステップ114において、実行パイプライン32を停止させる。パイプラインの停止はアドレスの記憶の以前、以後、又は同時に行われてよい。アービターは、アクセス承諾ステップ118において、要求元PUのうち1つを除く全てにメモリへのアクセスを承諾する。
それぞれの要求元PUは、承諾チェックステップ122において、メモリへのアクセスが承諾されたかをチェックする。一度所与の1つのPUがアクセスを承諾されると、そのPUは、アクセスステップ126において、メモリにアクセスし要求された動作を遂行する。当該メモリアクセス動作は一定のデータを返戻する。
アービターは、戻りデータ記憶ステップ130において、メモリアクセス動作によりPUに返戻されたデータを一時記憶空間に記憶する。アービターは全ての要求元PUが処理されたかを、終了チェックステップ134において、チェックする。もし全てのPUが処理されていない場合は、アービターは、アクセス再承諾ステップ138において、まだ処理されていないPUにメモリ資源の独占的アクセスを承諾する。その後方法はステップ122に戻りアクセスが承諾されたPUがメモリにアクセスする。全ての要求元PUが処理済みの場合、アービターは、パイプライン開放ステップ142において、実行パイプラインを解放する。
アービターは、戻りデータ記憶ステップ130において、メモリアクセス動作によりPUに返戻されたデータを一時記憶空間に記憶する。アービターは全ての要求元PUが処理されたかを、終了チェックステップ134において、チェックする。もし全てのPUが処理されていない場合は、アービターは、アクセス再承諾ステップ138において、まだ処理されていないPUにメモリ資源の独占的アクセスを承諾する。その後方法はステップ122に戻りアクセスが承諾されたPUがメモリにアクセスする。全ての要求元PUが処理済みの場合、アービターは、パイプライン開放ステップ142において、実行パイプラインを解放する。
上述のように、図5の調停スキームは、種々のタイプの共用資源とそのような資源で実行される動作に対して直接的に一般化可能である。一般的にアービターは、要求動作を遂行するために一時記憶空間にPUから提供された情報を記憶する。動作の遂行後、アービターは資源から返戻されたデータ(典型的に動作の結果)を一時記憶空間に記憶する。
図5の調停プロセスは例示的なプロセスであり、純粋に例示の目的で選択された。他の実施形態では、プロセッサ20は種々の他のデッドロックの無い調停スキームを適用してもよく、そこでは、(1)一時記憶空間はPU毎に要求アドレス(又は動作を遂行するために必要な他の情報)及び戻りデータに対し提供され、(2)要求アドレスはメモリアクセスが拒否される限り保持され、そして(3)戻りデータは少なくともアクセスが承諾された時から実行パイプラインが解放されるまで保持される。
ここに記載される調停スキームは、資源を単一の命令ライン内で競う所望の数のPUの中で、デッドロックの無い共用資源へのアクセスを提供する。さらに開示された調停スキームは、多重のプロセッサ20が、デッドロックのリスク無く共用資源を競い合うことを可能にする。
ここに記載された実施形態は、無線通信システム内で信号処理機能を遂行する超長命令ワード(VLIW)プロセッサについて記載しているが、本発明の原理は、長いデータ流上で動作するネットワークプロセッサ(NP)のような、他のプロセッサや他の用途にも使用可能である。
上記の実施形態は例示のために引用され、本発明は上記で特に示され記載されたものに限定されない。むしろ、本発明の範囲は上記に記載された種々の特徴の組合せやサブ組合せを含み、上記の記載を読んだ当業者が想起する従来技術に無い変化や変更を含む。
上記の実施形態は例示のために引用され、本発明は上記で特に示され記載されたものに限定されない。むしろ、本発明の範囲は上記に記載された種々の特徴の組合せやサブ組合せを含み、上記の記載を読んだ当業者が想起する従来技術に無い変化や変更を含む。
20:プロセッサ 24:命令メモリ 28:制御回路
32:実行パイプライン 36:データ及び制御交換メッシュ(DCSM)
40:処理ユニット 42A,42B:パイプラインステージ
44:オペコード処理ユニット 48:DCSM選択ユニット
52:即時ユニット 56:処理ユニットイネイブラ(PUE)
60:取得表示子(FI) 64:命令フローコントローラ(IFC)
68:条件付き実行コントローラ(CEC)
72:アービター 74:メモリ
32:実行パイプライン 36:データ及び制御交換メッシュ(DCSM)
40:処理ユニット 42A,42B:パイプラインステージ
44:オペコード処理ユニット 48:DCSM選択ユニット
52:即時ユニット 56:処理ユニットイネイブラ(PUE)
60:取得表示子(FI) 64:命令フローコントローラ(IFC)
68:条件付き実行コントローラ(CEC)
72:アービター 74:メモリ
Claims (28)
- 1つ以上の処理ユニットと、
実行パイプラインと、
前記実行パイプラインは、少なくとも段階を成す第1と第2のパイプラインステージを有し、
前記パイプラインの連続するサイクルの中で前記処理ユニットにより遂行される動作を特定するプログラム命令が、前記第1のパイプラインステージによりメモリから取得され、そして前記第2のパイプラインステージに運ばれ、
前記第2のパイプラインステージは前記処理ユニットに対し特定の動作を遂行するようにさせ、
制御回路と、
前記制御回路は、前記パイプラインの第1のサイクルにおいて前記第2のパイプラインステージ内に存在するプログラム命令が、パイプラインの次のサイクルにおいて再び実行されると判定した時に、前記実行パイプラインに対し、前記メモリから前記プログラム命令を再取得することなく、前記パイプラインステージの1つの中の前記プログラム命令を再使用させるように接続され、
を有することを特徴とする、プロセッサ。 - 前記実行パイプラインは、N個のパイプラインステージを有し、前記制御回路は、前記プログラム命令がN個より少ない前記プログラム命令を持つプログラムループに含まれることを判定することにより、前記プログラム命令が再実行されることを決定するように接続される、ことを特徴とする請求項1に記載のプロセッサ。
- 前記制御回路は、前記プログラム命令を前記第2のパイプラインステージから前記第1のパイプラインステージにコピーすることにより、前記実行パイプラインに対し前記プログラム命令を再使用させるように接続される、ことを特徴とする請求項1に記載のプロセッサ。
- 前記制御回路は、前記実行パイプラインに対し、少なくとも前記第2のパイプラインステージ内の前記プログラム命令を次のサイクルでの実行のため保持させることにより、前記実行パイプラインに対し、前記プログラム命令を再使用させる、ように接続される、ことを特徴とする請求項1に記載のプロセッサ。
- 前記制御回路は、前記実行パイプラインに対し、前記プログラム命令を前記メモリから取得することを禁止することにより、前記実行パイプラインに対し前記プログラム命令を再使用させるように接続される、ことを特徴とする請求項1に記載のプロセッサ。
- 前記1つ以上の処理ユニットは、互いに同時に動作する多重の処理ユニットからなり、
それぞれの所与のプログラム命令は、前記所与のプログラム命令を実行する場合に適用される前記多重の処理ユニットの構成を特定し、
そして、前記多重の処理ユニットを、前記それぞれの構成に対応して、それぞれの所与のプログラム命令内に構成するように接続された接続回路を有する、
ことを特徴とする請求項1−5のいずれかに記載のプロセッサ。 - 前記接続回路は、1つ以上の前記処理ユニットの出力を検知し、前記検知された出力に対して定義された条件に対応して前記多重の処理ユニットを構成する、ように接続される、ことを特徴とする請求項6に記載のプロセッサ。
- 前記接続回路は、所与の処理ユニットの活性化/不活性化、前記所与の処理ユニットへのデータ入力の1つ以上の源の選択、及び前記所与の処理ユニットにより遂行される動作の選択、からなる属性のグループから選択される少なくとも1つの属性を設定することにより、前記所与の処理ユニットを構成するように接続される、ことを特徴とする請求項6に記載のプロセッサ。
- 少なくとも1つの前記処理ユニットが、
多重の要素からなる内部データベクトルを保持する内部メモリと、そして、
前記ベクトル要素上を循環し、前記循環したベクトル要素上で動作するように接続される、処理ロジックと、
を有する、
ことを特徴とする請求項1−5のいずれかに記載のプロセッサ。 - 少なくとも1つの前記処理ユニットが、入力と出力を有し、データを前記入力において受け、前記データを遅延させ、他の処理ユニットによる処理のため前記出力において前記遅延したデータを生成する、ように接続される、ことを特徴とする請求項1−5のいずれかに記載のプロセッサ。
- 一時記憶メモリと調停回路を有し、
前記調停回路は、2つ以上の処理要素による1つの所与の資源にアクセスする2つ以上の要求を含む所定のプログラム命令の識別に反応して、前記実行パイプラインを停止し、前記要求により特定されたそれぞれのデータを前記一時記憶メモリに記憶し、前記実行パイプラインを停止した状態で前記2つ以上の処理要素に対し前記1つの所与の資源にアクセスすることを許容し、そして、前記要求に応答して前記資源から返戻されたそれぞれの結果を前記一時記憶メモリに記憶する、ように接続される、
ことを特徴とする請求項1−5のいずれかに記載のプロセッサ。 - 前記資源は1つの共有メモリからなる、ことを特徴とする請求項11に記載のプロセッサ。
- 前記処理要素は1つ以上の前記処理ユニットからなる、ことを特徴とする請求項11に記載のプロセッサ。
- 1つ以上の前記処理要素は前記プロセッサの外部にある、ことを特徴とする請求項11に記載のプロセッサ。
- 1つ以上の処理ユニットを動作させるステップと、
実行パイプラインを動作させるステップと、
前記実行パイプラインは、少なくとも段階を成す第1と第2のパイプラインステージを有し、
前記パイプラインの連続するサイクルの中で前記処理ユニットにより遂行される動作を特定するプログラム命令が、前記第1のパイプラインステージによりメモリから取得され、そして前記第2のパイプラインステージに運ばれ、
前記第2のパイプラインステージは前記処理ユニットに対し特定の動作を遂行するようにさせ、
前記パイプラインの第1のサイクルにおいて前記第2のパイプラインステージ内に存在するプログラム命令が、パイプラインの次のサイクルにおいて再び実行されると判定するステップと、
前記実行パイプラインに対し、前記メモリから前記プログラム命令を再取得することなく、前記パイプラインステージの1つの中の前記プログラム命令を再使用させるステップと、
を有することを特徴とするコンピューティングの方法。 - 前記実行パイプラインは、N個のパイプラインステージを有し、前記プログラム命令が再実行されることを決定するステップは、前記プログラム命令がN個より少ない前記プログラム命令を持つプログラムループに含まれることを判定するステップを含む、ことを特徴とする請求項15に記載の方法。
- 前記実行パイプラインに対し前記プログラム命令を再使用させるステップは、前記プログラム命令を前記第2のパイプラインステージから前記第1のパイプラインステージにコピーするステップを含む、ことを特徴とする請求項15に記載の方法。
- 前記実行パイプラインに対し、前記プログラム命令を再使用させるステップは、前記実行パイプラインに対し、少なくとも前記第2のパイプラインステージ内の前記プログラム命令を次のサイクルでの実行のため保持させるステップを含む、ことを特徴とする請求項15に記載の方法。
- 前記実行パイプラインに対し前記プログラム命令を再使用させるステップは、前記実行パイプラインに対し、前記プログラム命令を前記メモリから取得することを禁止するステップを含む、ことを特徴とする請求項15に記載の方法。
- 前記1つ以上の処理ユニットは、互いに同時に動作する多重の処理ユニットからなり、
それぞれの所与のプログラム命令は、前記所与のプログラム命令を実行する場合に適用される前記多重の処理ユニットの構成を特定し、
そして、処理ユニットを動作させるステップは、前記それぞれの構成に対応して、前記多重の処理ユニットをそれぞれの所与のプログラム命令内に構成するステップを含む、
ことを特徴とする請求項15−19のいずれかに記載の方法。 - 前記多重の処理ユニットを構成するステップは、前記1つ以上の前記処理ユニットの出力を検知するステップと、前記検知された出力に対して定義された条件に対応して前記処理ユニットを構成するステップと、を含むことを特徴とする請求項20に記載の方法。
- 前記多重の処理ユニットを構成するステップは、所与の処理ユニットに対し、所与の処理ユニットの活性化/不活性化、前記所与の処理ユニットへのデータ入力の1つ以上の源の選択、及び、前記所与の処理ユニットにより遂行される動作の選択、からなる属性のグループから選択される少なくとも1つの属性を設定するステップを含む、ことを特徴とする請求項20に記載の方法。
- 少なくとも1つの前記処理ユニットが、多重の要素からなる内部データベクトルを保持する内部メモリを有し、そして、
前記処理ユニットを動作させるステップは、前記ベクトル要素上を循環するステップと、前記循環したベクトル要素上で動作するステップとを含む、ことを特徴とする請求項15−19のいずれかに記載の方法。 - 少なくとも1つの前記処理ユニットが、入力と出力を有し、
前記処理ユニットを動作させるステップは、データを前記入力において受け、前記データを遅延させ、他の処理ユニットによる処理のため前記出力において前記遅延したデータを生成する、ように少なくとも1つの前記処理ユニットを構成するステップを含む、ことを特徴とする請求項15−19のいずれかに記載の方法。 - 前記処理ユニットを動作させるステップは、
2つ以上の処理要素による1つの所与の資源にアクセスする2つ以上の要求を含む所定のプログラム命令の識別に反応して、前記実行パイプラインを停止するステップと、
前記要求により特定されたそれぞれのデータを一時記憶メモリに記憶するステップと、
前記実行パイプラインを停止した状態で前記2つ以上の処理要素に対し前記1つの所与の資源にアクセスすることを許容するステップと、そして、
前記要求に応答して前記資源から返戻されたそれぞれの結果を前記一時記憶メモリに記憶するステップと、
を含むことを特徴とする請求項15−19のいずれかに記載の方法。 - 前記資源は1つの共有メモリからなる、ことを特徴とする請求項25に記載の方法。
- 前記処理要素は1つ以上の前記処理ユニットからなる、ことを特徴とする請求項25に記載の方法。
- 前記処理ユニットと前記実行パイプラインは1つのプロセッサ装置内に配置され、1つ以上の前記処理要素は前記プロセッサ装置の外部にある、ことを特徴とする請求項25に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/354,034 | 2009-01-15 | ||
US12/354,034 US9170816B2 (en) | 2009-01-15 | 2009-01-15 | Enhancing processing efficiency in large instruction width processors |
PCT/IB2009/055923 WO2010082100A1 (en) | 2009-01-15 | 2009-12-23 | Enhancing processing efficiency in large instruction width processors |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012515388A true JP2012515388A (ja) | 2012-07-05 |
JP2012515388A5 JP2012515388A5 (ja) | 2012-09-27 |
Family
ID=42319849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011545806A Pending JP2012515388A (ja) | 2009-01-15 | 2009-12-23 | 大命令幅プロセッサにおける処理効率の向上 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9170816B2 (ja) |
EP (1) | EP2377014A4 (ja) |
JP (1) | JP2012515388A (ja) |
CN (1) | CN102282537B (ja) |
WO (1) | WO2010082100A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120079303A1 (en) * | 2010-09-24 | 2012-03-29 | Madduri Venkateswara R | Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit |
JP5630396B2 (ja) * | 2011-07-27 | 2014-11-26 | 高田 周一 | Dma制御装置 |
US20120185714A1 (en) * | 2011-12-15 | 2012-07-19 | Jaewoong Chung | Method, apparatus, and system for energy efficiency and energy conservation including code recirculation techniques |
EP2608015B1 (en) * | 2011-12-21 | 2019-02-06 | IMEC vzw | System and method for implementing a multiplication |
US9933841B2 (en) | 2014-04-17 | 2018-04-03 | Arm Limited | Reuse of results of back-to-back micro-operations |
US9817466B2 (en) | 2014-04-17 | 2017-11-14 | Arm Limited | Power saving by reusing results of identical micro-operations |
US10514928B2 (en) | 2014-04-17 | 2019-12-24 | Arm Limited | Preventing duplicate execution by sharing a result between different processing lanes assigned micro-operations that generate the same result |
GB2525262B (en) * | 2014-04-17 | 2021-06-02 | Advanced Risc Mach Ltd | Sharing processing results between different processing lanes of a data processing apparatus |
US9898292B2 (en) * | 2015-02-25 | 2018-02-20 | Mireplica Technology, Llc | Hardware instruction generation unit for specialized processors |
GB2551523B (en) | 2016-06-20 | 2019-07-03 | Imagination Tech Ltd | Livelock recovery circuit |
US10684856B2 (en) | 2017-07-11 | 2020-06-16 | International Business Machines Corporation | Converting multiple instructions into a single combined instruction with an extension opcode |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4566063A (en) * | 1983-10-17 | 1986-01-21 | Motorola, Inc. | Data processor which can repeat the execution of instruction loops with minimal instruction fetches |
JPH0228723A (ja) * | 1988-07-18 | 1990-01-30 | Fujitsu Ltd | ループ命令実行方式 |
JPH10232788A (ja) * | 1996-12-17 | 1998-09-02 | Fujitsu Ltd | 信号処理装置及びソフトウェア |
EP1039375A1 (en) * | 1999-03-19 | 2000-09-27 | Motorola, Inc. | Method and apparatus for implementing zero overhead loops |
US6247125B1 (en) * | 1997-10-31 | 2001-06-12 | Stmicroelectronics S.A. | Processor with specialized handling of repetitive operations |
US20030177340A1 (en) * | 1998-09-30 | 2003-09-18 | Intel Corporation | Non-stalling circular counterflow pipeline processor with reorder buffer |
US6810475B1 (en) * | 1998-10-06 | 2004-10-26 | Texas Instruments Incorporated | Processor with pipeline conflict resolution using distributed arbitration and shadow registers |
US6832306B1 (en) * | 1999-10-25 | 2004-12-14 | Intel Corporation | Method and apparatus for a unified RISC/DSP pipeline controller for both reduced instruction set computer (RISC) control instructions and digital signal processing (DSP) instructions |
JP2005513610A (ja) * | 2001-12-14 | 2005-05-12 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 複数のプロセッサを有するデータ処理システムおよび複数のプロセッサを有するデータ処理システムにおける通信手段 |
JP2006018412A (ja) * | 2004-06-30 | 2006-01-19 | Fujitsu Ltd | アドレス生成器および演算回路 |
JP2006031127A (ja) * | 2004-07-12 | 2006-02-02 | Fujitsu Ltd | 再構成可能な演算装置 |
JP2006252440A (ja) * | 2005-03-14 | 2006-09-21 | Fujitsu Ltd | 再構成可能演算処理装置 |
US20070143577A1 (en) * | 2002-10-16 | 2007-06-21 | Akya (Holdings) Limited | Reconfigurable integrated circuit |
JP2007257349A (ja) * | 2006-03-23 | 2007-10-04 | Fujitsu Ltd | プロセッサ及びその処理方法 |
JP2008541216A (ja) * | 2005-05-05 | 2008-11-20 | イセラ・インコーポレーテッド | 構成可能な処理のための装置、及び方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6085315A (en) * | 1997-09-12 | 2000-07-04 | Siemens Aktiengesellschaft | Data processing device with loop pipeline |
US6076159A (en) * | 1997-09-12 | 2000-06-13 | Siemens Aktiengesellschaft | Execution of a loop instructing in a loop pipeline after detection of a first occurrence of the loop instruction in an integer pipeline |
US6052771A (en) | 1998-01-20 | 2000-04-18 | International Business Machines Corporation | Microprocessor with pipeline synchronization |
US6598155B1 (en) | 2000-01-31 | 2003-07-22 | Intel Corporation | Method and apparatus for loop buffering digital signal processing instructions |
KR100491530B1 (ko) | 2002-05-03 | 2005-05-27 | 엘지전자 주식회사 | 모션 벡터 결정 방법 |
US20080148020A1 (en) | 2006-12-13 | 2008-06-19 | Luick David A | Low Cost Persistent Instruction Predecoded Issue and Dispatcher |
US7571305B2 (en) * | 2007-01-11 | 2009-08-04 | Arm Limited | Reusing a buffer memory as a microcache for program instructions of a detected program loop |
-
2009
- 2009-01-15 US US12/354,034 patent/US9170816B2/en active Active
- 2009-12-23 EP EP09838186A patent/EP2377014A4/en not_active Withdrawn
- 2009-12-23 CN CN200980154584.5A patent/CN102282537B/zh active Active
- 2009-12-23 WO PCT/IB2009/055923 patent/WO2010082100A1/en active Application Filing
- 2009-12-23 JP JP2011545806A patent/JP2012515388A/ja active Pending
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4566063A (en) * | 1983-10-17 | 1986-01-21 | Motorola, Inc. | Data processor which can repeat the execution of instruction loops with minimal instruction fetches |
JPH0228723A (ja) * | 1988-07-18 | 1990-01-30 | Fujitsu Ltd | ループ命令実行方式 |
JPH10232788A (ja) * | 1996-12-17 | 1998-09-02 | Fujitsu Ltd | 信号処理装置及びソフトウェア |
US6247125B1 (en) * | 1997-10-31 | 2001-06-12 | Stmicroelectronics S.A. | Processor with specialized handling of repetitive operations |
US20030177340A1 (en) * | 1998-09-30 | 2003-09-18 | Intel Corporation | Non-stalling circular counterflow pipeline processor with reorder buffer |
US6810475B1 (en) * | 1998-10-06 | 2004-10-26 | Texas Instruments Incorporated | Processor with pipeline conflict resolution using distributed arbitration and shadow registers |
EP1039375A1 (en) * | 1999-03-19 | 2000-09-27 | Motorola, Inc. | Method and apparatus for implementing zero overhead loops |
US6832306B1 (en) * | 1999-10-25 | 2004-12-14 | Intel Corporation | Method and apparatus for a unified RISC/DSP pipeline controller for both reduced instruction set computer (RISC) control instructions and digital signal processing (DSP) instructions |
JP2005513610A (ja) * | 2001-12-14 | 2005-05-12 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 複数のプロセッサを有するデータ処理システムおよび複数のプロセッサを有するデータ処理システムにおける通信手段 |
US20070143577A1 (en) * | 2002-10-16 | 2007-06-21 | Akya (Holdings) Limited | Reconfigurable integrated circuit |
JP2006018412A (ja) * | 2004-06-30 | 2006-01-19 | Fujitsu Ltd | アドレス生成器および演算回路 |
JP2006031127A (ja) * | 2004-07-12 | 2006-02-02 | Fujitsu Ltd | 再構成可能な演算装置 |
JP2006252440A (ja) * | 2005-03-14 | 2006-09-21 | Fujitsu Ltd | 再構成可能演算処理装置 |
JP2008541216A (ja) * | 2005-05-05 | 2008-11-20 | イセラ・インコーポレーテッド | 構成可能な処理のための装置、及び方法 |
JP2007257349A (ja) * | 2006-03-23 | 2007-10-04 | Fujitsu Ltd | プロセッサ及びその処理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20100180102A1 (en) | 2010-07-15 |
WO2010082100A1 (en) | 2010-07-22 |
CN102282537A (zh) | 2011-12-14 |
CN102282537B (zh) | 2015-10-14 |
EP2377014A1 (en) | 2011-10-19 |
EP2377014A4 (en) | 2012-05-30 |
US9170816B2 (en) | 2015-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2012515388A (ja) | 大命令幅プロセッサにおける処理効率の向上 | |
JP2012515388A5 (ja) | ||
US5404552A (en) | Pipeline risc processing unit with improved efficiency when handling data dependency | |
US6216223B1 (en) | Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor | |
US20150106598A1 (en) | Computer Processor Employing Efficient Bypass Network For Result Operand Routing | |
CN108885586B (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 | |
JPH04313121A (ja) | インストラクションメモリ装置 | |
US20140195784A1 (en) | Method, device and system for controlling execution of an instruction sequence in a data stream accelerator | |
US11132201B2 (en) | System, apparatus and method for dynamic pipeline stage control of data path dominant circuitry of an integrated circuit | |
US20070300044A1 (en) | Method and apparatus for interfacing a processor and coprocessor | |
US9710269B2 (en) | Early conditional selection of an operand | |
KR101077425B1 (ko) | 효율적 인터럽트 리턴 어드레스 저장 메커니즘 | |
CN112559403B (zh) | 一种处理器及其中的中断控制器 | |
WO2012061416A1 (en) | Methods and apparatus for a read, merge, and write register file | |
US20090319762A1 (en) | Dynamic reconfigurable circuit and data transmission control method | |
KR20090023418A (ko) | 프로세서 및 코프로세서를 인터페이싱하는 방법 및 장치 | |
CN116662255A (zh) | 结合超越函数硬件加速器的risc-v处理器实现方法及系统 | |
US7925862B2 (en) | Coprocessor forwarding load and store instructions with displacement to main processor for cache coherent execution when program counter value falls within predetermined ranges | |
CN114924792A (zh) | 指令译码单元、指令执行单元及相关装置和方法 | |
US10133578B2 (en) | System and method for an asynchronous processor with heterogeneous processors | |
US5983344A (en) | Combining ALU and memory storage micro instructions by using an address latch to maintain an address calculated by a first micro instruction | |
JP2013161484A (ja) | 再構成可能コンピューティング装置、その第1メモリ制御器及び第2メモリ制御器、並びにそのデバッギング用のトレースデータを処理する方法 | |
Tina et al. | Performance improvement of MIPS Architecture by Adding New features | |
JP2004516572A (ja) | スペキュレーティブ・レジスタの調整 | |
US20140281368A1 (en) | Cycle sliced vectors and slot execution on a shared datapath |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120806 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120807 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140409 |