cache.fr cache

Transkrypt

cache.fr cache
Architektury systemów komputerowych
Lista 11
x11 = 6
(minimum na bdb)
W swojej grupie ¢wiczeniowej zapowiedziaªem, »e to b¦dzie ostatnia lista zadaniowa.
Musiaªem z niej
jednak usun¡¢ zadania dotycz¡ce pami¦ci wirtualnej, poniewa» nie zd¡»yªem tego zagadnienia dobrze omówi¢
na wykªadzie. Dlatego jednak pojawi si¦ jeszcze lista 12. B¦dzie ona krótka (3-5 zada«) i b¦dzie miaªa minimum
na bdb ustawione na 1.
1. W tym i w nast¦pnym zadaniu rozwa»amy 4-gigabajtow¡ przestrze« adresow¡, adres okre±la
pojedynczy bajt pami¦ci, a wi¦c ma 32 bity. Przyjrzymy si¦ kilku wariantom bezpo±redniego
mapowania przestrzeni adresowej w pami¦ci cache.
Zaªó»my, »e mamy do dyspozycji pami¦¢ cache, która mo»e przechowywa¢ 16 kB danych (nie liczymy miejsca przeznaczonego na znaczniki). Ka»dy bajt pami¦ci cache jest adresowany osobno,
a wi¦c ka»dy musi posiada¢ wªasny znacznik. Ile bitów ma adres bajtu w pami¦ci cache, a ile
bitów musi mie¢ znacznik? Dlaczego w naszej sytuacji nie musimy wyró»nia¢ fragmentu adresu
okre±laj¡cego poªo»enie bajtu w bloku? Zakªadaj¡c, »e znacznik to bardziej znacz¡ca cz¦±¢ adresu, powiedz pod jakim adresem w pami¦ci cache mo»e by¢ przechowywana zawarto±¢ rzeczywistego adresu 1A2B3C4D (podanego szesnastkowo)? Ilu przerzutników potrzeba aby zrealizowa¢
nasz¡ pami¦¢ cache (ª¡cznie ze znacznikami)? Przypominam, »e przerzutnik pami¦ta jeden bit.
2. Zaªó»my teraz, »e adresowaln¡ jednostk¡ pami¦ci cache jest wiersz (blok) zªo»ony z czterech
4-bajtowych sªów.
Ile wierszy ma nasza 16 kB pami¦¢ cache?
Gdzie w pami¦ci cache b¦dzie
przechowana zawarto±¢ adresu 1A2B3C4D (w którym wierszu, w którym sªowie tego wiersz,
w którym bajcie tego sªowa)? Ilu przerzutników potrzeba aby zrealizowa¢ nasz¡ pami¦¢ cache
(ª¡cznie ze znacznikami)?
3. Rozwa»my maszyn¦, która ma 1Mb pami¦ci gªównej, sªowo o dªugo±ci jednego bajta, pami¦¢
cache o pojemno±ci 64kB i rozmiarze wiersza (bloku) 16 bajtów, mapowanie jest bezpo±rednie.
Jaki znacznik, adres bloku oraz pozycj¦ sªowa w bloku maj¡ nast¦puj¡ce adresy pami¦ci gªównej:
F0010 oraz 01234 (podane szesnastkowo)? Podaj dowolne dwa adresy o ró»nych znacznikach,
które s¡ mapowane do tego samego wiersza pami¦ci cache.
4. Rozwa»amy cache z mapowaniem sekcyjno-skojarzeniowym. Mamy 64 wiersze cache podzielone
na sekcje o wielko±ci czterech wierszy. W pami¦ci gªównej mamy 4K bloków, ka»dy skªadaj¡cy
si¦ ze 128 sªów. Jaki jest format adresu w pami¦ci gªównej?
5. Przypomnij jaka jest ró»nica pomi¦dzy schematem zapisu jednoczesnego (
write back).
opó¹nionego (
write through), a zapisu
Czas dost¦pu do pami¦ci cache wynosi 5 ns, a do pami¦ci gªównej
40 ns (zakªadamy dla uproszczenia, »e w tym czasie jeste±my w stanie przenie±¢ caªy blok).
Przewidujemy, »e 85 % odwoªa« programu do pami¦ci to odczyty, 15 % zapisy. Zakªadamy,
»e wspóªczynnik trae« w pami¦ci cache wynosi 0.95 (zarówno w przypadku odczytów, jak i
zapisów). Jaki jest ±redni czas dost¦pu do pami¦ci w systemie przy obydwu schematach zapisu?
6. Rozwa»amy pami¦¢ podr¦czn¡ z mapowaniem sekcyjno-skojarzeniowym, wykorzystuj¡c¡ algorytm wymiany LRU (
least recently used najdawniej u»ywany).
Rozmiar sekcji 4 bloki. Do
ka»dego bloku dodane s¡ dwa bity, u»ywane do obliczenia, króry blok byª ostatnio u»ywany.
Licznik dziaªa nast¦puj¡co:
•
kiedy pojawi si¦ chybienie, to blok z licznikiem ustawiony ma 0 jest podmieniany, a nowo
wstawiony blok dostaje licznik 3; pozostaªe bloki maj¡ liczniki zmniejszane o 1;
•
kiedy pojawi si¦ traenie, to licznik bloku, do którego si¦ odwoªujemy ustawiamy na 3 i
wprowadzmy konieczne modykacje w pozostaªych licznikach.
Je±li w pami¦ci cache znajduj¡ si¦ cztery bloki A, B, C, D z licznikami ustawionymi odpowiednio
na 0, 1, 2, 3, to które bloki pozostan¡ w zbiorze i jakie b¦d¡ warto±ci ich liczników po sekwencji
odwoªa«: E, B, E, D, A, E?
7. Algorytm wymiany stosowany w systemach z procesorem Intel 80406 jest okre±lany jako pseudoLRU. Z ka»d¡ ze 128 sekcji zawieraj¡cych po 4 wiersze (oznaczone jako L1, L2, L3, L4) s¡
skojarzone trzy bity (zwracam uwag¦, »e bity s¡ skojarzone z caª¡ sekcj¡ a nie z pojedynczym
wierszem): B0, B1, B2. Bit B0 okre±la która para wierszy (0-1, czy 2-3) byªa u»ywana dawniej,
bity B1 i B2 wskazuj¡, które wiersze w poszczególnych parach byªy wykorzystywane dawniej.
Algorytm, w zale»no±ci od B0, wyrzuca wiersz wskazywany przez B1 lub B2.
(a) Poka», »e algorytm stanowi tylko przybli»enie prawdziwego algorytmu LRU (wska» sekwencj¦ odwoªa«, która rozró»nia te dwa algorytmy).
(b) Wyka», »e prawdziwy algorytm LRU wymaga co najmniej 6 bitów na jeden zbiór.
8. System komputerowy zawiera pami¦¢ gªówn¡ o pojemno±ci 32K sªów 16-bitowych.
Ma tak»e
pami¦¢ podr¦czn¡ 4K sªów podzielon¡ na 4-wierszowe sekcje z 64 sªowami w ka»dym wierszu.
Zaªó», »e pami¦¢ podr¦czna jest na pocz¡tku pusta. Procesor pobiera sªowa z lokacji 0,1,2,...,4351
w tym wªa±nie porz¡dku. Nast¦pnie powtarza t¦ sekwencj¦ pobierania jeszcze 9 razy. Pami¦¢
podr¦czna jest 10 razy szybsza ni» pami¦¢ gªówna. Oszacuj korzy±¢ wynikaj¡c¡ z zastosowania
pami¦ci podr¦cznej. Przyjmij, »e wymiana bloków jest zgodna z algorytmem LRU.
9. Rozwa»my nast¦puj¡cy pseudokod:
int array[10000,100000];
for each element array[i][j] {
array[i][j]=array[i][j]*2
}
Napisz dwa programy w j¦zyku C implemnetuj¡ce powy»szy algorytm: Pierwszy program powinien przechodzi¢ przez tablic¦ wierszami, a drugi kolumnami. Porównaj czasy dziaªania obydwu
implementacji. Skomentuj wyniki.
Emanuel Kiero«ski
2

Podobne dokumenty