Bilgisayarların yanlışlıkla 0 a 1 a geçiş yapmadığından nasıl emin olabiliriz?


63

Shocken / Nisan's: The Computing Systems'ın dijital bilgisayarlarının yapımı hakkında biraz bilgi okudum . Ancak bu kitap, bilgisayarlardaki belirli elektriksel yönlerle ilgili hiçbir şey söylemez, örneğin: Genellikle, 0 ve 1'lerin, voltaj [0, 0.9) aralığındaysa, voltajın 0 ile temsil edildiği söylenir. [0.9, 1.5) aralığında, o zaman 1'dir (voltaj değişebilir, sadece bir örnek veriyorum).

Ancak, bilgisayarın içindeki elektrik dalgalanmalarından [1] dolayı 0'ın yanlışlıkla 1 olamayacağı şekilde elektrik voltajlarının "iyi davranışlı" kaldığını asla okumam. Belki gerilimin 0,9'a çok yakın olması mümkündür, o zaman eşiği geçmesini önlemek için ne yapılır?

[1]: Var olduğunu varsayalım.


7
Akım hiçbir zaman 0.9'a çok yakın değildir, çünkü hiçbir şey akımı asla 0.9'a yakın yapmaz.
user253751 0

7
Çünkü işler 0.9'a yakın akımları vermeyecek şekilde tasarlandı. “Dizüstü bilgisayarımın 50 gigavolt'a yüklenmediğine dair sağlam bir kanıtım var; neden olmasın?” Diye sorabilirsiniz. Sadece olması için hiçbir sebep olmadığı için.
user253751 0

13
Nitpick: Çoğu dijital mantık, mantıksal durumları temsil etmek için akımları değil voltajı kullanır.
duskwuff

11
fıkra delilleri: 2011'de 5 yıl boyunca iyi çalışan bir hdd'deki dosyada biraz değiştirildim.
PlasmaHH

7
Bu yanlışlıkla anahtarlar sömürülebilir. Google'ın açıklaması bunun için ilginç bir durumdur. "Set bit X to 1" in gerçek API'si "X bitini 1'e ayarlayın ve bazen de yanlışlıkla Y bitini 1'e ayarlayın" olduğunda kesinlikle güvenliği çok daha zorlaştırır. Bu aynı zamanda overclock makineleri için de çok yaygın hale geliyor. Bir şirketin gerçekte donanımın oyunu çalıştırmak için yeterince güvenilir olup olmadığını görmek için bilinen sonuçlarla bir sürü hesaplama (her çerçeve) eklediğini hatırlıyorum.
Brian,

Yanıtlar:


100

Gerilim [0, 0.9) aralığındaysa 0 ve 1'lerin voltajla temsil edildiği sık sık söylenir, o zaman 0'dır. Gerilim [0.9, 1.5) aralığındaysa, o zaman 1'dir (1). Gerilim değişebilir, sadece bir örnek veriyorum).

Bir dereceye kadar, bu sorunu çoğunlukla gerçekçi olmayan bir örnek kullanarak yarattınız. Gerçek devrelerde mantıksal düşük ve yüksek arasında daha büyük bir boşluk vardır.

Örneğin, 5V CMOS mantığı, düşük mantık için 0-0.2V ve yüksek mantık için 4.7-5V olarak çıkış yapacak ve sürekli olarak 1.3V'nin altındaki herhangi bir şeyi düşük veya 3.7V'in üzerindeki herhangi bir şeyi yüksek olarak kabul edecektir. Yani, çıktılarda girdilerden daha fazla kenar boşluğu vardır ve mantıksal düşük sinyaller (<1.3V) için kullanılabilecek voltajlar ile mantıksal yüksek (> 3.7V) için kullanılabilecek voltajlar arasında büyük bir boşluk vardır. . Bütün bunlar özellikle gürültü için harçlık sağlamak ve tanımladığınız çok sayıda yanlışlıkla geçişi önlemek için düzenlenmiştir.

İşte interfacebus.com'dan ödünç aldığım çeşitli mantık standartları için eşiklerin görsel bir sunumu :

Mantık seviyesi eşikleri] [1]

