martedì 9 gennaio 2007

Principi di funzionamento delle memorie


Non solo RAM, ma anche CMOS, EPROM e memorie flash

Quando si parla di memoria è immediato pensare alla RAM del nostro PC. Eppure, la RAM è solo uno dei molti tipi di memoria esistenti e la RAM di sistema del PC non è che uno degli impieghi della RAM nell’architettura generale del computer. Troviamo infatti memorie anche come sottocomponenti dei vari elementi di cui si compone un PC.

Il disco rigido, per esempio, è un’unità di memoria di massa basata su tecnologia magnetica, ma incorpora anche un quantitativo di RAM volatile usata come cache memory (di solito 8-16 MB) al fine di migliorare le prestazioni percepibili in fase di lettura e rilettura di dati recenti; nei recenti modelli SATA con NCQ, la stessa memoria serve anche per memorizzare ed elaborare la coda di richieste di I/O emesse dal sistema operativo al fine di ottimizzare l’ordine in cui servirle.

Sono inoltre in arrivo hard disk “ibridi”, in cui una quantità di flash memory (inizialmente dell’ordine di 1 Gbit) affianca la ben più grande capacità di tradizionale memoria magnetica con il duplice scopo di migliorare le prestazioni al boot e ridurre i consumi elettrici (specie sui laptop). Infatti, a seguito dell’accensione la flash memory risulta leggibile senza dover attendere che la velocità di rotazione del disco vada a regime, tenendo fermo il disco ogni volta che è possibile farlo: essendo non volatile, la flash memory può essere usata come buffer di scrittura per accumulare i dati scritti prima di scaricarli effettivamente su disco, cosa inaccettabile con una cache RAM in quanto una perdita di alimentazione farebbe perdere i dati in transito.

Una scheda video di ultima generazione richiede una grande quantità di memoria (fino a 1 GB nei modelli top), con ulteriori importanti requisiti riguardo la velocità di lettura/scrittura e la concorrenza nell’accesso (esiste, per esempio, un tipo di memoria dual ported o Video-RAM – VRAM - che permette al chip grafico di scrivere nel display file nello stesso momento in cui il RAMDAC lo legge per generare il segnale video). È infatti importante poter disporre di una elevata banda passante fra il chip grafico e il banco di memoria, al fine di poter velocizzare al massimo le operazioni di ridisegno della scena, nelle applicazioni multimediali o nei giochi. La capacità di questo canale di comunicazione si ottiene aumentando contemporaneamente la frequenza di lavoro e la larghezza di banda (256 o 512 bit).

La stessa scheda madre contiene un certo quantitativo di RAM non volatile per contenere le impostazioni del BIOS (la cosiddetta CMOS Memory). La sua persistenza è assicurata (per un tempo non illimitato) da una batteria tampone ricaricabile montata sulla motherboard: di solito si tratta di una batteria “a moneta” all’ossido di litio. Sempre sulla motherboard, vi è un banco di memoria non volatile di medie dimensioni (dell’ordine di 128 Kbyte) destinato a contenere il codice del BIOS e altro firm­ware necessario a governare il funzionamento della motherboard e il suo programma di configurazione e controllo. Questo secondo banco è oggi implementato in tecnologia EEPROM o Flash.

Impieghi della memoria fuori dal PC
Anche uscendo dall’unità centrale troviamo banchi di memoria: ne sono dotati gli scanner, che si avvalgono di banchi RAM come buffer per i pixel acquisiti in attesa di spedirli al PC via USB; ne sono dotate le stampanti, soprattutto quelle laser che devono comporre l’intera pagina prima di poter avviare il processo di stampa (fanno eccezione le stampanti che utilizzano la memoria di sistema del PC); troviamo memoria perfino nelle webcam, in cui il processore di segnale necessita di un’area di appoggio per comprimere o elaborare le immagini prima di inviarle all’host. Perfino un monitor, una tastiera o un mouse contengono memoria, rispettivamente: per salvare le impostazioni dell’OSD; per ricordare l’ultimo tasto premuto o per salvare lo stato di tasti bistabili come Caps Lock e Num Lock; per elaborare le immagini del sensore ottico al fine di stimare direzione e velocità di movimento.

Schede di acquisizione video, switch e router di rete, schede sonore USB e schede Wi-Fi sono tutti esempi di periferiche che usano RAM e memoria non volatile per il proprio funzionamento e per salvare le proprie impostazioni di configurazione. Non soltanto i personal computer, ma anche un gran numero di dispositivi digitali sempre più diffusi non sarebbero neppure concepibili senza memorie.

Un classico esempio è il telefono cellulare, dove troviamo memoria nella SIM, nell’apparecchio e nella scheda d’espansione per impostazioni, contatti, sfondi, suonerie, foto e musica. Anche per altri dispositivi come i player multimediali, le fotocamere e le videocamere digitali la memoria ha un’importanza cruciale. In particolare, sono fondamentali la capacità della memoria, il fatto che sia non volatile e che abbia un tempo d’accesso basso anche in scrittura, così da velocizzare al massimo le operazioni di caricamento dei brani dal PC all’apparecchio. Quando la memoria è rimovibile, diventa assai rilevante anche il suo formato: per le videocamere digitali la scelta è fra nastro (prevalente il formato MiniDV), hard disk e DVD; per le fotocamere conta il formato della flash card, oltre alla velocità d’accesso.

Anche gli apparecchi digitali di home entertainment sono consumatori di memoria, sia per quanto riguarda i supporti destinati a ospitare i contenuti, sia per i banchi di RAM necessari per le esigenze di funzionamento del sistema operativo, dell’OSD e degli algoritmi di elaborazione del segnale.

La memoria “per antonomasia”: RAM
Come già osservato, però, quando si parla di memoria è scontato che il pensiero vada alla tipologia di maggior impatto sulle prestazioni e sul costo di un moderno PC: la RAM (Random Access Memory), così nominata poiché possiede un tempo d’accesso indipendente dalla posizione della locazione indirizzata e dall’ordine con cui si accede alle celle. Due proprietà che la contrappongono a tutti quei tipi di memoria a funzionamento sequenziale o semisequenziale come le unità a nastro e quelle a disco.
Esistono due categorie principali di RAM: la RAM Dinamica (DRAM) e la RAM statica (SRAM), realizzate con tecnologia a semiconduttori.

La DRAM è una memoria volatile con basso consumo elettrico, alta velocità d’accesso e alta densità spaziale. Il suo principio di funzionamento si basa sul fatto che un condensatore caricato elettricamente, se ben isolato, si mantiene in questo stato per un certo tempo. Associando allo stato carico il significato di bit 1 e a quello scarico il significato 0, possiamo usare questo condensatore per rappresentare un bit. Il condensatore, però, tende spontaneamente a scaricarsi in un tempo che, con le basse tensioni e correnti in gioco e a questa scala dimensionale, si aggira sulle decine di millisecondi. L’unico modo per evitare che la memoria perda il suo contenuto è riscriverla periodicamente: questo processo si chiama refresh e richiede un certo tempo, durante il quale la parte di memoria interessata non è accessibile. Questo è uno dei motivi per cui la RAM è meno veloce della SRAM usata, ad esempio, per la cache del processore.

La SRAM è infatti realizzata in modo tale che i bit mantengano il loro stato senza richiedere rinfresco periodico, a condizione che venga alimentato il circuito. Purtroppo, nella SRAM ogni bit è fisicamente implementato come una rete di ben 6 transistor (ognuno più ingombrante del condensatore usato per un bit della DRAM), ragion per cui l’area occupata a parità di capacità è molto superiore a quella della DRAM (in altre parole, la densità spaziale della SRAM è molto minore), facendo lievitare anche i costi; inoltre, a causa della necessità di alimentazione continua, il consumo elettrico della SRAM è molto maggiore. Queste caratteristiche rendono impraticabile la realizzazione di banchi di SRAM di grandi dimensioni, pertanto la SRAM viene utilizzata in piccoli quantitativi in applicazioni particolari, nelle quali per la sua elevata velocità essa può migliorare le prestazioni di un componente: l’esempio tipico è la cache memory della CPU, che deve poter funzionare a frequenze elevate anche a costo di assorbire correnti elevate.

I moduli di RAM di sistema abitualmente usati nei PC contemporanei sono costituiti da DRAM organizzate in un’architettura logica detta SDRAM, in cui il modulo accetta sequenze di richieste di lettura e scrittura che vengono servite con alcuni cicli di ritardo (latenza), ma senza che questo richieda di sospendere l’invio di nuove richieste.

La banda passante, ossia la capacità del canale di comunicazione che questi moduli rendono disponibile verso la CPU, dipende dalla frequenza di funzionamento, dalla larghezza di parola e dal numero di trasferimenti dati che è possibile attuare a ogni ciclo di clock.

Per esempio, nelle SDRAM DDR (Double Data Rate) a ogni impulso di clock il controller è in grado di trasferire, su ogni linea di connessione, due bit anziché uno solo: un bit viene trasferito sul fronte di salita e uno sul fronte di discesa. Così, un chip funzionante a 200 MHz può effettuare 400 milioni di trasferimenti al secondo (MT/s), donde il nome di memoria DDR-400. Assemblando un certo numero di chip DDR-400 si realizzano moduli di memoria il cui bus in ciascuna direzione è largo 64 bit, pertanto ogni trasferimento sposta 8 byte. A 400 MT/s, questo corrisponde a una banda passante di 3.2 Gbyte/s, da cui il nome dei moduli questo tipo di memoria: PC3200.

Il principio di funzionamento viene ulteriormente ottimizzato nella tecnologia DDR2, in cui il controller trasferisce sempre 2 bit per ciclo di clock lavorando però a una frequenza doppia rispetto a quella della RAM. La banda disponibile raddoppia: a 200 MHz abbiamo così dei chip DDR2-800 e moduli di memoria PC2-6400. La contropartita, dovuta al fatto che i dati vengono comunque estratti da una memoria che internamente funziona sempre alla stessa velocità, è una latenza maggiore. Le memorie DDR3 di prossima introduzione esaspereranno ulteriormente questo trade-off, con un raddoppio della larghezza del prefetch buffer e della frequenza di lavoro del controller che garantiranno un raddoppio della banda passante, ma anche un deciso aumento della latenza.

La latenza, ossia il ritardo con cui il chip di memoria inizia a rispondere a una richiesta di dati, è la somma di vari ritardi elementari che si verificano in vari punti della sua architettura logica. Così, per esempio, l’indicazione “2-2-2-5-1” sta a indicare rispettivamente i cinque ritardi funzionali (CAS, RAS to CAS, Row precharge, Row activation, Command) che concorrono a formare la latenza complessiva del modulo, espressi in cicli di clock. Più bassi sono questi valori (e la loro somma) e migliori sono le prestazioni del modulo.

Memorie non volatili: EPROM, EEPROM e Flash
Una configurazione circuitale opportuna può trasformare i transistor, solitamente impiegati nei circuiti digitali come interruttori comandati, in vere e proprie “trappole di carica” impiegabili per memorizzare un bit proprio come i condensatori delle DRAM. Grazie al miglior isolamento, in assenza di alimentazione questi transistor mantengono il loro stato di carica non per decine di millisecondi come farebbero le DRAM, ma per decine d’anni.

I chip di memoria EPROM (Erasable Programmable ROM), in passato usati anche per memorizzare il BIOS delle motherboard, sfruttavano questo principio. Erano riconoscibili per la finestrella trasparente che sovrastava il chip e serviva per la cancellazione, tramite esposizione a luce ultravioletta per alcuni secondi.

Questo scomodo sistema di cancellazione fu superato nei chip EEPROM (Electrically Erasable Programmable ROM), in cui si usava un segnale elettrico: con essi diventava possibile scrivere e leggere una memoria non volatile in modo elettrico, e quindi direttamente sul sito circuitale, senza bisogno di smontarla per trattarla con attrezzature esterne.

La più recente evoluzione delle EEPROM è la flash memory, un tipo di EEPROM che non permette di indirizzare singoli bit, ma viene scritto a blocchi proprio come un disco fisso. Questo, fra l’altro, accelera il processo naturale di deterioramento dell’isolante che assicura ai transistor la loro proprietà di mantenere lo stato per lungo tempo, e accorcia di molto la longevità delle flash rispetto alle EEPROM in termini di numero di cicli di cancellazione sopportabili (dell’ordine del milione di cicli per le flash memory).

In compenso, le flash memory risultano molto più economiche da fabbricare delle EEPROM e hanno riscosso uno straordinario successo, come tutti sanno, come memorie di massa per tutti i tipi di dispositivi digitali. Esistono due tipi di flash memory, a seconda del tipo di porta logica usata per implementare una cella da un bit: i chip NOR e i chip NAND.

I chip NAND, i più usati, hanno migliori prestazioni, maggior densità, minor costo e maggior durata ma, a differenza dei NOR, non si prestano bene ad accessi non sequenziali. Pertanto, nelle applicazioni in cui il chip flash deve ospitare un programma da eseguire direttamente senza trasferirlo prima in RAM, come il BIOS di una motherboard, è necessario usare flash memory basate su chip NOR.
Rivista:PCOpen

Nessun commento: