JP7042709B2 - 半導体装置、制御システムおよび半導体装置の制御方法 - Google Patents

半導体装置、制御システムおよび半導体装置の制御方法 Download PDF

Info

Publication number
JP7042709B2
JP7042709B2 JP2018123381A JP2018123381A JP7042709B2 JP 7042709 B2 JP7042709 B2 JP 7042709B2 JP 2018123381 A JP2018123381 A JP 2018123381A JP 2018123381 A JP2018123381 A JP 2018123381A JP 7042709 B2 JP7042709 B2 JP 7042709B2
Authority
JP
Japan
Prior art keywords
processor
software
execution result
snoop
memory
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
JP2018123381A
Other languages
English (en)
Other versions
JP2020004108A (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 JP2018123381A priority Critical patent/JP7042709B2/ja
Priority to US16/446,195 priority patent/US10860486B2/en
Priority to CN202310957401.5A priority patent/CN116774947A/zh
Priority to CN201910548857.XA priority patent/CN110658988B/zh
Priority to EP19182508.2A priority patent/EP3588309B1/en
Publication of JP2020004108A publication Critical patent/JP2020004108A/ja
Priority to US17/112,702 priority patent/US11544192B2/en
Application granted granted Critical
Publication of JP7042709B2 publication Critical patent/JP7042709B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • G06F11/167Error detection by comparing the memory output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/063Address space extension for I/O modules, e.g. memory mapped I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/845Systems in which the redundancy can be transformed in increased performance

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Microcomputers (AREA)

Description

本開示は半導体装置に関し、より特定的には、半導体装置におけるロックステップに関する。
昨今、より高い機能安全のレベルが求められている。ISO26262の機能安全として、ASIL(Automotive Safety Integrity Level)が規定されている。安全レベルが低いものから、QM(Quality Management)/ASIL A/ASIL B/ASIL C/ASIL Dと規定されている。ASIL Bレベルでは、動作中に発生する故障の90%以上が検知されなければならず、ASIL Dレベルでは、99%以上の故障が検知されなければならない。例えば、ISO26262に準拠した車載電子システムでは、ASIL Dが要求される。具体的には、ASIL Dレベルの機能安全には、ロックステップと呼ばれる、2つ以上のハードウェアの演算で得られた結果を比較一致させるような高いレベルの故障検出性能が求められる。
ロックステップに関し、例えば、特開2014-56396号公報(特許文献1)は、「複数のプロセッサコアが正常に同じプログラムを実行しているか否かを判定するとともに、メモリチェックの実行機会を確保する電子制御装置」を開示している([要約])。
特開2014-56396号公報
特許文献1に開示された技術によれば、機能安全レベルは高いが1つの動作しかできないデュアルコア・ロックステップのモードと、機能安全レベルは通常であるが2つのコアがそれぞれ動作できるモードとを切り替えることができる。しかしながら、デュアルコア・ロックステップのモードへの切り替えの際には、2つのコアが同期をとるためにリセットが必要となり、数ミリ秒程度の処理停止期間が生じ、性能が低下する場合がある。したがって、機能安全レベルを維持しつつ性能が低下しない技術が必要とされている。
本開示は、上述のような問題点を解決するためになされたものであって、ある局面において、機能安全レベルを維持しつつ性能が低下しない半導体装置が開示される。他の局面において、機能安全レベルを維持しつつ性能が低下しない制御システムが開示される。さらに他の局面において、機能安全レベルを維持しつつ性能が低下しないように半導体装置を制御する方法が開示される。
ある実施の形態に従う半導体装置は、キャッシュを有し、ソフトウェアロックステップと通常動作とを実行するための第1および第2のプロセッサと、メモリと、メモリに接続され、アドレスプロテクト機能を有するアービタと、アービタに接続されたバスと、第1のプロセッサとバスとに接続され、第1のプロセッサによる第2のプロセッサのキャッシュへのスヌープ動作を制御するための第1のスヌープ制御回路と、第2のプロセッサとバスとに接続され、第2のプロセッサによる第1のプロセッサのキャッシュへのスヌープ動作を制御するための第2のスヌープ制御回路と、ソフトウェアロックステップと通常動作とを切り替えるための制御装置とを備える。制御装置は、通常動作が実行される場合に、第1のスヌープ制御回路および第2のスヌープ制御回路に対して、各スヌープ動作を許可し、ソフトウェアロックステップが実行される場合に、第1のスヌープ制御回路および第2のスヌープ制御回路に対して、各スヌープ動作を禁止し得る。第1のプロセッサは、ソフトウェアロックステップのための第1のソフトウェアを実行し、第1のプロセッサのためにメモリに確保された第1の領域に、第1のソフトウェアの実行結果を書き込み得る。第2のプロセッサは、ソフトウェアロックステップのための第2のソフトウェアを実行し、第1の領域と異なる第2の領域に、第2のソフトウェアの実行結果を書き込み得る。半導体装置は、第1の領域に書き込まれた実行結果と、第2の領域に書き込まれた実行結果とを比較する比較器をさらに備える。
ある局面において、半導体装置の機能安全レベルを維持しつつ性能の低下を防止し得る。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
半導体装置1のハードウェア構成を表わすブロック図である。 ソフトウェアロックステップを実行可能な半導体装置2の構成の概略を表わすブロック図である。 SPU210,220の構成の詳細を説明するための図である。 半導体装置2の動作を表わすフローチャート(その1)である。 半導体装置2の動作を表わすフローチャート(その2)である。 半導体装置2の動作を表わすフローチャート(その3)である。 半導体装置2の動作を説明するための図(その1)である。 半導体装置2の動作を説明するための図(その2)である。 半導体装置2の動作を説明するための図(その3)である。 半導体装置2の動作を説明するための図である。 ソフトウェアロックステップが行なわれない場合の設定を説明するための図である。 スヌープが誤って他のCPUに対して行なわれた場合の保護を説明する図である。 メモリ260内においてアドレスエリアを跨ぐアクセスのプロテクトについて説明する図である。 スヌープを許可する場合の動作を説明する図である。 スヌープが許可されている場合の動作を表わす図である。 ソフトウェアロックステップが行なわれていない場合の半導体装置2の動作を説明する図である。 ある局面に従う半導体装置3におけるデータの流れを表わす図である。 ある局面に従う半導体装置4の構成の概略を表わすブロック図である。 半導体装置4におけるデータの流れを表わす図である。 半導体装置4が実行する処理の一部を表わすフローチャートである。 半導体装置5におけるデータフローを表わす図である。 半導体装置5におけるCPUのプログラムの実行結果の出力を説明するための図である。 半導体装置5におけるソフトウェアロックステップのプログラムの実行結果の比較を説明するための図である。 半導体装置6の構成を表わすブロック図である。 半導体装置6におけるデータのフローを説明するための図である。 半導体装置6の制御構造を説明するためのフローチャートである。 半導体装置6における処理の一部を表わすフローチャートである。 対象エリアに格納されているデータの読み出しを説明するための図である。 比較器252による比較の動作を説明するための図である。
以下、図面を参照しつつ、本開示に係る技術思想の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
[第1の実施の形態]
図1を参照して、ある局面に従ってソフトウェアロックステップ(SWLS)を行なう半導体装置1の構成について説明する。図1は、半導体装置1のハードウェア構成を表わすブロック図である。本実施の形態において、ソフトウェアロックステップとは、複数のコアが同一の結果になるプログラムを実行し、これらのコア以外の比較装置によってその結果が同一であることを確認することで、これらのコアの故障の検知を行なう方法をいう。より具体的には、機能安全レベルが通常である二つのコアが、クロックサイクル単位で同期をとることなく、アプリケーション単位あるいは関数単位でプログラムを実行し、実行結果が比較される。この時、各コアへの入力がクロックサイクル単位で同じであることが求められるデュアルコアロックステップと異なり、本実施の形態に従うソフトウェアロックステップでは、各コアへの入力タイミングは任意でよく、各コアの同期をとる必要はない。
半導体装置1は、CPU(Central Processing Unit)10,20と、バス30と、処理部40と、アービタ50と、メモリ60とを備える。CPU10は、コア11と、MMU(Memory Management Unit)12と、キャッシュ13とを含む。CPU20は、コア21と、MMU22と、キャッシュ23とを含む。CPU10,20は、それぞれ、バス30に接続されている。バス30と、処理部40と、メモリ60とが、アービタ50に接続されている。
CPU10,20は、機能安全を適用しなくてもよい通常の品質管理(Quality Management(QM))クラスのプロセッサである。CPU10,20は、データをキャッシュに保存し得る。ある局面において、CPU20は、データをキャッシュ23に格納して、メモリ60に当該データを書き込んでいない場合がある。そのような場合において、CPU20以外のプロセッサ、例えばCPU10が、当該データを扱いたい時、CPU10は、所謂スヌープと呼ばれる処理、すなわち、CPU20のキャッシュ23にアクセスして当該データを読み込む等の処理を行う必要がある。スヌープを行なうことにより、コア11,21間で高速にデータをやり取りできるので、スヌープがない場合と比べて、演算速度等の性能が大きく向上し得る。
コア11,21は、演算処理回路を含む。MMU12は、メモリのアドレス変換、メモリ60へのアクセスの保護、キャッシュ13へのアクセスを制御する。MMU22は、メモリのアドレス変換、メモリ60へのアクセスの保護、キャッシュ23へのアクセスを制御する。
バス30は、キャッシュコヒーレントインターコネクト(CCI)であり、例えば、CPU10によるキャッシュへのアクセスを扱う。バス30は、ASIL Dクラスに対応する(以下、適宜、「ASIL Dクラス」は「ASIL D対応」あるいは「ASIL Dレベル」と表わすこともあり、他の場合も同様である)。
処理部40は、キャッシュを有さない演算器であり得る。処理部40は、ASIL BクラスおよびASIL Dクラスのいずれであってもよい。
アービタ50は、アドレスの保護機能を有し、CPU10,20、バス30、処理部40によるメモリ60へのアクセスを調停する。
メモリ60は、例えば、DDR(Double Data Rate)タイプのメモリである。
ある局面に従う半導体装置1によれば、CPU10,20間のスヌープを防ぐためには、例えば、MMU12,22がスヌープを保護することが考えられる。しかしながら、MMU12,22自体がロックステップの対象であるため、スヌープを防ぐためにMMU12,22を使用することはできない。あるいは、CPU10,20がスヌープをできないように構成することも考えられる。この場合、スヌープを行なっても問題がない場合でもスヌープができなくなるため、処理の遅延のように半導体装置1の性能が悪化する恐れがある。
なお、本実施の形態において、ソフトウェアやハードウェアのバグによる故障をシステマティックフォールトと呼び、ハードウェアが宇宙線や経年劣化で故障することをランダムハードウェアフォールトと呼ぶ。CPUがASIL D対応であるとは、単独で(ソフトウェアロックステップを使用せずに)システマティック・フォールトとランダムハードウェア・フォールトの両方において、ASIL Dクラスに対応するCPUであることをいう。また、ソフトウェアロックステップに使用されるハードウェアは、システマティック・フォールトの観点ではASIL Dクラスとし、ランダムハードウェア・フォールトの観点では、単体では、ASIL Dクラスではないものを指すとする。例えば、ソフトウェアロックステップが行なわれない場合には、当該ハードウェア(例えば、CPU)は、QMクラスであってもよい。
図1に示される半導体装置1においてソフトウェアロックステップが行なわれる場合、以下の様な問題が生じ得る。より具体的には、CPU10のMMU12が故障して不要なスヌープが開始され、CPU20のキャッシュ23へのアクセスが行なわれる場合があり得る。この場合、当該スヌープによって、CPU10の故障がCPU20に広がり、CPU10,20による誤った演算結果が一致し、CPU10の故障が検知されない可能性があり、結果として、ASIL Dクラスを達成することができない。
既存の回路構成では、スヌープはMMU12,22において保護されることになっているが、MMU12,22自体がソフトウェアロックステップの対象となっており、スヌープを保護することができない。また、QMクラスのCPU10,20のうち、MM12,22までを2重化する方法も考えられるが、その場合、面積のオーバヘッドが大きくなるという問題が生じ得る。さらに、近年では、CPU、画像処理回路、メモリ等のLSI(Large Scale Integrated Circuit)を構成する機能ブロック(所謂IP(Intellectual Property))は、自社製ではなく社外製であることが多く、CPU自体に変更を加えられないこともある。また、プロトコルの複雑化により、MMUなどの面積が増加してきており、それを別途追加するのは、従来のメリットが損なわれるうえ、レイテンシも増大する。
また、ISO26262では、ASILの異なるクラス間での故障の伝播等の干渉があってはならないとされており、不干渉(以下、FFI(Freedom From Interface)ともいう。)が求められている。ソフトウェアロックステップによって達成されるASIL Dクラスと、ソフトウェアロックステップを行なわないQMクラスのCPU10,20との間で、FFIの考慮が必要になるため、単体でASIL DクラスのCPUのように、QMクラスのCPU10,20を制御するためのプロセッサが必要となる。
そこで、図2を参照して、ある局面に従う半導体装置2について説明する。図2は、ソフトウェアロックステップを実行可能な半導体装置2の構成の概略を表わすブロック図である。半導体装置2は、半導体装置1の構成に加えて、スヌープ動作を制御するための回路として、スヌープ保護部(以下、SPU(Snoop Protection Unit)と表す)210,220と、CPU230とを備える。さらに、半導体装置2は、半導体装置1の構成に対して、アービタ50に代えてアービタ250を備え、メモリ60に代えてメモリ260を備える。
SPU210は、CPU10によるスヌープを保護する。SPU220は、CPU20によるスヌープを保護する。SPU210,220は、ASIL Dクラスである。
CPU230は、ASIL Dクラスのプロセッサである。半導体装置2において、FFIの観点から、ASIL Dクラスを達成するための制御は、ASIL Dクラスのプロセッサで行なわれる必要がある。そこで、CPU230は、ASIL Dクラスであることが望ましい。
アービタ250は、メモリ260へのアクセスを調停する。例えば、アービタ250は、アドレスが異常であることを検知すると、当該アドレスへのアクセスを禁止する。あるいは、アービタ250は、メモリ260内において、アドレスエリアをまたぐようなアクセスをプロテクトし得る。例えば、アービタ250は、ASIL D対応のプロセッサに割り当てられたメモリ領域に対するASIL B対応のプロセッサによるデータの書き込みを禁止する。
メモリ260は、DDRタイプのメモリであり得る。メモリ260は、エリア261,262,263,264を含む。エリア261は、ASIL Bクラスのハードウェアのためのエリアである。エリア262は、CPU10のソフトウェアロックステップためのエリアである。エリア263は、CPU20のソフトウェアロックステップためのエリアである。エリア264は、ASIL Dクラスのハードウェアのためのエリアである。
ソフトウェアロックステップのための複数のエリア262,263は、それぞれのCPU10,20が排他的に当該エリアにアクセスできるように構成されている。ASIL Bクラスのハードウェア(例えば、処理部40)は、FFIの要件を満たすため、エリア262,263,264にアクセスできないように構成される。また、ソフトウェアロックステップの対象となるCPU10,20は、同様の理由により、ASIL Dクラスのハードウェアによって使用されるエリア264にアクセスできないように構成される。なお、ASIL Dクラスの機能安全では、バスのように半導体装置2において他の回路等と共通して使用される部品に関しても、ASIL D対応であることが求められる。これらの部品においては、デュアルコア・ロックステップやEDC(Error Detection Code)機能若しくはECC(Error Correction Code)等でASIL D対応であるものとする。
[スヌープ保護部]
図3を参照して、ある局面に従うSPU210,220の構成について説明する。図3は、SPU210,220の構成の詳細を説明するための図である。ある局面において、SPU210,220は、デュアルコア・ロックステップ等の仕組みにより、ASIL Dクラスに対応している。
SPU210,220は、スヌープbit強制無効化ブロック310と、プロテクトON/OFFレジスタ320とを含む。CPU10の出力は、SPU210のスヌープbit強制無効化ブロック310に、CPU20の出力は、SPU220のスヌープbit強制無効化ブロック310に、それぞれ入力され得る。スヌープbit強制無効化ブロック310の出力は、バス30に入力され得る。
ある局面において、プロテクトON/OFFレジスタ320がオフに設定されている場合には、SPU210,220は、マスタ(例えば、ASIL DクラスのCPU230)からの信号をそのまま通す。別の局面において、プロテクトON/OFFレジスタ320がオンに設定されている場合には、SPU210,220は、CPU10,20からのリクエストに含まれるスヌープを示す信号を監視し、その信号を無効にして、バス30に送る。
本実施の形態に係る半導体装置2では、SPU210,220がスヌープの保護を行なう。SPU210,220には、スヌープのアクセス保護以外の機能を持たせないことで、レイテンシの増大を低減できる。また、ソフトウェアロックステップが行なわれない場合には、SPU210,220によるスヌープを許可することで、半導体装置2の性能を高めることができる。
[制御構造]
図4~図6を参照して、半導体装置2の制御構造について説明する。図4~図6は、半導体装置2の動作を表わすフローチャートである。
図4に示されるように、ステップS410にて、ASIL DクラスのCPU230は、ソフトウェアロックステップのために、SPU210,220をスヌープ禁止に設定する。例えば、CPU230は、プロテクトON/OFFレジスタ320の設定をオフにする。また、CPU230は、アービタ250に、禁止アドレスを設定する。例えば、CPU230は、CPU10がエリア262にアクセスできるようにアドレスを設定し、CPU20によるアクセスを禁止する。CPU230は、CPU20がエリア263にアクセスできるようにアドレスを設定し、CPU10によるアクセスを禁止する。エリア264は、CPU230によるアクセスが可能にアドレス設定され、他のCPU10,20によるアクセスは禁止される。
ステップS415にて、CPU230は、ソフトウェアロックステップ用のプログラムおよびデータをメモリ260のエリア264に書き込む。
ステップS420にて、CPU230は、メモリ260への書き込みを完了したことに基づいて、ソフトウェアロックステップを行なうCPU10,20を起動する。例えば、CPU230は、ソフトウェアロックステップの開始指令を、アービタ250、バス30を介して、CPU10,20に送信する。ステップS425にて、CPU10,20は、当該開始指令の受信を検知すると、起動する。
ステップS430にて、CPU10は、メモリ260にアクセスして、ソフトウェアロックステップのためのプログラムおよびデータを読み出して、そのプログラムを実行する。同様に、ステップS431にて、CPU20は、メモリ260にアクセスして当該プログラムおよびデータを読み出して、そのプログラムを実行する。なお、ステップS430における読み出しおよび/または実行のタイミングと、ステップS431における読み出しおよび/または実行のタイミングとは、同一である必要はなく、異なっていてもよい。
ステップS435にて、CPU10は、当該プログラムの実行結果を、メモリ260に確保されたエリア262に書き込む。ステップS436にて、CPU20は、当該プログラムの実行結果を、メモリ260に確保されたエリア263に書き込む。なお、ステップS435における書き込みのタイミングと、ステップS436における書き込みのタイミングとは、同一である必要はなく、異なっていてもよい。
ステップS440にて、CPU230は、CPU10,20による各処理が終了したことを検知するまで待機する。CPU10,20は、実行結果の書き込みを終了すると、その旨を、バス30及びアービタ250を介して、CPU230に通知する。
ステップS445にて、CPU230は、CPU10,20による実行結果の書き込みが終了した旨の通知を受信すると、エリア262,263にアクセスして実行結果を読み出し、CPU10による実行結果と、CPU20による実行結果とを比較する。ある局面において、比較の単位は、例えば、アプリケーション単位または関数単位である。
ステップS450にて、CPU230は、これらの実行結果が一致しているか否かを判断する。CPU230は、これらの実行結果が一致していると判断すると(ステップS450にてYES)、ステップS455にて、CPU230は、実行結果がASIL Dレベルに対応していると判定し、所定の出力先に当該実行結果を出力し、ソフトウェアロックステップを終了する。当該実行結果が一致していることに基づいて、所定の処理が実行される。そうでない場合には(ステップS450にてNO)、ステップCPU230は、実行結果がASIL Dレベルに対応していないと判定し、エラーを出力する。
図5は、アービタ250によるプロテクト動作を表わす図である。
ステップS510にて、アービタ250は、トランザクションを待機している。
ステップS520にて、アービタ250は、トランザクションの受信に基づいて、トランザクションの情報および指定されたアドレスと、マスタ情報(CPU230によって登録されている情報)およびアドレスとを比較する。
ステップS530にて、アービタ250は、CPU230による設定内容に基づいて、メモリ260におけるアドレスのプロテクトが必要であるか否かを判断する。例えば、CPU210は、CPU10に対して許可されていないアドレスへのアクセスをCPU10が要求しているか否かを判断する。アービタ250は、アドレスのプロテクトが必要であると判断すると(ステップS530にてYES)、制御をステップS540に切り替える。そうでない場合には(ステップS530にてNO)、アービタ250は、制御をステップS510に戻す。
ステップS540にて、アービタ250は、エラーレスポンスをCPU10に返し、当該トランザクションを通過させない。また、アービタ250は、所定のエラー信号をCPU230に出力し得る。
図6は、SPU210が実行する処理の一部を表わすフローチャートである。なお、SPU220も同様の処理を実行し得る。
ステップS610にて、SPU210は、トランザクションを待機する。
ステップS620にて、SPU210は、トランザクションがCPU10によるスヌープであるか否かを判断する。この判断は、例えば、トランザクションに含まれる信号(例えば、後述するARSNOOP信号)の値に基づいて行なわれる。
CPU210は、当該トランザクションがスヌープであると判断すると(ステップS630にてYES)、ステップS640にて、SPU210は、当該トランザクションをスヌープではないトランザクションに変換し、当該トランザクションを通過させて、バス30に伝送する。これにより、CPU10が誤ったスヌープ動作を要求するトランザクションを発した場合には、当該トランザクションは、スヌープ動作を要求しないトランザクションに変換されるので、CPU20のキャッシュに対する誤ったスヌープが防止され得る。
他方、当該トランザクションがスヌープではないと判断すると(ステップS630にてNO)、SPU210は、制御をステップS610に戻す。その後、処理は繰り返される。
図7~図10は、半導体装置2の動作を説明するための図である。図7を参照して、ある局面において、CPU230は、ソフトウェアロックステップを実行するために、SPU210,220によるスヌープを禁止する。例えば、CPU230は、スヌープbit強制無効化ブロック310において、SPU210,220によるスヌープを禁止することを示すフラグを立てる。
CPU230は、アービタ250のプロテクトアドレスを設定する。より具体的には、CPU230は、メモリ260において、エリア262,263,264を確保し、各エリアへのアクセスを規定する。たとえば、エリア262は、CPU10およびCPU230によるアクセスが可能に設定され、CPU20によるアクセスが禁止される。エリア263は、CPU20およびCPU230によるアクセスが可能に設定され、CPU10によるアクセスが禁止される。エリア264は、CPU230によるデータの書き込みが可能に設定され、CPU10,20によるデータの書き込みが禁止される。さらに、CPU230は、ソフトウェアロックステップに必要なプログラムおよびデータをメモリ260の所定のエリア262,263にそれぞれ格納する。このような構成により、ある局面において、あるプロセッサによって生成された誤ったデータが他のプロセッサによって使用され、比較結果が同一になることにより誤りが検出されなくなることが防止され得る。
図8を参照して、CPU230は、ソフトウェアロックステップを実行するCPU10,20をそれぞれ起動する(ステップS420)。ある局面において、CPU230は、アービタ250、バス30およびSPU210,220を介して、起動命令をCPU10,20にそれぞれ送信する。別の局面において、CPU230がCPU10,20に起動命令を送信するためのバスが別途設けられてもよい。
図9を参照して、CPU10,20は、それぞれ、同一の結果をもたらすプログラムを実行し、実行結果を所定のエリア262,263にそれぞれ書き込む(ステップS430,S431)。
図10を参照して、CPU230は、エリア262,263から実行結果を読み出して、これらの実行結果を比較する(ステップS445)。CPU230は、実行結果が一致すると判断すると、その旨を示すデータをエリア264の所定のアドレスに格納し得る。実行結果が一致しない場合には、CPU230は、CPU10またはCPU20が故障していることその他エラーを通知するためのデータを、エリア264の所定のアドレスに格納し得る。
図11は、ソフトウェアロックステップが行なわれない場合の設定を説明するための図である。別の局面において、CPU10,20がソフトウェアロックステップを行なわない場合には、CPU230は、SPU210,220の設定を非ソフトウェアロックアップに変更することにより、SPU210,220によるスヌープを許可する。
[異常なスヌープのプロテクト]
図12は、スヌープが誤って他のCPUに対して行なわれた場合の保護を説明する図である。ある局面に従う半導体装置2は、AXI(Advanced eXtensible Interface)規格に従ってバスが拡張されたACE(AXI Coherency Extensions)プロトコルを使用する場合がある。AXI規格に従うインターフェイスを構成する5つのチャネルのうち、リードデータチャネルには、ARDOMAIN信号とARSNOOP信号とが追加される。ARSNOOP信号は、リードチャネルおよびライトチャネルでシェアされるトランザクションのためのスヌープトランザクションのタイプを示す。ARDOMAIN信号は、いずれのマスタがスヌープトランザクションにおいてスヌープされるべきであるか、と、いずれのマスタがバリアートランザクションを命令するために考慮されるべきであるか、とを示す。
スヌープ時には、トランザクション内のARDOMAIN信号は、2進数で01または10となっているか、ARSNOOP信号が0以外になっている。そのような信号が来た時には、ARSNOOP信号を強制的に0に設定する。このようにすることで、そのトランザクションがキャッシュを利用しないトランザクションとなり、スヌープの発生を防ぐことができる。
ライトトランザクションの場合も同様である。スヌープのためのアクセスは、通常のアクセスとなり、アドレスが異常であれば、アービタ250でプロテクトされる。データがおかしくなれば、CPU230は、ソフトウェアロックステップの処理の実行結果を比較する処理において、当該比較の結果に基づいて異常を検知し得る。
[アドレス異常のプロテクト]
図13は、メモリ260内においてアドレスエリアを跨ぐアクセスのプロテクトについて説明する図である。ある局面において、アービタ250は、メモリ260内におけるアドレスエリアを跨ぐようなアクセスを検知すると、そのアクセスを禁止し、当該アクセスにつながるトランザクションを与えたプロセッサに、エラーレスポンスを返す。より具体的には、アービタ250は、トランザクションのアドレスを監視し、そのトランザクションの発行元が、当該アドレスにアクセスしてはいけないことを検知すると、当該アドレスへのアクセスをプロテクトする。発行元は、トランザクションに付加されている識別情報で特定され得る。識別情報は、例えば、AxIDその他の値であり得る。当該アドレスへのアクセスが許可されているか否かは、例えば、CPU230において予め設定されている。
[スヌープの許可の設定]
図14は、スヌープを許可する場合の動作を説明する図である。ある局面において、CPU230は、SPU210,220によるスヌープを許可する設定のための信号を、アービタ250およびバス30を介して、SPU210,220に送信する。SPU210,220は、この信号を受信すると、プロテクトON/OFFレジスタ320のプロテクトをオフに設定する(図3)。プロテクトがオフに設定されると、スヌープbit強制無効化ブロック310は、CPU10,20からのリクエストに含まれるスヌープを表わす信号(例えば、ARSNOOP)を検知した場合、そのまま、当該信号をアービタ250に送るので、スヌープが実行される。
図15は、スヌープが許可されている場合の動作を表わす図である。ある局面において、スヌープが許可されている場合、CPU10は、キャッシュ23に対するスヌープを、また、CPU20は、キャッシュ13に対するスヌープを行なうことができる。また、CPU10,20は、それぞれ、メモリ260のうち、ソフトウェアロックステップに使用されないエリア261のみへのアクセスが許可され、他のエリア262,263,264へのアクセスは禁止される。
図16は、ソフトウェアロックステップが行なわれていない場合の半導体装置2の動作を説明する図である。ある局面において、ソフトウェアロックステップが行なわれていない時、アービタ250は、エリア262,263,264のアドレス保護を行なっている。したがって、CPU10は、エリア262,263,264にはアクセスできない。
以上のようにして、本実施の形態に従う半導体装置2は、異常なスヌープをプロテクトするためのSPU210,220と、アドレスをプロテクト可能なアービタ250と、ソフトウェアロックステップを制御するためのASIL DクラスのCPU230とを備える。このような構成により、ソフトウェアロックステップを用いたASIL Dが半導体装置2で実現できる。本実施の形態に従うSPU210,220は、図3に示されるように、簡易な構成で実現されるため、半導体装置2の大幅な面積増大を必要とせず、また、レイテンシの増大もない。また、ソフトウェアロックステップはCPU230によって制御されるため、CPU10,20を変更できない場合であっても、ソフトウェアロックステップを導入することができる。
[第2の実施の形態]
以下、第2の実施の形態について説明する。本実施の形態に従う半導体装置は、所謂IPコアの一例であるCPUとして、二種類のCPUを有する場合にソフトウェアロックステップを実行できる点で、一種類のIPコアを有する第1の実施の形態と異なる。
図17は、ある局面に従う半導体装置3におけるデータの流れを表わす図である。半導体装置3において、CPU230は、メモリ260のエリア61に対してデータを読み書きする。CPU10,20は、それぞれ、エリア61からデータを読み出す。CPU10は、ソフトウェアロックステップを行う際、メモリ260のエリア62に対してデータを読み書きし、メモリ260のエリア64にデータを書き込む。CPU20は、ソフトウェアロックステップを行う際、メモリ260のエリア63に対してデータを読み書きし、メモリ260のエリア65にデータを書き込む。CPU230は、比較器231として、エリア64,65に書き込まれたデータを比較し、これらのデータが一致した場合には、ASILDクラスのデータとして、当該データを使用する。
図17は、一種類のIPコアに対してソフトウェアロックステップを適用する場合を表わしている。二種類のIPコアに対してソフトウェアロックステップを連続して適用する場合、二度の比較処理が必要になり、より具体的には、二度のソフトウェアロックステップのためのデータ通信のための帯域および比較時間が必要になる。そこで、本実施の形態においては、二種類のIPコアに対してソフトウェアロックステップを行なう場合に帯域および比較時間の増大が抑制される構成を説明する。
図18は、ある局面に従う半導体装置4の構成の概略を表わすブロック図である。なお、前述の構成要素と同一の構成要素には同一の番号を付してある。当該構成要素の機能も同じである。したがって、当該構成要素の説明は繰り返さない。
半導体装置4は、図2に示される構成要素に加えて、画像処理部70,71をさらに備える。画像処理部70,71は、それぞれ、アービタ250に接続されている。画像処理部70,71は、ASILD非対応のIP(例えば、ASIL Bクラスの画像処理部)の一例であるが、ASILD非対応のIPは、画像処理部に限られない。
本実施の形態に係る半導体装置4は、ソフトウェアロックステップにおいて、一組目のIP(すなわち、画像処理部70,71)による各計算結果を比較することなく、二組目のIP(すなわち、CPU10,20)に計算結果を渡すことで、一回の比較処理が省略される。
図19は、半導体装置4におけるデータの流れを表わす図である。CPU230がデータをメモリ260のエリア61に書き込むと、画像処理部70,71は、それぞれエリア61からデータを読み出す。画像処理部70は、エリア62に対して、データの書き込みおよび読み出しを行なう。画像処理部71は、エリア63に対して、データの書き込みおよび読み出しを行なう。
さらに、画像処理部70は、ソフトウェアロックステップのためのプログラムの実行結果をエリア64に書き込む。画像処理部70は、書込みが完了するとその旨をCPU10に通知し、ソフトウェアロックステップのためのプログラムを実行させるためにCPU10を起動させる。同様に、画像処理部71は、ソフトウェアロックステップのためのプログラムの実行結果をエリア65に書き込む。画像処理部71は、書込みが完了するとその旨をCPU20に通知し、ソフトウェアロックステップのためのプログラムを実行させるためにCPU20を起動させる。
CPU10は、エリア64からデータを読み出す。CPU10は、エリア62に対してデータの書き込みおよび読み出しを行なう。さらに、CPU10は、画像処理部70による実行結果を用いて、ソフトウェアロックステップのプログラムを実行し、実行結果をエリア64に書き込む。CPU20は、エリア65からデータを読み出す。CPU20は、エリア63に対してデータの書き込みおよび読み出しを行なう。さらに、CPU20は、画像処理部71による実行結果を用いて、ソフトウェアロックステップのプログラムを実行し、実行結果をエリア65に書き込む。
CPU230は、比較器231として、エリア64,65に書き込まれた各実行結果を比較し、これらが一致する場合には、ASIL Dクラスのデータとして上記データを使用する。
なお、エリア62、64は、画像処理部70とCPU10とによって排他的に使用され得る。また、エリア63、65は、画像処理部71とCPU20とによって排他的に使用され得る。
ここで、図20を参照して、半導体装置4が使用される局面の一例について説明する。図20は、半導体装置4が実行する処理の一部を表わすフローチャートである。半導体装置4は、車両の周辺を撮影するためのカメラに接続されている。
ステップS2010にて、半導体装置4は、カメラからの画像信号を受信する。ステップS2020にて、画像処理部70(または画像処理部71)は、歪補正その他の画像処理を実行する。画像処理の結果は、エリア64(またはエリア65)に格納される。
ステップS2030にて、CPU10(またはCPU20)は、人を検出したか否かを判断する。人の検出は、顔認識、特徴量算出その他の公知の技術を用いて実現される。検出結果は、エリア64,64に書き込まれる。CPU10(またはCPU20)が人を検出したと判断すると(ステップS2030にてYES)、ステップS2040にて、ASIL DレベルのCPU230は、車両のブレーキを作動するための信号を、ブレーキの制御装置に送信する。その後、車両は停止する。
他方、CPU10(またはCPU20)が人を検出しないと判断した場合には(ステップS2030にてNO)、ステップS2050にて、CPU10、CPU20またはCPU230のいずれかは、予め定められたその他の処理を実行する。
以上のようにして、本実施の形態によれば、ソフトウェアロックステップの対象となるCPU、画像処理部その他のIPが二種類ある場合には、一組目のIPによるプログラムの実行結果は比較されることなく二組目のIPによるソフトウェアロックステップのプログラムの実行のために使用される。これにより、比較処理を1回に留めることができるので、一回目の実行結果の比較のためのデータ読み込み、データ書き込み、および比較処理のための時間が不要となり、半導体装置4の処理時間の増大化が防止され得る。
[第3の実施の形態]
以下、第3の実施の形態について説明する。前述の各実施の形態では、ソフトウェアロックステップのプログラムの実行結果が比較される。これに対して、本実施の形態は、実行結果以外のデータが比較される点で、前述の実施の形態と異なる。以下、実行結果に基づくCRC(Cyclic Redundancy Code)が比較される場合を説明するが、比較対象は、CRCに限られず、例えば、ASIL Dクラスの故障検出率を実現した上でバイト数が削減されるハッシュ等であってもよい。
図21は、半導体装置5におけるデータフローを表わす図である。ある局面において、CPU230は、データをエリア61に書き込む。CPU10は、エリア61から当該データを読み出し、エリア62に対してデータの書き込みと読み出しとを行なう。CPU20は、エリア61から当該データを読み出し、エリア63に対してデータの書き込みと読み出しとを行なう。
CPU10は、エリア62から読み出したデータを用いてソフトウェアロックステップのプログラムを実行し、その実行結果からCRCを生成し、エリア64にその生成したCRCを書き込む。CPU20は、エリア63から読み出したデータを用いてソフトウェアロックステップのプログラムを実行し、実行結果をエリア65に書き込む。
CPU230は、比較器231として、エリア65から実行結果を読み出し、その読み出した実行結果からCRCを生成する。さらに、比較器231は、エリア64からCRCを読み出し、その読み出したCRCと、生成したCRCとを比較する。これらのCRCが一致すると、CPU230は、ASIL D対応として上記データを使用する。
なお、上記のCRCのデータサイズは、例えば、256バイトのデータについて2バイトであるが、データサイズは、これに限られない。
図22および図23を参照して、半導体装置5の動作について説明する。図22は、半導体装置5におけるCPUのプログラムの実行結果の出力を説明するための図である。ある局面において、いずれかのCPU(例えば、CPU10)は、ソフトウェアロックステップのプログラムを実行し、その実行結果からCRCを生成し、エリア262(エリア64に相当)に書き込む。他方のCPU(例えば、CPU20)は、ソフトウェアロックステップのプログラムを実行し、その実行結果をエリア263(エリア65に相当)に書き込む。
図23は、半導体装置5におけるソフトウェアロックステップのプログラムの実行結果の比較を説明するための図である。CPU230は、エリア262からCRCを読み出し、エリア263からデータを読み出し、その読み出したデータからCRCを計算する。CPU230は、比較器231として、読み出したCRCと計算したCRCとを比較する。
以上のようにして、本実施の形態によれば、二つのCPUから出力される実行結果のうちのいずれかからCRCが計算され、メモリ260の所定のエリアに書き込まれる。これにより、メモリ260へのアクセスとして、CRCおよび実行結果の書き込みと、当該CRCおよび実行結果の読み出しと、当該CRCと、実行結果に基づいて計算されるCRCとの比較の後におけるエリア65からのデータの読出とが行なわれる。このような構成によれば、ASIL Dクラスの故障検出率を保ったまま、CRCを用いない場合に比べて、帯域を1.5倍の増加に留めることができる。
[第4の実施の形態]
以下、第4の実施の形態について説明する。第4の実施の形態に従う半導体装置6は、ソフトウェアロックステップの実行結果の比較が、アービタで行なわれる点で、前述の実施の形態と異なる。
図24は、半導体装置6の構成を表わすブロック図である。半導体装置6は、半導体装置2に示される構成に対して、アービタ250に代えてアービタ251を、処理部40に代えて処理部41を備える。アービタ251は、比較器252を含む。比較器252は、比較対象アドレス、範囲および比較用データベースアドレスのためのレジスタを有する。処理部41は、アービタ251に接続されている。処理部41は、例えば、ASIL Dクラスであり、キャッシュを含み得る。ある局面において、処理部41は、CPUであってもよい。
図25は、半導体装置6におけるデータのフローを説明するための図である。ある局面において、CPU230がデータをエリア61に書き込むと、CPU10,20は、それぞれエリア61にアクセスし、データを読み出す。CPU10は、そのデータをエリア62に書き込み、CPU20は、そのデータをエリア63に書き込む。
CPU10は、エリア62のデータを読み出して、ソフトウェアロックステップのプログラムを実行し、実行結果をエリア64に書き込む。CPU20は、エリア63のデータを読み出して、ソフトウェアロックステップのプログラムを実行し、実行結果をエリア65に書き込む。
比較器252は、処理部41からのリードリクエストを受信すると、当該リードリクエストから二つのリードリクエストを生成する。比較器252は、各リードリクエストに基づいて、エリア64,65にアクセスして、実行結果をそれぞれ読み出す。さらに、比較器252は、読み出した実行結果を比較し、比較結果が一致していることを確認すると、読み出した実行結果を処理部41に送信する。
図26は、半導体装置6の制御構造を説明するためのフローチャートである。
ステップS2610にて、CPU10,20は、それぞれ、ソフトウェアロックステップのプログラムを実行し、実行結果を、メモリ260の所定のエリア62,63にそれぞれ書き込む。
ステップS2620にて、CPU230は、アービタ252にアクセスして、比較器252の設定を行う。例えば、CPU230は、比較対象アドレス、範囲、および比較用データベースアドレスをレジスタに設定する。
ステップS2630にて、ASIL Dクラスの処理部41は、データを所定の領域から読み出す。
ステップS2640にて、比較器252は、処理部41からのリクエストに基づいて、エリア64,65から、それぞれデータを読み出す。例えば、比較器252は、エリア64からCRCを読み出し、エリア65から実行結果を読み出す。CRCは、CPU10によるソフトウェアロックステップのプログラムの実行により生成されたものである。
ステップS2650にて、比較器252は、読み出したデータ(実行結果)からCRCを計算し、計算で得られたCRCと、読み出したCRCとを比較する。
ステップS2660にて、比較器252は、これらのCRCが一致するか否かを判断する。比較器252は、これらのCRCが一致すると判断すると(ステップS2660にてYES)、ステップS2670にて、比較器252は、上記リクエストの発信元である処理部41に、実行結果を送信する。そうでない場合には(ステップS2660にてNO)、ステップS2680にて、比較器252は、エラーを通知するために予め定められたエラー出力処理を実行する。
図27を参照して、半導体装置6の動作についてさらに説明する。図27は、半導体装置6における処理の一部を表わすフローチャートである。
ステップS2710にて、半導体装置6は、図26に示される比較器の処理を実行する。例えば、比較器252は、CPU230から送られる設定データに基づき、メモリ260へのアクセスを管理するためのアドレス設定を行なう。
ステップS2715にて、比較器252は、CPU230からのリクエストトランザクションを待機する。
ステップS2720にて、比較器252は、受信したリクエストトランザクションに含まれているアドレスと、CRCの比較のために設定されたアドレスとを比較する。ステップS2725にて、比較器252は、これらのアドレスが一致するか否かを判断する。比較器252は、これらのアドレスが一致すると判断すると、比較器252は、ステップS2640以降の処理を実行する。これらのアドレスが一致しない場合には、比較器252は、当該トランザクションの対象となるリクエストが通常のデータ読出リクエストであると判定し、ステップS2735にて、比較器252は、通常のデータ読出処理を実行する。
図28は、対象エリアに格納されているデータの読み出しを説明するための図である。ある局面において、半導体装置6の処理部41は、比較器252にリードリクエストを送信する。比較器252は、当該リードリクエストから、メモリ260の所定の領域にアクセスするための2つのリードリクエストを生成する。さらに、比較器252は、二つのリードリクエストに基づいて、エリア262(エリア64に相当)と、エリア263(エリア65に相当)とにそれぞれアクセスする。
図29は、比較器252による比較の動作を説明するための図である。ある局面において、比較器252は、エリア262から読み出したデータと、エリア263から読み出したデータとに基づいて比較処理を実行する。ある局面において、比較器252は、CPU10によるソフトウェアロックステップのプログラムの実行結果と、CPU20によるソフトウェアロックステップのプログラムの実行結果とを比較し得る。別の局面において、いずれか一方CPUが当該実行結果からCRCを生成している場合には、比較器252は、そのCRCをメモリ260から読み出し、他方のCPUによる実行結果からCRCを生成し、その読み出したCRCと、生成したCRCとを比較し得る。比較器252は、データの一致を確認すると、当該データを処理部41に送信する。
以上のようにして、本実施の形態によれば、アービタ250が比較器252を備える。比較器252がメモリ260にアクセスしてデータの書き込みおよび読み出しを行なうことにより、メモリ260にアクセスするために使用される帯域の使用量(2ライト+2リード)を、ソフトウェアロックステップを行なわない通常の動作のために使用される帯域の使用量(2ライト+2リード)よりも削減することができるので、比較処理によるCPUリソースの減少を回避できる。
なお、上記の実施の形態は、第3の実施の形態と組み合わされてもよい。このようにすると、メモリの帯域は、実質的に1倍まで削減でき、処理部41が、CRCの復号を行う必要がなくなるので、処理速度が向上し得る。
上記開示された技術的特徴は、以下のように要約され得る。
(構成1) ある局面に従う半導体装置は、キャッシュを有し、ソフトウェアロックステップと通常動作とを実行するための第1のプロセッサ(例、CPU1)および第2のプロセッサ(CPU20)と、メモリ260と、当該メモリに接続され、アドレスプロテクト機能を有するアービタ250と、当該アービタに接続されたバス30と、当該第1のプロセッサと当該バスとに接続され、当該第1のプロセッサによる当該第2のプロセッサのキャッシュへのスヌープ動作を制御するための第1のスヌープ制御回路(例えば、SPU210)と、当該第2のプロセッサと当該バスとに接続され、当該第2のプロセッサによる当該第1のプロセッサのキャッシュへのスヌープ動作を制御するための第2のスヌープ制御回路(例えば、SPU220)と、当該ソフトウェアロックステップと当該通常動作とを切り替えるための制御装置(例えば、CPU230)とを備える。当該制御装置は、当該通常動作が実行される場合に、当該第1のスヌープ制御回路および当該第2のスヌープ制御回路に対して、各当該スヌープ動作を許可し、当該ソフトウェアロックステップが実行される場合に、当該第1のスヌープ制御回路および当該第2のスヌープ制御回路に対して、各当該スヌープ動作を禁止する。当該第1のプロセッサは、当該ソフトウェアロックステップのための第1のソフトウェアを実行し、当該第1のプロセッサのために当該メモリに確保された第1の領域に、当該第1のソフトウェアの実行結果を書き込む。当該第2のプロセッサは、当該ソフトウェアロックステップのための第2のソフトウェアを実行し、当該第1の領域と異なる第2の領域に、当該第2のソフトウェアの実行結果を書き込む。当該半導体装置は、当該第1の領域に書き込まれた実行結果と、当該第2の領域に書き込まれた実行結果とを比較する比較器をさらに備える。
(構成2) ある局面に従うと、当該第1のスヌープ制御回路または当該第2のスヌープ制御回路は、所定の条件を満たさない異常なスヌープ動作を禁止する。当該アービタは、当該制御装置によってアクセス可能なメモリ領域に対する当該第1のプロセッサまたは当該第2のプロセッサによるアクセスを禁止する。
(構成3) ある局面に従う半導体装置は、当該アービタに接続された第1の処理部および第2の処理部をさらに備える。当該第1のプロセッサが当該第1のソフトウェアを実行することは、当該第1の処理部による演算結果に基づいて、ソフトウェアロックステップのための第3のソフトウェアを実行することと、当該第3のソフトウェアの実行結果に基づいて当該第1のソフトウェアを実行することとを含む。当該第2のプロセッサが当該第2のソフトウェアを実行することは、当該第2の処理部による演算結果に基づいて、ソフトウェアロックステップのための第4のソフトウェアを実行することと、当該第4のソフトウェアの実行結果に基づいて当該第2のソフトウェアを実行することとを含む。
(構成4) ある局面に従うと、当該第1のプロセッサは、当該第1のソフトウェアの実行結果に基づいてCRC(Cyclic Redundancy Code)を生成するように構成されている。当該制御装置は、当該第2のソフトウェアの実行結果に基づいてCRCを生成し、当該第1のプロセッサによって生成されたCRCと、当該制御装置によって生成されたCRCとを比較するように構成されている。
(構成5) ある局面に従うと、当該比較器は、当該アービタに含まれており、当該メモリに格納されているデータの読出要求に基づいて、当該メモリに格納されている各実行結果を比較するように構成されている。
(構成6) ある局面に従うと、当該メモリは、データを格納するための複数の領域(例えば、エリア261,262,263,264)を含む。当該第1のプロセッサに割り当てられる領域は、当該第2のプロセッサによる当該実行結果の書き込みから保護されている。当該第2のプロセッサに割り当てられる領域は、当該第1のプロセッサによる当該実行結果の書き込みから保護されている。当該制御装置に割り当てられる領域は、当該第1のプロセッサおよび当該第2のプロセッサによる書き込みから保護されている。
(構成7) ある局面に従うと、当該制御装置の機能安全レベルは、当該第1のプロセッサおよび当該第2のプロセッサの機能安全レベルよりも高い。
(構成8) 他の実施の形態に従うと、半導体装置を備える制御システムが提供される。この制御システムは、信号の入力を受ける入力インターフェイスと、当該信号に基づいて演算を実行する半導体装置と、当該演算の実行結果を出力するための出力インターフェイスとを備える。当該半導体装置は、キャッシュを有し、ソフトウェアロックステップと通常動作とを実行するための第1のプロセッサ10および第2のプロセッサ20と、メモリ260と、当該メモリに接続され、アドレスプロテクト機能を有するアービタ250と、当該アービタに接続されたバス30と、当該第1のプロセッサと当該バスとに接続され、当該第1のプロセッサによる当該第2のプロセッサのキャッシュへのスヌープ動作を制御するための第1のスヌープ制御回路(例えば、SPU210)と、当該第2のプロセッサと当該バスとに接続され、当該第2のプロセッサによる当該第1のプロセッサのキャッシュへのスヌープ動作を制御するための第2のスヌープ制御回路(例えば、SPU220)と、当該ソフトウェアロックステップと当該通常動作とを切り替えるための制御装置とを備える。当該制御装置は、当該通常動作が実行される場合に、当該第1のスヌープ制御回路および当該第2のスヌープ制御回路に対して、各当該スヌープ動作を許可し、当該ソフトウェアロックステップが実行される場合に、当該第1のスヌープ制御回路および当該第2のスヌープ制御回路に対して、各当該スヌープ動作を禁止する。当該第1のプロセッサは、当該ソフトウェアロックステップのための第1のソフトウェアを実行し、当該第1のプロセッサのために当該メモリに確保された第1の領域に、当該第1のソフトウェアの実行結果を書き込む。当該第2のプロセッサは、当該ソフトウェアロックステップのための第2のソフトウェアを実行し、当該第1の領域と異なる第2の領域に、当該第2のソフトウェアの実行結果を書き込む。当該半導体装置は、当該第1の領域に書き込まれた実行結果と、当該第2の領域に書き込まれた実行結果とを比較する比較器をさらに備える。
(構成9) さらに他の局面に従うと、半導体装置の制御方法が提供される。この制御方法は、キャッシュを有し、ソフトウェアロックステップと通常動作とを実行するための第1および第2のプロセッサを準備するステップと、当該第1のプロセッサによる当該第2のプロセッサのキャッシュへのスヌープ動作を制御するステップと、当該第2のプロセッサによる当該第1のプロセッサのキャッシュへのスヌープ動作を制御するステップと、当該通常動作が実行される場合に、各当該スヌープ動作を許可するステップと、当該ソフトウェアロックステップが実行される場合に、各当該スヌープ動作を禁止するステップと、当該第1のプロセッサが、当該ソフトウェアロックステップのための第1のソフトウェアを実行するステップと、当該第1のプロセッサのためにメモリに第1の領域を確保するステップと、当該第2のプロセッサのために当該第1の領域と異なる第2の領域を確保するステップと、当該第1のプロセッサが、当該第1の領域に、当該第1のソフトウェアの実行結果を書き込むステップと、当該第2のプロセッサが、当該ソフトウェアロックステップのための第2のソフトウェアを実行するステップと、当該第2のプロセッサが、当該第2の領域に、当該第2のソフトウェアの実行結果を書き込むステップと、制御装置が、当該第1の領域に書き込まれた実行結果と、当該第2の領域に書き込まれた実行結果とを比較するステップとを含む。
<実施の形態の効果>
上記の各実施の形態に従うソフトウェアロックステップによれば、機能安全レベルが通常レベルのCPU10,20は、互いに同期をとることなく、アプリケーションあるいは関数単位で処理を実行し、ASIL DクラスのCPU230が、当該処理結果を比較する。このようにすると、通常の動作モードからデュアルコアロックステップを行なうモードへの切り替えに必要とされるコア同士の同期をとるためのリセット処理等が不要になり、数ミリ秒の処理停止時間が生じなくなる。
なお、上述の実施の形態では、主として、ASIL DレベルあるいはASIL Bレベルの例を用いているが、本開示に係る技術思想は、他の機能安全レベル(例えば、ASIL Aレベル、あるいは、ASIL Cレベル)にも適用可能である。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
1,2,3,4,5,6 半導体装置、11,21 コア、13,23 キャッシュ、30 バス、40,41 処理部、50,250 アービタ、60,260 メモリ、61,62,63,64,65,252,261,262,263,264 エリア、70,71 画像処理部、231,252 比較器、310 強制無効化ブロック、320 レジスタ。

Claims (20)

  1. 半導体装置であって、
    キャッシュを有し、ソフトウェアロックステップと通常動作とを実行するための第1および第2のプロセッサと、
    メモリと、
    前記メモリに接続され、アドレスプロテクト機能を有するアービタと、
    前記アービタに接続されたバスと、
    前記第1のプロセッサと前記バスとに接続され、前記第1のプロセッサによる前記第2のプロセッサのキャッシュへのスヌープ動作を制御するための第1のスヌープ制御回路と、
    前記第2のプロセッサと前記バスとに接続され、前記第2のプロセッサによる前記第1のプロセッサのキャッシュへのスヌープ動作を制御するための第2のスヌープ制御回路と、
    前記ソフトウェアロックステップと前記通常動作とを切り替えるための制御装置とを備え、
    前記制御装置は、
    前記通常動作が実行される場合に、前記第1のスヌープ制御回路および前記第2のスヌープ制御回路に対して、各前記スヌープ動作を許可し、
    前記ソフトウェアロックステップが実行される場合に、前記第1のスヌープ制御回路および前記第2のスヌープ制御回路に対して、各前記スヌープ動作を禁止し、
    前記第1のプロセッサは、
    前記ソフトウェアロックステップのための第1のソフトウェアを実行し、
    前記第1のプロセッサのために前記メモリに確保された第1の領域に、前記第1のソフトウェアの実行結果を書き込み、
    前記第2のプロセッサは、
    前記ソフトウェアロックステップのための第2のソフトウェアを実行し、
    前記第1の領域と異なる第2の領域に、前記第2のソフトウェアの実行結果を書き込み、
    前記半導体装置は、前記第1の領域に書き込まれた実行結果と、前記第2の領域に書き込まれた実行結果とを比較する比較器をさらに備える、半導体装置。
  2. 前記第1のスヌープ制御回路または前記第2のスヌープ制御回路は、所定の条件を満たさない異常なスヌープ動作を禁止し、
    前記アービタは、前記制御装置によってアクセス可能なメモリ領域に対する前記第1のプロセッサまたは前記第2のプロセッサによるアクセスを禁止する、請求項1に記載の半導体装置。
  3. 前記アービタに接続された第1の処理部および第2の処理部をさらに備え、
    記第1の処理部は、前記ソフトウェアロックステップのための処理を実行し、
    前記第1のソフトウェアを実行することは、前記第1の処理部による処理の結果を用いて前記第1のソフトウェアを実行することを含み、
    記第2の処理部は、前記ソフトウェアロックステップのための処理を実行し
    前記第2のソフトウェアを実行することは、前記第2の処理部による処理の結果を用いて前記第2のソフトウェアを実行することを含む、請求項1に記載の半導体装置。
  4. 前記第1のプロセッサは、前記第1のソフトウェアの実行結果に基づいてCRC(Cyclic Redundancy Code)を生成するように構成されており、
    前記制御装置は、
    前記第2のソフトウェアの実行結果に基づいてCRCを生成し、
    前記第1のプロセッサによって生成されたCRCと、前記制御装置によって生成されたCRCとを比較するように構成されている、請求項1に記載の半導体装置。
  5. 前記比較器は、前記アービタに含まれており、前記メモリに格納されているデータの読出要求に基づいて、前記メモリに格納されている各実行結果を比較するように構成されている、請求項1に記載の半導体装置。
  6. 前記メモリは、データを格納するための複数の領域を含み、
    前記第1のプロセッサに割り当てられる領域は、前記第2のプロセッサによる前記実行結果の書き込みから保護されており、
    前記第2のプロセッサに割り当てられる領域は、前記第1のプロセッサによる前記実行結果の書き込みから保護されており、
    前記制御装置に割り当てられる領域は、前記第1のプロセッサおよび前記第2のプロセッサによる書き込みから保護されている、請求項1に記載の半導体装置。
  7. 前記制御装置の機能安全レベルは、前記第1のプロセッサおよび前記第2のプロセッサの機能安全レベルよりも高い、請求項1に記載の半導体装置。
  8. 信号の入力を受ける入力インターフェイスと、
    前記信号に基づいて演算を実行する半導体装置と、
    前記演算の実行結果を出力するための出力インターフェイスとを備え、
    前記半導体装置は、
    キャッシュを有し、ソフトウェアロックステップと通常動作とを実行するための第1および第2のプロセッサと、
    メモリと、
    前記メモリに接続され、アドレスプロテクト機能を有するアービタと、
    前記アービタに接続されたバスと、
    前記第1のプロセッサと前記バスとに接続され、前記第1のプロセッサによる前記第2のプロセッサのキャッシュへのスヌープ動作を制御するための第1のスヌープ制御回路と、
    前記第2のプロセッサと前記バスとに接続され、前記第2のプロセッサによる前記第1のプロセッサのキャッシュへのスヌープ動作を制御するための第2のスヌープ制御回路と、
    前記ソフトウェアロックステップと前記通常動作とを切り替えるための制御装置とを備え、
    前記制御装置は、
    前記通常動作が実行される場合に、前記第1のスヌープ制御回路および前記第2のスヌープ制御回路に対して、各前記スヌープ動作を許可し、
    前記ソフトウェアロックステップが実行される場合に、前記第1のスヌープ制御回路および前記第2のスヌープ制御回路に対して、各前記スヌープ動作を禁止し、
    前記第1のプロセッサは、
    前記ソフトウェアロックステップのための第1のソフトウェアを実行し、
    前記第1のプロセッサのために前記メモリに確保された第1の領域に、前記第1のソフトウェアの実行結果を書き込み、
    前記第2のプロセッサは、
    前記ソフトウェアロックステップのための第2のソフトウェアを実行し、
    前記第1の領域と異なる第2の領域に、前記第2のソフトウェアの実行結果を書き込み、
    前記半導体装置は、前記第1の領域に書き込まれた実行結果と、前記第2の領域に書き込まれた実行結果とを比較する比較器をさらに備える、制御システム。
  9. 前記第1のスヌープ制御回路または前記第2のスヌープ制御回路は、所定の条件を満たさない異常なスヌープ動作を禁止し、
    前記アービタは、前記制御装置によってアクセス可能なメモリ領域に対する前記第1のプロセッサまたは前記第2のプロセッサによるアクセスを禁止する、請求項8に記載の制御システム。
  10. 前記アービタに接続された第1の処理部および第2の処理部をさらに備え、
    記第1の処理部は、前記ソフトウェアロックステップのための処理を実行し、
    前記第1のソフトウェアを実行することは、前記第1の処理部による処理の結果を用いて前記第1のソフトウェアを実行することを含み、
    記第2の処理部は、前記ソフトウェアロックステップのための処理を実行し
    前記第2のソフトウェアを実行することは、前記第2の処理部による処理の結果を用いて前記第2のソフトウェアを実行することを含む、請求項8に記載の制御システム。
  11. 前記第1のプロセッサは、前記第1のソフトウェアの実行結果に基づいてCRC(Cyclic Redundancy Code)を生成するように構成されており、
    前記制御装置は、
    前記第2のソフトウェアの実行結果に基づいてCRCを生成し、
    前記第1のプロセッサによって生成されたCRCと、前記制御装置によって生成されたCRCとを比較するように構成されている、請求項8に記載の制御システム。
  12. 前記比較器は、前記アービタに含まれており、前記メモリに格納されているデータの読出要求に基づいて、前記メモリに格納されている各実行結果を比較するように構成されている、請求項8に記載の制御システム。
  13. 前記メモリは、データを格納するための複数の領域を含み、
    前記第1のプロセッサに割り当てられる領域は、前記第2のプロセッサによる前記実行結果の書き込みから保護されており、
    前記第2のプロセッサに割り当てられる領域は、前記第1のプロセッサによる前記実行結果の書き込みから保護されており、
    前記制御装置に割り当てられる領域は、前記第1のプロセッサおよび前記第2のプロセッサによる書き込みから保護されている、請求項8に記載の制御システム。
  14. 前記制御装置の機能安全レベルは、前記第1のプロセッサおよび前記第2のプロセッサの機能安全レベルよりも高い、請求項8に記載の制御システム。
  15. キャッシュを有し、ソフトウェアロックステップと通常動作とを実行するための第1および第2のプロセッサと、第1および第2のスヌープ制御回路と、制御装置と、メモリと備える半導体装置の制御方法であって
    前記第1のスヌープ制御回路が、前記第1のプロセッサによる前記第2のプロセッサのキャッシュへのスヌープ動作を制御するステップと、
    前記第2のスヌープ制御回路が、前記第2のプロセッサによる前記第1のプロセッサのキャッシュへのスヌープ動作を制御するステップと、
    前記通常動作が実行される場合に、制御装置が、各前記スヌープ動作を許可するステップと、
    前記ソフトウェアロックステップが実行される場合に、前記制御装置が、各前記スヌープ動作を禁止するステップと、
    前記第1のプロセッサが、前記ソフトウェアロックステップのための第1のソフトウェアを実行するステップと
    記第1のプロセッサが、前記メモリの第1の領域に、前記第1のソフトウェアの実行結果を書き込むステップと、
    前記第2のプロセッサが、前記ソフトウェアロックステップのための第2のソフトウェアを実行するステップと、
    前記第2のプロセッサが、前記メモリの第2の領域に、前記第2のソフトウェアの実行結果を書き込むステップと、
    前記制御装置が、前記第1の領域に書き込まれた実行結果と、前記第2の領域に書き込まれた実行結果とを比較するステップとを含む、半導体装置の制御方法。
  16. 前記半導体装置は、アービタをさらに備え
    前記制御方法は、
    前記第2のスヌープ制御回路が、所定の条件を満たさない異常なスヌープ動作を禁止するステップと、
    前記アービタが、メモリ領域に対する前記第1のプロセッサまたは前記第2のプロセッサによるアクセスを禁止するステップとをさらに含む、請求項15に記載の制御方法。
  17. 前記半導体装置は、第1の処理部および第2の処理部をさらに備え、
    前記制御方法は、
    記第1の処理部が、前記ソフトウェアロックステップのための処理を実行するステップと、
    前記第1のプロセッサが、前記第1の処理部による処理の結果に基づいて前記第1のソフトウェアを実行するステップと
    記第2の処理部が、前記ソフトウェアロックステップのための処理を実行するステップと、
    前記第2のプロセッサが、前記第2の処理部による処理の結果に基づいて前記第2のソフトウェアを実行するステップとをさらに含む、請求項15に記載の制御方法。
  18. 前記第1のプロセッサが、前記第1のソフトウェアの実行結果に基づいてCRC(Cyclic Redundancy Code)を生成するステップと、
    前記制御装置が、前記第2のソフトウェアの実行結果に基づいてCRCを生成するステップとをさらに含み、
    前記比較するステップは、各前記生成されたCRCを比較することを含む、請求項15に記載の制御方法。
  19. 前記メモリに格納されているデータの読出要求に基づいて、前記制御装置が、前記メモリに格納されている各実行結果を比較するステップとをさらに含む、請求項15に記載の制御方法。
  20. 前記メモリは、データを格納するための複数の領域を含み、
    前記第1のプロセッサに割り当てられる領域は、前記第2のプロセッサによる前記実行結果の書き込みから保護されており、
    前記第2のプロセッサに割り当てられる領域は、前記第1のプロセッサによる前記実行結果の書き込みから保護されており、
    前記制御装置に割り当てられる領域は、前記第1のプロセッサおよび前記第2のプロセッサによる書き込みから保護されている、請求項15に記載の制御方法。
JP2018123381A 2018-06-28 2018-06-28 半導体装置、制御システムおよび半導体装置の制御方法 Active JP7042709B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2018123381A JP7042709B2 (ja) 2018-06-28 2018-06-28 半導体装置、制御システムおよび半導体装置の制御方法
US16/446,195 US10860486B2 (en) 2018-06-28 2019-06-19 Semiconductor device, control system, and control method of semiconductor device
CN202310957401.5A CN116774947A (zh) 2018-06-28 2019-06-24 半导体器件、控制系统和半导体器件的控制方法
CN201910548857.XA CN110658988B (zh) 2018-06-28 2019-06-24 半导体器件、控制系统和半导体器件的控制方法
EP19182508.2A EP3588309B1 (en) 2018-06-28 2019-06-26 Semiconductor device, control system, and control method of semiconductor device
US17/112,702 US11544192B2 (en) 2018-06-28 2020-12-04 Semiconductor device, control system, and control method of semiconductor device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018123381A JP7042709B2 (ja) 2018-06-28 2018-06-28 半導体装置、制御システムおよび半導体装置の制御方法

Publications (2)

Publication Number Publication Date
JP2020004108A JP2020004108A (ja) 2020-01-09
JP7042709B2 true JP7042709B2 (ja) 2022-03-28

Family

ID=67070725

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018123381A Active JP7042709B2 (ja) 2018-06-28 2018-06-28 半導体装置、制御システムおよび半導体装置の制御方法

Country Status (4)

Country Link
US (2) US10860486B2 (ja)
EP (1) EP3588309B1 (ja)
JP (1) JP7042709B2 (ja)
CN (2) CN116774947A (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10572359B2 (en) * 2017-09-05 2020-02-25 International Business Machines Corporation Validation of data written via two different bus interfaces to a dual server based storage controller
US20200353884A1 (en) * 2019-05-08 2020-11-12 Mobileye Vision Technologies Ltd. System on chip
JP7157709B2 (ja) * 2019-07-04 2022-10-20 株式会社日立製作所 計算機システム及びプログラム実行方法
US10770132B1 (en) * 2019-07-26 2020-09-08 Qualcomm Incorporated SRAM with burst mode address comparator
US11385984B2 (en) * 2020-02-24 2022-07-12 Western Digital Technologies, Inc. Variable read scan for solid-state storage device quality of service
US11455248B2 (en) 2020-05-06 2022-09-27 Renesas Electronics Corporation Semiconductor device capable of performing software lock-step
DE102020213323A1 (de) * 2020-10-22 2022-04-28 Robert Bosch Gesellschaft mit beschränkter Haftung Datenverarbeitungsnetzwerk zur Datenverarbeitung
US11573856B1 (en) 2021-07-30 2023-02-07 Nvidia Corporation Transmitting data between regions of varying safety integrity levels in a system on a chip
DE112022003757T5 (de) * 2021-07-30 2024-05-29 Nvidia Corporation Übertragung von daten zwischen regionen mit variierenden sicherheitsintegritätsstufen in einem system auf einem chip
US11803668B2 (en) 2021-07-30 2023-10-31 Nvidia Corporation Isolating a region of a system on a chip for safety critical operations
DE102021211712A1 (de) * 2021-10-18 2023-04-20 Robert Bosch Gesellschaft mit beschränkter Haftung Datenverarbeitungsnetzwerk zur Datenverarbeitung

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009505177A (ja) 2005-08-08 2009-02-05 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング 少なくとも2つの命令実行ユニットを有するコンピュータシステムにおける記憶装置へのアクセスを制御する方法および装置
WO2016169856A1 (en) 2015-04-20 2016-10-27 Autoliv Development Ab A vehicle safety electronic control system

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5748937A (en) * 1993-08-26 1998-05-05 Intel Corporation Computer system that maintains processor ordering consistency by snooping an external bus for conflicts during out of order execution of memory access instructions
US5652859A (en) * 1995-08-17 1997-07-29 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US7467326B2 (en) * 2003-02-28 2008-12-16 Maxwell Technologies, Inc. Self-correcting computer
US8627030B2 (en) * 2007-11-07 2014-01-07 Intel Corporation Late lock acquire mechanism for hardware lock elision (HLE)
US9058272B1 (en) * 2008-04-25 2015-06-16 Marvell International Ltd. Method and apparatus having a snoop filter decoupled from an associated cache and a buffer for replacement line addresses
US9086977B2 (en) * 2011-04-19 2015-07-21 Freescale Semiconductor, Inc. Cache memory with dynamic lockstep support
JP5879527B2 (ja) * 2011-05-25 2016-03-08 パナソニックIpマネジメント株式会社 情報処理装置および情報処理方法
JP2013246496A (ja) * 2012-05-23 2013-12-09 Renesas Electronics Corp 半導体装置
JP5978873B2 (ja) 2012-09-12 2016-08-24 株式会社デンソー 電子制御装置
DE102014201682A1 (de) * 2014-01-30 2015-07-30 Robert Bosch Gmbh Verfahren zur Koexistenz von Software mit verschiedenen Sicherheitsstufen in einem Multicore-Prozessorsystem
JP6438353B2 (ja) * 2015-05-27 2018-12-12 ルネサスエレクトロニクス株式会社 半導体装置及び診断テスト方法
US9652385B1 (en) * 2015-11-27 2017-05-16 Arm Limited Apparatus and method for handling atomic update operations
CN105700939B (zh) * 2016-04-21 2019-07-02 北京京东尚科信息技术有限公司 一种分布式系统中多线程同步的方法和系统
US20180011768A1 (en) * 2016-07-05 2018-01-11 International Business Machines Corporation Control state preservation during transactional execution

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009505177A (ja) 2005-08-08 2009-02-05 ローベルト ボッシュ ゲゼルシャフト ミット ベシュレンクテル ハフツング 少なくとも2つの命令実行ユニットを有するコンピュータシステムにおける記憶装置へのアクセスを制御する方法および装置
WO2016169856A1 (en) 2015-04-20 2016-10-27 Autoliv Development Ab A vehicle safety electronic control system

Also Published As

Publication number Publication date
CN116774947A (zh) 2023-09-19
JP2020004108A (ja) 2020-01-09
CN110658988A (zh) 2020-01-07
US10860486B2 (en) 2020-12-08
CN110658988B (zh) 2023-08-11
EP3588309B1 (en) 2021-10-13
US20210089453A1 (en) 2021-03-25
EP3588309A2 (en) 2020-01-01
EP3588309A3 (en) 2020-01-22
US20200073806A1 (en) 2020-03-05
US11544192B2 (en) 2023-01-03

Similar Documents

Publication Publication Date Title
JP7042709B2 (ja) 半導体装置、制御システムおよび半導体装置の制御方法
US6449699B2 (en) Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems
KR101403233B1 (ko) 정보 처리 장치 및 부정 액세스 방지 방법
JP3850829B2 (ja) メモリ・ポート仲裁方法
JP7354253B2 (ja) インラインecc保護のための方法及びシステム
US20200264976A1 (en) Data processing system having memory protection and method therefor
JP5341928B2 (ja) 時間的に分離した冗長プロセッサの実行を使用しての周辺機器への読み書き
US6141718A (en) Processor bridge with dissimilar data registers which is operable to disregard data differences for dissimilar data direct memory accesses
CN108369557B (zh) 非对称一致性协议
JP5999216B2 (ja) データ処理装置
US6738869B1 (en) Arrangements for out-of-order queue cache coherency and memory write starvation prevention
JP2002536718A (ja) アドレスリマッピング保証装置および方法
JP6668908B2 (ja) 情報処理システム、送信装置および情報処理システムの制御方法
JPS6250863B2 (ja)
JP6645467B2 (ja) マイクロコンピュータ
JP2932867B2 (ja) 共通バスシステムにおける排他制御方式
JP6680973B2 (ja) 情報処理装置、情報処理装置の制御方法及び演算処理装置
JPH05108493A (ja) メモリ制御方式
JP2010003268A (ja) スレーブ装置
JPH0217563A (ja) 共有メモリの初期化方法
JP2013008145A (ja) プロセッサシステム
JPH0437948A (ja) 排他制御方式
JP2008204207A (ja) インタフェース制御装置及びその動作制御方法
JPS63251840A (ja) マルチプロセツサの異常検出制御方法
JPS62184564A (ja) 電子計算機制御方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211130

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220315

R150 Certificate of patent or registration of utility model

Ref document number: 7042709

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150