JP2020204877A - 半導体装置及びその動作方法 - Google Patents

半導体装置及びその動作方法 Download PDF

Info

Publication number
JP2020204877A
JP2020204877A JP2019111998A JP2019111998A JP2020204877A JP 2020204877 A JP2020204877 A JP 2020204877A JP 2019111998 A JP2019111998 A JP 2019111998A JP 2019111998 A JP2019111998 A JP 2019111998A JP 2020204877 A JP2020204877 A JP 2020204877A
Authority
JP
Japan
Prior art keywords
bus
processor
selection unit
shared resource
semiconductor device
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.)
Granted
Application number
JP2019111998A
Other languages
English (en)
Other versions
JP7169942B2 (ja
Inventor
良孝 多木
Yoshitaka Taki
良孝 多木
匡亮 谷本
Masaaki Tanimoto
匡亮 谷本
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 JP2019111998A priority Critical patent/JP7169942B2/ja
Priority to US16/853,139 priority patent/US10997105B2/en
Priority to CN202010469650.6A priority patent/CN112100002A/zh
Publication of JP2020204877A publication Critical patent/JP2020204877A/ja
Application granted granted Critical
Publication of JP7169942B2 publication Critical patent/JP7169942B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • 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/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1679Temporal synchronisation or re-synchronisation of redundant processing components at clock signal level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)
  • Bus Control (AREA)

Abstract

【課題】ロックステップ機能を有する半導体装置において、複数プロセッサによるバスアクセスの競合を抑止する。【解決手段】半導体装置は、第1のプロセッサと、第1のモードにおいて第1のプロセッサの動作を監視する第2のプロセッサと、第1および第2のバスと、第2のモードにおいて、第1または第2のプロセッサのいずれかが専用する第1および第2の非共有リソースと、第2のプロセッサとの間でインタフェース信号群を伝達するバスを選択する第1の選択部とを具備する。第1および第2のプロセッサが異なる命令を実行する第2のモードでは、第1の選択部は、第2のバスを選択する。第2のモードでは、第1の非共有リソースは第1のバスを経由して第1のプロセッサにアクセスされ、第2の非共有リソースは、第2のバスを経由して第2のプロセッサにアクセスされる。【選択図】図1

Description

