(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-23
(45)【発行日】2024-09-02
(54)【発明の名称】独立冗長タイマを使用したシステムオンチップタイマの故障検出および回復
(51)【国際特許分類】
G06F 1/14 20060101AFI20240826BHJP
G06F 11/18 20060101ALI20240826BHJP
G06F 15/78 20060101ALI20240826BHJP
【FI】
G06F1/14 512
G06F11/18 610
G06F15/78 517
(21)【出願番号】P 2023555368
(86)(22)【出願日】2022-01-25
(86)【国際出願番号】 US2022013609
(87)【国際公開番号】W WO2022197364
(87)【国際公開日】2022-09-22
【審査請求日】2023-09-08
(32)【優先日】2021-03-17
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】カウシャル・マヘーシュクマール・プロヒト
【審査官】田中 幸雄
(56)【参考文献】
【文献】国際公開第2017/078093(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 1/14
G06F 11/18
G06F 15/78
(57)【特許請求の範囲】
【請求項1】
タイマ故障の検出および回復の方法であって、
少なくとも第1のタイマ、第2のタイマ、および第3のタイマを有し、各々が独立したタイムベースを有する、複数のタイマを並列に実行するステップと、
前記複数のタイマのうちの前記第1のタイマが故障しているかどうかを判定するステップと、
前記第1のタイマが故障したと判定したことに応答して、前記第1のタイマを使用から除外するステップと、
前記第1のタイマが、前記複数のタイマのうちの前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有するかどうかを判定するステップと、
前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第1のタイマを、時間調整して使用するように戻すステップと
を含む、方法。
【請求項2】
前記第1のタイマが第1の動作タイマであり、前記第3のタイマがモニタタイマであり、前記方法が、前記モニタタイマを第2の動作タイマに変換するステップをさらに含む、請求項1に記載の方法。
【請求項3】
前記第1のタイマが動作タイマであり、前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第1のタイマを使用するように戻すステップが、前記動作タイマをモニタタイマとして使用するように戻すステップを含む、請求項1に記載の方法。
【請求項4】
前記第1のタイマがモニタタイマであり、前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第1のタイマを使用するように戻すステップが、前記モニタタイマを前記モニタタイマとして使用するように戻すステップを含む、請求項1に記載の方法。
【請求項5】
前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第2のタイマと独立したタイムベースの前記一貫した差を使用して、前記第1のタイマの前記独立したタイムベースを前記時間調整として
使用するステップをさらに含む、請求項1に記載の方法。
【請求項6】
前記第1のタイマが、前記複数のタイマのうちの前記第3のタイマと独立したタイムベースの一貫した差を
所定の期間有するかどうかを判定するステップと、
前記第1のタイマが前記第3のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第1のタイマを、時間調整して使用するように戻すステップと
をさらに含む、請求項1に記載の方法。
【請求項7】
コンピューティングデバイスであって、
少なくとも第1のタイマ、第2のタイマ、および第3のタイマを有し、各々が独立したタイムベースを有する、並列に実行するように構成される複数のタイマと、
前記複数のタイマに通信可能に接続され、
前記複数のタイマのうちの前記第1のタイマが故障しているかどうかを判定することと、
前記第1のタイマが故障したと判定したことに応答して、前記第1のタイマを使用から除外することと、
前記第1のタイマが、前記複数のタイマのうちの前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有するかどうかを判定することと、
前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第1のタイマを、時間調整して使用するように戻すことと
を行うように構成されるタイマ制御デバイスと
を備える、コンピューティングデバイス。
【請求項8】
前記第1のタイマが第1の動作タイマであり、前記第3のタイマがモニタタイマであり、前記タイマ制御デバイスが、前記モニタタイマを第2の動作タイマに変換するようにさらに構成される、請求項
7に記載のコンピューティングデバイス。
【請求項9】
前記第1のタイマが動作タイマであり、前記タイマ制御デバイスが、前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記動作タイマをモニタタイマとして使用するように戻すことによって、前記第1のタイマを使用するように戻すようにさらに構成される、請求項
7に記載のコンピューティングデバイス。
【請求項10】
前記第1のタイマがモニタタイマであり、前記タイマ制御デバイスが、前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記モニタタイマを前記モニタタイマとして使用するように戻すことによって、前記第1のタイマを使用するように戻すようにさらに構成される、請求項
7に記載のコンピューティングデバイス。
【請求項11】
前記タイマ制御デバイスが、前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第2のタイマと独立したタイムベースの前記一貫した差を使用して、前記第1のタイマの前記独立したタイムベースを前記時間調整として
使用するようにさらに構成される、請求項
7に記載のコンピューティングデバイス。
【請求項12】
前記タイマ制御デバイスが、
前記第1のタイマが、前記複数のタイマのうちの前記第3のタイマと独立したタイムベースの一貫した差を
所定の期間有するかどうかを判定することと、
前記第1のタイマが前記第3のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第1のタイマを、時間調整して使用するように戻すことと
を行うようにさらに構成される、請求項
7に記載のコンピューティングデバイス。
【請求項13】
コンピューティングデバイスであって、
少なくとも第1のタイマ、第2のタイマ、および第3のタイマを有し、各々が独立したタイムベースを有する、複数のタイマを並列に実行するための手段と、
前記複数のタイマのうちの前記第1のタイマが故障しているかどうかを判定するための手段と、
前記第1のタイマが故障したと判定したことに応答して、前記第1のタイマを使用から除外するための手段と、
前記第1のタイマが、前記複数のタイマのうちの前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有するかどうかを判定するための手段と、
前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第1のタイマを、時間調整して使用するように戻すための手段と
を備える、コンピューティングデバイス。
【請求項14】
前記第1のタイマが第1の動作タイマであり、前記第3のタイマがモニタタイマであり、前記コンピューティングデバイスが、前記モニタタイマを第2の動作タイマに変換するための手段をさらに備える、請求項
13に記載のコンピューティングデバイス。
【請求項15】
前記第1のタイマが動作タイマであり、前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第1のタイマを使用するように戻すための手段が、前記動作タイマをモニタタイマとして使用するように戻すための手段を備える、請求項
13に記載のコンピューティングデバイス。
【請求項16】
前記第1のタイマがモニタタイマであり、前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第1のタイマを使用するように戻すための手段が、前記モニタタイマを前記モニタタイマとして使用するように戻すための手段を備える、請求項
13に記載のコンピューティングデバイス。
【請求項17】
前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第2のタイマと独立したタイムベースの前記一貫した差を使用して、前記第1のタイマの前記独立したタイムベースを前記時間調整として
使用するための手段をさらに備える、請求項
13に記載のコンピューティングデバイス。
【請求項18】
前記第1のタイマが、前記複数のタイマのうちの前記第3のタイマと独立したタイムベースの一貫した差を
所定の期間有するかどうかを判定するための手段と、
前記第1のタイマが前記第3のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第1のタイマを、時間調整して使用するように戻すための手段と
をさらに備える、請求項
13に記載のコンピューティングデバイス。
【請求項19】
処理デバイスに動作を実行させるように構成されるプロセッサ実行可能命令が記憶される、非一時的プロセッサ可読記憶媒体であって、前記動作が、
少なくとも第1のタイマ、第2のタイマ、および第3のタイマを有し、各々が独立したタイムベースを有する、複数のタイマを並列に実行することと、
前記複数のタイマのうちの前記第1のタイマが故障しているかどうかを判定することと、
前記第1のタイマが故障したと判定したことに応答して、前記第1のタイマを使用から除外することと、
前記第1のタイマが、前記複数のタイマのうちの前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有するかどうかを判定することと、
前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第1のタイマを、時間調整して使用するように戻すことと
を含む、非一時的プロセッサ可読記憶媒体。
【請求項20】
前記第1のタイマが第1の動作タイマであり、前記第3のタイマがモニタタイマであり、前記記憶されたプロセッサ実行可能命令が、前記モニタタイマを第2の動作タイマに変換することをさらに含む動作を、前記処理デバイスに実行させるように構成される、請求項
19に記載の非一時的プロセッサ可読記憶媒体。
【請求項21】
前記第1のタイマが動作タイマであり、前記記憶されたプロセッサ実行可能命令が、前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第1のタイマを使用するように戻すことが、前記動作タイマをモニタタイマとして使用するように戻すことを含むような動作を、前記処理デバイスに実行させるように構成される、請求項
19に記載の非一時的プロセッサ可読記憶媒体。
【請求項22】
前記第1のタイマがモニタタイマであり、前記記憶されたプロセッサ実行可能命令が、前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第1のタイマを使用するように戻すことが、前記モニタタイマを前記モニタタイマとして使用するように戻すことを含むような動作を、前記処理デバイスに実行させるように構成される、請求項
19に記載の非一時的プロセッサ可読記憶媒体。
【請求項23】
前記記憶されたプロセッサ実行可能命令が、前記第1のタイマが前記第2のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第2のタイマと独立したタイムベースの前記一貫した差を使用して、前記第1のタイマの前記独立したタイムベースを前記時間調整として調整することをさらに含む動作を、前記処理デバイスに実行させるように構成される、請求項
19に記載の非一時的プロセッサ可読記憶媒体。
【請求項24】
前記記憶されたプロセッサ実行可能命令が、
前記第1のタイマが、前記複数のタイマのうちの前記第3のタイマと独立したタイムベースの一貫した差を
所定の期間有するかどうかを判定することと、
前記第1のタイマが前記第3のタイマと独立したタイムベースの一貫した差を
所定の期間有すると判定したことに応答して、前記第1のタイマを、時間調整して使用するように戻すことと
をさらに含む動作を、前記処理デバイスに実行させるように構成される、請求項
19に記載の非一時的プロセッサ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本出願は、その内容全体が参照により本明細書に組み込まれる、2021年3月17日に出願された米国非仮出願第17/204,191号の優先権の利益を主張する。
【背景技術】
【0002】
時計およびタイマは、タイムクリティカルな機能を提供する電子デバイスおよびシステムにおいて重要な役割を果たす。タイムクリティカルな機能を提供する電子システムの一例は、安全性および自律運転機能を提供する自動車システムである。タイマの故障は、セーフティクリティカルなシステムなどシステム機能全体に危険な影響を及ぼす可能性がある。そのようなセーフティクリティカルなシステムは、非常に高い信頼性を有していなければならない。したがって、セーフティクリティカルなシステムは、適切なアクションをとることができるように、タイマの故障を高精度で検出する能力を必要とする。従来、故障は、全体的な安全管理エンティティへの故障の報告、システムの安全状態への移行、および/または回復機構の起動をもたらす。タイマ故障が発生したシステムは、安全な状態への頻繁な移行および回復をトリガする可能性があり、回復が影響を受けるシステムのリセットおよび再起動である場合、高価になる可能性がある。そのようなシステム機能の低下は、多くのタイムクリティカルなシステムでは実現不可能である。
【発明の概要】
【課題を解決するための手段】
【0003】
開示される様々な態様は、タイマの故障検出および回復の装置および方法を含み得る。様々な態様は、少なくとも第1のタイマ、第2のタイマ、および第3のタイマを有し、各々が独立したタイムベースを有する、複数のタイマを並列に実行することと、複数のタイマのうちの第1のタイマが故障しているかどうかを判定することと、第1のタイマが故障したと判定したことに応答して、第1のタイマを使用から除外することと、第1のタイマが、複数のタイマのうちの第2のタイマと独立したタイムベースの一貫した差を有するかどうかを判定することと、第1のタイマが第2のタイマと独立したタイムベースの一貫した差を有すると判定したことに応答して、第1のタイマを、時間調整して使用するように戻すこととを含み得る。
【0004】
いくつかの態様では、第1のタイマは第1の動作タイマであり、第3のタイマはモニタタイマである。いくつかの態様は、モニタタイマを第2の動作タイマに変換することを含み得る。
【0005】
いくつかの態様では、モニタタイマを第2の動作タイマに変換することが、タイムクリティカルなシステムのフォールトトレラント間隔内で行われ得る。
【0006】
いくつかの態様では、第1のタイマが動作タイマであってもよく、第1のタイマが第2のタイマと独立したタイムベースの一貫した差を有すると判定したことに応答して、第1のタイマを使用するように戻すことが、動作タイマをモニタタイマとして使用するように戻すことを含み得る。
【0007】
いくつかの態様では、第1のタイマがモニタタイマであってもよく、第1のタイマが第2のタイマと独立したタイムベースの一貫した差を有すると判定したことに応答して、第1のタイマを使用するように戻すことが、モニタタイマをモニタタイマとして使用するように戻すことを含み得る。
【0008】
いくつかの態様は、第1のタイマが第2のタイマと独立したタイムベースの一貫した差を有すると判定したことに応答して、第2のタイマと独立したタイムベースの一貫した差を使用して、第1のタイマの独立したタイムベースを時間調整として調整することを含み得る。
【0009】
いくつかの態様は、第1のタイマが、複数のタイマのうちの第3のタイマと独立したタイムベースの一貫した差を有するかどうかを判定することと、第1のタイマが第3のタイマと独立したタイムベースの一貫した差を有すると判定したことに応答して、第1のタイマを、時間調整して使用するように戻すこととを含み得る。
【0010】
さらなる態様は、複数のタイマを有するコンピューティングデバイスと、上記で要約した方法のうちのいずれかの動作を実行するように構成されるタイマ制御デバイスとを含む。さらなる態様は、上記で要約した方法のうちのいずれかの機能を実行するための手段を有するコンピューティングデバイスを含む。さらなる態様は、上記で要約した方法のうちのいずれかの動作を集積回路に実行させるように構成されるプロセッサ実行可能命令を記憶した非一時的プロセッサ可読媒体を含む。
【0011】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、様々な実施形態のうちの例示的な実施形態を示し、上記の一般的な説明および下記の発明を実施するための形態とともに、特許請求の範囲の特徴を説明するのに役立つ。
【図面の簡単な説明】
【0012】
【
図1】様々な実施形態を実装するのに適した例示的なコンピューティングデバイスを示すコンポーネントブロック図である。
【
図2】様々な実施形態を実装するのに適した例示的なタイマモジュールを示すコンポーネントブロック図である。
【
図3A】様々な実施形態を実装するのに適した独立冗長タイマを使用するシステムオンチップ(SoC)タイマの故障検出および回復の一例を示すブロック図である。
【
図3B】様々な実施形態を実装するのに適した独立冗長タイマを使用するシステムオンチップ(SoC)タイマの故障検出および回復の一例を示すブロック図である。
【
図3C】様々な実施形態を実装するのに適した独立冗長タイマを使用するシステムオンチップ(SoC)タイマの故障検出および回復の一例を示すブロック図である。
【
図3D】様々な実施形態を実装するのに適した独立冗長タイマを使用するシステムオンチップ(SoC)タイマの故障検出および回復の一例を示すブロック図である。
【
図4A】様々な実施形態を実装するのに適した独立冗長タイマを使用するSoCタイマの故障検出および回復の一例を示すブロック図である。
【
図4B】様々な実施形態を実装するのに適した独立冗長タイマを使用するSoCタイマの故障検出および回復の一例を示すブロック図である。
【
図4C】様々な実施形態を実装するのに適した独立冗長タイマを使用するSoCタイマの故障検出および回復の一例を示すブロック図である。
【
図4D】様々な実施形態を実装するのに適した独立冗長タイマを使用するSoCタイマの故障検出および回復の一例を示すブロック図である。
【
図5】一実施形態による、独立冗長タイマを使用するSoCタイマの故障検出および回復の方法を示すプロセスフロー図である。
【
図6】一実施形態による、独立冗長タイマを使用するSoCタイマの故障検出および回復の方法を示すプロセスフロー図である。
【
図7】一実施形態による、独立冗長タイマを使用するSoCタイマの故障検出および回復の方法を示すプロセスフロー図である。
【
図8】様々な実施形態を実装するのに適した例示的なモバイルコンピューティングデバイスを示すコンポーネントブロック図である。
【
図9】様々な実施形態を実装するのに適した例示的なモバイルコンピューティングデバイスを示すコンポーネントブロック図である。
【
図10】様々な実施形態を実装するのに適した例示的なサーバを示すコンポーネントブロック図である。
【発明を実施するための形態】
【0013】
添付の図面を参照しながら、様々な実施形態について詳細に説明する。可能な場合はいつでも、同じまたは同様の部分を指すために、図面全体にわたって同じ参照番号が使用される。特定の例および実装形態に対してなされる言及は、例示を目的としており、特許請求の範囲を限定するものではない。
【0014】
様々な実施形態は、独立冗長タイマを使用するシステムオンチップ(SoC)タイマの故障検出および回復の方法、ならびにそのような方法を実装するコンピューティングデバイスを含む。様々な実施形態は、第1の動作タイマを監視するために複数のモニタタイマを使用することを含み得る。様々な実施形態は、故障した第1の動作タイマを、機能する第2の動作タイマとして第1のモニタタイマと置き換え、第2の動作タイマを監視するために第2のモニタタイマを使用することを含み得る。様々な実施形態は、故障した第1の動作タイマと第2の動作タイマとの間の時間差、および/または故障した第1の動作タイマと第2のモニタタイマとの間の時間差が一貫しているかどうかを判定することを含み得る。様々な実施形態は、故障した第1の動作タイマと第2の動作タイマとの間、および/または故障した第1の動作タイマと第2のモニタタイマとの間の時間差が一貫していると判定したことに応答して、故障した第1の動作タイマを、時間調整して第2の動作タイマのモニタタイマとして使用することを含み得る。
【0015】
様々な実施形態は、モニタタイマを監視するために、複数のタイマと、モニタタイマと、動作タイマとを使用することを含み得る。様々な実施形態は、故障した第1のモニタタイマと第1の動作タイマとの間、および/または故障した第1のモニタタイマと第2のモニタタイマとの間の時間差が一貫しているかどうかを判定することと、故障した第1のモニタタイマと第1の動作タイマとの間、および/または故障した第1のモニタタイマと第2のモニタタイマとの間の時間差が一貫していると判定したことに応答して、故障した第1のモニタタイマを、時間調整して第1のモニタタイマとして使用することとを含み得る。
【0016】
「コンピューティングデバイス」および「モバイルコンピューティングデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルマルチメディアプレーヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、コンバーチブルラップトップ/タブレット(2-in-1コンピュータ)、スマートブック、ウルトラブック、ネットブロック、パームトップコンピュータ、ワイヤレス電子メール受信機、マルチメディアインターネット対応セルラー電話、モバイルゲームコンソール、ワイヤレスゲームコントローラ、ならびに、メモリおよびプログラマブルプロセッサを含む同様のパーソナル電子デバイスのうちのいずれか1つまたはすべてを指すために本明細書において互換的に使用される。「コンピューティングデバイス」という用語はさらに、パーソナルコンピュータを含む据置型コンピューティングデバイス、デスクトップコンピュータ、オールインワンコンピュータ、ワークステーション、スーパーコンピュータ、メインフレームコンピュータ、組込み型コンピュータ(自動車および他の大型システムなど)、サーバ、マルチメディアコンピュータ、およびゲームコンソールを指す場合がある。
【0017】
機能を制御するためにタイマを利用するタイムクリティカルなシステム(たとえば、自動車、航空電子、船舶などの車両システム、医療システム、ヘルスケアシステム、製造システム、金融システムなど)では、タイマの故障が、システム機能全体に危険な影響を及ぼす可能性がある。そのようなタイムクリティカルなシステムは、非常に高い信頼性を有していなければならない。したがって、タイムクリティカルなシステムは、適切なアクションをとることができるように、タイマの故障を高精度で検出する能力を必要とする。従来、故障は、全体的な安全管理エンティティへの故障の報告、システムの安全状態への移行、および/または回復機構の起動をもたらす。タイマ故障が発生したシステムは、安全な状態への頻繁な移行および回復をトリガする可能性があり、回復が影響を受けるシステムのリセットおよび再起動である場合、高価になる可能性がある。そのようなシステム機能の低下は、多くのタイムクリティカルなシステムでは実現不可能である。
【0018】
様々な実施形態は、並列に動作する複数の独立したタイマを実装することによって、中間レベルの安価な回復を提供する前述の問題を解決する。タイムクリティカルなシステムは、少なくとも1つの動作タイマ(たとえば、第1の動作タイマ)と少なくとも2つのモニタタイマ(たとえば、第1のモニタタイマおよび第2のモニタタイマ)とを含む、並列に動作する複数の独立したタイマを含み得る。タイマの各々は、ハードウェアレベル、ソフトウェアレベル、ならびに物理レイアウトおよび論理レベルで他のタイマからの干渉を受けないようにすることができる。動作タイマは、異なるタイムスライスで周期的な機能を実行してもよい。いくつかの実施形態では、モニタタイマは、動作タイマの故障を検出することができる。いくつかの実施形態では、動作タイマおよび第2のモニタタイマは、第1のモニタタイマの故障を検出し得る。各タイマは、異なる独立したタイムベース(ITB)で動作することができる。異なるタイマのタイムスタンプを使用して、タイマの独立したタイムベースを比較して、タイマの故障をチェックすることができる。
【0019】
第1の動作タイマが故障すると、第1のモニタタイマは、第2の動作タイマに移行され得る。第2のモニタタイマは、故障について第2の動作タイマを監視するために使用され得る。タイムクリティカルなシステムは、安全な状態に移行し、高価な回復プロセスを実施する必要なしに動作し続けることができ、タイムクリティカルなシステムのシステム機能の低下を回避することができる。いくつかの実施形態では、故障した第1の動作タイマは、第1の動作タイマと第1のモニタタイマとの間の一貫した差に合致する時間調整を実施することによって、第3のモニタタイマに移行され得、これは、1つのタイマ故障が検出された後、複数のタイマベースの動作タイマの故障検出および回復を維持することを可能にする。
【0020】
第1のモニタタイマが故障した実施形態では、第2のモニタタイマは、故障について第1の動作タイマを監視するために、引き続き使用され得る。タイムクリティカルなシステムは、安全な状態に移行し、高価な回復プロセスを実施する必要なしに動作し続けることができ、タイムクリティカルなシステムのシステム機能の低下を回避することができる。いくつかの実施形態では、故障した第1のモニタタイマは、複数のタイマベースの動作タイマならびにモニタタイマの故障検出および回復を維持しながら、時間調整して第1のモニタタイマとして引き続き使用され得る。
【0021】
他のタイマを監視するように構成される複数のタイマを実装することによって、タイマの故障検出率を向上させ、診断の向上のために冗長性を提供することができる。故障した動作タイマをモニタタイマに置き換えることは、安全な状態への移行、ならびにリセットおよび/またはリブートなどの高価な回復プロセスの実施を回避することによって、故障した動作タイマからの安価な回復を可能にする。故障した動作タイマからの回復が早いと、タイムクリティカルなシステムのシステム機能の低下を回避することができる。
【0022】
図1は、様々な実施形態とともに使用するのに適したコンピューティングデバイス100を含むシステムを示す。コンピューティングデバイス100は、プロセッサ104と、メモリ106と、通信インターフェース108と、メモリインターフェース110と、周辺デバイスインターフェース120と、タイマ124とを備えたSoC102を含み得る。コンピューティングデバイス100は、有線またはワイヤレスモデムなどの通信コンポーネント112、メモリ114、ワイヤレス通信リンクを確立するためのアンテナ116、および/または周辺デバイス122をさらに含み得る。プロセッサ104は、様々な処理デバイスのいずれか、たとえば、いくつかのプロセッサコアを含んでよい。
【0023】
「システムオンチップ」または"SoC"という用語は、通常、限定はしないが、処理デバイス、メモリ、および通信インターフェースを含む相互接続された電子回路のセットを指すために本明細書において使用される。処理デバイスは、汎用プロセッサ、中央処理ユニット(CPU)、デジタル信号プロセッサ(DSP)、グラフィックス処理ユニット(GPU)、加速処理ユニット(APU)、セキュア処理ユニット(SPU)、知的財産ユニット(IPU)、カメラサブシステム用の画像プロセッサまたはディスプレイ用のディスプレイプロセッサなどのコンピューティングデバイスの特定のコンポーネントのサブシステムプロセッサ、補助プロセッサ、周辺デバイスプロセッサ、シングルコアプロセッサ、マルチコアプロセッサ、コントローラ、および/またはマイクロコントローラなどの、様々な異なるタイプのプロセッサ104および/またはプロセッサコアを含み得る。処理デバイスはさらに、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、他のプログラマブル論理デバイス、個別ゲート論理、トランジスタ論理、性能監視ハードウェア、ウォッチドッグハードウェア、および/または時間基準などの、他のハードウェアおよびハードウェアの組合せを具現化し得る。集積回路は、集積回路のコンポーネントがシリコンなどの単体の半導体材料上に存在するように構成され得る。
【0024】
SoC102は、1つまたは複数のプロセッサ104を含むことができる。コンピューティングデバイス100は、2つ以上のSoC102を含み、それによって、プロセッサ104およびプロセッサコアの数を増やすことができる。コンピューティングデバイス100はまた、SoC102に関連付けられていないプロセッサ104を含み得る。個々のプロセッサ104は、マルチコアプロセッサであり得る。プロセッサ104は各々、コンピューティングデバイス100の他のプロセッサ104と同じであっても異なっていてもよい特定の目的のために構成され得る。同じまたは異なる構成のプロセッサ104およびプロセッサコアのうちの1つまたは複数は、一緒にグループ化され得る。プロセッサ104またはプロセッサコアのグループは、マルチプロセッサクラスタと呼ばれることがある。
【0025】
SoC102のメモリ106は、プロセッサ104またはSoC102の他のコンポーネントによるアクセスのためにデータおよびプロセッサ実行可能コードを記憶するために構成される、揮発性または不揮発性のメモリであり得る。コンピューティングデバイス100および/またはSoC102は、様々な目的のために構成される1つまたは複数のメモリ106を含み得る。1つまたは複数のメモリ106は、ランダムアクセスメモリ(RAM)もしくはメインメモリ、またはキャッシュメモリなどの、揮発性メモリを含み得る。これらのメモリ106は、データセンサまたはサブシステムから受信される限られた量のデータ、不揮発性メモリに対して要求され、様々な因子に基づいて将来アクセスされることを予期して不揮発性メモリからメモリ106にロードされる限られた量のデータおよび/またはプロセッサ実行可能コード命令、ならびに/あるいはプロセッサ104によって生成され、不揮発性メモリには記憶されずに将来迅速にアクセスできるように一時的に記憶される限られた量の中間処理データおよび/またはプロセッサ実行可能コード命令を一時的に保持するように構成されてもよい。いくつかの実施形態では、任意の数および組合せのメモリ106は、ワンタイムプログラマブルまたは読取り専用メモリを含み得る。
【0026】
メモリ106は、プロセッサ104またはSoC102の他のコンポーネントのうちの1つまたは複数によるアクセスのために、別のメモリ106またはメモリ114などの、別のメモリデバイスからメモリ106にロードされるデータおよびプロセッサ実行可能コードを、少なくとも一時的に記憶するように構成され得る。メモリ106にロードされたデータまたはプロセッサ実行可能コードは、プロセッサ104またはSoC102の他のコンポーネントによる機能の実行に応答してロードされ得る。機能の実行に応答してデータまたはプロセッサ実行可能コードをメモリ106にロードすることは、要求されたデータまたはプロセッサ実行可能コードがメモリ106内にないことが原因で不成功または「ミス」になるメモリ106へのメモリアクセス要求から生じる場合がある。ミスに応答して、要求されたデータまたはプロセッサ実行可能コードを他のメモリ106またはメモリ114からメモリ106にロードするために、別のメモリ106またはメモリ114へのメモリアクセス要求が行われてもよい。機能の実行に応答してデータまたはプロセッサ実行可能コードをメモリ106にロードすることは、別のメモリ106またはメモリ114へのメモリアクセス要求から生じる場合があり、データまたはプロセッサ実行可能コードは、後のアクセスのためにメモリ106にロードされてもよい。
【0027】
メモリインターフェース110およびメモリ114は、コンピューティングデバイス100が、揮発性および/または不揮発性記憶媒体上にデータおよびプロセッサ実行可能コードを記憶し、揮発性および/または不揮発性記憶媒体からデータおよびプロセッサ実行可能コードを取り出すことを可能にするように、協調して動作し得る。メモリ114は、メモリ114がプロセッサ104またはSoC102の他のコンポーネントのうちの1つまたは複数によるアクセスのためのデータまたはプロセッサ実行可能コードを記憶し得るように、メモリ106の実施形態とほとんど同じように構成され得る。いくつかの実施形態では、不揮発性であるメモリ114は、コンピューティングデバイス100の電源が切断された後に情報を保持し得る。電源が再び投入され、コンピューティングデバイス100が再起動すると、メモリ114上に記憶された情報がコンピューティングデバイス100にとって利用可能になり得る。いくつかの実施形態では、揮発性であるメモリ114は、コンピューティングデバイス100の電源が切断された後に情報を保持しない可能性がある。メモリインターフェース110は、メモリ114へのアクセスを制御し、プロセッサ104またはSoC102の他のコンポーネントがメモリ114からデータを読み取り、メモリ114にデータを書き込むことを可能にしてもよい。
【0028】
タイマ124は、任意の数および組合せのタイマ124を含むことができる。タイマ124は、あらかじめ定められ得る、または計算され得る間隔をカウントするように構成され得る。タイマ124は、間隔の完了時に、プロセッサ104、またはSoC102の他のコンポーネントにトリガ信号または割込み信号を発行するように構成され得る。信号は、信号を受信したコンポーネントに機能を実施するように促すことができる。間隔は、異なるプロセッサ104、SoC102の他のコンポーネント、および/またはアプリケーションのために構成可能であり得る。
【0029】
コンピューティングデバイス100および/またはSoC102のコンポーネントのいくつかまたはすべては、依然として様々な実施形態の機能を果たしながら、異なるように配置され、かつ/または組み合わされ得る。コンピューティングデバイス100は、コンポーネントの各々のうちの1つに限定されなくてもよく、各コンポーネントの複数のインスタンスがコンピューティングデバイス100の様々な構成の中に含まれてもよい。
【0030】
図2は、いくつかの実施形態を実装するのに適したSoC102(
図1)などの集積回路のタイマモジュール200(たとえば、
図1のタイマ124)のコンポーネントを示す。
図1および
図2を参照すると、集積回路は、任意の数および組合せのタイマモジュール200を含んでもよい。タイマモジュール200は、任意の数および組合せのタイマ202、タイマ故障検出器204、タイマ比較器206、タイマ動作ステータスモジュール208、タイマ機能ステータスモジュール210、およびタイムベース調整器212を含む、ハードウェアコンポーネントおよび/またはソフトウェアコンポーネントを含み得る。
【0031】
タイマ202は、あらかじめ定められ得る、または計算され得る間隔をカウントするように構成され得る。タイマ124は、間隔のカウントの完了時に、プロセッサ(たとえば、
図1のプロセッサ104)またはSoCのコンポーネント(たとえば、
図1のSoC102)など集積回路の他のコンポーネントにトリガ信号または割込み信号を発行するように構成され得る。信号は、信号を受信したコンポーネントに機能を実施するように促すことができる。間隔は、異なるプロセッサ、集積回路の他のコンポーネント、および/またはアプリケーションのために構成可能であり得る。
【0032】
いくつかの実施形態では、タイマ202は、任意の数および組合せの間隔をカウントするように構成され得る。いくつかの実施形態では、複数のタイマ202は、タイマモジュール200によって実装され得る。いくつかの実施形態では、異なるタイマ202は、異なる間隔で構成され得る。いくつかの実施形態では、タイマ202は、タイマ202に一体化されたものなど、タイマモジュール200に一体化されたメモリ、および/またはタイマモジュール200とは別個のメモリ(たとえば、
図1のメモリ116)などのメモリ(図示せず)に、任意の数および組合せの間隔および/またはカウントの値を記憶するように構成され得る。いくつかの実施形態では、異なるタイマ202は、独立したタイムベースで動作してもよい。
【0033】
タイマ比較器206は、少なくとも2つのタイマ202を比較し得る。タイマ比較器206は、少なくとも2つのタイマ202の独立したタイムベースを比較し得る。タイマ比較器206は、少なくとも2つのタイマ202の独立したタイムベース間の差を決定または計算することができる。任意の数および組合せのタイマ比較器206を実装することができる。別の例として、タイマ比較器206は、タイマ202と任意の数および組合せの他のタイマ202との独立したタイムベース間の差を決定するように構成され得る。別の例として、タイマ比較器206は、様々なタイマ202間の差を決定するように構成され得る。別の例として、複数のタイマ比較器206の各々は、関連するタイマ202と任意の数および組合せの他のタイマ202との独立したタイムベース間の差を決定するように構成され得る。いくつかの実施形態では、タイマ比較器206は、任意の数および組合せのタイマ故障検出器204との比較の結果を共有し得る。いくつかの実施形態では、タイマ比較器206は、任意の数および組合せのタイムベース調整器212との比較の結果を共有し得る。タイマ比較器206は、周期的に、イベントに基づいて、および/または連続的に、タイマ202の独立したタイムベースを比較するように構成され得る。
【0034】
タイマ故障検出器204は、タイマ202が故障したかどうかを監視し、検出するように構成され得る。タイマ故障検出器204は、様々な既知の手段のいずれかによって、タイマ202が故障したかどうかを検出するように構成され得る。任意の数および組合せのタイマ故障検出器204を実装することができる。たとえば、タイマ故障検出器204は、タイマ202と少なくとも1つの他のタイマ202との比較の結果によって、タイマ202が故障したかどうかを判定するように構成され得る。別の例として、タイマ故障検出器204は、様々なタイマ202の比較の結果によって、タイマ202が故障したかどうかを判定するように構成されてもよい。別の例として、複数のタイマ故障検出器204の各々は、タイマ202とタイマ故障検出器204に関連付けられたタイマ202との比較の結果によって、タイマ202が故障したかどうかを判定し、タイマ202が故障したかどうかの決定を、他のタイマ故障検出器204と共有するように構成され得る。いくつかの実施形態では、タイマ202間の比較の結果は、タイマ比較器206によってタイマ故障検出器204に提供され得る。タイマ故障検出器204は、周期的に、イベントに基づいて、および/または連続的に、タイマ202が故障したかどうかを監視し、検出するように構成され得る。
【0035】
タイマ故障検出器204は、故障したタイマ202が依然としてタイムベース調整とともに使用され得るかどうかをさらに決定し得る。タイマ故障検出器204は、故障したタイマ202と他のタイマ202との比較の結果を使用して、故障したタイマ202が依然としてタイムベース調整とともに使用され得るかどうかを判定し得る。たとえば、タイマ故障検出器204は、故障したタイマ202と少なくとも1つの他のタイマ202との比較の結果が一貫しているかどうかを判定し得る。比較の結果は、ある期間にわたって分散がないか、またはしきい値内の分散を示すことによって一貫している可能性がある。いくつかの実施形態では、期間は時間間隔であってもよい。いくつかの実施形態では、期間は比較の反復回数であってもよい。
【0036】
タイマ202が故障したというタイマ故障検出器204による決定は、タイマ故障検出器204によって、任意の数および組合せのタイマ動作ステータスモジュール208にシグナリングされ得る。タイマ故障検出器204によって行われた、故障したタイマ202がタイムベース調整とともに依然として使用され得るという決定は、タイマ故障検出器204によって、任意の数および組合せのタイマ動作ステータスモジュール208、ならびに任意の数および組合せのタイムベース調整器212にシグナリングされ得る。タイマ故障検出器204は、故障したタイマ202がまだ使用されていない可能性があるという決定を、任意の数および組合せのタイマ機能ステータスモジュール210にシグナリングし得る。
【0037】
タイマ動作ステータスモジュール208は、任意の数および組合せのタイマ202に関連付けられた動作ステータスを修正および/または記憶し得る。タイマ202の動作ステータスは、動作タイマ、モニタタイマ、および故障タイマとしてのステータスを含み得る。動作タイマステータスは、タイマ202が、モニタタイマステータスを有するタイマ202に対して監視されることを、任意の数および組合せのタイマ故障検出器204に示し得る。動作タイマステータスはまた、間隔のカウントの完了時に、プロセッサまたは集積回路の他のコンポーネントにトリガ信号または割込み信号を発行することをタイマ202に示し得る。モニタタイマステータスは、タイマ202が、動作タイマステータスを有するタイマ202およびモニタタイマステータスを有する他のタイマ202に対して監視されることを、任意の数および組合せのタイマ故障検出器204に示し得る。故障タイマステータスは、タイマ202が依然としてタイムベース調整とともに使用され得るかどうかについてタイマ202が評価されることを、任意の数および組合せのタイマ故障検出器204に示し得る。タイマ動作ステータスモジュール208は、タイマ動作ステータスモジュール208に一体化されたものなど、タイマモジュール200に一体化されたメモリ、および/またはタイマモジュール200とは別個のメモリ(たとえば、
図1のメモリ116)などのメモリ(図示せず)において、動作ステータスを修正および/または記憶し得る。タイマ動作ステータスモジュール208は、任意の数および組合せのタイマ202に対して実装され得る。たとえば、タイマ動作ステータスモジュール208は、関連するタイマ202の動作ステータスを修正および/または記憶する。別の例として、タイマ動作ステータスモジュール208は、複数のタイマ202に関連して動作ステータスを修正および/または記憶する。任意の数および組合せのタイマ動作ステータスモジュール208を実装することができる。
【0038】
タイマ機能ステータスモジュール210は、任意の数および組合せのタイマ202に関連付けられた機能ステータスを修正および/または記憶し得る。タイマ202の機能ステータスは、非機能タイマとしてのステータスを含み得る。機能ステータスは、タイマ202が監視または比較されないことを、任意の数および組合せのタイマ故障検出器204およびタイマ比較器206に示し得る。タイマ機能ステータスモジュール210は、タイマ機能ステータスモジュール210に一体化されたものなど、タイマモジュール200に一体化されたメモリ、および/またはタイマモジュール200とは別個のメモリ(たとえば、
図1のメモリ116)などのメモリ(図示せず)において、機能ステータスを修正および/または記憶し得る。タイマ機能ステータスモジュール210は、任意の数および組合せのタイマ202に対して実装され得る。たとえば、タイマ機能ステータスモジュール210は、関連するタイマ202の機能ステータスを修正および/または記憶する。別の例として、タイマ機能ステータスモジュール210は、複数のタイマ202に関連して機能ステータスを修正および/または記憶する。任意の数および組合せのタイマ機能ステータスモジュール210を実装することができる。
【0039】
タイムベース調整器212は、タイマ故障検出器204が、タイマ202がタイムベース調整とともに依然として使用され得ることを示した任意の数および組合せのタイマ202に対してタイムベース調整を実装し得る。タイムベース調整器は、タイマ動作ステータスモジュール208によって示されるモニタタイマ動作ステータスでタイマ202の独立したタイムベースを調整することができる。タイマ202の独立したタイムベースは、本明細書でさらに説明するように、タイマ202と少なくとも1つの他のタイマ202との独立したタイムベース間の差に基づいて調整され得る。タイマ202の独立した調整されたタイムベースは、少なくとも1つの他のタイマ202の独立したタイムベースと比較して、タイマ202の独立したタイムベースの比較を行うために、タイマ比較器によって使用され得る。任意の数および組合せのタイムベース調整器212が、任意の数および組合せの検出器タイマ202に対して実装され得る。
【0040】
図3A~
図4Dは、様々な実施形態を実装するのに独立冗長タイマを使用したSoCタイマの故障検出および回復の一例を示す。
図1~
図4Dを参照すると、システムオンチップ(SoC)タイマの故障検出および回復は、ハードウェアおよび/またはソフトウェア(たとえば、
図1のプロセッサ104、タイマ124、
図2のタイマモジュール200、タイマ202、タイマ故障検出器204、タイマ比較器206、タイマ動作ステータスモジュール208、タイマ機能ステータスモジュール210、タイムベース調整器212)で実装され得る独立冗長タイマシステム300を介して、SoC102(
図1)などの集積回路上に実装され得る。
【0041】
独立冗長タイマシステム300は、少なくとも1つの動作タイマおよび少なくとも1つのモニタタイマを含む、並列に動作する少なくとも3つの独立したタイマ302a、302b、302c、402a、402b、402c(たとえば、
図1のタイマ124、
図2のタイマモジュール200、タイマ202、タイマ故障検出器204、タイマ比較器206、タイマ動作ステータスモジュール208、タイマ機能ステータスモジュール210、タイムベース調整器212)を含み得る。いくつかの実施形態は、少なくとも2つのモニタタイマを含み得る。タイマ302a、302b、302c、402a、402b、402cの各々は、ハードウェアレベル、ソフトウェアレベル、ならびに物理レイアウトおよび論理レベルで他のタイマ302a、302b、302c、402a、402b、402cからの干渉を受けないようにすることができる。動作タイマは、割込み信号および/またはトリガ信号を、異なるタイムスライス上でプロセッサまたはSoCの他のコンポーネント(たとえば、
図1のSoC102、プロセッサ104)に送信するなど、周期的機能を実行し得る。モニタタイマは、動作タイマの故障を検出することができる。本明細書でさらに説明するように、タイマ302a、302b、302c、402a、402b、402cの動作ステータスおよび機能ステータスは、どのタイマ302a、302b、302c、402a、402b、402cが動作タイマ、モニタタイマ、または非機能タイマであるかを変更する様々な要因に基づいて変わり得る。
【0042】
各タイマ302a、302b、302c、402a、402b、402cは、異なる独立したタイムベース(ITB0、ITB1、ITB2)で動作することができる。タイマ302a、302b、302c、402a、402b、402cは、他のタイマ302a、302b、302c、402a、402b、402cからタイムスタンプ304a、304b、304c、404a、404b、404cを送受信し得る。たとえば、モニタタイマは、動作タイマおよび他のモニタタイマからタイムスタンプを受信し、モニタタイマのタイムスタンプを送信し得る。動作タイマは、動作タイマのタイムスタンプをモニタタイマに送信し得る。異なるタイマ302a、302b、302c、402a、402b、402cのタイムスタンプ304a、304b、304c、404a、404b、404cは、他のタイマ302a、302b、302c、402a、402b、402cの故障をチェックするために比較され得る。
【0043】
図3A~
図3Dおよび
図4A~
図4Dは、異なる例を示すが、これらの例は、相互に排他的ではなく、組み合わせてもよい。したがって、同様のタイマ302a、302b、302c、402a、402b、402cは、
図3A~
図3Dおよび
図4A~
図4Dの例の説明と同様に機能し得る。たとえば、
図3A~
図3Dは、モニタタイマが故障について動作タイマを監視する例示的なタイマ302a、302b、302cを示すが、タイマ302a、302b、302cは、動作タイマおよびモニタタイマが故障についてモニタタイマを監視し得る、
図4A~
図4Dに示される例示的なタイマ402a、402b、402cとしてさらに機能し得る。別の例として、
図4A~
図4Dは、動作タイマおよびモニタタイマが故障についてモニタタイマを監視し得る例示的なタイマ402a、402b、402cを示すが、タイマ402a、402b、402cは、モニタタイマが故障について動作タイマを監視する、
図3A~
図3Dに示される例示的なタイマ302a、302b、302cとしてさらに機能し得る。
【0044】
図3A~
図3Dは、動作タイマを監視するためにモニタタイマを使用する例を示す。
図3Aは、ITB0上で動作する第1の動作タイマ302aと、ITB1上で動作する第1のモニタタイマ302bと、ITB2上で動作する第2のモニタタイマ302cとを有する独立冗長タイマシステム300の一例を示す。タイマ302a、302b、302cの各々は、対応する動作ステータスと、第1の動作タイマ302aの動作タイマステータスと、第1のモニタタイマ302bおよび第2のモニタタイマ302cのモニタタイマステータスとを有し得る。タイマ302a、302b、302cのいずれも、非機能の機能ステータスを有する可能性がある。
【0045】
第1の動作タイマ302aは、タイムスタンプ304aを第1のモニタタイマ302bおよび第2のモニタタイマ302cに送信し得る。第1のモニタタイマ302bは、タイムスタンプ304bを第2のモニタタイマ302cに送信することができ、第2のモニタタイマ302cは、タイムスタンプ304cを第1のモニタタイマ302bに送信することができる。第1のモニタタイマ302bは、そのタイムスタンプ304aに基づいて、第1の動作タイマ302a、および第1のモニタタイマ302bの独立したタイムベースを比較して、第1の動作タイマ302aが故障したかどうかを判定し得る。第2のモニタタイマ302cは、そのタイムスタンプ304aに基づいて、第1の動作タイマ302a、および第2のモニタタイマ302cの独立したタイムベースを比較して、第1の動作タイマ302aが故障したかどうかを判定し得る。第1のモニタタイマ302bおよび/または第2のモニタタイマ302cは、独立したタイムベース間の差をもたらす独立したタイムベースの比較に基づいて、第1の動作タイマ302aが故障したと判定し得る。いくつかの実施形態では、独立したタイムベース間の差は、タイマ302a、302b、302cの独立したタイムベース間の任意の差であり得る。いくつかの実施形態では、タイマ302a、302b、302cの独立したタイムベース間の差は、しきい値を超え得る。
【0046】
図3Bは、
図3Aの第1の動作タイマ302aが故障したと判定された独立冗長タイマシステム300の一例を示す。タイマ302aの動作ステータスは、動作タイマステータスから故障タイマステータスに変更され得、
図3Aの第1の動作タイマ302aは
図3Bの故障タイマ302aとなる。故障タイマ302aの動作ステータスの移行により、独立冗長タイマシステム300が動作タイマを持たなくなる可能性がある。動作タイマがないことを回避するために、
図3Aのモニタタイマ302b、302cのいずれかは、それらの動作ステータスがモニタタイマステータスから動作タイマステータスに変更され得る。この例では、タイマ302bの動作ステータスは、モニタタイマステータスから動作タイマステータスに変更され得、
図3Aの第1のモニタタイマ302bは
図3Bの第2の動作タイマ302bとなる。
図3Aの第1の動作タイマ302aおよび第1のモニタタイマ302bから
図3Bの故障タイマ302aおよび第2の動作タイマ302bへの変更は、タイムクリティカルなシステムのフォールトトレラント時間間隔内で生じる可能性がある。第2の動作タイマ302bは、タイムスタンプ304bを第2のモニタタイマ302cに送信することができ、それは、故障について第2の動作タイマ302bを監視することができる。
【0047】
故障タイマ302aは、それがモニタタイマとして使用され得るか、または使用から除外されたままであり得るかどうかを判定するために評価され得る。故障タイマ302aの独立したタイムベース(ITB0)は、第2の動作タイマ302bの独立したタイムベース(ITB1)および/または第2のモニタタイマ302cの独立したタイムベース(ITB2)と比較され得る。これらの比較は、故障タイマ302aの独立したタイムベースと第2の動作タイマ302bの独立したタイムベースとの間に差(Δ1)があるかどうか、および/または故障タイマ302aの独立したタイムベースと第2のモニタタイマ302cの独立したタイムベースとの間に差(Δ2)があるかどうかを判定し得る。第2の動作タイマ302bとの独立したタイムベース差Δ1および/または第2のモニタタイマ302cとの独立したタイムベース差Δ2が一貫しているかどうかは、経時的に決定され得る。たとえば、ITB0+/-Δ1=ITB1および/またはITB0+/-Δ2=ITB2であるかどうかは、独立したタイムベース差が一貫しているという十分な確信が得られるまで、たとえば、定義された反復回数、決定論的時間間隔などにわたって、繰り返し決定され得る。
【0048】
図3Cは、
図3Bの故障タイマ302aが、第2の動作タイマ302bとの一貫した独立したタイムベース差Δ1および/または第2のモニタタイマ302cとの一貫した独立したタイムベース差Δ2を有すると判定される、独立冗長タイマシステム300の一例を示す。第2の動作タイマ302bとの一貫した独立したタイムベース差Δ1および/または第2のモニタタイマ302cとの一貫した独立したタイムベース差Δ2を決定したことに応答して、
図3Bの故障タイマ302aの動作ステータスは、故障タイマステータスからモニタタイマステータスに変更され得、
図3Bの故障タイマ302aは
図3Cの第3のモニタタイマ302aになる。第3のモニタタイマ302aは、故障について第2の動作タイマ302bなどの動作タイマを監視するモニタタイマの役割を担ってもよい。第2の動作タイマ302bは、タイムスタンプ304bを第3のモニタタイマ302aおよび第2のモニタタイマ302cに送信し得る。第3のモニタタイマ302aは、タイムスタンプ304aを第2のモニタタイマ302cに送信することができ、第2のモニタタイマ302cは、タイムスタンプ304cを第3のモニタタイマ302cに送信することができる。
【0049】
しかしながら、タイマ302aの以前の故障を考慮するために、第3のモニタタイマ302aは、調整された独立したタイムベース上で動作し得る。第3のモニタタイマ302aの調整された独立したタイムベースは、
図3Bの故障タイマ302aの独立したタイムベース(ITB0)を、
図3Bの故障タイマ302aと第2の動作タイマ302bとの独立したタイムベース間の差(Δ1)、たとえばITB0+Δ1で調整したもの、または
図3Bの故障タイマ302aと第2のモニタタイマとの独立したタイムベース間の差(Δ2)、たとえばITB0+Δ2で調整したものであり得る。
【0050】
図3Dは、
図3Bの故障タイマ302aが、第2の動作タイマ302bとの一貫した独立したタイムベース差Δ1および/または第2のモニタタイマ302cとの一貫した独立したタイムベース差Δ2を有していないと判定される、独立冗長タイマシステム300の一例を示す。第2の動作タイマ302bとの一貫した独立したタイムベース差Δ1および/または第2のモニタタイマ302cとの一貫した独立したタイムベース差Δ2を決定しないことに応答して、
図3Bの故障タイマ302aの機能ステータスは、非機能ステータスに変更され得、
図3Bの故障タイマ302aは
図3Dの非機能タイマ302aになる。非機能タイマとして、非機能タイマ302aは、独立冗長タイマシステム300の残りによって無視され得る。非機能タイマ302aは、独立冗長タイマシステム300が完全に回復するまで、独立冗長タイマシステム300から事実上取り除かれ得る。第2のモニタタイマ302cは、引き続き、第2の動作タイマ302bからタイムスタンプ304bを受信し、故障について第2の動作タイマ302bを監視し得る。
【0051】
図4A~
図4Dは、別のモニタタイマを監視するために動作タイマおよびモニタタイマを使用する例を示す。
図4Aは、ITB0上で動作する第1の動作タイマ402aと、ITB1上で動作する第1のモニタタイマ402bと、ITB2上で動作する第2のモニタタイマ402cとを有する独立冗長タイマシステム400の一例を示す。タイマ402a、402b、402cの各々は、対応する動作ステータスと、第1の動作タイマ402aの動作タイマステータスと、第1のモニタタイマ402bおよび第2のモニタタイマ402cのモニタタイマステータスとを有し得る。タイマ402a、402b、402cのいずれも、非機能の機能ステータスを有する可能性がある。
【0052】
第1の動作タイマ402aは、タイムスタンプ404aを第1のモニタタイマ402bおよび第2のモニタタイマ402cに送信し得る。第1のモニタタイマ402bは、タイムスタンプ404bを第2のモニタタイマ402cに送信することができ、第2のモニタタイマ402cは、タイムスタンプ404cを第1のモニタタイマ402bに送信することができる。第1の動作タイマ402aは、そのタイムスタンプ404bに基づいて、第1のモニタタイマ402b、および第1の動作タイマ402aの独立したタイムベースを比較して、第1のモニタタイマ402bが故障したかどうかを判定し得る。第2のモニタタイマ402cは、そのタイムスタンプ404bに基づいて、第1のモニタタイマ402b、および第2のモニタタイマ402cの独立したタイムベースを比較して、第1のモニタタイマ402bが故障したかどうかを判定し得る。第1の動作タイマ402aおよび/または第2のモニタタイマ402cは、独立したタイムベース間の差をもたらす独立したタイムベースの比較に基づいて、第1のモニタタイマ402bが故障したと判定し得る。いくつかの実施形態では、独立したタイムベース間の差は、タイマ402a、402b、402cの独立したタイムベース間の任意の差であり得る。いくつかの実施形態では、タイマ402a、402b、402cの独立したタイムベース間の差は、しきい値を超え得る。
【0053】
図4Bは、
図4Aの第1のモニタタイマ402bが故障したと判定された独立冗長タイマシステム400の一例を示す。タイマ402bの動作ステータスは、モニタタイマステータスから故障タイマステータスに変更され得、
図4Aの第1のモニタタイマ402bは
図4Bの故障タイマ402bとなる。故障タイマ402bの動作ステータスの移行により、独立冗長タイマシステム400のモニタタイマが少なくなる可能性がある。独立冗長タイマシステム400は、第2のモニタタイマ402cのような少なくとも1つのモニタタイマが動作可能なままである限り、完全な回復を回避し得る。
【0054】
故障タイマ402bは、それがモニタタイマとして再度使用され得るか、または使用から除外されたままであり得るかどうかを判定するために評価され得る。故障タイマ402bの独立したタイムベース(ITB1)は、第1の動作タイマ402aの独立したタイムベース(ITB0)および/または第2のモニタタイマ402cの独立したタイムベース(ITB2)と比較され得る。これらの比較は、故障タイマ402bの独立したタイムベースと第1の動作タイマ402aの独立したタイムベースとの間に差(Δ3)があるかどうか、および/または故障タイマ402bの独立したタイムベースと第2のモニタタイマ402cの独立したタイムベースとの間に差(Δ4)があるかどうかを判定し得る。第1の動作タイマ402aとの独立したタイムベース差Δ3および/または第2のモニタタイマ402cとの独立したタイムベース差Δ4が一貫しているかどうかは、経時的に決定され得る。たとえば、ITB1+/-Δ3=ITB0+ITB2およびITB1+/-Δ4=ITB0+ITB2であるかどうかは、独立したタイムベース差が一貫しているという十分な確信が得られるまで、たとえば、定義された反復回数、決定論的時間間隔などにわたって、繰り返し決定され得る。
【0055】
図4Cは、
図4Bの故障タイマ402bが、第1の動作タイマ402aとの一貫した独立したタイムベース差Δ3および/または第2のモニタタイマ402cとの一貫した独立したタイムベース差Δ4を有すると判定される、独立冗長タイマシステム400の一例を示す。第1の動作タイマ402aとの一貫した独立したタイムベース差Δ3および/または第2のモニタタイマ402cとの一貫した独立したタイムベース差Δ4を決定したことに応答して、
図4Bの故障タイマ402bの動作ステータスは、故障タイマステータスからモニタタイマステータスに変更され得、
図4Bの故障タイマ402bは再度
図4Cの第1のモニタタイマ402bになる。第1のモニタタイマ402bは、故障について第2のモニタタイマ402cなど他のモニタタイマを監視するモニタタイマの役割を担ってもよい。第1の動作タイマ402aは、タイムスタンプ404aを第1のモニタタイマ402bおよび第2のモニタタイマ402cに送信し得る。第1のモニタタイマ402bは、タイムスタンプ404bを第2のモニタタイマ402cに送信することができ、第2のモニタタイマ402cは、タイムスタンプ404cを第1のモニタタイマ402bに送信することができる。
【0056】
しかしながら、タイマ402bの以前の故障を考慮するために、第1のモニタタイマ402bは、調整された独立したタイムベース上で動作し得る。第1のモニタタイマ402bの調整された独立したタイムベースは、
図4Bの故障タイマ402bの独立したタイムベース(ITB1)を、
図4Bの故障タイマ402bと第1の動作タイマ402aとの独立したタイムベース間の差(Δ3)、たとえばITB1+Δ3で調整したもの、または
図4Bの故障タイマ402bと第2のモニタタイマとの独立したタイムベース間の差(Δ4)、たとえばITB1+Δ4で調整したものであり得る。
【0057】
図4Dは、
図4Bの故障タイマ402bが、第1の動作タイマ402aとの一貫した独立したタイムベース差Δ3および/または第2のモニタタイマ402cとの一貫した独立したタイムベース差Δ4を有していないと判定される、独立冗長タイマシステム400の一例を示す。第1の動作タイマ402aとの一貫した独立したタイムベース差Δ3および/または第2のモニタタイマ402cとの一貫した独立したタイムベース差Δ4を決定しないことに応答して、
図4Bの故障タイマ402bの機能ステータスは、非機能ステータスに変更され得、
図4Bの故障タイマ402bは
図4Dの非機能タイマ402bになる。非機能タイマとして、非機能タイマ402bは、独立冗長タイマシステム400の残りによって無視され得る。非機能タイマ402bは、独立冗長タイマシステム400が完全に回復するまで、独立冗長タイマシステム400から事実上取り除かれ得る。第2のモニタタイマ402cは、引き続き、第1の動作タイマ402aからタイムスタンプ404aを受信し、故障について第1の動作タイマ402aを監視し得る。
【0058】
図5は、一実施形態による、独立冗長タイマを使用するSoCタイマの故障検出および回復の方法500を示す。
図1~
図5を参照すると、方法500は、集積回路(たとえば、SoC102)または集積回路内のコンポーネント、たとえば、プロセッサ104、タイマ124、タイマモジュール200、タイマ202、タイマ故障検出器204、タイマ比較器206、タイマ動作ステータスモジュール208、タイマ機能ステータスモジュール210、タイムベース調整器212、タイマ302a、302b、302c、タイマ402a、402b、402c)において、プロセッサ(たとえば、タイマ124、タイマモジュール200、タイマ202、タイマ故障検出器204、タイマ比較器206、タイマ動作ステータスモジュール208、タイマ機能ステータスモジュール210、タイムベース調整器212、タイマ302a、302b、302c、タイマ402a、402b、402c)で実行されるソフトウェアにおいて、またはソフトウェアで構成されるプロセッサと、他の個々のコンポーネントおよび様々なメモリ/キャッシュコントローラを含む専用ハードウェア(たとえば、独立冗長タイマシステム300、独立冗長タイマシステム400)の組合せにおいて実装され得る。様々な実施形態において可能な代替構成を包含するために、方法500を実装するハードウェアは、本明細書では「タイマ制御デバイス」と呼ばれる。
【0059】
ブロック502において、タイマ制御デバイスは、複数のタイマを並列に実行し得る。並列に実行するタイマは、少なくとも1つの動作タイマおよび少なくとも1つのモニタタイマを含み得る。いくつかの実施形態では、少なくとも1つのモニタタイマは、少なくとも2つのモニタタイマであってもよい。タイマの各々は、ハードウェアレベル、ソフトウェアレベル、ならびに物理レイアウトおよび論理レベルで他のタイマからの干渉を受けないようにすることができる。動作タイマは、異なるタイムスライスで周期的な機能を実行してもよい。いくつかの実施形態では、モニタタイマは、動作タイマの故障を検出することができる。いくつかの実施形態では、動作タイマおよびモニタタイマは、別のモニタタイマの故障を検出し得る。各タイマは、異なる独立したタイムベース(ITB)で動作することができる。いくつかの実施形態では、ブロック502において複数のタイマを並列に実行するタイマ制御デバイスは、プロセッサ、タイマ、および/またはタイマモジュールであり得る。
【0060】
ブロック504において、タイマ制御デバイスは、故障についてタイマを監視し得る。いくつかの実施形態では、タイマを実行するタイマ制御デバイスは、タイマを使用して、故障について他のタイマを監視し得る。いくつかの実施形態では、ブロック504において故障についてタイマを監視するタイマ制御デバイスは、プロセッサ、タイマ、タイマモジュール、および/またはタイマ比較器であり得る。いくつかの実施形態では、モニタタイマは、故障について動作タイマを監視し得る。モニタタイマは、動作タイマからタイムスタンプ(たとえば、
図3Aのタイムスタンプ304a、
図4A~
図4Dのタイムスタンプ404a)を受信し、受信されたタイムスタンプを使用して動作タイマの独立したタイムベースをモニタタイマの独立したタイムベースと比較し得る。モニタタイマは、動作タイマとモニタタイマとの独立したタイムベース間に差があると判定したことに応答して、動作タイマが故障したと判定することができる。いくつかの実施形態では、差は任意の差であり得る。いくつかの実施形態では、差は、しきい値を超える差であってもよい。
【0061】
いくつかの実施形態では、動作タイマおよびモニタタイマは、故障について他のモニタタイマを監視し得る。動作タイマおよびモニタタイマは、他のモニタタイマからタイムスタンプ(たとえば、
図3Aのタイムスタンプ304b、
図4Aおよび
図4Cのタイムスタンプ404b)を受信し得る。動作タイマは、受信されたタイムスタンプを使用して、他のモニタタイマの独立したタイムベースを、動作タイマの独立したタイムベースと比較し得る。モニタタイマは、受信されたタイムスタンプを使用して、他のモニタタイマの独立したタイムベースを、モニタタイマの独立したタイムベースと比較し得る。
【0062】
ブロック506において、タイマ制御デバイスは、故障タイマを検出し得る。動作タイマは、動作タイマと他のモニタタイマとの独立したタイムベース間に差があると判定したことに応答して、他のモニタタイマが故障したと判定することができる。モニタタイマは、他のモニタタイマとモニタタイマとの独立したタイムベース間に差があると判定したことに応答して、他のモニタタイマが故障したと判定することができる。いくつかの実施形態では、差は任意の差であり得る。いくつかの実施形態では、差は、しきい値を超える差であってもよい。いくつかの実施形態では、ブロック506において故障タイマを検出するタイマ制御デバイスは、プロセッサ、タイマ、タイマモジュール、タイマ比較器、および/またはタイマ故障検出器であり得る。
【0063】
ブロック508において、タイマ制御デバイスは、故障タイマを使用から除外し得る。故障タイマを検出したことに応答して、タイマ制御デバイスは、故障タイマを使用から除外し、故障タイマが、他のタイマを含むコンピューティングデバイスの他のコンポーネントと通信することを防止し得る。いくつかの実施形態では、制御デバイスは、タイマの動作ステータスを変更することができる。動作ステータスは、タイマおよび/またはコンピューティングデバイスの他のコンポーネントにタイマの動作ステータスを示し得、タイマがどのコンポーネントと通信および/または監視し得るかなど、その機能をタイマに示し得る。いくつかの実施形態では、時間の動作ステータスは、タイマが故障した、および/または利用不可能であることを示し得る。たとえば、タイマは、タイマが故障したことが検出されたとき、動作タイマの動作ステータスを有し得る。タイマは、動作タイマの機能および通信を実装していた可能性がある。別の例として、タイマは、タイマが故障したことが検出されたとき、モニタタイマの動作ステータスを有し得る。タイマは、モニタタイマの機能および通信を実装していた可能性がある。いずれの例においても、故障タイマを検出したことに応答して、タイマ制御デバイスは、タイマの動作ステータスを故障タイマの動作ステータスに設定してもよく、故障タイマの機能および通信を、故障タイマをさらに評価するために必要なものに制限してもよい。いくつかの実施形態では、ブロック508において使用から故障タイマを除外するタイマ制御デバイスは、プロセッサ、タイマ、タイマモジュール、タイマ故障検出器、および/またはタイマ動作ステータスモジュールであり得る。
【0064】
ブロック510において、タイマ制御デバイスは、タイマの機能および/または動作を管理し得る。タイマ制御デバイスは、
図6を参照する方法600および/または
図7を参照する方法700について本明細書でさらに説明するように、故障タイマ、動作タイマ、および/またはモニタタイマなどのタイマの機能および/または動作を管理し得る。いくつかの実施形態では、方法600、700は独立して実施されてもよい。いくつかの実施形態では、方法600、700は共同で実施されてもよい。いくつかの実施形態では、方法600、700は並行して実施されてもよい。いくつかの実施形態では、ブロック510においてタイマの機能および/または動作を管理するタイマ制御デバイスは、プロセッサ、タイマ、タイマモジュール、タイマ故障検出器、タイマ比較器、タイマ動作ステータスモジュール、タイマ機能ステータスモジュール、および/またはタイマタイムベース調整器であり得る。
【0065】
方法500は、再帰的に呼び出され得る。いくつかの実施形態では、プロファイリングが実装され、全体的な安全管理ハンドラに報告されて、どのタイマが故障したか、タイマが何回故障したか、タイマの回復回数、および各故障タイマの独立したタイムベースにおける現在の差な何かを決定し得る。
【0066】
図6は、一実施形態による、独立冗長タイマを使用するSoCタイマの故障検出および回復の方法600を示す。
図1~
図6を参照すると、方法600は、集積回路(たとえば、SoC102)または集積回路内のコンポーネント、たとえば、プロセッサ104、タイマ124、タイマモジュール200、タイマ202、タイマ故障検出器204、タイマ比較器206、タイマ動作ステータスモジュール208、タイマ機能ステータスモジュール210、タイムベース調整器212、タイマ302a、302b、302c、タイマ402a、402b、402c)において、プロセッサ(たとえば、タイマ124、タイマモジュール200、タイマ202、タイマ故障検出器204、タイマ比較器206、タイマ動作ステータスモジュール208、タイマ機能ステータスモジュール210、タイムベース調整器212、タイマ302a、302b、302c、タイマ402a、402b、402c)で実行されるソフトウェアにおいて、またはソフトウェアで構成されるプロセッサと、他の個々のコンポーネントおよび様々なメモリ/キャッシュコントローラを含む専用ハードウェア(たとえば、独立冗長タイマシステム300、独立冗長タイマシステム400)の組合せにおいて実装され得る。様々な実施形態において可能な代替構成を包含するために、方法600を実装するハードウェアは、本明細書では「タイマ制御デバイス」と呼ばれる。
【0067】
図5を参照して説明した方法500では、タイマ制御デバイスは、ブロック506において、動作タイマを故障タイマとして検出し、ブロック508において、故障(動作)タイマを使用から除外した可能性がある。
【0068】
ブロック602において、タイマ制御デバイスは、モニタタイマを動作タイマとして設定し得る。タイマ制御デバイスは、モニタタイマの動作ステータスをモニタタイマの動作ステータスから動作タイマの動作ステータスに変更してもよい。タイマの動作ステータスは、動作タイマの機能および通信を実装するようにタイマに示し得る。動作タイマに変換されたモニタタイマは、故障(動作)タイマを置き換えることができる。いくつかの実施形態では、モニタタイマの動作タイマへの変換は、タイムクリティカルなシステムのフォールトトレラントな時間間隔内で実施され得る。いくつかの実施形態では、ブロック602においてモニタタイマを動作タイマとして設定するタイマ制御デバイスは、プロセッサ、タイマ、タイマモジュール、タイマ故障検出器、および/またはタイマ動作ステータスモジュールであり得る。
【0069】
ブロック604において、タイマ制御デバイスは、動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差を決定し得る。故障タイマは、故障タイマの独立したタイムベースを動作タイマの独立したタイムベースおよび/またはモニタタイマの独立したタイムベースと比較することによって、モニタタイマとして使用され得るか、または使用から除外されたままであり得るかを決定するために評価され得る。これらの比較は、故障タイマの独立したタイムベースと動作タイマの独立したタイムベースとの間に差があるかどうか、および/または故障タイマの独立したタイムベースと第2のモニタタイマの独立したタイムベースとの間に差があるかどうかを判定し得る。いくつかの実施形態では、ブロック604において、動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差を決定するタイマ制御デバイスは、プロセッサ、タイマ、タイマモジュール、および/またはタイマ比較器であり得る。
【0070】
決定ブロック606において、タイマ制御デバイスは、動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差が一貫しているかどうかを判定し得る。動作タイマとの独立したタイムベース差および/またはモニタタイマとの独立したタイムベース差が一貫しているかどうかは、経時的に決定され得る。たとえば、動作タイマおよび/またはモニタタイマとの独立したタイムベースの差が一貫しているかどうかは、独立したタイムベースの差が一貫しているという十分な確信が得られるまで、たとえば、定義された反復回数、決定論的時間間隔などにわたって、繰り返し決定され得る。いくつかの実施形態では、決定ブロック606において、動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差が一貫しているかどうかを判定するタイマ制御デバイスは、プロセッサ、タイマ、タイマモジュール、タイマ故障検出器、および/またはタイマ比較器であり得る。
【0071】
動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差が一貫している(すなわち、決定ブロック606="Yes")と判定したことに応答して、タイマ制御デバイスは、ブロック608において、動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差を使用して、故障タイマの独立したタイムベースを調整し得る。故障タイマの以前の故障を考慮して、故障タイマの独立したタイムベースは、時間調整して調整され得る。故障タイマの調整された独立したタイムベースは、故障タイマの独立したタイムベースを、故障タイマと動作タイマとの独立したタイムベース間の差で調整したもの、または故障タイマとモニタタイマとの独立したタイムベース間の差で調整したものであり得る。いくつかの実施形態では、ブロック608において、動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差を使用して故障タイマの独立したタイムベースを調整するタイマ制御デバイスは、プロセッサ、タイマ、タイマモジュール、タイマ故障検出器、および/またはタイマタイムベース調整器であり得る。
【0072】
ブロック610において、タイマ制御デバイスは、故障タイマをモニタタイマとして設定し得る。タイマ制御デバイスは、故障タイマの動作ステータスを故障タイマの動作ステータスからモニタタイマの動作ステータスに変更してもよい。タイマの動作ステータスは、モニタタイマの機能および通信を実装するようにタイマに示し得る。モニタタイマに変換された故障タイマは、ブロック602において、動作タイマに変換されたモニタタイマを置き換えることができる。いくつかの実施形態では、ブロック610において故障タイマをモニタタイマとして設定するタイマ制御デバイスは、プロセッサ、タイマ、タイマモジュール、タイマ故障検出器、および/またはタイマ動作ステータスモジュールであり得る。
【0073】
動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差が一貫していない(すなわち、決定ブロック606="No")と判定したことに応答して、タイマ制御デバイスは、ブロック612において、故障タイマを非機能タイマに設定し得る。タイマ制御デバイスは、故障タイマの機能ステータスを非機能タイマに変更することができる。非機能タイマステータスを割り当てられたタイマは、いかなるタイマ機能および/または通信も実装せず、かつ/またはコンピューティングデバイスのコンポーネントによって無視され得る。非機能タイマは、独立冗長タイマシステムが完全に回復するまで、非機能タイマのままであり得る。いくつかの実施形態では、ブロック612において故障タイマを非機能タイマに設定するタイマ制御デバイスは、プロセッサ、タイマ、タイマモジュール、タイマ故障検出器、および/またはタイマ機能ステータスモジュールであり得る。
【0074】
図7は、一実施形態による、独立冗長タイマを使用するSoCタイマの故障検出および回復の方法700を示す。
図1~
図7を参照すると、方法700は、集積回路(たとえば、SoC102)または集積回路内のコンポーネント、たとえば、プロセッサ104、タイマ124、タイマモジュール200、タイマ202、タイマ故障検出器204、タイマ比較器206、タイマ動作ステータスモジュール208、タイマ機能ステータスモジュール210、タイムベース調整器212、タイマ302a、302b、302c、タイマ402a、402b、402c)において、プロセッサ(たとえば、タイマ124、タイマモジュール200、タイマ202、タイマ故障検出器204、タイマ比較器206、タイマ動作ステータスモジュール208、タイマ機能ステータスモジュール210、タイムベース調整器212、タイマ302a、302b、302c、タイマ402a、402b、402c)で実行されるソフトウェアにおいて、またはソフトウェアで構成されるプロセッサと、他の個々のコンポーネントおよび様々なメモリ/キャッシュコントローラを含む専用ハードウェア(たとえば、独立冗長タイマシステム300、独立冗長タイマシステム400)の組合せにおいて実装され得る。様々な実施形態において可能な代替構成を包含するために、方法700を実装するハードウェアは、本明細書では「タイマ制御デバイス」と呼ばれる。
【0075】
図5を参照して説明した方法500では、タイマ制御デバイスは、ブロック506において、モニタタイマを故障タイマとして検出し、ブロック508において、故障(モニタ)タイマを使用から除外した可能性がある。
【0076】
ブロック702において、タイマ制御デバイスは、動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差を決定し得る。故障タイマは、故障タイマの独立したタイムベースを動作タイマの独立したタイムベースおよび/またはモニタタイマの独立したタイムベースと比較することによって、モニタタイマとして使用され得るか、または使用から除外されたままであり得るかを決定するために評価され得る。これらの比較は、故障タイマの独立したタイムベースと動作タイマの独立したタイムベースとの間に差があるかどうか、および/または故障タイマの独立したタイムベースと第2のモニタタイマの独立したタイムベースとの間に差があるかどうかを判定し得る。いくつかの実施形態では、ブロック702において、動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差を決定するタイマ制御デバイスは、プロセッサ、タイマ、タイマモジュール、および/またはタイマ比較器であり得る。
【0077】
決定ブロック704において、タイマ制御デバイスは、動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差が一貫しているかどうかを判定し得る。動作タイマとの独立したタイムベース差および/またはモニタタイマとの独立したタイムベース差が一貫しているかどうかは、経時的に決定され得る。たとえば、動作タイマおよび/またはモニタタイマとの独立したタイムベースの差が一貫しているかどうかは、独立したタイムベースの差が一貫しているという十分な確信が得られるまで、たとえば、定義された反復回数、決定論的時間間隔などにわたって、繰り返し決定され得る。いくつかの実施形態では、決定ブロック704において、動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差が一貫しているかどうかを判定するタイマ制御デバイスは、プロセッサ、タイマ、タイマモジュール、タイマ故障検出器、および/またはタイマ比較器であり得る。
【0078】
動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差が一貫している(すなわち、決定ブロック704="Yes")と判定したことに応答して、タイマ制御デバイスは、ブロック706において、動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差を使用した時間調整で、故障タイマの独立したタイムベースを調整し得る。したがって、故障タイマの以前の故障を考慮して、故障タイマの独立したタイムベースは調整され得る。故障タイマの調整された独立したタイムベースは、故障タイマの独立したタイムベースを、故障タイマと動作タイマとの独立したタイムベース間の差で調整したもの、または故障タイマとモニタタイマとの独立したタイムベース間の差で調整したものであり得る。いくつかの実施形態では、ブロック706において、動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差を使用して故障タイマの独立したタイムベースを調整するタイマ制御デバイスは、プロセッサ、タイマ、タイマモジュール、タイマ故障検出器、および/またはタイマタイムベース調整器であり得る。
【0079】
ブロック708において、タイマ制御デバイスは、故障タイマをモニタタイマとして設定し得る。タイマ制御デバイスは、故障タイマの動作ステータスを故障タイマの動作ステータスからモニタタイマの動作ステータスに変更してもよい。タイマの動作ステータスは、モニタタイマの機能および通信を実装するようにタイマに示し得る。モニタタイマに変換された故障タイマは、
図5を参照して本明細書で説明する方法500のブロック508において、故障タイマに変換されたモニタタイマを復元することができる。いくつかの実施形態では、ブロック708において故障タイマをモニタタイマとして設定するタイマ制御デバイスは、プロセッサ、タイマ、タイマモジュール、タイマ故障検出器、および/またはタイマ動作ステータスモジュールであり得る。
【0080】
動作タイマと故障タイマとの独立したタイムベース間の差、および/またはモニタタイマと故障タイマとの独立したタイムベース間の差が一貫していない(すなわち、決定ブロック704="No")と判定したことに応答して、タイマ制御デバイスは、ブロック710において、故障タイマを非機能タイマに設定し得る。タイマ制御デバイスは、故障タイマの機能ステータスを非機能タイマに変更することができる。非機能タイマステータスを割り当てられたタイマは、いかなるタイマ機能および/または通信も実装せず、かつ/またはコンピューティングデバイスのコンポーネントによって無視され得る。非機能タイマは、独立冗長タイマシステムが完全に回復するまで、非機能タイマのままであり得る。いくつかの実施形態では、ブロック710において故障タイマを非機能タイマに設定するタイマ制御デバイスは、プロセッサ、タイマ、タイマモジュール、タイマ故障検出器、および/またはタイマ機能ステータスモジュールであり得る。
【0081】
(限定はしないが、
図1~
図7を参照して上記で説明した実施形態を含む)様々な実施形態によるシステムは、モバイルコンピューティングデバイスを含む多種多様なコンピューティングシステムにおいて実装されてよく、様々な実施形態とともに使用するのに適したモバイルコンピューティングデバイスの一例が
図8に示されている。モバイルコンピューティングデバイス800は、タッチスクリーンコントローラ804と内部メモリ806とに結合されたプロセッサ802を含み得る。プロセッサ802は、汎用または特定の処理タスクに指定された1つまたは複数のマルチコア集積回路であり得る。内部メモリ806は、揮発性メモリまたは不揮発性メモリであってよく、また、セキュアメモリおよび/もしくは暗号化メモリまたは非セキュアメモリおよび/もしくは非暗号化メモリ、あるいはそれらの任意の組合せであってもよい。活用されてもよいメモリタイプの例には、限定はしないが、DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM、および埋込みDRAMが含まれる。タッチスクリーンコントローラ804およびプロセッサ802はまた、抵抗感知タッチスクリーン、容量性感知タッチスクリーン、赤外線感知タッチスクリーンなど、タッチスクリーンパネル812に結合され得る。追加として、モバイルコンピューティングデバイス800のディスプレイは、タッチスクリーン機能を有する必要はない。
【0082】
モバイルコンピューティングデバイス800は、互いに結合されたおよび/またはプロセッサ802に結合された、通信を送受信するための1つまたは複数の無線信号トランシーバ808(たとえば、Peanut、Bluetooth、ZigBee、Wi-Fi、RF無線)と、アンテナ810とを有し得る。トランシーバ808およびアンテナ810は、様々なワイヤレス送信プロトコルスタックおよびインターフェースを実装するために、上述の回路構成とともに使用され得る。モバイルコンピューティングデバイス800は、セルラーネットワークを経由した通信を可能にするとともにプロセッサに結合されているセルラーネットワークワイヤレスモデムチップ816を含み得る。
【0083】
モバイルコンピューティングデバイス800は、プロセッサ802に結合された周辺デバイス接続インターフェース818を含み得る。周辺デバイス接続インターフェース818は、1つのタイプの接続を受け入れるように単独で構成されてよく、またはユニバーサルシリアルバス(USB)、FireWire、Thunderbolt、もしくはPCIeなどの、一般的もしくはプロプライエタリな様々なタイプの物理接続および通信接続を受け入れるように構成されてもよい。周辺デバイス接続インターフェース818はまた、同様に構成される周辺デバイス接続ポート(図示せず)に結合されてよい。
【0084】
モバイルコンピューティングデバイス800はまた、オーディオ出力を提供するためのスピーカ814を含み得る。モバイルコンピューティングデバイス800はまた、本明細書で説明するコンポーネントの全部または一部を収容するための、プラスチック、金属、または材料の組合せから構成されるハウジング820を含み得る。モバイルコンピューティングデバイス800は、使い捨てまたは充電可能なバッテリーなどの、プロセッサ802に結合された電源822を含む場合もある。充電可能なバッテリーは、モバイルコンピューティングデバイス800の外部にある電源から充電電流を受けるために、周辺デバイス接続ポートに結合される場合もある。モバイルコンピューティングデバイス800はまた、ユーザ入力を受け取るための物理ボタン824を含んでもよい。モバイルコンピューティングデバイス800は、モバイルコンピューティングデバイス800をオンオフするための電源ボタン824を含んでもよい。
【0085】
(限定はしないが、
図1~
図7を参照して上記で説明した実施形態を含む)様々な実施形態によるシステムは、ラップトップコンピュータ900を含む様々な多種多様なコンピューティングシステムにおいて実装されよく、ラップトップコンピュータ900の一例が
図9に示されている。多くのラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドのタッチ面917を含み、したがって、タッチスクリーンディスプレイを装備した上述のコンピューティングデバイス上で実装されるものと同様のドラッグジェスチャー、スクロールジェスチャー、およびフリックジェスチャーを受信し得る。ラップトップコンピュータ900は通常、揮発性メモリ912と、フラッシュメモリのディスクドライブ913などの大容量不揮発性メモリとに結合されたプロセッサ902を含む。加えて、コンピュータ900は、プロセッサ902に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ916に接続され得る、電磁放射を送受信するための1つまたは複数のアンテナ908を有し得る。コンピュータ900はまた、プロセッサ902に結合されたフロッピーディスクドライブ914およびコンパクトディスク(CD)ドライブ915を含み得る。ノートブック構成では、コンピュータハウジングは、すべてがプロセッサ902に結合されたタッチパッド917、キーボード918、およびディスプレイ919を含む。コンピューティングデバイスの他の構成は、よく知られているように、(たとえば、USBポートを介して)プロセッサに結合されたコンピュータマウスまたはトラックボールを含んでもよく、これらも様々な実施形態とともに使用され得る。
【0086】
(限定はしないが、
図1~
図7を参照して上記で説明した実施形態を含む)様々な実施形態によるシステムは、様々な市販のサーバのうちのいずれかなど、固定コンピューティングシステムにおいて実装されてもよい。例示的なサーバ1000が、
図10に示されている。そのようなサーバ1000は、通常、揮発性メモリ1002と、ディスクドライブ1004などの大容量不揮発性メモリとに結合された、1つまたは複数のマルチコアプロセッサアセンブリ1001を含む。
図10に示すように、マルチコアプロセッサアセンブリ1001は、それらをアセンブリのラックに挿入することによって、サーバ1000に追加され得る。サーバ1000はまた、プロセッサ1001に結合されたフロッピーディスクドライブ、コンパクトディスク(CD)、またはデジタル多用途ディスク(DVD)ディスクドライブ1006を含んでもよい。サーバ1000はまた、他のブロードキャストシステムコンピュータおよびサーバに結合されたローカルエリアネットワーク、インターネット、公衆交換電話網、ならびに/またはセルラーデータネットワーク(たとえば、CDMA、TDMA、GSM、PCS、3G、4G、LTE、5G、または任意の他のタイプのセルラーデータネットワーク)など、ネットワーク1005とのネットワークインターフェース接続を確立するため、マルチコアプロセッサアセンブリ1001に結合されたネットワークアクセスポート1003を含み得る。
【0087】
実装例について、以下の段落において説明する。以下の実装例のうちのいくつかについて例示的な方法に関して説明するが、さらなる例示的な実装形態は、以下のパラグラフにおいて説明する例示的な方法であって、例示的な方法の動作をプロセッサ実行可能命令が実行するように構成されるプロセッサを含む集積回路によって実施される例示的な方法、以下のパラグラフにおいて説明する例示的な方法であって、例示的な方法の機能を実行するための手段を含む集積回路によって実施される例示的な方法、および以下のパラグラフにおいて説明する例示的な方法であって、集積回路に例示的な方法の動作を実行させるように構成されるプロセッサ実行可能命令が記憶された非一時的プロセッサ可読記憶媒体として実装される例示的な方法を含んでもよい。
【0088】
例1。タイマ故障の検出および回復の方法であって、少なくとも第1のタイマ、第2のタイマ、および第3のタイマを有し、各々が独立したタイムベースを有する、複数のタイマを並列に実行するステップと、複数のタイマのうちの第1のタイマが故障しているかどうかを判定するステップと、第1のタイマが故障したと判定したことに応答して、第1のタイマを使用から除外するステップと、第1のタイマが、複数のタイマのうちの第2のタイマと独立したタイムベースの一貫した差を有するかどうかを判定するステップと、第1のタイマが第2のタイマと独立したタイムベースの一貫した差を有すると判定したことに応答して、第1のタイマを、時間調整して使用するように戻すステップとを含む方法。
【0089】
例2。第1のタイマが第1の動作タイマであり、第3のタイマがモニタタイマであり、方法が、モニタタイマを第2の動作タイマに変換するステップを含む、例1に記載の方法。
【0090】
例3。モニタタイマを第2の動作タイマに変換するステップが、タイムクリティカルなシステムのフォールトトレラント間隔内で行われる、例2に記載の方法。
【0091】
例4。第1のタイマが動作タイマであり、第1のタイマが第2のタイマと独立したタイムベースの一貫した差を有すると判定したことに応答して、第1のタイマを使用するように戻すステップが、動作タイマをモニタタイマとして使用するように戻すステップを含む、例1~3のいずれかに記載の方法。
【0092】
例5。第1のタイマがモニタタイマであり、第1のタイマが第2のタイマと独立したタイムベースの一貫した差を有すると判定したことに応答して、第1のタイマを使用するように戻すステップが、モニタタイマをモニタタイマとして使用するように戻すステップを含む、例1~4のいずれかに記載の方法。
【0093】
例6。第1のタイマが第2のタイマと独立したタイムベースの一貫した差を有すると判定したことに応答して、第2のタイマと独立したタイムベースの一貫した差を使用して、第1のタイマの独立したタイムベースを時間調整として調整するステップを含む、例1~5のいずれかに記載の方法。
【0094】
例7。第1のタイマが、複数のタイマのうちの第3のタイマと独立したタイムベースの一貫した差を有するかどうかを判定するステップと、第1のタイマが第3のタイマと独立したタイムベースの一貫した差を有すると判定したことに応答して、第1のタイマを、時間調整して使用するように戻すステップとを含む、例1~6のいずれかに記載の方法。
【0095】
様々な実施形態の動作を実行するためのプログラマブルプロセッサ上での実行のためのコンピュータプログラムコードまたは「プログラムコード」は、C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、Structured Query Language(たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語または様々な他のプログラミング言語で記述され得る。本出願で使用するコンピュータ可読記憶媒体上に記憶されたプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である(オブジェクトコードなどの)機械語コードを指し得る。
【0096】
上記の方法の説明およびプロセスフロー図は、例示的な例として提供されるにすぎず、様々な実施形態の動作が、提示された順序で実施されなければならないことを要求または暗示するものではない。当業者によって諒解されるように、上述の実施形態における動作の順序は、任意の順序で実施されてよい。「その後」、「次いで」、「次に」などの語は、動作の順序を限定するものではなく、これらの語は単に、方法の説明を通じて読者を導くために使用される。さらに、たとえば、冠詞"a"、"an"または"the"を使用する単数形での請求項要素へのいかなる言及も、要素を単数形に限定するものとして解釈されるべきではない。
【0097】
様々な実施形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズム動作は、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装されてもよい。ハードウェアおよびソフトウェアのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路および動作について、概してそれらの機能性に関して上記で説明してきた。そのような機能性がハードウェアそれともソフトウェアとして実装されるのかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装してよいが、そのような実装決定は、特許請求の範囲からの逸脱を引き起こすものとして解釈されるべきではない。
【0098】
本明細書で開示する実施形態に関して説明した様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲート論理もしくはトランジスタ論理、個別ハードウェアコンポーネント、または本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。汎用プロセッサはマイクロプロセッサであってよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。代替的に、いくつかの動作または方法は、所与の機能に固有の回路によって実行され得る。
【0099】
1つまたは複数の実施形態では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装されてよい。ソフトウェアにおいて実装される場合、機能は、1つまたは複数の命令またはコードとして、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体上に記憶されてもよい。本明細書で開示する方法またはアルゴリズムの動作は、非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体上に存在する場合があるプロセッサ実行可能ソフトウェアモジュールにおいて具現化されてもよい。非一時的コンピュータ可読記憶媒体または非一時的プロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされる場合がある任意の記憶媒体であってもよい。限定ではなく例として、そのような非一時的コンピュータ可読媒体またはプロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用される場合があり、かつコンピュータによってアクセスされる場合がある任意の他の媒体を含んでもよい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびBlu-ray(登録商標)ディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体および非一時的プロセッサ可読媒体の範囲内に含まれる。追加として、方法またはアルゴリズムの動作は、コンピュータプログラム製品の中に組み込まれてよい非一時的プロセッサ可読媒体および/または非一時的コンピュータ可読媒体上のコードおよび/または命令のうちの1つ、またはその任意の組合せもしくはセットとして存在してよい。
【0100】
開示する実施形態の前述の説明は、任意の当業者が特許請求の範囲を製作または使用することを可能にするために提供される。これらの実施形態への様々な修正が当業者には容易に明らかになり、本明細書において定義される一般原理は、特許請求の範囲から逸脱することなく他の実施形態および実装形態に適用され得る。したがって、本開示は、本明細書で説明した実施形態および実装形態に限定されることが意図されるものではなく、本明細書で開示した特許請求の範囲、および原理、ならびに新規の特徴と一致する最も広い範囲が与えられるべきである。
【符号の説明】
【0101】
100 コンピューティングデバイス
102 SoC
104 プロセッサ
106 メモリ
108 通信インターフェース
110 メモリインターフェース
112 通信コンポーネント
114 メモリ
116 アンテナ
120 周辺デバイスインターフェース
122 周辺デバイス
124 タイマ
200 タイマモジュール
202 タイマ
204 タイマ故障検出器
206 タイマ比較器
208 タイマ動作ステータスモジュール
210 タイマ機能ステータスモジュール
212 タイムベース調整器
300 独立冗長タイマシステム
302a タイマ
302b タイマ
302c タイマ
304a タイムスタンプ
304b タイムスタンプ
304c タイムスタンプ
400 独立冗長タイマシステム
402a タイマ
402b タイマ
402c タイマ
404a タイムスタンプ
404b タイムスタンプ
404c タイムスタンプ
500 方法
600 方法
700 方法
800 モバイルコンピューティングデバイス
802 プロセッサ
804 タッチスクリーンコントローラ
806 内部メモリ
808 無線信号トランシーバ
810 アンテナ
812 タッチスクリーンパネル
814 スピーカ
816 セルラーネットワークワイヤレスモデムチップ
818 周辺デバイス接続インターフェース
820 ハウジング
822 電源
824 物理ボタン
900 ラップトップコンピュータ
902 プロセッサ
908 アンテナ
912 揮発性メモリ
913 ディスクドライブ
914 フロッピーディスクドライブ
915 コンパクトディスク(CD)ドライブ
916 セルラー電話トランシーバ
917 タッチパッド
918 キーボード
919 ディスプレイ
1000 サーバ
1001 マルチコアプロセッサアセンブリ
1002 揮発性メモリ
1003 ネットワークアクセスポート
1004 ディスクドライブ
1005 ネットワーク
1006 デジタル多用途ディスク(DVD)ディスクドライブ