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

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

Info

Publication number
JP5631976B2
JP5631976B2 JP2012507809A JP2012507809A JP5631976B2 JP 5631976 B2 JP5631976 B2 JP 5631976B2 JP 2012507809 A JP2012507809 A JP 2012507809A JP 2012507809 A JP2012507809 A JP 2012507809A JP 5631976 B2 JP5631976 B2 JP 5631976B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
highest priority
thread
determining
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012507809A
Other languages
English (en)
Other versions
JP2012525620A5 (ja
JP2012525620A (ja
Inventor
アンドリュー デイヴィッド ウェバー
アンドリュー デイヴィッド ウェバー
Original Assignee
イマジネイション テクノロジーズ リミテッド
イマジネイション テクノロジーズ リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by イマジネイション テクノロジーズ リミテッド, イマジネイション テクノロジーズ リミテッド filed Critical イマジネイション テクノロジーズ リミテッド
Publication of JP2012525620A publication Critical patent/JP2012525620A/ja
Publication of JP2012525620A5 publication Critical patent/JP2012525620A5/ja
Application granted granted Critical
Publication of JP5631976B2 publication Critical patent/JP5631976B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Description

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

Claims (13)

  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項に記載のシステム。
JP2012507809A 2009-04-28 2010-04-27 マルチスレッドマイクロプロセッサにおける命令の発行をスケジュールするための方法及び装置 Active JP5631976B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0907286A GB2469822B (en) 2009-04-28 2009-04-28 Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor
GB0907286.9 2009-04-28
PCT/GB2010/000832 WO2010125336A1 (en) 2009-04-28 2010-04-27 Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor

Publications (3)

Publication Number Publication Date
JP2012525620A JP2012525620A (ja) 2012-10-22
JP2012525620A5 JP2012525620A5 (ja) 2013-06-20
JP5631976B2 true JP5631976B2 (ja) 2014-11-26

Family

ID=40791924

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012507809A Active JP5631976B2 (ja) 2009-04-28 2010-04-27 マルチスレッドマイクロプロセッサにおける命令の発行をスケジュールするための方法及び装置

Country Status (6)

Country Link
US (2) US9189241B2 (ja)
EP (1) EP2425329B8 (ja)
JP (1) JP5631976B2 (ja)
CN (1) CN102414659B (ja)
GB (1) GB2469822B (ja)
WO (1) WO2010125336A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063291B (zh) * 2011-01-13 2013-08-28 上海大学 一种前瞻线程的多级并行执行方法
US20140007087A1 (en) * 2012-06-29 2014-01-02 Mark Scott-Nash Virtual trusted platform module
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
CN108279927B (zh) * 2017-12-26 2020-07-31 芯原微电子(上海)股份有限公司 可调整指令优先级的多通道指令控制方法及系统、控制器
US11314516B2 (en) * 2018-01-19 2022-04-26 Marvell Asia Pte, Ltd. Issuing instructions based on resource conflict constraints in microprocessor
CN108710506B (zh) * 2018-05-31 2021-01-22 北京智行者科技有限公司 车辆的指令处理方法
CN111984387B (zh) * 2020-08-26 2024-06-25 上海兆芯集成电路股份有限公司 用于调度发布队列中指令的方法及处理器
US11656877B2 (en) 2021-03-31 2023-05-23 Advanced Micro Devices, Inc. Wavefront selection and execution

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69327688T2 (de) * 1992-08-12 2000-09-07 Advanced Micro Devices, Inc. Befehlsdecoder
JPH08179946A (ja) * 1994-12-26 1996-07-12 Toshiba Corp プロセッサ
GB2311882B (en) 1996-04-04 2000-08-09 Videologic Ltd A data processing management system
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
JP2001092657A (ja) * 1999-09-22 2001-04-06 Toshiba Corp 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体
US6658551B1 (en) * 2000-03-30 2003-12-02 Agere Systems Inc. Method and apparatus for identifying splittable packets in a multithreaded VLIW processor
GB2372847B (en) * 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US7051195B2 (en) * 2001-10-26 2006-05-23 Hewlett-Packard Development Company, L.P. Method of optimization of CPU and chipset performance by support of optional reads by CPU and chipset
JP3816844B2 (ja) * 2002-07-05 2006-08-30 富士通株式会社 プロセッサ及び命令制御方法
US6950925B1 (en) * 2002-08-28 2005-09-27 Advanced Micro Devices, Inc. Scheduler for use in a microprocessor that supports data-speculative execution
US20040168045A1 (en) * 2003-02-21 2004-08-26 Dale Morris Out-of-order processor executing speculative-load instructions
US20040225870A1 (en) * 2003-05-07 2004-11-11 Srinivasan Srikanth T. Method and apparatus for reducing wrong path execution in a speculative multi-threaded processor
US7366877B2 (en) * 2003-09-17 2008-04-29 International Business Machines Corporation Speculative instruction issue in a simultaneously multithreaded processor
GB2415060B (en) 2004-04-16 2007-02-14 Imagination Tech Ltd Dynamic load balancing
US7237094B2 (en) * 2004-10-14 2007-06-26 International Business Machines Corporation Instruction group formation and mechanism for SMT dispatch
US8756605B2 (en) * 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US7631308B2 (en) * 2005-02-11 2009-12-08 International Business Machines Corporation Thread priority method for ensuring processing fairness in simultaneous multi-threading microprocessors
US7254697B2 (en) * 2005-02-11 2007-08-07 International Business Machines Corporation Method and apparatus for dynamic modification of microprocessor instruction group at dispatch
JP2006343872A (ja) * 2005-06-07 2006-12-21 Keio Gijuku マルチスレッド中央演算装置および同時マルチスレッディング制御方法
US20070294693A1 (en) * 2006-06-16 2007-12-20 Microsoft Corporation Scheduling thread execution among a plurality of processors based on evaluation of memory access data
CN100578459C (zh) * 2007-06-12 2010-01-06 华为技术有限公司 线程调度方法及其装置

Also Published As

Publication number Publication date
EP2425329A1 (en) 2012-03-07
US10360038B2 (en) 2019-07-23
CN102414659B (zh) 2014-10-29
WO2010125336A1 (en) 2010-11-04
EP2425329B1 (en) 2017-12-27
GB0907286D0 (en) 2009-06-10
US9189241B2 (en) 2015-11-17
GB2469822B (en) 2011-04-20
US20160055002A1 (en) 2016-02-25
GB2469822A (en) 2010-11-03
US20100275211A1 (en) 2010-10-28
JP2012525620A (ja) 2012-10-22
EP2425329B8 (en) 2018-10-24
CN102414659A (zh) 2012-04-11

Similar Documents

Publication Publication Date Title
JP5631976B2 (ja) マルチスレッドマイクロプロセッサにおける命令の発行をスケジュールするための方法及び装置
US8082420B2 (en) Method and apparatus for executing instructions
JP5607545B2 (ja) マイクロプロセッサシステムにおける命令フェッチングの優先順位付け
JP4610593B2 (ja) デュアルスレッドプロセッサ
JP5104863B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP5270257B2 (ja) 予測されなかったブランチに対する命令バッファの深さを動的に管理するための方法および装置
US7734897B2 (en) Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads
US7269712B2 (en) Thread selection for fetching instructions for pipeline multi-threaded processor
US7035997B1 (en) Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US20070143580A1 (en) Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
EP2035929A1 (en) Synchronisation of execution threads on a multi-threaded processor
KR20150019349A (ko) 다중 쓰레드 실행 프로세서 및 이의 동작 방법
WO2009115779A1 (en) Pipeline processors
JP2005309762A (ja) スレッド切替制御装置。
US7237093B1 (en) Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams
JP2009009569A (ja) 複数のロード命令を実行するための方法および装置
KR101122180B1 (ko) 명령 제어 장치 및 명령 제어 방법
US10169046B2 (en) Out-of-order processor that avoids deadlock in processing queues by designating a most favored instruction
JP2020091751A (ja) 演算処理装置および演算処理装置の制御方法
JP5093237B2 (ja) 命令処理装置
US20040128476A1 (en) Scheme to simplify instruction buffer logic supporting multiple strands
US20040128488A1 (en) Strand switching algorithm to avoid strand starvation
JP2023540036A (ja) 分岐予測リダイレクトのための代替パス

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130425

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130425

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140707

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140822

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140916

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141008

R150 Certificate of patent or registration of utility model

Ref document number: 5631976

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250