Torna indietro   Hardware Upgrade Forum > Componenti Hardware > Motherboard, Chipset & RAM

The Division 2: come va con 17 schede video
The Division 2: come va con 17 schede video
The Division 2 è oggi uno dei videogiochi con la migliore grafica. In questo articolo scopriamo come ha lavorato Ubisoft e come gira The Division 2 con una serie di differenti hardware. Inoltre, esaminiamo con la lente d'ingrandimento gli effetti grafici che rendono la versione PC di The Division 2 la migliore sul piano della completezza grafica e della fedeltà visiva
VOIspeed UCloud, il centralino virtualizzato di TeamSystem
VOIspeed UCloud, il centralino virtualizzato di TeamSystem
Teamsystem trasferisce sulla nuvola anche il centralino aziendale. La soluzione si chiama VOiSpeed UCloud e promette di trasformare il modo in cui vengono gestite le chiamate che passano tramite i PBX aziendali, permettendo di avere un centralino telefonico unificato fra le varie sedi. L'aspetto più intrigante è che sul cloud transitano solo i dati di instradamento mentre le chiamate rimangono gestite dalle classiche linee analogiche e mobili.
moto g7 Plus, recensione: uno dei migliori smartphone midrange del 2019
moto g7 Plus, recensione: uno dei migliori smartphone midrange del 2019
moto g7 Plus si configura come uno dei migliori dispositivi di fascia media: costa 319 euro ma si può trovare anche a meno online, e si caratterizza per ottime qualità sia sul piano della qualità costruttiva, sia su quello dell'attenzione per i dettagli lato software. Dispone inoltre di alcune caratteristiche mutuate dalla fascia alta, come ad esempio la stabilizzazione ottica per la fotocamera posteriore, rappresentando il top di gamma della nuova serie moto g7 di Motorola
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-05-2006, 15:32   #1
v_parrello
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1315
[TUTORIAL] La guida definitiva su RAM DDR, DDR2 e relativi timings

La guida che segue nasce dall'esigenza personale di fugare i dubbi sul funzionamento delle RAM di tipo SDRAM DDR e DDR2 (che sono quelle attualmente utilizzate) e dei principali timings associati.
La guida è stata scrita cercando di fare un compendio delle varie informazioni trovate qua e la in giro sulla rete e soprattutto studiando i datasheet dei costruttori di memorie che sono sull'argomento una miniera di informazioni. C'e' da dire che per leggere i datasheet ho dovuto rispolverare tutte le vecchie nozioni di elettronica ormai abbandonate dai tempi dell'università (che ahimè sono lontani), e quindi ho cercato di mettere in maniera più semplice possibile le cose capite ed elaborate a partire dai datasheet.
La guida cerca di spiegare il funzionamento delle DDR SDRAM (anche per le DDR2 valgono tutti i ragionamenti fatti) e dei principali timings che si trovano nei bios delle schede madri più evolute (per es. DFI). Chi avrà tempo e voglia di leggere i datasheet dei costruttori delle memorie e quelli dei controller di memoria (io mi sono basato sul controller AMD integrato nel processore) vedrà che i timings che regolano il funzionamento delle RAM e del controller di AMD nella realtà sono un miriade e che solo i principali sono presenti nei bios delle motherboard.

Naturalmente nello spirito del forum sono a disposizione per recepire osservazioni/precisazioni/commenti, e naturalmente sono a disposizione di tutti coloro che hanno bisogno di chiarimenti e vorrebbero reperire del materiale per studiare in maniera più approfondita quanto riassunto in questa guida.

INIZIO DELLA GUIDA


1. Introduzione

Lo scopo del presente tutorial è quello di comprendere i timings che regolano il funzionamento delle moderne memorie DDR SDRAM. Per raggiungere questo scopo è necessario capire le modalità di funzionamento della memoria e in particolare come sono effettuate le operazioni elementari come la lettura e la scrittura dei dati.
Saranno presi in considerazione dei modelli semplificati di funzionamento che sono adatti a descrivere compiutamente i timings delle memorie. Verrà utilizzato un linguaggio che sia il più semplice possibile e dei modelli semplificati che se da una parte consentiranno ad un numero maggiore di persone di comprendere gli argomenti trattati, dall’altra faranno storcere il naso agli utenti maggiormente esperti e a quelli più puristi: mi scuso anticipatamente con questi utenti.
Tutte le considerazione fatte sui timings sono valide anche per le memorie DDR2 SDRAM visto che la loro architettura interna è comunque quella di una memoria SDRAM. L’unica differenza tra DDR e DDR2 consiste nella banda di uscita e verrà chiarita meglio nel seguito.


2. Indirizzamento in un modulo di memoria DDR SDRAM

Logicamente i chip che costituiscono le memorie sono organizzati come degli array bidimensionali (matrici) che vengono acceduti specificando un indirizzo di riga ed un indirizzo di colonna. Ciascun elemento della matrice contiene una cella elementare di memorizzazione.
Pertanto per accedere un dato contenuto in una data cella di memoria bisogna fornire due indirizzi uno di riga ed uno di colonna, e quindi se suppongo di avere una memoria che è composta da un array bidimensionale (matrice) di 8192 righe e 1024 colonne avrò bisogno di:
• 2^13=8192 di un indirizzo di13 bit per indirizzare ciascuna delle righe presenti nella matrice
• 2^10=1024 un indirizzo di 10 bit per indirizzare ciascuna delle colonne presenti nella matrice
In totale avrò bisogno di un indirizzo composto da 13+10=23 bit per indirizzare correttamente il contenuto di una cella di memoria.
In altre parole questo significa che dovrei fornire al chip di memoria 23 linee che consentano di trasportare l’indirizzo con cui si individua una cella elementare di memoria.



Primo espediente che viene utilizzato nelle moderne memorie DDR SDRAM invece di utilizzare 23 linee che consentano di trasportare l’indirizzo, se ne utilizzeranno solo 13 che rappresentano le linee necessarie per poter indirizzare le righe. Per indirizzare le colonne utilizzerò le stesse linee ma in tempi diversi: prima sarà trasferito l’indirizzo della riga da cui si vuole leggere il dato e subito dopo sarà trasferito l’indirizzo della colonna utilizzando (nell’esempio fatto) solo 10 delle 13 linee di indirizzo disponibili.
Ecco il motivo per cui ho bisogno il segnale di RAS (Row Address Select) e il segnale di CAS (Column Address select), questi segnali servono per far capire al controller della memoria che quello che sto passando è un indirizzo di riga oppure di colonna. Pertanto qualsiasi accesso alla memoria per fare una qualsiasi operazione prevede in sequenza il segnale di RAS seguito dall’indirizzo di riga ed il segnale di CAS seguito dall’indirizzo di colonna.
Ma perché si è complicato il meccanismo di indirizzamento della memoria passando l’indirizzo completo in due tempi? La spiegazione è molto più semplice di quanto si creda: si vogliono risparmiare delle linee di indirizzo per consentire una miniaturizzazione più spinta e quindi per consentire di avere maggiori quantità di memoria in parità di spazio. Nella microelettronica quando si deve portare qualche linea elettrica al di fuori del chip sorgono sempre grossi problemi, infatti questo costituisce uno dei maggiori impedimenti da superare nella progettazione di un qualsiasi chip miniaturizzato.
A questo punto facciamo un accenno alla metodologia utilizzata per memorizzare i dati all’interno di una cella di memoria. Sostanzialmente viene utilizzato un circuito elettrico che può essere schematizzato come un condensatore che può essere caricato o scaricato, attribuendo ai due stati elettrici del condensatore i valori binari 0 ed 1 ecco fatto che avrò un circuito in grado di memorizzare dei dati al proprio interno. Il tutto può essere schematizzato nel seguente modo:



Questo circuito rappresenta un buon risultato dal punto di vista della miniaturizzazione perchè utilizza un numero minimo di componenti, però ha un inconveniente che è quello di tutti i condensatori e cioè che passato un certo tempo tende a perdere la sua carica elettrica di fatto perdendo il contenuto informativo contenuto in esso.
Per ovviare a questo inconveniente si ricorre al refresh che consiste nell’accedere (dando quindi tensione alla cella elementare), ad intervalli di tempo regolari (refresh time), il contenuto di ogni cella mantenendo inalterati i dati originali. Così è possibile mantenere i dati all'interno della DRAM per un tempo indeterminato.
Il refresh viene anche effettuato in corrispondenza di ciascuna operazione di lettura/scrittura in memoria.

3. Densità e banchi in un chip di memoria

