Echtzeit

Eine kleine Geschichte der Zeit

20.11.2007 | Autor / Redakteur: Christian Siemers* / Hendrik Härter

Bild: berwis/pixelio.de
Bild: berwis/pixelio.de

In zukünftigen Prozessordesigns spielt der Faktor Zeit eine noch wichtigere Rolle: synchrone Inseln in einem ungetakteten Design - der Prozessor passt sich den Betriebsbedingungen an. Das bekannte von-Neumann-Modell wird zeiterweitert. Die Zeitsteuerung soll in Hochsprachen durch ein Timerelement implementiert werden.

Je länger man sich mit der Geschichte von Rechnern und Anwendungen befasst, und je stärker man sich mit eingebetteten Systemen auseinander setzt, desto merkwürdiger erscheint einem das Fehlen der Zeit im Rechner. Die Zeit soll fehlen? Schön wäre es ja, wenn wir nicht mit der Ausführungszeit und dem teilweise schleppenden Voranschreiten in den Algorithmen rechnen müssten. Die Ausführungszeit hat uns das allseits bekannte Ausführungsmodell nach von Neumann schon eingebrockt, aber das ist nicht einmal so schlimm. Als viel schlimmer müssen wir heute eigentlich betrachten, dass wir nur mit größerem Aufwand die real fortschreitende Zeit (Echtzeit) und die Rechenprogramme nicht oder nur schwierig miteinander in Bezug bringen können.

Das durch von Neumann, Goldstine und Burkes 1946 formulierte Modell entstand aus der Analyse der bis dahin gebauten (sehr spezifischen) Rechner. Im absoluten Vordergrund stand die Universalität des neuen Rechnermodells („Universal Program-stored Machine“), d.h., nur durch Speicherung von Programmablaufinformationen in einem Speichermedium, dem sogenannten Codespeicher, konnte die Maschine zu einer bestimmten Handlungsweise gebracht werden.

Diese Universalität war eine zweifache: Zum einen konnte durch den wirklich einfachen Vorgang der Speicherung eine Maschine universell ein (lösbares) Problem berechnen, zum anderen war das Modell der Maschine so knapp, dass nichts fortgelassen werden konnte. Wie genial die Forscher 1946 gedacht haben, mag daran gemessen werden, dass sie selbst dieses Modell nur für die nächste Generation vorgeschlagen haben. Nur wir, die Nachfahren in der Informatik, wir nutzen es noch heute.

Die Anforderungen der möglichst schnellen Berechnung waren schon immer allgegenwärtig. Der Performance-Hunger scheint unstillbar zu sein, und seine (zeitweise) Befriedigung ist auch eigentlich einfach: Man baut einen Supercomputer, der einmal mehr alle Vorgänger im Mittel weit schlägt. Im Mittel? Ja, denn nur das ist wichtig, er muss einfach schneller sein, aber von bestimmten Zeitmarken ist keine Rede.

Die Anforderungen der Echtzeit, etwa in den 70er Jahren aufkommend, sind da ganz anders. Jetzt wird für einzelne Bestandteile eine bestimmte maximale Rechenzeit gefordert, und zwar unter allen Umständen und nicht im Mittel. Das ist der Unterschied, und deshalb sind schnellere Rechner (nach dem Von-Neumann-Modell) nur die halbe Miete.

Echtzeitfähigkeit ist Betriebssystemunabhängig

Die Ausführungszeit bzw. die Echtzeitproblematik wird bei heutigen Systemen auf das (Echtzeit-) Betriebssystem abgebildet. Das bedeutet, dass diese virtuelle Maschine alle zeitlichen Überwachungen übernimmt, bei preemptiven Systemen sogar bestimmt, welche Task zu welchem Zeitpunkt Ausführungszeit bekommt (oder auch nicht) usw. Mit anderen Worten: Ein Echtzeitbetriebssystem verhindert die Echtzeitfähigkeit nicht, allerdings müssen die einzelnen Tasks auch dafür konzipiert sein.

Im zeitlichen Maßstab von Sekunden oder Millisekunden funktioniert das auch sehr gut, denn dann ist die Anzahl der Befehle pro Zeitscheide groß genug, um den Overhead des Betriebssystems (auch dies ist nämlich ein Stück Software) vernachlässigen zu können. Werden die Zeitscheiben zu klein, wächst automatisch der Overhead an, und irgendwann ist der Punkt erreicht, an dem man nur verwalten würde.

Daneben existieren Applikationen, bei denen kein Betriebssystem zum Einsatz kommt, aber dennoch eine meist kleine Anzahl von Aufgaben in zeitlichem Bezug zu lösen sind. Hier kommen häufig besondere Designmethoden zum Einsatz [1] [2], bei denen die Zuordnung der Aufgaben zu den Zeitpunkten im Vordergrund stehen. Diese Methoden sind aber Handdesign, d.h., das Programming in the Large, wie die Zusammenfassung aller Tasks auch genannt wird, muss vergleichsweise mühsam durchgeführt werden. Hochsprachensupport fehlt an dieser Stelle bis heute.

Es gibt jedoch noch mindestens einen weiteren Einsatzbereich für die Integration der Zeit, der in den künftigen Jahren noch sehr interessant werden dürfte. Die Autoren in [3] beschreiben ein Prozessordesign, das sich durch synchrone (getaktete) Inseln in einem global asynchronen (d.h. ungetaktetem) Design auszeichnet. Dieses Designparadigma wird mit GALS, Globaly Asynchronous Locally Synchronous bezeichnet.

Der wichtige Punkt ist dabei, dass die getakteten Inseln durch VCOs, Voltage-Controlled Oscillator, variabel mit Takt versorgt werden. Wenn also ein Teil oder auch der gesamte Prozessor in der Bearbeitung von Aufgaben der Zeit bzw. dem Zeitplan nachhinkt, dann kann beschleunigt werden, ebenso kann die Prozessorgeschwindigkeit zwecks erheblicher Energieeinsparung reduziert werden. Ein derartig konzipierter Mikroprozessor oder –controller kann sich den aktuellen Betriebsbedingungen anpassen.

Diese Anpassung entspricht einer Regelung, im einfachsten Fall einer Proportionalregelung, sie kann aber nur funktionieren, wenn es eine Messwerterfassung gibt. Diese Zeitmessung kann mit der gewünschten Präzision, aber ohne Nebenwirkungen wie etwa Performanceverlust nur erfolgen, wenn sie direkt im Prozessor integriert ist. Wir brauchen also ein erweitertes Von-Neumann-Modell.

Erweitertes Von-Neumann-Modell

Bild 1: Blockarchitektur des erweiterten Von-Neumann-Modells
Bild 1: Blockarchitektur des erweiterten Von-Neumann-Modells

Ein Zeit-erweitertes Von-Neumann-Modell ist keineswegs Zukunft, sondern wird in [4] beschrieben. Bild 1 zeigt ein solches Modell, wie man es sich in etwa vorstellen kann. Die scheinbar kleine Erweiterung der Time Management Unit (TMU) ermöglicht Zeitmessungen und direkt Zeit-gesteuerte Aktionen. Wie diese TMU aufgebaut sein kann zeigt dann Bild 2.

Möglicher Aufbau der Time Management Unit (TMU) in einem Zeit-erweitertem Von-Neumann-Modell. Die Erweiterung der TMU ermöglicht Zeitmessungen und direkt Zeit-gesteuerte Aktionen.
Möglicher Aufbau der Time Management Unit (TMU) in einem Zeit-erweitertem Von-Neumann-Modell. Die Erweiterung der TMU ermöglicht Zeitmessungen und direkt Zeit-gesteuerte Aktionen.

Das alles sieht ein wenig abstrakt aus, aber Bild 2 zeigt einen Weg, wie die Zeitsteuerung bzw. –messung auf einfache Weise integriert werden kann. Eine Ereignisliste (Event List) speichert die Zeitpunkte, zu denen eine Aktion angestoßen werden soll, z.B. auch in periodischer Form. Die von dem integrierten Timer gelieferten Zeitwerte werden mit dieser Liste verglichen, und ist ein Wert erreicht, wird die Aktion auch tatsächlich ausgeführt. Geeignete Aktionen sind beispielsweise

  • einfacher Eintrag in eine Speicherliste (Event Memory List),
  • Ausführung einer Exception.

