Processore multicore: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Garak (discussione | contributi)
migliora forma
 
(177 versioni intermedie di 90 utenti non mostrate)
Riga 1:
{{nd|il tipo tradizionale di processore|Processore scalare|Single core}}
Il termine '''multi core''' si usa per descrivere una [[CPU]] composta da più di due [[core (Hardware)|core]], ovvero da più nuclei di [[processore|processori]] fisici montati sullo stesso [[package]].
{{nd|altri significati|Dual core (disambigua)|Dual core}}
{{F|informatica|marzo 2013}}
[[File:Quad-Core_AMD_Opteron_processor.jpg|thumb|upright=1.5|Interno di un [[Microprocessore]] quad-core]]
 
In [[elettronica]] e [[informatica]], con il termine '''processore multicore''' si intende un tipo di [[processore]] parallelo caratterizzato dall'essere costituito da una moltitudine di unità di elaborazione indipendenti, integrate sullo stesso [[chip (elettronica)|chip]], che assumono la denominazione di ''core'' ({{lett|nucleo|lingua=it}}).<ref>{{treccani|microelettronica}}</ref>
Costituisce la naturale evoluzione delle CPU [[dual core]] composte da due core, e i primi esemplari di [[Intel]] sono arrivati alla fine del [[2006]] con il processore [[Core 2 Extreme]] [[Kentsfield]] prima e [[Core 2 Quad]] poi, mentre la rivale [[Advanced Micro Devices|AMD]] ha lanciato i nuovi [[Phenom]] solo alla fine del [[2007]].
 
