説明

マルチスレッドマイクロプロセッサにおける命令の発行をスケジュールするための方法及び装置

個々のクロックサイクルで複数の命令を発行できるマルチスレッドプロセッサにおいて、複数の利用可能な命令から個々のクロックサイクルでどの命令を発行すべきかを動的に決定する方法を提供し、この方法は、複数の利用可能な命令から最も優先度が高い命令を決定するステップと、最も優先度が高い命令と残りの利用可能な命令の各々との互換性を判断するステップと、最も優先度が高い命令を、最も優先度が高い命令と互換性があるとともに互いに互換性がある他の命令とともに同じクロックサイクルで発行するステップとを含み、最も優先度が高い命令を投機的命令とすることはできない。この方法の効果は、投機的命令が常に少なくとも1つの非投機的命令とともにしか発行されないことである。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチスレッドマイクロプロセッサにおける命令の発行を動的に最適化するための方法及び装置に関する。詳細には、本発明は、個々のクロックサイクルで1つよりも多くのスレッドからの命令を発行できるマルチスレッドマイクロプロセッサにおいて投機的命令を発行することに関する。
【背景技術】
【0002】
マルチスレッドプロセッサは、他のいずれかのプロセッサのように実行ユニット、キャッシュ及びメモリなどを含むが、複数のスレッドを実行するという概念をさらに組み入れたマイクロプロセッサである。実行するスレッドは、マイクロプロセッサのリソースに基づいて機能する命令ストリームから成り、これらの命令ストリームには、この特定のスレッド固有のものもあればスレッド間で共有できるものもある。リソースとしては、レジスタ、帯域幅、及びキャッシュ又はメモリ内の空間がある。図1は、当業で公知のマルチスレッドマイクロプロセッサコアの概略図である。図1に示すようなマルチスレッドプロセッサコアでは、いくつかのスレッド2が、スレッド命令スケジューラ1を介して命令を発行するというこれらのスレッドの能力に従って並行して動作することができる。スレッドに優先順位を与えて、どの命令を最初に発行すべきかを決定できるようにすることができる。
【0003】
プロセッサは、複数のスレッドが同じデータキャッシュ3などの同じリソースを同時に使用しなければ、これらの複数のスレッドからの命令を同じクロックサイクルで発行することができる。スケジューラは、個々のクロックサイクルでどの命令を一緒に発行できるかを判断するように構成されなければならない。
【0004】
投機的命令は特殊な命令である。マイクロプロセッサの分野では、投機的命令をフェッチして発行するという概念が十分に理解されている。投機的命令のフェッチ及び発行は、以前のプログラム命令の結果の予測を立て、その後、予測が正しく行われたかどうかが分かる前に、この予測に基づいて命令をフェッチして発行するという形をとる。結果を予測する動作の最も一般的な例に、条件テストに基づいてどのコードパスをとるべきかに関して選択を行うプログラム内の分岐の予測がある。別の例には、リターン予測及びジャンプ予測がある。その後、予測が正しかったと判定された場合、プロセッサは継続する。予測が正しくなかったと判定された場合、予測した命令及びこれらの副作用を消去して、新たに決定された命令フェッチアドレスから命令のフェッチ及び発行を再開する必要がある。
【0005】
投機的という用語は、プロセッサが、あらゆる直近に発行した命令の結果を知る前に動作を行う必要があるという理由で使用される。例えば、分岐は、比較又は条件テスト命令の直後に続くことが当然である。パイプラインプロセッサでは、パイプラインが多くのステージにわたることがあり、通常、条件テストの結果は、パイプラインをはるかに下った所で得られる。しかしながら、分岐は命令フェッチに直接影響を与え、従ってパイプラインの開始と同時に影響を及ぼす。この結果、条件テストの結果が分かるまで分岐を待機させる必要があるためバブル又はストールが生じ、この待機の代替案として、どの分岐が選択されそうであるかを推測し、この推測を、推測が正しかったか又は間違っていたかが分かるまでたどるべきルートとして採用する。推測を行ってからこの推測の正しさが分かるまでの間にフェッチ及び/又は発行された命令が必ずしも正しいとは限らず、解除する必要が生じることもあるため、投機的という用語を使用する。推測は、(逆方向のたどった分岐、順方向のたどっていない分岐などの)単純なルール、又はあるコードの部分が過去にどのようなことを最も一般的に行ったかを示す履歴データのいずれかに基づいて行われる。
【0006】
本明細書で使用する「投機的命令」という用語は、以前のプログラム命令の結果がまだ分かっていないために不要となる可能性のあるフェッチ及び/又は発行された命令を意味する。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】英国特許出願公開第0802314号明細書
【特許文献2】欧州特許第1639554号明細書
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明は、複数のスレッドからの命令を同じクロックサイクルで発行できるプロセッサにおいて投機的命令の発行をスケジュールする方法を課題とする。
【課題を解決するための手段】
【0009】
本発明の第1の態様によれば、個々のクロックサイクルで複数の命令を発行できるマルチスレッドプロセッサにおいて、複数の利用可能な命令から個々のクロックサイクルでどの命令を発行すべきかを動的に決定する方法が提供され、この方法は、複数の利用可能な命令から最も優先度が高い命令を決定するステップと、最も優先度が高い命令と残りの利用可能な命令の各々との互換性を判断するステップとを含み、命令は、同じリソースを必要としない場合に互いに互換性があり、最も優先度が高い命令を、最も優先度が高い命令と互換性があるとともに互いに互換性がある他の命令とともに同じクロックサイクルで発行するステップをさらに含み、最も優先度が高い命令を投機的命令とすることはできない。
【0010】
この方法の効果は、投機的命令が常に少なくとも1つの非投機的命令とともにしか発行されないことである。
【0011】
本発明の第2の態様によれば、個々のクロックサイクルで複数の命令を発行できるマルチスレッドプロセッサにおいて命令を発行するためのシステムが提供され、このシステムは、複数の利用可能な命令から最も優先度が高い命令を決定するための手段と、最も優先度が高い命令と残りの利用可能な命令の各々との互換性を判断するための手段とを備え、命令は、同じリソースを必要としない場合に互いに互換性があり、最も優先度が高い命令を、最も優先度が高い命令と互換性があるとともに互いに互換性がある他の命令とともに同じクロックサイクルで発行するための手段をさらに備え、最も優先度が高い命令を投機的命令とすることはできない。
【0012】
本発明の好ましい実施形態は、複数のスレッドから個々のクロックサイクルで命令を発行することができるマルチスレッドマイクロプロセッサにおいて投機的命令の効率的なスケジューリングを行うことを課題とする。
【0013】
本発明のこの及びその他の態様については添付の特許請求の範囲で定義しており、ここではこれらを参照されたい。
【0014】
以下、本発明の好ましい実施形態の詳細な説明を、添付図面を参照しながら一例として行う。
【図面の簡単な説明】
【0015】
【図1】マルチスレッドプロセッサコアを示す図である。
【図2】本発明によるシステムで使用するのに適した命令フェッチサブシステムを示す図である。
【図3】投機的命令をフェッチするためのシステムを示す図である。
【図4】本発明による、投機的命令をフェッチして実行するためのシステムを示す図である。
【図5】本発明の態様による、命令の発行をスケジュールするための処理ステップを示す図である。
【発明を実施するための形態】
【0016】
図1は、マルチスレッドマイクロプロセッサの概略図である。このマイクロプロセッサは、命令スケジューラ1を介して命令を発行する能力に従って並行して動作する複数のスレッドをサポートする。このシステムでは、異なるスレッドが同じリソースを同時に使用しようと試みなければ、これらのスレッドが命令を同時に発行することができる。スレッド命令が使用するリソースとして、算術演算装置4及び5、命令キャッシュ及びデータキャッシュを含むキャッシュサブシステム3、及びコプロセッサがある。また、システムは、単純なアドレスマッピングに基づいてキャッシュサブシステムの代わりにアクセスできる少量のオンチップランダムアクセスメモリ(RAM)を含むこともできる。システムは、命令RAM及びデータRAMを組み込むことができる。
【0017】
マイクロプロセッサは、並行して動作するいくつかのパイプライン又は実行ユニットを含む。1つのスレッドが1つのパイプラインに命令を発行している場合、他のスレッドは、同じクロックサイクルで他のパイプラインに命令を発行することができる。これを行うために、スケジューラが複数のスレッドからの命令を個々のクロックサイクルで利用できる必要があり、スケジューラは、あらゆる衝突するリソース要件を防ぐことができなければならない。
【0018】
図2は、スケジューラが複数のスレッドからの命令を全てのクロックサイクルで利用できるように命令をフェッチすることに関与する要素を示している。このサブシステムは、同時継続中の英国特許出願公開第GB0802314.5号明細書に記載されている。図2に示す実施形態には、命令キャッシュ20及びオンチップRAM22という2つの主な命令データソースが存在する。パフォーマンスを最適化するために、両方のソースに同時にアクセスすることができる(但し、個々のスレッドは一方又は他方にしかアクセスせず、両方にアクセスすることはない)。2つの命令データソースを有することにより、サイクルごとに2つの異なるスレッドのために最大2つの命令を取得できるようになる。
【0019】
命令キャッシュ20又はオンチップRAM22のいずれかからの命令にどのスレッドがアクセスすべきかを決定するために、個々の命令ソースは、これらの命令ソースとスレッドの各々の命令フェッチユニット25との間に結合された優先度アービタ24を有する。
【0020】
個々の優先度アービタは、(スレッド0〜スレッドnの)スレッドの各々の命令フェッチユニット25に結合される。この接続を介して、優先度アービタは、命令を求める要求を関連する優先度付けデータとともに受け取り、フェッチした命令を命令フェッチユニット25に与えることができる。
【0021】
個々の命令フェッチユニット25は、命令デコーダ及びリソースインターロックユニット26に与える準備が整った最大8つの命令を保持することができる命令バッファを含み、その後この命令デコーダ及びリソースインターロックユニット26が命令スケジューラ28に命令を発行し、この命令スケジューラ28が個々の命令を実行のためにさらにプロセッサに渡す。
【0022】
命令スケジューラ28は、複数のスレッドの命令を取得すると、これらの複数のスレッドの命令を同じサイクルで発行することができる。
【0023】
命令スケジューラ28は、複数のスレッドからの命令を同じクロックサイクルで発行できるようになるために、個々のスレッドの命令が必要とするリソースを、他の命令に必要なリソースに照らしてテストする必要がある。この結果、衝突する命令が同時に発行されないことが確実になる。このことは、命令デコードユニット26が、対応する命令フェッチユニット25から個々の命令が入って来たときにこの命令を予備デコードし、この命令に必要な規定のリソースを、装置内でアクティブな他の全てのスレッドのための並行して定められたリソースに照らしてANDingすることによって管理することができる。
【0024】
縮小したこれらのリソース要件の組をテストすることができる。単純な例を挙げると、あるスレッドが、何らかのデータをロード又は記憶するために、実行ユニットを使用してデータメモリをフェッチする要求を送信したいと望むとする。別のスレッドが、このデータメモリのフェッチに同じ実行ユニット又はデータメモリポートのいずれかを使用したいと望む場合、このスレッドは、最初のスレッドの実行と互換性がないことになり、これらの2つを同時に発行することはできなくなる。しかしながら、別のスレッドが、これらのリソースを必要としないプログラム分岐などの異なる命令セットを実行したいと望む場合、このスレッドは互換性があると見なされ、このスレッドを、あるスレッドを使用してデータメモリのフェッチを要求するのと同時に実行のために発行することができる。
【0025】
適切な判断を行うために、全ての存在するスレッドは、互いに対して並行してテストした規定のリソース要件を全て有する。この処理は、スレッドAがスレッドBと互換性があり、当然スレッドBもスレッドAと互換性があるという点で対称的である。従って、個々のスレッドの対の間ではテストを1回行えばよい。この互換性テストの結果、個々のスレッドの組み合わせごとにフラグを生成し、このフラグの状態により、スレッドに互換性があるか否かを判断する。従って、個々のスレッドを他の全てのスレッドに対してテストした結果、スレッドの対ごとに互換性フラグが生成され、このフラグの状態によってスレッドに実行のための互換性があるか否か、すなわち同時に2つのスレッドのみが重複するリソース要件を有するかどうかが判断されるということになる。
【0026】
次に、どの命令を発行すべきかを判断するために、個々のスレッドに優先順位を与える。この優先順位は、欧州特許第1639554号明細書に記載されている自動MIPS割り当て(AMA)メトリックなどのいずれかの好適なメトリックに基づくことができる。この結果、レジスタ又はリソースのインターロックによって命令の発行が防げられない最も優先順位が高いスレッドが、発行するスレッドとして選択される。同じリソースを必要としないことが判明している他のいずれかのスレッドは、自由に発行できる最も優先度が高いスレッドからの(優位命令と呼ばれる)命令とともにグループ化して、このクロックサイクルで発行される命令セットに変えることができる。命令を、これらの命令とすでにセットに含まれている命令との互換性に従う優先順位でセットに追加することもできる。
【0027】
個々の命令が必要とするリソースの判断は、命令デコードユニット26における命令予備デコード動作によって行われる。デコードユニット26は、個々の命令が必要とするリソースの概要を生成する。次に、命令スケジューラが、このリソース要件を別のスレッドに照らしてスレッド間の互換性があるかどうか、及び機械の状態に照らしてリソース及びレジスタの利用可能性があるかどうかをテストする。スケジューラは、これらのテストの結果を優先順位と組み合わせて、所与のサイクルでスケジュールするための最終的な命令セットを提供する。
【0028】
当技術では、「投機」の概念は十分に理解されている。この投機は、予測を行い、その後この予測が正しく行われたかどうかが分かる前にこの予測に基づいて命令を発行するという形をとる。命令の結果を予測する動作の最も一般的な例に、条件テストに基づいてどのコードパスをとるべきかに関して選択を行う分岐がある。投機は短期間にのみ適用され、その後は命令の結果が分かり、通常のスケジューリングを再開することができる。
【0029】
本発明の態様によれば、投機的に実行される命令は、上述した通常のスレッド命令の優先度ルールを使用しない。これらのルールを使用すべきでない理由は、投機が正しいかどうかが発行時に分からないからである。通常の優先度ルールを使用することの代替案は、これらのスレッドに最も低い優先度を与えることである。しかしながら、これによりいくつかの設計課題が生じ得る。従って、好ましい構成としては、投機的に実行される命令は、別のスレッドと対になっている場合を除き発行の機会を有するべきではない。
【0030】
本発明の好ましい例は、2又はそれ以上のスレッド(具体的には2つ、3つ又は4つのスレッド)を有するマルチスレッドマイクロプロセッサで構成される。マイクロプロセッサ内の個々のスレッドは固有のプログラムカウンタ(PC)を有し、これをさらに使用して、そのスレッドの命令フェッチを、命令メモリ又は命令キャッシュから命令をフェッチするための1つのハードウェアを全てのスレッドが有するように制御する。全てのスレッドが固有の命令メモリ又は命令キャッシュを有するようにすることもできる。しかしながら、このためには、システム内のスレッドに必要なメモリが同じシステム内の他のスレッドよりも少なくて済むかどうかに関わらず、個々のスレッドが必要とするリソースでこれらのスレッドを構築する必要がある。これは望ましいことではない。望ましい戦略は、命令メモリ及び命令キャッシュを全スレッド間で共有して、これらのスレッド間の、このメモリ又はキャッシュへのアクセス権の問題を解決することである。
【0031】
個々のスレッドは、これら自体の命令フェッチに特有の一定量のハードウェアを有するので、このハードウェアを、命令のフローに関する予測を行うように拡大することができる。例えば第1の例では、予測ハードウェアが、命令ストリーム内の分岐命令が発行のために送信されるのを監視し、この分岐が選択されるかどうかを予測することができる。その後、命令フェッチにおいて、この(分岐を選択するか又はしないかなどの)予測に基づいてフェッチパターンを変更することができる。この段階で、命令フェッチが(発行時に)分岐自体の結果を判定できるまで待機し、その後さらなる命令を与え、又は修正した場所からフェッチを再開するようにシステムを構成することができる。この手の予測される命令フェッチを図3に示す。
【0032】
図3から分かるように、個々のスレッドの命令フェッチシステムは、新たな要求を生成するための状態機械30(「アドレスフィード」)、並びにスレッド及びその命令スケジューラに命令を与えるための状態機械32(「データフィード)で構成される。状態機械32は、図2の命令予備デコード及びリソースインターロックテスト26の機能を含む。また、図3には、返送するフェッチデータから分岐命令を取り出し、これらの分岐がどこへ続くのかについての予測に基づき、命令をどこから読み出すべきかに関してアドレスフィードを更新することができる分岐フィルタ及び予測ユニット34も示している。
【0033】
非マルチスレッドマイクロプロセッサでは、命令の消費量が最大要求率未満である場合、命令フェッチパイプラインがストールすることがある。しかしながら、命令キャッシュがスレッド間で共有されるマルチスレッドシステムでは、スレッドがいくつかの命令を要求したもののこれらを使用しない場合には、システム内の他の全てのスレッドがストールするようにスレッド間に依存状態が生じるので、通常このようなストールは考えられない。従って、個々のスレッド命令フェッチユニットは、一定数の命令要求のための返送データを保持することができる命令バッファを組み込む。命令バッファ内に存在するスロットに記憶できる数と同じ数の命令要求を送信中とすることができる。この命令バッファをブロック36として示している。命令は、命令バッファから命令データフィードユニット32を介して命令スケジューラに渡る。
【0034】
このシステムでは、分岐の方向(順方向又は逆方向)などの単純なルールに基づいて、又は過去にこの分岐がどのルートをたどったかに関する何らかの形の簡易履歴を使用して予測を行うことができる。発行レジスタ38における実際の分岐命令の発行は、結果が分かる(すなわち状態テストなどの断定を行うことができる)まで棚上げされる。結果が判定されると、分岐を発行し、その後命令のフローにより、予測したフェッチデータを取り出すか、又は命令フェッチが正しい命令アドレスから再開されるようにするかのいずれかを行うことができる。
【0035】
このようなシステムは、分岐を選択することに関する待ち時間のいくつかを隠すために有用である。しかしながら、このようなシステムには、分岐状態テストの結果が判定されるのを待っている間に常にストールが生じ得るという大きな制限がある。
【0036】
このシステムに対する改善として、分岐の結果、従って分岐予測の正しさが判明するよりも前に予測した命令を発行することが挙げられる。この場合、(発行時点では分岐予測が正しかったかどうかが分かっていないので)分岐の直後に発行された命令は投機的に実行される。プロセッサパイプラインにおいて分岐の結果が計算されると、予測が正しく行われたかどうかが最終的に明らかになる。予測が正しく行われていた場合、命令の発行は投機的ではなくなり、スレッドを通常通りに継続することができる。予測が正しく行われていなかったことが判明した場合、分岐後に発行した命令及びこれらの副作用を消去し、新たに判定された命令フェッチアドレスから命令フェッチを再開する必要がある。この投機的命令フェッチ及び発行を図4に示す。
【0037】
図4には、図3と同じフェッチシステムの特徴を示しているが、投機的命令が発行されるという違いがある。図4には、命令スケジューラ28の後に3段階の実行パイプライン40を示し、さらに分岐予測ユニット34へ戻る分岐予測検証データ経路42を示している。図4から分かるように、分岐命令の評価にはいくつかのサイクルが必要となり得る。これらのサイクルがストールするのを避けるために、スレッドは、分岐以降ずっと命令を発行し続けることができる必要がある。これは、これらの命令の動作を解除できるという条件で行うことができる。図4から分かるように、通常、対象となる命令の数はかなり不足しており、図示のように多くても3つ又は4つの命令しか存在しない。
【0038】
マルチスレッドマイクロプロセッサでは、所与のサイクルで発行できる命令を有するいくつかのスレッドが十分に存在することができる。従って、(発行すべきかどうかという点で)発行される命令の正しさに疑いの余地がない場合には、他のスレッドから非投機的命令を発行する方がよいと考えられる。しかしながら、投機的命令を絶対に発行しない場合、(まさにフェッチのみを予測する構成のように)スレッドの命令ストリームには常にストールが生じ得る。命令を投機的に発行する利点は、良好な予測を行うことができる場合には、命令ストリームにおけるif/then決定に関するストールがより少ない状態でより有用な作業を行うことができるという点である。
【0039】
このように、発行により、他の命令を実行する準備ができている他のスレッドに影響が及ばなければ、可能な場合には命令を投機的に実行できることが有益である。これを行うための1つの方法は、投機的に実行しているスレッドに最も低い優先度を与えることである。しかしながら、現在の命令発行と将来の優先順位との間にフィードバックループが存在するシステムでこれを行うことは困難となり得る。より容易に行うことができる代替案としては、投機的実行命令に、第1の又は主要な又は優位な発行物に適さないものとしてマーク付けすることである。これは、投機的に実行される命令を主な命令スケジューラにとって利用可能な命令として提示せず、代わりにスレッドがこの段階でスレッド自体にインターロックされたもの又は利用できないものとしてマーク付けするようにすることによって行うことができる。
【0040】
実行の準備ができている命令を含む最も優先度の高いスレッドの選択と並行して、このスレッドと同時に他のどのスレッドを発行できるようにするかに関する決定を行う必要がある。この計算は、負荷バランシングメトリック一式を計算する場合と比較して関与するゲートが少ないので、全てのサイクルでスレッド全てに関して行うことができる。必要なゲートは、スレッドの規定のリソースをシステム内の他のスレッド全てに対してテストして、このスレッドの命令と互換性のある他のスレッドのリストを提供する。その後、この情報を事前に準備したスレッドの優先順位と組み合わせて、最初のスケジューリング決定に勝る場合、このスレッドとともにどのスレッドを発行するかについての絶対リストを作成する。
【0041】
図5に、本発明の態様による、どの命令を使用すべきかを決定する上で行うステップを示す。ステップ500において、利用可能な命令を有するスレッドの各々に関して優先順位を決定する。この段階では、リソース又はレジスタのインターロックが検討から外れているので、スレッドは命令を発行することができない。投機的命令を有するスレッドは、この段階で検討するのに適していないものとしてスレッド自体にマーク付けも行う。ステップ510において、命令を発行できる最も優先度の高いスレッドを選択する。このスレッドから発行される命令を優位命令と呼ぶ。上述したように、この優位命令は投機的命令であることはできない。ステップ520において、利用可能な命令を含むスレッドごとに互換性のあるスレッドのリストを作成する。ステップ530において、これらのリスト及び優先順位から、優位命令とともに発行するための命令セットを決定する。ステップ540において、命令スケジューラにより命令セットが発行される。
【0042】
従って、本発明は、命令を投機的に実行する場合にスレッドが通常の命令スケジューリングルールをうまく回避できるようにする単純な手段を提供する一方で、従来であれば、分岐結果が判定されるのを待っている間にスケジューラがストールさせる必要があったであろう命令を発行できることによりスループットが改善される可能性はそのまま保持する。この解決策で使用する追加のゲートはわずかであり、この結果所定のマルチスレッドマイクロプロセッサ設計で達成できるクロックスピードに負の影響を与えることはない。
【符号の説明】
【0043】
20 命令キャッシュ
22 オンチップRAM
24 優先度アービタ
25 命令フェッチ
26 命令デコーダ及びリソースインターロック
28 命令スケジューラ

