Pagina 1 di 1

Dialogo tra RAM, CPU e altri "pezzi" del pc: dubbi

MessaggioInviato: dom gen 06, 2008 5:34 pm
da Jaadre
Heilá gente,

vorrei sapere se qualcuno é in grado di far luce su alcuni miei dubbi "tecnici" riguardanti la CPU e la memoria RAM, in particolare sul funzionamento del memory controller degli Athlon64, lo scambio di dati CPU-RAM (principalmente con DDR e DDR2), e il dialogo tra memorie RAM e altri "pezzi" del calcolatore.

Cerco di arrivare ai miei dubbi partendo da lontano.

Mi pare di aver capito che, con i vecchi AthlonXP, lo scambio di dati CPU-RAM avvenisse attraverso il NorthBridge, ad una frequenza pari a quella dell'FSB, o Front Side Bus, a sua volta pari alla frequenza di clock "base" del processore moltiplicata per due; questa frequenza dell'FSB (che poi una frequenza vera e propria non era, bensí si trattava di un "data transfer" in MT/s, pari -in valore- al doppio della frequenza di clock, perché veniva giá sfruttato il doppio trasferimento di dati per ciclo di clock -cioé la tecnologia Double Data Rate) coincideva esattamente con quella della memoria ram (tutti i nuovi AthlonXP supportavano giá le DDR), con "data transfer" pari -sempre in valore- al doppio della frequenza del buffer I/O (che conicideva con la frequenza di lavoro del chip di memoria).
La frequenza "di lavoro" del FSB era anche sfruttata in molti altri canali di "dialogo" come l'AGP, quello delle porte PCI, e via dicendo.

Con l'avvento degli Athlon64 le cose si sono complicate, per via dell'introduzione, all'interno del processore stesso, del memory controller integrato (che prima era solitamente presente nel NorthBridge; questo dispositivo serve a mettere in comunicazione diretta la CPU con la memoria RAM), e dell'Hyper Transport (canale diretto di interfaccia CPU-NorthBridge).

Per finire, da pochi anni sono arrivati i dual core, che hanno permesso l'implementazione (o -per meglio dire- il pieno sfruttamento) delle DDR2, che, a fronte di frequenze di chip praticamente pari a quelle delle DDR, grazie ad alcuni espedienti elettronici, sono peró arrivate ad avere un clock del buffer I/O doppio rispetto alle sorelle minori, e pertanto anche un "data transfer" raddoppiato.
Ora nella mia mente c'é solo grande confusione.

