Wie können wir sicher sein, dass Computer niemals versehentlich eine 0 durch eine 1 wechseln?


63

Ich habe in Shocken / Nisan etwas über den Bau eines Digitalcomputers gelesen: Die Elemente von Computersystemen . Aber dieses Buch sagt nichts über bestimmte elektrische Aspekte in Computern aus, zum Beispiel: Es wird oft gesagt, dass Nullen und Einsen durch Spannung dargestellt werden, wenn die Spannung im Intervall [0, 0,9) liegt, dann ist es eine 0. Wenn die Spannung ist im Intervall [0.9, 1.5) ist es dann eine 1 (Spannungen können variieren, ich gebe nur ein Beispiel).

Aber ich habe nie gelesen, was elektrische Spannungen so "brav" hält, dass aus einer 0 aufgrund elektrischer Flüchtigkeit [1] im Computer niemals versehentlich eine 1 werden kann. Vielleicht ist es möglich, dass die Spannung sehr nahe bei 0,9 liegt. Was wird dann unternommen, um zu verhindern, dass sie die Schwelle überschreitet?

[1]: Angenommen, es existiert.


7
Der Strom ist nie sehr nahe bei 0,9, weil nichts den Strom jemals sehr nahe bei 0,9 macht.
user253751

7
Weil Dinge so ausgelegt sind, dass sie keine Ströme in der Nähe von 0,9 ausgeben. Sie könnten genauso gut fragen: "Ich habe solide empirische Beweise dafür, dass mein Laptop nicht mit 50 Gigavolt aufgeladen ist. Warum nicht?" Einfach, weil es keinen Grund dafür gibt.
user253751

13
Nitpick: Die meisten digitalen Logikfunktionen verwenden Spannungen und keine Ströme, um logische Zustände darzustellen.
Duskwuff

11
Anekdotenbeweis: 2011 hatte ich ein bisschen in einer Datei auf einer Festplatte vertauscht, die 5 Jahre lang einwandfrei funktionierte.
PlasmaHH

7
Diese versehentlichen Schalter sind ausnutzbar. Die Erklärung von Google ist hierfür ein interessanter Fall. Es macht die Sicherheit auf jeden Fall viel schwieriger, wenn die echte API für "Bit X auf 1 setzen" "Bit X auf 1 setzen und manchmal versehentlich Bit Y auf 1 setzen" ist. Dies ist auch bei übertakteten Maschinen häufig der Fall. Ich erinnere mich, dass eine Firma tatsächlich eine Reihe von Berechnungen (für jeden Frame) mit bekannten Ergebnissen hinzugefügt hat, um festzustellen, ob die Hardware zuverlässig genug war, um das Spiel auszuführen.
Brian

Antworten:


100

Es wird oft gesagt, dass Nullen und Einsen durch Spannung dargestellt werden, wenn die Spannung im Intervall [0, 0,9) liegt, dann ist es eine 0. Wenn die Spannung im Intervall [0,9, 1,5) liegt, dann ist es eine 1 ( Spannungen können variieren, ich gebe nur ein Beispiel).

Bis zu einem gewissen Grad haben Sie dieses Problem hauptsächlich anhand eines unrealistischen Beispiels verursacht. In realen Schaltungen gibt es eine viel größere Lücke zwischen logisch niedrig und hoch.

Beispielsweise gibt eine 5-V-CMOS-Logik 0 bis 0,2 V für logisch niedrig und 4,7 bis 5 V für logisch hoch aus und akzeptiert konsistent alles unter 1,3 V als niedrig oder alles über 3,7 V als hoch. Das heißt, es gibt viel engere Abstände an den Ausgängen als an den Eingängen, und es verbleibt eine große Lücke zwischen Spannungen, die für logisch niedrige Signale (<1,3 V) verwendet werden können, und Spannungen, die für logisch hohe Signale (> 3,7 V) verwendet werden können. . Dies alles ist speziell darauf ausgelegt, Rauschen zu berücksichtigen und das von Ihnen beschriebene versehentliche Umschalten zu verhindern.

Hier ist eine visuelle Darstellung der Schwellenwerte für eine Vielzahl von Logikstandards, die ich von interfacebus.com ausgeliehen habe :

Logikpegelschwellen] [1]