【特許請求の範囲】
【請求項1】
個々のクロックサイクルで複数の命令を発行できるマルチスレッドプロセッサにおいて、複数の利用可能な命令から個々のクロックサイクルでどの命令を発行すべきかを動的に決定する方法であって、
前記複数の利用可能な命令から最も優先度が高い命令を決定するステップと、
前記最も優先度が高い命令と前記利用可能な命令の各々との互換性を判断するステップと、
を含み、命令は、同じリソースを必要としない場合に互いに互換性があり、
前記最も優先度が高い命令を、前記最も優先度が高い命令と互換性があるとともに互いに互換性がある他の命令とともに同じクロックサイクルで発行するステップをさらに含み、
前記最も優先度が高い命令を投機的命令とすることはできない。
【請求項2】
前記最も優先度が高い命令を決定するステップが、命令を発行できる最も優先度が高いスレッドを決定し、このスレッドからの前記命令を前記最も優先度が高い命令として選択するステップとを含む、
ことを特徴とする請求項1に記載の方法。
【請求項3】
投機的命令、又は投機的命令を含むスレッドに、前記最も優先度が高い命令を決定するステップに利用できないものとしてマーク付けするステップをさらに含む、
ことを特徴とする請求項1に記載の方法。
【請求項4】
前記複数の利用可能な命令の優先順位を決定するステップをさらに含み、前記最も優先度が高い命令と互換性のある命令が優先順位の順に発行される、
ことを特徴とする請求項1、2又は3に記載の方法。
【請求項5】
投機的命令に、非投機的命令よりも低い優先順位が与えられる、
ことを特徴とする請求項4に記載の方法。
【請求項6】
前記複数の利用可能な命令の優先順位を決定するステップが、利用可能な命令を含む個々のスレッドの優先順位を決定するステップを含む、
ことを特徴とする請求項4又は5に記載の方法。
【請求項7】
前記利用可能な命令ごとに互換性のある又は互換性のない命令のリストを決定するステップをさらに含む、
ことを特徴とする請求項1から6のいずれかに記載の方法。
【請求項8】
個々のクロックサイクルで複数の命令を発行できるマルチスレッドプロセッサにおいて命令を発行するためのシステムであって、
前記複数の利用可能な命令から最も優先度が高い命令を決定するための手段と、
前記最も優先度が高い命令と残りの前記利用可能な命令の各々との互換性を判断するための手段と、
を備え、命令は、同じリソースを必要としない場合に互いに互換性があり、
前記最も優先度が高い命令を、前記最も優先度が高い命令と互換性があるとともに互いに互換性がある他の命令とともに同じクロックサイクルで発行するための手段をさらに備え、
前記最も優先度が高い命令を投機的命令とすることはできない。
【請求項9】
前記最も優先度が高い命令を決定するための手段が、命令を発行できる最も優先度が高いスレッドを決定し、このスレッドからの前記命令を前記最も優先度が高い命令として選択するための手段を備える、
ことを特徴とする請求項8に記載のシステム。
【請求項10】
投機的命令、又は投機的命令を含むスレッドに、前記最も優先度が高い命令としての検討に利用できないものとしてマーク付けするための手段をさらに備える、
ことを特徴とする請求項8又は9に記載のシステム。
【請求項11】
前記複数の利用可能な命令の優先順位を決定するための手段をさらに備え、前記発行するための手段が、前記最も優先度が高い命令と互換性のある命令を優先順位の順に発行するように構成される、
ことを特徴とする請求項8、9又は10に記載のシステム。
【請求項12】
前記複数の利用可能な命令の優先順位を決定するための手段が、利用可能な命令を含む個々のスレッドの優先順位を決定するための手段を備える、
ことを特徴とする請求項11に記載のシステム。
【請求項13】
前記利用可能な命令ごとに互換性のある又は互換性のない命令のリストを決定するための手段をさらに備える、
ことを特徴とする請求項8から12のいずれか1項に記載のシステム。
【請求項14】
実質的に本明細書において添付図面を参照しながら説明したような、個々のクロックサイクルで複数の命令を発行できるマルチスレッドプロセッサにおいて、複数の利用可能な命令から個々のクロックサイクルでどの命令を発行すべきかを動的に決定する方法。
【請求項15】
実質的に本明細書において添付図面を参照しながら説明したような、個々のクロックサイクルで複数の命令を発行できるマルチスレッドプロセッサにおいて命令を発行するためのシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公表番号】特表2012−525620(P2012−525620A)
【公表日】平成24年10月22日(2012.10.22)
【国際特許分類】
【出願番号】特願2012−507809(P2012−507809)
【出願日】平成22年4月27日(2010.4.27)
【国際出願番号】PCT/GB2010/000832
【国際公開番号】WO2010/125336
【国際公開日】平成22年11月4日(2010.11.4)
【出願人】(501176037)イマジネイション テクノロジーズ リミテッド (59)
【Fターム(参考)】