Ecco le domande:
  1. Affinché ci sia comunicazione tra due entitá separate, é necessario che queste due entitá "parlino" la stessa lingua: se consideriamo CPU e RAM, immagino che la stessa lingua significhi contemporaneamente stessa frequenza di scambio di dati e stessa banda passante. E' corretto o sbagliato?
    Chiedo questo perché, essendo totalmente ignorante riguardo all'architettura dei pc, immagino che una unitá che lavori a 2400MHz di frequenza non possa dialogare granché bene con un'altra funzionante a 400MHz (il caso, ad esempio, di un Athlon64 e di un modulo di memoria DDR), e che, altresí, se la prima unitá mettesse a disposizione una banda passante di 2400*8=19200 MB/s, chiaramente la quasi totalitá della banda sarebbe inutilizzata, costituendo i 3200 MB/s (400*8) di banda dell'altra unitá un vero e proprio collo di bottiglia (parliamo sempre di BUS a 64 bit).
    Dunque é corretto dire che, in generale, le memorie ram (indipendentemente dalla quantitá di moduli) sfruttano un canale di comunicazione per il quale devono corrispondere sia la frequenza di funzionamento, sia la banda passante?
    • Se sí, é giusto dire che, sia le DDR1, quanto le cpu Athlon64 single core, utilizzano la tecnologia Double Data Rate in modo tale da incrementare il "transfer rate", e far comunque coincidere oltre alla frequenza di clock (200MHz per gli Athlon64, e 200MHz per le DDR400), anche la quantitá di dati scambiati (con un'eguale ampiezza del BUS a 64bit)?
    • Sempre se sí, nel caso delle cpu AMD dual core e delle memorie DDR2, come si coniugherebbe il discorso di prima con il fatto che la cpu funziona sempre a 200MHz, ma sono due i core presenti, e le memorie DDR2-800 funzionano ad una frequenza di clock di 400MHz (e dunque non vi é coincidenza di frequenza, bensí solo di banda passante*)???
  2. Ancora:é corretto affermare che l'utilizzo del dual channel non comporta miglioramenti nello scambio di dati tra CPU e RAM, quando la banda passante coincide perfettamente (come nel caso di Athlon64 single core e DDR400, oppure di Athlon64 dual core e DDR2-800)?
    Cioé: é corretto dire che la maggiore ampiezza di banda messa a disposizione dalle DDR/DDR2, per via dei 128 bit del dual channel, viene sfruttata in questi casi solo da altri canali di dialogo (se ne esistono), come ad esempio quello tra memorie e AGP/PCI-E, oppure tra memoria e dischi rigidi?
    • Se sí, é corretto dire che le memorie ram su piattaforme 939 e AM2, attraverso il collegamento diretto con la CPU e poi attraverso il NorthBridge, usufruiscono anche di altri canali di "comunicazione" con differenti dispositivi, come per l'appunto l'hard disk, la scheda video e cosí via?
      Oppure tutti i dati in ingresso ed in uscita dalle memorie RAM, passando necessariamente attraverso il memory controller, cioé attraverso il processore, devono sottostare alla larghezza di banda in comune con quest'ultimo?
Perdonate la lungaggine espositiva... spero almeno di essere stato chiaro nella mia ignoranza.
Grazie a chiunque avrá la pazienza di rispondere.

Note
*: perché due core a 200MHz implicano un "transfer rate" di 400MT/s l'uno, per un totale di 800MT/s, perfettamente pari a quello delle DDR2 (si noti che 800MT/s * 64 bit * 1/8 Byte/bit = 6400 MByte/s, esattamente la banda passante delle DDR2-800).

MessaggioInviato: gio gen 10, 2008 3:05 pm
da Jaadre
Giusto un piccolo "uppetto"; chissá che per qualcuno in grado di rispondere la discussione sia passata inosservata... [std]

MessaggioInviato: gio gen 10, 2008 4:21 pm
da The King of GnG
Jaadre ha scritto:Giusto un piccolo "uppetto"; chissá che per qualcuno in grado di rispondere la discussione sia passata inosservata... [std]


No, è passata non letta, almeno da me. Sorry, troppo lunga....

MessaggioInviato: gio gen 10, 2008 10:03 pm
da danibaan
...Spero qualcuno risponda... E che lo faccia in maniera comprensibile!!!
perché è interessante... Ma... Complicatissimissimo!!! Ecco, per intenderci.

Good luck!!! [std]

MessaggioInviato: sab gen 12, 2008 9:49 pm
da ste_95
Più che inosservata, è passata... pochi eletti sapranno rispondere.

E' davvero molto interessante, non mi ero mai posto dubbi del genere... [std]

MessaggioInviato: gio gen 17, 2008 1:18 am
da ninjabionico
Jaadre ha scritto:...
Mi pare di aver capito che, con i vecchi AthlonXP, lo scambio di dati CPU-RAM avvenisse attraverso il NorthBridge, ad una frequenza pari a quella dell'FSB, o Front Side Bus


Più o meno è così... [^]
... dipende anche dai banchi di memoria, potresti essere costretto a farla lavorare in asincrono rispetto al bus FSB, nel BIOS delle schede madri spesso c'è una voce per il bus della memoria e si regola come FSB, FSB+33MHz e FSB-33MHz. In alcuni casi al posto di FSB troviamo la dicitura HOST.

Jaadre ha scritto:... a sua volta pari alla frequenza di clock "base" del processore moltiplicata per due


Solo per le DDR (Double Data Rate) moltiplicano per 2 la frequenza dell'FSB, per le normali SDRAM PC 66/100/133 la frequenza era la stessa dell'FSB, come visto prima in alcuni casi modificata con un + o - 33 MHz.

Il processore invece ha il suo moltiplicatore interno che è indipendente da quello delle Ram, di qualunque tipo siano.

Jaadre ha scritto:questa frequenza dell'FSB (che poi una frequenza vera e propria non era...


Invece è una frequenza vera e propria, infatti è quella utilizzata come frequenza di base dal chipset della scheda madre, usata per ricavare le altre frequenze di funzionamento (Pci, Agp, Isa, ecc...) mediante l'uso di opportuni divisori.
Il processore invece la utilizza come base con i moltiplicatori per ricavarne la propria frequenza di funzionamento.

Questo fa capire l'importanza di questa frequenza, infatti si può agire su di essa per overclocckare l'intero sistema (non solo il processore).

Jaadre ha scritto:Con l'avvento degli Athlon64 le cose si sono complicate, per via dell'introduzione, all'interno del processore stesso, del memory controller integrato (che prima era solitamente presente nel NorthBridge; questo dispositivo serve a mettere in comunicazione diretta la CPU con la memoria RAM), e dell'Hyper Transport (canale diretto di interfaccia CPU-NorthBridge).


Con l'Athlon 64 le cose si sono semplificate, il controller della memoria non è più localizzato nel north-bridge ma nel processore stesso.
Questa scelta permette di semplificare la progettazione della scheda madre, nel quale saranno presenti solo le piste che dal processore vanno ai banchi di memoria, ottimizzando i tempi di accesso... le latenze.
Quindi il controller, letta la memoria, manda i dati al processore utilizzando la sua stessa frequenza di clock... una bella trovata, non c'è che dire, complimenti per AMD.
Quindi, se con l'Athlon XP che decideva il supporto alla memoria era il chipset, con gli Athlon64/Sempron/AthlonFx/Opteron è il processore.

Jaadre ha scritto:Per finire, da pochi anni sono arrivati i dual core, che hanno permesso l'implementazione (o -per meglio dire- il pieno sfruttamento) delle DDR2, che, a fronte di frequenze di chip praticamente pari a quelle delle DDR, grazie ad alcuni espedienti elettronici, sono peró arrivate ad avere un clock del buffer I/O doppio rispetto alle sorelle minori, e pertanto anche un "data transfer" raddoppiato.
Ora nella mia mente c'é solo grande confusione.


Purtroppo sulle DDR2 so solo che le latenze sono più o meno quelle delle DDR, mentre la banda è praticamente raddoppiata...

Jaadre ha scritto:Ecco le domande:[list=1][*]Affinché ci sia comunicazione tra due entitá separate, é necessario che queste due entitá "parlino" la stessa lingua: se consideriamo CPU e RAM, immagino che la stessa lingua significhi contemporaneamente stessa frequenza di scambio di dati e stessa banda passante. E' corretto o sbagliato?


Come ho detto prima, l'FSB è sincronizzato con il clock del processore... mentre per la Ram (Sdram, Sdram DDR e DDR2) non è detto che sia così, infatti la memoria può lavorare in asincrono, solo che naturalmente perdono un po' in prestazioni e non sempre il gioco vale la candela.

C'è da ricordare inoltre che fra il processore vero e proprio e la Ram, oltre al controller ci sta un altro componente, un buffer noto con il nome di Cache di 1° e 2° livello.
Nella cache vengono memorizzati dati e istruzioni in attesa di essere elaborate. La cache è una memoria piccola (se paragonata alla Ram di sistema) ma ancora più veloce.

Scusami Jaadre, ma sono cotto.
Al resto darò un'occhiata domani o alla prossima occasione.

Ciao.

MessaggioInviato: gio gen 17, 2008 2:48 am
da Jaadre
No, no! Ma che, scherzi?! Non ti preoccupare proprio: già disperavo che qualcuno rispondesse a questa discussione! [:D]

ninjabionico ha scritto:
Jaadre ha scritto:...
Mi pare di aver capito che, con i vecchi AthlonXP, lo scambio di dati CPU-RAM avvenisse attraverso il NorthBridge, ad una frequenza pari a quella dell'FSB, o Front Side Bus

Più o meno è così... [^]
... dipende anche dai banchi di memoria, potresti essere costretto a farla lavorare in asincrono rispetto al bus FSB, nel BIOS delle schede madri spesso c'è una voce per il bus della memoria e si regola come FSB, FSB+33MHz e FSB-33MHz. In alcuni casi al posto di FSB troviamo la dicitura HOST.
Jaadre ha scritto:... a sua volta pari alla frequenza di clock "base" del processore moltiplicata per due

Solo per le DDR (Double Data Rate) moltiplicano per 2 la frequenza dell'FSB, per le normali SDRAM PC 66/100/133 la frequenza era la stessa dell'FSB, come visto prima in alcuni casi modificata con un + o - 33 MHz.

Il processore invece ha il suo moltiplicatore interno che è indipendente da quello delle Ram, di qualunque tipo siano.

Non mi trovo d'accordo su varie cose: il FSB ed il BUS (forse meglio chiamarlo CLOCK) del processore credo siano due cose nettamente distinte, e sia qui, che su Wikipedia, ho letto chiaramente che la tecnologia DDR veniva utilizzata già negli FSB dei processori AMD K7...

Leggendo attentamente si conclude che quella dell'FSB non è una vera e propria frequenza, perché la frequenza del segnale è sempre pari a quella del generatore di CLOCK, mentre è il data transfer che è raddoppiato (ATHLON, con FSB DDR), oppure anche quadruplicato (PENTIUM4, con FSB NetBurst).

Comunque facciamo un esempio, così ci capiamo meglio.
AMD AthlonXP Core Palomino 1800+: BUS (frequenza "base", determinata dal generatore di CLOCK) pari a 133MHz, FSB ("frequenza" di dialogo con la memoria ram e il northbridge, ma meglio dire "data transfer") pari a 266MHz (meglio sarebbe dire 266MT/s), frequenza effettiva di funzionamento pari a 1533MHz (= BUS x 11,5).

Inoltre, sempre in riposta al tuo "post", la frequenza molto importante di cui parli, cioè quella intervenendo sulla quale si modifica l'intero sistema, non è quella dell'FSB (che -ripeto- è chiamata solo impropriamente frequenza perché trattasi di un "data transfer per second"), bensì quella di CLOCK.

Con le ram SDR, le prestazioni erano inferiori per il fatto -immagino- che il "data transfer" del FSB era DDR, mentre quello delle memorie no (e quindi avevano metà banda passante rispetto al processore e rispetto alle concorrenti DDR).

MessaggioInviato: gio gen 17, 2008 11:27 am
da alb
AMD AthlonXP Core Palomino 1800+: BUS (frequenza "base", determinata dal generatore di CLOCK) pari a 133MHz, FSB ("frequenza" di dialogo con la memoria ram e il northbridge, ma meglio dire "data transfer") pari a 266MHz (meglio sarebbe dire 266MT/s), frequenza effettiva di funzionamento pari a 1533MHz (= BUS x 11,5).

L'FSB funziona a 133Mhz è il fatto che la memoria sia DDR che ci fa dire che che lavora a 266Mhz (quando invece appunto dovremmo dire 266MT/s).
BUS (frequenza "base", determinata dal generatore di CLOCK)

Forse fai un po' confusione qui, il bus non è la frequenza, il bus è l'insieme di conduttori su cui passano i dati. Quando si scrive FSB=133Mhz, non vuol dire che FSB è una frequenza, ma significa che lavora a quella frequenza.
frequenza effettiva di funzionamento pari a 1533MHz (= BUS x 11,5).

In questo caso al posto di BUS ci devi mettere "frequenza di lavoro dell'FSB"[/quote]

MessaggioInviato: gio gen 17, 2008 12:42 pm
da Jaadre
Ok, arrivano le prime delucidazioni: grazie! [^]

Dunque, per correttezza, dovremmo dire che il BUS di un processore ha una frequenza di funzionamento ed un data transfer (nell'esempio precedente pari rispettivamente a 133MHz e 266MT/s), oppure ancora si dovrebbe specificare, assieme alla frequenza, che tipo di frequenza sia (sempre nel caso di sopra, sarebbe 133MHz double data rate, in modo che si capisca che il data transfer sia doppio rispetto alla frequenza di funzionamento).

Fin qui, almeno, è giusto?

Ora, però, questo BUS di cui parliamo, che hai detto essere un insieme di conduttori su cui passano i dati, nel caso degli AthlonXP era o non era un unico canale che metteva in collegamento processore e chipset NorthBridge?

E nel caso degli Athlon64, se parliamo sempre di BUS del memory controller (frequenza di funzionamento 200MHz DDR, cioè con 400MT/s di data transfer), questo è o non è l'insieme di conduttori che permettono il dialogo tra processore e memoria ram?

Se è così -e qui mi ricollego ad una delle mie domande del primo post- devono o non devono coincidere frequenza di funzionamento e data transfer (dunque banda passante) per entrambi gli interlocutori, e cioè CPU e RAM?

MessaggioInviato: gio gen 17, 2008 1:49 pm
da alb
Ora, però, questo BUS di cui parliamo, che hai detto essere un insieme di conduttori su cui passano i dati, nel caso degli AthlonXP era o non era un unico canale che metteva in collegamento processore e chipset NorthBridge?


E nel caso degli Athlon64, se parliamo sempre di BUS del memory controller (frequenza di funzionamento 200MHz DDR, cioè con 400MT/s di data transfer), questo è o non è l'insieme di conduttori che permettono il dialogo tra processore e memoria ram?

In pratica lo schema generale dovrebbe essere questo.

CPU<------------------------->Northbridge<----------------------------->RAM
xxxxxxxxx FSB xxxxxxxxxxxxxxxxxxxxxxxxxx BUS memoria

Nel northbridge c'era il memory controller che negli atholn è integrato nel processore. Praticamente mi pare che il northbridge non ci sia proprio più, in parte sta nel processore in parte nel southbridge, che oramai si chiama chipset e basta. Tra l'altro se ho ben capito negli athlon per la comunicazione tra cpu e memory controller si usa il bus hypertransport quindi il concetto stesso di FSB è obsoleto. Fatto sta che la frequenza dell'FSB è sempre stata una frequenza fondamentale perché bene o male tutte le altre frequenze in gioco si ottengono come multiplo di questa, per cui si continua a sentire "questo ha l'FBS a 800, blablabla".
Se è così -e qui mi ricollego ad una delle mie domande del primo post- devono o non devono coincidere frequenza di funzionamento e data transfer (dunque banda passante) per entrambi gli interlocutori, e cioè CPU e RAM?

Considera che la CPU ha al suo interno moltissimi registri (celle di memoria) e la memoria cache (memoria ultraveloce ma di piccole dimensioni). Quindi ogni operazione della cpu non necessità di accessi alla RAM e non ci deve essere coincidenza tra frequenza di lavoro della cpu e funzionamento delle memorie. E' vero però che a seconda del programma in esecuzione può essere o meno richiesto un accesso continuo dei dati in memoria, in questo caso il fatto che le memorie lavorino a frequenze molto inferiori del processore funge da collo di bottiglia, la cpu è costretta a "perdere tempo" o a cercar di eseguire altre operazioni tanto che aspetta.

P.S. se comincio a rispondere solo ora è perché alcune cose mi son messo a riguardale solo ora (mitico wikipedia!) e perché dal tuo primo post avevo capito poco e non sapevo da dove cominciare.