Jede Spalte repräsentiert einen logischen Standard und die vertikale Achse ist die Spannung. Hier ist, was jede Farbe darstellt:

  • Orange: Spannungen in diesem Bereich werden für logisch hoch ausgegeben und als logisch hoch akzeptiert.
  • Hellgrün: Spannungen in diesem Bereich werden als logisch hoch akzeptiert.
  • Pink / Blau: Spannungen in diesem Bereich werden nicht konsistent interpretiert, aber diejenigen im rosa Bereich werden normalerweise als hoch interpretiert, und diejenigen im blauen Bereich sind normalerweise niedrig.
  • Blaugrün: Spannungen in diesem Bereich werden als logisch niedrig akzeptiert.
  • Gelb: Spannungen in diesem Bereich werden für logisch niedrig ausgegeben und als logisch niedrig interpretiert.

4
Gute Antwort, obwohl ich denke, dass es vollständiger sein könnte: Sie decken nur die Immunität gegen (oder besser gesagt, den Schutz gegen) Lärm ab. Es gibt viele andere Mechanismen, die für digitale Fehler verantwortlich sind, und ebenso viele Schutzmaßnahmen. Das Gute ist, dass ich in meiner Antwort nicht auf die Störfestigkeit eingegangen bin :)
Mister Mystère

1
@ MisterMystère Das stimmt! Die Fehlerkorrektur ist allerdings ein riesiges Thema, und ich könnte unmöglich alles in einer einzigen Antwort behandeln.
Duskwuff

1
@ MisterMystère: Nun, "Rauschen" ist ein Begriff, der alle Arten von stochastischen Fehlerquellen abdeckt. Ihre Beispiele für elektromagnetische Störungen und kosmische Strahlung fallen in die Kategorie "Rauschen". Die einzige andere Ursache für digitale Fehler ist ein deterministischer Fehler, den wir als "Fehler" bezeichnen. Bei dieser Frage geht es aber nur um die zufälligen Fehler.
Ben Voigt

In Ihrer dritten Kugel glaube ich, dass Sie die Farben oder die Logik gewechselt haben. Das Rosa sollte niedrig und das Blau sollte hoch sein.
Guill

@ Guill Huh? Der rosa Bereich liegt über V_T, daher wird er unzuverlässig als logisch hoch behandelt.
Duskwuff

65

Wir können nicht. Wir verringern lediglich die Fehlerwahrscheinlichkeit, indem wir den Daten Überprüfungen hinzufügen. Abhängig davon, welche Art von Daten geprüft werden soll, kann dies entweder über Hardware oder Software geschehen und von einfachen Prüfsummenbits in seriellen Strömen bis hin zu zyklischen Zustandsautomaten jede Form annehmen, so dass zu einem bestimmten Zeitpunkt nur bestimmte Übergänge vorgenommen werden können.

Aber es ist ein Teufelskreis, nicht wahr? Wie können wir sicherstellen, dass der für die Prüfung der Daten zuständige Schaltkreis nicht von denselben Störungen wie die Daten betroffen ist, und ein falsches Positiv abgeben? Hinzufügen eines weiteren? Sie können sehen, wie teuer dies für sehr wenig Gewinn am Ende werden kann.

Die Frage ist: Wie zuverlässig soll Ihr System sein? Satelliten, in die einige der zuverlässigsten verfügbaren Computersysteme eingebettet sind, greifen beispielsweise manchmal auf die gegenseitige Redundanz nicht identischer Systeme sowie auf Abstimmungen zurück: Auf drei verschiedenen Computern wird derselbe Algorithmus ausgeführt, der von drei verschiedenen Personen auf drei verschiedene Arten codiert wird, und wenn ja, auf eine von den Computern gibt ein anderes Ergebnis als die beiden anderen, es wird neu gestartet (und wenn es erneut passiert, isoliert). Wenn jedoch zwei Computer gleichzeitig fehlerhaft sind, wird der falsche Computer neu gestartet / isoliert. In der Regel reicht eine "kalte Redundanz" aus: Ein Primär- und ein Sekundärkreis sind implementiert, der Primärkreis läuft, bis ein Fehler von einer (nicht geschützten) Überwachungsschaltung erkannt und der Sekundärkreis eingetauscht wird. Wenn es sich nur um einen Fehler handelt im RAM, Code kann erneut ausgeführt werden, um die Daten zu aktualisieren. Sie müssen nur klug entscheiden, wo Sie die Linie ziehen möchten. Es ist unmöglich, eine 100% zuverlässige Fehlererkennungsschaltung zu erstellen.

Satelliten (insbesondere in großer Höhe oder im Van-Allen-Gürtel) und Computer in Kernkraftwerken oder anderen radioaktiven Umgebungen unterliegen insbesondere (Stichwort :) Einzelereignis-Störungen oder Latch-ups aufgrund von Hochenergieteilchen, die mit Kristallgittern von Halbleitern kollidieren oder von diesen absorbiert werden . Bücher, die diese Bereiche abdecken, sind mit Sicherheit die beste Wahl. Die Farbe wird durch Verschiebungsschäden durch Strahlung beeinträchtigt, so dass es völlig verständlich ist, dass Halbleiter auch durch einfallende Strahlung beschädigt oder verärgert werden können.


2
Ich bin mir nicht sicher, ob Sie "Teufelskreis" schreiben wollten, aber "viskoser Kreis" klingt genauso lustig.
Svavil

1
Eigentlich war es ein Sichtkreis, aber der Sichtkreis brachte mich zum Lachen :)
Mister Mystère

1
Es werden nur log n Bits benötigt, um einen einzelnen Bitfehler in n Bits zu lokalisieren und zu korrigieren.
Thorbjørn Ravn Andersen

1
Dies erinnert mich an eine kürzlich gestellte Frage zum Schreiben von Programmen, um Hardwarefehler in Computern zu berücksichtigen, die radioaktiven Verbindungen ausgesetzt sind: stackoverflow.com/questions/36827659/…
Pharap

Ich wusste nicht, dass drei verschiedene "Gruppen" (oder mehr) dasselbe auf unterschiedliche Weise codieren. Klingt cool :)
kalmanIsAGameChanger

33

Einzelereignisstörungen gehören nicht mehr zum Weltraum und zum Flugzeug. wir haben sie über ein Jahrzehnt lang an der Oberfläche gesehen, vielleicht schon zwei.

Wie bereits erwähnt, behandeln wir zumindest in Weltraumanwendungen Störungen durch Dreifachstimmen (jedes Bit ist wirklich drei, und eine Zweidrittelstimme gewinnt. Wenn also eines vorhanden ist, das sich ändert, werden die anderen beiden es abdecken.). Und dann ECC oder EDAC mit Scrubbern, die den Arbeitsspeicher mit einer höheren Rate als der vorhergesagten Aktualisierungsrate für einzelne Ereignisse durchlaufen, um einzelne Ereignisstörungen zu beseitigen (solche, bei denen zwei Drittel der Stimmen falsch stimmen).

Dann gibt es Gesamtdosis; Mit der Zeit wird das Material zu radioaktiv, um zu arbeiten, sodass Sie genug Material verwenden, um die Lebensdauer des Fahrzeugs zu verlängern. Nichts, worüber wir uns normalerweise an der Oberfläche Sorgen machen. (Und Latchup) Die parallele Verwendung von drei / mehreren Sätzen von Logik ist / war ein Weg, um zu versuchen, die traditionelle radikale Technologie nicht anwenden zu müssen, und Sie können feststellen, wie gut das funktioniert.

Die Leute, die früher gewusst haben, wie man Sachen für den Weltraum erstellt, haben sich größtenteils zurückgezogen oder sind weitergezogen, daher haben wir jetzt eine Reihe von Programmen, die den Weltraum-Müll machen. Oder wir behandeln den Weltraum wie erdgebundene Produkte, anstatt zu versuchen, alle an der Arbeit zu beteiligen und einen kontrollierten Wiedereintritt und Abbrand zu haben.

Wir sehen Störungen an der Oberfläche. Jeder von Ihnen gekaufte Memory Stick ( DRAM ) hat eine FIT, Failures In Time und jeder Chip mit RAM (alle Prozessoren, viele andere) hat auch eine FIT-Spezifikation (für die RAM (SRAM) -Blöcke). RAM ist dichter und verwendet kleinere Transistoren, so dass es anfälliger für interne oder externe Störungen ist. Die meiste Zeit bemerken wir nichts oder kümmern uns nicht darum, da der Speicher, den wir für Daten, das Ansehen eines Videos usw. verwenden, geschrieben, zurückgelesen und nicht wieder verwendet wird, bevor er lang genug ist, um eine Störung zu verursachen. Einige Speicher, wie einer, der ein Programm oder den Kernel enthält, sind riskanter. Aber wir sind schon lange daran gewöhnt, einfach den Computer neu zu starten oder das Telefon zurückzusetzen / neu zu starten (bei einigen Telefonen / Marken müsste der Akku regelmäßig entfernt werden). Waren diese Störungen oder schlechte Software oder eine Kombination?

Die FIT-Nummern für Ihr einzelnes Produkt können die Lebensdauer dieses Produkts überschreiten. Bei einer großen Serverfarm berücksichtigen Sie jedoch den gesamten Arbeitsspeicher oder alle Chips, und die MTBF reicht von Jahren oder Bestellungen darüber bis zu Tagen oder Stunden irgendwo in der Bauernhof. Und Sie haben ECC, um zu decken, was Sie von diesen können. Anschließend verteilen Sie die Verarbeitungslast mit Failovers, um die Computer oder die Software zu erfassen, die eine Aufgabe nicht ausführen können.

Der Wunsch nach einer Festkörperspeicherung und der Wechsel von sich drehenden Medien hat ein damit verbundenes Problem geschaffen. Der für SSDs (und andere nichtflüchtige Speicher) verwendete Speicher wird schneller und kostengünstiger. Er ist viel flüchtiger als wir es uns wünschen und basiert auf EDAC, da wir ohne ihn Daten verlieren würden. Sie werfen eine Menge zusätzlicher Teile in die Sache und erledigen die Rechnung, um Geschwindigkeit, Kosten und Langlebigkeit der Lagerung in Einklang zu bringen. Ich sehe uns nicht zurückkehren; Leute wollen überall mehr nichtflüchtigen Speicher, der in eine winzige Packung passt und den Preis des Produkts nicht dominiert.

Was normale Schaltkreise betrifft, gehen wir von den Anfängen der Verwendung von Transistoren für digitale Schaltkreise bis heute durch den linearen Teil des Transistors und verwenden ihn als Schalter. Wir schlagen ihn mit etwas Übermaß zwischen die Schienen, um sicherzustellen, dass er klebt . Wie der Lichtschalter an Ihrer Wand klappen Sie ihn um mehr als die Hälfte. Eine Feder hilft dem Rest und hält ihn dort. Deshalb verwenden wir digital und versuchen nicht, im linearen Bereich zu leben. Sie versuchten es früh, scheiterten aber. Sie konnten nicht kalibriert bleiben.

Also schieben wir den Transistor einfach auf die Schienen und beide Seiten eines Signals werden sich bis zum nächsten Taktzyklus beruhigen. Es werden große Anstrengungen unternommen, und die aktuellen Werkzeuge sind bei der Analyse des Chipdesigns deutlich besser als früher, um zu sehen, dass konstruktionsbedingt ein Spielraum für das Timing besteht. Testen Sie dann jeden Chip auf jedem Wafer (das und / oder nach dem Verpacken), um festzustellen, ob jeder Chip gut ist.

Chip-Technologie stützt sich stark auf Statistiken, die auf Experimenten basieren. Wenn Sie Ihre CPU übertakten, erhöhen Sie diese Marge, halten die angegebene Taktrate, Temperatur usw. ein, und die Wahrscheinlichkeit, dass Probleme auftreten, ist erheblich geringer. Ein 3-GHz-xyz-Prozessor ist einfach ein 4-GHz-Chip, der bei 4 GHz ausfällt, aber bei 3 GHz durchgelassen wird. Die Teile werden grundsätzlich aus einer Produktionslinie geschwindigkeitsgestuft.

Dann gibt es die Verbindungen zwischen Chips oder Platinen, und diese sind ebenfalls mit Problemen behaftet, und es wird viel Zeit und Mühe aufgewendet, Standards und Platinendesigns usw. zu erstellen, um Fehler an diesen Schnittstellen zu minimieren. USB , Tastatur, Maus, HDMI , SATA und so weiter. Sowie alle Spuren auf dem Brett. Auf und neben dem Board treten Probleme mit Übersprechen auf. Auch hier sind viele Tools verfügbar, wenn Sie sie verwenden, und Sie haben Erfahrung darin, die Probleme zu vermeiden, aber es gibt auch eine andere Möglichkeit, bei der wir möglicherweise nicht sehen, dass die Einsen und Nullen vollständig belegt sind.

Keine der Technologien, auch nicht der Weltraum, ist perfekt. Es muss nur gut genug sein, ein ausreichender Prozentsatz des Produkts muss die erwartete Lebensdauer des Produkts abdecken. Ein gewisser Prozentsatz der Smartphones muss mindestens zwei Jahre alt sein, und das war's. Ältere Gießereien oder Technologien verfügen über experimentellere Daten und können ein zuverlässigeres Produkt produzieren. Sie sind jedoch langsamer und möglicherweise keine neuen Designs. Die Schneide ist genau das, ein Glücksspiel für alle.

Auf Ihre spezielle Frage hin werden die Transistoren an jedem Ende eines Signals schnell durch ihren linearen Bereich geschoben und lehnen sich in eine der Schienen. Die Analyse wird für jeden kombinierten Pfad durchgeführt, um zu bestimmen, dass er sich einpendelt, bevor die Uhr am Ende des Pfads ihn zwischenspeichert, sodass er wirklich zu Null oder Eins gemacht wird. Die Analyse basiert auf Experimenten. Die ersten Chips einer Produktlinie werden über die Designgrenzen hinausgeschoben. Schmoo-Plots werden erstellt, um festzustellen , ob im Design ein Spielraum vorhanden ist. Variationen des Prozesses werden vorgenommen und / oder es werden einzelne Kandidaten gefunden, die die langsamen und schnellen Chips darstellen. Es ist ein komplizierter Prozess und einige haben mehr Material, andere weniger, laufen schneller, verbrauchen aber mehr Energie oder laufen langsamer usw.

Sie schieben diese auch an den Rand. Und im Grunde bekommt man ein warmes, unscharfes Gefühl, dass das Design in Ordnung ist, um in Produktion zu gehen. JTAG / Boundary Scan werden verwendet, um zufällige Muster zwischen den einzelnen zwischengespeicherten Zuständen durch die Chips zu führen, um zu sehen, ob die kombinatorischen Pfade für ein Design vollständig sind. Und wo Bedenken bestehen, können auch gezielte Funktionstests durchgeführt werden. Weitere Tests des ersten Siliziums und möglicherweise zufällige Tests, um sicherzustellen, dass das Produkt gut ist. Wenn / wenn Fehler auftreten, werden Sie möglicherweise auf weitere Funktionstests in der Produktionslinie zurückgegriffen. Es ist stark abhängig von Statistiken / Prozentsätzen. 1/1000000 schlechte Leute, die aussteigen, können in Ordnung sein oder 1/1000 oder was auch immer; es hängt davon ab, wie viele Sie glauben, von diesem Chip zu produzieren.

Die Sicherheitslücken sind wie hier und bei anderen erwähnt. Zuerst der Chip selbst, wie gut das Design und der Prozess waren, wie nahe am Rand der schwächste Pfad eines bestimmten Chips in dem von Ihnen gekauften Produkt liegt. Wenn die Temperatur zu nahe an der Kante liegt, kann dies zu Zeitproblemen führen, und die Bits speichern Daten, die nicht auf eins oder null gesetzt wurden. Dann gibt es einzelne Ereignisstörungen. Und dann gibt es Lärm. wieder Sachen schon erwähnt ...


4
In Ihrem ersten Absatz klingt es so, als gäbe es keine Probleme mehr mit Luft- und Raumfahrtumgebungen. Ich denke, Sie meinten, dass SEU nicht mehr nur in diesen Umgebungen erfahren sind.
W5VO

Es ist zu beachten, dass SEUs durch SnPb-Lötmittel auf BGAs verursacht werden können, da ein Teil des Bleis, abgesehen von der Aktivität freier Neutronen, Teil der Uran-Zerfallskette ist.
Peter Smith

@ W5VO, ja, ich meinte, dass durch Strahlung verursachte Störungen nicht mehr nur ein Platzproblem sind, sondern ein Problem bis an die Oberfläche. Nicht so schlimm wie im All, aber präsent.
old_timer

1
Ich erinnere mich, dass einige DEC-Minicomputer-Busse in der Praxis Probleme mit der Metastabilität hatten. Das ist ein anderer Mechanismus für Bitfehler als der, den Sie genannt haben, oder? Oder nicht?
Davidbak

2
@davidbak: Metastabilität ist ein unangenehmes Problem, dessen häufigster Effekt darin besteht, dass in Fällen, in denen die Werte mehrerer Bits davon abhängen, ob eine Eingabe zu einem bestimmten Zeitpunkt in der jüngeren Vergangenheit niedrig oder hoch war, möglicherweise nicht alle auf eine Art und Weise zusammengeschaltet werden, die mit der Eingabe übereinstimmt niedrig zu sein, noch in einer Weise, die mit hoch übereinstimmt, kann stattdessen eine willkürliche Mischung der beiden Verhaltensweisen ergeben. Wenn zum Beispiel Code verzweigt werden soll, wenn eine Taste gedrückt wird, können die Programmzählerbits eine beliebige Mischung der Werte enthalten, die sie gehabt hätten, wenn die Taste gedrückt worden wäre, oder wenn dies nicht der Fall gewesen wäre.
Supercat

12

Wenn Sie nach einer einfachen Antwort suchen:

Jede digitale Komponente in einem Computer ist in Bezug auf die von ihr erzeugten Ausgaben stärker eingeschränkt als in Bezug auf die von ihr akzeptierten Eingaben. Beispielsweise wird jeder "Eingangs" -Wert von 0 V bis 2 V als 0 akzeptiert, aber ein "Ausgang" von 0 liegt immer im Bereich von 0 bis 0,5 V. (Siehe die Antwort von duskwuff für einige tatsächliche Werte.)

Dies bedeutet, dass jede Komponente dabei hilft, einige der Abweichungen oder Störungen, die entlang der Linie aufgetreten sind, zu "korrigieren". Wenn das Rauschen groß genug ist, kann das System dies natürlich nicht ausgleichen. Computer in strahlungsintensiven Umgebungen können häufig von Einsen bis Nullen und umgekehrt betroffen sein.

Grundsätzlich sind Computer so konzipiert, dass sie bestimmte Geräusch- / Interferenzpegel tolerieren , was für die meisten praktischen Zwecke ausreicht.


8

Es ist theoretisch möglich, dass die Signale aufgrund von thermischem (und anderem) Rauschen zwischen 0 und 1 wechseln, dies ist jedoch äußerst unwahrscheinlich.

Digitale Schaltungen werden mit einem Attribut namens "Noise Margin" entworfen. Dies ist der Betrag, um den sich sein Eingang ändern muss, bevor der Ausgang den Status wechselt. In CMOS-Schaltungen sind dies in der Regel ca. 50% der Versorgungsspannung. Unvermeidbares thermisches Rauschen (kommt von Elektronen, die sich bei einer Temperatur über 0 Kelvin bewegen) in diesen Schaltkreisen erzeugt << 1 mV Rauschen, und die Wahrscheinlichkeit, dass diese Spitzen 500 mV überschreiten (sagen wir), ist außerordentlich gering.

Digitale (z. B. CMOS-) Gatter haben Verstärkungs- und Sättigungseigenschaften. Dies bedeutet, dass sich der Ausgang, wenn sich das Eingangssignal in der Nähe der Mitte des Bereichs befindet, schnell ändert (hohe Verstärkung), wenn er sich jedoch in der Nähe der Extreme des Bereichs befindet, ändert er sich langsam. Das Ergebnis ist, dass, wenn ein Eingangssignal nahe an den Schienen liegt, der Ausgang noch näher ist - dies bedeutet, dass das Rauschen nicht verstärkt wird.

Andere oben erwähnte Merkmale (Fehlerkorrektur usw.) bedeuten, dass sich Fehler, selbst wenn sie auftreten, nicht ausbreiten.


4

In fehleranfälligen Systemen wie Kommunikationskanälen und magnetischem Speicher (und manchmal sogar RAM) wird eine Prüfsumme, CRC oder ECC gespeichert, um fehlerhafte Daten zurückzuweisen oder kleine Fehler zu korrigieren.

Im Allgemeinen sind binäre Systeme so konzipiert, dass dies nicht möglich ist. Wenn jedoch alle paar Millionen oder Milliarden * Male ein kosmischer Strahl oder ein Störimpuls Dinge über die Leitung stößt, ist die Fehlererkennung / -korrektur erforderlich, um die Korruption zu erhalten von ernsthaften Beeinträchtigungen des Computers.

* Kommunikationskanäle können eine sehr viel höhere Fehlerrate aufweisen!


4

Computerhardware ist robuster und zuverlässiger geworden. Aber die Hardware ist viel zu breit für eine einfache Antwort. Es kann jedoch von Interesse sein, zu wissen, dass zwischen einem herkömmlichen Desktop-Computer und einem Enterprise-Server-Computer ein Unterschied in der Zuverlässigkeit besteht. Ich habe diesen Frage / Antwort-Thread über Serverhardware gefunden. Ein Server kostet ein Vielfaches eines vergleichbaren Desktops. Die Kosten sind das Ergebnis einer besseren Hardware, die möglicherweise um ein Vielfaches weniger wahrscheinlich ist, unerwartet "eine 1 und 0 zu wechseln".

Aber Hardware ist nur die halbe Miete. Computer können Daten mithilfe von Software auch vor unerwarteten Fehlern schützen. Hamming-Code ist ein Beispiel, bei dem durch Hinzufügen einer kleinen Menge zusätzlicher Daten eine kleine Anzahl von Fehlern nicht nur erkannt, sondern auch korrigiert werden kann.


mit Ausnahme von MLC-Flash, wo Zuverlässigkeit gegen Dichte
eingetauscht wird

3

Es gibt zwei Möglichkeiten, werden häufig verwendet , um die Wahrscheinlichkeit zu minimieren , dass ein logisches Bit sein wird versehentlich wieder eingeschaltet (0 bis 1 oder 1 bis 0).
Die erste ist durch die Bereitstellung großer Spalt , zwischen den Spannungspegeln definiert für A 0 und A 1, wie möglich . Wie Sie bereits erwähnt haben, ist eine 0 als Spannungspegel <0,9 V definiert, während eine 1 als Spannungspegel> 2,9 V definiert ist (nicht wie Sie sagen 0,9 bis 1,5). Dies hinterlässt eine Spannungslücke von 2V. Dies bedeutet, dass die Signalspannung um 200% variieren müsste , bevor sie den Zustand des Bits "versehentlich" umschalten würde (sehr unwahrscheinlich).
Der zweite ist durch "Takten"die logischen Signale. Da "zufällige" Spannung / Rauschen zufällig und kurzlebig ist, wird durch Zulassen von Zustandsänderungen nur in bestimmten (und kurzen) Intervallen die Wahrscheinlichkeit minimiert, dass die "Variation" zum Zeitpunkt der Uhr auftrifft.

Abhängig vom Grad der erforderlichen Zuverlässigkeit (ECD, ECC usw.) werden natürlich auch andere Mittel und Methoden verwendet.


2

Gute Technik.

Es wird viel Aufwand betrieben, um Datenkorruption zu verhindern oder zu korrigieren, wenn dies nicht ausreichend verhindert werden kann (z . B. ECC-Speicher ).

Mögliche Ursachen für eine Beschädigung der Daten sind:

  • elektrisch laute Umgebungen
  • Probleme mit der Stromversorgung
  • Zeitprobleme (z. B. zwischen Takt- und Datenleitungen oder zwischen zwei Differenzleitungen)
  • elektrisches Nebensprechen

Kurz gesagt, viel Engineering steckt in digitalen Designs, sodass Softwareentwickler die einfache Annahme treffen können, dass '0' '0' und '1' '1' bedeutet.


Und natürlich kann der ECC-Speicher auch witzige Dinge wie das Auslösen eines nicht maskierbaren Interrupts (NMI) ausführen, wenn mehr Bits beschädigt werden, als repariert werden können. Ich denke, für moderne ECC-RAM ist dies mehr als ein Bit Fehler in 64 Bits (die Codierungen können Einzelbitfehler korrigieren und Zwei-Bit-Fehler erkennen, aber nicht korrigieren), aber ich könnte falsch liegen. In Situationen, in denen Sie sich um Ihre Daten kümmern, ist es möglicherweise besser, das System sofort anzuhalten, wenn etwas nicht reparierbar ist, als zu hinken und nicht zu wissen, ob die Daten vertrauenswürdig sind (oder noch schlimmer, wenn Sie wissen, dass sie nicht vertrauenswürdig sind).
ein CVn

2

Die zwei grundlegenden Aspekte praktischer elektronischer Computer sind:

  1. Eine sehr stabile Stromversorgung

  2. Zeit (normalerweise als Taktfrequenz oder Verzögerung definiert)

Stromversorgungen für Computersysteme sind sehr streng spezifiziert und geregelt. Tatsächlich wird für jedes Computersystem die Stromversorgung in der Regel mehrmals geregelt: am Netzteil (oder Batterieladegerät), am Haupteingang der Hauptplatine, am Eingang der Tochterkarten und schließlich auf dem Chip selbst.

