(57)【要約】ある実施例において、複数のステージ、および、実行パイプラインのステージの１つ内でマルチサイクル命令を停止するための停止信号を表明するために適合されたマルチサイクル命令（ＭＣＩ）制御装置を有する実行パイプラインを含むパイプライン方式のプロセッサが記述される。ＭＣＩ制御装置は、マルチサイクル命令が停止される間に、パイプライン内の後続のステージへ複数の命令を送出するために適合される。
2004515857.tif 000002
【特許請求の範囲】
【請求項１】
パイプライン方式のプロセッサ内でマルチサイクル命令（ＭＣＩ）を受け取る段階と、
パイプライン方式のプロセッサのパイプライン内のステージで前記マルチサイクル命令を停止する段階と、
前記マルチサイクル命令が停止されている間に、前記パイプライン内の後続ステージへ複数の命令を送出する段階と、
から成ることを特徴とする方法。
【請求項２】
前記マルチサイクル命令をデコードすることに先立って、停止条件を検出する段階をさらに含むことを特徴とする請求項１記載の方法。
【請求項３】
停止条件を検出する段階は、
受け取られた命令がマルチサイクル命令を含むかどうかを決定する段階と、
前記マルチサイクル命令によって指定される複数のレジスタを決定する段階と、
を含むことを特徴とする請求項２記載の方法。
【請求項４】
前記マルチサイクル命令の完了に少なくとも２サイクル先立って、事前停止信号を非表明する段階と、
前記マルチサイクル命令の前記完了に少なくとも１サイクル先立って、停止信号を非表明する段階と、
をさらに含むことを特徴とする請求項１記載の方法。
【請求項５】
前記ＭＣＩを停止する段階が、前記パイプラインのデコード・ステージ内でＭＣＩを停止する段階を含むことを特徴とする請求項１記載の方法。
【請求項６】
複数の命令を送出する段階が、前記マルチサイクル命令が停止されているときに、同一の命令を複数回送出する段階を含むことを特徴とする請求項１記載の方法。
【請求項７】
同一の命令を複数回送出する段階が、プッシュ命令を送出する段階を含むことを特徴とする請求項６記載の方法。
【請求項８】
複数の命令を送出する段階は、前記マルチサイクル命令が停止されているときに複数の異なる命令を送出する段階を含むことを特徴とする請求項１記載の方法。
【請求項９】
複数の異なる命令を送出する段階が、サブルーチンのための復帰アドレスをスタックにプッシュし、フレーム・ポインタを前記スタックにプッシュし、スタック・ポインタを前記フレーム・ポインタへ移動し、および前記サブルーチンのためのフレーム・サイズに基づいて前記スタック・ポインタを更新するために命令を送出する段階を含むことを特徴とする請求項８記載の方法。
【請求項１０】
複数の命令を送出する段階が、状態マシンに従って命令を送出する段階を含むことを特徴とする請求項１記載の方法。
【請求項１１】
前記マルチサイクル命令を停止する段階は、前記マルチサイクル命令が、１を越えるレジスタのポップまたはプッシュの少なくとも１つを指定するときに停止信号を表明する段階を含むことを特徴とする請求項１記載の方法。
【請求項１２】
スタックから１個以上のレジスタをポップすることをパイプライン方式のプロセッサに命令するマルチサイクル命令を受け取る段階と、
パイプライン方式のプロセッサのパイプライン内のステージで前記マルチサイクル命令を停止する段階と、
状態マシンに従ってパイプライン内の後続ステージへの複数の命令を送出する段階と、
から成ることを特徴とする方法。
【請求項１３】
前記マルチサイクル命令が２個のレジスタをポップすることを指定するとき、複数の命令を送出する段階が、
第１状態から第２状態へ遷移し、第１ポップ命令を送出する段階と、
第２状態から第１状態へ遷移し、第２ポップ命令を送出する段階と、
を含むことを特徴とする請求項１２記載の方法。
【請求項１４】
前記マルチサイクル命令が、スタックから３個以上のレジスタをポップすることを指定するとき、複数の命令を送出する段階が、
第１状態から第２状態へ遷移し、第１ポップ命令を送出する段階と、
２個のレジスタがポップされる状態になるまで、複数のポップ命令を送出する段階と、
第２状態から第３状態へ遷移し、第２を最後のレジスタへポップするための別のポップ命令を送出する段階と、
第３状態から第１状態へ遷移し、最後のレジスタをポップするためのポップ命令を送出する段階と、
を含むことを特徴とする請求項１２記載の方法。
【請求項１５】
前記マルチサイクル命令が、スタックからマルチプル・データ・レジスタおよびマルチプル・ポインタ・レジスタをポップすることを指定するとき、複数の命令を送出する段階が、
第１状態から第２状態へ遷移し、ポインタ・レジスタをポップするための第１命令を送出する段階と、
１個のポインタ・レジスタがポップされる状態になるまで、複数のポップ命令を送出する段階と、
第２状態から第３状態へ遷移し、最終ポインタ・レジスタをポップするための別のポップ命令を送出する段階と、
２個のデータ・レジスタがポップされる状態になるまで、複数のポップ命令を送出する段階と、
第３状態から第４状態へ遷移し、第２から最後のデータ・レジスタをポップするためのポップ命令を送出する段階と、
第４状態から第１状態に遷移し、最後のデータ・レジスタをポップするためのポップ命令を送出する段階と、
を含むことを特徴とする請求項１２記載の方法。
【請求項１６】
前記マルチサイクル命令を停止する段階は、前記マルチサイクル命令が１個を越えるレジスタをポップすることを指定するときに、停止信号を表明する段階を含むことを特徴とする請求項１２記載の方法。
【請求項１７】
パイプライン方式のプロセッサに、１個以上のレジスタをスタックにプッシュすることを命令するマルチサイクル命令を受け取る段階と、
前記パイプライン方式のプロセッサのパイプライン内のステージで前記マルチサイクル命令を停止する段階と、
状態マシンに従って前記パイプライン内の後続のステージへ複数のプッシュ命令を送出する段階と、
から成ることを特徴とする方法。
【請求項１８】
前記マルチサイクル命令が２個のレジスタにプッシュすることを指定するとき、複数の命令を送出する段階が、
第１状態から第２状態へ遷移し、第１プッシュ命令を送出する段階と、
第２状態から第１状態へ遷移し、第２プッシュ命令を送出する段階と、
を含むことを特徴とする請求項１７記載の方法。
【請求項１９】
前記マルチサイクル命令が、３個以上のレジスタをスタックにプッシュすることを指定するとき、複数の命令を送出する段階が、
第１状態から第２状態へ遷移し、第１プッシュ命令を送出する段階と、
２個のレジスタがプッシュされる状態になるまで、複数のプッシュ命令を送出する段階と、
第２状態から第３状態へ遷移し、第２を最後のレジスタにプッシュするための別のプッシュ命令を送出する段階と、
第３状態から第１状態へ遷移し、最後のレジスタをプッシュするためのプッシュ命令を送出する段階と、
を含むことを特徴とする請求項１７記載の方法。
【請求項２０】
前記マルチサイクル命令が、スタックにマルチプル・データ・レジスタおよびマルチプル・ポインタ・レジスタをプッシュすることを指定するとき、複数の命令を送出する段階が、
第１状態から第２状態へ遷移し、データ・レジスタをプッシュするための第１命令を送出する段階と、
１個のデータ・レジスタがプッシュされる状態になるまで、複数のプッシュ命令を送出する段階と、
第２状態から第３状態へ遷移し、最終データ・レジスタをプッシュするための別のプッシュ命令を送出する段階と、
２個のポインタ・レジスタがプッシュされる状態になるまで、複数のプッシュ命令を送出する段階と、
第３状態から第４状態へ遷移し、第２を最後のポインタ・レジスタへプッシュするためのポップ命令を送出する段階と、
第４状態から第１状態に遷移し、最後のポインタ・レジスタをプッシュするためのプッシュ命令を送出する段階と、
を含むことを特徴とする請求項１７記載の方法。
【請求項２１】
前記マルチサイクル命令を停止する段階は、前記マルチサイクル命令が１を越えるレジスタをプッシュすることを指定するときに停止信号を表明する段階を含むことを特徴とする請求項１７記載の方法。
【請求項２２】
複数のステージを有する実行パイプラインと、
前記実行パイプラインの前記ステージの１つに入力するマルチサイクル命令を停止するための停止信号を表明するために適合されたマルチサイクル命令（ＭＣＩ）制御装置であって、前記マルチサイクル命令が停止されるときに、ＭＣＩ制御装置がパイプライン内の後続ステージへ複数の命令を送出する、ＭＣＩ制御装置と、
から構成されることを特徴とする装置。
【請求項２３】
前記ＭＣＩ制御装置から前記ＭＣＩ制御装置停止信号を受け取り、かつ、前記パイプライン内の前記ＭＣＩ命令を保持するステージおよび先のステージを停止するために複数の停止信号を生成する停止制御装置をさらに含む請求項２２記載の装置。
【請求項２４】
前記ＭＣＩ制御装置が、前記マルチサイクル命令が停止されるときに同一命令を複数回送出するために適合されることを特徴とする請求項２２記載の装置。
【請求項２５】
前記ＭＣＩ制御装置が、前記パイプラインに複数のレジスタをプッシュすることを命令するためのプッシュ命令を送出するために適合されることを特徴とする請求項２２記載の装置。
【請求項２６】
前記ＭＣＩ制御装置は、マルチサイクル命令が停止されるときに複数の異なる命令を送出するために適合されることを特徴とする請求項２２記載の装置。
【請求項２７】
前記ＭＣＩ制御装置は、サブルーチンのための復帰アドレスをスタックにプッシュし、フレーム・ポインタを前記スタックにプッシュし、スタック・ポインタを前記フレーム・ポインタに移動し、および、前記サブルーチンのためのフレーム・サイズに基づいて前記スタック・ポインタを更新する命令を送出するために適合されることを特徴とする請求項２２記載の装置。
【請求項２８】
前記マルチサイクル命令が１を越えるレジスタをポップまたはプッシュすることのいずれかを指定するときに、前記ＭＣＩ制御装置が停止信号を表明することを特徴とする請求項２２記載の装置。
【請求項２９】
フラッシュ・メモリ装置と、
前記フラッシュ・メモリ装置に結合されたプロセッサであって、前記プロセッサは、複数のステージ、および、実行パイプラインの１つのステージ内でマルチサイクル命令を停止するための停止信号を表明するために適合されたマルチサイクル命令（ＭＣＩ）制御装置を有する実行パイプラインを含み、前記ＭＣＩ制御装置は、前記マルチサイクル命令が停止されるときに、前記パイプライン内の後続ステージへ複数の命令を送出するために適合される、前記プロセッサと、
から構成されることを特徴とするシステム。
【請求項３０】
前記プロセッサは、前記ＭＣＩ制御装置からＭＣＩ制御装置停止信号を受け取り、前記パイプライン内の前記ＭＣＩ命令を保持するステージおよび先のステージを停止するために複数停止信号を生成する停止制御装置をさらに含むことを特徴とする請求項２９記載のシステム。
【請求項３１】
前記ＭＣＩ制御装置は、前記マルチサイクル命令が停止されるときに、同一の命令を複数回送出するために適合されることを特徴とする請求項２９記載のシステム。
【請求項３２】
前記マルチサイクル命令が停止されるときに、前記ＭＣＩ制御装置が複数の異なる命令を送出するために適合されることを特徴とする請求項２９記載のシステム。
【請求項３３】
マルチサイクル命令が、１を越えるレジスタにポップまたはプッシュすることの少なくとも１つを指定するとき、前記ＭＣＩ制御装置が前記停止信号を表明することを特徴とする請求項２９記載のシステム。
【請求項３４】
リンク機械命令を受け取る段階と、
パイプライン方式のプロセッサのパイプライン内のステージのマルチサイクル命令を停止する段階と、
状態マシンに従って前記パイプライン内の後続ステージへの複数の命令を送出することによって前記リンク命令を実行する段階と、
から成ることを特徴とする方法。
【請求項３５】
複数の命令を送出する段階は、
第１状態から第２状態へ遷移し、スタックにリターン・アドレスをプッシュするために命令を送出する段階と、
第２状態から第３状態へ遷移し、スタックにフレーム・ポインタをプッシュするために命令を送出する段階と、
第３状態から第４状態へ遷移し、スタック・ポインタを前記フレーム・ポインタへ移動するために命令を送出する段階と、
第４状態から第１状態に遷移し、前記マルチサイクル機械命令によって指定されたフレーム・サイズに基づいてスタック・ポインタを更新するための命令を送出する段階と、
を含むことを特徴とする請求項３４記載の方法。
【請求項３６】
アンリンク機械命令を受け取る段階と、
パイプライン方式のプロセッサのパイプライン内のステージのマルチサイクル命令を停止する段階と、
状態マシンに従って前記パイプライン内の後続ステージへ複数の命令を送出することによって前記アンリンク命令を実行する段階と、
から成ることを特徴とする方法。
【請求項３７】
複数の命令を送出する段階は、
第１状態から第２状態へ遷移し、スタックから復帰アドレスを復元する命令を送出する段階と、
第２状態から第３状態へ遷移し、スタック・ポインタを復元する命令を送出する段階と、
第３状態から第１状態へ遷移し、前記スタックからフレーム・ポインタを復元する命令を送出する段階と、
を含むことを特徴とする請求項３６記載の方法。
【請求項３８】
マルチサイクル機械命令に応答してパイプライン方式のプロセッサ内の複数のサブオペレーションの送出を制御する状態マシン・ロジックと、
前記サブオペレーションの実行の間に使用するためのレジスタ・アドレスを生成するために適合されたアドレス生成ユニットと、
から構成されることを特徴とする装置。
【請求項３９】
前記アドレス生成ユニットが、現在のレジスタ・アドレスを増加または減少するためのカウンタを含むことを特徴とする請求項３８記載の装置。
【請求項４０】
前記アドレス生成ユニットが、現在のレジスタ・アドレスを格納するためのクロック記憶回路を含むことを特徴とする請求項３８記載の装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラム可能なプロセッサ内のマルチサイクル命令の実行に関する。
【０００２】
【発明の背景】
コンピュータまたはデジタル信号処理システムのためのマイクロプロセッサのようなプログラム可能なプロセッサは、単一の機械命令がマルチプル動作の実行をプロセッサに命令する、１以上の「マルチサイクル（ｍｕｌｔｉ−ｃｙｃｌｅ）」機械命令をサポートする。例えば、典型的なマルチサイクル機械命令は、プロセッサが単一の機械命令に応答して一連のロード動作を実行する、ロード・マルチプルである。他の例は、スタックへ、またはスタックからマルチプル・レジスタをプッシュまたはポップすることをプロセッサに命令する「プッシュ・ポップ・マルチプル」命令である。マルチサイクル命令が、単一の機械命令へマルチプル動作をパックするので、典型的にはそれらがコード・サイズを縮小し、プログラム可能なプロセッサの動作効率を改善する。
【０００３】
【実施例の詳細な説明】
図１は、複数のマルチサイクル機械命令をサポートするプログラム可能なプロセッサ２を図示するブロック図である。プロセッサ２は、実行パイプライン４および制御ユニット６を含む。制御ユニット６は、システム・クロックに従ってパイプライン４を通る命令およびデータのフローを制御する。命令の処理中に、制御ユニット６は、パイプラインの多様なコンポーネントに、命令をデコードし、かつ、例えばその結果をメモリへライト・バックすることなどを含む対応する動作を正確に実行するように命令する。
【０００４】
命令はパイプライン４の第１ステージへロードされ、後続のステージを通って処理される。各ステージは、典型的には他のステージと同時に処理を行う。データは、システム・クロック信号に従ってパイプライン４内のステージの間を通過する。命令の結果は、迅速に間断なくパイプライン４の終端に出現する。
【０００５】
以下で詳細に記述されるように、プロセッサ２は、複数のマルチサイクル命令をサポートする。マルチサイクル命令に応答して、停止（ｓｔａｌｌ）制御装置８は、パイプライン４が余分な命令をフェッチおよびデコードすることを防ぐために、停止信号９を表明（ａｓｓｅｒｔ）することによってパイプライン４の１以上のステージを停止する。パイプライン４の部分を停止した後、マルチサイクル命令（ＭＣＩ）制御装置５はＭＣＩ信号７を表明し、パイプライン４に、現在のマルチサイクル命令によって定義された追加の動作を実行するように命令する。
【０００６】
図２は、本発明に従ってパイプライン４の一例を図示する。パイプライン４は、例えば、命令フェッチ（ＩＦ）、命令デコード（ＤＥＣ）、アドレス計算（ＡＣ）、実行（ＥＸ）およびライト・バック（ＷＢ）の５つのステージを有する。命令は、フェッチ・ユニット１１によって第１ステージ（ＩＦ）中に、例えばメイン・メモリまたは命令キャッシュのようなメモリ装置からフェッチされ、命令デコード・ユニット１２によって第２ステージ（ＤＥＣ）でデコードされる。次のクロック・サイクルで、結果が第３ステージ（ＡＣ）に渡され、そこでデータ・アドレス生成器１３が、動作を実行するための任意のメモリ・アドレスを計算する。
【０００７】
実行ステージ（ＥＸ）中に、実行ユニット１５が、例えば２つの数を加算または乗算するような指定された動作を実行する。実行ユニット１５は、例えば、１以上の算術論理演算ユニット（ＡＬＵ）、浮動小数点ユニット（ＦＰＵ）およびバレル・シフタを含む動作を実行するための特殊なハードウェアを含む。多種多様のデータは、データ・アドレス生成器１３、メモリから取り出されたデータ、またはデータ・レジスタ１４から取り出されたデータによって生成されたアドレスのような実行ユニット１５に与えられる。最終ステージ（ＷＢ）間に、結果が、データ・メモリまたはデータ・レジスタ１４にライト・バックされる。
【０００８】
マルチサイクル命令は、いくつかのクロック・サイクルにわたって、パイプライン４のデコード・ステージから送出されるマルチプル命令として作用する。ＭＣＩが実行中であるとき、ＭＣＩはパイプライン４のデコード・ステージ内に停止した状態であり、その間にマルチプル「サブ命令（ｓｕｂ ｉｎｓｔｒｕｃｔｉｏｎｓ）」が、ＭＣＩ制御装置５の制御下でパイプライン４の下流へ送られる。ＭＣＩ制御装置５は、命令デコード・ユニット１２に命令するために、複数の内部状態マシンに従って動作し、ＭＣＩの実行中に複数のクロック・サイクルにわたって複数の動作を送り出す。
【０００９】
停止制御装置８は、パイプライン４が余分な命令をフェッチまたはデコードすることを防ぐために、停止信号９を表明することにより、パイプライン４の１以上のステージを停止する。より詳しくは、パイプライン４のステージは、現在のステージの結果の格納するために、ステージ・レジスタ１９のような記憶回路を含む。ステージ・レジスタ１９は、典型的にはシステム・クロックに従って結果をラッチする。ステージ・レジスタ１９は停止信号９を受け取り、それが、ステージ・レジスタ１９が前ステージからの結果をラッチするかどうかを制御する。このように、停止制御装置８は、マルチサイクル命令に応答してパイプライン４の１以上のステージを停止する。
【００１０】
プロセッサ２にサポートされたマルチサイクル命令の例は、プッシュポップマルチプル機械命令、リンク命令、およびアンリンク命令を含む。プッシュポップマルチプル命令は、プロセッサ２に、１からＮ個のデータ・レジスタおよび／またはポインタ・レジスタをプッシュまたはポップすることを命令する。プッシュポップマルチプルは、アクセスされているレジスタの数と等しい複数のクロック・サイクル間、デコード・ステージ内で停止されたままである。下記は、プッシュ・マルチプル機械命令の一例を示す。
【００１１】
［−−ｓｐ］＝（ｒ７−ｒ４，ｐ５−ｐ０）
この例において、単一の機械命令は、プロセッサ２に、４個のデータ・レジスタ（ｒ４からｒ７）および６個のポインタ・レジスタ（ｐ０からｐ５）をプッシュすることを命令する。一般に、少なくとも１個のレジスタが指定される限り、単一の機械命令は、０以上のデータ・レジスタ、および０以上のポインタ・レジスタを指定する。
【００１２】
図３は、マルチプル・レジスタをスタック上にプッシュするための、ＭＣＩ制御装置５内の状態マシンの状態図３０の一例を示す。以下で記述されるように、ＭＣＩ制御装置５は、１個以上のレジスタをプッシュするために、プッシュ・マルチプル命令に応答して状態図３０に従って動作する。状態図３０に従って動作している間、ＭＣＩ制御装置５は、ＰＵＳＨ＿ＤＲＥＧ信号を含む１以上のＭＣＩ信号７を表明し、それが、デコーダ１２に、データ・レジスタのプッシュを送り出すためのパイプライン制御信号を生成することを命令し、そして、ＰＵＳＨ＿ＰＲＥＧ信号は、デコーダ１２に、ポインタ・レジスタのプッシュを送り出すためのパイプライン制御信号を生成することを命令する。さらに、ＭＣＩ制御装置５は、そのカウントがどのデータ・レジスタをプッシュすべきかを示すカウンタを初期化するＤ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号、または、そのカウントがどのポインタ・レジスタをプッシュすべきかを示すカウンタを初期化するＰ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号を表明する。ＭＣＩ制御装置５はまた、停止制御装置５に、後続のクロック・サイクルでパイプライン４を停止するように命令するＭＣＩ＿ＰＲＥＳＴＡＬＬ信号を表明する。
【００１３】
下記の表は、ＭＣＩ制御装置５内のプッシュ・マルチプル・状態マシンをある状態から他の状態へ遷移させる条件、および表明された対応出力信号を要約したものであるが、ここで、Ｄはプッシュされるべきデータ・レジスタを示す命令ビットであり、Ｐはプッシュされるべきポインタ・レジスタを示す命令ビットであり、ＤＲはプッシュすべき開始データ・レジスタを示す命令フィールドであり、ＰＲはプッシュすべき開始ポインタ・レジスタを示す命令フィールドであり、Ｄ＿ＴＡＧは、プッシュされている現在のデータ・レジスタを表わし、Ｐ＿ＴＡＧは、プッシュされている現在のポインタ・レジスタを表わし、ＤＭＡＸは利用可能なデータ・レジスタの領域内で最大のデータ・レジスタを表わし、ＰＭＡＸは利用可能なポインタ・レジスタの領域内で最大のポインタ・レジスタを表わす。
【００１４】
【表１】
2004515857.tif 000003
【００１５】
最初に、命令が、フェッチ・ユニット１１によってフェッチされ、かつデコード・ユニット１２によってデコードされるまで、ＭＣＩ制御装置５はＷＡＩＴ状態内でスタートする。命令がプッシュポップマルチプル命令でない場合、ＭＣＩ制御装置５は、経路３４Ａで示されるようにＷＡＩＴ状態に戻る。
【００１６】
命令がプッシュポップマルチプル命令であるが、単にプロセッサ２に単一のデータ・レジスタをプッシュすることを命じる場合、状態マシンはＰＵＳＨ＿ＤＲＥＧ信号を表明し、経路３４Ｂを経由してＷＡＩＴ状態に戻る。命令が、プロセッサ２に単一のポインタ・レジスタをプッシュすることを命じるプッシュポップマルチプル命令である場合、状態マシンはＰＵＳＨ＿ＰＲＥＧ信号を表明し、経路３４Ｃを経由してＷＡＩＴ状態に戻る。
【００１７】
命令が、２個のデータ・レジスタまたは２個のポインタ・レジスタをプッシュすることを指定する場合、状態マシンは、状態３２Ａまたは状態３２Ｃへそれぞれ状態を変える。状態マシンは、経路３４Ｄまたは３４Ｆを経由してこれらの状態を遷移し、状態３２Ａに遷移する間にＰＵＳＨ＿ＤＲＥＧ信号を、あるいは状態３２Ｃへ遷移する間にＰＵＳＨ＿ＰＲＥＧ信号を表明する。さらに、経路３４Ｄに沿って遷移する間に、状態マシンは、どのデータ・レジスタをプッシュすべきかを示すカウンタを初期化するＤ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号を表明する。同様に、経路３４Ｆに沿って遷移する間に、状態マシンは、どのポインタ・レジスタをプッシュすべきかを示すカウンタを初期化するＰ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号を表明する。
【００１８】
状態マシンは、状態３２Ａから経路３４Ｅを経由してＷＡＩＴ状態に戻る。この遷移の間に、ＭＣＩ制御装置５は、再びＰＵＳＨ＿ＤＲＥＧを表明するとともにＤ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴを非表明（ｄｅａｓｓｅｒｔ）し、デコード・ユニット１２に他のデータ・レジスタのプッシュを送り出させる。同様に、状態マシンは、状態３２Ｃから経路３４Ｇを経由してＷＡＩＴ状態に戻る。この遷移の間に、ＭＣＩ制御装置５は、ＰＵＳＨ＿ＰＲＥＧを表明するとともにＰ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴを非表明し、実行ユニット１５に他のポインタ・レジスタをプッシュさせる。
【００１９】
３個以上のデータ・レジスタのプッシュを送り出すことを命令デコード・ユニット１２に要求するプッシュ・ポップ・マルチプル命令のために、状態マシンは、ＷＡＩＴ状態から経路３４Ｈを経由して状態３２Ｂへ遷移する。遷移の間に、ＭＣＩ制御装置８は、ＰＵＳＨ＿ＤＲＥＧ信号を表明するとともにＤ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴを表明し、実行ユニット１５に第１データ・レジスタをプッシュさせる。さらに、ＭＣＩ制御装置５は、停止制御装置８に、次のクロックでパイプライン４の１以上のステージを停止させる、ＭＣＩ＿ＰＲＥＳＴＡＬＬ信号を表明する。例えば、ある実施例において、停止制御装置８は、パイプライン４のデコード・ステージを停止するためにＳＴＡＬＬ＿ＤＥＣを表明する。一旦状態３２Ｂに入ると、ＭＣＩ制御装置５は、２個のレジスタがプッシュされる状態になるまで、データ・レジスタをプッシュし続ける。例えば、命令が、プッシュされるべき６個のデータ・レジスタを要求した場合、ＭＣＩ制御装置５は経路３４Ｉを３度周回して、プッシュされるべき現在のデータ・レジスタが、利用可能なデータ・レジスタの最大数（ＤＭＡＸ）マイナス１と等しくなる、すなわち、２個のデータ・レジスタがプッシュされる状態になるまで、毎回データ・レジスタをプッシュする。
【００２０】
経路３４Ｉを周回する間、ＭＣＩ制御装置５は、ＰＵＳ−ＲＥＧ信号、Ｄ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号、およびＭＣＩ＿ＰＲＥＳＴＡＬＬ信号を表明する。２個のデータ・レジスタがプッシュされる状態であるとき、ＭＣＩ制御装置５は、残りのデータ・レジスタのうちの１個をプッシュしている間に、経路３４Ｏを経由して状態３２Ａに遷移する。この遷移の間に、ＭＣＩ制御装置５はＭＣＩ＿ＰＲＥＳＴＡＬＬを非表明する。ＭＣＩ制御装置５が経路３４Ｅを横断し、かつ、残りのデータ・レジスタをプッシュした後、命令デコーダ１２は、サイクル上で新しい命令を受け取る。
【００２１】
同様に、命令デコード・ユニット１２に対して、３個以上のポインタ・レジスタのプッシュを送り出すことを要求するプッシュポップマルチプル命令のために、状態マシンは、ＷＡＩＴ状態から経路３４Ｊを経由して状態３２Ｄへ遷移する。遷移中に、ＭＣＩ制御装置８はＰＵＳＨ＿ＰＲＥＧ信号を表明し、Ｐ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴを表明し、実行ユニット１５に第１ポインタ・レジスタをプッシュさせる。さらに、ＭＣＩ制御装置５は、ＭＣＩ＿ＰＲＥＳＴＡＬＬ信号を表明し、停止制御装置８にパイプライン４の１以上のステージを停止させる。状態３２Ｄにおいて、ＭＣＩ制御装置５は、２個のポインタ・レジスタがプッシュされるまで、経路３４Ｎを周回することにより、ポインタ・レジスタをプッシュする。経路３４Ｎを周回中に、ＭＣＩ制御装置５はＰＵＳＨ＿ＤＲＥＧ信号、Ｄ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号、およびＭＣＩ＿ＰＲＥＳＴＡＬＬ信号を表明する。一旦２個のデータ・レジスタがプッシュされると、ＭＣＩ制御装置５は、ポインタ・レジスタをプッシュしている間に経路３４Ｋを経由して状態３２Ｃへ遷移する。この遷移中に、ＭＣＩ制御装置５はＭＣＩ＿ＰＲＥＳＴＡＬＬを非表明する。このように、ＭＣＩ制御装置５が経路３４Ｇを経由してＷＡＩＴ状態へ遷移し、かつ、残りのポインタ・レジスタをプッシュした後、パイプライン４は、次のクロック・サイクルで動作を再開する。
【００２２】
上記の相関関係に加えて、プッシュポップマルチプル命令は、マルチプル・データ・レジスタおよびマルチプル・ポインタ・レジスタを指定することがある。一般に、状態マシン３０は、データ・レジスタを最初にプッシュし、その後にポインタ・レジスタが続くように設計されるが、本発明はそれに制限されるものではない。
【００２３】
プッシュすべき単一のデータ・レジスタおよび単一のポインタ・レジスタを指定するプッシュ・マルチプル命令のために、ＭＣＩ制御装置５は経路３４Ｆ’を経由して状態３２Ｃに遷移し、データ・レジスタをプッシュするためにＰＵＳＨ＿ＤＲＥＧ信号を表明する。次に、ＭＣＩ制御装置５は経路３４Ｇを経由してＷＡＩＴ状態に遷移して戻り、ポインタ・レジスタをプッシュする。
【００２４】
プッシュすべき１個のデータ・レジスタ、および１個以上のポインタ・レジスタを指定するプッシュ・マルチプルのために、ＭＣＩ制御装置５は経路３４Ｊ’を経由して状態３２Ｄに遷移し、ＰＵＳＨ＿ＤＲＥＧ信号、Ｄ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号、およびＭＣＩ＿ＰＲＥＳＴＡＬＬ信号を表明してデータ・レジスタをプッシュする。次に、ＭＣＩ制御装置５は、経路３４Ｎを周回することによってポインタ・レジスタのうちの２個以外の全てをプッシュし、経路３４Ｋを横断することによってポインタ・レジスタをプッシュし、最後のポインタ・レジスタをプッシュし、そして経路３４Ｇを横断することによってＷＡＩＴ状態に戻る。
【００２５】
最後に、プッシュすべきマルチプル・データ・レジスタおよび少なくとも１個のポインタ・レジスタを指定するプッシュポップマルチプル命令のために、ＭＣＩ制御装置５は経路３４Ｈ’を経由して状態３２Ｂへ遷移し、ＰＵＳＨ＿ＤＲＥＧ信号、Ｄ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号、およびＭＣＩ＿ＰＲＥＳＴＡＬＬ信号を表明して第１データ・レジスタをプッシュする。次に、ＭＣＩ制御装置５は、経路３４Ｉを周回することによってデータ・レジスタのうちの１個以外のすべてをプッシュする。命令が、プッシュされる単一のポインタ・レジスタを指定する場合、ＭＣＩ制御装置５は、経路３４Ｍを横断することによって最終データ・レジスタをプッシュし、経路３４Ｇを横断することによって単一のポインタ・レジスタをプッシュする。別の方法では、ＭＣＩ制御装置５は、経路３４Ｌを横断することによって最終データ・レジスタをプッシュし、必要ならば経路３４Ｎを周回することによってマルチプル・ポインタ・レジスタをプッシュし、３４Ｋおよび３４Ｇがその後に続く。
【００２６】
図４は、マルチプル・レジスタをスタックからポップするための、ＭＣＩ制御装置５内の状態マシンの状態図４０の一例を示す。ＭＣＩ制御装置５は、メモリ内のスタックからポップされるべき１個以上のレジスタを指定するプッシュポップマルチプル命令に応答して状態図４０に従って動作する。状態図４０に従って動作している間、ＭＣＩ制御装置５は、ＰＯＰ＿ＤＲＥＧ信号を含む１以上のＭＣＩ信号７を表明し、それが、パイプライン４に、データ・レジスタをポップすることを命令し、そして、ＰＯＰ＿ＰＲＥＧ信号は、パイプライン４に、ポインタ・レジスタをポップすることを命令する。さらに、ＭＣＩ制御装置５は、どのデータ・レジスタをポップすべきかを示すカウンタを初期化するＤ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号、または、どのポインタ・レジスタをポップすべきかを示すカウンタを初期化するＰ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号を表明する。ＭＣＩ制御装置５はまた、後続のクロック・サイクルでパイプライン４を停止するためのＭＣＩ＿ＰＲＥＳＴＡＬＬ信号を表明する。
【００２７】
下記の表は、ＭＣＩ制御装置５を状態図４０の状態間を遷移させる条件、および表明された対応出力信号を要約したものであるが、ここで、Ｄはポップされるべきデータ・レジスタを示す命令ビットであり、Ｐはポップされるべきポインタ・レジスタを示す命令ビットであり、ＤＲはスタックからポップすべき最終データ・レジスタを示す命令フィールドであり、ＰＲはスタックからポップすべき最終ポインタ・レジスタを示す命令フィールドであり、Ｄ＿ＴＡＧは、ポップされている現在のデータ・レジスタを表わし、Ｐ＿ＴＡＧは、ポップされている現在のポインタ・レジスタを表わし、ＤＭＡＸは利用可能なデータ・レジスタの領域内で最大のデータ・レジスタを表わし、ＰＭＡＸは利用可能なポインタ・レジスタの領域内で最大のポインタ・レジスタを表わす。
【００２８】
【表２】
2004515857.tif 000004
【００２９】
最初に、命令がフェッチ・ユニット１１によってフェッチされ、デコード・ユニット１２によってデコードされるまで、ＭＣＩ制御装置５はＷＡＩＴ状態でスタートする。命令がプッシュポップマルチプル命令でない場合、ＭＣＩ制御装置５は、経路４４Ａによって示されるようにＷＡＩＴ状態へ戻る。
【００３０】
命令が、プロセッサ２に単一のポインタ・レジスタをポップし、かつデータ・レジスタをポップしないことを命じるプッシュポップマルチプル命令である場合、ＭＣＩ制御装置５はＰＯＰ＿ＤＲＥＧ信号を表明し、経路４４Ｂを経由してＷＡＩＴ状態に戻る。命令が、ポップ・マルチプル命令であり、かつプロセッサ２に単一のデータ・レジスタをポップすることを命じる場合、ＭＣＩ制御装置５はＰＯＰ＿ＤＲＥＧ信号を表明し、経路４４Ｃを経由してＷＡＩＴ状態に戻る。
【００３１】
命令が、ポップすべき２個のポインタ・レジスタまたはデータ・ポインタ・レジスタを指定する場合、ＭＣＩ制御装置５は、経路４４Ｄまたは４４Ｆを経由して状態４２Ａまたは状態４２Ｃへそれぞれ状態を変える。ＭＣＩ制御装置５は、状態４２Ａへ遷移する間にＰＯＰ＿ＰＲＥＧ信号を、あるいは状態４２Ｃへ遷移する間にＰＯＰ＿ＤＲＥＧ信号を表明する。さらに、経路４４Ｄに沿って遷移する間に、ＭＣＩ制御装置５は、そのカウントがどのポインタ・レジスタをポップすべきかを示すカウンタを初期化するＰ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号を表明する。同様に、経路４４Ｆに沿って遷移する間に、ＭＣＩ制御装置５は、そのポイントがどのデータ・レジスタをポップすべきかを示すカウンタを初期化するＤ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号を表明する。
【００３２】
２個のポインタ・レジスタの１番目をポップした後、ＭＣＩ制御装置５は、状態４２Ａから経路４４Ｅを経由してＷＡＩＴ状態に戻る。この遷移の間に、ＭＣＩ制御装置５は、再びＰＯＰ＿ＰＲＥＧを表明するとともにＰ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴを非表明し、実行ユニット１５に他のポインタ・レジスタをポップさせる。同様に、２個のデータレジスタの１番目をポップした後、ＭＣＩ制御装置５は、状態４２Ｃから経路４４Ｇを経由してＷＡＩＴ状態に戻る。この遷移の間に、ＭＣＩ制御装置５は、ＰＯＰ＿ＤＲＥＧを表明するとともにＤ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴを非表明し、実行ユニット１５に他のデータ・レジスタをポップさせる。
【００３３】
３個以上のポインタ・レジスタのポップを送り出すことを命令デコード・ユニット１２に要求するポップ・マルチプル命令のために、ＭＣＩ制御装置５は、ＷＡＩＴ状態から経路４４Ｈを経由して状態４２Ｂへ遷移する。この遷移の間に、ＭＣＩ制御装置８は、ＰＯＰ＿ＰＲＥＧ信号を表明するとともにＰ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴを表明し、実行ユニット１５に第１ポインタ・レジスタをポップさせる。さらに、ＭＣＩ制御装置５はＭＣＩ＿ＰＲＥＳＴＡＬＬ信号を表明して、停止制御装置８に、次のクロックでパイプライン４の１以上のステージを停止させる。一旦状態４２Ｂに入ると、ＭＣＩ制御装置５は、２個のポインタ・レジスタのみがポップされる状態になるまで、ポインタ・レジスタをポップし続ける。例えば、命令が、プッシュされるべき６個のポインタ・レジスタを要求した場合、ＭＣＩ制御装置５は経路４４Ｉを３度周回して、ポップされるべき現在のポインタ・レジスタが、利用可能なポインタ・レジスタの最大数（ＰＭＡＸ）マイナス１と等しくなる、すなわち、２個のポインタ・レジスタがポップされる状態になるまで、毎回ポインタ・レジスタをポップする。
【００３４】
経路４４Ｉを周回する間、ＭＣＩ制御装置５は、ＰＯＰ−ＰＲＥＧ信号、Ｐ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号、およびＭＣＩ＿ＰＲＥＳＴＡＬＬ信号を表明する。２個のポインタ・レジスタがポップされた状態であるとき、ＭＣＩ制御装置５は、残りのポインタ・レジスタのうちの１個をポップしている間に、経路４４Ｏを経由して状態４２Ａに遷移する。この遷移の間に、ＭＣＩ制御装置５はＭＣＩ＿ＰＲＥＳＴＡＬＬを非表明する。ＭＣＩ制御装置５が経路４４Ｅを横断し、かつ、残りのポインタ・レジスタをポップした後、命令デコーダ１２は、サイクル上で新たな命令を受け取る。
【００３５】
同様に、命令デコード・ユニット１２に対して、３個以上のデータ・レジスタのポップを送出し、かつポインタ・レジスタを送出しないことを要求するプッシュポップマルチプル命令のために、ＭＣＩ制御装置５は、ＷＡＩＴ状態から経路４４Ｊを経由して状態４２Ｄへ遷移する。遷移中に、ＭＣＩ制御装置８はＰＯＰ＿ＤＲＥＧ信号を表明し、Ｄ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴを表明し、実行ユニット１５に第１ポインタ・レジスタをポップさせる。さらに、ＭＣＩ制御装置５は、ＭＣＩ＿ＰＲＥＳＴＡＬＬ信号を表明し、停止制御装置８にパイプライン４の１以上のステージを停止させる。状態４２Ｄにおいて、ＭＣＩ制御装置５は、２個のデータ・レジスタがポップされるまで、経路４４Ｎを周回することにより、データ・レジスタをポップする。経路４４Ｎを周回中に、ＭＣＩ制御装置５はＰＯＰ＿ＤＲＥＧ信号、Ｄ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号、およびＭＣＩ＿ＰＲＥＳＴＡＬＬ信号を表明する。一旦２個のデータ・レジスタがポップされると、ＭＣＩ制御装置５は、データ・レジスタをポップしている間に経路４４Ｋを経由して状態４２Ｃへ遷移する。この遷移中に、ＭＣＩ制御装置５はＭＣＩ＿ＰＲＥＳＴＡＬＬを非表明する。このように、ＭＣＩ制御装置５が経路４４Ｇを経由してＷＡＩＴ状態へ遷移し、残りのデータ・レジスタをポップする。
【００３６】
上記の相関関係に加えて、プッシュポップマルチプル命令は、ポップすべきマルチプル・データ・レジスタおよびマルチプル・ポインタ・レジスタを指定することがある。一般に、状態マシン３０は、ポップ・レジスタを最初にポップし、その後にデータ・レジスタが続くように設計されるが、本発明はこれに制限されるものではない。
【００３７】
ポップすべき単一のポインタ・レジスタおよび単一のデータ・レジスタを指定するプッシュポップマルチプル命令のために、ＭＣＩ制御装置５は経路４４Ｆ’を経由して状態４２Ｃに遷移し、ＰＯＰ＿ＰＲＥＧ信号を表明してポインタ・レジスタをポップする。次に、ＭＣＩ制御装置５は経路４４Ｇを経由してＷＡＩＴ状態に戻り、ＰＯＰ＿ＤＲＥＧ信号を表明し、データ・レジスタをポップする。
【００３８】
ポップすべき１個のポインタ・レジスタ、および１個以上のデータ・レジスタを指定するプッシュポップマルチプル命令のために、ＭＣＩ制御装置５は経路４４Ｊ’を経由して状態４２Ｄに遷移し、ＰＯＰ＿ＰＲＥＧ信号、Ｐ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号、およびＭＣＩ＿ＰＲＥＳＴＡＬＬ信号を表明してポインタ・レジスタをポップする。次に、ＭＣＩ制御装置５は、経路４４Ｎを周回することによってデータ・レジスタのうちの２個以外の全てをポップし、経路４４Ｋを横断することによってデータ・レジスタをポップし、最後のデータ・レジスタをポップし、そして経路４４Ｇを横断することによってＷＡＩＴ状態に戻る。
【００３９】
最後に、ポップすべきマルチプル・ポインタ・レジスタおよび少なくとも１個のデータ・レジスタを指定するポップ・マルチプルのために、ＭＣＩ制御装置５は経路４４Ｈ’を経由して状態４２Ｂへ遷移し、ＰＯＰ＿ＰＲＥＧ信号、Ｐ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ信号を表明して第１ポインタ・レジスタをプッシュする。次に、ＭＣＩ制御装置５は、経路４４Ｉを周回することによってポインタ・レジスタのうちの１個以外のすべてをポップする。命令が、ポップされる単一のデータ・レジスタを指定する場合、ＭＣＩ制御装置５は、経路４４Ｍを横断することによって最終ポインタ・レジスタをポップし、経路４４Ｇを横断することによって単一のデータ・レジスタをポップする。別の方法では、ＭＣＩ制御装置５は、経路４４Ｌを横断することによって最終ポインタ・レジスタをポップし、必要ならば経路４４Ｎを周回することによってマルチプル・データ・レジスタをポップし、４４Ｋおよび４４Ｇがその後に続く。
【００４０】
本発明に従って、パイプライン方式のプロセッサ２にマルチプル動作を実行させることを指示する命令の追加例として、リンク命令およびアンリンク命令がある。リンク命令は、典型的にはサブルーチンを呼び出すときに使用され、命令によって指定されるように、パイプライン・プロセッサ４に、サブルーチンのための復帰アドレスをスタック上にプッシュさせ、フレーム・ポインタをスタック上にプッシュさせ、スタック・ポインタをフレーム・ポインタに移動させ、サブルーチンのためのフレーム・サイズに基づいてスタック・ポインタを更新させる。アンリンク命令は、サブルーチンを終了するときに使用され、パイプライン方式のプロセッサ２に、スタックから復帰アドレスを復元させ、スタック・ポインタを復元させ、スタックからフレーム・ポインタを復元させる。
【００４１】
以下の例は、リンクおよびアンリンク命令を示すものである。
【００４２】
ｌｉｎｋ １２３４；
ｕｎｌｉｎｋ；
図５は、リンク・コマンドの動作の実行のためのＭＣＩ制御装置５内の状態マシンの状態図５０の例を示す。ステージ・ダイヤグラム５０に従って動作している間、ＭＣＩ制御装置５は、パイプライン４に対応する動作を実行することを命令する、１以上のＭＣＩ信号を表明する。さらに、ＭＣＩ制御装置５は、パイプライン４を停止するＭＣＩ＿ＰＲＥＳＴＡＬＬ信号を表明する。
【００４３】
次のテーブルは、ＭＣＩ制御装置５が状態マシン５０を通って遷移している間に表明される出力信号の概要である。
【００４４】
【表３】
2004515857.tif 000005
【００４５】
現在の命令がリンク・コマンドでない場合、状態マシンは、ＭＣＩ制御装置５に、経路５４Ａを経由してＷＡＩＴ状態に戻ることを命令する。命令がリンク命令である場合、ＭＣＩ制御装置５は、経路５４Ｂを経由してステージ５２Ｂへ遷移してＰＵＳＨ＿ＲＴＳ信号を表明し、デコード・ユニット１２に、スタック上の復帰アドレスのプッシュを送出させる。さらに、ＭＣＩ制御装置５は、ＭＣＩ＿ＰＲＥＳＴＡＬＬを表明し、後続のサイクルでパイプライン４を停止する。
【００４６】
次に、ＭＣＩ制御装置５は、経路５４Ｃを経由して状態５２Ｃへを遷移し、ＰＵＳＨ＿ＦＰを表明し、そして、デコード・ユニット１２に、スタック上へフレーム・ポインタ・レジスタのプッシュを送出させるとともに、後続のサイクルでＭＣＩ＿ＰＲＥＳＴＡＬＬを表明してパイプライン４を停止させる。そして、ＭＣＩ制御装置５は、経路５４Ｄを経由して状態５２Ｄへ遷移してＭＯＶＥ＿ＳＰ＿ＴＯ＿ＦＰを表明し、命令デコード・ユニット１２に、スタック・ポインタ・レジスタのコンテンツの動きをフレーム・ポインタ・レジスタへ送出させる。最後に、ＭＣＩ制御装置５は、経路５４Ｅを経由してＷＡＩＴ状態へ遷移し、ＵＰＤＡＴＥ＿ＳＰを表明し、命令によって指定されたように、命令デコード・ユニット１２に、スタック・ポインタからフレーム・サイズのサブトラクトを送出させる。
【００４７】
図６は、アンリンク・コマンドの動作を実行のためのＭＣＩ制御装置５内の状態マシンの状態図６０の一例を示す。以下の表は、ＭＣＩ制御装置５が状態マシン６０を通って遷移している間に表明される出力信号の概要である。
【００４８】
【表４】
2004515857.tif 000006
【００４９】
現在の命令がアンリンク・コマンドでない場合、状態マシン６０はＭＣＩ制御装置５に、経路６４Ａを経由してＷＡＩＴ状態に戻ることを命令する。命令がアンリンク命令である場合、ＭＣＩ制御装置５は、経路６４Ｂを経由してステージ６２Ｂへ遷移してＬＯＡＤ＿ＲＴＳ信号を表明し、命令デコード・ユニット１２に、スタックから取り出された復帰アドレスを生ぜしめる以下のような制御信号：ＲＥＴＳ＝［ＦＰ＋４］を表明させる。さらに、ＭＣＩ制御装置５はＭＣＩ＿ＰＲＥＳＴＡＬＬを表明し、後続のサイクルでパイプライン４を停止する。
【００５０】
次に、ＭＣＩ制御装置５は、経路６４Ｃを経由して６２Ｃへ遷移し、ＬＯＡＤ＿ＳＰを表明し、命令デコード・ユニット１２に、スタック・ポインタのセッティングを生ぜしめる以下のような制御信号：ＳＰ＝ＦＰ＋８を表明させる。
【００５１】
最後に、ＭＣＩ制御装置５は経路６４Ｄを経由してＷＡＩＴ状態へ遷移し、ＵＰＤＡＴＥ＿ＦＰを表明し、命令デコード・ユニット１２に、スタックからロードされるフレーム・ポインタを生ぜしめる次のよう制御信号：ＦＰ＝［ＦＰ］を表明させる。
【００５２】
図７は、停止制御装置８の一部分の実施例を示す概略図である。停止制御装置８は、ｓｔａｌｌ＿ｃｏｎｄｉｔｉｏｎ＿１からｓｔａｌｌ＿ｃｏｎｄｉｔｉｏｎ＿８のような複数の入力信号を受け取り、それぞれの停止条件が検出されたときにそれが表明される。これらの入力信号は、あくまで例示目的のためのものであり、例えば、停止制御装置８は、パイプライン４の多様なステージのためのいかなる数の異なる停止条件でも受け取ることができる。
【００５３】
入力停止条件信号に応答して、停止制御装置８は、停止信号９を生成してパイプライン４を停止する。停止制御装置８は複数の停止信号９を生成するが、それはパイプライン４のステージに応答する。例えば、ｓｔａｌｌ＿ｃｏｎｄｉｔｉｏｎ＿１またはｓｔａｌｌ＿ｃｏｎｄｉｔｉｏｎ＿２のいずれかが表明され、かつ、プロセッサ２がリセットされていないとき、停止制御装置８はｓｔａｌｌ＿ｗｂ出力信号を表明し、パイプライン４のＷＢステージ内に停止が生じる。特に、ｓｔａｌｌ＿ｗｂ出力信号は、ｓｔａｌｌ＿ｅｘ出力信号のようなパイプライン４のより早いステージのための停止出力信号を生成するために使用される。より詳しくは、ｓｔａｌｌ＿ｃｏｎｄｉｔｉｏｎ＿３、ｓｔａｌｌ＿ｃｏｎｄｉｔｉｏｎ＿４、またはｓｔａｌｌ＿ｗｂが表明され、プロセッサ２がリセットされていないとき、停止制御装置８がｓｔａｌｌ＿ｅｘ出力信号を表明する。このように、ＷＢステージ内の停止は、ＥＸステージ内の停止を強要する。停止制御装置８は、パイプライン４のより遅いステージ内の停止と同じく独立したハザード条件に基づいて、ｓｔａｌｌ＿ａｃおよびｓｔａｌｌ＿ｄｅｃ信号を同様に生成する。
【００５４】
デコード・ステージを停止させる条件が発生するとき、停止制御装置８はｓｔａｌｌ＿ｄｅｃ＿ｍｃｉ信号を表明し、それがＭＣＩ制御装置５を停止させる。より詳しくは、ｓｔａｌｌ＿ｄｅｃ＿ｍｃｉが表明されるとき、ＭＣＩ制御装置５は現在の状態から遷移しない。
【００５５】
停止制御装置８の停止タイミング回路７２は、ＭＣＩ制御装置５からＭＣＩ＿ＰＲＥＳＴＡＬＬ信号を受け取り、これに応答して、ＭＣＩ＿ＳＴＡＬＬ信号を表明する。ＯＲゲート７０は、停止タイミング回路７２によって提供されるＭＣＩ＿ＳＴＡＬＬ信号を受け取り、ＳＴＡＬＬ＿ＤＥＣ信号を表明し、それによって、デコード・ステージおよびパイプライン４のより早いステージを停止する。
【００５６】
図８は、パイプライン４の性能を増加させるために、パイプライン４のデコード・ステージに優先して、停止制御装置８がＭＣＩ命令の検出を利用できることを説明するタイミング図である。一実施例において、パイプライン４のＩＦステージ内の事前デコーダは、デコード・ステージよりも１つ早いステージでＭＣＩ命令をデコードする。ＭＣＩの命令が事前にデコードされる場合、事前デコーダがＭＣＩ＿ＰＲＥＤＥＣＯＤＥ信号を表明する。次のクロックで、ＭＣＩの命令がデコード・ステージに移るとき、ＭＣＩ＿ＳＴＡＬＬ＿１ＳＴ＿ＣＹＣＬＥ信号が表明されるが、それはＭＣＩ＿ＰＲＥＤＥＣＯＤＥ信号のフロップ・バージョンである。ＳＴＡＬＬ制御装置５は、ＭＣＩ＿ＳＴＡＬＬ＿ＦＩＲＳＴ＿ＣＹＣＬＥ信号およびＭＣＩ＿ＳＴＡＬＬ＿ＲＥＭＡＩＮＤＥＲ信号がＯＲになることに基づいてＭＣＩ＿ＳＴＡＬＬ信号を提供する。ＭＣＩ＿ＳＴＡＬＬ＿ＲＥＭＡＩＮＤＥＲ信号は、以上で記述されたように、ＭＣＩ制御装置５の状態ロジックによって制御されるＭＣＩ＿ＰＲＥＳＴＡＬＬのフロップ・バージョンである。
【００５７】
図９は、事前デコーダから受け取られたＭＣＩ＿ＰＲＥＤＥＣＯＤＥ信号、およびＭＣＩ制御装置５から受け取られたＭＣＩ＿ＰＲＥＳＴＡＬＬ信号から、ＭＣＩ＿ＳＴＡＬＬを生成するための停止タイミング回路７２の一例の概略図である。ＭＣＩの命令がデコード・ステージ内に存在する最初のサイクル中に、ＭＣＩ＿ＰＲＥＤＥＣＯＤＥのプロップ・バージョンが表明され、かつ現在のＭＣＩが実行されていないときに、ＯＲゲート９２はＭＣＩ＿ＳＴＡＬＬを表明する。１以上の停止サイクルを必要とするＭＣＩの命令のために、停止タイミング回路７２は、ＭＣＩ制御装置５から受け取られたＭＣＩ＿ＰＲＥＳＴＡＬＬ信号に基づいて、残りの停止サイクルを生成する。
【００５８】
図１０は、プッシュあるいはポップされる現在のデータ・レジスタを表わすデータ・レジスタ値（Ｄ＿ＴＡＧ）を生成するためのデータ・レジスタ・アドレス生成回路１００の一例の概略図である。Ｄ＿ＴＡＧは、データ・レジスタの範囲を示すことができる、３つのデータ線のような複数のデータ線を含む。
【００５９】
プッシュ動作のために、回路１００は、開始データ・レジスタから最大のデータ・レジスタへカウント・アップする。ポップ動作のために、回路１００は、レジスタの範囲を通って最終データ・レジスタへカウント・ダウンする。より詳しくは、最初のサイクルで、マルチプレクサ１０２は、データ・レジスタ５番のように、最大のデータ・レジスタ（ＤＭＡＸ）または命令フィールド（ＤＲ）からの開始データ・レジスタのいずれかを選択するが、それは、プッシュ動作のためには表明され、ポップ動作のためには非表明されるＰＰＭ＿ＳＥＬＥＣＴが、いずれを選択するかに基づいて行われる。
【００６０】
ＭＣＩ制御装置５によって提供されるＤ＿ＲＥＧ＿ＰＲＥＳＥＬＥＣＴ出力信号によって、マルチプレクサ１０４は、ＭＣＩの命令の最初のサイクルの間にマルチプレクサ１０２の出力を、また、残りのサイクルの間に記憶回路１０８の出力を選択することができる。マルチプレクサ１０４の出力であるＤ＿ＴＡＧは、ＰＰＭ＿ＳＥＬＥＣＴに依存して加算器１０６によって増加また減少され、記憶回路１０８にフィード・バックされる。出力信号Ｄ＿ＴＡＧは、プッシュまたはポップ・レジスタのためのパイプライン４の命令デコード・ユニット１２に提供され、さらに、ＭＣＩ制御装置５の状態制御ロジックへの入力としてさらにフィード・バックされる。
【００６１】
図１１は、プッシュまたはポップされる現在のポインタ・レジスタを表わすポインタ・レジスタ値（Ｐ＿ＴＡＧ）を出力するためのポインタ・レジスタ・アドレス生成回路１１０の一例の概略図である。図１０の回路１００と同様に、回路１１０は、ポップ動作のためにはレジスタの範囲においてカウント・ダウンし、プッシュ動作のためには開始ポインタ・レジスタからカウント・アップする。
【００６２】
発明の多様な実施例が記述されてきた。例えば、出力リセット信号を実行パイプラインの少なくとも１つのステージに提供するリセット・ユニットを含むパイプライン方式のプロセッサについて記述された。リセット・ユニットは、割り当てられた優先順位を有するリセット・イベントとして、ハード・リセット、ソフト・リセット、およびエミュレーション・リセットのようなリセット要求を扱う。
【００６３】
プロセッサは、汎用計算機システム、ディジタル処理システム、ラップトップ・コンピュータ、パーソナル・デジタル情報処理端末（ＰＤＡ）、および携帯電話を含む多種多様なシステム内で実行することができる。このようなシステムでは、プロセッサは、オペレーティング・システムまたは他のソフトウェア・アプリケーションを格納することができる、フラッシュ・メモリ・デバイスまたはスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）のようなメモリ・デバイスに結合される。これらおよび他の実施例は添付の請求項の範囲内である。
【図面の簡単な説明】
【図１】本発明の実施例に従ったパイプライン方式のプログラム可能なプロセッサの一例を図示するブロック図である。
【図２】発明の実施例に従った実行パイプラインの一例を図示する概略図である。
【図３】マルチプル・レジスタをスタックへプッシュするための状態図の一例を図示する。
【図４】マルチプル・レジスタをスタックからポップ・オフするための状態図の一例を図示する。
【図５】リンク命令を実行するための状態図の一例を図示する。
【図６】アンリンク命令を実行するための状態図の一例を図示する。
【図７】停止制御装置の一実施例を図示する概略図である。
【図８】停止ジェネレータのためのタイミング図である。
【図９】マルチサイクル命令のための停止信号を生成する回路の一例の概略図である。
【図１０】アドレス生成回路の一例の概略図である。
【図１１】アドレス生成回路の一例の概略図である。
【図１】
2004515857.tif 000007
【図２】
2004515857.tif 000008
【図３】
2004515857.tif 000009
【図４】
2004515857.tif 000010
【図５】
2004515857.tif 000011
【図６】
2004515857.tif 000012
【図７】
2004515857.tif 000013
【図８】
2004515857.tif 000014
【図９】
2004515857.tif 000015
【図１０】
2004515857.tif 000016
【図１１】
2004515857.tif 000017
【国際公開パンフレット】
2004515857.tif 000018
2004515857.tif 000019
2004515857.tif 000020
2004515857.tif 000021
2004515857.tif 000022
2004515857.tif 000023
2004515857.tif 000024
2004515857.tif 000025
2004515857.tif 000026
2004515857.tif 000027
2004515857.tif 000028
2004515857.tif 000029
2004515857.tif 000030
2004515857.tif 000031
2004515857.tif 000032
2004515857.tif 000033
2004515857.tif 000034
2004515857.tif 000035
2004515857.tif 000036
2004515857.tif 000037
2004515857.tif 000038
2004515857.tif 000039
2004515857.tif 000040
2004515857.tif 000041
2004515857.tif 000042
2004515857.tif 000043
2004515857.tif 000044
2004515857.tif 000045
2004515857.tif 000046
2004515857.tif 000047
2004515857.tif 000048
2004515857.tif 000049
2004515857.tif 000050
2004515857.tif 000051
2004515857.tif 000052
2004515857.tif 000053
2004515857.tif 000054
2004515857.tif 000055
2004515857.tif 000056
2004515857.tif 000057
2004515857.tif 000058
2004515857.tif 000059
2004515857.tif 000060
2004515857.tif 000061
2004515857.tif 000062
2004515857.tif 000063
2004515857.tif 000064
2004515857.tif 000065
2004515857.tif 000066
2004515857.tif 000067
2004515857.tif 000068
2004515857.tif 000069
2004515857.tif 000070
2004515857.tif 000071
2004515857.tif 000072
2004515857.tif 000073
【国際公開パンフレット（コレクトバージョン）】
2004515857.tif 000074
【国際調査報告】
2004515857.tif 000075
2004515857.tif 000076
2004515857.tif 000077
2004515857.tif 000078
2004515857.tif 000079