JP2023035739A - 半導体装置 - Google Patents
半導体装置 Download PDFInfo
- Publication number
- JP2023035739A JP2023035739A JP2021142815A JP2021142815A JP2023035739A JP 2023035739 A JP2023035739 A JP 2023035739A JP 2021142815 A JP2021142815 A JP 2021142815A JP 2021142815 A JP2021142815 A JP 2021142815A JP 2023035739 A JP2023035739 A JP 2023035739A
- Authority
- JP
- Japan
- Prior art keywords
- cpu
- control circuit
- failure
- circuit
- information
- 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.)
- Pending
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
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
-
- 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
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2035—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/85—Active fault masking without idle spares
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
Abstract
【課題】故障種別に基づいて、ロックステップ動作で処理を継続させるか、または、故障したCPUを停止して正常なCPUのみで処理を継続させるか、を切り替えることが可能な技術を提供することにある。【解決手段】半導体装置は、ロックステップ動作をするCPUの一方が故障した場合に、その故障種別がSW故障であるならば、正常動作しているCPUのSRおよびGRが保持している情報を、SW故障したCPUに複写し、ロックステップ動作を停止する事無く処理を継続する。一方、その故障種別がHW故障であるならば、故障したCPUを停止して、正常なCPUのみで処理を継続する。【選択図】図3
Description
本開示は、半導体装置に関し、例えば、複数のCPUコアに同じ処理を並列して実行させるロックステップ動作を行う半導体装置に適用して有効な技術である。
半導体装置として、高信頼性の要求される車載用のプロセッサがある。車載用のプロセッサでは、高信頼化技術として、2つのCPU(Central Processing Unit)コアを同一サイクルで動作させ、かつ、2つのCPUコアに同一の処理を実行させるロックステップ動作を採用する場合がある。ロックステップ動作する半導体装置の提案として、たとえば、特開2016-35626号公報がある。
特開2016-35626号公報は、「半導体装置は、ロックステップ動作を行う第1のCPUコア11及び第2のCPUコア12を含む演算部10を有し、第1のCPUコア11及び第2のCPUコア12のそれぞれが内部の論理回路の故障を診断し、シーケンス制御回路16が当該診断結果に基づき演算部において共有リソースにデータを出力するCPUコアを切り替える。」技術を開示している。
特開2016-35626号公報に記載の半導体装置は、ロックステップ動作する2つのCPUコアの一方が故障した場合に、故障したCPUを停止し、正常なCPUのみで処理を継続する。つまり、故障種別(ハードウエア(HW)故障やソフトウエア(SW)故障)の区別なく、故障を検出したCPUコアを停止するため、ロックステップ動作を継続する事が出来ず、信頼性を向上させることが出来ないという問題があることが分かった。
本開示の課題は、故障種別に基づいて、ロックステップ動作で処理を継続させるか、または、故障したCPUを停止して正常なCPUのみで処理を継続させるか、を切り替えることが可能な技術を提供することにある。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
本開示のうち代表的なものの概要を簡単に説明すれば下記の通りである。
一実施の形態による半導体装置は、
ロックステップ動作を行う第1のCPU及び第2のCPUを含む演算部と、
シーケンス制御回路と、を有し、
前記第1のCPU及び前記第2のCPUのそれぞれは、
システムレジスタ(SR)および汎用レジスタ(GR)と、
対応するCPUが正しく動作している事をチェックするレプリカ診断回路と、
前記SRおよび前記GRの保持情報を入力する入力ポートと、
前記SRおよび前記GRの保持情報を出力する出力ポートと、
故障種別を判定する自己診断回路と、を有し、
前記演算部は、ロックステップ動作において比較動作を行うロックステップ制御回路を含み、
前記シーケンス制御回路は、
前記レプリカ診断回路からの情報で故障CPUを判定し、ロールバック処理を行う故障CPU判定回路と、
前記自己診断回路からの情報で故障種別を判定するソフトウエア(SW)故障判定回路と、
正常に動作する正常CPUの前記SRおよび前記GRの保持情報を故障した故障CPUの前記SRおよび前記GRへ複写するシフト制御回路と、
ロックステップ処理の再開を制御するLS再開制御回路と、を含み、
前記シーケンス制御回路は、前記SW故障判定回路が前記故障CPUの故障種別をSW故障と判断した場合、前記第1のCPUおよび前記第2のCPUの一方である前記正常CPUの前記SRおよび前記GRの保持情報を、前記第1のCPUおよび前記第2のCPUの他方の前記SW故障と判断された前記故障CPUの前記SRおよび前記GRへ複写して、ロックステップ動作による処理を継続させる。
ロックステップ動作を行う第1のCPU及び第2のCPUを含む演算部と、
シーケンス制御回路と、を有し、
前記第1のCPU及び前記第2のCPUのそれぞれは、
システムレジスタ(SR)および汎用レジスタ(GR)と、
対応するCPUが正しく動作している事をチェックするレプリカ診断回路と、
前記SRおよび前記GRの保持情報を入力する入力ポートと、
前記SRおよび前記GRの保持情報を出力する出力ポートと、
故障種別を判定する自己診断回路と、を有し、
前記演算部は、ロックステップ動作において比較動作を行うロックステップ制御回路を含み、
前記シーケンス制御回路は、
前記レプリカ診断回路からの情報で故障CPUを判定し、ロールバック処理を行う故障CPU判定回路と、
前記自己診断回路からの情報で故障種別を判定するソフトウエア(SW)故障判定回路と、
正常に動作する正常CPUの前記SRおよび前記GRの保持情報を故障した故障CPUの前記SRおよび前記GRへ複写するシフト制御回路と、
ロックステップ処理の再開を制御するLS再開制御回路と、を含み、
前記シーケンス制御回路は、前記SW故障判定回路が前記故障CPUの故障種別をSW故障と判断した場合、前記第1のCPUおよび前記第2のCPUの一方である前記正常CPUの前記SRおよび前記GRの保持情報を、前記第1のCPUおよび前記第2のCPUの他方の前記SW故障と判断された前記故障CPUの前記SRおよび前記GRへ複写して、ロックステップ動作による処理を継続させる。
上記一実施の形態に係る半導体装置によれば、ロックステップ動作をするCPUの一方が故障した場合に、その故障がSW故障であるならば、正常動作しているCPUのSRおよびGRが保持している情報を、SW故障したCPUに複写する事で、ロックステップ動作を停止する事無く処理を継続する事が出来る。これにより、半導体装置の信頼性向上を実現する。
以下、実施形態、および、実施例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。なお、図面は説明をより明確にするため、実際の態様に比べ、模式的に表される場合があるが、あくまで一例であって、本発明の解釈を限定するものではない。
ます最初に、故障の種類などについて説明する。
半導体装置の故障には、代表的に、ハードウエア(HW)故障と、ソフトウエア(SW)故障とがある。HW故障は、回路自体の損傷など致命的なダメージが原因で発生する。SW故障は、半導体装置やメモリ装置などが何らかの原因(例えば、ノイズや宇宙線など)で一時的に誤動作する。SW故障では、半導体装置の回路自体に損傷はないため、再起動(または、リセット)やデータ修復(ECC(Error-correcting code、エラー訂正):SEC(シングル エラー訂正))で正常状態に戻る。
これまでは、HW故障に比べて、SW故障の発生確率は低かった。半導体装置のサイズが比較的大きく、電源電圧が高く、動作周波数が低かったことが要因である。また、多少のノイズで誤動作する確率が低かった。
次に、車載半導体装置に於ける故障について説明する。
近年、車載半導体装置に求められる機能(AI(artificial intelligence)/機械学習など)が高まり、車載半導体装置の小型化かつ高性能化が進んでいる。ここで、小型化とは、半導体装置の製造技術の微細化、半導体装置の電源電圧の低下などである。高性能化とは、半導体装置の動作周波数の向上、半導体装置の回路の複雑化などである。今後、自動運転など人命に関わる技術が車載半導体装置に取り入れられることは確実な中、車載半導体装置に求められる安全性のレベルがより高まる事に対する備えとして、SW故障の影響は無視できないものとなっている。
図1は、実施の形態に係る半導体装置の制御方法を示すフロー図である。図1に示すように、半導体装置の制御方法は、ロックステップ動作を行う第1のCPUコア(以下、CPU1という)及び第2のCPUコア(以下、CPU2という)を含む演算部において、エラーが発生した場合の制御方法である。
ステップS1:ロックステップ動作を行うCPU1及びCPU2において、演算エラーが発生する。
ステップS2:演算エラーの原因がCPU1の故障か、CPU2の故障か否かを判断する。演算エラーの原因がCPU2の故障では無く、CPU1の故障である場合(Yes)、ステップS3へ遷移する。演算エラーの原因がCPU1の故障では無く、CPU2の故障である場合(No)、ステップS4へ遷移する。
ステップS3:演算エラーの原因がCPU1のHW故障か、CPU1のSW故障か否かを判断する。演算エラーの原因がCPU1のSW故障では無く、CPU1のHW故障である場合(Yes)、ステップS5へ遷移する。演算エラーの原因がCPU1のHW故障では無く、CPU1のSW故障である場合(No)、ステップS6へ遷移する。
ステップS4:演算エラーの原因がCPU2のHW故障か、CPU2のSW故障か否かを判断する。演算エラーの原因がCPU2のSW故障では無く、CPU2のHW故障である場合(Yes)、ステップS7へ遷移する。演算エラーの原因がCPU2のHW故障では無く、CPU2のSW故障である場合(No)、ステップS8へ遷移する。
ステップS5:CPU1がHW故障であるため、CPU1を無効化する(非動作状態とする)。その後、ステップS9へ遷移する。
ステップS6:CPU1がSW故障であるため、CPU2の汎用レジスタの値およびシステムレジスタの値をCPU1の汎用レジスタおよびシステムレジスタへ複写する。これにより、CPU1とCPU2とをロックステップ動作させるための準備が完了する。その後、ステップS11へ遷移する。ここで、汎用レジスタの値およびシステムレジスタの値は、CPUコア内部に保持しているコンテンツ情報と見なすことができる。
ステップS7:CPU2がHW故障であるため、CPU2を無効化する(非動作状態とする)。その後、ステップS9へ遷移する。
ステップS8:CPU2がSW故障であるため、CPU1の汎用レジスタの値およびシステムレジスタの値をCPU2の汎用レジスタおよびシステムレジスタへ複写する。これにより、CPU1とCPU2とをロックステップ動作させるための準備が完了する。その後、ステップS11へ遷移する。
ステップS9:ロールバック復旧処理が実施される。その後、ステップS10へ遷移する。
ステップS10:HW故障したCPU(CPU1又はCPU2)を停止して、正常なシングルCPU(CPU2又はCPU1)のみで処理を継続する。
ステップS11:ロールバック復旧処理が実施される。その後、ステップS12へ遷移する。
ステップS12:CPU1とCPU2とをロックステップ動作させて、処理を継続する。
これにより、ロックステップ動作をするCPU1とCPU2の一方が故障した場合に、その故障がSW故障(復旧可能)であるならば、正常動作しているCPUコア(CPU1、又は、CPU2)が保持しているコンテンツ情報(汎用レジスタの値およびシステムレジスタの値)をSW故障したCPUコア(CPU2、又は、CPU1)の汎用レジスタおよびシステムレジスタに複写する。これにより、ロックステップ動作を停止する事無く、処理を継続する事が出来る。これにより、半導体装置の信頼性を向上することができる。
以下、図1の半導体装置の制御方法を実施可能な半導体装置の構成例(実施例1~8)について、図面を用いて説明する。なお、実施例1~8、10の説明において、”故障CPU”とは、特に説明がない場合は、HW故障したCPUではなく、SW故障のCPUを示すものとする。
図2は、実施例1に係る半導体装置のチップ全体を示すブロック図である。半導体装置1は、単結晶シリコンのような半導体チップに公知のCMOS製造方法により形成された車載用のデータプロセッサである。また、半導体装置1は、複数のCPUコアに同じ処理を並列して実行させるロックステップ動作を行うことができるように構成されている。
図1に示すように、半導体装置1は、CPUブロック1CB1と、CPUブロック2CB2と、シーケンス制御回路SEと、メモリブロックMBと、周辺IPブロックPEと、バス1BU1と、バス2BU2と、クロックリセット生成回路CRGと、を含む。CPUブロック1CB1およびCPUブロック2CB2のおのおのは、演算部である。
CPUブロック1CB1とCPUブロック2CB2のおのおのは、例えば、第1のCPUコア(以下、CPU1という)、第2のCPUコア(以下、CPU2という)、CPU1とCPU2のロックステップ動作を制御するロックステップ制御回路(LS回路)LSC、CPU共有資源CR等を有する。CPU共有資源CRは、例えば、割り込み制御回路INTCやデバッグ制御回路DBGなどを含む。CPUブロック1CB1およびCPUブロック2CB2のそれぞれは、バス1BU1およびバス2BU2に接続されている。ロックステップ制御回路LSCは、CPU1の演算結果とCPU2の演算結果とを比較する比較回路を有する。ロックステップ制御回路LSCは、CPU1の演算結果とCPU2の演算結果とが一致する場合、CPU1とCPU2とに故障がないとしてロックステップ動作を継続させる制御を行う。一方、ロックステップ制御回路LSCは、CPU1の演算結果とCPU2の演算結果とが一致しない場合(不一致の場合)、CPU1又はCPU2に故障があるとしてロックステップ動作を停止させる制御を行う。
メモリブロックMBは、バス1BU1に接続され、複数のメモリ装置やメモリ制御回路を含む。複数のメモリ装置やメモリ制御回路は、例えば、命令キャッシュ(Inst. Cache)、データキャッシュ(Data Cache)、ブートメモリ(Boot ROM:Read only memory)、ワークメモリ(work RAM:random access memory)、ダイナミックメモリアクセスコントローラ(DMAC)などを含む。
周辺IPブロックPEは、バス2BU2に接続され、複数の周辺回路を含む。複数の周辺回路は、例えば、割り込み制御回路(INTC:Interrupt Controller)、シリアル通信回路(UART:Universal Asynchronous Receiver/Transmitter)、CAN(Controller Area Network)コントローラ(CAN)、アナログ・デジタル変換回路(ADC)、デジタル・アナログ変換回路(DAC)、ウッチドックタイマ(WDT)、複数のタイマー回路(Timer)、汎用入出力回路(GPIO:General-purpose input/output)などを含む。図2に示されるメモリブロックや周辺IPブロックの各回路の動作や機能は、よく知られているので、詳細な説明を省略する。
図3は、図2のCPUブロックの構成例とシーケンス制御回路の構成例とを説明する図である。図3には、CPUコアブロックと、シーケンス制御回路と、クロックリセット制御回路とが描かれている。
CPUコアブロックCBは、図2のCPUブロック1CB1又はCPUブロック2CB2に対応し、第1のCPUコア(以下、CPU1)と、第2のCPUコア(以下、CPU2)と、ロックステップ制御ブロックLSC(図2のLS回路LSCに対応する。)と、を含む。CPU1とCPU2のおのおのは、システムレジスタ(以下、SRという)と汎用レジスタ(以下、GRという)とを有する。GRの値およびSRの値は、CPUコア(CPU1、又は、CPU2)が保持しているコンテンツ情報と見なすことができる。ロックステップ制御ブロックLSCは、ロックステップ動作においてロックステップ比較動作を実施する回路である。
シーケンス制御回路SEは、SRとGRの保持情報を複写するときに利用される。クロックリセット生成回路CRGは、クロック信号の生成およびリセット信号の生成を行う。
CPU1とCPU2のおのおのは、対応するCPUコアが正しく動作している事をチェックするレプリカ診断回路RDIと、SRおよびGRの保持情報を入出力するシリアル入力ポート(SI)とシリアル出力ポート(SO)と、故障種別を判定する自己診断回路SDIと、を含む。
シーケンス制御回路SEは、レプリカ診断回路RDIからの情報で故障CPUを判定し、ロールバック処理を行う故障CPU判定回路30と、自己診断回路SDIからの情報で故障種別を判定するSW故障判定回路31と、SRおよびGRの保持情報を正常CPUから故障CPUへ複写するシフト制御回路32と、ロックステップ(LS)処理の再開のタイミングを制御するLS再開制御回路33と、クロックの停止および再開を制御するクロック制御回路34と、を含む。ここでは、正常CPUとは正常動作しているCPUコアを意味しており、故障CPUとはSW故障したCPUコアを意味している。
図4は、図3のCPUブロックおよびシーケンス制御回路の動作を説明する図である。
ロックステップ処理実行中の第1のCPU(CPU1)および第2のCPU(CPU2)がそれぞれ処理1、処理2、処理3を実行するものとする。
各処理1、2、3の実行をレプリカ診断回路RDIがチェックし、各処理1、2、3毎にCPU1およびCPU2の正常動作またはCPU1およびCPU2の異常動作を判定する。
ここで、例えば、CPU1が処理3を実行した際に、レプリカ診断回路RDIが異常動作を検知し、シーケンス制御回路SEに通知するものとする。
異常動作が通知されると、シーケンス制御回路SEの内部のクロック制御回路34がクロックを停止する事で、CPU1とCPU2の動作を停止させる。また、同時に、ロックステップ処理を停止する。
異常動作が通知されると、シーケンス制御回路SEの内部の故障CPU判定回路30が異常動作を通知したCPUを判定し、メモリブロックMB/周辺IPブロックPEに対してロールバック処理を実行すると共に、SW故障判定回路31に故障CPU情報を通知する。
故障CPU情報が通知されると、SW故障判定回路31は故障CPU(ここではCPU1)の自己診断回路RDIに対して、診断開始を指示する。
診断開始が指示されると、自己診断回路SDIは、SW故障やHW故障の判定のため、機能ブロック毎に予め決められた所定のテストシーケンスを実行する。そして、自己診断回路SDIはSW故障やHW故障の判定を行い、判定結果をシーケンス制御回路SEに通知する。シーケンス制御回路SEは、診断結果がSW故障であった場合、その結果をシフト制御回路32に通知する。シーケンス制御回路SEは、診断結果がHW故障であった場合、正常CPUのみで処理を継続する。
以下、実施例1では、診断結果がSW故障であった場合を想定し、動作説明を行う。
SW故障が通知されると、SW故障判定回路31はシフト制御回路32に対して判定結果を通知する。SW故障が通知されると、シフト制御回路32はシステムレジスタ(SR)と汎用レジスタ(GR)に対してシフト制御を開始する。
シフト制御回路32は、正常CPU(ここではCPU2)のSOポートからシステムレジスタ(SR)と汎用レジスタ(GR)のそれぞれの保持情報を、読み出す。その後、読み出したコンテンツ情報をCPU1およびCPU2の各SIポートからシステムレジスタ(SR)や汎用レジスタ(GR)に書き込む。
図5は、SRやGRの構成例および複写動作を説明する図である。ここでは、説明を簡単にするために、レジスタ(SRやGR)のビット長の構成を4bitで表現しているが、実際のSRやGRのビット長は32bitや64bitで構成されている。
SRやGRは、通常動作時にレジスタに書き込みを行うライトデータ(WD)ポートと、通常動作時にレジスタから読み出しを行うリードデータ(RD)ポートと、シフト制御回路からシフト動作の制御を行うシフトモード(SM)ポートと、レジスタ情報の複写を行うSIポートおよびSOポートと、を含む。
シフト制御回路32はSMポートをハイレベル“H”にする事で、SIポートから入力されるデータをシフトクロックSCKに従って順次各bitにセットする。
図4に示すように、SRやGRの複写処理が完了すると、シフト制御回路32はクロック制御回路34に対して複写完了を通知する。
複写完了が通知されると、クロック制御回路34はCPU1やCPU2に対してクロックCKの供給を開始する。
クロック供給開始後、ロックステップ比較の不感期間(無効な情報が出ている期間)情報を用いて、LS再開制御回路33がロックステップ処理を再開する。
ここで、ロックステップ比較の不感期間(無効な情報が出ている期間)を図6に示す。クロック供給再開後の最初の命令(ここでは命令1)がパイプラインのコミットステージ(CMT)に到達するまでは、不定期間と定義し、命令1がCMTに到達後にハイレベル“H”となる信号100でロックステップ処理の再開のタイミングを制御する。図6において、IFは命令フェッチ、IDは命令デコード、EXは実行、MEMはメモリアクセス、WBはレジスタ・ライトバックを示す。
実施例1によれば、以下の効果を得ることができる。
1)自己診断回路SDIを実装する事により、故障と特定されたCPUに対して、故障種別の判別が可能になる。
2)シフト制御回路32を実装する事により、正常CPUから故障CPUへSRやGRの情報を複写する事が可能になる。
3)LS再開制御回路33を実装する事により、疑似エラーを生じずに、ロックステップ制御回路がロックステップ動作の比較動作を再開する事が可能になる。
4)上記の新規機能をシーケンス制御回路SEで制御する事により、ロックステップ処理実行中にCPUの故障が発生した場合、その故障がSW故障(修復可能な故障)であれば、正常CPUから故障CPUへSRやGRの情報を複写する事で、ロックステップ動作を継続したままCPUが実行を再開する事が可能になり、半導体装置の信頼性向上を実現出来る。
5)特許文献1は“CPUが実行を再開する”という点に於いて実施例1と類似しているものの、正常CPU単体でしか実行せず、故障CPUは停止しており、ロックステップ処理は継続出来ていない。この点に於いて、実施例1に優位性がある。
次に、図7-図9を用いて、実施例2を説明する。
図7は、実施例2に係るCPUブロックの構成例とシーケンス制御回路の構成例とを説明する図である。実施例2の構成例(図7)が実施例1の構成例(図3)と異なる点は、実施例2の構成例(図7)は、実施例1の構成例(図3)に加えて、第1のCPU(CPU1)と第2のCPU(CPU2)のSRやGRに、SIの有効データを表す信号SENIと、SOの有効データを表す信号SENOとが設けられている点と、シフト制御回路32の出力とSIとの間の経路上、および、SOとシフト制御回路32の入力との間の経路上に、1または複数のフリップフロップ回路(F)が設けられている点である。実施例2のその他の構成及び動作は実施例1の構成及び動作と同じであるので、重複する説明は省略する。
図8は、実施例2に係るSRやGRの構成例を示す図である。図9は、図8のSRやGRの複写動作を説明する図である。
図8に示すSRやGRの構成例では、システムレジスタ(SR)や汎用レジスタ(GR)の入出力データ(SI/SO)に対して、それぞれの有効性を表す信号SENIおよび信号SENOが対となって入出力される。図9に示すように、SOポートのシリアル出力データは、信号SENOがハイレベル“H”である期間、有効である事を示す。SIポートのシリアル入力データは、信号SENIがハイレベル“H”である期間、有効である事を示す。
実施例2によれば、以下の効果を得ることができる。
実施例1では、SOポートから出力されたデータが、同サイクルでSIポートに入力される必要がある。その為、CPU1とCPU2の物理的な配置制約(距離が遠いなど)によっては数MHz~十数MHz程度の周波数でしか複写出来ない可能性がある。この問題を解決する為に、SIポートおよびSOポートの経路上にフリップフロップ回路(F)を実装する事で、複写時の周波数を向上させる事が可能になる。
ただし、フリップフロップ回路(F)によってタイミングが切られてしまう事で、経路上のフリップフロップ回路(F)が保持している無効なデータとSIポートおよびSOポートから出力されるSRやGRの保持情報との区別がつかなくなる。この問題を解決する為に、SIポートおよびSOポートのデータそれぞれに対して有効性を表す信号SENIおよび信号SENOを対で転送する事で、正しい(有効な)SRやGRの保持情報をレジスタ(SR、GR)にセット出来るようになる。
次に、図10-図12を用いて、実施例3を説明する。
図10は、実施例3に係るCPUブロックの構成例とシーケンス制御回路の構成例とを説明する図である。実施例3の構成例(図10)が実施例1の構成例(図3)と異なる点は、実施例3の構成例(図10)に、システムレジスタ(SR)および汎用レジスタ(GR)の情報の誤り情報を検出する巡回冗長検査回路(CRC回路:(Cyclic Redundancy Check))CRCが設けられている点である。具体的には、巡回冗長検査回路CRCが、CPU1およびCPU2のそれぞれに設けられている。第1巡回冗長検査回路CRCは、SRおよびGRの保持情報に対して、誤り検出情報(ここでは、CRC-1)を生成し、SRおよびGRの情報の最後に誤り検出情報を付加して出力する。第1巡回冗長検査回路CRCは、SRおよびGRの情報と誤り検出情報とで検算を行う機能も有する。また、第2巡回冗長検査回路CRCCがシフト制御回路32に設けられている。第2巡回冗長検査回路CRCCは、故障CPUに入力されるSRおよびGRの情報と誤り検出情報とで検算を行い、結果をシーケンス制御回路SEに通知する。実施例3のその他の構成は実施例1の構成と同じであるので、重複する説明は省略する。
図11は、図10のCPUブロックおよびシーケンス制御回路の動作を説明する図である。図12は、図10のSRやGRの構成例および複写動作を説明する図である。実施例3の基本的な動作は実施例1の動作と同じである。実施例3の動作が実施例1の動作と異なる点は、巡回冗長検査回路CRCが正常CPUから出力されるSRおよびGRの情報に対して、誤り検出情報(ここでは、CRC-1)を生成し、SRおよびGRの情報の最後に誤り検出情報を付加して出力する点である。また、巡回冗長検査回路CRCCが故障CPUに入力されるSRおよびGRの情報と誤り検出情報とで検算を行い、結果をシーケンス制御回路SEに通知する事で、シーケンス制御回路SEがSRおよびGRの情報の転送が正しく行われたか判定する点である。
誤り情報検算を行う箇所は、最終的に情報を受け取る故障CPUでのみ実施する事も可能であるが、実施例3では、シーケンス制御回路SEに於いても検算を実施する構成としている。ただし、シーケンス制御回路SEでは検算のみを行い、新たに誤り検出情報を生成する事は想定していない。
実施例3によれば、以下の効果を得ることができる。
実施例1ではSRおよびGRの情報の複写が正しく行われたかを確認する方法が無い。その為、複写時にデータの変化が発生した場合、CPUが処理を再開した後に、ロックステップエラーが発生する事になる。一方、実施例3ではSRおよびGRの情報に加えて誤り検出情報を付加して複写を行う事で、正しく複写処理が行われた事を確認する事が可能になり、SRおよびGRの情報の複写時の品質を向上させる事が可能になる。
次に、図13-図15を用いて、実施例4を説明する。
図13は、実施例4に係るCPUブロックの構成例とシーケンス制御回路の構成例とを説明する図である。図14は、図13のCPUブロックおよびシーケンス制御回路の動作を説明する図である。実施例4の構成例(図13)が実施例1の構成例(図3)と異なる点は、実施例4の構成例(図13)に、以下の1)-3)が設けられた点である。
1)第1のCPU(CPU1)と第2のCPU(CPU2)SRやGRに、SIポートの有効データを表す信号SENIと、SOポートの有効データを表す信号SENOとが設けられている点と、
2)シフト制御回路の出力とSIとの間の経路上、および、SOとシフト制御回路の入力との間の経路上に、1または複数のフリップフロップ回路(F)が設けられている点と、
3)システムレジスタ(SR)および汎用レジスタ(GR)の情報の誤り情報を検出するCRC(Cyclic Redundancy Check)回路(巡回冗長検査回路)が設けられている点と、である。つまり、実施例4の構成例(図13)は、実施例2の構成例と実施例3の構成例をどちらも採用したものである。
2)シフト制御回路の出力とSIとの間の経路上、および、SOとシフト制御回路の入力との間の経路上に、1または複数のフリップフロップ回路(F)が設けられている点と、
3)システムレジスタ(SR)および汎用レジスタ(GR)の情報の誤り情報を検出するCRC(Cyclic Redundancy Check)回路(巡回冗長検査回路)が設けられている点と、である。つまり、実施例4の構成例(図13)は、実施例2の構成例と実施例3の構成例をどちらも採用したものである。
実施例4のシステムレジスタ(SR)や汎用レジスタ(GR)の構成例は、実施例1~実施例3で採用したシステムレジスタ(SR)や汎用レジスタ(GR)の構成例とは異なる構成を採用している。図15は、実施例4に係るSRとGRの構成例および複写動作を説明する図である。
図15に示すように、SRやGRは、通常動作時にレジスタに書き込みを行うライトデータ(WD)ポートと、通常動作時にレジスタから読み出しを行うリードデータ(RD)ポートと、シフト制御回路からシフト動作の制御を行うシフトモード(SM)ポートと、レジスタ情報の複写を行うシリアル入力ポート(SI)とシリアル出力ポート(SO)と、SIポートの有効データを表す信号SENIと、SOポートの有効データを表す信号SENOと、SIポートのデータおよびSOポートのデータを制御するシフト制御回路と、CRC検算回路CRCCと、CRC生成回路CRCGと、を含む。
実施例4の動作を図14に示す。実施例4の基本的な動作は実施例3の動作と同じである。実施例4の動作が実施例3の動作と異なる点は、正常CPUからSRやGRの情報と誤り検出情報を出力するが、これらの情報を受け取るのは故障CPUのみであり、正常CPUのSRやGRの情報はCPUが停止した状態を保持するという点である。
実施例4によれば、以下の効果を得ることができる。
実施例1~実施例3では、正常CPUから出力されるSRやGRの情報を正常CPUと故障CPUどちらも受け取る動作をする。これに対して、実施例4では、正常CPUのSRやGRの情報を選択して出力する事で、停止した際の状態を維持する事が可能になる。
次に、図16を用いて、実施例5を説明する。
図16は、実施例5に係る2つのCPUコアブロックの構成例とシーケンス制御回路の構成例とを説明する図である。
実施例5には、第1のCPUコアブロック1CB1、第2のCPUコアブロック2CB2、シーケンス制御回路SEおよびクロックリセット制御回路CRGが描かれている。第1のCPUコアブロック1CB1は、第1のCPUコア(CPU1)と第2のCPUコア(CPU2)と第1のロックステップ制御回路部(LS1)とを有する。第2のCPUコアブロック2CB2は、第3のCPUコア(CPU3)と第4のCPUコア(CPU4)と第2のロックステップ制御回路部(LS2)とを有する。シーケンス制御回路SEは、システムレジスタ(SR)と汎用レジスタ(GR)の情報を複写するために利用される。クロックリセット制御回路CRGは、クロック信号の生成およびリセット信号の生成を行う。
CPUコアブロック1CB1の構成およびCPUコアブロック2CB2の構成は、実施例2、もしくは、実施例4のCPUコアブロックCBの構成を採用することができる。CPUコアブロック1CB1の構成やCPUコアブロック2CB2の構成として、実施例1および実施例3のCPUコアブロックCBの構成も考えられるが、物理的は配置制約を考えると非現実的である。
実施例5の動作が実施例1~実施例4の動作と異なる部分を説明する。実施例1~実施例4では正常CPUのSRやGRの情報を同一コアブロック(CB1又はCB2)内の故障CPUに対して複写する構成である。一方、実施例5では、正常CPUのSRやGRの情報を異なるCPUコアブロック(CB1又はCB2)内の2個のCPU(CPU1とCPU2、または、CPU3とCPU4)のSRやGRに対して複写する。例えば、CPUコアブロック1CB1のCPU1が正常CPUとされ、CPUコアブロック1CB2のCPU2がSW故障の故障CPUとされた場合、CPUコアブロック1CB1のCPU1のSRやGRの情報を、CPU2のSRやGR、および、CPUコアブロック2CB2の2個のCPUコア(CPU3、CPU4)のSRやGRに対して複写する。
実施例5によれば、以下の効果を得ることができる。
実施例5では、SRやGRの情報の複写対象を別コアブロック内のCPUに拡張するものである。ロックステップ処理実行中にCPU2の故障が発生した場合、その故障がSW故障(修復可能な故障)であれば、正常CPU1のSRやGRの情報を故障CPU2のSRやGRへ複写するとともに、CPU3およびCPU4のSRやGRへも複写する事で、CPU1とCPU2のロックステップ動作およびCPU3およびCPU4のロックステップ動作を継続したままCPU1~CPU4が実行を再開する事が可能になり、半導体装置の信頼性向上を実現出来る。
実施例1~実施例5に対して、複写対象情報を以下の通り拡張する構成も考えられる。
複写対象の情報には、以下の情報1)~4)を含ませることができる。
1)システムレジスタ(SR)および汎用レジスタ(GR)の情報
2)パイプライン情報
3)各パイプラインステージに保持されている命令やフラグの情報
4)各パイプラインステージ内のステート情報
実施例6では、複写対象の情報を拡張する事で、故障が発生するまでのソフトウエア資源の有効活用が可能になる。ここでは、CPUのパイプライン内の情報も一種のソフトウエア資源として捉えている。
複写対象の情報には、以下の情報1)~4)を含ませることができる。
1)システムレジスタ(SR)および汎用レジスタ(GR)の情報
2)パイプライン情報
3)各パイプラインステージに保持されている命令やフラグの情報
4)各パイプラインステージ内のステート情報
実施例6では、複写対象の情報を拡張する事で、故障が発生するまでのソフトウエア資源の有効活用が可能になる。ここでは、CPUのパイプライン内の情報も一種のソフトウエア資源として捉えている。
複写対象の情報には、CPU1やCPU2内の全FFの情報を含ませることができる。
実施例7では、CPU内の全FFの情報を複写する事が出来る為、ロックステップ処理再開の制御が不要になる。また、実施例7の構成を適用する事で、ロックステップ比較回路のテスト用システムレジスタを活用できるので、電源投入時のテスト品質を向上する事が可能になる。
図17は、実施例8に係るロックステップ処理再開制御の動作を示す図である。
実施例1~実施例5に対して、ロックステップ処理再開制御を以下の通り拡張する構成も考えられる。図8に示すように、ハイレベル“H”となる3つの信号100、101、102でロックステップ処理の再開を制御する。ロックステップ処理(比較)を行うインターフェースをパイプラインステージ毎にグループ化(この例では、3つにグループ化)し、再開後の最初の命令がパイプラインを進むに従い、グループ化されたインターフェースに対してロックステップ処理を再開する。
また、実施例6と実施例8とを組み合わせる事で、ロックステップ処理再開までの期間を短縮する事も可能となる。
実施例9は、ロックステップの対象がCPU以外である場合の一例として、インターコネクトをロックステップの対象とする場合を説明する。実施例9の構成は実施例1の構成に対して、ロックステップ動作する多重化された部分がCPUコアではなくインターコネクトとなるものである。また、実施例9の動作は実施例1の動作と基本的に同じである。
図18は、実施例9に係るインターコネクトの構成例を示す図である。図19は、実施例9に係るインターコネクトブロクの構成例とシーケンス制御回路の構成例とを説明する図である。図20は、図19のインターコネクトブロックおよびシーケンス制御回路の動作を説明する図である。
図18に示すように、インターコネクトICCは、一例として、各種プロトコルに対応するマスタインターフェースMIFやスレーブインターフェースSIF、ルータによるルーティングやアビータによるアービトレーションを担うクロスバースイッチXBSW1,XBSW2、レイテンシやスループットを監視および制御するQoS(Quality of Service)、クロスバースイッチXBSW1,XBSW2とに間に結合され、インターコネクトICC内でパケット情報を保持するバッファBF1を含むブリッジBG、デバッグに必要な情報を保持するバッファBF2を含むとともに、デバッグに必要な情報を出力するトレースTS、などから構成することができる。
図19には、インターコネクトブロックICBと、シーケンス制御回路SEと、クロックリセット制御回路CRGとが描かれている。インターコネクトブロックICBは、第1インターコネクトICC1と、第2インターコネクトICC2と、ロックステップ制御部LSCと含む。第1インターコネクトICC1と第2インターコネクトICC2のおのおのは、図18に示すインターコネクトICCと、内部情報を入出力するシリアル入力ポート(SI)とシリアル出力ポート(SO)と、対応するインターコネクト(ICC1,ICC2)が正しく動作している事を監視しないしチェックする動作監視回路OMOと、対応するインターコネクト(ICC1,ICC2)の故障種別を判定する故障診断回路FDIと、を含む。
シーケンス制御回路SEは、動作監視回路OMOからの情報で故障インターコネクトを判定し、ロールバック処理を行う故障対象判定回路30Aと、故障診断回路FDIからの情報で故障種別を判定する故障種別判定回路(または、故障種別診断回路)31Aと、内部情報を正常インターコネクトから故障インターコネクトへ複写するシフト制御回路32と、ロックステップ(LS)処理の再開のタイミングを制御するLS再開制御回路33と、クロックの停止および再開を制御するクロック制御回路34と、を含む。ここでは、正常インターコネクトとは正常動作しているインターコネクトICCを意味しており、故障インターコネクトとはSW故障したインターコネクトICCを意味している。
図20に示すように、ロックステップ処理実行中の第1インターコネクトICC1および第2インターコネクトICC2はそれぞれ処理1、処理2、処理3を実行するものとする。
各処理1、2、3の実行を動作監視回路OMOがチェックし、処理1、2、3毎にICC1およびICC2の正常動作またはICC1およびICC2の異常動作を判定する。
ここで、例えば、ICC1が処理3を実行した際に、動作監視回路OMOが異常動作を検知し、シーケンス制御回路SEに通知するものとする。
異常動作が通知されると、シーケンス制御回路SEの内部のクロック制御回路34がクロックを停止する事で、ICC1およびICC2の動作を停止させる。また、同時に、ロックステップ処理を停止する。
異常動作が通知されると、シーケンス制御回路SEの内部の故障対象判定回路30Aが異常動作を通知したICC1を判定し、故障種別判定回路31Aに故障インターコネクト情報を通知する。
故障インターコネクト情報が通知されると、故障種別判定回路31Aは故障インターコネクト(ここではICC1)の故障診断回路FDIに対して、診断開始を指示する。
診断開始が指示されると、故障診断回路FDIは、SW故障やHW故障の判定のため、機能ブロック毎に予め決められた所定のテストシーケンスを実行する。そして、故障診断回路FDIはSW故障やHW故障の判定を行い、診断結果を故障種別判定回路31Aに通知する。故障種別判定回路31Aは、診断結果がSW故障であった場合、その結果をシフト制御回路32に通知する。シーケンス制御回路SEは、診断結果がHW故障であった場合、正常インターコネクトのみで処理を継続する。
以下では、診断結果がSW故障であった場合を想定し、動作説明を行う。
SW故障が通知されると、故障種別判定回路31Aはシフト制御回路32に対して判定結果を通知する。SW故障が通知されると、シフト制御回路32は内部情報を入出力するシリアル入力ポート(SI)とシリアル出力ポート(SO)に対して内部情報のシフト制御を開始する。
シフト制御回路32は、正常インターコネクト(ここではICC2)のSOポートから内部情報を、読み出す。その後、読み出した内部情報をICC1およびICC2の各SIポートから書き込む。
その後、図20に示すように、内部情報の複写処理が完了すると、シフト制御回路32はクロック制御回路34に対して複写完了を通知する。
複写完了が通知されると、クロック制御回路34はICC1やICC2に対してクロックCKの供給を開始する。
クロック供給開始後、ロックステップ比較の不感期間(無効な情報が出ている期間)情報を用いて、LS再開制御回路33がロックステップ処理を再開する。
インターコネクトが扱うパケット情報(アドレスやデータなど)に対して、ECCを用いる事で誤りを訂正する方法が知られている。しかし、ECCはデータ自体の誤りしか訂正できず、ルーティング/アービトレーションなどの故障を修復する事は出来ない。
実施例9に示すように、ロックステップ動作をするインターコネクトの一方が故障した場合に、その故障がSW故障であるならば、正常動作しているインターコネクトが保持している内部情報を、SW故障したインターコネクトに複写する事で、ロックステップ動作を停止する事無く処理を継続する事が出来る。これにより、ロックステップ方式で多重化動作するインターコネクトにおいて、従来技術では修復できなかった故障(例えば、ルーティング/アービトレーションなどの故障)を修復する事が可能になる。
実施例10では、ロックステップ方式で多重化動作する対象が三重化されたCPU(CPU1,CPU2,CPU3)の例を示す。図21は、実施例10に係るCPUブロックの構成例とシーケンス制御回路の構成例とを説明する図である。図22は、図21のCPUブロックの構成例とシーケンス制御回路の構成例との動作を説明する図である。図23は、SRやGRの構成例および複写動作を説明する図である。
図21には、CPUコアブロックCBと、シーケンス制御回路SEと、クロックリセット制御回路CRGとが描かれている。
CPUブロックCB1は、第1のCPU(以下、CPU1と言う)、第2のCPU(以下、CPU2と言う)、第3のCPU(以下、CPU3と言う)と、ロックステップ制御部LSCと、を含む。CPU1とCPU2とCPU3のおのおのは、システムレジスタ(以下、SRという)と汎用レジスタ(以下、GRという)とを有する。GRの値およびSRの値は、CPUコア(CPU1、CPU2、または、CPU3)が保持しているコンテンツ情報と見なすことができる。ロックステップ制御ブロックLSCは、ロックステップ動作においてロックステップ比較動作を実施する回路である。
CPU1とCPU2とCPU3のおのおのは、SRおよびGRの保持情報を入出力するシリアル入力ポート(SI)とシリアル出力ポート(SO)と、故障種別を判定する故障診断回路FDIと、を含む。
シーケンス制御回路SEは、GRの値およびSRの値(GRおよびSRの保持情報)を複写するために設けられる。クロックリセット制御回路CRGは、クロック信号の生成およびリセット信号の生成を行う。
シーケンス制御部SEは、ロックステップ制御ブロックLSCのLS比較回路からの情報で故障CPUを判定し、ロールバック処理を行う故障CPU判定回路30と、故障診断回路FDIからの情報で故障種別を判定する故障種別判定回路(または、故障種別診断回路)31Aと、SRおよびGRの保持情報を正常CPUから故障CPUへ複写するシフト制御回路32と、ロックステップ(LS)処理の再開のタイミングを制御するロックステップ再開制御回路33と、クロックの停止および再開をクロックリセット生成回路CRGへ指示するクロック制御回路34と、を含む。
図22に示すように、ロックステップ方式で実行中のCPU1、CPU2,CPU3のそれぞれ処理1,処理2、処理3,処理4を実行するものとする。各処理の実行をロックステップ制御ブロックLSCのLS比較回路がチェックし、処理毎に正常動作および異常動作を判定する。
ここで、CPU1が処理4を実行した際に、CPU1が誤動作して処理4’を実行し、LS比較回路が異常動作を検知し、シーケンス制御部SEに通知する場合を説明する。
シーケンス制御部SEに異常動作が通知されると、シーケンス制御部SE内のクロック制御部34がクロックリセット生成回路CRGにクロック停止を通知する事で、CPU1、CPU2,CPU3の動作を停止する。また、それと同時にロックステップ処理を停止する。
シーケンス制御部SEに異常動作が通知されると、シーケンス制御部SE内の故障CPU判定回路30が異常動作を通知したCPUを判定し、必要であれば、メモリブロックMB/周辺ブロックPEに対してロールバック処理を実行する。また、故障CPU判定回路30は、それと同時に、故障種別判定回路31Aに故障CPU情報を通知する。
故障種別判定回路31Aに故障CPU情報が通知されると、故障種別判定回路31Aは故障CPU(ここでは、CPU1)の故障診断回路FDIに対して診断開始を通知する。
CPU1の故障診断回路FDIに対して診断開始が指示されると、故障診断回路FDIは、SW故障やHW故障の判定のため、機能ブロック毎に予め決められたテストシーケンスを実行する。そして、故障診断回路FDIは、SW故障やHW故障の判定を行い、判定結果をシーケンス制御回路SEに通知する。
シーケンス制御回路SEは、診断結果がSW故障であった場合、その結果をシフト制御回路32に通知する。シーケンス制御回路SEは、診断結果がHW故障であった場合、正常CPUのみで処理を継続する。
以下、実施例10では、診断結果がSW故障であった場合を想定し、動作説明を行う。
SW故障が通知されると、SW故障判定回路31はシフト制御回路32に対して判定結果を通知する。SW故障が通知されると、シフト制御回路32はシステムレジスタ(SR)と汎用レジスタ(GR)に対してシフト制御を開始する。
シフト制御回路32は、正常CPU(ここではCPU2)のSOポートからシステムレジスタ(SR)と汎用レジスタ(GR)のそれぞれの保持情報を、読み出す。その後、読み出したコンテンツ情報をCPU1、CPU2およびCPU3の各SIポートからシステムレジスタ(SR)や汎用レジスタ(GR)に書き込む。
図23は、SRやGRの構成例および複写動作を説明する図である。ここでは、説明を簡単にするために、レジスタ(SRやGR)のビット長の構成を4bitで表現しているが、実際のSRやGRのビット長は32bitや64bitで構成されている。
SRやGRは、通常動作時にレジスタに書き込みを行うライトデータ(WD)ポートと、通常動作時にレジスタから読み出しを行うリードデータ(RD)ポートと、シフト制御回路からシフト動作の制御を行うシフトモード(SM)ポートと、レジスタ情報の複写を行うSIポートおよびSOポートと、を含む。
シフト制御回路32はSMポートをハイレベル“H”にする事で、SIポートから入力されるデータをシフトクロックSCKに従って順次各bitにセットする。
図22に示すように、SRやGRの複写処理が完了すると、シフト制御回路32はクロック制御回路34に対して複写完了を通知する。
複写完了が通知されると、クロック制御回路34はCPU1、CPU2、CPU3に対してクロックCKの供給を開始する。
クロック供給開始後、ロックステップ比較の不感期間(無効な情報が出ている期間)情報を用いて、LS再開制御回路33がロックステップ処理を再開する。ロックステップ比較の不感期間(無効な情報が出ている期間)は実施例1と基本的に同じである。
実施例1~実施例5では、二重化モジュール(CPU)を対象としている。これに対して、実施例10では三重化モジュール(CPU)を対象とする事で、ロックステップ動作を行っている多重化(三重化以上)モジュールに於けるロックステップ動作を継続する事が可能になる。
以上、本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は、上記実施形態および実施例に限定されるものではなく、種々変更可能であることはいうまでもない。
1:半導体装置
CB:CPUブロック
CB1:CPUブロック1
CB2:CPUブロック2
CPU1:第1のCPUコア
CPU2:第2のCPUコア
LSC:ロックステップ制御回路(LS回路)
SR:システムレジスタ
GR:汎用レジスタ
SE:シーケンス制御回路
CRG:クロックリセット生成回路
RDI:レプリカ診断回路
SI:シリアル入力ポート
SO:シリアル出力ポート
SDI:自己診断回路
30:故障CPU判定回路
31:SW故障判定回路
32:シフト制御回路
33:LS再開制御回路
34:クロック制御回路
CB:CPUブロック
CB1:CPUブロック1
CB2:CPUブロック2
CPU1:第1のCPUコア
CPU2:第2のCPUコア
LSC:ロックステップ制御回路(LS回路)
SR:システムレジスタ
GR:汎用レジスタ
SE:シーケンス制御回路
CRG:クロックリセット生成回路
RDI:レプリカ診断回路
SI:シリアル入力ポート
SO:シリアル出力ポート
SDI:自己診断回路
30:故障CPU判定回路
31:SW故障判定回路
32:シフト制御回路
33:LS再開制御回路
34:クロック制御回路
Claims (7)
- 半導体装置は、
ロックステップ動作を行う第1のCPU及び第2のCPUを含む演算部と、
シーケンス制御回路と、を有し、
前記第1のCPU及び前記第2のCPUのそれぞれは、
システムレジスタ(SR)および汎用レジスタ(GR)と、
対応するCPUが正しく動作している事をチェックするレプリカ診断回路と、
前記SRおよび前記GRの保持情報を入力する入力ポートと、
前記SRおよび前記GRの保持情報を出力する出力ポートと、
故障種別を判定する自己診断回路と、を有し、
前記演算部は、ロックステップ動作において比較動作を行うロックステップ制御回路を含み、
前記シーケンス制御回路は、
前記レプリカ診断回路からの情報で故障CPUを判定し、ロールバック処理を行う故障CPU判定回路と、
前記自己診断回路からの情報で故障種別を判定するソフトウエア(SW)故障判定回路と、
正常に動作する正常CPUの前記SRおよび前記GRの保持情報を故障した故障CPUの前記SRおよび前記GRへ複写するシフト制御回路と、を含み、
前記シーケンス制御回路は、前記SW故障判定回路が前記故障CPUの故障種別をSW故障と判断した場合、前記第1のCPUおよび前記第2のCPUの一方である前記正常CPUの前記SRおよび前記GRの保持情報を、前記第1のCPUおよび前記第2のCPUの他方の前記SW故障と判断された前記故障CPUの前記SRおよび前記GRへ複写して、ロックステップ動作による処理を継続させる、半導体装置。 - 請求項1の半導体装置において、
前記シーケンス制御回路は、前記SW故障判定回路が前記故障CPUの故障種別をハードウエア(HW)故障と判断した場合、前記第1のCPUおよび前記第2のCPUの他方である前記HW故障と判断した前記故障CPUを停止し、前記第1のCPUおよび前記第2のCPUの一方である前記正常CPUのみで処理を継続させる、半導体装置。 - 請求項2の半導体装置において、
前記シーケンス制御回路は、
ロックステップ動作の再開のタイミングを制御するロックステップ再開制御回路を有し、
前記第1のCPU及び前記第2のCPUのそれぞれが出力する有効データを表す信号を判定し、前記ロックステップ制御回路による比較動作の開始を制御する、半導体装置。 - 請求項2の半導体装置において、
前記シフト制御回路の入力と前記出力ポートとの間の経路および前記シフト制御回路の出力と前記入力ポートの間の経路に設けられフリップフロップ回路を有する、半導体装置。 - 請求項2の半導体装置において、
前記第1のCPU及び前記第2のCPUのそれぞれは、前記SRおよび前記GRの保持情報に対して、誤り検出情報を生成し、前記SRおよび前記GRの前記保持情報の最後に前記誤り検出情報を付加して出力する第1巡回冗長検査回路を含み、
前記シフト制御回路は、前記故障CPUに複写される前記SRおよび前記GRの情報と前記誤り検出情報とで検算を行い、結果を前記シーケンス制御回路へ通知する第2巡回冗長検査回路を含む、半導体装置。 - 請求項5の半導体装置において、
前記シフト制御回路の入力と前記出力ポートとの間の経路および前記シフト制御回路の出力と前記入力ポートの間の経路に設けられフリップフロップ回路を有する、半導体装置。 - 請求項1の半導体装置において、
ロックステップ動作を行う第3のCPU及び第4のCPUを含む演算部、さらに、有し、
前記第3のCPU及び前記第4のCPUのそれぞれは、
システムレジスタ(SR)および汎用レジスタ(GR)と、
対応するCPUが正しく動作している事をチェックするレプリカ診断回路と、
前記SRおよび前記GRの保持情報を入力する入力ポートと、
前記SRおよび前記GRの保持情報を出力する出力ポートと、
故障種別を判定する自己診断回路と、を含み、
前記シーケンス制御回路は、前記SW故障判定回路が前記故障CPUの故障種別をSW故障と判断した場合、前記第1のCPUおよび前記第2のCPUの一方である前記正常CPUの前記SRおよび前記GRの保持情報を、前記第1のCPUおよび前記第2のCPUの他方の前記SW故障と判断された前記故障CPUの前記SRおよび前記GR、および、前記第3のCPUおよび前記第4のCPUの前記SRおよび前記GRへ複写して、ロックステップ動作による処理を継続させる、半導体装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021142815A JP2023035739A (ja) | 2021-09-01 | 2021-09-01 | 半導体装置 |
US17/878,256 US20230064905A1 (en) | 2021-09-01 | 2022-08-01 | Semiconductor device |
CN202210999952.3A CN115729735A (zh) | 2021-09-01 | 2022-08-19 | 半导体装置 |
DE102022121708.6A DE102022121708A1 (de) | 2021-09-01 | 2022-08-26 | Halbleitervorrichtung |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021142815A JP2023035739A (ja) | 2021-09-01 | 2021-09-01 | 半導体装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023035739A true JP2023035739A (ja) | 2023-03-13 |
Family
ID=85175169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021142815A Pending JP2023035739A (ja) | 2021-09-01 | 2021-09-01 | 半導体装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230064905A1 (ja) |
JP (1) | JP2023035739A (ja) |
CN (1) | CN115729735A (ja) |
DE (1) | DE102022121708A1 (ja) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625749B1 (en) * | 1999-12-21 | 2003-09-23 | Intel Corporation | Firmware mechanism for correcting soft errors |
JP6312550B2 (ja) | 2014-08-01 | 2018-04-18 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
GB2567190B (en) * | 2017-10-05 | 2020-02-26 | Advanced Risc Mach Ltd | Error recovery for intra-core lockstep mode |
US10802932B2 (en) * | 2017-12-04 | 2020-10-13 | Nxp Usa, Inc. | Data processing system having lockstep operation |
CN112015599B (zh) * | 2019-05-31 | 2022-05-13 | 华为技术有限公司 | 错误恢复的方法和装置 |
JP2021142815A (ja) | 2020-03-11 | 2021-09-24 | 三菱自動車工業株式会社 | 車両前部構造 |
-
2021
- 2021-09-01 JP JP2021142815A patent/JP2023035739A/ja active Pending
-
2022
- 2022-08-01 US US17/878,256 patent/US20230064905A1/en not_active Abandoned
- 2022-08-19 CN CN202210999952.3A patent/CN115729735A/zh active Pending
- 2022-08-26 DE DE102022121708.6A patent/DE102022121708A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102022121708A1 (de) | 2023-03-02 |
CN115729735A (zh) | 2023-03-03 |
US20230064905A1 (en) | 2023-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI502376B (zh) | 多處理器資料處理系統中之錯誤偵測之方法及系統 | |
CN101271417B (zh) | 修复数据处理系统的方法、数据处理系统及信息处置系统 | |
US7627781B2 (en) | System and method for establishing a spare processor for recovering from loss of lockstep in a boot processor | |
JP3229070B2 (ja) | 多数決回路及び制御ユニット及び多数決用半導体集積回路 | |
JP6266239B2 (ja) | マイクロコンピュータ | |
US20090044044A1 (en) | Device and method for correcting errors in a system having at least two execution units having registers | |
WO2009090502A1 (en) | Processor based system having ecc based check and access validation information means | |
US7590885B2 (en) | Method and system of copying memory from a source processor to a target processor by duplicating memory writes | |
JPH07129426A (ja) | 障害処理方式 | |
US7308566B2 (en) | System and method for configuring lockstep mode of a processor module | |
US7966536B2 (en) | Method and apparatus for automatic scan completion in the event of a system checkstop | |
US7366948B2 (en) | System and method for maintaining in a multi-processor system a spare processor that is in lockstep for use in recovering from loss of lockstep for another processor | |
US20090119540A1 (en) | Device and method for performing switchover operations in a computer system having at least two execution units | |
CN220983766U (zh) | 用于双核锁步的周期故障检测修复电路 | |
US7502958B2 (en) | System and method for providing firmware recoverable lockstep protection | |
US20070067677A1 (en) | Program-controlled unit and method | |
US20080313384A1 (en) | Method and Device for Separating the Processing of Program Code in a Computer System Having at Least Two Execution Units | |
JP2023035739A (ja) | 半導体装置 | |
US7356733B2 (en) | System and method for system firmware causing an operating system to idle a processor | |
US7624302B2 (en) | System and method for switching the role of boot processor to a spare processor responsive to detection of loss of lockstep in a boot processor | |
JPH0916535A (ja) | マルチプロセッサ計算機 | |
US9542266B2 (en) | Semiconductor integrated circuit and method of processing in semiconductor integrated circuit | |
JP6588068B2 (ja) | マイクロコンピュータ | |
US7818614B2 (en) | System and method for reintroducing a processor module to an operating system after lockstep recovery | |
US11831337B2 (en) | Semiconductor device and error detection methods |