---
# System prepended metadata

title: 'Ćwiczenia 6, grupa śr. 10-12, 5 kwietnia 2023'
tags: [pwit, ćwiczenia, SYK23]

---

# Ćwiczenia 6, grupa śr. 10-12, 5 kwietnia 2023

###### tags: `SYK23` `ć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   |
| ----------------------:| ----- | --- | --- | --- | --- | --- | --- | --- | --- |
Mateusz Biłyk            |    x  |     |  x  |     |     | x   |     |     |     | 
Mikołaj Dworszczak       |       |     |     |     |     |     |     |     |     |
Kacper Jóźwiak           |   X   | X   |     |     |     |     |     |     |     |
Dominik Kiełbowicz       |       |     |     |     |     |     |     |     |     |
Michał Kolasa            |       |     |     |     |     |     |     |     |     |
Konrad Kowalczyk         |   X   |  X  |     |     |     |     |     |     |     |
Oskar Kropielnicki       |   X   |  X  |  X  |     |     |==X==|     |     |  X  |
Anna Krysta              |   X   |  X  |  X  |  X  |  X  |  X  |  X  |  X  |  X  |
Jakub Krzyżowski         |       |     |     |     |     |     |     |     |     |
Oskar Kubkowski          |    X  |  ==X==  | X   |     |     |  X  |  X  | X   |     |
Mateusz Mazur            |   X    |  X   |  X   |  X   |     |  X   |     |     |     |
Barbara Moczulska        |   X   |  X  |  X  |  X  |  X  |  X  |     |     |     |
Kacper Sojda             |       |     |     |     |     |     |     |     |     |
Marta Strzelec           |    ==x==   |  x   | x    | x    |     |     |  x   | x    |     |
Mikołaj Swoboda          |   X   |  X  |  X  |  X  |  X  |     |  X  |     |     |
Filip Szczepański        |    X   |  X   |     |     |     |  X   |  X   |  X   |     |
Julian Włodarek          |    X   |  X   |     |     |     |  X   |  X   |  X   |     |
Beata Łakoma             |   x    |  x   |  x   |  x   |  x   |  x   | x    |  x   |     |
Michał Łukasik           |   X   |  X  |  X  |  X  |  X  |     |     |     |     |
:::








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




## Zadanie 1
:::success
Autor:	Marta Strzelec	
:::

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

$s0 = 22 + 5 = 27$
$s2 = 11 + 22 = 33$ (s0 jest nadal niewyliczone w 1. instrukcji)
$s3 = 11 + 15 = 26$ (s0 jest nadal niewyliczone w 1. instrukcji)
$s4 = 27 + 27 = 54$ (s0 już wyliczone)

Wyniki powinny być takie:
$s0 = 22 + 5 = 27$
$s2 = 27 + 22 = 49$
$s3 = 27 + 15 = 42$
$s4 = 27 + 27 = 54$
![](https://i.imgur.com/iiVAX4N.png)


## Zadanie 2
:::success
Autor:	Oskar Kubkowski	
:::
![](https://i.imgur.com/LrGUO6F.png)
![](https://i.imgur.com/XPYsfML.png)
![](https://i.imgur.com/0lWABfd.png)
![](https://i.imgur.com/6ncaPZ1.png)
![](https://i.imgur.com/4YMSTGV.png)

## Zadanie 3
:::success
Autor:	Michał Łukasik	
:::
![](https://i.imgur.com/XRjyevO.png)

Na czerwono zaznaczony podpunkt b)

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



## Zadanie 4
:::success
Autor:	Mateusz Mazur	
:::

![](https://i.imgur.com/AdHdzB1.png)
### Always taken
Rysunek podobny jak w 3

### Always not taken
![](https://i.imgur.com/WCztKiv.png)

## Zadanie 5
:::success
Autor:	Barbara Moczulska	
:::
![](https://i.imgur.com/lW2hjwE.png)

**early branch execution** - (Wczesne wykonywanie skoków) decyzja o skoku jest podejmowana jak najwcześniej w potoku procesora, zanim wszystkie poprzedzające instrukcje zostały ukończone.

W fazie dekodowania instrukcji (nie w ALU) procesor analizuje warunek skoku i podejmuje decyzję o skoku lub nie skoku. Jeśli procesor podejmuje decyzję o skoku, licznik rozkazów jest aktualizowany, aby wskazywał na adres docelowy instrukcji, która zostanie wykonana następnie. W przeciwnym przypadku, kolejna instrukcja jest pobierana i wykonana. W ten sposob chcemy ograniczyć liczbę niepotrzbnych instrukcji które są wykonane przy błędnym przewidywaniu decyzji o skoku.

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


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

b)

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


## Zadanie 6
:::success
Autor:	Oskar Kropielnicki	
:::

![](https://i.imgur.com/ZBUe5Uo.png)
![](https://i.imgur.com/SxXCPjx.png)
![](https://i.imgur.com/nwtxr33.png)
![](https://i.imgur.com/dqVNWbT.png)

:::spoiler fajny slajd
![](https://i.imgur.com/B1oAU4z.png)
:::

### a

$\text{CPI}_{\text{lw}} = 1(1) + 2(0) = 1$
$\text{CPI}_{\text{beq}} = 1(0.45) + 2(0.55) = 1.55$

$\text{Average CPI} = 1(0.45) + 1.55(0.25) + 1(0.25) + 1(0.05) = 1.1375$

### b

$\text{CPI}_{\text{lw}} = 1(1) + 2(0) = 1$
$\text{CPI}_{\text{beq}} = 1(0.55) + 2(0.45) = 1.45$

$\text{Average CPI} = 1(0.45) + 1.45(0.25) + 1(0.25) + 1(0.05) = 1.1125$

### c

$\text{CPI}_{\text{lw}} = 1(1) + 2(0) = 1$
$\text{CPI}_{\text{beq}} = 1(0.85) + 2(0.15) = 1.15$

$\text{Average CPI} = 1(0.45) + 1.15(0.25) + 1(0.25) + 1(0.05) = 1.0375$

### d

| | |
|-|-|
|`if x relop y goto L`|57,5%|
|`x = y binop z`      |12,5%|

#### a

$\text{CPI}_{\text{lw}} = 1(1) + 2(0) = 1$
$\text{CPI}_{\text{beq}} = 1(0.45) + 2(0.55) = 1.55$

$\text{Average CPI} = 1(0.575) + 1.55(0.125) + 1(0.25) + 1(0.05) = 1.06875$

#### b

$\text{CPI}_{\text{lw}} = 1(1) + 2(0) = 1$
$\text{CPI}_{\text{beq}} = 1(0.55) + 2(0.45) = 1.45$

$\text{Average CPI} = 1(0.575) + 1.45(0.125) + 1(0.25) + 1(0.05) = 1.05625$

#### c

$\text{CPI}_{\text{lw}} = 1(1) + 2(0) = 1$
$\text{CPI}_{\text{beq}} = 1(0.85) + 2(0.15) = 1.15$

$\text{Average CPI} = 1(0.575) + 1.15(0.125) + 1(0.25) + 1(0.05) = 1.01875$


## Zadanie 7
:::success
Autor:	Beata Łakoma	
:::
a)
![](https://i.imgur.com/lbEy90B.png)

b)Nie.
Każda instrukcja musi wykonać dostęp do pamięci, z tego jeśli instrukcja wykonuje dwa dostępy to zawsze zablokuje dostęp do pamięci w trzecim cyklu zatrzymując potok.
c)Nie.
Nop też jest instrukcją więc też zostaje zablokowany jeśli instrukcje poprzednie wykonują dostęp do pamięci.
## Zadanie 8
:::success
Autor: Filip Szczepański	
:::
![](https://i.imgur.com/6TWgVuN.png)

25% + 11% = 36% Każda instrukcja z dostępem do pamięci 3 cykle po rozpoczęciu uniemożliwia wczytanie kolejnej instrukcji co kosztuje nas 1 cykl. Operacje z dostępem do pamięci stanowią 36% programu, zatem tyle będzie dodatkowych cykli wywołanych wstrzymaniami potoku. 

## Zadanie 9
:::success
Autor:	Anna Krysta	
:::
Modyfikacja polegająca na użyciu instrukcji dostępu do pamięci w postaci x=*y lub *x=y możliwi połączenie faz EX i MEM w jedną fazę, w wyniku czego powstaje potok czterofazowy zamiast typowego pięciofazowego.
Łączenie tych faz może potencjalnie skrócić długość cyklu potoku, ponieważ jest o jedną fazę mniej do skończenia wykonywania instrukcji. Będzie to jednocześnie oznaczać, że będziemy potrzebować czasami dodać jeden cykl wykonania spowodowany wykonaniem instrukcji *(x + imm) = y lub y = *(x + imm). W tych obu przypadkach będziemy potrzebować dwóch cyklu do wykonania instrukcji. W zależności od tego, w jakiej części te instrukcje będą występować w programie, wydajność procesora może się różnić od tradycyjnego procesora z pięcioma cyklami. Jednak to skrócenie długości cyklu niekoniecznie musi prowadzić do znacznej poprawy wydajności. Wynika to z faktu, że ogólna wydajność procesora potokowego zależy nie tylko od długości cykli, ale także od złożoności wykonywania instrukcji i potencjalnych.
Jeśli modyfikacja ta spowoduje skrócenie długości cyklu bez wprowadzenia nowych hazardów i zwiększenia głębokości potoku (opóźnienia), to wpływ na wydajność może być pozytywny. Jeśli jednak modyfikacja wprowadzi nowe hazardy lub zwiększy złożoność potoku, wpływ na wydajność może być negatywny.

