---
# System prepended metadata

title: 'Ćwiczenia 7, grupa śr. 12-14, 10 kwietnia 2024'
tags: [pwit, ćwiczenia, SYK24]

---

> # Ćwiczenia 7, grupa śr. 12-14, 10 kwietnia 2024

###### tags: `SYK24` `ćwiczenia` `pwit`

## Deklaracje

Gotowość rozwiązania zadania należy wyrazić poprzez postawienie X w odpowiedniej kolumnie! Jeśli pożądasz zreferować dane zadanie (co najwyżej jedno!) w trakcie dyskusji oznacz je znakiem ==X== na żółtym tle.

**UWAGA: Tabelkę wolno edytować tylko wtedy, gdy jest na zielonym tle!**


:::danger
|                        | 1    | 2   | 3   | 4   | 5   | 6   | 7   | 8   | 9   |
| ----------------------:| -----| --- | --- | --- | --- | --- | --- | --- | --- | 
Mikołaj Balwicki         |   X   |  X   |  X   |  X   |  X   |  X   |     |     |     |  
Małgorzata Galińska      |   X   |   ==X==  |  X   |   X  |     |   X  |     |     |     |
Maria Hreniak            |   X  |   X | ==X== |  X  |  X  |  X  |     |     |     |
Jakub Jankowski          |   X   |  X   |  X   |     |     |  X   |     |     |     |
Mikołaj Kalitka          |   X   |  X   |  X   |  X   |     |  X   |     |     |     |
Julia Konefał            |   X   |  X   |   X  |     |     |  ==X==   |     |     |     |
Julia Kulczycka          |  ==X==    |  X   |  X   |  X   |  X   |   X  |     |     |     |
Cecylia Łyjak            |      |     |     |     |     |     |     |     |     |
Adam Majchrowski         |   X   |  X   |  X   |  ==X==   |  X   |  X   |     |     |     |
Piotr Mańkowski          |      |     |     |     |     |     |     |     |     |
Piotr Salamon            |   X   | X    |   X   |     |     |     |     |     |     |
Maciej Szałasz           |  X  |  X  |  X  |  X  |  X  |  X  |     |     |     |
:::


:::info
**Uwaga:** Po rozwiązaniu zadania należy zmienić kolor nagłówka na zielony.
:::



## Zadanie 1
:::success
Autor:Julia Kulczycka	
:::
**Hazard** to sytuacja, w której kolejne operacje odczytuje wartość zmiennej zanim poprzednia operacja przypisze jej nową wartość.

![image](https://hackmd.io/_uploads/SyDDojQgA.png)

### Oczekiwane wartości:
```
s0 = 22 + 5 = 27
s2 = 27 + 22 = 49
s3 = 27 + 15 = 42
s4 = 27 + 27 = 54
```

### Rzeczywiste wartości
Popatrzmy na diagram:
![image](https://hackmd.io/_uploads/HJSuRoXgC.png)
Zauważmy, że "nowa" wartość s0=27 (której wyliczanie zaczęło się w pierwszej operacji), zostanie zapisana dopiero w pierwszej połowie 5 cyklu. Dlatego do końca 4 będziemy mieć s0=11.
```
s0 = 22 + 5 = 27
s2 = 11 + 22 = 33
s3 = 11 + 15 = 26
s4 = 27 + 27 = 54
```

### Rozwiązanie z NOP
Nowej wartości s0 pierwszy raz potrzebowaliśmy w drugiej połowie 3 cyklu. Zatem opóźnijmy kolejne operacje o 2 cykle, żeby użyć jej dopiero, gdy będzie "gotowa":
```
s0 = s1 + 5
NOP 
NOP
s2 = s0 + s1
s3 = s0 + 15
s4 = s0 + s0
```
![image](https://hackmd.io/_uploads/SJy3MnQlC.png)


## Zadanie 2
:::success
Autor:	Małgorzata Galińska	(punkty a i b), Jakub Jankowski (punkty c i d)
:::
![image](https://hackmd.io/_uploads/H1rlPeEeC.png)


![image](https://hackmd.io/_uploads/Syp9dk4xA.png)

![image](https://hackmd.io/_uploads/Hy6f9k4x0.png)


## Zadanie 3
:::success
Autor:	Maria Hreniak
:::


![image](https://hackmd.io/_uploads/HyRTOyElA.png)
forward -> turkusowe strzałki
stall -> żółte 

![image](https://hackmd.io/_uploads/BkGCFyNl0.png)





## Zadanie 4
:::success
Autor:	Adam Majchrowski
a)
![image](https://hackmd.io/_uploads/HJycuyNgC.png)
b)
![image](https://hackmd.io/_uploads/Skns_kNx0.png)

:::

## Zadanie 5
:::success
Autor:	Mikołaj Balwicki	
:::
![image](https://hackmd.io/_uploads/rJzN9kVlA.png)
![image](https://hackmd.io/_uploads/r1Bg5JExC.png)
![image](https://hackmd.io/_uploads/BkBtUeElR.png)



## Zadanie 6
:::success
Autor:	Julia Konefał
![Screenshot from 2024-04-10 12-24-13](https://hackmd.io/_uploads/Sk5yYJElR.png)

Jaki jest przyrost wartości CPI wywołany błędnie
przewidzianymi skokami dla ...

$25$% instrukcji to if
a) 
always taken
błędne predykcje $55$%
CPI : $0,25 * 0,55 * 1 = 0,1375$
b) 
always not taken
błędne predykcje $45$%
CPI : $0,25 * 0,45 * 1 = 0,1125$
c) 
predykator 2-bit
błędne predykcje $15$%
CPI : $0,25 * 0,15 * 1 = 0,0375$
d) 
zastąpienie arytmetycznymi działaniami operacji skoku 
$12,5$% instrukcji to if => przyspieszenie będzie zawsze o połowę

always taken
błędne predykcje $55$%
CPI : $0,125 * 0,55 * 1 = 0,06875$

always not taken
błędne predykcje $45$%
CPI : $0,125 * 0,45 * 1 = 0,05625$
     
predykator 2-bit    
błędne predykcje $15$%
CPI : $0,125 * 0,15 * 1 = 0,01875$
:::

## Zadanie 7
:::success
Autor:	Jakub Jankowski	
![image](https://hackmd.io/_uploads/S1duf7TlR.png)
![image](https://hackmd.io/_uploads/ryGjMQ6gC.png)

:::

## Zadanie 8
:::success
Autor:	Mikołaj Balwicki
:::
![image](https://hackmd.io/_uploads/H1AyE7TgR.png)
Każda instrukcja musi zostać pobrana z rejestru instrukcji. W związku z tym każda (poza dwoma ostatnimi) instrukcja odczytu lub zapisu do pamięci poskutkuje opóźnieniem potoku. Może ono jednak wystąpić w tym samym czasie co opóźnienie inną instrukcją, wtedy jest negowane.

Zatem OP = 36% * (100% - P)

![image](https://hackmd.io/_uploads/rJ6YpQpeR.png)
P = *wiersz 3 to skok* 12% + *wiersz 3 to binop albo load* (25% + 52% )(12%+(25% * 52%) + *wiersz 3 to write* 11% * (12% * 25% + 11% * 52%)

P = 12% + 77% *(12% + 13%) + 11% *(3% + 63%)

P = 12% + 19,25% + 7,26% = 38,51%

OP = 36% * (100% - 38,51%) = 36% * 61,49% = ~22,14% = ~0.22/instrukcję

## Zadanie 9
:::success
Autor:	Jakub Jankowski	
![image](https://hackmd.io/_uploads/SyYtzX6lC.png)

:::