本開示は半導体装置に関し、例えば複数のプロセッサを含み、動作モードとして、複数のプロセッサが同一の動作を行うロックステップモードと、複数のプロセッサが個別の動作を行う非ロックステップモードと、を有する半導体装置に関する。
近年、プログラムを実行するプロセッサを内蔵した半導体装置は、複数のプロセッサを内蔵することにより、信頼性の向上、或いは、処理能力の向上を実現しているものがある。このような半導体装置には、同じ演算結果を得られるようにして複数のプロセッサを動作させるロックステップモードと、複数のプロセッサを個別に動作させる非ロックステップモードと、を備えるものがある。特許文献1には、ロックステップモードと非ロックステップモードであるフリーステップモードとを切替えることが可能な半導体装置の例が開示されている。特許文献1に記載の複数のプロセッサは、ロックステップモードでは、複数のプロセッサに同一の処理を実行させ、その実行結果を比較することによってエラーを検知する。一方、フリーステップモードでは、複数のプロセッサは、異なる処理を実行可能である。このため、特許文献1に記載の半導体装置は、フリーステップモードにおける半導体装置全体の処理能力を向上することができる。
一方、複数のプロセッサを備える半導体装置では、複数のプロセッサ以外に、様々な機能を実現する回路をリソースとして備える場合がある。ここでリソースとは、例えば、メモリやタイマ、I/Oインタフェース回路、アナログデジタル変換器、または、デジタルアナログ変換器等の周辺回路である。半導体装置がこのようなリソースを備える場合、プロセッサはバスを介してリソースに書き込み、または、読み出しアクセスを行う。
特開2010−198131号公報
非ロックステップモードでは、複数のプロセッサは並列して演算処理を行い、必要に応じてバスを介してリソースにアクセスを行う。この際、複数のプロセッサがバスを共有する場合には、複数のプロセッサによるバスアクセスの競合が発生する可能性がある。バスアクセスの競合が発生した場合、1つのプロセッサによるバスアクセスが許可される一方、別のプロセッサによるバスアクセスはストールさせられるため、半導体装置全体の処理性能が劣化するとの問題がある。
特許文献1には、ロックステップモード時にマスタープロセッサと共通の外部回路からの入力信号をチェッカープロセッサに供給し、フリーステップモード時にこれとは別の外部回路からの入力信号をチェッカープロセッサに供給するプロセッサシステムが開示されている。しかし、特許文献1は、非ロックステップモードにおいて複数のプロセッサが周辺機器をアクセスすることにより生じ得るバスアクセスの競合を抑止する手段を何ら開示していない。
本開示の課題は、ロックステップモードと非ロックステップモードとを切替えることが可能な半導体装置において、非ロックステップモードでの複数プロセッサによるバスアクセスの競合を抑止し、半導体装置の処理性能を向上する点にある。その他の課題および新規な特徴は、本明細書の記述および図面の記載から明らかになるであろう。
一実施の形態に係る半導体装置は、第1のプロセッサと、第1のモードにおいて第1のプロセッサの動作を監視する第2のプロセッサと、第1および第2のバスと、第2のモードにおいて、第1または第2のプロセッサのいずれかが専用する第1および第2の非共有リソースと、第2のプロセッサとの間でインタフェース信号群を伝達するバスを選択する第1の選択部とを具備する。第1および第2のプロセッサが同一の命令ストリームを実行する第1のモードでは、第1の選択部は第1のバスを選択する。第1のプロセッサと第2のプロセッサが異なる命令ストリームを実行する第2のモードでは、第1の選択部は第2のバスを選択する。第2のモードでは、第1のプロセッサは第1のバスを経由して第1の非共有リソースをアクセスし、第2のプロセッサは第2のバスを経由して第2の非共有リソースをアクセスする。
他の実施の形態に係る半導体装置の動作方法は、第1および第2のプロセッサと、第1および第2の非共有リソースと、第1および第2のバスと、第1ないし第3の選択部と、を備え、第1のプロセッサは第1のバスと接続される半導体装置の動作方法であって、第1もしくは第2の動作モードのいずれかを設定するステップと、第1の動作モードにおいて、第1のプロセッサおよび第2のプロセッサが同一の命令ストリームを実行するステップと、第2の動作モードにおいて、第1のプロセッサおよび第2のプロセッサが異なる命令ストリームを実行するステップと、を有する。異なる命令ストリームを実行するステップは、第1のプロセッサにより、第1のバスおよび第2の選択部を介して、第1の非共有リソースをアクセスするステップと、第2のプロセッサにより、第1の選択部と、第2のバスと、第3の選択部を介して、第2の非共有リソースをアクセスするステップと、を含む。
他の実施の形態に係る半導体装置は、第1のプロセッサと、第1のモードにおいて第1のプロセッサの動作を監視する第2のプロセッサと、第1および第2のバスと、第1のバスおよび第2のバスに接続され、第1のプロセッサおよび第2のプロセッサが共通して利用する共有リソースと、第2のモードにおいて、第2のプロセッサが専用する非共有リソースと、第2のプロセッサとの間でインタフェース信号群を伝達するバスを選択する第1の選択部とを具備する。第1および第2のプロセッサが同一の命令ストリームを実行する第1のモードでは、第1の選択部は第1のバスを選択し、第1の選択部は、第1のバスと第2のプロセッサの間で、インタフェース信号群を伝達する。第1のプロセッサと第2のプロセッサが異なる命令ストリームを実行する第2のモードでは、第1の選択部は第2のバスを選択し、第2のプロセッサは第2のバスを経由して非共有リソースにアクセスする。
一実施の形態によれば、半導体装置は、非ロックステップモードにおいて、複数のプロセッサによるバスアクセスの競合を抑止し、半導体装置の処理性能を向上することができる。
図1は、実施の形態1に係る半導体装置の構成例を示すブロック図である。 図2は、実施の形態1に係る半導体装置の制御部の構成例を示す回路図である。 図3は、実施の形態1に係る半導体装置がロックステップモードで動作する場合のバスアクセス経路の一例を示す図である。 図4は、実施の形態1に係る半導体装置が非ロックステップモードで動作する場合のバスアクセス経路の一例を示す図である。 図5は、実施の形態1に係る半導体装置のバスアクセス動作の一例を示すフローチャートである。 図6は、実施の形態2に係る半導体装置の構成例を示すブロック図である。 図7は、実施の形態2の変形例に係る半導体装置の構成例を示すブロック図である。 図8は、実施の形態3に係る半導体装置の構成例を示すブロック図である。 図9は、実施の形態4に係る半導体装置の構成例を示すブロック図である。
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
[実施の形態1]
(構成)
図1は、実施の形態1に係る半導体装置1の構成例を示すブロック図である。図1に示されるように、半導体装置1は、第1のプロセッサ10と、第2のプロセッサ11と、比較器12と、選択部(第1の選択部)13と、第1のバス20と、第2のバス21と、非共有リソース(第1の非共有リソース)30と、非共有リソース(第2の非共有リソース)32と、選択部(第2の選択部)31と、選択部(第3の選択部)33と、制御部40と、を備える。
第1のプロセッサ10と、第2のプロセッサ11は、メモリ(図示しない)から読み出されたプログラム(命令ストリーム)を実行して処理を行う処理回路である。例えば、プロセッサは、CPU(Central Processing Unit)やDSP(Digital Signal Processor)等である。実施の形態1に係る半導体装置1は、内蔵する複数のプロセッサの動作モードとして、それぞれのプロセッサから同一の演算結果を得られるように複数のプロセッサを動作させるロックステップモード(第1のモード、第1の動作モード)と、複数のプロセッサを独立して動作させる非ロックステップモード(第2のモード、第2の動作モード)と、を有する。
ロックステップモードでは、一方のプロセッサは主たる演算処理に用いられ、他方のプロセッサは、一方のプロセッサの動作を監視するチェック用プロセッサとして用いられる。ロックステップモードでは、2つのプロセッサの演算結果の差に基づいて演算コアの故障を早期に発見できるため、演算結果の信頼性を向上させることができる。一方、非ロックステップモードでは、複数のプロセッサがそれぞれプログラムを実行するため、実行されるプログラム数の並列数を高めた高速な演算処理が可能である。
なお、ロックステップモードにおいて第1のプロセッサ10と第2のプロセッサ11とが同一の演算結果を出力するようにするため、第1のプロセッサ10と第2のプロセッサ11とは、同一の回路構成であることが好ましいが、異なる構成であっても良い。
第1のプロセッサ10は、第1のバス20に接続される。また、第2のプロセッサは、後述する選択部13を介して第1のバス20または第2のバス21に接続可能とされる。
図1には、第1のプロセッサ10と第2のプロセッサ11の2個のプロセッサを備える構成例が示されているが、半導体装置1の構成はこれに限られない。即ち、半導体装置1が備えるプロセッサの数は2以上であれば、いくつであっても良い。例えば、半導体装置1は、プロセッサを4個備えても良い。
非共有リソース30および32は、例えば、メモリや、タイマ、I/Oインタフェース回路、アナログデジタル変換回路、またはデジタルアナログ変換回路等の周辺機能を備える回路である。非ロックステップモードにおいて、非共有リソース30および32のそれぞれは、第1のプロセッサ10または第2のプロセッサ11のいずれかによって専用される。一方、ロックステップモードにおいて、第1のプロセッサ10は、非共有リソース30および32をともに利用することができる。換言すれば、第1のプロセッサ10は、非共有リソース30および32をともにバスアクセスすることができ、非共有リソース30および32が行う演算処理を利用することができる。なお、図1には非共有リソースとして非共有リソース30および32の2つを備える構成例が示されているが、半導体装置1の構成はこれに限られない。半導体装置1は、2以上の任意の数の非共有リソースを備えても良い。
第1のバス20は、第1のプロセッサ10と、第2のプロセッサ11と、非共有リソース30と、非共有リソース32との間でデータの通信を可能とするよう構成される。第2のバス21は、第2のプロセッサ11と、非共有リソース30と、非共有リソース32との間でデータの通信を可能とするよう構成される。後述するように、第2のプロセッサ11は、選択部13を介して、第1のバス20または第2のバス21とデータを送受信することが可能である。より具体的には、選択部13は、第1のバスから送信されるインタフェース信号群(第1のインタフェース信号群)15、または、第2のバスから送信されるインタフェース信号群(第2のインタフェース信号群)17を第2のプロセッサ11に伝達可能である。また、選択部13は、第2のプロセッサ11が出力するインタフェース信号群(第3のインタフェース信号群)16を第2のバス21に伝達可能である。更に、非共有リソース30は、選択部31を介して、第1のバス20または第2のバス21とデータを送受信することが可能とされる。同様に、非共有リソース32は、選択部33を介して、第1のバス20または第2のバス21とデータを送受信することが可能とされる。
比較器12は、ロックステップモードにおいて、第1のプロセッサ10の演算結果と、第1のプロセッサの動作を監視する第2のプロセッサ11の演算結果とを比較する。比較器12は、第1のプロセッサ10の演算結果と、第2のプロセッサ11の演算結果とが異なる場合、エラー信号ERRを活性化する(イネーブル状態とする)。
より具体的には、比較器12は、第1のプロセッサ10が非共有リソース30または非共有リソース32に対して出力するインタフェース信号群(第4のインタフェース信号群)14と、第2のプロセッサ11が非共有リソース30または非共有リソース32に対して出力するインタフェース信号群16とを比較する。比較器12は、インタフェース信号群14とインタフェース信号群16とが異なる場合、エラー信号ERRを活性化する。
なお、比較器12が監視する信号は、インタフェース信号群14およびインタフェース信号群16に含まれる信号の全てである必要はなく、インタフェース信号群14、インタフェース信号群16に含まれる信号の一部であっても良い。例えば、比較器12は、データ信号のみを比較しても良いし、アドレス信号とデータ信号を比較しても良い。また、エラー信号ERRは、ロックステップモードにおいても非ロックステップモードにおいても活性化される構成とした上で、ロックステップモードの場合のみ、図示しないエラー処理回路から参照される構成としても良い。
比較器12が出力するエラー信号ERRは、半導体装置1の信頼性を確保するための様々な処理に用いられ得る。例えば、半導体装置1は、エラー信号ERRが活性化されると、半導体装置1全体を初期化する。また、半導体装置1は、エラー信号ERRを検出した場合、エラー信号ERRを活性化させたプログラムを再実行しても良い。
選択部13は、非ロックステップモード有効信号SEL_Cに応じて、第1のバス20から送信されるインタフェース信号群15を第2のプロセッサ11に伝達するのか、第2のバス21から送信されるインタフェース信号群17を第2のプロセッサ11に伝達するのか、を選択する。また、選択部13は、ロックステップモードにおいて、第2のプロセッサ11が出力するインタフェース信号群16が第1のバス20および第2のバス21に送信されることを抑止する。一方、非ロックステップモードにおいて、選択部13は、第2のプロセッサ11が出力するインタフェース信号群16を第2のバス21に送信する。
より具体的には、選択部13は、非ロックステップモード有効信号SEL_Cがロックステップモードを指示する状態においては、第2のプロセッサが出力するインタフェース信号群16が第1のバス20及び第2のバス21に出力されることを防止する。また、ロックステップモード時には、選択部13は、第1のバス20から送信されるインタフェース信号群15を選択し、インタフェース信号群(第5のインタフェース信号群)18として第2のプロセッサ11に送信する。
また、選択部13は、非ロックステップモード有効信号SEL_Cが非ロックステップモードを指示する状態においては、第2のプロセッサ11が出力するインタフェース信号群16を第2のバス21に出力する。また、非ロックステップモード時には、選択部13は、第1のバス20から送信されるインタェース信号群15と、第2のバス21から送信されるインタフェース信号群17とのうち、インタフェース信号群17を選択し、インタフェース信号群18として第2のプロセッサ11に送信する。即ち、第2のプロセッサ11は、第2のバス21を経由して、非共有リソース30または非共有リソース32にアクセスする。
選択部31は、第1のプロセッサ10または第2のプロセッサ11が、第1の非共有リソース30にアクセスするために経由するバスを、第1のバス20または第2のバス21のいずれかから選択する。バス選択信号SEL_P1は、ロックステップモードでは、選択部31が第1のバス20を選択する値となる。すなわち、ロックステップモードでは、第1のプロセッサ10は、選択部31により選択された第1のバス20を経由して、非共有リソース30にアクセスする。一方、非ロックステップモードでは、選択部31は、バス選択信号SEL_P1の値に基づいて、第1のバス20または第2のバス21のいずれかを選択可能とされる。非ロックステップモードでは、第1のプロセッサ10または第2のプロセッサ11は、選択部31で選択されたバスを経由して、第1の非共有リソース30にアクセスする。
なお、選択部31は、非ロックステップモードにおいて、上述の正常なバスアクセスの処理に加え、不正なバスアクセス(不正アクセス)の検出をも行うことができる。選択部31は、第1のバス20と第2のバス21とに接続され、バス選択信号SEL_P1も受信している。そのため、選択部31は、バス選択信号SEL_P1によって選択されていないバスに、非共有リソース30に対する送受信のアクセス要求が発生したことを検出することができる。したがって、選択部31は、バスアクセスが正常か否かを判定することができる。
選択部33は、第1のプロセッサ10または第2のプロセッサ11が、第2の非共有リソース32にアクセスするために経由するバスを、第1のバス20または第2のバス21のいずれかから選択する。バス選択信号SEL_P2は、ロックステップモードでは、選択部33が第1のバス20を選択する値となる。すなわち、ロックステップモードでは、第1のプロセッサ10は、選択部33により選択された第1のバス20を経由して、非共有リソース32にアクセスする。一方、非ロックステップモードでは、選択部33は、バス選択信号SEL_P2の値に基づいて、第1のバス20または第2のバス21のいずれかを選択可能とされる。非ロックステップモードでは、第1のプロセッサ10または第2のプロセッサ11は、選択部33で選択されたバスを経由して、第2の非共有リソース32にアクセスする。
なお、選択部33は、非ロックステップモードにおいて、上述の正常なバスアクセスの処理に加え、不正なバスアクセス(不正アクセス)の検出をも行うことができる。選択部33は、第1のバス20と第2のバス21とに接続され、バス選択信号SEL_P2も受信している。そのため、選択部33は、バス選択信号SEL_P2によって選択されていないバスに、非共有リソース32に対する送受信のアクセス要求が発生したことを検出することができる。したがって、選択部33は、バスアクセスが正常か否かを判定することができる。
上述の通り、選択部31および33によって、バスアクセスが正常か否かを判定することができるが、バスアクセスが正常か否かを判定するための構成は、これに限られない。例えば、第1のプロセッサ10および第2のプロセッサ11を、それぞれ、図示しないMPU(Memory Protection Unit)を備える構成とし、MPUにおいてバスアクセスが正常か否かを判定しても良い。また、選択部31および33とは別に設けられるバス制御回路(図示しない)によって、バスアクセスが正常か否かを判定しても良い。
制御部40は、非ロックステップモード有効信号SEL_C、バス選択信号SEL_P1、およびバス選択信号SEL_P2を生成する制御回路である。制御部40で生成された非ロックステップモード有効信号SEL_Cは、選択部13に入力される。また、制御部40で生成されたバス選択信号SEL_P1およびSEL_P2は、それぞれ、選択部31および選択部33に入力される(図1では、図の煩雑化を避けるため、結線を省略している)。
図2は、実施の形態1に係る制御部40の構成例を示す回路図である。図2に示されるように、制御部40は、フリップフロップ41、42、および43と、マルチプレクサ44および45とを有する。非ロックステップモード有効信号SEL_C、バス選択信号SEL_P1、およびバス選択信号SEL_P2の値は、フリップフロップで構成される設定レジスタ41、42、および43に所望の値を設定することにより決定される。例えば、半導体装置1が主たる処理を開始する前に、第1のプロセッサ10が初期設定用のプログラムを実行して、設定レジスタ41、42および43の値を設定することができる。なお、図2では、非ロックステップモード有効信号SEL_C、バス選択信号SEL_P1、およびバス選択信号SEL_P2の値は設定レジスタ41、42および43の値により決まるが、非ロックステップモード有効信号SEL_C、バス選択信号SEL_P1、およびバス選択信号SEL_P2の値の決め方は、図2の構成例に限られない。例えば、非ロックステップモード有効信号SEL_C、バス選択信号SEL_P1、およびバス選択信号SEL_P2の値は、フラッシュメモリのような不揮発性メモリに格納されている値を読み出して設定することができる。また、非ロックステップモード有効信号SEL_C、バス選択信号SEL_P1、およびバス選択信号SEL_P2の値は、半導体装置1に備えられた外部端子(図示せず)の値を読み込む方法により設定しても良い。
図2を参照して、例えば、非ロックステップモード有効信号SEL_Cは、0の場合にロックステップモードを示し、1の場合に非ロックステップモードを示す。また、バス選択信号SEL_P1およびSEL_P2は、0の場合は第1のバス20を選択することを示し、1の場合は第2のバス21を選択することを示す。非ロックステップモード有効信号SEL_Cが0の場合には、バス選択信号SEL_P1およびSEL_P2は常に0となり、選択部31および選択部33は、ともに第1のバス20を選択する。一方、非ロックステップモード有効信号SEL_Cが1の場合には、バス選択信号SEL_P1およびSEL_P2は、それぞれ、設定レジスタ42および43の設定値に応じて決められる。したがって、SEL_Cが1の場合、選択部31および選択部33は、それぞれ、第1のバス20または第2のバス21のいずれを選択するかが可変とされている。
(動作)
図3は、半導体装置1がロックステップモードで動作する場合のバスアクセス経路の一例を示す図である。図3において太線の矢印で示されるように、ロックステップモードでは、選択部13は、第1のバス20を選択して、第1のバス20に含まれるインタフェース信号群15を、インタフェース信号群18として、第2のプロセッサ11に伝達する。また、選択部13は、第2のプロセッサ11が出力するインタフェース信号群16が第1のバス20および第2のバスに送信されないよう、送信を抑止する。選択部31は第1のバス20を選択するため、第1のプロセッサ10は、第1のバスを経由して、非共有リソース30にアクセスする。同様に、選択部33は第1のバス20を選択するため、第1のプロセッサ10は、第1のバスを経由して、非共有リソース32にアクセスする。
第1のプロセッサ10は、第1のバス20を経由して、非共有リソース30および非共有リソース32に対して、インタフェース信号群14を送信する。また、第1のプロセッサ10は、第1のバス20を経由して、非共有リソース30および非共有リソース32から、インタフェース信号群15を受信する。第2のプロセッサ11は、非共有リソース30および非共有リソース32から、第1のバス20を経由して、インタフェース信号群15を、インタフェース信号群18として受信する。バスインタフェース信号群15と、バスインタフェース信号群18とは同一の値を有する。そのため、第1のプロセッサ10と第2のプロセッサ11がともに正常動作する場合、第1のプロセッサ10の演算結果を反映したインタフェース信号群14と、第2のプロセッサ11の演算結果を反映したインタフェース信号群16とは一致する。このため、比較器12はエラー信号ERRを活性化しない。一方、第1のプロセッサ10または第2のプロセッサ11のいずれかが故障を含む場合には、比較器12はエラー信号ERRを活性化する。
図4は、半導体装置1が非ロックステップモードで動作する場合のバスアクセス経路の一例を示す図である。より具体的には、図4は、設定レジスタ42および43が、それぞれ、0および1に設定されている(SEL_P1=0およびSEL_P2=1)場合の半導体装置1のバスアクセス経路を示している。図4では、図3と異なり、太線の矢印が2種類に分離されている。より具体的には、第1のプロセッサ10と、第1のバス20と、非共有リソース30とで形成されるバスアクセス経路と、第2のプロセッサ11と、第2のバス21と、非共有リソース32とで形成されるバスアクセス経路が互いに分離され、それぞれのバスアクセスが競合することがない。
非ロックステップモード(SEL_C=1)では、選択部13は、第2のバスを選択して、インタフェース信号群17を第2のプロセッサ11伝達し、インタフェース信号群16を第2のバス21に伝達する。選択部31はSEL_P1=0の設定により第1のバス20を選択するため、非共有リソース30は、第1のバス20を経由して第1のプロセッサ10からアクセスされる。選択部33はSEL_P2=1の設定により第2のバス21を選択するため、非共有リソース32は、第2のバスを経由して第2のプロセッサ11からアクセスされる。
第1のプロセッサ10は、第1のバス20を経由して、非共有リソース30に対して、インタフェース信号群14を送信する。また、第1のプロセッサ10は、第1のバス20を経由して、非共有リソース30から、インタフェース信号群15を受信する。一方、第2のプロセッサ11は、第2のバス21を経由して、非共有リソース32に対して、インタフェース信号群16を送信する。また、第2のプロセッサ11は、第2のバス21を経由して、非共有リソース32から、インタフェース信号群17を、インタフェース信号群18として受信する。
図5は、半導体装置1の動作の一例を示すフローチャートである。図5を用いて、半導体装置1の動作方法を説明する。半導体装置1の動作方法は、第1のプロセッサ10および第2のプロセッサ11に所望の処理を開始させる前に、動作モードを設定するステップ(ステップS101)を含む。ここで、動作モードは、ロックステップモードまたは非ロックステップモードのいずれかである。例えば、SEL_Cは、半導体装置1のパワーオンリセットで0に初期化される。即ち、動作モードは、半導体装置1のパワーオンリセットで、ロックステップモードに初期化されるが、動作モードを設定する方法はこれに限られない。例えば、SEL_Cは、半導体装置1のパワーオンリセット時に、半導体装置1の外部端子の値を参照して決められても良い。半導体装置1のパワーオンリセットが解除された後、第1のプロセッサは、初期設定プログラムを実行して、設定レジスタ41の値を書き換え、SEL_Cの値を設定することもできる。
続いて、半導体装置1は、第1のプロセッサ10または第2のプロセッサ11が、非共有リソース30にアクセスするために経由するバスを選択する(ステップS102)。より具体的には、例えば、第1のプロセッサ10がプログラムを実行して、設定レジスタ42に設定値を書き込む。その結果、選択部31が非ロックステップモードにおいて選択するバスが設定される。同様に、半導体装置1は、第1のプロセッサ10または第2のプロセッサ11が、非共有リソース32にアクセスするために経由するバスを選択する(ステップS103)。より具体的には、例えば、第1のプロセッサ10がプログラムを実行して、設定レジスタ43に設定値を書き込む。その結果、選択部33が非ロックステップモードにおいて選択するバスが設定される。
続いて、半導体装置1は、第1のプロセッサ10及び第2のプロセッサ11に所望の処理を開始させる(ステップS104)。
第1のプロセッサ10および第2のプロセッサ11は、それぞれ、所望のプログラムの処理を完了するまで、ステップS105からステップS112の処理を繰り返す。即ち、第1のプロセッサ10および第2のプロセッサ11は、それぞれが実行するプログラムの指示に応じて、それぞれ、非共有リソース30および32をアクセスする(ステップS105)。ロックステップモード(ステップS106:YES)においては、第1のプロセッサ10から第1のバス20を経由した非共有リソース30および非共有リソース32へのアクセスが行われる(ステップS107)。ロックステップモード(ステップS106:YES)において、選択部13は第1のバスを選択するので、第2のプロセッサ11は、インタフェース信号群15を受信する。しかし、ロックステップモード(ステップS106:YES)において、第2のプロセッサ11から第2のバス21を経由した非共有リソース30または32へのアクセスは発生しない。
一方、非ロックステップモード(ステップS106:NO)においては、第1のプロセッサ10は、SEL_P1およびSEL_P2の値にしたがって、非共有リソース30または32にアクセスする。また、非ロックステップモード(ステップS106:NO)では、選択部13は第2のバス21を選択するので、第2のプロセッサ11は、第2のバス21を経由し、SEL_P1およびSEL_P2の値にしたがって、非共有リソース30または32にアクセスする。以下では、一例として、設定レジスタ42および43が、それぞれ、0および1に設定されている(SEL_P1=0およびSEL_P2=1)場合の半導体装置1の動作を説明する。この場合、第1のプロセッサ10は非共有リソース30を専用し、第2のプロセッサ11は非共有リソース32を専用する。
第1のプロセッサ10または第2のプロセッサ11による、非共有リソース30または32へのアクセスが発生すると、それぞれ、選択部31または33により、バスアクセスが正常か否か、が判定される(ステップS109)。例えば、第1のプロセッサ10が、第1のプロセッサ10によって専用される非共有リソース30にアクセスしようとした場合、選択部31は正常なアクセスと判定する(ステップS109:YES)。一方、第1のプロセッサ10が、第2のプロセッサ11によって専用される非共有リソース32にアクセスしようとした場合、選択部33は不正アクセスと判定する(ステップS109:NO)。バスアクセスが不正と判定された場合には、半導体装置1は、アクセスエラー処理(ステップS112)を行う。例えば、半導体装置1は、アクセスエラー処理(ステップS112)として、第1のプロセッサ10に例外処理を実行させることができる。
非共有リソース30または32へのバスアクセスが正常(ステップS109:YES)と判定された場合には、選択部31または33が選択するバスが、第1のバス20であるか否かが判定される(ステップS110)。選択バスが第1のバス20である場合(ステップS110:YES)、第1のバス20経由で非共有リソース30または32へのアクセスが行われる(ステップS107)。一方、選択バスが第1のバス20でない場合(ステップS110:NO)、第2のバス21経由で非共有リソース30または32へのアクセスが行われる(ステップS111)。上述の例では、SEL_P1=0である。そのため、非共有リソース30について、第1のバス20が選択されている(ステップS110:YES)。したがって、第1のプロセッサ10から非共有リソース30へのアクセスは、第1のバス経由で行われる(ステップS107)。一方、上述の例では、SEL_P2=1である。そのため、非共有リソース32について、第2のバス21が選択されている(ステップS110:NO)。したがって、第2のプロセッサ11から非共有リソース32へのアクセスは、第2のバス経由で行われる(ステップS111)。
非共有リソース30および32へのアクセス(ステップS107、S111)またはアクセスエラー処理(ステップS112)後、第1のプロセッサ10または第2のプロセッサ11による各々のプログラムの実行が終了していない場合(ステップS108:NO)には、ステップS105以後の処理を繰り返す。一方、第1のプロセッサ10および第2のプロセッサ11による各々のプログラムの実行が終了した場合(ステップS108:YES)には、半導体装置1による処理を終了する(ステップS113)。
(効果)
実施の形態1によれば、半導体装置1は、第1のバス20と、第2のバス21と、非共有リソース30および32と、選択部13、31、および33と、を有する。このため、非ロックステップモードにおいて、第1のプロセッサ10が非共有リソース30を専用する場合には、選択部31の選択により非共有リソース30へのバスアクセスは、第1のバス20を経由するよう設定することができる。また、非ロックステップモードにおいて、第2のプロセッサ11が非共有リソース32を専用する場合には、選択部33の選択により非共有リソース32へのバスアクセスは、第2のバス21を経由するよう設定することができる。その結果、第1のプロセッサ10および第2のプロセッサ11が、それぞれ専用する非共有リソース30および32をアクセスする場合、バスアクセスの競合が起きることを抑止することができる。このように、非ロックステップモードにおいて各プロセッサが専用する各非共有リソースへのアクセス経路が完全に分離されるため、アクセス競合による半導体装置1の性能低下が生じない。また、バスアクセスの競合を抑止することができるため、QoS(Quality of Service)の担保が必要なセキュリティ等のアプリケーションに好適である。
[実施の形態2]
(構成)
次に実施の形態2について説明する。図6は、実施の形態2に係る半導体装置の構成例を示すブロック図である。実施の形態2に係る半導体装置1Aは、実施の形態1に係る半導体装置1と比較して、共有リソース50およびアービタ51を更に備える点で異なる。これ以外の構成および動作については、実施の形態1で説明した半導体装置1と同様であるので、同一の構成については同一の符号を付し、重複した説明は省略する。
共有リソース50は、非ロックステップモードにおいて、第1のプロセッサ10および第2のプロセッサ11のいずれからもアクセス可能なリソースである。換言すると、第1のプロセッサ10および第2のプロセッサ11は、共有リソースを共通して利用する。共有リソース50は、例えば、メモリや、タイマ、I/Oインタフェース回路、アナログデジタル変換回路、またはデジタルアナログ変換回路、等の周辺機能を有する回路である。共有リソース50は、アービタ51を介して第1のバス20および第2のバス21と接続される。図6には共有リソースとして共有リソース50を1つ、非共有リソースとして非共有リソース30および32を2つ備える構成例が示されているが、半導体装置1Aの構成はこれに限られない。半導体装置1Aは、第1のバス20および第2のバス21に接続される2以上の共有リソースを備えても良い。また、半導体装置1Aは、1つの非共有リソースと、任意の数の共有リソースを備えても良い。
アービタ51は、第1のバス20または第2のバス21を経由して受信した共有リソース50へのアクセス要求の処理順序を調停する。即ち、非ロックステップモードにおいて、第1のプロセッサ10が第1のバス20を経由して共有リソース50にアクセスする第1のアクセス要求と、第2のプロセッサ11が第2のバス21を経由して共有リソース50にアクセスする第2のアクセス要求とが競合して発生している場合に、アービタ51は、どちらのアクセス要求を優先して処理するかを決定する。アービタ51のアービトレーション方式は、固定優先度方式やラウンドロビン等、各種方式を取り得る。固定優先度方式のように、特定のバスからのアクセスを優先する方式を採用する場合は、いずれのバスからのアクセスを優先するのかを設定する優先度選択信号SEL_P3を実装することが望ましい。また、優先度選択信号SEL_P3は、レジスタ設定により可変としても良い。
(動作)
実施の形態2に係る半導体装置1Aの動作について説明する。半導体装置1Aがロックステップモードで動作する場合、第1のプロセッサ10は、第1のバス20を経由して非共有リソース30と、非共有リソース32と、共有リソース50とにアクセスする。半導体装置1Aがロックステップモードで動作する場合、第2のプロセッサ11は、第2のバス21を経由して、非共有リソース30、非共有リソース32、または共有リソース50のいずれにもアクセスせず、第1のバスを経由してインタフェース信号群15を受信するのみである。
次に、半導体装置1Aが非ロックステップモードで動作する場合について、SEL_P1=0およびSEL_P2=1の設定での半導体装置1Aの動作を説明する。この場合、第1のプロセッサ10は、第1のバス20を経由して、非共有リソース30、および共有リソース50にアクセスする。また、第2のプロセッサ11は、第2のバス21を経由して非共有リソース32および共有リソース50にアクセスする。
(効果)
実施の形態2によれば、半導体装置1Aは、共有リソース50と、アービタ51とを備える。このため、非ロックステップモードで動作する場合、第1のプロセッサ10および第2のプロセッサ11は、それぞれ第1のバス20および第2のバス21を経由して共有リソース50にアクセスすることができる。共有リソース50へのアクセスについて、第1のプロセッサ10からのアクセスと、第2のプロセッサ11からのアクセスとは、競合し得る。しかし、アービタ51によって、競合したアクセスは調停される。
また、実施の形態1と同様、非共有リソース30および32が利用するバスは、選択部31および33によって指定可能である。このため、例えば、第1のプロセッサ10は、第1のバス20を経由して非共有リソース30をアクセスすることができる。また、第2のプロセッサ11は、第2のバス21を経由して非共有リソース32にアクセスすることができる。非共有リソース30へのバスアクセスと、非共有リソース32へのバスアクセスとが分離されているため、第1のプロセッサ10から非共有リソース30へのアクセスと、第2のプロセッサ11から非共有リソース32へのアクセスとが競合することはない。
本実施の形態に係る半導体装置1Aは、非ロックステップモードにおいて、複数のプロセッサ間で共有するリソースをサポートすることができる。したがって、例えば共有リソース50がSRAM(Static Random Access Memory)である場合には、複数のプロセッサは、共有リソース50を介して相互にデータを授受することができる。また、例えば共有リソース50がタイマである場合には、タイマが有する同一の情報に基づいて処理を行うことができる。
[実施の形態2の変形例]
(構成)
図7は、実施の形態2の変形例に係る半導体装置の構成例を示すブロック図である。本変形例に係る半導体装置1Bは、実施の形態2に係る半導体装置1Aと比較して、共有リソース50Bがリードインタフェース(以下、「リードI/F」と呼ぶことがある)52とライトインタフェース(以下、「ライトI/F」と呼ぶことがある)53とを備える点、およびアービタ51に代えて選択部54、55を備える点で異なる。共有リソース50Bは、例えば、メモリや、タイマ、I/Oインタフェース回路、アナログデジタル変換回路、またはデジタルアナログ変換回路、等の周辺機能を有する回路である。共有リソース50Bは、選択部54および選択部55を介して第1のバス20および第2のバス21に接続され、第1のプロセッサ10および第2のプロセッサ11からアクセスが可能とされる。
リードI/F52は、共有リソース50Bからのデータ読み出しに使用されるインタフェースである。選択部54は、リードI/F52へのアクセスを、第1のバス20経由とするか、第2のバス21経由とするか、を選択する。選択部54は、制御部40Bより出力されるバス選択信号SEL_P3Rを受信して、第1のバス20または第2のバス21のいずれか一方を選択する。ロックステップモードでは、SEL_P3Rは、選択部54が第1のバス20を選択する値となる。ロックステップモードでは、リードI/F52は、第1のバス20を経由してアクセスされる。一方、非ロックステップモードでは、SEL_P3Rは、選択部54が第1のバス20を選択する値にも、第2のバス21を選択する値にも設定可能とされる。非ロックステップモードでは、リードI/F52は、SEL_P3Rの値に応じて、第1のバス20または第2のバスを経由してアクセスされる。
ライトI/F53は、共有リソース50Bへのデータ書き込みに使用されるインタフェースである。選択部55は、ライトI/F55へのアクセスを、第1のバス20経由とするか、第2のバス21経由とするか、を選択する。選択部55は、制御部40Bより出力されるバス選択信号SEL_P3Wを受信して、第1のバス20または第2のバス21のいずれか一方を選択する。ロックステップモードでは、SEL_P3Wは、選択部55が第1のバス20を選択する値となる。ロックステップモードでは、ライトI/F53は、第1のバス20を経由してアクセスされる。一方、非ロックステップモードでは、SEL_P3Wは、選択部55が第1のバス20を選択する値にも、第2のバス21を選択する値にも設定可能とされる。非ロックステップモードでは、ライトI/F53は、SEL_P3Wの値に応じて、第1のバス20または第2のバス21を経由してアクセスされる。
図7では、リードI/F54およびライトI/F55の両者に対して、選択部54および選択部55が備えられているが、半導体装置1Bの構成はこれに限られない。例えば、選択部54および選択部55の少なくとも一方に、図6のアービタ51と同様のバスアクセス調停機能を実装しても良い。選択部54および55がアービタと同様のバスアクセス調停機能を実装する場合には、SEL_P3R及びSEL_P3Wは、図6のSEL_P3と同様に、いずれのバスからのアクセスを優先するかを設定する優先度選択信号として実装することが望ましい。
なお、図6および図7の選択部31および33と、図7の選択部54および55と、図6のアービタ51は、上述の選択機能とアービトレーション機能の両方を実装しても良い。
制御部40Bに含まれるSEL_P3R、SEL_P3Wの生成に係る回路は、図2におけるSEL_P1,SEL_P2の生成に係る回路と同様である。図2では、バス選択信号SEL_P1及びSEL_P2は、0と1の2値を示す。上述の様に選択機能とアービトレーション機能の両方を実装する場合には、バス選択信号SEL_P1およびSEL_P2は、実装した機能の選択が可能な様に3値以上を取る様に設定レジスタの数を増やして実現することができる。
(動作)
本変形例に係る半導体装置1Bの動作について説明する。半導体装置1Bがロックステップモードで動作する場合、第1のプロセッサ10は、第1のバス20を経由して非共有リソース30、非共有リソース32、および、共有リソース50Bへアクセスする。半導体装置1Bがロックステップモードで動作する場合、第2のプロセッサ11は、第2のバス21を経由して非共有リソース30、非共有リソース32、または共有リソース50Bのいずれに対してもアクセスせず、第1のバスを経由してインタフェース信号群15を受信するのみである。一方、半導体装置1Bが非ロックステップモードで動作する場合、例えばSEL_P1=0、SEL_P2=1、SEL_P3R=0およびSEL_P3W=1の設定の下では、第1のプロセッサは、第1のバス20を経由して非共有リソース30および共有リソース50BのリードI/F52にアクセスする。また、半導体装置1Bが非ロックステップモードで動作する場合、例えばSEL_P1=0、SEL_P2=1、SEL_P3R=0およびSEL_P3W=1の設定の下では、第2のプロセッサ11は、第2のバス21を経由して非共有リソース32および共有リソース50BのライトI/F53にアクセスする。このように、SEL_P3R=0およびSEL_P3W=1の設定の下では、選択部54および選択部55は、第1のバス20および第2のバス21のうち、互いに異なるバスを選択する。
(効果)
本変形例に係る半導体装置1Bにおいて、共有リソース50BはリードI/F52とライトI/F53とを備える。また、半導体装置1Bは、リードI/F52にアクセスするために利用するバスを選択する選択部54と、ライトI/F53にアクセスするために利用するバスを選択する選択部55とを更に備える。リードI/F54にアクセスするために利用するバスは、選択部54での選択により、第1のバス20または第2のバス21のいずれか一方とされる。同様に、ライトI/F55にアクセスするために利用するバスは、選択部55での選択により、第1のバス20または第2のバス21のいずれか一方とされる。そして、選択部54と選択部55は、第1のバス20および第2のバス21のうち、互いに異なるバスを選択するよう設定され得る。したがって、共有リソース50Bへのライトアクセスとリードアクセスとが競合し、半導体装置1Bの処理性能が低下することを抑止することができる。
また、実施の形態1と同様、非共有リソース30および32が利用するバスは、選択部31および33によって選択可能である。このため、例えば、非共有リソース30は、第1のバス20を経由してアクセス可能とすることができる。また、非共有リソース32は、第2のバス21を経由してバスアクセス可能とすることができる。非共有リソース30へのバスアクセスと、非共有リソース32へのバスアクセスとが分離されているため、第1のプロセッサ10から非共有リソース30へのアクセスと、第2のプロセッサ11から非共有リソース32へのアクセスとが競合することはない。したがって、非共有リソース30および32へのアクセスが競合し、半導体装置1Bの処理性能が低下することを抑止することができる。
[実施の形態3]
(構成)
図8は、実施の形態3に係る半導体装置の構成例を示すブロック図である。実施の形態3に係る半導体装置1Cは、実施の形態1に係る半導体装置1と比較して、DMAC(Direct Memory Access Controller)60および61を更に備える点で異なる。これ以外の構成および動作については、実施の形態1で説明した半導体装置1と同様であるので、同一の構成については同一の符号を付し、重複した説明は省略する。
DMAC60は、第1のバスマスタであり、第1のバス20経由で第1のプロセッサ10によって設定される動作指示に基づいて、転送元アドレスで指定されるデータを読み出し、読み出したデータを転送先アドレスに書き込む機能を有する。DMAC60は、第1のバス20を経由して、非共有リソース30または非共有リソース32と通信を行う。
DMAC61は、第2のバスマスタであり、第2のバス21経由で第2のプロセッサ11によって設定される動作指示に基づいて、転送元アドレスで指定されるデータを読み出し、読み出したデータを転送先アドレスに書き込む機能を有する。DMAC61は、第2のバス21を経由して、非共有リソース30または非共有リソース32と通信を行う。
(動作)
ロックステップモードにおいては、第1のプロセッサ10による設定に基づき、DMAC60が第1のバス20を経由して非共有リソース30および32にアクセスする。非ロックステップモードにおいては、DMAC60は、第1のプロセッサ10が第1のバス20経由で設定したDMA(Direct Memory Access)転送設定に基づき、第1のバス20を経由して非共有リソース30または非共有リソース32にアクセスする。また、DMAC61は、第2のプロセッサ11が第2のバス21経由で設定したDMA転送設定に基づき、第2のバス21を経由して非共有リソース30または非共有リソース32にアクセスする。DMAC60およびDMAC61がアクセスできる非共有リソースは、レジスタ42および43の値によって決められる。例えば、バス選択信号の値がSEL_P1=0およびSEL_P2=1の場合、非ロックステップモードにおいて、DMAC60は、第1のバス20を経由して非共有リソース30をアクセスする。また、DMAC61は、第2のバス21を経由して非共有リソース32をアクセスする。
(効果)
実施の形態3によれば、半導体装置1Cは、DMAC60と、DMAC61とを備える。このため、プロセッサに加え、バスマスタ機能をもつDMACが処理するDMA転送についても、DMAC60およびDMAC61のアクセス経路を第1のバスと第2のバスとに分離することができる。したがって、非ロックステップモードにおいて、第1のプロセッサ10からDMAC60へのDMA転送の設定指示およびDMAC60による第1のバス20上のDMA転送は、第2のプロセッサ11からDMAC61へのDMA転送の設定指示および第2のバス21上のDMA転送とアクセス競合しない。したがって、半導体装置がプロセッサに加え、他のバスマスタを備える場合でも、バス上のアクセス競合により性能劣化が生じることを抑止することができる。
なお、図8においてはDMAC60および61をバスマスタの例として説明したが、半導体装置1Cの構成は、これに限られない。DMAC60および61は、他のバスマスタ機能を有する任意の周辺機能回路であっても良い。
図8の構成例では、DMAC60と第1のプロセッサ10は、バスマスタとして第1のバス20を共有している。また、DMAC61と第2のプロセッサ11は、バスマスタとして第2のバス21を共有している。図8の構成例とは異なり、DMAC60またはDMAC61のために、更に第3のバス(図示せず)を追加し、そのバスを介して非共有リソース等と通信を行っても良い。この場合、選択部31および33は、第3のバスをも選択可能な様に拡張されることが望ましい。しかし、選択部31および33は、必ずしも全てのバスに接続可能なように構成しなくても良い。
更に、半導体装置1Cは、必要に応じて第1のバスに接続されるバスマスタ機能をもつ周辺機能を複数備えても良い。同様に、半導体装置1Cは、第2のバスに接続されるバスマスタ機能をもつ周辺機能を複数備えても良い。また、半導体装置1Cは、DMAC60または61のいずれか一方を有しないよう構成されても良い。
[実施の形態4]
(構成)
図9は、実施の形態4に係る半導体装置の構成例を示すブロック図である。実施の形態4に係る半導体装置1Dは、実施の形態1に係る半導体装置1と比較して、非共有リソース32が非共有リソース32Dに置き換えられている点で異なる。これ以外の構成および動作については、実施の形態1で説明した半導体装置1と同様であるので、同一の構成については同一の符号を付し、重複した説明は省略する。
半導体装置1Dにおいて、非共有リソース32Dは、暗号コプロセッサである。暗号コプロセッサは、暗号処理に関する処理を行う補助プロセッサである。半導体装置1Dが非ロックステップモードで動作する場合、例えば、第2のプロセッサが暗号コプロセッサ32Dを専用する。
(効果)
実施の形態4によれば、半導体装置1Dは、第1のバス20と、第2のバス21と、選択部13と、選択部31および33と、非共有リソースである暗号コプロセッサ32Dと、を備える。そのため、半導体装置1Dは、例えば、第1のプロセッサ10が接続される第1のバス20と、第2のプロセッサ11と暗号コプロセッサ32Dとが接続される第2のバス21とを分離した構造とすることができる。セキュリティ分野のアプリケーションプログラムにおいては、他のアプリケーションプログラムとの分離や、QoSの担保が必要とされることが多い。本実施の形態に係る半導体装置1Dでは、非ロックステップモードにおいて、非共有リソースである暗号コプロセッサ32Dへのアクセス経路を第1のプロセッサが利用するアクセス経路から分離することができるため、セキュリティ分野のアプリケーションを実現するのに好適である。
以上、本発明によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更され得る。例えば、実施の形態2のバススレーブ側の拡張は、実施の形態3のバスマスタ側の拡張と組み合わせることが可能である。また、実施の形態3に係るDMAC60および61は、選択部やアービタを介して、それぞれ、第1のバス20および第2のバス21に接続されても良い。
1、1A、1B、1C、1D 半導体装置
10 第1のプロセッサ
11 第2のプロセッサ
12 比較器
13 選択部
14 インタフェース信号群(第4のインタフェース信号群)
15 インタフェース信号群(第1のインタフェース信号群)
16 インタフェース信号群(第3のインタフェース信号群)
17 インタフェース信号群(第2のインタフェース信号群)
18 インタフェース信号群(第5のインタフェース信号群)
20 第1のバス
21 第2のバス
30 非共有リソース
31 選択部
32 非共有リソース
32D 暗号コプロセッサ
33 選択部
40、40A、40B 制御部
41、42、43 フリップフロップ
44、45 マルチプレクサ
50、50B 共有リソース
51 アービタ
52 リードI/F
53 ライトI/F
54、55 選択部
60 DMAC
61 DMAC
SEL_C 非ロックステップモード有効信号
SEL_P1、SEL_P2、SEL_P3R、SEL_P3W バス選択信号
SEL_P3 優先度選択信号

