JP2004227587A - 命令語数に実行周期回数を加重値として用いてスレッドをフェッチする同時多重スレッドプロセッサ及びその方法 - Google Patents

命令語数に実行周期回数を加重値として用いてスレッドをフェッチする同時多重スレッドプロセッサ及びその方法 Download PDF

Info

Publication number
JP2004227587A
JP2004227587A JP2004012433A JP2004012433A JP2004227587A JP 2004227587 A JP2004227587 A JP 2004227587A JP 2004012433 A JP2004012433 A JP 2004012433A JP 2004012433 A JP2004012433 A JP 2004012433A JP 2004227587 A JP2004227587 A JP 2004227587A
Authority
JP
Japan
Prior art keywords
thread
instruction
processing
processing pipeline
simultaneous multi
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
JP2004012433A
Other languages
English (en)
Other versions
JP4476636B2 (ja
Inventor
Soko Cho
壯 鎬 趙
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2004227587A publication Critical patent/JP2004227587A/ja
Application granted granted Critical
Publication of JP4476636B2 publication Critical patent/JP4476636B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)

Abstract

【課題】 性能が向上した同時多重スレッド(SMT)プロセッサ及びその方法を提供する。
【解決手段】 プロセッシングパイプラインの少なくとも1つの他のステージから情報を受信し、受信された情報を用いてスレッド別に処理時間を決定するプロセッサである。前記スレッド別処理時間を用いて、フェッチ部は前記プロセッシングパイプラインで処理するスレッドを決定して該当命令語をフェッチする。
【選択図】 図1

Description

本発明はコンピュータシステムのCPU(中央演算処理装置)に係り、特にコンピュータシステムの同時多重スレッド(Simultaneous Multi Threading;以下“SMT”と略称する)プロセッサに関する。
CPU(中央演算処理装置)等でのスーパスカラ(Superscalar)パイプライン構造は、1クロックサイクルの間に同時に複数の命令語を実行することによってCPUの性能を高める方法である。しかし、スーパスカラパイプライン構造では1クロックサイクルの間に同時に複数の命令語が実行できるにも拘らず、データディペンデンシなどの問題によって時間上命令語の実行が不可能な区間、すなわち、ウェイストが発生する。
一方、SMT方法は1クロックサイクルの間に複数のスレッドを同時に存在させ、スレッド各々に存在する命令語を同時に実行させ、特に前記のようなウェイスト区間でも実行されるようにし、ウェイスト区間を最小化することによってCPUの性能を向上させる方法である。スレッドは、1プロセス内の複数の相異なるコントロールポイントや相異なる実行経路と定義されるか、または相異なるプログラムと定義されうる。したがって、SMTは複数のスレッドそれぞれの命令語を同時に実行させて命令語実行のスループットを高める方法である。
Dean M.Tullsen等はSMT構造で複数のスレッドのうち、1つのスレッドを選択してその命令語をフェッチするいくつかのアルゴリズムを紹介した。このようにスレッドを選択し、該当命令語をフェッチする従来のSMTプロセッサについては特許文献1によく開示されている。
すなわち、従来のSMTプロセッサでは、新しいスレッドの命令語フェッチ時に、待ち時間の長い命令語を行うスレッド選択を避けるために、“ICCOUNT”、“BRCOUNT”、“MISSCOUNT”、または“IQPOSN”のような方法を使用する。特に、上記のような方法のうち“ICCOUNT”は効果的な方法として従来のSMTプロセッサに多く採用されている。“ICCOUNT”方法は命令語デコーディング、命令語再命名、命令語指示のようなパイプラインステージで、最少数の命令語を有するスレッドを選択し、そのスレッドの命令語をフェッチする方法である。命令語数が少ないほど該当スレッドの待ち時間が短くなるために、このような方法は効率的な方法であると言える。それ以外にも、パイプラインステージを実行ステージまで拡張した“ECOUNT”という方法もある。
このように、“ICCOUNT”方法などを使用する従来のSMTプロセッサでは、単にスレッドが有する命令語数だけを計算してスレッドを選択し、命令語をフェッチする。しかし、実際待ち時間に影響を及ぼす命令語の実行周期回数が考慮されず、単純に命令語数の少ないスレッドに優先順位を与えることはCPUなどのプロセッサ性能を低下させる問題点がある。例えば、スレッドAは実行周期回数が3である乗算命令語を2つ有し、スレッドBは実行周期回数が1である加算命令語4つを有する場合、スレッドAの実行がスレッドBの実行より長くなる。すなわち、むしろ少ない命令語数を有するスレッドAがスレッドBより命令語指示をさらに長く待つので、キュークロッグ(queue clog)を起こす問題点がある。
米国特許US6470443B1
したがって、本発明が解決しようとする技術的課題は、命令語数に各命令語の実行周期回数を加重値として用いてSMTの性能をさらに向上させたSMTプロセッサを提供することにある。
本発明が解決しようとする他の技術的課題は、命令語数に各命令語の実行周期回数を加重値として用いてSMTの性能をさらに向上させたSMTプロセッサのSMT方法を提供することにある。
前記技術的課題を達成するための本発明に係るSMTプロセッサは、多数のパイプラインステージを含むプロセッシングパイプラインを備え、フェッチ部は前記パイプラインステージのうち何れか1つのステージに該当する。
前記プロセッシングパイプラインで前記パイプラインステージの各々は多数のスレッド各々に属する命令語のうち少なくとも1つを処理する。前記フェッチ部は前記プロセッシングパイプラインの少なくとも1つの他のステージから情報を受信し、受信された情報を用いてスレッド別に処理時間を決定し、そのスレッド別処理時間を用いて前記プロセッシングパイプラインで処理するスレッドを決定して該当命令語をフェッチする。
前記フェッチ部は、前記スレッド別処理時間のうち最短の処理時間を有するスレッドを決定して該当命令語をフェッチすることを特徴とする。前記受信された情報は、前記プロセッシングパイプラインで処理される命令語の演算種類を含むことを特徴とする。前記受信された情報は、前記プロセッシングパイプラインで処理を終了する命令語の演算種類をさらに含むことを特徴とする。
前記フェッチ部はスレッド別にカウントを行うカウンタを備え、そのスレッド別カウンタの各々は、前記プロセッシングパイプラインで処理される命令語の処理時間に対応してカウント値を高め、前記プロセッシングパイプラインで処理を終了する命令語の処理時間に対応してカウント値を下げることを特徴とする。前記フェッチ部は前記カウント値が最も小さなカウンタに対応するスレッドを決定して該当命令語をフェッチすることを特徴とする。
前記フェッチ部は前記プロセッシングパイプラインで処理されるスレッドに対する命令語の数にその命令語それぞれのサイクルカウント数を加重値として用いて、前記スレッド別処理時間として加重値が与えられた命令語数をカウントすることを特徴とする。
前記他の技術的課題を達成するための本発明に係るSMTプロセス方法は、プロセッシングパイプラインのフェッチ部で、前記プロセッシングパイプラインの少なくとも1つの他のステージから情報を受信する段階と、前記受信された情報を用いてスレッド別に処理時間を決定する第1決定段階と、前記スレッド別処理時間を用いて前記プロセッシングパイプラインで処理される該当命令語をフェッチするスレッドを決定する第2決定段階と、を備え、前記プロセッシングパイプラインは多数のパイプラインステージを含み、該ステージの各々は多数のスレッド各々に属する命令語のうち少なくとも1つを処理することを特徴とする。
本発明に係るSMTプロセッサは、前記フェッチ部が前記SMTプロセッサのプロセッシングパイプライン上で処理されるスレッドに対する命令語の数にその命令語それぞれのサイクルカウント数を加重値として用いて、前記スレッド別処理時間として加重値が与えられた命令語数をカウントし、プロセッシングパイプライン上で処理される時間を示す前記加重値が与えられた命令語数が最も小さなスレッドを選択して該当命令語をフェッチする。したがって、SMTプロセッサの性能がさらに向上し、結局CPU(control processing unit)のようなシステム性能をさらに向上させうる。
以下、添付した図面を参照して本発明の望ましい実施形態を詳細に説明する。各図に提示された同じ参照符号は同一部分を示す。
図1は、本発明の一実施形態に係るSMTプロセッサのブロック図である。図1を参照すれば、本発明の一実施形態に係るSMTプロセッサは、多数のパイプラインステージを含むプロセッシングパイプライン構造を有し、前記ステージの各々は多数のスレッド各々に属する命令語のうち少なくとも1つを処理する。このような前記SMTプロセッサは、フェッチ部110、命令語キャッシュ部120、命令語デコーダ130、レジスタ再命名部140、命令語指示部150、実行部160を備える。前記実行部160は、データキャッシュ161、レジスタ163、及び機能ユニット165を備える。
前記フェッチ部110は多数のプログラムカウンタ(図示せず)の各々から出力されるアドレスPC0ないしPCN−1を受信する。プログラムカウンタはスレッド別に1つずつ割当てられ、プログラムカウンタで生成されたカウント値はフェッチする次の命令語のアドレスを提供する。前記命令語デコーダ130及び前記命令語指示部150からフィードバックされた情報を用いて、前記フェッチ部110はフェッチアドレスとしてプログラムカウンタのアドレスのうち何れか1つを選択する。フェッチアドレスは該フェッチアドレスに基づいたスレッドを行う命令語または命令語の集合を示す。以下、本発明の構造及び動作は一つの命令語をフェッチすることについて記述される。しかし、1つ以上の命令語を同時にフェッチでき、これは当業者によく知られている。前記フェッチ部110の構造及び動作は図2の説明でさらに詳細に記述される。
前記命令語キャッシュ部120はプログラムカウンタそれぞれのアドレスに対応する命令語を貯蔵し、前記フェッチされたアドレスに対応する前記フェッチされた命令語を前記命令語デコーダ130に出力する。
前記命令語デコーダ130は前記フェッチされた命令語を解釈して演算種類を決定し、オペランドで使われる論理的アドレスまたはレジスタのアドレスを抽出する。このようなデコーダ情報は前記フェッチ部110にフィードバックされる。
前記レジスタ再命名部140はデータディペンデンシを避けるために、命令語デコーダ130でデコーディングされた命令語に対応して生成されたアドレスをレジスタ163のうち実際レジスタのアドレスと再命名する。このように、オペランドとして使われるレジスタに対してその代用の実際レジスタと再命名することは、アーキテクチャ上定義されたレジスタより多量のレジスタを内部的に提供することによってデータディペンデンシを解決するためである。
前記命令語指示部150は前記再命名されたアドレスに応答して前記フェッチされた命令語に対する実行指示を行う。前記実行部160は前記実行指示に応答して前記フェッチされた命令語を実行する。この際、実行は、以前演算の終了によって前記実行指示された命令語実行に使われるオペランドが生成されれば、所定の機能ユニット165が、所定のデータキャッシュ161及びレジスタ163を用いて前記実行指示された命令語の演算(例えば、加算、乗算、シフト、累算など)を行う。フェッチされた命令語に対して前記実行部160で実行指示されれば、このような命令語実行指示情報は前記フェッチ部110にフィードバックされる。
前記レジスタ163は前記再命名されたアドレス(RAD)に対応する多数のレジスタ163を備える。このレジスタ163は前記フェッチされた命令語実行でオペランドとして使われるレジスタだけでなく、演算中に使われる臨時貯蔵レジスタまたは演算結果を貯蔵するデスティネーションレジスタなど演算に必要なあらゆるレジスタ163を含む。
前記データキャッシュ161は前記演算に使われるデータを貯蔵する。ここに貯蔵されるデータは、演算に使われる色々な必要なソースデータまたは臨時データとして、動作スピードの向上のために内部キャッシュメモリに貯蔵されるデータである。
前記機能ユニット165は以前演算の終了によって前記実行指示された命令語実行に使われるオペランドが生成されれば、前記実行指示に応答して前記フェッチされた命令語を実行する。この機能ユニット165は加算器、乗算器、シフタまたは蓄積器など基本演算を行うブロックである。
図2は、図1のフェッチ部110の具体的なブロック図である。
図2を参照すれば、図1のフェッチ部110は、デマルチプレックス制御器111、サイクルカウンタ113、スレッド選択器115、及びマルチプレクサ117を備える。
前記デマルチプレックス制御器111はデコーディングされた命令語に対する前記デコーダ情報を受信する。前記デマルチプレックス制御器111は前記デコーダ情報を用いてデコーディングされた命令語が属するスレッドを判別する(例えば、演算種類または命令語認識器から)。前記デマルチプレックス制御器111は各スレッドに対して前記サイクルカウンタ113のうち何れか1つを割り当てる。この際、最初に割当てられる時、前記サイクルカウンタ113はリセットされるか、“0”にクリアされる。前記デコーダ情報が受信されれば、前記デマルチプレックス制御器111は前記デコーディングされた命令語の処理に必要なサイクルカウント数に対応する量だけ、該当スレッドに割当てられたサイクルカウンタ113のカウント値を増加させる。前記サイクルカウント数は、前記命令語デコーダ130、前記レジスタ再命名部140、及び前記命令語指示部150のうち何れか1つ以上で所要されるシステムクロックのサイクルカウント値である。前述したように、サイクルカウント数は演算種類によって異なる。例えば、乗算演算は加算演算よりさらに多くのサイクルカウント数が必要である。したがって、前記デマルチプレックス制御器111はデコーディングされた命令語の演算種類によってサイクルカウンタ113のカウント値を高める量を決定する。具体的に、前記デマルチプレックス制御器111は前記SMTプロセッサのプロセッシングパイプライン上で処理されるスレッドに対する命令語の数にその命令語それぞれのサイクルカウント数を加重値として用いて、前記スレッド別処理時間として加重値が与えられた命令語数をカウントする。
また、前記デマルチプレックス制御器111は実行指示された命令語情報を受信する。前記デマルチプレックス制御器111は前記実行指示された命令語情報を用いてデコーディングされた命令語が属するスレッドを判別する(例えば、演算種類または命令語認識器から)。前記実行指示された命令語情報が受信されれば、前記デマルチプレックス制御器111は前記デコーディングされた命令語の処理に所要されたサイクルカウント数に対応する量だけ、該当スレッドに割当てられたサイクルカウンタ113のカウント値を下げる。実行指示された命令語は前記SMTプロセッサのプロセッシングパイプライン上で実行が完了して該当処理が終わる。すなわち、前記デマルチプレックス制御器111は前記プロセッシングパイプラインで処理を終了する命令語のサイクルカウント数に対応してカウント値を減少させる。このように、前記プロセッシングパイプラインで処理を終了する命令語に対する情報が前記デマルチプレックス制御器111で前記実行指示された命令語情報と共に利用されるか、前記実行指示された命令語情報の代りに利用される。
このように、サイクルカウンタ113の各々は前記SMTプロセッサのプロセッシングパイプライン上で現在処理される各スレッドの処理時間を示すカウント値を生成する。
前記スレッド選択器115は前記サイクルカウンタ113が示す最少サイクルカウンタを判別し、それに対応するスレッド選択情報(TSI)を出力する。すなわち、前記スレッド選択器115は前記SMTプロセッサのプロセッシングパイプライン上で何れのスレッドが最短の処理時間を有するかを決定する。
前記マルチプレクサ117はプログラムカウンタの各々から出力されるプログラムカウント値PC0ないしPCN−1を受信し、前記スレッド選択情報(TSI)が指示するスレッドのプログラムカウント値をフェッチされたアドレスとして出力する。
前述したような本発明の一実施形態に係る図1のSMTプロセッサの動作をさらに詳細に説明する。
図3は、図1のSMTプロセッサの動作説明のためのフローチャートである。図3を参照すれば、まず、フェッチ部110は、図2の説明と同様に、命令語デコーダ130及び命令語指示部150からフィードバックされたデコーダ情報及び実行指示された命令語情報を用いて加重値が与えられた命令語数を生成する(S310)。これにより、前記フェッチ部110は前記加重値が与えられた命令語数が最も小さなスレッドを選択し、選択されたスレッドに対応するプログラムカウンタのうち1つからアドレスをフェッチする。次いで、命令語キャッシュ部120は前記フェッチされたアドレスに対応するフェッチされた命令語を命令語デコーダ130に出力し、命令語デコーダ130はその命令語をデコーディングする(S320)。この際、生成されるデコーダ情報は前記フェッチ部110にフィードバックされる(S370)。レジスタ再命名部140は命令語デコーダ130でデコーディングされた命令語に対応して生成されたアドレスをレジスタ163のうちの実際レジスタのアドレスと再命名する(S330)。
次いで、前記デコーディングされた命令語は命令語指示部150に貯蔵され、前記再命名されたアドレスに応答して実行部160に前記フェッチされた命令語に対する実行指示を行う(S340)。この際、実行指示された命令語情報が前記フェッチ部110にフィードバックされる(S380)。前記実行部160は前記実行指示に応答して前記実行指示された命令語を実行し、このような命令語実行によって演算された結果がデスティネーションレジスタに貯蔵される(S350〜S360)。
以上により最適な実施形態が開示された。ここで特定の用語が使われたが、これは単に本発明を説明するための目的で使われたのであり、意味限定や特許請求の範囲上に記載された本発明の範囲を制限するために使われたのではない。したがって、当業者ならばこれから多様な変形及び均等な他の実施形態が可能であるという点を理解できる。したがって、本発明の真の技術的保護範囲は特許請求の範囲上の技術的思想により決まるべきである。
本発明に係るSMTプロセッサは、コンピュータシステムのCPU(control processing unit)に利用されうる。
本発明の一実施形態に係るSMTプロセッサのブロック図である。 図1のフェッチ部110の具体的なブロック図である。 図1のSMTプロセッサの動作説明のためのフローチャートである。
符号の説明
110 フェッチ部
120 命令語キャッシュ部
130 命令語デコーダ
140 レジスタ再命名部
150 命令語指示部
160 実行部
161 データキャッシュ
163 レジスタ
165 機能ユニット

Claims (21)

  1. 多数のパイプラインステージを含み、該ステージの各々は多数のスレッド各々に属する命令語のうち少なくとも1つを処理するプロセッシングパイプラインと、
    前記パイプラインステージのうち何れか1つのステージであり、前記プロセッシングパイプラインの少なくとも1つの他のステージから情報を受信し、受信された情報を用いてスレッド別に処理時間を決定し、そのスレッド別処理時間を用いて前記プロセッシングパイプラインで処理するスレッドを決定し、該当命令語をフェッチするフェッチ部と、を備えることを特徴とする同時多重スレッドプロセッサ。
  2. 前記フェッチ部は、
    前記スレッド別処理時間のうち最短の処理時間を有するスレッドを決定して該当命令語をフェッチすることを特徴とする請求項1に記載の同時多重スレッドプロセッサ。
  3. 前記受信された情報は、
    前記プロセッシングパイプラインで処理される命令語の演算種類を含むことを特徴とする請求項1に記載の同時多重スレッドプロセッサ。
  4. 前記受信された情報は、
    前記プロセッシングパイプラインで処理を終了する命令語の演算種類をさらに含むことを特徴とする請求項3に記載の同時多重スレッドプロセッサ。
  5. 前記フェッチ部は、
    スレッド別にカウントを行うカウンタを備え、そのスレッド別カウンタの各々は、前記プロセッシングパイプラインで処理される命令語の処理時間に対応してカウント値を高め、前記プロセッシングパイプラインで処理を終了する命令語の処理時間に対応してカウント値を下げることを特徴とする請求項4に記載の同時多重スレッドプロセッサ。
  6. 前記フェッチ部は、
    前記カウント値が最も小さなカウンタに対応するスレッドを決定して該当命令語をフェッチすることを特徴とする請求項5に記載の同時多重スレッドプロセッサ。
  7. 前記フェッチ部は、
    前記プロセッシングパイプラインで処理されるスレッドに対する命令語の数にその命令語それぞれのサイクルカウント数を加重値として用いて、前記スレッド別処理時間として加重値が与えられた命令語数をカウントすることを特徴とする請求項1に記載の同時多重スレッドプロセッサ。
  8. 前記フェッチ部は、
    スレッド別にカウントを行うカウンタを備え、そのスレッド別カウンタの各々は、前記プロセッシングパイプラインで処理される命令語のサイクルカウント数に対応してカウント値を高め、前記プロセッシングパイプラインで処理を終了する命令語のサイクルカウント数に対応してカウント値を下げることを特徴とする請求項7に記載の同時多重スレッドプロセッサ。
  9. 前記フェッチ部は、
    前記カウント値が最も小さなカウンタに対応するスレッドを決定して該当命令語をフェッチすることを特徴とする請求項8に記載の同時多重スレッドプロセッサ。
  10. 前記プロセッシングパイプラインは、
    前記フェッチされた命令語をデコーディングして前記命令語の演算種類をデコーダ情報として生成する命令語デコーダと、
    前記デコーディングされた命令語に対する実行指示を行う命令語指示部と、をさらに備えることを特徴とする請求項1に記載の同時多重スレッドプロセッサ。
  11. 前記受信された情報は、
    前記デコーダ情報及び前記実行指示された命令語情報であることを特徴とする請求項1に記載の同時多重スレッドプロセッサ。
  12. 前記プロセッシングパイプラインは、
    命令語を貯蔵し、前記フェッチされた命令語を前記命令語デコーダに出力する命令語キャッシュ部と、
    前記命令語デコーダで生成されたアドレスを実行部の実際レジスタアドレスと再命名するレジスタ再命名部と、をさらに備えることを特徴とする請求項10に記載の同時多重スレッドプロセッサ。
  13. プロセッシングパイプラインのフェッチ部で、前記プロセッシングパイプラインの少なくとも1つの他のステージから情報を受信する段階と、
    前記受信された情報を用いてスレッド別に処理時間を決定する第1決定段階と、
    前記スレッド別処理時間を用いて前記プロセッシングパイプラインで処理される該当命令語をフェッチするスレッドを決定する第2決定段階と、を備え、
    前記プロセッシングパイプラインは多数のパイプラインステージを含み、該ステージの各々は多数のスレッド各々に属する命令語のうち少なくとも1つを処理することを特徴とする同時多重スレッドプロセス方法。
  14. 前記第2決定段階は、
    該当命令語をフェッチするスレッドとして前記スレッド別処理時間のうち最短の処理時間を有するスレッドを決定することを特徴とする請求項13に記載の同時多重スレッドプロセス方法。
  15. 前記受信された情報は、
    前記プロセッシングパイプラインで処理される命令語の演算種類を含むことを特徴とする請求項13に記載の同時多重スレッドプロセス方法。
  16. 前記受信された情報は、
    前記プロセッシングパイプラインで処理を終了する命令語の演算種類をさらに含むことを特徴とする請求項15に記載の同時多重スレッドプロセス方法。
  17. 前記第1決定段階は、
    スレッド別にカウントを行うカウンタの各々が、前記プロセッシングパイプラインで処理される命令語の処理時間に対応してカウント値を高める段階と、
    前記カウンタの各々が、前記プロセッシングパイプラインで処理を終了する命令語の処理時間に対応してカウント値を下げる段階と、を備えることを特徴とする請求項16に記載の同時多重スレッドプロセス方法。
  18. 前記第2決定段階は、
    該当命令語をフェッチするスレッドとして前記カウント値が最も小さなカウンタに対応するスレッドを決定することを特徴とする請求項17に記載の同時多重スレッドプロセス方法。
  19. 前記第1決定段階は、
    前記プロセッシングパイプラインで処理されるスレッドに対する命令語の数にその命令語それぞれのサイクルカウント数を加重値として用いて、前記スレッド別処理時間として加重値が与えられた命令語数をカウントすることを特徴とする請求項13に記載の同時多重スレッドプロセス方法。
  20. 前記第1決定段階は、
    スレッド別にカウントを行うカウンタの各々が、前記プロセッシングパイプラインで処理される命令語のサイクルカウント数に対応してカウント値を高める段階と、
    前記カウンタの各々が、前記プロセッシングパイプラインで処理を終了する命令語のサイクルカウント数に対応してカウント値を下げる段階と、を備えることを特徴とする請求項19に記載の同時多重スレッドプロセス方法。
  21. 前記第2決定段階は、
    該当命令語をフェッチするスレッドとして前記カウント値が最も小さなカウンタに対応するスレッドを決定することを特徴とする請求項20に記載の同時多重スレッドプロセス方法。
