U ̈bung2 RAWiSe18/19 Aufgabe 1 (Instruktionssatzarchitekturen)
In dieser Aufgabe sollen verschiedene Rechnerarchitekturen bezu ̈glich der Parameter Co- deeffizienz und Speicherbandbreite verglichen werden. Die Codeeffizienz ist umgekehrt proportional zu dem Speicherbedarf fu ̈r die Instruktionen eines gegebenen Programms. Beno ̈tigt Rechnerarchitektur A weniger Instruktionsspeicher als Rechnerarchitektur B, ist die Codeeffizienz von A ho ̈her. Speziell in eingebetteten Systemen ist die Codeeffizienz ein wichtiger Parameter, da mehr Instruktionsspeicher auch mehr Kosten bedeutet. Die Speicherbandbreite ist in diesem Zusammenhang definiert als die Summe aller zwischen Prozessor und Speicher transferierten Bytes, d. h. Instruktionen und Daten. Je ho ̈her die Speicherbandbreite, umso gro ̈ßer sind die Anforderungen an das Speichersystem.
In diesem Beispiel werden nur Datentransferinstruktionen und die Arithmetikinstruktio- nen add und sub betrachtet. Fu ̈r alle Rechnerarchitekturen soll gelten:
• Der opcode einer Instruktion ist ein Byte lang. • Speicheradressen sind 2 Byte lang.
• Registeradressen sind 4 Bit lang.
• Operanden im Speicher sind 4 Byte lang.
• Die Instruktionsla ̈nge muss ein Vielfaches von einem Byte sein. Zu untersuchen sind folgende Rechnerarchitekturen:
• Akkumulator-Architektur: Es gibt nur ein Register, den Akkumulator. Alle anderen Operanden befinden sich im Speicher. Die zur Verfu ̈gung stehenden Assemblerin- struktionen sind: load, store, add, sub.
• Speicher-Speicher-Architektur : Es gibt keine Register. Alle Instruktionen verwenden ausschließlich Speicheroperanden. Die zur Verfu ̈gung stehenden Assemblerinstruk- tionen sind: add, sub.
• Stack-Architektur: Es gibt keine frei adressierbaren Register, sondern einen Stack. Die zur Verfu ̈gung stehenden Assemblerinstruktionen sind: push, pop, add, sub.
• Register-Register-Architektur: Es gibt eine Reihe frei addressierbarer, interner Regi- ster. Die arithmetischen Instruktionen verwenden ausschließlich Registeroperanden. Die zur Verfu ̈gung stehenden Assemblerinstruktionen sind: load, store, add, sub.
(1) Bestimmen Sie fu ̈r die Codesequenz
a = b + c;
b = a + c;
d = a – b;
Seite 1 / 3
U ̈bung2 RAWiSe18/19
fu ̈r jede der Architekturen die entsprechende Assemblercodesequenz. Beachten Sie, dass fu ̈r einen fairen Vergleich der Architekturen alle drei neu berechneten Variablen a, b und d wieder in den Speicher geschrieben werden mu ̈ssen. Stellen Sie fest, wie groß jeweils der Speicherbedarf fu ̈r die Instruktionen ist. Welche Architektur hat die gro ̈ßte Codeeffizienz?
(2) Bestimmen Sie fu ̈r die Assemblercodesequenz in (1) die beno ̈tigte Speicherbandbrei- te fu ̈r jede der Architekturen. Welche Architektur weist die geringste Speicherband- breite auf?
Aufgabe 2 (Maschinenstruktur)
Auf einer Register-Register-Maschine soll folgende Berechnungen ausgefu ̈hrt werden:
1. c = a – b 2. e = c + d 3. f = d + a 4. g = b + e
Gegeben seien folgende Zugriffszeiten:
• Das Lesen aus einer Speicheradresse beno ̈tige 3 Zeiteinheiten
• Das Schreiben an eine Speicheradresse beno ̈tige 4 Zeiteinheiten • Der Datentransfer zwischen 2 Registern beno ̈tige 1 Zeiteinheit
Die Variablen a, b, d seien zu Beginn im Speicher abgelegt. Die Variablen c, e, f, g sollen nach Beendigung der Rechnung im Speicher stehen.
(1) Bestimmen sie zuna ̈chst die optimale Ausfu ̈hrungsdauer der angegebenen Berech- nung auf einer Register-Register-Maschine mit 4 Registern.
(2) Bestimmen Sie die optimale Ausfu ̈hrungsdauer der angegebenen Berechnung auf einer Register-Register-Maschine mit nur 2 Registern.
Seite 2 / 3
U ̈bung2 RAWiSe18/19 Aufgabe 3 (U ̈bersetzung von Rekursionen)
Gegeben sei das rekursive C-Programm
int ack(int n, int m)
if (n == 0)
return m + 1;
else
if (m == 0)
return ack(n – 1, 1);
else
return ack(n – 1, ack(n, m – 1));
}
(1) U ̈bersetzen Sie das Beispiel in eine rekursive MIPS-Prozedur. Beachten Sie hierbei folgende Hinweise:
• Treffen Sie sinnvolle Annahmen u ̈ber die notwendigen Register fu ̈r die Argumente und das Resultat.
• Sichern Sie Register vor ihrer Verwendung und stellen Sie die Register anschließend wieder her.
• Verwenden Sie aussagekra ̈ftige Sprungmarken.
Seite 3 / 3