JPWO2008155800A1 - 命令実行制御装置及び命令実行制御方法 - Google Patents

命令実行制御装置及び命令実行制御方法 Download PDF

Info

Publication number
JPWO2008155800A1
JPWO2008155800A1 JP2009520141A JP2009520141A JPWO2008155800A1 JP WO2008155800 A1 JPWO2008155800 A1 JP WO2008155800A1 JP 2009520141 A JP2009520141 A JP 2009520141A JP 2009520141 A JP2009520141 A JP 2009520141A JP WO2008155800 A1 JPWO2008155800 A1 JP WO2008155800A1
Authority
JP
Japan
Prior art keywords
thread
instruction
entry
execution control
reservation station
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
JP2009520141A
Other languages
English (en)
Other versions
JP5104863B2 (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 JPWO2008155800A1 publication Critical patent/JPWO2008155800A1/ja
Application granted granted Critical
Publication of JP5104863B2 publication Critical patent/JP5104863B2/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/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
    • 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
    • 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

Abstract

複数のスレッドを同時マルチスレッド方式で動作するための命令実行制御装置において、同時マルチスレッドで動作しているときに、命令が、一定期間完了していない状態を検出し、全てのリザベーションステーション(5,6,7)が、決められたスレッドしか実行できないように制御するスレッド選択回路(30)を設けた。リザベーションステーション(5,6,7)から実行できないエントリがいる状態の場合には、実行され続けているスレッドの実行を停止することで、実行できないスレッドのエントリを実行可能な状態にすることができる。

Description

本発明は、複数のスレッドが、同時マルチスレッド方式で動作して、アウト・オブ・オーダー処理で、命令制御を行う命令実行制御装置及び命令実行制御方法に関し、特に、同時マルチスレッド方式で動作する場合のハング状態の発生を防止する命令実行制御装置及び命令実行制御方法に関する。
CPU(Central Processor Unit)の処理の高速化が、要求されている。このため、従来から様々な技術を使用してCPUの処理を向上させてきた。その方法として、パイプライン処理や、並列に処理を行うスーパースカラ方式や、プログラム命令の順番通りに実行を行わずに、入力データが揃った命令から実行を行うアウト・オブ・オーダー実行方式がある。
アウト・オブ・オーダー実行方式は、先の命令処理に必要なデータが揃っていなくても、後の命令処理に必要なデータが揃えっていた場合、後の命令から先に実行するCPUの性能を向上するための技術である(例えば、特許文献1参照)。
例えば、プログラムに記述された順に命令を処理する場合に、先の命令処理1が、メモリアクセスを伴う命令であり、後の命令処理2が、メモリアクセスを伴わない命令であると仮定すると、命令処理1のメモリアクセスと並行して、命令処理2を実行し、命令処理2の実行後、メモリアクセスの終了した命令処理1を実行する。
さらに、単一のプログラムを走行するのではなく、複数のプログラムを走行することで、CPUの処理を向上させるマルチスレッド方式も提案されている(例えば、特許文献2参照)。
複数のプログラムを走行するマルチスレッド方式は、CPUのプログラマブルな資源を、複数組用意しておくことで、ソフトウェアから見ると、見掛け上は、複数のCPUに見えるために、複数のプログラムを実行することが可能となる構造である。
このマルチスレッドの方式の1つとして、VMT(Vertical
Multi Threading)方式がある。この方式は、同時に、1つのプログラムしか走行できないが、長時間のデータ待ちが発生したときや、一定の時間の間隔などで、プログラムを切り替えて走行する。VMT方式の回路量は、プログラマブルな資源を、プログラムの数分用意しなければならないが、同時に、1つのプログラムが走行するために、追加する回路量も少なく、実現が容易である。
一方、別のマルチスレッドの方式として、複数のプログラムを同時に走行する同時マルチスレッド方式(SMT方式)がある。この方式は、複数のプログラムが同時に走行するために、単一のプログラムが走行していたときよりも、回路の制御が複雑になることや、リソースの増加が予想されるが、同時に複数のプログラムが走行するために、効率よく回路を使用することが可能となる。
アウト・オブ・オーダー実行を処理するためのリザベーションステーションの制御は、機能の実行の準備ができたエントリから機能の実行を行うことを可能とする。
機能の実行がパイプライン処理で行われ、機能の実行に必要な時間が異なる種類の命令を実行する場合、リザベーションステーションは、機能の実行の結果を出力するタイミングが、同じにならないように、エントリの実行を制御する。
図15は、浮動小数点用リザベーションステーションのエントリ実行制御のタイムチャート図である。浮動小数点演算では、パイプライン処理で実行された結果は、結果レジスタに格納されるが、リザベーションステーションは、結果レジスタに格納するタイミングが、重ならないように実行するエントリを選択する。
図15において、リザベーションステーションから実行されるエントリが、実行に4サイクル必要なエントリ(先行命令)であり、後続の命令が、実行に2サイクル必要なエントリである場合の後続の命令の制御例を示す。
図15において、T1〜T7は、サイクル、Pは、リザベーションステーションから実行エントリを選択する処理、Bは、機能の実行に必要なオペランドデータの読み出し処理、Xは、機能実行及び最後のサイクルで実行結果を結果レジスタに格納する処理、Uは、機能の実行の結果をレジスタ更新バッファに格納する処理を示す。
先行命令は、機能実行にX1,X2,X3,X4の4サイクル必要であり、後続命令は、機能実行にX1,X2の2サイクル必要である。サイクルT1で、リザベーションステーションが、先行命令を選択した場合、Uが重ならないため、T2のタイミングでは、2サイクルの後続命令は実行可能となる。T3のタイミングでは、2サイクルの後続命令を実行した場合、4サイクルの先行命令と、結果レジスタに格納するタイミングU(T7)が同じになるため、実行不可能となる。そして、T4のタイミングでは、2サイクルの後続命令は実行可能となる。
図16は、このようなパイプライン制御のリザベーションステーションの選択動作により、単一スレッドで動作している場合のエントリ実行例を示す、図中、P,B,X,Uが示すものは、図15で示したものと同一である。
図16は、実行に4サイクル必要なエントリが連続して、リザベーションステーションから選択されているときに、実行に2サイクル必要なエントリが命令デコーダからデコードされ、その後には、実行に4サイクル必要なエントリが、命令デコーダから連続してデコードされた状況のタイムチャートである。
リザベーションステーションは、実行可能となったエントリからエントリを発行(実行)する。又、同時に幾つも実行可能なエントリがある場合については、デコードされた順番通りにエントリを選択して実行する。
このために、機能の実行の準備ができているエントリであったとしても、先に実行しているエントリの結果を出力するタイミングによって実行可能なエントリにならないエントリが発生する場合がある。
このような状況が連続して長時間続く場合になると、リザベーションステーションから実行することができなくなる。図16では、実行に2サイクル必要なエントリは、実行可能となって、リザベーションステーションから実行しようとしても、4サイクルの先行命令と結果レジスタに格納するタイミングが同じになるため、実行不可能な状態になる。
単一スレッドの場合には、リザベーションステーションから発行できない状態になってから、ある一定数の命令が、命令デコーダからデコードされると、命令完了制御機能のエントリがFULL状態となる。
即ち、リザベーションステーションから発行できないために、命令の完了ができなくなるためである。後続の命令は、リザベーションステーションからは実行できるが、命令の完了はできない状態となる。
このために、命令の完了を制御する機能のエントリがFULL状態となり、命令デコーダから命令がデコードされない状態(命令デコーダが停止した状態)となる。命令がデコードされないために、リザベーションステーションに新たなエントリが作成されないために、実行できなかったエントリ(図16の2サイクルのエントリ)が、例えば、サイクルT5で、実行することができるようになり、命令の完了も可能となる。
特開2007−87108号公報 特表2006−502504号公報(WO2004/034209号)
一方、同時マルチスレッド方式では、リザベーションステーションのエントリを、スレッド間で共有して構成する場合、リザベーションステーションのエントリのスレッドに関係なく、機能の実行の準備ができたエントリの内、先に実行しているエントリの結果を出力するタイミングが同じにならないようなエントリを、実行可能なエントリとして、リザベーションステーションから選択され、実行される。
この同時マルチスレッド方式においても、シングルスレッド方式と同様に、機能の実行の準備ができているエントリであったとしても、先に実行しているエントリの結果を出力するタイミングによって実行可能なエントリにならないエントリが発生する場合がある。このような状況が連続して長時間続く場合になると、リザベーションステーションから実行することができなくなる。
図17は、同時マルチスレッドで2つのスレッド0,1が動作しているときに、スレッド0に、実行に4サイクル必要なエントリが、連続してリザベーションステーションから実行され、命令デコーダから、実行に4サイクル必要な命令がデコードされている状況の例を示す。
このような状況において、スレッド1に、実行に2サイクル必要なエントリが命令デコーダからデコードされ、その後には、スレッド0に実行に4サイクル必要なエントリが連続してデコードされると、実行に2サイクル必要なスレッド1のエントリは、リザベーションステーションから実行しようとしても、先行命令と、結果レジスタに格納するタイミングが同じになるため、実行不可能な状態になる。
同時マルチスレッドの場合には、シングルスレッド方式とは、異なり、リザベーションステーションから実行できないエントリが発生した場合でも、他のスレッドは、リソースがFULL状態になることはなく、動作することが可能なために、単一スレッドのように、命令デコーダは停止することがない。
即ち、同時マルチスレッド方式では、スレッド0の命令は、命令を実行した後も、完了することができるので、命令デコーダは、スレッド0の命令をデコードすることが可能である。このため、スレッド0が止まらずに動作し続けることが可能である。
しかし、スレッド1のエントリは、リザベーションステーションから実行できない状態となるために、命令を完了することができなくなり、ハング状態に陥ってしまうことになる。
即ち、リザベーションステーションから実行できない状態の場合、一定期間命令を完了することができていない状態(ハング状態)を異常状態として検出して、CPUが停止することになる。
従って、本発明の目的は、同時マルチスレッド方式の処理において、ハング状態になる前に、リザベーションステーションのエントリを実行可能な状態にするための命令実行制御装置及び命令実行制御方法を提供することにある。
又、本発明の他の目的は、同時マルチスレッド方式の処理において、リザベーションステーションのエントリを実行可能な状態にするとともに、大幅な性能低下を防止するための命令実行制御装置及び命令実行制御方法を提供することにある。
更に、本発明の別の目的は、同時マルチスレッド方式の処理において、リザベーションステーションのエントリを実行可能な状態にし、CPUの停止を防止するための命令実行制御装置及び命令実行制御方法を提供することにある。
この目的の達成のため、本発明の命令実行制御装置は、複数のスレッドが同時マルチスレッド方式で動作し、アウト・オブ・オーダー処理で命令制御を行う命令実行制御装置において、命令をデコードする命令デコーダと、命令デコーダからの命令を受け、演算処理を制御する演算処理リザベーションステーションと、主記憶オペランドアドレス生成を制御する主記憶リザベーションステーションと、実行された命令をプログラムの順番通りに、命令が完了するように制御する命令制御機構と、前記命令制御機構が、1つのスレッドの命令が一定期間に完了することができないことを検出したことに応じて、前記すべてのリザベーションステーションから実行可能となるエントリのスレッドを、同一のスレッドに選択するように制御するハング防止回路とを有する。
又、本発明の命令実行制御方法は、複数のスレッドが同時マルチスレッド方式で動作し、アウト・オブ・オーダー処理で命令制御を行う命令実行制御方法において、演算処理リザベーションステーションにより、命令デコーダからの命令からエントリを作成し、実行準備の整ったエントリを、演算処理機構に発行するステップと、主記憶リザベーションステーションにより、前記命令からエントリを作成し、実行準備の整ったエントリを、主記憶オペランドアドレス生成器に発行するステップと、実行された命令をプログラムの順番通りに、命令が完了するように制御するステップと、1つのスレッドの命令が一定期間に完了することができないことを検出したことに応じて、前記すべてのリザベーションステーションから実行可能となるエントリのスレッドを、同一のスレッドに選択するステップとを有する。
更に、本発明は、好ましくは、前記ハング防止回路は、前記一定期間に完了することができないことを検出したことに応じて、前記リザベーションステーションから実行するエントリのスレッドを同一のスレッドに選択するためのスレッド選択回路を有する。
更に、本発明は、好ましくは、前記ハング防止回路は、前記スレッド選択回路で選択されたスレッドと、前記リザベーションステーションのエントリのスレッドが一致したときに、前記エントリを、前記リザベーションステーションから実行することが可能とするための実行可能選択回路を更に有する。
更に、本発明は、好ましくは、前記スレッド選択回路は、時間の経過によって選択するスレッドを変更するスレッド選択回路で構成される。
更に、本発明は、好ましくは、前記スレッド選択回路は、動作しているスレッドを示す信号に応じて、動作していないスレッドの選択を禁止する。
更に、本発明は、好ましくは、前記ハング防止回路は、前記完了することができなかった命令が完了した時は、前記リザベーションステーションの制御を停止する。
更に、本発明は、好ましくは、前記リザベーションステーションは、前記命令デコーダからの命令を、前記リザベーションステーションにエントリするエントリ生成回路と、前記リザベーションステーションから実行可能なエントリを選択する実行エントリ選択回路とを有する。
更に、本発明は、好ましくは、前記演算処理リザベーションステーションは、前記実行の準備ができたエントリが、前記先行エントリの実行又は実行結果の格納タイミングと重ならないようなタイミングで、前記実行の準備ができたエントリを実行する。
同時マルチスレッドで動作しているときに、命令が、一定期間完了していない状態を検出し、全てのリザベーションステーションが、決められたスレッドしか実行できないように制御するため、リザベーションステーションから実行できないエントリがいる状態の場合には、実行され続けているスレッドの実行を停止することで、実行できないスレッドのエントリを実行可能な状態にすることができる。
本発明の情報処理装置の一実施の形態のブロック図である。 本発明の一実施の形態の命令実行制御装置の構成図である。 図2の命令実行制御装置の動作フロー図である。 図2の命令実行制御装置の動作説明図である。 図2の命令実行制御装置により、スレッド選択動作の説明図である。 図2のスレッド選択回路のブロック図である。 図6の実行可能選択回路の実行選択処理フロー図である。 図6のスレッド選択回路のスレッド選択動作の説明図である。 図2の浮動小数点リザベーションステーションの動作説明図である。 図2の固定小数点リザベーションステーションの動作説明図である。 図6のスレッド選択回路のスレッド時間変更動作の説明図である。 図6のスレッド決定回路の回路図である。 図6のスレッドID生成回路の回路図である。 図6のスレッド切り替え時間選択回路の回路図である。 従来のリザベーションステーションのエントリ実行動作の説明図である。 従来のシングルスレッド方式のエントリ実行動作の説明図である。 従来のマルチスレッド方式のエントリ実行動作の説明図である。
符号の説明
1 命令フェッチアドレス生成器
2 1次命令キャッシュ
3 命令バッファ
4 命令デコーダ
5,6,7 リザベーションステーション
10 オペランドアドレス生成器
12、15 演算器
13,16 更新バッファ
14、17 レジスタ
30 スレッド選択回路
50,60,70 エントリ生成回路
52,62,72 実行可能選択回路
56,66,76 実行エントリ選択回路
54 主記憶リザベーションステーション
64,74 演算処理リザベーションステーション
以下、本発明の実施の形態を、図面に従い、情報処理装置、命令実行制御装置、ハング防止機構、スレッド選択回路、他の実施の形態の順で説明する。しかし、本発明は、下記実施の形態に限らず、種々の変形が可能である。
(情報処理装置)
図1は、本発明の情報処理装置の一実施の形態の全体図である。図1に示すように、1次命令キャッシュ2と、1次データキャッシュ11は、図示しない主記憶に接続された2次キャッシュに接続する。
命令フェッチを行うために、命令フェッチアドレス生成器1は、命令アドレスを選択し、選択された命令アドレスに対して命令フェッチリクエストを、1次命令キャッシュ2に与える。1次命令キャッシュ2からフェッチされた命令は、命令バッファ3に格納される。命令バッファ3からプログラムの順番通りに、命令デコーダ4に、命令の供給を行う。
命令デコーダ4は、プログラムの順番通りに命令のデコードを行う。命令デコーダ4は、デコードする命令の種類に従って、命令の実行を制御する主記憶オペランドアドレス生成用リザベーションステーションユニット(RSA:Reservation Station for Address generate)5、固定小数点演算用リザベーションステーションユニット(RSE:Reservation
Station for Execute)6、浮動小数点演算用リザベーションステーションユニット(RSF:Reservation Station for
Floating)7、分岐命令用リザベーションステーションユニット(RSBR:Reservation Station for BRanch)8に、必要なエントリを作成する。
即ち、命令デコーダ4は、フェッチしてきた命令を、イン・オーダーでデコードし、デコードされた命令は、機能の実行を制御するリザベーションステーションユニット5,6,7,8,9に、命令の種類によって、それぞれ格納される。そして、リザベーションステーションユニットは、演算用のリザベーションステーションユニット6,7と、主記憶オペランドアドレス生成用のリザベーションステーションユニット5を備える。
また、全てのデコードされた命令に対して、命令の完了を制御するコミットスタックエントリ(CSE:Commit Stack Entry)9に、エントリを作成する。
デコードされた命令が、RSA5にエントリを作成したときに、ロード命令であった場合には、RSA5は、オペランドアドレス生成器10にオペランドアドレスの生成を指示し、1次データキャッシュ11から対応するデータを、固定小数点更新バッファ(GUB:General Update Buffer)13と、浮動小数点更新バッファ(FUB:Floating Update Buffer)16に読み出す。
又、デコードされた命令が、RSE6,RSF7にエントリを作成した場合には、各々演算器12,15を動作し、対応する演算処理を行う。デコードされた命令が、RSA5、RSE6,RSF7にエントリを作成する場合に、GUB13とFUB16に対応するレジスタリネームを行うことで、アウト・オブ・オーダー実行を行うことが可能となり、実行結果は、GUB13、FUB16に格納される。
リザベーションステーション5,6,7により、アウト・オブ・オーダーで実行された命令は、CSE9の制御により、プログラムの順番通りに、命令の完了を行う。そして、完了した命令に対してのみ、固定小数点レジスタ14や浮動小数点レジスタ17やプログラムカウンタ(PC、NEXT_PC)18,19などのプログラマブルな資源の更新を行う。
分岐予測機構21は、分岐命令用リザベーションステーション8からの命令により、分岐予測を行い、命令フェッチアドレス生成器1を制御する。
従って、後述するように、リザベーションステーションユニット5,6,7,8により、演算サイクル毎に、スレッドを選択し、選択されたスレッドのエントリの実行を、オペランドアドレス生成器10、演算器12,15に指示し、且つレジスタ14,17から選択されたスレッドのオペランドデータの読み出し、書込みを行い、同時マルチスレッド処理を実行する。
(命令実行制御装置)
図2は、本発明の命令実行制御装置の一実施の形態のブロック図、図3は、図2の構成の動作フロー図、図4は、図3の動作の説明図、図5は、図2乃至図4の動作による実行スレッドの説明図である。図2は、図1のRSE5、RSE6,RSF7の詳細図を示す。又、この実施の形態では、2つのスレッド(スレッド0と1)が同時に動作する場合について説明するが、スレッド数が3つ以上になっても実現は可能である。
図2において、図1で示したものと同一のものは、同一の記号で示してあり、リザベーションステーションユニット5,6,7は、各々、エントリ生成回路50,60,70、実行可能選択回路52,62,72、リザベーションステーション54,64,74、実行エントリ選択回路56,66,76とで構成される。この各実行可能選択回路52,62,72に、スレッド選択回路30が接続される。
このリザベーションステーションユニット5,6,7のエントリは、スレッド0と1とを共有して使用する。即ち、エントリは、エントリが有効であること示すVALID信号、エントリのスレッドを示すスレッドID、オペランドデータをアーキテクチャレジスタから読み出すことを示す信号と読み出しアドレス、レジスタ更新バッファから読み出すことを示す信号と読み出しアドレス、命令デコード時に命令ごとに割り当てられる命令の番号を示す命令識別子などを格納している。
スレッド選択回路30は、図6にて詳細に説明するように、一定時間完了していない命令を、図1のCSE9が検出したことに応じて、ハング防止モードに走行モードを切り替え、ハング防止スレッドIDを選択する。
実行可能選択回路52,62,72は、ハング防止モードにおいて、エントリ生成回路50,60,70、リザベーションステーション54,64,74のエントリと、スレッド選択回路30のスレッドIDを比較し、実行可能性のあるエントリを選択する。
実行エントリ選択回路56,66,76は、リザベーションステーション54,64,74のエントリから実行可能性のあるエントリを選択し、機能実行部10,12,15へ発行する。
この動作を説明する。複数のスレッドが、同時マルチスレッド方式で動作する場合、リザベーションステーション54,64,74の実行は、アウト・オブ・オーダー実行が可能である。即ち、リザベーションステーション54,64,74のエントリは、実行するための必要なオペランドデータの準備ができたエントリから、実行することが可能となる。
実行するエントリを選択する実行エントリ選択回路46,56,66で選択されたエントリが、リザベーションステーション54,64,74から実行される。実行する準備のできたエントリが、同時に幾つもある場合には、実行エントリ選択回路46,56,66は、デコードされた順番通りにエントリを選択して実行する。
又、浮動小数点用のリザベーションステーション74から実行されたエントリは、機能の実行がパイプライン処理で実行される。機能の実行が終了すると、結果レジスタに、機能の実行の結果を格納する。また、機能の実行が終了したことを、命令の完了する制御を行う機能CSE9へ実行の完了を報告する。
命令完了制御機能CSE9は、プログラムの順番通りに完了する制御を行う。機能の実行が完了すると、命令の完了を行うことが可能となるが、プログラムの順番通りに完了するために、最も古い命令が完了しないと、後続の命令の実行が完了していても、命令の完了をすることができない。命令の完了は、スレッド別に、完了していくために、他のスレッドによって、命令の完了の制御を邪魔されることはなく、命令の完了を行うことが可能である。
更に、図15で説明したように、機能の実行が、パイプライン処理で実行された結果は、結果レジスタに格納されるが、リザベーションステーション74は、結果レジスタに格納するタイミングが重ならないように、実行するエントリを選択する。
図3乃至図5を参照して、図2の構成の動作を説明する。スレッド選択回路30は、通常走行状態で、CSE9が、一定時間完了していない命令を検出した信号を発したかを判定する(S10)。スレッド選択回路30は、CSE9から一定時間完了していない命令を検出した信号を受けると、ハング防止モードに、走行モードを変更する(S12)。
図4に示す通常走行時には、スレッド選択回路30が関与していないため、図5のように、リザベーションステーション5,6,7から実行する命令のスレッドは、各リザベーションステーション5,6,7の各々で選択されたエントリが、実行するスレッド番号になる。即ち、図5に示すように、リザベーションステーションのエントリ選択にスレッドの制限は与えられず、実行するスレッド番号は、リザベーションステーション5,6,7ごとに異なる。ただし、各リザベーションステーション5,6,7が個々に選択するために、偶然に、実行するスレッド番号が同じになることはあり得る。
一方、ハング防止モード時には、ハング防止モード中に動作するスレッド選択回路30によって、選択されたスレッド番号のみ実行可能なスレッド番号となる。即ち、図5のように、リザベーションステーション5,6,7から実行するスレッド番号が同じになるように制御される。
そして、スレッド選択回路30は、一定時間完了できなかった命令が完了したことをCSE9から通知されると、図4のように、通常走行モードに戻り、スレッド選択動作を停止する(S14)。
このように、通常走行時は、リザベーションステーションが、実行可能なエントリをスレッドに関係なく実行していたものを、ハング防止モードで、各リザベーションステーションから決められたスレッドしか実行することができないように制御する。
このため、実行できない一のスレッドのエントリより後続の他のスレッドのエントリが、次々に実行されている状況のために、実行され続けている他のスレッドの実行を停止することで、実行できない一のスレッドのエントリを実行可能な状態にすることができる。また、リザベーションステーションが原因でないときに、ハング状態となった場合でも、リザベーションステーションからは、決められたスレッドしか実行することができないように制御する。
ただし、この制御を行うと、ハング状態になっていないスレッドのエントリは、実行を停止することになるために、ハング状態になった場合でも、大幅な性能低下にならないような制御を行い、ハング状態になっているスレッドを実行する。
(ハング防止機構)
図2の命令実行制御装置を更に詳細に説明する。図6は、図2のスレッド選択回路30のブロック図、図7は、図2、図6の実行可能選択回路の処理フロー図、図8は、図6の構成によるスレッド選択方法の説明図、図9は、図6のリザベーションステーションのエントリの実行選択動作の説明図、図10は、図6の固定小数点リザベーションステーションのエントリの実行選択動作の説明図である。
図6乃至図9は、図2の浮動小数点用リザベーションステーションユニット7の例で説明する。尚、図2の固定小数点用リザベーションステーションユニット6、オペランド生成リザベーションユニット5も同様の構成である。
図6により、スレッド選択回路30の構成を説明する。スレッド選択回路30は、基本的に、時間軸に沿って、交互にスレッド番号を変更して、出力する。図6に示すように、スレッド選択回路30は、タイマーカウンタ32と、スレッド切り替え時間選択回路34と、スレッドID生成回路36と、スレッド決定回路38と、ハング防止スレッドIDレジスタ40と、ハング防止モード起動回路42とを有する。
ハング防止モード起動回路42は、図1のCSE9の一定時間完了していない命令を検出した検出信号に応じて、スレッド切り替え時間選択回路34と、スレッド決定回路38と、実行可能選択回路52,62,72とを起動する。
スレッド切り替え時間選択回路34は、同じスレッドを連続して選択する時間を示すスレッド切り替え時間を備え、スレッド切り替え時間になると、スレッド決定回路38にスレッド切り替えを指示する。スレッド切り替え時間は、1サイクルで1加算されるタイマーカウンタ32によって、カウンタの値がある値になったら、スレッド切り替え時間を変更することが可能である。
スレッド切り替え時間とタイマーカウンタのカウンタの値によって、スレッド決定回路38は、スレッドID生成回路36のスレッドIDを選択する。スレッドID生成回路36は、ハング防止スレッドIDレジスタ40のスレッドIDと異なるスレッドIDを、スレッド決定回路38に出力する。このスレッド決定回路38で選択されたスレッドが、ハング防止スレッドIDとなり、実行可能選択回路52,62,72に送られ、リザベーションステーション54,64,74から実行することのできるエントリを選択する。
従って、スレッド切り替え時間選択回路34で、スレッド切り替え時間を選択することにより、時間の経過により同じスレッドを選択する時間を変更できる。
次に、図7により、実行可能選択回路52,62,72を説明する。ハング防止モード中は、実行エントリ選択回路56,66,76の1サイクル前のサイクルで、リザベーションステーション54,64,74のエントリのスレッドが、スレッド選択回路30で選択されたスレッドと一致するかを判定する(S22)。一致しないと、ステップS26に進む。
一方、スレッドが一致したエントリについては、実行する準備のできているかを判定し、実行準備ができていれば、そのエントリが、次サイクルでの実行エントリ選択回路56,66,76で選択される可能性のあるエントリに決定する(S24)。例えば、エントリにフラグを付与する。
逆に、選択されたスレッドと一致しないエントリは、次サイクルの実行エントリ選択回路で選択される可能性がないと決定する(S26)。
又、命令がデコードされて、リザベーションステーションに新しくエントリに登録するサイクルにおいて、エントリ生成回路50,60,70から登録するエントリのスレッドが、スレッド選択回路30で選択されたスレッドと一致するかを判定する(S20)。一致しないと、ステップS26に進む。
一方、スレッドが一致したエントリについては、実行する準備のできているかを判定し、実行準備ができていれば、そのエントリが、次サイクルでの実行エントリ選択回路56,66,76で選択される可能性のあるエントリに決定する(S24)。例えば、エントリにフラグを付与する。
逆に、選択されたスレッドと一致しないエントリは、次サイクルの実行エントリ選択回路で選択される可能性がないと決定する(S26)。
スレッド選択回路30のスレッド選択例を、図8で説明する。あるスレッドの命令が一定期間完了していないことを検出したときから、ハング防止モードとなり、スレッド選択回路30が動作する。
ハング防止モードに移行すると、最初はスレッド切り替え時間が1サイクルモードとなり、スレッド選択回路30で1サイクルごとに異なるスレッドを選択する。
タイマーカウンタで、100サイクルカウントしたときに、ハング防止モードが続いている場合には、スレッド切り替え時間が2サイクルモードとなり、スレッド選択回路30で2サイクルごとに異なるスレッドを選択する。
タイマーカウンタで300サイクルカウントしたときに、ハング防止モードが続いている場合には、スレッド切り替え時間が4サイクルモードとなり、スレッド選択回路30で4サイクルごとに異なるスレッドを選択する。
タイマーカウンタで600サイクルカウントしたときに、ハング防止モードが続いている場合には、スレッド切り替え時間が16サイクルモードとなり、スレッド選択回路で16サイクルごとに異なるスレッドを選択する。
このようにスレッド選択回路30で選択するスレッドは、時間の経過によって、ある一定期間で連続して同じスレッドを選択して動作することがいくつものパターンで変更することが可能である。
又、命令の完了ができていなかった命令が完了すると、ハング防止モードから通常走行状態に戻ると、スレッド選択回路30もリセットされ、もう一度ハング防止モードになった場合には、最初の状態(図8の場合は、1サイクルごとに異なるスレッドを選択)から選択される。
このハング防止モードが動作するのは、同時マルチスレッドで動作するスレッドが2つ以上のときであり、単一のスレッドが動作している場合には、スレッドを選択する必要がないために、ハング防止モードになることがない。また、ハング防止モードになったときに、動作していないスレッドがある場合には、動作していないスレッドには、スレッド選択回路で選択することがないように動作することが可能である。
図9は、このスレッド選択により、図17の状態から、ハング防止モードが起動したときのリザベーションステーションの制御状態の図である。
時刻T1で、ハング防止モードが起動する。時刻T2では、時刻T1で、スレッド選択回路30により、スレッド0が選択されたために、スレッド0のエントリを実行する。時刻T3では、時刻T2で、スレッド選択回路30によりスレッド1が選択されるが、先行命令と結果レジスタに格納するタイミングが同じになるために実行不可能である。
時刻T4では、時刻T3で、スレッド選択回路30によりスレッド0が選択されたために、スレッド0のエントリを実行する。時刻T5では、時刻T4で、スレッド選択回路30によりスレッド1が選択されたために、今まで実行できなかったスレッド1のエントリを実行することが可能となる。時刻T6では、時刻T5で、スレッド選択回路30によりスレッド0が選択されたために、スレッド0のエントリを実行する。
この後、スレッド1のエントリの命令を完了すると、リザベーションステーションの制御は、ハング防止モードから通常走行状態に戻る。
上述の説明は、浮動小数点リザベーションステーションを例に説明した。固定小数点リザベーションステーションでは、図10に示すような、エントリの実行制約がある。即ち、固定小数点用のリザベーションステーションは、実行されたエントリは、機能の実行が終了するまで後続のエントリに対して、機能の実行を行わないように制御される。
リザベーションステーションから実行されるエントリが、実行に2サイクル必要なエントリ(先行命令)であり、後続の命令も実行に2サイクル必要なエントリの場合は、図10に示すように、T1で、先行命令がリザベーションステーションから実行される。T2のタイミングで、後続命令を実行した場合、先行命令と実行(X)が重なってしまうために、実行不可能となり、T3のタイミングでは、実行可能となる。
従って、浮動小数点のエントリ実行制御に、置き換えれば、図9と同様のスレッドのエントリの実行が可能となる。
このように、複数のスレッドが同時マルチスレッドで動作しているときに、機能の実行の結果レジスタに格納する又は機能の実行のタイミングによって、リザベーションステーションから実行することができなくなったエントリが、ハング防止モードで、リザベーションステーションから実行するエントリのスレッドを選択することで、実行することが可能となり、ハング状態を防止できる。
次に、このように切り替えサイクルを変更する利点を説明する。図11は、同時マルチスレッドで動作しているときに、命令フェッチしたデータを得る時間が長時間必要であったために、リザベーションステーションのスレッド1のエントリに、命令デコーダから命令がデコードされないことが原因で、ハング防止モードになった場合の例を示す。この例は、スレッド0には、実行に2サイクル必要なエントリが連続して、固定小数点用のリザベーションステーションに、命令デコーダからデコードされて実行されているときに、スレッド1に実行に2サイクル必要なエントリが作成されたときの状況である。
図11に示すように、時刻T1で、スレッド選択回路30は、1サイクルモードで、スレッド0を選択する。時刻T2で、スレッド選択回路30で、選択されたスレッド0のエントリが実行可能となる。このときに、スレッド選択回路30は、1サイクルモードのためにスレッド1を選択する。
時刻T3で、実行に必要なオペランドデータが揃ったために実行可能となったエントリが実行しようとしても、先行命令の実行と重なるために実行することができない。このときに、スレッド選択回路は、1サイクルモードのために、スレッド0を選択する。時刻T4で、スレッド0が実行され、スレッド選択回路30でスレッド1を選択するが、時刻T5で、スレッド1を実行することができない。
このときに、スレッド切り替え時間により、1サイクルモードから2サイクルモードに変更する。そして、時刻T7で、スレッド選択回路30で、スレッド1が選択され、時刻T8で、スレッド1を実行することが可能となる。
図11では、ハング状態になっていないスレッド0の命令の実行に必要な時間が2サイクルのために、スレッド1のエントリは、2サイクルモードになったときに実行可能となった。しかし、スレッド0の命令が、実行に必要な時間が4サイクルの場合には、4サイクルモードにならないと、スレッド1のエントリは実行可能とならない。
このように、リザベーションステーションが、直接の原因でなく、ハング防止モードになった場合で、機能の実行が後続命令に対して、ブロッキング処理を行う実行制御については、ハング防止モードのスレッド選択方法である同一のスレッドを連続して選択する時間を、機能の実行に必要な時間の最も長い時間より長い時間を設定可能となるようにすることが望ましい。
このため、スレッド選択回路は、時間の経過によって選択するスレッドを変更することが可能とし、同じスレッドを連続して選択する時間により、スレッドを切り替える制御を行う。
また、時間によって、同じスレッドを連続して選択する時間も変更することが可能である。
スレッド選択回路で選択したスレッドのエントリのみが実行可能となるために、通常走行時より性能が下がることが予想され、スレッド選択回路で、同じスレッドを連続して選択する時間が長い程、性能は低下するために、段階的に同じスレッドを選択する時間を長くしていくことで、大幅な性能低下が発生するのを遅らせることができる。
(スレッド選択回路)
次に、前述のスレッドを選択するスレッド選択回路30を説明する。前述のスレッド選択回路30は、論理回路で構成される。図12は、図6のスレッド決定回路38の回路図、図13は、スレッドID生成回路36の回路図、図14は、スレッド切り替え時間選択回路34の回路図である。
図12において、スレッド決定回路38は、ANDゲート380、ORゲート382、4つのANDゲート384−1〜384−4とからなる。この図11において、+WARNING_TO_HUNG_MODE_VALID信号は、ハング防止モードであることを示す信号を1回ラッチした信号である。+MULTI_THREAD_MODE信号は、マルチスレッド状態で走行していることを示す信号である。ANDゲート380は、ハング防止モードであり、且つマルチスレッド状態である時に、開く。即ち、ハング防止モードでない、又はマルチスレッド状態でない(シングルスレッド状態である)場合には、動作しない。
又、+HUNG_THREAD_ID_1T_MODE信号は、1サイクルごとに、選択するスレッドを変更することを示す信号であり、+NEXT_1T_MODE_THREAD_ID信号が、選択されるスレッドを示す。この選択スレッドを示す信号は、図12から得られる。
この組み合わせが、1サイクル、2サイクル、4サイクル、16サイクルの4つ備えられていて、4つANDゲート384−1〜384−4から1つ選択されたスレッドが、ORゲート382を介し、ANDゲート380に入力し、次サイクルのハング防止スレッドIDとなる。
次に、図13のスレッドID生成回路は、1サイクル、2サイクル、4サイクル、16サイクルのスレッドを決める回路である。1サイクルモードのときは、毎サイクルスレッドが変更するために、ハング防止スレッドIDを示す+HUNG_MODE_THREAD_IDの極性を、反転回路360で、反転する。
2サイクルモードの回路362,364,366は、スレッドを変更してから2サイクル経過したことを示す+2T_MODE_THREAD_ID_CHANGEがオンになっていれば、ハング防止スレッドIDを示す+HUNG_MODE_THREAD_IDの極性を、ANDゲート366で、反転する。又、+2T_MODE_THREAD_ID_CHANGEがオフになっていれば、ハング防止スレッドIDを示す+HUNG_MODE_THREAD_IDを、ANDゲート364から出力する。
ORゲート362の出力は、+2T_MODE_THREAD_ID_CHANGEがオンになっていれば、スレッドを変更して、オフであれば、スレッドは変更しない信号を出力する。
4サイクルと16サイクルも、同様の2つのANDゲート370,372と376と378と、ORゲート368,374と組み合わせ回路により、4サイクル経過したことを示す+4T_MODE_THREAD_ID_CHANGE、16サイクル経過したことを示す+16T_MODE_THREAD_ID_CHANGEがオンになっていれば、スレッドを変更する。
更に、図14は、スレッド切り替え時間の変更回路である。ANDゲート342に入力するハング防止モードであることを示す、+SET_WARNING_TO_HUNG_MODEがオンであり、この信号を1回ラッチしたことを示す、+WARNING_TO_HUNG_MODE_VALIDがオフのときに、ANDゲート342、ORゲート340から、1サイクルモードを起動する。(ハング防止モードのスタートとなる。)
1サイクルモードが開始すると、2サイクルモードに切り替える時間を示す、+1T_MODE_TIMER_CHANGE信号がオフであり、1サイクルモードであることを示す、+HUNG_THREAD_ID_1T_MODEがオンのときには、ANDゲート352から、ANDゲート344より、1サイクルモードを続ける。
1サイクルモード中に、切り替え時間がきたら、+1T_MODE_TIMER_CHANGE信号がオンとなり、ANDゲート356、ORゲート354、ANDゲート346を介し、2サイクルモードに変更する。
同様に、2サイクルから4サイクル、4サイクルから16サイクルへのモード変更についても同様の回路である。即ち、ANDゲート353,355とORゲート351、ANDゲート348、ANDゲート359,349とORゲート357、ANDゲート350の構成である。
このように、スレッド切り替え時間が有効なときは、ハング防止中のみとするので、ハング防止モードであること示す信号を1回ラッチしたことを示す信号とANDをとる。この信号がスレッド切り替え信号となり、1回ラッチした信号が図12につながって、スレッドを選択することが可能となる。
(他の実施の形態)
前述の実施の形態では、2つのスレッド(スレッド0と1)が同時に動作する同時マルチスレッド方式で説明したが、3つ以上のスレッドが同時に動作するものにも適用できる。
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
同時マルチスレッドで動作しているときに、命令が、一定期間完了していない状態を検出し、全てのリザベーションステーションが、決められたスレッドしか実行できないように制御するため、リザベーションステーションから実行できないエントリがいる状態の場合には、実行され続けているスレッドの実行を停止することで、実行できないスレッドのエントリを実行可能な状態にすることができる。

Claims (15)

  1. 複数の命令が含まれる複数のスレッドを実行する命令実行制御装置において、
    命令をデコードする命令デコーダと、
    命令デコーダからのデコード結果を受け、演算処理を制御する演算処理リザベーションステーションと、
    主記憶に格納されるオペランドのアドレスの生成を制御する主記憶リザベーションステーションと、
    実行された命令をプログラムの順番通りに、命令が完了するように制御する命令制御機構と、
    前記命令制御機構が、1つのスレッドの命令が一定期間に完了することができないことを検出した場合には、前記すべてのリザベーションステーションから実行可能となるエントリのスレッドを、前記一定期間に完了することができなかったことが検出されたスレッドと同一のスレッドに選択するように制御するハング防止回路とを有する
    ことを特徴とする命令実行制御装置。
  2. 請求項1の命令実行制御装置において、
    前記ハング防止回路は、前記一定期間に完了することができないことを検出した場合には、前記リザベーションステーションから実行するエントリのスレッドを、前記一定期間に完了することができなかったことが検出されたスレッドと同一のスレッドに選択するためのスレッド選択回路を有する
    ことを特徴とする命令実行制御装置。
  3. 請求項2の命令実行制御装置において、
    前記ハング防止回路は、
    前記スレッド選択回路で選択されたスレッドと、前記リザベーションステーションのエントリのスレッドが一致したときに、前記エントリを、前記リザベーションステーションから実行することが可能とするための実行可能選択回路を更に有する
    ことを特徴とする命令実行制御装置。
  4. 請求項2の命令実行制御装置において、
    前記スレッド選択回路は、時間の経過によって選択するスレッドを変更するスレッド選択回路で構成された
    ことを特徴とする命令実行制御装置。
  5. 請求項2の命令実行制御装置において、
    前記スレッド選択回路は、動作しているスレッドを示す信号に応じて、動作していないスレッドの選択を禁止する
    ことを特徴とする命令実行制御装置。
  6. 請求項1の命令実行制御装置において、
    前記ハング防止回路は、前記完了することができなかった命令が完了した時は、前記リザベーションステーションの制御を停止する
    ことを特徴とする命令実行制御装置。
  7. 請求項1の命令実行制御装置において、
    前記リザベーションステーションは、
    前記命令デコーダからの命令を、前記リザベーションステーションにエントリするエントリ生成回路と、
    前記リザベーションステーションから実行可能なエントリを選択する実行エントリ選択回路とを有する
    ことを特徴とする命令実行制御装置。
  8. 請求項1の命令実行制御装置において、
    前記演算処理リザベーションステーションは、前記実行の準備ができたエントリが、前記先行エントリの実行又は実行結果の格納タイミングと重ならないようなタイミングで、前記実行の準備ができたエントリを実行する
    ことを特徴とする命令実行制御装置。
  9. 複数の命令が含まれる複数のスレッドを実行する命令実行制御方法において、
    演算処理リザベーションステーションにより、命令デコーダからのデコード結果からエントリを作成し、実行準備の整ったエントリを、演算処理機構に発行するステップと、
    主記憶に格納されるオペランドのアドレスの生成を制御する主記憶リザベーションステーションにより、前記命令からエントリを作成し、実行準備の整ったエントリを、主記憶オペランドアドレス生成器に発行するステップと、
    実行された命令をプログラムの順番通りに、命令が完了するように制御するステップと、
    1つのスレッドの命令が一定期間に完了することができないことを検出した場合には、前記すべてのリザベーションステーションから実行可能となるエントリのスレッドを、前記一定期間に完了することができなかったことが検出されたスレッドと同一のスレッドに選択するステップとを有する
    ことを特徴とする命令実行制御方法。
  10. 請求項9の命令実行制御方法において、
    前記選択ステップは、前記一定期間に完了することができないことを検出した場合には、スレッド選択回路を起動し、前記リザベーションステーションから実行するエントリのスレッドを、前記一定期間に完了することができなかったことが検出されたスレッドと同一のスレッドに選択するステップを有する
    ことを特徴とする命令実行制御方法。
  11. 請求項10の命令実行制御方法において、
    前記選択ステップは、
    前記スレッド選択回路で選択されたスレッドと、前記リザベーションステーションのエントリのスレッドが一致するかを判定するステップと、
    前記一致を判定したときに、前記エントリを、前記リザベーションステーションから実行することが可能とするステップとを更に有する
    ことを特徴とする命令実行制御方法。
  12. 請求項10の命令実行制御方法において、
    前記選択ステップは、
    時間の経過によって選択するスレッドを変更するステップを有する
    ことを特徴とする命令実行制御方法。
  13. 請求項10の命令実行制御方法において、
    前記選択ステップは、動作しているスレッドを示す信号に応じて、動作していないスレッドの選択を禁止するステップを有する
    ことを特徴とする命令実行制御方法。
  14. 請求項9の命令実行制御方法において、
    前記完了することができなかった命令が完了した時は、前記選択ステップを終了するステップを有する
    ことを特徴とする命令実行制御方法。
  15. 請求項9の命令実行制御方法において、
    前記演算処理リザベーションステーションは、前記実行の準備ができたエントリが、前記先行エントリの実行又は実行結果の格納タイミングと重ならないようなタイミングで、前記実行の準備ができたエントリを実行するステップを有する
    ことを特徴とする命令実行制御方法。

JP2009520141A 2007-06-20 2007-06-20 演算処理装置及び演算処理装置の制御方法 Expired - Fee Related JP5104863B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/000653 WO2008155800A1 (ja) 2007-06-20 2007-06-20 命令実行制御装置及び命令実行制御方法

Publications (2)

Publication Number Publication Date
JPWO2008155800A1 true JPWO2008155800A1 (ja) 2010-08-26
JP5104863B2 JP5104863B2 (ja) 2012-12-19

Family

ID=40155965

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009520141A Expired - Fee Related JP5104863B2 (ja) 2007-06-20 2007-06-20 演算処理装置及び演算処理装置の制御方法

Country Status (6)

Country Link
US (1) US7958339B2 (ja)
EP (1) EP2159689A4 (ja)
JP (1) JP5104863B2 (ja)
KR (1) KR101100145B1 (ja)
CN (1) CN101681261B (ja)
WO (1) WO2008155800A1 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11080064B2 (en) 2014-10-28 2021-08-03 International Business Machines Corporation Instructions controlling access to shared registers of a multi-threaded processor
US9575802B2 (en) 2014-10-28 2017-02-21 International Business Machines Corporation Controlling execution of threads in a multi-threaded processor
WO2016097797A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Load replay precluding mechanism
KR101837816B1 (ko) 2014-12-14 2018-03-12 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 비순차 프로세서에서 i/o­의존 로드 리플레이를 불가능하게 하는 메커니즘
US10088881B2 (en) 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude I/O-dependent load replays in an out-of-order processor
US10114646B2 (en) 2014-12-14 2018-10-30 Via Alliance Semiconductor Co., Ltd Programmable load replay precluding mechanism
KR101819315B1 (ko) 2014-12-14 2018-01-16 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 비순차 프로세서에서 작성 결합 메모리 공간 접근에 따라 로드 리플레이를 억제하기 위한 장치 및 방법
WO2016097790A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude non-core cache-dependent load replays in out-of-order processor
US10083038B2 (en) 2014-12-14 2018-09-25 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on page walks in an out-of-order processor
WO2016097814A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude shared ram-dependent load replays in out-of-order processor
US10120689B2 (en) 2014-12-14 2018-11-06 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
US10228944B2 (en) 2014-12-14 2019-03-12 Via Alliance Semiconductor Co., Ltd. Apparatus and method for programmable load replay preclusion
JP6286067B2 (ja) * 2014-12-14 2018-02-28 ヴィア アライアンス セミコンダクター カンパニー リミテッド アウトオブオーダープロセッサでの長いロードサイクルに依存するロードリプレイを除外するメカニズム
US10175984B2 (en) 2014-12-14 2019-01-08 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor
US10108420B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor
US10114794B2 (en) 2014-12-14 2018-10-30 Via Alliance Semiconductor Co., Ltd Programmable load replay precluding mechanism
WO2016097815A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude x86 special bus cycle load replays in out-of-order processor
KR101837817B1 (ko) 2014-12-14 2018-03-12 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 비순차 프로세서에서 페이지 워크에 따라 로드 리플레이를 억제하는 메커니즘
US10209996B2 (en) 2014-12-14 2019-02-19 Via Alliance Semiconductor Co., Ltd. Apparatus and method for programmable load replay preclusion
KR101819316B1 (ko) * 2014-12-14 2018-01-16 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 비순차 프로세서에서 캐시 불가­의존 로드 리플레이를 억제하는 메커니즘
US10127046B2 (en) 2014-12-14 2018-11-13 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude uncacheable-dependent load replays in out-of-order processor
US10089112B2 (en) 2014-12-14 2018-10-02 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor
US10108421B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude shared ram-dependent load replays in an out-of-order processor
WO2016097811A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Mechanism to preclude load replays dependent on fuse array access in out-of-order processor
US9804845B2 (en) 2014-12-14 2017-10-31 Via Alliance Semiconductor Co., Ltd. Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor
US10146540B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor
US9703359B2 (en) 2014-12-14 2017-07-11 Via Alliance Semiconductor Co., Ltd. Power saving mechanism to reduce load replays in out-of-order processor
US10108430B2 (en) 2014-12-14 2018-10-23 Via Alliance Semiconductor Co., Ltd Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor
US10146539B2 (en) 2014-12-14 2018-12-04 Via Alliance Semiconductor Co., Ltd. Load replay precluding mechanism
JP6477248B2 (ja) * 2015-05-22 2019-03-06 富士通株式会社 演算処理装置及び演算処理装置の処理方法
JP7020304B2 (ja) * 2018-06-07 2022-02-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6212544B1 (en) * 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
JP2000010800A (ja) 1998-06-19 2000-01-14 Toshiba Corp 計算機システムに於けるスレッド制御装置、及び同システムに於けるスレッド制御方法
JP3490005B2 (ja) 1998-12-17 2004-01-26 富士通株式会社 命令制御装置及びその方法
JP3560482B2 (ja) 1998-12-17 2004-09-02 富士通株式会社 命令制御装置
US6807624B1 (en) 1998-12-17 2004-10-19 Fujitsu Limited Instruction control device and method therefor
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
JP3714597B2 (ja) * 2000-07-03 2005-11-09 富士重工業株式会社 鍛造方法及び鍛造装置
US20050033831A1 (en) * 2002-10-08 2005-02-10 Abbas Rashid Advanced processor with a thread aware return address stack optimally used across active threads
US6904511B2 (en) 2002-10-11 2005-06-07 Sandbridge Technologies, Inc. Method and apparatus for register file port reduction in a multithreaded processor
US20040216103A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Mechanism for detecting and handling a starvation of a thread in a multithreading processor environment
JP4327008B2 (ja) * 2004-04-21 2009-09-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP4952580B2 (ja) 2005-04-21 2012-06-13 富士通株式会社 プロセッサ装置
JP5028774B2 (ja) 2005-09-22 2012-09-19 富士通株式会社 演算処理装置,情報処理装置,及びレジスタファイルの制御方法

Also Published As

Publication number Publication date
EP2159689A4 (en) 2011-01-05
KR20100009593A (ko) 2010-01-27
US7958339B2 (en) 2011-06-07
JP5104863B2 (ja) 2012-12-19
KR101100145B1 (ko) 2011-12-29
CN101681261A (zh) 2010-03-24
EP2159689A1 (en) 2010-03-03
US20100095092A1 (en) 2010-04-15
CN101681261B (zh) 2014-07-16
WO2008155800A1 (ja) 2008-12-24

Similar Documents

Publication Publication Date Title
JP5104863B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP4287799B2 (ja) プロセッサシステムおよびスレッド切り替え制御方法
US7725684B2 (en) Speculative instruction issue in a simultaneously multithreaded processor
US6542921B1 (en) Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US20160055004A1 (en) Method and apparatus for non-speculative fetch and execution of control-dependent blocks
US7454598B2 (en) Controlling out of order execution pipelines issue tagging
EP1886216B1 (en) Controlling out of order execution pipelines using skew parameters
JP5631976B2 (ja) マルチスレッドマイクロプロセッサにおける命令の発行をスケジュールするための方法及び装置
US20070143581A1 (en) Superscalar data processing apparatus and method
JP2008047145A (ja) デュアルスレッドプロセッサ
JP5861354B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP2018005488A (ja) 演算処理装置及び演算処理装置の制御方法
US7620804B2 (en) Central processing unit architecture with multiple pipelines which decodes but does not execute both branch paths
JP2004326752A (ja) 同時マルチスレッド化プロセッサ
US8560813B2 (en) Multithreaded processor with fast and slow paths pipeline issuing instructions of differing complexity of different instruction set and avoiding collision
JP5201140B2 (ja) 同時マルチスレッドの命令完了制御装置
JP4327008B2 (ja) 演算処理装置及び演算処理装置の制御方法
JPWO2008155794A1 (ja) 情報処理装置
JP5104862B2 (ja) 命令実行制御装置及び命令実行制御方法
JP2020091751A (ja) 演算処理装置および演算処理装置の制御方法
US20070162723A1 (en) Technique for reducing traffic in an instruction fetch unit of a chip multiprocessor
US7565512B2 (en) Method, system and apparatus for generation of global branch history
US20160342415A1 (en) Arithmetic processing device and processing method of arithmetic processing device
JP2023540036A (ja) 分岐予測リダイレクトのための代替パス
JP2000099328A (ja) プロセッサ及びその実行制御方法

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

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

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

LAPS Cancellation because of no payment of annual fees