Doping für CPUs — Möglichkeiten der Leistungssteigerung

Artikel-Index:

Ansätze der Optimierung per Hardware

VLIW: Very long ins­truc­tion word
Im letz­ten Absatz wur­de erwähnt, dass bei der VLIW Phi­lo­so­phie die Hard- und Soft­ware Hand in Hand zusam­men­ar­bei­ten müs­sen, um einen mög­lichst hohen Durch­satz an Instruk­tio­nen und Threads zu errei­chen. Die Anpas­sung der Hard­ware an VLIW stellt somit gleich­zei­tig den Ein­stieg in das nächs­te und deut­lich aus­führ­li­che­re Kapi­tel der Opti­mie­rung der Hard­ware an bestehen­den Pro­gramm­code dar.

Das fol­gen­de fik­ti­ve Bei­spiel ist ent­nom­men aus dem Kapi­tel “Intel Ita­ni­um: 64-Bit und neue Archi­tek­tur für den Ser­ver­markt” des Arti­kels “64-Bit CPUs für’s Wohn­zim­mer: Inno­va­ti­on oder Mar­ke­ting­ge­blub­ber?”, hier auf Pla­net 3DNow!.

Bei VLIW (Very Long Ins­truc­tion Word) han­delt es sich um eine Erwei­te­rung der Super­ska­la­ren Arbeits­wei­se. Der Mikro­pro­zes­sor ver­fügt, wie bei die­ser auch, über meh­re­re Rechen­ein­hei­ten, die auf bestimm­te Ope­ra­tio­nen spe­zia­li­siert sind (ALU, FPU, etc.). Im Gegen­satz zur rei­nen super­ska­la­ren Arbeits­wei­se erfolgt die Opti­mie­rung der Aus­füh­rung jedoch nicht im Leit­werk des Mikro­pro­zes­sors, son­dern bereits im Vor­aus durch den Com­pi­ler. Das Leit­werk hat nun nur noch die Auf­ga­be, die ein­zel­nen Instruk­tio­nen an die ein­zel­nen Rechen­ein­hei­ten zu ver­tei­len, nicht jedoch die­se auf ihren Inhalt zu analysieren.

Im obi­gen VLIW-Kern eines Mikro­pro­zes­sors ver­fügt die­ser über sechs Rechen­ein­hei­ten, sowie eine Instruk­ti­ons­län­ge von 32 Bit. Ein super­ska­la­rer Pro­zes­sor wür­de nun ein Instruk­ti­ons­re­gis­ter von 32 Bit Län­ge besit­zen, das Leit­werk die­ses lesen, deco­die­ren und anschlie­ßend an die ent­spre­chen­de Rechen­ein­heit wei­ter­lei­ten. Ein VLIW Pro­zes­sor besitzt hin­ge­gen ein Instruk­ti­ons­re­gis­ter von

Instruk­ti­ons­län­ge * Anzahl der Recheneinheiten

also im obi­gen Fall 32 Bit * 6 Rechen­ein­hei­ten = 192 Bit. Eine Instruk­ti­on ent­hält also maxi­mal sechs Sub-Instruk­tio­nen. Die­se Ein­tei­lung erle­digt der Com­pi­ler, so dass der Pro­gramm­code immer opti­mal auf die Maschi­ne abge­stimmt ist. Intel nennt die­se Tech­nik im Ita­ni­um EPIC (Expli­cit­ly par­al­lel Ins­truc­tion Com­pu­ter), ein Com­pi­ler für IA-64 muss somit EPIC-Kom­pa­ti­blen Maschi­nen­code erzeugen.