Newsgroup: it.comp.hardware.cpu
Titolo: Cache L2

Scusate, ma in linea di principio, non è meglio avere molta cache L2 nei
processori?
Perchè ogni tanto leggo che "non è sempre vero che una maggiore cache di
secondo livello porta benefici"?
Secondo me + L2 c'e' meglio e', voi che dite?
-- 
Marco "Duff" Palermo
http://www.webandarts.it/
http://www.marcoduff.com/
Linux Registered User #348524

 Secondo me + L2 c'e' meglio e', voi che dite?
C'è anche da aggiungere che più la cache è grande, più è lenta. Ad esempio,
i Pentium 4 serie 6xx hanno 2 MB di cache L2, ma del 17% circa più lenta del
megabyte dei P4 serie 5xx, col risultato di avere incrementi prestazionali
irrisori, e in particolari casi pure dei decrementi...
MaxArt


Gia', a parita di tecnologia piu cresce la cache e piu cala di velocita.
Questo perche i tempi di propagazione aumentano.
Grace Hopper (una pioniera dell'informatica) per spiegare il concetto
regalava alla gente dei nanosecondi-luce: delle bacchette lunghe
30cm (circa la distanza che percorre la luce nel vuoto in un nanosecondo).
Se invece di percorrere 30cm si devono percorrere 60cm, servono
almeno due nanosecondi; questo per la luce che si propaga nel vuoto, lo
stato logico in un circuito si propaga molto piu lentamente
(notare che la frequenza di clock di un circuito digitale ci dice
  quanto  velocemente *cambia di stato* il segnale in un punto, non
  quanto velocemente si propaga da punto a punto, per questo se si vuole
  salire di frequenza senza aumentare le latenze bisogna ridurre anche
  le dimensioni ... oppure trovare qualcosa che si propaga piu velocemente).
L. Micheletto

 irrisori, e in particolari casi pure dei decrementi...
E' proprio questo quello che non riesco a capire... perche' e' piu' lenta?
Alla fine, a livello macchina, parliamo sempre di puntatori alla memoria, 
quindi i tempi di accesso sonogli stessi... posso capire che per 
indicizzare una memoria piu' grande serve piu' tempo, ma parliamo sempre di 
memorie piccole di 1 mb... continuo a non capire il perche' di questa 
lentezza...
E pooi perche' dici che una cache piu' grande implica una frequenza piu' 
bassa. Io ho sempre saputo che la cache era piccola (512KB o 1MB) a causa 
del suo elevato costo. Nessun processore monta, ad esempio, una cache di 5 
MB perche' il suo costo sarebbe eccessivo.
Grazie per la risposta.



Se per quello già alcuni Xeon a breve useranno cache L3 da 8MB...
Senza contara gli Itanium2 che ne avranno anche 24MB.



Allora rafforza quello che voglio dire io... piu' cache c'e' meglio e'
(ovviamente se gestita bene!)!


 MB perche' il suo costo sarebbe eccessivo.
Progettare un processore e' difficile non solo per la complessita dei
circuiti logici da realizzare ma anche perche ci sono vari vincoli
di cui tener conto che dipendono dalle tecnologie e da materiali
disponibili.
Non stiamo parlando del costo del chip ma delle prestazioni
che si ottengono decidendo di realizzare un prodotto con certe
caratteristiche.
A parita di tecnologia costruttiva, piu e' grossa la cache
e piu area occupa.
Questo comporta anche che piu e' grande la cache e maggiore
e' la distanza che deve percorrere un segnale elettrico nel caso peggiore
(quando bisogna "passare qualcosa" tra due punti molto distanti tra loro
  nella cache), inoltre quel che interessa ai circuiti non
e' un segnale elettrico qualsiasi ma piuttosto un livello di tensione
*stabile* (che non fluttua) oppure un impulso con un valore di tensione
stabile per il tempo necessario per "leggerne il valore"
(e questo comporta un tempo fisso di attesa per dare al circuito di lettura
  il tempo necessario perche possa capire che cosa gli e' arrivato).
Se a questo poi aggiungi che un conduttore sul chip equivale
ad un circuito RLC (con almeno R e C che crescono con la sua lunghezza)
tirando le somme si vede che quello che "idealmente" consisteva
nell'allungare qualche linea per poter aggiungere altre celle di memoria
si trasforma in qualcosa di molto piu complesso da gestire;
oltre ad avere un segnale che impiega di piu ad arrivare da un capo
all'altro della linea, succede che cambia di livello piu lentamente
e che magari pure oscilla un pochino prima di raggiungere un valore
"affidabile per capire lo stato della linea" (e di conseguenza
bisogna attendere piu tempo, ovvero aumentano le latenze).
I primi processori venivano "progettati a mano", con le basse frequenze
allora raggiungibili, i voltaggi elevati (5V) a la bassa scala di
integrazione iniziale, una volta fissata la frequenza massima di lavoro
si poteva quasi far finta che le linee fossero solo linee e che
il segnale si propagasse come negli schemi logici, poi man mano che
la tecnologia disponibile si e' spinta avanti le cose si sono
complicate sempre piu.
N.B. La spiegazione che ho dato l'ho scritta relativamente in fretta
      serve solo per dare un idea di massima di come sia complicata
      la cosa.
L. Micheletto

       la cosa.
Ma è stata estremamente chiara... insomma, era come mi immaginavo ma non ne
avevo le prove che tu adesso mi hai dato...
Grazie mille.



Le DDR2 possono permettersi di funzionare nel nucleo a 133MHz grazie
alla coda di prefetch portata a 4bit...perciò nell'I/O sono in grado
di rendere come se funzionasse a 266MHz DDR.
Perchè dici che questo valore può essere usato solo su intervalli di tempo
limitati? E' causato dalla struttura dello stesso buffer di prefetch a 4bit?
Ciao

 limitati? E' causato dalla struttura dello stesso buffer di prefetch a 4bit?
Perche i dati viaggiano "in burst" ("raffiche" di max. 8x8 bytes di dati)
ad un data rate che e' il quadruplo del clock base, ma i segnali di
controllo (che stabiliscono che operazione eseguire e quando iniziare
il trasferimento) operano usando sempre il clock "base".
Le fasi di "invio del comando" e quella di "lettura/scrittura dei dati"
di comandi distinti sono parzialmente sovrapponibili
(nelle DDR2 c'e persino una latenza aggiuntiva attivabile per aumentare
  la "sovrapponibilita" al costo di latenze piu elevate)
ma i buchi tra un operazione e la successiva prima o poi avvengono
anche con molte operazioni in sequenza perche la sincronizzazione
(dei comandi) avviene sul clock base.
L. Micheletto

 il trasferimento) operano usando sempre il clock "base".
Come accade per le memorie DDR d'altronde... perciò alla fine
in questa fase le DDR2 non vengono penalizzate maggiormente.