HTG spiega: come funziona effettivamente una CPU?

Sommario:

HTG spiega: come funziona effettivamente una CPU?
HTG spiega: come funziona effettivamente una CPU?

Video: HTG spiega: come funziona effettivamente una CPU?

Video: HTG spiega: come funziona effettivamente una CPU?
Video: 2.4 GHz o 5 GHz, quale Wi-Fi usare e perché ? - YouTube 2024, Aprile
Anonim
La maggior parte delle cose in un computer è relativamente semplice da capire: la RAM, l'archiviazione, le periferiche e il software funzionano tutti insieme per creare una funzione del computer. Ma il cuore del tuo sistema, la CPU, sembra magico anche per molti tecnici. Qui, faremo del nostro meglio per abbatterlo.
La maggior parte delle cose in un computer è relativamente semplice da capire: la RAM, l'archiviazione, le periferiche e il software funzionano tutti insieme per creare una funzione del computer. Ma il cuore del tuo sistema, la CPU, sembra magico anche per molti tecnici. Qui, faremo del nostro meglio per abbatterlo.

La maggior parte delle ricerche per questo articolo proviene da "Ma How Do It Know?" Di J. Clark Scott. È una lettura fantastica, entra molto più in profondità di questo articolo, e vale la pena spendere un paio di dollari su Amazon.

Una nota prima di iniziare: le CPU moderne sono ordini di grandezza più complesse di quelle che stiamo delineando qui. È quasi impossibile per una persona comprendere ogni sfumatura di un chip con oltre un miliardo di transistor. Tuttavia, i principi di base di come tutto si combina sono gli stessi, e la comprensione delle basi ti darà una migliore comprensione dei sistemi moderni.

Avvio piccolo

I computer operano in binario. Comprendono solo due stati: acceso e spento. Per eseguire calcoli in binario, usano quello che viene chiamato un transistor. Il transistor consente alla corrente della sorgente di fluire attraverso lo scarico solo se c'è corrente attraverso il gate. Essenzialmente, questo forma un interruttore binario, che interrompe il collegamento a seconda di un secondo segnale di ingresso.
I computer operano in binario. Comprendono solo due stati: acceso e spento. Per eseguire calcoli in binario, usano quello che viene chiamato un transistor. Il transistor consente alla corrente della sorgente di fluire attraverso lo scarico solo se c'è corrente attraverso il gate. Essenzialmente, questo forma un interruttore binario, che interrompe il collegamento a seconda di un secondo segnale di ingresso.

I computer moderni utilizzano miliardi di transistor per eseguire calcoli, ma ai livelli più bassi, è sufficiente una manciata per formare i componenti più basilari, noti come porte.

Porte logiche

Impila correttamente alcuni transistor e hai ciò che è noto come gate logico. Le porte logiche accettano due ingressi binari, eseguono un'operazione su di essi e restituiscono un'uscita. La porta OR, ad esempio, restituisce true se uno degli input è vero. La porta AND verifica se entrambi gli input sono veri, XOR verifica se solo uno degli input è vero e le varianti N (NOR, NAND e XNOR) sono versioni invertite delle loro porte di base.
Impila correttamente alcuni transistor e hai ciò che è noto come gate logico. Le porte logiche accettano due ingressi binari, eseguono un'operazione su di essi e restituiscono un'uscita. La porta OR, ad esempio, restituisce true se uno degli input è vero. La porta AND verifica se entrambi gli input sono veri, XOR verifica se solo uno degli input è vero e le varianti N (NOR, NAND e XNOR) sono versioni invertite delle loro porte di base.

Fare matematica con le porte

Con solo due porte puoi eseguire l'aggiunta binaria di base. Questo diagramma in alto mostra un mezzo addizionatore, creato usando Logicly, un parco giochi online gratuito per porte logiche. Il gate XOR qui si accenderà se solo uno degli ingressi è attivo, ma non entrambi. La porta AND si accenderà se entrambi gli ingressi sono attivi, ma resteranno spenti se non ci sono input. Quindi, se entrambi sono attivi, lo XOR rimane spento e il gate AND si accende, arrivando alla risposta corretta di due:
Con solo due porte puoi eseguire l'aggiunta binaria di base. Questo diagramma in alto mostra un mezzo addizionatore, creato usando Logicly, un parco giochi online gratuito per porte logiche. Il gate XOR qui si accenderà se solo uno degli ingressi è attivo, ma non entrambi. La porta AND si accenderà se entrambi gli ingressi sono attivi, ma resteranno spenti se non ci sono input. Quindi, se entrambi sono attivi, lo XOR rimane spento e il gate AND si accende, arrivando alla risposta corretta di due:
Questo ci dà una configurazione semplice con tre uscite distinte: zero, uno e due. Ma un bit non può memorizzare nulla più in alto di 1, e questa macchina non è troppo utile in quanto risolve solo uno dei più semplici problemi matematici possibili. Ma questo è solo un mezzo addizionatore, e se colleghi due di loro con un altro input, ottieni un full adder:
Questo ci dà una configurazione semplice con tre uscite distinte: zero, uno e due. Ma un bit non può memorizzare nulla più in alto di 1, e questa macchina non è troppo utile in quanto risolve solo uno dei più semplici problemi matematici possibili. Ma questo è solo un mezzo addizionatore, e se colleghi due di loro con un altro input, ottieni un full adder:
Il sommatore completo ha tre input: i due numeri da aggiungere e un "carry". Il carry viene utilizzato quando il numero finale supera quello che può essere memorizzato in un singolo bit. I sommatori completi saranno collegati in una catena, e il carry sarà passato da un sommatore all'altro. Il carry viene aggiunto al risultato del gate XOR nel primo half adder, e c'è un cancello OR extra per gestire entrambi i casi quando è così che dovrebbe essere acceso.
Il sommatore completo ha tre input: i due numeri da aggiungere e un "carry". Il carry viene utilizzato quando il numero finale supera quello che può essere memorizzato in un singolo bit. I sommatori completi saranno collegati in una catena, e il carry sarà passato da un sommatore all'altro. Il carry viene aggiunto al risultato del gate XOR nel primo half adder, e c'è un cancello OR extra per gestire entrambi i casi quando è così che dovrebbe essere acceso.

Quando entrambi gli ingressi sono attivi, il carry si accende e lo invia al successivo full adder della catena:

E questo è tanto complesso quanto l'aggiunta. Passare a più bit in sostanza significa solo più sommatori completi in una catena più lunga.
E questo è tanto complesso quanto l'aggiunta. Passare a più bit in sostanza significa solo più sommatori completi in una catena più lunga.

La maggior parte delle altre operazioni matematiche può essere eseguita con aggiunta; la moltiplicazione è solo un'aggiunta ripetuta, la sottrazione può essere eseguita con un'inversione di bit di fantasia, e la divisione è solo una sottrazione ripetuta. E mentre tutti i computer moderni dispongono di soluzioni basate su hardware per accelerare operazioni più complesse, è possibile tecnicamente fare tutto con il full adder.

Il bus e la memoria

In questo momento, il nostro computer non è altro che una calcolatrice male. Questo perché non può ricordare nulla e non fa nulla con le sue uscite. Mostrato sopra è una cella di memoria, che può fare tutto ciò. Sotto il cofano, utilizza molte porte NAND, e nella vita reale può essere molto diverso a seconda della tecnica di memorizzazione, ma la sua funzione è la stessa. Dagli qualche input, attiva il bit 'write' e memorizzerà gli input all'interno della cella. Questa non è solo una cella di memoria, poiché abbiamo anche bisogno di un modo per leggere le informazioni da essa. Questo viene fatto con un enabler, che è una raccolta di porte AND per ogni bit in memoria, il tutto legato a un altro input, il bit "read". I bit di scrittura e lettura sono spesso chiamati "set" e "enable".
In questo momento, il nostro computer non è altro che una calcolatrice male. Questo perché non può ricordare nulla e non fa nulla con le sue uscite. Mostrato sopra è una cella di memoria, che può fare tutto ciò. Sotto il cofano, utilizza molte porte NAND, e nella vita reale può essere molto diverso a seconda della tecnica di memorizzazione, ma la sua funzione è la stessa. Dagli qualche input, attiva il bit 'write' e memorizzerà gli input all'interno della cella. Questa non è solo una cella di memoria, poiché abbiamo anche bisogno di un modo per leggere le informazioni da essa. Questo viene fatto con un enabler, che è una raccolta di porte AND per ogni bit in memoria, il tutto legato a un altro input, il bit "read". I bit di scrittura e lettura sono spesso chiamati "set" e "enable".

L'intero pacchetto è racchiuso in quello che è noto come registro. Questi registri sono collegati al bus, che è un fascio di cavi che girano attorno all'intero sistema, collegati a ogni componente. Anche i computer moderni hanno un bus, sebbene possano avere più bus per migliorare le prestazioni del multitasking.

Ogni registro ha ancora un bit di scrittura e lettura, ma in questa configurazione, l'input e l'output sono la stessa cosa. Questo è veramente buono. Per esempio. Se si volesse copiare il contenuto di R1 in R2, si accenderebbe il bit di lettura per R1, che spingerebbe il contenuto di R1 sul bus. Mentre il bit di lettura è attivo, si attiva il bit di scrittura per R2, che copierà il contenuto del bus in R2.
Ogni registro ha ancora un bit di scrittura e lettura, ma in questa configurazione, l'input e l'output sono la stessa cosa. Questo è veramente buono. Per esempio. Se si volesse copiare il contenuto di R1 in R2, si accenderebbe il bit di lettura per R1, che spingerebbe il contenuto di R1 sul bus. Mentre il bit di lettura è attivo, si attiva il bit di scrittura per R2, che copierà il contenuto del bus in R2.

I registri sono utilizzati anche per creare RAM. La RAM è spesso disposta in una griglia, con fili che vanno in due direzioni:

I decodificatori prendono un input binario e attivano il filo numerato corrispondente. Ad esempio, "11" è 3 in binario, il più alto numero a 2 bit, quindi il decodificatore accenderebbe il filo più alto. Ad ogni intersezione, c'è un registro. Tutti questi sono collegati al bus centrale e ad un input di scrittura e lettura centrale. Sia l'input di lettura che quello di scrittura si accenderanno solo se i due fili che attraversano il registro sono anch'essi attivi, consentendo in pratica di selezionare il registro da cui scrivere e leggere. Ancora una volta, la RAM moderna è molto più complicata, ma questa configurazione funziona ancora.
I decodificatori prendono un input binario e attivano il filo numerato corrispondente. Ad esempio, "11" è 3 in binario, il più alto numero a 2 bit, quindi il decodificatore accenderebbe il filo più alto. Ad ogni intersezione, c'è un registro. Tutti questi sono collegati al bus centrale e ad un input di scrittura e lettura centrale. Sia l'input di lettura che quello di scrittura si accenderanno solo se i due fili che attraversano il registro sono anch'essi attivi, consentendo in pratica di selezionare il registro da cui scrivere e leggere. Ancora una volta, la RAM moderna è molto più complicata, ma questa configurazione funziona ancora.

L'orologio, il passo-passo e il decodificatore

I registri sono utilizzati ovunque e sono lo strumento di base per lo spostamento dei dati e la memorizzazione delle informazioni nella CPU. Quindi cosa dice loro di spostare le cose?

L'orologio è il primo componente nel core della CPU e si spegne e riaccende a intervalli regolari, misurati in hertz o cicli al secondo. Questa è la velocità che vedi pubblicizzata insieme alle CPU; un chip a 5 GHz può eseguire 5 miliardi di cicli al secondo. La velocità di clock è spesso una metrica molto buona per la velocità della CPU.

