Sembrerebbe una domanda banale ma in realtà penso che la risposta non sia semplice, il mio quesito è questo: perché i calcolatori utilizzano la logica binaria? Non si migliorerebbero le prestazioni utilizzando una logica multilivello (magari a spese di una maggiore complessità)?


Innanzitutto, come nota la stessa domanda, la realizzazione di circuiti
digitali che possano assumere più di due stati risulta
assai complessa, ma per di più questo non porterebbe nemmeno
ad un aumento delle prestazioni del circuito. Cercherò di
giustificare in modo semplice questa affermazione.

Nei circuiti digitali lo stato di un elemento viene rappresentato da un
particolare livello di tensione: ad esempio convenzionalmente si dice
che una linea è allo stato 0 se si trova a 0 volt ed allo
stato 1 se si trova a 5 volt. Naturalmente nella pratica occorre
tenere presente che ai segnali sono sempre sovrapposti “rumori”, oppure che
le tensioni di alimentazione possono variare, ecc. Quindi i circuiti vengono
costruiti in modo che sia considerato stato 0 una tensione, ad esempio,
inferiore a 1.5 volt e stato 1
una tensione superiore a 3.5 volt. In questo modo segnali spuri che si
sovrappongono a quello voluto o variazioni di tensione non producono
errori purché abbiano effetti che non superino i valori
di soglia. Si noti anche che fra lo stato 0 e lo stato 1 c’è una
“zona di incertezza” (fra 1.5 e 3.5 volt, nell’esempio considerato) che
è
priva di significato, ovvero il circuito non dovrebbe mai trovarsi
in condizione da avere elementi che si trovano a tensioni
comprese fra 1.5 e 3.5 volt. Più precisamente questo avviene soltanto
durante la commutazione, ovvero il passaggio fra uno stato e l’altro.
Questa zona di incertezza è indispensabile per evitare ambiguità nella
identificazione dello stato, che si tradurrebbero in errori.

Ciò che stabilisce la velocità di un elemento digitale e di
conseguenza le prestazioni di tutto il circuito è il “tempo di commutazione”
ovvero il tempo necessario per passare da uno stato 0 ad 1 o viceversa.
Qui ci troviamo in presenza di una scelta fra due esigenze contrastanti:
infatti facendo
più grande la zona di incertezza si ottiene una minore
probabilità di errore, ma contemporaneamente si diminusce
la velocità di commutazione: un circuito che deve passare da 0 a 1 volt impiega
la metà del tempo di uno che deve passare da 0 a 2 volt (cioè,
in sostanza, la velocità di commutazione si potrebbe esprimere in
“volt al secondo”).
In generale, quindi, data una certa tecnologia di realizzazione del
circuito digitale che stabilisce la velocità di commutazione,
uno dei modi per aumentare le prestazioni complessive consiste
nel fare più piccola la zona di incertezza, senza scendere al di sotto
del valore che corrisponde alla probabilità di errore che
possiamo accettare.

Vediamo cosa succede se progettiamo una logica a tre livelli (0, 1 e 2),
anziché
due. Dato che vogliamo mantenere la stessa probabilità di errore,
dovremo mantenere fra i livelli la stessa ampiezza della zona di incertezza,
e quindi avremmo, ad esempio, lo stato 0 rappresentato con valori fra 0 ed 1.5
volt, lo stato 1 con valori fra 3.5 e 5 e lo stato 2 con valori fra 7 e 8.5 volt.
Il risultato è che i tempi di commutazione non sono più
uguali per ogni cambiamento di stato, ma per passare dallo stato 0 al 2 (o
viceversa) occorre più tempo che non nella transizione 0/1.

In sostanza, anche tenendo conto del fatto che utilizzando logiche
a più livelli si potrebbe diminuire il numero di circuiti in cascata
(ad esempio un circuito a quattro livelli è equivalente a due circuiti
a due livelli in cascata), il risultato che si ottiene è grosso
modo uguale, dal punto di vista della velocità e quindi non
giustifica l’aumento di complessità necessario per realizzare
logiche non binarie.