Sartomiki.net

  • Aumenta dimensione caratteri
  • Dimensione caratteri predefinita
  • Diminuisci dimensione caratteri

Memorie dinamiche

E-mail Stampa PDF
Valutazione attuale: / 0
ScarsoOttimo 

Problematiche e memorie
Le memorie lavorano a una frequenza diversa rispetto a quella dell'Host BUS. Per fare in modo che le memorie non rallentino il sistema è necessario adottare soluzioni di diverso tipo sia dal punto di vista tecnologico (memorie Fast Operative), sia architetturale (Interleaving) (oltre alla gerarchizzazione della memoria stessa). Inoltre se si usano memorie dinamiche bisogna considerare il tempo di refresh e di rilevazione/correzione degli errori. Inoltre bisogna gestire il controller DRAM (resettabile dal BIOS), necessario per tradurre la temporizzazione del BUS con quella dei chip di memoria.
L'interleaving consiste nella scelta di realizzare le memorie dinamiche in banchi con lo stesso parallelismo e mappando gli indirizzi adiacenti sequenzialmente tra banchi. In questo modo è possibile precaricare un banco adiacente, mentre si sta accedendo all'altro.
Solitamente le DRAM comunicano con le cache e trasferiscono blocchi di memoria contigui. E' per questo motivo che esse sono organizzate in forma matriciale dove ad ogni incrocio di riga e colonna è presente un condensatore, che ha il compito di memorizzare un bit, e un transistor, che lo abilita. Per leggere il contenuto di una cella è necessario aprire il transistor, in modo che il bit venga portato sulla linea di colonna. La selezione della cella avviene abilitando la corrispondente riga e la colonna desiderata. Metà degli indirizzi (ABUS/2) selezionano la riga, mentre la restante parte di indirizzi (opportunamente multiplexata) seleziona la colonna. Gli elementi contigui su una riga sono anche adiacenti in senso logico.

Cicli DRAM
A seconda degli ABUS attivi si trasferiscono dati presenti in memoria ad indirizzi diversi:
-ABUS0, indica l'indirizzo di partenza
-ABUS1-16, indica la parola all'interno del banco con profondità 64KB
-ABUS17-19, indica l'indirizzo del blocco da 128KB.
Esistono principalmente 4 cicli distinti per la gestione delle DRAM:
-Read, ciclo di lettura di un dato o di una sequenza di dati contigui
-Write, ciclo di scrittura di un dato o di una sequenza di dati contigui
-Refresh, ciclo di "rinfrescamento" dei dati in memoria, fondamentale affinchè questo tipo di memoria non perda il dato contenuto all'interno delle celle. Per effettuare questa operazione si "approfitta" di alcuni momenti:
--Nel caso in cui sia attivo RAS e non CAS, viene rinfrescata (cioè letto e riscritto) tutta la riga corrispondente.
--Nel caso in cui viene attivato prima il CAS e poi il RAS e l'Address BUS contiene un valore non valido.
--Hidden, viene svolto dopo una READ lasciando il CAS attivo.
-Fast Operative, ciclo che permette la selezione di celle adiacenti senza dover completare il ciclo di RAS. In pratica vengono lette tutte le celle appartenenti alla stessa riga. Essi sono molto utili per i cicli di burst, che vanno ad aggiornare le cache. Le tipologie di fast operative sono:
--Page Mode, il RAS rimane attivo (in modo da abilitare tutti i bit relativi alla riga selezionata), viene switchato il CAS (senza ritrasmettere il RAS).
--Hyper Page Mode; uguale al Page Mode, ma il CAS è più veloce a switchare
--Static-Column Mode, simile al Page Mode, ma si cambia automaticamente da una colonna all'altra. Si migliorano le prestazioni ma sono richiesti dei controller della memoria più complessi, in quanto essi in base alla tipologia di ciclo devono poter realizzare temporizzazioni diverse.

Organizzazione e tipologie di DRAM
Esistono tre tipi di DRAM a seconda del fast operative mode utilizzato:
-asincrone (EDO, BEDO), in cui il dispositivo è sincronizzato al clock del bus.
-sincrone (SD, DDR). Le SDRAM ottengono migliori prestazioni attraverso un controller dei cicli di burst più efficiente e la sincronizzazione con clock del bus con quello del processore. Le DDR (double data rate) RAM adoperano una tecnica di prefetch che permette di operare su una larghezza doppia rispetto al parallelismo di ingresso del chip. Esistono versioni di DDR successive, che variano per frequenza (DDR2 ha frequenza doppia a parità di clock). Per ogni ciclo di clock, grazie alle DDR, si possono leggere due dati.
-protocol based (RDRAM). Non sono molto utilizzate in quanto molto complesse e costose.
E' meglio utilizzare DRAM sincrone, in quanto si possono prevedere a priori i tempi per gestire una lettura/scrittura e in questo modo eseguire altre operazioni in parallelo che non necessitano del BUS. nelle memorie sincrone sono presenti due parametri programmabili: il numero di colpi di clock del BUS a cui corrisponde una lettura/scrittura e la lunghezza dei cicli di burst (trasferimenti multipli di più dati contigui).
Le DRAM sono organizzate in banchi, che sono blocchi fisici con parallelismo di un Byte, selezionati dai segnali BEi. Il numero di banchi dipende dal Data BUS (se il BUS è da 4 Byte, sono presenti 4 banchi). Ogni singolo chip (device) è caratterizzato da un certo numero di indirizzi (profondità) e da un certo parallelismo dei dati. Un insieme di device con parallelismo pari a quello del Data BUS è detto modulo e normalmente è realizzato su un'unica piastrina. Il Rank è la porzione di modulo costituito da un blocco di device con parallelismo pari al Data BUS e profondità pari a quelle del chip. Su un modulo possono essere presenti uno o più rank.
La struttura di una DRAM è una matrice di condensatori in cui ognuno di essi è individuabile mediante una coordinata di riga e una di colonna.
Durante i periodi di precharge non si può accedere alla memoria. Dopo ogni accesso è necessario un periodo di precharge. Il tempo di risposta (tacc) è sempre doppio rispetto al tempo di ciclo.
Il DRAM controller può essere un chip esterno oppure essere integrato nella RAM stessa. Al suo interno sono presenti tre tipi di blocchi:
-MDI, blocco che dipende dal tipo di DRAM, con il compito di multiplexare i dati presenti sull'ABUS e di gestire la temporizzazione.
-refresh, che impone i cicli di refresh.
-timing & control, che riceve le informazioni e genera i segnali di controllo (RAS, CAS, WE, cicli di WAIT, direzione,…)

Controllo degli errori
Con l'aumento delle dimensioni delle memorie la probabilità di avere errori costanti (rottura di un pin) o temporaneo (particella alfa cade su un condensatore) è aumentata.
Gli errori possono essere rilevati o corretti in diversi modi con diverse tecnologie:
-bit di parità, 1bit per ogni Byte di memoria ha la capacità di rilevare gli errori singoli. Necessita di un circuito per il calcolo del bit e di una porta XOR per la verifica. Nel caso in cui venga rilevato un errore bisogna subito innescare una procedura di sistema. Nel momento in cui la CPU riceve un interrupt non mascherabile si può fermare (chiudendo tutti i processi) oppure riconfigurarsi, individuando il processo che ha causato il problema e risolvere il problema terminandolo.
-ECC (con codice Huffmann), necessita di 8b per 8Byte ed è in grado di correggere errori singoli e individuare errori doppi. Necessita di una circuiteria per il calcolo e di una porta XOR, ma causa una perdita evidente delle prestazioni (2%).
Nei processori di ultima generazione, per facilitare l'organizzazione della memoria il BIT di parità viene generato automaticamente.


blog comments powered by Disqus
 

http://sartomiki.net/modules/mod_fuofb/assets/it/find-us-on-facebook-1.png

Follow me

Amici

Chi è online

 11 visitatori online

Siti amici

Web4Web.IT - Low Cost Hosting

Notizie flash

Ora potete linkare gli articoli e gli appunti su Facebook, mediante l'apposito tasto presente in alto a destra! Condividete!

PUBBLICITA'