# Processador Multinucli

Un processador multinucli és aquell que combina dos o més unitats de processament independents, anomenades cores o nuclis. Cadascuna d'aquestes unitats llegeix i executa instruccions CPU ordinàries —com ara add, move o branch—, amb l'avantatge que el processador multinucli permet executar-ne diverses alhora, en nuclis separats, augmentant així la velocitat dels programes que fan ús del multithreading o d'altres tècniques de computació en paral·lel.
Els fabricants solen integrar els nuclis en un únic dau de circuit integrat, conegut com a xip multiprocessador, o bé en múltiples daus d'un mateix encapsulat. Actualment, en la majoria d'equips personals, s'usen microprocessadors multinucli.
Un processador multinucli implementa el multiprocessament en un sol paquet físic. Els nuclis poden tenir més o menys grau d'acoblament; per exemple, poden compartir o no compartir la memòria cau, i poden implementar mètodes de comunicació entre nuclis o de memòria compartida.
Els busos, els anells, les malles i els commutadors de barres creuades són algunes de les tipologies de xarxa usades per a la interconnexió de nuclis.
Els sistemes multinucli homogenis estan formats per nuclis idèntics entre ells, mentre que els heterogenis estan formats per nuclis no idèntics —per exemple, big.LITTLE té nuclis heterogenis que comparteixen el mateix repertori d'instruccions, mentre que els AMD Fusion no el comparteixen. Igual que els processadors d'un sol nucli, els processadors multinucli poden implementar arquitectures de tipus vectorial, superescalar, VLIW o multithreading. Els processadors multinucli tenen aplicacions molt diverses: s'usen en equips d'ús general, en sistemes incrustats, en GPUs, o com a processadors de xarxa o de senyals digitals.
La millora en el rendiment fruit de la utilització d'un processador multinucli depèn en gran manera dels algoritmes de software utilitzats, així com de la implementació que se'n fa. Com descriu la llei d'Ambdahl, els guanys estan limitats per la fracció del software que es pot executar simultàniament en paral·lel en diferents nuclis del processador. En el millor dels casos, els problemes perfectament paral·lels poden experimentar millores en el rendiment amb factors propers al nombre de nuclis, o fins i tot més si podem separar el problema en suficients parts com perquè càpiga a la caché de cada nucli, evitant així l'ús de la memòria ordinària, molt més lenta. Tanmateix, en la majoria de casos, l'acceleració no és tan alta tret que els programadors inverteixin un volum de temps prohibitiu a reformular tot el problema.
A dia d'avui, la paral·lelització de programari és un important tema d'investigació en procés.

## Aparició Processador Multinucli

