In inglese si utilizza ELI5 oppure in questo caso ELI9, dove ELI sta per “Explain Like I’m”, quindi “Spiegamelo come se avessi 5 anni” per ELI5 o oggi come se ne avessimo 9.

Una semplice spiegazione del Modello Computazionale Qubic, scritta a seguito di discussioni tra Andrew Brough, Jake Cahill, Sabri Goldberg, Sergey Ivancheglo, Igor Nielsen, Navin Ramachandran e David Sønstebø.


In questo post, vedremo come funzionano i computer ad un livello base, e come stiamo considerando un approccio leggermente diverso in Qubic. Chiamiamo questo approccio il Qubic Computation Model (QCM).

Perché stiamo costruendo un nuovo modello computazionale?

IOTA mira a consentire un’economia machine-to-machine, per i dispositivi sull’Internet degli Oggetti (Internet of Things). Questi dispositivi devono funzionare con basse quantità di potenza ed in ambienti ostili.

L’elettronica tradizionale utilizza meccanismi complessi che consumano molta energia e sono più sensibili (n.d.t. articolo in inglese) a questi ambienti. Con il QCM puntiamo a creare un modello più efficiente dal punto di vista energetico e resiliente per tali dispositivi.

Il QCM trae le sue origini dal progetto Jinn Labs (inizio 2013), che esamina nuovi approcci hardware per il Fog/Edge Computing e la Distributed Artificial Intelligence. Da allora, l’intera industria dei semiconduttori ha riconosciuto questa nuova filosofia di “More-Than-Moore(n.d.t. articolo in inglese): il futuro del calcolo richiede approcci innovativi, piuttosto che affidarsi alla legge di Moore per i continui miglioramenti della potenza di calcolo.

L’iniziativa QCM occupa un posto speciale nella storia di IOTA. Ha delineato la visione di un Ecosistema di Macchine organiche sposato con la tecnologia Distributed Ledger, dalla quale è nato IOTA.

Cos’è un modello computazionale?

Un modello computazionale descrive come funziona un computer.

Un computer prende alcuni dati, ci lavora su di esso e restituisce un risultato. Questo processo è chiamato coputazione, ed è al centro di tutto ciò che fanno i computer. È il modo in cui i computer calcolano la somma “1 + 1 = 2”. È il modo in cui i computer stampano una lettera sullo schermo quando si preme un tasto su una tastiera. È il modo in cui i computer fanno qualsiasi cosa.

Il percorso che i dati prendono dall’input al risultato, attraverso un calcolo, è chiamato flusso. Quando parliamo di modelli di calcolo, è questo flusso che ci interessa. I modelli di calcolo ci permettono di visualizzare il flusso di dati, per trovare il modo migliore per un computer per raggiungere un risultato. Ad esempio, il modello nel video qui sotto permette di inserire diverse monete e guardarle scorrere attraverso i canali fino a quando sono messe in ordine.

In quasi tutti i computer e i dispositivi digitali, i modelli di calcolo tradizionali richiedono meccanismi complessi per gestire il flusso di dati. Il QCM può tuttavia gestire il flusso di dati in modi molto più semplici ed economici.

Si prega di notare che i computer tradizionali funzionano con i dati binari – tutti i dati in binario sono rappresentati come 0 o 1 – questi numeri sono chiamati bit. QCM funziona con dati trinari – qui i dati sono rappresentati come -1, 0 o +1 – questi numeri sono chiamati trits.

Ora, inizieremo dalle basi, per esplorare come funziona il QCM e di cosa è composto. Poi, spiegheremo come i flussi di dati trinari sono più efficienti di quelli binari.


Costruire un QCM semplice

Per illustrare come funziona il QCM, diamo un calcolo di base: Come si controlla se due diversi ingressi sono uguali?

Per esempio, se un ingresso è 0 e anche l’altro ingresso è 0, possiamo concludere che sono uguali.

Per mostrare quanto sia semplice costruire il Modello Computazionale Qubic per questa situazione, dipingiamo un quadro che la maggior parte di noi conosce bene: Una spiaggia di sabbia. Ora immaginate questa spiaggia con:

  • Canali nella sabbia, che rappresentano un circuito elettrico
  • Ingressi dei canali, in cui possiamo versare l’acqua – questo rappresenta i dati
  • Dighe di piccole dimensioni, che rappresentano i calcoli (rappresentati dalle forme delle dighe nella figura sottostante)

Per confrontare due ingressi (ciano ed arancione), una bambina (chiamiamola Alice) versa acqua in un ingresso ciano ed uno arancione. Entrambi gli ingressi possono rappresentare uno dei tre valori: -1, 0 e +1. Ricordate che questi valori sono chiamati trits.

Ora, un canale d’acqua non è sufficiente per superare la diga. Vediamo quindi 2 casi diversi.

Per prima cosa, immaginate che Alice versi acqua nel trit 0 degli ingressi ciano ed arancione. Se seguite i canali da questi ingressi, vedrete che entrambi i canali portano alla stessa diga. Se entrambi i canali portano alla stessa diga, allora il livello di acqua si alza a sufficienza per superare la diga. Quindi, possiamo dire che quando l’acqua supera la diga, entrambi i valori di ingresso erano gli stessi (0 e 0 in questo caso).

Trit di valore uguale

Ora vediamo cosa succede quando Alice versa l’acqua nel trit -1 dell’input ciano e nel trit 0 dell’input arancione. I canali da questi input portano a diverse dighe. Se solo un canale conduce ad una diga, manca acqua per superare la diga. Quindi, possiamo dire che quando l’acqua non supera una diga, entrambi i valori di input erano differenti (-1 e 0 in questo caso)

Trit di valori differente

Questo flusso rappresenta un calcolo di base. L’acqua supera la diga è il risultato del calcolo.

Finché Alice continua a versare acqua negli stessi input, il risultato rimane lo stesso. Ad esempio, se i due valori di input sono uguali, l’acqua continua superare la diga ed Alice vede il risultato. Per continuare a confrontare i diversi valori, Alice deve fermare il flusso d’acqua, andare a riempire i secchi in mare, e poi versare l’acqua nei nuovi input.

La fusione

Sulla nostra spiaggia, le dighe giocano un ruolo vitale. Aiutano a decidere se due trits sono uguali, permettendo all’acqua di superarle solo se sono uguali. Quando l’acqua supera le dighe, finisce nel punto in cui tutti e tre i canali si incontrano. Questo punto si chiama fusione.

È compito della fusione mettere a disposizione il risultato a qualcos’altro, in modo che si riutilizzare. Ad esempio, si può dire “se questi trits sono uguali, allora andate avanti con la fase successiva”.

Per aiutarvi a vedere come funziona questo sistema, ecco un cheat sheet chiamato look-up table (LUT), che descrive cosa succede all’acqua, a seconda degli ingressi utilizzati.

Diamo un’occhiata a questa LUT in azione…..

La fusione

Nota: Abbiamo il controllo su questa LUT. Se si desidera modificare l’output è possibile aggiornare la LUT. In questa forma corrente, entrambi gli input devono essere uguali perché l’acqua superi una diga. Ma, cosa succede se si desidera che entrambi gli input siano differenti affinché l’acqua superi la diga? Beh, avremmo bisogno di estendere il nostro esempio, e ne parleremo più avanti in questo articolo. Ma prima esaminiamo alcuni concetti.


Perché QCM è differente?

In primo luogo, l’aspetto più importante. Il fatto che possiamo costruire istanze QCM su una spiaggia dimostra quanto sia semplice. Non sono necessari componenti aggiuntivi.

Nei modelli di calcolo tradizionali, avremmo bisogno di apparecchiature più complesse per mantenere l’acqua in movimento lungo i canali e per eliminare i rischi. Questa attrezzatura sarebbe più soggetta a guasti e consumerebbe più energia.

“Nei modelli di calcolo tradizionali, avremmo bisogno di apparecchiature più complesse per mantenere l’acqua in movimento lungo i canali e per eliminare i rischi. Questa attrezzatura sarebbe più soggetta a guasti e consumerebbe più energia”.


Pertanto, questa semplicità offre al QCM i suoi vantaggi in termini di efficienza energetica e resilienza (ad esempio in ambienti fisici ostili, dove gli elementi complessi sono più soggetti a guasti). Ma questo approccio ha anche il potenziale per superare molti dei principali problemi attuali nella produzione di chip (distorsione del clock, silicio scuro, diafonia, rischi, variazioni PVT e sensibilità alle radiazioni), anche se questo non rientra nell’ambito di applicazione di un articolo ELI9.

Il Ramo ed il Supervisore

Sulla nostra spiaggia, le uniche parti di cui abbiamo bisogno per fare un calcolo sono i canali, le micro dighe ed Alice. I canali e le dighe nel loro insieme sono chiamate ramo ed Alice è il suo supervisore.

Il nostro ramo fa un solo tipo di calcolo, che controlla due trits per l’uguaglianza. Ma avremmo potuto rendere il nostro ramo più complesso ed ampliarlo, per esempio per fare un ramo che controlla se anche i trits sono disuguali.

Estendere il ramo

In questo esempio abbiamo esteso il nostro ramo, quindi se i trits sono disuguali, la fusione riceve un risultato di -1. Se i trits sono uguali, la fusione riceve un risultato di +1. Segui le righe del diagramma sottostante per controllare personalmente.

Ora, ricordiamo che è stato detto che si aggiornare la LUT? Possiamo invertire l’output di questa nuova LUT in modo tale che:

  • Se i trits sono uguali, la fusione riceve un risultato di -1
  • Se i trits sono disuguali, la fusione riceve un risultato di +1

Questi risultati possono essere utilizzati nella fase successiva.

Bisatbili di memoria

Cosa succede se Alice avesse bisogno di una pausa e non volesse dimenticare il suo risultato?

È ora di pranzo, ed Alice vuole andare a sedersi con la sua famiglia. Ma non vuole dimenticare che i suoi ultimi due trits erano uguali, né vuole che la fusione smetta di trasmettere il suo risultato. Così, decide di usare il suo frigo da spiaggia.

Ora che Alice ha una fonte d’acqua, ha bisogno di un modo per indirizzarla verso la fusione. Per fare questo, lei scava un canale diretto dal suo frio da spiaggia alla fusione.

Insieme, il frigo d’acqua ed il canale che lo collega alla fusione sono chiamati bistabili di memoria (memory latch). Un bistabile di memoria aiuta Alice non solo a conservare il suo risultato, ma le risparmia la fatica di versare continuamente acqua per permettere alla fusione di continuiare a passare il risultato al “passo successivo”.


Il ruolo di Alice

Per tenere le cose semplici, torniamo al ramo originale che controlla solo per trits uguali.

Alice versa l’acqua nel ramo in due ingressi, che scorrono in una direzione, lungo il ramo e verso la fusione. Questo ramo produce un singolo trit (+1 per uguale), che è il risultato del nostro calcolo.

Nel QCM, Alice è chiamata Supervisore. Alice è la chiave della semplicità del QCM. Alice (il Supervisore del ramo) fa il lavoro pesante mentre il ramo stesso può essere mantenuto molto semplice, rendendolo resistente a fattori esterni. Infatti alcuni rami non hanno bisogno di un proprio Supervisore, e possono utilizzare gli output di altri rami per regolare il loro flusso.

Alice è la chiave della semplicità del QCM. Alice (il Supervisore del ramo) fa il lavoro pesante mentre il ramo stesso può essere mantenuto molto semplice, rendendolo resistente a fattori esterni.

Ambiente, entità ed effetti

In un altro post più tecnico, descriviamo l’idea di Ambiente, Entità ed Effetti (AEE).

Il nostro ramo è un esempio di entità. E’ compito dell’entità fare un calcolo con alcuni dati di input. Questi dati di input sono forniti all’entità da Alice, il nostro Supervisore.

Alice prende i dati da un altro ambiente quando qualcosa in quell’ambiente cambia. Questo cambiamento è chiamato effetto. Un esempio di un ambiente potrebbe essere qualsiasi altro ramo ed il cambiamento (effetto) potrebbe essere l’acqua che scorre verso un’uscita.

Questo processo è chiamato onda, per cui il Supervisore prende i dati da un ambiente e li dà al nostro ramo come input, permettendogli di fluirne attraverso e terminare in un risultato.

Come accennato in precedenza, non tutti i rami del QCM hanno bisogno del proprio Supervisore. Ogni ramo può ricevere dati da un supervisore di un altro ramo.

Mantenendo semplice il flusso di dati, il QCM è più economico e semplice da implementare rispetto ai modelli computazionali tradizionali.


Il potere del tre

