Kısa cevap

ECC (Error-Correcting Code) bellek, veri yanında bir kontrol kodu da saklar. Bu sayede tek bit hatalarını çalışma anında düzeltir, çift bit hatalarını ise tespit edip bildirir. Amaç hatayı önlemek değil, hatanın sessizce veriye karışmasını engellemektir.

Bellek hataları gerçekten oluyor mu?#

Evet. Bellek hücreleri, kozmik ışınlar dâhil çeşitli etkilerle bit değiştirebilir. Bu, arızalı bir modül olmadan da gerçekleşebilen fiziksel bir olaydır.

Masaüstü bir bilgisayarda böyle bir hata genellikle fark edilmez ya da bir uygulamanın çökmesiyle sonuçlanır. Sürekli çalışan bir sunucuda ise aynı hata:

  • Bir veritabanı kaydını sessizce bozabilir,
  • Yedeklenen veriye hatalı hâliyle yazılabilir,
  • Aylarca fark edilmeyip yedeklerin tamamına yayılabilir.

Nasıl çalışır?#

ECC bellekte her veri kelimesinin yanında ek kontrol bitleri saklanır. Okuma sırasında denetleyici, veri ile kontrol bitlerini karşılaştırır:

  • Tek bit değişmişse hangi bitin bozulduğu hesaplanabilir ve düzeltilir.
  • İki bit değişmişse hata tespit edilir ama düzeltilemez; sistem olayı raporlar.

Bu davranış genellikle SEC-DED (Single Error Correction, Double Error Detection) olarak adlandırılır. Sunucu platformlarında bunun ötesine geçen, tüm bir bellek yongasının arızasını tolere edebilen ek mekanizmalar da bulunur; adlandırma üreticiye göre değişir.

Registered, unbuffered ve load-reduced#

ECC kavramı sık sık "registered" ile karıştırılır; ikisi farklı şeylerdir.

Bellek modülü tipleri
TipAçıklamaTipik kullanım
UDIMMTamponsuz; adres/komut sinyalleri doğrudan yongalara giderMasaüstü, giriş seviyesi sunucu
ECC UDIMMTamponsuz ama hata düzeltmeliKüçük sunucu, iş istasyonu
RDIMMAdres/komut sinyalleri modül üzerinde tamponlanırSunucu — yüksek kapasite
LRDIMMVeri hatları da tamponlanırÇok yüksek kapasiteli yapılandırmalar

Tablo yatay olarak kaydırılabilir.

Tamponlama, bir bellek kanalına daha fazla modül takılabilmesini sağlar. Bu yüzden yüksek kapasiteli sunucularda RDIMM/LRDIMM kullanılır.

ECC kullanmak için ne gerekir?#

ECC yalnızca bellek modülünün özelliği değildir; işlemci ve anakart da desteklemelidir. Sunucu platformlarında bu destek standarttır. Masaüstü platformlarda ise değişkendir: bazı yonga seti ve işlemci kombinasyonları destekler, bazıları desteklemez.

Bu nedenle "ECC bellek aldım" demek yeterli değildir; platformun ECC'yi etkin biçimde kullandığını işletim sistemi veya yönetim arayüzünden doğrulamak gerekir.

Önemli noktalar

  • ECC tek bit hatalarını düzeltir, çift bit hatalarını tespit edip bildirir.
  • Asıl faydası, hatalı verinin sessizce yayılmasını engellemesidir.
  • ECC ile registered farklı kavramlardır; biri hata düzeltme, diğeri sinyal tamponlamadır.
  • ECC için bellek kadar işlemci ve anakart desteği de gereklidir.
  • Düzeltilebilir hata sayaçlarındaki artış, planlı değişim için erken uyarıdır.