# Intel Core 2

Core 2 duo Intel Core mikroarkitekturan oinarritutako bi nukleoko prozesadoreak dira. Pentium-en ondorengoa da, teknologia berria erabiltzen du. Intel-entzako berrikuntza handia izan da, hainbeste arrakasta eman dion Pentium izena alde batera uzten du-eta. Segurtasunean eta birtualizazioan hobetzen du aurreko mikroprozesadorea. 64 biteko konputazioa erabiltzen du.
Prozesadoreak 65 nm-ko transistoreak erabiliz eraiki dira.

## Ezaugarriak

Intelen aurreko Pentium D eta Core Duo prozesadoreetan oinarritzen da. Hori dela eta, aurreko sistema eragile eta programekin guztiz bateragarria da. Baina, aurreko mikroprozesadoreek baino emaitza hobeak lortzen ditu, nahiz eta, erloju maiztasun txikiagoetan aritu. Hori dela eta, energia kontsumoa gutxitzea lortzen du. Gainera, behar dituen elementuak soilik mantentzen ditu aktibatuta, kontsumoa are gehiago gutxituz.
IA-32 eta I-64 arkitekturetan oinarritzen da (konputagailu pertsonaletan erabat zabalduta dagoen x86 arkitektura inplementatzen du). Hala ere, mikroarkitektura berri bat inplementatzen du, Core Duo izenekoa.
Core 2 Duo prozesadoreak aurreko prozesadoreetatik onena hartzen du eta handitu egiten du. Hau da, agindu bakoitzaren urratsetan hardware gehiago sartzen du; deskodegailu gehiago, UAL gehiago, buffer gehiago, erregistro gehiago, e.a. Azken finean, diseinatzaileek ongi funtzionatzen zuen teknologia hartu dute eta bertatik gehiago jarri dute, berrikuntza gutxi batzuk sartuz, emaitza hobeak lortuz.
Core 2 Duo prozesadoreak desordena-desordena eredua jarraitzen du.
Lehenengo aldiz 2006ko uztailaren 27an merkaturatu zen. Prozesadore hauen ezaugarririk nagusiena EM64T arkitektura inplementatzen duela da, beste hainbat agindu multimediekin batera.
Txip bakarra da eta bertan bi PUZ ikus daitezke, bus komun batez bidez komunikatuta. Txipean bertan bigarren mailako cachea ere ikusten da, bi nukleoek konpartitua.
4 mailatako supereskalarra da. Honek esan nahi du lau agindu batera exekutatu ditzakeela.

## Arkitektura

x86-64 arkitekturan oinarrituta dago. Arkitektura hau AMD etxeak sortu zuen ordura arteko x86 arkitekturan oinarrituta. Ezaugarri esanguratsuena 64 biteko helbideak erabiltzen dituela da. Erregistroak orokorrean x86 arkitekturako edukiera bikoitza dute eta denera gehiago dira, gainera. Arkitektura hau, hala ere, guztiz bateragarria da x86 arkitekturarekin. Intelen aldaera den EM64T arkitekturan oinarrituta dago Intel Core 2 Duo, batzuetan I-64 izenaz ere ezagutzen dena.

#### x86-64

64 bitetan oinarritutako mirkroprozesadore arkitektura da. Bere agindu multzo propioa du eta Intel-en x86 arkitekturan oinarritzen da, zeina barneratzen duen. AMD etxeak diseinatu zuen eta AMD64 izena eman zion, bestalde Intelek EM64T bezala bataiatu zuen. Konpainia bakoitzak, halere, oso antzeko inplementazioa egin du.

##### EM64T

Extended Memory 64-bit Technology (EM64T), 64 bitera zabaldutako memoria teknologia.
Ezaugarriak
* 64 bit zabaleko helbideak
* 64 bitetako erakusleak
* 64 bitetako osokoak
* 64 bitetako erregistroak
* 1 TB baino gehiago helbideratzeko ahalmena

#### Inplementazioa

Hasiera batean Intel 64 izenarekin ezagutzen zen arkitektura hau Pentium 4-aren E berrikuspenean inplementatu zen lehenengo aldiz. Gerora Core 2 Duo mikroprozesadoreetan inplementatu da, baita Celeron D familian ere. Orain arte prozesadore hauek inplementatu dute: Intel NetBurst Intel Xeon (Nocona modelotik aurrerako modelo batzuk) Intel Celeron D (Prescott modelotik aurrerako modelo batzuk) Intel Pentium 4 (Prescott modelotik aurrerako modelo batzuk) Intel Pentium D Intel Pentium Extreme Edition Intel Core mikroarkitektura Intel Xeon (Woodcrest) Intel Core 2