Die einfachen Einträge dienen dem zeitlichen Monitoring der Ausführung von Tasks. Das ist für Echtzeitsysteme sicherlich interessant, weil je nach Speichertiefe hieraus eine längere Beobachtung möglich ist, ohne den Betrieb zu beeinflussen. Das Auslesen der Liste kann dann bei Auswertung erfolgen. Nebenbei kann der Entwickler die Eintragszeitpunkte so wählen, dass jeder Durchlauf oder auch nur die Überschreitungen gespeichert werden.

Die Ausnahmebehandlung hingegen stellt ein Mittel dar, um zur Laufzeit Situationen auch beheben zu können. Dies sind in gewissem Sinn kleine Watchdog-Ereignisse, die Verzögerungen oder Überschreitungen möglichst frühzeitig melden. Ähnliche Möglichkeiten bot auch der Ansatz in [5], wobei hier das Zeitmanagement in die Verwaltung der Interrupt Request integriert war.

Zeitsteuerung mit einer Hochsprache

Bild 3: Ein neues Hochsprachenkonstrukt for_every_loop und dessen Übersetzung in Standard-C: a) Verwendung, b) Übersetzung
Bild 3: Ein neues Hochsprachenkonstrukt for_every_loop und dessen Übersetzung in Standard-C: a) Verwendung, b) Übersetzung

Die Kopplung zwischen Hochsprachen und Hardware sind neue Assemblerbefehle, z.B. zum Konfigurieren, Starten, Stoppen und Auslesen der TMU und ihrer Einträge. Diese Assemblerbefehle sind kurz, ihre Ausführungszeit in RISC-Prozessoren beträgt 1 Takt, und eine Abschätzung der Laufzeitbelastung im laufenden Betrieb zeigt, dass der Einfluss weitaus kleiner als 1 % sein wird. Viel interessanter sind jedoch Konzepte für Hochsprachen. Bild 3 (a/b) zeigt ein Beispiel für C.

Hier beabsichtigt der Entwickler, für jeden Schleifendurchlauf eine zeitliche Überwachung einzuführen (for_every_loop). Dazu wird ein Timer-Element (element_number, entspricht einem Eintrag in der Event-Liste der TMU) mit dem gewünschten Überwachungszeitwert initialisiert. Die Aktionen, die nach einem Überschreiten ausgeführt werden sollen, müssen vorher konfiguriert sein. Dieses neue Sprachkonstrukt kann dann per Hand oder per speziellem Pre-Compiler in Statements überführt werden, die dem Standard entsprechen und nur neue Funktionsaufrufe wie in Bild 3b nutzen.

Fazit

Es sollte einmal gezeigt werden, dass die Ausführungszeit doch etwas in Mikroprozessoren zu suchen hat. Zukünftige Anwendungen hiervon wie etwa bessere Kontrolle von Echtzeitapplikationen selbst im Mikrosekundenbereich oder adaptives Takten könnten von einer Erweiterung durch die Time Management Unit sehr unterstützt werden, und selbst für Echtzeit-Betriebssysteme wäre die Einführung der TMU wertvoll.

Literaturhinweise:

  • [1] Christian Siemers, „Exakte Planung der Tasks“. ElektronikPraxis Sonderheft Embedded Systems Development II (Oktober 2005) S. 32–35 (2005).
  • [2] Christian Siemers, Detlef Jantz, „Design Methodology for Small Real-time capable Embedded Systems“. Proceedings Embedded World 2006, Vol. 1, pp.305-312 (2006).
  • [3] Emil Talpes, Diana Marculescu, „Toward a Multiple Clock/Voltage Island Design Style for Power-Aware Processors”. IEEE Transactions on Very Large-Scale Integration System 13(05), pp.591-603 (2005)
  • [4] Krishnan Kailas, Ashok Agrawala, „An Accurate Time-management Unit for Real-time Processors”. Tech. Rep. UMIACS-TR-97-28, University of Maryland Institute for Advanced Computer Studies, March 1997.
  • [5] Rainer Falsett, Christian Siemers, „Garantiertes Zeitverhalten mechatronischer Systeme – Planung und Überwachung“. Tagungsband Embedded World 2003, Nürnberg, Februar 2003, S. 971–978.

*Prof. Dr. Christian Siemers lehrt am Institut für Informatik an der TU Clausthal und an der Fachhochschule Nordhausen. Kontakt: siemers@fh-nordhausen.de

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 234251 / Software-Entwurf & Echtzeit-Design)