Sei sulla pagina 1di 11

Capitolo primo

Introduzione



1 Architettura, organizzazione e struttura dei calcolatori
2 Livelli di astrazione e strati
3 I modelli fondamentali e l'architettura
4 Modello di Von Neumann
4.1 Modello penna e carta
4.2 Le unit del modello di Von Neumann
4.3 Le istruzioni elementari del modello
4.4 Caricamento del programma e sua esecuzione
4.5 L'algoritmo del processore
5 Organi di un calcolatore: unit di ingresso e uscita
5.1 Unit di ingresso
5.2 Unit di uscita.
6 La memoria principale (o centrale)
7 Memorie di massa
8 Unit logico-aritmetica
9 Il processore e l'unit centrale (CPU)



Prerequisiti

Argomenti che si suppone siano noti al lettore:


Calcolo automatico, elaborazione, algoritmo

Automa

Stati e registri

Macchine di Turing

Caratteristiche fondamentali di un computer

1

Architettura, organizzazione e struttura dei calcolatori

Spunto da Stallings

2

Livelli di astrazione e strati

La suddivisione in livelli di un sistema per l'elaborazione delle informazioni pu avvenire in funzione
dell'osservatore che lo usa o lo progetta; in tal caso si parla pi propriamente di strati del sistema: in fig. 2.1
mostrata una tipica suddivisione di tal genere che si sviluppa dalla visione del sistema che ha l'utente finale
fino a includere quella propria del progettista elettronico.

Utenti
Gestione aziendale, progettazione,
Pacchetti applicativi
Programmi
Sistema
software
Sistema operativo (gestione lavori, sistema di archiviazione)
Processori del sistema operativo (traduttori, editor, ...)
Sistema operativo (gestione sistema):
routine di servizio delle interruzioni, drivers, etc.
Sistema
hardware
Architettura del sistema
Unit hardware componenti:
processore, unit logico-aritmetica, input-output, memorie
Architettura delle unit
Unit hardware
Macchine elementari: addizionatori, codificatori, decodificatori, reti di controllo,
registri, flip-flop, porte, etc.
Circuiti integrati e apparati elettromeccanici
Componenti elettronici ed elettromeccanici
Figura 1.1 -Struttura a strati di un sistema per l'elaborazione delle informazioni

