MEMORIE DI MASSA TERMINALI STAMPANTI PLOTTER

Transcript

MEMORIE DI MASSA TERMINALI STAMPANTI PLOTTER
ARCHITETTURA DI UN CALCOLATORE
In questa sezione si prendono in esame i componenti fondamentali di un calcolatore. Si possono individuare
tre strutture principali (v. Fig. 1) collegate fra loro.
Fig. 1
La CPU (Central Processing Unit, in italiano normalmente detta Unità Centrale) ha un ruolo sia di
elaborazione che di controllo. Nei calcolatori attuali in pratica è identificabile con un singolo circuito, il
microprocessore. Più in generale, è quell'insieme di circuiti dedicati all'esecuzione delle operazioni
elementari sui dati ed al controllo dell'intero sistema. La memoria centrale è un insieme di celle, ciascuna
delle quali contiene 1 byte ed è individuata da un numero progressivo ad essa associato, detto indirizzo. La
memoria centrale contiene, durante il funzionamento del calcolatore, sequenze binarie che possono
rappresentare dati o codici corrispondenti alle istruzioni che costituiscono i programmi in esecuzione. Il bus
è l'insieme dei molti collegamenti elettrici (fisicamente è un insieme di piste di un circuito stampato, in cui
transitano segnali elettrici controllati da appositi dispositivi) che collega le varie parti del calcolatore e
consente lo scambio di dati e segnali di controllo. I cosiddetti dispositivi di input/output sono dispositivi che
consentono l'acquisizione dei dati da parte del calcolatore (input), la loro archiviazione e la loro
presentazione verso il mondo esterno (output). Una classificazione schematica dei dispositivi di input/output
è la seguente (in corsivo i dispositivi ormai caduti in disuso):
MEMORIE DI MASSA
STAMPANTI
DISCHI MAGNETICI
DISCHI OTTICI
NASTRI MAGNETICI
MEMORIE FLASH
TAMBURI MAGNETICI
SCHEDE PERFORATE
A MARGHERITA
AD AGHI
TERMICHE
A GETTO DI INCHIOSTRO
LASER
TERMINALI
PLOTTER
TASTIERA / MOUSE
MONITOR ALFANUMERICI/ GRAFICI
A RULLO
XY
Fig. 2
1
1) Memorie di massa - possono essere:
a) dischi, magnetici oppure ottici,
b) nastri magnetici,
c) memorie flash,
d) tamburi magnetici (ormai in disuso),
e) schede perforate, dispositivi ormai del tutto obsoleti.
I dischi, sia magnetici che ottici, possono essere suddivisi in dischi fissi o asportabili.
2) Terminali, composti di solito da una tastiera, un mouse e un monitor di tipo grafico (un tempo esistevano
anche monitor di tipo alfanumerico, che cioè possono rappresentare solo caratteri dell'alfabeto o numeri
o alcuni simboli grafici predeterminati). Nei monitor di tipo grafico ogni punto che compone
un’immagine sul video (pixel, contrazione di ‘picture element’) è controllabile singolarmente. Quindi,
con un terminale grafico si possono visualizzare grafici ed immagini, la cui qualità è determinata dalla
risoluzione del dispositivo, cioè dal numero di pixel che si hanno a disposizione per formare l'immagine.
Un terminale di tipo grafico può, ovviamente, visualizzare anche caratteri alfanumerici.
3) Stampanti: possono essere
a) a margherita,
b) ad aghi,
c) laser,
d) a getto di inchiostro,
e) termiche o, in generale, chimiche.
4) Plotter , che possono essere a rullo o piani (di tipo X-Y).
CPU
La CPU può essere considerata il vero e proprio cuore del sistema: La struttura della CPU è la seguente
(Vedi fig. 3)
CLOCK
Fig.3
2
La CPU è un dispositivo sequenziale, cioè può eseguire una sequenza di operazioni (v. sotto), una alla volta,
in successione. E’ anche un dispositivo di tipo sincrono. Questo significa che esiste un circuito, detto clock,
il cui compito è quello di sincronizzare tutte le operazioni che avvengono nel calcolatore, generando il
cosiddetto segnale di clock. Questo è costituito da una serie di impulsi che si ripetono per milioni/miliardi di
volte ogni secondo, ad intervalli regolari, e viene inviato in ingresso alla CPU e a tutti gli altri dispositivi che
costituiscono il calcolatore. La CPU e gli altri dispositivi diventano attivi, cioè eseguono una operazione,
soltanto ogni volta che ricevono un impulso di clock. In pratica, ogni volta che viene inviato un impulso alla
CPU, questa esegue una operazione elementare che, come vedremo, implica un cambiamento del suo stato
ed, eventualmente, dello stato dei dispositivi ad essa collegati. La CPU è internamente suddivisa in una
Unità di Controllo, una Unità Logico-Aritmetica, chiamata di solito ULA in italiano (ALU in inglese) e un
insieme di registri che servono a contenere i dati da cui dipendono i risultati dell’operazione che la CPU sta
eseguendo: la CPU, infatti, non può operare direttamente sulla memoria ma ha bisogno di trasferire i dati al
suo interno, e in particolare nei registri, prima di poterli elaborare. Alcuni registri possono essere riservati ad
usi specifici; ad esempio contenere gli operandi, nel caso in cui si debba eseguire una operazione matematica
(registri dati); oppure contenere l'indirizzo, all'interno della memoria, della prossima operazione da eseguire
(registro Program Counter), o i bit di overflow e di carry (riporto) e, più in generale, bit che segnalano
l’occorrenza di eventi specifici quando si esegue una operazione (registri di stato). La CPU è collegata alla
memoria centrale tramite un bus, suddivisibile in bus dati, bus indirizzi e bus di controllo, a seconda dei
segnali che vengono trasmessi sulle piste corrispondenti.
Ogni CPU dispone di un proprio linguaggio macchina, ovvero di una codifica, mediante sequenze binarie,
delle diverse operazioni che può compiere: ogni operazione ha una diversa codifica. Tali sequenze binarie
sono chiamate istruzioni. Da questo punto di vista la CPU può essere schematizzata nel modo seguente (Fig.
4):
DATI
Fig. 4
Il contenuto dei registri che si trovano all'interno della CPU (che contengono i dati su cui deve essere
eseguita la prossima operazione, l’indirizzo dell’operazione, i bit che servono a segnalare particolari
situazioni, ecc.) definisce lo stato in cui si trova la CPU. La combinazione fra la sequenza binaria
(istruzione) in ingresso e lo stato in cui si trova la CPU determina un risultato (output) che è sempre lo stesso
a parità di istruzione e stato; in pratica la CPU associa alla lunga sequenza binaria formata dall’input e dallo
stato una nuova sequenza binaria (output) che dovrà essere opportunamente interpretata. Questa nuova
sequenza è il risultato dell’esecuzione dell'istruzione. L'esecuzione di una istruzione modifica il contenuto
dei registri, quindi lo stato della CPU. Una operazione eseguita dal calcolatore corrisponde quindi ad un
cambiamento di stato della CPU. Il nuovo stato in cui si trova la CPU dopo l’esecuzione dell’operazione è il
risultato dell’operazione. In pratica, la CPU è una complicatissima rete logica che realizza una funzione
booleana avente un elevatissimo numero di variabili di input e di output.
Per fare un esempio estremamente banale, facendo il paragone con l’uso di una macchina da scrivere, fornire
un'istruzione alla CPU può corrispondere alla pressione di un tasto, mentre lo stato può corrispondere alla
condizione in cui si trova il tasto di shift; quando, ad esempio, si preme il tasto "A" (che, in questo esempio,
3
corrisponde all’istruzione da eseguire) nella macchina da scrivere, se il tasto di shift (stato) è premuto il
risultato sarà il carattere A maiuscolo, se non è premuto il risultato sarà una a minuscola.
Per risolvere qualunque problema, bastano tre tipi di istruzione: istruzioni aritmetiche e logiche (abbiamo
visto che con la somma e lo shift si possono eseguire anche sottrazioni, moltiplicazioni o divisioni),
operazioni di accesso alla memoria (ad esempio la possibilità di spostare un dato da una posizione all'altra
all'interno della memoria oppure di leggere un dato e di inserirlo in uno dei registri, oppure di trasferirlo da
uno dei registri all'interno della memoria), e operazioni di confronto fra numeri. Riguardo a queste ultime,
può bastare anche il solo confronto con lo zero: se, infatti, si devono confrontare due numeri per vedere se
uno è maggiore dell'altro, ciò equivale a calcolarne la differenza e vedere se questa è maggiore, minore o
uguale a zero. Se è uguale a zero i due numeri sono uguali, se è maggiore di zero il primo numero è
maggiore del secondo e viceversa. Le operazioni aritmetiche e logiche, come detto, vengono eseguite dalla
Unità Logico-Aritmetica.
I registri possono avere diverse funzioni a seconda del loro contenuto: possono contenere dati, ma anche
indirizzi di memoria (cioè quegli indici che consentono di identificare in modo univoco ogni cella della
memoria centrale). Ad esempio, quando si esegue un programma, il cosiddetto Program Counter è un
registro particolare che contiene l'indirizzo della prossima istruzione che la CPU dovrà eseguire. La CPU, in
pratica, legge nel Program Counter un indirizzo che identifica una certa locazione di memoria, legge
l’istruzione contenuta in quella locazione e la esegue, operando sui dati che sono presenti in quel momento
nei registri dati. I registri possono, inoltre, contenere codici di controllo; uno di questi, ad esempio, è il bit di
overflow che, come detto, segnala quando in un'operazione intera senza segno si va oltre la capacità di
rappresentazione della macchina. Quando questi codici di controllo sono rappresentati da un singolo bit
vengono normalmente chiamati flag, cioè bandierine. In effetti, hanno un ruolo di segnalazione analogo a
quello del guardalinee in una partita di calcio: se il bit è attivato (cioè il suo valore è 1), questo indica che si
è verificata una certa condizione, ed equivale al sollevamento della bandierina da parte del guardalinee.
La supervisione di tutte queste operazioni è compito dell'unità di controllo. Con una velocità proporzionale
alla frequenza con cui arrivano gli impulsi di clock, l'unità di controllo interpreta le singole istruzioni
attivando opportunamente le varie componenti della CPU, in modo da produrre il risultato corrispondente.
PARAMETRI CARATTERISTICI DI UNA CPU (MicroProcessore)
1) LUNGHEZZA DELLE PAROLE BINARIE CHE E' IN GRADO DI ELABORARE, ESPRESSA IN NUMERO DI BIT
(8, 16, 32, 64)
2a)
LUNGHEZZA DELLE PAROLE BINARIE CHE E' IN GRADO Di RICEVERE DALL'ESTERNO O DI INVIARE
VERSO L'ESTERNO CON UN'UNICA OPERAZIONE (8, 16, 32, 64)
2b)CAPACITA' DI INDIRIZZAMENTO (Mb, Gb)
3)
TIPO DI ARCHITETTURA UTILIZZATA:
CISC (Complex Instruction Set Computer)
RISC (Reduced Instruction Set Computer)
4)
FREQUENZA DI CLOCK.
espressa in Megacicli/secondo = Megahertz (MHz)
5)
MILIONI DI ISTRUZIONI AL SECONDO (MIPS) (centinaia o migliaia)
MILIONI DI OPERAZIONI IN VIRGOLA MOBILE AL SECONDO (MFLOPS, decine o centinaia)
MFLOPS <= MIPS <= FREQ. DI CLOCK
Fig. 5
Il bus, pur essendo, dal punto di vista logico, un'entità unica, in realtà è un insieme di collegamenti fisici
suddivisibili in un insieme collegamenti che consentono il trasferimento dei dati dalla memoria centrale alla
4
CPU e viceversa (bus dati), un insieme di collegamenti per trasmettere gli indirizzi (bus indirizzi) e una serie
di collegamenti (bus di controllo) che consentono di trasmettere i segnali di controllo che regolano il
collegamento fra CPU, memoria e dispositivi di Input/Output. Ad esempio, un collegamento è riservato ad
un segnale che indica se sulla memoria va eseguita un'operazione di lettura (cioè un trasferimento dalla
memoria verso la CPU o verso un dispositivo di input/output) oppure un'operazione di scrittura (cioè un
trasferimento dalla CPU o da un dispositivo di input/output verso la memoria).
In fig. 5 sono riportati i principali parametri che caratterizzano le prestazioni della CPU.
Il primo è la lunghezza della parola che la CPU è in grado di elaborare. Questa lunghezza è espressa in
numero di bit (normalmente sono 8, 16, 32 o 64 bit). Alla lunghezza della parola si fa riferimento spesso col
termine architettura interna della CPU. Cioè se una CPU ha una architettura interna a 8, 16, 32, 64 bit,
questo significa che è in grado, internamente, di compiere operazioni su stringhe binarie di tale lunghezza,
cioè ogni operazione eseguibile in un unico ciclo di clock coinvolge operandi che, al massimo, sono di tale
lunghezza. Analogamente all'architettura interna, si può definire una architettura esterna, caratterizzata dalla
lunghezza delle parole che la CPU può trasferire, con una singola operazione, verso l'esterno: questo
parametro si può identificare con la dimensione del bus dati.
La distinzione fra architettura interna ed esterna è importante in quanto vengono talvolta utilizzati, per
motivi di economia, microprocessori con architetture interne, ad es., a 32 o 64 bit che, per poter essere
inseriti in calcolatori più economici, hanno un bus dati caratterizzato da un numero di bit inferiore.
Internamente, quindi, un microprocessore di questo tipo può trattare dati di 32 (64) bit; tuttavia, disponendo,
ad esempio, di un bus a 16 bit, deve eseguire in due (quattro) cicli di clock ogni operazione di lettura e di
scrittura. Da un lato, ciò provoca un rallentamento delle operazioni di input/output, dall'altro i circuiti esterni
collegati a questo microprocessore sono molto più economici, perché sono costituiti da un minor numero di
componenti o, in ogni caso, da componenti più semplici. Per quello che riguarda il tipo di istruzioni che è in
grado di eseguire un microprocessore, si possono avere due tipi di architetture: Architettura CISC (Complex
Instruction Set Computer) o RISC (Reduced Instruction Set Computer). L'architettura CISC caratterizza
microprocessori che sono in grado di eseguire istruzioni molto complesse, per eseguire le quali sono spesso
necessari molti cicli di clock; quindi, la ALU ha una struttura molto complessa e occupa gran parte dello
spazio a disposizione nel chip. Pertanto, questo tipo di microprocessori contiene di solito un numero
piuttosto limitato di registri. Nel caso dell'architettura RISC si ha la situazione opposta: si dispone di un
numero molto basso di operazioni molto elementari, avendo però a disposizione un numero molto elevato di
registri: questo fa sì che si possa ottenere un elevatissima velocità di elaborazione, in quanto gran parte delle
operazioni possono essere eseguite in pochi cicli di clock, se non addirittura in uno solo. Tuttavia, ogni
operazione corrisponde solo ad una parte di una operazione di una CPU CISC. Le prestazioni relative di una
CPU CISC o una RISC dovranno quindi essere valutate in funzione del tipo di programma che deve essere
eseguito. Non è possibile affermare la superiorità in assoluto dell’una architettura sull’altra.
Un'altra caratteristica fondamentale della CPU è la frequenza di clock alla quale può operare. Come abbiamo
visto ogni istruzione corrisponde ad una sequenza di operazioni elementari eseguite dalla CPU in
corrispondenza di ogni impulso di clock; quindi, maggiore è il numero di impulsi di clock che la CPU riceve
in un secondo, maggiore è il numero delle operazioni che la CPU è in grado di svolgere nell'unità di tempo.
Normalmente è espressa in MHz/GHz (Megahertz/GigaHertz) o Megacicli/Gigacicli al secondo. Il primo
personal computer (PC) IBM aveva una frequenza di clock di 4,77 MHZ, e il suo processore aveva una
architettura interna a 16 bit: attualmente i computer a 32 bit basati su Intel Pentium o su processori della
stessa classe (es. AMD Athlon) arrivano ad un massimo di circa 3 GHz, cioè di quasi 1000 volte superiore.
Se a ciò si aggiunge il progressivo miglioramento dell’ingegnerizzazione dei microprocessori, che comporta
che una stessa istruzione sia eseguita in un minor numero di cicli di clock, e l’estensione dell’architettura
interna, si raggiunge un incremento di prestazioni ancora maggiore rispetto al PC originale, in circa 20 anni,
cioè si è raddoppiata la potenza di calcolo mediamente ogni 18 mesi (a questo fenomeno si fa normalmente
riferimento come legge di Moore)! Tale legge si prevede che continui a valere almeno per i prossimi 10 anni.
Altri parametri che descrivono le prestazioni di una CPU e vengono forniti in genere insieme alla macchina
sono i MIPS, cioè milioni di istruzioni per secondo, e i MFLOPS (Megaflops), milioni di operazioni in
5
virgola mobile per secondo. Un'operazione in virgola mobile è normalmente molto più complessa di
un'operazione fra interi e richiede quindi un maggior numero di cicli di clock, perciò il dato relativo ai
MFLOPS è generalmente molto più basso di quello relativo ai MIPS che, a sua volta, è inferiore alla
frequenza di clock. In realtà, nei microprocessori più recenti, alcune operazioni possono essere effettuate in
parallelo, durante lo stesso ciclo di clock, per cui potrebbe anche succedere, per particolari sequenze di
operazioni, che MIPS > frequenza di clock. Quando si confrontano i MIPS di due CPU diverse bisogna
anche tenere in considerazione l'architettura del microprocessore; abbiamo detto infatti che l'architettura
RISC può eseguire una varietà minore di istruzioni più elementari, quindi un'istruzione di un computer con
architettura CISC può corrispondere, a livello operativo, a più istruzioni di un computer RISC. A parità di
MIPS, è quindi più potente un microprocessore CISC; d'altra parte, a parità di frequenza di clock, un
microprocessore RISC esibirà un dato in MIPS generalmente superiore ad un CISC, rendendo molto delicato
(se non impossibile) un confronto basato su questo solo dato.
MEMORIA CENTRALE
La memoria centrale è lo spazio di lavoro del calcolatore, in cui si collocano, durante il suo funzionamento, i
dati da elaborare. E' caratterizzata da un insieme di celle ciascuna delle quali contiene 8 bit (1 byte) ed ha un
proprio indirizzo, cioè un numero progressivo che la identifica in modo univoco.
A seconda della dimensione del Registro Indirizzi all’interno del microprocessore, quest’ultimo sarà in
grado di gestire una quantità più o meno grande di memoria. Ad es., con 16 bit si possono generare 65536
(216) numeri diversi, quindi si possono raggiungere direttamente 65536 celle di memoria; i primi
microprocessori avevano uno spazio di indirizzamento di questo tipo, cioè potevano indirizzare 65536
locazioni di memoria di 1 byte ciascuna, cioè 64 Kbyte. Un microprocessore con un registro indirizzi di 32
bit (come il Pentium) può indirizzare 4GByte (232 byte) di memoria. In realtà il Pentium ha un ulteriore
registro a 16 bit che permette di indirizzare 65536 blocchi (segmenti) di 4Gbyte. Questo registro a 16 bit
individua quindi il segmento di memoria entro cui opera il processore ed il registro indirizzi a 32 bit serve
quindi a identificare la singola cella all’interno del segmento entro il quale si sta lavorando. Per gli attuali
calcolatori, 4Gbyte di memoria sono sufficienti, quindi in realtà la CPU lavora, normalmente, sempre
all’interno dello stesso segmento di memoria.
Il tipo di memoria centrale utilizzata nella grandissima maggioranza dei casi nei calcolatori (fanno eccezione
alcuni dispositivi palmari o tascabili) è la memoria di tipo RAM (Random Access Memory), cioè Memoria
ad Accesso Casuale. Tale termine indica che si può accedere direttamente a qualunque locazione della
memoria, indipendentemente dalla sua posizione; ogni dato è quindi raggiungibile con la stessa velocità. In
pratica, tutti i tipi di memoria oggi esistenti sono ad accesso casuale, tuttavia il termine RAM indica
convenzionalmente un particolare tipo di memoria ad accesso casuale che conserva i dati finché le viene
fornita tensione: è cioè un tipo di memoria "volatile" e quindi, al momento dello spegnimento del calcolatore
i dati vengono persi. Vedremo in seguito quali siano gli altri tipi di memoria che è possibile trovare in un
sistema di calcolo.
A livello operativo, sulla memoria la CPU compie tre operazioni principali: lettura, scrittura e spostamento.
La lettura implica che si invii alla memoria un indirizzo e si prelevi (cioè si trasferisca all’interno della CPU)
la sequenza binaria (corrispondente ad un dato o ad una istruzione) contenuto nella cella di memoria
corrispondente. Con una operazione di scrittura, una volta che la CPU ha specificato l'indirizzo, va a
modificare il contenuto della cella ad esso corrispondente; con lo spostamento, infine, il contenuto di una
cella di memoria viene trasferito in un'altra cella. Si può dire che in pratica le operazioni possibili sulla
memoria sono comunque lettura e scrittura, in quanto lo spostamento consiste in una operazione di lettura di
un dato da una cella seguita da una operazione di scrittura dello stesso dato in un'altra cella.
Nella memoria centrale si memorizzano sia i dati che le istruzioni che costituiscono i programmi; questi, di
solito, vengono collocati in una zona della memoria distinta da quella riservata ai dati, in modo tale che la
CPU possa interpretare tali sequenze come istruzioni e non come dati.
6
Il funzionamento dei calcolatori è di tipo sequenziale, cioè il calcolatore esegue un'istruzione dopo l'altra. E’
quindi naturale e vantaggioso da un punto di vista pratico che le istruzioni vengano inserite in memoria nello
stesso ordine in cui devono essere eseguite. Infatti in questo modo per prelevare l’istruzione da eseguire
dopo quella attualmente in esecuzione la CPU non deve fare altro che incrementare di 1 l’indirizzo
contenuto nel registro Program Counter che, come detto, contiene l’indirizzo in memoria centrale della
prossima istruzione che la CPU deve eseguire.
L'operazione di lettura dalla memoria centrale può essere scomposta in tre fasi: (0) una fase preliminare, in
cui viene attivata la linea del Bus di Controllo relativa alla lettura: quasi contemporaneamente (1) la CPU
pone l'indirizzo della cella di memoria che si vuole leggere sul Bus Indirizzi. A questo punto, dopo un tempo
brevissimo, detto tempo di accesso, il dato (2) viene trasmesso alla CPU sul Bus Dati. Il tempo di accesso è
quindi il tempo che intercorre fra il momento in cui viene generato l'indirizzo e il momento in cui il dato
richiesto viene inviato alla CPU sul Bus Dati. Questo ritardo è dovuto al fatto che i circuiti logici hanno
bisogno di un certo tempo per cambiare stato, cioè perché alcuni loro bit commutino da 0 a 1 o viceversa. Il
tempo di accesso è di solito pari a qualche decina di nanosecondi (un nanosecondo corrisponde a 10-9 s, cioè
1 miliardesimo di secondo).
Nel caso dell’operazione di scrittura l'unica diversità è che nella fase (0) anziché attivare la linea di controllo
relativa alla lettura si attiva la linea di controllo relativa alla scrittura; successivamente la CPU pone
contemporaneamente sul Bus Indirizzi l'indirizzo della cella nella quale deve essere scritto il dato e sul Bus
Dati la sequenza binaria che deve essere trasferita, ottenendo quindi un trasferimento di dati in senso opposto
rispetto alla lettura.
Riassumendo, vediamo quindi quali sono i parametri caratteristici della memoria centrale: la prima
caratteristica fondamentale è la dimensione, espressa di solito in MByte, cioè il numero di celle (di 1 byte)
disponibili all'interno della memoria. La seconda caratteristica è il tempo di accesso, che abbiamo appena
definito. I Personal Computer vengono tipicamente forniti con 256 o più MByte di RAM.
Abbiamo detto che la memoria centrale è normalmente una memoria di tipo RAM. Esaminiamo ora altri tipi
di memoria. La memoria ROM (Read Only Memory, cioè memoria a sola lettura), viene ‘scritta’ al
momento della sua produzione con un processo irreversibile e contiene quindi dati che non possono essere
più modificati. Su tale tipo di memoria è quindi possibile compiere solo operazioni di lettura. Quando si
accende il calcolatore, nella memoria centrale non c'è niente, in quanto la RAM ha bisogno di tensione per
conservare i dati. Pertanto, cioè necessario che all'interno del calcolatore vi sia un programma, disponibile
immediatamente all’accensione, che consente di "inizializzare" il calcolatore (cioè di eseguire la cosiddetta
sequenza di boot o sequenza di caricamento) in modo che possa cominciare ad operare. Normalmente questa
parte di programma, attivata solo al momento dell'accensione, è memorizzata su una memoria ROM, che nel
PC è detta BIOS (Basic Input/Output System). Questo perché la memoria ROM conserva i dati in essa
memorizzati anche a calcolatore spento. Il nome BIOS deriva dal fatto che i programmi in esso contenuti
devono permettere al calcolatore di eseguire anche operazioni elementari di input/output, in quanto il
calcolatore dovrà per prima cosa trasferire dalla memoria di massa alla memoria centrale (nella fase di boot)
il sistema operativo, il programma cioè che gestisce l’hardware e il software applicativo del calcolatore.
Un altro tipo di memoria a sola lettura sono le PROM (Programmable ROM). Queste ultime differiscono
tuttavia dalle ROM in quanto, al momento della fabbricazione, non contengono alcun dato e possono in
seguito essere programmate (in modo irreversibile) tramite opportuni dispositivi. Vi si possono cioè
memorizzare dati che diventano inalterabili, cioè vi si può scrivere una sola volta. Per poter scrivere più
volte su memorie utilizzabili come PROM sono state create le EPROM (Erasable PROM), cioè PROM
cancellabili tramite l'applicazione di un fascio di raggi ultravioletti. Si tenga tuttavia presente che la
cancellazione delle EPROM è un processo relativamente lungo, inoltre è totale e non selettiva. Le EPROM
non possono quindi essere utilizzate al posto delle RAM, che permettono di modificare in modo quasi
istantaneo il contenuto anche di una singola cella. La memorie appartenenti alla ‘famiglia’ ROM hanno la
caratteristica di mantenere le informazioni senza bisogno di essere alimentate, in quanto la loro scrittura
7
avviene o mediante processi irreversibili (ROM e PROM), o mediante processi che le fanno cambiare di
stato in modo stabile (EPROM) a meno che non vengano esposte ai raggi UV.
Recentemente si stanno affermando anche le memorie di tipo FLASH, che sono memorie permanenti,
indirizzabili singolarmente e riscrivibili, quindi possono di fatto sostituire le RAM in tutto e per tutto. Per
ora tuttavia le prestazioni inferiori, in particolare in termini di tempo di accesso, ne consentono un uso
efficiente solo come piccoli dispositivi di memoria di massa.
MEMORIE DI MASSA
Al momento dello spegnimento del calcolatore vengono cancellati tutti i dati contenuti nella memoria
centrale. Bisogna quindi disporre di un sistema per conservare i dati che si sono elaborati o che si vogliono
elaborare ed i programmi che servono ad elaborarli. Per questo esistono le memorie di massa, di tipo
permanente, disponibili normalmente sotto forma di nastri (magnetici) o dischi (magnetici, ottici o
magneto-ottici) ovvero, come detto, sotto forma di memoria FLASH.
Ci si potrebbe chiedere perché non si usi questo tipo di memoria anche durante l’elaborazione. Il motivo è il
tempo di accesso (che, analogamente a quanto visto per la memoria centrale, corrisponde al tempo che
trascorre dal momento in cui viene inviata una richiesta di lettura o di scrittura di un dato a quello in cui il
dato diventa effettivamente disponibile per l'elaborazione). Esso è infatti molto più elevato rispetto a quello
della RAM o delle ROM, che sono memorie costituite da soli componenti elettronici, senza alcuna parte
meccanica in movimento: un'operazione che in memoria centrale richiede alcune decine di nanosecondi
richiede invece decine di millisecondi quando viene eseguita su disco. Quindi eseguire un miliardo di
operazioni in memoria centrale richiede alcune decine di secondi, mentre eseguire le stesse operazioni su un
disco richiederebbe alcune migliaia di secondi (N.B. 1000 secondi sono circa 17 minuti!). La memoria di
tipo FLASH è anch’essa totalmente di tipo elettronico, ma ha un tempo di accesso superiore alla RAM,
anche se nettamente inferiore a quello dei dispositivi di memoria di massa di tipo magnetico.
In una prospettiva storica, il primo tipo di memoria di massa ad essere utilizzato sono state le schede
perforate. Queste erano cartoncini in cui, ad un foro praticato in una certa posizione, corrispondeva un valore
di 1 o 0 nel bit corrispondente; queste schede venivano lette da un lettore di tipo ottico che riusciva a
riconoscere la presenza del foro e consentiva il trasferimento dei dati dalla scheda alla memoria centrale. Per
memorizzare dati si usava quindi un perforatore di schede, un dispositivo simile ad una macchina da scrivere
con una tastiera simile a quella degli attuali computer, che disponeva di una serie di aghi, anziché di
martelletti come nella macchina da scrivere che incidevano le schede ‘bianche’, cioè prive di fori, contenute
in un opportuno cassetto. Ovviamente come tipo di memoria era molto poco pratica. Ad ogni scheda
corrispondevano pochi byte e, quindi, programmi di una certa mole o quantità di dati significative
costituivano pacchi di schede di dimensioni considerevoli; le schede, inoltre, potevano deteriorarsi, piegarsi,
forarsi e quindi generare errori. Un progresso decisivo si è avuto nel momento in cui si è passati alla
memorizzazione su supporto magnetico.
Fig.6
8
Il primo tipo di memoria di massa di tipo magnetico ad essere realizzato è stato il nastro magnetico. I nastri
magnetici per computer sono del tutto analoghi ai nastri che vengono utilizzati per le registrazioni musicali o
video. L'organizzazione tipica del nastro magnetico su bobina (ormai abbandonato) è simile a quella che si
vede in figura 6. Il nastro è suddiviso in 9 tracce, quindi la testina è in grado di operare su 9 sezioni parallele
del nastro. In ogni posizione del nastro, su ciascuna traccia viene scritto uno dei bit che compongono un
byte. Le tracce sono 9 invece che 8 (1 byte= 8 bit) poiché il nono bit, che non contiene informazioni utili,
viene utilizzato come controllo (controllo di parità), che consente di determinare se il byte è stato
letto/scritto in modo corretto o sbagliato. Ad esempio, si può supporre di usare la regola banale ma efficace
secondo cui, se il byte contiene un numero pari di 1 (o di 0), questo bit (detto bit di parità) deve essere posto
a 1, se è dispari a 0. Se, ad esempio, viene letto un byte che contiene un numero pari di 1 ma il valore del bit
di parità viene letto come 0, questo significa che uno dei bit del dato, o il bit di parità stesso, è stato
letto/scritto in modo sbagliato. Si noti che un meccanismo di questo tipo permette di identificare solo un
numero dispari di errori. Se si commettono, ad esempio, due errori, il controllo di parità non segnala alcun
errore. Tuttavia, poiché un errore costituisce un evento di per sé raro, è estremamente improbabile che si
commetta più di un errore scrivendo o leggendo lo stesso byte, per cui il controllo è comunque molto
efficace.
I nastri che si usano attualmente hanno lo stesso formato dei nastri video/audio digitale (DAT, Video8,
MiniDV), che consentono di memorizzare dati con una densità (quantità di dati per unità di lunghezza)
molto elevata. La distribuzione dei dati sul nastro è diversa, poiché le testine di lettura/scrittura dei
videoregistratori non sono fisse ma mobili, ma il principio resta sostanzialmente lo stesso.
L'accesso alle informazioni contenute sul nastro è ovviamente di tipo sequenziale, al contrario, come si è
detto in precedenza, delle memorie RAM, ROM, PROM ed EPROM che sono ad accesso random. In tali
memorie ogni cella è singolarmente indirizzabile: basta generare l'indirizzo per avere subito disponibile il
dato corrispondente. Utilizzando i nastri magnetici, invece, accade ciò che si verifica nelle registrazioni
musicali: se si vuole ascoltare un brano musicale che si trova in fondo al nastro, bisogna scorrere tutta la
bobina. Analogamente, se vogliamo cercare dei dati raccolti in una certa posizione del nastro, bisognerà farlo
scorrere fino a quella posizione. Quindi l'organizzazione di tipo sequenziale fa sì che l'accesso a un dato sia
mediamente molto lento (anche dell'ordine di minuti). Quindi l'utilizzazione principale dei nastri è quella di
copia per motivi di sicurezza (backup) di grosse quantità di dati, con un'alta densità di registrazione (su un
nastro magnetico possono essere memorizzate decine di Gbyte) e con il vantaggio della portabilità. Pertanto,
con un unico lettore e un numero elevato di nastri (dal costo limitato) si può disporre di un archivio molto
ampio. Si può notare che i dati, in un nastro, oltre ad essere organizzati su diverse tracce, sono anche
organizzati in blocchi. Cioè durante la scrittura su nastro e quindi in seguito anche durante la lettura, per
ottimizzare i tempi delle operazioni di lettura e scrittura, non si fa mai accesso ad un solo byte alla volta ma
ad un certo numero di byte, tipicamente 256 o 512, memorizzati su nastro in modo contiguo. Poiché il
sistema di lettura è meccanico l'arresto e l’avviamento del nastro risentono dell’inerzia meccanica del
dispositivo, per cui la velocità di scorrimento standard, necessaria per una corretta lettura dei dati, viene
raggiunta in alcune frazioni di secondo, durante le quali il nastro si sposta di una certa lunghezza. Per
distinguere i diversi blocchi di dati si interpone un gap fra di essi, cioè uno spazio bianco che dovrà essere
più lungo di tale lunghezza per poter accedere al blocco successivo rispetto alla posizione in cui il nastro si è
eventualmente arrestato, senza bisogno di riavvolgere il nastro stesso. Se supponiamo, quindi, che, al
momento in cui si termina la lettura di un blocco di dati il nastro sia posizionato esattamente alla fine di tale
blocco, fra quest'ultimo ed il blocco successivo è necessario predisporre il gap per poter leggere il blocco
successivo anche a partire da nastro fermo.
Se invece di dare un'organizzazione di tipo rigorosamente sequenziale come quella di un nastro, si
dispongono i dati su un supporto di forma diversa, come ad esempio un disco, a parità di supporto magnetico
e quindi di registrazione di informazioni sì potrà ottenere un tempo di accesso decisamente più rapido.
9
Vediamo come vengono organizzati i dati su un disco (figg. 7 - 8).
Fig. 7
Le tracce, a differenza del nastro, in cui erano disposte in modo parallelo, sono concentriche. Quindi i
blocchi, rettangolari nel caso del nastro, nel caso del disco sono settori circolari. A causa della forma del
disco e del suo moto di rotazione (anziché di scorrimento lineare come nel caso del nastro), un punto che si
trova su di esso ritorna periodicamente nella stessa posizione. Anche nei dischi esiste il problema che, dal
momento dell'avviamento del disco, passa un po' di tempo prima che questo giunga alla velocità ideale per la
lettura; ma, basterà attendere che, una volta raggiunta la velocità di lettura, il dato ripassi sotto la testina per
poterlo leggere. Poiché il disco ruota piuttosto velocemente (oggi fino a una velocità di 7200 giri/minuto) il
tempo di attesa prima che un dato ripassi nella posizione desiderata e utile per la lettura è piuttosto limitato.
E’ quindi sufficiente predisporre sulla superficie del disco un singolo gap, che serve unicamente come
riferimento per segnalare l'inizio del conteggio dei settori. Supponiamo ad esempio di voler leggere il settore
che in fig. 8 è contrassegnato da un asterisco. Possiamo supporre di cominciare a contare le tracce dal centro
lungo il raggio e i settori a partire dal gap e procedendo in senso orario; il settore contrassegnato
dall'asterisco nella figura corrisponde allora alla seconda traccia del primo settore.
I settori interni del disco sono più corti e questo, poiché in ogni settore deve essere registrato un uguale
numero di dati, fa sì che la densità di informazione (quantità di dati per unità di superficie) nelle tracce
interne sia maggiore di quella delle tracce esterne. Tenendo conto che c'è un limite fisico nella densità delle
informazioni che possono essere registrate su un supporto magnetico, si ha una utilizzazione non ottimale
del supporto, in quanto solo nelle tracce interne si può utilizzare la massima densità possibile, mentre la
densità delle tracce esterne è inevitabilmente inferiore. Se da un certo punto di vista, quindi, le tracce esterne
sono sottoutilizzate, quelle interne, poiché le prestazioni del supporto vengono portate al limite, sono quelle
in cui si può avere più facilmente qualche inconveniente, come ad esempio la perdita di qualche dato, a
causa di processi di smagnetizzazione. In testa a ciascun blocco di dati viene scritto il suo indirizzo,
individuato dalla traccia e dal settore.
Fig. 8
Al momento in cui si acquista un disco, questo è semplicemente di materiale magnetico neutro, privo di
punti di riferimento per il calcolatore. Per poterlo utilizzare occorre dargli un formato, quindi eseguire la
10
cosiddetta operazione di formattazione. Il disco non viene, di solito, formattato direttamente dalla fabbrica in
quanto ogni sistema di calcolo utilizza una diversa convenzione (formato) e quindi, nonostante si possano
usare gli stessi dischi con sistemi diversi, a seconda del sistema utilizzato vengono registrate inizialmente
informazioni diverse che consentiranno di accedere ai dati.
Il sistema più semplice per operare una lettura su disco è utilizzare un'unica testina che può spostarsi lungo il
raggio e quindi leggere qualunque traccia, o insieme di tracce contigue, del disco. Il metodo quindi più
immediato per rendere più veloce la lettura consiste nell'utilizzare un unico blocco composto da più testine,
una per traccia, onde evitare di dovere attendere il tempo necessario alla testina per spostarsi radialmente e
posizionarsi sulla traccia in cui è contenuto il dato che deve essere letto. Se il dato si trova nel settore
immediatamente successivo alla posizione della testina, la lettura sarà pressoché immediata, ma se il dato è
appena passato sotto la testina bisognerà attendere che il disco compia un'intera rotazione prima di poterlo
leggere. Quindi si può dire che, mediamente, il tempo di accesso di un disco è pari al tempo necessario ad
una mezza rotazione del disco stesso. Memorie di massa più veloci possono essere costituite da sistemi a
stack (fig. 9), in cui si hanno più dischi con più testine e quindi, se i dati vengono scritti nella stessa
posizione relativa in dischi diversi si potrà accedere contemporaneamente ad una quantità di dati superiore a
quella accessibile su un singolo disco di tante volte quante sono i dischi che vengono impiegati.
Fig. 9
Un sistema di memorizzazione che consente di ovviare ai problemi di densità non omogenea che si hanno
nei dischi, è il sistema basato sui tamburi magnetici (fig. 10): si tratta di cilindri in cui i dati sono scritti sulla
superficie esterna: quindi, ogni traccia ha la stessa dimensione e inoltre, essendo il sistema a testine fisse, la
lettura può avvenire piuttosto rapidamente.
Fig.10
Tuttavia, rispetto ad una pila di dischi, si ha una superficie utile minore e quindi la memorizzazione delle
informazioni è meno efficiente, tanto che questi dispositivi non sono mai stati utilizzati in modo esteso.
11
I dischi che offrono la massima densità di informazione sono quelli ottici: usano la stessa tecnologia che
viene utilizzata per i compact disc e per i DVD, cioè l'1 o lo 0 vengono codificati mediante un foro, praticato
con il raggio laser su una superficie riflettente, di dimensioni talmente piccole che su un disco di grandezza
uguale o poco superiore a quella di un compact disc, possono essere memorizzate quantità di dati molto
elevate, dell'ordine di alcune centinaia di Mbyte (CD-ROM) fino ad alcuni Gbyte (DVD-ROM) ed oltre per
dischi ottici di dimensioni maggiori. Durante la lettura, se non c’è alcun foro il raggio laser di bassa potenza
che è presente sul lettore viene riflesso, altrimenti attraversa il disco. Le due situazioni corrispondono
ovviamente una alla lettura di un 1 e l’altra alla lettura di uno 0. I dispositivi che scrivono i dischi ottici
(masterizzatori) forano fisicamente il disco e fanno quindi sì che questo non sia più riscrivibile, in quanto,
ovviamente, una volta praticato un foro non è possibile “riempirlo” di nuovo. Per questo motivo i dischi che
operano secondo questo principio si chiamano di tipo WORM che significa Write Once Read Many, cioè
“scrivi una volta sola e leggi molte volte”. Nel caso di CD e DVD si parla rispettivamente di CD-ROM e
DVD-ROM per evidenziare la proprietà di tali dispositivi di consentire solo la lettura dei dati, una volta che
sono stati scritti. Esistono anche dischi (come ad esempio i CD-RW e i DVD-RW cioè i CD e DVD
riscrivibili), che si basano su alterazioni reversibili della superficie riflettente e possono essere quindi scritti
più volte.
Il compact disc è stato presentato originariamente come supporto per registrazioni musicali pressoché
indistruttibile. Pur essendo sicuramente meno alterabile di un 33 giri in vinile, è tuttavia più corretto dire
che, per quanto riguarda la ricostruzione di un segnale musicale, il danneggiamento o la mancata lettura di
alcuni byte alterano la riproduzione sonora in modo quasi impercettibile, anche per merito dei metodi di
correzione degli errori che compensano la mancata lettura di alcuni campioni isolati. Quando invece si tratta
di dati, la perdita di un singolo bit può essere talvolta sufficiente a compromettere completamente
l'elaborazione. Si pensi ad es. ad un'immagine di tipo medico in cui una zona di interesse può essere
rappresentata da una alterazione di dimensioni anche molto limitate, all’apparenza molto simile all'effetto
che si può avere a causa della perdita o all'alterazione di qualche pixel. Oppure, più semplicemente, ad un
programma in cui venga sostituita un’istruzione con un’altra a caso, a causa di un errore di lettura.
L'affidabilità di questi dispositivi non è quindi assoluta, anche se è di solito superiore rispetto a quella un
supporto magnetico; pertanto, se si vuole gestire un archivio, anche utilizzando dischi ottici sarà comunque
opportuno disporre sempre di una seconda copia di sicurezza (backup).
Vediamo ora quali sono i parametri caratteristici dei dispositivi di memorizzazione di massa, in particolare
dei dischi e dei nastri: la caratteristica principale è la capacità, cioè la quantità totale di byte che si può
memorizzare. Per i nastri a bobina era dell'ordine di alcune decine di Mbyte; ora, con l'avvento dei DAT e
del nastri video (ad es. DV o Video 8 Sony) si può arrivare a decine di Gbyte. Può essere interessante anche
valutare il costo medio di un nastro per valutare il costo effettivo per byte di questi dispositivi: un nastro
DAT, DV o Video8 per memorizzazione dati costa in genere circa 5/10 Euro. Per quanto riguarda i dischi,
possono essere asportabili o fissi. I dischi asportabili sono di solito i floppy disk che possono essere da 3.5
pollici di diametro e contenere 720 Kbyte, 1.44 Mbyte o 2.88 Mbyte, oppure da 5.25 pollici (ormai in disuso)
e contenere o 360 Kbyte o 1.2 Mbyte. I floppy disk hanno un costo di circa 50 centesimi, fino a circa 1 Euro
per quelli da 2.88 Mbyte, standard che però non si è affermato ed è ormai anch’esso in disuso. Nei sistemi
più vecchi venivano utilizzati anche dischi da 8 pollici, con una capacità di circa 360 Kbyte. Nella
valutazione del costo dei dischi asportabili bisogna considerare anche il prezzo del lettore, di solito molto
basso per quanto riguarda i lettori di floppy disk. Un lettore di floppy ha un prezzo di circa 15 Euro. Gli hard
disk sono dischi fissi, contenuti all'interno del cabinet del calcolatore o in contenitori esterni e comprendono
anche il dispositivo di lettura. Gli hard disk hanno una capacità che varia oggi di solito da 40 Gbyte in su (20
Gbyte per gli hard disk dei computer portatili), con prezzi a partire da circa 100 Euro.
Per quanto riguarda i dischi ottici e magneto-ottici, da un lato, hanno una capacità molto elevata, che va dai
circa 650 Mbyte dei CD-ROM a decine di Gbyte e possono costare 0.5-1 Euro (CD-ROM) fino a 2 Euro
(CD-RW) ad una decina di Euro e più (dischi WORM di formato superiore), e quindi hanno un prezzo per
byte molto basso. Attualmente i dispositivi più economici, relativamente al costo per byte sono i CD-ROM e
12
i DVD-ROM, che però possono essere scritti una sola volta. Il masterizzatore per CD ha un costo lievemente
inferiore ad un hard disk di fascia economica, quello per DVD-ROM è di circa 2 volte maggiore. Il tempo di
accesso è di solito molto più elevato rispetto a quello di un hard disk. I CD-RW hanno caratteristiche
analoghe, con un costo per byte lievemente più alto, ma sono riscrivibili. Tuttavia, per come è organizzata
l’informazione sul disco, non è possibile utilizzarli esattamente come un hard disk, anche se sono in
commercio programmi che, a scapito della velocità di accesso, operano su di essi come se fossero hard disk.
Inoltre, possono essere riscritti un numero elevato, ma comunque limitato (fino ad un migliaio) di volte.
Gli altri due parametri che caratterizzano un dispositivo per la memorizzazione di massa sono il tempo di
accesso, che equivale al tempo che trascorre dal momento in cui si impartisce l'ordine di andare a leggere un
dato, al momento in cui la testina o il sistema di lettura si posizionano sul dato stesso. Per i nastri non ha
molto senso parlare di tempo di accesso in quanto abbiamo una struttura sequenziale, quindi, come già detto,
la ricerca di un dato può richiedere anche minuti se il nastro è lungo. Per i floppy si hanno tempi di accesso
dell'ordine di 150 millisecondi, per i dischi ottici di 40-100 millisecondi, per gli hard disk di qualche
millisecondo. Una volta che sono stati raggiunti i dati, è anche importante considerare quanto tempo
impiegano per essere trasferiti in memoria: questo parametro è detto Transfer Rate e si misura in Kbyte al
secondo. Questo dipende in buona parte dalle caratteristiche meccaniche del disco ma anche dal dispositivo
di controllo, cioè dalla scheda elettronica che viene utilizzata per gestire le operazioni che si effettuano sul
disco. Per i floppy si hanno Transfer Rate nell'ordine delle decine di Kbyte/s, per i dischi alcuni Mbyte/s, per
gli hard disk si arriva anche a decine di Mbyte/s. Come abbiamo già accennato, per le diverse caratteristiche
che presentano questi dispositivi, la loro utilizzazione varia da dispositivo a dispositivo. L'hard disk è una
memoria di massa veloce e, per brevi periodi, può essere utilizzato anche durante una elaborazione nel caso
che la memoria centrale non sia in grado di contenere tutti i dati da elaborare, limitando, se gestiti in modo
intelligente, la riduzione, comunque rilevante, della velocità di esecuzione del processo. Quindi sono
utilizzabili per memorizzare dati e programmi (ad es., inevitabilmente, il sistema operativo) che vengono
utilizzati molto spesso e che quindi è necessario che risiedano permanentemente all'interno del calcolatore.
Oppure possono essere sfruttati da meccanismi di gestione della memoria che utilizzano l'hard disk come se
fosse memoria RAM. I floppy disk, i CD ROM e alcuni dischi ottici, essendo asportabili e tascabili, sono
molto utili per il backup di quantità relativamente limitate di dati e per il trasferimento di dati fra calcolatori
che non sono collegati fra loro in rete, mentre i nastri e i dischi ottici di maggiore capacità e dimensioni
vengono prevalentemente utilizzati per l'archiviazione di grandi quantità di dati.
Recentemente con l’avvento delle memorie FLASH, si stanno diffondendo anche dispositivi di memoria di
massa di dimensioni limitatissime, detti pen drive o data key, in quanto assumono spesso la forma di una
piccola penna o di un portachiavi. Collegati alla porta USB del calcolatore, vengono visti dal sistema
operativo come un disco aggiuntivo, utilizzabile sia in lettura che in scrittura. La loro capacità varia dalle
decine alle centinaia di Megabyte, hanno un tempo di accesso intorno al microsecondo e un costo di circa 50
Euro/256 Mbyte.
13