WEBVTT

00:00.120 --> 00:00.960
Eğitmen: Bu derste,

00:00.960 --> 00:03.000
hata düzeltme kodu olarak bilinen ECC

00:03.000 --> 00:05.040
bellek hakkında konuşacağız.

00:05.040 --> 00:06.720
Ama önce bellek açısından parite

00:06.720 --> 00:10.020
ve parite olmama kavramlarını ele almamız gerekiyor.

00:10.020 --> 00:12.000
Şimdi paritesizlikten bahsettiğimizde,

00:12.000 --> 00:14.160
bu sadece standart bellek olan bellektir.

00:14.160 --> 00:16.200
Hata kontrolü yapmaz ve verilerin hafızaya istenildiği

00:16.200 --> 00:18.870
gibi yerleştirilmesine veya hafızadan çıkarılmasına izin

00:18.870 --> 00:21.390
verir ve çoğu hafıza da böyle olacaktır.

00:21.390 --> 00:23.910
Parite olmayan belleğin üretimi çok ucuzdur

00:23.910 --> 00:26.970
ve parite bellekten daha yüksek bir hıza sahiptir.

00:26.970 --> 00:28.800
Diğer yandan eşlik belleği, temel hata

00:28.800 --> 00:31.110
kontrolünü gerçekleştirmek ve bellek içeriğinin

00:31.110 --> 00:32.610
güvenilir ve bütünlüklü olmasını

00:32.610 --> 00:34.890
sağlamak için kullanılacaktır.

00:34.890 --> 00:35.910
Bu nedenle, bu bellek

00:35.910 --> 00:38.460
parite olmayan belleklerden daha yavaş olacaktır,

00:38.460 --> 00:40.440
ancak sunucular ve bazı üst düzey masaüstü

00:40.440 --> 00:42.000
iş istasyonları için ihtiyaç

00:42.000 --> 00:44.910
duyulacak güvenilirliğe sahiptir.

00:44.910 --> 00:47.220
Artık parite kontrolüne sahip bellek, verilerin

00:47.220 --> 00:49.320
iyi olup olmadığını doğrulamak için gördüklerine

00:49.320 --> 00:50.490
dayanarak temel bir hesaplama

00:50.490 --> 00:52.920
yapabilecektir.

00:52.920 --> 00:55.110
Ve eğer bu veri iyiyse, onu kullanacaktır.

00:55.110 --> 00:57.240
Ve eğer değilse, bir hata oluşacak ancak bunu

00:57.240 --> 00:58.560
düzeltemeyecektir.

00:58.560 --> 01:00.750
Sadece burada bir hata var ama nasıl düzelteceğimi

01:00.750 --> 01:02.460
bilmiyorum diyebilecek.

01:02.460 --> 01:04.860
Şimdi temel olarak, bu her baytın kendisiyle ilişkili

01:04.860 --> 01:07.230
bir eşlik bitine sahip olmasıyla çalışır.

01:07.230 --> 01:10.230
Yani sekiz bit yerine artık dokuz bitiniz

01:10.230 --> 01:13.860
var çünkü sekiz veri biti artı eşlik için bir bit.

01:13.860 --> 01:16.200
Şimdi bu eşlik biti doğru zamanda ayarlanacaktır.

01:16.200 --> 01:17.970
Daha sonra, bellekten okuduğunuzda, bu verilerin

01:17.970 --> 01:19.830
belleğe en son yazılmasından bu yana herhangi

01:19.830 --> 01:21.420
bir bitin değişip değişmediğini belirlemek

01:21.420 --> 01:24.330
için hesaplanacak ve karşılaştırılacaktır.

01:24.330 --> 01:25.470
Ancak bu tür bir kontrol,

01:25.470 --> 01:28.470
tek bitlik hataları tespit etmekle sınırlıdır.

01:28.470 --> 01:30.300
Ve değiştirilmiş iki bit varsa,

01:30.300 --> 01:32.310
eşlik kontrolü aslında geçebilir,

01:32.310 --> 01:35.550
çünkü unutmayın, bitler yalnızca 0 veya 1 olabilir.

01:35.550 --> 01:38.850
Örneğin, ikili sistemde 00000000

01:38.850 --> 01:39.683
olarak yazılan

01:39.683 --> 01:44.460
0 sayısını sakladığımı varsayalım.

01:44.460 --> 01:47.700
Şimdi tüm bu bitleri toplarsam, sekiz tane 0 elde ederim

01:47.700 --> 01:50.400
ve bu da bana eşlik bitim için 0 verir.

01:50.400 --> 01:52.560
Şimdi bu sayıyı bellekten okumaya gidersem

01:52.560 --> 01:54.090
ve sekiz tane 0 olduğunu görürsem,

01:54.090 --> 01:56.220
bunları toplarım ve 0 elde ederim, 0 benim

01:56.220 --> 01:58.050
eşlik bitimle 0 olarak eşleşir, yani

01:58.050 --> 01:59.850
bu iyi bir veridir.

01:59.850 --> 02:00.720
Öte yandan,

02:00.720 --> 02:02.430
diyelim ki 00000001

02:02.430 --> 02:07.200
şeklinde yazılan 1 rakamını yazıyordum.

02:07.200 --> 02:10.470
Şimdi tüm bu sayıları toplarsam 1 elde edeceğim.

02:10.470 --> 02:13.530
Bunu da dokuzuncu bölümün parite kısmına koyacağım.

02:13.530 --> 02:15.720
Bunu yaparak, şimdi buradan okuyorum ve 00000001

02:15.720 --> 02:17.133
adresini alıyorum.

02:19.560 --> 02:21.210
Ve bunların toplamı 1 olduğu

02:21.210 --> 02:22.410
ve eşlik bitimle eşleştiği

02:22.410 --> 02:24.060
için verinin iyi olduğunu biliyorum

02:24.060 --> 02:25.440
Ancak bunu belleğe koyarsam

02:25.440 --> 02:27.240
ve birkaç saat orada durursa ve

02:27.240 --> 02:31.170
bu 1 yanlışlıkla 0'a dönüşürse, şimdi bunu okursam ve 00000000 alırsam

02:31.170 --> 02:39.210
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

02:39.210 --> 02:42.510
ters gittiğini söyler.

02:42.510 --> 02:44.730
Bu sekiz bitten hangisinin değiştiğini bilmiyorum

02:44.730 --> 02:46.560
ama en azından bir tanesi değişti.

02:46.560 --> 02:47.580
Öte yandan,

02:47.580 --> 02:48.413
00000001

02:48.413 --> 02:52.260
adresindeki bu sayı 01010001 gibi bir şeyle

02:52.260 --> 02:57.210
değiştirildiyse, artık bellek tarafından yanlışlıkla

02:57.210 --> 02:58.950
0'dan 1'e değiştirilen

02:58.950 --> 03:01.590
iki bitim vardı.

03:01.590 --> 03:04.260
Pariteme baktığımda, hala 1 olacak çünkü

03:04.260 --> 03:06.930
bunları toplarken, eğer tek sayı ise, parite

03:06.930 --> 03:08.940
bitim için 1 olacak.

03:08.940 --> 03:10.770
Ve eğer bunları toplarsam ve çift sayı

03:10.770 --> 03:12.090
olursa, 0 olacaktır.

03:12.090 --> 03:13.500
Gördüğünüz gibi, parite

03:13.500 --> 03:14.940
tipi bir hesaplama kullanıyorsanız,

03:14.940 --> 03:17.340
bunun içinde iki bit değişmişse bir hata

03:17.340 --> 03:20.100
tespit edemezsiniz.

03:20.100 --> 03:23.490
Şimdi, iyi haber şu ki, çoğu hatanın yaklaşık %90'ı tek bitlik

03:23.490 --> 03:25.770
bir hata türü olacaktır ve bu nedenle eşlik

03:25.770 --> 03:28.080
kontrolü genellikle çoğu durumumuz için

03:28.080 --> 03:30.000
yeterli olabilir.

03:30.000 --> 03:31.530
Ancak bir banka için sunucu çalıştırmak

03:31.530 --> 03:33.360
gibi bir işle uğraşıyorsanız, her türlü

03:33.360 --> 03:35.520
hatanın olması kötü bir şey olabilir.

03:35.520 --> 03:37.890
Bu yüzden eşitlikten daha iyi bir şey

03:37.890 --> 03:40.650
istiyoruz ve ECC burada devreye giriyor.

03:40.650 --> 03:43.830
Şimdi ECC, Hata Düzeltme Kodu anlamına geliyor.

03:43.830 --> 03:45.930
Hata düzeltme kodu, pariteyi bir

03:45.930 --> 03:48.390
üst seviyeye taşıyan bellek türüdür.

03:48.390 --> 03:50.460
Artık sadece parite gibi bir hata olduğunu

03:50.460 --> 03:51.810
tespit etmekle kalmıyor,

03:51.810 --> 03:54.780
aynı zamanda bu hatayı sizin için düzeltebiliyor.

03:54.780 --> 03:57.300
Şimdi ECC, pariteden biraz daha yavaştır ve bu

03:57.300 --> 03:59.490
da parite olmayandan daha yavaştır.

03:59.490 --> 04:00.990
Dolayısıyla bu ekstra özellik

04:00.990 --> 04:02.610
için biraz performanstan vazgeçiyorsunuz

04:02.610 --> 04:04.290
ama ECC kullandığınızda belleğinizden

04:04.290 --> 04:11.760
daha yüksek bütünlük ve güvenilirlik elde ediyorsunuz çünkü bu hataları tespit edip düzeltebiliyor.

04:11.760 --> 04:14.040
Genel olarak, ECC veya hata düzeltme kodunun

04:14.040 --> 04:15.570
yalnızca gerçekten üst düzey

04:15.570 --> 04:18.660
iş istasyonlarında veya sunucularda kullanıldığını göreceksiniz

04:18.660 --> 04:20.190
çünkü ek maliyet ve bu ekstra

04:20.190 --> 04:22.500
yüksek bütünlük seviyesi yalnızca bu tür

04:22.500 --> 04:25.230
ortamlarda gereklidir.

04:25.230 --> 04:26.340
Şimdi merak ediyor olabilirsiniz,

04:26.340 --> 04:28.980
ECC aslında neyin yanlış olduğunu ve nasıl düzeltileceğini

04:28.980 --> 04:30.990
nasıl belirliyor?

04:30.990 --> 04:32.040
Bunu yapmak için tamponlanmış

04:32.040 --> 04:33.960
veya kayıtlı bellek olarak bilinen bir

04:33.960 --> 04:35.700
şey kullanacaktır.

04:35.700 --> 04:37.980
Artık tamponlu bellek veya kayıtlı bellek,

04:37.980 --> 04:39.570
bellek ile CPU veya işlemciniz

04:39.570 --> 04:42.870
arasında yer alacak ek bir donanıma sahiptir.

04:42.870 --> 04:44.850
Bu donanıma register adı verilir

04:44.850 --> 04:46.290
ve verileri CPU'ya gönderilmeden

04:46.290 --> 04:48.720
önce bir tamponda saklar.

04:48.720 --> 04:50.760
Bu özellik pek çok sistemde, özellikle de hataların

04:50.760 --> 04:51.990
oluşabileceği çok sayıda farklı

04:51.990 --> 04:53.550
bellek modülüne sahip sunucular gibi

04:53.550 --> 04:55.380
sistemlerde bir güvenilirlik ölçütü olarak

04:55.380 --> 04:56.910
kullanılır.

04:56.910 --> 04:59.730
Bu sistemler, büyük miktarlarda bellek modülüne sahip bu sistemler

04:59.730 --> 05:01.350
tarafından kullanılan elektrik yükünü

05:01.350 --> 05:02.370
azaltmak için verilerin

05:02.370 --> 05:04.680
tamponlanmasını veya kaydedilmesini gerektirir

05:04.680 --> 05:08.220
ve bu, aradığınız ek güvenilirliği sağlayabilmek ve bu hataları tespit edebilmek

