# Ćwiczenia 5, grupa cz. 14-16, 30 marca 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 | 10 | 11 |
| ----------------------:| ----- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
Mikołaj Balwicki | | | | | | | | | | | |
Wojciech Bogucki | X | X | X | X | X | X | | X | | | |
Mateusz Cerulewicz | X | X | ==X== | X | X | X | X | X | | | |
Mateusz Garncarczyk | ==X== | X | X | X | X | X | X | X | | | |
Mateusz Golisz | X | X | X | X | X | X | X | X | X | X | X |
Mateusz Kitzol | X | X | X | X | X | X | X | X | X | ==X== | |
Piotr Mańkowski | | | | | | | | | | | |
Michał Mękarski | X | X | X | X | X |==X==| X | X | | X |
Aleksandra Nicpoń | x | x | x | x | x | x | x | ==x== | | x | |
Ksawery Plis | X | X | X | X | X | X | ==X== | X | | | |
Patryk Rybak | X | ==X== | X | X | X | X | X | X | | | |
Rafał Spyra | X | X | X | X | | | | | | | |
Dominik Szczepaniak | X | X | X | X | X | X | X | X | | X | |
Taras Tsehenko | | | | | | | | | | | |
Maksymilian Wiśniewski | X | X | X | | X | X | X | X | | | |
Martyna Wybraniec | X | X | X | X | X | X | X | X | | X | |
Natalia Zychowicz | X | X | X | X | ==X== | X | | X | | | |
Patryk Maciąg | X | X | X | X | X | X | X | | | | |
:::
Tutaj można zadeklarować zadanie 8 z listy 4:
-
-
:::info
**Uwaga:** Po rozwiązaniu zadania należy zmienić kolor nagłówka na zielony.
:::
## Zadanie 1
:::success
Autor: Mateusz Garncarczyk
:::


## Zadanie 2
:::success
Autor: Patryk Rybak
:::


## Zadanie 3
:::success
Autor: Mateusz Cerulewicz
:::


## Zadanie 4
:::success
Autor: Dominik Szczepaniak
:::

## Zadanie 5
:::success
Autor: Natalia Zychowicz
:::


## Zadanie 6
:::success
Autor: Michał Mękarski
:::





## Zadanie 7
:::success
Autor: Ksawery Plis
:::

$T_{1}=$ |x=(y+ imm)| $= 1075ps$
$T_{2}=$ |(x +imm) = y| $= 900ps$
$T_{3}=$ |if x relop y goto L| $= 700ps$
$T_{4}=$ |x =y binop z| $= 850ps$
Długość cyklu w niezmodyfikowanym procesorze: $T_{old} = 1075ps$
Aby obliczyć przyspieszenie, najpierw należy policzyć długość cyklu w naszym zmodyfikowanym procesorze:
$T_{new} =$
$0.25 * T_1 + 0.11 * T_2 + 0.12 * T_3 + 0.52 * T_4 = 268.75 + 99 + 84 + 442 = 893.75ps$
Teraz możemy policzyć przyspieszenie:
$Przyspieszenie = 1 - \frac{T_{new}}{T_{old}} = 1 - \frac{893.75}{1075} ≈ 1-0.8313≈0.1687≈17\%$
Osiągnęlibyśmy więc około 17% przyspieszenia.
## Zadanie 8
:::success
Autor: Aleksandra Nicpoń
:::

## Zadanie 9
:::success
Autor: Mateusz Kitzol
:::


## Zadanie 10
:::success
Autor: Martyna Wybraniec
:::

## Zadanie 11
:::success
Autor: Mateusz Golisz
:::


t = y + imm; pomijamy DATA_MEM
czas: PC + INSTR_MEM + REG_FILE + ALU + MUX + REG_FILE
= 50 + 250 + 150 + 200 + 25 + 150
= 825

x = \*t; pomijamy ALU
czas: PC + INSTR_MEM + REG_FILE + DATA_MEM + MUX + REG_FILE
= 50 + 250 + 150 + 250 + 25 + 150
= 875

\*x = t; pomijamy ALU
czas: PC + INSTR_MEM + REG_FILE + DATA_MEM
= 50 + 250 + 150 + 250
= 700
Stąd, najdłuższa operacja trwa teraz 875ps, czyli długość cyklu wynosi też 875ps.
Ale:
x = \*(y+ imm) === t = y+ imm ; x = \*t
stąd czas = 875ps * 2 = 1750ps dla stałej długości cykli,
lub czas = 825ps + 875ps = 1700ps dla różnej długości cykli
\*(x +imm) = y === t = x+ imm ; \*x = t
stąd czas = 825 * 2 = 1750ps dla stałej długości cykli,
lub czas = 825ps + 700ps = 1525ps dla różnej długości cykli
Dla programu z zad7:
dla cykli równej długości: 875 * ilość_instrukcji ps, ale x = \*(y+ imm) oraz \*(x +imm) = y zajmują teraz po dwie instrukcje, czyli:
0,25 * 2 + 0,11 * 2 + 0,12 + 0,52 = 1,36 => 36% instrukcji więcej
stąd, 875 * 1,36 * ilośc_instrukcji = 1190 * ilośc_instrukcji ps
(w zad7 było 1075 * ilośc_instrukcji ps)
dla cykli różnej długości: 1700 * 0,25 * ilość_instrukcji + 1525 * 0,11 * ilość_instrukcji + 700 * 0,12 * ilość_instrukcji + 850 * 0,52 * ilość_instrukcji
= (425 + 167,75 + 84 + 442) * ilość_instrukcji = 1118,75 * ilość_instrukcji [ps]
(w zad7 było 893,75 * ilość_instrukcji ps)
1 - 1118,75/1190 = 1 - 0,94 = 6% szybciej
Czyli po modyfikacji procesor działa dla tego programu wolniej, a cykle różnej długości dają mniejszy efekt niż wcześniej