JP5104861B2 - 演算処理装置 - Google Patents

演算処理装置 Download PDF

Info

Publication number
JP5104861B2
JP5104861B2 JP2009520135A JP2009520135A JP5104861B2 JP 5104861 B2 JP5104861 B2 JP 5104861B2 JP 2009520135 A JP2009520135 A JP 2009520135A JP 2009520135 A JP2009520135 A JP 2009520135A JP 5104861 B2 JP5104861 B2 JP 5104861B2
Authority
JP
Japan
Prior art keywords
branch
instruction
entries
entry
unit
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.)
Active
Application number
JP2009520135A
Other languages
English (en)
Other versions
JPWO2008155794A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2008155794A1 publication Critical patent/JPWO2008155794A1/ja
Application granted granted Critical
Publication of JP5104861B2 publication Critical patent/JP5104861B2/ja
Active 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)
  • Multi Processors (AREA)

Description

本発明は、演算処理装置に関し、特に、アウトオブオーダー処理で命令制御をおこない、かつ、SMT(Simultaneous Multi Thread)と呼ばれるマルチスレッド処理方式による命令制御を行なう演算処理装置に関する。
IT技術が急速に進歩し、サーバなどの汎用コンピュータが社会インフラの一部として認識されるなかで、コンピュータに対する性能向上や省電力運用に対する市場の要求はますます大きくなっている。この要求は、コンピュータ内のCPU(中央演算処理装置)に対しても同様である。
従来から、命令処理をインオーダー方式からアウトオブオーダー方式へと改良することや、半導体技術の進歩にともなう命令処理回路の改良や動作速度の高周波数化を行うことで、CPUの性能向上を図ってきた。しかしながら、半導体技術の微細化が進むにつれて動作消費電力に対する要件が厳しくなってきていること、増加するトランジスタ数に対する性能向上比の鈍化などから、従来の延長線上での手法では問題解決が難しくなってきている。
そのような中で、CPU内のコア数を複数にすることや、一つのコア内で複数の命令スレッドを処理できるようにするなどの手法がとられるようになった。コア内で複数の命令スレッドを処理する手法としてVMT(Vertical Multi Thread)、SMT(Simultaneous Multi Thread、同時マルチスレッド)という方式がある。
VMTは、比較的少ないトランジスタ数の追加で複数の命令スレッドを処理できるという利点があるが、同時に複数スレッドを処理できないため、スレッド切り替えが発生した場合にペナルティが発生する。
SMTはVMTのようにスレッド切り替えは発生しないがトランジスタ数の増加が大きいこと、トランジスタ数を少なくするためスレッド間で共有する回路を持った場合に、一方のスレッドの処理の遅れが他方のスレッドの処理に影響を与えてしまうというスレッド間での影響が顕在化しまう場合がある。特に、SMTの場合はトランジスタ数の増大は避けられず、増大したトランジスタ数をいかに効率よく使用していくかが課題となる。
特許文献1には、マルチスレッドプロセッサにおけるステートマシンに関する技術が記載されている。特許文献2には、マルチスレッドに対応したメモリについて記載されている。特許文献3及び4には、マルチスレッドコンピュータにおいて、欠陥のあるスレッドへのアクセスを不能とする技術が開示されている。
特表2003−516570号公報 特開平10−97461号公報 特開2002−108630号公報 特開2002−123402号公報
本発明の課題は、演算処理装置、特にSMT方式の演算処理装置において、ハードウェア資源を有効に使用できる命令制御装置を提供することである。
本発明の第1の命令制御装置は、単一のスレッド、あるいは、同時に複数のスレッドが実行可能な演算処理装置の命令制御装置において、実行しているスレッドの数を検出するスレッド数検出手段と、実行しているスレッドの数に応じてエントリをスレッド数分にグループ分けし、各エントリ群を各スレッドに対応させ、スレッドごとに独立してアウトオブオーダーでエントリに格納されている分岐命令の処理を行い、各スレッド内でエントリの放がインオーダーとなるように、エントリ群を選択してエントリの放を行なう分岐リザベーションステーション手段とを備えることを特徴とする。
本発明の第2の命令制御装置は、単一のスレッド、あるいは、同時に複数のスレッドが実行可能な演算処理装置の命令制御装置において、実行しているスレッドの数を検出するスレッド数検出手段と、実行しているスレッドの数に応じてエントリをスレッド数分にグループ分けし、各エントリ群を各スレッドに対応させ、スレッドごとに独立してアウトオブオーダーでエントリに格納されている分岐遅延命令の処理を行い、各スレッド内でエントリの放がインオーダーとなるように、エントリ群を選択してエントリの放を行なう遅延命令スタック手段とを備えることを特徴とする。
本発明の第3の命令制御装置は、単一のスレッド、あるいは、同時に複数のスレッドが実行可能な演算処理装置の命令制御装置において、実行しているスレッドの数を検出するスレッド数検出手段と、実行しているスレッドの数に応じてエントリをスレッド数分にグループ分けし、各エントリ群を各スレッドに対応させ、スレッドごとに独立して分岐先アドレスを格納し、エントリ群を選択してエントリの放を行なう分岐先アドレスバッファ手段とを備えることを特徴とする。
本発明の実施形態の命令制御装置の全体のブロック図である。 一般的な分岐リザベーションステーションの動作について説明する図である。 本発明の実施形態に従った分岐リザベーションステーションの動作について説明する図(その1)である。 本発明の実施形態に従った分岐リザベーションステーションの動作について説明する図(その2)である。 本発明の実施形態に従った分岐リザベーションステーションの動作について説明する図(その3)である。 本発明の実施形態に従った分岐リザベーションステーションの動作について説明する図(その4)である。 遅延命令スタックを説明する図である。 分岐先アドレスバッファの動作を説明する図(その1)である。 分岐先アドレスバッファの動作を説明する図(その2)である。 RSBRの使用エントリ数の制御について説明する図(その1)である。 RSBRの使用エントリ数の制御について説明する図(その2)である。 RSBRの使用エントリ数の制御について説明する図(その3)である。 RSBRの使用エントリ数の制御について説明する図(その4)である。 priority信号を生成する回路のゲート図(その1)を示す。 priority信号を生成する回路のゲート図(その2)を示す。 priority信号を生成する回路のゲート図(その3)を示す。 ストランドがn個の場合のRSBRの構成例を示した図である。
本発明の実施形態においては、分岐命令制御のために分岐リザベーションステーションを保有し、コア内で単一スレッドを実行することも複数スレッドを同時実行することも可能な演算処理装置を考える。分岐リザベーションステーションでは、実行パイプラインに投入された分岐命令を制御し、同時に複数の分岐命令をそれぞれ制御している。分岐命令は1命令制御するのに分岐リザベーションステーションのエントリ1個を消費する。同時に制御できる分岐命令数は、分岐リザベーションステーションのエントリ数によって決まる。
本発明の実施形態では、単一スレッド実行の場合は、分岐リザベーションステーションのすべてのエントリを分岐制御用に割り振り、複数スレッド実行の場合は、すべてのエントリをそれぞれのスレッドに割り振るようにする。分岐リザベーションステーション内では単一スレッド、複数スレッドともに全てのエントリが割り振り可能であり、実装している資源を余すことなく使用することが出来る。また、複数スレッド実行時には、それぞれのスレッドの分岐命令は独立して制御され、ストランド間調停のための制御回路においても性能影響が出ないようにする。マルチスレッド処理とは別に、イベント発生を起因として、分岐リザベーションステーション内で使用するエントリ数に制限をかけることが出来る。この制御回路は、マルチスレッドのための制御回路と共通回路を使用する。
本実施形態による演算処理装置では、SPARC-V9アキテクチャを採用し、命令制御装置はアウトオブオーダー処理でSMTと呼ばれる同時マルチスレッド方式を採用しているものとする。以下では、マルチスレッド実効時の最大スレッド数を2スレッドとして説明するが、3スレッド以上の場合でも同様の回路で実現可能である。また、リザベーションステーション等のエントリ数についても、以下の実施形態に記載してある数でなくとも任意の数でよい。
図1は、本発明の実施形態の命令制御装置の全体のブロック図である。
命令制御装置は、分岐予測機構として分岐予測回路(branch history : BRHIS)10を保有し、分岐命令を制御するための回路として分岐命令制御回路(branch control : BRCTL)11を保有する。分岐命令制御回路11は、分岐命令を制御するための分岐リザベーションステーション(reservation station for branch : RSBR)と分岐遅延命令(instruction in the delay slot 若しくは delay instruction)を制御するための遅延命令スタック(delay slot stack : DSS)とを有する。分岐命令制御回路11では、分岐判定、分岐先アドレスの管理、分岐予測の成否判定、分岐予測失敗時の再命令フェッチ要求、分岐予測失敗時の分岐遅延命令の命令デコーダ12への再投入といった処理が行われる。分岐先アドレスの管理は分岐命令制御回路11内での制御と分岐命令制御回路11の制御下から離れ分岐命令完了までの間の制御とに分けられる。後者の制御のために分岐先アドレスバッファ(target address buffer)13を保有する。
分岐先アドレスバッファ13は複数のエントリから成り、管理されるのは、分岐判定が完了している命令が分岐する場合の分岐先アドレスである。このほかに、分岐先アドレス計算を行う命令相対分岐アドレス生成回路14、演算器ユニット15、命令フェッチ制御回路16、命令バッファ17、命令デコーダ12、命令コミット制御回路18、プロセスマシンチェック回路19、キャッシュ部20が命令制御装置に設けられる。
命令フェッチ制御回路16からの命令フェッチ命令がキャッシュ部20に与えられ、フェッチされた命令が命令バッファ17に格納された後、命令デコーダ12においてフェッチされた命令がデコードされる。命令相対分岐アドレス生成回路14は、相対分岐命令の分岐先アドレスを生成する。命令デコーダ12でデコードされた命令が分岐命令である場合には、分岐命令が分岐命令制御回路11に登録され、実行される。
演算ユニット15は、分岐命令の分岐先アドレスを演算する。分岐予測回路10は、分岐命令制御回路11にある分岐命令に対し、命令の分岐先の予測を行い、予測された分岐先アドレスを命令フェッチ制御回路16に与えて、分岐先命令のプリフェッチを行なわせる。
命令コミット制御回路18は、デコードされた命令の内、実行完了待ち命令を管理する。分岐先アドレスバッファ13は、確定した分岐命令の分岐先アドレスを管理する。プログラムカウンタ21、ネクストプログラムカウンタ22は、実行中の命令のアドレス(もしくは、番地)番号、及び、次の命令のアドレス(もしくは、番地)番号をカウントするカウンタである。これらのカウンタのカウントの契機は、命令コミット制御回路18から与えられる。プロセスマシンチェック回路19は、命令バッファ17、命令デコーダ12、分岐命令制御回路11、演算ユニット15、命令コミット制御回路18において、並列して実行されるストランドの数を管理し、現在のストランド数をこれらに指示する。分岐先アドレスバッファ13のエントリがフルになっている場合、分岐命令制御回路11に、TGT_BUFF_BUSYが入力される。RSBR_PLIDは、分岐命令制御回路11に、次に処理すべき命令文のIDを通知するものである。分岐先アドレスバッファ13は、分岐先アドレスに飛ぶ必要がある場合に、ネクストプログラムカウンタ22を更新する。
図2は、一般的な分岐リザベーションステーションの動作について説明する図である。
図2では、7個の分岐リザベーションステーション(RSBR)が示されている。RSBR0からRSBR6に向かって、順次新しい命令がセットされる。すなわち、RSBR0に最も古い命令がセットされる。新しいエントリは、命令デコードサイクルでRSBRにセットされる。新しいエントリの作成は、最大2命令が可能である。RSBR内のエントリは、インオーダーで制御され、分岐判定、分岐予測の成否判定・命令再フェッチ要求の制御が行なわれる。制御終了後のエントリ放は、インオーダーで行なわれ、古いほうから最大2命令が可能となっている。なお、命令再フェッチは、古いほうから最大3命令可能となっている。図2では、エントリをバブルアップ方式で管理しており、開放されたエントリ分だけエントリがバブルアップする。バブルアップ順はRSBR6->RSBR5->RSBR4->RSBR3->RSBR2->RSBR1->RSBR0となる。したがって、RSBR2以降にエントリが存在した場合は、RSBR0,RSBR1のVALIDはそのままとなる場合もある。エントリデータは、バブルアップ処理によって書き換えられる。新しいエントリは、命令でコードサイクル(Dサイクル)でリザベーションステーションのエントリに格納される。命令再フェッチ要求は、分岐予測が失敗した場合に、リザベーションステーションに対して発行され、エントリの放は、命令コミット制御回路18において、命令の完了処理が終了した場合に、行なわれる。
1)分岐命令制御回路への命令投入および分岐命令制御回路でのエントリ作成について
命令バッファ17から命令デコーダ(以降デコーダ)12に対して命令データが供給されると、デコーダ12で命令がデコードされ、命令バッファ17から供給された命令種別が判別される。デコーダ12は、命令バッファ17から供給された命令の中に分岐命令をみつけると、分岐命令の制御を分岐命令制御回路11に割り振る。実行パイプラインに投入されたすべての命令は、命令コミット制御回路18で命令完了まで制御される。命令コミット制御回路18では、命令順序保障およびレジスタ更新制御が行われる。デコーダ12は最大4命令の同時デコードが可能であるが、分岐命令制御回路11では回路の制限により最大2命令の分岐命令が投入される。デコーダ12から分岐命令制御回路11へは、制御に必要なデータやタグと共に+D_RSBR_USE, +D_IID[5:0], +D_STRAND_ID, +D_RELという信号が送られる。これらの信号は分岐命令1命令につき1セット送られる。
ここで、+D_RSBR_USEは、実行パイプラインに投入された命令がRSBRを使用する命令であることを示す信号である。+D_IIDは、実行パイプラインに投入された命令の命令順序を示す信号である。以下、IIDを命令IDと呼ぶ。+D_STRAND_IDは、実行パイプラインに投入された命令のストランドIDを示す信号である。+D_RELは、実行パイプラインに命令が投入されるとき1となる信号である。
図3〜図6は、本発明の実施形態に従った分岐リザベーションステーションの動作について説明する図である。
図3に示す例では、RSBRは合計14エントリで構成されている。これらのエントリは7エントリずつ二つのグループに分けられる。ここでは第一のグループをRSBRL(RSBR0,RSBR1,…,RSBR6、ストランド0),第二のグループをRSBRH(RSBR10,RSBR11,…,RSBR16、ストランド1)とする。
実行パイプラインで実行されているスレッド数を判別するため、単一スレッドかマルチスレッドであるかを示すステータス信号が、プロセスマシンチェック回路19からリザベーションステーションに送られてくる。ここでは、スレッド数は2スレッドで、それぞれストランド0,1と区別することにする。この「0」と「1」が、ストランドIDである。ストランドの区別は、命令制御装置内で判別しやすいように呼称をつけているだけである。
続いて、マルチスレッド実行時について説明する。デコーダから命令が投入されると+D_REL=1となり、その命令が分岐命令であった場合には、同時に+D_RSBR_USE=1となる。投入された分岐命令がストランド0であった場合はRSBRL側に、ストランド1であった場合はRSBRH側にエントリが割り振られ、空きエントリに新規エントリが作成される。このストランドの割り振りは逆でも構わない。ただし、同一グループ内のエントリは全て同一ストランドでなければならない。
各グループ内のエントリはデコード順で管理されており、例えば、RSBRLの場合、RSBR0から順にRSBR1,2,3,4,5,6とエントリが作成されていく。新規エントリが作成されると、そのエントリが現在有効(使用中)であることを示す信号が+RSBR_VALID=1となる。またエントリには、制御に必要なデータやタグと共に信号+RSBR_IID[5:0], +RSBR_STRAND_IDが登録される。ここで、+RSBR_VALIDは、RSBRエントリが有効であることを示す信号である。+RSBR_IIDは、登録されているエントリ(分岐命令)の命令IDを示す信号である。+RSBR_STRAND_IDは、登録されているエントリ(分岐命令)のストランドIDを示す信号である。これらの信号は、分岐命令制御回路での制御が終了するまで保持される。
各グループ内で空きエントリがなくなった場合、そのグループが属しているストランドの新規命令投入を止めるため、分岐命令制御回路からデコーダに対して信号+RSBR_PLID=1が送られる。この信号が送られると、デコーダはそのストランドの命令デコードを一時的に止める。ストランド0の分岐命令を管理しているRSBRLがフル状態になると+RSBR_PLID_STRAND_0=1、ストランド1の分岐命令を管理しているRSBRHがフル状態になると+RSBR_PLID_STRAND_1=1となる。この信号はストランド毎に送られ、すべてのストランドで信号が1となると、デコーダは一時的に停止する。
分岐命令制御回路での分岐命令制御が終了すると、終了したエントリは開放され空きエントリができるため、+RSBR_PLID=0となりデコードが再開される。+RSBR_PLIDは、分岐命令制御回路内に空きエントリがなくなったことを示す信号である。+RSBR_PLID_STRAND_0は、ストランド0のRSBRがフルであることを示す信号、+RSBR_PLID_STRAND_1は、ストランド1のRSBRがフルであることを示す信号である。
図5を参照して、単一スレッド実行時について説明する。まずRSBRL,RSBRHともにエントリがない状態だとする。デコーダから分岐命令が投入されると、RSBRLに新規エントリが割り振られる(RSBRHでも構わない)。RSBR0,1,2,3,4,5,6とエントリが作成されRSBRLがフル状態になると続けてRSBRHに新規エントリが割り振られる。この時、RSBRLからRSBRHへとグループを跨いでエントリが作成される場合でも、デコーダは停止しない。
RSBRHにRSBR10,11,12,13,14,15,16とエントリが作成されフル状態になるとデコーダに対して+RSBR_PLID=1が送られる。送られる信号は、マルチストランド時と同様にストランド毎であり、ストランド0が単一スレッドで実行されている場合は+RSBR_PLID_STRAND_0=1となる(逆の場合もありうる)。+RSBR_PLID=1は、RSBRLのエントリがなくなるまで継続される。RSBRLにエントリがなくなると+RSBR_PLID=0となりデコードが再開され、RSBR0,1,2,3,4,5,6とエントリが作成されていく。単一スレッドの場合はこの繰り返しで、RSBRL->RSBRH->RSBRL->RSBRHと順番にエントリが作成されていく。登録されるエントリデータは、マルチスレッド時も単一スレッド時も同じである。
分岐命令制御回路は、分岐命令を制御するためのRSBRのほかに、分岐遅延命令を制御するためのDSS(遅延命令スタック:Delay Slot Stack)を保有する。
図7は、遅延命令スタックを説明する図である。
DSS(Delay Slot Stack)もRSBRと同数のエントリ、すなわち、本実施形態の場合、合計14エントリで構成されている。このように、リザベーションステーションRSBRとDSSとは1対1で対応している。DSSのエントリは7エントリずつ,二つのグループに分けられる。第一のグループをDSSL(DSS0,DSS1,…,DSS6),第二のグループをDSSH(DSS10,DSS11,…,DSS16)とする。デコーダから分岐命令制御回路へは、制御に必要なデータやタグと共に+D_DELAY_SLOT,+D_STRAND_ID,+D_RELという信号が送られる。これらの信号は分岐遅延命令1命令につき1セット送られる。ここで、+D_DELAY_SLOTは、実行パイプラインに投入された命令がDSSを使用する命令であることを示す。
分岐遅延命令は、分岐命令の次に投入された命令を指すため、そのIIDは必ず[分岐命令IID]+1となる。新規エントリ作成はRSBRの場合と同様の方法によるが、RSBRのようにデコードを停止させるための制御は行わない。
分岐命令、分岐遅延命令はストランドに関係なく、同一ストランドでの命令順序さえ守ればどのように命令投入しても構わない。
2)分岐命令制御回路のエントリ消去について
分岐命令制御回路のエントリは、その分岐命令の分岐制御が終了するとエントリから開放される。分岐制御とは、分岐判定・分岐先アドレス確定・分岐予測の成否判定・命令再フェッチ要求とそのアドレス確定の各制御である。エントリから開放されるとは、その分岐命令が分岐命令制御回路の制御下から離れるということであり、そのときエントリは消去される。エントリが消去される条件として、このほかに割り込み処理や、先行命令が命令再フェッチ要求を出した時などがある。
分岐制御終了時のエントリ開放について説明する。分岐命令制御回路では、それぞれのエントリの分岐制御は独立しておこなわれる。エントリの開放については分岐命令制御回路で、同一ストランドでの分岐命令順序を守らなければならない。ストランド間においてはそのような制約は一切ない。本実施形態では、分岐命令制御回路からのエントリ開放は、同一ストランドで最大2命令同時に開放することができる。複数ストランドのエントリを同時に開放することも可能ではあるが、実装配線量やトランジスタ数が増大するため本実施形態ではおこなっていない。
図4を参照して、マルチスレッド実行時について説明する。分岐命令制御回路は1)で述べたようにデコード順にエントリを作成し管理しているため、エントリでは命令順序が常に保障されている。したがって、RSBRLであればRSBR0,RSBR1から、RSBRHであればRSBR10,RSBR11からエントリが開放される。図4の例では異なるストランドのエントリを同時に開放しないため、常にどちらのグループからエントリを開放するかを決定する必要がある。この処理はRSBRのグループごとにその優先権を決定するものであり、どちらのグループにどのスレッドが割り振られているかは一切関係しない。
ここで、RSBRLでRSBR0の開放条件が成立したとする。開放条件が成立すると+RSBR0_COMPLETE_OR=1となる。このとき、RSBRHでRSBR10の開放条件が成立していない場合は、常にRSBRL側が選択され、+RSBR10_COMPLETE_PRIORITY=0(priority信号が0)となる。この信号は、RSBRL,RSBRHどちらのグループにエントリ開放の優先権があるかを示すもので、+RSBR10_COMPLETE_PRIORITY=0の場合はRSBRLに、+RSBR10_COMPLETE_PRIORITY=1の場合はRSBRHに優先権があることを示す。ここで、+RSBR_COMPLETE_ORは、RSBRエントリの開放条件が成立していることを示す信号である。このpriority信号が2つのセレクト回路に入力されることにより、RSBRLとRSBRHのいずれからエントリを放するかが選択される。セレクト回路0からは、RSBR0か、RSBR10のエントリが、BR0_COMPとして出力され、セレクト回路1からは、RSBR1か、RSBR11のエントリが、BR1_COMPとして出力される。
エントリの開放条件が成立していないとは、分岐判定が終了していない、分岐先アドレスが確定していない、命令再フェッチが必要な場合でフェッチ要求が出せていない、エントリに対応する分岐遅延命令が発行されていない、エントリが存在していない、分岐するエントリで分岐先アドレスバッファに空きがない、のいずれかの場合である。+RSBR0_COMPLETE_OR=1と+RSBR10_COMPLETE_OR=1が同時に成立した場合は、前サイクルでRSBRLからエントリが開放されていなければ+RSBR10_COMPLETE_PRIORITY=0となり、RSBRLに優先権が渡される。この場合、次サイクルでは必ず+RSBR10_COMPLETE_PRIORITY=1となり、RSBRHに優先権が渡される。RSBRL,RSBRHで開放条件が同時に成立している間は、RSBRL,RSBRH,RSBRL,RSBRH・・・の順で優先権が移動する。RSBRHが優勢権を獲得できるのはRSBRLで開放条件が成立していない、若しくは、前サイクルでRSBRLからエントリが開放されているときである。それ以外の場合はRSBRLに優勢権がある。
+RSBR_COMPLETE_OR=1で+RSBR_COMPLETE_PRIOITY=1であると、エントリを開放することができる。エントリの開放時に、同一ストランドでの分岐命令順序を守らなければならないため、RSBR1はRSBR0と、RSBR11はRSBR10と同時にしかエントリの開放は行われない。エントリの開放と同時に、分岐命令制御回路は、そのエントリを消去する。エントリの消去とは、+RSBR_VALIDを1→0にすることである。例えば、RSBR0とRSBR1が同時に開放された場合は、+RSBR0_VALID=1->0,+RSBR1_VALID=1->0となる。
本実施形態では、エントリをバブルアップ方式で管理しており、開放されたエントリ分だけエントリがバブルアップする。バブルアップ順はRSBR6->RSBR5->RSBR4->RSBR3->RSBR2->RSBR1->RSBR0となる。RSBRHも同様である。したがって、RSBR2以降にエントリが存在した場合は、RSBR0,RSBR1のVALIDはそのままとなる場合もある。エントリデータは、バブルアップ処理によって書き換えられる。分岐命令制御回路からエントリが開放されると同時に、その情報が命令コミット制御回路に通知される。分岐命令制御回路から開放された分岐命令は、命令コミット制御回路によって制御される。
図6を参照して、シングルスレッド時の処理について説明する。エントリの開放については、分岐命令制御回路で同一ストランドでの分岐命令順序を守らなければならないという点は変わらない。シングルスレッド時はストランド選択は発生しないが、1)で述べたようにRSBRL,RSBRHの両方にエントリが存在する場合がある。同一グループ内では命令順序が保障されているが、RSBRL,RSBRHのどちらが先行命令グループであるかを判別する必要がある。これを判別するために前述した+RSBR10_COMPLETE_PRIORITY(priority信号)を使用する。このpriority信号が2つのセレクト回路に入力されることにより、RSBRLとRSBRHのいずれからエントリを放するかが選択される。セレクト回路0からは、RSBR0か、RSBR10のエントリが、BR0_COMPとして出力され、セレクト回路1からは、RSBR1か、RSBR11のエントリが、BR1_COMPとして出力される。
RSBRLにエントリがあり、RSBRHにエントリがない場合は、+RSBR10_COMPLETE_PRIORITY=0とする。一方、RSBRHにエントリがありRSBRLにエントリがない場合は、RSBR10_COMPLETE_PRIORITY=1とする。RSBRL,RSBRHの両方にエントリがある場合は、先行命令グループを指す。例えば、RSBRL,RSBRHの両方にエントリがあり、RSBRLが先行命令グループであるとする。RSBRLが先行命令グループなので、+RSBR10_COMPLETE_PRIORITY=0となる。RSBRLの最後のエントリが開放されると+RSBR10_COMPLETE_PRIORITY=1となる。後はこの繰り返しでRSBRL,RSBRH,RSBRL,RSBRH・・・の順で優先権が移動する。優先権の移動は反対グループのエントリがなくなると発生する。その他の動作についてはシングル時とマルチ時で同一動作である。
開放の優先権を指す信号として、上記実施形態では、+RSBR10_COMPLETE_PRIORITYという1本の信号で説明しているが、命令制御装置で3スレッド以上同時に実行する場合は、この信号を実行するスレッド数によって信号数を増やせばよい。具体的に説明すると、本実施形態では、+RSBR10_COMPLETE_PRIORITYはポインタのような概念として設計されているので、2スレッドであれば1ビットで足りる。スレッド数が3スレッドないし4スレッドであれば、1ビット追加して2ビットあれば設計可能であり、[1:0]とし00:スレッド0,01:スレッド1,10:スレッド2,11:スレッド3とすればよい。
3)分岐先アドレスの管理について
分岐命令は、分岐先アドレスの計算方法で2種類に分けることができる。分岐命令アドレスからオペコードで指定された命令数分のアドレスを計算して分岐先アドレスとする命令相対分岐、オペコードで指定されたレジスタを参照して分岐先アドレスを計算するレジスタ相対分岐である。本実施形態では、命令相対分岐は命令相対分岐アドレス生成回路、レジスタ相対分岐は演算ユニットで分岐先アドレスが計算される。命令相対分岐はデコードサイクルでアドレス計算され、デコーダから分岐命令が投入されると同時に分岐先アドレスが分岐命令制御回路に渡される。この時、分岐予測が行われていた場合は、分岐予測アドレスと計算された分岐先アドレスとが比較され、その結果が分岐命令制御回路に通知される。レジスタ相対分岐はデコード後の演算サイクルで計算され、分岐先アドレスが分岐命令制御回路に渡される。分岐予測が行われていた場合は、分岐予測アドレスと計算された分岐先アドレスとが分岐命令制御回路で比較される。分岐命令が分岐命令制御回路下にいる間、分岐先アドレスはエントリ毎にエントリデータとして管理される。
分岐命令制御が終了しエントリが開放されると同時に、分岐先アドレスが分岐先アドレスバッファに渡される。渡されるアドレスは分岐判定後、分岐する命令の分岐先アドレスのみである。
図8及び図9は、分岐先アドレスバッファの動作を説明する図である。
本実施形態では実装配線量、トランジスタ数を節約するため、分岐先アドレスバッファへ渡されるデータは1命令分としている。分岐先アドレスバッファへは、分岐先アドレスのほかに+COMPLETE_RSBR_IID[5:0],+COMPLETE_RSBR_STRAND_IDが渡される。ここで、+COMPLETE_RSBR_IIDは、分岐先アドレスバッファに渡されるアドレスの命令IDを示す信号である。+COMPLETE_RSBR_STRAND_IDは、分岐先アドレスバッファに渡されるアドレスのストランドIDを示す信号である。
分岐先アドレスバッファは、分岐命令が分岐命令制御回路から開放された後、命令がコミット(命令完了)して、PC(program counter),nPC(next program counter)が更新されるまで、分岐先アドレスを管理する。分岐する命令がコミットすると、命令コミット制御回路から+LOAD_TARGET_TO_NPC,+COMMIT_STRAND_IDが送られる。分岐先アドレスバッファは、この情報をもとにnPC更新とエントリ消去をする。エントリが消去される条件として、このほかに先行命令による割り込み処理などがある。本実施形態では、分岐する分岐命令によるnPC更新は一サイクルに1ストランド1命令のみとしている。ここで、+LOAD_TARGET_TO_NPCは、分岐した命令がコミットし分岐先アドレスバッファからnPCへの更新を示す信号である。+COMMIT_STRAND_IDは、コミットした命令のストランドIDを示す。
分岐先アドレスバッファがフル状態になると+RSBR_TGT_BUFF_BUSY=1となり、分岐命令制御回路から分岐する命令が開放されなくなる。分岐しない命令については開放するが、2)で述べたように、エントリの開放については、分岐命令制御回路で、同一ストランドでの分岐命令順序を守らなければならないという制約があるため、いずれ開放処理が一時停止する可能性がある。分岐先アドレスバッファがフル状態になるのは、分岐する命令の先行命令のコミット処理が遅れることによる影響である。ここで、+RSBR_TGT_BUFF_BUSYは、分岐先アドレスバッファに空きエントリがなくなったことを示す信号である。
分岐先アドレスバッファは、合計4エントリで構成されており、それぞれTGT_BUFF_0,TGT_BUFF_1,TGT_BUFF_2,TGT_BUFF_3とする。分岐先アドレスバッファもRSBR等と同様に、エントリはバブルアップ方式で2グループ(TGT_BUFF_0,1とTGT_BUFF_2,3)に分けられる。
マルチストランド時(図8)は、TGT_BUFF_0,1にストランド0、TGT_BUFF_2,3にストランド1の分岐先アドレスが割り振られ、バブルアップはTGT_BUFF_1->TGT_BUFF_0,TGT_BUFF_3->TGT_BUFF_2の順である。ネクストプログラムカウンタ(nPC)は、各ストランドに設けられており、LOAD_TARGET_TO_NPC信号が入力されると、TGT_BUFF_0のアドレスがストランド0用のnPCを、TGT_BUFF_2のアドレスがストランド1用のnPCを更新するのに用いられる。
シングルストランド時(図9)は、TGT_BUFF_0,1,2,3に分岐先アドレスが割り振られ、バブルアップはTGT_BUFF_3->TGT_BUFF_2->TGT_BUFF_1->TGT_BUFF_0の順である。ネクストプログラムカウンタ(nPC)は、各ストランドに設けられているが、シングルストランド時には、ストランド1用のnPCは使用されない。LOAD_TARGET_TO_NPC信号が入力されると、TGT_BUFF_0のアドレスがストランド0用のnPCを更新するのに用いられる。
以上が、マルチスレッド時とシングルスレッド時のエントリ制御方法である。このほかに、イベント発生時に使用するエントリ数に制限をかけることができる。
具体的には、RSBR,DSS,TGT_BUFFのエントリ数に制限をかけることができる。RSBR,DSSは+PLID_RSBR、TGT_BUFFは+RSBR_TGT_BUFF_BUSYを1にするエントリのフル状態の条件を変えることが可能である。通常は命令処理装置の性能確保のためすべてのエントリを使い切ることを前提としているが、特定条件下において、使用するエントリ数を削減したい場合に使用できる。イベントはどのようなものでも構わないが、例として性能削減したい場合や電力削減したい場合などが考えられる。
図10〜図13は、RSBRの使用エントリ数の制御について説明する図である。
図10は、ストランドが2個で、RSBRの使用エントリ数をそれぞれ4つずつに限定した図である。RSBR0〜RSBR3はストランド0(1)が使用し、RSBR10〜RSBR13はストランド1(0)が使用している。RSBR4〜RSBR6とRSBR14〜RSBR16は、未使用のエントリである。図11は、RSBRの全てのエントリを使用した場合の図である。RSBR0〜RSBR6がストランド0(1)によって使用され、RSBR10〜RSBR16がストランド1(0)によって使用されている。図12は、ストランドが1つで、RSBRの使用エントリ数を7個に制限した場合の図である。RSBR0〜RSBR6が使用されているが、RSBR10〜RSBR16は使用されていない。図13は、ストランドが1個で、RSBRの使用エントリ数を制限していない場合を示す。14個の全てのエントリが使用される。
図14〜図16は、priority信号を生成する回路のゲート図を示す。
これらの回路は、分岐命令制御回路11内に設けられる回路である。ストランドが2個の場合の回路(図14、15)とストランドが1個の場合の回路(図16)は、並列して設けられ、ストランドの数にしたがって、どちらかが動作する。
図14、15が、ストランドが2個の場合であり、図16が、ストランドが1個の場合である。
以下は、図14〜図16において現れる信号名とその説明である。
+RSBR0_VALID:RSBR0のエントリ有効であることを示す。
+RSBR0_RESOLVED:RSBR0の分岐判定が確定していることを示す。
+RSBR0_TAV:RSBR0の分岐先アドレスが確定していることを示す。
+TWO_STRAND_MODE:プロセスマシンチェック回路からの指示信号で実行パイプラインが2スレッド実行(マルチスレッド実行)していることを示す
+RSBR0_TAKEN:RSBR0の分岐判定が確定し、分岐することを示す。
+RSBR0_TGT_BUFF_BUSY:RSBR0が使用する分岐先アドレスバッファに空きエントリが存在していないことを示す。
+RSBR0_COMPLETE:RSBR0のエントリ開放が発生していることを示す。
+RESET_RSBR0_VALID:RSBR0のエントリをリセットしなければならないことを示す。リセット条件は実行パイプラインクリア指示(プロセスマシンチェック回路が指示)、エントリ開放である。RSBR10の信号についても同様である。
なお、RSBRの後の数字は、RSBRのエントリの番号を示す。したがって、RSBR0_VALIDは、RSBR0に関する信号であるが、RSBR10_VALIDは、RSBR10に関する信号である。
図14において、
・2ストランド実行中で、RSBR0エントリの分岐命令の開放条件が揃っていない。
・2ストランド実行中で、RSBR0エントリが分岐する命令であり、且つRSBR0(RSBRL側)が使用できる分岐先アドレスバッファに空きエントリが存在しておらず、エントリ開放ができない。
・2ストランド実行中で、RSBR0エントリの分岐命令が開放された。この条件によりストランド0,1ともに開放条件が揃っているときに、0,1交互に開放することが可能となる。
・RSBR0エントリのリセット要求がきている。
上記いずれかの条件が成立した時に+RSBR10_COMP_PRIO_TERM=1となる。
図15において、
・2ストランド実行中で、RSBR10エントリの分岐命令の開放条件が揃っている。
・+RSBR10_COMP_PRIO_TERM=1である。
上記、全ての条件が揃ったときに+SET_RSBR10_COMPLETE_PRIORITY=1となる。
この信号は、前述の+RSBR10_COMPLETE_PRIORITY(priority信号)のセット信号である。RSBRのストランドを選択する信号である+RSBR10_COMPLETE_PRIORITYは、+SET_RSBR10_COMPLETE_PRIORITYの値をラッチ(フリップフロップ)でラッチして、出力したものである。
図16は、ストランドが1個の場合の回路を示す。図16における信号で、上記で出てきていない信号の意味は、以下の通りである。
+ONE_STRAND_MODE:プロセスマシンチェック回路からの指示信号で実行パイプラインがシングルスレッド実行していることを示す。
図16において、
・シングルスレッド実行中で、RSBR0にエントリが存在していない。
・シングルスレッド実行中で、+RSBR10_COMPLETE_PRIORITYがすでに1である。
・RSBR0エントリのリセット要求がきている。
上記いずれかの条件が揃い、且つRSBR10にエントリが存在しているときに、前述の+SET_RSBR10_COMPLETE_PRIORITY=1となる。
この信号は+RSBR10_COMPLETE_PRIORITY(priority信号)のセット信号である。+RSBR10_COMPLETE_PRIORITYは、+SET_RSBR10_COMPLETE_PRIORITYの値をラッチ(フリップフロップ)でラッチして、出力したものである。
図17は、ストランドがn個の場合のRSBRの構成例を示した図である。
RSBR_COMPLETE_PRIORITY[x:0]は、どのストランドの分岐命令を優先的に開放するかを指示するポインタである。xは2^(x+1)≧nにより決まる。分岐命令をリザベーションステーションから開放する場合は、分岐命令制御が完了しており、ポインタの示すストランドから優先的に選択され開放される。命令デコーダから命令が投入されると、DサイクルでストランドIDがセレクト回路に与えられ、ストランドIDに対応したストランドのエントリに命令が格納される。命令コミット制御回路から、RSBR0〜RSBRn0のいずれかについて分岐命令制御が完了したと通知された場合には、RSBR_COMPLETE_PRIORITY[x:0](セレクト信号)によって、セレクト回路が放するストランドのエントリを選択し、開放されたエントリをBR_COMPとして出力する。図17では、スレッド数をn個としている。
なお、実行パイプライン上で、優先的に実行するストランドがプロセスマシンチェック回路から指示される。指示されるのはシングルスレッド実行か2スレッド実行(マルチスレッド実行)であるか、シングルスレッド実行の場合はストランド0かストランド1のどちらを実行するかである。シングルスレッド実行か、マルチスレッド実行かを決定するのはプロセスマシンチェック回路であるが、考えられる制御としては実行プログラムからの指示によるもの、ハードウェアの故障によりマルチスレッド実行が困難になった場合などが考えられる。シングルスレッド実行か、マルチスレッド実行かを決定する要因については、前述している要因以外でもよい。シングルスレッド実行⇔マルチスレッド実行の切り替え時は、実行パイプライン上の命令が一旦クリアされ、命令フェッチから再実行となる。
なお、以上において、スレッド数(ストランド数)の変更があった場合には、これをプロセスマシンチェック回路が検出し、分岐リザベーションステーション、遅延命令スタック、分岐先アドレスバッファに、ストランド数を設定することにより、動的にスレッド数の変更に対応することが出来る。
以上のように、複数スレッドを同時に実行する場合には、分岐リザベーションステーション、遅延命令スタック、分岐先アドレスバッファのエントリをスレッド数にグループ分けして、それぞれのスレッドで独立してエントリを使うようにし、単一スレッドのときは、これらのエントリをグループ分けすることなく、当該スレッドで使用するようにする。単一スレッドの場合と複数スレッドの場合で、エントリを適切にグループ分けして使用することにより、無駄に未使用となっているエントリの数を減らすことによって、情報処理装置の持っているハードウェア資源の有効利用を行なうことができる。

