Próbuję przygotować się do egzaminu i zdałem sobie sprawę, że nie jestem pewien, jak działa TLB i pamięć podręczna danych.
Rozumiem, że TLB jest zasadniczo pamięcią podręczną ostatnio używanych adresów fizycznych. Jednak patrzyłem na diagram w moim podręczniku (pokazany poniżej) i nie rozumiem, co się w nim dzieje. Nagle dzieli fizyczny adres i, jak sądzę, używa go do indeksowania pamięci podręcznej. Ale dlaczego pokazuje osobno pamięć podręczną i dane? i dlaczego przesunięcie bajtu zostało zmienne? Jestem pewien, że pamięć podręczna również ma przechowywać dane. Nie sądzę, aby jego jedynym celem było ustalenie, czy jest w nim trafienie, czy nie.
Z góry przepraszam za swoją ignorancję, ale książka ledwo obejmuje TLB (to coś więcej niż strona) i nie radzi sobie zbyt dobrze z wyjaśnianiem związku między TLB a pamięcią podręczną.
źródło
Odpowiedzi:
Myślę, że widzę twoje zamieszanie. TLB i pamięć podręczna danych to dwa osobne mechanizmy. Oba są swego rodzaju pamięciami podręcznymi, ale przechowują różne rzeczy w pamięci podręcznej:
Dlatego TLB działa jako dedykowana pamięć podręczna dla tego wyszukiwania. TLB ma kilka wpisów TLB, przy czym każdy wpis TLB zawiera zarówno adres wirtualny, jak i odpowiadający mu adres fizyczny.
TLB pozwala procesorowi bardzo szybko konwertować adresy wirtualne na adresy fizyczne. Jeśli instrukcja poprosi procesor o wykonanie operacji pamięci na adresie (wirtualnym), procesor najpierw sprawdza, czy TLB zawiera wpis dla tego adresu wirtualnego. Jeśli tak, to jest to nazywane „trafieniem w pamięć podręczną” dla wyszukiwania TLB, a ponieważ wpis TLB zawiera także przetłumaczony adres fizyczny, procesor natychmiast wie, jakiego adresu fizycznego użyć. Jeśli nie, oznacza to brak pamięci podręcznej dla wyszukiwania TLB, a procesor musi mozolnie dokonywać konwersji wirtualnej na fizyczną, przechodząc po tablicy stron. (Po zakończeniu tej konwersji dodaje wpis do TLB, aby przyszłe konwersje tego wirtualnego adresu następowały znacznie szybciej).
Pamięć podręczna danych to pamięć podręczna dla zawartości pamięci. Pamięć główna pozwala określić adres fizyczny i odczytać wartość pod tym adresem fizycznym. Jednak pamięć główna jest wolna. Gdybyśmy musieli przejść do pamięci głównej za każdym razem, gdy chcieliśmy wykonać jakąkolwiek operację pamięci, nasz procesor byłby bardzo wolny.
Dlatego bufor danych działa jako dedykowana pamięć podręczna dla odczytów pamięci. Pamięć podręczna danych ma pewne wpisy pamięci podręcznej, przy czym każda pozycja pamięci podręcznej zawiera adres fizyczny i wartość pamięci pod tym adresem.
Pamięć podręczna danych umożliwia procesorowi bardzo szybki odczyt z pamięci. Gdy procesor chce odczytać pamięć pod jakimś (fizycznym) adresem, najpierw sprawdza pamięć podręczną danych, aby sprawdzić, czy zawiera wpis pamięci podręcznej dla tego adresu. Jeśli tak, jest to nazywane „trafieniem pamięci podręcznej” (w pamięci podręcznej danych), a procesor może natychmiast użyć wartości danych zapisanych w tym wpisie pamięci podręcznej, bez konieczności kontaktowania się z pamięcią główną. Jeśli nie, oznacza to „brak pamięci podręcznej” (w przypadku pamięci podręcznej danych), a procesor musi przejść do pamięci głównej. (Po tym, jak procesor otrzyma wartość pod tym adresem z pamięci głównej, dodaje pozycję pamięci podręcznej do pamięci podręcznej danych, aby próby odczytu tego samego adresu trafiły do pamięci podręcznej danych).
Oba są pamięciami podręcznymi, ale służą innym celom. Procesor używa obu dla każdej operacji pamięci: najpierw używa TLB do konwersji z adresu wirtualnego na adres fizyczny, a następnie sprawdza pamięć podręczną danych, aby przyspieszyć proces odczytu wartości przechowywanej w pamięci pod tym adresem.
Aby uzyskać więcej informacji, możesz przeczytać artykuł w Wikipedii na temat TLB . Jeśli przeprowadzasz wyszukiwanie, na TLB i pamięciach danych dostępnych jest wiele innych informacji. Sugeruję wyszukiwanie „TLB” i „L1 cache” lub „L2 cache” (te ostatnie 2 są rodzajem buforów danych).
(Do wglądu w przyszłości: spodziewamy się, że przeprowadzisz badania swojego pytania przed zadaniem tutaj i sprawdzisz standardowe źródła internetowe. Jeśli odpowiedź można znaleźć w Wikipedii, nie zrobiłeś wystarczająco dużo badań na własną rękę. Być może powodzenia, jeśli sprawdziłeś źródła internetowe w celu uzyskania informacji na temat TLB przed zapytaniem tutaj. Zobacz także Ile wysiłku badawczego oczekuje się od użytkowników stosu przepełnienia stosu? Więc skorzystaj z okazji, aby wykorzystać to jako lekcję, w jaki sposób możesz ulepszyć własne umiejętności badawcze - coś, co będzie dla ciebie cenne przez całą karierę).
źródło