---
# System prepended metadata

title: SYK 7

---

# SYK 7

## Zadanie 1
`Hazard sterowania` występuje wtedy, gdy skok został błędnie przewidziany.
`Hazard strukturalny` występuje wtedy, gdy 2 instrukcje chcą skorzystać z tego samego układu jednocześnie.

a) Nie może wystąpić żaden hazard
**Hazard sterowania** nie wystąpi, bo najpierw zakończy się instrukcja obliczająca warunek skoku, a dopiero potem zacznie się kolejna instrukcja
**Hazard strukturalny** nie może wystąpić, ponieważ w każdym cyklu wykonywana jest tylko 1 faza jednej instrukcji
**Hazad danych** nie wystąpi, bo instrukcje wykonywane są zgodnie z kolejnością, nic nie dzieje się równolegle

b) Może wystąpić
**hazard sterowania** przy skokach
**hazard strukturalny** jeżeli jakieś 2 fazy współdzielą jakiś układ
**hazard danych RAW**
$t0=s1+1$
$t1=t0*2$ (t0 jest odczytywane po nadpisaniu)
**hazard danych WAR**
Nie wystąpi ponieważ każda instrukcja ma tyle samo faz i faza
WB (writeback występuje na samym końcu, więc odczyt zawsze nastąpi wcześniej niż nadpisanie)
**hazard danych WAW**
Nie wystąpi ponieważ instrukcje są wykonywane po kolei każda ma tyle samo faz i fazy WB będą następować w odpowiedniej kolejności

c) Może wystąpić
**hazard sterowania** przy skokach
**hazard strukturalny** jeżeli jakieś 2 fazy współdzielą jakiś układ
**hazard danych WAR**
Nie wystąpi ponieważ odczyt nastąpi szybciej niż zapis
**hazard danych WAW**
$instrukcja\ 1a$
$instrukcja\ 1b$

$t0=s1/s2$
$t0=s1+s2$ (te dwie instrukcje są wykonywane równolegle)

$instrukcja\ 3a$
$instrukcja\ 3b$
![](https://i.imgur.com/VZH1DJ3.png)


[Wikipedia Hazardy](https://en.wikipedia.org/wiki/Hazard_(computer_architecture))

## Zadanie 2
![](https://i.imgur.com/o07E0zk.png)

W tablicy scoreboard przechowujemy informacje o pobranych instrukcjach. 
Po pobraniu instrukcji następuje sprawdzenie, czy w potoku znajduje się instrukcja odczytująca docelowy rejestr. Jeśli tak następuje wstrzymanie potoku, a instrukcja oczekuje na wykonanie w buforze. W kolejnym cyklu następuje ponowne sprawdzenie powyższej sytuacji.
Następnie sprawdzane są rejestry używane jako argumenty w instrukcji. Jeśli któryś z nich jest zapisywany przez instrukcję w potoku, to również następuje wstrzymanie potoku.
Powyższe kroki pozwalają uniknąć hazardów RAW i WAR. Po ich pomyślnym wykonaniu następuje wykonanie instrukcji.
Obliczony wynik może zostać zapisany do docelowego rejestru dopiero wtedy, gdy wszystkie wcześniejsze instrukcje zapisujące do tego samego rejestru zostaną ukończone. W ten sposób unikamy hazardu WAW.
## Zadanie 3

Przetwarzanie potokowe przy uzyciu reorder buffera:

Pomysł polega na buforowaniu wyników działania instrukcji w kolejce. W register file trzymamy dodatkowy bit informujący o tym, czy dana wartość jest aktualna, oraz adres w ROB. Jeśli okaże się, że nie jest ona aktualna, patrzymy pod odpowiedni adres w ROB i jeśli tam dana wartość została już zapisana, to możemy z niej skorzystać. Jeśli w głowie kolejki znajdują się już poprawnie zapisane wartości, to wysyłamy je do RF i kolejka ROB przesuwa się do przodu. 
![](https://i.imgur.com/CtcRa6G.png)

Hazardy WAW i WAR nie występują
Hazard RAW nadal występuje, wtedy algorytm czeka (?) aż odpowiednia wartość zostanie zapisana do ROB

Wydajność reorder buffera jest lepsza niż scoreboardingu
przyspieszenie wynika z tego że wartość może zostać odczytana z ROB, a w scoreboardingu trzeba by uzyć stallingu

## Zadanie 4

### Podpunkt a)
| t             |   |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|
| ------------- | - |-|-|-|-|-|-|-|-|-|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |
|$r3 = r1 * r2$ |   |F|D|1|2|3|4|5|6|W|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r5 = r4 + r3$ |   | |F|.|.|.|.|.|.|D|1 |2 |3 |4 |5 |6 |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r6 = r4 + r1$ |   | | | | | | | | |F|D |1 |2 |3 |4 |5 |6 |W |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r7 = r8 * r9$ |   | | | | | | | | | |F |D |1 |2 |3 |4 |5 |6 |W |  |  |  |  |  |  |  |  |  |  |  |  |
|$r4 = r3 + r7$ |   | | | | | | | | | |  |F |. |. |. |. |. |. |D |1 |2 |3 |4 |5 |6 |W |  |  |  |  |  |
|$r10 = r5 * r6$|   | | | | | | | | | |  |  |  |  |  |  |  |  |F |D |1 |2 |3 |4 |5 |6 |W |  |  |  |  |

26 cykli

### Podpunkt b)
| t             |   |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|
| ------------- | - |-|-|-|-|-|-|-|-|-|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |
|$r3 = r1 * r2$ |   |F|D|1|2|3|4|5|6|W|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r5 = r4 + r3$ |   | |F|.|.|.|.|.|.|D|1 |2 |3 |4 |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r6 = r4 + r1$ |   | | | | | | | | |F|D |1 |2 |3 |4 |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r7 = r8 * r9$ |   | | | | | | | | | |F |D |1 |2 |3 |4 |5 |6 |W |  |  |  |  |  |  |  |  |  |  |  |  |
|$r4 = r3 + r7$ |   | | | | | | | | | |  |F |. |. |. |. |. |. |D |1 |2 |3 |4 |W |  |  |  |  |  |  |  |
|$r10 = r5 * r6$|   | | | | | | | | | |  |  |  |  |  |  |  |  |F |D |1 |2 |3 |4 |5 |6 |W |  |  |  |  |

26 cykli

### Podpunkt c)
| t             |   |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|
| ------------- | - |-|-|-|-|-|-|-|-|-|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |
|$r3 = r1 * r2$ |   |F|D|1|2|3|4|5|6|W|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r5 = r4 + r3$ |   | |F|D| | | | | |1|2 |3 |==4== |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r6 = r4 + r1$ |   | | |F|D|1|2|3|==4==| |  |  |  |  |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r7 = r8 * r9$ |   | | | |F|D|1|2|3|4|5 |==6== |  |  |  |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r4 = r3 + r7$ |   | | | | |F|D| | | |  |  |  |==1== |2 |3 |4 |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r10 = r5 * r6$|   | | | | | |F|D| | |  |  |  |==1== |2 |3 |4 |5 |6 |W |  |  |  |  |  |  |  |  |  |  |  |

19 cykli
Forwarding oznaczono symbolicznie przez "==...=="

Hazardy strukturalne mogą wystąpić w przypadku gdy fazy "W" oraz "D" współdzielą pewien obszar procesora. Taki hazard byłby widoczny w a) (cykl 9 i 18), b) (cykl 9 i 18), w c) by nie wystąpił.



## Zadanie 5

### Podpunkt a)
Wykonujemy analogicznie jak w zadaniu 4.

| t              |   |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|
| -------------  | - |-|-|-|-|-|-|-|-|-|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |
|$r3 = r1 * r2$  |   |F|D|1|2|3|4|5|6|W|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r5 = r4 + r3$  |   | |F|.|.|.|.|.|.|D|1 |2 |3 |4 |5 |6 |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r7 = r2 + r6$  |   | | | | | | | | |F|D |1 |2 |3 |4 |5 |6 |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r10 = r8 + r9$ |   | | | | | | | | | |F |D |1 |2 |3 |4 |5 |6 |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r11 = r7 * r10$|   | | | | | | | | | |  |F |  |  |  |  |  |  |D |1 |2 |3 |4 |5 |6 |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r5 = r5 * r11$ |   | | | | | | | | | |  |  |  |  |  |  |  |  |F |  |  |  |  |  |  |D |1 |2 |3 |4 |5 |6 |W |  |  |  |  |  |  |  |  |

32 cykle

### Podpunkt b)

| t              |   |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|
| -------------  | - |-|-|-|-|-|-|-|-|-|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |
|$r3 = r1 * r2$  |   |F|D|1|2|3|4|5|6|W|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r5 = r4 + r3$  |   | |F| | | | | | |D|1 |2 |3 |4 |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r7 = r2 + r6$  |   | | | | | | | | |F|D |  |  |  |1 |2 |3 |4 |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r10 = r8 + r9$ |   | | | | | | | | | |F |D |  |  |  |  |  |  |1 |2 |3 |4 |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r11 = r7 * r10$|   | | | | | | | | | |  |F |  |  |  |  |  |  |  |  |  |  |D |1 |2 |3 |4 |5 |6 |W |  |  |  |  |  |  |  |  |  |  |  |
|$r5 = r5 * r11$ |   | | | | | | | | | |  |  |  |  |  |  |  |  |  |  |  |  |F |  |  |  |  |  |  |D |1 |2 |3 |4 |5 |6 |W |  |  |  |  |

36 cykli


### Podpunkt c)

| t              |   |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|
| -------------  | - |-|-|-|-|-|-|-|-|-|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |
|$r3 = r1 * r2$  |   |F|D|1|2|3|4|5|6|W|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r5 = r4 + r3$  |   | |F|D| | | | | |1|2 |3 |4 |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r7 = r2 + r6$  |   | | |F|D|1|2|3|4| |  |  |  |  |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r10 = r8 + r9$ |   | | | |F|D| | | | |  |  |  |1 |2 |3 |4 |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r11 = r7 * r10$|   | | | | |F|D| | | |  |  |  |  |  |  |  |1 |2 |3 |4 |5 |6 |W |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r5 = r5 * r11$ |   | | | | | |F|D| | |  |  |  |  |  |  |  |  |  |  |  |  |  |1 |2 |3 |4 |5 |6 |W |  |  |  |  |  |  |  |  |  |  |  |

29 cykli


Hazardy strukturalne mogą wystąpić w przypadku gdy fazy "W" oraz "D" współdzielą pewien obszar procesora. Taki hazard byłby widoczny w a) (cykle 9, 18 i 25), b) (cykl 9, 22 i 29), w c) by nie wystąpił.


---
---
---
## Inne

| t             |   |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|
| ------------- | - |-|-|-|-|-|-|-|-|-|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |- |- |- | -|- |
|$r3 = r1 * r2$ |   | | | | | | | | | |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r5 = r4 + r3$ |   | | | | | | | | | |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r6 = r4 + r1$ |   | | | | | | | | | |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r7 = r8 * r9$ |   | | | | | | | | | |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r4 = r3 + r7$ |   | | | | | | | | | |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
|$r10 = r5 * r6$|   | | | | | | | | | |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |