Perché "aggiungere più core" non deve affrontare le stesse limitazioni fisiche di "rendere la CPU più veloce"?


110

Nel 2014 sento molti linguaggi di programmazione pubblicizzati per le loro caratteristiche di concorrenza. Si dice che la concorrenza sia cruciale per il miglioramento delle prestazioni.

Nel fare questa affermazione, molte persone fanno riferimento a un articolo del 2005 intitolato The Free Lunch Is Over: una svolta fondamentale verso la concorrenza nel software . L'argomento di base è che è sempre più difficile aumentare la velocità di clock dei processori, ma possiamo ancora mettere più core su un chip e che per ottenere miglioramenti delle prestazioni, il software dovrà essere scritto per sfruttare più core.

Alcune citazioni chiave:

Siamo abituati a vedere che le CPU da 500 MHz lasciano il posto alle CPU da 1 GHz lasciano il posto alle CPU da 2 GHz e così via. Oggi siamo nella gamma 3GHz sui computer tradizionali.

La domanda chiave è: quando finirà? Dopotutto, la Legge di Moore prevede una crescita esponenziale e chiaramente una crescita esponenziale non può continuare per sempre prima di raggiungere limiti fisici duri; la luce non sta diventando più veloce. La crescita deve infine rallentare e persino finire.

... È diventato sempre più difficile sfruttare velocità di clock più elevate a causa non solo di uno ma di numerosi problemi fisici, in particolare il calore (troppo e troppo difficile da dissipare), il consumo di energia (troppo alto) e gli attuali problemi di dispersione.

... Il futuro di Intel e dei fornitori di processori risiede altrove, poiché le società di chip perseguono in modo aggressivo le stesse nuove direzioni multicore.

... Multicore riguarda l'esecuzione di due o più CPU effettive su un chip.

Le previsioni di questo articolo sembrano aver resistito, ma non capisco perché. Ho solo idee molto vaghe su come funziona l'hardware.

La mia visione semplificata è "sta diventando più difficile racchiudere più potenza di elaborazione nello stesso spazio" (a causa di problemi di calore, consumo energetico, ecc.). Mi aspetto che la conclusione sia "pertanto, dovremo avere computer più grandi o eseguire i nostri programmi su più computer". (E in effetti, il cloud computing distribuito è una cosa di cui sentiamo di più.)

Ma parte della soluzione sembra essere architetture multi-core. A meno che i computer non aumentino di dimensioni (cosa che non hanno), questo sembra essere un altro modo di dire "racchiudi più potere di attrazione nello stesso spazio".

Perché "aggiungere più core" non deve affrontare le stesse limitazioni fisiche di "rendere la CPU più veloce"?

Spiega nei termini più semplici che puoi. :)



4
en.wikipedia.org/wiki/Moore%27s_law merita una lettura - dal momento che stiamo parlando di due cose diverse. La legge di Moore non riguarda la velocità dell'orologio - riguarda i conteggi dei transistor
Journeyman Geek

9
Facciamo finta che fosse 30 anni fa e che le CPU funzionassero a 4,77 MHz. Perché potresti mettere 1000 computer con CPU a 4MHz nella stessa stanza anche se era impossibile ottenere una CPU a 4GHz?
user20574

3
@NathanLong ma è ancora molto più facile ottenere più spazio (per più computer) che ottenere un computer più veloce.
user20574

5
Analogia: un motore di un'auto può essere fatto solo con così tanti giri al minuto, ma puoi facilmente avvitarne due insieme.
OJFord,

Risposte:


143

Sommario

  • Economia. È più economico e più semplice progettare una CPU che ha più core di una velocità di clock superiore, perché:

  • Significativo aumento del consumo di energia. Il consumo di energia della CPU aumenta rapidamente quando si aumenta la velocità di clock: è possibile raddoppiare il numero di core che operano a una velocità inferiore nello spazio termico necessario per aumentare la velocità di clock del 25%. Quadrupla per il 50%.

  • Esistono altri modi per aumentare la velocità di elaborazione sequenziale e i produttori di CPU ne fanno buon uso.


Prenderò pesantemente spunto dalle eccellenti risposte a questa domanda su uno dei nostri siti SE gemelli. Quindi votali!


Limitazioni della velocità di clock

Esistono alcune limitazioni fisiche note alla velocità di clock:

  • Tempo di trasmissione

    Il tempo impiegato da un segnale elettrico per attraversare un circuito è limitato dalla velocità della luce. Questo è un limite rigido e non è noto alcun modo per aggirarlo 1 . A gigahertz-clocks ci stiamo avvicinando a questo limite.

    Tuttavia, non ci siamo ancora. 1 GHz significa un nanosecondo per tick di clock. In quel momento, la luce può viaggiare di 30 cm. A 10 GHz, la luce può viaggiare di 3 cm. Un singolo core della CPU è largo circa 5 mm, quindi incontreremo questi problemi da qualche parte oltre i 10 GHz. 2

  • Ritardo di commutazione

    Non è sufficiente considerare semplicemente il tempo impiegato da un segnale per spostarsi da un'estremità all'altra. Dobbiamo anche considerare il tempo impiegato da un gate logico all'interno della CPU per passare da uno stato all'altro! Aumentando la velocità di clock, questo può diventare un problema.

    Sfortunatamente, non sono sicuro dei dettagli e non posso fornire alcun numero.

    Apparentemente, pompare più energia al suo interno può accelerare la commutazione, ma ciò porta a problemi di consumo energetico e dissipazione del calore. Inoltre, più potenza significa che sono necessari condotti più grandi in grado di gestirlo senza danni.

  • Dissipazione del calore / consumo di energia

    Questo è quello grande. Citando la risposta di fuzzyhair2 :

    Processori recenti sono prodotti utilizzando la tecnologia CMOS. Ogni volta che c'è un ciclo di clock, l'energia viene dissipata. Pertanto, velocità del processore più elevate significano una maggiore dissipazione del calore.

    Ci sono alcune misurazioni adorabili in questo thread del forum AnandTech e hanno persino derivato una formula per il consumo di energia (che va di pari passo con il calore generato):

    Formula
    Ringraziamo Idontcare

    Possiamo visualizzarlo nel seguente grafico:

    Grafico
    Ringraziamo Idontcare

    Come puoi vedere, il consumo di energia (e il calore generato) aumenta molto rapidamente man mano che la velocità di clock aumenta dopo un certo punto. Ciò rende poco pratico aumentare senza limiti la velocità di clock.

    La ragione del rapido aumento del consumo di energia è probabilmente correlata al ritardo di commutazione - non è sufficiente aumentare semplicemente la potenza proporzionale alla frequenza di clock; la tensione deve anche essere aumentata per mantenere la stabilità a clock più alti. Questo potrebbe non essere completamente corretto; sentiti libero di segnalare le correzioni in un commento o di apportare una modifica a questa risposta.


Più core?

Quindi perché più core? Bene, non posso rispondere in modo definitivo. Dovresti chiedere alla gente di Intel e AMD. Ma puoi vedere sopra che, con le moderne CPU, a un certo punto diventa poco pratico aumentare la velocità di clock.

Sì, il multicore aumenta anche la potenza richiesta e la dissipazione del calore. Ma evita accuratamente i tempi di trasmissione e i problemi di ritardo di commutazione. E, come puoi vedere dal grafico, puoi facilmente raddoppiare il numero di core in una CPU moderna con lo stesso sovraccarico termico di un aumento del 25% della velocità di clock.

Alcune persone l'hanno fatto: l'attuale record mondiale di overclocking è solo di 9 GHz. Ma è una sfida ingegneristica significativa farlo mantenendo i consumi energetici entro limiti accettabili. I progettisti ad un certo punto hanno deciso che l'aggiunta di più core per eseguire più lavori in parallelo avrebbe fornito un incremento più efficace delle prestazioni nella maggior parte dei casi.

È qui che entra in gioco l'economia: è stato probabilmente più economico (meno tempo di progettazione, meno complicato da produrre) seguire il percorso multicore. Ed è facile da commercializzare: chi non ama il nuovissimo chip octa-core ? (Certo, sappiamo che il multicore è piuttosto inutile quando il software non lo utilizza ...)

