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.
terminology
reference-request
computer-architecture
memory-management
Sai Kiran Grandhi
źródło
źródło
Odpowiedzi:
„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:
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.
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.
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:
źródło
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:
Później jeden z nich zostaje uwolniony:
A później uwalnia się kolejna:
Dlaczego mają dwa sąsiednie wolne bloki? Łącząc je:
Łą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:
źródło