Übungen zu Grundlagen der Rechnerarchitektur und

Blatt 0: Rechnerarchitektur, URA, Assembler, Zahlendarstellung
SS2015
Übungen zu Grundlagen der Rechnerarchitektur und
-organisation(ÜGRa)
Blatt 0
Ausgabe:
Abgabe:
2015-04-20
2015-04-27
Bonusaufgaben
• Aufgabenstellung genau lesen und nur Gefragtes beantworten!
• Kein Aufsatz mit Einleitung, Hauptteil, Schluss —
Stichpunkte reichen (meist) aus, aber auch nicht nur ja/nein.
• Keine Gruppenabgaben, kein Kopieren aus Wikipedia, . . . (Quellenangabe)!
• Abgaben bis Montag, 10:00 Uhr per EST, nicht handschriftlich, auch keine Scans!
Nutzen Sie auch die Literatur im StudOn und in der Bibliothek!
Feiertage im Semester
Do, 14.05 Himmelfahrt auf andere Termine verteilen
Di, 26.05 – Mi, 27.05 Pfingsten fällt aus
Do, 04.06 Fronleichnam fällt aus
Aufgabe 1:
In der Vorlesung wurden unterschiedliche Definitionen für den Begriff „Rechnerarchitektur“
genannt. Was ist die grundlegende Idee, die allen Definitionen gemeinsam ist, und welchen
Vorteil bietet diese?
Rechnerarchitektur
Aufgabe 2:
Nennen Sie die sieben wesentlichen Eigenschaften des von-Neumann’schen Universalrechenautomaten, und überlegen Sie sich, in welcher Form sie in heutigen PCs zu finden sind.
URA
Aufgabe 3:
Assembler
a) Wo findet man Informationen über die unterstützten Befehle und Funktionen eines
Prozessors?
ÜGRa
1
Informatik 3, FAU
Blatt 0: Rechnerarchitektur, URA, Assembler, Zahlendarstellung
SS2015
b) Welche Schritte sind nötig, um ein Hochsprachenprogramm in eine vom Prozessor
ausführbare Form zu bringen?
c) Schreiben Sie ein C-Programm, das zwei Variablen a, b als Kommandozeilenparameter
übergeben bekommt und a2 + 2ab + b2 berechnet.
d) Wie könnte passender (AT&T)-Assemblercode der eigentlichen Berechnung aussehen?
e) Gehen Sie die einzelnen Übersetzungsschritte für das C-Programm durch und analysieren Sie das jeweilige Zwischenergebnis. Vergleichen Sie das Ergebnis des Compilers
mit dem selbst geschriebenen.
f) Wo können für den Prozessor Rechenoperanden abgelegt werden? Welchen Vorteil
bieten die verschiedenen Arten jeweils? Wie werden sie jeweils im generierten Assemblercode adressiert?
Aufgabe 4:
Geben Sie die folgenden Zahlen jeweils in den Systemen binär, dezimal, hexadezimal an:
210 , 0x16, 4210 , 3FF16 , 1001 11002 , 409610 , 232 10 , 2016
Aufgabe 5:
Wie können negative Zahlen im Rechner codiert werden?
Aufgabe 6:
Führen Sie die folgenden ganzzahligen, vorzeichenlosen Rechenoperationen durch. Überlegen
Sie sich anschließend, wie durch Umwandlung in andere Zahlensysteme die Berechnung
besonders einfach durchgeführt werden kann.
0x5f · 0x2
0x132 / 0x2
0x65 · 0x4
0xc3 / 0x4
ÜGRa
2
Informatik 3, FAU
Zahlendarstellung
Blatt 0: Rechnerarchitektur, URA, Assembler, Zahlendarstellung
SS2015
Bonusaufgaben:
Aufgabe 7:
5 Punkte
a) Warum ist es möglich, fertig übersetzte Software auf verwandten Architekturen auszuführen (bspw. Intel Core M, Intel Core i7, AMD FX), obwohl sich deren Geschwindigkeit und interne Realisierung deutlich unterscheiden kann?
2 P unkte
Rechnerarchitektur
b) Ordnen Sie die folgenden Aussagen über einen Prozessor jeweils entweder der Befehlsarchitektur oder der Endoarchitektur (nach Ungerer) zu.
1. Ein Universalregister ist 64 Bit breit.
2. Es stehen 16 Universalregister für arithmetische Operationen zur Verfügung.
3. Die Division dauert 15 Taktzyklen.
4. Der Prozessor ist in 22-nm-Technologie gefertigt.
5. Das Ergebnis einer Multiplikation wird in den Registern EDX und EAX gespeichert.
6. Fließkommabefehle werden intern durch Integerarithmetik emuliert.
3 P unkte
Aufgabe 8:
10 Punkte
a) Was muss man als Programmierer tun, wenn die verfügbaren Rechenregister nicht für
alle nötigen Zwischenergebnisse ausreichen?
2 P unkte
b) Die Intel-x86-Architektur kennt 22 verschiedene Codierungen einer einfachen Addition1 .
Geben Sie Beispiele, worin sie sich unterscheiden. Welchen Vorteil hat es, spezielle Befehls-/Operandenkombinationen (z.B. ADD EAX, imm32, also Register(eax) +
32-Bit Unmittelbarer Operand) zu integrieren?
2 P unkte
c) Schreiben Sie ein Assemblerprogramm, das den folgenden Term berechnet, ohne ihn
vorher zu optimieren:
c = u3 − 15vt + t2 − 66
Verwenden Sie als Register %eax,%ebx,.... Die Variablen c,u,v,t liegen im Arbeitsspeicher. Es stehen die Operationen movl, addl, subl, imull zur Verfügung,
die jeweils zwei Operanden erwarten, von denen jedoch nur maximal einer eine Variable im Speicher sein darf.
1
http://www.intel.com/content/dam/www/public/us/en/documents/manuals/
64-ia-32-architectures-software-developer-manual-325462.pdf S. 521
ÜGRa
3
Informatik 3, FAU
Assembler
Blatt 0: Rechnerarchitektur, URA, Assembler, Zahlendarstellung
SS2015
Der Befehl addl %eax, %ecx addiert bspw. den Inhalt der Register eax und ecx und
speichert das Ergebnis in ecx.
Alternativ können auch Konstanten als Quelloperand verwendet werden. imull $5,
%edx multipliziert den Inhalt des Registers edx mit 5, movl $1, %eax speichert den
Zahlenwert 1 im Register eax.
Versuchen Sie, unnötig viele Operationen zu vermeiden!
5 P unkte
d) Wie viele Zugriffe auf Operanden im Arbeitsspeicher finden bei der Ausführung des
Programms statt?
Das Laden der Befehle selbst soll also nicht gezählt werden.
ÜGRa
4
1 P unkt
Informatik 3, FAU