Symmetrische Multiprozessierung

Diagramm eines symmetrischen Multiprozessingsystems

Symmetrische Multiprozessierung oder Multiprozessierung von gemeinsamen Memorien[1] (SMP) beinhaltet a Multiprozessor Computerhardware und Softwarearchitektur, bei der zwei oder mehr identische Prozessoren mit einem einzigen gemeinsam genutzten, geteilt werden Haupterinnerung, haben vollen Zugriff auf alle Eingangs- und Ausgangsgeräte und werden von einer einzigen Betriebssysteminstanz gesteuert, die alle Prozessoren gleich behandelt und keine für besondere Zwecke reserviert. Die meisten Multiprozessorsysteme verwenden heute eine SMP -Architektur. Im Falle des Multi-Core-ProzessorenDie SMP -Architektur gilt für die Kerne und behandelt sie als separate Prozessoren.

Professor John D. Kubiatowicz betrachtet traditionell SMP -Systeme als Prozessoren ohne Caches.[2] Culler und Palgingh in ihrem 1998er Buch "Parallele Computerarchitektur: Ein Hardware/Software-Ansatz" Erwähnt: "Der Begriff SMP wird weit verbreitet, verursacht jedoch ein wenig Verwirrung. [...] Die genaue Beschreibung dessen, was beabsichtigt ist SMP ist ein gemeinsamer Speicher -Multiprozessor, bei dem die Kosten für den Zugriff auf einen Speicherort für alle Prozessoren gleich sind. Das heißt, er hat einheitliche Zugriffskosten, wenn der Zugriff tatsächlich auf Speicher ist. Wenn der Standort zwischengespeichert wird, ist der Zugriff schneller, aber aber Cache -Zugriffszeiten und Speicherzugriffszeiten sind bei allen Prozessoren gleich. "[3]

SMP -Systeme sind eng gekoppelter Multiprozessor Systeme mit einem Pool homogener Prozessoren, die unabhängig voneinander laufen. Jeder Prozessor, der verschiedene Programme ausführt und an verschiedenen Datensätzen arbeitet, verfügt über die Möglichkeit, gemeinsame Ressourcen zu teilen (Speicher, E/A -Gerät, Interrupt -System usw.), die mit a verbunden sind System Bus oder ein Latte.

Entwurf

SMP -Systeme haben zentralisiert geteilte Erinnerung genannt Haupterinnerung (Mm) unter einem einzigen operieren Betriebssystem mit zwei oder mehr homogenen Prozessoren. Normalerweise verfügt jeder Prozessor über einen zugehörigen privaten Hochgeschwindigkeitsspeicher, der als bekannt ist Cache-Speicher (oder Cache), um den Hauptspeicherdatenzugriff zu beschleunigen und den Systembusverkehr zu verringern.

Prozessoren können mit Bussen miteinander verbunden sein. Querlatte oder On-Chip-Netzwerke. Der Engpass bei der Skalierbarkeit von SMP unter Verwendung von Bussen oder Querlattenschaltern ist die Bandbreite und der Stromverbrauch der Vernetzung zwischen den verschiedenen Prozessoren, dem Speicher und den Festplatten -Arrays. Mesh -Architekturen vermeiden diese Engpässe und bieten eine nahezu lineare Skalierbarkeit zu viel höheren Prozessorzahlen beim Opfer der Programmierbarkeit:

Bei dieser Art von Architektur bleiben schwerwiegende Programmierherausforderungen bestehen, da sie zwei unterschiedliche Programme erfordert. Eine für den CPUs selbst und eine für die Verbinde zwischen dem CPUs. Eine einzelne Programmiersprache müsste in der Lage sein, nicht nur die Arbeitsbelastung zu partitionieren, sondern auch die Speicherlokalität zu verstehen, die in einer meshbasierten Architektur schwerwiegend ist.[4]

SMP -Systeme ermöglichen es jedem Prozessor, an einer Aufgabe zu arbeiten, unabhängig davon, wo sich die Daten für diese Aufgabe im Speicher befinden, vorausgesetzt, jede Aufgabe im System ist nicht gleichzeitig auf zwei oder mehr Prozessoren ausgeführt. Mit richtiger Betriebssystem Unterstützung, SMP -Systeme können Aufgaben zwischen den Prozessoren problemlos verschieben, um die Arbeitsbelastung effizient auszugleichen.

Geschichte

