(57)【要約】プロセッサのパイプライン内の命令のフローを操作するための方法、システム、及びコンピュータプログラム製品が開示されている。検出手段（１４２）は、パイプラインを通る命令のフローを中断させることに繋がる命令型式の命令を検出する。これは、命令オプコードの関係部分を分析することによって行われるが、このオプコードは、単一の命令（４００）か、又はＶＬＩＷ（４２０）のような複数の命令の何れかを表している。検出手段（１４２）は、挿入手段（１８０）に信号を送り、挿入手段（１８０）は、パイプラインから冗長命令をフラッシングし、次いで中間パイプラインステージ（１２６）に、必要とされるタスクの切り替えを助ける命令を直接挿入する。認識可能なビットパターンを備えた前記命令オプコードは、コンピュータプログラム製品に組み込んで、前記システムが製品を最適に実行できるようにすることができる。【選択図】図１
2004523040.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサのパイプライン内の命令のフローを操作するための方法において、
パイプラインを通る命令の進行の中断に繋がる刺激を検出する段階と、
前記刺激を検出すると、前記プロセッサが前記刺激に対応するために必要とする命令Ａを第１中間パイプラインステージに直接押し込んで、前記中間ステージを前記中断の結果として使用できるようにする段階と、から成り、
前記刺激は、前記パイプラインの第２中間ステージに常駐する命令Ｂの命令型式から検出されることを特徴とする方法。
【請求項２】
前記命令Ａは、プロセッサに、プロセッサの状態をスタックに記憶させることを特徴とする、請求項１に記載の方法。
【請求項３】
前記命令Ａは、プロセッサに、プロセッサの状態をスタックから検索させることを特徴とする、請求項１に記載の方法。
【請求項４】
前記命令Ｂは、挿入手段によって前記第１中間パイプラインステージに挿入されている割り込みコールであることを特徴とする、請求項１に記載の方法。
【請求項５】
前記命令Ｂは、パイプラインのフラッシングを引き起こすプログラム可能な命令であることを特徴とする、請求項１に記載の方法。
【請求項６】
前記命令Ａは、プロセッサに、復帰アドレスをスタックに記憶させることを特徴とする、請求項５に記載の方法。
【請求項７】
命令のフローを操作するためのシステムにおいて、
処理パイプラインを有するプロセッサと、
前記パイプラインを通る命令の進行を中断することに繋がる刺激を検出するための検出手段（１４２）と、
前記検出手段に応答して、命令Ａを第１中間パイプラインステージ（１２６）に直接押し込んで、前記ステージを前記中断の結果として使用できるようにする挿入手段（１８０）と、を備えており、
前記刺激は、前記パイプラインの第２中間ステージ（１４２）に常駐する命令Ｂの命令型式から検出することができることを特徴とするシステム。
【請求項８】
前記命令Ｂは、複数の命令を含む命令の束（４２０）の１要素であり、
前記パイプラインは、前記命令の束（４２０）の複数の命令を並行的に実行するための複数の実行ステージ（３６２）を備えており、
前記検出手段（１４２）は、複数の実行ステージに先行していることを特徴とする、請求項７に記載のシステム。
【請求項９】
前記検出手段（１４２）は、前記命令の束（４２０）に取り付けられていて前記複数の命令の中で前記命令型式の存在を示すビットパターン（４４０）を評価するように構成されていることを特徴とする、請求項８に記載のシステム。
【請求項１０】
前記命令の束（４２０）は、圧縮された形態の非常に長い命令ワード（ＶＬＩＷ）であることを特徴とする、請求項８又は９に記載のシステム。
【請求項１１】
前記挿入手段がパイプライン内に押し込むことになる命令Ａは、ハードコード化された様式でシステム内に存在していることを特徴とする、請求項７から１０の何れかに記載のシステム。
【請求項１２】
前記挿入手段がパイプライン内に押し込むことになる命令Ａは、データ記憶装置（２８４）に記憶されていることを特徴とする、請求項７から１０の何れかに記載のシステム。
【請求項１３】
請求項９のシステムによって実行されるコードモジュールを備えているコンピュータプログラム製品において、前記コードモジュールは、ビットパターンを加えて拡張された命令を備えており、前記ビットパターンは、前記命令を前記システムの１つの検出手段に認識できるようにすることを特徴とするコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサのパイプライン内における命令のフローを操作するための方法に関しており、その方法は、以下の段階、即ち、パイプラインを通る命令の進行を中断させることに繋がる刺激を検出する段階と、前記刺激を検出すると、前記プロセッサが前記刺激に対応するのに必要とする命令Ａを第１中間パイプラインステージに直接押し込んで、前記中断の結果として前記中間ステージを使用可能とする段階とで構成されている。
【０００２】
本発明は、更に、命令のフローを操作するためのシステムにも関しており、そのシステムは、処理パイプラインを有するプロセッサと、前記パイプラインを通る命令の進行を中断させることに繋がる刺激を検出するための検出手段と、前記検出手段に応答して、命令Ａを第１中間パイプラインステージに直接押し込んで、前記中断の結果として前記ステージを使用できるようにするための挿入手段とを備えている。
【０００３】
本発明は、又更に、請求項１３の前文に記載のコンピュータプログラム製品に関する。
【０００４】
ＷＯ９９／１８，４９７に、パイプライン化されたプロセッサで割り込みを取り扱うための方法が開示されている。
【背景技術】
【０００５】
パイプライン化された処理の分野における主要な問題の１つは、パイプラインを通る命令のフローの中断のサイクル損失に関するコストである。その様な中断は、例えばパイプラインのフラッシュやパイプラインのストールであることもある。中でも、その様な中断に繋がる刺激は、無条件のジャンプ及び分岐のような特別なプログラム命令であることもあれば、外部割り込みコールである場合もある。割り込みコールがあると、パイプラインを通る命令のフローを終結させ、割り込みを取り扱うのに必要な命令に道を空けなければならない。これは、通常は、プロセッサの状態を記憶し、パイプラインをフラッシングすることによって行われる。割り込みの取り扱いが済んだ後、命令のフローは、割り込みを取り扱う前に終結した点から再開されることになる。
【０００６】
この様な中断事象の影響は、パイプライン内のステージの数が増えるに伴って、割り込みが生じる度にフラッシングしなければならないサイクルが増えることから、重大な問題となっている。この様な中断事象が高い頻度で起きると、プロセッサの性能が大幅に低下する結果となる。従って、この様な事象の間のサイクル損失数を制限する方法を提供するのは価値のあることであり、そうするとプロセッサの性能の低下に歯止めが掛かることになる。
【０００７】
上記先行技術は、フェッチ、デコード、実行の３段階のパイプラインで実施された割り込みを取り扱うための方法を提供しており、この方法では、割り込みコールが連続して発生しそれを取り扱う際のサイクルの損失が回避され、その結果、パイプラインの待ち時間が減り、プロセッサの性能が上がっている。これは、特定の割り込みに関する命令が記憶される専用の割り込み命令レジスタを使うことによって実現されている。その様な割り込みに構成フィールドの番号をラベリングすることで、挿入すべき命令の番号とそのレジスタ位置を、割り込みコールを受信した際にこれらのフィールドを評価することによって検索できるようになっている。その結果、割り込みを取り扱うに際して、これらの命令を、先行するフェッチステージを使用する必要無しに、直接デコードステージに押し込むことができるようになる。しかし、この方法の欠点は、構成された割り込みの取り扱いに関してだけしか解を提供ないことと、挿入可能な割り込み命令を収容するために、構成可能なレジスタの形態をした高価な追加のハードウェアが必要になるということである。
【０００８】
【特許文献１】
ＷＯ９９／１８，４９７
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従って、本発明の第１の目的は、命令のフローの中断に繋がる多種多様な刺激をカバーして、サイクル損失の数を減らす、冒頭の文節に記載した種類の方法を提供することである。
【００１０】
本発明の第２の目的は、命令のフローの中断に繋がる多種多様な刺激に対して、サイクル損失を低減することのできる、冒頭の文節に記載した種類のシステムを提供することである。
【００１１】
本発明の第３の目的は、上記システムで実行するためのコードモジュールを備えたコンピュータプログラム製品を提供することである。
【００１２】
第１の目的は、前記刺激が、パイプラインの第２中間ステージに常駐する命令Ｂの命令形式から検出されることで、実現されている。本発明は、パイプラインのフラッシングのような命令のフローの中断が起きると、通常、中断が独立して発生するという意味において包括的な、数多くの中断に関係する包括的命令を実行することに繋がっているという事実の認識に基づいている。更に、命令のフローの中断は、無条件のジャンプのような或る命令型式、又はサブルーチンコールに属する命令によって生じ得ることも認識している。例えば、そのサブルーチンのアドレスとは無関係に、サブルーチンコールは、常に、パイプライン内でサブルーチンコールを引き連れている命令が冗長化しているために、常にパイプラインのフラッシングを引き起こすことになる。言い換えると、パイプラインのフラッシングは、現下の具体的な命令によって生じるのではなく、それの属するクラス、即ちその或る命令形式との関係によって生じる。パイプラインの第１実行ステージ前のデコードステージのような中間パイプラインステージ内で、その様な命令形式に属する命令を認識できるようにすることによって、パイプライン内に在る冗長命令を先に述べた必要とされる包括的命令に置き換えて、挿入することのできる命令の数だけパイプラインのフラッシングを引き起こす結果として生じるサイクル損失の回数を減らす。要約すれば、その様な刺激を検出すると、パイプラインの刺激を運ぶステージに先行するステージを即時フラッシングし、フラッシングされたサイクルの１つを必要とされる包括的命令を挿入することによって直接再使用できるようになる。
【課題を解決するための手段】
【００１３】
例えば、プロセッサにプロセッサの状態をスタックに記憶させる命令Ａを挿入することは有用である。プロセッサにタスクを切り換えさせることになる、命令のフローを中断させる事象は幾つか在る。決まり切ったことだが、中断されたタスクは再開可能でなければならず、つまり、現在のタスク状態に関するセーブ動作は、次のタスクを実行できるようになる前に実行されなければならない。従って、その様なステージ命令の実行が通常は必要とされ、中間パイプラインステージにおいてこの命令の強制的挿入によりフラッシングされたサイクルの再使用は、プロセッサの性能を上げる。
【００１４】
同様な理由で、プロセッサにプロセッサの状態をスタックから検索させる命令Ａを挿入することは有用である。一時的なタスクが終わりつつあり、プロセッサは先のタスクを再開する必要があるとき、付随するタスク状態を検索する必要がある。ここでも、フラッシングされた中間パイプラインステージを、その様な命令を直接挿入するのに再使用することができる。
【００１５】
命令Ｂが、前記挿入手段によって前記第１中間パイプラインに挿入されている割り込みコールであるのも、有用なことである。このアプローチも、割り込みコールを取り扱う従来からのやり方に備えている。割り込みコールを外部刺激として処理する代わりに、割り込みハンドラではなくプロセッサが、割り込み要求を、割り込み合図命令、即ち、現下のプロセスの命令のフローにインタリーブされた割り込みコールに「翻訳」することができるようになる。その結果、先に述べたタスク切り換えプロセスが、今度は、割り込みハンドラによってではなく、前記合図命令の内部検出によって開始されることになる。その結果、割り込みハンドラのタスクの幾つかを、パイプライン化されたプロセッサに移せるようになる。これによって割り込みハンドラのアーキテクチャを簡素化することができ、その結果、必要なハードウェアが削減されることになる。
【００１６】
更に、前記刺激の検出を、パイプラインのフラッシングを引き起こすプログラム可能な命令に拡張するのも、有用である。関数又はサブルーチンコールのようなこの型式の命令も、タスクを切り替え再開するために、プロセッサにパイプラインをフラッシングさせるので、この型式の命令は、早期検出に対する望ましい候補となる。
【００１７】
プログラム可能な命令の開始に関し頻繁に発生する問題は、プログラム可能な命令のアドレスをレジスタのような記憶装置からフェッチしなければならない場合に、パイプラインのストールが生じることである。プログラム可能な命令のアドレスのフェッチと復帰アドレスの記憶を同時に行うには、同じデータバスを使用する必要がるため、Ｉ／Ｏ衝突の結果としてストールが生じることになる。本方法を実施すれば、プロセッサに復帰アドレスをスタックに記憶させる命令Ａを挿入することによって、この望ましくない事態を防ぐことができる。復帰アドレス記憶オペレーションをフラッシングされたサイクルに再スケジューリングするので、記憶オペレーションは、プログラム可能な命令のアドレスのフェッチが済んだ後で実行されることになり、パイプラインはストールを免れ、その結果、パイプラインのスループットとプロセッサの性能が向上することになる。
【００１８】
次に、第２の目的は、前記刺激が、パイプラインの第２中間ステージに常駐する命令Ｂの命令形式から検出可能となることで実現される。命令のフローの中断を引き起こす命令のクラスのメンバー又は事例を認識することにより、例えば、所定のビットパターンのような一元的特徴を認識することによって、必要なパイプラインのフラッシングを、後に続く、中間パイプラインステージにおける命令Ａの挿入と組み合わせて実行し、システムの性能を改善することができるようになる。
この様なシステムでは、
−前記命令Ｂは、複数の命令から成る命令の束の１要素であり、
−前記パイプラインは、前記命令の束の複数の命令を並行的に実行するための複数の実行ステージを備えており、
−前記検出手段は、複数の実行ステージに先行している、
というのも有用である。
【００１９】
個々の命令ではなく命令の束を処理するプロセッサは、通常、命令を並行的に実行するように構成されている多数の実行ステージを備えている。この様な命令は、通常、非常に長い命令ワード（ＶＬＩＷ）という専門用語でのオペレーションと呼ばれている。この様なアーキテクチャは、結果的に、パイプラインを通る命令の進行を中断することに繋がる刺激の検出は、実行ステージのそれぞれではなくとも幾つかはその刺激に遭遇するという事実ためにハードウェアを要求することである、ということになる。しかし、複数の実行ステージに先行する検出手段を設けることによって、検出を中央の一箇所で行うことができ、検出と制御の両方の観点で必要とされてきたハードウェアの量を大幅に削減することができるようになる。
【００２０】
この様な関係において、前記検出手段が、前記命令の束に取り付けられていて前記複数の命令の中で前記命令形式の存在を示すビットパターンを評価するように構成されているのは、又別の有用な点である。命令の束は、複数の命令の実行に先立って生成される。これは、静的に、即ちコンパイラによって、又は動的に、即ち集積回路板上のリソーススケジューラによって、の何れかで行うことができる。これらの生成器は、ビットパターンを加えて命令の束を拡張して、或る型式の命令が命令の束の中に存在するか否かを表示させることができる。この様にして、命令の束全体ではなく拡張されたビットパターンだけを評価すれば、パイプラインの第２中間ステージに常駐している命令Ｂの命令形式を検出し、その様な刺激を迅速且つ簡単に検出できるようになる。前記命令の束が、圧縮された形態の非常に長い命令ワード（ＶＬＩＷ）であるというのも、又別の有用な点である。上記ビットパターン拡張部を導入しているので、ＶＬＩＷ自体を検出手段で評価する必要はない。従って、それは、アーキテクチャの大部分を通して、圧縮された形態で配布することができ、データワイヤのような必要なハードウェアを削減できる結果となる。
先に述べた挿入可能な命令の包括的特性の故に、前記挿入手段によって強制的にパイプライン内に押し込まれる命令Ａは、ハードコード化された様式でシステム内に存在し、即ち、命令はプロセッサのコア内に埋め込まれる。これによって、命令を楽に迅速に挿入できるようになり、数種類の異なる命令だけをこのやり方で挿入する必要がある限りにおいて、領域の増加という意味では安上がりでもある。挿入手段で多数の異なる命令を挿入しなければならない場合には、前記挿入手段によって強制的にパイプライン内に押し込まれる命令Ａはデータ記憶装置に記憶される、というのが利点となる。データ記憶装置内で挿入可能な命令をグルーピングすれば、正しいハードコード化された命令を選択するために複雑なアーキテクチャを必要とすることが防止される。前記データ記憶装置が、ランダムアクセスメモリのように構成可能であれば、異なるセットの挿入可能な命令を使用できるようになる。その様なセットは、例えばプログラム固有のもので、システムのこれらの性能強化手段を更に包括的にするものであってもよい。
【００２１】
本発明の第３の目的は、前記コードモジュールがビットパターンを加えて拡張した命令を備えており、前記ビットパターンは、前記命令を前記システムの１つの検出手段で認識できるようにする、ということで実現される。
【発明を実施するための最良の形態】
【００２２】
以下、本発明を、詳細に、添付図面を参照しながら例を挙げて説明する。
図１において、処理パイプラインは、３つの主要な区画、フェッチステージ１２０、デコードステージ１４０、実行ステージ１６０に分割されており、それぞれ点線の枠で表示されている。更に、データバス１００が、フェッチステージ１２０のＩ／Ｏ機能性を表示するために含まれている。全てのステージ１２０、１４０、１６０は、サブ区画に分割され、各ステージが、その実際の多様性ではなく単にその機能性で表されていることを示している。例えば、フェッチステージ１２０は、２つのステージ１２２、１２６を備えており、これは、マイクロステージ、即ち単一のクロックサイクル内で完全なフェッチオペレーションが終了するようなやり方でフェッチ処理のサブタスクを実行するステージか、又は、フェッチオペレーションが、関与するステージの数に等しい多数のクロックサイクル内で完了する「独立」サブステージの何れでもよい。しかし、マイクロステージと独立サブステージの両方を含んでいる複合ステージが在ってもよく、或いは異なる数のステージが在ってもよい。図１は、プロセッサのパイプラインの代表的なレイアウトを表しているに過ぎず、本発明の範囲を逸脱することなく、この他の配置も取り得ることを強調しておく。更に、処理パイプラインは、前記パイプラインを通る命令の進行を中断することに繋がる刺激を検出するための検出手段１４２と、前記検出手段に応答して、命令Ａを第１中間パイプラインステージ１２６内に強制的に押し込んで、前記ステージを前記中断の結果利用できるようにするための挿入手段１８０とを有している。検出手段１４２では、前記刺激は、パイプラインのこの第２中間ステージに常駐する命令Ｂの命令型式から検出することができる。本発明のある実施形態では、検出手段１４２は、比較器と、参照テーブル（ＬＵＴ）を備えている。比較器は、命令に付帯する全ビットパターンの所定のフラグメントを、ＬＵＴに記憶されている多数のビットパターンと比較する。フラグメントと、ＬＵＴ内のビットパターンの１つが首尾よく一致すると、検出手段１４２は、挿入手段１８０に、或る型式の命令が検出されたことを、前記手段１８０に規定の信号を送ることによって知らせる。挿入手段１８０は、ステージが検出手段１４２を収容する前にパイプラインステージをフラッシングするトリガを引くことによって、制御信号に応える。図１において、挿入手段１８０とフラッシングされることになる関与するパイプラインステージとの間の制御機構は、簡素化するため省略している。続いて、挿入手段１８０は、挿入に適した命令Ａを選択して出力し、マルチプレクサ（ＭＵＸ）１２４に制御信号を送り、マルチプレクサ（ＭＵＸ）１２４は命令Ａをパイプラインのステージ１２６に挿入し、フラッシングされたサイクルが効果的に再使用できるようになる。しかし、当業者には自明であるように、検出手段１４２の上記具現化は、この様な手段の具現化の一例に過ぎず、ここに記述した教示から逸脱することなく様々な変更を容易に行うことができる。
【００２３】
本発明のある実施形態では、図２に示すように、挿入手段１８０は、制御手段２８２を備えており、制御手段２８２は、制御手段２８２に向かう矢印で示されているように、図２には示されていない検出手段１２４から来る信号に応答する。この様な信号は、制御手段２８２のトリガを引き、パイプラインに押し込まれることになる命令Ａが選択され、次いでマルチプレクサ１２４に出力される。命令Ａは、ハードコード化された様式でシステム内に存在していてもよく、即ち、この命令は、プロセッサコアのシリコンに埋め込まれていてもよい。これは、命令Ａがフィールドの１つ２８６に記憶できるようになっている小さな構成可能データ記憶装置２８４の形態を取っていてもよい。ハードコード化された記憶装置は、この様な挿入可能な命令を実施する安価な方法である。これが柔軟性に欠けるというのは、命令Ａは、普通は包括的特性を持っており、即ち多くの異なる命令のフローを中断する事象（ＩＦＤＳ）がこの特定の命令の挿入を要求する、という事実により、通常は無視できる拘束要件である。しかしながら、挿入可能な命令のセットを変更できれば有益であると考えられており、その場合、構成不可能なデータ記憶装置２８４を、構成可能なメモリのような構成可能なデータ記憶装置に置き換えることができるようになる。ランダムアクセスメモリのような構成可能なメモリを使えば、プログラム固有のＩＦＤＥを取り扱うことができ、柔軟性が増し、プロセッサの性能が更に向上することになる。
【００２４】
随意的に、制御手段２８２は、図示しない割り込みハンドラから始まる割り込みライン２８８に応答してもよい。この様にして、外部ハードウェアから割り込み要求を受け取ると、割り込みハンドラは、パイプラインへの命令として割り込みコールの挿入を誘起することができ、これは、パイプライン内に既に存在している命令に単に重ね書きすることにより実現することができる。その結果、検出手段１４２は、そのようなマスク可能な割り込み命令、即ち割り込みコールを、挿入手段１８０がそれをパイプラインに挿入した後、認識できるようになり、プロセッサに、命令の復帰アドレスを割り込み命令に先立ってスタックに記憶させ、割り込みの取り扱いが済んだ後、重ね書きされた命令を確実に検索できるようにする命令を挿入手段１８０に挿入させることができるようになる。この様なことを実施する主な利点は、外部割り込み要求を取り扱う割り込みハンドラを非常に小さくすることができ、極端な場合は、システムから完全に取り除いて、システムの複雑さと必要とされるハードウェアを低減できることである。
【００２５】
上記構成の追加の利点は、システム、特に、実行ステージがＶＬＩＷプロセッサでのように複数のサブステージを含んでいるアーキテクチャに必要とされるハードウェアを、大幅に削減できることである。その様なアーキテクチャの概略例を図３に示す。ここでは、フェッチステージ３２０とデコードステージ３４０が、複数のステージ３６２ａから３６２ｅで構成される複合実行ステージ３６０の前にある。この様なアーキテクチャでは、３６２ａから３６２ｅまでの各実行ステージが、ＩＦＤＥを検出するための手段を必要とし、その結果、必要とされる制御ハードウェアが相当量になることも有り得る。デコードステージ３４０又はそのサブステージの１つのような、パイプラインの始めの方のステージに検出手段１４２を導入すると、ＩＦＤＥ検出が、多くの分散したステージから、複数の分散したステージ３６２ａから３６２ｅに先立つパイプライン内の中央ステージに移されることによって、相当量のハードウェアをセーブすることができる。図３は、単に例を示しているのみで、異なる度合いの階層と複雑さを有する他のアーキテクチャも、この様な中央集中的ＩＦＤＥ検出アプローチに関して、等しく相応しい候補と考えられることを強調しておく。
【００２６】
ＩＦＤＥは、検出手段１４２によって、受信されたオプコード（オペレーション・コード）の一部を、オプコードの所定の部分から命令の型式を検出して評価することにより検出される。例えば、図４ａでは、ＲＩＳＣへの３２ビットのジャンプ・アンド・リンク・レジスタ（ＪＡＬＲ）は、ビット０−５の範囲の６ビットパターンを含む幾つかのフィールドを備えている。このビットパターンは、この命令が、ＪＡＬＲ命令型式の例であることを示している。プログラムメモリ内の全ての異なるＪＡＬＲ命令の例が、この６ビット識別子を共通して有しており、それらをクラスとして、又は命令の型式として認識できるようになっている。しかし、例えば図４に示すような命令４２０ａから４２０ｎから成る命令の束４２０のような多様な命令オプコードを取り扱う場合、この様な検出は簡単とは言えない。４２０ａから４２０ｎの命令を１つずつ評価するのは、命令の束４２０内の命令の数が増すにつれて複雑になり、特に、命令の束４２０が圧縮された形態のＶＬＩＷで、評価前に解凍しなければならない場合には複雑になる。この複雑さは、命令の束４２０にビットパターン４４０を取り付け、ビットパターン４４０が、複数の命令４２０ａから４２０ｎの中で検出可能な命令型式の存在を示すようにすることで、回避できる。この様なビットパターンは、例えば、コンパイル処理において命令の束に追加することができ、本発明に従ってシステムで実行するためのコードモジュールを備えたコンピュータプログラム製品が形成されることになる。
【００２７】
稼働中のシステムを図５に示すが、具体的には、オペレーションサイクル５２０−５２８の間に任意のパイプラインステージ５００−５０８を通る命令の進行を示している。本図は、Ｉ（ｎ）及びＩ（ｎ＋１）とラベルの付いた命令と、ここではパイプラインのフラッシングを起こそうとしているためＩＦＤＥとラベルが付いた命令Ｉ（ｎ−１）とを備えた元の命令のフローの進行を示している。従って、命令ＩＦＤＥは、パイプラインを通る命令の進行、この場合はＩ（ｎ）とＩ（ｎ＋１）の進行を中断させることに繋がる刺激であり、命令の進行は、パイプラインのフラッシングによりサイクル５２４で中断されている。このパイプラインのフラッシングは、クロックサイクル５２４の間のステージ５０６におけるＩＦＤＥの検出で引き起こされ、続いて、先行するステージ５００−５０４をフラッシングして、パイプライン内のステージ５０２と５０４から命令Ｉ（ｎ）とＩ（ｎ＋１）を効果的に取り除く結果となっている。パイプラインのフラッシングによって使用できるようになるパイプラインのステージを、図５に斜線で示している。
【００２８】
更に、前記刺激を検出すると、前記プロセッサが前記刺激に対応するために要求した命令Ａが第１中間パイプラインステージに直接押し込まれ、前記中間ステージが、前記中断の結果として使用可能となる。ここで、図５ではＩＮＳとラベルが付いている挿入命令Ａが、先のパイプラインのフラッシングの間にＩ（ｎ）が取り除かれているステージに挿入される。明快を期して、命令Ｉ（ｎ）からＩ（ｎ＋２）は、サイクル５２４から既に取り除かれており、サイクル５２４でフラッシングが済んだ後のパイプラインの状態を効果的に示している。更に、ステージ５００の命令アドレスカウンタが更新され、ステージ５００が次のサイクル５２６で適切な命令Ｉ（ｍ）を確実にフェッチし、命令のフローを命令Ｉ（ｍ）及び後続の命令に切り替えることになる。
【００２９】
プロセッサに、プロセッサの状態をスタックに記憶させるか、又はスタックからプロセッサの状態を検索させるかの何れかを行わせる命令Ａ（ＩＮＳ）の挿入のような、パイプラインのフローを制御する命令を挿入することによって、フラッシングされたパイプラインステージを再使用するのも、有用なことである。先に説明したように、割り込みの取り扱い、即ち一般的にはＩＦＤＥの取り扱いの複雑さは、パイプラインのアーキテクチャの複雑さに比例している。その様なスタックＩ／Ｏオペレーションを命令として命令のセットに一体化するのは、その様な命令の挿入が、少なくとも１サイクルだけその実行を遅延させ、ステージ３６２ａ−３６２ｅのようなオペレーションにおける複数の同時実行ステージから成るプロセッサの状態をセーブ又は復元する際に起こり得る複雑なタイミングの問題を回避できるという利点を有している。ＩＦＤＥに続く他の全ての命令は、実行ステージに到達する前にパイプラインからフラッシングされてしまうということと組み合わせて、現在のプロセッサの状態は定義により精確であり、先に述べた制御ハードウェアを相当量削減できるようになる。
【００３０】
同様な理由で、本発明のある実施形態は、パイプラインのフラッシングを引き起こすプログラム可能な命令である命令Ｂ（ＩＦＤＥ）と、プロセッサに、復帰アドレスをスタックに記憶させる命令Ａ（ＩＮＳ）を備えている。このプログラム可能な命令は、先に述べたＪＡＬＲ命令であってもよく、その場合、命令のフローを中断してレジスタフィールドの内容を検索しなければならない。同時に、プログラム実行の後のステージで命令のフローをその中断された点から再開しなければならない場合には、復帰アドレスも記憶しなければばならない。挿入機構は、必要とされる制御ハードウェアの量を削減するのみならず、これらの状況下でのパイプラインのストールも回避する。復帰アドレス命令を挿入しなければ、必要な命令アドレスのそのレジスタ位置からの検索、並びに復帰アドレスの記憶の両方が、同一サイクル内でのデータバスへのアクセスで衝突することになり、通常は、プロセッサのアーキテクチャ内に仲裁ハードウェアを含めることで解決しなければならなくなる。これら２つのリソース依存のタスクを分離することによって、パイプラインのフローが滑らかになり、制御ハードウェアの量を削減できるようになる。
【００３１】
本発明の多くの特徴と利点が以上の詳細な説明で明らかになったが、本発明の範囲に属するこの様な特徴と利点は、全て、特許請求の範囲に述べる事項によって本発明に包含されるものである。当業者であれば数多くの変形及び変更を容易に加えることができるので、本発明は、図示し説明した構造とオペレーションそのものに限定されるのではなく、全ての適切な変更及びその等価物は、本発明の範囲に含まれるものとする。
【図面の簡単な説明】
【００３２】
【図１】本発明による、プロセッサのパイプラインのアーキテクチャを示す。
【図２】本発明による、挿入装置の概略図である。
【図３】複数の実行ステージを備えたパイプラインの概略図である。
【図４ａ】ＲＩＳＣプロセッサに対するジャンプ・アンド・リンク・レジスタ命令を示す。
【図４ｂ】本発明による、追加のビットパターンを備えたＶＬＩＷを示す。
【図５】本発明による、命令のフローを中断する事象を検出する前、検出している間、及び検出した後における、パイプライン内における命令のフローの代表的展開を示す概略的テーブルである。
【国際公開パンフレット】
2004523040.tif 000003
2004523040.tif 000004
2004523040.tif 000005
2004523040.tif 000006
2004523040.tif 000007
2004523040.tif 000008
2004523040.tif 000009
2004523040.tif 000010
2004523040.tif 000011
2004523040.tif 000012
2004523040.tif 000013
2004523040.tif 000014
2004523040.tif 000015
2004523040.tif 000016
2004523040.tif 000017
2004523040.tif 000018
2004523040.tif 000019
【国際公開パンフレット（コレクトバージョン）】
2004523040.tif 000020
2004523040.tif 000021
【国際調査報告】
2004523040.tif 000022
2004523040.tif 000023
2004523040.tif 000024
2004523040.tif 000025
2004523040.tif 000026