4
Sommario
Lo scopo di questa tesi è l’indagine riguardo alla convenienza o meno nell’utilizzare sistemi numerici diversi
dal binario a parità di tecnologie e materiali utilizzati. Ci si domanda se una eventuale applicazione potrebbe
soddisfare la crescente domanda di potenza di calcolo, utile in applicazioni con i processori ad alta frequenza,
in computazione parallela e nelle reti neurali. Si analizzeranno le caratteristiche più comuni ed utilizzate, tra
cui i numeri decimali, il consumo energetico ed altre. Si focalizzerà molto sul il sistema ternario per le sue
migliori qualità globali comparate con le altre basi numeriche. All’inizio è stata intrapresa una ricerca
sperimentale che ha coinvolto vari campi di studio come la matematica, l’elettronica, l’informatica ed in parte
la fisica. Il percorso ha avuto inizio dal tirocinio interno universitario della durata di circa 9 mesi. Nelle ricerche
c’è stato il supporto di computers, breadboards e softwares taluni programmati ad hoc assieme a calcoli,
deduzioni di formule ed esperimenti. Questa tesi raccoglie i risultati del suddetto tirocinio. Benché io stesso
fossi inizialmente convinto della superiorità del sistema ternario rispetto al binario, i dati e gli esiti delle mie
ricerche mi hanno gradualmente portato nell’idea opposta. Questa tesi non può escludere che, variando le
condizioni hardware di lavoro come la frequenza e l’utilizzo di materiali più performanti, si possano
raggiungere risultati differenti. Il documento non tratterà le suddette variazioni per via della enorme
complessità nel tenerle in conto, oltre la difficile comparazione di caratteristiche in condizioni tra loro diverse.
1 Introduzione
Ai giorni nostri, nel XXI secolo, le scienze e le tecnologie hanno subìto grossi cambiamenti e sviluppi. Questo
progresso, se confrontato con i decenni ed i secoli precedenti, è stato quasi esponenziale. Le motivazioni si
trovano nel ruolo sempre più centrale che ora ricopre l’informatica, ovvero la scienza dell’elaborazione e della
distribuzione delle informazioni. Ormai essa è presente in gran parte delle attività umane, che siano esse
lavorative e professionali, accademiche e di ricerca, ludiche o militari. Ora è estremamente difficile pensare
alla nostra società contemporanea che ne sia priva.
1.1 Storia dell’informatica
L’informatica ha una lunga storia che intreccia le scienze matematiche, l’elettrotecnica ed in seguito
l’elettronica; La necessità umana di contare ed enumerare, sin da tempi immemorabili, fu sempre uno dei suoi
motori portanti. Questo bisogno venne soddisfatto inizialmente con metodi ed oggetti rudimentali ed in seguito
con strumenti migliori come i differenti abachi presenti nelle antiche società. L’evoluzione umana portò alla
comparsa delle prime macchine calcolatrici a base meccanica come la famosa “macchina di Anticitera” e le
varie macchine differenziali cinesi. Durante il medioevo e l’età moderna ci furono ottime scoperte in ambito
algebrico e matematico le quali getteranno le future basi per il calcolo infinitesimale e l’algebra di George
Boole [1]. Parallelamente si scoprì, oltre alle prime proprietà della materia, l’elettricità e gli effetti magnetici
di alcuni oggetti. L’elettrone, il campo elettrico e dunque l’energia elettrica saranno una delle più grandi
innovazioni dell’umanità, con un impatto comparabile con la scoperta del fuoco e costruzione della ruota. Con
le fabbricazioni delle prime dinamo, dei primi motori ed utilizzatori e poi delle linee e gli impianti elettrici
nacque l’elettrotecnica. In seguito ad essa, la costruzione dei circuiti aventi elementi resistivi, induttivi e
capacitivi, relè e transistori condurrà allo sviluppo della elettronica. Agli inizi del 1900 gli ingegneri della NEC
Corporation, tra cui A. Nakajima, furono in grado di creare circuiti elettronici che risolvessero determinati
problemi o funzioni, senza però avere il rigore teorico alla base del loro funzionamento. Vedendo i lavori di
Nakajima, fu Claude E. Shannon ad unire la logica e l’algebra di Boole alla elettronica con il necessario rigore
teorico e le dimostrazioni [2]. Da qui la moderna teoria dell’informazione prese piede; le precedenti calcolatrici
meccaniche od elettro-meccaniche preesistenti, tra cui le famose “macchina differenziale” e “macchina
analitica” di Charles Babbage, vennero gradualmente sostituite dai circuiti elettronici specializzati nel calcolo,
più prestanti dei loro predecessori non elettronici. Grazie al matematico e scienziato Alan Turing e alla sua
“macchina di Turing” è stato possibile dare una forma più definita ai concetti di calcolabilità e trattabilità [3].
Turing riuscì a dimostrare che la quasi totalità dei processi computazionali, matematici e logici atti alla
risoluzione di un problema o al raggiungimento di uno scopo è assimilabile ad una o più funzioni in serie,
chiamati algoritmo, eseguite dalla sua macchina indipendentemente dalla sua complessità, dalle risorse e dal
tempo necessario al suo completamento [4]. In fine Shannon tratterà le implicanze teoriche riguardo alla
trasmissione delle informazioni, originandone lo studio della comunicazione [5].
5
1.2 Lo status attuale
Le passate innovazioni ed invenzioni ci hanno lasciato una grande eredità scientifica. L’elettronica, la quale è
l’impiego di elettroni con il loro campo elettrico per fini diversi dal trasferimento di potenza od energia, è stata
fortemente digitalizzata; Per digitalizzazione si intende generalmente la discretizzazione dei valori, solitamente
la tensione, affinché essi possano essere trattati come numeri, stati o simboli. Grazie a questo, è possibile
astrarre i circuiti che compongono le reti logiche. L’informatica ha subìto similmente dei profondi cambiamenti
per merito dell’astrazione, partendo da una programmazione in puro linguaggio macchina ad una orientata ad
oggetti, sempre di più verso una programmazione “user friendly” ovvero più vicina alla logica umana. Queste
e tante altre trasformazioni, sono state trainate dalle principali moderne esigenze: maggior potenza di calcolo
e velocità, maggior precisione e maggiore versatilità. Attualmente l’informatica e l’elettronica si sono
amalgamate con molte altre materie generando: la meccatronica, la robotica e la cibernetica, la bioinformatica,
la statistica computazionale, eccetera.
Degni di nota sono gli studi sull’apprendimento automatico e gli sforzi riguardo la realizzazione di intelligenze
artificiali; Trovando ispirazione alla controparte biologica, le reti neurali sono dei modelli computazionali
innovativi sia hardware che software. Essi permettono l’elaborazione multipla parallela di un set di
informazioni o dati in ingresso. Attraverso una serie di funzioni logico-matematiche è possibile avere in uscita
una o più informazioni relative all’insieme dei dati originali processati, che non sarebbero possibili da ottenere
con i normali calcoli manuali o seriali per via della onerosità computazionale. I pregi nell’uso di queste reti
sono: risultati di output con valore globale statistico, approssimato o di regressione; buona immunità al rumore
o all’errore poiché si verificherebbe di più un rallentamento e raramente un blocco totale della rete; possibilità
di trattare grandi moli di dati simultaneamente; possibilità di estrarre caratteristiche e di classificare; possibilità
di apprendimento per l’individuazione o il riconoscimento di patterns e molto altro ancora. Tra i difetti invece:
la eventuale necessità di allenare la rete neurale; l’inesistenza di modelli rigorosi che definiscano il miglior
approccio al training, ovvero non è possibile sapere a priori se l’allenamento che si sta impartendo è ottimale
o no ma soltanto dopo di esso sarà possibile verificarlo; la difficoltà nel tenere traccia dell’evoluzione e della
trasformazione dei dati, dall’inizio alla fine, per poter analizzare le cause che hanno generato un determinato
output. Il riconoscimento dei caratteri OCR, la classificazione delle mappe satellitari ed il data mining sono
esempi comuni di impiego del potenziale delle reti neurali [6].
Attualmente tutte queste applicazioni informatiche sopracitate hanno la stessa cosa in comune: la base
numerica binaria. Per sistema binario è inteso l’associazione di due stati mutualmente esclusivi ad un impulso
elettrico discreto, che sia esso in ingresso od in uscita da una porta logica. I due stati ammessi sono: lo “0” per
l’informatica, detto anche “falso” per l’algebra booleana, detto “basso” per l’elettronica; lo stato “1” per
l’informatica, detto “vero” per l’algebra booleana, detto “alto” per l’elettronica [1][2][7]. Ormai il sistema
binario è consolidato e largamente diffuso. Diverso è invece la situazione corrente di tutto ciò che non è binario,
parlando dei sistemi digitali, escludendo dunque i sistemi analogici caratterizzati da valori e flussi continui.
Nonostante in passato furono creati dei computers sperimentali ternari, tra cui la serie “Setun”, questi non
ebbero lo stesso seguito della loro controparte in base 2. Escludendo poche fabbricazioni amatoriali e di ricerca,
non sono disponibili sul mercato questo genere di computers. Simile sorte per i sistemi maggiori quali il
quaternario ed il quinario; ci furono soltanto passate produzioni di alcuni computer quando vi erano problemi
di spazio e costo nel memorizzare molti dati. Le menzionate problematiche di archiviazione sono ormai
superate da anni. Quest’ultimi computers, ormai inutili e superati dai loro simili in binario, sono scomparsi
dalla scena del progresso tecnologico.
1.3 Ricerche future
Come evidenziato nella storia dell’informatica, l’umanità continua ad aver bisogno di velocità e precisione
dei calcoli e molto probabilmente questo proseguirà ancora per lungo tempo in futuro. Due grossi rami
dell’informatica di notevole interesse, che terranno occupati molti ricercatori e scienziati saranno l’informatica
quantistica e la già menzionata intelligenza artificiale. La prima è lo sfruttamento delle potenzialità della
meccanica quantistica al servizio dell’informatica [8]; Un tale esempio di potenza è l’algoritmo di
fattorizzazione di Shor, il quale rendere il problema della fattorizzazione di un qualunque numero da
complessità esponenziale a polinomiale su un computer quantistico. La sua realizzazione fisica implicherà
profondi cambiamenti ai nostri sistemi di sicurezza, tra cui la sicurezza delle chiavi RSA e le transazioni
bancarie.
6
2 Studio dei sistemi numerici
Verranno trattati alcuni sistemi numerici diversi dal binario. Verranno esclusi i sistemi a base 0, il quale non
potrebbe elaborare o trasmettere informazione, e quello a base 1, il quale potrebbe trasmettere solo un flusso
di dati sempre uguale ma con auto-informazione ed entropia nulla secondo Shannon [5]. Data l’infinità delle
possibili basi inizialmente verranno trattate le prime, dalla ternaria alla quinaria, e tramite esse si valuterà se
c’è convenienza nello studiarne le altre. Di ogni base numerica si analizzeranno gli aspetti matematici, logici,
ed elettronici, quest’ultimi tramite simulatori software tra cui “Multisim 14,3” della National Instruments ed
il “Falstad circuit simulator” di Paul Falstad. In fine, dopo una analisi fisica ed informatica, le caratteristiche
studiate verranno comparate con il sistema binario per vedere se è possibile superarle o per lo meno avvicinarsi
alle sue prestazioni.
2.1 Il sistema ternario
Il sistema numerico a base ternaria è il sistema discreto più vicino alla base binaria, escludendo quello a base
unaria. È posizionale come il binario e quello decimale, ovvero la posizione della cifra influisce sul valore che
rappresenta. Ogni cifra, chiamata “trit”, può assumere massimo 3 valori distinti mutualmente esclusivi ed i
valori dipendono dal quale scegliamo delle due sotto tipologie in cui divide: ternario non bilanciato e ternario
bilanciato. La prima sotto tipologia ammette i seguenti tre valori: “0” per l’informatica, detto anche “falso”
per la logica, detto “basso” per l’elettronica; “1” per l’informatica, detto “incerto” o “sconosciuto” per la logica,
mentre per l’elettronica può assumere diversi nomi a seconda di come viene implementato come per esempio
“alta impedenza” oppure “intermedio” ed altri; “2” per l’informatica, detto anche “vero” per la logica, detto
“alto” per l’elettronica. La sotto tipologia bilanciata invece la si trova sottraendo 1 alle cifre non bilanciate: il
“-1” per l’informatica, detto anche “falso” per la logica, detto “basso” per l’elettronica; “0” per l’informatica,
detto anche “incerto” o “sconosciuto” per la logica, e similmente a prima per l’elettronica può avere vari nomi
a seconda di come viene implementato; “1” oppure “+1” per esplicitare il segno positivo nell’informatica,
detto anche “vero” per la logica, detto anche “alto” per l’elettronica. Benché il sistema bilanciato ed il non
differiscano tra loro per mere convenzioni arbitrarie, ed anzi è possibile renderli equivalenti tramite opportune
trasformazioni, gli approcci adottati su di essi mostrano in alcuni casi dei relativi vantaggi ed utilità.
Figura 1 – i nomi comuni ed i valori che può assumere un trit in entrambe le versioni ternarie.
2.1.1 Il non bilanciato: matematica
La rappresentazione del sottotipo in questione, e più genericamente del sistema ternario, avviene tramite uno
o più trit allineati eventualmente raggruppati in “trytes” similmente come nel caso binario con i “bit” ed i
“bytes”. Un trit non è altro che il coefficiente da dare alla potenza in base 3 avente l’esponente che dipende
dalla posizione del trit scelto nel proprio gruppo. Nel caso di numeri interi, per un generico tryte si considera
il trit meno significativo quello più a destra e viceversa il più significativo a sinistra. Al trit meno significativo
è sempre associata la base 3 con esponente 0 e, partendo da esso, si incrementa di +1 ogni esponente associato
alle potenze del 3 di quel particolare trit verso sinistra. I coefficienti delle potenze possono assumere valori da
0 a 2 e di fatto il coefficiente 0 annulla tutta la potenza a cui si riferisce. Siccome non sono presenti coefficienti
negativi, diversamente dal sottotipo bilanciato, i trit sono sempre di valore uguale o maggiore di zero [9]. Per
poter rappresentare i numeri negativi sono necessari degli accorgimenti o degli adattamenti speciali; come il
caso del complemento a due binario una soluzione possibile è impegnare il trit più significativo col ruolo di
segno. Questo però porta ad inefficienza poiché il trit in questione può assumere 3 valori mentre per il segno
ne bastano 2. Il tentare di dare un ruolo più efficiente per poter recuperare questa inefficienza porta ad
aumentare la complessità dei processi, e questo globalmente non è conveniente.