lunedì 17 marzo 2008

La memoria del computer

Una componente fondamentale della scheda madre sulla quale vale la pena di soffermarsi è la memoria. I componenti del pc come il sistema operativo, il disco rigido, il processore, lavorano insieme come un gruppo di lavoro del quale la memoria costituisce la parte fondamentale.
La cpu usa costantemente la memoria. Non appena si accende il pc vengono lette le prime istruzioni sulla ROM e viene effettuato un test per verificare il funzionamento dei componenti più importanti: ad esempio, viene verificata dal controller tutta la memoria con operazioni di read/write su tutti gli indirizzi, viene caricato dalla ROM il BIOS, che fornisce informazioni relative all'hardware, alla sequenza di boot, alle periferiche plug & play, ecc…Il sistema operativo viene caricato dal disco rigido alla RAM di sistema; le applicazioni eseguite dall’utente vengono caricate nella RAM e se un’applicazione apre un file, questo viene conservato nella RAM. Quando l'applicazione salva i dati e termina, il file viene scritto sul disco rigido e cancellato dalla memoria: anche l'applicazione viene eliminata dalla memoria.
Il microprocessore possiede un’area per la memorizzazione dei dati, di dimensioni molto limitate, dove conserva le informazioni attualmente elaborate o i risultati intermedi di un’elaborazione: la memoria cache e i registri. Questa piccola area di memoria non è sufficiente per eseguire programmi, ha bisogno di memoria esterna sulla quale conservare (nel solito formato digitale) i dati di lavoro, le istruzioni dei programmi che sta eseguendo e così via.. La maggior parte dei dati letti dal disco rigido o dalla tastiera finiscono inizialmente nella RAM.
Qualsiasi sia l’informazione che si deve elaborare, deve essere innanzitutto memorizzata. A tal proposito, in un elaboratore sono presenti vari tipi di “memorie” le quali, qualsiasi sia la loro tipologia, possono essere immaginate come una sequenza finita di locazioni o celle contenenti ciascuna uno o più byte, ovvero uno o più caratteri e/o simboli. Tale locazione prende il nome di parola (word).
L’elemento base della memoria è il dispositivo bistabile (flip-flop). Ogni cella di memoria è caratterizzata da un indirizzo (le celle vengono numerate da 0 in poi per poter essere identificate in modo univoco) e da un contenuto (valore in essa memorizzato). Il contenuto è costituito da una sequenza di bit; le distinte sequenze di bit di lunghezza n sono 2n.
Image Hosted by ImageShack.us

L'unità di misura fondamentale dell'informazione è il bit, che corrisponde alla quantità di informazione convogliata dalla scelta fra due sole alternative. Con un solo bit di memoria si può rappresentare, ad esempio, lo stato di un singolo interruttore (acceso o spento) o un carattere di un linguaggio composto da due soli simboli. Il passo successivo è il byte, che corrisponde a una “parola'' composta da otto bit. Un byte può “informarci'' sulla scelta fra 28 = 256 diverse alternative. Può quindi rappresentare ad esempio un carattere scelto da un alfabeto di 256 simboli, un numero intero compreso fra 0 e 255, un colore scelto da una “tavolozza'' di 256 colori diversi e così via.
Le tabelle più diffuse di codifica dei caratteri, come la tabella ISO Latin 1, utilizzano proprio un byte per codificare un carattere. Un carattere di testo, dunque, “pesa'' normalmente un byte. Una cartella di testo che comprende circa 2000 battute, peserà dunque 2000 byte.
Bit e byte sono unità di misura della quantità di informazione e, dato che la capacità di una memoria corrisponde appunto alla quantità di informazione che in essa può essere immagazzinata, bit e byte sono anche le unità di misura di base per esprimere la capacità di immagazzinamento (la “dimensione'') di una memoria.
Man mano che le dimensioni delle memorie (e della quantità di informazione che vogliamo immagazzinarvi) crescono, diventa scomodo continuare a parlare utilizzando solo unità di misura “piccole'' come il bit e il byte.
Ecco allora che, proprio come accade per altre unità di misura, anche in questo caso si fa ricorso a nomi specifici per indicare i principali multipli delle nostre familiari unità di base. A differenza di quanto accade ad esempio nel caso della lunghezza o del peso, nel caso della quantità di informazione non si usa, per la costruzione di queste unità di misura di livello superiore, il sistema decimale. Abbiamo visto infatti che nel campo del digitale è la numerazione binaria, non quella decimale, a fare da padrona. Ecco allora che il Kilobyte (abbreviato come KB) non corrisponde a 1000 byte ma a 210= 1024 byte. 2 KB di testo corrispondono dunque non a 2000, ma a 2048 caratteri (siamo comunque sempre vicini alle dimensioni di una cartella standard). Proseguendo nella scala, troviamo il Megabyte (MB), che corrisponde a 1024 Kilobyte(KB), il Gigabyte (GB), che corrisponde a 1024 Megabyte, il Terabyte (TB) pari a 1024 GB e il Petabyte (PB) pari a 1024TB.
Image Hosted by ImageShack.us

