Come sono fatti i chip dei computer e come funzionano?

Le risposte precedenti sono tutte corrette, ma molto tecniche. Cercherò di semplificarle.
Mi scuso con tutte le persone tecniche là fuori, perché userò una terminologia non corretta a spese di mantenere le cose semplici.

Le basi:

  • L'hardware è progettato usando la litografia e i wafer di silicio
  • I circuiti sono progettati usando porte logiche e algebra booleana
  • I programmi sono creati usando comandi logici
  • Il software collega l'hardware ai processi dietro le quinte
  • Premere un pulsante fa magicamente accadere le cose

Progettazione di chip per computer:

I chip dei computer sono costruiti costruendo circuiti su un wafer di silicio.

I componenti usati per costruire i circuiti non sono pezzi individuali che vengono creati e collocati fisicamente sul wafer, ma sono equivalenti di dimensioni a livello atomico di quei singoli componenti.

Sono creati spruzzando materiali conduttori e isolanti in un'area specifica, e poi incidendoli selettivamente per costruire una struttura a strati in 3D che rappresenta il circuito desiderato.
Il processo si chiama litografia.

Se avete mai visto una lavagna luminosa, dove si fa disegnare una lezione di classe su un foglio A4 di pellicola plastica trasparente, e si usa una luce sotto per proiettarla su un muro, la litografia è un processo simile, ma al contrario.

Prima si progetta il circuito, poi si usa una lente per mettere a fuoco un negativo del disegno del circuito su un piccolo punto. L'area che viene focalizzata è rivestita con un materiale sensibile alla luce, che reagisce alle aree chiare e scure del disegno del circuito. L'acido viene poi usato per incidere le aree indesiderate del circuito, lasciando le tracce del circuito desiderate.

Progettazione di porte logiche:

Le porte logiche sono un passo sopra il livello hardware del circuito.
Sono moduli di circuito creati usando solo transistor.

Un transistor è un interruttore elettronico per controllare il flusso di corrente elettrica.
Si comporta un po' come una strada con un semaforo.
Quando la luce è verde, il traffico scorre. Quando la luce è rossa, il traffico si ferma.

I transistor sono usati in varie disposizioni per progettare circuiti, chiamati porte logiche.

Le porte logiche sono usate per creare circuiti modulari che possono essere mescolati e abbinati per costruire circuiti ad un livello superiore.

Ogni tipo di porta logica ha un simbolo specifico usato per descriverla.
Ci sono molti tipi di porte logiche, come AND, NAND, OR, NOR, XOR ecc.

Lo scopo di usare le porte logiche è di rendere più facile la costruzione di un circuito,
usando comandi logici, piuttosto che doversi preoccupare di come creare ogni componente a livello hardware.

C'è molto da fare a questo livello, ma per maggiori informazioni su come progettare circuiti usando le porte logiche, leggete qualcosa sulla logica booleana.

La logica booleana è un processo in cui si usa l'algebra matematica di base per creare un'espressione matematica che descriva tutti i possibili risultati di un processo.

Una volta che questa è stata usata, potete ridurre il numero di porte logiche necessarie per costruire accuratamente il vostro circuito.

Il software per computer è scritto in modo logico, come in:

Se succede questo, fate quello.

Nella programmazione, sentirete parlare di dichiarazioni If e Or,
così come le dichiarazioni While.

Tutti i processi di alto livello sono scomposti nelle loro forme più semplici, e scritti in modo logico, per descrivere accuratamente un processo prevedibile.

L'idea di programmare ad un livello molto alto, è quella di mappare tutte le possibilità coinvolte nel fare ciò che si sta cercando di fare, così tutte le basi sono coperte. Se qualche possibilità viene tralasciata, il vostro programma potrebbe bloccarsi a causa di un errore inaspettato.

La programmazione a basso livello viene eseguita appena sopra il livello dell'hardware, usando il
"codice macchina", che è molto accurato, ma può essere molto scoraggiante, in quanto comporta la programmazione di registri hardware con l'esidecimale.

Questo tipo di programmazione crea piccoli programmi con un codice molto efficiente.

Il programma di alto livello usa comandi che sono scritti in un modo più umano, come:

"disegna cerchio raggio x"

La programmazione di alto livello include molti tipi diversi di linguaggi di programmazione, poiché alcuni linguaggi sono più facili da usare per alcuni tipi di programmi, mentre altri sono adatti a tipi diversi.

Una volta che un programma è creato, e controllato per errori, viene "compilato".
Questo è un processo di conversione dei comandi di alto livello in codice macchina.

Questo processo di conversione rende i linguaggi di alto livello meno efficienti che scriverli in codice macchina all'inizio, ma anche molto più veloci e facili da creare.

I programmi più grandi sono creati usando team di programmatori, che mappano tutti i processi logici coinvolti in un particolare aspetto di un processo, e poi ogni parte è incorporata come un modulo all'interno del programma principale.

Come ogni programmatore codificherà i propri processi a modo suo, a volte i bug del programma e i crash possono svilupparsi tra le versioni, a causa di conflitti tra moduli.
I processi di debug usati oggi sono migliori che in passato, ma a causa della complessità dei programmi più grandi, può essere necessario un po' di tempo per eliminare ogni possibile errore.

In cima a tutto questo, quando si rilascia il programma e le persone lo eseguono su migliaia di combinazioni diverse di hardware, risulta che alcune persone hanno problemi e altre non ne hanno affatto.

Sistema operativo

Il sistema operativo è un tipo di programma che interfaccia l'hardware del computer con altri software. cioè è un software che permette ai programmi di funzionare.

La complessità del codice usato per creare Microsoft Windows è enorme di per sé, e poi in cima a questo la maggior parte delle persone installa 10 o più programmi sul proprio computer, ognuno creato in modi diversi da decine o centinaia di persone.

I "driver" sono programmi software che interfacciano l'hardware e le periferiche del computer con il software.

Ogni volta che si installa un aggiornamento del software, si corre il rischio di risolvere un problema, mentre se ne crea un altro nuovo da qualche altra parte. Un sacco di test e di tempo viene speso per eliminare il maggior numero possibile di bug prima che il software venga rilasciato.

Conclusione

Così, la prossima volta che state navigando sul web e il vostro computer visualizza un messaggio di errore, invece di pensare a voi stessi "perché non può funzionare correttamente ?"
dovreste ora apprezzare il livello di complessità coinvolto anche solo per stare seduti inerti sul desktop di Windows senza altri programmi aperti.