Incentius comercials
Fins al començament del segle xxi, la manera d'incrementar el rendiment dels processadors d'un sol core era augmentar la densitat de transistors. Tanmateix, encara que la velocitat del transistor incrementava, el seu consum també ho feia. La major part d'aquesta potència es dissipa com a calor provocant així un augment de la capacitat dels ventiladors de refrigeració i, per tant, un augment dels costos. Per aquest motiu, els fabricants de processadors van iniciar una investigació per trobar una alternativa de processament diferent.
En la cerca d'una potència de processament addicional per ordinadors personals, la millora en l'àmbit dels supercomputadors va generar una bona pregunta: en lloc d'experimentar únicament el rendiment d'un sol nucli de processament, per què no posar més d'un en un ordinador personal? D'aquesta manera, els ordinadors personals podrien continuar millorant el rendiment sense necessitat d'augmentar la velocitat del rellotge del processador. En 2005 a causa de l'augment del mercat competitiu i les poques alternatives, els principals fabricants de CPUs van començar a oferir processadors amb dues cores en comptes d'un sol core. Durant els anys següents, van seguir aquest desenvolupament amb l'alliberament de tres, quatre, sis i vuit nuclis de processador central. A vegades es coneix com a revolució multicèntrica, aquesta tendència ha marcat un gran canvi en l'evolució del mercat de la informàtica de consum.
Avui, seria relativament difícil comprar un ordinador de sobretaula amb una CPU que contingui un únic nucli. Fins i tot els processadors centrals de baix nivell i de baixa potència tenen dos o més nuclis. L'any 2008, Intel va llançar dos processadors verds de quatre nuclis (L5420, L5410) per a servidors i estacions de treball que corrien més ràpid que els processadors anteriors de quatre nuclis sense consumir més potència. Aquests tipus de processadors són molt recomanables per al desenvolupament sostenible.
Factors tècnics
Atès que els fabricants d'ordinadors han implementat durant molt de temps dissenys de multiprocessament simètric (SMP) utilitzant CPUs discretes, els problemes relacionats amb la implementació de l'arquitectura de processadors multi-nucli i el seu suport amb programari són ben coneguts. A més:
* L'ús d'un disseny de nucli de processament provat sense canvis arquitectònics redueix significativament el risc del disseny.
* Per a processadors d'usos generals, gran part de la motivació per als processadors de múltiples nuclis prové d'un gran nombre de millores en el rendiment del processador a partir de l'augment de la freqüència de funcionament. Això es deu a tres factors principals:
* La paret de memòria; la creixent bretxa entre processadors i velocitats de memòria. Això, de fet, empeny a què les mides de memòria cau siguin més grans per emmascarar la latència de la memòria. Això només ajuda en la mesura que l'amplada de banda de la memòria no és el coll d'ampolla en el rendiment.
* La paret de l'ILP; la creixent dificultat de trobar suficient paral·lelisme en un sol flux d'instruccions per mantenir un processador d'un sol nucli d'alt rendiment.
* La paret elèctrica; la tendència de consumir una potència creixent exponencialment (i generar així un augment de calor exponencialment) amb cada increment factorial de freqüència de funcionament. Aquest increment es pot mitigar "reduint" el processador mitjançant empremtes més petites per a la mateixa lògica. La paret elèctrica planteja problemes de fabricació, disseny de sistemes i desplegament que no s'han justificat davant la disminució dels guanys de rendiment a causa de la paret de memòria i la paret ILP.
Per tal de continuar oferint millores regulars en el rendiment per a processadors de propòsit general, els fabricants com Intel i AMD han recorregut a dissenys multi-nucli, sacrificant els costos de fabricació més baixos per a un major rendiment en algunes aplicacions i sistemes. S'estan desenvolupant arquitectures multicèntriques, però també ho són les alternatives. Un candidat especialment fort per als mercats establerts és la major integració de funcions perifèriques al xip.

## Avantatges

Els processadors multinucli ofereixen avantatges com els següents:
Eficiència energètica: L'ús de processadors multinucli redueix el consum d'energia (es perd menys energia com a calor), la qual cosa augmenta la durada de la bateria.
Concurrencia: Al assignar aplicacions a diferents nuclis el processament multinucli augmenta el suport intrínsec per al processament en paralel dins de les aplicacions software individuals a través de múltiples aplicacions.
Rendiment: El processament multinuclii pot augmentar el rendiment executant diverses aplicacions simultàniament. La disminució de la distància entre nuclis d'un xip integrat permanentment una latència d'accés als recursos més curta i majors velocitats de caché. No obstant això, l'augment de rendiment depèn del nombre de nuclis, el nivell de concurrència real i l'ús de recursos compartits.
Aïllament: Els processadors multinucli poden millorar (però no garantir) l'aïllament espacial i temporal(segregació) en comparació amb les arquitectures d'un sol nucli. El programari(software) que s'executa en un nucli té menys probabilitats d'afectar al programari d'un altre nucli que si s'executen amb el mateix únic nucli. Això es deu tant a l'aïllament espacial com al temporal. ja que els fils(threads) d'un nucli no son retrassats per als fils d'un altre nucli.
Costos Hardware: Mitjançant l'ús de processadors multinucli, els arquitectes poden produir sistemes amb menys ordinadors i processadors.

## Desavantatges

