Se la velocità della carica elettrica non è cambiata, in che modo i computer sono diventati più veloci?


48

Tutti sanno che la velocità di calcolo è aumentata drasticamente dalla loro invenzione e sembra destinata a continuare. Ma una cosa mi sta sconcertando: se oggi facessi scorrere una corrente elettrica attraverso un materiale, viaggerebbe alla stessa velocità di se lo facessi con lo stesso materiale 50 anni fa.

Con questo in mente, come sono diventati i computer più veloci? Quale principale area di progettazione del processore ha dato questi incredibili aumenti di velocità?

Ho pensato che forse potrebbe essere uno o più dei seguenti:

  • Processori più piccoli (meno distanza da percorrere per la corrente, ma mi sembra solo che qui si possano ottenere guadagni marginali).
  • Materiali migliori

4
Questa è una bella domanda. Naturalmente, il materiale in sé non è così importante: negli ultimi 100 anni le auto sono diventate più veloci, ma il gas è sempre lo stesso gas (più o meno), solo il motore è diventato più efficiente. La risposta iniziale può essere trovata qui , ma spero che seguirà una risposta più dettagliata.
Ran G.

Le dimensioni sono un grosso problema qui. Tuttavia, abbiamo raggiunto (o siamo vicini) una barriera fisica nella progettazione dei chip. (Non sono un esperto qui, altri ne sapranno di più). Naturalmente, la dimensione del processore non è l'unico parametro.
A.Schulz,

La frequenza di tatto della CPU è limitata dalla velocità degli elettroni nei materiali utilizzati, ma altri fattori lo hanno dominato.
Raffaello

Perché non erano in modo ottimale veloce in primo luogo, e ancora non lo sono. La velocità della luce non è il passo che determina la velocità.
user207421

1
Spina senza vergogna: superuser.com/questions/543702/…
bwDraco

Risposte:


54

se oggi facessi scorrere una corrente elettrica attraverso un materiale, viaggerebbe alla stessa velocità come se lo avessi fatto con lo stesso materiale 50 anni fa.

Con questo in mente, come sono diventati i computer più veloci? Quale principale area di progettazione del processore ha dato questi incredibili aumenti di velocità?

Ottieni conclusioni errate perché la tua ipotesi iniziale è errata: pensi che la velocità della CPU sia equivalente alla velocità degli elettroni nella CPU.

In effetti, la CPU è una logica digitale sincrona. Il limite per la sua velocità è che l'uscita di un'equazione logica deve essere stabile entro un periodo di tempo. Con la logica implementata con i transistor, il limite è principalmente legato al tempo necessario per commutare i transistor. Riducendo le dimensioni del canale, siamo in grado di farli passare più velocemente. Questo è il motivo principale del miglioramento della frequenza massima delle CPU per 50 anni. Oggi modifichiamo anche la forma dei transistor per aumentarne la velocità di commutazione, ma, per quanto ne so , solo oggi Intel, Global Foundries e TSMC sono in grado di creare FinFET.

Tuttavia, ci sono altri modi per migliorare la massima velocità di clock di una CPU: se dividi l'equazione logica in più di una più piccola, puoi rendere ogni passo più veloce e avere una velocità di clock più alta. Sono necessari anche più periodi di clock per eseguire la stessa azione, ma, utilizzando le tecniche di pipelining , è possibile fare in modo che la frequenza delle istruzioni al secondo segua la frequenza di clock.

Oggi la velocità degli elettroni è diventata un limite: a 10 GHz, un segnale elettrico non può essere propagato su più di 3 cm. Questa è all'incirca la dimensione degli attuali processori. Per evitare questo problema, potresti avere diversi domini sincroni indipendenti nel tuo chip, riducendo i vincoli sulla propagazione del segnale. Ma questo è solo un fattore limitante, tra la velocità di commutazione dei transistor, la dissipazione del calore, EMC e probabilmente altri (ma non sono nel settore della fonderia di silicio).


Questa è una buona informazione Non avevo mai considerato che esistesse un limite massimo alla velocità di clock.
nick

3
Quel 3 cm a 10 GHz è ottimista. Gli elettroni nei fili tendono ad essere un po 'più lenti dei fotoni nel vuoto.
8

