Quasi tutti i progressi nella velocità del computer provengono da una di queste aree:
Transistor più piccoli
Due cose derivano dalla riduzione dei transistor:
- 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 .
- È 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.