Claims (6)

  1. 一又は複数のスレッド実行可能な演算処理装置において、
    前記一又は複数のスレッドに含まれる命令をデコードする命令デコード部と、
    前記命令デコード部がデコードした命令が属する前記一又は複数のスレッドを実行する命令実行部と、
    前記命令デコード部がデコードした命令のうち分岐命令を、それぞれ保持する分岐命令エントリを複数有する分岐リザベーションステーション部と、
    前記命令デコード部がデコードした命令のうち分岐遅延命令を、前記分岐命令エントリに対応してそれぞれ保持する分岐遅延命令エントリを複数有する遅延命令スタック部と、
    前記命令実行部が実行しているスレッドの数である実行スレッド数を検出するスレッド数検出と、
    検出された前記実行スレッド数に応じて、前記分岐リザベーションステーション部が有する複数の分岐命令エントリと前記遅延命令スタック部が有する複数の分岐遅延命令エントリ、前記命令実行部が実行している各スレッドに対応するようにグループ分けし、各分岐命令エントリが保持する分岐命令と各分岐遅延命令エントリが保持する分岐遅延命令の処理を、各スレッドに対応してグループ分けされた分岐命令エントリ群毎及び分岐遅延命令エントリ群毎にアウトオブオーダーで行い、各スレッドに対応する前記分岐命令エントリ群内及び前記分岐遅延命令エントリ群内で分岐命令エントリ又は分岐遅延命令エントリ放がインオーダーとなるように、選択されたスレッドに対応する分岐命令エントリ群に含まれる分岐命令エントリ又は選択されたスレッドに対応する分岐遅延命令エントリ群に含まれる遅延分岐命令エントリの放を行なう分岐命令制御部と、
    を備えることを特徴とする演算処理装置。
  2. 前記分岐命令制御部は、
    前記分岐リザベーションステーション部が有する前記複数の分岐命令エントリのうち、一部の分岐命令エントリを使用不可にするとともに、前記遅延命令スタック部が有する前記複数の遅延分岐命令エントリのうち、一部の遅延分岐命令エントリを使用不可にすることを特徴とする請求項1記載の演算処理装置。
  3. 前記分岐命令制御部は、
    検出された前記実行スレッド数の変化に応じて、前記分岐リザベーションステーション部が有する複数の分岐命令エントリと前記遅延命令スタック部が有する複数の分岐遅延命令エントリのグループ分けを、動的に行なうことを特徴とする請求項1記載の演算処理装置。
  4. 前記演算処理装置はさらに
    開放された前記分岐リザベーションステーションの分岐命令エントリに保持された分岐命令の分岐先アドレスを、それぞれ保持する分岐先アドレスエントリを複数有する分岐先アドレスバッファ部を有し、
    前記分岐命令制御部は、
    検出された前記実行スレッド数に応じて、前記分岐アドレスバッファ部が有する複数の分岐先アドレスエントリを、前記命令実行部が実行している各スレッドに対応するようにグループ分けし、各スレッドに対応してグループ分けされた分岐先アドレスエントリ群に分岐先アドレスをそれぞれ格納し、選択されたスレッドに対応する分岐先アドレスエントリ群に含まれる分岐先アドレスエントリの開放を行なうことを特徴とする請求項1記載の演算処理装置。
  5. 前記分岐命令制御部は、
    前記分岐先アドレスバッファ部が有する前記複数の分岐先アドレスエントリのうち、一部の分岐先アドレスエントリを使用不可することを特徴とする請求項に記載の演算処理装置。
  6. 前記分岐命令制御部は、
    検出された前記実行スレッド数の変化に応じて、前記分岐先アドレスバッファ部が有する複数の分岐先アドレスエントリのグループ分けを、動的に行なうことを特徴とする請求項に記載の演算処理装置。