Claims (18)

  1. 第1のプロセッサと、
    第1のモードにおいて、前記第1のプロセッサの動作を監視する第2のプロセッサと、
    第2のモードにおいて、前記第1のプロセッサまたは前記第2のプロセッサのいずれかが専用する第1の非共有リソースおよび第2の非共有リソースと、
    前記第1のプロセッサと、前記第2のプロセッサと、前記第1の非共有リソースと、前記第2の非共有リソースと、が接続される第1のバスと、
    前記第2のプロセッサと、前記第1の非共有リソースと、前記第2の非共有リソースと、が接続される第2のバスと、
    第1の選択部と、
    第2の選択部と、
    第3の選択部と、
    を具備し、
    前記第1の選択部は、前記第1のバスまたは前記第2のバスのいずれかを選択し、前記第1の選択部は、前記第1の選択部で選択されたバスと前記第2のプロセッサの間で、インタフェース信号群を伝達し、
    前記第2の選択部は、前記第1のバスまたは前記第2のバスのいずれかを選択し、前記第1の非共有リソースは、前記第2の選択部で選択されたバスを経由して、前記第1のプロセッサまたは前記第2のプロセッサからアクセスされ、
    前記第3の選択部は、前記第1のバスまたは前記第2のバスのいずれかを選択し、前記
    第2の非共有リソースは、前記第3の選択部で選択されたバスを経由して、前記第1のプロセッサまたは前記第2のプロセッサからアクセスされ、
    前記第1のプロセッサと前記第2のプロセッサとが同一の命令ストリームを実行する前記第1のモードでは、前記第1の選択部は、前記第1のバスを選択し、前記第1のバスから前記第2のプロセッサに、前記インタフェース信号群に含まれる第1のインタフェース信号群を伝達し、
    前記第1のプロセッサと前記第2のプロセッサが異なる命令ストリームを実行する前記第2のモードでは、前記第2の選択部は前記第1のバスを選択し、前記第3の選択部は前記第2のバスを選択し、前記第1の選択部は前記第2のバスを選択して、前記第2のバスから前記第2のプロセッサに、前記インタフェース信号群に含まれる第2のインタフェース信号群を伝達する、
    半導体装置。
  2. 前記第2のモードにおいて、前記第1のプロセッサは前記第1のバスを経由して前記第1の非共有リソースにアクセスし、前記第2のプロセッサは前記第2のバスを経由して前記第2の非共有リソースにアクセスする、
    請求項1に記載の半導体装置。
  3. 前記第2のプロセッサは、前記第1の選択部に対して、前記インタフェース信号群に含まれる第3のインタフェース信号群を出力し、
    前記第1のプロセッサは、前記第1のバスに対して、前記インタフェース信号群に含まれない第4のインタフェース信号群を出力し、
    前記第3のインタフェース信号群と前記第4のインタフェース信号群とが異なる場合にエラー信号を活性化する比較器を更に具備する、
    請求項1または請求項2に記載の半導体装置。
  4. 前記第1の選択部は、前記第1のモードでは、前記第3のインタフェース信号群が前記第1のバスに送信されることを防止し、前記第2のモードでは、前記第3のインタフェース信号群を前記第2のバスに伝達する、
    請求項3に記載の半導体装置。
  5. 前記第2のモードにおいて、前記第1の選択部は、前記第2のプロセッサから前記第1の非共有リソースへのアクセスを不正アクセスとして検出し、前記第2の選択部は、前記第1のプロセッサから前記第2の非共有リソースへのアクセスを不正アクセスとして検出する、
    請求項1から請求項4までのいずれか1項に記載の半導体装置。
  6. 前記第2のモードにおいて、前記第2の選択部および前記第3の選択部による、前記第1のバスまたは前記第2のバスの選択は、それぞれ、可変である、
    請求項1から請求項5までのいずれか1項に記載の半導体装置。
  7. 前記第1のプロセッサおよび前記第2のプロセッサが共通して利用する共有リソースを更に具備し、
    前記第2のモードにおいて、前記第1のプロセッサは、前記第1のバスを経由して前記共有リソースをアクセスし、前記第2のプロセッサは、前記第2のバスを経由して前記共有リソースをアクセスする、
    請求項1から請求項6までのいずれか1項に記載の半導体装置。
  8. 前記第1のプロセッサおよび前記第2のプロセッサが共通して利用する共有リソースと、第4の選択部と、第5の選択部と、を更に具備し、
    前記共有リソースは、リードインタフェースとライトインタフェースとを具備し、
    前記第4の選択部は、前記第1のバスまたは前記第2のバスのいずれかを選択し、前記共有リソースは、前記第4の選択部で選択されたバスを経由して、前記第1のプロセッサまたは前記第2のプロセッサからアクセスされ、
    前記第5の選択部は、前記第1のバスまたは前記第2のバスのいずれかを選択し、前記共有リソースは、前記第5の選択部で選択されたバスを経由して、前記第1のプロセッサまたは前記第2のプロセッサからアクセスされる、
    請求項1から請求項6までのいずれか1項に記載の半導体装置。
  9. 前記第2のモードにおいて、前記第4の選択部と前記第5の選択部は、前記第1のバスおよび前記第2のバスのうち、互いに異なるバスを選択する、
    請求項8に記載の半導体装置。
  10. 前記第2のモードにおいて、前記第1のプロセッサが、前記第1のバスを経由して、前記共有リソースにリードアクセスする場合には、前記第2のプロセッサは、前記第2のバスを経由して、前記共有リソースにライトアクセスし、
    前記第2のモードにおいて、前記第1のプロセッサが、前記第1のバスを経由して、前記共有リソースにライトアクセスする場合には、前記第2のプロセッサは、前記第2のバスを経由して、前記共有リソースにリードアクセスする、
    請求項9に記載の半導体装置。
  11. 第1のバスマスタと、第2のバスマスタと、を更に具備し、
    前記第1のバスマスタは、前記第1のバスに接続され、
    前記第2のバスマスタは、前記第2のバスに接続される、
    請求項1から請求項10までのいずれか1項に記載の半導体装置。
  12. 前記第2の非共有リソースは、暗号に関する処理を行う暗号コプロセッサである、
    請求項1から請求項11までのいずれか1項に記載の半導体装置。
  13. 第1および第2のプロセッサと、第1および第2の非共有リソースと、第1および第2のバスと、第1ないし第3の選択部と、を備え、前記第1のプロセッサは前記第1のバスと接続される半導体装置の動作方法であって、
    第1もしくは第2の動作モードのいずれかを設定するステップと、
    前記第1の動作モードにおいて、前記第1のプロセッサおよび第2のプロセッサが同一の命令ストリームを実行するステップと、
    前記第2の動作モードにおいて、前記第1のプロセッサおよび前記第2のプロセッサが異なる命令ストリームを実行するステップと、
    を有し、
    前記同一の命令ストリームを実行するステップは、
    前記第1の選択部により前記第1のバスを選択して、前記第2のプロセッサと前記第1のバスを接続するステップと、
    前記第2の選択部により前記第1のバスを選択して、前記第1の非共有リソースと前記第1のバスを接続するステップと、
    前記第3の選択部により前記第1のバスを選択して、前記第2の非共有リソースと前記第1のバスを接続するステップと、
    前記第1のプロセッサにより、前記第1のバスおよび前記第2の選択部を介して、前記第1の非共有リソースまたは前記第2の非共有リソースをアクセスするステップと、
    前記第2の選択部を介して、前記第1のバスから前記第2のプロセッサにインタフェース信号群を伝達するステップと、
    前記第1のプロセッサと前記第2のプロセッサの出力を比較するステップと、を含み、
    前記異なる命令ストリームを実行するステップは、
    前記第1の選択部により前記第2のバスを選択して、前記第2のプロセッサと前記第2のバスを接続するステップと、
    前記第2の選択部により前記第1のバスを選択して、前記第1の非共有リソースと前記第1のバスを接続するステップと、
    前記第3の選択部により前記第2のバスを選択して、前記第2の非共有リソースと前記第2のバスを接続するステップと、
    前記第1のプロセッサにより、前記第1のバスおよび前記第2の選択部を介して、前記第1の非共有リソースをアクセスするステップと、
    前記第2のプロセッサにより、前記第1の選択部と、前記第2のバスと、前記第3の選択部を介して、前記第2の非共有リソースをアクセスするステップと、を含む、
    半導体装置の動作方法。
  14. 前記異なる命令ストリームを実行するステップは、前記第1のプロセッサによる前記第2の非共有リソースへのアクセスと、前記第2のプロセッサによる前記第1の非共有リソースへのアクセスと、を不正アクセスと判定するステップを更に含む、
    請求項13に記載の半導体装置の動作方法。
  15. 前記半導体装置は、共有リソースを更に具備し、
    前記異なる命令ストリームを実行するステップは、
    前記第1のプロセッサにより、前記第1のバスを経由して、前記共有リソースをアクセスするステップと、
    前記第2のプロセッサにより、前記第1の選択部および前記第2のバスを介して、前記共有リソースをアクセスするステップと、
    を更に含む、
    請求項13または請求項14に記載の半導体装置の動作方法。
  16. 前記半導体装置は、第1のバスマスタおよび第2のバスマスタを更に具備し、
    前記異なる命令ストリームを実行するステップは、
    前記第1のバスマスタを前記第1のバスに接続するステップと、
    前記第2のバスマスタを前記第2のバスに接続するステップと、を更に含む、
    請求項13から請求項15までのいずれか1項に記載の半導体装置の動作方法。
  17. 前記異なる命令ストリームを実行するステップは、前記第2の非共有リソースにより、暗号に関する処理を実行するステップを更に含む、
    請求項13から請求項16までのいずれか1項に記載の半導体装置の動作方法。
  18. 第1のプロセッサと、
    第1のモードにおいて前記第1のプロセッサの動作を監視する第2のプロセッサと、
    前記第1のプロセッサおよび前記第2のプロセッサが共通して利用する共有リソースと、
    第2のモードにおいて、前記第2のプロセッサが専用する非共有リソースと、
    前記第1のプロセッサと、前記第2のプロセッサと、前記共有リソースと、前記非共有リソースと、が接続される第1のバスと、
    前記第2のプロセッサと、前記共有リソースと、前記非共有リソースと、が接続される第2のバスと、
    第1の選択部と、
    第2の選択部と、を具備し、
    前記第1の選択部は、前記第1のバスまたは前記第2のバスのいずれかを選択し、前記第1の選択部は、前記第1の選択部で選択されたバスと前記第2のプロセッサの間で、インタフェース信号群を伝達し、
    前記第2の選択部は、前記第1のバスまたは前記第2のバスのいずれかを選択し、前記非共有リソースは、前記第2の選択部で選択されたバスを経由して、前記第1のプロセッサまたは前記第2のプロセッサからアクセスされ、
    前記第1のプロセッサと前記第2のプロセッサとが同一の命令ストリームを実行する前記第1のモードでは、前記第1の選択部は前記第1のバスを選択し、前記第1のバスから前記第2のプロセッサに前記インタフェース信号群に含まれる第1のインタフェース信号群を伝達し、
    前記第1のプロセッサと前記第2のプロセッサが異なる命令ストリームを実行する前記第2のモードでは、前記第2の選択部は前記第2のバスを選択し、前記第1の選択部は前記第2のバスを選択して、前記第2のバスから前記第2のプロセッサに、前記インタフェース信号群に含まれる第2のインタフェース信号群を伝達する、
    半導体装置。
