JP6312550B2 - 半導体装置 - Google Patents

半導体装置 Download PDF

Info

Publication number
JP6312550B2
JP6312550B2 JP2014157653A JP2014157653A JP6312550B2 JP 6312550 B2 JP6312550 B2 JP 6312550B2 JP 2014157653 A JP2014157653 A JP 2014157653A JP 2014157653 A JP2014157653 A JP 2014157653A JP 6312550 B2 JP6312550 B2 JP 6312550B2
Authority
JP
Japan
Prior art keywords
circuit
data
cpu core
arithmetic unit
output
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
JP2014157653A
Other languages
English (en)
Other versions
JP2016035626A (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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2014157653A priority Critical patent/JP6312550B2/ja
Priority to US14/801,825 priority patent/US9734023B2/en
Publication of JP2016035626A publication Critical patent/JP2016035626A/ja
Priority to US15/645,002 priority patent/US10365979B2/en
Application granted granted Critical
Publication of JP6312550B2 publication Critical patent/JP6312550B2/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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/165Error detection by comparing the output of redundant processing systems with continued operation after detection of the error
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • G06F11/1645Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components and the comparison itself uses redundant 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1695Error detection or correction of the data by redundancy in hardware which are operating with time diversity
    • 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

Description

本発明は半導体装置に関し、例えば複数のCPUコアに同じ処理を並列して実行させるロックステップ動作を行う半導体装置に関する。
近年、半導体装置の高信頼化技術の1つとして、2つのCPU(Central Processing Unit)コアを同一サイクルで動作させ、かつ、2つのCPUコアに同一の処理を実行させるロックステップ型プロセッサが提案されている。そこロックステップ型プロセッサに関する技術が特許文献1、2に開示されている。
特許文献1では、プロセッサと、誤り検出・訂正機能を有するメモリとが含まれる複数系のCPUモジュールがクロック同期して同一の処理を行うロックステップ方式の情報処理装置を開示している。そして、特許文献1の情報処理装置では、CPUモジュールが、自系のメモリから誤りが検出された場合に生成される第1の訂正情報を記憶し、生成された第1の訂正情報を他系のCPUモジュールに送信し、他系のCPUモジュールのメモリが誤りを検出した場合に送信される第2の訂正情報を受信し、他系のCPUモジュールから第2の訂正情報を受信した遅延に応じて、記憶部に記憶されている第1の訂正情報を読み出し、第2の訂正情報と第1の訂正情報とを同期してエラー訂正処理を行う。
また、特許文献2では、一方のCPUコアの出力を遅延回路で遅延させ、かつ、他方のCPUコアの入力を遅延回路で遅延させることでクリティカルパスのタイミング制約を緩和するディレイドロックステップ方式のロックステップ型プロセッサが開示されている。
特開2012−73828号公報 米国特許出願公開第2008/0244305号明細書
しかしながら、特許文献1、2に開示されたプロセッサでは、CPUコアを構成するハードウェアが故障した場合には動作を継続することができず、信頼性を十分に向上させることができない問題がある。その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
一実施の形態によれば、半導体装置は、ロックステップ動作を行う第1のCPUコア及び第2のCPUコアを含む演算部を有し、第1のCPUコア及び第2のCPUコアのそれぞれが内部の論理回路の故障を診断し、シーケンス制御回路が当該診断結果に基づき演算部において共有リソースにデータを出力するCPUコアを切り替えるものである。
なお、上記実施の形態の装置を方法やシステムに置き換えて表現したもの、該装置又は該装置の一部の処理をコンピュータに実行せしめるプログラムなども、本発明の態様としては有効である。
前記一実施の形態によれば、半導体装置は、ハードウェアの故障に対して高い信頼性を確保できる。
実施の形態1にかかる半導体装置のブロック図である。 実施の形態1にかかる半導体装置の詳細なブロック図である。 実施の形態1にかかるCPUコアのブロック図である。 実施の形態1にかかる組み合わせ論理回路に設けられるレプリカ診断回路のブロック図である。 実施の形態1にかかる周辺回路群のブロック図である。 実施の形態1にかかる共有メモリのブロック図である。 実施の形態1にかかる共有メモリのブロック図である。 実施の形態1にかかる半導体装置の動作を説明するタイミングチャートである。 実施の形態1にかかる半導体装置のデータキャンセル時の動作を説明するタイミングチャートである。 実施の形態2にかかる半導体装置のブロック図である。 実施の形態2にかかる半導体装置の詳細なブロック図である。 実施の形態2にかかる共有メモリのブロック図である。 実施の形態2にかかる半導体装置の動作を説明するタイミングチャートである。 実施の形態2にかかる半導体装置の動作を説明するブロック図である。 実施の形態2にかかる半導体装置の動作を説明するブロック図である。 実施の形態2にかかる半導体装置における書込キャンセル後のレジスタの状態を説明するタイミングチャートである。
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non−transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
図1に実施の形態1にかかる半導体装置1のブロック図を示す。図1に示すように、実施の形態1にかかる半導体装置1は、演算部10、共有メモリ14、周辺回路群15、シーケンス制御回路16、クロック生成回路17を有する。
演算部10は、第1の演算器(例えば、第1のCPUコア11)、第2の演算器(例えば、第2のCPUコア12)、データ論理回路13を有する。第1のCPUコア11と第2のCPUコア12は同じ処理を多重化して実行するロックステップ動作を行う演算器である。また、詳しくは後述するが、第1のCPUコア11、及び、第2のCPUコア12は、内部の論理回路で生じた故障の有無を示す診断情報を出力する機能を有する。データ論理回路13は、第1のCPUコア11、及び、第2のCPUコア12に対するデータ入出力パスに設けられる論理回路である。データ論理回路13の詳細についても後述する。
共有メモリ14は、命令キャッシュ14a、データキャッシュ14b、高速RAM14c、マルチサイクルRAM14d、フラッシュメモリ14eを含む。共有メモリ14は、第1のCPUコア11及び第2のCPUコア12が共通して利用する共有リソースの1つである。また、上記したメモリは一例であり、共有メモリ14は、上記のメモリの一部だけが設けられていても良く、上記のメモリ以外の他のメモリが含まれていても良い。
周辺回路群15は、割り込み回路15a、UART(Universal Asynchronous Receiver Transmitter)インタフェース15b、CAN(Controller Area Network)インタフェース15c、アナログデジタル変換器15d、デジタルアナログ変換器15e、タイマ15f、ウォッチドッグタイマ15g、GPIO(General Purpose Input/Output)インタフェース15hを含む。周辺回路群15は、共有リソースの1つである。また、上記した周辺回路は一例であり、周辺回路群15は、上記の周辺回路の一部だけが設けられていても良く、上記の周辺回路以外の他の周辺回路が含まれていても良い。
なお、共有メモリ14及び周辺回路群15は、いずれも共有リソースであり、少なくとも一方が設けられていればよい。
シーケンス制御回路16は、演算部10、共有メモリ14、周辺回路群15、クロック生成回路17の動作シーケンスを制御する制御信号を出力する。特に実施の形態1にかかる半導体装置1では、シーケンス制御回路16が、第1のCPUコア11及び第2のCPUコア12が出力する診断情報に基づき故障が発生したと判断された演算器に代えて正常な演算器の出力データを共有リソースに出力させるように制御信号を出力することに特徴の1つを有する。また、実施の形態1にかかる半導体装置1では、シーケンス制御回路16が、診断情報に基づき演算器に故障が発生したと判断された場合に、共有リソースに対して書き込みデータのキャンセルを指示する制御信号(例えば、キャンセル信号)を出力することに特徴の1つを有する。このシーケンス制御回路16の動作を含む半導体装置1の動作については後に詳しく説明する。
クロック生成回路17は、演算部10、共有メモリ14、周辺回路群15、シーケンス制御回路16が利用するクロック信号を生成する。つまり、半導体装置1内に設けられる各ブロックは、クロック生成回路17が生成したクロック信号に基づき同期動作を行う。なお、半導体装置1内には、クロック生成回路17が生成するクロック信号以外のクロック信号に基づき動作する回路が含まれていても良い。
また、実施の形態1にかかる半導体装置1では、演算部10と共有メモリ14とが第1のバスBUS1により接続され、演算部10と周辺回路群15とが第2のバスBUS2により接続される構成を有する。実施の形態1にかかる半導体装置1では、シーケンス制御回路16と共有メモリ14とが第1のバスBUS1を介して接続され、シーケンス制御回路16と周辺回路群15が第2のバスBUS2により接続される。また、シーケンス制御回路16は、バスを介さずに、演算部10及びクロック生成回路17と直接信号の送受信を行う。
実施の形態1にかかる半導体装置1では、演算部10及びシーケンス制御回路16の動作に特徴の1つを有するため、図2に演算部10の詳細なブロック図を示し、演算部10について詳細に説明を行う。
図2では、各ブロックを接続するバスは、省略して信号の伝達経路のみを示した。また、図2では、周辺回路群15及び共有メモリ14に含まれるブロックとして個別の回路を示さずに図面を簡略化している。また、図2に示すように、実施の形態1にかかる演算部10は、データ論理回路13として、セレクタ13a、13b、比較器13c、13dを有する。また、図2に示すように、第1のCPUコア11及び第2のCPUコア12は、それぞれ内部に診断回路を有する。
実施の形態1にかかる半導体装置1では、第1のCPUコア11及び第2のCPUコア12として同一構成の回路を利用する。そして、第1のCPUコア11及び第2のCPUコア12は、同一サイクルで、同一の処理を行うロックステップ動作を行う。より具体的には、第1のCPUコア11及び第2のCPUコア12は、処理に応じて、共有メモリ14又は周辺回路群15から命令或いはデータを読み出し、処理を実施する。そして、第1のCPUコア11及び第2のCPUコア12は、処理の結果を周辺回路群15に出力する場合には、セレクタ13aを介して周辺回路群15に処理結果を出力する。また、第1のCPUコア11及び第2のCPUコア12は、処理結果を共有メモリ14に出力する場合には、セレクタ13bを介して共有メモリ14に処理結果を出力する。セレクタ13a、13bが第1のCPUコア11の処理結果を選択するか、第2のCPUコア12の処理結果を選択するか、は、シーケンス制御回路16が出力する選択信号SELにより決まる。シーケンス制御回路16は、初期状態では、第1のCPUコア11と第2のCPUコア12のいずれか一方(例えば、第1のCPUコア11)の処理結果を選択するように選択信号SELを出力する。
ここで、演算部10では、第1のCPUコア11及び第2のCPUコア12の処理結果を、セレクタ13a、13bに伝達すると共に、比較器13c、13dにも伝達する。比較器13c、13dは、第1のCPUコア11の処理結果と、第2のCPUコア12の処理結果とを比較して、2つのCPUコアの処理結果が一致しているか否かを示すエラー信号を出力する。例えば、比較器13cは、2つのCPUコアの処理結果が一致している場合にはエラー信号ERR1をハイレベルとし、2つのCPUコアの処理結果が不一致であった場合にはエラー信号ERR1をロウレベルとする。また、比較器13dは、2つのCPUコアの処理結果が一致している場合にはエラー信号ERR2をハイレベルとし、2つのCPUコアの処理結果が不一致であった場合にはエラー信号ERR2をロウレベルとする。
なお、実施の形態1にかかる半導体装置1では、共有メモリ14にデータを伝達する経路と、周辺回路群15にデータを伝達する経路と、を別々に設けているため、演算部10内のセレクタ及び比較器を2つ設けた。しかし、共有リソースへのデータ伝達経路が1つである構成である場合は、演算部10内のセレクタ及び比較器を1つにすることができる。
また、実施の形態1にかかる第1のCPUコア11及び第2のCPUコア12は、それぞれが内部の論理回路で生じた故障の有無を示す診断情報を出力する。この診断情報は、第1のCPUコア11及び第2のCPUコア12の内部に設けられる診断回路により生成する。より具体的には、第1のCPUコア11は、内部の診断回路により診断情報DIAG1を出力し、第2のCPUコア12は、内部の診断回路により診断情報DIAG2を出力する。この診断回路の詳細は後述する。
また、図2に示すように、共有メモリ14は、演算部10から出力された出力データを一時的に保持するストアバッファを有する。周辺回路群15は、演算部10から出力された出力データに関する処理をキャンセルするキャンセル回路を有する。これら、共有リソースの詳細な構成については後述する。
シーケンス制御回路16は、診断情報に基づき故障が発生したと判断された演算器に代えて正常な演算器の出力データをセレクタに選択させるように選択信号SELを出力する。また、シーケンス制御回路16は、診断情報に基づき、セレクタが選択している演算器に故障が発生したと判断されたことに応じて、共有メモリ14のストアバッファ上のデータのキャンセル及び周辺回路群15内のキャンセル回路へのキャンセル指示を行う。共有リソースに対するキャンセル指示は、キャンセル信号Wcancelにより行う。また、シーケンス制御回路16は、故障が発生した演算器に対して動作の停止を指示すると共に、故障が発生したことにより失われた出力データを回復する回復処理を正常な演算器に指示する。この動作停止指示と回復処理の開始指示は、シーケンス制御回路16から第1のCPUコア11に出力される診断情報DIAG1及びシーケンス制御回路16から第2のCPUコア12に出力される診断情報DIAG2により行う。
シーケンス制御回路16は、診断情報DIAG1、DIAG2に応じて、共有リソースに対するキャンセル指示、第1のCPUコア11及び第2のCPUコア12に対する動作停止指示及び回復処理の開始指示を行う。シーケンス制御回路16は、これらの動作をエラー信号ERR1、ERR2により2つのCPUコアの処理結果に違いが生じたことを認識したことに応じて行う。シーケンス制御回路16の動作を含む半導体装置1の動作の詳細については後述する。
続いて、実施の形態1にかかるCPUコアの詳細について説明する。ここで、実施の形態1にかかる第1のCPUコア11及び第2のCPUコア12は同じ構成であるため、以下では、第1のCPUコア11を例に実施の形態1にかかるCPUコアを説明する。図3に実施の形態1にかかる第1のCPUコア11のブロック図を示す。図3に示すように、第1のCPUコア11は、バスインタフェース21、命令バス22、命令フェッチ部23、デコード部24、実行部25、レジスタ26、データバス27を有する。命令バス22、命令フェッチ部23、デコード部24、実行部25、レジスタ26、データバス27には、論理回路の不具合を診断する診断回路が設けられている。
バスインタフェース21は、命令、データ、診断情報等を他のブロックとの間で入出力するためのインタフェース回路である。命令バス22は、バスインタフェース21を介して取得した命令を命令フェッチ部23に伝達するためのバス回路である。命令バス22には、パリティ診断回路22aを有する。パリティ診断回路22aは、命令バス22の内部のデータパスに伝搬するデータをパリティにより診断することで命令バス22の論理回路の故障を判断する。このパリティ検査により、エラーが検出された場合には、パリティ診断回路22aは、不具合が生じたことを示す診断情報を出力する。
命令フェッチ部23は、図示しないプログラムカウンタの値に従って、共有メモリ14等から命令を読み出す。命令フェッチ部23は、バスインタフェース21及び命令バス22を介して命令の読み出しを行う。また、命令フェッチ部23は、組み合わせ論理回路23a及びアドレス演算器23cを有する。組み合わせ論理回路23aは、具体的な読み出し処理を行うための論理回路である。アドレス演算器23cは、プログラムカウンタのカウント値を参照して読み出し対象の命令が格納されているメモリのアドレスを演算する。
組み合わせ論理回路23aは、レプリカ診断回路23bを有する。レプリカ診断回路23bは、組み合わせ論理回路23aのデータパスに伝搬するデータと当該データのレプリカデータとに基づき論理回路の故障を判断する。レプリカ診断回路23bは、組み合わせ論理回路23aのデータパスに伝搬するデータとレプリカデータとが不一致であった場合に不具合が生じたことを示す診断情報を出力する。
アドレス演算器23cは、診断回路23dを有する。この診断回路23dは、例えば、パリティ診断回路や二重化構成の回路が考えられる。アドレス演算器23cがプログラムカウンタのカウント値を変更しない場合にはパリティ診断回路が適している。アドレス演算器23cがプログラムカウンタのカウント値に対して演算を行う場合には同一構成の2つの回路を用いて同じ演算を実行し、2つの演算結果を比較する二重化構成の回路が適している。
デコード部24は、命令フェッチ部23が取得した命令をデコードして実行部25に具体的な演算を指示する演算命令を生成する。このデコード部24は、具体的な処理を組み合わせ論理回路24a用いて行う。この組み合わせ論理回路24aには、具体的な処理を行う組み合わせ論理回路に加えてレプリカ診断回路24bが設けられている。レプリカ診断回路24bは、レプリカ診断回路23bと同じ機能を発揮するものであり、ここでは説明を省略する。
実行部25は、デコード部24が出力した演算命令に応じて、データに対する演算等を行う。実行部25は、制御論理回路25aと演算器25cとを有する。制御論理回路25aは、デコード部24が出力した演算命令に従って利用する演算器25cを決定すると共に、利用する演算器に対してレジスタ26に格納されたデータを与える。制御論理回路25aは、レプリカ診断回路25bを有する。レプリカ診断回路25bは、レプリカ診断回路23bと同じ機能を発揮するものであり、ここでは説明を省略する。
演算器25cは、デコード部24によって出力された演算命令に従った具体的な演算を行う。演算器25cは、診断回路25dを有する。この診断回路25dは、例えば、パリティ診断回路や二重化構成の回路が考えられる。診断回路としていずれの回路形式を採用するかは演算器の構成によって選択する。
レジスタ26は、実行部25で利用するデータ及び実行部25の演算処理によって得られた演算結果を格納する。レジスタ26は、パリティ診断回路26aを有する。パリティ診断回路26aは、レジスタ26のデータパスを伝搬する入出力データのデータをパリティにより診断することでレジスタ26の論理回路の故障を判断する。このパリティ検査により、エラーが検出された場合には、パリティ診断回路26aは、不具合が生じたことを示す診断情報を出力する。
データバス27は、演算器25cの演算結果によりロード処理が生じた場合にバスインタフェース21を介して共有リソースから指定されたデータを取得して、レジスタ26に格納する。また、データバス27は、演算器25cの演算結果によりストア処理が生じた場合には、レジスタ267に格納された指定のデータをバスインタフェース21を介して共有リソースに出力する。パリティ診断回路27aは、データバス27の内部のデータパスに伝搬するデータをパリティにより診断することでデータバス27の論理回路の故障を判断する。このパリティ検査により、エラーが検出された場合には、パリティ診断回路27aは、不具合が生じたことを示す診断情報を出力する。
このように、実施の形態1にかかるCPUコアは、何らかの診断回路を有する。なお、図3の第1のCPUコア11では、バスインタフェース21に診断回路を設けていないが、バスインタフェース21に何らかの診断回路を設けても良い。ここで、レプリカ診断回路は、回路構成を工夫することによって、処理の簡略化、及び、回路規模の縮小が可能であるため、以下で詳細に説明する。
図4に実施の形態1にかかる組み合わせ論理回路24aに設けられるレプリカ診断回路のブロック図を示す。図4に示すように、組み合わせ論理回路24aは、命令デコーダ30とレプリカ診断回路24bとを有する。命令デコーダ30は、命令を演算命令にデコードするためのデータパスを構成する組合せ回路である。命令デコーダ30は、例えば、10ビットのオペステートと、32ビットのオペコードを入力として100ビットの演算命令を出力する。
レプリカ診断回路24bは、レプリカデコーダ31、チェックサム回路33、フリップフロップ32、34、比較回路35を有する。レプリカデコーダ31は、命令デコーダ30と同じ入力に対して命令デコーダ30の処理結果のチェックサム演算結果を出力する。レプリカデコーダ31の出力は、一旦フリップフロップ32に保持される。チェックサム回路33は、命令デコーダ30が出力する演算命令のチェックサム演算結果を出力する。チェックサム回路33の出力は、一旦フリップフロップ34に保持される。比較回路35は、フリップフロップ32に保持された値と、フリップフロップ34に保持された値と、を比較して、2つの値が不一致だった場合にデコード部24で故障が発生したことを示す診断情報を出力する。
このように、命令デコーダ30が出力する演算命令のチェックサム結果に基づき命令デコーダ30の故障を検出することで、単純に命令デコーダ30の構成を多重化させる場合に比べて比較する値のビット数を削減できる。つまり、実施の形態1にかかるレプリカ診断回路24bを有することで、命令デコーダ30を多重化する場合に比べて回路規模を小さくすることができる。
続いて、共有リソースの1つである周辺回路群15の構成について説明する。周辺回路群15は、周辺回路群15に含まれる周辺回路に対するデータの書き込みをキャンセルするキャンセル回路を含む。そこで、図5に実施の形態1にかかる周辺回路群15のブロック図を示す。
図5に示すように、周辺回路群15は、グループデコーダ群41、フリップフロップ群42、個別論理モジュールデコーダ群43、フリップフロップ群44、個別モジュール45、ステートマシーン46を有する。ここでステートマシーン46がキャンセル回路に相当する。また、図5では、周辺回路をそれぞれ個別論理モジュール(図5のPM10〜PM17、PM20〜PM27、PM30〜PM37)で表した
グループデコーダ群41は、グループデコーダG10、G20、G30を有する。グループデコーダG10は、第1の個別論理モジュール群(例えば、個別論理モジュールF10〜F17)に対応して設けられる。グループデコーダG20は、第2の個別論理モジュール群(例えば、個別論理モジュールF20〜F27)に対応して設けられる。グループデコーダG30は、第3の個別論理モジュール群(例えば、個別論理モジュールF30〜F37)に対応して設けられる。グループデコーダG10、G20、G30は、アドレスADRS等を受信し、アドレスの上位ビット側の値に基づき、与えられた指示が自デコーダに対応する個別論理モジュール群のものであるかを判断する。そして、グループデコーダG10、G20、G30は、入力されたアドレス等が自グループデコーダに対応する個別論理モジュールのものであると判断した場合に、アドレスの下位部分とその他の制御信号を後段のフリップフロップ群42に与える。
なお、図5に示す例では、グループデコーダ群41と個別論理モジュールデコーダ群43との間にフリップフロップ群42が設けられている。フリップフロップ群42は、グループデコーダに対応する複数のフリップフロップが設けられている。フリップフロップ群42の複数のフリップフロップは、グループデコーダ群41の出力を一時的に保持してグループデコーダ群41から個別論理モジュールデコーダ群43への信号の伝搬に遅延を与える。
個別論理モジュールデコーダ群43は、個別論理モジュールに対応した個別論理モジュールデコーダF11〜F17、PM20〜PM27、PM30〜PM37を有する。個別論理モジュールデコーダは、グループデコーダが出力したアドレス等を更にデコードして、個別論理モジュールを制御するより具体的なアドレス等を出力する。
なお、図5に示す例では、個別論理モジュールデコーダ群43と個別モジュール45との間にフリップフロップ群44が設けられている。フリップフロップ群44は、個別論理モジュールデコーダに対応する複数のフリップフロップが設けられている。フリップフロップ群44の複数のフリップフロップは、個別論理モジュールデコーダ群43の出力を一時的に保持して個別論理モジュールデコーダ群43から個別モジュール45への信号の伝搬に遅延を与える。
ステートマシーン46は、キャンセル信号Wcancelに応じて、個別モジュール45に書込禁止を指示する制御信号を出力する。ここで、周辺回路群15では、2段のフリップフロップ群を介して個別モジュール45にアドレス等の信号が伝搬する。そのため、周辺回路群15では、キャンセル信号Wcancelが2クロックサイクル前に周辺回路群15に入力されたデータの書き込みをキャンセルすることができる。
続いて、共有リソースの1つである共有メモリ14の構成について詳細に説明する。共有メモリ14は、演算部10から出力された出力データを一時的に保持するストアバッファを有すると共に、キャンセル信号Wcancelに従ってストアバッファ上のデータの書き込みをキャンセルする機能を有する。この共有メモリ14としては様々な形態を有するメモリを利用することができる。そこで、図6、7に共有メモリとして利用できる複数のメモリのブロック図を示す。
図6には、共有メモリとして、命令キャッシュタグメモリ、命令キャッシュデータメモリ、データキャッシュタグメモリ、データキャッシュデータメモリを用いたものである。ここで、命令キャッシュタグメモリ及び命令キャッシュデータメモリは、命令キャッシュ14aを構成するものであり、2つのメモリにより、命令情報を格納する。データキャッシュタグメモリ及びデータキャッシュデータは、データキャッシュ14bを構成するものであり、2つのメモリにより、データ情報を格納する。
命令キャッシュタグメモリは、フリップフロップ101、102、命令キャッシュタグメモリ103、セレクタ104、リードセレクタ105を有する。命令キャッシュタグメモリは、フリップフロップ101、102の2段のフリップフロップを介して命令キャッシュタグメモリ103にデータを書き込む。また、フリップフロップ101、102の出力は、セレクタ104に入力される。リードセレクタ105は、命令キャッシュタグメモリ103の出力と、セレクタ104の出力のいずれかを選択して出力する。ここで、セレクタ104及びリードセレクタ105は、例えば、演算部10からの指示に基づいていずれの入力を選択して出力するかを切り替える。そして、命令キャッシュタグメモリでは、フリップフロップ101、102を有することで、命令キャッシュタグメモリ103へのデータの書き込みを2クロック分遅延させることができる。つまり、フリップフロップ101、102がストアバッファに相当する。ここで、図6の命令キャッシュタグメモリでは、リードセレクタ105がセレクタ104の出力を選択することで、遅延量が2クロックよりも少ないデータの読み出しが可能になる。
命令キャッシュデータメモリ、データキャッシュタグメモリ、データキャッシュデータメモリについてもメモリの部分を命令キャッシュデータメモリ113、データキャッシュタグメモリ123、データキャッシュデータメモリ133に置き換えたものであり、基本的な構成は命令キャッシュタグメモリと同じであるため、詳細な説明を省略する。
図7には、共有メモリとして高速RAM、マルチサイクルRAM、フラッシュメモリを用いたものである。ここで、高速RAM及びマルチサイクルRAMは、図6の命令キャッシュタグメモリのメモリ部分を高速RAM143及びマルチサイクルRAM153に置き換えたものでありここでは説明を省略する。フラッシュメモリ161は、他のメモリとは異なり、ストアバッファとして機能するフリップフロップ及びリードセレクタを有していない。これは、フラッシュメモリ161が不揮発性メモリであり、書込に遅延が生じるためである。
図6、図7に示したメモリは、データを格納するメモリにキャンセル信号Wcancelが入力されている。これらメモリは、キャンセル信号Wcancelがイネーブル状態となった場合に入力されたデータの書き込みを禁止状態とする。これにより、実施の形態1にかかる共有メモリ14は、データの書き込みをキャンセルする。
続いて、実施の形態1にかかる半導体装置1の動作について説明する。そこで、図8に実施の形態1にかかる半導体装置1の動作を示すタイミングチャートを示す。図8に示す例は、タイミングT0まで第1のCPUコア11及び第2のCPUコア12が問題なくロックステップ動作を行い、タイミングT0で第1のCPUコア11に故障が発生して、2つのCPUの出力データに不一致が生じた場合を示すものである。
図8に示すように、2つのCPUに問題がない場合、2つのCPUの出力データは一致する。そのため、タイミングT0までの期間は、シーケンス制御回路16が初期値に応じて第1のCPUコア11を共有リソースにデータを出力するCPUとして選択する。また、タイミングT0間での期間は、2つのCPUの出力データが一致しているため、比較器13c、13dは入力されるデータが一致した状態を示す。
そして、タイミングT0で第1のCPUコア11に故障が生じると、比較器13c又は比較器13dの出力が2つのCPUの出力データに不一致が生じたことを示す状態となる。そして、この比較器13c、13dの出力に応じて、シーケンス制御回路16は、共有リソースにキャンセル信号Wcancelを出力する。これにより、半導体装置1では、共有リソースにて演算部10の出力データの書き込みがキャンセルされる。
また、比較器13c、13dの出力に応じて、シーケンス制御回路16が第1のCPUコア11及び第2のCPUコア12が出力する診断情報DIAG1、DIAG2を確認する。この確認処理において、シーケンス制御回路16が第1のCPUコア11が故障していることを各員すると、シーケンス制御回路16は、セレクタ13a、13bに第2のCPUコア12が出力する出力データを選択するように選択信号SELを切り替える。また、図8に示す例では、第1のCPUコア11が故障している状態であるため、シーケンス制御回路16は、診断情報DIAG1を出力して第1のCPUコア11を無処理状態(例えば、停止状態)とし、かつ診断情報DIAG2に出力して第2のCPUコア12に回復処理を指示する。
この回復処理では、第2のCPUコア12は、エラーが生じた時点よりもさかのぼって処理を再度実行する。詳しくは後述するが、共有リソースに伝達される出力データを出力するCPUコアが故障した場合、CPUコアの処理により生じるデータの一部が失われる。しかし、この回復処理を行うことにより、CPUコアの故障により失われたデータが回復する。そして、回復処理が終了すると、半導体装置1では、第2のCPUコア12を単独で動作させることで処理を継続する。なお、比較器13c、13dの出力値は、シーケンス制御回路16がキャンセル信号Wcancelを出力した後に参照されない状態となる。また、第1のCPUコア11の動作を停止させる方法は、第1のCPUコア11へのクロック信号の供給の停止、第1のCPUコア11への電源供給の停止などがある。
ここで、実施の形態1にかかる半導体装置1では、第1のCPUコア11、又は、第2のCPUコア12に故障が生じた場合に共有リソースへのデータの書き込みをキャンセルするが、共有リソースに誤ったデータの書き込みをキャンセルするためには、キャンセル信号Wcancelの出力タイミングが重要になる。そこで、半導体装置1におけるデータの書き込みキャンセル処理のタイミングチャートを図9に示す。
なお、図9では、データが確定するまでのデータ不定期間をハッチングで示した。また、図9では、各ブロックが出力したデータが出力先のブロックに取り込まれるデータ取り込みタイミングを丸で示した。
図9に示す例では、タイミングt2で共有メモリ14に伝達される2つのCPUの出力データに不一致が生じる。また、図9に示す例では、そして、半導体装置1では、この出力データの不一致が生じたことに応じて、タイミングt3になる前に比較器13dの出力がハイレベルからロウレベルに切り替わる。
その後、タイミングt2から2クロックサイクル後のタイミングt4でシーケンス制御回路16は、キャンセル信号Wcancelをハイレベルとする。キャンセル信号Wcancelをハイレベルとする期間は1クロックサイクルである。また、シーケンス制御回路16がキャンセル信号Wcancel信号の論理レベルを切り替えるタイミングが、比較器13dの出力の論理レベルがロウレベルとなった2クロックサイクル後になるのは、シーケンス制御回路16における処理に遅延が生じるためである。
図9に示すように、タイミングt2で2つのCPUが出力した出力データは、出力後まもなくして共有メモリ14に取り込まれる。一方、比較器13dの判定結果は、タイミングt2からタイミングt3の期間の内タイミングt3に近いタイミングでシーケンス制御回路16に取り込まれる。そのため、共有メモリ14がストアバッファを有していない場合、シーケンス制御回路16が比較器13dの出力に応じて即座にキャンセル信号Wcancelをハイレベルに切り替えたとしても共有メモリ14のデータの上書きを防止することができない。しかしながら、実施の形態1にかかる共有メモリ14がストアバッファを有し、共有メモリ14において実際のデータを記憶するメモリ部分(例えば、命令キャッシュタグメモリ103、命令キャッシュデータメモリ113等)のデータを上書きするまでに2クロックサイクルを要する。また、シーケンス制御回路16は不一致となった出力データが発生してから2クロックサイクル後にキャンセル信号Wcancelをハイレベルとする。このような構成により、実施の形態1にかかる半導体装置1は、共有メモリ14のメモリ部にデータが書き込まれるタイミングでキャンセル信号Wcancel信号をハイレベルとして、メモリ部に格納されているデータが誤ったデータで上書きされて失われてしまうことを防止する。この書込キャンセル動作により失われたデータは、故障していないCPUコアによる回復処理により回復する。
なお、共有メモリ14と同様に周辺回路群15においても遅延書込が行われる。そのため、周辺回路群15においても、共有メモリ14と同様にキャンセル信号Wcancelによって誤ったデータの書き込みをキャンセルすることができる。
また、図9に示すように、第1のCPUコア11の診断情報DIAG1及び第2のCPUコア12の診断情報DIAG2は、クロックサイクル毎に出力される。シーケンス制御回路16は、比較器13c、13dが出力する判断結果が不一致となった後に入力される診断情報DIAG1、DIAG2を参照して故障しているCPUコアを判断する。
上記より、実施の形態1にかかる半導体装置1は、ロックステップ動作を行うCPUコアがそれぞれ内部の論理回路の故障を診断する診断回路を内蔵する。そして、ロックステップ動作を行うCPUコアの出力が不一致となった場合には、この診断回路からの診断情報をシーケンス制御回路16が参照することで、実施の形態1にかかる半導体装置1は、いずれのCPUコアで故障が発生したかを判断することができる。
また、実施の形態1にかかる半導体装置1では、上記故障判断に応じて、セレクタ13a、13bが選択する出力データを切り替えることで、正常なCPUコアによる動作を継続することができる。
また、実施の形態1にかかる半導体装置1では、比較器13c、13dにおいて不一致と判断された出力データの共有リソースへの書き込みを共有メモリ14、周辺回路群15、及び、シーケンス制御回路16によりキャンセルすることができる。これにより、実施の形態1にかかる半導体装置1では、誤ったデータにより共有リソース上のデータが破壊されることを防止することができる。また、誤ったデータの書込キャンセルを行うことで、処理済みデータの一部が失われるが、実施の形態1にかかる半導体装置1では、データの書き込みキャンセルにより失われたデータを回復する回復処理を、正常なCPUコアにて実施する。このようなことから、実施の形態1にかかる半導体装置1では、ロックステップ動作を行う2つのCPUコアの一方が故障した場合であっても、故障による処理データの破損を防止して動作を継続することが可能になる。
実施の形態2
実施の形態2では、演算部10として、ディレイドロックステップ(Delayed lock step)動作を行う演算部50を利用するものである。ディレイドロックステップ動作では、一方のCPUコアで処理した命令と同じ命令を、他方のCPUコアが数クロックサイクル遅れて処理する。そのため、ディレイドロックステップ動作では、厳密には同一のクロックサイクルで同じ命令が処理されるわけではないが、同じ命令を異なるCPUコアで処理する点でロックステップ動作の一態様となるものである。このディレイドロックステップ動作では、片方のCPUコアに命令を伝達する経路に命令を遅延させる遅延回路が設けられるためクリティカルパスの制約を緩和でき、演算部10の動作を高速化させることができる。なお、以下では、2つのCPUコアが2クロックサイクルの差でロックステップ動作を行うディレイドロックステップ動作を行うが、2つのCPUコアの間のクロックサイクルの差は2クロックサイクルに限られるものではない。
そこで、実施の形態2にかかる演算部50を含む、実施の形態2にかかる半導体装置2のブロック図を図10に示す。なお、実施の形態2の説明において、実施の形態1で説明した構成要素と同じ構成要素については、実施の形態1と同じ符号を付して説明を省略する。
図10に示すように、実施の形態2にかかる演算部50は、実施の形態1の演算部10の第1のCPUコア11、第2のCPUコア12及びデータ論理回路13を第1のCPUコア51、第2のCPUコア52及びデータ論理回路53に置き換えたものである。そこで、図11に、実施の形態2にかかる演算部50の詳細なブロック図を示す。
図11に示すように、第1のCPUコア51は、第1のプログラムカウンタ(例えば、保存プログラムカウンタ51a)と第2のプログラムカウンタ(例えば、保存プログラムカウンタ51b)を有する。なお、第1のCPUコア51においても内部の論理回路の故障を診断する診断回路を有する。第2のCPUコア52は、第1のプログラムカウンタ(例えば、保存プログラムカウンタ52a)を有する。
第1のプログラムカウンタとして設けられる保存プログラムカウンタ51a、52aは、各CPUコア内部のレジスタ状態の更新に関して、実行されていない最初の命令を指すプログラムカウンタである。この保存プログラムカウンタ51a、52aは、例外処理或いは割り込み処理にて、動的な命令列を実行済の命令列、未実行の命令列に2分した場合、例外ハンドラ、割り込みハンドラからの復帰時に未実行の命令列の先頭から処理を再開する場合に参照される。本実施の形態では、第1のCPUコア51及び第2のCPUコア52が2クロックのサイクル差で動作しているため、あるクロックサイクルでCPUコアの動作を停止させると、保存プログラムカウンタ51aの内容と保存プログラムカウンタ52aの内容は2サイクル分異なる値となる。
第2のプログラムカウンタとして設けられる保存プログラムカウンタ51bは、共有バス界面に関する情報を保持するプログラムカウンタである。より具体的には、保存プログラムカウンタ51bは、保存プログラムカウンタ51aと同じ命令を指す、或いは、動的命令上の数命令古い命令を指すレジスタである。共有メモリ14に入力されたデータが、共有メモリ14内のストアバッファを抜けて確実にメモリ、或いは、制御レジスタに書き込まれたときに保存プログラムカウンタ51bは更新される。すなわち、未更新の書き込みデータを生成した命令が存在すると、その分保存プログラムカウンタ51bは、保存プログラムカウンタ51aよりカウント値の進行が遅くなる。
ここで、確実にメモリ、或いは、制御レジスタにデータが書き込まれるという条件は、第1のCPUコア51と第2のCPUコア52の双方で差異はなく、共通の事象である。そのため、保存プログラムカウンタ51bは第2のCPUコア52の共有バス界面に関する保存プログラムカウンタも兼ねるように思われるかもしれない。しかし、保存プログラムカウンタ51bは第2のCPUコア52の共有バス界面に関する保存プログラムカウンタとは、細かいケースで異なる。それに関しては、後に実例を示しながら説明する。
また、図11に示すように、演算部50は、データ論理回路53としてセレクタ53a、53b、53f、53h、比較器53c、53d、遅延回路53e、53g、53i、53jを有する。ここで、セレクタ53a、53b、比較器53c、53dは、セレクタ13a、13b、比較器13c、13dに対応するものであり、ここでは説明を省略する。
遅延回路53e、53gは、第2のCPUコア52が共有リソースから取得する入力データの入力タイミングを第1のCPUコア51に対して遅延させる第1の遅延回路として機能するものである。より具体的には、遅延回路53e、53gは以下のような態様で演算部50に設けられる。
遅延回路53eは、共有メモリ14から第2のCPUコア52にデータを伝達する経路に設けられ、伝達されるデータを2クロック遅延させる。セレクタ53fは、共有メモリ14から伝達されるデータとして、共有メモリ14から直接伝達されるデータと、遅延回路53eを介して伝達されるデータの一方を選択して出力する。例えば、セレクタ53fは、演算部50がディレイドロックステップ動作を行っている場合には、遅延回路53eを介して伝達されるデータを第2のCPUコア52に出力し、演算部50が第2のCPUコア52の単独動作を行っている場合には遅延回路53eを介さずに伝達されるデータを選択して第2のCPUコア52に出力する。遅延回路53eがいずれのデータを選択するかは、シーケンス制御回路16により制御されるものとする。
遅延回路53gは、周辺回路群15から第2のCPUコア52にデータを伝達する経路に設けられ、伝達されるデータを2クロック遅延させる。セレクタ53hは、周辺回路群15から伝達されるデータとして、周辺回路群15から直接伝達されるデータと、遅延回路53gを介して伝達されるデータの一方を選択して出力する。例えば、セレクタ53hは、演算部50がディレイドロックステップ動作を行っている場合には、遅延回路53gを介して伝達されるデータを第2のCPUコア52に出力し、演算部50が第2のCPUコア52の単独動作を行っている場合には遅延回路53gを介さずに伝達されるデータを選択して第2のCPUコア52に出力する。遅延回路53hがいずれのデータを選択するかは、シーケンス制御回路16により制御されるものとする。
遅延回路53i、53jは、第1のCPUコア51の出力データが比較器53c、53dに入力されるタイミングを第2のCPUコア52の出力データが比較器53c、53dに入力されるタイミングよりも遅延させる第2の遅延回路として機能する。具体的には、遅延回路53i、53は以下のような態様で演算部50に設けられる。
遅延回路53iは、第1のCPUコア51が出力する出力データのうち共有メモリ14に対して出力される出力データが比較器53cに伝達される経路に設けられる。なお、第2のCPUコア52の出力データが比較器53cに入力される経路には遅延回路は設けられていない。遅延回路53jは、第1のCPUコア51が出力する出力データのうち周辺回路群15に対して出力される出力データが比較器53dに伝達される経路に設けられる。なお、第2のCPUコア52の出力データが比較器53dに入力される経路には遅延回路は設けられていない。
また、実施の形態2にかかる演算部50では、遅延回路53e、53g、53i、53jは、2段の直列接続されたフリップフロップにより構成される。このフリップフロップは、第1のCPUコア51及び第2のCPUコア52に供給されるクロックに基づき動作する。つまり、遅延回路53e、53g、53i、53jは、入力されたデータを2クロック分遅延させて後段の回路に伝達する。また、実施の形態2にかかる半導体装置2は、第1の遅延回路(例えば、遅延回路53e、53g)による遅延量と、第2の遅延回路(例えば、遅延回路53i、53j)による遅延量は同じ遅延量である。
上記したように、実施の形態2にかかる演算部50では、同じ命令を2クロック分ずらして実行する。そのため、実施の形態2にかかる演算部50では、共有リソースに誤ったデータが書き込まれることを防止するためには最大4クロック前のデータのキャンセルを行う必要がある。そこで、図12に、共有メモリ14の1つである高速RAMのブロック図を示す。
図12に示すように、実施の形態2にかかる半導体装置2では、供給メモリのストアバッファとして4段のフリップフロップ(図12のフリップフロップ171〜174)を利用する。また、マルチサイクルRAM175は、4段のフリップフロップを介してデータが入力される。また、マルチサイクルRAM175においてもキャンセル信号Wcancelに従ってデータの書き込みを禁止する機能を有する。セレクタ176は、4つのフリップフロップの出力のいずれか1つを選択して出力する。
続いて、実施の形態2にかかる半導体装置2の動作について説明する。そこで、図13に実施の形態2にかかる半導体装置2の動作を示すタイミングチャートを示す。図13に示すように、実施の形態2にかかる半導体装置2では、タイミングT0で、2つのCPUコアの不一致が生じるまでの期間、演算部50に供給するクロック信号として、予め決められた最大周波数maxfのクロック信号を与え、かつ、CPUコアを二重系動作(例えば、ディレイドロックステップ動作)で動作させる。また、実施の形態2にかかる半導体装置2では、2つのCPUコアが同じ処理結果を出力している期間は、セレクタ53f、53hに遅延回路53e、53gの出力を選択させる。
そして、実施の形態2にかかる半導体装置2は、タイミングT0で、2つのCPUコアの処理結果の不一致を検出すると、以下のような動作を行う。まず、シーケンス制御回路16は、キャンセル信号Wcancelを出力して共有リソースへのデータの書き込みをキャンセルする。シーケンス制御回路16は、第1のCPUコア51を停止状態を指示すると共に第2のCPUコア52に回復処理を指示する。シーケンス制御回路16は、クロック生成回路17にクロック信号の周波数を1/2に変更することを指示する。その後、シーケンス制御回路16は、セレクタ53a、53bに共有リソースに与えるデータとして第2のCPUコア52の出力データを選択することを指示する。さらに、シーケンス制御回路16は、セレクタ53f、53hに遅延回路53e、53gを介さない系で伝達されるデータを選択させる。
ここで、共有リソースに格納されるデータを生成する命令が共有メモリ14から演算部50に伝達される経路を図12のタイミングT0の前後で比較する図を図14及び図15に示す。
図14は、図12のタイミングT0の前の期間における命令が共有メモリ14から演算部50に伝達される経路を説明する図である。また、図15は、図12のタイミングT0の後の期間における命令が共有メモリ14から演算部50に伝達される経路を説明する図である。
図14に示すように、タイミングT0の以前の期間では、共有リソースに格納されるデータを生成する命令は、共有メモリ14から第1のCPUコア51に伝達される。一方、図15に示すように、タイミングT0以降の期間では、共有リソースに格納されるデータを生成する命令は、遅延回路53eを介さずに第2のCPUコア52に伝達される。
ここで、図14及び図15では、共有メモリ14からデータを読み出す際のクリティカルパスを太線で示した。また、このクリティカルパスの始点をsと示し、終点をeと示した。クリティカルパスは、1クロックサイクルでデータを次段の回路に伝達する必要がある経路である。そのため、クリティカルパスは、始点sと終点eの物理的距離が長くなるとタイミング制約を満たすことが厳しくなる傾向がある。そこで、実施の形態2にかかる半導体装置2では、共有メモリ14又は周辺回路群15からの物理的距離がより長い位置にある第2のCPUコア52に遅延回路を設け、タイミング制約を緩和し、クリティカルパスとして最も厳しくなる経路を共有リソースから第1のCPUコア51に至る経路とした。
また、図15に示すように、第2のCPUコア52を単独動作させた場合は、遅延回路が増加することで動作の遅れを防止するために、遅延回路を介さずに第2のCPUコア52に共有リソースからのデータを与える。このとき、共有リソースから第2のCPUコア52に至る経路にはセレクタ53f、53hが挿入される。そのため、第2のCPUコア52を単独動作させた場合、セレクタ53f、53hの分共有リソースから第2のCPUコア52に至る経路の論理距離が長くなる。そこで、実施の形態2にかかる半導体装置2では、演算部50に与えるクロック信号の周波数を1/2に設定する。これにより、論理距離及び物理距離が長くなったことによるクリティカルパスのタイミング制約を緩和する。
上記したように、実施の形態2にかかる半導体装置2では、2つのCPUコアの処理結果に不一致が生じた場合には、第1のCPUコア51に対して2クロック遅れで第1のCPUコア51と同じ命令を処理する第2のCPUコア52に動作を切り替える。そのため、実施の形態2にかかる共有リソースでは、実施の形態1にかかる半導体装置1に比べて、2クロック分前のライト動作を取り消す必要がある。そこで、実施の形態2にかかる半導体装置2では、図12に示したように、共有リソースが実施の形態1の共有リソースよりも2クロック分多い遅延を生じさせる遅延回路を有する。そのため、実施の形態2にかかる半導体装置2では、実施の形態1にかかる半導体装置1よりも2クロック分前のライト動作を取り消すことが可能となる。
また、実施の形態2にかかる半導体装置2では、2クロックのディレイドロックステップ動作を行うため、回復処理において、共有リソースにどの命令までの処理結果が書き込まれているかを判断する処理が実施の形態1にかかる半導体装置1よりも複雑になる。そこで、実施の形態2では、保存プログラムカウンタ51a、51b、52aが設ける。以下では、保存プログラムカウンタ51aをREGSPC51a、保存プログラムカウンタ51bをBUSSPC51b、保存プログラムカウンタ52aをREGSPC52aと称す。
そこで、回復処理におけるREGSPC51a、BUSSPC51b及びREGSPC52aを用いた回復処理について説明する。図16に、REGSPC51a、BUSSPC51b及びREGSPC52aを用いた回復処理のケースを2つ示す。なお、図16において、命令n、n+1、n+2・・・は、メモリ配置上の命令列ではなくCPUコアが時間順に実行する動的命令列を示すものである。
図16のケース1は、第1のCPUコア51内のREGSPC51aが命令n+3、BUSSPC51bが命令n+1、第2のCPUコア52内のREGSPC52aが命令n+2を示している。つまり、ケース1は、第1のCPUコア51が命令n+2までを実行した状態である。また、ケース1は、共有リソースへの処理結果の書込は、書込キャンセル後に命令nまで実行した状態での処理結果が書き込まれていることを示すものである。
そして、このケース1で、第1のCPUコア51に故障が生じたことにより、第2のCPUコア52の単独動作に切り替えた場合、BUSSPC51bが示す値とREGSPC52aが示す値とが1命令分異なる状態である。このケース1における回復処理は以下のようになる。
このケース1では、第1のCPUコア51のBUSSPC51bと第2のCPUコア52のREGSPC52aとが示す値が1命令分異なる。つまり、ケース1では、第1のCPUコア51aが示す命令n+1については、第1のCPUコア51内のレジスタ状態は更新済であるが、共有リソースへの書き込みは未完了の状態である。よって、このケース1では、第2のCPUコア52の更新専用のソフトウェアハンドラにて、命令n+1の1命令分の書き込みを、ソフトウェアによって実行する。例えば、このケース1の例は、push命令のようにメモリストアが行われ、かつ、レジスタも更新する命令である場合には、メモリストア動作のみをソフトウェアで解析して実行する例を示すものである。
図16のケース2は、第1のCPUコア51のREGSPC51aとBUSSPC51bとが共に命令n+3を示し、第2のCPUコア52のREGSPC52aが命令n+1を示している例である。このケース2は、ストアバッファの書き込み遅延よりも、実行中の命令の実行時間が長い場合に発生する状態を説明するものである。例えば、ケース2の状態は、CPUコアが命令実行に10クロック以上の時間を要する除算命令を実行した場合に発生する。
このケース2においても、上述したケース1と同様に、第1のCPUコア51のBUSSPC51bが示す値と、第2のCPUコア52のREGSPC52aが示す値と、に違いがあるものの、ケース1とは回復処理が異なる。
具体的には、レジスタの状態として、命令n+1、n+2にメモリストア命令がある場合、第2のCPUコア52のREGSPC52aよりも、第1のCPUコア51のBUSSPC51bが先に進行することになる。そのため、ケース1のように第1のCPUコア51のBUSSPC51bが示す値を反映して、第2のCPUコア52が処理を行ってしまうと、第2のCPUコア52の命令状態の定義に矛盾が生じる。以上のようなことから、ケース2では、ケース1のような回復処理は不要である。また、命令n+1、n+2にメモリストア命令がない場合であっても、第2のCPUコア52にて命令n+1から命令実行を再開することで、共有リソースにデータを出力するCPUコアを第1のCPUコア51から第2のCPUコア52に切り換えによる命令処理の過不足はない。このようなことからも、ケース2ではケース1のような回復処理は不要である。
図16に示したように、実施の形態2にかかる半導体装置2では、共有リソースにデータを出力するCPUコアを切り換える際の回復処理は、第1のCPUコア51の命令状態によって変わる。そこで、どのような回復処理を行うかは、例えば、シーケンス制御回路16が第1のCPUコア51及び第2のCPUコア52のレジスタの状態を参照して決定する。
上記説明より、実施の形態2にかかる半導体装置2においても、各CPUコアがそれぞれ診断回路を有し、当該診断回路が生成する診断情報に基づいて演算部50の動作を切り替える。これにより、実施の形態2にかかる半導体装置2においても、実施の形態1にかかる半導体装置1と同様に、一方のCPUコアが故障しても動作を継続できる。
また、実施の形態2では、第2のCPUコア52を第1のCPUコア51に比べて遅れたクロックサイクルで動作させるディレイドロックステップ動作を行う。このとき、実施の形態2にかかる半導体装置2では、第1のCPUコア51が故障した際に、2つのCPUコアが同じ命令を実行するクロックサイクルの差分を吸収した上で第2のCPUコア52に動作を切り換えるための構成(例えば、遅延回路、保存プログラムカウンタ等)を有する。これにより、実施の形態2にかかる半導体装置2は、ディレイドロックステップ動作を行いながら、信頼性を向上させることができる。また、実施の形態2にかかる半導体装置2では、ディレイドロックステップ動作を行うことで、動作に用いるクロックの周波数を高くして高い処理能力を実現することができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
1、2 半導体装置
10、50 演算部
11、51 第1のCPUコア
12、52 第2のCPUコア
13、53 データ論理回路
13a、13b、53a、53b セレクタ
13c、13d、53c、53d 比較器
14 共有メモリ
14a 命令キャッシュ
14b データキャッシュ
14c 高速RAM
14d マルチサイクルRAM
14e フラッシュメモリ
15 周辺回路群
15a 割り込み回路
15b UARTインタフェース
15c CANインタフェース
15d アナログデジタル変換器
15e デジタルアナログ変換器
15f タイマ
15g ウォッチドッグタイマ
15h GPIOインタフェース
16 シーケンス制御回路
16a 最大診断時間レジスタ
17 クロック生成回路
21 バスインタフェース
22 命令バス
22a パリティ診断回路
23 命令フェッチ部
23a、24a 組み合わせ論理回路
23b、24b、25b レプリカ診断回路
23c アドレス演算器
23d 診断回路
24 デコード部
25 実行部
25a 制御論理回路
25c 演算器
25d 診断回路
26 レジスタ
26a、27a パリティ診断回路
27 データバス
30 命令デコーダ
31 レプリカデコーダ
32 フリップフロップ
33 チェックサム回路
34 フリップフロップ
35 比較回路
41 グループデコーダ群
42 フリップフロップ群
43 個別論理モジュールデコーダ群
44 フリップフロップ群
45 個別モジュール
46 ステートマシーン
51a、52a REGSPC
51b BUSSPC
53e、53g、53i、53j 遅延回路
53f、53h セレクタ
101、102、111、112、121、122 フリップフロップ
131、132、141、142、151、152 フリップフロップ
171〜174 フリップフロップ
104、114、124、134、144、154、176 セレクタ
105、115、125、135、145、155、177 リードセレクタ
103 命令キャッシュタグメモリ
113 命令キャッシュデータメモリ
123 データキャッシュタグメモリ
133 データキャッシュデータメモリ
143 高速RAM
153 マルチサイクルRAM
161 フラッシュメモリ
175 マルチサイクルRAM
SEL 選択信号
ERR1、ERR2 エラー信号
Wcancel キャンセル信号
CC クロック制御信号
DIAG1、DIAG2 診断情報

Claims (5)

  1. 同じ処理を多重化して実行するロックステップ動作を行い、それぞれが内部の論理回路で生じた故障の有無を示す診断情報を出力する第1の演算器及び第2の演算器と、
    前記第1の演算器及び前記第2の演算器に共通して用いられる共有リソースと、
    前記第1の演算器の出力データと前記第2の演算器の出力データとのいずれか一方を選択信号に基づき選択して前記共有リソースに出力するセレクタと、
    前記診断情報に基づき故障が発生したと判断された演算器に代えて正常な演算器の出力データを前記セレクタに選択させるように前記選択信号を出力するシーケンス制御回路と、
    前記第1の演算器が出力する出力データと前記第2の演算器が出力する出力データとを比較して、2つの出力データの不一致となったことに応じてエラー信号を出力する比較器と、
    前記第2の演算器が前記共有リソースから取得する入力データの入力タイミングを前記第1の演算器に対して遅延させる第1の遅延回路と、
    前記第1の演算器の出力データが前記比較器に入力されるタイミングを前記第2の演算器の出力データが前記比較器に入力されるタイミングよりも遅延させる第2の遅延回路と、
    を有し、
    前記第1の遅延回路による遅延量と、前記第2の遅延回路による遅延量は同じ遅延量であり、
    前記シーケンス制御回路は、前記エラー信号が入力された後に入力される前記診断情報を参照して前記第1の演算器及び前記第2の演算器の故障を判断する半導体装置。
  2. 前記共有リソースは、共有メモリと、周辺回路と、を少なくとも含み、
    前記共有メモリは、前記セレクタから出力された出力データを一時的に保持するストアバッファを有し、
    前記周辺回路は、前記セレクタから出力された出力データに関する処理をキャンセルするキャンセル回路を有し、
    前記シーケンス制御回路は、
    前記診断情報に基づき、前記セレクタが選択している演算器に故障が発生したと判断されたことに応じて、前記ストアバッファ上のデータのキャンセル及び前記キャンセル回路へのキャンセル指示を行う請求項1に記載の半導体装置。
  3. 前記シーケンス制御回路は、故障が発生した演算器に対して動作の停止を指示すると共に、故障が発生したことにより失われた出力データを回復する回復処理を正常な演算器に指示する請求項1に記載の半導体装置。
  4. 前記第1の演算器及び前記第2の演算器は、内部の論理回路の故障を診断する診断回路をそれぞれ有する請求項1に記載の半導体装置。
  5. 前記診断回路は、内部のデータパスに伝搬するデータをパリティにより論理回路の故障を判断するパリティ回路、データパスに伝搬するデータと当該データのレプリカデータとに基づき論理回路の故障を判断するレプリカ診断回路、データパスを多重化した回路の出力に基づき論理回路の故障を判断する二重化構成回路、の少なくとも1つを含む請求項に記載の半導体装置。
JP2014157653A 2014-08-01 2014-08-01 半導体装置 Active JP6312550B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014157653A JP6312550B2 (ja) 2014-08-01 2014-08-01 半導体装置
US14/801,825 US9734023B2 (en) 2014-08-01 2015-07-17 Semiconductor device with output data selection of lockstepped computing elements based on diagnostic information
US15/645,002 US10365979B2 (en) 2014-08-01 2017-07-10 Lockstepped CPU selection based on failure status

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014157653A JP6312550B2 (ja) 2014-08-01 2014-08-01 半導体装置

Publications (2)

Publication Number Publication Date
JP2016035626A JP2016035626A (ja) 2016-03-17
JP6312550B2 true JP6312550B2 (ja) 2018-04-18

Family

ID=55180157

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014157653A Active JP6312550B2 (ja) 2014-08-01 2014-08-01 半導体装置

Country Status (2)

Country Link
US (2) US9734023B2 (ja)
JP (1) JP6312550B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10002056B2 (en) * 2015-09-15 2018-06-19 Texas Instruments Incorporated Integrated circuit chip with cores asymmetrically oriented with respect to each other
JP6645467B2 (ja) * 2017-03-28 2020-02-14 株式会社デンソー マイクロコンピュータ
JP6853162B2 (ja) 2017-11-20 2021-03-31 ルネサスエレクトロニクス株式会社 半導体装置
CN108958987B (zh) * 2018-06-13 2021-10-29 武汉市聚芯微电子有限责任公司 一种低轨小卫星容错系统及方法
CN112424753A (zh) 2018-07-18 2021-02-26 三垦电气株式会社 多核系统
US11249839B1 (en) 2020-08-14 2022-02-15 Rockwell Automation Technologies, Inc. Method and apparatus for memory error detection
JP2023035739A (ja) * 2021-09-01 2023-03-13 ルネサスエレクトロニクス株式会社 半導体装置
DE102021211709A1 (de) * 2021-10-18 2023-04-20 Robert Bosch Gesellschaft mit beschränkter Haftung Datenverarbeitungsnetzwerk zur Datenverarbeitung

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6948092B2 (en) * 1998-12-10 2005-09-20 Hewlett-Packard Development Company, L.P. System recovery from errors for processor and associated components
US7065672B2 (en) * 2001-03-28 2006-06-20 Stratus Technologies Bermuda Ltd. Apparatus and methods for fault-tolerant computing using a switching fabric
US7290169B2 (en) * 2004-04-06 2007-10-30 Hewlett-Packard Development Company, L.P. Core-level processor lockstepping
US7328371B1 (en) * 2004-10-15 2008-02-05 Advanced Micro Devices, Inc. Core redundancy in a chip multiprocessor for highly reliable systems
US20080244305A1 (en) 2007-03-30 2008-10-02 Texas Instruments Deutschland, Gmbh Delayed lock-step cpu compare
EP2294581B1 (en) * 2008-06-20 2013-01-09 Freescale Semiconductor, Inc. A system for distributing available memory resource
EP2550598A1 (de) * 2010-03-23 2013-01-30 Continental Teves AG & Co. oHG Redundante zwei-prozessor-steuerung und steuerungsverfahren
JP2012073828A (ja) 2010-09-29 2012-04-12 Nec Corp 情報処理装置、情報処理方法
JP6098778B2 (ja) * 2012-03-29 2017-03-22 日本電気株式会社 冗長化システム、冗長化方法、冗長化システムの可用性向上方法、及びプログラム

Also Published As

Publication number Publication date
US20160034368A1 (en) 2016-02-04
US9734023B2 (en) 2017-08-15
US10365979B2 (en) 2019-07-30
US20170308445A1 (en) 2017-10-26
JP2016035626A (ja) 2016-03-17

Similar Documents

Publication Publication Date Title
JP6312550B2 (ja) 半導体装置
JP6496562B2 (ja) 半導体装置、診断テスト方法及び診断テスト回路
US8095825B2 (en) Error correction method with instruction level rollback
JP5014899B2 (ja) 再構成可能デバイス
US20120304024A1 (en) Data processing method, data processor and apparatus including a data processor
US9063907B2 (en) Comparison for redundant threads
US20090044048A1 (en) Method and device for generating a signal in a computer system having a plurality of components
EP2503453A1 (en) Processor core with data error detection, and method for instruction execution in the same, with error avoidance
US20090119540A1 (en) Device and method for performing switchover operations in a computer system having at least two execution units
JP6247816B2 (ja) 高完全性処理を提供する方法
JP4865016B2 (ja) プロセッサ
JPWO2008053709A1 (ja) 半導体集積回路選別試験装置および方法
US20080313384A1 (en) Method and Device for Separating the Processing of Program Code in a Computer System Having at Least Two Execution Units
JP2013257640A (ja) コンフィグレーション制御装置、コンフィグレーション制御方法及びコンフィグレーション制御プログラム
US8516303B2 (en) Arithmetic device for concurrently processing a plurality of threads
US8209565B2 (en) Data processing device and bus access control method therein
JP2007304972A (ja) マイクロプロセッサシステム
JP5843804B2 (ja) 演算装置およびエラー処理方法
US20110320907A1 (en) Data processing circuit and data processing method
US9542266B2 (en) Semiconductor integrated circuit and method of processing in semiconductor integrated circuit
US11768735B2 (en) Checkpointing
CN110462603B (zh) 微型计算机
JP2019012319A (ja) 半導体装置
WO2023022035A1 (ja) プロセッサ
JP6358122B2 (ja) マイクロコンピュータ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171205

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180131

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180320

R150 Certificate of patent or registration of utility model

Ref document number: 6312550

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150