(57)【特許請求の範囲】
【請求項１】
第１のクロックのサイクル中に、パイプライン方式のプロセッサ内のハザード条件を予め検出する段階と、
第２のクロック・サイクル中に、前記パイプラインのステージをそれぞれ特定する個別の信号を含む一組の停止信号を生成する段階と、
前記一組の停止信号に従って前記パイプラインの１またはそれ以上のステージを停止する段階であって、前記ハザード条件が前記パイプラインのステージＭで検出される場合、Ｍは正の整数であり、一組の停止信号を生成する前記段階はステージ１からステージＭ＋１を停止させる一組の停止信号を生成する段階を含み、ここでステージＭ＋１はステージＭの下流にある、段階と、
から成ることを特徴とする方法。
【請求項２】
多数のステージを有するパイプラインと、
停止制御装置と、を含む装置であって、
前記停止制御装置は、
第１のクロック・サイクル中にハザード条件を予め検出するために適合された条件検出回路、および
前記ハザード条件の前記パイプラインの上流または下流のステージをそれぞれ特定する個別の信号を含む一組の停止信号を生成するために適合した停止生成器であって、検出されたハザードに基づいて第２のクロック・サイクル中に、前のステージからの情報をステージに格納するのを防止しかつ命令の列の中に無動作命令を挿入しないで、前記パイプラインの１またはそれ以上の下流のステージを停止させる停止生成器、
から構成されることを特徴とする装置。
【請求項３】
フラッシュ・メモリ装置と、
前記フラッシュ・メモリ装置に結合されたプロセッサであって、前記プロセッサは複数ステージを有するパイプラインおよび停止制御装置を含む、プロセッサと、
からなる装置であって、前記停止制御装置は、
第１のクロック・サイクル中にハザード条件を予め検出するために適合された条件検出器、および、
前記ハザード条件の前記パイプラインの上流または下流のステージをそれぞれ特定する個別の信号を含む一組の停止信号を生成するために適合した停止生成器であって、検出されたハザードに基づいて第２のクロック・サイクル中に、前記ハザード条件が検出された１のステージおよび前記１のステージの下流の全てのステージを停止させることを含む前記パイプラインの１またはそれ以上の下流のステージを停止させる停止生成器、
から構成されることを特徴とするシステム。
【請求項４】
ハザード条件の予めの検出に応答してパイプライン方式のプロセッサ内で第１命令と第２命令との間にＮ個の停止サイクルを挿入するための装置であって、Ｎは正の整数であり、前記装置は、
前記第２命令がステージＭ内に存在し、かつ前記第１命令がステージＭ＋１とステージＭ＋Ｎとの間の任意のステージ内に存在するときには停止生成信号を、ここでＭは正の整数であり、および
前記第２命令がステージＭ＋１内に存在し、かつ前記第１命令がステージＭ＋２とＭ＋Ｎ＋１との間で停止されるときには停止保持信号を、ここでステージＭ＋１はステージＭの下流にあり、
表明するために適合された条件検出器、
から構成されることを特徴とする装置。
【請求項５】
複数のステージを有するパイプライン方式のプロセッサ内で第１命令と第２命令との間にＮ個の停止サイクルを挿入するための方法であって、
前記第２命令がステージＭ内に存在し、かつ前記第１命令がステージＭ＋１とステージＭ＋Ｎとの間の任意のステージ内に存在するときには、ハザード条件の予めの検出に応答して停止生成信号を表明する段階と、ここでＭおよびＮは正の整数であり、
前記第２命令がステージＭ＋１内に存在し、かつ前記第１命令がステージＭ＋２とＭ＋Ｎ＋１との間で停止されるときには停止保持信号を表明する段階と、ここでステージＭ＋１はステージＭの下流にあり、
前記停止生成信号および前記停止保持信号に応答して前記パイプラインの１またはそれ以上のステージを停止する段階と、
から成ることを特徴とする方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラム可能なプロセッサの停止に関する。
【０００２】
【従来の技術】
「パイプライン方式（ｐｉｐｅｌｉｎｉｎｇ）」は、デジタル信号プロセッサのような従来のプログラム可能なプロセッサ内で使用される技術であり、そこにおける命令は、全体的な処理速度を増加させるために実行中にオーバーラップされる。パイプライン方式のプロセッサは、典型的には多くのステージ内で命令を処理する。命令は、システム・クロックに従って、１つのステージから次のステージへ移るが、それは典型的にはパイプライン内の最も遅いステージによって決定されるクロック・レートを有する。
【０００３】
命令を処理している間に、「ハザード（ｈａｚａｒｄｓ）」と呼ばれる状態が、命令ストリームにおける次の命令の実行を妨げることがある。例えば、命令が、パイプラインから終了しなかった先行命令の結果に依存するときに、データ・ハザードが発生する。したがって、ハザードは、パイプラインを「停止（ｓｔａｌｌ）」させ、かつ、パイプラインの性能を低下させる原因となる。
【０００４】
１つの一般的な解決法は、パイプライン・インタロックと呼ばれるハードウェアを追加することであり、これがハザードを検出し、ハザードが解消するまでパイプラインを停止する。典型的には、パイプライン・インタロックは、一般に「ＮＯＰ」と呼ばれる特殊な命令を挿入することによってパイプラインを停止するのであるが、その命令は、パイプラインからのオペレーションを要求しないが、命令ストリーム内のスロットを消費する。
【０００５】
【詳細な説明】
図１は、実行パイプライン４および制御ユニット６を有するプログラム可能なプロセッサ２を示すブロック図である。制御ユニット６は、パイプライン４を介して命令およびデータのフローを制御する。例えば、命令の処理中に、制御ユニット６は、命令をデコードするためにパイプラインの多様なコンポーネントに指示を与え、かつ、例えば結果をメモリに書き戻すような動作を含む応答動作を正確に実行する。
【０００６】
命令は、パイプライン４の第１ステージにロードされ、後続のステージを通って処理される。各ステージは、他のステージと同期して処理を行う。データは、システム・クロックに従って、パイプライン４内のステージの間を通過する。命令の結果は、間断なくパイプライン４の終端に現れる。
【０００７】
停止制御装置８は、ハザード条件を検出し、１またはそれ以上の停止信号を表明（ａｓｓｅｒｔ）してパイプライン４を停止する。以下に記述されるように、停止制御装置８は、システム・クロック９に従って停止信号を同期して生成する。
【０００８】
図２は、本発明に従ってパイプライン４の一例を図示する。パイプライン４は、例えば、命令フェッチ（ＩＦ）、命令デコード（ＤＥＣ）、アドレス計算（ＡＣ）、実行（ＥＸ）、およびライト・バック（ＷＢ）という５つのステージを有する。命令は、フェッチ・ユニット１１によって第１ステージ（ＩＦ）中に、例えばメイン・メモリまたは命令キャッシュのようなメモリ・デバイスからフェッチされ、命令デコード・ユニット１２によって第２ステージ（ＤＥＣ）中にデコードされる。次のクロック・サイクルで、その結果が第３ステージ（ＡＣ）に渡され、そこで、データ・アドレス生成器１３が、動作を実行するためのあらゆるメモリ・アドレスを計算する。
【０００９】
実行ステージ（ＥＸ）中に、実行ユニット１５は、例えば２つの数の加算や乗算のような指定された動作を実行する。実行ユニット１５は、例えば、１またはそれ以上の算術論理演算ユニット（ＡＬＵ）、浮動小数点ユニット（ＦＰＵ）およびバレル・シフタなどを含む動作を実行するための特殊なハードウェアを含むことがある。多種多様のデータは、例えばデータ・アドレス生成器１３、メモリ１７から検索されたデータ、またはデータ・レジスタ１４から検索されたデータによって生成されたアドレスのように、実行ユニット１５に適用される。最終段階（ＷＢ）中に、その結果が、データ・メモリまたはデータ・レジスタ１４にライト・バックされる。
【００１０】
パイプライン４のステージは、現在のステージの結果を格納するために、ステージ・レジスタ１９のようなステージ記憶回路を含む。ステージ・レジスタ１９は、典型的にはシステム・クロックに従って結果をラッチする。ステージ・レジスタ１９は、停止信号１８を受け取り、それによって、ステージ・レジスタ１９が先のステージからの結果をラッチするかどうかを制御する。このようにして、停止制御装置８は、パイプライン４の１またはそれ以上のステージを同期して停止する。特に、制御装置８は、命令ストリームに無動作命令（「ＮＯＰＳ」）を挿入することなく、効果的にパイプライン４をフリーズさせる。
【００１１】
さらに、以下でより詳細に議論されるように、停止制御装置８は、例えば停止信号１８が、フリップ・フロップのような記憶回路からの出力によって生成されるような、発生する条件に先立って、１またはそれ以上のハザード条件を検出するが、それによって高いファンアウト要求を支援することができる。更に、パイプライン４は、停止条件がもはや存在しなくなるまで一時的に動作の結果を格納しておくための追加のハードウェアを収容する必要がない。
【００１２】
図３は、停止制御装置８の一実施例を示すブロック図である。停止制御装置８は、停止生成器３２、条件検出器３４、および命令追跡回路３３を含む。以下で詳細に記述されるように、命令追跡回路３３は、パイプライン４の多様なステージ内に１またはそれ以上のタイプの命令が存在することを示す、１またはそれ以上のステージ指示信号３６を出力する。例えば、命令追跡回路３３は、分岐命令がパイプライン４のアドレス計算（ＡＣ）ステージ内にあるとき、特定ステージ指示信号３６を表明する。
【００１３】
一般に、命令追跡回路３３は、あるステージ内に存在するときに、１またはそれ以上のサイクルの間停止することをパイプライン４に要求するようなハザード条件を生成する、多様なタイプの命令の存在を検出する。潜在的にハザードを引き起こす命令がパイプライン４の多様なステージを通って流れるとき、命令追跡回路３３がステージ指示信号３６を表明する。条件検出器３４は、ステージ指示信号３６を受け取り、パイプライン４の多様なステージ内の命令の存在がハザードを引き起こすかどうかを決定し、もしそうであれば、パイプライン４が停止を必要としているサイクルの数を決定する。ハザードがパイプライン４内で検出されたとき、条件検出器３４は、１またはそれ以上のサイクルの間ハザード条件信号３５を表明する。停止生成器３２は、ハザード条件信号３５を受け取り、そして、検出されたハザードに基づいて、停止信号１８を表明し、１またはそれ以上のサイクルの間、パイプライン４の１またはそれ以上のステージを停止する。
【００１４】
図４は、停止生成器３２の実施例を示す概略図である。停止生成器３２は、ｓｔａｌｌ＿ｃｏｎｄｉｔｉｏｎ＿１からｓｔａｌｌ＿ｃｏｎｄｉｔｉｏｎ＿８のような多くのハザード条件信号３５を受け取り、各停止条件が条件検出器３４によって検出されたときに、それが表明される。入力信号は単なる例示目的であるが、例えば、停止生成器３２は、パイプライン４の多様なステージのために、あらゆる数の異なる停止条件を受け取ることができる。
【００１５】
ハザード条件信号３５に応答して、停止生成器３２は、パイプライン４を停止するための停止信号１８を生成する。停止生成器３２は、複数の停止信号１８を生成することができ、それがパイプライン４のステージに対応する。例えば、ｓｔａｌｌ＿ｃｏｎｄｉｔｉｏｎ＿１またはｓｔａｌｌ＿ｃｏｎｄｉｔｉｏｎ＿２のいずれかが表明され、かつ、プロセッサ２がリセットされていないとき、停止生成器３２は、ｓｔａｌｌ＿ｗｂ出力信号を表明し、結果としてパイプライン４のＷＢステージが停止する。特に、ｓｔａｌｌ＿ｗｂ出力信号は、ｓｔａｌｌ＿ｅｘ出力信号のような、パイプライン４のより早いステージのための停止出力信号を生成するために使用される。より詳しくは、ｓｔａｌｌ＿ｃｏｎｄｉｔｉｏｎ＿３、ｓｔａｌｌ＿ｃｏｎｄｉｔｉｏｎ＿４、またはｓｔａｌｌ＿ｗｂが表明され、プロセッサ２がリセットされていないとき、停止生成器３２がｓｔａｌｌ＿ｅｘ出力信号を表明する。このように、ＷＢステージ内の停止が、ＥＸステージ内の停止を強制する。停止生成器３２は、パイプライン４のより低いステージ内の停止と同じく、独立したハザード条件に基づいて、ｓｔａｌｌ＿ａｃおよびｓｔａｌｌ＿ｄｅｃ信号を同様に生成する。
【００１６】
図５は、ステージ指示信号３６を提供する命令追跡回路３３の実施例を示す。図示された実施例では、２つの命令タイプがモニタされるが、本発明はこれら制限されない。命令追跡回路３３は、第１の命令タイプの存在を示す３つの出力信号、ＩＮＳＴ＿ＴＹＰＥ１＿ＡＣ、ＩＮＳＴ＿ＴＹＰＥ１＿ＥＸ、およびＩＮＳＴ＿ＴＹＰＥ１＿ＷＢを提供する。これらの信号は、ＡＣ、ＥＸ、およびＷＢステージ内のそれぞれに、第１の命令タイプが存在することを示す。
【００１７】
さらに、命令追跡回路３３は、第２の命令タイプの存在を示す単一の出力、ＩＮＳＴ＿ＴＹＰＥ２＿ＡＣを提供する。この単一の信号は、パイプライン４のＡＣステート内に第２タイプの命令が存在することを示す。
【００１８】
命令追跡回路３３は、ＩＮＳＴ＿ＴＹＰＥ１＿ＤＥＣおよびＩＮＳＴ＿ＴＹＰＥ２＿ＤＥＣを含む多くの入力を受け取る。これらの命令は、制御ユニット６内のデコード・ロジックによって提供され、第１の命令タイプまたは第２の命令タイプがそれぞれデコード・ステージ内に存在してデコードされるときに、表明される。これら双方の信号は、デコード・ステージ内の命令が有効であり、かつ、例えば分岐条件により変化する命令ストリームによって「消去（ｋｉｌｌｅｄ）」されていないこと、および、命令がデコード・ステージ内で停止されていないことを保証するのに適している。第１の命令タイプの存在は、命令がパイプライン４を通って流れるときに、表明された信号を一連のフリップ・フロップ５１を通って伝播させる。表明された信号は、さらに各ステージでも適切である。
【００１９】
同様に、第２タイプの命令の存在は、デコード・ステージ内で検出され、出力ＩＮＳＴ＿ＴＹＰＥ２＿ＡＣを提供するために単一のフリップ・フロップを通って伝播される。第２タイプの命令の進行は、すべてのステージにわたってモニタすることができるが、以下に記述された例では、ＡＣステージ内における第２タイプの命令の存在を検出する。
【００２０】
以下に記述された回路例は、命令ストリーム内で第２タイプの命令が第１のタイプの命令に続くときにＡＣステージ内で第２タイプの命令を停止し、かつ、第２タイプの命令と第１タイプの命令との間に１またはそれ以上の「バブル」を挿入するためのロジックの例を示す。
【００２１】
図６は、単一のサイクル間にハザードを検出し、かつパイプライン４を停止するための条件検出器３４内の回路例６０の概略図である。より詳しくは、回路６０は、命令ストリーム内で第２タイプの命令が第１タイプの命令に続くとき、単一のクロック・サイクル間にパイプライン４のＡＣステージを停止するために、図４のｓｔａｌｌ＿ｃｏｎｄｉｔｉｏｎ＿５のような停止条件信号を生成する。特に、フリップ・フロップ６５のようなクロック記憶回路からｓｔａｌｌ＿ｃｏｎｄｉｔｉｏｎ＿５が直接提供されるというように、条件生成器６０がｓｔａｌｌ＿ｃｏｎｄｉｔｉｏｎ＿５を同期して生成する。
【００２２】
図示された実施例では、命令がパイプライン４を通って伝播するとき、回路６０は、第１命令と第２命令との間に単一のバブルを挿入する。タイプ１の命令がＡＣステージ内にあり、タイプ２の命令がデコード・ステージにあり、かつ、タイプ２の命令が有効な命令であって停止や消去がされていないとき、ＡＮＤゲート６６はＳＴＡＬＬ＿ＧＥＮＥＲＡＴＥ＿ＳＩＧＮＡＬ６２を表明する。次のクロック・サイクルで、命令１および命令２がそれぞれＡＣおよびＥＸステージへ伝播したとき、記憶回路６５は、生成器３２を停止するために、ＳＴＡＬＬ＿ＧＥＮＥＲＡＴＥ＿ＳＩＧＮＡＬ６２をラッチし、ＳＴＡＬＬ＿ＣＯＮＤＩＴＩＯＮ＿５を出力する。次のクロック・サイクルで、パイプライン４のＥＸステージまたはより低いステージ内に停止条件が存在しないと仮定した場合、ＳＴＡＬＬ＿ＣＯＮＤＩＴＩＯＮ＿５の表明によって第２命令をＡＣステージ内で停止させ、その一方で第１命令がＷＢステージに伝播し、これによって２つの命令の間にバブルを挿入する。しかしながら、ＥＸステージ内に停止が存在する場合には、ＡＮＤゲート６７がＳＴＡＬＬ＿ＨＯＬＤ＿ＳＩＧＮＡＬ６４を表明し、その一方で、第１命令がＥＸステージ内で停止されるとともに第２命令がＡＣステージ内で停止されるであろう。第１命令がもはやＥＸステージ内で停止されなくなるまで、ＳＴＡＬＬ＿ＨＯＬＤ＿ＳＩＧＮＡＬ６４が記憶回路６５にＳＴＡＬＬ＿ＣＯＮＤＩＴＩＯＮ＿５信号を保持せしめ、この時点で、後続のクロック・サイクル中に単一のバブルが命令間に挿入される。ＡＮＤゲート６７へのＳＴＡＬＬ＿ＥＸ入力は、ＥＸ停止が解除されるときに、余分な不必要なバブルを挿入しないためにＳＴＡＬＬ＿ＨＯＬＤ＿ＳＩＧＮＡＬ６４が適時に非表明されるであろうことを保証する。
【００２３】
図７は、ハザードを検出し、かつ、第１命令がタイプ１で、第２命令がタイプ２であるときに第１命令と第２命令との間に２つのバブルを挿入するための、条件検出器３４内の回路例７０の概略図である。より詳しくは、第１命令がライト・バック・ステージを完了するまで、回路７０はＡＣステージ内の第２命令を停止させる。
【００２４】
図示された実施例において、タイプ２の有効かつ適切な命令がパイプライン４のデコード・ステージ内にあり、かつ、タイプ１の命令がパイプライン４のＥＸステージまたはＡＣステージ内にあるとき、ＳＴＡＬＬ＿ＧＥＮＥＲＡＴＥ＿ＳＩＧＮＡＬ７２が表明される。したがって、後続のクロック・サイクル中に、ＳＴＡＬＬ＿ＧＥＮＥＲＡＴＥ＿ＳＩＧＮＡＬ７２が記憶回路７５にＳＴＡＬＬ＿ＣＯＮＤＩＴＩＯＮ＿６信号を表明させる。停止条件がパイプライン４のより低いステージに存在しないと仮定した場合、２つのバブルが第１命令と第２命令との間に挿入される。第１の命令がＷＢステージをクリアするとき、第２命令はパイプライン４を通って伝播することを許される。
【００２５】
しかしながら、第２の命令タイプがＡＣステージ内にあり、かつ、第１の命令タイプがＷＢステージ内で停止されるか、またはＥＸステージ内にあるときには、ＳＴＡＬＬ＿ＨＯＬＤ＿ＳＩＧＮＡＬ７４が表明される。第１命令がＷＢステージをクリアするまで、ＳＴＡＬＬ＿ＨＯＬＤ＿ＳＩＧＮＡＬ７４が記憶回路７５にＳＴＡＬＬ＿ＣＯＮＤＩＴＩＯＮ＿６信号を保持させる。ＡＮＤゲート７６へのｓｔａｌｌ＿ｗｂ入力信号は、ＷＢ停止が解除されるときに、余分な不必要なバブルを挿入しないためにＳＴＡＬＬ＿ＨＯＬＤ＿ＳＩＧＮＡＬ７４が適時に非表明されるであろうことを保証する。
【００２６】
図８は、ステージＭ内で停止条件を予め検出し、ステージＭ＋１内で第２命令を停止し、第１命令と第２命令との間にＮ個のバブルを挿入するための回路例８０の概略図である。タイプ２の命令がステージＭ内にあり、かつ、タイプ１の命令がステージＭ＋１とステージＭ＋Ｎとの間の任意のステージ内にあるとき、ＳＴＡＬＬ＿ＧＥＮＥＲＡＴＥ＿ＳＩＧＮＡＬ８２が表明される。同様に、タイプ２の命令がステージＭ＋１、すなわち停止条件が予め検出されるステージの直後に続くステージ内に存在し、かつ、タイプ１の命令がステージＭ＋２とステージＭ＋Ｎ＋１との間の任意のステージ内で停止されるとき、ＳＴＡＬＬ＿ＨＯＬＤ＿ＳＩＧＮＡＬ８４が表明される。ＡＮＤゲート８５へのｓｔａｌｌ＿ｓｔａｇｅ（Ｍ＋Ｎ＋１）入力は、ステージＭ＋Ｎ＋１の停止が解除されるときに、余分な不必要なバブルを挿入しないためにＳＴＡＬＬ＿ＨＯＬＤ＿ＳＩＧＮＡＬ８４が適時に非表明されるであろうことを保証する。
【００２７】
発明の多様な実施例が記述された。例えば、ポインタ・レジスタとデータ・レジスタとの間でデータを条件付きで移動させる単一の機械語命令が記述された。プロセッサは、汎用計算機システム、デジタル処理システム、ラップトップ・コンピュータ、個人用デジタル情報処理端末（ＰＤＡ）および携帯電話を含む多種多様のシステム内で実行することができる。このようなシステムでは、プロセッサは、オペレーティング・システムまたは他のソフトウェア・アプリケーションを格納することができる、フラッシュ・メモリ・デバイスまたはスタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）のようなメモリ・デバイスに結合される。これらおよび他の実施例は添付の請求項の範囲内である。
【００２８】
本発明は、以下の実施例を含む。
【００２９】
（１）本発明は、第１のクロックのサイクル中に、パイプライン方式のプロセッサ内のハザード条件を予め検出する段階と、
第２のクロック・サイクル中に、停止信号のセットを生成する段階と、
前記生成された停止信号に従って前記パイプラインの１またはそれ以上のステージを停止する段階と、
から成る方法を含む。
【００３０】
（２）上記(１)に記載された方法は、ハザード条件がステージＭ内で検出されるときに、停止信号のセットを生成する段階が、ステージ１からステージＭ＋１を停止するために停止信号のセットを生成する段階を含む。
【００３１】
（３）上記(１)に記載された方法は、第１のクロックのサイクル中に、１クロック・サイクルの間パイプラインを停止するために停止生成信号を生成する段階と、
第１のクロックのサイクル中に、１またはそれ以上の追加のサイクルの間パイプラインを停止するために、検出されたハザードに基づいて停止保持信号を生成する段階と、
をさらに含む。
【００３２】
（４）上記(１)に記載された方法は、パイプラインの１またはそれ以上のステージを停止する段階が、クロック記憶回路から停止信号を生成する段階を含む。
【００３３】
（５）上記(２)に記載された方法は、第２のクロック・サイクルが、第１のクロック・サイクルの直後に続く方法を含む。
【００３４】
（６）上記(１)に記載された方法は、有効信号および消去信号で停止信号を適正化する段階をさらに含む。
【００３５】
（７）上記(２)に記載された方法は、現在の停止条件が、パイプライン内に既に存在するかどうかを決定する段階と、
その決定に基づいて停止信号を遅らせる段階と、
をさらに含む。
【００３６】
（８）上記(２)に記載された方法は、検出されたハザードが、パイプラインの単一サイクル以上の停止を要求するときに、記憶回路内に停止信号を格納する段階をさらに含む。
【００３７】
（９）本発明は、多数のステージを有するパイプラインと、
第１のクロック・サイクル中にハザード条件を予め検出するために適合された条件検出回路、および
パイプラインの１またはそれ以上のステージを停止するために、検出されたハザードに基づいて第２のクロック・サイクル中に停止信号のセットを生成するために適合された停止生成器、
を含む停止制御装置と、
から構成される装置を含む。
【００３８】
（１０）上記(９)に記載された装置は、停止制御装置は、パイプラインのステージ内で１またはそれ以上のタイプの命令の存在を示す１またはそれ以上のステージ指示出力信号を有する命令追跡回路を含み、さらに、条件検出回路が、ステージ指示出力信号に基づいてハザードを予め検出する装置を含む。
【００３９】
（１１）上記(９)に記載された装置は、ステージは、停止信号を受け取るために書込み可能入力を有するパイプライン・レジスタを含む装置を含む。
【００４０】
（１２）上記(９)に記載された装置の発明は、停止制御装置がクロック信号を受け取り、クロック信号に従って停止信号を同期して生成する装置を含む。
【００４１】
（１３）上記(９)に記載された装置は、停止制御装置は、ハザード条件を検出した後、クロック信号の少なくとも１つのサイクルで停止信号を出力するために適合された記憶回路を含む装置を含む。
【００４２】
（１４）上記(９)に記載された装置は、停止生成器は、条件検出ユニットがステージＭ内でハザード条件を検出するときに、パイプラインのステージ１からステージＭ＋１に対する停止信号を出力するために適合される装置を含む。
【００４３】
（１５）上記(９)に記載された装置は、条件検出ユニットは、１クロック・サイクルの間パイプラインを停止するための停止生成出力信号、および１またはそれ以上の追加のサイクルの間パイプラインを停止するため停止保持信号を含む装置を含む。
【００４４】
（１６）本発明は、フラッシュ・メモリ装置と、
フラッシュ・メモリ装置に結合されたプロセッサであって、プロセッサは複数ステージを有するパイプラインおよび停止制御装置を含み、停止制御装置は、
第１のクロック・サイクル中にハザード条件を予め検出するために適合された条件検出器、および、
パイプラインの１またはそれ以上のステージを停止するために、検出されたハザードに基づいて第２のクロック・サイクル中に停止信号のセットを生成するために適合された停止生成器、
を含むプロセッサと、
から構成されるシステムを含む。
【００４５】
（１７）上記(１６)に記載されたシステムは、パイプラインのステージ内で１またはそれ以上のタイプの命令の存在を示す１またはそれ以上のステージ指示出力信号を有する命令追跡回路を含み、さらに、条件検出回路が、ステージ指示出力信号に基づいてハザードを予め検出するシステムを含む。
【００４６】
（１８）上記(１６)に記載されたシステムは、ステージは、停止信号を受け取るために書込み可能入力を有するパイプライン・レジスタを含むシステムを含む。
【００４７】
（１９）上記(１６)に記載されたシステムは、停止制御装置がクロック信号を受け取り、クロック信号に従って停止信号を同期して生成するシステムを含む。
【００４８】
（２０）上記(１６)に記載されたシステムは、停止制御装置は、ハザード条件を検出した後、クロック信号の少なくとも１つのサイクルで停止信号を出力するために適合された記憶回路を含むシステムを含む。
【００４９】
（２１）上記(１６)に記載されたシステムは、停止生成器は、条件検出ユニットがステージＭ内でハザード条件を検出するときに、パイプラインのステージ１からステージＭ＋１に対する停止信号を出力するために適合されるシステムを含む。
【００５０】
（２２）上記(１６)に記載されたシステムは、条件検出ユニットは、１クロック・サイクルの間パイプラインを停止するための停止生成出力信号、および１またはそれ以上の追加のサイクルの間パイプラインを停止するため停止保持信号を含むシステムを含む。
【００５１】
（２３）本発明は、パイプライン方式のプロセッサ内で第１命令と第２命令との間にＮ個の停止サイクルを挿入するための装置であって、
第２命令がステージＭ内に存在し、かつ第１命令がステージＭ＋１とステージＭ＋Ｎとの間の任意のステージ内に存在するときには停止生成信号を、
第２命令がステージＭ＋１内に存在し、かつ第１命令がステージＭ＋２とＭ＋Ｎ＋１との間で停止されるときには停止保持信号を、
表明するために適合された条件検出器、
から構成される装置を含む。
【００５２】
（２４）上記(２３)に記載された装置は、停止生成器は、停止生成信号および停止保持信号に基づいて停止条件信号を出力するためのクロック記憶回路をさらに含む装置を含む。
【００５３】
（２５）上記(２４)に記載された装置は、停止条件信号に基づいて停止信号のセットを生成するために適合された停止生成器をさらに含む装置を含む。
【００５４】
（２６）上記(２３)に記載された装置は、パイプラインのステージ内で１またはそれ以上のタイプの命令の存在を示す１またはそれ以上のステージ指示出力信号を有する命令追跡回路を含み、さらに、条件検出回路が、ステージ指示出力信号に基づいて停止生成信号および停止保持信号を表明する装置を含む。
【００５５】
（２７）本発明は、複数のステージを有するパイプライン方式のプロセッサ内で第１命令と第２命令との間にＮ個の停止サイクルを挿入するための方法であって、
第２命令がステージＭ内に存在し、かつ第１命令がステージＭ＋１とステージＭ＋Ｎとの間の任意のステージ内に存在するときには停止生成信号を表明する段階と、
第２命令がステージＭ＋１内に存在し、かつ第１命令がステージＭ＋２とＭ＋Ｎ＋１との間で停止されるときには停止保持信号を表明する段階と、
停止生成信号および停止保持信号に応答してパイプラインの１またはそれ以上のステージを停止する段階と、
から成る方法を含む。
【００５６】
（２８）上記(２７)に記載された方法は、第１のクロック・サイクルで、停止生成信号および停止保持信号を記憶回路へクロックする段階と、
第２のクロック・サイクルで、停止条件信号を記憶回路から出力する段階と、
を含む。
【００５７】
（２９）上記(２８)に記載された方法は、停止条件信号に基づいて停止信号のセットを生成する段階をさらに含む。
【図面の簡単な説明】
【図１】  発明の実施例に従ったパイプライン方式のプログラム可能なプロセッサの例を示すブロック図である。
【図２】  プログラム可能なプロセッサのためのパイプラインの例を示すブロック図である。
【図３】  停止制御装置の一実施例のブロック図である。
【図４】  停止生成器の実施例を示す概略図である。
【図５】  命令追跡回路の一実施例の概略図である。
【図６】  単一サイクルを停止するための条件検出器の一実施例の概略図である。
【図７】  ２サイクルを停止するための条件検出器の一実施例の概略図である。
【図８】  Ｎサイクルを停止するための条件検出器の一実施例の概略図である。
【図１】
0003688270.tif 000002
【図２】
0003688270.tif 000003
【図３】
0003688270.tif 000004
【図４】
0003688270.tif 000005
【図５】
0003688270.tif 000006
【図６】
0003688270.tif 000007
【図７】
0003688270.tif 000008
【図８】
0003688270.tif 000009