IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ シーメンス インダストリー ソフトウェア インコーポレイテッドの特許一覧

特許7381752ロックステップで動作するプロセッサのモニタリング
<>
  • 特許-ロックステップで動作するプロセッサのモニタリング 図1
  • 特許-ロックステップで動作するプロセッサのモニタリング 図2
  • 特許-ロックステップで動作するプロセッサのモニタリング 図3
  • 特許-ロックステップで動作するプロセッサのモニタリング 図4
  • 特許-ロックステップで動作するプロセッサのモニタリング 図5
  • 特許-ロックステップで動作するプロセッサのモニタリング 図6
  • 特許-ロックステップで動作するプロセッサのモニタリング 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-07
(45)【発行日】2023-11-15
(54)【発明の名称】ロックステップで動作するプロセッサのモニタリング
(51)【国際特許分類】
   G06F 11/07 20060101AFI20231108BHJP
【FI】
G06F11/07 178
G06F11/07 140J
【請求項の数】 22
(21)【出願番号】P 2022530803
(86)(22)【出願日】2020-11-25
(65)【公表番号】
(43)【公表日】2023-02-01
(86)【国際出願番号】 EP2020083426
(87)【国際公開番号】W WO2021105247
(87)【国際公開日】2021-06-03
【審査請求日】2022-07-22
(31)【優先権主張番号】16/696,812
(32)【優先日】2019-11-26
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520161964
【氏名又は名称】シーメンス インダストリー ソフトウェア インコーポレイテッド
(74)【代理人】
【識別番号】100114890
【弁理士】
【氏名又は名称】アインゼル・フェリックス=ラインハルト
(74)【代理人】
【識別番号】100098501
【弁理士】
【氏名又は名称】森田 拓
(74)【代理人】
【識別番号】100116403
【弁理士】
【氏名又は名称】前川 純一
(74)【代理人】
【識別番号】100134315
【弁理士】
【氏名又は名称】永島 秀郎
(74)【代理人】
【識別番号】100162880
【弁理士】
【氏名又は名称】上島 類
(72)【発明者】
【氏名】ガジンダー パネザー
(72)【発明者】
【氏名】イアン ロバートソン
(72)【発明者】
【氏名】キャラム スチュワート
(72)【発明者】
【氏名】ハナン モラー
(72)【発明者】
【氏名】メルヴィン チア
【審査官】武田 広太郎
(56)【参考文献】
【文献】特表2009-501367(JP,A)
【文献】特開2005-302020(JP,A)
【文献】米国特許出願公開第2019/0114243(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
(57)【特許請求の範囲】
【請求項1】
集積回路(IC)チップであって、前記集積回路(IC)チップは、
システムメモリと、ロックステップで動作するように構成されたマスタプロセッサおよびチェッカプロセッサとを有するシステム回路と、
内部ロックステップモニタと、マスタトレーサと、チェッカトレーサとを有するモニタリング回路と、
を有し、
前記内部ロックステップモニタは、
前記マスタプロセッサおよび前記チェッカプロセッサの内部信号の状態を観察し、
前記マスタプロセッサおよび前記チェッカプロセッサの対応する観察状態を比較し、
対応する前記観察状態が異なる場合、
前記マスタトレーサをトリガして、前記マスタプロセッサの出力から記録され格納されたマスタトレースデータを出力させ、
前記チェッカトレーサをトリガして、前記チェッカプロセッサの出力から記録され格納されたチェッカトレースデータを出力させる、
ように構成されている、
集積回路(IC)チップ。
【請求項2】
前記内部ロックステップモニタはさらに、対応する前記観察状態が異なる場合、対応する前記観察状態を出力するように構成されている、請求項1記載のICチップ。
【請求項3】
前記内部ロックステップモニタは、
前記マスタプロセッサの観察状態を蓄積するように構成された内部マスタバッファと、
前記チェッカプロセッサの観察状態を蓄積するように構成された内部チェッカバッファと、
前記内部マスタバッファからの前記マスタプロセッサのそれぞれの観察状態と、前記内部チェッカバッファからの前記チェッカプロセッサの対応する前記観察状態とを比較するように構成された比較器と、
を有する、請求項1記載のICチップ。
【請求項4】
前記内部ロックステップモニタはさらにタイマを有し、
前記タイマは、
前記内部マスタバッファに蓄積されている前記マスタプロセッサの観察状態と、前記内部チェッカバッファに蓄積されている前記チェッカプロセッサの観察状態との間の経過時間を計数し、
前記経過時間がタイムアウト閾値を越える場合に、アラートを出力する、
ように構成されている、
請求項3記載のICチップ。
【請求項5】
前記モニタリング回路はさらに、出力ロックステップモニタを有し、
前記出力ロックステップモニタは、
前記マスタプロセッサおよび前記チェッカプロセッサによって要求されるメモリアクセスを観察し、
前記マスタプロセッサおよび前記チェッカプロセッサの対応する要求メモリアクセスを比較し、
対応する前記要求メモリアクセスが異なる場合、
前記マスタトレーサをトリガして、前記マスタプロセッサの前記出力から記録され格納されたマスタトレースデータを出力させ、
前記チェッカトレーサをトリガして、前記チェッカプロセッサの前記出力から記録され格納されたチェッカトレースデータを出力させ、
前記内部ロックステップモニタをトリガして、前記マスタプロセッサおよびチェッカプロセッサの観察状態を出力させる、
ように構成されている、
請求項1記載のICチップ。
【請求項6】
前記内部ロックステップモニタは、対応する前記観察状態が異なる場合、前記出力ロックステップモニタをトリガして、前記マスタプロセッサおよび前記チェッカプロセッサの要求メモリアクセスを出力させるように構成されている、請求項5記載のICチップ。
【請求項7】
前記モニタリング回路はさらに、ロックステップアクセスフィルタを有し、
前記ロックステップアクセスフィルタは、
前記マスタプロセッサの出力を受け取り、
前記チェッカプロセッサの出力を受け取り、
前記チェッカプロセッサの要求メモリアクセスが、前記システムメモリに伝わるのを阻止し、
前記マスタプロセッサを対象としている前記システムメモリからのメッセージを前記チェッカプロセッサに送信する、
ように構成されている、
請求項1記載のICチップ。
【請求項8】
前記内部ロックステップモニタは、対応する前記観察状態が異なる場合、前記ロックステップアクセスフィルタをトリガして、前記マスタプロセッサおよび前記チェッカプロセッサの要求メモリアクセスを出力させるように構成されている、請求項7記載のICチップ。
【請求項9】
前記システム回路はさらに、ロックステップで前記マスタプロセッサおよび前記チェッカプロセッサと動作するように構成された別のチェッカプロセッサを有し、
前記内部ロックステップモニタは、
前記別のチェッカプロセッサの内部信号の状態を観察し、
前記別のチェッカプロセッサおよびマスタプロセッサおよびチェッカプロセッサの、対応する観察状態を比較し、
対応する前記観察状態のいずれかが異なる場合、
前記マスタトレーサをトリガして、前記マスタプロセッサの前記出力から記録され格納されたマスタトレースデータを出力させ、
前記チェッカトレーサをトリガして、前記チェッカプロセッサの前記出力から記録され格納されたチェッカトレースデータを出力させる、
ように構成されている、
請求項1記載のICチップ。
【請求項10】
前記内部ロックステップモニタは、前記マスタプロセッサおよび前記チェッカプロセッサのランタイム時に請求項1記載の観察、比較、およびトリガのステップを実行するように構成されている、請求項1記載のICチップ。
【請求項11】
ICチップであって、前記ICチップは、
システムメモリと、ロックステップで動作するように構成されたマスタプロセッサおよびチェッカプロセッサとを有するシステム回路と、
出力ロックステップモニタおよび解析回路を有するモニタリング回路と、
を有し、
前記出力ロックステップモニタは、
前記マスタプロセッサおよび前記チェッカプロセッサの要求メモリアクセスを観察し、
前記マスタプロセッサおよび前記チェッカプロセッサの対応する要求メモリアクセスを比較し、
対応する前記要求メモリアクセスが異なる場合、前記解析回路をトリガして、前記マスタプロセッサおよびチェッカプロセッサの内部信号の記録された観察状態を出力させる、
ように構成されている、
ICチップ。
【請求項12】
前記モニタリング回路はさらに、マスタトレーサおよびチェッカトレーサを有し、
対応する前記要求メモリアクセスが異なる場合、前記出力ロックステップモニタは、
前記マスタトレーサをトリガして、前記マスタプロセッサの前記出力から記録され格納されたマスタトレースデータを出力させ、
前記チェッカトレーサをトリガして、前記チェッカプロセッサの前記出力から記録され格納されたチェッカトレースデータを出力させる、
ように構成されている、
請求項11記載のICチップ。
【請求項13】
前記解析回路は、前記マスタプロセッサの内部信号の状態を観察するように構成されたマスタ解析器と、前記チェッカプロセッサの内部信号の状態を観察するように構成されたチェッカ解析器とを有する、請求項11記載のICチップ。
【請求項14】
前記解析回路は、内部ロックステップモニタであり、
前記内部ロックステップモニタは、
前記マスタプロセッサおよび前記チェッカプロセッサの内部信号の状態を観察し、
前記マスタプロセッサおよび前記チェッカプロセッサの対応する観察状態を比較し、
対応する前記観察状態が異なる場合、
前記マスタトレーサをトリガして、前記マスタプロセッサの前記出力から記録され格納されたマスタトレースデータを出力させ、
前記チェッカトレーサをトリガして、前記チェッカプロセッサの前記出力から記録され格納されたチェッカトレースデータを出力させる、
ように構成されている、
請求項12記載のICチップ。
【請求項15】
対応する前記観察状態が異なる場合、前記内部ロックステップモニタは、前記出力ロックステップモニタをトリガして、前記マスタプロセッサおよび前記チェッカプロセッサの要求メモリアクセスを出力させるように構成されている、請求項14記載のICチップ。
【請求項16】
前記出力ロックステップモニタはさらに、対応する前記要求メモリアクセスが異なる場合、対応する前記要求メモリアクセスを出力するように構成されている、請求項11記載のICチップ。
【請求項17】
前記出力ロックステップモニタは、
前記マスタプロセッサのメモリアクセス要求を蓄積するように構成された出力マスタバッファと、
前記チェッカプロセッサのメモリアクセス要求を蓄積するように構成された出力チェッカバッファと、
前記出力マスタバッファからの前記マスタプロセッサのそれぞれのメモリアクセス要求と、前記出力チェッカバッファからの前記チェッカプロセッサの対応する前記メモリアクセス要求とを比較するように構成された比較器と、
を有する、請求項11記載のICチップ。
【請求項18】
前記出力ロックステップモニタはさらに、タイマを有し、
前記タイマは、
前記出力マスタバッファに蓄積されている前記マスタプロセッサのメモリアクセス要求と、前記出力チェッカバッファに蓄積されている前記チェッカプロセッサのメモリアクセス要求との間の経過時間を計数し、
前記経過時間がタイムアウト閾値を越える場合に、アラートを出力する、
ように構成されている、
請求項17記載のICチップ。
【請求項19】
前記モニタリング回路はさらに、ロックステップアクセスフィルタを有し、
前記ロックステップアクセスフィルタは、
前記マスタプロセッサの前記出力を受け取り、
前記チェッカプロセッサの前記出力を受け取り、
前記チェッカプロセッサの要求メモリアクセスが、前記システムメモリに伝わるのを阻止し、
前記マスタプロセッサを対象としている前記システムメモリからのメッセージを前記チェッカプロセッサに送信する、
ように構成されている、
請求項11記載のICチップ。
【請求項20】
前記出力ロックステップモニタは、対応する前記要求メモリアクセスが異なる場合、前記ロックステップアクセスフィルタをトリガして、前記マスタプロセッサおよび前記チェッカプロセッサの要求メモリアクセスを出力するように構成されている、請求項19記載のICチップ。
【請求項21】
前記システム回路はさらに、ロックステップで、前記マスタプロセッサおよび前記チェッカプロセッサと動作するように構成された別のチェッカプロセッサを有し、
前記出力ロックステップモニタは、
前記別のチェッカプロセッサの要求メモリアクセスを観察し、
前記別のチェッカプロセッサおよびマスタプロセッサおよびチェッカプロセッサの、対応する要求メモリアクセスを比較し、
対応する前記要求メモリアクセスが異なる場合、前記解析回路をトリガして、前記マスタプロセッサおよびチェッカプロセッサおよび別のチェッカプロセッサの内部信号の記録された観察状態を出力させる、
ように構成されている、
請求項11記載のICチップ。
【請求項22】
前記出力ロックステップモニタは、前記マスタプロセッサおよび前記チェッカプロセッサのランタイム時に請求項11の観察、比較、およびトリガのステップを実行するように構成されている、請求項11記載のICチップ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、システムオンチップ(SoC:System-on-Chip)またはマルチチップモジュール(MCM:multi-chip module)上のプロセッサのモニタリングに関する。
【0002】
背景技術
高信頼性システムでは、SoC上で、ロックステップで動作する2つの中央処理ユニット(CPU)を利用することが公知である。両方のCPUは、冗長バックアップ構成において、同じ速度で同じコードを実行する。一方のCPUはマスタとして機能し、他方のCPUはチェッカとして機能する。マスタのメモリアクセス要求は、システムメモリに伝わるのに対し、チェッカのアクセス要求は伝わらないことがある。マスタおよびチェッカのメモリアクセス要求をクロスチェックするために、ロックステップモニタが設けられている。特に、ロックステップモニタは、同じメモリアドレスへのアクセスが、マスタとチェッカとにより、同じ順序で要求されているか否かを調べるためにチェックを行う。ロックステップモニタは、マスタおよびチェッカの両方により、同じ順序で、同じデータがメモリに書き込まれるように要求されているか否かもチェックする。マスタおよびチェッカの対応するメモリアクセス要求における不一致が、識別される。
【0003】
一般にロックステップモニタは、オフチップで提供され、クロスチェック動作をリアルタイムで実行しない。したがって、結果的に2つのCPUの大きく異なるメモリアクセス要求をもたらすエラーの発生と、ロックステップモニタによって検出されるそのエラーとの間に大きな遅延が生じてしまう。
【0004】
望ましいと思われるのは、ロックステップで動作するCPUのクロスチェックを高速化し、ロックステップモニタがCPUの大きく異なる挙動を識別する速度を増大させることである。
【0005】
本発明の概要
第1態様によると、次を有する集積回路(IC)チップが提供される。すなわち、システムメモリならびにロックステップで動作するように構成されたマスタプロセッサおよびチェッカプロセッサを有するシステム回路と、内部ロックステップモニタならびにマスタトレーサおよびチェッカトレーサを有するモニタリング回路とを有し、内部ロックステップモニタは、マスタプロセッサおよびチェッカプロセッサの内部信号の状態を観察し、マスタプロセッサおよびチェッカプロセッサの、対応する観察状態を比較し、対応する観察状態が異なる場合、マスタトレーサをトリガして、マスタプロセッサの出力から記録され格納されたマスタトレースデータを出力させ、チェッカトレーサをトリガして、チェッカプロセッサの出力から記録され格納されたチェッカトレースデータを出力させる、ように構成されている。
【0006】
内部ロックステップモニタはさらに、対応する観察状態が異なる場合、対応する観察状態を出力するように構成可能である。
【0007】
内部ロックステップモニタは、マスタプロセッサの観察状態を蓄積するように構成された内部マスタバッファと、チェッカプロセッサの観察状態を蓄積するように構成された内部チェッカバッファと、内部マスタバッファからのマスタプロセッサのそれぞれの観察状態と、内部チェッカバッファからのチェッカプロセッサの対応する観察状態とを比較するように構成された比較器と、を有していてよい。
【0008】
内部ロックステップモニタはさらにタイマを有していてよく、このタイマは、内部マスタバッファに蓄積されているマスタプロセッサの観察状態と、内部チェッカバッファに蓄積されているチェッカプロセッサの観察状態との間の経過時間を計数し、経過時間がタイムアウト閾値を越える場合に、アラートを出力する、ように構成されている。
【0009】
モニタリング回路はさらに、出力ロックステップモニタを有することができ、この出力ロックステップモニタは、マスタプロセッサおよびチェッカプロセッサによって要求されるメモリアクセスを観察し、マスタプロセッサおよびチェッカプロセッサの対応する要求メモリアクセスを比較し、対応する要求メモリアクセスが異なる場合、マスタトレーサをトリガして、マスタプロセッサの出力から記録され格納されたマスタトレースデータを出力させ、チェッカトレーサをトリガして、チェッカプロセッサの出力から記録され格納されたチェッカトレースデータを出力させ、内部ロックステップモニタをトリガして、マスタプロセッサおよびチェッカプロセッサの観察状態を出力させる、ように構成されている。
【0010】
内部ロックステップモニタは、対応する観察状態が異なる場合、出力ロックステップモニタをトリガして、マスタプロセッサおよびチェッカプロセッサの要求メモリアクセスを出力させるように構成可能である。
【0011】
モニタリング回路はさらに、ロックステップアクセスフィルタを有していてよく、このロックステップアクセスフィルタは、マスタプロセッサの出力を受け取り、チェッカプロセッサの出力を受け取り、チェッカプロセッサの要求メモリアクセスが、システムメモリに伝わるのを阻止し、マスタプロセッサを対象としているシステムメモリからのメッセージをチェッカプロセッサに送信する、ように構成されている。
【0012】
内部ロックステップモニタは、対応する観察状態が異なる場合、ロックステップアクセスフィルタをトリガして、マスタプロセッサおよびチェッカプロセッサの要求メモリアクセスを出力するように構成可能である。
【0013】
システム回路はさらに、ロックステップでマスタプロセッサおよびチェッカプロセッサと動作するように構成された別のチェッカプロセッサを有していてよく、内部ロックステップモニタは、別のチェッカプロセッサの内部信号の状態を観察し、別のチェッカプロセッサおよびマスタプロセッサおよびチェッカプロセッサの、対応する観察状態を比較し、対応する観察状態のいずれかが異なる場合、マスタトレーサをトリガして、マスタプロセッサの出力から記録され格納されたマスタトレースデータを出力させ、チェッカトレーサをトリガして、チェッカプロセッサの出力から記録され格納されたチェッカトレースデータを出力させるように構成可能である。
【0014】
内部ロックステップモニタは、マスタプロセッサおよびチェッカプロセッサのランタイム時に観察、比較、およびトリガのステップを実行するように構成可能である。
【0015】
第2態様によると、ICチップが提供され、このICチップは、システムメモリならびにロックステップで動作するように構成されたマスタプロセッサおよびチェッカプロセッサを有するシステム回路と、出力ロックステップモニタおよび解析回路を有するモニタリング回路とを有し、出力ロックステップモニタは、マスタプロセッサおよびチェッカプロセッサの要求メモリアクセスを観察し、マスタプロセッサおよびチェッカプロセッサの対応する要求メモリアクセスを比較し、対応する要求メモリアクセスが異なる場合、解析回路をトリガして、マスタプロセッサおよびチェッカプロセッサの内部信号の記録された観察状態を出力させる、ように構成されている。
【0016】
モニタリング回路はさらに、マスタトレーサおよびチェッカトレーサを有していてよく、対応する要求メモリアクセスが異なる場合、出力ロックステップモニタは、マスタトレーサをトリガして、マスタプロセッサの出力から記録され格納されたマスタトレースデータを出力させ、チェッカトレーサをトリガして、チェッカプロセッサの出力から記録され格納されたチェッカトレースデータを出力させる、ように構成されていてよい。
【0017】
解析回路は、マスタプロセッサの内部信号の状態を観察するように構成されたマスタ解析器と、チェッカプロセッサの内部信号の状態を観察するように構成されたチェッカ解析器とを有していてよい。
【0018】
解析回路は、内部ロックステップモニタであってよく、この内部ロックステップモニタは、マスタプロセッサおよびチェッカプロセッサの内部信号の状態を観察し、マスタプロセッサおよびチェッカプロセッサの対応する観察状態を比較し、対応する観察状態が異なる場合、マスタトレーサをトリガして、マスタプロセッサの出力から記録され格納されたマスタトレースデータを出力させ、チェッカトレーサをトリガして、チェッカプロセッサの出力から記録され格納されたチェッカトレースデータを出力させる、ように構成されている。
【0019】
対応する観察状態が異なる場合、内部ロックステップモニタは、出力ロックステップモニタをトリガして、マスタプロセッサおよびチェッカプロセッサの要求メモリアクセスを出力させるように構成可能である。
【0020】
出力ロックステップモニタはさらに、対応する要求メモリアクセスが異なる場合、対応する要求メモリアクセスを出力するように構成可能である。
【0021】
出力ロックステップモニタは、マスタプロセッサのメモリアクセス要求を蓄積するように構成された出力マスタバッファと、チェッカプロセッサのメモリアクセス要求を蓄積するように構成された出力チェッカバッファと、出力マスタバッファからの、マスタプロセッサのそれぞれのメモリアクセス要求と、出力チェッカバッファからの、チェッカプロセッサの対応するメモリアクセス要求とを比較するように構成された比較器と、を有していてよい。
【0022】
出力ロックステップモニタはさらに、タイマを有していてよく、このタイマは、出力マスタバッファに蓄積されているマスタプロセッサのメモリアクセス要求と、出力チェッカバッファに蓄積されているチェッカプロセッサのメモリアクセス要求との間の経過時間を計数し、この経過時間がタイムアウト閾値を越える場合に、アラートを出力する、ように構成されている。
【0023】
モニタリング回路はさらに、ロックステップアクセスフィルタを有していてよく、このロックステップアクセスフィルタは、マスタプロセッサの出力を受け取り、チェッカプロセッサの出力を受け取り、チェッカプロセッサの要求メモリアクセスが、システムメモリに伝わるのを阻止し、マスタプロセッサを対象としているシステムメモリからのメッセージをチェッカプロセッサに送信する、ように構成されている。
【0024】
出力ロックステップモニタは、対応する要求メモリアクセスが異なる場合、ロックステップアクセスフィルタをトリガして、マスタプロセッサおよびチェッカプロセッサの要求メモリアクセスを出力するように構成可能である。
【0025】
システム回路はさらに、ロックステップで、マスタプロセッサおよびチェッカプロセッサと動作するように構成された別のチェッカプロセッサを有していてよく、出力ロックステップモニタは、別のチェッカプロセッサの要求メモリアクセスを観察し、別のチェッカプロセッサおよびマスタプロセッサおよびチェッカプロセッサの、対応する要求メモリアクセスを比較し、対応する要求メモリアクセスが異なる場合、解析回路をトリガして、マスタプロセッサおよびチェッカプロセッサおよび別のチェッカプロセッサの内部信号の記録された観察状態を出力させる、ように構成されている。
【0026】
出力ロックステップモニタは、マスタプロセッサおよびチェッカプロセッサのランタイム時に観察、比較、およびトリガのステップを実行するように構成可能である。
【0027】
以下では、添付の図面を参照し、例示により、本発明を説明する。
【図面の簡単な説明】
【0028】
図1】例示的な集積回路チップデバイスの概略図である。
図2】集積回路チップデバイス上の例示的なモニタリングネットワークおよびシステム回路の概略図である。
図3】例示的な出力ロックステップモニタの概略図である。
図4】ロックステップで動作するプロセッサのシステムアクセスにおける大きな相違を検出して応答する方法のフローチャートである。
図5】集積回路チップデバイス上の例示的なモニタリングネットワークおよびシステム回路の概略図である。
図6】例示的な内部ロックステップモニタの概略図である。
図7】ロックステップで動作するプロセッサの内部信号の状態の大きな相違を検出して応答する方法のフローチャートである。
【0029】
詳細な説明
以下の開示では、集積回路チップ上で実装するのに適したモニタリングアーキテクチャを説明する。集積回路チップは、SoCまたはマルチチップモジュール(MCM:multi-chip module)であってよい。
【0030】
図1図2図3図5および図6は、例示的なシステムアーキテクチャおよびこのシステムアーキテクチャ内のコンポーネントの概略図である。これらの図は、機能ブロックにおいて構造を表している。当該技術分野でよく知られている機能を実行するためのいくつかの機能ブロックは、これらの図面から所々省略されている。図4および図7は、ロックステップで動作するプロセッサにおける大きく異なる挙動に応答する方法を示すフローチャートである。それぞれのフローチャートには、そのフローチャートの方法を実行することができる順序が示されている。しかしながら、これらのフローチャートは、説明する方法が、図示されている順序で実装されることに限定することを意図していない。方法のステップは、フローチャートに示されている順序とは択一的な順序で実行可能である。
【0031】
図1には、SoC100についての例示的なモニタリングネットワークの一般的な構造が示されている。モニタリング回路101は、システム回路102をモニタリングするために構成されている。例えば、安全性またはセキュリティ上の関心事に関連する、システム回路のコアデバイスの不適切な動作を検出することが目的である。
【0032】
図2には、モニタリング回路およびシステム回路を有する例示的な集積回路チップデバイスが示されている。図2では、システム回路は、マスタデバイス201およびチェッカデバイス202を有する。マスタデバイスは、プロセッサ203およびメモリ204を有する。チェッカは、プロセッサ205およびメモリ206を有する。チェッカデバイス202のプロセッサ205およびメモリ206は、マスタデバイス201のプロセッサ203およびメモリ204と機能的に同じである。チェッカデバイスのプロセッサ205は、ロックステップでマスタデバイスのプロセッサ203と一緒に動作するように構成されている。換言すると、プロセッサ205は、プロセッサ203と同じコードを実行する。好適にはプロセッサ205により、プロセッサ203と同じクロック速度でコードが実行される。プロセッサ203およびプロセッサ205は、それらが同じコードを同時に実行するように時刻同期されてもよい。択一的には、プロセッサ203とプロセッサ205とは、nクロックサイクルだけ時間的にオフセットされていてよい。例えば、0.5<n<32である。このことは、両方のプロセッサによるコードの実行において同じエラーを生じさせることになる、SoCにおける一時的なエラーの作用を軽減するのに役立つ。プロセッサ203とプロセッサ205とは、同じクロックによってクロック制御されてよい。プロセッサ203とプロセッサ205が両方とも、同じクロックから直接に同じクロック信号を受信する場合、これらは時刻同期される。択一的には、nサイクル時間のオフセットを実現するために、一方のプロセッサによって受信されるクロック信号に、他方のプロセッサに対して相対的な遅延を導入することができる。プロセッサは択一的には、異なるクロックによってクロック制御されてよい。これらの異なるクロックは、同じクロック周波数を有していてよい。この場合、プロセッサは、nクロックサイクルだけ時間的にオフセットされる。異なるクロックは、異なるクロック周波数を有していてよい。これにより、プロセッサは、それぞれ異なるクロック速度で動作することになる。
【0033】
図2にはただ1つのチェッカデバイス202が示されているが、SoC上には別の複数のチェッカデバイスが集積されていてもよい。それぞれの別のチェッカデバイスは、プロセッサおよびメモリを有し、これらはそれぞれ、マスタデバイス201のプロセッサ203およびメモリ204と機能的に同じであり、上述のようにロックステップで動作する。したがって、マスタデバイス201と、1つ以上のチェッカデバイス202とは、冗長バックアップ構成を形成する。
【0034】
マスタデバイス201は、ネットワークにおける読み出し/書き込み要求などのトラフィックを開始するデバイスである。マスタデバイスの例は、DSP(digital signal processor)、ビデオプロセッサ、アプリケーションプロセッサ、CPU(central processor unit)、およびGPU(graphics processor unit)などのプロセッサである。プログラミング可能な任意のプロセッサが、マスタデバイスになり得る。マスタデバイスの別の例は、DMA(direct memory access)機能を有するマスタデバイス、例えば、1つのロケーションから別のロケーションにデータを移動させるための従来のDMA、DMA機能を備えた自律的なコプロセッサ(暗号化エンジンなど)、およびDMA機能を備えた周辺装置(イーサネットコントローラなど)である。
【0035】
図2のシステム回路は、システムメモリ207も有する。システムメモリは、SoC上のただ1つのメモリであってよい。択一的には、システムメモリは、SoC間に分散されていてよい。以下で説明する方法の関連において、マスタデバイスは、システムメモリ207に読み出し/書き込み要求を発する。
【0036】
図2のシステム回路は、別のコンポーネント208も有する。これらの別のコンポーネント208には、上で挙げたタイプの別のマスタデバイスが含まれていてよい。これらの別のコンポーネント208には、マスタデバイスのコマンドに応答するスレーブデバイスが含まれていてもよい。スレーブデバイスの例は、オンチップメモリ、オフチップメモリ(DRAMなど)用のメモリコントローラ、および周辺ユニットである。
【0037】
最後に、図2のシステム回路には、相互接続回路209も含まれている。この相互接続回路は、SoC用の通信バックボーンを形成し、この通信バックボーンを介してシステム回路のコンポーネントが互いに通信する。これらの通信は双方向である。相互接続回路は、マスタデバイス201、チェッカデバイス202、システムメモリ207および別のコンポーネント208のそれぞれに通信接続されている。相互接続回路209のトポロジはSoCに依存している。例えば、このトポロジには、システム回路周辺で通信を伝送する次のタイプのネットワーク、すなわち、バスネットワーク、リングネットワーク、ツリーネットワーク、またはメッシュネットワークのいずれか1つまたはこれらの組み合わせが含まれていてよい。
【0038】
モニタリング回路は、いくつかのモニタリングコンポーネントを有し、これらはすべて、モニタリング相互接続回路211によってコミュニケータ210に接続されている。好適には、モニタリングコンポーネントとモニタリング相互接続回路211との間の接続は、双方向である。好適には、モニタリング相互接続回路211とコミュニケータ210との間の接続は、双方向である。コミュニケータ210は、オフチップのエンティティと通信するためのインタフェースであってよい。例えば、モニタリングコンポーネントは、コミュニケータ210を介してオフチップの解析器と通信可能である。コミュニケータ210は、付加的にまたは択一的に、オンチップの別のエンティティと通信するように構成されていてよい。例えば、モニタリングコンポーネントは、コミュニケータ210を介してオンチップの解析器と通信可能である。図2には1つのコミュニケータ210が示されているが、SoC上には任意の個数のコミュニケータが集積可能である。実装されるコミュニケータは、確立されるべき接続のタイプに依存して選択される。例示的なコミュニケータには、JTAG、パラレルトレース入出力、およびAuroraベースの高速シリアルインタフェース、ならびにUSB、イーサネット、RS232、PCIeおよびCANなどのシステムインタフェースの再利用が含まれる。
【0039】
モニタリング相互接続回路211のトポロジには、モニタリング回路周辺で通信を伝送する次のタイプのネットワーク、すなわち、バスネットワーク、リングネットワーク、ツリーネットワーク、またはメッシュネットワークのいずれか1つまたはこれらの組み合わせが含まれていてよい。モニタリングコンポーネントとコミュニケータ210との間の通信リンクは、双方向である。
【0040】
モニタリング回路は、出力ロックステップモニタ212を有する。出力ロックステップモニタ212は、入力として、マスタデバイス201の出力およびチェッカデバイス202の出力の両方を受け取る。出力ロックステップモニタ212は、マスタデバイス201およびチェッカデバイス202の両方の受け取った出力を観察し、これらの出力を比較する。マスタプロセッサおよびチェッカプロセッサが同じ速度でクロック制御される場合、出力ロックステップモニタ212によって比較される対応するアイテムは、1つのビットからトランザクション全体までの任意の長さであってよい。マスタプロセッサとチェッカプロセッサとが異なる速度でクロック制御される場合、出力ロックステップモニタ212によって比較される対応するアイテムは、より長く、すなわちトランザクション全体になる。換言すると、マスタプロセッサとチェッカプロセッサとは、時刻同期されていないため、出力ロックステップモニタ212は、それらの出力を比較する前に、マスタプロセッサおよびチェッカプロセッサの両方が、トランザクション全体を完了するまで待機する(マスタプロセッサおよびチェッカプロセッサは、異なる時点でこのトランザクションを完了する)。出力ロックステップモニタ212の出力は、モニタリング相互接続回路211を介してコミュニケータ210に接続されている。
【0041】
図3には、出力ロックステップモニタ212の例示的な内部構造が示されている。マスタプロセッサ203の出力は、出力マスタバッファ301に入力として供給される。チェッカプロセッサ205の出力は、出力チェッカバッファ302に入力として供給される。それぞれのバッファ301およびバッファ302に少なくとも1つのアイテムが存在する場合、それぞれのバッファにおける先頭のアイテムが、比較器303に出力される。比較器303により、先頭の2つのアイテムが比較される。比較器の出力により、アイテムが等しいかまたは異なるかが識別される。比較器の出力は、メッセージコンストラクタ305への入力である。メッセージコンストラクタ305は、メッセージを生成する。好適には、メッセージコンストラクタ305は、バッファ301およびバッファ302の先頭のアイテムが異なることが比較器によって識別されると、メッセージを生成する。そのメッセージにより、マスタプロセッサ203およびチェッカプロセッサ205の対応する出力が、異なることを識別することができる。このメッセージには付加的に、マスタプロセッサ203およびチェッカプロセッサ205の異なる出力が含まれていてよい。メッセージコンストラクタ305は次いで、出力ロックステップモニタからモニタリング相互接続回路211にこのメッセージを出力する。さらに以下で説明するように、このメッセージに応じて、種々の異なるアクションを取ることができる。
【0042】
バッファ301およびバッファ302へのアイテム入力は、システムメモリ207にアクセスするために、マスタプロセッサ203およびチェッカプロセッサ205によって要求されてよい。この実施例では、出力ロックステップモニタ212によってチェックされるのは、マスタプロセッサ203によって命令されるのと同じメモリアクセスが、同じ順序でチェッカプロセッサ205によっても命令されているか否かである。例えば、マスタプロセッサ203の読み出し要求は、マスタデバイス出力から抽出されて、出力マスタバッファ301に入力されてよく、チェッカプロセッサ205の読み出し要求は、チェッカデバイス出力から抽出されて、出力チェッカバッファ302に入力されてよい。別の例として、マスタプロセッサ203の書き込み要求が、マスタデバイス出力から抽出されて、出力マスタバッファ301に入力されてよく、チェッカプロセッサ205の書き込み要求が、チェッカデバイス出力から抽出されて、出力チェッカバッファ302に入力されてよい。出力ロックステップモニタ212は、出力マスタバッファの集合を有することができ、それぞれ1つの出力マスタバッファは、マスタプロセッサ203の異なる出力を格納するためのものである。出力ロックステップモニタ212は、出力チェッカバッファの対応する集合を有することもでき、それぞれの1つの出力チェッカバッファは、マスタプロセッサ203の出力に対応する、チェッカプロセッサ205の異なる出力を格納するためのものである。出力ロックステップモニタ212は、対応する出力マスタバッファおよび出力チェッカバッファからの、対応するプロセッサ出力アイテムを比較する1つの比較器または比較器の集合を有していてよい。比較器は、メッセージコンストラクタ305に出力し、メッセージコンストラクタ305は、マスタプロセッサ203およびチェッカプロセッサ205の任意の対応する出力間の不一致を識別することに基づいてメッセージを組み立てる。
【0043】
好適には、出力ロックステップモニタは、プロセッサ203およびプロセッサ205のランタイム時に動作する。したがって、異なる出力を生成するマスタプロセッサ203とチェッカプロセッサ205との間には最小遅延が存在し、その出力は、出力ロックステップモニタによって識別され、モニタリング相互接続回路211に伝達される。
【0044】
出力ロックステップモニタはさらに、タイマ304を有していてよい。タイマ304は、出力マスタバッファ301に蓄積されている、マスタプロセッサ203の出力と、出力チェッカバッファ302に蓄積されている、チェッカプロセッサ205の対応する出力との間の経過時間を計数する。タイマ304は、タイムアウト閾値を有する。対応する両方の出力がバッファ301およびバッファ302に入る前に、計数値が、タイムアウト閾値の値に達すると、タイマは、このことの指示をメッセージコンストラクタ305に出力する。メッセージコンストラクタ305は、アラートメッセージを生成し、メッセージコンストラクタ305は、出力ロックステップモニタ212からモニタリング相互接続回路211にこのアラートメッセージを出力する。
【0045】
図2に戻ると、モニタリング回路は、ロックステップアクセスフィルタ213も有する。ロックステップアクセスフィルタ213は、入力として、マスタデバイス201の出力およびチェッカデバイス202の出力を受け取る。ロックステップアクセスフィルタ213は、マスタデバイス201およびチェッカデバイス202の両方への双方向接続を有する。ロックステップアクセスフィルタ213は、相互接続回路209への双方向接続も有する。ロックステップアクセスフィルタ213は、モニタリング相互接続回路211にも出力し、このモニタリング相互接続回路211とロックステップアクセスフィルタ213は双方向接続を有する。ロックステップアクセスフィルタ213は、出力ロックステップモニタ212の内部にあってよい。択一的には、ロックステップアクセスフィルタは、図2に示したように、出力ロックステップモニタ212の外部にあってよい。ロックステップアクセスフィルタ213は、別のシステム回路へのルーティングのために、相互接続回路209に送られる、マスタデバイスおよびチェッカデバイスの出力をフィルタリングする。ロックステップアクセスフィルタ213は、マスタプロセッサ203およびチェッカプロセッサ205のランタイム時にこれを行う。
【0046】
例えば、ロックステップアクセスフィルタ213は、マスタプロセッサ203およびチェッカプロセッサ205の両方のシステムメモリアクセス要求を受信することができる。ロックステップアクセスフィルタ213は、チェッカプロセッサによって要求されるシステムメモリアクセスが、システムメモリ207に伝わるのを阻止することができる。例えば、ロックステップアクセスフィルタ213は、マスタプロセッサ203およびチェッカプロセッサ205から、対応する読み出し要求を受信することができる。ロックステップアクセスフィルタ213は、相互接続回路209を介して、マスタプロセッサ203の読み出し要求をシステムメモリ207に転送する。ロックステップアクセスフィルタ213は、チェッカプロセッサ205の読み出し要求が、相互接続回路209を介して、システムメモリ207に伝わることを阻止する。次いで、ロックステップアクセスフィルタ213は、相互接続回路209を介して、マスタプロセッサ203の読み出し要求に対する、システムメモリ207からの読み出し応答を受信する。ロックステップアクセスフィルタ213は、マスタプロセッサ203およびチェッカプロセッサ205の両方に、システムメモリ207からの読み出し応答を転送する。複数の読み出し応答の場合、ロックステップアクセスフィルタ213は、マスタプロセッサ203およびチェッカプロセッサ205の両方に、同じ順序で読み出し応答を転送する。ロックステップアクセスフィルタ213は、チェッカプロセッサ205から受信される読み出し要求を計数するカウンタを有していてよい。カウンタが0より大きい場合にのみ、ロックステップアクセスフィルタ213は、チェッカプロセッサ205に次の読み出し応答を転送する。これによって保証されるのは、読み出し要求がチェッカプロセッサ205から送信される前に、読み出し応答がチェッカプロセッサ205に送信されないことである。
【0047】
別の例として、ロックステップアクセスフィルタ213は、マスタプロセッサ203およびチェッカプロセッサ205からの、対応する書き込み要求を受信することができる。ロックステップアクセスフィルタ213は、相互接続回路209を介して、マスタプロセッサ203の書き込み要求をシステムメモリ207に転送する。ロックステップアクセスフィルタ213は、チェッカプロセッサ205の書き込み要求を終了させる。したがって、ロックステップアクセスフィルタ213は、チェッカプロセッサ205の読み出し要求が、相互接続回路209を介して、システムメモリ207に伝わることを阻止する。次いで、要求されたデータがシステムメモリ207に書き込まれると、ロックステップアクセスフィルタ213は、相互接続回路209を介し、システムメモリ207から書き込み応答を受信する。ロックステップアクセスフィルタ213は、マスタプロセッサ203およびチェッカプロセッサ205の両方に、システムメモリ207からの書き込み応答を転送する。複数の書き込み応答の場合、ロックステップアクセスフィルタ213は、マスタプロセッサ203およびチェッカプロセッサ205の両方に、同じ順序で書き込み応答を転送する。ロックステップアクセスフィルタ213は、チェッカプロセッサ205から受信される書き込み要求を計数するカウンタを有していてよい。カウンタが0より大きい場合にのみ、ロックステップアクセスフィルタ213は、チェッカプロセッサ205に次の書き込み応答を転送する。これによって保証されるのは、書き込み要求がチェッカプロセッサ205から送信される前に、書き込み応答がチェッカプロセッサ205に送信されないことである。
【0048】
ロックステップアクセスフィルタ213は、上述のように、マスタプロセッサおよびチェッカプロセッサから受信される読み出し要求および書き込み要求の両方をフィルタリングすることができる。この場合、ロックステップアクセスフィルタ213は、チェッカプロセッサからの読み出し要求を計数する読み出しカウンタを有し、チェッカプロセッサからの書き込み要求を計数する書き込みカウンタを別に有する。
【0049】
図2のモニタリング回路はさらに、マスタトレーサ214を有する。マスタトレーサ214は、マスタプロセッサ203の出力を受け取る。マスタトレーサ214は、バッファにマスタプロセッサ203の出力を記録する。例えば、マスタトレーサ214は、循環バッファを有していてよく、この循環バッファにマスタプロセッサ203の出力を記録する。このバッファは、その記憶容量に達すると、より旧い受信データを循環式に上書きするように構成されている。トリガされると、マスタトレーサ214は、そのバッファの内容をコミュニケータ210に、マスタトレースデータとして、モニタリング相互接続回路211を介して出力する。トリガされると、マスタトレーサ214は、別のマスタトレースデータがマスタトレーサ214のバッファに収集されるときに、コミュニケータ210にこの別のマスタトレースデータを出力することもできる。
【0050】
図2のモニタリング回路はさらに、チェッカトレーサ215を有する。チェッカトレーサ215は、チェッカプロセッサ205の出力を受け取る。チェッカトレーサ215は、バッファにチェッカプロセッサ205の出力を記録する。例えば、チェッカトレーサ215は、循環バッファを有していてよく、この循環バッファにチェッカプロセッサ205の出力を記録する。このバッファは、その記憶容量に達すると、より旧い受信データを循環式に上書きするように構成されている。トリガされると、チェッカトレーサ215は、そのバッファの内容を、チェッカトレースデータとしてモニタリング相互接続回路211を介し、コミュニケータ210に出力する。トリガされると、チェッカトレーサ215は、別のチェッカトレースデータがチェッカトレーサ215のバッファに収集されるときに、コミュニケータ210にこの別のチェッカトレースデータを出力することもできる。
【0051】
図2のモニタリング回路はさらに、マスタ解析器216およびチェッカ解析器217から成る解析回路も有する。マスタ解析器216は、マスタプロセッサ203に接続されている。マスタ解析器216は、モニタリング相互接続回路211に出力する。チェッカ解析器217は、チェッカプロセッサ205に接続されている。チェッカ解析器217は、モニタリング相互接続回路211に出力する。これらの解析器216および解析器217のそれぞれは、それに接続されているプロセッサの内部信号の状態を観察する。次いで解析器は、これらの観察状態を解析器内のバッファに記録することができる。バッファは、例えば、循環バッファであってよい。この循環バッファは、その記憶容量に達すると、より旧い観察状態を循環式に上書きするように構成されている。観察される内部信号は、次のうちの1つまたは複数、すなわち、プロセッサによって実行されている命令、プロセッサに接続されているメモリのレジスタ、例えば制御ステータスレジスタの状態、プロセッサに接続されているメモリのレジスタにおける特定のエントリの値、プログラムカウンタ割り込み状態、プロセッサのストール信号であってよい。トリガされると、それぞれの解析器216、解析器217は、モニタリング相互接続回路211を介し、そのバッファの内容をコミュニケータ210に出力する。トリガされると、それぞれの解析器216、解析器217は、別の観察状態が解析器のバッファに記録されるときに、これらの別の観察状態をコミュニケータ210に出力することもできる。
【0052】
次に、図4を参照して、ロックステップで動作するプロセッサにより、大きく異なるメモリアクセスを検出して応答する方法を説明する。
【0053】
ステップ401では、出力ロックステップモニタ212により、マスタプロセッサ203およびチェッカプロセッサ205からの、対応する要求メモリアクセスを受信する。これらの要求メモリアクセスは、例えば、バッファ301およびバッファ302に格納可能である。ステップ402では、マスタプロセッサおよびチェッカプロセッサの両方から、少なくとも1つの要求メモリアクセスが受信されている場合、マスタプロセッサによるメモリアクセスについて、チェッカプロセッサによる対応するメモリアクセスが異なっているか否かを決定する。ステップ402は、例えば、比較器303において実装可能である。答えがNOの場合、この方法は、ステップ402に戻り、マスタによる次のメモリアクセスについて質問を繰り返す。ステップ402についての答えがYESの場合、この方法は、ステップ403およびステップ404に進む。ステップ403では、出力ロックステップモニタ212により、異なる対応するメモリアクセスを出力する。
【0054】
ステップ404では、トリガメッセージを生成してモニタリング相互接続回路211に送信する。例えば、メッセージコンストラクタ305により、トリガメッセージを生成して送信してよい。モニタリング相互接続回路211は、別のモニタリングコンポーネントにトリガメッセージをルーティングする。例えば、ステップ405では、モニタリング相互接続回路211により、マスタ解析器216およびチェッカ解析器217にトリガメッセージをルーティングしてよい。ステップ406では、マスタ解析器216により、モニタリング相互接続回路211を介し、そのバッファからコミュニケータ210に、マスタプロセッサの内部信号の記録された観察状態を出力することによってトリガの受信に応答する。マスタプロセッサからの内部信号の別の観察状態が、マスタ解析器216のバッファに収集されるときに、マスタ解析器216により、この別の観察状態を出力することによって、トリガの受信に応答してもよい。ステップ406では同様に、チェッカ解析器217により、そのバッファからコミュニケータ210に、モニタリング相互接続回路211を介し、チェッカプロセッサの内部信号の記録された観察状態を出力することによってトリガの受信に応答する。チェッカプロセッサからの内部信号の別の観察状態が、チェッカ解析器217のバッファに収集されるときに、チェッカ解析器217により、この別の観察状態を出力することによって、トリガの受信に応答してもよい。次いでコミュニケータ210により、後続の解析のために、オフチップの解析器またはオンチップの解析器に観察状態をルーティングすることができる。この後続の解析は、オフラインで実行可能である。換言すると、プロセッサ203およびプロセッサ205のランタイム時には実行されない。
【0055】
ステップ407では、モニタリング相互接続回路211により、マスタトレーサ214およびチェッカトレーサ215にトリガメッセージをルーティングすることもできる。ステップ408では、マスタトレーサ214により、そのバッファからコミュニケータ210に、マスタトレースデータとして、モニタリング相互接続回路211を介し、マスタプロセッサ203の記録された出力を出力することによってトリガの受信に応答する。別のマスタトレースデータがマスタトレーサ214のバッファに収集されるときに、マスタトレーサ214により、この別のマスタトレースデータを出力することによってトリガの受信に応答してもよい。ステップ408では同様に、チェッカトレーサ215により、そのバッファからコミュニケータ210に、チェッカトレースデータとして、モニタリング相互接続回路211を介し、チェッカプロセッサ205の記録された出力を出力することによってトリガの受信に応答する。別のチェッカトレースデータがチェッカトレーサ215のバッファに収集されるときに、チェッカトレーサ215により、この別のチェッカトレースデータを出力することによってトリガの受信に応答してもよい。次いでコミュニケータ210により、後続の解析のために、オフチップの解析器またはオンチップの解析器にトレースデータをルーティングすることができる。この後続の解析は、オフラインで実行可能である。換言すると、プロセッサ203およびプロセッサ205のランタイム時には実行されない。
【0056】
ステップ409では、モニタリング相互接続回路211により、ロックステップアクセスフィルタ213にトリガメッセージをルーティングすることもできる。ステップ410では、ロックステップアクセスフィルタ213により、モニタリング相互接続回路211を介し、コミュニケータ210に、マスタプロセッサおよびチェッカプロセッサの要求メモリアクセスを出力することによってトリガの受信に応答する。次いでコミュニケータ210により、後続の解析のために、オフチップの解析器またはオンチップの解析器に要求メモリアクセスをルーティングすることができる。この後続の解析は、オフラインで実行可能である。換言すると、プロセッサ203およびプロセッサ205のランタイム時には実行されない。
【0057】
モニタリングコンポーネントをトリガすることに加えて、モニタリング相互接続回路は、アラートをコミュニケータ210に送信することもでき、このアラートは次いで、コミュニケータ210により、オフチップの解析器またはオンチップの解析器にルーティングされる。モニタリング相互接続回路は、マスタプロセッサ203およびチェッカプロセッサ205に処理を停止させることができる。モニタリング相互接続回路は、マスタプロセッサ203およびチェッカプロセッサ205(またはシステム回路全体)をリセットすることができる。
【0058】
図5には、モニタリング回路およびシステム回路を有する別の例示的な集積回路チップデバイスが示されている。図5のデバイスは、別々のマスタ解析器216およびチェッカ解析器217を有しないという点が、図2のデバイスと異なる。その代わりに、図5のデバイスは、マスタプロセッサ203およびチェッカプロセッサ205の両方に接続された内部ロックステップモニタ501を有する。内部ロックステップモニタ501は、モニタリング相互接続回路211に出力する。内部ロックステップモニタ501は、マスタプロセッサ203およびチェッカプロセッサ205の両方の内部信号の状態を観察する。次いで内部ロックステップモニタ501は、これらの観察状態を解析器内のバッファに記録することができる。それぞれのバッファは、例えば、循環バッファであってよい。観察される内部信号は、以下のうちの1つまたは複数、すなわち、プロセッサによって実行されている命令、プロセッサに接続されているメモリのレジスタ、例えば制御ステータスレジスタの状態、プロセッサに接続されているメモリのレジスタにおける特定のエントリの値、プログラムカウンタ割り込み状態、プロセッサのストール信号であってよい。解析器は、モニタリング相互接続回路211に、記録された観察状態を出力することができる。図5のデバイスの別のコンポーネントは、図2のコンポーネントと同じであり、したがって、ここでは再度説明しない。
【0059】
図6には、内部ロックステップモニタ501の例示的な内部構造が示されている。マスタプロセッサ203の内部信号の状態は、内部マスタバッファ601に入力として供給される。チェッカプロセッサ205の内部信号の状態は、内部チェッカバッファ602に入力として供給される。それぞれのバッファ601およびバッファ602に少なくとも1つのアイテムが存在する場合、それぞれのバッファにおける先頭のアイテムが、比較器603に出力される。比較器603により、先頭の2つのアイテムが比較される。比較器の出力により、アイテムが等しいかまたは異なるかが識別される。比較器の出力は、メッセージコンストラクタ605への入力である。メッセージコンストラクタ605は、メッセージを生成する。好適には、メッセージコンストラクタ605は、バッファ601およびバッファ602の先頭のアイテムが異なることが比較器によって識別されると、メッセージを生成する。そのメッセージにより、マスタプロセッサ203およびチェッカプロセッサ205の対応する内部信号の状態が異なることを識別することができる。このメッセージには付加的に、マスタプロセッサ203およびチェッカプロセッサ205からの内部信号の異なる状態が含まれていてよい。メッセージコンストラクタ605は次いで、内部ロックステップモニタからモニタリング相互接続回路211にこのメッセージを出力する。さらに以下で説明するように、このメッセージに応じて種々の異なるアクションを取ることができる。
【0060】
好適には、内部ロックステップモニタ501は、プロセッサ203およびプロセッサ205のランタイム時に動作する。したがって、内部信号の異なる状態を有するマスタプロセッサ203とチェッカプロセッサ205との間には最小遅延が存在し、これらの異なる状態は、内部ロックステップモニタ501によって識別され、モニタリング相互接続回路211に伝達される。
【0061】
内部ロックステップモニタはさらに、タイマ604を有していてよい。タイマ604は、内部マスタバッファ601に蓄積されている、マスタプロセッサ203の内部信号の状態と、内部チェッカバッファ602に蓄積されている、チェッカプロセッサ205の対応する内部信号の状態との間の経過時間を計数する。タイマ604は、タイムアウト閾値を有する。対応する両方の出力がバッファ601およびバッファ602に入る前に、計数値が、このタイムアウト閾値の値に達すると、タイマは、このことをメッセージコンストラクタ605に出力する。メッセージコンストラクタ605は、アラートメッセージを生成し、メッセージコンストラクタ605は、内部ロックステップモニタ501からモニタリング相互接続回路212に、このアラートメッセージを出力する。
【0062】
図4の方法は、図5の集積回路チップデバイス上に実装可能である。ステップ405およびステップ406を除き、この方法のすべてのステップは、同じである。ステップ405の代わりに、トリガは、内部ロックステップモニタ501にルーティングされる。内部ロックステップモニタ501により、そのバッファからコミュニケータ210に、モニタリング相互接続回路211を介し、マスタプロセッサおよびチェッカプロセッサの対応する内部信号の記録された観察状態を出力することによって、トリガの受信に応答する。次いでコミュニケータ210により、後続の解析のために、オフチップの解析器またはオンチップの解析器に観察状態をルーティングすることができる。この後続の解析は、オフラインで実行可能である。換言すると、プロセッサ203およびプロセッサ205のランタイム時には実行されない。
【0063】
次に、図7を参照して、ロックステップで動作するプロセッサの内部信号の大きく異なる状態を検出して応答する方法を説明する。
【0064】
ステップ701では、内部ロックステップモニタ501により、マスタプロセッサ203およびチェッカプロセッサ205からの対応する内部信号の状態を観察する。内部信号のこれらの状態は、例えば、バッファ601およびバッファ602に格納可能である。ステップ702では、マスタプロセッサおよびチェッカプロセッサの両方から、内部信号の少なくとも1つの状態が受け取られている場合、マスタプロセッサの内部信号の状態について、チェッカプロセッサの対応する内部信号の状態が異なっているか否かを決定する。ステップ702は、例えば、比較器603において実装可能である。答えがNOの場合、この方法は、ステップ702に戻り、マスタプロセッサによる次の内部信号の状態について質問を繰り返す。ステップ702についての答えがYESの場合、この方法は、ステップ703およびステップ704に進む。ステップ703では、内部ロックステップモニタ501により、異なっていた対応する内部信号状態を出力する。
【0065】
ステップ704では、トリガメッセージを生成してモニタリング相互接続回路211に送信する。例えば、メッセージコンストラクタ605により、トリガメッセージを生成して送信してよい。モニタリング相互接続回路211は、別のモニタリングコンポーネントにトリガメッセージをルーティングする。例えば、ステップ705では、モニタリング相互接続回路211により、マスタトレーサ214およびチェッカトレーサ215にトリガメッセージをルーティングしてよい。ステップ706では、マスタトレーサ214により、そのバッファからコミュニケータ210に、マスタトレースデータとして、モニタリング相互接続回路211を介し、マスタプロセッサ203の記録された出力を出力することによってトリガの受信に応答する。別のマスタトレースデータがマスタトレーサ214のバッファに収集されるときに、マスタトレーサ214により、この別のマスタトレースデータを出力することによってトリガの受信に応答してもよい。ステップ706では同様に、チェッカトレーサ215により、そのバッファからコミュニケータ210に、チェッカトレースデータとして、モニタリング相互接続回路211を介し、チェッカプロセッサ205の記録された出力を出力することによってトリガの受信に応答する。別のチェッカトレースデータがチェッカトレーサ215のバッファに収集されるときに、チェッカトレーサ215により、この別のマスタトレースデータを出力することによってトリガの受信に応答してもよい。次いでコミュニケータ210により、後続の解析のために、オフチップの解析器またはオンチップの解析器にトレースデータをルーティングすることができる。この後続の解析は、オフラインで実行可能である。換言すると、プロセッサ203およびプロセッサ205のランタイム時には実行されない。
【0066】
ステップ707では、モニタリング相互接続回路211により、出力ロックステップモニタ212にトリガメッセージをルーティングすることもできる。ステップ708では、出力ロックステップモニタ212により、モニタリング相互接続回路211を介し、コミュニケータ210に、マスタプロセッサおよびチェッカプロセッサの要求メモリアクセスを出力することによってトリガの受信に応答する。次いでコミュニケータ210により、後続の解析のために、オフチップの解析器またはオンチップの解析器に要求メモリアクセスをルーティングすることができる。この後続の解析は、オフラインで実行可能である。換言すると、プロセッサ203およびプロセッサ205のランタイム時には実行されない。
【0067】
ステップ709では、モニタリング相互接続回路211により、ロックステップアクセスフィルタ213にトリガメッセージをルーティングすることもできる。ステップ710では、ロックステップアクセスフィルタ213により、モニタリング相互接続回路211を介し、コミュニケータ210に、マスタプロセッサおよびチェッカプロセッサの要求メモリアクセスを出力することによってトリガの受信に応答する。次いでコミュニケータ210により、後続の解析のために、オフチップの解析器またはオンチップの解析器に要求メモリアクセスをルーティングすることができる。この後続の解析は、オフラインで実行可能である。換言すると、プロセッサ203およびプロセッサ205のランタイム時には実行されない。
【0068】
モニタリングコンポーネントをトリガすることに加えて、モニタリング相互接続回路は、アラートをコミュニケータ210に送信することもでき、このアラートは次いで、コミュニケータ210により、オフチップの解析器またはオンチップの解析器にルーティングされる。モニタリング相互接続回路は、マスタプロセッサ203およびチェッカプロセッサ205に処理を停止させることができる。モニタリング相互接続回路は、マスタプロセッサ203およびチェッカプロセッサ205(またはシステム回路全体)をリセットすることができる。
【0069】
図2のマスタ解析器216およびチェッカ解析器217は、それが観察する内部信号の状態をランタイムに変化させるように構成可能である。例えば、オンチップの解析器またはオフチップの解析器は、モニタリング相互接続回路211を介し、マスタ解析器およびチェッカ解析器に設定コマンドを送信して、マスタプロセッサ203およびチェッカプロセッサ205の特定の内部信号を観察するようにマスタ解析器およびチェッカ解析器に命令することができる。同様に、図5の内部ロックステップモニタ501は、それが観察する内部信号の状態をランタイムに変化させるように構成可能である。例えば、オンチップの解析器またはオフチップの解析器は、モニタリング相互接続回路211を介し、内部ロックステップモニタ501に設定コマンドを送信して、マスタプロセッサ203およびチェッカプロセッサ205の特定の内部信号を観察するように内部ロックステップモニタ501に命令することができる。トリガを検出すると、オンチップの解析器またはオフチップの解析器は、内部ロックステップモニタ501に設定コマンドを送信して、それが観察しているマスタプロセッサ203およびチェッカプロセッサ205の特定の内部信号を変更するように内部ロックステップモニタ501に命令することができる。
【0070】
上述のように、(図2または図5の)集積回路チップデバイスは、2つ以上のチェッカデバイス202を有していてよい。それぞれの別のチェッカデバイスは、別のチェッカプロセッサおよび別のチェッカメモリを有する。それぞれの別のチェッカプロセッサは、マスタプロセッサおよびチェッカプロセッサとロックステップで動作する。出力ロックステップモニタ212は、それぞれの付加的な別のチェッカプロセッサについて、付加的な出力チェッカバッファを有していてよい。比較器303は、マスタプロセッサ、チェッカプロセッサおよびそれぞれの別のチェッカプロセッサのすべての対応する出力を比較するように構成可能である。対応する出力のいずれかが異なる場合、メッセージコンストラクタ305により、モニタリング相互接続回路に送信するためのトリガが生成される。モニタリング相互接続回路211は、上述のようにこのトリガに応答する。ロックステップアクセスフィルタ213は、それぞれの別のチェッカプロセッサについて、チェッカプロセッサについて行うのと同じアクションを実行する。
【0071】
図2の集積回路チップデバイスの場合、別のチェッカ解析器および別のチェッカトレーサが、それぞれの別のチェッカデバイスついて設けられる。それぞれの別のチェッカ解析器および別のチェッカトレーサはそれぞれ、上述のようなチェッカ解析器およびチェッカトレーサとして動作する。それぞれの別のチェッカ解析器および別のチェッカトレーサは、図4のステップ405およびステップ407で、モニタリング相互接続回路からのトリガメッセージを受信し、チェッカ解析器およびチェッカトレーサと同じ仕方で応答する。
【0072】
図5の集積回路チップデバイスの場合、内部ロックステップモニタ501は、それぞれの付加的な別のチェッカプロセッサについて、付加的な内部チェッカバッファを有していてよい。比較器603は、マスタプロセッサ、チェッカプロセッサおよびそれぞれの別のチェッカプロセッサのすべての対応する内部信号の状態を比較するように構成可能である。対応する内部信号の状態のいずれかが異なる場合、メッセージコンストラクタ605により、モニタリング相互接続回路に送信するためのトリガが生成される。モニタリング相互接続回路211は、上述のようにこのトリガに応答する。
【0073】
すべてのチェッカプロセッサおよび別のチェッカプロセッサは、マスタプロセッサと同時に動作可能である。択一的には、チェッカプロセッサおよび別のチェッカプロセッサは、投票方式または別の冗長方式を使用することができる。投票システムでは、メッセージコンストラクタがモニタリング相互接続回路に送信するためのトリガを生成するためには、mを上回るチェッカデバイスが、マスタデバイスへの異なる対応する出力を有することが要求され得る。ただしm>1である。例えば、mは2であってよい。チェッカプロセッサおよび別のチェッカプロセッサは、択一的に、分割/ロックモードで動作してもよく、この分割/ロックモードでは、それぞれのチェッカプロセッサのロックステップ機能が、動的にマスタプロセッサに結合されまたマスタプロセッサから切り離されてよい。これにより、プロセッサは、実行する能力がある場合には冗長モードで動作することができるが、また必要な場合にはSoCのより高いパフォーマンスのために、異なるコードをそれぞれ実行することもできる。
【0074】
本明細書で説明される装置および方法によって、マスタプロセッサが高い信頼性で、安全に、かつ確実に動作していることをチェックすることにより、SoCの機能安全性が支援される。
【0075】
図1図2図3図5および図6に示されているSoCのそれぞれのコンポーネントは、専用のハードウェアで実装可能である。このようにすることで、本明細書に記載された方法は、ワイヤースピードで実装可能であり、その結果、SoCに実行オーバヘッドが負わされることがない。択一的には、図1図2図3図5および図6に示されているSoCのそれぞれのコンポーネントは、ソフトウェアで実装可能である。いくつかのコンポーネントはソフトウェアに実装されてよいのに対し、別のコンポーネントは専用のハードウェアに実装される。
【0076】
説明したSoCは好適には、コンピューティングベースのデバイス内に組み込まれる。コンピューティングベースデバイスは、電子デバイスであってよい。好適には、コンピューティングベースデバイスは、本明細書に記載された方法を実装することを目的として、デバイスの動作を制御するためにコンピュータ実行可能命令を処理する1つ以上のプロセッサを有する。コンピュータ実行可能命令は、メモリのような任意のコンピュータ可読媒体を使用して供給可能である。本明細書に記載された方法は、有形の記憶媒体上の機械可読形式のソフトウェアによって実行可能である。コンピューティングベースデバイスには、本明細書に記載された方法を実装するためにソフトウェアを供給することができる。
【0077】
上述の説明に記載されているのは、システム回路およびモニタリング回路が、同じSoC上に含まれていることである。択一的な実装形態では、システム回路およびモニタリング回路は、1つのMCMの2つ以上の集積回路チップにまたがって含まれている。MCMでは、集積回路チップは一般に、インターポーザ基板上で積層されるか、または隣接して配置される。MCMの1つの集積回路チップ上にいくつかのシステム回路を配置し、MCMの別の集積回路チップ上に別のシステム回路を配置することができる。同様に、モニタリング回路は、MCMの2つ以上の集積回路チップをまたいで分散可能である。したがって、SoCの関連において上述した方法および装置は、MCMの関連においても適用される。
【0078】
上記によって本出願人により、本明細書に記載されたそれぞれ個別の特徴が単独で、また2つ以上のこのような特徴のあらゆる組み合わせが開示されており、しかも、このような特徴または特徴の組み合わせが、本明細書に開示された何らかの課題を解決するか否かにかかわらず、また特許請求の範囲に限定されることなく、当業者の共通の一般的な知識に照らし、全体として、そのような特徴または組み合わせが、本明細書に基づいて実行できる範囲において開示されている。出願人によって示されているのは、本発明の態様が、任意のこのような個別の特徴または特徴の組み合わせから構成され得ることである。上記の説明を考慮すれば、本発明の範囲内でさまざまな変更を行い得ることは、当業者には明らかであろう。
図1
図2
図3
図4
図5
図6
図7