Doping für CPUs — Möglichkeiten der Leistungssteigerung
Ansätze der Optimierung per Hardware (SMP)
Symmetric Multi-Processing
Dies ist die wohl bekannteste und etablierteste Art, die Leistung eines Computers möglichst günstig zu steigern: Man behalte alles wie es ist und füge einfach einen zweiten Prozessor hinzu. Dass jedoch die Rechnung 2 x 1 GHz CPU = 2 GHz auf keinen Fall aufgeht, ist logisch. Auch die Tatsache, dass mehrere Prozessoren lediglich bei bestimmten, nicht heimtypischen Anwendungen wirklich Sinn machen, wird in der aufkommenden Euphorie der Taktfrequenzverdopplung gerne übersehen.
Symmetric Multi-Processing (kurz SMP) Computer haben nicht nur Vorteile und können unter Umständen sogar langsamer sein als Ein-Prozessor Systeme. Doch der Reihe nach:
Bei SMP-Systemen wird die komplette externe Peripherie behalten, lediglich die Anzahl der Prozessoren steigt. Dies bedeutet, dass weiterhin lediglich ein Speicherkanal zur Verfügung steht (respektive zwei, bei Dual-Channel Interface Chipsätzen), ein AGP-Bus und ein PCI-Bus. Verdoppelt wird hingegen die Anzahl sowie Größe der Caches, die lokalen APIC-Controller sowie die Anzahl der Prozessoren.
Ein ausbalanciertes Ein-Prozessorsystem wird also durch Verdopplung einer Einheit gehörig aus dem Gleichgewicht gebracht. Bei Ein-Prozessor Systemen gibt es unterschiedliche Schwachstellen, unter anderem den niedrigen FSB im Verhältnis zum Prozessortakt sowie den langsamen Arbeitsspeicher.
Dass die Speicherbandbreite jedoch bei Verdopplung der Prozessoren konstant bleibt, kann sich nur negativ auf die Performance auswirken. Und in der Tat ist es so, dass je klaffender das Loch zwischen Prozessortakt und Speichertakt, desto geringer der effektive Leistungsgewinn durch eine zweite CPU. Als hervorragendes Beispiel kann man die PowerMac DP von Apple verwenden. Beim Dual G4/400 oder G4/500 mit herkömmlichem PC100 Arbeitsspeicher ist der Performancegewinn gegenüber einer Ein-Prozessor Maschine deutlich spürbar, wohingegen der Dual 1 GHz mit PC133 Arbeitsspeicher kaum schneller arbeitet als die Ein-Prozessor Variante. Und das, obwohl der Speicher- als auch der Bustakt von 100 MHz auf 133 MHz angehoben wurden. Dennoch macht das Verhältnis von CPU-Takt zu Speichertakt von 7.5:1 beim Dual 1 GHz den zu erwartenden Performancegewinn einen Strich durch die Rechnung.
Die nächste Einschränkung betrifft den AGP-Bus. Für mehrere Prozessoren steht bis einschließlich AGP 2.0 lediglich ein einzelner AGP-Bus zur Verfügung. Mit AGP 3.0 hat Intel zwar die Möglichkeit der multiplen AGP-Busse spezifiziert, bis die entsprechenden Motherboards jedoch im Handel erhältlich sind, wird erfahrungsgemäß noch einige Zeit vergehen.
Bei grafisch intensiven Anwendungen wie beispielsweise 3D-Spielen kann es durchaus vorkommen, dass die Performance eines Computers sinkt, je mehr Prozessoren man hinzufügt. Der Grund liegt schlicht und ergreifend an den Konflikten und daraus resultierenden Stillständen der Prozessoren, sog. stalls (engl.: to stall = zum Stillstand bringen, stillstehen). Je mehr Prozessoren versuchen simultan auf einen AGP-Bus zuzugreifen, desto mehr Rechenzeit wird mit Stillstand vergeudet.
Der gleiche Effekt tritt im übrigen auch beim Arbeitsspeicher auf, hierfür existiert das sog. Locking (to lock = sperren, am Zugang hindern). Multi-Prozessor Kernel von Betriebssystemen müssen grundsätzlich einige zusätzliche Befehle implementieren, die beispielsweise den Arbeitsspeicher vor parallelen Zugriffen schützen, um die Datenkonsistenz zu wahren. Greift ein Mikroprozessor in einem SMP-System auf den Arbeitsspeicher zu, so wird zunächst der Zugriff auf diesen für alle weiteren, vorhandenen Mikroprozessoren gesperrt und dem wartenden Mikroprozessor der exklusive Zugriff gewährt. Anschließend muss der Arbeitsspeicher wieder für alle Prozessoren freigegeben werden.
Das Problem an diesem Prozedere ist, dass der dabei entstehende Overhead gigantisch ist. Im schlimmsten Fall kann es vorkommen, dass alle Prozessoren eines SMP-Systems sich für die Dauer des Speichersperrvorgangs im Stillstand befinden. Im Normalfall betrifft dies jedoch lediglich den auf den Arbeitsspeicher zugreifenden Mikroprozessor.
Dass dieser Vorgang, der den ohnehin schon ausbremsenden Zugriff auf den Speicher noch weiter verlangsamt, nicht sonderlich leistungsfördernd wirkt, kann sich wohl jeder, der den Artikel bis hierher durchgehalten hat, ausmalen. Das problematische an diesem Locking ist die Tatsache, dass nicht nur Single-Threaded Applications, also Programme die nicht für den Betrieb auf mehreren Prozessoren konzipiert sind, dieses Locking verursachen, sondern auch verstärkt Multi-Threaded Applications.