ECC ve Parity (Eşlik)

Belleklerin bir özelliği de hata yapmasıdır. Bu hatalar genellikle iki türe ayrılır. Bunlar ;

  • Donanım Hataları

  • Yumuşak Hatalar

ECC ve Parity de bizi ilgilendirecek kısım yumuşak hatalardır. Bu hatalar tekrar meydana gelmeyecek yada çok seyrek olarak tekrarlanacak hatalardır. Yumuşak hata oranı SER (Soft Error Rate) olarak bilinir. Yumuşak hatalar 1980’li yılların başında keşfedilmiş ve bellek üreticilerini şoka sokmuştur.

Yumuşak hataları oluşturan en büyük sebep kozmik ışınlardır. Tabiki yumuşak hataların oluşumuna sebep olan farklı sebeplerde vardır. Bunlar ;

Gerilim dalgalanmaları ve hattaki parazit: Buna gerilim dalgalanmaları ve prizdeki kötü gerilim neden olabilir.

Yanlış tür veya hız derecesi: Belleğin çip seti için doğru türde olması sistem erişim hızına uyması gerekir.

RF (radyo frekansı) girişimi: Sistem yakınında bulunan, sistem kablo ve devrelerinde elektrik sinyalleri üretebilen radyo alıcı/vericileri neden olur.

Statik deşarj: Anlık güç kesilmelerine neden olur, buda verileri değiştirir.

Zamanlamada hata: Veriler doğru zamanda doğru yere gelmez ve hatalara neden olur. Genellikle BIOS ayarlarının yanlış yapılmasından, sistemin gerektirdiğinden daha yavaş olan bellekten, yada saati zorlanmış işlemci ve diğer sistem bileşenlerinden kaynaklanır.

Bu problemlerin çoğu sistemin kalıcı bir biçimde bozulmalarına neden olmaz. Ama veride anlık problemlere neden olabilir. Bu hataların göz ardı edilmeleri çözüm yolu değildir. Bu problemle başa çıkmanın en iyi yolu, sistemin hata töleransının artırılmasıdır. Buda PC sistemlerdeki hataların algılanarak mümkünse düzeltilmesi için bazı yöntemlerin uygulanması demektir. Modern PC’lerde kullanılan hata töleransının temel olarak üç seviyesi ve tekniği vardır.

  • Eşlik yok

  • Eşlik

  • ECC (Error Correcting Code)

Eşliksiz sistemlerde hiç hata töleransı yoktur. Kullanılmalarının tek gerekçesi, en düşük maliyete sahip olmalarıdır. ECC eşlik sistemlerdeki gibi ek maliyet gerekmez. Eşlikli bir veri 8 yerine 9 bit içereceği için, eşliksiz olan belleklere göre maliyeti yüzde 12,5 daha yüksektir. Ayrıca, eşliksiz bellek denetleyicide eşlik veya ECC denetim bitlerini hesaplayacak mantık kapılarına gereksinim duyulmadığı için daha basittir. Güç tüketiminin en aza indirilmesine önem veren taşınabilir sistemlerde daha az DRAM ipi sayesinde gelen güç tüketiminin azalmasından faydalanılabilir. Eşliksiz sistemlerin bellek sistem veri yolu daha dardır, buda veri tamponu miktarını azaltır. Modern bir ofis masa üstü bilgisayarındaki bellek hatalarının istatiksel olasılığı, artık birkaç ayda bir hata olarak tahmin edilmektedir. Hata oranı bellek miktarına göre azalıp artacaktır. Bu hata oranı çok önemli uygulamalarda kullanılmayan alt seviye sistemlerde ihmal edilebilir.

Bir sistemde hiç hata töleransı olmaması bellek hatalarıyla karşılaşılmayacağı konusunda kumar oynamak olarak düşünülebilir. Ortaya çıktıklarında ise, bellek hatalarının onları algılamak için gereken donanımdan daha düşük bir maliyet getireceği konusunda daha fazla kumar oynamış olursunuz. Ancak riskiniz bellek hataların ciddi sorunlara yol açabilecek olmasıdır. Örneğin bir hesaplamadaki bellek hatası bir çeke yanlış bir değerin yazılmasına neden olabilir. Bir hizmet biriminde, bir bellek hatası sistemin çökmesine ve tüm LAN istek birimlerinin durarak, bir üretim gücü kaybına neden olmalarına neden olabilir. Son olarak da, eşliksiz yada ECC belleği olmayan bir sistemde problemin işlenmesi, eşlik ve ECC belleğin aksine güçtür. Bu teknikler en azından bir bellek kaynağını hatalı olarak yalıtır ve probleminin çözülmesi için gereken süre ve maliyeti azaltır.

1. EŞLİK DENETİMİ

Endüstride geliştirilen bir standart da dokuz çiplik bir banktaki çiplerin her birinin bir bit veri kullanmasıdır : karakter başına sekiz bit, artı eşlik biti adlı tek bir bit (bu standardı IBM geliştirmiştir). Bu eşlik biti bellek denetim devresini diğer bitler hakkında notlar tutmasına olanak verir. Sistemdeki her byte’ın bütünlüğü için yerleşik bir karşılıklı kontrol olmaktadır. Devre bir hata bulursa bilgisayar durur ve hatalı işleyişi bildiren bir mesaj görüntüler. Windows veya OS/2 gibi GUI işletim sistemi ile çalışılıyorsa, bir eşlik hatası kendisini genellikle kilitlenen bir sistem olarak ortaya koyar. Sistem yeniden başlatıldığında BIOS bu hatayı algılayarak ilgili hata mesajını görüntüler.

SIMM ve DIMM’ ler, eşlik biti olan ve olmayan sürümler halinde satılır. Maliyeti düşürmek, için 1994 yılından itibaren üretici firmalar eşlik denetimi yada hata algılama ve düzeltme için hiçbir yöntem kullanılmayan sistemler üretmeye başlamıştır. Bu sistemlerde bellek maliyetinden yaklaşık yüzde 10-15 tasarruf sağlayan, daha ucuz eşliksiz SIMM’ ler kullanılabilir. Eşlikli bellek, temel olarak gereken ek bellek bitlerinden dolayı daha yüksek bir sistem maliyetine neden olur. Eşlik sistem hatalarını düzeltemez ama, hataları algılayabildiği için kullanıcıyı bellek hataları ortaya çıktığında haberdar edebilir. Bunun iki temel faydası vardır.

  • Eşlik, yanlış verilere dayalı hatalı hesaplamaların sonuçlarına karşı önlem sunar.

  • Eşlik, hataların kaynaklarını işaret ederek problemin çözülmesine yardımcı olur ve sistemin bakım görmesini kolaylaştırır.

PC sistemleri eşlikli veya eşliksiz bellek kullanmak üzere tasarlanabilir. Herhangi bir ana kartta bir seçenek olarak eşliğin kullanılmasının maliyeti nerdeyse sıfırdır. Tek maliyet eşlikli belleklerin eşliksiz belleklere oranla biraz daha pahalı olmasıdır. yumuşak hatalardan kurtulmak için bu ek maliyet gözden çıkarılmalıdır.

Şimdi eşlik denetiminin nasıl işlendiğini görelim, sonrada eşlik denetiminin ECC (Error Correcting Code) adlı, sadece bellek hatalarını bulmakla kalmayıp, çalışma esnasında onları düzeltmeyi de başaran sistemi daha ayrıntılı olarak inceleyelim.

Daha öncede söylediğimiz gibi IBM ilk tek eşlik standardını oturtmuştur. Aşağıdaki açıklama tek eşlik ile ne söylenmek istenildiğini açıklamaktadır. Bir byte içindeki sekiz bit bellekte depolandığında, ya işlemcinin bir parçası olan yada ana kart üzerindeki özel bir çipte bulunan eşlik üretici/denetleyici bu veri bitlerini, byte içerisindeki 1’leri toplayarak değerlendirir. Byte içerisinde çift sayıda 1 bulunursa, eşlik üretici/denetleyici bir 1 üretir ve onu eşlik belleğin çipindeki dokuzuncu bit (eşlik biti) olarak depolar. Buda dokuz bitin toplamını (eşlik biti dahil) bir tek sayı kılar. Sekiz veri bitinin orijinal toplamı tek bir numaraysa, üretilen eşlik biti 0 olur, buda dokuz bitin toplamını tek bir sayı yapar. Temel kural, eşlik bitinin değerinin daima dokuz bitin (sekiz veri ve bir eşlik biti) toplamının, tek numara olmasıdır. Sistem çift eşlik kullansaydı, bu örnek eşlik bitinin toplamı çift sayı yapacak biçimde üretilmesi hariç aynı olurdu. Tek veya çift eşlik kullanılması fark etmez, sistem ikisinden birini kullanır ve bu durum kullanılan bellek çiplerinden tamamen bağımsızdır. Bir byte içerisindeki sekiz veri biti 0, 1, 2, 3, 4, 5, 6, 7 olarak numaralandırılır. Aşağıdaki örnekler bunun anlaşılmasını daha da kolaylaştıracaktır.

  • Veri biti numarası: 0 1 2 3 4 5 6 7 Eşlik biti

  • Veri biti değeri : 1 0 1 1 0 0 1 1 0

Bu örnekte, veri bitlerinin toplamı olan 5 bir tek sayı olduğu için, eşlik bitini dokuz bitin toplamının tek olması için 0 değeri taşıması gerekir.başka bir örneği ele alırsak.

  • Veri biti numarası: 0 1 2 3 4 5 6 7 Eşlik biti

  • Veri biti değeri : 0 0 1 1 1 0 0 1 1

Bu örnekte ise, değeri 1 olan veri bitlerinin toplam değeri 4 olduğu için, dokuz veri bitinin toplamının tek sayı olması için eşlik bitinin değerinin 1 olması gerekir.

Sistem belleği okuduğunda eşlik bilgilerini kontrol eder. Bir byte (burada bir byte dokuz bittir) eşlik değeri 1 olan çift sayıda 1 içeriyorsa, bir hata olmalıdır. Sistem hangi bitin değiştiğini, yada sadece bir tek bitin değiştiğini söyleyemez. Örneğin, 3 bit değişmişse bu byte hala bir eşlik denetimi hatası verecektir; ancak iki bit değiştiyse, bu bozuk byte fark edilmeyebilir. Çok bitli hatalar (tek bir byte içerisinde) seyrek yaşandığı için, bu algoritma belleğin iyimi kötümü olduğunun mantıklı ve ucuz bir göstergesini sunar.

Aşağıda verilen örnekler eski üç sistemdeki eşlik denetim mesajlarını içermektedir.

  • IBM PC : PARITY CHECK x

  • IBM XT : PARITY CHECK x yyyy (z)

  • IBM AT ve sonraki model XT : PARITY CHECK x yyyy

Burada x, 1 veya 2’dir:

1 = Ana kartta hata görüldü
2 = Bir genişleme yuvasında hata görüldü

bu örnekte yyyy, 0000 ile FFFF arasında ondalık bir biçimde içinde hatanın meydana geldiği byte’ı gösteren bir numaradır. (z) değeri, (S) veya (E) olabilir.

(S) = Eşlik hatası sistem biriminde gerçekleşti
(E) = Eşlik hatası opsiyonel bir genişleme şasesinde gerçekleşti.

Bir eşlik denetimi hatası bunduğunda ana kart eşlik denetim devreleri işlemeyi durdurur ve sistemin dikkatini hataya yönelten, maskelenemez bir kesme (non-maskable interrupt-NMI) üretir. Bu NMI, ROM içerisindeki bir rutinin çalışmasına neden olur. Bu rutin de ekranı siler ve ekranın sol üst köşesinde bir mesaj görüntüler. Söz konusu mesaj bilgisayar sistemine göre değişir. Eski bazı IBM sistemlerinde ROM eşlik denetimi rutini işlemciyi durdurur. Bu durumda sistem kilitlenir ve sistemi yeniden başlatmak için donanımı sıfırlamanız, yada gücü keserek tekrar vermeniz gerekir. Ama bu sırada kaydedilmeyen bütün işler ve veriler kaybedilir. Çoğu sistem bir eşlik hatası bulduğunda işlemciyi durdurmaz; bunun yerine size sistemi yeniden başlatma ve hiçbir şey olmamış gibi çalışmaya devam etme seçenekleri sunar. Ayrıca, bu sistemler eşlik hata mesajlarını da IBM’ den farklı bir formatta görüntüleyebilir, ancak sunulan bilgiler temel olarak aynıdır. Örneğin Phoenix BIOS içeren çoğu sistem aşağıdaki mesajlardan birini görüntüler:

Memory parity interrupt at xxxx:xxxx
Type (S) hut off NMI, Type (R) eboot, other keys to continue

veya

I/O card parity interrupt at xxxx:xxxx
Type (S) hut off NMI, Type (R) eboot, other keys to continue

Bu iki mesajın ilki, bir ana kart eşlik hatasını (Parity Check 1), ikincisi de bir genişletme yuvası eşlik hatasını (Parity Check 2) gösterir. Bellek hatası için xxxx:xxxx şeklinde verilen adresler IBM adresleri gibi doğrusal adresler değil, segment:ofset şeklindedir. Bu adres biçimi de hatanın konumunu tek bir byte hassaslığında bildirir.

Bu hata mesajı görüntülendikten sonra üç farklı biçimde devam edilebilir. Bunlar;

  • S tuşuna basılabilir. Bu işlem eşlik denetimini kapatır ve sistemin eşlik denetimi hatasının oluştuğu yerden çalışmaya devam etmesini sağlar.

  • R tuşuna basılması, sistemin yeniden başlatılmasına ve kaydedilmemiş işlerin yitirilmesine neden olur.

  • Başka herhangi bir tuşa basılması sistemin eşlik denetimi devrede olacak bir biçimde çalışmaya devam etmesini sağlar.

Bu problem ortaya çıkarsa, başka bir eşlik denetimi kesintisine neden olma ihtimali yüksektir. Genellikle çalışmaları kaydedebilmek için eşlik denetimini devre dışı bırakan S tuşuna basılması iyi olur. Bu durumda, sabit diskte olası bir bozulmayı önlemek için çalışmaları bir diskete kaydetmek iyi olacaktır. Ayrıca kaydetmekte olduğumuz dosyanın eski bir sürümü varsa bunu korumak en akıllıca düşüncedir. Aksi takdirde bellek bozulmasından kaynaklanan bozuk bir dosyayı kaydetme ihtimali vardır. Eşlik denetimi artık devre dışı olduğu için, kayıt işlemleri kesintiye uğramayacaktır. Daha sonra sistemin gücünü kesmek, tekrar başlatmak ve hatayı bulmak için bellek tanı yazılımını çalıştırmak gerekmektedir. Bazı durumlarda POST sistem açıldığında bu hatayı bulur, ancak genellikle hatayı bulmak için daha gelişmiş bir tanı programını sürekli olarak çalıştırmak gerekir. AMI BIOS içeren sistemler eşlik hata mesajlarını aşağıdaki biçimde görüntüler:

  • ON BOARD PARITY ERROR ADDR (HEX) = (xxxxx)

veya

  • OFF BOARD PARITY ERROR ADDR (HEX) = (xxxxx)

Bu mesajlar POST sırasında bellekte bir hata oluştuğunu ve hatanın gösterilen adreste olduğunu bildirir. İlk mesaj hatanın ana kartta, ikincisi ise bir genişletme yuvası adaptör kartında meydana geldiğini gösterir. AMI BIOS bellek hatalarını aşağıdaki biçimde de görüntüleyebilir:

  • Memory Parity Error at xxxxx

veya

  • I/O Card Parity Error at xxxxx

Bu mesajlar normal işletim sırasında gösterilen adreste bir bellek hatası oluştuğunu gösterir. İlk mesaj bir ana kart bellek hatasını, ikincisi ise bir genişleme yuvası adaptör bellek hatasını gösterir. Gerçi çoğu sistem bir eşlik hatasından sonra işlem yapmaya devam etmeye, hatta bu andan sonra eşlik denetimini devre dışı bırakmaya bile izin verir ama, sistemi bir eşlik hatası bulduktan sonra kullanmaya devam etmek tehlikeli olabilir. İki yöntemden biri aracılığı ile sistemin kullanılmaya olanak verilmesinin amacı, bilgisayara tanı koyup bakım yapılmadan önce kaydedilmeyen işler için zaman tanımaktır.

Çalışmalar kaydedildikten sonra eşlik hatasının gerekçesi belirlenir ve sistem onarılır. Bu aşamadan sonra eşlik denetimi devre dışı bırakılarak hiç bir şey olmamış gibi çalışmalara devam edilebilir ama bu arızanın olduğunu bile bile arızayı görmemezlikten gelmekten başka bir şey değildir.

Eşlik hatasında ki en önemli noktalardan biriside, bir eşlik hatası bildirildiğinde, eşlik denetiminin belleğin bozulduğunu bildirdiğini unutmamak gerekir. Bozulmuş verileri en son kaydedilen sağlam verilerin üzerine kaydetmek doğru olmayacağından, çalışmaları farklı bir yere kaydetmek gerekir. Mümkünse sadece bir diskete kayıt yapmak daha doğru olur. Bu durumlarda sabit diske kayıt yapmak zararlı olabilir. Çünkü; bozuk belleğin içeriğini kaydetmeniz durumunda sabit diskinde bozulma olasılığı az da olsa vardır.

2. ECC (Error Correcting Code)

ECC’ nin basit eşlik hatasını algılamaktan öte nitelikleri de vardır. ECC sadece hatayı algılamak yerine, tek bitlik bir hatanın düzeltilmesine de olanak verir. Buda sistemin kesintiye uğramadan ve verileri bozmadan çalışmaya devam edebileceği anlamına gelir. ECC çoğu PC ‘de uygulandığı biçimiyle çift bitlik hataları algılar, ancak düzeltemez. Araştırmalar bellek hatalarının yüzde 98’inin tek bitlik olduğunu gösterdiği için, en yaygın kullanılan ECC türü bellek denetleyicinin erişilen veri kelimesindeki tek bitlik hataları bularak düzelttiği türdür (burada çift bitlik hatalar algılanır ancak düzeltilemezler). Bu tür ECC, SEC-DED (Single Bit Error Correction-Double Bit Error Detection) olarak bilinir ve 4 byte bir sistemdeki 32 bite ek olarak 7 denetim biti, 8 byte bir sistemdeki 64 bite ek olarak 8 denetim biti gerekmektedir. 4 byte bir sistemdeki (32 bit, 486 gibi) ECC, doğal olarak eşliksiz bellek veya eşlikten daha pahalıdır, ancak 8 byte bir sistemde (64 bit Pentium gibi) ECC ve eşlik aynı maliyete sahiptir, çünkü eşlik ve ECC için aynı sayıda ek bit gereklidir. Bu nedenle eşlikli SIMM (36 bit) veya DIMM’leri (72 bit) Pentium sistemleri için satın alarak, çip seti ECC işlevini destekliyorsa ECC kipinde de kullanabilirsiniz. Pentium sistemi SIMM kullanıyorsa, her bank için iki tane 36 bit (eşlikli) SIMM eklenir ve ECC, bank seviyesinde gerçekleştirilir. Pentium sistemi DIMM kullanıyorsa, bir bank olarak tek bir eşlikli ECC 72 bit DIMM kullanılır.

ECC, bir bellek yazma işleminde bellek denetleyicinin denetim bitlerini hesaplamasını izler ve bir okuma işleminde okunanla hesaplanan kontrol bitlerini karşılaştırır ve gerektiği taktirde bozuk bitleri düzeltir. Bellek denetleyicideki bu ek ECC devresi günümüzün ucuz ve yüksek performanslı VLSI devreler çağında çok önemli değildir ama ECC yazma işlemlerinde bellek performansını etkiler. Bunun nedeni, işlemin denetim bitlerinin hesaplanmasını ve okuma sırasında sistemin düzeltilmiş bitleri beklemek zorunda olmasıdır. kısmi bir kelime yazma işleminde bile bütün kelimelerin önce okunması, etkilenen byte’ların tekrar yazılması ve yeni denetim bitinin hesaplanması gerekir. Buda kısmi kelime yazma işlemlerini, daha yavaş olan okuma-değiştirme-yazma işlemlerine dönüştürür. Neyse ki bu performans düşüşü küçüktür. Bu düşüş en fazla yüzde 1-2 civarındadır. Bu nedenle artan güvenilirlik karşılığında bu maliyet çok uygundur.

Çoğu bellek hatası tek bitlik bir doğaya sahiptir. Bu tek bitlik hatalar ise ECC tarafından düzeltilebilir. Bu hata töleransı tekniğine yer verilmesi yüksek bir sistem güvenilirliği ve katılımcılığı sağlar. ECC tabanlı bir sistem, potansiyel bir bellek hatasının maliyetinin ek bellek ve onu düzeltecek ve sistem güvenilirliğini arttıracak sistemin maliyetine ağır bastığı hizmet birimi, kritik uygulamalar için iyi bir tercihtir. Veriler değerliyse ve sistem önemli işlerde kullanılıyor ise kesinlikle ECC bellek kullanılmalıdır.

Bir Cevap Yazın