SIMMのパリティは意味があるのか

ショップでメモリを買うとき,「ノンパリティで十分ですよ」といわれました。SIMMのパリティって何のためにあるのでしょう。どのようなときにパリティ付きのメモリを買えばいいのでしょうか。


パリティの本来の目的は,メモリに書き込まれたデータを読み出すときに「書き込まれたときのデータと同一のデータである」ことを検証することにあります。
 書き込んだときのデータと読み出したときのデータが同じものでなければ,問題が発生することは容易に想像できます。
 メモリは1ビットを最小単位として,8ビットごとにバイトという単位でアドレスが割り当てられていることはご存じでしょうか。
 この1バイトに,データ検証用の1bitを追加したものがパリティ付きSIMMです。
 データをメモリから読み出すときに,この照合がハードウェアによって行われ,実際のデータ部とパリティの値に食い違いがあると,CPUに対してNMI(Non Mascable Interrupt)が発生します。
 汎用機やサーバーマシンと呼ばれるコンピュータはメモリ不正のNMIを受け取ると,メモリの交換をオペレータに催促するとともに,連続運用を可能とするための複雑な処理を行って,不正のあったデータを正規のデータに補正する仕組みがあります。
 このようにすることで,メモリ不正が原因の急なシステムダウンに対処するわけです。
 AT互換機は前身が汎用機ということもあって,数年前までパリティ付きSIMMが使用されてきました。
 しかし,AT互換機の場合にはデータが不整合を起こしても,これを補正する手段がないことや,OS側がこれに対応していないなどの理由により,メモリの不正が発生すれば,即,暴走につながります。
 役に立たないパリティのためにメモリチップをSIMMに充填することは,SIMM自体の価格を高騰させることもあって,最近はパリティ用のメモリチップをなくしたノンパリティSIMMが主流になっています。
 幸い,技術の向上によってメモリチップの信頼性も向上してきました。現在はノンパリティSIMMでも問題はありません。
 マザーボードがノンパリティ対応の場合,ほとんどのマザーボードはSIMM上にあるパリティ検出用の信号線を無視するようになっているので,パリティ付きSIMMでもパリティのないSIMMでも使えます。
 混在して使用する場合は,必ずバンクごとに(2枚1組で)同一のものを揃えて使用することをお忘れなく。
(三谷直之)

バリティビットの仕組み

奇数パリティ方式の場合
データ配列が 00100011 のとき
立っているビットは奇数個なのでパリティは 0
データ配列が 00110011 のとき
立っているビットは偶数個なのでパリティは 1