2016-04-15 11 views
0

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?

Antwort

0

Die Antwort gefunden. Eine Speicheranforderungsantwort von dem Speicherantwort-Fifo wird in jedem Zyklus ausgegeben, wenn der FIFO nicht leer ist und die Rückschreibstufe nicht angehalten wird. Die Abfrage der gelöschten Speicheranforderung wird in die einzelnen portierten Registerdateibänke geschrieben. SIMD-Ausführungseinheiten laden erforderliche Register für arithmetische Befehle von diesen Registerdateibanken, wenn sie benötigt werden. Informationen über den Operanden-Collector und diese Register-Dateibanken sind online verfügbar und von NVIDIA pantented.