La maggior parte delle cose in un computer sono relativamente semplici da capire: la RAM, l'archiviazione, le periferiche e il software lavorano tutti insieme per far funzionare un computer. Ma il cuore del tuo sistema, la CPU, sembra magico anche a molte persone tecnologiche. Qui, faremo del nostro meglio per scomporlo.
La maggior parte della ricerca per questo articolo proviene da "Ma come lo sa?" di J. Clark Scott. È una lettura fantastica, va molto più in profondità rispetto a questo articolo e vale i due dollari su Amazon.
Una nota prima di iniziare: le CPU moderne sono ordini di grandezza più complessi di quanto 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 incastra rimangono gli stessi e la comprensione delle basi ti darà una migliore comprensione dei sistemi moderni.
A partire da piccolo
I computer funzionano in binario . Capiscono solo due stati: acceso e spento. Per eseguire calcoli in formato binario, usano quello che viene chiamato transistor. Il transistor consente alla corrente sorgente di fluire attraverso di esso fino allo scarico solo se c'è corrente attraverso il gate. Essenzialmente, questo forma un interruttore binario, che interrompe il filo a seconda di un secondo segnale di ingresso.
RELAZIONATO: Che cos'è il binario e perché i computer lo usano?
I computer moderni utilizzano miliardi di transistor per eseguire calcoli, ma ai livelli più bassi, ne basta una manciata per formare i componenti più elementari, noti come gate.
Porte logiche
Impila correttamente alcuni transistor e avrai quella che è nota come porta logica. Le porte logiche accettano due ingressi binari, eseguono un'operazione su di essi e restituiscono un'uscita. La porta OR, ad esempio, restituisce vero se uno degli ingressi è vero. La porta AND controlla se entrambi gli ingressi sono veri, XOR controlla se solo uno degli ingressi è vero e le varianti N (NOR, NAND e XNOR) sono versioni invertite delle loro porte di base.
Facendo matematica con i cancelli
Con solo due porte puoi eseguire l'addizione binaria di base. Questo diagramma sopra mostra un mezzo sommatore, creato usando Logicamente , un parco giochi online gratuito per porte logiche. Il gate XOR qui si accenderà se solo uno degli ingressi è attivo, ma non entrambi. Il gate AND si accenderà se entrambi gli ingressi sono attivi, ma rimarrà spento se non c'è alcun ingresso. Quindi, se entrambi sono attivi, 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 qualcosa di più alto di 1, e questa macchina non è troppo utile in quanto risolve solo uno dei più semplici problemi di matematica possibili. Ma questo è solo un mezzo sommatore, e se ne colleghi due con un altro input, ottieni un sommatore completo:
Il sommatore completo ha tre input: i due numeri da aggiungere e un "riporto". Il riporto 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 riporto viene passato da un sommatore al successivo. Il carry viene aggiunto al risultato del gate XOR nella prima metà del sommatore, e c'è un gate OR aggiuntivo per gestire entrambi i casi in cui dovrebbe essere attivato.
Quando entrambi gli ingressi sono attivi, il riporto si attiva e lo invia al successivo sommatore completo della catena:
E questo è tanto complesso quanto l'aggiunta diventa. Passare a più bit significa essenzialmente solo più sommatori completi in una catena più lunga.
La maggior parte delle altre operazioni matematiche può essere eseguita con l'aggiunta; la moltiplicazione è solo un'addizione ripetuta, la sottrazione può essere eseguita con un'inversione di bit fantasia e la divisione è solo una sottrazione ripetuta. E mentre tutti i computer moderni hanno soluzioni basate su hardware per accelerare operazioni più complicate, tecnicamente puoi fare tutto con il sommatore completo.
L'autobus e la memoria
In questo momento, il nostro computer non è altro che un cattivo calcolatore. Questo perché non ricorda nulla e non fa nulla con i suoi output. Sopra è mostrata una cella di memoria, che può fare tutto questo. Sotto il cofano, utilizza molti gate NAND e nella vita reale può essere molto diverso a seconda della tecnica di archiviazione, ma la sua funzione è la stessa. Gli dai alcuni input, attiva il bit di "scrittura" 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 nella memoria, tutte legate a un altro ingresso, il bit di “lettura”. I bit di scrittura e lettura sono spesso chiamati anche "set" e "enable".
L'intero pacchetto è racchiuso in quello che è noto come registro. Questi registri sono collegati al bus, che è un fascio di fili che corre attorno all'intero sistema, collegato a ogni componente. Anche i computer moderni hanno un bus, sebbene possano avere più bus per migliorare le prestazioni multitasking.
Ogni registro ha ancora un bit di scrittura e lettura, ma in questa configurazione l'ingresso e l'uscita sono la stessa cosa. Questo è effettivamente buono. Per esempio. Se si desidera copiare il contenuto di R1 in R2, attivare il bit di lettura per R1, che spingerebbe il contenuto di R1 sul bus. Mentre il bit di lettura è attivo, devi attivare il bit di scrittura per R2, che copierà il contenuto del bus in R2.
I registri vengono utilizzati anche per creare la RAM. La RAM è spesso disposta in una griglia, con fili che vanno in due direzioni:
I decoder prendono un ingresso binario e accendono il filo numerato corrispondente. Ad esempio, "11" è 3 in binario, il numero di 2 bit più alto, quindi il decoder attiverà il filo più alto. Ad ogni incrocio c'è un registro. Tutti questi sono collegati al bus centrale e ad un ingresso centrale di scrittura e lettura. Sia l'ingresso di lettura che quello di scrittura si attiveranno solo se sono accesi anche i due fili che attraversano il registro, consentendo di fatto 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, lo stepper e il decoder
I registri vengono utilizzati ovunque e sono lo strumento di base per spostare i dati e memorizzare le informazioni nella CPU. Allora cosa dice loro di spostare le cose?
L'orologio è il primo componente nel core della CPU e si spegnerà e si accenderà a un intervallo prestabilito, misurato in hertz, o cicli al secondo. Questa è la velocità che vedi pubblicizzata insieme alle CPU; un chip da 5 GHz può eseguire 5 miliardi di cicli al secondo. La velocità di clock è spesso un ottimo parametro per la velocità di una CPU.
L'orologio ha tre diversi stati: l'orologio di base, l'orologio di abilitazione e l'orologio impostato. L'orologio di base sarà attivo per metà ciclo e spento per l'altra metà. L'orologio di abilitazione viene utilizzato per attivare i registri e dovrà essere attivo più a lungo per assicurarsi che i dati siano abilitati. L'orologio impostato deve essere sempre acceso contemporaneamente all'orologio di abilitazione, altrimenti potrebbero essere scritti dati errati.
L'orologio è collegato allo stepper, che conterà da uno al passo massimo e si ripristinerà a uno quando ha finito. L'orologio è anche collegato alle porte AND per ogni registro su cui la CPU può scrivere:
Queste porte AND sono anche collegate all'uscita di un altro componente, il decodificatore di istruzioni. Il decodificatore di istruzioni accetta un'istruzione come "SET R2 TO R1" e la decodifica in qualcosa che la CPU può capire. Dispone di un proprio registro interno, chiamato "Registro delle istruzioni", che è il luogo in cui è memorizzata l'operazione corrente. In che modo esattamente lo fa dipende dal sistema su cui stai eseguendo, ma una volta decodificato, attiverà il set corretto e abiliterà i bit per i registri corretti, che si attiveranno in base all'orologio.
Le istruzioni del programma sono memorizzate nella RAM (o cache L1 sui sistemi moderni, più vicino alla CPU). Poiché i dati del programma sono memorizzati in registri, proprio come ogni altra variabile, possono essere manipolati al volo per saltare all'interno del programma. Questo è il modo in cui i programmi ottengono la loro struttura, con cicli e istruzioni if. Un'istruzione di salto imposta la posizione corrente nella memoria da cui il decodificatore dell'istruzione sta leggendo in una posizione diversa.
Come va tutto insieme
Ora, la nostra grossolana semplificazione del funzionamento di una CPU è completa. Il bus principale copre l'intero sistema e si collega a tutti i registri. I sommatori completi, insieme a un mucchio di altre operazioni, sono impacchettati nell'unità logica aritmetica o ALU. Questa ALU avrà connessioni al bus e avrà anche i propri registri per memorizzare il secondo numero su cui sta operando.
Per eseguire un calcolo, i dati del programma vengono caricati dalla RAM del sistema nella sezione di controllo. La sezione di controllo legge due numeri dalla RAM, carica il primo nel registro delle istruzioni dell'ALU, quindi carica il secondo sul bus. Nel frattempo, invia all'ALU un codice di istruzione che gli dice cosa fare. L'ALU esegue quindi tutti i calcoli e memorizza il risultato in un registro diverso, dal quale la CPU può leggere e quindi continuare il processo.
Credito immagine: Rost9 / Shutterstock