Pamięć podręczna

Caching to termin używany w informatyce. Idea cache'a (wymawiane "gotówka" /ˈkæʃ/ KASH ) jest bardzo prosta: Bardzo często uzyskanie wyniku do obliczeń jest bardzo czasochłonne, więc przechowywanie wyniku jest generalnie dobrym pomysłem. Stosowane są dwa rodzaje nośników danych: Jeden jest zazwyczaj dość duży, ale dostęp do niego jest "powolny"; drugi można uzyskać znacznie szybciej, ale zazwyczaj jest mały. Podstawową ideą cache'u jest wykorzystanie nośnika, do którego dostęp jest szybki, aby mieć kopie danych. Nie ma żadnej różnicy między kopią, a oryginałem. Uzyskanie dostępu do oryginalnych danych może zająć dużo czasu, lub może być kosztowne (na przykład: wyniki trudnego problemu, którego rozwiązanie zajmuje dużo czasu). Z tego powodu, to jest znacznie "tańsze", aby po prostu użyć kopii danych z pamięci podręcznej. Inaczej mówiąc, pamięć podręczna jest tymczasowym obszarem przechowywania danych, który posiada kopie danych, które są często używane. Kiedy kopia danych znajduje się w tej pamięci podręcznej, jest to szybsze do korzystania z tej kopii, niż ponowne pobieranie lub ponowne obliczanie oryginalnych danych. Dzięki temu średni czas potrzebny do uzyskania dostępu do danych będzie krótszy. Umieszczenie nowej wartości w pamięci podręcznej często oznacza, że starsza wartość musi zostać zastąpiona. Istnieją różne pomysły (zwykle nazywane "strategiami") na to, jak wybrać wartość do zastąpienia.

Bufor jest bardzo podobny do skrytki. Inaczej jest w tym, że klient uzyskujący dostęp do danych w buforze wie, że bufor istnieje; bufor jest zarządzany przez aplikację. W przypadku bufora, klient uzyskujący dostęp do danych nie musi wiedzieć, że bufor istnieje.

Typowe aplikacje komputerowe uzyskują dostęp do danych w bardzo podobny sposób. Załóżmy, że dane są zorganizowane w "bloki", do których można uzyskać indywidualny dostęp. Kiedy aplikacja uzyskuje dostęp do bloku, jest również bardzo prawdopodobne, że uzyska dostęp (lub odniesienie) do bloku, który jest "blisko" oryginalnego bloku. Nazywa się to "lokalizacją odniesienia". Istnieją różne rodzaje takich "lokalizacji". Lokalizacja odniesienia jest jednym z powodów, dla których cache działa dobrze w wielu obszarach obliczeniowych.

Aby dobrze działać, skrytki są małe, w porównaniu z całą ilością danych. Im większy jest cache, tym dłużej trwa wyszukiwanie wpisu. Większe skrytki są również droższe w budowie.

Jak działają skrytki

Pamięć podręczna (cache) to blok pamięci do przechowywania danych, który prawdopodobnie zostanie ponownie wykorzystany. Procesor i dysk twardy często korzystają z pamięci podręcznej, podobnie jak przeglądarki internetowe i serwery internetowe.

Skrytka składa się z wielu wpisów, zwanych pulą. Każdy wpis przechowuje w sobie datum (bit danych), które jest kopią datum w innym miejscu. Skrytki zazwyczaj korzystają z tego, co nazywane jest skrytką zapasową. Sklepy, do których dostęp jest powolny lub kosztowny, w porównaniu do skrytki. Na przykład pamięć podręczna dysku używa dysku twardego jako magazynu kopii zapasowej. Do każdego wpisu dołączona jest również niewielka ilość informacji, zwana tagiem. Znacznik ten jest używany do wyszukiwania miejsca, w którym przechowywane są oryginalne dane.

Skrytki do czytania

Klient (procesor, przeglądarka internetowa, system operacyjny) chce uzyskać dostęp do pewnej ilości danych, uważa, że znajdują się one w magazynie, najpierw sprawdza, czy dane znajdują się w pamięci podręcznej. Jeśli dane można znaleźć w pamięci podręcznej, klient może z niej korzystać i nie musi korzystać z pamięci głównej. Jest to tzw. cache hit. Tak więc, na przykład, program przeglądarki internetowej może sprawdzić, czy na dysku znajduje się lokalna kopia zawartości strony internetowej pod określonym adresem URL. W tym przykładzie, adres URL jest znacznikiem, a zawartość strony internetowej jest punktem odniesienia.

Inną sytuacją, która może się zdarzyć jest to, że w pamięci podręcznej nie można znaleźć danych z tagiem. Jest to tzw. cache miss. Dane muszą zostać pobrane z magazynu, w którym znajduje się nośnik danych. Zazwyczaj jest on kopiowany do pamięci podręcznej, więc następnym razem nie musi być już pobierany z magazynu, w którym znajduje się nośnik danych.

Skrytka ma tylko ograniczony rozmiar. Aby zrobić miejsce dla wcześniej nie buforowanego wpisu, może być konieczne usunięcie innego zbuforowanego wpisu z pamięci podręcznej. Specjalne zasady są stosowane w celu znalezienia wpisu, który najlepiej jest usunąć. Zasady te są zazwyczaj nazywane Heurystyką. Heurystyka używana do znalezienia wpisu nazywana jest polityką zastępowania. Bardzo prosta reguła nazywana jest Najświeżej używaną (lub LRU). Polega ona po prostu na znalezieniu wpisu, który był używany najdłużej. Inne heurystyki są wymienione w algorytmie cache...

Skrytki do pisania

Cache może być również używany do zapisu danych; zaletą tego jest to, że klient może kontynuować swoją pracę po zapisaniu wpisu do pamięci podręcznej; nie musi czekać, aż wpis zostanie zapisany na nośniku.

Wpis musi być jednak w pewnym momencie zapisany na nośniku. Moment, w którym to nastąpi, jest kontrolowany przez zasady zapisu.

W pamięci podręcznej każdy wpis jest natychmiast zapisywany na nośniku, jak również przechowywany w pamięci podręcznej.

Drugą opcją jest tylko zapis do pamięci podręcznej, a następnie zapis do magazynu kopii zapasowych. Jest to tzw. write-back (lub write-behind) cache. Pamięć podręczna oznacza wpisy, które nie zostały jeszcze zapisane w pamięci podręcznej; znak, który jest używany jest często określany jako brudna flaga. Przed usunięciem wpisów z pamięci podręcznej, są one zapisywane w pamięci podręcznej. Jest to tzw. leniwe pismo. Braki w pamięci podręcznej typu write-back (która wymaga zastąpienia bloku przez inny) często wymagają dwóch dostępów do pamięci: jednego, aby uzyskać potrzebne dane, a drugiego, aby zapisać zastąpione dane z pamięci podręcznej do magazynu.

Polityka buforowania może również stanowić, że do buforowania musi być zapisany pewien punkt odniesienia. Klient mógł dokonać wielu zmian w bazie danych w buforze. Po tym jak to zostanie zrobione, może on wyraźnie powiedzieć cache'owi, aby spisał dane odniesienia.

Alokacja bez zapisu to polityka pamięci podręcznej, w której buforowane są tylko odczyty. Pozwala to na uniknięcie konieczności zapisu zwrotnego lub zapisu przez buforowanie. Zapisy są cały czas wykonywane do magazynu kopii zapasowych.

Klient nie jest aplikacją, która zmienia dane w sklepie z kopiami zapasowymi. W przypadku zmiany danych w magazynie kopii zapasowej, kopia w pamięci podręcznej będzie nieaktualna lub nieaktualna. Alternatywnie, gdy klient zaktualizuje dane w buforze, kopie tych danych w innych buforach staną się nieaktualne. Istnieją specjalne protokoły komunikacyjne, które pozwalają menedżerom pamięci podręcznej rozmawiać ze sobą w celu zachowania znaczenia danych. Są one znane jako protokoły spójności.

Schemat pamięci podręcznej procesoraZoom
Schemat pamięci podręcznej procesora

Wybranie pozycji do zastąpienia

Skrytka jest mała, i przez większość czasu będzie pełna, lub prawie pełna. Więc kiedy dodawana jest nowa wartość, stara musi zostać usunięta. Istnieją różne sposoby, na jakie można dokonać tego wyboru:

  • Pierwszy na pierwszym miejscu: Po prostu zmień wpis, który został dodany do pamięci podręcznej najdłuższy czas temu
  • Najmniej ostatnio używany: Ten pomysł jest podobny do powyższego FIFO, ale kiedy wpis jest używany, jego znacznik czasowy/etat jest aktualizowany.
  • Najrzadziej używany: Ponownie, podobnie jak w przypadku FIFO, zamiast używać znacznika czasu używa się licznika, który jest zwiększany za każdym razem, gdy używany jest wpis.
  • Wybierz losowo wpis

Historia

Słowo "cache" zostało po raz pierwszy użyte w informatyce w 1967 roku, kiedy to przygotowano artykuł naukowy do opublikowania w IBM Systems Journal. Artykuł ten dotyczył nowego usprawnienia pamięci w Modelu 85. Model 85 był komputerem z linii produktów IBM System/360. Redaktor czasopisma chciał lepszego słowa na temat bufora o dużej szybkości, który został wykorzystany w artykule. Nie dostał żadnego wejścia i zasugerował cache, od francuskiego cache'a, czyli "ukryć". Artykuł został opublikowany na początku 1968 roku, a jego autorzy zostali uhonorowani przez IBM. Ich praca została szeroko przyjęta i poprawiona. Cache szybko stał się standardem w literaturze komputerowej.

W przypadku korzystania ze skrytek

skrytki procesora

Małe wspomnienia na układzie CPU lub w jego pobliżu mogą być wykonane szybciej niż znacznie większa pamięć główna. Większość procesorów od lat 80-tych używa jednej lub więcej pamięci podręcznych. Nowoczesne procesory ogólnego przeznaczenia w komputerach osobistych mogą mieć aż pół tuzina. Każda pamięć podręczna może być wyspecjalizowana do innej części zadań związanych z wykonywaniem programów.

Skrytki dyskowe

Skrytki procesora są zazwyczaj zarządzane całkowicie przez sprzęt, inne są zarządzane przez różne rodzaje oprogramowania. System operacyjny zazwyczaj zarządza stroną w pamięci głównej. Użytkownicy spoza branży informatycznej zazwyczaj nazywają tę pamięć podręczną pamięcią wirtualną. Jest ona zarządzana przez jądro systemu operacyjnego.

Nowoczesne dyski twarde posiadają bufory dyskowe. Bufory te są czasami nazywane "disk cache", ale to jest złe. Główną funkcją tych buforów jest porządkowanie zapisów dyskowych i zarządzanie odczytami. Powtarzające się uderzenia pamięci podręcznej są rzadkie, ponieważ bufor jest bardzo mały w porównaniu do rozmiaru dysku twardego.

Lokalne dyski twarde są szybkie w porównaniu z innymi urządzeniami pamięci masowej, takimi jak serwery zdalne, lokalne napędy taśmowe lub szafy grające. Wykorzystanie lokalnych dysków twardych jako pamięci podręcznej jest główną koncepcją hierarchicznego zarządzania pamięcią masową.

Skrytki internetowe

Przeglądarki internetowe i serwery proxy używają pamięci podręcznej do przechowywania poprzednich odpowiedzi z serwerów internetowych, takich jak strony internetowe. Skrytki internetowe zmniejszają ilość informacji, które muszą być przesyłane przez sieć. Informacje wcześniej zapisane w pamięci podręcznej mogą być często wykorzystywane ponownie. Zmniejsza to przepustowość i wymagania dotyczące przetwarzania danych przez serwer sieciowy, a także pomaga poprawić szybkość reakcji użytkowników sieci.

Nowoczesne przeglądarki internetowe używają wbudowanej pamięci podręcznej, ale niektórzy dostawcy usług internetowych lub organizacje również używają serwera proxy z funkcją buforowania. Jest to web cache, który jest wspólny dla wszystkich użytkowników tej sieci.

Wyszukiwarki internetowe często udostępniają również strony internetowe, które zaindeksowały, z ich pamięci podręcznej. Na przykład, Google udostępnia link "Cache" obok każdego wyniku wyszukiwania. Jest to przydatne, gdy strony internetowe są chwilowo niedostępne z serwera WWW.

Cachowanie z nierzetelnymi sieciami

Praca przelotowa jest powszechna w zawodnych sieciach (np. Ethernet LAN). Protokół używany do zapewnienia, że dane w pamięci podręcznej zapisu mają sens w przypadku zastosowania kilku pamięci podręcznych zapisu, jest w takim przypadku bardzo skomplikowany.

Na przykład, cache stron internetowych i cache systemów plików sieciowych po stronie klienta (jak te w NFS lub SMB) są zazwyczaj tylko do odczytu lub zapisu, aby zachować prosty i niezawodny protokół sieciowy.

Różnica między buforem a skrytką

Bufor i pamięć podręczna nie wykluczają się wzajemnie; są też często używane razem. Powód, dla którego są one używane, jest jednak inny. Bufor to miejsce w pamięci, które jest tradycyjnie używane, ponieważ instrukcje CPU nie mogą bezpośrednio adresować danych przechowywanych w urządzeniach peryferyjnych. Pamięć komputerowa jest używana jako pamięć pośrednia.

Ponadto taki bufor może być wykonalny, gdy duży blok danych jest montowany lub demontowany (zgodnie z wymogami urządzenia pamięci masowej) lub gdy dane mogą być dostarczane w innej kolejności niż ta, w której są wytwarzane. Również cały bufor danych jest zazwyczaj przesyłany sekwencyjnie (np. na dysk twardy), więc samo buforowanie czasami zwiększa wydajność transferu. Korzyści te są obecne nawet wtedy, gdy dane buforowane są zapisywane do bufora raz i odczytywane z niego raz.

Pamięć podręczna również zwiększa wydajność transferu. Część tego wzrostu wynika również z możliwości połączenia wielu małych transferów w jeden duży blok. Ale główny wzrost wydajności występuje, ponieważ istnieje duża szansa, że te same dane zostaną odczytane z cache'u kilka razy, lub że zapisane dane zostaną wkrótce odczytane. Jedynym celem cache'ów jest ograniczenie dostępu do bazowej wolniejszej pamięci masowej. Cache jest również zazwyczaj warstwą abstrakcyjną, która jest zaprojektowana tak, aby była niewidoczna z perspektywy sąsiednich warstw. W ten sposób aplikacje lub klienci mogą nie być świadomi istnienia pamięci podręcznej.

Pytania i odpowiedzi

P: Co to jest buforowanie?


O: Buforowanie to termin używany w informatyce, który odnosi się do praktyki przechowywania kopii danych, które są często używane, aby uzyskać do nich dostęp szybciej niż ponowne pobieranie lub przeliczanie oryginalnych danych.

P: Jak działa buforowanie?


O: Buforowanie działa poprzez wykorzystanie dwóch rodzajów nośników danych, jednego, który jest zazwyczaj dość duży, ale wolno dostępny, i drugiego, do którego dostęp jest znacznie szybszy, ale który jest ogólnie mniejszy. Ideą buforowania jest wykorzystanie szybkiego nośnika do przechowywania kopii danych, tak aby dostęp do oryginalnych danych trwał krócej lub był mniej kosztowny.

P: Co to jest bufor?


O: Bufor jest podobny do pamięci podręcznej, ponieważ przechowuje kopie danych w celu uzyskania szybszego dostępu, jednak w przypadku bufora klient uzyskujący dostęp do danych wie, że istnieje bufor i jest on zarządzany przez aplikację, podczas gdy w przypadku pamięci podręcznej klient nie musi wiedzieć, że istnieje pamięć podręczna.

P: Co oznacza lokalność odniesienia?


O: Lokalność odniesienia oznacza, że kiedy aplikacja uzyskuje dostęp do pewnych bloków danych strukturalnych, prawdopodobnie uzyska również dostęp do innych bloków, znajdujących się w pobliżu tych, do których uzyskała dostęp. Dzięki temu pamięć podręczna działa dobrze, ponieważ jest ona zazwyczaj niewielka w porównaniu do wszystkich dostępnych danych.

P: Dlaczego większe pamięci podręczne dłużej szukają wpisów?


O: Większe pamięci podręczne działają dłużej, ponieważ zawierają więcej zapisanych informacji i dlatego wymagają więcej czasu na wyszukiwanie. Są one również droższe, ponieważ wymagają więcej zasobów do przechowywania.

P: Jak lokalność może pomóc w lepszym funkcjonowaniu pamięci podręcznej?


O: Lokalność pomaga usprawnić działanie pamięci podręcznej, ponieważ gdy aplikacje mają dostęp do pewnych bloków danych strukturalnych, prawdopodobnie będą również potrzebować innych pobliskich bloków, które można szybko pobrać z pamięci podręcznej, zamiast pobierać je z innego miejsca lub ponownie obliczać.

AlegsaOnline.com - 2020 / 2023 - License CC3