JP3688270B2 - プロセッサの停止 - Google Patents

プロセッサの停止 Download PDF

Info

Publication number
JP3688270B2
JP3688270B2 JP2002558125A JP2002558125A JP3688270B2 JP 3688270 B2 JP3688270 B2 JP 3688270B2 JP 2002558125 A JP2002558125 A JP 2002558125A JP 2002558125 A JP2002558125 A JP 2002558125A JP 3688270 B2 JP3688270 B2 JP 3688270B2
Authority
JP
Japan
Prior art keywords
stage
stop
instruction
pipeline
stages
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.)
Expired - Lifetime
Application number
JP2002558125A
Other languages
English (en)
Other versions
JP2004521417A (ja
Inventor
ロス,チャールズ,ピー
シン,ラヴィ,ピー
オーバカンプ,グレゴリー,エー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Analog Devices Inc
Original Assignee
Analog Devices Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Analog Devices Inc filed Critical Analog Devices Inc
Publication of JP2004521417A publication Critical patent/JP2004521417A/ja
Application granted granted Critical
Publication of JP3688270B2 publication Critical patent/JP3688270B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

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)

Description

【0001】
【発明の属する技術分野】
本発明は、プログラム可能なプロセッサの停止に関する。
【0002】
【従来の技術】
「パイプライン方式(pipelining)」は、デジタル信号プロセッサのような従来のプログラム可能なプロセッサ内で使用される技術であり、そこにおける命令は、全体的な処理速度を増加させるために実行中にオーバーラップされる。パイプライン方式のプロセッサは、典型的には多くのステージ内で命令を処理する。命令は、システム・クロックに従って、1つのステージから次のステージへ移るが、それは典型的にはパイプライン内の最も遅いステージによって決定されるクロック・レートを有する。
【0003】
命令を処理している間に、「ハザード(hazards)」と呼ばれる状態が、命令ストリームにおける次の命令の実行を妨げることがある。例えば、命令が、パイプラインから終了しなかった先行命令の結果に依存するときに、データ・ハザードが発生する。したがって、ハザードは、パイプラインを「停止(stall)」させ、かつ、パイプラインの性能を低下させる原因となる。
【0004】
1つの一般的な解決法は、パイプライン・インタロックと呼ばれるハードウェアを追加することであり、これがハザードを検出し、ハザードが解消するまでパイプラインを停止する。典型的には、パイプライン・インタロックは、一般に「NOP」と呼ばれる特殊な命令を挿入することによってパイプラインを停止するのであるが、その命令は、パイプラインからのオペレーションを要求しないが、命令ストリーム内のスロットを消費する。
【0005】
【詳細な説明】
図1は、実行パイプライン4および制御ユニット6を有するプログラム可能なプロセッサ2を示すブロック図である。制御ユニット6は、パイプライン4を介して命令およびデータのフローを制御する。例えば、命令の処理中に、制御ユニット6は、命令をデコードするためにパイプラインの多様なコンポーネントに指示を与え、かつ、例えば結果をメモリに書き戻すような動作を含む応答動作を正確に実行する。
【0006】
命令は、パイプライン4の第1ステージにロードされ、後続のステージを通って処理される。各ステージは、他のステージと同期して処理を行う。データは、システム・クロックに従って、パイプライン4内のステージの間を通過する。命令の結果は、間断なくパイプライン4の終端に現れる。
【0007】
停止制御装置8は、ハザード条件を検出し、1またはそれ以上の停止信号を表明(assert)してパイプライン4を停止する。以下に記述されるように、停止制御装置8は、システム・クロック9に従って停止信号を同期して生成する。
【0008】
図2は、本発明に従ってパイプライン4の一例を図示する。パイプライン4は、例えば、命令フェッチ(IF)、命令デコード(DEC)、アドレス計算(AC)、実行(EX)、およびライト・バック(WB)という5つのステージを有する。命令は、フェッチ・ユニット11によって第1ステージ(IF)中に、例えばメイン・メモリまたは命令キャッシュのようなメモリ・デバイスからフェッチされ、命令デコード・ユニット12によって第2ステージ(DEC)中にデコードされる。次のクロック・サイクルで、その結果が第3ステージ(AC)に渡され、そこで、データ・アドレス生成器13が、動作を実行するためのあらゆるメモリ・アドレスを計算する。
【0009】
実行ステージ(EX)中に、実行ユニット15は、例えば2つの数の加算や乗算のような指定された動作を実行する。実行ユニット15は、例えば、1またはそれ以上の算術論理演算ユニット(ALU)、浮動小数点ユニット(FPU)およびバレル・シフタなどを含む動作を実行するための特殊なハードウェアを含むことがある。多種多様のデータは、例えばデータ・アドレス生成器13、メモリ17から検索されたデータ、またはデータ・レジスタ14から検索されたデータによって生成されたアドレスのように、実行ユニット15に適用される。最終段階(WB)中に、その結果が、データ・メモリまたはデータ・レジスタ14にライト・バックされる。
【0010】
パイプライン4のステージは、現在のステージの結果を格納するために、ステージ・レジスタ19のようなステージ記憶回路を含む。ステージ・レジスタ19は、典型的にはシステム・クロックに従って結果をラッチする。ステージ・レジスタ19は、停止信号18を受け取り、それによって、ステージ・レジスタ19が先のステージからの結果をラッチするかどうかを制御する。このようにして、停止制御装置8は、パイプライン4の1またはそれ以上のステージを同期して停止する。特に、制御装置8は、命令ストリームに無動作命令(「NOPS」)を挿入することなく、効果的にパイプライン4をフリーズさせる。
【0011】
さらに、以下でより詳細に議論されるように、停止制御装置8は、例えば停止信号18が、フリップ・フロップのような記憶回路からの出力によって生成されるような、発生する条件に先立って、1またはそれ以上のハザード条件を検出するが、それによって高いファンアウト要求を支援することができる。更に、パイプライン4は、停止条件がもはや存在しなくなるまで一時的に動作の結果を格納しておくための追加のハードウェアを収容する必要がない。
【0012】
図3は、停止制御装置8の一実施例を示すブロック図である。停止制御装置8は、停止生成器32、条件検出器34、および命令追跡回路33を含む。以下で詳細に記述されるように、命令追跡回路33は、パイプライン4の多様なステージ内に1またはそれ以上のタイプの命令が存在することを示す、1またはそれ以上のステージ指示信号36を出力する。例えば、命令追跡回路33は、分岐命令がパイプライン4のアドレス計算(AC)ステージ内にあるとき、特定ステージ指示信号36を表明する。
【0013】
一般に、命令追跡回路33は、あるステージ内に存在するときに、1またはそれ以上のサイクルの間停止することをパイプライン4に要求するようなハザード条件を生成する、多様なタイプの命令の存在を検出する。潜在的にハザードを引き起こす命令がパイプライン4の多様なステージを通って流れるとき、命令追跡回路33がステージ指示信号36を表明する。条件検出器34は、ステージ指示信号36を受け取り、パイプライン4の多様なステージ内の命令の存在がハザードを引き起こすかどうかを決定し、もしそうであれば、パイプライン4が停止を必要としているサイクルの数を決定する。ハザードがパイプライン4内で検出されたとき、条件検出器34は、1またはそれ以上のサイクルの間ハザード条件信号35を表明する。停止生成器32は、ハザード条件信号35を受け取り、そして、検出されたハザードに基づいて、停止信号18を表明し、1またはそれ以上のサイクルの間、パイプライン4の1またはそれ以上のステージを停止する。
【0014】
図4は、停止生成器32の実施例を示す概略図である。停止生成器32は、stall_condition_1からstall_condition_8のような多くのハザード条件信号35を受け取り、各停止条件が条件検出器34によって検出されたときに、それが表明される。入力信号は単なる例示目的であるが、例えば、停止生成器32は、パイプライン4の多様なステージのために、あらゆる数の異なる停止条件を受け取ることができる。
【0015】
ハザード条件信号35に応答して、停止生成器32は、パイプライン4を停止するための停止信号18を生成する。停止生成器32は、複数の停止信号18を生成することができ、それがパイプライン4のステージに対応する。例えば、stall_condition_1またはstall_condition_2のいずれかが表明され、かつ、プロセッサ2がリセットされていないとき、停止生成器32は、stall_wb出力信号を表明し、結果としてパイプライン4のWBステージが停止する。特に、stall_wb出力信号は、stall_ex出力信号のような、パイプライン4のより早いステージのための停止出力信号を生成するために使用される。より詳しくは、stall_condition_3、stall_condition_4、またはstall_wbが表明され、プロセッサ2がリセットされていないとき、停止生成器32がstall_ex出力信号を表明する。このように、WBステージ内の停止が、EXステージ内の停止を強制する。停止生成器32は、パイプライン4のより低いステージ内の停止と同じく、独立したハザード条件に基づいて、stall_acおよびstall_dec信号を同様に生成する。
【0016】
図5は、ステージ指示信号36を提供する命令追跡回路33の実施例を示す。図示された実施例では、2つの命令タイプがモニタされるが、本発明はこれら制限されない。命令追跡回路33は、第1の命令タイプの存在を示す3つの出力信号、INST_TYPE1_AC、INST_TYPE1_EX、およびINST_TYPE1_WBを提供する。これらの信号は、AC、EX、およびWBステージ内のそれぞれに、第1の命令タイプが存在することを示す。
【0017】
さらに、命令追跡回路33は、第2の命令タイプの存在を示す単一の出力、INST_TYPE2_ACを提供する。この単一の信号は、パイプライン4のACステート内に第2タイプの命令が存在することを示す。
【0018】
命令追跡回路33は、INST_TYPE1_DECおよびINST_TYPE2_DECを含む多くの入力を受け取る。これらの命令は、制御ユニット6内のデコード・ロジックによって提供され、第1の命令タイプまたは第2の命令タイプがそれぞれデコード・ステージ内に存在してデコードされるときに、表明される。これら双方の信号は、デコード・ステージ内の命令が有効であり、かつ、例えば分岐条件により変化する命令ストリームによって「消去(killed)」されていないこと、および、命令がデコード・ステージ内で停止されていないことを保証するのに適している。第1の命令タイプの存在は、命令がパイプライン4を通って流れるときに、表明された信号を一連のフリップ・フロップ51を通って伝播させる。表明された信号は、さらに各ステージでも適切である。
【0019】
同様に、第2タイプの命令の存在は、デコード・ステージ内で検出され、出力INST_TYPE2_ACを提供するために単一のフリップ・フロップを通って伝播される。第2タイプの命令の進行は、すべてのステージにわたってモニタすることができるが、以下に記述された例では、ACステージ内における第2タイプの命令の存在を検出する。
【0020】
以下に記述された回路例は、命令ストリーム内で第2タイプの命令が第1のタイプの命令に続くときにACステージ内で第2タイプの命令を停止し、かつ、第2タイプの命令と第1タイプの命令との間に1またはそれ以上の「バブル」を挿入するためのロジックの例を示す。
【0021】
図6は、単一のサイクル間にハザードを検出し、かつパイプライン4を停止するための条件検出器34内の回路例60の概略図である。より詳しくは、回路60は、命令ストリーム内で第2タイプの命令が第1タイプの命令に続くとき、単一のクロック・サイクル間にパイプライン4のACステージを停止するために、図4のstall_condition_5のような停止条件信号を生成する。特に、フリップ・フロップ65のようなクロック記憶回路からstall_condition_5が直接提供されるというように、条件生成器60がstall_condition_5を同期して生成する。
【0022】
図示された実施例では、命令がパイプライン4を通って伝播するとき、回路60は、第1命令と第2命令との間に単一のバブルを挿入する。タイプ1の命令がACステージ内にあり、タイプ2の命令がデコード・ステージにあり、かつ、タイプ2の命令が有効な命令であって停止や消去がされていないとき、ANDゲート66はSTALL_GENERATE_SIGNAL62を表明する。次のクロック・サイクルで、命令1および命令2がそれぞれACおよびEXステージへ伝播したとき、記憶回路65は、生成器32を停止するために、STALL_GENERATE_SIGNAL62をラッチし、STALL_CONDITION_5を出力する。次のクロック・サイクルで、パイプライン4のEXステージまたはより低いステージ内に停止条件が存在しないと仮定した場合、STALL_CONDITION_5の表明によって第2命令をACステージ内で停止させ、その一方で第1命令がWBステージに伝播し、これによって2つの命令の間にバブルを挿入する。しかしながら、EXステージ内に停止が存在する場合には、ANDゲート67がSTALL_HOLD_SIGNAL64を表明し、その一方で、第1命令がEXステージ内で停止されるとともに第2命令がACステージ内で停止されるであろう。第1命令がもはやEXステージ内で停止されなくなるまで、STALL_HOLD_SIGNAL64が記憶回路65にSTALL_CONDITION_5信号を保持せしめ、この時点で、後続のクロック・サイクル中に単一のバブルが命令間に挿入される。ANDゲート67へのSTALL_EX入力は、EX停止が解除されるときに、余分な不必要なバブルを挿入しないためにSTALL_HOLD_SIGNAL64が適時に非表明されるであろうことを保証する。
【0023】
図7は、ハザードを検出し、かつ、第1命令がタイプ1で、第2命令がタイプ2であるときに第1命令と第2命令との間に2つのバブルを挿入するための、条件検出器34内の回路例70の概略図である。より詳しくは、第1命令がライト・バック・ステージを完了するまで、回路70はACステージ内の第2命令を停止させる。
【0024】
図示された実施例において、タイプ2の有効かつ適切な命令がパイプライン4のデコード・ステージ内にあり、かつ、タイプ1の命令がパイプライン4のEXステージまたはACステージ内にあるとき、STALL_GENERATE_SIGNAL72が表明される。したがって、後続のクロック・サイクル中に、STALL_GENERATE_SIGNAL72が記憶回路75にSTALL_CONDITION_6信号を表明させる。停止条件がパイプライン4のより低いステージに存在しないと仮定した場合、2つのバブルが第1命令と第2命令との間に挿入される。第1の命令がWBステージをクリアするとき、第2命令はパイプライン4を通って伝播することを許される。
【0025】
しかしながら、第2の命令タイプがACステージ内にあり、かつ、第1の命令タイプがWBステージ内で停止されるか、またはEXステージ内にあるときには、STALL_HOLD_SIGNAL74が表明される。第1命令がWBステージをクリアするまで、STALL_HOLD_SIGNAL74が記憶回路75にSTALL_CONDITION_6信号を保持させる。ANDゲート76へのstall_wb入力信号は、WB停止が解除されるときに、余分な不必要なバブルを挿入しないためにSTALL_HOLD_SIGNAL74が適時に非表明されるであろうことを保証する。
【0026】
図8は、ステージM内で停止条件を予め検出し、ステージM+1内で第2命令を停止し、第1命令と第2命令との間にN個のバブルを挿入するための回路例80の概略図である。タイプ2の命令がステージM内にあり、かつ、タイプ1の命令がステージM+1とステージM+Nとの間の任意のステージ内にあるとき、STALL_GENERATE_SIGNAL82が表明される。同様に、タイプ2の命令がステージM+1、すなわち停止条件が予め検出されるステージの直後に続くステージ内に存在し、かつ、タイプ1の命令がステージM+2とステージM+N+1との間の任意のステージ内で停止されるとき、STALL_HOLD_SIGNAL84が表明される。ANDゲート85へのstall_stage(M+N+1)入力は、ステージM+N+1の停止が解除されるときに、余分な不必要なバブルを挿入しないためにSTALL_HOLD_SIGNAL84が適時に非表明されるであろうことを保証する。
【0027】
発明の多様な実施例が記述された。例えば、ポインタ・レジスタとデータ・レジスタとの間でデータを条件付きで移動させる単一の機械語命令が記述された。プロセッサは、汎用計算機システム、デジタル処理システム、ラップトップ・コンピュータ、個人用デジタル情報処理端末(PDA)および携帯電話を含む多種多様のシステム内で実行することができる。このようなシステムでは、プロセッサは、オペレーティング・システムまたは他のソフトウェア・アプリケーションを格納することができる、フラッシュ・メモリ・デバイスまたはスタティック・ランダム・アクセス・メモリ(SRAM)のようなメモリ・デバイスに結合される。これらおよび他の実施例は添付の請求項の範囲内である。
【0028】
本発明は、以下の実施例を含む。
【0029】
(1)本発明は、第1のクロックのサイクル中に、パイプライン方式のプロセッサ内のハザード条件を予め検出する段階と、
第2のクロック・サイクル中に、停止信号のセットを生成する段階と、
前記生成された停止信号に従って前記パイプラインの1またはそれ以上のステージを停止する段階と、
から成る方法を含む。
【0030】
(2)上記(1)に記載された方法は、ハザード条件がステージM内で検出されるときに、停止信号のセットを生成する段階が、ステージ1からステージM+1を停止するために停止信号のセットを生成する段階を含む。
【0031】
(3)上記(1)に記載された方法は、第1のクロックのサイクル中に、1クロック・サイクルの間パイプラインを停止するために停止生成信号を生成する段階と、
第1のクロックのサイクル中に、1またはそれ以上の追加のサイクルの間パイプラインを停止するために、検出されたハザードに基づいて停止保持信号を生成する段階と、
をさらに含む。
【0032】
(4)上記(1)に記載された方法は、パイプラインの1またはそれ以上のステージを停止する段階が、クロック記憶回路から停止信号を生成する段階を含む。
【0033】
(5)上記(2)に記載された方法は、第2のクロック・サイクルが、第1のクロック・サイクルの直後に続く方法を含む。
【0034】
(6)上記(1)に記載された方法は、有効信号および消去信号で停止信号を適正化する段階をさらに含む。
【0035】
(7)上記(2)に記載された方法は、現在の停止条件が、パイプライン内に既に存在するかどうかを決定する段階と、
その決定に基づいて停止信号を遅らせる段階と、
をさらに含む。
【0036】
(8)上記(2)に記載された方法は、検出されたハザードが、パイプラインの単一サイクル以上の停止を要求するときに、記憶回路内に停止信号を格納する段階をさらに含む。
【0037】
(9)本発明は、多数のステージを有するパイプラインと、
第1のクロック・サイクル中にハザード条件を予め検出するために適合された条件検出回路、および
パイプラインの1またはそれ以上のステージを停止するために、検出されたハザードに基づいて第2のクロック・サイクル中に停止信号のセットを生成するために適合された停止生成器、
を含む停止制御装置と、
から構成される装置を含む。
【0038】
(10)上記(9)に記載された装置は、停止制御装置は、パイプラインのステージ内で1またはそれ以上のタイプの命令の存在を示す1またはそれ以上のステージ指示出力信号を有する命令追跡回路を含み、さらに、条件検出回路が、ステージ指示出力信号に基づいてハザードを予め検出する装置を含む。
【0039】
(11)上記(9)に記載された装置は、ステージは、停止信号を受け取るために書込み可能入力を有するパイプライン・レジスタを含む装置を含む。
【0040】
(12)上記(9)に記載された装置の発明は、停止制御装置がクロック信号を受け取り、クロック信号に従って停止信号を同期して生成する装置を含む。
【0041】
(13)上記(9)に記載された装置は、停止制御装置は、ハザード条件を検出した後、クロック信号の少なくとも1つのサイクルで停止信号を出力するために適合された記憶回路を含む装置を含む。
【0042】
(14)上記(9)に記載された装置は、停止生成器は、条件検出ユニットがステージM内でハザード条件を検出するときに、パイプラインのステージ1からステージM+1に対する停止信号を出力するために適合される装置を含む。
【0043】
(15)上記(9)に記載された装置は、条件検出ユニットは、1クロック・サイクルの間パイプラインを停止するための停止生成出力信号、および1またはそれ以上の追加のサイクルの間パイプラインを停止するため停止保持信号を含む装置を含む。
【0044】
(16)本発明は、フラッシュ・メモリ装置と、
フラッシュ・メモリ装置に結合されたプロセッサであって、プロセッサは複数ステージを有するパイプラインおよび停止制御装置を含み、停止制御装置は、
第1のクロック・サイクル中にハザード条件を予め検出するために適合された条件検出器、および、
パイプラインの1またはそれ以上のステージを停止するために、検出されたハザードに基づいて第2のクロック・サイクル中に停止信号のセットを生成するために適合された停止生成器、
を含むプロセッサと、
から構成されるシステムを含む。
【0045】
(17)上記(16)に記載されたシステムは、パイプラインのステージ内で1またはそれ以上のタイプの命令の存在を示す1またはそれ以上のステージ指示出力信号を有する命令追跡回路を含み、さらに、条件検出回路が、ステージ指示出力信号に基づいてハザードを予め検出するシステムを含む。
【0046】
(18)上記(16)に記載されたシステムは、ステージは、停止信号を受け取るために書込み可能入力を有するパイプライン・レジスタを含むシステムを含む。
【0047】
(19)上記(16)に記載されたシステムは、停止制御装置がクロック信号を受け取り、クロック信号に従って停止信号を同期して生成するシステムを含む。
【0048】
(20)上記(16)に記載されたシステムは、停止制御装置は、ハザード条件を検出した後、クロック信号の少なくとも1つのサイクルで停止信号を出力するために適合された記憶回路を含むシステムを含む。
【0049】
(21)上記(16)に記載されたシステムは、停止生成器は、条件検出ユニットがステージM内でハザード条件を検出するときに、パイプラインのステージ1からステージM+1に対する停止信号を出力するために適合されるシステムを含む。
【0050】
(22)上記(16)に記載されたシステムは、条件検出ユニットは、1クロック・サイクルの間パイプラインを停止するための停止生成出力信号、および1またはそれ以上の追加のサイクルの間パイプラインを停止するため停止保持信号を含むシステムを含む。
【0051】
(23)本発明は、パイプライン方式のプロセッサ内で第1命令と第2命令との間にN個の停止サイクルを挿入するための装置であって、
第2命令がステージM内に存在し、かつ第1命令がステージM+1とステージM+Nとの間の任意のステージ内に存在するときには停止生成信号を、
第2命令がステージM+1内に存在し、かつ第1命令がステージM+2とM+N+1との間で停止されるときには停止保持信号を、
表明するために適合された条件検出器、
から構成される装置を含む。
【0052】
(24)上記(23)に記載された装置は、停止生成器は、停止生成信号および停止保持信号に基づいて停止条件信号を出力するためのクロック記憶回路をさらに含む装置を含む。
【0053】
(25)上記(24)に記載された装置は、停止条件信号に基づいて停止信号のセットを生成するために適合された停止生成器をさらに含む装置を含む。
【0054】
(26)上記(23)に記載された装置は、パイプラインのステージ内で1またはそれ以上のタイプの命令の存在を示す1またはそれ以上のステージ指示出力信号を有する命令追跡回路を含み、さらに、条件検出回路が、ステージ指示出力信号に基づいて停止生成信号および停止保持信号を表明する装置を含む。
【0055】
(27)本発明は、複数のステージを有するパイプライン方式のプロセッサ内で第1命令と第2命令との間にN個の停止サイクルを挿入するための方法であって、
第2命令がステージM内に存在し、かつ第1命令がステージM+1とステージM+Nとの間の任意のステージ内に存在するときには停止生成信号を表明する段階と、
第2命令がステージM+1内に存在し、かつ第1命令がステージM+2とM+N+1との間で停止されるときには停止保持信号を表明する段階と、
停止生成信号および停止保持信号に応答してパイプラインの1またはそれ以上のステージを停止する段階と、
から成る方法を含む。
【0056】
(28)上記(27)に記載された方法は、第1のクロック・サイクルで、停止生成信号および停止保持信号を記憶回路へクロックする段階と、
第2のクロック・サイクルで、停止条件信号を記憶回路から出力する段階と、
を含む。
【0057】
(29)上記(28)に記載された方法は、停止条件信号に基づいて停止信号のセットを生成する段階をさらに含む。
【図面の簡単な説明】
【図1】 発明の実施例に従ったパイプライン方式のプログラム可能なプロセッサの例を示すブロック図である。
【図2】 プログラム可能なプロセッサのためのパイプラインの例を示すブロック図である。
【図3】 停止制御装置の一実施例のブロック図である。
【図4】 停止生成器の実施例を示す概略図である。
【図5】 命令追跡回路の一実施例の概略図である。
【図6】 単一サイクルを停止するための条件検出器の一実施例の概略図である。
【図7】 2サイクルを停止するための条件検出器の一実施例の概略図である。
【図8】 Nサイクルを停止するための条件検出器の一実施例の概略図である。

