Il futuro della computazione

Scenari dal fascino certamente suggestivo si schiudono di fronte all'evoluzione del computer e degli odierni processori. Per chiunque sia provvisto di un minimo di conoscenze nel campo, è piuttosto facile prevedere le linee guida della rivoluzione che di qui a qualche anno sconvolgerà il mondo dell'elettronica e dell'informatica. Per quarant'anni lo sviluppo della tecnologia è stato dominato dalla legge di Moore: le capacità di integrazione della tecnologia raddoppiano ogni diciotto mesi, il che significa in parole povere che se un chip progettato nella tecnologia attuale occupa una certa superficie su silicio, fra un anno e mezzo ne occuperà la metà per fare esattamente le stesse cose, con un conseguente guadagno nelle prestazioni totali. Questo principio euristico ha funzionato fino a tempi relativamente recenti e, con una certa approssimazione, potremmo dire che funziona tuttora. Il guaio è che, come per tutte le leggi fondate sull'esperienza e non giustificate da un apparato teorico, la celebre affermazione del magnate della Intel è invariabilmente destinata alla smentita.

Facendo un po' di attenzione alle recenti evoluzioni del mercato non è difficile notare come la tecnologia abbia subito una sorta di accelerazione, negli ultimi tempi: il carattere virtuale di questo fenomeno è dovuto fondamentalmente all'allargamento della quota di mercato di applicazioni di nicchia, prodotti che fino a pochi anni fa sarebbero rimasti relegati nella sfera marginale dell'avanguardia sperimentale e che invece oggi – complice l'esasperazione consumistica determinata dal livellamento internazionale dello stile di vita, l'american way of life divenuto a tutti gli effetti global way of life, almeno per i ricchi e decadenti scenari di questo Occidente instabile e traballante – rivendicano un ruolo sempre più importante nel nostro impagabile desiderio di modernità. Capita così che gli stessi produttori di tecnologia si siano ritrovati alquanto spiazzati da questa inattesa esplosione della richiesta: per adeguarsi alla domanda le imprese produttrici di hardware hanno quindi spinto a tavoletta l'acceleratore dell'innovazione, con la conseguenza che il limite critico degli eventi è venuto a spostarsi dal 2013 a un molto più vicino, e inquietante, 2008. Secondo le più ottimistiche previsioni degli analisti è infatti questo l'orizzonte che si prospetta oggi al proseguimento di validità della legge di Moore. Cosa succederà raggiunto l'anno fatidico?

Le possibili soluzioni alla congiuntura sono molteplici. Osserviamo le più fondate con il consueto cipiglio critico delle cassandre cibernetiche.

1. La transizione

Senza ombra di dubbio, raggiunto l'esaurimento dei margini di miglioramento della tecnologia non si avrà immediatamente a disposizione il sacro graal pronto ad offrire la soluzione finale. Entreremo dunque in una fase di transizione nel corso della quale si cercherà di sopperire alla meno peggio alla mancanza materiale di possibilità di innovazione. Probabilmente il ruolo della primadonna di questi anni sarà rivestito dal software: laddove l'impossibilità fisica impedirà sostanziali miglioramenti dell'hardware, il software offrirà ragionevoli margini di ottimizzazione alla tecnologia corrente. Questa strada viene ormai inseguita da anni dalla stessa Intel, che in collaborazione con la HP sta tentando di giungere a risultati concreti nel campo delle VLIW (processori basati su codice parallelo) con l'immissione sul mercato dell'architettura Merced, che dovrebbe conservare la compatibilità con lo standard dettato dall'x86: l'ingresso di questi processori sul mercato, tuttavia, viene rinviato di anno in anno, e oltre a una incontestabile difficoltà realizzativa una causa di ciò potrebbe essere ricercata in una precisa, meditata strategia. La complessità dei programmi aumenterà, tenendo fede a quello che nei circoli dedicati è noto come legge di equivalenza del software e dei gas: il software è equivalente ad un gas perfetto, tende ad occupare tutto lo spazio a sua disposizione. Ovviamente anche questo principio verrà spinto ai limiti estremi del suo campo di validità, e come conseguenza di ciò potremmo ritrovarci da un giorno all'altro con la quintessenza del nostro domani consegnataci magnanimamente dal destino, in un sublime atto di serendipità: l'Intelligenza Artificiale entrerà a far parte della nostra realtà. Ma questa è un'altra storia. Per allora è ragionevole supporre che la tecnologia sarà riuscita però a trovare un punto di fuga dal limbo della stasi elettronica.

