JP2007528549A - 電子回路 - Google Patents
電子回路 Download PDFInfo
- Publication number
- JP2007528549A JP2007528549A JP2007502450A JP2007502450A JP2007528549A JP 2007528549 A JP2007528549 A JP 2007528549A JP 2007502450 A JP2007502450 A JP 2007502450A JP 2007502450 A JP2007502450 A JP 2007502450A JP 2007528549 A JP2007528549 A JP 2007528549A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- electronic circuit
- latch
- type
- stage
- 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.)
- Withdrawn
Links
- 238000012545 processing Methods 0.000 claims abstract description 42
- 238000000034 method Methods 0.000 claims abstract description 18
- 230000008569 process Effects 0.000 claims abstract description 7
- 230000004044 response Effects 0.000 claims description 5
- 230000009467 reduction Effects 0.000 claims description 2
- 230000001133 acceleration Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000001360 synchronised effect Effects 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/3871—Asynchronous instruction pipeline, e.g. using handshake signals between stages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
複数のタイプの命令を処理するように構成された電子回路であって、第1および第2のパイプラインステージと、パイプラインステージ間に置かれたラッチと、を備え、第1のタイプの命令を処理するときはイネーブル信号に応じてラッチが開閉されるノーマルモードで、第2のタイプの命令を処理するときは命令がラッチに格納されることなく第1及び第2のパイプラインステージを伝播できるようにラッチを開いたままにしておく縮小モードで駆動し、第1のタイプの命令は第1及び第2のパイプラインステージによる処理が必要であり、第2のタイプの命令は第2のパイプラインステージによる処理が必要であることを特徴とする電子回路が提供される。
Description
本発明は電子回路の分野に関し、特に共有リソースにアクセスする際に可変待ち時間のパイプラインを有する電子回路に関する。
多くの従来の電子回路、例えばマイクロプロセッサ、は並列処理や性能を上げるために‘パイプライン’を用いている。これは、マイクロプロセッサの命令実行がいくつかの独立したステップからなり、マイクロプロセッサ内にて各ステップを実行するための分離ユニットを作り出せることである。ユニットが命令の実行を終えると、その命令は‘パイプライン’の次のユニットに送られ、次の命令の動作を始める。そのため、1つの命令を実行するために必要とする時間はパイプラインでないシステムと同じままであるが、次の命令が1つだけ後ろのユニットにあるため、全体的な結果ではマイクロプロセッサの性能は向上する。
コンポーネントがデータ処理する時間やいつデータをシステムの次の部分に伝播するかをグローバルクロック信号が制御する同期回路と違い、非同期システムのコンポーネントは各自のレートでタスクを実行し、システムの次の部分がデータ受信の確認応答をしたときだけ次のタスクに進む。
グローバルクロック信号がないので、非同期システムのコンポーネントはシステムの独立部同士が伝達可能なハンドシェイキングプロトコルを用いることが必要である。
システムの1つのタイプでは、第1ステージが第2ステージに演算処理実行を要求するとき、第1ステージは第2ステージにリクエストを送信する。第2ステージは演算処理を実行し、演算処理を終えたときに、第1ステージへ確認応答信号を送信する。第1ステージが確認応答信号を受信したとき、演算処理が完了したことを認識し次の命令に進むことができる。
非同期システムの代替タイプはProceedings of the International Conference on Computer Design(ICCD)2001の9-17ページのSingh M.とNowickによる“MOUSETRAP :ultra high-speed transitional signaling asynchronous pipelines ”、Communication of the ACM1989のSutherlandによる“Micropipelines”、ヨーロッパ特許出願No.03103399.6“Electronic circuit with a chain of processing elements”に記載されている。
非同期プロセッサにおいては、パイプラインステージは一般にラッチを用いて実施される。
パイプラインプロセッサが通常実行する命令セット内の命令はしばしば異なる遅延を有する。これは命令が順次方式で実行されるとき完了までに要する時間が異なることを意味する。
例えば、数値演算(ALU)命令やロード演算を考慮されたい。
図1はそれぞれラッチ4、6、8及び10を有する5つのステージを備える伝統的な5ステージパイプライン2を示す。CPU算術論理演算は実行ステージ(第3ステージ)で行われる。ロード命令はアドレス計算のため第3ステージを用い、メモリ12からのデータロードのためメモリステージ(第4ステージ)を用いる。
書き戻しステージ(第5ステージ)では、実行ステージ(第3ステージ)の結果又はメモリ12からロードしたデータのレジスタファイル14への書き戻しが行われる。そのため、原則としてALU演算の書き戻しは実行ステージの後に発生することができ、一方ロード演算の書き戻しはメモリステージ(第4ステージ)より早く発生することはできない。
しかし、もし結果が得られてすぐに実行ステージとメモリステージの両方の結果をレジスタファイル14に書き戻すことを許可すると、ALU演算に付随するロードが2つの同時書き戻しを導きレジスタファイルリソース14に衝突を引き起こす。
このリソース衝突は現在2つの方法のうちのいずれか1つで解決されている。第1のアプローチは、増設ライトポートをレジスタファイル14に加え、レジスタファイル14で2つの同時書き込み動作が起きるのを許容するものである。図1において、破線16は第3のラッチ8からレジスタファイル14の第2のライトポートへの接続を表している。しかしこの手法はハードウェアの観点からみて高価である。また、2つの書き込み先がレジスタファイル14の同じ場所の場合、ある制御回路がどちらの値を先に書き戻すべきか決定しなければならない。
第2のアプローチ(これも図1に示される)は、ロード演算と同じ書き込み遅延を必要とするために、ALU演算の結果を追加パイプラインステージに通す(すなわち、前の演算の結果がレジスタファイル14へ転送された後、ラッチ10に格納する)ものである。この手法はロード命令の遅延に合わせるためにALU演算の遅延を延ばすので、パイプラインの性能が下がり消費電力が増大する。この手法のさらなる不利点は、たとえもしALU演算の結果がレジスタファイル14へより早く書き込みできる(すなわちパイプライン内で先立つロード命令がない時)としても、”追加”ステージ(ラッチ10)を介して伝播しなければならないため、より早く書き込みすることはできないことである。
そのため、かなりの量の余分なハードウェアを必要とせず、また命令の遅延を増大させることなくレジスタファイルリソースの衝突を防止する必要がある。
本発明の第1の態様によると、複数のタイプの命令の処理に適合した電子回路が与えられ、その電子回路は第1及び第2のパイプラインステージと、これらのパイプラインの間に位置するラッチと、を備え、電子回路は、第1のタイプの命令を処理するときにイネーブル信号に応じてラッチが開閉されるノーマルモードで駆動し、第2のタイプの命令を処理するときに命令がラッチに格納されずに第1及び第2のパイプラインステージを伝播していくためにラッチを開けたままにしておく減少モードで駆動するよう構成され、第1のタイプの命令は第1及び第2のパイプラインステージによる処理を必要とし、第2のタイプの命令は第2のパイプラインステージによる処理を必要とする。
本発明の別の態様によると、複数のタイプの命令の処理に適合した電子回路を駆動する方法が与えられ、その電子回路は第1及び第2のパイプラインステージと、これらのパイプラインの間に位置するラッチと、を備え、その方法は、電子回路を第1のタイプの命令を処理するときにイネーブル信号に応じてラッチが開閉されるノーマルモードで駆動させ、第2のタイプの命令を処理するときに命令がラッチに格納されずに第1及び第2のパイプラインステージを伝播していくためにラッチを開けたままにしておく減少モードで駆動させることを含み、第1のタイプの命令は第1及び第2のパイプラインステージによる処理を必要とし、第2のタイプの命令は第2のパイプラインステージによる処理を必要とする。
本発明は非同期マイクロプロセッサにおけるパイプラインを参照して以下に説明されるが、本発明は共有リソースの衝突の問題を待ち時間の異なる命令の処理に遅延を取り込むことで解決しているパイプラインを有するあらゆるタイプの電子回路に適用できることは理解されるべきである。
図2は本発明によるマイクロプロセッサパイプラインを示す。この図で示した実施例では、マイクロプロセッサパイプライン20は5ステージパイプラインであるが、それより多い又は少ないステージのパイプラインに本発明が適用できることは理解されるべきである。さらに、本発明は特定のハンドシェイキングプロトコルに関して説明されているが、本発明は他のプロトコルを用いるシステムに適用できることは理解されるべきである。
パイプライン20のステージはそれぞれラッチ(22、24、26、28及び30)を備え、従来のように、各ラッチは動作モードを決定するイネーブル信号En1、En2、En3、En4及びEn5を有する。ラッチが有効のとき、ラッチの出力は入力と同じになり、ラッチは透過と呼ばれる。ラッチが無効のとき、ラッチの出力は入力の直前値を保持する。
命令メモリ32は第1のラッチ22に接続され、これはプロセッサパイプライン20に対する命令を格納する。命令は、データメモリ34の特定のアドレスにアクセスするために用いられるロード命令、算術論理演算ユニット(ALU)36により実行される数値演算命令を含むことができ、また比較、ジャンプ、分岐及び記憶のような他のタイプの命令を含んでもよい。
上述のように、ロード及び数値演算命令の結果は第5のラッチ30に書き込まれる。しかし、比較、ジャンプ、分岐及び記憶命令の結果は第5のラッチ30に書き込む必要はなく、それらの実行は第3又は第4ステージの後に完了してもよい。
取り出された命令は第1のラッチ22に格納され、ユニット38へ転送される。ユニット38は一般にデコードステージとして知られ、取り出された命令をデコードする。第2のラッチ24が先行する命令が無事に第3のラッチ26に格納されたという確認を受け取ったとき、制御及びデータ信号を含んでもよいユニット38の出力は第2のラッチ24に格納される。これらの制御及びデータ信号はパイプラインの各ステージにどの命令を実行するべきか教える。
第2のラッチ24に格納された命令はALU36により実行される。もし命令が数値演算命令の場合は、ALU36は演算処理を実行する。しかし、もし命令がロード命令の場合は、ALU36はパイプライン20の第4のステージにてアクセスされるデータメモリ34内のアドレスを算出する。第3のラッチ26が先行する命令が次のステージにより格納されたという確認を受け取ったときに、第3のラッチ26のレジスタ40又は42に算出結果が格納される。結果を格納する第3のラッチ26内の特定レジスタ40、42は処理される命令の種類により決定される。例えば、命令がロード命令の場合、結果はデータメモリ34がアクセスされ得るように上側レジスタ40に格納される。また、命令が演算命令の場合、結果は下側レジスタ42に格納される。ある実施においては、条件付ビットと併せてイネーブル信号En3が分離レジスタ40、42の選択を可能にする。
比較、記憶、ジャンプ又は分岐命令の場合、第3ステージ、ALU36、または第4ステージ(特定の命令による)を完了した後に命令が完全に実行される。
第4ステージでは、現在の命令がロード命令の場合、データメモリ34がアクセスされ、所望のデータがラッチ28の上側レジスタ44に読み出される。もし現在の命令が数値演算命令の場合、第3ステージからの結果(ラッチ26に格納されている)はラッチ28の下側レジスタ46に直ちに格納される。
第3のラッチ26及び第4のラッチ28にはそれぞれ2つのレジスタのみ示されているが、2つよりも多くて良いことが理解され、厳密な数はパイプラインが処理できる命令のタイプによる。
第5ステージでは、第4ステージの結果(ラッチ28に格納されている)がラッチ30(以後‘レジスタファイル’と称する)に書き込まれる。
上述のように、一度数値演算命令が第3ステージにて処理されると、いつでもレジスタファイル30へ書き込めるようになる。しかしこれは第4のラッチにレジスタファイル30へ書き込まれるのを待っているデータがある場合、レジスタファイル30に問題を起こす。上述のように、先行するロード命令によりロードされた又は先行する演算命令の実行により生成されたデータがレジスタファイル30へ書き込まれている間は、演算命令の結果は第4のラッチに格納されなければならない。
もちろん、演算命令の結果を第4のラッチに格納することは数値演算命令の処理に遅延をもたらす。
それ故、本発明によれば、待ち時間の異なる命令(すなわち命令が最終結果を算出するまでにかかる総時間が異なる)が発行される場合、パイプライン20の選択されたラッチを透過的にし、隣り合った2つのステージを効果的に1つのステージに結合することでパイプライン20を介して命令が加速され、その結果データを次のステージへ素通りさせられ、データパスでの不要な遅延を取り除く。
上述のように、異なる‘待ち時間’は、命令が順次方式で実行されるとき完了までに同じ総時間を必要としないことを意味する。例えば、図2に示される実施形態においては、数値演算命令は4つの待ち時間を有し、それは第4ステージを通過する必要がなく、5つのパイプラインステージのうち4つのみで実行される必要があるためである。しかし、ロード命令(又はそれに関するデータ)は5つのラッチそれぞれにより格納される必要があり、そのため5つの待ち時間を有する。比較、分岐及びジャンプ命令のような第5ステージを使用しない命令は3つの待ち時間を有する。記憶命令は第4ステージを使用する必要があるが、第5(書き戻し)ステージを使用する必要がなく、そのため4つの待ち時間を有する。
そのため、本発明の一態様によれば、ラッチを透過状態に保持することで第4ステージのラッチに演算命令の結果を格納することが防止され、その結果、第3ステージ完了後に続けて演算命令の結果をレジスタファイル30へ書き込むことができる。
しかし、もし命令がロード命令の場合、命令は5つのステージすべてで処理されなければならず、第4ステージを透過モードに保持できない。加えて、もしロード命令や5つのパイプラインステージすべてでの処理を必要とする他の命令(例えば加速されない先行する演算命令)がパイプラインにて数値演算命令に先行する場合、演算処理命令は第4ステージを飛ばして進むことはできず、第4ステージにおいても格納されなければならない。
そのため、本発明による第4ステージのラッチ28の動作を制御するため、ラッチ制御回路48が備えられる。ラッチ制御回路48は第4のラッチのイネーブル信号En4及び制御信号を受信する。
特定の命令にとって第4ステージ以外のステージが不必要である(処理される個別の命令及び/又はパイプライン構造による)代替パイプラインでは、他のパイプラインラッチにさらにラッチコントローラを接続することができる。
ラッチ制御回路48は第4のラッチ28の動作モードを制御する役割を果たす。もし現在第3ステージラッチ26にある命令がパイプライン20を介して加速できない場合、(例えば、それはロード命令で、第4ステージからデータを取り出さなければならない、又は、ロード命令が先行する演算命令、又は、加速されていない先立つ演算命令のような5つのパイプラインステージすべてによる処理が必要な命令)、ラッチ制御回路48はイネーブル信号En4により第4のラッチ28を通常に動作させる。つまり、イネーブル信号En4は、ラッチが透過(すなわち格納すべき次のデータをロードしている時)かどうか、又は、ラッチが最後にイネーブルの時に入力における最後の値を保持しているかどうかを制御する。
しかし、第3ステージの命令がパイプラインを介して加速できる(すなわち命令が、例えば第4ステージを介して加速される命令や比較命令のような第5ステージを必要としない命令が先行する演算命令である)とき、パイプラインの第4ステージを必要とする別の命令が処理されるまで制御信号は第4ラッチを透過モードに保持する。つまり、ラッチ制御回路48はイネーブル信号En4より優先され、ラッチ28を透過状態に保持する。
ラッチ28の透過性はラッチ26から与えられるデータが、効率的に第4ステージを完全にスキップし、レジスタファイル30への書き込みのために第5ステージへ直ちに送られることを意味する。
1つ又はそれより多くのラッチをオープンに保持するモードを有し、効率的にステージを透過にするパイプライン20は縮小パイプラインとして知られている。
パイプラインラッチコントローラの一実施例を図3に示す。ラッチ28は(イネーブル信号EN4により制御される)ノーマルラッチングモードと透過に維持される縮小モードとに切り替えられる。
この図では、イネーブル信号の高い値はラッチ28を透過にする。しかし、逆の状態でこのコントローラを適応した場合、低い値のイネーブル信号がラッチを透過にすることは当業者には明白であろう。
ラッチコントローラ48では、縮小モードとノーマルモードとの切り替えは制御信号(Control)により決定される。この信号は、イネーブル信号En4及び供給電圧信号VDDを入力とするマルチプレクサ50の動作を制御する。
もし現在の命令(例えば演算命令)がパイプラインステージを介して加速できる命令であると決定した場合、制御信号はラッチ28が透過であるべきことを示し、VDD信号がラッチ28の動作を制御できるようにマルチプレクサ50は制御信号により制御される。それゆえ、イネーブル信号En4の値に関わらず、ラッチ28は強制的に透過状態にされる。しかし、命令が第4ステージで格納され処理されなければならないとき、イネーブル信号がラッチ28へ送られるように制御信号はマルチプレクサ50を動作させ、ノーマルのように第4ラッチに命令を格納させられる。
上述及び図3に示したラッチ制御回路は一例であり、本発明の実施のために用いることができる多くの実施可能なラッチ制御回路の1つに過ぎないことは理解されるであろう。ラッチ制御回路の多くの代替タイプは当業者にとって明白であろう。
それゆえ、システム内の他のラッチがイネーブル信号に応じてノーマルにラッチし続けることができる間、このようなコントローラを有するラッチは透過モードに切り替えることができる。
この図示された実施形態では、関連する命令の認識とパイプラインの現在の状態の決定により制御信号が生成される。この状態は第4ステージを介した加速が起きるか又は起きないかである。上述のように、もし先行する命令がロード命令の場合や、ロード命令が先に実行され書き戻し(第5)ステージを用いない命令がまだ続いていない場合は、加速は起きない。もし実行されたロード命令がまだ無い場合や、ロード命令が実行され書き戻し(第5)ステージを必要としない命令が次に(すぐである必要はない)続いている場合は、加速が起きる。
制御信号のタイミングは慎重に制御しなければならないことが理解されよう。もし第5ステージのデータがレジスタファイルへ書き込まれる前に第4のラッチが透過モードに切り替えられると、データは失われる。そのため、ラッチの切り替えはパイプラインを介したデータの流れに関して‘安全’でなければならない。
図4は本発明による5ステージパイプラインの一例の動作を示すものである。
図4の上半分では、第1、第2、第3、第4及び第5のラッチそれぞれのイネーブル信号が(それぞれEn1、En2、En3、En4及びEn5として)示される。実線はラッチを動作させるために用いられる信号を示す。第1、第2、第3及び第5のラッチの場合、これらの信号はそれぞれのイネーブル信号に対応し、第4のラッチの場合、この信号はラッチがノーマルモードで動作しているときイネーブル信号に対応し、ラッチが縮小又は透過モードで動作しているとき‘ハイ’信号が優先される。En4の破線は第4のラッチに対する従来のイネーブル信号を示す。
図4の下半分は特定時刻における特定のパイプラインステージにある命令を示す。第1パイプラインステージ、命令メモリ32から命令がフェッチされ第1のラッチ22に先行するステージ、はIFで示される。第2、第3、第4及び第5ラッチに先行する第2、第3、第4及び第5ステージはそれぞれID、EX、MEM及びWBで示される。
この例のパイプラインでは、3つの異なるタイプの命令が使用される。第1のタイプの命令はパイプラインの5つのステージのそれぞれによる実行が必要となる。ロード命令はこのタイプの命令の一例である。第2のタイプの命令は第4ステージMEMによる実行が必要でないが、第5のラッチへの書き込みが必要である。加算(add)、減算(sub)、論理和(orr)及び論理積(and)のような数値演算命令が第2のタイプの命令の例である。第3のタイプの命令は実行後に第5のラッチに書き込む必要がなく、第3又は第4ステージ後に完全に処理される。比較(comp)、ジャンプ、分岐及び記憶命令が第3のタイプの命令の例である。
図4の下半分は本発明により命令セットがパイプラインを介してどのように伝播するかを示す。この図示された例では、処理される命令は以下の順で発生する:sub,orr,load,add,sub,comp,add,and,sub,orr,and。
最初の処理期間中のパイプラインの状態を示す1列目では、破線四角形52で示されるように第4のラッチを介した加速が可能である。ここで、第4のラッチが透過モードに保持されているため、第4ステージの‘sub’命令は第5ステージへ伝播する。イネーブル信号En4が‘ハイ’に保持されていることが分かり、そのため第4のラッチが透過状態に保持される。
同様の状態は2番目の処理期間でのパイプラインの状態を示す2列目でもみられる。ここでは、‘orr’命令が第4及び第5ステージを介して伝播する。
しかし、‘orr’命令に続く命令が‘load’命令であり、これは必要なデータをメモリ34からロードするために第4ステージを用いるため、第4ラッチをこれ以上透過モードに保持することはできない。そのため、2列目から3列目への過渡期では、En4から分かるように第4のラッチはノーマルモードに切り替えられる。そのため、‘load’命令は第3のラッチに格納され、3番目の処理期間中は第4のラッチ及び第5ステージは活動しない。
4番目の処理期間では、‘load’命令は結果がレジスタファイルへ書き込まれる第5ステージへ送られる。
5番目の処理期間では、‘load’命令はパイプラインにより完全に実行されているが、後に続く命令の加速はまだ出来ない。具体的には、‘load’命令に続く命令は‘add’、‘sub’、‘comp’及び‘add’である。‘load’命令の後の2つの命令は第2のタイプの命令である(つまり、第4ステージを通る必要はないが、レジスタファイルへ書き込む必要がある)ため、第4のラッチを透過モードに戻すことはまだ出来ない。そのため、5番目及び6番目の処理期間では、第4のラッチはEn4によりノーマルに動作させられる。
しかし、次の‘comp’命令は第3のタイプである(つまり、実行後に第5のラッチへ書き込む必要がなく、第3又は第4ステージ後に完全に処理される)ため、第6の処理期間中に第4ステージ(MEM)ではパイプラインに‘スロット’が生成される。そのため、この‘スロット’はパイプラインを後に続く命令が第4ステージを介して加速できる縮小状態にすることができる。
その結果、6番目の処理期間と7番目の処理期間の間の過渡期では、第4のラッチのイネーブル信号は第4のラッチを透過状態に保持する‘ハイ’信号に優先される。そのため、次の命令又は(‘add’命令の)演算結果を受け取るために第3のラッチがノーマルに切り替えられるとき、この命令は第4及び第5ステージの両方をそれらがあたかも1つのステージであるかのように伝播する。この場合も、‘1つのステージ’は破線四角形52で示される。
別の‘load’命令が処理されるまでパイプラインはこの縮小状態にある。
本発明の使用は従来のシステムより2つの重要な有利点を与える。1つ目の有利点は従来技術のプロセッサよりレジスタファイルへのいくつかの書き戻しを早く発生させることができる、言い換えれば、いくつかの命令の実行速度が増すことを意味する。これはマイクロプロセッサの性能を上げる。
2つ目の有利点は、パイプラインステージが縮小された状態の場合、処理サイクル中そのステージのラッチを駆動させる必要がなく、そのためチップの消費電力が低減されることである。
上記の実施例は発明を限定するものではなく、当業者は添付した請求の範囲の目的を逸脱することない多くの代替実施例を設計することができることに留意すべきである。「を備える」‘comprising’という言葉は、請求の範囲に挙げられた以外の要素またはステップの存在を除くものではない。
Claims (20)
- 複数のタイプの命令を処理するように構成された電子回路であって、
第1および第2のパイプラインステージと、
前記第1および第2のパイプラインステージ間に置かれたラッチと、
を備え、
第1のタイプの命令を処理するときはイネーブル信号に応じて前記ラッチが開閉されるノーマルモードで、第2のタイプの命令を処理するときは命令が前記ラッチに格納されることなく前記第1及び第2のパイプラインステージを伝播できるように前記ラッチを開いたままにしておく縮小モードで駆動し、
前記第1のタイプの命令は前記第1及び第2のパイプラインステージによる処理が必要であり、前記第2のタイプの命令は前記第2のパイプラインステージによる処理が必要であることを特徴とする電子回路。 - 前記ラッチに接続され、前記電子回路がノーマルモードのときは前記イネーブル信号を用いて前記ラッチを制御し、前記電子回路が縮小モードのときは前記ラッチを開いたままにしておくラッチ制御回路をさらに備える請求項1に記載の電子回路。
- 前記ラッチ制御回路は前記電子回路の駆動モードを指示する信号を受信することを特徴とする請求項2に記載の電子回路。
- 前記第2のパイプラインステージによる処理を必要としない第3のタイプの命令を処理することを特徴とする請求項1に記載の電子回路。
- 前記第3のタイプの命令が処理されるまでノーマルモードで駆動することを特徴とする請求項4に記載の電子回路。
- 前記第3のタイプの命令の処理後、次に続く命令が前記第2又は第3のタイプの命令の場合、前記縮小モードで駆動することを特徴とする請求項5に記載の電子回路。
- 前記第1のタイプの命令が処理されるまで前記縮小モードで駆動することを特徴とする請求項4に記載の電子回路。
- 前記第1のタイプの命令はロード命令を含むことを特徴とする請求項1に記載の電子回路。
- 前記第2のタイプの命令は演算処理命令を含むことを特徴とする請求項1に記載の電子回路。
- 前記第3のタイプの命令は比較、記憶、分岐及びジャンプ命令を含むことを特徴とする請求項4に記載の電子回路。
- 前記第1のパイプラインステージはデータメモリを有することを特徴とする請求項1に記載の電子回路。
- 前記第2のパイプラインステージはライトバックステージを有することを特徴とする請求項1に記載の電子回路。
- 第1および第2のパイプラインステージと、前記第1および第2のパイプラインステージ間に置かれたラッチと、を備え、複数のタイプの命令を処理するように構成された電子回路の駆動方法であって、第1のタイプの命令を処理するときはイネーブル信号に応じてラッチが開閉されるノーマルモードで、第2のタイプの命令を処理するときは命令がラッチに格納されることなく第1及び第2のパイプラインステージを通過して伝播できるようにラッチを開いたままにしておく縮小モードで電子回路を駆動し、
前記第1のタイプの命令は前記第1及び第2のパイプラインステージによる処理が必要であり、前記第2のタイプの命令は前記第2のパイプラインステージによる処理が必要であることを特徴とする電子回路の駆動方法。 - 前記電子回路はさらに前記第2のパイプラインステージによる処理を必要としない第3のタイプの命令を処理するように構成されていることを特徴とする請求項13に記載の方法。
- 前記第3のタイプの命令が処理されるまでは前記電子回路をノーマルモードで駆動するステップをさらに含むことを特徴とする請求項14に記載の方法。
- 前記第3のタイプの命令の処理後、もし次に続く命令が前記第2又は第3のタイプの場合は前記電子回路を縮小モードで駆動するステップをさらに含むことを特徴とする請求項15に記載の方法。
- 前記第1のタイプの命令が処理されるまでは前記電子回路を縮小モードで駆動するステップをさらに含むことを特徴とする請求項14に記載の方法。
- 前記第1のタイプの命令はロード命令を含むことを特徴とする請求項13に記載の方法。
- 前記第2のタイプの命令は演算処理命令を含むことを特徴とする請求項13に記載の方法。
- 前記第3のタイプの命令は比較、記憶、分岐及びジャンプ命令を含むことを特徴とする請求項14に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP04100975 | 2004-03-10 | ||
PCT/IB2005/050684 WO2005091130A2 (en) | 2004-03-10 | 2005-02-24 | Instruction pipeline |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007528549A true JP2007528549A (ja) | 2007-10-11 |
Family
ID=34960609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007502450A Withdrawn JP2007528549A (ja) | 2004-03-10 | 2005-02-24 | 電子回路 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20070260857A1 (ja) |
EP (1) | EP1728151A2 (ja) |
JP (1) | JP2007528549A (ja) |
KR (1) | KR20070004705A (ja) |
CN (1) | CN100472432C (ja) |
WO (1) | WO2005091130A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012517161A (ja) * | 2009-02-06 | 2012-07-26 | サゲムコム カナダ インコーポレイテッド | 拡縮可能なnat通過 |
US8868888B2 (en) | 2007-09-06 | 2014-10-21 | Qualcomm Incorporated | System and method of executing instructions in a multi-stage data processing pipeline |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101190937B1 (ko) | 2007-05-17 | 2012-10-12 | 후지쯔 가부시끼가이샤 | 연산 유닛, 프로세서 및 프로세서 아키텍처 |
WO2009118776A1 (ja) * | 2008-03-25 | 2009-10-01 | 富士通株式会社 | マルチプロセッサ |
JP2010198128A (ja) * | 2009-02-23 | 2010-09-09 | Toshiba Corp | プロセッサシステム |
KR102114112B1 (ko) * | 2013-11-19 | 2020-05-22 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 |
US11886885B2 (en) * | 2021-08-10 | 2024-01-30 | Nvidia Corporation | High-throughput asynchronous data pipeline |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5099421A (en) | 1988-12-30 | 1992-03-24 | International Business Machine Corporation | Variable length pipe operations sequencing |
US5222240A (en) * | 1990-02-14 | 1993-06-22 | Intel Corporation | Method and apparatus for delaying writing back the results of instructions to a processor |
GB2287108B (en) * | 1994-02-28 | 1998-05-13 | Intel Corp | Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path |
US5778250A (en) * | 1994-05-23 | 1998-07-07 | Cirrus Logic, Inc. | Method and apparatus for dynamically adjusting the number of stages of a multiple stage pipeline |
TW448403B (en) * | 1995-03-03 | 2001-08-01 | Matsushita Electric Ind Co Ltd | Pipeline data processing device and method for executing multiple data processing data dependent relationship |
US5778208A (en) * | 1995-12-18 | 1998-07-07 | International Business Machines Corporation | Flexible pipeline for interlock removal |
DE69733444D1 (de) * | 1996-03-29 | 2005-07-14 | Matsushita Electric Ind Co Ltd | Datenprozessor mit variabler Anzahl von Pipelinestufen |
US5964866A (en) * | 1996-10-24 | 1999-10-12 | International Business Machines Corporation | Elastic self-timed interface for data flow elements embodied as selective bypass of stages in an asynchronous microprocessor pipeline |
WO2002035346A1 (en) * | 2000-10-23 | 2002-05-02 | The Trustees Of Columbia University In The City Of New York | Asynchronous pipeline with latch controllers |
US6848060B2 (en) * | 2001-02-27 | 2005-01-25 | International Business Machines Corporation | Synchronous to asynchronous to synchronous interface |
US6586966B1 (en) * | 2001-09-13 | 2003-07-01 | Altera Corporation | Data latch with low-power bypass mode |
US20030226000A1 (en) * | 2002-05-30 | 2003-12-04 | Mike Rhoades | Collapsible pipeline structure and method used in a microprocessor |
US7065665B2 (en) * | 2002-10-02 | 2006-06-20 | International Business Machines Corporation | Interlocked synchronous pipeline clock gating |
US7259594B2 (en) * | 2003-09-16 | 2007-08-21 | Nxp B.V. | Electronic circuit with a chain of processing elements |
US20070162768A1 (en) * | 2004-03-10 | 2007-07-12 | Koninklijke Philips Electronics, N.V. | Electronic circuit |
-
2005
- 2005-02-24 KR KR1020067018570A patent/KR20070004705A/ko not_active Application Discontinuation
- 2005-02-24 CN CNB2005800074930A patent/CN100472432C/zh not_active Expired - Fee Related
- 2005-02-24 JP JP2007502450A patent/JP2007528549A/ja not_active Withdrawn
- 2005-02-24 WO PCT/IB2005/050684 patent/WO2005091130A2/en not_active Application Discontinuation
- 2005-02-24 EP EP05708836A patent/EP1728151A2/en not_active Withdrawn
- 2005-02-24 US US10/598,583 patent/US20070260857A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8868888B2 (en) | 2007-09-06 | 2014-10-21 | Qualcomm Incorporated | System and method of executing instructions in a multi-stage data processing pipeline |
JP2012517161A (ja) * | 2009-02-06 | 2012-07-26 | サゲムコム カナダ インコーポレイテッド | 拡縮可能なnat通過 |
Also Published As
Publication number | Publication date |
---|---|
EP1728151A2 (en) | 2006-12-06 |
WO2005091130A3 (en) | 2006-07-27 |
WO2005091130A2 (en) | 2005-09-29 |
US20070260857A1 (en) | 2007-11-08 |
KR20070004705A (ko) | 2007-01-09 |
CN1930549A (zh) | 2007-03-14 |
CN100472432C (zh) | 2009-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6304955B1 (en) | Method and apparatus for performing latency based hazard detection | |
US5604878A (en) | Method and apparatus for avoiding writeback conflicts between execution units sharing a common writeback path | |
JP5047542B2 (ja) | マルチスレッドプロセッサのディスパッチ時にスレッドをブロックする方法、コンピュータプログラム、および装置(精細なマルチスレッドディスパッチロックメカニズム) | |
US6301655B1 (en) | Exception processing in asynchronous processor | |
US20080189521A1 (en) | Speculative Instruction Issue in a Simultaneously Multithreaded Processor | |
KR960001274B1 (ko) | 트랩 및 스톨 제어기능을 갖는 병렬처리형 프로세서 시스템 | |
JPH03116233A (ja) | データプロセッサの命令処理システム | |
JP2010532063A (ja) | 条件命令を無条件命令および選択命令へと拡張する方法およびシステム | |
KR20040016829A (ko) | 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템 | |
JP2007528549A (ja) | 電子回路 | |
JP3756410B2 (ja) | 述語データを提供するシステム | |
JP3790626B2 (ja) | デュアルワードまたは複数命令をフェッチしかつ発行する方法および装置 | |
RU2450329C2 (ru) | Эффективный механизм сохранения адреса возврата из прерывания | |
JP2008542949A (ja) | パイプライン型マイクロプロセッサの節電システムおよび節電方法 | |
JP2004145454A (ja) | 情報処理装置及び情報処理方法 | |
US6721878B1 (en) | Low-latency interrupt handling during memory access delay periods in microprocessors | |
JP2003263313A (ja) | デジタルプロセッサおよび命令の選択方法 | |
JP3199035B2 (ja) | プロセッサ及びその実行制御方法 | |
US5828861A (en) | System and method for reducing the critical path in memory control unit and input/output control unit operations | |
US9135006B1 (en) | Early execution of conditional branch instruction with pc operand at which point target is fetched | |
JP3461887B2 (ja) | 可変長パイプライン制御装置 | |
JP2924735B2 (ja) | パイプライン演算装置及びデコーダ装置 | |
JP2503223B2 (ja) | 先行制御方式 | |
US20070038845A1 (en) | Data processor | |
JP2636074B2 (ja) | マイクロプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080222 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20080619 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20091014 |