Claims (5)

  1. 第1のクロックのサイクル中に、パイプライン方式のプロセッサ内のハザード条件を予め検出する段階と、
    第2のクロック・サイクル中に、前記パイプラインのステージをそれぞれ特定する個別の信号を含む一組の停止信号を生成する段階と、
    前記一組の停止信号に従って前記パイプラインの1またはそれ以上のステージを停止する段階であって、前記ハザード条件が前記パイプラインのステージMで検出される場合、Mは正の整数であり、一組の停止信号を生成する前記段階はステージ1からステージM+1を停止させる一組の停止信号を生成する段階を含み、ここでステージM+1はステージMの下流にある、段階と、
    から成ることを特徴とする方法。
  2. 多数のステージを有するパイプラインと、
    停止制御装置と、を含む装置であって、
    前記停止制御装置は、
    第1のクロック・サイクル中にハザード条件を予め検出するために適合された条件検出回路、および
    前記ハザード条件の前記パイプラインの上流または下流のステージをそれぞれ特定する個別の信号を含む一組の停止信号を生成するために適合した停止生成器であって、検出されたハザードに基づいて第2のクロック・サイクル中に、前のステージからの情報をステージに格納するのを防止しかつ命令の列の中に無動作命令を挿入しないで、前記パイプラインの1またはそれ以上の下流のステージを停止させる停止生成器、
    から構成されることを特徴とする装置。
  3. フラッシュ・メモリ装置と、
    前記フラッシュ・メモリ装置に結合されたプロセッサであって、前記プロセッサは複数ステージを有するパイプラインおよび停止制御装置を含む、プロセッサと、
    からなる装置であって、前記停止制御装置は、
    第1のクロック・サイクル中にハザード条件を予め検出するために適合された条件検出器、および、
    前記ハザード条件の前記パイプラインの上流または下流のステージをそれぞれ特定する個別の信号を含む一組の停止信号を生成するために適合した停止生成器であって、検出されたハザードに基づいて第2のクロック・サイクル中に、前記ハザード条件が検出された1のステージおよび前記1のステージの下流の全てのステージを停止させることを含む前記パイプラインの1またはそれ以上の下流のステージを停止させる停止生成器、
    から構成されることを特徴とするシステム。
  4. ハザード条件の予めの検出に応答してパイプライン方式のプロセッサ内で第1命令と第2命令との間にN個の停止サイクルを挿入するための装置であって、Nは正の整数であり、前記装置は、
    前記第2命令がステージM内に存在し、かつ前記第1命令がステージM+1とステージM+Nとの間の任意のステージ内に存在するときには停止生成信号を、ここでMは正の整数であり、および
    前記第2命令がステージM+1内に存在し、かつ前記第1命令がステージM+2とM+N+1との間で停止されるときには停止保持信号を、ここでステージM+1はステージMの下流にあり、
    表明するために適合された条件検出器、
    から構成されることを特徴とする装置。
  5. 複数のステージを有するパイプライン方式のプロセッサ内で第1命令と第2命令との間にN個の停止サイクルを挿入するための方法であって、
    前記第2命令がステージM内に存在し、かつ前記第1命令がステージM+1とステージM+Nとの間の任意のステージ内に存在するときには、ハザード条件の予めの検出に応答して停止生成信号を表明する段階と、ここでMおよびNは正の整数であり、
    前記第2命令がステージM+1内に存在し、かつ前記第1命令がステージM+2とM+N+1との間で停止されるときには停止保持信号を表明する段階と、ここでステージM+1はステージMの下流にあり、
    前記停止生成信号および前記停止保持信号に応答して前記パイプラインの1またはそれ以上のステージを停止する段階と、
    から成ることを特徴とする方法。