V'è un aspetto negativo di multicore: avete bisogno di più spazio fisico per mettere il cuore in più. Tuttavia, le dimensioni dei processi della CPU si riducono costantemente di molto, quindi c'è molto spazio per mettere due copie di un progetto precedente: il vero compromesso non è in grado di creare singoli core più grandi e più complessi. Inoltre, aumentare la complessità del core è una cosa negativa dal punto di vista del design: più complessità = più errori / bug ed errori di produzione. Sembra che abbiamo trovato un mezzo felice con core efficienti che sono abbastanza semplici da non occupare troppo spazio.

Abbiamo già raggiunto un limite con il numero di core che possiamo adattare su un singolo die alle attuali dimensioni del processo. Potremmo raggiungere un limite a quanto lontano possiamo ridurre le cose presto. Allora, qual è il prossimo? Abbiamo bisogno di più? Purtroppo è difficile rispondere. Qualcuno qui è chiaroveggente?


Altri modi per migliorare le prestazioni

Quindi, non possiamo aumentare la velocità di clock. E più core hanno uno svantaggio aggiuntivo, vale a dire, aiutano solo quando il software in esecuzione su di essi può farne uso.

Quindi, cos'altro possiamo fare? In che modo le CPU moderne sono molto più veloci di quelle più vecchie alla stessa velocità di clock?

La velocità di clock è in realtà solo un'approssimazione molto approssimativa del funzionamento interno di una CPU. Non tutti i componenti di una CPU funzionano a quella velocità - alcuni potrebbero funzionare una volta ogni due tick, ecc.

Ciò che è più significativo è il numero di istruzioni che è possibile eseguire per unità di tempo. Questa è una misura molto migliore di quanto un singolo core della CPU può realizzare. Alcune istruzioni; alcuni prenderanno un ciclo di clock, altri ne prenderanno tre. La divisione, ad esempio, è notevolmente più lenta dell'aggiunta.

Quindi, potremmo migliorare le prestazioni di una CPU aumentando il numero di istruzioni che può eseguire al secondo. Come? Bene, potresti rendere un'istruzione più efficiente - forse la divisione ora richiede solo due cicli. Poi c'è il pipeline di istruzioni . Rompendo ogni istruzione in più fasi, è possibile eseguire le istruzioni "in parallelo" - ma ogni istruzione ha ancora un ordine sequenziale ben definito rispetto alle istruzioni prima e dopo di essa, quindi non richiede supporto software come multicore lo fa.

C'è un altro modo: istruzioni più specializzate. Abbiamo visto cose come SSE, che forniscono istruzioni per elaborare grandi quantità di dati contemporaneamente. Ci sono nuovi set di istruzioni costantemente introdotti con obiettivi simili. Questi, ancora una volta, richiedono il supporto software e aumentano la complessità dell'hardware, ma forniscono un buon incremento delle prestazioni. Di recente, c'è stato AES-NI, che fornisce crittografia e decrittografia AES con accelerazione hardware, molto più veloce di un gruppo di aritmetica implementata nel software.


1 Non senza approfondire la fisica quantistica teorica, comunque.

2 Potrebbe effettivamente essere inferiore, poiché la propagazione del campo elettrico non è così veloce come la velocità della luce nel vuoto. Inoltre, è solo per la distanza in linea retta - è probabile che ci sia almeno un percorso che è considerevolmente più lungo di una linea retta.


22
Inoltre, in molte applicazioni il collo di bottiglia non è il tempo di calcolo, ma il tempo di stallo per recuperare i dati dalla RAM (o, dio, vietalo, dal disco); quindi, un altro importante aumento di velocità deriva da cache del processore più grandi e più veloci.
Matteo Italia,

2
@MatteoItalia Yup. E ci sono anche miglioramenti nella previsione delle succursali, e probabilmente molto più che non conosco. Al di fuori del processore, abbiamo anche bus più veloci, memoria più veloce, dischi più veloci e protocolli associati, ecc.
Bob

2
Lei ha affermato che i problemi relativi al "limite rigido" della velocità della luce si verificheranno a "oltre 20 GHz". I tuoi calcoli non sono corretti; i segnali elettrici viaggiano a velocità inferiori alla velocità della luce, a seconda della geometria del filo.
Giulio Muscarello,

5
Per favore, non usare "esponenziale" quando ci sono parole del tutto più corrette per questa relazione (quadratica, cubica, ecc.) ...
Oliver Charlesworth

7
@OliCharlesworth Leggere la nota a piè di pagina. Questo è esattamente il motivo per cui è presente la nota a piè di pagina e per cui ho riferimenti ad essa ovunque exponential. Questo è un uso perfettamente valido della parola e sarebbe tangenziale al punto di questa risposta impantanarsi nei dettagli matematici. Se vuoi davvero provare a "correggerlo", non esitare a suggerire una modifica. Non dipenderà da me se verrà accettato o meno, a condizione che tu non cambi significativamente il significato.
Bob,

14

La fisica è fisica. Non possiamo continuare a impacchettare più transistor in spazi sempre più piccoli per sempre. Ad un certo punto diventa così piccolo che hai a che fare con strane cazzate quantistiche. Ad un certo punto non possiamo imballare il doppio dei transistor in un anno rispetto al passato (che è la legge di Moore).

Le velocità crude non significano nulla. Il mio vecchio Pentium M era circa la metà della velocità di clock di una CPU desktop contemporanea (e tuttavia per molti aspetti più veloce ) - e i sistemi moderni si avvicinano a malapena alla velocità dei sistemi 10 anni fa (e sono chiaramente più veloci). Fondamentalmente "solo" aumentare la velocità del clock in molti casi non dà reali vantaggi in termini di prestazioni. Può essere utile in alcune operazioni a singolo, ma è meglio spendere il budget di progettazione per una migliore efficienza in termini di tutto il resto.

Più core ti permettono di fare due o più cose contemporaneamente, quindi non devi aspettare che una cosa finisca per quella successiva. A breve termine, puoi semplicemente inserire due core esistenti nello stesso pacchetto (ad esempio con i Pentium D e il loro MCM, che era un progetto di transizione) e hai un sistema che è due volte più veloce. Ovviamente, la maggior parte delle implementazioni moderne condividono cose come un controller di memoria.

Puoi anche costruire più intelligente in diversi modi. ARM fa Big-Little - avendo 4 core 'deboli' a bassa potenza che lavorano insieme a 4 core più potenti in modo da avere il meglio di entrambi i mondi. Intel consente di ridurre l'acceleratore (per una migliore efficienza energetica) o di overcloccare core specifici (per prestazioni migliori a thread singolo). Ricordo che AMD fa qualcosa con i moduli.

Puoi anche spostare cose come i controller di memoria (quindi hai una latenza inferiore) e le funzioni relative all'IO (la CPU moderna non ha un ponte nord) così come i video (che è più importante con i laptop e il design AIW). Ha più senso fare queste cose che "solo" continuare ad aumentare la velocità.

Ad un certo punto i core "più" potrebbero non funzionare, sebbene le GPU abbiano centinaia di core.

I multicore come tali consentono ai computer di lavorare in modo più intelligente in tutti questi modi.


1
Va notato che i core GPU sono progettati per uno scopo molto specifico, al contrario dei core della CPU che sono più una cosa di uso generale. Inoltre, va notato che le schede delle schede video sono significativamente più grandi di quelle della CPU (il che significa che anche se i core non utilizzano tutta la stanza sulla scheda, hanno ancora MOLTO più spazio per dissipare il calore).
user2366842

3
vero, ma questo è un esempio in cui si ingrandiscono i core di una quantità estrema. Probabilmente rivisiterò questa risposta in mattinata
Journeyman Geek

