Doping für CPUs — Möglichkeiten der Leistungssteigerung

Artikel-Index:

Ansätze der Optimierung per Hardware (SMP)

Sym­me­tric Multi-Processing
Dies ist die wohl bekann­tes­te und eta­blier­tes­te Art, die Leis­tung eines Com­pu­ters mög­lichst güns­tig zu stei­gern: Man behal­te alles wie es ist und füge ein­fach einen zwei­ten Pro­zes­sor hin­zu. Dass jedoch die Rech­nung 2 x 1 GHz CPU = 2 GHz auf kei­nen Fall auf­geht, ist logisch. Auch die Tat­sa­che, dass meh­re­re Pro­zes­so­ren ledig­lich bei bestimm­ten, nicht heim­ty­pi­schen Anwen­dun­gen wirk­lich Sinn machen, wird in der auf­kom­men­den Eupho­rie der Takt­fre­quenz­ver­dopp­lung ger­ne übersehen.
Sym­me­tric Mul­ti-Pro­ces­sing (kurz SMP) Com­pu­ter haben nicht nur Vor­tei­le und kön­nen unter Umstän­den sogar lang­sa­mer sein als Ein-Pro­zes­sor Sys­te­me. Doch der Rei­he nach:

Bei SMP-Sys­te­men wird die kom­plet­te exter­ne Peri­phe­rie behal­ten, ledig­lich die Anzahl der Pro­zes­so­ren steigt. Dies bedeu­tet, dass wei­ter­hin ledig­lich ein Spei­cher­ka­nal zur Ver­fü­gung steht (respek­ti­ve zwei, bei Dual-Chan­nel Inter­face Chip­sät­zen), ein AGP-Bus und ein PCI-Bus. Ver­dop­pelt wird hin­ge­gen die Anzahl sowie Grö­ße der Caches, die loka­len APIC-Con­trol­ler sowie die Anzahl der Prozessoren.
Ein aus­ba­lan­cier­tes Ein-Pro­zes­sor­sys­tem wird also durch Ver­dopp­lung einer Ein­heit gehö­rig aus dem Gleich­ge­wicht gebracht. Bei Ein-Pro­zes­sor Sys­te­men gibt es unter­schied­li­che Schwach­stel­len, unter ande­rem den nied­ri­gen FSB im Ver­hält­nis zum Pro­zes­sor­takt sowie den lang­sa­men Arbeitsspeicher.
Dass die Spei­cher­band­brei­te jedoch bei Ver­dopp­lung der Pro­zes­so­ren kon­stant bleibt, kann sich nur nega­tiv auf die Per­for­mance aus­wir­ken. Und in der Tat ist es so, dass je klaf­fen­der das Loch zwi­schen Pro­zes­sor­takt und Spei­cher­takt, des­to gerin­ger der effek­ti­ve Leis­tungs­ge­winn durch eine zwei­te CPU. Als her­vor­ra­gen­des Bei­spiel kann man die Power­Mac DP von Apple ver­wen­den. Beim Dual G4/400 oder G4/500 mit her­kömm­li­chem PC100 Arbeits­spei­cher ist der Per­for­man­ce­ge­winn gegen­über einer Ein-Pro­zes­sor Maschi­ne deut­lich spür­bar, wohin­ge­gen der Dual 1 GHz mit PC133 Arbeits­spei­cher kaum schnel­ler arbei­tet als die Ein-Pro­zes­sor Vari­an­te. Und das, obwohl der Spei­cher- als auch der Bus­takt von 100 MHz auf 133 MHz ange­ho­ben wur­den. Den­noch macht das Ver­hält­nis von CPU-Takt zu Spei­cher­takt von 7.5:1 beim Dual 1 GHz den zu erwar­ten­den Per­for­man­ce­ge­winn einen Strich durch die Rechnung.

Die nächs­te Ein­schrän­kung betrifft den AGP-Bus. Für meh­re­re Pro­zes­so­ren steht bis ein­schließ­lich AGP 2.0 ledig­lich ein ein­zel­ner AGP-Bus zur Ver­fü­gung. Mit AGP 3.0 hat Intel zwar die Mög­lich­keit der mul­ti­plen AGP-Bus­se spe­zi­fi­ziert, bis die ent­spre­chen­den Mother­boards jedoch im Han­del erhält­lich sind, wird erfah­rungs­ge­mäß noch eini­ge Zeit vergehen.
Bei gra­fisch inten­si­ven Anwen­dun­gen wie bei­spiels­wei­se 3D-Spie­len kann es durch­aus vor­kom­men, dass die Per­for­mance eines Com­pu­ters sinkt, je mehr Pro­zes­so­ren man hin­zu­fügt. Der Grund liegt schlicht und ergrei­fend an den Kon­flik­ten und dar­aus resul­tie­ren­den Still­stän­den der Pro­zes­so­ren, sog. stalls (engl.: to stall = zum Still­stand brin­gen, still­ste­hen). Je mehr Pro­zes­so­ren ver­su­chen simul­tan auf einen AGP-Bus zuzu­grei­fen, des­to mehr Rechen­zeit wird mit Still­stand vergeudet.

Der glei­che Effekt tritt im übri­gen auch beim Arbeits­spei­cher auf, hier­für exis­tiert das sog. Locking (to lock = sper­ren, am Zugang hin­dern). Mul­ti-Pro­zes­sor Ker­nel von Betriebs­sys­te­men müs­sen grund­sätz­lich eini­ge zusätz­li­che Befeh­le imple­men­tie­ren, die bei­spiels­wei­se den Arbeits­spei­cher vor par­al­le­len Zugrif­fen schüt­zen, um die Daten­kon­sis­tenz zu wah­ren. Greift ein Mikro­pro­zes­sor in einem SMP-Sys­tem auf den Arbeits­spei­cher zu, so wird zunächst der Zugriff auf die­sen für alle wei­te­ren, vor­han­de­nen Mikro­pro­zes­so­ren gesperrt und dem war­ten­den Mikro­pro­zes­sor der exklu­si­ve Zugriff gewährt. Anschlie­ßend muss der Arbeits­spei­cher wie­der für alle Pro­zes­so­ren frei­ge­ge­ben werden.
Das Pro­blem an die­sem Pro­ze­de­re ist, dass der dabei ent­ste­hen­de Over­head gigan­tisch ist. Im schlimms­ten Fall kann es vor­kom­men, dass alle Pro­zes­so­ren eines SMP-Sys­tems sich für die Dau­er des Spei­cher­sperr­vor­gangs im Still­stand befin­den. Im Nor­mal­fall betrifft dies jedoch ledig­lich den auf den Arbeits­spei­cher zugrei­fen­den Mikroprozessor.
Dass die­ser Vor­gang, der den ohne­hin schon aus­brem­sen­den Zugriff auf den Spei­cher noch wei­ter ver­lang­samt, nicht son­der­lich leis­tungs­för­dernd wirkt, kann sich wohl jeder, der den Arti­kel bis hier­her durch­ge­hal­ten hat, aus­ma­len. Das pro­ble­ma­ti­sche an die­sem Locking ist die Tat­sa­che, dass nicht nur Sin­gle-Threa­ded Appli­ca­ti­ons, also Pro­gram­me die nicht für den Betrieb auf meh­re­ren Pro­zes­so­ren kon­zi­piert sind, die­ses Locking ver­ur­sa­chen, son­dern auch ver­stärkt Mul­ti-Threa­ded Applications.