TU Wien:Rechnerstrukturen VO (Polzer)/Prüfung 2016-03-11
Zur Navigation springen
Zur Suche springen
Gedächtnisprotokoll der Prüfungsfragen vom 11.03.2016:
Theorie:
- (1. Frage fehlt)
- Wo liegen die Grenzen der Performance-Steigerung beim Pipelineing?
- Was steht in der Page Table und wofür wird sie verwendet?
- Was sind Clocks-Per-Instruction? Wie werden sie berechnet und wovon hängen sie ab?
- Kann es bei Gleitkomma-Additionen durch vertauschte Reihenfolge unterschiedliche Werte herauskommen? Geben Sie ein Beispiel!
- Warum gibt es auf MIPS-CPUs neben den beq/bne Instruktionen keinen blt (branch less than) Befehl?
- Erklären Sie synchrone/asynchrone Datenübertragung bei IO-Systemen.
- Gegeben ist ein direct-mapped Cache mit Cache line Größe von 2 Wörtern. In welche Teile muss die Adresse geteilt werden und wie werden Sie beim Zugriff auf den Cache verwendet?
Praxis:
- C-Code nach MIPS-Assembler übersetzen!
- MIPS-Calling Conventions beachten
- Load-Delay-Slot und Branch-Delay-Slot beachten
int sum(int array[], int len) { int i; int sum = 0; for(i = 0; i < len; i++){ sum += array[i]; } return sum; }
- Pipeline-Diagramm eines längeren MIPS-Assemblercodes zeichnen und herausfinden, wie oft die Schleife durchläuft.
- Forwarding ist implementiert und Sprungziele werden in der zweiten Pipeline-Stufe berechnet und in der dritten ausgeführt. Was würde sich am Programmablauf ändern, wenn Sprünge in der vierten Pipeline-Stufe ausgeführt werden würden?
- (für dieses Beispiel hat man den Branch-Delay-Slot verstehen und berücksichtigen müssen)
- Ein Programm besteht zu 20% aus Floating point additionen, zu 10% aus floating point Multiplikationen und zu 7% aus Divisionen. Es gibt von der Designabteilung 4 Möglichkeiten, die Performance zu steigern:
1. Addition um den Faktor 1,5 beschleunigen. 2. Multiplikation um den Faktor 3 beschleunigen. 3. Divisionen um den Faktor 5 beschleunigen. 4. Multiplikationen und Divisionen jeweils um den Faktor 2 beschleunigen.