説明

マルチスレッド・コンピュータ・システムにおいてスレッドの実行をイネーブルにするための方法および装置

簡潔に述べると、本発明の実施例に従って、マルチスレッド・コンピュータ・システムにおけるスレッドの実行をイネーブルにするための装置および方法が提供される。本方法は、ハードウェア資源が非実行中のスレッドの命令に対して利用できるか、または利用できることになるかどうかに少なくとも基づいて、非実行中のスレッドの実行をイネーブルにすることを含む。本装置は、ハードウェア資源が非実行中のスレッドの命令に対して利用できるか、または利用できることになるかどうかに少なくとも基づいて、保留中のスレッドの実行をイネーブルにするためのスレッド・ディスパッチ回路を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マルチスレッド・コンピュータ・システムにおいてスレッドの実行をイネーブルにするための方法および装置に関する。
【背景技術】
【0002】
マルチスレッディングは、高処理能力のコンピュータ・アーキテクチャを可能にする。スレッドとは、プロセッサによって実行される命令セットをいう。
【0003】
非同時に1つのスレッドが実行され、他のスレッドが保留されているとき、スレッド・スイッチングとは、現在走行中のスレッドの実行と保留中のスレッドの実行との間での切り替えをいう。
【0004】
プロセッサによって現在実行されているスレッドは、実行中のスレッド、走行中のスレッド、または活動中のスレッドと称される。プロセッサによって現在実行されていないスレッドは、保留中のスレッド、非活動中のスレッド、非実行中のスレッド、または非走行中のスレッドと称される。
【0005】
システム性能は、特定のシステム内で使用されるスレッド・スイッチング・アルゴリズムによって異なる。システム設計者は、マルチスレッド・コンピュータ・システムにおいてスレッド・スイッチングを提供するための代替方法を絶えず模索している。
【0006】
本発明に関する主題は、明細書に添付した請求項において特に指摘され明確にクレームされる。しかしながら、本発明は、その目的、機能、および利点と共に、オペレーションの構成および方法の両方に関して、以下の詳細な説明を添付図面と合わせて読むことにより、最も良く理解することができる。
【0007】
図面を単純化および明瞭化するために、図中に示された要素は、必ずしも同じ寸法で図示されていないことが理解されるであろう。例えば、いくつかの要素の寸法は、明瞭化するために他の要素に比べて拡大される。さらに、適切であると考えられる場合には、参照番号は、対応または類似する要素を示すために図中で繰り返される。
【発明の開示】
【0008】
以下の詳細な説明では、本発明についての完全な理解を提供するために、多くの特定の詳細事項が記述される。しかしながら、当業者は、本発明がこれらの特定の詳細事項の範囲を越えて実施可能であることを理解するであろう。また、例えば、周知の方法、手順、コンポーネント、および回路については、本発明を不明瞭にしないために詳細には記述されない。
【0009】
以下の記述および請求項において、用語「含む」および「構成する」がそれらの派生語と共に用いられるが、互いに同義語として扱うと解される。さらに、以下の記述および請求項において、用語「結合された」、「接続された」がそれらの派生語と共に用いられる。これらの用語は、互いに同義語であるとは解さないと理解すべきである。特定の実施例において、「接続された」は、2つ以上の要素が互いに直接に物理的電気的に接触していることを示すために使用される。「結合された」もまた、2つ以上の要素が直接に物理的電気的に接触していることを意味する。しかしながら、「結合された」は、さらに、2つ以上の要素が互いに直接に接触していないが、互いに働き合うこと、または作用し合うことを意味する。
【0010】
図1は、本発明の一実施例に従って、マルチスレッド・コンピュータ・システムにおいてスレッド・スイッチングを提供する方法100を示すフローチャートである。
【0011】
マルチスレッド・プロセッサ(図示せず)において、1つ以上のプログラムのマルチプル・スレッドは、同時または非同時のいずれかで実行される。例えば、1つのスレッドはプロセッサによって実行され、他のスレッドは保留される、すなわち、後の時点で実行されるために待機している。他の実施例では、1つのスレッドのセットが同時に実行され、他のスレッドのセットは保留される。
【0012】
マルチスレッド・プロセッサにおいて、利用できるスレッドから命令をいつ出すのかを決定するためのロジックがプロセッサに含まれる。例えば、1つのスレッドはいくつかの予め定められた条件が生じるまで走行し、次に、プロセッサは他のスレッドを走行させるために切り替わる。スレッドの実行間における切り替えは、スレッド・スイッチングと称される。
【0013】
図1の方法100は、現在実行中のスレッドの命令をフェッチすることから始まる(ブロック110)。その命令はデコードされる(ブロック120)。デコードされた後に、予め定められた条件に合致するかどうかが決定される。例えば、実行中のスレッドの命令が長いレイテンシを生じるかどうかが決定される(判断ブロック130)。
【0014】
予め定められた条件は、実施例によって多様であるが、実行に先立って長いレイテンシを必要とする命令は、予め定められた条件であるとみなされる。用語「長いレイテンシ(long latency)」とは、命令を受け取ってから命令を実行するまでの時間を意味し、それによってプロセッサに1以上のストールが生じる。ストールとは、プロセッサのパイプラインの一部または全部が命令を実行しないサイクルをいう。
【0015】
したがって、長いレイテンシ時間は、レイテンシ時間中に他の命令を実行するプロセッサの処理能力により、いくつかのサイクル、または何百ものサイクルに相当する。例えば、(キャッシュ・ミスのように)システム・メモリからの情報取得を要求するロード命令は何百ものサイクルを必要とし、一方、プロセッサと密接に関連する(レベル1(L1)キャッシュのような)キャッシュからデータを取得するロード命令は10未満のサイクルを必要とする。ある実施例では、データが処理の準備をする前にプロセッサがストール・サイクルになるので、両方のロード命令が長いレイテンシの命令とみなされる。
【0016】
予め定められた条件は、その条件が、必然的ではないが、パイプラインのストールをもたらすレイテンシを引き起こすという知識に基づいて選択される。
【0017】
本発明の範囲を制限するものではないが、予め定められた条件であるとみなされる他の命令の例として、格納命令および特定の算術命令が含まれる。例えば、浮動小数点除算オペレーションは予め定められた条件である。さらに、メモリ・サブシステムにアクセスする他のオペレーションも予め定められた条件である。
【0018】
予め定められた条件が検出されたとき、他のスレッド、例えば保留中のスレッドの命令はフェッチおよび実行されるので、ストール・サイクルはほとんどまたは全く生じない。したがって、ある実施例において、パフォーマンスはマルチスレッド・コンテキストにおいて著しく向上する。
【0019】
命令が長いレイテンシを有しない(すなわち、予め定められた条件が生じない)と決定された場合、命令は実行され(ブロック140)、また現在のスレッドの次の命令がフェッチされる(ブロック110)。
【0020】
長いレイテンシが結果的に生じる(すなわち、予め定められた条件が生じた)と決定された場合は、次に、保留中のスレッドの命令を調査する(ブロック150)。保留中のスレッドの調査は、現在実行中のスレッドの長いレイテンシの命令を実行している間に行われる。次に、どのハードウェア資源が保留中のスレッドの命令に関係するかが決定される。
【0021】
さらに、本願の方法は、次に、1つ以上のハードウェア資源が、保留中のスレッドの命令によって利用できるかどうか、または利用できることになるかを決定することを含む(判断ブロック160)。例えば、レジスタ、キュー、バッファ、演算器(例えば乗算器)、入力/出力(I/O)装置、またはメモリ・サブシステムが、非実行中のスレッドの命令によって利用できるかどうか決定される。
【0022】
保留中のスレッドに対して利用できるハードウェア資源がない場合、現在実行中のスレッドの実行が継続される(ブロック140)。1つ以上のハードウェア資源が保留中のスレッドの命令によって利用できる場合、次に、プロセッサはスレッドを切り替える準備をする(ブロック170)。一実施例において、スレッドを切り替える準備は、スレッド・スイッチングに先立って現在のスレッドの残りの1つまたはいくつかの命令を実行することを含む。このような方法で、プロセッサがストールすることなく追加の命令が実行される。さらに、かかる命令は、プロセッサのパイプライン内に既に存在するので、それらをフラッシュする必要がない。したがって、第2のスレッドを実行する準備がされている間に、現在実行中のスレッドの命令は処理され続ける。
【0023】
次に、スレッドが切り替えられる(ブロック180)。すなわち、プロセッサは、保留中のスレッド対して1つ以上のハードウェア資源が利用できるか、または利用できることになる場合には、現在実行中のスレッドの走行から保留中のスレッドの走行に切り替わる。
【0024】
図1は長いレイテンシの命令を処理する方法について説明しているが、前記のように、図1のフローは他の予め定められた条件についても適用することができることを理解されたい。
【0025】
上述したように、図1の実施例は、いつ2つのスレッド間の切り替えを行なうかを決定する方法を示す。この方法は、2つの異なるスレッド・スイッチングの基準を用いる。すなわち、1つは、現在実行中のスレッドのプロパティに基づくもの、および、他の1つは、現在非実行中のスレッドのプロパティに基づくものである。これは、走行状態から保留状態へ、そして再びそれとは逆にスレッドを移行させるという用語で表現することができる。
【0026】
本発明の一実施例において、特別の種類の命令、例えば、長時間結果を返さない命令、すなわち、長いレイテンシの命令を出すとき、そしてさらに、保留中のスレッドが「スコアボードに表示された(scoreboarded)」資源を有しない場合は常に、走行中のスレッドは保留中のスレッドになる。スコアボードに表示された資源とは、いくつかの保留中のオペレーションが完了するまで利用することができない資源をいう。例えば、レジスタがスコアボードに表示されると、そのために保留中のスレッドの命令に対して利用できない。
【0027】
スコアボードに表示された資源を持たないスレッドは、少なくとも1つの命令を出すことができるので、スコアボードに表示された資源を持たない保留中のスレッドへ切り替える方法は、他のスレッド・スイッチング方法と比較して、プロセッサの効率を低下させない。例えば、タイマまたはカウンタは、実行中のスレッドが切り替えられることなく走行できる時間量を制限するために使用される。しかしながら、カウンタの時間切れの前にいくつかのクロック・サイクルが通過するので、カウンタまたはタイマを使用するとシステムの総効率が低下する。
【0028】
図2は、本発明の実施例に従ってプロセッサ・パイプライン200を示すブロック図である。プロセッサ・パイプライン200は、命令キャッシュ210、命令デコーダ220、スレッド・ディスパッチ230、およびレジスタ・ルックアップ240を含む。さらに、プロセッサ・パイプライン200は、機能ユニット250,260,270を含む。プロセッサ・パイプラインは、マルチスレッド・プロセッサに含まれ、1以上のソフトウェア・プログラムのマルチプル・スレッドを処理するために適合される。
【0029】
本発明の実施例に従ったパイプラインを含むプロセッサのタイプは多様であるが、一実施例において、プロセッサは比較的単純な順序のプロセッサである。他の実施例において、プロセッサは、アドバンスドRISCマシーン(ARM)アーキテクチャに基づくアーキテクチャのような、縮小命令セット・コンピューティング(RISC)アーキテクチャを有する。例えば、ある実施例では、カリフォルニア州サンタクララ所在のインテル社から入手可能な、INTEL(登録商標)XSCALE(商標)プロセッサの32ビット・バージョンを使用することができる。しかしながら、他の実施例では、プロセッサは異なるプロセッサであってもよい。
【0030】
一実施例において、命令キャッシュ210は、プロセッサのバス・インターフェイス・ユニット(図示せず)からの命令を受けるために結合される。命令キャッシュ210は、マルチプル・スレッドの命令を含む命令を格納するために使用される。命令キャッシュ210は、命令デコーダ220に命令を提供するために結合される。
【0031】
命令デコーダ220は、より速く処理するために、複雑な命令をより小さな命令に分割して命令をデコードする。例えば、一実施例において、命令はマイクロ・オペレーション(μops)にデコードされる。しかしながら、他の実施例では、他のタイプの命令は、マクロ・オペレーションまたは他の形式の命令等にデコードされる。さらに、縮小命令セット・コンピューティング(RISC)命令または複雑命令セット・コンピューティング(CISC)命令のような多様な命令セットを使用できることが理解されるであろう。さらに、ある実施例において、命令デコーダ220は、CISC命令をRISC命令にデコードすることができる。
【0032】
さらに図2に関し、アクセスされるレジスタの識別を含むデコードされた命令は、スレッド・ディスパッチ230に提供される。
【0033】
スレッド・ディスパッチ230は、例えば機能ユニット250〜270のようなハードウェア資源の1つ以上が利用できるかどうかに少なくとも基づいて保留中のスレッドの実行をイネーブルにするための回路またはロジックを含む。一実施例において、スレッド・ディスパッチ230は、どのハードウェア資源が利用可能であるかによって、どの保留中のスレッドが命令を出すのかを選択し、かつ、これをクロック・サイクル毎に行なうスケジューラとしての役割を果たす。さらに、いくつかの実施例では、ブロック240からの必要なレジスタが、命令に対して必要な値を含んでいるか、または含むであろう場合、スレッド・ディスパッチ230がスレッドの実行をイネーブルにする。ここで記述されたスレッドの実行をイネーブルにするための技術は、同時マルチスレッディング(SMT)システムまたは時分割マルチスレッディング(TDM)システムにおいて使用することができる。一例として、SMTシステムは、異なるスレッドから複数の命令を同時に出すことができるシステムをいう。スレッド・ディスパッチ230は、スケジューラ、スレッド・ディスパッチ回路、またはスレッド・ディスパッチ装置と称される。
【0034】
レジスタ・ルックアップ240は、レジスタ・ファイル・ユニット内でレジスタの物理的なレジスタ識別を提供するために使用される。かかる方法で、レジスタが各命令に割り当てられる。
【0035】
機能ユニット250,260,270は、命令を実行するために適合され、実行ユニットとも呼ばれる。いくつかの実施例では、機能ユニットは、算術および論理演算を行なうため、またはロードおよび格納命令を実行するために適合される。他の実施例では、機能ユニット250,260,270は、乗算器、加算器、除算器、整数算術論理演算ユニット(ALU)、浮動小数点算術論理演算ユニット(ALU)、レジスタ、ロード/格納ユニット、メモリ管理ユニット(MMU)、マルチメディア・アクセラレータ、セキュリティおよび暗号化コプロセッサ、他の特殊なコプロセッサ(プロセッサ外部のコプロセッサを含む)などである。
【0036】
パイプライン・プロセッサ200は、図1の方法100のオペレーションのいくつかまたは全部を実行するために適合される。例えば、命令デコーダ220は、方法100のオペレーション110,120を行なうための回路を含み、スレッド・ディスパッチ230は、方法100のオペレーション130,150,160,170,180を行なうための回路を含み、機能ユニット250〜270は、方法100のオペレーション140を行なうための回路を含む。
【0037】
上述のように、スレッド・ディスパッチ230は、1以上のハードウェア資源が保留中のスレッドに対して利用できるかどうかということに少なくとも基づいて、1つ以上の保留中のスレッドの実行をイネーブルにするために適合される。ある実施例において、スレッド・ディスパッチ230は、どのスレッドが実行され、また、どのスレッドが保留状態のまま残されるかを決定する目的で、マルチプル・スレッドの命令を調査するために適合される。スレッド・ディスパッチ230は、どのハードウェア資源(例えば機能ユニット)がマルチプル・スレッドの命令に関係するかを決定するために適合される。さらに、スレッド・ディスパッチ230は、機能ユニット250〜270が保留中のスレッドの命令に対して利用できるかどうか、または利用できることになるかどうかを決定するために機能ユニット250〜270に結合される。一実施例において、スレッド・ディスパッチ230は、機能ユニット250〜270およびレジスタ・ルックアップ240から「作動可能(ready)」信号を受信するために結合され、そこで作動可能信号は、機能ユニットが利用できるか、または利用できないかを示す。
【0038】
他の実施例では、スレッド・ディスパッチ230は、走行中のスレッドから保留中のスレッドに切り替えるために適合される。スレッド・ディスパッチ230は、予め定められた条件が生じるかどうかを決定するために、走行中のスレッドの命令を調査するために適合される。例えば、スレッド・ディスパッチ230は、長いレイテンシの命令が生じるかどうかを決定するために、走行中のスレッドの命令を調査するロジックを含む。
【0039】
本発明の範囲を制限するものではないが、一実施例において、スレッド・ディスパッチ230は、予め定められた条件のリストを包含するルックアップ・テーブルを含む。この方法では、命令がスレッド・ディスパッチ230によって受け取られるとき、命令が予め定められた条件の1つに対応するかどうか決定するために、ルックアップ・テーブル内のエントリと比較して解析される。あるいは、スレッド・ディスパッチ230のロジックが、予め定められた条件の存在または発生を検出するために使用される。さらに他の実施例では、スレッド・ディスパッチ230のマイクロコードが、予め定められた条件の存在または発生を決定する。
【0040】
予め定められた条件が、走行中のスレッドの調査により検出された場合、次に、保留中のスレッドおよび保留中のスレッドに関連するハードウェア資源の利用可能性の調査がスレッド・ディスパッチ230によって行なわれる。一実施例において、スレッド・ディスパッチ230は、第1の保留中のスレッドが利用できないハードウェア資源の数およびタイプに少なくとも基づいて、第1の実行中のスレッドから第1の保留中のスレッドの実行に実行を切り替える。
【0041】
他の実施例では、スレッド・ディスパッチ230は、2つの保留中のスレッド(例えば、スレッドAおよびスレッドB)が利用できるハードウェア資源を比較する。スレッド・ディスパッチ230は、スレッドAおよびBが利用できるハードウェア資源の数を決定し、次に、スレッドAが利用できるハードウェア資源の数が、スレッドBが利用できるハードウェア資源の数より少ない場合には、走行中のスレッドの実行からスレッドAの実行に切り替える。あるいは、単純に、スレッドAが利用できないハードウェア資源の数が、スレッドBが利用できないハードウェア資源の数より少ない場合には、スレッド・ディスパッチ230は、スレッドAの実行をイネーブルにする。
【0042】
前述のように、いくつかの実施例においてスレッド・スイッチング・システムが提供されるが、これらは、保留中のスレッドまたは他の保留中のスレッドが利用できないハードウェア資源の数およびタイプに少なくとも一部または全部が基づいて、あるいは、他の保留中のスレッドによって必要とされる利用できない資源をも考慮に入れた上で、選択され、または選択が可能である。一例において、本発明は、何が起こるかに基づいてスレッドをイネーブルにするための方法および装置を提供する、すなわち、非走行中のスレッドを調査し、非走行中のスレッドに対するハードウェア資源の利用可能性に基づいてスレッドの実行をイネーブルにする。
【0043】
図3は、本発明の実施例に従って非実行中のスレッドの実行をイネーブルにするための方法300を示すフローチャートである。一実施例において、ハードウェア資源が非実行中のスレッドの命令に対して利用できるか、または、利用できることになるかどうかに少なくとも基づいて、非実行中のスレッドがイネーブルにされる。本発明の範囲を制限するものではないが、ハードウェア資源は、レジスタ、キュー、バッファ、機能ユニット、入力/出力(I/O)装置、またはメモリ・サブシステム等である。一実施例において、非実行中のスレッドの実行は、例えばレジスタのようなハードウェア資源がスコアボードに表示されるかどうかに基づく。
【0044】
方法300は、ハードウェア資源が非実行中のスレッドの命令によって利用できるかどうかを決定する段階を含む(ブロック320)。決定するオペレーションは、非実行中のスレッドの命令ストリームを調査する段階、命令ストリームの命令を識別する段階、命令に関連するハードウェア資源を識別する段階を含む。ハードウェア資源が非実行中のスレッドの命令に対して利用できると決定された場合、非実行中のスレッドの実行がイネーブルになる(ブロック330)。換言すれば、非実行中のスレッドが実行するために選択される。反対に、ハードウェア資源が非実行中のスレッドの命令に対して利用できない場合、非実行中のスレッドの実行はイネーブルにならない(ブロック340)。
【0045】
他の実施例では、ハードウェア資源が少なくとも2つの保留中のスレッドに対して利用できる場合に、プロセッサは、少なくとも2つの走行中のスレッドの実行から少なくとも2つの保留中のスレッドの実行に切り替わる。
【0046】
図4は、本発明の実施例が使用されるワイヤレス装置のブロック図である。図4に示されるように、一実施例において、ワイヤレス装置500はプロセッサ510を含み、それは、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路(ASIC)、のような特別目的プロセッサ、プログラム可能なゲート・アレイ(PGA)等の汎用または特定用途のプロセッサを含む。
【0047】
一実施例において、プロセッサ500は、図2に関して上述したプロセッサ・パイプライン200を含んでもよい。また、様々な実施例において、プロセッサ500は、上記の方法100(図1)または方法300(図3)を実行するために適合される場合がある。
【0048】
ワイヤレス装置500は、個人向け携帯型情報機器(PDA)、ワイヤレス機能を備えたラップトップまたはポータブル・コンピュータ、ウェブ・タブレット、ワイヤレス電話(例えばコードレスまたは携帯電話)、ページャ、インスタント・メッセージング装置、デジタル音楽プレーヤ、デジタル・カメラ、あるいは、情報をワイヤレスで送信および/または受信するために適合された他の装置である。ワイヤレス装置500は、ワイヤレス・パーソナル・エリア・ネットワーク(WPAN)システム、ワイヤレス・ローカル・エリア・ネットワーク(WLAN)システム、ワイヤレス・メトロポリタン・エリア・ネットワーク(WMAN)システム、または、例えばセルラ・システムのようなワイヤレス・ワイド・エリア・ネットワーク(WWAN)システムのようなシステムで使用することができる。
【0049】
WLANシステムの例としては、米国電気電子学会(IEEE)802.11標準規格に実質的に基づいたシステムを含む。WMANシステムの例としては、米国電気電子学会(IEEE)802.16標準規格に実質的に基づいたシステムを含む。WPANシステムの例としては、Bluetooth標準規格(Bluetoothはブルートゥース特別利益団体の登録商標である)に実質的に基づいたシステムを含む。WPANシステムの他の例としては、例えば超広帯域(UWB)技術を使用するIEEE802.15.3a仕様のような米国電気電子学会(IEEE)802.15標準規格に実質的に基づいたシステムを含む。
【0050】
セルラ・システムの例としては、符号分割多重接続(CDMA)セルラ無線電話通信システム、グローバル移動体通信システム(GSM)セルラ無線電話システム、GSMエボリューションのためのエンハンスド・データ(EDGE)システム、北米デジタル携帯電話(NADC)セルラ無線電話システム、時分割多重接続(TDMA)システム、拡張TDMA(E−TDMA)セルラ無線電話システム、GPRS、ワイド・バンドCDMA(WCDMA)、CDMA−2000、ユニバーサル・モバイル移動体通信システム(UMTS)等の第3世代(3G)システムを含む。
【0051】
図4で示されるように、プロセッサ510は、内部バス520を経由してデジタル信号プロセッサ(DSP)530に結合される。次に、DSP530がフラッシュ・メモリ540に結合される。図4でさらに示されるように、フラッシュ・メモリ540は、マイクロプロセッサ510、内部バス520、および周辺バス560に結合される。
【0052】
プロセッサ510は、さらに、周辺バス・インターフェイス550および周辺バス560に結合される。図4で示されるように、多くの装置が周辺バス560に結合され、他方でワイヤレス・インターフェイス570がアンテナ580に結合される。様々な実施例において、アンテナ580は、ワイヤレスで情報を通信するために適合されたダイポールアンテナ、ヘリカル・アンテナ、または他のアンテナである。ワイヤレス・インターフェイス570は、ワイヤレス・トランシーバでもよい。
【0053】
本明細書は、装置500の特定のコンポーネントについて言及しているが、ここに記述および図示された実施例には、多くの修正および変更が可能であると考えられる。
【0054】
プロセッサ・パイプライン200は、一実施例においてワイヤレス装置内で使用される場合について図示されるが、これは本発明を制限するものではない。代替実施例では、プロセッサ・パイプライン200は、ワイヤレスでない情報通信のために適合された、例えばサーバ、デスクトップ、または埋込み型装置のような非ワイヤレス装置内で使用されてもよい。
【0055】
本発明の一定の機能がここに図示され記述されたが、当業者には多くの修正、代替、変更および均等が可能であろう。したがって、本発明の正しい精神に合致する限り、添付の請求項はかかる修正および変更をすべて包含することが意図される。
【図面の簡単な説明】
【0056】
【図1】本発明の一実施例に従って、マルチスレッド・コンピュータ・システムにおいてスレッド・スイッチングを提供する方法を示すフローチャートである。
【図2】本発明の実施例に従ったプロセッサ・パイプラインを示すブロック図である。
【図3】本発明の実施例に従って非実行中のスレッドの実行をイネーブルにするための方法を示すフローチャートである
【図4】本発明の実施例に従ったワイヤレス装置の一部を示すブロック図である。

【特許請求の範囲】
【請求項1】
ハードウェア資源が非実行中のスレッドの命令に対して利用できるか、または利用できることになるかどうかに少なくとも基づいて、前記非実行中のスレッドの実行をイネーブルにする段階を含むことを特徴とする方法。
【請求項2】
前記ハードウェア資源が前記非実行中のスレッドの前記命令に対して利用できるか、または利用できることになる場合は、長いあるいは潜在的に長いレイテンシを有する命令を実行するスレッドの実行から前記非実行中のスレッドの実行に切り替える段階をさらに含むことを特徴とする請求項1記載の方法。
【請求項3】
前記ハードウェア資源が前記非実行中のスレッドの前記命令に対して利用できるか、または利用できることになる場合は、実行中のスレッドの実行から前記非実行中のスレッドの実行に切り替える段階をさらに含むことを特徴とする請求項1記載の方法。
【請求項4】
前記ハードウェア資源が前記非実行中のスレッドの前記命令に対して利用できるか、または利用できることになるかどうかを決定する段階をさらに含むことを特徴とする請求項3記載の方法。
【請求項5】
前記決定する段階は、
前記非実行中のスレッドの命令ストリームを調査する段階と、
前記命令ストリーム中の前記命令を識別する段階と、
前記命令に関連するハードウェア資源を識別する段階と、
をさらに含み、前記調査する段階は、前記実行中のスレッドの実行の間に生じることを特徴とする請求項4記載の方法。
【請求項6】
前記イネーブルにする段階は、前記ハードウェア資源がスコアボードに表示されるかどうかに基づいて、前記非実行中のスレッドの実行をイネーブルにする段階を含むことを特徴とする請求項1記載の方法。
【請求項7】
前記イネーブルにする段階は、レジスタ、キュー、バッファ、機能ユニット、入力/出力(I/O)装置、またはメモリ・サブシステム装置が前記非実行中のスレッドの前記命令に対して利用できるか、または利用できることになるかどうかに基づいて、前記非実行中のスレッドの実行をイネーブルにする段階を含む請求項1記載の方法。
【請求項8】
前記ハードウェア資源が前記非実行中のスレッドの前記命令に対して利用できる場合は、前記非実行中のスレッドの実行をイネーブルにし、また、前記ハードウェア資源が前記非実行中のスレッドの前記命令に対して利用できない場合は、前記非実行中のスレッドの実行をイネーブルにしない段階をさらに含むことを特徴とする請求項1記載の方法。
【請求項9】
前記ハードウェア資源が前記非実行中のスレッドの前記命令に対して利用できる場合は、第2の非実行中のスレッドの実行をイネーブルにする段階をさらに含むことを特徴とする請求項1記載の方法。
【請求項10】
前記ハードウェア資源が前記非実行中のスレッドの前記命令に対して利用できる場合は、少なくとも2つの実行中のスレッドの実行から、前記非実行中のスレッドおよび少なくとも1つの他の非実行中のスレッドの実行に切り替える段階をさらに含むことを特徴とする請求項1記載の方法。
【請求項11】
第1の保留中のスレッドに対して利用できないハードウェア資源の数に少なくとも基づいて、第1の実行中のスレッドから前記第1の保留中のスレッドに切り替える段階を含むことを特徴とする方法。
【請求項12】
第2の保留中のスレッドに対して利用できないハードウェア資源の数を決定する段階をさらに含み、切り替える段階は、前記第1の保留中のスレッドに対して利用できないハードウェア資源の数が前記第2の保留中のスレッドに対して利用できないハードウェア資源の数より少ない場合は、前記第1の実行中のスレッドから前記第1の保留中のスレッドに切り替える段階を含むことを特徴とする請求項11記載の方法。
【請求項13】
その上に格納された命令を有する記憶媒体を含む物品は、コンピューティング・プラットフォームによって実行されたとき、
ハードウェア資源が非実行中のスレッドの命令に対して利用できるか、または利用できることになるかどうかに少なくとも基づいて、前記非実行中のスレッドの実行をイネーブルにする結果となることを特徴とする物品。
【請求項14】
前記命令が実行されたとき、さらに、前記ハードウェア資源が前記非実行中のスレッドの前記命令に対して利用できるか、または利用できるようになる場合に、長いレイテンシの実行中のスレッドの実行から前記非実行中のスレッドの前記実行に切り替える結果となることを特徴とする請求項13記載の物品。
【請求項15】
前記命令が実行されたとき、さらに、前記ハードウェア資源が前記非実行中のスレッドの前記命令に対して利用できるか、または利用できるようになるかどうかを決定する結果となることを特徴とする請求項13記載の物品。
【請求項16】
ハードウェア資源と、
前記ハードウェア資源が非実行中のスレッドの命令に対して利用することができるか、または利用することができるようになるかどうかに少なくとも基づいて、保留中のスレッドの実行をイネーブルにするためのスレッド・ディスパッチ回路と、
から構成されることを特徴とする装置。
【請求項17】
どのスレッドが実行され、どのスレッドが保留状態のまま残るかを決定するマルチプル・スレッドの命令を調査するために、前記スレッド・ディスパッチ回路が適合されることを特徴とする請求項16記載の装置。
【請求項18】
前記ハードウェア資源は、算術および論理演算を行なうため、またはロードおよび格納命令を実行するために適合された機能ユニットであることを特徴とする請求項16記載の装置。
【請求項19】
前記ハードウェア資源は、乗算器、加算器、除算器、整数算術論理演算ユニット(ALU)、浮動小数点演算論理演算ユニット(ALU)、レジスタ、ロード/格納ユニット、メモリ管理ユニット(MMU)、マルチメディア・アクセラレータ、セキュリティ・コプロセッサ、または暗号化コプロセッサであることを特徴とする請求項16記載の装置。
【請求項20】
どのハードウェア資源がマルチプル・スレッドの前記命令に関係しているか決定し、かつ、前記ハードウェア資源が前記マルチプル・スレッドの前記命令対して利用できるかどうか決定するために、前記スレッド・ディスパッチ回路が適合されることを特徴とする請求項16記載の装置。
【請求項21】
マルチプル・スレッドの命令を格納するための命令キャッシュと、
前記スレッド・ディスパッチに結合された命令デコーダと、
レジスタ・ファイル・ユニット内でレジスタの物理的なレジスタ識別を提供し、かつ、各命令にレジスタを割り当てるためのレジスタ・ルックアップと、
をさらに含むことを特徴とする請求項16記載の装置。
【請求項22】
前記スレッド・ディスパッチ回路は、走行中のスレッドから前記保留中のスレッドに実行を切り替えるために適合されることを特徴とする請求項16記載の装置。
【請求項23】
予め定められた条件が生じるかどうかを決定する目的で、前記スレッド・ディスパッチ回路は、前記走行中のスレッドの命令を調査するために適合されることを特徴とする請求項22記載の装置。
【請求項24】
長いレイテンシの命令が生じるかどうかを決定する目的で、前記スレッド・ディスパッチ回路は、前記走行中のスレッドの命令を調査するために適合されることを特徴とする請求項22記載の装置。
【請求項25】
アンテナと、
前記アンテナに結合されたプロセッサであって、前記プロセッサは、
ハードウェア資源、および、
前記ハードウェア資源が前記非実行中のスレッドの命令に対して利用できるか、または利用できることになるかどうかに少なくとも基づいて、保留中のスレッドの実行をイネーブルにするためのスレッド・ディスパッチ回路を含む、プロセッサと、
から構成されることを特徴とするシステム。
【請求項26】
前記ハードウェア資源は、算術および論理演算を行なうため、またはロードおよび格納命令を実行するために適合された機能ユニットであることを特徴とする請求項25記載のシステム。
【請求項27】
前記システムはワイヤレス電話を含み、前記ワイヤレス電話は、
前記アンテナと、
前記アンテナに結合された前記プロセッサと、
を含むことを特徴とする請求項25記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公表番号】特表2007−507805(P2007−507805A)
【公表日】平成19年3月29日(2007.3.29)
【国際特許分類】
【出願番号】特願2006−534072(P2006−534072)
【出願日】平成16年9月29日(2004.9.29)
【国際出願番号】PCT/US2004/032063
【国際公開番号】WO2005/033927
【国際公開日】平成17年4月14日(2005.4.14)
【出願人】(591003943)インテル・コーポレーション (1,101)