Das früheste Produktionssystem mit mehreren identischen Prozessoren war die Burroughs B5000, was um 1961 funktionsfähig war. Zum Laufzeit war dies jedoch asymmetrischMit einem Prozessor, der auf Anwendungsprogramme beschränkt ist, während der andere Prozessor hauptsächlich das Betriebssystem und die Hardware -Interrupts behandelte. Die Burroughs D825 implementierte SMP 1962 erstmals.[5][6]

IBM bot Computersysteme mit zwei Prozessoren basierend darauf an System/360 Modell 65 und die eng verwandten Modell 67[7] und 67–2.[8] Die Betriebssysteme, die auf diesen Maschinen lief, waren OS/360 M65MP[9] und TSS/360. Andere Software, die an Universitäten entwickelt wurden, insbesondere die Michigan Terminalsystem (MTS), verwendete beide CPUs. Beide Prozessoren können auf Datenkanäle zugreifen und E/A einleiten. In OS/360 M65MP konnten Peripheriegeräte im Allgemeinen an beiden Prozessor angeschlossen werden, da der Kernel des Betriebssystems auf beiden Prozessoren ausgeführt wird (obwohl ein "großer Schloss" um den E/A -Handler ums Leben kamen).[10] Der MTS -Supervisor (UMMPS) kann beide CPUs des IBM -Systems/360 Modell 67–2 ausführen. Supervisor -Schlösser waren klein und verwendet, um einzelne gemeinsame Datenstrukturen zu schützen, auf die möglicherweise gleichzeitig von beiden CPUs zugegriffen werden.[11]

Andere Mainframes, die SMP unterstützten UNIVAC 1108 II, veröffentlicht 1965, das bis zu drei CPUs unterstützte, und die GE-635 und GE-645,[12][13] obwohl Gecos auf Multiprozessor Ge-635-Systemen, die in einer asymmetrischen Master-Slave-Art und Weise ausgeführt wurden, im Gegensatz zu Mehrheit Auf Multiprozessor Ge-645-Systemen, die symmetrisch lief.[14]

Beginnend mit seiner Version 7.0 (1972), Digital Equipment CorporationBetriebssystem Tops-10 Implementierte die SMP -Funktion, das früheste System, das SMP ausführte Decsystem 1077 Dual Ki10 -Prozessorsystem.[15] Später konnte das KL10 -System auf SMP -Weise bis zu 8 CPUs zusammengefasst. Im Gegensatz dazu der Decs First Multi-Processor Vax System, der VAX-11/782, war asymmetrisch,[16] Spätere VAX -Multiprozessorsysteme waren jedoch SMP.[17]

Frühe kommerzielle UNIX -SMP -Implementierungen umfassten die Sequente Computersysteme Bilanz 8000 (1984 veröffentlicht) und Balance 21000 (veröffentlicht 1986).[18] Beide Modelle basierten auf 10 MHz Nationaler Halbleiter NS32032 Prozessoren, jeweils ein kleiner Schreibcache, der mit einem gemeinsamen Speicher verbunden ist, um a zu bilden geteilte Erinnerung System. Eine weitere frühe kommerzielle UNIX-SMP-Implementierung war die NUMA-basierte Honeywell-Informationssysteme Italien XPS-100, die 1985 von Dan Gielan von Vast Corporation entworfen wurde. Sein Design unterstützte bis zu 14 Prozessoren. Aufgrund der elektrischen Einschränkungen war die größte vermarktete Version jedoch ein Dual-Prozessor-System . Das Betriebssystem wurde von der riesigen Gesellschaft vom AT & T 3B20 UNIX SYSVR3 -Code abgeleitet und portiert, der intern in AT & T verwendet wurde.

Es gab frühere nichtkommerzielle Multiprozessing-UNIX-Ports, einschließlich eines Ports namens Munix, der in der erstellt wurde Marine -Postgraduiertenschule Bis 1975.[19]

Verwendet

Zeitteilung und Server Systeme können häufig SMP ohne Änderungen an Anwendungen verwenden, da diese möglicherweise mehrere haben Prozesse Paralleles Ausführen und ein System mit mehr als einem Prozess ausführen können verschiedene Prozesse auf verschiedenen Prozessoren ausführen.