2. Computazione quantistica

L'uscita dall'impasse sarà forse affidata alle magie del mondo quantistico. I vantaggi offerti dalle tecniche di computazione basate sugli stati entangled sono stati svelati da Shor nel suo celeberrimo algoritmo di fattorizzazione in numeri primi: per quanto gli esordi siano stati promettenti, ci si è tuttavia presto scontrati con la difficoltà pratica di implementazione di sistemi basati sull'estrazione di informazione dal mondo delle particelle elementari. Criptografia ed elaborazione potrebbero essere rivoluzionati da ulteriori scoperte in questa direzione. La difficoltà principale risiederà nella messa a punto di opportuni sistemi interpretativi volti ad estrarre informazione a noi comprensibile da schemi estranei alla nostra consueta logica di pensiero. L'interfaccia avrà quindi un ruolo centrale, in questo spettacolo. Almeno quanto il supporto: difficile pensare che nei prossimi vent'anni si perverrà ad un computer quantistico di dimensioni inferiori a quelle di una stanza. Il privilegio concesso da questa tecnologia, però, sarà unico e irripetibile: per sua natura, un sistema di elaborazione basato su tecniche di computazione quantistica sarà estraneo ad errori.

Addentriamoci un po' più nello specifico.

2.1 Un po' di storia

La computazione è essenzialmente un processo fisico che viene eseguito su una macchina il cui funzionamento risponde a certe leggi fisiche. La teoria classica della computazione si basa su un modello astratto di macchina universale (la Macchina di Turing Universale) che cattura completamente il significato dell'esecuzione di un compito algoritmico su un computer. La tacita assunzione è che una macchina di Turing idealizza un dispositivo meccanico di computazione (con una memoria potenziale infinita) che obbedisce alle leggi della fisica classica.

Essendo in ultima istanza le leggi della fisica delle leggi meccanico-quantistiche, le uniche in grado di giustificare i fenomeni fisici che avvengono a livello microscopico, questi fenomeni saranno imprescindibili nella costruzione di computer elettronici in un futuro ormai prossimo. Attualmente, infatti, effetti quantistici cominciano ad interferire nel funzionamento dei dispositivi elettronici man mano che le loro dimensioni (la lunghezza di canale dei transistor, dell'ordine di grandezza ormai delle decine di nanometri) diventano più piccole.

Agli inizi degli anni Ottanta si data la possibilità di formulare un modello di computazione più generale, che tenesse conto delle leggi della meccanica quantistica. Questo modello, proposto da David Deutsch, è noto come Computer Quantistico Universale e ha portato alla concezione moderna di computazione quantistica.

2.2 Quantum bit

Il concetto fondamentale della computazione classica è il bit. La computazione quantistica si basa su un concetto analogo, il quantum bit (abbreviato in qubit), di cui diamo nel seguito una breve descrizione per sottolinearne le differenze con il bit classico. Un qubit è un oggetto matematico astratto che gode di certe proprietà. Lo stato di un bit classico viene descritto mediante i valori 0 e 1, nella familiare logica binaria. Il modo più diretto per rappresentare lo stato di un qubit è mediante un vettore unitario in uno spazio complesso a due dimensioni (il piano cartesiano, per esempio). Il qubit è quindi una combinazione lineare di due vettori di base (corrispondenti degli stati 0 e 1 di un bit classico) e il suo stato è per questo chiamato sovrapposizione (per gli anglofoni superposition). Mentre per un bit classico possiamo sempre determinare lo stato e stabilire con precisione se si tratta di 0 oppure 1, non possiamo determinare con altrettanta precisione lo stato quantistico di un qubit: la meccanica quantistica ci dice che quando misuriamo un qubit possiamo solo ottenere uno stato di base o l'altro con una certa probabilità (per l'esattezza, il quadrato delle ampiezze di probabilità, la cui somma deve essere unitaria).

Un qubit si può quindi trovare in un numero infinito di stati (un punto qualsiasi della sfera di Bloch). La sua realizzazione fisica non permette di osservare direttamente questi stati: la misurazione di un qubit darà sempre come risultato uno dei due vettori di base. La misurazione inoltre cambia lo stato del qubit, facendolo collassare dalla sua sovrapposizione allo stato specifico consistente con il risultato della misurazione. I risultati delle misurazioni dipendono però strettamente dalle proprietà specifiche dello stato su cui si sono effettuate operazioni di trasformazione, ed è in questo che risiede la potenza del calcolo quantistico.

2.3 Registri quantistici

Con due bit classici possiamo formare quattro possibili stati: 00, 01, 10 e 11. In generale, con n bit classici è possibile costruire 2n stati distinti, lo spazio degli stati ha quindi dimensione n. Ma quanti stati si possono ottenere con n qubit? Lo spazio degli stati generato da un sistema di n qubit ha dimensione 2n: ogni vettore normalizzato in questo spazio rappresenta un possibile stato computazionale, che chiameremo registro quantistico a n qubit. Questa crescita esponenziale nel numero dei qubit delle dimensioni dello spazio degli stati suggerisce la potenziale capacità di un computer quantistico di elaborare informazioni ad una velocità esponenzialmente superiore a quella di un computer classico.

Formalmente, un registro quantistico di n qubit è un elemento dello spazio di Hilber 2n-dimensionale. Un registro quantistico a due qubit, per esempio, è una sovrapposizione di quattro stati (22). Analogamente al caso di un singolo qubit, il risultato di una misurazione sarà una riduzione a un singolo stato, ottenuto con probabilità definita.

Una proprietà importante dei registri quantistici a n qubit è che non sempre è possibile decomporli negli stati dei qubit componenti. Gli stati di questo tipo sono detti entangled.

2.4 Porte logiche quantistiche a un qubit

Analogamente ai computer classici, un computer quantistico è formato da circuiti quantistici costituiti da porte logiche quantistiche elementari. Nel caso classico esiste un'unica porta logica non banale a un bit, la porta NOT, che implementa l'operazione logica di negazione definita mediante una tabella di verità in cui 1 –> 0 e 0 –> 1.

Per definire un'operazione analoga su un qubit, non possiamo limitarci a stabilire la sua azione sugli stati di base, ma dobbiamo specificare anche come deve essere trasformato un qubit che si trova in una sovrapposizione degli stati di base. Le operazioni lineari che implementano trasformazioni su qubit possono essere convenientemente rappresentate per mezzo di matrici. La matrice corrispondente al NOT quantistico è chiamata per motivi storici X e ha l'effetto di scambiare le ampiezze di probabilità associate ai vettori di base in uno stato sovrapposizione.

Nel caso quantistico, contrariamente al caso classico, abbiamo molte operazioni non banali su un singolo qubit. Oltre a X, altre due operazioni importanti sono la porta Z (che agisce solo su una componente della sovrapposizione, cambiandone il segno) e la porta di Hadamard (che è tra le più usate nei circuiti quantistici e ha l'effetto di trasformare uno stato base in una sovrapposizione che risulta essere, dopo una misurazione nella base computazionale, 0 oppure 1 con uguale probabilità.

2.5 Porte logiche quantistiche a più qubit

Le operazioni su registri quantistici di due o più qubit sono necessarie per descrivere le trasformazioni di stati composti e in particolare dei cosiddetti stati entangled. Abbiamo accennato al fatto che non sempre un registro a n qubit può essere decomposto nel prodotto tensore dei singoli qubit componenti. Di conseguenza, in questi casi non possiamo simulare un'operazione sui due qubit mediante operazioni su ciascun qubit componente.

Le più importanti porte logiche che implementano operazioni su due bit classici sono le porte AND, OR, XOR, NAND e NOR. Le porte AND e NOT, come pure la porta NAND da sola, costituiscono insiemi universali, cioè qualsiasi funzione booleana si può realizzare mediante una combinazione di queste due operazioni.

L'analogo quantistico della porta XOR è la porta CNOT (controlled-NOT) che opera su due qubits: il primo è chiamato controllo, il secondo target. Se il controllo è zero allora il target è lasciato inalterato. Se, al contrario, il controllo è uno, allora il target viene negato.

La porta CNOT e le porte a un qubit viste sopra rappresentano i prototipi di tutte le porte logiche quantistiche. Con questi semplici elementi, è possibile ottenere circuiti anche complessi come quello che permette di trasformare i quattro stati computazionali di due qubit in altrettanti stati di Bell o coppie EPR, o quello che usa questi stati per realizzare il teletrasporto di un qubit. Questi due esempi mostrano come costruire stati computazionali (i già citati stati entangled) che non hanno alcuna controparte classica e usarli per dar luogo a fenomeni paradossali secondo le leggi della fisica classica. Gli stati di Bell, in particolare, sono storicamente conosciuti anche come stati EPR dai nomi di Einstein, Podolsky e Rosen, che se ne servirono in un esperimento che nelle loro intenzioni doveva dimostrare l'incapacità della meccanica quantistica di fornire una descrizione completa della realtà. Il paradosso che veniva fuori da questo esperimento era che l'interazione tra queste coppie di stati quantistici dava luogo a un fenomeno che violava i principi fondamentali della relatività. La spiegazione classica che essi proponevano fu successivamente smentita da Bell.

2.6 Parallelismo quantistico

Forti dei concetti fin qui illustrati, possiamo adesso addentrarci in questo campo esotico della computazione, illustrando alcuni degli aspetti più sorprendenti e interessanti della computazione quantistica. Il parallelismo quantistico è una di queste proprietà: la possibilità di valutare su un computer quantistico una stessa funzione f(x) su diversi valori di x contemporaneamente. Attraverso una opportuna circuitistica di porte logiche possiamo ottenere come risultato uno stato contenente informazioni tanto sul valore f(0) quanto sul valore f(1). In questo modo valutiamo f simultaneamente su x = 0 e x = 1. Questo tipo di parallelismo è diverso da quello classico dove più circuiti vengono eseguiti simultaneamente.

Qui abbiamo un solo circuito che produce tutti i risultati che possono interessarci.

2.7 Codifica superdensa (dense coding)

È questa una proprietà che torna utile nel campo della trasmissione dell'informazione. Supponiamo che Alice voglia comunicare a Bob l'informazione contenuta in due bit classici (vale a dire un numero a scelta tra 0, 1, 2, 3) e voglia farlo trasmettendo un solo qubit. Poiché la misurazione di un qubit può dare come risultato solo un bit di informazione classica (0 o 1), questo compito sembrerebbe impossibile. In realtà il problema può essere risolto attraverso l'uso di una coppia EPR. Supponiamo che inizialmente Alice e Bob sono in possesso rispettivamente del primo e del secondo qubit di una coppia entangled. Alice applica al suo qubit una delle trasformazioni di uno speciale set di 4 operazioni, scegliendola a seconda del numero che vuole trasmettere. Come conseguenza, lo stato entangled viene trasformato.

A questo punto Alice non deve far altro che inviare il suo qubit a Bob, il quale può ora risalire ai 2 bit che Alice voleva trasmettergli semplicemente attraverso una misurazione dello stato dei due qubit in suo possesso (misurando il secondo e applicando la porta di Hadamard al primo).

2.8 Circuiti quantistici e complessità computazionale

Quelli fin qui illustrati non sono alcuni dei molteplici casi di applicazione della meccanica quantistica al campo della computazione. Il modello di computazione basato sui circuiti quantistici è stato introdotto da Deutsch nel 1989 e sviluppato ulteriormente da Yao (1993). Yao ne ha anche dimostrata l'equivalenza con un altro modello per la computazione quantistica: la Macchina di Turing Quantistica. Quest'ultima, introdotta da Benioff (1980) e successivamente sviluppata da Deutsch (1985) e Yao (1993), è descritta in modo completo e moderno nell'articolo di Bernstein e Vazirani Quantum Complexity Theory, del 1997. Questo articolo affronta il tema della complessità computazionale dimostrando per la computazione quantistica gli analoghi dei risultati della complessità computazionale classica.

Per la computazione classica la teoria della complessità fornisce una classificazione dei problemi computazionali in base alle risorse richieste alla loro risoluzione su un computer classico. Due importanti classi di complessità sono note con i nomi di P e NP. Informalmente possiamo descrivere la prima come la classe di tutti i problemi che si possono risolvere efficientemente, cioè mediante un algoritmo deterministico in tempo polinomiale nella dimensione dei dati, mentre la seconda corrisponde alla classe dei problemi per i quali non è stato trovato nessun algoritmo in grado di fornire una soluzione efficiente. Il problema di determinare se queste due classi coincidono è forse il più importante dei problemi irrisolti in informatica teorica.

Un'altra importante classe di complessità fa riferimento alla risorsa spazio ed è nota con il nome di PSPACE. Questa classe comprende tutti quei problemi che si possono risolvere efficientemente dal punto di vista dello spazio utilizzato ma non necessariamente dal punto di vista del tempo richiesto. I risultati finora ottenuti in complessità computazionale classica stabiliscono la seguente relazione gerarchica: P < NP < PSPACE Dopo l'avvento degli algoritmi randomizzati, è stata introdotta un'altra classe computazionale che comprende tutti i problemi per i quali esistono algoritmi probabilistici che li risolvono in tempo polinomiale e con probabilità di errore piccola. Questa classe è nota come BPP (Bounded Polynomial Probabilistic), e in un certo senso ha sostituito P come classe rappresentativa dei problemi effettivamente trattabili su un computer classico.

Tutte queste classi sono state definite rispetto al modello di computazione classica, ovvero la Macchina di Turing e la sua versione probabilistica.

La teoria della complessità computazionale quantistica fa riferimento al modello della Macchina di Turing Quantistica e ha stabilito finora risultati analoghi a quelli classici. In particolare, si è definita la classe BQP, che comprende tutti i problemi che possono essere risolti con probabilità di errore piccola usando un circuito quantistico polinomiale. Il risultato più importante finora stabilito consiste nelle seguenti relazioni: BPP < BQP < PSPACE Non esistono al momento risultati che dimostrano che BPP ≠ BQP, che sancirebbero la superiorità del modello quantistico rispetto a quello classico. La scoperta di alcuni algoritmi quantistici con prestazioni esponenzialmente migliori dei loro omologhi classici è però un risultato promettente in questa direzione.

3. Chaotic computer

Un potenziale analogo a quello nascosto nella computazione quantistica risiede nella progettazione di circuiti caotici. Il caos in questione è ovviamente quel concetto matematico che lega l'evoluzione di un sistema a un certo numero di parametri, secondo predefinite condizioni di partenza. Piccole variazioni nelle condizioni iniziali sortiscono esiti notevolmente diversi tra loro. La principale peculiarità di un sistema caotico è insita nella sua propensione alla riconfigurabilità, che potrebbe produrre rivoluzionarie conseguenze in termini di velocità di elaborazione e riduzione della complessità. Circuiti sperimentali sono stati realizzati da Ditto e Sinha, docenti rispettivamente all'Università della Florida e all'Istituto di Scienze Matematiche di Chennai, India, utilizzando elementi elettronici convenzionali (quali resistenze e condensatori) e unità biologiche un po' più esotiche (neuroni di sanguisughe). A testimonianza del fatto che l'integrazione corpo-macchina è sempre più vicina.

3.1 L'importanza della non-linearità nello studio dei fenomeni fisici

A dispetto del fatto che un gran numero di fenomeni comunemente osservati nei circuiti e nei sistemi per l'elaborazione dei segnali possono essere spiegati esclusivamente attraverso il ricorso a modelli non-lineari, lo studio di tali dinamiche resta un territorio largamente inesplorato nell'analisi dei sistemi. L'approccio diffuso nella formazione ingegneristica è stato per decenni quello di ricorrere alla linearizzazione come premessa indispensabile all'analisi. A causa di una filosofia tanto radicata, è fonte di grande sorpresa per molti ingegneri di lunga esperienza la constatazione dell'impossibilità di spiegare fenomeni empiricamente osservati attraverso il semplice ricorso a concetti lineari ormai consolidati.

Nella storia della scienza, fenomeni non-lineari complessi sono stati constatati nel corso di molte sperimentazioni, ma molto spesso sono stati trascurati perché i concetti necessari a spiegarli semplicemente non esistevano. È solo in tempi recenti che si è affermata una metodologia meno prevenuta e più adatta ad indagare questa estesa casistica di comportamenti naturali. Ha quindi preso piede un nuovo vocabolario, atto ad interpretare i fenomeni non-lineari in termini di attrattori, biforcazioni e caos. Persino in questo campo, comunque, il comportamento quasi-stazionario di alcuni sistemi caotici è stato definito "attrattore strano". Adesso sappiamo che tali attrattori non sono niente affatto "strani" o inusuali, ma pervadono il mondo fisico. Nell'analisi di filtri digitali, phase-locked loop e circuiti di sincronizzazione, capita piuttosto spesso di imbattersi in forme d'onda complicate, che sono caratteristiche degli attrattori strani e che spesso nel passato sono state considerate alla stregua di rumore.

In virtù della loro complessità comportamenti non-lineari esotici come questi hanno caparbiamente resistito all'analisi semplice con cui di solito ci si avvicina ai sistemi lineari. A differenza dei sistemi lineari, non è quasi mai possibile ottenere soluzioni esplicite per un sistema non-lineare. Infine, c'è un "ordine" e una "universalità" in diverse classi di fenomeni non-lineari che li rendono idealmente adatti ad una analisi qualitativa. Molti sistemi complessi, anche se multidimensionali, mostrano un comportamento che può essere descritto da modelli di ordine inferiore. In particolare, le dinamiche non-lineari di circuiti di elevata dimensione possono essere spesso comprese esaminando la loro proiezione in piani bidimensionali. Questi modelli di basso ordine sono in genere adeguati a descrivere il comportamento del sistema.

4. Conclusioni

È quindi evidente che i risultati (tutti piuttosto recenti) ottenuti in queste due direzioni sono abbastanza promettenti da suggerire all'appassionato attento di tenere d'occhio i progressi della ricerca in entrambi i settori. L'attenzione che ultimamente è stata tributata dal gotha mondiale dell'economia e della politica alle mirabolanti scoperte che sono alla base della fisica quantistica farebbero propendere per il computer quantistico come il più accreditato tra i candidati alla sostituzione dei processori attuali. La storia insegna però che è bene non dare mai nulla per scontato.

In attesa della soluzione definitiva: l'estrazione dal cervello umano di tutto il suo potenziale computativo sommerso.

Riferimenti bibliografici:
  • Quantum Computing, Appunti del corso A.A. 2001-2002, Alessandra Di Perro, Università di Roma "La Sapienza" – Dipartimento di Fisica
  • Sistemi Digitali, Appunti del corso A.A. 2003-2004, Mauro Olivieri, Università di Roma "La Sapienza" – Dipartimento di Ingegneria Elettronica