(57)【要約】  マルチスレッドプロセッサのスレッドの実行をサスペンドする技術。一実施例では、プロセッサは複数のスレッド間で分割可能なリソースを有する。プロセッサ論理は、実行の第１スレッドにおいて命令を受信し、当該命令に応答して他のスレッドによる利用のため分割されたリソースの一部を放棄する。
2005514698.tif 000002
【特許請求の範囲】
【請求項１】
各自が複数のスレッド間で分割可能な複数のスレッド分割可能リソースと、
前記複数のスレッドの第１スレッドからプログラム命令を受信し、前記プログラム命令に応答して、前記第１スレッドの実行をサスペンドさせ、前記複数のスレッドの他のスレッドによる利用のため、前記第１スレッドに関する前記複数のスレッド分割可能リソースの一部を放棄させる論理とを有することを特徴とするプロセッサ。
【請求項２】
請求項１記載のプロセッサであって、前記プログラム命令はサスペンド命令であることを特徴とするプロセッサ。
【請求項３】
請求項１記載のプロセッサであって、前記論理は該プロセッサに選択した時間前記第１スレッドをサスペンドさせることを特徴とするプロセッサ。
【請求項４】
請求項３記載のプロセッサであって、前記選択した時間は固定された時間であることを特徴とするプロセッサ。
【請求項５】
請求項３記載のプロセッサであって、該プロセッサは前記第１スレッドのサスペンド中第２スレッドからの命令を実行することを特徴とするプロセッサ。
【請求項６】
請求項３記載のプロセッサであって、前記選択された時間は、
前記プログラム命令に関するオペランドの提供処理と、
前記選択された時間を設定するためのヒューズのブロー処理と、
前記プログラム命令の復号前に前記選択された時間の格納領域でのプログラム処理と、
前記選択された時間のマイクロコードでの設定処理とから構成されるセットから選ばれる少なくとも１つの技術によりプログラム可能であることを特徴とするプロセッサ。
【請求項７】
請求項１記載のプロセッサであって、前記複数のスレッド分割可能リソースは命令キューとレジスタプールとを有することを特徴とするプロセッサ。
【請求項８】
請求項７記載のプロセッサであって、さらに、
複数の実行ユニット、キャッシュ及びスケジューラを有する複数の共有リソースと、
複数のプロセッサ状態変数、命令ポインタ及びレジスタリネーム論理を有する複数の複製リソースとを有することを特徴とするプロセッサ。
【請求項９】
請求項８記載のプロセッサであって、前記複数のスレッド分割可能リソースは、さらに、複数のリオーダーバッファと複数のストアバッファエントリとを有することを特徴とするプロセッサ。
【請求項１０】
請求項１記載のプロセッサであって、前記論理は、さらに、該プロセッサにイベントに応答して前記第１スレッドの実行を再開させることを特徴とするプロセッサ。
【請求項１１】
請求項３記載のプロセッサであって、前記論理は、さらに、該プロセッサに前記選択された時間が経過するまでイベントを無視させることを特徴とするプロセッサ。
【請求項１２】
請求項１記載のプロセッサであって、該プロセッサはコンピュータ読み出し可能媒体上でデジタルフォーマットにより実現されることを特徴とするプロセッサ。
【請求項１３】
実行の第１スレッドで第１オペコードを受け取るステップと、
前記第１オペコードに応答して選択された時間前記第１スレッドをサスペンドするステップと、
前記第１オペコードに応答して複数のスレッド分割可能リソースを放棄するステップとを有することを特徴とする方法。
【請求項１４】
請求項１３記載の方法であって、前記放棄するステップは、より少ないスレッドによって利用可能なより大きな構成となるよう前記複数のスレッド分割可能リソースをアニールすることからなることを特徴とする方法。
【請求項１５】
請求項１４記載の方法であって、前記放棄するステップは、命令キューの区画を放棄し、レジスタプールから複数のレジスタを放棄することからなることを特徴とする方法。
【請求項１６】
請求項１５記載の方法であって、前記放棄するステップは、さらに、複数のストアバッファエントリを放棄し、複数のリオーダーバッファエントリを放棄することをからなることを特徴とする方法。
【請求項１７】
請求項１３記載の方法であって、前記選択された時間は、
前記第１オペコードに関するオペランドの提供処理と、
前記選択された時間を設定するためのヒューズのブロー処理と、
前記プログラム命令の復号前に前記選択された時間の格納領域でのプログラム処理と、
前記選択された時間のマイクロコードでの設定処理とから構成されるセットから選ばれる少なくとも１つの技術によりプログラム可能であることを特徴とする方法。
【請求項１８】
第１命令を有する第１スレッドと第２スレッドとを有する複数のプログラムスレッドを格納するメモリと、
前記メモリに接続され、複数のスレッド分割可能リソースと複数の共有リソースとを備え、前記メモリからの命令を実行するプロセッサとを有するシステムであって、
前記プロセッサは前記第１命令の実行に応答して、前記第１スレッドをサスペンドし、前記複数のスレッド分割可能リソースの一部を放棄することを特徴とするシステム。
【請求項１９】
請求項１８記載のシステムであって、前記プロセッサは、前記第１スレッドのサスペンド中、前記メモリからの前記第２スレッドを実行することを特徴とするシステム。
【請求項２０】
請求項１９記載のシステムであって、前記プロセッサは前記第１命令に応答して選択された時間前記第１スレッドの実行をサスペンドし、前記選択された時間は、
前記プログラム命令に関するオペランドの提供処理と、
前記選択された時間を設定するためのヒューズのブロー処理と、
前記プログラム命令の復号前に前記選択された時間の格納領域でのプログラム処理と、
前記選択された時間のマイクロコードでの設定処理とから構成されるセットから選ばれる少なくとも１つの技術により選ばれることを特徴とするシステム。
【請求項２１】
請求項１８記載のシステムであって、前記複数のスレッド分割可能リソースは、命令キューとレジスタプールとを有することを特徴とするシステム。
【請求項２２】
請求項２１記載のシステムであって、さらに、
複数の実行ユニット、キャッシュ及びスケジューラを有する複数の共有リソースと、
複数のプロセッサ状態変数、命令ポインタ及びレジスタリネーム論理を有する複数の複製リソースとを有することを特徴とするシステム。
【請求項２３】
請求項２２記載のシステムであって、前記複数のスレッド分割可能リソースは、さらに、複数のリオーダーバッファと複数のストアバッファエントリとを有することを特徴とするシステム。
【請求項２４】
第１スレッドから第１命令を受け取る手段と、
前記第１命令に応答して前記第１スレッドをサスペンドする手段と、
複数のリソースの複数の区画を放棄する手段と、
選択された時間後前記複数のリソースを再分割する手段とを有することを特徴とする装置。
【請求項２５】
請求項２４記載の装置であって、前記第１命令はユーザ実行可能プログラムからのマクロ命令であることを特徴とする装置。
【請求項２６】
請求項２５記載の装置であって、前記複数のリソースはレジスタプールと命令キューとを有することを特徴とする装置。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［関連出願］
本出願は、以下すべてが本出願と同日に出願された出願整理番号第１０／０３９，７７７号「マルチスレッドプロセッサのスレッドの実行のサスペンド処理（Ｓｕｓｐｅｎｄｉｎｇ  Ｅｘｅｃｕｔｉｏｎ  ｏｆ  ａ  Ｔｈｒｅａｄ  ｉｎ  ａ  Ｍｕｌｔｉ−ｔｈｒｅａｄｅｄ  Ｐｒｏｃｅｓｓｏｒ）」、出願整理番号第１０／０３９，６５６号「特定のメモリアクセスの発生までスレッドの実行をサスペンドするコヒーレンシーテクニック（Ｃｏｈｅｒｅｎｃｙ  Ｔｅｃｈｎｉｑｕｅｓ  ｆｏｒ  Ｓｕｓｐｅｎｄｉｎｇ  Ｅｘｅｃｕｔｉｏｎ  ｏｆ  ａ  Ｔｈｒｅａｄ  Ｕｎｔｉｌ  ａ  Ｓｐｅｃｉｆｉｅｄ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｏｃｃｕｒｓ）」、及び出願整理番号第１０／０３９，６５０号「特定のメモリアクセスの発生までスレッドの実行をサスペンドする命令シーケンス（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｑｕｅｎｃｅｓ  ｆｏｒ  Ｓｕｓｐｅｎｄｉｎｇ  Ｅｘｅｃｕｔｉｏｎ  ｏｆ  ａ  Ｔｈｒｅａｄ  Ｕｎｔｉｌ  ａ  Ｓｐｅｃｉｆｉｅｄ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｏｃｃｕｒｓ）」に関連する。
［背景］
１．技術分野
本開示は、プロセッサの技術分野に関する。より詳細には、本開示は、マルチスレッドプロセッサ及びマルチスレッドプロセッサの１つのスレッドの処理を一時的にサスペンドする技術に関する。
２．関連分野の説明
マルチスレッドプロセッサは、複数の異なる命令シーケンスを同時処理することができる。１つのプロセッサにおいて複数の命令ストリームを実行する主要な動機的要因は、それによるプロセッサの利用効率の向上である。何年もの間、高度なパラレルアーキテクチャが開発されてきたが、複数の実行ユニットを利用する１つの命令ストリームから十分な並列性を抽出することはしばしば困難である。同時マルチスレッドプロセッサにより、複数の命令ストリームが異なる実行リソースにおいてこれらリソースのさらなる利用のため同時に実行されるとことを可能にする。マルチスレッド処理は、長い待ち時間による遅延が発生したり、あるいはイベントの発生を頻繁に待つプログラムに対して特に効果的である。あるスレッドが長い待ち時間を要するタスクが終了するのを待機したり、あるいは特定のイベントのため待機しているとき、他のスレッドが処理される。
【０００２】
プロセッサによるスレッド間のスイッチ時における制御のための様々な技術が提案されてきた。例えば、プロセッサの中には、Ｌ２キャッシュミスのような長い待ち時間のイベントを検出し、この検出された長い待ち時間のイベントに応答してスレッドをスイッチするというものがある。このような長い待ち時間のイベントの検出はある状況では効果的かもしれないが、このようなイベントの検出により、スレッドをスイッチすることが効果的なすべてのポイントが検出されるわけではない。特に、イベントベースのスレッドスイッチ処理では、遅延がプログラマーにより意図されているようなプログラムにおいてポイントを検出することは不可能であろう。
【０００３】
実際、プログラマーは、無駄なスピンウェイトループまたは他のリソース消費遅延技術を回避するため、どの時点でスレッドのスイッチングを行うことが効率的かを判断するのにベストなポジションにいる。従って、プログラムによりスレッドのスイッチ処理の制御を可能にすることは、プログラムがより効率的に動作することを可能にするかもしれない。スレッドの選択に影響を与える明示的なプログラム命令はこの目的に関して効果的であるかもしれない。例えば、２０００年１月２１日に出願された米国特許出願０９／４８９，１３０号では、「ポーズ（Ｐａｕｓｅ）」命令が説明されている。ポーズ命令は、あるカウントに達するまで、あるいはある命令がプロセッサパイプラインを通過するまで、スレッドの実行を一時的にサスペンドすることを可能にする。しかしながら、上記参照された出願で説明されているポーズ命令はスレッド分割可能リソースが放棄されるべきであるということを特定するものではない。プログラマーによるマルチスレッドプロセッサのリソースのより効率的な利用を可能にする様々なテクニックが有益かもしれない。
【０００４】
本発明は、例を用いて示されるが、添付された図面に制限されるものではない。
［詳細な説明］
以下の説明では、マルチスレッドプロセッサのスレッドの実行をサスペンドする技術が示される。以下の説明では、本発明のより完全な理解を提供するため、論理実施形態、オペコード、オペランド指定手段、リソース分割／共有／重複実施形態、システム構成要素のタイプ及び相互関係、及び論理分割／統合選択などの様々な具体的詳細が与えられる。しかしながら、本発明はそのような具体的詳細なしに実践されうるということを当業者は認識するであろう。他の例では、本発明を不明瞭にしないように、制御構造、ゲートレベル回路及び完全なスフとウェア命令シーケンスは詳細には示されていない。当業者は与えられた説明により、過度の実験を行うことなく適切に機能の実現が可能であろう。
【０００５】
開示されるテクニックは、プログラマーが他のスレッドに処理リソースを利用させながら、あるスレッドにおいてサスペンド機構を実現することを可能にするかもしれない。このため、サスペンドされたスレッドに以前に提供された区画が、当該スレッドのサスペンド中放棄されるかもしれない。上記及び／または他の開示されたテクニックは効果的にプロセッサのトータルのスループットを向上させるかもしれない。
【０００６】
図１は、命令に応答してスレッドをサスペンドすることが可能なサスペンド論理１１０を有するマルチスレッドプロセッサ１００の一実施例を示す。いくつかの実施例では、「プロセッサ」は単一の集積回路として形成されていてもよい。他の実施例では、複数の集積回路から１つのプロセッサが形成されてもよく、さらに他の実施例では、ハードウェア及びソフトウェアルーチン（例えば、バイナリ変換ルーチン）によりプロセッサが形成されてもよい。サスペンド論理は、マイクロコード、様々な形式の制御論理、あるいはおそらく変換、ソフトウェアなどを含む上記機能の他の実施形態であってもよい。
【０００７】
プロセッサ１００はメモリ１９５に接続され、プロセッサによりメモリ１９５からの命令の抽出及びこれら命令の実行が可能である。メモリとプロセッサは、バスブリッジ、メモリコントローラあるいは他の既知または利用可能な技術を介して、ポイント・ツー・ポイント形式に接続されてもよい。メモリ１９５は、第１スレッド１９６と第２スレッド１９８を含む様々なプログラムスレッドを格納する。第１スレッド１９６は、ＳＵＳＰＥＮＤ命令を含む。
【０００８】
図１の実施例では、バス／メモリコントローラ１２０は実効命令をフロントエンド１３０に提供する。フロントエンド１３０は命令ポインタ１７０に従って様々なスレッドからの命令の抽出を導く。命令ポインタ論理は複数のスレッドをサポートするのに複製される。更なる処理のため、フロントエンド１３０は命令をスレッド分割可能リソース１４０に提供する。スレッド分割可能リソース１４０は、複数のスレッドがプロセッサ１００内でアクティブ状態のとき、特定のスレッドに専用の論理的に分離された区画を有する。一実施例では、分離された各区画は、当該部分が供するスレッドからの命令を含んでいる。スレッド分割可能リソース１４０は、例えば、命令キューを有するものであってもよい。１つのスレッドモードにおいて、スレッド分割可能リソース１４０の複数の区画が、当該スレッドに専用の１つの大きな区画を形成するよう合成されてもよい。
【０００９】
プロセッサ１００はまた複製状態１８０を含んでいる。複製状態１８０は、論理プロセッサのコンテクストを維持するのに十分な状態変数を含んでいる。複製状態１８０により、複数のスレッドが状態変数格納のため競合することなく実行することができる。さらに、各スレッドに対して、レジスタ割り当て論理が複製されてもよい。複製された状態関連の論理は、入力される実行命令の準備のため適切なリソース区画により動作する。
【００１０】
スレッド分割可能リソース１４０は、共有リソース１５０に命令をわたす。共有リソース１５０は、それら命令のソースに関係なく命令により動作する。例えば、スケジューラと実行ユニットは、スレッドを関知しない共有リソースであってもよい。分割可能リソース１４０は、各アクティブスレッドに継続的な進行を提供する方法によりスレッド間で交代することにより、複数のスレッドから共有リソース１５０への命令を提供するかもしれない。このため、共有リソースはスレッドの混合を気にすることなく適当な状態で与えられた命令を実行するかもしれない。
【００１１】
共有リソース１５０は、他のスレッド分割可能リソース１６０に続いてもよい。スレッド分割可能リソース１６０は、リオーダーバッファ（ｒｅ−ｏｒｄｅｒ  ｂｕｆｆｅｒ）などのリタイアメントリソース（ｒｅｔｉｒｅｍｅｎｔ  ｒｅｓｏｕｒｃｅｓ）を含んでいてもよい。これにより、スレッド分割可能リソース１６０は、各スレッドからの命令の実行が適切に完了し、当該スレッドの適切な状態が適切に更新されることを保証するかもしれない。
【００１２】
上述のように、プログラマーにメモリ配置の定期的なポーリング（ｐｏｌｌｉｎｇ）や命令のループの実行さえも求めることなく、遅延を実現するテクニックを提供することが望ましいかもしれない。従って、図１のプロセッサ１００はサスペンド論理１１０を有する。サスペンド論理１１０は、スレッドがサスペンドする期間を提供したり、あるいは一定の遅延を提供するようプログラム可能であるかもしれない。サスペンド論理１１０は、パイプラインフラッシュ論理１１２とパーティション／アニール論理（ｐａｒｔｉｔｉｏｎ／ａｎｎｅａｌ  ｌｏｇｉｃ）１１４を有する。
【００１３】
図１の実施例の動作が、図２のフロー図を参照してさらに説明される。一実施例では、プロセッサ１００の命令セットには、スレッドサスペンド処理を引き起こすＳＵＳＰＥＮＤオペコード（命令）が含まれる。ブロック２００において、第１スレッド（Ｔ１）の命令シーケンスの一部としてＳＵＳＰＥＮＤオペコードが受信される。ブロック２１０に示されるように、スレッドＴ１の実行がサスペンドされる。スレッドサスペンド論理１１０は、ブロック２２０に示されるようにすべての命令をクリアするために、プロセッサのパイプラインを排出するパイプラインフラッシュ論理１１２を含む。一実施例では、パイプラインが排出されると、ブロック２３０に示されるように、パーティション／アニール論理１１４は、スレッドＴ１と排他的に関連付けされている分割されたリソースを他のリソースによる利用のため放棄させる。これらの放棄されたリソースは、残りのアクティブなスレッドが利用するより大きなリソースを形成するようアニールされる。
【００１４】
ブロック２３５に示されるように、スレッドＴ１がサスペンドされている期間、他のスレッドが実行されてもよい（命令が実行のため利用可能であると仮定すると）。従って、実質的にスレッドＴ１からの干渉なく、プロセッサリソースの利用が継続されるかもしれない。他のスレッドへのより十分なプロセッサリソースの提供は、スレッド１が行うべき有益な作業がほとんど、あるいは全くないとき、またはスレッドＴ１のタスクの完了が優先的なものでないとプログラムが判断したとき、他の有益な実行ストリームの処理を効果的に促進する。
【００１５】
一般的には、スレッドＴ１がサスペンドすることにより、他のスレッドがより十分にプロセッサのリソースを利用できる実施形態に依存した状態に入る。いくつかの実施例では、プロセッサはＴ１用の分割可能なリソース１４０と１６０の一部または全てを放棄するかもしれない。他の実施例では、関連付けされたＳＵＳＰＥＮＤオペコードまたは設定の異なる入れ替えは、もしあるとしたら、どのリソースが放棄されるかを示すかもしれない。例えば、プログラマーがより短い待機を期待するとき、スレッドはサスペンドされるが、大部分のリソース区画は維持されるかもしれない。共有リソースはスレッドサスペンド中他のスレッドにより排他的に利用されるかもしれないので、スループットは依然として向上する。より長い待機が期待されるとき、サスペンドされたスレッドに関する全ての区画が放棄されることにより、他のスレッドが追加的なリソースを有することが可能となり、潜在的に他のスレッドのスループットを向上させることができる。しかしながら、スレッドがそれぞれサスペンド及び回復されるとき、区画の削除及び追加によるオーバヘッドを犠牲にして追加的なスループットが得られる。
【００１６】
ブロック２４０において、サスペンド状態から抜け出すべきか判断される。特定の遅延が発生すると（すなわち、十分な時間が経過すると）、スレッドは回復される。スレッドがサスペンドされている時間は、図３ａに示されるように、多くの方法により指定することができる。例えば、プロセッサ３００は、マイクロコード３１０のルーチンにより指定される遅延時間を含むかもしれない。指定された時間が経過したとき、タイマーまたはカウンター３１２が遅延を実現し、マイクロコードを合図する。あるいは、１以上のヒューズ（ｆｕｓｅ）が遅延（Ｄ２）の特定に利用されてもよいし、あるいはレジスタ３４０が遅延（Ｄ３）を格納してもよい。遅延（Ｄ４）は、プロセッサに接続されるブリッジまたはメモリコントローラ３０２のコンフィギュレーションレジスタのようなレジスタまたは格納場所により特定されてもよい。遅延（Ｄ５）は、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）により特定されてもよい。あるいは、遅延（Ｄ６）はメモリコントローラ３０２に接続されたメモリ３０４に格納されてもよい。プロセッサ３００は、実行ユニット３２０により実行されるように、ＳＵＳＰＥＮＤオペコードへの暗示的または明示的オペランドとして遅延値を抽出するようにしてもよい。値を指定する他の既知、あるいは利用可能な、あるいは便利なテクニックが遅延の特定に利用されてもよい。
【００１７】
図２を参照するに、遅延時間が経過しなければ、使用されているタイマー、カウンターあるいは他の測定機構が遅延を追跡し続け、ブロック２４０へのリターンにより示されるように、スレッドはサスペンドのままとされる。遅延時間が経過すると、ブロック２５０においてスレッドＴ１の回復が開始される。ブロック２５０に示されるように、パイプラインがフラッシュされ、スレッドＴ１のためのリソースが解放される。ブロック２６０において、スレッドＴ１が処理の実行に利用されるスレッド分割可能リソースの一部を有するように、リソースは再分割される。最後に、ブロック２７０に示されるように、スレッドＴ１は実行を再開する。
【００１８】
従って、図１及び２の実施例は、スレッドが特定の時間プログラムによりサスペンドされるのを可能にするテクニックを提供する。一実施例では、他のイベントがまたＴ１を回復させる。例えば、割込みによりＴ１を回復させるかもしれない。図３ｂは、他のイベントがサスペンド状態から抜け出させるのを可能にする一実施例によるフロー図を示す。ブロック３６０において、スレッドは以前の処理によりすでにサスペンドされている。ブロック３７０において、十分な時間が経過したかどうかチェックされる（図２に関して上述したように）。十分な時間が経過した場合には、ブロック３８０に示されるように、スレッドＴ１は回復される。
【００１９】
他方、ブロック３６５において十分な時間が経過していない場合、ブロック３７０と３７５においてサスペンド状態をブレークするイベントが検出される。いくつかの実施例では、もしあるとしたら、どのイベントがサスペンド状態を抜け出させるかを特定するオペランド、コンフィギュレーション設定、ＳＵＳＰＥＮＤ命令の入れ替えなどがあるかもしれない。これにより、ブロック３７０はサスペンド状態をブレークすることが可能なイベントがあるか（及びいくつかの実施例では、どのイベントが可能かを）チェックする。サスペンド状態をブレークすることができるイベントが存在しない場合、プロセスはブロック３６５に戻る。ブロック３７５に示されるように可能となるイベントの何れかが発生する場合、スレッドＴ１はブロック３８０に示されるように回復される。そうでない場合、プロセッサはスレッドＴ１をサスペンド状態のままとし、プロセスはブロック３６５に戻る。
【００２０】
図４は、一実施例によるリソースの分割、複製及び共有を示す。分割されたリソースは、マシーンのアクティブなスレッドの消長に従って、分割及びアニールされる（他のスレッドによる再利用のためヒューズされる）。図４の実施例では、複製されたリソースには、パイプラインの命令フェッチ部分の命令ポインタ論理、パイプラインのリネーム部分のレジスタリネーム論理、状態変数（図示されていないが、パイプラインの様々な段階で参照される）、及び割込みコントローラ（図示されず、一般にパイプラインに非同期な）が含まれる。図４の実施例の共有リソースには、パイプラインのスケジュール段階のスケジューラ、パイプラインのレジスタリード及びライト部分のレジスタプール、及びパイプラインの実行部分の実行リソースが含まれる。さらに、トレースキャッシュとＬ１データキャッシュは、スレッドのコンテクストとは無関係にメモリアクセスに従って備えられた共有リソースであるかもしれない。他の実施例では、キャッシュ処理における判断にスレッドのコンテクストが利用されてもよい。図４の実施例の分割されたリソースは、パイプラインのキュー処理段階において、パイプラインのリタイアメント段階のリオーダーバッファとストアバッファの２つのキューを有する。スレッド選択多重化論理は、両方のスレッドへの適切なアクセスを提供するため、様々な複製及び分割されたリソース間で切り替えられる。
【００２１】
図４の実施例において、１つのスレッドがサスペンドすると、スレッド１に関するすべての命令が両方のキューから排出される。その後キューの各ペアはより大きなキューを第２のスレッドに提供するため合成される。同様に、レジスタプールからのより多くのレジスタが第２スレッドに利用可能となり、ストアバッファからのより多くのエントリが第２スレッドに解放され、リオーダーバッファのより多くのエントリが第２スレッドに利用可能になる。本質的に、これらの構成は２倍のサイズの１つの専用的な構成に戻される。もちろん、異なるスレッド数を用いた実施形態から異なる比率が生じるかもしれない。
【００２２】
いくつかの実施例では、スレッド分割可能リソース、複製されたリソース及び共有リソースが異なって配備されてもよい。いくつかの実施例では、共有リソースの両端に分割可能なリソースがなくてもよい。いくつかの実施例では、分割可能なリソースは厳密には分割されず、いくつかの命令は複数の区画にわたるか、あるいは当該区画で実行されているスレッドや実行中のトータルのスレッド数に依存して可変サイズとすることが可能となるかもしれない。さらに、リソースの異なる組み合わせが共有、複製及び分割リソースとして指定されるかもしれない。
【００２３】
図５は、開示された技術を利用した設計のシミュレーション、エミュレーション及び製造のための様々な設計表現または形式を示す。設計を表すデータは多数の方法でその設計を表すかもしれない。まず、シミュレーションで有益なように、ハードウェアはハードウェア記述言語または設計されたハードウェアがどのような実行が期待されるかについてのコンピュータ化モデルを本質的に提供する他の機能記述言語を利用して表現されるかもしれない。ハードウェアモデル１１１０は、それが意図通りに機能するか決定するため、特定のテストパッケージ１１３０をハードウェアモデル１１１０に適用するシミュレーションソフトウェア１１２０を利用してシミュレートできるように、コンピュータメモリのような記憶媒体１１００に格納されてもよい。いくつかの実施例では、シミュレーションソフトウェアは、媒体に記録、キャプチャあるいは含まれない。
【００２４】
さらに、論理及び／またはトランジスタゲートを有する回路レベルモデルは、設計プロセスのいくつかの段階で生産されてもよい。このモデルは、ときにはプログラム可能な論理を使うモデル形成する専用ハードウェアシミュレータにより、同様にシミュレートされるかもしれない。このタイプのシミュレーションは、さらに、エミュレーションテクニックであるかもしれない。どの場合でも、再構成可能なハードウェアは、開示された技術を利用したモデルを格納するマシーン読み出し可能な媒体に関する他の実施例である。
【００２５】
さらに、いくつかの段階では、大部分の設計はハードウェアモデルにおける様々なデバイスの物理的配置を表すデータレベルに達する。従来の半導体製造技術が利用されるケースでは、ハードウェアモデルを表すデータは集積回路の生産に利用されるマスクに対する異なるマスクレイヤに関する様々な特徴の有無を特定するデータであるかもしれない。再び、集積回路を表すこのデータは、データにおける回路あるいは論理が開示された技術を実行するためシミュレートまたは製造ことができるという点で、開示された技術を具現化する。
【００２６】
設計のどの表現形態においても、データは任意の形式のコンピュータと乱し可能な媒体に格納されてもよい。そのような情報を送信するために変調あるいは生成される光または電子波１１６０、メモリ１１５０、ディスクのような磁気または光学記憶装置１１４０が媒体であるかもしれない。設計やそれの一部を記述するビット群は、それ自体販売されているから、あるいはさらなる設計あるいは生産のため他のものにより利用される物品である。
【００２７】
従って、マルチスレッドプロセッサにおけるスレッドの実行をサスペンドする技術が開示される。いくつかの実施例が説明され、添付された図面で示されたが、そのような実施例は単なる例示のためのものであり、広範な本発明を限定するものではなく、本開示を研究することにより他の様々な変更が当業者に思い付くかもしれないため、本発明は図示及び説明された特定の構成及び配置に限定されるものではないということは理解されるであろう。
【図面の簡単な説明】
【００２８】
【図１】図１は、命令に応答してスレッドをサスペンドし、当該スレッドに関するリソースを放棄する論理を有するマルチスレッドプロセッサの一実施例を示す。
【図２】図２は、一実施例による図１のマルチスレッドプロセッサの動作を示すフロー図である。
【図３ａ】図３ａは、マルチスレッドプロセッサがサスペンドされる時間を指定する様々なオプションを示す。
【図３ｂ】図３ｂは、選択された時間の経過あるいはイベントの発生によりサスペンド状態から脱するフロー図を示す。
【図４】図４は、一実施例によるリソース分割、共有及び複製を示す。
【図５】図５は、開示された技術を利用した設計のシミュレーション、エミュレーション及び製造のための様々な設計表現あるいはフォーマットを示す。
【図１】
2005514698.tif 000003
【図２】
2005514698.tif 000004
【図３ａ】
2005514698.tif 000005
【図３ｂ】
2005514698.tif 000006
【図４】
2005514698.tif 000007
【図５】
2005514698.tif 000008
【手続補正書】
【提出日】平成16年6月29日(2004.6.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
各自が複数のスレッド間で分割可能な複数のスレッド分割可能リソースと、
前記複数のスレッドの第１スレッドからサスペンド命令を受信し、前記サスペンド命令に応答して、選択された時間前記第１スレッドの実行をサスペンドさせ、前記複数のスレッドの他のスレッドによる利用のため、前記第１スレッドに関する前記複数のスレッド分割可能リソースの一部を放棄させるサスペンド手段とを有することを特徴とするプロセッサ。
【請求項２】
請求項１記載のプロセッサであって、前記選択した時間は固定された時間であることを特徴とするプロセッサ。
【請求項３】
請求項１または２記載のプロセッサであって、該プロセッサは前記第１スレッドのサスペンド中、第２スレッドからの命令を実行することを特徴とするプロセッサ。
【請求項４】
請求項１記載のプロセッサであって、前記選択された時間は、
前記サスペンド命令に関するオペランドの提供処理と、
前記選択された時間を設定するためのヒューズのブロー処理と、
前記サスペンド命令の復号前に前記選択された時間の格納領域でのプログラム処理と、
前記選択された時間のマイクロコードでの設定処理とから構成されるセットから選ばれる少なくとも１つの技術によりプログラム可能であることを特徴とするプロセッサ。
【請求項５】
請求項１乃至４何れか一項記載のプロセッサであって、前記複数のスレッド分割可能リソースは命令キューとレジスタプールとを有することを特徴とするプロセッサ。
【請求項６】
請求項１乃至５何れか一項記載のプロセッサであって、さらに、
複数の実行ユニット、キャッシュ及びスケジューラを有する複数の共有リソースと、
複数のプロセッサ状態変数、命令ポインタ及びレジスタリネーム論理を有する複数の複製リソースとを有することを特徴とするプロセッサ。
【請求項７】
請求項６記載のプロセッサであって、前記複数のスレッド分割可能リソースは、さらに、複数のリオーダーバッファと複数のストアバッファエントリとを有することを特徴とするプロセッサ。
【請求項８】
請求項１乃至７何れか一項記載のプロセッサであって、前記論理は、さらに、該プロセッサにイベントに応答して前記第１スレッドの実行を再開させることを特徴とするプロセッサ。
【請求項９】
請求項１乃至７何れか一項記載のプロセッサであって、前記論理は、さらに、該プロセッサに前記選択された時間が経過するまでイベントを無視させることを特徴とするプロセッサ。
【請求項１０】
請求項１乃至９何れか一項記載のプロセッサであって、該プロセッサはコンピュータ読み出し可能媒体上でデジタルフォーマットにより実現されることを特徴とするプロセッサ。
【請求項１１】
請求項１乃至１０何れか一項記載のプロセッサと、
前記複数のスレッドを格納するメモリとを有することを特徴とするシステム。
【請求項１２】
請求項１１記載のシステムであって、さらに、
マルチメディアインタフェースを有することを特徴とするシステム。
【請求項１３】
実行の第１スレッドでプログラムサスペンドオペコードである第１オペコードを受け取るステップと、
前記第１オペコードに応答して選択された時間前記第１スレッドをサスペンドするステップと、
前記第１オペコードに応答して複数のスレッド分割可能リソースを放棄するステップとを有することを特徴とする方法。
【請求項１４】
請求項１３記載の方法であって、前記放棄するステップは、より少ないスレッドによって利用可能なより大きな構成となるよう前記複数のスレッド分割可能リソースをアニールすることからなることを特徴とする方法。
【請求項１５】
請求項１３または１４記載の方法であって、前記放棄するステップは、命令キューの区画を放棄し、レジスタプールから複数のレジスタを放棄することからなることを特徴とする方法。
【請求項１６】
請求項１５記載の方法であって、前記放棄するステップは、さらに、複数のストアバッファエントリを放棄し、複数のリオーダーバッファエントリを放棄することをからなることを特徴とする方法。
【請求項１７】
請求項１３乃至１６何れか一項記載の方法であって、前記選択された時間は、
前記第１オペコードに関するオペランドの提供処理と、
前記選択された時間を設定するためのヒューズのブロー処理と、
前記プログラムサスペンドオペコードの復号前に前記選択された時間の格納領域でのプログラム処理と、
前記選択された時間のマイクロコードでの設定処理とから構成されるセットから選ばれる少なくとも１つの技術によりプログラム可能であることを特徴とする方法。
【国際調査報告】
2005514698.tif 000009
2005514698.tif 000010