## Exekuzioa

Atal honetan deskribatuko ditugu prozesadoreak nola exekutatzen dituen aginduak eta nola metatzen dituen datuak. Atal honetan, halaber, azalduko ditugu nolakoak diren exekuzio inguruneak eta horretarako behar diren erregistroen gain-begirada bat emango dugu.

#### Exekuzio moduak

Exekuzio moduak zein agindu, eta arkitekturako zein baliabide, ustiatuko diren baldintzatzen du. Intel 64 arkitekturak 3 herentziako exekuzio modu ditu: modu babestua, modu erreala eta sistemaren kudeaketa modua. Herentzia modu honetan ordenagailuak x86 arkitektura izango balu bezala funtzionatzen du eta ezin dira 64 bitetako programak exekutatu.
Intel 64 arkitekturak berezkoak dituen beste bi exekuzio modu ditu, IA-32 modua, deitzen diotena (beste zenbait tokitan modu luzea, long mode, deitua). Modu honetan bi azpi-modu daude: bateragarritasun modua eta 64 bit modua.
* Modu babestua: Jatorrizko modua da hau. Alegiazko 8086 modua exekutatzeko ahalmena dago modu babestu honetan, multi ataza ingurune batean. Hala ere, alegiazko modu hau ez da prozesadore modu bat bere baitan, modu babestuaren atributu bat besterik ez da, zeina exekutatzen ari den edozein atazak gaitu dezakeen.
* Modu erreala: Modu honek Intel 8086 prozesadorearen programazio ingurunea eskaintzen du. Baita modu babestura edo sistemaren kudeaketa modura pasatzeko ahalmena ere.
* Sistemaren kudeaketa modua (SMM): Modu honek sistema eragileari mekanismo gardenak eskaintzen dizkio plataformarekin zehatzak diren funtzioak egikaritzeko, hala nola, energia aurrezpena edota sistemaren segurtasuna. Prozesadorea SMM modura pasako da kanpoko SMM eten bat pizten denean edo SMI bat jasotzen duenean.
Modu honetan prozesadoreak banandutako helbide espazio bat hartzen du, exekutatzen ari zen prozesuaren ingurunea gordetzen duen bitartean. SMM kode espezifikoa orduan modu gardenean exekutatuko da. SMM egoeratik itzultzerakoan prozesadorea aurreko egoerara bueltatuko da.
* Bateragarritasun modua: 64 bitetako sistema eragile batean erabil daiteke prozesadore modu hau. Modu honetan aurreko 16 eta 32 bitetarako konpilatutako programak exekutatu daitezke, 64 bitetara birkonpilatzeko beharrik gabe. Bateragarritasun modu hau sistema eragileak gaitu behar du. Honek esan nahi du, 64 bitetako sistema eragile batek 32 bitetako aplikazioak zuzenean exekutatu ditzakeela (birkonpilaziorik gabe) bateragarritasun moduan. 32 bitetako modu babestuaren baliokide da. Modu honek 16 edo 32 bitetako helbideak eta eragigaiak erabiltzen ditu. Aplikazioek soilik memoriako lehenengo 4GB-ak atzitu ditzakete. Hala eta guztiz ere, 4 GB baino gehiago atzitu ditzakete PAE (Physical Address Extensions) teknika erabiltzen badute.
* 64 bit modua: Modu honek 64 bitetako sistema eragileei 64 bitetarako idatzita dauden programak exekutatzea ahalbidetzen die. Modu honetan segidan deskribatuko diren erregistro guztiak erabiltzen dira eta 64 bitetako zabalera guztia aprobetxatzen dute. Modu hau, aurrekoa bezala, sistema eragileak gaitu behar du. Oinarrizko helbideak 64 bitetakoak dira eta eragigaiak 32 bitetakoak. Hala ere, teknika desberdinak erabiliz eragigaiak 64 bitetakoak ere izan daitezke. Honen eraginez, existitzen diren agindu askok 64 bitetako helbideak eta datuak onartzeko moldatu dira.

#### Erregistroak

* Helbideratze edukiera
64 bit moduan exekutatzen ari den prozesu edo hari bat 264 bit helbidera ditzake (alegiazko moduan) eta 240 helbide fisikoak.
* Programaren exekuziorako oinarrizko erregistroak
Basic Program execution Registers (GPR). Denera 16 dira. GPR-ak 64 bit zabal dira eta byteko, hitzeko, 2 hitzeko eta 4 hitzetako osoko eragiketak onartzen dituzte. Ondorengoak dira erregistro nagusiak, multzoka banatuta: Helburu orokorreko erregistroak. Zortzi erregistro hauek eragiketak eta erakusleak gordetzeko eskuragarri daude. Segmentu erregistroak. EFLAGS erregistroa. Programaren egoera eta kontrolerako erregistroak. EIP erregistroa. Agindu erakuslea. EIP erregistroak 32 biteko erakusle bat du exekutatu behar den hurrengo agindura.
* x87 FPU erregistroak
Erregistro hauek koma higikorreko, zehaztasun ezberdineko, eragiketak egiteko ingurune aproposa eskaintzen dute, baita osoko hitzetarako zein BCDetarako (Binary Coded Decimal) ere . Zortzi x87 FPU datu erregistro dira, x87 FPU kontrol erregistro bat, egoera erregistro bat, x87 FPU agindu erakuslearentzako erregistroa, x87 FPU eragigaiarentzako (datua) erregistroa, x87 FPU marka erregistroa eta x87 FPU eragiketaren kodearen erregistroa.
* MMX erregistroak
8 MMX erregistro 64 bitetako SIMD (agindu bat, datu anitz) eragiketak egiteko. Jarraian azalduko dira sakonago SIMD aginduak, mikroariktektura atalean.
* XMM erregistroak
16 XMM datu erregistro dauzka 128 bitetako SIMD eragiketak egiteko.
* Pila
Prozedurei edo azpi-errutinei deiak egiteko, eta parametroak pasatzeko, beharrezkoa da pila bat izatea hori ahalbideratuko duena. Exekuzio inguruneak pila eta hau kudeatzeko baliabide guztiak eskaini behar ditu. Pila hau memorian kokatuta dago .
* Kontrol erregistroak
Prozesadorearen exekuzio modua zehazten dute eta exekutatzen ari den prozesuaren ezaugarriak. 64 bitetako luzera dute erregistro hauek. Denera 5 erregistro dira (CR0tik CR4ra).
* Arazteko erregistroak
Erregistro hauek prozesadorearen arazteko erabiltzen dira eta kontrolatzeko euskarria ematen dute. 64 bitetako luzera dute erregistro hauek ere. Denera 8 dira (DR0tik DR7ra).
* Sarrera/Irteera portuak
IA-32 arkitekturak S/I gailuetako portuetara (portuetatik) datu transferentziak onartzen ditu.
* Memoriaren kudeaketarako erregistroak
Erregistro hauek, modu babestuan, datu egituren kokalekua zehazten dute.
* Makinarako erregistro zehatzak MSR
(Machine Specific Register) erregistro hauek, makinarentzat espezifikoak dira eta prozesadorearen kontrolerako eta errendimendurako datuak gordetzeko erabiltzen dira. Birtualki MSR guztiek sistema funtzioak eskaintzen dituzte eta ez dira atzigarriak aplikazio programetatik.
* Makina aztertzeko erregistroak
Erregistro hauek makinari (hardwarea) buruzko informazioa, egoera eta erroreak gordetzen dituzte, erroreak detektatu eta beraien berri emateko.
* Errendimendua monitorizatzeko kontagailuak
Kontagailu hauek prozesadorearen errendimendua monitorizatzen dute.

## Mikroarkitektura
#### Intel Core Mikroarkitektura

Core 2 Duo Intel Core Mikroarkitekturan oinarritzen da eta nukleo anitzetako prozesadoreek osatzen dute. 2006 urtean merkaturatu zuen Intel etxeak. Hasiera batean Intel Next-Generation Micro-Architecture (NGMA) izenarekin ezagutu zen. NetBurst mikroarkitekturaren oinordeko zuzena da. NetBurst mikroarkitekturan oinarritutako prozesadoreek (Pentium) zuten kontsumo handia eta hauen erloju zikloa teknologikoki handitu ezinak bultzatu du mikroartitektura berri honen sorkuntza. Aurretik Pentium M sortu zuen talde berdinak diseinatu dute.
Energia gutxiago behar du funtzionatu ahal izateko, Intel-en aurreko prozesadoreek baino eta AMDko prozesadoreekin lehiatu daiteke.
Intel 64 arkitektura inplementatzen du, hardwarea birtualizatzen du eta SSSEE3 agindu multzoa erabiltzen du, besteak beste.
Arkitektura bateratua da, honekin zera esan nahi da: mahaigaineko, eramangarrietarako eta zerbitzarietarako irtenbide berdina eskaintzen du. Hiru bertsioak hauek dira: eramangarrietarako, mahaigaineko eta zerbitzarietarakoak (merom, conroe eta woodcrest urrenez urren). Oinarri berdina dute, baina interfaze desberdinak dituzte eta memoria mota aldatzen da zerbitzarietarakoen kasuan.
Modu honetan Intel etxeak indar guztiak arkitektura hau hobetzera bideratu ditzake, ikerkuntza gastuak murriztuz azken erabiltzaileari produktu hobe eta merkeago bat eskaintzeko helburuarekin.

#### Birtualizazio teknologia

Intelen Virtualization Technology (Alegiazko Teknologia) birtualizaziorako euskarria ematen du. Zabalpen hauek Virtual Machine eXtension bezala adierazten dira. Intel 64-an oinarritzen diren plataformek VMX dutenek alegiazko makinak (sistema) bezala funtzionatzen dute. Alegiazko makina bakoitzak sistema eragile eta aplikazioak exekuta ditzake partizio desberdinetan. VMX-k software sisteman geruza bat gehiago sartzen du, Virtual Machine Monitor (VMM) deitua, alegiazko makinak kontrolatzeko sortua.
Intelen aurreko prozesadoreetan oinarrituz, Dynamic Execution bezala ezagutzen den elementu multzoa inplementatzen du. Teknika honek barneko unitateak ahalik eta beteen mantentzea bilatzen du. Horretarako, aurreko prozesadoreek, exekutatzen ari ziren aginduak aztertu eta iragarpenak egiten zituzten. Hala ere, modu eraginkorrenean lan egitea lortzen zuenean 3 agindu soilik exekuta zitzakeen ziklo bakoitzeko. Izan ere, 3 x86 unitate zituen lan egiteko. Core mikroarkitekturan, unitate horiek 4-ra igo dira, iragarpen algoritmoak hobetu dira eta erregistroen tamaina handitu egin da, momentu gailurrenetan 4 x86 agindu exekutatuz ziklo bakoitzeko, teorian %33-ko hobekuntza bat suposatzen duelarik.
Bestalde, Intelek Pentium M-rekin batera Micro-Ops Fusion teknologia sartu zuen. Gaur egungo prozesadoreek x86 aginduak hartzen dituzte eta gero micro-ops izena hartzen duten agindu txikiagoetan banatzen dira. Micro-Ops Fusion sistemarekin funtsean 2 agindu hauetako elkartzen dira kate bakarra osatuko balute bezala, agindu bakarra osatuz. Sistema honek baliabideak aurreztea ahalbideratzen du, errendimendua nabarmen hobetzen du eta kontsumo elektrikoa gutxitzen du.
Core 2 mikroarkitektura berrian, Micro-Ops sistemari Macro-Ops Fusion teknologia batzen zaio. Aginduen iragarpena hobea denez, Macro-Ops Fusion sistemarekin kodetu gabeko bi x86 agindu Micro-Op agindu bakar batean elkartzen dira. Teknika honekin exekutatutako aginduak nabarmen handitzen dira eta kontsumo elektrikoa gutxitzen da, izan ere, elkartutako bi agindu hauek exekutatzeko potentzia agindu bakar bat exekutatzearen berdina da.Jarraian sakonago aztertuko dira Macro&Micro-Ops Fusion teknologiak. Core arkitekturak, 14 urrats behar ditu agindu bat exekutatzeko, 4 gehiago Pentium III zaharrek baino. Hala ere, Pentium IV-aren 30 urratsak baino askoz gutxiago dira. Maiztasun handiak lortu ditzake (Pentium-ek bezainbeste ez), baina aurrekoek baino kontsumo askoz txikiagoekin.

#### Aginduak

