Elaboratori elettronici
(App. IV, i, p. 650; V, ii, p. 44; v. calcolatrici, macchine, VIII, p. 352; App. I, p. 339; II, i, p. 482; III, i, p. 281)
Gli e. e., nel corso degli ultimi anni, hanno subito innovazioni talmente radicali e profonde che risulta quasi impossibile confrontare fra loro dispositivi e apparati a distanza di una sola decina d'anni. Le innovazioni hanno riguardato diversi aspetti che sono, da un lato, la realizzazione hardware, dall'altro, i prodotti software e, non ultimi, la diffusione e l'ambito d'uso di tali dispositivi. Fino a tutti gli anni Sessanta erano in uso e. e. di grandi dimensioni, a volte connessi fra loro, a cui gli utenti potevano accedere attraverso terminali, locali o remoti, privi di qualsiasi capacità elaborativa. Verso la metà degli anni Settanta cominciarono ad apparire i primi minielaboratori e i primi microelaboratori, questi ultimi capaci di svolgere solo poche operazioni e agli inizi programmabili solo in linguaggio assemblativo (v. elaboratori elettronici, App. IV). Le applicazioni e la diffusione degli e. e. erano limitate ai grandi laboratori, alle industrie, alla pubblica amministrazione. Nei successivi anni Ottanta e inizio anni Novanta, si è assistito alla diffusione degli e. e. personali, che, in molti casi, disponevano di capacità di calcolo superiori a quelle accessibili in precedenza dai terminali dei grandi elaboratori. Le architetture hardware si sono modificate, soprattutto grazie ai progressi nel campo della microelettronica, che ha fornito componenti essenziali (unità di calcolo, memorie, unità periferiche) sempre più efficienti e a basso costo. In questo periodo molta importanza è stata data agli e. paralleli, per distribuire fra varie unità di calcolo i compiti prima svolti in modo seriale da una singola grossa unità (v. elaboratori elettronici, App. V). Nel corso degli anni Novanta, la diffusione degli e. e. personali ha raggiunto livelli estremamente elevati, riducendo a pochi tipi i dispositivi disponibili in commercio. Si sono andati inoltre definendo gli usi dominanti di tali apparati, che sono risultati essere quelli della videoscrittura e soprattutto quelli della creazione e consultazione di archivi di dati. Ciò è stato reso possibile soprattutto grazie alla diffusione dei sistemi di interconnessione fra e. e., attraverso apposite reti informatiche (prima fra tutte la rete Internet), che, applicando tecniche proprie della telematica, hanno consentito l'accesso immediato ad archivi e banche di dati. Questi aspetti, con tutte le varie implicazioni economico-commerciali e le ricadute applicative, sono illustrati nella presente voce. *
Gli e. e. hanno scandito l'evoluzione economico-sociale degli ultimi anni. Il continuo aumento della capacità di calcolo, unito al costante calo dei prezzi, ha reso possibile la diffusione capillare di questo strumento. L'utilizzazione degli e. e., un tempo appannaggio esclusivo del mondo scientifico, si è via via estesa al mondo industriale, finanziario, bancario, amministrativo, fino all'interno delle case private, al punto da far diventare l'e. e. quasi un elettrodomestico di uso comune. Gli e. e. sono divenuti oggetti indispensabili per lo svolgimento di quasi tutte le attività lavorative, per il tempo libero e per lo studio.
L'abbassamento continuo dei prezzi, insieme con l'incremento delle prestazioni, ha portato gli e. e. cosiddetti personali (personal computer o PC) a essere la colonna portante del settore, erodendo progressivamente lo spazio dedicato a calcolatori con prestazioni più elevate in termini di velocità e di capacità di memoria, quali e. e. dipartimentali (mainframe), cioè destinati a un intero dipartimento aziendale, e stazioni di lavoro (workstation).
Questo fenomeno è dovuto all'evoluzione della tecnologia dei semiconduttori e alla standardizzazione di fatto dell'architettura dell'unità centrale degli e. (microprocessore) e del sistema operativo (insieme di programmi che gestisce le risorse del calcolatore per offrire dei servizi base all'utente) basata sulle soluzioni offerte dai costruttori di software Intel e Microsoft, standardizzazione che ha reso aperta e dura la competizione tra le imprese costruttrici di e., riducendo i margini di guadagno in modo sostanziale. Ciò ha condotto alla creazione di un duopolio effettivo (detto anche Wintelism, neologismo da Windows, il nome del sistema operativo Microsoft, e Intel) da parte di queste compagnie, che sono divenute tra le imprese più importanti del mondo per valutazione nel mercato borsistico e per fatturato. Il monopolio Intel viene in parte mitigato da altre imprese quali l'Advanced Micro Device e la National Semiconductors, che sono riuscite a produrre microprocessori compatibili con i processori Intel. Nel caso della Microsoft, una possibile competizione poteva essere esercitata dal sistema operativo della Apple impiegato nella serie degli e. Macintosh. Peraltro, la strategia Apple di tenere per anni il sistema operativo 'chiuso', cioè disponibile solo per la propria linea di e. e., ha di fatto consegnato il mercato dei sistemi operativi alla Microsoft.
L'utilizzo degli e. e. come strumenti di calcolo è ormai marginale, mentre applicazioni quali elaborazione dei testi, delle immagini e dei suoni, giochi, preparazione di documenti fanno la parte del leone. Tra tutte le applicazioni degli e., è importante analizzare quelle divenute possibili per l'evoluzione delle telecomunicazioni basate sulle reti globali di e., come Internet. Da rete di calcolatori di grandi dimensioni per applicazioni militari, Internet si è via via evoluta fino a diventare una rete che congiunge decine di milioni di e. e. di tutte le dimensioni in tutto il mondo e, come tale, è ormai la spina dorsale delle comunicazioni a livello mondiale. Grazie a Internet, gli e. e. divengono strumenti di comunicazione ultrarapida a bassissimo costo e dalle prestazioni che rivaleggiano con il telefono: testi possono essere infatti inviati in tempi dell'ordine di qualche secondo tra e. e. distanti migliaia di chilometri. L'importanza della rete è ormai divenuta tale da offuscare l'importanza degli e. e. stessi: è la rete, non più l'e. e., che determina le prestazioni delle nuove applicazioni, e ciò cambia globalmente il panorama industriale. Ormai la distinzione tra discipline scientifiche legate agli e. e. e discipline legate alle telecomunicazioni si sta via via annullando a favore di una nuova disciplina basata sulla fusione dei contenuti delle due.
Una volta costituita la rete di connessioni, molte nuove applicazioni si sono sviluppate e molte altre sono in corso di progettazione. Tra queste, il commercio elettronico è quello che offre maggiori spazi all'imprenditorialità: esso consente a consumatori dotati di elaboratore e di connessione in rete di accedere a siti simili a negozi virtuali, in cui il consumatore può ordinare i beni selezionati con pochi comandi e pagare comunicando al fornitore elettronico il proprio numero di carta di credito. La spedizione dei beni acquistati può essere organizzata tramite la stessa rete, pianificando il modo più semplice ed economico di raggiungere la residenza del compratore; nel caso in cui il prodotto acquistato sia un programma software, un'informazione, un insieme di suoni o immagini, la spedizione stessa del prodotto può avvenire via rete con risparmio di tempo e denaro. È facile estrapolare le dimensioni future di tale commercio, le implicazioni sulle attività di vendita e organizzazione commerciale delle imprese e sulle abitudini dei consumatori.
Oltre al commercio elettronico, le implicazioni di Internet sono immense anche nel settore della didattica. Ormai i testi, gli appunti e il materiale usato per l'insegnamento nei corsi universitari sono resi disponibili da parte di molti docenti delle migliori università del mondo a chi accede ai siti Internet appropriati. Questa disponibilità consente a studenti di tutto il mondo di consultare del materiale didattico più avanzato nel momento in cui viene prodotto e non nel momento in cui viene confezionato nei libri di testo e diffuso su scala mondiale, quando cioè, per alcune applicazioni per es. di ingegneria, è già obsoleto. Il fenomeno non è ristretto ai corsi universitari ma si estende ai corsi di base, soprattutto nell'uso dell'elaboratore. Quindi gli e. e. e la rete rendono la società più 'democratica', nel senso che mettono la conoscenza a disposizione di più vaste masse. Peraltro, il discorso si fa assai più complesso se si considerano le capacità di utilizzazione avanzata del mezzo 'elaboratore'. In questo caso, il divario tra coloro che detengono la conoscenza e coloro che ne sono esclusi è destinato ad aumentare.
Altre implicazioni (peraltro negative) di carattere sociale sono legate ai fenomeni di estraniamento delle persone che diventano dipendenti dall'e. e. e dal suo mondo fantastico e virtuale. Negli Stati Uniti si riscontra un'insorgenza preoccupante di problemi personali, di natura a volte anche patologica, derivanti dall'uso intenso dell'e. e. e della sua connessione in rete.
L'uso del commercio elettronico e del banking on line, che consente di effettuare operazioni bancarie per mezzo dell'e. e., presta il fianco a molte attività illegali, di cui una delle più diffuse è l'appropriazione dei codici delle carte di credito. Una possibile soluzione a problemi di lettura non autorizzata di codici si ottiene con tecniche crittografiche che codificano i messaggi mediante complesse formule matematiche capaci di rendere la decifrazione assai difficile, se non impossibile. Peraltro, le tecniche crittografiche di uso comune sono in gran parte basate su risultati ottenuti negli USA e sono soggette a limitazioni di esportazione, visto che la crittografia è elemento essenziale delle tecniche per la salvaguardia di informazioni altamente riservate di natura militare.
L'evoluzione del mondo dell'elaborazione elettronica, dunque, mentre da un lato si rivela estremamente positiva per la maggiore libertà di circolazione delle idee che essa comporta, dall'altro suscita molti interrogativi relativi all'impatto sul modo di vivere e di concepire la nostra stessa società civile.
Tecnologia utilizzata nella costruzione di un elaboratore elettronico
La tecnologia dei semiconduttori basata sui transistori a effetto di campo (Metal Oxide Semiconductor Field Effect Transistor, MOSFET), più di ogni altro fattore, ha reso possibile l'evoluzione degli e. con l'aumento delle prestazioni a costi decrescenti. Infatti, la semplice struttura planare del transistore MOS e alcune peculiarità fisiche del silicio permettono una forte riduzione delle geometrie fisiche con un aumento della velocità di commutazione (passaggio dallo stato di aperto a quello di chiuso e viceversa). La riduzione delle geometrie consente una riduzione delle dimensioni globali dei circuiti integrati, riducendone il costo, mentre l'aumento della velocità di commutazione permette l'aumento delle prestazioni. In questi anni, la capacità di integrazione è passata da meno di un milione di transistori per circuito integrato a più di sette milioni ed è già in fase di realizzazione l'integrazione di circa quindici milioni di transistori nell'anno 1999, fino a raggiungere un miliardo di transistori entro l'anno 2010 (fig. 1). G. Moore, uno dei tre fondatori della Intel, osservò negli anni Settanta che questo costante progresso nella capacità di integrazione è quantificabile con un raddoppio ogni diciotto mesi del numero di transistori per circuito integrato. Questa legge si è rivelata sorprendentemente appropriata per più di venti anni e solo nell'ultimo periodo si è riscontrato un rallentamento nell'integrazione. La possibilità di utilizzare fin d'ora circuiti integrati con decine di milioni di transistori apre orizzonti inesplorati nel mondo dei prodotti elettronici.
Questo rapidissimo sviluppo tecnologico ha fatto sì che, mentre all'inizio degli anni Ottanta processori a 1÷2 milioni di istruzioni per secondo (MIPS, Million of Instructions Per Second) erano comuni per applicazioni di largo consumo, alla fine degli anni Novanta siano disponibili processori a 200÷1000 MIPS e per l'anno 2000 si raggiungerà la soglia dei 10 BIPS (miliardi di istruzioni al secondo, ovvero Billion of Instructions Per Second). Questo fatto, unico fra tutte le discipline ingegneristiche, rende possibile al giorno d'oggi avere un e. e. personale più potente degli e. e. dipartimentali di soli dieci anni fa.
Architettura degli elaboratori
L'e. e., nella sua forma più semplice, è un dispositivo in grado di eseguire una sequenza d'istruzioni elementari. L'insieme di queste istruzioni definisce il linguaggio macchina o assembler. Ogni istruzione è direttamente eseguita dai vari circuiti elettronici che costituiscono l'hardware, vale a dire la parte fisica dell'e. e.: processori, memorie e dispositivi di ingresso-uscita. I programmi, o software, sono invece sequenze di istruzioni tali da realizzare delle funzionalità più complesse. Esempi di software sono: il sistema operativo, un foglio elettronico, un 'editore' di testi (editor) o un programma di calcolo matematico. I programmi sono memorizzati nella memoria non volatile dell'e. e., ovvero in quella parte di memoria che ha la caratteristica di non perdere il contenuto quando l'elaboratore viene spento.
L'architettura hardware di un e. e. definisce come sono fatti i blocchi componenti (processori, memorie e dispositivi di ingresso-uscita) e come sono fra loro connessi. In particolare, gli aspetti più importanti sono il numero e tipo delle unità di calcolo (processori), l'organizzazione della memoria e come essa è collegata al (o ai) processore (i). La forma più semplice di architettura (detta di von Neumann, v. elaboratori elettronici, App. V) prevede un solo processore collegato a un'unica memoria su cui risiedono le istruzioni da eseguire e i dati da leggere e scrivere.
Per quanto riguarda la memoria, essa è caratterizzata dai seguenti fattori: organizzazione, velocità e dimensione. L'organizzazione della memoria, o tipo di accesso, può essere sequenziale o diretta. Nel primo caso, si accede al contenuto in sequenza, nello stesso ordine, o nell'ordine inverso, con cui le informazioni sono state memorizzate. Nel secondo caso, a ogni locazione della memoria è associato un ben preciso e unico indirizzo da specificare durante la lettura o scrittura dell'informazione; per questo motivo si parla di memoria RAM (Random Access Memory). La tecnologia costruttiva è sempre a semiconduttore (MOS), ma appositamente studiata per le memorie. La velocità di una memoria è misurata dal suo tempo d'accesso, cioè il tempo che intercorre tra la richiesta di un dato a un certo indirizzo e il suo ritrovamento, mentre la dimensione è misurata dal numero di bit memorizzati. Velocità e dimensione sono caratteristiche fortemente in contrapposizione fra loro e strettamente legate alla tecnologia costruttiva del dispositivo. In un e. e. le memorie più veloci presenti sono quelle contenute all'interno del processore (registri). Sono normalmente presenti alcune decine di registri, ciascuno dei quali memorizza numeri binari di tanti bit quanti sono quelli sui cui opera il processore stesso. Tali registri presentano velocità pari a quelle del processore, poiché sono realizzati con la stessa tecnologia costruttiva. È poi presente la memoria principale (detta comunemente RAM dell'e. e.), le cui dimensioni sono tipicamente di qualche centinaio di megabyte (milioni di byte, ove un byte è pari a un numero binario di otto bit) e la cui velocità è una decina di volte minore di quella dei registri. Tale memoria è generalmente organizzata in modo misto, diretto-sequenziale, in modo tale che risulti possibile indirizzare direttamente blocchi di qualche migliaio di byte, all'interno dei quali la lettura, o la scrittura, è sequenziale. È poi presente la memoria di massa, di dimensioni pari a varie decine o centinaia di gigabyte, ma fino a milioni di volte più lenta della memoria principale e realizzata con tecnologia magnetica (dischetti magnetici) o ottica (CD-ROM). Si noti che per compensare la differenza di velocità fra registri e memoria principale, e in alcuni casi fra quest'ultima e la memoria di massa, sono presenti memorie di dimensioni e velocità intermedie, che trattengono le ultime informazioni, dati o istruzioni, lette o scritte nella memoria più lenta. Tali memorie prendono il nome di memorie cache e possono essere anche più d'una. In fig. 2 è mostrata la gerarchia organizzativa della memoria dell'elaboratore.
In questo tipo di architettura, le prestazioni sono limitate essenzialmente dalla velocità della comunicazione fra processore e memoria. Per superare tale limitazione, sono state esplorate diverse architetture con più processori e più memorie. All'inizio degli anni Novanta, grande importanza fu attribuita alle architetture massicciamente parallele, basate sull'utilizzo di migliaia di processori elementari connessi fra loro e in grado di operare contemporaneamente su diversi dati e con diverse istruzioni. Si pensava che, per le applicazioni in cui erano richieste prestazioni più elevate, tali processori potessero soppiantare quelli più tradizionali, detti altresì sequenziali. Molte imprese furono immesse sul mercato, tra le quali alcune con ottime premesse scientifiche e commerciali. Tuttavia, l'incremento delle prestazioni degli e. e. sequenziali, o di quelli a basso parallelismo, ha reso difficile la diffusione di e. e. altamente paralleli. L'elaborazione parallela presenta inoltre vari inconvenienti legati alla difficoltà di tradurre sequenze di istruzioni tipicamente sequenziali in forma parallela, da eseguirsi su diverse unità di calcolo. Queste difficoltà, insieme all'alto costo di programmazione di tali e. e., hanno relegato il loro uso sostanzialmente ad applicazioni militari particolari o di previsione meteorologica, dove i costi della programmazione sono compensati dai vantaggi ottenuti. Le imprese produttrici di supercalcolatori paralleli, considerate tra le più interessanti degli anni Novanta da investitori ed esperti di tecnologia, quali Thinking Machines - che portò sul mercato la Connection Machine, sviluppata al Massachusetts Institute of Technology da D. Hillis, detentrice del record per il numero di operazioni al secondo e basata, nella sua prima versione, su più di un milione di processori elementari - e Kendall Square Research hanno infatti chiuso la propria attività per mancanza di un mercato in grado di sostenere le spese di sviluppo tecnologico e di scrittura delle applicazioni software. Architetture simili alla Connection Machine, per es. APE 1000, sviluppata in Italia dal gruppo di N. Cabibbo, sono tuttora disponibili per applicazioni scientifiche, ma con un mercato assai limitato.
Il parallelismo continua a esercitare comunque un grande fascino per le ovvie potenzialità e per la similarità con le operazioni del cervello umano, la cui architettura è anch'essa a elevato grado di parallelismo. In quest'ambito, uno dei grandi temi di ricerca nel campo degli e. e. è lo studio delle reti neurali, cioè delle reti di e. e. che simulano il funzionamento dei neuroni. Al momento attuale, architetture basate su questi elementi non hanno avuto fortuna, mentre algoritmi basati su questo modello di elaborazione dei dati sono stati utilizzati per molteplici applicazioni.
Se il parallelismo a livello dei processori non ha avuto il successo sperato, diversamente è avvenuto per lo sfruttamento del parallelismo a livello delle istruzioni, dove le tecniche pipeline e superscalar hanno esercitato un impatto notevole sullo sviluppo dei moderni elaboratori (v. oltre).
Negli anni Settanta, la soluzione adottata per aumentare le prestazioni di un processore si basava sull'introduzione di istruzioni sempre più complesse, come per es. di interpolazione lineare bidimensionale. Poiché i processori sono macchine digitali sequenziali sincrone, cioè sono basati su un temporizzatore, o clock, che scandisce uniformemente il tempo, ogni operazione può avvenire solo per multipli interi del ciclo di clock. Le istruzioni introdotte richiedevano pertanto diversi cicli di clock per essere eseguite. Tali architetture, indicate col termine CISC (Complex Instruction Set Computer), sono state successivamente superate, negli anni Ottanta, con differenti architetture, dette RISC (Reduced Instruction Set Computer). Quest'ultime utilizzano all'interno dei processori un insieme di istruzioni ridotto, in modo che, applicando opportune tecniche di progettazione hardware, dette di pipeline, è possibile raggiungere prestazioni funzionali molto superiori per l'intero elaboratore.
I processori pipeline sono basati sullo stesso concetto delle catene di montaggio: un'istruzione di elaborazione viene suddivisa in diverse fasi sovrapposte nel tempo (fig. 3). I moderni processori suddividono l'istruzione in almeno cinque fasi: lettura dell'istruzione (IF, Instruction Fetch), decodifica (ID, Instruction Decode), esecuzione (IE, Instruction Execution), accesso alla memoria (MA, Memory Access) e scrittura del risultato (WB, Write Back). Da notare che, mentre è in scrittura il risultato dell'istruzione I-esima, accede alla memoria l'istruzione I+1-esima, è in esecuzione la I+2-esima, in decodifica la I+3-esima ed è in lettura la I+4-esima. Pertanto, se il tempo complessivo di esecuzione di un'istruzione è pari a quello di un processore non pipeline, si raggiunge un aumento teorico delle prestazioni, misurate in MIPS, pari al numero di stadi della pipeline (cinque nell'esempio).
Vi sono situazioni in cui il flusso delle istruzioni non può essere mantenuto, ma deve essere interrotto, determinando un degrado delle prestazioni del processore. Le cause di tali blocchi, detti anche stalli, sono: le strozzature strutturali (structural hazard); le dipendenze sui dati (data hazard); l'indeterminatezza sulla sequenza delle istruzioni (control hazard).
Le strozzature strutturali derivano da un'insufficienza delle risorse del processore, come quando, per es., vi è un'unica memoria sia per i dati sia per le istruzioni. Strozzature dipendenti dai dati possono verificarsi quando l'architettura pipeline sovrappone parzialmente le istruzioni di salto condizionato. In tutti i casi, le condizioni di stallo comportano l'inserimento di un ciclo di inattività, detto bolla, in quanto sembra salire dalle fasi finali della pipeline. Nelle figg. 4, 5 e 6 sono mostrati esempi di stallo in un processore pipeline per structural hazard, data hazard e control hazard, con i relativi programmi, ai quali sono stati aggiunti, per facilitare la lettura, i significati delle istruzioni. Gli effetti degli stalli possono essere ridotti con diverse tecniche. Per es., uno stallo per control hazard può essere evitato con l'utilizzo di un'unità hardware, detta branch predictor, in grado di predire quale sarà il risultato del test e di eseguire il flusso di istruzioni a seguito del test predetto. Peraltro, non vi è sicurezza che la stima fatta sia accurata, per cui si potrà verificare la necessità di interrompere una sequenza di istruzioni e di ripartire sull'altro flusso di istruzioni. In questo caso, il degrado delle prestazioni non è comunque evitato. Un'altra tecnica è quella del salto ritardato: invece di inserire delle bolle vengono inserite istruzioni che erano precedenti all'operazione di salto condizionato, evitando così lo stallo. Purtroppo, però, non sempre questa tecnica è applicabile poiché potrebbe non essere possibile posticipare l'operazione di salto considerata. Gli stalli dovuti alle dipendenze sui dati e alcune strozzature strutturali sono ridotti attraverso l'ausilio di unità molto complesse per la decodifica e l'esecuzione dinamica delle istruzioni: la sequenza non segue esattamente l'ordine impartito ma è ridefinita dinamicamente in base alla disponibilità dei dati e delle unità di esecuzione.
Utilizzando questa tecnica, i moderni processori RISC sono in grado di eseguire un'istruzione per ogni ciclo di clock. Tali prestazioni possono essere migliorate solo eseguendo più istruzioni per ciclo di clock, sfruttando il parallelismo che è presente a livello delle istruzioni. Si pensi all'esecuzione di tre somme indipendenti in un flusso di istruzioni; con un processore pipeline è possibile eseguirle in tre cicli di clock, supposto che il flusso di istruzioni non comporti lo stallo della pipeline, ma se disponessimo di 3 unità di calcolo e se fossimo in grado di accorgerci che tali somme possono essere eseguite contemporaneamente, saremmo in grado di eseguirle in un solo ciclo di clock. L'incredibile aumento nella capacità di miniaturizzazione consentito dalla tecnologia dei semiconduttori permette di disporre di unità multiple d'esecuzione all'interno di uno stesso processore. Il vero problema rimane quello di decidere quando le istruzioni possono essere eseguite contemporaneamente. Un primo approccio al problema consiste nel determinare staticamente le istruzioni da eseguire in parallelo durante la fase di generazione del programma (fase di compilazione) e nel permettere il controllo delle unità d'esecuzione del processore direttamente attraverso il codice dell'istruzione. I processori di questo tipo sono detti Very Long Instruction Word (VLIW), in quanto il numero di byte necessari per rappresentare un'istruzione può essere superiore alla decina. Un secondo approccio è quello di determinare dinamicamente, durante la fase di esecuzione, le istruzioni da eseguire in parallelo (si parla allora di scheduling dinamico delle istruzioni). Ovviamente, anche in questo caso, durante la fase di compilazione è possibile generare le istruzioni in una sequenza tale da ottimizzare l'esecuzione parallela. I processori basati su questa tecnica sono detti superscalar e si dicono di livello n o n-way instruction issue se sono in grado di eseguire n istruzioni contemporaneamente. Per es., un processore di livello 4 ha 4 pipeline ed è in grado di leggere, decodificare ed eseguire 4 istruzioni contemporaneamente. Grazie alla capacità di riordinare la sequenza di esecuzione delle istruzioni, le limitazioni dovute alla dipendenza dei dati sono in questi processori fortemente ridotte. Per quanto riguarda invece i problemi relativi alle istruzioni di salto condizionato, vengono utilizzate tecniche di esecuzione speculare: invece di predire il salto condizionato, vengono eseguiti entrambi i flussi di istruzioni sino a quando si conosce il risultato dell'operazione di test; i risultati dovuti al flusso errato vengono scartati mentre vengono tenuti quelli prodotti dal flusso corretto.
Mentre i processori VLIW sono fortemente indicati per applicazioni dedicate, in quanto molto efficienti, i processori superscalar permettono di eseguire più velocemente anche i programmi non specificatamente compilati per questo tipo di processore. Per questo motivo, tutti i processori di vertice sono di questo tipo. Per es., l'Alpha 21164 della Digital è un processore a 64 bit, di tipo pipeline e superscalar di livello 4 con esecuzione speculare e 16 kB di memoria cache interna. Le prestazioni di questo microprocessore sono incredibili, in quanto sfruttando le 4 unità di calcolo e senza problemi di stallo raggiunge i 2,4 BIPS. Analogamente, il processore Intel Pentium II, è un processore a 32 bit di tipo superscalar di livello 3 con esecuzione speculare in grado di raggiungere 1,0 BIPS. Poiché le architetture pipeline e superscalar non alterano il linguaggio assembler originario del processore, il loro successo è dovuto essenzialmente alla capacità di aumentare le prestazioni delle applicazioni software esistenti senza doverle modificare, mantenendo quindi l'investimento iniziale sulla formazione e sull'acquisto del software applicativo.
Contrariamente allo stato attuale, forse più legato a vincoli di compatibilità col software esistente, il futuro sembra invece essere più roseo per le architetture VLIW. Infatti, l'architettura della nuova generazione di microprocessori a 64 bit, denominata IA-64, che Intel, assieme ad altre industrie di microprocessori, sta definendo è un'architettura di tipo VLIW. I primi processori di questa famiglia, di nome Merced, sono attesi per l'anno 2000.
Il miglioramento delle prestazioni delle memorie non è andato di pari passo con l'incremento di quelle dei processori (fig. 7). Il divario fra le due prestazioni è il vero e proprio collo di bottiglia delle attuali e future generazioni di e. elettronici. A conferma di questo, basti notare che negli attuali processori (per es. l'Alpha 21164) più di metà dell'area di silicio del processore (e quindi del costo) è in realtà destinata a una o più memorie cache, necessarie per supplire alla differenza di velocità fra processore e memoria centrale.
Un'interessante ricerca che tenta nuove soluzioni architetturali a questo problema è quella svolta da D. Patterson e collaboratori presso l'Università della California, a Berkeley. Gli e. e. da loro progettati, denominati IRAM (Intelligent RAM), sono memorie RAM dotate, sullo stesso circuito integrato, di processori ad alte prestazioni e altamente paralleli, per es. 8 pipeline a 64 bit. Questi processori, da 100 milioni di transistori, sono in grado di raggiungere prestazioni elevatissime, fino a 128 BIPS.
Nonostante il continuo aumento delle prestazioni dei processori convenzionali, per applicazioni nel campo dell'elaborazione dei segnali, come i sistemi di telefonia cellulare, e per le nuove applicazioni multimediali, quali i lettori di videodischi digitali (DVD, Digital Video Disk) e i videogiochi, sono attualmente utilizzati processori con differente architettura. L'architettura di questi e. e. si basa su una semplificazione drastica delle architetture convenzionali, la quale privilegia l'elaborazione dei dati che si presentano con regolarità, come avviene per l'elaborazione delle immagini. In questo caso l'elaborazione richiesta, per es. dagli algoritmi di filtraggio, codifica e decodifica, è di tipo aritmetico e richiede il calcolo di un gran numero di moltiplicazioni e addizioni tra dati che affluiscono all'unità di elaborazione in modo regolare e prevedibile. In tale circostanza, l'unità di elaborazione è capace di calcolare, su due o più flussi continui di dati, somme e prodotti in modo molto veloce, ma non è capace di gestire in modo efficiente operazioni che dipendono dai valori dei dati stessi. Per la loro semplicità architetturale, tali e. e. sono in genere di minori dimensioni e per questo motivo meno costosi; come i processori convenzionali, sono programmabili. Se mantengono una generalità tale da coprire efficientemente diverse applicazioni, essi rientrano nella categoria dei processori per l'elaborazione dei segnali o DSP (Digital Signal Processor), mentre, in caso contrario, rientrano nella categoria dei processori specifici per l'applicazione o ASSP (Application Specific Signal Processor). Tipicamente questi ultimi non operano isolati ma affiancano il processore dell'e. e. per soddisfare le prestazioni richieste su compiti specifici, come per es. la compressione video/audio per applicazioni di videoconferenza o videogiochi.
Se si pensa a una rete di e. e. come a un'unica entità, quest'entità è di fatto un calcolatore 'parallelo' (in questo caso si parla più propriamente di elaboratore distribuito), nel senso che ogni componente della rete può svolgere calcoli in modo indipendente. L'unica differenza nei riguardi dei processori ad architettura parallela è costituita dalle prestazioni della rete: nel caso di un e. e. ad architettura interna parallela, la connessione tra gli elementi di elaborazione è molto veloce per costruzione, mentre nel caso di una rete di e. e. la connessione tra gli elaboratori ha la velocità della rete, che di solito è di un fattore 10 o 100 volte più bassa. Tuttavia, le applicazioni più adatte al calcolo parallelo fanno poco uso delle connessioni e quindi non risentono in modo pesante di questa differenza. Naturalmente le difficoltà di scomporre i problemi in modo che siano risolubili in parallelo resta intatta. Quindi la rete di e. e. ha interesse in quanto il suo costo aggiuntivo per l'utilizzo come e. e. parallelo è nullo.
Sistemi operativi
Diverse sono le forme che ha assunto il sistema operativo da quando il primo e. e. è apparso. Si è passati dai sistemi con interfaccia utente a schede perforate e in grado di eseguire un solo programma alla volta senza alcuna possibile interruzione (sistemi Batch del 1950-60), ai sistemi operativi attuali, con interfaccia utente grafica a finestre che simulano la disposizione di documenti su una scrivania e sono in grado di utilizzare le risorse di altri e. e. connessi alla rete dati (sistemi distribuiti). Inoltre, i nuovi sistemi sono capaci di eseguire più programmi contemporaneamente (sistemi multiprogrammati) e di soddisfare richieste provenienti da più utenti (sistemi multiutente).
Tre sono sostanzialmente i sistemi operativi presenti sugli odierni e. e.: Unix, Apple MacOS e Windows di Microsoft. Il primo nacque in forma sperimentale negli anni Settanta nei Bell Laboratories (Stati Uniti) come sistema operativo per e. e. dipartimentale o mainframe (allora un PDP-7); insieme a esso fu sviluppato anche il linguaggio C come base per la programmazione in Unix, linguaggio che è attualmente il più usato a livello mondiale, indipendentemente dal sistema operativo utilizzato. Sempre in quegli anni, Unix venne adottato dal Dipartimento della Difesa degli Stati Uniti come sistema operativo di base e su esso fu sviluppato il protocollo TCP/IP per il supporto della rete Internet. Negli anni Ottanta, Unix è diventato di fatto lo standard per gli e. e. a uso scientifico, dai superelaboratori (Cray-IIs della Cray) alle stazioni personali o workstations, coprendo sostanzialmente l'intera fascia alta degli elaboratori. Unix è un sistema operativo in grado di rispondere alle richieste contemporanee di diversi utenti. L'utente si collega attraverso una fase di riconoscimento, nella quale digita il nome dell'utenza (username) e la parola di accesso (password), in modo da poter accedere a tutti i propri programmi e dati e a quelli resi condivisibili dagli altri utenti. Unix è anche un sistema multiprogrammato, in grado cioè di eseguire più programmi contemporaneamente; inoltre, all'interno di uno stesso programma, gruppi di istruzioni (threads) possono essere in esecuzione concorrente (sistema multithreads). In base al numero di risorse di calcolo disponibili (in un sistema monoprocessore ne è presente solo una), il sistema operativo mette in esecuzione e sospende i programmi o threads alternativamente, dedicando a ognuno di essi solo una frazione dell'intera potenza di calcolo a disposizione (sistemi a divisione di tempo). Inoltre, Unix è in grado di utilizzare altri e. e., aree di memorizzazione, stampanti e altre risorse, ovunque si trovino localizzate, purché connesse a una rete dati accessibile (sistema distribuito). Diversi sono i fornitori del sistema operativo Unix, dall'università della California a Berkeley (che rende disponibile il sistema in forma gratuita), alla AT&T (Bell Labs), a SUN Microsystem, Digital e IBM. A eccezione dell'università della California, gli altri produttori sono raggruppati in due organizzazioni con due differenti standard: Unix International e Open Foundation Software. La prima ha la SUN come impresa trainante che effettua la distribuzione capillare del sistema operativo. La seconda è nata come conseguenza della politica di sviluppo dell'IBM e della Digital che, al tempo della formazione del consorzio, avevano sul mercato sistemi operativi proprietari e consideravano quindi lo sviluppo Unix come potenzialmente dannoso per il loro mercato. Di fatto, gli standard proposti, anche se molto simili, non erano pienamente compatibili, per cui la disseminazione del sistema operativo è stata più laboriosa di quello che era legittimo aspettarsi. Peraltro, il fatto che Unix fosse essenzialmente un sistema aperto e disponibile come codice sorgente, ha facilitato la proliferazione di 'dialetti'. Sebbene sia nato per e. e. di fascia alta, questo sistema operativo è disponibile anche per e. e. a uso personale su piattaforma hardware Intel. Dal 1991 è disponibile una versione del sistema operativo, di nome Linux, gratuita e reperibile in Internet. Grazie alla collaborazione di diversi utenti sparsi per il mondo intero, Linux ha avuto un rapidissimo sviluppo, soprattutto in ambito accademico.
Nel 1980 nacquero gli e. e. personali Apple e IBM: i primi, basati su processore Motorola e sistema operativo proprietario; i secondi, basati su piattaforma hardware Intel e sistema operativo MS-DOS della Microsoft Corporation. Mentre il sistema Microsoft era monoutente, non multiprogrammato e privo di interfaccia grafica, il sistema operativo MacOS della Apple per gli e. e. Macintosh, successori del PC Apple II, aveva interfaccia grafica e faceva ampio uso di 'finestre' e icone per la rappresentazione visuale di programmi e di file (unità con cui i dati sono logicamente organizzati in memoria) di dati. Negli anni successivi, la Microsoft ha creato Windows, che ha aggiunto al precedente sistema operativo l'interfaccia grafica a finestre, una scarna gestione della multiprogrammazione e i protocolli per la gestione delle reti di dati, di fatto emulando le funzionalità degli e. e. Apple. Pur essendo il sistema operativo MacOS assai avanzato per la sua epoca, la politica industriale Apple, che punta a uno stretto accoppiamento fra l'hardware e il sistema operativo, ne decretò la fine, lasciando tempo e spazio alla Microsoft per entrare in modo efficiente nei sistemi personali avanzati. Il sistema della Microsoft, che è divenuto de facto uno standard nel mondo degli e. e. personali, proprio perché caratterizzato da bassa tecnologia, non si presta a essere utilizzato su differenti piattaforme hardware e per applicazioni di carattere non strettamente personale. Tuttavia, la forza del sistema Microsoft è data dalla sua disponibilità a qualsiasi costruttore di PC e non solo alla IBM. La creazione e disponibilità di uno standard architetturale di sistema dovuto all'IBM favorisce l'entrata di un alto numero di competitori che possono sfruttare tutti lo stesso insieme di programmi applicativi, dipendenti in larga misura dal solo sistema operativo. La grande competizione venutasi così a creare fa in modo che l'IBM perda sempre più mercato a favore di produttori in grado di produrre sistemi a costi più bassi, mentre la situazione della Apple, da rigogliosa grazie alla superiorità del suo sistema operativo, va facendosi sempre più critica per la necessità di competere con un gran numero di produttori e di programmi applicativi per la piattaforma PC IBM e con un sistema operativo che perde sempre di più la sua unicità. Nel 1988 per competere nei settori di più alta fascia degli e. e., Microsoft ha deciso di sviluppare un nuovo sistema operativo basato su una nuova tecnologia (NT): è nato così Windows NT. Le novità di questo sistema operativo risiedono nel mantenimento dell'interfaccia utente di Windows/MS-DOS, nell'interfaccia di programmazione (API, Application Program Interface) duale e nell'isolamento delle dipendenze dell'hardware. Infatti, due sono le interfacce di programmazione: una per il supporto delle applicazioni Windows/MS-DOS e una per il supporto delle applicazioni confacenti allo standard POSIX (Portable Operating System Interface), standard delle applicazioni Unix. Inoltre, tutto il codice del sistema operativo dipendente dall'architettura hardware viene racchiuso in una libreria di funzioni chiamata Hardware Abstraction Layer (HAL). Quindi, volendo rendere disponibile il sistema operativo ad architettura hardware non Intel, solo questa libreria è, almeno nelle intenzioni, soggetta a cambiamento, rendendo economicamente plausibile una tale operazione. Molte sono le caratteristiche tecnologicamente innovative e qualificanti di questo sistema operativo, sebbene la sua forza sia principalmente commerciale: con esso è infatti possibile eseguire, più efficientemente che sul sistema operativo originario, i moltissimi programmi applicativi già esistenti per Windows/MS-DOS, e al contempo è possibile sviluppare applicazioni più complesse tipicamente legate al mondo Unix. Dal momento che lo standard Microsoft per i sistemi operativi è proprietario, anche se aperto agli sviluppatori e ai produttori di PC, i problemi 'politici' legati alla necessità di mettere d'accordo un numero notevole di imprese diverse per politica tecnologica e industriale non sono presi in adeguata considerazione. Di conseguenza, lo standard è molto più efficiente per i suoi fini anche se favorisce poi una sola impresa. Nel 1996 sono state vendute più licenze di Windows NT in versione server (una particolare versione adatta ad applicazioni dipartimentali) del totale di tutte quelle Unix, dimostrando la forte penetrazione del nuovo sistema operativo in questa fascia di elaboratori. Le nuove evoluzioni del sistema operativo puntano a integrare applicativi di navigazione (browser) su Internet: l'utente opera su risorse locali o remote attraverso un'unica interfaccia. Questo nuovo sviluppo della strategia Microsoft mira al mercato già conquistato dai produttori software che fanno della rete il loro punto forte. In particolare Netscape, che ha sviluppato i primi browser di rete ad alta diffusione, e il mercato a cui accede sono il bersaglio della politica industriale Microsoft. Infatti, una possibile minaccia alla posizione Microsoft viene proprio dalla rete e dai produttori che considerano la rete, e non il singolo elaboratore, il punto principale su cui sviluppare sistemi hardware e software che rendano più facile e meno costoso l'accesso alle immense risorse messe a disposizione da Internet. La richiesta del governo degli Stati Uniti di discutere le politiche industriali Microsoft in vista della loro aderenza alla legislazione antitrust nasce dalle lamentele sempre più elevate di produttori software e hardware che non riescono a trovare spazio adeguato per il loro sviluppo. Prendiamo, infatti, il caso della nuova versione del sistema operativo Windows '98: poiché in esso è stato incorporato il navigatore di rete, il mercato per questo tipo di applicazioni fornito da produttori indipendenti scompare o quasi. Quindi, secondo le imprese che lamentano la loro debolezza di fronte alla potenza del gigante Microsoft, l'utilizzo del sistema operativo Windows di fatto implica l'utilizzo del navigatore Microsoft, costituendo una situazione di monopolio e di concorrenza sleale. Peraltro, la posizione della Microsoft è che la tecnologia integrata offre un prodotto complessivamente assai più potente, così da favorire in ultima istanza l'utente finale che dovrebbe essere il soggetto principale tutelato dalla legislazione antitrust. Una prima tappa di questa difficile controversia si è conclusa nel novembre 1999 con un pronunciamento della Corte federale statunitense in cui si sostiene che la Microsoft ha avuto comportamenti monopolistici. A ciò dovrà seguire una vera e propria sentenza (che stabilirà anche le misure da prendere per infrangere la situazione di monopolio) o un accordo extragiudiziale fra le parti.
Se da un lato la politica industriale porta allo sviluppo di applicazioni sempre più vaste e potenti, si rileva che, nel settore tecnologico in esame, la minaccia più pericolosa viene sempre 'dal basso', cioè da prodotti e tecnologie a basso costo. Microsoft sembra aver ben capito questo principio, a giudicare dall'altra considerevole mossa espansiva verso il mercato dei sistemi operativi in tempo reale che governano il funzionamento del software applicativo. Se tale scenario si verificherà, allora proprio questo tipo di sistema operativo diventerà dominante e di importanza strategica fondamentale. Quindi, il futuro sembra essere assai brillante per Microsoft, sia per la sua potenza industriale sia per le sue strategie industriali.
Nuovi scenari
Il continuo calo dei costi dei dispositivi elettronici permette di immaginare scenari - e alcuni di essi sono già realtà - in cui le funzioni dell'e. e. per uso personale sono realizzate da diversi e autonomi dispositivi. Già oggi, il diffuso desiderio di navigare in Internet ha fatto nascere la WebTV: l'utente accede alla rete telematica utilizzando il proprio televisore e un dispositivo chiamato set top box, con cui può alternare programmi televisivi a pagine Web o altri servizi Internet, quali la posta elettronica. Analogamente, stanno comparendo i primi videotelefoni con servizi complessi quali l'accesso a pagine Web, e i primi lettori DVD in grado di modificare la visione dei film in casa: sullo stesso supporto dei dischi ottici musicali vengono memorizzate circa due ore di film con colonna sonora ad alta fedeltà e inoltre, se previsto in fase di registrazione, lo spettatore durante la visione può decidere di selezionare diverse cineprese, modificando parte del montaggio del film. Un altro tipo di applicazione che si sta diffondendo velocemente riguarda le macchine fotografiche digitali: grazie a un sensore elettronico di immagini è possibile scattare una fotografia, vederla su un piccolo schermo e decidere se archiviarla o eliminarla, il tutto con un dispositivo di dimensioni più ridotte delle attuali macchine fotografiche a pellicola. Poiché l'immagine nasce in formato elettronico, essa può essere poi trasferita su di un e. e. per essere inserita in un documento, come un catalogo personale o una rivista, stampata o inviata ad altri via posta elettronica.
La possibilità di integrare a basso costo processori (unità di calcolo dell'e. e.), sensori (dispositivi in grado di 'leggere' informazioni presenti nel mondo reale) e attuatori (dispositivi in grado di modificare lo stato del mondo reale) apre la strada a nuove applicazioni. In particolare, la capacità di trasferire l'informazione fra la propria casa, l'automobile e l'ufficio fa pensare a nuove forme di elaboratore. Per es., se diverse telecamere fossero distribuite all'interno della propria casa, in caso di allarme sarebbe possibile riceverne le immagini direttamente sul proprio terminale personale, una forma multifunzionale dell'attuale telefono cellulare, o sull'e. in ufficio. Oppure, la presenza di un videocitofono in grado di comunicare con l'e. e. in ufficio permetterebbe di rispondere dall'ufficio a chi ci cerca a casa. E ancora, la possibilità di avere interruttori intelligenti, in grado di avvertire la presenza di persone nella stanza, permetterebbe di gestirne automaticamente l'illuminazione. Analogamente, anche l'automobile è un ambiente in cui sono previste varie forme di elaboratori. Per es., è già stato annunciato uno specchio retrovisore in grado di segnalare al guidatore la presenza di una macchina in sorpasso, anche se questa è nel cono d'ombra dello specchio stesso. Sono già realtà i sistemi per la rilevazione della posizione o GPS (Global Position System): un e. e. di bordo ci informa sulla posizione del momento e sulle strade da percorrere per raggiungere la destinazione richiesta; oppure, sistemi per il parcheggio assistito, in cui sensori di telemetria ci informano della distanza da oggetti durante le manovre. Inoltre, sono ormai presenti in tutte le automobili i sistemi elettronici per l'antibloccaggio delle ruote (ABS, Antiblock Braking System), e per il gonfiaggio dei palloni salvavita (airbag).
Nel prossimo futuro si assisterà probabilmente a una rivoluzione nel mondo dell'elettronica basata sulla disintegrazione delle funzionalità degli e. e. personali in una varietà di dispositivi che saranno progettati specificamente per una sola applicazione. Per es., le funzioni di collegamento alla rete saranno probabilmente svolte da un set top box che smisterà all'interno delle nostre case immagini e informazioni che verranno utilizzate da dispositivi quali schermi a grandi dimensioni, stampanti ecc. L'utilizzo del PC come videogioco è già ora in diminuzione a favore delle stazioni altamente specializzate per tale applicazione. A questa rivoluzione si dà il nome di human centered systems, a indicare che il centro del nuovo mondo dell'elettronica non è più l'e. e. in quanto tale, ma le persone che ne utilizzano la tecnologia. L'evoluzione della tecnologia dei semiconduttori sarà ancora una volta la chiave per consentire tale rivoluzione. Il costo per operazione sarà così basso che sarà possibile immergere chip quasi ovunque, e ogni oggetto di uso comune avrà una sua dimensione elettronica.
In questo nuovo scenario vi saranno due classi di applicazione fondamentali: ambient computing, cioè l'insieme dei dispositivi elettronici immersi che gestiscono attività che non richiedono l'intervento umano diretto per le loro operazioni (esempi sono il controllo del flusso del gas per le abitazioni, la regolazione della temperatura, la regolazione dell'illuminazione); personal computing, cioè l'insieme dei dispositivi che consentono all'uomo di operare con maggior efficienza. Si noti che questa definizione è molto più estesa del PC così come viene comunemente inteso, poiché oggi l'interazione con l'e. e. è ancora difficile per la necessità di parlare un linguaggio non naturale per gli uomini e per l'esistenza di dispositivi di interfaccia limitati e limitanti, quali la tastiera e lo schermo, fisicamente collegati in prossimità dell'elaboratore.
Tutte queste applicazioni dovranno essere basate su diversi livelli di rete e, tra queste, le reti locali avranno uno sviluppo enorme. Tali reti dovranno essere senza fili per quei dispositivi, e sono la maggioranza, che richiedono la mobilità, o potranno basarsi su cablaggi già esistenti, quali la rete di distribuzione dell'energia elettrica, per quei dispositivi che per le loro dimensioni e tipologia d'uso sono fissi. Tutti gli elettrodomestici potranno per es. scambiarsi informazioni su tale rete al fine di equilibrare il consumo di potenza nell'arco della giornata. È in questo ambito che vedranno la luce nuovi sistemi basati su sensori intelligenti e superintegrati e su attuatori di tipo nuovo che faranno largo uso dell'integrazione tra il mondo elettronico e quello meccanico, integrazione studiata da una disciplina scientifica che va sotto il nome di meccatronica.
In conclusione, si può prevedere che lo sviluppo degli e. e. andrà nella direzione di dispositivi progettati specificamente per una o più applicazioni, che i personal computer muteranno sostanzialmente le loro caratteristiche, che interfacce naturali quali il linguaggio e il movimento delle mani saranno sempre più usate e che la rete sarà il punto di convergenza tecnologica più importante, su cui le battaglie industriali si svolgeranno con maggiore virulenza.
bibliografia
P. Kogge, The architecture of pipeline computers, New York 1981.
M.J. Bach, Design of the Unix operating system, Englewood 1986.
D.E. Rumelhart, J.L. McClelland, Parallel distributed processing. Explorations in the microstructure of cognition, Cambridge (Mass.) 1986.
J.L. Hennessy, D.A. Patterson, Computer architecture. A quantitative approach, San Mateo (Calif.) 1990.
M. Johnson, Superscalar microprocessor design, Englewood 1991.
D.E. Corner, D.L. Stevens, Internet working with Tcp/Ip, voll. 1°-3°, Englewood 1991-94.
N. Cabibbo et al., The new wave of the APE project: APEmille, in Nuclear physics B (Proceedings Supplements), 1995, 42.
B. Schneier, Applied cryptography: protocols, algorithms, and source code in C, New York 1996.
S.M. Sze, Physics of semiconductors devices, New York 1996.
P. Gralla, S. Ishida, M. Reimer, How the Internet works: special edition, Emeryville 1997.
R. Kalakota, A.B. Whinston, Electronic commerce: a manager's guide, Reading 1997.
P. Lapsley, J. Bier, A. Shoham et al., DSP Processor fundamentals. Architectures and features, New York 1997.
D. Patterson et al., Scalable processors in the billion-transistor ERA: IRAM, in IEEE Computer, sett. 1997, pp. 75-78.
A. Silberschatz, P. Baer Galvin, Operating system concepts, Reading 1997.