6
@ 8bittree: la velocità degli elettroni non è rilevante, vero? Ciò che conta è la velocità del segnale, che è molto più veloce.
Harry Johnston,

1
@HarryJohnston Hmm ... sembra che tu abbia ragione secondo Wikipedia . Ma i segnali stessi sono ancora più lenti della luce. E 3
cm a

1
Oltre ai transistor più piccoli che sono più veloci, puoi aggiungere altro su un chip. C'è un compromesso tempo / spazio per i circuiti, quindi più transistor significa circuiti più veloci. vale a dire. puoi fare un sommatore a 32 bit con solo una dozzina di transistor, ma per calcolare una singola aggiunta sarebbero necessari molti tick di clock. Le ultime CPU Intel sono in grado di farlo in un solo clock, che immagino che richiedano 100.000 transistor.
BlueRaja - Danny Pflughoeft,

15

Esistono molte variabili complesse che influiscono sulla velocità complessiva della CPU, ma una principale è la velocità di clock che è aumentata a metà degli anni 2000 e quindi è stata pianificata a causa di limitazioni fisiche. Anche il consumo di energia per chip è aumentato in quel periodo per compensare perdite / perdite di chip. I chip della CPU sono diventati troppo caldi e la tecnologia di raffreddamento è diventata più importante e non è stato possibile applicare più potenza (senza fonderli letteralmente!).

Extremetech.com fornisce un bel sondaggio che sottolinea che la legge di Moore è pensata per essere principalmente alimentata dal ridimensionamento di Dennard . Quest'ultimo è crollato a metà degli anni 2000. Ci sono molti altri fattori di progettazione / miglioramenti coinvolti nella "velocità" del chip (in cui la "velocità" viene misurata come tempo di esecuzione del codice complessivo e non semplicemente come la velocità di clock) che tende a mascherare il punto di flesso nelle capacità hardware come cache, parallelismo / multicore della CPU , previsione del ramo, ecc., che sono stati aggiunti con larghezze di gate inferiori (e quindi molto più gate per chip per funzionalità aggiuntiva). Le larghezze del cancello hanno inoltre teso a smettere di diminuire o almeno a diminuire meno rapidamente ogni generazione.

Perché queste tendenze limitanti non sono molto conosciute? Alcune delle entità che hanno la maggior conoscenza di queste tendenze "hanno più da perdere" e in realtà hanno meno probabilità di pubblicizzarle. Ad esempio, Intel, del valore di miliardi di dollari, probabilmente non pubblicherà dati interni proprietari che indicano limiti o diminuzioni delle prestazioni future.

Ci sono nuove possibilità all'orizzonte che potrebbero portare a tendenze completamente nuove (ma alcune implicano tecnologie / tecniche di produzione quasi completamente diverse) tra cui chip fotonici, chip 3-D in cui i chip sono disposti in più strati, calcolo quantistico, nanotecnologie come i nanotubi transistor, ecc.



Una cosa che desidero da tempo sarebbe lo sviluppo del supporto del sistema operativo e del linguaggio per il concetto di gruppi di core, con ogni gruppo che ha un sistema di memoria uniforme e tutti i core hanno anche accesso a un sistema di memoria comune. Dovrebbe essere possibile che un pezzo di codice dica "Voglio generare un thread che vede esattamente la stessa memoria di me in ogni momento" e fare in modo che il sistema assicuri che tutti i thread che dovrebbero vedere la stessa memoria vengano eseguiti sul stessi core. Alcuni algoritmi possono essere resi molto più efficienti quando sono disponibili tali garanzie, ma su molti sistemi l'unico ...
supercat

... il modo per raggiungere questo obiettivo è fare in modo che un'applicazione scelga un core della CPU e non consenta l'esecuzione di thread su nessun altro, un approccio davvero orribile.
Supercat,

2
La velocità di clock non è aumentata in modo significativo negli ultimi 10 anni. Aggiunta di core, esecuzione di set di istruzioni in una singola istruzione, ecc. Riduzione dei colli di bottiglia altrove, ad es. la larghezza di banda della memoria ha contribuito notevolmente alla "velocità" moderna della CPU.
JamesRyan,

5

Delega a processori aggiuntivi

Un'altra considerazione (oltre alle altre grandi risposte) è la delega di compiti ad altri processori. Nei primi giorni dell'informatica, c'era solo un processore. Per la grafica, il calcolo è stato condiviso con altri calcoli nella stessa CPU. Ora abbiamo processori separati per l'elaborazione grafica.

Core multipli

Molti dei moderni processori hanno più core, nello stesso pezzo di silicio. Poiché condividono lo stesso pezzo di silicio, non sono influenzati tanto dal rallentamento del passaggio del chip a un altro core / processore. Esempio: Processori grafici.

Espansione di memoria e indirizzo

I primi microprocessori a 8 bit avevano un intervallo di indirizzamento inferiore rispetto ai processori a 32 e 64 bit di oggi. I processori moderni hanno un intervallo di memoria maggiore, il che significa che è possibile eseguire più calcoli in memoria anziché dover accedere alla memoria esterna.

Questo vale anche per la memoria su chip. Il più ampio spazio di indirizzamento consente memorie più grandi più vicine al nucleo centrale, lasciando comunque un ampio spazio di indirizzamento all'esterno del silicio.

Pipeline e cache

Con la memoria che diventa più economica, i computer moderni stanno implementando pipeline di dati e istruzioni più sofisticate, nonché cache di dati e istruzioni. Ciò accelera l'esecuzione riducendo la necessità di recuperare dalla memoria più lenta (all'esterno del silicio) alla cache interna. Alcuni processori hanno la capacità di contenere forloop nelle loro cache di istruzioni.

Sommario

I computer di oggi sono molto più veloci, non solo a causa dei progressi nelle tecnologie a transistor e silicio, ma anche a causa della delega di compiti ad altri processori / core. La memoria che diventa più veloce ed economica consente ai processori di avere molta memoria vicino alla CPU. Gli intervalli di indirizzamento consentono più memoria, il che significa meno recuperi su memoria esterna. Dimensioni di registro più grandi consentono di recuperare più dati per ciclo (4 byte con un sistema a 32 bit, 1 byte con un sistema a 8 bit). I core multipli consentono operazioni in parallelo anziché serializzarle.


4

Quasi tutti i progressi nella velocità del computer provengono da una di queste aree:

Transistor più piccoli

Due cose derivano dalla riduzione dei transistor:

  1. Sono fisicamente più vicini, quindi il tempo impiegato da un segnale elettrico per spostarsi dalla sorgente alla destinazione è minore. Quindi, sebbene i segnali elettrici non viaggino più velocemente di 50 anni fa, ora viaggiano spesso su distanze più brevi .
  2. È possibile includere più transistor su un chip, il che significa che è possibile eseguire più "lavori" contemporaneamente. Più transistor vengono aggiunti, più difficile è trovare lavoro utile da fare per loro, ma vengono utilizzati molti trucchi intelligenti (vedi sotto).

Più "lavoro utile" per istruzione

Ad esempio, ad alcuni processori mancano le istruzioni per moltiplicare o dividere numeri interi; invece questa attività deve essere eseguita con routine software lente. L'aggiunta di istruzioni di moltiplicazione e divisione accelera notevolmente le cose. L'aggiunta di istruzioni in virgola mobile può velocizzare il software che richiede numeri in virgola mobile.

Un modo importante di fare più "lavoro utile" per istruzione è aumentare le dimensioni della parola . Le CPU in grado di eseguire operazioni su numeri a 32 bit richiedono spesso molte meno istruzioni per eseguire la stessa attività delle CPU a 16 o 8 bit.

Alcuni processori supportano istruzioni che eseguono più operazioni contemporaneamente, in particolare istruzioni che eseguono la stessa operazione su più elementi di dati ( SIMD ).

Più istruzioni per ciclo

Il "ciclo di clock" è il modo in cui il processore passa dallo stato corrente a quello successivo. In un certo senso è la più piccola unità di lavoro che il processore può fare alla volta. Tuttavia, il numero di cicli di clock richiesti da una particolare istruzione dipende dal design del processore.

Con l'avvento dei processori pipelined , è diventato possibile che le istruzioni separate "si sovrappongano", vale a dire che uno inizierebbe prima del termine del precedente. Tuttavia, alcune istruzioni possono invalidare l'istruzione successiva, che non sarà nota fino a quando l'istruzione successiva non sarà stata parzialmente eseguita, quindi le cose potrebbero complicarsi. (I processori con pipeline includono la logica per assicurarsi che tutto funzioni correttamente, ma le caratteristiche delle prestazioni sono più complesse.)

