Doping für CPUs — Möglichkeiten der Leistungssteigerung

Artikel-Index:

Neue und alte Möglichkeiten der Leistungssteigerung — per Hardware (SMT Fortsetzung)

Simul­ta­neous Mul­ti-Thre­a­ding (Fort­set­zung)
Da eine detail­lier­te Abhand­lung von Hyper-Thre­a­ding den Rah­men die­ses Arti­kels spren­gen wür­de, wer­de ich mich auf die Eck­da­ten beschrän­ken, beson­ders auf den Unter­schied zwi­schen einem Pro­zes­sor mit Hyper-Thre­a­ding und einem ohne Hyper-Threading.

Caches
Die Caches wer­den gemein­sam benutzt, das heißt jedem Pro­zes­sor steht effek­tiv ledig­lich der hal­be Cache sowie die hal­be Band­brei­te zu. Jedoch muss man bei den Caches unter­schei­den zwi­schen dem L1 Trace Cache sowie allen wei­tern Caches (L1 Data Cache, L2 Cache, L3 Cache).

Der L1 Trace Cache ist der Ersatz für den ursprüng­lich L1 Ins­truc­tion Cache genann­ten Teil der L1 Cache Struk­tur. Im Gegen­satz zu die­sem, spei­chert der Trace Cache jedoch die bereits deco­dier­ten µOps ab. Prin­zi­pi­ell ein her­vor­ra­gen­des Vor­ge­hen, jedoch auf­grund der klei­nen Grö­ße des L1 Trace Cache (Intel spricht von 12.000 Ein­trä­gen, was etwa 8 KB ent­spricht; zum Ver­gleich: Der AMD Ath­lon XP hat 64KB L1 Code Cache) stark aus­ge­bremst. Bei zwei logi­schen Pro­zes­so­ren sieht die Situa­ti­on noch deut­lich dras­ti­scher aus, schließ­lich ste­hen hier jedem logi­schen Pro­zes­sor nur noch 6.000 Spei­cher­plät­ze für µOps im wich­tigs­ten aller Caches zu. Jeder der logi­schen Pro­zes­so­ren ver­fügt über einen eige­nen, vom ande­ren unab­hän­gi­gen Zei­ger in den Trace Cache, so dass Kon­flik­te von Haus aus ver­mie­den werden.
Ver­su­chen bei­de logi­sche Pro­zes­so­ren gleich­zei­tig auf den L1 Trace Cache zuzu­grei­fen, so wird ihnen abwech­selnd Zugriff gewährt. Auch hier wird ein vor­han­de­nes Nadel­öhr noch­mals ver­engt, schließ­lich kann der L1 Trace Cache gra­de mal drei µOps pro Takt­si­gnal an einen Pro­zes­sor wei­ter­ge­ben, was sich bei zwei logi­schen auf theo­re­ti­sche 1,5 µOps pro Takt­si­gnal verringert.
Wenn ein logi­scher Pro­zes­sor sich im Still­stand befin­det oder kei­ne Daten aus dem L1 Tra­che Cache benö­tigt, so hat der ande­re die vol­le Band­brei­te und Zugriffs­zeit zur Verfügung.

Der L1 Data Cache, der L2 Cache sowie der L3 Cache hin­ge­gen, kön­nen von bei­den logi­schen Pro­zes­so­ren gemein­sam genutzt wer­den und alle Ein­trä­ge, unab­hän­gig davon wel­cher logi­sche Pro­zes­sor den Ein­trag gemacht hat, von allen logi­schen Pro­zes­so­ren gele­sen wer­den. Logi­scher­wei­se sind hier­durch Kon­flik­te vor­pro­gram­miert, jedoch wur­de hier sei­tens Intel eis­kalt kal­ku­liert: Man nimmt bewußt den even­tu­ell durch Kon­flik­te ver­ur­sach­ten Per­for­mance­ver­lust in Kauf, rech­net jedoch mit einem durch die gemein­sa­me Nut­zung höhe­ren Leis­tungs­ge­winn. So kann bei­spiels­wei­se ein logi­scher Pro­zes­sor bereits die Daten aus dem Spei­cher in den Cache laden, die der ande­re in Kür­ze benö­ti­gen wird. Bei Ser­ver Appli­ka­tio­nen ist dies übri­gens ganz nor­ma­les Ver­hal­ten (sie­he auch Cache-Pre­fetch Logik des IBM Power4) und auf­grund der Tat­sa­che, dass der Xeon MP auf den Ser­ver­markt abzielt, ist die­se Lösung ver­mut­lich die geschickteste.
Pro­ble­ma­tisch wird die Ange­le­gen­heit beim Pen­ti­um 4 HT, da die­ser auf dem SOHO-Markt abzielt. Wie er sich in der Pra­xis bewäh­ren wird, muss sich jedoch erst noch zeigen.