[Soci SLIP] schizzi: com'è fatta una macchina universale di Turing fisica

llcfree llcfree a gmail.com
Gio 14 Nov 2013 11:29:41 CET


Questa volta questo messaggio non è finito in lista soci anziché arduino
per sbaglio, ma apposta, perché ha a che fare con TUTTI i calcolatori,
di tutti i tipi (anche se quello che viene spiegato vale per arduino
uno):

http://urbanhonking.com/ideasfordozens/2009/05/18/an_tour_of_the_arduino_interna/

Se mai qualcuno si è chiesto cosa ci sia dietro il blink di un led e
come si possa passare dal software a farlo lampeggiare, credo che ci
troverà un bel po' di risposte. Senza la fisica il software da solo non
si spiega, sembra un miracolo, un click o una riga di comando ed ecco
che della ferraglia fa quel che vogliamo noi, come se potessimo
parlarle. La spiegazione di come ciò sia possibile l'ha data Turing,
quando i calcolatori non esistevano ancora. Quando ne hanno finalmente
costruito uno, a lui non lo lasciavano usare, e anzi lo dileggiavano se
commetteva un errore di programmazione (erano i guru scemi di allora).

Esempio di domanda: arduino uno (o, meglio, l'atmel che ci sta sotto) è
un'architettura ad 8 bit (un byte), che significa che sui vari bus (o
canali) viaggiano 8 bit alla volta. I registri (la memoria interna) sono
a 32 bit e siccome ogni bit può avere solo due valori, il massimo degli
interi senza segno (quelli da 0 in sù) che si possono rappresentare è 2
alla potenza di 32 (da 0 to 4.294.967.296). Sembrano comunque tanti,
anche se non infiniti, ma non lo sono e non bastano neppure per un delay
di 500ms. Come fa arduino a contare oltre 2^32? (o come fanno i moderni
pc a contare oltre a 2^64? O quelli "vecchi" oltre a 2^16?) Vsto che lo
fa (lo fanno).

Buon divertimento,
Loredana






Maggiori informazioni sulla lista Soci