Dr. S. Murugesan
ISRO Satellite Center
Bangalore, Hindistan
“Bilgisayarlar her zamankinden daha fazla kritik işlevde kullanıldıkça, bilgisayar arızalarıyla başa çıkma teknikleri giderek daha önemli hâle gelmektedir.”
“Bir şey yanlış gidebiliyorsa, mutlaka bir zaman ya da başka bir zamanda yanlış gidecektir”
— Murphy Yasası
Bilgisayar sistemlerinin çok yüksek güvenilirliği ve kesintisiz çalışması; insanlı/insansız uzay araçları, uçak uçuş kontrol ve iniş sistemleri, nükleer santraller, hızlı ulaşım sistemleri, kimya endüstrileri, telekomünikasyon, işlem işleme sistemleri ve biyomedikal ekipmanlar gibi çok çeşitli uygulamalarda hayati öneme sahiptir.
Bilgisayarlar her zamankinden daha fazla kritik işlevde kullanıldıkça, bilgisayar arızalarıyla başa çıkma teknikleri giderek daha önemli hâle gelmektedir. Mikroelektronikteki hızlı ilerleme, bilgisayar donanımının maliyetini ve boyutunu düşürürken, yeteneklerini ve performansını da artırmıştır. Parçaların arızalanmasına rağmen programların ya da sistemlerin düzgün biçimde çalışmaya devam ettiği bir yaklaşım olan hata toleransı, artık daha büyük bir önem kazanmaktadır ve fazla bir bedel ödemeden gerçekleştirilebilir.
Çift Sistemler
Diğer yaklaşımlar, bilgisayar arızalarına karşı hata toleransı kadar makul çözümler sunmaz. Arızaları önlemeye yönelik önceki çözümler, tamamen yedekli, sıcak beklemede tutulan bilgisayarlara sahip olmayı içeriyordu; birincil sistemler arızalandığında bunlar derhâl devreye giriyordu. Bu, elbette pahalı bir yaklaşımdı, çünkü yedek sistem, bir arıza birincil sistemi devre dışı bırakmadıkça kullanılmıyordu.
Daha sonra, donanımın yüzde 100 kopyalanması ihtiyacını ortadan kaldıran özel yazılım teknikleriyle iyileştirmeler getirildi. Ancak bu çözümlerin tümünde, temel dezavantaj aynı kaldı: dâhil edilen her türlü yedeklilik, yalnızca birincil sistem arızalandığında kullanıma giriyordu. Normal işlem süreci boyunca üzerine düşen yükü taşımıyordu.
Hata Önleme Yöntemi
Hata önleme yaklaşımında, daha yüksek güvenilirlik; geliştirilmiş tasarımlar ve sistem yapılandırması, yüksek güvenilirlikli ve önceden yakılmış bileşenlerin kullanımı, rafine üretim teknikleri, dikkatli sinyal yolu yönlendirmesi, yoğun testler ve periyodik bakım gibi muhafazakâr tasarım ve üretim uygulamaları yoluyla elde edilir.
En dikkatli sistem tasarımı ve üretimiyle bile, fiziksel, kimyasal ve dış stresler nedeniyle hatalar yine de meydana gelebilir ve bu durum tüm sistemin arızalanmasına yol açabilir. Arızalar kaçınılmazdır ve bu yöntemle ulaşılabilecek güvenilirliğin bir sınırı vardır.
Yedeklilik Teknikleri
Buna karşılık hata toleransı yaklaşımı, arızaların kaçınılmazlığını kabul eder ve etkilerini bir tür yedeklilik aracılığıyla dengeler. Yedeklilik, arızaların etkilerini geçersiz kılmak için gerekli bilgiyi sağlamak amacıyla kullanılır. Bu, bir “hata yönetimi” tekniğidir.
Hayvanlar ve insanlar, atıkların uzaklaştırılması yaşam için kritik olduğu için iki böbrekle donatılmıştır. Böbrekler paralel çalışır ve her biri yükün yarısını işler. Bir böbrek arızalanırsa, diğeri yükün büyük kısmını üstlenir ve hayvan ya da insan yaşamını sürdürür.
Hata toleranslı hesaplamanın temel kavramları, ilk hesaplama makinesi kadar eskidir. Yaklaşık 150 yıl önce, 1834’te, Dr. P. Lardner, “Babbage’ın hesaplama makinesi” üzerine yazdığı makalesinde şöyle yazmıştır:
"Hesaplama sürecinde ortaya çıkan hatalara karşı en kesin ve etkili denetim, aynı hesaplamanın ayrı ve bağımsız makineler tarafından yapılmasını sağlamaktır; makineler hesaplamalarını farklı yöntemlerle yaparsa bu denetim daha da kesin olur."
Fonksiyonel yedeklilik, ya tekrarlı yürütme (zamansal) yoluyla ya da kopyalanmış donanım ve yazılım modülleri (fiziksel) ile sağlanabilir.
Hata toleranslı sistemler, arızalara rağmen, insan müdahalesi olmaksızın sistemin doğru çalışmasını otomatik olarak sürdürür. Hata toleranslı sistemler; çevrimiçi bakım, fail-safe çalışma ve sürekli kullanılabilirlik gibi özellikler sunar. Bu sistemler, onarım veya yeniden başlatma için kimsenin bulunmadığı, gözetimsiz tesisler için de caziptir.
Hata Toleranslı Bilgisayarların Tasarımı
Bir bilgisayar sisteminin güvenilir çalışması, yalnızca düzgün çalışan donanım bileşenlerini değil, aynı zamanda yazılım modüllerinin doğruluğunu da gerektirir. Uygulamada, hata toleranslı bilgisayar tasarımı ilk bakışta göründüğünden daha karmaşıktır. Tasarımcıların karşı karşıya olduğu zorluk, yedekli sistemlerin eşzamanlı çalışmasına ilişkin gerçek yaşam kısıtları karşısında hata toleransı ve yüksek güvenilirlik gereksinimlerini karşılamaktır: maliyet, verim (hesaplama gücü), ağırlık, hacim, güç tüketimi ve tasarım döngüsünün uzunluğu.
Aynı zamanda tasarımcı, tepki süresi (gerçek zamanlı uygulamalar söz konusu olduğunda), esneklik (değiştirme kolaylığı) ve bakım yapılabilirlik gereksinimlerini de karşılamak zorundadır.
Hataların Sınıflandırılması
Tüm hesaplama hataları arızalardan kaynaklanır — sistem davranışının amaçlanan davranıştan sapması. Arızalar; kaynaklarına, doğalarına (“yumuşak” ya da “sert” arızalar) ve sürelerine (kalıcı ya da geçici) göre sınıflandırılabilir.
Sert arızalar, sürekli olarak aynı arıza durumunu gösteren arızalardır; bunlar ikame edici arızalar olarak da bilinir. Örnekler arasında mantık kapılarının sıfıra ya da bire takılı kalmış çıkışları ve açık ya da kapalı konumda takılı kalan vanalar bulunur.
Yumuşak arızalar, yeniden inceleme ya da yeniden yürütme sonrasında arızalı durumu göstermeyi bırakan arızalardır. Buna bir örnek, radyasyon nedeniyle okuma/yazma belleğindeki bellek hücrelerinin durumunun değişmesi ve ardından yeniden yazma ile düzeltilmesidir.
Aralıklı arızalar, arızalı ve çalışır durumlar arasında rastgele biçimde gidip gelen arızalardır.
Geçici arızalar kısa bir süre var olur ve sonra ortadan kaybolur.
Gizli arızalar olarak bilinen bazı arızalar, normal çalışmaya zarar vermez; ancak kaynakta potansiyel bir neden olarak varlıklarını sürdürür. Buna bir örnek, belleğin kullanılmayan bölümündeki verilerin değişmesidir.
Donanım Hata Toleransı
Tüm hata toleransı tekniklerinin temel bileşeni yedekliliktir. Yedeklilik, normal çalışma için gerekenden daha fazla bilgi, kaynak (donanım ve yazılım) ya da zaman eklenmesidir.
Bilgi yedekliliği; tek bitlik parite denetimi, M-out-of-N kodlama, Hamming hata düzeltme kodları, tek duyarlıklı ya da çift duyarlıklı sağlama toplamı, Honeywell sağlama toplamı ve aritmetik kodlar gibi çeşitli hata saptama ve hata düzeltme kodlarında kullanılır.
Donanım yedekliliğinde — hata toleranslı bir sistemde en yaygın kullanılan teknik — sistemin fiziksel donanımı, sistem etkinlikleri için alternatif yollar sağlamak üzere kopyalanır. Rastgele bileşen arızalarını ve çevresel bozulmaların neden olduğu bazı işlev bozukluklarını tolere etmek için kullanılır.
Zaman yedekliliği (yeniden deneme, tekrarlı yürütme), kalıcı ve geçici arızaları ayırt etmek için kullanılabilir. İşlemci, ilk hatayı saptadıktan sonra hesaplamaları bir ya da daha fazla kez gerçekleştirir; hata ortadan kalkarsa donanım sağlıklı kabul edilir. Zaman yedekliliğinin temel güçlüğü, işlemcinin her tekrarlı hesaplamayı gerçekleştirdiğinde üzerinde işlem yapacağı verilerin aynı olmasını sağlamaktır. Ayrıca, aynı hesaplamayı birden fazla kez yapıp sonuçları karşılaştırarak bazı geçici arızalar saptanabilir.
Yazılım Hata Toleransı
Yazılım daha karmaşık hale geldikçe ve dolayısıyla hataya daha yatkın oldukça — ve birçok bilgisayar tabanlı sistemin çalışması için kritik oldukça — yazılım hatalarını ya da arızalarını bile tolere etme gereksinimi ortaya çıkmıştır. Ancak yazılımın kopyalanmış örnekleri (modülleri), her kopyada aynı yazılım hatalarına ya da arızalarına sahiptir. Bu nedenle, donanımda yapıldığı gibi yazılımın kopyalanması, yazılım arızalarına karşı tolerans sağlamada yetersiz kalır.
Dolayısıyla, etkili yazılım yedekliliği için aynı işlevi yerine getiren farklı programların kullanılması gerekir. Yedek programlar, mümkün olan yerlerde farklı yöntemler kullanır ve ortak hatalara ya da bug’lara karşı koruma sağlamak amacıyla bağımsız olarak geliştirilir. Birden çok sürüm, birden fazla işlemci üzerinde eşzamanlı olarak ya da tek bir işlemci üzerinde ardışık olarak çalıştırılır. Sonuçlar, doğru bir sonuç sağlamak için oylamaya tabi tutulur. Bu yaklaşım N-sürüm programlama olarak bilinir.
Başka bir şemada, normalde bir yazılım modülü görevleri yürütür; ancak bir arıza saptanırsa, yedek yazılım modülü aynı görevi yürütmek için kullanılır. Bu teknik, kurtarma bloğu olarak bilinir.
Çok İşlemcili Sistemler
Ortak bir bellek ve veri yolunu paylaşan çok işlemcili sistemler ile dağıtık hesaplama sistemleri ağları tamamen hata toleranslı hale getirilebilir. Ayrıca bazı arızalar altında zarif biçimde düşürülmüş modda (azaltılmış çalışma düzeylerinde) işletilebilirler. Bu durum, işletim kiplerinin zamanlanmasını ve yeniden yapılandırılmasını gerektirir.
Gerçek zamanlı kontrol sistemlerinde, bir bilgisayar, giriş modülleri aracılığıyla kontrol edilen süreç değişkenlerini ölçen çok sayıda sensörden alınan veriler üzerinde işlem yapar. Bilgisayar, verilen kontrol yasaları ve algoritmalara uygun olarak, çıkış modülleri aracılığıyla eyleyicileri kontrol eder ve böylece kontrol değişkenlerini istenen sınırlar içinde tutar. Bu uygulamalarda, bilgisayar hata toleranslı olsa bile, sensörlerin ve eyleyicilerin arızaları nedeniyle süreç kontrol sistemi bir bütün olarak başarısız olabilir. Bu nedenle gerçek yaşam uygulamalarında, hata toleransı sensörler ve eyleyiciler dahil olmak üzere tüm sisteme yayılmalıdır.
Fail-Safe ve Fail-Soft Çalışmalar
Bazı uygulamalarda, işletimsel (fiziksel) arızaların tamamen tolere edilmesi zorunlu olmayabilir; kısmen hata toleranslı sistemler yeterlidir. Fail-safe sistemlerde, arızaların etkilerini yok etmek ya da maskelemek yerine, sistem bir arıza durumunda en az rahatsızlık verecek şekilde tasarlanır.
Örneğin, bir trafik lambası kırmızıda ya da yeşilde takılı kalabilir. Açıkça, birincisi güvenli bir arızayken ikincisi güvensizdir. Dolayısıyla, trafik lambasını yeşilde takılı kalmasının son derece olasılık dışı olacağı şekilde tasarlarsak, fail-safe olur. Benzer biçimde, bir gerçek zamanlı sistemde, sistem arızası saptandığında, sistemin tüm çıkışları hangisi güvenliyse ona bağlı olarak sıfıra ya da bire zorlanabilir.
Fail-soft sistemlerde, arızalar tamamen tolere edilmez. Ancak saptanırlar ve sistemin arızalı bölümleri yalıtılır; sistemin geri kalanı düşürülmüş modda çalışmayı sürdürür. Bu tür sistemler, arızaların varlığında çalışmaya uyum sağlayabildikleri için bazen yeniden yapılandırılabilir sistemler olarak adlandırılır.
Gelişen Bir Disiplin
Hata toleranslı teknoloji, mikroelektroniğin evrimiyle yönlendirilen, zengin, karmaşık ve sürekli büyüyen bir mühendislik disiplinidir. Yüksek performanslı, düşük maliyetli mikroişlemciler ve belleklerdeki üstel büyüme, hata toleranslı hesaplamanın fiyat ve teknolojik engellerini hızla ortadan kaldırmaktadır. Çift yedeklilik ve hatta büyük ölçekli yedeklilik artık maliyet açısından engelleyici değildir ve bu tür sistemler verilen kısıtlar içinde gerçekleştirilebilir.
Bununla birlikte, hata toleransının genel problemine yönelik evrensel ve kesin bir çözüm yoktur. Kullanılacak teknik(ler)e, bunların hangi düzeyde benimsenmesi gerektiğine ve gerekli hata toleransı derecesine (tolere edilebilecek arıza sayısı) ilişkin karar şu unsurlara bağlıdır:
- uygulama;
- artan güç tüketimi, ağırlık, hacim, maliyet ve tasarım ile geliştirme süresi biçiminde ödenen bedel; ve
- üstlenilmeye hazır olunan risk düzeyi.
Bilgisayarlar önümüzdeki yıllarda yaşamlarımızda daha da büyük bir rol oynayacaktır. Son derece güvenilir ve hata toleranslı olmaları gerekmektedir.
Hindistan, Madras’ta Kasturi & Sons Ltd. tarafından yayımlanan The Hindu gazetesinin 22 Temmuz 1987 tarihli bir makalesine dayanmaktadır. İzinle yeniden basılmıştır.