Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » gra » Aufgabe 1: Mikroprogrammierung
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige ÜberarbeitungLetzte ÜberarbeitungBeide Seiten, nächste Überarbeitung | ||
pruefungen:bachelor:gra:loesungss13 [21.01.2015 17:40] – Alpha2000 | pruefungen:bachelor:gra:loesungss13 [29.01.2015 17:45] – Alpha2000 | ||
---|---|---|---|
Zeile 5: | Zeile 5: | ||
Sequencing Logic: Ermittelt die näste Befehls Adresse aus der Control Memory und schreibt das ergebniss in das Control Address Register | Sequencing Logic: Ermittelt die näste Befehls Adresse aus der Control Memory und schreibt das ergebniss in das Control Address Register | ||
- | Control Memory: | + | Control Memory: |
Instruction Register: Adresse des MacoBefehls | Instruction Register: Adresse des MacoBefehls | ||
Zeile 81: | Zeile 81: | ||
1) | 1) | ||
- | sehr große Seiten: | + | sehr große Seiten: |
- | sehr kleinen Seiten: | + | interne Fragmentierung |
+ | |||
+ | sehr kleinen Seiten: | ||
+ | |||
+ | Externe Fragmentierung | ||
2) | 2) | ||
Zeile 90: | Zeile 94: | ||
3) | 3) | ||
+ | < | ||
+ | tag = 36 bit | ||
+ | offset = 2^12 | ||
+ | 8 Byte pro eintrag = 2^3 | ||
+ | | ||
+ | 2^12 / 2^3 = 512 Einträge -> 9 bit / Tabellen index | ||
+ | 36 / 9 = 4 Stuffige Hierarchie | ||
- | Unbekannt | + | </ |
+ | __4 Stuffige Hierarchie__ | ||
4) | 4) | ||
Zeile 102: | Zeile 114: | ||
Eine temporäre Unterbrechung des Programms.(externe) | Eine temporäre Unterbrechung des Programms.(externe) | ||
+ | |||
+ | um zeitkritische und meist kurze abschnitte abzuarbeiten. | ||
+ | |||
z.b. IO Geräte auszulesen | z.b. IO Geräte auszulesen | ||
+ | |||
2) | 2) | ||
- | Programmierte IO: Direktes Auslesen | + | Programmierte IO: Aktives Warten |
- | z.b. Stdin einlesen(z.b. Fgets) | + | |
+ | Vorteil: Sobald IO antwortet werden die Daten gleich bearbeitet | ||
+ | |||
+ | |||
+ | Interupts IO: CPU Fordert Daten vom IO gerät an | ||
+ | |||
+ | Vorteil: CPU Kann solange andere Sachen machen, IO Meldet sobald Daten da sind | ||
+ | |||
+ | |||
+ | DMA: Vom CPU angestoßener Datentransfer, | ||
- | DMA IO: DMA Controller wickelt den Datentransfer ohne CPU ab | + | Vorteil: CPU wird nach dem Anstoßen nicht mehr benötigt, Transfer |
- | z.b. Auslesen | + | |
- | Unterbrechung´s gesteuerte IO: Angestoßen durch eine Interrupt macht die CPU | ||
- | z.b. CPU muss nur arbeiten wenn Daten zur Verfügung steht | ||
3) | 3) | ||
Zeile 124: | Zeile 146: | ||
Vorteil: | Vorteil: | ||
- | Datenworter liegen ausgerichtet im Speicher | + | |
- | Datenworter liegen immer in zusammenhängenden Speicherbereich | + | Datenworter liegen ausgerichtet im Speicher |
Nachteil: | Nachteil: | ||
- | Bei Speicher | + | |
+ | Nicht alle Speicherbereiche werden genutzt | ||
2) | 2) | ||
+ | < | ||
name = 15 Byte + 1 Byte Alignement | name = 15 Byte + 1 Byte Alignement | ||
vorname = 16 Byte | vorname = 16 Byte | ||
Zeile 139: | Zeile 164: | ||
note = 4 Byte | note = 4 Byte | ||
== 48 Byte | == 48 Byte | ||
+ | </ | ||
3) | 3) | ||
+ | < | ||
48 * 8 = 384 | 48 * 8 = 384 | ||
(96 * 1024)/384 = 256 | (96 * 1024)/384 = 256 | ||
+ | </ | ||
4) | 4) | ||
Little-Endian(LE) = Das niederwertigste byte steht an der ersten stelle | Little-Endian(LE) = Das niederwertigste byte steht an der ersten stelle | ||
+ | |||
Big-Endian(BE) = Das Höherwertigste byte steht an der ersten stelle | Big-Endian(BE) = Das Höherwertigste byte steht an der ersten stelle | ||
Zeile 153: | Zeile 182: | ||
LE: 0x10 32 54 76 | LE: 0x10 32 54 76 | ||
+ | |||
BE: 0x76 54 32 10 | BE: 0x76 54 32 10 | ||
====== Aufgabe 6: Parallelverarbeitung ====== | ====== Aufgabe 6: Parallelverarbeitung ====== | ||
1) | 1) | ||
+ | |||
+ | Das Hochsprachprogramm unterscheidet sich nicht dabei | ||
VLIW Parallele Alu Operationen ← Compiler | VLIW Parallele Alu Operationen ← Compiler | ||
+ | |||
Superskalar ist es Pipelining ← Prozessor | Superskalar ist es Pipelining ← Prozessor | ||
2) | 2) | ||
+ | < | ||
S = T1/Ts = nst/ | S = T1/Ts = nst/ | ||
+ | </ | ||
3) | 3) | ||
- | DatenHazards ( Sind daten abhängigkeiten) und SteuerHazards(BedingteSprünge) | + | DatenHazards ( Sind daten abhängigkeiten) |
+ | |||
+ | Durch Daten Abhängigkeiten ist ein Linear fortführen der pipe nicht möglich da auf andere befehle vorher gewartet werden muss | ||
+ | |||
+ | und | ||
+ | |||
+ | SteuerHazards(BedingteSprünge) | ||
+ | |||
+ | Pipeline kann nicht linear durchgezogen werden da nicht bekannt ist an welcher Position das Programm fortgeführt wird | ||
4) | 4) | ||
Regeln von Pollack | Regeln von Pollack | ||
+ | |||
Rechenleistungszuwachs ~ sqrt(Anstieg Komplexität) Doppelt so großer Einzelkern-Prozessor gemäß Regel von Pollack → Verdopplung der Logik, d.h. Komplexität, | Rechenleistungszuwachs ~ sqrt(Anstieg Komplexität) Doppelt so großer Einzelkern-Prozessor gemäß Regel von Pollack → Verdopplung der Logik, d.h. Komplexität, | ||
+ | |||
Doppelte Komplexität = 1.4x Leistungszuwachs | Doppelte Komplexität = 1.4x Leistungszuwachs | ||
Zeile 180: | Zeile 224: | ||
(Rechen-)Leistung nimmt invers quadratisch ab | (Rechen-)Leistung nimmt invers quadratisch ab | ||
sqrt(1/2) = 70% | sqrt(1/2) = 70% | ||
+ | |||
Somit mit halber Fläche 70% der Leistung das größeren Systems pro Kern | Somit mit halber Fläche 70% der Leistung das größeren Systems pro Kern | ||
Aber nur noch halber Leistungsverbrauch pro Kern | Aber nur noch halber Leistungsverbrauch pro Kern | ||
In der Summe mehr (Rechen-)Leistung als vorher | In der Summe mehr (Rechen-)Leistung als vorher | ||
+ | |||
2*70% = 140% | 2*70% = 140% | ||
+ | |||
Bei gleichem Leistungsverbrauch für 2 Kerne wie beim großen System | Bei gleichem Leistungsverbrauch für 2 Kerne wie beim großen System | ||
Schlussfolgerung: | Schlussfolgerung: | ||
Zeile 203: | Zeile 250: | ||
3) | 3) | ||
- | Nochmal anschauen | + | a) |
+ | < | ||
+ | index = 2^12 index | ||
+ | ByteAdr. = 2^4 byte/Block | ||
+ | |||
+ | 512 / 16 byte Pro block = 2^19 / 2^4 = 2^15 Blöcke im Cache | ||
+ | |||
+ | 2^15 / 2^12 index = 2^3 -> 8 - fach Assoziative Cache | ||
+ | </ | ||
+ | |||
+ | b) | ||
+ | |||
+ | < | ||
+ | 2^16 / 2^4 = 2^12 Blöcke | ||
+ | |||
+ | 2^12 / 2^12 = 1 -> Direkt abbildend | ||
+ | </ | ||
====== FORUM´s Diskusion dazu ====== | ====== FORUM´s Diskusion dazu ====== |