== Storia ==
== Primi processori multi core ==
Fino al 2005 quasi tutti i [[microprocessori]] (dall'[[Intel 8086]], fino agli [[Athlon 64]] e [[Pentium 4]]) sono sempre stati ''single core'' e i miglioramenti nelle prestazioni sono passati attraverso aumenti della [[clock|frequenza di funzionamento]], maggiori dimensioni della [[CPU cache|cache]], funzionalità aggiuntive, e miglioramenti dell'efficienza della [[microarchitettura]], grazie anche al continuo progresso dei processi produttivi, che ha consentito di ridurre progressivamente l'energia necessaria al funzionamento e offrire le condizioni necessarie per l'aumento della frequenza.
Intel ha avuto il merito di rendere i processori a 4 core disponibili praticamente a tutti, ma i primi processori multi core presentati sul mercato sono stati, verso la fine del [[2005]], il [[Cell (processore)|Cell]], CPU sviluppata congiuntamente da [[IBM]], [[Sony]] e [[Toshiba]] per il mercato console/blade server e composto da 8 core non omogenei, e l'[[UltraSPARC T1]], processore a 8 core omogenei sviluppato da [[Sun Microsystems]] per il mercato server (In particolare per [[Web server]] con numerosi accessi) capace di gestire 32 [[thread]] simultanei.
 
Intel cercò già con il Pentium 4 [[Northwood (hardware)|Northwood]], che introduceva la tecnologia [[Hyper-Threading]], di migliorare questo limite dei processori ''single core'', sfruttando in maniera più razionale la lunga [[pipeline (CPU)|pipeline]] tipica dei suoi processori basati su architettura [[NetBurst]]; si trattava in buona sostanza di simulare la presenza di due core, rendendo disponibile al sistema due core "logici". In realtà nell'esecuzione delle applicazioni il contributo di tale tecnologia era marginale ma si otteneva un discreto miglioramento nella reattività del sistema, ottimizzando il [[multitasking]], cioè l'esecuzione di più operazioni contemporaneamente.
Questo tipo di architettura, al pari dei sistemi dual core e, più generalmente, di tutti i sistemi [[biprocessore]] e [[multiprocessore]], consente di aumentare la potenza di calcolo senza aumentare la frequenza di lavoro, a tutto vantaggio del calore dissipato oltre a garantire maggiori prestazioni in ambiti molto specifici dove più che un'alta potenza di calcolo è richiesto un grande [[calcolo parallelo|parallelismo]].
 
=== Il raggiungimento dei limiti tecnologici ===
== Dai Dual Core ai Multi Core ==
Con il progredire dei processi produttivi (fino ad arrivare a quello a [[90 nm]]) e il raggiungimento di frequenze di funzionamento sempre più elevate e vicini ai limiti fisici della tecnologia a [[semiconduttore]], i due principali produttori di chip, [[Intel]] e [[Advanced Micro Devices|AMD]] decisero di migrare gradualmente<ref>Tra le ultime CPU prodotte per PC a ''single core'' c'è l'Intel Celeron 807 e il Celeron B730, entrambi hanno debuttato nel mercato ad agosto 2012.</ref> all'architettura ''dual core'' (a due ''core''). In pratica, non potendo aumentare più la frequenza massima si cerca di migliorare il [[calcolo parallelo|parallelismo]], mettendo a disposizione del [[sistema operativo]] una configurazione molto simile a quella dei tradizionali sistemi [[multiprocessore]].
Nel corso del [[2005]] sono arrivati i primi chip dual core per mercato desktop; questo in pratica è successo perché si è giunti ad un livello tecnologico di sviluppo hardware tale che, una volta raggiunte le dimensioni minime possibili dei [[transistor]] con la generazione dei processori [[Pentium]], cercare di aumentare la potenza di elaborazione aumentando la frequenza di [[clock]] di una CPU (che fino a questo momento erano state [[single core]]) era diventato assai oneroso e complicato per via dei consumi di potenza elettrica, che hanno superato abbondantemente i 100 W, e il conseguente gravoso problema del raffreddamento dei circuiti.
 
Difatti si giunse a un punto tale per cui aumentare ulteriormente le frequenze delle CPU, malgrado le dimensioni minime dei [[transistor]], comportava ormai consumi troppo elevati in relazione al modesto aumento di prestazioni<ref>a quei tempi un processore single core top di gamma superava abbondantemente i 100 W di consumo massimo</ref> e questo aveva serie ripercussioni anche sul gravoso problema del raffreddamento dei circuiti.
La soluzione che è sembrata più ovvia ai progettisti è stata quella di puntare tutto sul [[calcolo parallelo|parallelismo]] in modo da poter aumentare il numero di operazioni eseguibili in un unico ciclo di clock. Questo approccio comporta anche alcuni svantaggi, in quanto i programmi devono essere ottimizzati per un utilizzo [[multi-thread]] per poter sfruttare appieno le caratteristiche di questi processori, in caso contrario essi impegneranno solo uno dei due core, lasciando l'altro pressoché inutilizzato. Può addirittura verificarsi che un programma applicativo risulti di più lenta esecuzione su un processore dual core e, al momento del lancio, erano veramente pochi i [[software]] già pronti per queste nuove architetture. L'incapacità di raggiungere i livelli di prestazione teorici dei sistemi a parallelismo massiccio è detta ''[[sindrome di von Neumann]]''.
<BR>
Una volta completato l'aggiornamento di tutti i programmi verso la nuova filosofia, tutto dovrebbe (il condizionale è d'obbligo) risultare più semplice, soprattutto alla luce anche dei nuovi processori [[quad core]], ovvero formati da 4 core arrivati a fine [[2006]]; si tratta di soluzioni che richiedono ancora di più l'esistenza di applicazioni ottimizzate per poter esprimere il proprio potenziale.
Diversi analisti infatti, prevedono che se il software pensato per un utilizzo parallelo in ambito dual core viene realizzato in maniera oculata, tenendo conto non del funzionamento su un sistema dual core, ma su un sistema a più core, non richiederebbe poi grosse modifiche per essere utilizzato su un dual core o su un quad core. Secondo altri invece, gli sforzi necessari per realizzare software multi processore che funzioni in maniera ottimale saturando tutti i core e non occupandoli in modo disomogeneo saranno esagerati in relazione con i reali vantaggi, soprattutto di impatto di costi. Su una materia così nuova in ambito desktop, non si può fare altro che attendere maggiori dettagli.
 