A més del suport del sistema operatiu (SO), calen ajustaments al programari existent per maximitzar la utilització dels recursos informàtics proporcionats pels processadors multi-nucli. A més, la capacitat dels processadors multi-nucli per augmentar el rendiment de les aplicacions depèn de l'ús de múltiples subprocessos dins de les aplicacions.
La integració d'un xip multicèntric redueix els rendiments de la producció i és més difícil gestionar tèrmicament que els dissenys d'un xip de baixa densitat. Intel ha contrarestat parcialment aquest primer problema mitjançant la creació dels seus dissenys de quatre nuclis combinant dos de doble nucli en un únic xip amb una memòria cau unificada, per la qual cosa es poden utilitzar dos matrius de doble nucli de treball, en lloc de produir quatre nuclis en un únic xip i requereix que els quatre treballin per produir un quad-core. Des del punt de vista arquitectònic, en definitiva, els dissenys de CPU individuals poden utilitzar millor la superfície de silici que els nuclis multiprocessadors, de manera que un compromís de desenvolupament amb aquesta arquitectura pot comportar el risc d'obsolescència. Finalment, el poder de processament en brut no és l'única restricció del rendiment del sistema. Dos nuclis de processament que comparteixen el mateix bus de sistema i amplada de banda de memòria limiten l'avantatge del rendiment del món real. Seria possible que una aplicació que utilitzava dues CPU acabés funcionant amb més rapidesa en un nucli dual si la comunicació entre les CPU era el factor limitant, que suposaria una millora de més del 100%.

## Desafiaments multinucli

El fet de tenir múltiples nuclis en un sol xip dona lloc a alguns desafiaments. Potència i la gestió de la temperatura són dues desafiaments que poden augmentar exponencialment amb l'addició de nuclis. La coherència de memòria cau és un altre desafiament, ja que la distribució de memòria cau porta a problemes de coordinació.
Si els programadors no escriuen aplicacions que aprofiten els múltiples nuclis no hi ha guany, i en alguns casos hi ha una pèrdua d'actuació. L'aplicació ha d'escriure perquè es puguin executar diferents parts alhora en diferents nuclis.

### Potència i temperatura

Si es col·locaran dos nuclis en un sol xip sense cap modificació, el xip, en teoria, consumeix el doble d'energia i genera una gran quantitat de calor. En el cas extrem, si un el processador es sobreescalfa i l'ordinador pot fins i tot cremar-se. Per donar compte d'això, cada disseny de dalt executa els múltiples nuclis a una freqüència més baixa per reduir el consum d'energia.
Per combatre el consum innecessari d'energia, molts dissenys també incorporen una unitat de control d'energia. que té l'autoritat per apagar els nuclis no utilitzats o limitar la quantitat d'energia.

### Coherència de memòria cau

La coherència de la memòria cau és una preocupació en un entorn multicore a causa de L1 i L2 distribuïts memòria cau. Com que cada nucli té la seva memòria cau, és possible que la còpia de les dades en aquesta memòria cau no sigui sempre la versió més actualitzada.
Per exemple, un processador de doble nucli on cada nucli es va portar un bloc de memòria a la seva memòria cau privada. Un nucli escriu un valor a una ubicació específica, quan el segon nucli intenta llegir aquest valor des de la seva memòria cau no tindrà la còpia actualitzada tret que la seva entrada de memòria cau no estigui invalidada i que es produeixi un error de memòria cau. Aquesta memòria cau falla la segona l'entrada de la memòria cau del nucli per a ser actualitzada. Si aquesta política de coherència no estigués al seu lloc, es tracta de dades sobre les escombraries es produirien resultats de lectura i no vàlids, possiblement estalviant el programa o l'ordinador sencer.
En general hi ha dos esquemes per a la coherència de la memòria cau, un protocol de snooping i un directori basat en protocol. El protocol de snooping només funciona amb un sistema basat en busos i utilitza diversos estats per determinar si necessita o no actualitzar entrades de memòria cau i si té control sobre l'escriptura al bloc.
El protocol basat en directoris es pot utilitzar en una xarxa arbitrària i, per tant, és escalable per a molts processadors o nuclis, a diferència del snooping que no és escalable. En aquest es fa servir un directori que conté informació sobre les ubicacions de memòria compartits en múltiples cachés i que s'utilitzen exclusivament per la memòria cau d'un nucli. El directori sap quan s'ha d'actualitzar o invalidar un bloc.

### Multifil

L'ús de subprocessos múltiples o altres tècniques de processament paral·lel per obtenir el màxim rendiment del processador multinucli. La reconstrucció d'aplicacions per a ser multiprocés significa un retreball complet per part dels programadors en la majoria dels casos.
Els programadors han d'escriure aplicacions amb subrutines capaços d'executar-se en diferents nuclis, el que significa que les dependències de les dades s'han de resoldre o comptabilitzar (per exemple, latència en la comunicació o mitjançant l'ús d'un cau compartit).
Les aplicacions han de ser equilibrades. Si un nuclins s'està utilitzant molt més que un altre, el programador no està aprofitant al màxim el sistema multinucli.

## Tendències de futur

En el futur, els ordinadors contindran milers d'unitats d'execució per xip, homogènies o especialitzades per a propòsits particulars. La paral·lelització de la càrrega de treball de l'aplicació està a punt de convertir-se en la més significativa estratègia d'acceleració i ampliació en qualsevol mena d'aplicació. La futura investigació per a múltiples nuclis habilita que les aplicacions s'han de determinar a partir de dos costats: una millor expressió de maquinari i un millor disseny de programari.
La creixent varietat d'arquitectures de processadors de múltiples nivells ha d'ésser extreta en millors models per tal de permetre-la un disseny de programari adequat. El programari de l'altre costat ha de ser analitzable i dissenyable segons el treball paral·lel que produeix. Això inclou la formulació de patrons de disseny i algoritmes equipats per a execució paral·lela. Algunes aplicacions seran escalables per defecte, gràfics en 3D, computació científica o informàtica de servidors d'alta potència.

## Exemples Hardware
### Comercial

