JP2016218855A - 演算処理装置及び演算処理装置の処理方法 - Google Patents

演算処理装置及び演算処理装置の処理方法 Download PDF

Info

Publication number
JP2016218855A
JP2016218855A JP2015104724A JP2015104724A JP2016218855A JP 2016218855 A JP2016218855 A JP 2016218855A JP 2015104724 A JP2015104724 A JP 2015104724A JP 2015104724 A JP2015104724 A JP 2015104724A JP 2016218855 A JP2016218855 A JP 2016218855A
Authority
JP
Japan
Prior art keywords
instruction
entry
output
stored
arithmetic
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
JP2015104724A
Other languages
English (en)
Other versions
JP6477248B2 (ja
JP2016218855A5 (ja
Inventor
亮平 岡崎
Ryohei Okazaki
亮平 岡崎
秋月 康伸
Yasunobu Akizuki
康伸 秋月
猛一 田端
Takekazu Tabata
猛一 田端
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
Priority to JP2015104724A priority Critical patent/JP6477248B2/ja
Priority to US15/068,692 priority patent/US9965283B2/en
Publication of JP2016218855A publication Critical patent/JP2016218855A/ja
Publication of JP2016218855A5 publication Critical patent/JP2016218855A5/ja
Application granted granted Critical
Publication of JP6477248B2 publication Critical patent/JP6477248B2/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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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
    • 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
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)

Abstract

【課題】スレッドの命令の待機時間を短縮できる演算処理装置を提供する。
【解決手段】リザベーションステーション207内の第1のエントリRSF2は、該エントリに記憶されている命令を第1の演算器FLAに出力する場合、第1のエントリRSF2に記憶されている命令の実行サイクル数が閾値以上である場合に、第2のエントリRSF1に対して第1の演算器FLAの使用不可信号を出力する。リザベーションステーション207は、第1の演算器FLAの使用不可信号が出力された後、使用不可中断条件を満たした場合に、第1の演算器FLAの実行を中断させ、第1の演算器FLAの状態を記憶素子に退避させ、第1の演算器FLAの使用不可信号の出力を中断させるコントローラ301を有する。第2のエントリRSF1は、第1の演算器FLAの使用不可信号の出力が中断の場合、第2のエントリRSF1に記憶されている命令を第1の演算器FLAに出力する。
【選択図】図3

Description

本発明は、演算処理装置及び演算処理装置の処理方法に関する。
マルチスレッドプロセッサを採用したコンピュータの処理方法が開示されている(特許文献1参照)。スレッドが活性化されているアクティブ・スレッド状態は、少なくとも1つのハードウェア・レジスタに記憶される。少なくとも1つのバックグラウンド・スレッドの実行状況を表すバックグラウンド・スレッド状態は、少なくとも1つのハードウェア・レジスタに格納される。マルチスレッドプロセッサで少なくとも1つのアクティブ・スレッドが実行される。上記の少なくとも1つのアクティブ・スレッドのアクティブ・スレッド状態は、マルチスレッドプロセッサで上記の少なくとも1つのアクティブ・スレッドを実行することによって生成される後の状態で置換される。アクティブ・スレッドの置換されたアクティブ・スレッド状態は、少なくとも1つのバックグラウンド・スレッドのバックグラウンド・スレッド状態と比較される。これにより、少なくとも1つのアクティブ・スレッドのアクティブ・スレッド状態の後の状態による置換が、マルチスレッドプロセッサに、少なくとも1つのバックグラウンド・スレッドに実行を切り替えさせるかどうかを判定する。
特表2001−521216号公報
1個の演算器は、複数のスレッドの命令を実行することができる。しかし、複数のスレッドのうちの1個のスレッドの命令の実行サイクル数が長い場合、その1個のスレッドの命令が1個の演算器を独占してしまう。この場合、他のスレッドの命令は長時間待機状態になり、他のスレッドのサービスの質(QoS:Quality of Service)が著しく低下してしまう。
1つの側面では、本発明の目的は、スレッドの命令の待機時間を短縮することができる演算処理装置及び演算処理装置の処理方法を提供することである。
演算処理装置は、複数のスレッドの命令を実行する演算処理装置であって、命令をデコードすることにより、前記デコードされた命令及びデコードされた前記命令に対応するスレッドの識別子を出力する命令デコーダと、前記命令デコーダによりデコードされた命令及びデコードされた前記命令に対応するスレッドの識別子を複数のエントリのうちのいずれかに記憶するリザベーションステーションと、前記リザベーションステーションに記憶されている命令を実行する第1の演算器とを有し、前記リザベーションステーション内の前記複数のエントリのうちの第1のエントリは、前記第1のエントリに記憶されている命令を前記第1の演算器に出力する場合、前記第1のエントリに記憶されている命令の実行サイクル数が閾値以上である場合には、前記第1のエントリとは異なる第2のエントリに対して前記第1の演算器の使用不可信号を出力し、前記リザベーションステーションは、前記第1の演算器の使用不可信号が出力された後、使用不可中断条件を満たした場合には、前記第1の演算器の実行を中断させ、前記第1の演算器の状態を記憶素子に退避させ、前記第1の演算器の使用不可信号の出力を中断させるコントローラを有し、前記第2のエントリは、前記第2のエントリが記憶するスレッドの識別子が、前記第1のエントリが記憶するスレッドの識別子と異なり、かつ前記第2のエントリが記憶する命令が、前記リザベーションステーションの中で最も古い未終了の命令であり、かつ前記第1の演算器の使用不可信号の出力が中断されている場合、前記第2のエントリに記憶されている命令を前記第1の演算器に出力し、前記第1の演算器は、前記第2のエントリが出力した命令の実行が終了すると、前記記憶素子に退避した状態に戻し、前記第1のエントリの命令の実行を再開する。
第1の演算器の使用不可信号の出力を中断させることにより、第2のエントリのスレッドの命令の待機時間を短縮することができる。
図1は、本実施形態による演算処理システムの構成例を示す図である。 図2は、図1の中央演算処理装置の構成例を示す図である。 図3は、図2のRSF、演算器及びCSEの構成例を示す図である。 図4は、図3に続く中央演算処理装置の処理方法を示す図である。 図5は、図4に続く中央演算処理装置の処理方法を示す図である。 図6は、中央演算処理装置の処理方法を示すフローチャートである。 図7(A)及び(B)は、中央演算処理装置のパイプライン処理の処理時間を示す図である。
図1は、本実施形態による演算処理システム100の構成例を示す図である。演算処理システム100は、例えばサーバであり、複数の中央演算処理装置(CPU:Central Processing Unit)101と、複数のメモリ102と、インターコネクト制御部103とを有する。複数のメモリ102は、それぞれ、複数の中央演算処理装置101に接続される。インターコネクト部103は、複数の中央演算処理装置101に接続され、外部装置に対してデータを入出力することができる。
図2は、図1の中央演算処理装置101の構成例を示す図である。中央演算処理装置101は、例えばスーパースカラプロセッサであり、同時マルチスレッディング(SMT:Simultaneous Multithreading)機能を有し、複数のスレッドを同時に実行することができる。命令フェッチアドレス生成器201は、命令フェッチを行うために、プログラムカウンタ218、分岐命令用リザベーションステーション(RSBR:Reservation Station for BRanch)208又は分岐予測機構204から入力した命令アドレスを選択し、選択された命令アドレスの命令フェッチリクエストを1次命令キャッシュメモリ202に発行する。1次命令キャッシュメモリ202は、それに応じた命令を命令デコーダ203に出力する。命令デコーダ203は、プログラムの順番通りに命令のデコード処理を行い、命令を発行する。プログラムでは、各命令が複数のスレッドのうちのいずれかのスレッドに対応付けられている。命令デコーダ203は、各命令をスレッドに対応付けて発行する。命令デコーダ203は、デコードする命令の種類に従って、命令の実行を制御する主記憶オペランドアドレス生成用リザベーションステーション(RSA:Reservation Station for Address generate)205、固定小数点演算用リザベーションステーション(RSE:Reservation Station for Execute)206、浮動小数点演算用リザベーションステーション(RSF:Reservation Station for Floating)207、RSBR208に必要なエントリを作成する。また、命令デコーダ203は、全てのデコードされた命令に対して、命令の完了を制御するコミットスタックエントリ(CSE:Commit Stack Entry)209にエントリを作成する。デコードされた命令がRSA205、RSE206、RSF207にエントリを作成される場合には、固定小数点更新バッファ212と浮動小数点更新バッファ215に対応するレジスタリネーミングを行うことで、アウト・オブ・オーダー実行を行うことが可能となる。オペランドアドレス生成器210A及び210Bは、RSA205のエントリに応じて、オペランドのアドレスを生成し、1次データキャッシュメモリ211に出力する。1次データキャッシュメモリ211は、生成されたオペランドアドレスのデータを固定小数点更新バッファ212又は浮動小数点更新バッファ215に出力する。演算器EXA及びEXBは、RSE206のエントリに応じて固定小数点演算を行う固定小数点演算器(第2の演算器)である。演算器FLA及びFLBは、RSF207のエントリに応じて浮動小数点演算を行う浮動小数点演算器(第1の演算器)である。演算器EXA及びEXBの演算の実行結果は、固定小数点更新バッファ212に格納される。演算器FLA及びFLBの演算の実行結果は、浮動小数点更新バッファ215に格納される。記憶素子214は、演算器FLAに接続される。リザベーションステーション205〜208から、アウト・オブ・オーダーで実行された命令は、CSE209の制御によりプログラムの順番通りに命令の完了を行い、完了した命令に対してのみ、固定小数点レジスタ213や浮動小数点レジスタ216やプログラムカウンタ217,218などのプログラマブルな資源の更新を行う。プログラムカウンタ218は、現在実行する命令のアドレスを出力する。プログラムカウンタ217は、プログラムカウンタ218のアドレスの次のアドレスを出力する。分岐予測機構204は、RSBR208のエントリに応じて、分岐命令が分岐するか否かを予測し、次に実行するアドレスを命令フェッチアドレス生成器201に出力する。また、RSBR208は、上記の分岐命令の予測が誤っていることが確定した場合には、正しいアドレスを命令フェッチアドレス生成器201に出力する。
固定小数点更新バッファ212は、演算器EXA又はEXBの未確定の実行結果を記憶する。固定小数点レジスタ213は、演算器EXA又はEXBの実行が終了すると、固定小数点更新バッファ212に記憶されている実行結果を確定して記憶する。演算器EXA又はEXBは、固定小数点更新バッファ212内の実行結果のうちの使用可能な実行結果又は固定小数点レジスタ213のデータを用いて命令を実行する。
浮動小数点更新バッファ215は、演算器FLA又はFLBの未確定の実行結果を記憶する。浮動小数点レジスタ216は、演算器FLA又はFLBの実行が終了すると、浮動小数点更新バッファ215に記憶されている実行結果を確定して記憶する。演算器FLA又はFLBは、浮動小数点更新バッファ215内の実行結果のうちの使用可能な実行結果又は浮動小数点レジスタ216のデータを用いて命令を実行する。演算器FLAは、複雑な浮動小数点演算命令及び簡単な浮動小数点演算命令を含むすべての浮動小数点演算命令を実行可能である。これに対し、演算器FLBは、複雑な浮動小数点演算命令を実行できず、簡単な浮動小数点演算命令のみ実行可能である。
図3は、図2のRSF207、演算器FLA及びCSE209の構成例を示す図である。RSF207は、複数のエントリRSF1〜RSFnと、コントローラ301とを有する。複数のエントリRSF1〜RSFnは、それぞれ、複雑な演算命令であるか否かを示す命令の種類と、命令の識別子(IID)と、スレッドの識別子(ID)とを記憶可能である。命令デコーダ203は、デコードした命令が浮動小数点演算命令である場合、複雑な演算命令であるか否かを示す命令の種類と、デコードされた命令の識別子(IID)と、当該デコードされた命令に対応するスレッドの識別子(ID)とをRSF207に出力する。RSF207は、複雑な演算命令であるか否かを示す命令の種類と、デコードされた命令の識別子(IID)と、当該デコードされた命令に対応するスレッドの識別子(ID)とを複数のエントリRSF1〜RSFnのうちのいずれかに記憶する。例えば、エントリRSF2には、命令の種類が複雑な演算命令であり、命令の識別子(IID)が「3」であり、スレッドの識別子(ID)が「1」であることが記憶される。
ここで、図7(A)のように、複雑な演算命令は、演算器FLAによる演算命令の実行サイクル数E1〜ENが閾値以上である演算命令である。これに対し、図7(A)のように、簡単な演算命令(後続の演算命令)は、演算器FLAによる演算命令の実行サイクル数Eが閾値未満である演算命令である。
CSE209は、命令デコーダ203によりデコードされた命令のうちの実行が終了していない命令の識別子(IID)をスレッドの識別子毎に順に記憶するキューQ0,Q1等を有する。キューQ0,Q1等は、すべてのリザベーションステーション205〜208の演算待ちの命令の識別子を記憶する。キューQ0は、スレッドの識別子が「0」である命令の識別子(IID)を順に記憶する。キューQ1は、スレッドの識別子が「1」である命令の識別子(IID)を順に記憶する。CSE209は、キューQ0の中の先頭の命令の識別子(最も古い命令の識別子)TIID0と、キューQ1の中の先頭の命令の識別子(最も古い命令の識別子)TIID1とをRSF207に出力する。
エントリRSF2は、自己のエントリRSF2が記憶する命令の種類が複雑な演算命令であり、自己のエントリRSF2が記憶するスレッドの識別子の「1」に対応するキューQ1の先頭の命令の識別子TIID1が、自己のエントリRSF2が記憶する命令の識別子(IID)の「3」と一致する場合、リクエスト信号REQA及びエントリRSF2に記憶されている演算命令情報を演算器FLA及びコントローラ301に出力し、他のエントリRSF1、RSF3〜RSFnに対して演算器FLAの使用不可信号INHAを出力する。すると、演算器FLAは、エントリRSF2の演算命令の実行を開始する。
なお、上記のように、必ずしも、キューQ1の先頭の命令の識別子TIID1と一致する必要はない。すなわち、エントリRSF2は、エントリRSF2が記憶する命令が、RSF207の中で最も古い未終了の命令である場合、かつエントリRSF2に記憶されている命令が複雑な演算命令である場合に、リクエスト信号REQA及びエントリRSF2に記憶されている演算命令情報を演算器FLAに出力し、他のエントリRSF1、RSF3〜RSFnに対して演算器FLAの使用不可信号INHAを出力するようにしてもよい。ただし、その場合、浮動小数点レジスタ216内の実行結果が未確定であるので、演算器FLAは、浮動小数点レジスタ216内の実行結果が使用可能か否かを判断し、使用可能な実行結果のみを用いて演算命令を実行する。
これに対し、上記のように、キューQ1の先頭の命令の識別子TIID1と一致する場合、浮動小数点レジスタ216内の実行結果が確定しているので、演算器FLAは、浮動小数点レジスタ216内の実行結果が使用可能か否かを判断することなく、浮動小数点レジスタ216内の実行結果を用いて演算命令を実行することができる利点がある。
ここで、エントリRSF2は、リクエスト信号REQA及びエントリRSF2に記憶されている演算命令情報を演算器LFA及びコントローラ301に出力する場合、自己のエントリRSF2とは異なる他のエントリRSF1、RSF3〜RSFnに対して演算器FLAの使用不可信号INHAを出力する。これにより、エントリRSF1、RSF3〜RSFnは、演算器FLAを使用することができなくなり、エントリRSF2が演算器FLAを独占的に使用する。
ただし、この演算命令は、複雑な演算命令であるため、演算器FLAの演算命令実行時間は長い。その結果、スレッドの識別子が「1」の複雑な演算命令が実行されると、スレッドの識別子が「0」である演算命令が長時間待機状態になる場合がある。
そこで、コントローラ301は、タイマを有し、リクエスト信号REQAを入力し、かつその命令の種類が複雑な演算命令である場合には、タイマのカウントを開始させる。
図4は、図3に続く中央演算処理装置101の処理方法を示す図である。コントローラ301は、演算器FLAの使用不可信号INHAが出力された後、使用不可中断条件を満たした場合には、演算器FLAの実行を中断させるための中断信号404を演算器FLAに出力し、使用不可信号INHAの出力を中断させるための中断信号405を出力する。
例えば、上記の使用不可中断条件は、コントローラ301のタイマのカウント値が、演算器FLAの使用不可信号INHAが出力されてから一定時間経過しており、かつエントリRSF2のスレッドの識別子の「1」とは異なるスレッドの識別子を有する準備完了状態のエントリがエントリRSF1、RSF3〜RSFnの中に存在することが条件である。
他の例として、上記の使用不可中断条件は、RSF207内において、エントリRSF2が記憶するスレッドの識別子とは異なるスレッドの識別子のエントリの数が一定数以上であることの条件であってもよい。
例えば、コントローラ301は、使用不可中断条件を満たす場合、エントリRSF2が記憶するスレッドの識別子「1」とは異なるスレッドの識別子を記憶し、かつRSF207の中で最も古い未終了の命令の識別子(IID)を記憶し、かつ命令発行の準備完了状態であるエントリRSF1を選択する。そして、コントローラ301は、エントリRSF2からエントリRSF1への使用不可信号INHAを中断させるための中断信号405を出力し、演算器FLAの実行を中断させるための中断信号404を演算器FLAに出力する。すると、演算器FLAは、エントリRSF2が記憶する演算命令の実行を中断し、演算器FLAの状態401を記憶素子214に退避する。また、エントリRSF2からエントリRSF1への使用不可信号INHAの出力が中断される。すると、エントリRSF1は、リクエスト信号REQA及びエントリRSF1に記憶されている演算命令情報を演算器FLAに出力する。すると、演算器FLAは、エントリRSF1が記憶する演算命令を実行し、その実行が終了すると、記憶素子214に退避した状態403に戻し、中断処理終了信号402をコントローラ301に出力する。すると、コントローラ301は、中断信号405の出力を終了する。すると、エントリRSF2からエントリRSF1への使用不可信号INHAの出力が再開される。すると、コントローラ301は、タイマのカウント値をリセットし、タイマのカウントを開始させる。また、演算器FLAは、エントリRSF2に記憶されている演算命令の実行を再開する。
図5は、図4に続く中央演算処理装置101の処理方法を示す図である。エントリRSF2は、演算器FLAがエントリRSF2の演算命令の実行を終了し、終了信号501を出力すると、演算器FLAの使用不可信号INHAの出力を終了する。
図6は、中央演算処理装置101の処理方法を示すフローチャートである。ステップS601では、RSF207は、複雑な演算命令のエントリRSF2を作成する。次に、ステップS602では、エントリRSF2は、キューQ0,Q1等の先頭の命令の識別子TIID0,TIID1等の発行を待つ。次に、ステップS603では、エントリRSF2は、自己のエントリRSF2に記憶されている命令の識別子(IID)が、自己のエントリRSF2に記憶されているスレッドの識別子の「1」に対応するキューQ1の先頭の命令の識別子TIID1と一致しているか否かを判断する。一致していない場合には、ステップS602に戻り、一致している場合には、ステップS604に進む。ステップS604では、エントリRSF2は、自己のエントリRSF2が命令発行の準備が完了しているか否かを判断する。準備が完了していない場合には、ステップS602に戻り、準備が完了している場合には、ステップS605に進む。
ステップS605では、エントリRSF2は、リクエスト信号REQA及び演算命令情報を演算器FLAに出力することにより、演算器FLAに演算命令の実行を指示する。コントローラ301は、カウンタのカウントを開始させる。エントリRSF2は、他のエントリREF1、RSF3〜RSFnに使用不可信号INHAを出力するので、演算器FLAを独占的に使用することができる。演算器FLAは、エントリRSF2の複雑な演算命令の実行を開始する。
次に、ステップS606では、コントローラ301は、カウンタの値が閾値以上であり、かつ他のスレッドのエントリの中で演算器FLAの空きを待っているエントリがあることの使用不可中断条件を満たすか否かを判断する。使用不可中断条件を満たす場合には、ステップS607に進み、使用不可中断条件を満たさない場合には、ステップS608に進む。
ステップS607では、コントローラ301は、中断信号404を演算器FLAに出力する。すると、演算器FLAは、複雑な演算命令の実行を中断し、演算器FLAの状態401を記憶素子214に退避する。コントローラ301は、他のスレッドの識別子を記憶し、RSF207内で最も古い未終了の命令を記憶するエントリRSF1を選択し、エントリRSF2からエントリRSF1への使用不可信号INHAの出力を中断させる。すると、エントリRSF1は、リクエスト信号REQA及び演算命令情報を演算器FLAに出力する。すると、演算器FLAは、エントリRSF1の演算命令を実行し、その実行が終了すると、記憶素子214に退避した状態403に戻し、中断処理終了信号402をコントローラ301に出力する。コントローラ301は、エントリRSF2からエントリRSF1への使用不可信号INHAの出力を再開させ、タイマのカウント値をリセットしてカウントを開始させる。演算器FLAは、エントリRSF2の複雑な演算命令の実行を再開する。
次に、ステップS608では、演算器FLAは、エントリRSF2の複雑な演算命令の実行が終了したか否かを判断する。終了していない場合には、ステップS606に戻り、終了した場合には、ステップS609に進む。
ステップS609では、演算器FLAは、終了信号501を出力する。すると、エントリRSF2は、使用不可信号INHAの出力を終了し、演算器FLAの独占使用を解除し、通常の発行モードに移行する。
通常の発行モードでは、エントリRSF2は、使用不可信号INHAを出力しない。また、エントリRSF2は、自己のエントリRSF2が記憶している命令の識別子が、自己のエントリRSF2に記憶されているスレッドの識別子に対応するキューQ1の先頭の命令の識別子TIID1と一致しているか否かを判断しない。すなわち、エントリRSF2は、エントリRSF2が記憶する命令の識別子が、RSF207の中で最も古い未終了の命令の識別子である場合に、エントリRSF2に記憶されている演算命令情報及びリクエスト信号REQAを演算器FLAに出力し、使用不可信号INHAを出力しない。
図7(A)及び(B)は、中央演算処理装置101のパイプライン処理の処理時間を示す図である。複雑な演算は、エントリRSF2の複雑な浮動小数点演算命令の演算であり、スレッドの識別子が「1」である。後続の演算は、エントリRSF1の簡単な浮動小数点演算命令の演算であり、スレッドの識別子が「0」である。
図7(A)は、コントローラ301が中断信号405を出力しない場合を示す。第1のサイクルT1では、命令デコーダ203は、複雑な演算命令のデコードを行う。第2のサイクルT2では、RFS207は、複雑な演算命令のエントリRSF2を作成し、命令デコーダ203は、後続の命令のデコードを行う。第3のサイクルT3〜第n−1のサイクルTn−1では、演算器FLAは、エントリRSF2の複雑な演算命令を実行する。複雑な演算命令は、例えば、モンゴメリ演算であり、実行時間が長い。また、第3のサイクルT3では、RSF207は、後続の演算命令のエントリRSF1を作成する。第3のサイクルT3〜第n−1のサイクルTn−1では、演算器FLAが複雑な演算命令を実行中であるため、後続の演算命令は待機状態になる。複雑な演算命令の実行終了後、第nのサイクルTnでは、演算器FLAは、後続の演算命令を実行する。後続の演算命令の待機時間701は、長時間になってしまい、スレッドの識別子が「0」のサービスの質(QoS)が著しく低下してしまう課題がある。図7(B)の本実施形態は、この課題を解決する。
図7(B)は、上記の図3〜図5のように、コントローラ301が中断信号405を出力する場合を示す。第1のサイクルT1から第mのサイクルTmの前までは、図7(A)と同じである。第4のサイクルT4の後、第mのサイクルTmでは、コントローラ301の中断信号404及び405により、演算器FLAは、エントリRSF2の複雑な演算命令の実行を中断し、エントリRSF1の後続の演算命令を実行する。その実行が終了すると、演算器FLAは、エントリRSF2の複雑な演算命令の実行を再開する。この場合、後続の演算命令の待機時間702は、図7(A)の待機時間701より短くなり、スレッドの識別子が「0」のサービスの質(QoS)の低下を防止することができる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
203 命令デコーダ
207 浮動小数点演算用リザベーションステーション
209 コミットスタックエントリ
214 記憶素子
215 浮動小数点更新バッファ
216 浮動小数点レジスタ
301 コントローラ
FLA,FLB 演算器
RSF1〜RSFn エントリ
Q0,Q1 キュー

Claims (10)

  1. 複数のスレッドの命令を実行する演算処理装置であって、
    命令をデコードすることにより、前記デコードされた命令及びデコードされた前記命令に対応するスレッドの識別子を出力する命令デコーダと、
    前記命令デコーダによりデコードされた命令及びデコードされた前記命令に対応するスレッドの識別子を複数のエントリのうちのいずれかに記憶するリザベーションステーションと、
    前記リザベーションステーションに記憶されている命令を実行する第1の演算器とを有し、
    前記リザベーションステーション内の前記複数のエントリのうちの第1のエントリは、前記第1のエントリに記憶されている命令を前記第1の演算器に出力する場合、前記第1のエントリに記憶されている命令の実行サイクル数が閾値以上である場合には、前記第1のエントリとは異なる第2のエントリに対して前記第1の演算器の使用不可信号を出力し、
    前記リザベーションステーションは、前記第1の演算器の使用不可信号が出力された後、使用不可中断条件を満たした場合には、前記第1の演算器の実行を中断させ、前記第1の演算器の状態を記憶素子に退避させ、前記第1の演算器の使用不可信号の出力を中断させるコントローラを有し、
    前記第2のエントリは、前記第2のエントリが記憶するスレッドの識別子が、前記第1のエントリが記憶するスレッドの識別子と異なり、かつ前記第2のエントリが記憶する命令が、前記リザベーションステーションの中で最も古い未終了の命令であり、かつ前記第1の演算器の使用不可信号の出力が中断されている場合、前記第2のエントリに記憶されている命令を前記第1の演算器に出力し、
    前記第1の演算器は、前記第2のエントリが出力した命令の実行が終了すると、前記記憶素子に退避した状態に戻し、前記第1のエントリの命令の実行を再開することを特徴とする演算処理装置。
  2. 前記使用不可中断条件は、前記第1の演算器の使用不可信号が出力されてから一定時間経過していることの条件であることを特徴とする請求項1記載の演算処理装置。
  3. 前記使用不可中断条件は、前記第1のエントリが記憶する前記スレッドの識別子とは異なる前記スレッドの識別子のエントリの数が一定数以上であることの条件であることを特徴とする請求項1記載の演算処理装置。
  4. 前記第1の演算器は、前記第2のエントリが出力した命令の実行が終了すると、終了信号を前記コントローラに出力し、
    前記コントローラは、前記終了信号を入力すると、前記第1の演算器の使用不可信号の出力を前記第1のエントリに再開させることを特徴とする請求項1〜3のいずれか1項に記載の演算処理装置。
  5. 前記第1のエントリは、前記第1の演算器が前記第1のエントリの命令の実行を終了すると、前記第1の演算器の使用不可信号の出力を終了することを特徴とする請求項4記載の演算処理装置。
  6. 前記第1のエントリは、前記第1のエントリが記憶する命令が、前記リザベーションステーションの中で最も古い未終了の命令であり、かつ前記第1のエントリに記憶されている命令の実行サイクル数が閾値以上である場合に、前記第1のエントリに記憶されている命令を前記第1の演算器に出力し、前記第2のエントリに対して前記第1の演算器の使用不可信号を出力することを特徴とする請求項1〜5のいずれか1項に記載の演算処理装置。
  7. さらに、前記命令デコーダによりデコードされた命令のうちの前記第1の演算器が実行する命令とは異なる種類の命令を実行する第2の演算器と、
    前記命令デコーダによりデコードされた命令のうちの実行が終了していない命令の識別子を前記スレッドの識別子毎に順に記憶するキューとを有し、
    前記リザベーションステーションは、前記第2の演算器が実行する命令を記憶せず、前記第1の演算器が実行する命令を記憶し、
    前記キューは、前記第1及び第2の演算器が実行する命令の識別子を記憶し、
    前記第1のエントリは、前記第1のエントリが記憶する前記スレッドの識別子に対応する前記キューの先頭の命令の識別子が前記第1のエントリが記憶する命令を示す場合、かつ前記第1のエントリに記憶されている命令の実行サイクル数が閾値以上である場合に、前記第1のエントリに記憶されている命令を前記第1の演算器に出力し、前記第2のエントリに対して前記第1の演算器の使用不可信号を出力することを特徴とする請求項1〜6のいずれか1項に記載の演算処理装置。
  8. さらに、前記第1の演算器の未確定の実行結果を記憶するバッファと、
    前記第1の演算器の実行が終了すると、前記バッファに記憶されている実行結果を確定して記憶するレジスタとを有し、
    前記第1の演算器は、前記バッファ内の実行結果のうちの使用可能な実行結果を用いて前記命令を実行することを特徴とする請求項7記載の演算処理装置。
  9. 前記第1の演算器は、浮動小数点演算器であることを特徴とする請求項1〜8のいずれか1項に記載の演算処理装置。
  10. 複数のスレッドの命令を実行する演算処理装置であって、
    命令をデコードすることにより、前記デコードされた命令及びデコードされた前記命令に対応するスレッドの識別子を出力する命令デコーダと、
    前記命令デコーダによりデコードされた命令及びデコードされた前記命令に対応するスレッドの識別子を複数のエントリのうちのいずれかに記憶するリザベーションステーションと、
    前記リザベーションステーションに記憶されている命令を実行する第1の演算器とを有する演算処理装置の処理方法であって、
    前記リザベーションステーション内の前記複数のエントリのうちの第1のエントリが、前記第1のエントリに記憶されている命令を前記第1の演算器に出力する場合、前記第1のエントリに記憶されている命令の実行サイクル数が閾値以上である場合には、前記第1のエントリとは異なる第2のエントリに対して前記第1の演算器の使用不可信号を出力し、
    前記リザベーションステーション内のコントローラが、前記第1の演算器の使用不可信号が出力された後、使用不可中断条件を満たした場合には、前記第1の演算器の実行を中断させ、前記第1の演算器の状態を記憶素子に退避させ、前記第1の演算器の使用不可信号の出力を中断させ、
    前記第2のエントリが、前記第2のエントリが記憶するスレッドの識別子が、前記第1のエントリが記憶するスレッドの識別子と異なり、かつ前記第2のエントリが記憶する命令が、前記リザベーションステーションの中で最も古い未終了の命令であり、かつ前記第1の演算器の使用不可信号の出力が中断されている場合、前記第2のエントリに記憶されている命令を前記第1の演算器に出力し、
    前記第1の演算器が、前記第2のエントリが出力した命令の実行が終了すると、前記記憶素子に退避した状態に戻し、前記第1のエントリの命令の実行を再開することを特徴とする演算処理装置の処理方法。
JP2015104724A 2015-05-22 2015-05-22 演算処理装置及び演算処理装置の処理方法 Active JP6477248B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015104724A JP6477248B2 (ja) 2015-05-22 2015-05-22 演算処理装置及び演算処理装置の処理方法
US15/068,692 US9965283B2 (en) 2015-05-22 2016-03-14 Multi-threaded processor interrupting and saving execution states of complex instructions of a first thread to allow execution of an oldest ready instruction of a second thread

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015104724A JP6477248B2 (ja) 2015-05-22 2015-05-22 演算処理装置及び演算処理装置の処理方法

Publications (3)

Publication Number Publication Date
JP2016218855A true JP2016218855A (ja) 2016-12-22
JP2016218855A5 JP2016218855A5 (ja) 2018-02-15
JP6477248B2 JP6477248B2 (ja) 2019-03-06

Family

ID=57324564

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015104724A Active JP6477248B2 (ja) 2015-05-22 2015-05-22 演算処理装置及び演算処理装置の処理方法

Country Status (2)

Country Link
US (1) US9965283B2 (ja)
JP (1) JP6477248B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6237081B1 (en) * 1998-12-16 2001-05-22 International Business Machines Corporation Queuing method and apparatus for facilitating the rejection of sequential instructions in a processor
WO2008155799A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 命令実行制御装置及び命令実行制御方法
US20130297910A1 (en) * 2012-05-03 2013-11-07 Jared C. Smolens Mitigation of thread hogs on a threaded processor using a general load/store timeout counter

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
CN101681261B (zh) * 2007-06-20 2014-07-16 富士通株式会社 运算处理装置及其控制方法
US20140181484A1 (en) * 2012-12-21 2014-06-26 James Callister Mechanism to provide high performance and fairness in a multi-threading computer system
US20160011874A1 (en) * 2014-07-09 2016-01-14 Doron Orenstein Silent memory instructions and miss-rate tracking to optimize switching policy on threads in a processing device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6237081B1 (en) * 1998-12-16 2001-05-22 International Business Machines Corporation Queuing method and apparatus for facilitating the rejection of sequential instructions in a processor
WO2008155799A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 命令実行制御装置及び命令実行制御方法
US20130297910A1 (en) * 2012-05-03 2013-11-07 Jared C. Smolens Mitigation of thread hogs on a threaded processor using a general load/store timeout counter

Also Published As

Publication number Publication date
US20160342415A1 (en) 2016-11-24
US9965283B2 (en) 2018-05-08
JP6477248B2 (ja) 2019-03-06

Similar Documents

Publication Publication Date Title
US8464035B2 (en) Instruction for enabling a processor wait state
US10078518B2 (en) Intelligent context management
US9361111B2 (en) Tracking speculative execution of instructions for a register renaming data store
JP6434791B2 (ja) マルチスレッディングを支援するための演算ユニット、それを含むプロセッサ及びプロセッサの動作方法
JP2008047145A (ja) デュアルスレッドプロセッサ
JP5413853B2 (ja) マルチスレッド型プロセッサのためのスレッドデエンファシス方法及びデバイス
JP2018005488A (ja) 演算処理装置及び演算処理装置の制御方法
JP5201140B2 (ja) 同時マルチスレッドの命令完了制御装置
US9256461B2 (en) Handling interrupt actions for inter-thread communication
US10102003B2 (en) Intelligent context management
US11269647B2 (en) Finish status reporting for a simultaneous multithreading processor using an instruction completion table
US9886396B2 (en) Scalable event handling in multi-threaded processor cores
JP5088371B2 (ja) 情報処理装置と負荷調停制御方法
JP6477248B2 (ja) 演算処理装置及び演算処理装置の処理方法
US10740102B2 (en) Hardware mechanism to mitigate stalling of a processor core
KR20100005686A (ko) 쓰레드 스케줄링 장치 및 시스템
US11068274B2 (en) Prioritized instructions in an instruction completion table of a simultaneous multithreading processor
JP7032647B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20180088951A1 (en) Instruction issue according to in-order or out-of-order execution modes
US20230122466A1 (en) Cache coherence validation using delayed fulfillment of l2 requests
JP2011134181A (ja) 演算処理装置、情報処理装置及び演算処理装置のパイプライン制御方法
US20150052334A1 (en) Arithmetic processing device and control method of arithmetic processing device
JP2014211890A (ja) マルチスレッドプロセッサ及びその割り込み処理方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180105

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181128

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190121

R150 Certificate of patent or registration of utility model

Ref document number: 6477248

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02