Home - improve
Unser Angebot
Presse-Forum
Veröffentlichungen
Referenzen
Kontakt
Termine
Logo improve

Erhöhung der Zuverlässigkeit von Rechnersystemen (Teil 1 von 4)

Die Entwicklung unserer Industriegesellschaft ist geprägt durch zunehmenden Einsatz von Rechnersystemen und Datenverarbeitungsanlagen. Als Folge ergibt sich eine zunehmende Abhängigkeit von der elektronischen Datenverarbeitung und deren korrekter Funktion. So können unzuverlässig arbeitende Rechnersysteme, z. B. in der Luft- und Raumfahrt, bei der Überwachung von Kernkraftwerken, der Steuerung von Signalanlagen und ähnlichen  Anwendungen,  Menschenleben gefährden. Außerdem kann technisches Versagen bei der Prozeßsteuerung oder der Nachrichtenübermittlung beträchtliche wirtschaftliche Auswirkungen zur Folge haben. Aus diesen Gründen kommt der Erhöhung der Zuverlässigkeit elektronischer Systeme große Bedeutung zu.

Von Klaus Eppele

Unter der Zuverlässigkeit eines Systems versteht man die bedingte Wahrscheinlichkeit, daß ein System in einem Zeitintervall von Null bis t funktionstüchtig ist unter der Voraussetzung, daß es bei t=0 funktionstüchtig war.

Nicht zu verwechseln ist dieser Begriff mit der Verfügbarkeit eines Systems. Diese gibt den zeitlichen Anteil des intakten Betriebszustandes an der gesamten Betrachtungsdauer an. Eine hohe Zuverlässigkeit ist wesentlich schwieriger erreichbar als eine hohe Verfügbarkeit, da die Verfügbarkeit problemlos erhöht werden kann, indem man z. B. die Reparaturzeiten niedrig hält. Zur Steigerung der Zuverlässigkeit eines Systems bieten sich zwei grundsätzliche Wege an: die Fehlervermeidung und die Fehlertoleranz.

Bild 1. Prinzipielle Struktur einer HMR-Anordnung

Fehlervermeidung

Die Methode der Fehlervermeidung versucht durch Perfektion beim Entwurf und der Herstellung der Systeme Fehler a priori auszuschließen. Perfektion erfordert neben einer umfassenden  Spezifikation  beispielsweise eine sorgfältige Auswahl der Bauelemente, die sichere Dimensionierung der Schaltungen und eine sorgfältige Prüfung des Systems. Hohe Entwurfs- und Herstellungskosten sind die Folge. Außerdem ist bei der Komplexität heutiger Systeme eine vollständige Prüfung aus zeitlichen und finanziellen Gründen kaum möglich. Auch kann man oftmals schon beim Entwurf eines Systems keine optimale Lösung finden, da einschränkende, sich gegenseitig negativ beeinflussende Randbedingungen den Entwickler zu einem nicht optimalen Kompromiß zwingen können.

Beispielsweise kann die Belastung von Bustreiberstufen und damit deren Lebensdauer durch möglichst hohe Abschlußwiderstände reduziert werden; um ein System jedoch möglichst störfest zu gestalten, ist ein niederohmiger Aufbau von Vorteil.

Man erkennt, daß das Auftreten von Fehlern selbst durch noch so große Sorgfalt bei der Konzeption eines Systems nicht auszuschließen ist. Tritt eine bösartige Störung auf, so fällt  das  System aus und ist erst nach einer manuell durchgeführten Reparatur wieder einsatzbereit.

Fehlertoleranz

Als Fehlertoleranz bezeichnet man die Fähigkeit eines Systems, auch mit einer begrenzten Anzahl fehlerhafter Subsysteme die spezifizierte Funktion zu erfüllen. Das System soll selbständig auf einen auftretenden Fehler reagieren können, ohne daß es nach außen hin zu einem Fehlverhalten kommt. Eine wesentliche Voraussetzung hierfür ist das Vorhandensein  von  Redundanz, etwa in Form zusätzlicher Komponenten oder Programme. Unter Redundanz sind alle bei Fehlerfreiheit entbehrlichen Mittel zu verstehen, die im Fehlerfall die ausgefallenen Anwendungsfunktionen erbringen oder Verfahren zur Fehlerdiagnose oder -behandlung durchführen. Man unterscheidet statische und dynamische Redundanz.

Statische Redundanz

Sind die zusätzlichen Mittel ständig an der Ausführung der vorgesehenen Aufgaben beteiligt, so spricht man von statischer  (funktionsbeteiligter, aktiver) Redundanz. Mehrere Komponenten eines Systems führen dieselbe Funktion simultan aus. Fällt eine Komponente aus, wird dieser Fehler durch die verbleibenden Komponenten direkt kompensiert und führt daher nicht unmittelbar zu einer von außen erkennbaren Reaktion. Man sagt hierzu auch, der Fehlzustand der ausgefallenen Komponente wird maskiert.

Eine bekannte Anwendung findet sich im Verfahren der N-fach modularen Redundanz (NMR). N Komponenten  führen  gleichzeitig  dieselbe Funktion aus. Die Ausgangssignale dieser Komponenten werden einem Vergleichselement, dem sogenannten  »Voter«  zugeführt, der eine Mehrheitsentscheidung durchführt. Damit die Mehrheitsentscheidung leicht getroffen werden kann, wird die Anzahl der identischen Komponenten meist ungerade gewählt.

Werden N=2n+1 Komponenten eingesetzt, so kann der Voter eine (n+1)-aus-N Mehrheitsentscheidung treffen. Weisen also weniger als (n+1) Komponenten einen Fehler auf, ist der Voter in der Lage, den oder die Fehler zu maskieren und damit zu tolerieren. Erst bei (n+1) oder mehr fehlerhaften Komponenten wird auch das Ausgangssignal des Voters fehlerhaft.

Die wesentlichen Eigenschaften statisch redundanter Anordungen sind, daß aufgrund der maskierenden Wirkung der Eintritt eines Fehlerfalls keine Unterbrechung der Funktionsausführung zur Folge hat und die Leistungsfähigkeit des Systems vorhanden bleibt. Nachteilig ist der hohe Aufwand. Alle Komponenten, deren Zuverlässigkeit erhöht werden soll, müssen mindestens in doppelter Ausführung vorhanden sein. Außerdem muß ein fehlerfreies Arbeiten des Voters unbedingt sichergestellt sein. Bild 1 zeigt die prinzipielle  Struktur einer NMR-Anordnung.

Die Zuverlässigkeit statisch redundanter Anordnungen kann durch diversitäre Realisierung eines Systems weiter erhöht werden. Diversität bezeichnet die redundante Implementierung  einer  Nutzfunktion durch mehrere verschiedenartig entworfene Subsysteme. Der Grundgedanke ist hierbei, daß durch unabhängigen Entwurf ein identisches Fehlverhalten aller Subsysteme ausgeschlossen werden kann. Diese Methode wird vor allem bei Software-Systemen eingesetzt, da Fehler,  die in der Software auftreten, meistens auf Entwurfsfehler zurückzuführen sind. Der Nachteil diversitärer Systeme sind die hohen Entwurfskosten, die ein Vielfaches gegenüber den Entwurfskosten einer nicht diversitären Realisierung ausmachen.

Dynamische Redundanz

Im Gegensatz zur statischen Redundanz ist bei der dynamischen Redundanz nur ein einziges Modul an der Erbringung einer Funktion beteiligt. Wird während des Betriebs in diesem Modul ein Fehler festgestellt, so erfolgt eine Umschaltung auf ein intaktes Reservemodul (Bild 2). Die vorhandene Redundanz wird sehr gut genutzt, da immer nur ein Modul aktiv sein muß und deshalb bei n vorhandenen Reservemodulen insgesamt n-1 Ausfälle tolerierbar sind. Die Reservemodule können im fehlerfreien Fall zusätzliche Funktionen erbringen, was zur Leistungssteigerung des Gesamtsystems beiträgt. Im Fehlerfall ist dann ein stufenweiser  Leistungsabfall  festzustellen (graceful degradation), weil die redundanten Module die Aufgaben des defekten Subsystems übernehmen müssen.

