Flynns Taxonomie

Flynns Taxonomie ist eine Klassifizierung von Computerarchitekturen, vorgeschlagen von Michael J. Flynn 1966[1] und 1972 erweitert.[2] Das Klassifizierungssystem ist festgefahren und wurde als Werkzeug für die Gestaltung moderner Prozessoren und deren Funktionen verwendet. Seit dem Aufstieg von Multiprozessierung Zentrale Verarbeitungseinheiten (CPUs), a Multiprogrammierung Der Kontext hat sich als Erweiterung des Klassifizierungssystems entwickelt. Vektorverarbeitung, überdeckt von Duncans Taxonomie,[3] fehlt in Flynns Arbeit, weil die Cray-1 wurde 1977 veröffentlicht: Flynns zweites Papier wurde 1972 veröffentlicht.

Klassifizierungen

Die vier von Flynn definierten ersten anfänglichen Klassifikationen basieren auf der Anzahl der in der Architektur verfügbaren Streams und Datenströme der gleichzeitigen Befehls (oder Steuerung) und Datenströme.[4] Flynn definierte später 1972 drei zusätzliche Unterkategorien von SIMD.[2]

Einzelanweisungsstrom, Einzeldatenstrom (SISD)

Ein sequentieller Computer, der weder in den Anweisungen noch in den Datenströmen eine Parallelität ausnutzt. Einzelsteuereinheit (CU) holt einen einzelnen Befehlsstrom (IS) aus dem Speicher. Die CU generiert dann geeignete Steuersignale, um ein einzelnes Verarbeitungselement (PE) zu leiten, um mit einem einzelnen Datenstrom (DS) zu arbeiten, d. H. Einen Operation gleichzeitig.

Beispiele für SISD -Architekturen sind traditionell Uniprozessor Maschinen wie älter persönliche Computer (PCs) (bis 2010 hatten viele PCs mehrere Kerne) und Mainframe -Computer.

Einzelanweisungsstrom, mehrere Datenströme (SIMD)

Ein einzelner Befehl wird gleichzeitig auf mehrere verschiedene Datenströme angewendet. Anweisungen können nacheinander ausgeführt werden, z. B. durch Pipelining oder parallel durch mehrere funktionale Einheiten. Flynns Papier von 1972 unterteilte Simd in drei weitere Kategorien:[2]

  • Array -Prozessor - Diese erhalten die eine (gleiche) Anweisung, aber jede parallele Verarbeitungseinheit hat eine eigene separate und unterschiedliche Speicher- und Registrierungsdatei.
  • Pipeline -Prozessor - Diese empfangen den einen (gleichen) Anweisungen, lesen jedoch Daten aus einer zentralen Ressource, wobei jeder Fragmente dieser Daten verarbeitet, und schreibt dann die Ergebnisse in dieselbe zentrale Ressource zurück. In Abbildung 5 von Flynns 1977 Papier, dass die Ressource Hauptspeicher ist: Für moderne CPUs ist diese Ressource jetzt in der Regel die Registerdatei.
  • Assoziativer Prozessor - Diese erhalten die eine (gleiche) Anweisung, jedoch in jeder parallelen Verarbeitungseinheit a unabhängig Die Entscheidung wird auf Daten beruhen lokal an das Gerät, ob die Ausführung ausführt oder ob sie überspringen soll. In der modernen Terminologie ist dies als "vorhergesagt" (maskiert) SIMD bekannt.

Einige moderne Designs (GPUS Insbesondere) nehmen Merkmale von mehr als einer dieser Unterkategorien an: GPUs von heute sind SIMT, aber auch assoziativ, d. H. Jedes Verarbeitungselement im SIMT -Array ist ebenfalls vorherzusagen.

Array -Prozessor

Der moderne Begriff für einen Array -Prozessor ist "Einzelanweisung, mehrere Threads"(SIMT). Dies ist eine eindeutige Klassifizierung in der Taxonomie von Flynn von 1972 als Unterkategorie von Simd. Sie ist durch das parallele Unterelements mit einer eigenen unabhängigen Registerdatei und -speicherin (Cache und Datenspeicher) identifiziert. Flynns ursprüngliche Artikel zitieren zwei historische Beispiele zitieren zwei historische Beispiele von SIMT -Prozessoren: SOLOMON und ILLIAC IV.

Nvidia verwendet normalerweise den Begriff in seinen Marketingmaterialien und technischen Dokumenten, in denen er sich für die Neuheit der NVIDIA -Architektur ausspricht.[6] Solomon läuft um mehr als 60 Jahre.

