Ich habe erfahren, dass die Grafikverarbeitungseinheit so etwas wie Memory Coalescing hat. Als ich darüber las, war mir das Thema nicht klar. Steht dies in irgendeiner Weise im Zusammenhang mit der Parallelität der Speicherebenen?
Ich habe in Google gesucht, konnte jedoch keine zufriedenstellende Antwort erhalten.
Es wäre hilfreich, wenn jemand eine umfassendere, leicht verständliche Erklärung geben würde.
terminology
reference-request
computer-architecture
memory-management
Sai Kiran Grandhi
quelle
quelle
Antworten:
"Zusammenführen" kann sich auch auf das Zusammenführen von Speicherzugriffsmustern beziehen . Bei dieser Verwendung wird unter Koaleszenz verstanden, dass sichergestellt wird, dass Threads gleichzeitig ausgeführt werden, und versucht wird, auf den Speicher in der Nähe zuzugreifen. Dies liegt normalerweise an:
Daher ist es wichtig, Programme zu erstellen, die vorhersagbare Speichermuster verwenden können. Noch wichtiger ist es bei einem Thread-Programm, damit die Speicheranforderungen nicht von vorne beginnen. Andernfalls wartet die Verarbeitungseinheit auf die Erfüllung von Speicheranforderungen.
Von der Einführung in die parallele Programmierung inspirierte Diagramme : Lektion 2 GPU-Hardware und parallele Kommunikationsmuster :
Unten: Vier Threads mit einheitlichem Speicherzugriff. Das schwarz gestrichelte Rechteck repräsentiert eine einzelne 4-Wort-Speicheranforderung.
Die Speicherzugriffe sind kurz und können in einem Durchgang / Block (oder der geringsten Anzahl von Anforderungen) abgerufen werden.
Wenn wir jedoch den " Schritt " des Zugriffs zwischen den Threads erhöhen , sind viel mehr Speicherzugriffe erforderlich. Unten: vier weitere Fäden mit zwei Schritten.
Hier sehen Sie, dass diese 4 Threads 2 Speicherblockanforderungen erfordern. Je kleiner der Schritt, desto besser. Je breiter der Schritt, desto mehr Anforderungen sind möglicherweise erforderlich.
Schlimmer als ein großer Speicherschritt ist natürlich ein zufälliges Speicherzugriffsmuster. Es wird nahezu unmöglich sein, diese zu pipelinen, zwischenzuspeichern oder vorherzusagen.
TikZ-Quellen:
quelle
Ich denke, ich sehe zwei Verwendungen des Wortes "Verschmelzen" im Netz, die beide mit dem Gedächtnis zu tun haben. Eine davon ist das Zusammenführen von freigegebenen Speicherzuordnungen , auf die auf der in der Frage verlinkten Wikipedia-Seite verwiesen wird.
Freigegebene Speicherzuordnungen zusammenführen
Beim Zuweisen von Speicher kann es vorkommen, dass der Speichermanager zwei benachbarte Speicherblöcke freigibt. Wenn Sie diese kombinieren, werden sie zu einem einzigen freigegebenen Speicherblock. Dies wird als "Zusammenführen" bezeichnet. Beispiel:
Beginnend mit 4 zugewiesenen Blöcken:
Später wird einer von ihnen befreit:
Und später wird ein anderer befreit:
Warum gibt es nun zwei benachbarte freie Blöcke? Sie verbinden:
Koaleszenz kann auftreten, sobald dies möglich ist, oder beispielsweise in einem Abfallsammler, wenn der Sammler ausgeführt wird.
TikZ-Quellen:
quelle