I processori Superscalar portano questo al livello successivo, consentendo letteralmente l'esecuzione di due istruzioni contemporaneamente, e l'esecuzione fuori servizio fa un ulteriore passo avanti, consentendo l'esecuzione di istruzioni fuori servizio. Queste funzioni richiedono l'analisi del flusso di istruzioni, per capire quali istruzioni non si scontrano tra loro.

Sebbene ci siano altri trucchi del genere (ad es. Previsione del ramo , esecuzione speculativa ), l'aspetto più importante è il quadro generale:

  • ogni istruzione richiede un certo numero di cicli di clock per essere completata (non necessariamente costante)
  • ma più istruzioni possono essere in corso contemporaneamente
  • quindi esiste una " istruzione per ciclo " misurabile che è> 1 per i processori di fascia alta
  • ma dipende fortemente dal carico di lavoro

Più cicli al secondo

In altre parole, maggiore velocità di clock . L'aumento della velocità di clock non solo aumenta il calore generato, ma richiede anche un design del chip molto più disciplinato, poiché esiste un limite di tempo inferiore per la stabilizzazione del circuito. Abbiamo ottenuto molti chilometri da questo fino agli anni 2000, quando abbiamo raggiunto alcuni limiti pratici.

Dati nel posto giusto al momento giusto

Sebbene i componenti all'interno della CPU si stiano avvicinando sempre di più a causa della riduzione dei transistor, la CPU e la RAM sono comunque a una buona distanza di 5-10 cm. Se un'istruzione ha bisogno di qualcosa dalla RAM, quell'istruzione non richiederà 5 o 6 cicli per completarsi, ci vorranno circa 200. Questo è il problema del collo di bottiglia di von Neumann .

La nostra arma principale contro questo è la cache . È più probabile che si acceda nuovamente ai dati a cui si accede di recente, quindi vengono conservati in una memoria speciale (chiamata cache) che si trova all'interno del chip della CPU, rendendo molto più veloce l'accesso.

Tuttavia, altre tecniche (come il pipelining e la previsione dei rami ) aiutano consentendo al processore di fare un lavoro utile in attesa dell'arrivo dei dati e anche prevedere quali dati potrebbero essere presto necessari.

Processori multipli e / o specializzati

Scrivere software per un singolo processore è molto più semplice che per più processori. Tuttavia, a volte i vantaggi in termini di prestazioni / costi / consumo di energia lo rendono utile.

Inoltre, alcuni processori sono particolarmente adatti a determinati compiti. Ad esempio, le GPU sono progettate specificamente per i calcoli necessari per il rendering di effetti e grafica 2D e 3D.

I processori multi-core sono essenzialmente processori multipli su un singolo chip.


3

Quando i computer possono eseguire più calcoli per unità di tempo, vengono considerati più veloci. Ogni calcolo non può essere eseguito più velocemente di prima, ma ci sono più calcoli in corso. Una buona analogia sarebbe il numero di passi che un corridore compie. Se un corridore si comportasse secondo la legge di Moore, il corridore sarebbe in grado di fare il doppio dei passi ogni due anni. In sostanza, il corridore avrebbe coperto il doppio della distanza nello stesso lasso di tempo che ha fatto il corridore due anni fa. La distanza divisa per il tempo è uguale alla velocità. 2 X Distance equivalgono a 2 X Speed.


3

La potenza di elaborazione di un computer / CPU è in realtà la velocità con cui viaggia l'elettricità ma piuttosto la velocità con cui può essere accesa e spenta. Più velocemente puoi passare dal flusso corrente a quello non scorrevole, più informazioni puoi elaborare in una CPU o trasmettere lungo la linea.


2

Per i processori tipici utilizzati nei PC, la dissipazione del calore è stata un fattore limitante per oltre un decennio, dove i processori raffreddati ad aria nei PC sono stati limitati a circa 4 ghz. Il raffreddamento ad acqua lo porta a circa 5 ghz e il raffreddamento ad azoto è stato usato per spingere i clock a circa 6 ghz a 6,5 ​​ghz.

