JP5099132B2 - 複数のスレッドを同時に処理する演算装置 - Google Patents

複数のスレッドを同時に処理する演算装置 Download PDF

Info

Publication number
JP5099132B2
JP5099132B2 JP2009520144A JP2009520144A JP5099132B2 JP 5099132 B2 JP5099132 B2 JP 5099132B2 JP 2009520144 A JP2009520144 A JP 2009520144A JP 2009520144 A JP2009520144 A JP 2009520144A JP 5099132 B2 JP5099132 B2 JP 5099132B2
Authority
JP
Japan
Prior art keywords
instruction
execution
circuit
thread
retry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009520144A
Other languages
English (en)
Other versions
JPWO2008155803A1 (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 JPWO2008155803A1 publication Critical patent/JPWO2008155803A1/ja
Application granted granted Critical
Publication of JP5099132B2 publication Critical patent/JP5099132B2/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Retry When Errors Occur (AREA)
  • Advance Control (AREA)

Description

本発明は、複数のスレッドを同時に処理する演算装置であって、ハードウェア命令のリトライ機能を有する演算装置に関する。
信頼性を重視するサーバ用プロセサにおいては、命令処理中にエラーを検出すると、その時点で処理していた命令をハードウェアで再実行する命令リトライ処理が行われている。例えば、以下のようなエラーが発生したときに、命令リトライを実行することで、プログラムを異状終了させることなく、処理を継続することができる。
(1)α線などによって一時的にハードウェア内部の状態が変化することで発生するエラー
ハードウェア自体の故障が原因ではないので、命令を再実行したときに同じエラーが発生する可能性は非常に低い。したがって、この類のエラーは、ほぼ確実に命令リトライで回復することができる。
(2)ハードウェア内部の近接配線からのノイズによって発生するエラー
プロセサ内部の信号線がエレクトロマイグレーションなどによって壊れかけている場合には、その信号線に近接する信号線にエラーが発生することがある。このようなエラーは、単一命令のみを再実行することによって、再実行時に近接配線が変動する確率が大幅に減少するので、命令リトライで回復できる可能性が高くなる。
図1は、従来の命令リトライ方式を説明する図である。
命令リトライ機構を有する従来の演算装置100は、図1に示すように、命令実行回路101と、実行状態制御回路102と、リトライ制御回路103と、を備える。
命令実行回路101は、任意の命令を記憶装置からフェッチし、フェッチした命令に対してデコード処理を行なう。そして、デコードされた命令に応じて演算を実行する。また、命令実行に際して、プログラマブル資源の更新を順次指示するとともに、命令実行中のエラーの有無をチェックする。また、命令実行回路101は、命令実行や資源更新が完了すると、リトライ制御回路103に通知する。
実行状態制御回路102は、命令実行回路101に対して命令実行のキャンセルを指示する。
リトライ制御回路103は、命令実行回路101が命令リトライ可能なタイミングを判断し、命令リトライを行なうことが確定したことを示すフラグ(例えばレジスタ)のON/OFFを制御する。そして、リトライ可能なタイミングと判断すると、命令実行回路101に対して単一命令実行を指示する。
命令実行回路101は、資源を1つしか更新しない命令の場合、命令実行の完了と資源更新の完了を同一のタイミングで通知するが、複数のサイクルにわけて資源を更新する命令の場合、命令実行の完了と資源更新の完了とを異なるタイミングで通知する。この場合、リトライ制御回路103は、資源更新後から命令実行の完了直前まで間はリトライ不可能と判断する。
以上の構成において、以下に示すリトライ処理が行なわれる。
(1)命令実行回路101は、命令実行中にエラーを検出すると、実行状態制御回路102とリトライ制御回路103に対してエラー発生を通知する。
(2)命令実行回路101からエラー発生の通知を受けると、実行状態制御回路102は、エラーデータを使って資源の更新が行なわれることを避けるために、即座に命令実行回路101に対して命令実行のキャンセルを指示する。
(3)命令実行回路101からエラー発生の通知を受けると、リトライ制御回路103は、リトライ可能なタイミングか否かを判断する。そして、リトライ可能なタイミングであれば、命令リトライを行なうことが確定したことを示すフラグをセットし、命令実行回路101に命令の再実行を指示する。
一方、(4)実行状態制御回路102から命令実行キャンセルの指示を受けると、命令実行回路101は、命令実行回路101内の処理を全てクリアする。また、命令実行回路101は、実行状態制御回路102からの命令実行キャンセルの指示が解除されると、リトライ制御回路103からの指示にしたがって命令の再実行を行なう。
(5)命令の再実行が完了すると、命令実行回路101は、命令実行の完了をリトライ制御回路103に通知する。
(6)命令実行回路101から命令実行の完了の通知を受けると、リトライ制御回路103は、命令リトライ処理を行なうことが確定したことを示すフラグをリセットして命令実行回路101への再実行の指示を解除する。
(7)再実行の指示が解除されると、命令実行回路101は、リトライ処理を終了し、通常の命令実行処理を再開する。
ここで、性能を重視するプロセッサにおいては、複数スレッドの命令列を同時に処理することで性能の向上を図るプロセサが提案されている。
例えば、1サイクル毎に異なるスレッドの命令列を実行するfine grained vertical multi−threadingと呼ばれる方式や、複数スレッドの命令列を同時に実行するsimultaneous multi−threadingと呼ばれる方法を使用したプロセッサである。この方式は、ある同一時点でみたときに、複数スレッドの命令列を同時に命令実行回路で処理することができる。
サーバ用のプロセッサには、高性能かつ高信頼性が要求されるため、複数スレッドの命令列処理を同時に行なうことによる高性能化と、エラー時のリトライ処理による高信頼性と、の両立が要求されている。
複数スレッドの命令列を処理するプロセサにおいて、リトライ処理を行なう方法として、以下の2つの方法が考えられる。
(A)従来と同じ単一スレッドの命令列を処理するプロセサの命令リトライ機構を全スレッドに対して共通に一つだけプロセッサに備える方法。
(B)従来と同じ単一スレッドの命令列を処理するプロセサの命令リトライ機構をスレッド毎に一つずつプロセッサに備える方法。
しかし、(A)に示す方法では、エラー発生を検出したタイミングで、複数処理されているスレッドのうちいずれか一つがリトライ不可能な状態であると、命令リトライは不可能となる。即ち、スレッド数が増えれば増えるほど命令リトライ不可能と判断される可能性が高くなる。したがって、リトライ成功率は単一スレッド用プロセサよりも低くなる。
また、(B)に示す方法では、命令リトライはスレッド毎に行われることなる。即ち、あるスレッドでエラーが検出されて命令リトライ処理が行われている間、エラーが検出されていないスレッドの命令列は通常通り実行される。従って、単一スレッド処理プロセサに比べて、命令リトライ処理中に動作する回路量が増える。そのため、例えば、他配線からのノイズにエラー原因がある場合のリトライ成功率は単一スレッド用プロセサよりも低くなる。
上記技術に関連する技術として、特許文献1には、命令リトライを何度も繰り返し動作させて検証することができるようにすることによって、高い品質をもった命令リトライ機能を実現することができる情報処理装置について開示されている。
特許文献2には、オペランドデータを複数回参照するコマンドを各1回のみオペランドデータを参照するコマンドに分割しておき、実行時にエラーが発生した場合にはそのコマンドのみを再実行する情報処理装置について開示されている。
特開2006−040174号公報 米国特許第5564014号明細書
本発明は、上述した問題に鑑みてなされたものであり、その解決しようとする課題は、単一スレッドの命令列を処理するプロセッサと同等のリトライ成功率を実現する複数スレッドの命令列を同時に処理できるプロセッサを提供することである。
上記課題を解決するために、本発明に係る演算装置は、複数のスレッドを並列的に実行し、該実行中に発生するハードウェアエラーを検出して通知する命令実行回路と、該命令実行回路から前記ハードウェアエラーが通知されると、前記命令実行回路に対して全スレッドについて実行のキャンセルを指示して該全スレッドがキャンセル状態となるまで待ち合わせを行ない、前記ハードウェアエラーが発生したエラースレッドについて1命令だけ再実行を指示する実行制御回路と、を備える。
本発明によると、実行制御回路は、全スレッドの実行をキャンセルし、かつ、全スレッドがキャンセル状態となるまで待ち合わせを実行する。そして、全スレッドがキャンセル状態となると、命令実行回路に対して1命令だけ再実行を指示する。
したがって、再実行の指示によって動作する回路以外の他の回路は動作しないので、当該他の回路からのノイズによるエラーの発生を回避することが可能となる。
また、実行制御回路は、全スレッドがキャンセル状態となるまで待ち合わせて、命令実行回路に再実行を指示するので、命令実行回路は確実に指示されたスレッドについて再実行することができる。
その結果、複数スレッドの命令列を同時に処理できるプロセッサにおけるハードウェアエラー時の再実行の成功率を向上することが可能となる。
以上のように、本発明によると、単一スレッドの命令列を処理するプロセッサと同等のリトライ成功率を実現する複数スレッドの命令列を同時に処理できるプロセッサを提供することができる。
従来の命令リトライ方式を説明する図である。 本実施例に係る演算装置の動作原理を説明する図である。 本実施例に係る演算装置の全体構成の概要を示す図である。 本実施例に係る実行状態制御回路の構成例を示す図である。 本実施例に係るリトライ制御回路の構成例を示す図である。 本実施例に係るスレッド待ち合わせ回路の構成例を示す図である。 本実施例に係る命令実行回路の構成例を示す図である。 本発明に係る演算装置の動作を説明するフローチャートである。
以下、本発明の実施形態について、図2〜図8に基づいて説明する。
図2は、本実施例に係る演算装置200の動作原理を説明する図である。
図2に示す演算装置200は、複数のスレッドを実行する命令実行回路201と、各スレッドについての実行状態や再実行を制御する実行制御回路202と、を備える。
命令実行回路201は、1以上の命令列からなる複数のスレッドを並列的に処理する回路である。例えば、各スレッドに対して、命令フェッチ、命令デコード、演算実行、命令完了、プログラマブル資源更新の指示、命令実行中のハードウェアエラーのチェック等を行なう。
そして、命令実行回路201は、各スレッドについて命令実行中にハードウェアエラーを検出すると、実行制御回路202に当該ハードウェアエラーを通知する(以下、この通知を単に「エラー通知」という)。
また、命令実行回路201は、実行制御回路202から特定のスレッドについて実行のキャンセルの指示(以下、この指示を「キャンセル指示」という)を受けると、当該スレッドについての実行をキャンセルする。
また、命令実行回路201は、実行制御回路202から特定のスレッドについて再実行の指示(以下、「リトライ指示」という)を受けたもののうち、図示しない実行状態制御回路302からの実行のキャンセルを解除する指示(以下、この指示を「キャンセル解除指示」という)を受けたスレッドについて、1命令だけ再実行を行なう。
実行制御回路202は、命令実行回路201からエラー通知を受けると、命令実行回路201に対して、ハードウェアエラーが発生した時に実行していたスレッド(以下、「エラースレッド」という)のキャンセル指示を行なうとともに、当該エラースレッドのリトライ指示を行なう。
この時、実行制御回路202は、命令実行回路201に対して、エラースレッド以外の実行中のスレッド(以下、「正常スレッド」という)についても実行のキャンセルを指示する。
そして、実行制御回路202は、命令実行回路201におけるスレッドの実行状態を監視して、全スレッドの実行がキャンセルされるまで待ち合わせを行なう。
また、全スレッドの実行がキャンセルされると、実行制御回路202は、命令実行回路201に対して、エラースレッドについてキャンセル解除指示を行なって1命令だけ再実行させる。実行制御回路202は、1スレッドずつ再実行を行ない、全てのエラースレッドについて再実行が完了すると、リトライ処理を終了する。
図3は、本実施例に係る演算装置200の全体構成の概要を示す図である。
図3に示すように演算装置200は、複数のスレッドを実行する命令実行回路201と、各スレッドについての実行状態や再実行を制御する実行制御回路202と、各スレッドの実行に使用するプログラマブル資源301−1、301−2、・・・、301−n(nは自然数。以下、任意のプログラマブル資源を指す場合には「プログラマブル資源301」と記載する)と、を備える。
そして、実行制御回路202は、スレッド毎に、スレッドの実行状態を制御する実行状態制御回路302−1、302−2、・・・、302−nと、スレッドの再実行を制御するリトライ制御回路303−1、303−2、・・・、303−nと、を備え、さらに、リトライ実行に際して全スレッドがキャンセルされるまで待ち合わせを行なう待ち合わせ回路304と、を備える。
なお、任意の実行状態制御回路302−1〜302−nを指す場合には「実行状態制御回路302」と記載する。同様に、任意のリトライ制御回路303−1〜303−nを指す場合には「リトライ制御回路303」と記載する。
命令実行回路201は、図2で説明したように、1以上の命令列からなる複数のスレッドを並列的に処理する。例えば、各スレッドについて、命令フェッチ、命令デコード、演算実行、命令完了、プログラマブル資源更新の指示、命令実行中のハードウェアエラーのチェック等を行なう。
命令実行回路201は、命令実行中又は命令実行完了時にプログラマブル資源301の更新を行なうと、更新したプログラマブル資源301を使用するスレッドを管理するリトライ制御回路303に対して資源の更新を通知する(以下、この通知を「資源更新通知」という)。
また、命令実行回路201は、任意のスレッドについて命令実行が完了すると、当該スレッドを管理するリトライ制御回路303とスレッド待ち合わせ回路304に対して命令実行の完了を通知する(以下、この通知を「命令完了通知」という)。
また、命令実行回路201は、命令実行中のハードウェアエラーを検出すると、エラースレッドを管理する実行状態制御回路302に対してエラー通知を行なう。
また、命令実行回路201は、実行状態制御回路302からキャンセル指示を受けると、その実行状態制御回路302が管理するスレッドの命令実行処理を全てクリア(キャンセル)し、そのスレッドのプログラマブル資源の更新を中止する。そして、実行状態制御回路302からキャンセル解除通知を受けるまで、この状態を維持する。
また、命令実行回路201は、リトライ制御回路303からリトライ指示を受けたスレッドのうち、実行状態制御回路302からキャンセル解除通知を受けたスレッドについて、1命令だけ再実行を行なう。
実行状態制御回路302は、命令実行回路201からエラー通知を受け、又は、スレッド待ち合わせ回路304からキャンセル指示を受けると、命令実行回路201に対して、キャンセル指示を行なう。
この時、実行状態制御回路302は、当該スレッドがキャンセルされた状態であることをスレッド待ち合わせ回路304に通知する。
また、実行状態制御回路302は、スレッド待ち合わせ回路304からキャンセル解除指示を受けると、図示しないが命令実行回路201に対して、当該スレッドについてキャンセル解除指示を行なう。
リトライ制御回路303は、命令実行回路201からエラー通知を受けると、命令実行回路201からの命令完了通知や資源更新通知に基づいて、当該スレッドについてリトライ可能なタイミングか否かを判断する。リトライが可能なタイミングにある場合(以下、この状態を「リトライ確定状態」という)、命令実行回路201に対してリトライ指示を行なうとともに、スレッド待ち合わせ回路304に対して当該スレッドがリトライ確定状態にあることを通知する(以下、この通知を「リトライ確定通知」という)。
スレッド待ち合わせ回路304は、リトライ制御回路303からリトライ確定通知を受けると、命令実行回路201から命令完了通知を受けた全スレッドの実行状態制御回路302に対して、キャンセル指示を行なう。
そして、スレッド待ち合わせ回路304は、各スレッドを管理する実行状態制御回路302からのキャンセル状態通知を監視して、全スレッドがキャンセルされるまで待ち合わせを行なう。
そして、スレッド待ち合わせ回路304は、リトライ確定状態にあるスレッドの中から1スレッド選択し、当該スレッドを管理する実行状態制御回路302に対してキャンセル解除指示を行なう。キャンセル解除指示を受けた実行状態制御回路302は、上述したように、図示しないが実行状態制御回路302から命令実行回路201に対して当該キャンセル解除指示を行なうので、当該スレッドについて1命令だけリトライ処理が行なわれることとなる。(この処理は、リトライ確定状態にある全てのスレッドに対して行なわれる)。
そして、スレッド待ち合わせ回路304は、リトライ確定状態にある全スレッドについてリトライ処理が完了すると、全ての実行状態制御回路302に対してキャンセル解除指示を行なって、リトライ処理を終了する。
以下、各回路の具体的な構成例について説明する。
図4は、本実施例に係る実行状態制御回路302の構成例を示す図である。
図4に示す実行状態制御回路302は、論理演算を行なう論理和回路aと、状態の保持・遷移が可能なレジスタ(例えば、RS−FF)401と、で構成される。
論理和回路aは、命令実行回路201からのエラー通知と、スレッド待ち合わせ回路304からのキャンセル指示と、を入力とする。レジスタ401は、セット側に論理和回路aの出力、リセット側にスレッド待ち合わせ回路304からのキャンセル解除指示を入力とする。
エラー通知が「1」、又は、キャンセル指示が「1」となると、論理和回路aは「1」を出力し、レジスタ401に「1」がセットされる。そして、レジスタ401は、セットされた値を保持する。この時のレジスタ401の状態を「キャンセル状態」という。また、キャンセル解除指示が「1」となると、レジスタ401が「0」にセットされる(キャンセル状態が解除される)。
レジスタ401の出力は、命令実行回路201とスレッド待ち合わせ回路304とに入力される。命令実行回路201への出力がキャンセル指示(キャンセル解除指示)であり、スレッド待ち合わせ回路304への出力がキャンセル状態通知である。
したがって、実行状態制御回路302は、命令実行回路201からエラー通知、または、スレッド待ち合わせ回路304からキャンセル指示を受けると、キャンセル状態にセットされ、命令実行回路201に対してキャンセル指示を行なうとともに、スレッド待ち合わせ回路304に対してキャンセル状態通知を行なう。また、実行状態制御回路302は、スレッド待ち合わせ回路304からキャンセル解除指示を受けると、キャンセル状態解除され、命令実行回路201に対してキャンセル解除指示を行なう。
図5は、本実施例に係るリトライ制御回路303の構成例を示す図である。
図5に示すリトライ制御回路303は、状態の保持・遷移が可能なレジスタ(例えば、RS−FF)501及び502と、論理演算を行なう論理積回路b、否定論理積回路c及び否定回路dと、で構成される。
レジスタ501は、セット側に命令実行回路201からの命令完了通知、リセット側に命令実行回路201からの資源更新通知を入力とする。また、レジスタ502は、セット側に論理積回路bからの出力、リセット側に命令実行回路201からの命令完了通知を入力とする。また、論理積回路bは、レジスタ501の出力、否定論理積回路cの出力、命令実行回路201からのエラー通知、を入力とする。また、否定論理積回路cは、命令実行回路201からの命令完了通知を入力とする否定回路dの出力、命令実行回路201からの資源更新通知、を入力とする。
レジスタ501は、命令完了通知が「1」となると「1」にセットされ、資源更新通知が「1」となると「0」にセットされる。したがって、レジスタ501は、命令完了以外のタイミングで資源更新通知が行われたときにリセットされ、命令完了通知を受けたタイミングでセットされる。以下、このレジスタ501をRETRY_POINTという。
論理積回路bは、RETRY_POINTが「1」、否定論理積回路cの出力が「1」、かつ、エラー通知が「1」の場合のみ「1」を出力する。
否定論理積回路cは、命令完了通知が「0」、かつ、資源更新通知が「1」以外の場合に「1」を出力する。すなわち、資源更新通知が入力されない限り「1」を出力する。
レジスタ502は、論理積回路bの出力が「1」となると「1」にセットされ、命令完了通知が「1」となると「0」にセットされる。以下、このレジスタ502をRETRY_TGRといい、RETRY_TGRが「1」に設定されたことを、「リトライが確定」したという。
RETRY_TGRの出力は、命令実行回路201とスレッド待ち合わせ回路304とに入力される。命令実行回路201への出力がリトライ指示であり、スレッド待ち合わせ回路304への出力がリトライ確定通知である。
以上から、リトライ制御回路303は、命令完了通知を受けてから資源更新通知を受けるまでの間に、エラー通知を受けるとリトライが確定し、命令完了通知を受けるとリトライ確定が解除される。
図6は、本実施例に係るスレッド待ち合わせ回路304の構成例を示す図である。
図6に示すスレッド待ち合わせ回路304は、各スレッドを管理する実行状態制御回路302に対してキャンセル指示を行なうキャンセル指示部601と、各スレッドを管理する実行状態制御回路302に対してキャンセル解除指示を行なうキャンセル解除指示部602と、を備える。
キャンセル指示部601は、スレッド1のキャンセル指示を行なうキャンセル指示部603−1、スレッド2のキャンセル指示を行なうキャンセル指示部603−2、・・・、スレッドnのキャンセル指示を行なうキャンセル指示部603−n、を備える。
例えば、キャンセル指示部603−1は、スレッド1以外の全スレッド(スレッド2〜n)のRETRY_TGRを入力とする論理和回路eと、命令実行回路201からのスレッド1についての命令完了通知と論理和回路eの出力を入力とする論理積回路fと、で構成される。
論理和回路eは、スレッド1以外の少なくとも1つ以上のスレッドについてRETRY_TGRが「1」となると、「1」を出力する。論理積回路fは、命令実行回路201からのスレッド1についての命令完了通知が「1」、かつ、論理和回路eの出力が「1」の時に、「1」を出力する。
したがって、キャンセル指示部603−1は、スレッド1以外のスレッドでリトライが確定し、スレッド1の命令が完了すると、スレッド1に対してキャンセル指示を出力する。
同様に、キャンセル指示部603−m(mは自然数)は、スレッドm以外の全スレッド(スレッド1〜m−1及びスレッドm+1〜n)のRETRY_TGRを入力とする論理和回路eと、命令実行回路201からのスレッドmについての命令完了通知と論理和回路eの出力を入力とする論理積回路fと、で構成される。
論理和回路eは、スレッドm以外の少なくとも1つ以上のスレッドについてRETRY_TGRが「1」となると、「1」を出力し、論理積回路fは、命令実行回路201からのスレッドmについての命令完了通知が「1」、かつ、論理和回路eの出力が「1」の時に、「1」を出力する。
したがって、キャンセル指示部603−mは、スレッドm以外のスレッドでリトライが確定し、スレッドmの命令が完了すると、スレッドmに対してキャンセル指示を出力する。
キャンセル解除指示部602は、実行状態制御回路302に対して、スレッド1のキャンセル解除指示を行なうキャンセル解除指示部604−1、スレッド2のキャンセル解除指示を行なうキャンセル解除指示部604−2、・・・、スレッドnのキャンセル解除指示を行なうキャンセル解除指示部604−nと、全スレッドについてキャンセルの待ち合わせを行なう待ち合わせ部605と、を備える。
キャンセル解除指示部604−1は、スレッド1のRETRY_TGRを入力とする否定回路c1と、スレッド2〜nのRETRY_TGRを入力とする論理和回路dと、否定回路c1の出力と論理和回路dの出力を入力とする論理積回路eと、論理積回路eの出力と待ち合わせ部605の出力を入力とする論理和回路fと、論理和回路fの出力を入力とする否定回路gと、で構成される。
否定回路c1は、スレッド1のRETRY_TGRが「0」の時に「1」を出力する。論理和回路dは、スレッド1以外のスレッドのRETRY_TGRが「1」の時に「1」を出力する。論理積回路eは、否定回路c1が「1」、かつ、論理和回路dが「1」の時のみ論理和回路fに「1」を出力する。
したがって、キャンセル解除指示部604−1は、スレッド1以外のスレッドについて命令リトライが確定している場合に、待ち合わせ部605による待ち合わせが完了すると、スレッド1に対してキャンセル解除指示を行なう。
同様に、キャンセル解除指示部604−mは、スレッド1、2、・・・、mのRETRY_TGRを入力とする否定回路c1、c2、・・・、cmと、スレッドm+1、m+2、・・・、nのRETRY_TGRを入力とする論理和回路dと、否定回路c1、c2、・・・、cmの出力と論理和回路dの出力を入力とする論理積回路eと、論理積回路eの出力と待ち合わせ部605の出力を入力とする論理和回路fと、論理和回路fの出力を入力とする否定回路gと、で構成される。
否定回路c1、c2、・・・、cmはそれぞれスレッド1、2、・・・、mのRETRY_TGRが「0」の時に「1」を出力する。論理和回路dは、スレッドc1、c2、・・・、cm以外のスレッドのRETRY_TGRが「1」の時に「1」を出力する。論理積回路eは、否定回路c1、c2、・・・、cmが「1」、かつ、スレッドm+1、m+2、・・・、nのRETRY_TGRが「1」の時のみ論理和回路fに「1」を出力する。
したがって、キャンセル解除指示部604−mは、スレッド1、2、・・・、m以外のスレッドについて命令リトライが確定している場合に、待ち合わせ部605による待ち合わせが完了すると、スレッドmに対してキャンセル解除指示を行なう。
待ち合わせ部605は、各実行状態制御回路302からのスレッド1、2、・・・、nについてのキャンセル状態通知を入力とする論理積回路hと、論理積回路hの出力を入力とする否定回路iと、スレッド1、2、・・・、nについてのRETRY_TGRを入力とする論理和回路jと、否定回路iの出力と論理和回路jの出力を入力とする論理積回路kと、を備える。
待ち合わせ部605は、スレッド1、2、・・・、nの少なくとも1つ以上のスレッドのRETRY_TGRが「1」、かつ、全スレッドについてキャンセル状態通知が「1」となった場合のみ、論理和回路fに「0」を出力し、その他の場合には、論理和回路fに「1」を出力する。
したがって、待ち合わせ部605は、スレッド1、2、・・・、nの少なくとも1つ以上のスレッドについてリトライが確定した場合に、全スレッドがキャンセル状態となるまで待ち合わせを行ない、全スレッドがキャンセル状態になると各スレッドに対するキャンセル解除指示を許可する。
図7は、本実施例に係る命令実行回路201の構成例を示す図である。
図7に示す命令実行回路201は、スレッド毎の命令列の取り出し処理を制御する命令フェッチ制御回路701と、取り出した命令列を一時的に記憶する命令バッファ702と、命令列をデコードする命令デコーダ703と、分岐命令の分岐アドレスの計算等を行なう分岐命令制御回路704と、命令に応じた演算を行なう演算ユニット705と、命令列順に命令を完了させてプログラム資源の更新を指示する命令コミット制御回路706と、を備える。
命令フェッチ制御回路701は、キャッシュ回路707に対してスレッド毎に命令列の取り出しを指示し、取り出された命令列を命令バッファ702に格納する。また、リトライ制御回路303からリトライ指示を受け、かつ、実行状態制御回路302からのキャンセル解除指示によってキャンセル状態が解除されると、当該スレッドの命令列の取り出しをキャッシュ回路707に指示する。
命令デコーダ703は、命令バッファ702からスレッド毎に命令列取り出してデコードし、デコードの結果に応じて、分岐制御回路704、演算ユニット705、命令コミット制御回路706などに命令を発行する。また、リトライ制御回路303からリトライ指示を受け、かつ、実行状態制御回路302からのキャンセル解除指示によってキャンセル状態が解除されると、命令バッファ702から命令を取り出して1命令だけ再実行する。
分岐制御回路704は、複数スレッドの分岐命令の分岐アドレスの計算や分岐方向の確定などの分岐命令処理を行なった後、分岐命令処理の完了を命令コミット制御回路706に通知する。
演算ユニットは705、各スレッドの命令に応じた演算を行って、演算処理完了を命令コミット制御回路706に通知する。
命令コミット制御回路706は、分岐制御回路704や演算ユニット705などからの処理の完了通知を受け取り、その命令に必要な処理が全て完了すると、命令列順序にしたがって命令を完了させる。そして、リトライ制御回路303とスレッド待ち合わせ回路304に対して命令完了を通知する。また、必要に応じてプログラマブル資源の更新を指示するとともに、リトライ制御回路303に対して資源更新を通知する。
以上に説明した命令実行回路201内の各回路には、図示しないがハードウェアエラーを検出するエラー検出回路が備わっている。そして、命令実行中にハードウェアエラーを検出すると、エラー検出回路は、エラースレッドを管理する実行状態制御回路302とリトライ制御回路303にエラー通知を行なう。
また、命令フェッチ制御回路701、命令バッファ702、命令デコーダ703、分岐命令制御回路704、演算ユニット705、及び命令コミット制御回路706の各回路は、実行状態制御回路302からキャンセル指示を受けると、その実行状態制御回路302が管理するスレッドについての処理を停止して状態をクリアする(当該スレッドをキャンセルする)。
さらに、上述のようにリトライ制御回路303からリトライ指示を受け、かつ、実行状態制御回路302からキャンセル解除指示を受けると、命令実行回路201は、実行状態制御回路302及びリトライ制御回路303が管理するスレッドについてリトライ処理を行なう。なお、1命令だけを実行する処理については、一般に演算装置に備わる機能を使用すればよいので詳細な説明は省略する。
図8は、本発明に係る演算装置200の動作を説明するフローチャートである。
ステップS801において、命令実行回路201は、各スレッドについて命令実行中にハードウェアエラーを検出すると、エラースレッドを管理する実行状態制御回路302とリトライ制御回路303とにエラー通知を行なう。
ステップS802において、エラー通知を受けた実行状態制御回路302は、命令実行回路201に対して、自身が管理するスレッドについての命令実行のキャンセル指示を行なう。
ステップS803において、エラー通知を受けたリトライ制御回路303は、自身が管理するスレッドについてリトライ可能か否かを判断する。リトライが可能でないと判断した場合、リトライ制御回路303は、処理をステップS804に移行する。
ステップS804において、演算装置200は、エラートラップを設定し、実行中のソフトウェアによるエラー処理(例えば、割り込みハンドラ)等を実行する。
ステップS803において、リトライが可能と判断すると、リトライ制御回路303は、処理をステップS805に移行する。
ステップS805において、リトライ制御回路303は、RETRY_TGRに「1」をセットして、リトライを確定状態にセットする。
ステップS806において、スレッド待ち合わせ回路304は、全スレッドについて命令実行がキャンセルされたか否かを判断する。そして、まだキャンセルされていないスレッドが存在する場合、スレッド待ち合わせ回路304は、処理をステップS807に移行する。
ステップS807において、スレッド待ち合わせ回路304は、キャンセルされていない正常スレッドの命令実行が完了したか否かを判断する。命令実行が完了しない場合には、再帰的にステップS807の処理を実行する。
ステップS807において、キャンセルされていない正常スレッドから命令完了通知を受けると、スレッド待ち合わせ回路304は、処理をステップS808に移行する。
ステップS808において、スレッド待ち合わせ回路304は、実行状態制御回路302に対して、当該スレッドの命令実行のキャンセルを指示する。そして、処理をステップS806に移行する。
以上に説明したステップS806〜S808の処理によって、スレッド待ち合わせ回路304は、全スレッドがキャンセルされるまで待ち合わせを行なう。
ステップS806において、全スレッドについて命令実行がキャンセルされると、スレッド待ち合わせ回路304は、処理をステップS809に移行する。
ステップS809において、スレッド待ち合わせ回路304は、ステップS805の処理でRETRY_TGRに「1」が設定されたスレッドから1つを選択する。以下、選択されたスレッドを「選択スレッド」という。
ステップS810において、スレッド待ち合わせ回路304は、選択スレッドを管理する実行状態制御回路302に対して、キャンセル解除指示を行なう。
ステップS811において、命令実行回路201は、選択スレッドについてキャンセルが解除されると、選択スレッドについて1命令だけ再実行を行なう。そして、処理をステップS812に移行する。
ステップS812において、リトライ制御回路303は、再実行が完了したか否かを判断する。例えば、命令実行回路201から送られる選択スレッドについての命令完了通知を検出する。命令完了通知が検出されない場合、ステップS812の処理を再帰的に実行する。
ステップS812において、命令完了通知が検出されると、リトライ制御回路303は、再実行が完了したと判断し、処理をステップS813に移行する。
ステップS813において、リトライ制御回路303は、ステップS805でセットしたRETRY_TGRを「0」にリセットして、リトライの確定状態を解除する。
ステップS814において、スレッド待ち合わせ回路304は、ステップS805で命令リトライが確定状態となった全スレッドについて、ステップS809〜S813の再実行処理が完了したか否かを判断する。
再実行していないスレッドが存在する場合、スレッド待ち合わせ回路304は、処理をステップS815に移行し、実行状態制御回路302に対して選択スレッドの命令実行のキャンセルを指示する。そして、ステップS809〜S814の処理を行なう。
ステップS814において、ステップS805でリトライが確定した全スレッドについて、ステップS809〜S813の再実行処理が完了したと判断すると、スレッド待ち合わせ回路304は、処理をステップS816に移行する。
ステップS816において、スレッド待ち合わせ回路304は、全実行状態制御回路302に対して、スレッドのキャンセル解除を指示する。そして、処理をステップS817に移行する。
ステップS817において、命令実行回路201は、全スレッドに対して正常処理を開始する。
以上に説明したように、演算装置200は、命令実行回路201で命令実行中にハードウェアエラーが発生すると、全スレッドの実行をキャンセルする。そして、全スレッドがキャンセル状態となるまで待ち合わせを行なう。そして、全スレッドがキャンセル状態となると、エラースレッドに対して1命令だけ再実行を行なう。
演算装置200は、全スレッドをキャンセル状態にして1のエラースレッドについて再実行を行なうので、例えば、他配線からのノイズを原因とするハードウェアエラーを回避することができる。
また、演算装置200は、全スレッドについてキャンセル状態となるまで待ち合わせてから(リトライ可能なタイミングまで待ち合わせてから)、再実行を行なうので、確実にエラースレッドについての再実行を行なうことが可能となる。
その結果、高いリトライ成功率を実現することが可能となる。また、リトライ成功率が高くなるので、演算装置200の信頼性を向上させることが可能となる。
また、演算装置200は、リトライ処理中に動作する回路量が抑えられるので、複数スレッドの命令列を同時に処理するプロセッサであっても、単一スレッドの命令列を処理するプロセッサと同様にリトライを成功することが可能となる。

Claims (5)

  1. 複数のスレッドを実行し、該実行中に発生するハードウェアエラーを検出して通知する命令実行回路と、
    該命令実行回路から前記ハードウェアエラーが通知されると、前記命令実行回路に対して全てのスレッドについて実行のキャンセルを指示して該全てのスレッドがキャンセル状態となるまで待ち合わせを行ない、前記ハードウェアエラーが発生したエラースレッドについて1命令だけ再実行を指示する実行制御回路と、
    を備える演算装置。
  2. 前記実行制御回路は、前記スレッド毎に、
    前記命令実行回路に対して前記スレッドの実行のキャンセルを指示して前記スレッドの実行状態を制御する実行状態制御回路と、
    前記命令実行回路における前記エラースレッドの実行状態から前記1命令の再実行が可能なタイミングを検出し、前記命令実行回路に対して前記1命令の再実行を指示するリトライ制御回路と、
    を備える請求項1に記載の演算装置。
  3. 前記実行制御回路は、
    全てのスレッドがキャンセル状態となるまで前記スレッドの実行状態を監視し、全てのスレッドの実行状態がキャンセル状態となると、前記リトライ制御回路に対して前記命令実行回路に前記1命令を再実行させるように指示するスレッド待ち合わせ回路、
    を備える請求項に記載の演算装置。
  4. 前記実行制御回路は、前記スレッド毎に、
    前記命令実行回路に対して前記スレッドの実行のキャンセルを指示して前記スレッドの実行状態を制御する実行状態制御回路と、
    前記命令実行回路における前記エラースレッドの実行状態から前記1命令の再実行が可能なタイミングを検出し、前記命令実行回路に対して前記1命令の再実行を指示するリトライ制御回路と、
    を備え、さらに
    前記ハードウェアエラーが通知された第1の実行状態制御回路が前記命令実行回路に対して前記エラースレッドの実行のキャンセルを指示した旨の通知を受けると、該第1の実行状態制御回路以外の第2の実行状態制御回路に対して前記スレッドの実行のキャンセルを指示し、全てのスレッドがキャンセル状態となるまで前記スレッドの実行状態を監視し、全てのスレッドの実行状態がキャンセル状態となると、前記エラースレッドについて、前記リトライ制御回路に対して前記命令実行回路に前記1命令を再実行させるように指示するスレッド待ち合わせ回路、
    を備える請求項1に記載の演算装置。
  5. 複数のスレッドを実行し、該実行中に発生するハードウェアエラーを検出する命令実行処理と、
    該ハードウェアエラーを検出すると、前記命令実行処理を行なう命令実行回路に対して、全てのスレッドについて実行のキャンセルを指示し、該全てのスレッドがキャンセル状態となるまで待ち合わせを行なって、前記ハードウェアエラーが発生したエラースレッドについて1命令だけ再実行を指示するリトライ指示処理と、
    該リトライ指示に応じて前記ハードウェアエラーが発生したエラースレッドについて1命令だけ再実行するリトライ処理と、
    を演算装置に実行させる命令リトライ方法。
JP2009520144A 2007-06-20 2007-06-20 複数のスレッドを同時に処理する演算装置 Expired - Fee Related JP5099132B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/000661 WO2008155803A1 (ja) 2007-06-20 2007-06-20 複数のスレッドを同時に処理する演算装置

Publications (2)

Publication Number Publication Date
JPWO2008155803A1 JPWO2008155803A1 (ja) 2010-08-26
JP5099132B2 true JP5099132B2 (ja) 2012-12-12

Family

ID=40155968

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009520144A Expired - Fee Related JP5099132B2 (ja) 2007-06-20 2007-06-20 複数のスレッドを同時に処理する演算装置

Country Status (6)

Country Link
US (1) US8516303B2 (ja)
EP (1) EP2169553B1 (ja)
JP (1) JP5099132B2 (ja)
KR (1) KR101031558B1 (ja)
CN (1) CN101681285B (ja)
WO (1) WO2008155803A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2869202A1 (en) * 2013-11-04 2015-05-06 Universiteit Twente Functional unit for a processor
JP6781089B2 (ja) * 2017-03-28 2020-11-04 日立オートモティブシステムズ株式会社 電子制御装置、電子制御システム、電子制御装置の制御方法
US10922203B1 (en) * 2018-09-21 2021-02-16 Nvidia Corporation Fault injection architecture for resilient GPU computing
JP7124670B2 (ja) 2018-11-26 2022-08-24 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58154026A (ja) * 1982-03-08 1983-09-13 Hitachi Ltd 情報処理装置のエラ−処理方式
JPS634339A (ja) * 1986-06-25 1988-01-09 Hitachi Ltd タスク管理方式
JPH07141176A (ja) * 1993-11-19 1995-06-02 Fujitsu Ltd コマンドリトライ制御方式
US20010037445A1 (en) * 2000-04-19 2001-11-01 Mukherjee Shubhendu S. Cycle count replication in a simultaneous and redundantly threaded processor

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58154047A (ja) * 1982-03-08 1983-09-13 Hitachi Ltd 端末装置
US6385715B1 (en) * 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
US7822950B1 (en) * 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
US7219185B2 (en) * 2004-04-22 2007-05-15 International Business Machines Corporation Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
JP4486434B2 (ja) 2004-07-29 2010-06-23 富士通株式会社 命令リトライ検証機能付き情報処理装置および命令リトライ検証方法
US7467325B2 (en) * 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
US20060184771A1 (en) * 2005-02-11 2006-08-17 International Business Machines Mini-refresh processor recovery as bug workaround method using existing recovery hardware

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58154026A (ja) * 1982-03-08 1983-09-13 Hitachi Ltd 情報処理装置のエラ−処理方式
JPS634339A (ja) * 1986-06-25 1988-01-09 Hitachi Ltd タスク管理方式
JPH07141176A (ja) * 1993-11-19 1995-06-02 Fujitsu Ltd コマンドリトライ制御方式
US20010037445A1 (en) * 2000-04-19 2001-11-01 Mukherjee Shubhendu S. Cycle count replication in a simultaneous and redundantly threaded processor

Also Published As

Publication number Publication date
US20100088544A1 (en) 2010-04-08
EP2169553A1 (en) 2010-03-31
KR20100021455A (ko) 2010-02-24
JPWO2008155803A1 (ja) 2010-08-26
EP2169553B1 (en) 2012-05-16
WO2008155803A1 (ja) 2008-12-24
CN101681285A (zh) 2010-03-24
KR101031558B1 (ko) 2011-04-27
EP2169553A4 (en) 2011-05-04
US8516303B2 (en) 2013-08-20
CN101681285B (zh) 2012-07-25

Similar Documents

Publication Publication Date Title
US9075621B2 (en) Error recovery upon reaching oldest instruction marked with error or upon timed expiration by flushing instructions in pipeline pending queue and restarting execution
US9164854B2 (en) Thread sparing between cores in a multi-threaded processor
US20060184769A1 (en) Localized generation of global flush requests while guaranteeing forward progress of a processor
JP5099132B2 (ja) 複数のスレッドを同時に処理する演算装置
JP2012198803A (ja) 演算処理装置及び演算処理方法
US20080244244A1 (en) Parallel instruction processing and operand integrity verification
US20170344380A1 (en) Direct register restore mechanism for distributed history buffers
US11372712B2 (en) Processing device and method of controlling processing device
JP3800533B2 (ja) プログラムカウンタ制御方法及びプロセッサ
TWI818114B (zh) 用於異動式記憶體的設備與資料處理方法
US20200117461A1 (en) Arithmetic processing device and control method for arithmetic processing device
JP4486434B2 (ja) 命令リトライ検証機能付き情報処理装置および命令リトライ検証方法
EP2717156A1 (en) Speculative privilege elevation
JP3180803B2 (ja) スーパースカラプロセッサ
US9965283B2 (en) 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
US10996995B2 (en) Saving and restoring a transaction memory state
US20230122466A1 (en) Cache coherence validation using delayed fulfillment of l2 requests
US20150074376A1 (en) System and Method for an Asynchronous Processor with Assisted Token
CN118012509A (zh) 清空流水线的方法、处理器、芯片及电子设备
JPH0973391A (ja) マイクロプログラムのリトライ方法
KR20180057172A (ko) 듀얼 모듈러 리던던시 및 오류 예측을 이용한 고성능 컴퓨팅 장치 및 그 방법
JPH04326425A (ja) ループ処理制御方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120703

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120730

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

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

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

Free format text: PAYMENT UNTIL: 20151005

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees