# Ćwiczenia 7, grupa śr. 14-16, 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 |
| ----------------------:| -----| --- | --- | --- | --- | --- | --- | --- | --- |
Krzysztof Chorzempa | X | X | | | | | | | |
Maciej Ciepiela | X | ==X== | X | X | | X | | | |
Szymon Fica | X | X | X | | | X | | | |
Agnieszka Grala | X | X | X | X | | ==X== | | | |
Karolina Jędraszek | ==X== | X | X | X | | X | | | |
Katarzyna Jodłowska | X | X | X | | | X | | | |
Dominik Kiełbowicz | | | | | | | | | |
Michał Kolasa | | | | | | | | | |
Rafał Krysa | X | X | X | X | | | X | X | X |
Miłosz Krzysiek | X | X | X | | | X | | | |
Łukasz Kulczycki | | | | | | | | | |
Leon Lepkowski | X | X | X | X | | X | | | |
Hanna Makowska | X | ==X== | X | X | X | | | | |
Jan Marek | X | X | X | | | X | | | |
Cezary Miłek | X | X | X | | | X | | | |
Anna Pierzchała | X | X | X | X | | X | | | |
Alan Pietrasz | X | X | X | X | ==X== | | | | |
Kacper Ponikowski | X | X | X | X | | X | | | |
Dominik Walecko | X | X | X | X | | X | | | |
Michał Włodarczak | X | X | X | X | X | | | | |
:::
:::info
**Uwaga:** Po rozwiązaniu zadania należy zmienić kolor nagłówka na zielony.
:::
## Zadanie 1
:::success
Autor: Karolina Jędraszek
:::
*Przedstawiony poniżej fragment kodu wykonujemy na procesorze potokowym bez jednostki wykrywania hazardów.
Jakie będą końcowe wartości rejestrów s2 , s3 i s4, a jakie powinny być, gdyby procesor wykonał program poprawnie?
Uzupełnij kod o instrukcje nop by usunąć hazardy danych
i pokaż, że program wykona się teraz poprawnie. Omawiając wykonanie kodu posługuj się diagramami wykonania.*

**Końcowe wartości:**
Oczekiwane:
s0 = 27
s2 = 27 + 22 = 49
s3 = 27 + 15 = 42
s4 = 27 + 27 = 54
Faktyczne:
s0 = 27
s2 = 33
s3 = 26
s4 = 54

## Zadanie 2
:::success
Autor: Maciej Ciepiela





:::
## Zadanie 3
:::success
Autor: Cezary Miłek
:::

- Fioletowe prostkąty wykonują się niepotrzebnie (bo po $if$ przejdziemy dalej, nie ważne czy warunek zajdzie czy nie)

## Zadanie 4
:::success
Autor: Kacper Ponikowski
:::


## Zadanie 5
:::success
Autor: Alan Pietrasz
:::




## Zadanie 6
:::success
Autor: Agnieszka Grala
:::


Mamy wczesne wykrywanie skoków, czyli kara w przypadku błędnego skoku wynosi 1.
**a)**
Operacje skoku: 25%
Błędne predykcje: 55%
Wzrost CPI: 0,25 * 0,55 * 1 = 0,1375
**b)**
Operacje skoku: 25%
Błędne predykcje: 45%
Wzrost CPI: 0,25 * 0,45 * 1 = 0,1125
**c)**
Operacje skoku: 25%
Błędne predykcje: 15%
Wzrost CPI: 0,25 * 0,15 * 1 = 0,0375
**d)**
Operacje skoku: 0,5 * 25% = 12,5%
Przyrost CPI mamy o połowę mniejszy.
## Zadanie 7
:::success
Autor: Rafał Krysa
:::


## Zadanie 8
:::success
Autor: Rafał Krysa
:::
powyżej
## Zadanie 9
:::success
Autor: Rafał Krysa
:::
Jako, że długość cyklu i tak musi być długością najdłuższej fazy, nie ma zmian w długości cyklu.
Jako, że aby osiągnąć to samo, co wcześniej, potrzebne będzie więcej instrukcji (dostarczonych przez kompilator do procesora), de facto zużyjemy na niektóre dostępy do pamięci dwie instrukcje, choć nie następuje niekorzystna zmiana w CPI względem dostarczonych przez kompilator instrukcji. Następuje korzystna redukcja w CPI, gdyż będziemy mogli częściej wykorzystywać forwarding i wyeliminować stalling dzięki wcześniejszemu wykonaniu dostępu do pamięci.