Notizie da Internet

Come funzionano i processori multi-core

L'aumento della frequenza, della cache o il passaggio dai 32 ai 64 bit non sono più sufficienti. I vantaggi e gli svantaggi delle nuove architetture.

 Nel nostro futuro ci saranno processori con decine e decine di core? Per quanto possa sembrare sorprendente, si tratta di una prospettiva molto probabile, e l’attuale scenario di mercato sembra già indicare che il trend sia stato imboccato con decisione. Sono già in commercio molti modelli di processore dual-core proposti sia da AMD, sia da Intel, che ne hanno predisposto versioni per tutti i principali segmenti di mercato (desktop, server e notebook). Intel è stata poi la prima ad offrire un processore desktop quad-core, mentre AMD ha per il momento risposto con la sua architettura Quad FX, che consente di realizzare sistemi desktop quad-core basati su due processori dual-core, in attesa di lanciare a sua volta un proprio processore quad-core: quando questo accadrà, la piattaforma Quad FX consentirà di impiegarne due per realizzare un sistema desktop dotato, complessivamente, di otto core. È difficile prevedere il ritmo di crescita del numero di core nei nostri PC, ma è possibile comprendere le forze in gioco: da un lato difficoltà tecniche frenano questa corsa, dall’altro ci sono le aspettative dei costruttori.
 L’interesse verso i processori multi-core per l’aumento delle prestazioni è nato principalmente perché, negli ultimi tempi, era apparso ormai chiaro che le sole strategie classiche - l’aumento del clock della CPU, il passaggio da 32 a 64 bit, l’aumento della cache integrata e l’accelerazione delle comunicazioni fra CPU e RAM – non erano più sufficienti ad assicurare, da sole, una crescita della velocità di elaborazione paragonabile a quella che è stato possibile mantenere in passato. Inoltre, l’applicazione di quelle strategie stava diventando sempre più difficile o inefficace.
Sui portatili era improponibile usare CPU che consumavano potenze che superavano di slancio i 100W, e questo sia per motivi termici, sia per non ridurre a livelli insoddisfacenti, per l’eccessivo consumo elettrico, l’autonomia della batteria.
Anche il passaggio da un’architettura a 32 bit a una a 64 bit ha portato frutti meno significativi di quanto ci si aspettasse.
Da un lato, i sistemi operativi hanno impiegato tempo ad adeguarsi, dall’altro, le applicazioni hanno dimostrato di non aver bisogno di un gigantesco aumento della quantità di memoria indirizzabile o di un raddoppio della lunghezza dei registri della CPU, ma piuttosto di una CPU più veloce e possibilmente più “libera” da altri compiti concomitanti.
L’aumento della cache integrata nel processore è sempre vantaggioso, ma il vantaggio prestazionale decresce all’aumentare delle dimensioni. Infatti, il principio di funzionamento della cache si basa su una semplice considerazione statistica: un dato (o un’istruzione) utilizzato di recente sarà probabilmente utilizzato nuovamente fra non molto tempo. Questo principio è molto ben rispettato dalla maggior parte del software utilizzato sui PC, tanto che una quantità relativamente modesta di cache memory L2 (anche dell’ordine di 128-512Kbytes) è sufficiente ad evitare accessi alla memoria nel 90-95% dei casi. Aumentare la cache L2 in modo esagerato permette di limare il 5-10% rimanente, ma non può certo assicurare vantaggi eclatanti dato che si è già vicini all’ottimo.
Infine, la RAM sta attraversando da anni un’evoluzione continua che, da un lato, obbliga ad aggiornare motherboard e la RAM stessa ad ogni cambio di PC e mantiene alti i costi dei moduli DIMM, dall’altro produce benefici modesti dato che un aumento di transfer rate, ossia della velocità alla quale la RAM fornisce i dati richiesti una volta iniziato il flusso di risposta, si paga con un proporzionale aumento della latenza, ossia del ritardo con cui tale risposta può avere inizio; pertanto, i vantaggi effettivi dipendono fortemente dal tipo di applicazioni. Di certo non ci si deve aspettare che, a parità di ogni altra condizione, passando semplicemente da un sistema con memorie DDR a memorie DDR2 o DDR3 si ottenga un raddoppio o un quadruplicamento delle prestazioni applicative.
Come aumentare le prestazioni?
Quale strada, allora, per aumentare le prestazioni? Lavorare sulla capacità della CPU di eseguire istruzioni sempre più rapidamente. Per anni alle CPU sono state applicate tecniche che miravano a replicare i vantaggi dell’impostazione del lavoro di una catena di montaggio, in cui il lavoro viene decomposto in una serie di fasi semplici, e quindi di breve durata (CPU superpipelined), oppure tecniche con le quali si tentava di eseguire in parallelo le attività non interdipendenti trovate nella sequenza di istruzioni di un programma (CPU superscalari). Questo ha portato a costruire processori che si sono probabilmente avvicinati a un’efficienza ottimale nell’esecuzione del codice x86. Ma il funzionamento dei moderni sistemi operativi è caratterizzato da un gran numero di attività svolte in parallelo.
Numerosi processi, poi, eseguono operazioni periodiche necessarie per il buon funzionamento del sistema e delle sue periferiche.
Per avere un’idea di quanti processi ci sono in esecuzione anche in un momento di assoluta “quiete” apparente del sistema, è sufficiente aprire il Task Manager di Windows. In definitiva, il processore è conteso da decine e decine di processi, alcuni dei quali particolarmente pesanti da eseguire, ai quali la CPU deve ciclicamente “dare retta”: tutto mentre è in funzione l’applicazione che interessa all’utente, ossia, in questo esempio, il Web browser.
Una soluzione a questo problema consiste nell’installare più di una CPU nel PC, in modo tale che il carico lavoro per l’esecuzione dei programmi venga ripartito fra i processori disponibili. Poiché l’installazione di CPU multiple fisicamente distinte, ognuna con il proprio socket, il proprio dissipatore, la propria RAM, etc. complica notevolmente la motherboard e crea seri problemi di spazio, AMD e Intel hanno puntato sui processori dual-core, che in un unico involucro racchiudono due CPU complete e vantaggiosamente integrate tra loro in quanto, a seconda dell’architettura, condividono la cache, il controller della memoria o il canale d’accesso al bus. Per la motherboard non cambia sostanzialmente nulla, né dal punto di vista degli ingombri fisici, né dal punto di vista della logica di funzionamento: al massimo, può essere richiesto un aggiornamento del firmware.
Il Dual core
I processori AMD della serie X2 e quelli Intel con suffisso Duo seguono questo approccio. L’Intel Core 2 Duo Extreme QX6700, infine, integra al suo interno 2 die dual-core praticamente uguali a quelli di un Core 2 Duo, per un totale di 4 core; le due coppie di core dispongono di due banchi di cache totalmente indipendenti, che comunicano tra loro con il normale Front Side bus, sul quale devono perciò viaggiare i segnali di controllo di coerenza delle cache. Si può considerare questa soluzione come una fase provvisoria, in attesa che sia possibile fabbricare un die monolitico con 4 core e cache condivisa.
Questo è tecnicamente molto più difficile che produrre due die dual-core ed aggregarli, in quanto la difficoltà produttiva dipende direttamente dall’area del die. Più è grande il die, più è statisticamente probabile che su esso vi siano dei transistor difettosi. La strada per migliorare la resa produttiva consiste nel passare dal processo a 65 nm a quello a 45 nm, che riduce sensibilmente la dimensione del die facilitandone la produzione.
Inoltre, il processo a 45 nm (e le successive evoluzioni, via via più miniaturizzate), grazie alla riduzione degli ingombri e dei consumi elettrici consentirà di alloggiare nell’involucro della CPU un numero ancora maggiore di core.
Grazie al massiccio parallelismo che lo caratterizza, un processore multi-core può evitare di perseguire a tutti i costi l’aumento della frequenza di lavoro, che può anzi diminuire, compensata da un maggior numero di unità di esecuzione.
Poiché il consumo elettrico decresce più che linearmente al decrescere della frequenza, mentre la potenza di calcolo complessiva cresce linearmente con il numero dei core, un processore dual-core operante a metà del clock di uno single-core può possedere le stesse prestazioni di calcolo con un consumo elettrico inferiore.
Il vantaggio è ancor più evidente all’aumentare del numero dei core, senza contare che è possibile fare in modo che, in condizioni di basso carico, uno o più core vengano disattivati quasi completamente, entrando in uno stato a bassissimo consumo elettrico. Quindi i processori multi-core risultano anche energeticamente efficienti e particolarmente adatti ad applicazioni in cui conta la durata della batteria (portatili), il silenzio e l’assenza di ventole (media center) o bassi consumi elettrici e produzione di calore (macchine server e blade).
E sul fronte delle prestazioni, qual è il beneficio per l’utente finale? La risposta breve è: dipende, dal tipo di utilizzo che si fa del PC e dal tipo di applicazioni che si fanno girare. Se il PC viene usato per eseguire contemporaneamente molte applicazioni “pesanti” l’architettura multi-core è la piattaforma hardware ottimale.
Questo è vero soprattutto nei server, che per rispondere alle richieste che arrivano dai client devono mandare in esecuzione dei programmi. Un server multi-core, fintantochè vi sono core “scarichi”, non subirà praticamente alcun degrado di prestazioni all’arrivo di una nuova richiesta. Semplicemente, la assegnerà ad un processore libero senza minimamente perturbare l’esecuzione concomitante dei programmi che stanno servendo le richieste arrivate in precedenza. Ma anche in un normale PC da ufficio il beneficio si percepisce. L’entrata in funzione dell’antivirus mentre si lavora quasi non si avverte; i programmi partono più in fretta, ed il tempo di risposta appare in generale più basso. Migliora la latenza del computer.
Vi sono poi applicazioni che si prestano particolarmente bene all’esecuzione su hardware multi-core, in quanto i loro algoritmi sono più adatti ad essere suddivisi in più compiti indipendenti da eseguire in parallelo. È il caso dei programmi che codificano e decodificano audio e video, oppure di quelli che eseguono calcoli per grafica tridimensionale. Questi programmi possono esibire un aumento di prestazioni quasi esattamente proporzionale al numero dei core.
Viceversa, chi usa il PC per sviluppare software, giocare oppure utilizzare database noterà vantaggi minori, in quanto compilatori, giochi e database server si prestano meno bene alla parallelizzazione e non riescono a sfruttare al massimo la capacità di calcolo della macchina.
Per queste applicazioni che tendenzialmente vengono eseguite da un singolo core, infatti, conta di più la velocità di quel core rispetto al numero di core presenti. Sono insomma sensibili ad aspetti più tradizionali delle caratteristiche di un PC: clock, cache, banda verso la memoria, efficienza intrinseca di esecuzione della CPU.
Questo sia per effetto del clock leggermente più alto, sia per il fatto che, attualmente, i giochi più curati sotto questo aspetto riescono a sfruttare adeguatamente non più di 2 core: pertanto, né la capacità di calcolo aggiuntiva, né la cache della seconda coppia di core possono essere efficacemente sfruttati.
Nel futuro ci saranno sicuramente processori con un numero di core in aumento (recentemente Intel ha parlato di processori a 80 core che potrebbero arrivare entro cinque anni, e ha mostrato un prototipo di questa tecnologia), tuttavia non ci dobbiamo aspettare che le prestazioni percepite crescano con pari ritmo.
E chi beneficierà maggiormente del multi-core?
Il massimo beneficio prestazionale si avrà sicuramente sui server. I portatili beneficeranno dei minori consumi elettrici ed offriranno una maggiore autonomia, mantenendo buone prestazioni. Sulle workstation per grafica 3D, calcolo scientifico, simulazioni meteorologiche o elaborazione video i vantaggi saranno evidenti.
Sui desktop da ufficio, invece, il beneficio sarà più incerto, in particolare sui PC usati come “stazioni di gioco”, nei quali sarà più sensato investire in una scheda video ultraveloce e in una CPU ad altissimo clock, anche con minor numero di core. Segnaliamo, infine, che nel mondo x86 si parla di un’architettura in cui il processore integra un certo numero di core utilizzabili come processori per l’esecuzione delle applicazioni (CPU) o come “aiutanti” della scheda grafica (GPU).
Si potrebbe quindi stabilire di mobilitare parte della capacità di elaborazione per supportare questo o quel fronte. Questa architettura potrebbe adattarsi momento per momento al campo d’impiego della macchina e produrre risultati più equilibrati ed uniformi. Se confermato, ciò potrebbe concretizzarsi in pochi anni.

Fonte: PcOpen

© 2024 Utility Line Italia srl a socio unico | Professional Internet Service Provider
Soggetta a direzione e controllo di Mynet srl

Search