Helburu orokorrekoak (General Purpose GP) Helburu orokorrerako agindu hauek IA-32 aginduen arteko oinarrizko multzo bat osatzen dute eta IA-32 prozesadoreetarako oinarrizkoak dira. Agindu hauek lehengo IA-32 arkitekturarekin batera sortu ziren (Intel 8086 eta 8088). Multzo honetan, hala ere, agindu gehigarriak sartzen joan dira prozesadore berriak sortu ahala (Intel 286, 386, 486, Pentium, Pentium Pro, Pentium II). Intel 64 arkitektura, gainera, oraindik gehiago handitzen du agindu familia hau eta agindu gehienei 64 bitetako datuak maneiatzeko ahalmena ematen die (64 bit moduan). Multzo honetako agindu gutxi dira 64 bitetako modua onartzen ez dutenak (nahiz eta beste exekuzio moduetan mantentzen diren). Agindu hauek honako eragiketak egitea ahalbidetzen dute: oinarrizko datu mugimendua, memoria atzipena, eragiketa aritmetiko-logikoak, S/I eragiketak, programen fluxu kontrola, osoko eta string eragiketak eta BCD datu motak onartzen dituzte.

#### Ezaugarriak
##### Sarrera

Core 2 Duo mikroarkitekturak 14 urrats behar ditu agindu bat exekutatzeko.
* 14 urrats agindu bat exekutatzeko.
* 3 unitate aritmetiko logiko (UAL) CIU, SIU1 eta SIU2, osoko eragiketak egiteko
* 4 FPU (Floating Proint Unit) VFADD, VFMUL, FADD eta FMUL, koma higikorreko eragiketak egiteko.
* 3 128 biteko SSE unitate, agindu multimediekin (agindu bat, hainbat datu) eragiketak egiteko
* 4 agindu deskodegailu, zeinak 5 agindu baino gehiago deskodetu ditzaketen zikloko. 3 deskodegailu arruntak dira eta bat berezia, agindu bat baino gehiago deskodetu dezakeelarik ziklo bakoitzeko
* Macro eta micro-fusion teknologiak, eraginkortasuna hobetuz exekutatzera pasatzen diren agindu kopurua handitzen delako.
* x64 arkitekturako bi agindu sartzen ditu eragiketa bakarraren barnean, batera exekutatu ahal izateko.
Ezaugarri guzti hauek lortzen dute x86 arkitekturan oinarritutakoetatik agindu gehien exekuta ditzakeenak ziklo bakoitzeko. Elementu guztiak ahalik eta abiadura baxuenetan lan egingo dute, energia aurreztu dadin, behar ahala abiadura handituz. Modu honetan bero gutxiago sortzea ere lortzen da. Osoko exekuziorako unitateak Core-k 64 bitetako exekuziorako hiru unitate desberdin ditu. Unitateetako bakoitzak ziklo bakarrean 64 bitetako osokoekin eragiketak egin ditzake. Unitateetako bat (CIU) konplexua da, bertan egiten direlarik eragiketarik gehienak, eta beste biak (SIU1,SIU2) sinpleak dira, eragiketa sinpleak egiten dituztenak. SIU-etako batek erreserba gunea branch unitatearekin konpartitzen du (portu berdina erabiltzen baitute). SIU eta branch unitateek batera lan egin dezakete CICS aginduak exekutatzeko. 64 bitetako osoko eragiketak ziklo bakarrean egiteko ahalmena duen lehenengo x86 prozesadorea da. Ahalmen honek buruan jartzen du, IBM-ren PowerPC 970-a baino hobea baita, zeinak 2 zikloko latentzia baitu horrelako eragiketa bat egiteko. Bestalde, hiru osoko UAL-ak portu desberdinetan daudenez, hiru osoko eragiketa egin ditzake aldi berean (ziklo berdinean).

##### Datu Bidea

Aipatu behar da atal honetan Intel etxeak ez duela informazio asko zabaldu. Core-k 14 urratsetako agindu exekuzioa du. Luzera hau PowePC 970-ren berdina da, Pentium 4 Prescott-aren erdia eta P6 Core-aren 12-etatik gertu.
Deskodegailuen atalean ikus daiteke 4 deskodegailu direla. 3 sinpleak dira eta mikroagindu bat deskodetu dezakete ziklo bakoitzeko. Bestea konplexua da eta 4 mikroagindu deskodetu ditzake ziklo bakoitzeko, denera ziklo bakoitzean 7 mikro agindu (uop) deskodetu ditzakeelarik (4-1-1-1). Mikrokode sekuentziagailua (ucode sequencer), deskodetzeaz edo laguntza emateaz arduratzen da, diseinuaren lehentasunaren arabera. SSE agindu guztiak deskodegailu sinple batek bihurtu ditzake zuzenean uop bakar batean. Core mikroarkitekturaren helburu nagusienetariko bat aurreko prozesadoreekin bateragarria izatea da eta aurreko Pentium prozesadoreetan funtzionatzen zuten programa eta sistema eragileek prozesadore berrietan funtzionatzen jarraitu behar dute. Hau lortzeko CISC (agindu oso konplexuak) motako prozesadorea izan behar zuen, baina prozesadoreak eraginkorragoak dira RISC (agindu sinpleak eta atomikoak). Azken finean, RISC motako prozesadore bat da baina CISC aginduak exekutatu ditzakeena. Hau lortzeko aginduen exekuzioan urrats bat gehiago sartu behar da eta agindu konplexu bat hainbat agindu sinpleetan banatu behar da(mikro-ops-etan).