La frequenza di clock è sostanzialmente una funzione della tensione rispetto alla dimensione della logica del circuito (quanto tempo impiega un interruttore per cambiare stato). Maggiore è la tensione o minore è la logica del circuito, maggiore è la velocità, ma ciò presenta un problema di dissipazione del calore poiché le densità aumentano in genere con la riduzione della dimensione della logica del circuito. Con l'alta densità, non c'è molto spazio per il materiale termoconduttore per dissipare il calore. La riduzione della densità aumenta i costi e aumenta anche i ritardi di propagazione dovuti a lunghe lunghezze dei circuiti.

La CPU non è diventata molto più veloce negli ultimi anni, l'attuale Intel i7 4790K (4,0 ghz, 4,4 ghz turbo) non è molto più veloce della seconda generazione di Intel i7 2700K (3,5 ghz, 3,9 ghz turbo), altro rispetto alla frequenza di clock più veloce (circa il 14,3% più veloce). D'altra parte, poiché la grafica 3d può sfruttare le operazioni parallele, le schede video hanno migliorato le prestazioni di un fattore circa 3 negli ultimi 4 o 5 anni, alcune hanno l'equivalente di oltre 3000 sotto-core.


2

Sebbene le risposte già fornite siano buone, sembrano tutte molto complicate!

La rapida risposta "TLDR" è "numero di porte logiche" e "quanto velocemente possono attivarsi quelle porte logiche". Pensa alle porte logiche come 1 e 0. Questa è solo una valvola a transistor / vaccum / qualunque cosa accenda o spenga. 1 è acceso 0 è spento.

L'elettricità non si muove più velocemente o più lentamente, ma puoi aggiungere più e zero sul tuo chip perché quelli e gli stessi sono più piccoli. E puoi farli capovolgere più velocemente nel tempo. Ciò rende una risposta un po 'più semplice?


2

I due principali fattori di gran lunga sono il fatto che i transistor si sono ridotti in misura ridicola e quindi ora abbiamo smartphone con oltre un miliardo di transistor e il fatto che il passaggio da un transistor a uno stato è diventato molto più veloce. La commutazione più veloce si traduce direttamente in una maggiore velocità. Il numero più elevato di transistor aumenta la velocità indirettamente perché consente di menzionare molti altri miglioramenti: abbiamo cache perché abbiamo più transistor. Abbiamo registri sempre più grandi perché abbiamo più transistor. Abbiamo istruzioni vettoriali perché abbiamo più transistor. Abbiamo processori dual, quad core o dieci core perché abbiamo più transistor.

In misura molto minore, abbiamo miglioramenti della velocità grazie a un design migliore. Ad esempio, un moltiplicatore non è solo più veloce perché abbiamo più transistor, ma perché utilizziamo metodi migliori. La previsione delle diramazioni è migliorata oltre alla semplice disponibilità di più transistor. Ma tutto sommato, questo è un piccolo effetto rispetto alla potenza bruta di un miliardo di transistor.

(Il processore nel primo Mac era chiamato Motorola 68000 perché aveva 68000 transistor. Un nuovo iPad ne ha circa 20.000 volte di più).


0

Sono un ingegnere meccanico, quindi non ho familiarità con quanto influisce sulla velocità di un processore o se è diventato un fattore limitante o meno, ma la fisica dietro di essa è solida. L'induttanza e la capacità del circuito influenzeranno la velocità con cui i segnali di tensione digitali possono aumentare o diminuire, influenzando così la velocità di commutazione. Idealmente, i segnali di commutazione sarebbero belle onde quadrate. In realtà sono leggermente deformati e inclinati ai bordi. I segnali devono essere alti ed essere abbastanza lunghi da essere letti prima del prossimo ciclo di clock. In sostanza, l'onda del segnale ha bisogno di un "punto piatto" nella parte superiore. Se passi troppo velocemente, otterrai più di un segnale di onda a punta. Quelli di voi che hanno più familiarità con i segnali digitali possono chiarire se necessario, ma l'idea è giusta.


2
Benvenuto! Per quanto ne so, tutto ciò che dici è vero. Ma non vedo come risponde alla domanda su come i computer sono stati in grado di diventare più veloci nel corso degli anni.
David Richerby,
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.