Jump to content

Search the Community

Showing results for tags 'relativi'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • XtremeHardware
    • Concorsi
    • Notizie dal Web
    • Recensioni e Articoli
  • Annunci del forum
    • Annunci dallo staff
    • Presentazione nuovi utenti
  • Hardware
    • CPU & Overclock
    • GPU & Overclock
    • Schede Madri & RAM
    • Alimentatori
    • Reti e Modem
    • Case
    • Retrocomputing
  • Periferiche Hardware
    • Audio e HiFi
    • Gaming e non solo
    • Monitor
    • Periferiche di memorizzazione
    • Periferiche varie
  • SOS veloce
    • Problemi Software o Driver
    • Problemi Hardware
    • Consigli per gli acquisti
  • Xtreme Overclock
    • XtremeHardware-OC-Team
    • Xtreme Overclocking Help
  • Small Form Factor (SFF Mini-itx, HTPC, NAS, Nettop)
    • SFF: Guide, Consigli e Configurazioni
    • SFF: CPU, Mainborad, VGA, Accessori
    • SFF: Chassis, PSU, Cooler, Nettop
  • Cooling
    • Air Cooling
    • Water Cooling
    • Extreme cooling...
  • Modding e galleria
    • Modding
    • Bitspower - Supporto Ufficiale
    • Galleria PC Utenti
  • Mondo Mobile
    • Navigatori Satellitari
    • Notebook
    • Tablet
    • Smartphones
    • Lettori mp3/mp4 e Navigatori Satellitari
  • Elettronica e Programmazione
    • Programmazione
    • Elettronica e sistemi embedded
    • Nuove tecnologie
    • Bitcoin e altre criptovalute
  • Software
    • Software per Windows
    • Linux & MAC
  • Multimedia
    • Fotografia, Fotoritocco e grafica
    • Video, Videocamere e Video-editing
    • TV e lettori multimediali
  • Giochi & Console
    • PC Games
    • Console
  • Mercatino
    • Vendita Hardware
    • Vendita Cooling
    • Vendita Varie
    • Acquisto Hardware
    • Acquisto Cooling
    • Acquisto Varie
  • 4 chiacchiere...
    • Piazzetta
    • Musica, cinema e sport

Calendars

  • Calendario XtremeHardware

Group


Scheda Madre


Processore


Ram


Scheda Video


Case


Notebook


Occupazione


Interessi


Città


Biografia


Homepage


Icq


Aim


Yahoo


Msn


Skype


Facebook username

Found 1 result

  1. 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.
×