* Adapteva Epiphany, a many-core processor architecture which allows up to 4096 processors on-chip, although only a 16 core version has been commercially produced.
* Aeroflex Gaisler LEON3, a multi-core SPARC that also exists in a fault-tolerant version.
* Ageia PhysX, a multi-core physics processing unit.
* Ambric Am2045, a 336-core Massively Parallel Processor Array (MPPA)
* AMD
** A-Series, dual-, triple-, and quad-core of Accelerated Processor Units (APU).
** Athlon 64 FX and Athlon 64 X2 single- and dual-core desktop processors.
** Athlon II, dual-, triple-, and quad-core desktop processors.
** FX-Series, quad-, 6-, and 8-core desktop processors.
** Opteron, single-, dual-, quad-, 6-, 8-, 12-, and 16-core server/workstation processors.
** Phenom, dual-, triple-, and quad-core processors.
** Phenom II, dual-, triple-, quad-, and 6-core desktop processors.
** Sempron, single-, dual-, and quad-core entry level processors.
** Turion, single- and dual-core laptop processors.
** Ryzen, dual-, quad-, 6-, 8-, 12-, 16-, 24-, and 32-core desktop, mobile, and embedded platform processors.
** Epyc, quad-, 8-, 12-, 16-, 24-, and 32-core server and embedded processors.
** Radeon and FireStream multi-core GPU/GPGPU (10 cores, 16 5-issue wide superscalar stream processors per core)
* Analog Devices Blackfin BF561, a symmetrical dual-core processor
* ARM MPCore is a fully synthesizable multi-core container for ARM11 MPCore and ARM Cortex-A9 MPCore processor cores, intended for high-performance embedded and entertainment applications.
* ASOCS ModemX, up to 128 cores, wireless applications.
* Azul Systems
** Vega 1, a 24-core processor, released in 2005.
** Vega 2, a 48-core processor, released in 2006.
** Vega 3, a 54-core processor, released in 2008.
* Broadcom SiByte SB1250, SB1255, SB1455; BCM 2836 quad-core ARM SoC (designed for the Raspberry Pi 2)
* Cadence Design Systems Tensilica Xtensa LX6, available in a dual-core configuration in Espressif Systems's ESP32
* ClearSpeed
** CSX700, 192-core processor, released in 2008 (32/64-bit floating point; Integer ALU)
* Cradle Technologies CT3400 and CT3600, both multi-core DSPs.
* Cavium Networks Octeon, a 32-core MIPS MPU.
* Coherent Logix hx3100 Processor Arxivat 2018-03-17 a Wayback Machine., a 100-core DSP/GPP processor
* Freescale Semiconductor QorIQ series processors, up to 8 cores, Power ISA MPU.
* Hewlett-Packard PA-8800 and PA-8900, dual core PA-RISC processors.
* IBM
** POWER4, a dual-core PowerPC processor, released in 2001.
** POWER5, a dual-core PowerPC processor, released in 2004.
** POWER6, a dual-core PowerPC processor, released in 2007.
** POWER7, a 4,6,8-core PowerPC processor, released in 2010.
** POWER8, a 12-core PowerPC processor, released in 2013.
** POWER9, a 12 or 24-core PowerPC processor, released in 2017.
** PowerPC 970MP, a dual-core PowerPC processor, used in the Apple Power Mac G5.
** Xenon, a triple-core, SMT-capable, PowerPC microprocessor used in the Microsoft Xbox 360 game console.
** z10, a quad-core z/Architecture processor, released in 2008
** z196, a quad-core z/Architecture processor, released in 2010
** zEC12, a six-core z/Architecture processor, released in 2012
** z13, an eight-core z/Architecture processor, released in 2015
** z14, a ten-core z/Architecture processor, released in 2017
* Infineon
** AURIX
** Danube, a dual-core, MIPS-based, home gateway processor.
* Intel
** Atom, single, dual-core, quad-core, 8-, 12-, and 16-core processors for netbooks, nettops, embedded applications, and mobile internet devices (MIDs).
** Atom SoC (system on a chip), single-core, dual-core, and quad-core processors for smartphones and tablets.
** Celeron, the first dual-core (and, later, quad-core) processor for the budget/entry-level market.
** Core Duo, a dual-core processor.
** Core 2 Duo, a dual-core processor.
** Core 2 Quad, 2 dual-core dies packaged in a multi-chip module.
** Core i3, Core i5, Core i7 and Core i9, a family of dual-, quad-, 6-, 8-, 10-, 12-, 14-, 16-, and 18-core processors, and the successor of the Core 2 Duo and the Core 2 Quad.
** Itanium, single, dual-core, quad-core, and 8-core processors.
** Pentium, single, dual-core, and quad-core processors for the entry-level market.
** Teraflops Research Chip (Polaris), a 3.16 GHz, 80-core processor prototype, which the company originally stated would be released by 2011.
** Xeon dual-, quad-, 6-, 8-, 10-, 12-, 14-, 15-, 16-, 18-, 20-, 22-, 24-, 26-, 28-, 32-, 48-, and 56-core processors.
** Xeon Phi 57-, 60-, 61-, 64-, 68-, and 72-core processors.
* IntellaSys
** SEAforth 40C18, a 40-core processor
** SEAforth24, a 24-core processor designed by Charles H. Moore
* Kalray
** MPPA-256, 256-core processor, released 2012 (256 usable VLIW cores, Network-on-Chip (NoC), 32/64-bit IEEE 754 compliant FPU)
* NetLogic Microsystems
** XLP, a 32-core, quad-threaded MIPS64 processor
** XLR, an eight-core, quad-threaded MIPS64 processor
** XLS, an eight-core, quad-threaded MIPS64 processor
* Nvidia
** GeForce 9 multi-core GPU (8 cores, 16 scalar stream processors per core)
** GeForce 200 multi-core GPU (10 cores, 24 scalar stream processors per core)
** Tesla multi-core GPGPU (10 cores, 24 scalar stream processors per core)
* Parallax Propeller P8X32, an eight-core microcontroller.
* picoChip PC200 series 200–300 cores per device for DSP & wireless
* Plurality HAL series tightly coupled 16-256 cores, L1 shared memory, hardware synchronized processor.
* Rapport Kilocore KC256, a 257-core microcontroller with a PowerPC core and 256 8-bit "processing elements".
* SiCortex "SiCortex node" has six MIPS64 cores on a single chip.
* Sony/IBM/Toshiba's Cell processor, a nine-core processor with one general purpose PowerPC core and eight specialized SPUs (Synergystic Processing Unit) optimized for vector operations used in the Sony PlayStation 3
* Sun Microsystems
** MAJC 5200, two-core VLIW processor
** UltraSPARC IV and UltraSPARC IV+, dual-core processors.
** UltraSPARC T1, an eight-core, 32-thread processor.
** UltraSPARC T2, an eight-core, 64-concurrent-thread processor.
** UltraSPARC T3, a sixteen-core, 128-concurrent-thread processor.
** SPARC T4, an eight-core, 64-concurrent-thread processor.
** SPARC T5, a sixteen-core, 128-concurrent-thread processor.
* Texas Instruments
** TMS320C80 MVP, a five-core multimedia video processor.
** TMS320TMS320C66, 2,4,8 core dsp.
* Tilera
** TILE64, a 64-core 32-bit processor
** TILE-Gx, a 72-core 64-bit processor
* XMOS Software Defined Silicon quad-core XS1-G4

