JP5850774B2 - 半導体集積回路装置及びそれを用いたシステム - Google Patents
半導体集積回路装置及びそれを用いたシステム Download PDFInfo
- Publication number
- JP5850774B2 JP5850774B2 JP2012064785A JP2012064785A JP5850774B2 JP 5850774 B2 JP5850774 B2 JP 5850774B2 JP 2012064785 A JP2012064785 A JP 2012064785A JP 2012064785 A JP2012064785 A JP 2012064785A JP 5850774 B2 JP5850774 B2 JP 5850774B2
- Authority
- JP
- Japan
- Prior art keywords
- thread
- buffer
- memory
- redundant
- cpu core
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1492—Generic software techniques for error detection or fault masking by run-time replication performed by the application software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1497—Details of time redundant execution on a single processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1641—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1691—Temporal synchronisation or re-synchronisation of redundant processing components using a quantum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2041—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3404—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Hardware Redundancy (AREA)
- Microcomputers (AREA)
Description
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
まず、実施の形態の概要を示すブロック図である図22を用いて、実施形態の概要を説明する。同図おいて、マイクロコントローラ(microcontroller、MCU(Micro-Control Unit))1は、2個のマイクロプロセッサ(CPU:Central Processing Unit)のコア(以下、「CPUコア」と称することもある。)2A、2Bを有している。このCPUコア2A及びCPUコア2Bは、互いに同一の構成を有しているので、以下の説明では、CPUコア2Aについてのみ詳しく説明する。
図1は、第1の実施形態で、プログラム実行に必要なレジスタセットをソフトウエアの実行単位であるスレッドごとに有し、クロックごとにスレッドを切り替えて実行するマルチスレッディング計算機能を持つデュアルコアのマイクロコントローラ(MCU)1のブロック図である。以下の説明では、診断を実施するために、2つのCPUコアのそれぞれにおいて実行される1つのスレッドで同じプログラムを実行する例を説明するが、実施形態はこれに限られるものではない。1つのCPUコアにおいて実行される2つのスレッドで同じプログラムを実行する形態および2種類以上の同じプログラムを4つ以上のスレッドで実行する形態にも適用可能である。
同図において、CPUコア2AとCPUコア2Bは同一機能を有する。各CPUコアはそれぞれ4つのスレッド(スレッド番号0、スレッド番号1、スレッド番号2、スレッド番号3)を並列処理できる。
命令メモリ3はCPUコア2AおよびCPUコア2Bが実行する命令を記憶する。図1に示したマイクロコントローラ1は、システム(自動車等)へ組み込まれ、システムを制御するマイクロコントローラを例としている。そのため、特に制限されないが、命令メモリ3としては、フラッシュメモリが用いられている。フラッシュメモリは電気的に一括消去及び書き替えが可能な読み出し用メモリで、制御の高度化に伴い大容量化が進んでいるが、CPUコアの動作クロックが高速になると1クロックサイクルでのリードが困難になる。そこで、特に制限されないが、フラッシュメモリ用のキャッシュをマイクロコントローラ1に搭載し、CPUコアからの1サイクルでのリードを可能している。キャッシュメモリ(I$)4AはCPUコア2A用のものであり、キャッシュメモリ(I$)4BはCPUコア2B用のものである。
同図において、システムバス制御回路5は、CPUコア2AおよびCPUコア2Bからシステムバス6へのアクセスの制御を行う。システムバス6には、データメモリ7、周辺モジュール(図1においては「『周辺A』……『周辺Z』」と表示。)8A〜8Z、外部バス制御回路(図1においては「外部バス制御」と表示。)9、割り込みコントローラ10が接続されている。同図において、信号60はシステムバス6におけるコマンド、アドレス、ライトデータを示しており、信号61はリードデータを示している。特に制限されないが、データメモリ7としては、SRAM(Static Random Access Memory)が用いられている。SRAMのメモリセルは1対のCMOSインバータと一対のアクセスのためのNMOSトランジスタを含む。なお、データメモリ7の他にデータを格納するフラッシュメモリを設けてもよい。
システムバス制御回路5は、アドレスバッファ(AB、第1バッファ)50、リードデータバッファ(RDB、第2バッファ)51、ライトデータバッファ(WDB、第3バッファ)52、比較回路(図1においては「比較」と表示。)53を有する。図示していないが、比較回路53はアドレスを比較する第1比較回路とデータを比較する第2比較回路とを有する。これらは、冗長スレッドの実行によりシステムバス6へのアクセスが発生した場合に機能する。図1には示されていないが、システムバス制御回路5には、後で説明する様にこれらを制御する制御回路が設けられている。
信号252Aが、非冗長スレッドの実行に伴うシステムバス6へのアクセスを示している場合、システムバス制御回路5は、信号252Aに含まれている情報(コマンドとアドレス)をシステムバス6に出力する。システムバス6へのアクセスが、ライトに関するアクセスの場合には、信号252Aに含まれている情報(ライトデータ)が更にシステムバス6に出力される。一方、このアクセスがリードの場合には、システムバス6におけるリードデータが、CPUコア2Aへの信号54Aとして出力される。
一方、上記信号252Aまたは信号252Bが、冗長スレッドの実行に伴うアクセスを示している場合には、次のような処理が実行される。
時間的に先に実行される冗長スレッド、すなわち先行する冗長スレッドが、システムバス6へのリードアクセスの場合、システムバス6へのアクセスを実行する。すなわち、先行する冗長スレッドの実行に伴い、アドレスが形成される。形成されたアドレスは、AB50に登録される。形成されたアドレスに従って、例えばデータメモリ7から読み出されたリードデータは、システムバス6を介してCPUコアに出力される。また、このリードデータは、RDB51に登録される。
先行する冗長スレッドの実行に伴うシステムバス6へのアクセスが、ライトアクセスの場合、システムバス制御回路5は、システムバス6へのアクセスを実行せず、上記先行する冗長スレッドを実行したCPUコアからの信号252A又は信号252Bに含まれるアドレスをAB50に登録する。また、先行する冗長スレッドを実行したCPUコアからの信号252A又は信号252Bに含まれるライトすべきデータをWDB52に登録する。
周辺モジュール8Aは例えばアナログ入力信号80Aをディジタル信号に変換するA/D変換器である。周辺モジュール8Zは例えばパルス出力信号80Zを発生するタイマである。
外部バス制御回路(図1においては「外部バス制御」と表示。)9はシステムバス6へのアクセスが、マイクロコントローラ1の外部に割り当てられたアドレス空間へのアクセスである場合、外部端子(図示しない)を介して、コマンドとアドレスを信号90として出力し、外部端子(図示しない)を介して、データを信号91として入力(リードの場合)し、またはデータを信号91として出力(ライトの場合)する。
割り込みコントローラ10は、割り込み端子(図示しない)を介して、外部からの割り込み要求を信号102として受け付け、その応答を信号102として返す。すなわち、信号102には割り込み要求信号と割り込み応答信号が含まれる。また、CPUコア2Aと割り込みコントローラ10との間の信号100Aは、CPUコア2Aへの割り込み要求信号とCPUコア2Aからの応答信号を含む。CPUコア2Bと割り込みコントローラ10との間の信号100Bも、CPUコア2Bへ割り込み要求信号とCPUコア2Bからの応答信号を含む。割り込みコントローラ10から冗長スレッド実行制御回路(図1においては「冗長スレッド実行制御」と表示。)11への信号101は、冗長スレッドへの割り込み要求信号である。
冗長スレッド実行制御回路11は、CPUコア2Aによる冗長スレッドの実行を示す冗長スレッド信号281Aと、CPUコア2Bによる冗長スレッドの実行を示す冗長スレッド信号281Bを受け、冗長スレッドの実行数を管理する。冗長スレッドの実行数を管理するために、冗長スレッド実行制御回路11は、CPUコア2Aに対して冗長スレッド選択禁止信号と冗長スレッド割込禁止信号110Aを出力する。同様に、CPUコア2Bに対して冗長スレッド選択禁止信号と冗長スレッド割込禁止信号110Bを出力する。
また、クロック発生回路(CLKG)1000は、各ブロックにクロック信号(CLK)1001を供給する。各ブロックのそれぞれは、フリップフロップなどを含む順序回路と組み合わせ回路とを有し、クロック信号1001に従ったクロックが、例えば上記順序回路に供給される。これにより、各ブロックは、クロック信号1001に同期して動作する。
(1)スレッドスケジューリングレジスタ(TSR)
図2には、上記スレッドスケジューリングレジスタ(TSR)26の構成例が示されている。TSR26は16ビットのレジスタで、上位ビットから2ビットずつS0〜S7の8つのビット名が付けられており、ここにスレッドの番号(以下、スレッド番号と称することもある)が設定される。スレッド番号は、2進数で表すと、“00”がスレッド番号0、“01”がスレッド番号1、“10”がスレッド番号2、“11”がスレッド番号3を表す。
図3には、上記スレッドタイプレジスタ(TTR)27の構成例が示されている。TTR27は、16ビットのレジスタで、上位ビットから4ビット毎に、T0〜T3の4つのビット名が付けられており、ここにスレッド番号0〜3のそれぞれのタイプが設定される。すなわち、ビット名T0にスレッド番号0のタイプが設定され、ビット名T1にスレッド番号1のタイプが設定され、ビット名T2にスレッド番号2のタイプが設定される。同様に、ビット名T3にスレッド番号3のタイプが設定される。
TSR26及びTTR27へのスレッド番号の設定及びスレッドタイプの設定は、それらを設定するためのプログラムを実行することにより行う。設定のプログラムは、例えば、レジスタセット210〜213のうちのいずれかのレジスタセットに含まれている汎用レジスタに、スレッドの番号とそのタイプを格納し、この汎用レジスタからTSR26及びTTR27へデータ転送を行うようなプログラムとすれば良い。この設定のプログラムで使われるデータ転送を指示する命令は、CPUコアの基本的な動作に影響するため、安全性の観点からも専用の命令にすることが望ましい。また、TSR26及びTTR27は、それぞれのCPUコアに設けられているため、それぞれのCPUコアにおいて上記設定のプログラムは実行される。勿論、設定するために使われる上記汎用レジスタは、上記レジスタセットに設けられている汎用レジスタとは異なるレジスタを用いるようにしても良い。
図4には、CPUコア2A、2Bの命令パイプラインのタイミング例が示されている。命令パイプラインとは、同じ回路で複数の命令をオーバラップさせて実行する方法で,回路は複数のステージに分割されており、クロック信号(CLK)1001に従って、各ステージでは一度に1つの命令を実行する。
(1)パイプラインに乱れがない場合
図5には、クロック信号(CLK)1001に従ってスレッドを切り替えながらプログラムを実行するマルチスレッドにおけるパイプライン処理のタイミング例が示されている。ステージは、図4で示したパイプラインと同様に、IAステージからWBステージの6ステージである。実行されるスレッドの順番としては、スレッド番号0から3の順に実行される例を示している。この実行スケジュールを実現するために、TSR26の各ビット名には、次の設定がされる。すなわち、ビット名S0=S4=スレッド番号0、ビット名S1=S5=スレッド番号1、ビット名S2=S6=スレッド番号2、ビット名S3=S7=スレッド番号3が設定される。
図6には、マルチスレッドのパイプライン処理において命令キャッシュミスが発生したときのタイミング例が示されている。CLKNO=3のクロックサイクルで、スレッド番号1における命令フェッチでキャッシュミスが発生したため、CLKNO=4及び5でIFステージが延長する。CLKNO=4ではスレッド番号1の命令をデコードするスケジュールであったが、命令バッファに命令が準備できていないため、デコードするDステージを取り止める。次のCLKNO=5でスレッド番号2の命令をデコードする例を示している。しかし、CLNOK=4でスレッド番号2の命令バッファ202に命令があれば、その命令を前倒ししてデコードするように回路を設計することは可能であり、その方がパイプライン処理の空きが減り性能が向上するので望ましい。スレッド番号1のキャッシュミスした命令はCLKNO=5で命令バッファ201にフェッチされ、次にスレッド番号1の命令をデコードするスケジュールとなるCLKNO=8でデコードが行われる。このように、命令キャッシュミスによって命令パイプライン処理が乱れることがある。
図7には、マルチスレッドのパイプライン処理においてマルチステップ実行が発生したときのタイミング例が示されている。CLKNO=4のクロックサイクルで、スレッド番号1の命令をデコードした結果、マルチステップ実行であることが分かり、CLKNO=5のEXステージの後に、2サイクルのEXステージが追加される。また、CLKNO=5及び6でのDステージを取り止める。スレッド番号1のEXステージが延長すると、続くメモリアクセスとライトバックの実行が遅れる。このように、マルチステップ実行によって命令パイプライン処理が乱れることがある。
図8には、マルチスレッドのパイプライン処理においてメモリアクセスウエイトが発生したときのタイミング例が示されている。CLKNO=6のクロックサイクルで、スレッド番号1のメモリアクセスでウエイトが発生し、CLKNO=7及び8にMAステージが追加される。リードアクセスのため、CLKNO=7で実行する予定だったレジスタへの書き戻しは、CLKNO=11で行われる例を示している。CLKNO=10ではスレッド番号1の次のメモリアクセスが実行されるが、CLKNO=11でライトバックを実行できないため、CLKNO=11のDステージ、EXステージ及びMAステージのパイプライン処理を取り止め、次のCLKNO=12でWBステージを実行する。このように,メモリアクセスウエイトによって命令パイプライン処理が乱れることがある。
図9には、非冗長スレッドで、メモリにアクセスする場合のタイミング例が示されている。同図には、CPUコア2A及びCPUコア2Bのパイプラインに関するタイミングと、図1におけるシステムバス制御回路5のタイミングと、システムバス6のタイミングが示されている。CPUコア2Aのパイプラインに関するタイミングは、図9において2Aとして示されており、CPUコア2Bのパイプラインに関するタイミングは、2Bとして示されている。システムバス制御回路5のタイミングは、アドレスバッファ50がAB(50)として、リードデータバッファ51がRDB(51)として、ライトバッファ52がWDB(52)として、比較回路53が比較(53)として示されている。また、これらのタイミングを纏めて、5として示してある。システムバス6のタイミングは、コマンド60、アドレス60、ライトデータ60が「CMD,A,WD(60)」として、リードデータ61がRD(61)として示されている。また、これらのタイミングを纏めて、6として示してある。後で説明する図10についても、同様の表示方法を採用している。
CPUコア2AがCLKNO=4でメモリアクセス(リード)を実行すると、システムバス制御回路5を介して、システムバス6にコマンド60、アドレス60が出力される(期間A1−1)。このメモリアクセス(リード)に応答して、CLKNO=5でシステムバス6のリードデータ61がCPUコア2Aに読み込まれ、CPUコア2A内のスレッド番号1に対応するレジスタセット内のレジスタ(例えば汎用レジスタ)にライトバックされる(期間A1−1)。
CPUコア2BがCLKNO=6でメモリアクセス(リード)を実行すると、システムバス6にコマンド60、アドレス60が出力される(期間B1−1)。CLKNO=7でシステムバス6のリードデータ61がCPUコア2Bに読み込まれ、CPUコア2B内のスレッド番号1に対応するレジスタセット内のレジスタ(例えば汎用レジスタ)にライトバックされる(期間B1−1)。
次に、CPUコア2AがCLKNO=8でメモリアクセス(ライト)を実行すると、システムバス制御回路5を介して、システムバス6にコマンド60、アドレス60、ライトデータ60が出力される(期間A1−2)。
CPUコア2BがCLKNO=11でメモリアクセス(ライト)を実行すると、システムバス6にコマンド60、アドレス60、ライトデータ60が出力される(期間B1−2)。
図10には、冗長スレッドの実行においてメモリアクセスが発生した場合のタイミング例が示されている。図面の表記方法については、図9を参照して頂きたい。
図10において、CPUコア2AがCLKNO=4でメモリアクセス(リード)を実行すると、システムバス6にコマンド60、アドレス60を出力する(期間A1−1)。冗長スレッドの実行であるため、システムバス制御回路5は、アドレスバッファ50に、そのときのアドレスを登録する(期間A1−1)。CLKNO=5でシステムバス6のリードデータ61がCPUコア2Aに読み込まれ,スレッド番号1に対応するレジスタセット内のレジスタにライトバックされる(期間A1−1)。また、このとき、システムバス制御回路5は、リードデータバッファ51にリードデータを登録する(期間A1−1)。
CPUコア2BがCLKNO=6でメモリアクセス(リード)を実行すると、冗長スレッドの実行であるため、システムバス制御回路5は、CLKNO=6において形成されるアドレスとアドレスバッファ50(AB(50))に格納されているアドレスとの比較を比較回路53で実行する(期間1−1)。このとき、システムバス制御回路5は、システムバス6へのコマンド60、アドレス60の出力を行わない。CLKNO=7で、ライトデータバッファ51からのデータがCPUコア2Bに読み込まれ、スレッド番号1に対応するレジスタセット内のレジスタにライトバックされる。このように、冗長スレッドの実行において、メモリリードアクセスが発生した場合は、先行するスレッドのリードアクセスのみが実行され、そのリードデータを後行のスレッドに読み込ませることによりデータが同一となるようにできる。また、上記比較回路53における比較において、アドレスの比較結果が不一致の場合、システムバス制御回路5は、割り込みコントローラ10にシステムバスアクセスエラー信号55を出力する。
次に、CPUコア2AがCLKNO=8でメモリアクセス(ライト)を実行すると,冗長スレッドのため、システムバス制御回路5は、このときのアドレスをアドレスバッファ50に登録する(期間A1−2)。また、このとき、ライトすべきライトデータは、ライトデータバッファ52に登録する(期間A1−2)。
CPUコア2BがCLKNO=11でメモリアクセス(ライト)を実行すると、冗長スレッドのため、システムバス制御回路5は、このときのライトアドレスとアドレスバッファ50に格納されているアドレスとの比較を比較回路53で実施する(期間1−2)。また、システムバス制御回路5は、このときのライトデータとライトバッファ52に格納されているデータとの比較を比較回路53で実施する(期間1−2)。比較回路53による比較結果が一致の場合、次のCLKNO=12でシステムバス6にコマンド60、アドレス60、ライトデータ60を出力する(期間A1−2)。このように、冗長スレッドでのメモリライトは、先行するスレッドと後行のスレッドのアクセス情報(アドレス、ライトデータ)を比較した後で実行する。これにより、アドレスの不一致またはライトデータの不一致となるような不正なメモリライトを防ぐことができる。
(1)状態遷移
図11には、図1における冗長スレッド実行制御回路11の状態遷移の例が示されている。同図において、―N、−1、0、+1、+N等の状態は、冗長スレッドにおける命令の実行数の差(CPUコア2A―CPUコア2B)を意味する。同図において、CPUAはCPUコア2Aを、CPUBはCPUコア2Bを示している。図3において、TTR27にはスレッド番号0〜3に、それぞれスレッドのタイプを設定する旨を説明した。この実施の形態では、4つのスレッドを切り替えながら実行出来る。4つのスレッドの全てに対して、スレッドのタイプを冗長スレッドとして設定することも可能である。図11に示す遷移は、1つの冗長スレッドに対する遷移である。4つのスレッドに対して冗長スレッドを設定出来る様に、この実施の形態では、図11に示す状態遷移が、各スレッド毎に実行出来る様に、冗長スレッド実行制御回路11は構成されている。各スレッドにおいて、互いに異なる冗長スレッドを実行出来る様に、この状態遷移は互いに独立しているが、状態遷移の内容は互いに同じであるため、以下では1つの状態遷移について説明する。この実施の形態のように、スレッド毎に状態遷移を設けるのではなく、特定のスレッド(例えばスレッド番号0と1)に対してのみ冗長スレッドが設定出来る様に制限をすれば、状態遷移による管理を低減出来るので、小型化を図ることも可能である。
図12には、図11に示した状態遷移において、上記最大値+Nと最小値−Nを、1とした例の状態遷移が示されている。この場合、冗長スレッドにおける命令の実行数差が、2に達すると、上記冗長スレッド選択禁止信号110Aまたは冗長スレッド選択禁止信号110Bが、冗長スレッド実行制御回路11から出力される。これにより、CPUコア2AとCPUコア2Bの両者における冗長スレッドでの命令実行数は同じか、或いは1つだけ異なる様に制限される。すなわち、冗長スレッドにおける命令実行数の差は、1以内に制限される。
図13には、図12に示した状態遷移を達成する機能を有する冗長スレッド実行制御回路11の動作タイミングチャートが示されている。同図において、英数字2A及び2Bは、CPUコア2A及び2Bを示しており、数字11は実行制御回路11から出力される信号及び冗長スレッドにおける命令実行数を示している。また、同図において、Dはデコードステージを示しており、他の図面と同様に、デコードステージに入ったスレッドの番号も記載されている。この図からも理解される様に、スレッドは、スレッド番号0から3に順次実行される。
図14には、上記冗長スレッド実行制御回路11及びスレッド選択回路28の他の動作タイミングチャートが示されている。冗長スレッド実行制御回路11は、CLKNO=6でCPUコア2Aのスレッド番号1の選択を禁止する。この禁止を受けて、スレッド選択回路28は、次に実行を予定しているスレッド番号2を前倒しして選択し、スレッド番号2を実行する。同様に、CLKNO=11でCPUコア2Bのスレッド番号1の選択を禁止し、次に実行を予定しているスレッド番号0を前倒しして実行する。この様にすれば、選択が禁止された冗長スレッドのパイプラインステージで、非冗長スレッドの命令を実行できるため、処理性能を向上させることができる。
図1では、各CPUコアのそれぞれが4つのスレッドを実行出来、4つのスレッドに対して、1つの冗長スレッド選択禁止信号110A(110B)と、1つの冗長スレッド実行信号281A(281B)を用いる例が示されている。しかしながら、スレッドの1つに対して1つの冗長スレッド選択禁止信号110A(110B)と、1つの冗長スレッド実行信号281A(281B)を用いる様にしても良い。この場合には、4つのスレッドのそれぞれに対して、図11或いは図12に示した状態遷移を、独立に設け、独立に設けた状態遷移(図11、図12)に、そのスレッドに対応した1つの冗長スレッド実行信号が供給され、対応したスレッドに対して1つの冗長スレッド選択信号を供給する様にすれば良い。この様にすることにより、各スレッド毎の制御の簡略化を図ることが可能となる。例えば、1つの冗長スレッドを選択しないように、そのスレッドに対応する冗長スレッド選択信号が禁止を表しているとき、他のスレッドに対する冗長スレッド選択信号はスレッドの選択を許可する様に出来る。
図15には、冗長スレッド実行制御回路の変形例が示されている。同図には、図11に示した状態遷移において、最大値+N及び最小値−Nを2とした場合の状態遷移が示されている。CPUコア2AとCPUコア2Bの冗長スレッドにおける命令の実行数は同じか、1或いは2だけ異なる。この場合、システムバス制御回路5内のアドレスバッファ50(AB)、リードデータバッファ51(RDB)、ライトデータバッファ52(WDB)は、それぞれ2段必要になる。命令実行数の差が、最小値−2と最大値+2だけでなく,−1と+1の場合も冗長スレッドの選択禁止信号110A、110Bを出力する。冗長スレッドの選択禁止信号110A、110Bは2サイクル後における冗長スレッドの選択を禁止する。冗長スレッド実行信号281A、281Bから冗長スレッド選択禁止までを2サイクルで実行すれば良いため、図12の状態遷移に比べて、上記制御を行うために必要な回路を、2サイクルのステージに分けて持つことができ、動作周波数を下げる要因であるクリティカルパスとなるのを回避できる。
図18には、冗長スレッドで例外が発生した場合の冗長スレッド実行制御回路11の動作タイミングチャートが示されている。例外としては、未定義命令、0除算(除算命令の実行において割る数が0)、メモリエラー(パリティまたはECCなどの検査情報が付加されたメモリで、リードの際の検査でエラーが発生)などがある。例外の発生は、CPUコアに依存する。そのため、冗長スレッドの実行中に例外が発生したとしても、その例外に対する例外処理は、例外が発生したCPUコアのみで実行される。ここでは、CPUコア2Aが、CLKNO=2のスレッド番号1(冗長スレッド)で例外が発生し、CLKNO=6のスレッド番号1は例外処理であるとする。CLKNO=2で冗長スレッドが選択されるため、冗長スレッドにおける命令実行数が+1となり、CPUコア2Aは冗長スレッドの選択が禁止となる(図13の説明参照)。例外処理は、一方のCPUコアで実行される処理であるため、複数のスレッドで同じ処理を行う冗長スレッドではなく、非冗長スレッドみなされ、実行される。すなわち、CLKNO=6のスレッドは非冗長スレッドとされて、CLKNO=6のスレッドで例外処理が実行される。例外処理であるため、TTR27の設定も変更せず、冗長スレッド実行信号281Aも出力されない。例外処理が終了し,CLKNO=12でスレッド番号1を冗長スレッドとして実行するため,冗長スレッド実行信号281Aを出力する。このように、冗長スレッドの例外処理を実行することができる。例外が発生した際にも診断が可能となる。図18では、例外処理が1サイクルで終了するように示されているが、その終了までに複数サイクルを要する場合もある。この場合には、CLKNO=12のスレッドも非冗長スレッドとされ、例外処理が実行される。
図19には、冗長スレッドで割り込みが発生した場合の冗長スレッド実行制御回路11の動作タイミングチャートが示されている。割り込みとしては、A/D変換器(周辺モジュール8A)やタイマ(周辺モジュール8Z)などの周辺モジュールからの割り込み、マイクロコントローラ1の外部端子からの割り込みがある。割り込み処理をCPUコア2A及びCPUコア2Bのそれぞれの冗長スレッドで実行させるために、割り込み要求は、CPUコア2AとCPUコア2Bとが、同一命令となったときに、受け付ける様にする。この様な冗長スレッドの選択及び制御を実行するために、冗長スレッド実行制御回路11には、次のような動作を実行する制御回路が設けられる。冗長スレッド実行制御回路11から出力される冗長スレッド割込禁止信号(図19においては「冗長スレッド割込禁止」と表示。)110A、110Bは、冗長スレッドにおける命令の実行数差と冗長スレッド割込要求信号(図19においては「冗長スレッド割込要求」と表示。)101に基づいて形成される。すなわち、命令の実行数差=0で、冗長スレッド割込要求信号101=0のとき、冗長スレッド割込禁止信号110A、110Bが0となるようにし、命令の実行数差≠0で、冗長スレッド割込要求信号101=0のときに、冗長スレッド割込禁止信号110A、110Bが1になる様にする。また、命令の実行数差=0で、冗長スレッド割込要求信号101=1で、冗長スレッド割込禁止信号110A、110Bが0になり、ここでCPUコア2AとCPUコア2Bが、冗長スレッドで、割り込みを受け付け可能になる様にする。この後、冗長スレッド割込禁止信号110A、110Bは、冗長割込要求信号101が0になるまで、0の状態を維持する様にする。
図20には、上記実施の形態1で説明したマイクロコントローラが用いられたシステムの例が示されている。この例は、故障検出機能を持つマルチスレッディングのマイクロコントローラを搭載した電子制御装置を使用した自動車である。自動車12において、モータ13を制御する電子制御装置15内に上記図1に示したマイクロコントローラ1が搭載されている。マイクロコントローラ1に設けられた周辺モジュールであるタイマ(周辺モジュール8Z)からの出力はドライバ17で増幅され、インバータ14を介してモータ13を駆動する。マイクロコントローラ1の故障検出機能がCPUコアの異常を検出すると、それをマイクロコントローラ1に設けられた外部端子から、電子制御装置15に設けられた安全装置18を動作させる。安全装置18の構成は、システムである自動車に依存するが、例えばダッシュボードに故障を示すアラームを表示することが考えられる。あるいは、インバータ14を駆動するマイクロコントローラ1の上記タイマを停止するという方法が考えられる。さらには、マイクロコントローラ1を更に2重化して同一の処理を実行させ、ドライバ17へのタイマの出力を切り替えられるように電子制御装置15を構成する方法も考えられる。特に制限されないが、同図において、バッテリ16はインバータ14へ電源を供給する。
2A CPUコア
2B CPUコア
3 命令メモリ
5 システムバス制御回路
11 冗長スレッド実行制御回路
26 レジスタ
27 レジスタ
Claims (15)
- それぞれがソフトウエアの実行単位である複数のスレッドを、クロックに同期して切り替えながら実行する半導体集積回路装置であって、
上記複数のスレッドのうち、第1スレッドの実行において用いられる第1レジスタと、
上記複数のスレッドのうち、上記第1スレッドとは異なる第2スレッドの実行において用いられる第2レジスタと、
上記第1及び第2スレッドが、互いに同じ特定ソフトウエアの実行単位で有るとき、上記第1スレッドの実行の結果と上記第2スレッドの実行の結果とを比較する比較回路と
を具備し、上記第1レジスタは上記第2レジスタとは異なるレジスタである半導体集積回路装置。 - 上記複数のスレッドから、上記第1及び第2スレッドを指定する第3レジスタを具備する請求項1の半導体集積回路装置。
- 上記第1スレッドにおける命令の実行数と、上記第2スレッドにおける命令の実行数との差が所定の値になる様に、上記第1スレッド又は上記第2スレッドの実行を制限する第1制限回路を具備する請求項2の半導体集積回路装置。
- 上記第1スレッドの実行において、例外が発生したとき、上記第2スレッドの実行を制限する第2制限回路を具備する請求項3の半導体集積回路装置。
- 上記第1スレッドの実行において、割込要求が発生した場合、上記第1スレッドにおける命令の実行数と上記第2スレッドにおける命令の実行数とが所定の関係の場合に、上記割込要求を受け付ける請求項3又は4の半導体集積回路装置。
- 上記第1スレッドと上記第2スレッドとを同一のCPUコアで実行する請求項1の半導体集積回路装置。
- それぞれがソフトウエアの実行単位である複数のスレッドの切り替えながら動作する半導体集積回路装置であって、
上記複数のスレッドのうち、2つのスレッドが、メモリへアクセスする特定ソフトウエアとされ、
メモリアクセスに関するアドレスを記憶する第1バッファと、
メモリアクセスにより得られたリードデータを記憶する第2バッファと、
メモリアクセスのアドレスを上記第1バッファに記憶されているアドレスと比較する第1比較回路とを具備し、
上記2つのスレッドのうち、第1スレッドにおいてメモリへのリードアクセスが行われた場合、リードアクセスに関するアドレスを上記第1バッファに記憶し、
上記2つのスレッドのうち、第2スレッドにおいて上記メモリへリードアクセスが行われる場合、そのアドレスと上記第1バッファに記憶されているアドレスとを上記第1比較回路で比較し、
上記第1比較回路からの不一致に応答して、故障に対応した処理を発生する半導体集積回路装置。 - 上記第1比較回路からの一致に応答して、上記第2バッファに記憶されているリードデータを、上記第2スレッドのリードアクセスに応じたリードデータとする請求項7の半導体集積回路装置。
- メモリへのライトすべきデータを記憶する第3バッファと、
メモリへのライトすべきデータを上記第3バッファに記憶されているデータと比較する第2比較回路と
を具備し、
上記第1スレッドにおいて上記メモリへのライトアクセスが行なわれる場合、上記ライトアクセスに関するアドレスを上記第1バッファに、ライトすべきデータを第3バッファに記憶し、
上記第2スレッドにおいて上記メモリへのライトアクセスが行なわれる場合、そのアドレスと上記第1バッファに記憶されているアドレスとを上記第1比較回路で比較し、ライトすべきデータと上記第3バッファに記憶されているデータとを第2比較回路で比較し、
上記第1比較回路及び上記第2比較回路のうちの少なくとも一つからの不一致に応答して故障に対応する処理を行う請求項8の半導体集積回路装置。 - 上記第1比較回路と上記第2比較回路からの一致に応答して、上記第1バッファに記憶されているアドレスに従った上記メモリのアドレスに、上記第3バッファに記憶されているデータがライトされる請求項9の半導体集積回路装置。
- 上記第1スレッドと上記第2スレッドとを1つのCPUコアで実行する請求項7の半導体集積回路装置。
- それぞれがソフトウエアの実行単位である複数のスレッドを切り替えながら動作する半導体集積回路装置であって、
上記複数のスレッドのうち、2つのスレッドがメモリへアクセスする同じソフトウエアとされ、
メモリアクセスに関するアドレスを記憶する第1バッファと、
メモリへライトすべきデータを記憶する第3バッファと、
メモリアクセスのアドレスを上記第1バッファに記憶されているアドレスと比較する第1比較回路と、
メモリへライトすべきデータを上記第3バッファに記憶されているデータと比較する第2比較回路と
を具備し、
上記2つのスレッドのうち、第1スレッドにおいて上記メモリへライトアクセスが行なわれる場合、上記ライトアクセスに関するアドレスを第1バッファに記憶し、ライトすべきデータを第3バッファに記憶し、
上記2つのスレッドのうち、第2スレッドにおいて上記メモリへライトアクセスが行なわれる場合、そのアドレスと上記第1バッファに記憶されているアドレスとを上記第1比較回路で比較し、そのライトすべきデータと上記第3バッファに記憶されているライトデータとを上記第2比較回路で比較し、
上記第1比較回路及び上記第2比較回路のうちの少なくとも一つからの不一致に応答して故障に対応する処理を行う半導体集積回路装置。 - 上記第1比較回路と上記第2比較回路とからの一致に応答して、上記第1バッファに記憶されているライトアドレスに従った上記メモリのアドレスに、上記第3バッファに記憶されているライトデータがライトされる請求項12の半導体集積回路装置。
- 上記第1スレッドと上記第2スレッドとを同一のCPUコアで実行する請求項12の半導体集積回路装置。
- 上記請求項1、7又は12の半導体集積回路装置を具備したシステム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012064785A JP5850774B2 (ja) | 2012-03-22 | 2012-03-22 | 半導体集積回路装置及びそれを用いたシステム |
US13/796,304 US9063907B2 (en) | 2012-03-22 | 2013-03-12 | Comparison for redundant threads |
EP13159868.2A EP2642392B1 (en) | 2012-03-22 | 2013-03-19 | Semiconductor integrated circuit device and system using the same |
US14/704,589 US20150234661A1 (en) | 2012-03-22 | 2015-05-05 | Semiconductor integrated circuit device and system using the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012064785A JP5850774B2 (ja) | 2012-03-22 | 2012-03-22 | 半導体集積回路装置及びそれを用いたシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013196542A JP2013196542A (ja) | 2013-09-30 |
JP5850774B2 true JP5850774B2 (ja) | 2016-02-03 |
Family
ID=47997049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012064785A Active JP5850774B2 (ja) | 2012-03-22 | 2012-03-22 | 半導体集積回路装置及びそれを用いたシステム |
Country Status (3)
Country | Link |
---|---|
US (2) | US9063907B2 (ja) |
EP (1) | EP2642392B1 (ja) |
JP (1) | JP5850774B2 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6029737B2 (ja) * | 2013-02-15 | 2016-11-24 | 三菱電機株式会社 | 制御装置 |
US9251014B2 (en) | 2013-08-08 | 2016-02-02 | International Business Machines Corporation | Redundant transactions for detection of timing sensitive errors |
GB2521155B (en) | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configuring thread scheduling on a multi-threaded data processing apparatus |
GB2521151B (en) * | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configurable thread ordering for a data processing apparatus |
JP6302775B2 (ja) * | 2014-07-07 | 2018-03-28 | 株式会社日立製作所 | 制御装置及びその制御方法 |
GB2537942B (en) * | 2015-05-01 | 2017-06-14 | Imagination Tech Ltd | Fault tolerant processor for real-time systems |
JP6819061B2 (ja) * | 2016-03-28 | 2021-01-27 | 日本電気株式会社 | 情報処理装置、プロセス切り替え方法及びプログラム |
US10002057B2 (en) | 2016-06-03 | 2018-06-19 | Nxp Usa, Inc. | Method and apparatus for managing mismatches within a multi-threaded lockstep processing system |
US10013240B2 (en) | 2016-06-21 | 2018-07-03 | Advanced Micro Devices, Inc. | Fingerprinting of redundant threads using compiler-inserted transformation code |
JP7141942B2 (ja) * | 2018-12-18 | 2022-09-26 | ルネサスエレクトロニクス株式会社 | 半導体装置および電子制御装置 |
EP3779699B1 (en) * | 2019-08-16 | 2024-06-05 | Aptiv Technologies AG | Method for checking program execution of a microcontroller, external device, system and non-transitory computer readable medium |
CN111459544B (zh) * | 2020-03-03 | 2022-10-28 | 北京和利时***工程有限公司 | 安全计算机板卡中多对线程数据表决方法、介质和装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4965717A (en) * | 1988-12-09 | 1990-10-23 | Tandem Computers Incorporated | Multiple processor system having shared memory with private-write capability |
US6792525B2 (en) * | 2000-04-19 | 2004-09-14 | Hewlett-Packard Development Company, L.P. | Input replicator for interrupts in a simultaneous and redundantly threaded processor |
US6854075B2 (en) * | 2000-04-19 | 2005-02-08 | Hewlett-Packard Development Company, L.P. | Simultaneous and redundantly threaded processor store instruction comparator |
US6915395B1 (en) * | 2000-05-03 | 2005-07-05 | Sun Microsystems, Inc. | Active address content addressable memory |
US7308607B2 (en) * | 2003-08-29 | 2007-12-11 | Intel Corporation | Periodic checkpointing in a redundantly multi-threaded architecture |
US20050193283A1 (en) * | 2003-12-30 | 2005-09-01 | Reinhardt Steven K. | Buffering unchecked stores for fault detection in redundant multithreading systems using speculative memory support |
US7444497B2 (en) | 2003-12-30 | 2008-10-28 | Intel Corporation | Managing external memory updates for fault detection in redundant multithreading systems using speculative memory support |
US7178005B1 (en) | 2004-06-30 | 2007-02-13 | Sun Microsystems, Inc. | Efficient implementation of timers in a multithreaded processor |
US7321989B2 (en) * | 2005-01-05 | 2008-01-22 | The Aerospace Corporation | Simultaneously multithreaded processing and single event failure detection method |
JP5013309B2 (ja) * | 2006-08-18 | 2012-08-29 | 日本電気株式会社 | フォールトトレラントコンピュータ、そのトランザクション同期制御方法 |
US20080244354A1 (en) * | 2007-03-28 | 2008-10-02 | Gansha Wu | Apparatus and method for redundant multi-threading with recovery |
US8086825B2 (en) * | 2007-12-31 | 2011-12-27 | Advanced Micro Devices, Inc. | Processing pipeline having stage-specific thread selection and method thereof |
US8082425B2 (en) * | 2009-04-29 | 2011-12-20 | Advanced Micro Devices, Inc. | Reliable execution using compare and transfer instruction on an SMT machine |
JP4886826B2 (ja) | 2009-08-24 | 2012-02-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | フォールト・トレラント・コンピュータ・システム、方法及びプログラム |
-
2012
- 2012-03-22 JP JP2012064785A patent/JP5850774B2/ja active Active
-
2013
- 2013-03-12 US US13/796,304 patent/US9063907B2/en active Active
- 2013-03-19 EP EP13159868.2A patent/EP2642392B1/en active Active
-
2015
- 2015-05-05 US US14/704,589 patent/US20150234661A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US9063907B2 (en) | 2015-06-23 |
US20130254592A1 (en) | 2013-09-26 |
JP2013196542A (ja) | 2013-09-30 |
US20150234661A1 (en) | 2015-08-20 |
EP2642392B1 (en) | 2014-12-24 |
EP2642392A1 (en) | 2013-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5850774B2 (ja) | 半導体集積回路装置及びそれを用いたシステム | |
JP5693712B2 (ja) | 半導体集積回路 | |
US10365979B2 (en) | Lockstepped CPU selection based on failure status | |
TWI651652B (zh) | 汽車用的控制裝置 | |
JP4996654B2 (ja) | プロセッサ | |
US9229830B2 (en) | Semiconductor integrated circuit device and microcontroller | |
JP2011513843A (ja) | 実行装置内のデータ転送のシステムおよび方法 | |
JP6005392B2 (ja) | ルーティングのための方法及び装置 | |
JP5142868B2 (ja) | キャッシュメモリ制御回路及びプロセッサ | |
JP4865016B2 (ja) | プロセッサ | |
JP2010198327A (ja) | マイクロコントローラおよび電子制御装置 | |
JP5292706B2 (ja) | コンピュータシステム | |
JP4985452B2 (ja) | ベクトル処理装置 | |
JP2009175960A (ja) | 仮想マルチプロセッサシステム | |
US10733125B2 (en) | Microcomputer | |
JP5850732B2 (ja) | 半導体装置及びその制御方法 | |
US9342359B2 (en) | Information processing system and information processing method | |
JP3476314B2 (ja) | マイクロプロセッサ | |
JP2008146188A (ja) | 集積回路 | |
JP2010033323A (ja) | マルチプロセッサ及びそれをデバッグするデバッグ装置並びに前記マルチプロセッサをデバッグするデバッグ方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140828 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150731 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150806 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150929 |
|
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: 20151112 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151201 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5850774 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |