Czy powiedzenie, że pamięć podręczna jest specjalnym rodzajem bufora, jest poprawne? Oba wykonują podobne funkcje, ale czy jest jakaś zasadnicza różnica, której mi brakuje?
Czy powiedzenie, że pamięć podręczna jest specjalnym rodzajem bufora, jest poprawne? Oba wykonują podobne funkcje, ale czy jest jakaś zasadnicza różnica, której mi brakuje?
Odpowiedzi:
Z artykułu Wikipedii na temat buforów danych :
bufor to obszar fizycznej pamięci służący do tymczasowego przechowywania danych podczas przenoszenia ich z jednego miejsca do drugiego
A buforowe kończy się na rowerze i przytrzymanie przez każdy element danych, który jest przesyłany z jednego urządzenia do drugiego (na przykład przy użyciu bufora kołowego w przetwarzania audio). Bufor na to pozwala - „bufor” danych przed i za bieżącą pozycją w strumieniu danych.
Rzeczywiście istnieją pewne typowe aspekty bufora i pamięci podręcznej. Jednak pamięć podręczna w konwencjonalnym sensie zwykle nie przechowuje wszystkich danych, gdy są przenoszone z miejsca na miejsce (tj. Pamięć podręczna procesora).
Celem pamięci podręcznej jest przechowywanie danych w przejrzysty sposób, tak aby wystarczyło buforowanie wystarczającej ilości danych, aby pozostałe dane mogły zostać przesłane bez żadnych strat wydajności. W tym kontekście pamięć podręczna „pobiera” tylko niewielką ilość danych (w zależności od szybkości przesyłania, wielkości pamięci podręcznej itp.).
Główną różnicą jest to, że bufor ostatecznie pomieści wszystkie dane. I odwrotnie, pamięć podręczna mogła pomieścić wszystkie, niektóre lub żadną z danych (w zależności od projektu). Jednak dostęp do pamięci podręcznej jest uzyskiwany tak, jakbyś miał bezpośredni dostęp do danych - to, co dokładnie dostaje się do pamięci podręcznej, jest przezroczyste dla „użytkownika” pamięci podręcznej.
Różnica polega na interfejsie . Gdy używasz pamięci podręcznej w celu uzyskania dostępu do źródła danych, używasz go tak, jakby pamięć podręczna była źródłem danych - możesz uzyskać dostęp do każdej części źródła danych za pośrednictwem pamięci podręcznej, a pamięć podręczna określi, skąd pochodzą dane ( sama pamięć podręczna lub źródło). Sama pamięć podręczna określa, które części danych mają zostać wstępnie załadowane (zwykle tylko początek, ale czasami wszystkie), podczas gdy używany algorytm zastępowania pamięci podręcznej określa, co / kiedy rzeczy zostaną usunięte z pamięci podręcznej. Najlepszym tego przykładem jest system, oprócz samej pamięci podręcznej procesora , jest moduł preetcher / readahead. Oba ładują te części danych, które według nich najbardziej wykorzystasz do pamięci, i przywracają dysk twardy, jeśli coś nie jest buforowane.
I odwrotnie, nie można użyć bufora do natychmiastowego przeniesienia lokalizacji w strumieniu danych, chyba że nowa część została już przeniesiona do bufora. Aby to zrobić, konieczne jest przeniesienie bufora (biorąc pod uwagę, że nowa lokalizacja przekracza długość bufora), co skutecznie wymaga „ponownego uruchomienia” bufora z nowej lokalizacji. Najlepszym tego przykładem jest przesunięcie suwaka w filmie na Youtube.
Innym dobrym przykładem bufora jest odtwarzanie dźwięku w Winampie. Ponieważ pliki audio muszą być dekodowane przez procesor, może upłynąć trochę czasu od momentu wczytania utworu, do przetworzenia dźwięku do momentu przesłania go na kartę dźwiękową. Winamp buforuje niektóre dane audio, dzięki czemu jest już wystarczająco przetworzonych danych audio, aby uniknąć jakichkolwiek „blokad” (tj. Procesor zawsze przygotowuje dźwięk, który usłyszysz w ciągu kilkuset milisekund, nigdy nie jest on w czasie rzeczywistym ; to, co słyszysz, pochodzi z bufora, czyli tego, co procesor przygotowywał w przeszłości).
Bardziej trafne byłoby stwierdzenie, że pamięć podręczna jest szczególnym wzorcem użycia bufora, co oznacza wielokrotne użycie tych samych danych. Większość zastosowań „bufora” oznacza, że dane zostaną opróżnione lub odrzucone po jednym użyciu (choć niekoniecznie tak jest), natomiast „pamięć podręczna” oznacza, że dane zostaną ponownie wykorzystane wiele razy. Buforowanie często oznacza również, że dane są przechowywane, ponieważ są one jednocześnie wykorzystywane, chociaż niekoniecznie tak jest (jak w przypadku pobierania wstępnego itp.), Natomiast buforowanie oznacza, że dane są przechowywane do późniejszego wykorzystania.
Jednak zarówno implementacja, jak i użytkowanie nakładają się na siebie w dużym stopniu.
Jedną ważną różnicą między pamięcią podręczną a buforem jest:
Bufor jest częścią pamięci podstawowej. Są to struktury obecne i dostępne z pamięci podstawowej (RAM).
Z drugiej strony pamięć podręczna to osobna pamięć fizyczna w hierarchii pamięci komputera.
Bufor jest czasami nazywany również - pamięcią podręczną bufora. Ta nazwa podkreśla fakt, że użycie bufora jest podobne do użycia pamięci podręcznej, tzn. Do przechowywania danych. podczas gdy różnica leży w kontekście jego użycia.
Bufory służą do tymczasowego przechowywania danych, podczas gdy dane są przenoszone z jednego obiektu do drugiego. EX: kiedy wideo jest przenoszone z Internetu na nasz komputer, bufory wyświetlacza służą do przechowywania ramek wideo, które zostaną wyświetlone w następnej kolejności. (TO ZWIĘKSZA QoS, JAK WIDEO MUSI BYĆ PŁYNNIE URUCHOMIONE PO POMYŚLNYM PROCESIE BUFOROWANIA.) Np .: innym przykładem jest scenariusz, w którym zapisujemy dane do naszych plików. Nowo zapisane dane nie są natychmiast kopiowane do pamięci dodatkowej. Wprowadzone zmiany są przechowywane w buforze, a następnie zgodnie z zaprojektowanymi zasadami, zmiany są odzwierciedlane z powrotem w pliku w pamięci dodatkowej (dysku twardym).
Z drugiej strony pamięci podręczne są używane między pamięcią podstawową a procesorami, aby wypełnić lukę między szybkością wykonywania pamięci RAM a procesorem. Również najczęściej używane dane są przechowywane w pamięci podręcznej, aby ograniczyć dostęp do pamięci RAM.
Wspólna rzecz: oba są pośrednimi komponentami do przechowywania danych (oprogramowaniem lub sprzętem) pomiędzy obliczeniami a „główną” pamięcią.
Dla mnie różnica jest następująca:
Bufor:
Pamięć podręczna: