Doping für CPUs — Möglichkeiten der Leistungssteigerung

Artikel-Index:

Ansätze der Optimierung per Software (ILP/TLP/VLIW)

Stei­ge­rung des Ins­truc­tion Level Par­al­le­lism (ILP)
Eine Ebe­ne über der Opti­mie­rung ein­zel­ner Instruk­tio­nen an bestehen­de Hard­ware­struk­tu­ren und Befehls­sät­ze steht der Ins­truc­tion Level Par­al­le­lism (zu Deutsch: Par­al­le­lis­mus der Instruk­tio­nen). Dies ist nichts ande­res als die Fähig­keit, mög­lichst vie­le Instruk­tio­nen par­al­lel abar­bei­ten zu kön­nen. Je höher der ILP, des­to flot­ter kann der Pro­zes­sor theo­re­tisch arbei­ten. Eine Stei­ge­rung kann auf ver­schie­de­ne Arten erreicht wer­den, bei­spiels­wei­se Anpas­sung des Pro­gramm­codes an bestimm­te Pro­zes­sor­ar­chi­tek­tu­ren oder mas­si­ve Nut­zung von Par­al­le­li­sie­rungs­me­cha­nis­men aktu­el­ler Prozessoren.
Trotz der Tat­sa­che, dass moder­ne Pro­zes­so­ren beim Vor­gang der Par­al­le­li­sie­rung einen gro­ßen Teil der Arbeit von sich aus erle­di­gen (der Pen­ti­um 4 sei an die­ser Stel­le mal außen vor gestellt), ent­fällt der Löwen­an­teil immer noch auf den Programmierer/Compiler. Eine Anpas­sung des Pro­gramm­codes an bestimm­te gene­ra­ti­ons­über­grei­fen­de Pro­zes­sor­ei­gen­schaf­ten kann bei­spiels­wei­se den Pro­zes­sor effek­ti­ver aus­las­ten, was zu einem höhe­ren Durch­satz an gleich­zei­tig ver­ar­bei­te­ten Instruk­tio­nen und somit einem gestei­ger­ten ILP führt.
Pro­zes­so­ren brin­gen genü­gend Mög­lich­kei­ten, den Par­al­le­lis­mus zu stei­gern, bei­spiels­wei­se Super­ska­la­re Arbeits­wei­se oder Out-of-Order Execution.

Die hier­für ver­wen­de­ten Hebel sind bei­spiels­wei­se die super­ska­la­re Arbeits­wei­se oder die Out-of-Order Execution.

Stei­ge­rung des Thread Level Par­al­le­lism (TLP)
Ähn­lich wie der ILP, jedoch wie­der­um eine Ebe­ne höher als die­ser, ist der Thread Level Par­al­le­lism (zu Deutsch: Par­al­le­lis­mus der Threads). Ein moder­ner Com­pu­ter muss sehr vie­le Auf­ga­ben gleich­zei­tig erle­di­gen. So wird bei­spiels­wei­se wäh­rend dem Down­load einer Datei auf die Fest­plat­te auf die­ser gleich­zei­tig ein Anti-Viren Check vor­ge­nom­men, wäh­rend der MP3-hören­de Anwen­der fröh­lich an einem Text tippt.
All die­se ein­zel­nen Anwen­dun­gen haben dut­zen­de von ein­zel­nen Threads gleich­zei­tig offen, die, um eine opti­ma­le Per­for­mance zu errei­chen, mög­lichst par­al­lel abge­ar­bei­tet wer­den (jeder die­ser Threads führt pro Sekun­de sel­ber wie­der­um tau­sen­de bis Mil­lio­nen von Instruk­tio­nen aus). Die­sen Fak­tor der par­al­le­len Abar­bei­tung von Threads bezeich­net der TLP. Selbst­ver­ständ­lich kann es — wie beim ILP auch — auch hier zu Kon­flik­ten zwi­schen ein­zel­nen Threads oder zu gegen­sei­ti­gen Abhän­gig­kei­ten kom­men, die Auf­ga­be des Com­pi­lers liegt an der opti­ma­len Anpas­sung des Pro­gramm­codes an die Gege­ben­hei­ten der Hardware

Letzt­end­lich kann auch per Hard­ware der TLP deut­lich erhöht wer­den, bei­spiels­wei­se durch meh­re­re Pro­zes­so­ren, in Hard­ware inte­grier­tes Mul­ti-Thre­a­ding oder ande­re Tech­ni­ken, auf die eben­falls im wei­te­ren Ver­lauf des Arti­kels noch genau­es­tens ein­ge­gan­gen wird.

VLIW: Very long ins­truc­tion word
Ein letz­ter Ansatz der Par­al­le­li­sie­rung per Soft­ware ist die sog. VLIW-Tech­nik. Die­se Art der Opti­mie­rung per Com­pi­ler ist gleich­zei­tig die erfolgs­ver­spre­chends­te als auch die radi­kals­te Lösung. Nicht nur braucht der erzeug­te Pro­gramm­code zwin­gend spe­zi­ell ange­pass­te und auf die Soft­ware opti­mier­te Hard­ware, er ist auch noch dazu inkom­pa­ti­bel zum spe­zi­fi­ka­ti­ons­kon­for­mem x86 Maschi­nen­code. Effek­tiv betrach­tet arbei­ten hier jedoch Hard­ware und Soft­ware Hand in Hand, um eine opti­ma­le Aus­nut­zung der vor­han­de­nen Res­sour­cen und somit einen mög­lichst hohen ILP und TLP zu erreichen.

VLIW ist eine Erwei­te­rung der super­ska­la­ren Arbeits­wei­se von Pro­zes­so­ren und basiert auf fol­gen­der Technik:
Bei der bereits bekann­ten super­ska­la­ren Arbeits­wei­se erfolgt die opti­ma­le Anord­nung und Zusam­men­fas­sung ein­zel­ner Instruk­tio­nen zur Lauf­zeit des Pro­gramms im Leit­werk des Mikro­pro­zes­sors. Vor­tei­le sind ver­hält­nis­mä­ßig kur­ze Instruk­tio­nen und der somit nied­ri­ge Spei­cher­be­darf der Soft­ware. Nach­teil ist die nie­mals opti­ma­le Aus­nut­zung der vor­han­de­nen Ressourcen.
Bei VLIW hin­ge­gen erfolgt die Opti­mie­rung auf die Mikro­pro­zes­sor­ar­chi­tek­tur und Ver­tei­lung der par­al­lel aus­führ­ba­ren Instruk­tio­nen auf die ein­zel­nen Rechen­ein­hei­ten bereits zum Zeit­punkt der Com­pi­lie­rung des Pro­gramms in Maschi­nen­code. Der Vor­gang der Über­set­zung dau­ert dadurch zwar deut­lich län­ger, die Lauf­zei­ten der dar­aus ent­ste­hen­den Pro­gram­me kön­nen hier­durch jedoch dras­tisch redu­ziert wer­den. Ein Nach­teil ist hin­ge­gen die Län­ge der ein­zel­nen Instruk­tio­nen und der somit gestei­ger­te Spei­cher­be­darf der Programme.