JP2009520135A 2007-06-19 2007-06-19 演算処理装置 Active JP5104861B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/000646 WO2008155794A1 (ja) 2007-06-19 2007-06-19 情報処理装置

Publications (2)

Publication Number Publication Date
JPWO2008155794A1 JPWO2008155794A1 (ja) 2010-08-26
JP5104861B2 true JP5104861B2 (ja) 2012-12-19

Family

ID=40155959

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009520135A Active JP5104861B2 (ja) 2007-06-19 2007-06-19 演算処理装置

Country Status (6)

Country Link
US (1) US8151097B2 (ja)
EP (1) EP2159686B1 (ja)
JP (1) JP5104861B2 (ja)
KR (1) KR101100144B1 (ja)
CN (1) CN101715576B (ja)
WO (1) WO2008155794A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5861354B2 (ja) * 2011-09-22 2016-02-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9280398B2 (en) 2012-01-31 2016-03-08 International Business Machines Corporation Major branch instructions
US9229722B2 (en) 2012-01-31 2016-01-05 International Business Machines Corporation Major branch instructions with transactional memory
JP2014137732A (ja) * 2013-01-17 2014-07-28 Fujitsu Ltd 情報処理システム及び情報処理システムの制御方法
CN107567614B (zh) * 2015-06-01 2022-05-24 英特尔公司 用于对根据关键度被分组的指令的缕程的执行的多核处理器
US10175985B2 (en) 2016-03-28 2019-01-08 International Business Machines Corporation Mechanism for using a reservation station as a scratch register
US10831607B2 (en) * 2018-07-30 2020-11-10 International Business Machines Corporation Dynamic transaction throttling in a data processing system supporting transactional memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005514698A (ja) * 2001-12-31 2005-05-19 インテル コーポレイション マルチスレッドプロセッサのスレッドの実行のサスペンド処理
JP2005309762A (ja) * 2004-04-21 2005-11-04 Fujitsu Ltd スレッド切替制御装置。
JP3716415B2 (ja) * 2003-04-28 2005-11-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 同時マルチスレッドのための分割分岐履歴テーブルおよびカウント・キャッシュ
WO2006114874A1 (ja) * 2005-04-21 2006-11-02 Fujitsu Limited プロセッサ装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6441530A (en) 1987-08-07 1989-02-13 Sumitomo Electric Industries Mobile communication system
US5778243A (en) 1996-07-03 1998-07-07 International Business Machines Corporation Multi-threaded cell for a memory
US6233599B1 (en) * 1997-07-10 2001-05-15 International Business Machines Corporation Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers
US6889319B1 (en) 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US7051329B1 (en) 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
US20010037447A1 (en) * 2000-04-19 2001-11-01 Mukherjee Shubhendu S. Simultaneous and redundantly threaded processor branch outcome queue
US6748556B1 (en) 2000-08-15 2004-06-08 International Business Machines Corporation Changing the thread capacity of a multithreaded computer processor
US6681345B1 (en) * 2000-08-15 2004-01-20 International Business Machines Corporation Field protection against thread loss in a multithreaded computer processor
US6988186B2 (en) * 2001-06-28 2006-01-17 International Business Machines Corporation Shared resource queue for simultaneous multithreading processing wherein entries allocated to different threads are capable of being interspersed among each other and a head pointer for one thread is capable of wrapping around its own tail in order to access a free entry
JP3839755B2 (ja) * 2002-06-28 2006-11-01 富士通株式会社 命令制御方法及びプロセッサ
JP3926809B2 (ja) 2004-07-27 2007-06-06 富士通株式会社 分岐命令制御装置、および制御方法。
US20060168571A1 (en) * 2005-01-27 2006-07-27 International Business Machines Corporation System and method for optimized task scheduling in a heterogeneous data processing system
US7882505B2 (en) * 2005-03-25 2011-02-01 Oracle America, Inc. Method and apparatus for switching between per-thread and per-processor resource pools in multi-threaded programs
US7577826B2 (en) * 2006-01-30 2009-08-18 Sony Computer Entertainment Inc. Stall prediction thread management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005514698A (ja) * 2001-12-31 2005-05-19 インテル コーポレイション マルチスレッドプロセッサのスレッドの実行のサスペンド処理
JP3716415B2 (ja) * 2003-04-28 2005-11-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 同時マルチスレッドのための分割分岐履歴テーブルおよびカウント・キャッシュ
JP2005309762A (ja) * 2004-04-21 2005-11-04 Fujitsu Ltd スレッド切替制御装置。
WO2006114874A1 (ja) * 2005-04-21 2006-11-02 Fujitsu Limited プロセッサ装置

