Multithreading
En processorproducents fornemste opgave må være at udvikle processorer, der er mere effektive end forgængerne. Der er mange forskellige måder at gøre dette, og Intel har kastet sig over én af dem: Multithreading.
Simultaneous Multithreading (SMT) betyder samtidig udførsel af flere arbejdsopgaver, altså eksekvering af flere rutiner eller tråde på én gang.
I forvejen kender man systemer, hvor programmer afvikles samtidig på to eller flere processorer. Et stykke software sørger for at fordele de rutiner, der skal udføres, imellem processorerne. Denne metode skal for eksempel udnyttes ved brug af IBM?s Power4-processorer, hvor to CPU'er er anbragt på samme chip.
Intel har en anden indgangsvinkel til multithreading. Det er nemlig planen at få en enkelt processor til at være i gang med flere opgaver samtidig. Intels teknologi har været kendt under kodenavnet Jackson i et stykke tid. Nu er teknologien imidlertid sprunget ud som hyper-threading - intet mindre kunne gøre det.
Hyper-threading vil optræde første gang i Xeon MP, der er Intels kommende 32-bit processor til servere med fire eller flere processorer.
Bedre ydelse
Der er mange måder til at få en processor til at yde mere. Man kan sætte clockfrekvensen op, bygge flere regneenheder ind i processoren eller tilføje nye instruktioner, der er mere effektive end de gamle. Alle disse metoder har nogle ulemper, som vi kort vil gennemgå.
Fysikkens love sætter grænser for processorens ydelse ved et givent valg af produktionsteknologi. For at sætte frekvensen op skal man udvikle nye produktionsmetoder og materialer, og det er lettere sagt end gjort.
Derudover kan man få processoren til at dele instruktionerne op i mindre bidder, som hver for sig kan klares langt hurtigere end hele instruktionen. Hvis en enkelt instruktion deles op i mange små dele, som der arbejdes på samtidig forskellige steder i processoren, kan man sætte frekvensen i vejret. Denne måde at øge frekvensen benyttes i alle nyere processorer, ikke mindst i Pentium 4.
Når instruktionerne deles op, kan der arbejdes med flere instruktioner på én gang. Problemet med denne metode er, at man skal kende instruktionernes rækkefølge på forhånd. Derfor er en del af processoren sat af til at forsøge at forudsige denne rækkefølge, men det lykkes ikke altid. Når det går galt, må processoren starte forfra, og det koster dyrt i ydelse. Jo flere instruktioner, der bearbejdes samtidig, jo værre er det, når det går galt. Derfor er det begrænset, hvor mange instruktions-bidder, der kan behandles samtidig; der er med andre ord grænser for, hvor dyb en processors pipeline kan være.
Problemet er lidt det samme, hvis man vælger at bygge flere regneenheder ind i processoren, så kan man også få udført flere instruktioner pr. clockcycklus. Instruktionerne skal komme i en bestemt rækkefølge, før man får alle regneenhederne i arbejde samtidig.
Endelig kan man tilføje nye instruktioner, som udfører en given opgave mere effektivt end de traditionelle x86-instruktioner. Instruktionssættene MMX, 3DNow!, SSE og SSE2 er alle udviklet til at få processoren til at kunne klare flere regneopgaver i én omgang. Disse nye instruktionssæt har et begrænset virkefelt, typisk multimedie-brug, og derfor er de ikke vejen frem.
Hyper-threading
Målet med hyper-threading er at få tråd nummer to til at udnytte de ressourcer, som ikke optages af tråd nummer et. Lad os tage et par eksempler: En mislykket forudsigelse af instruktionernes rækkefølge i den ene tråd betyder, at processoren må starte forfra på tråden. Rent teknisk snakker man om, at processorens pipeline flushes, og det vil normalt betyde, at processoren ikke laver noget i et antal clockcykler. Med Simultaneous Multithreading kan en anden tråd udnytte de ressourcer, der ellers ville gå til spilde.
Man kan også forestille sig, at processorkernen leder i cachen efter data til den ene tråd, men bliver nødt til at hente data i systemhukommelsen i stedet. Det betyder lidt ventetid, hvor frie ressourcer kan benyttes af den anden tråd.
Gennemført multithreading kræver, at styresystemet forstår at sætte flere tråde i gang samtidig. Intels hyper-threading er implementeret på en måde, så styresystemet blot skal igangsætte tråde, som om at der er tale om et system med flere processorer.
Ifølge Intel er det lykkedes at øge ydelsen ved afvikling af server-software med op til 30 procent ved at lade processoren afvikle to tråde samtidig.
Hvis applikationerne optimeres til hyper-threading, kan dette tal bliver endnu større. Indtil videre er det servere, der står for skud, men det er ikke til at sige, om hyper-threading bliver så stor en succes, at teknologien på sigt også vil blive brugt i processorer til almindelige pc'er.