### Free

* OpenSPARC

### Academic

* MIT, 16-core RAW Arxivat 2019-06-08 a Wayback Machine. processor
* University of California, Davis, Asynchronous array of simple processors (AsAP)
** 36-core 610 MHz AsAP
** 167-core 1.2 GHz AsAP2
* University of Washington, Wavescalar processor
* University of Texas, Austin, TRIPS processor
* Linköping University, Sweden, ePUMA processor
* UC Davis, KiloCore, a 1000 core 1.78 GHz processor on a 32 nm IBM process

## Referències

* ↑ «Sempron™ 3850 APU with Radeon™ R3 Series | AMD». Arxivat de l'original el 4 de maig 2019.
* ↑ «Intel® Atom™ Processor C Series Product Specifications» (en anglès).
* ↑ «Intel® Atom™ Processor Z Series Product Specifications» (en anglès).
* ↑ «Intel Preps Dual-Core Celeron Processors». , 11-10-2007 [Consulta: 12 novembre 2007]. Arxivat 4 de novembre 2007 a Wayback Machine. «Còpia arxivada». Arxivat de l'original el 2007-11-04. [Consulta: 28 maig 2019].
* ↑ «Intel® Celeron® Processor J Series Product Specifications» (en anglès).
* ↑ «Products formerly Yonah».
* ↑ «Products formerly Conroe».
* ↑ «Products formerly Kentsfield».
* ↑ «Intel® Core™ X-series Processors Product Specifications» (en anglès).
* ↑ «Intel® Itanium® Processor Product Specifications» (en anglès).
* ↑ «Intel® Pentium® Processor D Series Product Specifications» (en anglès).
* ↑ Zazaian, Mike. «Intel: 80 Cores by 2011», 26-09-2006. Arxivat de l'original el 2006-11-09.
* ↑ Kowaliski, Cyril. «Intel releases 15-core Xeon E7 v2 processor», 18-02-2014. Arxivat de l'original el 2014-10-11.
* ↑ «Intel Xeon Processor E7 v3 Family». Intel. Arxivat de l'original el 2015-07-07.
* ↑ «Intel Xeon Processor E7 v2 Family». Intel. Arxivat de l'original el 2015-07-07.
* ↑ «Intel Xeon Processor E3 v2 Family». Intel. Arxivat de l'original el 2015-07-07.
* ↑ «Intel shows off Xeon Platinum CPU with up to 56 cores and 112 threads» (en anglès).
* ↑ PDF, Download. «2nd Gen Intel® Xeon® Scalable Processors Brief» (en anglès).
* ↑ «Intel® Xeon Phi™ x100 Product Family Product Specifications» (en anglès).
* ↑ «Intel® Xeon Phi™ 72x5 Processor Family Product Specifications» (en anglès).
* ↑ Cole, Bernard. «40-core processor with Forth-based IDE tools unveiled», 24-09-2008.
* ↑ Chacos, Brad. «Meet KiloCore, a 1,000-core processor so efficient it could run on a AA battery», 20-06-2016. Arxivat de l'original el 23 juny 2016.

## Enllaços externs

* Multicore Processors – A Necessity By Bryan Schauer
* Evolution of Multi-core Processors
* Multi-Core Processor - Assignment Point