Das Bild in diesem Blogbeitrag basiert auf einem Bild von JL G auf Pixabay

Wer alt genug ist, erinnert sich wahrscheinlich an den Y2k-Bug. Man würde annehmen, dass die Menschheit daraus gelernt hat. Völlig falsch!

Was war der Y2K-Bug?

Für diejenigen, die zu jung sind, hier ist die Geschichte. In der guten alten Zeit der Computer, d.h. so zwischen 1960 und 1990, war elektronischer Speicher so teuer, dass die Programmierer jeden Trick anwendeten, um ein paar Bytes zu sparen. Aus diesem Grund war es gängige Praxis, nur die letzten beiden Ziffern des Jahres für die Darstellung eines Datums im Computer zu verwenden. Anstatt 31.03.1975 zu speichern, speicherte man 31.03.75.

Als man sich dem Ende des letzten Jahrhunderts näherte, begannen einige Informatiker zu bemerken, dass dies im Jahr 2000 zu Problemen führen könnte, denn statt 2000 werden die meisten Programme annehmen, dass es plötzlich wieder 1900 ist und die Menschen ein negatives Alter haben. Vielleicht fallen sogar Flugzeuge vom Himmel, das Bankensystem bricht zusammen und Atomraketen werden gestartet. Aus diesen Gründen wurden viele Programmierer beschäftigt, um all diese Jahr-2000- (oder kurz Y2K-) Fehler zu finden und zu korrigieren, indem sie nun 4 Ziffern für die Darstellung der Jahreszahl verwenden. Wie wir alle wissen, ist die Apokalypse nicht eingetreten, obwohl es natürlich einige kleinere Pannen gab.

Ein elektronisches Schild an der École centrale de Nantes am 3. Januar 2000 (Quelle: Wikipedia)

Aus Schaden klug geworden

Auf der technischen Seite haben wir gelernt, dass es eine ziemlich dumme Idee ist, bei der Speicherung eines Datums nur zwei Ziffern für die Jahreszahl zu speichern. Alles in allem wird der Aufwand für die Behebung dieses Problems auf etwa 400 Milliarden US-$ weltweit beziffert. Wie üblich behaupten einige, dass das alles nur Geldverschwendung war, weil nichts passiert ist, während andere glauben, dass die Apokalypse gerade deshalb vermieden wurde, weil wir so viel Geld ausgegeben haben.

Der wichtigste Punkt ist jedoch sicherlich, dass wir gelernt haben, diesen Fehler nicht zu wiederholen. Das sollte man zumindest meinen. Und in der Tat, auf Desktop-Computern und im Web, in der Cloud und wie das alles heißt, hat man es heute in der Regel mit vollständigen Datumsangaben zu tun.

Schade um jeden Schaden, aus dem man nicht klug wird

Ich beschäftige mich derzeit viel mit Echtzeituhren (RTCs), weil ich viel Zeit habe (pun intended). Und was mich erstaunt, ist, dass in fast allen RTCs, die derzeit auf dem Markt sind, die Zeit nur mit den letzten beiden Ziffern einer Jahreszahl gespeichert wird. Das ist heute noch kein Problem. Aber irgendwann (in 80 Jahren) werden die Systeme, die diese RTCs verwenden, auf die gleichen Probleme stoßen wie die Systeme, die ich oben erwähnt habe. Schlimmer noch, da es sich dabei hauptsächlich um eingebettete Systeme handelt, wird niemand eine Idee haben, wie man sie reparieren kann.

Angesichts all der Probleme, mit denen wir derzeit konfrontiert sind, ist dies vielleicht das am meisten zu vernachlässigende. Und irgendwann im Jahr 2087 wird die Europäische Union wahrscheinlich vorschreiben, dass alle RTCs mindestens 3 Ziffern der aktuellen Jahreszahl speichern müssen. Und damit werden wir die Y2.1K-Apokalypse vermeiden. Viel wahrscheinlicher ist jedoch das Szenario, dass irgendeine politische Partei diese Initiative stoppt, weil sie der Industrie schaden könnte, und erst im Jahr 2098 beginnen sich die Menschen Sorgen zu machen, was in zwei Jahren mit all ihren intelligenten Geräten passieren wird. Und am Ende hat die Elektronikindustrie ihren großen Tag, denn jeder muss ein neues Smartphone, eine neue Hololens, ein neues fliegendes autonomes Auto und so weiter kaufen.

Wie gesagt, für meine Generation oder die Generation meiner Kinder wird das kein Problem sein. Allerdings ist es mir völlig unverständlich, warum die Ingenieure, die neue RTCs entwerfen, immer noch an dem Schema zur Zeitdarstellung aus den Anfängen der Computertechnik festhalten. Zwei zusätzliche Ziffern würden problemlos in ein Byte passen, und die Implementierung der zusätzlichen Schaltjahresregel ist auch keine Zauberei. Noch besser wäre es, wenn man einen Unix-Zeitzähler verwenden würde. Der Grund, dies nicht zu tun, kann nicht der 1/1000 Cent sein, der durch ein Byte Speicherplatz und ein Minimum an anderer Elektronik weniger eingespart wird.

Abschließend möchte ich noch zwei RTCs erwähnen, die in die richtige Richtung gehen. Die RV-3028 von Micro Crystal enthält einen vorzeichenlosen 32-Bit-Unix-Zeitzähler. Mit der Unix-Konvention, dass die Zeit am 1.1.1970 um 00:00 Uhr begann, bringt einen das bis 2106, bevor ein Überlauf des Zählers zu Verwirrung führen könnte. Allerdings kann man einen solchen Zähler auf einen beliebigen Zeitpunkt beziehen und damit sicherstellen, dass das System bis weit in die Zukunft hinein funktioniert. Die andere RTC ist die MCP 79410 von Microchip, die zumindest die Schaltjahrregel für 00-Jahre bis 2399 richtig hinbekommt, während alle anderen bereits Ende 2099 aufgeben (warum wohl?).

Eine einfache Lösung

Mein Vorschlag für neue RTC-Designs wäre, nur einen Unix-Zeitzähler zu implementieren. Vielleicht sollte man ihn mit heutigen Computern und eingebetteten Systemen kompatibel machen und 8 Bytes für den Zähler verwenden. Übrigens könnte man ihn so implementieren, dass man die oberen drei Bytes als konstante Null belässt und die Erweiterung der Verwendung dieser oberen drei Bytes zukünftigen Generationen überlässt. Die Alarmfunktion könnte man dann auch auf ein weiteres 8-Byte-Register reduzieren. Sich wiederholende Alarme muss das eingebettete Systeme realisieren.

In den meisten Fällen wird das eingebettete System ohnehin mit solchen Unix-Zeitdarstellungen arbeiten, und es macht es sehr einfach, Zeiten zu vergleichen, Intervalle zu berechnen und dergleichen. Für die Umwandlung der Unix-Zeit in eine Zeit-/Datumsdarstellung gibt es auf jeder Plattform Standardbibliotheken. Mit anderen Worten: Es würde das Design der RTC und der Schnittstellensoftware vereinfachen und nachweislich die Rückkehr des Y2K-Fehlers verhindern. Dann müssten wir uns nie wieder Gedanken darüber machen, wie wir die Zeit darstellen, und unsere eingebetteten Systeme würden sogar nach dem Ende des Universums noch korrekt funktionieren. Ich finde, das ist doch ein schlagendes Verkaufsargument.

Views: 15