Bild 2: Dynamische Redundanz

Da die nötigen Aktionen zur Behandlung von Fehlern immer einen zusätzlichen Aufwand für ein System bedeuten, gehen diese mit einem zeitlich beschränkten Leistungsabfall einher. Dies ist z. B.  an  einer größeren Reaktionszeit oder einer verkleinerten Speicherkapazität des Systems zu erkennen. Die Reservemodule können aber auch bis zu ihrer Benutzung abgeschaltet bleiben. Dadurch werden sie geschont, und die Leistungsaufnahme des Gesamtsystems wird reduziert.

Da hier die Maskierung von Fehlern nicht vorgesehen ist, erfordert das Verfahren der dynamischen Redundanz in jedem Fall eine Erkennung und eine Behandlung auftretender Fehler. Wird ein Fehler nicht erkannt, so kann es zu einer weitreichenden Fehlerfortpflanzung kommen, in deren Verlauf beispielsweise falsche Steuersignale ausgegeben oder wichtige Speicherinhalte überschrieben werden. Die Fehlerbehandlung sorgt für die Übertragung der Aufgaben auf redundante Subsysteme und die  Kompensierung eventuell  aufgetretener Fehlerauswirkungen, so daß in einem fehlerfreien Zustand eine Weiterbearbeitung erfolgen kann.

Die Anwendung dynamischer Redundanz erhöht in erster Linie die Verfügbarkeit eines Systems. Nach erfolgreicher  automatischer Behebung eines Fehlers kann das System sofort weiter genutzt werden, bis sämtliche redundanten Module aufgebraucht sind. Erhält der Benutzer zusätzlich noch Informationen darüber, daß ein Fehler vorliegt und in welchem Subsystem der Fehler aufgetreten ist und ist es möglich, dieses Subsystem während des laufenden Betriebs auszutauschen (not replace) oder zu reparieren (on-line-Reparatur), trägt dies zur weiteren Erhöhung der Verfügbarkeit bei. Die Zuverlässigkeit eines Systems wird dann erhöht, wenn neben der automatischen  Fehlererkennung  und -behebung gewährleistet wird, dass sich das System nach außen hin immer korrekt verhält, also im System auftretende Fehler von außen nicht erkennbar sind und keine falschen Ausgaben bewirken.

Bevor im nächsten Abschnitt eine Übersicht über Verfahren zur Fehlererkennung gegeben wird, sei zur Vollständigkeit noch erwähnt, dass statische und dynamische Redundanz kombiniert eingesetzt werden können, um die Vorteile beider Verfahren zu vereinen. Man spricht in diesem Fall von Hybridredundanz.

Fehlererkennung

Die Fehlererkennung liefert eine Aussage darüber, ob alle Subsysteme fehlerfrei sind. Ist dies nicht der Fall, bleibt offen, welche Subsysteme fehlerhaft sind. Die hier aufgeführten Möglichkeiten zur Erkennung von Fehlern in Rechensystemen  zerfallen  in  zwei große Klassen; die Klasse der passiven und die Klasse der aktiven Fehlererkennung.

Bild 3: Methoden der Fehlererkennung

Die passive Fehlererkennung beeinflußt nicht den normalen Betrieb des zu überwachenden Rechensystems. Sie versucht Informationen über mögliche Fehlzustände zu erhalten, indem die Abläufe im System beobachtet und ständig die Istwerte anhand der bekannten Sollwerte überprüft werden. Dadurch ist eine unmittelbare Fehlererkennung möglich, die keiner Unterbrechung des Systembetriebes bedarf.

Nicht alle Fehler sind mit passiven Methoden zu erkennen. Um weitere Fehler aufzudecken, kann ein Subsystem in bestimmten Zeitabständen durch eine aktive Fehlererkennung überprüft werden. Hierbei wird die Reaktion des Subsystems auf bestimmte Testeingaben beobachtet und analysiert. Durch diese Vorgehensweise können auch Störungen aufgespürt werden, die sich noch nicht als Fehler ausgewirkt haben.

Meist ist eine Testausführung parallel  zum  normalen  Rechenbetrieb nicht möglich, so daß ein Subsystem während der Testphase nicht oder nur eingeschränkt für den normalen Betrieb einsetzbar ist. Eine damit verbundene   Leistungsminderung des Gesamtsystems wird wegen der höheren Fehlererfassung (Fehlerüberdeckung, »coverage«) der Tests in Kauf genommen. Bild 3 zeigt einführend einen Überblick über die im folgenden genannten Methoden der Fehlererkennung.

Fehlererkennung auf physikalischer Ebene

Die Ursachen für ein fehlerhaftes Systemverhalten sind in den meisten Fällen auf Störungen in den physikalischen Bauteilen (faults) zurückzuführen. Diese Störungen kann man meist  erkennen,  wenn man bestimmte charakteristische Kenngrößen des Bauteils kontinuierlich oder in bestimmten Zeitabständen erfasst und überprüft, ob sie sich in einem vorgegebenen Sollbereich befindenden. Typische Kenngrößen sind Spannung, Stromstärke, Kapazität oder Temperatur. Die Methoden sind vielseitig und unterscheiden sich stark nach dem zu überwachenden Subsystem. Aus diesem Grunde soll hier die Fehlererkennung auf physikalischer Ebene nicht genauer untersucht werden.

Fehlererkennung durch redundante Codes

Eine sehr effektive Möglichkeit zur Erkennung und Maskierung von Fehlern stellt die Verwendung redundanter Codes dar. Redundante  Codes werden hauptsächlich bei der Informationsübertragung und -speicherung eingesetzt, wobei je nach Verfahren  zusätzliche  Hardware, Software und/oder Zeiteinheiten erforderlich sind.

Das Konzept redundanter Codes ba siert darauf, daß die Menge der gültigen Codeworte nur eine Teilmenge T der Menge M aller möglichen Bikombinationen bildet (Bild 4). Je größer die Redundanz des Codes ist, desto kleiner ist die Mächtigkeit der  Teilmencre T im Verhältnis zur Mächtigkeit der Menge M. Entsprechend steigt die Wahrscheinlichkeit dafür, dass ein fehlerhaftes Codewort nicht wieder Element der Teilmenge T ist, so dass bei einer Prüfung der Fehler entdeckt werden kann.

Bild 4. Menge der Codeworte im Verhältnis zu der Menge der Datenworte

Ist eine Menge T von Codewörtern der Länge m gegeben und stellen alle der möglichen 2m Bitkombinationen gültige Codewörter dar, so er hält man eine Obermenge M am einfachsten, indem man k Kontrollstellen an die Codewörter aus T  anfügt. Die Codewörter aus M haben dann eine Länge von n = m + k, und der Quotient k/n gibt die relative Redundanz des redundanten Codes an. Der  entstandene  redundante Code heißt separierbar, da jedes Codewort aus zwei Teilen besteht, den ursprünglichen Datenbits und den angehängten Prüfbits.

Bild 5. Zahl der Prüfbits eines SEC-/DED-Codes in Abhängigkeit von der Anzahl der Datenbits .

Kann zudem jedes Prüfbit eindeutig als  eine  lineare Kombination aus einigen der Datenbits errechnet werden, dann liegt ein linear separierbarer Code vor. Separierbare und linear separierbare Codes erleichtern das Decodieren der Codewörter beim Empfänger. Beim Decodiervorgang werden aus dem empfangenen Datenwort anhand der bekannten Rechenregeln des  vereinbarten redundanzerzeugenden Codes wiederum k hypothetische Prüfstellen aus den eventuell verfälschten m Nachrichtenstellen abgeleitet. Danach werden diese ermittelten Prüfstellen mit den übertragenen Prüfstellen verglichen. Das Ergebnis sind k Vergleichsdaten, die als Syndrom bezeichnet werden.

Die kleinste Distanz zwischen zwei beliebigen  Wörtern  eines  Codes wird Hamming-Abstand d genannt. Diese kleinste Distanz ergibt sich aus der Anzahl der Binärstellen, die mindestens verfälscht werden müssen, um ein gültiges Codewort in ein anderes gültiges Codewort zu überführen.

Ein wichtiges Merkmal eines fehlerprüfenden Codes ist die Anzahl e der sicher erkennbaren Fehler und die Zahl f der rekonstruierbaren Fehler; e und f geben hierbei an, wieviele Binärstellen eines Codewortes höchstens verfälscht sein dürfen, um eine Verfälschung sicher erkennen bzw. beheben zu können. Bei einem gegebenen Hamming-Abstand d lassen sich e und f direkt angeben. Es gelten folgende Zusammenhänge:

  1. e := d-1
  2. f :=(d-1)/2 für ungerades d
  3. f :=(d-2)/2 für gerades d

Ein Code mit einein geraden Hamming-Abstand d läßt sich für die Korrektur nicht voll nutzen, da verfälschte Codewörter entstehen können, die den gleichen Abstand von zwei verschiedenen gültigen Codewörtern haben und die deshalb keinem Korrekturbereich eindeutig zugeordnet werden können.

Ein f Fehler korrigierender Code mit ungeradem Hamming-Abstand ordnet einem gültigen Codewort alle die n-stelligen Nachrichten zu, die sich höchstens um f Binärstellen von diesem unterscheiden. Hierzu gehören das Codewort selbst, n Binärwörter, die sich in einer Binärstelle vom Codewort unterscheiden, (n) Binärwörter, die sich in zwei Stellen unterscheiden, usw., also insgesamt

  1. Summe (v = 0 bis f) (n über v)

n-stellige Binärwörter. Da der Code 2m gültige Codewörter enthält und bei n Stellen maximal 2n unterschiedliche Binärwörter realisiert werden können, gilt

  1. 2n ist größer gleich 2m mal Summe (v = 0 bis f) (n über v)

und mit n = m + k:

  1. 2k ist größer gleich Summe (v = 0 bis f) (n über v)

Gleichung (vi) zeigt, daß die Vorgabe von f direkt den nötigen Mindestaufwand an Redundanz, also die Anzahl der nötigen Prüfstellen k, bestimmt.

Für die am weitesten verbreiteten, einen Fehler korrigierenden (f=1) und zwei Fehler erkennenden Codes (SEC-/DED-Codes, eng. single error correction/double error detection) ergibt sich aus (vi):

  1. 2k ist größer gleich m + k + 1

Einige Werte dieser Gleichung zeigt die Tabelle in Bild 5. Daraus kann man erkennen, daß der relative Anteil der Prüfbits mit größer werdender  Gesamtwortbreite sinkt. Allerdings bringt eine größere Gesamtwortbreite auch ein erhöhtes Risiko für nicht mehr korrigier- oder erkennbare Mehrfachbitfehler mit sich.

Ein einfaches Codierverfahren stellt die Zweifachübertragung dar. Verschiedene Variationen dieses Verfahrens sind bekannt und im Einsatz. Sie werden gesondert in Folge 3 dieser Serie betrachtet. In der nächsten Folge werden verschiedene redundante Codes erläutert.

Fortsetzung folgt

 

Autor

improve
marketing-training-consulting
Dipl. Inform. Klaus Eppele
Heinrich-Weitz-Str. 31
76228 Karlsruhe
Tel: 07 21 / 94 74 621
Fax: 07 21 / 94 74 622
eMail:
eppele@improve-mtc.de
URL:
http://www.improve-mtc.de

Erschienen in Datacom 09/91, Seiten 136 - 144