(57)【特許請求の範囲】
【請求項１】
それぞれが異なる複雑さのインストラクションを含む、複数のインストラクションスレッドからのインストラクションを実行する、マルチスレッド型プロセッサにおいて、
並列に前記インストラクションスレッドからの異なる複雑さのインストラクションを実行するための複数のパイプラインであって、前記異なる複雑さのインストラクションは異なるインストラクションセット構造からのインストラクションを含む、複数のパイプラインと、
インストラクションを発行し、各クロックサイクルにインストラクションをどのパイプラインへ発行するかを決定するためのインストラクションスケジューラーとを備え、
少なくとも１つのパイプラインは、複雑さの低いインストラクョンを実行するための低い待ち時間を有する速い経路と、高い複雑さを有するインストラクションを実行するための遅い経路との、２つのパイプライン経路を含み、さらに前記インストラクションスケジューラーは、２つのパイプライン経路のどちらで発行されたインストラクションを実行すべきか決定し、データクラッシュを生じないように、前記２つのパイプライン経路において前記発行されたインストラクションをスケジュールすることを特徴とする、
マルチスレッド型プロセッサ。
【請求項２】
前記インストラクションのいくつかは、デジタル信号処理（ＤＳＰ）インストラクションであり、前記遅い経路で実行されるようになっている請求項１に記載のマルチスレッド型プロセッサ。
【請求項３】
前記インストラクションのいくつかは、縮小インストラクションセットコンピュータ（ＲＩＳＣ）インストラクションである、請求項１又は２のいずれかに記載のマルチスレッド型プロセッサ。
【請求項４】
２つのパイプライン経路をもつパイプライン上の前記経路は、並列に前記インストラクションスレッドからの異なる複雑さのインストラクションを実行する、請求項１、２または３のいずれか１つの請求項に記載のマルチスレッド型プロセッサ。
【請求項５】
前記インストラクションには、それらが高い複雑さのものであるかどうか指示するフラグが関連付けられ、インストラクションに関連したフラグを検出するための手段と、その検出されたフラグに基づいてどの経路でインストラクションを実行すべきか決定するための手段とを備えた、請求項１から４のいずれか１つの請求項に記載のマルチスレッド型プロセッサ。
【請求項６】
２つのパイプライン経路のそれぞれで、当該経路で実行すべきインストラクションを同時に実行する、請求項１から５のいずれか１つの請求項に記載のマルチスレッド型プロセッサ。
【請求項７】
前記インストラクションスケジューラーは、２つのパイプライン経路が異なるクロックサイクルで実行を完了するようにそれらパイプライン経路においてインストラクションをスケジューリングする、請求項６に記載のマルチスレッド型プロセッサ。
【請求項８】
複数のインストラクションスレッドからのインストラクションを実行するための方法であって、
前記インストラクションスレッドは、マルチスレッド型プロセッサで異なる複雑さのインストラクションをそれぞれが含むものであり、
前記マルチスレッド型プロセッサは、並列に前記インストラクションスレッドからの異なる複雑さのインストラクションを実行するための複数のインストラクションパイプラインを備えるものであり、
異なる複雑さの前記インストラクションは、異なるインストラクションセット構成からのインストラクションを含むものであり、
前記方法は、
インストラクションをどのインストラクションパイプラインに発行するかをインストラクションスケジューラーで決定するステップであって、少なくとも１つのインストラクションパイプラインは速いパイプライン経路と遅いパイプライン経路とを含むステップと、
２つの前記パイプライン経路のどちらで発行されたインストラクションを実行すべきかインストラクションスケジューラーで判断するステップと、
データクラッシュを生じないように前記発行されたインストラクションを２つの前記パイプライン経路においてスケジューリングするステップと、
前記速いパイプライン経路で低い複雑さと待ち時間のインストラクションを実行し、かつ前記遅いパイプライン経路で高い複雑さと待ち時間のインストラクションを実行するステップと、
を備えた方法。
【請求項９】
前記インストラクションの幾つかは、デジタル信号処理（ＤＳＰ）インストラクションであり、前記遅いパイプライン経路で実行される、ことを特徴とする請求項８に記載の方法。
【請求項１０】
前記インストラクションの幾つかは、縮小インストラクションセットコンピュータ（ＲＩＳＣ）インストラクションであり、前記速いパイプライン経路で実行される、請求項８又は９のいずれかに記載の方法。
【請求項１１】
パイプラインの前記２つのパイプライン経路を共通のクロック信号でクロックするステップを備えた、請求項８から１０のいずれか１つの請求項に記載の方法。
【請求項１２】
インストラクションが高い複雑さのものであるかどうか指示するフラグを各インストラクションに関連付けるステップと、インストラクションに関連したフラグを検出しそしてその検出されたフラグに基づいてインストラクションをどのパイプライン経路で実行すべきか決定するステップとを更に備えた、請求項８から１１のいずれか１つの請求項に記載の方法。
【請求項１３】
２つのパイプライン経路上のそれぞれで、当該経路で実行すべきインストラクションを同時に実行するステップを備えた、請求項８から１２のいずれか１つの請求項に記載の方法。
【請求項１４】
前記２つのパイプライン経路が異なるクロックサイクルで実行を完了するようにそれらパイプライン経路においてインストラクションをスケジューリングするステップを備えた、請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のインストラクションスレッド（パイプライン）からのインストラクションを実行するのに使用できる形式のパイプラインプロセッサに係り、より詳細には、複数のパイプラインを使用して、単一パイプラインにより以前に与えられた機能を行って、可能な限り低い待ち時間を維持できるようにすることにより、マイクロプロセッサの既存のバージョンとの両立性を維持しながら高いクロック速度でパイプラインからマイクロプロセッサへのインストラクションをスケジューリングすることを求めるものである。
【背景技術】
【０００２】
マイクロプロセッサの実施及び開発の分野では、クロック速度及び／又は性能の改善によりマイクロプロセッサコアの能力を進歩し続けることが一般的な慣習である。クロック速度は、実施技術の改善につれて集積回路上の特徴部のサイズを益々小さくできる進歩型シリコンプロセス技術により改善することができる。しかしながら、おそらく、クロック速度の大きな改善は、装置のロジックの実施のオーバーホールを必要とする。典型的に、これは、マイクロプロセッサでは、１つのインストラクションがより多くのパイプラインステップを取り且つ各ステップがそのマイクロプロセッサの以前の実施で使用された周期より短くなるように、プロセッサのインストラクションパイプラインを再編成することを必要とする。
【０００３】
しかしながら、サイクル当たりの性能は、再パイプラインによりおそらく若干損なわれる。サイクル当たりの性能を改善するために、あるオペレーションの結果を予想し、特に、プログラムの流れ（分岐、ジャンプ、コール、復帰、等）を制御するインストラクションシーケンスの結果を予想するような、多くの進歩型技術を使用することが必要となる。一般的に、演算のような機能は、マイクロプロセッサの以前の実施に対し性能が若干低いが、最高クロック速度の増加及びプログラムフローの改善は、全体的なソフトウェア性能を、長いパイプラインがそれを低下させる以上に、改善させる。
【０００４】
上述した形式のマルチスレッドマイクロプロセッサが、本出願人の英国特許第ＧＢ２３１１８８２号に説明されている。これは、複数のインストラクションパイプラインからのインストラクションを受け取って実行できるマルチスレッド型プロセッサを備えている。種々の実行パイプラインの状態を監視するスケジューリングロジックは、各クロックサイクルにおいてどのパイプラインのインストラクションを実行すべきか決定する。このシステムの開発は、各インストラクションパイプラインのより特定の属性、例えば、実行を完了するための時間、インストラクションの平均実行速度、等を監視することにより、スケジューリングを改善する。
【０００５】
しかしながら、これらの特徴は、本発明の実施形態にとって重要でない。本発明の実施形態にとって意義のある１つの特徴は、単一パイプラインにおいて縮小インストラクションセットコンピュータ（ＲＩＳＣ）及びデジタル信号プロセッサ（ＤＳＰ）インストラクションセットのような異なるインストラクションセット間に区別があることである。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
マイクロプロセッサのためのクロック速度限界を高めつつ現在の相対的性能を維持することが望まれることは明らかである。実際上、一方のカウントをクロック速度とし、他方のカウントをクロックサイクル当たりのインストラクションとすれば、一度に２つのカウントについての性能を改善することが望まれる。
【課題を解決するための手段】
【０００７】
本発明の好ましい実施形態は、プログラマーにとって、対応するマイクロプロセッサの従来の実施から単一パイプラインと同じであるように見える、異なる長さの複数のパイプラインを提供することを求めるものである。これは、インストラクションを、そのインストラクションの要件に基づいて正しいパイプラインへルーティングするインテリジェントなインストラクションスケジューリングに結合された単一演算パイプライン又はＡＬＵに関連した複数のパイプラインを提供することにより達成される。これに加えて、インストラクションスケジューラーは、特定のインストラクションに対する待ち時間を、どのパイプラインが使用されるかに基づいてそれが変化するとすれば、正しくモデリングする必要がある。
【０００８】
以下、添付図面を参照して、本発明の好ましい実施形態を一例として詳細に説明する。
【図面の簡単な説明】
【０００９】
【図１】マルチスレッド型プロセッサのブロック図である。
【図２】実行スレッドの各クロックサイクルにおけるステップを示す図である。
【図３】短いクロックサイクルの作用を示す図２の変形例である。
【図４】同じスレッドを通る２つの個別の経路に対するステップを示す。
【図５】同じスレッドにおける２つの経路を通るインストラクションの誤ったスケジューリングで生じ得る問題を示す。
【図６】図５の正しくスケジューリングされたバージョンを示す。
【図７】２つのパイプラインをもつスレッドのブロック図である。
【図８】高速パイプラインのブロック図である。
【図９】低速パイプラインのブロック図である。
【図１０】同じ一般的な形態のインストラクションを区別するのに使用される比較的簡単な方法を示す。
【発明を実施するための形態】
【００１０】
本出願人の英国特許第ＧＢ２３１１８８２号に説明されたマルチスレッド型マイクロプロセッサは、図１に示す形式のものである。このプロセッサは、２で示された合計Ｎ＋１個の実行スレッドを有し、それらは、スレッドインストラクションスケジューラ１へ通され、このスケジューラは、どのインストラクション（１つ又は複数）を次に実行するかを決定する。この例では、２つのパイプラインがあり、その第１は、アドレスユニット４であり、そしてその第２は、データユニット５である。マイクロプロセッサは、多数の異なる能力をサポートする。第１に、これは、システムプログラム、例えば、典型的な近代的なマイクロプロセッサの予想される埋め込み型ソフトウェア又はオペレーティングシステムを実行することができる。しかしながら、これは、デジタル信号処理（ＤＳＰ）アクティビティを遂行するように連動されてもよい。ＤＳＰは、通常、特定のＤＳＰアルゴリズムをデータストリームに適用してそれらを有用なエンドユーザ情報へと転じさせる無線、オーディオ及びビデオのようなアプリケーション領域を取り扱うときに使用される。マイクロプロセッサは、それらの寿命スパンにわたって、クロックサイクル当たりより多くのプロセスを実行するか、又は毎秒より多くのプロセッサクロックサイクルを実行する（ＣＰＩ又はＭＩＰＳ）ことから、より高い性能を達成するために設計し直されるのが有用である。
【００１１】
本発明の実施形態は、毎秒より多くのプロセッサクロックサイクルを使用する。これを達成するために、各個々のクロックサイクルは、あまり時間を要してはならず、それ故、演算オペレーションのようなパイプラインタスクを短い時間内に遂行することが必要である。装置の製造に使用されるシリコンプロセス（ダイ収縮として知られているプロセス）の変更により、あるときには、これが可能である。しかしながら、プロセスを変更せずに改善を行うことも必要であることは明らかである。
【００１２】
ダイ収縮に代わる１つのプロセスは、所与のオペレーションを遂行するのに、より多くのパイプライン段を使用することである。例えば、演算オペレーションを遂行するのに１サイクルが割り当てられたパイプラインは、同じオペレーションを遂行するのに２サイクルを使用して、各サイクルが半分の長さで済むようにし、それ故、２倍の速さで進むようにすることができる。このような解決策が使用される場合、余分なパイプライン段が、ソフトウェアプログラマーに見える付加的な待ち時間をパイプラインに含ませる。これは、マイクロプロセッサで実行されるプログラムが、オペレーションのフローに結果を使用するまで、結果が得られるのを待機する必要があることを意味する。パイプラインが２倍の速さで実行する場合、プログラムは、結果に対して１サイクル待機する必要があり、最終結果は、装置が非常に高いクロック速度を有するが、実際には、そのマイクロプロセッサの初期の世代より良好に働かないことになる。
【００１３】
これらのトレードオフをバランスするために使用される通常の方法は、スーパースカラー実行及び順序ずれ完了を含む。これらの技術は、ストールしたインストラクションを、その近傍の無関係のインストラクションが追い越すのを許す。しかしながら、この解決策の欠点は、非常に複雑なことである。
【００１４】
図１に示す形式のマイクロプロセッサは、２つの主たる観点を考慮する必要がある。第１に、埋め込み型システム又はオペレーティングシステム、例えば、ＬＩＮＵＸから汎用ソフトウェアをサポートすることができる。第２に、デジタル信号処理（ＤＳＰ）をサポートすることができる。少なくとも演算パイプラインに関する限りこれら２セットの機能には差がある。ＤＳＰ機能は、汎用セットにおけるオペレーションに余計なオペレーションを追加する。例えば、（とりわけ）丸め及び飽和の概念を合体するように機能を拡張することにより汎用の追加がＤＳＰの追加となる。
【００１５】
本発明の実施形態は、これら全ての機能を遂行できるパイプラインであって、ＤＳＰの付加的なオペレーションを伴わない汎用区分を複写して、汎用パイプラインを短く保持し、待ち時間の問題を回避できるようなパイプラインを取り上げる。それ故、汎用ソフトウェア及びＤＳＰ機能を伴う単一のパイプラインを従来有していたマイクロプロセッサは、今や、２つのパイプラインを有し、その一方は、汎用のソフトウェア機能のみを遂行し、そしてその他方は、汎用のソフトウェア機能及びＤＳＰ機能を遂行するものである。これらの２つのパイプラインは、異なる目的で使用され、即ち汎用機能及びＤＳＰ機能に使用される。これは、アプリケーション及び／又はオペレーティングシステムを実行するのに使用されるインストラクションの大半を、待ち時間を増加せずに高いクロック速度で実行できるようにする。同時に、ＤＳＰコードは、従来と同様に実行でき、且つ働くことができる。しかしながら、他のパイプラインからのデータに依存する場合には、より頻繁にストールするおそれがある。
【００１６】
本発明を実施できる形式のマイクロプロセッサのブロック図が、上述した図１に示されている。これは、スレッドインストラクションスケジューラへインストラクションを与えるインストラクションフェッチエンジン・インストラクションデコーダ２を備えている。インストラクションは、インストラクションキャッシュ３又はオンチップＲＡＭから検索される。この図におけるパイプラインは、例えば、アドレスユニット４及びデータユニット５である。他の可能性もある。
【００１７】
図２は、１つのクロックサイクル内に含まれるインストラクションパイプラインの主たる機能を示す。これは、ＡＬＵサイクルである。このようなパイプラインは、多数の異なるインストラクション形式をサポートすることができ、特に、汎用オペレーティングシステムコード又はＤＳＰ機能を実行することに関連している。マイクロプロセッサ設計の分野では、ＤＳＰプログラム及び非ＤＳＰプログラムをサポートし且つそれらの間を区別できることが知られている。
【００１８】
図２において、各ボックスは、クロックサイクルを表す。各クロックサイクルで遂行されるステップは、次の通りである。
１．インストラクションを検索するためにインストラクションキャッシュへアドレスを送信するインストラクションキャッシュアドレス発行
２．フェッチされたインストラクションを返送するインストラクションフェッチデータ返送
３．インストラクションがＡＬＵによる分岐の遂行を要求するかどうかに関して予想を行う分岐予想ＡＬＵ
４．インストラクションが前デコード段を経て進むところの前デコード
５．インストラクションを発行する発行
６．インストラクションがインストラクション発行と同時にその後デコード段を経て進むところの後デコード
７．どのインストラクションを動作すべきかのデータを検索するオペランドフェッチ
８．ＡＬＵにおいてオペランドでインストラクションを実行するところのＡＬＵ
９．ＡＬＵの出力を適切なレジスタへ書き戻すレジスタ書き戻し
１０．データフェッチアドレス発行
１１．データフェッチヒット／ミス
１２．データ返送及び書き戻し
【００１９】
ステップ１０、１１及び１２は、データキャッシュ又はデータメモリへのアクセスを与えるので、プロセッサの一体的部分となるステップである。
【００２０】
このようなマイクロプロセッサが縮小インストラクションセットコンピュータ（ＲＩＳＣ）をベースとする場合には、ＤＳＰインストラクションは、基本的インストラクションセットを越える拡張であると考えることができる。これらの拡張は、ある領域にしか適用できないのが最も一般的である。典型的な領域は、ＤＳＰが飽和及び丸めのような付加的な能力を要求する乗算及び他の演算を含む。
【００２１】
本発明の好ましい実施形態において、クロック速度の上限が上昇するにつれて、マイクロプロセッサのサイクル時間がより小さくなる。それ故、各サイクルに要求される機能を遂行するための時間は徐々に短くなる。加算、減算、シフト、乗算、等の主たる演算オペレーションの場合に、これらオペレーションのＤＳＰバリアントは、非ＤＳＰバリアントより大きな時間プレッシャーのもとに存在することになる。これは、ＤＳＰバリアントが非ＤＳＰ機能の上に付加的なステップを有するからである。
【００２２】
マイクロプロセッサの最高速度を、以前の実施形態の速度を越えて増加できるよう確保するためには、各々の時間が短いより多くのサイクルが存在するように設計を再パイプライン化する必要がある。図２のパイプラインの再パイプライン化の一例が図３に示されている。
【００２３】
明らかに、クロック速度の上限の上昇は、パイプラインの完全な部分に対して付加的なサイクルを使用することにより達成できる。例えば、図１において、インストラクションキャッシュのルックアップは、２つのサイクル（１及び２）を要するが、図２では、４つのサイクル（１３、１４、１５及び１６）を要する。これら付加的なサイクルは、各個々のサイクルで遂行されるものが少ないために要求される。それ故、装置がより高い速度でクロックするためには１サイクルの時間を短くする必要があるので、より多数のサイクルにわたって同じ量の作業を分散させる必要がある。
【００２４】
図３において、付加的なステップは、１４及び１５で示され、インストラクションキャッシュから発行されるべきインストラクションを検索するのに必要な付加的な時間を含む。この付加的な時間は、短縮されたサイクル周期の結果である。
【００２５】
ステップ１７は、フェッチ予想ＡＬＵである。これは、インストラクションに関連した分岐及び復帰予想を含み、良く知られたプロセスである。
【００２６】
ステップ１８では、前デコードが、インストラクションを、ＤＳＰ又は非ＤＳＰ特性を含むその要件へと解体し、そしてそれを使用して、どのパイプライン経路を使用するかを決定する。高速パイプライン経路を使用すべきか低速パイプライン経路を使用すべきかを指示するフラグが前デコードステップから出力される。これは、インストラクションの発行には影響しないが、将来の発行には影響する。というのは、インストラクションの発行が要求されたときにユニットがビジーであるか、又は書き込まれているレジスタが書き込み後に長い読み取り又は書き込みを行うことになる（即ち、レジスタハザード）からである。それ故、この特定の実施形態において低速経路フラグ及び可変将来スケジューリングハザードが適用されるのは、これらの演算ユニットについてのみである。
【００２７】
ステップ２２及び２３は、ＡＬＵ１及びＡＬＵ２と示されており、サイクル周期減少のためにＡＬＵがインストラクションを実行するのに必要な付加的な時間である。
【００２８】
この再パイプ化実行の主たる効果は、装置が毎秒より多くのサイクルを達成できることである。各サイクルにインストラクションをスタートできる場合には、それが、直接、秒当たりより多くのインストラクションとなる。しかしながら、あるインストラクションがその手前のインストラクションの完了を待機しなければならない（例えば、その結果を利用するために）場合には、再パイプライン化の後に、より多くのサイクルを待機することが必要になるという欠点がある。この付加的な待機時間は、短いサイクル周期により得られる速度の上昇に反作用し、マイクロプロセッサは、毎秒同じ数のインストラクションを追求して終了することができる。
【００２９】
本発明の好ましい実施形態は、遂行が容易なインストラクションを、遂行が困難なインストラクションから区別する。遂行が容易なものは、マイクロプロセッサの従来の実施と同じ待ち時間で実行されるよう試みられる。これを達成するために、重要な機能のセットに対して演算パイプラインが複製され、低待ち時間の完了容易なインストラクションに対する高速経路と、ＤＳＰインストラクションのような複雑なインストラクションに対する低速経路とが存在するようにされる。更に、インストラクションスケジューリングは、当該インストラクションを必要な高速又は低速パイプラインへルーティングし、そしてフライト中のレジスタを追跡して、継続インストラクションが発行されるときを正確に決定できるようにするための変更を必要とする。その間、マイクロプロセッサを動作するためのプログラマー発生インストラクションに関する限り、装置の以前の実施と同じ形態の単一パイプラインが存在することが明らかである。
【００３０】
この構成の重要な部分が図４に示されている。プログラムに関する限り、プロセッサは、初期の実施で存在した同じパイプラインを有するようにみえる。しかしながら、本発明の実施形態によれば、インストラクションのスケジューリングの変更は、１つ以上のスレッドが、一対のパイプラインを、それらパイプラインがクラッシュすることのない充分なコヒレンシーで使用するように、行われる。２つのパイプラインが異なる待ち時間を有するので、ハザードが存在する。図４の例では、高速パイプラインが１つのＡＬＵサイクル２８を有し、一方、第３のパイプラインが２つのＡＬＵサイクル３２及び３３を有する。それ故、低速パイプラインを下るインストラクション発行がなされる場合には、次のサイクルに、高速パイプラインを下るインストラクション発行がなされることはあり得ない。これは、２つのパイプラインが図５に示すように同じサイクルで終了してデータクラッシュを招くことになるからである。
【００３１】
この問題を解決するために、インストラクションスケジューラーは、このクラッシュがトリガーされると決定した場合にインストラクションの発行を拒絶できるようにプログラムすることができる。例えば、低速経路と高速経路との間に衝突を発生することなくこれを実行できると決定するまで第２のインストラクションを発行しないようにプログラムすることができる。これが図６に示されている。明らかに、第１のインストラクションは、低速インストラクションの２サイクル後に発行される。しかしながら、低速インストラクションより１サイクル早く実行し、それ故、低速インストラクションの１サイクル後に実行を完了する。
【００３２】
それ故、インストラクションスケジューラーは、低速パイプラインインストラクションがちょうど発行されたときを追跡し、次のサイクルにそれに対応する高速パイプラインへのインストラクションの発行を防止するようにプログラムされる。これは、パイプラインにおいて遂行される最後のアクションを記録する各パイプラインのデータレコードを維持することにより行われる。次いで、これを使用して、同じパイプラインに許される次のアクションを決定することができる。インストラクションスケジューラーのこの部分は、全てのスレッドに適用され、従って、スレッドごとのベースではなく、パイプラインごとのベースで制御される。
【００３３】
インストラクションの各実行スレッドは、サイクルにおいてインストラクションを発行するかどうか決定する必要がある。これは、そのスレッドが、過去に発行されたインストラクションへの依存性を有するかどうかに依存する。例えば、あるインストラクションがメモリからレジスタにロードされ、その後、そのレジスタで演算オペレーションが行われる。それ故、古いインストラクションからの結果が新しいインストラクションにより要求されるかどうか決定するためにスレッドが古いインストラクションと新しいインストラクションとの間の依存性を監視することが必要である。レジスタインターロックは、まだ進行中のオペレーションのレコードを維持し、そして１つのパイプラインから、一方が他方より低速の２つのパイプラインへの変更が、これらレジスタインターロックに影響を及ぼす。
【００３４】
低速パイプラインへ送られるインストラクションは、高速パイプラインを下るように送られるインストラクションに比して、余分なインターロックを必要とする。これらの余分なハザードは、より多くのサイクルインストラクションを、低速パイプラインを下るように通過させ、そしてその結果をレジスタへ返送させるために生じる。パイプラインインターロックと同様に、これらのハザード及びインターロックは、インストラクションが低速パイプラインへと発行されるときを記録し、その情報を使用して、別のインストラクションが発行されるときを決定することにより、管理される。パイプラインへのアクセスに勝利する他のスレッドのような外部ファクタは、スレッドがそのサイクルにおいて発行するのを防止できるが、少なくともスレッドは、インストラクションを発行するのがいつ安全であるか否かを知り、それ故、主たるマルチスレッド型インストラクションスケジューラーへ発行するか否かを信号することができる。
【００３５】
図７は、ある付加的なインフラストラクチャーを伴う高速及び低速パイプラインを実施するハードウェアを示す。これは、パイプライン２０及び２２を各々通る低速経路及び高速経路を備えている。各スレッドに対してレジスタファイル２４が保持される。これらは、マルチスレッド型プロセッサの各スレッドに対してレジスタの個別セットが保持されるようにしてレジスタアレイにおいて一緒にグループ編成される。マルチスレッド型レジスタファイルからのデータは、マルチプレクサ２６及び２８を経て低速又は高速経路２２、２４へデータを与えるように選択される。これらマルチプレクサからの出力は、低速経路又は高速経路のいずれかへ与えられる。「低速経路使用」又は「高速経路使用」を指示する信号と共に制御信号も各経路に与えられる。低速経路又は高速経路のいずれかによって処理された後、更に別のマルチプレクサ３０が、各レジスタファイル又は複数のファイルへ書き戻すための出力を選択する。例えば、一対の数字を加算又は減算できるようにするため、各サイクルに２つの端がフェッチされるようにレジスタの対をルックアップすることが必要となる。明らかなように、２つのパイプラインに制御信号を送信することが必要である。所与のサイクルに１つのパイプラインしか使用されないので、これは、共通の信号である。それ故、この制御信号は、両パイプラインに対して共通である。
【００３６】
しかしながら、各パイプラインは、独立して実行すべきものであるから、どれがアクティブであるか制御するために各々に対して個別の制御信号（「低速経路使用」：「高速経路使用」）が与えられる。特定のサイクルには１つのパイプラインしか動作しないので、これらの制御は、相互に排他的である。
【００３７】
２つのパイプラインからの出力をマルチプレクサ３０でマルチプレクスして、各サイクルに、一体化された単一の書き戻しをレジスタファイルへ与える必要があることに注意されたい。一般的に述べると、高速パイプラインは、低速パイプラインのサブセットである。高速パイプラインの一例が図８に示されている。これは、演算パイプラインの原理的特徴を示す。これらは、時間と共に情報の流れを制御するパイプラインレジスタ段３２及び３４、演算機能、例えば、加算３６、減算３８、シフト及び論理演算４０、並びに分類された考えられる演算機能を単一の結果へと合体するのに使用されるマルチプレクシングユニット４２である。
【００３８】
低速経路は、図９に示す同様の形態をたどる。これから明らかなように、高速及び低速パイプラインの構造は基本的に同じである。原理の相違は、低速パイプラインが作業遂行のために余分なパイプライン段をとることである。この例では、遂行される余分な作業は「丸め(ROUNDING)」４２及び「飽和(SATURATION)」４４を含むＤＳＰ演算である。これは、他のパイプラインから他の資料を要求することがある。例えば、メモリジェネレータは、ＤＳＰの目的でそれらに関連付けられたモジュラーアドレッシング機能を有する。低速経路の端には、更に別のレジスタ４６が設けられている。
【００３９】
インストラクションスケジューラーが各インストラクションの正しいルートを決定するためには、インストラクションの形式を区別する何らかの手段が要求される。これは、図１０に示すように、同じ一般的形態のインストラクションを区別するのに使用される単一インストラクションにおける比較的簡単な方法で達成される。
【００４０】
この図から明らかなように、インストラクションは同様の情報を含む。主たる相違は、インストラクションをＤＳＰインストラクションとするか否かの単一ビットから生じる。フラグは、どんなインストラクションが行われるかの幾つかの観点を制御する。例えば、レジスタからのデータとは対照的にオペランドの１つがゼロであることを指示するためにフラグを使用することができる。
【００４１】
各インストラクションを区別するために複雑な方法を使用することもできる。その場合には、図２又は３の前デコード段の前に付加的なデコード段が必要となる。インストラクションデコーダ段のクロック速度に影響せずに余分な作業を行うことができる。決定が前もってなされ且つインストラクションスケジューラーにインストラクションが与えられるとすれば、インストラクションの複雑さのあらゆる種類のレベルが考えられる。
【符号の説明】
【００４２】
１：スレッドインストラクションスケジューラー
２：インストラクションフェッチエンジン・インストラクションデコーダ
３：インストラクションキャッシュ
４：アドレスユニット
５：データユニット
【図１】
0005646448.tif 000002
【図２】
0005646448.tif 000003
【図３】
0005646448.tif 000004
【図４】
0005646448.tif 000005
【図５】
0005646448.tif 000006
【図６】
0005646448.tif 000007
【図７】
0005646448.tif 000008
【図８】
0005646448.tif 000009
【図９】
0005646448.tif 000010
【図１０】
0005646448.tif 000011