2013-10-28 15 views
10

Jak działa pamięć podręczna L2 na procesorach GPU z architekturą Keplera pod względem lokalizacji referencji? Na przykład, jeśli wątek uzyskuje dostęp do adresu w pamięci globalnej, zakładając, że wartość tego adresu nie znajduje się w pamięci podręcznej L2, w jaki sposób buforowana jest wartość? Czy to czasowe? Czy są też inne wartości w pobliżu tego adresu wprowadzone do pamięci podręcznej L2 zbyt (przestrzenne)?Pamięć podręczna L2 w Kepler

Poniższe zdjęcie pochodzi z białej księgi firmy NVIDIA.

Picture is from NVIDIA whitepaper

+1

cache L2 został wprowadzony ze zdolności obliczeniowej 2.0 i wyższej i nadal być wspierane na architekturze Kepler. Zastosowana polityka buforowania to LRU (ostatnio używana), której głównym zamiarem było uniknięcie wąskiego gardła globalnej przepustowości pamięci. Przeczytałem to z książki "Projektowanie i rozwój aplikacji Cuda". Nie jestem pewien, czy to odpowie na twoje pytanie. –

+3

Pamięć podręczna L1 ma rozmiar pamięci podręcznej o długości 128 bajtów. Pamięć podręczna L2 ma wielkość pamięci podręcznej o wielkości 32 bajtów. Tak więc brak L2 wyzwala ładunek 32-bajtowy. Kepler zwykle nie ma włączonej L1 dla zwykłych globalnych obciążeń. –

Odpowiedz

10

cache L2 Unified został wprowadzony ze zdolności obliczeniowej 2.0 i wyższej i nadal być wspierane na architekturze Kepler. Zastosowana polityka buforowania to LRU (ostatnio używana), której głównym zamiarem było uniknięcie wąskiego gardła globalnej przepustowości pamięci. Aplikacja GPU może wyświetlać oba typy lokalizacji (czasowe i przestrzenne).

Ilekroć nastąpi próba odczytania określonej pamięci, wygląda w pamięci podręcznej L1 i L2, jeśli nie zostanie znaleziona, to załaduje 128 bajtów z linii pamięci podręcznej. To jest tryb domyślny. To samo można zrozumieć na podstawie poniższego diagramu, dlaczego 128-bitowy wzorzec dostępu daje dobry wynik.

enter image description here

+2

Pierwszy akapit powyższego postu odpowiada na pytanie. O drugim akapicie tej odpowiedzi, myślę, że jest to prawdziwe tylko wtedy, gdy (w trybie domyślnym) architektura urządzenia to Fermi. Jak wspomina @Robert Crovella w komentarzach, w Kepler brak pamięci podręcznej L2 powoduje obciążenie 32 bajtowe. Myślę również, że schemat jest mylący. Gdy SM jest niedostatecznie wykorzystany przez małą liczbę wątków, szersze żądania pamięci globalnej mogą nasycić przepustowość globalnej pamięci. Gdy SM staje się bardziej/bardziej zajęty większą liczbą wątków, przepustowość pamięci globalnej może być nasycona nawet przy ładunkach 4-bajtowych. – Farzad