Co to jest „koalescencja pamięci”?

16

Dowiedziałem się, że procesor graficzny ma coś, co nazywa się łączeniem pamięci. Po przeczytaniu tego nie byłem jasny na ten temat. Czy ma to jakikolwiek związek z równoległością poziomu pamięci.

Szukałem w Google, ale nie byłem w stanie uzyskać zadowalającej odpowiedzi.

Byłoby pomocne, gdyby ktoś dał bardziej kompleksowe, łatwe do zrozumienia wyjaśnienie.

Sai Kiran Grandhi
źródło
Równoległość na poziomie pamięci (MLP) to możliwość wykonywania wielu transakcji pamięciowych jednocześnie. W wielu architekturach przejawia się to jako zdolność do wykonywania operacji zarówno odczytu, jak i zapisu jednocześnie, chociaż zwykle istnieje możliwość wykonywania wielu odczytów jednocześnie. Rzadko wykonuje się wiele operacji zapisu jednocześnie, ze względu na ryzyko potencjalnych konfliktów (próba zapisania dwóch różnych wartości w tej samej lokalizacji). Zauważ, że nie jest to to samo, co wektoryzowane operacje pamięciowe, takie jak odczyt 4 oddzielnych, ale ciągłych 8-bitowych wartości w jednym 32-bitowym odczycie.
sai kiran grandhi

Odpowiedzi:

11

„Koalescencja” może również odnosić się do wzorców dostępu do pamięci koalescencji . W tym zastosowaniu koalescencja oznacza zapewnienie, że wątki będą działały jednocześnie, spróbuj uzyskać dostęp do pamięci, która jest w pobliżu. Wynika to zwykle z:

  • Pamięć jest zwykle pobierana w dużych blokach z pamięci RAM.
  • Niektóre jednostki przetwarzające będą próbowały przewidzieć przyszłe dostępy do pamięci i buforować z wyprzedzeniem, jednocześnie przetwarzając starsze części pamięci.
  • Pamięć jest buforowana w hierarchii kolejnych, ale coraz wolniejszych pamięci podręcznych.

Dlatego tworzenie programów, które mogą wykorzystywać przewidywalne wzorce pamięci, jest ważne. Jest to jeszcze ważniejsze w przypadku programu wątkowego, aby żądania pamięci nie przeskakiwały; w przeciwnym razie jednostka przetwarzająca będzie oczekiwać na spełnienie żądań pamięci.

Diagramy zainspirowane Wstępem do programowania równoległego: lekcja 2 GPU Sprzęt i wzorce komunikacji równoległej :

Poniżej: cztery wątki z jednolitym dostępem do pamięci. Czarny przerywany prostokąt reprezentuje pojedyncze 4-wyrazowe żądanie pamięci.

wprowadź opis zdjęcia tutaj

Dostęp do pamięci jest zamknięty i można go odzyskać w jednym przejściu / bloku (lub najmniejszej liczbie żądań).

Jeśli jednak zwiększymy „ krok ” w dostępie między wątkami, będzie to wymagało znacznie więcej dostępu do pamięci. Poniżej: cztery kolejne wątki z krokiem dwóch.

4 połączone wątki pamięci i 4 wątki z krokiem 2

Tutaj widać, że te 4 wątki wymagają 2 żądań bloku pamięci. Im mniejszy krok, tym lepiej. Im szerszy krok, tym więcej żądań jest potencjalnie wymaganych.

Oczywiście gorszy niż duży krok do pamięci jest losowy wzorzec dostępu do pamięci. Będzie to prawie niemożliwe do potokowania, buforowania lub przewidywania.

Źródła TikZ:

Realz Slaw
źródło
2
Wiele wątków może również uzyskać dostęp do tego samego elementu danych (nie tylko elementu w tej samej większej porcji), nieco podobnego (ale bardziej ogólnego niż) operacje SPLAT w architekturach SIMD. Jako procesory przepustowości tolerujące opóźnienia, procesory graficzne mogą pozwolić sobie na zwiększenie opóźnienia dostępu, jeśli pozwala to na zwiększenie efektywnej przepustowości.
Paul A. Clayton
Podany link jest uszkodzony.
Daniel Soutar
3

Wydaje mi się, że widzę dwa zastosowania słowa „koalescencji” w sieci, oba związane z pamięcią. Jednym z nich jest łączenie wolnych przydziałów pamięci , o czym wspomniano na stronie wikipedii, do której link znajduje się w pytaniu.


Łączone wolne alokacje pamięci

Podczas przydzielania pamięci czasami menedżer pamięci może mieć sytuację, w której zwolnione są dwa sąsiednie bloki pamięci. Połączenie ich uczyniłoby z nich jeden wolny blok pamięci - nazywa się to „koalescencją”. Przykład:

Począwszy od 4 przydzielonych bloków:

4 przydzielone bloki

Później jeden z nich zostaje uwolniony:

Teraz 1 bezpłatny blok

A później uwalnia się kolejna:

Teraz 2 sąsiednie wolne bloki

Dlaczego mają dwa sąsiednie wolne bloki? Łącząc je:

Łączenie uwolnionych bloków, teraz 2 przydzielone bloki, 1 uwolniony

Łączenie może nastąpić tak szybko, jak to możliwe, lub na przykład w śmieciarzu, gdy kolektor działa.

Źródła TikZ:

Realz Slaw
źródło
Myślę, że ta odpowiedź nie pasuje do tego, czego chcę. Koalescencja pamięci to czytanie ciągłych bloków pamięci, jak podano w innej odpowiedzi. Jeśli to możliwe, usuń tę odpowiedź i edytowany link
sai kiran grandhi,
@saikirangrandhi Zatrzymam odpowiedź w celach informacyjnych. Możesz zmienić / cofnąć edycję swojego pytania, jak chcesz; możesz po prostu nacisnąć „edytuj” pod pytaniem.
Realz Slaw