Also Published As

Publication number Publication date
EP2159686B1 (en) 2019-01-09
WO2008155794A1 (ja) 2008-12-24
KR20100007996A (ko) 2010-01-22
KR101100144B1 (ko) 2011-12-29
EP2159686A1 (en) 2010-03-03
EP2159686A4 (en) 2011-11-30
CN101715576B (zh) 2013-04-17
CN101715576A (zh) 2010-05-26
US20100082952A1 (en) 2010-04-01
US8151097B2 (en) 2012-04-03
JPWO2008155794A1 (ja) 2010-08-26

Similar Documents

Publication Publication Date Title
JP5104861B2 (ja) 演算処理装置
US7051329B1 (en) Method and apparatus for managing resources in a multithreaded processor
TWI467479B (zh) 用於組構具有階段特定性執行緒選擇之處理管線的系統及其方法
EP2453350B1 (en) Processing device
US7707391B2 (en) Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
JP5548037B2 (ja) 命令発行制御装置及び方法
US8386753B2 (en) Completion arbitration for more than two threads based on resource limitations
JP5861354B2 (ja) 演算処理装置及び演算処理装置の制御方法
CN105242963B (zh) 执行机构间的切换控制
WO2009006607A1 (en) Dynamically composing processor cores to form logical processors
JP2009053861A (ja) プログラム実行制御装置
JP4327008B2 (ja) 演算処理装置及び演算処理装置の制御方法
EP2159691B1 (en) Simultaneous multithreaded instruction completion controller
US7237093B1 (en) Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams
US7328327B2 (en) Technique for reducing traffic in an instruction fetch unit of a chip multiprocessor
CN100377076C (zh) 一种应用于同时多线程处理器的取指控制装置及其方法
WO2004061649A2 (en) Method and apparatus for processing multiple instruction strands
Wu et al. A dynamically clustered chip multiprocessor

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120803

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 5104861

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

Year of fee payment: 3