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