RAMパリティチェックとは、ランダムアクセスメモリに格納された少量のコンピュータデータ(通常は1バイト)のパリティ(奇数か偶数か)を表す冗長なパリティビットを格納し、格納されたパリティと計算されたパリティを比較して、データエラーが発生したかどうかを検出することです。
パリティビットは当初、個別の追加メモリチップに格納されていましたが、プラグイン式のDIMM、SIMMなどのモジュールの登場により、非パリティ版とパリティ版(1バイトあたり1ビット追加され、実際のデータ8ビットごとに9ビットを格納)が利用可能になりました。

初期のコンピュータでは、パリティ RAM の使用が必要な場合があり、パリティ チェックを無効にすることはできませんでした。パリティ エラーが発生すると、通常はマシンが停止し、保存されていないデータが失われます。これは、破損したデータを保存するよりも通常は良い選択肢です。ロジック パリティ RAM (フェイク パリティ RAM とも呼ばれる) は、パリティ RAM を必要とするコンピュータで使用できる非パリティ RAM です。ロジック パリティ RAM は、メモリへの書き込み時にパリティ ビットを保存するのではなく、メモリからバイトが読み出されるたびに常に有効なパリティ ビットを再計算します。計算されたパリティ ビット (データが破損しているかどうかは明らかにならないため、「フェイク パリティ」と呼ばれます) がパリティ チェック ロジックに渡されます。これは、9 ビット パリティ RAM のみを使用するように設計されたシステムで、より安価な 8 ビット RAM を使用する手段です。
1970年代から80年代にかけて、RAMの信頼性は必ずしも完璧とは言えませんでした。特に、1975年から1983年まで業界標準だった4116 DRAMは、3つの電圧(-5V、+5V、+12V)を使用していたため動作温度が高く、故障率がかなり高かったのです。1980年代半ばには、4164や41256といった単一電圧のDRAMが登場し、信頼性が向上しました。しかし、RAMが現代の信頼性基準を満たすようになったのは1990年代になってからです。それ以降、単純なパリティRAMが使われなくなったため、エラーは目に見えにくくなりました。エラーは検出されないため目に見えないか、ECC RAMによって目に見えない形で訂正されるかのどちらかです。現代のRAMは、多くの正当な理由から信頼性が高いと考えられており、エラー検出RAMは重要度の低いアプリケーションではほとんど使用されなくなりました。1990年代半ばには、メーカーがパリティチェックはもはや不要だと確信したため、ほとんどのDRAMでパリティチェックが廃止されました。パリティまたはECCをサポートする一部のマシンでは、 BIOSでチェック機能を有効または無効に設定できるため、より安価な非パリティRAMを使用できます。パリティRAMを使用する場合、チップセットは通常、1ビットのパリティエラーでマシンを停止させるのではなく、そのRAMを使用してエラー訂正を実行します。
しかし、 ECCメモリに関する記事で述べたように、エラーは日常的に発生するものではないものの、無視できないほど頻繁に発生する。製造上の欠陥がない場合でも、自然発生的な放射線によってランダムなエラーが発生する。Googleの多数のサーバーで行われたテストでは、メモリエラーはまれな事象ではなく、メモリエラーの発生率と異なるDIMM間でのエラー率の範囲は、以前の報告よりもはるかに高いことが判明した。[ 1 ]
単純なゴー/ノーゴーパリティチェックでは、メモリにデータを格納するために必要なビット以外に余分な冗長ビットが必要になりますが、余分なビットがあれば、エラーの検出だけでなく訂正にも使用できます。たとえば、IBM PC/ATで使用されていた初期のメモリには、チェックなしまたはパリティチェックをサポートするバージョンがありました[ 2 ] ( DIMMやSIMMモジュールではなく個別の RAM チップを使用していた初期のコンピュータでは、パリティビットを格納するために追加のチップが使用されていました)。コンピュータがパリティエラーを検出すると、その旨のメッセージを表示して停止しました。初期のタイプに取って代わったSDRAMおよびDDRモジュールは、通常、エラーチェックなしまたは ECC (パリティだけでなく完全な訂正) 付きのいずれかで提供されています。[ 2 ]
エラーチェック機能のないシステムでは無視され、パリティチェック機能のあるマシンでは停止し、ECCによって目に見えない形で修正されるような、単一ビットエラーの例を挙げます。チップの故障により単一ビットが1に固定されたり、背景ノイズや宇宙放射線によって1に変化したりします。ASCII形式で数値を格納するスプレッドシートが読み込まれ、固定ビットを含むバイトの8番目のビットに数値「8」が格納されます。次に、スプレッドシートに別の変更が加えられ、それが保存されます。しかし、「8」(バイナリでは00111000)は「9」(00111001)に変化しています。
保存されているパリティが、保存されているデータから計算されたパリティと異なる場合、少なくとも1ビットがデータ破損によって変更されたことになります。検出されないメモリエラーは、検出されず影響もない場合から、保存されているデータの永久的な破損やマシンのクラッシュに至るまで、さまざまな結果をもたらす可能性があります。家庭用PCでは、データの整合性はあまり重要視されないことが多く(ゲームやウェブブラウジングでは確かにそうですが、インターネットバンキングや家計管理ではそれほど重要視されません)、非パリティメモリは手頃な選択肢となります。しかし、データの整合性が求められる場合、パリティメモリはコンピュータを停止させ、破損したデータが結果や保存されているデータに影響を与えるのを防ぎます。ただし、中間的な未保存データは失われ、不良RAMが交換されるまで使用できなくなります。現代の高速コンピュータでは影響はごくわずかですが、多少の計算オーバーヘッドが発生するものの、検出されたエラーは修正できます。これは、多くのユーザーが利用するネットワーク接続されたマシンではますます重要になっています。
ECC(エラー訂正コード)付きRAMは、エラーを検出して訂正できます。パリティRAMと同様に、追加の情報を保存し、より多くの処理を行う必要があるため、ECC RAMは非パリティRAMやロジックパリティRAMよりも高価で、若干低速です。このタイプのECCメモリは、信頼性や稼働時間が重要なアプリケーションに特に有効です。メモリワード内のビットの障害は、アプリケーションに影響を与えることなく、オンザフライで検出および訂正されます。エラーの発生は通常、オペレーティングシステムによってログに記録され、技術担当者が分析します。エラーが継続する場合は、サーバーのダウンタイムをスケジュールして、障害が発生したメモリユニットを交換することができます。
1991年、王氏はSIMMに関する特許をめぐり東芝とNECを相手取って訴訟を起こし、勝訴した。その根拠の一つは、パリティのために9番目のRAMチップを使用しているという主張であった。[ 3 ] [ 4 ]これに対し、各ビットに9個の独立したチップではなく3個のチップを使用するSIMMが、特許を侵害していないという理論のもとで普及した。しかし、9個のチップを使用するSIMMから3個のチップを使用するSIMMへの切り替えは、互換性の問題を引き起こした。[ 5 ] 1年後の1992年、王氏は三菱電機も訴えたが、1997年に裁判所がライセンス契約が存在すると判断したため、王氏は最終的に勝訴しなかった。[ 6 ]最終的に1990年代末までに、市場ではDIMMがSIMMに取って代わり、DIMMは王氏の訴訟の対象ではなくなった。