JP2019111998A 2019-06-17 2019-06-17 半導体装置及びその動作方法 Active JP7169942B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019111998A JP7169942B2 (ja) 2019-06-17 2019-06-17 半導体装置及びその動作方法
US16/853,139 US10997105B2 (en) 2019-06-17 2020-04-20 Semiconductor device and method of operating the same
CN202010469650.6A CN112100002A (zh) 2019-06-17 2020-05-28 半导体装置和操作半导体装置的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019111998A JP7169942B2 (ja) 2019-06-17 2019-06-17 半導体装置及びその動作方法

Publications (2)

Publication Number Publication Date
JP2020204877A true JP2020204877A (ja) 2020-12-24
JP7169942B2 JP7169942B2 (ja) 2022-11-11

Family

ID=73746501

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019111998A Active JP7169942B2 (ja) 2019-06-17 2019-06-17 半導体装置及びその動作方法

Country Status (3)

Country Link
US (1) US10997105B2 (ja)
JP (1) JP7169942B2 (ja)
CN (1) CN112100002A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11474151B2 (en) * 2020-12-30 2022-10-18 Texas Instruments Incorporated Lockstep comparators and related methods

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07182189A (ja) * 1993-12-24 1995-07-21 Mitsubishi Electric Corp 計算機システム及びプロセッサチップ及び障害復旧方法
JPH0966983A (ja) * 1995-09-01 1997-03-11 Sony Corp ディスクカートリッジ用ケース
JP2010198131A (ja) * 2009-02-23 2010-09-09 Renesas Electronics Corp プロセッサシステム、及びプロセッサシステムの動作モード切り替え方法
JP2019016107A (ja) * 2017-07-05 2019-01-31 株式会社デンソー マイクロコンピュータ

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07182189A (ja) * 1993-12-24 1995-07-21 Mitsubishi Electric Corp 計算機システム及びプロセッサチップ及び障害復旧方法
JPH0966983A (ja) * 1995-09-01 1997-03-11 Sony Corp ディスクカートリッジ用ケース
JP2010198131A (ja) * 2009-02-23 2010-09-09 Renesas Electronics Corp プロセッサシステム、及びプロセッサシステムの動作モード切り替え方法
JP2019016107A (ja) * 2017-07-05 2019-01-31 株式会社デンソー マイクロコンピュータ

Also Published As

Publication number Publication date
CN112100002A (zh) 2020-12-18
US20200394147A1 (en) 2020-12-17
US10997105B2 (en) 2021-05-04
JP7169942B2 (ja) 2022-11-11

Similar Documents

Publication Publication Date Title
US8234428B2 (en) Arbitration device that arbitrates conflicts caused in data transfers
US7805555B2 (en) Multiprocessor system
JP3807250B2 (ja) クラスタシステム、コンピュータ及びプログラム
JP2004531830A (ja) キャッシュメモリバーストサイクル中にバスアービトレーションを制御するためのシステム及び方法
US8583845B2 (en) Multi-processor system and controlling method thereof
JP4457047B2 (ja) マルチプロセッサシステム
JP4874165B2 (ja) マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス権設定方法
JP2011175625A (ja) インターラプトプロキシ機能を具備したシステムオンチップ及びそのインターラプトプロキシ処理方法
JP4971676B2 (ja) 割り込み制御回路及び割り込み制御方法
JP2008046890A (ja) マルチプロセッサシステム
JP7169942B2 (ja) 半導体装置及びその動作方法
JP5322567B2 (ja) データ処理システム及び半導体集積回路
US10269194B2 (en) Multiprocessor system and vehicle control system
JP2007087247A (ja) バス制御システム
JP7233932B2 (ja) 仮想割り込みサービスプロバイダのためのサービス要求割り込みルータ
JP2012133458A (ja) マイコン、リソース割り当て方法
US9959173B2 (en) Node, arithmetic processing device, and arithmetic processing method
JP7295780B2 (ja) 半導体装置及びその動作方法
JP3852882B2 (ja) マスタスレーブ装置
JP6535516B2 (ja) マルチ・プログラマブルデバイス・システムとその制御方法
US10733125B2 (en) Microcomputer
JP2009157731A (ja) 仮想計算機システムおよび仮想計算機システムの制御方法
JP2017107441A (ja) 情報処理装置、並びに、その制御装置および制御方法
JP2010079369A (ja) データ処理システム、データプロセッサ及びバス調停方法
JP5166590B2 (ja) マルチプロセッサシステム及び割り込み制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211104

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220920

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221031

R150 Certificate of patent or registration of utility model

Ref document number: 7169942

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150