Her sütun bir mantık standardını temsil eder ve dikey eksen voltajdır. İşte her rengin temsil ettiği şey:

  • Turuncu: Bu aralıktaki voltajlar mantıksal yüksek için verilir ve mantıksal yüksek olarak kabul edilir.
  • Açık yeşil: Bu aralıktaki voltajlar mantıksal yüksek olarak kabul edilecektir.
  • Pembe / mavi: Bu aralıktaki voltajlar tutarlı bir şekilde yorumlanmayacak, ancak pembe alandakiler genellikle yüksek olarak yorumlanacak ve mavi alandakiler genellikle düşük olacaktır.
  • Mavimsi yeşil: Bu aralıktaki voltajlar mantıksal düşük olarak kabul edilecektir.
  • Sarı: Bu aralıktaki voltajlar mantıksal düşük için verilir ve mantıksal düşük olarak yorumlanır.

4
İyi cevap, bunun daha eksiksiz olabileceğini düşünmeme rağmen: yalnızca gürültüye karşı bağışıklığı (ya da daha doğrusu korumayı) korursunuz. Dijital hatalardan sorumlu başka birçok mekanizma ve aynı koruma aracı var. İşin
cevabımdaki

1
@ MisterMystère Bu doğru! Hata düzeltme çok büyük bir konudur, ancak hepsini tek bir cevapta ele almayı başaramadım.
duskwuff

1
@ MisterMystère: "Gürültü", her türlü stokastik hata kaynağını kapsayan bir terimdir. EM girişim ve kozmik radyasyon örnekleriniz “gürültü” kategorisine giriyor. Dijital hatanın diğer tek nedeni “böcek” olarak adlandırdığımız belirleyicidir. Ancak bu soru sadece yanlışlıkla yapılan hatalarla ilgilidir.
Ben Voigt

Üçüncü merminde, renklerin veya mantığın değiştirildiğine inanıyorum. pembe düşük ve mavi yüksek olmalıdır.
Guill

@ Gill Huh? Pembe bölge V_T'nin üstünde, bu yüzden güvenilmez bir şekilde mantıksal yüksek olarak ele alınacak.
duskwuff

65

Yapamayız. Verilere kontroller ekleyerek hata olasılığını azaltıyoruz. Hangi tür verilerin kontrol edileceğine bağlı olarak, donanım veya yazılım yoluyla yapılabilir ve seri akışlardaki basit sağlama toplamlarından, herhangi bir zamanda yalnızca belirli geçişlerin yapılmasına izin veren döngüsel durum makinelerine kadar herhangi bir şekilde olabilir.

Ama bu bir kısır döngü değil mi? Verileri kontrol etmekten sorumlu olan devrenin, verilerle aynı rahatsızlıklardan etkilenmediğinden ve yanlış bir pozitif verdiğinden nasıl emin olabiliriz? Başka bir tane eklemek mi? Bunun sonunda çok az kazanç için bunun nasıl pahalıya mal olacağını görebilirsiniz.

Soru şudur: sisteminizin ne kadar güvenilir olmasını istersiniz? Mümkün olan en güvenilir bilgisayar sistemlerinden bazılarını içine alan uydular, örneğin bazen aynı olmayan sistemlerin yanı sıra oyların fazlalığına geçmek için başvuruyorlar: üç farklı bilgisayar, üç farklı kişi tarafından kodlanan aynı algoritmayı üç farklı şekilde çalıştırıyor, ve eğer bilgisayarlardan ikisi diğerlerinden farklı bir sonuç verir, yeniden başlatılır (ve tekrar olursa, izole edilir). Ancak yine, iki bilgisayar aynı anda hatalıysa, yanlış bilgisayar yeniden başlatılır / izole edilir. Genellikle "soğuk yedeklilik" yeterlidir: bir birincil ve ikincil devre uygulanır, birincil bir tür (korumasız) izleme devresi tarafından bir hata algılanana ve ikincil devre değiştirilene kadar çalışır. Sadece bir hata ise RAM’de kodu yenilemek için tekrar çalıştırılabilir. Çizgiyi nereye çekeceğinize akıllıca karar vermeniz gerekiyor,% 100 güvenilir bir hata tespit devresi yapmak imkansız.

