私たちが知っているように、ECCメモリに加えて、RAMメモリセルを反転する宇宙船(ビットフリップの問題)によるデータ損失を防ぐのに役立つ他の方法があります。
ビット反転の問題は何ですか?
修正手順:
RAMイメージのBIOS実装:
- https://www-thomas--krenn-com.translate.goog/de/wiki/RAM_Mirroring?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=en-US&_x_tr_pto=wapp
- https://web.archive.org/web/20230114220407/https://www-thomas--krenn-com.translate.goog/de/wiki/RAM_Mirroring?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=en-US&_x_tr_
ソフトウェア実装:
ソフトECC
https://web.archive.org/web/20230119082028/https://pdos.csail.mit.edu/papers/softecc:ddopson-meng/softecc_ddopson-meng.pdf https://web.archive.org/web/20230114103624/https://pdos.csail.mit.edu/papers/softecc%3Addopson-meng/softecc_ddopson-meng.pdf
2023年に、Linux Mint21とLMDE5でどのソフトウェアソリューション(カーネルの実装やアドインなど)を使用できますか? ZFS RAIDZに似たエンドツーエンドのハッシュ技術を使用できますが、ハードディスクの代わりにRAMメモリを操作するために使用されます。
可能な実用的なソリューションのためのヒント:
ミラーリングされたメモリのサポート:
- https://web.archive.org/web/20230114231952/https://lwn.net/Articles/897734/
- https://web.archive.org/web/20230114232055/https://www.fujitsu.com/jp/documents/products/software/os/linux/catalog/LinuxConJapan2016-Izumi.pdf
- https://web.archive.org/web/20230114232143/https://www.phoronix.com/news/Linux-AArch64-Mirrored-Memory
- https://www.micron.com/-/media/client/global/documents/products/technical-note/nand-flash/tn2971_software_bch_ecc_on_linux.pdf
- https://linux.kernel.narkive.com/cxqgDQlR/software-based-ecc
- https://dspace.mit.edu/handle/1721.1/36769
答え1
デフォルトでは、CPUはエラーチェックを実行したり、エラー修正情報を追加するように設計されていないため、意味のある方法でメモリエラーを修正するにはハードウェアサポートが必要です。ソフトウェアは、RAMから読み出されたデータが正しいと仮定する。
ソフトウェアがRAMから値を読み取ると、「ロード」コマンドによってメモリから特定の場所を取得したいとCPUに通知します。 (これはZFSからデータを読み取るときに発生するものとは大きく異なります)
オペレーティングシステムやその他のソフトウェアとして変更されていないソフトウェアの読み取りを傍受する可能性はほとんどありません。すべてユーザーモードの読み取りに失敗した後、メモリからそのページをロードし、エラーチェックを実行した後、最後に値を返します。毎回仮想メモリアドレスをリニアメモリアドレスに変換するルックアップテーブルを放棄し、すべてのキャッシュを無効にします。それ以外の場合は、システムの4kBページごとに正確に1回動作します。その結果、システムは非常に遅くなります。ここではPentium 1について話しています。なぜなら、ほとんどのスピードの利点はこれをやっていないからです。エラーチェックメモリを備えた非常に遅いシステムが必要な場合は、ECC RAMを搭載した古いサーバーハードウェアのコストを大幅に節約できるハードウェアリサイクル会社があると確信しています。
SoftECC ドキュメントでは、実際の問題に対して実際には機能しないソリューションを提案します。 「古いメモリページの確認」を実装する必要があります(頻繁に作成されたページを保護することはできませんが、近接効果により実際にこれらのページは保護されません)。保護されたシステムが必要ですが(LinuxのRow Hammerを参照)、現代のシステムでは幸運ですが、依然として膨大なパフォーマンスの低下を経験します。
これで、完全性チェック自体を含めるようにソフトウェアを実際に変更しようとしている場合は、これが可能です。たとえば、実際にRAMに大量のデータキャッシュを持つデータベースサーバーを作成しているとします。チェックサムと修正を直接簡単に実装できます。しかし、問題は、システム上で実行されているすべてのソフトウェアの一般的なRAM保護ではなく、アプリケーション固有の開発とチャネルエンコーディングの1つです。
正直なところ、ECCは現世代のデスクトップCPUに組み込まれており、多くのマザーボードがそれをサポートしており、ECC RAMはそれほど高価ではありません。 ECCが必要な場合、ソフトウェアではなくアーキテクチャの観点からECCを実装するのに適した場所はハードウェアです。