【手続補正書】
【提出日】平成16年11月19日(2004.11.19)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【書類名】  明細書
【発明の名称】  多くのオペランドを扱う命令を有するデータ処理装置
【特許請求の範囲】
【請求項１】  アクセスポートを有するレジスタファイルと、 
オペランドを受信するために、前記アクセスポートに結合された機能ユニットと、
プログラムからの連続的な命令を発行する命令発行ユニットであって、当該命令発行ユニットが、前記命令で特定される前記オペランドが読み取られるレジスタを選択するために前記アクセスポートと結合され、前記機能ユニットが、前記命令の内の第一の命令の受信に応答して計算の実行を開始するよう構成され、前記計算で用いられる少なくとも一つのオペランドを読み取るための前記レジスタファイル中のレジスタが、前記第一の命令を発行した後に前記命令発行ユニットにより発行される、前記命令の内の第二の命令により特定され、前記機能ユニットが、前記第一の命令の受信の後の所定の数の命令サイクルの間に前記第二の命令が実行されないとき、前記第二の命令の発行の後まで前記計算の実行を一時停止するよう構成される当該命令発行ユニットと、
を有するデータ処理装置。
【請求項２】  請求項１に記載のデータ処理装置であって、各命令が演算コードを有し、前記機能ユニットが、前記命令発行ユニットから前記機能ユニットに発行される命令の前記演算コードを検知し、前記第二の命令を識別する演算コードの検知後まで前記第一の命令により特定される計算の実行を一時停止するよう構成されることを特徴とするデータ処理装置。
【請求項３】  請求項２に記載のデータ処理装置であって、前記命令のそれぞれがオペランドレジスタ選択コードのための領域を含み、前記機能ユニットが前記領域のコンテンツを前記演算コードに関係なく前記アクセスポートへ供給することを特徴とするデータ処理装置。
【請求項４】  請求項２に記載のデータ処理装置であって、前記機能ユニットが、前記演算コードに依存して前記計算のステップが実行される順番を選択することを特徴とするデータ処理装置。
【請求項５】  請求項１に記載のデータ処理装置であって、前記第二の命令が、前記レジスタファイル中の信号レジスタを特定し、前記機能ユニットが、前記第二の命令に応答して前記の特定された信号レジスタから信号を受信するよう構成され、前記機能ユニットが、前記信号が前記オペランドの内少なくとも一つが有効であると示す所定の値を持っていなければ前記計算を一時停止することを特徴とするデータ処理装置。
【請求項６】  請求項１に記載のデータ処理装置であって、前記機能ユニットが、前記命令の内の他の命令のそれぞれに応答して前記計算の結果の異なった部分を前記レジスタファイルに書き込むよう構成され、前記他の命令のそれぞれが、前記結果の内の、当該それぞれの命令の前記異なった部分を書き込むための前記レジスタファイルのレジスタを特定することを特徴とするデータ処理装置。
【請求項７】  請求項６に記載のデータ処理装置であって、前記他の命令のそれぞれが、演算コードと、前記結果の一部を書き込むための前記レジスタファイルのレジスタへの少なくとも一つの参照とを含み、前記機能ユニットが、前記演算コードが受信された順番に依存して計算のステップが実行される順番を選択することを特徴とするデータ処理装置。
【請求項８】  請求項６に記載のデータ処理装置であって、前記他の命令が、それぞれ、前記レジスタファイル中の結果部分レジスタ及び信号レジスタを特定し、前記機能ユニットが、前記結果の部分及び信号を、前記他の命令の受信に対する所定の時間で、前記結果部分レジスタ及び前記信号レジスタへそれぞれ出力するよう構成され、前記機能ユニットが、前記他の命令に必要な前記結果の部分が前記時間に使用可能か決定するよう構成され、前記機能ユニットが、前記結果の部分が前記時間に使用可能かを前記信号中で示すことを特徴とするデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ処理装置に関する。
【０００２】
【従来の技術】
従来のデータプロセッサは、比較的少数のオペランド(通常二つのオペランド)及び少数の結果(通常一つ) のレジスタ位置を特定する命令を有する。幾つかの演算、例えば二次元離散コサイン変換(DCT)は、非常に多数のオペランドを必要とする。必要なオペランド及び/又は結果が多いことは、命令及び当該命令のオペランドレジスタへのアクセス経路を不経済に広くするため、このような演算を指令する単独の命令を提供することは困難である。従って、このような演算は、それぞれが少数のレジスタにアクセスする一般目的用の多くの命令に分解される。これは、異なった命令により使用されるレジスタに、中間結果が往復して送信されなければならないという短所がある。
【０００３】
これを改良する一つの既知の方法は、オペランド及び結果を、連続したメモリ位置の領域に記憶するというものである。この場合、演算を開始する命令は、このエリアの開始アドレスのみを特定すればよい。プロセッサは、開始アドレスを用いてオペランドの位置を決定し、順次の処理サイクルでオペランドを取得することができる。メモリの使用は、特に他の演算と並行に実行されると、この演算を遅くする。オペランド及びデータを記憶するのにレジスタを使用することは望ましい。しかしこれは、多数の処理サイクルでは、大きなレジスタのブロックの確保を必要とする。これは、他の命令もレジスタを使う場合、これらの他の命令について効率的にスケジューリングすることを困難にする。
【０００４】
レジスタからの多数のオペランドをより効率的に扱うことのできるデータプロセッサは、2000年のMadridでのISSS会議でN. Busa他により発表された学会論文「VLIWプロセッサのための粗粒度演算のスケジューリング」から既知である。このプロセッサが多数のオペランドを必要とする命令を受けると、プロセッサは命令の受信の後に続く処理サイクルのオペランドを読み取る。これらの処理サイクルのそれぞれに対して、当該処理サイクルのためのオペランドが読み取られるべきレジスタを特定する、他の命令が発行される。当該他の命令は、オペランドの幾つかの位置を識別するための役目のみを果たす。マルチオペランド演算は、オリジナルの命令により規定され、この演算の実行は、前記の他の命令の実行の前及び後にわたる時間帯の間に進行する。前記の他の命令は、機能ユニットに、オリジナルの命令に指令されるマルチオペランド演算で使用するためのオペランドを、特定されたレジスタから取得するよう指示する。
【０００５】
これは、マルチオペランド演算用に理論上無制限の数のオペランドを使用することを可能にするだけでなく、マルチオペランド演算のオペランドを供給するのに必要とされる異なったレジスタの数を低減させるのにも使用することができる。特定されたレジスタからオペランドを取得する命令が実行されたら、マルチオペランド演算の残り全てのオペランドが特定される前であっても、他のデータが当該レジスタに書き込まれることができる。この、他のデータは、引き続きの命令の指示の下マルチオペランド演算での使用のために取得される、他のオペランドを含むことができる。
【０００６】
マルチオペランド演算の実行はオリジナルの命令への応答として開始する、つまり、全てのオペランドが特定される前に開始する。例えば、二次元DCTの場合、実行は、他の行が読み取られる前に変換されなければならない二次元ブロックの第一行を使用して、第一計算ステップを遂行することができる。結果として、他の機能ユニットがオペランドを作成するのに必要な時間は、オペランドの演算を遂行するのに必要な時間と重複することができ、これはプロセッサの速度を増加させる。これは例えば、多くの命令を並行に実行することができるVLIWプロセッサ、及びスーパースケーラプロセッサに有用である。
【０００７】
同様に、異なった演算結果は異なった命令サイクルのレジスタに書き込まれることができる。この目的のため、結果を書き込むレジスタを特定する更なる命令が提供される。これも、レジスタのより効率的な使用及び向上した実行の並行性につながる。
【０００８】
オペランドを取得して結果の一部をレジスタファイルに書き込むよう機能ユニットに指令する命令は、コンパイラ又はスケジューラによりスケジューリングされなければならない。コンパイラ又はスケジューラは、それぞれの命令に対し、いつ(どの命令サイクルにおいて)当該命令が機能ユニットに発行されなければならないかを決定しなければならない。コンパイラが、オペランドを読み取る(又は結果を書き込む)命令を、該命令の発行の後の多数の実行サイクルにおいてスケジューリングすることを決定すると、コンパイラは、計算の異なったステップで、前記オペランドが読み取られる(又は書き込まれる)べきレジスタを特定する命令をスケジューリングする必要もある。これは、固定した時間関係で多数の命令がブロックとしてスケジューリングされなければならないということを意味する。しかし、これは他の命令をスケジューリングする際の柔軟性を制限するという短所がある。オペランドを作成する命令は、オペランドを読み取る命令の実行の前に各オペランドに書き込まなくてはならない(結果の使用に関しても同様の制約条件が当てはまる)。よって、命令のブロックは、命令を作成するブロックに対して厳しい制約を課し、これはレジスタ及び機能ユニットなどのリソースの非効率的な使用につながるかもしれない。
【０００９】
前記の引用文献は、「HALT」という命令をスケジューリングすることで、オペランドを読み取りまた結果を書き込む演算を、一時停止させることにより、これらの制約がいかに緩和されることができるかを説明する。プロセッサは、HALT命令の後に読み取られた演算の全てのオペランドを、一つの命令サイクル後に予期する(そして同様に一つの命令サイクル後に全ての結果を書き込む)。よって、HALT命令の実行は、オペランドを作成するか又は結果を消費する命令を、実行するための、追加時間を作成する。このように、より柔軟性のあるスケジューリングが可能になり、これはリソースを節約することを可能にする。
【００１０】
しかし、HALT命令は発行されなければならない追加の命令であり、よって、プログラムのために必要なメモリスペースを増加させ、他の命令の発行を妨げる。
【００１１】
【発明が解決しようとする課題】
中でも、本発明の目的は、異なった命令による選択の下で異なった命令サイクルで読み取られる複数のオペランドを必要とする計算を指令する命令を、実行することができるデータ処理装置に、追加の命令を必要とすることなく、命令のスケジューリングに柔軟性を提供することである。
【００１２】
【課題を解決するための手段】
本発明によるデータ処理装置は請求項１に記載される。データ処理装置は、マシン命令のプログラムを実行する。通常の命令は自己内蔵型であり、実行されるべき演算、オペランドの位置、及び結果の位置を特定するが、少なくとも一種類の命令が、引き続きの命令によるオペランドの特定を必要とする計算の実行を、装置に開始させる。本発明によれば、計算が開始された後にオペランドを特定するのに用いられるオペランド選択命令は、計算の実行の進行を制御する役目も果たす。計算が一時停止され、次のオペランド選択命令を待っている間に、他の命令が実行されてもよい。機能ユニットは、オリジナルの命令に応答して計算を開始する。オペランド選択命令が、オリジナルの命令の後の所定の時間帯の間に発行されれば、計算は、中断無しに通常どおり進行する。オペランド選択命令がもっと後で発行されれば、計算の実行は、オペランド選択命令が発行されるまで一時停止される。これは、コンパイラ又はスケジューラに、オペランド選択命令がスケジューリングされる時間を選択する柔軟性を与え、オペランドを発生させるか、又はオペランドの使用のためのレジスタを空ける、中間命令をスケジューリングする余地を与える。このように、より多くの命令のスケジューリングが実現されることが可能になり、リソースのより効率的な使用が可能になる。
【００１３】
好適な実施例では、機能ユニットは、計算の実行の間に機能ユニットに発行された演算コードを監視し、当該演算コードからオペランド選択命令を検知しようとする。演算コードが検知されないと、マルチオペランド命令の実行は一時停止される。これは、複雑なハンドシェイク機構の必要のない単純な遂行を提供する。好適には、このオペランド選択命令からのレジスタ選択コードは、演算コードの値に依存せず、機能ユニットに添付されたレジスタファイルのポートに直接供給される。しかし、オペランド選択命令に応答してオペランドがいつ使用可能になるかを検知するために、機能ユニットをレジスタファイルに接続するポートを監視することにより、オペランド選択命令に依存する計算の一時停止は、例えば機能ユニットでも実現されることができる。一つ以上のオペランドのバッファを可能にするため、ポートと機能ユニットとの間にFIFOキューすらあるかもしれない。
【００１４】
本発明による処理装置の実施例では、計算のステップが実行される順序は、オペランド選択命令により誘導される。よって、コンパイラ又はスケジューラは、計算のステップが実行される順序に影響を与える自由を得る。コンパイラ又はスケジューラは、この自由を、例えば、オペランドを発生させるために利用可能なリソースに順序を適応させるのに使用することができる。これは、より効率的なスケジュールにつながる。
【００１５】
本発明による処理装置の他の実施例では、計算の一時停止は、オペランド選択命令の発行と特定されたオペランドの有効性との両方に依存する。この場合、処理装置のプログラムは、例えばループボディの異なった実行の間オペランド選択命令を何度も発行するよう構成される。オペランドレジスタに加えて、オペランド選択命令は、オペランドのレジスタのコンテンツが有効なオペランドを既に表しているかを示す信号のため、信号レジスタを特定する。機能ユニットは、有効なオペランドを作成するオペランド選択命令が発行されるまで演算を一時停止する。
【００１６】
本発明による処理装置の他の実施例では、結果データを記憶するレジスタを特定する結果特定命令が所定の時間帯の間に受信されないときも、計算のステップの実行は一時停止される。好適には、結果特定命令の検知は、機能ユニットに発行される命令の結果特定命令の演算コードを検知することにより履行される。
【００１７】
本発明による処理装置の他の実施例では、結果特定命令は、結果が有効であるかを示す信号を記憶する信号レジスタも特定する。機能ユニットは、この信号を特定された信号レジスタに記憶する。このように、機能ユニットは、例えば新しい結果を作成する時間はオペランドに依存するため、結果特定命令が発行されたときには、結果がまだ得られていなくても進行することが可能である。
【００１８】
本発明の、これらの及び他の有利な側面が、後の図を用いてより詳細に説明される。
【００１９】
【発明の実施の形態】
図１は、命令発行ユニット10並びに多くの機能ユニット12a及び12b並びにレジスタファイル14並びに命令クロック16を含むプロセッサを示す。例としてVLIW(超長命令語)タイプのプロセッサが示される。命令発行ユニット10は種々の機能ユニット12a及び12bに接続された命令出力部を有する。機能ユニット12a及び12bはレジスタファイル14のポートに接続される。命令クロック16は命令発行ユニット10並びに機能ユニット12a及び12b並びにレジスタファイル14に接続される。
【００２０】
図１は機能ユニットの一つ12aをより詳細に示す。機能ユニット12aは、命令レジスタ120並びに命令復号器122並びにクロックゲート124並びに実行ユニット126並びに読み取りポート128a及び128b並びに書き込みポート129を含む。命令レジスタ120は、命令発行ユニット10に結合された入力部と、命令復号器122に結合された演算コード出力部と、読み取りポート128a及び128bに結合されたオペランド選択出力部と、書き込みポート129に結合された結果選択出力部と、を有する。読み取りポート128a及び128b並びに書き込みポート129は、レジスタファイル14に接続される。命令復号器は実行ユニット126に結合される。命令クロック16は、命令レジスタ120及び命令復号器122に結合される。命令クロック16はクロックゲート124を介して実行ユニット126に結合される。クロックゲート124は命令復号器122に結合されるイネーブル入力部を有する。
【００２１】
演算中、命令発行ユニット10は機能ユニット12a及び12bに命令を発行する。各命令サイクルにおいて、命令クロック16により示されるように、機能ユニット12a及び12bに新しい命令が発行される。この目的のため、命令発行ユニットは好適には、次の命令が取得されるべき命令メモリの中のアドレスを表示する、命令メモリ(明示されてはいない)及びプログラムカウンタ(明示されてはいない)を含む。プログラムカウンタは、各命令サイクルで増加するか、又は分岐命令に応答して分岐ターゲット値に変更されるかする。
【００２２】
通常、各命令は演算コード、二つのオペランドレジスタ選択コード、及び一つの結果レジスタ選択コードを含む。演算コードは、命令に応答して、機能ユニット12a及び12bにより実行されるべき演算の種類を特定する。オペランドレジスタ選択コードは、演算のためのオペランドが取得されるべきレジスタファイル14のレジスタを特定する。結果レジスタ選択コードは、演算の結果が書き込まれるべきレジスタファイル14のレジスタを特定する。
【００２３】
機能ユニット12aは、命令発行ユニット10から命令を受け、命令レジスタ120に命令を記憶する。命令レジスタ120は演算コード、オペランドレジスタ選択コード、及び結果レジスタ選択コードのための領域を有する。演算コードの領域のコンテンツは命令復号器122に供給される。オペランド選択コードの領域のコンテンツは、レジスタファイル14へ続く読み取りポート128a及び128bのレジスタアドレス部へ供給される。結果レジスタ選択コードの領域のコンテンツは、レジスタファイル14へ続く書き込みポート129のレジスタアドレス部へ供給される。命令復号器122は命令を復号し、これに応じて実行ユニット126に適切な制御コードを供給する。レジスタファイル14はレジスタアドレスを受け、アドレスされたレジスタからのデータを読み取りポート128a及び128bを介して実行ユニット126に出力する。実行ユニット126は演算(例えば加算)の実行に読み取りポートからのデータを用い、書き込みポート129に結果を出力する。
【００２４】
プロセッサでは、複数の機能ユニット(示されない)が、命令発行ユニット10の、同一の読み取りポート及び書き込みポート並びに同一の出力部に接続されていてもよい。この場合、命令発行ユニット10により発行される命令は、オペランドレジスタを用いて、命令で特定される結果レジスタに書き込むことにより、これらの機能ユニットの内どれが命令を実行するのかを決定する。
【００２５】
好適には、図１のプロセッサは、連続的な命令の実行の異なった段階が並行に実行されるパイプライン型プロセッサである。よって、例えばオペランドは、先の命令により指示された計算の実行中、及びそれよりも更に先の命令の結果の書き戻し中に、レジスタファイル14から取得される。同様に、オペランドが取得されると、命令発行ユニット10は後の命令を取得することになる。これは、命令の実行に関わる信号に種々の遅延を与えることにより実現される。本発明の図を単純にするため、このパイプラインの側面は図１の説明において明示されないままにされる。同一の命令の命令実行の、全てのパイプライン段階は、一つの段階として議論される。
【００２６】
通常、機能ユニット12a及び12bによる連続的な命令の実行は独立である。命令に応答して実行される演算は常に同じであり、当該演算の前に機能ユニットにより実行された命令とは無関係である。せいぜい機能ユニット12a及び12bは、後の命令の実行の間に用いられる状況コードを保持するくらいであり、しかもこれは稀なことである。各命令サイクルで、新しい命令の実行が開始されることができる。しかし、本発明によるプロセッサでは、これは多くのオペランドを必要とする演算の実行によって異なる。
【００２７】
本発明によるプロセッサでは、機能ユニット12aは二つ以上のオペランドを必要とする計算を実行するように構成される。実行ユニット126は、オリジナルの命令と呼ばれることになる命令に応答してこの計算を開始する。計算は、オリジナルの命令の後に実行されるオペランド選択命令に応答して取得されたオペランドを用いる。オリジナルの命令の演算コードは、オペランド選択命令に応答して取得されたオペランドをどうするかを決定する。
【００２８】
オリジナルの命令の演算コードに応答して、命令復号器122は、マルチオペランド計算を開始する実行ユニットへ制御コードを供給する。この計算は、命令クロックにより区切られるように、多くの命令サイクル中を進行する。オリジナルの命令サイクルが発行された命令サイクルに引き続いた一つ以上の命令サイクルにおいて、一つ以上のオペランド選択命令が発行される。オペランド選択命令は機能ユニットに命令のオペランド領域からレジスタファイル14へアドレスを渡すようにさせる。これに応じて、レジスタファイル14は、アドレスされたレジスタのコンテンツを実行ユニット126へ供給する。命令復号器122は、オペランド選択命令の演算コードから、この命令が機能ユニット12aのためのオペランド選択命令であることを検知する。これに応じて、命令復号器122はイネーブル信号をクロックゲート124へ供給し、命令復号器122は制御コードを実行ユニット126へ供給する。制御コードは、実行ユニット126が、オペランド選択命令に応答して取得されたオペランドを用いてオリジナルの命令により指令される計算の実行を進行することを可能にする。命令復号器122がオペランド選択命令を検知しないとき、命令復号器は、実行ユニット126のクロッキングを無効にするため信号をクロックゲート124へ送る。よって、計算の実行は、オペランド選択命令が発行されないとき一時停止される。これは、他の命令を実行することを可能にする、例えば、機能ユニット12bに、計算の実行が一時停止される期間にオペランドの計算を行うことを可能にする。実行の一時停止は、オリジナルの命令により指令された計算を実行している機能ユニット12aのみに影響を与えるということに注意する。他の機能ユニット、例えば、機能ユニット12b、及び、一時停止された機能ユニット12aと並行に命令発行ユニット10の同一の出力部並びにレジスタファイルの同一の読み取りポート及び書き込みポートに接続された、他の機能ユニット(示されない)による実行は、一時停止されない。これらの機能ユニットはオペランドの計算を行うのに使用されることができる。
【００２９】
当然、これは本発明の唯一つの実施例に過ぎない。この実施例では、このようなオペランド選択命令が一つよりも多く必要とされていれば、オペランド選択命令が受信されないとき、計算は各命令サイクルで一時停止される。他の実施例では、計算は、計算が実行される命令サイクルのサブセットでのみオペランドが必要とされる、より複雑な実行プロファイルを有する。異なったオペランド選択命令が実行される命令サイクルの間の命令サイクルからはオペランドは必要とされない。この実施例では、実行ユニット126は、オペランド選択命令が必要とされるかを示す、クロックゲート124に結合された出力部(示されない)を有する。クロックゲート126は、オペランド選択命令が必要とされており、命令の演算コードからこのような命令が検知されないときにのみ、クロックを無効にする。当然、オペランド選択命令が必要かどうかという決定は、命令復号器122によっても実行されることができ、クロックゲート124に対する無効信号の発生において用いられる。
【００３０】
他の実施例では、オペランド選択命令は、オペランドが実際に実行ユニット126に必要とされる前に実行されることができる。この実施例では、オペランド選択命令に応答して取得されたオペランドは、実行ユニット126にラッチされる。クロックゲート16は、命令復号器122からの信号により準備完了状態にセットされ、オペランド選択命令が受信されたことを示す。クロックゲート16は、クロックが準備完了状態になく、実行ユニット126がオペランド選択命令からのオペランドを必要としていると示すとき、クロックを無効にする。この場合クロックは、命令復号器122がオペランド選択命令を検知したと合図するまで、無効状態を保たれる。よって、オペランド選択命令はいかなる命令サイクルによってもスケジューリングされることができる。計算の実行は、オペランド選択命令が所定の命令サイクルよりも後にスケジューリングされたときにのみ一時停止される。
【００３１】
機能ユニット12aは、オペランド選択命令と同様の方法で結果レジスタ選択命令に応答するように構成されることができる。結果レジスタ選択命令は複数の結果を書き込まなければならない計算で用いられる。これらの命令は、オリジナルの命令により開始された計算の結果が書き込まれなければならないレジスタを特定する。オペランド選択命令の場合のように、実行ユニット126による実行は、結果レジスタ選択命令が期限までに受信されなかったときは一時停止される。
【００３２】
これまでに説明された実施例では、オペランド選択命令(又は結果レジスタ選択命令)の演算コードは、命令復号器122の命令を検知するのにのみ用いられる。実行ユニット126により遂行される計算は、これらの命令のタイミングに応じて一時停止されることができるが、他のことには影響されない。これは実行が最も簡単な実施例である。より複雑な実施例では、オペランド選択命令の演算コードはオペランドの位置を特定するだけでなく、オペランドの内どれが特定されるかも特定する。演算コードに応じて、命令復号器は実行ユニットに、指令された計算を何らかの順番で実行するよう命令する。例えば、二次元ブロック変換計算の場合、オペランド選択命令により示されるように、列が処理される順番は当該列へのオペランドデータが実行ユニット126に供給される順番に応じて選択されてもよい。同様に、結果レジスタ選択命令の演算コードは、結果が位置に追加して書き戻される順番を選択するのに用いられてよい。
【００３３】
図２は、図１に示されるプロセッサで用いられる機能ユニットを示す。この機能ユニットは、図２では計算はデータに依存した信号に応じて一時停止されることもできるということ以外は図１の機能ユニット12aと類似している。同様な番号は図１の同様な部品を示す。一時停止をデータに依存させるという目的のため、命令は、信号を含むレジスタを特定する追加の領域を含む。命令レジスタ120は、信号を読むためのレジスタ読み取りポート128cに結合された領域を含む。このポート128cの出力部はクロックゲート124と結合される。
【００３４】
演算では、実行ユニット126のクロックは、オペランド選択命令が検知され、読み取りポート128cから受信された信号が所定の値を有すると、命令復号器122が合図しない限り無効にされる。
以下は、この機能を用いる記号的プログラムのフラグメントの例である。
START COMPUTATION
REPEAT N TIMES UNTIL ENDOFLOOP
PRODUCE D,S
SELECT OPERANDS S,D
ENDOFLOOP
【００３５】
このプログラムのフラグメントは、図２の機能ユニットに供給される「START COMPUTATION」という命令によりマルチオペランド計算を開始する。その後、二つの命令(PRODUCE及びSELECT OPERAND)のループボディがN回実行される。PRODUCE命令は、レジスタDにデータを、レジスタSに該データが有効か特定する信号を、作成する。SELECT OPERAND命令は、START COMPUTATION命令により開始される計算のオペランドを供給するために図２の機能ユニットに供給される。SELECT OPERAND命令のオペランドの位置は、レジスタS及びDにより特定される。レジスタDからのデータが無効であるとレジスタSからの信号が示すと、計算は一時停止される。よって、無効なデータを扱うための条件分岐命令は必要でない。どのループボディの実行からオペランドが実際に供給されるかがプログラムから明白である必要はない。
【００３６】
START COMPUTATION命令により開始される演算中に使用されるオペランド及び信号を供給するための、レジスタD及びSの繰り返しの使用が可能なのは、この計算のオペランドが計算中に連続的に特定され供給されるためであるということに注意すべきである。オペランドが並行に供給されなければならなかったら、これらのオペランドを作成するループボディの異なった実行のために異なったレジスタが必要であった。
【００３７】
このプログラムのフラグメントはただ記号的なものであるということに注意する。命令は、説明の都合上名前を付けられた。説明に必要でない命令及びオペランドは省略された。実際には、PRODUCE命令は、レジスタDにデータを、レジスタSに信号を、作成する命令の塊を表すかもしれない。
【００３８】
図１の機能ユニット12aの文脈で説明された多様な代替の実施例は、図２の機能ユニットにも適用される。例えば、計算の一時停止は、実行ユニット126が実際にオペランドを必要とする命令サイクルに制限されてもよい。
【図面の簡単な説明】
【図１】  プロセッサの図。
【図２】  機能ユニットの図。