Wydrukuj tę stronę

Pamięć podręczna (Cache)

  25 lipiec 2010
Oceń ten artykuł
(2 głosów)

Pomimo że wciąż zwiększano częstotliwości pracy rdzenia procesora, to jednak szybkości pamięci nie rosły w takim samym tempie. W jaki sposób sprawić, aby bez znacznego spadku ogólnej wydajności procesor, mógł pracować z większą szybkością niż pamięć, z której są przez niego pobierane dane?

Odpowiedzią na to pytanie była pamięć cache. Według najprostszej definicji pamięć podręczna (ang. cache) jest buforem pracującym z dużą szybkością, w którym tymczasowo są przechowywane dane pobierane przez procesor, przez co mogą one być do niego przekazane o wiele szybciej niż miałoby to miejsce w przypadku pamięci operacyjnej.

W buforze są przechowywane przypadkowe dane zazwyczaj umieszczane w nim na zasadzie "pierwszy wchodzi pierwszy wychodzi" (ang. first in, first out FIFO). Poza tym pamięć cache gromadzi dane, na które prawdopodobnie w najbliższym czasie zostanie zgłoszone zapotrzebowanie ze strony procesora. Tym sposobem procesor może cały czas pracować z pełną lub jej bliską szybkością bez konieczności czekania na dane, które są pobierane z wolniejszej pamięci operacyjnej. Pamięć podręczna zazwyczaj jest zbudowana z układów pamięci statycznej RAM (SRAM) zainstalowanych na płycie głównej lub zintegrowanych z procesorem. W najnowszych komputerach są stosowane dwa poziomy pamięci podręcznej procesora lub pamięci operacyjnej. Są to: Level 1 (L1) oraz Level 2 (L2).

Wewnętrzna pamięć Cache Level 1 i Level 2

Wszystkie nowsze procesory począwszy od modelu 486 są wyposażone w zintegrowaną pamięć Cache L1 i kontroler. Pojemność zintegrowanej pamięci Cache L1 w różnych procesorach jest inna i w oryginalnym modelu 486DX było to 8 kB, natomiast w ostatnich wersjach procesorów jest to 32 kB lub 64 kB.

Ze względu na fakt, że pamięć Cache L1 jest zawsze wbudowana w procesor, jej szybkość jest równa częstotliwości pracy rdzenia procesora. Pamięć cache jest więc taktowana wewnętrzną częstotliwością pracy procesora, a nie zegarem jego magistrali znajdującej się na płycie głównej. Tego typu pamięć podręczna stanowi obszar bardzo szybkiej pamięci zintegrowanej z procesorem i mającej za zadanie przechowywanie aktualnie przetwarzanego zestawu instrukcji i danych. Ze względu na pracę z pełną szybkością rdzenia procesora, dostęp do pamięci cache nie wymaga ustawiania żadnych cykli oczekiwania.

Zastosowanie pamięci podręcznej zredukowało wpływ ogólnie znanego systemowego "wąskiego gardła" spowodowanego tym, że pamięć RAM jest o wiele wolniejsza od procesora. Jej obecność nie zmusza procesora do czekania na instrukcje i dane przekazywane przez wolniejszą pamięć operacyjną, a tym samym zwiększa wydajność systemu. Bez zastosowania pamięci podręcznej L1 procesor byłby zmuszony do częstszego czekania na wczytanie danych z pamięci systemowej.

W nowoczesnych systemach pamięć cache pełni nawet jeszcze ważniejszą rolę, ponieważ często jest jedynym typem pamięci w komputerze, która w pełni może być wykorzystana przez procesor. Większość nowszych typów procesorów opiera się na mnożniku częstotliwości, co oznacza, że są taktowane częstotliwością, która tak naprawdę jest wielokrotnością częstotliwości, z jaką pracuje płyta główna. Przykładowo, procesor Pentium III 1,4 GHz pracuje z częstotliwością, która jest wynikiem pomnożenia rzeczywistej częstotliwości pracy płyty głównej równej 133 MHz przez wartość mnożnika wynoszącą 10,5. Ze względu na fakt występowania pamięci operacyjnej na płycie głównej może ona pracować tylko z szybkością 133 MHz. Jedyną pamięcią pracującą z pełną szybkością procesora wynoszącej 1,4 GHz jest zintegrowana z nim pamięć Cache L1 i L2. W tym przypadku procesor Pentium III 1,4 GHz jest wyposażony w 32 kB wbudowanej pamięci podręcznej L1 (w postaci dwóch niezależnych modułów po 16 kB) oraz 512 kB pamięci Cache L2 pracujących z pełną szybkością rdzenia procesora. Jeśli żądane przez procesor dane znajdują się już w wewnętrznej pamięci podręcznej, wtedy nie musi on na nie czekać. Jeśli jednak tak nie jest, procesor musi je pobrać z pamięci Cache L2 lub za pośrednictwem magistrali systemowej (w mniej zaawansowanych rozwiązaniach), czyli bezpośrednio z pamięci operacyjnej.

Dane do pamięci podręcznej są przekazywane przez kontroler pamięci podręcznej, który próbuje przewidzieć jakie dane będzie potrzebował procesor. Trafność tych decyzji oscyluje w granicach 90%. Jeżeli natomiast kontroler pamięci podręcznej przekazał do niej niewłaściwe dane, wówczas taką sytuację nazywamy pustym trafieniem (ang. cache miss). Rezultatem takiego pustego trafienia jest dodatkowe oczekiwanie lub w przypadku prostego systemu opartego na procesorze Pentium 233 MHz obniżenie częstotliwości pracy do 16 MHz (czyli częstotliwości pamięci operacyjnej).

W celu zmniejszenia znacznego spadku wydajności za każdym razem, gdy w pamięci podręcznej L1 nastąpiło puste trafienie, zastosowano pamięć Cache L2. Chodzi tutaj o to, że kontroler pamięci podręcznej nie odwołuje się od razu do pamięci operacyjnej, lecz do pamięci Cache L2 i sprawdza czy tam nie ma potrzebnych danych. Większość typów pamięci Cache L2 charakteryzuje się podobną 90-procentową skutecznością trafień. A zatem, jeśli spojrzymy na system jako jedną całość, wtedy okaże się, że przez 90% czasu związanego z pobieraniem danych z pamięci podręcznej L1 system pracuje z pełną częstotliwością procesora. Przez pozostałe 10% czasu związanego z odczytywaniem danych z pamięci Cache L2 następuje spadek wydajności. 90% procent czasu procesora jest związana z przetwarzaniem danych pobranych z pamięci podręcznej L2, natomiast pozostała część czasu jest poświęcona na odczytywanie danych z wolniejszej pamięci operacyjnej spowodowane pustymi trafieniami, które wystąpiły w pamięci Cache L2.

latino-ino

Strona internetowa: komputery-pc.info