JP7124670B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

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

Info

Publication number
JP7124670B2
JP7124670B2 JP2018220092A JP2018220092A JP7124670B2 JP 7124670 B2 JP7124670 B2 JP 7124670B2 JP 2018220092 A JP2018220092 A JP 2018220092A JP 2018220092 A JP2018220092 A JP 2018220092A JP 7124670 B2 JP7124670 B2 JP 7124670B2
Authority
JP
Japan
Prior art keywords
special processing
processing
instruction
circuit
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.)
Active
Application number
JP2018220092A
Other languages
English (en)
Other versions
JP2020086897A (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
Priority to JP2018220092A priority Critical patent/JP7124670B2/ja
Priority to US16/680,572 priority patent/US11372712B2/en
Publication of JP2020086897A publication Critical patent/JP2020086897A/ja
Application granted granted Critical
Publication of JP7124670B2 publication Critical patent/JP7124670B2/ja
Active 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

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

Description

本発明は、演算処理装置及び演算処理装置の制御方法に関する。
信頼性を重視するプロセッサ等の演算処理装置では、命令実行中に誤り(以下、「エラー」とも言う)が検出された場合、エラーが検出された時点で処理していた命令をハードウェアで再実行するリトライ処理が行われる(例えば、特許文献1参照)。
命令実行中に例えば以下のようなエラーが検出された場合、リトライ処理を行うことで、プログラムを異常終了させることなく、命令実行を継続することができる。
α線等によって、一時的にハードウェア内部の状態が変化することで発生するエラーがある。このようなエラーは、ハードウェア自体の壊れが原因ではない。このため、命令を再実行したときにこのようなエラーが再度発生する可能性が非常に低く、このようなエラーは、略確実にリトライ処理で回復することができる。
また、ハードウェア内部の近接配線からのノイズによって発生するエラーがある。例えば、演算処理装置内部の信号線がエレクトロマイグレーション等によって壊れかけている場合には、演算処理装置内部の信号線に近接する信号線の状態によってエラーが発生することがある。このようなエラーは、一命令のみを再実行することによって、再実行時に近接配線が変動する確率が大幅に減少するため、リトライ処理で回復できる可能性が高い。
しかし、従来のリトライ制御回路では、資源更新から命令完了までの間にエラー通知を受信した場合、リトライ処理は行わない構成になっている。これは、資源更新後に命令を再実行すると、同一の結果が得られる保証がないためである。
このようなリトライ処理が不可能な処理の一つに例外処理がある。例外処理の内容は命令セットアーキテクチャによって異なるが、一般的に複数の資源の更新が必要であり、且つ、例外発生頻度は比較的低いことから、資源更新は複数サイクルに分けて実行される。このため、例外処理を開始してから終了するまでの間、即ち、例外処理の途中にエラーが発生した場合、従来の演算処理装置では例外処理に応じたリトライ処理を行うことができない。同様に、例外復帰処理の途中にエラーが発生した場合、従来の演算処理装置では例外復帰処理に応じたリトライ処理を行うことができない。更に、スタックポインタの選択値の更新処理の途中にエラーが発生した場合にも、従来の演算処理装置ではスタックポインタの選択値の更新処理に応じたリトライ処理を行うことができない。
このように、例外処理、例外復帰処理、スタックポインタの選択値の更新処理等といった、特殊処理の途中にエラーが発生した場合、従来の演算処理装置では、特殊処理の種別に応じたリトライ処理を行うことができない。
国際公開第2008/155803号 特開昭57-164342号公報 特開平11-327940号公報
従来の演算処理装置では、特殊処理中にエラーが検出された場合に、特殊処理の種別に応じたリトライを行うことはできない。
そこで、1つの側面では、特殊処理中にエラーが検出された場合に、特殊処理の種別に応じたリトライを可能とする演算処理装置及び演算処理装置の制御方法を提供することを目的とする。
1つの案によれば、プログラマブル資源に含まれる複数の資源を更新する特殊処理を複数サイクルで実行する演算処理装置であって、特殊処理中であることを記録すると共に、命令実行中にエラーを検出するとエラー通知を行う命令実行回路と、特殊処理の開始時点で特殊処理種別を記録すると共に、前記特殊処理中に前記エラー通知を受信した場合、記録されている特殊処理種別から当該特殊処理を再実行することが可能であるか否かを判断し、可能であると判断した場合には当該特殊処理を最初から再実行する特殊処理再実行を指示するリトライ制御回路と、を備え、前記命令実行回路は、前記リトライ制御回路からの前記特殊処理再実行の指示に基づき、前記特殊処理を再実行するリトライ処理を行う演算処理装置が提供される。
一態様によれば、特殊処理中にエラーが検出された場合に、特殊処理の種別に応じたリトライ処理を可能とすることができる。
一実施例における演算処理装置の構成の一例を示すブロック図である。 一実施例におけるマルチコア構成の演算処理システムの一例を示すブロック図である。 一実施例におけるCPUコアの一例を示すブロック図である。 特殊処理制御部の一例を示すブロック図である。 リトライ制御回路の一例を示す図である。 一実施例におけるリトライ処理の一例を説明するフローチャートである。 例外処理の動作の一例を説明する図である。 例外復帰処理の動作の一例を説明する図である。 spsel更新処理の動作の一例を説明する図である。
開示の演算処理装置及び演算処理装置の制御方法では、複数の資源を更新する特殊処理を複数サイクルで実行する。命令実行回路は、特殊処理中であることを記録し、命令実行中にエラーを検出するとエラー通知を行う。リトライ制御回路は、特殊処理の開始時点で特殊処理種別を記録し、特殊処理中にエラー通知を受信した場合、記録されている特殊処理種別から特殊処理を再実行することが可能であるか否かを判断する。リトライ制御回路は、特殊処理を再実行することが可能であると判断した場合には、特殊処理を最初から再実行する特殊処理再実行を指示する。命令実行回路は、リトライ制御回路からの特殊処理再実行の指示に基づき、特殊処理を再実行するリトライ処理を行う。
以下に、開示の演算処理装置及び演算処理装置の制御方法の各実施例を図面と共に説明する。
演算処理装置において、例外処理等の特殊処理の内容は、命令セットアーキテクチャに応じて異なるが、一般的には一命令で複数の資源の更新が必要である。一方、例えば例外処理の発生頻度は比較的低いので、資源更新は複数サイクルに分けて実行する。
例えば、ARMホールディングス(ARM Holdings plc)社製のARMv8-Aアーキテクチャを用いる場合の例外処理では、EL1より上位の例外レベルではspselレジスタにアクセスし、スタックポインタのフラグの値をセットして使用スタックの切り替えを行う。スタックポインタのフラグは、演算処理装置の実行状態を表すフラグの集まりである、プロセス状態(Process State)レジスタ(以下、「PSTATEレジスタ」)に格納される。スタックポインタの選択値の更新処理は、spsel更新処理等を含む。
例外処理を開始して資源更新から命令完了までの間にエラーが検出された場合に、資源更新後に命令を再実行すると、同一の結果が得られる保証がないため、従来は例外処理のリトライを行わない構成になっている。
図1は、一実施例における演算処理装置の構成の一例を示すブロック図である。図1に示す演算処理装置1は、例外処理、例外復帰処理、スタックポインタの選択値の更新処理等の特殊処理を、複数サイクルで実行する。以下に説明するように、演算処理装置1は、特殊処理中にエラーを検出した場合、特殊処理種別から特殊処理を再実行することが可能であるか否かを判断し、可能であると判断した場合には、特殊処理を最初から再実行するリトライ処理を行う。
図1に示す演算処理装置1は、命令実行回路11と、リトライ制御回路12と、実行状態制御回路13と、プログラマブル資源14とを備える。
命令実行回路11は、命令フェッチ、命令デコード、演算実行、命令完了、プログラマブル資源14の資源更新等をイン・オーダ(In-Order)で指示する回路を有する。また、命令実行回路11は、上記の特殊処理を実行する回路、命令実行中のエラーを検出する回路等を有する。命令実行回路11が有するこれらの回路には、周知の回路を用いることができる。
リトライ制御回路12は、リトライ処理が可能なタイミングであるか否かを判断する回路、リトライ処理を行うことが確定したことを示すフラグを格納する回路、命令実行回路11に対して一命令再実行を指示する回路等を有する。リトライ制御回路12が有するこれらの回路には、周知の回路を用いることができる。
実行状態制御回路13は、命令実行回路11からエラー通知を受信すると、命令実行回路11に対して命令実行キャンセルを指示する回路等を有する。実行状態制御回路13が有するこれらの回路には、周知の回路を用いることができる。
命令実行回路11は、エラーを検出すると、リトライ制御回路12及び実行状態制御回路13にエラー通知を行う。命令実行中のエラーを検出する回路は、命令実行回路11内の各部に必要に応じて設けられている。実行状態制御回路13は、エラーデータを使って資源更新が行われることを避けるため、エラー通知を受信すると直ちに命令実行キャンセル状態に遷移し、命令実行回路11に命令実行キャンセルを指示する。一方、リトライ制御回路12は、リトライ処理が可能なタイミングでエラー通知を受信すると、リトライ処理を行うことが確定したことを示すフラグをセットし、命令実行回路11に一命令実行を指示する。
命令実行回路11は、実行状態制御回路13から命令実行キャンセルを指示されると、プログラマブル資源14の資源更新を中止し、命令実行回路11内の処理を全てクリアする。命令実行回路11は、実行状態制御回路13からの命令実行キャンセルの指示が解除されると、リトライ制御回路12からの一命令実行の指示に従い、一命令だけを実行する。命令実行回路11は、一命令の実行が完了すると、命令完了をリトライ制御回路12に通知する。リトライ制御回路12は、命令実行回路11から命令完了通知を受信すると、リトライ処理を行うことが確定したことを示すフラグをリセットし、命令実行回路11への一命令実行の指示を解除する。命令実行回路11は、一命令実行の指示が解除されると、特殊処理以外の命令の処理に戻る。
命令実行回路11は、命令完了及び資源更新をリトライ制御回路12に通知する。プログラマブル資源14のうちの一つの資源しか更新しないような命令の場合、資源更新と命令完了を同一タイミングで通知する。リトライ制御回路12は、このような一つの資源しか更新しないような命令を実行しているタイミングは、リトライ処理が可能なタイミングであると判断する。一方、複数サイクルに分けてプログラマブル資源14の複数の資源を更新する命令の場合、資源更新と命令完了を異なるタイミングで通知する。従来、このような複数の資源を更新する命令の場合、資源更新後から命令完了直前までのタイミングは、リトライ処理が不可能なタイミングであると判断していた。しかし、本実施例では、リトライ制御回路12は、このような複数の資源を更新する命令の場合、資源更新後から命令完了直前までのタイミングであっても、後述する一定の条件下ではリトライ処理が可能なタイミングであると判断する。
本実施例では、命令実行回路11は更に、特殊処理中であることを記録する回路を有する。命令実行回路11は、例外処理等の特殊処理の開始時点(以下、「特殊処理開始時点」とも言う)で特殊処理開始と特殊処理種別をリトライ制御回路12に通知する。特殊処理種別とは、例外処理、例外復帰処理、spsel更新処理等の、特殊処理の種別である。また、命令実行回路11は、特殊処理完了を特殊処理以外の処理の命令と同じ命令完了でリトライ制御回路12に通知する。命令実行回路11は、特殊処理を実行中にエラーを検出すると、リトライ制御回路12及び実行状態制御回路13にエラー通知を行う。更に、命令実行回路11は、特殊処理の実行中のエラーの検出に伴う特殊処理再実行に応じて、プログラマブル資源14の資源更新を行う。
本実施例では、リトライ制御回路12は更に、特殊処理開始時点で通知された特殊処理種別を記録する回路等を有する。また、リトライ制御回路12は、特殊処理開始から完了までの特殊処理中に命令実行回路11からエラー通知を受信した場合、記録している特殊処理種別と特殊処理再実行を指示する回路を有する。具体的には、リトライ制御回路12は、記録している特殊処理種別から当該特殊処理を再実行することが可能であるか否かを判断し、可能であると判断した場合には記録している特殊処理種別の特殊処理を最初から再実行するよう命令実行回路11に指示する。命令実行回路11は、リトライ制御回路12からの特殊処理再実行の指示に基づき、例外処理、例外復帰処理、spsel更新処理等の特殊処理を、再実行可能な順番で実行する。
図5と共に後述するように、リトライ制御回路12は、特殊処理を再実行可能なタイミングであるか否かの判断に用いるフラグを格納し、特殊処理開始のタイミングでセットされ、特殊処理完了のタイミングでリセットされるHARDOP_RETRY_POINTレジスタを有する。リトライ制御回路12は更に、特殊処理のリトライ処理を行うことが確定し、且つ、特殊処理のリトライ処理が完了していないことを示すフラグを格納するHARDOP_RETRY_TGRレジスタを有する。HARDOP_RETRY_TGRレジスタは、エラー検出タイミングでHARDOP_RETRY_POINTレジスタがセットされており、且つ、HARDOP_RETRY_POINTレジスタをリセットする条件が成立していない場合にセットされ、前記特殊処理完了のタイミングでリセットされる。HARDOP_RETRY_TGRレジスタは、特殊処理再実行を命令実行回路11に指示する。また、リトライ制御回路12は、特殊処理開始時点で通知される特殊処理種別を記録する第1の記録回路を有する。この第1の記録回路は、エラー検出タイミングで記録された特殊処理が再実行可能な処理である場合にのみ、HARDOP_RETRY_TGRレジスタをセットし、特殊処理を再実行するときに当該特殊処理の処理種別である再実行特殊処理種別を命令実行回路11に通知する。
これにより、例外処理、例外復帰処理、spsel更新処理等の特殊処理中にエラーを検出した場合に、特殊処理の種別に応じたリトライ処理を行うことが可能となる。また、特殊処理中にエラーを検出した場合に、再実行することが可能な特殊処理の種別であれば、プログラムを異常終了させることなく命令実行を継続することができるので、演算処理装置1の信頼性を向上することが可能となる。
図2は、一実施例におけるマルチコア構成の演算処理システムの一例を示すブロック図である。図2に示す演算処理システム50は、複数のノード51-1~51-Nを有する。ここで、Nは2以上の自然数である。ノード51-2~51-Nは、ノード51-1と同じ構成を有しても良い。このため、図2に示す例では、ノード51-2~51-Nの構成の図示は省略する。
この例では、ノード51-1は、CPU(Central Processing Unit)52、メモリの一例を形成するDIMM(Dual Inline Memory Module)53、及び入出力(I/O:Input/Output)部54を有する。CPU52は、同じ構成を有する複数のCPUコア521-1~521-M、共用の2次キャッシュメモリであるLL(Last Level)キャッシュメモリ522、MAC(Memory Access Controller)523、及びインターコネクト部524を有する。ここで、Mは2以上の自然数である。この例では、ノード51-1は、インターコネクト部524を介して各ノード51-2~51-Nと接続されている。具体的には、ノード51-1のインターコネクト部524と、各ノード51-2~51-Nのインターコネクト部とが接続されている。
CPU52とDIMM53との間のデータのやり取りを制御するMAC523を設けることで、CPU52とDIMM53とが直接、データのやり取りを行うことができる。CPU52と他のノード51-2~51-Nとのデータのやり取りに関しては、インターコネクト部524によって他のノード51-2~51-Nとのデータのやり取りを制御する。この例では、演算処理システム50の各ノード51-1~51-Nを形成するCPU/メモリボードに、1個のCPU52のみが搭載される。
図3は、一実施例におけるCPUコアの一例を示すブロック図である。図3に示すCPUコア521は、演算処理装置1の一例であり、図2に示す各CPUコア521-1~521-Mとして使用可能である。
命令実行回路11は、命令フェッチアドレス生成器31、1次命令キャッシュメモリ32、命令バッファ33、命令デコーダ34、オペランドアドレス生成器36、1次データキャッシュメモリ37、及び固定小数点演算器39、及び浮動小数点演算器40を有する。命令実行回路11は、主記憶オペランドアドレス生成用リザベーションステーション(RSA:Reservation Station for Address generate)35を有する。また、命令実行回路11は、固定小数点演算と浮動小数点演算用リザベーションステーション(RSE:Reservation Station for Execute)38を有する。更に、命令実行回路11は、分岐命令用リザベーションステーション(RSBR:Reservation Station for BRanch)41を有する。命令実行回路11は、コミットスタックエントリ(CSE:Commit Stack Entry)42、及び特殊処理制御部43等を更に有する。
プログラマブル資源14は、固定小数点物理レジスタ141、浮動小数点物理レジスタ142、システムレジスタ143、及びプログラムカウンタ(PC:Program Counter)144等を含む。この例では、固定小数点物理レジスタ141は、後述するスタックポインタ(SP:Stack Pointer)を含む。
システムレジスタ143は、実行状態を表すフラグの集まりであるPSTATEレジスタを含む。後述するspselレジスタは、実行状態を表すフラグの一部に相当し、PSTATEレジスタに含まれる。また、システムレジスタ143は、第1の特定記憶域の一例である保存プロセス状態レジスタ(Saved Process State Register、以下「SPSRレジスタ」)と第2の特定記憶域の一例である例外リンクレジスタ(Exception Link Register、以下「ELRレジスタ」)を含む。更に、システムレジスタ143は、ベクターベースレジスタ(Vector Base Address Register、以下「VBARレジスタ」)、例外レベルEL0に対応させたSP用のSP_EL0レジスタ、例外レベルEL1に対応させたSP用のSP_EL1レジスタ等を含む。SPSRレジスタは、例外レベルEL1に対応させたSPSR_EL1レジスタ等を含む。SPSRレジスタは、例外発生時のPSTATEレジスタ中の実行状態を保持する。SPSR_EL1レジスタは、例外発生時のspselレジスタの値を保存するための領域を含む。ELRレジスタは、例外レベルEL1に対応させたELR_EL1レジスタ等を含む。なお、システムレジスタ143の構成は、例えばARMv8-Aアーキテクチャを用いる場合の上記の構成に限定されるものではない。
CPUコア521のリトライ制御回路12及び実行状態制御回路13と、命令実行回路11との接続は、図1等から明らかである。このため、図3では便宜上、リトライ制御回路12及び実行状態制御回路13と、命令実行回路11との接続の図示は省略する。
命令フェッチアドレス生成器31は、命令をフェッチするアドレスを生成するために、PC144又は分岐予測機構44から入力した命令アドレスを選択する。命令フェッチアドレス生成器31は、選択した命令アドレスの命令フェッチリクエストを1次命令キャッシュメモリ32に出力する。1次キャッシュメモリ32は、命令アドレスの命令フェッチリクエストに応じた命令を命令バッファ33に出力する。なお、1次キャッシュメモリ32に命令が格納されていない場合は、図示を省略する2次キャッシュメモリ又は主記憶装置に格納されている命令を命令バッファ33に出力する。命令バッファ33は、バッファリングした命令をプログラムの順番通りに、例えば一定数ずつ命令デコーダ34に供給する。
命令デコーダ34は、プログラムの順番通りに一定数の命令を同時にデコードする。命令デコーダ34は、デコードした命令の種別に従って、デコードの結果を命令の実行を制御するRSA35、RSE38、及びRSBR41に出力して必要なエントリを作成する。RSA35、RSE38、及びRSBR41で実行に必要なソースオペランドが揃った命令から実行することで、アウト・オブ・オーダ(Out-of-Order)実行が可能となる。デコードした命令がRSA35、RSE38、及びRSBR41にエントリを作成した場合、固定小数点物理レジスタ141及び浮動小数点物理レジスタ142に対応するリネーミングを行うことで、アウト・オブ・オーダで命令を実行することが可能となる。RSA35、RSE38、及びRSBR41の各々でアウト・オブ・オーダで実行された命令の完了報告は、CSE42に出力される。
また、命令デコーダ34は、デコードした全ての命令に対して、命令の完了処理を制御する命令完了制御部を含むCSE42にエントリを作成する。具体的には、CSE42は、デコードした命令を命令の実行順番通りに格納するキューと、キューの情報と命令の完了報告に基づいて命令の完了処理を行う回路を有する。従って、デコードされた命令は、CSE42のキューに格納され、命令の完了報告を待つ。つまり、CSE42において、命令の完了処理を行う回路は、プログラムの順番通りに、キューに格納された完了報告待ちの命令の中から完了報告に対応する命令の実行を完了し、プログラマブル資源14の更新を行う。CSE42は、命令の完了処理で命令の実行を完了すると、手順完了を特殊処理制御部43に出力する。
オペランドアドレス生成器36は、RSA35のエントリに応じて、オペランドアドレスを生成し、1次データキャッシュメモリ37に出力する。1次データキャッシュメモリ37は、生成されたオペランドアドレスのデータを固定小数点物理レジスタ141及び浮動小数点物理レジスタ142に出力する。固定小数点演算器39は、RSE38のエントリに応じて固定小数点演算を行い、演算の実行結果を固定小数点物理レジスタ141に格納する。浮動小数点演算器40は、RSE38のエントリに応じて浮動小数点演算を行い、演算の実行結果を浮動小数点物理レジスタ142に格納する。
RSA35、RSE38、及びRSBR41でアウト・オブ・オーダで実行された命令は、CSE42の制御により、プログラムの順番通りに命令の完了処理を行う。CSE42は、実行が完了した命令に対してのみ、固定小数点物理レジスタ141、浮動小数点物理レジスタ142、システムレジスタ143、PC144等のプログラマブル資源14の更新を行う。PC144は、現在実行する命令のアドレスを出力する。分岐予測機構44は、RSBR41の分岐命令の完了報告に応じて、分岐命令が分岐するか否かを予測する。分岐予測機構44は、分岐命令が分岐すると予測した場合、次に実行する分岐先アドレスを命令フェッチアドレス生成器31に出力する。
演算の実行結果を格納する固定小数点物理レジスタ141と浮動小数点物理レジスタ142は、例えばアーキテクチャレジスタとリネーミングレジスタを形成できる。命令デコーダ34からの命令がRSA35又はRSE38にエントリを作成する場合には、固定小数点リネーミングレジスタと浮動小数点リネーミングレジスタにリネーミングレジスタを割り当てるレジスタリネーミング処理を行う。
演算の実行結果を命令デコード時に割り当てられた固定小数点リネーミングレジスタと浮動小数点リネーミングレジスタに格納する。また、リネーミングレジスタとアーキテクチャレジスタが混在した物理レジスタ方式を用いる場合には、演算の実行結果を格納したリネーミングレジスタとして扱っている物理レジスタのアドレスをアーキテクチャレジスタに変更すれば良い。
CSE42内の命令完了制御部は、CSE42のエントリの最も古い順から命令の完了処理を行うことで、プログラムの順番通りに命令の実行を完了することが可能となる。CSE42内の命令完了制御部は、1サイクルで同時に実行を完了することが可能な最大数の命令をCSE42から選択する。選択したエントリを命令の実行を完了する対象のエントリとして、命令の実行の完了を制御する。命令デコーダ34は、命令デコード時に、CSE42に登録するエントリ番号(IID:Instruction ID)を出力する。命令の実行が完了したときに、IIDが示すCSE42のエントリ番号に実行の完了報告を格納することで、実行が完了した命令を特定することが可能となる。また、固定小数点演算器39又は浮動小数点演算器40から周知の方法で図3中破線で示すように例外検出が通知された場合には、CSE42に例外検出を記録し、命令完了時に特殊処理制御部43に例外処理開始を通知する。
特殊処理制御部43は、CSE42から例外検出が通知された場合や、命令デコーダ34でプログラマブル資源14の複数のレジスタを更新するような特殊処理を伴う命令(eret命令, spsel更新命令等)がデコードされたときに使用される。
図4は、特殊処理制御部の一例を示すブロック図である。図4に示す特殊処理制御部43は、判断回路431、状態制御回路432、第2の記録回路の一例である記録回路433、手順制御回路434、及び指示回路435を有する。
判断回路431は、命令デコーダ34から、デコードした命令がどのような種別の命令であるかを示す命令情報を受信する。判断回路431は、受信した命令情報が示す命令の種別に基づき、特殊処理が必要な命令であるか否かを判断する。判断回路431は、特殊処理が必要な種別の命令(例外復帰命令、spsel更新命令等)であると判断した場合、状態制御回路432に特殊処理が必要であることを通知し、記録回路433に特殊処理種別を通知する。
状態制御回路432は、特殊処理開始から特殊処理完了までの各種処理を行うための状態を制御する。状態制御回路432は、CSE42から例外検出が通知された場合、判断回路431が特殊処理が必要な種別の命令であると判断した場合、及びリトライ制御回路12から特殊処理再実行の指示がある場合に、特殊処理状態に遷移する。状態制御回路432は、特殊処理状態に遷移すると、特殊処理開始を手順制御回路434、指示回路435、及びリトライ制御回路12に通知する。状態制御回路432は、指示回路435から特殊処理完了の通知があると、特殊処理状態から遷移して、特殊処理以外の命令の処理状態に戻る。
記録回路433は、CSE42から例外検出の通知、判断回路431から特殊処理が必要な命令の種別、及びリトライ制御回路12から再実行特殊処理種別を夫々受信し、特殊処理種別を特殊処理開始から特殊処理完了までの間記録する。また、記録回路433は、記録されている特殊処理種別を指示回路435とリトライ制御回路12に通知する。
手順制御回路434は、状態制御回路432から特殊処理開始を通知されると、特殊処理手順番号spnに初期値を設定し、CSE42内の命令完了制御部から手順完了を通知されると特殊処理手順番号spnに1を加算(即ち、spn=spn+1にインクリメント)する。手順制御回路434は、1を加算(即ち、インクリメント)後の特殊処理手順番号spnを指示回路435に通知する。
指示回路435は、状態制御回路432から特殊処理開始を通知されると、特殊処理を実行するのに用いる回路に特殊処理指示を通知する。特殊処理を実行するのに用いる回路は、図3に示す例では、例えば命令デコーダ34より後段に設けられた回路を含む。特殊処理指示は、記録回路433から通知される特殊処理種別と、手順制御回路434から通知される特殊処理手順番号spnに基づいて通知する。指示回路435は、特殊処理種別毎に予め決められている最後の特殊処理手順番号spnまで特殊処理指示を出力し終わると、特殊処理完了を状態制御回路432とリトライ制御回路12に通知する。
図5は、リトライ制御回路の一例を示す図である。図5に示すリトライ制御回路12は、RETRY_POINTレジスタ122、RETRY_TGRレジスタ123、HARDOP_RETRY_POINTレジスタ127、HARDOP_RETRY_TGRレジスタ128、第1の記録回路の一例である記録回路129、及びゲート回路を有する。レジスタ122,123,127,128は、第1、第2、第3、及び第4のレジスタの一例であり、例えばRSフリップフロップ回路で形成可能である。ゲート回路は、オア(OR)回路121A,121B,121C、インバータ(Inverter)回路124A,124B、ナンド(NAND)回路125A,125B、アンド(AND)回路126A,126Bを含み、論理演算を行う。
命令実行回路11からの命令完了は、オア回路121Aの一方の入力端子に入力される。命令実行回路11からの資源更新は、オア回路121Bの一方の入力端子に入力される。命令実行回路11からの特殊処理開始は、オア回路121Bの他方の入力端子、ナンド回路125Bの一方の入力端子、HARDOP_RETRY_POINTレジスタ127のセット(set)端子、及び記録回路129に入力される。命令実行回路11からの特殊処理完了は、オア回路121Aの他方の入力端子、インバータ回路124B、及びHARDOP_RETRY_POINTレジスタ127とHARDOP_RETRY_TGRレジスタ128のリセット(reset)端子に入力される。命令実行回路11からのエラー通知は、アンド回路126A,126Bに入力される。命令実行回路11からの特殊処理種別は、記録回路129に入力される。
なお、オア回路121Aの出力は、インバータ回路124A、RETRY_POINTレジスタ122のset端子、及びRETRY_TGRレジスタ123のreset端子に入力される。オア回路121Bの出力は、RETRY_POINTレジスタ122のreset端子、及びナンド回路125Aに入力される。ナンド回路125Aには、インバータ回路124Aの出力が入力される。アンド回路126Aには、ナンド回路125AとRETRY_POINTレジスタ122の出力も入力される。アンド回路126Aの出力は、RETRY_TGRレジスタ123のset端子に入力される。ナンド回路125Bには、インバータ回路124Bの出力も入力される。アンド回路126Bには、HARDOP_RETRY_POINTレジスタ127及びナンド回路125Bにも入力される。更に、アンド回路126Bには、記録回路129の出力も、オア回路121Cを介して入力される。アンド回路126Bの出力は、HARDOP_RETRY_TGRレジスタ128のset端子に入力される。
RETRY_POINTレジスタ122は、リトライ処理が可能なタイミングであるか否かを判断するのに用いるフラグを格納する。RETRY_POINTレジスタ122は、命令完了以外のタイミングで資源更新が行われたときにリセットされ、命令完了のタイミングでセットされる。RETRY_TGRレジスタ123は、リトライ処理を行うことが確定し、且つ、リトライ処理が完了していないことを示すフラグを格納する。RETRY_TGRレジスタ123は、エラー検出タイミングでRETRY_POINTレジスタ122がセットされており、且つ、RETRY_POINTレジスタ122をリセットする条件が成立していない場合にセットされる。また、RETRY_TGRレジスタ123は、命令完了時にリセットされるが、特殊処理中のエラーで直ちにリトライ処理が開始されないように、特殊処理開始のタイミングでリセットされる。これにより、RETRY_TGRレジスタ123は、一命令再実行を命令実行回路11に指示する。
HARDOP_RETRY_POINTレジスタ127は、特殊処理を再実行可能なタイミングであるか否かの判断に用いるフラグを格納する。HARDOP_RETRY_POINTレジスタ127は、特殊処理開始のタイミングでセットされ、特殊処理完了のタイミングでリセットされる。HARDOP_RETRY_TGRレジスタ128は、特殊処理のリトライ処理を行うことが確定し、且つ、特殊処理のリトライ処理が完了していないことを示すフラグを格納する。HARDOP_RETRY_TGRレジスタ128は、エラー検出タイミングでHARDOP_RETRY_POINTレジスタ127がセットされており、且つ、HARDOP_RETRY_POINTレジスタ127をリセットする条件が成立していない場合にセットされる。また、HARDOP_RETRY_TGRレジスタ128は、特殊処理完了のタイミングでリセットされる。これにより、HARDOP_RETRY_TGRレジスタ128は、特殊処理再実行を命令実行回路11に指示する。
記録回路129は、特殊処理開始時点で通知される特殊処理種別を記録する。記録回路129は、エラー検出タイミングで記録された特殊処理が再実行可能な処理である場合にのみ、オア回路121C及びアンド回路126Bを介してHARDOP_RETRY_TGRレジスタ128をセットする。また、記録回路129は、特殊処理を再実行するときに当該特殊処理の処理種別である再実行特殊処理種別を命令実行回路11に通知する。
従って、特殊処理中にエラーを検出した場合に、特殊処理種別から特殊処理を再実行することが可能であるか否かを判断し、可能であると判断した場合には特殊処理を最初から再実行するリトライ処理を指示する。
図3に示す命令実行回路11の特殊処理制御部43内の記録回路433は、特殊処理中であることを記録する第2の記録回路の一例を形成する。また、図5に示すリトライ制御回路12の記録回路129は、特殊処理開始時点で特殊処理種別を記録する第1の記録回路の一例を形成する。リトライ制御回路12のレジスタ127,128等は、特殊処理中にエラーを検出した命令実行回路11からエラー通知を受信した場合、記録されている特殊処理種別から当該特殊処理を再実行することが可能であるか否かを判断する回路の一例を形成する。リトライ制御回路12のこの判断する回路は、特殊処理を再実行することが可能であると判断した場合、特殊処理を最初から再実行するリトライ処理、即ち、特殊処理再実行を命令実行回路11に指示する。命令実行回路11の特殊処理制御部43は、リトライ制御回路12からの特殊処理を最初から再実行するリトライ処理、即ち、特殊処理再実行の指示に基づき、特殊処理を再実行するリトライ処理を行う回路の一例を形成する。
図6は、一実施例におけるリトライ処理の一例を説明するフローチャートである。図6に示すリトライ処理は、命令実行回路11が特殊処理中にエラーを検出し、リトライ制御回路12のアンド回路126A,126Bがエラー通知を受信すると開始する。
ステップS1では、リトライ制御回路12が、RETRY_POINTレジスタ122が格納するフラグの値が1(RETRY_POINT==1)であるか否かを判定し、判定結果がYESであると処理はステップS2へ進む。ステップS2では、リトライ制御回路12が、アンド回路126Aの出力でRETRY_TGRレジスタ123をセットし、ステップS3では、リトライ制御回路12が、RETRY_TGRレジスタ123から一命令再実行を命令実行回路11に指示する。ステップS4では、リトライ制御回路12が、命令実行回路11からオア回路121Aを介して命令完了を受信したか否かを判定する。ステップS4の判定結果がYESになると、処理はステップS5へ進む。ステップS5では、リトライ制御回路12が、オア回路121Aの出力でRETRY_TGRレジスタ123をリセットし、処理は終了する。
一方、ステップS1の判定結果がNOであると、処理はステップS6へ進む。ステップS6では、リトライ制御回路12が、HARDOP_RETRY_POINTレジスタ127が格納するフラグの値が1であるか否かを判定し、判定結果がYESであると、処理はステップS7へ進む。ステップS7では、リトライ制御回路12が、記録回路129に記録されている特殊処理種別が例外処理(EXCEPTION_ENTER)であるか否かを判定し、判定結果がYESであると、処理はステップS8へ進む。ステップS8では、リトライ制御回路12が、アンド回路126Bの出力でHARDOP_RETRY_TGRレジスタ128をセットする。ステップS9では、リトライ制御回路12が、HARDOP_RETRY_TGRレジスタ128から例外処理を示す特殊処理再実行を命令実行回路11に指示する。ステップS9の後、処理は後述するステップS16へ進む。
一方、ステップS7の判定結果がNOであると、処理はステップS10へ進む。ステップS10では、リトライ制御回路12が、記録回路129に記録されている特殊処理種別が例外復帰処理であるか否かを判定し、判定結果がYESであると、処理はステップS11へ進む。ステップS11では、リトライ制御回路12が、アンド回路126Bの出力でHARDOP_RETRY_TGRレジスタ128をセットする。ステップS12では、リトライ制御回路12が、HARDOP_RETRY_TGRレジスタ128から例外復帰処理(EXCEPTION_RETURN)を示す特殊処理再実行を命令実行回路11に指示する。ステップS12の後、処理は後述するステップS16へ進む。
ステップS10の判定結果がNOであると、処理はステップS13へ進む。ステップS13では、リトライ制御回路12が、記録回路129に記録されている特殊処理種別がspsel更新処理であるか否かを判定し、判定結果がYESであると、処理はステップS14へ進む。ステップS14では、リトライ制御回路12が、アンド回路126Bの出力でHARDOP_RETRY_TGRレジスタ128をセットする。ステップS15では、リトライ制御回路12が、HARDOP_RETRY_TGRレジスタ128からspsel更新処理(SPSEL)を示す特殊処理再実行を命令実行回路11に指示する。ステップS15の後、処理は後述するステップS16へ進む。
ステップS16では、リトライ制御回路12が、ステップS9,S12,S14のいずれかで出力した特殊処理再実行に対し、命令実行回路11から特殊処理完了を受信したか否かを判定する。ステップS16の判定結果がYESであると、処理はステップS17へ進む。ステップS17では、リトライ制御回路12が、特殊処理完了でHARDOP_RETRY_TGRレジスタ128をリセットし、処理は終了する。
ステップS6の判定結果がNO、或いは、ステップS13の判定結果がNOであると、処理はステップS18へ進む。ステップS18では、リトライ制御回路12が、ソフトウェアにエラー検出を通知し、処理は終了する。
このように、特殊処理中にエラーが検出されると、先ずRETRY_POINTレジスタ122のフラグの値を調べる。RETRY_POINTレジスタ122のフラグが1の場合は、RETRY_TGRレジスタ123のフラグの値を1をセットしてから一命令を再実行し、命令完了を待つ。命令完了後に、RETRY_TGRレジスタ123のフラグの値を0にリセットし、リトライ処理は終了する。
RETRY_POINTレジスタ122のフラグの値が0の場合は、HARDOP_RETRY_POINTレジスタ127のフラグの値を調べる。HARDOP_RETRY_POINTレジスタ127のフラグの値が1であれば、更に記録回路129に記録されている特殊処理種別を調べる。特殊処理種別が再実行可能なEXCEPTION_ENTER, EXCEPTION_RETURN, SPSELのいずれかであれば、HARDOP_RETRY_TGRレジスタ128のフラグに1をセットし、記録されていた特殊処理を再実行する。特殊処理完了後に、HARDOP_RETRY_TGRレジスタ128のフラグを0にリセットし、リトライ処理は終了する。
RETRY_POINTレジスタ122とHARDOP_RETRY_POINTレジスタ127のフラグの値が共に0である場合、リトライ処理が不可能であると判断してソフトウェアにエラー検出を通知し、処理は終了する。また、HARDOP_RETRY_POINTレジスタ127のフラグの値が1で記録回路129に記録されている特殊処理種別がEXCEPTION_ENTER, EXCEPTION_RETURN, SPSELいずれでもない場合、リトライ処理は不可能であると判断してソフトウェアにエラー検出を通知し、処理は終了する。
次に、特殊処理の手順を、特殊処理が例外処理の場合、例外復帰処理の場合、及びスタックポインタの選択値の更新処理の場合を例に説明する。
本実施例において、例えばARMv8-Aアーキテクチャを用いる場合に例外検出に伴う例外処理は、以下の手順ST1~ST3で行われる。
手順ST1では、PSTATEレジスタ中の例外発生時の実行状態を、SPSRレジスタに保存する。手順ST1では、同時に、PC144が示す例外の戻り先をELRレジスタに保存する。なお、本実施例において、特殊処理が例外処理の場合の特殊処理開始時点とは、この手順ST1が完了した時点である。
手順ST2では、SPの値を変更前実行状態(SPSRレジスタ中のELとspsel)に対応するSP_ELxレジスタに書き込む。
手順ST3では、変更後実行状態(PSTATEレジスタ中の現EL(currentEL)とspsel)に対応するSP_ELxレジスタの値をSPに書き込み、同時にPSTATEレジスタ中の実行状態を例外処理用の値に変更する。手順ST3では、更に同時にPC144を例外処理用の値に変更する。例外処理用の値は、例えばVBARレジスタの値に例外種別に応じたオフセット(Offset)を加算した値である。
例外処理では、手順ST1の処理の完了を特殊処理開始、手順ST3の処理の完了を特殊処理完了として扱い、特殊処理中にエラーが検出された場合は手順ST2から処理を再実行する。
図7は、例外処理の動作の一例を説明する図である。図7は、例外が発生して例外レベルEL0からEL1へ割り込む場合の例外処理の動作例を示す。図7中、PSTATEはPSTATEレジスタ値、SPSR_EL1はSPSR_EL1レジスタ値、PCはPC144の値(以下、「PC値」とも言う)、ELR_EL1はELR_EL1レジスタ値、SPはSP値を夫々示す。また、SP_EL0はSP_EL0レジスタ値、SP_EL1はSP_EL1レジスタ値、HARDOP_RETRY_POINTはHARDOP_RETRY_POINTレジスタ127の値(HARDOP_RETRY_POINTレジスタ値)を夫々示す。
この例では、例外発生時の{PSTATE, SPSR_EL1, PC, ELR_EL1, SP, SP_EL0, SP_EL1}レジスタ値を夫々{A,B,C,D,E,F,G}で表す。具体的には、PSTATEレジスタ値がA、SPSR_EL1レジスタ値がB、PC値がC、ELR_EL1レジスタ値がD、SP値がE、SP_EL0レジスタ値がF、及びSP_EL1レジスタ値がGである。
従って、この例において、手順ST1では、PSTATE値AをSPSR_EL1レジスタに保存し、同時にPC値CをELR_EL1レジスタに書き込む。手順ST2では、SP値EをSP_EL0レジスタに書き込む。手順ST3では、SP_EL1値GをSPに書き込み、同時に例外処理用実行状態値XをPSTATEレジスタに書き込み、更に同時に例外処理用の値YをPCに書き込む。HARDOP_RETRY_POINT値には、手順ST1の処理の完了時に1がセットされ、手順ST3の処理の完了時に0がセットされる。例外処理によるHARDOP_RETRY_POINT=1の状態でエラーが検出された場合には、手順ST2と手順ST3の処理が再実行される。本実施例の手順ST2と手順ST3は、手順ST1と手順ST2が更新する資源を参照しない処理であるため、エラー時に再実行しても同一結果が得られる。
本実施例において、例えばARMv8-Aアーキテクチャを用いる場合にeret命令で実行される例外復帰処理は、以下の手順ST11~ST13で行われる。
手順ST11では、SPSRレジスタの値をPSTATEレジスタに書き込み、同時にELRレジスタの値をPC144に書き込む。なお、本実施例において、特殊処理が例外復帰処理の場合の特殊処理開始時点とは、この手順ST11が完了した時点である。
手順ST12では、SPの値を変更前実行状態(SPSRレジスタ中のELとspsel)に対応するSP_ELxレジスタに書き込む。
手順ST13では、変更後実行状態(PSTATEレジスタ中のcurrentELとspsel)に対応するSP_ELxレジスタの値をSPに書き込む。
例外復帰処理では、手順ST11の処理の完了を特殊処理開始、手順ST13の処理の完了を特殊処理完了として扱い、特殊処理中にエラー検出された場合は手順ST12から処理を再実行する。
図8は、例外復帰処理の動作の一例を説明する図である。図8は、例外復帰命令の一例であるeret命令が実行されて例外レベルEL1からEL0へ遷移する場合の例外復帰処理手順の動作例を示す。図8中、PSTATEはPSTATEレジスタ値、SPSR_EL1はSPSR_EL1レジスタ値、PCはPC値、ELR_EL1はELR_EL1レジスタ値、SPはSP値を夫々示す。また、SP_EL0はSP_EL0レジスタ値、SP_EL1はSP_EL1レジスタ値、HARDOP_RETRY_POINTはHARDOP_RETRY_POINTレジスタ127の値(HARDOP_RETRY_POINTレジスタ値)を夫々示す。
eret命令開始時の{PSTATE, SPSR_EL1, PC, ELR_EL1, SP, SP_EL0, SP_EL1}レジスタ値を夫々{A,B,C,D,E,F,G}とする。具体的には、PSTATEレジスタ値がA、SPSR_EL1レジスタ値がB、PC値がC、ELR_EL1レジスタ値がD、SP値がE、SP_EL0レジスタ値がF、及びSP_EL1レジスタ値がGである。
従って、この例において、手順ST11では、SPSR_EL1値BをPSTATEレジスタに書き込み、同時にELR_EL1値DをPCに書き込む。手順ST12では、SP値Eを変更前実行状態に対応するSP_EL1レジスタに書き込む。手順ST13では、変更後実行状態に対応するSP_EL0値FをSPに書き込む。
HARDOP_RETRY_POINT値には、手順ST11の処理の完了時に1がセットされ、手順ST13の処理の完了時に0がセットされる。例外復帰処理によるHARDOP_RETRY_POINT=1の状態でエラーが検出された場合には、手順ST12と手順ST13の処理が再実行される。本実施例の手順ST12と手順ST13は、手順ST11と手順ST12が更新する資源を参照しない処理であるため、エラー時に再実行しても同一結果が得られる。
本実施例において、例えばARMv8-Aアーキテクチャを用いる場合にspsel更新命令で実行される更新処理は、以下の手順ST21~ST23で行われる。
手順ST21では、命令指定の値をspselレジスタに書き込み、同時に後続命令アドレスをPC144に書き込む。なお、本実施例において、特殊処理がspsel更新処理の場合の特殊処理開始時点とは、この手順ST21が完了した時点である。
手順ST22では、SPの値を変更前spselレジスタに対応するSP_ELxレジスタに書き込む。
手順ST23では、変更後spselレジスタに対応するSP_ELxレジスタの値をSPに書き込む。
spsel更新処理では、手順ST21の完了を特殊処理開始、手順ST23の完了を特殊処理完了として扱い、処理中にエラーした場合には手順ST22から処理を再実行する。
図9は、spsel更新処理の動作の一例を説明する図である。図9は、currentEL=1且つspsel=1の状態でspsel更新命令が実行されてspsel=0に更新される場合の処理手順の動作例を示す。図9中、spselはspselレジスタ値、PCはPC値、SPはSP値、SP_EL0はSP_EL0レジスタ値、SP_EL1はSP_EL1レジスタ値、HARDOP_RETRY_POINTはHARDOP_RETRY_POINTレジスタ127の値(HARDOP_RETRY_POINTレジスタ値)を夫々示す。
spsel更新処理の開始時点での{PC, SP, SP_EL0, SP_EL1}レジスタ値を夫々{A,B,C,D}とする。具体的には、PC値がA、SP値がB、SP_EL0レジスタ値がC、及びSP_EL1レジスタ値がDである。
従って、この例において、手順ST21では、命令指定の値0をspselレジスタに書き込み、同時に後続命令アドレスA+4をPCに書き込む。手順ST22では、SP値Bを変更前spselレジスタ値に対応するSP_EL1レジスタに書き込む。手順ST23では、変更後spselレジスタ値に対応するSP_EL0値CをSPに書き込む。HARDOP_RETRY_POINT値には、手順ST21の処理の完了時に1がセットされ、手順ST23の処理の完了時に0がセットされる。spsel更新処理によるHARDOP_RETRY_POINT=1の状態でエラーが検出された場合には、手順ST22と手順ST23の処理が再実行される。本実施例の手順ST22と手順ST23は、手順ST21と手順ST22が更新する資源を参照しない処理であるため、エラー時に再実行しても同一結果が得られる。
上記の各実施例によれば、例外処理、例外復帰処理、spsel更新処理等の特殊処理を複数サイクルで実行する演算処理装置において、特殊処理中にエラーが検出された場合に特殊処理の種別に応じたリトライを行うことが可能となる。また、特殊処理中にエラーを検出した場合に、再実行することが可能な特殊処理の種別であれば、プログラムを異常終了させることなく命令実行を継続することができるので、演算処理装置の信頼性を向上することが可能となる。
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
プログラマブル資源に含まれる複数の資源を更新する特殊処理を複数サイクルで実行する演算処理装置であって、
特殊処理中であることを記録すると共に、命令実行中にエラーを検出するとエラー通知を行う命令実行回路と、
特殊処理の開始時点で特殊処理種別を記録すると共に、前記特殊処理中に前記エラー通知を受信した場合、記録されている特殊処理種別から当該特殊処理を再実行することが可能であるか否かを判断し、可能であると判断した場合には当該特殊処理を最初から再実行する特殊処理再実行を指示するリトライ制御回路と、
を備え、
前記命令実行回路は、前記リトライ制御回路からの前記特殊処理再実行の指示に基づき、前記特殊処理を再実行するリトライ処理を行うことを特徴とする、演算処理装置。
(付記2)
前記リトライ制御回路は、
前記リトライ処理が可能なタイミングであるか否かを判断するのに用いるフラグを格納し、命令完了以外のタイミングで資源更新が行われたときにリセットされ、命令完了のタイミングでセットされる第1のレジスタと、
前記リトライ処理を行うことが確定し、且つ、前記リトライ処理が完了していないことを示すフラグを格納し、前記エラーを検出したエラー検出タイミングで前記第1のレジスタがセットされており、且つ、前記第1のレジスタをリセットする条件が成立していない場合にセットされ、命令完了時と特殊処理開始のタイミングとでリセットされ、一命令再実行を前記命令実行回路に指示する第2のレジスタと、
前記特殊処理を再実行可能なタイミングであるか否かの判断に用いるフラグを格納し、前記特殊処理開始のタイミングでセットされ、特殊処理完了のタイミングでリセットされる第3のレジスタと、
前記特殊処理のリトライ処理を行うことが確定し、且つ、前記特殊処理のリトライ処理が完了していないことを示すフラグを格納し、前記エラー検出タイミングで前記第3のレジスタがセットされており、且つ、前記第3のレジスタをリセットする条件が成立していない場合にセットされ、前記特殊処理完了のタイミングでリセットされ、前記特殊処理再実行を前記命令実行回路に指示する第4のレジスタと、
前記特殊処理の開始時点で通知される前記特殊処理種別を記録する第1の記録回路とを有し、
前記第1の記録回路は、前記エラー検出タイミングで記録された特殊処理が再実行可能な処理である場合にのみ、前記第4のレジスタをセットし、前記特殊処理を再実行するときに当該特殊処理の処理種別である再実行特殊処理種別を前記命令実行回路に通知することを特徴とする、付記1記載の演算処理装置。
(付記3)
前記命令実行回路は、
前記特殊処理の開始時点で特殊処理開始と特殊処理種別を前記リトライ制御回路に通知し、
特殊処理完了を特殊処理以外の処理の命令と同じ命令完了で前記リトライ制御回路に通知し、
前記特殊処理再実行に応じて、前記プログラマブル資源の資源更新を行うことを特徴とする、付記1又は2記載の演算処理装置。
(付記4)
前記命令実行回路は、
命令をデコードする命令デコーダと、
特殊処理開始から特殊処理完了までの処理を行うための状態を制御する状態制御回路と、
前記命令デコーダから受信した命令情報が示す、デコードした命令の種別に基づき、前記特殊処理が必要な命令であるか否かを判断し、前記特殊処理が必要な種別の命令であると判断した場合、前記状態制御回路に特殊処理が必要であることを通知する判断回路と、
例外検出の通知、前記判断回路から特殊処理が必要な命令の種別、及び前記リトライ制御回路から再実行特殊処理種別を夫々受信し、特殊処理種別を特殊処理開始から特殊処理完了までの間記録する第2の記録回路と、
前記状態制御回路から特殊処理開始を通知されると、特殊処理手順番号に初期値を設定し、手順完了を通知されると特殊処理手順番号をインクリメントする手順制御回路と、
前記状態制御回路から特殊処理開始を通知されると、特殊処理を実行するのに用いる回路に特殊処理指示を、前記第2の記録回路から通知される特殊処理種別と、前記手順制御回路から通知される特殊処理手順番号に基づいて通知すると共に、特殊処理種別毎に予め決められている最後の特殊処理手順番号まで特殊処理指示を出力し終わると、特殊処理完了を前記状態制御回路と前記リトライ制御回路に通知する指示回路とを有し、
前記状態制御回路は、例外検出が通知された場合、前記判断回路が特殊処理が必要な種別の命令であると判断した場合、及び前記リトライ制御回路から特殊処理再実行の指示がある場合に、特殊処理状態に遷移し、前記特殊処理状態に遷移すると、特殊処理開始を前記手順制御回路、前記指示回路、及び前記リトライ制御回路に通知すると共に、前記指示回路から特殊処理完了の通知があると、特殊処理状態から遷移して、特殊処理以外の命令の処理状態に戻り、
前記判断回路は、前記第2の記録回路に特殊処理種別を通知し、
前記第2の記録回路は、記録されている特殊処理種別を前記指示回路と前記リトライ制御回路に通知し、
前記手順制御回路は、インクリメント後の特殊処理手順番号を前記指示回路に通知することを特徴とする、付記1乃至3のいずれか1項記載の演算処理装置。
(付記5)
前記命令実行回路が実行する前記特殊処理は、例外処理であり、
前記特殊処理の開始時点は、例外発生時の実行状態を前記プログラマブル資源に含まれる第1の特定記憶域に保存し、同時に前記プログラマブル資源に含まれるプログラムカウンタが示す例外の戻り先を前記プログラマブル資源に含まれる第2の特定記憶域に保存する手順が完了した時点であることを特徴とする、付記1乃至4のいずれか1項記載の演算処理装置。
(付記6)
前記命令実行回路が実行する前記特殊処理は、例外復帰処理であり、
前記特殊処理の開始時点は、前記プログラマブル資源に含まれる第1の特定記憶域の値を実行状態に書き込み、同時に前記プログラマブル資源に含まれる第2の特定記憶域の値を前記プログラマブル資源に含まれるプログラムカウンタに書き込む手順が完了した時点であることを特徴とする、付記1乃至4のいずれか1項記載の演算処理装置。
(付記7)
前記命令実行回路が実行する前記特殊処理は、前記プログラマブル資源に含まれるスタックポインタの選択値の更新処理であり、
前記特殊処理の開始時点は、命令指定の値を前記プログラマブル資源に含まれるレジスタに書き込み、同時に後続命令アドレスを前記プログラマブル資源に含まれるプログラムカウンタに書き込む手順が完了した時点であることを特徴とする、付記1乃至4のいずれか1項記載の演算処理装置。
(付記8)
プログラマブル資源に含まれる複数の資源を更新する特殊処理を複数サイクルで実行する演算処理装置の制御方法であって、
命令実行回路が、特殊処理中であることを記録し、
前記命令実行回路が、命令実行中にエラーを検出するとエラー通知を行い、
リトライ制御回路が、特殊処理の開始時点で特殊処理種別を記録すると共に、前記特殊処理中に前記エラー通知を受信した場合、記録されている特殊処理種別から当該特殊処理を再実行することが可能であるか否かを判断し、可能であると判断した場合には当該特殊処理を最初から再実行する特殊処理再実行を指示し、
前記命令実行回路が、前記リトライ制御回路からの前記特殊処理再実行の指示に基づき、前記特殊処理を再実行するリトライ処理を行うことを特徴とする、演算処理装置の制御方法。
(付記9)
前記リトライ制御回路が、
第1のレジスタに、前記リトライ処理が可能なタイミングであるか否かを判断するのに用いるフラグを格納し、前記第1のレジスタを、命令完了以外のタイミングで資源更新が行われたときにリセットし、命令完了のタイミングでセットし、
第2のレジスタに、前記リトライ処理を行うことが確定し、且つ、前記リトライ処理が完了していないことを示すフラグを格納し、前記第2のレジスタを、前記エラーを検出したエラー検出タイミングで前記第1のレジスタがセットされており、且つ、前記第1のレジスタをリセットする条件が成立していない場合にセットし、命令完了時と特殊処理開始のタイミングとでリセットして、一命令再実行を前記命令実行回路に指示し、
第3のレジスタに、前記特殊処理を再実行可能なタイミングであるか否かの判断に用いるフラグを格納し、前記第3のレジスタを、前記特殊処理開始のタイミングでセットし、特殊処理完了のタイミングでリセットし、
第4のレジスタに、特殊処理のリトライ処理を行うことが確定し、且つ、前記特殊処理のリトライ処理が完了していないことを示すフラグを格納し、前記第4のレジスタに、前記エラー検出タイミングで前記第3のレジスタがセットされており、且つ、前記第3のレジスタをリセットする条件が成立していない場合にセットし、前記特殊処理完了のタイミングでリセットして、前記特殊処理再実行を前記命令実行回路に指示し、
第1の記録回路に、前記特殊処理の開始時点で通知される前記特殊処理種別を記録し、
前記第1の記録回路が、前記エラー検出タイミングで記録された特殊処理が再実行可能な処理である場合にのみ、前記第4のレジスタをセットし、前記特殊処理を再実行するときに当該特殊処理の処理種別である再実行特殊処理種別を前記命令実行回路に通知することを特徴とする、付記8記載の演算処理装置の制御方法。
(付記10)
前記命令実行回路が、
前記特殊処理の開始時点で特殊処理開始と特殊処理種別を前記リトライ制御回路に通知し、
特殊処理完了を特殊処理以外の処理の命令と同じ命令完了で前記リトライ制御回路に通知し、
前記特殊処理再実行に応じて、前記プログラマブル資源の資源更新を行うことを特徴とする、付記8又は9記載の演算処理装置の制御方法。
(付記11)
前記命令実行回路が、
命令デコーダに命令をデコードさせ、
状態制御回路に特殊処理開始から特殊処理完了までの処理を行うための状態を制御させ、
判断回路に前記命令デコーダから受信した命令情報が示す、デコードした命令の種別に基づき、前記特殊処理が必要な命令であるか否かを判断し、前記特殊処理が必要な種別の命令であると判断した場合、前記状態制御回路に特殊処理が必要であることを通知させ、
第2の記録回路に例外検出の通知、前記判断回路から特殊処理が必要な命令の種別、及び前記リトライ制御回路から再実行特殊処理種別を夫々受信し、特殊処理種別を特殊処理開始から特殊処理完了までの間記録させ、
手順制御回路に前記状態制御回路から特殊処理開始を通知されると、特殊処理手順番号に初期値を設定し、手順完了を通知されると特殊処理手順番号をインクリメントさせ、
指示回路に前記状態制御回路から特殊処理開始を通知されると、特殊処理を実行するのに用いる回路に特殊処理指示を、前記第2の記録回路から通知される特殊処理種別と、前記手順制御回路から通知される特殊処理手順番号に基づいて通知すると共に、特殊処理種別毎に予め決められている最後の特殊処理手順番号まで特殊処理指示を出力し終わると、特殊処理完了を前記状態制御回路と前記リトライ制御回路に通知させ、
前記状態制御回路が、例外検出が通知された場合、前記判断回路が特殊処理が必要な種別の命令であると判断した場合、及び前記リトライ制御回路から特殊処理再実行の指示がある場合に、特殊処理状態に遷移し、前記特殊処理状態に遷移すると、特殊処理開始を前記手順制御回路、前記指示回路、及び前記リトライ制御回路に通知すると共に、前記指示回路から特殊処理完了の通知があると、特殊処理状態から遷移して、特殊処理以外の命令の処理状態に戻り、
前記判断回路が、前記第2の記録回路に特殊処理種別を通知し、
前記第2の記録回路が、記録されている特殊処理種別を前記指示回路と前記リトライ制御回路に通知し、
前記手順制御回路が、インクリメント後の特殊処理手順番号を前記指示回路に通知することを特徴とする、付記8乃至10のいずれか1項記載の演算処理装置の制御方法。
(付記12)
前記特殊処理は、例外処理、例外復帰処理、及び前記プログラマブル資源に含まれるスタックポインタの選択値の更新処理のいずれかであることを特徴とする、付記8乃至11のいずれか1項記載の演算処理装置の制御方法。
(付記13)
前記特殊処理は、例外処理であり、
前記特殊処理の開始時点は、例外発生時の実行状態を前記プログラマブル資源に含まれる第1の特定記憶域に保存し、同時に前記プログラマブル資源に含まれるプログラムカウンタが示す例外の戻り先を前記プログラマブル資源に含まれる第2の特定記憶域に保存する手順が完了した時点であることを特徴とする、付記8乃至11のいずれか1項記載の演算処理装置の制御方法。
(付記14)
前記特殊処理は、例外復帰処理であり、
前記特殊処理の開始時点は、前記プログラマブル資源に含まれる第1の特定記憶域の値を実行状態に書き込み、同時に前記プログラマブル資源に含まれる第2の特定記憶域の値を前記プログラマブル資源に含まれるプログラムカウンタに書き込む手順が完了した時点であることを特徴とする、付記8乃至11のいずれか1項記載の演算処理装置の制御方法。
(付記15)
前記特殊処理は、前記プログラマブル資源に含まれるスタックポインタの選択値の更新処理であり、
前記特殊処理の開始時点は、命令指定の値を前記プログラマブル資源に含まれるレジスタに書き込み、同時に後続命令アドレスを前記プログラマブル資源に含まれるプログラムカウンタに書き込む手順が完了した時点であることを特徴とする、付記8乃至11のいずれか1項記載の演算処理装置の制御方法。
以上、開示の演算処理装置及び演算処理装置の制御方法を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
1 演算処理装置
11 命令実行回路
12 リトライ制御回路
13 実行状態制御回路
14 プログラマブル資源
31 命令フェッチアドレス生成器
32 1次命令キャッシュメモリ
33 命令バッファ
34 命令デコーダ
35 RSA
36 オペランドアドレス生成器
37 1次データキャッシュメモリ
38 RSE
39 固定小数点演算器
40 浮動小数点演算器
41 RSBR
42 CSE
43 特殊処理制御部
44 分岐予測機構
50 演算処理システム
51-1~51-N ノード
52 CPU
53 メモリ
122 RETRY_POINTレジスタ
123 RETRY_TGRレジスタ
127 HARDOP_RETRY_POINTレジスタ
128 HARDOP_RETRY_TGRレジスタ
129 記録回路
141 固定小数点物理レジスタ
142 浮動小数点物理レジスタ
143 システムレジスタ
144 PC
431 判断回路
432 状態制御回路
433 記録回路
434 手順制御回路
435 指示回路
521-1~521-M CPUコア

Claims (10)

  1. プログラマブル資源に含まれる複数の資源を更新する特殊処理を複数サイクルで実行する演算処理装置であって、
    特殊処理中であることを記録すると共に、命令実行中にエラーを検出するとエラー通知を行う命令実行回路と、
    特殊処理の開始時点で特殊処理種別を記録すると共に、前記特殊処理中に前記エラー通知を受信した場合、記録されている特殊処理種別から当該特殊処理を再実行することが可能であるか否かを判断し、可能であると判断した場合には当該特殊処理を最初から再実行する特殊処理再実行を指示するリトライ制御回路と、
    を備え、
    前記命令実行回路は、前記リトライ制御回路からの前記特殊処理再実行の指示に基づき、前記特殊処理を再実行するリトライ処理を行うことを特徴とする、演算処理装置。
  2. 前記リトライ制御回路は、
    前記リトライ処理が可能なタイミングであるか否かを判断するのに用いるフラグを格納し、命令完了以外のタイミングで資源更新が行われたときにリセットされ、命令完了のタイミングでセットされる第1のレジスタと、
    前記リトライ処理を行うことが確定し、且つ、前記リトライ処理が完了していないことを示すフラグを格納し、前記エラーを検出したエラー検出タイミングで前記第1のレジスタがセットされており、且つ、前記第1のレジスタをリセットする条件が成立していない場合にセットされ、命令完了時と特殊処理開始のタイミングとでリセットされ、一命令再実行を前記命令実行回路に指示する第2のレジスタと、
    前記特殊処理を再実行可能なタイミングであるか否かの判断に用いるフラグを格納し、前記特殊処理開始のタイミングでセットされ、特殊処理完了のタイミングでリセットされる第3のレジスタと、
    前記特殊処理のリトライ処理を行うことが確定し、且つ、前記特殊処理のリトライ処理が完了していないことを示すフラグを格納し、前記エラー検出タイミングで前記第3のレジスタがセットされており、且つ、前記第3のレジスタをリセットする条件が成立していない場合にセットされ、前記特殊処理完了のタイミングでリセットされ、前記特殊処理再実行を前記命令実行回路に指示する第4のレジスタと、
    前記特殊処理の開始時点で通知される前記特殊処理種別を記録する第1の記録回路とを有し、
    前記第1の記録回路は、前記エラー検出タイミングで記録された特殊処理が再実行可能な処理である場合にのみ、前記第4のレジスタをセットし、前記特殊処理を再実行するときに当該特殊処理の処理種別である再実行特殊処理種別を前記命令実行回路に通知することを特徴とする、請求項1記載の演算処理装置。
  3. 前記命令実行回路は、
    前記特殊処理の開始時点で特殊処理開始と特殊処理種別を前記リトライ制御回路に通知し、
    特殊処理完了を特殊処理以外の処理の命令と同じ命令完了で前記リトライ制御回路に通知し、
    前記特殊処理再実行に応じて、前記プログラマブル資源の資源更新を行うことを特徴とする、請求項1又は2記載の演算処理装置。
  4. 前記命令実行回路は、
    命令をデコードする命令デコーダと、
    特殊処理開始から特殊処理完了までの処理を行うための状態を制御する状態制御回路と、
    前記命令デコーダから受信した命令情報が示す、デコードした命令の種別に基づき、前記特殊処理が必要な命令であるか否かを判断し、前記特殊処理が必要な種別の命令であると判断した場合、前記状態制御回路に特殊処理が必要であることを通知する判断回路と、
    例外検出の通知、前記判断回路から特殊処理が必要な命令の種別、及び前記リトライ制御回路から再実行特殊処理種別を夫々受信し、特殊処理種別を特殊処理開始から特殊処理完了までの間記録する第2の記録回路と、
    前記状態制御回路から特殊処理開始を通知されると、特殊処理手順番号に初期値を設定し、手順完了を通知されると特殊処理手順番号をインクリメントする手順制御回路と、
    前記状態制御回路から特殊処理開始を通知されると、特殊処理を実行するのに用いる回路に特殊処理指示を、前記第2の記録回路から通知される特殊処理種別と、前記手順制御回路から通知される特殊処理手順番号に基づいて通知すると共に、特殊処理種別毎に予め決められている最後の特殊処理手順番号まで特殊処理指示を出力し終わると、特殊処理完了を前記状態制御回路と前記リトライ制御回路に通知する指示回路とを有し、
    前記状態制御回路は、例外検出が通知された場合、前記判断回路が特殊処理が必要な種別の命令であると判断した場合、及び前記リトライ制御回路から特殊処理再実行の指示がある場合に、特殊処理状態に遷移し、前記特殊処理状態に遷移すると、特殊処理開始を前記手順制御回路、前記指示回路、及び前記リトライ制御回路に通知すると共に、前記指示回路から特殊処理完了の通知があると、特殊処理状態から遷移して、特殊処理以外の命令の処理状態に戻り、
    前記判断回路は、前記第2の記録回路に特殊処理種別を通知し、
    前記第2の記録回路は、記録されている特殊処理種別を前記指示回路と前記リトライ制御回路に通知し、
    前記手順制御回路は、インクリメント後の特殊処理手順番号を前記指示回路に通知することを特徴とする、請求項1乃至3のいずれか1項記載の演算処理装置。
  5. 前記命令実行回路が実行する前記特殊処理は、例外処理であり、
    前記特殊処理の開始時点は、例外発生時の実行状態を前記プログラマブル資源に含まれる第1の特定記憶域に保存し、同時に前記プログラマブル資源に含まれるプログラムカウンタが示す例外の戻り先を前記プログラマブル資源に含まれる第2の特定記憶域に保存する手順が完了した時点であることを特徴とする、請求項1乃至4のいずれか1項記載の演算処理装置。
  6. 前記命令実行回路が実行する前記特殊処理は、例外復帰処理であり、
    前記特殊処理の開始時点は、前記プログラマブル資源に含まれる第1の特定記憶域の値を実行状態に書き込み、同時に前記プログラマブル資源に含まれる第2の特定記憶域の値を前記プログラマブル資源に含まれるプログラムカウンタに書き込む手順が完了した時点であることを特徴とする、請求項1乃至4のいずれか1項記載の演算処理装置。
  7. 前記命令実行回路が実行する前記特殊処理は、前記プログラマブル資源に含まれるスタックポインタの選択値の更新処理であり、
    前記特殊処理の開始時点は、命令指定の値を前記プログラマブル資源に含まれるレジスタに書き込み、同時に後続命令アドレスを前記プログラマブル資源に含まれるプログラムカウンタに書き込む手順が完了した時点であることを特徴とする、請求項1乃至4のいずれか1項記載の演算処理装置。
  8. プログラマブル資源に含まれる複数の資源を更新する特殊処理を複数サイクルで実行する演算処理装置の制御方法であって、
    命令実行回路が、特殊処理中であることを記録し、
    前記命令実行回路が、命令実行中にエラーを検出するとエラー通知を行い、
    リトライ制御回路が、特殊処理の開始時点で特殊処理種別を記録すると共に、前記特殊処理中に前記エラー通知を受信した場合、記録されている特殊処理種別から当該特殊処理を再実行することが可能であるか否かを判断し、可能であると判断した場合には当該特殊処理を最初から再実行する特殊処理再実行を指示し、
    前記命令実行回路が、前記リトライ制御回路からの前記特殊処理再実行の指示に基づき、前記特殊処理を再実行するリトライ処理を行うことを特徴とする、演算処理装置の制御方法。
  9. 前記リトライ制御回路が、
    第1のレジスタに、前記リトライ処理が可能なタイミングであるか否かを判断するのに用いるフラグを格納し、前記第1のレジスタを、命令完了以外のタイミングで資源更新が行われたときにリセットし、命令完了のタイミングでセットし、
    第2のレジスタに、前記リトライ処理を行うことが確定し、且つ、前記リトライ処理が完了していないことを示すフラグを格納し、前記第2のレジスタを、前記エラーを検出したエラー検出タイミングで前記第1のレジスタがセットされており、且つ、前記第1のレジスタをリセットする条件が成立していない場合にセットし、命令完了時と特殊処理開始のタイミングとでリセットして、一命令再実行を前記命令実行回路に指示し、
    第3のレジスタに、前記特殊処理を再実行可能なタイミングであるか否かの判断に用いるフラグを格納し、前記第3のレジスタを、前記特殊処理開始のタイミングでセットし、特殊処理完了のタイミングでリセットし、
    第4のレジスタに、特殊処理のリトライ処理を行うことが確定し、且つ、前記特殊処理のリトライ処理が完了していないことを示すフラグを格納し、前記第4のレジスタに、前記エラー検出タイミングで前記第3のレジスタがセットされており、且つ、前記第3のレジスタをリセットする条件が成立していない場合にセットし、前記特殊処理完了のタイミングでリセットして、前記特殊処理再実行を前記命令実行回路に指示し、
    記録回路に、前記特殊処理の開始時点で通知される前記特殊処理種別を記録し、
    前記記録回路が、前記エラー検出タイミングで記録された特殊処理が再実行可能な処理である場合にのみ、前記第4のレジスタをセットし、前記特殊処理を再実行するときに当該特殊処理の処理種別である再実行特殊処理種別を前記命令実行回路に通知することを特徴とする、請求項8記載の演算処理装置の制御方法。
  10. 前記特殊処理は、例外処理、例外復帰処理、及び前記プログラマブル資源に含まれるスタックポインタの選択値の更新処理のいずれかであることを特徴とする、請求項8又は9記載の演算処理装置の制御方法。
JP2018220092A 2018-11-26 2018-11-26 演算処理装置及び演算処理装置の制御方法 Active JP7124670B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018220092A JP7124670B2 (ja) 2018-11-26 2018-11-26 演算処理装置及び演算処理装置の制御方法
US16/680,572 US11372712B2 (en) 2018-11-26 2019-11-12 Processing device and method of controlling processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018220092A JP7124670B2 (ja) 2018-11-26 2018-11-26 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2020086897A JP2020086897A (ja) 2020-06-04
JP7124670B2 true JP7124670B2 (ja) 2022-08-24

Family

ID=70770306

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018220092A Active JP7124670B2 (ja) 2018-11-26 2018-11-26 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US11372712B2 (ja)
JP (1) JP7124670B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220206792A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Methods, systems, and apparatuses to optimize partial flag updating instructions via dynamic two-pass execution in a processor

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11640335B2 (en) * 2021-06-15 2023-05-02 Western Digital Technologies, Inc. Multiple function level reset management

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57164342A (en) * 1981-03-31 1982-10-08 Fujitsu Ltd Interruption processing retrial control system
JP3621477B2 (ja) * 1995-09-07 2005-02-16 富士通株式会社 マイクロプログラムのリトライ方法
JPH0991203A (ja) * 1995-09-25 1997-04-04 Fujitsu Ltd 割込み制御方法及びログ制御装置
JPH11327940A (ja) 1998-05-20 1999-11-30 Hitachi Ltd 命令再実行制御方式
CN101681285B (zh) 2007-06-20 2012-07-25 富士通株式会社 同时处理多个线程的运算装置
JP6123626B2 (ja) * 2013-10-08 2017-05-10 富士通株式会社 処理再開方法、処理再開プログラムおよび情報処理システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220206792A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Methods, systems, and apparatuses to optimize partial flag updating instructions via dynamic two-pass execution in a processor

Also Published As

Publication number Publication date
US11372712B2 (en) 2022-06-28
US20200167226A1 (en) 2020-05-28
JP2020086897A (ja) 2020-06-04

Similar Documents

Publication Publication Date Title
US8250349B2 (en) Branch prediction control device having return address stack and method of branch prediction
JP3729087B2 (ja) マルチプロセッサシステム、データ依存投機実行制御装置およびその方法
JP2009527866A (ja) アウトオブオーダープロセッサにおけるトランザクショナルメモリ
EP2503453A1 (en) Processor core with data error detection, and method for instruction execution in the same, with error avoidance
TW202105176A (zh) 減少處理系統中的資料快取記憶體存取
JP7124670B2 (ja) 演算処理装置及び演算処理装置の制御方法
US8151096B2 (en) Method to improve branch prediction latency
JP3800533B2 (ja) プログラムカウンタ制御方法及びプロセッサ
JP4985452B2 (ja) ベクトル処理装置
CN114341804A (zh) 最小化用于处理器中的中断指令恢复的寄存器重命名映射表(rmt)状态恢复的处理器重排序缓冲器(rob)的遍历
US20100100709A1 (en) Instruction control apparatus and instruction control method
US7603545B2 (en) Instruction control method and processor to process instructions by out-of-order processing using delay instructions for branching
JP2020091751A (ja) 演算処理装置および演算処理装置の制御方法
JP7480595B2 (ja) 半導体装置
JP7409208B2 (ja) 演算処理装置
KR20230084140A (ko) 제어 독립성 기술을 채용한 프로세서에서 처리되는 명령어에 대한 추론성 예측을 행하는 데 사용된 추론성 이력의 복원
US10929137B2 (en) Arithmetic processing device and control method for arithmetic processing device
JP2013210853A (ja) 情報処理装置、同期処理実行管理方法、及びプログラム
US20100106945A1 (en) Instruction processing apparatus
US11663014B2 (en) Speculatively executing instructions that follow a status updating instruction
JP2019215694A (ja) 演算処理装置および演算処理装置の制御方法
US11314505B2 (en) Arithmetic processing device
JP2022094507A (ja) 演算処理回路及び演算処理方法
KR20240038497A (ko) 프로세서 및 프로세서에서의 소프트 에러 검출 방법
CN115269011A (zh) 指令执行单元、处理单元及相关装置和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220628

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220725

R150 Certificate of patent or registration of utility model

Ref document number: 7124670

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150