JP2002558125A 2000-12-06 2001-12-06 プロセッサの停止 Expired - Lifetime JP3688270B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/731,198 US7028165B2 (en) 2000-12-06 2000-12-06 Processor stalling
PCT/US2001/046899 WO2002057907A2 (en) 2000-12-06 2001-12-06 Method and apparatus to stall the pipeline of a processor

Publications (2)

Publication Number Publication Date
JP2004521417A JP2004521417A (ja) 2004-07-15
JP3688270B2 true JP3688270B2 (ja) 2005-08-24

Family

ID=24938493

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002558125A Expired - Lifetime JP3688270B2 (ja) 2000-12-06 2001-12-06 プロセッサの停止

Country Status (6)

Country Link
US (1) US7028165B2 (ja)
JP (1) JP3688270B2 (ja)
KR (1) KR100571323B1 (ja)
CN (1) CN1279436C (ja)
TW (1) TW594564B (ja)
WO (1) WO2002057907A2 (ja)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6885375B2 (en) * 2002-03-11 2005-04-26 Sun Microsystems, Inc. Stalling pipelines in large designs
US7076681B2 (en) * 2002-07-02 2006-07-11 International Business Machines Corporation Processor with demand-driven clock throttling power reduction
US7000095B2 (en) * 2002-09-06 2006-02-14 Mips Technologies, Inc. Method and apparatus for clearing hazards using jump instructions
US7130988B2 (en) * 2002-11-15 2006-10-31 Via-Cyrix, Inc. Status register update logic optimization
US7185182B2 (en) * 2003-02-04 2007-02-27 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early instruction results
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US20060168393A1 (en) * 2005-01-27 2006-07-27 Christensen Bjorn P Apparatus and method for dependency tracking and register file bypass controls using a scannable register file
JP4534814B2 (ja) * 2005-03-16 2010-09-01 富士ゼロックス株式会社 データ処理装置、データ処理プログラムおよびデータ処理方法
US20070005842A1 (en) * 2005-05-16 2007-01-04 Texas Instruments Incorporated Systems and methods for stall monitoring
US7734901B2 (en) * 2005-10-31 2010-06-08 Mips Technologies, Inc. Processor core and method for managing program counter redirection in an out-of-order processor pipeline
US7711934B2 (en) * 2005-10-31 2010-05-04 Mips Technologies, Inc. Processor core and method for managing branch misprediction in an out-of-order processor pipeline
KR100861073B1 (ko) * 2007-01-23 2008-10-01 충북대학교 산학협력단 적응형 파이프라인을 적용한 병렬 처리 프로세서 구조
US8621138B2 (en) 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Flash storage controller execute loop
US8966230B2 (en) * 2009-09-30 2015-02-24 Intel Corporation Dynamic selection of execution stage
US9058289B2 (en) 2011-11-07 2015-06-16 Sandisk Enterprise Ip Llc Soft information generation for memory systems
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9239751B1 (en) 2012-12-27 2016-01-19 Sandisk Enterprise Ip Llc Compressing data from multiple reads for error control management in memory systems
US9003264B1 (en) 2012-12-31 2015-04-07 Sandisk Enterprise Ip Llc Systems, methods, and devices for multi-dimensional flash RAID data protection
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9236886B1 (en) 2013-03-15 2016-01-12 Sandisk Enterprise Ip Llc Universal and reconfigurable QC-LDPC encoder
US9244763B1 (en) 2013-03-15 2016-01-26 Sandisk Enterprise Ip Llc System and method for updating a reading threshold voltage based on symbol transition information
US9092350B1 (en) 2013-03-15 2015-07-28 Sandisk Enterprise Ip Llc Detection and handling of unbalanced errors in interleaved codewords
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US9136877B1 (en) 2013-03-15 2015-09-15 Sandisk Enterprise Ip Llc Syndrome layered decoding for LDPC codes
US9159437B2 (en) 2013-06-11 2015-10-13 Sandisk Enterprise IP LLC. Device and method for resolving an LM flag issue
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9043517B1 (en) 2013-07-25 2015-05-26 Sandisk Enterprise Ip Llc Multipass programming in buffers implemented in non-volatile data storage systems
US9384126B1 (en) 2013-07-25 2016-07-05 Sandisk Technologies Inc. Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9361221B1 (en) 2013-08-26 2016-06-07 Sandisk Technologies Inc. Write amplification reduction through reliable writes during garbage collection
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9298608B2 (en) 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9263156B2 (en) 2013-11-07 2016-02-16 Sandisk Enterprise Ip Llc System and method for adjusting trip points within a storage device
US9244785B2 (en) 2013-11-13 2016-01-26 Sandisk Enterprise Ip Llc Simulated power failure and data hardening
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9235245B2 (en) 2013-12-04 2016-01-12 Sandisk Enterprise Ip Llc Startup performance and power isolation
US9129665B2 (en) 2013-12-17 2015-09-08 Sandisk Enterprise Ip Llc Dynamic brownout adjustment in a storage device
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9390814B2 (en) 2014-03-19 2016-07-12 Sandisk Technologies Llc Fault detection and prediction for data storage elements
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US9070481B1 (en) 2014-05-30 2015-06-30 Sandisk Technologies Inc. Internal current measurement for age measurements
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US9093160B1 (en) 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US11372803B2 (en) * 2018-04-03 2022-06-28 Xilinx, Inc. Data processing engine tile architecture for an integrated circuit
US20210096877A1 (en) * 2019-09-26 2021-04-01 Advanced Micro Devices, Inc. Collapsing bubbles in a processing unit pipeline

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179693A (en) * 1985-03-29 1993-01-12 Fujitsu Limited System for controlling operation of processor by adjusting duty cycle of performance control pulse based upon target performance value
JPS61288230A (ja) 1985-06-17 1986-12-18 Nec Corp パイプライン制御方式
US5073855A (en) * 1989-06-30 1991-12-17 Bull Hn Information Systems Inc. Resource conflict detection method and apparatus included in a pipelined processing unit
US5471591A (en) * 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
EP0463965B1 (en) * 1990-06-29 1998-09-09 Digital Equipment Corporation Branch prediction unit for high-performance processor
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5627984A (en) * 1993-03-31 1997-05-06 Intel Corporation Apparatus and method for entry allocation for a buffer resource utilizing an internal two cycle pipeline
JP2636695B2 (ja) 1993-08-03 1997-07-30 日本電気株式会社 パイプライン処理回路
US6038658A (en) * 1997-11-03 2000-03-14 Intel Corporation Methods and apparatus to minimize the number of stall latches in a pipeline
JPH11149373A (ja) 1997-11-18 1999-06-02 Toshiba Corp プロセッサ
JP3204390B2 (ja) 1998-09-29 2001-09-04 エヌイーシーマイクロシステム株式会社 マイクロコンピュータ
US6401195B1 (en) * 1998-12-30 2002-06-04 Intel Corporation Method and apparatus for replacing data in an operand latch of a pipeline stage in a processor during a stall
US6587940B1 (en) * 2000-01-18 2003-07-01 Hewlett-Packard Development Company Local stall/hazard detect in superscalar, pipelined microprocessor to avoid re-read of register file

