まず、RERIというのは “RAS Error-record Register Interface) というものだ。
RISC-V SoC ハードウェアのRAS機能を拡張するためのものだ。RISC-V SoC内で発生したエラーをロギングするためのインタフェースである。メモリマップ上に定義されたレジスタにエラーの情報を記録するものである。
ドキュメントの構成は以下のようになっている:
- はじめに
- 故障とエラー
- 故障の予防
- エラーの検出と訂正
- エラーの予測
- RERIの機能
- 用語集
- エラー・レポート
- レジスタ・レイアウト
- リセットの動作
- エラー・バンク・ヘッダ・レジスタ
- エラー記録レジスタ
1. はじめに
RASエラー・レコード・レジスタ・インタフェース (RERI)の目的は、エラー・レポートのための標準的なメカニズムをSoCに提供し、エラー発生時の回復アクションをこれに基づいて決定するための寄稿を提供することである。
ここでいうシステムとは、サービスを提供するために複数の機能が相互作用するコンポーネントの集合体である。
ここでいうサービスとは、コンシューマが近くする動作のことであり、サービスを構成するために使用する機能は、システム内の複数のコンポーネントによって実装されている。
サービスの正しさは、コンシューマが観察される状態が、サービスの仕様と一致する場合である。ここでいうサービスの仕様とは、機能動作、パフォーマンス目的、セキュリティ目標、RAS要件などである。
システムの信頼性とは、正しいサービスを提供し続ける確率であり、平均故障感覚(MTBF)などの指標によって特徴づけられる。信頼性の高いサービスでは、誤った結果が生成されると、障害を通知しコンシューマにエラーを知らせる方法が含まれている。
システムの可用性とは、サービスを提供する確率であり、エラーに対する体制の尺度である。これらは、エラー訂正、冗長性、状態チェックポイントとロールバック、エラー予測、エラー封じ込めなどの手段によって達成される。
サービス性とは、サービスを正しい動作に復旧させるための時間の尺度である。
1.1. 故障とエラー
故障とは、コンポーネントの故障や、システムが動作する環境における不正確な状態のことである。恒久的な障害としては物理的な欠陥や機能的な設計上の欠陥があり、一時的な故障としては、環境条件(宇宙線や電圧グリッチなど)や不安定性などがある。
休止状態であったとしても、故障が内部状態に影響するものがある。
ソフトウェアの欠陥も同様に、システムが提供するサービスがエラーを引き起こす可能性がある。ソフトウェアのエラーは、本使仕様の範囲外である。サービスの障害は、サービスがエラーによって仕様から逸脱した場合に発生する。
信頼性の高いシステムでは、以下の技術によってエラーに対処する:
- 故障の予防
- エラー検出と訂正
- エラー予測
1.2. 故障の予防
故障の予防には、製品出荷後に発生するエラーを低減または防止する技術の使用が含まれる。
未然に防ぐことのできなかったエラーは、システム運用中にエラーと顕在化する可能性がある。例えば加算器に発生するエラーによって、ロード命令の例外を発生させる。しかし、検出されないエラーは例外として検出することができず、静かにデータは損を発生させてサービス障害を引き起こすものがある。
1.3. エラーの検出と訂正
エラーの検出には、エラー訂正コードを持つキャッシュなど、エラーを検出するためのコーディングやプロトコルの使用が含まれる。
エラー訂正には、検出されたエラーを訂正する技術の使用が含まれる。エラー訂正は、エラー訂正コードおよびプロトコルを採用することによって実行される場合がある。例えば、プロセッサ・キャッシュは、エラーを検出して訂正するためにエラー訂正符号(ECC)を採用することがある。ハードウェアによって訂正されたこのようなエラーは、訂正エラー(CE)と呼ばれる。
修正できなかったエラーは未修正エラーと呼ばれる。未修正エラーを検出したコンポーネントは、破損している可能性のあるデータをデータの要求元へ伝搬させるが、そのデータにインジケータ(例えば、ポイゾン)を関連付けることができる。このようなエラーはUED(Uncorrected Errors Deferred)と呼ばれる。
未修正のエラーを検出したコンポーネントは、ポイズニングのような技法でエラーの 処理を延期することができないかもしれない。このようなエラーはUEC(Uncorrected Errors Critical)と呼ばれ、即座の救済措置が必要なためRASハンドラが起動される。
UECに対するRASハンドラの実行要求をシグナリングするコンポーネントは、エ ラーがエラーを検知したコンポーネントの境界を越えて伝搬しておらず、したがって、 RASハンドラが実行する回復アクション(例えば、計算の終了など)によって抑制可能であることを示すかもしれない。
一部のコンポーネントは、データが通過する際の仲介役として機能する。コンポーネントは破損したデータを転送する代わりに UEC をシグナルしなければならない。
コンポーネントによって検出されたエラーは、コンポーネントがリクエストに対応できなくなる(例えば、俗にジャム、ウェッジなどと呼ばれる)故障モードにつながる可能性がある。
1.4. エラーの予測
エラー予測とは、過去に発生し訂正されたエラーを分析し、将来的に訂正不能な故障やシステム全体の問題(経年劣化による性能低下など)を予測する技術である。
エラー予測には、将来の修正不可能な永久故障や、経年劣化による限界などのシステム的問題の予測因子として、修正されたエラーを使用することが含まれる。
研究によると、過去に訂正エラーが発生したDRAMは、訂正不能エラーが発生する確率が高いことが示されている。
検出および修正されたハードウェアエラーの報告は、システムの回復力を定量的に分析し、将来の未修正エラーを予測するために不可欠である。
レジリエントシステムのコンポーネントは、実行された訂正をカウントするための訂正エラーカウンタを含むこともできる。
1.5. RERIの機能
RISC-V RERI仕様のバージョン1.0は、以下の機能をサポートしている:
- エラーの重大度クラスと標準エラーコード。
- メモリマップドエラーレコードレジスタとエラーレコードバンクの標準レジスタフォーマットとアドレス指定。
- 有効なエラーレコードを新しいエラーレコードで優先的に上書きするためのルール。
- 修正されたエラーのカウント
- RASハンドラーテスト用のエラーレコード注入。
この仕様は、ハイエンドのサーバークラスのシステムからローエンドの組込みシステムまで、幅広いシステム設計とニーズに対応することを意図している。