minilogo.gif (2094 bytes)

Introduzione all'architettura dei calcolatori

left.gif (1019 bytes) up.gif (1014 bytes) right.gif (1020 bytes)

Evoluzione della tecnologia dei calcolatori

La storia dei calcolatori viene solitamente suddivisa in generazioni della durata di circa 10 anni ciascuna, sebbene non vi sia comune accordo sulle date di inizio e fine di ciascuna generazione. Seguendo la classificazione proposta in [11]], assumeremo qui che generazioni successive presentino un periodo di sovrapposizione di alcuni anni, nell'arco dei quali si intende abbiano luogo sia il progetto e lo sviluppo di nuove macchine, sia la loro diffusione commerciale in àmbito mondiale (Fig. 1).

Fig. 1 Le cinque generazioni di calcolatori

La prima generazione (1938-1953) è caratterizzata dall'introduzione del primo calcolatore elettronico analogico (1938) e del primo calcolatore elettronico digitale, l'ENIAC (Electronic Numerical Integrator And Computer, 1946). Queste macchine e le loro discendenti impiegavano come dispositivi di commutazione relè elettromeccanici negli anni '40 e tubi a vuoto negli anni '50; gli unici linguaggi usati erano i codici macchina binari, ma esistevano anche sistemi, espressamente costruiti per la soluzione di classi specifiche di problemi, del tutto privi di un qualsiasi linguaggio. Soltanto l'apparizione del primo calcolatore a programma memorizzato, EDVAC (Electronic Discrete Variable Automatic Computer, 1950), segnò anche l'inizio dell'uso di forme primitive di software di sistema per sollevare gli utenti dagli inconvenienti della programmazione a bassissimo livello e dell'interazione diretta con i dettagli circuitali della macchina. I problemi più rilevanti, tuttavia, erano ancora costituiti dai costi elevati dei componenti elettronici, dalla loro scarsissima affidabilità e dall'enorme quantità di energia richiesta per il loro funzionamento.

L'introduzione del sistema IBM 701 (1952), dotato di vari livelli di memoria (a tubi, a tamburi, a nastri), e soprattutto l'impiego del transistor, inventato nel 1948, portarono però rapidamente alla seconda generazione (1952-1963) di calcolatori. Il primo calcolatore digitale a transistori, il TRADIC (Transistorized Digital Computer), fu sviluppato e costruito nei Laboratori Bell attorno al 1954.

In questo periodo apparvero i circuiti stampati, le memorie a nuclei di ferrite e i pacchi di dischi rigidi intercambiabili, che conobbero pressoché immediatamente una vastissima diffusione. Vennero anche sviluppati i primi linguaggi ad alto livello, il FORTRAN (Formula Translation) nel 1956, il COBOL (Common Business Oriented Language) nel 1959, e l'ALGOL (Algorithmic Language) nel 1960. Nonostante i primi perfezionamenti architetturali, come l'uso di unità indipendenti di ingresso/uscita e l'adozione di tecniche di correzione automatica degli errori, l'elaborazione dei programmi rimaneva ancora esclusivamente di tipo batch (1).

La terza generazione (1962-1975) fu caratterizzata dall'introduzione della tecnologia dei circuiti integrati (chips), inizialmente su piccola scala (SSI, Small Scale Integration) (2) e subito dopo su media scala (MSI, Medium Scale Integration) (3). Le memorie a nuclei di ferrite erano ancora diffusissime, ma fin dal 1968 molti calcolatori veloci, come il CDC-7600 della Control Data, cominciarono ad utilizzare dispositivi di memoria allo stato solido.

Fu anche in questo periodo che vennero introdotti i primi compilatori "intelligenti" per i linguaggi ad alto livello, e molti sistemi cominciarono ad operare in multiprogrammazione (4). Negli ultimi anni '60 diventarono poi disponibili i primi sistemi operativi time-sharing (5), e vennero introdotti i primi sistemi gerarchici di memoria; nei sistemi più avanzati apparvero le prime architetture multiprocessore (6).

La quarta generazione (dal 1972 ad oggi) è caratterizzata dall'uso estensivo di circuiti integrati a grande scala (LSI, Large Scale Integration) (7) e dall'introduzione dei circuiti integrati VLSI (Very Large Scale Integration), capaci di integrare decine di migliaia di porte logiche per dispositivo. I linguaggi ad alto livello sono in grado di operare efficientemente su dati sia scalari che vettoriali, mentre la maggior parte dei sistemi operativi è ormai di tipo time-sharing, con uso intensivo di memorie virtuali.

I costi sempre più contenuti e le dimensioni sempre più ridotte dei dispositivi hardware consentono in questo periodo l'apparizione dei minicalcolatori, sistemi di elaborazione relativamente economici ma dotati di prestazioni in grado di soddisfare pienamente il singolo utente; lo sviluppo dei microprocessori porta poi all'introduzione dei microcalcolatori (detti anche personal computers), che raggiungono negli anni '80 una vastissima diffusione [20].

Sotto la spinta della necessità di portare a soluzione problemi ad enorme carico computazionale nell'àmbito militare e civile (uno dei quali è descritto con molti dettagli in [5]) vengono parallelamente sviluppati anche i supercalcolatori, in cui si concentrano le innovazioni più avanzate sia in campo tecnologico che architetturale [1] [19]. La linea dei calcolatori Cray, ad esempio, riflette in maniera significativa i progressi compiuti nelle prestazioni dei supercalcolatori commerciali. Il predecessore della serie, il Cray-1, apparso nel 1976, era una macchina raffreddata a freon liquido, in grado di eseguire fino a 160 megaflops in condizioni ottimali, ed era praticamente priva di software; il primo esemplare venne venduto per 13 milioni di dollari dell'epoca. Nel 1983 apparve il Cray X-MP, una versione del Cray-1 a 2 o 4 processori ma quasi cinque volte più potente di esso, seguita pochi anni dopo dal Cray Y-MP ad 8 processori e successivamente dal Cray-2, che è ritenuto oltre 12 volte più potente del Cray-1 su dati di tipo vettoriale.

Si parla infine di una quinta generazione di calcolatori, ma questa dizione è essenzialmente legata a un omonimo progetto giapponese [15] iniziato nella prima metà degli anni '80, mirante a incorporare elementi di intelligenza artificiale in sistemi di elaborazione tecnologicamente avanzati, con l'obiettivo dichiarato di portare finalmente a soluzione problemi rimasti ancora intrattabili con le tradizionali strutture di calcolo, come l'interpretazione del linguaggio naturale, la dimostrazione automatica di teoremi complessi, e simili. Dai risultati a tutt'oggi noti, sembra tuttavia che le previsioni originali siano state forse eccessivamente ottimistiche: se mai qualcuno degli obiettivi più ambiziosi del progetto verrà raggiunto, ciò non avverrà di certo nei tempi sperati.

Possiamo in ogni caso ritenere che, almeno sotto l'aspetto tecnologico, la quinta generazione di calcolatori sia già iniziata [18]. Al giorno d'oggi sono disponibili chip di memoria da 4 megabit e stanno per essere introdotti chip da 16 megabit, mentre è stato recentemente introdotto il primo microprocessore da 1 milione di transistori, un dispositivo della Intel denominato i860. Per quanto concerne la velocità dei componenti, negli ultimi anni abbiamo potuto assistere allo sviluppo di due importanti tecnologie dello stato solido [17]:

Per via degli ingombranti e costosi sistemi di raffreddamento necessari, la tecnologia Josephson sembra avere minori possibilità di applicazione che non la tecnologia GaAs; quest'ultima, peraltro, presenta seri problemi di resa produttiva ed è ancora significativamente costosa; sta tuttavia per essere annunciato un nuovo supercalcolatore (il Cray-3) che dovrebbe farne uso estensivo, con l'obiettivo dichiarato di raggiungere almeno 12 volte la velocità dei maggiori supercalcolatori commerciali attualmente disponibili.

E' stato anche annunciato di recente un nuovo tipo di transistore a più di due stati operativi: la sua applicazione in circuiti logici sembra ancora lontana, ma potrebbe comportare una drastica riduzione delle dimensioni dei circuiti.

Nel lungo termine -- comunque molto dopo che la tecnologia dell'arseniuro di gallio sarà stata adottata nei calcolatori commerciali -- sembra possibile l'utilizzazione delle tecnologie dei materiali superconduttori, che potrebbero aprire la strada a calcolatori di prestazioni ancora superiori: ma per tutta una serie di ragioni la rivoluzione della superconduttività è ancora di là da venire.


Note

  1. Letteralmente: a lotti. Viene così denominata una strategia di gestione di un sistema di elaborazione che consente l'inizio di un'applicazione di utente solo ad avvenuta conclusione dell'applicazione precedente.
  2. La tecnologia SSI è in grado di integrare circa 10 porte logiche per chip. Una porta logica può comprendere, a seconda dei casi, da 1 a 6 transistori.
  3. La tecnologia MSI consente di integrare fino a circa 100 porte logiche per chip.
  4. Strategia di gestione di un sistema di elaborazione in cui più programmi possono essere eseguiti simultaneamente, e la loro esecuzione può essere sovrapposta alle operazioni di ingresso/uscita.
  5. Letteralmente: a partizione di tempo. Strategia di gestione di un sistema di elaborazione che consiste nell'assegnare un'unità di elaborazione ad un programma per non oltre un certo quanto di tempo, allo scadere del quale il programma viene lasciato in attesa e l'unità viene assegnata ad un altro programma; se questa assegnazione viene ciclicamente ripetuta per i vari programmi in corso di esecuzione, e se la macchina è sufficientemente veloce, ciascun utente ha l'impressione di avere un'intera macchina a propria disposizione.
  6. Si dicono uniprocessore le architetture dotate di una sola unità centrale di elaborazione, e multiprocessore quelle che ne prevedono due o più.
  7. La tecnologia LSI consente di integrare centinaia e anche migliaia di porte logiche per dispositivo.
minilogo.gif (2094 bytes)

Introduzione all'architettura dei calcolatori

left.gif (1019 bytes) up.gif (1014 bytes) right.gif (1020 bytes)

© 1997-2003 Paolo Marincola (Rome, Italy)
e-mail:
pmaNOSPAM@acm.org (eliminare i caratteri "NOSPAM" per ottenere l'indirizzo esatto)
Commenti, osservazioni e suggerimenti sono estremamente graditi.

Last revised: 2003-12-06 19:42