JP2004012433A 2003-01-27 2004-01-20 命令語数に実行周期回数を加重値として用いてスレッドをフェッチする同時多重スレッドプロセッサ及びその方法 Expired - Fee Related JP4476636B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2003-0005236A KR100498482B1 (ko) 2003-01-27 2003-01-27 명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법

Publications (2)

Publication Number Publication Date
JP2004227587A true JP2004227587A (ja) 2004-08-12
JP4476636B2 JP4476636B2 (ja) 2010-06-09

Family

ID=32906515

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004012433A Expired - Fee Related JP4476636B2 (ja) 2003-01-27 2004-01-20 命令語数に実行周期回数を加重値として用いてスレッドをフェッチする同時多重スレッドプロセッサ及びその方法

Country Status (3)

Country Link
US (1) US7269712B2 (ja)
JP (1) JP4476636B2 (ja)
KR (1) KR100498482B1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011028440A (ja) * 2009-07-23 2011-02-10 Nec Corp マルチスレッドプロセッサ及びコンピュータプログラム
JP2014211743A (ja) * 2013-04-18 2014-11-13 株式会社デンソー マルチコアプロセッサ

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7000233B2 (en) * 2003-04-21 2006-02-14 International Business Machines Corporation Simultaneous multithread processor with result data delay path to adjust pipeline length for input to respective thread
US7664936B2 (en) * 2005-02-04 2010-02-16 Mips Technologies, Inc. Prioritizing thread selection partly based on stall likelihood providing status information of instruction operand register usage at pipeline stages
US7752627B2 (en) 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US7681014B2 (en) * 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7613904B2 (en) 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler
US7631130B2 (en) * 2005-02-04 2009-12-08 Mips Technologies, Inc Barrel-incrementer-based round-robin apparatus and instruction dispatch scheduler employing same for use in multithreading microprocessor
US7657891B2 (en) 2005-02-04 2010-02-02 Mips Technologies, Inc. Multithreading microprocessor with optimized thread scheduler for increasing pipeline utilization efficiency
US7506140B2 (en) * 2005-02-04 2009-03-17 Mips Technologies, Inc. Return data selector employing barrel-incrementer-based round-robin apparatus
US7657883B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
US7853777B2 (en) * 2005-02-04 2010-12-14 Mips Technologies, Inc. Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions
US7490230B2 (en) 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
KR100788500B1 (ko) * 2006-07-14 2007-12-24 엠텍비젼 주식회사 다단 파이프라인 구조의 정점 처리 장치 및 그 방법
US7961745B2 (en) 2006-09-16 2011-06-14 Mips Technologies, Inc. Bifurcated transaction selector supporting dynamic priorities in multi-port switch
US7990989B2 (en) * 2006-09-16 2011-08-02 Mips Technologies, Inc. Transaction selector employing transaction queue group priorities in multi-port switch
US7773621B2 (en) 2006-09-16 2010-08-10 Mips Technologies, Inc. Transaction selector employing round-robin apparatus supporting dynamic priorities in multi-port switch
US7760748B2 (en) * 2006-09-16 2010-07-20 Mips Technologies, Inc. Transaction selector employing barrel-incrementer-based round-robin apparatus supporting dynamic priorities in multi-port switch
KR100853457B1 (ko) * 2006-12-04 2008-08-21 한국전자통신연구원 고속의 대량 데이터를 수신하기 위한 데이터 수신 모듈의처리 방법
US8578387B1 (en) * 2007-07-31 2013-11-05 Nvidia Corporation Dynamic load balancing of instructions for execution by heterogeneous processing engines
US9304775B1 (en) 2007-11-05 2016-04-05 Nvidia Corporation Dispatching of instructions for execution by heterogeneous processing engines
US8285973B2 (en) 2008-08-04 2012-10-09 International Business Machines Corporation Thread completion rate controlled scheduling
KR101041777B1 (ko) * 2009-06-08 2011-06-17 엠텍비젼 주식회사 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스
US20110276784A1 (en) * 2010-05-10 2011-11-10 Telefonaktiebolaget L M Ericsson (Publ) Hierarchical multithreaded processing
GB2489708B (en) * 2011-04-05 2020-04-15 Advanced Risc Mach Ltd Thread selection for multithreaded processing
KR101892273B1 (ko) 2011-10-12 2018-08-28 삼성전자주식회사 스레드 프로그레스 트래킹 방법 및 장치
US9898348B2 (en) 2014-10-22 2018-02-20 International Business Machines Corporation Resource mapping in multi-threaded central processor units
US20170139716A1 (en) 2015-11-18 2017-05-18 Arm Limited Handling stalling event for multiple thread pipeline, and triggering action based on information access delay
US10983799B1 (en) 2017-12-19 2021-04-20 Apple Inc. Selection of instructions to issue in a processor
US11422821B1 (en) 2018-09-04 2022-08-23 Apple Inc. Age tracking for independent pipelines
CN115408153B (zh) * 2022-08-26 2023-06-30 海光信息技术股份有限公司 多线程处理器的指令分发方法、装置和存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6073159A (en) * 1996-12-31 2000-06-06 Compaq Computer Corporation Thread properties attribute vector based thread selection in multithreading processor
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US6076157A (en) * 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011028440A (ja) * 2009-07-23 2011-02-10 Nec Corp マルチスレッドプロセッサ及びコンピュータプログラム
JP2014211743A (ja) * 2013-04-18 2014-11-13 株式会社デンソー マルチコアプロセッサ
US9747132B2 (en) 2013-04-18 2017-08-29 Denso Corporation Multi-core processor using former-stage pipeline portions and latter-stage pipeline portions assigned based on decode results in former-stage pipeline portions

Also Published As

Publication number Publication date
US20040193854A1 (en) 2004-09-30
KR20040068721A (ko) 2004-08-02
JP4476636B2 (ja) 2010-06-09
US7269712B2 (en) 2007-09-11
KR100498482B1 (ko) 2005-07-01

Similar Documents

Publication Publication Date Title
JP4476636B2 (ja) 命令語数に実行周期回数を加重値として用いてスレッドをフェッチする同時多重スレッドプロセッサ及びその方法
US7725684B2 (en) Speculative instruction issue in a simultaneously multithreaded processor
JP4610593B2 (ja) デュアルスレッドプロセッサ
EP1886216B1 (en) Controlling out of order execution pipelines using skew parameters
JP5631976B2 (ja) マルチスレッドマイクロプロセッサにおける命令の発行をスケジュールするための方法及び装置
JP4841861B2 (ja) 演算処理装置及びデータ転送処理の実行方法
US7454598B2 (en) Controlling out of order execution pipelines issue tagging
US7711934B2 (en) Processor core and method for managing branch misprediction in an out-of-order processor pipeline
US11366669B2 (en) Apparatus for preventing rescheduling of a paused thread based on instruction classification
US20120047352A1 (en) Processor
JP5403973B2 (ja) アウト・オブ・オーダ・プロセッサにおける述語型実行のための方法および装置
EP1311947A1 (en) Instruction fetch and dispatch in multithreaded system
EP2159691A1 (en) Simultaneous multithreaded instruction completion controller
US20100306513A1 (en) Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline
KR20070108936A (ko) 조건부 명령어가 실행되지 않을 경우 소스 오퍼랜드를대기하는 것을 중지하는 방법
JP7225745B2 (ja) 演算処理装置および演算処理装置の制御方法
US7328327B2 (en) Technique for reducing traffic in an instruction fetch unit of a chip multiprocessor
JP5093237B2 (ja) 命令処理装置
JP5573038B2 (ja) マルチスレッドプロセッサ及びプログラム
JP2011128672A (ja) スーパースカラプロセッサ及びその命令処理方法
JP2007079711A (ja) マイクロプロセッサ
JP2006202265A (ja) マイクロコンピュータ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090526

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091013

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100106

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100223

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

R150 Certificate of patent or registration of utility model

Ref document number: 4476636

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130319

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140319

Year of fee payment: 4

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

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