(57)【要約】  複数のタイプの命令を処理するように構成された電子回路であって、第１および第２のパイプラインステージと、パイプラインステージ間に置かれたラッチと、を備え、第１のタイプの命令を処理するときはイネーブル信号に応じてラッチが開閉されるノーマルモードで、第２のタイプの命令を処理するときは命令がラッチに格納されることなく第１及び第２のパイプラインステージを伝播できるようにラッチを開いたままにしておく縮小モードで駆動し、第１のタイプの命令は第１及び第２のパイプラインステージによる処理が必要であり、第２のタイプの命令は第２のパイプラインステージによる処理が必要であることを特徴とする電子回路が提供される。
2007528549.tif 000002
【特許請求の範囲】
【請求項１】
複数のタイプの命令を処理するように構成された電子回路であって、
第１および第２のパイプラインステージと、
前記第１および第２のパイプラインステージ間に置かれたラッチと、
を備え、
第１のタイプの命令を処理するときはイネーブル信号に応じて前記ラッチが開閉されるノーマルモードで、第２のタイプの命令を処理するときは命令が前記ラッチに格納されることなく前記第１及び第２のパイプラインステージを伝播できるように前記ラッチを開いたままにしておく縮小モードで駆動し、
前記第１のタイプの命令は前記第１及び第２のパイプラインステージによる処理が必要であり、前記第２のタイプの命令は前記第２のパイプラインステージによる処理が必要であることを特徴とする電子回路。
【請求項２】
前記ラッチに接続され、前記電子回路がノーマルモードのときは前記イネーブル信号を用いて前記ラッチを制御し、前記電子回路が縮小モードのときは前記ラッチを開いたままにしておくラッチ制御回路をさらに備える請求項１に記載の電子回路。
【請求項３】
前記ラッチ制御回路は前記電子回路の駆動モードを指示する信号を受信することを特徴とする請求項２に記載の電子回路。
【請求項４】
前記第２のパイプラインステージによる処理を必要としない第３のタイプの命令を処理することを特徴とする請求項１に記載の電子回路。
【請求項５】
前記第３のタイプの命令が処理されるまでノーマルモードで駆動することを特徴とする請求項４に記載の電子回路。
【請求項６】
前記第３のタイプの命令の処理後、次に続く命令が前記第２又は第３のタイプの命令の場合、前記縮小モードで駆動することを特徴とする請求項５に記載の電子回路。
【請求項７】
前記第１のタイプの命令が処理されるまで前記縮小モードで駆動することを特徴とする請求項４に記載の電子回路。
【請求項８】
前記第１のタイプの命令はロード命令を含むことを特徴とする請求項１に記載の電子回路。
【請求項９】
前記第２のタイプの命令は演算処理命令を含むことを特徴とする請求項１に記載の電子回路。
【請求項１０】
前記第３のタイプの命令は比較、記憶、分岐及びジャンプ命令を含むことを特徴とする請求項４に記載の電子回路。
【請求項１１】
前記第１のパイプラインステージはデータメモリを有することを特徴とする請求項１に記載の電子回路。
【請求項１２】
前記第２のパイプラインステージはライトバックステージを有することを特徴とする請求項１に記載の電子回路。
【請求項１３】
第１および第２のパイプラインステージと、前記第１および第２のパイプラインステージ間に置かれたラッチと、を備え、複数のタイプの命令を処理するように構成された電子回路の駆動方法であって、第１のタイプの命令を処理するときはイネーブル信号に応じてラッチが開閉されるノーマルモードで、第２のタイプの命令を処理するときは命令がラッチに格納されることなく第１及び第２のパイプラインステージを通過して伝播できるようにラッチを開いたままにしておく縮小モードで電子回路を駆動し、
前記第１のタイプの命令は前記第１及び第２のパイプラインステージによる処理が必要であり、前記第２のタイプの命令は前記第２のパイプラインステージによる処理が必要であることを特徴とする電子回路の駆動方法。
【請求項１４】
前記電子回路はさらに前記第２のパイプラインステージによる処理を必要としない第３のタイプの命令を処理するように構成されていることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記第３のタイプの命令が処理されるまでは前記電子回路をノーマルモードで駆動するステップをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記第３のタイプの命令の処理後、もし次に続く命令が前記第２又は第３のタイプの場合は前記電子回路を縮小モードで駆動するステップをさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記第１のタイプの命令が処理されるまでは前記電子回路を縮小モードで駆動するステップをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１８】
前記第１のタイプの命令はロード命令を含むことを特徴とする請求項１３に記載の方法。
【請求項１９】
前記第２のタイプの命令は演算処理命令を含むことを特徴とする請求項１３に記載の方法。
【請求項２０】
前記第３のタイプの命令は比較、記憶、分岐及びジャンプ命令を含むことを特徴とする請求項１４に記載の方法。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
本発明は電子回路の分野に関し、特に共有リソースにアクセスする際に可変待ち時間のパイプラインを有する電子回路に関する。
【０００２】
多くの従来の電子回路、例えばマイクロプロセッサ、は並列処理や性能を上げるために‘パイプライン’を用いている。これは、マイクロプロセッサの命令実行がいくつかの独立したステップからなり、マイクロプロセッサ内にて各ステップを実行するための分離ユニットを作り出せることである。ユニットが命令の実行を終えると、その命令は‘パイプライン’の次のユニットに送られ、次の命令の動作を始める。そのため、１つの命令を実行するために必要とする時間はパイプラインでないシステムと同じままであるが、次の命令が１つだけ後ろのユニットにあるため、全体的な結果ではマイクロプロセッサの性能は向上する。
【０００３】
コンポーネントがデータ処理する時間やいつデータをシステムの次の部分に伝播するかをグローバルクロック信号が制御する同期回路と違い、非同期システムのコンポーネントは各自のレートでタスクを実行し、システムの次の部分がデータ受信の確認応答をしたときだけ次のタスクに進む。
【０００４】
グローバルクロック信号がないので、非同期システムのコンポーネントはシステムの独立部同士が伝達可能なハンドシェイキングプロトコルを用いることが必要である。
【０００５】
システムの１つのタイプでは、第１ステージが第２ステージに演算処理実行を要求するとき、第１ステージは第２ステージにリクエストを送信する。第２ステージは演算処理を実行し、演算処理を終えたときに、第１ステージへ確認応答信号を送信する。第１ステージが確認応答信号を受信したとき、演算処理が完了したことを認識し次の命令に進むことができる。
【０００６】
非同期システムの代替タイプは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”に記載されている。
【０００７】
非同期プロセッサにおいては、パイプラインステージは一般にラッチを用いて実施される。
【０００８】
パイプラインプロセッサが通常実行する命令セット内の命令はしばしば異なる遅延を有する。これは命令が順次方式で実行されるとき完了までに要する時間が異なることを意味する。
【０００９】
例えば、数値演算（ＡＬＵ）命令やロード演算を考慮されたい。
【００１０】
図１はそれぞれラッチ４、６、８及び１０を有する５つのステージを備える伝統的な５ステージパイプライン２を示す。ＣＰＵ算術論理演算は実行ステージ（第３ステージ）で行われる。ロード命令はアドレス計算のため第３ステージを用い、メモリ１２からのデータロードのためメモリステージ（第４ステージ）を用いる。
【００１１】
書き戻しステージ（第５ステージ）では、実行ステージ（第３ステージ）の結果又はメモリ１２からロードしたデータのレジスタファイル１４への書き戻しが行われる。そのため、原則としてＡＬＵ演算の書き戻しは実行ステージの後に発生することができ、一方ロード演算の書き戻しはメモリステージ（第４ステージ）より早く発生することはできない。
【００１２】
しかし、もし結果が得られてすぐに実行ステージとメモリステージの両方の結果をレジスタファイル１４に書き戻すことを許可すると、ＡＬＵ演算に付随するロードが２つの同時書き戻しを導きレジスタファイルリソース１４に衝突を引き起こす。
【００１３】
このリソース衝突は現在２つの方法のうちのいずれか１つで解決されている。第１のアプローチは、増設ライトポートをレジスタファイル１４に加え、レジスタファイル１４で２つの同時書き込み動作が起きるのを許容するものである。図１において、破線１６は第３のラッチ８からレジスタファイル１４の第２のライトポートへの接続を表している。しかしこの手法はハードウェアの観点からみて高価である。また、２つの書き込み先がレジスタファイル１４の同じ場所の場合、ある制御回路がどちらの値を先に書き戻すべきか決定しなければならない。
【００１４】
第２のアプローチ（これも図１に示される）は、ロード演算と同じ書き込み遅延を必要とするために、ＡＬＵ演算の結果を追加パイプラインステージに通す（すなわち、前の演算の結果がレジスタファイル１４へ転送された後、ラッチ１０に格納する）ものである。この手法はロード命令の遅延に合わせるためにＡＬＵ演算の遅延を延ばすので、パイプラインの性能が下がり消費電力が増大する。この手法のさらなる不利点は、たとえもしＡＬＵ演算の結果がレジスタファイル１４へより早く書き込みできる（すなわちパイプライン内で先立つロード命令がない時）としても、”追加”ステージ（ラッチ１０）を介して伝播しなければならないため、より早く書き込みすることはできないことである。
【００１５】
そのため、かなりの量の余分なハードウェアを必要とせず、また命令の遅延を増大させることなくレジスタファイルリソースの衝突を防止する必要がある。
【００１６】
本発明の第１の態様によると、複数のタイプの命令の処理に適合した電子回路が与えられ、その電子回路は第１及び第２のパイプラインステージと、これらのパイプラインの間に位置するラッチと、を備え、電子回路は、第１のタイプの命令を処理するときにイネーブル信号に応じてラッチが開閉されるノーマルモードで駆動し、第２のタイプの命令を処理するときに命令がラッチに格納されずに第１及び第２のパイプラインステージを伝播していくためにラッチを開けたままにしておく減少モードで駆動するよう構成され、第１のタイプの命令は第１及び第２のパイプラインステージによる処理を必要とし、第２のタイプの命令は第２のパイプラインステージによる処理を必要とする。
【００１７】
本発明の別の態様によると、複数のタイプの命令の処理に適合した電子回路を駆動する方法が与えられ、その電子回路は第１及び第２のパイプラインステージと、これらのパイプラインの間に位置するラッチと、を備え、その方法は、電子回路を第１のタイプの命令を処理するときにイネーブル信号に応じてラッチが開閉されるノーマルモードで駆動させ、第２のタイプの命令を処理するときに命令がラッチに格納されずに第１及び第２のパイプラインステージを伝播していくためにラッチを開けたままにしておく減少モードで駆動させることを含み、第１のタイプの命令は第１及び第２のパイプラインステージによる処理を必要とし、第２のタイプの命令は第２のパイプラインステージによる処理を必要とする。
【００１８】
本発明は非同期マイクロプロセッサにおけるパイプラインを参照して以下に説明されるが、本発明は共有リソースの衝突の問題を待ち時間の異なる命令の処理に遅延を取り込むことで解決しているパイプラインを有するあらゆるタイプの電子回路に適用できることは理解されるべきである。
【００１９】
図２は本発明によるマイクロプロセッサパイプラインを示す。この図で示した実施例では、マイクロプロセッサパイプライン２０は５ステージパイプラインであるが、それより多い又は少ないステージのパイプラインに本発明が適用できることは理解されるべきである。さらに、本発明は特定のハンドシェイキングプロトコルに関して説明されているが、本発明は他のプロトコルを用いるシステムに適用できることは理解されるべきである。
【００２０】
パイプライン２０のステージはそれぞれラッチ（２２、２４、２６、２８及び３０）を備え、従来のように、各ラッチは動作モードを決定するイネーブル信号Ｅｎ１、Ｅｎ２、Ｅｎ３、Ｅｎ４及びＥｎ５を有する。ラッチが有効のとき、ラッチの出力は入力と同じになり、ラッチは透過と呼ばれる。ラッチが無効のとき、ラッチの出力は入力の直前値を保持する。
【００２１】
命令メモリ３２は第１のラッチ２２に接続され、これはプロセッサパイプライン２０に対する命令を格納する。命令は、データメモリ３４の特定のアドレスにアクセスするために用いられるロード命令、算術論理演算ユニット（ＡＬＵ）３６により実行される数値演算命令を含むことができ、また比較、ジャンプ、分岐及び記憶のような他のタイプの命令を含んでもよい。
【００２２】
上述のように、ロード及び数値演算命令の結果は第５のラッチ３０に書き込まれる。しかし、比較、ジャンプ、分岐及び記憶命令の結果は第５のラッチ３０に書き込む必要はなく、それらの実行は第３又は第４ステージの後に完了してもよい。
【００２３】
取り出された命令は第１のラッチ２２に格納され、ユニット３８へ転送される。ユニット３８は一般にデコードステージとして知られ、取り出された命令をデコードする。第２のラッチ２４が先行する命令が無事に第３のラッチ２６に格納されたという確認を受け取ったとき、制御及びデータ信号を含んでもよいユニット３８の出力は第２のラッチ２４に格納される。これらの制御及びデータ信号はパイプラインの各ステージにどの命令を実行するべきか教える。
【００２４】
第２のラッチ２４に格納された命令はＡＬＵ３６により実行される。もし命令が数値演算命令の場合は、ＡＬＵ３６は演算処理を実行する。しかし、もし命令がロード命令の場合は、ＡＬＵ３６はパイプライン２０の第４のステージにてアクセスされるデータメモリ３４内のアドレスを算出する。第３のラッチ２６が先行する命令が次のステージにより格納されたという確認を受け取ったときに、第３のラッチ２６のレジスタ４０又は４２に算出結果が格納される。結果を格納する第３のラッチ２６内の特定レジスタ４０、４２は処理される命令の種類により決定される。例えば、命令がロード命令の場合、結果はデータメモリ３４がアクセスされ得るように上側レジスタ４０に格納される。また、命令が演算命令の場合、結果は下側レジスタ４２に格納される。ある実施においては、条件付ビットと併せてイネーブル信号Ｅｎ３が分離レジスタ４０、４２の選択を可能にする。
【００２５】
比較、記憶、ジャンプ又は分岐命令の場合、第３ステージ、ＡＬＵ３６、または第４ステージ（特定の命令による）を完了した後に命令が完全に実行される。
【００２６】
第４ステージでは、現在の命令がロード命令の場合、データメモリ３４がアクセスされ、所望のデータがラッチ２８の上側レジスタ４４に読み出される。もし現在の命令が数値演算命令の場合、第３ステージからの結果（ラッチ２６に格納されている）はラッチ２８の下側レジスタ４６に直ちに格納される。
【００２７】
第３のラッチ２６及び第４のラッチ２８にはそれぞれ２つのレジスタのみ示されているが、２つよりも多くて良いことが理解され、厳密な数はパイプラインが処理できる命令のタイプによる。
【００２８】
第５ステージでは、第４ステージの結果（ラッチ２８に格納されている）がラッチ３０（以後‘レジスタファイル’と称する）に書き込まれる。
【００２９】
上述のように、一度数値演算命令が第３ステージにて処理されると、いつでもレジスタファイル３０へ書き込めるようになる。しかしこれは第４のラッチにレジスタファイル３０へ書き込まれるのを待っているデータがある場合、レジスタファイル３０に問題を起こす。上述のように、先行するロード命令によりロードされた又は先行する演算命令の実行により生成されたデータがレジスタファイル３０へ書き込まれている間は、演算命令の結果は第４のラッチに格納されなければならない。
【００３０】
もちろん、演算命令の結果を第４のラッチに格納することは数値演算命令の処理に遅延をもたらす。
【００３１】
それ故、本発明によれば、待ち時間の異なる命令（すなわち命令が最終結果を算出するまでにかかる総時間が異なる）が発行される場合、パイプライン２０の選択されたラッチを透過的にし、隣り合った２つのステージを効果的に１つのステージに結合することでパイプライン２０を介して命令が加速され、その結果データを次のステージへ素通りさせられ、データパスでの不要な遅延を取り除く。
【００３２】
上述のように、異なる‘待ち時間’は、命令が順次方式で実行されるとき完了までに同じ総時間を必要としないことを意味する。例えば、図２に示される実施形態においては、数値演算命令は４つの待ち時間を有し、それは第４ステージを通過する必要がなく、５つのパイプラインステージのうち４つのみで実行される必要があるためである。しかし、ロード命令（又はそれに関するデータ）は５つのラッチそれぞれにより格納される必要があり、そのため５つの待ち時間を有する。比較、分岐及びジャンプ命令のような第５ステージを使用しない命令は３つの待ち時間を有する。記憶命令は第４ステージを使用する必要があるが、第５（書き戻し）ステージを使用する必要がなく、そのため４つの待ち時間を有する。
【００３３】
そのため、本発明の一態様によれば、ラッチを透過状態に保持することで第４ステージのラッチに演算命令の結果を格納することが防止され、その結果、第３ステージ完了後に続けて演算命令の結果をレジスタファイル３０へ書き込むことができる。
【００３４】
しかし、もし命令がロード命令の場合、命令は５つのステージすべてで処理されなければならず、第４ステージを透過モードに保持できない。加えて、もしロード命令や５つのパイプラインステージすべてでの処理を必要とする他の命令（例えば加速されない先行する演算命令）がパイプラインにて数値演算命令に先行する場合、演算処理命令は第４ステージを飛ばして進むことはできず、第４ステージにおいても格納されなければならない。
【００３５】
そのため、本発明による第４ステージのラッチ２８の動作を制御するため、ラッチ制御回路４８が備えられる。ラッチ制御回路４８は第４のラッチのイネーブル信号Ｅｎ４及び制御信号を受信する。
【００３６】
特定の命令にとって第４ステージ以外のステージが不必要である（処理される個別の命令及び／又はパイプライン構造による）代替パイプラインでは、他のパイプラインラッチにさらにラッチコントローラを接続することができる。
【００３７】
ラッチ制御回路４８は第４のラッチ２８の動作モードを制御する役割を果たす。もし現在第３ステージラッチ２６にある命令がパイプライン２０を介して加速できない場合、（例えば、それはロード命令で、第４ステージからデータを取り出さなければならない、又は、ロード命令が先行する演算命令、又は、加速されていない先立つ演算命令のような５つのパイプラインステージすべてによる処理が必要な命令）、ラッチ制御回路４８はイネーブル信号Ｅｎ４により第４のラッチ２８を通常に動作させる。つまり、イネーブル信号Ｅｎ４は、ラッチが透過（すなわち格納すべき次のデータをロードしている時）かどうか、又は、ラッチが最後にイネーブルの時に入力における最後の値を保持しているかどうかを制御する。
【００３８】
しかし、第３ステージの命令がパイプラインを介して加速できる（すなわち命令が、例えば第４ステージを介して加速される命令や比較命令のような第５ステージを必要としない命令が先行する演算命令である）とき、パイプラインの第４ステージを必要とする別の命令が処理されるまで制御信号は第４ラッチを透過モードに保持する。つまり、ラッチ制御回路４８はイネーブル信号Ｅｎ４より優先され、ラッチ２８を透過状態に保持する。
【００３９】
ラッチ２８の透過性はラッチ２６から与えられるデータが、効率的に第４ステージを完全にスキップし、レジスタファイル３０への書き込みのために第５ステージへ直ちに送られることを意味する。
【００４０】
１つ又はそれより多くのラッチをオープンに保持するモードを有し、効率的にステージを透過にするパイプライン２０は縮小パイプラインとして知られている。
【００４１】
パイプラインラッチコントローラの一実施例を図３に示す。ラッチ２８は（イネーブル信号ＥＮ４により制御される）ノーマルラッチングモードと透過に維持される縮小モードとに切り替えられる。
【００４２】
この図では、イネーブル信号の高い値はラッチ２８を透過にする。しかし、逆の状態でこのコントローラを適応した場合、低い値のイネーブル信号がラッチを透過にすることは当業者には明白であろう。
【００４３】
ラッチコントローラ４８では、縮小モードとノーマルモードとの切り替えは制御信号（Ｃｏｎｔｒｏｌ）により決定される。この信号は、イネーブル信号Ｅｎ４及び供給電圧信号ＶＤＤを入力とするマルチプレクサ５０の動作を制御する。
【００４４】
もし現在の命令（例えば演算命令）がパイプラインステージを介して加速できる命令であると決定した場合、制御信号はラッチ２８が透過であるべきことを示し、ＶＤＤ信号がラッチ２８の動作を制御できるようにマルチプレクサ５０は制御信号により制御される。それゆえ、イネーブル信号Ｅｎ４の値に関わらず、ラッチ２８は強制的に透過状態にされる。しかし、命令が第４ステージで格納され処理されなければならないとき、イネーブル信号がラッチ２８へ送られるように制御信号はマルチプレクサ５０を動作させ、ノーマルのように第４ラッチに命令を格納させられる。
【００４５】
上述及び図３に示したラッチ制御回路は一例であり、本発明の実施のために用いることができる多くの実施可能なラッチ制御回路の１つに過ぎないことは理解されるであろう。ラッチ制御回路の多くの代替タイプは当業者にとって明白であろう。
【００４６】
それゆえ、システム内の他のラッチがイネーブル信号に応じてノーマルにラッチし続けることができる間、このようなコントローラを有するラッチは透過モードに切り替えることができる。
【００４７】
この図示された実施形態では、関連する命令の認識とパイプラインの現在の状態の決定により制御信号が生成される。この状態は第４ステージを介した加速が起きるか又は起きないかである。上述のように、もし先行する命令がロード命令の場合や、ロード命令が先に実行され書き戻し（第５）ステージを用いない命令がまだ続いていない場合は、加速は起きない。もし実行されたロード命令がまだ無い場合や、ロード命令が実行され書き戻し（第５）ステージを必要としない命令が次に（すぐである必要はない）続いている場合は、加速が起きる。
【００４８】
制御信号のタイミングは慎重に制御しなければならないことが理解されよう。もし第５ステージのデータがレジスタファイルへ書き込まれる前に第４のラッチが透過モードに切り替えられると、データは失われる。そのため、ラッチの切り替えはパイプラインを介したデータの流れに関して‘安全’でなければならない。
【００４９】
図４は本発明による５ステージパイプラインの一例の動作を示すものである。
【００５０】
図４の上半分では、第１、第２、第３、第４及び第５のラッチそれぞれのイネーブル信号が（それぞれＥｎ１、Ｅｎ２、Ｅｎ３、Ｅｎ４及びＥｎ５として）示される。実線はラッチを動作させるために用いられる信号を示す。第１、第２、第３及び第５のラッチの場合、これらの信号はそれぞれのイネーブル信号に対応し、第４のラッチの場合、この信号はラッチがノーマルモードで動作しているときイネーブル信号に対応し、ラッチが縮小又は透過モードで動作しているとき‘ハイ’信号が優先される。Ｅｎ４の破線は第４のラッチに対する従来のイネーブル信号を示す。
【００５１】
図４の下半分は特定時刻における特定のパイプラインステージにある命令を示す。第１パイプラインステージ、命令メモリ３２から命令がフェッチされ第１のラッチ２２に先行するステージ、はＩＦで示される。第２、第３、第４及び第５ラッチに先行する第２、第３、第４及び第５ステージはそれぞれＩＤ、ＥＸ、ＭＥＭ及びＷＢで示される。
【００５２】
この例のパイプラインでは、３つの異なるタイプの命令が使用される。第１のタイプの命令はパイプラインの５つのステージのそれぞれによる実行が必要となる。ロード命令はこのタイプの命令の一例である。第２のタイプの命令は第４ステージＭＥＭによる実行が必要でないが、第５のラッチへの書き込みが必要である。加算（ａｄｄ）、減算（ｓｕｂ）、論理和（ｏｒｒ）及び論理積（ａｎｄ）のような数値演算命令が第２のタイプの命令の例である。第３のタイプの命令は実行後に第５のラッチに書き込む必要がなく、第３又は第４ステージ後に完全に処理される。比較（ｃｏｍｐ）、ジャンプ、分岐及び記憶命令が第３のタイプの命令の例である。
【００５３】
図４の下半分は本発明により命令セットがパイプラインを介してどのように伝播するかを示す。この図示された例では、処理される命令は以下の順で発生する：ｓｕｂ，ｏｒｒ，ｌｏａｄ，ａｄｄ，ｓｕｂ，ｃｏｍｐ，ａｄｄ，ａｎｄ，ｓｕｂ，ｏｒｒ，ａｎｄ。
【００５４】
最初の処理期間中のパイプラインの状態を示す１列目では、破線四角形５２で示されるように第４のラッチを介した加速が可能である。ここで、第４のラッチが透過モードに保持されているため、第４ステージの‘ｓｕｂ’命令は第５ステージへ伝播する。イネーブル信号Ｅｎ４が‘ハイ’に保持されていることが分かり、そのため第４のラッチが透過状態に保持される。
【００５５】
同様の状態は２番目の処理期間でのパイプラインの状態を示す２列目でもみられる。ここでは、‘ｏｒｒ’命令が第４及び第５ステージを介して伝播する。
【００５６】
しかし、‘ｏｒｒ’命令に続く命令が‘ｌｏａｄ’命令であり、これは必要なデータをメモリ３４からロードするために第４ステージを用いるため、第４ラッチをこれ以上透過モードに保持することはできない。そのため、２列目から３列目への過渡期では、Ｅｎ４から分かるように第４のラッチはノーマルモードに切り替えられる。そのため、‘ｌｏａｄ’命令は第３のラッチに格納され、３番目の処理期間中は第４のラッチ及び第５ステージは活動しない。
【００５７】
４番目の処理期間では、‘ｌｏａｄ’命令は結果がレジスタファイルへ書き込まれる第５ステージへ送られる。
【００５８】
５番目の処理期間では、‘ｌｏａｄ’命令はパイプラインにより完全に実行されているが、後に続く命令の加速はまだ出来ない。具体的には、‘ｌｏａｄ’命令に続く命令は‘ａｄｄ’、‘ｓｕｂ’、‘ｃｏｍｐ’及び‘ａｄｄ’である。‘ｌｏａｄ’命令の後の２つの命令は第２のタイプの命令である（つまり、第４ステージを通る必要はないが、レジスタファイルへ書き込む必要がある）ため、第４のラッチを透過モードに戻すことはまだ出来ない。そのため、５番目及び６番目の処理期間では、第４のラッチはＥｎ４によりノーマルに動作させられる。
【００５９】
しかし、次の‘ｃｏｍｐ’命令は第３のタイプである（つまり、実行後に第５のラッチへ書き込む必要がなく、第３又は第４ステージ後に完全に処理される）ため、第６の処理期間中に第４ステージ（ＭＥＭ）ではパイプラインに‘スロット’が生成される。そのため、この‘スロット’はパイプラインを後に続く命令が第４ステージを介して加速できる縮小状態にすることができる。
【００６０】
その結果、６番目の処理期間と７番目の処理期間の間の過渡期では、第４のラッチのイネーブル信号は第４のラッチを透過状態に保持する‘ハイ’信号に優先される。そのため、次の命令又は（‘ａｄｄ’命令の）演算結果を受け取るために第３のラッチがノーマルに切り替えられるとき、この命令は第４及び第５ステージの両方をそれらがあたかも１つのステージであるかのように伝播する。この場合も、‘１つのステージ’は破線四角形５２で示される。
【００６１】
別の‘ｌｏａｄ’命令が処理されるまでパイプラインはこの縮小状態にある。
【００６２】
本発明の使用は従来のシステムより２つの重要な有利点を与える。１つ目の有利点は従来技術のプロセッサよりレジスタファイルへのいくつかの書き戻しを早く発生させることができる、言い換えれば、いくつかの命令の実行速度が増すことを意味する。これはマイクロプロセッサの性能を上げる。
【００６３】
２つ目の有利点は、パイプラインステージが縮小された状態の場合、処理サイクル中そのステージのラッチを駆動させる必要がなく、そのためチップの消費電力が低減されることである。
【００６４】
上記の実施例は発明を限定するものではなく、当業者は添付した請求の範囲の目的を逸脱することない多くの代替実施例を設計することができることに留意すべきである。「を備える」‘ｃｏｍｐｒｉｓｉｎｇ’という言葉は、請求の範囲に挙げられた以外の要素またはステップの存在を除くものではない。
【図面の簡単な説明】
【００６５】
【図１】従来の５ステージマイクロプロセッサパイプラインを示す図である。
【図２】本発明による５ステージマイクロプロセッサパイプラインを示す図である。
【図３】本発明によるパイプラインラッチコントローラの一実施例を示す図である。
【図４】本発明による５ステージパイプラインの動作を示す図である。
【図１】
2007528549.tif 000003
【図２】
2007528549.tif 000004
【図３】
2007528549.tif 000005
【図４】
2007528549.tif 000006
【国際調査報告】
2007528549.tif 000007
2007528549.tif 000008