La memoria
In ogni personal computer vi sono due tipi di memoria:
• una memoria di archiviazione, che serve a registrare il sistema operativo, i
programmi ed i documenti. Questo tipo di memoria conserva permanentemente
le informazioni registrate. Sono memorie di archiviazione il disco rigido, i
dischetti, i CD-ROM... (vedi capitolo “Le unità di memoria di massa”);
• una memoria di lavoro, che serve per accendere il computer, per caricare il
sistema operativo e per lavorare con i programmi ed i documenti. La memoria di
lavoro è costituita da chip montati sulla scheda madre o su moduli aggiuntivi.
La memoria di lavoro si divide in due parti:
• memoria ROM, che serve ad accendere il personal;
• memoria RAM, che serve a lavorare.
Quando si accende un personal, si attiva la memoria ROM, che da vita al
computer e che provvede a caricare il sistema operativo dal disco rigido
(memoria di archiviazione) alla memoria RAM. Qui il sistema operativo si installa
e “prende possesso” del computer. Quando vogliamo lavorare con un
programma, cioè quando lo mandiamo in “esecuzione”, oppure quando “apriamo”
un documento per modificarlo, il sistema operativo legge dal disco rigido il
programma e/o il documento e li carica nella memoria RAM. Qui possiamo
lavorare con il programma, modificare un documento, crearne uno nuovo.
Tutto il lavoro sui documenti si svolge nella memoria RAM e deve essere
considerato provvisorio finché non venga “salvato”, cioè non si chieda al sistema
operativo di registrare il lavoro effettuato su un disco rigido o su un’altra memoria
di archiviazione. La memoria RAM, infatti, deve essere continuamente tenuta in
vita da impulsi elettrici ed in mancanza di questi, quando il computer viene
spento, perde tutti i dati caricati. Per questo la memoria RAM viene chiamata
“volatile”: basta poco, una mancanza di elettricità, qualcuno che inciampa nel filo
della corrente, perché tutto il lavoro svolto fino a quel momento scompaia come
una scritta sulla sabbia per un colpo di vento. La memoria ROM, invece,
servendo proprio ad accendere il personal, rimane sempre inalterata.
Memoria ROM
La memoria ROM, dall’inglese Read Only Memory, è un tipo di memoria
permanente, non “volatile”, e che non può essere modificata dall’utente del
computer.
Quando il computer ci viene venduto possiede già una piccola dotazione di
software intallato nella memoria ROM. Software, ripetiamo, che è registrato
permanentemente e non può essere né cancellato, né modificato.
Firmware e BIOS
Questo software viene chiamato firmware, cioè saldo, fisso, e comprende anche
tutte le basilari istruzioni utilizzate dai programmi per avere accesso ai diversi
componenti hardware come il video, il mouse, le porte di comunicazione ed i
dischi floppy o rigidi. Fa parte del firmware, ad esempio, il BIOS, cioè quel gruppo
di istruzioni che consente ai diversi processori di attivarsi al momento
dell’accensione del computer, di rispondere agli impulsi del clock e di effettuare
un piccolo autotest di funzionamento. Infine viene letto il sistema operativo
presente sul disco rigido e, dopo essere stato caricato nella memoria RAM, gli
viene ceduto il controllo del sistema. La ROM è definita nella configurazione base
di ciascun computer e la sua grandezza non ha molto a che vedere con le
prestazioni del personal, con la sua velocità di elaborazione o la sua potenza. Per
quanto riguarda il firmware, esso viene installato dalla ditta costruttrice della
macchina e non è modificabile. Anche se spesso la presenza e la quantità della
memoria ROM sulla scheda madre o sulle schede accessorie viene evidenziata
nei manuali o nei depliant dei computer, l’utente non ha alcun beneficio nel
conoscerne le dimensioni o le caratteristiche. L’attività del firmware presente
nella memoria ROM è del tutto invisibile. Nei personal più vecchi era necessario
sostituire la ROM, per sostituire il firmaware contenuto, quando si voleva
aggiungere un dispositivo hardware che non era previsto quando era stato
costruito il computer ed installato il firmware. E’ una operazione, ad esempio, che
deve fare chi voglia collegare un disco da 3,5 pollici ad un vecchio computer con
8086, nato quando questi non esistevano ancora e si usavano i dischi da 5 e 1/4.
Con i sistemi attuali, invece, tale funzione di compatibilità con periferiche nuove
viene svolto da porzioni del sistema operativo chiamati “driver”. Ogni periferica
nuova che si collega al computer (stampanti, unità di memoria di massa,
schede...) richiede che venga intallato il proprio driver nel sistema operativo e
non necessita più modifiche alla ROM.
Oltre alla memoria ROM presente sulla scheda madre, un computer può avere
anche altra memoria ROM inclusa in schede specializzate inserite nei connettori.
Questo tipo di schede hanno spesso bisogno di un programma apposito per poter
svolgere le proprie funzioni. Niente di più naturale, ed economico, che includere
questo programma in una ROM che, saldata alla scheda stessa, non corre il
pericolo di danneggiarsi o di essere persa come potrebbe accadere ad un
dischetto.
Flash-ROM e Boot-ROM
In alcuni personal, da scrivania o portatili, vengono inserite memorie ROM
speciali, contenenti parti del sistema operativo come firmware. Queste ROM
vengono chiamate Flash-ROM o Boot-ROM, perché consentono di avviare il
computer e di trovarsi pronti al lavoro in pochi secondi. Essendo, però, a sola
lettura, queste memorie non consentono di aggiornare il sistema operativo, se
non con la sostituzione delle ROM stesse, sempre che il produttore abbia
mantenuto quel particolare modello di personal ancora in produzione.
In altri computer, ad esempio i notebook, nelle ROM non solo è stato inserito il
sistema operativo, ma anche alcuni programmi applicativi: un word processor, un
foglio di calcolo, un programma di agenda e appuntamenti ed uno per la gestione
di una base di dati. Ciò consente di eliminare il lettore dei floppy, il lettore di CDROM e parte del disco rigido, alleggerendolo in peso ed in costi, ma vincola per
sempre a non cambiare programma ed a non poter fare aggiornamenti.
Il lato positivo dell’avere i programmi permanenti in ROM è di poterli richiamare in
una frazione di secondo e nel poter saltare dall’uno all’altro con un semplice
tasto. In alcuni notebook è possibile spengere il computer avendo sullo schermo
un lavoro e, nel riaccenderlo, trovare lo stesso lavoro allo stesso punto in cui
l’avevamo lasciato. Inoltre, eseguire un programma prelevandolo dalla memoria
ROM comporta per il computer un dispendio di energia molto inferiore di quello
che sopporterebbe se dovesse eseguirlo da un disco rigido.
Memoria RAM
Oltre ai chip della memoria ROM, che è di sola lettura, esistono altri chip di
memoria. Questa volta si tratta di memoria vuota, a disposizione dell’utente. Anzi:
a disposizione del computer, il quale ha necessità, per poter eseguire un
programma ed elaborare dei documenti, di caricare in memoria sia il programma
che i documenti. Questa memoria viene chiamata RAM, dall’inglese Random
Access Memory, cioè “memoria ad accesso casuale”. Il che non vuol dire che il
computer carica programmi e dati “dove capita, capita”, ma sottintende una
procedura molto più complessa di quella che il nome lascia intendere.
Se diamo ad un computer il comando di eseguire un determinato programma,
questo viene letto dal disco e caricato nella memoria RAM. La proprietà “casuale”
della memoria RAM viene fuori quando inizia l’esecuzione del programma.
Tutti i programmi sono composti da vari spezzoni, ognuno dedicato ad un’attività
diversa. Ci sarà uno spezzone per la visualizzazione su schermo, un altro per
l’elaborazione del testo, altri ancora per l’effettuazione di calcoli o la creazione di
grafici. Ogni spezzone è stato caricato in memoria l’uno dopo l’altro senza
suddivisione, ma in una parte apposita del programma sono “dichiarate” le
lunghezze dei vari spezzoni. Quando si verifica il bisogno di uno spezzone, il
computer non è costretto a leggersi tutto il programma dall’inizio alla fine.
Sapendo dove inizia il programma e la lunghezza dei vari spezzoni, è semplice
andare direttamente a leggere nel punto giusto. Né conta se quel programma è
stato registrato in una parte od in un’altra della memoria. “Casuale”, in questo
caso, è contrapposto a “sequenziale” e vuol dire semplicemente che si può
andare a leggere una qualsiasi posizione di memoria.
Volatilità della RAM
Non soltanto la memoria RAM è vuota quando acquistiamo il computer, ma
anche tutte le volte che lo accendiamo. In essa, infatti, non è possibile
conservare permanentemente un programma. La RAM è “volatile”: ha bisogno
continuamente della corrente elettrica che alimenta il computer, altrimenti perde il
suo contenuto. Del resto i programmi che utilizziamo sul nostro computer sono
molti: se ognuno di essi venisse tenuto per sempre in memoria, ben presto
dovremo iniziare ad aumentare incessantemente i chip di memoria per poter
ancora lavorare. Quindi, molto semplicemente, quando spengiamo il nostro
computer, tutto quello che è stato caricato nella memoria RAM viene cancellato.
Riguardo ai programmi, nessun problema. Essi sono registrati sul disco rigido e,
volendo di nuovo lavorare con quel programma, basta chiederne l’esecuzione ed
il sistema operativo provvede a caricarlo in memoria RAM. Il problema sorge per i
documenti. Se abbiamo creato un documento nuovo, o modificato uno già
esistente, il documento si trova ancora in memoria RAM. Spengere il computer in
questo momento provoca la cancellazione della memoria RAM e quindi la perdita
di tutto il lavoro che non abbiamo provveduto a registrare sul disco rigido.
Lo spegnimento del computer potrebbe anche non essere volontario: il contatore
che salta, un blackout della corrente, un collega che inciampa nel cavo e stacca
la spina, sono incidenti probabilissimi che causerebbero la perdita di tutto il lavoro
in corso e non ancora registrato. E’ buona regola registrare frequentemente su
disco rigido il lavoro che si sta facendo, oppure subito dopo operazioni importanti
di modifica.
Dimensione della RAM
La dimensione della memoria RAM è un elemento molto importante nella
configurazione
di
un
computer,
seconda
solo
alle
caratteristiche
del
microprocessore. Più RAM abbiamo nel computer, più questo potrà lavorare con
programmi
complessi
ed
elaborare
un
maggior
numero
di
dati.
Se la memoria RAM non basta a contenere un programma, questo non può
essere eseguito. Se il programma entra nella memoria, ma il documento sul
quale vogliamo lavorare non può essere caricato nella parte libera rimasta, il
sistema operativo è costretto ad effettuare continue operazioni di registrazione e
di lettura del documento. Il sistema operativo carica in memoria solo una parte di
documento e, quando chiediamo di andare avanti nel lavoro, la registra sul disco
per poter leggere e caricare in memoria la porzione successiva. Uguale impegno
viene richiesto da programmi particolarmente complessi che sono stati frazionati
in un certo numero di file. Il sistema operativo, di volta in volta, carica dal disco
quello richiesto. Questo tipo di frazionamento è molto diffuso, perché facilità la
compatibilità verso macchine con memoria inferiore a quella teoricamente
necessaria.
La quantità minima di memoria RAM per un computer era unanimemente
riconosciuta in 512Kb fino a quando esistevano i sistemi operativi di tipo testo
(DOS). Al di sotto di quella dimensione era difficile che qualche programma
riuscisse a funzionare. Oggi, che si lavora con applicazioni molto più complesse,
con un numero di dati consistente, con sistemi operativi che fanno uso della
grafica e del colore, la memoria RAM richiesta inizia a salire da un minimo di
4Mb, fino a 8Mb ed a 16Mb per lavoro ordinario, spingendosi a 32Mb, 64Mb e
molto oltre per programmi che elaborino immagini o suoni.
Espansione della RAM
Queste cifre (4, 8, 16, 32 e 64) fanno subito capire come la memoria RAM
spesso si aumenti raddoppiando. La RAM di un computer, infatti, la si può
aumentare ogni qual volta se ne abbia bisogno. La quantità di memoria RAM
presente nella configurazione base di un computer viene sempre indicata dal
produttore. Se non è adeguata per l’utilizzo che se ne vuole fare, è bene chiedere
l’aumento alla quantità necessaria sin dal momento dell’acquisto della macchina.
E’ comunque possibile incrementare la quantità di memoria RAM anche in
seguito. La scheda madre possiede appositi connettori nei quali è possibile
inserire i chip aggiuntivi. La memoria RAM viene venduta in piccoli moduli, grandi
quanto una barretta di cioccolato. Si chiamano SIMM, dall’inglese Single Inline
Memory Module. Esistono SIMM da 4, 8, 16Mb e così via. I costi di questi moduli
di espansione della RAM, grazie anche all’aumento della richiesta e della
produzione,
sono
calati
enormemente
nel
corso
degli
ultimi
anni.
Poiché i connettori presenti nella scheda madre per inserire le SIMM sono pochi,
spesso quattro, conviene affrontare la spesa una volte per tutte e comprare più
memoria di quella strettamente indispensabile, perché futuri incrementi di RAM
saranno impossibili senza dover togliere le SIMM presenti. Se abbiamo quattro
connettori occupati da quattro SIMM da 4Mb ciascuna, per un totale di 16Mb, e
vogliamo aumentare la RAM di altri 16Mb, non sarà possibile acquistare
solamente i 16Mb in più. Dovremo togliere le quattro SIMM e buttarle in un
cassetto ed acquistare quattro SIMM nuove da 8Mb ciascuna per metterle al loro
posto.
Saremmo stati più previdenti se avessimo fatto l’incremento precedente
direttamente a 32Mb, oppure se avessimo acquistato due SIMM da 8Mb.
Non tutte le memorie RAM vanno bene per tutti i computer. Chiedendo la
memoria RAM aggiuntiva al momento dell’acquisto, il venditore stesso
provvederà ad installarla e collaudarla. Effettuando l’acquisto delle SIMM in
seguito, è invece indispensabile rispettare le caratteristiche richieste esposte nel
manuale della macchina. Esistono tipi diversi di moduli di memoria RAM e la
corrispondenza con il modello richiesto deve essere perfetta. Esistono differenze
fisiche fra le varie SIMM, come la lunghezza, la larghezza, lo spessore e il
numero dei “piedini”. Esistono differenze elettroniche, per la presenza di chip con
determinate caratteristiche. I moduli si distinguono, oltre che per la capacità,
anche per la velocità. Il manuale indicherà, ad esempio, di usare esclusivamente
moduli con velocità minima di 60 nanosecondi. La velocità è il tempo che occorre
allo scambio dei dati con il computer: più la cifra è bassa, più il traffico può essere
veloce. Si parla di velocità minima perché una memoria RAM più veloce è
installabile al posto di una più lenta, ma non viceversa. Si può installare un
modulo di chip a 60 nanosecondi al posto di uno a 80 nanosecondi, ma non il
contrario.
Espandere la memoria di un computer portatile è ancora più complicato. Lo
spazio all’interno è limitato e quindi le schede devono essere piccole e sottili,
mentre la costante necessità di risparmiare il consumo di energia costringe
all’uso di componenti particolari. Il numero di connettori interni per contenere le
SIMM è ridotto, spesso uno solo, mentre il costo delle SIMM per portatili è di
sicuro maggiore rispetto alle SIMM normali. Ed inoltre bisogna fare ancor più
attenzione alla corrispondenza delle caratteristiche.
Non è facile valutare la necessità di memoria. Di certo la quantità di RAM va
collegata da un lato al microprocessore utilizzato e dall’altro al sistema operativo
ed al tipo di programmi con i quali vogliamo lavorare. Un personal con 80486 e
Windows 3.11 funziona perfettamente con 2Mb di memoria RAM, quando ha in
esecuzione semplici programmi di videoscrittura. La quantità minima necessaria
passa a 4Mb se si vuole utilizzare un foglio di calcolo ed a 8Mb se si tratta di
realizzare il bollettino aziendale od un volantino pubblicitario. Un personal con
processore Pentium e Windows 95, con il quale vogliamo lavorare in
videoscrittura richiede almeno 8Mb, per passare a 16Mb per utilizzare anche un
foglio di calcolo. In un computer la RAM non è mai abbastanza e, situazione
finanziaria permettendo, è sempre meglio abbondare che mancare. E’ opportuno
consultare prima il manuale e le caratteristiche tecniche del software che
dovremo utilizzare e considerare che spesso ci troveremo nella situazione di
lavorare contemporaneamente con più programmi. Le prestazioni: capacità e
velocità
Non bisogna confondere la “capacità” di un computer con la sua “velocità”. La
quantità di memoria RAM presente determina la sua capacità, cioè la quantità di
dati che può elaborare, e non la sua velocità. Una espansione della RAM ci può
consentire, ad esempio, di lavorare con più software contemporaneamente (un
foglio di calcolo ed un word processor) perché espande la capacità del computer.
La velocità ne è influenzata solo indirettamente: avendo i due software già
caricati è possibile passare dall’uno all’altro in un istante senza dover attendere la
chiusura del primo ed il caricamento del secondo. La velocità di lavoro nel singolo
software, invece, non è minimamente incrementata. Avendo una RAM già
abbastanza capace di contenere più software con i relativi documenti, espandere
ulteriormente la RAM non aumenta la velocità del computer in nessun modo.
La velocità di un computer è determinata dal clock, cioè dalla frequenza del
processore. Nelle ultime generazioni di computer è possibile sostituire il
processore con uno delle stesso tipo (Pentium con Pentium) ma più velode (da
133 MHz a 200 MHz, ad esempio).
Memoria virtuale
Dovendo utilizzare più di un programma contemporaneamente, può darsi che la
somma della memoria RAM richiesta dai programmi superi la capacità della
memoria RAM installata. In questo caso è possibile simulare la presenza di una
quantità superiore, anche doppia o tripla, di RAM. Questa memoria “inesistente”
viene chiamata “memoria virtuale”. Per la creazione della memoria virtuale ci si
può servire del sistema operativo (Windows ‘9x e Macintosh 7.x) o di appositi
programmi d’utilità. Il metodo di creazione della memoria virtuale è, nei due casi,
diverso.
Il sistema operativo utilizza principalmente il disco rigido. Quando abbiamo uno o
più programmi in memoria RAM e ne vogliamo caricare un altro, e la somma
della memoria richiesta dai programmi supererebbe la RAM fisicamente
disponibile, il sistema operativo registra su disco rigido i programmi non attivi
(compresi gli eventuali documenti aperti con quei programmi) e quant’altro sia
possibile scaricare temporaneamente dalla RAM, per lasciare posto al nuovo
programma. Quando chiederemo di tornare a lavorare con uno dei programmi
precedenti, il sistema operativo scaricherà su disco il programma diventato
inattivo (compresi i documenti aperti) e caricherà nella RAM il programma
richiesto.
Con questo metodo possiamo utilizzare più RAM di quella fisicamente presente
nel personal. Dovremo però pagare due pedaggi: meno spazio disponibile su
disco e velocità ridotta di lavoro. Sul disco rigido, infatti, viene creato un file
invisibile di sistema pari alla dimensione complessiva della memoria virtuale. Se
abbiamo installato RAM per 8Mb e, grazie alla memoria virtuale, vogliamo fingere
di averne 16Mb, il sistema operativo deve creare un file di 16Mb su disco,
riducendo lo spazio a disposizione per registrare documenti e software. D’altra
parte, tutte le volte che passeremo da un programma all’altro fra quelli mandati in
esecuzione, dovremo aspettare che il sistema operativo scarichi dalla RAM il
programma non più attivo e carichi il programma al quale abbiamo chiesto di
passare.
Il metodo utilizzato dai programmi di utilità per la creazione della memoria virtuale
è diverso. Invece di ricorrere subito alla registrazione su disco rigido, il
programma di utilità compatta i programmi non attivi e li comprime nella stessa
RAM. Questa operazione crea già abbastanza spazio libero senza grosse perdite
di
tempo,
non
essendoci
operazioni
di
scrittura/lettura
su
disco.
I programmi, inoltre, occupano sempre meno spazio di quello che richiedono. Un
programma che chiede 4Mb di RAM, ad esempio, in effetti ne occupa anche la
sola metà, in situazione di inattività. L’utilità, da una parte comprimendo il
programma, dall’altra recuperando lo spazio non utilizzato, riesce a “ricavare”
abbastanza memoria da ospitare altri programmi. Solamente a questo punto, se
lo spazio ancora non basta, ricorre alla registrazione su disco. Si tratta, però,
della registrazione di dati compattati, e quindi le operazioni di scrittura/lettura
sono molto più veloci di quelle richieste dal sistema operativo. Il file creato dal
programma di utilità è a grandezza dinamica, cioè non occupa uno spazio su
disco pari al totale della memoria virtuale, bensì occupa uno spazio variabile a
seconda della necessità.
Con la memoria virtuale, quindi, possiamo caricare in memoria molti più
programmi e documenti di quanti la RAM fisica permetterebbe. L’unico requisito è
che ciascun singolo programma non superi, da solo, la capacità della memoria
fisica. Se abbiamo 8Mb di RAM espansa a 16Mb virtuali, non possiamo caricare
nessun programma che, da solo, richieda più di 8Mb. Possiamo caricarne tre da
4Mb ciascuno, ma non uno da 9Mb.
Memoria cache
Alcuni computer sono dotati di una scheda di memoria cache. Si tratta di uno
speciale modulo di memoria RAM, quindi che si cancella ad ogni spegnimento,
ma che non è direttamente utilizzabile per caricare programmi da eseguire come
la normale RAM. Abbiamo visto come il sistema operativo si incarichi di leggere
dal disco i vari file in cui è frazionato un programma o, ad esempio, le varie parti
di un grosso database. Se è presente una scheda di memoria cache, il sistema
operativo carica i file letti dal disco sia nella memoria RAM che nella memoria
cache.
Ad una nuova richiesta di caricamento di un file, il sistema operativo esamina il
contenuto della scheda cache e solo se non vi trova il file richiesto ne effettua la
lettura da disco. Se quella frazione di programma o documento era stata
recentemente utilizzata, è già presente nella cache e quindi il sistema operativo
ne effettua il caricamento senza alcuna lettura da disco. Essendo il caricamento
da memoria cache di gran lunga più veloce di quello da disco, ne deriva la
conseguenza che la presenza di una scheda di memoria cache velocizza le
operazioni.
In alternativa, è possibile creare una memoria cache virtuale tramite appositi
programmi di utilità. In questo caso la memoria cache virtuale usa parte della
normale RAM.
Processore DMA
Il processore Direct Memory Access gestisce il flusso di dati fra la memoria del
computer ed alcune periferiche abilitate al DMA, alleggerendo il lavoro del
microprocessore. Lo scambio di dati con le periferiche è quindi più veloce, perché
ha un diretto accesso in memoria e non deve attraversare l'architettura del
microprocessore.