(57)【要約】【課題】ロックステップ機能を有する半導体装置において、複数プロセッサによるバスアクセスの競合を抑止する。【解決手段】半導体装置は、第１のプロセッサと、第１のモードにおいて第１のプロセッサの動作を監視する第２のプロセッサと、第１および第２のバスと、第２のモードにおいて、第１または第２のプロセッサのいずれかが専用する第１および第２の非共有リソースと、第２のプロセッサとの間でインタフェース信号群を伝達するバスを選択する第１の選択部とを具備する。第１および第２のプロセッサが異なる命令を実行する第２のモードでは、第１の選択部は、第２のバスを選択する。第２のモードでは、第１の非共有リソースは第１のバスを経由して第１のプロセッサにアクセスされ、第２の非共有リソースは、第２のバスを経由して第２のプロセッサにアクセスされる。【選択図】図１
2020204877.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサと、
第１のモードにおいて、前記第１のプロセッサの動作を監視する第２のプロセッサと、
第２のモードにおいて、前記第１のプロセッサまたは前記第２のプロセッサのいずれかが専用する第１の非共有リソースおよび第２の非共有リソースと、
前記第１のプロセッサと、前記第２のプロセッサと、前記第１の非共有リソースと、前記第２の非共有リソースと、が接続される第１のバスと、
前記第２のプロセッサと、前記第１の非共有リソースと、前記第２の非共有リソースと、が接続される第２のバスと、
第１の選択部と、
第２の選択部と、
第３の選択部と、
を具備し、
前記第１の選択部は、前記第１のバスまたは前記第２のバスのいずれかを選択し、前記第１の選択部は、前記第１の選択部で選択されたバスと前記第２のプロセッサの間で、インタフェース信号群を伝達し、
前記第２の選択部は、前記第１のバスまたは前記第２のバスのいずれかを選択し、前記第１の非共有リソースは、前記第２の選択部で選択されたバスを経由して、前記第１のプロセッサまたは前記第２のプロセッサからアクセスされ、
前記第３の選択部は、前記第１のバスまたは前記第２のバスのいずれかを選択し、前記
第２の非共有リソースは、前記第３の選択部で選択されたバスを経由して、前記第１のプロセッサまたは前記第２のプロセッサからアクセスされ、
前記第１のプロセッサと前記第２のプロセッサとが同一の命令ストリームを実行する前記第１のモードでは、前記第１の選択部は、前記第１のバスを選択し、前記第１のバスから前記第２のプロセッサに、前記インタフェース信号群に含まれる第１のインタフェース信号群を伝達し、
前記第１のプロセッサと前記第２のプロセッサが異なる命令ストリームを実行する前記第２のモードでは、前記第２の選択部は前記第１のバスを選択し、前記第３の選択部は前記第２のバスを選択し、前記第１の選択部は前記第２のバスを選択して、前記第２のバスから前記第２のプロセッサに、前記インタフェース信号群に含まれる第２のインタフェース信号群を伝達する、
半導体装置。
【請求項２】
前記第２のモードにおいて、前記第１のプロセッサは前記第１のバスを経由して前記第１の非共有リソースにアクセスし、前記第２のプロセッサは前記第２のバスを経由して前記第２の非共有リソースにアクセスする、
請求項１に記載の半導体装置。
【請求項３】
前記第２のプロセッサは、前記第１の選択部に対して、前記インタフェース信号群に含まれる第３のインタフェース信号群を出力し、
前記第１のプロセッサは、前記第１のバスに対して、前記インタフェース信号群に含まれない第４のインタフェース信号群を出力し、
前記第３のインタフェース信号群と前記第４のインタフェース信号群とが異なる場合にエラー信号を活性化する比較器を更に具備する、
請求項１または請求項２に記載の半導体装置。
【請求項４】
前記第１の選択部は、前記第１のモードでは、前記第３のインタフェース信号群が前記第１のバスに送信されることを防止し、前記第２のモードでは、前記第３のインタフェース信号群を前記第２のバスに伝達する、
請求項３に記載の半導体装置。
【請求項５】
前記第２のモードにおいて、前記第１の選択部は、前記第２のプロセッサから前記第１の非共有リソースへのアクセスを不正アクセスとして検出し、前記第２の選択部は、前記第１のプロセッサから前記第２の非共有リソースへのアクセスを不正アクセスとして検出する、
請求項１から請求項４までのいずれか１項に記載の半導体装置。
【請求項６】
前記第２のモードにおいて、前記第２の選択部および前記第３の選択部による、前記第１のバスまたは前記第２のバスの選択は、それぞれ、可変である、
請求項１から請求項５までのいずれか１項に記載の半導体装置。
【請求項７】
前記第１のプロセッサおよび前記第２のプロセッサが共通して利用する共有リソースを更に具備し、
前記第２のモードにおいて、前記第１のプロセッサは、前記第１のバスを経由して前記共有リソースをアクセスし、前記第２のプロセッサは、前記第２のバスを経由して前記共有リソースをアクセスする、
請求項１から請求項６までのいずれか１項に記載の半導体装置。
【請求項８】
前記第１のプロセッサおよび前記第２のプロセッサが共通して利用する共有リソースと、第４の選択部と、第５の選択部と、を更に具備し、
前記共有リソースは、リードインタフェースとライトインタフェースとを具備し、
前記第４の選択部は、前記第１のバスまたは前記第２のバスのいずれかを選択し、前記共有リソースは、前記第４の選択部で選択されたバスを経由して、前記第１のプロセッサまたは前記第２のプロセッサからアクセスされ、
前記第５の選択部は、前記第１のバスまたは前記第２のバスのいずれかを選択し、前記共有リソースは、前記第５の選択部で選択されたバスを経由して、前記第１のプロセッサまたは前記第２のプロセッサからアクセスされる、
請求項１から請求項６までのいずれか１項に記載の半導体装置。
【請求項９】
前記第２のモードにおいて、前記第４の選択部と前記第５の選択部は、前記第１のバスおよび前記第２のバスのうち、互いに異なるバスを選択する、
請求項８に記載の半導体装置。
【請求項１０】
前記第２のモードにおいて、前記第１のプロセッサが、前記第１のバスを経由して、前記共有リソースにリードアクセスする場合には、前記第２のプロセッサは、前記第２のバスを経由して、前記共有リソースにライトアクセスし、
前記第２のモードにおいて、前記第１のプロセッサが、前記第１のバスを経由して、前記共有リソースにライトアクセスする場合には、前記第２のプロセッサは、前記第２のバスを経由して、前記共有リソースにリードアクセスする、
請求項９に記載の半導体装置。
【請求項１１】
第１のバスマスタと、第２のバスマスタと、を更に具備し、
前記第１のバスマスタは、前記第１のバスに接続され、
前記第２のバスマスタは、前記第２のバスに接続される、
請求項１から請求項１０までのいずれか１項に記載の半導体装置。
【請求項１２】
前記第２の非共有リソースは、暗号に関する処理を行う暗号コプロセッサである、
請求項１から請求項１１までのいずれか１項に記載の半導体装置。
【請求項１３】
第１および第２のプロセッサと、第１および第２の非共有リソースと、第１および第２のバスと、第１ないし第３の選択部と、を備え、前記第１のプロセッサは前記第１のバスと接続される半導体装置の動作方法であって、
第１もしくは第２の動作モードのいずれかを設定するステップと、
前記第１の動作モードにおいて、前記第１のプロセッサおよび第２のプロセッサが同一の命令ストリームを実行するステップと、
前記第２の動作モードにおいて、前記第１のプロセッサおよび前記第２のプロセッサが異なる命令ストリームを実行するステップと、
を有し、
前記同一の命令ストリームを実行するステップは、
前記第１の選択部により前記第１のバスを選択して、前記第２のプロセッサと前記第１のバスを接続するステップと、
前記第２の選択部により前記第１のバスを選択して、前記第１の非共有リソースと前記第１のバスを接続するステップと、
前記第３の選択部により前記第１のバスを選択して、前記第２の非共有リソースと前記第１のバスを接続するステップと、
前記第１のプロセッサにより、前記第１のバスおよび前記第２の選択部を介して、前記第１の非共有リソースまたは前記第２の非共有リソースをアクセスするステップと、
前記第２の選択部を介して、前記第１のバスから前記第２のプロセッサにインタフェース信号群を伝達するステップと、
前記第１のプロセッサと前記第２のプロセッサの出力を比較するステップと、を含み、
前記異なる命令ストリームを実行するステップは、
前記第１の選択部により前記第２のバスを選択して、前記第２のプロセッサと前記第２のバスを接続するステップと、
前記第２の選択部により前記第１のバスを選択して、前記第１の非共有リソースと前記第１のバスを接続するステップと、
前記第３の選択部により前記第２のバスを選択して、前記第２の非共有リソースと前記第２のバスを接続するステップと、
前記第１のプロセッサにより、前記第１のバスおよび前記第２の選択部を介して、前記第１の非共有リソースをアクセスするステップと、
前記第２のプロセッサにより、前記第１の選択部と、前記第２のバスと、前記第３の選択部を介して、前記第２の非共有リソースをアクセスするステップと、を含む、
半導体装置の動作方法。
【請求項１４】
前記異なる命令ストリームを実行するステップは、前記第１のプロセッサによる前記第２の非共有リソースへのアクセスと、前記第２のプロセッサによる前記第１の非共有リソースへのアクセスと、を不正アクセスと判定するステップを更に含む、
請求項１３に記載の半導体装置の動作方法。
【請求項１５】
前記半導体装置は、共有リソースを更に具備し、
前記異なる命令ストリームを実行するステップは、
前記第１のプロセッサにより、前記第１のバスを経由して、前記共有リソースをアクセスするステップと、
前記第２のプロセッサにより、前記第１の選択部および前記第２のバスを介して、前記共有リソースをアクセスするステップと、
を更に含む、
請求項１３または請求項１４に記載の半導体装置の動作方法。
【請求項１６】
前記半導体装置は、第１のバスマスタおよび第２のバスマスタを更に具備し、
前記異なる命令ストリームを実行するステップは、
前記第１のバスマスタを前記第１のバスに接続するステップと、
前記第２のバスマスタを前記第２のバスに接続するステップと、を更に含む、
請求項１３から請求項１５までのいずれか１項に記載の半導体装置の動作方法。
【請求項１７】
前記異なる命令ストリームを実行するステップは、前記第２の非共有リソースにより、暗号に関する処理を実行するステップを更に含む、
請求項１３から請求項１６までのいずれか１項に記載の半導体装置の動作方法。
【請求項１８】
第１のプロセッサと、
第１のモードにおいて前記第１のプロセッサの動作を監視する第２のプロセッサと、
前記第１のプロセッサおよび前記第２のプロセッサが共通して利用する共有リソースと、
第２のモードにおいて、前記第２のプロセッサが専用する非共有リソースと、
前記第１のプロセッサと、前記第２のプロセッサと、前記共有リソースと、前記非共有リソースと、が接続される第１のバスと、
前記第２のプロセッサと、前記共有リソースと、前記非共有リソースと、が接続される第２のバスと、
第１の選択部と、
第２の選択部と、を具備し、
前記第１の選択部は、前記第１のバスまたは前記第２のバスのいずれかを選択し、前記第１の選択部は、前記第１の選択部で選択されたバスと前記第２のプロセッサの間で、インタフェース信号群を伝達し、
前記第２の選択部は、前記第１のバスまたは前記第２のバスのいずれかを選択し、前記非共有リソースは、前記第２の選択部で選択されたバスを経由して、前記第１のプロセッサまたは前記第２のプロセッサからアクセスされ、
前記第１のプロセッサと前記第２のプロセッサとが同一の命令ストリームを実行する前記第１のモードでは、前記第１の選択部は前記第１のバスを選択し、前記第１のバスから前記第２のプロセッサに前記インタフェース信号群に含まれる第１のインタフェース信号群を伝達し、
前記第１のプロセッサと前記第２のプロセッサが異なる命令ストリームを実行する前記第２のモードでは、前記第２の選択部は前記第２のバスを選択し、前記第１の選択部は前記第２のバスを選択して、前記第２のバスから前記第２のプロセッサに、前記インタフェース信号群に含まれる第２のインタフェース信号群を伝達する、
半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は半導体装置に関し、例えば複数のプロセッサを含み、動作モードとして、複数のプロセッサが同一の動作を行うロックステップモードと、複数のプロセッサが個別の動作を行う非ロックステップモードと、を有する半導体装置に関する。
【背景技術】
【０００２】
近年、プログラムを実行するプロセッサを内蔵した半導体装置は、複数のプロセッサを内蔵することにより、信頼性の向上、或いは、処理能力の向上を実現しているものがある。このような半導体装置には、同じ演算結果を得られるようにして複数のプロセッサを動作させるロックステップモードと、複数のプロセッサを個別に動作させる非ロックステップモードと、を備えるものがある。特許文献１には、ロックステップモードと非ロックステップモードであるフリーステップモードとを切替えることが可能な半導体装置の例が開示されている。特許文献１に記載の複数のプロセッサは、ロックステップモードでは、複数のプロセッサに同一の処理を実行させ、その実行結果を比較することによってエラーを検知する。一方、フリーステップモードでは、複数のプロセッサは、異なる処理を実行可能である。このため、特許文献１に記載の半導体装置は、フリーステップモードにおける半導体装置全体の処理能力を向上することができる。
【０００３】
一方、複数のプロセッサを備える半導体装置では、複数のプロセッサ以外に、様々な機能を実現する回路をリソースとして備える場合がある。ここでリソースとは、例えば、メモリやタイマ、Ｉ／Ｏインタフェース回路、アナログデジタル変換器、または、デジタルアナログ変換器等の周辺回路である。半導体装置がこのようなリソースを備える場合、プロセッサはバスを介してリソースに書き込み、または、読み出しアクセスを行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１９８１３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
非ロックステップモードでは、複数のプロセッサは並列して演算処理を行い、必要に応じてバスを介してリソースにアクセスを行う。この際、複数のプロセッサがバスを共有する場合には、複数のプロセッサによるバスアクセスの競合が発生する可能性がある。バスアクセスの競合が発生した場合、１つのプロセッサによるバスアクセスが許可される一方、別のプロセッサによるバスアクセスはストールさせられるため、半導体装置全体の処理性能が劣化するとの問題がある。
【０００６】
特許文献１には、ロックステップモード時にマスタープロセッサと共通の外部回路からの入力信号をチェッカープロセッサに供給し、フリーステップモード時にこれとは別の外部回路からの入力信号をチェッカープロセッサに供給するプロセッサシステムが開示されている。しかし、特許文献１は、非ロックステップモードにおいて複数のプロセッサが周辺機器をアクセスすることにより生じ得るバスアクセスの競合を抑止する手段を何ら開示していない。
【０００７】
本開示の課題は、ロックステップモードと非ロックステップモードとを切替えることが可能な半導体装置において、非ロックステップモードでの複数プロセッサによるバスアクセスの競合を抑止し、半導体装置の処理性能を向上する点にある。その他の課題および新規な特徴は、本明細書の記述および図面の記載から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態に係る半導体装置は、第１のプロセッサと、第１のモードにおいて第１のプロセッサの動作を監視する第２のプロセッサと、第１および第２のバスと、第２のモードにおいて、第１または第２のプロセッサのいずれかが専用する第１および第２の非共有リソースと、第２のプロセッサとの間でインタフェース信号群を伝達するバスを選択する第１の選択部とを具備する。第１および第２のプロセッサが同一の命令ストリームを実行する第１のモードでは、第１の選択部は第１のバスを選択する。第１のプロセッサと第２のプロセッサが異なる命令ストリームを実行する第２のモードでは、第１の選択部は第２のバスを選択する。第２のモードでは、第１のプロセッサは第１のバスを経由して第１の非共有リソースをアクセスし、第２のプロセッサは第２のバスを経由して第２の非共有リソースをアクセスする。
【０００９】
他の実施の形態に係る半導体装置の動作方法は、第１および第２のプロセッサと、第１および第２の非共有リソースと、第１および第２のバスと、第１ないし第３の選択部と、を備え、第１のプロセッサは第１のバスと接続される半導体装置の動作方法であって、第１もしくは第２の動作モードのいずれかを設定するステップと、第１の動作モードにおいて、第１のプロセッサおよび第２のプロセッサが同一の命令ストリームを実行するステップと、第２の動作モードにおいて、第１のプロセッサおよび第２のプロセッサが異なる命令ストリームを実行するステップと、を有する。異なる命令ストリームを実行するステップは、第１のプロセッサにより、第１のバスおよび第２の選択部を介して、第１の非共有リソースをアクセスするステップと、第２のプロセッサにより、第１の選択部と、第２のバスと、第３の選択部を介して、第２の非共有リソースをアクセスするステップと、を含む。
【００１０】
他の実施の形態に係る半導体装置は、第１のプロセッサと、第１のモードにおいて第１のプロセッサの動作を監視する第２のプロセッサと、第１および第２のバスと、第１のバスおよび第２のバスに接続され、第１のプロセッサおよび第２のプロセッサが共通して利用する共有リソースと、第２のモードにおいて、第２のプロセッサが専用する非共有リソースと、第２のプロセッサとの間でインタフェース信号群を伝達するバスを選択する第１の選択部とを具備する。第１および第２のプロセッサが同一の命令ストリームを実行する第１のモードでは、第１の選択部は第１のバスを選択し、第１の選択部は、第１のバスと第２のプロセッサの間で、インタフェース信号群を伝達する。第１のプロセッサと第２のプロセッサが異なる命令ストリームを実行する第２のモードでは、第１の選択部は第２のバスを選択し、第２のプロセッサは第２のバスを経由して非共有リソースにアクセスする。
【発明の効果】
【００１１】
一実施の形態によれば、半導体装置は、非ロックステップモードにおいて、複数のプロセッサによるバスアクセスの競合を抑止し、半導体装置の処理性能を向上することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態１に係る半導体装置の構成例を示すブロック図である。
【図２】図２は、実施の形態１に係る半導体装置の制御部の構成例を示す回路図である。
【図３】図３は、実施の形態１に係る半導体装置がロックステップモードで動作する場合のバスアクセス経路の一例を示す図である。
【図４】図４は、実施の形態１に係る半導体装置が非ロックステップモードで動作する場合のバスアクセス経路の一例を示す図である。
【図５】図５は、実施の形態１に係る半導体装置のバスアクセス動作の一例を示すフローチャートである。
【図６】図６は、実施の形態２に係る半導体装置の構成例を示すブロック図である。
【図７】図７は、実施の形態２の変形例に係る半導体装置の構成例を示すブロック図である。
【図８】図８は、実施の形態３に係る半導体装置の構成例を示すブロック図である。
【図９】図９は、実施の形態４に係る半導体装置の構成例を示すブロック図である。
【発明を実施するための形態】
【００１３】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１４】
［実施の形態１］
（構成）
図１は、実施の形態１に係る半導体装置１の構成例を示すブロック図である。図１に示されるように、半導体装置１は、第１のプロセッサ１０と、第２のプロセッサ１１と、比較器１２と、選択部（第１の選択部）１３と、第１のバス２０と、第２のバス２１と、非共有リソース（第１の非共有リソース）３０と、非共有リソース（第２の非共有リソース）３２と、選択部（第２の選択部）３１と、選択部（第３の選択部）３３と、制御部４０と、を備える。
【００１５】
第１のプロセッサ１０と、第２のプロセッサ１１は、メモリ（図示しない）から読み出されたプログラム（命令ストリーム）を実行して処理を行う処理回路である。例えば、プロセッサは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等である。実施の形態１に係る半導体装置１は、内蔵する複数のプロセッサの動作モードとして、それぞれのプロセッサから同一の演算結果を得られるように複数のプロセッサを動作させるロックステップモード（第１のモード、第１の動作モード）と、複数のプロセッサを独立して動作させる非ロックステップモード（第２のモード、第２の動作モード）と、を有する。
【００１６】
ロックステップモードでは、一方のプロセッサは主たる演算処理に用いられ、他方のプロセッサは、一方のプロセッサの動作を監視するチェック用プロセッサとして用いられる。ロックステップモードでは、２つのプロセッサの演算結果の差に基づいて演算コアの故障を早期に発見できるため、演算結果の信頼性を向上させることができる。一方、非ロックステップモードでは、複数のプロセッサがそれぞれプログラムを実行するため、実行されるプログラム数の並列数を高めた高速な演算処理が可能である。
【００１７】
なお、ロックステップモードにおいて第１のプロセッサ１０と第２のプロセッサ１１とが同一の演算結果を出力するようにするため、第１のプロセッサ１０と第２のプロセッサ１１とは、同一の回路構成であることが好ましいが、異なる構成であっても良い。
【００１８】
第１のプロセッサ１０は、第１のバス２０に接続される。また、第２のプロセッサは、後述する選択部１３を介して第１のバス２０または第２のバス２１に接続可能とされる。
【００１９】
図１には、第１のプロセッサ１０と第２のプロセッサ１１の２個のプロセッサを備える構成例が示されているが、半導体装置１の構成はこれに限られない。即ち、半導体装置１が備えるプロセッサの数は２以上であれば、いくつであっても良い。例えば、半導体装置１は、プロセッサを４個備えても良い。
【００２０】
非共有リソース３０および３２は、例えば、メモリや、タイマ、Ｉ／Ｏインタフェース回路、アナログデジタル変換回路、またはデジタルアナログ変換回路等の周辺機能を備える回路である。非ロックステップモードにおいて、非共有リソース３０および３２のそれぞれは、第１のプロセッサ１０または第２のプロセッサ１１のいずれかによって専用される。一方、ロックステップモードにおいて、第１のプロセッサ１０は、非共有リソース３０および３２をともに利用することができる。換言すれば、第１のプロセッサ１０は、非共有リソース３０および３２をともにバスアクセスすることができ、非共有リソース３０および３２が行う演算処理を利用することができる。なお、図１には非共有リソースとして非共有リソース３０および３２の２つを備える構成例が示されているが、半導体装置１の構成はこれに限られない。半導体装置１は、２以上の任意の数の非共有リソースを備えても良い。
【００２１】
第１のバス２０は、第１のプロセッサ１０と、第２のプロセッサ１１と、非共有リソース３０と、非共有リソース３２との間でデータの通信を可能とするよう構成される。第２のバス２１は、第２のプロセッサ１１と、非共有リソース３０と、非共有リソース３２との間でデータの通信を可能とするよう構成される。後述するように、第２のプロセッサ１１は、選択部１３を介して、第１のバス２０または第２のバス２１とデータを送受信することが可能である。より具体的には、選択部１３は、第１のバスから送信されるインタフェース信号群（第１のインタフェース信号群）１５、または、第２のバスから送信されるインタフェース信号群（第２のインタフェース信号群）１７を第２のプロセッサ１１に伝達可能である。また、選択部１３は、第２のプロセッサ１１が出力するインタフェース信号群（第３のインタフェース信号群）１６を第２のバス２１に伝達可能である。更に、非共有リソース３０は、選択部３１を介して、第１のバス２０または第２のバス２１とデータを送受信することが可能とされる。同様に、非共有リソース３２は、選択部３３を介して、第１のバス２０または第２のバス２１とデータを送受信することが可能とされる。
【００２２】
比較器１２は、ロックステップモードにおいて、第１のプロセッサ１０の演算結果と、第１のプロセッサの動作を監視する第２のプロセッサ１１の演算結果とを比較する。比較器１２は、第１のプロセッサ１０の演算結果と、第２のプロセッサ１１の演算結果とが異なる場合、エラー信号ＥＲＲを活性化する（イネーブル状態とする）。
【００２３】
より具体的には、比較器１２は、第１のプロセッサ１０が非共有リソース３０または非共有リソース３２に対して出力するインタフェース信号群（第４のインタフェース信号群）１４と、第２のプロセッサ１１が非共有リソース３０または非共有リソース３２に対して出力するインタフェース信号群１６とを比較する。比較器１２は、インタフェース信号群１４とインタフェース信号群１６とが異なる場合、エラー信号ＥＲＲを活性化する。
【００２４】
なお、比較器１２が監視する信号は、インタフェース信号群１４およびインタフェース信号群１６に含まれる信号の全てである必要はなく、インタフェース信号群１４、インタフェース信号群１６に含まれる信号の一部であっても良い。例えば、比較器１２は、データ信号のみを比較しても良いし、アドレス信号とデータ信号を比較しても良い。また、エラー信号ＥＲＲは、ロックステップモードにおいても非ロックステップモードにおいても活性化される構成とした上で、ロックステップモードの場合のみ、図示しないエラー処理回路から参照される構成としても良い。
【００２５】
比較器１２が出力するエラー信号ＥＲＲは、半導体装置１の信頼性を確保するための様々な処理に用いられ得る。例えば、半導体装置１は、エラー信号ＥＲＲが活性化されると、半導体装置１全体を初期化する。また、半導体装置１は、エラー信号ＥＲＲを検出した場合、エラー信号ＥＲＲを活性化させたプログラムを再実行しても良い。
【００２６】
選択部１３は、非ロックステップモード有効信号ＳＥＬ＿Ｃに応じて、第１のバス２０から送信されるインタフェース信号群１５を第２のプロセッサ１１に伝達するのか、第２のバス２１から送信されるインタフェース信号群１７を第２のプロセッサ１１に伝達するのか、を選択する。また、選択部１３は、ロックステップモードにおいて、第２のプロセッサ１１が出力するインタフェース信号群１６が第１のバス２０および第２のバス２１に送信されることを抑止する。一方、非ロックステップモードにおいて、選択部１３は、第２のプロセッサ１１が出力するインタフェース信号群１６を第２のバス２１に送信する。
【００２７】
より具体的には、選択部１３は、非ロックステップモード有効信号ＳＥＬ＿Ｃがロックステップモードを指示する状態においては、第２のプロセッサが出力するインタフェース信号群１６が第１のバス２０及び第２のバス２１に出力されることを防止する。また、ロックステップモード時には、選択部１３は、第１のバス２０から送信されるインタフェース信号群１５を選択し、インタフェース信号群（第５のインタフェース信号群）１８として第２のプロセッサ１１に送信する。
【００２８】
また、選択部１３は、非ロックステップモード有効信号ＳＥＬ＿Ｃが非ロックステップモードを指示する状態においては、第２のプロセッサ１１が出力するインタフェース信号群１６を第２のバス２１に出力する。また、非ロックステップモード時には、選択部１３は、第１のバス２０から送信されるインタェース信号群１５と、第２のバス２１から送信されるインタフェース信号群１７とのうち、インタフェース信号群１７を選択し、インタフェース信号群１８として第２のプロセッサ１１に送信する。即ち、第２のプロセッサ１１は、第２のバス２１を経由して、非共有リソース３０または非共有リソース３２にアクセスする。
【００２９】
選択部３１は、第１のプロセッサ１０または第２のプロセッサ１１が、第１の非共有リソース３０にアクセスするために経由するバスを、第１のバス２０または第２のバス２１のいずれかから選択する。バス選択信号ＳＥＬ＿Ｐ１は、ロックステップモードでは、選択部３１が第１のバス２０を選択する値となる。すなわち、ロックステップモードでは、第１のプロセッサ１０は、選択部３１により選択された第１のバス２０を経由して、非共有リソース３０にアクセスする。一方、非ロックステップモードでは、選択部３１は、バス選択信号ＳＥＬ＿Ｐ１の値に基づいて、第１のバス２０または第２のバス２１のいずれかを選択可能とされる。非ロックステップモードでは、第１のプロセッサ１０または第２のプロセッサ１１は、選択部３１で選択されたバスを経由して、第１の非共有リソース３０にアクセスする。
【００３０】
なお、選択部３１は、非ロックステップモードにおいて、上述の正常なバスアクセスの処理に加え、不正なバスアクセス（不正アクセス）の検出をも行うことができる。選択部３１は、第１のバス２０と第２のバス２１とに接続され、バス選択信号ＳＥＬ＿Ｐ１も受信している。そのため、選択部３１は、バス選択信号ＳＥＬ＿Ｐ１によって選択されていないバスに、非共有リソース３０に対する送受信のアクセス要求が発生したことを検出することができる。したがって、選択部３１は、バスアクセスが正常か否かを判定することができる。
【００３１】
選択部３３は、第１のプロセッサ１０または第２のプロセッサ１１が、第２の非共有リソース３２にアクセスするために経由するバスを、第１のバス２０または第２のバス２１のいずれかから選択する。バス選択信号ＳＥＬ＿Ｐ２は、ロックステップモードでは、選択部３３が第１のバス２０を選択する値となる。すなわち、ロックステップモードでは、第１のプロセッサ１０は、選択部３３により選択された第１のバス２０を経由して、非共有リソース３２にアクセスする。一方、非ロックステップモードでは、選択部３３は、バス選択信号ＳＥＬ＿Ｐ２の値に基づいて、第１のバス２０または第２のバス２１のいずれかを選択可能とされる。非ロックステップモードでは、第１のプロセッサ１０または第２のプロセッサ１１は、選択部３３で選択されたバスを経由して、第２の非共有リソース３２にアクセスする。
【００３２】
なお、選択部３３は、非ロックステップモードにおいて、上述の正常なバスアクセスの処理に加え、不正なバスアクセス（不正アクセス）の検出をも行うことができる。選択部３３は、第１のバス２０と第２のバス２１とに接続され、バス選択信号ＳＥＬ＿Ｐ２も受信している。そのため、選択部３３は、バス選択信号ＳＥＬ＿Ｐ２によって選択されていないバスに、非共有リソース３２に対する送受信のアクセス要求が発生したことを検出することができる。したがって、選択部３３は、バスアクセスが正常か否かを判定することができる。
【００３３】
上述の通り、選択部３１および３３によって、バスアクセスが正常か否かを判定することができるが、バスアクセスが正常か否かを判定するための構成は、これに限られない。例えば、第１のプロセッサ１０および第２のプロセッサ１１を、それぞれ、図示しないＭＰＵ（Ｍｅｍｏｒｙ  Ｐｒｏｔｅｃｔｉｏｎ  Ｕｎｉｔ）を備える構成とし、ＭＰＵにおいてバスアクセスが正常か否かを判定しても良い。また、選択部３１および３３とは別に設けられるバス制御回路（図示しない）によって、バスアクセスが正常か否かを判定しても良い。
【００３４】
制御部４０は、非ロックステップモード有効信号ＳＥＬ＿Ｃ、バス選択信号ＳＥＬ＿Ｐ１、およびバス選択信号ＳＥＬ＿Ｐ２を生成する制御回路である。制御部４０で生成された非ロックステップモード有効信号ＳＥＬ＿Ｃは、選択部１３に入力される。また、制御部４０で生成されたバス選択信号ＳＥＬ＿Ｐ１およびＳＥＬ＿Ｐ２は、それぞれ、選択部３１および選択部３３に入力される（図１では、図の煩雑化を避けるため、結線を省略している）。
【００３５】
図２は、実施の形態１に係る制御部４０の構成例を示す回路図である。図２に示されるように、制御部４０は、フリップフロップ４１、４２、および４３と、マルチプレクサ４４および４５とを有する。非ロックステップモード有効信号ＳＥＬ＿Ｃ、バス選択信号ＳＥＬ＿Ｐ１、およびバス選択信号ＳＥＬ＿Ｐ２の値は、フリップフロップで構成される設定レジスタ４１、４２、および４３に所望の値を設定することにより決定される。例えば、半導体装置１が主たる処理を開始する前に、第１のプロセッサ１０が初期設定用のプログラムを実行して、設定レジスタ４１、４２および４３の値を設定することができる。なお、図２では、非ロックステップモード有効信号ＳＥＬ＿Ｃ、バス選択信号ＳＥＬ＿Ｐ１、およびバス選択信号ＳＥＬ＿Ｐ２の値は設定レジスタ４１、４２および４３の値により決まるが、非ロックステップモード有効信号ＳＥＬ＿Ｃ、バス選択信号ＳＥＬ＿Ｐ１、およびバス選択信号ＳＥＬ＿Ｐ２の値の決め方は、図２の構成例に限られない。例えば、非ロックステップモード有効信号ＳＥＬ＿Ｃ、バス選択信号ＳＥＬ＿Ｐ１、およびバス選択信号ＳＥＬ＿Ｐ２の値は、フラッシュメモリのような不揮発性メモリに格納されている値を読み出して設定することができる。また、非ロックステップモード有効信号ＳＥＬ＿Ｃ、バス選択信号ＳＥＬ＿Ｐ１、およびバス選択信号ＳＥＬ＿Ｐ２の値は、半導体装置１に備えられた外部端子（図示せず）の値を読み込む方法により設定しても良い。
【００３６】
図２を参照して、例えば、非ロックステップモード有効信号ＳＥＬ＿Ｃは、０の場合にロックステップモードを示し、１の場合に非ロックステップモードを示す。また、バス選択信号ＳＥＬ＿Ｐ１およびＳＥＬ＿Ｐ２は、０の場合は第１のバス２０を選択することを示し、１の場合は第２のバス２１を選択することを示す。非ロックステップモード有効信号ＳＥＬ＿Ｃが０の場合には、バス選択信号ＳＥＬ＿Ｐ１およびＳＥＬ＿Ｐ２は常に０となり、選択部３１および選択部３３は、ともに第１のバス２０を選択する。一方、非ロックステップモード有効信号ＳＥＬ＿Ｃが１の場合には、バス選択信号ＳＥＬ＿Ｐ１およびＳＥＬ＿Ｐ２は、それぞれ、設定レジスタ４２および４３の設定値に応じて決められる。したがって、ＳＥＬ＿Ｃが１の場合、選択部３１および選択部３３は、それぞれ、第１のバス２０または第２のバス２１のいずれを選択するかが可変とされている。
【００３７】
（動作）
図３は、半導体装置１がロックステップモードで動作する場合のバスアクセス経路の一例を示す図である。図３において太線の矢印で示されるように、ロックステップモードでは、選択部１３は、第１のバス２０を選択して、第１のバス２０に含まれるインタフェース信号群１５を、インタフェース信号群１８として、第２のプロセッサ１１に伝達する。また、選択部１３は、第２のプロセッサ１１が出力するインタフェース信号群１６が第１のバス２０および第２のバスに送信されないよう、送信を抑止する。選択部３１は第１のバス２０を選択するため、第１のプロセッサ１０は、第１のバスを経由して、非共有リソース３０にアクセスする。同様に、選択部３３は第１のバス２０を選択するため、第１のプロセッサ１０は、第１のバスを経由して、非共有リソース３２にアクセスする。
【００３８】
第１のプロセッサ１０は、第１のバス２０を経由して、非共有リソース３０および非共有リソース３２に対して、インタフェース信号群１４を送信する。また、第１のプロセッサ１０は、第１のバス２０を経由して、非共有リソース３０および非共有リソース３２から、インタフェース信号群１５を受信する。第２のプロセッサ１１は、非共有リソース３０および非共有リソース３２から、第１のバス２０を経由して、インタフェース信号群１５を、インタフェース信号群１８として受信する。バスインタフェース信号群１５と、バスインタフェース信号群１８とは同一の値を有する。そのため、第１のプロセッサ１０と第２のプロセッサ１１がともに正常動作する場合、第１のプロセッサ１０の演算結果を反映したインタフェース信号群１４と、第２のプロセッサ１１の演算結果を反映したインタフェース信号群１６とは一致する。このため、比較器１２はエラー信号ＥＲＲを活性化しない。一方、第１のプロセッサ１０または第２のプロセッサ１１のいずれかが故障を含む場合には、比較器１２はエラー信号ＥＲＲを活性化する。
【００３９】
図４は、半導体装置１が非ロックステップモードで動作する場合のバスアクセス経路の一例を示す図である。より具体的には、図４は、設定レジスタ４２および４３が、それぞれ、０および１に設定されている（ＳＥＬ＿Ｐ１＝０およびＳＥＬ＿Ｐ２＝１）場合の半導体装置１のバスアクセス経路を示している。図４では、図３と異なり、太線の矢印が２種類に分離されている。より具体的には、第１のプロセッサ１０と、第１のバス２０と、非共有リソース３０とで形成されるバスアクセス経路と、第２のプロセッサ１１と、第２のバス２１と、非共有リソース３２とで形成されるバスアクセス経路が互いに分離され、それぞれのバスアクセスが競合することがない。
【００４０】
非ロックステップモード（ＳＥＬ＿Ｃ＝１）では、選択部１３は、第２のバスを選択して、インタフェース信号群１７を第２のプロセッサ１１伝達し、インタフェース信号群１６を第２のバス２１に伝達する。選択部３１はＳＥＬ＿Ｐ１＝０の設定により第１のバス２０を選択するため、非共有リソース３０は、第１のバス２０を経由して第１のプロセッサ１０からアクセスされる。選択部３３はＳＥＬ＿Ｐ２＝１の設定により第２のバス２１を選択するため、非共有リソース３２は、第２のバスを経由して第２のプロセッサ１１からアクセスされる。
【００４１】
第１のプロセッサ１０は、第１のバス２０を経由して、非共有リソース３０に対して、インタフェース信号群１４を送信する。また、第１のプロセッサ１０は、第１のバス２０を経由して、非共有リソース３０から、インタフェース信号群１５を受信する。一方、第２のプロセッサ１１は、第２のバス２１を経由して、非共有リソース３２に対して、インタフェース信号群１６を送信する。また、第２のプロセッサ１１は、第２のバス２１を経由して、非共有リソース３２から、インタフェース信号群１７を、インタフェース信号群１８として受信する。
【００４２】
図５は、半導体装置１の動作の一例を示すフローチャートである。図５を用いて、半導体装置１の動作方法を説明する。半導体装置１の動作方法は、第１のプロセッサ１０および第２のプロセッサ１１に所望の処理を開始させる前に、動作モードを設定するステップ（ステップＳ１０１）を含む。ここで、動作モードは、ロックステップモードまたは非ロックステップモードのいずれかである。例えば、ＳＥＬ＿Ｃは、半導体装置１のパワーオンリセットで０に初期化される。即ち、動作モードは、半導体装置１のパワーオンリセットで、ロックステップモードに初期化されるが、動作モードを設定する方法はこれに限られない。例えば、ＳＥＬ＿Ｃは、半導体装置１のパワーオンリセット時に、半導体装置１の外部端子の値を参照して決められても良い。半導体装置１のパワーオンリセットが解除された後、第１のプロセッサは、初期設定プログラムを実行して、設定レジスタ４１の値を書き換え、ＳＥＬ＿Ｃの値を設定することもできる。
【００４３】
続いて、半導体装置１は、第１のプロセッサ１０または第２のプロセッサ１１が、非共有リソース３０にアクセスするために経由するバスを選択する（ステップＳ１０２）。より具体的には、例えば、第１のプロセッサ１０がプログラムを実行して、設定レジスタ４２に設定値を書き込む。その結果、選択部３１が非ロックステップモードにおいて選択するバスが設定される。同様に、半導体装置１は、第１のプロセッサ１０または第２のプロセッサ１１が、非共有リソース３２にアクセスするために経由するバスを選択する（ステップＳ１０３）。より具体的には、例えば、第１のプロセッサ１０がプログラムを実行して、設定レジスタ４３に設定値を書き込む。その結果、選択部３３が非ロックステップモードにおいて選択するバスが設定される。
【００４４】
続いて、半導体装置１は、第１のプロセッサ１０及び第２のプロセッサ１１に所望の処理を開始させる（ステップＳ１０４）。
【００４５】
第１のプロセッサ１０および第２のプロセッサ１１は、それぞれ、所望のプログラムの処理を完了するまで、ステップＳ１０５からステップＳ１１２の処理を繰り返す。即ち、第１のプロセッサ１０および第２のプロセッサ１１は、それぞれが実行するプログラムの指示に応じて、それぞれ、非共有リソース３０および３２をアクセスする（ステップＳ１０５）。ロックステップモード（ステップＳ１０６：ＹＥＳ）においては、第１のプロセッサ１０から第１のバス２０を経由した非共有リソース３０および非共有リソース３２へのアクセスが行われる（ステップＳ１０７）。ロックステップモード（ステップＳ１０６：ＹＥＳ）において、選択部１３は第１のバスを選択するので、第２のプロセッサ１１は、インタフェース信号群１５を受信する。しかし、ロックステップモード（ステップＳ１０６：ＹＥＳ）において、第２のプロセッサ１１から第２のバス２１を経由した非共有リソース３０または３２へのアクセスは発生しない。
【００４６】
一方、非ロックステップモード（ステップＳ１０６：ＮＯ）においては、第１のプロセッサ１０は、ＳＥＬ＿Ｐ１およびＳＥＬ＿Ｐ２の値にしたがって、非共有リソース３０または３２にアクセスする。また、非ロックステップモード（ステップＳ１０６：ＮＯ）では、選択部１３は第２のバス２１を選択するので、第２のプロセッサ１１は、第２のバス２１を経由し、ＳＥＬ＿Ｐ１およびＳＥＬ＿Ｐ２の値にしたがって、非共有リソース３０または３２にアクセスする。以下では、一例として、設定レジスタ４２および４３が、それぞれ、０および１に設定されている（ＳＥＬ＿Ｐ１＝０およびＳＥＬ＿Ｐ２＝１）場合の半導体装置１の動作を説明する。この場合、第１のプロセッサ１０は非共有リソース３０を専用し、第２のプロセッサ１１は非共有リソース３２を専用する。
【００４７】
第１のプロセッサ１０または第２のプロセッサ１１による、非共有リソース３０または３２へのアクセスが発生すると、それぞれ、選択部３１または３３により、バスアクセスが正常か否か、が判定される（ステップＳ１０９）。例えば、第１のプロセッサ１０が、第１のプロセッサ１０によって専用される非共有リソース３０にアクセスしようとした場合、選択部３１は正常なアクセスと判定する（ステップＳ１０９：ＹＥＳ）。一方、第１のプロセッサ１０が、第２のプロセッサ１１によって専用される非共有リソース３２にアクセスしようとした場合、選択部３３は不正アクセスと判定する（ステップＳ１０９：ＮＯ）。バスアクセスが不正と判定された場合には、半導体装置１は、アクセスエラー処理（ステップＳ１１２）を行う。例えば、半導体装置１は、アクセスエラー処理（ステップＳ１１２）として、第１のプロセッサ１０に例外処理を実行させることができる。
【００４８】
非共有リソース３０または３２へのバスアクセスが正常（ステップＳ１０９：ＹＥＳ）と判定された場合には、選択部３１または３３が選択するバスが、第１のバス２０であるか否かが判定される（ステップＳ１１０）。選択バスが第１のバス２０である場合（ステップＳ１１０：ＹＥＳ）、第１のバス２０経由で非共有リソース３０または３２へのアクセスが行われる（ステップＳ１０７）。一方、選択バスが第１のバス２０でない場合（ステップＳ１１０：ＮＯ）、第２のバス２１経由で非共有リソース３０または３２へのアクセスが行われる（ステップＳ１１１）。上述の例では、ＳＥＬ＿Ｐ１＝０である。そのため、非共有リソース３０について、第１のバス２０が選択されている（ステップＳ１１０：ＹＥＳ）。したがって、第１のプロセッサ１０から非共有リソース３０へのアクセスは、第１のバス経由で行われる（ステップＳ１０７）。一方、上述の例では、ＳＥＬ＿Ｐ２＝１である。そのため、非共有リソース３２について、第２のバス２１が選択されている（ステップＳ１１０：ＮＯ）。したがって、第２のプロセッサ１１から非共有リソース３２へのアクセスは、第２のバス経由で行われる（ステップＳ１１１）。
【００４９】
非共有リソース３０および３２へのアクセス（ステップＳ１０７、Ｓ１１１）またはアクセスエラー処理（ステップＳ１１２）後、第１のプロセッサ１０または第２のプロセッサ１１による各々のプログラムの実行が終了していない場合（ステップＳ１０８：ＮＯ）には、ステップＳ１０５以後の処理を繰り返す。一方、第１のプロセッサ１０および第２のプロセッサ１１による各々のプログラムの実行が終了した場合（ステップＳ１０８：ＹＥＳ）には、半導体装置１による処理を終了する（ステップＳ１１３）。
【００５０】
（効果）
実施の形態１によれば、半導体装置１は、第１のバス２０と、第２のバス２１と、非共有リソース３０および３２と、選択部１３、３１、および３３と、を有する。このため、非ロックステップモードにおいて、第１のプロセッサ１０が非共有リソース３０を専用する場合には、選択部３１の選択により非共有リソース３０へのバスアクセスは、第１のバス２０を経由するよう設定することができる。また、非ロックステップモードにおいて、第２のプロセッサ１１が非共有リソース３２を専用する場合には、選択部３３の選択により非共有リソース３２へのバスアクセスは、第２のバス２１を経由するよう設定することができる。その結果、第１のプロセッサ１０および第２のプロセッサ１１が、それぞれ専用する非共有リソース３０および３２をアクセスする場合、バスアクセスの競合が起きることを抑止することができる。このように、非ロックステップモードにおいて各プロセッサが専用する各非共有リソースへのアクセス経路が完全に分離されるため、アクセス競合による半導体装置１の性能低下が生じない。また、バスアクセスの競合を抑止することができるため、ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）の担保が必要なセキュリティ等のアプリケーションに好適である。
【００５１】
［実施の形態２］
（構成）
次に実施の形態２について説明する。図６は、実施の形態２に係る半導体装置の構成例を示すブロック図である。実施の形態２に係る半導体装置１Ａは、実施の形態１に係る半導体装置１と比較して、共有リソース５０およびアービタ５１を更に備える点で異なる。これ以外の構成および動作については、実施の形態１で説明した半導体装置１と同様であるので、同一の構成については同一の符号を付し、重複した説明は省略する。
【００５２】
共有リソース５０は、非ロックステップモードにおいて、第１のプロセッサ１０および第２のプロセッサ１１のいずれからもアクセス可能なリソースである。換言すると、第１のプロセッサ１０および第２のプロセッサ１１は、共有リソースを共通して利用する。共有リソース５０は、例えば、メモリや、タイマ、Ｉ／Ｏインタフェース回路、アナログデジタル変換回路、またはデジタルアナログ変換回路、等の周辺機能を有する回路である。共有リソース５０は、アービタ５１を介して第１のバス２０および第２のバス２１と接続される。図６には共有リソースとして共有リソース５０を１つ、非共有リソースとして非共有リソース３０および３２を２つ備える構成例が示されているが、半導体装置１Ａの構成はこれに限られない。半導体装置１Ａは、第１のバス２０および第２のバス２１に接続される２以上の共有リソースを備えても良い。また、半導体装置１Ａは、１つの非共有リソースと、任意の数の共有リソースを備えても良い。
【００５３】
アービタ５１は、第１のバス２０または第２のバス２１を経由して受信した共有リソース５０へのアクセス要求の処理順序を調停する。即ち、非ロックステップモードにおいて、第１のプロセッサ１０が第１のバス２０を経由して共有リソース５０にアクセスする第１のアクセス要求と、第２のプロセッサ１１が第２のバス２１を経由して共有リソース５０にアクセスする第２のアクセス要求とが競合して発生している場合に、アービタ５１は、どちらのアクセス要求を優先して処理するかを決定する。アービタ５１のアービトレーション方式は、固定優先度方式やラウンドロビン等、各種方式を取り得る。固定優先度方式のように、特定のバスからのアクセスを優先する方式を採用する場合は、いずれのバスからのアクセスを優先するのかを設定する優先度選択信号ＳＥＬ＿Ｐ３を実装することが望ましい。また、優先度選択信号ＳＥＬ＿Ｐ３は、レジスタ設定により可変としても良い。
【００５４】
（動作）
実施の形態２に係る半導体装置１Ａの動作について説明する。半導体装置１Ａがロックステップモードで動作する場合、第１のプロセッサ１０は、第１のバス２０を経由して非共有リソース３０と、非共有リソース３２と、共有リソース５０とにアクセスする。半導体装置１Ａがロックステップモードで動作する場合、第２のプロセッサ１１は、第２のバス２１を経由して、非共有リソース３０、非共有リソース３２、または共有リソース５０のいずれにもアクセスせず、第１のバスを経由してインタフェース信号群１５を受信するのみである。
【００５５】
次に、半導体装置１Ａが非ロックステップモードで動作する場合について、ＳＥＬ＿Ｐ１＝０およびＳＥＬ＿Ｐ２＝１の設定での半導体装置１Ａの動作を説明する。この場合、第1のプロセッサ１０は、第１のバス２０を経由して、非共有リソース３０、および共有リソース５０にアクセスする。また、第２のプロセッサ１１は、第２のバス２１を経由して非共有リソース３２および共有リソース５０にアクセスする。
【００５６】
（効果）
実施の形態２によれば、半導体装置１Ａは、共有リソース５０と、アービタ５１とを備える。このため、非ロックステップモードで動作する場合、第１のプロセッサ１０および第２のプロセッサ１１は、それぞれ第１のバス２０および第２のバス２１を経由して共有リソース５０にアクセスすることができる。共有リソース５０へのアクセスについて、第１のプロセッサ１０からのアクセスと、第２のプロセッサ１１からのアクセスとは、競合し得る。しかし、アービタ５１によって、競合したアクセスは調停される。
【００５７】
また、実施の形態１と同様、非共有リソース３０および３２が利用するバスは、選択部３１および３３によって指定可能である。このため、例えば、第１のプロセッサ１０は、第１のバス２０を経由して非共有リソース３０をアクセスすることができる。また、第２のプロセッサ１１は、第２のバス２１を経由して非共有リソース３２にアクセスすることができる。非共有リソース３０へのバスアクセスと、非共有リソース３２へのバスアクセスとが分離されているため、第１のプロセッサ１０から非共有リソース３０へのアクセスと、第２のプロセッサ１１から非共有リソース３２へのアクセスとが競合することはない。
【００５８】
本実施の形態に係る半導体装置１Ａは、非ロックステップモードにおいて、複数のプロセッサ間で共有するリソースをサポートすることができる。したがって、例えば共有リソース５０がＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である場合には、複数のプロセッサは、共有リソース５０を介して相互にデータを授受することができる。また、例えば共有リソース５０がタイマである場合には、タイマが有する同一の情報に基づいて処理を行うことができる。
【００５９】
［実施の形態２の変形例］
（構成）
図７は、実施の形態２の変形例に係る半導体装置の構成例を示すブロック図である。本変形例に係る半導体装置１Ｂは、実施の形態２に係る半導体装置１Ａと比較して、共有リソース５０Ｂがリードインタフェース（以下、「リードＩ／Ｆ」と呼ぶことがある）５２とライトインタフェース（以下、「ライトＩ／Ｆ」と呼ぶことがある）５３とを備える点、およびアービタ５１に代えて選択部５４、５５を備える点で異なる。共有リソース５０Ｂは、例えば、メモリや、タイマ、Ｉ／Ｏインタフェース回路、アナログデジタル変換回路、またはデジタルアナログ変換回路、等の周辺機能を有する回路である。共有リソース５０Ｂは、選択部５４および選択部５５を介して第１のバス２０および第２のバス２１に接続され、第１のプロセッサ１０および第２のプロセッサ１１からアクセスが可能とされる。
【００６０】
リードＩ／Ｆ５２は、共有リソース５０Ｂからのデータ読み出しに使用されるインタフェースである。選択部５４は、リードＩ／Ｆ５２へのアクセスを、第１のバス２０経由とするか、第２のバス２１経由とするか、を選択する。選択部５４は、制御部４０Ｂより出力されるバス選択信号ＳＥＬ＿Ｐ３Ｒを受信して、第１のバス２０または第２のバス２１のいずれか一方を選択する。ロックステップモードでは、ＳＥＬ＿Ｐ３Ｒは、選択部５４が第１のバス２０を選択する値となる。ロックステップモードでは、リードＩ／Ｆ５２は、第１のバス２０を経由してアクセスされる。一方、非ロックステップモードでは、ＳＥＬ＿Ｐ３Ｒは、選択部５４が第１のバス２０を選択する値にも、第２のバス２１を選択する値にも設定可能とされる。非ロックステップモードでは、リードＩ／Ｆ５２は、ＳＥＬ＿Ｐ３Ｒの値に応じて、第１のバス２０または第２のバスを経由してアクセスされる。
【００６１】
ライトＩ／Ｆ５３は、共有リソース５０Ｂへのデータ書き込みに使用されるインタフェースである。選択部５５は、ライトＩ／Ｆ５５へのアクセスを、第１のバス２０経由とするか、第２のバス２１経由とするか、を選択する。選択部５５は、制御部４０Ｂより出力されるバス選択信号ＳＥＬ＿Ｐ３Ｗを受信して、第１のバス２０または第２のバス２１のいずれか一方を選択する。ロックステップモードでは、ＳＥＬ＿Ｐ３Ｗは、選択部５５が第１のバス２０を選択する値となる。ロックステップモードでは、ライトＩ／Ｆ５３は、第１のバス２０を経由してアクセスされる。一方、非ロックステップモードでは、ＳＥＬ＿Ｐ３Ｗは、選択部５５が第１のバス２０を選択する値にも、第２のバス２１を選択する値にも設定可能とされる。非ロックステップモードでは、ライトＩ／Ｆ５３は、ＳＥＬ＿Ｐ３Ｗの値に応じて、第１のバス２０または第２のバス２１を経由してアクセスされる。
【００６２】
図７では、リードＩ／Ｆ５４およびライトＩ／Ｆ５５の両者に対して、選択部５４および選択部５５が備えられているが、半導体装置１Ｂの構成はこれに限られない。例えば、選択部５４および選択部５５の少なくとも一方に、図６のアービタ５１と同様のバスアクセス調停機能を実装しても良い。選択部５４および５５がアービタと同様のバスアクセス調停機能を実装する場合には、ＳＥＬ＿Ｐ３Ｒ及びＳＥＬ＿Ｐ３Ｗは、図６のＳＥＬ＿Ｐ３と同様に、いずれのバスからのアクセスを優先するかを設定する優先度選択信号として実装することが望ましい。
【００６３】
なお、図６および図７の選択部３１および３３と、図７の選択部５４および５５と、図６のアービタ５１は、上述の選択機能とアービトレーション機能の両方を実装しても良い。
【００６４】
制御部４０Ｂに含まれるＳＥＬ＿Ｐ３Ｒ、ＳＥＬ＿Ｐ３Ｗの生成に係る回路は、図２におけるＳＥＬ＿Ｐ１，ＳＥＬ＿Ｐ２の生成に係る回路と同様である。図２では、バス選択信号ＳＥＬ＿Ｐ１及びＳＥＬ＿Ｐ２は、０と１の２値を示す。上述の様に選択機能とアービトレーション機能の両方を実装する場合には、バス選択信号ＳＥＬ＿Ｐ１およびＳＥＬ＿Ｐ２は、実装した機能の選択が可能な様に３値以上を取る様に設定レジスタの数を増やして実現することができる。
【００６５】
（動作）
本変形例に係る半導体装置１Ｂの動作について説明する。半導体装置１Ｂがロックステップモードで動作する場合、第１のプロセッサ１０は、第１のバス２０を経由して非共有リソース３０、非共有リソース３２、および、共有リソース５０Ｂへアクセスする。半導体装置１Ｂがロックステップモードで動作する場合、第２のプロセッサ１１は、第２のバス２１を経由して非共有リソース３０、非共有リソース３２、または共有リソース５０Ｂのいずれに対してもアクセスせず、第１のバスを経由してインタフェース信号群１５を受信するのみである。一方、半導体装置１Ｂが非ロックステップモードで動作する場合、例えばＳＥＬ＿Ｐ１＝０、ＳＥＬ＿Ｐ２＝１、ＳＥＬ＿Ｐ３Ｒ＝０およびＳＥＬ＿Ｐ３Ｗ＝１の設定の下では、第1のプロセッサは、第１のバス２０を経由して非共有リソース３０および共有リソース５０ＢのリードＩ／Ｆ５２にアクセスする。また、半導体装置１Ｂが非ロックステップモードで動作する場合、例えばＳＥＬ＿Ｐ１＝０、ＳＥＬ＿Ｐ２＝１、ＳＥＬ＿Ｐ３Ｒ＝０およびＳＥＬ＿Ｐ３Ｗ＝１の設定の下では、第２のプロセッサ１１は、第２のバス２１を経由して非共有リソース３２および共有リソース５０ＢのライトＩ／Ｆ５３にアクセスする。このように、ＳＥＬ＿Ｐ３Ｒ＝０およびＳＥＬ＿Ｐ３Ｗ＝１の設定の下では、選択部５４および選択部５５は、第１のバス２０および第２のバス２１のうち、互いに異なるバスを選択する。
【００６６】
（効果）
本変形例に係る半導体装置１Ｂにおいて、共有リソース５０ＢはリードＩ／Ｆ５２とライトＩ／Ｆ５３とを備える。また、半導体装置１Ｂは、リードＩ／Ｆ５２にアクセスするために利用するバスを選択する選択部５４と、ライトＩ／Ｆ５３にアクセスするために利用するバスを選択する選択部５５とを更に備える。リードＩ／Ｆ５４にアクセスするために利用するバスは、選択部５４での選択により、第１のバス２０または第２のバス２１のいずれか一方とされる。同様に、ライトＩ／Ｆ５５にアクセスするために利用するバスは、選択部５５での選択により、第１のバス２０または第２のバス２１のいずれか一方とされる。そして、選択部５４と選択部５５は、第１のバス２０および第２のバス２１のうち、互いに異なるバスを選択するよう設定され得る。したがって、共有リソース５０Ｂへのライトアクセスとリードアクセスとが競合し、半導体装置１Ｂの処理性能が低下することを抑止することができる。
【００６７】
また、実施の形態１と同様、非共有リソース３０および３２が利用するバスは、選択部３１および３３によって選択可能である。このため、例えば、非共有リソース３０は、第１のバス２０を経由してアクセス可能とすることができる。また、非共有リソース３２は、第２のバス２１を経由してバスアクセス可能とすることができる。非共有リソース３０へのバスアクセスと、非共有リソース３２へのバスアクセスとが分離されているため、第１のプロセッサ１０から非共有リソース３０へのアクセスと、第２のプロセッサ１１から非共有リソース３２へのアクセスとが競合することはない。したがって、非共有リソース３０および３２へのアクセスが競合し、半導体装置１Ｂの処理性能が低下することを抑止することができる。
【００６８】
［実施の形態３］
（構成）
図８は、実施の形態３に係る半導体装置の構成例を示すブロック図である。実施の形態３に係る半導体装置１Ｃは、実施の形態１に係る半導体装置１と比較して、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）６０および６１を更に備える点で異なる。これ以外の構成および動作については、実施の形態１で説明した半導体装置１と同様であるので、同一の構成については同一の符号を付し、重複した説明は省略する。
【００６９】
ＤＭＡＣ６０は、第１のバスマスタであり、第１のバス２０経由で第１のプロセッサ１０によって設定される動作指示に基づいて、転送元アドレスで指定されるデータを読み出し、読み出したデータを転送先アドレスに書き込む機能を有する。ＤＭＡＣ６０は、第１のバス２０を経由して、非共有リソース３０または非共有リソース３２と通信を行う。
【００７０】
ＤＭＡＣ６１は、第２のバスマスタであり、第２のバス２１経由で第２のプロセッサ１１によって設定される動作指示に基づいて、転送元アドレスで指定されるデータを読み出し、読み出したデータを転送先アドレスに書き込む機能を有する。ＤＭＡＣ６１は、第２のバス２１を経由して、非共有リソース３０または非共有リソース３２と通信を行う。
【００７１】
（動作）
ロックステップモードにおいては、第１のプロセッサ１０による設定に基づき、ＤＭＡＣ６０が第１のバス２０を経由して非共有リソース３０および３２にアクセスする。非ロックステップモードにおいては、ＤＭＡＣ６０は、第１のプロセッサ１０が第１のバス２０経由で設定したＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送設定に基づき、第１のバス２０を経由して非共有リソース３０または非共有リソース３２にアクセスする。また、ＤＭＡＣ６１は、第２のプロセッサ１１が第２のバス２１経由で設定したＤＭＡ転送設定に基づき、第２のバス２１を経由して非共有リソース３０または非共有リソース３２にアクセスする。ＤＭＡＣ６０およびＤＭＡＣ６１がアクセスできる非共有リソースは、レジスタ４２および４３の値によって決められる。例えば、バス選択信号の値がＳＥＬ＿Ｐ１＝０およびＳＥＬ＿Ｐ２＝１の場合、非ロックステップモードにおいて、ＤＭＡＣ６０は、第１のバス２０を経由して非共有リソース３０をアクセスする。また、ＤＭＡＣ６１は、第２のバス２１を経由して非共有リソース３２をアクセスする。
【００７２】
（効果）
実施の形態３によれば、半導体装置１Ｃは、ＤＭＡＣ６０と、ＤＭＡＣ６１とを備える。このため、プロセッサに加え、バスマスタ機能をもつＤＭＡＣが処理するＤＭＡ転送についても、ＤＭＡＣ６０およびＤＭＡＣ６１のアクセス経路を第１のバスと第２のバスとに分離することができる。したがって、非ロックステップモードにおいて、第１のプロセッサ１０からＤＭＡＣ６０へのＤＭＡ転送の設定指示およびＤＭＡＣ６０による第１のバス２０上のＤＭＡ転送は、第２のプロセッサ１１からＤＭＡＣ６１へのＤＭＡ転送の設定指示および第２のバス２１上のＤＭＡ転送とアクセス競合しない。したがって、半導体装置がプロセッサに加え、他のバスマスタを備える場合でも、バス上のアクセス競合により性能劣化が生じることを抑止することができる。
【００７３】
なお、図８においてはＤＭＡＣ６０および６１をバスマスタの例として説明したが、半導体装置１Ｃの構成は、これに限られない。ＤＭＡＣ６０および６１は、他のバスマスタ機能を有する任意の周辺機能回路であっても良い。
【００７４】
図８の構成例では、ＤＭＡＣ６０と第１のプロセッサ１０は、バスマスタとして第１のバス２０を共有している。また、ＤＭＡＣ６１と第２のプロセッサ１１は、バスマスタとして第２のバス２１を共有している。図８の構成例とは異なり、ＤＭＡＣ６０またはＤＭＡＣ６１のために、更に第３のバス（図示せず）を追加し、そのバスを介して非共有リソース等と通信を行っても良い。この場合、選択部３１および３３は、第３のバスをも選択可能な様に拡張されることが望ましい。しかし、選択部３１および３３は、必ずしも全てのバスに接続可能なように構成しなくても良い。
【００７５】
更に、半導体装置１Ｃは、必要に応じて第１のバスに接続されるバスマスタ機能をもつ周辺機能を複数備えても良い。同様に、半導体装置１Ｃは、第２のバスに接続されるバスマスタ機能をもつ周辺機能を複数備えても良い。また、半導体装置１Ｃは、ＤＭＡＣ６０または６１のいずれか一方を有しないよう構成されても良い。
【００７６】
［実施の形態４］
（構成）
図９は、実施の形態４に係る半導体装置の構成例を示すブロック図である。実施の形態４に係る半導体装置１Ｄは、実施の形態１に係る半導体装置１と比較して、非共有リソース３２が非共有リソース３２Ｄに置き換えられている点で異なる。これ以外の構成および動作については、実施の形態１で説明した半導体装置１と同様であるので、同一の構成については同一の符号を付し、重複した説明は省略する。
【００７７】
半導体装置１Ｄにおいて、非共有リソース３２Ｄは、暗号コプロセッサである。暗号コプロセッサは、暗号処理に関する処理を行う補助プロセッサである。半導体装置１Ｄが非ロックステップモードで動作する場合、例えば、第２のプロセッサが暗号コプロセッサ３２Ｄを専用する。
【００７８】
（効果）
実施の形態４によれば、半導体装置１Ｄは、第１のバス２０と、第２のバス２１と、選択部１３と、選択部３１および３３と、非共有リソースである暗号コプロセッサ３２Ｄと、を備える。そのため、半導体装置１Ｄは、例えば、第１のプロセッサ１０が接続される第１のバス２０と、第２のプロセッサ１１と暗号コプロセッサ３２Ｄとが接続される第２のバス２１とを分離した構造とすることができる。セキュリティ分野のアプリケーションプログラムにおいては、他のアプリケーションプログラムとの分離や、ＱｏＳの担保が必要とされることが多い。本実施の形態に係る半導体装置１Ｄでは、非ロックステップモードにおいて、非共有リソースである暗号コプロセッサ３２Ｄへのアクセス経路を第１のプロセッサが利用するアクセス経路から分離することができるため、セキュリティ分野のアプリケーションを実現するのに好適である。
【００７９】
以上、本発明によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更され得る。例えば、実施の形態２のバススレーブ側の拡張は、実施の形態３のバスマスタ側の拡張と組み合わせることが可能である。また、実施の形態３に係るＤＭＡＣ６０および６１は、選択部やアービタを介して、それぞれ、第１のバス２０および第２のバス２１に接続されても良い。
【符号の説明】
【００８０】
１、１Ａ、１Ｂ、１Ｃ、１Ｄ  半導体装置
１０  第１のプロセッサ
１１  第２のプロセッサ
１２  比較器
１３  選択部
１４  インタフェース信号群（第４のインタフェース信号群）
１５  インタフェース信号群（第１のインタフェース信号群）
１６  インタフェース信号群（第３のインタフェース信号群）
１７  インタフェース信号群（第２のインタフェース信号群）
１８  インタフェース信号群（第５のインタフェース信号群）
２０  第１のバス
２１  第２のバス
３０  非共有リソース
３１  選択部
３２  非共有リソース
３２Ｄ  暗号コプロセッサ
３３  選択部
４０、４０Ａ、４０Ｂ  制御部
４１、４２、４３  フリップフロップ
４４、４５  マルチプレクサ
５０、５０Ｂ  共有リソース
５１  アービタ
５２  リードＩ／Ｆ
５３  ライトＩ／Ｆ
５４、５５  選択部  
６０  ＤＭＡＣ
６１  ＤＭＡＣ
ＳＥＬ＿Ｃ  非ロックステップモード有効信号
ＳＥＬ＿Ｐ１、ＳＥＬ＿Ｐ２、ＳＥＬ＿Ｐ３Ｒ、ＳＥＬ＿Ｐ３Ｗ  バス選択信号
ＳＥＬ＿Ｐ３  優先度選択信号
【図１】
2020204877.tif 000003
【図２】
2020204877.tif 000004
【図３】
2020204877.tif 000005
【図４】
2020204877.tif 000006
【図５】
2020204877.tif 000007
【図６】
2020204877.tif 000008
【図７】
2020204877.tif 000009
【図８】
2020204877.tif 000010
【図９】
2020204877.tif 000011