La soluzione che è sembratasembrò più ovvia ai progettisti èdi statamicroprocessori fu quella di puntare tutto sul [[calcolo parallelo|parallelismo]], in modo da poter aumentare il numero di operazioni eseguibili in un unico ciclo di clock. Questo nuovo approccio comportacomunque non era del tutto indolore e comportava anche alcuni svantaggi, in quanto i programmi devonodovevano essere ottimizzati per un utilizzo [[multi-thread]] ovvero parallelizzati anch'essi per poter sfruttare appieno le caratteristiche di questi processori, in caso contrario essi impegnerannoavrebbero impegnato solo uno dei due core, lasciando l'altro pressoché inutilizzato. PuòParadossalmente, addiritturaera verificarsianche possibile che un programma applicativo risultinon pensato per un'esecuzione di tipo parallelo risultasse di più lenta esecuzione su un processore dualmulticore rispetto a uno single core, e, infatti al momento del lancio dei primi esemplari, erano veramente pochi i [[software]] già pronti per queste nuove architetture. L'Tale incapacità di raggiungere i livelli di prestazione teorici dei sistemi a parallelismo massiccio è dettanota ''come "[[sindrome di von Neumann]]''".
Esistono differenti approcci attraverso i quali si possono realizzare chip multi core e per approfondimenti si rimanda alle seguenti voci di approfondimento che, sebbene riferite a processori dual core, espongono comunque concetti di carattere generale che ben si adattano anche a considerazioni su CPU a più core:
 
* '''[[Dual core (tecniche di realizzazione)]]''' per i dettagli sulla realizzazione fisica di queste CPU.
Diversi analisti software, infatti, prevedonoprevedevano già allora che se il software pensato per un utilizzo parallelo in ambito dual core vienefosse stato realizzato in maniera oculata, tenendo conto non del funzionamento su un sistema dual core, ma su un sistema a più core, esso non richiederebbeavrebbe richiesto poi grosse modifiche per essere utilizzato su un dual core o su un quadpiù coregenerico processore multicore. Secondo altri, invece, gli sforzi necessari per realizzare software multi processore che funzioniavrebbe funzionato in maniera ottimale saturando tutti i core e non occupandoli in modo disomogeneo sarannosarebbero stati esagerati in relazione con i reali vantaggi, soprattutto di impatto di costi. Su una materia cosìtanto nuova in ambito desktop, ai tempi non si puòpoteva fare altro che attendere maggiori dettagli, ma il tempo ha poi portato gli sviluppatori ad acquisire sempre maggiore esperienza e dimestichezza con la programmazione parallela e molti dei timori dei primi giorni risultano ormai superati.
* '''[[Dual core (gestione della cache)]]''' per considerazioni sulla fruizione della cache da parte di ciascun core.
 
=== Le prime CPU multicore ===
I primi esemplari di CPU multicore vennero presentati da [[IBM]] con l'introduzione linea [[POWER4]] nel 2001. Tuttavia fu solo nel 2005 che l'interesse del mercato mondiale verso la tecnologia multicore divenne rilevante: in quell'anno i due maggiori produttori di CPU al mondo, [[Intel]] e [[Advanced Micro Devices|AMD]], misero in commercio i primi esemplari di una nuova generazione di microprocessori per il mercato consumer, basati sui rispettivi prodotti esistenti ma contenenti due core.
Si trattava delle famiglie di processori [[Pentium D]] dalla parte di Intel, e di [[Opteron]] e [[Athlon 64 X2]] dalla parte di AMD.
 
Intel estese progressivamente l'utilizzo della tecnologia dual core a tutti i segmenti di mercato, incluso quello mobile, di cui il primo esponente fu il [[Core Duo]] [[Yonah]] e successivamente [[Merom (microprocessore)|Merom]], entrambi evoluzioni del [[Pentium M]], e al settore server. In questa categoria i primi dual core furono [[Montecito (processore)|Montecito]] evoluzione del processore a [[64 bit]] [[Itanium 2]] con cache L3 che raggiunse in alcune versioni i 24 MB di capacità, mentre per i server [[x86]] basati sul processore [[Xeon]], videro la luce [[Dempsey (informatica)|Dempsey]] e [[Paxville (hardware)|Paxville]], pensate rispettivamente per i sistemi workstation e server a due e quattro processori. Da Conroe venne derivato anche lo Xeon [[Woodcrest (hardware)|Woodcrest]], per sistemi server di fascia bassa dotati di due [[Socket (elettronica)|socket]].
 
IntelI haprimi avutoprocessori ilcon meritopiù di rendere i processori a 4due core disponibili praticamente a tutti, ma i primi processori multi corevennero presentati sul mercato sono stati,già verso la fine del [[2005]],: ilsi trattava del [[Cell (processore)|Cell]], CPU sviluppatasviluppato congiuntamente da [[IBM]], [[Sony]] e [[Toshiba]] per il mercato [[Console (videogiochi)|console/]] e [[blade server]] e composto da 8 core[[sistema nonmultiprocessore omogenei,asimmetrico|core eterogenei]]; e l'[[UltraSPARC T1]], processore a 8 core omogenei sviluppato da [[Sun Microsystems]] per il mercato server, (Incomposto particolareda per8 [[Websistema server]]multiprocessore consimmetrico|core numerosi accessi) capace di gestire 32 [[threadomogenei]] simultanei.
 
Nel 2006 Intel continuò ad investire sul mercato consumer introducendo i processori [[Core 2 Extreme]] e [[Core 2 Quad]], a quattro core in architettura [[Kentsfield]].
 
== Tipologie di architetture multicore ==
{{vedi anche|Architettura dual core}}
 
Esistono differenti approcci attraverso i quali si possono realizzare chip multicore, ciascuno con precise peculiarità.
 
Ci sono casi in cui ci possono essere prodotti con un numero dispari di core, come il triple core di AMD (Athlon II X3 435).
 
== Utilizzo da parte dei sistemi operativi ==
Ogni [[sistema operativo]] gestisce in modo differente le potenzialità dei processori multicore, in alcuni casi queste gestioni variano anche a seconda della versione del sistema operativo (Windows XP, Windows XP SP2 professional, ecc), tuttavia pur implementando il supporto a varie tecnologie hardware e soluzioni software non è detto che si possa assistere a reali vantaggi, in quanto i programmi non sempre supportano queste architetture hardware in modo efficiente, limitando i vantaggi all'utilizzo di più programmi contemporaneamente, per questo bisognerebbe riscrivere il kernel per poter sfruttare le potenzialità multicore a pieno.<ref>[http://www.tomshw.it/cont/news/windows-poco-efficiente-con-le-cpu-multi-core/24514/1.html?pag_commenti=1 Windows poco efficiente con le CPU multi-core]</ref><ref>[http://tesi.cab.unipd.it/26364/1/Tesi_Lorenzo_Baesso_578440.pdf Sistemi multiprocessore e multicore]</ref>
 
Le prime implementazioni nei sistemi Microsoft si ha con la versione SP2 professional di Windows XP, con un supporto limitato all'architettura hardware SMP ([[Symmetric multiprocessing]] o [[Symmetric multiprocessor]]) dove i core o processori accedono ad uno spazio di memoria condiviso, mentre dal punto di vista software viene usata la funzionalità processor affinity che identifica i core come Core0 e Core1, consentendo all'utente di decidere su quale di essi avviare ed eseguire l'applicazione, successivamente l'approccio venne rivisto prima con Windows Vista poi con Windows 7, quest'ultimo supporta soluzioni hardware NUMA ([[Non-Uniform Memory Access]])<ref>{{Cita web |url=http://www.storiainformatica.it/windows/44-sistemi-operativi/windows/22-windows-e-le-cpu-multi-core |titolo=Windows e le CPU Multi-Core |accesso=13 settembre 2014 |dataarchivio=13 settembre 2014 |urlarchivio=https://web.archive.org/web/20140913130825/http://www.storiainformatica.it/windows/44-sistemi-operativi/windows/22-windows-e-le-cpu-multi-core |urlmorto=sì }}</ref>.
 
Nei sistemi Apple [[macOS]] con la versione 10.6 c'è l'introduzione del [[Grand Central Dispatch]] per implementare il [[parallelismo a livello di thread]], migliorando il supporto ai multicore.
 