I pc dispongono di vari tipi di memoria -una gerarchia di memorie- per poter ospitare i dati e il software che utilizzano. La memoria utilizzata dalla CPU può essere pertanto di vari tipi:
RAM;
CACHE;


MEMORIE DI MASSA (floppy disk, dischi rigidi, CD-ROM, DVD)




In questa sezione ci soffermiamo sulla memoria direttamente innestata nella scheda madre, la descrizione della memoria secondaria è fatta singolarmente per ciascun componente.




La memorie RAM (random access memory), memoria ad accesso casuale, è la memoria principale o memoria centrale del computer; contiene i dati e le istruzioni che devono essere elaborati dalla CPU. E’ costituita da componenti elettrici che, ai primordi dell’informatica, avevano costi molto elevati e quindi, per il contenimento dei costi, di capacità alquanto ridotte: proprio a causa delle dimensioni ridotte, i primi programmatori decisero di individuare l’anno utilizzando le ultime due cifre (2 byte) per risparmiare memoria, creando così i presupposti di quello che sembrava essere un disastro epocale provocato dal così detto baco del millennio (millennium bag) o “Problema Y2K (year 2000), in quanto il sistema non riusciva a distinguere il 2000 con altri anni di inizio secolo (1500 – 1800 – 1900) con le conseguenze facilmente immaginabili.
La RAM è una memoria di tipo volatile in quanto i suoi circuiti sono soggetti alla presenza o meno di alimentazione elettrica: è costituita da una serie di condensatori il cui stato carico-scarico rappresenta nella sequenza di 8 elementi il carattere che si vuol memorizzare; la mancanza di alimentazione (voluta se si elimina il carattere) o improvvisa (black out) scarica completamente la memoria dei suoi elementi, perdendo in questo caso i dati in essa memorizzati.
La funzionalità di questa memoria può essere paragonata ad un grande parcheggio in cui i veicoli si posizionano in modo casuale, senza cioè seguire un ordine prestabilito. Tale sistema permette di collocare nelle celle i vari caratteri in modo molto veloce e, tramite gli indirizzi assegnati dal sistema operativo, ritrovati al momento del bisogno rapidamente. Man mano che si “caricano” programmi, si creano file e si elaborano informazioni, la memoria si riempie, svuotandosi del tutto o in parte quando usciamo da un programma o abbandoniamo un file; in questo caso si dovrà memorizzare il file su un altro tipo di memoria (memoria di massa) costituita generalmente da supporti di tipo magnetico (hard-disk, floppy disk) o di tipo ottico (CD ROM). A causa delle differenze di velocità tra dischi, RAM e processori, viene utilizzata una memoria temporanea (memoria cache) che funge da contenitore di istruzioni e dati usati più frequentemente dalla CPU.
Quando si chiede al computer di eseguire un programma, il processore estrae dal disco rigido una copia, la “parcheggia” temporaneamente nella memoria RAM e quindi la esegue. La quantità di memoria RAM è cruciale per il buon funzionamento del pc (si misura in megabyte): quanto maggiore è la RAM, tanto meno frequentemente la CPU deve rivolgersi alle cosiddette memorie secondarie (disco rigido, floppy disk, CD-ROM) per lavorare.
Il processore sfrutta la velocità della RAM per elaborare dati e informazioni nei tempi più rapidi. La RAM infatti è molto più veloce di qualsiasi altro supporto: se per estrarre un dato da un disco rigido sono necessari alcuni millisecondi (1 millisecondo è uguale a un millesimo di secondo), per compiere un’operazione analoga della RAM di sistema bastano qualche decina di nanosecondi (1 nanosecondo è uguale a un miliardesimo di secondo).
Le tipologie di RAM attualmente disponibili sono tre: SDRAM che si dividono in SDR e DDR (queste ultime sono in grado leggere due dati per singolo clock invece di uno, raddoppiando in teoria la frequenza di bus rispetto alle prime). Il terzo tipo, differente a livello tecnologico dai primi due, è la RDRAM (PC800) che chiameremo Rambus.
La RAM SDRAM (syncronous dynamic random access memory) è la memoria dinamica ad accesso casuale sincrona, che sincronizza tutte le operazioni con il segnale di clock proveniente dal processore e che raggiunge una migliore efficienza nello scambio di dati tra memoria e processore, con tempo di accesso che variano tra i 10 ns e i 6 ns.
Le memorie SDRAM sono disponibili anche in versione DDR (double data rate random access memory); questa tecnologia, introdotta per la prima volta nelle memorie delle schede video, permette di raddoppiare la bandwidth della memoria a disposizione in quanto vengono utilizzati entrambi i fronti di clock (ascendente e discendente). All'atto pratico, si può dire che la memoria DDR ha bandwidth doppia rispetto a quella della memoria SDRAM operante alla stessa frequenza.
La RDRAM (rambus dinamic random access memory) è stata introdotta da Intel specificamente per l'impiego con i chipset i820-i840 e i850 e su sistemi basati su cpu Pentium IV.
I programmi odierni, sempre più complessi, richiedono sempre più memoria. I chip RAM sono installati su moduli (piccole schede): i principali tipi di moduli sono i seguenti:
SIMM (single in-line memory module), sono i vecchi moduli di memoria impiegati nei sistemi più datati, generalmente 386, 486 e Pentium. Questi moduli di memoria sono caratterizzati da una linea singola di contatti, che possono essere 30 o 72 pin (contatti).
DIMM (double in-line memory module), sono i moduli di memoria impiegati nei moderni sistemi, a partire da quelli di classe Pentium. Questi moduli di memoria sono caratterizzati da una linea doppia di contatti, che possono essere 168 o 184 pin. I moduli DIMM sono più lunghi dei moduli SIMM.
SODIMM (small outline dual in-line memory module), sono moduli di memoria con linea doppia di contatti e dimensioni ridotte. Vengono usate nei portatili.
RIMM (rambus in-line memory module), sono i moduli di memoria impiegati nei sistemi Pentium IV. Le RIMM sono dei moduli di memoria la cui architettura è basata sulle richieste elettriche del Direct Rambus channel, un bus che opera ad alta velocità.
Se si utilizza Windows 95 servono 16 MB, se si utilizza Windows 98, Windows NT oWindows 2000 sono consigliati 64 MB, mentre Windows XP ne richiede almeno 128 MB !




Storicamente, le CPU sono sempre state più veloci delle memorie. Quando la CPU invia una richiesta alla memoria, la parola che serve arriverà solo dopo molti cicli di CPU; più la memoria è lenta, più cicli dovrà aspettare la CPU. La tecnologia consente di costruire memorie veloci come la CPU, ma esiste un problema: per poter essere veloci come le CPU, queste memorie dovrebbero trovarsi sullo stesso chip della CPU (perché la connessione via bus alla memoria è lenta). Tale soluzione farebbe aumentare il volume del chip (CPU + memorie) e ne farebbe aumentare anche il costo. La soluzione per tale problema e’ un compromesso che prevede la presenza di una piccola memoria veloce nello stesso chip che contiene la CPU e una o più memorie lente all’esterno della CPU collegate tramite bus.
La memoria cache (dal francese cacher che significa nascosto) è una memoria di appoggio ad alta velocità posta fra il processore e la RAM che velocizza gli accessi ai dati e alle istruzioni. La cache è caratterizzata da un tempo di accesso molto minore di quello della RAM ed è in grado di fornire informazioni al processore più velocemente (alcuni nanosecondi), le sue dimensioni sono però molto inferiori a causa del maggior costo di fabbricazione. Può rispondere alle richiesta di lettura oppure filtrare le richieste di scrittura verso la memoria centrale senza imporre stati di attesa al processore (uno stato di attesa e’ un ciclo di clock durante il quale il processore sospende l’elaborazione e attende il completamento di una richiesta di lettura o scrittura sulla memoria). Quando la CPU deve accedere ad un indirizzo di memoria, accede prima alla cache: nel caso in cui questo non sia presente nella cache si verifica un fallimento di accesso, allora lo preleva dalla memoria centrale e lo ricopia nella memoria cache insieme ad un prefissato numero di locazioni contigue.
Il successo di tale soluzione (principio di località) dipende dal fatto che il più delle volte (tranne nei casi di salto) gli indirizzi di memoria successivamente generati durante l'esecuzione di un programma formano gruppi contigui.




LOCALITA' SPAZIALE:
quando si accede all’indirizzo A, è molto probabile che gli accessi successivi richiedano celle vicine ad A;
le istruzioni del codice vengono in genere lette da locazioni consecutive della memoria;
gli accessi ad array o a strutture dati sono “vicini”.
LOCALITA' TEMPORALE:
quando si accede all’indirizzo A, è molto probabile negli accessi successivi si richieda di nuovo la cella A.

La memoria cache è organizzata in due distinti livelli: quella inglobata all’interno del microprocessore (128-256 KB) è detta cache di 1° livello (L1) o interna, è accessibile in modo quasi istantaneo e risulta quindi la più veloce: garantisce un flusso continuo all’interno del processore; l’altra, incorporata sulla scheda madre (512 KB- 2 MB) è detta cache di 2° livello (L2) o esterna, risulta essere circa 5 volte più lenta della cache L1, serve per superare la lentezza della memoria centrale. La cache di 2° livello e’ detta anche RAM STATICA (SRAM). A causa della velocità degli attuali processori, la relativa lentezza della memoria RAM imporrebbe alla CPU di restare inattiva per più cicli di clock, pregiudicando così le prestazioni del sistema. Questo tipo di memoria può essere gestita in diversi modi: write back, che permette di leggere e scrivere i dati e write trough, che permette solo di leggerli, pertanto, maggiore è la dimensione della memoria cache e migliori saranno le prestazioni della CPU.




La memoria ROM (read only memory), costituita da componenti elettrici semplici, è adatta alla memorizzazione permanente delle informazioni costituite generalmente da istruzioni per l’avvio delle macchine, di programmi in linguaggio macchina per la gestione delle periferiche, di tabelle matematiche utilizzate dalla CPU per lo svolgimento di operazioni di base. La memoria ROM è detta di sola lettura proprio perché l’utilizzatore della macchina non è autorizzato a modificare il contenuto della stessa; in caso di danneggiamento o malfunzionamento della ROM il calcolatore è del tutto inservibile.
Le istruzioni di base che devono essere trasmesse alla CPU all’avvio del sistema sono contenute nei circuiti delle memoria ROM, una memoria permanente, sempre in funzione, anch’essa presente sulla scheda madre. Come dice il nome, è una memoria a sola lettura il cui contenuto è stato registrato in fase di costruzione del computer e quindi, come detto, non può essere modificato. Ogni volta che viene acceso, il computer esegue un piccolo programma contenuto nella ROM che gli permette di:
identificare il processore installato sulla scheda madre;
controllare la quantità di memoria RAM in dotazione e verificarne il funzionamento;
esaminare il disco rigido ed eventuali periferiche aggiuntive (ad esempio DVD, CD-ROM);
leggere la traccia, cioè il settore del disco rigido in cui sono contenute le istruzioni per l’avvio del sistema.
In particolare, la ROM che avvia il sistema è chiamata BIOS (basic input/output system); il BIOS è dunque un chip ROM che è specifico di una scheda madre. Le istruzioni e i dati in esso contenuti rimangono praticamente fisse per tutto il ciclo di vita del pc e sono utilizzate dalla CPU all'accensione del computer. Il programma nella ROM contiene in primo luogo le istruzioni per la partenza (start-up) del pc che si possono dividere in:
POST (power on self test), cioè le istruzioni per il controllo del funzionamento elettronico dei dispositivi all’accensione del pc;
SETUP, le istruzioni per la configurazione dei dispositivi dopo l’accensione e il post;
BIOS, le istruzioni per la configurazione verso il sistema operativo (CMOS); una batteria Ni-Cad permette di mantenere memorizzate all'interno del CMOS le informazioni sulla configurazione del computer impostate tramite BIOS. La batteria può essere cortocircuitata permettendo così l'azzeramento del CMOS spostando un Jumper sulla scheda madre (di solito vicino alla batteria stessa) in posizione clear CMOS.
BOOT, le istruzioni per la partenza del sistema operativo;
INPUT/OUTPUT: il BIOS raccoglie una serie di programmi software a basso livello (funzioni di base) che il sistema operativo sfrutta per interagire con l’hardware della macchina. Tra queste funzioni ritroviamo i caratteri digitati alla tastiera, l’invio dei caratteri alla stampante e l’accesso alla memoria, alle unità a disco e ad altri dispositivi di input/output. Non tutti i sistemi operativi utilizzano tutte le funzioni del BIOS (ad esempio UNIX).

Nessun commento: