2012-05-04 23 views
19

Czy ktoś mógłby wyjaśnić różnicę między brakującą pamięcią podręczną TLB (Translation lookaside buffer) a pamięcią podręczną?TLB chybia vs chybienie się cache?

Wydaje mi się, że dowiedziałem się, że TLB odnosi się do jakiegoś adresu pamięci wirtualnej, ale nie bardzo wiedziałem, co to właściwie oznacza?

Rozumiem brak pamięci podręcznej, gdy blok pamięci (rozmiar linii pamięci podręcznej) jest ładowany do pamięci podręcznej (L3?) I jeśli wymagany adres nie jest przechowywany w bieżących liniach pamięci podręcznej - jest to pamięć podręczna chybienia .

+1

Zrozumieć stronicowania http://stackoverflow.com/a/18431262/895245 i zobacz sekcję TLB. –

Odpowiedz

26

Cóż, wszystkie dzisiejsze nowoczesne systemy operacyjne używają czegoś zwanego pamięcią wirtualną. Każdy adres generowany przez CPU jest wirtualny. Istnieją tabele stron, które mapują takie wirtualne adresy na adresy fizyczne. A TLB to po prostu pamięć podręczna wpisów w tabeli stron.

Z drugiej strony L1, L2, L3 buforuje zawartość pamięci podręcznej cache.

Opóźnienie TLB występuje wtedy, gdy odwzorowanie virtual memory address => physical memory address dla żądanego wirtualnego adresu CPU nie jest w TLB. Następnie ten wpis musi zostać pobrany z tabeli stron do TLB.

Brak pamięci podręcznej występuje, gdy procesor wymaga czegoś, czego nie ma w pamięci podręcznej. Dane są następnie wyszukiwane w pamięci głównej (RAM). Jeśli go tam nie ma, dane muszą zostać pobrane z pamięci dodatkowej (twardego dysku).

+0

Jaki jest cel adresu pamięci wirtualnej i do czego faktycznie się odnosi, wciąż pamięć główna (RAM)? – mezamorphic

+5

Cóż, wcześniejsze 32-bitowe procesory używane do generowania adresów 32-bitowych ~ 4 GB adresowalnej pamięci. Ale ilość pamięci RAM była często mniejsza niż 4 GB. Teraz, jeśli masz 1 GB pamięci RAM, nie możesz uruchomić programu wymagającego więcej niż 1 GB adresowalnej pamięci. Dlaczego więc nie oszukać programu, aby mieć 4 GB pamięci RAM? Gdzie tylko ułamek danych programu znajduje się w pamięci RAM, a reszta w dysku twardym. Tak właśnie działa pamięć wirtualna. Możesz przeczytać o tym wszystkim w [artykuł Wikipedii] (http://en.wikipedia.org/wiki/Virtual_memory). Obecne 64-bitowe procesory korzystają również z pamięci wirtualnej. Tylko długość adresu wirtualnego wynosi teraz 48 bitów. – Hindol

2

Następująca sekwencja po wczytaniu pierwszego adresu instrukcji (tj. Adresu wirtualnego) w komputerze sprawia, że ​​koncepcja bufora TLB i bufora podręcznego jest bardzo jasna.

Pierwsza instrukcja • Dostęp do pierwszej instrukcji

  • podejmuje PC Począwszy
  • dostęp iTLBwith VPN wyodrębnione z PC: iTLBmiss
  • handler
  • Invoke iTLBmiss adresowej
  • Oblicz PTE
  • Jeśli PTE są buforowane w danych L1 i pamięciach podręcznych L2, sprawdź je za pomocą adresu PTE: będziesz tęsknił również za
  • Dostęp tabela strona w pamięci głównej: PTE jest nieprawidłowy: strona błędu
  • Wywołanie obsługi strona winy
  • Przeznaczyć strona ramki, przeczytaj stronę z dysku, zaktualizuj PTE, PTE obciążenia w iTLB, ponownie sprowadzić • Teraz masz adres fizyczny

  • Dostęp ICACHE: przegap

  • Wysłać napełniać prośba o wyższych poziomach: pominięcia wszędzie
  • Wyślij zapytanie do kontrolera pamięci (North bridge)
  • dostęp do pamięci głównej
  • Czytaj linia cache
  • napełniać wszystkie poziomy pamięci podręcznej jako linia cache powraca do procesora
  • wyodrębnić odpowiednie polecenie z wiersza pamięci podręcznej z bloku korekcji • Jest to najdłuższy możliwy opóźnienia w dostęp instrukcja/dane

źródło https://software.intel.com/en-us/articles/recap-virtual-memory-and-cache

0

Jako how obu procesów są wymienione. Na uwadze wydajności, chybienie pamięci podręcznej niekoniecznie zatrzymuje procesor. Niewielką liczbę błędów w pamięci podręcznej można tolerować za pomocą algorytmicznych technik poprzedzających pobieranie. Brak TLB powoduje jednak zatrzymanie procesora, dopóki TLB nie zostanie zaktualizowany nowym adresem. Innymi słowy, prefetching może maskować chybienie pamięci podręcznej, ale nie brak TLB.

+0

To nie jest ściśle zgodne z prawdą. Przy wykonywaniu poza kolejnością wykonania i chodzeniu po stole ze strony sprzętowej (x86, ARM, niektóre MIPS Release 5, itp.) Brak TLB może nie opóźniać procesora. Ponadto artykuły naukowe proponują sprzętowe pobieranie wstępne dla TLB. Procesor mógłby również wstępnie pobierać wpisy TLB za pomocą zwykłej instrukcji pobierania z pamięci. –