##### MICRO OPS FUSION

Nukleo bakoitzak 128 bitetako agindu bat egikaritzen du, 4+1 x86 agindu deskodetzen ditu ziklo bakoitzeko, 7 mikro op eskuratu, 4 mikro op berrordenatu eta berrizendatu, 6 uop bidali exekutatzera eta 4 uop-etatik gora baztertzen ditu. Zentzu guztietan aurreko Yonah eta P4-ak baino askoz agresiboagoa da, pauso gehiago egiten ditu batera.
x86 aginduek gutxi gorabehera 32 biteko luzera dute. Hala ere, Core-k 128 bitetako aginduekin lan egiten du. Agindu hauek aurre-dekodegailu batera joaten dira eta fetch bufferrera, bertan aginduaren inguruko luzeraren eta deskodeketaren inguruko informazioa gordetzen delarik. Aurre-dekodegailu eta fetch bufferraren luzera 32 byte-etakoa da, aurreko P6-etan bezala, baina kasu honetan 18 sarrerako agindu pila du. Begizta bat agindu pilan osorik sartzen bada, pre-fetcha itzali egiten da, energia aurrezteko, eta aginduak fetch cachetik hartzen dira.

##### DESORDENA-DESORDENA EREDUA

Core mikroarkitekturak desordena-desordena eredua jarraitzen du aginduak exekutatzeko. Honek zera esan nahi du; aginduak ez dira iristen diren ordena berean exekutatzera pasatzen eta ordena desberdin batean bukatu dezakete exekuzioa.
Prozesagailu honetan ikus daitezke agindu bufferra, alias erregistroen taula, allocator-a, eta berrordenatze bufferra. Eremu guzti hauek aurreko Yonah-ren berdinak dira baina zabaldu egin dira eta agindu gehiagorekin batera egiten dute lan.
Aurreko Yonah bertsioak gehienez 3 uop-ekin batera egin zezaketen lan. Core, ordea, 4 uop-ekin batera lan egiteko diseinatuta dago. Bestalde, berrordenatzeko bufferra (ROB) aurreko Yonah-renaren bikoitza da, 96 sarrera ditu. Azken finean, Core mikroarkitekturak askoz baliabide gehiago ditu desdordena-desordena ereduarekin lan egiteko bere gertuko aurrekariek baino.
Erreserba guneari dagokionez, nabarmen handiagoa da Pentium M-etan baino; 24 sarreretatik 32 sarreretara pasa da. Aurreko P4-ekin konparatzea ez da hain erraza beste unitate funtzional batzuk erabiltzen baitzituen.
Intel etxea berrizendapen eta antolaketa (scheduling) arloan nahiko justu geratzen den arren exekuziorako unitate funtzionaletan ahalegin guztiak egiten ditu, Core mikroarkitekturan. Core-k exekuziorako hiru portu ditu. Portu hauetatik 128 bitetako hiru SSE unitate, bi 128 bitetako koma higikorreko unitate eta hiru 64 bitetako osoko unitatetara joan daiteke agindua. Lehenengo portuko UAL-a, halaber, 128 bitetara aldatu daiteke eta errotatu. Portu guztiek koma higikorreko mugimenduak egikaritu ditzakete. FPU eta SSE unitateak behar duten hardwarearekin komunikatu daitezke, beharren arabera.
Ezaugarri guzti hauekin, arlo honetan ere aurreko prozesadoreak hobetzen ditu, koma higikorreko eta SSE aginduekin lan egiterakoan. Hala ere, Core-ren 3 SSE unitateak ez dira guztiz berdinak, baina diferentziak funtsean txikiak dira (zatiketarako eta biderketarako baliabide desberdinak). SSE unitate guztiak guztiz segmentatuta daude eta unitate bakoitzak 128 bitetako SSE agindu egokia ziklo bakarrean exekutatu dezake. P4-arekin alderatuz diferentzia handia da; 2 SSE unitate ditu eta bi ziklo behar ditu 128 bit luze den agindu bat exekutatzeko. Adibide bezala aipatu ziklo bakarrean 128 bitetako eragigaiak dituen batuketa bat, 128 bitetako biderketa, 128 bitetako load, 128 bitetako storeak egikaritu ditzakeela.

