Computer
Una macchina con il programma in memoria
Tavola
- 1Telai di valvole termoioniche
- 2Tubo di memoria a raggi catodici: un punto per bit
- 3Pannello di interruttori per inserire i dati
- 4Telescrivente e nastro perforato
- 5Relè: un interruttore mosso da un elettromagnete
- 6Valvola termoionica: la griglia comanda la corrente
- 7Transistor: l'interruttore a semiconduttore
Anatomia
Caricamento della figura…
Un computer è una macchina da calcolo programmabile; quella di oggi conserva il programma nella propria memoria e calcola in binario, con interruttori che possono essere solo accesi o spenti. Il primo a eseguire un programma da una memoria elettronica fu il «Baby» di Manchester, il 21 giugno 1948, e telefoni e portatili seguono ancora il suo schema.
Che cos’è
Un computer esegue un programma, cioè un elenco di istruzioni, su dei dati. Nello schema a programma memorizzato descritto qui, il programma sta nella stessa memoria dei numeri su cui lavora, quindi la macchina può caricarne uno nuovo, modificarlo o scriverne un altro senza essere ricostruita. Questa idea distingue il computer a programma memorizzato dalle macchine programmabili precedenti, che prendevano le istruzioni da nastri, schede, spine o interruttori.
I computer di oggi lavorano in binario, con le sole cifre 0 e 1, perché due stati sono facili da rendere affidabili: un interruttore è aperto o chiuso. L’ENIAC e alcune altre macchine dei primi anni contavano ancora in decimale. Per una società che ricostruisce i propri strumenti, fa calcoli, governa macchine come pompe e reti elettriche e trasmette messaggi.
Come funziona
I numeri binari. Il binario è un sistema posizionale come le nostre cifre decimali, ma ogni posizione vale il doppio di quella alla sua destra: 1, 2, 4, 8, 16. Tredici è 8 + 4 + 1 e si scrive 1101. Otto cifre binarie, o bit, coprono tutti gli interi da 0 a 255.
In serie la lampadina si accende solo se si premono entrambi i pulsanti; in parallelo ne basta uno.
Le porte logiche. Due interruttori in serie accendono una lampada solo se sono chiusi tutti e due: è una porta AND. In parallelo ne basta uno qualsiasi: una porta OR. Un relè il cui contatto si apre quando la bobina riceve corrente forma una porta NOT, che trasforma 1 in 0. Il relè è mosso da un elettromagnete, la valvola termoionica dalla tensione sulla griglia, il transistor dal segnale sulla base o sul gate. Con AND, OR e NOT si può esprimere qualunque regola che leghi bit d’ingresso a bit d’uscita.
Sommare con le porte. In binario 1 + 1 fa 10: somma 0, riporto 1. Il bit di somma vale 1 quando esattamente uno degli ingressi vale 1, una regola detta OR esclusivo (XOR); il riporto vale 1 solo se valgono 1 entrambi, cioè un AND. Insieme formano un semisommatore. Un sommatore completo riceve anche il riporto dalla colonna di destra, e otto in catena sommano due numeri da 8 bit, colonna per colonna, come uno scolaro sul quaderno.
La memoria. Due porte NOR (un OR seguito da un NOT), in cui ogni uscita alimenta un ingresso dell’altra, formano un latch: un impulso su uno degli ingressi liberi lo porta a 1, un impulso sull’altro lo riporta a 0, e conserva quel bit finché c’è corrente. Manchester teneva i bit come punti carichi su un tubo a raggi catodici, l’EDSAC come impulsi sonori in tubi di mercurio. Ogni parola, un gruppo di bit, ha un numero, il suo indirizzo.
Il ciclo. Un registro, il contatore di programma, contiene l’indirizzo della prossima istruzione. Il processore la preleva, la decodifica, la esegue e ricomincia. Un’istruzione può sommare un numero della memoria all’accumulatore, salvare un risultato o saltare altrove se un valore è negativo; questo salto condizionato permette al programma di ripetere e di scegliere. Tastiere e sensori fanno entrare i dati; schermi, stampanti e motori fanno uscire i risultati.
Come costruirlo
Un processore moderno richiede una fabbrica di chip, ma la sua logica si impara su un tavolo.
Provate prima ogni interruttore con il suo LED; un LED ha sempre bisogno di un resistore in serie.
Procurarsi il materiale. Una breadboard senza saldature, due o tre pile AA in un portabatterie (da 3 a 4,5 V) o un alimentatore USB da 5 V, due deviatori bipolari, due LED, due resistori da 330 a 470 ohm e del filo. Ogni LED va montato con il piedino lungo (anodo) verso il deviatore e quello corto (catodo) a 0 V. Scrivete prima la tabella di verità: per gli ingressi A B = 00, 01, 10, 11 la somma è 0, 1, 1, 0 e il riporto 0, 0, 0, 1.
Cablare il riporto. Portate l’alimentazione al comune del primo polo di A, il suo contatto «acceso» al comune del primo polo di B e quel contatto «acceso» a un LED attraverso un resistore; l’altro piedino del LED torna a 0 V. Si accende solo per 11: è l’AND.
Cablare la somma. Sui secondi poli collegate il contatto «acceso» di A al contatto «spento» di B, e lo «spento» di A all’«acceso» di B. Alimentate il comune di A e portate il comune di B al secondo LED attraverso un resistore, con il catodo a 0 V. Si accende quando i deviatori sono in posizioni diverse: è lo XOR. Verificate i quattro casi sulla tabella.
Concatenare un sommatore più grande. Un sommatore completo è fatto di due semisommatori e di una porta OR che ne unisce i riporti. Da qui in poi conviene usare circuiti logici integrati: un sommatore a 4 bit richiede due 74HC86 (XOR), due 74HC08 (AND) e un 74HC32 (OR). Alimentateli come indica il datasheet (piedino 14 al positivo, piedino 7 a 0 V, un condensatore da 100 nF tra i due). Ogni riporto in uscita entra nella colonna successiva e il primo riporto in ingresso va a 0 V; ogni ingresso dei deviatori riceve un resistore da 10 kiloohm verso 0 V e ogni LED d’uscita uno da 1 kiloohm.
Far girare un computer su carta. Disegnate otto caselle di memoria numerate, un accumulatore e un contatore di programma a 0. Scrivete CARICA 5 nella casella 0, SOMMA 6 nella 1, SALVA 7 nella 2, STOP nella 3, poi 3 nella casella 5 e 4 nella 6. Fate voi il processore: leggete la casella indicata dal contatore, eseguitela, aggiungete uno al contatore. Alla fine la casella 7 contiene 7. Codificate poi ogni istruzione con due cifre, prima l’operazione e poi l’indirizzo, con CARICA 1, SOMMA 2, SALVA 3 e STOP 0: il programma diventa 15, 26, 37, 00, numeri tra i dati.
Sicurezza. Solo pile o un alimentatore USB da 5 V, mai la corrente di rete. Ogni LED ha bisogno del suo resistore. Una pila o un power bank in cortocircuito può scaldare i fili fino a ustionare. Staccate l’alimentazione prima di modificare i collegamenti. L’uscita di un chip non può alimentare la bobina di un relè: comandatela con un transistor adatto alla sua corrente e mettete un diodo in parallelo alla bobina, con l’estremità segnata da una fascia (il catodo) verso il positivo, per assorbire il picco di tensione allo spegnimento.
Storia ed evoluzione
Schizzo semplificato della parte della sua prima macchina differenziale, un settimo, che Babbage fece montare nel 1832; funziona ancora.
La macchina analitica di Charles Babbage, ideata nel 1834, aveva un magazzino, un mulino per il calcolo e un programma su schede perforate; non fu mai costruita. Ada Lovelace pubblicò nel 1843 una sequenza di operazioni per essa. Le tabulatrici elettriche a schede di Herman Hollerith elaborarono il censimento statunitense del 1890.
Nel 1936 Alan Turing descrisse una macchina universale che legge le istruzioni dallo stesso nastro dei dati. Konrad Zuse presentò a Berlino il suo Z3 a relè il 12 maggio 1941. Da febbraio 1944 il Colossus elettronico di Tommy Flowers aiutò a forzare la cifratura tedesca Lorenz a Bletchley Park; rimase segreto fino agli anni Settanta. L’ENIAC di J. Presper Eckert e John Mauchly, a Filadelfia, presentato nel 1946, era di uso generale ma si programmava spostando cavi. Ognuno può dirsi il primo, a seconda che si chieda l’elettronica, l’uso generale o il programma memorizzato.
Il rapporto di John von Neumann sull’EDVAC, del 1945, nato dal lavoro con Eckert, Mauchly e altri, descriveva una macchina che tiene programma e dati in un’unica memoria. La prima a funzionare fu il «Baby» di Manchester, di Frederic Williams, Tom Kilburn e Geoff Tootill, il 21 giugno 1948. L’EDSAC di Maurice Wilkes, a Cambridge, seguì il 6 maggio 1949 e presto servì i suoi utenti.
Manchester fece funzionare un computer a transistor nel novembre 1953. I circuiti integrati, realizzati per la prima volta nel 1958, entrarono nei computer negli anni Sessanta e nel 1971 il 4004 di Intel mise un intero processore su un solo chip.