Articles

HTG spiega: Come funziona effettivamente una CPU?

  • Antonio Heddings

    @anthonyheddings

  • Aggiornato il 28 febbraio 2020, 4:58pm EDT
CPU
Rost/

la Maggior parte delle cose in un computer sono relativamente semplici da capire: la RAM, storage, le periferiche e i software di lavorare tutti insieme per rendere un computer in funzione. 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 viene da “Ma come fa a saperlo?”di J. Clark Scott. E ‘ una lettura fantastica, va in molto più in profondità di questo articolo sarà, e vale la pena il paio di dollari su Amazon.

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

Avvio piccolo

I computer operano in binario. Capiscono solo due stati: on e off. Per eseguire calcoli in binario, usano quello che viene chiamato un transistor. Il transistor consente solo alla corrente di sorgente di fluire attraverso di essa fino allo scarico se c’è corrente attraverso il cancello. Essenzialmente, questo forma un interruttore binario, che taglia il filo a seconda di un secondo segnale di ingresso.

CORRELATI: cos’è il binario e perché i computer lo usano?

Pubblicità

I computer moderni utilizzano miliardi di transistor per eseguire calcoli, ma ai livelli più bassi, è necessario solo una manciata per formare i componenti più elementari, noti come gates.

Porte logiche

Impila correttamente alcuni transistor e hai ciò che è noto come porta logica. Le porte logiche prendono due ingressi binari, eseguono un’operazione su di essi e restituiscono un’uscita. Il gate OR, ad esempio, restituisce true se uno degli input è true. Il gate 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.

Fare matematica con le porte

Con solo due porte puoi fare l’aggiunta binaria di base. Questo diagramma sopra mostra una mezza vipera, creata usando Logicly, un parco giochi online gratuito per porte logiche. Il gate XOR qui si accenderà se solo uno degli input è attivo, ma non entrambi. Il gate AND si accende se entrambi gli ingressi sono attivi, ma rimane spento se non c’è input. Quindi, se entrambi sono attivi, lo XOR rimane spento e il gate AND si accende, arrivando alla risposta corretta di due:

Advertisement

Questo ci dà una semplice configurazione con tre uscite distinte: zero, uno e due. Ma un bit non può memorizzare nulla di più alto di 1, e questa macchina non è troppo utile in quanto risolve solo uno dei problemi matematici più semplici possibili. Ma questa è solo una mezza vipera, e se ne colleghi due con un altro input, ottieni una vipera completa:

L’adder completo ha tre ingressi: 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. Le sommatrici complete saranno collegate in una catena e il trasporto viene passato da una sommatrice all’altra. Il carry viene aggiunto al risultato del gate XOR nella prima metà adder, e c’è un extra OR gate per gestire entrambi i casi in cui il so che dovrebbe essere acceso.

Quando entrambi gli ingressi sono attivi, il carry si accende e lo invia al successivo sommatore completo nella catena:

E questo è complesso quanto l’aggiunta diventa. Passare a più bit significa essenzialmente solo più sommatori completi in una catena più lunga.

Pubblicità

La maggior parte delle altre operazioni matematiche può essere fatta con l’addizione; la moltiplicazione è solo un’aggiunta ripetuta, la sottrazione può essere fatta con qualche 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 velocizzare le operazioni più complicate, è tecnicamente possibile fare tutto con l’adder completo.

Il bus e la memoria

In questo momento, il nostro computer non è altro che un cattivo calcolatore. Questo perché non può ricordare nulla e non fa nulla con le sue uscite. Mostrato sopra è una cella di memoria, che può fare tutto questo. Sotto il cofano, utilizza un sacco di porte 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, accendi il bit “scrivi” e memorizzerà gli input all’interno della cella. Questa non è solo una cella di memoria, in quanto abbiamo anche bisogno di un modo per leggere le informazioni da esso. Questo viene fatto con un enabler, che è una raccolta di E gates per ogni bit nella memoria, tutti legati a un altro input, il bit “read”. I bit di scrittura e lettura sono spesso chiamati ” set “e” enable”.

Questo intero pacchetto è racchiuso in quello che è noto come un registro. Questi registri sono collegati al bus, che è un fascio di fili che corrono intorno all’intero sistema, collegato ad ogni componente. Anche i computer moderni hanno un bus, anche se possono avere più bus per migliorare le prestazioni 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 è davvero buono. Biru. Se si volesse copiare il contenuto di R1 in R2, si attiverebbe 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.

Pubblicità

I registri sono usati anche per creare RAM. La RAM è spesso disposta in una griglia, con i 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 più alto a 2 bit, quindi il decoder accenderebbe 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 la lettura e la scrittura di ingresso si accende solo se i due fili che attraversano sopra il registro sono anche su, in modo efficace che consente di selezionare il registro da cui scrivere e leggere. Ancora una volta, la RAM moderna è molto più complicata, ma questa configurazione funziona ancora.

I registri dell’orologio, dello stepper e del decodificatore

sono utilizzati ovunque e sono lo strumento di base per spostare i dati e memorizzare le informazioni nella CPU. Quindi cosa dice loro di spostare le cose?

L’orologio è il primo componente nel core della CPU e si spegne e si accende ad un intervallo impostato, misurato in hertz, o cicli al secondo. Questa è la velocità che vedi pubblicizzato insieme alle CPU; un chip 5 GHz può eseguire 5 miliardi di cicli al secondo. La velocità di clock è spesso una metrica molto buona per la velocità di una CPU.

Pubblicità

L’orologio ha tre diversi stati: l’orologio di base, l’orologio di abilitazione e l’orologio impostato. L’orologio di base sarà acceso per mezzo ciclo e spento per l’altra metà. L’orologio di abilitazione viene 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 attivo 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à su uno quando è fatto. L’orologio è anche collegato a E gates per ogni registro su cui la CPU può scrivere:

Questi E gates sono anche collegati all’uscita di un altro componente, il decodificatore di istruzioni. Il decodificatore di istruzioni prende un’istruzione come “IMPOSTA R2 A R1” e la decodifica in qualcosa che la CPU può capire. Ha un proprio registro interno, chiamato “Registro di istruzioni”, che è dove viene memorizzata l’operazione corrente. Come esattamente lo fa questo si riduce al 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 nella cache L1 sui sistemi moderni, più vicini alla CPU). Poiché i dati del programma sono memorizzati nei registri, proprio come ogni altra variabile, può essere manipolato al volo per saltare intorno al programma. Ecco come i programmi ottengono la loro struttura, con loop e istruzioni if. Un’istruzione jump imposta la posizione corrente in memoria da cui il decodificatore di istruzioni sta leggendo in una posizione diversa.

Come tutto viene insieme

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

Pubblicità

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.

Immagine di credito: Rost9 /

Anthony Heddings
Anthony Heddings è il residente cloud engineer per LifeSavvy Media, uno scrittore tecnico, programmatore, e un esperto presso la piattaforma AWS di Amazon. Ha scritto centinaia di articoli per How-To Geek e CloudSavvy IT che sono stati letti milioni di volte.Leggi la Biografia completa ”