När AMD våren 2005 lanserade en version av Opteron med två processorkärnor var det den första x86-processorn i sitt slag. Intel och AMD har sedan dess tävlat om att släppa nya versioner av processorer med två kärnor. Nu kommer nästa steg: fyra kärnor. Vi tar en titt på vad som finns i dag, vad som kommer under 2007 och vad som skiljer AMD:s och Intels lösningar åt.
I november 2006 lanserade Intel två processorer med fyra kärnor: Quad Core Xeon 5300 och Core 2 Extreme QX6700. Quad är avsedd för serverprogram och Core 2 för entusiaster. Det var de första x86-processorerna med fyra kärnor på marknaden. Det handlar inte om fyra kärnor på en krets, Intel har valt att montera två Core 2 Duo-baserade kretsar i en gemensam kapsel.
Kommunikation via cache
Precis som i Core 2 Duo-processorerna är kärnorna i respektive krets sammankopplade och kan kommunicera via det gemensamma nivå två-caheminnet på fyra megabyte. Allokering av utrymme i cacheminnet sker dynamiskt utifrån respektive processorkärnas behov. Processorkärnorna kommunicerar via den gemensamma minnesbussen och det externa minnet.
Att processorerna delar minnesbuss till externt minne innebär även att samtidiga minnesläsningar från de två olika kretsarna leder till krockar, vilket påverkar prestanda. Trots denna flaskhals visar tester att Quad Core Xeon 5300 ger mer än 50 procent bättre prestanda än tidigare Xeonprocessorer.
Strömförbrukning varierar
Quad Core Xeon tillverkas med 65-nanometersteknik. Effektförbrukningen uppges vara 80 watt, men processorerna har så många funktioner för effektkontroll att den faktiska förbrukningen varierar kontinuerligt efter programmens behov.
Quad Core Xeon 5300 är pinkompatibel med Dual Core Xeon. Processorn har även stöd för virtualisering, där system körs parallellt på processorerna.
I slutet av november presenterade AMD ett svar på Intels Core 2 Extreme QX6700. AMD Quad FX är i grunden två AMD Athlon 64 X2-processorer med två kärnor vardera. AMD använder alltså två separata processorer med två kärnor i varje i stället för en processor med två kretsar.
Det är tveksamt om det verkligen kan sägas vara en lösning med fyra processorkärnor. Vid första anblicken är det en prestandamässigt sämre lösning, men den har en del egenskaper som gör den intressant.
En viktig skillnad jämfört med Intels lösning är att varje processor har ett separat, externt minne. Det innebär att det bara är två processorkärnor som tävlar om samma minnesresurs. Vidare har varje kärna ett nivå två-cacheminne på en megabyte. Notera att processorkärnorna inte delar det cacheminnet, i stället används koherensprotokoll för att utbyta information om data.
Processorerna i sin tur kommunicerar i hastigheter upp till åtta gigabyte per sekund via hypertransportlänkar, för att även utbyta data och koherensinformation mellan de fristående processorernas cacheminnen och de externa minnena. På så vis får AMD en lösning med hög total bandbredd och kort latenstid. Samtidigt blir processorlokaliteten för ett program viktig. Programmet bör köras på de kärnor som har direktaccess till det minne programmet behöver.
AMD Quad FX-70, som är den långsammaste versionen, har en klockfrekvens på 2,6 gigahertz. Till skillnad från Intels processor kräver Quad FX speciella moderkort, som påminner om kort med plats för dubbla Opteronprocessorer.
I juni 2006 presenterade AMD sina planer på nya processorarkitekturer. Bland annat klargjordes att en processor med fyra kärnor kommer att släppas under 2007.
AMD Quad FX använder samma kapsel som den kommande processorn och enligt företaget ska det därför gå att byta ut Quad FX mot nykomlingen för att skapa ett system med åtta processorkärnor.
Går över till moduler
Den stora förändringen kallas K8L och innebär att AMD går från en i huvudsak monolitisk processorarkitektur. Tekniken modifieras och blir en modulär arkitektur.
Processorkärnor, minneskontroll, hypertransportlänkar, kommunikationsväxlar och cacheminnen är några av byggblocken. För olika marknader plockas sedan en processor ihop genom att man instanserar ett eller flera byggblock.
Från en enkel processorkärna, effektkontroll och minneskontroller för en bärbar dator eller ett inbyggt system till en processor med fyra eller ännu fler kärnor, multipla hypertransportlänkar, avancerad minneskontroller och kommunikationsväxel för servrar.
Barcelona för servern
Den första varianten av K8L kallas Barcelona och presenterades i oktober förra året. Barcelona är en processor för serverapplikationer med fyra processorkärnor på samma krets. Den är tillverkad med 65-nanometerteknik och är drygt 290 kvadratmillimeter. Processorkärnorna delar på ett nivå 3-caheminne på två megabyte.
Processorkärnorna i Barcelona har även flera förbättringar jämfört med den gamla K8-arkitekturen. Processorn kan läsa in upp till 32 bytes instruktionsinformation och 128 bit data per cykel. Läsning kan ske ur ordning. Processorn kan även påbörja exekvering av upp till fyra flyttalsinstruktioner med dubbelprecision per cykel och klarar ett antal nya instruktioner för sse 3 och bitmanipulation.
Vidare har AMD förbättrat hoppspekuleringen till att mer effektivt hantera indirekta hopp. Det ger bättre prestanda i varje enskild processorkärna. Slutligen är arkitekturen förberedd för 45-nanometersteknik.
Viktiga skillnader
Två saker skiljer sig åt väsentligt mellan Intels och AMD:s processorer. Den första är var minneskontrollen är placerad. I Intels fall finns den i kretsen som hanterar minne och pci-access. I AMD:s processorer är minneskontrollen i stället integrerad i processorn.
Fördelen med integration är att man får kortare latenstid för access till externt minne. Om ett program har ett accessmönster som gör att cacheminnena inte fungerar optimalt kommer Intels lösning att vara sämre.
Nackdelen med att ha minneskontrollen i processorn är att den antingen blir väldigt komplex och tar upp vital kretsyta i processorn eller begränsad i antalet minneskonfigurationer och minnen som stöds. Intel stödjer exempelvis i sina kretsar för Quad Core Xeon användning av fb-dimm-minnen, något som AMD kanske kommer med i Barcelona.
Den andra tekniken där Intel och AMD har valt att gå skilda vägar är hur kommunikation mellan de olika processorerna går till. Intel har valt att i huvudsak sköta den via huvudminnet och låter processorerna dela på en gemensam minnesbuss.
AMD har valt att använda hypertransport, en standardiserad kommunikationslänk för högprestandakommunikation med låg latens för att bland annat koppla samman processorer i stora multiprocessorsystem. Hypertransport används för att utbyta koherensinformation i cacheminnen, ge processorer access till minne som en annan processor är kopplad till samt för att koppla samman processorer med separata specialprocessorer, exempelvis grafikprocessorer.
Hypertransportlänkarna i Barcelona klarar sammankoppling av upp till åtta processorer, vilket ger ett system med totalt 32 kärnor i ett tätt kluster.
80 kärnor på gång
Att döma av forskningen går vi mot processorer med allt fler kärnor. Intel visade för ett drygt år sedan upp en experimentell processor med 80 kärnor, och nyligen demonstrerade forskare i Japan processorer med 512 processorkärnor. På IEDM-konferensen i slutet av 2006 presenterades resultat som visar att de sista tekniska hindren för att bygga kretsar med 22-nanometersteknik.
Tittar vi i ITRS utvecklingsplan för cmos-processer, mer känd som Moores lag, kommer 22 nanometer att börja användas 2016. I jämförelse med dagens processer på 65 nanometer ger 22 nanometer utrymme för 20 gånger fler transistorer per kvadratcentimeter än i dag. Intels processor med 80 processorkärnor bör alltså kunna finnas på ditt skrivbord om knappt tio år. Men vägen dit är lång.
Intel kommer under 2007 med varianter på de nu presenterade processorerna anpassade för vanliga skrivbordsdatorer. I slutet av november meddelade Intel även att företaget har tillverkat de första exemplaren av processorer baserade på Core 2-arkitekturen i en cmos-process med en linjebredd på 45 nanometer.
Intel ser ut att lansera versioner av Core 2-arkitekturen under 2007, där fyra processorkärnor integrerats på samma krets. Under 2008 kommer en ny mikroarkitektur som ska vara förberedd för att skala upp till 32 kärnor i samma processor.
AMD har efter uppköpet av ATI visat upp en processorlösning kallad Fusion. Fusion är en Athlon 64 där en grafikprocessor har integrerats på samma krets. Den direkta fördelen är att bandbredden mellan processor och grafikprocessor ökar samt att latenstiden minskar.
En annan fördel är att processorn enklare kan utnyttja grafikprocessorn som en exekveringsenhet för att accelerera instruktioner och olika typer av applikationer, inte bara för att bearbeta grafik. I AMD:s planer för K8L är grafikprocessorer ett av de byggblock som kan instanseras en eller flera gånger i framtida processorer.
K8L blir nya grunden
Det finns i dagsläget inte mycket information från AMD angående planer för processorer med fler än fyra processorkärnor. K8L ser dock ut att vara basen även för framtida processorer med åtta eller fler processorkärnor under de kommande två till tre åren.
Fyra kärnor. En skiss över kretsutformningen för AMD:s K8L-baserade processor med fyra kärnor.
Vidare har datortillverkaren Cray meddelat att företaget avser att använda kommande Opteronprocessorer med två, fyra och ännu fler processorkärnor i sina kommande superdatorer.
Instanser av samma processorkärna är ett lätt sätt för tillverkarna att lägga till funktioner som kan ge bättre prestanda, men precis som med cacheminnen, superskaläritet och andra arkitekturella metoder där prestandavinsten blir allt mindre för varje ny metod, ger varje ny kärna en allt mindre prestandavinst.
I fallet med antalet processorer handlar det om två olika problem: Hur kommunikation mellan processorkärnorna och mellan kärnor och minne ska fås att skala samt vilken programmeringsmodell som ska användas och hur program behöver skrivas för att utnyttja prestanda.
Delar på minnet
I både AMD:s och Intels processorer kan processer på olika kärnor kommunicera genom att skriva till variabler i minnet. Processorerna delar på samma minnesutrymme. I Intels fall har kärnorna samma accesstider till hela minnet, men som vi tidigare har noterat riskerar den gemensamma minnesbussen att bli en flaskhals när kärnorna blir fler.
I AMD:s lösning blir accesstiden från en kärna olika lång beroende på vilken del av minnet det är. Detta distribuerade minne skalar upp bättre, men samtidigt måste operativsystem och i värsta fall programtillverkaren tänka på var i minnet data placeras för att utnyttja prestanda.
Problemen är inte nya, utan är vad tillverkare av multiprocessorsystem brottats med i många år. Det som skiljer system med diskreta processorer från processorer med flera kärnor är att det i det senare fallet är lättare att bygga bussar med bredder på 256 bitar eller mer. Trots det kommer Intel och AMD att få brottas med problemen i takt med att kärnorna blir fler.
Att vi har ett problem med programmens förmåga att ta tillvara prestanda i dessa processorer är uppenbart. Prestandatester visar att en processor med fyra kärnor ger ungefär 2,5 gånger så bra prestanda som en processor med en kärna. Om programmen anpassades så att alla kärnor utnyttjades mer skulle siffran kunna förbättras.
I dag pågår många aktiviteter för att underlätta för programutvecklarna att skriva applikationer för flera kärnor. Forskaren David Pattersson, som bland annat ledde utvecklingen av disksystemet raid, har startat ett projekt kallat Ramp. Det syftar till att ta fram verktyg, metoder och modeller för att kunna ta fram program som arbetar effektivt på upp till 1 024 processorer.
Insikt hos AMD
Det finns flera tecken på att AMD inser att det är svårt för programutvecklarna att utnyttja prestanda hos flera processorkärnor.
På konferensen Hot Chips i augusti 2006 presenterade AMD exempelvis ett koncept för anti-trådar. Det innebär grovt uttryckt att en processor med flera kärnor programmässigt ser ut som en processor, och att kärnorna internt fås att hjälpas åt att köra ett enskilt program. Vi går därmed från processorer med en kärna till processorer med flera, för att sedan lägga på funktioner som får det hela att se ut som en enda processor igen!
Tyvärr är kompilatorer som automatiskt hittar parallellism något det har forskats på sedan 1960-talet, utan att kommersiellt användbara verktyg har tagits fram.
Jobb för programmerare
De närmaste åren måste programmerarna inte bara få nya verktyg, metoder och hjälp av operativsystemet, det kommer även att krävas en hel del ansträngning från dem själva.
De programtyper som har lättast att utnyttja processorer med multipla kärnor är de som hanterar flera jobb samtidigt. Typiska serverprogram, exempelvis webbservrar, passar bra med flera kärnor.
Suns Niagaraprocessor har åtta processorkärnor som var och en klarar fyra samtidiga processer. Varje kärna är enkel och ger inga lysande prestanda, men för en webbserver som måste hantera många parallella jobb fungerar den bra.
Att vi kommer att se x86-processorer med ännu fler kärnor är helt klart, men räkna med att det i första hand är
serverapplikationer som kommer att kunna utnyttja kraften.
Så går du vidare
» ramp.eecs.berkeley.edu – RAMP, Research Accelerator for Multiple Processors.
» go.techworld.se/4 – Real World Tech testar Quad Core Xeon.
» go.techworld.se/5 – Real World Tech om K8L.
» go.techworld.se/6 – Electric Engineering Times om en processor med 512 kärnor.
» Hoppspekulering – Teknik för att låta en processor gissa hur ett villkorat hopp ska utföras och därmed slippa vänta på resultatet.
» Koherensinformation – Information om tillståndet för data i cache som processorer behöver utbyta för att deras bilder av det gemensamma minnet ska vara synkroniserade.
» Multichipmodul – En kretskapsel som innehåller mer än en krets.
» Numa – Non uniform memory access. En processor har olika lång accesstid till olika delar av arbetsminnet.
» Superskalär – En processor som kan påbörja exekvering av mer än en operation i varje cykel.