"puoi semplicemente inserire due core esistenti nello stesso pacchetto". Ma come lo raggiungono senza usare più spazio per i core extra Come ?! Magia? Unicorns? Cuccioli? (Secondo il tuo avatar, sospetto che sia quest'ultimo)
Quel ragazzo brasiliano il


6
wierd quantum crap+ 1 solo per quello!
Dave,

9

Semplice risposta

La risposta più semplice alla domanda

Perché "aggiungere più core" non deve affrontare le stesse limitazioni fisiche di "rendere la CPU più veloce"?

si trova effettivamente all'interno di un'altra parte della tua domanda:

Mi aspetto che la conclusione sia "pertanto, dovremo avere computer più grandi o eseguire i nostri programmi su più computer".

In sostanza, più core è come avere più "computer" sullo stesso dispositivo.

Risposta complessa

Un "core" è la parte del computer che elabora effettivamente le istruzioni (aggiungendo, moltiplicando "e" ing, ecc.). Un core può eseguire una sola istruzione alla volta. Se vuoi che il tuo computer sia "più potente" ci sono due cose fondamentali che puoi fare:

  1. Aumenta la produttività (aumenta la frequenza di clock, diminuisce la dimensione fisica, ecc.)
  2. Usa più core nello stesso computer

Le limitazioni fisiche al n. 1 sono principalmente la necessità di scaricare calore causato dall'elaborazione e dalla velocità di un elettrone nel circuito. Una volta suddivisi alcuni di questi transistor in un nucleo separato, alleviate il problema del calore in larga misura.

C'è una limitazione importante al n. 2: devi essere in grado di suddividere il problema in più problemi indipendenti e quindi combinare la risposta. Su un personal computer moderno, questo non è davvero un problema, poiché ci sono un sacco di problemi indipendenti tutti in lizza per il tempo di calcolo con i core. Ma quando si verificano intensi problemi computazionali, più core aiutano davvero solo se il problema è suscettibile di concorrenza.


"più core è come avere più" computer "sullo stesso dispositivo." Giusto, ma la mia confusione era, come li inserisci tutti lì? Ho pensato che "non possiamo andare più veloci" era un sintomo di "non possiamo ridurre le cose molto di più".
Nathan Long,

Più core occupano più spazio, i chip stanno diventando più grandi. L'onere è stato spostato dalla CPU all'ingegnere del software ... per correre effettivamente più veloce su uno di questi giganteschi CPU multi-core, il software deve essere scritto in modo tale che tu possa tagliare il suo lavoro a metà e fare entrambe le metà in modo indipendente.
James,

1
Una risposta breve è che il consumo di energia è proporzionale al cubo della velocità di clock. Con segnali che percorrono lunghe distanze, l'illusione del singolo thread diventa più difficile da mantenere. La risposta dettagliata: amazon.com/…
Rob,

6

Perché "aggiungere più core" non deve affrontare le stesse limitazioni fisiche di "rendere la CPU più veloce"?

Devono affrontare gli stessi limiti fisici, ma il passaggio al design multicore ci dà un po 'di respiro prima di colpirli. Allo stesso tempo sorgono altri problemi causati da tali limitazioni, ma sono più facili da superare.

Fatto 1: il consumo di energia e il calore emesso crescono più velocemente della potenza di calcolo. Spingendo una CPU da 1 GHz a 2 GHZ si spinge il consumo energetico da 20 W a 80 W, lo stesso con il calore dissipato. (Ho appena inventato questi numeri, ma è abbastanza come funziona)

Fatto 2: l' acquisto di una seconda CPU e l'esecuzione di entrambe a 1 GHz raddoppierebbe la tua potenza di calcolo. Due CPU in esecuzione a 1 GHz potrebbero elaborare la stessa quantità di dati di una CPU da 2 GHz, ma ciascuna consumerebbe solo 20 W di energia, per un totale di 40 W.

Profitto: raddoppiare il numero di CPU anziché la frequenza di clock ci fa risparmiare un po 'di energia e non siamo così vicini alla "barriera di frequenza" come prima.

Problema: devi dividere il lavoro tra due CPU e combinare i risultati in un secondo momento.

Se riesci a risolvere questo problema in tempi accettabili e usando meno energia di quella che hai appena risparmiato, allora hai appena tratto profitto dall'utilizzo di più CPU.

Ora devi solo unire due CPU in una CPU dual-core e sei a casa. Questo è utile perché i core possono condividere alcune parti della CPU, ad esempio cache ( risposta correlata ).


Continuiamo a colpire le limitazioni fisiche in 1000 modi diversi, dimensioni del dado (per multi-core che porta a un processo di fabbricazione più piccolo), dimensioni del mobo (per multi-cpu), amplificatori disegnati attraverso le tracce (entrambi). non è come se potessi mettere 2 cpus su un m-atx o 4 e la memoria su una scheda atx e quei disegni richiedono DECADES per cambiare. Sono d'accordo con il resto.
Rostol,

@Rostol È un buon punto, ho modificato la risposta.
gronostaj,

5

Per farla breve: accelerare i singoli core ha raggiunto i suoi limiti, quindi continuiamo a ridurli e ad aggiungerne altri, fino a quando questo non raggiunge i suoi limiti o possiamo cambiare in materiali migliori (o raggiungere una svolta fondamentale che rovescia la tecnologia consolidata, qualcosa di simile calcolo quantico di dimensioni reali, realmente funzionante).

Penso che questo problema sia multidimensionale e ci vorrà un po 'di scrittura per dipingere l'immagine più completa:

  1. Limitazioni fisiche (imposte dalla fisica reale): come la velocità della luce, la meccanica quantistica e tutto il resto.
  2. Problemi di produzione: come fabbrichiamo strutture sempre più piccole con la precisione necessaria? Problemi relativi alle materie prime, materiali utilizzati per costruire circuiti usw., durata.
  3. Problemi architettonici: calore, inferenza, consumo di energia ecc.
  4. Problemi economici: qual è il modo più economico per ottenere più prestazioni all'utente?
  5. Usecase e percezione dell'utente delle prestazioni.

Potrebbero essercene molte altre. Una CPU multiuso sta cercando di trovare una soluzione per riunire tutti questi fattori (e altro) in un unico chip di produzione di massa che si adatta al 93% dei soggetti sul mercato. Come vedi, l'ultimo punto è il più cruciale, la percezione del cliente, che deriva direttamente dal modo in cui il cliente utilizza la CPU.

Chiediti qual è la tua solita applicazione? Forse: 25 schede di Firefox, ciascuna delle quali riproduce alcuni annunci in background, mentre ascolti la musica, il tutto mentre aspettavi il tuo lavoro di costruzione che hai iniziato 2 ore fa per finire. C'è molto lavoro da fare e vuoi comunque un'esperienza fluida. Ma la tua CPU può gestire UNA operazione alla volta! Per singola cosa. Quindi quello che fai è dividere le cose e fare una lunga fila e ognuno ottiene la propria parte e tutti sono felici. Tranne te perché tutte le cose diventano ritardate e per nulla lisce.

Quindi acceleri la tua CPU, per fare più operazioni nello stesso lasso di tempo. Ma come hai detto: calore e consumo energetico. Ed è qui che arriviamo alla parte della materia prima. Il silicio diventa più conduttivo quando diventa più caldo, il che significa che più corrente scorre attraverso il materiale mentre lo riscaldi. I transistor hanno un consumo di energia maggiore quando li cambi più velocemente. Anche le alte frequenze peggiorano la diafonia tra fili corti. Come vedete, l'approccio di accelerazione delle cose porterà a un "tracollo". Finché non abbiamo materie prime migliori del silicio o transistor molto migliori, siamo bloccati dove siamo con velocità single core.

Questo ci riporta al punto di partenza. Fare cose, in parallelo. Aggiungiamo un altro core. Ora possiamo effettivamente fare due cose contemporaneamente. Quindi raffreddiamo un po 'le cose e scriviamo solo un software che può dividere il suo lavoro su due core, meno potenti ma più funzionali. Questo approccio presenta due problemi principali (oltre al fatto che il mondo del software ha bisogno di tempo per adattarsi ad esso): 1. Allargare il chip o rimpicciolire il singolo core. 2. Alcune attività semplicemente non possono essere suddivise in due parti eseguite contemporaneamente. Continuare ad aggiungere core fino a quando è possibile ridurli o ingrandire il chip e tenere a bada il problema del calore. Oh e non dimentichiamo il cliente. Se cambiamo i nostri casi d'uso, le industrie devono adattarsi. Scopri tutte le splendide "nuove" novità del settore mobile.

Sì, questa strategia raggiungerà i suoi limiti! E Intel lo sa, ecco perché dicono che il futuro è altrove. Ma continueranno a farlo finché sarà economico, efficace e fattibile.

Ultimo ma non meno importante: la fisica. La meccanica quantistica limiterà il restringimento dei trucioli. La velocità della luce non è ancora un limite, poiché gli elettroni non possono viaggiare alla velocità della luce nel silicio, in realtà è molto più lento di così. Inoltre, è la velocità dell'impulso che mette il limite massimo sulla velocità offerta da un materiale. Proprio come il suono viaggia più velocemente nell'acqua che nell'aria, gli impulsi elettrici viaggiano più velocemente nel grafene che nel silicio. Questo riconduce alle materie prime. Il grafene è eccezionale per quanto riguarda le sue proprietà elettriche. Sarebbe un materiale molto migliore per la costruzione di CPU, sfortunatamente è molto difficile da produrre in grandi quantità.


2

Dì (come esempio irrealistico, ma dovresti comunque capire il punto) hai una CPU che funziona a 100F. Come funziona di solito il multicore è prendendo la frequenza di clock che la CPU sta funzionando a 100F e abbassandola, riducendo così la velocità. Poiché non funziona più come caldo, possono lanciare un secondo, un terzo o addirittura un quarto proprio accanto ad esso senza influire in modo significativo sulla temperatura complessiva della CPU e ottenere i vantaggi dal multicore. Questo ovviamente comporta un certo sovraccarico, poiché i core devono ancora essere controllati da un punto, da un nucleo. Più core aggiungi, più sovraccarico c'è. Per quanto riguarda i singoli core, più aumenti la velocità su di essi, più calore generano. Questo ovviamente ha dei limiti fisici (cioè dopo un certo punto, inizia a diventare dannoso per le prestazioni,

Col passare del tempo, hanno trovato il modo di ridurre le dimensioni fisiche della CPU, motivo per cui non abbiamo ancora incontrato il requisito di aver bisogno di più spazio, tuttavia, ad esempio, 16 CPU core non esistono ( il tempo di scrittura) al di fuori delle apparecchiature di livello server a causa dei limiti di dimensione fisica, poiché le CPU di livello server sono significativamente più grandi fisicamente rispetto al livello consumer standard.


2

CPU = Motore dell'auto: è più semplice realizzare un'auto più potente con 16 valvole, ovvero una Lamborghini, rispetto a un'auto ad alto regime che avrebbe una valvola / cilindro gigante a 100000 giri / min.

Le ragioni sono fisiche e chimiche, il silicio deve essere sostituito con un carburante per missili computazionale per modificare l'equilibrio tra numero di core e velocità del core.


2

Direi che la restrizione principale sui limiti di potenza computazionale è principalmente correlata al limite di quanto velocemente possiamo spostare l'elettrone attraverso un circuito ( velocità della deriva dell'elettrone della luce ). Ci sono molti altri fattori come hai menzionato.

L'aggiunta di core aggiuntivi non renderebbe il processore più veloce, sebbene consentirebbe di elaborarlo di più nello stesso lasso di tempo.

La legge di Moore è una lettura molto interessante e istruttiva. Questa citazione in particolare è rilevante qui:

Si potrebbe anche limitare le prestazioni teoriche di un "laptop finale" piuttosto pratico con una massa di un chilogrammo e un volume di un litro. Questo viene fatto considerando la velocità della luce, la scala quantistica, la costante gravitazionale e la costante di Boltzmann, dando una prestazione di 5.4258 ⋅ 10 50 operazioni logiche al secondo su circa 10 31 bit.


2
Per inciso, gli elettroni in realtà si muovono molto lentamente ("velocità di deriva"), nell'ordine dei millimetri al secondo IIRC. Ti riferisci di più alla velocità con cui il campo elettrico si propaga.
Bob

2
Sapevo che non avrei dovuto osare comportarmi come se capissi la fisica nel minimo rispetto. :) Grazie per avermi corretto / informato su questo però.
jredd,

Inoltre, le velocità di clock effettive in cui la velocità di propagazione avrà un effetto significativo sono di circa 10+ GHz. Esistono altri motivi per cui i processori moderni preferiscono più core rispetto a clock più alti.
Bob,

1

La storia è ancora più breve:

Non abbiamo davvero bisogno di CPU più veloci. Al di fuori di alcuni usi altamente specializzati * la CPU non è stata il collo di bottiglia per anni - tutti i bit periferici come memoria, memoria e rete di solito fanno attendere alla CPU milioni di cicli di clock durante i quali può fare altre cose. Un secondo core può fare più "altre cose", producendo così una percezione di prestazioni più elevate per l'utente.

Molti dispositivi mobili, laptop ecc. Underclockeranno la CPU per una migliore durata della batteria e temperature più fredde. Non c'è molto incentivo a sviluppare un core ARM da 3,5 GHz se il tuo cliente principale lo esegue a 1,3 GHz.

  • quegli usi specializzati non acquistano abbastanza per giustificare lo sviluppo di un core a 5 GHz. Inoltre non si preoccupano del calore o della potenza: acquista il più veloce disponibile, overcloccalo e imbullonati in un dissipatore raffreddato ad acqua delle dimensioni di un tostapane.

1
Non è "percezione", ma "migliore latenza". Penso che questo sia uno dei principali problemi che abbiamo; una forte produttività a thread singolo a tutti i costi mentalità. I sistemi operativi di consumo non sono ancora orientati in tempo reale, né fondamentalmente orientati alla concorrenza o al parallelismo.
Rob,

