# Ćwiczenia 11, grupa śr. 17-19, 10 maja 2023
###### tags: `ASK23` `ć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!**
:::success
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| ----------------------:| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Kamila Goszcz | | | | | | | | | |
| Mateusz Materek | X | X | X | X | X | | | | X |
:::
:::info
**Uwaga:** Po rozwiązaniu zadania należy zmienić kolor nagłówka na zielony.
:::
## Zadanie 1
:::success
Autor: Mateusz Materek
:::

1. Wartość oczekiwana: $T_{\text{seek_avg}} = \frac{T_{max} - T_{min}}{2} = \frac{\overbrace{576 / 24}^{\text{skok przez cały dysk}} - \overbrace{0}^{\text{już tam jesteśmy}}}{2} = 12\text{ ms}$
2. Wartość oczekiwania: $T_{\text{rotation_avg}}$: pół obrotu, tj. 4,16 ms
3. Praktycznie pomijalny, ale: $T_{\text{transfer}} = \frac{1}{32000} \cdot 8,32 \text{ms} = 0,26 \text{ ms}$
4. Suma: 16,42 ms
## Zadanie 2
:::success
Autor: Mateusz Materek
:::


$$T_{\text{avg transfer}} = \frac{1}{\text{RPM}} \cdot \frac{1}{\text{avg # sectors/track}} \cdot \frac{60 \text{s}}{ 1\text{min}} \cdot 1000 = \frac{60}{300} \cdot \frac{1}{18} \cdot 1000 = 11.11ms$$
A) Bez DMA:
Łączny czas przerwań (co bajt)
$512 \cdot 16\mu s = 8.192 ms$
$$T_{pozostały} = 11.11 - 8,192 = 2.918 \text{ ms}$$
B) Z DMA:
$$T_{pozostały} = 11.11 - 16 \mu s = 11,094 \text{ ms}$$
## Zadanie 3
:::success
Autor: Mateusz Materek
:::

Przepustowość magistrali: 10 mln transferów/s = 320 mln b/s = 38,15 Mb/s (bez DMA).
a) nic nam nie przeszkadza, możemy zająć całą magistralę, zatem 10 mln transferów / 2 cykle na wykonanie instrukcji = **5.000.000** instrukcji
b) dostęp aktywny rozumiem jako "DMA pracuje na 100% mocy przez cały czas".
DMA wykorzysta 5 MB / 38,15 MB * 100% = 13,11% cyklów na szynie
Procesor w pierwszym cyklu robi dostęp do pamięc i w 100% przypadków, w drugim cyklu - w 40%. Zatem łącznie 70% cykli wymaga dostępów do pamięci.
70% * 13,11% = 9,177% (tyle czasu DMA potrzebuje procesor).
Zatem do wykonania pozostanie 5.000.000 * (100% - 9,177%) = **4.541.150** instrukcji
Gdyby kontroler dostawał tylko nieużywane przez CPU cykle magistrali, moglibyśmy go przez przypadek zagłodzić.
## Zadanie 4
:::success
Autor: Mateusz Materek
:::

| Pamięć | Czas (cykle) | Prawdopodobieństwo | Suma cykli |
| ------ | ------------ | ------------------ | ---- |
| L1 | 4 | 90% | 4 |
| L2 | 12 | 95% | 16 |
| L3 | 40 | 98% | 56 |
| DRAM | 200 | 100% | 256 |
a) czas średni
Po prostu `A()`$\cdot$`H()`, ale uwzględniamy, że wchodzimy poziom niżej tylko gdy nie trafimy wyżej:
$$90\%*4 +
\underbrace{10\%}_{\text{nietrafienie}}*95\%*16 +
\underbrace{10\% * 5\%}_{\text{nietrafienie}}*98\%*56 +
\underbrace{10\% * 5\% * 2\%}_{\text{nietrafienie}}*100\%*256 = 5,42\text{ cykli}$$
cykle -> nanosekundy
`2,5 GHz = 2.500.000.000 cykli/s = 2,5 cyklu/ns`
`5,42 / 2,5 = 2,168 ns`
b) czas pesymistyczny
`A(L1) + A(L2) + A(L3) + A(DRAM) = 256 cykli`
`256 / 2,5 = 102,4 ns`
## Zadanie 5
:::success
Autor: Mateusz Materek
:::

*Co musi się stać przed zleceniem wyboru wiersza?*
Before a new RAS signal can be sent the currently latched row must be deactivated and the new row must be **precharged**. Następuje reset wzmacniaczy i przygotowanie ich do kolejnego odczytu.
*Wyjaśnij zasadę działania wzmacniaczy odczytu (ang. sense amplifiers).*
Nie da się bezpośrednio odczytać danych z komórki (bardzo niski ładunek). **Wzmacniacze odczytu** są wykorzystywane podczas ładowania wiersza do bufora i zamieniają (wzmacniają) niską wartość napięcia na możliwy do rozpoznania stan logiczny.
*Czemu otwarty wiersz musi zostać wczytany do bufora przed zleceniem wyboru kolumny?*
Gdybyśmy odczytali wiersz bezpośrednio to: 1) napięcie niewzmocnione byłoby zbyt niskie do interpretacji oraz 2) nastąpiłoby nieodwracalne zniszczenie całego wiersza.
*Co musi się wydarzyć w trakcie zamykania wiersza?*
Musimy spowrotem naładować wybrany wiersz ładunkiem i zrzucić go z bufora.
*Czemu pamięć dynamiczna musi być odświeżana w przeciwieństwie do pamięci statycznej?*
Ze wzlędu na wycieki z kondensatorów. Po ok. 64 ms zawartość pamięci dynamicznej może zostać już utracona.
*W jaki sposób przeprowadzane jest odświeżanie całej pamięci?*
Co ustalony interwał czasu kontroler modułu DRAM wiersz po wierszu wczytuje każdy wiersz i zrzuca go spowrotem. Kontroler pamięta adres ostatnio odwiedzonego wiersza, inkrementuje i przechodzi dalej. Cały proces zamyka się w 64 ms.
## Zadanie 6
:::danger
Autor:
:::
## Zadanie 7
:::danger
Autor:
:::

$$c_{1600} = t_{RP} + t_{RCD} + 8*t_{CAS} = 100$$
$$c_{2133} = t_{RP} + t_{RCD} + 8*t_{CAS} = 150$$
innymi słowy:
$$c_{1600} = t_{RP} + max(t_{RAS}, t_{RCD} + 8*t_{CAS}) = 100$$
$$c_{2133} = t_{RP} + max(t_{RAS}, t_{RCD} + 8*t_{CAS}) = 150$$
burst:
$$c_{1600} = t_{RP} + t_{RCD} + t_{CAS} = 30 $$
$$c_{2133} = t_{RP} + t_{RCD} + t_{CAS} = 50$$
## Zadanie 8
:::danger
Autor:
:::
## Zadanie 9
:::success
Autor: Mateusz Materek
:::





L1 Data Cache Latency = 4 cycles
L2 Cache Latency = 10 cycles
L3 Cache Latency = 36 cycles
RAM Latency = 36 cycles + 57 ns $\approx$ = 220 cycles