Nei sistemi basati su kernel Linux, si ha il primo supporto all'hardware SMP con la versione 2 del kernel, che comprendeva un big kernel lock (BKL) per la gestione degli interrupt, successivamente con la versione 2.2 i gestori d'interrupt avevano [[spinlock]] differenziati, alcune distribuzioni e ottimizzazioni inclusero il codice di supporto per sistemi NUMA. Nella versione 2.4 sempre più sottosistemi vennero gestiti al di fuori del BKL, grazie all'introduzione di nuovi database lock, ma presenta ancora spinlocks che coprono interi sottosistemi, questo permise di migliorare la scalabilità, che migliorò ulteriormente con la versione 2.5 del kernel, che ottimizzò la cache della pagina dei lock di conversione da un singolo blocco di codice a più blocchi di dati.<br />Con la versione 2.6 il BKL venne relegato ad una piccola parte del codice del kernel, in quanto la maggior parte del BKL venne convertito in database lock con elevata sintonizzazione e scalabilità per eliminare il ripetersi della linea di cache condivisa, mentre nei sottosistemi critici c'è un certo uso di approcci di lock meno avanzati, quali [[Read-Copy-Update|Read-Copy-Update (RCU)]], venne introdotto un nuovo programmatore multi CPU di coda, risolvendo le contese sulle code di esecuzione globali condivise da più CPU, riducendo il sovraccarico dei processi di pianificazione in parallelo. Questo scheduler venne introdotto anche su alcuni kernel 2.4 delle ultime distribuzioni.<ref>[http://halobates.de/lk09-scalability.pdf Linux multi-core scalability]</ref><ref>{{Cita web |url=http://www.tuxradar.com/answers/501 |titolo=How well does Linux support multi-core CPUs? |accesso=13 settembre 2014 |dataarchivio=13 settembre 2014 |urlarchivio=https://web.archive.org/web/20140913124747/http://www.tuxradar.com/answers/501 |urlmorto=sì }}</ref>
Questa strategia ha permesso al kernel linux in elevata scalabilità ed effettivi miglioramenti con sistemi multicore<ref>[http://www.oneopensource.it/08/03/2011/linux-2-6-38-benchmark-del-kernel-multi-core-scaling/ Linux 2.6.38: benchmark del kernel multi-core scaling] {{webarchive|url=https://web.archive.org/web/20140929193541/http://www.oneopensource.it/08/03/2011/linux-2-6-38-benchmark-del-kernel-multi-core-scaling/ |data=29 settembre 2014 }}</ref>
 
In ambito videoludico e in particolar modo delle librerie grafiche le [[DirectX 12]], [[Vulkan (API)]] e [[Mantle]] hanno permesso il migliore sfruttamento dei diversi core del processore, permettendone il dialogo attivo e diretto con la GPU, cosa che in precedenza non era attuabile se non in modo limitato<ref>{{Cita web |url=http://www.tmag.it/2015/03/18/brad-wardell-svela-perche-microsoft-amd-nvidia-e-intel-non-vogliono-parlare-dei-benefici-delle-directx-12/ |titolo=Brad Wardell svela perché Microsoft, AMD, Nvidia e Intel non vogliono parlare dei benefici delle DirectX 12 |accesso=26 aprile 2015 |dataarchivio=23 marzo 2015 |urlarchivio=https://web.archive.org/web/20150323071136/http://www.tmag.it/2015/03/18/brad-wardell-svela-perche-microsoft-amd-nvidia-e-intel-non-vogliono-parlare-dei-benefici-delle-directx-12/ |urlmorto=sì }}</ref>
 
Lo sfruttamento da parte delle applicazioni e situazioni operative varia molto a seconda degli stessi e a seconda del sistema operativo utilizzato<ref>[https://www.phoronix.com/scan.php?page=article&item=multi_os_scaling&num=1 Multi-Core, Multi-OS Scaling Performance]</ref>
 
== Note ==
<references />
 
== Voci correlate ==
* [[Architetture di sistemi multiprocessore]]
* [[Calcolo parallelo]]
* [[Scalabilità]]
* [[Sindrome di von Neumann]]
 
== Collegamenti esterni ==
* [{{cita web|http://www.appuntidigitali.it/4302/architetture-multicore-solo-moda-o-reale-necessita/ |Architetture multicore: solo moda o reale necessità?]}}
{{Controllo di autorità}}
{{Portale|Informatica}}
{{Portale|informatica|elettronica}}
 
[[Categoria:Microprocessore]]
[[Categoria:Calcolo parallelo]]
 
[[ca:Multi core]]
[[de:Multicore]]
[[en:Multi-core (computing)]]
[[es:Multi núcleo]]
[[fr:Multicore]]
[[ja:マルチコア]]
[[nl:Multikernprocessor]]
[[pt:Multicore]]