JP2008530696A - 電子デバイスにおいてイミュニティモードを有効に実施するシステム及び方法 - Google Patents

電子デバイスにおいてイミュニティモードを有効に実施するシステム及び方法 Download PDF

Info

Publication number
JP2008530696A
JP2008530696A JP2007555335A JP2007555335A JP2008530696A JP 2008530696 A JP2008530696 A JP 2008530696A JP 2007555335 A JP2007555335 A JP 2007555335A JP 2007555335 A JP2007555335 A JP 2007555335A JP 2008530696 A JP2008530696 A JP 2008530696A
Authority
JP
Japan
Prior art keywords
processor
immunity
module
electronic device
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007555335A
Other languages
English (en)
Other versions
JP4443611B2 (ja
Inventor
ヒルマン、ロバート、エー.
Original Assignee
マックスウェル テクノロジーズ, インク
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マックスウェル テクノロジーズ, インク filed Critical マックスウェル テクノロジーズ, インク
Publication of JP2008530696A publication Critical patent/JP2008530696A/ja
Application granted granted Critical
Publication of JP4443611B2 publication Critical patent/JP4443611B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storage Device Security (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)

Abstract

電子デバイスにおいて、イミュニティモードを有効に実施するシステム及び方法は、該電子デバイスのための処理タスクを実行するプロセッサモジュールを含む。該プロセッサモジュールは、該処理タスクを実行するための、プロセッサ状態及びプロセッサデータ等のプロセッサ情報を含む。また、該電子デバイスは、最も有利に確実な方法で電子情報を格納するための保護されたメモリも含む。その結果、イミュニティマネージャは、アイドル状態に入る該プロセッサモジュール等のイミュニティモードトリガイベントに応じて、保護処理手順を実行し、脆弱なプロセッサ情報の少なくとも一部を、該保護されたメモリに格納することができる。

Description

この発明は、一般に、電子デバイスを有効に実施する技術に関し、またより具体的には、電子デバイスにおいて、イミュニティモードを有効に実施するシステム及び方法に関する。
電子デバイスを有効に実施する技術を開発することは、最新の電子システムの設計者及び製造者にとっては考慮すべき事柄である。しかし、電子システムを有効に実施することは、システム設計者に対して深刻な課題を生む可能性がある。例えば、高められたシステム機能及び性能に対して強まった要求は、さらなるシステム処理能力を必要とし、また、追加的なハードウェアリソースを要する可能性がある。処理要件またはハードウェア要件の増加もまた、増加した製造コスト及び作動上の効率の悪さによる、付随する不利な経済的影響をもたらす可能性がある。
さらに、様々な進化した動作を実行する強化されたシステム能力は、システムユーザに対して追加的な利点を提供する可能性があるが、様々なシステムコンポーネントの制御及び管理に対して高度な要求を出す可能性もある。例えば、危険な作動環境で機能する電子システムは、システム異常の有害な影響のため、有効かつロバストな実施から恩恵を受けることができる。
特定の作動環境では、電子デバイスが極度に信頼性のあることを必要とする。一つのこのような環境は、宇宙環境である。宇宙、例えば、地球軌道に配置される可能性のある電子デバイスは、典型的には、定期的なメンテナンスが不可能であり、またそのため、宇宙船の寿命の間は、機能することを保証しなければならない。従って、宇宙船内または宇宙船上に設けられたコンピュータ等の電子デバイスは、好ましくは、外部または内部の故障に対する許容度に関し信頼性が高く、ロバストでなければならない。
さらに、宇宙環境における物体は、一部の機器コンポーネントに害を及ぼす可能性がある様々な種類の放射に曝される。例えば、単一の放射元素は、電子デバイスのプロセッサ、メモリ、または、他のコンポーネントのいずれかにおいて、情報の乱れ(シングルイベントアップセット(single−event upset;SEU)と呼ばれる)を引き起こす可能性がある。SEUは、典型的には、該電子デバイス内の1つ以上のデジタルビットの状態を“反転”または変化させ得る。宇宙環境内のコンピュータは、好ましくは、このようなシングルイベントアップセットに対してロバストでなければならない。
システムリソースに対する高まる要求、かなり増加したデータの大きさ、および特定の重要なまたは危険な環境により、電子デバイスを有効に実施する新たな技術を開発することが、関連する電子技術に対する重要問題であることは明白である。従って、上記の全ての理由により、電子デバイスを実装して利用する有効なシステムを開発することは、最新の電子システムの設計者、製造者及びユーザにとって依然として考慮すべき事柄である。
本発明によれば、電子デバイスにおいて、イミュニティモードを有効に実施するシステム及び方法が開示される。本発明の一実施形態によれば、該電子デバイスのプロセッサモジュールは当初、通常の処理モードで機能する。また、該プロセッサモジュールは、イミュニティモードトリガが、何らかの適当な技術を用いることによって発生したか否かを監視する。
上記のイミュニティモードトリガは、何らかの所望の発生、状態またはイベントに応答して生成され得る。例えば、イミュニティモードトリガは、アイドル状態に入るプロセッサモジュールに起因する。別法として、該イミュニティモードトリガは、ある所定の状況が発生した場合、例えば、該電子デバイスの非常に危険な作動環境またはとても敏感な使用の検出時に生成することができる。加えて、特定の実施形態においては、該イミュニティモードトリガは、該電子デバイスのシステムユーザによって積極的に生成することもできる。
イミュニティモードトリガが検出されない場合は、該プロセッサモジュールは、通常の処理を続けてもよい。しかし、イミュニティモードトリガが検出された場合には、本発明に従って、該プロセッサモジュールは、イミュニティマネージャを用いてイミュニティモードに入ることができ、その間、1つあるいは複数の保護処理手順を実行して、脆弱なプロセッサ状態及びプロセッサデータの一部または全てを該プロセッサモジュールから、保護されたメモリへ一時的にフラッシュすることができる。
該イミュニティマネージャは、何らかの有効な方法を用いることにより、現在のイミュニティモードにとって適切なレイテンシレベルを決定する。例えば、特定の実施形態においては、特定の種類のイミュニティモードを所定の対応するレイテンシレベルと関連付けることができる。別法として、レイテンシレベルは、イミュニティモードトリガの発生時の現在の状態によって動的に決めることができる。
典型的には、所与のレイテンシレベルは、特定のイミュニティモードの間に所望される保護のレベルに相当し、最大限の保護を実行できる高いレイテンシレベルと、最小限の保護を実行できる低いレイテンシレベルとを備えている。加えて、所与のレイテンシレベルは、特定のイミュニティモードの間に許容可能な処理混乱の量にも相関し、最大限の混乱を有する高いレイテンシレベルと、最小限の混乱を有する低いレイテンシレベルとを備えている。
該イミュニティマネージャが、低いレイテンシレベルが現在の保護処理手順にとって適切であると判断した場合には、該イミュニティマネージャは、最低限のフラッシュ処理手順を調整して、最小限の量のプロセッサ情報を該プロセッサモジュールから保護されたメモリへ転送する。この結果、該プロセッサモジュールは、通常の処理モードで様々な処理タスクを続けることができ、また、必要に応じて、保護された情報を該保護されたメモリから取り出すことができる。
該イミュニティマネージャが、現在の保護処理手順にとって、中間のレイテンシが適切であると判断した場合には、該イミュニティマネージャは、部分的フラッシュ処理手順を調整して、中程度の量のプロセッサ情報を該プロセッサモジュールから該保護されたメモリへ転送する。
この結果、該プロセッサモジュールは、通常の処理モードで様々な処理タスクを続けることができ、また、必要に応じて、該保護されたメモリから保護された情報を取り出すことができる。
該イミュニティマネージャが、現在の保護処理手順にとって高いレイテンシレベルが適切であると判断した場合、該イミュニティマネージャは、完全な保護処理手順を調整して、全てのプロセッサ情報を該プロセッサモジュールから該保護されたメモリへ転送する。例えば、該イミュニティマネージャは当初、全てのプロセッサ状態及びプロセッサデータの完全なフラッシュ処理手順を該プロセッサモジュールから、該保護されたメモリに対して調整する。次に、該電子デバイスは、該プロセッサモジュールのプロセッサをリセットする。この結果、本発明によれば、該プロセッサモジュールは、ポーズモードに入ることができ、その間、処理タスクは実行されず、保護された全てのプロセッサ情報(プロセッサ状態及びプロセッサデータ)は、該保護されたメモリ内で安全な状態のままである。
該イミュニティマネージャは、リスタートトリガイベントが、何らかの有効な手段を用いることによって発生したか否かを監視する。上記のリスタートトリガイベントは、何らかの所望の発生、状態またはイベントに応じて生成することができる。例えば、リスタートトリガイベントは、1つあるいは複数の新たな実行されていないタスクが処理を要求するため、該プロセッサモジュールがアイドル状態をやめる場合に生じる可能性がある。別法として、該リスタートトリガイベントは、特定の所定の危険な作動状態がもはや存在しない場合に生じ得る。加えて、特定の実施形態においては、該リスタートトリガイベントは、該電子デバイスのシステムユーザによって積極的に生成することもできる。
該イミュニティマネージャが、リスタートトリガイベントを検出できなかった場合には、該プロセッサモジュールは、上記のポーズモードを維持してもよい。しかし、該イミュニティマネージャがリスタートトリガイベントを検出した場合には、該イミュニティマネージャはプロセッサ回復処理手順を調整し、その間、該保護されたプロセッサ情報(例えば、プロセッサ状態及びプロセッサデータ)が、該保護されたメモリから該プロセッサモジュールへ戻されて、通常の処理機能を再開する。従って、少なくとも上記の理由により、本発明は、電子デバイスにおいてイミュニティモードを有効に実施する改善されたシステム及び方法を実現できる。
本発明は、電子デバイスを実施する際の改良に関する。以下の説明は、当業者が本発明を実行しかつ利用できるようにするためにあり、特許出願及びその要件との関連で記載されている。当業者には、開示された実施形態に対する様々な変形例が容易にはっきりと理解できるであろうし、また、本明細書における包括的原理を他の実施形態に適用してもよい。従って、本発明は、説明した実施形態に限定することを意図しておらず、本明細書に記載した原理及び特徴に一致する最も広い範囲を認めるべきである。
本発明は、電子デバイスにおいてイミュニティモードを有効に実施するシステム及び方法として記載されており、該電子デバイスのために処理タスクを実行するプロセッサモジュールを含む。該プロセッサモジュールは、処理タスクを実行するためのプロセッサ状態及びプロセッサデータ等のプロセッサ情報を含む。また、該電子デバイスは、最適な安全な方法で電子情報を格納するための保護されたメモリも含む。その結果、イミュニティマネージャは、アイドル状態に入るプロセッサモジュール等のイミュニティモードトリガイベントに応じて保護処理手順を実行し、脆弱なプロセッサ情報の少なくとも一部を該保護されたメモリに格納することができる。
次に、図1について説明すると、本発明の一実施形態による電子デバイス112のブロック図が示されている。図1の実施形態において、電子デバイス112は、限定するものではないが、プロセッサモジュール116と、コントローラ120と、デバイスメモリ128とを含むことができる。代替的実施形態においては、電子デバイス112は、図1の実施形態に関して議論したコンポーネント及び構成のいくつかに加えて、またはそれらに代わるコンポーネント及び構成を用いて実施することができる。
図1の実施形態において、プロセッサモジュール116は、電子デバイス112の動作を制御及び管理するためのソフトウェア命令を実行する何らかの適当で互換性のあるプロセッサデバイスを含むように実施することができる。プロセッサモジュール116については、図2と共に以下でさらに議論する。図1の実施形態において、電子デバイス112は、プロセッサモジュール116及びデバイスメモリ128の両方のための通信を双方向で調整するためにコントローラ120を用いることができる。また、電子デバイス112は、入力/出力(I/O)バス140を介して様々な種類の外部エンティティ136と通信するために、コントローラ120を用いることもできる。コントローラ120については、図3と共に以下でさらに議論する。図1の実施形態において、デバイスメモリ128は、限定するものではないが、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、および様々な種類の揮発性及び不揮発性メモリを含む所望のストレージデバイスのいずれかの組合せを含むように実施することができる。図1の実施形態において、デバイスメモリ128は、様々な種類の情報及びデータのロバストで信頼できる記憶を最も有利に実行できるような方法で実施する保護されたメモリを含むことができる。
デバイスメモリ128については、図4と共に以下でさらに議論する。
特定の実施形態においては、電子デバイス112は、特別で厳しい動作環境で用いることもできる。例えば、電子デバイス112は、宇宙動作環境中で、宇宙船または他の物体の一部として用いることができる。宇宙動作環境中の市販のプロセッサは、宇宙放射線または他の要因によるビットアップセット脆弱性を経験する可能性がある。この脆弱性は、プロセッサ内のデジタルビットが放射アップセットの影響を受けやすい時間の割合として定義することができる、脆弱性のデューティサイクルを含む様々な要因に基づいている。従来のシステムにおいては、(一定期間、アクティブな処理タスクがない状態で)オペレーティングシステムがアイドル状態である場合、該プロセッサはそれでも、現在のプロセッサの要素、状態及びデータのほとんどを維持し、それに伴って、これらの要素、状態及びデータは、処理演算が現在、実行されていない場合でも、アップセットの影響を受けやすくなる。
本発明によれば、電子デバイス112は、イミュニティモードに有利に入ることができ、その間、保護処理手順が実行されて、プロセッサモジュール116の脆弱なプロセッサ状態及びプロセッサデータの一部または全てが、保護された、より免疫のあるメモリデバイス128に格納され、この時プロセッサモジュール116はアイドル状態である。一つの実施例において、プロセッサモジュール116がアイドル状態である場合、該保護処理手順を実行して、プロセッサモジュール116のプロセッサ状態及びプロセッサデータを、デバイスメモリ128のロバストで保護された部分にフラッシュすることができる。
イミュニティモードの一実施形態において、電子デバイス112はその後、プロセッサモジュール116をリセット状態に保持してもよく、その結果この期間中、該プロセッサ状態及びプロセッサデータは、アップセットまたは他の破損の影響を受けない。このため、所定のリスタートトリガイベントが生じた場合に(さらなる処理計算等のような必要性)、該保護されたプロセッサ状態及びプロセッサデータを回復することができ、またプロセッサモジュール116は、通常モードで処理を再開することができる。
上記の技術は、いくつかの利点をもたらす。プロセッサモジュール116はリセットに保持され、かつ処理は何も実行されていないため、電子デバイス112は、より低消費電力特性を示すことができる。しかし、特定の実施形態においては、プロセッサモジュール116は、プロセッサモジュール116をリセット状態に保持する低電力消費を有する低電力モードにすることができる。加えて、プロセッサ状態及びプロセッサデータは、デバイスメモリ128内に安全に保護されているため、プロセッサモジュール116は、該プロセッサデータ及びプロセッサレジスタにおけるビットエラーの可能性が著しく低い。
特定の実施形態において、上記の技術のサブセットを代替的に実施してもよい。例えば、特定の所定の状況下で、プロセッサモジュール116のプロセッサキャッシュメモリからのキャッシュに格納されたデータのみをデバイスメモリ128にフラッシュすることができ、その後、プロセッサモジュール116は、通常に機能し続けると共に、必要に応じて、デバイスメモリ128からローカルプロセッサキャッシュにプロセッサデータを取り出すことができる。プロセッサキャッシュは、典型的にはビットアップセットの顕著な場所であるため、この技術はアップセット率を有利に低下させることができ、かつプロセッサモジュール116を大幅にロバストかつ信頼できるものとすることができる。
従って、図1の実施形態において、電子デバイス112は、プロセッサモジュール116に対してプロセッサ状態及びプロセッサデータをフラッシュし、リセットし、その後、回復することができる。しかし、本発明の一実施形態によれば、電子デバイス112は、上述したリセットの後、追加的な処理タスクを要求され、または他の所定のリスタートトリガイベントが発生するまで、ポーズモードに入っていてもよい。図1の電子デバイス112の実施及び利用については、図2〜図7と共に以下でさらに議論する。
次に、図2について説明すると、本発明による図1のプロセッサモジュール116の一実施形態の場合のブロック図が示されている。図2の実施形態において、プロセッサモジュール116は、キャッシュA 212(a)を有するプロセッサA 116(a)と、キャッシュB 212(b)を有するプロセッサB 116(b)と、キャッシュC 212(c)を有するプロセッサC 116(c)とを含むことができる。
代替的実施形態においては、プロセッサモジュール116は、図2の実施形態と共に議論したコンポーネント及び構成のいくつかに加えて、またはそれらに代わるコンポーネント及び構成を用いて容易に実施することができる。例えば、他の実施形態においては、プロセッサモジュール116は、対応するキャッシュ212を有する所望数のプロセッサ116と共に実施することができる。特定の実施形態においてプロセッサモジュール116は、付随するキャッシュ212を有する単一のプロセッサ116と共に実施することができる。
図2の実施形態において、プロセッサモジュール116は、三重の重複実施を用いて実施することができ、プロセッサ116(a〜c)は、正確に同時に同一のプログラム命令を実行することにより、ロックステップ同期で作動する。そのため各プロセッサ116は、同一の出力信号及び他の作動パラメータを、それぞれの出力パス124(a〜c)に生成することができる。いずれかのプロセッサ116(a〜c)の出力信号が他の2つのプロセッサの出力信号と異なる場合には、電子デバイス112は、該異なっているプロセッサを停止し、再同期処理手順を実行して、他の2つのプロセッサと同期して該停止されたプロセッサをリスタートさせることができる。
プロセッサ116(a〜c)はそれぞれ、典型的には、本明細書においてプロセッサ状態と呼ぶ相当量のデジタル情報を含む。加えて、各プロセッサ116(a〜c)は、典型的には本明細書においてプロセッサデータと呼ぶデジタル情報を含む対応するプロセッサキャッシュ212と関連付けることができる。図1と共に上述したイミュニティモード及び保護処理手順のため、特定の実施形態において、プロセッサ116(a〜c)は、一般的に入手可能なプロセッサデバイスを用いて経済的に実施することができる。
特定の実施形態においては、メモリにフラッシュされた後、プロセッサ状態の一部のみが回復される。プロセッサモジュール116が作動する際、該プロセッサモジュールは、該キャッシュのリロードを開始する。プロセッサモジュール116は、より長い時間の割合だけ、イミュニティモードに入っていることができるように、比較的高速(例えば、800MHz)で作動して、より迅速にタスクを実行することができる。プロセッサモジュール116の動作については、図6及び図7と共に以下でさらに議論する。
次に、図3について説明すると、本発明による図1のコントローラ120の一実施形態の場合のブロック図が示されている。図3の実施形態において、コントローラ120は、限定するものではないが、イミュニティモジュール310と、投票モジュール312と、エラー検出器316とを含む。代替的実施形態においては、コントローラ120は、図3の実施形態と共に議論したコンポーネントのいくつかに加えて、またはそれらに代わって、他のコンポーネントを容易に含むことができる。
図3の実施形態において、コントローラ120は、イミュニティモジュール310を用いて、特定の転送機能及び図1と共に上述したイミュニティモード及び保護処理手順のための他のタスクを調整することができる。図3の実施形態において、コントローラ120は、投票モジュール312を用いて、図2に関して上述した3つのプロセッサ116(a〜c)からの出力信号を解析することができる。この結果、投票モジュール312は、プロセッサモジュール116からの3つの出力信号から過半数信号を決定することができ、また、該過半数信号を、パス132を介してデバイスメモリ128に格納することができる。
図3の実施形態において、コントローラ120は、エラー検出器316を用いて、その出力信号が上記の過半数信号と同じではない非同期プロセッサを識別することができる。該非同期プロセッサの出力信号が他の2つのプロセッサの出力信号と異なる場合には、電子デバイス112は、該非同期プロセッサを停止することができ、また、再同期処理手順を実行して、該他の2つのプロセッサの過半数信号からの回復されたプロセッサ状態及びプロセッサデータを用いて、該停止されたプロセッサをリスタートさせることができる。
コントローラ120の利用は、図6及び図7と共に以下でさらに議論する。
次に、図4について説明すると、本発明による図1のデバイスメモリ128の一実施形態の場合のブロック図が示されている。図4の実施形態において、デバイスメモリ128は、限定するものではないが、デバイスソフトウェア412と、イミュニティマネージャ416と、保護されたメモリ420と、エラー訂正モジュール424とを含む。代替的実施形態においては、デバイスメモリ128は、図4の実施形態と共に議論したコンポーネントのいくつかに加えて、またはそれらに代わって、他のコンポーネントを容易に含むことができる。
図4の実施形態において、デバイスソフトウェア412は、電子デバイス112のための様々な機能及び動作を実行するために、プロセッサモジュール116(図1)によって実行されるプログラム命令を含むことができる。デバイスソフトウェア412の特定の性質及び機能性は、典型的には、対応する電子デバイス112の特定の型式及び特定の機能等の要因により変化する。図4の実施形態において、デバイスソフトウェア412は、電子デバイス112の低レベルの機能性を制御及び調整するオペレーティングシステムを含むことができる。
本発明の特定の実施形態によれば、電子デバイス112は、有利にはイミュニティマネージャ416を用いて、図1と共に上述したように、イミュニティモード及び対応する保護処理手順を調整及び管理することができる。図4の実施形態において、保護されたメモリ420は、電子デバイス112のための様々な種類の情報及びデータのロバストで安全な格納を最適に実行できるように、何らかの有効かつ適切な方法で実施することができる。例えば、保護されたメモリ420は、宇宙放射線の影響によるデータ破損及びデータアップセットに対する高レベルの信頼性および安全性を提供する向上されたデザイン及び製造技術を利用することにより実施することができる。
加えて、保護されたメモリ420に格納された情報は、保護されたメモリ420から取り出された全てのデータ及び他の情報が破損せず、エラーがないことを実現する何らかの有効な技術を利用することにより、エラー訂正モジュール424によって処理することができる。エラー訂正モジュール424は、限定するものではないが、様々な種類のリード・ソロモン誤り訂正符号処理手順を含む何らかの所望のエラー訂正処理手順を実行するように実施することができる。イミュニティモード及び対応する保護処理手順中の保護されたメモリ420の利用については、図6及び図7と共に以下でさらに議論する。
次に、図5について説明すると、本発明の実施形態による図1のプロセッサモジュール116の処理タスク510の場合のブロック図が示されている。図5の実施例は、例示であり、代替的実施形態においては、処理タスク510は、図5の実施形態と共に議論したコンポーネント及び構成のいくつかに加えて、または、それらの代わりに、コンポーネント及び構成を用いて容易に実施することができる。
図5の実施形態において、処理タスク510は、各々が、対応する優先レベル514(a)〜514(c)を有する一連の通常タスク512(a)〜512(c)を含む。図5の実施形態において、処理タスク510は、図1と共に上述したイミュニティモード及び対応する保護処理手順に相当する保護タスク516も含む。図5の実施形態において、保護タスク516は、通常タスク512のための他の優先レベル514のいずれよりも低いレベルになるように予め設定されている最低の優先レベル520と関連付けられている。
特定の実施形態においては、処理モジュール116は、より高い優先レベルをより低い優先レベルの前に実行するようにして、それぞれの優先レベルに従って処理タスク510を実行する。そのため、図5の実施形態において、全てのより高い優先度のタスク512(a)〜512(c)が実行された場合、プロセッサモジュール116は、アイドル状態になるように規定することができる。
この結果、プロセッサモジュール116は、本発明に従って、イミュニティモードに入ることができ、また、適切な保護処理手順を実行して、プロセッサモジュール116からのプロセッサ状態及びプロセッサデータを保護されたメモリ420にフラッシュするために保護タスク516を実行することができる。特定の実施形態においては、プロセッサ状態の部分的フラッシュを実行してもよい。
次に図6について説明すると、本発明の一実施形態による、イミュニティモードを実施する方法ステップのフローチャートが示されている。図6の実施例は、例示であり、代替的実施形態においては、本発明は、図6の実施形態と共に議論したステップ及びシーケンスのいくつか以外のステップ及びシーケンスを容易に用いることができる。
図6の実施形態においては、ステップ612において、電子デバイス112のプロセッサモジュール116は当初、通常処理モードで機能する。ステップ616において、プロセッサモジュール116は、何らかの適当な技術を利用することにより、イミュニティモードトリガが生じたか否かを判断する。上記のイミュニティモードトリガは、何らかの所望の発生、状態またはイベントに応答して生成することができる。例えば、イミュニティモードトリガは、図5と共に上述したように、アイドル状態に入るプロセッサモジュール116によって生じる。別法として、該イミュニティモードトリガは、非常に危険な作動環境の検知または電子デバイス112の高敏感使用等の特定の所定の状況が発生した場合に生じ得る。加えて、特定の実施形態においては、該イミュニティモードトリガは、電子デバイス112のシステムユーザによって積極的に生成することもできる。
ステップ616において、イミュニティモードトリガが検出されない場合には、図6のプロセスは、ステップ612に戻って、通常処理を続けることができる。しかし、イミュニティモードトリガが検出された場合には、本発明に従って、プロセッサモジュール116は、イミュニティマネージャ416(図4)を用いてイミュニティモードを調整し、その間、保護処理手順を実行して、プロセッサモジュール116からの脆弱なプロセッサ状態及びプロセッサデータの一部あるいは全部を保護されたメモリ420(図4)に一時的にフラッシュすることができる。
ステップ620において、イミュニティマネージャ416は、何らかの有効な技術を利用することにより、現在のイミュニティモードのための適切なレイテンシレベルを決定する。
例えば、特定の実施形態において、特定の種類のイミュニティモードは、予め設定された対応するレイテンシレベルに関連付けることができる。別法として、レイテンシレベルは、該イミュニティモードトリガの発生時の現在の状況によって、動的に決めてもよい。
図6の実施形態において、所与のレイテンシレベルは、典型的には、最大限の保護を実行できる高いレイテンシレベルと、最小限の保護を実行できる低いレイテンシレベルとを有する特定のイミュニティモード中に所望される保護のレベルに相当する。加えて、所与のレイテンシレベルは、最大限の混乱を有する高いレイテンシレベルと、最小限の混乱を有する低いレイテンシレベルとを有する特定のイミュニティモード中に許容可能な混乱の処理量にも関連する。
図6の実施形態において、イミュニティマネージャ416が、現在の保護処理手順にとって、低いレイテンシレベルが適切であると判断した場合には、ステップ624において、イミュニティマネージャ416は、最小限のフラッシュ処理手順を調整して、最小限の量のプロセッサ情報をプロセッサモジュール116から保護されたメモリ420へ転送する。この結果、図6のプロセスは、ステップ612に戻ることができ、この場合、プロセッサモジュール116は、通常処理を続けることができ、また必要に応じて、保護されたプロセッサ情報を保護されたメモリ420から取り出すことができる。
図6の実施形態において、イミュニティマネージャ416が、現在の保護処理手順にとって、中程度のレイテンシレベルが適切であると判断した場合には、ステップ628において、イミュニティマネージャ416は、部分的フラッシュ処理手順を調整して、中程度の量の情報をプロセッサモジュール116から保護されたメモリ420へ転送する。この結果、図6のプロセスはステップ612に戻ることができ、この場合、プロセッサモジュール116は、通常処理を続けることができ、また必要に応じて、保護されたプロセッサ情報を保護されたメモリ420から取り出すことができる。
図6の実施形態において、イミュニティマネージャ416が、現在の保護処理手順にとって、高いレイテンシレベルが適切であると判断した場合には、ステップ632において、イミュニティマネージャ416は完全な保護処理手順を調整して、全ての情報をプロセッサモジュール116から保護されたメモリ420へ転送する。この完全な保護処理手順を実行する一つの実施形態については、図7と共に以下で議論する。該完全な保護処理手順に続いて、図6のプロセスはステップ612に戻ることができ、この場合、プロセッサモジュール116は通常の処理モードで処理を再開することができる。従って、少なくとも上記の理由により、本発明は、電子デバイスにおいてイミュニティモードを有効に実施する改善されたシステム及び方法を実現できる。
次に、図7について説明すると、本発明の一実施形態による、完全な保護処理手順を実行する方法ステップのフローチャートが示されている。図7に関して開示されたプロセス及び方法は、図6の実施形態のステップ632で説明した完全な保護処理手順を実行する一実施形態に相当する。図7の実施例は例示のために示されており、代替的実施形態においては、本発明は、図7の実施形態に関して議論したステップ及びシーケンスのいくつか以外のステップ及びシーケンスを容易に用いることができる。
図7の実施形態においては、ステップ712において、イミュニティマネージャ416は完全なフラッシュ処理手順を調整して、全てのプロセッサ状態及びプロセッサデータをプロセッサモジュール116から保護されたメモリ420へ転送する。この結果、ステップ716において、電子デバイス112は、プロセッサモジュール116のプロセッサをリセットする。ステップ720において、本発明に従って、プロセッサモジュール116はポーズモードに入ることができ、その間、処理タスクは全く実行されず、また、全ての保護されたプロセッサ情報(プロセッサ状態及びプロセッサデータ)は、保護されたメモリ420において安全なままである。特定の実施形態において、プロセッサモジュール116は、イミュニティモードの間、電力を節約するために電源を切ってもよく、また、追加的な処理が必要になったときに電源を入れ戻してもよい。
ステップ724において、イミュニティマネージャ416は、何らかの有効な手段を用いることによって、リスタートトリガイベントが生じたか否かを判断する。このリスタートトリガイベントは、何らかの所望の発生、状態またはイベントに応答して生成することができる。例えば、リスタートトリガイベントは、図5に関して上述したように、1つあるいは複数の新たな実行されていないタスクが処理を要求するため、プロセッサモジュール116がアイドル状態から出た場合に生じ得る。別法として、リスタートトリガイベントは、特定の所定の状況がもはや存在しない場合に生じ得る。加えて、特定の実施形態においては、該リスタートトリガイベントは、電子デバイス112のシステムユーザによって積極的に生成することもできる。
ステップ724において、イミュニティマネージャ416が、リスタートトリガイベントを検出できなかった場合には、図7のプロセスは、ステップ720のポーズモードのままでいることができる。しかし、イミュニティマネージャ416がリスタートトリガイベントを検出した場合には、ステップ728において、イミュニティマネージャ416は、プロセッサ回復処理手順を調整して、その間、保護されたプロセッサ情報(例えば、プロセッサ状態及びプロセッサデータ)は、保護されたメモリ420からプロセッサモジュール116へ戻され、通常の処理機能を再開する。この結果、図7の完全な保護処理手順を終了することができる。
本発明を特定の実施形態を参照して説明してきた。当業者には、この開示を踏まえて、他の実施形態をはっきりと理解できるであろう。例えば、本発明は、上記の実施形態で説明したもの以外の構成及び方法を用いて、容易に実施することができる。また、本発明は、上述したもの以外のシステムを共に効果的に用いることができる。従って、開示した実施形態に対するこれら及び他の変形例は、本発明によってカバーされることが意図されており、本発明は、添付請求項によってのみ限定される。
本発明の一実施形態による電子デバイスのブロック図である。 本発明による図1のプロセッサモジュールの一実施形態の場合のブロック図である。 本発明による図1のコントローラの一実施形態の場合のブロック図である。 本発明による図1のデバイスメモリの一実施形態の場合のブロック図である。 本発明による処理タスクの一実施形態の場合のブロック図である。 本発明の一実施形態による、イミュニティモードを実施する方法ステップのフローチャートである。 本発明の一実施形態による、完全な保護処理手順を実行する方法ステップのフローチャートである。

Claims (20)

  1. 電子デバイスにおいてイミュニティモードを実施するシステムであって、
    前記電子デバイスの処理タスクを実行し、前記処理タスクを実行するためのプロセッサ情報を含むプロセッサモジュールと、
    前記電子デバイスに結合されており、前記プロセッサモジュール内に格納された場合よりもより安全であるように電子情報を格納する保護されたメモリと、
    イミュニティモードトリガイベントに応答して、1つあるいは複数の保護処理手順を実行して、前記プロセッサ情報の少なくとも一部を前記保護されたメモリに格納するイミュニティマネージャと、
    を備えるシステム。
  2. 前記電子デバイスは、最適なパフォーマンス信頼特性を必要とする宇宙作動環境で実施される、請求項1に記載のシステム。
  3. 前記プロセッサ情報は、周囲の宇宙放射線によるシングルイベントアップセットに対して脆弱であり、前記シングルイベントアップセットは、前記プロセッサ情報が前記保護されたメモリに格納されていない場合は常に前記プロセッサ情報における1つあるいは複数のデジタルビットを破損する、請求項1に記載のシステム。
  4. 前記プロセッサ情報は、プロセッサ状態、プロセッサデータ、および前記処理タスク及び前記電子デバイスのための関連する機能を実行するデバイスデータを含む、請求項1に記載のシステム。
  5. 前記保護されたメモリは、前記プロセッサ情報を格納するための高められた信頼性をもたらすように設計かつ製造され、前記保護されたメモリは、エラー訂正モジュールと共に作動して、前記プロセッサ情報が、前記保護されたメモリから取り出された場合に、より低い誤りの可能性を有することを実現する、請求項1に記載のシステム。
  6. 前記プロセッサモジュールは、前記イミュニティモードの前記1つあるいは複数の保護処理手順の間、前記プロセッサ情報を前記保護されたメモリに転送するコントローラに、前記プロセッサ情報を提供する、請求項1に記載のシステム。
  7. 前記イミュニティモードトリガイベントは、前記プロセッサモジュールのアイドル状態によって生成され、その間、前記プロセッサモジュールは、前記処理タスクの全ての現在のインスタンスの実行を完了している、請求項1に記載のシステム。
  8. 前記イミュニティマネージャは、前記処理タスクの全てが現時点で実行されている場合には常に、前記プロセッサモジュールのアイドル状態を検出して、前記1つあるいは複数の保護処理手順を実行し、前記イミュニティマネージャは、前記処理タスクのいずれかの実行されていないもののより高い優先レベルを、保護タスクの最低の優先レベルと比較することにより、前記プロセッサモジュールの前記アイドル状態を検出する、請求項1に記載のシステム。
  9. 前記イミュニティモードトリガは、前記電子デバイスに対する所定の危険な作動のうちの少なくとも1つの発生を検出することにより生成される、請求項1に記載のシステム。
  10. 前記プロセッサモジュールは、正確な同期で作動してそれぞれのプロセッサ出力信号を生成する複数の余分のプロセッサデバイスを含み、前記それぞれのプロセッサ出力信号は、投票モジュールによって比較されて、過半数出力信号が生成され、前記電子デバイスは、前記それぞれのプロセッサ出力信号が前記過半数出力信号と異なる場合にはいつでも前記余分のプロセッサデバイスのための再同期処理手順を開始するエラー検出モジュールを含む、請求項1に記載のシステム。
  11. 前記イミュニティモジュールは、前記イミュニティモードのためのレイテンシレベルを決定し、前記レイテンシレベルは、前記イミュニティモード中に所望される保護レベルに相当し、前記レイテンシレベルは、また、前記イミュニティモード中に許容可能な処理混乱の量に相当する、請求項1に記載のシステム。
  12. 前記イミュニティモジュールは、低いレイテンシレベルを選択して、最小限の量の前記プロセッサ情報のみを前記保護されたメモリに格納し、前記プロセッサモジュールは、前記処理タスクを実行し続け、前記プロセッサモジュールは、必要に応じて、前記保護されたメモリから前記最小限の量のプロセッサ情報を取り出す、請求項11に記載のシステム。
  13. 前記最小限の量の前記プロセッサ情報は、前記プロセッサモジュールのプロセッサキャッシュからのプロセッサデータを含む、請求項12に記載のシステム。
  14. 前記イミュニティモジュールは、中程度のレイテンシレベルを選択して、中程度の量の前記プロセッサ情報を前記保護されたメモリに格納し、前記プロセッサモジュールは、前記処理タスクを実行し続け、前記プロセッサモジュールは、必要に応じて、前記中程度の量の前記プロセッサ情報を前記保護されたメモリから取り出す、請求項11に記載のシステム。
  15. 前記イミュニティモジュールは、前記イミュニティモードのための高いレイテンシレベルを選択し、そして、前記イミュニティモジュールは、応答して前記プロセッサ情報の全てのための完全な保護処理手順を調整する、請求項11に記載のシステム。
  16. 前記イミュニティマネージャは、前記イミュニティモードトリガイベントに応答して、前記保護されたメモリに対する前記プロセッサ情報の全ての完全なフラッシュを実行し、そして、前記電子デバイスは、前記プロセッサモジュールをリセット状態にする、請求項1に記載のシステム。
  17. 前記電子デバイスは、前記プロセッサモジュールをポーズモードに保持し、その間、前記プロセッサ情報は、前記保護されたメモリに安全に格納されている、請求項16に記載のシステム。
  18. 前記イミュニティモジュールは、前記処理モジュールの前記イミュニティモードを終了させるためにリスタートトリガイベントを検出し、前記リスタートトリガイベントは、前記処理タスクのうちの新たな実行されていないものを検出することにより生成され、そのため前記プロセッサモジュールは、もはやアイドル状態ではなくなり、前記保護されたメモリは、通常の処理モードを再開して前記処理タスクを実行するために前記プロセッサ情報を前記プロセッサモジュールに戻す、請求項17に記載のシステム。
  19. 前記プロセッサモジュールは、前記イミュニティモードトリガイベントの後、電源が切られ、前記プロセッサモジュールは、追加的な処理タスクが必要になったときに、電源を入れ戻す、請求項1に記載のシステム。
  20. 電子デバイスにおいてイミュニティモードを実施する方法であって、
    処理タスクを実行するためのプロセッサ情報を含むプロセッサモジュールを用いて、前記電子デバイスの前記処理タスクを実行すること、
    前記電子デバイスに結合されており、前記プロセッサモジュールに格納された場合よりもより安全であるように電子情報を格納する、保護されたメモリを設けること、
    イミュニティモードトリガイベントに応答して、イミュニティマネージャを用いて1つあるいは複数の保護処理手順を実行して、前記プロセッサ情報の少なくとも一部を前記保護されたメモリに格納すること、
    を備える方法。
JP2007555335A 2005-02-15 2006-02-14 電子デバイスにおいてイミュニティモードを有効に実施するシステム及び方法 Expired - Fee Related JP4443611B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/058,136 US7437599B2 (en) 2005-02-15 2005-02-15 System and method for effectively implementing an immunity mode in an electronic device
PCT/US2006/005131 WO2006088843A1 (en) 2005-02-15 2006-02-14 System and method for effectively implementing an immunity mode in an electronic device

Publications (2)

Publication Number Publication Date
JP2008530696A true JP2008530696A (ja) 2008-08-07
JP4443611B2 JP4443611B2 (ja) 2010-03-31

Family

ID=36817026

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007555335A Expired - Fee Related JP4443611B2 (ja) 2005-02-15 2006-02-14 電子デバイスにおいてイミュニティモードを有効に実施するシステム及び方法

Country Status (5)

Country Link
US (1) US7437599B2 (ja)
EP (1) EP1851639B1 (ja)
JP (1) JP4443611B2 (ja)
CN (1) CN101120327B (ja)
WO (1) WO2006088843A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7496786B2 (en) * 2006-01-10 2009-02-24 Stratus Technologies Bermuda Ltd. Systems and methods for maintaining lock step operation
US8271834B2 (en) * 2008-12-15 2012-09-18 International Business Machines Corporation Method and system for providing immunity to computers
JP2011237950A (ja) * 2010-05-07 2011-11-24 Fujitsu Ltd 情報処理装置、バックアップサーバ、バックアッププログラム、バックアップ方法及びバックアップシステム
TW201237630A (en) * 2011-03-01 2012-09-16 Wistron Corp Method and computer system for processing data in a memory
JP5699057B2 (ja) * 2011-08-24 2015-04-08 株式会社日立製作所 プログラマブルデバイス、プログラマブルデバイスのリコンフィグ方法および電子デバイス
US9104639B2 (en) 2012-05-01 2015-08-11 SEAKR Engineering, Inc. Distributed mesh-based memory and computing architecture
CN105630732B (zh) * 2015-12-17 2018-09-14 西北工业大学 一种双模冗余微处理器的热切换方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414861A (en) * 1991-09-11 1995-05-09 Fujitsu Limited Data protection system using different levels of reserve power to maintain data in volatile memories for any period of time
JP3319608B2 (ja) 1991-10-18 2002-09-03 ソニー株式会社 電子機器
US5450561A (en) 1992-07-29 1995-09-12 Bull Hn Information Systems Inc. Cache miss prediction method and apparatus for use with a paged main memory in a data processing system
EP0654740A1 (de) 1993-11-22 1995-05-24 Siemens Aktiengesellschaft Bussteuerung
US5513337A (en) 1994-05-25 1996-04-30 Intel Corporation System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type
EP0834812A1 (en) 1996-09-30 1998-04-08 Cummins Engine Company, Inc. A method for accessing flash memory and an automotive electronic control system
JP4067063B2 (ja) 1997-11-14 2008-03-26 松下電器産業株式会社 マイクロプロセッサ
US6625749B1 (en) * 1999-12-21 2003-09-23 Intel Corporation Firmware mechanism for correcting soft errors
US6578109B1 (en) 2000-06-29 2003-06-10 Sony Corporation System and method for effectively implementing isochronous processor cache
US7124331B2 (en) * 2002-05-14 2006-10-17 Sun Microsystems, Inc. Method and apparatus for providing fault-tolerance for temporary results within a CPU
US7467326B2 (en) * 2003-02-28 2008-12-16 Maxwell Technologies, Inc. Self-correcting computer
US7263631B2 (en) * 2004-08-13 2007-08-28 Seakr Engineering, Incorporated Soft error detection and recovery
US7343579B2 (en) * 2004-11-30 2008-03-11 Physical Sciences Reconfigurable environmentally adaptive computing

Also Published As

Publication number Publication date
EP1851639A4 (en) 2010-09-01
EP1851639A1 (en) 2007-11-07
US7437599B2 (en) 2008-10-14
US20060184824A1 (en) 2006-08-17
WO2006088843A1 (en) 2006-08-24
CN101120327A (zh) 2008-02-06
CN101120327B (zh) 2010-04-14
JP4443611B2 (ja) 2010-03-31
EP1851639B1 (en) 2017-09-20

Similar Documents

Publication Publication Date Title
JP4443611B2 (ja) 電子デバイスにおいてイミュニティモードを有効に実施するシステム及び方法
KR101749466B1 (ko) 비휘발성 메모리에 대한 데이터의 이벤트 트리거링된 저장
US9444496B2 (en) Correctable parity protected memory
US7320091B2 (en) Error recovery within processing stages of an integrated circuit
JP4345334B2 (ja) 耐障害計算機システム、プログラム並列実行方法およびプログラム
US20200218599A1 (en) Methods and systems for smart memory data integrity checking
US10657010B2 (en) Error detection triggering a recovery process that determines whether the error is resolvable
US10423783B2 (en) Methods and apparatus to recover a processor state during a system failure or security event
JP5244981B2 (ja) マイクロコンピュータ及びその動作方法
US20150363272A1 (en) Computing system with adaptive back-up mechanism and method of operation thereof
US20160179577A1 (en) Method of Managing the Operation of an Electronic System with a Guaranteed Lifetime
US10817369B2 (en) Apparatus and method for increasing resilience to faults
CN110865900A (zh) 增强嵌入式***健壮性的一种方法
KR20190058310A (ko) 반도체 장치
US8775863B2 (en) Cache locking control
US20120233499A1 (en) Device for Improving the Fault Tolerance of a Processor
CN117461026A (zh) 用于协调持久性高速缓存刷新的***和方法
US10185635B2 (en) Targeted recovery process
US10289332B2 (en) Apparatus and method for increasing resilience to faults
US8230286B1 (en) Processor reliability improvement using automatic hardware disablement
KR101100894B1 (ko) 임베디드 장치의 오류검출 및 복구방법
US9043654B2 (en) Avoiding processing flaws in a computer processor triggered by a predetermined sequence of hardware events
KR100757263B1 (ko) 인덱싱 페이지를 이용한 데드록 방지 방법 및 이를실현시키기 위한 프로그램을 기록한 컴퓨터로 판독가능한기록 매체
US20220100629A1 (en) Micro-architectural fault detectors
CN117441144A (zh) 用于处理异步重置事件同时维持持久性存储器状态的***和方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091118

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100112

R150 Certificate of patent or registration of utility model

Ref document number: 4443611

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130122

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130122

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees