Scientific Proseminar C omputing Digitale Rechenanlagen WS 2002/2003 Übungszettel 9 38. Zum Vergleich der Effizienz von Speicherzugriffen bei vier verschiedenen Architekturen betrachten wir: 1. Akku-Maschine (Ein-Adreßmaschine). 2. Speicher-Maschine (3-Adreßmaschine): Alle drei Operanden befinden sich im Speicher. 3. Stack-Maschine (Null-Adreßmaschine): Alle Operationen laufen über den Stack ab. Nur PUSH und POP greifen auf den Speicher zu, alle anderen Befehle holen ihre Operanden vom Stack und legen die Ergebnisse wieder dort ab. 4. Load-Store-Maschine (Register-Maschine): Alle Operationen finden in Registern statt, RegisterRegister-Befehle haben 3 Operanden. Es gibt 16 allgemeine Register, die Registerkennung ist 4 Bit lang. Zum Vergleich der Speicherzugriffe treffen wir für alle Architekturen folgende Annahmen: • Der Operationscode ist immer 1 Byte lang. • Alle Speicheradressen haben eine Länge von 2 Bytes. • Alle Operanden sind 4 Bytes lang. • Die Länge aller Instruktionen ist ein Vielfaches von 1 Byte. • Die Variablen A, B, und C stehen vom Beginn an im Speicher. • Mit einem Speicherzugriff können maximal 4 Bytes übertragen werden. Schreiben Sie für jede der 4 obigen Architekturen Assembler–Code für die Anweisung A = B + C . Verwenden Sie dazu die (syntaktisch der entsprechenden Architektur angepaßten) Assemblerbefehle load, store, add, push, pop, move und ermitteln Sie die Anzahl der Befehlsbytes und die Anzahl der Datenbytes für jede Code-Sequenz. Welche Architektur hat den effizientesten Code und welche die wenigsten Speicherzugriffe (= Befehle und Daten)? 39. Ein 500MHz Pentium III Prozessor weist folgende CPI-Raten für die einzelnen Befehlsgruppen auf: Floating Point: ALU: Branch und Load/Store: 32 Zyklen 4 Zyklen 6 Zyklen Das Verhältnis der Branch und Load/Store zu den ALU Operationen beträgt 40/60. PS Digitale Rechenanlagen Übungszettel 9 Zur Verbesserung der Performance werden 2 sich gegenseitig ausschließende Möglichkeiten ins Auge gefaßt: 1. Verbesserung der Floating Point Einheit von 32 auf 24 Zyklen pro Floating Point Operation in Verbindung mit einer FPU-internen Takterhöhung um 20%. 2. Verbesserung der ALU von 4 auf 3 Zyklen pro ALU Operation. Berechnen Sie die mindestens erforderliche Häufigkeit von Floating Point Operationen (in Prozent), ab der Möglichkeit 1 (Verbesserung der Floating Point Einheit) eine größere PerformanceSteigerung als Möglichkeit 2 (Verbesserung der ALU) bewirkt. 40. Gegeben sei folgendes Programm für den Universalrechenautomaten (URA) sowie die Speicherbelegung am Programmbeginn: Adresse Label 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000a 000b ... 1000 1004 1008 1012 ... Operation Operanden mov mov mov loop: cmp blt sub mov inc jmp mark1: mov mov ret A: B: C: D: r4, #0 r1, 1000 r2, 1004 r1, r2 mark1 r1, r2, r3 r1, r3 r4 loop 1008, r4 100c, r1 Kommentar ; ; ; ; ; ; ; ; ; ; ; ; r4 = 0 r1 = Inhalt von Adresse 1000 r2 = Inhalt von Adresse 1004 vergleiche r1 mit r2 Sprung wenn r1 < r2 subtrahiere r2 von r1 Ergebnis in r1 zurück erhöhe r4 verzweige nach loop Inhalt von r4 nach Adresse 1008 Inhalt von r1 nach Adresse 1012 Programmende 44 7 0 0 Zeichnen Sie ein Flußdiagramm für das Programm. Was berechnet das Programm? 41. Beschäftigen Sie Sich mit dem W inDLX-Simulator sowie mit den Instruktionen und Adressierungsarten seines Befehlssatzes. Verwenden Sie dazu die in den Hilfedateien angegebenen Beispielprogramme bzw. versuchen Sie selbst, einfache Programme zu erstellen. W inDLX ist frei verfügbar und kann z.B. von der Homepage http://student.cosy.sbg.ac.at/project/tutorien/digitale/ geladen werden bzw. ist auf den Windows-Rechnern in den Übungsräumen vorinstalliert.