Der ASPEX Microelectronics Associativ String -Prozessor (ASP)[7] kategorisierte sich in seinem Marketingmaterial als "massive breite Simd", hatte aber aber Bit-Level Alus- und Bit-Level-Prädikation (Flynns Taxonomie: Assoziative Verarbeitung), und jeder der 4096-Prozessoren hatte ihre eigenen Register und ihr eigenes Speicher (Flynns Taxonomie: Array-Verarbeitung). Der im Jahr 2010 veröffentlichte Linedancer enthielt 4096 2-Bit-Robus von SIMD Alus, jeweils seine eigenen Inhaltsadressible Speicherund war mit 800 Milliarden Anweisungen pro Sekunde in der Lage.[8] ASPExs ASP Associativ Array SIMT -Prozessor ist bis 20 Jahre lang NVIDIA.[9][10]

Pipeline -Prozessor

Zu der Zeit, als Flynn sein 1972er Papier schrieb, verwendeten viele Systeme den Hauptspeicher als Ressource, aus dem Pipelines las und schrieb. Wenn die Ressource, aus der alle "Pipelines" gelesen und geschrieben wurden, eher die Registerdatei als den Hauptspeicher enthält, resultieren moderne Varianten von SIMD. Beispiele beinhalten Altivec, NEON, und Avx.

Ein alternativer Name für diese Art von Register-basierter SIMD ist "verpackt SIMD"[11] und ein anderer ist Simd innerhalb eines Registers (SWAR). Wenn die Prädikation angewendet wird, wird sie assoziative Verarbeitung (unten)

Assoziativer Prozessor

Der moderne Begriff für assoziativen Prozessor ist "basiert"(oder maskiert) Simd. Beispiele gehören AVX-512.

Mehrere Befehlsströme, Einzeldatenstrom (MISD)

Mehrere Anweisungen arbeiten mit einem Datenstrom. Dies ist eine ungewöhnliche Architektur, die im Allgemeinen für die Fehlertoleranz verwendet wird. Heterogene Systeme arbeiten auf demselben Datenstrom und müssen sich auf das Ergebnis einigen. Beispiele sind die Space Shuttle Flugsteuerungscomputer.[12]

Mehrere Befehlsströme, mehrere Datenströme (MIMD)

Mehrere autonome Prozessoren führen gleichzeitig unterschiedliche Anweisungen für verschiedene Daten aus. MIMD -Architekturen umfassen Multi-Core Superscalar Prozessoren und verteilte SystemeVerwenden Sie entweder einen gemeinsam genutzten Speicherplatz oder einen verteilten Speicherplatz.

Diagramm zum Vergleich von Klassifikationen

Diese vier Architekturen sind unten visuell dargestellt. Jede Verarbeitungseinheit (PU) wird für einen UNI-CORE- oder Multi-Core-Computer angezeigt:

Weitere Abteilungen

Ab 2006, alle Top 10 und die meisten der Top500 Supercomputer basieren auf einer MIMD -Architektur.

Obwohl diese nicht Teil von Flynns Arbeit sind, teilen einige die MIMD -Kategorie weiter in die beiden folgenden Kategorien,[13][14][15][16][17] und noch weitere Unterteilungen werden manchmal berücksichtigt.[18]

Einzelprogramm, mehrere Datenströme (SPMD)

