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

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

Info

Publication number
JP2007507805A
JP2007507805A JP2006534072A JP2006534072A JP2007507805A JP 2007507805 A JP2007507805 A JP 2007507805A JP 2006534072 A JP2006534072 A JP 2006534072A JP 2006534072 A JP2006534072 A JP 2006534072A JP 2007507805 A JP2007507805 A JP 2007507805A
Authority
JP
Japan
Prior art keywords
thread
available
executed
instructions
instruction
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.)
Granted
Application number
JP2006534072A
Other languages
English (en)
Other versions
JP4951345B2 (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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2007507805A publication Critical patent/JP2007507805A/ja
Application granted granted Critical
Publication of JP4951345B2 publication Critical patent/JP4951345B2/ja
Expired - Fee Related 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, 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, 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

Abstract

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

Description

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

Claims (27)

  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記載のシステム。
JP2006534072A 2003-10-01 2004-09-29 マルチスレッド・コンピュータ・システムにおいてスレッドの実行をイネーブルにするための方法および装置 Expired - Fee Related JP4951345B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/677,913 2003-10-01
US10/677,913 US7472390B2 (en) 2003-10-01 2003-10-01 Method and apparatus to enable execution of a thread in a multi-threaded computer system
PCT/US2004/032063 WO2005033927A2 (en) 2003-10-01 2004-09-29 Method and apparatus to enable execution of a thread in a multi-threaded computer system

Publications (2)

Publication Number Publication Date
JP2007507805A true JP2007507805A (ja) 2007-03-29
JP4951345B2 JP4951345B2 (ja) 2012-06-13

Family

ID=34422143

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006534072A Expired - Fee Related JP4951345B2 (ja) 2003-10-01 2004-09-29 マルチスレッド・コンピュータ・システムにおいてスレッドの実行をイネーブルにするための方法および装置

Country Status (4)

Country Link
US (1) US7472390B2 (ja)
JP (1) JP4951345B2 (ja)
KR (1) KR100825685B1 (ja)
WO (1) WO2005033927A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012026124A1 (ja) * 2010-08-25 2012-03-01 パナソニック株式会社 スレッド調停システム、プロセッサ、映像記録再生装置、およびスレッド調停方法

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050060517A1 (en) * 2003-09-12 2005-03-17 Morrow Michael W. Switching processor threads during long latencies
US7802255B2 (en) * 2003-12-19 2010-09-21 Stmicroelectronics, Inc. Thread execution scheduler for multi-processing system and method
US8566828B2 (en) * 2003-12-19 2013-10-22 Stmicroelectronics, Inc. Accelerator for multi-processing system and method
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US7870406B2 (en) * 2005-02-03 2011-01-11 International Business Machines Corporation Method and apparatus for frequency independent processor utilization recording register in a simultaneously multi-threaded processor
US8230423B2 (en) * 2005-04-07 2012-07-24 International Business Machines Corporation Multithreaded processor architecture with operational latency hiding
GB2451845B (en) * 2007-08-14 2010-03-17 Imagination Tech Ltd Compound instructions in a multi-threaded processor
GB2466984B (en) * 2009-01-16 2011-07-27 Imagination Tech Ltd Multi-threaded data processing system
GB2486485B (en) 2010-12-16 2012-12-19 Imagination Tech Ltd Method and apparatus for scheduling the issue of instructions in a microprocessor using multiple phases of execution
US9015449B2 (en) 2011-03-27 2015-04-21 International Business Machines Corporation Region-weighted accounting of multi-threaded processor core according to dispatch state
US10558490B2 (en) 2012-03-30 2020-02-11 Intel Corporation Mechanism for issuing requests to an accelerator from multiple threads
KR101603752B1 (ko) 2013-01-28 2016-03-28 삼성전자주식회사 멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법
KR20150019349A (ko) * 2013-08-13 2015-02-25 삼성전자주식회사 다중 쓰레드 실행 프로세서 및 이의 동작 방법

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4891753A (en) * 1986-11-26 1990-01-02 Intel Corporation Register scorboarding on a microprocessor chip
JPH0612386A (ja) * 1992-04-14 1994-01-21 Internatl Business Mach Corp <Ibm> プロセス内のスレッドを同期するための方法およびシステム
WO1997038372A1 (en) * 1996-04-04 1997-10-16 Videologic Limited A data processing management system
JPH11327930A (ja) * 1998-04-03 1999-11-30 Mmc Networks Inc 複数個のタスクを実行するためのプロセッサおよび方法、マルチタスクコンピュ―タプロセッサ、タスクに各リソ―スを割当てるための回路、複数個のリソ―スを共用するための方法、命令を実行するためのプロセッサ、マルチタスクプロセッサ、コンピュ―タ命令を実行するための方法、ならびにマルチタスク方法
US6009452A (en) * 1997-05-02 1999-12-28 Microsoft Corporation Apparatus and methods for optimally using available computer resources for task execution during idle-time based on probabilistic assessment of future task instances
US6016542A (en) * 1997-12-31 2000-01-18 Intel Corporation Detecting long latency pipeline stalls for thread switching
US6272520B1 (en) * 1997-12-31 2001-08-07 Intel Corporation Method for detecting thread switch events
JP2001350638A (ja) * 2000-04-04 2001-12-21 Internatl Business Mach Corp <Ibm> 多重スレッド使用方法、多重スレッド処理システム、スレッド実行コントローラおよびバッファ使用方法
WO2002067116A2 (en) * 2001-02-19 2002-08-29 Imagination Technologies Limited Control of priority and instruction rates on a multithreaded processor
WO2003040912A1 (en) * 2001-11-07 2003-05-15 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (numa) computer system

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4416896A (en) * 1982-05-17 1983-11-22 E. R. Squibb & Sons, Inc. 7-Oxabicyclopheptane substituted amino prostaglandin analogs useful in the treatment of thrombolytic disease
US6694425B1 (en) 2000-05-04 2004-02-17 International Business Machines Corporation Selective flush of shared and other pipeline stages in a multithread processor
US20040036622A1 (en) * 2000-12-15 2004-02-26 Semyon Dukach Apparatuses, methods, and computer programs for displaying information on signs
US20020156999A1 (en) 2001-04-19 2002-10-24 International Business Machines Corporation Mixed-mode hardware multithreading

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4891753A (en) * 1986-11-26 1990-01-02 Intel Corporation Register scorboarding on a microprocessor chip
JPH0612386A (ja) * 1992-04-14 1994-01-21 Internatl Business Mach Corp <Ibm> プロセス内のスレッドを同期するための方法およびシステム
WO1997038372A1 (en) * 1996-04-04 1997-10-16 Videologic Limited A data processing management system
US6009452A (en) * 1997-05-02 1999-12-28 Microsoft Corporation Apparatus and methods for optimally using available computer resources for task execution during idle-time based on probabilistic assessment of future task instances
US6016542A (en) * 1997-12-31 2000-01-18 Intel Corporation Detecting long latency pipeline stalls for thread switching
US6272520B1 (en) * 1997-12-31 2001-08-07 Intel Corporation Method for detecting thread switch events
JPH11327930A (ja) * 1998-04-03 1999-11-30 Mmc Networks Inc 複数個のタスクを実行するためのプロセッサおよび方法、マルチタスクコンピュ―タプロセッサ、タスクに各リソ―スを割当てるための回路、複数個のリソ―スを共用するための方法、命令を実行するためのプロセッサ、マルチタスクプロセッサ、コンピュ―タ命令を実行するための方法、ならびにマルチタスク方法
JP2001350638A (ja) * 2000-04-04 2001-12-21 Internatl Business Mach Corp <Ibm> 多重スレッド使用方法、多重スレッド処理システム、スレッド実行コントローラおよびバッファ使用方法
WO2002067116A2 (en) * 2001-02-19 2002-08-29 Imagination Technologies Limited Control of priority and instruction rates on a multithreaded processor
WO2003040912A1 (en) * 2001-11-07 2003-05-15 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (numa) computer system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012026124A1 (ja) * 2010-08-25 2012-03-01 パナソニック株式会社 スレッド調停システム、プロセッサ、映像記録再生装置、およびスレッド調停方法

Also Published As

Publication number Publication date
US20050097552A1 (en) 2005-05-05
JP4951345B2 (ja) 2012-06-13
WO2005033927A3 (en) 2006-04-06
US7472390B2 (en) 2008-12-30
KR100825685B1 (ko) 2008-04-29
KR20060081419A (ko) 2006-07-12
WO2005033927A2 (en) 2005-04-14

Similar Documents

Publication Publication Date Title
US20210406027A1 (en) Advanced processor architecture
US20210357214A1 (en) Methods, apparatus, and instructions for user-level thread suspension
Boggs et al. The Microarchitecture of the Intel Pentium 4 Processor on 90nm Technology.
JP4951345B2 (ja) マルチスレッド・コンピュータ・システムにおいてスレッドの実行をイネーブルにするための方法および装置
US7330964B2 (en) Microprocessor with independent SIMD loop buffer
JP4642305B2 (ja) マルチスレッド・プロセッサ内の複数のスレッドに入り、出る方法と装置
JP5329563B2 (ja) マルチスレッド・プロセッサのための共有割込みコントローラ
JP5172942B2 (ja) プロセッサによる電力消費を低減する方法、プロセッサ、及び、情報処理システム
JP6006247B2 (ja) 共有メモリへのアクセスの同期を緩和するプロセッサ、方法、システム、及びプログラム
US20080098397A1 (en) System and method for CPI load balancing in SMT processors
US20110029763A1 (en) Branch predictor for setting predicate flag to skip predicated branch instruction execution in last iteration of loop processing
US20030135711A1 (en) Apparatus and method for scheduling threads in multi-threading processors
US7596683B2 (en) Switching processor threads during long latencies
US20120204008A1 (en) Processor with a Hybrid Instruction Queue with Instruction Elaboration Between Sections
JP2012515386A (ja) マルチスレッド式データ処理システム
JP2013101605A (ja) プロセッサインストラクションの発行の絞り込み
JP2011530741A (ja) 推論的割込みベクトルプリフェッチのための装置および方法
JP2010066892A (ja) データプロセッサ及びデータ処理システム
JP2009512942A (ja) 基準化可能でプログラム可能な循環バッファのためのポインター計算方法およびシステム
JP5335440B2 (ja) オペランドの早期の条件付き選択
JP2004518183A (ja) マルチスレッド・システムにおける命令のフェッチとディスパッチ
US6735687B1 (en) Multithreaded microprocessor with asymmetrical central processing units
US20140089646A1 (en) Processor with interruptable instruction execution
JP3787329B2 (ja) ハードウェア・ループ
JP2009524167A5 (ja)

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090119

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090420

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090421

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100506

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100601

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110203

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110208

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20110603

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111028

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120206

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

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

Free format text: PAYMENT UNTIL: 20150316

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

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

LAPS Cancellation because of no payment of annual fees