L'orologio ha tre diversi stati: l'orologio base, l'orologio abilitazione e l'orologio impostato. L'orologio base sarà acceso per mezzo ciclo e spento per l'altra metà. L'orologio di abilitazione è utilizzato per attivare i registri e dovrà essere acceso più a lungo per assicurarsi che i dati siano abilitati. L'orologio impostato deve sempre essere acceso contemporaneamente all'ora di attivazione, altrimenti potrebbero essere scritti dati errati.
L'orologio ha tre diversi stati: l'orologio base, l'orologio abilitazione e l'orologio impostato. L'orologio base sarà acceso per mezzo ciclo e spento per l'altra metà. L'orologio di abilitazione è utilizzato per attivare i registri e dovrà essere acceso più a lungo per assicurarsi che i dati siano abilitati. L'orologio impostato deve sempre essere acceso contemporaneamente all'ora di attivazione, altrimenti potrebbero essere scritti dati errati.

L'orologio è collegato allo stepper, che conterà da uno a uno step massimo e si resetterà su uno quando è finito. L'orologio è anche collegato alle porte AND per ogni registro che la CPU può scrivere su:

Queste porte AND sono anche collegate all'uscita di un altro componente, il decodificatore di istruzioni. Il decodificatore di istruzioni prende un'istruzione come "SET R2 TO R1" e la decodifica in qualcosa che la CPU può capire. Ha un proprio registro interno, chiamato "Registro delle istruzioni", che è il luogo in cui è archiviata l'operazione corrente. In che modo esattamente questo si riduce al sistema su cui si sta eseguendo, ma una volta decodificato, si attiva il set corretto e abilita i bit per i registri corretti, che si attivano in base all'orologio.
Queste porte AND sono anche collegate all'uscita di un altro componente, il decodificatore di istruzioni. Il decodificatore di istruzioni prende un'istruzione come "SET R2 TO R1" e la decodifica in qualcosa che la CPU può capire. Ha un proprio registro interno, chiamato "Registro delle istruzioni", che è il luogo in cui è archiviata l'operazione corrente. In che modo esattamente questo si riduce al sistema su cui si sta eseguendo, ma una volta decodificato, si attiva il set corretto e abilita i bit per i registri corretti, che si attivano in base all'orologio.

Le istruzioni del programma sono memorizzate nella RAM (o nella cache L1 su sistemi moderni, più vicini alla CPU). Dato che i dati del programma sono memorizzati in registri, proprio come ogni altra variabile, possono essere manipolati al volo per saltare il programma. In questo modo i programmi ottengono la loro struttura, con cicli e se dichiarazioni. Un'istruzione di salto imposta la posizione corrente nella memoria che il decodificatore di istruzioni sta leggendo da una posizione diversa.

Come tutto viene insieme

Ora, la nostra grossolana semplificazione di come funziona una CPU è completa. Il bus principale copre l'intero sistema e si collega a tutti i registri. I sommatori completi, insieme ad un mucchio di altre operazioni, sono impacchettati nell'unità di logica aritmetica, o l'ALU. Questa ALU avrà connessioni al bus e avrà anche i suoi registri per memorizzare il secondo numero su cui sta operando.
Ora, la nostra grossolana semplificazione di come funziona una CPU è completa. Il bus principale copre l'intero sistema e si collega a tutti i registri. I sommatori completi, insieme ad un mucchio di altre operazioni, sono impacchettati nell'unità di logica aritmetica, o l'ALU. Questa ALU avrà connessioni al bus e avrà anche i suoi registri per memorizzare il secondo numero su cui sta operando.

Per eseguire un calcolo, i dati del programma vengono caricati dalla RAM di sistema nella sezione di controllo. La sezione di controllo legge due numeri dalla RAM, carica il primo nel registro delle istruzioni dell'ALU e quindi carica il secondo sul bus. Nel frattempo, invia all'ALU un codice di istruzioni che gli dice cosa fare. L'ALU esegue quindi tutti i calcoli e memorizza il risultato in un registro diverso, da cui la CPU può leggere e quindi continuare il processo.

Consigliato: