Zależy to zarówno od procesora (nie tylko serii procesorów, może się różnić w zależności od modelu) i systemów operacyjnych, ale istnieją ogólne zasady. To, czy procesor jest wielordzeniowy, nie ma bezpośredniego wpływu na ten aspekt; ten sam proces może być wykonywany na wielu rdzeniach jednocześnie (jeśli jest wielowątkowy), a pamięć może być współdzielona między procesami, więc synchronizacja pamięci podręcznej jest nieunikniona bez względu na to, co dzieje się na przełączniku kontekstu.
Gdy procesor wyszukuje lokalizację pamięci w pamięci podręcznej, jeśli istnieje jednostka MMU , może użyć adresu fizycznego lub wirtualnego tej lokalizacji (czasami nawet kombinacji obu, ale tutaj tak naprawdę nie ma to znaczenia).
W przypadku adresów fizycznych nie ma znaczenia, który proces uzyskuje dostęp do adresu, zawartość można udostępniać. Dlatego nie ma potrzeby unieważniania zawartości pamięci podręcznej podczas przełączania kontekstu. Jeśli dwa procesy odwzorowują tę samą stronę fizyczną z różnymi atrybutami, jest to obsługiwane przez MMU (działając jako MPU (jednostka ochrony pamięci)). Minusem fizycznie adresowanej pamięci podręcznej jest to, że MMU musi znajdować się między procesorem a pamięcią podręczną, więc wyszukiwanie pamięci podręcznej jest wolne. Pamięci podręczne L1 prawie nigdy nie są fizycznie adresowane; buforami wyższego poziomu mogą być.
Ten sam adres wirtualny może oznaczać różne lokalizacje pamięci w różnych procesach. Dlatego przy wirtualnie zaadresowanej pamięci podręcznej procesor i system operacyjny muszą ze sobą współpracować, aby proces znalazł właściwą pamięć. Istnieje kilka popularnych technik. Kod przełączania kontekstu dostarczony przez system operacyjny może unieważnić całą pamięć podręczną; jest to poprawne, ale bardzo kosztowne. Niektóre architektury procesorów mają miejsce w linii pamięci podręcznej na ASID (identyfikator przestrzeni adresowej) sprzętową wersję identyfikatora procesu, również używaną przez MMU. To skutecznie oddziela wpisy pamięci podręcznej od różnych procesów i oznacza, że dwa procesy odwzorowujące tę samą stronę będą miały niespójne widoki tej samej strony fizycznej (zwykle istnieje specjalna wartość ASID wskazująca udostępnioną stronę, ale należy je usunąć, jeśli nie są mapowane na ten sam adres we wszystkich procesach, w których są mapowane). Jeśli system operacyjny dba o to, aby różne procesy wykorzystywały nie nakładające się przestrzenie adresowe (co nie pozwala na wykorzystanie pamięci wirtualnej, ale czasem można to zrobić), wiersze pamięci podręcznej pozostają ważne.
Większość procesorów posiadających MMU ma również TLB . TLB to pamięć podręczna mapowań z adresów wirtualnych na adresy fizyczne. TLB jest sprawdzany przed wyszukiwaniem w fizycznie zaadresowanych pamięciach podręcznych, aby w miarę możliwości szybko ustalić adres fizyczny; procesor może rozpocząć wyszukiwanie pamięci podręcznej przed zakończeniem wyszukiwania TLB, ponieważ często kandydujące linie pamięci podręcznej można zidentyfikować na podstawie środkowych bitów adresu, między bitami określającymi przesunięcie w linii bufora a bitami określającymi stronę. Praktycznie zaadresowane pamięci podręczne omijają TLB, jeśli występuje trafienie w pamięć podręczną, chociaż procesor może zainicjować wyszukiwanie TLB, gdy przeszukuje pamięć podręczną, w przypadku braku.
Samą TLB należy zarządzać podczas przełączania kontekstu. Jeśli wpisy TLB zawierają ASID, mogą pozostać na miejscu; system operacyjny musi wyczyścić wpisy TLB tylko wtedy, gdy ich identyfikator ASID zmienił znaczenie (np. ponieważ proces się zakończył). Jeśli wpisy TLB są globalne, należy je unieważnić podczas przełączania do innego kontekstu.
Pamięć podręczna jest zazwyczaj nieświadoma przełącznika kontekstu. Tylko sekwencja adresów, do których uzyskano dostęp, określa, które linie pamięci podręcznej są zastępowane.
Polityka wymiany jest zwykle heurystyczna zależna od producenta i konkretnej mikroarchitektury. Problem polega na tym, że heurystyka nie jest w stanie przewidzieć przyszłości, który adres, a zatem linia pamięci podręcznej, będą dostępne w następnej kolejności.
Heurystyka może być prosta jak LRU (ostatnio używana). Ale w przypadku nowoczesnych procesorów heurystyka jest bardziej skomplikowana.
Spójrz na Intel® 64 i IA-32 Architectures Software Developer's Manual Tom 3 Rozdział 11 wyjaśnia pamięć podręczną i mechanizmy kontroli pamięci podręcznej. AMD ma to w rozdziale 7 podręcznika programisty architektury AMD64, tom 2: Programowanie systemu . W przypadku procesorów opartych na ARM wydaje się, że pliki PDF są dostępne tylko dla zarejestrowanych klientów.
źródło