Eğitmen: Bu derste,
hata düzeltme kodu olarak bilinen ECC
bellek hakkında konuşacağız.
Ama önce bellek açısından parite
ve parite olmama kavramlarını ele almamız gerekiyor.
Şimdi paritesizlikten bahsettiğimizde,
bu sadece standart bellek olan bellektir.
Hata kontrolü yapmaz ve verilerin hafızaya istenildiği
gibi yerleştirilmesine veya hafızadan çıkarılmasına izin
verir ve çoğu hafıza da böyle olacaktır.
Parite olmayan belleğin üretimi çok ucuzdur
ve parite bellekten daha yüksek bir hıza sahiptir.
Diğer yandan eşlik belleği, temel hata
kontrolünü gerçekleştirmek ve bellek içeriğinin
güvenilir ve bütünlüklü olmasını
sağlamak için kullanılacaktır.
Bu nedenle, bu bellek
parite olmayan belleklerden daha yavaş olacaktır,
ancak sunucular ve bazı üst düzey masaüstü
iş istasyonları için ihtiyaç
duyulacak güvenilirliğe sahiptir.
Artık parite kontrolüne sahip bellek, verilerin
iyi olup olmadığını doğrulamak için gördüklerine
dayanarak temel bir hesaplama
yapabilecektir.
Ve eğer bu veri iyiyse, onu kullanacaktır.
Ve eğer değilse, bir hata oluşacak ancak bunu
düzeltemeyecektir.
Sadece burada bir hata var ama nasıl düzelteceğimi
bilmiyorum diyebilecek.
Şimdi temel olarak, bu her baytın kendisiyle ilişkili
bir eşlik bitine sahip olmasıyla çalışır.
Yani sekiz bit yerine artık dokuz bitiniz
var çünkü sekiz veri biti artı eşlik için bir bit.
Şimdi bu eşlik biti doğru zamanda ayarlanacaktır.
Daha sonra, bellekten okuduğunuzda, bu verilerin
belleğe en son yazılmasından bu yana herhangi
bir bitin değişip değişmediğini belirlemek
için hesaplanacak ve karşılaştırılacaktır.
Ancak bu tür bir kontrol,
tek bitlik hataları tespit etmekle sınırlıdır.
Ve değiştirilmiş iki bit varsa,
eşlik kontrolü aslında geçebilir,
çünkü unutmayın, bitler yalnızca 0 veya 1 olabilir.
Örneğin, ikili sistemde 00000000
olarak yazılan
0 sayısını sakladığımı varsayalım.
Şimdi tüm bu bitleri toplarsam, sekiz tane 0 elde ederim
ve bu da bana eşlik bitim için 0 verir.
Şimdi bu sayıyı bellekten okumaya gidersem
ve sekiz tane 0 olduğunu görürsem,
bunları toplarım ve 0 elde ederim, 0 benim
eşlik bitimle 0 olarak eşleşir, yani
bu iyi bir veridir.
Öte yandan,
diyelim ki 00000001
şeklinde yazılan 1 rakamını yazıyordum.
Şimdi tüm bu sayıları toplarsam 1 elde edeceğim.
Bunu da dokuzuncu bölümün parite kısmına koyacağım.
Bunu yaparak, şimdi buradan okuyorum ve 00000001
adresini alıyorum.
Ve bunların toplamı 1 olduğu
ve eşlik bitimle eşleştiği
için verinin iyi olduğunu biliyorum
Ancak bunu belleğe koyarsam
ve birkaç saat orada durursa ve
bu 1 yanlışlıkla 0'a dönüşürse, şimdi bunu okursam ve 00000000 alırsam
ve bunları toplarsam, 0 elde ederim ve bunu içinde 1 olan eşlik bitimle karşılaştırırsam, bu şimdi bana bir hata olduğunu ve bir şeylerin
ters gittiğini söyler.
Bu sekiz bitten hangisinin değiştiğini bilmiyorum
ama en azından bir tanesi değişti.
Öte yandan,
00000001
adresindeki bu sayı 01010001 gibi bir şeyle
değiştirildiyse, artık bellek tarafından yanlışlıkla
0'dan 1'e değiştirilen
iki bitim vardı.
Pariteme baktığımda, hala 1 olacak çünkü
bunları toplarken, eğer tek sayı ise, parite
bitim için 1 olacak.
Ve eğer bunları toplarsam ve çift sayı
olursa, 0 olacaktır.
Gördüğünüz gibi, parite
tipi bir hesaplama kullanıyorsanız,
bunun içinde iki bit değişmişse bir hata
tespit edemezsiniz.
Şimdi, iyi haber şu ki, çoğu hatanın yaklaşık %90'ı tek bitlik
bir hata türü olacaktır ve bu nedenle eşlik
kontrolü genellikle çoğu durumumuz için
yeterli olabilir.
Ancak bir banka için sunucu çalıştırmak
gibi bir işle uğraşıyorsanız, her türlü
hatanın olması kötü bir şey olabilir.
Bu yüzden eşitlikten daha iyi bir şey
istiyoruz ve ECC burada devreye giriyor.
Şimdi ECC, Hata Düzeltme Kodu anlamına geliyor.
Hata düzeltme kodu, pariteyi bir
üst seviyeye taşıyan bellek türüdür.
Artık sadece parite gibi bir hata olduğunu
tespit etmekle kalmıyor,
aynı zamanda bu hatayı sizin için düzeltebiliyor.
Şimdi ECC, pariteden biraz daha yavaştır ve bu
da parite olmayandan daha yavaştır.
Dolayısıyla bu ekstra özellik
için biraz performanstan vazgeçiyorsunuz
ama ECC kullandığınızda belleğinizden
daha yüksek bütünlük ve güvenilirlik elde ediyorsunuz çünkü bu hataları tespit edip düzeltebiliyor.
Genel olarak, ECC veya hata düzeltme kodunun
yalnızca gerçekten üst düzey
iş istasyonlarında veya sunucularda kullanıldığını göreceksiniz
çünkü ek maliyet ve bu ekstra
yüksek bütünlük seviyesi yalnızca bu tür
ortamlarda gereklidir.
Şimdi merak ediyor olabilirsiniz,
ECC aslında neyin yanlış olduğunu ve nasıl düzeltileceğini
nasıl belirliyor?
Bunu yapmak için tamponlanmış
veya kayıtlı bellek olarak bilinen bir
şey kullanacaktır.
Artık tamponlu bellek veya kayıtlı bellek,
bellek ile CPU veya işlemciniz
arasında yer alacak ek bir donanıma sahiptir.
Bu donanıma register adı verilir
ve verileri CPU'ya gönderilmeden
önce bir tamponda saklar.
Bu özellik pek çok sistemde, özellikle de hataların
oluşabileceği çok sayıda farklı
bellek modülüne sahip sunucular gibi
sistemlerde bir güvenilirlik ölçütü olarak
kullanılır.
Bu sistemler, büyük miktarlarda bellek modülüne sahip bu sistemler
tarafından kullanılan elektrik yükünü
azaltmak için verilerin
tamponlanmasını veya kaydedilmesini gerektirir
ve bu, aradığınız ek güvenilirliği sağlayabilmek ve bu hataları tespit edebilmek
için parite veya hata düzeltme kodu belleği
ile eşleştirilebilir.
Şimdi hata düzeltme kod modüllerini kullanmak için
CPU'nuzun yanı sıra anakartınızın da bunu desteklemesi gerekir.
Bu bileşenlerden herhangi biri ECC'yi desteklemiyorsa,
daha pahalı olan ECC modüllerini satın alsanız bile, bu ekstra
ECC avantajını elde edemezsiniz.
Bunu aklınızda tutun.
Ayrıca çoğu anakart ECC'yi destekliyor ya da desteklemiyor.
Bu genellikle bir seçenek değildir.
Dolayısıyla, ECC'yi destekleyen bir anakart satın
alırsanız, kayıtlı bellek modülleri olan ECC
modüllerini satın almanız gerekecektir.
Şimdi, ECC veya ECC olmayan modülleri destekleyen
bir anakart bulursanız, genellikle
her ikisini de aynı anda desteklemeyeceklerdir.
Yani tüm modüllerinizin ECC olması gerekir
ya da hiçbir modülünüz ECC olamaz.
Bunların bir karışımının olması sistemde hatalara neden olabilir
ve anakart bununla nasıl başa çıkacağını bilemez.
Şimdi bahsetmek istediğim
son şey, eğer DDR5 kullanıyorsanız,
DDR5 modüllerin kendi içinde bazı hata
kontrollerine sahiptir.
Bu ECC veya ECC modülü olarak kabul edilmez.
Böylece yeni DDR5 modüllerinin
içindeki bu hata düzeltme özelliği, ECC'yi desteklemeyen
anakartlarda kullanılabilir ve yine de bazı hata kontrol
özelliklerine sahip olursunuz.
Bu, hata kontrolünün farklı bir şeklidir
ve hata düzeltme kodu olarak kabul edilmez.
Bu yüzden bunu aklınızda tutun ve sahadayken bunun kafanızı
karıştırmasına izin vermeyin.
Bu, hata kontrolünün farklı bir
şeklidir ve DDR5 modülleri hala ECC veya
ECC olmayan modüller olarak satılabilir, çünkü
bu dahili hata kontrolüne ek olarak, ECC'yi
destekliyorlarsa CPU ve anakartla da çalışabilirler ve artık hata düzeltme
kodu da vardır.
Bunun biraz kafa karıştırıcı olduğunu biliyorum.
Bu yüzden sahaya çıktığınızda bunun farkında olun.