Bag om Core i7
Fra Core 2 til Core i7. Det er jo næsten ikke til at følge med i længere. Intel har vedtaget en såkaldt Tic-Toc poliTic...undskyld...politik, der siger at man hvert andet år introducerer enten en ny eller en opdateret/nedskaleret version af deres CPU-portefølje. Det vil sige at når vi i år har fået Core i7, der er en helt ny arkitektur, så kommer der en opdateret udgave på 32nm til næste år. Ligesom vi så Core 2 sidst i 2006 på 65nm, og efterfølgende 45nm i januar 2008. Core i7 var udset til at ramme retail markedet i januar 2009, men de første eksemplarer har altså nået julehandlen.
Lad os se lidt nærmere på hvad der er sket siden Core 2. Med Core 2-teknikken vendte Intel ryggen til Pentium-arkitekturen, med dens enormt lange branch prediction pipeline, der krævede høj clockhastighed for at kunne hamle op med AMD's Athlon64. Og netop Athlon64 havde en revolutionerende integreret ram-controller indbygget i chippen, der fjernede en masse forsinkelser mellem nordbro og RAM. Der var direkte hul igennem fra CPU til RAM, og chippen fik data næsten omgående. Samtidig kunne Athlon afvikle flere instrultioner per clock end P4, hvilket gjorde at en 1.8GHz AMD chip kunne hamle op med en 3GHz P4. Med Core 2-teknikken fik Intel skruet op for instruktioner per clock, optimeret cachen og fik vel at mærke kastet en meget stor mængde L2 cache ind i CPU'erne. Det hjalp, og det var det der skulle til for at lægge afstand til AMD, der siden har halset bagefter på ydelse.
Integreret ram-controller
Intels arkitektur har, helt op til Core 2, været baseret på at rammene kommunikerer med nordbroen, som så igen kommunikerer med CPU. Det giver en del ulemper i form af ventetid (latency) når CPU skal hente og skrive data til og fra RAM, hvilket også udmønter sig i en forholdsvis lav rambåndbredde - altså den teoretiske maks. datamængde der kan udveksles per sekund. Sammenlignet med eksempelvis AMD's Athlon og Phenom CPU'er ligger Intel i bedste fald på 75%. Heldigvis for Intel er Core 2 så meget hurtigere til at afvikle data end AMD's Athlons, at det ikke når at få praktisk betydning. Indtil nu har den eneste måde at øge ram-båndbredden på et Intel system været ved at overclocke frontsidebussen, og dermed hastigheden på nordbroen, der så kunne snakke hurtigere med rammene.
Med Core i7 ligger ram-controlleren i CPU'en, hvilket medfører meget lave ventetider og meget høj båndbredde. Officielt understøtter Core i7 kun PC3-8500, men de fleste bundkort inklusive Intels egne, har allerede op til PC3-12800 - det er det der også hedder DDR3-1600. De første bundkort med understøttelse for DDR3 ram over 2GHz er også så småt ved at komme på markedet. Det giver en teoretisk båndbredde på 38.4GB/sek med tre styks DDR3-1600 moduler. I praksis lander vi nok omkring 25GB/sek, da DDR3-RAM som bekendt har ret høje latencies i sig selv. Men det er stadig mere end en fordobling ift. de fleste Core 2 Duo og Quad systemer. Samtidig er controlleren scalerbar, og de næste modeller af i7-arkitekturen vil kun have dualchannel DDR3 understøttelse, men stadig med 25GB/s som teoretisk båndbredde. Det er også værd at notere at der ikke er DDR2-understøttelse overhovedet.
Quick Path Interconnect ( QPI )
Med Core i7 bortfalder frontsidebussen som begreb, og nordbroen bruges kun til at kommunikere med PCIe-enhederne. I stedet har man en QPI bus, eller Quick Path Interconnect som den hedder. Den går også under navnet Common System Interface eller CSI, bare for at forvirre brugerne. Kigger vi på AMD's arkitektur så er QPI direkte sammenlignelig med HyperTransport bussen.
Det er en såkaldt point-to-point bus der både sørger for kommunikation mellem de enkelte kerner i chippen og for dataoverførsel til chipsettet. QPI'en kan skaleres efter antallet af kerner i chippen, og båndbredden kan tilpasses det markedssegment man sigter efter. Eksempelvis har en 965 model en QPI bus på 6.4GT ( Gigatransfers ), mens 940 og 920 modellerne kommer med 4.8GT som standard. 6.4GT værdien kan omsættes til 12.8GB/sek i overførsel, hver vej, samtidig! - eller som der står i skemaet herover, en bi-directional 25.6GB/sek link. 920 og 940 modellerne har så en 19.2GB/sek link, hvis vi skal følge samme regnemetode.
Optimeret cache
Intel har også arbejdet hårdt på at optimere cache strukturen. En typisk 45nm Core 2 Quad chip kan have op til 12MB L2 cache, der er fælles for de fire kerner. L1 cachen på i7 chippen er lavet på samme måde som vi kender fra en Core 2 med 32Bytes instruktionscache og 32KB datacache, men der er kun 256KB L2 cache per kerne, og "kun" 8MB fælles i form af en L3 cache.
Det man har gjort er at integrere L2 cachen i kernen, hvilket gør den ekstremt hurtig. Derfor kan man nøjes med 256KB. Level 3 cache er et nyt begreb for Intel, og den er lavet som en såkaldt inclusive cache der indeholder alle de data der måtte være i både L1 og L2 cachen. Det betyder at hvis en kerne ikke kan finde de data den skal bruge i L3 cachen, så ved den at den ikke behøver at kigge i L1 og L2 cachen hos de andre kerner efter dem. Det nedsætter trafikken mellem de enkelte CPU'er en hel del, og giver både en hurtigere chip og et lavere strømforbrug.
Level 3 cachen kan, i lighed med stort set alt andet i i7 arkitekturen, skaleres så den passer med antallet af kerner, og med de arbejdsopgaver chippen er udset til.
Hyperthreading
En gammel kending for Intel folk har sneget sig ind i i7 arkitekturen. Nehalem er således udstyret med Simultaneous Hyperthreading, der sætter hver kerne i stand til at afvikle to instruktioner næsten samtidig. Der betyder også at hver kerne optræder som to logiske kerner, så du vil se følgende når du åbner for joblisten.
Og mig der syntes at en quadcore var vildt. Her har du altså otte logiske kerner til rådighed. Det giver ikke otte-dobbelt ydelse, men samlet set vil du have en lidt bedre ydelse end hvis det blot var en quadcore. Det stiller naturligvis også nogle krav til de programmer du afvikler. Hvis ikke de er skrevet til en multicore cpu, så har du ikke vundet noget.
Second level branch prediction.
Hver kerne i CPU'en har en branch predictor. Altså en lille enhed der prøver at gætte hvad CPU'ens næste instruktion skal være. Det gør den ud fra en historik og nogle tabeller, og hvis nogen kan huske Pentium 4 så var det et eksempel på en chip der var rigtig god til at gætte, men tabellerne og historikken var bare så omfattende at der skulle meget høje clockfrekvenser til før chippen også blev hurtig. Den første 1.5GHz P4 var faktisk langsommere end en 1GHz Pentium III.
I Core i7 er der kommet en ekstra gættefunktion til i form af en second level branch predictor. Som navnet antyder så ligger den et niveau højere end den primære. Den holder så at sige øje med den primære, der stadig gætter det bedste den kan, og kan korrigere hvis der bliver gættet forkert. Den sekundære er meget langsommere end den primære, men har en meget større historik at falde tilbage på. Der hvor det kommer til at rykke er når der skal arbejdes med store mængder kode, eksempelvis databaser, men også spil kan få glæde af den nye funktion. Det nedsætter antallet af fejlberegninger internt i chippen, og har igen en positiv effekt på strømforbruget.
Strømstyring og Turbo mode
En Core i7 965 har et overfladeareal på 263 mm² med 731 mio. transistorer. Til sammenligning har en QX9650 en overflade på 214mm² og 820 millioner transistorer, og en QX6850, der er en 65nm Quadcore, har 286mm² og 582 millioner transistorer. Det kræver naturligvis noget strømstyring at holde alle de transistorer i gang på det rigtige tidspunkt. Indtil nu har det været sådan at alle kerner i en CPU har været fødet af den samme kernespænding, og uanset om kernen er aktiv eller ej så får den spænding. Dermed vil der optræde lækstrømme, og man spilder en masse energi på ingenting. Det gælder både for Intels og AMD's CPU'er.
Det nye i Core i7 er en indbygget Power Control Unit ( PCU ), der er en hel CPU i CPU'en med over 1 mio. transistorer og indbygget firmware, der udelukkende skal overvåge de enkelte kerner og strømforbruget, samtidig med at den holder øje med strømmen af data til CPU'en så den kan åbne og lukke for de enkelte kerner når arbejdspresset kræver det. Og som om det ikke var nok, så er hver kerne i i7 clocket individuelt, og kan dermed overclockes individuelt, fuldstændig som vi har set det på AMD's Phenom. Men i7 har endnu et es i ærmet, for sammen med PCU'en har man udviklet en speciel powergate, der kan lukke helt og aldeles ned for de kerner der ikke bruges, og derved eliminere lækstrømme.
Denne funktion hænger tæt sammen med en anden nyhed i i7, nemlig Turbomode. Hvis du har en dualcore CPU hvor kun den ene kerne er aktiv, og du ikke har overskredet TDP ( Thermal Design Power ), så vil systemet overclocke den ene kerne hvis arbejdpresset stiger, indtil den når sin TDP værdi og åbner for kerne to. Det har været forsøgt indført med de mobile penryn-processorer, men det fungerede ikke ret godt. På i7 er funktionen optimeret, og du kan således have en chip der på de lange stræk kører som en overclocket dualcore, uden at du spilder strøm på to inaktive kerner.
Det ser altså ud til at Intel har fat i den lange ende af quadcore rebet. Core i7 er et farvel til hele den måde at bygge systemer på som Intel har benyttet siden ruder konge var knægt. Og vi stopper ikke her. Nordbroen på LGA1366 systemerne er reduceret til at være bindeled til PCIe-bussen og sydbroen, men på de næste i7 modeller i LGA1156 serien vil nordbroen bortfalde helt. De kommende Lynnfield og Havendale CPU'er har indbygget PCIe-controller, og sidstnævnte bliver den første Intel CPU med indbygget grafikkort. Det gør at man kan nøjes med to chips per system, nemlig CPU og sydbro, hvilket vil sænke omkostningerne voldsomt, og samtidig gøre det meget nemmere at designe printplader. Det er også en ubetinget fordel når der skal laves bærbare PC'er.