Institut für Informatik Lehrstuhl für Eingebettete Systeme Prof. Dr. Uwe Brinkschulte Mathias Pacher Eingebettete Systeme 2. Übungsblatt Lösungsvorschlag 1. Aufgabe (Mikrocontroller) Ein Mikrocontroller ist ein Mikrorechner auf einem Chip, auf dem zuätzliche Komponenten wie Schreib- und Lesespeicher, Zähler- und Zeitgebereinheiten, serielle Ein- und Ausgabeeinheiten integriert sind, siehe Abbildung 1. Die Beschreibung der Funktionen dieser Komponenten liegt in den Vorlesungsfolien (2.1; 2.2; 2.3) vor. Zähler / Zeitgeber serielle / parallele EA Kanäle Schreib-/Lesespeicher RAM Prozessorkern A/D- Wandler Watchdog Echtzeit- Kanäle ROM Flash PROM EPROM EEPROM Festwertpeicher DMA & Unterbrechungen Erweiterungsbus Ruhebetrieb Abbildung 1: ypische Komponenten eines Mikrocontrollers Die Einsatzgebiete für Mikrocontroller sind sehr vielfältig: Steuerung von Haushaltsgeräten wie Kaffeemaschinen, Waschmaschinen, Kühlschrank, Fernseher... Einsatz in der KFZ-echnik: Motormanagement, Antiblockiersystem, raktionskontrolle, Fahrassistenzsysteme... Zur Automatisierung durch Steuern, Regeln und Überwachen von Prozessen... 2. Aufgabe (Adressierung) Bei der isolierten Adressierung sind der adressraum und der Adressraum für Einund Ausgabezugriffe strikt getrennt. 1
2.5. Mikrocontroller-Komponenten 2.5.2.1 Anbindung an den Prozessorkern EA-Adressraum DA-Wandler adressraum - und EA- Adressraum EA-Adresse 2.5. Mikrocontroller-Komponenten adresse Isolierte Adressierung adresse DA-Wandler Gemeinsame Adressierung.1 Anbindung Dahingegen an den wird Prozessorkern der zur Verfügung stehende Adressraum bei der gemeinsamen Adressie- Goethe-Universität Frankfurt am Main Lehrstuhl für Eingebettete Systeme - Prof. Dr. U. Brinkschulte rung sowohl für den als auch für Ein- und Ausgabezugriffe benutzt. 12 EA-Adressraum DA-Wandler adressraum - und EA- Adressraum ax. se adresse Isolierte Adressierung adresse DA-Wandler Gemeinsame Adressierung kfurt am Main Lehrstuhl für Eingebettete Systeme - Prof. Dr. U. Brinkschulte Vorteile isolierte Adressierung: Die strikte rennung der beiden Zugriffsarten. Dadurch kann der Programmierer nicht versehentlich für einen 12 zugriff auf beispielsweise eine Eingabeeinheit zugreifen. Des Weiteren können die jeweiligen Adressraumgrößen für ihre Zugriffsart voll genutzt werden, und müssen sich den verfügbaren Adressraum nicht teilen. Daraus resultiert, dass man insbesondere für die Ein- und Ausgabe schmälere Adressen wählen kann, was beispielsweise bei einem wiederholten Zugriff auf eine externe Komponente nützlich ist. Durch die verringerte Adressbreite kann auch einfachere Hardware eingesetzt werden. Vorteile gemeinsame Adressierung: Es liegt eine homogene Adressierung vor, man muss also beim Programmieren nicht darauf achten, ob die aktuelle Adresse für die jeweils andere Zugriffsart reserviert ist. Daraus folgt nun, dass keine speziellen Befehle für die Ein- und Ausgaben benötigt werden. Weiterhin können sowohl für Ein-/Ausgabe- und zugriffe diesselben Adressierungsarten angewendet werden. 3. Aufgabe (Sprungvorhersage) a) Die Sprungvorhersagetechnik dient dazu, die Sprungrichtung (also Sprung wird ausgeführt oder Sprung wird nicht ausgeführt) eines bedingten Sprunges vorherzusagen. Dies ist insbesondere bei heutigen vielstufigen superskalaren Prozessoren notwendig, 2
da bei ihnen die Sprungrichtung eines bedingten Sprunges beim Holen in den Prozessor oft noch gar nicht feststeht, weil die für die Entscheidung der Sprungrichtung benötigten Werte noch nicht berechnet wurden. Man unterscheidet zwischen statischer und dynamischer Sprungvorhersage. Bei der statischen Sprungvorhersage wird für einen bedingten Sprungbefehl immer diesselbe Entscheidung getroffen, also entweder immer Sprung wird genommen oder immer Sprung wird nicht genommen. Eine bei der Ausführung von Schleifen günstige Variante einer statischen Sprungvorhersage ist Rückwärtssprung wird immer genommen, Vorwärtssprung wird nie genommen. Die statische Sprungvorhersage ist einfach zu implementieren, hat dafür aber den Nachteil, dass ihre refferquote im Vergeich zu der von dynamischen Sprungprädiktoren oft viel schlechter ist. Bei der dynamischen Sprungvorhersage wird der Sprungverlauf des Sprunges miteinbezogen: Hier werden beispielsweise die zwei letzten Sprungausführungen betrachtet um die nächste Vorhersage zu berechnen (2-Bit-Prädiktor). Fortschrittlichere dynamische Sprungprädiktoren beziehen auch das Sprungverhalten korrelierter Sprünge mit ein, siehe dazu Mikrocontroller und Mikroprozessoren (Springer-Verlag) von U. Brinkschulte und. Ungerer. b) Ein 1-Bit-Prädiktor hat zwei Zustande, aken () und Not aken (). Dabei wird durch den aktuellen Zustand die Sprungvorhersage festgelegt, und ein Zustandsübergang findet anhand des tatsächlichen Sprungverlaufs statt, siehe Abbildung 2. Abbildung 2: 1-Bit-Prädiktor Ein 2-Bit-Prädiktor hat vier Zustände, Strongly aken (S), aken (), Not aken () und Strongly Not aken (S). Auch hier wird durch den aktuellen Zustand die Sprungvorhersage festgelegt, und die Zustandsübergänge finden anhand des tatsächlichen Sprungverlaufs statt. Man kann zwei Arten von 2-Bit-Prädiktoren unterscheiden, den 2-Bit-Prädiktor mit Sättigungszähler, siehe Abbildung 3 (a) und den 2-Bit-Prädiktor mit Hysterese, siehe Abbildung 3 (b). Beide Prädiktoren wechseln ihre Vorhersage, also ob ein Sprung genommen wird oder nicht, erst nach zwei Fehlvorhersagen. Sie sind für verschachtelte Schleifen gut geeignet, wobei der 2- Bit-Prädiktor mit Hysterese ein aggressiveres Umschaltverhalten besitzt, was ein Flattern zwischen den nicht starken Zuständen vermeidet. Die 2-Bit-Prädiktoren sind bei verschachtelten Schleifen besser geeignet als ein 1- Bit-Prädiktor: 3
S S (a) 2-Bit Prädiktor mit Sättigungszähler S S (b) 2-Bit Prädiktor mit Hysterese Abbildung 3: 2-Bit-Prädiktoren L 1 : L 2 : bne L 2 Innere Schleife bne L 1 Äußere Schleife Bei einer verschachtelten Schleife wie in diesem Beispiel wird ein 1-Bit-Prädiktor in der inneren Schleife immer einen Fehler bei Schleifenende machen (wenn die Schleife mindestens einmal durchlaufen wurde). Wenn durch die äußere Schleife die innere Schleife wieder ausgeführt wird, wird der 1-Bit-Prädiktor bei der ersten neuen Ausführung der inneren Schleife wieder einen Fehler machen, da er nun auf steht. Genau dieser Fehler wird durch die 2-Bit-Prädiktoren vermieden, sie stehen nun immer noch im Zustand. c) Die abellen sind so zu lesen, dass jeweils über der Kennzeichnung, ob ein Sprung ausgeführt wurde oder nicht, die darauf basierende Sprungvorhersage für den nächsten Sprung steht. S Bedingter Sprung Start 1 2 3 4 5 6 7 8 Innere Vorsg. S S S S Schleife L 3 Ausfg. Äußere Vorsg. Schleife L 4 Ausfg. S Bedingter Sprung 9 1 11 12 13 14 15 16 17 Innere Vorsg. S S S S S S S Schleife L 3 Ausfg. Äußere Vorsg. Schleife L 4 Ausfg. 4
Bedingter Sprung 18 19 2 21 Innere Vorsg. Schleife L 3 Ausfg. Äußere Vorsg. Schleife L 4 Ausfg. An diesem Beispiel sieht man nochmal, dass der 2-Bit-Prädiktor der inneren Schleife nur durch die Initialisierung und jeweils beim Schleifenaustritt eine falsche Vorhersage macht. Beim Wiedereintritt in die Schleife ist die Vorhersage jedoch richtig, da er bei der Vorhersage genommen geblieben ist. Der 2-Bit-Prädiktor der äußeren Schleife macht ebenfalls durch die Initialisierung und beim Schleifenaustritt jeweils eine falsche Vorhersage. d) Rechner mit Sprungvorhersage sind im Allgemeinen nicht gut für Echtzeitsysteme geeignet: Bei Echtzeitsystemen ist die Vorabberechnung der Worst Case Execution ime (WCE) erforderlich. Im schlimmsten Falle muss man also davon ausgehen, dass alle Vorhersagen der Sprungvorhersage falsch sind, und die Zeit für das daraus resultierende Rücksetzen des Prozessors miteinbeziehen. Dies vergrößert die WCE mit Sprungvorhersage gegenüber der WCE eines ähnlichen Prozessors ohne Sprungvorhersage. 4. Aufgabe (Zähler und Zeitgeber) a) Der 16-Bit-Zähler kann also von bis 2 16 1 = 65535 zählen. Bei einer Frequenz von 1 MHz zählt er 1 7 icks in einer Sekunde. Per Dreisatz berechnet man nun, dass der Zähler in,75 Millisekunden 75 icks hochzählt. Er muss also so konfiguriert werden, dass er bis 75 icks (< 2 16 1) hochzählt, dann einen Impuls erzeugt und wieder bei icks anfängt zu zählen, siehe Abbildung 4. Abbildung 4: Zeit-Diagramm mit aktuellem Zählerstand und Impulssignal 5
b) Bei einer Frequenz von 1 MHz kann der Zähler eine maximale Zeit von messen. t max = 216 icks 1 7 icks s =, 65536 s = 6, 5536 ms Es lassen sich längere Zeiten messen, wenn der Zeitgeber einen Frequenzteiler nutzt. Dabei sinkt allerdings die Genauigkeit der Zeitmessung. Alternativ kann bei jedem Überlauf des Zählerregisters ein Wert eines anderen Registers inkrementiert werden (bei maximaler Genauigkeit). c) Der Umfang U des Rades beträgt U = πd = 5π cm 15, 71 cm. Die Bogenlänge b zwischen je zwei Schlitzen beträgt somit b =, 436 cm. Für die 15,71 cm 36 Geschwindigkeit des Rades nach 5x ms (x N) ergibt sich daher: v x = (Anzahl Peaks im Intervall (x 1)5 ms bis x 5 ms), 436 cm, 5 s 2,436 cm 3,436 cm Es ergibt sich v 1 = =, 1744 m, v,5 s s 2 = =, 2616 m, v,5 s s 3 =, 2616 m, v 5,436 cm s 4 = =, 436 m und v 4,436 cm,5 s s 5 = =, 3488 m.,5 s s Für die Durchschnittsgeschwindigkeit v D gilt: 3,436 cm,5 s = v D = 5 x=1 v x 5 =, 2965 m s Die zurückgelegte Strecke s lässt sich einfach aus der Anzahl der gezählten Schlitze berechnen: s = #Schlitze, 436 cm = 17, 436 cm = 7, 412 cm =, 7412 m 6