Also Published As

Publication number Publication date
US7028165B2 (en) 2006-04-11
US20020069348A1 (en) 2002-06-06
CN1279436C (zh) 2006-10-11
KR20030057570A (ko) 2003-07-04
TW594564B (en) 2004-06-21
CN1478229A (zh) 2004-02-25
WO2002057907A2 (en) 2002-07-25
JP2004521417A (ja) 2004-07-15
WO2002057907A3 (en) 2003-02-27
KR100571323B1 (ko) 2006-04-17

Similar Documents

Publication Publication Date Title
JP3688270B2 (ja) プロセッサの停止
US6279100B1 (en) Local stall control method and structure in a microprocessor
JP5431308B2 (ja) システムおよびパイプラインプロセッサにおける条件命令実行の加速のためのローカル条件コードレジスタの使用方法
US5822602A (en) Pipelined processor for executing repeated string instructions by halting dispatch after comparision to pipeline capacity
JP3781419B2 (ja) パイプライン方式のプロセッサにおける例外処理
US5619664A (en) Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms
JP2000029700A (ja) 分岐制御を有するデ―タ処理システムおよびその方法
JP3787329B2 (ja) ハードウェア・ループ
KR100551544B1 (ko) 하드웨어 루프
JP2004515857A (ja) マルチサイクル命令
US7065636B2 (en) Hardware loops and pipeline system using advanced generation of loop parameters
US6401195B1 (en) Method and apparatus for replacing data in an operand latch of a pipeline stage in a processor during a stall
KR20030081324A (ko) 하드웨어 루프
WO2007057831A1 (en) Data processing method and apparatus
JP2008299729A (ja) プロセッサ
US5421026A (en) Data processor for processing instruction after conditional branch instruction at high speed
JP3670646B2 (ja) レジスタ転送オペレーション
JP3759729B2 (ja) スペキュレーティブ・レジスタの調整
JP2536726B2 (ja) マイクロプロセッサ
JP7487535B2 (ja) 演算処理装置
US20220206799A1 (en) Apparatus for Processor with Hardware Fence and Associated Methods
JPH07182165A (ja) コミット条件付き命令の処理方法およびその装置
JPH0277940A (ja) データ処理装置
Boddu et al. A Survey on Effective Implementation of Control Scheme in Processors
JP2636074B2 (ja) マイクロプロセッサ

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050511

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050602

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050607

R150 Certificate of patent or registration of utility model

Ref document number: 3688270

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090617

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090617

Year of fee payment: 4

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100617

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100617

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110617

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120617

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120617

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130617

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term