Funkcje pami臋ci cache
Pami臋膰 operacyjna (robocza) komputera - zwana pami臋ci膮 RAM (ang. Random Acces Memory - pami臋膰 o dost臋pie swobodnym) s艂u偶y do przechowywaniu danych aktualnie przetwarzanych przez program oraz ci膮gu znak贸w, z kt贸rych sk艂ada si臋 program.
Coraz szybciej taktowane procesory wymagaj膮 coraz szybszych uk艂ad贸w pami臋ciowych. Ju偶 w komputerach z procesorem 386DX 25MHz wprowadzono obok pami臋ci operacyjnej, pami臋膰 podr臋czn膮 (cache), poniewa偶 normalne uk艂ady DRAM okaza艂y si臋 zbyt wolne dla procesora taktowanego tak膮 cz臋stotliwo艣ci膮 i musia艂 on odczeka膰 dodatkowe cykle, zanim otrzyma艂 dane z pami臋ci. W celu usuni臋cia tego ograniczenia wprowadzona zosta艂a pami臋膰 podr臋czna stanowi膮ca bufor o kr贸tkim czasie dost臋pu (mierzonym w pojedynczych nanosekundach lub setkach pikosekund). Uk艂ady te zbudowane s膮 z szybkich modu艂贸w pami臋ci statycznej SRAM (ang. Static Random Acces Memory). SRAM w por贸wnaniu do uk艂ad贸w DRAM jest du偶o szybsza, ale r贸wnocze艣nie ma du偶o mniejsz膮 g臋sto艣膰, jest r贸wnie偶 o wiele dro偶sza. Mniejsza g臋sto艣膰 oznacza, 偶e uk艂ady SRAM maj膮 wi臋ksze wymiary i w sumie przechowuj膮 mniej kom贸rek pami臋ci. Du偶a ilo艣膰 tranzystor贸w i grupowa budowa uk艂ad贸w oznacza, 偶e ko艣ci SRAM s膮 nie tylko wi臋ksze, ale i dro偶sze w por贸wnaniu z uk艂adami DRAM. Na przyk艂ad modu艂 SDRAM mo偶e zawiera膰 ponad 64 MB RAM, podczas gdy modu艂 SDRAM o takim samym rozmiarze b臋dzie mia艂 tylko 2 MB, a koszt jego wytworzenia wyniesie tyle samo, co 64 MB modu艂u DRAM. Og贸lnie rzecz bior膮c, pami臋膰 SRAM jest oko艂o 30 razu wi臋ksza i 30 razy dro偶sza od pami臋ci DRAM. Z powodu du偶ych rozmiar贸w i koszt贸w wytwarzania, modu艂y SRAM nie s膮 stosowane jako pami臋膰 systemowa komputer贸w PC. Pami臋膰 ta b臋d膮ca szybk膮 pami臋ci膮 wspiera o wiele wolniejsz膮 pami臋膰 operacyjn膮. Zastosowanie ich zaowocowa艂o zwi臋kszeniem wydajno艣ci obliczeniowej procesor贸w. Jest to jeden z najwa偶niejszych podzespo艂贸w wp艂ywaj膮cych na wydajno艣膰 jednostki centralnej. W procesorach 486DX pami臋膰 podr臋czna o rozmiarze 8 KB i jej kontroler by艂y zintegrowane z procesorem. Taka wewn臋trzna pami臋膰 jest taktowana t膮 sam膮 cz臋stotliwo艣ci膮 co procesor i okre艣lana jest jako pami臋膰 podr臋czna pierwszego poziomu (ang. L1 cache). Jej pojemno艣膰 bywa r贸偶na w zale偶no艣ci od procesora. Od czasu wprowadzenia procesor贸w Intel Pentium z funkcjami MMX pami臋膰 cache pierwszego poziomu wynosi 32 KB, z czego 16 KB jest przeznaczone na dane, a 16 KB na instrukcje. Obecnie wykorzystuje si臋 艂膮czenie kaskadowe modu艂贸w pami臋ci cache z coraz d艂u偶szymi czasami dost臋pu (L1 najszybsze, L3 najwolniejsze).
Pami臋膰 cache sk艂ada si臋 z trzech element贸w:
- banku danych pami臋ci cache (pami臋膰 danych),
- katalogu pami臋ci cache (cz臋sto nazywanego TAG-RAM-em),
- sterownika pami臋ci cache.
W banku danych pami臋ci cache przechowywana jest, zapisywana i odczytywana informacja, natomiast katalog pami臋ci cache s艂u偶y do szybkiego sprawdzania, czy poszukiwana informacja znajduje si臋 w pami臋ci danych cache (konkretnie, czy dany adres jest odwzorowany w pami臋ci cache). Jest to zadaniem sterownika pami臋ci cache, kt贸ry ponadto organizuje wsp贸艂prac臋 pami臋ci cache z systemem. Jednym z bardzo wa偶nych element贸w tej wsp贸艂pracy jest zapewnienie zgodno艣ci zawarto艣ci pami臋ci cache z pami臋ci膮 g艂贸wn膮.
Buforowe dzia艂anie pami臋ci podr臋cznej osi膮ga si臋, umieszczaj膮c je niedaleko na trasie do pami臋ci g艂贸wnej. Niezale偶nie od r贸偶nic w strategii dost臋pu w chwili obecnej w komputerach klasy PC wyst臋puj膮 trzy podstawowe sposoby do艂膮czania pami臋ci cache:
1. Uk艂ad Look-Aside
2. Uk艂ad Look-Through
3. Uk艂ad Backside
Ad. 1 Pami臋膰 podr臋czna L2 jest zainstalowana na p艂ycie g艂贸wnej komputera i do艂膮czona jest r贸wnolegle do magistrali pami臋ciowej. Pami臋膰 L1 zlokalizowana jest we wn臋trzu procesora i taktowana jest jego zegarem. Procesor odwo艂uje si臋 do pami臋ci podr臋cznej, wykorzystuj膮c magistral臋 pami臋ciow膮. Cz臋stotliwo艣膰 pracy pami臋ci podr臋cznej jest taka sama jak pami臋ci g艂贸wnej. Podniesienie wydajno艣ci osi膮gn膮膰 mo偶na zatem tylko przez skr贸cenie czasu dost臋pu.
Ad. 2 W uk艂adzie Look-Through procesor jest oddzielony od pami臋ci RAM pami臋ci膮 podr臋czn膮 cache. Procesor zanim si臋gnie do pami臋ci g艂贸wnej, napotyka uk艂ad pami臋ci podr臋cznej L1, a je艣li nie znajduje tam 偶膮danych danych, zwraca si臋 do L2. Jest ona z kolei sprz臋偶ona z pami臋ci膮 g艂贸wn膮 poprzez w艂a艣ciw膮 magistral臋 pami臋ciow膮. Pami臋膰 podr臋czna L2 mo偶e by膰 taktowana inn膮 cz臋stotliwo艣ci膮 ni偶 sama magistrala pami臋ciowa.
Ad. 3 W uk艂adzie Backside wprowadzono ca艂kowite oddzielenie pami臋ci podr臋cznej od magistrali pami臋ciowej. Kontroler pami臋ci L2 osadzony jest w strukturze procesora i ma bezpo艣rednie po艂膮czenie z pami臋ci膮 podr臋czn膮. Cz臋stotliwo艣ci taktowania magistral s膮 od siebie niezale偶ne. Fragment 艂膮cz膮cy procesor z pami臋ci膮 g艂贸wn膮 nazywany jest magistral膮 FSB (ang. Front Side Bus) w przeciwie艅stwie do cz臋艣ci biegn膮cej do pami臋ci cache drugiego poziomu.
Pami臋膰 cache L1 jest zintegrowana z procesorem i nie ma mo偶liwo艣ci jej rozbudowy; sk艂ada si臋 ona z bufora rozkaz贸w po艂膮czonego z szyn膮 adresow膮 oraz z bufora danych po艂膮czonego z szyn膮 danych procesora. Wyr贸偶niamy trzy sposoby obs艂ugi cache L1: write through (WT), write back (WB) oraz linear burst (LB). W procesorach klasy Pentium stosowany jest g艂贸wnie tryb zapisu write back (WB). Zdecydowanie najlepsze jest takie rozwi膮zanie, w kt贸rym chipset oferuje wsparcie dla wszystkich rodzaj贸w zapisu cache'u, czyli: write through, write back oraz linear burst. Tryb zapisu do pami臋ci buforowej L1 najcz臋艣ciej wybierany jest w BIOS-e komputera.
W przypadku trybu Write Throught przy odczytywaniu danych kontroler pami臋ci podr臋cznej sprawdza na podstawie adres贸w zapisanych w pami臋ci DRAM i w pami臋ci Cache Tag RAM, czy nie znajduj膮 si臋 one ju偶 w pami臋ci cache. Je艣li tak, mamy do czynienie z tak zwanym trafieniem w pami臋膰 podr臋czn膮 (cache hit). Trafienie takie wyst臋puje w 95% przypadk贸w. W efekcie tego trafienia dane zostan膮 natychmiastowo pobrane z szybkiej pami臋ci. W przeciwnym przypadku (chybienie pami臋ci podr臋cznej - cache miss) dane zostan膮 pobrane z wolniejszej pami臋ci operacyjnej. Za pomoc膮 Cache Tag RAM, stanowi膮cego pewnego rodzaju indeks zawarto艣ci pami臋ci podr臋cznej, kontroler ustala czy ma do czynienia z trafieniem czy z chybieniem. Ka偶dy zapis do pami臋ci cache powoduje jednocze艣nie zapis do pami臋ci g艂贸wnej. Jest to rozwi膮zanie bardzo proste i pewne, niestety powoduj膮ce zmniejszenie szybko艣ci dzia艂ania systemu.
W trybie pracy pami臋ci cache, Write Back, operacje odczytu przebiegaj膮 w zasadzie tak samo jak w pierwszym. Przy zapisie natomiast najpierw aktualizowane s膮 dane w pami臋ci podr臋cznej, a nie w operacyjnej. Zawarto艣膰 pami臋ci cache i pami臋ci g艂贸wnej s膮 uzgadniane tylko w przypadku takiej potrzeby.
Optymalne wykorzystanie przyspieszaj膮cych funkcji pami臋ci podr臋cznej wymaga w praktyce dzia艂a艅 wielopoziomowych - pierwszy bufor jest bardzo szybki i stosunkowo ma艂y, a drugi stopie艅 po艣redni - ju偶 wi臋kszy, lecz nieco wolniejszy. Bufor pierwszego poziomu o rozmiarze od kilku do kilkudziesi臋ciu kilobajt贸w osadzany jest wprost na krzemowej strukturze scalonej procesora i pracuje synchronicznie z nim. W przypadku niekt贸rych procesor贸w stosowany jest te偶 trzeci poziom pami臋ci podr臋cznej o rozmiarze rz臋du kilku megabajt贸w. Trzeci poziom pami臋ci podr臋cznej ma za zadanie zminimalizowa膰 cz臋stotliwo艣膰 odwo艂a艅 do pami臋ci, a wi臋c zmniejszy膰 powstawania konieczno艣ci wstrzymywania dzia艂a艅 potok贸w procesora.
Kontroler pami臋ci cache L2 odpowiedzialny jest za obs艂ug臋 bufora drugiego poziomu oraz wsp贸艂prac臋 z pami臋ci膮 buforow膮 pierwszego poziomu i pami臋ci膮 operacyjn膮 RAM. L2-cache instalowana jest najcz臋艣ciej na p艂ycie g艂贸wnej.
Pami臋膰 buforowa drugiego poziomu jest instalowana na p艂ycie g艂贸wnej w spos贸b umo偶liwiaj膮cy jej rozbudow臋. P艂yty g艂贸wne wyposa偶ane s膮 standardowo w pewn膮 okre艣lon膮 ilo艣膰 pami臋ci cache L2. Najcz臋艣ciej spotykane rozmiary to: 256KB, 512KB, 1MB, 2MB. Najwa偶niejsze jest, aby pami臋膰 ta by艂a zainstalowana, (chocia偶 128KB, a najlepiej 512KB). W efekcie nast臋puje ogromny wzrost wydajno艣ci komputera. Zainstalowanie kolejnych kilobajt贸w ju偶 nie powoduje tak radykalnych przyrost贸w wydajno艣ci systemu (np. rozbudowa z 256 KB do 512 KB daje wzrost wydajno艣ci rz臋du 5%).
Fizyczna lokalizacja pami臋ci podr臋cznej L2 i L3 (odleg艂o艣膰 od j膮dra procesora) oraz ewentualnie jako艣膰 (czas dost臋pu) zastosowanych uk艂ad贸w maj膮 decyduj膮cy wp艂yw na maksymaln膮 cz臋stotliwo艣膰 taktowania pami臋ci. Do艣膰 istotna jest r贸wnie偶 logiczna organizacja systemu buforowania. Dotyczy ona zar贸wno pami臋ci operacyjnej, jak i pami臋ci podr臋cznej. Pami臋膰 operacyjna podzielona jest na bloki o rozmiarze r贸wnym ilo艣ci dost臋pnej pami臋ci buforowej. Pami臋膰 podr臋czna poziomu drugiego podobnie jak pami臋膰 operacyjna nie stanowi jednolitego obszaru. Operuje ona jednostkami przydzia艂u o d艂ugo艣ci 32 bajt贸w. Ka偶da jednostka stanowi niezale偶n膮 struktur臋, opatrzon膮 w艂asnym adresem oraz dodatkowymi informacjami okre艣laj膮cymi status zawartych w nich danych.
1