Mehrere autonome Prozessoren, die gleichzeitig dasselbe Programm ausführen (aber an unabhängigen Stellen und nicht in der Lockstep Dieser Simd verhängt verschiedene Daten. Auch bezeichnet Einzelprozess, mehrere Daten[17] - Die Verwendung dieser Terminologie für SPMD ist technisch falsch, da SPMD ein paralleles Ausführungsmodell ist und mehrere kooperierende Prozessoren annimmt, die ein Programm ausführen. SPMD ist der häufigste Stil der parallelen Programmierung.[19] Das SPMD -Modell und der Begriff wurden von Frederica Darema vom RP3 -Team vorgeschlagen.[20]

Mehrere Programme, mehrere Datenströme (MPMD)

Mehrere autonome Prozessoren arbeiten gleichzeitig mindestens 2 unabhängige Programme. Normalerweise wählen solche Systeme einen Knoten als "Host" ("das explizite Host/Knoten -Programmiermodell") oder "Manager" (die Strategie "Manager/Worker") aus was alle ein zweites Programm ausführen. Diese anderen Knoten geben dann ihre Ergebnisse direkt an den Manager zurück. Ein Beispiel hierfür wäre die Sony PlayStation 3 Game Console mit seiner Spu/PPU -Prozessor.

Siehe auch

Verweise

  1. ^ Flynn, Michael J. (Dezember 1966). "Sehr Hochgeschwindigkeits-Computersysteme" (PDF). Proceedings of the IEEE. 54 (12): 1901–1909. doi:10.1109/proc.1966.5273.
  2. ^ a b c Flynn, Michael J. (September 1972). "Einige Computerorganisationen und ihre Effektivität" (PDF). IEEE -Transaktionen auf Computern. C-21 (9): 948–960. doi:10.1109/tc.1972.5009071. S2CID 18573685.
  3. ^ Duncan, Ralph (Februar 1990). "Eine Übersicht über parallele Computerarchitekturen" (PDF). Computer. 23 (2): 5–16. doi:10.1109/2.44900. S2CID 15036692. Archiviert (PDF) vom Original am 2018-07-18. Abgerufen 2018-07-18.
  4. ^ "Parallelität auf Datenebene in Vektor-, SIMD- und GPU-Architekturen" (PDF). 12. November 2013.
  5. ^ Flynn, Michael J. (September 1972). "Einige Computerorganisationen und ihre Effektivität" (PDF). IEEE -Transaktionen auf Computern. C-21 (9): 948–960. doi:10.1109/tc.1972.5009071.
  6. ^ "Nvidias nächste Generation Cuda Compute Architecture: Fermi" (PDF). Nvidia.
  7. ^ Lea, R. M. (1988). "ASP: Ein kostengünstiger paralleler Mikrocomputer". IEEE MICRO. 8 (5): 10–29. doi:10.1109/40.87518. S2CID 25901856.
  8. ^ "Linedancer HD - Übersicht". Aspex Semiconductor. Archiviert von das Original am 13. Oktober 2006.
  9. ^ Krikelis, A. (1988). Künstliches neuronales Netzwerk in einer massiv parallele assoziativen Architektur. Internationale Konferenz für neuronale Netzwerke. Dordrecht: Springer. doi:10.1007/978-94-009-0643-3_39. ISBN 978-94-009-0643-3.
  10. ^ Ódor, Géza; Krikelis, Argy; Vesztergombi, György; Rohrbach, Francois. "Effektive Monte-Carlo-Simulation auf System-V massiv parallele assoziative String-Verarbeitungsarchitektur" (PDF).
  11. ^ Miyaoka, Y.; Choi, J.; Togawa, N.; Yanagisawa, M.; Ohtsuki, T. (2002). Ein Algorithmus der Hardwareeinheit Generierung für die Prozessor -Kernsynthese mit gepackten SIMD -Anweisungen. Asien-Pazifikkonferenz über Schaltkreise und Systeme. Vol. 1. p. 171–176. doi:10.1109/apccas.2002.1114930. HDL:2065/10689.
  12. ^ Spector, a.; Gifford, D. (September 1984). "Das Space Shuttle Primary Computer System". Kommunikation der ACM. 27 (9): 872–900. doi:10.1145/358234.358246. S2CID 39724471.
  13. ^ "Einzelprogramm Mehrfachdatenstrom (SPMD)". Llnl.gov. Abgerufen 2013-12-09.
  14. ^ "Programmieranforderungen für das Erstellen, Aufbau und Führen von Arbeitsplätzen". Lightning User Guide. Archiviert von das Original Am 1. September 2006.
  15. ^ "Virtueller CTC -Workshop". Web0.tc.cornell.edu. Abgerufen 2013-12-09.
  16. ^ "NIST SP2 Primer: Programmierung verteiltem Memory". Math.nist.gov. Archiviert von das Original Am 2013-12-13. Abgerufen 2013-12-09.
  17. ^ a b "Verständnis des parallelen Jobmanagements und der Nachrichten, die IBM SP -Systeme weitergeben". Archiviert von das Original Am 3. Februar 2007.
  18. ^ "9.2 Strategien". Verteilte Speicherprogrammierung. Archiviert von das Original Am 10. September 2006.
  19. ^ "Einzelprogramm mehrere Daten". Nist.gov. 2004-12-17. Abgerufen 2013-12-09.
  20. ^ Darema, Frederica; George, David A.; Norton, V. Alan; Pfister, Gregory F. (1988). "Ein Einzelprogramm-Multiple-Daten-Computermodell für EPEX/FORTRAN". Parallele Computing. 7 (1): 11–24. doi:10.1016/0167-8191 (88) 90094-4.