- Symmetrisches Multiprozessing
-
Ein Symmetrisches Multiprozessorsystem (SMP) ist eine Multiprozessor-Architektur, bei der zwei oder mehr identische Prozessoren einen gemeinsamen Adressraum besitzen. Dies bedeutet, dass jeder Prozessor mit derselben (physikalischen) Adresse dieselbe Speicherzelle oder dasselbe Peripherieregister adressiert. Die meisten Mehrprozessorsysteme heute sind SMP-Architekturen.
Eine SMP-Architektur erlaubt es, die laufenden Prozesse dynamisch auf alle verfügbaren Prozessoren zu verteilen – dagegen muss beim asymmetrischen Multiprocessing jeder CPU eine Aufgabe fest zugewiesen werden (z. B. führt CPU0 Betriebssystemaufrufe und CPU1 Benutzerprozesse aus), da nicht alle Aufgaben auf jedem Prozessor durchgeführt werden können. Es gibt aber auch Anwendungendomänen (z. B. Regelungstechnik mit harten Echtzeitanforderungen), bei denen eine statische Zuordnung der Prozesse auch auf einer SMP-Architektur vorteilhafter ist.
Details
Symmetrisches Multiprocessing ist seit Ende der 1980er Jahre die Standard-Architektur für Multiprozessor-Maschinen mit bis zu 16 CPUs.
Die Forderung, dass jede CPU jeden Prozess ausführen können muss, führt jedoch bei größeren Systemen dazu, dass der Speicherbus zum Flaschenhals wird. Mit jeder zusätzlichen CPU sinkt der relative Leistungs-Gewinn, da die Speichersubsysteme die Daten nicht mehr schnell genug liefern können, um alle vorhandenen CPUs auszulasten.
Ein weiteres Problem bei SMP ist das CPU Hopping, bei dem Prozesse ständig zwischen den einzelnen CPUs wechseln. Normalerweise wäre dies kein Problem, aber da in SMP-Systemen häufig CPUs mit sehr großen und mehrfach gestaffelten Caches zum Einsatz kommen, um die bereits geschilderte Auslastung des Speichersystems zu vermindern, führt der schnelle Wechsel der laufenden Prozesse zusätzlich zu einer Leistungsverminderung durch sogenanntes Cache Thrashing. Darunter versteht man den ständigen Wechsel der Cache-Inhalte durch unterschiedliche Prozesse, welche in der Regel auf unterschiedliche Datenbereiche zugreifen. Man kann dem Effekt jedoch durch Zuweisen einer höheren Affinität der Prozesse zu der jeweils ausführenden CPU entgegenwirken.
Bei Weiterentwicklungen wie zum Beispiel der NUMA (Non Uniform Memory Access) werden diese Probleme vermindert.
Prinzipiell eignen sich alle modernen CPU-Architekturen mehr oder weniger gut für den Einsatz in SMP-Systemen. Unterschiede gibt es allein in der benötigten Zusatzhardware und der zu erwartenden Leistungssteigerung pro CPU. Während mit einigen CPU-Varianten bereits relativ einfach 2- oder 4-fach-Systeme gebaut werden können, da im CPU-Bus bereits Teile der benötigten Funktionalität implementiert sind (z. B. alle Intel-Systeme mit GTL+ Bus), sind bei anderen Systemen relativ aufwändige Punkt-zu-Punkt-Verbindungen notwendig (AMD K7 und DEC/Compaq/HP Alpha mit EV6-Bus). Zur Zeit gehen die Hersteller aus Gründen der Leistungsfähigkeit dazu über, auch die benötigten Memorycontroller in die CPU zu integrieren. Dadurch wiederum ist es sinnvoll, auf dem Chip mehrere CPU-Kerne zu integrieren, da ein einziger Kern die zur Verfügung stehende Bandbreite des Speichersystems nicht immer auslasten kann. Solche Multicore-Prozessoren sollten nicht mit Hyper-Threading-fähigen Prozessoren verwechselt werden, da es sich hierbei um komplett eigenständige Kerne mit zugehöriger Infrastruktur (L1/L2 Caches, FPU, etc.) handelt.
Wikimedia Foundation.