Systolisches Array
Im parallel Computerarchitekturen, a systolisches Array ist homogen Netzwerk von eng gekoppelten Datenverarbeitungseinheiten (Dpus) genannt Zellen oder Knoten. Jeder Knoten oder jeder DPU berechnet unabhängig ein Teilergebnis in Abhängigkeit von den von seinen stromaufwärtigen Nachbarn empfangenen Daten, speichert das Ergebnis in sich selbst und gibt es stromabwärts. Systolische Arrays wurden zuerst in verwendet Koloss, der ein früher Computer war, der verwendet wurde, um Deutsch zu brechen Lorenz Chiffren während Zweiter Weltkrieg.[1] Aufgrund der klassifizierten Natur von Colossus wurden sie unabhängig erfunden oder wiederentdeckt von H. T. Kung und Charles Leiser Wer beschrieben Arrays für viele dichte lineare Algebraberechnungen (Matrixprodukt, Lösung von Systemen von lineare Gleichungen, LU -Zersetzungusw.) für gebänderte Matrizen. Frühe Anwendungen umfassen das Computer Größte gemeinsame Divisoren von Ganzzahlen und Polynomen.[2] Sie werden manchmal als klassifiziert als Single-Data mit mehreren Instruktionen (Misd) Architekturen unter Flynns TaxonomieAber diese Klassifizierung ist fraglich, da ein starkes Argument vorgenommen werden kann, um systolische Arrays von einer der vier Kategorien von Flynn zu unterscheiden: Sisd, Simd, Misd, Mimd, wie später in diesem Artikel erläutert.
Die parallele Eingabe Daten fließt durch ein Netzwerk von fest verdrahteten Prozessor Knoten, die kombinieren, verarbeiten, verschmelzen oder Sortieren Die Eingabedaten in ein abgeleitetes Ergebnis. Weil die Welle-Die gleiche Ausbreitung von Daten durch ein systolisches Array ähnelt dem der Impuls des menschlichen Kreislaufsystems der Name systolisch wurde aus medizinischer Terminologie geprägt. Der Name wird abgeleitet von Systole als Analogie zum regelmäßigen Pumpen von Blut im Herzen.
Anwendungen
Systolische Arrays sind oft fest verdraht parallel Integration, Faltung, Korrelation, Matrix-Multiplikation oder Datensortierungsaufgaben. Sie werden auch für verwendet Dynamische Programmierung Algorithmen, die in DNA und Protein verwendet werden Sequenzanalyse.
Die Architektur
Ein systolisches Array besteht typischerweise aus einem großen monolithisch Netzwerk des primitiven Computers Knoten Dies kann fest verdrahtet oder software für eine bestimmte Anwendung konfiguriert werden. Die Knoten sind normalerweise fest und identisch, während die Verbindung programmierbar ist. Desto allgemeiner Welle vorne Im Gegensatz dazu verwenden Prozessoren hoch entwickelte und individuell programmierbare Knoten, die je nach Arraygröße und Designparametern monolithisch sein können oder nicht. Die andere Unterscheidung ist, dass systolische Arrays auf synchron Datenübertragungen während Wellenfront arbeitet asynchron.
Im Gegensatz zu den häufigeren Von Neumann Architektur, wo die Programmausführung ein Skript mit Anweisungen folgt, die in gemeinsamem Speicher gespeichert sind, angesprochen und unter der Kontrolle des Zentralprozessor's Programm zähler (PC), die einzelnen Knoten in einem systolischen Array werden durch die Ankunft neuer Daten ausgelöst und verarbeiten die Daten immer genauso. Die tatsächliche Verarbeitung innerhalb jedes Knotens kann fest verkabelt oder blockiert sein mikro codiertIn diesem Fall kann die gemeinsame Knotenpersönlichkeit programmierbar blockieren.
Das systolische Array-Paradigma mit Datenstreams, die von Daten gesteuert werden Zähler, ist das Gegenstück der von Neumann-Architektur mit Anweisungsstream, die von einem Programmzähler angetrieben wird. Da ein systolisches Array normalerweise mehrere Datenströme sendet und empfängt und mehrere Datenzähler erforderlich sind, um diese Datenströme zu generieren Datenparallelität.
Ziele und Vorteile
Ein wesentlicher Vorteil von systolischen Arrays besteht darin, dass alle Operandendaten und teilweise Ergebnisse innerhalb (Durchgang) des Prozessorarrays gespeichert werden. Während jeder Operation müssen Sie nicht auf externe Busse, Hauptspeicher oder interne Caches zugreifen, wie dies bei von Neumann oder der Fall ist Harvard Sequentielle Maschinen. Die sequentiellen Grenzen auf parallel Leistung diktiert von Amdahls Gesetz Bewerben Sie sich auch nicht auf die gleiche Weise, da Datenabhängigkeiten implizit vom programmierbaren gehandhabt werden Knoten Interconnect und es gibt keine sequentiellen Schritte bei der Verwaltung des hoch parallelen Datenflusss.
Systolische Arrays sind daher äußerst gut in der künstlichen Intelligenz, der Bildverarbeitung, der Mustererkennung, der Computersicht und anderen Aufgaben, die tierische Gehirne besonders gut tun. Wellenfrontprozessoren im Allgemeinen können auch sehr gut im maschinellen Lernen sein, indem sie selbstkonfigurierte neuronale Netze in Hardware implementieren.
Klassifizierungs Kontroverse
Während systolische Arrays offiziell als klassifiziert werden als MisdIhre Klassifizierung ist etwas problematisch. Da die Eingabe typischerweise ein Vektor unabhängiger Werte ist, ist das systolische Array definitiv nicht Sisd. Da diese Eingang Werte werden zusammengeführt und in die Ergebnisse zusammengefasst und behalten ihre nicht bei Unabhängigkeit wie sie in einem Simd Vektor -Verarbeitungseinheit, die Array kann nicht als solche klassifiziert werden. Folglich kann das Array nicht als klassifiziert werden Mimd entweder, weil MIMD als bloße Sammlung kleinerer SISD und angesehen werden kann und Simd Maschinen.
Schließlich, weil die Daten Schwarm wird transformiert, wenn es durch das Array geht von Knoten Zum Knoten arbeiten die mehreren Knoten nicht auf denselben Daten, wodurch die MISD -Klassifizierung a Fehlbezeichnung. Der andere Grund, warum sich ein systolisches Array nicht als qualifizieren sollte Misd ist das gleich sIngle dATA -Wert, obwohl man argumentieren könnte, dass ein bestimmter Eingabevektor ein einzelnes Datenelement ist.
Trotz aller oben genannten Parallele Computing und in technischen Klassen. Wenn das Array von außen als betrachtet wird Atomic es sollte vielleicht als klassifiziert werden als Sfmudmer = Einzelfunktion, mehrere Daten, zusammengeführte Ergebnisse (en).
Systolische Arrays verwenden einen vordefinierten Rechenflussdiagramm, der ihre Knoten verbindet. Kahn -Prozessnetzwerke Verwenden Sie einen ähnlichen Flussdiagramm, unterscheiden sich jedoch durch die Knoten, die im systolischen Array in der Sperre arbeiten: In einem Kahn-Netzwerk befinden sich FIFO-Warteschlangen zwischen jedem Knoten.
Detaillierte Beschreibung
Ein systolisches Array besteht aus matrixähnlichen Reihen von Datenverarbeitungseinheiten Zellen genannt. Datenverarbeitungseinheiten (DPUs) sind ähnlich wie Zentrale Verarbeitungseinheiten (CPUs) (außer dem üblichen Mangel an a Programm zähler,[3] Da der Betrieb ist Transport ausgelöst, d.h. durch Ankunft eines Datenobjekts). Jede Zelle teilt die Informationen unmittelbar nach der Verarbeitung mit ihren Nachbarn. Das systolische Array ist oft rechteckig, wo die Daten über das Array zwischen dem Nachbarn fließen DPusoft mit unterschiedlichen Daten, die in verschiedene Richtungen fließen. Die Datenströme, die die Ports des Arrays eingeben und verlassen, werden durch automatische Sequenzierungsspeichereinheiten ASMs generiert. Jeder ASM enthält Daten Zähler. Im eingebettete Systeme Ein Datenstrom kann auch von und/oder Ausgabe in eine externe Quelle eingegeben werden.
Ein Beispiel für einen systolischen Algorithmus könnte für die ausgelegt sein für Matrix-Multiplikation. Einer Matrix wird jeweils in einer Reihe von der Oberseite des Arrays gefüttert und in der Array geleitet. Die andere Matrix wird jeweils von der linken Seite des Arrays in einer Spalte gefüttert und geht von links nach rechts. Dummy -Werte werden dann eingegeben, bis jeder Prozessor eine ganze Reihe und eine ganze Spalte gesehen hat. Zu diesem Zeitpunkt wird das Ergebnis der Multiplikation im Array gespeichert und kann jetzt jeweils eine Reihe oder eine Spalte ausgeben, die nach unten oder über das Array fließt.[4]
Systolische Arrays sind Arrays von DPus die mit einer kleinen Anzahl von dpus am nächsten Nachbarn in einer meshähnlichen Topologie verbunden sind. DPUs führen eine Abfolge von Operationen für Daten aus, die zwischen ihnen fließen. Da die traditionellen systolischen Array -Synthesemethoden von algebraischen Algorithmen praktiziert wurden, können nur einheitliche Arrays mit nur linearen Rohren erhalten werden, so dass die Architekturen in allen DPUs gleich sind. Die Folge ist, dass nur Anwendungen mit regelmäßigen Datenabhängigkeiten in klassischen systolischen Arrays implementiert werden können. Wie Simd Maschinen, systolische Arrays mit Takten in "Lock-Step" mit jedem Prozessor, der alternatives Rechenumschaffungsunternehmen | Phasen kommunizieren. Aber systolische Arrays mit asynchronem Handschlag zwischen DPUs werden genannt Wellenfront -Arrays. Eine bekannte systolische Array ist die Carnegie Mellon University's iWarp Prozessor, der von Intel hergestellt wurde. Ein IWARP -System verfügt über einen linearen Array -Prozessor, der durch Datenbusse in beide Richtungen in Verbindung gebracht wird.
Geschichte
Systolische Arrays (auch bekannt als Wellenfrontprozessoren), wurden zuerst von beschrieben von H. T. Kung und Charles E. Leiserson, der das erste Papier veröffentlichte, das 1979 systolische Arrays beschreibt. Die erste Maschine, von der bekannt ist, dass sie eine ähnliche Technik verwendet hat, war jedoch die Colossus Mark II 1944.
Anwendungsbeispiel
- Polynombewertung
Horners Regel Zur Bewertung eines Polynoms ist:
Ein lineares systolisches Array, in dem die Prozessoren paarweise angeordnet sind: Man multipliziert seine Eingabe von und übergibt das Ergebnis nach rechts, der nächste fügt hinzu und übergibt das Ergebnis nach rechts.
Vorteile und Nachteile
Profis
- Schneller als Allzweckprozessoren
- Skalierbar
Nachteile
- Teuer, aufgrund der geringen Skaleneffekte
- Hochspezialisierte, benutzerdefinierte Hardware ist erforderlich und häufig anwendungsspezifisch.
- Nicht weit verbreitet
- Begrenzte Code -Basis von Programmen und Algorithmen. (Nicht alle Algorithmen können als systolische Arrays implementiert werden. Oft sind Tricks erforderlich, um solche Algorithmen auf ein systolisches Array abzubilden.)
Implementierungen
- Cisco PXF -Netzwerkprozessor ist intern als systolisches Array organisiert.[5]
- Google TPU ist auch um ein systolisches Array entwickelt.
- Paracel FDF4T TestFinder Textsuchsystem[6]
- Paracel FDF4G Genematcher Biologisches (DNA- und Protein-) Suchsystem
- Inferentia -Chip bei Amazon Web Services[7]
- MIT Eyeriss ist ein systolisches Array -Beschleuniger für Faltungsnetzwerke.[8][9]
Siehe auch
- Misd - Mehrere Anweisungen Einzeldaten, Beispiel: systolische Arrays
- iWarp - systolischer Array -Computer, VLSI, Intel/CMU
- WARP (systolic array) - systolischer Array Computer, GE/CMU
- Tensor -Verarbeitungseinheit – Ai Beschleuniger Asic
Anmerkungen
- ^ Colossus - das größte Geheimnis in der Geschichte des Computers an Youtube
- ^ http://www.eecs.harvard.edu/~htk/publication/1984-ieeetoc-brent-kung.pdf[Bare URL PDF]
- ^ Die Paracel Genematcher -Reihe von systolischen Array -Prozessoren haben a Programm zähler. Kompliziertere Algorithmen werden als eine Reihe einfacher Schritte implementiert, wobei die Verschiebungen in den Anweisungen angegeben sind.
- ^ Systolische Array -Matrix -Multiplikation
- ^ "Cisco 10000 Serie Router Performance Routing Engine Installation". Abgerufen 3. August 2020.
- ^ "Über Paracel". BrandProsgroup.com. Paracel. Abgerufen 4. Mai 2018.
- ^ "Ankündigung der Verfügbarkeit von INF1-Instanzen in Amazon Sagemaker für hohe Leistung und kostengünstiges Inferenz für maschinelles Lernen". Abgerufen 15. August 2020.
- ^ "Eyeriss Project". Eyeriss.mit.edu. Abgerufen 21. Februar 2021.
- ^ Chen, Yu-Hsin; Emer, Joel; Sze, Vivienne (12. Oktober 2016). "Eyeriss: Eine räumliche Architektur für energieeffizienten Datenfluss für Faltungsnetzwerke". ACM Sigarch Computer Architecture News. 44 (3): 367–379. doi:10.1145/3007787.3001177. ISSN 0163-5964. S2CID 3291270.
Verweise
- H. T. Kung, C. E. Leiserson: Algorithmen für VLSI -Prozessor -Arrays; In: C. Mead, L. Conway (Hrsg.): Einführung in VLSI -Systeme; Addison-Wesley, 1979
- S. Y. Kung: VLSI -Array -Prozessoren; Prentice-Hall, Inc., 1988
- N. Petkov: systolische parallele Verarbeitung; North Holland Publishing Co, 1992