Uydular (özellikle yüksek irtifada veya Van Allen kuşağında) ve nükleer santrallerde veya diğer radyoaktif ortamlarda bulunan bilgisayarlar özellikle (anahtar sözcük :) :) Tek Olay Yarı iletkenlerin kristal kafesleri ile çarpışan ya da emilen yüksek enerjili parçacıklar nedeniyle kümeleri ya da mandalları . Bu alanları kapsayan kitaplar kesinlikle en iyi bahis olacaktır. Boya radyasyonun yer değiştirme hasarından dolayı bozulur, bu nedenle yarı iletkenlerin gelen radyasyondan da zarar görmesi veya üzülmesi tamamen anlaşılabilir bir durumdur.


2
'Kısır döngü' yazmak istediğinizden emin değilim, ancak 'kısır döngü' aynı derecede komik geliyor.
svavil

1
Aslına bakarsan bu kıskanç bir çemberdi ama sıska bir çember beni güldürürdü :)
Bay Mystère

1
Tek bir bit hatasını n bit olarak bulmak ve düzeltmek yalnızca log n bitlerini alır.
Thorbjørn Ravn Andersen

1
Bu bana radyoaktif bileşiklere maruz kalan bilgisayarlardaki donanım hatalarını hesaba
katacak

Uydular hakkında hiçbir şey bilmiyordum, üç farklı 'grup' (ya da daha fazla) aynı şeyi farklı bir şekilde kodluyordu. Kulağa hoş geliyor :)
kalmanIsAGameChanger

33

Tek olay üzücü durumları artık bir uzay ya da uçak meselesi değil; Onları on yıldan uzun bir süredir yüzeyde görüyoruz, belki şimdiye kadar.

Yine de belirtildiği gibi, en azından uzay uygulamalarında üçlü oylama kullanarak üzücü durumlarla uğraşıyoruz (her bit gerçekten üç, ve üçte iki oy kazanıyor, yani diğer ikisini değiştirecek bir tane varsa). Ve daha sonra, ECC veya EDAC , tek olay olay kümelerini temizlemek için (yalnızca üçte ikisini yanlış iten oylar) tek bir olay güncelleme oranından daha yüksek bir hızda RAM'den geçen temizleyicilerle birlikte.

Sonra toplam doz var; zamanla malzeme çalışamayacak kadar radyoaktif hale gelir, bu nedenle aracın ömrünü aşacak kadar malzeme kullanırsınız. Normalde yüzeyde endişe ettiğimiz bir şey değil. (Ve mandal) Paralel olarak üç / çoklu mantık kümesi kullanmak, geleneksel rad-hard teknolojisini kullanmak zorunda kalmamanın bir yoludur / ve bunun ne kadar iyi çalıştığını öğrenebilirsiniz.

Uzay için nasıl bir şeyler yapılacağını bilenler büyük oranda emekli olmuş ya da taşınmışlardır, bu yüzden şimdi alan çöpü bırakan birkaç programımız var. Ya da herkesin işini yapmaya çalışmak ve kontrollü bir yeniden giriş ve yanma yapmak yerine, dünya genelindeki ürünler gibi bir alanı ele almak, şimdi her takımyıldızdan belirli bir miktarda alan çöpü atılmasını bekliyoruz.

Yüzeyde üzgün görüyoruz. Satın aldığınız herhangi bir memory stick'te ( DRAM ) bir FIT, Zamanında Arızalar ve içinde RAM bulunan herhangi bir yonga (tüm işlemciler, diğerleri) de FIT özelliklerine sahip olacaktır (RAM (SRAM) blokları için). RAM daha yoğundur ve daha küçük transistörler kullanır, dolayısıyla dahili olarak oluşturulmuş veya harici olarak üzülmeye daha yatkındır. Veriler için kullandığımız, video izleyen bir video vb. Belleğin farkına varmadığımız veya umursamadığımız çoğu zaman, üzülecek kadar uzun oturmadan önce tekrar okunur ve kullanılmaz. Bir program veya çekirdeği tutanlar gibi bazı bellekler daha risklidir. Ancak, uzun süre önce sadece bilgisayarımızı yeniden başlatma veya telefonumuzu sıfırlama / yeniden başlatma fikrine alışkın olduk (bazı telefonları / markalar pili düzenli aralıklarla çıkarmak zorunda kalacaksınız). Bu moral bozukluğu veya kötü yazılım mı, kombinasyon mu?