Dies eliminiert viel Rauschen (elektrische Flüchtigkeit). Was die CPU sieht, ist eine sehr stabile, nichtflüchtige Spannungsquelle, mit der sie Logik verarbeiten kann.

Die nächste Hauptquelle für Zwischenwerte (Spannungen zwischen 0 und 1) kommt, wenn die Werte wechseln. Entweder 1 wird zu 0 (Abfallzeit) oder 0 wird zu 1 (Anstiegszeit). Sie können wirklich nicht viel dagegen tun, außer auf den Abschluss des Übergangs zu warten, bevor Sie die Ausgabe der Schaltung akzeptieren. Bevor der Übergang abgeschlossen ist, wird die Ausgabe der Schaltung als Müll betrachtet.

In der Technik besteht die Lösung für dieses Problem darin, einfach zu schreiben, wie lange Sie auf Papier warten müssen, bis die Ergebnisse korrekt sind. Dies ist der Ursprung der CPU-Taktfrequenz. Mit wie viel GHz Sie die CPU betreiben können, hängt davon ab, wie lange es dauert, bis sich Zustandsänderungen in der CPU stabilisieren.

Tatsächlich gibt es eine dritte Quelle für Volatilität: Eingänge in die Schaltung. Die Lösung für dieses Problem ähnelt dem oben genannten allgemeinen Problem: Stellen Sie sicher, dass das in das System eingehende Signal (Spannung oder Strom) stabil ist und dass das Signal genügend Zeit hat, sich zu stabilisieren.

Der zweite Teil des Problems ist, warum wir Eingaben vor der Verarbeitung in Latches oder Register abtasten. Das Signal kann Müll sein. Aber sie werden 0 oder 1 Müll im Inneren der Register sein, wenn sie verarbeitet werden. Der erste Teil des Problems ist, wofür Garantien gelten.


2

Aber ich habe nie gelesen, was elektrische Spannungen in einer Weise "brav" hält, dass aus einer 0 niemals versehentlich eine 1 werden kann, weil die elektrische Flüchtigkeit 1 im Computer vorhanden ist. Vielleicht ist es möglich, dass die Spannung sehr nahe bei 0,9 liegt. Was wird dann unternommen, um zu verhindern, dass sie die Schwelle überschreitet?

Rückkopplung verhindert, dass es sich der Schwellenspannung nähert, und zwingt es, sich gut zu verhalten.

Dies hat gewöhnlich die Form einer Verriegelungsschaltung, oft eine getaktete Verriegelungsschaltung.

Betrachten Sie als einfaches Beispiel das Flip-Flop . Es ist so konzipiert, dass der Ausgang als zusätzlicher Eingang in die Logikschaltung zurückgeführt wird. Die Logik innerhalb des Elements weiß daher, was es ausgibt, und gibt den gleichen Wert so lange aus, bis die anderen Eingänge den umgekehrten Zustand erzwingen.

Da die Schaltung so ausgelegt ist, dass die Transistoren vollständig ein- oder ausgeschaltet sind, wird sie immer in der Nähe der Stromversorgungs- und Erdungsgrenzen ausgegeben - sie geht nicht in die Nähe des 0,9-V-Pegels und bewegt sich beim Übergang schnell und vollständig in den anderen Staat. Die Schaltungen sind speziell dafür ausgelegt, einen Betrieb im analogen Bereich zwischen den beiden Zuständen zu vermeiden.


0

Unter normalen Betriebsbedingungen sind die Nullen und Einsen selten fehlerhaft, aber unter schlechten Betriebsbedingungen (z. B. niedriger Batteriestand oder kurze Zeit nach dem Trennen der Wechselstromversorgung und dem Absinken der Spannung im Kondensator) passiert seltsames Zeug und die Nullen und Einsen werden durcheinander gebracht die ganze Zeit.

Wenn Sie defensiven Code (Software oder HDL) schreiben, den Sie nicht blockieren möchten, sollten Sie daher immer den Fall in Betracht ziehen, in dem eine Zahl möglicherweise vorhanden ist fehlerhaft ist. Zum Beispiel,

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

Besser ist es, den Wert auf zu ändern ==, >= falls der Wert ivon 9 auf 11 oder eine beliebige Zahl größer als 10 springt, was dazu führen würde, dass Sie die Schleife erst verlasseni 0 ist (etwa nach 4 Milliarden Iterationen).

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

Es passiert, vertrau mir ...


Was ist, wenn izu einer großen negativen Zahl gesprungen wird?
Jasen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.