(57)【要約】【課題】【解決手段】ＳＭＴプロセッサ内のそれぞれの命令スレッドを、ソフトウェアによって割り当てられた基準入力処理優先度に関連づける。処理中の命令またはこれから処理する命令にあらかじめ定義されたある事象または状況が生じない限り、それぞれのスレッドの基準入力処理優先度を使用して、スレッド間のインタリーブ頻度を、ある命令インタリーブ規則に従って決定する。しかし、特定の命令スレッドに関連したあらかじめ定義されたある事象または状況がプロセッサ内で発生したら、１つまたは複数の命令スレッドの基準入力処理優先度を調整して、１つまたは複数の調整済み優先度値を生成する。次いで、１つまたは複数の調整済み優先度値および調整を受けていない基準入力処理優先度値に従って命令インタリーブ規則を執行する。【選択図】図２
2004326766.tif 000002
【特許請求の範囲】
【請求項１】
同時マルチスレッディング・プロセッサにおけるいくつかの命令スレッド間の命令のサイクル単位のインタリービングを制御する方法であって、
（ａ）前記いくつかの命令スレッドに含まれる第１の命令スレッドに関連した第１の基準入力処理優先度を指示する第１の優先度信号を受け取る段階と、
（ｂ）前記いくつかの命令スレッドの１つに関連したフィードバック信号を受け取る段階と、
（ｃ）前記第１の基準入力処理優先度を調整して、前記フィードバック信号に応答した第１の調整済み入力処理優先度を生成する段階と、
（ｄ）前記第１の調整済み入力処理優先度および少なくとも１つの他のスレッド処理優先度にインタリーブ規則を適用して、前記いくつかの命令スレッドからの命令のインタリービングを制御するスレッド選択制御信号を生成する段階と
を含む方法。
【請求項２】
前記フィードバック信号に応答して、前記第１の基準入力処理優先度と前記第１の調整済み入力処理優先度との間の選択を実施する段階をさらに含む、請求項１に記載の方法。
【請求項３】
フィードバック信号を受け取る前記段階が、長い待ち時間事象に関連した信号を受け取ることを含む、請求項１に記載の方法。
【請求項４】
前記長い待ち時間事象が前記第１の命令スレッドに関連し、前記第１の基準入力処理優先度を調整する前記段階が、前記第１の基準入力処理優先度を引き下げることを含む、請求項３に記載の方法。
【請求項５】
前記長い待ち時間事象が前記第１の命令スレッド以外の命令スレッドに関連し、前記第１の基準入力処理優先度を調整する前記段階が、前記第１の基準入力処理優先度を引き上げることを含む、請求項３に記載の方法。
【請求項６】
（ａ）前記いくつかの命令スレッドに含まれる第２の命令スレッドに関連した第２の基準入力処理優先度を指示する第２の優先度信号を受け取る段階と、
（ｂ）前記第２の基準入力処理優先度を調整して、前記フィードバック信号に応答した第２の調整済み入力処理優先度を生成する段階と、
（ｃ）前記第１の調整済み入力処理優先度および少なくとも前記第２の調整済み入力処理優先度に前記インタリーブ規則を適用して、前記いくつかの命令スレッドからの命令のインタリービングを制御する前記スレッド選択制御信号を生成する段階と
をさらに含む、請求項１に記載の方法。
【請求項７】
同時マルチスレッディング・プロセッサにおけるいくつかの命令スレッド間の命令のサイクル単位のインタリービングを制御する際に使用する回路であって、
（ａ）前記いくつかの命令スレッドに含まれる第１の命令スレッドに関連した第１の基準入力処理優先度を指示する優先度信号を受け取る第１の優先度入力と、
（ｂ）前記いくつかの命令スレッドの１つに関連したフィードバック信号を受け取るフィードバック入力と、
（ｃ）前記第１の優先度入力に結合された第１の入力と、前記フィードバック入力に結合された第２の入力と、出力とを含み、前記第１の基準入力処理優先度を調整して、前記フィードバック信号に応答した第１の調整済み入力処理優先度信号を生成する第１の調整論理と、
（ｄ）前記第１の調整済み入力処理優先度および少なくとも１つの追加の処理優先度を受け取り、前記第１の調整済み入力処理優先度に部分的に基づいてスレッド・インタリーブ制御信号を生成するインタリーブ規則執行回路と
を含む回路。
【請求項８】
前記第１の調整論理が、前記命令スレッドの前記第１の基準入力処理優先度と前記第１の調整済み入力処理優先度との間の選択を実施する出力選択回路を含む、請求項７に記載の回路。
【請求項９】
前記出力選択回路がマルチプレクサとマルチプレクサ制御とを含む、請求項８に記載の回路。
【請求項１０】
前記フィードバック入力が、長い待ち時間事象に関連したフィードバック信号を受け取る入力である、請求項７に記載の回路。
【請求項１１】
（ａ）前記長い待ち時間事象が前記第１の命令スレッドに関連し、
（ｂ）前記第１の調整論理が、前記第１の基準入力処理優先度を引き下げる減算装置を含む、
請求項１０に記載の回路。
【請求項１２】
（ａ）前記長い待ち時間事象が前記第１の命令スレッド以外の命令スレッドに関連し、
（ｂ）前記第１の調整論理が、前記第１の基準入力処理優先度を引き上げる加算装置を含む、
請求項１０に記載の回路。
【請求項１３】
（ａ）前記いくつかの命令スレッドに含まれる第２の命令スレッドに関連した第２の基準入力処理優先度を指示する第２の優先度信号を受け取る第２の優先度入力と、
（ｂ）前記第２の優先度入力に結合された第１の入力と、前記フィードバック入力に結合された第２の入力と、出力とを含み、前記第２の基準入力処理優先度を調整して、前記フィードバック信号に応答した第２の調整済み入力処理優先度信号を生成する第２の調整論理と
をさらに含み、
（ｃ）前記インタリーブ規則執行回路が、前記第２の調整済み入力処理優先度を受け取り、前記第２の調整済み入力処理優先度に部分的に基づいて前記スレッド・インタリーブ制御信号を生成する回路である、
請求項７に記載の回路。
【請求項１４】
同時マルチスレッディング・プロセッサにおけるいくつかの命令スレッド間の命令のサイクル単位のインタリービングを制御する回路であって、
（ａ）前記いくつかの命令スレッドに含まれる第１の命令スレッドに関連した第１の基準入力処理優先度を指示する第１の優先度信号を受け取る第１の入力と、前記第１の命令スレッドに関連した第１の調整済み入力処理優先度を指示する第１の調整済み優先度信号を供給する出力とを含む第１の調整論理と、
（ｂ）制御信号を受け取る制御入力と、前記第１の調整論理の前記第１の入力に結合された基準優先度入力であって、前記第１の優先度信号を受け取る入力と、前記第１の調整論理の前記出力に結合された調整済み優先度入力であって、前記第１の調整済み優先度信号を受け取る入力と、前記第１の優先度信号と前記第１の調整済み優先度信号のうちの選択された一方の信号を含む第１の最終的な調整済み優先度信号を供給する出力とを含む第１のマルチプレクサと、
（ｃ）前記いくつかの命令スレッドの１つに関連したフィードバック信号を受け取る入力と、前記第１のマルチプレクサの前記制御入力に結合され、前記第１の優先度信号または前記第１の調整済み優先度信号を選択する制御信号を供給する出力とを含む第１のコントローラと、
（ｄ）前記マルチプレクサの前記出力に結合された第１の入力と、スレッド選択制御信号を供給する出力とを含む規則執行回路であって、前記第１の最終的な調整済み優先度信号および少なくとも１つの他の優先度信号にインタリーブ規則を適用して、前記いくつかの命令スレッドからの命令のインタリービングを制御するスレッド選択制御信号を生成する回路と
を含む回路。
【請求項１５】
前記フィードバック信号が長い待ち時間事象に関連している、請求項１４に記載の回路。
【請求項１６】
（ａ）前記長い待ち時間事象が前記第１の命令スレッドに関連し、
（ｂ）前記調整論理が、前記第１の基準入力処理優先度を引き下げる減算装置を含む、
請求項１５に記載の回路。
【請求項１７】
（ａ）前記長い待ち時間事象が前記第１の命令スレッド以外の命令スレッドに関連し、
（ｂ）前記調整論理が、前記第１の基準入力処理優先度を引き上げる加算装置を含む、
請求項１５に記載の回路。
【請求項１８】
前記調整論理がさらに、前記第１の調整済み入力処理優先度を生成するために前記第１の基準入力処理優先度を調整する量を指示する調整信号を受け取る調整入力をさらに含む、請求項１４に記載の回路。
【請求項１９】
（ａ）前記いくつかの命令スレッドに含まれる第２の命令スレッドに関連した第２の基準入力処理優先度を指示する第２の優先度信号を受け取る入力と、前記第２の命令スレッドに関連した第２の調整済み入力処理優先度を指示する第２の調整済み優先度信号を供給する出力とを含む第２の調整論理と、
（ｂ）制御信号を受け取る制御入力と、前記第２の調整論理の前記入力に結合された基準優先度入力であって、前記第２の優先度信号を受け取る入力と、前記第２の調整論理の前記出力に結合された調整済み優先度入力であって、前記第２の調整済み優先度信号を受け取る入力と、前記第２の優先度信号と前記第２の調整済み優先度信号のうちの選択された一方の信号を含む第２の最終的な調整済み優先度信号を供給する出力とを含む第２のマルチプレクサと、
（ｃ）前記いくつかの命令スレッドの１つに関連したフィードバック信号を受け取る入力と、前記第２のマルチプレクサの前記制御入力に結合され、前記第２の優先度信号または前記第２の調整済み優先度信号を選択する制御信号を供給する出力とを含むコントローラと
を含み、
（ｄ）前記規則執行回路が、前記第２のマルチプレクサの前記出力に結合された第２の入力を含み、前記規則執行回路がさらに、前記第１の最終的な調整済み優先度信号および少なくとも前記第２の最終的な調整済み優先度信号に前記インタリーブ規則を適用して、前記いくつかの命令スレッドからの命令のインタリービングを制御する前記スレッド選択制御信号を生成する回路である、
請求項１４に記載の回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インタリーブされた複数の命令スレッドを優先規則に従ってサイクル単位で処理するデータ・プロセッサに関する。詳細には本発明は、命令スレッドに関連した事象または条件に基づいて、特定の命令スレッドに割り当てられた優先度を調整することに関する。
【背景技術】
【０００２】
データ・プロセッサがソフトウェア・プログラムを実行する速度を向上させる目的にはいくつかの技法が使用される。これらの技法には、プロセッサのクロック速度を高めること、キャッシュ・メモリを使用すること、および分岐予測を使用することが含まれる。プロセッサのクロック速度を高めると、プロセッサは、与えられた時間内に相対的に多くの演算を実行できるようになる。キャッシュ・メモリは、プロセッサのすぐ近くに置かれ、メイン・メモリよりも速く動作する。これによってプロセッサがデータおよび命令にアクセスするのに要する時間が短縮される。分岐予測では、プロセッサが、以前の命令の結果に関する予測に基づいてある種の命令を実行することができ、そのため実結果を待つ必要がなくなり、これによって処理速度が向上する。
【０００３】
いくつかのプロセッサはさらに、パイプライン方式の命令実行を使用してシステム性能を強化している。パイプライン命令実行では、処理タスクが、いくつかのパイプライン・ステップまたはステージに分割される。パイプライン処理では、以前に発行された命令が特定のプロセスを完了させる前に後続の命令が処理を開始できるようにすることによって、処理速度を高めることができる。プロセッサは、ある命令が完全に処理されるのを待つことなく次の命令の処理を開始することができる。
【０００４】
パイプライン処理を使用するプロセッサは、プロセッサ内での異なるアクティビティに充てられる異なるいくつかのパイプラインを含むことができる。例えばプロセッサは、一連の命令を、フェッチ・ステージ、解読／ディスパッチ・ステージ、発行ステージ、実行ステージ、終了ステージおよび完了ステージで処理することができる。これらの個々のステージはそれぞれ、自体のパイプライン・ステージ・セットを使用して、所望の処理タスクを実行することができる。
【０００５】
マルチスレッド命令処理は、パイプライン処理とともに使用して処理速度を高めることができる追加の技法である。マルチスレッド命令処理は、１つのプログラム命令セットを、２つ以上の別個の命令群ないし命令スレッドに分割することを含む。このマルチスレッド技法では、何らかの理由で１つのスレッドが処理できない場合でも、その間に、別の１つのスレッドからの命令をパイプライン処理することができる。これによって、シングル・スレッド命令処理において遭遇する、例えば特定の命令を実行するのに必要なデータがすぐには使用できないキャッシュ・ミス状況などで特定の命令を実行できない間、全ての命令が停止される状況が回避される。複数の命令スレッドを処理する能力を有するデータ・プロセッサはしばしば、同時マルチスレッディング（simultaneous multithreading：ＳＭＴ）プロセッサと呼ばれる。
【０００６】
ソフトウェア分野での用語「マルチスレッディング」の使用方法と、コンピュータ・アーキテクチャ分野での用語「マルチスレッディング」の使用方法とは異なることに留意されたい。ソフトウェア分野では用語「マルチスレッディング」が、複数の関連スレッドに細分されたある１つのタスクについて使用される。コンピュータ・アーキテクチャ分野では、用語「マルチスレッディング」が、互いに独立したスレッドを含むスレッドに対して使用される。本明細書では用語「マルチスレッディング」を、コンピュータ・アーキテクチャ分野で使用されている意味と同じ意味で使用する。
【０００７】
マルチスレッディングを容易にするため、異なるスレッドからの命令は、プロセッサ・パイプライン上のあるポイントで何らかの方法でインタリーブされる。ＳＭＴプロセッサで処理する命令をインタリーブする技法には一般に異なる２つの技法がある。１つの技法は、１つのスレッドの処理において遅延を引き起こすキャッシュ・ミスなどのある長い待ち時間事象（long latency event）に基づいてスレッドをインタリーブすることを含む。この技法では、ある長い待ち時間事象によって１つのスレッドの処理に遅延が生じるまで、全てのプロセッサ・リソースがその１つのスレッドに向けられる。長い待ち時間事象が出現すると、プロセッサはすぐに別のスレッドに切り替わり、そのスレッドに対してある長い待ち時間事象が生じるか、または先のスレッドを停止させた状況が解決されるまで、そのスレッドの処理を進める。
【０００８】
ＳＭＴプロセッサにおいて複数の命令スレッドからの命令をインタリーブするもう１つの一般的な技法は、命令を、あるインタリービング規則に従ってサイクル単位でインタリーブすることを含む。単純なサイクル単位のインタリービング技法は、異なるスレッドからの命令を１命令ずつ単純にインタリーブする。例えば２スレッドＳＭＴプロセッサでは、第１のクロック・サイクルで第１のスレッドから１つの命令を取り出し、第２のクロック・サイクルで第２のスレッドから１つの命令を取り出し、第３のクロック・サイクルで第１のスレッドの別の命令を取り出し、．．．というように、２つの命令スレッド間で交互に命令を処理することができる。より複雑なサイクル単位のインタリービング技法は、ソフトウェア命令を使用してそれぞれの命令スレッドに優先度を割り当て、次いで異なるスレッドからの命令をインタリーブして、相対的なスレッド優先度に基づくある規則を執行することを含む。例えば、２スレッドＳＭＴプロセッサにおいて、一方のスレッドに他方のスレッドよりも高い優先度が割り当てられている場合、単純なインタリービング規則は例えば、優先度が高いほうのスレッドからインタリーブされた命令ストリームに含める命令の数を、優先度が低いほうのスレッドから含める命令の数の２倍にすることを要求する。
【０００９】
現在使用されているより複雑なサイクル単位インタリービング規則では、それぞれのスレッドに「１」から「７」までの優先度を割り当て、優先度が低いほうのスレッドからの命令を、関数１／（２｜Ｘ−Ｙ｜＋１）に基づいてインタリーブされた命令ストリームに入れる。ただし、Ｘ＝ソフトウェアによって第１のスレッドに割り当てられた優先度、Ｙ＝ソフトウェアによって第２のスレッドに割り当てられた優先度、である。２つのスレッドの優先度が等しい場合、例えばＸ＝３、Ｙ＝３のときには、この関数から比１／２が得られ、２つのスレッドからそれぞれ２クロック・サイクルに１回、１つの命令が、インタリーブされた命令ストリームに入れられる。スレッド優先度の差が２の場合、例えばＸ＝２、Ｙ＝４のときには、この関数から比１／８が得られ、優先度の低いほうのスレッドから、８クロック・サイクルに１回、１つの命令が、インタリーブされた命令ストリームに入れられる。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
特定のスレッドからの命令を含める頻度を優先規則を使用して選択するのは一般に、ソフトウェアによって割り当てられたそれぞれのスレッドの優先度に基づいてプロセッサ・リソースが割り当てられることを保証するためである。しかし、ソフトウェアによって割り当てられたスレッドの優先度に依存するだけでは、プロセッサ・リソースを最適に割り当てることができない状況が存在する。具体的には、ソフトウェアによって割り当てられたスレッドの優先度は、特定の命令スレッドをプロセッサ・パイプライン上で処理できるかどうかに影響を及ぼしうるプロセッサ事象、例えばキャッシュ・ミスなどの事象を考慮することができない。したがって、プロセッサにおけるある事象の発生は、マルチスレッド・プロセッサにおいて異なる命令スレッド間のプロセッサ・リソースの割当てを効率的におこなうという目標を、完全にまたは少なくとも部分的にくじく可能性がある。
【００１１】
例えば、２スレッド・システムの第１の命令スレッドにソフトウェアによって優先度５が割り当てられており、第２の命令スレッドにはソフトウェアによって優先度２が割り当てられているとする。先に説明した優先規則１／（２｜Ｘ−Ｙ｜＋１）を使用すれば、ソフトウェアによって割り当てられたこれらの優先度によって、優先度の低いほうのスレッドからは１６クロック・サイクルに１回、命令がインタリーブされた命令ストリームにインタリーブされ、一方、優先度の高いほうのスレッドからは１６クロック・サイクル中１５サイクルで命令がインタリーブされる。優先度が高いほうの命令スレッドからの命令がキャッシュ・ミスを経験した場合には、たとえこのキャッシュ・ミスの発生によって、それぞれの命令スレッドの実行が、その命令に対するデータが使用可能になるまで事実上停止されるとしても、優先規則は依然として、１６命令のうちの１５命令が優先度が高いほうの命令スレッドからの命令を含むことを指示するであろう。
【課題を解決するための手段】
【００１２】
本発明は、ＳＭＴプロセッサ内でインタリーブされる少なくとも１つの命令スレッドの処理優先度を調整するための装置および方法を含む。それぞれの命令スレッドを、ソフトウェアによって割り当てられた基準入力処理優先度に関連づける。処理中の命令またはこれから処理する命令にあらかじめ定義されたある事象または状況が生じない限り、それぞれのスレッドの基準入力処理優先度を使用して、スレッド間のインタリーブ頻度を、ある命令インタリーブ規則に従って決定する。このインタリーブ頻度は、それぞれのスレッドから命令を選択して、これをデータ・プロセッサ内で処理するインタリーブされた命令ストリームに含める頻度を含む。しかし、特定の命令スレッドに関連したあらかじめ定義されたある事象または状況がプロセッサ内で発生すると、本発明は、１つまたは複数の命令スレッドの基準入力処理優先度を調整して、１つまたは複数の調整された優先度値（調整済み優先度値）を生成する。次いで、１つまたは複数の調整済み優先度値および調整を受けていない基準入力処理優先度値に従ってインタリーブ規則を執行する。１つまたは複数の命令スレッドの基準入力優先度を調整するこのプロセスによって、プロセッサは、そのままではプロセッサが命令を実行する全体的な速度を低下させると思われるプロセッサ内の事象または状況に反応することができる。したがって、本発明を使用して、ＳＭＴプロセッサの処理性能の向上を助けることができる。
【００１３】
本発明に基づく一方法は、基準入力処理優先度信号およびフィードバック信号を受け取ることを含む。この基準入力処理優先度信号は、データ・プロセッサ内でインタリーブされる複数の命令スレッドのうちの１つに関連づけられており、この関連命令スレッドの基準入力処理優先度を指示する。フィードバック信号も、これらの命令スレッドのうちの１つに関連づけられており、この関連命令スレッドの処理状態を指示する。適当なフィードバック信号は例えば、ある命令が、キャッシュ・ミス、空バッファ（empty buffer）、または命令を処理できるかどうかに影響を及ぼす他の事象を経験したことを指示する信号を含む。このフィードバック信号に応答して、複数の命令スレッドのうちの１つのスレッドの調整済み優先度値を表す調整済み優先度信号が生成される。
【００１４】
本発明に従って生成された調整済み優先度信号は、基準入力処理優先度信号やフィードバック信号と同様に、インタリーブされる命令スレッドの１つに関連づけられる。しかし、調整済み優先度信号が関連づけられた命令スレッドは、フィードバック信号が関連づけられた命令スレッドと同じスレッドである場合も、またはそうでない場合もある。すなわち、第１の命令スレッドからの命令の処理に影響を及ぼす事象または状況によって、第１の命令スレッドまたは他の命令スレッドの基準入力処理優先度信号の調整を促すフィードバック信号が生成される。
【００１５】
本発明は、プロセッサの内部で使用される回路であって、いくつかの命令スレッドからの命令をサイクル単位でインタリーブする回路を含む。好ましい一形態では、この回路が、制御入力、基準優先度入力、調整済み優先度入力およびＭＵＸ出力を有する調整マルチプレクサ（ＭＵＸ）を含む。基準優先度入力は、特定の命令スレッドの基準入力処理優先度値を指示する基準入力処理優先度信号の１つを受け取る。調整済み優先度入力は、同じ命令スレッドの調整済み入力処理優先度値を指示する調整済み優先度信号を受け取る。このＭＵＸの制御入力は、基準優先度入力と調整済み優先度入力のどちらをＭＵＸ出力に結合するのかを選択する制御信号を受け取る。ＭＵＸの出力は、基準入力処理優先度信号または調整済み基準入力処理優先度信号を含む最終的な調整済み優先度信号を供給する。したがって制御信号は、その命令スレッドの入力処理優先度をそのままにしておくのか（基準優先度入力をＭＵＸ出力に結合することを選択）、あるいは調整するのか（調整された優先度入力をＭＵＸ出力に結合することを選択）を制御する。
【００１６】
調整ＭＵＸに加えて、本発明はＭＵＸコントローラを含む。ＭＵＸコントローラは、ＳＭＴプロセッサ内の１つまたは複数の命令処理要素からのフィードバックに応答して調整ＭＵＸの制御信号を生成する。このフィードバックは、特定の命令スレッドからの命令が、その命令または別の命令の処理を遅らせるある事象または状況を経験していることを指示する命令キャッシュ、データ・キャッシュ、実行ユニットなどからの信号とすることができる。本明細書ではこれらのタイプの事象を長い待ち時間事象とも呼ぶ。このフィードバックに基づいて、ＭＵＸコントローラは、ＭＵＸ出力に結合する特定の１つのＭＵＸ入力（基準優先度入力または調整済み優先度入力）を選択する。
【００１７】
調整ＭＵＸの調整済み優先度入力に結合された調整論理は、調整済み優先度信号を、基準優先度信号に部分的に基づいて生成することができる。調整済み優先度信号は、基準入力処理優先度信号によって表される優先度値よりも低い優先度値または高い優先度値を表すことができる。一形態では、調整論理が、ＭＵＸコントローラと同じ方法でフィードバックを受け取り、このフィードバックに応答して調整済み優先度信号を設定する。しかし、本発明の好ましい一形態では、フィードバックの如何に関わらず調整論理が、基準入力処理優先度信号によって指示される優先度に、固定されたオフセットを適用する。
【００１８】
本発明のこれらの利点および特徴、ならびにその他の利点および特徴は、好ましい実施形態の以下の説明を添付の図面とともに検討することによって明白となろう。
【発明を実施するための最良の形態】
【００１９】
図１に、本発明の原理を具体化したプロセッサ１００を示す。プロセッサ１００はマルチスレッディングに対応し、第１の命令待ち行列１０１（Ｑｕｅｕｅ＿０）、第２の命令待ち行列１０２（Ｑｕｅｕｅ＿１）、選択マルチプレクサ（ＭＵＸ）１０５、および選択コントローラ１０６を含む。命令待ち行列１０１および１０２はそれぞれ、それぞれの命令スレッド中の命令の取扱いに携わる。具体的には、第１の命令待ち行列１０１は第１の命令スレッドＴ０からの命令を待ち行列に入れ、第２の命令待ち行列１０２は第２の命令スレッドＴ１からの命令を待ち行列に入れる。シーケンシャル・フェッチャ（sequential fetcher）１２０は、この２つの異なる命令スレッドを構成する命令群を、命令キャッシュ／メモリ管理ユニット（memorymanagement unit：ＭＭＵ）１１８から命令待ち行列１０１および１０２に転送する。命令待ち行列１０１および１０２は最終的に、それぞれの命令を選択ＭＵＸ１０５の２つの入力に供給する。選択コントローラ１０６は、この２つの異なる命令スレッドからの命令を、インタリーブされた処理のための単一の命令ストリームにインタリーブする選択ＭＵＸ１０５を制御する。
【００２０】
図２および３を参照して後に詳細に説明するとおり、それぞれの命令スレッドには基準優先度（base priority）が割り当てられ、選択コントローラ１０６は、これらの基準優先度を使用して、またはこれらの基準優先度と１つまたは複数の調整された優先度（調整済み優先度）とを使用して、それぞれの待ち行列（１０１または１０２）からの命令を、インタリーブされた処理ストリームに入れる頻度に関する規則を執行する。この調整済み優先度は、割り当てられた基準優先度よりも高い優先度または低い優先度を表し、プロセッサ１００に含まれる処理要素から受け取るフィードバックに応答してコントローラ１０６が決定する。選択コントローラ１０６の出力は、スレッド選択制御経路１５４に適用される制御信号を含む。スレッド選択制御経路１５４上のこの制御信号は、後段の処理のために特定の１クロック・サイクルの間に通過させるＭＵＸ１０５の入力を指定する。ＭＵＸ１０５のそれぞれの入力は、異なるスレッドからの命令を含む命令待ち行列に結合されているので、ＭＵＸ１０５の特定の入力を選択することは、処理をおこなう特定の命令スレッドを選択する効果を有する。
【００２１】
図１に示した例示的な実施形態では、プロセッサ１００が、単一の集積回路スーパースカラ・マイクロプロセッサを含む。したがってプロセッサ１００は、さまざまな実行ユニット、レジスタ、バッファ、メモリ・デバイスおよび他の機能単位を含む。これらは全て集積回路設計によって形成される。本明細書では、マイクロプロセッサに適用するとして本発明を説明しているが、当然ながら、この選択コントローラ配置はマイクロプロセッサだけに限定されず、他のタイプのプロセッサに実装することもできる。さらに、図１に示した全体プロセッサ配置は、第１の命令待ち行列１０１、第２の命令待ち行列１０２および選択ＭＵＸ１０５に対する選択コントローラ１０６の動作を説明する際の例として示したに過ぎない。本明細書において説明し請求する選択コントローラは、複数の命令スレッドの同時処理をサポートする能力を有する実質的に任意のプロセッサ配置で利用することができることを当業者は理解されたい。
【００２２】
図１に示すプロセッサ１００は、バス・インタフェース・ユニット（ＢＩＵ）１１４およびプロセッサ・バス１１５を介してシステム・バス１１３に結合されている。システム・バス１１３およびプロセッサ・バス１１５はともに、個別に示されてはいないが、アドレス・バス、データ・バスおよび制御バスを含む。ＢＩＵ１１４はバス裁定に関与して、プロセッサ１００と、メイン・メモリ１１６、不揮発性大容量記憶装置１１７などのシステム・バス１１３に結合された他の装置との間の情報の転送を制御する。図１に示したデータ処理システムは、システム・バス１１３に結合した他の装置を含むことが好ましいが、本発明の理解にこれらの装置は不要であり、そのため無用な詳細によって本発明が不明瞭にならないようこれらは図面から除外した。
【００２３】
ＢＩＵ１１４は、命令キャッシュ／ＭＭＵ（メモリ管理ユニット）１１８およびデータ・キャッシュ／ＭＭＵ１１９に接続されている。命令キャッシュ／ＭＭＵ１１８およびデータ・キャッシュ／ＭＭＵ１１９中のキャッシュなどの高速キャッシュは、メイン・メモリ１１６から以前にキャッシュに転送されたデータまたは命令のサブセットにプロセッサ１００が相対的に高速にアクセスすることを可能にし、したがって全体的な処理速度を向上させる。それぞれデータ・キャッシュ１１９および命令キャッシュ１１８に記憶されたデータおよび命令は、メイン・メモリ１１６中のデータまたは命令の実アドレスに関係づけられた実効アドレスによって識別され、アクセスされる。
【００２４】
命令キャッシュ／ＭＭＵ１１８はさらに、シーケンシャル・フェッチャ１２０に結合されている。シーケンシャル・フェッチャ１２０は、実行する命令を、各プロセッサ・サイクルの間に命令キャッシ／ＭＭＵ１１８からフェッチする。シーケンシャル・フェッチャ１２０は、命令キャッシュ／ＭＭＵ１１８からフェッチした分岐命令を、これを実行する分岐処理ユニット（ＢＰＵ）１２１に伝送し、また、第１の命令待ち行列１０１および第２の命令待ち行列１０２中の一連の命令を一時的に記憶する。記憶された命令はいずれ、解読をする命令解読ユニット１２３、および実行ユニット１３０、１４０または１５０へのディスパッチする順序付けユニット１２４に転送される。
【００２５】
シーケンシャル・フェッチャ１２０は、第１の命令待ち行列１０１と第２の命令待ち行列１０２の両方に命令を供給する。命令待ち行列１０１および１０２はともに、後段の処理のために選択ＭＵＸ１０５を通して解読ユニット１２３に命令が発行されるたびに、その中の命令を、１つの待ち行列位置から次の待ち行列位置へシフトさせるように構成されている。第１の命令待ち行列１０１の最後の記憶要素は第１のラッチ１０３（ＬＣＨ＿０）を含み、第２の命令待ち行列１０２の最後の記憶要素は第２のラッチ１０４（ＬＣＨ＿１）を含む。ラッチ１０３および１０４は、ラッチされた命令を、選択ＭＵＸ１０５のそれぞれの入力で使用可能なように維持し、そのため、ＭＵＸの１つの入力が選択されると、選択された入力に存在する１つまたは複数の命令が命令解読ユニット１２３に転送される。なお、ラッチ１０３および１０４を含む図示のさまざまな要素は、一度に１つの命令だけを取り扱うように構成し、または複数の命令を取り扱うように構成することができることに留意されたい。本発明の好ましい一形態では、プロセッサ１００の図示のさまざまな要素が、複数の命令を同時に取り扱うことができる。例えば、命令待ち行列１０１および１０２中のそれぞれの待ち行列位置、ならびにラッチ１０３および１０４は、５つの命令を収容するのに十分な記憶要素を含むことができる。したがってこの例では、それぞれの命令スレッド（Ｔ０およびＴ１）、ならびに選択ＭＵＸ１０５の出力のインタリーブされた命令ストリームが実際に５つの命令に相当する幅を有する。本発明は、スレッドＴ０およびＴ１を通過する任意の命令幅を包含する。
【００２６】
プロセッサ１００の実行回路は、一連の命令を実行する３つの別個の実行ユニット１３０、１４０および１５０を含む。個々の実行ユニット１３０、１４０および１５０はそれぞれ、特定の実行ユニットに固有の一連のパイプライン・ステージで命令を実行することが好ましい。この例示プロセッサの第１の実行ユニット１３０（ＥＸＵ＿１）および第２の実行ユニット１４０（ＥＸＵ＿２）はともに、固定小数点数値演算および論理演算、ならびにメモリからデータをロードするロード操作を実行するように適合させることができる。プロセッサ１００の第３の実行ユニット１５０（ＥＸＵ＿３）は、複雑な固定小数点演算を実行するように適合させることができる。第３の実行ユニット１５０はさらに、メモリにデータを記憶する記憶操作を実行することができる。オペランドおよび演算結果を一時的に記憶するためにさまざまな汎用および浮動小数点レジスタが実行ユニット１３０、１４０および１５０に関連づけられていることを当業者は理解されたい。本発明の選択コントローラ配置を理解するのにこれらのレジスタの動作の理解は不要なので、図１にこれらのレジスタは示されていない。実行ユニット１３０、１４０および１５０には、命令のアウト・オブ・オーダ（out of order）実行をサポートするのに使用するさまざまな待ち行列、レジスタ、テーブルなど、他の数多くの要素を関連づけることができる。無用な詳細によって本発明が不明瞭にならないよう、これらの追加のプロセッサ要素も図１から除かれている。
【００２７】
プロセッサ１００は一連のそれぞれの命令を、別個のパイプライン・ステージ、すなわちフェッチ、解読／ディスパッチ、発行／順序付け、実行、終了および完了ステージで処理する。それぞれ２つの命令待ち行列１０１および１０２に記憶された２つのスレッドＴ０およびＴ１からの命令は、解読／ディスパッチ・ステージの直前に、選択コントローラ１０６が執行する優先規則に従って単一の命令ストリームにインタリーブされる。２つのスレッドからの命令は、解読ユニット１２３によって実行される解読／ディスパッチ・ステージの前にサイクル単位でインタリーブされるので、解読／ディスパッチ以降の各ステージは、所与のクロック・サイクルに、いずれかのスレッドから命令を受け取ることができる。例えば、所与のクロック・サイクルに、プロセッサ１００は、第１のスレッドからの命令を完了ユニット１９０で完了させ、第１または第２のスレッドからの命令を実行ユニット１３０、１４０および１５０で実行し、第２のスレッドからの命令を解読している。異なるスレッドからの命令を同時に処理することによって、一方の命令スレッドの中のある命令に関連した長い待ち時間事象によってその特定のスレッドが機能停止した場合でも、プロセッサ１００は命令を処理し続けることができる。例えば、（第１の命令待ち行列１０１に入れられた）スレッドＴ０からの命令が、この命令がすぐに処理されるのを妨げるある長い待ち時間事象を経験しているとする。（第２の命令待ち行列１０２に入れられた）第２の命令スレッドＴ１からの命令はスレッドＴ０からの命令とインタリーブされているので、第２の命令スレッドからの命令は処理され続け、第２の命令待ち行列Ｔ１を通過することができる。
【００２８】
フェッチ・ステージの間に、シーケンシャル・フェッチャ１２０は、１つまたは複数のメモリ・アドレスに関連づけられた１つまたは複数の命令を命令キャッシュ／ＭＭＵ１１８から取り出す。シーケンシャル・フェッチャ１２０は、命令キャッシュ／ＭＭＵ１１８からフェッチした一連の命令を、第１の命令待ち行列１０１に記憶して第１の命令スレッドＴ０の一部とするか、または第２の命令待ち行列１０２に記憶して第２の命令スレッドＴｌの一部とする。両方のスレッドの分岐命令はシーケンシャル・フェッチャ１２０によって抜き取られ（removed or folded out）、実行のためＢＰＵ１２１に送られる。ＢＰＵ１２１は、分岐予測機構（別個には示されていない）を含む。一実施形態では分岐予測機構が、分岐履歴テーブルなどの動的予測機構（図示せず）を含む。この分岐履歴テーブルによってＢＰＵ１２１は、分岐するかか否かを予測することによって未解決の条件付き分岐命令を推測で実行することができる。
【００２９】
第１および第２の命令待ち行列１０１および１０２を通過した２つの命令スレッドからの命令は単一の命令ストリームにインタリーブされ、後段の処理のために命令解読ユニット１２３に送達される。命令解読ユニット１２３はこれらの命令を解読し、順序付けおよび実行ユニット１３０、１４０および１５０へのディスパッチをおこなう順序付けユニット１２４に渡す。実行ユニット１３０、１４０および１５０は、順序付けユニット１２４から発行された命令を実行する。発行された命令が完全に実行されると、実行ユニット１３０、１４０および１５０は、結果があればそれを関連汎用レジスタまたは他のレジスタ（図示せず）に記憶し、さらに、命令の実行が終了したことを完了ユニット１９０に通知する。
【００３０】
図１に示した特定のプロセッサ構造は単に例示目的で示したに過ぎないこと、および本発明に基づくスレッド優先度調整はこの特定の構造とともに使用することだけに限定されないことを理解されたい。例えば、プロセッサ１００には、シーケンシャル・フェッチャ１２０が命令ストリームから抜き取った分岐命令が示されているが、別のプロセッサ構造はこの分岐命令ユニットを、他の実行ユニット１３０、１４０および１５０と一緒の別の実行ユニットとして取り扱うことができる。いずれにせよ、本発明に基づくスレッド優先度調整は、実質的に任意の同時マルチスレッディング・プロセッサに組み込むことができる。
【００３１】
さらに、図示のプロセッサ１００は、２つの命令スレッドＴ０とＴ１をインタリーブして、フェッチ・ステージ後の各種プロセッサ・パイプライン・ステージで処理するインタリーブされた単一のストリームとするように適合されているが、他の実施形態では、２つ以上の命令スレッドをインタリーブして、インタリーブされた単一の命令ストリームとするように適合させることもできることに留意されたい。同時に処理している命令スレッドの数に関わらず、所与のクロック・サイクルにインタリーブされた命令ストリームに渡すことができる命令は一般に、単一のスレッドからの命令（またはパイプラインが複数の命令に相当する幅を有する場合には命令セット）だけであることに留意されたい。したがって、ＭＵＸ１０５などの選択装置を介して２つ以上のスレッドをインタリーブする場合には、装置は、ＭＵＸを通して転送する特定の１つのスレッドを選択するのに適したＭＵＸ制御信号を生成する論理を含んでいなければならない。図１に示した本発明の２スレッド形態では、信号経路１５４を通してＭＵＸ制御信号を適用することができる。しかし、２つ以上の入力を有する選択ＭＵＸに対する制御信号には、必要なＭＵＸ制御信号を収容する追加の信号経路が必要となる。
【００３２】
さらに、本発明のある実施形態は、一方または両方の命令スレッドＴ０、Ｔ１からの命令を保留し、それによって保留されたそれぞれのスレッドからの有効な命令が渡されて処理されないようにする能力を有することができることに留意されたい。この保留能力は、２つのラッチ１０３および１０４に適用された保留信号によって実装することができる。図１には、選択コントローラ１０６からそれぞれのラッチ１０３および１０４への破線１５２および１５３が示されている。保留能力が実装されている場合には、選択コントローラ１０６を使用して、必要な保留信号をそれぞれのスレッドに対して生成し、信号経路１５２および１５３を通してそれらの信号を適用することができる。スレッド保留信号を使用した本発明の実施態様に関する詳細が、「マルチスレッド・プロセッサにおいて処理する命令スレッドを選択するための方法および装置（METHOD AND APPARATUS FOR SELECTING AN INSTRUCTION THREAD FORPROCESSING IN A MULTI-THREAD PROCESSOR）」という名称の関連出願第＿＿＿＿＿＿号に出ている。
【００３３】
図２に、本発明の一形態に基づく選択コントローラ１０６を示す。選択コントローラ１０６は、２つの異なる命令スレッドのインタリービングを制御するように適合されており、調整済み優先度信号を生成する優先度調整要素２０５と、優先度調整要素２０５によって生成された調整済み処理優先度信号に少なくとも部分的に基づいてスレッド選択出力を生成するインタリーブ規則執行要素２０７とを含んでいる。図示の選択コントローラ１０６はさらに、３つの入力２０８、２０９、２１３と、少なくとも１つの出力１５４とを含んでいる。選択コントローラ１０６の出力１５４は、２つの命令スレッドのインタリービングを制御するのに使用する制御信号を伝える図１に示した同じ符号の信号経路に対応する。追加の出力は、図１に関して先に論じた出力１５２および１５３に適用される保留信号を含むことができる。選択コントローラ１０６の入力２０８および２０９は、ソフトウェアによって割り当てられた２つの命令スレッドに対する優先度を表す基準入力処理優先度信号を伝える。例えばそれぞれの優先度信号は、ソフトウェアによって特定の命令スレッドに割り当てられた１から７の処理優先度を指示することができる。入力２１３は、図１のプロセッサ１００などのプロセッサに関連したさまざまな処理要素からの１つまたは複数のフィードバック信号のための信号経路を含む。図２ではこれらのフィードバック信号にＴＸ＿Ｐｒｉｏｒｉｔｙ＿Ａｄｊｕｓｔという標識が付けられている。これらのフィードバック信号は、特定の命令スレッドに関連した、そのスレッド中の１つまたは複数の命令の処理を遅らせるある種の事象または状況の発生を指示する目的に使用される。
【００３４】
図２に示した回路では、それぞれの基準入力処理優先度がラッチを介して適用される。第１の命令スレッドＴ０の基準入力処理優先度（Ｔ０＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙ）はラッチ２１７を介して入力２０８に適用される。第２の命令スレッドＴ１の基準入力処理優先度（Ｔ１＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙ）はラッチ２１８を介して入力２０９に適用される。これらの基準入力処理優先度はソフトウェアによって割り当てられる。
【００３５】
優先度調整要素２０５は、調整論理２２５、調整マルチプレクサ（ＭＵＸ）２２７および調整ＭＵＸコントローラ２２９を使用して、調整済み入力処理優先度信号を生成する。基準入力処理優先度を伝える入力２０８は、調整論理２２５の基準優先度入力２３１と、ＭＵＸ２２７の第１のＭＵＸ入力２３７とに結合されている。調整入力２３３は、調整論理装置２２５の第２の入力を構成し、調整論理の出力２３５はＭＵＸ２２７の入力２３９に結合されている。調整ＭＵＸ２２７の制御は制御入力２４３を通して提供され、選択されたＭＵＸ入力（入力２３７または２３９）がＭＵＸ出力２４４に適用される。
【００３６】
ＭＵＸコントローラ２２９は、図２に示した本発明の形態ではＯＲゲートを備え、フィードバック入力２４６および出力２４１を含んでいる。フィードバック入力２４６はフィードバック信号経路２１３に結合されている。この図では１本の線として示されているが、信号経路２１３はＮ本の信号経路を含んでいる。Ｎは、スレッド選択コントローラ１０６が受け取るフィードバック信号の数に対応する。これらのＮ個の信号はそれぞれ入力２４６に適用され、残りの信号との間で論理和がとられ、ＭＵＸコントローラ２２９の出力２４１に単一のディジタル信号を供給する。この出力２４１は、ＭＵＸ２２７の制御入力２４３に結合され、その結果、ＭＵＸコントローラ出力２４１の信号がＭＵＸ２２７の選択制御を提供する。すなわちＭＵＸコントローラ２２９は、フィードバック入力２４６で受け取ったフィードバックに基づいて、ＭＵＸ２２７のＭＵＸ入力２３７の調整されていない基準優先度とＭＵＸ入力２３９の調整済み優先度信号のうちのどちらの入力をインタリーブ規則執行要素２０７に送達するかのを制御する。
【００３７】
調整論理２２５は、加算装置、減算装置、ビットごと比較器（bitwisecomparator）、または調整済み入力処理優先度信号を生成する能力を有する他の同種の要素を含むことができる。好ましい形態では調整論理２２５が、基準入力処理優先度信号（Ｔ０＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙ）の優先度よりも低い優先度を指示する調整済み優先度信号を出力２３５に生成する減算装置を含む。本発明の他の形態では調整論理２２５が、基準優先度信号が指示する優先度よりも高い優先度を指示する調整済み優先度信号を生成する加算装置を含むことができる。
【００３８】
調整論理２２５が減算装置として実装されるのか、加算装置として実装されるのか、または他の装置としてとして実装されるのかに関わらず、調整値選択装置２５０を使用して、基準優先度を変更する量を決定することができる。装置２５０によって選択された値は、選択装置出力２５２を介して調整論理２２５の第２の入力２３３に適用される。一実施形態では、フィードバック信号経路２１３に選択装置入力２５３が結合され、この入力が、ＭＵＸコントローラ２２９に適用されるものと同じＮ個のフィードバック信号を受け取る。本発明のこの形態では、この優先度調整フィードバック信号の値または状態に基づいて調整値選択装置２５０が出力を生成する。例えば、フィードバック信号が相対的に短い処理遅延の発生を指示しているとき、装置２５０は、調整論理装置２２５に相対的に小さな値を出力することができる。一方、相対的に長い処理遅延の発生を指示するフィードバック入力２１３のフィードバック信号は、入力経路２０８に現れる基準優先度の調整を相対的に大きくするために、相対的に大きな値を調整論理装置２２５に出力するよう装置２５０に促す。選択装置２５０は、２１３のフィードバック信号に基づいてその可変出力を供給する適当な任意の論理または他の構造を含むことができる。
【００３９】
本発明の範囲に含まれる装置２５０などの選択装置を使用して、２０８の基準優先度信号に対する可変優先度調整を容易にすることができるが、本発明の他の形態では静的調整を提供することができる。この場合、選択装置２５０は、調整論理装置２２５の第２の入力２３３として一定値を供給する適当な装置に置き換えられる。
【００４０】
例えば、調整入力２３３が値１に固定されており、調整論理２２５が減算要素であると仮定する。Ｔ０＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙ信号が指示する優先度が５の場合、調整済み入力処理優先度信号は４になる。Ｔ０＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙ信号が指示する優先度が２の場合、調整済み入力処理優先度信号は１になる。基準優先度がすでにその特定の優先度体系の最低値であり、調整論理２２５が減算要素である場合、調整論理２２５は、その正規の最小値よりも低く優先度を引き下げるのではなしに、単純に、入力２３１に等しい出力２３５を生成することが好ましい。同様に、基準優先度がすでにその特定の優先度体系の最高値であり、調整論理２２５が、通常（normally）ある値を加算して調整済み入力処理優先度を生成するものである場合には、優先度値をそれ以上大きくすることを調整論理が単純に拒むようにシステムを構成することができる。
【００４１】
優先度調整要素２０５を、命令スレッドの優先度を同じスレッドに関連したフィードバックに基づいて調整する要素として説明したが、優先度調整要素２０５は、別の方法で調整済み入力処理優先度信号を生成することができることを理解されたい。例えば、Ｔ０命令スレッド以外の命令スレッドの入力処理優先度がそのスレッド中の命令の処理を遅延させているある事象を経験していることをフィードバックが指示している場合には、優先度調整要素２０５はＴ０スレッドの優先度を高くすることができる。他の効果は、インタリーブ中の命令スレッドの相対的な優先度を変更して現在の処理環境で発生している事象を考慮し、これによってプロセッサ・リソースのより効率的な使用を促進することである。
【００４２】
本発明に基づく命令スレッド処理優先度の調整は、所与の命令スレッド中の１つまたは複数の命令に関連した処理遅延に反応する特定の応用を有することを理解されたい。これらの処理遅延状況は、１つまたは複数のスレッド処理優先度を調整することが明確に有益な状況を表す。しかし本発明は、スレッド優先度を調整するか否かの決定、および調整の程度の決定に使用するフィードバック信号を生成する特定の方法に限定されない。すなわち、図２の入力２１３に示したフィードバック信号は、処理遅延、あるいは１つまたは複数の命令スレッドの基準処理優先度を調整することが望ましい他の任意の条件を指示することができる。
【００４３】
図２に示した本発明の形態では、基準入力処理優先度に対する代替として、ＭＵＸ２２７を介した選択に対して使用可能な調整済み優先度値を絶え間なく生成することができる。本発明の他の形態では、実際に基準入力処理優先度を調整することが望ましいときにだけ必要に応じて適当な調整済み優先度信号を生成することができる。
【００４４】
インタリーブ規則執行要素２０７は、処理中のそれぞれの命令スレッドの優先度信号を受け取る。図２に示した実施形態では、これらの優先度信号が、ＭＵＸ２２７の出力２４４からのＴ０＿Ａｄｊｕｓｔｅｄ＿Ｐｒｉｏｒｉｔｙ信号と、信号経路２０９上のＴ１＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙ信号とを含む。インタリーブ規則執行要素２０７は、これらの２つの優先度信号が指示する優先度値を使用して、どちらのスレッドを選択するのかを指示する出力選択信号を信号経路１５４上に生成する。信号経路１５４上のこの出力選択信号は、図１を参照して先に説明した異なる命令スレッドからの命令のインタリービングまたは選択を制御する。
【００４５】
インタリーブ規則執行要素２０７は、スレッドの選択を制御する選択出力を生成する適当な任意の要素を含むことができる。いくつかのケースではインタリーブ規則執行要素２０７が、異なるスレッドからの命令を、入力優先度値の差だけに基づいてインタリーブすることができる。図２に示した実施形態に調整配置２０５が１つしか含まれていないのは、インタリーブ規則執行要素２０７にとって優先度値の差だけが重要だからである。しかし、他のインタリーブ規則執行要素は、入力優先度値の差の絶対値以外の因子に基づいて選択出力信号を生成することができる。これらのケースでは、Ｔ１スレッドに関連した優先度値を調整するために、配置２０５と同様の別個の調整配置を使用することができる。
【００４６】
図３に、命令スレッドの処理優先度を調整し、調整された処理優先度に基づいて制御出力を生成する選択コントローラ１０６の好ましい一形態を示す。図３に示したコントローラ１０６の実施形態は、それぞれが図２に示した優先度調整要素２０５に対応する２つの優先度調整要素２０５ａおよび２０５ｂを含む。これらの調整要素はそれぞれ、基準入力処理優先度Ｔ０＿Ｂａｓｅ＿ＰｒｉｏｒｉｔｙとＴ１＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙのうちの一方を選択的に調整する。図３にはさらに、好ましい１つのインタリーブ規則執行要素１０７の詳細が示されている。
【００４７】
図３に示した選択コントローラ１０６は２本のブランチ（分枝）からなる。第１のブランチは、第１のスレッドＴ０および第１のスレッドの優先度信号Ｔ０＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙに関連する。回路１０６のこの第１のブランチを第１のスレッドまたはＴ０ブランチと呼ぶ。第２のブランチは、第２のスレッドＴ１および第２のスレッドの優先度信号Ｔ１＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙに関連する。この第２のブランチを第２のスレッドまたはＴ１ブランチと呼ぶ。Ｔ０ブランチとＴ１ブランチは同じ構成要素を含み、同じ機能を果たすので、特に指摘しない限り、Ｔ０ブランチを以下の議論の基礎として使用する。図３の左端を参照すると、ラッチ２１７が、Ｔ０＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙ信号をＴ０ブランチ入力ノード２０８に適用している。ラッチ２１７は、第１のスレッドないしＴ０スレッドの基準優先度が変化しない限り、このＴ０スレッド優先度信号を入力ノード２０８のところにラッチする。この基準スレッド優先度はソフトウェアの制御の下で設定され、変更される。
【００４８】
ブランチＴ０の優先度調整要素２０５ａは、調整ＭＵＸ２２７ａ、ＭＵＸコントローラ２２９ａ、調整論理２２５ａおよび調整値選択論理２５０ａを含む。これらの構成要素はそれぞれ、図２に示した優先度調整要素２０５の同様の符号を有する構成要素に対応し、図２の対応する構成要素と全く同じ機能を果たす。具体的には、調整ＭＵＸ２２７ａは、２０８に現れる基準入力処理優先度信号（Ｔ０＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙ）と調整論理２２５ａから供給される調整済み優先度信号との間の選択を実施する。調整ＭＵＸ２２７ａでの選択は、ＭＵＸコントローラ２２９ａの制御下で、２１３に示す信号経路を通して適用されるＮ個のフィードバック信号に基づいて実行される。調整値選択論理２５０ａは、同じＮ個のフィードバック信号に基づいて調整論理２２５ａに調整値を供給する。調整ＭＵＸ２２７ａによるこの選択の結果である、Ｔ０＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙの値または調整済み優先度値は、インタリーブ規則執行回路１０７の入力としてノード３０６に適用される。ＭＵＸ２２７ａでどちらの優先度値が選択されたのかということとは無関係に、結果として得られるノード３０６の優先度値は、ＳＭＴプロセッサにおける第１のスレッドＴ０の優先度を表し、インタリーブ規則執行回路１０７は、この第１のスレッドの優先度値が、調整要素２０５ａによって基準入力値から調整されているのか、または調整されていないのかに関わらず、この第１のスレッドの優先度値に対して同じ方法で動作する。
【００４９】
ノード３０６はエキスパンダ３１２の入力に接続されている。エキスパンダ３１２は、Ｔ０スレッドの調整済み優先度値をビットごとに展開して、展開された優先度信号を生成する。図示の実施形態では、ノード３０６の調整済み優先度信号が、１から７までの優先度を指示する３ビットの２進化信号である。エキスパンダ３１２は、ノード３０６の３ビット信号を展開して、ノード３１３に、その優先度値に対応したいくつかのビットがセットされた７ビットの論理信号を生成する。例えば、ノード３０６の第１のスレッドの優先度が５、すなわち３ビット２進値が１０１の場合、ノード３１３の展開された７ビット信号は００１１１１１となる。第１のスレッドの優先度が３の場合、ノード３０６の３ビット論理信号は０１１、ノード３１３の展開された７ビット信号は００００１１１となる。
【００５０】
エキスパンダ３１２が、展開された７ビットの第１の優先度信号をノード３１３に生成すると、インバータ３１６が、この展開された優先度信号をビットごとに反転させ、反転された信号を、ノード３１７を介して、Ｔ１ブランチの一部であるＡＮＤゲート３２２の入力に導く。同様に第２のスレッドの優先度値を展開して展開された信号をノード３１５に生成し、この第２のスレッドの優先度信号をインバータ３１８で反転させたＴ１ブランチは、反転された第２のスレッドの優先度信号をノード３１９を介してＡＮＤゲート３２０の入力に導く。ＡＮＤゲート３２０は、ビットごとの論理ＡＮＤ演算を実行して、展開され反転された第２のスレッドの優先度信号と展開された第１のスレッドの優先度信号とを結合し、本明細書ではＴ０マスクと呼ぶ信号をノード３２１に生成する。ノード３２１の７ビットＡＮＤ演算の結果は、第１のスレッドの優先度値と第２のスレッドの優先度値の差を表すことに留意されたい。
【００５１】
ノード３２１の７ビット信号は、ＡＮＤゲート３２４の一方の入力およびインバータ３２８の入力に入力される。ノード３２１の信号はさらにＯＲゲート３５２の入力に結合される。ＯＲゲート３５２は、後に詳細に説明するように両方のブランチＴ０およびＴ１のＭＵＸコントローラの働きをする。ゲート３２４のもう一方の入力は、線形帰還シフト・レジスタ（ＬＦＳＲ）３３６の出力から供給される。ＬＦＳＲ３３６の出力は、１クロック・サイクルごとに生成される長さ７ビットまでの乱数または擬似乱数を含む。ＡＮＤゲート３２４は、ＬＦＳＲ３３６によって生成された擬似乱数または乱数とノード３２１のＴ０マスクとの間のビットごとの論理ＡＮＤ演算を実行して、ランダム化されたマスク信号をノード３２５に生成する。
【００５２】
ノード３２５のランダム化されたマスク信号は、ＯＲゲート３３２の一方の入力に入力される。インバータ３２８の出力は反転されたマスク信号をノード３２９に生成する。この信号はＯＲゲート３３２のもう一方の入力を表す。ＯＲゲート３３２の入力はともに７ビット長であることに留意されたい。ＯＲゲート３３２は、これらの２つの７ビット入力（ランダム化されたノード３２５のマスク信号および反転されたノード３２９のマスク信号）にビットごとの論理ＯＲ演算を実行し、その７ビット出力をノード３３３に適用する。このＯＲ演算の結果、反転されたＴ０マスクまたはランダム化されたＴ０マスクの特定のビット位置が論理１を含む場合、ノード３３３の信号の同じビット位置も論理１を含む。
【００５３】
図３の回路１０６はさらに、回路１０６を含むプロセッサの１クロック・サイクルごとに論理状態間を交互にトグルする１ビット論理信号を生成するトグル配置３３７を含む。トグルスイッチ配置３３７の出力はノード３３９に適用され、関連インバータ３３８によって反転されて、ノード３３９ａに１ビット信号を生成する。ノード３３９ａのこの１ビット信号はノード３３３の７ビット信号に追加され、ノード３４１に、ＡＮＤゲート３４０の入力となる８ビット入力が生成される。ＡＮＤゲート３４０は、ノード３４１の８ビット信号に論理ＡＮＤ演算を実行して、ノード３４５に１ビット出力を生成する。
【００５４】
図３に示した回路１０６のＴ０ブランチの議論をさらに進める前に、この回路のＴ１ブランチはＴ０ブランチと同様の回路要素を含み、入力２０９に適用されたＴ１スレッドの優先度信号（Ｔ１＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙ）に対して対応する演算を実行することに留意されたい。ラッチ２１８は、優先度調整要素２０５ｂに含まれる調整ＭＵＸ２２７ｂの一方の入力にＴ１＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙ信号を供給する。調整ＭＵＸ２２７ｂは、入力ノード２０９のこの入力信号と調整論理２２５ｂから供給された第２のスレッドの調整済み優先度信号との間の選択を実施する。入力ノード２０９からの調整されていない優先度値と論理２２５ｂからの調整済み優先度値との間の選択は、ＭＵＸコントローラ２２９によって、ＭＵＸコントローラ２２９ａに適用された同じＮ個のフィードバック信号に応答して制御される。フィードバック入力２１３からのＮ個のフィードバック信号は調整値選択論理２５０ｂにも適用される。調整値選択論理２５０ｂは、このフィードバック信号に基づいて調整論理２２５ｂに適当な調整値を供給する。結果として得られる信号、すなわち調整されていないＴ１＿Ｂａｓｅ＿Ｐｒｉｒｏｔｙ値か、または調整ＭＵＸ２２７ｂからの適当に調整された優先度値が、Ｔ１スレッドの入力優先度信号として、インタリーブ規則執行回路１０７の第２の入力であるノード３０８に適用される。
【００５５】
ここで、図２に示した配置と図３に示した配置の違いについて言及しておく。図２に示した配置は、２つの命令スレッドＴ０とＴ１のうちの一方に関連づけられた優先度値を調整するように動作する単一の優先度調整要素２０５を含んでいる。さまざまなプロセッサ要素からのフィードバックに基づいて１つのスレッドの値だけを調整することは、インタリーブ規則執行回路１０７が、スレッドの優先度値の差の絶対値だけに基づく規則を執行する場合に適当である。しかし、インタリーブ規則執行回路が、命令スレッドの優先度値の差だけでなく、優先度値自体にも応答する場合には、本発明に基づく回路は、それぞれの基準入力処理優先度値を調整するための調整配置を含むことが好ましい。したがって、図３に示した第２のスレッド優先度調整要素２０５ｂ。優先規則執行回路１０７が実際には、この回路への２つの入力優先度値の差だけに関して動作するとしても、この第２のスレッド優先度調整要素２０５ｂは例示のために図３に示したものである。さらに、インタリーブ規則執行回路が、入力優先度の差だけに基づいて規則を執行する場合でも、２０５ａ、２０５ｂなどの優先度調整要素を使用し、プロセッサからのフィードバック信号に基づいてその所望の優先度値の差を生成することができる。
【００５６】
さらに、ＭＵＸコントローラ２２９ａ、２２９ｂおよび調整値選択論理２５０ａ、２５０ｂは、フィードバック入力２１３の共通のフィードバック信号を使用するように示されているが、これらの要素の一部または全部が異なるフィードバック信号セットを使用することができることに留意されたい。例えば、図３に指示したとおり、ＭＵＸコントローラ２２９ａ、２２９ｂおよび調整値選択論理２５０ａ、２５０ｂは全て、Ｔ０スレッドとＴ１スレッドの両方に関連した共通のフィードバック信号セットを受け取ることができる。あるいは、ＭＵＸコントローラ２２９ａおよび調整値選択論理２５０ａがＴ０優先度信号（Ｔ０＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙ）だけに関連したフィードバックを受け取り、ＭＵＸコントローラ２２９ｂおよび調整値選択論理２５０ｂがＴ１優先度信号（Ｔ１＿Ｂａｓｅ＿Ｐｒｉｏｒｉｔｙ）だけに関連したフィードバックを受け取ることもできる。本発明は、特定のフィードバック配置に限定されず、ＳＭＴプロセッサで使用される基準入力処理優先度または基準入力処理優先度セットの調整を制御するのに使用することができる任意のフィードバック配置を包含する。
【００５７】
実際に調整されまたは調整されていないノード３０８の第２のスレッドＴ１の優先度信号は、ノード３０６の信号と同様に３ビット信号であり、この３ビットＴ１優先度信号をエキスパンダ３１４がノード３１５の７ビット信号に展開する。ＡＮＤゲート３２２は、ノード３１５の７ビット信号とノード３１７の反転された７ビット信号のビットごとの論理積をとり、その７ビット出力をノード３２３に適用する。ノード３２３の信号は、Ｔ１スレッドの調整済み優先度の７ビット・マスクを表す。ＡＮＤゲート３２６は、ＬＦＳＲ３３６からの擬似乱数とノード３２３の信号のビットごとの論理積をとることによってランダム化された第２のスレッド・マスクを生成し、ＯＲゲート３３４で、このランダム化されたノード３２７の第２のスレッドのマスク出力とインバータ３３０からのノード３３１の反転された信号の論理和をとって、ノード３３５の７ビット信号を生成すること。ノード３３９の１ビットをノード３３５の７ビット信号に追加して、ＡＮＤゲート３４２の入力となる８ビット信号をノード３４３に生成する。ノード３４３で追加されるビットと、Ｔ０ブランチのノード３４１で追加されるビットとは常に逆であることに留意されたい。ＡＮＤゲート３４０と同様に、ＡＮＤゲート３４２はノード３４３の８ビット入力の論理積をとり、ノード３４７に１ビット出力を生成する。
【００５８】
ノード３４５の１ビット信号はＴ０ブランチのＭＵＸ３５３の一方の入力となり、ノード３４７の１ビット信号はＴ１ブランチのＭＵＸ３５５の一方の入力となる。Ｔ０ブランチＭＵＸ３５３の第２の入力は、ノード３４７の信号をインバータ３５０で反転させることによって生成された反転された信号を含む。同様に、Ｔ１ブランチＭＵＸ３５５の第２の入力は、ノード３４５の信号をインバータ３４８で反転させることによって生成された反転された信号を含む。ＯＲゲート３５２は、ノード３２１の第１のスレッドのマスク信号の論理和をとって１ビットのＭＵＸ選択信号を生成する。この信号は、ＭＵＸ３５３および３５５を制御するために適用される。ＯＲゲート３５２の出力は、（要素２０５ａによって調整されたノード３０６の）第１のスレッドの優先度が（要素２０５ｂによって調整されたノード３０８の）第２のスレッドの優先度よりも大きいときに１になることに留意されたい。この２つの入力優先度が等しいか、または第２のスレッドの優先度が第１のスレッドの優先度よりも大きいときに、ＯＲゲート３５２の出力は０になる。このＭＵＸ選択信号は、ＭＵＸ３５３およびＭＵＸ３５５を制御して、それぞれがそれぞれの出力ノード３５４および３５６に１つの入力を接続するようにする。
【００５９】
出力ノード３５４の信号は、図１に示した選択ＭＵＸ１０５を制御するのに使用することができる２進信号を含む。したがって、ノード３５４の信号は、図１および２に示したノード１５４の選択制御信号を表すことができる。ノード３５６の信号は、ノード３５４の信号の２進数の補数を表し、したがって、制御信号であるノード３５４の信号とともに使用される論理に関してＭＵＸの論理を単に逆にすることによって、ノード３５６の信号を、図１のスレッド選択ＭＵＸ１０５を制御する図１および２のノード１５４の制御信号として使用することもできる。図３に示した回路１０７は、本発明の基準入力優先度調整配置とともに使用することができる好ましい１つのインタリーブ規則執行回路１０７の一例として示しただけなので、図３の回路１０７の動作を示す例はこの開示では省略する。図３の規則執行回路１０７の動作の詳細な例は、参照によって本明細書に組み込まれる「マルチスレッド・プロセッサにおいて命令スレッドのインタリービングをランダム化するための方法および装置（METHOD AND APPARATUS FOR RANDOMIZING INSTRUCTION THREAD INTERLEAVINGIN A MULTI-THREAD PROCESSOR）」という名称の関連出願第＿＿＿＿＿＿号に出ている。
【００６０】
先に述べたとおり、ノード３５４およびノード３５６のどちらかの信号を使用して、図１に示した第１および第２の待ち行列１０１および１０２からの命令を通過させるＭＵＸ１０５を制御することができる。図３に示した特定の回路の論理では、ノード３５４の値０によって、ＭＵＸ１０５は第１のスレッドを選択し、所与のクロック・サイクルに第１の待ち行列１０１からの１つまたは複数の命令を通過させる。ノード３５４の値１によって、ＭＵＸ１０５は、所与のクロック・サイクルに第２の待ち行列１０２からの命令を通過させる。ノード３５６の信号を使用してＭＵＸ１０５を制御する場合には、ノード３５６の値０によって、ＭＵＸ１０５は、所与のクロック・サイクルに第２の待ち行列１０２からの命令を通過させ、ノード３５６の値１によって、ＭＵＸ１０５は、所与のクロック・サイクルに第１の待ち行列１０１からの命令を通過させる。ノード３５４および３５６の信号を使用して、図１に示した１５２および１５３に適用される制御信号を生成することもできる。本明細書と同時に提出された「マルチスレッド・プロセッサにおいて処理する命令スレッドを選択するための方法および装置（METHOD AND APPARATUS FOR SELECTING AN INSTRUCTION THREAD FORPROCESSING IN A MULTI-THREAD PROCESSOR）」という名称の関連米国特許出願第＿＿＿＿＿＿号には、ノード３５４および３５６の信号を２つの命令待ち行列１０１および１０２の制御信号として使用する本発明の一実施形態が記載されている。
【００６１】
以上に記載した好ましい実施形態は、本発明の原理を説明することを意図したものであり、本発明の範囲を限定しようとするものではない。当業者であれば、上記請求項の範囲から逸脱することなく、他のさまざまな実施形態およびこれらの好ましい実施形態に対するさまざまな変更が可能である。例えば、図示の論理および他の回路は、開示の発明を実現する方法の具体的な例を提供するが、開示の回路は正または負論理で実現することもできる。さらに、異なる組合せの論理ゲートを使用して同じ結果を得ることができ、このような変更は開示の構造と等価であるとみなされるべきである。最後に、命令スレッドをインタリーブし、入力処理優先度を調整し、ランダム化を挿入する開示のさまざまな方法に対する変更、および本発明をさまざまなプロセッサ・タイプおよびアーキテクチャに適合させる同様の変更も、開示の方法と等価であるとみなされるべきである。具体的には、２スレッドＳＭＴ処理配置を説明し図示したが、本発明は、２つの命令スレッドしか処理できないＳＭＴプロセッサに限定されるわけではない。むしろ、ハードウェア・フィードバックに基づく本発明による基準入力スレッド優先度調整は、サイクル単位のインタリーブ規則執行を使用する任意のＳＭＴプロセッサとともに使用することができる。
【００６２】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００６３】
（１）同時マルチスレッディング・プロセッサにおけるいくつかの命令スレッド間の命令のサイクル単位のインタリービングを制御する方法であって、
（ａ）前記いくつかの命令スレッドに含まれる第１の命令スレッドに関連した第１の基準入力処理優先度を指示する第１の優先度信号を受け取る段階と、
（ｂ）前記いくつかの命令スレッドの１つに関連したフィードバック信号を受け取る段階と、
（ｃ）前記第１の基準入力処理優先度を調整して、前記フィードバック信号に応答した第１の調整済み入力処理優先度を生成する段階と、
（ｄ）前記第１の調整済み入力処理優先度および少なくとも１つの他のスレッド処理優先度にインタリーブ規則を適用して、前記いくつかの命令スレッドからの命令のインタリービングを制御するスレッド選択制御信号を生成する段階と
を含む方法。
（２）前記フィードバック信号に応答して、前記第１の基準入力処理優先度と前記第１の調整済み入力処理優先度との間の選択を実施する段階をさらに含む、上記（１）に記載の方法。
（３）フィードバック信号を受け取る前記段階が、長い待ち時間事象に関連した信号を受け取ることを含む、上記（１）に記載の方法。
（４）前記長い待ち時間事象が前記第１の命令スレッドに関連し、前記第１の基準入力処理優先度を調整する前記段階が、前記第１の基準入力処理優先度を引き下げることを含む、上記（３）に記載の方法。
（５）前記長い待ち時間事象が前記第１の命令スレッド以外の命令スレッドに関連し、前記第１の基準入力処理優先度を調整する前記段階が、前記第１の基準入力処理優先度を引き上げることを含む、上記（３）に記載の方法。
（６）（ａ）前記いくつかの命令スレッドに含まれる第２の命令スレッドに関連した第２の基準入力処理優先度を指示する第２の優先度信号を受け取る段階と、
（ｂ）前記第２の基準入力処理優先度を調整して、前記フィードバック信号に応答した第２の調整済み入力処理優先度を生成する段階と、
（ｃ）前記第１の調整済み入力処理優先度および少なくとも前記第２の調整済み入力処理優先度に前記インタリーブ規則を適用して、前記いくつかの命令スレッドからの命令のインタリービングを制御する前記スレッド選択制御信号を生成する段階と
をさらに含む、上記（１）に記載の方法。
（７）同時マルチスレッディング・プロセッサにおけるいくつかの命令スレッド間の命令のサイクル単位のインタリービングを制御する際に使用する回路であって、
（ａ）前記いくつかの命令スレッドに含まれる第１の命令スレッドに関連した第１の基準入力処理優先度を指示する優先度信号を受け取る第１の優先度入力と、
（ｂ）前記いくつかの命令スレッドの１つに関連したフィードバック信号を受け取るフィードバック入力と、
（ｃ）前記第１の優先度入力に結合された第１の入力と、前記フィードバック入力に結合された第２の入力と、出力とを含み、前記第１の基準入力処理優先度を調整して、前記フィードバック信号に応答した第１の調整済み入力処理優先度信号を生成する第１の調整論理と、
（ｄ）前記第１の調整済み入力処理優先度および少なくとも１つの追加の処理優先度を受け取り、前記第１の調整済み入力処理優先度に部分的に基づいてスレッド・インタリーブ制御信号を生成するインタリーブ規則執行回路と
を含む回路。
（８）前記第１の調整論理が、前記命令スレッドの前記第１の基準入力処理優先度と前記第１の調整済み入力処理優先度との間の選択を実施する出力選択回路を含む、上記（７）に記載の回路。
（９）前記出力選択回路がマルチプレクサとマルチプレクサ制御とを含む、上記（８）に記載の回路。
（１０）前記フィードバック入力が、長い待ち時間事象に関連したフィードバック信号を受け取る入力である、上記（７）に記載の回路。
（１１）（ａ）前記長い待ち時間事象が前記第１の命令スレッドに関連し、
（ｂ）前記第１の調整論理が、前記第１の基準入力処理優先度を引き下げる減算装置を含む、
上記（１０）に記載の回路。
（１２）（ａ）前記長い待ち時間事象が前記第１の命令スレッド以外の命令スレッドに関連し、
（ｂ）前記第１の調整論理が、前記第１の基準入力処理優先度を引き上げる加算装置を含む、
上記（１０）に記載の回路。
（１３）（ａ）前記いくつかの命令スレッドに含まれる第２の命令スレッドに関連した第２の基準入力処理優先度を指示する第２の優先度信号を受け取る第２の優先度入力と、
（ｂ）前記第２の優先度入力に結合された第１の入力と、前記フィードバック入力に結合された第２の入力と、出力とを含み、前記第２の基準入力処理優先度を調整して、前記フィードバック信号に応答した第２の調整済み入力処理優先度信号を生成する第２の調整論理と
をさらに含み、
（ｃ）前記インタリーブ規則執行回路が、前記第２の調整済み入力処理優先度を受け取り、前記第２の調整済み入力処理優先度に部分的に基づいて前記スレッド・インタリーブ制御信号を生成する回路である、
上記（７）に記載の回路。
（１４）同時マルチスレッディング・プロセッサにおけるいくつかの命令スレッド間の命令のサイクル単位のインタリービングを制御する回路であって、
（ａ）前記いくつかの命令スレッドに含まれる第１の命令スレッドに関連した第１の基準入力処理優先度を指示する第１の優先度信号を受け取る第１の入力と、前記第１の命令スレッドに関連した第１の調整済み入力処理優先度を指示する第１の調整済み優先度信号を供給する出力とを含む第１の調整論理と、
（ｂ）制御信号を受け取る制御入力と、前記第１の調整論理の前記第１の入力に結合された基準優先度入力であって、前記第１の優先度信号を受け取る入力と、前記第１の調整論理の前記出力に結合された調整済み優先度入力であって、前記第１の調整済み優先度信号を受け取る入力と、前記第１の優先度信号と前記第１の調整済み優先度信号のうちの選択された一方の信号を含む第１の最終的な調整済み優先度信号を供給する出力とを含む第１のマルチプレクサと、
（ｃ）前記いくつかの命令スレッドの１つに関連したフィードバック信号を受け取る入力と、前記第１のマルチプレクサの前記制御入力に結合され、前記第１の優先度信号または前記第１の調整済み優先度信号を選択する制御信号を供給する出力とを含む第１のコントローラと、
（ｄ）前記マルチプレクサの前記出力に結合された第１の入力と、スレッド選択制御信号を供給する出力とを含む規則執行回路であって、前記第１の最終的な調整済み優先度信号および少なくとも１つの他の優先度信号にインタリーブ規則を適用して、前記いくつかの命令スレッドからの命令のインタリービングを制御するスレッド選択制御信号を生成する回路と
を含む回路。
（１５）前記フィードバック信号が長い待ち時間事象に関連している、上記（１４）に記載の回路。
（１６）（ａ）前記長い待ち時間事象が前記第１の命令スレッドに関連し、
（ｂ）前記調整論理が、前記第１の基準入力処理優先度を引き下げる減算装置を含む、
上記（１５）に記載の回路。
（１７）（ａ）前記長い待ち時間事象が前記第１の命令スレッド以外の命令スレッドに関連し、
（ｂ）前記調整論理が、前記第１の基準入力処理優先度を引き上げる加算装置を含む、
上記（１５）に記載の回路。
（１８）前記調整論理がさらに、前記第１の調整済み入力処理優先度を生成するために前記第１の基準入力処理優先度を調整する量を指示する調整信号を受け取る調整入力をさらに含む、上記（１４）に記載の回路。
（１９）（ａ）前記いくつかの命令スレッドに含まれる第２の命令スレッドに関連した第２の基準入力処理優先度を指示する第２の優先度信号を受け取る入力と、前記第２の命令スレッドに関連した第２の調整済み入力処理優先度を指示する第２の調整済み優先度信号を供給する出力とを含む第２の調整論理と、
（ｂ）制御信号を受け取る制御入力と、前記第２の調整論理の前記入力に結合された基準優先度入力であって、前記第２の優先度信号を受け取る入力と、前記第２の調整論理の前記出力に結合された調整済み優先度入力であって、前記第２の調整済み優先度信号を受け取る入力と、前記第２の優先度信号と前記第２の調整済み優先度信号のうちの選択された一方の信号を含む第２の最終的な調整済み優先度信号を供給する出力とを含む第２のマルチプレクサと、
（ｃ）前記いくつかの命令スレッドの１つに関連したフィードバック信号を受け取る入力と、前記第２のマルチプレクサの前記制御入力に結合され、前記第２の優先度信号または前記第２の調整済み優先度信号を選択する制御信号を供給する出力とを含むコントローラと
を含み、
（ｄ）前記規則執行回路が、前記第２のマルチプレクサの前記出力に結合された第２の入力を含み、前記規則執行回路がさらに、前記第１の最終的な調整済み優先度信号および少なくとも前記第２の最終的な調整済み優先度信号に前記インタリーブ規則を適用して、前記いくつかの命令スレッドからの命令のインタリービングを制御する前記スレッド選択制御信号を生成する回路である、
上記（１４）に記載の回路。
【図面の簡単な説明】
【００６４】
【図１】本発明に基づく優先度調整配置を含むプロセッサのブロック図である。
【図２】本発明の原理を具体化したスレッド優先度調整回路を含むスレッド選択コントローラのブロック図である。
【図３】図２のスレッド優先度調整回路および具体的なインタリーブ規則執行回路が組み込まれたスレッド選択コントローラの概略図である。
【符号の説明】
【００６５】
１００  プロセッサ
１０１  第１の命令待ち行列
１０２  第２の命令待ち行列
１０３  第１のラッチ
１０４  第２のラッチ
１０５  選択マルチプレクサ
１０６  選択コントローラ
１１３  システム・バス
１１４  バス・インタフェース・ユニット
１１５  プロセッサ・バス
１１６  メイン・メモリ
１１７  不揮発性大容量記憶装置
１１８  命令キャッシュ／メモリ管理ユニット
１１９  データ・キャッシュ／メモリ管理ユニット
１２０  シーケンシャル・フェッチャ
１２１  分岐処理ユニット
１２３  命令解読ユニット
１２４  順序付けユニット
１３０  実行ユニット
１４０  実行ユニット
１５０  実行ユニット
１５２  保留信号経路
１５３  保留信号経路
１５４  スレッド選択制御経路
１９０  完了ユニット
２０５  優先度調整要素
２０７  インタリーブ規則執行要素
２１７  ラッチ
２１８  ラッチ
２２５  調整論理
２２７  調整マルチプレクサ（ＭＵＸ）
２２９  調整ＭＵＸコントローラ
２５０  調整値選択装置
【図１】
2004326766.tif 000003
【図２】
2004326766.tif 000004
【図３】
2004326766.tif 000005