Perché i chip contengono sempre più core? Perché non produrre un processore single-core più grande? È più facile da fabbricare? Consentire ai programmi di eseguire il multithread utilizzando core separati?
Perché i chip contengono sempre più core? Perché non produrre un processore single-core più grande? È più facile da fabbricare? Consentire ai programmi di eseguire il multithread utilizzando core separati?
Risposte:
La tendenza verso più core è un approccio ingegneristico che aiuta i progettisti di CPU a evitare il problema del consumo energetico derivante da un ridimensionamento della frequenza sempre crescente. Quando la velocità della CPU è cresciuta nel range di 3-4 Ghz, la quantità di energia elettrica richiesta per andare più veloce ha iniziato a diventare proibitiva. Le ragioni tecniche di ciò sono complesse, ma fattori come le perdite di calore e la corrente di dispersione (potenza che passa semplicemente attraverso i circuiti senza fare nulla di utile) aumentano entrambi più rapidamente all'aumentare delle frequenze. Sebbene sia certamente possibile costruire una CPU x86 per scopi generici a 6 GHz, non è dimostrato economico farlo in modo efficiente. Ecco perché è iniziato il passaggio al multi-core ed è per questo che vedremo che la tendenza continuerà almeno fino a quando i problemi di parallelizzazione diventeranno insormontabili.
Come esempio pratico, l'E5640 Xeon (4 core a 2,66 GHz) ha un inviluppo di potenza di 95 watt mentre l'L5630 (4 core a 2,13 GHz) richiede solo 40 watt. Questo è il 137% in più di energia elettrica per il 24% in più di potenza della CPU per CPU che sono per lo più compatibili con le funzionalità. L'X5677 aumenta la velocità fino a 3,46 GHz con alcune funzionalità in più, ma è solo il 60% in più di potenza di elaborazione per il 225% in più di energia elettrica.
Ora confronta l'X5560 (2,8 GHz, 4 core, 95 watt) con il più recente X5660 (2,8 GHz, 6 core, 95 watt) e c'è una potenza di calcolo aggiuntiva del 50% nella presa (potenzialmente, supponendo che la legge di Amdahl sia gentile con noi per ora) senza richiedere ulteriore energia elettrica. Le CPU della serie 6100 di AMD vedono un simile aumento delle prestazioni complessive rispetto alle serie 2400 \ 8400 mantenendo piatto il consumo di energia elettrica.
Per le attività a thread singolo questo è un problema, ma se i requisiti sono di fornire grandi quantità di potenza della CPU aggregata a un cluster di elaborazione distribuito o un cluster di virtualizzazione, questo è un approccio ragionevole. Ciò significa che per la maggior parte degli ambienti server oggi ridimensionare il numero di core in ciascuna CPU è un approccio molto migliore rispetto al tentativo di costruire CPU single core più veloci e migliori.
La tendenza continuerà per un po ', ma ci sono sfide e non è facile ridimensionare continuamente il numero di core (mantenere la larghezza di banda di memoria abbastanza alta e gestire le cache diventa molto più difficile con l'aumentare del numero di core). Ciò significa che l'attuale crescita abbastanza esplosiva del numero di core per socket dovrà rallentare tra un paio di generazioni e vedremo qualche altro approccio.
Stava diventando troppo difficile renderli utilmente più veloci.
Il problema è che devi lavorare su un mucchio di istruzioni contemporaneamente, l'attuale CPU x86 ha 80 o più istruzioni su cui lavorare contemporaneamente, e sembra che questo sia il limite, dato che è stato colpito con il P4, diamine , il Pentium Pro ha fatto 40 nel 1995. Tipici flussi di istruzioni non sono prevedibili oltre a ciò (devi indovinare rami, accesso alla memoria, ecc.) per eseguire più di alcune istruzioni contemporaneamente (486 fatto 5, Pentium fatto 10, a malapena) .
Quindi, mentre puoi renderli più larghi (unità più funzionali per eseguire ogni parte dell'istruzione), più a lungo (condotte più profonde per nascondere la latenza), non sembra fare molto bene. E sembra che abbiamo anche colpito un muro con la velocità di clock. E stiamo ancora superando la memoria. Dividere in molti CPU sembra essere una vittoria. Inoltre, possono condividere le cache.
C'è molto di più in questo, ma si riduce a programmi convenzionali che non possono essere eseguiti in modo significativamente più veloce su qualsiasi hardware che possiamo immaginare come progettare e costruire.
Ora, se la prevedibilità non è un problema, ad esempio, molti problemi scientifici e grafici (spesso si riducono per moltiplicare questo insieme di numeri per quell'insieme di numeri), non è così, e quindi la popolarità dell'IA64 di Intel ( Itanium) e GPU, che continuano a diventare più veloci, ma non ti aiuteranno a eseguire Word meglio.
La potenza di calcolo e la frequenza di clock di un singolo processore hanno raggiunto il loro picco qualche anno fa, semplicemente non è facile creare processori più potenti e / o più veloci di quelli attuali; così i principali produttori di CPU (Intel, AMD) hanno cambiato strategia e sono diventati multi-core. Ciò ovviamente richiede molto più lavoro da parte degli sviluppatori di applicazioni al fine di sfruttare tutta la potenza del multi-tasking: un programma in esecuzione su una singola attività non ottiene alcun vantaggio da una CPU multi-core (anche se il sistema ottiene un bonus complessivo perché non si blocca se un singolo processo richiede una singola CPU al 100% di utilizzo).
A proposito dell'architettura fisica (processori multi-core anziché multipli single-core) ... dovresti chiedere a Intel. Ma sono abbastanza sicuro che questo abbia qualcosa a che fare con le schede madri con un singolo socket CPU che è molto più facile da progettare e produrre rispetto alle schede con più schede.
Per aumentare la velocità di clock, i transistor al silicio sul chip devono poter passare più velocemente. Queste velocità più elevate richiedono tensioni di ingresso più elevate e processi di produzione di semiconduttori che comportano una maggiore dispersione , entrambi i quali aumentano il consumo di energia e la potenza termica. Alla fine si raggiunge un punto in cui non è possibile aumentare ulteriormente le frequenze senza richiedere quantità eccessive di potenza o utilizzando soluzioni di raffreddamento esotiche.
Per illustrare questo problema, confronterò due moderni processori AMD. L'AMD FX-9590 è in grado di raggiungere velocità di clock predefinite fino a 5 GHz, ma funziona con tensioni di base fino a 1.912 V, che è estremamente elevata per un chip da 32 nm e dissipa un folle 220 watt di calore. L'FX-8350, che si basa sullo stesso die, funziona a un massimo di 4,2 GHz ma funziona a un massimo di 1,4 V e dissipa 125 watt.
Di conseguenza, invece di cercare di aumentare ulteriormente gli orologi, gli ingegneri hanno cercato di far funzionare più velocemente i chip in altri modi, incluso progettandoli per eseguire più processi contemporaneamente, quindi processori multi-core.
Legge di Moore . Fondamentalmente i processori non possono essere resi più veloci (frequenza colpita 3 GHz 5 anni fa e non sono mai andati molto oltre), quindi sono resi più potenti ottenendo più core.