L'utente finale vede il sistema come un oggetto unico che gli consente la soluzione di una propria
problematica (ad es. gestione aziendale, progettazione di impianti, di strutture, etc.) e che si integra (o
dovrebbe integrarsi!) con una realt esterna (ad es. struttura aziendale, centro di progetto e ricerca, etc.). I
componenti del sistema, oltre a componenti esterni all'elaboratore (ad es. reparto amministrativo
dell'azienda, metodi di simulazione per la progettazione di impianti, etc.), sono i pacchetti applicativi
(packages), sovente fra loro collegati, che affrontano una singola problematica dell'utente finale (ad es.
contabilit generale dell'azienda, gestione magazzini, contabilit industriale, progetto di strutture, di reti
elettriche, etc.).
Il progettista di pacchetti applicativi anch'esso un utente del sistema, ma di tipo diverso: esso tiene
conto delle esigenze dell'utente finale, ma concentrato soprattutto sulla singola problematica che un
pacchetto applicativo deve risolvere. Esso quindi interessato in particolare a come articolare ciascun
pacchetto in programmi (ad es. caricamento di movimenti, aggiornamento di archivi base, calcolo di telai,
distribuzione del carico, etc.), alle sezioni gestione lavori e archiviazione del sistema operativo (s.o.) e a
tutti quei processori del s.o. che o sono strumenti per la realizzazione e messa a punto dei programmi
(traduttori, editors, interpreti, etc.) o possono essere inglobati nei pacchetti stessi (programmi di sort, merge,
etc.).
Il personale di gestione del sistema interagisce con i pacchetti applicativi e quindi con i singoli
programmi utilizzando il s.o. che coordina e disciplina la loro esecuzione nella sezione gestione lavori.
Il progettista del s.o. ovviamente interessato a tutti gli strati del sistema software, ma deve anche
conoscere a vari livelli di dettaglio tutti gli strati superiori del sistema per venire incontro alle esigenze
dell'utenza. Peraltro, esso deve soprattutto conoscere il sistema hardware (architettura e .unit componenti)
per poter progettare la sezione del s.o. gestione del sistema. .Tale sezione infatti vede il sistema
hardware in quanto interviene ripetuta- mente durante l'esecuzione di un qualsiasi programma, sia per
controllarne l'avanzamento con l'attribuzione delle risorse necessarie, sia per sovraintendere alle operazioni di
ingresso uscita e alla loro sincronizzazione.
Il sistemista hardware opera a livello di architettura hardware del sistema e quindi lo vede come un
insieme di componenti, dette unit hardware, fra loro connesse in una determinata struttura logico-topologica:
unit classiche sono il processore centrale (CPU), l'unit aritmetico-logica (ALU), i sistemi di ingresso-uscita
(I/O), le memorie ed appositi canali e bus per il loro collegamento. Oltre all'architettura fondamentale di
Von Neumann (lo schema classico di collegamento fra le unit citate), sono oggi possibili anche altre
architetture, sia costituenti una semplice evoluzione di quella fondamentale in quanto ottenute multiplando le
unit componenti e realizzando appositi collegamenti e sincronizzazioni fra esse, sia basate su principi diversi.
Ovviamente il sistemista hardware deve anche conoscere in un certo dettaglio gli strati inferiori del
sistema software, in quanto l'architettura del sistema hardware e le funzioni sviluppate da ciascuna unit
componente condizionano strettamente la potenzialit e il parallelismo di esecuzione delle funzioni elementari
presenti nei programmi degli strati superiori. In particolare, la potenzialit condizionata dal linguaggio
macchina dei processori mentre il parallelismo dal tipo di architettura impiegata.
Il progettista delle unit hardware studia a sua volta l'unit a livello architettura, individuandone le
macchine componenti pi elementari e le loro connessioni. Tale approccio pu ovviamente essere iterato
dando luogo ad un processo iterativo pi o meno lungo in dipendenza della complessit delle funzioni
espletate dall'unit, e che conduce alla individuazione delle macchine elementari che la compongono e delle
relative connessioni; ad esempio una unit aritmetica composta da un divisore, un moltiplicatore, un
sottrattore ed un addizionatore; questultimo, se l'unit in virgola mobile, composto da una macchina per il
confronto degli esponenti e da un addizionatore in virgola fissa, che a sua volta composto da un
addizionatore di cifre e cos via.
Le macchine elementari o sono di tipo elettromeccanico o di tipo elettronico; con particolare riferimento a
queste ultime, esse sono in genere prodotte in appositi chip di circuiti integrati (in tali chip, peraltro, si
realizzano anche funzioni pi complesse, quali. quelle corrispondenti ad una intera unit): di esse si richiede
dapprima un progetto logico e successivamente un progetto elettronico che sono di competenza
rispettivamente del progettista di reti logiche e del progettista di circuiti elettronici.


3

I modelli fondamentali e l'architettura

L'architettura di un sistema di elaborazione delle informazioni non prescinde dai modelli teorici di base
dell'informatica; anzi, almeno sul piano logico-funzionale, ne la pratica attuazione. Il modello fondamentale
al quale si ispirano le architetture dei moderni calcolatori quello di Von Neumann, che tra breve
presenteremo, anche se il modello originario ha subito nel tempo revisioni sostanziali, ma non tali da ridefinire
un distinto modello.
Il modello di Von Neumann nasce come evoluzione dei modelli preesistenti degli automi e della macchina
di Turing e pertanto, prima di presentarlo, richiamiamo i principi introdotti dai suddetti modelli.
I concetti fondamentali introdotti indipendentemente dal modello di Von Neumann sono, in sintesi:

- l'algoritmo come concetto intuitivo: una sequenza finita di azioni elaborative da eseguire
automaticamente: l'algoritmo necessita di un esecutore per essere eseguito;
- il modello di automa: ciascun automa esegue un algoritmo, ottenuto come sequenza di non ulteriormente
precisate "uscite", in risposta ad analoghi "ingressi"; con l'automa si introduce il concetto di stato;
- il modello di Turing: ciascuna macchina esegue un algoritmo, come sequenza di alcune precisate azioni
elaborative elementari (destra, sinistra, leggi, scrivi, ...) e, sorprendentemente, la tesi di Church ha
affermato che questo semplice modello consente in realt di fornire una definizione di algoritmo:
algoritmo ci che pu essere calcolato da una macchina di Turing.
- esiste una distinta macchina di Turing per ciascun distinto problema da calcolare.

Ma il concetto che caratterizza un calcolatore quello di possedere un programma registrato in
memoria: la medesima macchina fisica (il calcolatore), attrezzata con differenti "programmi" in grado di
rappresentare tutte le possibili macchine di Turing (fatti salvi soltanto alcune questioni di natura puramente
teorica sulla "capacit" di memoria).
Un "programma" la descrizione formalizzata di un algoritmo, espressa in un linguaggio di
programmazione: questo il nuovo concetto che verr introdotto con i prossimi modelli.
In un modello alternativo, la stessa macchina di Turing potrebbe in effetti essere una macchina "a
programma": basterebbe in proposito concepire un "linguaggio" formale con il quale esprimere la sequenza
delle azioni elaborative elementari ed un organo che interpretasse tali "istruzioni" eseguendole; la descrizione
della macchina avverrebbe attraverso tale "programma" piuttosto che attraverso la tabella delle transizioni
classica dei modelli di automa e di Turing.








4

Modello di Von Neumann

Larchitettura dei calcolatori elettronici attuali trae le sue origini da un modello generale di elaboratore,
concepito dal matematico J ohn Von Neumann ed illustrato nel 1945 in una proposta
[1]
per la realizzazione di
un nuovo calcolatore
[2]
chiamato EDVAC (Electronic Discrete Variable Computer). La realizzazione
dellEDVAC fu effettivamente portata a termine solo nel 1952 dall'Istituto per gli Studi Avanzati (IAS) di
Princeton (USA), ma gi nel 1948 era stato realizzato in Inghilterra, presso lUniversit di Manchester, un
calcolatore (Manchester Mark I) basato sul modello di Von Neumann.

4.1

Modello penna e carta
Prima di introdurre il modello di Von Neumann, che ha ispirato larchitettura dei primi calcolatori
elettronici, se ne illustra una versione ipotetica in cui il ruolo di esecutore affidato ad un operatore
inintelligente dotato di penna e carta come strumenti ausiliari.
Un operatore inintelligente legge istruzioni scritte su un foglio di carta (il programma) e dispone da un
lato di un tabulato in cui trascrive e da cui legge i risultati di operazioni elementari e dall'altro una calcolatrice
elettrica per l'esecuzione di dette operazioni. Le istruzioni che costituiscono il "programma di calcolo"
richiedono in generale l'esecuzione delle seguenti operazioni:

- operazioni di ingresso dati, cio assegnazione di valori alle variabili del programma;
- operazioni di trasferimento dati dal tabulato ai registri della calcolatrice e viceversa;
- operazioni aritmetiche e logiche, eseguite dalla calcolatrice a seguito di azionamento di appositi tasti;
- operazioni di uscita, mediante le quali l'operatore restituisce al committente i risultati della elaborazione.

Il programma eseguito dalloperatore il risultato di unapprofondita analisi del problema e traduce, in
termini operativi e con limpiego delle sole istruzioni che loperatore in grado di interpretare, lalgoritmo che
una persona esperta (il programmatore) ha individuato come adatto a risolvere il problema.


4.2

Le unit del modello di Von Neumann
Il modello di Von Neumann aderisce alla metafora "penna e carta" e, secondo esso, un sistema
costituito dalle seguenti "unit":


Figura 4.1 Modello di Von Neumann

- L'unit di ingresso (input), che consente l'immissione (in gergo "lettura") di dati nella memoria in fase di
esecuzione del programma e del programma stesso in una fase preliminare che diremo di caricamento del
programma.
- L'unit di memoria, nella quale vengono registrate tutte le informazioni, cio le istruzioni del programma e
i dati originari, intermedi e finali; essa svolge in effetti la duplice funzione del foglio su cui veniva scritto il
programma e del tabulato per i dati di cui all'esempio.
- L'unit di controllo o di governo, detta anche processore, che presiede a tutte le operazioni del
calcolatore, interpretando le istruzioni successivamente prelevate dalla memoria ed inviando alle specifiche
unit i segnali per l'esecuzione delle singole operazioni.
- L'unit aritmetico-logica o di elaborazione (Arithmetic-Logic Unit - ALU), in grado di eseguire, a
richiesta dell'unit di controllo, le operazioni aritmetiche e logiche.
- L'unit di uscita (output), per la presentazione dei risultati dell'elaborazione su appositi documenti.

Il modello rappresentato graficamente in figura 10.1, ove sono posti in evidenza con linee tratteggiate lo
spostamento dei dati fra le diverse unit e con le linee piene la funzione di supervisione esercitata dall'unit di
controllo sulle altre unit.

4.3

