# Rechnerarchitektur: Übung 6 ## Aufgabe 1 ### a) - Zeitlokalität: Annahme, dass auf ein Objekt nach dem Zugriff bald ein erneuter Zugriff erfolgt - Platzlokalität: Annahme, dass auf ein Objekt in der Nähe des zugegriffenen Objektes ein Zugriff erfolgen wird. ### b) - Der Cache wird benötigt, um das Lokalitätsprinzip richtig ausnutzen zu können, da kurzfristig zugegriffene Objekte und deren Nachbarn in den Cache kopiert werden. Im Vergleich zum Festplattenspeicher ist der Cache wesentlich schneller, was das System insgesamt beschleunigt - Speicherhierarchie: Bevorzugt werden die Daten aus den schnelleren, aber kleineren Caches in den Arbeitsspeicher geladen. Sind sie dort nicht anzutreffen, wird versucht sie aus dem Hauptspeicher (DRAM) zu lesen; Funktioniert auch das nicht, so müssen sie in einem sehr langsamen Prozess von der Festplatte geladen werden. - Beim Auftreten von Änderungen gibt es 2 Möglichkeiten: - write-through: Werden Daten modifiziert, die im Cache gespeichert sind, so werden diese auch direkt in der darunterliegenden Speicherebene geändert. - write-back: Daten werden zunächst nur im Cache geändert und als dirty markiert. Modifiziert werden sie bei der Verdrängung aus dem Cache. ### c) - Hit: Datum, auf das zugegriffen werden soll, ist im Cache enthalten. - Miss: Datum, auf das zugegriffen werden soll, ist nicht im Cache enthalten. $\text{Hit ratio} = \frac{\text{Hits}}{\text{Zugriffe}}$ $\text{Miss ratio} = \frac{\text{Misses}}{\text{Zugriffe}}$ Verhältnis: $\text{Miss ratio} = 1 - \text{Hit Ratio}$ ### d) Eine Exception entsteht im Prozessor, ein Interrupt außerhalb (z. B. von einem I/O Controler). Beides sind Ausnahmezustände, die den normalen Arbeitsablauf unterbrechen. ## Aufgabe 2 ### a) Sowohl static multiple-issue als auch dynamic multiple-issue Prozessoren behandeln Parallelität zwischen unterschiedlichen Threads. Bei Static multiple issue werden gleichzeitig auszuführende Befehle schon beim Compilen gruppiert und Hazards erkannt und umgangen. Bei Dynamic multiple issue werden die auszuführenden Befehle von der CPU ausgewählt und Hazards mithilfe von hochkomplexen Techniken von der CPU umgangen. ### b) Register Renaming ist eine Technik, um von physikalischen zu logischen Registern zu abstrahieren. Um Interferenzen bei der Parallelisierung zu vermeiden, werden doppelt verwendete Register umbenannt. ### c) Loop unrolling: Schleifenkörper replizieren, um Sprünge zu vermeiden/vermindern und so höhere Parallelität zu erlauben. ## Aufgabe 3 ### a) Penalty pro Befehl I-Cache $= 6 \% * 10 \text{ Zyklen} = 0.6 \text{ Zyklen}$ Penalty pro Befehl D-Cache $= 10 \% * 10 \text{ Zyklen} * 20\% = 0.2 \text{ Zyklen}$ Tatsächliche CPI: $3 + 0.6 + 0.2 = 3.8$ Ideale CPU ist $3.8 / 3 = 1.27$ schneller. ### b) $\text{Anzahl Zyklen} = 2 \text{ Zyklen} + 20 \% * 10 \text{ Zyklen} = 4 \text{ Zyklen}$ AMAT = 4 * 3 ns = 12 ns ## Aufgabe 4 direkt abbildender Cache: | Block-Adresse | Cache-Index | Hit/Miss | 0 | 1 | 2 | 3 | | ------------- | ----------- | -------- | ------- | ------- | ------- | ------- | | 2 | 2 | Miss | | | Mem[ 2] | | | 5 | 1 | Miss | | Mem[ 5] | Mem[ 2] | | | 8 | 0 | Miss | Mem[ 8] | Mem[ 5] | Mem[ 2] | | | 0 | 0 | Miss | Mem[ 0] | Mem[ 5] | Mem[ 2] | | | 10 | 2 | Miss | Mem[ 0] | Mem[ 5] | Mem[10] | | | 14 | 2 | Miss | Mem[ 0] | Mem[ 5] | Mem[14] | | | 0 | 0 | Hit | Mem[ 0] | Mem[ 5] | Mem[14] | | | 15 | 3 | Miss | Mem[ 0] | Mem[ 5] | Mem[14] | Mem[15] | | 3 | 3 | Miss | Mem[ 0] | Mem[ 5] | Mem[14] | Mem[ 3] | 2-Wege assoziativer Cache: | Block-Adresse | Cache-Index | Hit/Miss | Set 0 | - | Set 1 | - | | ------------- | ----------- | -------- | ------- | ------- | ------ | ------- | | 2 | 0 | Miss | Mem[2] | | | | | 5 | 1 | Miss | Mem[2] | | Mem[5] | | | 8 | 0 | Miss | Mem[2] | Mem[8] | Mem[5] | | | 0 | 0 | Miss | Mem[0] | Mem[8] | Mem[5] | | | 10 | 0 | Miss | Mem[0] | Mem[10] | Mem[5] | | | 14 | 0 | Miss | Mem[14] | Mem[10] | Mem[5] | | | 0 | 0 | Miss | Mem[14] | Mem[0] | Mem[5] | | | 15 | 1 | Miss | Mem[14] | Mem[0] | Mem[5] | Mem[15] | | 3 | 1 | Miss | Mem[14] | Mem[0] | Mem[3] | Mem[15] | Vollassoziativer Cache: | Block-Adresse | Hit/Miss | - | - | - | - | | ------------- | -------- | ------- | ------- | ------- | ------ | | 2 | Miss | Mem[2] | | | | | 5 | Miss | Mem[2] | Mem[5] | | | | 8 | Miss | Mem[2] | Mem[5] | Mem[8] | | | 0 | Miss | Mem[2] | Mem[5] | Mem[8] | Mem[0] | | 10 | Miss | Mem[10] | Mem[5] | Mem[8] | Mem[0] | | 14 | Miss | Mem[10] | Mem[14] | Mem[8] | Mem[0] | | 0 | Hit | Mem[10] | Mem[14] | Mem[8] | Mem[0] | | 15 | Miss | Mem[10] | Mem[14] | Mem[15] | Mem[0] | | 3 | Miss | Mem[3] | Mem[14] | Mem[15] | Mem[0] | ## Aufgabe 5 ### a) Codewort: | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | # | | | | | | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | # | | | | # | | # | # | | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 20 = 10100 17 = 10001 15 = 01111 10 = 01010 09 = 01001 07 = 00111 06 = 00110 05 = 00101 xor= 01101 (Paritätbits) ### b) | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | # | | | | | | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | | | # | | | | # | | # | # | | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | $\rightarrow$ Paritätsbits: 11000 $\rightarrow$ Berechnung: 21 = 10101 18 = 10010 17 = 10001 12 = 01100 11 = 01011 10 = 01010 09 = 01001 05 = 00101 03 = 00011 pb = 11000 xor= 01100 = 12 $\rightarrow$ At Index 12 bitflip Korrekte Zahl mit korrigiertem Bit-Flip: 1001100001110011
{"metaMigratedAt":"2023-06-17T05:35:59.882Z","metaMigratedFrom":"Content","title":"Rechnerarchitektur: Übung 6","breaks":true,"contributors":"[{\"id\":null,\"add\":6804,\"del\":1117},{\"id\":\"032bd3bc-2efd-4b45-b949-17a796ddc11e\",\"add\":1372,\"del\":4}]"}
Expand menu