---
# System prepended metadata

title: 'Ćwiczenia 11, grupa śr. 17-19, 10 maja 2023'
tags: [pwit, ćwiczenia, ASK23]

---

# Ć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
:::
![](https://hackmd.io/_uploads/Bk72V1MSh.png)

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
:::
![](https://hackmd.io/_uploads/BkdT41zS3.png)
![](https://hackmd.io/_uploads/HJ3ZU1Mr2.png)

$$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
:::
![](https://hackmd.io/_uploads/B1xNE4Mrn.png)

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
:::
![](https://hackmd.io/_uploads/HkEV4ffSn.png)

| 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
:::
![](https://hackmd.io/_uploads/HJkIczfBn.png)
*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:
:::
![](https://hackmd.io/_uploads/BkodItzS3.png)

$$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
:::
![](https://hackmd.io/_uploads/SJm5CvGH2.png)

![](https://hackmd.io/_uploads/HJxpoADMH2.jpg)
![](https://hackmd.io/_uploads/ryQ2CwzSn.jpg)
![](https://hackmd.io/_uploads/S1XnAvMBn.jpg)
![](https://hackmd.io/_uploads/HJm3ADMBh.jpg)


    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