An persönliche Computer, SMP ist weniger nützlich für Anwendungen, die nicht geändert wurden. Wenn das System selten mehr als einen Prozess gleichzeitig ausführt, ist SMP nur für Anwendungen nützlich, die geändert wurden Multithread (multitaskierte) Verarbeitung. Benutzerdefinierte programmierte Software Kann geschrieben oder geändert werden, um mehrere Threads zu verwenden, damit mehrere Prozessoren verwendet werden können.

Multithread-Programme können auch in Time-Sharing- und Server-Systemen verwendet werden, die Multithreading unterstützen, sodass sie mehrere Prozessoren mehr nutzen können.

Vorteile Nachteile

In aktuellen SMP -Systemen sind alle Prozessoren eng in derselben Box mit Bus oder Schalter gekoppelt. Auf früheren SMP -Systemen nahm eine einzelne CPU ein ganzes Schrank. Einige der gemeinsam genutzten Komponenten sind globaler Speicher, Festplatten und E/A -Geräte. Nur eine Kopie eines Betriebssystems wird auf allen Prozessoren ausgeführt, und das Betriebssystem muss so konzipiert werden, dass diese Architektur ausnutzt. Einige der grundlegenden Vorteile beinhalten kostengünstige Möglichkeiten, den Durchsatz zu erhöhen. Um unterschiedliche Probleme und Aufgaben zu lösen, wendet SMP mehrere Prozessoren auf dieses eine Problem an, das als bekannt ist Parallele Programmierung.

Es gibt jedoch einige Grenzen der Skalierbarkeit von SMP aufgrund von Cache -Kohärenz und gemeinsame Gegenstände.

Programmierung

Uniprozessor- und SMP -Systeme erfordern unterschiedliche Programmiermethoden, um eine maximale Leistung zu erzielen. Programme, die auf SMP -Systemen ausgeführt werden, können eine Leistungserie aufnehmen, selbst wenn sie für UniProcessor -Systeme geschrieben wurden. Das liegt daran, dass Hardware Interrupts in der Regel die Programmausführung ausgibt, während die Kernel Das kann sie stattdessen auf einem Leerlaufprozessor ausführen. Der Effekt in den meisten Anwendungen (z. B. Spiele) ist nicht so sehr eine Leistungssteigerung wie das Erscheinungsbild des Programms viel reibungsloser. Einige Anwendungen, insbesondere aufbauen Software und andere verteiltes Computer Projekte, die schneller ausführen, um (nahezu) der Anzahl der zusätzlichen Prozessoren. (Compiler sind selbst mit einem einzigen Gewinde, aber beim Erstellen eines Softwareprojekts mit mehreren Kompilierungseinheiten, wenn jede Kompilierungseinheit unabhängig gehandhabt wird, schafft dies eine peinlich parallel Situation über das gesamte Projekt mit mehreren Kompilierungen, die nahezu lineare Skalierung der Zusammenstellung Zeit ermöglichen. Verteilte Computerprojekte sind von Natur aus durch Design parallel.)

Systemprogrammierer müssen Unterstützung für SMP in die aufbauen BetriebssystemAndernfalls bleiben die zusätzlichen Prozessoren im Leerlauf und das System fungiert als UniProzessor -System.

SMP -Systeme können auch zu mehr Komplexität in Bezug auf Anweisungssätze führen. Ein homogenes Prozessorsystem benötigt in der Regel zusätzliche Register für "spezielle Anweisungen" wie SIMD (MMX, SSE usw.), während ein heterogenes System verschiedene Hardware -Arten für verschiedene Anweisungen/Verwendungszwecke implementieren kann.

Leistung

Wenn mehr als ein Programm gleichzeitig ausgeführt wird, hat ein SMP-System eine erheblich bessere Leistung als ein Uni-Prozessor, da verschiedene Programme gleichzeitig auf verschiedenen CPUs ausgeführt werden können. Umgekehrt, Asymmetrische Multiprozessierung (AMP) ermöglicht es normalerweise nur mit einem Prozessor, ein Programm oder eine Aufgabe gleichzeitig auszuführen. Beispielsweise kann AMP verwendet werden, um bestimmte Aufgaben an CPU zuzuweisen, die auf Priorität und Bedeutung des Aufgabenabschlusses basieren. AMP wurde schon lange vor SMP im Hinblick auf die Behandlung mehrerer CPUs erstellt, was die mangelnde Leistung auf der Grundlage des angegebenen Beispiels erläutert.

In Fällen, in denen eine SMP -Umgebung viele Jobs verarbeitet, erleben Administratoren häufig einen Verlust der Hardwareeffizienz. Softwareprogramme wurden entwickelt, um Arbeitsplätze und andere Funktionen des Computers zu planen, damit die Prozessorauslastung ihr maximales Potenzial erreicht. Gute Softwarepakete können dieses maximale Potenzial durch die Planung jeder CPU separat erreichen und mehrere SMP -Maschinen und -Cluster integrieren.

Der Zugriff auf RAM wird serialisiert; das und Cache -Kohärenz Probleme verursachen die Leistung, die leicht hinter der Anzahl der zusätzlichen Prozessoren im System zurückbleibt.

Alternativen

Diagramm eines typischen SMP -Systems. Drei Prozessoren sind über a mit demselben Speichermodul verbunden System Bus oder Querlatte

SMP verwendet eine einzelne gemeinsame Nutzung System Bus Dies stellt einen der frühesten Architekturen von Multiprozessormaschinen dar, der typischerweise zum Aufbau kleinerer Computer mit bis zu 8 Prozessoren verwendet wird.

Größere Computersysteme verwenden möglicherweise neuere Architekturen wie z. Numa (Ungleichmäßiger Speicherzugriff), der verschiedenen Prozessern unterschiedliche Speicherbanken widmet. In einer NUMA -Architektur können Prozessoren schnell auf den lokalen Speicher zugreifen und den Speicher langsamer. Dies kann den Speicherdurchsatz drastisch verbessern, solange die Daten in bestimmten Prozessen (und damit für Prozessoren) lokalisiert sind. Auf der anderen Seite macht NUMA die Kosten für das Verschieben von Daten von einem Prozessor zum anderen, wie bei der Arbeitsbelastungsausgleich teurer. Die Vorteile der NUMA beschränken sich auf bestimmte Arbeitsbelastungen, insbesondere auf Server Wo die Daten häufig stark mit bestimmten Aufgaben oder Benutzern zugeordnet werden.

Schließlich gibt es Computer gruppiert multiprozessieren (wie z. Beowulf), in dem nicht alle Speicher für alle Prozessoren zur Verfügung stehen. Clustering -Techniken werden ziemlich ausführlich verwendet, um sehr große Supercomputer zu bauen.

Variable SMP

Variable symmetrische Multiprocessing (VSMP) ist eine spezifische mobile Anwendungsfall -Technologie, die von NVIDIA initiiert wurde. Diese Technologie umfasst einen extra fünften Kern in einem Quad-Core-Gerät, das als Begleitkern bezeichnet wird und speziell für die Ausführung von Aufgaben mit einer geringeren Frequenz während des mobilen aktiven Standby-Modus, der Video-Wiedergabe und der Musikwiedergabe erstellt wurde.

Projekt kal-el (Tegra 3),[20] Patentiert von Nvidia war der erste SOC (System auf ChIP), der diese neue VSMP -Technologie implementiert. Diese Technologie reduziert nicht nur den mobilen Stromverbrauch während des aktiven Standby -Zustands, sondern maximiert auch die Quad -Core -Leistung während der aktiven Verwendung für intensive mobile Anwendungen. Insgesamt befasst sich diese Technologie mit der Notwendigkeit einer Erhöhung der Akkulaufleistung während der aktiven und Standby -Nutzung, indem der Stromverbrauch bei mobilen Prozessoren verringert wird.

Im Gegensatz zu aktuellen SMP -Architekturen ist der VSMP -Begleitkern das OS transparent, was bedeutet, dass das Betriebssystem und die laufenden Anwendungen diesen zusätzlichen Kern völlig nicht bewusst sind, aber dennoch in der Lage sind, ihn auszunutzen. Einige der Vorteile der VSMP -Architektur umfassen Cache -Kohärenz, OS -Effizienz und Leistungsoptimierung. Die Vorteile für diese Architektur werden nachstehend erläutert:

  • Cache -Kohärenz: Es gibt keine Konsequenzen für die Synchronisation von Caches zwischen Kernen, die mit unterschiedlichen Frequenzen laufen, da VSMP den Begleitkern und die Hauptkerne nicht gleichzeitig laufen lassen.
  • OS -Effizienz: Es ist ineffizient, wenn mehrere CPU -Kerne mit unterschiedlichen asynchronen Frequenzen ausgeführt werden, da dies zu möglichen Planungsproblemen führen kann.[wie?] Mit VSMP werden die aktiven CPU -Kerne mit ähnlichen Frequenzen ausgeführt, um die OS -Planung zu optimieren.
  • Leistungsoptimierung: Bei asynchroner Tauchbasis -Architektur befindet sich jeder Kern auf einer anderen Leistungsebene, um Spannungsanpassungen für verschiedene Betriebsfrequenzen zu verarbeiten. Das Ergebnis davon könnte die Leistung beeinflussen.[wie?] Die VSMP -Technologie kann bestimmte Kerne dynamisch für den aktiven und Standby -Gebrauch aktivieren und deaktivieren, wodurch der gesamte Stromverbrauch verringert wird.

Diese Vorteile führen die VSMP -Architektur in erheblichem Nutzen[Pfauenprosa] über andere Architekturen mit asynchronen Takt -Technologien.

Siehe auch

Verweise

  1. ^ Patterson, David; Hennessy, John (2018). Computerorganisation und Design: Die Hardware-/Software -Oberfläche (Risc-v ed.). Cambridge, USA: Morgan Kaufmann. p. 509. ISBN 978-0-12-812275-4.
  2. ^ John Kubiatowicz. Einführung in parallele Architekturen und Phreads. 2013 kurzer Kurs über parallele Programmierung.
  3. ^ David Culler; Jaswinder Pal Singh; Anoop Gupta (1999). Parallele Computerarchitektur: Ein Hardware/Software -Ansatz. Morgan Kaufmann. p. 47. ISBN 978-1558603431.
  4. ^ Lina J. Karam, Ismail Alkamal, Alan -Sammlerin, Gene A. Frantz, David V. Anderson, Brian L. Evans (2009). "Trends in Multi-Core-DSP-Plattformen" (PDF). IEEE Signal Processing Magazine. 26 (6): 38–49. Bibcode:2009ispm ... 26 ... 38k. doi:10.1109/msp.2009.934113. S2CID 9429714.{{}}: CS1 Wartung: Verwendet Autorenparameter (Link)
  5. ^ Gregory V. Wilson (Oktober 1994). "Die Geschichte der Entwicklung des parallelen Computers".
  6. ^ Martin H. Weik (Januar 1964). "Eine vierte Übersicht über inländische elektronische digitale Computersysteme". Ballistische Forschungslabors, ABERDEEN AUFBUCHEN. Burroughs D825.
  7. ^ IBM System/360 Modell 65 Funktionseigenschaften (PDF). Vierte Edition. IBM. September 1968. A22-6884-3.
  8. ^ IBM System/360 Modell 67 Funktionseigenschaften (PDF). Dritte Edition. IBM. Februar 1972. GA27-2719-2.
  9. ^ M65MP: Ein Experiment in OS/360 Multiprocessing
  10. ^ Programmlogikhandbuch, O/A -Supervisor -Logik, Release 21 (R21.7) (PDF) (Zehnte Ausgabe). IBM. April 1973. GY28-6616-9.
  11. ^ Zeit teilen Supervisor -Programme von Mike Alexander (Mai 1971) hat Informationen zu MTS, TSS, CP/67 und Multics
  12. ^ GE-635 Systemhandbuch (PDF). General Electric. Juli 1964.
  13. ^ GE-645 Systemhandbuch (PDF). General Electric. Januar 1968.
  14. ^ Richard Shetron (5. Mai 1998). "Angst vor der Multiprozessierung?". Newsgroup:Alt.folklore.computer. Usenet: [email protected].
  15. ^ Dezember 1077 und SMP
  16. ^ Vax Product Sales Guide, Seiten 1-23 und 1-24: Der VAX-11/782 wird 1982 als asymmetrisches Multiprozesssystem beschrieben
  17. ^ VAX 8820/8830/8840 System Hardware -Benutzerhandbuch: Bis 1988 war das VAX -Betriebssystem SMP
  18. ^ Hockney, R.W.; Jesshope, C. R. (1988). Parallele Computer 2: Architektur, Programmierung und Algorithmen. Taylor & Francis. p. 46. ISBN 0-85274-811-6.
  19. ^ Hawley, John Alfred (Juni 1975). "Munix, eine multiprozessierende Version von Unix" (PDF). core.ac.uk. Abgerufen 11. November 2018.
  20. ^ Variable SMP-Eine Multi-Core-CPU-Architektur für niedrige Leistung und hohe Leistung. Nvidia. 2011.

Externe Links