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.