Bireysel ürününüzün FIT numaraları, bu ürünün ömrünü uzatabilir, ancak büyük bir sunucu grubu alır, tüm RAM veya yongaları veya MTBF'nin geçmiş yıllardan veya siparişlerden günler veya saatler arasında bir yere gittiğini belirlersiniz. Çiftlik. Ve bunların neler yapabileceğini kapsayan ECC var. Daha sonra, bir görevi tamamlamayan makineleri veya yazılımı kapsayacak şekilde işleme yükünü arıza verenlerle dağıtırsınız.

Katı hal depolaması isteği ve dönen medyadan taşınması bununla ilgili bir sorun yarattı. İçin kullanılan depolama SSD'ler onsuz Veri kaybını olurdu çünkü biz mi, EDAC dayanır olandan (ve diğer uçucu olmayan depolama) daha hızlı ve daha ucuz olsun, çok daha kırılgandır. Hız, maliyet ve uzun ömürlülüğü dengelemek için matematiği yaparak, her şeyi bir sürü fazla bit atarlar ve herşeyi eklerler. Geri döndüğümüzü görmüyorum; millet, küçük bir pakette bulunan ve ürünün fiyatına hâkim olmayan her yerde daha fazla geçici olmayan depolama istiyor.

Normal devreler söz konusu olduğunda, dijital devreler için transistör kullanımının ilk günlerinden günümüze kadar transistörün lineer kısmından geçiyoruz ve bir anahtar olarak kullanıyoruz, yapışmasını sağlamak için biraz fazla olan rayların arasına çarpıyoruz . Duvarınızdaki ışık düğmesi gibi, bir yayın parçasının dinlenmeye yardımcı olduğu ve orada tuttuğu yarı yoldan daha fazlasını döndürürsünüz. Bu yüzden dijital kullanıyoruz ve lineer bölgede yaşamaya çalışmıyoruz; erkenden denediler ama başarısız oldular. Kalibre kalamadılar.

Bu yüzden sadece transistörü raylarına çarptık ve bir sinyalin her iki tarafı bir sonraki saat döngüsüne yerleşti. Büyük acılar çekiliyor ve mevcut araçlar, çip tasarımının analizini yaparken, tasarım gereği zamanlamasında marj olduğunu görmek için eskisinden çok daha iyi. Sonra her kalıbın iyi olduğunu görmek için her kalıbın (bu ve / veya ambalajdan sonra) her bir kalıbın üzerinde test edilmesi.

Chip teknolojisi, büyük ölçüde deneylere dayalı istatistiklere dayanır. İşlemcinizi overclock ettiğinizde, bu marjı zorluyorsunuz, reklamı yapılan saatin hızı, sıcaklık vb. İçinde kalıyorsunuz ve şansınız problem yaşama ihtimalinizi önemli ölçüde düşürüyor. 3 GHz xyz işlemci, 4 GHz'de başarısız olan ancak 3 GHz'de geçen 4 GHz'lik bir çiptir. Parçalar temelde üretim hattından hız derecesine göre derecelendirilir.

Daha sonra, yongalar veya panolar arasındaki bağlantılar vardır ve bunlar da sorunlara maruz kalır ve bu arayüzlerdeki hatayı azaltmak için standartlara ve pano tasarımlarına vb. Girme konusunda çok zaman ve çaba harcanır. USB , klavye, fare, HDMI , SATA vb. Tahtadaki tüm izlerin yanı sıra. Tahtanın üstünde ve dışında karışma sorunları var; Yine, sorunların yanı sıra, ilk etapta sorunlardan kaçınma deneyimini kullanırsanız, birçok aracı da kullanabilirsiniz; ancak sorunların ve sıfırların tamamen meşgul olduğunu göremeyeceğimiz başka bir yol.

