Processore multicore: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
fix |
migliora forma |
||
(8 versioni intermedie di 7 utenti non mostrate) | |||
Riga 4:
[[File:Quad-Core_AMD_Opteron_processor.jpg|thumb|upright=1.5|Interno di un [[Microprocessore]] quad-core]]
In [[elettronica]]
== Storia ==
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 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.
Riga 14:
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]].
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
La soluzione che sembrò più ovvia ai progettisti di microprocessori 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 comunque non era del tutto indolore e comportava anche alcuni svantaggi, in quanto i programmi dovevano essere ottimizzati per un utilizzo [[multi-thread]] ovvero parallelizzati anch'essi per poter sfruttare appieno le caratteristiche di questi processori, in caso contrario essi avrebbero impegnato solo uno dei core, lasciando l'altro pressoché inutilizzato. Paradossalmente, era anche possibile che un programma applicativo non pensato per un'esecuzione di tipo parallelo risultasse di più lenta esecuzione su un processore
Diversi analisti software, infatti, prevedevano già allora che se il software pensato per un utilizzo parallelo in ambito dual core fosse stato realizzato in maniera oculata, tenendo conto non del funzionamento su un sistema dual core, ma su un sistema a più core, esso non avrebbe richiesto poi grosse modifiche per essere utilizzato su un dual core o su un più generico processore
=== Le prime CPU multicore ===
I primi esemplari di CPU
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
I primi processori con più di due core vennero presentati sul mercato già verso la fine del 2005: si trattava del [[Cell (processore)|Cell]], sviluppato congiuntamente da [[IBM]], [[Sony]] e [[Toshiba]] per il mercato [[Console (videogiochi)|console]] e [[blade server]] e composto da 8 [[sistema multiprocessore asimmetrico|core eterogenei]]; e l'[[UltraSPARC T1]], sviluppato da [[Sun Microsystems]] per il mercato server, composto da 8 [[sistema multiprocessore simmetrico|core omogenei]].
Riga 33:
{{vedi anche|Architettura dual core}}
Esistono differenti approcci attraverso i quali si possono realizzare chip
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>
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.
Riga 47:
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>
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>
Riga 57:
* [[Architetture di sistemi multiprocessore]]
* [[Calcolo parallelo]]
* [[Scalabilità]]
* [[Sindrome di von Neumann]]
|