まず、RERIというのは “RAS Error-record Register Interface" というものだ。
2. エラー・レポート
エラー検出をサポートするシステム内のRISC-V HARTまたはメモリコントローラなどのコンポーネントは、エラー・レコードに複数のバンクを実装することができる。各エラー・バンクは、1つまたは複数のエラー・レコードを実装することができる。各エラー・レコードは、コンポーネントの1つまたは複数のハードウェア・ユニットに対応し、それらのハードウェア・ユニットによって検出されたエラーを報告する。
各エラー・バンクは、8バイトに整列された物理アドレスからメモリ・マップされ、最大63個のエラー・レコードを含むことができる。
実装では、エラー・バンクの開始アドレスに、より粗いアライメントを使用することができる。例えば、いくつかの実装では、エラー・バンクを各エラー・バンクの物理アドレス空間の自然にアライメントされた4KiB領域(1ページ)内に配置することができる。
アドレスがアクセスサイズにアライメントされていないレジスタ・アクセス、複数のレジスタにまたがるアクセス、またはアクセスサイズが4バイトまたは8バイトでない場合の動作はUNSPECIFIEDである。
RERIレジスタは、High HalfとLow Halfに対して2つの個別の4バイト・アクセスを実行できるように、またはハードウェアが8バイト・アクセスの結果として2つの独立した4バイト・トランザクションを実行できるように定義されている。
RERIレジスタのバイトオーダーはリトルエンディアンである(すべてのHARTがビッグエンディアンのみのシステムであったとしても)。
ビッグエンディアンのHARTは、Zbb拡張で定義されたREV8バイト反転命令を実装することができる。REV8が実装されていない場合は、一連の命令を使ってエンディアン変換を実装することができる。
エラー・バンクおよび/またはエラー・レコードが、メモリマップドアクセスに対して利用できない(例えば、パワーダウンしている)場合、実装固有の応答が発生する。
それ以外のメモリ・マップド・アクセスで利用可能なエラー・バンクは、読み出し時にすべてゼロ・データで応答しなければならず、ページ内の未実装レジスタへの書き込みは無視しなければならない。
2.1. レジスタのレイアウト
エラー・バンク・レジスタは、エラー・バンクに関する情報を提供する64バイトのヘッダと、それに続く64バイトのエラー・レコードの配列で構成される。
| オフセット | 名前 | サイズ | 説明 |
|---|---|---|---|
0 |
vendor_n_imp_id |
8 | ベンダーと実装ID。 |
8 |
bank_info |
8 | エラーバンク情報。 |
16 |
valid_summary |
8 | 有効なエラー記録の概要。 |
24 |
予約 | 32 | 将来の標準的な使用のために予約されている。 |
56 |
カスタム | 8 | カスタム。 |
64 + 64 * i |
control_i |
8 | エラーレコードiの制御レジスタ。 |
72 + 64 * i |
status_i |
8 | エラーレコード i のステータスレジスタ。 |
80 + 64 * i |
addr_info_i |
8 | エラーレコード i のアドレスまたは情報レジスタ。 |
88 + 64 * i |
info_i |
8 | エラー記録の情報登録 i |
96 + 64 * i |
suppl_info_i |
8 | エラー記録の補足情報レジスタ i |
104 + 64 * i |
timestamp_i |
8 | エラーレコードiのタイムスタンプレジスタ |
112 + 64 *i |
予約 | 16 | 将来の標準的な使用のために予約されている |
この仕様で定義されているすべてのレジスタとレジスタ・フィールドは、特に断りのない限り、WARLである。