Teknolojilerin hiçbiri, hatta alan bile mükemmel değildir. Sadece yeterince iyi olmalı, ürünün yeterli bir yüzdesi, ürünün beklenen ömrünün yeteri kadarını kapsamalıdır. Akıllı telefonların bazı yüzdesi en az iki yıl sürmeli ve bu kadar. Eski dökümhaneler veya teknoloji daha deneysel verilere sahiptir ve daha güvenilir bir ürün üretebilir, ancak daha yavaştır ve yeni tasarımlar olmayabilir, o yüzden işte gidiyorsunuz. Son nokta sadece bu, herkes için bir kumar.

Sorunuzla ilgili olarak, bir sinyalin her bir ucundaki transistörler, doğrusal bölgeleri boyunca hızlı bir şekilde itilir ve raylardan birine yaslanır. Her bir birleşimsel yol üzerinde analizler, yolun sonundaki saat kilitlenmeden önce yerleşeceğini, böylece gerçekten sıfır veya bir kere yapıldığını belirlemek için yapılır. Analiz, deneylere dayanmaktadır. Bir ürün hattının ilk yongaları tasarım sınırlarının ötesine itilir, tasarımda marj olduğunu belirlemek için schmoo çizimleri yapılır. Süreçte farklılıklar yapılır ve / veya yavaş ve hızlı talaşları temsil eden bireysel adaylar bulunur. Bu karmaşık bir süreçtir ve bazılarının daha az materyali vardır, bazıları daha az çalışır, daha hızlı çalışır ancak daha fazla enerji kullanır veya daha yavaş çalışır, vb.

Bunları da kenar boşluklarına kadar itiyorsunuz. Ve temel olarak, tasarımın üretime girmeye hazır olduğu konusunda sıcak bir bulanıklık hissi elde edin. JTAG / sınır taraması, kombinasyon yollarının bir tasarım için tümüyle katı olduğunu görmek için her bir mandallı durum arasındaki çiplerin arasından rasgele desenler çalıştırmak için kullanılır. Ve endişelerin olduğu yerlerde, bazı yönlendirilmiş fonksiyonel testler de olabilir. Ürünün iyi olduğundan emin olmak için ilk silikon ve belki de rastgele testlerin daha fazla denenmesi. Arızalar / meydana geldiğinde, bu sizi üretim hattındaki daha fonksiyonel testlere geri götürebilir. Büyük oranda istatistiklere / yüzdelere bağlıdır. 1/1000000 kötü çıkış, tamam ya da 1/1000 ya da her neyse; bu çipten ne kadarını üreteceğinizi düşündüğünüze bağlı.

Güvenlik açıkları burada ve başkalarıyla belirtildiği gibidir. Öncelikle çipin kendisi, tasarım ve işlem ne kadar iyiydi, satın aldığınız üründe belirli bir çipin en zayıf yolu ne kadar yakındı? Kenara çok yakınsa, sıcaklık değişikliği veya başka zamanlama sorunlarına neden olabilir ve bitler bir veya sıfıra yerleşmemiş verileri kilitler. Sonra tek olay üzüntüleri var. Ve sonra gürültü var. yine şeyler zaten bahsetti ...


4
İlk paragrafınız, havacılık ortamlarıyla ilgili herhangi bir sorun çıkmamış gibi görünmesine rağmen, SEU’nun artık sadece bu ortamlarda tecrübe edilmediğini kastediyorsunuz.
W5VO

SEU'ların, BGA'lardaki SnPb lehiminden, bazı kurşunların serbest nötron aktivitesinden ayrı olarak Uranyum çürüme zincirinin bir parçası olmasından kaynaklanabileceğini unutmayın.
Peter Smith

@ W5VO, evet, demek istediğim, radyasyona bağlı sinirliliklerin artık sadece bir uzay problemi olmadığı, yüzeye kadar bir problem oldukları anlamına geliyordu. Uzayda olduğu kadar kötü değil, ama şimdiki zaman.
old_timer

1
Bazı DEC minibilgisayar otobüslerinin pratikte kararlılıkla ilgili problemleri olduğunu hatırlıyor gibiyim. Bu, isimlendirdiklerinizden bit hataları için ayrı bir mekanizmadır, değil mi? Ya da değil?
davidbak