05:08.220 --> 05:10.140
için parite veya hata düzeltme kodu belleği

05:10.140 --> 05:13.020
ile eşleştirilebilir.

05:13.020 --> 05:15.510
Şimdi hata düzeltme kod modüllerini kullanmak için

05:15.510 --> 05:18.840
CPU'nuzun yanı sıra anakartınızın da bunu desteklemesi gerekir.

05:18.840 --> 05:21.450
Bu bileşenlerden herhangi biri ECC'yi desteklemiyorsa,

05:21.450 --> 05:24.450
daha pahalı olan ECC modüllerini satın alsanız bile, bu ekstra

05:24.450 --> 05:27.150
ECC avantajını elde edemezsiniz.

05:27.150 --> 05:28.800
Bunu aklınızda tutun.

05:28.800 --> 05:32.700
Ayrıca çoğu anakart ECC'yi destekliyor ya da desteklemiyor.

05:32.700 --> 05:34.140
Bu genellikle bir seçenek değildir.

05:34.140 --> 05:36.690
Dolayısıyla, ECC'yi destekleyen bir anakart satın

05:36.690 --> 05:38.940
alırsanız, kayıtlı bellek modülleri olan ECC

05:38.940 --> 05:41.490
modüllerini satın almanız gerekecektir.

05:41.490 --> 05:44.160
Şimdi, ECC veya ECC olmayan modülleri destekleyen

05:44.160 --> 05:46.170
bir anakart bulursanız, genellikle

05:46.170 --> 05:49.110
her ikisini de aynı anda desteklemeyeceklerdir.

05:49.110 --> 05:51.570
Yani tüm modüllerinizin ECC olması gerekir

05:51.570 --> 05:53.880
ya da hiçbir modülünüz ECC olamaz.

05:53.880 --> 05:56.700
Bunların bir karışımının olması sistemde hatalara neden olabilir

05:56.700 --> 05:58.950
ve anakart bununla nasıl başa çıkacağını bilemez.

05:58.950 --> 06:00.210
Şimdi bahsetmek istediğim

06:00.210 --> 06:02.370
son şey, eğer DDR5 kullanıyorsanız,

06:02.370 --> 06:04.710
DDR5 modüllerin kendi içinde bazı hata

06:04.710 --> 06:06.780
kontrollerine sahiptir.

06:06.780 --> 06:10.500
Bu ECC veya ECC modülü olarak kabul edilmez.

06:10.500 --> 06:11.850
Böylece yeni DDR5 modüllerinin

06:11.850 --> 06:14.520
içindeki bu hata düzeltme özelliği, ECC'yi desteklemeyen

06:14.520 --> 06:17.160
anakartlarda kullanılabilir ve yine de bazı hata kontrol

06:17.160 --> 06:19.710
özelliklerine sahip olursunuz.

06:19.710 --> 06:21.420
Bu, hata kontrolünün farklı bir şeklidir

06:21.420 --> 06:23.910
ve hata düzeltme kodu olarak kabul edilmez.

06:23.910 --> 06:26.250
Bu yüzden bunu aklınızda tutun ve sahadayken bunun kafanızı

06:26.250 --> 06:27.810
karıştırmasına izin vermeyin.

06:27.810 --> 06:29.640
Bu, hata kontrolünün farklı bir

06:29.640 --> 06:32.040
şeklidir ve DDR5 modülleri hala ECC veya

06:32.040 --> 06:34.740
ECC olmayan modüller olarak satılabilir, çünkü

06:34.740 --> 06:37.290
bu dahili hata kontrolüne ek olarak, ECC'yi

06:37.290 --> 06:41.580
destekliyorlarsa CPU ve anakartla da çalışabilirler ve artık hata düzeltme

06:41.580 --> 06:44.040
kodu da vardır.

06:44.040 --> 06:45.510
Bunun biraz kafa karıştırıcı olduğunu biliyorum.

06:45.510 --> 06:48.210
Bu yüzden sahaya çıktığınızda bunun farkında olun.
