JP5099132B2 - 複数のスレッドを同時に処理する演算装置 - Google Patents
複数のスレッドを同時に処理する演算装置 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements 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)ハードウェア内部の近接配線からのノイズによって発生するエラー
プロセサ内部の信号線がエレクトロマイグレーションなどによって壊れかけている場合には、その信号線に近接する信号線にエラーが発生することがある。このようなエラーは、単一命令のみを再実行することによって、再実行時に近接配線が変動する確率が大幅に減少するので、命令リトライで回復できる可能性が高くなる。
命令リトライ機構を有する従来の演算装置100は、図1に示すように、命令実行回路101と、実行状態制御回路102と、リトライ制御回路103と、を備える。
リトライ制御回路103は、命令実行回路101が命令リトライ可能なタイミングを判断し、命令リトライを行なうことが確定したことを示すフラグ(例えばレジスタ)のON/OFFを制御する。そして、リトライ可能なタイミングと判断すると、命令実行回路101に対して単一命令実行を指示する。
(1)命令実行回路101は、命令実行中にエラーを検出すると、実行状態制御回路102とリトライ制御回路103に対してエラー発生を通知する。
(6)命令実行回路101から命令実行の完了の通知を受けると、リトライ制御回路103は、命令リトライ処理を行なうことが確定したことを示すフラグをリセットして命令実行回路101への再実行の指示を解除する。
ここで、性能を重視するプロセッサにおいては、複数スレッドの命令列を同時に処理することで性能の向上を図るプロセサが提案されている。
(A)従来と同じ単一スレッドの命令列を処理するプロセサの命令リトライ機構を全スレッドに対して共通に一つだけプロセッサに備える方法。
(B)従来と同じ単一スレッドの命令列を処理するプロセサの命令リトライ機構をスレッド毎に一つずつプロセッサに備える方法。
また、実行制御回路は、全スレッドがキャンセル状態となるまで待ち合わせて、命令実行回路に再実行を指示するので、命令実行回路は確実に指示されたスレッドについて再実行することができる。
以上のように、本発明によると、単一スレッドの命令列を処理するプロセッサと同等のリトライ成功率を実現する複数スレッドの命令列を同時に処理できるプロセッサを提供することができる。
図2は、本実施例に係る演算装置200の動作原理を説明する図である。
図2に示す演算装置200は、複数のスレッドを実行する命令実行回路201と、各スレッドについての実行状態や再実行を制御する実行制御回路202と、を備える。
また、全スレッドの実行がキャンセルされると、実行制御回路202は、命令実行回路201に対して、エラースレッドについてキャンセル解除指示を行なって1命令だけ再実行させる。実行制御回路202は、1スレッドずつ再実行を行ない、全てのエラースレッドについて再実行が完了すると、リトライ処理を終了する。
図3に示すように演算装置200は、複数のスレッドを実行する命令実行回路201と、各スレッドについての実行状態や再実行を制御する実行制御回路202と、各スレッドの実行に使用するプログラマブル資源301−1、301−2、・・・、301−n(nは自然数。以下、任意のプログラマブル資源を指す場合には「プログラマブル資源301」と記載する)と、を備える。
また、命令実行回路201は、実行状態制御回路302からキャンセル指示を受けると、その実行状態制御回路302が管理するスレッドの命令実行処理を全てクリア(キャンセル)し、そのスレッドのプログラマブル資源の更新を中止する。そして、実行状態制御回路302からキャンセル解除通知を受けるまで、この状態を維持する。
また、実行状態制御回路302は、スレッド待ち合わせ回路304からキャンセル解除指示を受けると、図示しないが命令実行回路201に対して、当該スレッドについてキャンセル解除指示を行なう。
図4は、本実施例に係る実行状態制御回路302の構成例を示す図である。
図4に示す実行状態制御回路302は、論理演算を行なう論理和回路aと、状態の保持・遷移が可能なレジスタ(例えば、RS−FF)401と、で構成される。
図5に示すリトライ制御回路303は、状態の保持・遷移が可能なレジスタ(例えば、RS−FF)501及び502と、論理演算を行なう論理積回路b、否定論理積回路c及び否定回路dと、で構成される。
否定論理積回路cは、命令完了通知が「0」、かつ、資源更新通知が「1」以外の場合に「1」を出力する。すなわち、資源更新通知が入力されない限り「1」を出力する。
図6に示すスレッド待ち合わせ回路304は、各スレッドを管理する実行状態制御回路302に対してキャンセル指示を行なうキャンセル指示部601と、各スレッドを管理する実行状態制御回路302に対してキャンセル解除指示を行なうキャンセル解除指示部602と、を備える。
図7に示す命令実行回路201は、スレッド毎の命令列の取り出し処理を制御する命令フェッチ制御回路701と、取り出した命令列を一時的に記憶する命令バッファ702と、命令列をデコードする命令デコーダ703と、分岐命令の分岐アドレスの計算等を行なう分岐命令制御回路704と、命令に応じた演算を行なう演算ユニット705と、命令列順に命令を完了させてプログラム資源の更新を指示する命令コミット制御回路706と、を備える。
命令コミット制御回路706は、分岐制御回路704や演算ユニット705などからの処理の完了通知を受け取り、その命令に必要な処理が全て完了すると、命令列順序にしたがって命令を完了させる。そして、リトライ制御回路303とスレッド待ち合わせ回路304に対して命令完了を通知する。また、必要に応じてプログラマブル資源の更新を指示するとともに、リトライ制御回路303に対して資源更新を通知する。
ステップS801において、命令実行回路201は、各スレッドについて命令実行中にハードウェアエラーを検出すると、エラースレッドを管理する実行状態制御回路302とリトライ制御回路303とにエラー通知を行なう。
ステップS803において、リトライが可能と判断すると、リトライ制御回路303は、処理をステップS805に移行する。
ステップS806において、スレッド待ち合わせ回路304は、全スレッドについて命令実行がキャンセルされたか否かを判断する。そして、まだキャンセルされていないスレッドが存在する場合、スレッド待ち合わせ回路304は、処理をステップS807に移行する。
ステップS808において、スレッド待ち合わせ回路304は、実行状態制御回路302に対して、当該スレッドの命令実行のキャンセルを指示する。そして、処理をステップS806に移行する。
ステップS806において、全スレッドについて命令実行がキャンセルされると、スレッド待ち合わせ回路304は、処理をステップS809に移行する。
ステップS811において、命令実行回路201は、選択スレッドについてキャンセルが解除されると、選択スレッドについて1命令だけ再実行を行なう。そして、処理をステップS812に移行する。
ステップS813において、リトライ制御回路303は、ステップS805でセットしたRETRY_TGRを「0」にリセットして、リトライの確定状態を解除する。
以上に説明したように、演算装置200は、命令実行回路201で命令実行中にハードウェアエラーが発生すると、全スレッドの実行をキャンセルする。そして、全スレッドがキャンセル状態となるまで待ち合わせを行なう。そして、全スレッドがキャンセル状態となると、エラースレッドに対して1命令だけ再実行を行なう。
また、演算装置200は、リトライ処理中に動作する回路量が抑えられるので、複数スレッドの命令列を同時に処理するプロセッサであっても、単一スレッドの命令列を処理するプロセッサと同様にリトライを成功することが可能となる。
Claims (5)
- 複数のスレッドを実行し、該実行中に発生するハードウェアエラーを検出して通知する命令実行回路と、
該命令実行回路から前記ハードウェアエラーが通知されると、前記命令実行回路に対して全てのスレッドについて実行のキャンセルを指示して該全てのスレッドがキャンセル状態となるまで待ち合わせを行ない、前記ハードウェアエラーが発生したエラースレッドについて1命令だけ再実行を指示する実行制御回路と、
を備える演算装置。 - 前記実行制御回路は、前記スレッド毎に、
前記命令実行回路に対して前記スレッドの実行のキャンセルを指示して前記スレッドの実行状態を制御する実行状態制御回路と、
前記命令実行回路における前記エラースレッドの実行状態から前記1命令の再実行が可能なタイミングを検出し、前記命令実行回路に対して前記1命令の再実行を指示するリトライ制御回路と、
を備える請求項1に記載の演算装置。 - 前記実行制御回路は、
全てのスレッドがキャンセル状態となるまで前記スレッドの実行状態を監視し、全てのスレッドの実行状態がキャンセル状態となると、前記リトライ制御回路に対して前記命令実行回路に前記1命令を再実行させるように指示するスレッド待ち合わせ回路、
を備える請求項2に記載の演算装置。 - 前記実行制御回路は、前記スレッド毎に、
前記命令実行回路に対して前記スレッドの実行のキャンセルを指示して前記スレッドの実行状態を制御する実行状態制御回路と、
前記命令実行回路における前記エラースレッドの実行状態から前記1命令の再実行が可能なタイミングを検出し、前記命令実行回路に対して前記1命令の再実行を指示するリトライ制御回路と、
を備え、さらに
前記ハードウェアエラーが通知された第1の実行状態制御回路が前記命令実行回路に対して前記エラースレッドの実行のキャンセルを指示した旨の通知を受けると、該第1の実行状態制御回路以外の第2の実行状態制御回路に対して前記スレッドの実行のキャンセルを指示し、全てのスレッドがキャンセル状態となるまで前記スレッドの実行状態を監視し、全てのスレッドの実行状態がキャンセル状態となると、前記エラースレッドについて、前記リトライ制御回路に対して前記命令実行回路に前記1命令を再実行させるように指示するスレッド待ち合わせ回路、
を備える請求項1に記載の演算装置。 - 複数のスレッドを実行し、該実行中に発生するハードウェアエラーを検出する命令実行処理と、
該ハードウェアエラーを検出すると、前記命令実行処理を行なう命令実行回路に対して、全てのスレッドについて実行のキャンセルを指示し、該全てのスレッドがキャンセル状態となるまで待ち合わせを行なって、前記ハードウェアエラーが発生したエラースレッドについて1命令だけ再実行を指示するリトライ指示処理と、
該リトライ指示に応じて前記ハードウェアエラーが発生したエラースレッドについて1命令だけ再実行するリトライ処理と、
を演算装置に実行させる命令リトライ方法。
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)
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)
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)
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 |
-
2007
- 2007-06-20 JP JP2009520144A patent/JP5099132B2/ja not_active Expired - Fee Related
- 2007-06-20 KR KR1020097026080A patent/KR101031558B1/ko not_active IP Right Cessation
- 2007-06-20 WO PCT/JP2007/000661 patent/WO2008155803A1/ja active Application Filing
- 2007-06-20 CN CN2007800533574A patent/CN101681285B/zh not_active Expired - Fee Related
- 2007-06-20 EP EP07790187A patent/EP2169553B1/en not_active Not-in-force
-
2009
- 2009-12-09 US US12/633,840 patent/US8516303B2/en not_active Expired - Fee Related
Patent Citations (4)
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 |