Newsgroup: it.comp.hardware.cpu
Titolo: Cache di terzo livello?

Salve vorrei sapere se sui normali computer con Pentum 4 c'e' la cache
di terzo livello (detta anche cache di coerenza).
--
Dal 29/5/2003 "ilmurodigomma" diviene "mutaforme". 
L'indirizzo email e' sempre ilmuro...@MIDEVITOGLIERElibero.it
Mi trovi anche su 
www.filmup.com/forum/index.php

 di terzo livello (detta anche cache di coerenza).
Di coerenza?! Puoi spiegare?
Comunque no, esiste su tutti i processori di fascia molto alta pero` come
gli UltraSPARC, gli HP-PA, gli Itanium e i Power4.
-- 
try: troll.uses(Brain)
except TypeError, data: 
   troll.plonk()
Linux User #310274, Debian Sid Proud User


 Per quanto riguarda le attuali cpu per
Desktop non esiste una Cache L3... tempo fa con l'avvento
degli AMD K6-III potevi avere anche la cache L3 se era presente
sulla MB (ovvero cache L1 ed L2 integrata nella cpu e cache
L3 integrata nella MB).
Altrimenti devi andare ad esempio sulle cpu Xeon MP con core
Gallatin, le quali hanno una cache L3 integrata da ben 2MB.
Sempre se ho capito bene la tua domanda...
Ciao

 Sempre se ho capito bene la tua domanda...
mi sembra che anche sui G4 dual a 1,42 Ghz ci sia una cache L3 di 2 MB per
processore (ma sinceramente non so a cosa serva), anche se non mi pare sia
sul DIE.

 processore...
Ok, comunque mi riferivo all'ambito x86, visto che la
domanda di mutaforme riguardava il P4...
Ciao

Di coerenza?! Puoi spiegare?
Intendo una cache che gestisce la consistenza della memoria e la
coerenza della cache stessa (ad esempio quando il DMA effettua un
trasferimento da I/O a memoria la cache deve aggiornarsi per non
restare in uno stato inconsistente). Credo che nel caso del P4 questo
lavoro lo faccia la cache di secondo livello.


 lavoro lo faccia la cache di secondo livello.
No, semplicemente invalida la cache.
bye,
-- 
   Piergiorgio Sartor

 lavoro lo faccia la cache di secondo livello.
Uhmm... da quel che so io la cache funziona in modo diverso. E` inutile
perdere tempo ad aggiornarla quando magari sta lavorando su altri pezzi di
codice. Magari in quel momento tutta la cache e` occupata dall'algoritmo
di compressione mpeg4 e dal flusso di dati. Se ora sto elaborando il punto
A significa che il prossimo sara` il B. Ma il processore PRIMA di iniziare
l'elaborazione ha mandato un segnale all'hdd dicendo che deve trasferire N
byte che partono dal blocco XXXXXXX e deve metterli nella Ram dalla
locazione 0xYYYYYYYY. Una volta che tutto e` stato trasferito, oppure se
si fa una cosa piu` intelligente si divide il malloppone da trasferire e
si manda un interrupt per ogni malloppino trasferito, la CPU inizia a
lavorare. L'indirizzo di memoria va diviso in 3/4 sezioni TAG, GRUPPO,
LINEA, WORD. In base ai primi 3 di questi attributi si identifica una
linea di cache precisa nella quale andremo a inserire il dato contenuto.
Quando il processore va a ricercare un indirizzo di memoria, il controller
cache spezza automaticamente l'indirizzo in quelle parti e va a vedere se
i dati corrispondono (con il tag identifica una linea, con il gruppo
identifica uno degli m gruppi delle cache m-way set-associative, e infine
confronta i bit di linea, se tutti questi sono uguali allora abbiamo un
cache hit, gli ultimi bit di word servono per l'indirizzamento all'interno
della linea), ora pero` succede che esiste anche un bit di validita`,
prima di controllare la corrispondenza degli indirizzi infatti si
controlla se il bit di validita` della cella e` attivo o meno, in caso
negativo il processore sa che quello che e` scritto li dentro e` pura
spazzatura e quindi deve andare a ripescare il dato dalla memoria. In
sostanza la cache si tiene aggiornata da sola. Tra l'altro esistono
algoritmi molto potenti che prevedono i branch nel codice e fanno in modo
di caricare in cache le linee che servono prima che servano veramente.
Mi rendo conto che spiegare una cosa cosi` complessa in cosi` poco spazio
non fa giustizia all'argomento ma spero di non averti confuso le idee.
PS: Leggendo si potrebbe notare che ho introdotto memoria aggiuntiva per
fare la cache ed effettivamente e` cosi`, infatti 512Kb di cache sono il
solo campo che deve contenere il dato che stava nella memoria, poi a
questo bisogna aggiungere i vari campi che servono per fare il confronto
con l'indirizzo e quindi la cache occupa piu` della semplice memoria che
sarebbe venuta fuori.



Si, con aggiornarsi intendevo anche quello. Non basta invalidare
l'ultimo livello



wrote:
Scusami ho sbagliato termine per aggiornarsi intendevo aggiornare il
proprio stato e quello dei livelli piu' bassi (principio di
inclusione) quindi entrare in stato non valido


Anche se poi comunque in alcune macchine viene effettivamente
aggiornata


 l'ultimo livello
E` una domanda od una affermazione?
bye,
-- 
   Piergiorgio Sartor

 aggiornata
Guarda che non ti capisco... La cache ci pensa da sola ad aggiornarsi e lo
fa in modo "ricorsivo". Tra l'altro non tutte le cache sono inclusive
quindi non lo puoi prendere come un assunto.
Non conosco architetture che aggiornano la cache, sarebbe uno spreco di
risorse enorme. Si rende la cache non valida e basta, poi si risistema da
sola.



un'affermazione, ciao


sola.
Concordo, ciao



Se non sbaglio con la modalità di scrittura Write back è necessario
l'apporto della cpu per fare in modo di scrivere dei dati nuovi
o modificabili sia nella cache che nella RAM, al contrario
di quello che avviene con la modalità Write Through.
Ciao