Jak działa TLB i pamięć podręczna danych?

15

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ą.

Postać

audiFanatic
źródło
To pytanie jest za długie. Czy możesz wyciągnąć z tego wąskie, konkretne pytanie, a następnie edytować je, aby przyciąć je do jednego konkretnego pytania? Część zadawania dobrego pytania polega na dokładnym przemyśleniu, co stanowi minimalną istotę tego, co musisz wiedzieć, i uwzględnieniu tylko tego, co jest istotne i istotne dla tego pytania. Na przykład, jeśli masz konkretne pytanie na temat działania TLB, zamiast zrzucić to wszystko, co powiesz na próbę sformułowania jednego wąsko spreparowanego pytania na temat TLB?
DW
W porządku, moim zamiarem było pokazanie tego, co już rozumiem na ten temat, ponieważ większość osób korzystających z wymiany stosów nie lubi odpowiadać na pytania bez pytania (pytającego zrozumiale). Chyba nie mogę uszczęśliwić wszystkich. Może po prostu edytuję to z pogrubionym pytaniem czy coś takiego.
audiFanatic,
@DW czy to jest lepsze?
audiFanatic,
audiFanatic, mogłeś źle zinterpretować lub źle zrozumieć moje komentarze i sposób myślenia „pokaż trochę wysiłku”. Sugeruję, abyś zidentyfikował wąskie pytanie - coś w rodzaju „jak działa TLB? Nie do końca rozumiem” - a następnie ponownie skoncentrowałeś się wyłącznie na tym pytaniu. Tak, musisz podjąć poważny wysiłek, aby odpowiedzieć na to pytanie , i powinieneś wykazać wysiłek, jaki zrobiłeś, aby odpowiedzieć na to konkretne pytanie , ale wysiłek na niezwiązany temat nie jest istotny (np. Fakt, że starałeś się postęp w zadaniu domowym, które sprawiły, że pomyślałeś o tym pytaniu).
DW
Pozwól, że pomogę ci zrozumieć tło tego. Chcemy stworzyć wysokiej jakości archiwum pytań i odpowiedzi, które będą pomocne dla innych (nie tylko dla Ciebie). Najlepszą rzeczą, jaką możesz zrobić, aby pomóc, jest wyodrębnienie konkretnego, wąskiego, dobrze postawionego pytania i skoncentrowanie go na jednym pytaniu. Rozległe, otwarte pytanie, które nie jest zbytnio skoncentrowane, jest mniej prawdopodobne, że będzie pomocne dla innych, którzy mogą się na niego natknąć (a czytelnikom trudniej jest dotrzeć do sedna i zrozumieć, co jest sednem twojego pytania, więc masz mniejsze szanse na uzyskanie dobrej odpowiedzi).
DW

Odpowiedzi:

23

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ę).

DW
źródło
1
Dziękuję Ci! To wszystko wyjaśniło. Spędziłem dużo czasu na badaniu tego (kilka dni), po prostu nie mogłem znaleźć jasnej, zwięzłej informacji, która wiązałaby wszystko razem (a moje zamieszanie prawdopodobnie nie pomogło mi w wyszukiwaniu). Analogicznie czułem się, jakbym był w aptece i szukał lekarstwa na jakąś niezdiagnozowaną dolegliwość; używając jedynie symptomów jako przewodnika.
audiFanatic
Powiedziawszy to, mam jeszcze jedno pytanie. Jeśli są to pamięci podręczne, dlaczego książka oddziela dane i części znaczników pamięci podręcznej (do diabła, część danych jest nawet wyższa niż znacznik i poprawna część bitowa)? Wygląda na to, że pamięć podręczna służy jedynie do sprawdzania tagów (tak jakby nie przechowywała danych). Czy ten blok danych w prawym dolnym rogu obrazka jest częścią pamięci podręcznej, czy jest to część pamięci głównej, czy co?
audiFanatic,
1
V.P.V.+1P.+1V.+2)P.+2)V.+4095P.+4095
jajaja
Ok świetnie. Dzięki. Myślę, że to zamieszanie najbardziej mnie dezorientowało.
audiFanatic