2
@davidbak: Metastabilite, en yaygın etkisi, bazı bitlerin değerlerinin bazı durumlarda son zamanlarda bazı girdilerin düşük veya yüksek olmasına bağlı olduğu durumlarda, girdiyle tutarlı bir şekilde bir arada geçiş yapamamasıdır. düşük olmak, ne de yüksek olmakla tutarlı bir şekilde olmak, ancak bunun yerine iki davranışın keyfi bir karışımını sağlayabilir. Örneğin, bir düğmeye basıldığında kodun dallanması gerekiyorsa, program sayaç bitleri, düğmeye basıldığında ya da olmasaydı sahip olacakları değerlerin rasgele bir karışımını tutabilir.
supercat,

12

Basit bir cevabın peşindeyseniz:

Bir bilgisayardaki her dijital bileşen, ürettiği çıktılarda kabul ettiği girdilerden daha kısıtlıdır. Örneğin, 0V ile 2V arasındaki herhangi bir "giriş" değeri 0 olarak kabul edilir, ancak 0 "çıkış" her zaman 0 ile 0,5V aralığında olur. (Bazı gerçek değerler için duskwuff'ın cevabına bakınız.)

Bu, her bir bileşenin, hat boyunca meydana gelen sapma veya gürültünün bir kısmı için "düzeltmeye" yardımcı olduğu anlamına gelir. Elbette, eğer gürültü yeterince büyükse, sistem telafi edemez. Yüksek radyasyonlu ortamlardaki bilgisayarlar, 0'lara değişen 1'lerden ve bunun tersi yönde sıkça etkilenebilir.

Temel olarak, bilgisayarlar, çoğu pratik amaç için yeterince iyi olan belirli seviyedeki gürültü / parazitlere tolerans gösterecek şekilde tasarlanmıştır .


8

Sinyallerin termal (ve diğer) gürültü nedeniyle 0 ile 1 arasında değişmesi teorik olarak mümkündür, ancak bu olası değildir.

Dijital devreler 'gürültü marjı' adı verilen bir özellik ile tasarlanmıştır. Bu, çıkış durumu kaymadan önce girişinin değişmesi gereken miktardır. Genel olarak CMOS devrelerinde bu, besleme geriliminin yaklaşık% 50'sidir. Bu devrelerde kaçınılmaz termal gürültü (0 kelvin'in üzerindeki herhangi bir sıcaklıkta hareket eden elektronlardan geliyor), << 1 mV gürültü üretiyor ve bu çivilerin 500 mV'yi aşması olasılığı oldukça düşük.

Dijital (örneğin CMOS) kapılar kazanç ve doyma özelliklerine sahiptir. Bunun anlamı, giriş sinyali aralığın ortasına yakın olduğunda, çıkışın hızlı bir şekilde (yüksek kazanç) değişmesidir, ancak aralığın aşırı uçlarına yakın olduğunda yavaşça değişir. Bunun sonucu, bir giriş sinyali raylara “yakın” olduğunda, çıktının daha da yakın olması - bu, gürültünün artmayacağı anlamına gelir .

Yukarıda belirtilen diğer özellikler (hata düzeltme vb.), Oluşsa bile hataların yayılmadığı anlamına gelir.


4

İletişim kanalları ve manyetik depolama (ve hatta bazen RAM) gibi hataya açık olan sistemlerde, hatalı verileri reddetmek veya küçük hataları düzeltmek için bir sağlama toplamı, CRC veya ECC depolanır.

Genelde ikili sistemler bunun mümkün olmayacağı şekilde tasarlanır, ancak birkaç milyon veya milyarda * kez kozmik bir ışın veya bir ses patlaması bir şeyleri hat üzerinde dürtecek, yolsuzluğu korumak için hata saptama / düzeltme gerekli olacaktır. bilgisayarı ciddi şekilde etkilemekten.

* Haberleşme kanalları çok daha yüksek bir hata oranına sahip olabilir!


4

Bilgisayar donanımı daha sağlam ve güvenilir hale geldi. Ancak donanım basit bir cevap için çok geniş. Bununla birlikte, ortak bir masaüstü bilgisayar ile bir kurumsal sunucu bilgisayar arasında güvenilir bir fark olduğunu bilmek ilginç olabilir. Sunucu donanımıyla ilgili bu soru / cevap konusunu buldum . Bir sunucu, karşılaştırılabilir bir masaüstününkine birçok kez mal olacak. Maliyet, beklenmedik bir şekilde "1 ve 0 geçişi" yapma olasılığı birkaç kat daha düşük olan daha iyi donanımın sonucudur.

Ancak donanım hikayenin sadece yarısı. Bilgisayarlar ayrıca yazılımı kullanarak beklenmeyen hatalardan verileri koruyabilir. Hamming kodu , az miktarda ek veri ekleyerek, az sayıda hatanın yalnızca algılanamadığı ancak düzeltilemediği bir örnektir.


Güvenilirliğin yoğunluk için alınıp satıldığı MLC flaş hariç,
Jasen

3

Var iki şekillerde genel olarak bir mantık biraz olma olasılığını en aza indirmek için kullanılır açık yanlışlıkla (0-1 veya 0 1).
İlk olarak sağlayarak bir büyük bir boşluk , bir 0 ve 1 için tanımlandığı gerilim seviyesi arasında, mümkün olduğu kadar . Bahsettiğiniz gibi, 0 voltaj değeri <.9v olarak tanımlanırken, 1 voltaj>> 2,9v olarak tanımlanır (sizin de .9 ile 1.5 arasında değil). Bu 2v'lık bir voltaj açığı bırakır. Bu, sinyal voltajının "kazayla" bit durumunu değiştirmeden önce (çok düşük olasılıkla) % 200 oranında değişmesi gerektiği anlamına gelir .
İkinci gereğidir "clocking"mantık sinyalleri. “Kazara” voltaj / gürültü rastgele ve kısa ömürlü olduğundan, durumun sadece belirli (ve kısa) aralıklarla değişmesine izin vererek, saatin zamanındaki “değişkenliğin” çarpma olasılığı en aza indirilir.

Elbette, gerekli güvenilirlik derecesine (ECD, ECC, vb.) Bağlı olarak kullanılan diğer araçlar ve yöntemler vardır.


2

İyi mühendislik.

Veri bozulmalarını önlemek veya yeterince önlenemediğinde (örneğin ECC belleği ) düzeltmek için çok fazla çaba sarf edilir .

Veri bozulmasına neden olabilecek şeyler şunlardır:

  • elektriksel olarak gürültülü ortamlar
  • güçle ilgili konular
  • zamanlama sorunları (örneğin, saat ve veri hatları arasında veya iki diferansiyel çizgi arasında)
  • elektriksel çapraz konuşma

Kısacası, birçok mühendislik dijital tasarımlara girmiştir, böylece yazılım mühendisleri '0', '0' anlamına gelir ve '1' '1' anlamına gelir.


Ve elbette, ECC hafızası ayrıca, tamir edilebilecek olandan daha fazla parça bozulursa maskelenemez bir kesmeyi (NMI) tetiklemek gibi eğlenceli şeyler yapabilir. Modern ECC RAM için bunun 64 bitlik bir bitten fazla hata olduğunu düşünüyorum (kodlamalar tek bitlik hataları düzeltebilir ve iki bitlik hataları algılayabilir ancak düzeltemez), ama bu konuda yanılmış olabilirim. Verilerinize önem verdiğiniz durumlarda, onarımın ötesinde bir şey yanlışsa sistemi derhal durdurmanız, verilerin güvenilir olup olmayacağını bilmeden (ya da daha kötüsüne güvenilemeyeceğini bilerek) bilmemek için çok iyi bir tercih olabilir.
CVn

2

Pratik elektronik bilgisayarların iki temel yönü:

  1. Çok kararlı bir güç kaynağı

  2. Zaman (genellikle saat frekansı veya gecikme olarak tanımlanır)

Hesaplama sistemleri için güç kaynakları çok kesin bir şekilde belirtilmiş ve düzenlenmiştir. Aslında, herhangi bir hesaplama sistemi için güç kaynağı tipik olarak birkaç kez düzenlenir: güç kaynağında (veya akü şarj cihazında), ana karta giren ana girişte, kızaklara girişte ve en sonunda çipin kendisinde.

Bu, çok fazla gürültüyü ortadan kaldırır (elektriksel uçuculuk). CPU'nun gördüğü, mantığı işlemek için kullanabileceği çok kararlı, uçucu olmayan bir voltaj kaynağıdır.

Bir sonraki ana ara değer kaynağı (0 veya 1 sayılan değerler arasındaki gerilimler) değerler geçişinde gelir. Ya 1, 0'a (düşme süresi) ya da 0, 1'e (yükselme zamanı) dönüşür. Devre çıkışını kabul etmeden önce geçişin bitmesini beklemek dışında, bu konuda gerçekten fazla bir şey yapamazsınız. Geçiş tamamlanmadan önce devrenin çıktısı çöp olarak kabul edilir.

Mühendislikte bu sorunun çözümü, sonuçların kağıt üzerinde doğru olması için ne kadar beklemeniz gerektiğini yazmanızdır. CPU saat frekansının kökeni budur. CPU'yu kaç GHz'de çalıştırabileceğiniz, CPU'daki durum değişikliklerinin dengelenmesinin ne kadar sürdüğüne bağlıdır.

Aslında üçüncü bir oynaklık kaynağı var: devreye girdi. Bu sorunun çözümü yukarıdaki genel soruna benzer: sisteme giren sinyalin (voltaj veya akım) sabit olduğundan ve sinyalin dengelenmek için yeterli zamana sahip olduğundan emin olun.

Sorunun ikinci kısmı neden işlemden önce mandallara ya da yazmaçlara girdileri örneklememizdir. Sinyal çöp olabilir. Ancak, işlendiklerinde kayıtların içinde 0 veya 1 çöp olacaktır. Sorunun ilk kısmı, garantilerin ne için olduğu.


2

Ancak, elektrik voltajlarını bilgisayardaki elektriksel uçuculuk 1 nedeniyle 0 yanlışlıkla hiç bir zaman 1 olamayacak şekilde "iyi davranmış" tutan şeyleri asla okumam . Belki gerilimin 0,9'a çok yakın olması mümkündür, o zaman eşiği geçmesini önlemek için ne yapılır?

Geri besleme, eşik voltajına yaklaşmasını engelleyen ve iyi davranmaya zorlayan şeydir.

Bu genellikle bir tür kilitleme devresi, genellikle de saatli bir kilitleme devresi şeklindedir.

Basit bir örnek olarak flip-flop'u düşünün. . Çıktı, ek bir giriş olarak mantık devresine geri beslenecek şekilde tasarlanmıştır. Bu nedenle, eleman içindeki mantık neyin bastığını bilir ve diğer girdiler tersi duruma zorlayana kadar aynı değeri çıkarmaya devam eder.

Devre, transistörler tamamen açık veya tamamen kapalı olacak şekilde tasarlandığından, güç kaynağının ve topraklama sınırlarının yakınında her zaman çıkacaktır - 0.9V seviyesine yaklaşmaz ve geçiş yaptığında hızlı ve tamamen hareket eder. diğer devlete. Devreler, iki durum arasındaki analog bölgede çalışmamak için özel olarak tasarlanmıştır.


0

Normal çalışma koşulları altında, 0 ve 1'ler nadiren yanar, ancak kötü çalışma koşullarında (yani düşük pil veya AC gücü kesildikten ve kapasitördeki voltaj düşdükten kısa süre sonra), tuhaf şeyler olur ve 0 ve 1'ler karışır her zaman.

Bu nedenle, kilitlemek istemediğiniz savunma kodunu (yazılım veya HDL) yazıyorsanız, her zaman bir sayının karışık olabileceği durumu düşünmelisiniz . Örneğin,

while(1)
{
  i++;
  do something here
  if (i == 10) break;
}

Daha iyi değiştirmek ==için >= her ihtimale karşı değerini i9 ila 11 ya da dek döngü çıkmak asla neden olacak 10'dan büyük herhangi bir sayı, gelen atlar i(4 milyar tekrardan sonra diyelim) 0'a etrafında sarar.

while(1)
{
  i++;
  do something here
  if (i >= 10) break;
}

Olur, güven bana ...


Ne olursa ibazı büyük negatif sayı atlar?
Jasen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.