---
# System prepended metadata

title: 'Ćwiczenia 7, grupa cz. 12-14, 21. kwietnia 2022'
tags: [SYK21, pwit, ćwiczenia]

---

# Ćwiczenia 7, grupa cz. 12-14, 21. kwietnia 2022

###### tags: `SYK21` `ć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   | 
| ----------------------:| ----- | --- | --- | --- | --- | --- | 
 Daniel Boguszewski      |   x    |  x   |  x   |     |     |     | 
 Adam Ciężkowski         |       |     |     |     |     |     | 
 Jacek Długopolski       |  x     | x    |  x   |  x   |  x   |     | 
 Jakub Fila              |   X   |  X  |  X  |     |     |     | 
 Krzysztof Grynkiewicz   |       |     |     |     |     |     | 
 Michał Hetnar           |   x   |     |     |     |     |     | 
 Hubert Jabłoński        |   x   |  x  |     |     |     |     | 
 Antoni Kamiński         |       |     |     |     |     |     | 
 Paweł Karaś | X | X | X | X |  |     | 
 Emil Kisielewicz        |   x   |  x  |     |     |     |     | 
 Kacper Komenda          |   X    |  X |  X  |     |     |     | 
 Filip Komorowski        |   x   |   x  |   x  |  x   |  x   |     | 
 Piotr Piesiak           |   x    |  ==x==   |  x   |  x   |  x   |     | 
 Artur Krzyżyński        |   x   |  x  |  x  |  x  |  x  |     | 
 Patryk Mazur            |   X   |  X  |  X  |     |     |     | 
 Szymon Mleczko          |       |   X  |  X   |   X  |  X   |     | 
 Michał Mróz             |==x==  |  x  |  x  |  x  |  x  |     | 
 Dominik Olejarz         |  x     |  x   |  x   |   x  |   x  |     | 
 Magdalena Słonińska     |       |     |     |     |     |     | 
 Oleś Kulczewicz         |   X   |  X  |     |     |     |     | 
 Adam Szeruda            |   X   |  X  |  X  |  X  |  X  |     | 
 Kamil Tasarz            |       |  X  |  X  |  X  |     |     | 
 Michał Zieliński        | ==X== |  X  |  X  |   X |  X  |     | 
:::



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



## Zadanie 1
:::success
Autor: Michał Mróz

RAW - Read after write występuje gdy wczytujemy daną po jej zapisaniu (może się zdażyć że nie zdąży się zapisać)

WAR - Write after read występuje gdy zapisujemy daną po jej wczytaniu (może się zdażyć że zapiszemy zmienną zanim się odczyta w poprzeniej linijce)

WAW - write after write występuje gdy zapisujemy do tego samego miejsca w pamięci podczas 1 cyklu 2 różne wartości (również występuje gdy wykonujemy poza kolejnością)

Hazard sterowania - występuje gdy podejmujemy złą decyzje w ifie i następnie trzeba porzucić obliczające się rzeczy

Hazard strukturalny - występuje gdy kilka procesów chce korzystać z tego samego zasobu

a) W procesorze jednocyklowym nie występują żadne hazardy danych 
b) w procesorze potokowym występuje jedynie RAW 
c) w procesorze potokowym z wieloma mogą wystąpić wszystkie hazardy danych

a) każda komenda wykonuje się dopiero po zakończeniu poprzeniej więc nie istnieje żadne ryzyko
b) występuje jedynie RAW. Reszta nie może się zdażyć ponieważ każda linijka kodu wykonuej się po poprzeniej co eliminuje nam WAR i WAW
c) Występuje WAW, WAR i RAW
![](https://i.imgur.com/NPmhfjd.png)
![](https://i.imgur.com/60JpQ7x.png)

a) nie występuje hazard sterowania
b) występuje hazard sterowania
c) występuje hazard sterowania

a) nie występuje hazard strukturalny
b) nie występuje hazard strukturalny
c) występuje hazard strukturalny (gdy mamy jeden alu dodawania a 2 rzeczy chcące się dodać)

:::

## Zadanie 2
:::success
Autor: Piotr Piesiak
:::
![](https://i.imgur.com/sCtDMnQ.png)

WAW - scoreboard eliminuje podczas fazy DECODE tę zależność, gdyż nie pozwala wykonać się (ani wpisać do scoreboardu) instrukcji, która zapisuje rejestr, który jest aktualnie nadpisywany w potoku. Zatem nie zapiszemy rejestrów w odwrotnej kolejnośći (eliminacja WAW).

RAW - gdy instrukcja zostanie wpisana do scoreboardu następuje sprawdzenie, czy zmienne używane w instrukcji nie są nadpisywane w działających instrukcjach. Jeśli tak, to potok zostaje wstrzymany. Zatem nie odczytamy starej wartośći reejstru (eliminacja RAW).

WAR - po zakończeniu fazy EXECUTE sprawdzamy czy dany rejestr (np x) nie jest używany we wcześniejszych instrukcjach. Jeśli jakaś wcześniejsza instrukcja z niego korzysta, to wstrzymujemy potok. ELiminujemy w ten sposób hazard WAR (nie nadpiszemy rejestru przed jego odczytem).

## Zadanie 3
:::success
Autor: Adam Szeruda
:::

> Przypomnij algorytm przetwarzania potokowego przy użyciu reorder buffera. W jaki sposób ten algorytm radzi sobie z hazardami `RAW`, `WAR` i `WAW`? Porównaj jego wydajność z algorytmem używającym scoreboardu dla procesora o takich samych parametrach (takie same fazy przetwarzania, liczba i budowa jednostek wykonawczych).

Różna liczba cykli na różne instrukcje, zapisy w złej kolejności (hazardy WAR, WAW)

![](https://i.imgur.com/K5ZlYR3.png)

Sztuczne wyrównanie liczby cylki (wyeliminowanie WAR, WAW, hazard RAW)

![](https://i.imgur.com/V6Wo8vV.png)

Reorder buffer (skrócenie czasu oczekiwania przy hazardzie RAW)

![](https://i.imgur.com/kwlAeEd.png)


Plik rejestrów:

```
| (rejestr) | (aktualny?) | (wartość) | (wiersz w reorder buffer) |
```

Reorder buffer:
```
| (gotowy?) | (rejestr) | (dane do zapisu...) |
```

Wykonanie instrukcji:
    - zapisz dane z najstarszego wiersza w reorder buffer (jeżeli jest gotowy)
    - dodaj nowy wiersz do reorder buffer, oznacz odpowiedni rejestr jako nieaktualny
    - sprawdź czy wymagane rejestry mają poprawne wartości (w pliku rejestrów albo w reorder buffer), jeżeli nie to poczekaj
    - rozpocznij fazę execute instrukcji, po czym zaktualizuj wiersz w reorder buffer, jednocześnie rozpocznij wykonywanie kolejnej instrukcji

## Zadanie 4
:::success
Autor: Jacek Długopolski
![](https://i.imgur.com/vIG6our.jpg)
![](https://i.imgur.com/YlY5mmR.jpg)
![](https://i.imgur.com/rdVHBlV.jpg)


:::

## Zadanie 5
:::success
Autor: Dominik Olejarz
![](https://i.imgur.com/kOs6k15.png)


:::

## Zadanie 6
:::success
Autor: Jacek Długopolski

![](https://i.imgur.com/tDOe2Fj.jpg)
![](https://i.imgur.com/CyqMhAs.jpg)

:::
