Ich versuche, die Architektur einer GPU mit GPGPU-Sim zu lernen, und ich bin mit dem Fluss von Speicheroperationen verwirrt. Sagen wir, ich habe eine arithmetische Anweisung wie a = b + c. Bevor die Berechnung durchgeführt wird, sind Speicherladeoperationen für b und c erforderlich. Ladeanweisungen für diese werden an die Speicher gesendet. Zuerst werden die Cache-Tags überprüft.GPU-Speicher Read Instruction Flow, Operand Sammler
Bei einem Fehlschlag wird die Anforderung zu MSHR hinzugefügt und über das Verbindungsnetzwerk von den GPU-Kernen an den unteren Speicher gesendet. Wenn die Anfrage von dem Verbindungsnetzwerk zu dem Kern zurückkehrt, wird sie zu irgendeiner Art von Speicherantwort-FIFO hinzugefügt. Dann werden Cache-Zeilen gefüllt, indem diese Anfragen aus dem Antwort-Fifo ausgeworfen werden.
Im Falle eines Treffers sind Daten im Cache verfügbar.
In beiden Fällen sind unsere Daten für arithmetische Befehlseinheiten in Caches verfügbar. Ich weiß, dass der Operandensammler die erforderlichen Operanden zum Ausgeben von Warps sammelt, aber der Teil, der mich verwirrt, ist der Ort, an dem der Operandenkollektor diese Operanden sammelt? Pro Thread-Register? Wenn ja, wann erhalten diese Register benötigte Daten aus Caches?