Digitale Rechenanlagen

Werbung
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.
Herunterladen