Abbiamo detto che il QCM usa il trinario. Questo perché il trinario è più efficiente del binario. Ora che abbiamo costruito il nostro primo ramo nella sabbia, possiamo spiegare perché è più efficiente.

Sulla nostra spiaggia, Alice ha 2 ingressi, ciascuno con 3 canali (totale = 6 canali), e chiaramente occupano spazio. Per essere più efficiente, l’obiettivo di Alice è quello di utilizzare il minor spazio sulla spiaggia per fare un numero massimo di calcoli. Lo spazio sulla spiaggia non è economico!

Ogni ingresso nel nostro ramo accetta un trit alla volta. Così, Alice può usare quei sei canali per fare calcoli su qualsiasi numero a due trit (uno per ogni ingresso).

Come sarebbe il nostro modello se usassimo lo stesso numero (6) di canali su una spiaggia che usava il binario (0 e 1) invece del trinario (-1, 0 e +1)? Bene, Alice avrebbe bisogno di 2 canali per ingresso (ogni bit ha due valori possibili) e quindi potremmo avere 3 ingressi (2 canali x 3 ingressi = 6). Pertanto, potrebbe usare tre ingressi con questi sei canali, per fare calcoli su qualsiasi numero a tre bit.

Questo può far sembrare che il binario sia più efficiente perché abbiamo un numero a tre bit invece di un numero a due trit nello stesso spazio, ma diamo un’occhiata più da vicino.

In trinario, un trit può avere uno dei tre valori possibili: -1, 0, o +1. Sulla nostra spiaggia, Alice può inserire due trits. Questo si traduce in 3² (=3×3) combinazioni possibili, il che le dà 9 valori possibili. Si noti che questo corrisponde alle 9 combinazioni possibili sulla LUT che abbiamo descritto in precedenza. Così, Alice può utilizzare i 6 canali per elaborare 9 valori a partire da un numero a due trit.

In binario, un bit può avere uno dei due valori possibili: 0 o 1. Sulla nostra spiaggia binaria, Alice può inserire tre bit. Questo si traduce in 2³ (=2x2x2) possibili combinazioni, il che le dà 8 valori possibili. Così, Alice può usare i 6 canali per elaborare 8 valori da un numero a tre bit.


Utilizzando il trinario invece del binario, Alice può utilizzare lo stesso spazio e gli stessi sei canali per elaborare numeri che hanno un valore massimo di 9 invece di 8. Questo risparmio aiuta Alice a fare il maggior numero di calcoli nel minor spazio possibile.

Anche se un miglioramento di 1/8 (9 valori invece di 8) non sembra significativo, rende i nostri calcoli molto più efficienti. E questa efficienza è più evidente quando iniziamo a fare calcoli complessi come la moltiplicazione o anche l’IA.

Nota: 4-rio non è più efficiente di 3-ry (trinario). Se prendessimo 12 canali otterremmo tre numeri 4-ri che danno 64 valori (4³) o quattro numeri 3-ri che danno 81 valori (3⁴). Ancora una volta vediamo che trinario è più efficiente. Infatti, qualsiasi altro N-rio sarebbe anche peggiore di 4-rio.


Riassunto

Abbiamo mostrato sopra come possiamo mantenere semplici i flussi di dati con il QCM. Questa è la chiave per mantenere la produzione di chip semplice ed economica, e significa che i circuiti stampati saranno in grado di resistere ad ambienti più ostili.

Abbiamo anche dimostrato come l’uso del trinario può migliorare ulteriormente l’efficienza del sistema.

Se applicato su larga scala, questo cambiamento ha il potenziale per avere un impatto significativo sul mondo dell’informatica.

Si ringrazia Alon Elmaliah.


Il testo originale in lingua inglese si trova qui: https://blog.iota.org/eli9-the-qubic-computation-model-623417f94777


Per ulteriori informazioni in italiano o tedesco trovate i miei contatti a questa pagina.
Se avete trovato utile la mia libera traduzione, accetto volentieri delle donazioni 😉

IOTA:
QOQJDKYIZYKWASNNILZHDCTWDM9RZXZV9DUJFDRFWKRYPRMTYPEXDIVMHVRCNXRSBIJCJYMJ9EZ9USHHWKEVEOSOZB
BTC:
1BFgqtMC2nfRxPRge5Db3gkYK7kDwWRF79

Non garantisco nulla e mi libero da ogni responsabilità.