Symmetrisches Multiprozessorsystem

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 22. Januar 2005 um 10:43 Uhr durch Christoph Buhlheller (Diskussion | Beiträge) (typo). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Zur Navigation springen Zur Suche springen

Symmetrisches Multiprocessing (SMP) ist eine Multiprozessor-Architektur, bei der die laufenden Prozesse auf alle Prozessoren verteilt werden können (beim asymmetrischen Multiprocessing wird jedem CPU eine Aufgabe fest zugewiesen, z. B. führt CPU0 Betriebssystemaufrufe und CPU1 Benutzerprozesse aus). Symmetrisches Multiprocessing ist seit Ende der 80er-Jahre die Standard-Architektur für Multiprozessor-Maschinen mit bis zu 16 CPUs, während asymmetrisches Multiprocessing praktisch nicht mehr zum Einsatz kommt. Die Möglichkeit, 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. Der schnelle Wechsel der laufenden Prozesse führt außerdem zu einer Leistungsverminderung durch so genanntes 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 Unified Memory Architecture) 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-Wege-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 Bandbeite des Speichersystems nicht immer auslasten kann. Solche "Dual Core"-CPUs sollten nicht mit Hyperthreading-fähigen Prozessoren verwechselt werden, da es sich hierbei um komplett eigenständige Kerne mit zugehöriger Infrastuktur (L1/L2 Caches, FPU, etc) handelt.