今日、デスクトップ、ノートブック、モバイル デバイスで使用されているメモリの大部分は、アンバッファ非 ECC (Error Checking and Correction) 型 DRAM です。 実際、ECC メモリをサポートする Intel または AMD CPU を使用していない限り、ほとんどのユーザーにとって、バッファなしの ECC DRAM が唯一の選択肢となります。 例えば、Intel XeonはECCメモリをサポートしているが、新しいCore i7はサポートしていない。 AMD は CPU レベルでより広範な ECC サポートを提供していますが、多くの AMD マザーボードは ECC メモリ機能をサポートしていないので、万能ではありません。
ECC メモリとは
Error Checking and Correction (ECC) メモリは最近、エンタープライズ環境ではほとんど不可欠と考えられています。 8 ビット バイト内のシングル ビットのエラー チェックと訂正により、シングル ビット エラーが発生したときに、その検出と訂正の両方を行うことができます。 興味深いことに、このシングルビットECCの仕組みは、パリティビットの生成にXORアルゴリズムを使用するRAID 4やRAID 5とは全く異なります。 メモリメーカーは、使用可能なメモリ容量を減らす代わりに、8個のストレージチップごとにECCメモリ用のチップを追加する傾向がある。 1ビットのエラーが検出されると、パリティ情報を使ってエラーがあるデータを再構築する。 これも、RAID4やRAID5がストレージアレイのデータエラーをスクラブして修正するのと概念的には同じである。 マルチビットよりも大きなエラーは検出できますが、シングルビット ECC タイプのパリティ スキームでは修正できません。
デスクトップでは、シングルビット エラーは毎月メモリの 1GB あたり 1 つ、または 2GB あたり 1 つの範囲であるという数字が多いので、これはあまり重要ではありません。 デスクトップ ユーザーにとって、これはプログラムのクラッシュの原因になるか、最悪の場合、再起動が必要になる可能性があります。 サーバーの場合、ECC はデータの整合性と稼働時間の両方を維持するために不可欠です。 ECC と非 ECC のアンバッファード DIMM の現在のわずかなコスト差で、サーバー用に非 ECC メモリを入手する理由はほとんどありません。
Unbuffered ECC 対 Registered ECC Memory
ECC の概念に加えて、アンバッファードと Registered ECC メモリ モジュールという 2 つのコンセプトがあります。 基本的な違いは、バッファなしメモリ構成では、メモリ・コマンドがコントローラからメモリ・モジュールに直接送られるのに対し、登録型メモリ構成では、コマンドはモジュールに送られる前に、まずメモリ・バンクのレジスタに送られるということです。 この概念は難しく聞こえるかもしれませんが、ここでは、何が起こっているのかについて、非常にシンプルで概念的な見解を示します。
上記の例では、メモリ コントローラーはメモリ バンクに直接アクセスします。 上記は、最新の CPU アーキテクチャのように、メモリ コントローラが CPU パッケージ内に存在することを想定しています。 古いシステムを見ると、メモリコントローラはCPUのノースブリッジ内に存在しています。 これを以下の登録済みメモリの例と比較してください。
ここで、CPU は各モジュール上のメモリ バンクのレジスタと通信をします。 そこから、これらのレジスタは、DRAM と通信します。 この意味は2つあります。 まず、マイナス面として、バンク・レジスタが介在するため、命令にかかる時間が約 CPU サイクル分長くなります。 プラス面では、DRAMに直接アクセスするのではなく、専用の中間レジスタを指すため、このバッファリングによってCPUのメモリコントローラへの負担が軽減される。
この機能は、サーバーのシナリオで非常に重要です。たとえば、Supermicro X8SI6-F や Intel S3420GPLC などの Intel 3400 シリーズ プラットフォームでは、16GB のバッファなし ECC および 32GB の登録済み ECC メモリがサポートされています。 同様に、最近ServeTheHomeでレビューしたE5600シリーズベースのSupermicro X8DTH-6Fのようなデュアルプロセッサシステムでは、最大48GBの非登録ECCまたは192GBの登録ECCメモリで、その差はさらに大きくなる。 メモリとメモリ帯域幅が、高い統合度と密度の指標を達成するための鍵となる仮想化環境では、一般的に Registered ECC メモリを使用するのが望ましいとされています。 非登録型 ECC DIMM を搭載したサーバーを購入し、追加の容量が必要になった場合、アップグレード作業では、すべての UDIMM モジュールを引き出して交換する必要があり、高価な提案となります。
結論
この記事では、バッファなし ECC メモリと登録型 ECC メモリの違いについて概念的見解を得て、選択の判断材料としていただければ幸いです。 メモリ モジュールは、ユーザーがシステムと一緒に注文したり、システムに追加したりするものであり、メモリが必要になるまでほとんど手を付けない傾向があるため、今回は過度に技術的な記事にはなりませんでした。