I chip di memoria più diffusi sono quelli da 4, 8, e 16 bit (più raramente 32 bit). Quindi un chip di 512 Mbit di memoria può essere composto fino a 128M con celle a 4 bit, 64M con celle a 8 bit, oppure 32M con celle a 16 bit, le corrispondenti notazioni sono 128M × 4, 64M × 8, e 32M × 16.
La prima cifra è chiamata depth (profondità) di un chip di memoria ed è una quantità adimensionale, la seconda è chiamata width (ampiezza) ed è espressa in bit. Ciascun chip di memoria è caratterizzato da una densità (profondità × ampiezza) ed è organizzato in banchi (di solito 4 e più raramente 2).
Quindi la densità indica la quantità di celle elementari memoria presenti in un chip e le linee dati in uscita (I/O) del chip, per esempio:
• 64 Mbit × 8 significa che il chip di memoria è da 512 Mbit (densità) e che in uscita vengono utilizzate linee dati di I/O con ampiezza di 8 bit ;
• 32 Mbit × 16 significa che il chip di memoria è da 512 Mbit (come prima) e che in uscita vengono utilizzate linee dati di I/O con ampiezza di 16 bit;
Se il chip è organizzato in 4 banchi avrò all’interno del chip 4 matrici di 128 Mbit ciascuna ovvero utilizzando gli stessi esempi di prima:
• avrò 4 matrici di 8192 × 1024 × 16
• avrò 4 matrici di 8192 × 512 × 32
Dagli esempi fatti si nota che se l’uscita del chip è di n bit allora ogni elemento delle matrici di memoria conterrà 2 × n bit, questo è dovuto al fatto che l’architettura delle memorie DDR SDRAM utilizza un’architettura del tipo Double Data Rate (DDR appunto), che è essenzialmente un’architettura con un tipo d’interfaccia progettata per trasferire due data words per ogni ciclo di clock nei pin di I/O. In una memoria DDR SDRAM un singolo accesso in lettura/scrittura consiste effettivamente di un trasferimento interno al chip di un singolo dato che contiene 2n-bit per ciascun ciclo di clock, e corrisponde sui pin di I/O a due dati che contengono ciascuno n-bit, in cui ciascun dato viene trasferito ogni mezzo ciclo di clock (un dato viene trasferito sul fronte di salita del clock e un altro dato sul fronte di discesa).
In altre parole con un unico ciclo di clock vengono accedute e rese disponibili due data words, mentre nelle vecchia memorie SDRAM con un ciclo di clock veniva acceduto e reso disponibile un solo data word, quindi in generale a parità di frequenza di clock la banda delle DDR SDRAM è doppia rispetto a quella delle normali SDRAM.
L’organizzazione in banchi implica che avrò bisogno di ulteriori bit di indirizzo per indirizzare uno dei quattro banchi presenti in ciascun chip, che vengono chiamati segnali di Bank Address (BA). Per riassumere quanto detto si può considerare il seguente schema logico di un chip di memoria:



Nella realtà le cose sono molto più complicate, però questo schema riassume i concetti principali che concorrono alla lettura/scrittura di valori all’interno di un chip di memoria. Sono presenti i seguenti elementi:
1) i segnali di indirizzamento:
a) i segnali di Bank Address BA0 e BA1 che servono a indirizzare uno dei 4 banchi di memoria presenti all’interno del chip;
b) i segnali di Address da A0 a A12 che consentono di indirizzare le celle di memoria all’interno di ciascun banco.
2) i segnali di controllo:
a) CS (Chip Select) che serve a selezionare/deselezionare il chip di memoria;
b) WE (Write Enabled) che serve ad abilitare/disabilitare la scrittura in questo chip di memoria;
c) CAS (Columns Address Select) che è il segnale che precede gli indirizzi di colonna;
d) RAS (Row Address Select) che è il segnale che precede gli indirizzi di riga.
3) DQ0-DQ7 che sono le linee di I/O del chip di memoria.

L’organizzazione di un array di memoria SDRAM in banchi è stato introdotto principalmente per aumentare le performance, anzi per essere più precisi, per minimizzare le latenze del sistema. Infatti, il fatto di avere più banchi può consentire, per esempio, di accedere una riga in un banco mentre contemporaneamente si sta eseguendo un refresh un’altra riga in un altro banco. Oppure di organizzare i dati nella memoria in modo tale che il prossimo dato che sarà acceduto sarà nell’altro banco e nella riga di memoria che è stata appena refreshata ed è pronta per essere letta/scritta, risparmiando un ciclo di refresh (ricordiamo che tutte le operazioni di lettura/scrittura sono associate ad un ciclo di refresh). Questo metodo di accesso è detto bank interleaving.
Per i più puristi e quelli più esperti riporto di seguito come nella realtà è l’architettura di un chip di memoria da 512 Mbit con densità 64 Mbit × 8:



Lo schema è tratto da un data sheet di un chip di memoria commerciale di un noto produttore, chi vuole può divertirsi a capirlo in dettaglio. Comunque i concetti fondamentali sono quelli descritti nello schema semplificato prima presentato.

4. Granularità in un modulo di memoria

Il concetto di granularità si riferisce al fatto che più chip di memoria con una qualsiasi densità possono essere collegati assieme in un layout di un PCB per formare un modulo di memoria di una capacità qualsiasi.
Come già visto l’ampiezza di un chip è la capacità della sua interfaccia con il bus dati di I/O (un chip 64 Mbit × 8 ha ampiezza di 8 ovvero è capace a veicolare in I/O 8 bit alla volta). Considerando che i moderni controller di memoria hanno bus dati a 64 bit, bisogna assemblare assieme tanti chip di memoria tali che l’ampiezza totale veicolata in I/O corrisponda a quella dell’ampiezza del bus dati del controller. Quindi la composizione di un banco SDRAM di 64 bit richiede 16 chip con ampiezza × 4, 8 chip con ampiezza × 8, 4 chip con ampiezza × 16 cioè viene fatta riempiendo il bus dati del controller.
Il rimanente parametro di capacità che è la profondità viene utilizzato per determinare la capacità totale del modulo fisico di memoria SDRAM. Per esempio un tipico modulo di 1GB di SDR/DDR/DDR2 SDRAM ha profondità di 1GB × 8 (bit/byte) / 64 bits = 128M. Quindi in questo caso il modulo è denotato come 128M × 64.
C’è da dire che in un banco fisico di memoria posso ottenere la stessa capacità utilizzando chip che hanno profondità che è la metà di quella massima utilizzabile, così per esempio posso ottenere un modulo di 1GB utilizzando 8 chip 64M × 16 oppure utilizzando 16 chip 64M × 8. Nel primo caso si parla di memoria singl-bank (o single-rank), nel secondo caso di memoria dual-bank (o dual-rank). Le memorie dual-bank sono rappresentate con configurazioni che utilizzano 16 chip con ampiezza × 8, docve il primo banco è formato dai primi otto chip nel lato frontale del modulo e gli altri otto chip nel lato posteriore nel modulo di memoria. Naturalmente i moduli di memoria dual-bank di solito hanno maggiori latenze di accesso rispetto a quelli single-bank.
Per i più esperti di seguito viene riportato un diagramma funzionale a blocchi di un layout PCB standard, preso da un datasheet di un noto costruttore, che rende l’idea di come i chip di memoria a 66 pin vengono collegati assieme per ottenere un modulo di memoria DDR SDRAM da 1 GB unbuffered a 184 pin:



Notate come le linee dati di I/O sono 64 e il segnale di chip select consente di selezionare 8 banchi per volta.

5. Comandi impartiti ad un chip di RAM e timings associati

Un chip di memoria RAM può ricevere un set di comandi elementari che vengono impartiti utilizzando i segnali che arrivano al chip di memoria. Più precisamente l’invio combinato di questi segnali si traduce in un comando che viene impartito al chip di memoria. Il tutto è riassunto nella tabella seguente:



Nelle righe della tabella sono riportati i comandi ed i corrispondenti segnali di controllo che bisogna “alzare” (H sta per High ed L sta per Low) per eseguire il comando stesso. Tenendo conto che il segnale si attiva nella transizione del fronte di clock da alto a basso Low corrisponde a segnale attivato.
Per indirizzare una riga dovrò impartire un comando di ACTIVE che corrisponde al segnale di CS (Chip Select) e di RAS (Row Address Select) attivi seguiti dagli indirizzi di banco e di riga. Per leggere il contenuto di una riga precedentemente attivata dovrò “alzare” i segnali di CS e CAS (Column Address Select).
Una volta capito come vengono impartiti i comandi ad un chip di memoria è facile capire come avviene un ciclo di lettura e di scrittura sulla memoria e quali siano i timings associati.

5.1. Attivazione di una riga di memoria

Facendo riferimento al modello semplificato di chip di memoria già riportato precedentemente proviamo ad immaginare le operazioni elementari che vanno fatte per leggere e scrivere un elemento all’interno delle celle elementari presenti in un chip di memoria.



