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 Überarbeitung | ||
pruefungen:bachelor:gra:loesungss13 [21.01.2015 17:40] – Alpha2000 | pruefungen:bachelor:gra:loesungss13 [22.09.2015 13:37] (aktuell) – Übersicht verbessert und Rechtschreibfehler ausgebessert. dom | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Aufgabe 1: Microprogrammierung | + | ====== Aufgabe 1: Mikroprogrammierung |
1) | 1) | ||
- | Sequencing Logic: Ermittelt die näste Befehls Adresse aus der Control Memory und schreibt das ergebniss in das Control Address Register | ||
- | Control Memory: Lädt die nächste | + | **Sequencing Logic**: Ermittelt |
- | Instruction Register: Adresse des MacoBefehls | + | **Control Memory**: Speicher der nächsten Mikroinstruktion. |
+ | |||
+ | **Instruction Register**: Adresse des Makrobefehls. | ||
2) | 2) | ||
- | Vertikale | + | Vertikale |
3) | 3) | ||
- | Bedingte und Unbedingte Sprünge(Siehe Leitung 16 / 17) | + | Bedingte und Unbedingte Sprünge (siehe Leitung 16 / 17) |
4) | 4) | ||
Zeile 31: | Zeile 32: | ||
} | } | ||
</ | </ | ||
- | MicroCode: | + | Mikroprogrammierung: |
< | < | ||
Speicher → D | Speicher → D | ||
Zeile 48: | Zeile 49: | ||
</ | </ | ||
- | ====== | + | ====== |
1) | 1) | ||
Zeile 56: | Zeile 57: | ||
2) | 2) | ||
- | Register Register | + | **Register Register**: Load, store Befehle |
- | Akku = Operationen nur zwischen Akku und Register/ | + | **Akku**: Operationen nur zwischen Akku und Register/ |
- | Stack = Rechen Operationen | + | **Stack**: Rechenoperationen |
3) | 3) | ||
Zeile 77: | Zeile 78: | ||
} | } | ||
</ | </ | ||
- | ====== | + | ====== |
1) | 1) | ||
- | sehr große Seiten: | + | sehr große Seiten: |
- | sehr kleinen Seiten: | + | sehr kleinen Seiten: |
2) | 2) | ||
- | Cache für Pages: | + | Cache für Pages: |
3) | 3) | ||
- | Unbekannt | + | **Seitengröße**: |
+ | |||
+ | **Adressbreite**: | ||
+ | |||
+ | **Größe der Einträge**: | ||
+ | < | ||
+ | 2^12 Byte / 2^3 Byte = 2^9 --> 9 Bit Tabellen Index. | ||
+ | [48 Bit - 12 Bit (Offset)] / 9 Bit = 4 --> 4-stufige Tabellenhierarchie | ||
+ | </ | ||
4) | 4) | ||
- | Zeichnen Paging | + | **--TODO--** |
====== Aufgabe 4: Peripherie ====== | ====== Aufgabe 4: Peripherie ====== | ||
Zeile 102: | Zeile 111: | ||
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 | + | **Programmed Input/ |
- | z.b. Stdin einlesen(z.b. Fgets) | + | |
- | DMA IO: DMA Controller wickelt den Datentransfer ohne CPU ab | + | Vorteil: Sobald |
- | z.b. Auslesen | + | |
+ | |||
+ | **Interrupt-driven Input/ | ||
+ | |||
+ | Vorteil: CPU Kann solange andere Sachen machen, I/O meldet, sobald Daten da sind. | ||
+ | |||
+ | |||
+ | **DMA**: | ||
+ | |||
+ | Vorteil: CPU wird nach dem Anstoßen nicht mehr benötigt, Transfer | ||
- | 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 123: | Zeile 142: | ||
1) | 1) | ||
- | Vorteil: | + | **Vorteil**: Datenwörter |
- | Datenworter | + | |
- | Datenworter liegen immer in zusammenhängenden Speicherbereich | + | |
- | Nachteil: | + | |
- | Bei Speicher evtl nicht mehr nutzbar wenn Datenworter nicht mehr rein passen | + | **Nachteil**: Nicht alle Speicherbereiche werden ausgenutzt, Speicherplatz wird dadurch verschwendet. |
2) | 2) | ||
- | name = 15 Byte + 1 Byte Alignement | + | < |
+ | name = 15 Byte + 1 Byte Alignment | ||
vorname = 16 Byte | vorname = 16 Byte | ||
- | versuch = 2 Byte + 2 Byte Alignement | + | versuch = 2 Byte + 2 Byte Alignment |
matnr. = 4 Byte | matnr. = 4 Byte | ||
- | geschlecht = 1 Byte + 3 Byte Alignement | + | geschlecht = 1 Byte + 3 Byte Alignment |
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 | + | **Little-Endian**: Das niederwertigste |
- | Big-Endian(BE) = Das Höherwertigste byte steht an der ersten stelle | + | |
+ | **Big-Endian**: Das höherwertigste Byte steht an erster Stelle. | ||
5) | 5) | ||
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+(n-1))t = lim → s | + | S = T1/Ts = n*s*t / [s+(n-1)]*t |
+ | lim S (n -> unendlich) = s | ||
+ | </ | ||
+ | **S**: SpeedUp | ||
+ | **T1**: Ausführungszeit ohne Pipeline | ||
+ | **Ts**: Ausführungszeit mit Pipeline | ||
+ | **n**: Anzahl der Instruktionen | ||
+ | **t(tau)**: Zykluszeit | ||
+ | **s**: Stufen | ||
3) | 3) | ||
- | DatenHazards | + | **1. Datenhazards**: |
+ | |||
+ | |||
+ | **2. Controlhazards | ||
4) | 4) | ||
- | Regeln | + | **Die Regel 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 | ||
- | Pollacks Regeln | + | Pollacks Regeln |
Statt einen großen Kern zwei kleinere, halb so große Kerne | Statt einen großen Kern zwei kleinere, halb so große Kerne | ||
(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 191: | Zeile 233: | ||
1) | 1) | ||
- | Räumliche Lokalität | + | **Räumliche Lokalität**: Nach Zugriffe erfolgt |
- | Zeitliche Lokalität | + | **Zeitliche Lokalität**: Nach Zugriffe |
2) | 2) | ||
+ | < | ||
+ | 2048 Byte / 64 Byte = 32 | ||
+ | </ | ||
+ | Frühestens beim 33. Zugriff findet eine Verdrängung statt (Compulsory Miss). | ||
- | 2048/64 = 32 zugriffe | + | 3) |
- | Beim 33 Zugriff Compulsory | + | a) |
- | 3) | + | Tag = 2^16 |
- | Nochmal anschauen | + | Index = 2^12 |
+ | ByteAdr. = 2^4 | ||
+ | < | ||
+ | Anzahl der Blöcke = Cachegröße / Blockgröße = 512 KiB / 2^4 (Byteadr.) = 2^19 / 2^4 = 2^15 | ||
+ | n = Cachegröße / Menge = 2^15 / 2^12 (Index) = 2^3 -> 8-fach assoziativer Cache | ||
+ | </ | ||
- | ====== FORUM´s Diskusion dazu ====== | + | b) |
- | Wenn ihr Fehler findet und diese ausbessert am besten noch ins Forum Posten was genau falsch war | + | |
- | [[https://fsi.informatik.uni-erlangen.de/forum/ | + | < |
+ | Anzahl der Blöcke: 2^16 Byte / 2^4 = 2^12 | ||
+ | |||
+ | 2^12 / 2^12 (Index)= 1 -> direktabbildend | ||
+ | </code> | ||
+ | ====== Forum ====== | ||
+ | Falls ihr Fehler findet oder Fragen habt, hier ist der Thread im Forum dazu [[https:// |