##### Multimedia aginduak

Multimedia aginduak edo SIMD (Single Instruction, Multiple Data) aginduak, datu ugarirekin eragiketa konkretu bat egiteko gai diren aginduak dira. Agindu multzo honetan aipatu ditzakegu 3DNow!, SSE eta SSE2 besteak beste. Agindu hauek tamaina handiko datuak, aldi berean, behar dituztenean erabiltzen dira. Adibide bezala jar daiteke bideo aplikazio bat, zeinetan irudiko pixel bakoitzari balioa aldatu behar zaion momenturo. Prozesadore batek pixelak banaka prozesatu ditzake edota SIMD aginduen bidez denak aldi berean tratatu (edo gutxienez multzo handitan). Horrelako aginduek modu azkarrean prozesatu ditzakete multimedia informazio bloke handiak edota aplikazio zientifikoek, nahiz zifratze lanek, behar duten zehaztasun handiko datuak.
Arlo honetan Core arkitekturak SIMD unitateak hobetu ditu, ia %100-eko errendimendu hobekuntza eskainiz bere aurrekariekin. Pentium 4-ak ziklo bakoitzean 64 bitetako SSE agindu bat prozesatzeko gai ziren, eta argi dagoen bezala, zehaztasun bikoitza behar badu, hau da 128 bit, 2 ziklo beharko ditu. Core 2-k, ordea, nahikoa du ziklo bat 128 bit luze den agindu bat exekutatzeko, ia informazio bikoitzarekin lan egin dezake denbora tarte berdinean. Prozesagailu hau 128 bit luze den agindu bat erloju ziklo bakarrean exekutatzeko gai da.
Core-ren MPU-ak, memoriarekin sarrera-irteera eragiketak egiteaz arduratzen den modulua, baliabide asko ditu eta gainontzeko diseinuan bezala aurrekoetatik hobetu eta handitu da. Diseinu aldetik aurreko Yonah bezalakoa da, baina zabalera handiagoarekin egiten du lan. Cacheek, lehenengo mailakoak zein bigarrenekoak, idazketa atzeratua (write-back) erabiltzen dute, eta 64 bytekoa da bloke tamaina, bietan. Hurrengo atalean sakonduko da gehiago cacheen eta memoriaren ezaugarrietan.

#### Energia aurrezpena

Aurreko Yonah prozesadoreetan bezala energia aurrezteko beharrari garrantzi handia ematen zaio. Aurreko prozesadoreek lan egiteko bi egoera besterik ez zituzten, idle (nagituta) eta full load (errendimendu maximoa), baina Core 2 Duo-k egoera gehiago ditu. Maila desberdinak dituzte eta prozesadorea egokitzen da egiten ari den lanen beharretara.
Produktu familia bakoitzak energia kontsumo maximoa du (TDP); eramangarrietarakoak 35W, mahaigainetakoak 65W eta 80W zerbitzarietakoak. Bestalde, energia atal ezberdinak erabiltzailearen beharren eta erabileraren arabera aldatuko dira.
Core-ren atal gehienek ateak dituzte, beharren arabera itzaltzeko. Nukleotako bakoitza modu independentean kudeatzen da, eta bakoitzeko bloke gehienak lotara bidali daitezke. Bus gehienek ateak dituzte eta lotara ere bidali daitezke. Busak ez badu ziklo batean informaziorik bidaltzen busaren zati bat lotara bidali daiteke. Adibidez, FPU unitate bat 64 bitetako eragigaiekin lan egiten ari bada 64-127 bitarteko biten busa itzali egin daiteke, energia aurrezteko. %99,9 kasuetan energia aurrezpen honek ez du eraginik izango errendimenduan, ondorioz asko eraginkorrago erabiltzen da eskuragarri dagoen energia.
Ezaugarri honek egungo haizegailuekin bateragarri egiten du. Haizegailu modernoek minutuko birak aldatu ditzakete prozesadoreak sortzen duen beroaren arabera. Era honetan sortzen duen zarata gutxitu egiten da, baita energia kontsumoa ere. Sortzen duen beroa aztertzeko Core mirkoarkitekturak sentsore termiko digital bat du.
Energia aurrezteko metodoen eragozpenik handiena, kontsumo baxuko eta errendimendu maximoko egoeren arteko trantsizioak sortzen duen atzerapena da. Hau izan zen iraganean horrelako metodoak ez inplementatu izanaren arrazoi nagusia, prozesadoreko elementu guztiak pizteak sortzen zuen energia kontsumo handiarekin batera. Erronka hauek Intel-en arabera gaindituta daude gaur egun eta Intelligent Power Capability teknikarekin kontsumo murrizketa nabarmena izango da eta beroaren kanporatzea sistemaren kargaren araberakoa izango da.
Core 2-aren energia aurrezpen egoera nagusiak: 1.- Erloju maiztasuna jaitsi (SpeedStep) 2.- Nukleo bat guztiz itzali 3.- Cache zati bat itzali 4.- Cache zati bat itzali eta nukleo oso bat 5.- Cache bat guztiz itzali. Cachea flasheatu