Prima di fare una qualsiasi operazione sui dati immagazzinati in una riga di memoria, è necessario attivare la riga corrispondente nel banco di memoria. A questo scopo viene utilizzato il comando ACTIVE associato ad un indirizzo di banco presente sui pin BA0-BA1 e un indirizzo di riga presente sui pin A0-A12 del chip di memoria (fare riferimento al modello di chip semplificato presentato precedentemente).
La riga attivata rimane disponibile per operazioni susseguenti alla prima fino a quando non viene inviato un comando di PRECHARGE che disattiva la riga e la rende indisponibile a successive operazioni (fino ad un nuovo comando di ACTIVE). Il periodo minimo di disponibilità della riga dalla sua attivazione fino al segnale di precharge è determinato dal Row Active Time (tRAS).
Altro concetto è che è impossibile attivare un’altra riga nello stesso banco di memoria fino a quando la riga precedente nello stesso banco di memoria è disponibile. Questo è dovuto al fatto che tutta l’architettura fisica e il principio di funzionamento all’interno dello stesso chip è condiviso per tutte le righe contenute nello stesso banco di memoria. Per esempio all’interno dello stesso chip di memoria è presente lo stesso buffer di dati per ciascun banco, se si attivasse un’altra riga prima di avere disattivato quella attivata precedentemente, si otterrebbe la riscrittura dei dati nel buffer con quelli dell’ultima riga attivata. Quindi, il minimo periodo di tempo tra l’attivazione di due righe nello stesso banco di memoria di un chip è determinato dal Row Cycle Time (tRC).
Inoltre dopo aver attivato una riga prima di dare il successivo comando che indirizza la colonna bisogna attendere un sempre un tempo che è il RAS to CAS Delay (tRCD).
Contemporaneamente, essendo attiva una riga in un dato banco, è possibile attivare un‘altra riga in un altro banco del chip (questo è uno dei vantaggi di suddividere la memoria in più banchi) al successivo ciclo di clock, riducendo l’overhead totale legato all’accesso delle righe. Il minimo intervallo di tempo tra due accessi successivi su due differenti banchi è chiamato Row-to-Row Delay (tRRD). La ragione per introdurre questa ulteriore latenza non ha nulla a che vedere con le operazioni fatte sul chip di memoria, ma viene introdotta solamente per limitare i consumi elettrici indotti dalla frequente esecuzione di questo comando, la cui troppo frequente esecuzione potrebbe portare a effetti non desiderabili di eccessivo carico elettrico.
Di seguito un diagramma che spiega il significato del tRCD e del tRRD:



5.2. Lettura in memoria

Per quanto detto i passi necessari per leggere un elemento all’interno del chip di memoria sono i seguenti:
1) L’indirizzo di riga è inviato sui pin di indirizzo A0-A12 attraverso l’address bus;
2) Il pin che trasporta il segnale di RAS è attivato cosicché viene individuata la riga di memoria da cui leggere il valore.
3) La riga è copiata nel buffer interno al chip.
4) Il segnale di Write Enable è disattivato cosicché non sarà possibile scrivere un dato sulla stessa riga mentre questa viene letta.
5) L’indirizzo di colonna è inviato sui pin di indirizzo A0-A10 attraverso l’address bus.
6) E’ individuata nel buffer interno la cella elementare di memoria da mandare in output.
7) Il segnale di CAS abilità l’output cosicché il valore letto è propagato sui pin di I/O DQ0-DQ7 e quindi può viaggiare sul data bus verso il sistema.
8) I segnali di RAS e CAS sono disattivati così il ciclo può ricominciare.

Pertanto seguendo lo schema logico precedente, dopo aver attivato una riga in un banco di memoria bisogna inviare l’indirizzo di colonna. Tra l’invio dell’indirizzo di riga e l’indirizzo di colonna è necessario aspettare un tempo minimo chiamato RAS#-to-CAS# Delay (tRCD). Questo tempo è uno dei parametri di funzionamento della memoria fissati dal costruttore e che dipende strettamente dalla qualità del processo costruttivo e dalla qualità dei materiali impiegati.
Pertanto dopo un tempo tRCD è inviato al chip di memoria il comando di READ che contiene l’indirizzo di colonna e di banco. La lettura nelle memorie DDR SDRAM avviene in burst mode nel senso che con un unico comando di READ in effetti vengono lette più celle elementari di memoria (2, 4 oppure 8). Tra parametri impostabili per il funzionamento della memoria esiste un parametro detto Burst Lenght (nel bios DFI questo parametro è chiamato 32 byte granularity) che specifica proprio la lunghezza del burst da leggere.
C’è da dire che esistono due tipi di comandi di lettura:
• READ che consente di leggere da una riga di memoria lasciandola disponibile per successive operazioni;
• READ+AP (Auto Precharge) che alla fine dell’operazione di lettura, dopo che il burst di dati è stato trasferito, “chiude” la riga di memoria non consentendo di effettuare si di essa successive operazioni.
Dopo il commando di READ ( o READ+AP) la prima porzione di dati (detta anche chunk di dati) non è immediatamente disponibile sui pin di uscita del chip di memoria (DQ0-DQ7), ma diventa disponibile dopo un certo intervallo di tempo che è chiamato CAS# Latency (tCL). Pertanto il ritardo tra il comando di READ e la disponibilità della prima porzione dei dati è la CAS# Latency (tCL), le porzioni di dati successive alla prima sono disponibili in uscita senza ulteriori latenze.
Lo schema successivo rappresenta la sequenza temporale delle operazioni:



Dopo l’attivazione della riga (che non è mostrata nel diagramma) viene inviato il comando di READ con l’indirizzo di banco e di colonna (BA a, COL n), si aspettano 2.5 cicli di clock (= CAS Latency) dopodiché il burst di dati (4 porzioni o chunk presi dal banco a colonna n DOa-n) comincia ad essere disponibile sulle linee di uscita DQ. Sul diagramma è da notare che il burst di dati in uscita è sincronizzato con un altro segnale che viene detto DQS che serve a sincronizzare l’I/O di dati dal chip di memoria con il controller della memoria esterno. Più precisamente i dati in uscita (letti dalla memoria) sono allineati con i fronti (di salita e discesa) di questo segnale di clock, i dati in ingresso (scritti sulla memoria) sono centrati rispetto al segnale. Per i dati in uscita questo segnale è usato per “catturare” i dati.
Il tempo che intercorre tra il comando di READ e il primo fronte di salita del segnale DQS, corrispondente all’output del primo chunk del burst di dati in ingresso, è detto read preamble time (tDQSCK). In questo caso il read preable time è inglobato nella CAS latency e quindi non ha ulteriore impatto sull’operazione di lettura.


5.3. Scrittura in memoria

Per quanto detto i passi necessari per scrivere un elemento all’interno del chip di memoria sono i seguenti:
1) L’indirizzo di riga è inviato sui pin di indirizzo A0-A12 attraverso l’address bus;
2) Il pin che trasporta il segnale di RAS è attivato cosicché viene individuata la riga di memoria su cui scrivere il valore.
3) La riga è copiata nel buffer interno al chip.
4) Il segnale di Write Enable è attivato cosicché non sarà possibile leggere un dato sulla stessa riga mentre questa viene scritta.
5) L’indirizzo di colonna è inviato sui pin di indirizzo A0-A10 attraverso l’address bus.
6) E’ individuata nel buffer interno la cella elementare di memoria da scrivere.
7) Il segnale di CAS abilità l’input cosicché il valore presente sui pin di I/O DQ0-DQ7 viene scritto e quindi può aggiornare il contenuto della memoria.
8) I segnali di RAS e CAS sono disattivati così il ciclo può ricominciare.
Analogamente alla scrittura, seguendo lo schema logico precedente, dopo aver attivato una riga in un banco di memoria bisogna inviare l’indirizzo di colonna. Tra l’invio dell’indirizzo di riga e l’indirizzo di colonna è necessario aspettare il tempo minimo chiamato RAS#-to-CAS# Delay (tRCD). Pertanto dopo un tempo tRCD è inviato al chip di memoria il comando di WRITE che contiene l’indirizzo di colonna e di banco sul quale scrivere. Anche la scrittura nelle memorie DDR SDRAM avviene in burst mode nel senso che con un unico comando di WRITE vengono scritte più celle elementari di memoria (2, 4 oppure 8). Tra parametri impostabili per il funzionamento della memoria esiste un parametro detto Burst Lenght che specifica proprio la lunghezza del burst da scrivere.
Anche in questo caso esistono due comandi di scrittura:
• WRITE che consente di leggere da una riga di memoria lasciandola disponibile per successive operazioni;
• WRITE+AP (Auto Precharge) che alla fine dell’operazione di scrittura, dopo che il burst di dati è stato trasferito, “chiude” la riga di memoria non consentendo di effettuare si di essa successive operazioni.
Ci sono due differenze tra le operazioni di READ e WRITE:
• la prima porzione del dato da scrivere dovrà essere fornita contemporaneamente al comando di WRITE/WRITE+AP, al numero di banco e all’indirizzo di colonna. La successiva porzione di dato sarà inviata al successivo ciclo di clock e così via fino all’ultima porzione di dato il cui numero è specificato nel burst lenght;
• in questo caso, diventa di fondamentale importanza il Write Recovery Time (tWR), invcece della CAS# Latency (tCL). Questo valore rappresenta il minimo intervallo di tempo tra la ricezione dell’ultima porzione di dati da scrivere e la disponibilità della riga indirizzata ad essere “chiusa” con il comando di PRECHARGE. Ma qualora fosse necessario leggere dei dati dalla stessa riga “aperta” invece di chiuderla allora interviene un’altra latenza che è il tempo di Write-to-Read Delay (tWTR).
Lo schema successivo rappresenta la sequenza temporale delle operazioni che avvengono durante una scrittura in memoria. In particolare il diagramma si riferisce ad una scrittura seguita da una lettura sulla stessa riga di memoria ma su colonne diverse:



Dopo l’attivazione della riga (che non è mostrata in questo diagramma), viene dato il comando di WRITE assieme all’indirizzo del banco di memoria BAa e della colonna COLb. A questo punto al contrario della lettura che bisognava aspettare un tempo pari alla CAS Latency, bisogna aspettare il tempo necessario affinché il segnale DQS che sincronizza l’input sia nel fronte di salita. Il tempo che intercorre tra il comando di WRITE e il primo fronte di salita del segnale DQS, corrispondente all’input del primo chunk del burst di dati in ingresso, è detto write preamble time (tDQSS). Dopo aver aspettato questo tempo il burst di dati presente sui pin DQ (4 chunk nell’esempio) comincia ad essere scritto in memoria. Nel diagramma dei tempi si vede anche la presenza di un segnale DM che è detto Data Mask che nella scrittura è sincrono con il DQ.
Nel diagramma dei tempi si vede che dopo avere scritto i dati nella memoria prima di fare qualsiasi altre operazione sulla stessa riga di memoria bisogna attendere un tempo pari al Write-to-Read Delay (tWTR). Subito dopo nel diagramma di esempio è fatta un’operazione di READ sul banco BAa e sulla colonna COLn.

6. Latenze associate alle operazioni di interfaccia e alle operazioni di funzionamento

Le operazioni precedentemente viste si possono susseguire in un ordine qualsiasi durante il normale funzionamento di un computer e sono necessari per accedere la memoria e fare delle operazioni di lettura e di scrittura. Ci sono alcune operazioni che vengono fatte in memoria che non riguardano direttamente la lettura o la scrittura di un dato, ma riguardano operazioni necessarie per garantire il corretto funzionamento della RAM e per consentire ad essa di interfacciarsi con il controller che è il mezzo attraverso il quale la memoria comunica con il resto del sistema.
Il diagramma seguente riassume in maniera sintetica quelle che sono i possibili stati in cui si può trovare un modulo di memoria:



Per esempio è possibile specificare il Command Rate che può valere 1T oppure 2T e indica se i comandi vengono impartiti alla memoria ogni ciclo di clock oppure ogni due cicli di clock.
Inoltre come già visto la memoria SDRAM per conservare i dati memorizzati ha bisogno di un’operazione di refresh,tipicamente l’intera DRAM deve avere ogni riga refreshata almeno una volta ogni 64 ms (pena la perdita dei dati in essa memorizzati). Entrano in gioco due timings:
• Il Row Refresh Cycle Time (tRFC) (anche detto (Auto-Refresh-to-Active/Auto-Refresh Command Period) che rappresenta il tempo tra due successive comandi di auto refresh oppure self refresh. Dipende dalla dimensione del chip di memoria e dalla sua frequenza di funzionamento (per esempio valori tipici a 200 MhZ di frequenza sono 70 ns ovvero 14 colpi di clock per chip a 512Mbit o più piccoli e 120 ns ovvero 24 colpi di clock per chip a 1 Gbit).
• Il Refresh Period (tREF) che rappresenta il tempo medio tra due refresh sulla stessa riga di memoria che dipende dal numero di righe totali presenti nella memoria e sulla frequenza di clock. Tipicamente l’intero modulo di memoria deve avere ogni riga refreshata al massimo ogni 64 ms. Quindi per memorie aventi pagine di 4k il tREF è pari a 64ms/4096=15.6 μs medi per refreshare ciascuna riga, per memorie con pagine di 8k è richiesto un tempo medio di refresh delle righe di 7.8 μs, e per memorie con pagine 16k è richiesto un tempo medio di refresh delle righe di 3.9 μs.
Un altro tempo che impatta sulla banda della memoria è la Maximum Asynchronous Latency che va settata in funzione del round trip loop time tra il processore e la DIMM più lontana. Il round trip loop è influenzato dalla lunghezza delle tracce del circuito del bus utilizzate per raggiungere la DIMM, dal carico della memoria e dalla frequenza di funzionamento del bus. Quindi si capisce ce questo è una latenza che riguarda i diversi ritardi di propagazione dei segnali dovuti proprio ala geometria e alla progettazione della motherboard, dei moduli di memoria. Questo diverso ritardo di propagazione dei segnali si traduce in un non perfetto sincronismo tra il clock della memoria e il FSB, con tale parametro si imposta il massimo asincronismo tollerabile.
Sono presenti tutta una serie di settaggi che agiscono sul segnale DQS che come abbiamo visto è quello che sincronizza l’I/O dei dati del chip di memoria. Potrebbero nascere dei problemi quando si crea un ritardo tra il segnale DQS e il segnale vero e proprio di input/output dei dati DQ. Il fenomeno è ben descritto dal seguente schema:



Nel disegno soprastante si vede che c’e’ un piccolo slittamento tra il segnale DQ (che porta i dati di input(output) ed il segnale DQS. Questo ritardo è detto DQ-DQS Skew ed i parametri di funzionamento che consentono di correggerlo sono:
• il DQS Skew Control che specifica se attivare o meno al correzione di questo errore e se bisogna incrementare o decrementare il ritardo;
• il DQS Skew Value che specifica il valore entro il quale ricondurre la correzione.
Nel disegno sottostante si vede una situazione in cui il ritardo è stato corretto e i due segnali sono perfettamente sincronizzati. Il parametro DQ-DQS Skew è un parametro di funzionamento dei chip di memoria e viene specificato dal costruttore qual’è la massima deriva sopportabile dal chip di memoria (valori tipici sono 0,40-0,80 ns), in funzione della frequenza di lavoro e della qualità del processo produttivo e dei materiali impiegati. E’ ovvio che se tale deriva supera quella massima prevista per il chip di memoria in fase di progettazione allora ci potrebbero essere dei problemi.
Esistono altri due parametri che consentono di intervenire sui segnali DQ (linee dati in I/O dal chip di memoria) e DQS che è il segnale che serve a sincronizzare l’I/O con il bus dati del controller. In particolare questi parametri intervengono sull’intensità del segnale elettrico con il quale vengono generati questi segnali e sono i seguenti:
DRAM Drive Strength che permette di controllare la potenza del segnale DQ quando è la Dram che "guida" il Bus DQ, i.e. durante un'operazione di Read;
DRAM Data Drive Strength che permette di controllare la Potenza del segnale DQ quando è il controller della memoria che "guida" il bus, i.e. durante un'operazione di Write, in particolare modifica l'impedenza dei buffer di ricezione della Dram. Questo setting in realtà dovrebbe avere solo due valori (forte e debole). A introdurre un'ampia scala di valori è stato OskarWu con la Dfi nf4 aggiungendo opportune resistenze variabili di terminazione in parallelo ai buffer delle Dram.
Altri timings che riguardano il funzionamento del controller o meglio come il controller si inteerfaccia con i moduli di memoria sono:
Read/Write Queue Bypass Count che specifica il numero di volte che la più vecchia operazione accodata nel DCI (Device Control Interface) può essere bypassata prima che venga forzata la sua esecuzione.
Bypass Max specifica il numero di volte che la più vecchia operazione presente nel DCQ può essere bypassata prima che venga forzata la sua esecuzione.
Idle Cycle Limit specifica il numero Massimo di cicli di clock che passeranno prima di chiudere forzatamente una riga di memoria aperta.
Dynamic Idle Cycle Counter Enable quando settato ad 1 indica che ogni entry nella riga di memoria aggiusta dinamicamente l’Idle Cicle Limit secondo l’agoritmo basato sul Page Conflict/Page Miss. Cioè il contatore viene incrementato in corrispondenza di un evento di PM (Page Miss) ovvero quando viene richiesta una riga di memoria non aperta, e decrementato in corrispondenza di un evento di PC (Page Conflict) ovvero quando viene richiesta una riga che è in uno stato di idle (non aperta).


7. Osservazioni pratiche sui timings di memoria

Nei paragrafi precedenti abbiamo visto che il tempo minimo di disponibilità di una riga di memoria una volta attivata è dato dal tRAS, e tenendo conto che per leggere un valore devo aspettare un tempo minimo tRCD tra l’indirizzo di riga e colonna, un altro tempo minimo tCL tra l’indirizzo di colonna e la disponibilità della prima porzione di dati, avrò che

tRAS > tRCD + tCL
Inoltre visto che l’intero ciclo per leggere un burst di dati è dato dal tempo tRC e che il tempo necessario dall’attivazione all’uscita del primo chunk di dati è pari al massimo a tRAS e che per disattivare la riga avrò bisogno di un tempo pari al precharge tRP avrò che:
tRC= tRAS+ tRP
E’ da notare che di solito i tempi tRAS e tRC sono impostabili separatamente da BIOS allora potrebbe risultare qualche violazione delle equazioni prima descritte, e tuttavia non sarebbenulla di grave perché il controller di memoria aggiusterebbe autonomamente i valori tRAS e tRC per soddisfare le equazioni prima descritte.
Altra considerazione che si potrebbe fare è sul Refresh Period (tREF),infatti si è visto che dipende sostanzialmente dall’architettura dei chip di memoria e dalla frequenza di funzionamento, e quindi se si possiedono memorie che utilizzano dei chip di memoria che hanno un’architettura interna con 4 banchi di memoria e che funzionano a 200 MhZ, il valore del refresh andrebbe settato a 15.6 μs.

Sul settaggio dei vari timings di memoria si troverà materiale abbondante sui vari forum che parlano dell’argomento, lo scopo di questo tutorial era quello di cercare di far capire e applicare questi timings in maniera più “scientifica” e non affidandosi completamente a dei concetti spiegati senza capirne i motivi, o addirittura solamente accennati, quando addirittura non vengano inventati sulla base delle impressioni pratiche di funzionamento.
__________________
Trattative: giljevic,Nicola[3vil5],Genocide85,LUPO19964,DARIO-GT,Trokji ,guns81,O_RusS ,freewilly,ZippOC ,[Vdd]Gabrieletor ,zago,gigarobot ,:::: Dani83:::: ,river,sickofitall ,smoicol ,xeshwupgrade ,canna1988 ,Andrea deluxe, nico86 e tanti altri

Ultima modifica di v_parrello : 05-09-2006 alle 12:07.
v_parrello è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2006, 20:02   #2
v_parrello
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1315
8. Differenze principali tra DDR e DDR2

Come già detto precedentemente tutto quanto detto per le memorie DDR (modalità di funzionamento e timings) vale in gran parte anche per le memorie DDR2, quindi si procederà evidenziando le differenze introdotte dalle memorie DDR2 rispetto a quanto già presente sulle memorie DDR.
Le differenze sono ben riassunte nella tabella successiva:



Nei paragrafi successivi saranno ripresi e rispiegate le caratteristiche più significative introdotte con le memorie DDR2 che hanno un impatto sulla logica di funzionamento della memoria e sui timings, che sono le seguenti:
• Prefetch 4n-bit
• Posted CAS e Additive Latency
• ODT (On Die Termination)
• OCD (Off Chip Driver)

8.1. Architettura con Prefetch 4n-bit

Come già detto precedentemente le memorie DDR hanno un architettura di tipo prefetch 2n-bit nel senso che ad ogni colpo di clock vengono effettuate due operazioni di I/O con una quantità di dati pari a 2n-bit.
Le memorie DDR2 hanno un’architettura di tipo prefetch 4n-bit nel senso che ad ogni colpo di clock vengono fatte quattro operazioni di I/O. Quindi questo significa che il bus interno delle memorie è quattro volte più veloce di quello esterno. Andremo a vedere come viene realizzata questa caratteristica delle memorie DDR2.
Come è facile intuire all’aumentare della frequenza di funzionamento aumentano le correnti interne che circolano nei microcircuiti che compongono il chip di memoria, con conseguente aumento del calore generato e con problemi di interferenze elettromagnetiche, questo comportamento limita fortemente l’aumento della frequenza di funzionamento. La più alta velocità di funzionamento delle RAM DDR2 è stata ottenuta “sdoppiando” la velocità all’interno dell’array di memoria rispetto alla velocità nel buffer di I/O, consentendo così di avere una maggiore banda in I/O senza aumentare la velocità interna dell’array di memoria RAM.
La differenza tra RAM DDR e DDR2 è ben schematizzata nella seguente figura:



Quindi all’interno di un chip di memoria DDR2 avrò due frequenze di funzionamento: una per quanto riguarda la logica di indirizzamento e i banchi di memoria, un’altra per quanto riguarda lo stadio di I/O che opererà alla stessa frequenza del bus esterno che è doppia rispetto alla precedente.
Con questi accorgimenti di fatto avrò che la memoria DDR2 opererà con una banda doppia rispetto alla memoria DDR bypassando i problemi legati all’aumento della frequenza di funzionamento dei banchi di memoria.
Per i più puristi uno schema logico di funzionamento tratto da un datasheet di un noto costruttore che mette in evidenza quanto descritto precedentemente. Si nota che sono presenti due coppie di segnali (CK, CK negato) uno per la logica di controllo/comando della memoria e un’altra coppia (CK, CK negato) per lo stadio di I/O.



8.2. Posted CAS e Additive Latency

Nelle memorie DDR esiste un problema legato all’efficienza del bus di comandi che a sua volta si riflette sull’efficienza del bus dati di I/O e quindi sulla banda della memoria. Questo problema si verifica quando si inviano verso la memoria comandi di lettura/scrittura in rapida successione.
Nella figura successiva è riportato un esempio in cui vengono eseguiti tre comandi di write successivi, in corrispondenza del terzo comando di activation della riga do memoria arriva il primo comando di write, i due comandi vanno in conflitto e viene spostato il comando di activation di un ciclo di clock. Questo provoca un buco temporale nel bus dati a causa alla posticipazione del terzo comando di activation, e quindi di write, che si traduce in una perdita di efficienza del bus dati.



Per ovviare a comportamenti di questo tipo si è introdotto il concetto di Posted CAS che consiste nel rendere attivi i comandi di write/read dopo un tempo pari al tempo di Additive Latency (AL). In altre parole i comandi di write/read vengono accettati a partire dal ciclo di clock successivo a quello di activation ed al massimo entro il RAS#-to-CAS# Delay (tRCD), i comandi vengono “conservati” e vengono eseguiti dopo un tempo aggiuntivo pari all’Additive Latency (AL).
La differenza tra una normale operazione e una operazione “posted” (differita) è schematizzata nel diagramma temporale seguente:



Si vede la stessa sequenza di operazioni eseguita senza utilizzare le nuove funzionalità di Posted CAS e Additive Latency, e con le nuove funzionalità.
Grazie all’introduzione delle nuove funzionalità si evita il conflitto dei comandi sul bus e si migliora l’efficienza del bus dati riducendo al minimo i periodi di inattività. I comandi di Read inviati il clock successivo a quelli di Activation vengono eseguiti dopo il tempo AL.
In virtù di questo nuovo tempo nelle memorie DDR2 vengono definite altre due gradezze che sono le seguenti:
Read Latency (RL) defnita come tRCD + AL quando AL=0 la read latency è uguale a quella delle RAM DDR. Questo valore rappresenta il tempo da quando è stato dato il comando di posted read fino a quando è disponibile il primo chunck di dati in output;
Write Latency (WL) definita come RL-1 e rappresenta il tempo da quando è stato dato il comando di posted write fino a quando è disponibile il primo chunck di dati in input.

8.3. ODT (On Die Termination)

Questa funzionalità è stata introdotta per la prima volta con le memorie DDR2 e serve a ridurre il fenomeno della riflessione del segnale presente in tutti i circuiti elettronici. Questo fenomeno causa “rumore” e quindi disturbi indesiderati nei circuiti in cui è presente, e la sua riduzione consente di ottenere una migliore qualità dei segnali elettrici con un conseguente miglioramento nel trasferimento dei dati ad alta velocità.
In particolare il contenimento di questo fenomeno viene fatto negli stadi di uscita dei chip di memoria DDR2 consentendo di avere un migliore transfer rate dei dati alle alte frequenze.
Un raggio di sole che colpisce un vetro di una finestra in parte si propaga all’interno dell’abitazione, in parte viene riflesso causando un fastidioso effetto di abbagliamento per chi ne viene colpito. Analogamente un segnale elettrico che viaggia in un circuito viene riflesso quando raggiunge la fine della pista del circuito, causando un fastidioso rumore nei circuiti elettronici che attraversa.
Nelle memorie DDR veniva utilizzato uno schema detto Motherboard Termination che consiste nel connettere una resistenza alla fine di ogni circuito di trasmissione dei segnali. Tuttavia questo metodo non consente di ridurre adeguatamente il fenomeno nel range di frequenze utilizzate dalle memorie DDR2.
Per comprendere il fenomeno e capire come si è evoluta la soluzione per le memorie DDR2 lo schema di funzionamento della Motherboard Termination è riportato nella seguente figura, in cui si vede che i segnali riflessi vanno ad inficiare la qualità dei segnali che il memory controller invia verso il modulo di RAM attivo:



Con lo schema precedente non si riesce a controllare in maniera precisa la riflessione dei segnali, e quindi si è deciso di adottare nelle RAM DDR2 lo schema ODT (On Die Termination) nel quale la resistenza è direttamente collocata all’interno dei chip di memoria.
Lo schema ODT consente di eliminare quasi totalmente il fenomeno della riflessione dei segnali e consente di semplificare il layout della motherboard che non deve prevedere le resistenze per la terminazione dei segnali riflessi (che sono direttamente a bordo dei chip di memoria).
Lo schema ODT utilizzato nelle memorie DDR2 è il seguente:



E’ possibile settare diversi parametri di funzionamento sul bios della motherboard per configurare la modalità di funzionamento dell’ODT, ma per capire il loro significato bisogna capire meglio come viene implementato l’ODT. Un circuito di principio che chiarisce come è implementato l’ODT all’interno del chip di memoria è il seguente:



Anzitutto bisogna osservare che l’ODT agisce sugli Input Pin cioè nei pin che collegano il chip di memoria con il bus dati. Infatti è il bus dati, a causa della sua elevata frequenza di funzionamento, ad essere il componente più sensibile al fenomeno della riflessione dei segnali. Quindi l’ODT tende a ridurre il fenomeno della riflessione sugli I/O pin del chip di memoria (DQ) e sui segnali che sono utilizzati a sincronizzare l’Input dei dati (DQS ed RDQS).
Come si vede dal semplice circuito utilizzato è possibile aprire o chiudere l’interruttore, impostare i tempi di apertura e chiusura dell’interruttore, e impostare il valore della resistenza. Questi settaggi avranno effetto contemporaneamente su tutti i segnali che vengono utilizzati nell’I/O dei dati verso e dal chip di memoria.
Quindi via bios è possibile configurare tutta una serie di parametri/timings che regolano il funzionamento dell’ODT, come per esempio (i nomi dei settaggi variano a seconda del bios e del costruttore della scheda madre) i valori della resistenza di terminazione:
ODT not selected ( ∞ Ω)
ODT selected (50Ω)
ODT selected (75Ω)
ODT selected (150Ω)
ODT selected (300Ω)
Inoltre è possibile impostare i timings di apertura e chiusura dell’interruttore che regola l’inserimento/disinserimento della resistenza, i timings variano a seconda che il modulo di memoria si trovi in modalità power-down, modalità active oppure modalità standby. I principali timings sono i seguenti:
ODT turn-on delay (tAONPD) che rappresenta il ritardo necessario per chiudere l’interruttore, ovvero per settare ad ON la resistenza di terminazione, quando si è in modalità power-down;
ODT turn-on delay time (tAOFPD) che rappresenta il ritardo necessario per aprire l’interruttore, ovvero per settare ad OFF la resistenza di terminazione, quando si è in modalità power-down;
ODT turn-on delay time (tAOND) che rappresenta il ritardo necessario per chiudere l’interruttore, ovvero per settare ad ON la resistenza di terminazione, quando si è in modalità active o standby;
ODT turn-on delay time (tAOFD) che rappresenta il ritardo necessario per aprire l’interruttore, ovvero per settare ad OFF la resistenza di terminazione, quando si è in modalità active o standby.
Anche se con nomi diversi (come già detto, dipendenti dal modello/versione di bios e dal costruttore della scheda madre) i timings fondamentali a cui fare riferimento per configurare l’ODT sono quelli sopra riportati ed il loro significato è quello che è stato prima spiegato.

8.4. OCD (Off Chip Driver)

La funzionalità ODT è una nuova funzionalità che è stata introdotta con le RAM DDR2. Questa funzionalità ha lo scopo di minimizzare il DQ-DQS Skew (che abbiamo visto in precedenza essere presente anche per le memorie DDR) consentendo di ottenere una migliore qualità nei segnali di I/O presenti sul chip di memoria. Questo si traduce in una maggiore stabilità di funzionamento della memoria alle frequenze più alte.
La seguente figura, presa da un datasheet di un costruttore, chiarisce la natura del problema introdotto dal DQ-DQS Skew:



I segnali DQS, /DQS che sono utilizzati per sincronizzare l’I/O dei dati sulla linea DQ, non sono perfettamente simmetrici ma hanno un fronte di salita e di discesa che non si incontra nel punto mediano dei segnali come chiarito meglio dalla seguente figura:



Il fatto di non incontrarsi nel punto mediano ovvero esattamente in corrispondenza del livello VREF della tensione di riferimento, produce uno slittamento dei segnali DQS, /DQS rispetto al segnale DQ (dove viaggiano i dati in I/O). Il fenomeno è molto chiaro nella prima delle due figure precedenti, dove si vede che lo slittamento è pari al DQ-DQS Skew. Questo riduce la finestra temporale entro la quale i dati di I/O possono essere considerati validi, e questo è un problema molto serio all’aumentare della frequenza, che può anche portare alla corruzione dei dati che viaggiano sulle line dati DQ (più alta è la frequenza e più diventa problematico riconoscere i livelli del segnale soprattutto quando diminuisce la finestra temporale di validità dei dati).
La funzionalità OCD è utilizzata per calibrare l’impedenza interna dei circuiti di trasmissione dei segnali in modo da minimizzare il DQ-DQS Skew, e migliorare la qualità dei segnali di output alle alte frequenze, ottenendo dei benefici diretti sul transfer rate da e verso i chip di memoria.
Per fare queste operazioni di calibrazione è necessario misurare queste impedenze e fare una comparazione tra i vari valori rilevati. Le RAM DDR2 non consentono di fare operazioni di comparazione e misurazione, e quindi queste funzioni devono essere supportate dal controller di memoria. Quindi la memoria DDR2 consente di effettuare la calibrazione per minimizzare il DQ-DQS Skew, ma il controller deve supportare questa funzionalità integrando al suo interno la logica di misurazione e comparazione dei vari valori di impedenza misurati.
Esiste una sequenza di operazioni da eseguire per effettuare l’operazione di calibrazione e diverse modalità di esecuzione in cui i timings principali coinvolti sono i seguenti:
OCD Drive Mode Output Delay (tOIT) è il tempo necessario affinché i segnali DQS, /DQS e DQ vengano predisposti per entrare/uscire nella/dalla modalità di calibrazione delle latenze;
DQ Input Setup Time (tDS) è il tempo necessario ad inviare il comando di setup sulla linea dati DQ per un dato chunk di dati;
DQ Input Hold Time (tDH) è il tempo entro il quale viene eseguito il setup sulla linea dati per un dato chink di dati.
Il valore di impedenza può essere calibrato sulla base della scelta di sedici differenti valori, cosicché può essere eseguito un tuning fine sui valori delle tensioni dei segnali di I/O e della loro sincronizzazione riducendo al massimo il DQ-DQS Skew.
Quindi nelle motherboard con controller a bordo compatibili con l’OCD, vi sono una serie di timings e di impostazioni che regolano la configurazione ed il livello di tuning fine per ottenere la riduzione del DQ-DQS Skew desiderata.


BIBLIOGRAFIA


Per una guida abbastanza completa su come si è evoluta la tecnologia sulle RAM è possibile utilizzare i seguenti link:
Ars Technica RAM Guide: Part I DRAM and SRAM Basics by Jon "Hannibal" Stokes
http://arstechnica.com/paedia/r/ram...de.part1-1.html
Ars Technica RAM Guide, Part II: Asynchronous and Synchronous DRAM by Jon "Hannibal" Stokes
http://arstechnica.com/paedia/r/ram...de.part2-1.html
Ars Technica RAM Guide, Part III: DDR DRAM and RAMBUS by Jon "Hannibal" Stokes
http://arstechnica.com/paedia/r/ram...de.part3-1.html

Per una guida molto sintentica sulle moderne RAM SDRAM si puo' consultare (sullo stesso sito sono presenti altre guide su DDR e DDR2):
RAM FAQ 1.0 by Dmitri Besedin
http://www.digit-life.com/articles2...6.html#pt1_head

La vera miniera di informazioni sulle RAM DDR è sui datasheet dei costruttori. Quelli che ho utilizzato che si trovano qui:
Datasheet Infineon
http://www.qimonda.com/consumer-dram/ddr/index.html
Datasheet Micron
http://www.micron.com/products/dram/ddrsdram/

In particolare per scrivere la guida ho utilizzato i seguenti datasheet che danno informazioni su timings, cicli di funzionamento, assemblaggio dei chip in moduli, logica

generale di funzionamento:
Infinenon, Data Sheet, Rev. 1.10, Oct. 2005, HYB25DC512800C[E/F] HYB25DC512160C[E/F]512-Mbit Double-Data-Rate SDRAM DDR SDRAM RoHS Compliant Products
http://www.infineon.com/upload/Docu...xxCx_rev110.pdf
Micron, Double Data Rate (DDR) SDRAM MT46V256M4 – 64 Meg x 4 x 4 banks MT46V128M8 – 32 Meg x 8 x 4 banks MT46V64M16 – 16 Meg x 16 x 4 banks
http://download.micron.com/pdf/data...bDDRx4x8x16.pdf
Micron, DDR SDRAM UNBUFFERED DIMM MT16VDDT3264A – 256MB MT16VDDT6464A – 512MB MT16VDDT12864A – 1GB MT16VDDT25664A – 2GB (ADVANCE)‡
http://download.micron.com/pdf/data...64_128x64AG.pdf

Per capire come le memorie si interfacciano con i controller, i principali parametri di funzionamento, ho utilizzato un documento tecnico di AMD rivolto agli sviluppatori del bios e del kernel per i processori AMD Athlon e Opteron 64:
BIOS and Kernel Developer's Guide for AMD AthlonTM 64 and AMD OpteronTM Processors
http://www.amd.com/us-en/assets/con..._docs/26094.PDF

Per avere un modello semplificato di chip di memoria (che ho ripreso ed arricchito) ho utilizzato:
AN501: Latency Settings & Impact on Memory Performance
http://corsairmemory.com/corsair/pr...Performance.pdf

Inoltre per ricavare qualche informazione addizionale sui settaggi e sui significati di qualche timings e qualche grafico che spiega il concetto del DQ-DQS Skew ho utilizzato:
DFI NF4 BIOS Memory Guide
http://www.dfi-street.com/forum/sho...179&postcount=4
THE DEFINITIVE DFI A64 OVERCLOCKING GUIDE
http://www.dfi-street.com/forum/showthread.php?t=20823


Per approfondire le la differenze tra DDR e DDR2 si posono utilizzare i seguenti riferimenti:

Micron, TN-47-02: DDR2 Offers New Features and Functionality
http://download.micron.com/pdf/techn...dr2/TN4702.pdf

Micron, Comparison of DDR to DDR2
http://download.micron.com/pdf/flyers/ddr_to_ddr2.pdf

Dmitri Besedin ,DDR2: a Soon-to-be DDR Replacement. Theoretical Basis and First Low-level Test Results
http://www.digit-life.com/articles2/...ddr2-rmma.html

Corsair, DDR2 unbuffered pinout and signal descriptions for XMS2
http://www.corsairmemory.com/corsair...ddr2_specs.pdf

Corsair, DDR2 PRIMER
http://www.corsairmemory.com/corsair...DR2_PRIMER.pdf

Infineon data sheet, HYB18T512160BF-25F 512M, 32Mx16, DDR2-800 5-5-5
http://www.infineon.com/upload/Docum...xBF_rev104.pdf

Elpida, E0678E10 - DDR2 SDRAM TECHNOLOGY
http://www.elpida.com/pdfs/E0678E10.pdf

Elpida, E0437E20 - HOW TO USE DDR2 SDRAM - User's Manual
http://www.elpida.com/pdfs/E0437E20.pdf

Elpida, E0593E10 - New Function of DDR2 SDRAM On Die Termination (ODT)
http://www.elpida.com/pdfs/E0593E10.pdf

Elpida, E0594E10 - New Function of DDR2 SDRAM Off-Chip Driver (OCD)
http://www.elpida.com/pdfs/E0594E10.pdf


Correzioni e precisazioni

- 5/9/2006: Corretto e precisato meglio il concetto di DRAM Drive Strength e DRAM Data Drive Strength grazie ad Astaris


FINE DELLA GUIDA (Almeno per ora....)
__________________
Trattative: giljevic,Nicola[3vil5],Genocide85,LUPO19964,DARIO-GT,Trokji ,guns81,O_RusS ,freewilly,ZippOC ,[Vdd]Gabrieletor ,zago,gigarobot ,:::: Dani83:::: ,river,sickofitall ,smoicol ,xeshwupgrade ,canna1988 ,Andrea deluxe, nico86 e tanti altri

Ultima modifica di v_parrello : 05-09-2006 alle 12:10.
v_parrello è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2006, 20:07   #3
The Force
Senior Member
 
L'Avatar di The Force
 
Iscritto dal: Dec 2005
Città: Prato
Messaggi: 1135
beh... complimenti!
__________________
Ho concluso trattative con: Andrea1977, Leland Gaunt, MM46
The Force è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2006, 20:40   #4
v_parrello
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1315
Grazie per i complimenti.

Sono ben accetti tutti i suggerimenti. La guida e' in evoluzione. Mi piacerebbe molto migliorarla con i vostri suggerimenti.
__________________
Trattative: giljevic,Nicola[3vil5],Genocide85,LUPO19964,DARIO-GT,Trokji ,guns81,O_RusS ,freewilly,ZippOC ,[Vdd]Gabrieletor ,zago,gigarobot ,:::: Dani83:::: ,river,sickofitall ,smoicol ,xeshwupgrade ,canna1988 ,Andrea deluxe, nico86 e tanti altri
v_parrello è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2006, 09:09   #5
v_parrello
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1315
UP...
__________________
Trattative: giljevic,Nicola[3vil5],Genocide85,LUPO19964,DARIO-GT,Trokji ,guns81,O_RusS ,freewilly,ZippOC ,[Vdd]Gabrieletor ,zago,gigarobot ,:::: Dani83:::: ,river,sickofitall ,smoicol ,xeshwupgrade ,canna1988 ,Andrea deluxe, nico86 e tanti altri
v_parrello è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2006, 10:56   #6
The Force
Senior Member
 
L'Avatar di The Force
 
Iscritto dal: Dec 2005
Città: Prato
Messaggi: 1135
per renderla visibile ti suggerisco o di farla pinnare.. chiedi ai mod
__________________
Ho concluso trattative con: Andrea1977, Leland Gaunt, MM46
The Force è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2006, 15:25   #7
FreeMan
Moderatore
 
L'Avatar di FreeMan
 
Iscritto dal: Jul 1999
Città: Black Mesa
Messaggi: 68377
in rilievo

>bYeZ<
__________________
REGOLAMENTO & update1/update2 | IO C'ERO | Xiaomi Mi Max 3 - Hystory | GTi is BACK

"Non sorridete.......gli spari sopra.....sono per VOI!"
FreeMan è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2006, 13:01   #8
Mike5
Member
 
Iscritto dal: Jun 2005
Città: Palermo
Messaggi: 249
Veramente complimenti per la guida .

Molto interessante, perchè affronta argomenti tecnici difficili, che generalmente non vengono trattati proprio per la loro difficoltà.

Inoltre c'è anche una preziosa bibliografia che permette di approfondire ulteriormente.

Come suggerimento, aggiungerei un paragrafo dove si spiegano le differenze tecniche principali tra DDR e DDR2 (e magari DDR3 ).

Michele
Mike5 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2006, 13:55   #9
v_parrello
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1315
Anzitutto ti ringrazio per le osservazioni. Sicuramente prossimamente la guida verrà arricchita con un paragrafo che spiega in maniera più approfondita le differenze tra DDR e DDR2.

Ti anticipo velocemente che tutto ciò che è stato detto vale pari pari sia per DDR che DDR2. L'unica differenza è che mentre con le DDR con un colpo di clock riesco ad avere due data words in input/output (architettura 2n prefetch) con la memoria DDR2 con in ciclo di clock riesco ad avere quattro data words in input/output (architettura 4n prefetch).

Quindi l'unica differenza sta nello stadio di I/O dei chip di memoria DDR2 che consentono di avere banda doppia rispetto ai chip DDR a parità di clock. Tutti gli altri concetti rimangono inalterati.
__________________
Trattative: giljevic,Nicola[3vil5],Genocide85,LUPO19964,DARIO-GT,Trokji ,guns81,O_RusS ,freewilly,ZippOC ,[Vdd]Gabrieletor ,zago,gigarobot ,:::: Dani83:::: ,river,sickofitall ,smoicol ,xeshwupgrade ,canna1988 ,Andrea deluxe, nico86 e tanti altri
v_parrello è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2006, 14:41   #10
Mike5
Member
 
Iscritto dal: Jun 2005
Città: Palermo
Messaggi: 249
Quote:
Originariamente inviato da v_parrello
L'unica differenza è che mentre con le DDR con un colpo di clock riesco ad avere due data words in input/output (architettura 2n prefetch) con la memoria DDR2 con in ciclo di clock riesco ad avere quattro data words in input/output (architettura 4n prefetch).
Quindi immagino che con le DDR3 si abbiano 6 data words per clock.

Una differenza che mi piacerebbe sapere è perchè le DDR2 hanno più pin delle DDR, ma, se quello che ho letto è giusto, le DDR3 hanno lo stesso numero di pin delle DDR2.

Comunque aspetto il prossimo capitolo della guida

Michele
Mike5 è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2006, 19:51   #11
sorpa86
Member
 
Iscritto dal: Nov 2005
Città: Venezia
Messaggi: 173
Ottima guida. Vorrei sapere però se c'è un modo "scientifico" anche per alzare e abbassare i timings nell0overclock. Mi spiego: se io metto tutto al minimo e non va, cosa devo alzare per primo? E nei passaggi successivi, se ancora non va?

Grazie, Alberto
sorpa86 è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2006, 17:43   #12
fede27
Senior Member
 
L'Avatar di fede27
 
Iscritto dal: Jan 2006
Città: Padova
Messaggi: 8967
complimenti!! non ho ancora avuto il tempo di finire di leggerla tutta ma è davvero un ottimo lavoro!!
__________________
Dallas Mavericks 2011 NBA Champions
fede27 è offline   Rispondi citando il messaggio o parte di esso
Old 05-06-2006, 00:57   #13
D69
Senior Member
 
Iscritto dal: Jan 2005
Messaggi: 802
Mille grazie!!

finalmente ho capito il significato del DQS e DQ che da tempo cercavo di comprendere senza riuscirci, ma anche molti altri settings utili per ottimizzare la memoria che alle volte si danno per scontati senza però sapere il perchè....

thx
__________________
Quiz: - qual'è quel sistema operativo che per spegnerlo, bisogna cliccare su Start? -
D69 è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2006, 17:50   #14
Sayan V
Senior Member
 
L'Avatar di Sayan V
 
Iscritto dal: Oct 2001
Città: Vigevano & Vercelli
Messaggi: 3726
Mi accorgo adesso di tale guida

Complimentoni
__________________
POWER-GAME1: antec skeleton pearle white, AMD FX 8350@5000 Mhz daily use, Asus Sabertooth 990Fx, 8 Gb TeamGroup 1866 DDR3@2050 9-10-9 1T, CROSSFIRE 2x Asus HD6950@6970 2GB 900/5500, ANTEC TRUE POWER 4 850W
1° HALL OF FAME FUTUREMARK:http://www.hwupgrade.it/forum/showthread.php?t=885148
Sayan V è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2006, 17:13   #15
Nos89
Utente sospeso
 
L'Avatar di Nos89
 
Iscritto dal: May 2006
Città: In The Sky
Messaggi: 4318
ottima guida
__________________
fottuto stage
Nos89 è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 14:23   #16
wolfnyght
Bannato
 
L'Avatar di wolfnyght
 
Iscritto dal: Nov 2003
Messaggi: 10185
molto ben fatta!
veramente interessante!
wolfnyght è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2006, 19:06   #17
Re-voodoo
Senior Member
 
L'Avatar di Re-voodoo
 
Iscritto dal: Jun 2001
Città: Firenze
Messaggi: 5340
ottimo bel lavoro
__________________
Re-voodoo è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2006, 01:20   #18
dreaad
Senior Member
 
L'Avatar di dreaad
 
Iscritto dal: Oct 2004
Città: torino
Messaggi: 500
guida molto interessante!!

una curiosità però: siccome le DDR2 trasportano 4n bit per ogni colpo di clock non si dovrebbero chiamare QDR (quad data rate)?
__________________
Abit NF7-S rev. 2.0 - AMD Sempron 2800+@2370 @Vcore 1,75V - Thermaltake POLO 735 - 1 GB S3+ DDR400 cas 2.5-2-2-11 - DVD Pioneer 16x40x slot-in - CD-RW LG 48x24x48 - hard-disk Seagate Barracuda 500GB 1.5Gb/s - Maxtor DiamondMax Plus 9 120GB ATA133; Seagate Cheetah 10K.6 SCSI 73,4 GB 10K U160 + 2 x IBM SCSI U2W 8.5GB raid0 - controller SCSI IBM ServeRAID 4Lx - GeForce 2 MX400 (@GPU 220/RAM 210Mhz)- CREATIVE 4.1 4400 - monitor 19"LCD Asus VW195D/SIZE]
dreaad è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 13:17   #19
Spitfire84
Senior Member
 
L'Avatar di Spitfire84
 
Iscritto dal: Mar 2005
Città: Mareno di Piave (TV)
Messaggi: 4226
Grande guida...veramente ottima.
Semplice ma accurata e comprensibile .
Complimenti!!!

Ciao..
..Andrea
__________________
AMD Ryzen R7 1700 @3950 MHz cooled by Noctua NH-D15, Gigabyte AX370 Gaming 5, 2x8GB G.Skill TridentZ 3333 MHz, Sapphire RX480 8GB Nitro+ OC, Samsung 840 EVO 250GB + WD Caviar Blue 2TB, Corsair HX620, Fractal Design Define R5, AOC G2460VQ6 - mITX + Sony KDL42W653- Trattative - [GUIDA] all'overclock dell'AMD K10 - [GUIDA] all'overclock di AMD Ryzen
Spitfire84 è offline   Rispondi citando il messaggio o parte di esso
Old 17-07-2006, 19:39   #20
v_parrello
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1315
Quote:
Originariamente inviato da dreaad
guida molto interessante!!

una curiosità però: siccome le DDR2 trasportano 4n bit per ogni colpo di clock non si dovrebbero chiamare QDR (quad data rate)?
Penso che il motivo sia legato alla tipologia dei banchi di memorie utilizzati che sono sempre DDR (Double Data Rate), cioe' che ogni colpo di clock rendono disponibili 2n bit. Infatti nelle memorie DDR2 il fatto di trasportare 2*2n bit è stato ottenuto "facendo un trucco", ovvero raddoppiando il clock del Bufer di I/O rispetto al clock interno ai banchi di memoria (che continuano a fornire 2n bit per colpo di clock). E' ovvio che con questo trucco si rendono disponibili 4n bit pero' in effetti i banchi di memoria sono sempre DDR (2n bit per colpo di clock).
__________________
Trattative: giljevic,Nicola[3vil5],Genocide85,LUPO19964,DARIO-GT,Trokji ,guns81,O_RusS ,freewilly,ZippOC ,[Vdd]Gabrieletor ,zago,gigarobot ,:::: Dani83:::: ,river,sickofitall ,smoicol ,xeshwupgrade ,canna1988 ,Andrea deluxe, nico86 e tanti altri
v_parrello è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


The Division 2: come va con 17 schede video The Division 2: come va con 17 schede video
VOIspeed UCloud, il centralino virtualizzato di TeamSystem VOIspeed UCloud, il centralino virtualizzato di ...
moto g7 Plus, recensione: uno dei migliori smartphone midrange del 2019 moto g7 Plus, recensione: uno dei migliori smart...
Fujifilm XF10: APS-C da taschino. La videorecensione Fujifilm XF10: APS-C da taschino. La videorecens...
Samsung Galaxy S10+: il miglior regalo agli utenti per il decimo anniversario. La recensione Samsung Galaxy S10+: il miglior regalo agli uten...
Oracle mostra la sua visione di smart ci...
Il corso essenziale di Adobe Photoshop C...
Vampire: The Masquerade - Bloodlines 2 a...
UE4 avrà il Ray Tracing dal 26 ma...
Archos Play Tab, un super-tablet da 21,5...
Nuova grafica di Steam mostrata alla GDC
Dogfish SuperEIGHT: la birra per svilupp...
Tesla Model Y, online il configuratore i...
Heavy Rain, Beyond e Detroit saranno esc...
Toshiba ha reso più sicuri i note...
Tamron: lo sviluppo per ottiche per Cano...
Un cortometraggio realizzato con Unreal ...
Panasonic Toughbook T1 e Toughbook N1 so...
Windows 7, fine degli aggiornamenti di s...
Sekiro: Shadows Die Twice ora disponibil...
LibreOffice 6.2.0
HyperSnap
Internet Download Manager
Opera Portable
Opera 58
AIDA64 Extreme Edition
Mozilla Thunderbird 60
PassMark BurnInTest Professional
PassMark BurnInTest Standard
Dropbox
Chromium
Driver NVIDIA Creator Ready 419.67 WHQ
Radeon Software Adrenaline Edition 19.
K-Lite Codec Tweak Tool
NTLite
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:05.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Served by www2v