JP5047542B2 - マルチスレッドプロセッサのディスパッチ時にスレッドをブロックする方法、コンピュータプログラム、および装置(精細なマルチスレッドディスパッチロックメカニズム) - Google Patents

マルチスレッドプロセッサのディスパッチ時にスレッドをブロックする方法、コンピュータプログラム、および装置(精細なマルチスレッドディスパッチロックメカニズム) Download PDF

Info

Publication number
JP5047542B2
JP5047542B2 JP2006156065A JP2006156065A JP5047542B2 JP 5047542 B2 JP5047542 B2 JP 5047542B2 JP 2006156065 A JP2006156065 A JP 2006156065A JP 2006156065 A JP2006156065 A JP 2006156065A JP 5047542 B2 JP5047542 B2 JP 5047542B2
Authority
JP
Japan
Prior art keywords
dispatch
thread
instruction
pipeline
cycles
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
JP2006156065A
Other languages
English (en)
Other versions
JP2006351008A (ja
Inventor
クリストファー、マイケル、アバナシー
ジョナサン、ジェームス、デメント
アルバート、ジェームス、ヴァン、ノーストランド・ジュニア
デヴィッド、シッピー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of JP2006351008A publication Critical patent/JP2006351008A/ja
Application granted granted Critical
Publication of JP5047542B2 publication Critical patent/JP5047542B2/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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/3802Instruction prefetching

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

本発明は、一般に、マルチスレッドプロセッサのブロックメカニズムに関し、特に、スレッド性能の精細な制御を可能とするディスパッチブロックメカニズムに関する。
マルチスレッド技術は、同じ単一の処理コア上で2つ以上の単独のスレッドが実行処理することを可能とする。スレッドは、プログラムの一部、または独立に実行処理することができる命令のグループである。したがって、単一スレッドの命令のグループは、プログラム順序で実行処理しなければならないのに対して、別個のスレッドの命令のグループは、独立に、および並行して実行処理することができる。プロセッサ内の複数のスレッドは、プロセッサがそのリソースをよりよく利用することを可能とする。マルチスレッド技術は、単一処理装置が、ソフトウェアから見て2台以上のプロセッサのように見えることを可能とする。
各スレッドは、それ自身のリソース上で独立に動作することが理想的であろう。各スレッドは、それ自身の命令パイプラインおよび命令制御部、実行パイプラインおよび実行部などを利用するであろう。実際には、チップ上のリソースの領域および量が制限されているため、この実施形態は実行可能ではない。したがって、異なるスレッドは、いくつかのリソースを共用使用しなければならない。例えば、複数のスレッドが、同一命令発行部または実行パイプラインを共用使用できる。マルチスレッドプロセッサにおいては、リソースの共用使用、命令従属関係の取扱い、およびリソースへのアクセス優先度の決定に関する発行は、リソースの「障害」を生み出すため、性能にとっての問題となる。
スレッド間のリソースの共用使用の問題は、1つのスレッドの長い待ち時間(レイテンシ:latency)を有する命令が、他のスレッドの命令の実行処理を停止させうるということである。例えば、スレッド1およびスレッド2は、同一命令発行部を共用使用する。命令制御部を共用使用しているため、スレッド1が命令制御部において多数サイクルの間停止しているとき、スレッド2もまた多数サイクルの間停止されるであろう。スレッド1は、実行処理される非パイプライン動作のために、または多数のサイクルが消去されるのを待つ従属関係のために、停止しているかもしれない。したがって、スレッド1から独立しているスレッド2は、命令を発行することができず、かつスレッド1を待たなければならない。この問題は、スレッド2の時間とリソースの無駄につながる。
この問題に対処する一方法は、スレッド間の発行時点を分離することである。この方法は有効な解決方法であるが、命令発行の複雑さを増加させる欠点を有するとともに、チップ上の相当な領域を要する。他の方法は、長い待ち時間の命令が検知されるとき、ディスパッチ時に命令をフラッシングすることである。この方法は、フラッシュペナルティが、命令の正確な待ち時間に適合しそうにないため、無駄なサイクルに通じ、問題が多い。同一リソースを共用使用する複数のスレッドが、サイクルを浪費することなく、真に独立に動作することを可能とする簡易システムまたは方法は、先行技術に対して著しい進歩をもたらすであろうことは明白である。
本発明は、マルチスレッドプロセッサのディスパッチ時にスレッドをブロックすることにより、スレッド性能の精細な制御方法、コンピュータプログラム、および装置を提供する。複数のスレッドは、プロセッサ内のパイプラインを共用使用する。したがって、1つのスレッドの命令に対する長い待ち時間の条件は、パイプラインを共用使用するスレッドのすべてを停止させることができる。長い待ち時間の条件は、非パイプライン動作または従属関係でありうる。コンパイラが、この長い待ち時間の条件を予知できると、コンパイラは、特定のスレッドをブロックするディスパッチブロック信号命令をプログラムコードに注入する。プロセッサは、この命令を検知して、命令により指示されたサイクル数の間(さらに、付加的な待ち時間が検知されるとき、ハードウェアが付加することができる任意の付加的なサイクルを加えて)、ディスパッチ時にスレッドをブロックする。ブロックの長さは、待ち時間の長さと一致するため、長い待ち時間の条件が解除された後に、パイプラインは、ブロックされたスレッドから命令をディスパッチできる。一実施例では、ディスパッチブロック信号命令は、修正されたOR命令であり、他の実施例では、命令は、1つのNop命令である。OR命令およびNop命令は、条件の待ち時間と一致するサイクルの特定量の間、スレッドをブロックする。修正されたOR命令は、プログラムの実行処理、レジスタファイル状態、メモリ状態、または入出力に影響を及ぼさず、あくまでディスパッチブロックとして動作するのみである。ディスパッチ時に1つのスレッドをブロックすることにより、プロセッサは、ブロックの間、他のスレッドから命令をディスパッチできる。これは、1つのスレッドの長い待ち時間の条件が、複数のスレッドの停止を引き起こさないことを保証し、かつ現在のスレッドが所要の正確なサイクル数の間停止されることを保証する。
以下の議論では、多数の特定の詳細について、本発明の十分な理解を提供するために詳しく説明さている。しかしながら、当業者は、このような特定の詳細なしに、本発明を実施できることを理解するであろう。他の実例では、既知の構成要素が、不要な詳細において本発明を分かりにくくすることがないように、概略図またはブロック図で説明された。さらに、ネットワーク通信、電磁信号通信技術などに関する詳細の多くについては、このような詳細が、本発明の完全な理解を得るために必要とはみなされず、かつ当業者の理解の範囲にあるとみなされる限りにおいて省略された。
指摘された場合を除いて、本明細書で説明されたすべての機能は、ハードウェアまたはソフトウェア、ならびにそれらの何らかの組合せにおいて実行できる。しかしながら、好ましい実施例では、機能は、最も効果的実現を提供するために、ハードウェアにおいて実行される。あるいは、指摘された場合を除いて、コンピュータプログラムコード、ソフトウェアのようなプログラムコード、またはこのような機能を実行するようにコード化された集積回路、あるいはそれら全てまたはいくつかに従って、コンピュータまたは電子データ処理装置のようなプロセッサにより、機能を実行できる。
図1は、マルチスレッド機能を有するプロセッサ100のブロック図を示す。このプロセッサは、メモリコントローラ102を含む。メモリコントローラ102は、プロセッサ100に対する、およびプロセッサ100からのデータおよび命令の流れを制御する。したがって、命令制御部104は、実行部106に送信される命令を発行する。メモリコントローラ102は、レベル2(L2)キャッシュ108と連動する。L2キャッシュ108は、命令およびデータを保存する。L2キャッシュは、命令制御部104および実行部106の個々のレベル1(L1)キャッシュと連動する。命令制御部104は、命令を保存するためにL1キャッシュ110を有し、実行部106は、データを保存するためにL1キャッシュ114を有する。命令制御部104は、L1キャッシュ110から命令を引き出し、実行部106は、L1キャッシュ114からデータを引き出し、かつL1キャッシュ114へデータを書き込む。プロセッサ100は、図1に示されていない他の多数の構成要素を含むことができる。図1は、プロセッサの基本的な説明であり、本発明の範囲を限定するものではない。
図2は、複数のスレッドを収容できるプロセッサ内の命令パイプライン200のブロック図を示す。この装置200は、図1の命令制御部104内にあり、3つの個別のスレッド、スレッド0、スレッド1、およびスレッド2(図示せず)を収容する。上述したように、スレッドは、プログラム、または独立して実行処理することができる命令のグループである。命令フェッチ部202は、すべての3つのスレッドに対する命令をフェッチする。命令フェッチ部202は、優先度順に命令をフェッチする。通常、命令フェッチ部202は、各スレッドに命令パイプラインへの同等のアクセスを与えるために、3つのスレッドの間で順番に接続する。命令フェッチ部202は、これらの命令を命令バッファに伝送する。したがって、IBUF 0 204は、スレッド0に対する命令を保存し、IBUF 1 206は、スレッド1に対する命令を保存し、およびIBUF 2 208は、スレッド2に対する命令を保存する。命令バッファ204、206、および208は、命令をディスパッチメカニズム210に伝送する。図2は、3つの個別のスレッドを図示するが、この個数は任意であり、この形態の装置200は、より大きい、またはより小さい数量のスレッドを取り扱うことができる。
ディスパッチメカニズム210は、命令パイプライン216にディスパッチする正しい命令を選択するマルチプレクサ(「MUX」)である。図2は、ディスパッチメカニズム210としてMUXを用いるが、同一の結果を達成するために、他の構成要素を実装することができる。ディスパッチメカニズム210は、各スレッドに命令パイプライン216への同等の優先度およびアクセスを与えるために、IBUF 0 204、IBUF 1 206、またはIBUF 2 208の出力の間で順番に切り換わる。ディスパッチ制御ブロック214は、どのスレッドがディスパッチされるかを選択する。ディスパッチ制御ブロック214が、修正されたOR命令を検知するとき、ディスパッチ制御ブロック214は、ディスパッチメカニズム210の通常の切り換え機構を中断する。ディスパッチ後、命令は、命令パイプライン216をステージダウンする。命令パイプライン216は、図1からの実行部106を供給する。実行部106は、命令を実行処理する。この応用は、発行パイプライン、より正確に述べると、命令パイプラインに関する具体的な実施例を説明する。実施例は、リソース競合があるパイプラインの任意のポイントに適合する。例えば、実施例は実行パイプラインにも適合する。
具体的な実施例は、ディスパッチメカニズム210、ディスパッチ制御ブロック214、およびコンパイラ(図示せず)に関する。その結果、すべての3つのスレッドが命令パイプライン216を共用使用するため、スレッド0に対する停止を導く命令は、また、独立したスレッド1および2に対する停止を引き起こす。具体的な実施例は、ディスパッチブロック信号命令を用いることにより、パイプラインのディスパッチ時点(ディスパッチメカニズム210)においてブロックメカニズムを動作させる。コンパイラは、ディスパッチメカニズム210を制御し、スレッド0がディスパッチ時にブロックされている間に、スレッド1および2から命令をディスパッチできるようにする。これは、スレッド0がディスパッチ時にブロックされている間に、独立しているスレッド1および2が、命令パイプライン216において命令を実行処理し続けることを可能とする。このスレッド性能の精細なスレッド制御は、このマルチスレッドプロセッサに対する時間およびリソースを節約する。
一実施例では、コンパイラは、パイプラインに挿入される新たな形のOR命令を用いることにより、これらのディスパッチブロック信号命令を実行処理する。これらの命令は、プログラム可能サイクル数の間、ディスパッチ時に特定のスレッドのすべての命令をブロックし、1つのスレッドのブロックの間、他のスレッドがディスパッチメカニズム210にアクセスすることを可能とする。特別の形のOR命令は、ディスパッチ時点においてスレッドをブロックする以外、システムに何の影響も与えない。これらのOR命令は、コンパイラに対して最良の結果を与える種々のブロック時間に、容易に復号化してかつ構成されうる。一実施例では、コンパイラは、種々の復号化された命令形態の各々に対するブロック遅延を構成できる。
具体的な実施例では、ディスパッチブロック信号命令は、Nop命令である。Nop命令は、プログラムの実行処理、レジスタファイル状態、メモリ状態、または入出力に影響を及ぼさない命令である。本実施例では、Nop命令は、ディスパッチブロックとして動作する。可変形態のNop命令があり、その中のあるものは、スレッドをブロックせず、ただ何もなさない。システムに影響を及ぼさないようにNop命令を設計することにより、プロセッサ100は、ブロックを要求するためにいかなるレジスタリソースをも消費しない利点を受ける。一例として、ディスパッチ制御ブロック214は、10サイクルの間、スレッド0をブロックすることが必要である。コンパイラは、10個のNop命令(通常の)をディスパッチでき、命令パイプライン216が停止することを防止する。これは、ブロックの間に、スレッド1および2がディスパッチされることを可能とする。実施例では、コンパイラは、10サイクルの間、スレッド0を遅延させる1つの修正されたNop命令をディスパッチする。1つの修正されたNop命令を発行するだけで、コンパイラは、より小さいプログラムコードフットプリントを介して時間およびリソースを節約する。
ディスパッチメカニズム210に対する優先方式がある。したがって、ディスパッチメカニズム210は、命令パイプラインへの同等のアクセスを提供するために、スレッド0、1、および2の間で順番に切り換わる。本発明では、修正されたNop(OR)命令は、ディスパッチメカニズム210が特定のスレッドを無視して、かつ他のスレッドの間で順番に切り換わるように誘導する。例えば、スレッド1についての10サイクルに対するNop命令は、ディスパッチメカニズム210が10サイクルの間にスレッド0と2の間で順番に切り換わるようにさせる。したがって、スレッド1がディスパッチ時にブロックされている間、スレッド0および2は、排他的にディスパッチメカニズム210にアクセスする。
修正されたOR命令の例として、下記のOR命令は、下記のディスパッチ遅延を生じさせる。
OR 28,28,28 //8サイクルの間、ブロック
OR 29,29,29 //10サイクルの間、ブロック
OR 30,30,30 //12サイクルの間、ブロック
OR 31,31,31 //16サイクルの間、ブロック
これらのサイクル数のグループは任意であり、あくまで修正されたOR命令の例を提供するに過ぎない。これらの命令に対する固定されたタイミングは、ソフトウェアにプログラムされる。したがって、コンパイラが、命令パイプラインの停止による遅延に通じるであろう命令の特定のシーケンスを検知すると、コンパイラは、遅延に対処するために修正されたOR命令を発行する。対応するOR動作は、正確に長い待ち時間の条件と一致するか、または長い待ち時間の条件を近似できる。したがって、付加的な待ち時間が検知されるとき、ハードウェアがOR命令にサイクルを付加できる。
図3は、マルチスレッド命令パイプライン内のこの修正されたディスパッチブロックメカニズムの使用を説明するフローチャート300である。最初に、ステップ302で、命令フェッチ部202は命令をフェッチする。次に、ステップ304で、命令バッファ204、206、および208は命令を保存する。ステップ306で、ディスパッチメカニズム210は、ブロックされていない命令を優先度順にディスパッチする。上述したように、ディスパッチメカニズム210は、スレッド0、1、および2の間で順番に切り換わる。ステップ308で、ディスパッチメカニズム210は、修正されたOR命令があるかどうかを判断する。修正されたOR命令がないとき、ステップ306で、ディスパッチメカニズム210は、ブロックされていない命令を優先度順にディスパッチし続ける。修正されたOR命令があるとき、ステップ312で、ディスパッチメカニズム210は、スレッドのディスパッチをブロックし、かつ「OR」命令の長さの間、ブロックされていない他のスレッドが命令をディスパッチすることを可能とする。したがって、複数のスレッドについての「OR」命令は、ディスパッチメカニズム210に、同時に複数のスレッドをブロックさせうる。この形態のブロッキングは、一度に、1つのスレッドに限定されない。
図4は、マルチスレッド命令パイプラインの1つのスレッドをブロックするために用いられる、修正されたORメカニズムの具体例を説明するフローチャート400である。この具体例は、浮動加算命令(「FAA」)を含み、FAAに従属する他の浮動加算命令(「FAB」)がその後に続く。これら2つの命令は、図2からのスレッド0に関する。この具体例では、スレッド0は、実行処理するか、または結果を与えるために10サイクルを要する。したがって、従属動作FABは、従属関係がクリアになるのを待つために、命令パイプライン216において10サイクルの停止をしなければならない。したがって、コンパイラは、スレッド0についての従属浮動加算命令が後続する浮動加算命令は、OR命令OR29,29,29に対応することを知らなければならない。コンパイラは、このOR命令をスレッド0に書き加える。これは、従属命令FABをブロックする時に、ディスパッチ制御部214が、これらの修正されたOR命令のうちの1つの存在において、直ちに、ディスパッチをブロックできると仮定する。これが正しくなく、ディスパッチをブロックする前に待ち時間があるとき、コンパイラは、補正するために、修正されたOR命令の後に通常のNop命令を置くことができる。
最初に、ステップ402で、命令発行部202は、FAA、修正されたOR命令、およびFABをフェッチする。ステップ404で、IBUF 0 204は、FAA、「OR」、およびFABを保存する。FABは、命令フェッチ部202およびIBUF 0 204を介してFAAに追従するOR命令に追従する。ステップ406で、スレッド0は、FAAをディスパッチしなければならない。次に、ステップ407で、スレッド0は、修正されたOR命令をディスパッチする。ステップ408で、OR命令は、スレッド0を10サイクルの間、ブロックし、ステップ412で、ディスパッチ制御部214は、ディスパッチメカニズム210が、10サイクルの間、スレッド1および2から命令をディスパッチすることを可能とする。10サイクル後に、ステップ414で、ディスパッチメカニズム210は、スレッド0、1、および2から命令をディスパッチする。スレッド1および2は、スレッド0に対するOR命令により影響を受けることはない。実際には、スレッド1および2は、スレッド0についてのディスパッチブロックのために、より速く実行処理している。
また、1つのスレッドが非パイプライン動作を有するとき、この修正されたOR命令が有益である場合がある。通常、非パイプライン命令は、実行処理に長い時間を要し、かつ同一リソースを用いる後続の命令は、パイプラインを使用することができない。したがって、後続の命令は、非パイプライン命令の実行処理が終了するまで待たなければならない。これは、命令パイプライン216において重大な停止を生じさせて、他のスレッドに不便をもたらす。コンパイラは、このような停止が結果として生じることを知っているとき、コンパイラは、修正されたOR命令を用いることにより、非パイプライン命令をディスパッチした後に特定のサイクル数の間、スレッドをブロックできる。したがって、非パイプライン命令は、間接的に命令パイプライン216を停止させない。他のスレッドが現在実行処理している非パイプライン命令と同一リソースを利用しない限り、他のスレッドは、ディスパッチして、かつ発行できる。この修正されたOR命令を利用することにより、命令パイプラインにおける多数の長い待ち時間の条件を回避できる。共用使用された発行パイプラインにおいて複数のスレッドから命令を発行する可能性は、たとえ1つのスレッドが長い待ち時間の条件を有するとしても、先行技術に対して明らかな進歩である。
図5は、本発明の実施例に基づいて、例えば、サーバ、加入者計算機器、ハンドヘルドデバイス、ノート、または他の形態のデータ処理システムとして実現することができるデータ処理システム500のブロック図を示す。データ処理システム500は、本発明の態様を実現することができ、対称マルチプロセッサ(「SMP」)システム、またはシステムバス506に接続された複数のプロセッサ100および120を有する非均質システムでもよい。あるいは、システムは、単一の処理装置100を含んでもよい。
メモリコントローラ/キャッシュ508は、ローカルメモリ509に接続するためのインタフェースを提供し、システムバス506に接続する。I/Oバスブリッジ510は、システムバス506に接続し、I/Oバス512に接続するためのインタフェースを提供する。メモリコントローラ/キャッシュ508およびI/Oバスブリッジ510は、図示されたように一体化できる。I/Oバス512に接続された周辺機器相互接続(「PCI」)バスブリッジ514は、PCIローカルバス516に接続するためのインタフェースを提供する。多くのモデムをPCIローカルバス516に接続できる。典型的なPCIバス装備機器は、4個のPCI拡張スロットまたはアドインコネクタをサポートする。モデム518およびネットワークアダプタ520は、アドインコネクタ(図示せず)を介してPCIローカルバス516に接続された他の計算機器に接続するための通信リンクを提供する。付加的なPCIバスブリッジ522および524は、付加的なモデムまたはネットワークアダプタ(図示せず)をサポートできる付加的なPCIローカルバス526および528用のインタフェースを提供する。このように、データ処理システム500は、複数のネットワークコンピュータとの接続を可能とする。また、図示されたように、メモリマップされたグラフィックスアダプタ530およびハードディスク532を、直接的、または間接的に、I/Oバス512に接続できる。
したがって、図5に示されたハードウェアは、変化しうる。また、例えば、光ディスクドライブなどの他の周辺装置を、図示されたハードウェアに付加して、または代わりに用いることができる。図示された具体例は、本発明に関する構成上の制限を意味するものではない。例えば、データ処理システム500は、アドバンストインタラクティブエグゼクティブ(「AIX」はIBM Corporationの商標)オペレーティングシステム、Linux(Linus Torvaldsの米国およびその他の国における商標)オペレーティングシステム、または他のオペレーティングシステムを実行する、IBM(IBMはIBM Corporationの商標)社(インターナショナル・ビジネス・マシーンズ・コーポレーション社)により提供されているディープブルーシステム(IBM Corporationの商標)、CMT−5システム、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーション社の製品、または他のマルチコアプロセッサシステムなどでもよい。
本発明は、多数の形式および実施例をとることができる。したがって、本発明の範囲を逸脱することなく、本設計のいくつかの変更を行うことができる。本明細書に概説された機能は、種々のネットワークモデルの実現性を考慮する。この開示は、特定のネットワークモデルを好むものとして読まれるべきではなく、これらのネットワークモデルを構築しうる基礎となる基本的概念に関する。
このように、いくつかの好ましい実施例を参照することにより本発明を説明したが、開示された実施例は、本質的に制限するためよりむしろ例を示したものであり、幅広い変形、修正、変更、および代用物が、上述の開示において想定され、ある場合には、対応する他の特徴を使用することなく、本発明のいくつかの特徴を用いることができる。好ましい実施例の上述の説明の再検討に基づいて、当業者は、このような多数の変形および修正を好ましいとみなすことができる。したがって、添付クレームは、幅広くかつ本発明の範囲と一致した方法で解釈されるべきである。
本発明およびその利点をさらに完全に理解するために、ここで、添付図面とともに、以下の説明を参照する。
マルチスレッド機能を有するプロセッサのブロック図。 複数のスレッドを収容できるプロセッサ内の命令パイプラインのブロック図。 マルチスレッド命令パイプライン内の修正されたディスパッチブロックメカニズムの使用を説明するフローチャート。 マルチスレッド命令パイプラインの1つのスレッドをブロックするために用いられる、修正されたORメカニズムの具体例を説明するフローチャート。 データ処理システムを示すブロック図。
符号の説明
100 プロセッサ
102 メモリコントローラ
104 命令制御部
106 実行部
108 L2キャッシュ
110 L1キャッシュ
114 L1キャッシュ
202 命令フェッチ部
210 ディスパッチメカニズム
214 ディスパッチ制御ブロック
216 命令パイプライン
500 データ処理システム
506 システムバス
508 メモリコントローラ/キャッシュ
509 ローカルメモリ
510 I/Oブリッジ
512 I/Oバス
514 PCIバスブリッジ
516 PCIバス
518 モデム
520 ネットワークアダプタ
530 グラフィックスアダプタ
532 ハードディスク

Claims (20)

  1. マルチスレッドプロセッサの、複数のスレッドにより共用使用されるパイプラインのディスパッチ時点において、1つのスレッドをブロックする方法であって、
    前記パイプライン内で、第1スレッドについての長い待ち時間の条件を検知するステップと、
    前記長い待ち時間に関係する正確な待ち時間を決定するステップと、
    前記待ち時間と少なくとも同じ長さのサイクル数を有するディスパッチブロック信号命令を生成するステップと、
    前記ディスパッチブロック信号命令に呼応して、前記サイクル数の間、前記ディスパッチ時点において前記第1スレッドをブロックするステップと、
    前記サイクル数の間前記第1スレッドをブロックする間、前記パイプラインの他のブロックされていないスレッドから命令をディスパッチするステップと、
    前記サイクル数の間前記第1スレッドをブロックした後に、前記パイプラインのスレッドのすべてから命令をディスパッチするステップとを有する方法。
  2. 前記方法が、コンピュータシステムまたはデータ処理システムにおいて用いられることを特徴とする請求項1に記載の方法。
  3. 前記長い待ち時間の条件が、非パイプライン動作または従属関係であることを特徴とする請求項1に記載の方法。
  4. 前記正確な待ち時間を決定するステップが、さらに、
    前記パイプライン内の可能な各長い待ち時間の条件に対する前記待ち時間を決定するステップと、
    前記マルチスレッドプロセッサへの各待ち時間に対応するサイクル時間をプログラミングするステップとを含む方法であって、
    前記ディスパッチブロック信号命令を生成するステップは、さらに前記待ち時間に等しいサイクル時間を有するディスパッチブロック信号命令を生成するステップを含むことを特徴とする請求項1又は3に記載の方法。
  5. 前記ディスパッチブロック信号命令を生成する前記ステップが、さらに、前記待ち時間と等しいサイクル数の間、前記第1スレッドをブロックするディスパッチブロック信号命令を生成するステップを含むことを特徴とする請求項1又は3に記載の方法。
  6. コンパイラが、前記第1スレッドに前記ディスパッチブロック信号命令を書き加えることを特徴とする請求項に記載の方法。
  7. 前記ディスパッチブロック信号命令が、前記待ち時間と等しい前記サイクル数の間、前記ディスパッチ時点において前記第1スレッドをブロックする、1つのNop命令であることを特徴とする請求項6に記載の方法。
  8. 前記ディスパッチブロック信号命令が、前記待ち時間と等しい前記サイクル数の間、前記ディスパッチ時点において前記第1スレッドをブロックする、修正されたOR命令であることを特徴とする請求項6に記載の方法。
  9. 前記パイプラインが、命令パイプラインまたは実行パイプラインであることを特徴とする請求項1又は3に記載の方法。
  10. マルチスレッドプロセッサの、複数のスレッドにより共用使用されるパイプラインのディスパッチ時点において、1つのスレッドをブロックするコンピュータプログラムであって、前記コンピュータプログラムは、
    前記パイプライン内で、第1スレッドについての長い待ち時間の条件を検知するコンピュータコードと、
    前記長い待ち時間の条件に関係する正確な待ち時間を決定するコンピュータコードと、
    前記待ち時間と少なくとも同じ長さのサイクル数を有するディスパッチブロック信号命令を生成するコンピュータコードと、
    前記ディスパッチブロック信号命令に呼応して、前記サイクル数の間、前記ディスパッチ時点において前記第1スレッドをブロックするコンピュータコードと、
    前記サイクル数の間前記第1スレッドをブロックする間、前記パイプラインの他のブロックされていないスレッドから命令をディスパッチするコンピュータコードと、
    前記サイクル数の間前記第一スレッドをブロックした後に、前記パイプラインのスレッドすべてから命令をディスパッチするコンピュータコードとを含むコンピュータプログラム。
  11. 前記長い待ち時間の条件が、非パイプライン動作または従属関係であることを特徴とする請求項10に記載のコンピュータプログラム。
  12. 前記待ち時間の決定のための前記コンピュータコードが、さらに、
    前記パイプライン内の可能な各長い待ち時間の条件に対する前記待ち時間を決定するコンピュータコードと、
    前記マルチスレッドプロセッサへの各待ち時間に対応する前記サイクル時間をプログラミングするコンピュータコードを含み、
    前記ディスパッチブロック信号を生成するための前記コンピュータコードは、さらに、前記待ち時間に等しいサイクル時間を有するディスパッチブロック信号命令を生成するためのコンピュータコードを含むことを特徴とする請求項10又は11に記載のコンピュータプログラム。
  13. 前記ディスパッチブロック信号命令を生成するためのコンピュータコードが、さらに、
    前記待ち時間と等しい所定量のサイクルの間、前記第1スレッドをブロックするディスパッチブロック信号命令を生成し、
    前記第1スレッドに前記ディスパッチブロック信号命令を書き加えるためのコンピュータコードを含むことを特徴とする請求項10又は11に記載のコンピュータプログラム。
  14. 前記ディスパッチブロック信号命令が、前記サイクル数の間、前記ディスパッチ時点において前記第1スレッドをブロックする、1つのNop命令であることを特徴とする請求項10又は11に記載のコンピュータプログラム。
  15. 前記ディスパッチブロック信号命令が、前記待ち時間と一致する所定量のサイクルの間、前記ディスパッチ時点において前記第1スレッドをブロックする、修正されたOR命令であることを特徴とする請求項10又は11に記載のコンピュータプログラム。
  16. 前記パイプラインが、命令パイプラインまたは実行パイプラインであることを特徴とする請求項10又は11に記載のコンピュータプログラム。
  17. マルチスレッドプロセッサの、複数のスレッドにより共用使用されるパイプラインのディスパッチ時点において、1つのスレッドをブロックする装置であって、
    少なくとも複数のスレッドから命令をディスパッチするように構成された、前記パイプラインに接続されたディスパッチメカニズムと、
    少なくとも、
    前記命令パイプライン内で、第1スレッドについての長い待ち時間の条件を検知し、
    前記長い待ち時間の条件に関する正確な待ち時間を決定し、
    前記待ち時間と等しいサイクル数の間、前記ディスパッチ時点において前記第1スレッドをブロックするディスパッチブロック信号命令を生成し、
    前記ディスパッチブロック信号を前記パイプラインに書き加えるように構成されたコンパイラと、
    前記ディスパッチメカニズムと、少なくとも、
    前記ディスパッチブロック信号命令に呼応して、前記第1スレッドからの命令の前記ディスパッチをブロックし、
    かつ前記サイクル数の間前記第1のスレッドに対する命令のディスパッチをブロックした後に、すべてのスレッドからの命令の前記ディスパッチを可能とするように構成された前記コンパイラと、に接続されたディスパッチ制御ブロックと、
    を含む装置。
  18. 前記マルチスレッドプロセッサが、コンピュータシステムまたはデータ処理システム内にあることを特徴とする請求項17に記載の装置。
  19. 前記ディスパッチブロック信号命令が、前記待ち時間と一致する所定量のサイクルの間、前記第1スレッドをブロックする、1つのNop命令であることを特徴とする請求項17又は18に記載の装置。
  20. 前記ディスパッチブロック信号命令が、前記サイクル数の間、前記第1スレッドをブロックする、修正されたOR命令であることを特徴とする請求項17又は18に記載の装置。
JP2006156065A 2005-06-16 2006-06-05 マルチスレッドプロセッサのディスパッチ時にスレッドをブロックする方法、コンピュータプログラム、および装置(精細なマルチスレッドディスパッチロックメカニズム) Active JP5047542B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/154,158 US7313673B2 (en) 2005-06-16 2005-06-16 Fine grained multi-thread dispatch block mechanism
US11/154,158 2005-06-16

Publications (2)

Publication Number Publication Date
JP2006351008A JP2006351008A (ja) 2006-12-28
JP5047542B2 true JP5047542B2 (ja) 2012-10-10

Family

ID=37519386

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006156065A Active JP5047542B2 (ja) 2005-06-16 2006-06-05 マルチスレッドプロセッサのディスパッチ時にスレッドをブロックする方法、コンピュータプログラム、および装置(精細なマルチスレッドディスパッチロックメカニズム)

Country Status (5)

Country Link
US (1) US7313673B2 (ja)
JP (1) JP5047542B2 (ja)
KR (1) KR100951092B1 (ja)
CN (1) CN100462913C (ja)
TW (1) TWI390445B (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
JP2009110209A (ja) * 2007-10-29 2009-05-21 Panasonic Corp 演算処理装置、プロセッサ、プログラム変換装置およびプログラム
US8260990B2 (en) * 2007-11-19 2012-09-04 Qualcomm Incorporated Selective preclusion of a bus access request
US8701111B2 (en) * 2008-07-09 2014-04-15 International Business Machines Corporation Lock windows for reducing contention
US7941644B2 (en) * 2008-10-16 2011-05-10 International Business Machines Corporation Simultaneous multi-thread instructions issue to execution units while substitute injecting sequence of instructions for long latency sequencer instruction via multiplexer
WO2013095570A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Instruction that specifies an application thread performance state
CN103246552B (zh) * 2012-02-14 2018-03-09 腾讯科技(深圳)有限公司 防止线程出现阻塞的方法和装置
CN104205042B (zh) 2012-03-30 2019-01-08 英特尔公司 用于具有通用cpu核心和紧密耦合的加速器的处理核心的上下文切换机制
US10430190B2 (en) * 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US9021493B2 (en) 2012-09-14 2015-04-28 International Business Machines Corporation Management of resources within a computing environment
CN103345422B (zh) * 2013-07-02 2019-01-29 厦门雅迅网络股份有限公司 一种基于Linux的多线程硬实时控制方法
JP6225554B2 (ja) 2013-08-14 2017-11-08 富士通株式会社 演算処理装置及び演算処理装置の制御方法
EP3014468A4 (en) 2013-09-06 2017-06-21 Huawei Technologies Co., Ltd. Method and apparatus for asynchronous processor with auxiliary asynchronous vector processor
CN104301253A (zh) * 2014-10-21 2015-01-21 合肥星服信息科技有限责任公司 线程池和共享池组合优化大负荷通讯服务器
US11023233B2 (en) * 2016-02-09 2021-06-01 Intel Corporation Methods, apparatus, and instructions for user level thread suspension
US10185564B2 (en) * 2016-04-28 2019-01-22 Oracle International Corporation Method for managing software threads dependent on condition variables
CN109213529B (zh) * 2017-07-07 2021-09-28 龙芯中科技术股份有限公司 流水线处理器调度指令的方法、装置及流水线处理器
CN111552574A (zh) * 2019-09-25 2020-08-18 华为技术有限公司 一种多线程同步方法及电子设备
CN110769046B (zh) * 2019-10-17 2022-11-18 新华三信息安全技术有限公司 一种报文获取方法、装置、电子设备及机器可读存储介质
US11372647B2 (en) * 2019-12-05 2022-06-28 Marvell Asia Pte, Ltd. Pipelines for secure multithread execution
GB2596872B (en) * 2020-07-10 2022-12-14 Graphcore Ltd Handling injected instructions in a processor
CN116521351B (zh) * 2023-07-03 2023-09-05 建信金融科技有限责任公司 多线程任务调度方法、装置、存储介质及处理器

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0644089A (ja) * 1992-05-18 1994-02-18 Matsushita Electric Ind Co Ltd 情報処理装置
US5584031A (en) * 1993-11-09 1996-12-10 Motorola Inc. System and method for executing a low power delay instruction
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6694425B1 (en) * 2000-05-04 2004-02-17 International Business Machines Corporation Selective flush of shared and other pipeline stages in a multithread processor
US7363474B2 (en) * 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
US20040111594A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Multithreading recycle and dispatch mechanism
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US20040226011A1 (en) * 2003-05-08 2004-11-11 International Business Machines Corporation Multi-threaded microprocessor with queue flushing
US7373536B2 (en) * 2004-08-04 2008-05-13 Kabushiki Kaisha Toshiba Fine granularity halt instruction
US7266674B2 (en) * 2005-02-24 2007-09-04 Microsoft Corporation Programmable delayed dispatch in a multi-threaded pipeline

Also Published As

Publication number Publication date
CN1881176A (zh) 2006-12-20
KR20060131624A (ko) 2006-12-20
US7313673B2 (en) 2007-12-25
TW200709053A (en) 2007-03-01
KR100951092B1 (ko) 2010-04-07
TWI390445B (zh) 2013-03-21
JP2006351008A (ja) 2006-12-28
US20060288192A1 (en) 2006-12-21
CN100462913C (zh) 2009-02-18

Similar Documents

Publication Publication Date Title
JP5047542B2 (ja) マルチスレッドプロセッサのディスパッチ時にスレッドをブロックする方法、コンピュータプログラム、および装置(精細なマルチスレッドディスパッチロックメカニズム)
TWI808506B (zh) 用於使用者等級執行緒暫止的方法、處理器及系統
US6952764B2 (en) Stopping replay tornadoes
JP6095670B2 (ja) コンピュータ・システム内のオペランド活性情報の維持
US6484254B1 (en) Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses
US6728866B1 (en) Partitioned issue queue and allocation strategy
KR20170130383A (ko) 사용자-레벨 포크 및 조인 프로세서, 방법, 시스템, 및 명령어
US6301655B1 (en) Exception processing in asynchronous processor
CN106170768B (zh) 在计算机中分派多个线程
JP2001521215A (ja) マルチスレッド式プロセッサでスレッド切替えイベントを選択するための方法および装置
JP6450705B2 (ja) 永続コミットプロセッサ、方法、システムおよび命令
WO2008145653A1 (en) Scheduling threads in a processor
US20090113179A1 (en) Operational processing apparatus, processor, program converting apparatus and program
JP2012198803A (ja) 演算処理装置及び演算処理方法
US20170147345A1 (en) Multiple operation interface to shared coprocessor
KR20140131199A (ko) 재구성 가능 프로세서 및 재구성 가능 프로세서의 동작 방법
US11635966B2 (en) Pausing execution of a first machine code instruction with injection of a second machine code instruction in a processor
JP2005521937A (ja) コンピュータオペレーティングシステムにおけるコンテキスト切り替え方法及び装置
US5761492A (en) Method and apparatus for uniform and efficient handling of multiple precise events in a processor by including event commands in the instruction set
EP1220088B1 (en) Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
US10929137B2 (en) Arithmetic processing device and control method for arithmetic processing device
US9342312B2 (en) Processor with inter-execution unit instruction issue
US20080222336A1 (en) Data processing system
JPH0384632A (ja) データ処理装置
JPH09274567A (ja) プログラムの実行制御方法及びそのためのプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090220

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20120221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120228

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120516

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120521

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120604

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: 20120703

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120718

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150727

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5047542

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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