Multitråd-forklaring


For å spre jobber over flere prosessorer, må programmer skrives om fra "en tråd" til å ha flere. En tråd er en hel jobb eller en del av en jobb som kjøres på en prosessorkjerne. I XP eller Vista får du vist antall tråder for hver applikasjon og da kan ting i utgangspunktet se greit ut: De fleste større applikasjoner har mange tråder, for det øker ytelsen selv når du bare har en prosessor/kjerne.

Word er for eksempel flertrådet, men hver tråd er en distinkt "jobb" - en tråd tegner opp grensesnittet, en sjekker etter stavefeil og en tredje kan for eksempel lagre filen fortløpende til disk. Dette er smart fordi brukeren da ikke trenger å vente med å skrive til filen er skrevet til disk.

Slik har det vært lenge - dette er egentlig bare såkalt multitasking. Mens du skriver i Word, forteller plutselig epost-programmet ditt at det har kommet en ny epost. Jobbene stables i kø og prosessoren tar dem fortløpende. Når en tråd venter på at harddisken skal gjøre seg ferdig, kan en annen tråd som viser frem applikasjonen la deg fortsette å taste.

Dette er enkelt å lage. Det er å dele en jobb i flere tråder som er så utrolig mye vanskeligere. At en applikasjon skryter av å ha flere tråder betyr ikke noe.


Det som kan kalles ekte multitråds-applikasjoner er mye vanskeligere, men gir voldsomme fordeler for en del oppgaver. For å øke Excels evne til å kverne store regneark, er den innerste regnemotoren i Office 2007 mye raskere fordi den deler en jobb i flere tråder og kan dermed bruke flere kjerner samtidig. Det samme gjelder prosessor-tunge jobber som bildebehandling, video-jobbing og mye annet.

Men selv i den nye Office-pakken er det bare regnemotoren i Excel som er ekte flertrådet - Powerpoint er ikke det. Listen over applikasjoner der ytelses-krevende prosesser er delt i flere tråder er foreløpig veldig kort. digi.no har forsøkt å spore opp en slik listen, men hverken Microsoft eller Intel har noe slikt, noe som understreker problemet. Så langt har digi.no bare fått indikasjoner på at Adobe har gjort jobben i Photoshop og i den nye Acrobat Reader 8.0.

Microsoft har også gjort jobben i det nye bildebehandlingsprogrammet som følger med i Vista (bildet over), noe som gir en dramatisk forbedring. I enkelttrådsprogrammer får du en liten forhåndsvisning når du skal justere farger. Men når denne store regnejobben er delt i flere tråder endres dette fullskjermbilde av appelsiner på 3-4 MB bildet i sanntid når du drar i justeringsbryterne på høyre side. digi.no testet på ny PC med en Intel Core 2-brikke.

- Å få en jobb til å dele seg på flere prosessor-kjerner er utrolig mye vanskeligere, påpeker Zakariassen. Det stiller helt andre krav til kompetanse og opplæring, skolene underviser ikke noe i dette, der lærer man såkalt sekvensiell programmer for kjøring på en prosessor.


Årsaken til at det er så mye vanskeligere er den samme som når mennesker skal dele på en felles oppgave.

Når man går fra en til to personer som for eksempel skal sortere en bunke skjema, dobles ikke farten, for det går med mye tid til å koordinere arbeidet. To tråder i et program som deler på samme jobb samtidig skal blant annet hele tiden sjekke at de ikke jobber med samme data og en rekke andre ting. Og dette blir bare verre ettersom antallet kjerner øker, noe som er kjent som Amdahls lov.

Grafen over er fra Microsoft. Den blåfiolette nederste delen av hver stolpen viser når prosessoren virkelig jobber. Resten av tiden venter prosessoren på å hente data og andre oppgaver. Som grafen viser faller tiden kjernen/prosessoren får jobbe nesten mot null etterhvert som antallet kjerner/prosessorer stiger.

IT-bransjen må klare å takle problemet, for selv Microsoft påpeker at hver kjerne nesten ikke kommer til å gi mer ytelse fremover - Intel og AMD skal bare øke antall kjerner. Intel prater allerede om 50 kjerner i en fysisk brikke.

- Det er derfor Amdahls lov, ikke Moores lov, som vil dominere IT-bransjen fremover nå, påpeker Zakariassen.

Amdahls lov er komplisert, men litt forenklet sier den at jo flere kjerner, jo mindre prosentmessig reell ytelsesforbedring får man. Dette er fordi stadig mer ytelse spises opp av koordingeringen. Det er ikke løst på de fleste server-applikasjoner - der installerer man stort sett bare flere kopier av applikasjonen som går i parallell og fordeler brukere utover disse.

Det finnes ingen klar løsning i sikte.

- Forskere som driver med tungregning og dataklynger har forsket på skaleringsproblemet i 20-30 år uten noen signifikante gjennombrudd, forteller Microsoft-evangelisten.


Det eneste kjente alternativet er å lage såkalte asynkrone systemer der man i programvaren fastsetter hvilken kjerne hver tråd skal bruke. Dette prøvde Sun og gav det opp, for det er ekstremt komplisert å skrive slik programvare, påpeker Zakariassen overfor digi.no. Den eneste som gjør det i dag er Sonys nye Playstation 3 (bildet over) som har en IBM Cell-prosessor med hele ni kjerner. Sony-sjef Phil Harrison medgir da også i et intervju med arstechnica.com at de første spillene bare utnytter halvparten av kapasiteten til maskinen.

Zakariassen forteller at Microsoft bruker signifikante deler av sitt forskningsbudsjett til å forske på problemet som nå møter IT-bransjen. Et av de langsiktige målene er klare:

- Håpet er å klare å lage en kompilator som automatiserer jobben med å lage flere tråder slik at utviklere kan skrive vanlige sekvensielle applikasjoner og at kompilatoren oversetter til flere jobber og tråder der det gir en gevinst, påpeker Zakariassen.

Til toppen