@peter Hai fatto un'ottima osservazione e grazie per averlo spiegato. È qualcosa che devo ricordare come programmatore. :) Tuttavia, è ancora un po 'un problema secondario ai fini di questa domanda. La mia domanda era sul perché non possiamo ottenere velocità di clock più elevate; la tua risposta è sul perché al momento non è necessario.
Nathan Long,

1
@NathanLong "impossibile" e "non necessario" sono collegati. Non è possibile ottenere processori più veloci perché nessuno è disposto a investire il miliardo o cinque necessari per svilupparlo (5 GHz probabilmente sta spingendo comunque i limiti fisici). Nessuno è disposto a investire perché non esiste un mercato realistico quando le velocità complessive del processore sono in calo - alcuni desktop di fabbricazione attuale sono nella classe 1,5 GHz (in cima alla linea 10 anni fa) perché è più economico, più fresco e abbastanza veloce per quel mercato segmento.
Pietro,

1

Risposta breve e semplice:

Perché non passare da 1 camion che trasporta merci a 100 camion che trasporta 100 volte di più, affrontando le stesse limitazioni fisiche che vanno da 1 camion che guida a 100 miglia all'ora a 1 camion che guida a 10.000 miglia all'ora?

Rispondi a questa domanda e anche alla tua domanda verrà data risposta. Il concetto è più o meno lo stesso.


1

Penso che un altro fattore sia la temperatura. Se si aumenta la frequenza di clock, la temperatura interna aumenta. Se si aggiungono più core, anche se il consumo di energia aumenta, questo viene distribuito sui core, quindi la temperatura rimane invariata (come se si aggiungessero due liquidi caldi, alla stessa temperatura, la temperatura rimanga invariata) ).

Un altro motivo è che l'aumento della frequenza di clock tende ad aumentare il consumo di energia di un quadrato del fattore in cui si aumenta la frequenza (a seconda di quali altre barriere si sta colpendo in un determinato punto). Quindi, l'aumento della frequenza di clock aumenta il consumo di energia di un quadrato, mentre l'aggiunta di più core lo aumenta solo in modo lineare.


0

La risposta al perché "aggiungere più core" non deve affrontare gli stessi limiti fisici della domanda "rendere la CPU più veloce" è che un sistema multicore deve affrontare gli stessi identici limiti di una CPU single core. Abbiamo raggiunto un punto in cui non abbiamo davvero un'opzione per rendere più veloce un sistema single core, quindi l'abbiamo fatto in modo da poter fare più cose contemporaneamente. Le sfide relative alle dimensioni e al coordinamento sono attualmente più facili da risolvere che andare più velocemente. Il rovescio della medaglia è che se un'attività non può essere suddivisa in pezzi, potremmo non andare molto più velocemente di un sistema a core singolo.


0

Non è possibile rendere più veloce una CPU semplicemente riempiendo più porte. Alla fine, le istruzioni devono essere eseguite e ogni istruzione richiede diverse operazioni di "commutazione". Esistono limiti fisici fondamentali (meccanica quantistica - il principio di incertezza) che rendono molto difficile aumentare la "velocità di clock" di una CPU oltre la velocità degli attuali sistemi di fascia alta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.