#### Cache memoria

Core 2 Duo prozesadoreek 2 mailatako cache hierarkia dute txipean barneratua. Nukleo bakoitzak bere L1 cache propioa du eta L2 cache propioa ere dute, baina konpartitu egiten dute.
Intel Advanced Smart Cache sistema aurreko Core Duo-tik (Yonah bertsioa) erabiltzen da. Advanced Smart Cache-a cache sistema eraginkorrago bat da. Bigarren mailako cache honek latentzia oso baxua du, 12-14 ziklo soilik. Nukleo bakoitzak bere bigarren mailako cache propioa duen arren, cache hau konpartitua da, hau da, edozein nukleok zuzenean atzitu dezake.
Honen onurak honakoak dira: cachea nukleo bakoitzarentzat esklusiboa ez denez, beharren arabera, nukleo batek memoria guztia bereganatu dezake. Ezaugarri hau onuragarria da hari bakarreko prozesuetan zeinatan nukleo bakarra aprobetxatzen den. Bestalde, prozesu batek bi nukleoak erabiltzen baditu nahikoa da informazioa behin bakarrik azaltzea, bi nukleoek erregistro bera atzitu dezaketelako. Beraz, ez dago informazioa bi aldiz idatzita egon beharrik cache banatuetan gertatzen den bezala, konsistentzia arazoak gutxituz eta trafikoa ere bai. L2 cacheko prefetcher-ek dinamikoki banatzen dute iristen zaien informazioa bi nukleoen artean, aurreko datu atzipenetan oinarrituz, moldatutako txanda zirkularraren (round-robin) algoritmo baten arabera. L1 cachea, bestalde, independentea da nukleo bakoitzarentzat eta bere latentzia 2-3 ziklotakoa da. Core-ren bertsio batzuetan bi L1 cacheak independenteak diren arren beraien artea bus bat dago eta zuzenean komunikatu daitezke. L1 cacheetako bakoitzak hainbat prefetcher ditu.

#### Memoria atzipena

Core arkitektura berrian aginduen exekuzioa nabarmen hobetzen da, memoriaren latentzia txikiagoaren eraginez. Hau lortzeko 6 pre-fecher erabiltzen dira, zeinatako bik memoriako informazioa L2 cachean mapeatzen duten eta gainontzekoek (2 nukleo bakoitzeko) informazioa dagokion L1-eran mapeatzen duten. Prefetcher bakoitzak informazioa L2 cachean metatzen du behar baino lehenago, latentzia asko gutxituz, eragiketa merkeagoa baita L2 cachean informazioa bilatzea memoriatik ekartzea baino. Memoria atzipenean desanbiguazio teknologia erabiltzen da, desordena-desordena exekuzioaren eraginkortasuna hobetzeko asmoarekin. Desanbiguazio honetan aztertzen da exekutatzeko prest dauden aginduek nolabaiteko menpekotasunik gordetzen duten, lehenago deskodetu, baina itxaroten egon behar duten aurreko aginduekin.
FSBa arbitro batek kudeatzen du, aldi bereko atzipenik gerta ez dadin.

## Kanpo estekak

* Intel Core 2 Duo Intel gunean.
* Datuak: Q216334
* Multimedia: Intel Core 2 / Q216334