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.
| Tip | Açıklama | Tipik kullanım |
|---|---|---|
| UDIMM | Tamponsuz; adres/komut sinyalleri doğrudan yongalara gider | Masaüstü, giriş seviyesi sunucu |
| ECC UDIMM | Tamponsuz ama hata düzeltmeli | Küçük sunucu, iş istasyonu |
| RDIMM | Adres/komut sinyalleri modül üzerinde tamponlanır | Sunucu — yüksek kapasite |
| LRDIMM | Veri 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.
Masaüstü bilgisayarda ECC bellek kullanılabilir mi?#
Modülü takmak yeterli değil; desteğin üç yerde birden bulunması gerekir: işlemcide, yonga setinde ve anakartın üretici yazılımında. Üçünden biri desteklemiyorsa modül ya hiç çalışmaz ya da hata düzeltme devre dışı biçimde, sıradan bellek gibi çalışır.
Uygulamada durum şöyledir:
- Sunucu ve iş istasyonu platformları. ECC desteği bu sınıfın ayırt edici özelliğidir; beklenen ve belgelenen bir yetenektir.
- Tüketici platformları. Bazı anakart ve işlemci birleşimleri registered olmayan ECC modülleri destekler, bazıları desteklemez. Destek üreticiden üreticiye, hatta aynı üreticinin modelleri arasında değişir.
ECC bellek performansı düşürür mü?#
Ölçülebilir ama küçük bir etkisi vardır ve iki ayrı kaynaktan gelir.
Birincisi hata denetiminin kendisidir: her okumada eşlik bitleri üzerinden bir kontrol yapılır. Bu, gecikmeye çok küçük bir ek getirir.
İkincisi modül tipiyle ilgilidir. Registered modüllerde adres ve komut sinyalleri modül üzerindeki bir tampondan geçer; bu, bir saat döngüsü kadar ek gecikme demektir. Karşılığında tek kanalda çok daha fazla modül desteklenir — sunucularda büyük bellek kapasitelerine çıkmayı mümkün kılan şey budur.
Bu takas sunucular için nadiren tartışma konusudur: yüzde birkaçlık gecikme, sessizce bozulmuş veriyle çalışma riskinin yanında önemsizdir.
Bellek hatası oluştuğunu nasıl görürüm?#
Hataların bir kısmı düzeltilir ve sistem çalışmaya devam eder. Bu iyi haber olduğu kadar bir risk de taşır: kimse bakmazsa bozulmaya başlayan bir modül fark edilmez.
İzlenecek üç yer vardır:
Kayıtların bulunduğu yerler
- Sunucu yönetim kartı (BMC/IPMI) olay kaydı. Düzeltilmiş ve düzeltilemeyen hatalar burada modül konumuyla birlikte kaydedilir. Bir modül eşiği aşacak sayıda hata üretirse kart genellikle "öngörülen arıza" uyarısı verir.
- İşletim sistemi kayıtları. Donanım hata raporlama mekanizması üzerinden düzeltilmiş hatalar görünür.
- Üreticinin yönetim yazılımı. Modül konumunu fiziksel yuva etiketiyle eşleştirdiği için değiştirme sırasında en pratik kaynaktır.
ECC ve ECC olmayan modüller aynı sistemde karıştırılabilir mi?#
Desteklenen bir yapılandırma değildir. Karşılaşılan iki sonuç vardır: sistem hiç açılmaz, ya da açılır ama hata düzeltmeyi tümüyle kapatır.
İkinci durum daha tehlikelidir, çünkü ortada bir hata mesajı yoktur. Sistem çalışır, bellek toplamı doğru görünür, ama ECC için ödenen şey kullanılmaz hâldedir.
Aynı mantık modül tipleri için de geçerlidir: registered ve unbuffered modüller birlikte kullanılmaz. Bellek eklerken doğrulanacak şey yalnızca kapasite ve hız değil, tiptir.
Ö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.
