Processore multicore

Da Wikipedia, l'enciclopedia libera.
(Reindirizzamento daCore (informatica))
Vai alla navigazione Vai alla ricerca
Disambiguazione– "Single core" rimanda qui. Se stai cercando il tipo tradizionale di processore, vediProcessore scalare.
Disambiguazione– "Dual core" rimanda qui. Se stai cercando altri significati, vediDual core (disambigua).
Interno di unMicroprocessorequad-core

Inelettronicaedinformatica,con il termineprocessore multicoresi intende un tipo diprocessoreparallelo caratterizzato dall'essere costituito da una moltitudine di unità di elaborazione indipendenti, integrate sullo stessochip,che assumono la denominazione dicore(lett."nucleo" in italiano).[1]

Fino al 2005 quasi tutti imicroprocessori(dall'Intel 8086,fino agliAthlon 64ePentium 4) sono sempre statisingle coree i miglioramenti nelle prestazioni sono passati attraverso aumenti dellafrequenza di funzionamento,maggiori dimensioni dellacache,funzionalità aggiuntive, e miglioramenti dell'efficienza dellamicroarchitettura,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 4Northwood,che introduceva la tecnologiaHyper-Threading,di migliorare questo limite dei processorisingle core,sfruttando in maniera più razionale la lungapipelinetipica dei suoi processori basati su architetturaNetBurst;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 ilmultitasking,cioè l'esecuzione di più operazioni contemporaneamente.

Il raggiungimento dei limiti tecnologici

[modifica|modifica wikitesto]

Con il progredire dei processi produttivi (fino ad arrivare a quello a90 nm) e il raggiungimento di frequenze di funzionamento sempre più elevate e vicini ai limiti fisici della tecnologia asemiconduttore,i due principali produttori di chip,InteleAMDdecisero di migrare gradualmente[2]all'architetturadual core(a duecore). In pratica, non potendo aumentare più la frequenza massima si cerca di migliorare ilparallelismo,mettendo a disposizione delsistema operativouna configurazione molto simile a quella dei tradizionali sistemimultiprocessore.

Difatti si giunse a un punto tale per cui aumentare ulteriormente le frequenze delle CPU, malgrado le dimensioni minime deitransistor,comportava ormai consumi troppo elevati in relazione al modesto aumento di prestazioni[3]e questo ovviamente aveva serie ripercussioni anche sul gravoso problema del raffreddamento dei circuiti.

La soluzione che sembrò più ovvia ai progettisti di microprocessori fu quella di puntare tutto sulparallelismoin 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 utilizzomulti-threadovvero 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 multicore rispetto a uno single core, e infatti al momento del lancio dei primi esemplari, erano veramente pochi isoftwaregià pronti per queste nuove architetture. Tale incapacità di raggiungere i livelli di prestazione teorici dei sistemi a parallelismo massiccio è nota come "sindrome di von Neumann".

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 multicore. Secondo altri, invece, gli sforzi necessari per realizzare software multi processore che avrebbe funzionato in maniera ottimale saturando tutti i core e non occupandoli in modo disomogeneo sarebbero stati esagerati in relazione con i reali vantaggi, soprattutto di impatto di costi. Su una materia tanto nuova in ambito desktop, ai tempi non si 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.

Le prime CPU multicore

[modifica|modifica wikitesto]

I primi esemplari di CPU multicore vennero presentati daIBMcon l'introduzione lineaPOWER4nel 2001. Tuttavia fu solo nel 2005 che l'interesse del mercato mondiale verso la tecnologia multicore divennne rilevante: in quell'anno i due maggiori produttori di CPU al mondo,InteleAMD,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 processoriPentium Ddalla parte di Intel, e diOpteroneAthlon 64 X2dalla 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 ilCore DuoYonahe successivamenteMerom,entrambi evoluzioni delPentium M,e ovviamente al settore server. In questa categoria i primi dual core furonoMontecitoevoluzione del processore a64 bitItanium 2con cache L3 che raggiunse in alcune versioni i 24 MB di capacità, mentre per i serverx86basati sul processoreXeon,videro la luceDempseyePaxville,pensate rispettivamente per i sistemi workstation e server a 2 e 4 processori. Da Conroe venne derivato anche lo XeonWoodcrest,per sistemi server di fascia bassa dotati di 2socket.

I primi processori con più di due core vennero presentati sul mercato già verso la fine del 2005: si trattava delCell,sviluppato congiuntamente daIBM,SonyeToshibaper il mercatoconsoleeblade servere composto da 8core eterogenei;e l'UltraSPARC T1,sviluppato daSun Microsystemsper il mercato server, composto da 8core omogenei.

Nel 2006 Intel continuò ad investire sul mercato consumer introducendo i processoriCore 2 ExtremeeCore 2 Quad,a quattro core in architetturaKentsfield.

Tipologie di architetture multicore

[modifica|modifica wikitesto]
Lo stesso argomento in dettaglio: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). Questo tipo di architettura, rispetto allasingle core,consente di aumentare la potenza di calcolo di una CPU senza aumentare lafrequenza di clockdi lavoro, a tutto vantaggio delcaloredissipato (che diminuisce rispetto nel caso di più processori separati) così come l'energia assorbita.

Utilizzo da parte dei sistemi operativi

[modifica|modifica wikitesto]

Ognisistema operativogestisce 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.[4][5]

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 multiprocessingoSymmetric 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)[6].

Nei sistemi ApplemacOScon la versione 10.6 c'è l'introduzione delGrand Central Dispatchper implementare ilparallelismo 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 avevanospinlockdifferenziati, 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.
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, qualiRead-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.[7][8] Questa strategia ha permesso al kernel linux in elevata scalabilità ed effettivi miglioramenti con sistemi multicore[9]

In ambito videoludico e in particolar modo delle librerie grafiche leDirectX 12,Vulkan (API)eMantlehanno 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[10]

Lo sfruttamento da parte delle applicazioni e situazioni operative varia molto a seconda degli stessi e a seconda del sistema operativo utilizzato[11]

  1. ^Processore multicore,inTreccani.it – Enciclopedie on line,Roma, Istituto dell'Enciclopedia Italiana.
  2. ^Tra le ultime CPU prodotte per PC asingle corec'è l'Intel Celeron 807 e il Celeron B730, entrambi hanno debuttato nel mercato ad agosto 2012.
  3. ^a quei tempi un processore single core top di gamma superava abbondantemente i 100 W di consumo massimo
  4. ^Windows poco efficiente con le CPU multi-core
  5. ^Sistemi multiprocessore e multicore
  6. ^Windows e le CPU Multi-Core
  7. ^Linux multi-core scalability
  8. ^How well does Linux support multi-core CPUs?,sutuxradar.URL consultato il 13 settembre 2014(archiviato dall'url originaleil 13 settembre 2014).
  9. ^Linux 2.6.38: benchmark del kernel multi-core scalingArchiviatoil 29 settembre 2014 inInternet Archive.
  10. ^Brad Wardell svela perché Microsoft, AMD, Nvidia e Intel non vogliono parlare dei benefici delle DirectX 12,sutmag.it.URL consultato il 26 aprile 2015(archiviato dall'url originaleil 23 marzo 2015).
  11. ^Multi-Core, Multi-OS Scaling Performance

Collegamenti esterni

[modifica|modifica wikitesto]
Controllo di autoritàGND(DE)7598578-0