Le istruzioni elementari del modello
Pur senza entrare nel dettaglio operativo, il modello si basa sulla scelta di alcune operazioni elementari
(azioni elaborative) semplici, che costituiscono le componenti fondamentali delle elaborazioni:
- operazioni di ingresso dati, cio assegnazione di valori alle variabili del programma: avvengono fra
l'unit di ingresso e la memoria;
- operazioni di trasferimento dati dalla memoria ai registri dell'ALU e viceversa;
- operazioni aritmetiche e logiche, eseguite all'interno dell'ALU;
- operazioni di uscita, mediante le quali l'elaboratore restituisce all'esterno i risultati della elaborazione:
avvengono fra la memoria e l'unit di uscita.

Tutte le suddette operazioni avvengono sotto il controllo del processore (unit di controllo) che "legge" le
istruzioni del programma memorizzato nell'unit di memoria e le esegue.

4.4

Caricamento del programma e sua esecuzione
L'esecuzione di un programma al calcolatore avviene fondamentalmente in due "fasi" o "tempi"
successivi:

- caricamento del programma (al tempo di caricamento - load time);
- esecuzione del programma (al tempo di esecuzione - run time)

Nella prima fase, il programma viene prelevato dall'unit di ingresso e registrato in memoria, nella
seconda esso viene eseguito per opera dell'unit di controllo che interpreta le successive istruzioni ed attiva
opportunamente le altre unit. Si noti che, mentre il programma viene letto nella fase di caricamento
preventivo, la lettura dei dati una delle operazioni richieste dal programma e pertanto questa viene eseguita
in fase di esecuzione, nei tempi e con le modalit prefissate dal programma.
Questa precisazione stata qui fatta soprattutto per colui che legge per la prima volta i particolari del
funzionamento del calcolatore, mentre l'"esperto" dovrebbe gi sapere che in effetti dal punto di vista del
processore (e quindi dell'architettura del sistema) le due fasi di cui sopra non sono distinte: la fase di
caricamento del programma , in effetti, essa stessa la fase di esecuzione di un altro programma particolare
(il caricatore di programmi o loader). In altri termini, le istruzioni del programma sono i dati di un altro
programma.


4.5

L'algoritmo del processore
Il programma una sequenza di "istruzioni", ciascuna delle quali esprime, in un linguaggio prefissato, una
delle azioni elaborative proprie del sistema. Il linguaggio direttamente interpretato dal processore il
linguaggio macchina e quindi il programma e le istruzioni del modello in esame sono quelli di macchina.
Ma come fa il processore ad eseguire le istruzioni del linguaggio macchina, mentre questo in memoria?
Nella unit di controllo realizzato circuitalmente (o comunque nella macchina di livello immediatamente
inferiore a quella in esame) un apposito algoritmo del processore che nelle sue linee essenziali (nel seguito
l'algoritmo sar particolarizzato e specializzato), opera alternando in ciclo due attivit fondamentali (fig. ):

- accesso ad una istruzione (fetch);
- esecuzione dell'istruzione (execute).

Nella prima fase, l'unit di controllo accede ad una istruzione (determinata dall'istruzione
precedentemente eseguita), prelevandola dalla memoria e trasportandola nei propri registri. Nella fase di
esecuzione, l'istruzione cos individuata viene interpretata ed eseguita, con l'ausilio, a seconda dei casi, delle
unit di ingresso, aritmetico-logica e di uscita. Infine, l'unit di controllo riprende ciclicamente un nuovo
accesso ed una nuova esecuzione.
Nonostante la struttura di principio estremamente elementare che risulta dallo schema proposto, il
calcolatore numerico possiede notevoli capacit elaborative e flessibilit di impiego: tali prerogative gli
derivano fondamentalmente dalla enorme velocit operativa, dell'ordine della decina di nanosecondo per
azione elaborativa elementare, dalla capacit di memoria, in grado di registrare un numero di informazioni
praticamente illimitato e soprattutto dalla possibilit di memorizzare i programmi e di procedere pertanto alla
interpretazione delle relative istruzioni a velocit elettronica.


5

Organi di un calcolatore: unit di ingresso e uscita

Con riferimento al modello di Von Neumann, daremo ora alcuni cenni sui principi di funzionamento e sui
compiti specifici delle singole unit costituenti un calcolatore numerico.

5.1

Unit di ingresso
In dipendenza del tipo di applicazione, della classe e del costo del calcolatore, l'unit di ingresso pu
essere costituita da macchine di differenti caratteristiche; spesso, anzi, un calcolatore dispone di pi unit di
ingresso di tipi diversi.
Unit di ingresso tipiche e diffuse sono il mouse e la tastiera. In altri casi la funzione di ingresso viene
assolta registrando i dati, con tecnologia magnetica oppure ottica, su di un opportuno supporto ed azionando
successivamente un "lettore" dei dati ivi registrati oppure ancora unit di ingresso pi sofisticate come le
unit di ingresso grafiche, i convertitori analogico-numerici ed in genere sensori, gli apparecchi per la
scansione di fotografie o disegni (scanner), gli apparecchi per la ricezione a distanza dei dati, come i modem,
i lettori ottici (di caratteri o di codici a barre), microfoni, le video-camere.
Una analisi con un livello di dettaglio appena pi approfondito si trova in Unit di ingresso.

5.2

Unit di uscita
Le unit di uscita pi diffuse sono le unit video (o monitor) e le stampanti.
I monitor pi diffusi oggi sono costituiti da un monoscopio pi o meno ampio (ad esempio, 14" o 27") sul
quale il pennello elettronico in grado di tracciare una matrice di punti (ad esempio ,
, ), ciascuno con k (ad esempio, k=2, 16, 256,...) colori distinti. Vengono in tal modo
composti sullo schermo frasi, schemi e disegni. Oltre ai classici monitor a pennello elettronico, vanno sempre
pi diffondendosi oggi i monitor "piatti" a cristalli liquidi.
Le stampanti sono caratterizzate da:

-

tecnologia utilizzata (ad impatto, laser, getto d'inchiostro,);
-

velocit di stampa:
-

risoluzione
-

tipi di caratteri usati
-

linguaggio .

La velocit di stampa si misura , a seconda delle tecnologie, in:

-

cps (character per second),
-

lpm, linee al minuto,
-

ppm, pagine al minuto

La risoluzione indica il numero di punti da cui costituito ciascun carattere oppure il numero di punti per
mm
2
(ad esempio le stampanti ad aghi rappresentano ciascun carattere con 9 oppure 24 punti, una laser ha
una risoluzione di ) dpi, (punti per pollice, dot per inch).
I tipi di caratteri (o font) con i quali la stampante compone i testi possono essere interni, cio presenti
nella memoria associata alla stampante, oppure esterni cio da caricare nella stampante a mezzo di appositi
programmi (i cosiddetti driver). I caratteri di ciascun font possono inoltre essere di dimensioni fisse, oppure
scalabili (cio modificabili nelle loro dimensioni): naturalmente le condizioni di migliore velocit operativa e
flessibilit si hanno con font interni e scalabili;
infine da notare che esistono appositi "linguaggi per la stampa" (il pi diffuso, standard di fatto, il
Postscript) per descrivere le caratteristiche editoriali ed estetiche di un documento (font e dimensioni, spazi,
salti pagina, giustifiche, etc); i driver di stampa inviano alla stampante la stampa da realizzare descritta da
questo linguaggio
[3]
, che quindi caratterizza la stampante.
Fra le altre unit di uscita si segnalano i plotter)gli altoparlanti, i modem, i convertitori numerico-analogici
e gli attuatori in genere.
da notare che spesso le apparecchiature di ingresso-uscita (I /O, input-output) hanno esse stesse
capacit di elaborazione e costituiscono un elaboratore specializzato, con proprio processore ed unit di
memoria.

Una analisi con un livello di dettaglio appena pi approfondito si trova in Unit di uscita.


6

La memoria principale (o centrale)

La memoria centrale o principale di un elaboratore (la memoria del modello di Von Neumann) presenta
le seguenti caratteristiche
[4]
:
- costituita da un insieme ordinato di registri, che nel caso specifico prendono il nome di locazioni;
- all'insieme ordinato di locazioni si pu associare la successione dei numeri naturali, identificando in tal
modo ciascuna di esse con un numero, che si dice indirizzo di memoria;
- in ciascuna cella pu essere contenuto il valore di un'informazione, cio un dato oppure un'istruzione di un
programma;
- l'operazione di prelievo di un'informazione dalla memoria non distrugge il contenuto della locazione su cui si
operato e pertanto l'informazione stessa resta ancora ivi disponibile per ulteriori operazioni; viceversa, la
registrazione in memoria distrugge l'informazione precedentemente memorizzata, sostituendola con quella
nuova;
- le operazioni di prelievo e di registrazione vengono anche dette rispettivamente di lettura e di scrittura in
memoria; tali dizioni, peraltro, non vanno confuse con quelle di lettura e scrittura da unit di ingresso e
uscita: la lettura in memoria preleva dalla memoria, la lettura come input preleva dall'esterno e scrive in
memoria; viceversa per la scrittura;
- le informazioni presenti nella memoria principale sono direttamente accessibili dall'unit di controllo e
possono dunque essere direttamente elaborate; viceversa le informazioni registrate sulle memorie di massa
(di cui alla voce successiva) richiedono per l'elaborazione un preventivo trasferimento nella memoria
centrale.

I principali parametri caratteristici delle memorie sono:

- il tempo d'accesso, inteso come tempo necessario a compiere una singola operazione di lettura o scrittura:
i relativi valori sono dell'ordine delle decine di nanosecondi ( il parametro che rappresenta la velocit di
memoria);

- la capacit, ossia la quantit di memoria disponibile.

La capacit delle memorie (centrali o di massa, vedi in seguito) viene espressa spesso in byte, essendo il
byte una stringa di otto bit, o nei suoi multipli:

- 1 kB (kilobyte) = 2
10
1'024 byte;
- 1 MB (Megabyte) = 2
20
1'049'776 byte;
- 1 GB (Gigabyte) = 2
30
10
9
byte;
- 1 TB (Terabyte) = 2
40
10
12
byte;
- 1 PB (Petabyte) = 2
50
10
15
byte.

La capacit di memoria centrale dei sistemi di elaborazione assume valori dell'ordine di grandezza dei
Mega- o dei Gigabyte, con un continuo crescendo negli ultimi anni dovuto al crescere delle esigenze ed al
diminuire dei costi. La memoria di tipo modulare, nel senso che pu essere composta a pezzi,
raggiungendo cos la capacit dello specifico impianto.
Le memorie centrali sono statiche, in esse cio non vi sono organi meccanici in movimento e vengono
anche dette RAM (Random Access Memory - memoria ad accesso casuale), in quanto caratterizzate da
una tecnica di accesso alla singola locazione cosiddetta casuale, per la quale, cio, il tempo d'accesso
costante, indipendentemente dalla posizione (cio dall'indirizzo) della locazione.
Gli elementi costituenti i registri sono realizzati mediante appositi componenti elettronici detti multivibratori
bistabili o flip-flop. La tecnologia oggi diffusa (memorie realizzate su silicio o comunque mediante
elettronica a stato solido) tale da renderle volatili: l'informazione registrata viene perduta all'atto della
interruzione dell'alimentazione elettrica. Esse operano dunque in associazione con memorie non volatili (a
tecnologia magnetica) che costituiscono le cosiddette memorie ausiliarie o di massa (cfr. successivo)
La tecnologia di alcune memorie (centrali o di massa) tale da consentirne un uso per realizzare soltanto
l'operazione di lettura e non quella di scrittura: vengono allora dette ROM: Read Only Memory. La
registrazione di tali memorie avviene una tantume non in esercizio, bens in fase di costruzione oppure
mediante apposite apparecchiature speciali. Alcuni tipi di ROM possono essere scritte una sola volta, altre
sono riscrivibili, ma per un numero limitato di volte.
Una parte, in genere limitata, delle memorie centrali di un elaboratore costituita da una ROM. In tal
caso, la RAM viene utilizzata per la registrazione di programmi e dati per le normali elaborazioni, mentre la
ROM registra parti di programmi che debbono risiedere stabilmente nell'elaboratore (un esempio tipico
costituito dal programma per il caricamento iniziale del sistema operativo, oppure dall'interprete del linguaggio
BASIC in alcuni Personal Computer).

7

Memorie di massa

Organi di un elaboratore tecnologicamente e funzionalmente diversi dalle memorie centrali sono le
memorie cosiddette ausiliarie o memorie di massa
[5]
. Esse sono non volatili, di capacit e tempo d'accesso
maggiori di quelli delle memorie centrali ed operano funzionalmente (rispetto al modello di Von Neumann)
come unit di I /O piuttosto che come memorie.
La caratteristica funzionale la pi rilevante:

Le informazioni contenute nelle memorie di massa debbono essere prima trasferite nella memoria
centrale e successivamente elaborate.

Lo schema di funzionamento di un elaboratore evolve dunque in quello di figura 4.1. La memoria di massa
svolge prevalentemente il ruolo di archivio di informazioni (programmi e dati) ed anche tecnicamente i dati su
di esse sono organizzati in archivi (o file): quando necessario, una parte dell'archivio (detta tecnicamente
record) viene spostata in memoria centrale, quivi elaborata e riportata nella memoria di massa.
Le capacit di un'unit di memoria di massa sono dell'ordine delle dei Gigabyte e raggiunge i Terabyte per
grossi sistemi di calcolo; per contro, i tempi di lettura e scrittura sono dellordine delle decine o centinaia di
millisecondi e sono variabili con la posizione del dato sul supporto, che deve essere raggiunta dal sistema
meccanico con le testine di lettura e scrittura. In contrapposizione alle RAM, esse vengono anche dette non
casuali (i nastri) o dirette (i dischi).
Ad un sistema di calcolo sono in genere collegate pi unit di memoria di massa, sia per coprire esigenze
diverse con caratteristiche tecniche differenti, sia per aumentare la capacit di memoria complessiva.
La tecnologia utilizzata quella della registrazione su una superficie magnetica; sono inoltre diffuse
memorie di tipo ottico che utilizzano la tecnologia laser.
I supporti fisici assumono la forma di dischi o nastri; i dischi possono essere fissi oppure rimovibili, cio
intercambiabili sulle rispettive unit, i nastri sono sempre rimovibili.
Si stanno di recente sviluppando sistemi a stato solido con caratteristiche funzionali di dischi (le
cosiddette "penne digitali").
Premesso che un archivio si dice in linea se collegato ed accessibile da parte dell'elaboratore durante
l'esecuzione di un programma, fuori linea altrimenti, i supporti fissi costituiscono archivi permanentemente in
linea, in quanto i suoi dati possono essere prelevati e trasferiti nella memoria centrale durante l'esecuzione.
In essi sono registrate le informazioni di pi frequente impiego.

Figura 7.1. Schema di principio di un calcolatore con memoria di massa

I supporti rimovibili vengono invece montati di volta in volta sull'apparato che contiene il sistema di lettura-
scrittura (detto anche driver fisico) e costituiscono un serbatoio di dati o biblioteche di programmi di
estensione praticamente illimitata. I supporti rimovibili sono inoltre impiegati per il trasferimento di programmi
e dati verso altri sistemi di elaborazione e come sistema di salvataggio (backup) degli archivi in linea,
effettuato periodicamente per consentire la ricostruzione dello stato del sistema a seguito di eventuali
danneggiamenti dei dati in linea.
Una sintesi delle caratteristiche principali di memorie principali e di massa si trova in Sintesi-memorie.
Infine, in Occupazione-di-memoria si possono leggere alcuni dati che forniscono un'idea generale delle
capacit di memoria richieste per alcune applicazioni.


8

Unit logico-aritmetica

Il funzionamento dell'unit di controllo (processore) e dell'unit aritmetico-logica (ALU) realizzato
mediante appositi circuiti elettronici che vengono detti circuiti di commutazione o logici (switching
circuits), tipicamente realizzati con tecnologie a stato solido ed assemblati in appositi microcontenitori detti
chip. I chip vengono poi montati su schede sistemate in appositi alloggiamenti (slot) della carrozzeria del
calcolatore.
Costituenti fondamentali dei circuiti logici sono i registri (cfr. 1): i dati prelevati da questi sono elaborati
circuitalmente secondo determinate leggi, ad esempio quelle aritmetiche, e memorizzati in altri registri,
oppure vengono semplicemente spostati in altri registri.
L'unit logico-aritmetica un insieme di circuiti logici in grado di eseguire, su comando dell'unit di
controllo, le operazioni elementari di elaborazione dei dati: aritmetiche (ed eventualmente alcune
trigonometriche o esponenziali) per dati di tipo numerico, logiche per dati booleani ed inoltre confronti fra dati
ed in generale operazioni di manipolazione di bit.
Schematicamente l'ALU puo' essere vista come in figura 5.1: due registri di ingresso (O
1
, O
2
), destinati a
contenere gli operandi di un'operazione binaria (ad esempio i due addendi di un'addizione) ed un registro di
uscita (U) destinato a contenere il risultato (ad esempio la somma); appositi segnali provenienti dall'unit di
controllo (ad esempio +, -, *, /) rendono attiva l'unit che effettua l'operazione op selezionata:

U =O
1
op O
2
U =O
1
op O
2


Figura 8.1 Unit aritmetico logica (ALU)

I tipi di dato trattati dall'ALU sono elementari e di conseguenza tali sono le operazioni su di essi. Ad
esempio, un'unit aritmetica potrebbe trattare soltanto numeri interi (tecnicamente detti anche in virgola fissa,
fixed point) ed il calcolatore potrebbe rnviare ad apposite unit al software oppure ad apposite unit speciali
l'esecuzione delle operazioni sui numeri reali (tecnicamente detti in virgola mobile, floating point); unit
aritmetiche pi potenti trattano invece anche l'aritmetica dei reali.
L'unit speciale eventualmente preposta allaritmetica dei reali stata talora detta coprocessore
matematico. Il nome di processore gli deriva dal fatto che l'unit tutta opera a sua volta secondo lo schema
di Von Neumann, con un processore che esegue gli algoritmi aritmetici.


9

Il processore e l'unit centrale

Lunit di controllo, unitamente con lALU ed alcuni registri fondamentali costituisce la cosiddetta CPU:
Central Processor Unit, nota anche semplicemente come processore (hardware).
Come si accennato per l'ALU, i circuiti del calcolatore sono predisposti per l'esecuzione di alcune
operazioni elementari, ma attendono di volta in volta appositi segnali di abilitazione per essere attivati.
questa la funzione della unit di controllo. Essa accede alla memoria prelevandone via via le istruzioni da
eseguire, le interpreta e le esegue con laiuto dellALU, secondo l'algoritmo del processore tipico del modello
di Von Neumann (cfr. 5.?). Detto algoritmo, unitamente con la architettura del processore esegue
lalgoritmo dellutente programmato nel linguaggio macchina. Lo studio del processore dunque un
argomento complesso che richiede lanalisi da un lato dellarchitettura dello stesso, dallaltro quello del suo
algoritmo ed infine lo studio del linguaggio macchina. Si rinvia a tale scopo al capitolo V.
Una valutazione complessiva delle prestazioni di una CPU non puo' non tenere in conto la sua
architettura, il suo linguaggio macchina, il software di base di cui attrezzato e cos via. Tuttavia, alcuni
parametri fondamentali si usano per fornire indicazioni grossolane su tali prestazioni: il parallelismo in bit e la
velocit operativa (velocit del processore): essi costituiscono in qualche modo le specifiche di targa della
CPU.
Il parallelismo in bit la lunghezza in bit dei registri di macchina: in ogni microoperazione, il processore
tratta dati composti da k bit prelevandoli dai registri, operandoli nell'ALU e reimmettendoli in registri (invero,
il concetto pi articolato, ma in questa sede introduttiva ci accontenteremo di questa visione semplificata).
Ovviamente, ci non esclude che operazioni pi complesse siano costituite, a livello ancora hardware o
anche software, da pi operazioni su k bit in modo da realizzare complessivamente operazioni su m>k bit.
Il parallelismo in bit tipico dei processori pi moderni 64 bit; per applicazioni speciali incorporate
(embedded) si usano ancora processori ad 8 bit, mentre per applicazioni scientifiche avanzate sono
disponibili anche processori a 128 bit ed oltre.
Le diverse fasi del ciclo di macchina si susseguono scandite da un segnale periodico di campionamento o
clock, la cui frequenza determina la velocit operativa del processore. A parit di struttura logica ed
organizzativa, il numero di istruzioni al secondo che il processore esegue proporzionale a detta frequenza.
Quest'ultima si misura in Hz ed attualmente si attesta sui GHz.
La velocit operativa della CPU si misura in ips (istruzioni per secondo) o in flops (Floating
Instructions per Second): gli ips vengono utilizzati per caratterizzare le prestazioni della macchina in
applicazioni di tipo generale, i flops per applicazioni di calcolo numerico. La velocit varia da alcuni Mips per
i processori pi elementari ai Teraflops delle grosse architetture parallele (ove in un'unica CPU coesistono
molti processori che operano simultaneamente, in parallelo).
Va comunque ribadito che le misure di cui sopra sono grossolane, in quanto le prestazioni complessive di
una CPU dipendono da molti altri fattori che non possibile trattare in questa sede introduttiva.
Negli approfondimenti Intel e Motorola sono mostrate due tabelline che illustrano gli sviluppi dei moderni
processori.


[1]
John von Neumann, First Draft of a Report on the EDVAC, Univ. of Pennsylvania (1945)
[2]
All'epoca era gi in costruzione l'ENIAC, che vide la luce nel 1946 e pu ritenersi il primo computer, ma l'ENIAC non
era a programma registrato.
[3]
Un documento da stampare pu anche essere memorizzato in un file in "formato Postscript" ed essere
successivamente inviato alla stampa.
[4]
L'argomento delle memorie sar ampiamente ripreso in seguito. In questa sede sono presentate solo le caratteristiche
introduttive.

[5]
Anche queste memorie saranno approfondite in seguito