JP4610593B2 - デュアルスレッドプロセッサ - Google Patents

デュアルスレッドプロセッサ Download PDF

Info

Publication number
JP4610593B2
JP4610593B2 JP2007242577A JP2007242577A JP4610593B2 JP 4610593 B2 JP4610593 B2 JP 4610593B2 JP 2007242577 A JP2007242577 A JP 2007242577A JP 2007242577 A JP2007242577 A JP 2007242577A JP 4610593 B2 JP4610593 B2 JP 4610593B2
Authority
JP
Japan
Prior art keywords
processor
thread
register
pipeline
allocation
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.)
Expired - Fee Related
Application number
JP2007242577A
Other languages
English (en)
Other versions
JP2008047145A (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 JP2008047145A publication Critical patent/JP2008047145A/ja
Application granted granted Critical
Publication of JP4610593B2 publication Critical patent/JP4610593B2/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
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines

Description

以下の開示は、処理回路及び処理システムに関する。
従来のオペレーティングシステムは、通常、マルチタスクをサポートする。マルチタスクは、2つ以上のプロセッサスレッドが共通の処理資源を共有することを可能にするスケジューリング方式である。プロセッサスレッドは、ソフトウェアプログラムの実行を追跡するプロセッサ内のアーキテクチャ状態を表す。単一のプロセッサを有するコンピュータの場合、どの所与の時点においても1つのプロセッサスレッドしか処理されず、これは、プロセッサが、単一のプロセッサスレッドに関連した命令を積極的に実行していることを意味する。或るプロセッサスレッドから別のプロセッサスレッドへプロセッサを再割り当てする動作は、コンテキストスイッチと呼ばれる。
従来のパイプラインプロセッサでは、コンテキストスイッチは、通常、ハードウェア割り込み及び割り込みサービスルーチンを通じて行われる。割り込みサービスルーチンは、通常、貴重なプロセッサ時間を消費し得る、関連した実行時間、すなわち割り込みオーバーヘッドを有する。これに加えて、従来のパイプラインプロセッサでは、コンテキストスイッチは、たとえばオペレーティングシステムのベンダによって定められるように、通常、一定の間隔(たとえば、100μsごと)でしか行われない。
なお、本出願の原出願又は本出願に対応する外国の特許出願においては下記の文献が発見または提出されている。
米国特許第5404469号明細書 米国特許第5305455号明細書 米国特許第5515538号明細書 米国特許第7117497号明細書 特開平09−171462号公報 特表2001−521215号公報 国際公開第03/088036号パンフレット 国際公開第99/021082号パンフレット Shen & Lipasti; Modern Processor Design: Fundamentals of Superscalar Processors; 07/22/2002; McGraw Hill; Beta Edition; pages 447-448 Mano & Kime; Logic And Computer Design Fundamentals; 2001; Prentice Hall; Second Edition Updated; Pages 119, 124 Silberschatz & Galvin; Operating Systems Concepts; 1994; Addison-Wesley Publishing Company; Fourth Edition; Pages 147-148 HASKINS J W ET AL INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS: "INEXPENSIVE THROUGHPUT ENHANCEMENT IN SMALL-SCALE EMBEDDED MICROPROCESSORS WITH BLOCK MULTITHREADING: EXTENSIONS, CHARACTERIZATION AND TRADEOFFS" CONFERENCE PROCEEDINGS OF THE 2001 IEEE INTERNATIONAL PERFORMANCE, COMPUTING, AND COMMUNICATIONS CONFERENCE.(IPCCC). PHOENIX, AZ, APRIL 4-6, 2001, IEEE INTERNATIONAL PERFORMANCE, COMPUTING AND COMMUNICATIONS CONFERENCE, NEW YORK, NY: IEEE, US, vol. CONF.20, 4 April 2001(2001-04-04), pages 319-328, XP001049966 ISBN: 0-7803-7001-5 * paragraph[03.1] * * paragraph[03.3]; figure 1 *
概して、一態様では、この明細書は、パイプラインステージを備えるプロセッサを説明する。パイプラインステージは、第1の入力レジスタと、第2の入力レジスタと、第1の出力レジスタと、第2の出力レジスタと、を備える。プロセッサは、第1の入力レジスタ及び第2の入力レジスタと通信する第1のセレクタと、第1の出力レジスタ及び第2の出力レジスタと通信する第2のセレクタと、をさらに備える。プロセッサはまた、第1のプロセッサスレッドに関連したデータが、第1のプロセッサスレッドが処理されている時間の間に、第1の入力レジスタ、パイプラインステージ、及び第1の出力レジスタを通過し、第2のプロセッサスレッドに関連したデータが、第2のプロセッサスレッドが処理されている時間の間に、第2の入力レジスタ、パイプラインステージ、及び第2の出力レジスタを通過するように、第1のセレクタ及び第2のセレクタの切り換えを制御するように動作可能なコントローラと、を含む。第1の入力レジスタ及び第1の出力レジスタは、第1のプロセッサスレッドの状態を記憶するように動作可能であり、第2の入力レジスタ及び第2の出力レジスタは、第2のプロセッサスレッドの状態を記憶するように動作できる。
特定の実施態様は、次の特徴の1つ又は複数を含むことができる。第1のセレクタはマルチプレクサを含むことができ、第2のセレクタはデマルチプレクサを含むことができる。パイプラインステージは、命令フェッチユニット、デコードロジック、発行ロジック、実行ユニット、読み出しロジック、又は書き込みロジックの1つを含むことができる。コントローラは、第1のプロセッサスレッド及び第2のプロセッサスレッドのそれぞれに割り当てられるプロセッサ時間を定義した入力に基づいて、第1のセレクタ及び第2のセレクタの切り換えを制御することができる。コントローラは、プログラムの実行中に動的に、又は、第1のプロセッサスレッド及び第2のプロセッサスレッドのそれぞれについて事前に設定されたプロセッサ時間割り当てに基づいて静的に、第1のセレクタ及び第2のセレクタの切り換えを制御することができる。
プロセッサは、第1のプロセッサスレッドに関連した割り込み要求をハンドリングする第1の割り込みハンドリングルーチンと、第2のプロセッサスレッドに関連した割り込み要求をハンドリングする第2の割り込みハンドリングルーチンと、をさらに備えることができる。第1の割り込みハンドリングルーチン及び第2の割り込みハンドリングルーチンは、別々のエントリーポイントを有することができる。プロセッサは、第1のプロセッサスレッドに関連した例外要求をハンドリングする第1の例外ハンドリングルーチンと、第2のプロセッサスレッドに関連した例外要求をハンドリングする第2の例外ハンドリングルーチンと、をさらに備えることができる。プロセッサは、第1のプロセッサスレッド及び第2のプロセッサスレッドの双方に関連した実質的にすべての例外要求又は実質的にすべての割り込み要求をそれぞれハンドリングする単一の例外ハンドリングルーチン又は単一の割り込みハンドリングルーチンをさらに備えることができる。
プロセッサは、複数のプロセッサスレッドのそれぞれに対応する一組のレジスタをさらに備えることができる。一組の中の各レジスタは、プロセッサのパイプラインステージの前又は後のいずれかに配置されることができる。コントローラは、現在実行中のプロセッサスレッドの状態を対応する一組のレジスタに記憶すること、及び対応する一組のレジスタから別のプロセッサスレッドの状態をロードして、別のプロセッサスレッドの処理を可能にすることを含めて、コンテキストスイッチを複数のプロセッサスレッドの中から実行することができる。
概して、別の態様では、この明細書は、複数のプロセッサスレッドのそれぞれに対応する一組のレジスタを含むプロセッサを説明する。一組の中の各レジスタは、プロセッサのパイプラインステージの前又は後のいずれかに配置される。プロセッサは、現在実行中のプロセッサスレッドの状態を対応する一組のレジスタに記憶すること、及び対応する一組のレジスタから別のプロセッサスレッドの状態をロードして、別のプロセッサスレッドの処理を可能にすることを含む、複数のプロセッサスレッド間でコンテキストスイッチを実行するように動作可能なプログラマブルコントローラをさらに含む。
特定の実施態様は、次の特徴の1つ又は複数を含むことができる。プログラマブルコントローラは、命令サイクルの終了時にコンテキストスイッチを実行することができる。プロセッサは、複数のプロセッサスレッドのそれぞれに対応する複数のバンクを有するレジスタファイルをさらに含むことができる。各バンクは、対応するプロセッサスレッドに関連したデータを記憶することができる。プロセッサは、複数のプログラムカウンタをさらに含むことができ、各プログラムカウンタは、対応するプロセッサスレッドの実行状態を示すように動作できる。プロセッサは、複数のプロセッサスレッドに対応する複数の割り込みハンドリングルーチンをさらに含むことができる。この場合、各割り込みハンドリングルーチンは、対応するプロセッサスレッドに関連した割り込み要求をハンドリングする。複数の割り込みハンドリングルーチンのそれぞれは、別々のエントリーポイントを有することができる。プロセッサは、複数のプロセッサスレッドに対応する複数の例外ハンドリングルーチンをさらに含むことができる。この場合、各例外ハンドリングルーチンは、対応するプロセッサスレッドに関連した例外要求をハンドリングする。プロセッサは、複数のプロセッサスレッドに関連した実質的にすべての例外要求又は実質的にすべての割り込み要求をそれぞれハンドリングする単一の例外ハンドリングルーチン又は単一の割り込みハンドリングルーチンをさらに含むことができる。
概して、別の態様では、この明細書は、命令実行用の第1のプロセッサスレッドを設けること、命令実行用の第2のプロセッサスレッドを設けること、第1のプロセッサスレッドを処理すること、及び第1のプロセッサスレッドから第2のプロセッサスレッドへのコンテキストスイッチを実行すること、を含む方法を説明する。コンテキストスイッチを実行することは、第1のプロセッサスレッドに対応する第1の組のレジスタに第1のプロセッサスレッドの状態を記憶すること、及び第2のプロセッサスレッドに対応する第2の組のレジスタから第2のプロセッサスレッドの状態をロードすること、を含む。
特定の実施態様は、次の特徴の1つ又は複数を含むことができる。対応する一組のレジスタ内に所与のプロセッサスレッドの状態を記憶することは、プロセッサのパイプラインステージに対応するデータを記憶することを含む。この方法は、プロセッサ時間割り当てを変更する入力を受け取ること、変更されたプロセッサ時間割り当てに基づいて、第1のプロセッサスレッド及び第2のプロセッサスレッドの間でコンテキストスイッチを実行すること、をさらに含むことができる。コンテキストスイッチを実行することは、プログラムの実行中に動的に、又は、第1のプロセッサスレッド及び第2のプロセッサスレッドのそれぞれについて事前に設定されたプロセッサ時間割り当てに基づいて静的に、コンテキストスイッチを実行することを含むことができる。この方法は、第1の割り込みハンドリングルーチンを使用することであって、それによって、第1のプロセッサスレッドに関連した割り込み要求をハンドリングする、第1の割り込みハンドリングルーチンを使用すること、及び第2の割り込みハンドリングルーチンを使用することであって、それによって、第2のプロセッサスレッドに関連した割り込み要求をハンドリングする、第2の割り込みハンドリングルーチンを使用すること、をさらに含むことができる。この方法は、第1の例外ハンドリングルーチンを使用することであって、それによって、第1のプロセッサスレッドに関連した例外要求をハンドリングする、第1の例外ハンドリングルーチンを使用すること、及び第2の例外ハンドリングルーチンを使用することであって、それによって、第2のプロセッサスレッドに関連した例外要求をハンドリングする、第2の例外ハンドリングルーチンを使用すること、をさらに含むことができる。この方法は、単一の例外ハンドリングルーチン又は単一の割り込みハンドリングルーチンを使用することであって、それによって、第1のプロセッサスレッド及び第2のプロセッサスレッドに関連した実質的にすべての例外要求及び実質的にすべての割り込み要求をそれぞれハンドリングする、単一の例外ハンドリングルーチン又は単一の割り込みハンドリングルーチンを使用すること、をさらに含むことができる。
概して、別の態様では、この明細書は、複数のプロセッサスレッドに関連した命令をフェッチするように動作可能な命令フェッチユニットと、命令フェッチユニットに応答するデコーダと、デコーダに応答する発行ロジックと、複数のプロセッサスレッドに対応する複数のバンクを含むレジスタファイルと、を備えるプロセッサを説明する。各バンクは、対応するプロセッサスレッドに関連したデータだけを記憶するように動作できる。
特定の実施態様は、次の特徴の1つ又は複数を含むことができる。データは、所与のプロセッサスレッドに関連した、実行された命令のオペランド又は結果を含むことができる。プロセッサは、命令フェッチユニットと通信するコントローラをさらに備えることができる。このコントローラは、次の命令が命令フェッチユニットによってプロセッサスレッドからフェッチされる際のプロセッサスレッドを決定することができる。プロセッサは、複数のプロセッサスレッドのそれぞれに対応する一組のレジスタをさらに備えることができる。一組の中の各レジスタは、プロセッサのパイプラインステージの前又は後のいずれかに配置されることができる。コントローラは、現在実行中のプロセッサスレッドの状態を対応する一組のレジスタに記憶すること、及び対応する一組のレジスタから別のプロセッサスレッドの状態をロードして、別のプロセッサスレッドの処理を可能にすることを含めて、コンテキストスイッチを複数のプロセッサスレッドの中から実行することができる。コントローラは、複数のプロセッサスレッドに対応する複数のスレッド割り当てカウンタを含むことができる。各スレッド割り当てカウンタは、どれだけのプロセッサ時間が各プロセッサスレッド用に割り当てられるかを表す値を含むことができる。コントローラは、命令フェッチユニットと通信するセレクタを切り換えることを含むコンテキストスイッチを実行することができる。セレクタはマルチプレクサ、又はデマルチプレクサを含むことができる。
概して、一態様では、この明細書は、パイプラインステージを通じて命令を実行するための手段を備えるプロセッサを説明する。命令を実行するための手段は、データを記憶するための第1の入力手段と、データを記憶するための第2の入力手段と、データを記憶するための第1の出力手段と、データを記憶するための第2の出力手段とを備える。プロセッサは、データを記憶するための第1の入力手段及びデータを記憶するための第2の入力手段と通信して選択を行うための第1の手段と、データを記憶するための第1の出力手段及びデータを記憶するための第2の出力手段と通信して選択を行うための第2の手段と、をさらに備える。また、プロセッサは、第1のプロセッサスレッドが処理されている時間の間、第1のプロセッサスレッドに関連したデータが、データを記憶するための第1の入力手段と、実行するための手段と、データを記憶するための第1の出力手段とを通過するように、且つ、第2のプロセッサスレッドが処理されている時間の間、第2のプロセッサスレッドに関連したデータが、データを記憶するための第2の入力手段と、実行するための手段と、データを記憶するための第2の出力手段とを通過するように、選択を行う第1の手段及び第2の手段の切り換えを制御するための手段も備える。データを記憶するための第1の入力手段及びデータを記憶するための第1の出力手段は、第1のプロセッサスレッドの状態を記憶するように動作可能であり、データを記憶するための第2の入力手段及びデータを記憶するための第2の出力手段は、第2のプロセッサスレッドの状態を記憶するように動作できる。
概して、別の態様では、この明細書は、複数のプロセッサスレッドのそれぞれに対応するデータを記憶するための手段を備えるプロセッサを説明する。データを記憶するための各手段は、プロセッサのステージ手段の前又は後のいずれかに配置される。プロセッサは、データを記憶するための対応する一組の手段に、現在実行されているプロセッサスレッドの状態を記憶し、且つ、データを記憶するための対応する一組の手段から別のプロセッサスレッドの状態をロードして、当該別のプロセッサスレッドの処理を可能にするための手段を含めて、複数のプロセッサスレッド間でコンテキストスイッチを実行するための手段をさらに備える。
概して、別の態様では、この明細書は、複数のプロセッサスレッドに関連した命令をフェッチするための手段と、フェッチされた命令をデコードするための手段と、デコードされた命令を発行するための手段と、対応するプロセッサスレッドに関連したデータを、記憶するための対応する手段内に記憶するための手段とを含むプロセッサを説明する。
特定の実施態様は、次の特徴の1つ又は複数を含むことができる。データは、所与のプロセッサスレッドに関連した、実行された命令のオペランド又は結果を含むことができる。プロセッサは、次の命令がプロセッサスレッドからフェッチされる際の当該プロセッサスレッドを決定するための手段をさらに備えることができる。プロセッサは、複数のプロセッサスレッドのそれぞれに対応するデータを記憶するための手段をさらに備えることができる。データを記憶するための各手段は、プロセッサのステージ手段の前又は後のいずれかに配置することができる。プロセッサは、データを記憶するための対応する手段に、現在実行されているプロセッサスレッドの状態を記憶し、且つ、データを記憶するための対応する手段から別のプロセッサスレッドの状態をロードして、当該別のプロセッサスレッドの処理を可能にするための手段を含めて、複数のプロセッサスレッド間でコンテキストスイッチを実行するための手段を備えることができる。
コンテキストスイッチを実行するための手段は、どれだけのプロセッサ時間が各プロセッサスレッド用に割り当てられるかを表す値を記憶するための手段を備えることができる。コンテキストスイッチを実行するための手段は、フェッチするための手段と通信するセレクタを切り換えるための手段を備えることができる。
実施態様は、次の利点の1つ又は複数を含むことができる。ハードウェア割り込み、たとえば割り込みサービスルーチン、に関連した割り込みオーバーヘッドが何らなく、コンテキストスイッチを実行するパイプラインプロセッサが提供される。一実施態様では、コンテキストスイッチは、自動的に行われ、主としてハードウェアを通じて、たとえばプログラマブルスレッド割り当てコントローラを使用して行われる。一実施態様では、パイプラインプロセッサは、第1のプロセッサスレッドの状態を、パイプラインプロセッサの各パイプラインステージ間に配置された第1の組のレジスタに保存し、同様にパイプラインプロセッサの各パイプラインステージ間に配置された第2の組のレジスタから第2のプロセッサスレッドの状態をロードする。このレジスタの配置によって、高速のコンテキストスイッチ時間が可能になる。
ユーザ、たとえばネットワークアドミニストレータは、各プロセッサスレッドにどれだけのプロセッサ時間を割り当てるかをカスタマイズすることができる。一実施態様では、初期プロセッサ時間割り当てが設定された後、ユーザは、プロセッサ時間割り当てをさらに動的に変更することができる。ユーザは、オペレーティングシステムに対する制御を放棄するのではなく、プロセッサ時間割り当ての全制御を保有することができる。
1つ又は複数の実施態様の詳細は、添付図面及び以下の説明に述べられている。他の特徴及び利点は、これらの説明及び図面、並びに特許請求の範囲から明らかになる。
さまざまな図面における同じ参照シンボルは、同じ要素を示す。
図1は、2つ又は3つ以上のプロセッサスレッドT1、T2、…Tnを処理するように動作可能なパイプラインプロセッサアーキテクチャ100のブロック図である。プロセッサスレッドT1、T2、…Tnは、それぞれ、対応するソフトウェアプログラムの実行を追跡する、パイプラインプロセッサアーキテクチャ100内のアーキテクチャ状態を表す。ソフトウェアプログラムの命令は、たとえば、命令キャッシュ(たとえば、命令キャッシュ102)から取り出すことができる。一実施態様では、パイプラインプロセッサアーキテクチャ100は、2つ又は3つ以上のプログラムカウンタ(図示せず)を含む。これらのプログラムカウンタのそれぞれは、プロセッサスレッドT1、T2、…Tnに対応する。各プログラムカウンタは、(対応するプロセッサスレッドT1、T2、…Tnについて)パイプラインプロセッサアーキテクチャ100が、命令シーケンスに関してどこにいるかを示す。プログラムカウンタは、図3及び図5に関連して以下でより詳細に解説する。
一実施態様では、パイプラインプロセッサアーキテクチャ100は、6つのパイプラインステージを含む。これら6つのパイプラインステージは、命令フェッチステージ(IF)、命令デコードステージ(ID)、命令発行ステージ(IS)、命令実行ステージ(EX)、データメモリ読み出しステージ(MEM)、及びライトバックステージ(WB)を含む。しかしながら、パイプラインプロセッサアーキテクチャ100は、異なる個数のパイプラインステージを含むこともできる。さらに、パイプラインプロセッサアーキテクチャ100は、命令フェッチユニット(IFU)104,デコードロジック106、発行ロジック108、レジスタファイル110、実行ユニット112、読み出しロジック114、書き込みロジック116、及びプログラマブルスレッド割り当てコントローラ118を含む。
命令フェッチユニット104は、たとえば命令キャッシュ102からプログラム命令を取り出す。デコードロジック106は、プログラム命令をデコードし、実行ユニット112によって実行されるデコードされた命令を生成する。一実施態様では、デコードされた命令は、固定長のマイクロオペレーション命令である。発行ロジック108は、実行のために実行ユニット112へデコードされた命令を発行する。実行ユニット112は、代理人整理番号第MP0634/13361−140001号のホン・イ・チェン(Hong-yi Chen)及びジェンセン・テン(Jensen Tjeng)による「Variable Length Pipeline Processor Architecture」という発明の名称の米国特許出願に記載されているようなロード実行ユニット、ストア実行ユニット、算術論理演算ユニット(ALU)、積和演算(MAC)ユニット、又はロード/ストア複合実行ユニットとすることができる。この米国特許出願は、その全内容が参照により援用される。読み出しロジック114は、たとえばデータキャッシュ(図示せず)からデータを読み出す。書き込みロジック116は、実行された命令の結果を、たとえば、データキャッシュ、レジスタファイル110、又はリオーダバッファ(図示せず)にライトバックする。
レジスタファイル110は、各プロセッサスレッドT1、T2、…Tnに関連したデータを記憶する。一実施態様では、レジスタファイル110は、対応するプロセッサスレッドT1、T2、…Tnに関連したデータを記憶する別々のバンク(たとえば、バンクT1、T2、…Tn)を含む。たとえば、書き込みロジック116が、プロセッサスレッドT2に関連したデータをレジスタファイル110にライトバックしている場合、書き込みロジック116は、そのデータをレジスタファイル110のバンクT2に書き込む。或いは、各プロセッサスレッドT1、T2、…Tnに対応するデータを記憶するための別個のレジスタファイル(図示せず)をパイプラインプロセッサアーキテクチャ100内に実施することもできる。
プログラマブルスレッド割り当てコントローラ118は、各プロセッサスレッドT1、T2、…Tnについて定義されているプロセッサ時間割り当て、すなわち、プロセッサ時間のどの部分が、各プロセッサスレッドT1、T2、…Tnに専用化されるか、を記憶するようにプログラミングすることができる。一実施態様では、複数のプロセッサスレッド(たとえば、プロセッサスレッドT1、T2、…Tn)のそれぞれに割り当てられるプロセッサ時間の部分を定義した、たとえばユーザからの入力が、グラフィカルユーザインターフェース(図示せず)を通じて受け取られる。たとえば、ユーザは、デュアルスレッドパイプラインプロセッサの場合、第1のプロセッサスレッドにプロセッサ時間の95%を割り当て、第2のプロセッサスレッドに5%を割り当てることができる。一実施態様では、各プロセッサスレッド(たとえば、プロセッサスレッドT1、T2、…Tn)について定義されたプロセッサ時間割り当ては、ユーザ又は好ましくはソフトウェアプログラム(たとえば、実行されるソフトウェアプログラム)が動的に変更することができる。すなわち、プログラム実行中に変更することができる。或いは、各プロセッサスレッドのプロセッサ時間割り当ては、静的に設定することもできる。すなわち、プログラム実行中に変更することができない。
一実施態様では、プログラマブルスレッド割り当てコントローラ118は、次の命令が(たとえば、命令フェッチユニット104によって)プロセッサスレッドからフェッチされる際のプロセッサスレッドを決定することによって、コンテキストスイッチを自動的に実行する。一実施態様では、プログラマブルスレッド割り当てコントローラ118は、命令フェッチユニット104と通信する1つ又は複数のセレクタを切り換えることによってコンテキストスイッチを実行する。このセレクタは、たとえば、マルチプレクサ及び/又はデマルチプレクサ(図示せず)である。コンテキストスイッチを実行するマルチプレクサ及びデマルチプレクサを含むプロセッサの一実施態様は、図3、図4、及び図5に関連して以下で解説する。コンテキストスイッチが行われると、次のプロセッサスレッドに関連した命令が、命令フェッチユニット104によってフェッチされる。パイプラインプロセッサアーキテクチャ100のパイプラインステージ(たとえば、パイプラインステージIF、ID、IS、EX、MEM、WB)は、2つ又は3つ以上のプロセッサスレッドに関連した命令を含むことができるが、各所与のプロセッサスレッドに関連したデータは、レジスタファイル110を通じて個別に保持され、したがって、各プロセッサスレッドに関連したデータの完全性が維持される。割り込みサービスルーチンを必要とする場合がある従来のパイプラインプロセッサと異なり、プログラマブルスレッド割り当てコントローラ118は、コンテキストスイッチを実行することに関連した割り込みオーバーヘッドを何ら有しない。
図2は、パイプラインプロセッサアーキテクチャ(たとえば、パイプラインプロセッサアーキテクチャ100)を通じてプロセッサスレッドを処理するための方法200を示している。複数のプロセッサスレッドのそれぞれに割り当てられるプロセッサ時間の一部を定義した入力が受け取られる(ステップ202)。一実施態様では、入力割り当てが、グラフィカルユーザインターフェースを通じてユーザから受け取られる。各プロセッサスレッドに割り当てられたプロセッサ時間は、プログラマブルスレッド割り当てコントローラ(たとえば、プログラマブルスレッド割り当てコントローラ118)に記憶することができる。一実施態様では、プロセッサ時間は、CPU(中央処理装置)サイクル、クロックサイクル、及び/又は命令サイクルに基づいて割り当てられる。
各スレッドは、各スレッドに割り当てられたプロセッサ時間に従ってパイプラインプロセッサにより処理される(ステップ204)。一実施態様では、コンテキストスイッチは、プログラマブルスレッド割り当てコントローラに記憶された、各スレッドに割り当てられたプロセッサ時間に従って自動的に行われる。一実施態様では、プログラマブルスレッド割り当てコントローラは、命令フェッチユニット(たとえば、命令フェッチユニット104)と通信する1つ又は複数のマルチプレクサ及び/又はデマルチプレクサの切り換えを制御する。一実施態様では、以下でより詳細に解説するように、プログラマブルスレッド割り当てコントローラは、パイプラインプロセッサの各パイプラインステージの前後に配置された1つ又は複数のマルチプレクサ及び/又はデマルチプレクサの切り換えを制御して、コンテキストスイッチを実行する。この実施態様では、プロセッサスレッドの状態は、パイプラインプロセッサの各パイプラインステージの前後に配置されたレジスタに記憶され、これらのレジスタからロードされる。一実施態様では、コンテキストスイッチは、所与の命令サイクルの終了時に行われる。
プロセッサ時間割り当てを動的に変更する入力が受け取られたかどうかの判断が(たとえば、プログラマブルスレッド割り当てコントローラ118を通じて)行われる(ステップ206)。各プロセッサスレッドに割り当てられたプロセッサ時間が動的に変更されていない場合、各プロセッサスレッドは、前に設定されたプロセッサ時間割り当てに従って処理され、方法200はステップ204に戻る。プロセッサ時間割り当てが動的に変更されている場合、各プロセッサスレッドは、変更されたプロセッサ時間割り当てに従って処理される(ステップ208)。ステップ208の後、方法200は、上記で解説したステップ206に戻る。
図3は、(n個の)プロセッサスレッドT1、T2、…Tnを処理するパイプラインプロセッサアーキテクチャ100に従って構築されたパイプラインプロセッサ300のブロック図を示している。一実施態様では、パイプラインプロセッサ300は、命令フェッチユニット304、デコーダ306、レジスタファイル308、発行ロジック310、2ステージ実行ユニット312、リオーダバッファ314、及びプログラマブルスレッド割り当てコントローラ316を含む。さらに、パイプラインプロセッサ300は、プロセッサスレッドT1、T2、…Tnにそれぞれ対応するレジスタT1〜Tn及びプログラムカウンタT1〜Tnを含む。さらに、パイプラインプロセッサ300はマルチプレクサ350を含む。
一実施態様では、命令フェッチ(IF)ステージの期間中に、命令フェッチユニット304は、実行される命令を、たとえば命令キャッシュ302から取り出す。命令フェッチユニット304は、プログラムカウンタT1、T2、…Tnに従って命令を取り出す。一実施態様では、プログラムカウンタT1は、プロセッサスレッドT1の実行ステータス(すなわち、パイプラインプロセッサ300が、プロセッサスレッドT1に関連した命令シーケンスに関してどこにいるか)を示し、プログラムカウンタT2は、プロセッサスレッドT2に関連した実行ステータスを示し、プログラムカウンタTnは、プロセッサスレッドTnに関連した実行ステータスを示す。
命令デコードステージ(ID)の期間中、命令フェッチユニット304によって取り出された命令がデコードされる。
命令発行ステージ(IS)の期間中、一実施態様では、デコードされた命令が、(発行ロジック310を通じて)リオーダバッファ314へ送られる。リオーダバッファ314は、デコードされた命令が実行のために発行されるまで、デコードされた命令を記憶する。一実施態様では、リオーダバッファ314は循環バッファである。
また、リオーダバッファ314は、実行された命令を、たとえばレジスタファイル308内に回収する準備ができるまで、実行された命令の結果も記憶する。一実施態様では、レジスタファイル308は、プロセッサ300によって処理された各プロセッサスレッド(たとえば、プロセッサスレッドT1、T2、…Tn)に対応するバンク(たとえば、バンクT1、T2、…Tn)を含む。バンクT1は、プロセッサスレッドT1に関連したデータを保持し、バンクT2は、プロセッサスレッドT2に関連したデータを保持し、バンクTnは、プロセッサスレッドTnに関連したデータを保持する。これらのデータは、所与のプロセッサスレッドに関連した、実行された命令のオペランド及び/又は結果を含むことができる。一実施態様では、パイプラインプロセッサ300は、リオーダバッファ314を含まない。
実行ステージEX1、EX2の期間中、実行ユニット312は、デコードされて発行ロジック310から発行された命令を実行する。実行ユニット312は、上記で解説したように、あらゆるタイプの実行ユニットとすることができる。実行ユニット312は2つのパイプラインステージを有するものとして示されているが、実行ユニット312は、異なる個数のパイプラインステージを有することもできる。一実施態様では、実行された命令の結果は、リオーダバッファ314にライトバックされ、次いで、レジスタファイル308に回収される。
プログラマブルスレッド割り当てコントローラ316は、各プロセッサスレッドT1、T2、…Tnのプロセッサ時間割り当て、すなわち、どれだけのプロセッサ時間が各プロセッサスレッドT1、T2、…Tnに専用化されるか、を記憶するプログラミングを受けるように動作できる。一実施態様では、プロセッサ時間の一部を各プロセッサスレッドT1、T2、…Tnに割り当てる、たとえばユーザからの入力が、グラフィカルユーザインターフェース(図示せず)を通じて受け取られる。一実施態様では、各プロセッサスレッドT1、T2、…Tnのプロセッサ時間割り当ては、ユーザが動的に変更することができる。一実施態様では、各プロセッサスレッドT1、T2、…Tnのプロセッサ時間割り当ては、プロセッサ300によって処理されているソフトウェアアプリケーションを通じて動的に変更される。
一実施態様では、プログラマブルスレッド割り当てコントローラ316は、命令フェッチユニット304と通信するマルチプレクサ350を切り換えることにより、プロセッサスレッドT1、T2、…Tn間でコンテキストスイッチを自動的に実行する。たとえば、パイプラインプロセッサ300がプロセッサスレッドT1を処理している時間の間、マルチプレクサ350は、プロセッサスレッドT1に関連した命令がパイプラインプロセッサ300のパイプラインステージを通過するように制御される。コンテキストスイッチがプロセッサスレッドT1から行われると、マルチプレクサ350は、別のプロセッサスレッド、たとえばプロセッサスレッドT2、に関連した命令が通過するように制御される。一実施態様では、マルチプレクサ350は、n対1マルチプレクサである。
一実施態様では、プログラマブルスレッド割り当てコントローラ316は、各プロセッサスレッドに割り当てられたプロセッサ時間に対応する重みを決定する複数のスレッド割り当てカウンタ(たとえば、スレッド割り当てカウンタT1〜Tn)を含む。たとえば、一実施態様では、スレッド割り当てカウンタT1〜Tnのそれぞれは、いくつのCPUサイクルが各スレッドについて割り当てられているかを表す値を含む。たとえば、スレッド割り当てカウンタT1が256の値を含み、スレッド割り当てカウンタT2が16の値を含み、且つ、スレッド割り当てカウンタTnが0の値を含む場合、命令は、まず、256個のCPUサイクルの間、プロセッサスレッドT1からフェッチされ、次に、命令は、16個のCPUサイクルの間、プロセッサスレッドT2からフェッチされ、プロセッサスレッドTnからは、0個の命令がフェッチされる。次に、命令は、別の256個のCPUサイクル及び16個のCPUサイクルの間、再び、それぞれプロセッサスレッドT1及びT2からフェッチされる。以下、同様に繰り返される。命令フェッチは、スレッド割り当てカウンタの1つ又は複数の値が変更されるまで、それに応じて継続することができる。各スレッド割り当てカウンタT1〜Tnが0の値に達すると、プログラマブルスレッド割り当てカウンタ316は、マルチプレクサ350を切り換えて、次のプロセッサスレッドに関連した命令を、処理のために命令フェッチユニット304に渡す。
図4は、2つ又は3つ以上のプロセッサスレッドT1、T2、…Tnを処理するように動作可能なパイプラインプロセッサアーキテクチャ400のブロック図である。プロセッサスレッドT1、T2、…Tnに関連した命令は、たとえば、命令キャッシュ(たとえば、命令キャッシュ402)から取り出すことができる。
一実施態様では、パイプラインプロセッサアーキテクチャ400は、6つのパイプラインステージを含む。これら6つのパイプラインステージは、命令フェッチステージ(IF)、命令デコードステージ(ID)、命令発行ステージ(IS)、命令実行ステージ(EX)、データメモリ読み出しステージ(MEM)、及びライトバックステージ(WB)を含む。しかしながら、パイプラインプロセッサアーキテクチャ400は、異なる個数のパイプラインステージを含むこともできる。さらに、パイプラインプロセッサアーキテクチャ400は、命令フェッチユニット(IFU)404,デコードロジック406、発行ロジック408、実行ユニット410、読み出しロジック412、書き込みロジック414、及びプログラマブルスレッド割り当てコントローラ416を含む。パイプラインプロセッサアーキテクチャ400は、図1のパイプラインプロセッサアーキテクチャと類似している。しかしながら、パイプラインプロセッサアーキテクチャ400は、さらに、1組のレジスタ(たとえば、レジスタA1〜A7、B1〜B7、N1〜N7)を含む。これらのレジスタは、各パイプラインステージ間(各ステージの前に1つ及び後に1つ)に配置され、コンテキストスイッチの期間中、対応するプロセッサスレッドT1、T2、…Tnの状態を記憶する。
レジスタA1〜A7は、プロセッサスレッドT1の状態を記憶する。同様にして、レジスタB1〜B7は、プロセッサスレッドT2の状態を記憶し、レジスタN1〜N7は、プロセッサスレッドTnの状態を記憶する。一実施態様では、各レジスタA1〜A7、B1〜B7、N1〜N7は、所与の命令サイクルの終了時にパイプラインプロセッサアーキテクチャ400の対応するパイプラインステージによって生成されたデータの状態を記憶することを含めて、対応するプロセッサスレッドの状態を記憶する。たとえば、プロセッサスレッドT1に関連した命令を処理する時、命令サイクルの終了時に、レジスタA3は、デコードロジック406から受け取ったプロセッサスレッドT1のデータの状態を記憶することができ、レジスタA5は、実行ユニット410から受け取ったデータの状態を記憶することができる。レジスタA1〜A7、B1〜B7、N1〜N7は、対応するプロセッサスレッドの状態を所与のレジスタから直接ロードする(又は、所与のレジスタへ直接記憶する)ことを可能にするという点でコンテキストスイッチを容易にする。一実施態様では、各一組のレジスタA1〜A7、B1〜B7、N1〜N7は、パイプラインプロセッサアーキテクチャ400内の機能ユニットの比較的近くに(たとえば、各パイプラインステージの間に)配置され、高速のコンテキストスイッチ時間が可能にされる。
一実施態様では、プログラマブルスレッド割り当てコントローラ416は、各パイプラインステージ(たとえば、パイプラインステージIF、ID、IS、EX、MEM、WB)の前又は後に配置された1つ又は複数のマルチプレクサ及び/又はデマルチプレクサ(図示せず)を切り換えることによって、コンテキストスイッチを自動的に実行する。コンテキストスイッチを実行する、マルチプレクサ及びデマルチプレクサを含むプロセッサの一実施態様は、図5に関連して以下で解説する。コンテキストスイッチが行われる場合、コンテキストスイッチを行う予定の現在のプロセッサスレッド(たとえば、プロセッサスレッドT1)に関連した一組のレジスタ(たとえば、レジスタA1〜A7)は、現在のプロセッサスレッドの状態を記憶する。コンテキストスイッチを完了するために、次のプロセッサスレッド(たとえば、プロセッサスレッドT2)の状態が、次のプロセッサスレッドに関連した異なる一組のレジスタ(たとえば、レジスタB1〜B7)からロードされる。パイプラインプロセッサは、続く命令サイクルで次のプロセッサスレッドを処理する。一実施態様では、コンテキストスイッチは、命令サイクルの終了時に行われ(すなわち、パイプラインステージからのデータが、関連したレジスタに保存された後)、シームレスなコンテキストスイッチが可能にされる。
図5は、2つのスレッドT1、T2を処理するパイプラインプロセッサアーキテクチャ400に関連して構築されたパイプラインプロセッサ500のブロック図である。一実施態様では、パイプラインプロセッサ500は、命令フェッチユニット504,デコーダ506、レジスタファイル508、発行ロジック510、2ステージ実行ユニット512、リオーダバッファ514、及びプログラマブルスレッド割り当てコントローラ516を含む。さらに、パイプラインプロセッサ500は、プロセッサスレッドT1に対応する第1の組のレジスタA1〜A6、及び、プロセッサスレッドT2に対応する第2の組のレジスタB1〜B6を含む。さらに、パイプラインプロセッサ500は、プログラムカウンタT1、T2、マルチプレクサ550、及びデマルチプレクサ552を含む。
一実施態様では、命令フェッチ(IF)ステージの期間中、命令フェッチユニット504は、実行される命令を、たとえば命令キャッシュ502から取り出す。命令フェッチユニット504は、プログラムカウンタT1、T2に従って命令を取り出す。一実施態様では、プログラムカウンタT1は、プロセッサスレッドT1の実行ステータス(すなわち、パイプラインプロセッサ500が、プロセッサスレッドT1に関連した命令シーケンスに関してどこにいるか)を示し、プログラムカウンタT2は、プロセッサスレッドT2に関連した実行ステータスを示す。
命令デコードステージ(ID)の期間中、命令フェッチユニット504によって取り出された命令がデコードされる。
命令発行ステージ(IS)の期間中、一実施態様では、デコードされた命令が、(発行ロジック510を通じて)リオーダバッファ514へ送られる。リオーダバッファ514は、デコードされた命令が実行のために発行されるまで、デコードされた命令を記憶する。一実施態様では、リオーダバッファ514は循環バッファである。
また、リオーダバッファ514は、実行された命令を、たとえばレジスタファイル508内に回収する準備ができるまで、実行された命令の結果も記憶する。一実施態様では、レジスタファイル508は、2つのバンクT1、T2を含む。バンクT1は、プロセッサスレッドT1に関連したデータを保持し、バンクT2は、プロセッサスレッドT2に関連したデータを保持する。レジスタファイル508は、データがレジスタからロードされる際の当該レジスタを示すスレッドインデックス(図示せず)を含むことができる。スレッドインデックスによって、現在実行中のプロセッサスレッドに関連したレジスタからのデータは、レジスタファイル508に確実にロードされる。
実行ステージEX1、EX2の期間中、実行ユニット512は、デコードされて発行ロジック510から発行された命令を実行する。実行ユニット512は、上記で解説したように、あらゆるタイプの実行ユニットとすることができる。実行ユニット512は2つのパイプラインステージを有するものとして示されているが、実行ユニット512は、異なる個数のパイプラインステージを有することもできる。一実施態様では、実行された命令の結果は、リオーダバッファ514にライトバックされ、次いで、レジスタファイル508に回収される。
プログラマブルスレッド割り当てコントローラ516は、各プロセッサスレッドT1、T2のプロセッサ時間割り当てを記憶するプログラミングを受けるように動作できる。一実施態様では、プログラマブルスレッド割り当てコントローラ516は、パイプラインプロセッサ500の各パイプラインステージ(たとえば、パイプラインステージIF、ID、IS、EX1、EX2)の前後にそれぞれ配置されたマルチプレクサ550及びデマルチプレクサ552を切り換えることによって、プロセッサスレッドT1、T2間のコンテキストスイッチを自動的に実行する。たとえば、パイプラインプロセッサ500がプロセッサスレッドT1を処理している時間の間、マルチプレクサ550及びデマルチプレクサ552は、プロセッサスレッドT1に関連した命令が(パイプラインプロセッサ500のパイプラインステージを)通過するように制御される。プロセッサスレッドT2の状態情報は、レジスタB1〜B6に記憶される。コンテキストスイッチがプロセッサスレッドT1から行われると、レジスタA1〜A6は、プロセッサスレッドT1の状態を記憶し、プロセッサスレッドT2の状態が、レジスタB1〜B6から(マルチプレクサ550及びデマルチプレクサ552に通じて)ロードされて、パイプラインプロセッサ500によって処理される。一実施態様では、マルチプレクサ550のそれぞれは2対1マルチプレクサであり、デマルチプレクサ552のそれぞれは1対2デマルチプレクサである。
<例外ハンドリング>
パイプラインプロセッサアーキテクチャ100、400に従って構築されたプロセッサ(たとえば、プロセッサ300、500)が例外を検出すると、通常の命令実行シーケンスは一時停止する。例外は、通常のプログラム実行の一時停止を引き起こすイベントである。例外のタイプには、たとえば、アドレス指定例外、データ例外、オペレーション例外、オーバーフロー例外、保護例外、アンダーフロー例外等が含まれる。例外は、ハードウェアによって生成される場合もあるし、ソフトウェアによって生成される場合もある。
図6は、パイプラインプロセッサアーキテクチャ100、400に従って実施されたプロセッサで例外ハンドリングを実行するための方法を示している。所与のスレッドの命令iが実行されている間に、例外要求が発生する(ステップ602)。各プロセッサスレッドに関連したプログラムカウンタ値が、プロセッサのパイプライン内の現在の命令の状態と共に保存される(ステップ604)。一実施態様では、プロセッサのパイプライン内のすべての命令がアボート又はフラッシュされる。プロセッサは、所与のスレッドに関連した例外ハンドリングルーチンにジャンプする(ステップ606)。一実施態様では、各プロセッサスレッドは、他のプロセッサスレッドに関連した例外ハンドリングルーチンとは別で且つ独立の関連した例外ハンドリングルーチンを有する。一実施態様では、単一の例外ハンドリングルーチンが、実質的にすべてのプロセッサスレッドの例外要求を実行する。
例外要求は、所与の例外ハンドリングルーチンによって実行される(ステップ608)。例外要求がプロセッサによって実行された後、プログラムカウンタ値は、プロセッサのプログラムカウンタ内に復元され、(例外要求前の)命令の状態は、プロセッサのパイプライン内に復元される(ステップ610)。プロセッサは、例外ハンドリングルーチンから復帰した後、次の命令(たとえば、命令i+1)のプログラム実行を再開する(ステップ612)。ステップ612では、命令が再実行される場合、プロセッサは、命令iでプログラム命令を再開することができる。
<割り込みハンドリング>
パイプラインプロセッサアーキテクチャ100、400に従って実施されたプロセッサ内の割り込みも、例外と同様にハンドリングされる。図7は、パイプラインプロセッサアーキテクチャ100、400に従って実施されたプロセッサで割り込みをハンドリングするための方法を示している。
所与のスレッドの命令iが実行されている間に、割り込みが発生する(ステップ702)。各プロセッサスレッドに関連したプログラムカウンタ値が、そのプロセッサのパイプライン内の現在の命令の状態と共に保存される(ステップ704)。プロセッサは、所与のスレッドに関連した割り込みハンドリングルーチンにジャンプする(ステップ706)。一実施態様では、各プロセッサスレッドは、他のプロセッサスレッドに関連した割り込みハンドリングルーチンに関連したエントリーポイントとは別で且つ独立のエントリーポイントを有する、関連した割り込みハンドリングルーチンを有する。エントリーポイントは、割り込みハンドリングルーチンの開始アドレスである。一実施態様では、単一の割り込みハンドリングルーチン(単一のエントリーポイントを有する)が、実質的にすべてのプロセッサスレッドの割り込みを実行する。
割り込みは、所与の割り込みハンドリングルーチンによって実行される(ステップ708)。割り込みがプロセッサによって実行された後、プログラムカウンタ値は、プロセッサのプログラムカウンタ内に復元され、(割り込み要求前の)命令の状態は、プロセッサのパイプライン内に復元される(ステップ710)。プロセッサは、割り込みハンドリングルーチンから復帰した後、次の命令(たとえば、命令i+1)のプログラム実行を再開する(ステップ712)。
パイプラインプロセッサアーキテクチャ100、400に従って構築されたパイプラインプロセッサは、広範囲の用途に使用することができる。用途の例には、データストレージの用途、無線の用途、及びコンピュータシステムの用途が含まれる。
複数の実施態様を説明してきた。それにもかかわらず、この発明の趣旨及び範囲から逸脱することなく、さまざまな変更を行えることが理解されよう。たとえば、上述した方法のステップは、異なる順序で実行することができ、それでも依然として望ましい結果を達成することができる。したがって、他の実施態様も、添付の特許請求の範囲の範囲内にある。
パイプラインプロセッサアーキテクチャのブロック図である。 図1のパイプラインプロセッサアーキテクチャのオペレーションの方法である。 図1のパイプラインプロセッサアーキテクチャによるパイプラインプロセッサのブロック図である。 パイプラインプロセッサアーキテクチャのブロック図である。 図4のパイプラインプロセッサアーキテクチャによるパイプラインプロセッサのブロック図である。 図1及び図4のパイプラインプロセッサアーキテクチャで例外ハンドリングを実行する方法である。 図1及び図4のパイプラインプロセッサアーキテクチャで割り込みハンドリングを実行する方法である。

Claims (12)

  1. パイプラインステージであり、
    第1の入力レジスタと、
    第2の入力レジスタと、
    第1の出力レジスタと、
    第2の出力レジスタと、
    前記第1の入力レジスタ及び前記第2の入力レジスタと通信する第1のセレクタと、
    前記第1の出力レジスタ及び前記第2の出力レジスタと通信する第2のセレクタと、
    第1のプロセッサスレッドに関連したデータが、該第1のプロセッサスレッドが処理されている時間の間に、前記第1の入力レジスタ、該パイプラインステージに含まれる各ステージ、及び前記第1の出力レジスタを通過し、第2のプロセッサスレッドに関連したデータが、該第2のプロセッサスレッドが処理されている時間の間に、前記第2の入力レジスタ、該パイプラインステージに含まれる各ステージ、及び前記第2の出力レジスタを通過するように、前記第1のセレクタ及び前記第2のセレクタの切り換えを制御するように動作可能なコントローラと、
    を含む該パイプラインステージ、
    を備え、
    前記第1の入力レジスタ及び前記第1の出力レジスタは、前記第1のプロセッサスレッドの状態を記憶するように動作可能であり、前記第2の入力レジスタ及び前記第2の出力レジスタは、前記第2のプロセッサスレッドの状態を記憶するように動作でき、
    前記コントローラは、前記第1のプロセッサスレッド及び前記第2のプロセッサスレッドのそれぞれに割り当てられるプロセッサ時間を動的に変更するように動作可能なプログラマブルスレッド割り当てコントローラを備え、
    前記プログラマブルスレッド割り当てコントローラは、
    前記第1のプロセッサスレッドに割り当てられたプロセッサ時間に対応する重みを決定する第1のスレッド割り当てカウンタと、
    前記第2のプロセッサスレッドに割り当てられたプロセッサ時間に対応する重みを決定する第2のスレッド割り当てカウンタと
    を有する、プロセッサ。
  2. 前記プログラマブルスレッド割り当てコントローラは、前記第1及び第2のスレッド割り当てカウンタのそれぞれが0の値に達すると、処理されるプロセッサスレッドを前記第1及び第2のプロセッサスレッドの一方から前記第1及び第2のプロセッサスレッドの他方へ切り替える
    請求項1に記載のプロセッサ。
  3. プロセッサ時間割り当てを変更する入力を受け取ることと、
    前記受け取った入力に基づき、第1のスレッド割り当てカウンタに保持される第1のプロセッサスレッドに割り当てられたプロセッサ時間を表す値を変更するか、または、第2のスレッド割り当てカウンタに保持される第2のプロセッサスレッドに割り当てられたプロセッサ時間を表す値を変更することと、
    第1のスレッド割り当てカウンタ及び第2のスレッド割り当てカウンタに基づいて第1のプロセッサスレッド及び第2のプロセッサスレッドの間でパイプラインステージにおける実行に関してコンテキストスイッチを実行することとを含み、
    前記パイプラインステージは、第1の入力レジスタと、第2の入力レジスタと、第1の出力レジスタと、第2の出力レジスタと、第1の入力レジスタ及び第2の入力レジスタと通信する第1のセレクタと、第1の出力レジスタ及び第2の出力レジスタと通信する第2のセレクタとを備え、第1のプロセッサスレッドが該パイプラインステージにおいて実行される際には、第1のプロセッサスレッドに関連したデータが、第1の入力レジスタ、パイプラインステージにおける各ステージ、及び、第1の出力レジスタを通過するものであり、第2のプロセッサスレッドが該パイプラインステージにおいて実行される際には、第2のプロセッサスレッドに関連したデータが、第2の入力レジスタ、パイプラインステージにおける各ステージ、及び、第2の出力レジスタを通過するものであり、
    前記コンテキストスイッチを実行することは、第1のセレクタと第2のセレクタの切り換えを制御することにより行われる、方法。
  4. 前記コンテキストスイッチを実行することは、前記第1及び第2のスレッド割り当てカウンタのそれぞれが0の値に達したときにコンテキストスイッチを実行する、
    請求項3に記載の方法。
  5. 前記プログラマブルスレッド割り当てコントローラは、前記第1のプロセッサスレッド及び前記第2のプロセッサスレッドのそれぞれに割り当てられるプロセッサ時間を、プログラム実行中に変更する、
    請求項1または請求項2に記載のプロセッサ。
  6. 前記プログラマブルスレッド割り当てコントローラは、プロセッサ時間の割り当てを動的に変更する入力が受け取られたかどうかを判断する、
    請求項1、2、5のいずれかに記載のプロセッサ。
  7. 割り当てられるプロセッサ時間は、前記プロセッサのユーザにより変更される、
    請求項1、2、5、6のいずれかに記載のプロセッサ。
  8. 割り当てられるプロセッサ時間は、前記プロセッサ上で実行されるプログラムにより変更される、
    請求項1、2、5、6のいずれかに記載のプロセッサ。
  9. 前記第1のプロセッサスレッド及び前記第2のプロセッサスレッドのそれぞれに割り当てられるプロセッサ時間を、プログラム実行中に変更することを更に含む、
    請求項3または請求項4に記載の方法。
  10. プロセッサ時間の割り当てを動的に変更する入力が受け取られたかどうかを判断することを更に含む、
    請求項3、4、9のいずれかに記載の方法。
  11. 割り当てられるプロセッサ時間は、前記プロセッサのユーザにより変更される、
    請求項3、4、9、10のいずれかに記載の方法。
  12. 割り当てられるプロセッサ時間は、前記プロセッサ上で実行されるプログラムにより変更される、
    請求項3、4、9、10のいずれかに記載の方法。
JP2007242577A 2005-03-18 2007-09-19 デュアルスレッドプロセッサ Expired - Fee Related JP4610593B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/084,364 US8195922B2 (en) 2005-03-18 2005-03-18 System for dynamically allocating processing time to multiple threads

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2006071828A Division JP2006260571A (ja) 2005-03-18 2006-03-15 デュアルスレッドプロセッサ

Publications (2)

Publication Number Publication Date
JP2008047145A JP2008047145A (ja) 2008-02-28
JP4610593B2 true JP4610593B2 (ja) 2011-01-12

Family

ID=36577509

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006071828A Pending JP2006260571A (ja) 2005-03-18 2006-03-15 デュアルスレッドプロセッサ
JP2007242577A Expired - Fee Related JP4610593B2 (ja) 2005-03-18 2007-09-19 デュアルスレッドプロセッサ

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2006071828A Pending JP2006260571A (ja) 2005-03-18 2006-03-15 デュアルスレッドプロセッサ

Country Status (6)

Country Link
US (2) US8195922B2 (ja)
EP (1) EP1703377A3 (ja)
JP (2) JP2006260571A (ja)
CN (1) CN100440139C (ja)
SG (1) SG126072A1 (ja)
TW (1) TWI315848B (ja)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060212853A1 (en) * 2005-03-18 2006-09-21 Marvell World Trade Ltd. Real-time control apparatus having a multi-thread processor
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
CN107368285B (zh) 2006-11-14 2020-10-09 英特尔公司 多线程架构
CN101325063B (zh) * 2007-06-12 2011-02-16 建兴电子科技股份有限公司 全息储存系统中寻找定位点位置的方法
US8725991B2 (en) * 2007-09-12 2014-05-13 Qualcomm Incorporated Register file system and method for pipelined processing
US8656145B2 (en) 2008-09-19 2014-02-18 Qualcomm Incorporated Methods and systems for allocating interrupts in a multithreaded processor
JP5173714B2 (ja) 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びその割り込み処理方法
JP5433676B2 (ja) 2009-02-24 2014-03-05 パナソニック株式会社 プロセッサ装置、マルチスレッドプロセッサ装置
JP5411587B2 (ja) 2009-06-09 2014-02-12 トヨタ自動車株式会社 マルチスレッド実行装置、マルチスレッド実行方法
US9747105B2 (en) * 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
CN101763285B (zh) * 2010-01-15 2013-03-20 西安电子科技大学 零开销切换多线程处理器及其线程切换方法
WO2012001835A1 (ja) * 2010-07-02 2012-01-05 パナソニック株式会社 マルチプロセッサシステム
EP3156896B1 (en) 2010-09-17 2020-04-08 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
TW201237630A (en) * 2011-03-01 2012-09-16 Wistron Corp Method and computer system for processing data in a memory
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
KR101826121B1 (ko) 2011-03-25 2018-02-06 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
TWI548994B (zh) 2011-05-20 2016-09-11 軟體機器公司 以複數個引擎支援指令序列的執行之互連結構
CN107729267B (zh) 2011-05-20 2022-01-25 英特尔公司 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
JP5283739B2 (ja) * 2011-09-27 2013-09-04 インテル・コーポレーション プロセッサ内のマルチスレッド間通信
KR101703400B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 마이크로프로세서 가속 코드 최적화기
US10191746B2 (en) 2011-11-22 2019-01-29 Intel Corporation Accelerated code optimizer for a multiengine microprocessor
JP5819184B2 (ja) * 2011-12-28 2015-11-18 富士通株式会社 情報処理装置及び情報処理装置の制御方法
US10732976B2 (en) 2013-01-10 2020-08-04 Nxp Usa, Inc. Integrated circuit processor and method of operating the integrated circuit processor in different modes of differing thread counts
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9582322B2 (en) 2013-03-15 2017-02-28 Soft Machines Inc. Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US20140281116A1 (en) 2013-03-15 2014-09-18 Soft Machines, Inc. Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
CN103916915B (zh) * 2014-04-10 2018-07-31 泉州旭辉电子有限公司 一种模数自适应切换的无线通信系统设计方法
WO2015175555A1 (en) 2014-05-12 2015-11-19 Soft Machines, Inc. Method and apparatus for providing hardware support for self-modifying code
CN104516775A (zh) * 2014-09-05 2015-04-15 深圳市华讯方舟科技有限公司 基于多核、多线程实现ap和sta的接入方法
US9996354B2 (en) * 2015-01-09 2018-06-12 International Business Machines Corporation Instruction stream tracing of multi-threaded processors
US11663227B2 (en) 2016-09-26 2023-05-30 Splunk Inc. Generating a subquery for a distinct data intake and query system
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US11593377B2 (en) 2016-09-26 2023-02-28 Splunk Inc. Assigning processing tasks in a data intake and query system
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US11416528B2 (en) 2016-09-26 2022-08-16 Splunk Inc. Query acceleration data store
US20180089324A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US11599541B2 (en) 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
US11586627B2 (en) 2016-09-26 2023-02-21 Splunk Inc. Partitioning and reducing records at ingest of a worker node
US11567993B1 (en) 2016-09-26 2023-01-31 Splunk Inc. Copying buckets from a remote shared storage system to memory associated with a search node for query execution
US11874691B1 (en) 2016-09-26 2024-01-16 Splunk Inc. Managing efficient query execution including mapping of buckets to search nodes
US11580107B2 (en) 2016-09-26 2023-02-14 Splunk Inc. Bucket data distribution for exporting data to worker nodes
US11562023B1 (en) 2016-09-26 2023-01-24 Splunk Inc. Merging buckets in a data intake and query system
US11615104B2 (en) 2016-09-26 2023-03-28 Splunk Inc. Subquery generation based on a data ingest estimate of an external data system
US10353965B2 (en) 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US10956415B2 (en) 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US11620336B1 (en) 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US11461334B2 (en) * 2016-09-26 2022-10-04 Splunk Inc. Data conditioning for dataset destination
US11442935B2 (en) 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US11550847B1 (en) 2016-09-26 2023-01-10 Splunk Inc. Hashing bucket identifiers to identify search nodes for efficient query execution
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
GB2565338B (en) 2017-08-10 2020-06-03 Mips Tech Llc Fault detecting and fault tolerant multi-threaded processors
US10896182B2 (en) 2017-09-25 2021-01-19 Splunk Inc. Multi-partitioning determination for combination operations
GB201717303D0 (en) * 2017-10-20 2017-12-06 Graphcore Ltd Scheduling tasks in a multi-threaded processor
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
US11645178B2 (en) 2018-07-27 2023-05-09 MIPS Tech, LLC Fail-safe semi-autonomous or autonomous vehicle processor array redundancy which permits an agent to perform a function based on comparing valid output from sets of redundant processors
US10997058B2 (en) * 2018-07-30 2021-05-04 EMC IP Holding Company LLC Method for performance analysis in a continuous integration pipeline
US10884785B2 (en) 2018-11-29 2021-01-05 International Business Machines Corporation Precise accounting of processor time for multi-threaded time-critical applications
WO2020220216A1 (en) 2019-04-29 2020-11-05 Splunk Inc. Search time estimate in data intake and query system
US11715051B1 (en) 2019-04-30 2023-08-01 Splunk Inc. Service provider instance recommendations using machine-learned classifications and reconciliation
US11494380B2 (en) 2019-10-18 2022-11-08 Splunk Inc. Management of distributed computing framework components in a data fabric service system
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001521215A (ja) * 1997-10-23 2001-11-06 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチスレッド式プロセッサでスレッド切替えイベントを選択するための方法および装置
JP2003523561A (ja) * 1999-12-22 2003-08-05 ウビコム インコーポレイテッド 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法
JP2004234123A (ja) * 2003-01-28 2004-08-19 Fujitsu Ltd マルチスレッドコンピュータ

Family Cites Families (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6314243A (ja) 1986-07-03 1988-01-21 Fujitsu Ltd 演算処理装置
JPH0199132A (ja) 1987-10-12 1989-04-18 Matsushita Electric Ind Co Ltd マルチタスク実行装置
JPH01234123A (ja) 1988-03-11 1989-09-19 Showa Alum Corp 排熱回収装置用ヒートパイプ式熱交換器の製造法
JPH01249808A (ja) 1988-03-31 1989-10-05 Nippon Shokubai Kagaku Kogyo Co Ltd 耐塩性吸水性樹脂微粒子の製造方法
JP2595662B2 (ja) 1988-06-06 1997-04-02 株式会社明電舎 四輪駆動車用ダイナモメータの制御方式
JP2881776B2 (ja) 1988-08-31 1999-04-12 アイシン精機株式会社 スロットル制御装置
JPH0282815A (ja) 1988-09-20 1990-03-23 Fujitsu Ltd カウンタチェック方式
JPH02226458A (ja) 1989-02-28 1990-09-10 Fujitsu Ltd 並列処理計算機パイプライン処理方式
JPH03167748A (ja) 1989-11-28 1991-07-19 Toshiba Lighting & Technol Corp バックライト用けい光ランプ
JP2579008B2 (ja) 1989-12-18 1997-02-05 松下電器産業株式会社 時分割マルチタスク実行装置
JP2591200B2 (ja) 1989-12-18 1997-03-19 松下電器産業株式会社 プログラム先取り装置
JPH03241980A (ja) 1990-02-20 1991-10-29 Fujitsu General Ltd フィルムスキャナ装置
US5305455A (en) * 1990-12-21 1994-04-19 International Business Machines Corp. Per thread exception management for multitasking multithreaded operating system
JPH04234123A (ja) 1990-12-28 1992-08-21 Fuji Xerox Co Ltd 半導体装置の製造方法
US5148546A (en) 1991-04-22 1992-09-15 Blodgett Greg A Method and system for minimizing power demands on portable computers and the like by refreshing selected dram cells
JPH0525749A (ja) 1991-07-10 1993-02-02 Toyota Autom Loom Works Ltd 織機におけるクロスロール交換装置の織布巻き付け機構
US5357617A (en) 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
US5404469A (en) 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US6430592B1 (en) * 1994-06-02 2002-08-06 International Business Machines Corporation System for sharing CPU time amongst multiple users
WO1996018940A1 (en) 1994-12-16 1996-06-20 Elonex Technologies, Inc. Management of data before zero volt suspend in computer power management
US6182108B1 (en) 1995-01-31 2001-01-30 Microsoft Corporation Method and system for multi-threaded processing
US5659749A (en) 1995-05-08 1997-08-19 National Instruments Corporation System and method for performing efficient hardware context switching in an instrumentation system
US5828880A (en) 1995-07-06 1998-10-27 Sun Microsystems, Inc. Pipeline system and method for multiprocessor applications in which each of a plurality of threads execute all steps of a process characterized by normal and parallel steps on a respective datum
US5805479A (en) 1995-09-25 1998-09-08 United Microelectronics Corp. Apparatus and method for filtering digital signals
JPH09171462A (ja) 1995-12-20 1997-06-30 Matsushita Electric Ind Co Ltd 演算装置
JPH09190348A (ja) 1996-01-09 1997-07-22 Matsushita Electric Ind Co Ltd 命令プリフェッチバッファ制御方法、命令プリフェッチバッファ制御装置、及び命令プリフェッチバッファフラッシュ方法
JPH10177774A (ja) 1996-12-16 1998-06-30 Fujitsu Ltd ディスク装置及び携帯型電子装置
US6184906B1 (en) 1997-06-30 2001-02-06 Ati Technologies, Inc. Multiple pipeline memory controller for servicing real time data
US6157988A (en) 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US6385638B1 (en) 1997-09-04 2002-05-07 Equator Technologies, Inc. Processor resource distributor and method
US6223208B1 (en) 1997-10-03 2001-04-24 International Business Machines Corporation Moving data in and out of processor units using idle register/storage functional units
US6076157A (en) 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US5987492A (en) 1997-10-31 1999-11-16 Sun Microsystems, Inc. Method and apparatus for processor sharing
JPH11161505A (ja) 1997-12-01 1999-06-18 Matsushita Electric Ind Co Ltd メディア送出装置
EP1521467A3 (en) 1998-03-16 2005-04-13 Intertrust Technologies Corp. Methods and apparatus for continuous control and protection of media content
EP0943995A3 (en) 1998-03-20 2000-12-06 Texas Instruments Incorporated Processor having real-time external instruction insertion for debug functions without a debug monitor
JPH11272627A (ja) * 1998-03-23 1999-10-08 Nec Corp パイプライン型マルチプロセッサシステム
US6560628B1 (en) 1998-04-27 2003-05-06 Sony Corporation Apparatus, method, and recording medium for scheduling execution using time slot data
US6088044A (en) 1998-05-29 2000-07-11 International Business Machines Corporation Method for parallelizing software graphics geometry pipeline rendering
US6119091A (en) 1998-06-26 2000-09-12 Lsi Logic Corporation DVD audio decoder having a direct access PCM FIFO
JP2000105598A (ja) 1998-08-24 2000-04-11 Saehan Information Syst Inc 携帯用デ―タの記録/再生装置、デジタルデ―タの記録及び再生方泡並びにコンピュ―タ音楽ファイルデ―タの記録及び再生システム
KR100321437B1 (ko) 1998-11-02 2002-05-13 이상훈 자동차엠피쓰리플레이어
US6952827B1 (en) 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6826749B2 (en) 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
US7065762B1 (en) 1999-03-22 2006-06-20 Cisco Technology, Inc. Method, apparatus and computer program product for borrowed-virtual-time scheduling
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6341347B1 (en) 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6061306A (en) 1999-07-20 2000-05-09 James Buchheim Portable digital player compatible with a cassette player
US6496692B1 (en) 1999-12-06 2002-12-17 Michael E. Shanahan Methods and apparatuses for programming user-defined information into electronic devices
US7308686B1 (en) 1999-12-22 2007-12-11 Ubicom Inc. Software input/output using hard real time threads
US6609193B1 (en) 1999-12-30 2003-08-19 Intel Corporation Method and apparatus for multi-thread pipelined instruction decoder
US7856633B1 (en) * 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US6922845B2 (en) 2000-04-25 2005-07-26 The Directtv Group, Inc. Multi-processor DVR
US20030188141A1 (en) * 2002-03-29 2003-10-02 Shailender Chaudhry Time-multiplexed speculative multi-threading to support single-threaded applications
US7137117B2 (en) 2000-06-02 2006-11-14 Microsoft Corporation Dynamically variable idle time thread scheduling
US6420903B1 (en) 2000-08-14 2002-07-16 Sun Microsystems, Inc. High speed multiple-bit flip-flop
US7302684B2 (en) 2001-06-18 2007-11-27 Microsoft Corporation Systems and methods for managing a run queue
US7134002B2 (en) * 2001-08-29 2006-11-07 Intel Corporation Apparatus and method for switching threads in multi-threading processors
US7117497B2 (en) * 2001-11-08 2006-10-03 Honeywell International, Inc. Budget transfer mechanism for time-partitioned real-time operating systems
JP2003167748A (ja) 2001-11-30 2003-06-13 Fujitsu Ltd マルチスレッド計算機
US7487504B2 (en) 2002-02-06 2009-02-03 International Business Machines Corporation Thread dispatch for multiprocessor computer systems
US7437724B2 (en) 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
WO2003088036A1 (en) 2002-04-12 2003-10-23 Koninklijke Philips Electronics N.V. System and method for instruction level multithreading
US7062606B2 (en) * 2002-11-01 2006-06-13 Infineon Technologies Ag Multi-threaded embedded processor using deterministic instruction memory to guarantee execution of pre-selected threads during blocking events
US7181742B2 (en) 2002-11-19 2007-02-20 Intel Corporation Allocation of packets and threads
AU2003300948A1 (en) 2002-12-16 2004-07-22 Globespanvirata Incorporated System and method for scheduling thread execution
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
US7013400B2 (en) 2003-04-24 2006-03-14 International Business Machines Corporation Method for managing power in a simultaneous multithread processor by loading instructions into pipeline circuit during select times based on clock signal frequency and selected power mode
US6862027B2 (en) 2003-06-30 2005-03-01 Microsoft Corp. System and method for parallel execution of data generation tasks
US7472389B2 (en) 2003-10-29 2008-12-30 Honeywell International Inc. Stochastically based thread budget overrun handling system and method
DE10353267B3 (de) 2003-11-14 2005-07-28 Infineon Technologies Ag Multithread-Prozessorarchitektur zum getriggerten Thread-Umschalten ohne Zykluszeitverlust und ohne Umschalt-Programmbefehl
US7430737B2 (en) 2003-12-04 2008-09-30 Sun Microsystems, Inc. Processor and method for supporting compiler directed multithreading management
US7617499B2 (en) 2003-12-18 2009-11-10 International Business Machines Corporation Context switch instruction prefetching in multithreaded computer
US7493621B2 (en) 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7475399B2 (en) 2004-01-13 2009-01-06 International Business Machines Corporation Method and data processing system optimizing performance through reporting of thread-level hardware resource utilization
US8074051B2 (en) 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7681199B2 (en) 2004-08-31 2010-03-16 Hewlett-Packard Development Company, L.P. Time measurement using a context switch count, an offset, and a scale factor, received from the operating system
US20060212853A1 (en) 2005-03-18 2006-09-21 Marvell World Trade Ltd. Real-time control apparatus having a multi-thread processor
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001521215A (ja) * 1997-10-23 2001-11-06 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチスレッド式プロセッサでスレッド切替えイベントを選択するための方法および装置
JP2003523561A (ja) * 1999-12-22 2003-08-05 ウビコム インコーポレイテッド 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法
JP2004234123A (ja) * 2003-01-28 2004-08-19 Fujitsu Ltd マルチスレッドコンピュータ

Also Published As

Publication number Publication date
CN100440139C (zh) 2008-12-03
EP1703377A3 (en) 2007-11-28
CN1841314A (zh) 2006-10-04
US20060212687A1 (en) 2006-09-21
US8468324B2 (en) 2013-06-18
JP2006260571A (ja) 2006-09-28
EP1703377A2 (en) 2006-09-20
US8195922B2 (en) 2012-06-05
TWI315848B (en) 2009-10-11
TW200710723A (en) 2007-03-16
US20120239908A1 (en) 2012-09-20
JP2008047145A (ja) 2008-02-28
SG126072A1 (en) 2006-10-30

Similar Documents

Publication Publication Date Title
JP4610593B2 (ja) デュアルスレッドプロセッサ
US7155600B2 (en) Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor
US6061710A (en) Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US8266620B2 (en) Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7424599B2 (en) Apparatus, method, and instruction for software management of multiple computational contexts in a multithreaded microprocessor
US7269712B2 (en) Thread selection for fetching instructions for pipeline multi-threaded processor
EP2270650B1 (en) Processor and control method for processor
US8516024B2 (en) Establishing thread priority in a processor or the like
JP3919764B2 (ja) 例外条件を解消するために同時マルチスレッド・プロセッサでディスパッチ・フラッシュを使用する方法
JP5413853B2 (ja) マルチスレッド型プロセッサのためのスレッドデエンファシス方法及びデバイス
US8635621B2 (en) Method and apparatus to implement software to hardware thread priority
JP5173714B2 (ja) マルチスレッドプロセッサ及びその割り込み処理方法
JP2006318051A (ja) マイクロプロセッサ及びマイクロプロセッサの制御方法
WO2011155097A1 (ja) 命令発行制御装置及び方法
EP2159691B1 (en) Simultaneous multithreaded instruction completion controller
JP4599365B2 (ja) プロセッサにおける同時物理スレッド数からの論理スレッド数のデカップリング
JP2020091751A (ja) 演算処理装置および演算処理装置の制御方法
JP3816844B2 (ja) プロセッサ及び命令制御方法
EP2169539A1 (en) Instruction control device and instruction control method
US11194577B2 (en) Instruction issue according to in-order or out-of-order execution modes
JP2005078234A (ja) 情報処理装置
JP5093237B2 (ja) 命令処理装置
JP2012168725A (ja) マルチスレッド・プロセッサ
US20040128488A1 (en) Strand switching algorithm to avoid strand starvation
JP4151497B2 (ja) パイプライン処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071130

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20071130

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20080111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080122

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080418

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080520

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080916

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100722

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100727

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100824

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

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

Free format text: PAYMENT UNTIL: 20131022

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4610593

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

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

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

LAPS Cancellation because of no payment of annual fees