9 / 20 · Konzept
Ausgabestationäre und andere Datenflüsse
Vergleichen Sie Speicherung und Transport, indem Sie bestimmen, was im PE verbleibt.
Lektionen sind frei lesbar. Schreibe dich ein, um deinen Fortschritt zu speichern.
Fragen, welcher Wert lokal bleibt
Ein systolisches Array arbeitet parallel, während Operanden benachbarte Verarbeitungselemente durchlaufen. „Stationär“ bezeichnet einen Wert, der während einer Berechnung zur Wiederverwendung in der Nähe gehalten wird. Unterschiedliche Festlegungen verändern PE-Register, Teilsummenpfade und den Randablauf auch bei identischer mathematischer Operation.
Im ausgabestationären Entwurf dieses Kurses hält PE(i,j) die Teilsumme für C(i,j). A und B bewegen sich mit fortschreitendem k. Nach dem Eintreffen aller K Terme wird das Ergebnis eingesammelt; Löschen beginnt eine neue Ausgabekachel. A-Werte werden entlang einer Zeile, B-Werte entlang einer Spalte wiederverwendet. Im 2×2-Beispiel trägt A(0,0)=1 sowohl zu C(0,0) als auch zu C(0,1) bei.
Gewichtsstationäre Entwürfe laden Gewichte wie B vorab in PEs und verwenden sie für eintreffende Aktivierungen wieder. Teilsummen müssen wandern oder anderswo gesammelt werden. Das Umbenennen von Anschlüssen verwandelt das OS-Steuerwerk nicht in WS: gespeicherter Wert, Vorladefolge und Ergebnispfad ändern sich vollständig. Eingabestationäre Entwürfe halten Aktivierungen zur Wiederverwendung über Gewichte oder Ausgabeberechnungen hinweg. Wir vergleichen diese Idee, implementieren hier aber kein IS-Array.
| Datenfluss | Gehaltener Wert | Zu untersuchender Aufwand |
|---|---|---|
| OS | Ausgabeteilsumme | Breite Akkumulatoren und Ergebnissammlung |
| WS | Gewicht | Vorladen und Transport/Speicherung von Teilsummen |
| IS | Aktivierung | Gewichtszufuhr und Kombination von Ausgabesummen |
Drei Messungen des Datenverkehrs getrennt halten
Betrachten Sie zwei 2×2-Produkte mit demselben B. Unser OS-Randmodell führt pro Auftrag vier A- und vier B-Werte zu: sechzehn Operandenwerte für zwei Aufträge. Ein lokaler B-Puffer kann das erneute Lesen von B aus dem externen Speicher für den zweiten Auftrag vermeiden und trotzdem dessen vier Randtokens liefern. Die Wiederverwendung vorgeladener Gewichte bietet einen anderen Kompromiss und benötigt einen anderen Teilsummenpfad.
Externe Lesezugriffe, Einspeisungen am Rand und PE-zu-PE-Übertragungen sind getrennte Messgrößen. Die Gemmini-README der UC Berkeley liefert ein Primärquellenbeispiel für konfigurierbare OS- und WS-Datenflüsse. Unser Lernarray besitzt eigene Verhaltensregeln und bildet weder Gemminis Implementierung noch seine Befehlsschnittstelle nach.
Bestimmen Sie bei einer Entwurfsprüfung, was lokal bleibt, wo Summen akkumulieren und welche Werte jede Grenze passieren. Wiederverwendung allein garantiert weder ausreichende Speicheranschlüsse noch dauerhaften Durchsatz.
Selbst ausprobieren
Zwei 2×2-Aufträge teilen B, das in einem lokalen Puffer gehalten wird. A wird nicht wiederverwendet. Wie viele externe Operandenlesezugriffe und OS-Randeinspeisungen sind erforderlich?
Erklärung lesen
Externe Lesezugriffe ergeben insgesamt 12 Werte: zwei A-Matrizen mit je vier und eine B-Matrix mit vier. Randeinspeisungen ergeben insgesamt 16 Werte: vier A plus vier B pro Auftrag. Ergebnisschreibzugriffe und interne Weitergabe sind ausgeschlossen.